xerces-c-3.1.1/0000755000175000017500000000000011363620353012245 5ustar borisborisxerces-c-3.1.1/README0000644000175000017500000000014310766505252013131 0ustar borisborisSee the doc/html/index.html for the description of the Xerces-C++ project and other documentation. xerces-c-3.1.1/Makefile.am0000644000175000017500000000142011276461122014276 0ustar borisborisSUBDIRS = src tests samples EXTRA_DIST = version.incl \ config/pretty-make \ scripts/createBindingsFormatFromHPP.pl \ scripts/makeStringDefinition.pl \ scripts/sanityTest.pl \ scripts/sanityTest_ExpectedResult.log ACLOCAL_AMFLAGS = -I m4 CLEANFILES = test-results.log pkgconfigdir = @pkgconfigdir@ pkgconfig_DATA= xerces-c.pc check: -rm -f test-results.log export PATH=${abs_top_builddir}/samples:${abs_top_builddir}/tests:"${PATH}" && export XERCESC_NLS_HOME=${abs_top_builddir}/src/.libs && cd ${top_srcdir} && perl scripts/sanityTest.pl 2>&1 | ${SED} 's/ *[0-9][0-9]* *ms */{timing removed}/' 1> ${abs_top_builddir}/test-results.log diff test-results.log ${top_srcdir}/scripts/sanityTest_ExpectedResult.log xerces-c-3.1.1/Makefile.in0000644000175000017500000006645411363617724014341 0ustar borisboris# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@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 \ $(srcdir)/xerces-c.pc.in $(top_srcdir)/configure \ $(top_srcdir)/src/xercesc/util/MsgLoaders/MsgCatalog/Makefile.in \ $(top_srcdir)/src/xercesc/util/Xerces_autoconf_config.hpp.in \ INSTALL config/compile 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)/m4/acx_pthread.m4 \ $(top_srcdir)/m4/cxx_have_bool.m4 \ $(top_srcdir)/m4/cxx_have_lstring.m4 \ $(top_srcdir)/m4/cxx_have_namespaces.m4 \ $(top_srcdir)/m4/cxx_have_std_libs.m4 \ $(top_srcdir)/m4/cxx_have_std_namespace.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/xerces_curl_prefix.m4 \ $(top_srcdir)/m4/xerces_filemgr_selection.m4 \ $(top_srcdir)/m4/xerces_icu_prefix.m4 \ $(top_srcdir)/m4/xerces_int_types.m4 \ $(top_srcdir)/m4/xerces_link_darwin_framework.m4 \ $(top_srcdir)/m4/xerces_msgloader_selection.m4 \ $(top_srcdir)/m4/xerces_mutexmgr_selection.m4 \ $(top_srcdir)/m4/xerces_netaccessor_selection.m4 \ $(top_srcdir)/m4/xerces_no_threads.m4 \ $(top_srcdir)/m4/xerces_path_delimiters.m4 \ $(top_srcdir)/m4/xerces_pretty_make.m4 \ $(top_srcdir)/m4/xerces_transcoder_selection.m4 \ $(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 \ $(top_builddir)/src/xercesc/util/Xerces_autoconf_config.hpp CONFIG_CLEAN_FILES = src/xercesc/util/MsgLoaders/MsgCatalog/Makefile \ xerces-c.pc CONFIG_CLEAN_VPATH_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 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 = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(pkgconfigdir)" DATA = $(pkgconfig_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir dist dist-all distcheck 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)"; }; } am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_SHARED = @BUILD_SHARED@ BUILD_STATIC = @BUILD_STATIC@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CURL_FLAGS = @CURL_FLAGS@ CURL_LIBS = @CURL_LIBS@ CURL_PRESENT = @CURL_PRESENT@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ ICU_BIN = @ICU_BIN@ ICU_FLAGS = @ICU_FLAGS@ ICU_LIBS = @ICU_LIBS@ ICU_PRESENT = @ICU_PRESENT@ ICU_SBIN = @ICU_SBIN@ 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@ MAINT = @MAINT@ 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_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SHREXT = @SHREXT@ STRIP = @STRIP@ VERSION = @VERSION@ 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_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ acx_pthread_config = @acx_pthread_config@ 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@ curl_config = @curl_config@ 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@ icu_config = @icu_config@ 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@ pkgconfigdir = @pkgconfigdir@ 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 = src tests samples EXTRA_DIST = version.incl \ config/pretty-make \ scripts/createBindingsFormatFromHPP.pl \ scripts/makeStringDefinition.pl \ scripts/sanityTest.pl \ scripts/sanityTest_ExpectedResult.log ACLOCAL_AMFLAGS = -I m4 CLEANFILES = test-results.log pkgconfig_DATA = xerces-c.pc all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: @: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ $(am__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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): 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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ src/xercesc/util/Xerces_autoconf_config.hpp: src/xercesc/util/stamp-h2 @if test ! -f $@; then \ rm -f src/xercesc/util/stamp-h2; \ $(MAKE) $(AM_MAKEFLAGS) src/xercesc/util/stamp-h2; \ else :; fi src/xercesc/util/stamp-h2: $(top_srcdir)/src/xercesc/util/Xerces_autoconf_config.hpp.in $(top_builddir)/config.status @rm -f src/xercesc/util/stamp-h2 cd $(top_builddir) && $(SHELL) ./config.status src/xercesc/util/Xerces_autoconf_config.hpp distclean-hdr: -rm -f config.h stamp-h1 src/xercesc/util/Xerces_autoconf_config.hpp src/xercesc/util/stamp-h2 src/xercesc/util/MsgLoaders/MsgCatalog/Makefile: $(top_builddir)/config.status $(top_srcdir)/src/xercesc/util/MsgLoaders/MsgCatalog/Makefile.in cd $(top_builddir) && $(SHELL) ./config.status $@ xerces-c.pc: $(top_builddir)/config.status $(srcdir)/xerces-c.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool config.lt install-pkgconfigDATA: $(pkgconfig_DATA) @$(NORMAL_INSTALL) test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ done uninstall-pkgconfigDATA: @$(NORMAL_UNINSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgconfigdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgconfigdir)" && rm -f $$files # 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; \ ($(am__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; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__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) set x; \ 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 || \ set "$$@" "$$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; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) 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)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__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 "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$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; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done -test -n "$(am__skip_mode_fix)" \ || 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-xz: distdir tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz $(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 tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 $(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.xz*) \ xz -dc $(distdir).tar.xz | $(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) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__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 \ && cd "$$am__cwd" \ || exit 1 $(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: @$(am__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 $(DATA) config.h installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(pkgconfigdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done 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: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_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 html-am: info: info-recursive info-am: install-data-am: install-pkgconfigDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: 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 mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-pkgconfigDATA .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ ctags-recursive install-am install-strip tags-recursive .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-xz 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-pkgconfigDATA install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am uninstall-pkgconfigDATA check: -rm -f test-results.log export PATH=${abs_top_builddir}/samples:${abs_top_builddir}/tests:"${PATH}" && export XERCESC_NLS_HOME=${abs_top_builddir}/src/.libs && cd ${top_srcdir} && perl scripts/sanityTest.pl 2>&1 | ${SED} 's/ *[0-9][0-9]* *ms */{timing removed}/' 1> ${abs_top_builddir}/test-results.log diff test-results.log ${top_srcdir}/scripts/sanityTest_ExpectedResult.log # 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: xerces-c-3.1.1/LICENSE0000644000175000017500000002613610117652604013262 0ustar borisboris Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. xerces-c-3.1.1/xerces-c.pc.in0000644000175000017500000000033711063667751014724 0ustar borisborisprefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: Xerces-C++ Description: Validating XML parser library for C++ Version: @VERSION@ Libs: -L${libdir} -lxerces-c Cflags: -I${includedir} xerces-c-3.1.1/scripts/0000755000175000017500000000000011363617221013734 5ustar borisborisxerces-c-3.1.1/scripts/sanityTest.pl0000755000175000017500000001406411064072071016444 0ustar borisboris# # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # # # $Id: sanityTest.pl 696141 2008-09-17 03:06:33Z dbertoni $ # # Author(s): Mike Strosaker # # Verify that a Xerces-C build is successful. # Command-Line Parameter: # The OS type ("win" or "unix") # # Prerequisites: # Set the path to include the appropriate executables # and the library path to include the libraries $os = $ARGV[0]; # flush output $| = 1; if (lc($os) eq "win") { $pathsep = "\\"; } else { $pathsep = "/"; } chdir "samples".$pathsep."data"; # # Run the samples # # Run SAXCount system ("SAXCount"); system ("SAXCount -v=never personal.xml"); system ("SAXCount personal.xml"); system ("SAXCount -n -s personal-schema.xml"); # Run SAXPrint system ("SAXPrint"); system ("SAXPrint -v=never personal.xml"); system ("SAXPrint personal.xml"); system ("SAXPrint -n -s personal-schema.xml"); # Run SAX2Count system ("SAX2Count"); system ("SAX2Count -v=never personal.xml"); system ("SAX2Count personal.xml"); system ("SAX2Count -p personal-schema.xml"); # Run SAX2Print system ("SAX2Print"); system ("SAX2Print -v=never personal.xml"); system ("SAX2Print personal.xml"); system ("SAX2Print -p personal-schema.xml"); system ("SAX2Print personal.xsd"); system ("SAX2Print -sa personal.xsd"); # Run MemParse system ("MemParse"); system ("MemParse -v=never"); # Run Redirect system ("Redirect"); system ("Redirect personal.xml"); # Run DOMCount system ("DOMCount"); system ("DOMCount -v=never personal.xml"); system ("DOMCount personal.xml"); system ("DOMCount -n -s personal-schema.xml"); # Run DOMPrint system ("DOMPrint"); system ("DOMPrint -wfpp=on -wddc=off -v=never personal.xml"); system ("DOMPrint -wfpp=on -wddc=off personal.xml"); system ("DOMPrint -wfpp=on -wddc=on personal.xml"); system ("DOMPrint -wfpp=on -wddc=off -n -s personal-schema.xml"); system ("DOMPrint -v=never -xpath=//name personal.xml"); # Run StdInParse system ("StdInParse < personal.xml"); system ("StdInParse -v=never < personal.xml"); system ("StdInParse -n -s < personal-schema.xml"); # Run PParse system ("PParse"); system ("PParse personal.xml"); system ("PParse -n -s personal-schema.xml"); # Run EnumVal system ("EnumVal"); system ("EnumVal personal.xml"); # Run SEnumVal system ("SEnumVal"); system ("SEnumVal personal-schema.xml"); # Run CreateDOMDocument system ("CreateDOMDocument"); # Run SAXPrint. This tests long element names. print ("\nTest of a long element name.\n"); system ("SAXPrint -v=never long.xml"); print ("\n\n"); # # Run the test cases # # Run DOMMemTest print ("DOMMemTest\n"); system ("DOMMemTest"); # Run DOMTest print ("DOMTest\n"); system ("DOMTest"); # Run RangeTest print ("RangeTest\n"); system ("RangeTest"); # Run DOMTraversalTest print ("DOMTraversalTest\n"); system ("DOMTraversalTest"); # Run XSerializerTest system ("XSerializerTest"); system ("XSerializerTest -v=never personal.xml"); system ("XSerializerTest -v=always personal.xml"); system ("XSerializerTest -v=never personal-schema.xml"); system ("XSerializerTest -v=always personal-schema.xml"); system ("XSerializerTest -v=always -f personal-schema.xml"); # Run XSValueTest system ("XSValueTest"); # Run InitTestTerm system ("InitTermTest"); print ("1"); system ("InitTermTest personal.xml"); print ("2"); system ("InitTermTest -n -s personal-schema.xml"); print ("3"); system ("InitTermTest -n -s -f personal-schema.xml"); # Run ThreadTest system ("ThreadTest"); print ("1"); system ("ThreadTest -parser=sax -v=never -quiet -threads 10 -time 20 personal.xml"); print ("2"); system ("ThreadTest -parser=dom -v=never -quiet -threads 10 -time 20 personal.xml"); print ("3"); system ("ThreadTest -parser=sax2 -v=never -quiet -threads 10 -time 20 personal.xml"); print ("4"); system ("ThreadTest -parser=sax -v=always -quiet -threads 10 -time 20 personal.xml"); print ("5"); system ("ThreadTest -parser=dom -v=always -quiet -threads 10 -time 20 personal.xml"); print ("6"); system ("ThreadTest -parser=sax2 -v=always -quiet -threads 10 -time 20 personal.xml"); print ("7"); system ("ThreadTest -parser=sax -gc -v=always -quiet -threads 10 -time 20 personal.xml"); print ("8"); system ("ThreadTest -parser=dom -gc -v=always -quiet -threads 10 -time 20 personal.xml"); print ("9"); system ("ThreadTest -parser=sax2 -gc -v=always -quiet -threads 10 -time 20 personal.xml"); print ("10"); system ("ThreadTest -parser=sax -n -s -f -v=always -quiet -threads 10 -time 20 personal-schema.xml"); print ("11"); system ("ThreadTest -parser=dom -n -s -f -v=always -quiet -threads 10 -time 20 personal-schema.xml"); print ("12"); system ("ThreadTest -parser=sax2 -n -s -f -v=always -quiet -threads 10 -time 20 personal-schema.xml"); print ("13"); system ("ThreadTest -parser=sax -gc -n -s -f -v=always -quiet -threads 10 -time 20 personal-schema.xml"); print ("14"); system ("ThreadTest -parser=dom -gc -n -s -f -v=always -quiet -threads 10 -time 20 personal-schema.xml"); print ("15"); system ("ThreadTest -parser=sax2 -gc -n -s -f -v=always -quiet -threads 10 -time 20 personal-schema.xml"); # Run MemHandlerTest system ("MemHandlerTest"); system ("MemHandlerTest -v=always -n -r=2 personal.xml"); system ("MemHandlerTest -v=always -n -r=2 -s -f personal-schema.xml"); chdir "..".$pathsep.".."; chdir "tests".$pathsep."src".$pathsep."DOM".$pathsep."TypeInfo"; system ("DOMTypeInfoTest"); chdir "..".$pathsep.".."; xerces-c-3.1.1/scripts/createBindingsFormatFromHPP.pl0000755000175000017500000000747410520112771021570 0ustar borisboris# # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # my $filename = $ARGV[0]; open(IN,"< $filename") || die("Couldn't open input file: $filename"); while () { if ($_=~/^\s*class\s+[A-Z0-9_]+_EXPORT\s+([^\s]+)\s*[:]\s*public\s([^\s]+)/) { $classname = $1; $baseclass = $2; last; } elsif ($_=~/^\s*class\s+[A-Z0-9_]+_EXPORT\s+([^\s]+)/) { $classname = $1; $baseclass = ""; last; } } open(OUT,">out.html") || die("Could not write to out.html"); print OUT <<"END1";

$filename:

class $classname END1 if ($baseclass ne "") { print OUT <<"END2"; : public $baseclass END2 } print OUT <<"END3"; END3 while () { if ($_=~/^\s*public\s*:/) { print OUT <<"END5"; END5 last; } } while () { if ($_=~/^\s*(virtual)\s+([^\s\(][^\(]*[^\s\(])\s+([^\s\(]+\(.*)/) { $a=$1; $b=$2; $c=$3; while ($c!~/\)/) { $c.=; } print OUT <<"END"; END } elsif ($_=~/^\s*(static)\s+([^\s\(][^\(]*[^\s\(])\s+([^\s\(]+\(.*)/) { $a=$1; $b=$2; $c=$3; while ($c!~/\)/) { $c.=; } print OUT <<"END"; END } elsif ($_=~/^\s*(enum)\s+([^\s]+)\s*{/) { print OUT <<"END2"; END2 while () { if ($_=~/([^\s]+)\s*=\s*([^\s,]+),?(\s|$)/) { print OUT <<"END3"; END3 } if ($_=~/}\s*;/) { print OUT <<"END4"; END4 last; } } } # enum ExceptionCode { # INVALID_EXPRESSION_ERR = 51, # TYPE_ERR = 52, # }; } print OUT <<"END6";
{
public:
$a $b $c
$a $b $c
$1 $2 {
$1 = $2,
};
};
END6 close(OUT); close(IN); xerces-c-3.1.1/scripts/sanityTest_ExpectedResult.log0000644000175000017500000031263211360561266021641 0ustar borisboris Usage: SAXCount [options] This program invokes the SAX Parser, and then prints the number of elements, attributes, spaces and characters found in each XML file, using SAX API. Options: -l Indicate the input file is a List File that has a list of xml files. Default to off (Input file is an XML file). -v=xxx Validation scheme [always | never | auto*]. -n Enable namespace processing. Defaults to off. -s Enable schema processing. Defaults to off. -f Enable full schema constraint checking. Defaults to off. -locale=ll_CC specify the locale, default: en_US. -? Show this help. * = Default if not provided explicitly. personal.xml:{timing removed}(37 elems, 12 attrs, 0 spaces, 268 chars) personal.xml:{timing removed}(37 elems, 12 attrs, 134 spaces, 134 chars) personal-schema.xml:{timing removed}(37 elems, 29 attrs, 140 spaces, 128 chars) Usage: SAXPrint [options] This program invokes the SAX Parser, and then prints the data returned by the various SAX handlers for the specified XML file. Options: -u=xxx Handle unrepresentable chars [fail | rep | ref*]. -v=xxx Validation scheme [always | never | auto*]. -n Enable namespace processing. -s Enable schema processing. -f Enable full schema constraint checking. -x=XXX Use a particular encoding for output (LATIN1*). -? Show this help. * = Default if not provided explicitly. The parser has intrinsic support for the following encodings: UTF-8, US-ASCII, ISO8859-1, UTF-16[BL]E, UCS-4[BL]E, WINDOWS-1252, IBM1140, IBM037, IBM1047. Boss Big chief@foo.com Worker One one@foo.com Worker Two two@foo.com Worker Three three@foo.com Worker Four four@foo.com Worker Five five@foo.com Boss Big chief@foo.com Worker One one@foo.com Worker Two two@foo.com Worker Three three@foo.com Worker Four four@foo.com Worker Five five@foo.com Boss Big chief@foo.com Worker One one@foo.com Worker Two two@foo.com Worker Three three@foo.com Worker Four four@foo.com Worker Five five@foo.com Usage: SAX2Count [options] This program invokes the SAX2XMLReader, and then prints the number of elements, attributes, spaces and characters found in each XML file, using SAX2 API. Options: -l Indicate the input file is a List File that has a list of xml files. Default to off (Input file is an XML file). -v=xxx Validation scheme [always | never | auto*]. -f Enable full schema constraint checking processing. Defaults to off. -p Enable namespace-prefixes feature. Defaults to off. -n Disable namespace processing. Defaults to on. NOTE: THIS IS OPPOSITE FROM OTHER SAMPLES. -s Disable schema processing. Defaults to on. NOTE: THIS IS OPPOSITE FROM OTHER SAMPLES. -i Disable identity constraint checking. Defaults to on. NOTE: THIS IS OPPOSITE FROM OTHER SAMPLES. -locale=ll_CC specify the locale, default: en_US. -? Show this help. * = Default if not provided explicitly. personal.xml:{timing removed}(37 elems, 12 attrs, 0 spaces, 268 chars) personal.xml:{timing removed}(37 elems, 12 attrs, 134 spaces, 134 chars) personal-schema.xml:{timing removed}(37 elems, 29 attrs, 140 spaces, 128 chars) Usage: SAX2Print [options] This program invokes the SAX2XMLReader, and then prints the data returned by the various SAX2 handlers for the specified XML file. Options: -u=xxx Handle unrepresentable chars [fail | rep | ref*]. -v=xxx Validation scheme [always | never | auto*]. -e Expand Namespace Alias with URI's. Defaults to off. -x=XXX Use a particular encoding for output (LATIN1*). -f Enable full schema constraint checking processing. Defaults to off. -p Enable namespace-prefixes feature. Defaults to off. -n Disable namespace processing. Defaults to on. NOTE: THIS IS OPPOSITE FROM OTHER SAMPLES. -s Disable schema processing. Defaults to on. NOTE: THIS IS OPPOSITE FROM OTHER SAMPLES. -sa Print the attributes in alphabetic order. Defaults to off. -? Show this help. * = Default if not provided explicitly. The parser has intrinsic support for the following encodings: UTF-8, US-ASCII, ISO8859-1, UTF-16[BL]E, UCS-4[BL]E, WINDOWS-1252, IBM1140, IBM037, IBM1047. Boss Big chief@foo.com Worker One one@foo.com Worker Two two@foo.com Worker Three three@foo.com Worker Four four@foo.com Worker Five five@foo.com Boss Big chief@foo.com Worker One one@foo.com Worker Two two@foo.com Worker Three three@foo.com Worker Four four@foo.com Worker Five five@foo.com Boss Big chief@foo.com Worker One one@foo.com Worker Two two@foo.com Worker Three three@foo.com Worker Four four@foo.com Worker Five five@foo.com The schemaLocation of the relevant file is "http://www.w3.org/2001/xml.xsd"; however, we don't want to assume people are always connected to the 'net when playing with this file. The schemaLocation of the relevant file is "http://www.w3.org/2001/xml.xsd"; however, we don't want to assume people are always connected to the 'net when playing with this file. Finished parsing the memory buffer containing the following XML statements: ]> XML4C XML Parsing Tools IBM Center for Java Technology, Silicon Valley, Cupertino, CA Parsing took{timing removed}(4 elements, 1 attributes, 16 spaces, 95 characters). Finished parsing the memory buffer containing the following XML statements: ]> XML4C XML Parsing Tools IBM Center for Java Technology, Silicon Valley, Cupertino, CA Parsing took{timing removed}(4 elements, 1 attributes, 0 spaces, 111 characters). Usage: Redirect This program installs an entity resolver, traps the call to the external DTD file and redirects it to another application specific file which contains the actual dtd. The program then counts and reports the number of elements and attributes in the given XML file. personal.xml:{timing removed}(37 elems, 12 attrs, 0 spaces, 268 chars) Usage: DOMCount [options] This program invokes the DOMLSParser, builds the DOM tree, and then prints the number of elements found in each XML file. Options: -l Indicate the input file is a List File that has a list of xml files. Default to off (Input file is an XML file). -v=xxx Validation scheme [always | never | auto*]. -n Enable namespace processing. Defaults to off. -s Enable schema processing. Defaults to off. -f Enable full schema constraint checking. Defaults to off. -locale=ll_CC specify the locale, default: en_US. -p Print out names of elements and attributes encountered. -? Show this help. * = Default if not provided explicitly. personal.xml:{timing removed}(37 elems). personal.xml:{timing removed}(37 elems). personal-schema.xml:{timing removed}(37 elems). Usage: DOMPrint [options] This program invokes the DOM parser, and builds the DOM tree. It then asks the DOMLSSerializer to serialize the DOM tree. Options: -e create entity reference nodes. Default is no expansion. -v=xxx Validation scheme [always | never | auto*]. -n Enable namespace processing. Default is off. -s Enable schema processing. Default is off. -f Enable full schema constraint checking. Defaults is off. -wenc=XXX Use a particular encoding for output. Default is the same encoding as the input XML file. UTF-8 if input XML file has not XML declaration. -wfile=xxx Write to a file instead of stdout. -wscs=xxx Enable/Disable split-cdata-sections. Default on -wddc=xxx Enable/Disable discard-default-content. Default on -wflt=xxx Enable/Disable filtering. Default off -wfpp=xxx Enable/Disable format-pretty-print. Default off -wbom=xxx Enable/Disable write Byte-Order-Mark Default off -xpath=xxx Prints only the nodes matching the given XPath. -? Show this help. * = Default if not provided explicitly. The parser has intrinsic support for the following encodings: UTF-8, US-ASCII, ISO8859-1, UTF-16[BL]E, UCS-4[BL]E, WINDOWS-1252, IBM1140, IBM037, IBM1047. Boss Big chief@foo.com Worker One one@foo.com Worker Two two@foo.com Worker Three three@foo.com Worker Four four@foo.com Worker Five five@foo.com Boss Big chief@foo.com Worker One one@foo.com Worker Two two@foo.com Worker Three three@foo.com Worker Four four@foo.com Worker Five five@foo.com Boss Big chief@foo.com Worker One one@foo.com Worker Two two@foo.com Worker Three three@foo.com Worker Four four@foo.com Worker Five five@foo.com Boss Big chief@foo.com Worker One one@foo.com Worker Two two@foo.com Worker Three three@foo.com Worker Four four@foo.com Worker Five five@foo.com Boss BigWorker OneWorker TwoWorker ThreeWorker FourWorker Fivestdin:{timing removed}(37 elems, 12 attrs, 134 spaces, 134 chars) stdin:{timing removed}(37 elems, 12 attrs, 0 spaces, 268 chars) stdin:{timing removed}(37 elems, 29 attrs, 140 spaces, 128 chars) Usage: PParse [options] This program demonstrates the progressive parse capabilities of the parser system. It allows you to do a scanFirst() call followed by a loop which calls scanNext(). You can drop out when you've found what ever it is you want. In our little test, our event handler looks for 16 new elements then sets a flag to indicate its found what it wants. At that point, our progressive parse loop exits. Options: -v=xxx - Validation scheme [always | never | auto*]. -n - Enable namespace processing [default is off]. -s - Enable schema processing [default is off]. -f - Enable full schema constraint checking [default is off]. -? - Show this help. * = Default if not provided explicitly. personal.xml:{timing removed}(37 elems, 12 attrs, 134 spaces, 134 chars) personal-schema.xml:{timing removed}(37 elems, 29 attrs, 140 spaces, 128 chars) Usage: EnumVal This program parses the specified XML file, then shows how to enumerate the contents of the DTD Grammar. Essentially, shows how one can access the DTD information stored in internal data structures. ELEMENTS: ---------------------------- Name: personnel Content Model: (person)+ Name: person Content Model: (name,email*,url*,link?) Attributes: Name:id, Type: ID Name: name Content Model: (#PCDATA|family|given)* Name: email Content Model: (#PCDATA) Name: url Content Model: EMPTY Attributes: Name:href, Type: CDATA Name: link Content Model: EMPTY Attributes: Name:manager, Type: IDREF(S) Name:subordinates, Type: IDREF(S) Name: family Content Model: (#PCDATA) Name: given Content Model: (#PCDATA) Usage: SEnumVal This program parses a file, then shows how to enumerate the contents of the Schema Grammar. Essentially, shows how one can access the Schema information stored in internal data structures. Name: personnel Model Type: Children Create Reason: Declared ContentType: Sequence Content Model: (person+) ComplexType: TypeName: ,__AnonC0 ContentType: Sequence -------------------------------------------- Name: person Model Type: Children Create Reason: Declared ContentType: Sequence Content Model: (name,email*,url*,link?) ComplexType: TypeName: ,__AnonC1 ContentType: Sequence Attributes: Name: id Type: ID Default Type: #REQUIRED Base Datatype: ID Name: note Type: CDATA Default Type: #IMPLIED Base Datatype: string Name: contr Type: CDATA Default Type: #DEFAULT Value: false Base Datatype: string Enumeration: true false Name: salary Type: CDATA Default Type: #IMPLIED Base Datatype: Decimal Facets: fractionDigits=0 pattern=[+\-]?[0-9]+ -------------------------------------------- Name: name Model Type: Children Create Reason: Declared ContentType: All Content Model: All(family,given) ComplexType: TypeName: ,__AnonC2 ContentType: All -------------------------------------------- Name: family Model Type: Simple Create Reason: Declared ComplexType: TypeName: ,__AnonC3 Base Datatype: string -------------------------------------------- Name: given Model Type: Simple Create Reason: Declared ComplexType: TypeName: ,__AnonC4 Base Datatype: string -------------------------------------------- Name: email Model Type: Simple Create Reason: Declared Base Datatype: string -------------------------------------------- Name: url Model Type: Empty Create Reason: Declared Content Model: EMPTY ComplexType: TypeName: ,__AnonC5 Attributes: Name: href Type: CDATA Default Type: #DEFAULT Value: http:// Base Datatype: string -------------------------------------------- Name: link Model Type: Empty Create Reason: Declared Content Model: EMPTY ComplexType: TypeName: ,__AnonC6 Attributes: Name: manager Type: IDREF Default Type: #IMPLIED Base Datatype: IDREF Name: subordinates Type: IDREFS Default Type: #IMPLIED Base Datatype: List Facets: minLength=1 -------------------------------------------- The tree just created contains: 4 elements. Test of a long element name. 89.63 DOMMemTest Test Run Successfully DOMTest Test Run Successfully RangeTest Test Run Successfully DOMTraversalTest Test Run Successfully Usage: XSerializerTest [options] This program invokes the SAX2XMLReader, and then prints the number of elements, attributes, spaces and characters found in each XML file, using SAX2 API. Options: -l Indicate the input file is a List File that has a list of xml files. Default to off (Input file is an XML file). -v=xxx Validation scheme [always | never | auto*]. -f Enable full schema constraint checking processing. Defaults to off. -p Enable namespace-prefixes feature. Defaults to off. -n Disable namespace processing. Defaults to on. NOTE: THIS IS OPPOSITE FROM OTHER SAMPLES. -s Disable schema processing. Defaults to on. NOTE: THIS IS OPPOSITE FROM OTHER SAMPLES. -locale=ll_CC specify the locale, default: en_US. -? Show this help. * = Default if not provided explicitly. personal.xml:{timing removed}(37 elems, 12 attrs, 0 spaces, 268 chars) personal.xml:{timing removed}(37 elems, 12 attrs, 134 spaces, 134 chars) personal-schema.xml:{timing removed}(37 elems, 28 attrs, 0 spaces, 268 chars) personal-schema.xml:{timing removed}(37 elems, 28 attrs, 140 spaces, 128 chars) personal-schema.xml:{timing removed}(37 elems, 28 attrs, 140 spaces, 128 chars) XSValueTest Pass Usage: InitTermTest [options] This program tests the XMLPlatformUtils::Initialize()/Terminate() pair by calling it a number of times. Options: -n Enable namespace processing. Default is off. -s Enable schema processing. Default is off. -f Enable full schema constraint checking. Defaults to off. -? Show this help. 1Test Run Successfully 2Test Run Successfully 3Test Run Successfully No input XML file specified on command line. usage: ThreadTest [-v] [-threads nnn] [-time nnn] [-quiet] [-verbose] xmlfile... -v=xxx Validation scheme [always | never | auto]. Default is AUTO. -n Enable namespace processing. Defaults to off. -s Enable schema processing. Defaults to off. -f Enable full schema constraint checking. Defaults to off. -parser=xxx Parser Type [dom | sax | sax2]. Default is SAX (SAX1). -p Enable namespace prefixes. Defaults to off. (Only used with -parser=sax2, ignored otherwise.) -quiet Suppress periodic status display. -verbose Display extra messages. -reuse Retain and reuse parser. Default creates new for each parse. -threads nnn Number of threads. Default is 2. -time nnn Total time to run, in seconds. Default is forever. -parses nnn Run for nnn parses instead of time. Default is to use time -dump Dump DOM tree on error. -mem Read files into memory once only, and parse them from there. -gc Enable grammar caching (i.e. grammar cached and used in subsequent parses). Defaults to off. -init Perform an initial parse of the file(s) before starting up the individual threads. 1Test Run Successfully 2Test Run Successfully 3Test Run Successfully 4Test Run Successfully 5Test Run Successfully 6Test Run Successfully 7Test Run Successfully 8Test Run Successfully 9Test Run Successfully 10Test Run Successfully 11Test Run Successfully 12Test Run Successfully 13Test Run Successfully 14Test Run Successfully 15Test Run Successfully Usage: MemHandlerTest [options] This program invokes the XercesDOMParser, DOMLSParser, SAXParser , and the SAX2XMLReader, and ensures that MemoryManagers set on these domBuilders are called to delete just as many bytes as they allocate. This is done for each XML file, and each file is processed as many times as indicated. Options: -l Indicate the input file is a List File that has a list of xml files. Default to off (Input file is an XML file). -v=xxx Validation scheme [always | never | auto*]. -n Enable namespace processing. Defaults to off. -s Enable schema processing. Defaults to off. -f Enable full schema constraint checking. Defaults to off. -r=n Run file through domBuilders n times. -? Show this help. * = Default if not provided explicitly. At destruction, domBuilderMemMonitor has 0 bytes. At destruction, sax2MemMonitor has 0 bytes. At destruction, sax1MemMonitor has 0 bytes. At destruction, staticMemMonitor has 0 bytes. At destruction, domBuilderMemMonitor has 0 bytes. At destruction, sax2MemMonitor has 0 bytes. At destruction, sax1MemMonitor has 0 bytes. At destruction, staticMemMonitor has 0 bytes. Test Run Successfully xerces-c-3.1.1/scripts/makeStringDefinition.pl0000755000175000017500000000502010520112771020400 0ustar borisboris# # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # use vars qw($opt_h $opt_x); use Getopt::Std; my %charMapping = ( ':', 'chColon', '\\', 'chBackSlash', '[', 'chOpenSquare', ']', 'chCloseSquare', '{', 'chOpenCurly', '}', 'chCloseCurly', '?', 'chQuestion', '(', 'chOpenParen', ')', 'chCloseParen', '/', 'chForwardSlash', '*', 'chAsterisk', '+', 'chPlus', '.', 'chPeriod', '-', 'chDash', '|', 'chPipe', '_', 'chUnderscore', ',', 'chComma', '&', 'chAmpersand', '0', 'chDigit_0', '1', 'chDigit_1', '2', 'chDigit_2', '3', 'chDigit_3', '4', 'chDigit_4', '5', 'chDigit_5', '6', 'chDigit_6', '7', 'chDigit_7', '8', 'chDigit_8', '9', 'chDigit_9'); # # usage: display usage message # sub usage() { print< src/DOM/DOMMemTest/$(am__dirstamp) src/DOM/DOMMemTest/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/DOM/DOMMemTest/$(DEPDIR) @: > src/DOM/DOMMemTest/$(DEPDIR)/$(am__dirstamp) src/DOM/DOMMemTest/DOMMemTest.$(OBJEXT): \ src/DOM/DOMMemTest/$(am__dirstamp) \ src/DOM/DOMMemTest/$(DEPDIR)/$(am__dirstamp) DOMMemTest$(EXEEXT): $(DOMMemTest_OBJECTS) $(DOMMemTest_DEPENDENCIES) @rm -f DOMMemTest$(EXEEXT) $(CXXLINK) $(DOMMemTest_OBJECTS) $(DOMMemTest_LDADD) $(LIBS) src/DOM/DOMTest/$(am__dirstamp): @$(MKDIR_P) src/DOM/DOMTest @: > src/DOM/DOMTest/$(am__dirstamp) src/DOM/DOMTest/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/DOM/DOMTest/$(DEPDIR) @: > src/DOM/DOMTest/$(DEPDIR)/$(am__dirstamp) src/DOM/DOMTest/DTest.$(OBJEXT): src/DOM/DOMTest/$(am__dirstamp) \ src/DOM/DOMTest/$(DEPDIR)/$(am__dirstamp) DOMTest$(EXEEXT): $(DOMTest_OBJECTS) $(DOMTest_DEPENDENCIES) @rm -f DOMTest$(EXEEXT) $(CXXLINK) $(DOMTest_OBJECTS) $(DOMTest_LDADD) $(LIBS) src/DOM/Traversal/$(am__dirstamp): @$(MKDIR_P) src/DOM/Traversal @: > src/DOM/Traversal/$(am__dirstamp) src/DOM/Traversal/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/DOM/Traversal/$(DEPDIR) @: > src/DOM/Traversal/$(DEPDIR)/$(am__dirstamp) src/DOM/Traversal/Traversal.$(OBJEXT): \ src/DOM/Traversal/$(am__dirstamp) \ src/DOM/Traversal/$(DEPDIR)/$(am__dirstamp) DOMTraversalTest$(EXEEXT): $(DOMTraversalTest_OBJECTS) $(DOMTraversalTest_DEPENDENCIES) @rm -f DOMTraversalTest$(EXEEXT) $(CXXLINK) $(DOMTraversalTest_OBJECTS) $(DOMTraversalTest_LDADD) $(LIBS) src/DOM/TypeInfo/$(am__dirstamp): @$(MKDIR_P) src/DOM/TypeInfo @: > src/DOM/TypeInfo/$(am__dirstamp) src/DOM/TypeInfo/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/DOM/TypeInfo/$(DEPDIR) @: > src/DOM/TypeInfo/$(DEPDIR)/$(am__dirstamp) src/DOM/TypeInfo/TypeInfo.$(OBJEXT): src/DOM/TypeInfo/$(am__dirstamp) \ src/DOM/TypeInfo/$(DEPDIR)/$(am__dirstamp) DOMTypeInfoTest$(EXEEXT): $(DOMTypeInfoTest_OBJECTS) $(DOMTypeInfoTest_DEPENDENCIES) @rm -f DOMTypeInfoTest$(EXEEXT) $(CXXLINK) $(DOMTypeInfoTest_OBJECTS) $(DOMTypeInfoTest_LDADD) $(LIBS) src/EncodingTest/$(am__dirstamp): @$(MKDIR_P) src/EncodingTest @: > src/EncodingTest/$(am__dirstamp) src/EncodingTest/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/EncodingTest/$(DEPDIR) @: > src/EncodingTest/$(DEPDIR)/$(am__dirstamp) src/EncodingTest/EncodingTest.$(OBJEXT): \ src/EncodingTest/$(am__dirstamp) \ src/EncodingTest/$(DEPDIR)/$(am__dirstamp) EncodingTest$(EXEEXT): $(EncodingTest_OBJECTS) $(EncodingTest_DEPENDENCIES) @rm -f EncodingTest$(EXEEXT) $(CXXLINK) $(EncodingTest_OBJECTS) $(EncodingTest_LDADD) $(LIBS) src/InitTermTest/$(am__dirstamp): @$(MKDIR_P) src/InitTermTest @: > src/InitTermTest/$(am__dirstamp) src/InitTermTest/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/InitTermTest/$(DEPDIR) @: > src/InitTermTest/$(DEPDIR)/$(am__dirstamp) src/InitTermTest/InitTermTest.$(OBJEXT): \ src/InitTermTest/$(am__dirstamp) \ src/InitTermTest/$(DEPDIR)/$(am__dirstamp) InitTermTest$(EXEEXT): $(InitTermTest_OBJECTS) $(InitTermTest_DEPENDENCIES) @rm -f InitTermTest$(EXEEXT) $(CXXLINK) $(InitTermTest_OBJECTS) $(InitTermTest_LDADD) $(LIBS) src/MemHandlerTest/$(am__dirstamp): @$(MKDIR_P) src/MemHandlerTest @: > src/MemHandlerTest/$(am__dirstamp) src/MemHandlerTest/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/MemHandlerTest/$(DEPDIR) @: > src/MemHandlerTest/$(DEPDIR)/$(am__dirstamp) src/MemHandlerTest/MemoryMonitor.$(OBJEXT): \ src/MemHandlerTest/$(am__dirstamp) \ src/MemHandlerTest/$(DEPDIR)/$(am__dirstamp) MemHandlerTest$(EXEEXT): $(MemHandlerTest_OBJECTS) $(MemHandlerTest_DEPENDENCIES) @rm -f MemHandlerTest$(EXEEXT) $(CXXLINK) $(MemHandlerTest_OBJECTS) $(MemHandlerTest_LDADD) $(LIBS) src/NetAccessorTest/$(am__dirstamp): @$(MKDIR_P) src/NetAccessorTest @: > src/NetAccessorTest/$(am__dirstamp) src/NetAccessorTest/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/NetAccessorTest/$(DEPDIR) @: > src/NetAccessorTest/$(DEPDIR)/$(am__dirstamp) src/NetAccessorTest/NetAccessorTest.$(OBJEXT): \ src/NetAccessorTest/$(am__dirstamp) \ src/NetAccessorTest/$(DEPDIR)/$(am__dirstamp) NetAccessorTest$(EXEEXT): $(NetAccessorTest_OBJECTS) $(NetAccessorTest_DEPENDENCIES) @rm -f NetAccessorTest$(EXEEXT) $(CXXLINK) $(NetAccessorTest_OBJECTS) $(NetAccessorTest_LDADD) $(LIBS) src/DOM/Normalizer/$(am__dirstamp): @$(MKDIR_P) src/DOM/Normalizer @: > src/DOM/Normalizer/$(am__dirstamp) src/DOM/Normalizer/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/DOM/Normalizer/$(DEPDIR) @: > src/DOM/Normalizer/$(DEPDIR)/$(am__dirstamp) src/DOM/Normalizer/Normalizer.$(OBJEXT): \ src/DOM/Normalizer/$(am__dirstamp) \ src/DOM/Normalizer/$(DEPDIR)/$(am__dirstamp) Normalizer$(EXEEXT): $(Normalizer_OBJECTS) $(Normalizer_DEPENDENCIES) @rm -f Normalizer$(EXEEXT) $(CXXLINK) $(Normalizer_OBJECTS) $(Normalizer_LDADD) $(LIBS) src/DOM/RangeTest/$(am__dirstamp): @$(MKDIR_P) src/DOM/RangeTest @: > src/DOM/RangeTest/$(am__dirstamp) src/DOM/RangeTest/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/DOM/RangeTest/$(DEPDIR) @: > src/DOM/RangeTest/$(DEPDIR)/$(am__dirstamp) src/DOM/RangeTest/RangeTest.$(OBJEXT): \ src/DOM/RangeTest/$(am__dirstamp) \ src/DOM/RangeTest/$(DEPDIR)/$(am__dirstamp) RangeTest$(EXEEXT): $(RangeTest_OBJECTS) $(RangeTest_DEPENDENCIES) @rm -f RangeTest$(EXEEXT) $(CXXLINK) $(RangeTest_OBJECTS) $(RangeTest_LDADD) $(LIBS) src/ThreadTest/$(am__dirstamp): @$(MKDIR_P) src/ThreadTest @: > src/ThreadTest/$(am__dirstamp) src/ThreadTest/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/ThreadTest/$(DEPDIR) @: > src/ThreadTest/$(DEPDIR)/$(am__dirstamp) src/ThreadTest/ThreadTest.$(OBJEXT): src/ThreadTest/$(am__dirstamp) \ src/ThreadTest/$(DEPDIR)/$(am__dirstamp) ThreadTest$(EXEEXT): $(ThreadTest_OBJECTS) $(ThreadTest_DEPENDENCIES) @rm -f ThreadTest$(EXEEXT) $(CXXLINK) $(ThreadTest_OBJECTS) $(ThreadTest_LDADD) $(LIBS) src/XSTSHarness/$(am__dirstamp): @$(MKDIR_P) src/XSTSHarness @: > src/XSTSHarness/$(am__dirstamp) src/XSTSHarness/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/XSTSHarness/$(DEPDIR) @: > src/XSTSHarness/$(DEPDIR)/$(am__dirstamp) src/XSTSHarness/XSTSHarness.$(OBJEXT): \ src/XSTSHarness/$(am__dirstamp) \ src/XSTSHarness/$(DEPDIR)/$(am__dirstamp) src/XSTSHarness/XSTSHarnessHandlers.$(OBJEXT): \ src/XSTSHarness/$(am__dirstamp) \ src/XSTSHarness/$(DEPDIR)/$(am__dirstamp) src/XSTSHarness/XMLHarnessHandlers.$(OBJEXT): \ src/XSTSHarness/$(am__dirstamp) \ src/XSTSHarness/$(DEPDIR)/$(am__dirstamp) XSTSHarness$(EXEEXT): $(XSTSHarness_OBJECTS) $(XSTSHarness_DEPENDENCIES) @rm -f XSTSHarness$(EXEEXT) $(CXXLINK) $(XSTSHarness_OBJECTS) $(XSTSHarness_LDADD) $(LIBS) src/XSValueTest/$(am__dirstamp): @$(MKDIR_P) src/XSValueTest @: > src/XSValueTest/$(am__dirstamp) src/XSValueTest/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/XSValueTest/$(DEPDIR) @: > src/XSValueTest/$(DEPDIR)/$(am__dirstamp) src/XSValueTest/XSValueTest.$(OBJEXT): \ src/XSValueTest/$(am__dirstamp) \ src/XSValueTest/$(DEPDIR)/$(am__dirstamp) XSValueTest$(EXEEXT): $(XSValueTest_OBJECTS) $(XSValueTest_DEPENDENCIES) @rm -f XSValueTest$(EXEEXT) $(CXXLINK) $(XSValueTest_OBJECTS) $(XSValueTest_LDADD) $(LIBS) src/XSerializerTest/$(am__dirstamp): @$(MKDIR_P) src/XSerializerTest @: > src/XSerializerTest/$(am__dirstamp) src/XSerializerTest/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/XSerializerTest/$(DEPDIR) @: > src/XSerializerTest/$(DEPDIR)/$(am__dirstamp) src/XSerializerTest/XSerializerHandlers.$(OBJEXT): \ src/XSerializerTest/$(am__dirstamp) \ src/XSerializerTest/$(DEPDIR)/$(am__dirstamp) src/XSerializerTest/XSerializerTest.$(OBJEXT): \ src/XSerializerTest/$(am__dirstamp) \ src/XSerializerTest/$(DEPDIR)/$(am__dirstamp) XSerializerTest$(EXEEXT): $(XSerializerTest_OBJECTS) $(XSerializerTest_DEPENDENCIES) @rm -f XSerializerTest$(EXEEXT) $(CXXLINK) $(XSerializerTest_OBJECTS) $(XSerializerTest_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) -rm -f src/DOM/DOMMemTest/DOMMemTest.$(OBJEXT) -rm -f src/DOM/DOMTest/DTest.$(OBJEXT) -rm -f src/DOM/Normalizer/Normalizer.$(OBJEXT) -rm -f src/DOM/RangeTest/RangeTest.$(OBJEXT) -rm -f src/DOM/Traversal/Traversal.$(OBJEXT) -rm -f src/DOM/TypeInfo/TypeInfo.$(OBJEXT) -rm -f src/EncodingTest/EncodingTest.$(OBJEXT) -rm -f src/InitTermTest/InitTermTest.$(OBJEXT) -rm -f src/MemHandlerTest/MemoryMonitor.$(OBJEXT) -rm -f src/NetAccessorTest/NetAccessorTest.$(OBJEXT) -rm -f src/ThreadTest/ThreadTest.$(OBJEXT) -rm -f src/XSTSHarness/XMLHarnessHandlers.$(OBJEXT) -rm -f src/XSTSHarness/XSTSHarness.$(OBJEXT) -rm -f src/XSTSHarness/XSTSHarnessHandlers.$(OBJEXT) -rm -f src/XSValueTest/XSValueTest.$(OBJEXT) -rm -f src/XSerializerTest/XSerializerHandlers.$(OBJEXT) -rm -f src/XSerializerTest/XSerializerTest.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@src/DOM/DOMMemTest/$(DEPDIR)/DOMMemTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/DOM/DOMTest/$(DEPDIR)/DTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/DOM/Normalizer/$(DEPDIR)/Normalizer.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/DOM/RangeTest/$(DEPDIR)/RangeTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/DOM/Traversal/$(DEPDIR)/Traversal.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/DOM/TypeInfo/$(DEPDIR)/TypeInfo.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/EncodingTest/$(DEPDIR)/EncodingTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/InitTermTest/$(DEPDIR)/InitTermTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/MemHandlerTest/$(DEPDIR)/MemoryMonitor.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/NetAccessorTest/$(DEPDIR)/NetAccessorTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/ThreadTest/$(DEPDIR)/ThreadTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/XSTSHarness/$(DEPDIR)/XMLHarnessHandlers.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/XSTSHarness/$(DEPDIR)/XSTSHarness.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/XSTSHarness/$(DEPDIR)/XSTSHarnessHandlers.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/XSValueTest/$(DEPDIR)/XSValueTest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/XSerializerTest/$(DEPDIR)/XSerializerHandlers.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/XSerializerTest/$(DEPDIR)/XSerializerTest.Po@am__quote@ @XERCES_PRETTY_MAKE_FALSE@.cpp.o: @am__fastdepCXX_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< @XERCES_PRETTY_MAKE_FALSE@.cpp.obj: @am__fastdepCXX_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` @XERCES_PRETTY_MAKE_FALSE@.cpp.lo: @am__fastdepCXX_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -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) set x; \ 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; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) 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)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__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 "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$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) 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) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -rm -f src/DOM/DOMMemTest/$(DEPDIR)/$(am__dirstamp) -rm -f src/DOM/DOMMemTest/$(am__dirstamp) -rm -f src/DOM/DOMTest/$(DEPDIR)/$(am__dirstamp) -rm -f src/DOM/DOMTest/$(am__dirstamp) -rm -f src/DOM/Normalizer/$(DEPDIR)/$(am__dirstamp) -rm -f src/DOM/Normalizer/$(am__dirstamp) -rm -f src/DOM/RangeTest/$(DEPDIR)/$(am__dirstamp) -rm -f src/DOM/RangeTest/$(am__dirstamp) -rm -f src/DOM/Traversal/$(DEPDIR)/$(am__dirstamp) -rm -f src/DOM/Traversal/$(am__dirstamp) -rm -f src/DOM/TypeInfo/$(DEPDIR)/$(am__dirstamp) -rm -f src/DOM/TypeInfo/$(am__dirstamp) -rm -f src/EncodingTest/$(DEPDIR)/$(am__dirstamp) -rm -f src/EncodingTest/$(am__dirstamp) -rm -f src/InitTermTest/$(DEPDIR)/$(am__dirstamp) -rm -f src/InitTermTest/$(am__dirstamp) -rm -f src/MemHandlerTest/$(DEPDIR)/$(am__dirstamp) -rm -f src/MemHandlerTest/$(am__dirstamp) -rm -f src/NetAccessorTest/$(DEPDIR)/$(am__dirstamp) -rm -f src/NetAccessorTest/$(am__dirstamp) -rm -f src/ThreadTest/$(DEPDIR)/$(am__dirstamp) -rm -f src/ThreadTest/$(am__dirstamp) -rm -f src/XSTSHarness/$(DEPDIR)/$(am__dirstamp) -rm -f src/XSTSHarness/$(am__dirstamp) -rm -f src/XSValueTest/$(DEPDIR)/$(am__dirstamp) -rm -f src/XSValueTest/$(am__dirstamp) -rm -f src/XSerializerTest/$(DEPDIR)/$(am__dirstamp) -rm -f src/XSerializerTest/$(am__dirstamp) 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 \ mostlyclean-am distclean: distclean-am -rm -rf src/DOM/DOMMemTest/$(DEPDIR) src/DOM/DOMTest/$(DEPDIR) src/DOM/Normalizer/$(DEPDIR) src/DOM/RangeTest/$(DEPDIR) src/DOM/Traversal/$(DEPDIR) src/DOM/TypeInfo/$(DEPDIR) src/EncodingTest/$(DEPDIR) src/InitTermTest/$(DEPDIR) src/MemHandlerTest/$(DEPDIR) src/NetAccessorTest/$(DEPDIR) src/ThreadTest/$(DEPDIR) src/XSTSHarness/$(DEPDIR) src/XSValueTest/$(DEPDIR) src/XSerializerTest/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf src/DOM/DOMMemTest/$(DEPDIR) src/DOM/DOMTest/$(DEPDIR) src/DOM/Normalizer/$(DEPDIR) src/DOM/RangeTest/$(DEPDIR) src/DOM/Traversal/$(DEPDIR) src/DOM/TypeInfo/$(DEPDIR) src/EncodingTest/$(DEPDIR) src/InitTermTest/$(DEPDIR) src/MemHandlerTest/$(DEPDIR) src/NetAccessorTest/$(DEPDIR) src/ThreadTest/$(DEPDIR) src/XSTSHarness/$(DEPDIR) src/XSValueTest/$(DEPDIR) src/XSerializerTest/$(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: check-am install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean \ clean-checkPROGRAMS clean-generic 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-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 # # Override generated rules to provide prettier make rules # # Warning: If Automake changes sufficiently, these rules may need to # be regenerated from the (new) default output of Automake # @XERCES_PRETTY_MAKE_TRUE@.cpp.o: @XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_TRUE@ @depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`; \ @XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$$depbase.Tpo" -c -o $@ $<; \ @XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_TRUE@ then $(am__mv) "$$depbase.Tpo" "$$depbase.Po"; else rm -f "$$depbase.Tpo"; exit 1; fi @XERCES_PRETTY_MAKE_TRUE@@AMDEP_TRUE@@am__fastdepCXX_FALSE@ @source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @XERCES_PRETTY_MAKE_TRUE@@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< @XERCES_PRETTY_MAKE_TRUE@.cpp.obj: @XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_TRUE@ @depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`; \ @XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$$depbase.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ @XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_TRUE@ then $(am__mv) "$$depbase.Tpo" "$$depbase.Po"; else rm -f "$$depbase.Tpo"; exit 1; fi @XERCES_PRETTY_MAKE_TRUE@@AMDEP_TRUE@@am__fastdepCXX_FALSE@ @source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @XERCES_PRETTY_MAKE_TRUE@@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` @XERCES_PRETTY_MAKE_TRUE@.cpp.lo: @XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_TRUE@ @depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`; \ @XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$$depbase.Tpo" -c -o $@ $<; \ @XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_TRUE@ then $(am__mv) "$$depbase.Tpo" "$$depbase.Plo"; else rm -f "$$depbase.Tpo"; exit 1; fi @XERCES_PRETTY_MAKE_TRUE@@AMDEP_TRUE@@am__fastdepCXX_FALSE@ @source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @XERCES_PRETTY_MAKE_TRUE@@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< # 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: xerces-c-3.1.1/tests/src/0000755000175000017500000000000011363617314014201 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/0000755000175000017500000000000011363617313016325 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/XMLHarnessHandlers.cpp0000644000175000017500000001615311211526053022474 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLHarnessHandlers.cpp 781475 2009-06-03 17:00:27Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include "XMLHarnessHandlers.hpp" #include #include #include #include #include #include // --------------------------------------------------------------------------- // XMLHarnessHandlers: Constructors and Destructor // --------------------------------------------------------------------------- XMLHarnessHandlers::XMLHarnessHandlers(const XMLCh* baseURL) : BaseHarnessHandlers(baseURL) , fTestBaseURL(5) { fParser = XMLReaderFactory::createXMLReader(); fParser->setFeature(XMLUni::fgSAX2CoreValidation, true); fParser->setFeature(XMLUni::fgXercesDynamic, false); fParser->setErrorHandler(&fErrorHandler); fTestBaseURL.push(new XMLURL(fBaseURL)); } XMLHarnessHandlers::~XMLHarnessHandlers() { delete fParser; } static XMLCh szTest[]={ chLatin_T, chLatin_E, chLatin_S, chLatin_T, chNull }; static XMLCh szTestCases[]={ chLatin_T, chLatin_E, chLatin_S, chLatin_T, chLatin_C, chLatin_A, chLatin_S, chLatin_E, chLatin_S, chNull }; static XMLCh szID[]={ chLatin_I, chLatin_D, chNull }; static XMLCh szURI[]={ chLatin_U, chLatin_R, chLatin_I, chNull }; static XMLCh szType[]={ chLatin_T, chLatin_Y, chLatin_P, chLatin_E, chNull }; static XMLCh szValid[]={ chLatin_v, chLatin_a, chLatin_l, chLatin_i, chLatin_d, chNull }; static XMLCh szInvalid[]={ chLatin_i, chLatin_n, chLatin_v, chLatin_a, chLatin_l, chLatin_i, chLatin_d, chNull }; static XMLCh szNotWellFormed[]={ chLatin_n, chLatin_o, chLatin_t, chDash, chLatin_w, chLatin_f, chNull }; static XMLCh szError[]={ chLatin_e, chLatin_r, chLatin_r, chLatin_o, chLatin_r, chNull }; static XMLCh szBase[]={ chLatin_x, chLatin_m, chLatin_l, chColon, chLatin_b, chLatin_a, chLatin_s, chLatin_e, chNull }; static XMLCh szNamespace[]={ chLatin_N, chLatin_A, chLatin_M, chLatin_E, chLatin_S, chLatin_P, chLatin_A, chLatin_C, chLatin_E, chNull }; static XMLCh szNO[]={ chLatin_n, chLatin_o, chNull }; // --------------------------------------------------------------------------- // XMLHarnessHandlers: Implementation of the SAX DocumentHandler interface // --------------------------------------------------------------------------- void XMLHarnessHandlers::startElement(const XMLCh* const uri , const XMLCh* const localname , const XMLCh* const /* qname */ , const Attributes& attrs) { if(XMLString::equals(localname, szTestCases)) { const XMLCh* baseUrl=attrs.getValue(szBase); XMLURL newBase; XMLURL prevBase=*fTestBaseURL.peek(); if(baseUrl!=NULL) newBase.setURL(prevBase, baseUrl); else newBase=prevBase; fTestBaseURL.push(new XMLURL(newBase)); } else if(XMLString::equals(localname, szTest)) { const XMLCh* useNS=attrs.getValue(szNamespace); const XMLCh* testName=attrs.getValue(szID); XMLURL testSet; testSet.setURL(*fTestBaseURL.peek(), attrs.getValue(szURI)); bool success=true, fatalFailure=false; try { if(useNS!=NULL && XMLString::equals(useNS, szNO)) { fParser->setFeature(XMLUni::fgSAX2CoreNameSpaces, false); fParser->setFeature(XMLUni::fgSAX2CoreNameSpacePrefixes, false); } else { fParser->setFeature(XMLUni::fgSAX2CoreNameSpaces, true); fParser->setFeature(XMLUni::fgSAX2CoreNameSpacePrefixes, true); } fErrorHandler.resetErrors(); fParser->parse(testSet.getURLText()); } catch (const OutOfMemoryException&) { fatalFailure=true; XERCES_STD_QUALIFIER cout << "Test " << StrX(testName) << " ran out of memory" << XERCES_STD_QUALIFIER endl; success=false; } catch(const XMLException& exc) { XERCES_STD_QUALIFIER cout << "Test " << StrX(testName) << " threw " << StrX(exc.getMessage()) << XERCES_STD_QUALIFIER endl; success=false; } catch (...) { fatalFailure=true; XERCES_STD_QUALIFIER cout << "Test " << StrX(testName) << " crashed" << XERCES_STD_QUALIFIER endl; success=false; exit(1); } fTests++; if(fatalFailure) { fFailures++; printFile(testSet); } else { ValidityOutcome expResult=unknown; const XMLCh* validity=attrs.getValue(szType); if(XMLString::equals(validity, szValid)) expResult=valid; else if(XMLString::equals(validity, szInvalid) || XMLString::equals(validity, szNotWellFormed) || XMLString::equals(validity, szError) ) expResult=invalid; else XERCES_STD_QUALIFIER cerr << "Unknown result type " << StrX(validity) << XERCES_STD_QUALIFIER endl; if(success && !fErrorHandler.getSawErrors()) { if(expResult!=valid) { fFailures++; XERCES_STD_QUALIFIER cout << "Test " << StrX(testName) << " succeeded but was expected to fail" << XERCES_STD_QUALIFIER endl; printFile(testSet); } } else { if(expResult!=invalid) { fFailures++; XERCES_STD_QUALIFIER cout << "Test " << StrX(testName) << " failed but was expected to pass" << XERCES_STD_QUALIFIER endl; XERCES_STD_QUALIFIER cout << "Reported error: " << StrX(fErrorHandler.getErrorText()) << XERCES_STD_QUALIFIER endl; printFile(testSet); } } } } } void XMLHarnessHandlers::endElement(const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname) { if(XMLString::equals(localname, szTestCases)) { fTestBaseURL.pop(); } } xerces-c-3.1.1/tests/src/XSTSHarness/regression/0000755000175000017500000000000011363617313020505 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1714/0000755000175000017500000000000011363617313022173 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1714/schema.xsd0000644000175000017500000000153610754630371024162 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-809/0000755000175000017500000000000011363617313022117 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-809/test.xsd0000644000175000017500000000166111241271240023610 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-809/test.xml0000644000175000017500000000030011241271240023577 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1819/0000755000175000017500000000000011363617313022201 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1819/test.xsd0000644000175000017500000000060411037613332023673 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1819/test.xml0000644000175000017500000000031011037613332023667 0ustar borisboris foo t:bar bar xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1592/0000755000175000017500000000000011363617313022177 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1592/MainSchema.xml0000644000175000017500000000124610754630371024733 0ustar borisboris DOC DOC DOC DOC DOC DOC DOC DOC DOC DOC DOC DOC DOC DOC DOC DOC xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1592/MainSchema.xsd0000644000175000017500000000104610754630371024727 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1592/Schema1.xsd0000644000175000017500000000054210754630371024203 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1707/0000755000175000017500000000000011363617313022175 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1707/test.xsd0000644000175000017500000000173411241265072023675 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1707/test.xml0000644000175000017500000000072711241265072023700 0ustar borisboris ship-to-name AK bill-to-name xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1546/0000755000175000017500000000000011363617313022176 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1546/test.xsd0000644000175000017500000000076710754630371023711 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1546/test.xml0000644000175000017500000000023710754630371023703 0ustar borisboris 0 0 0 xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-423/0000755000175000017500000000000011363617313022107 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-423/dummy.xsd0000644000175000017500000000366610754630371023777 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-423/dummy.xml0000644000175000017500000000104710754630371023770 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1822/0000755000175000017500000000000011363617313022173 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1822/m3_10v39.xsd0000644000175000017500000000424611037724144024101 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1822/m3_10v44.xsd0000644000175000017500000000325111037724144024070 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1822/m3_10v44.xml0000644000175000017500000000127211037724144024073 0ustar borisboris 1252 College Blvd., Fargo, ND 58105 Nissan cat dog Nissan xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1822/m3_10v39.xml0000644000175000017500000000116211037724144024075 0ustar borisboris 1252 College Blvd., fargo, ND 58105 Buick dog Buick lamb xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-962/0000755000175000017500000000000011363617313022117 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-962/test.xsd0000644000175000017500000000032110754630371023614 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1281/0000755000175000017500000000000011363617313022172 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1281/restrictionTest.xsd0000644000175000017500000000635610754630371026133 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1281/rT.xml0000644000175000017500000000070010754630371023300 0ustar borisboris first text string next string xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-796/0000755000175000017500000000000011363617313022124 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-796/sample.xml0000644000175000017500000000060510754630371024132 0ustar borisboris yes a-state-1 a-state-2 xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-796/sample.xsd0000644000175000017500000000146010754630371024130 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1777/0000755000175000017500000000000011363617313022204 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1777/derived.xsd0000644000175000017500000000121510754630371024347 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1777/base.xsd0000644000175000017500000000066610754630371023650 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1831/0000755000175000017500000000000011363617313022173 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1831/ack.xml0000644000175000017500000000043311240030673023443 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1831/ack.xsd0000644000175000017500000000071411240030673023443 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1832/0000755000175000017500000000000011363617313022174 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1832/schema11.xsd0000644000175000017500000000257011070760562024322 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1659/0000755000175000017500000000000011363617313022203 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1659/test-4/0000755000175000017500000000000011363617313023323 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1659/test-4/test-users.xsd0000644000175000017500000000122111301232732026143 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1659/test-4/test-user-config.xsd0000644000175000017500000000073711301232732027236 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1659/test-4/derived-user-config.xsd0000644000175000017500000000136611301232732027700 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1659/test-4/test-users.xml0000644000175000017500000000104011301232732026144 0ustar borisboris bob 50 bob 50 xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1659/test-2/0000755000175000017500000000000011363617313023321 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1659/test-2/test-users.xsd0000644000175000017500000000122111301232732026141 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1659/test-2/test-user-config.xsd0000644000175000017500000000073711301232732027234 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1659/test-2/derived-user-config.xsd0000644000175000017500000000136611301232732027676 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1659/test-2/test-users.xml0000644000175000017500000000104011301232732026142 0ustar borisboris bob 50 bob 50 xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1659/test-1/0000755000175000017500000000000011363617313023320 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1659/test-1/test-users.xsd0000644000175000017500000000141111301232732026141 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1659/test-1/test-user-config.xsd0000644000175000017500000000112311301232732027221 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1659/test-1/derived-user-config.xsd0000644000175000017500000000135011301232732027666 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1659/test-1/test-users.xml0000644000175000017500000000101611301232732026144 0ustar borisboris bob 50 bob 50 xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1659/test-3/0000755000175000017500000000000011363617313023322 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1659/test-3/test-users.xsd0000644000175000017500000000132511301232732026147 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1659/test-3/test-user-config.xsd0000644000175000017500000000103711301232732027227 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1659/test-3/derived-user-config.xsd0000644000175000017500000000144611301232732027676 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1659/test-3/test-users.xml0000644000175000017500000000103011301232732026142 0ustar borisboris bob 50 bob 50 xerces-c-3.1.1/tests/src/XSTSHarness/regression/AnnotatedTSSchema.xsd0000644000175000017500000005575410754630371024554 0ustar borisboris This is the schema for the W3C XML Schema Test Suite collection (TS), as approved by the W3C XML Schema Working Group on May 12, 2003. It defines the namespace: http://www.w3.org/2003/XMLSchema/TestSuite/PLACEHOLDER The TS consists of a set of test suites, each of which is identified according to the version of W3C XML Schema it is designed to test. Previous versions of test suites are archived and are also available, identifiable by the version of the test suite itself. This schema defines three separate but related document types for the TS: 1) The testSuite element is the root element of a document which defines a test suite as described above (e.g. the 2003-10-25 version of the test suite for version 1 of the Recommendation). The principal purpose of a testSuite document is the provision of a set of links to documents defining the tests which constitute the test suite. Files containing testSuite documents have the filename suffix ".suite". 2) The testSet element is the root element of a document which describes a set of tests. Each testSuite consists primarily of a set of links to testSet documents. The scope of the testSet is typically determined by the contributor of the tests which make up the testSet: it is the unit in which tests are contributed to the collection. Files containing testSet documents have the filename suffix ".testSet". 3) The testSuiteResults element is the root element of a document describing the results of testing a processor against a testSuite. Files containing testSuiteResults documents have the filename suffix ".results". The root element of a document describing all tests for a particular version of W3C XML Schema, for the version of the TS defined by the document. The element has three attributes, each of which is required: name - the name of this test suite. releaseDate - the date on which this test suite was released. This value serves to identify the version of the test suite. schemaVersion - the version of W3C XML Schema for which the tests are designed. Two elements may optionally be present: annotation - at most one instance of general documentation. testSetRef - a set of references to the sets of tests which make up this test suite. The test sets referenced are uniquely named. The root element of a document describing a set of tests, normally from a single contributor. A contributor may supply any number of testSet files. The element has two attributes, each of which is required: contributor - the name of the contributor of this testSet. name - the name of this testSet, which must be unique within the enclosing testSuite. Two elements may optionally be present: annotation - at most one instance of general documentation. testGroup - a set of testGroup elements, each of which defines a group of closely related tests. The testGroup elements must be uniquely named. Each test group within a test set must have a unique name. This element groups a collection of closely related tests. In the case where a schema is present, this element groups the schema with a set of instance documents which should be validated against the schema. It has one attribute, which is required: name - an identifier for the testGroup which is unique within the enclosing testSet. Four elements may optionally be present: annotation - at most one instance of general documentation. documentationReference - any number of references to external documentation upon which the test is based, e.g. links to relevant sections of the Recommendation, to the Errata, etc. schemaTest - any number of elements, each of which holds information on a single schema document. When more than one schema document is present, a single schema is constructed from the set (or from other schemas via import). Schema documents may be omitted, for the purpose of testing a processor's validation of an instance containing only the built-in datatypes defined in the Recommendation. instanceTest - any number of elements, each of which holds information on a single instance document to be validated against the included schema. Each test within a test group must have a unique name. This element groups together information about the schema for a particular test condition. It has one attribute, which is required: name - the name of the schema, which must be unique within the enclosing testGroup (i.e. it must differ from the name(s) of any associated instanceTest elements). One element is required: schemaDocument - at least one link to a file containing a schema document. The schema for the test is constructed from the set (or from other schemas via import). Three elements may optionally be present: expected - the expected validation outcome for the schema contained in the schema document(s). current - the current status of this test in the TS (an indication of the test's accuracy in testing the feature it is intended to test). prior - the history of any changes in the status of this test. The elements "expected" and "current" may be absent when tests are contributed, but will always be present for tests included in the TS. This element groups together information about an instance document which should be validated against the schema referenced in the enclosing testGroup. It has one attribute, which is required: name - the name of the instance document, which must be unique within the enclosing testGroup (i.e. it must differ from the name of any associated schemaTest elements). One element is required: instanceDocument - a link to a file containing the instance document. Three elements may optionally be present: expected - the expected validation outcome for the instance document. current - the current status of this test in the TS (an indication of the test's accuracy in testing the feature it is intended to test). prior - the history of any changes in the status of this test. The elements "expected" and "current" may be absent when tests are contributed, but will always be present for tests included in the TS. Note: per section 5.2 "Assessing Schema-Validity" of the Recommendation "XML Schema Part 1: Structures", validation may be started in a variety of ways. For the purposes of the TS, only the third method shall be used: "The processor starts from Schema-Validity Assessment (Element) (3.3.4) with no stipulated declaration or definition". The current status of a test in the TS. This element has two attributes, both of which are required: status - the status of the test. One of "accepted", "stable", "disputed-test" or "disputed-spec" (see the TS website for an explanation of these values). date - the date on which the value in the status attribute was attained. A former status of a test in the TS. This element has two attributes, both of which are required: status - the former status of the test. One of "accepted", "stable", "disputed-test" or "disputed-spec" (see the TS website for an explanation of these values). date - the date on which the value in the status attribute was attained. The expected validation outcome of a test in the TS. This element has one attribute, which is required: validity - the expected validity of the test. One of "valid", "invalid" or "notKnown". This is the root element of a document containing a test result report. The report takes the form of a set of test results returned by a processor/validator when run against the TS. It has three required attributes: suite - the name of the test suite to which these results correspond. This should be the value of the name attribute of the testSuite element at the root of the test suite document describing the tests to which these results correspond. processor - some identifying information for the processor/ validator which produced the reported results. The value of this attribute is left to the discretion of the reporter. submitDate - the date on which these results were submitted to the TS Task Force. The element also has one optional attribute: publicationPermission - the degree to which the result reporter authorizes the W3C to disseminate the reported results. One of "W3C members" or "public" (see the TS website for an explanation of these values). If this attribute is absent, no permission to publish is granted. This element has two optional elements: annotation - at most one instance of more detailed (ts:documentation) or structured (ts:appinfo) information or commentary regarding the enclosed test results. testResult - any number of reports of the results of individual tests. Any results may be omitted, particularly those for tests of features for which the processor claims no support. The result of an individual instance test or a schema test. This element has four required attributes: validity - the validition outcome of the test. One of "valid", "invalid" or "notKnown". set - the value of the "name" attribute of the test set to which the test belongs. group - the value of the "name" attribute of the test group to which the test belongs. test - the value of the "name" attribute of the schema test or instance test, the validation outcome of which this result reports. NOTE: The "set", "group" and "test" attributes are used to uniquely identify the test within the TS for which this result reports the validation outcome. Each matches the "name" attribute of the respective element in the test suite. This element has one optional attribute: normalizedLoad - a relative load value, intended as an indicator of the resource requirements of an individual test. Values may be based on processing time, memory usage or a combination of the two. Values should be in the vicinity of 1.0. The element has one optional element: annotation - at most one instance of more detailed (ts:documentation) or structured (ts:appinfo) information or commentary regarding the individual test result. Reporters are encouraged to use annotation/appinfo to report more detailed outcome information, such as error and warning messages. A link to documentation relevant to a test, such as a link to the Recommendation, an erratum, an archived email discussion, etc. This is an exact copy of the annotation element defined in the Schema Recommendation. It is duplicated here in order to replicate the functionality of the xs:annotation element and because the Schema for Schemas cannot be imported. xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1419/0000755000175000017500000000000011363617313022175 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1419/pattern1.xml0000644000175000017500000000022310754630371024454 0ustar borisboris -9xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1419/pattern1.xsd0000644000175000017500000000046310754630371024460 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1623/0000755000175000017500000000000011363617313022172 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1623/very-simple-2-ns-ppl-nons-t.xsd0000644000175000017500000000035310754630371027753 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1623/need-import-t.xml0000644000175000017500000000047110754630371025404 0ustar borisboris String xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1623/need-import-t.xsd0000644000175000017500000000076010754630371025403 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-538/0000755000175000017500000000000011363617313022116 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-538/test.xsd0000644000175000017500000000150610754630371023621 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-538/test.xml0000644000175000017500000000017610754630371023625 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-977/0000755000175000017500000000000011363617313022125 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-977/boolean.xsd0000644000175000017500000000066610754630371024276 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-977/test.xml0000644000175000017500000000040110754630371023623 0ustar borisboris good xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-394/0000755000175000017500000000000011363617313022116 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-394/test.xsd0000644000175000017500000000074710754630371023627 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1512/0000755000175000017500000000000011363617313022167 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1512/data.xml0000644000175000017500000000064310774652142023631 0ustar borisboris 0 1 1.0000 .1 .135 0.9 0. xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1512/schema.xsd0000644000175000017500000000120510774652142024151 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1893/0000755000175000017500000000000011363617313022203 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1893/main.xsd0000644000175000017500000000073211272004552023643 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1893/included.xsd0000644000175000017500000000052411272004552024505 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-845/0000755000175000017500000000000011363617313022117 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-845/two.xsd0000644000175000017500000000167110754630371023457 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-845/one.xml0000644000175000017500000000023610754630371023425 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-845/one.xsd0000644000175000017500000000125110754630371023421 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-697/0000755000175000017500000000000011363617313022124 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-697/base.xsd0000644000175000017500000000206611240044737023560 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-697/redefined.xsd0000644000175000017500000000110311240044737024562 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-697/redefined.xml0000644000175000017500000000022511240044737024570 0ustar borisboris StreetAddress xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1051/0000755000175000017500000000000011363617313022165 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1051/test_valid.xml0000644000175000017500000000374211037446664025062 0ustar borisboris cool cool cool cool cool cool cool cool cool cool warm warm warm warm warm warm warm warm warm warm cool cool cool cool cool cool cool cool cool cool warm warm warm warm warm warm warm warm warm warm cool cool cool cool cool cool cool cool cool cool warm warm warm warm warm warm warm warm warm warm xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1051/schema.xsd0000644000175000017500000000057611037446664024164 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1051/test.xml0000644000175000017500000000033411037446664023675 0ustar borisboris cool warm xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1878/0000755000175000017500000000000011363617313022206 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1878/invalid.xml0000644000175000017500000000034611233537765024371 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1878/valid.xml0000644000175000017500000042137411233537765024052 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1878/schema.xsd0000644000175000017500000000155411233537765024203 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1776/0000755000175000017500000000000011363617313022203 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1776/smerf.xml0000644000175000017500000000047310777147311024051 0ustar borisboris pawel xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1776/gargamel.xsd0000644000175000017500000000132210777147311024504 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1776/smerf.xsd0000644000175000017500000000100410777147311024036 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-840/0000755000175000017500000000000011363617313022112 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-840/test.xsd0000644000175000017500000000075110754630371023616 0ustar borisboris yada yada yada xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1591/0000755000175000017500000000000011363617313022176 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1591/schema.xsd0000644000175000017500000000275610754630371024172 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1825/0000755000175000017500000000000011363617313022176 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1825/test.xsd0000644000175000017500000000107011126201344023661 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1825/test.xml0000644000175000017500000000025611126201344023670 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1825/test2.xsd0000644000175000017500000000102511126201344023743 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-834/0000755000175000017500000000000011363617313022115 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-834/test.xsd0000644000175000017500000000110510754630371023613 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-474/0000755000175000017500000000000011363617313022115 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-474/mySchema.xsd0000644000175000017500000000072410754630371024410 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-474/myDoc.xml0000644000175000017500000000017410754630371023716 0ustar borisboris1.00 xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1583/0000755000175000017500000000000011363617313022177 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1583/keyref-main.xsd0000644000175000017500000000152411234062562025125 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1583/keyref-imported.xsd0000644000175000017500000000175111234062562026026 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1583/keyref.xml0000644000175000017500000000104311234062562024201 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1758/0000755000175000017500000000000011363617313022203 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1758/test.xsd0000644000175000017500000000164711030154365023704 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1758/test.xml0000644000175000017500000000035311030154365023677 0ustar borisboris a a a xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1787/0000755000175000017500000000000011363617313022205 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1787/schema.xsd0000644000175000017500000000101010766461207024162 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1745/0000755000175000017500000000000011363617313022177 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1745/b.xsd0000644000175000017500000000113610760540754023145 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1745/a.xsd0000644000175000017500000000042610760540754023145 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1817/0000755000175000017500000000000011363617313022177 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1817/test2.xml0000644000175000017500000000204211037130340023744 0ustar borisboris Weekly Want Ads Weekly Want Ads McLeans Software Developers Monthly McLeans Weekly Want Ads Software Developers Monthly O Software Developers Monthly xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1817/test.xsd0000644000175000017500000000061211037130340023661 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1817/test.xml0000644000175000017500000000063311037130340023666 0ustar borisboris Weekly Want Ads McLeans Software Developers Monthly McLeans Weekly Want Ads Software Developers Monthly O xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1817/test2.xsd0000644000175000017500000000257211037130340023752 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-607/0000755000175000017500000000000011363617313022113 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-607/test.xsd0000644000175000017500000000052310754630371023614 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-830/0000755000175000017500000000000011363617313022111 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-830/event1.xsd0000644000175000017500000000064310754630371024040 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-830/event1.xml0000644000175000017500000000032310754630371024035 0ustar borisboris Final sale of property. xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1237/0000755000175000017500000000000011363617313022173 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1237/unique.xsd0000644000175000017500000000130710754630371024224 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1237/test.xml0000644000175000017500000000034410754630371023677 0ustar borisboris 1 2 4 xerces-c-3.1.1/tests/src/XSTSHarness/regression/Xerces.testSet0000644000175000017500000010433711301232732023311 0ustar borisboris Failed to validate correctly when schema has <xsd:extension> and the base has an attribute Problem with recursive and derived elements minInclusive factet validation alters value maxOccurs="0" is considered an error Model group 'All' with minOccurs='0' reports an error Schema ID validation can fail depending on declaration ordering Incorrect Schema Validation Failure When Redefining Complex Type with Simple Content Validator doesn't enforce xsd:key data from CDATA section is not passed for validation Does implement co-occurence constraints Empty complex type definition is always non-mixed even if declaration says otherwise failure to load grammar if an abstract element is in substitutionGroup of another abstract element References to attributeGroup/group definition are not allowed to have annotations Cyclic import doesn't correctly handle type restrictions The type of an element should depend also on the substitutionGroup attribute xsi:type for union types with pattern facet doesn't work Crash when maxOccurs >= 200000 xs:unique is used like xs:key Schema length validation error in unions Pre-loaded grammar and xsi:type in the root element Regular expressions in schema should allow unescaped '-' Identity constraint is not enforced on xs:anySimpleType Regular expressions in schema should allow unescaped '-' Bad XS:pattern interpretation for XSD length, maxLength, and minLength facets are applied to item instead of list when value specific via default/fixed keyref are not processing with imported schema Mishandling of recursive definition on complex content restriction Namespace handling is wrong in schema validation The type reference will fail when importing a no-namespace schema Using 'list' or 'union' for finalDefault in schema element causes incorrect validation errors Multi-import and schemaLocation ordering Multi-import and schemaLocation ordering Multi-import and schemaLocation ordering Multi-import and schemaLocation ordering Processing of not-declared-element with "xsi:type" under anyType element does not clear SchemaValidator::fXsiType xerces-c reports "Base type definition does not have any attributes" for a valid complex type restriction Invalid anonymous type definition with the name attribute is not caught in some situations Inheritance by restriction does not detect a missing type from an imported schema Bug in schema processing (using the "xsd:extension" for an another file) since v2.8.0 Restriction checking code resolves an element from a wrong schema grammar Wildcard namespace prefixes in XPath are not reported as errors Registry-based URI authority validation Outdated interpretation of ##other Regression - Schema Error for valid Substition Group Regression - Schema Error for valid Substition Group Failure to validate valid instance Regression with handling of ANY Regression with handling of ANY Default value of QName type with non-empty prefix causes segfault Default value of QName type with non-empty prefix causes segfault Xerces-c can not parse instance with special chars (", < and >) in target namespace Namespace definitions attached to xs:extension/xs:restriction are not processed Validation of xs:keys and xs:keyrefs with xpath takes too long Error reported when defining a complex type as an extension of an imported simple type Error reported when defining a complex type as an extension of an imported simple type xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-711/0000755000175000017500000000000011363617313022107 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-711/KeyTest.xsd0000644000175000017500000000266310754630371024230 0ustar borisboris Root Element xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-711/KeyTest.xml0000644000175000017500000000075010754630371024225 0ustar borisboris Main Sub Sub1 Sub1 Main xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-711/KeyTest2.xml0000644000175000017500000000066210754630371024311 0ustar borisboris Main Sub Sub1 Main1 xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1393/0000755000175000017500000000000011363617313022176 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1393/invalid.xml0000644000175000017500000000026610766456265024367 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1393/valid.xml0000644000175000017500000000025710766456265024040 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1393/schema.xsd0000644000175000017500000000100610766456265024170 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1239/0000755000175000017500000000000011363617313022175 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1239/Test.xsd0000644000175000017500000000135610754630371023643 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1239/test.xml0000644000175000017500000000032610754630371023701 0ustar borisboris curiouser & curiouser&curiouser xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1633/0000755000175000017500000000000011363617313022173 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1633/schema_test.xsd0000644000175000017500000000422410754630371025216 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1633/instance.xml0000644000175000017500000000064110754630371024524 0ustar borisboris 1 2 3 4 5 6 7 8 9 xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1263/0000755000175000017500000000000011363617313022172 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1263/test.xsd0000644000175000017500000000132711301001234023651 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1263/test.xml0000644000175000017500000000022611301001234023650 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1718/0000755000175000017500000000000011363617313022177 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1718/test.xsd0000644000175000017500000000077210760561645023712 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1748/0000755000175000017500000000000011363617313022202 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1748/anyURITest.xml0000644000175000017500000000076211300747312024732 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-1748/anyURITest.xsd0000644000175000017500000000144211300747312024724 0ustar borisboris The schemaLocation of the relevant file is "http://www.w3.org/2001/xml.xsd"; however, we don't want to assume people are always connected to the 'net when playing with this file. xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-653/0000755000175000017500000000000011363617313022114 5ustar borisborisxerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-653/testcase.xml0000644000175000017500000000030010754630371024444 0ustar borisboris test xerces-c-3.1.1/tests/src/XSTSHarness/regression/XERCESC-653/testcase.xsd0000644000175000017500000000103010754630371024443 0ustar borisboris xerces-c-3.1.1/tests/src/XSTSHarness/XSTSHarness.hpp0000644000175000017500000001261511241262021021153 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XSTSHarness.hpp 804211 2009-08-14 13:18:09Z amassari $ */ #ifndef XSTS_HARNESS_HPP #define XSTS_HARNESS_HPP // --------------------------------------------------------------------------- // Includes for all the program files to see // --------------------------------------------------------------------------- #include #include #include #if defined(XERCES_NEW_IOSTREAMS) #include #else #include #endif #include #include #include #include #include XERCES_CPP_NAMESPACE_USE typedef enum { unknown, invalid, valid } ValidityOutcome; extern const XMLCh dummy[]; // --------------------------------------------------------------------------- // This is a simple class that lets us do easy (though not terribly efficient) // trancoding of XMLCh data to local code page for display. // --------------------------------------------------------------------------- class StrX { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- StrX(const XMLCh* const toTranscode) { // Call the private transcoding method fLocalForm = XMLString::transcode(toTranscode); } ~StrX() { XMLString::release(&fLocalForm); } // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const char* localForm() const { return fLocalForm; } private : // ----------------------------------------------------------------------- // Private data members // // fLocalForm // This is the local code page form of the string. // ----------------------------------------------------------------------- char* fLocalForm; }; inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump) { target << toDump.localForm(); return target; } class BaseHarnessHandlers : public DefaultHandler { public: // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- BaseHarnessHandlers(const XMLCh* baseURL); unsigned int getTotalTests() const { return fTests; } unsigned int getFailedTests() const { return fFailures; } bool getSawErrors() const { return fSawErrors; } void printFile(XMLURL& url); // ----------------------------------------------------------------------- // Handlers for the SAX ErrorHandler interface // ----------------------------------------------------------------------- void warning(const SAXParseException& exc); void error(const SAXParseException& exc); void fatalError(const SAXParseException& exc); void resetErrors() { fSawErrors = false; } protected: XMLURL fBaseURL; bool fSawErrors; unsigned int fFailures, fTests; }; class BaseErrorHandler : public ErrorHandler { public: BaseErrorHandler() : fSawErrors(false) {} bool getSawErrors() const { return fSawErrors; } const XMLCh* getErrorText() { return fErrorText.getRawBuffer(); } // ----------------------------------------------------------------------- // Handlers for the SAX ErrorHandler interface // ----------------------------------------------------------------------- void warning(const SAXParseException& exc) {} void error(const SAXParseException& exc); void fatalError(const SAXParseException& exc); void resetErrors() { fSawErrors=false; fErrorText.reset(); } private: // ----------------------------------------------------------------------- // Private data members // // fSawErrors // This is set by the error handlers, and is queryable later to // see if any errors occured. // ----------------------------------------------------------------------- bool fSawErrors; XMLBuffer fErrorText; }; class BaseEntityResolver : public XMLEntityResolver { public: BaseEntityResolver() {}; virtual InputSource* resolveEntity(XMLResourceIdentifier* resourceIdentifier); }; #endif xerces-c-3.1.1/tests/src/XSTSHarness/XSTSHarness.cpp0000644000175000017500000003352711274567126021177 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XSTSHarness.cpp 833057 2009-11-05 15:25:10Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include "XSTSHarness.hpp" #include "XSTSHarnessHandlers.hpp" #include "XMLHarnessHandlers.hpp" #include #include #include #include #include #if defined(XERCES_NEW_IOSTREAMS) #include #else #include #endif #include #include static XMLCh sz_XMLTestSuiteRoot[]={ chLatin_T, chLatin_E, chLatin_S, chLatin_T, chLatin_S, chLatin_U, chLatin_I, chLatin_T, chLatin_E, chNull }; const XMLCh dummy[]={ chLatin_f, chLatin_i, chLatin_l, chLatin_e, chColon, chForwardSlash, chForwardSlash, chLatin_d, chLatin_u, chLatin_m, chLatin_m, chLatin_y, chForwardSlash, chNull }; // --------------------------------------------------------------------------- // Local helper methods // --------------------------------------------------------------------------- void usage() { XERCES_STD_QUALIFIER cout << "\n" "Usage:\n" " XSTSHarness \n" "\n" "This program runs the tests listed in the XMLSchema Test Suite, available at\n" "http://www.w3.org/XML/2004/xml-schema-test-suite/xmlschema2006-11-06/xsts-2007-06-20.tar.gz\n" "Run this executable against the suite.xml file found in the top directory\n" "\n" "It also runs the tests listed in the XML Test Suite, available at\n" "http://www.w3.org/XML/Test/xmlts20080827.zip\n" "Run this executable against the xmlconf.xml file found in the top directory\n" "\n" << XERCES_STD_QUALIFIER endl; } BaseHarnessHandlers::BaseHarnessHandlers(const XMLCh* baseURL) : fSawErrors(false), fBaseURL(baseURL), fFailures(0), fTests(0) { } void BaseHarnessHandlers::error(const SAXParseException& e) { fSawErrors = true; XERCES_STD_QUALIFIER cout << "\nError at file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "\n Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; } void BaseHarnessHandlers::fatalError(const SAXParseException& e) { fSawErrors = true; XERCES_STD_QUALIFIER cout << "\nFatal Error at file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "\n Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; } void BaseHarnessHandlers::warning(const SAXParseException& e) { XERCES_STD_QUALIFIER cout << "\nWarning at file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "\n Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; } void BaseHarnessHandlers::printFile(XMLURL& url) { if(XMLString::equals(url.getURLText(), dummy)) return; BinInputStream* stream=url.makeNewStream(); if(stream==NULL) { XERCES_STD_QUALIFIER cout << "File " << StrX(url.getURLText()) << " is missing" << XERCES_STD_QUALIFIER endl; return; } XERCES_STD_QUALIFIER cout << "Content of file " << StrX(url.getURLText()) << XERCES_STD_QUALIFIER endl; XMLByte buffer[256]; XMLSize_t nRead; while((nRead=stream->readBytes(buffer, 255)) >0) { buffer[nRead]=0; // sending data containing \n\r to cout generates \n\n\r, so strip any \r XMLSize_t idx=0; while(true) { int cr=XMLString::indexOf((const char*)buffer, '\r', idx); if(cr==-1) break; memmove(&buffer[cr], &buffer[cr+1], XMLString::stringLen((const char*)&buffer[cr+1])+1); idx=cr; if(buffer[idx]==0) break; } XERCES_STD_QUALIFIER cout << (const char*)buffer; } XERCES_STD_QUALIFIER cout << XERCES_STD_QUALIFIER endl; delete stream; } ///////////////////////////////////////////////////////////////////// void BaseErrorHandler::error(const SAXParseException& exc) { fSawErrors=true; fErrorText.append(exc.getMessage()); fErrorText.append(chLF); } void BaseErrorHandler::fatalError(const SAXParseException& exc) { fSawErrors=true; fErrorText.append(exc.getMessage()); fErrorText.append(chLF); } ///////////////////////////////////////////////////////////////////// InputSource* BaseEntityResolver::resolveEntity(XMLResourceIdentifier* resourceIdentifier) { if(XMLString::equals(resourceIdentifier->getNameSpace(), XMLUni::fgXMLURIName)) { static const char* xmlXsd= "" "" "" " " " " " " " " " " " " " " " " " " " " " " "" " " " " " " " " " " " " " " " " "" " " " " "" " " " " "" " " " " " " " " " " " " "" ""; return new MemBufInputSource((XMLByte*)xmlXsd, strlen(xmlXsd), ""); } return 0; } ///////////////////////////////////////////////////////////////////// class RootExtractor : public DefaultHandler { public: // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- RootExtractor() { fIsXMLSuite=false; } // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- bool isXMLSuite() const { return fIsXMLSuite; } // ----------------------------------------------------------------------- // Handlers for the SAX DocumentHandler interface // ----------------------------------------------------------------------- void startElement(const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname, const Attributes& attrs) { fIsXMLSuite=XMLString::equals(qname, sz_XMLTestSuiteRoot); throw fIsXMLSuite; } protected: bool fIsXMLSuite; }; // --------------------------------------------------------------------------- // Program entry point // --------------------------------------------------------------------------- int main(int argC, char* argV[]) { // Check command line and extract arguments. if (argC < 2) { usage(); return 1; } int argInd; for (argInd = 1; argInd < argC; argInd++) { // Break out on first parm not starting with a dash if (argV[argInd][0] != '-') break; // Watch for special case help request if (!strcmp(argV[argInd], "-?")) { usage(); return 2; } // TODO: add option to generate the XML summarizing the result else if (!strncmp(argV[argInd], "-v=", 3) || !strncmp(argV[argInd], "-V=", 3)) { } else { XERCES_STD_QUALIFIER cout << "Unknown option '" << argV[argInd] << "', ignoring it\n" << XERCES_STD_QUALIFIER endl; } } // // There should be only one and only one parameter left, and that // should be the file name. // if (argInd != argC - 1) { usage(); return 1; } try { XMLPlatformUtils::Initialize(); } catch (const XMLException& toCatch) { XERCES_STD_QUALIFIER cout << "Error during initialization! Message:\n" << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl; return 1; } // // Create a SAX parser object. // SAX2XMLReader* parser = XMLReaderFactory::createXMLReader(); parser->setFeature(XMLUni::fgSAX2CoreNameSpaces, true); parser->setFeature(XMLUni::fgSAX2CoreValidation, false); const char* xmlFile = argV[argInd]; // Discover if the test suite is the XML or XMLSchema one RootExtractor rootExtractor; parser->setContentHandler(&rootExtractor); try { parser->parse(xmlFile); } catch (...) { } XMLCh* uniFile = XMLString::transcode(xmlFile); XMLCh* uri = new XMLCh[XMLString::stringLen(xmlFile) + 9]; XMLString::fixURI(uniFile, uri); BaseHarnessHandlers* handler=NULL; if(rootExtractor.isXMLSuite()) { // XML Test Suite handler=new XMLHarnessHandlers(uri); } else { // XMLSchema Test Suite handler=new XSTSHarnessHandlers(uri); } XMLString::release(&uniFile); delete [] uri; parser->setContentHandler(handler); parser->setErrorHandler(handler); // // Get the starting time and kick off the parse of the indicated // file. Catch any exceptions that might propogate out of it. // bool errorOccurred=false; const unsigned long startMillis = XMLPlatformUtils::getCurrentMillis(); try { parser->parse(xmlFile); } catch (const OutOfMemoryException&) { XERCES_STD_QUALIFIER cout << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl; errorOccurred = true; } catch (const XMLException& e) { XERCES_STD_QUALIFIER cout << "\nError during parsing: '" << xmlFile << "'\n" << "Exception message is: \n" << StrX(e.getMessage()) << "\n" << XERCES_STD_QUALIFIER endl; errorOccurred = true; } catch (...) { XERCES_STD_QUALIFIER cout << "\nUnexpected exception during parsing: '" << xmlFile << "'\n"; errorOccurred = true; } const unsigned long endMillis = XMLPlatformUtils::getCurrentMillis(); unsigned long duration = endMillis - startMillis; if (handler->getSawErrors()) errorOccurred = true; XERCES_STD_QUALIFIER cout << "Total tests: " << handler->getTotalTests() << XERCES_STD_QUALIFIER endl; XERCES_STD_QUALIFIER cout << "Failed tests: " << handler->getFailedTests() << XERCES_STD_QUALIFIER endl; XERCES_STD_QUALIFIER cout << "Success rate: " << ((double)(handler->getTotalTests()-handler->getFailedTests()))/(double)handler->getTotalTests()*100 << "%" << XERCES_STD_QUALIFIER endl; XERCES_STD_QUALIFIER cout << "Duration: "; if(duration > 60000) { XERCES_STD_QUALIFIER cout << duration/60000 << ":"; duration=duration % 60000; } if(duration/1000 < 10) XERCES_STD_QUALIFIER cout << "0"; XERCES_STD_QUALIFIER cout << duration/1000 << "." << duration % 1000 << XERCES_STD_QUALIFIER endl; // // Delete the parser itself. Must be done prior to calling Terminate, below. // delete parser; delete handler; // And call the termination method XMLPlatformUtils::Terminate(); if (errorOccurred) return 4; else return 0; } xerces-c-3.1.1/tests/src/XSTSHarness/XSTSHarnessHandlers.hpp0000644000175000017500000000502511241262021022631 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XSTSHarnessHandlers.hpp 804211 2009-08-14 13:18:09Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include "XSTSHarness.hpp" #include #include #include #include XERCES_CPP_NAMESPACE_USE class XSTSTest { public: XSTSTest() : fXSDNames(1) { fTestName[0]=0; fExpectedResult=unknown; fSkipped=false; } XMLCh fTestName[256]; RefVectorOf fXSDNames; XMLURL fXMLName; ValidityOutcome fExpectedResult; XMLURL fSpecReference; bool fSkipped; }; class XSTSHarnessHandlers : public BaseHarnessHandlers { public: // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- XSTSHarnessHandlers(const XMLCh* baseURL); ~XSTSHarnessHandlers(); // ----------------------------------------------------------------------- // Handlers for the SAX ContentHandler interface // ----------------------------------------------------------------------- void startElement(const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname, const Attributes& attrs); void endElement(const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname); private: XSTSTest fCurrentTest; SAX2XMLReader* fParser; BaseErrorHandler fErrorHandler; BaseEntityResolver fEntityResolver; }; xerces-c-3.1.1/tests/src/XSTSHarness/XSTSHarnessHandlers.cpp0000644000175000017500000004112011274567126022644 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XSTSHarnessHandlers.cpp 833057 2009-11-05 15:25:10Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include "XSTSHarnessHandlers.hpp" #include #include #include #include #include #include // --------------------------------------------------------------------------- // XSTSHarnessHandlers: Constructors and Destructor // --------------------------------------------------------------------------- XSTSHarnessHandlers::XSTSHarnessHandlers(const XMLCh* baseURL) : BaseHarnessHandlers(baseURL) { fParser = XMLReaderFactory::createXMLReader(); fParser->setFeature(XMLUni::fgSAX2CoreNameSpaces, true); fParser->setFeature(XMLUni::fgSAX2CoreNameSpacePrefixes, true); fParser->setFeature(XMLUni::fgSAX2CoreValidation, true); fParser->setFeature(XMLUni::fgXercesSchema, true); fParser->setFeature(XMLUni::fgXercesHandleMultipleImports, true); fParser->setFeature(XMLUni::fgXercesSchemaFullChecking, true); fParser->setFeature(XMLUni::fgXercesDynamic, false); fParser->setFeature(XMLUni::fgXercesUseCachedGrammarInParse, true); fParser->setFeature(XMLUni::fgXercesIdentityConstraintChecking, true); fParser->setErrorHandler(&fErrorHandler); ((SAX2XMLReaderImpl*)fParser)->setXMLEntityResolver(&fEntityResolver); } XSTSHarnessHandlers::~XSTSHarnessHandlers() { delete fParser; } static XMLCh urlW3C[]={ chLatin_h, chLatin_t, chLatin_t, chLatin_p, chColon, chForwardSlash, chForwardSlash, chLatin_w, chLatin_w, chLatin_w, chPeriod, chLatin_w, chDigit_3, chPeriod, chLatin_o, chLatin_r, chLatin_g, chForwardSlash, chLatin_X, chLatin_M, chLatin_L, chForwardSlash, chLatin_S, chLatin_c, chLatin_h, chLatin_e, chLatin_m, chLatin_a, chNull }; static XMLCh szTestSuite[]={ chLatin_T, chLatin_e, chLatin_s, chLatin_t, chLatin_S, chLatin_u, chLatin_i, chLatin_t, chLatin_e, chNull }; static XMLCh szTestGroup[]={ chLatin_t, chLatin_e, chLatin_s, chLatin_t, chLatin_G, chLatin_r, chLatin_o, chLatin_u, chLatin_p, chNull }; static XMLCh szSchemaTest[]={ chLatin_s, chLatin_c, chLatin_h, chLatin_e, chLatin_m, chLatin_a, chLatin_T, chLatin_e, chLatin_s, chLatin_t, chNull }; static XMLCh szInstanceTest[]={ chLatin_i, chLatin_n, chLatin_s, chLatin_t, chLatin_a, chLatin_n, chLatin_c, chLatin_e, chLatin_T, chLatin_e, chLatin_s, chLatin_t, chNull }; static XMLCh szDocumentationReference[]={ chLatin_d, chLatin_o, chLatin_c, chLatin_u, chLatin_m, chLatin_e, chLatin_n, chLatin_t, chLatin_a, chLatin_t, chLatin_i, chLatin_o, chLatin_n, chLatin_R, chLatin_e, chLatin_f, chLatin_e, chLatin_r, chLatin_e, chLatin_n, chLatin_c, chLatin_e, chNull }; static XMLCh szSchemaDocument[]={ chLatin_s, chLatin_c, chLatin_h, chLatin_e, chLatin_m, chLatin_a, chLatin_D, chLatin_o, chLatin_c, chLatin_u, chLatin_m, chLatin_e, chLatin_n, chLatin_t, chNull }; static XMLCh szInstanceDocument[]={ chLatin_i, chLatin_n, chLatin_s, chLatin_t, chLatin_a, chLatin_n, chLatin_c, chLatin_e, chLatin_D, chLatin_o, chLatin_c, chLatin_u, chLatin_m, chLatin_e, chLatin_n, chLatin_t, chNull }; static XMLCh szExpected[]={ chLatin_e, chLatin_x, chLatin_p, chLatin_e, chLatin_c, chLatin_t, chLatin_e, chLatin_d, chNull }; static XMLCh szValidity[]={ chLatin_v, chLatin_a, chLatin_l, chLatin_i, chLatin_d, chLatin_i, chLatin_t, chLatin_y, chNull }; static XMLCh szXLINK[]={ chLatin_h, chLatin_t, chLatin_t, chLatin_p, chColon, chForwardSlash, chForwardSlash, chLatin_w, chLatin_w, chLatin_w, chPeriod, chLatin_w, chDigit_3, chPeriod, chLatin_o, chLatin_r, chLatin_g, chForwardSlash, chDigit_1, chDigit_9, chDigit_9, chDigit_9, chForwardSlash, chLatin_x, chLatin_l, chLatin_i, chLatin_n, chLatin_k, chNull }; static XMLCh szHREF[]={ chLatin_h, chLatin_r, chLatin_e, chLatin_f, chNull }; static XMLCh szNAME[]={ chLatin_n, chLatin_a, chLatin_m, chLatin_e, chNull }; static XMLCh szVALID[]={ chLatin_v, chLatin_a, chLatin_l, chLatin_i, chLatin_d, chNull }; static XMLCh szINVALID[]={ chLatin_i, chLatin_n, chLatin_v, chLatin_a, chLatin_l, chLatin_i, chLatin_d, chNull }; static XMLCh szTestSuite2[]={ chLatin_h, chLatin_t, chLatin_t, chLatin_p, chColon, chForwardSlash, chForwardSlash, chLatin_w, chLatin_w, chLatin_w, chPeriod, chLatin_w, chDigit_3, chPeriod, chLatin_o, chLatin_r, chLatin_g, chForwardSlash, chLatin_X, chLatin_M, chLatin_L, chForwardSlash, chDigit_2, chDigit_0, chDigit_0, chDigit_4, chForwardSlash, chLatin_x, chLatin_m, chLatin_l, chDash, chLatin_s, chLatin_c, chLatin_h, chLatin_e, chLatin_m, chLatin_a, chDash, chLatin_t, chLatin_e, chLatin_s, chLatin_t, chDash, chLatin_s, chLatin_u, chLatin_i, chLatin_t, chLatin_e, chForwardSlash, chNull }; static XMLCh szTestSetRef[]={ chLatin_t, chLatin_e, chLatin_s, chLatin_t, chLatin_S, chLatin_e, chLatin_t, chLatin_R, chLatin_e, chLatin_f, chNull }; // --------------------------------------------------------------------------- // XSTSHarnessHandlers: Implementation of the SAX DocumentHandler interface // --------------------------------------------------------------------------- void XSTSHarnessHandlers::startElement(const XMLCh* const uri , const XMLCh* const localname , const XMLCh* const /* qname */ , const Attributes& attrs) { if(XMLString::equals(uri, szTestSuite) || XMLString::equals(uri, szTestSuite2)) { if(XMLString::equals(localname, szTestSetRef)) { XMLURL testSet, backupBase(fBaseURL); testSet.setURL(fBaseURL, attrs.getValue(szXLINK, szHREF)); fBaseURL=testSet; SAX2XMLReader* parser = XMLReaderFactory::createXMLReader(); try { parser->setFeature(XMLUni::fgSAX2CoreNameSpaces, true); parser->setContentHandler(this); parser->setErrorHandler(this); parser->parse(testSet.getURLText()); } catch (...) { } delete parser; fBaseURL=backupBase; } else if(XMLString::equals(localname, szTestGroup)) { fCurrentTest.fExpectedResult=unknown; fCurrentTest.fSpecReference.setURL(urlW3C); fCurrentTest.fTestName[0]=0; fCurrentTest.fXMLName.setURL(dummy); fCurrentTest.fXSDNames.removeAllElements(); StrX x(attrs.getValue(szNAME)); const char* groupName=x.localForm(); if(XMLString::equals(groupName,"addB194") || XMLString::equals(groupName,"particlesZ033_c") || XMLString::equals(groupName,"particlesZ033_d") || XMLString::equals(groupName,"particlesZ033_e") || XMLString::equals(groupName,"particlesZ033_f") || XMLString::equals(groupName,"particlesZ033_g") || XMLString::equals(groupName,"particlesZ035_a") || XMLString::equals(groupName,"particlesZ036_b1") || XMLString::equals(groupName,"particlesZ036_b2") || XMLString::equals(groupName,"particlesZ036_c") || XMLString::equals(groupName,"wildG032") ) fCurrentTest.fSkipped=true; else fCurrentTest.fSkipped=false; fParser->resetCachedGrammarPool(); } else if(XMLString::equals(localname, szDocumentationReference)) { const XMLCh* ref=attrs.getValue(szXLINK, szHREF); if(ref && *ref) fCurrentTest.fSpecReference.setURL(ref); else fCurrentTest.fSpecReference.setURL(dummy); } else if(XMLString::equals(localname, szSchemaTest) || XMLString::equals(localname, szInstanceTest)) { XMLString::copyString(fCurrentTest.fTestName, attrs.getValue(szNAME)); } else if(XMLString::equals(localname, szSchemaDocument)) { fCurrentTest.fXSDNames.addElement(new XMLURL(fBaseURL, attrs.getValue(szXLINK, szHREF))); } else if(XMLString::equals(localname, szInstanceDocument)) { fCurrentTest.fXMLName.setURL(fBaseURL, attrs.getValue(szXLINK, szHREF)); } else if(XMLString::equals(localname, szExpected)) { const XMLCh* validity=attrs.getValue(szValidity); if(XMLString::equals(validity, szVALID)) fCurrentTest.fExpectedResult=valid; else if(XMLString::equals(validity, szINVALID)) fCurrentTest.fExpectedResult=invalid; else fCurrentTest.fExpectedResult=unknown; } } } void XSTSHarnessHandlers::endElement(const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const /*qname*/) { if(XMLString::equals(uri, szTestSuite) || XMLString::equals(uri, szTestSuite2)) { if(XMLString::equals(localname, szSchemaTest)) { if(fCurrentTest.fSkipped) { fTests++; fFailures++; XERCES_STD_QUALIFIER cout << "Test " << StrX(fCurrentTest.fTestName) << " skipped" << XERCES_STD_QUALIFIER endl; return; } bool success=true, fatalFailure=false; try { fErrorHandler.resetErrors(); for(XMLSize_t i=0;iloadGrammar(fCurrentTest.fXSDNames.elementAt(i)->getURLText(), Grammar::SchemaGrammarType, true); success=(success && (grammar!=NULL)); } } catch (const OutOfMemoryException&) { fatalFailure=true; XERCES_STD_QUALIFIER cout << "Test " << StrX(fCurrentTest.fTestName) << " ran out of memory" << XERCES_STD_QUALIFIER endl; success=false; } catch(const XMLException& exc) { XERCES_STD_QUALIFIER cout << "Test " << StrX(fCurrentTest.fTestName) << " threw " << StrX(exc.getMessage()) << XERCES_STD_QUALIFIER endl; success=false; } catch (...) { fatalFailure=true; XERCES_STD_QUALIFIER cout << "Test " << StrX(fCurrentTest.fTestName) << " crashed" << XERCES_STD_QUALIFIER endl; success=false; exit(1); } fTests++; if(fatalFailure) { // skip the rest of the group, as we had problems with the schema itself fCurrentTest.fSkipped=true; fFailures++; for(XMLSize_t i=0;iparse(fCurrentTest.fXMLName.getURLText()); } catch (const OutOfMemoryException&) { fatalFailure=true; XERCES_STD_QUALIFIER cout << "Test " << StrX(fCurrentTest.fTestName) << " ran out of memory" << XERCES_STD_QUALIFIER endl; success=false; } catch(const XMLException& exc) { XERCES_STD_QUALIFIER cout << "Test " << StrX(fCurrentTest.fTestName) << " threw " << StrX(exc.getMessage()) << XERCES_STD_QUALIFIER endl; success=false; } catch (...) { fatalFailure=true; XERCES_STD_QUALIFIER cout << "Test " << StrX(fCurrentTest.fTestName) << " crashed" << XERCES_STD_QUALIFIER endl; success=false; exit(1); } fTests++; if(fatalFailure) { fFailures++; for(XMLSize_t i=0;i #include #include #include XERCES_CPP_NAMESPACE_USE class XMLHarnessHandlers : public BaseHarnessHandlers { public: // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- XMLHarnessHandlers(const XMLCh* baseURL); ~XMLHarnessHandlers(); // ----------------------------------------------------------------------- // Handlers for the SAX ContentHandler interface // ----------------------------------------------------------------------- void startElement(const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname, const Attributes& attrs); void endElement(const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname); private: SAX2XMLReader* fParser; BaseErrorHandler fErrorHandler; RefStackOf fTestBaseURL; }; xerces-c-3.1.1/tests/src/ParserTest/0000755000175000017500000000000011363617314016275 5ustar borisborisxerces-c-3.1.1/tests/src/ParserTest/ParserTest_Parser.cpp0000644000175000017500000010235410522202400022374 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: ParserTest_Parser.cpp 470088 2006-11-01 20:35:12Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include #include #include #include "ParserTest.hpp" #include #include // --------------------------------------------------------------------------- // Local functions // --------------------------------------------------------------------------- static int attrComp(const void* elemOne, const void* elemTwo) { return XMLString::compareString ( (*(XMLAttr**)elemOne)->getName() , (*(XMLAttr**)elemTwo)->getName() ); } // --------------------------------------------------------------------------- // TestParser: Constructors and Destructor // --------------------------------------------------------------------------- TestParser::TestParser() : fDoNamespaces(false) , fInExtSubset(false) , fInsideRoot(false) , fIntDTDOutput(false) , fNestingLevel(0) , fOutputType(OutputType_None) , fShowErrLoc(false) , fShowWarnings(false) , fSurrogate(0) { } TestParser::~TestParser() { } // --------------------------------------------------------------------------- // TestParser: The document handler interfaces // --------------------------------------------------------------------------- void TestParser::docCharacters( const XMLCh* const chars , const unsigned int length , const bool cdataSection) { if (fOutputType == OutputType_Debug) { XERCES_STD_QUALIFIER cout << "Got CHARS:\n Bytes: " << length << ", CDATA?: " << (cdataSection ? "Yes" : "No") << "\n" << " SrcOfs: " << fScanner->getSrcOffset() << "\n" << XERCES_STD_QUALIFIER endl; } else if ((fOutputType == OutputType_JCCanon) || (fOutputType == OutputType_SunCanon)) { showChars(chars, length); } else if (fOutputType == OutputType_XML) { if (cdataSection) XERCES_STD_QUALIFIER cout << ""; } } void TestParser::docComment(const XMLCh* const comment) { if (fOutputType == OutputType_Debug) { XERCES_STD_QUALIFIER cout << "Got document COMMENT:\n " << "Text: \"" << StrX(comment) << "\"\n" << " SrcOfs: " << fScanner->getSrcOffset() << "\n" << XERCES_STD_QUALIFIER endl; } else if (fOutputType == OutputType_XML) { XERCES_STD_QUALIFIER cout << ""; } } void TestParser::docPI( const XMLCh* const target , const XMLCh* const data) { if (fOutputType == OutputType_Debug) { XERCES_STD_QUALIFIER cout << "Got document PI:\n " << "Target: \"" << target << '"'; if (XMLString::stringLen(data)) XERCES_STD_QUALIFIER cout << ", Data: \"" << StrX(data) << "\"\n"; XERCES_STD_QUALIFIER cout << " SrcOfs: " << fScanner->getSrcOffset() << "\n" << XERCES_STD_QUALIFIER endl; } else if ((fOutputType == OutputType_XML) || (fOutputType == OutputType_JCCanon) || (fOutputType == OutputType_SunCanon)) { XERCES_STD_QUALIFIER cout << ""; } } void TestParser::endDocument() { if (fOutputType == OutputType_Debug) { XERCES_STD_QUALIFIER cout << "Got ENDDOCUMENT:\n" << " SrcOfs: " << fScanner->getSrcOffset() << "\n" << XERCES_STD_QUALIFIER endl; } else if (fOutputType == OutputType_SunCanon) { XERCES_STD_QUALIFIER cout << "\r\n"; } } void TestParser::endElement(const XMLElementDecl& elemDecl , const unsigned int uriId , const bool isRoot) { if (fOutputType == OutputType_Debug) { if (fDoNamespaces) { XMLBuffer bufURI; fScanner->getURIText(uriId, bufURI); XERCES_STD_QUALIFIER cout << "Got ENDELEMENT:\n Name: " << "{" << StrX(bufURI.getRawBuffer()) << "}" << StrX(elemDecl.getBaseName()) << XERCES_STD_QUALIFIER endl; } else { XERCES_STD_QUALIFIER cout << "Got ENDELEMENT:\n Name: " << StrX(elemDecl.getFullName()) << XERCES_STD_QUALIFIER endl; } XERCES_STD_QUALIFIER cout << " SrcOfs: " << fScanner->getSrcOffset() << "\n" << XERCES_STD_QUALIFIER endl; } else if ((fOutputType == OutputType_XML) || (fOutputType == OutputType_JCCanon) || (fOutputType == OutputType_SunCanon)) { XERCES_STD_QUALIFIER cout << ""; } // Clear the flag that says we're now inside the root if (isRoot) fInsideRoot = false; } void TestParser::endEntityReference(const XMLEntityDecl& entDecl) { if (fOutputType == OutputType_Debug) { XERCES_STD_QUALIFIER cout << "Got ENDENTITYREF:\n " << "Name: " << StrX(entDecl.getName()) << "\n" << XERCES_STD_QUALIFIER endl; } } void TestParser::ignorableWhitespace(const XMLCh* const chars , const unsigned int length , const bool cdataSection) { if (fOutputType == OutputType_Debug) { XERCES_STD_QUALIFIER cout << "Got WHITESPACE:\n Bytes: " << length << ", CDATA?: " << (cdataSection ? "Yes" : "No") << "\n" << " SrcOfs: " << fScanner->getSrcOffset() << "\n" << XERCES_STD_QUALIFIER endl; } else if (fOutputType == OutputType_XML) { if (cdataSection) XERCES_STD_QUALIFIER cout << ""; } else if ((fOutputType == OutputType_JCCanon) || (fOutputType == OutputType_SunCanon)) { if (!fInsideRoot) return; showChars(chars, length); } } void TestParser::resetDocument() { if (fOutputType == OutputType_Debug) XERCES_STD_QUALIFIER cout << "Got RESETDOCUMENT:\n" << XERCES_STD_QUALIFIER endl; } void TestParser::startDocument() { if (fOutputType == OutputType_Debug) XERCES_STD_QUALIFIER cout << "Got STARTDOCUMENT:\n" << XERCES_STD_QUALIFIER endl; } void TestParser::startElement(const XMLElementDecl& elemDecl , const unsigned int uriId , const XMLCh* const prefixName , const RefVectorOf& attrList , const unsigned int attCount , const bool isEmpty , const bool isRoot) { // Set the flag that says we're now inside the root, if its not empty if (isRoot && !isEmpty) fInsideRoot = true; if (fOutputType == OutputType_Debug) { XMLBuffer bufURI; if (fDoNamespaces) { fScanner->getURIText(uriId, bufURI); XERCES_STD_QUALIFIER cout << "Got STARTELEMENT:\n " << " Name: {" << StrX(bufURI.getRawBuffer()) << "}" << StrX(elemDecl.getBaseName()) << ", AttCount: " << attCount << ", Empty?: " << (isEmpty ? "yes" : "no") << "\n"; } else { XERCES_STD_QUALIFIER cout << "Got STARTELEMENT:\n Name: " << StrX(elemDecl.getFullName()) << ", AttCount: " << attCount << ", Empty?: " << (isEmpty ? "yes" : "no") << "\n"; } XERCES_STD_QUALIFIER cout << " SrcOfs: " << fScanner->getSrcOffset() << "\n"; // If any attributes, then show them if (attCount) { XERCES_STD_QUALIFIER cout << " Attrs: "; for (unsigned int attInd = 0; attInd < attCount; attInd++) { const XMLAttr* curAttr = attrList.elementAt(attInd); if (fDoNamespaces) { fScanner->getURIText(curAttr->getURIId(), bufURI); XERCES_STD_QUALIFIER cout << "Name=" << "{" << StrX(bufURI.getRawBuffer()) << "}" << StrX(curAttr->getName()); } else { XERCES_STD_QUALIFIER cout << "Name=" << StrX(curAttr->getQName()); } if (curAttr->getSpecified()) XERCES_STD_QUALIFIER cout << " (Explicit) "; else XERCES_STD_QUALIFIER cout << " (Defaulted) "; XERCES_STD_QUALIFIER cout << "Value=" << StrX(curAttr->getValue()) << "\n" << " "; } } XERCES_STD_QUALIFIER cout << XERCES_STD_QUALIFIER endl; } else if (fOutputType == OutputType_XML) { XERCES_STD_QUALIFIER cout << "<"; showString(elemDecl.getFullName()); if (attCount) { XERCES_STD_QUALIFIER cout << " "; for (unsigned int index = 0; index < attCount; index++) { const XMLAttr* curAttr = attrList.elementAt(index); showString(curAttr->getQName()); XERCES_STD_QUALIFIER cout << "=\""; showString(curAttr->getValue()); XERCES_STD_QUALIFIER cout << "\""; if (index < attCount-1) XERCES_STD_QUALIFIER cout << " "; } } if (isEmpty) XERCES_STD_QUALIFIER cout << "/>"; else XERCES_STD_QUALIFIER cout << ">"; } else if ((fOutputType == OutputType_JCCanon) || (fOutputType == OutputType_SunCanon)) { XERCES_STD_QUALIFIER cout << "<"; showString(elemDecl.getFullName()); if (attCount) { XERCES_STD_QUALIFIER cout << " "; // // Get a list of attribute pointers. The canonical output // format requires sorted attributes. If we aren't doing // canonical output, then we don't sort it, but we still use // the array. // const XMLAttr** attrTmp = new const XMLAttr*[attCount]; unsigned int index; for (index = 0; index < attCount; index++) attrTmp[index] = attrList.elementAt(index); if (attCount > 1) qsort(attrTmp, attCount, sizeof(XMLAttr*), attrComp); for (index = 0; index < attCount; index++) { const XMLAttr* curAttr = attrTmp[index]; showString(curAttr->getQName()); XERCES_STD_QUALIFIER cout << "=\""; showString(curAttr->getValue()); XERCES_STD_QUALIFIER cout << "\""; if (index < attCount-1) XERCES_STD_QUALIFIER cout << " "; } delete [] attrTmp; } if (isEmpty) { XERCES_STD_QUALIFIER cout << ">"; } else { XERCES_STD_QUALIFIER cout << ">"; } } } void TestParser::startEntityReference(const XMLEntityDecl& entDecl) { if (fOutputType == OutputType_Debug) { XERCES_STD_QUALIFIER cout << "Got STARTENTITY:\n " << "Name: " << StrX(entDecl.getName()) << "\n" << XERCES_STD_QUALIFIER endl; } } void TestParser::XMLDecl(const XMLCh* const versionStr , const XMLCh* const encodingStr , const XMLCh* const standaloneStr , const XMLCh* const autoEncStr) { if (fOutputType == OutputType_Debug) { XERCES_STD_QUALIFIER cout << "Got XMLDECL:\n " << "Version:\"" << StrX(versionStr) << "\"" << " Encoding:\"" << StrX(encodingStr) << "\"" << " Standalone:\"" << StrX(standaloneStr) << "\"" << " Auto Encoding:\"" << StrX(autoEncStr) << "\"" << "\n" << " SrcOfs: " << fScanner->getSrcOffset() << "\n" << XERCES_STD_QUALIFIER endl; } else if (fOutputType == OutputType_XML) { XERCES_STD_QUALIFIER cout << ""; } } // ----------------------------------------------------------------------- // TestParser: The DocTypeHandler interface // ----------------------------------------------------------------------- void TestParser::attDef(const DTDElementDecl& elemDecl , const DTDAttDef& attDef , const bool ignoring) { if (fOutputType == OutputType_Debug) { XERCES_STD_QUALIFIER cout << "Got ATTDEF:\n " << "Name: " << StrX(attDef.getFullName()) << ", Type: " << StrX(XMLAttDef::getAttTypeString(attDef.getType())) << ", DefType: " << StrX(XMLAttDef::getDefAttTypeString(attDef.getDefaultType())); if (XMLString::stringLen(attDef.getValue())) XERCES_STD_QUALIFIER cout << ", Value: \"" << StrX(attDef.getValue()) << '"'; XERCES_STD_QUALIFIER cout << "\n SrcOfs: " << fScanner->getSrcOffset() << "\n" << XERCES_STD_QUALIFIER endl; } else if (fOutputType != OutputType_None) { if (fInExtSubset) return; if (fIntDTDOutput) { XERCES_STD_QUALIFIER cout << StrX(attDef.getFullName()) << " "; if (attDef.getType() == XMLAttDef::Enumeration) { XERCES_STD_QUALIFIER cout << '('; StrX tmpStr(attDef.getEnumeration()); const char* curCh = tmpStr.localForm(); while (*curCh) { while (!isspace(*curCh) && *curCh) XERCES_STD_QUALIFIER cout << *curCh++; if (*curCh) { XERCES_STD_QUALIFIER cout << '|'; curCh++; } } XERCES_STD_QUALIFIER cout << ')'; } else { XERCES_STD_QUALIFIER cout << StrX(XMLAttDef::getAttTypeString(attDef.getType())); } if (XMLString::stringLen(attDef.getValue())) XERCES_STD_QUALIFIER cout << " \"" << StrX(attDef.getValue()) << '"'; if (attDef.getDefaultType() != XMLAttDef::Default) { XERCES_STD_QUALIFIER cout << " " << StrX(XMLAttDef::getDefAttTypeString(attDef.getDefaultType())); } } } } void TestParser::doctypeComment(const XMLCh* const comment) { if (fOutputType == OutputType_Debug) { XERCES_STD_QUALIFIER cout << "Got DTD COMMENT:\n " << "Text: \"" << StrX(comment) << "\"\n" << " SrcOfs: " << fScanner->getSrcOffset() << "\n" << XERCES_STD_QUALIFIER endl; } else if (fOutputType != OutputType_None) { if (fInExtSubset) return; if (fIntDTDOutput) XERCES_STD_QUALIFIER cout << ""; } } void TestParser::doctypeDecl(const DTDElementDecl& elemDecl , const XMLCh* const publicId , const XMLCh* const systemId , const bool hasIntSubset) { if (fOutputType == OutputType_Debug) { XERCES_STD_QUALIFIER cout << "Got DOCTYPE:\n " << "Root: " << StrX(elemDecl.getFullName()); if (XMLString::stringLen(publicId)) XERCES_STD_QUALIFIER cout << ", PUBLIC: " << StrX(publicId); if (XMLString::stringLen(systemId)) XERCES_STD_QUALIFIER cout << ", SYSTEM: " << StrX(systemId); XERCES_STD_QUALIFIER cout << "\n SrcOfs: " << fScanner->getSrcOffset() << "\n" << XERCES_STD_QUALIFIER endl; } else if (fOutputType != OutputType_None) { if (fIntDTDOutput) { XERCES_STD_QUALIFIER cout << ""; } } } void TestParser::doctypePI( const XMLCh* const target , const XMLCh* const data) { if (fOutputType == OutputType_Debug) { XERCES_STD_QUALIFIER cout << "Got DTD PI:\n " << "Target: \"" << StrX(target) << '"'; if (XMLString::stringLen(data)) XERCES_STD_QUALIFIER cout << ", Data: \"" << StrX(data) << '"'; XERCES_STD_QUALIFIER cout << " SrcOfs: " << fScanner->getSrcOffset() << "\n" << XERCES_STD_QUALIFIER endl; } else if (fOutputType != OutputType_None) { if (fInExtSubset) return; if (fIntDTDOutput) { XERCES_STD_QUALIFIER cout << ""; } } } void TestParser::doctypeWhitespace( const XMLCh* const chars , const unsigned int length) { if (fOutputType == OutputType_Debug) { XERCES_STD_QUALIFIER cout << "Got DTD Spaces:\n Bytes: " << length << "\n" << " SrcOfs: " << fScanner->getSrcOffset() << "\n" << XERCES_STD_QUALIFIER endl; } else if (fOutputType != OutputType_None) { if (fInExtSubset) return; if (fIntDTDOutput) showChars(chars, length); } } void TestParser::elementDecl(const DTDElementDecl& decl , const bool isIgnored) { if (fOutputType == OutputType_Debug) { XERCES_STD_QUALIFIER cout << "Got ELEMENT DECL:\n " << "Name: " << StrX(decl.getFullName()); if (isIgnored) XERCES_STD_QUALIFIER cout << " (Ignored)"; XERCES_STD_QUALIFIER cout << ", Content: " << StrX(decl.getFormattedContentModel()) << "\n SrcOfs: " << fScanner->getSrcOffset() << "\n" << XERCES_STD_QUALIFIER endl; } else if (fOutputType != OutputType_None) { if (fInExtSubset) return; if (fIntDTDOutput) { XERCES_STD_QUALIFIER cout << ""; } } } void TestParser::endAttList(const DTDElementDecl& elemDecl) { if (fOutputType == OutputType_Debug) { XERCES_STD_QUALIFIER cout << "Got ENDATTLIST:\n " << "Name: " << StrX(elemDecl.getFullName()) << "\n" << " SrcOfs: " << fScanner->getSrcOffset() << "\n" << XERCES_STD_QUALIFIER endl; } else if (fOutputType != OutputType_None) { if (fInExtSubset) return; if (fIntDTDOutput) XERCES_STD_QUALIFIER cout << ">"; } } void TestParser::endIntSubset() { if (fOutputType == OutputType_Debug) { XERCES_STD_QUALIFIER cout << "Got ENDINTSUBSET\n" << " SrcOfs: " << fScanner->getSrcOffset() << "\n" << XERCES_STD_QUALIFIER endl; } else if (fOutputType != OutputType_None) { if (fIntDTDOutput) XERCES_STD_QUALIFIER cout << "]>"; } } void TestParser::endExtSubset() { fInExtSubset = false; if (fOutputType == OutputType_Debug) XERCES_STD_QUALIFIER cout << "Got ENDEXTSUBSET\n" << XERCES_STD_QUALIFIER endl; } void TestParser::entityDecl(const DTDEntityDecl& entityDecl , const bool isPEDecl , const bool isIgnored) { if (fOutputType == OutputType_Debug) { XERCES_STD_QUALIFIER cout << "Got ENTITYDECL:\n " << "Name: " << StrX(entityDecl.getName()) << (isPEDecl ? " [Parameter Entity]" : " [General Entity]") << "\n" << XERCES_STD_QUALIFIER endl; } else if (fOutputType != OutputType_None) { if (fInExtSubset) return; if (fIntDTDOutput) { XERCES_STD_QUALIFIER cout << ""; } } } void TestParser::resetDocType() { if (fOutputType == OutputType_Debug) XERCES_STD_QUALIFIER cout << "Got RESETDOCTYPE:\n" << XERCES_STD_QUALIFIER endl; } void TestParser::notationDecl( const XMLNotationDecl& notDecl , const bool isIgnored) { if (fOutputType == OutputType_Debug) { XERCES_STD_QUALIFIER cout << "Got NOTATIONDECL:\n " << "Name: " << StrX(notDecl.getName()) << XERCES_STD_QUALIFIER endl; } else if (fOutputType != OutputType_None) { if (fInExtSubset) return; if (fIntDTDOutput) { XERCES_STD_QUALIFIER cout << ""; } } } void TestParser::startAttList(const DTDElementDecl& elemDecl) { if (fOutputType == OutputType_Debug) { XERCES_STD_QUALIFIER cout << "Got STARTATTLIST:\n " << "Name: " << StrX(elemDecl.getFullName()) << "\n" << XERCES_STD_QUALIFIER endl; } else if (fOutputType != OutputType_None) { if (fInExtSubset) return; if (fIntDTDOutput) XERCES_STD_QUALIFIER cout << "= 0xD800) && (tmpVal <= 0xDBFF)) { if (index == length) { XERCES_STD_QUALIFIER cout << "Missing trailing surrogate\n" << XERCES_STD_QUALIFIER endl; break; } tmpVal = ((tmpVal - 0xD800) << 10) + ((chars[index] - 0xDC00) + 0x10000); index++; } // Figure out how many bytes we'll kick out unsigned int outBytes; if (tmpVal < 0x80) outBytes = 1; else if (tmpVal < 0x800) outBytes = 2; else if (tmpVal < 0x10000) outBytes = 3; else if (tmpVal < 0x200000) outBytes = 4; else if (tmpVal < 0x4000000) outBytes = 5; else { outBytes = 6; if (tmpVal & 0x80000000) { outBytes = 2; tmpVal = 0xFFFD; } } // Get the chars into a temp buffer in the right order char tmpOutChars[6]; unsigned int outIndex = outBytes; switch(outBytes) { case 6 : tmpOutChars[--outIndex] = char((tmpVal | 0x80) & 0xBF); tmpVal >>= 6; case 5 : tmpOutChars[--outIndex] = char((tmpVal | 0x80) & 0xBF); tmpVal >>= 6; case 4 : tmpOutChars[--outIndex] = char((tmpVal | 0x80) & 0xBF); tmpVal >>= 6; case 3 : tmpOutChars[--outIndex] = char((tmpVal | 0x80) & 0xBF); tmpVal >>= 6; case 2 : tmpOutChars[--outIndex] = char((tmpVal | 0x80) & 0xBF); tmpVal >>= 6; case 1 : tmpOutChars[--outIndex] = char(tmpVal | FirstByteMark[outBytes]); } // And spit them out for (outIndex = 0; outIndex < outBytes; outIndex++) showChar(tmpOutChars[outIndex], doCan); } } void TestParser::showChar(const char toShow, const bool doCan) { if (doCan) { if (toShow == chLF) XERCES_STD_QUALIFIER cout << " "; else if (toShow == chHTab) XERCES_STD_QUALIFIER cout << " "; else if (toShow == chCR) XERCES_STD_QUALIFIER cout << " "; else if (toShow == chSingleQuote) XERCES_STD_QUALIFIER cout << "'"; else if (toShow == chAmpersand) XERCES_STD_QUALIFIER cout << "&"; else if (toShow == chDoubleQuote) XERCES_STD_QUALIFIER cout << """; else if (toShow == chOpenAngle) XERCES_STD_QUALIFIER cout << "<"; else if (toShow == chCloseAngle) XERCES_STD_QUALIFIER cout << ">"; else XERCES_STD_QUALIFIER cout << toShow; } else { XERCES_STD_QUALIFIER cout << toShow; } } void TestParser::showIds(const XMLCh* const publicId, const XMLCh* const systemId) { if (XMLString::stringLen(publicId) || XMLString::stringLen(systemId)) { if (!XMLString::stringLen(publicId)) { XERCES_STD_QUALIFIER cout << " SYSTEM '" << StrX(systemId) << "'"; } else { XERCES_STD_QUALIFIER cout << " PUBLIC '" << StrX(publicId) << "'"; if (systemId) XERCES_STD_QUALIFIER cout << " '" << StrX(systemId) << "'"; } } } void TestParser::showString(const XMLCh* const toShow) { showChars(toShow, XMLString::stringLen(toShow)); } xerces-c-3.1.1/tests/src/ParserTest/ParserTest.cpp0000644000175000017500000001576210522202400021066 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: ParserTest.cpp 470088 2006-11-01 20:35:12Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include "ParserTest.hpp" // --------------------------------------------------------------------------- // Program entry point // --------------------------------------------------------------------------- int main(int argC, char** argV) { // Init the XML platform try { XMLPlatformUtils::Initialize(); } catch(const XMLException& toCatch) { XERCES_STD_QUALIFIER cout << "Error during platform init! Message:\n" << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl; return 1; } // // Create our test parser object. This object implements the internal // event APIs and is plugged into the scanner. // TestParser parserTest; // Figure out the parameters bool doValidation = false; bool doNamespaces = false; bool keepGoing = false; XMLCh* urlPath = 0; for (int index = 1; index < argC; index++) { if (!XMLString::compareIString(argV[index], "/Debug")) parserTest.setOutputType(OutputType_Debug); else if (!XMLString::compareIString(argV[index], "/Validate")) doValidation = true; else if (!XMLString::compareIString(argV[index], "/Namespaces")) { doNamespaces = true; parserTest.setDoNamespaces(true); } else if (!XMLString::compareIString(argV[index], "/XML")) parserTest.setOutputType(OutputType_XML); else if (!XMLString::compareIString(argV[index], "/IntDTD")) parserTest.setShowIntDTD(true); else if (!XMLString::compareIString(argV[index], "/ShowWarnings")) parserTest.setShowWarnings(true); else if (!XMLString::compareIString(argV[index], "/ShowErrLoc")) parserTest.setShowErrLoc(true); else if (!XMLString::compareIString(argV[index], "/JCCanon")) parserTest.setOutputType(OutputType_JCCanon); else if (!XMLString::compareIString(argV[index], "/SunCanon")) parserTest.setOutputType(OutputType_SunCanon); else if (!XMLString::compareIString(argV[index], "/KeepGoing")) keepGoing = true; else if (!XMLString::compareNIString(argV[index], "/URL=", 5)) urlPath = XMLString::transcode(&argV[index][5]); else XERCES_STD_QUALIFIER cout << "Unknown parameter: " << argV[index] << XERCES_STD_QUALIFIER endl; } // We have to have a URL to work on if (!urlPath) { XERCES_STD_QUALIFIER cout << "A URL must be provided, /URL=xxxx" << XERCES_STD_QUALIFIER endl; return 1; } // // Create a validator of the correct type so that we can install it // on the scanner. // // Later, when Schema validators exist, we'll have a parameter // to select one or the other // XMLValidator* validator = 0; DTDValidator* dtdVal = new DTDValidator(&parserTest); validator = dtdVal; // And now create the scanner and give it all the handlers XMLScanner scanner ( &parserTest , &parserTest , 0 , &parserTest , validator ); // Set the scanner flags that we were told to scanner.setDoValidation(doValidation); scanner.setDoNamespaces(doNamespaces); scanner.setExitOnFirstFatal(!keepGoing); // Tell the parser about the scanner parserTest.setScanner(&scanner); try { scanner.scanDocument(urlPath); } catch(const XMLException& toCatch) { XERCES_STD_QUALIFIER cout << "Exception during scan:\n " << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl; } // And call the termination method XMLPlatformUtils::Terminate(); return 0; } // --------------------------------------------------------------------------- // StrX: Private helper methods // --------------------------------------------------------------------------- void StrX::transcode(const XMLCh* const toTranscode, const unsigned int len) { // Short circuit if its a null pointer if (!toTranscode || (!toTranscode[0])) { fLocalForm = new char[1]; fLocalForm[0] = 0; return; } // See if our XMLCh and wchar_t as the same on this platform const bool isSameSize = (sizeof(XMLCh) == sizeof(wchar_t)); // // Get the actual number of chars. If the passed len is zero, its null // terminated. Else we have to use the len. // wchar_t realLen = (wchar_t)len; if (!realLen) { // // We cannot just assume we can use wcslen() because we don't know // if our XMLCh is the same as wchar_t on this platform. // const XMLCh* tmpPtr = toTranscode; while (*(tmpPtr++)) realLen++; } // // If either the passed length was non-zero or our char sizes are not // same, we have to use a temp buffer. Since this is common in these // samples, we just do it anyway. // wchar_t* tmpSource = new wchar_t[realLen + 1]; if (isSameSize) { memcpy(tmpSource, toTranscode, realLen * sizeof(wchar_t)); } else { for (unsigned int index = 0; index < realLen; index++) tmpSource[index] = (wchar_t)toTranscode[index]; } tmpSource[realLen] = 0; // See now many chars we need to transcode this guy const unsigned int targetLen = ::wcstombs(0, tmpSource, 0); // Allocate out storage member fLocalForm = new char[targetLen + 1]; // // And transcode our temp source buffer to the local buffer. Cap it // off since the converter won't do it (because the null is beyond // where the target will fill up.) // ::wcstombs(fLocalForm, tmpSource, targetLen); fLocalForm[targetLen] = 0; // Don't forget to delete our temp buffer delete [] tmpSource; } xerces-c-3.1.1/tests/src/ParserTest/ParserTest.hpp0000644000175000017500000000645410522202400021071 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: ParserTest.hpp 470088 2006-11-01 20:35:12Z amassari $ */ // --------------------------------------------------------------------------- // Some types used by this program // --------------------------------------------------------------------------- enum OutputTypes { OutputType_None , OutputType_Debug , OutputType_JCCanon , OutputType_SunCanon , OutputType_XML }; // --------------------------------------------------------------------------- // Includes that everyone uses inside this program // --------------------------------------------------------------------------- #include "ParserTest_Parser.hpp" #include #include #if defined(XERCES_NEW_IOSTREAMS) #include #else #include #endif // --------------------------------------------------------------------------- // This is a simple class that lets us do easy (though not terribly efficient) // trancoding of XMLCh data to local code page for display. // --------------------------------------------------------------------------- class StrX { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- StrX(const XMLCh* const toTranscode, const unsigned int len = 0) : fLocalForm(0) { // Call the private transcoding method transcode(toTranscode, len); } ~StrX() { XMLString::release(&fLocalForm); } // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const char* localForm() const { return fLocalForm; } private : // ----------------------------------------------------------------------- // Private helper methods // ----------------------------------------------------------------------- void transcode (const XMLCh* const toTranscode, const unsigned int len); // ----------------------------------------------------------------------- // Private data members // // fLocalForm // This is the local code page form of the string. // ----------------------------------------------------------------------- char* fLocalForm; }; inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump) { target << toDump.localForm(); return target; } xerces-c-3.1.1/tests/src/ParserTest/ParserTest_Parser.hpp0000644000175000017500000002402110522202400022373 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: ParserTest_Parser.hpp 470088 2006-11-01 20:35:12Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include XERCES_CPP_NAMESPACE_USE class TestParser : public XMLDocumentHandler, public XMLErrorReporter, public DocTypeHandler { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- TestParser(); ~TestParser(); // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- void setDoNamespaces(const bool state); void setScanner(XMLScanner* const state); void setOutputType(const OutputTypes outType); void setShowErrLoc(const bool state); void setShowIntDTD(const bool state); void setShowWarnings(const bool state); // ----------------------------------------------------------------------- // The XMLDocumentHandler interface // ----------------------------------------------------------------------- virtual void docCharacters ( const XMLCh* const chars , const unsigned int length , const bool cdataSection ); virtual void docComment ( const XMLCh* const comment ); virtual void docPI ( const XMLCh* const target , const XMLCh* const data ); virtual void endDocument(); virtual void endElement ( const XMLElementDecl& elemDecl , const unsigned int uriId , const bool isRoot ); virtual void endEntityReference ( const XMLEntityDecl& entDecl ); virtual void ignorableWhitespace ( const XMLCh* const chars , const unsigned int length , const bool cdataSection ); virtual void resetDocument(); virtual void startDocument(); virtual void startElement ( const XMLElementDecl& elemDecl , const unsigned int elemURIId , const XMLCh* const elemPrefix , const RefVectorOf& attrList , const unsigned int attrCount , const bool isEmpty , const bool isRoot ); virtual void startEntityReference ( const XMLEntityDecl& entDecl ); virtual void XMLDecl ( const XMLCh* const versionStr , const XMLCh* const encodingStr , const XMLCh* const standaloneStr , const XMLCh* const autoEncStr ); // ----------------------------------------------------------------------- // Implementation of the XMLErrorReporter interface // ----------------------------------------------------------------------- virtual void error ( const unsigned int errCode , const XMLCh* const msgDomain , const XMLErrorReporter::ErrTypes type , const XMLCh* const text , const XMLCh* const systemId , const XMLCh* const publicId , const unsigned int lineNum , const unsigned int colNum ); virtual void resetErrors(); // ----------------------------------------------------------------------- // The document type handler virtual handler interface // ----------------------------------------------------------------------- virtual void attDef ( const DTDElementDecl& elemDecl , const DTDAttDef& attDef , const bool ignoring ); virtual void doctypeComment ( const XMLCh* const comment ); virtual void doctypeDecl ( const DTDElementDecl& elemDecl , const XMLCh* const publicId , const XMLCh* const systemId , const bool hasIntSubset ); virtual void doctypePI ( const XMLCh* const target , const XMLCh* const data ); virtual void doctypeWhitespace ( const XMLCh* const chars , const unsigned int length ); virtual void elementDecl ( const DTDElementDecl& decl , const bool isIgnored ); virtual void endAttList ( const DTDElementDecl& elemDecl ); virtual void endIntSubset(); virtual void endExtSubset(); virtual void entityDecl ( const DTDEntityDecl& entityDecl , const bool isPEDecl , const bool isIgnored ); virtual void resetDocType(); virtual void notationDecl ( const XMLNotationDecl& notDecl , const bool isIgnored ); virtual void startAttList ( const DTDElementDecl& elemDecl ); virtual void startIntSubset(); virtual void startExtSubset(); virtual void TextDecl ( const XMLCh* const versionStr , const XMLCh* const encodingStr ); private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- TestParser(const TestParser&); void operator=(const TestParser&); // ----------------------------------------------------------------------- // Private helper methods // ----------------------------------------------------------------------- void showChar(const char toShow, const bool doCan); void showChars ( const XMLCh* const chars , const unsigned int length ); void showIds(const XMLCh* const publicId, const XMLCh* const systemId); void showString(const XMLCh* const toShow); // ----------------------------------------------------------------------- // Data members // // fDoNamespaces // Indicates whether the user wanted us to be namespace aware or // not. // // fInsideRoot // This is set once the first start element event is seen, and cleared // when the root element ends. Its used to support the canonical // format used by the Bosak tests. Basically it allows us to supress // the whitespace outside the internal subset but before the root // element. // // fInExtSubSet // Indicates when we are in the external subset, so that we don't // display that part. // // fIntDTDOutput // Indicates whether the data from the internal DTD subset is // output or not (only used if fXMLOutput is true.) // // fNestingLevel // This is used to handle tabbing over nested elements. Each start // element bumps it up, and each end element bumps it down. // // fOutputType // This flag controls the primary style of output used. It can // be set to do James Clark type canonical output, Sun style // canonical output, debug output, regular XML output, or none. // // fScanner // The scanner we created to do the scanning. // // fShowErrLoc // This flag turns on the special display mode that is used for // negative test testing. It puts out a special, condensed display // of error info that can be compared in subsequent runs to check // for changes. If its turned on, it forces the output type to // 'none'. // // fShowWarnings // Indicates whether warning messages should be displayed or not. // // fSurrogate // Indicates that we got a surrogate char, so we have to wait for // the next char before we can output it. Its zero when not. // ----------------------------------------------------------------------- bool fDoNamespaces; bool fInExtSubset; bool fInsideRoot; bool fIntDTDOutput; unsigned int fNestingLevel; OutputTypes fOutputType; XMLScanner* fScanner; bool fShowErrLoc; bool fShowWarnings; XMLCh fSurrogate; }; // --------------------------------------------------------------------------- // TestParser: Setter Methods // --------------------------------------------------------------------------- inline void TestParser::setDoNamespaces(const bool state) { fDoNamespaces = state; } inline void TestParser::setScanner(XMLScanner* const ourScanner) { fScanner = ourScanner; } inline void TestParser::setOutputType(const OutputTypes outType) { fOutputType = outType; } inline void TestParser::setShowIntDTD(const bool state) { fIntDTDOutput = state; } inline void TestParser::setShowWarnings(const bool state) { fShowWarnings = state; } inline void TestParser::setShowErrLoc(const bool state) { fShowErrLoc = state; } xerces-c-3.1.1/tests/src/NetAccessorTest/0000755000175000017500000000000011363617314017252 5ustar borisborisxerces-c-3.1.1/tests/src/NetAccessorTest/NetAccessorTest.cpp0000644000175000017500000001050410522202400023005 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: NetAccessorTest.cpp 470088 2006-11-01 20:35:12Z amassari $ * */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #if defined(XERCES_NEW_IOSTREAMS) #include #else #include #endif XERCES_CPP_NAMESPACE_USE inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& os, const XMLCh* xmlStr) { char* transcoded = XMLString::transcode(xmlStr); os << transcoded; XMLString::release(&transcoded); return os; } void exercise(BinInputStream& stream) { static float percents[] = { 1.0, 0.5, 0.25, 0.1, 0.15, 0.113, 0.333, 0.0015, 0.0013 }; int numPercents = sizeof(percents) / sizeof(float); const unsigned int bufferMax = 4096; XMLByte buffer[bufferMax]; int iteration = 0; unsigned int bytesRead = 0; do { // Calculate a percentage of our maximum buffer size, going through // them round-robin float percent = percents[iteration % numPercents]; unsigned int bufCnt = (unsigned int)(bufferMax * percent); // Check to make sure we didn't go out of bounds if (bufCnt <= 0) bufCnt = 1; if (bufCnt > bufferMax) bufCnt = bufferMax; // Read bytes into our buffer bytesRead = stream.readBytes(buffer, bufCnt); //XERCES_STD_QUALIFIER cerr << "Read " << bytesRead << " bytes into a " << bufCnt << " byte buffer\n"; if (bytesRead > 0) { // Write the data to standard out XERCES_STD_QUALIFIER cout.write((char*)buffer, bytesRead); } ++iteration; } while (bytesRead > 0); } // --------------------------------------------------------------------------- // Program entry point // --------------------------------------------------------------------------- int main(int argc, char** argv) { // Init the XML platform try { XMLPlatformUtils::Initialize(); } catch(const XMLException& toCatch) { XERCES_STD_QUALIFIER cout << "Error during platform init! Message:\n" << toCatch.getMessage() << XERCES_STD_QUALIFIER endl; return 1; } // Look for our one and only parameter if (argc != 2) { XERCES_STD_QUALIFIER cerr << "Usage: NetAccessorTest url\n" "\n" "This test reads data from the given url and writes the result\n" "to standard output.\n" "\n" "A variety of buffer sizes is are used during the test.\n" "\n" ; exit(1); } // Get the URL char* url = argv[1]; // Do the test try { XMLURL xmlURL(url); // Get the netaccessor XMLNetAccessor* na = XMLPlatformUtils::fgNetAccessor; if (na == 0) { XERCES_STD_QUALIFIER cerr << "No netaccessor is available. Aborting.\n"; exit(2); } // Build a binary input stream BinInputStream* is = na->makeNew(xmlURL); if (is == 0) { XERCES_STD_QUALIFIER cerr << "No binary input stream created. Aborting.\n"; exit(3); } // Exercise the inputstream exercise(*is); // Delete the is delete is; } catch(const XMLException& toCatch) { XERCES_STD_QUALIFIER cout << "Exception during test:\n " << toCatch.getMessage() << XERCES_STD_QUALIFIER endl; } // And call the termination method XMLPlatformUtils::Terminate(); return 0; } xerces-c-3.1.1/tests/src/XSValueTest/0000755000175000017500000000000011363617314016370 5ustar borisborisxerces-c-3.1.1/tests/src/XSValueTest/XSValueTest.cpp0000644000175000017500000105063511245233101021260 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XSValueTest.cpp 807999 2009-08-26 13:18:57Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include "XSValueTest.hpp" #include #include #if HAVE_CONFIG_H # include #endif #if defined(XERCES_NEW_IOSTREAMS) #include #else #include #endif #include #include #include #include static const char* null_string=0; static const bool EXP_RET_VALID_TRUE = true; static const bool EXP_RET_VALUE_TRUE = true; static const bool EXP_RET_CANREP_TRUE = true; static const bool EXP_RET_VALID_FALSE = false; static const bool EXP_RET_VALUE_FALSE = false; static const bool EXP_RET_CANREP_FALSE = false; static const XSValue::Status DONT_CARE = XSValue::st_UnknownType; static bool errSeen = false; static const XMLCh* getDataTypeString(const XSValue::DataType dt) { switch(dt) { case XSValue::dt_string: return SchemaSymbols::fgDT_STRING; case XSValue::dt_boolean: return SchemaSymbols::fgDT_BOOLEAN; case XSValue::dt_decimal: return SchemaSymbols::fgDT_DECIMAL; case XSValue::dt_float: return SchemaSymbols::fgDT_FLOAT; case XSValue::dt_double: return SchemaSymbols::fgDT_DOUBLE; case XSValue::dt_duration: return SchemaSymbols::fgDT_DURATION; case XSValue::dt_dateTime: return SchemaSymbols::fgDT_DATETIME; case XSValue::dt_time: return SchemaSymbols::fgDT_TIME; case XSValue::dt_date: return SchemaSymbols::fgDT_DATE; case XSValue::dt_gYearMonth: return SchemaSymbols::fgDT_YEARMONTH; case XSValue::dt_gYear: return SchemaSymbols::fgDT_YEAR; case XSValue::dt_gMonthDay: return SchemaSymbols::fgDT_MONTHDAY; case XSValue::dt_gDay: return SchemaSymbols::fgDT_DAY; case XSValue::dt_gMonth: return SchemaSymbols::fgDT_MONTH; case XSValue::dt_hexBinary: return SchemaSymbols::fgDT_HEXBINARY; case XSValue::dt_base64Binary: return SchemaSymbols::fgDT_BASE64BINARY; case XSValue::dt_anyURI: return SchemaSymbols::fgDT_ANYURI; case XSValue::dt_QName: return SchemaSymbols::fgDT_QNAME; case XSValue::dt_NOTATION: return XMLUni::fgNotationString; case XSValue::dt_normalizedString: return SchemaSymbols::fgDT_NORMALIZEDSTRING; case XSValue::dt_token: return SchemaSymbols::fgDT_TOKEN; case XSValue::dt_language: return SchemaSymbols::fgDT_LANGUAGE; case XSValue::dt_NMTOKEN: return XMLUni::fgNmTokenString; case XSValue::dt_NMTOKENS: return XMLUni::fgNmTokensString; case XSValue::dt_Name: return SchemaSymbols::fgDT_NAME; case XSValue::dt_NCName: return SchemaSymbols::fgDT_NCNAME; case XSValue::dt_ID: return XMLUni::fgIDString; case XSValue::dt_IDREF: return XMLUni::fgIDRefString; case XSValue::dt_IDREFS: return XMLUni::fgIDRefsString; case XSValue::dt_ENTITY: return XMLUni::fgEntityString; case XSValue::dt_ENTITIES: return XMLUni::fgEntitiesString; case XSValue::dt_integer: return SchemaSymbols::fgDT_INTEGER; case XSValue::dt_nonPositiveInteger: return SchemaSymbols::fgDT_NONPOSITIVEINTEGER; case XSValue::dt_negativeInteger: return SchemaSymbols::fgDT_NEGATIVEINTEGER; case XSValue::dt_long: return SchemaSymbols::fgDT_LONG; case XSValue::dt_int: return SchemaSymbols::fgDT_INT; case XSValue::dt_short: return SchemaSymbols::fgDT_SHORT; case XSValue::dt_byte: return SchemaSymbols::fgDT_BYTE; case XSValue::dt_nonNegativeInteger: return SchemaSymbols::fgDT_NONNEGATIVEINTEGER; case XSValue::dt_unsignedLong: return SchemaSymbols::fgDT_ULONG; case XSValue::dt_unsignedInt: return SchemaSymbols::fgDT_UINT; case XSValue::dt_unsignedShort: return SchemaSymbols::fgDT_USHORT; case XSValue::dt_unsignedByte: return SchemaSymbols::fgDT_UBYTE; case XSValue::dt_positiveInteger: return SchemaSymbols::fgDT_POSITIVEINTEGER; default: return 0; } } static bool compareActualValue( const XSValue::DataType datatype , const XSValue::XSValue_Data actValue , const XSValue::XSValue_Data expValue) { switch (datatype) { case XSValue::dt_boolean: if (actValue.fValue.f_bool == expValue.fValue.f_bool) return true; printf("ACTVALUE_TEST Unexpected XSValue for dt_boolean, got %d expected %d\n", actValue.fValue.f_bool, expValue.fValue.f_bool); return false; case XSValue::dt_decimal: if (fabs(actValue.fValue.f_double - expValue.fValue.f_double) < fabs(actValue.fValue.f_double)/1000) return true; printf("ACTVALUE_TEST Unexpected XSValue for datatype %s, got %f expected %f\n", StrX(getDataTypeString(datatype)).localForm(), actValue.fValue.f_double, expValue.fValue.f_double); return false; case XSValue::dt_double: if (actValue.fValue.f_doubleType.f_doubleEnum == XSValue::DoubleFloatType_Normal) { if (fabs(actValue.fValue.f_double - expValue.fValue.f_double) < fabs(actValue.fValue.f_double)/1000) return true; printf("ACTVALUE_TEST Unexpected XSValue for datatype %s, got %f expected %f\n", StrX(getDataTypeString(datatype)).localForm(), actValue.fValue.f_double, expValue.fValue.f_double); return false; } else { if (actValue.fValue.f_doubleType.f_doubleEnum == expValue.fValue.f_doubleType.f_doubleEnum) return true; printf("ACTVALUE_TEST Unexpected XSValue enum for datatype %s, got %d expected %d\n", StrX(getDataTypeString(datatype)).localForm(), actValue.fValue.f_doubleType.f_doubleEnum, expValue.fValue.f_doubleType.f_doubleEnum); return false; } case XSValue::dt_float: if (actValue.fValue.f_floatType.f_floatEnum == XSValue::DoubleFloatType_Normal) { if (fabs(actValue.fValue.f_float - expValue.fValue.f_float) < fabs(actValue.fValue.f_float)/1000) return true; printf("ACTVALUE_TEST Unexpected XSValue for datatype %s, got %f expected %f\n", StrX(getDataTypeString(datatype)).localForm(), actValue.fValue.f_float, expValue.fValue.f_float); return false; } else { if (actValue.fValue.f_floatType.f_floatEnum == expValue.fValue.f_floatType.f_floatEnum) return true; printf("ACTVALUE_TEST Unexpected XSValue enum for datatype %s, got %d expected %d\n", StrX(getDataTypeString(datatype)).localForm(), actValue.fValue.f_floatType.f_floatEnum, expValue.fValue.f_floatType.f_floatEnum); return false; } case XSValue::dt_duration: case XSValue::dt_dateTime: case XSValue::dt_time: case XSValue::dt_date: case XSValue::dt_gYearMonth: case XSValue::dt_gYear: case XSValue::dt_gMonthDay: case XSValue::dt_gDay: case XSValue::dt_gMonth: if (actValue.fValue.f_datetime.f_year == expValue.fValue.f_datetime.f_year && actValue.fValue.f_datetime.f_month == expValue.fValue.f_datetime.f_month && actValue.fValue.f_datetime.f_day == expValue.fValue.f_datetime.f_day && actValue.fValue.f_datetime.f_hour == expValue.fValue.f_datetime.f_hour && actValue.fValue.f_datetime.f_min == expValue.fValue.f_datetime.f_min && actValue.fValue.f_datetime.f_second == expValue.fValue.f_datetime.f_second && (fabs(actValue.fValue.f_datetime.f_milisec - expValue.fValue.f_datetime.f_milisec) < 0.01)) return true; printf("ACTVALUE_TEST Unexpected %s XSValue\n", StrX(getDataTypeString(datatype)).localForm()); printf(" Actual year = %d, month = %d, day = %d, hour = %d, min = %d, second = %d, milisec = %f\n", actValue.fValue.f_datetime.f_year, actValue.fValue.f_datetime.f_month, actValue.fValue.f_datetime.f_day, actValue.fValue.f_datetime.f_hour, actValue.fValue.f_datetime.f_min, actValue.fValue.f_datetime.f_second, actValue.fValue.f_datetime.f_milisec); printf(" Expect year = %d, month = %d, day = %d, hour = %d, min = %d, second = %d, milisec = %f\n", expValue.fValue.f_datetime.f_year, expValue.fValue.f_datetime.f_month, expValue.fValue.f_datetime.f_day, expValue.fValue.f_datetime.f_hour, expValue.fValue.f_datetime.f_min, expValue.fValue.f_datetime.f_second, expValue.fValue.f_datetime.f_milisec); return false; case XSValue::dt_hexBinary: // in the tests in this file the hexBinary data is always 2 long... if (actValue.fValue.f_byteVal[0] == expValue.fValue.f_byteVal[0] && actValue.fValue.f_byteVal[1] == expValue.fValue.f_byteVal[1]) return true; printf("ACTVALUE_TEST Unexpected hexBinary value\n"); printf(" Actual Value = %x:%x\n",actValue.fValue.f_byteVal[0],actValue.fValue.f_byteVal[1]); printf(" Expect Value = %x:%x\n",expValue.fValue.f_byteVal[0],expValue.fValue.f_byteVal[1]); return false; case XSValue::dt_base64Binary: // in the tests in this file the base64Binary data is always 9 long (XMLByte[9]) // however, a zero byte is used to indicate when the smaller data stream is empty { for (unsigned int i=0; i<9; i++) { if (!expValue.fValue.f_byteVal[i]) return true; if (actValue.fValue.f_byteVal[i] != expValue.fValue.f_byteVal[i]) { printf("ACTVALUE_TEST Unexpected base64Binary value for byte %d\n", i); printf(" Actual Value = %x\n",actValue.fValue.f_byteVal[i]); printf(" Expect Value = %x\n",expValue.fValue.f_byteVal[i]); return false; } } return true; } case XSValue::dt_string: case XSValue::dt_anyURI: case XSValue::dt_QName: case XSValue::dt_NOTATION: case XSValue::dt_normalizedString: case XSValue::dt_token: case XSValue::dt_language: case XSValue::dt_NMTOKEN: case XSValue::dt_NMTOKENS: case XSValue::dt_Name: case XSValue::dt_NCName: case XSValue::dt_ID: case XSValue::dt_IDREF: case XSValue::dt_IDREFS: case XSValue::dt_ENTITY: case XSValue::dt_ENTITIES: printf("ACTVALUE_TEST no Actual Value for datatype %s\n", StrX(getDataTypeString(datatype)).localForm()); return false; case XSValue::dt_integer: case XSValue::dt_nonPositiveInteger: case XSValue::dt_negativeInteger: case XSValue::dt_long: if (actValue.fValue.f_long == expValue.fValue.f_long) return true; printf("ACTVALUE_TEST Unexpected %s XSValue, got %ld expected %ld\n", StrX(getDataTypeString(datatype)).localForm(), actValue.fValue.f_long, expValue.fValue.f_long); return false; case XSValue::dt_int: if (actValue.fValue.f_int == expValue.fValue.f_int) return true; printf("ACTVALUE_TEST Unexpected dt_int XSValue, got %d expected %d\n", actValue.fValue.f_int, expValue.fValue.f_int); return false; case XSValue::dt_short: if (actValue.fValue.f_short == expValue.fValue.f_short) return true; printf("ACTVALUE_TEST Unexpected dt_short XSValue, got %d expected %d\n", actValue.fValue.f_short, expValue.fValue.f_short); return false; case XSValue::dt_byte: if (actValue.fValue.f_char == expValue.fValue.f_char) return true; printf("ACTVALUE_TEST Unexpected dt_byte XSValue, got %d expected %d\n", actValue.fValue.f_char, expValue.fValue.f_char); return false; case XSValue::dt_nonNegativeInteger: case XSValue::dt_unsignedLong: case XSValue::dt_positiveInteger: if (actValue.fValue.f_ulong == expValue.fValue.f_ulong) return true; printf("ACTVALUE_TEST Unexpected %s XSValue, got %lu expected %lu\n", StrX(getDataTypeString(datatype)).localForm(), actValue.fValue.f_ulong, expValue.fValue.f_ulong); return false; case XSValue::dt_unsignedInt: if (actValue.fValue.f_uint == expValue.fValue.f_uint) return true; printf("ACTVALUE_TEST Unexpected dt_unsignedIntXSValue, got %d expected %d\n", actValue.fValue.f_uint, expValue.fValue.f_uint); return false; case XSValue::dt_unsignedShort: if (actValue.fValue.f_ushort == expValue.fValue.f_ushort) return true; printf("ACTVALUE_TEST Unexpected dt_unsignedShort XSValue, got %d expected %d\n", actValue.fValue.f_ushort, expValue.fValue.f_ushort); return false; case XSValue::dt_unsignedByte: if (actValue.fValue.f_uchar == expValue.fValue.f_uchar) return true; printf("ACTVALUE_TEST Unexpected dt_unsignedByte XSValue, got %d expected %d\n", actValue.fValue.f_uchar, expValue.fValue.f_uchar); return false; default: printf("ACTVALUE_TEST Unexpected datatype\n"); return false; } } static const char* getStatusString(const XSValue::Status status) { switch (status) { case XSValue::st_Init: return "st_Init"; break; case XSValue::st_NoContent: return "st_NoContent"; break; case XSValue::st_NoCanRep: return "st_NoCanRep"; break; case XSValue::st_NoActVal: return "st_NoActVal"; break; case XSValue::st_NotSupported: return "st_NotSupported"; break; case XSValue::st_CantCreateRegEx: return "st_CantCreateRegEx"; break; case XSValue::st_FOCA0002: return "st_FOCA0002"; break; case XSValue::st_FOCA0001: return "st_FOCA0001"; break; case XSValue::st_FOCA0003: return "st_FOCA0003"; break; case XSValue::st_FODT0003: return "st_FODT0003"; break; case XSValue::st_UnknownType: return "st_UnknownType"; break; default: return "st_UnknownType"; break; } } /** * This is to test methods for XSValue */ #ifdef _DEBUG void VALIDATE_TEST( const char* const data , const XSValue::DataType datatype , bool expRetValid , const XSValue::Status expStatus ) { XSValue::Status myStatus = XSValue::st_Init; bool actRetValid = XSValue::validate( StrX(data).unicodeForm() , datatype , myStatus , XSValue::ver_10 , XMLPlatformUtils::fgMemoryManager); if (actRetValid != expRetValid) { printf("VALIDATE_TEST Validation Fail: data=<%s>, datatype=<%s>, expRetVal=<%d>\n", data, StrX(getDataTypeString(datatype)).localForm(), expRetValid); errSeen = true; } else { if (!expRetValid && expStatus != DONT_CARE && expStatus != myStatus ) { printf("VALIDATE_TEST Context Diff, data=<%s> datatype=<%s>, expStatus=<%s>, actStatus=<%s>\n", data, StrX(getDataTypeString(datatype)).localForm(), getStatusString(expStatus), getStatusString(myStatus)); errSeen = true; } } } #else #define VALIDATE_TEST(data, datatype, expRetValid, expStatus) \ { \ XSValue::Status myStatus = XSValue::st_Init; \ bool actRetValid = XSValue::validate( \ StrX(data).unicodeForm() \ , datatype \ , myStatus \ , XSValue::ver_10 \ , XMLPlatformUtils::fgMemoryManager); \ if (actRetValid != expRetValid) { \ printf("VALIDATE_TEST Validation Fail: \ at line <%d>, data=<%s>, datatype=<%s>, expRetVal=<%d>\n" \ , __LINE__, data, StrX(getDataTypeString(datatype)).localForm() \ , expRetValid); \ errSeen = true; \ } \ else { \ if (!expRetValid && \ expStatus != DONT_CARE && \ expStatus != myStatus ) { \ printf("VALIDATE_TEST Context Diff, \ at line <%d>, data=<%s> datatype=<%s>, \ expStatus=<%s>, actStatus=<%s>\n" \ , __LINE__, data, StrX(getDataTypeString(datatype)).localForm(), \ getStatusString(expStatus), getStatusString(myStatus)); \ errSeen = true; \ } \ } \ } #endif #ifdef _DEBUG void ACTVALUE_TEST( const char* const data , const XSValue::DataType datatype , bool toValidate , bool expRetValue , const XSValue::Status expStatus , const XSValue::XSValue_Data expValue ) { XSValue::Status myStatus = XSValue::st_Init; XSValue* actRetValue = XSValue::getActualValue( StrX(data).unicodeForm() , datatype , myStatus , XSValue::ver_10 , toValidate , XMLPlatformUtils::fgMemoryManager); if (actRetValue) { if (!expRetValue) { printf("ACTVALUE_TEST XSValue returned: data=<%s>, datatype=<%s>\n", data, StrX(getDataTypeString(datatype)).localForm()); errSeen = true; } else if (!compareActualValue(datatype, actRetValue->fData, expValue)) { errSeen = true; } delete actRetValue; } else { if (expRetValue) { printf("ACTVALUE_TEST No XSValue returned, data=<%s>, datatype=<%s>\n" , data, StrX(getDataTypeString(datatype)).localForm()); errSeen = true; } else { if (expStatus != DONT_CARE && expStatus != myStatus ) { printf("ACTVALUE_TEST Context Diff, data=<%s>, datatype=<%s>, expStatus=<%s>, actStatus=<%s>\n" , data, StrX(getDataTypeString(datatype)).localForm(), getStatusString(expStatus), getStatusString(myStatus)); errSeen = true; } } } } #else #define ACTVALUE_TEST(data, datatype, toValidate, expRetValue, expStatus, expValue) \ { \ XSValue::Status myStatus = XSValue::st_Init; \ XSValue* actRetValue = XSValue::getActualValue( \ StrX(data).unicodeForm() \ , datatype \ , myStatus \ , XSValue::ver_10 \ , toValidate \ , XMLPlatformUtils::fgMemoryManager); \ if (actRetValue) { \ if (!expRetValue) { \ printf("ACTVALUE_TEST XSValue returned, \ at line <%d> data=<%s>, datatype=<%s>\n" \ ,__LINE__, data, StrX(getDataTypeString(datatype)).localForm()); \ errSeen = true; \ } \ else if (!compareActualValue(datatype, actRetValue->fData, expValue)) { \ errSeen = true; \ } \ delete actRetValue; \ } \ else { \ if (expRetValue) { \ printf("ACTVALUE_TEST No XSValue returned, \ at line <%d> data=<%s>, datatype=<%s>\n" \ , __LINE__, data, StrX(getDataTypeString(datatype)).localForm()); \ errSeen = true; \ } \ else { \ if (expStatus != DONT_CARE && \ expStatus != myStatus) { \ printf("ACTVALUE_TEST Context Diff, \ at line <%d> data=<%s>, datatype=<%s>, \ expStatus=<%s>, actStatus=<%s>\n" \ , __LINE__, data, StrX(getDataTypeString(datatype)).localForm() \ , getStatusString(expStatus), getStatusString(myStatus)); \ errSeen = true; \ } \ } \ } \ } #endif #ifdef _DEBUG void CANREP_TEST(const char* const data , const XSValue::DataType datatype , bool toValidate , bool expRetCanRep , const char* const toCompare , const XSValue::Status expStatus ) { XSValue::Status myStatus = XSValue::st_Init; XMLCh* actRetCanRep = XSValue::getCanonicalRepresentation( StrX(data).unicodeForm() , datatype , myStatus , XSValue::ver_10 , toValidate , XMLPlatformUtils::fgMemoryManager); if (actRetCanRep) { if (!expRetCanRep) { printf("CANREP_TEST CanRep returned, data=<%s>, datatype=<%s>\n" , data, StrX(getDataTypeString(datatype)).localForm()); XMLPlatformUtils::fgMemoryManager->deallocate(actRetCanRep); errSeen = true; } else { char* actRetCanRep_inchar = XMLString::transcode(actRetCanRep); if (!XMLString::equals(actRetCanRep_inchar, toCompare)) { printf("CANREP_TEST CanRep Diff , data=<%s>, datatype=<%s>, actCanRep=<%s>, toCompare=<%s>\n" , data, StrX(getDataTypeString(datatype)).localForm(), actRetCanRep_inchar, toCompare); errSeen = true; } XMLPlatformUtils::fgMemoryManager->deallocate(actRetCanRep); XMLString::release(&actRetCanRep_inchar); } } else { if (expRetCanRep) { printf("CANREP_TEST No CanRep returned, data=<%s>, datatype=<%s>\n" , data, StrX(getDataTypeString(datatype)).localForm()); errSeen = true; } else { if (expStatus != DONT_CARE && expStatus != myStatus ) { printf("CANREP_TEST Context Diff, data=<%s>, datatype=<%s>\n expStatus=<%s>, actStatus=<%s>\n" , data, StrX(getDataTypeString(datatype)).localForm(), getStatusString(expStatus), getStatusString(myStatus)); errSeen = true; } } } } #else #define CANREP_TEST(data, datatype, toValidate, expRetCanRep, toCompare, expStatus) \ { \ XSValue::Status myStatus = XSValue::st_Init; \ XMLCh* actRetCanRep = XSValue::getCanonicalRepresentation( \ StrX(data).unicodeForm() \ , datatype \ , myStatus \ , XSValue::ver_10 \ , toValidate \ , XMLPlatformUtils::fgMemoryManager); \ if (actRetCanRep) { \ if (!expRetCanRep) { \ printf("CANREP_TEST CanRep returned: \ at line <%d> data=<%s>, datatype=<%s>\n" \ , __LINE__, data, StrX(getDataTypeString(datatype)).localForm()); \ XMLPlatformUtils::fgMemoryManager->deallocate(actRetCanRep); \ errSeen = true; \ } \ else { \ char* actRetCanRep_inchar = XMLString::transcode(actRetCanRep); \ if (!XMLString::equals(actRetCanRep_inchar, toCompare)) { \ printf("CANREP_TEST CanRep Diff \ , at line <%d> data=<%s>, datatype=<%s>, \ actCanRep=<%s>, toCompare=<%s>\n" \ , __LINE__, data, StrX(getDataTypeString(datatype)).localForm() \ , actRetCanRep_inchar, toCompare); \ errSeen = true; \ } \ XMLPlatformUtils::fgMemoryManager->deallocate(actRetCanRep); \ XMLString::release(&actRetCanRep_inchar); \ } \ } \ else { \ if (expRetCanRep){ \ printf("CANREP_TEST No CanRep returned, \ at line <%d> data=<%s>, datatype=<%s>\n" \ , __LINE__, data, StrX(getDataTypeString(datatype)).localForm()); \ errSeen = true; \ } \ else { \ if (expStatus != myStatus) { \ printf("CANREP_TEST Context Diff, \ at line <%d> data=<%s>, datatype=<%s>\n \ expStatus=<%s>, actStatus=<%s>\n" \ , __LINE__, data, StrX(getDataTypeString(datatype)).localForm() \ , getStatusString(expStatus), getStatusString(myStatus)); \ errSeen = true; \ } \ } \ } \ } #endif #ifdef _DEBUG void DATATYPE_TEST( const XMLCh* const dt_String , const XSValue::DataType expDataType ) { XSValue::DataType actDataType = XSValue::getDataType(dt_String); if (actDataType != expDataType) { char* dt_str = XMLString::transcode(dt_String); printf("DATATYPE_TEST Fails: data=<%s>, actDataType=<%d>, expDataType=<%d>\n", dt_str, actDataType, expDataType); XMLString::release(&dt_str); errSeen = true; } } #else #define DATATYPE_TEST(dt_String, expDataType) \ { \ XSValue::DataType actDataType = XSValue::getDataType(dt_String); \ if (actDataType != expDataType) \ { \ char* dt_str = XMLString::transcode(dt_String); \ printf("DATATYPE_TEST Fails: data=<%s>, actDataType=<%d>, expDataType=<%d>\n", \ dt_str, actDataType, expDataType); \ XMLString::release(&dt_str); \ errSeen = true; \ } \ } #endif void testNoActVal(const char* const data , const XSValue::DataType datatype , const XSValue::Status expStatus) { XSValue::Status ret_Status = XSValue::st_Init; XSValue* actVal = XSValue::getActualValue(StrX(data).unicodeForm(), datatype, ret_Status); if (actVal) { printf("testNoActVal fails, data=<%s>\n", data); delete actVal; errSeen=true; return; } if (ret_Status != expStatus) { printf("testNoActVal fails, data=<%s> retStatus=<%s> expStatus=<%s>\n", data , getStatusString(ret_Status) , getStatusString(expStatus)); errSeen=true; } } void testNoCanRep(const char* const data , const XSValue::DataType datatype , const XSValue::Status expStatus) { XSValue::Status ret_Status = XSValue::st_Init; XMLCh* canRep = XSValue::getCanonicalRepresentation(StrX(data).unicodeForm(), datatype, ret_Status); if (canRep) { printf("testNoCanRep fails, data=<%s>\n", data); delete canRep; errSeen=true; return; } if (ret_Status != expStatus) { printf("testNoCanRep fails, data=<%s> retStatus=<%s> expStatus=<%s>\n", data , getStatusString(ret_Status) , getStatusString(expStatus)); errSeen=true; } } /*** * Test cases ***/ void test_dt_decimal() { const XSValue::DataType dt = XSValue::dt_decimal; bool toValidate = true; const char lex_v_ran_v_1[]=" 1234.567 \n"; const char lex_v_ran64_v_1[]="18446744073709551615.999"; const char lex_v_ran64_v_2[]="999.18446744073709551615"; const char lex_v_ran64_iv_1[]="18446744073709551616.999"; const char lex_v_ran64_iv_2[]="999.18446744073709551616"; const char lex_v_ran32_v_1[]="4294967295.999"; const char lex_v_ran32_v_2[]="999.4294967295"; // const char lex_v_ran32_iv_1[]="4294967296.999"; // const char lex_v_ran32_iv_2[]="999.4294967296"; const char lex_iv_1[]="12b34.456"; const char lex_iv_2[]="1234.56.789"; XSValue::XSValue_Data act_v_ran_v_1; act_v_ran_v_1.fValue.f_double = (double)1234.567; #if SIZEOF_LONG == 8 XSValue::XSValue_Data act_v_ran64_v_1; act_v_ran64_v_1.fValue.f_double = (double)18446744073709551615.999; XSValue::XSValue_Data act_v_ran64_v_2; act_v_ran64_v_2.fValue.f_double = (double)999.18446744073709551615; //XSValue::XSValue_Data act_v_ran64_iv_1;="18446744073709551616.999"; //XSValue::XSValue_Data act_v_ran64_iv_2;="999.18446744073709551616"; #endif XSValue::XSValue_Data act_v_ran32_v_1; act_v_ran32_v_1.fValue.f_double = (double)4294967295.999; XSValue::XSValue_Data act_v_ran32_v_2; act_v_ran32_v_2.fValue.f_double = (double)999.4294967295; //XSValue::XSValue_Data act_v_ran32_iv_1;="4294967296.999"; //XSValue::XSValue_Data act_v_ran32_iv_2;="999.4294967296"; /*** * 3.2.3.2 Canonical representation * * The canonical representation for decimal is defined by prohibiting certain options from the Lexical * representation (3.2.3.1). Specifically, * 1. the preceding optional "+" sign is prohibited. * 2. The decimal point is required. * 3. Leading and trailing zeroes are prohibited subject to the following: * there must be at least one digit to the right and * to the left of the decimal point which may be a zero. ***/ const char data_rawstr_1[]=" -123.45 \n"; const char data_canrep_1[]="-123.45"; const char data_rawstr_2[]="+123.45"; const char data_canrep_2[]="123.45"; const char data_rawstr_3[]="12345"; const char data_canrep_3[]="12345.0"; const char data_rawstr_4[]="000123.45"; const char data_canrep_4[]="123.45"; const char data_rawstr_5[]="123.45000"; const char data_canrep_5[]="123.45"; const char data_rawstr_6[]="00.12345"; const char data_canrep_6[]="0.12345"; const char data_rawstr_7[]="123.00"; const char data_canrep_7[]="123.0"; /*** * * validate * --------- * availability return value context * ---------------------------------------------- * lexical valid * range valid true n/a * range invalid n/a * lexical invalid false st_FOCA0002 * ***/ // lexical valid VALIDATE_TEST(lex_v_ran_v_1 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran64_v_1 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran64_v_2 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran64_iv_1 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran64_iv_2 , dt, EXP_RET_VALID_TRUE, DONT_CARE); // lexical invalid VALIDATE_TEST(lex_iv_1 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(lex_iv_2 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); /*** * * getActualValue * --------------- * availability return value context * ---------------------------------------------- * validation on * ============= * lexical valid * range valid XSValue n/a * range invalid 0 st_Unpresentable * lexical invalid 0 st_FOCA0002 * * validation off * ============== * lexical valid * range valid XSValue n/a * range invalid 0 st_Unpresentable * lexical invalid 0 st_FOCA0002 * ***/ for (int i = 0; i < 2; i++) { //validation on/off toValidate = ( 0 == i) ? true : false; ACTVALUE_TEST(lex_v_ran_v_1, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_1); #if SIZEOF_LONG == 8 ACTVALUE_TEST(lex_v_ran64_v_1 , dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran64_v_1); ACTVALUE_TEST(lex_v_ran64_v_2 , dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran64_v_2); //ACTVALUE_TEST(lex_v_ran64_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0001); //ACTVALUE_TEST(lex_v_ran64_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0001); #else ACTVALUE_TEST(lex_v_ran32_v_1, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran32_v_1); ACTVALUE_TEST(lex_v_ran32_v_2, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran32_v_2); //ACTVALUE_TEST(lex_v_ran32_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0001); //ACTVALUE_TEST(lex_v_ran32_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0001); #endif ACTVALUE_TEST(lex_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran32_v_1); ACTVALUE_TEST(lex_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran32_v_1); } /*** * * getCanonicalRepresentation * --------------------------- * availability return value context * ---------------------------------------------- * validation on * ============= * lexical valid * range valid XMLCh n/a * range invalid n/a * lexical invalid 0 st_FOCA0002 * * validation off * ============== * lexical valid * range valid XMLCh n/a * range invalid n/a * lexical invalid 0 st_FOCA0002 * ***/ for (int j = 0; j < 2; j++) { //validation on/off toValidate = ( 0 == j)? true : false; CANREP_TEST(data_rawstr_1, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_1, DONT_CARE); CANREP_TEST(data_rawstr_2, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_2, DONT_CARE); CANREP_TEST(data_rawstr_3, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_3, DONT_CARE); CANREP_TEST(data_rawstr_4, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_4, DONT_CARE); CANREP_TEST(data_rawstr_5, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_5, DONT_CARE); CANREP_TEST(data_rawstr_6, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_6, DONT_CARE); CANREP_TEST(data_rawstr_7, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_7, DONT_CARE); CANREP_TEST(lex_v_ran64_v_1, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran64_v_1, DONT_CARE); CANREP_TEST(lex_v_ran64_v_2, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran64_v_2, DONT_CARE); CANREP_TEST(lex_v_ran64_iv_1, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran64_iv_1, DONT_CARE); CANREP_TEST(lex_v_ran64_iv_2, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran64_iv_2, DONT_CARE); CANREP_TEST(lex_iv_1 , dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); CANREP_TEST(lex_iv_2 , dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); } } /*** * FLT_EPSILON 1.192092896e-07F * FLT_MIN 1.175494351e-38F * FLT_MAX 3.402823466e+38F ***/ void test_dt_float() { const XSValue::DataType dt = XSValue::dt_float; bool toValidate = true; const char lex_v_ran_v_0[]=" 1234.e+10 \n"; const char lex_v_ran_v_1[]="+3.402823466e+38"; const char lex_v_ran_v_2[]="-3.402823466e+38"; const char lex_v_ran_v_3[]="+1.175494351e-38"; const char lex_v_ran_v_4[]="-1.175494351e-38"; XSValue::XSValue_Data act_v_ran_v_0; act_v_ran_v_0.fValue.f_float = (float)1234.e+10; XSValue::XSValue_Data act_v_ran_v_1; act_v_ran_v_1.fValue.f_float = (float)+3.402823466e+38; XSValue::XSValue_Data act_v_ran_v_2; act_v_ran_v_2.fValue.f_float = (float)-3.402823466e+38; XSValue::XSValue_Data act_v_ran_v_3; act_v_ran_v_3.fValue.f_float = (float)+1.175494351e-38; XSValue::XSValue_Data act_v_ran_v_4; act_v_ran_v_4.fValue.f_float = (float)-1.175494351e-38; const char lex_v_ran_iv_1[]="+3.402823466e+39"; const char lex_v_ran_iv_2[]="-3.402823466e+39"; const char lex_v_ran_iv_3[]="+1.175494351e-46"; const char lex_v_ran_iv_4[]="-1.175494351e-46"; XSValue::XSValue_Data lex_iv_ran_v_1; lex_iv_ran_v_1.fValue.f_float = (float)0.0; lex_iv_ran_v_1.fValue.f_floatType.f_floatEnum = XSValue::DoubleFloatType_PosINF; XSValue::XSValue_Data lex_iv_ran_v_2; lex_iv_ran_v_2.fValue.f_float = (float)0.0; lex_iv_ran_v_2.fValue.f_floatType.f_floatEnum = XSValue::DoubleFloatType_NegINF; XSValue::XSValue_Data lex_iv_ran_v_3; lex_iv_ran_v_3.fValue.f_float = (float)0.0; lex_iv_ran_v_3.fValue.f_floatType.f_floatEnum = XSValue::DoubleFloatType_Zero; XSValue::XSValue_Data lex_iv_ran_v_4; lex_iv_ran_v_4.fValue.f_float = (float)0.0; lex_iv_ran_v_4.fValue.f_floatType.f_floatEnum = XSValue::DoubleFloatType_Zero; const char lex_v_ran_iv_1_canrep[]="INF"; // " 3.402823466E39" const char lex_v_ran_iv_2_canrep[]="-INF"; // "-3.402823466E39"; const char lex_v_ran_iv_3_canrep[]="0"; // " 1.175494351E-46"; const char lex_v_ran_iv_4_canrep[]="0"; // "-1.175494351E-46"; const char lex_iv_1[]="12x.e+10"; const char lex_iv_2[]="12.e+1x"; /*** * 3.2.4.2 Canonical representation * * The canonical representation for float is defined by prohibiting certain options from the Lexical * representation (3.2.4.1). * Specifically, * 1. the exponent must be indicated by "E". * 2. Leading zeroes and the preceding optional "+" sign are prohibited in the exponent. * 3. For the mantissa, the preceding optional "+" sign is prohibited and the decimal point is required. * Leading and trailing zeroes are prohibited subject to the following: * number representations must be normalized such that there is a single digit to the left of the decimal point * and at least a single digit to the right of the decimal point. * ***/ const char data_rawstr_1[]=" -123.45 \n"; const char data_canrep_1[]="-1.2345E2"; const char data_rawstr_2[]="+123.45"; const char data_canrep_2[]="1.2345E2"; const char data_rawstr_3[]="+123.45e+0012"; const char data_canrep_3[]="1.2345E14"; const char data_rawstr_4[]="+100.000e2"; const char data_canrep_4[]="1.0E4"; const char data_rawstr_5[]="00100.23e2"; const char data_canrep_5[]="1.0023E4"; /*** * * validate * --------- * availability return value context * ---------------------------------------------- * lexical valid * range valid true n/a * range invalid false st_FOCA0002 * lexical invalid false st_FOCA0002 * ***/ // lexical valid, range valid VALIDATE_TEST(lex_v_ran_v_0 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran_v_1 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran_v_2 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran_v_3 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran_v_4 , dt, EXP_RET_VALID_TRUE, DONT_CARE); // lexical valid, range invalid VALIDATE_TEST(lex_v_ran_iv_1 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran_iv_2 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran_iv_3 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran_iv_4 , dt, EXP_RET_VALID_TRUE, DONT_CARE); // lexical invalid VALIDATE_TEST(lex_iv_1 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(lex_iv_2 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); /*** * * getActualValue * --------------- * availability return value context * ---------------------------------------------- * validation on * ============= * lexical valid * range valid XSValue n/a * range invalid 0 st_Unpresentable * lexical invalid 0 st_FOCA0002 * * validation off * ============== * lexical valid * range valid XSValue n/a * range invalid 0 st_Unpresentable * lexical invalid 0 st_FOCA0002 * ***/ for (int i = 0; i < 2; i++) { //validation on/off toValidate = ( 0 == i) ? true : false; // lexical valid, range valid ACTVALUE_TEST(lex_v_ran_v_0, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_0); ACTVALUE_TEST(lex_v_ran_v_1, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_1); ACTVALUE_TEST(lex_v_ran_v_2, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_2); ACTVALUE_TEST(lex_v_ran_v_3, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_3); ACTVALUE_TEST(lex_v_ran_v_4, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_4); // lexical valid, range invalid ACTVALUE_TEST(lex_v_ran_iv_1, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, lex_iv_ran_v_1); ACTVALUE_TEST(lex_v_ran_iv_2, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, lex_iv_ran_v_2); ACTVALUE_TEST(lex_v_ran_iv_3, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, lex_iv_ran_v_3); ACTVALUE_TEST(lex_v_ran_iv_4, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, lex_iv_ran_v_4); // lexical invalid ACTVALUE_TEST(lex_iv_1 , dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0); ACTVALUE_TEST(lex_iv_2 , dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0); } /*** * * getCanonicalRepresentation * --------------------------- * availability return value context * ---------------------------------------------- * validation on * ============= * lexical valid * range valid XMLCh n/a * range invalid 0 st_FOCA0002 * lexical invalid 0 st_FOCA0002 * * validation off * ============== * lexical valid * range valid XMLCh n/a * range invalid XMLCh n/a * lexical invalid 0 st_FOCA0002 * ***/ for (int j = 0; j < 2; j++) { //validation on/off toValidate = ( 0 == j) ? true : false; // lexical valid, range valid CANREP_TEST(data_rawstr_1, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_1, DONT_CARE); CANREP_TEST(data_rawstr_2, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_2, DONT_CARE); CANREP_TEST(data_rawstr_3, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_3, DONT_CARE); CANREP_TEST(data_rawstr_4, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_4, DONT_CARE); CANREP_TEST(data_rawstr_5, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_5, DONT_CARE); // lexical invalid CANREP_TEST(lex_iv_1, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); CANREP_TEST(lex_iv_2, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); // lexical valid, range invalid (however XML4C ignores that) CANREP_TEST(lex_v_ran_iv_1, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran_iv_1_canrep, DONT_CARE); CANREP_TEST(lex_v_ran_iv_2, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran_iv_2_canrep, DONT_CARE); CANREP_TEST(lex_v_ran_iv_3, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran_iv_3_canrep, DONT_CARE); CANREP_TEST(lex_v_ran_iv_4, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran_iv_4_canrep, DONT_CARE); } } /*** DBL_EPSILON 2.2204460492503131e-016 DBL_MAX 1.7976931348623158e+308 DBL_MIN 2.2250738585072014e-308 ***/ void test_dt_double() { const XSValue::DataType dt = XSValue::dt_double; bool toValidate = true; const char lex_v_ran_v_0[]=" 1234.e+10 \n"; const char lex_v_ran_v_1[]="+1.7976931348623158e+308"; const char lex_v_ran_v_2[]="-1.7976931348623158e+308"; const char lex_v_ran_v_3[]="+2.2250738585072014e-308"; const char lex_v_ran_v_4[]="-2.2250738585072014e-308"; XSValue::XSValue_Data act_v_ran_v_0; act_v_ran_v_0.fValue.f_double = (double)1234.e+10; XSValue::XSValue_Data act_v_ran_v_1; act_v_ran_v_1.fValue.f_double = (double)+1.7976931348623158e+308; XSValue::XSValue_Data act_v_ran_v_2; act_v_ran_v_2.fValue.f_double = (double)-1.7976931348623158e+308; XSValue::XSValue_Data act_v_ran_v_3; act_v_ran_v_3.fValue.f_double = (double)+2.2250738585072014e-308; XSValue::XSValue_Data act_v_ran_v_4; act_v_ran_v_4.fValue.f_double = (double)-2.2250738585072014e-308; const char lex_v_ran_iv_1[]="+1.7976931348623158e+309"; const char lex_v_ran_iv_2[]="-1.7976931348623158e+309"; // on linux, hp, aix, the representable range is around e-324 // or e-325, using e-329 to gain consistent result on all // platforms const char lex_v_ran_iv_3[]="+2.2250738585072014e-329"; const char lex_v_ran_iv_4[]="-2.2250738585072014e-329"; const char lex_v_ran_iv_1_canrep[]="INF"; // " 1.7976931348623158E309"; const char lex_v_ran_iv_2_canrep[]="-INF"; // "-1.7976931348623158E309"; const char lex_v_ran_iv_3_canrep[]="0"; // "2.2250738585072014E-329"; const char lex_v_ran_iv_4_canrep[]="0"; // "-2.2250738585072014E-329"; XSValue::XSValue_Data lex_iv_ran_v_1; lex_iv_ran_v_1.fValue.f_double = (double)0.0; lex_iv_ran_v_1.fValue.f_doubleType.f_doubleEnum = XSValue::DoubleFloatType_PosINF; XSValue::XSValue_Data lex_iv_ran_v_2; lex_iv_ran_v_2.fValue.f_double = (double)0.0; lex_iv_ran_v_2.fValue.f_doubleType.f_doubleEnum = XSValue::DoubleFloatType_NegINF; XSValue::XSValue_Data lex_iv_ran_v_3; lex_iv_ran_v_3.fValue.f_double = (double)0.0; lex_iv_ran_v_3.fValue.f_doubleType.f_doubleEnum = XSValue::DoubleFloatType_Zero; XSValue::XSValue_Data lex_iv_ran_v_4; lex_iv_ran_v_4.fValue.f_double = (double)0.0; lex_iv_ran_v_4.fValue.f_doubleType.f_doubleEnum = XSValue::DoubleFloatType_Zero; const char lex_iv_1[]="12x.e+10"; const char lex_iv_2[]="12.e+1x"; /*** * 3.2.5.2 Canonical representation * * The canonical representation for float is defined by prohibiting certain options from the Lexical * representation (3.2.5.1). * Specifically, * 1. the exponent must be indicated by "E". * 2. Leading zeroes and the preceding optional "+" sign are prohibited in the exponent. * 3. For the mantissa, the preceding optional "+" sign is prohibited and the decimal point is required. * Leading and trailing zeroes are prohibited subject to the following: * number representations must be normalized such that there is a single digit to the left of the decimal point * and at least a single digit to the right of the decimal point. * ***/ const char data_rawstr_1[]=" -123.45 \n"; const char data_canrep_1[]="-1.2345E2"; const char data_rawstr_2[]="+123.45"; const char data_canrep_2[]="1.2345E2"; const char data_rawstr_3[]="+123.45e+0012"; const char data_canrep_3[]="1.2345E14"; const char data_rawstr_4[]="+100.000e2"; const char data_canrep_4[]="1.0E4"; const char data_rawstr_5[]="00100.23e2"; const char data_canrep_5[]="1.0023E4"; /*** * * validate * --------- * availability return value context * ---------------------------------------------- * lexical valid * range valid true n/a * range invalid false st_FOCA0002 * lexical invalid false st_FOCA0002 * ***/ // lexical valid, range valid VALIDATE_TEST(lex_v_ran_v_0 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran_v_1 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran_v_2 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran_v_3 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran_v_4 , dt, EXP_RET_VALID_TRUE, DONT_CARE); // lexical valid, range invalid however XML4C converts to INF / ZERO VALIDATE_TEST(lex_v_ran_iv_1 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran_iv_2 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran_iv_3 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran_iv_4 , dt, EXP_RET_VALID_TRUE, DONT_CARE); // lexical invalid VALIDATE_TEST(lex_iv_1 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(lex_iv_2 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); /*** * * getActualValue * --------------- * availability return value context * ---------------------------------------------- * validation on * ============= * lexical valid * range valid XSValue n/a * range invalid 0 st_Unpresentable * lexical invalid 0 st_FOCA0002 * * validation off * ============== * lexical valid * range valid XSValue n/a * range invalid 0 st_Unpresentable * lexical invalid 0 st_FOCA0002 * ***/ for (int i = 0; i < 2; i++) { //validation on/off toValidate = ( 0 == i) ? true : false; // lexical valid, range valid ACTVALUE_TEST(lex_v_ran_v_0, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_0); ACTVALUE_TEST(lex_v_ran_v_1, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_1); ACTVALUE_TEST(lex_v_ran_v_2, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_2); ACTVALUE_TEST(lex_v_ran_v_3, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_3); ACTVALUE_TEST(lex_v_ran_v_4, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_4); // lexical valid, range invalid ACTVALUE_TEST(lex_v_ran_iv_1, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, lex_iv_ran_v_1); ACTVALUE_TEST(lex_v_ran_iv_2, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, lex_iv_ran_v_2); ACTVALUE_TEST(lex_v_ran_iv_3, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, lex_iv_ran_v_3); ACTVALUE_TEST(lex_v_ran_iv_4, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, lex_iv_ran_v_4); // lexical invalid ACTVALUE_TEST(lex_iv_1 , dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0); ACTVALUE_TEST(lex_iv_2 , dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0); } /*** * * getCanonicalRepresentation * --------------------------- * availability return value context * ---------------------------------------------- * validation on * ============= * lexical valid * range valid XMLCh n/a * range invalid 0 st_FOCA0002 * lexical invalid 0 st_FOCA0002 * * validation off * ============== * lexical valid * range valid XMLCh n/a * range invalid XMLCh n/a * lexical invalid 0 st_FOCA0002 * ***/ for (int j = 0; j < 2; j++) { //validation on/off toValidate = ( 0 == j) ? true : false; // lexical valid, range valid CANREP_TEST(data_rawstr_1, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_1, DONT_CARE); CANREP_TEST(data_rawstr_2, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_2, DONT_CARE); CANREP_TEST(data_rawstr_3, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_3, DONT_CARE); CANREP_TEST(data_rawstr_4, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_4, DONT_CARE); CANREP_TEST(data_rawstr_5, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_5, DONT_CARE); // lexical invalid CANREP_TEST(lex_iv_1, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); CANREP_TEST(lex_iv_2, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); // lexical valid, range invalid (XML4C doesn't treat as invalid) CANREP_TEST(lex_v_ran_iv_1, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran_iv_1_canrep, DONT_CARE); CANREP_TEST(lex_v_ran_iv_2, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran_iv_2_canrep, DONT_CARE); CANREP_TEST(lex_v_ran_iv_3, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran_iv_3_canrep, DONT_CARE); CANREP_TEST(lex_v_ran_iv_4, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran_iv_4_canrep, DONT_CARE); } } /*** * 9223372036854775807 * -9223372036854775808 * 2147483647 * -2147483648 ***/ void test_dt_integer() { const XSValue::DataType dt = XSValue::dt_integer; bool toValidate = true; const char lex_v_ran_v_1[]=" 1234 \n"; const char lex_v_ran64_v_1[]="+9223372036854775807"; const char lex_v_ran64_v_2[]="-9223372036854775808"; const char lex_v_ran64_iv_1[]="+9223372036854775808"; const char lex_v_ran64_iv_2[]="-9223372036854775809"; const char lex_v_ran32_v_1[]="+2147483647"; const char lex_v_ran32_v_2[]="-2147483648"; const char lex_v_ran32_iv_1[]="+2147483648"; const char lex_v_ran32_iv_2[]="-2147483649"; XSValue::XSValue_Data act_v_ran_v_1; act_v_ran_v_1.fValue.f_long = (long)1234; #if SIZEOF_LONG == 8 XSValue::XSValue_Data act_v_ran64_v_1; act_v_ran64_v_1.fValue.f_long = (long)+9223372036854775807; XSValue::XSValue_Data act_v_ran64_v_2; act_v_ran64_v_2.fValue.f_long = (long)-9223372036854775808; #endif XSValue::XSValue_Data act_v_ran32_v_1; act_v_ran32_v_1.fValue.f_long = (long)+2147483647; XSValue::XSValue_Data act_v_ran32_v_2; act_v_ran32_v_2.fValue.f_long = (long)-2147483648; const char lex_v_ran64_v_1_canrep[]="9223372036854775807"; const char lex_v_ran64_v_2_canrep[]="-9223372036854775808"; const char lex_v_ran64_iv_1_canrep[]="9223372036854775808"; const char lex_v_ran64_iv_2_canrep[]="-9223372036854775809"; const char lex_iv_1[]="12b34.456"; const char lex_iv_2[]="1234b56"; /*** * 3.3.13.2 Canonical representation * * The canonical representation for integer is defined by prohibiting certain options from the Lexical * representation (3.3.13.1). Specifically, * 1. the preceding optional "+" sign is prohibited and * 2. leading zeroes are prohibited. * ***/ const char data_rawstr_1[]=" +12345 \n"; const char data_canrep_1[]="12345"; const char data_rawstr_2[]="00012345"; const char data_canrep_2[]="12345"; /*** * * validate * --------- * availability return value context * ---------------------------------------------- * lexical valid * range valid true n/a * range invalid n/a * lexical invalid false st_FOCA0002 * ***/ // lexical valid VALIDATE_TEST(lex_v_ran_v_1 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran64_v_1 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran64_v_2 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran64_iv_1 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran64_iv_2 , dt, EXP_RET_VALID_TRUE, DONT_CARE); // lexical invalid VALIDATE_TEST(lex_iv_1 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(lex_iv_2 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); /*** * * getActualValue * --------------- * availability return value context * ---------------------------------------------- * validation on * ============= * lexical valid * range valid XSValue n/a * range invalid 0 st_Unpresentable * lexical invalid 0 st_FOCA0002 * * validation off * ============== * lexical valid * range valid XSValue n/a * range invalid 0 st_Unpresentable * lexical invalid 0 st_FOCA0002 * ***/ for (int i = 0; i < 2; i++) { //validation on/off toValidate = ( 0 == i) ? true : false; ACTVALUE_TEST(lex_v_ran_v_1, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_1); #if SIZEOF_LONG == 8 ACTVALUE_TEST(lex_v_ran64_v_1 , dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran64_v_1); ACTVALUE_TEST(lex_v_ran64_v_2 , dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran64_v_2); ACTVALUE_TEST(lex_v_ran64_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003, act_v_ran64_v_1); ACTVALUE_TEST(lex_v_ran64_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003, act_v_ran64_v_1); #else ACTVALUE_TEST(lex_v_ran32_v_1, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran32_v_1); ACTVALUE_TEST(lex_v_ran32_v_2, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran32_v_2); ACTVALUE_TEST(lex_v_ran32_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003, act_v_ran32_v_1); ACTVALUE_TEST(lex_v_ran32_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003, act_v_ran32_v_1); #endif ACTVALUE_TEST(lex_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran32_v_1); ACTVALUE_TEST(lex_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran32_v_1); } /*** * * getCanonicalRepresentation * --------------------------- * availability return value context * ---------------------------------------------- * validation on * ============= * lexical valid * range valid XMLCh n/a * range invalid n/a * lexical invalid 0 st_FOCA0002 * * validation off * ============== * lexical valid * range valid XMLCh n/a * range invalid n/a * lexical invalid 0 st_FOCA0002 * ***/ for (int j = 0; j < 2; j++) { //validation on/off toValidate = ( 0 == j)? true : false; CANREP_TEST(data_rawstr_1, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_1, DONT_CARE); CANREP_TEST(data_rawstr_2, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_2, XSValue::st_FOCA0002); CANREP_TEST(lex_v_ran64_v_1, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran64_v_1_canrep, DONT_CARE); CANREP_TEST(lex_v_ran64_v_2, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran64_v_2_canrep, DONT_CARE); CANREP_TEST(lex_v_ran64_iv_1, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran64_iv_1_canrep, DONT_CARE); CANREP_TEST(lex_v_ran64_iv_2, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran64_iv_2_canrep, DONT_CARE); CANREP_TEST(lex_iv_1 , dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); CANREP_TEST(lex_iv_2 , dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); } } void test_dt_nonPositiveInteger() { const XSValue::DataType dt = XSValue::dt_nonPositiveInteger; bool toValidate = true; const char lex_v_ran_v_1[]=" -1234 \n"; const char lex_v_ran_iv_1[]="+1"; const char lex_v_ran64_v_2[]="-9223372036854775808"; const char lex_v_ran64_iv_2[]="-9223372036854775809"; const char lex_v_ran32_v_2[]="-2147483648"; const char lex_v_ran32_iv_2[]="-2147483649"; XSValue::XSValue_Data act_v_ran_v_1; act_v_ran_v_1.fValue.f_long = (long)-1234; #if SIZEOF_LONG == 8 XSValue::XSValue_Data act_v_ran64_v_2; act_v_ran64_v_2.fValue.f_long = (long)-9223372036854775808; #endif XSValue::XSValue_Data act_v_ran32_v_2; act_v_ran32_v_2.fValue.f_long = (long)-2147483648; const char lex_v_ran64_v_2_canrep[]="-9223372036854775808"; const char lex_v_ran64_iv_2_canrep[]="-9223372036854775809"; const char lex_iv_1[]="12b34.456"; const char lex_iv_2[]="1234b56"; /*** * 3.3.14.2 Canonical representation * * The canonical representation for nonPositiveInteger is defined by prohibiting certain options from the * Lexical representation (3.3.14.1). Specifically, * 1. the sign must be omitted for token "0" and * 2. leading zeroes are prohibited. * ***/ const char data_rawstr_1[]=" 0 \n"; const char data_canrep_1[]="0"; const char data_rawstr_2[]="-00012345"; const char data_canrep_2[]="-12345"; /*** * * validate * --------- * availability return value context * ---------------------------------------------- * lexical valid * range valid true n/a * range invalid n/a * lexical invalid false st_FOCA0002 * ***/ // lexical valid VALIDATE_TEST(lex_v_ran_v_1 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran_iv_1 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(lex_v_ran64_v_2 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran64_iv_2 , dt, EXP_RET_VALID_TRUE, DONT_CARE); // lexical invalid VALIDATE_TEST(lex_iv_1 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(lex_iv_2 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); /*** * * getActualValue * --------------- * availability return value context * ---------------------------------------------- * validation on * ============= * lexical valid * range valid XSValue n/a * range invalid 0 st_Unpresentable * lexical invalid 0 st_FOCA0002 * * validation off * ============== * lexical valid * range valid XSValue n/a * range invalid 0 st_Unpresentable * lexical invalid 0 st_FOCA0002 * ***/ for (int i = 0; i < 2; i++) { //validation on/off toValidate = ( 0 == i) ? true : false; ACTVALUE_TEST(lex_v_ran_v_1, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_1); #if SIZEOF_LONG == 8 ACTVALUE_TEST(lex_v_ran64_v_2 , dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran64_v_2); ACTVALUE_TEST(lex_v_ran64_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003, act_v_ran64_v_2); #else ACTVALUE_TEST(lex_v_ran32_v_2, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran32_v_2); ACTVALUE_TEST(lex_v_ran32_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003, act_v_ran32_v_2); #endif ACTVALUE_TEST(lex_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran32_v_2); ACTVALUE_TEST(lex_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran32_v_2); } /*** * * getCanonicalRepresentation * --------------------------- * availability return value context * ---------------------------------------------- * validation on * ============= * lexical valid * range valid XMLCh n/a * range invalid n/a * lexical invalid 0 st_FOCA0002 * * validation off * ============== * lexical valid * range valid XMLCh n/a * range invalid n/a * lexical invalid 0 st_FOCA0002 * ***/ for (int j = 0; j < 2; j++) { //validation on/off toValidate = ( 0 == j)? true : false; CANREP_TEST(data_rawstr_1, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_1, DONT_CARE); CANREP_TEST(data_rawstr_2, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_2, DONT_CARE); CANREP_TEST(lex_v_ran64_v_2, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran64_v_2_canrep, DONT_CARE); CANREP_TEST(lex_v_ran64_iv_2, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran64_iv_2_canrep, DONT_CARE); CANREP_TEST(lex_iv_1 , dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); CANREP_TEST(lex_iv_2 , dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); } } void test_dt_negativeInteger() { const XSValue::DataType dt = XSValue::dt_negativeInteger; bool toValidate = true; const char lex_v_ran_v_1[]=" -1234 \n"; const char lex_v_ran_iv_1[]="0"; const char lex_v_ran64_v_2[]="-9223372036854775808"; const char lex_v_ran64_iv_2[]="-9223372036854775809"; const char lex_v_ran32_v_2[]="-2147483648"; const char lex_v_ran32_iv_2[]="-2147483649"; XSValue::XSValue_Data act_v_ran_v_1; act_v_ran_v_1.fValue.f_long = (long)-1234; #if SIZEOF_LONG == 8 XSValue::XSValue_Data act_v_ran64_v_2; act_v_ran64_v_2.fValue.f_long = (long)-9223372036854775808; #endif XSValue::XSValue_Data act_v_ran32_v_2; act_v_ran32_v_2.fValue.f_long = (long)-2147483648; const char lex_v_ran64_v_2_canrep[]="-9223372036854775808"; const char lex_v_ran64_iv_2_canrep[]="-9223372036854775809"; const char lex_iv_1[]="12b34.456"; const char lex_iv_2[]="1234b56"; /*** * 3.3.15.2 Canonical representation * * The canonical representation for negativeInteger is defined by prohibiting certain options * from the Lexical representation (3.3.15.1). Specifically, * 1. leading zeroes are prohibited. * ***/ const char data_rawstr_1[]=" -00012345 \n"; const char data_canrep_1[]="-12345"; /*** * * validate * --------- * availability return value context * ---------------------------------------------- * lexical valid * range valid true n/a * range invalid n/a * lexical invalid false st_FOCA0002 * ***/ // lexical valid VALIDATE_TEST(lex_v_ran_v_1 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran_iv_1 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(lex_v_ran64_v_2 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran64_iv_2 , dt, EXP_RET_VALID_TRUE, DONT_CARE); // lexical invalid VALIDATE_TEST(lex_iv_1 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(lex_iv_2 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); /*** * * getActualValue * --------------- * availability return value context * ---------------------------------------------- * validation on * ============= * lexical valid * range valid XSValue n/a * range invalid 0 st_Unpresentable * lexical invalid 0 st_FOCA0002 * * validation off * ============== * lexical valid * range valid XSValue n/a * range invalid 0 st_Unpresentable * lexical invalid 0 st_FOCA0002 * ***/ for (int i = 0; i < 2; i++) { //validation on/off toValidate = ( 0 == i) ? true : false; ACTVALUE_TEST(lex_v_ran_v_1, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_1); #if SIZEOF_LONG == 8 ACTVALUE_TEST(lex_v_ran64_v_2 , dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran64_v_2); ACTVALUE_TEST(lex_v_ran64_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003, act_v_ran64_v_2); #else ACTVALUE_TEST(lex_v_ran32_v_2, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran32_v_2); ACTVALUE_TEST(lex_v_ran32_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003, act_v_ran32_v_2); #endif ACTVALUE_TEST(lex_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran32_v_2); ACTVALUE_TEST(lex_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran32_v_2); } /*** * * getCanonicalRepresentation * --------------------------- * availability return value context * ---------------------------------------------- * validation on * ============= * lexical valid * range valid XMLCh n/a * range invalid n/a * lexical invalid 0 st_FOCA0002 * * validation off * ============== * lexical valid * range valid XMLCh n/a * range invalid n/a * lexical invalid 0 st_FOCA0002 * ***/ for (int j = 0; j < 2; j++) { //validation on/off toValidate = ( 0 == j)? true : false; CANREP_TEST(data_rawstr_1, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_1, DONT_CARE); CANREP_TEST(lex_v_ran64_v_2, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran64_v_2_canrep, DONT_CARE); CANREP_TEST(lex_v_ran64_iv_2, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran64_iv_2_canrep, DONT_CARE); CANREP_TEST(lex_iv_1 , dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); CANREP_TEST(lex_iv_2 , dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); } } void test_dt_long() { const XSValue::DataType dt = XSValue::dt_long; bool toValidate = true; const char lex_v_ran_v_1[]=" 1234 \n"; const char lex_v_ran64_v_1[]="+9223372036854775807"; const char lex_v_ran64_v_2[]="-9223372036854775808"; const char lex_v_ran64_iv_1[]="+9223372036854775808"; const char lex_v_ran64_iv_2[]="-9223372036854775809"; const char lex_v_ran32_v_1[]="+2147483647"; const char lex_v_ran32_v_2[]="-2147483648"; const char lex_v_ran32_iv_1[]="+2147483648"; const char lex_v_ran32_iv_2[]="-2147483649"; XSValue::XSValue_Data act_v_ran_v_1; act_v_ran_v_1.fValue.f_long = (long)1234; #if SIZEOF_LONG == 8 XSValue::XSValue_Data act_v_ran64_v_1; act_v_ran64_v_1.fValue.f_long = (long)+9223372036854775807; XSValue::XSValue_Data act_v_ran64_v_2; act_v_ran64_v_2.fValue.f_long = (long)-9223372036854775808; #endif XSValue::XSValue_Data act_v_ran32_v_1; act_v_ran32_v_1.fValue.f_long = (long)+2147483647; XSValue::XSValue_Data act_v_ran32_v_2; act_v_ran32_v_2.fValue.f_long = (long)-2147483648; const char lex_v_ran64_v_1_canrep[]="9223372036854775807"; const char lex_v_ran64_v_2_canrep[]="-9223372036854775808"; const char lex_v_ran64_iv_1_canrep[]="9223372036854775808"; const char lex_v_ran64_iv_2_canrep[]="-9223372036854775809"; const char lex_iv_1[]="12b34.456"; const char lex_iv_2[]="1234b56"; /*** * 3.3.16.2 Canonical representation * * The canonical representation for long is defined by prohibiting certain options from the * Lexical representation (3.3.16.1). Specifically, * 1. the the optional "+" sign is prohibited and * 2. leading zeroes are prohibited. ***/ const char data_rawstr_1[]=" +12345 \n"; const char data_canrep_1[]="12345"; const char data_rawstr_2[]="00012345"; const char data_canrep_2[]="12345"; /*** * * validate * --------- * availability return value context * ---------------------------------------------- * lexical valid * range valid true n/a * range invalid false st_FOCA0002 * lexical invalid false st_FOCA0002 * ***/ // lexical valid, valid range VALIDATE_TEST(lex_v_ran_v_1 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran64_v_1 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran64_v_2 , dt, EXP_RET_VALID_TRUE, DONT_CARE); // lexical valid, invalid range VALIDATE_TEST(lex_v_ran64_iv_1 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(lex_v_ran64_iv_2 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); // lexical invalid VALIDATE_TEST(lex_iv_1 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(lex_iv_2 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); /*** * * getActualValue * --------------- * availability return value context * ---------------------------------------------- * validation on * ============= * lexical valid * range valid XSValue n/a * range invalid 0 st_Unpresentable * lexical invalid 0 st_FOCA0002 * * validation off * ============== * lexical valid * range valid XSValue n/a * range invalid 0 st_Unpresentable * lexical invalid 0 st_FOCA0002 * ***/ for (int i = 0; i < 2; i++) { //validation on/off toValidate = ( 0 == i) ? true : false; ACTVALUE_TEST(lex_v_ran_v_1, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_1); #if SIZEOF_LONG == 8 ACTVALUE_TEST(lex_v_ran64_v_1 , dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran64_v_1); ACTVALUE_TEST(lex_v_ran64_v_2 , dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran64_v_2); ACTVALUE_TEST(lex_v_ran64_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003, act_v_ran64_v_1); ACTVALUE_TEST(lex_v_ran64_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003, act_v_ran64_v_1); #else ACTVALUE_TEST(lex_v_ran32_v_1, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran32_v_1); ACTVALUE_TEST(lex_v_ran32_v_2, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran32_v_2); ACTVALUE_TEST(lex_v_ran32_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003, act_v_ran32_v_1); ACTVALUE_TEST(lex_v_ran32_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003, act_v_ran32_v_1); #endif ACTVALUE_TEST(lex_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran32_v_1); ACTVALUE_TEST(lex_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran32_v_1); } /*** * * getCanonicalRepresentation * --------------------------- * availability return value context * ---------------------------------------------- * validation on * ============= * lexical valid * range valid XMLCh n/a * range invalid 0 st_FOCA0002 * lexical invalid 0 st_FOCA0002 * * validation off * ============== * lexical valid * range valid XMLCh n/a * range invalid XMLCh n/a * lexical invalid 0 st_FOCA0002 * ***/ for (int j = 0; j < 2; j++) { //validation on/off toValidate = ( 0 == j)? true : false; CANREP_TEST(data_rawstr_1, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_1, DONT_CARE); CANREP_TEST(data_rawstr_2, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_2, XSValue::st_FOCA0002); CANREP_TEST(lex_v_ran64_v_1, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran64_v_1_canrep, DONT_CARE); CANREP_TEST(lex_v_ran64_v_2, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran64_v_2_canrep, DONT_CARE); CANREP_TEST(lex_iv_1 , dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); CANREP_TEST(lex_iv_2 , dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); } //validation on CANREP_TEST(lex_v_ran64_iv_1, dt, true, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); CANREP_TEST(lex_v_ran64_iv_2, dt, true, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); //validation off CANREP_TEST(lex_v_ran64_iv_1, dt, false, EXP_RET_CANREP_TRUE, lex_v_ran64_iv_1_canrep, DONT_CARE); CANREP_TEST(lex_v_ran64_iv_2, dt, false, EXP_RET_CANREP_TRUE, lex_v_ran64_iv_2_canrep, DONT_CARE); } void test_dt_int() { const XSValue::DataType dt = XSValue::dt_int; bool toValidate = true; const char lex_v_ran_v_0[]=" 1234 \n"; const char lex_v_ran_v_1[]="+2147483647"; const char lex_v_ran_v_2[]="-2147483648"; const char lex_v_ran_iv_1[]="+2147483648"; const char lex_v_ran_iv_2[]="-2147483649"; XSValue::XSValue_Data act_v_ran_v_0; act_v_ran_v_0.fValue.f_int = (int)1234; XSValue::XSValue_Data act_v_ran_v_1; act_v_ran_v_1.fValue.f_int = (int)+2147483647; XSValue::XSValue_Data act_v_ran_v_2; act_v_ran_v_2.fValue.f_int = (int)-2147483648; const char lex_v_ran_v_1_canrep[]="2147483647"; const char lex_v_ran_v_2_canrep[]="-2147483648"; const char lex_v_ran_iv_1_canrep[]="2147483648"; const char lex_v_ran_iv_2_canrep[]="-2147483649"; const char lex_iv_1[]="1234.456"; const char lex_iv_2[]="1234b56"; /*** * 3.3.17.2 Canonical representation * * The canonical representation for int is defined by prohibiting certain options from the * Lexical representation (3.3.17.1). Specifically, * 1. the the optional "+" sign is prohibited and * 2. leading zeroes are prohibited. * ***/ const char data_rawstr_1[]=" +12345 \n"; const char data_canrep_1[]="12345"; const char data_rawstr_2[]="00012345"; const char data_canrep_2[]="12345"; /*** * * validate * --------- * availability return value context * ---------------------------------------------- * lexical valid * range valid true n/a * range invalid false st_FOCA0002 * lexical invalid false st_FOCA0002 * ***/ // lexical valid, valid range VALIDATE_TEST(lex_v_ran_v_0 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran_v_1 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran_v_2 , dt, EXP_RET_VALID_TRUE, DONT_CARE); // lexical valid, invalid range VALIDATE_TEST(lex_v_ran_iv_1 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(lex_v_ran_iv_2 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); // lexical invalid VALIDATE_TEST(lex_iv_1 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(lex_iv_2 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); /*** * * getActualValue * --------------- * availability return value context * ---------------------------------------------- * validation on * ============= * lexical valid * range valid XSValue n/a * range invalid 0 st_Unpresentable * lexical invalid 0 st_FOCA0002 * * validation off * ============== * lexical valid * range valid XSValue n/a * range invalid 0 st_Unpresentable * lexical invalid 0 st_FOCA0002 * ***/ for (int i = 0; i < 2; i++) { //validation on/off toValidate = ( 0 == i) ? true : false; ACTVALUE_TEST(lex_v_ran_v_0, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_0); ACTVALUE_TEST(lex_v_ran_v_1, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_1); ACTVALUE_TEST(lex_v_ran_v_2, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_2); ACTVALUE_TEST(lex_v_ran_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0); ACTVALUE_TEST(lex_v_ran_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0); ACTVALUE_TEST(lex_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0); ACTVALUE_TEST(lex_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0); } /*** * * getCanonicalRepresentation * --------------------------- * availability return value context * ---------------------------------------------- * validation on * ============= * lexical valid * range valid XMLCh n/a * range invalid 0 st_FOCA0002 * lexical invalid 0 st_FOCA0002 * * validation off * ============== * lexical valid * range valid XMLCh n/a * range invalid XMLCh n/a * lexical invalid 0 st_FOCA0002 * ***/ for (int j = 0; j < 2; j++) { //validation on/off toValidate = ( 0 == j)? true : false; CANREP_TEST(data_rawstr_1, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_1, DONT_CARE); CANREP_TEST(data_rawstr_2, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_2, XSValue::st_FOCA0002); CANREP_TEST(lex_v_ran_v_1, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran_v_1_canrep, DONT_CARE); CANREP_TEST(lex_v_ran_v_2, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran_v_2_canrep, DONT_CARE); CANREP_TEST(lex_iv_1, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); CANREP_TEST(lex_iv_2, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); } //validation on CANREP_TEST(lex_v_ran_iv_1, dt, true, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); CANREP_TEST(lex_v_ran_iv_2, dt, true, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); //validation off CANREP_TEST(lex_v_ran_iv_1, dt, false, EXP_RET_CANREP_TRUE, lex_v_ran_iv_1_canrep, DONT_CARE); CANREP_TEST(lex_v_ran_iv_2, dt, false, EXP_RET_CANREP_TRUE, lex_v_ran_iv_2_canrep, DONT_CARE); } // 32767 // -32768 void test_dt_short() { const XSValue::DataType dt = XSValue::dt_short; bool toValidate = true; const char lex_v_ran_v_0[]=" 1234 \n"; const char lex_v_ran_v_1[]="+32767"; const char lex_v_ran_v_2[]="-32768"; const char lex_v_ran_iv_1[]="+32768"; const char lex_v_ran_iv_2[]="-32769"; XSValue::XSValue_Data act_v_ran_v_0; act_v_ran_v_0.fValue.f_short = (short)1234; XSValue::XSValue_Data act_v_ran_v_1; act_v_ran_v_1.fValue.f_short = (short)+32767; XSValue::XSValue_Data act_v_ran_v_2; act_v_ran_v_2.fValue.f_short = (short)-32768; const char lex_v_ran_v_1_canrep[]="32767"; const char lex_v_ran_v_2_canrep[]="-32768"; const char lex_v_ran_iv_1_canrep[]="32768"; const char lex_v_ran_iv_2_canrep[]="-32769"; const char lex_iv_1[]="1234.456"; const char lex_iv_2[]="1234b56"; /*** * * 3.3.18.2 Canonical representation * * The canonical representation for short is defined by prohibiting certain options from the * Lexical representation (3.3.18.1). Specifically, * 1. the the optional "+" sign is prohibited and * 2. leading zeroes are prohibited. * ***/ const char data_rawstr_1[]=" +12345 \n"; const char data_canrep_1[]="12345"; const char data_rawstr_2[]="00012345"; const char data_canrep_2[]="12345"; /*** * * validate * --------- * availability return value context * ---------------------------------------------- * lexical valid * range valid true n/a * range invalid false st_FOCA0002 * lexical invalid false st_FOCA0002 * ***/ // lexical valid, valid range VALIDATE_TEST(lex_v_ran_v_0 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran_v_1 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran_v_2 , dt, EXP_RET_VALID_TRUE, DONT_CARE); // lexical valid, invalid range VALIDATE_TEST(lex_v_ran_iv_1 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(lex_v_ran_iv_2 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); // lexical invalid VALIDATE_TEST(lex_iv_1 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(lex_iv_2 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); /*** * * getActualValue * --------------- * availability return value context * ---------------------------------------------- * validation on * ============= * lexical valid * range valid XSValue n/a * range invalid 0 st_Unpresentable * lexical invalid 0 st_FOCA0002 * * validation off * ============== * lexical valid * range valid XSValue n/a * range invalid 0 st_Unpresentable * lexical invalid 0 st_FOCA0002 * ***/ for (int i = 0; i < 2; i++) { //validation on/off toValidate = ( 0 == i) ? true : false; ACTVALUE_TEST(lex_v_ran_v_0, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_0); ACTVALUE_TEST(lex_v_ran_v_1, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_1); ACTVALUE_TEST(lex_v_ran_v_2, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_2); ACTVALUE_TEST(lex_v_ran_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0); ACTVALUE_TEST(lex_v_ran_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0); ACTVALUE_TEST(lex_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0); ACTVALUE_TEST(lex_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0); } /*** * * getCanonicalRepresentation * --------------------------- * availability return value context * ---------------------------------------------- * validation on * ============= * lexical valid * range valid XMLCh n/a * range invalid 0 st_FOCA0002 * lexical invalid 0 st_FOCA0002 * * validation off * ============== * lexical valid * range valid XMLCh n/a * range invalid XMLCh n/a * lexical invalid 0 st_FOCA0002 * ***/ for (int j = 0; j < 2; j++) { //validation on/off toValidate = ( 0 == j)? true : false; CANREP_TEST(data_rawstr_1, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_1, DONT_CARE); CANREP_TEST(data_rawstr_2, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_2, XSValue::st_FOCA0002); CANREP_TEST(lex_v_ran_v_1, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran_v_1_canrep, DONT_CARE); CANREP_TEST(lex_v_ran_v_2, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran_v_2_canrep, DONT_CARE); CANREP_TEST(lex_iv_1, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); CANREP_TEST(lex_iv_2, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); } //validation on CANREP_TEST(lex_v_ran_iv_1, dt, true, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); CANREP_TEST(lex_v_ran_iv_2, dt, true, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); //validation off CANREP_TEST(lex_v_ran_iv_1, dt, false, EXP_RET_CANREP_TRUE, lex_v_ran_iv_1_canrep, DONT_CARE); CANREP_TEST(lex_v_ran_iv_2, dt, false, EXP_RET_CANREP_TRUE, lex_v_ran_iv_2_canrep, DONT_CARE); } //127 //-128 void test_dt_byte() { const XSValue::DataType dt = XSValue::dt_byte; bool toValidate = true; const char lex_v_ran_v_0[]=" 12 \n"; const char lex_v_ran_v_1[]="+127"; const char lex_v_ran_v_2[]="-128"; const char lex_v_ran_iv_1[]="+128"; const char lex_v_ran_iv_2[]="-129"; XSValue::XSValue_Data act_v_ran_v_0; act_v_ran_v_0.fValue.f_char = (char)12; XSValue::XSValue_Data act_v_ran_v_1; act_v_ran_v_1.fValue.f_char = (char)+127; XSValue::XSValue_Data act_v_ran_v_2; act_v_ran_v_2.fValue.f_char = (char)-128; const char lex_v_ran_v_1_canrep[]="127"; const char lex_v_ran_v_2_canrep[]="-128"; const char lex_v_ran_iv_1_canrep[]="128"; const char lex_v_ran_iv_2_canrep[]="-129"; const char lex_iv_1[]="1234.456"; const char lex_iv_2[]="1234b56"; /*** * * 3.3.19.2 Canonical representation * * The canonical representation for byte is defined by prohibiting certain options from the * Lexical representation (3.3.19.1). Specifically, * 1. the the optional "+" sign is prohibited and * 2. leading zeroes are prohibited. * ***/ const char data_rawstr_1[]=" +123 \n"; const char data_canrep_1[]="123"; const char data_rawstr_2[]="000123"; const char data_canrep_2[]="123"; /*** * * validate * --------- * availability return value context * ---------------------------------------------- * lexical valid * range valid true n/a * range invalid false st_FOCA0002 * lexical invalid false st_FOCA0002 * ***/ // lexical valid, valid range VALIDATE_TEST(lex_v_ran_v_0 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran_v_1 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran_v_2 , dt, EXP_RET_VALID_TRUE, DONT_CARE); // lexical valid, invalid range VALIDATE_TEST(lex_v_ran_iv_1 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(lex_v_ran_iv_2 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); // lexical invalid VALIDATE_TEST(lex_iv_1 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(lex_iv_2 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); /*** * * getActualValue * --------------- * availability return value context * ---------------------------------------------- * validation on * ============= * lexical valid * range valid XSValue n/a * range invalid 0 st_Unpresentable * lexical invalid 0 st_FOCA0002 * * validation off * ============== * lexical valid * range valid XSValue n/a * range invalid 0 st_Unpresentable * lexical invalid 0 st_FOCA0002 * ***/ for (int i = 0; i < 2; i++) { //validation on/off toValidate = ( 0 == i) ? true : false; ACTVALUE_TEST(lex_v_ran_v_0, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_0); ACTVALUE_TEST(lex_v_ran_v_1, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_1); ACTVALUE_TEST(lex_v_ran_v_2, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_2); ACTVALUE_TEST(lex_v_ran_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0); ACTVALUE_TEST(lex_v_ran_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0); ACTVALUE_TEST(lex_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0); ACTVALUE_TEST(lex_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0); } /*** * * getCanonicalRepresentation * --------------------------- * availability return value context * ---------------------------------------------- * validation on * ============= * lexical valid * range valid XMLCh n/a * range invalid 0 st_FOCA0002 * lexical invalid 0 st_FOCA0002 * * validation off * ============== * lexical valid * range valid XMLCh n/a * range invalid XMLCh n/a * lexical invalid 0 st_FOCA0002 * ***/ for (int j = 0; j < 2; j++) { //validation on/off toValidate = ( 0 == j)? true : false; CANREP_TEST(data_rawstr_1, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_1, DONT_CARE); CANREP_TEST(data_rawstr_2, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_2, XSValue::st_FOCA0002); CANREP_TEST(lex_v_ran_v_1, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran_v_1_canrep, DONT_CARE); CANREP_TEST(lex_v_ran_v_2, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran_v_2_canrep, DONT_CARE); CANREP_TEST(lex_iv_1, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); CANREP_TEST(lex_iv_2, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); } //validation on CANREP_TEST(lex_v_ran_iv_1, dt, true, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); CANREP_TEST(lex_v_ran_iv_2, dt, true, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); //validation off CANREP_TEST(lex_v_ran_iv_1, dt, false, EXP_RET_CANREP_TRUE, lex_v_ran_iv_1_canrep, DONT_CARE); CANREP_TEST(lex_v_ran_iv_2, dt, false, EXP_RET_CANREP_TRUE, lex_v_ran_iv_2_canrep, DONT_CARE); } void test_dt_nonNegativeInteger() { const XSValue::DataType dt = XSValue::dt_nonNegativeInteger; bool toValidate = true; const char lex_v_ran_v_1[]=" 1234 \n"; const char lex_v_ran_iv_1[]="-1"; const char lex_v_ran64_v_2[]="+18446744073709551615"; const char lex_v_ran64_iv_2[]="+18446744073709551616"; const char lex_v_ran32_v_2[]="4294967295"; const char lex_v_ran32_iv_2[]="4294967296"; XSValue::XSValue_Data act_v_ran_v_1; act_v_ran_v_1.fValue.f_ulong = (unsigned long)1234; #if SIZEOF_LONG == 8 XSValue::XSValue_Data act_v_ran64_v_2; act_v_ran64_v_2.fValue.f_ulong = (unsigned long)+18446744073709551615; #endif XSValue::XSValue_Data act_v_ran32_v_2; act_v_ran32_v_2.fValue.f_ulong = (unsigned long)4294967295; const char lex_v_ran64_v_2_canrep[]="18446744073709551615"; const char lex_v_ran64_iv_2_canrep[]="18446744073709551616"; const char lex_iv_1[]="12b34.456"; const char lex_iv_2[]="1234b56"; /*** * 3.3.20.2 Canonical representation * * The canonical representation for nonNegativeInteger is defined by prohibiting certain options from the * Lexical representation (3.3.20.1). Specifically, * 1. the the optional "+" sign is prohibited and * 2. leading zeroes are prohibited. * ***/ const char data_rawstr_1[]=" 0 \n"; const char data_canrep_1[]="0"; const char data_rawstr_2[]="+00012345"; const char data_canrep_2[]="12345"; /*** * * validate * --------- * availability return value context * ---------------------------------------------- * lexical valid * range valid true n/a * range invalid n/a * lexical invalid false st_FOCA0002 * ***/ // lexical valid VALIDATE_TEST(lex_v_ran_v_1 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran_iv_1 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(lex_v_ran64_v_2 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran64_iv_2 , dt, EXP_RET_VALID_TRUE, DONT_CARE); // lexical invalid VALIDATE_TEST(lex_iv_1 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(lex_iv_2 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); /*** * * getActualValue * --------------- * availability return value context * ---------------------------------------------- * validation on * ============= * lexical valid * range valid XSValue n/a * range invalid 0 st_Unpresentable * lexical invalid 0 st_FOCA0002 * * validation off * ============== * lexical valid * range valid XSValue n/a * range invalid 0 st_Unpresentable * lexical invalid 0 st_FOCA0002 * ***/ for (int i = 0; i < 2; i++) { //validation on/off toValidate = ( 0 == i) ? true : false; ACTVALUE_TEST(lex_v_ran_v_1, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_1); #if SIZEOF_LONG == 8 ACTVALUE_TEST(lex_v_ran64_v_2 , dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran64_v_2); ACTVALUE_TEST(lex_v_ran64_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003, act_v_ran64_v_2); #else ACTVALUE_TEST(lex_v_ran32_v_2, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran32_v_2); ACTVALUE_TEST(lex_v_ran32_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003, act_v_ran32_v_2); #endif ACTVALUE_TEST(lex_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran32_v_2); ACTVALUE_TEST(lex_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran32_v_2); } /*** * * getCanonicalRepresentation * --------------------------- * availability return value context * ---------------------------------------------- * validation on * ============= * lexical valid * range valid XMLCh n/a * range invalid n/a * lexical invalid 0 st_FOCA0002 * * validation off * ============== * lexical valid * range valid XMLCh n/a * range invalid n/a * lexical invalid 0 st_FOCA0002 * ***/ for (int j = 0; j < 2; j++) { //validation on/off toValidate = ( 0 == j)? true : false; CANREP_TEST(data_rawstr_1, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_1, DONT_CARE); CANREP_TEST(data_rawstr_2, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_2, DONT_CARE); CANREP_TEST(lex_v_ran64_v_2, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran64_v_2_canrep, DONT_CARE); CANREP_TEST(lex_v_ran64_iv_2, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran64_iv_2_canrep, DONT_CARE); CANREP_TEST(lex_iv_1 , dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); CANREP_TEST(lex_iv_2 , dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); } } //18446744073709551615 // 4294967295 void test_dt_unsignedLong() { const XSValue::DataType dt = XSValue::dt_unsignedLong; bool toValidate = true; const char lex_v_ran_v_1[]=" 1234 \n"; const char lex_v_ran64_v_1[]="+18446744073709551615"; const char lex_v_ran64_v_2[]="0"; const char lex_v_ran64_iv_1[]="+18446744073709551616"; const char lex_v_ran64_iv_2[]="-1"; const char lex_v_ran32_v_1[]="+4294967295"; const char lex_v_ran32_v_2[]="0"; const char lex_v_ran32_iv_1[]="4294967296"; const char lex_v_ran32_iv_2[]="-1"; XSValue::XSValue_Data act_v_ran_v_1; act_v_ran_v_1.fValue.f_ulong = (unsigned long)1234; #if SIZEOF_LONG == 8 XSValue::XSValue_Data act_v_ran64_v_1; act_v_ran64_v_1.fValue.f_ulong = (unsigned long)+18446744073709551615; XSValue::XSValue_Data act_v_ran64_v_2; act_v_ran64_v_2.fValue.f_ulong = (unsigned long)0; #endif XSValue::XSValue_Data act_v_ran32_v_1; act_v_ran32_v_1.fValue.f_ulong = (unsigned long)+4294967295; XSValue::XSValue_Data act_v_ran32_v_2; act_v_ran32_v_2.fValue.f_ulong = (unsigned long)0; const char lex_v_ran64_v_1_canrep[]="18446744073709551615"; const char lex_v_ran64_v_2_canrep[]="0"; const char lex_v_ran64_iv_1_canrep[]="18446744073709551616"; const char lex_v_ran64_iv_2_canrep[]="-1"; const char lex_iv_1[]="12b34.456"; const char lex_iv_2[]="1234b56"; /*** * 3.3.16.2 Canonical representation * * The canonical representation for long is defined by prohibiting certain options from the * Lexical representation (3.3.16.1). Specifically, * 1. the the optional "+" sign is prohibited and * 2. leading zeroes are prohibited. ***/ const char data_rawstr_1[]=" +12345 \n"; const char data_canrep_1[]="12345"; const char data_rawstr_2[]="00012345"; const char data_canrep_2[]="12345"; /*** * * validate * --------- * availability return value context * ---------------------------------------------- * lexical valid * range valid true n/a * range invalid false st_FOCA0002 * lexical invalid false st_FOCA0002 * ***/ // lexical valid, valid range VALIDATE_TEST(lex_v_ran_v_1 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran64_v_1 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran64_v_2 , dt, EXP_RET_VALID_TRUE, DONT_CARE); // lexical valid, invalid range VALIDATE_TEST(lex_v_ran64_iv_1 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(lex_v_ran64_iv_2 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); // lexical invalid VALIDATE_TEST(lex_iv_1 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(lex_iv_2 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); /*** * * getActualValue * --------------- * availability return value context * ---------------------------------------------- * validation on * ============= * lexical valid * range valid XSValue n/a * range invalid 0 st_Unpresentable * lexical invalid 0 st_FOCA0002 * * validation off * ============== * lexical valid * range valid XSValue n/a * range invalid 0 st_Unpresentable * lexical invalid 0 st_FOCA0002 * ***/ for (int i = 0; i < 2; i++) { //validation on/off toValidate = ( 0 == i) ? true : false; ACTVALUE_TEST(lex_v_ran_v_1, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_1); #if SIZEOF_LONG == 8 ACTVALUE_TEST(lex_v_ran64_v_1 , dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran64_v_1); ACTVALUE_TEST(lex_v_ran64_v_2 , dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran64_v_2); ACTVALUE_TEST(lex_v_ran64_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003, act_v_ran64_v_1); ACTVALUE_TEST(lex_v_ran64_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran64_v_1); #else ACTVALUE_TEST(lex_v_ran32_v_1, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran32_v_1); ACTVALUE_TEST(lex_v_ran32_v_2, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran32_v_2); ACTVALUE_TEST(lex_v_ran32_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003, act_v_ran32_v_1); ACTVALUE_TEST(lex_v_ran32_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran32_v_1); #endif ACTVALUE_TEST(lex_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran32_v_1); ACTVALUE_TEST(lex_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran32_v_1); } /*** * * getCanonicalRepresentation * --------------------------- * availability return value context * ---------------------------------------------- * validation on * ============= * lexical valid * range valid XMLCh n/a * range invalid 0 st_FOCA0002 * lexical invalid 0 st_FOCA0002 * * validation off * ============== * lexical valid * range valid XMLCh n/a * range invalid XMLCh n/a * lexical invalid 0 st_FOCA0002 * ***/ for (int j = 0; j < 2; j++) { //validation on/off toValidate = ( 0 == j)? true : false; CANREP_TEST(data_rawstr_1, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_1, DONT_CARE); CANREP_TEST(data_rawstr_2, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_2, XSValue::st_FOCA0002); CANREP_TEST(lex_v_ran64_v_1, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran64_v_1_canrep, DONT_CARE); CANREP_TEST(lex_v_ran64_v_2, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran64_v_2_canrep, DONT_CARE); CANREP_TEST(lex_iv_1 , dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); CANREP_TEST(lex_iv_2 , dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); } //validation on CANREP_TEST(lex_v_ran64_iv_1, dt, true, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); CANREP_TEST(lex_v_ran64_iv_2, dt, true, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); //validation off CANREP_TEST(lex_v_ran64_iv_1, dt, false, EXP_RET_CANREP_TRUE, lex_v_ran64_iv_1_canrep, DONT_CARE); CANREP_TEST(lex_v_ran64_iv_2, dt, false, EXP_RET_CANREP_TRUE, lex_v_ran64_iv_2_canrep, DONT_CARE); } //4294967295 void test_dt_unsignedInt() { const XSValue::DataType dt = XSValue::dt_unsignedInt; bool toValidate = true; const char lex_v_ran_v_0[]=" 1234 \n"; const char lex_v_ran_v_1[]="+4294967295"; const char lex_v_ran_v_2[]="0"; const char lex_v_ran_iv_1[]="4294967296"; const char lex_v_ran_iv_2[]="-1"; XSValue::XSValue_Data act_v_ran_v_0; act_v_ran_v_0.fValue.f_uint = (unsigned int)1234; XSValue::XSValue_Data act_v_ran_v_1; act_v_ran_v_1.fValue.f_uint = (unsigned int)+4294967295; XSValue::XSValue_Data act_v_ran_v_2; act_v_ran_v_2.fValue.f_uint = (unsigned int)0; const char lex_v_ran_v_1_canrep[]="4294967295"; const char lex_v_ran_v_2_canrep[]="0"; const char lex_v_ran_iv_1_canrep[]="4294967296"; const char lex_v_ran_iv_2_canrep[]="-1"; const char lex_iv_1[]="12b34.456"; const char lex_iv_2[]="1234b56"; /*** * 3.3.22.2 Canonical representation * * The canonical representation for unsignedInt is defined by prohibiting certain options from the * Lexical representation (3.3.22.1). Specifically, * leading zeroes are prohibited. * ***/ const char data_rawstr_1[]=" +12345 \n"; const char data_canrep_1[]="12345"; const char data_rawstr_2[]="00012345"; const char data_canrep_2[]="12345"; /*** * * validate * --------- * availability return value context * ---------------------------------------------- * lexical valid * range valid true n/a * range invalid false st_FOCA0002 * lexical invalid false st_FOCA0002 * ***/ // lexical valid, valid range VALIDATE_TEST(lex_v_ran_v_0 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran_v_1 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran_v_2 , dt, EXP_RET_VALID_TRUE, DONT_CARE); // lexical valid, invalid range VALIDATE_TEST(lex_v_ran_iv_1 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(lex_v_ran_iv_2 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); // lexical invalid VALIDATE_TEST(lex_iv_1 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(lex_iv_2 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); /*** * * getActualValue * --------------- * availability return value context * ---------------------------------------------- * validation on * ============= * lexical valid * range valid XSValue n/a * range invalid 0 st_Unpresentable * lexical invalid 0 st_FOCA0002 * * validation off * ============== * lexical valid * range valid XSValue n/a * range invalid 0 st_Unpresentable * lexical invalid 0 st_FOCA0002 * ***/ for (int i = 0; i < 2; i++) { //validation on/off toValidate = ( 0 == i) ? true : false; ACTVALUE_TEST(lex_v_ran_v_0, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_0); ACTVALUE_TEST(lex_v_ran_v_1, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_1); ACTVALUE_TEST(lex_v_ran_v_2, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_2); ACTVALUE_TEST(lex_v_ran_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0); ACTVALUE_TEST(lex_v_ran_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0); ACTVALUE_TEST(lex_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0); ACTVALUE_TEST(lex_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0); } /*** * * getCanonicalRepresentation * --------------------------- * availability return value context * ---------------------------------------------- * validation on * ============= * lexical valid * range valid XMLCh n/a * range invalid 0 st_FOCA0002 * lexical invalid 0 st_FOCA0002 * * validation off * ============== * lexical valid * range valid XMLCh n/a * range invalid XMLCh n/a * lexical invalid 0 st_FOCA0002 * ***/ for (int j = 0; j < 2; j++) { //validation on/off toValidate = ( 0 == j)? true : false; CANREP_TEST(data_rawstr_1, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_1, DONT_CARE); CANREP_TEST(data_rawstr_2, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_2, XSValue::st_FOCA0002); CANREP_TEST(lex_v_ran_v_1, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran_v_1_canrep, DONT_CARE); CANREP_TEST(lex_v_ran_v_2, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran_v_2_canrep, DONT_CARE); CANREP_TEST(lex_iv_1 , dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); CANREP_TEST(lex_iv_2 , dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); } //validation on CANREP_TEST(lex_v_ran_iv_1, dt, true, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); CANREP_TEST(lex_v_ran_iv_2, dt, true, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); //validation off CANREP_TEST(lex_v_ran_iv_1, dt, false, EXP_RET_CANREP_TRUE, lex_v_ran_iv_1_canrep, DONT_CARE); CANREP_TEST(lex_v_ran_iv_2, dt, false, EXP_RET_CANREP_TRUE, lex_v_ran_iv_2_canrep, DONT_CARE); } //65535 void test_dt_unsignedShort() { const XSValue::DataType dt = XSValue::dt_unsignedShort; bool toValidate = true; const char lex_v_ran_v_0[]=" 1234 \n"; const char lex_v_ran_v_1[]="+65535"; const char lex_v_ran_v_2[]="0"; const char lex_v_ran_iv_1[]="+65536"; const char lex_v_ran_iv_2[]="-1"; XSValue::XSValue_Data act_v_ran_v_0; act_v_ran_v_0.fValue.f_ushort = (unsigned short)1234; XSValue::XSValue_Data act_v_ran_v_1; act_v_ran_v_1.fValue.f_ushort = (unsigned short)+65535; XSValue::XSValue_Data act_v_ran_v_2; act_v_ran_v_2.fValue.f_ushort = (unsigned short)0; const char lex_v_ran_v_1_canrep[]="65535"; const char lex_v_ran_v_2_canrep[]="0"; const char lex_v_ran_iv_1_canrep[]="65536"; const char lex_v_ran_iv_2_canrep[]="-1"; const char lex_iv_1[]="12b34.456"; const char lex_iv_2[]="1234b56"; /*** * 3.3.23.2 Canonical representation * * The canonical representation for unsignedShort is defined by prohibiting certain options from the * Lexical representation (3.3.23.1). Specifically, * 1. the leading zeroes are prohibited. * ***/ const char data_rawstr_1[]=" +12345 \n"; const char data_canrep_1[]="12345"; const char data_rawstr_2[]="00012345"; const char data_canrep_2[]="12345"; /*** * * validate * --------- * availability return value context * ---------------------------------------------- * lexical valid * range valid true n/a * range invalid false st_FOCA0002 * lexical invalid false st_FOCA0002 * ***/ // lexical valid, valid range VALIDATE_TEST(lex_v_ran_v_0 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran_v_1 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran_v_2 , dt, EXP_RET_VALID_TRUE, DONT_CARE); // lexical valid, invalid range VALIDATE_TEST(lex_v_ran_iv_1 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(lex_v_ran_iv_2 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); // lexical invalid VALIDATE_TEST(lex_iv_1 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(lex_iv_2 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); /*** * * getActualValue * --------------- * availability return value context * ---------------------------------------------- * validation on * ============= * lexical valid * range valid XSValue n/a * range invalid 0 st_Unpresentable * lexical invalid 0 st_FOCA0002 * * validation off * ============== * lexical valid * range valid XSValue n/a * range invalid 0 st_Unpresentable * lexical invalid 0 st_FOCA0002 * ***/ for (int i = 0; i < 2; i++) { //validation on/off toValidate = ( 0 == i) ? true : false; ACTVALUE_TEST(lex_v_ran_v_0, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_0); ACTVALUE_TEST(lex_v_ran_v_1, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_1); ACTVALUE_TEST(lex_v_ran_v_2, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_2); ACTVALUE_TEST(lex_v_ran_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0); ACTVALUE_TEST(lex_v_ran_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0); ACTVALUE_TEST(lex_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0); ACTVALUE_TEST(lex_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0); } /*** * * getCanonicalRepresentation * --------------------------- * availability return value context * ---------------------------------------------- * validation on * ============= * lexical valid * range valid XMLCh n/a * range invalid 0 st_FOCA0002 * lexical invalid 0 st_FOCA0002 * * validation off * ============== * lexical valid * range valid XMLCh n/a * range invalid XMLCh n/a * lexical invalid 0 st_FOCA0002 * ***/ for (int j = 0; j < 2; j++) { //validation on/off toValidate = ( 0 == j)? true : false; CANREP_TEST(data_rawstr_1, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_1, DONT_CARE); CANREP_TEST(data_rawstr_2, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_2, XSValue::st_FOCA0002); CANREP_TEST(lex_v_ran_v_1, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran_v_1_canrep, DONT_CARE); CANREP_TEST(lex_v_ran_v_2, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran_v_2_canrep, DONT_CARE); CANREP_TEST(lex_iv_1 , dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); CANREP_TEST(lex_iv_2 , dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); } //validation on CANREP_TEST(lex_v_ran_iv_1, dt, true, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); CANREP_TEST(lex_v_ran_iv_2, dt, true, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); //validation off CANREP_TEST(lex_v_ran_iv_1, dt, false, EXP_RET_CANREP_TRUE, lex_v_ran_iv_1_canrep, DONT_CARE); CANREP_TEST(lex_v_ran_iv_2, dt, false, EXP_RET_CANREP_TRUE, lex_v_ran_iv_2_canrep, DONT_CARE); } // 255 void test_dt_unsignedByte() { const XSValue::DataType dt = XSValue::dt_unsignedByte; bool toValidate = true; const char lex_v_ran_v_0[]=" 123 \n"; const char lex_v_ran_v_1[]="+255"; const char lex_v_ran_v_2[]="0"; const char lex_v_ran_iv_1[]="+256"; const char lex_v_ran_iv_2[]="-1"; XSValue::XSValue_Data act_v_ran_v_0; act_v_ran_v_0.fValue.f_uchar = (unsigned char)123; XSValue::XSValue_Data act_v_ran_v_1; act_v_ran_v_1.fValue.f_uchar = (unsigned char)+255; XSValue::XSValue_Data act_v_ran_v_2; act_v_ran_v_2.fValue.f_uchar = (unsigned char)0; const char lex_v_ran_v_1_canrep[]="255"; const char lex_v_ran_v_2_canrep[]="0"; const char lex_v_ran_iv_1_canrep[]="256"; const char lex_v_ran_iv_2_canrep[]="-1"; const char lex_iv_1[]="12b34.456"; const char lex_iv_2[]="1234b56"; /*** * 3.3.24.2 Canonical representation * * The canonical representation for unsignedByte is defined by prohibiting certain options from the * Lexical representation (3.3.24.1). Specifically, * 1. leading zeroes are prohibited. * ***/ const char data_rawstr_1[]=" +123 \n"; const char data_canrep_1[]="123"; const char data_rawstr_2[]="000123"; const char data_canrep_2[]="123"; /*** * * validate * --------- * availability return value context * ---------------------------------------------- * lexical valid * range valid true n/a * range invalid false st_FOCA0002 * lexical invalid false st_FOCA0002 * ***/ // lexical valid, valid range VALIDATE_TEST(lex_v_ran_v_0 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran_v_1 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran_v_2 , dt, EXP_RET_VALID_TRUE, DONT_CARE); // lexical valid, invalid range VALIDATE_TEST(lex_v_ran_iv_1 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(lex_v_ran_iv_2 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); // lexical invalid VALIDATE_TEST(lex_iv_1 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(lex_iv_2 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); /*** * * getActualValue * --------------- * availability return value context * ---------------------------------------------- * validation on * ============= * lexical valid * range valid XSValue n/a * range invalid 0 st_Unpresentable * lexical invalid 0 st_FOCA0002 * * validation off * ============== * lexical valid * range valid XSValue n/a * range invalid 0 st_Unpresentable * lexical invalid 0 st_FOCA0002 * ***/ for (int i = 0; i < 2; i++) { //validation on/off toValidate = ( 0 == i) ? true : false; ACTVALUE_TEST(lex_v_ran_v_0, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_0); ACTVALUE_TEST(lex_v_ran_v_1, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_1); ACTVALUE_TEST(lex_v_ran_v_2, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_2); ACTVALUE_TEST(lex_v_ran_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0); ACTVALUE_TEST(lex_v_ran_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0); ACTVALUE_TEST(lex_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0); ACTVALUE_TEST(lex_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_0); } /*** * * getCanonicalRepresentation * --------------------------- * availability return value context * ---------------------------------------------- * validation on * ============= * lexical valid * range valid XMLCh n/a * range invalid 0 st_FOCA0002 * lexical invalid 0 st_FOCA0002 * * validation off * ============== * lexical valid * range valid XMLCh n/a * range invalid XMLCh n/a * lexical invalid 0 st_FOCA0002 * ***/ for (int j = 0; j < 2; j++) { //validation on/off toValidate = ( 0 == j)? true : false; CANREP_TEST(data_rawstr_1, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_1, DONT_CARE); CANREP_TEST(data_rawstr_2, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_2, XSValue::st_FOCA0002); CANREP_TEST(lex_v_ran_v_1, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran_v_1_canrep, DONT_CARE); CANREP_TEST(lex_v_ran_v_2, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran_v_2_canrep, DONT_CARE); CANREP_TEST(lex_iv_1 , dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); CANREP_TEST(lex_iv_2 , dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); } //validation on CANREP_TEST(lex_v_ran_iv_1, dt, true, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); CANREP_TEST(lex_v_ran_iv_2, dt, true, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); //validation off CANREP_TEST(lex_v_ran_iv_1, dt, false, EXP_RET_CANREP_TRUE, lex_v_ran_iv_1_canrep, DONT_CARE); CANREP_TEST(lex_v_ran_iv_2, dt, false, EXP_RET_CANREP_TRUE, lex_v_ran_iv_2_canrep, DONT_CARE); } void test_dt_positiveInteger() { const XSValue::DataType dt = XSValue::dt_positiveInteger; bool toValidate = true; const char lex_v_ran_v_1[]=" 1234 \n"; const char lex_v_ran_iv_1[]="0"; const char lex_v_ran64_v_2[]="+18446744073709551615"; const char lex_v_ran64_iv_2[]="+18446744073709551616"; const char lex_v_ran32_v_2[]="4294967295"; const char lex_v_ran32_iv_2[]="4294967296"; XSValue::XSValue_Data act_v_ran_v_1; act_v_ran_v_1.fValue.f_ulong = (unsigned long)1234; #if SIZEOF_LONG == 8 XSValue::XSValue_Data act_v_ran64_v_2; act_v_ran64_v_2.fValue.f_ulong = (unsigned long)+18446744073709551615; #endif XSValue::XSValue_Data act_v_ran32_v_2; act_v_ran32_v_2.fValue.f_ulong = (unsigned long)+4294967295; const char lex_v_ran64_v_2_canrep[]="18446744073709551615"; const char lex_v_ran64_iv_2_canrep[]="18446744073709551616"; const char lex_iv_1[]="12b34.456"; const char lex_iv_2[]="1234b56"; /*** * 3.3.25.2 Canonical representation * * The canonical representation for positiveInteger is defined by prohibiting certain options from the * Lexical representation (3.3.25.1). Specifically, * 1. the optional "+" sign is prohibited and * 2. leading zeroes are prohibited. * ***/ const char data_rawstr_1[]=" +1 \n"; const char data_canrep_1[]="1"; const char data_rawstr_2[]="+00012345"; const char data_canrep_2[]="12345"; /*** * * validate * --------- * availability return value context * ---------------------------------------------- * lexical valid * range valid true n/a * range invalid n/a * lexical invalid false st_FOCA0002 * ***/ // lexical valid VALIDATE_TEST(lex_v_ran_v_1 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran_iv_1 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(lex_v_ran64_v_2 , dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_ran64_iv_2 , dt, EXP_RET_VALID_TRUE, DONT_CARE); // lexical invalid VALIDATE_TEST(lex_iv_1 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(lex_iv_2 , dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); /*** * * getActualValue * --------------- * availability return value context * ---------------------------------------------- * validation on * ============= * lexical valid * range valid XSValue n/a * range invalid 0 st_Unpresentable * lexical invalid 0 st_FOCA0002 * * validation off * ============== * lexical valid * range valid XSValue n/a * range invalid 0 st_Unpresentable * lexical invalid 0 st_FOCA0002 * ***/ for (int i = 0; i < 2; i++) { //validation on/off toValidate = ( 0 == i) ? true : false; ACTVALUE_TEST(lex_v_ran_v_1, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_1); #if SIZEOF_LONG == 8 ACTVALUE_TEST(lex_v_ran64_v_2 , dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran64_v_2); ACTVALUE_TEST(lex_v_ran64_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003, act_v_ran64_v_2); #else ACTVALUE_TEST(lex_v_ran32_v_2, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran32_v_2); ACTVALUE_TEST(lex_v_ran32_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0003, act_v_ran32_v_2); #endif ACTVALUE_TEST(lex_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran32_v_2); ACTVALUE_TEST(lex_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran32_v_2); } /*** * * getCanonicalRepresentation * --------------------------- * availability return value context * ---------------------------------------------- * validation on * ============= * lexical valid * range valid XMLCh n/a * range invalid n/a * lexical invalid 0 st_FOCA0002 * * validation off * ============== * lexical valid * range valid XMLCh n/a * range invalid n/a * lexical invalid 0 st_FOCA0002 * ***/ for (int j = 0; j < 2; j++) { //validation on/off toValidate = ( 0 == j)? true : false; CANREP_TEST(data_rawstr_1, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_1, DONT_CARE); CANREP_TEST(data_rawstr_2, dt, toValidate, EXP_RET_CANREP_TRUE, data_canrep_2, DONT_CARE); CANREP_TEST(lex_v_ran64_v_2, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran64_v_2_canrep, DONT_CARE); CANREP_TEST(lex_v_ran64_iv_2, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_ran64_iv_2_canrep, DONT_CARE); CANREP_TEST(lex_iv_1 , dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); CANREP_TEST(lex_iv_2 , dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); } } void test_dt_boolean() { const XSValue::DataType dt = XSValue::dt_boolean; bool toValidate = true; const char lex_v_1[]=" 1 \n"; const char lex_v_2[]="0"; const char lex_v_3[]="true"; const char lex_v_4[]="false"; XSValue::XSValue_Data act_v_ran_v_1; act_v_ran_v_1.fValue.f_bool = true; XSValue::XSValue_Data act_v_ran_v_2; act_v_ran_v_2.fValue.f_bool = false; XSValue::XSValue_Data act_v_ran_v_3; act_v_ran_v_3.fValue.f_bool = true; XSValue::XSValue_Data act_v_ran_v_4; act_v_ran_v_4.fValue.f_bool = false; const char lex_iv_1[]="2"; const char lex_v_1_canrep[]="true"; const char lex_v_2_canrep[]="false"; const char lex_v_3_canrep[]="true"; const char lex_v_4_canrep[]="false"; /*** * 3.2.2.2 Canonical representation * * The canonical representation for boolean is the set of literals {true, false}. * ***/ /*** * * validate * --------- * availability return value context * ---------------------------------------------- * lexical valid true n/a * lexical invalid false st_FOCA0002 * ***/ // lexical valid VALIDATE_TEST(lex_v_1, dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_2, dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_3, dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_4, dt, EXP_RET_VALID_TRUE, DONT_CARE); // lexical invalid VALIDATE_TEST(lex_iv_1, dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); /*** * * getActualValue * --------------- * availability return value context * ---------------------------------------------- * validation on * ============= * lexical valid XSValue n/a * lexical invalid 0 st_FOCA0002 * * validation off * ============== * lexical valid XSValue n/a * lexical invalid 0 st_FOCA0002 * ***/ for (int i = 0; i < 2; i++) { //validation on/off toValidate = ( 0 == i) ? true : false; // lexical valid ACTVALUE_TEST(lex_v_1, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_1); ACTVALUE_TEST(lex_v_2, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_2); ACTVALUE_TEST(lex_v_3, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_3); ACTVALUE_TEST(lex_v_4, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_4); // lexical invalid ACTVALUE_TEST(lex_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1); } /*** * * getCanonicalRepresentation * --------------------------- * availability return value context * ---------------------------------------------- * * validation on * ============= * lexical valid XMLCh n/a * lexical invalid 0 st_FOCA0002 * * validation off * ============== * lexical valid XMLCh n/a * lexical invalid 0 st_FOCA0002 * ***/ for (int j = 0; j < 2; j++) { //validation on/off toValidate = ( 0 == j) ? true : false; // lexical valid CANREP_TEST(lex_v_1, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_1_canrep, DONT_CARE); CANREP_TEST(lex_v_2, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_2_canrep, DONT_CARE); CANREP_TEST(lex_v_3, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_3_canrep, DONT_CARE); CANREP_TEST(lex_v_4, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_4_canrep, DONT_CARE); // lexical invalid CANREP_TEST(lex_iv_1, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); } } void test_dt_hexBinary() { const XSValue::DataType dt = XSValue::dt_hexBinary; bool toValidate = true; const char lex_v_1[]=" 0fb7 \n"; const char lex_v_2[]="1234"; const char lex_iv_1[]="0gb7"; const char lex_iv_2[]="123"; XSValue::XSValue_Data act_v_ran_v_1; XSValue::XSValue_Data act_v_ran_v_2; act_v_ran_v_1.fValue.f_byteVal = new XMLByte[2]; act_v_ran_v_1.fValue.f_byteVal[0] = 0xf; act_v_ran_v_1.fValue.f_byteVal[1] = 0xb7; act_v_ran_v_2.fValue.f_byteVal = new XMLByte[2]; act_v_ran_v_2.fValue.f_byteVal[0] = 0x12; act_v_ran_v_2.fValue.f_byteVal[1] = 0x34; const char lex_v_1_canrep[]="0FB7"; const char lex_v_2_canrep[]="1234"; /*** * 3.2.15.2 Canonical Rrepresentation * * The canonical representation for hexBinary is defined by prohibiting certain options from the * Lexical Representation (3.2.15.1). Specifically, * 1. the lower case hexadecimal digits ([a-f]) are not allowed. * ***/ /*** * * validate * --------- * availability return value context * ---------------------------------------------- * lexical valid true n/a * lexical invalid false st_FOCA0002 * ***/ // lexical valid VALIDATE_TEST(lex_v_1, dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_2, dt, EXP_RET_VALID_TRUE, DONT_CARE); // lexical invalid VALIDATE_TEST(lex_iv_1, dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(lex_iv_2, dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); /*** * * getActualValue * --------------- * availability return value context * ---------------------------------------------- * validation on * ============= * lexical valid XSValue n/a * lexical invalid 0 st_FOCA0002 * * validation off * ============== * lexical valid XSValue n/a * lexical invalid 0 st_FOCA0002 * ***/ for (int i = 0; i < 2; i++) { //validation on/off toValidate = ( 0 == i) ? true : false; // lexical valid ACTVALUE_TEST(lex_v_1, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_1); ACTVALUE_TEST(lex_v_2, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_2); // lexical invalid ACTVALUE_TEST(lex_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1); ACTVALUE_TEST(lex_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1); } /*** * * getCanonicalRepresentation * --------------------------- * availability return value context * ---------------------------------------------- * * validation on * ============= * lexical valid XMLCh n/a * lexical invalid 0 st_FOCA0002 * * validation off * ============== * lexical valid XMLCh n/a * lexical invalid 0 st_FOCA0002 * ***/ for (int j = 0; j < 2; j++) { //validation on/off toValidate = ( 0 == j) ? true : false; // lexical valid CANREP_TEST(lex_v_1, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_1_canrep, DONT_CARE); CANREP_TEST(lex_v_2, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_2_canrep, DONT_CARE); // lexical invalid CANREP_TEST(lex_iv_1, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); CANREP_TEST(lex_iv_2, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); } } void test_dt_base64Binary() { const XSValue::DataType dt = XSValue::dt_base64Binary; bool toValidate = true; const char lex_v_1[]=" 134x cv56 gui0 \n"; const char lex_v_2[]="wxtz 8e4k"; const char lex_iv_2[]="134xcv56gui"; const char lex_iv_1[]="wxtz8e4"; XSValue::XSValue_Data act_v_ran_v_1; XSValue::XSValue_Data act_v_ran_v_2; //actual values: //"134x cv56 gui0" : D7 7E 31 72 FE 7A 82 E8 B4 //"wxtz 8e4k" : C3 1B 73 F1 EE 24 act_v_ran_v_1.fValue.f_byteVal = new XMLByte[9]; act_v_ran_v_1.fValue.f_byteVal[0] = 0xd7; act_v_ran_v_1.fValue.f_byteVal[1] = 0x7e; act_v_ran_v_1.fValue.f_byteVal[2] = 0x31; act_v_ran_v_1.fValue.f_byteVal[3] = 0x72; act_v_ran_v_1.fValue.f_byteVal[4] = 0xfe; act_v_ran_v_1.fValue.f_byteVal[5] = 0x7a; act_v_ran_v_1.fValue.f_byteVal[6] = 0x82; act_v_ran_v_1.fValue.f_byteVal[7] = 0xe8; act_v_ran_v_1.fValue.f_byteVal[8] = 0xb4; act_v_ran_v_2.fValue.f_byteVal = new XMLByte[9]; act_v_ran_v_2.fValue.f_byteVal[0] = 0xc3; act_v_ran_v_2.fValue.f_byteVal[1] = 0x1b; act_v_ran_v_2.fValue.f_byteVal[2] = 0x73; act_v_ran_v_2.fValue.f_byteVal[3] = 0xf1; act_v_ran_v_2.fValue.f_byteVal[4] = 0xee; act_v_ran_v_2.fValue.f_byteVal[5] = 0x24; act_v_ran_v_2.fValue.f_byteVal[6] = 0; act_v_ran_v_2.fValue.f_byteVal[7] = 0; act_v_ran_v_2.fValue.f_byteVal[8] = 0; const char lex_v_1_canrep[]="134xcv56gui0"; const char lex_v_2_canrep[]="wxtz8e4k"; /*** * * validate * --------- * availability return value context * ---------------------------------------------- * lexical valid true n/a * lexical invalid false st_FOCA0002 * ***/ // lexical valid VALIDATE_TEST(lex_v_1, dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(lex_v_2, dt, EXP_RET_VALID_TRUE, DONT_CARE); // lexical invalid VALIDATE_TEST(lex_iv_1, dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(lex_iv_2, dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); /*** * * getActualValue * --------------- * availability return value context * ---------------------------------------------- * validation on * ============= * lexical valid XSValue n/a * lexical invalid 0 st_FOCA0002 * * validation off * ============== * lexical valid XSValue n/a * lexical invalid 0 st_FOCA0002 * ***/ for (int i = 0; i < 2; i++) { //validation on/off toValidate = ( 0 == i) ? true : false; // lexical valid ACTVALUE_TEST(lex_v_1, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_1); ACTVALUE_TEST(lex_v_2, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_2); // lexical invalid ACTVALUE_TEST(lex_iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1); ACTVALUE_TEST(lex_iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1); } /*** * * getCanonicalRepresentation * --------------------------- * availability return value context * ---------------------------------------------- * * validation on * ============= * lexical valid XMLCh n/a * lexical invalid 0 st_FOCA0002 * * validation off * ============== * lexical valid XMLCh n/a * lexical invalid 0 st_FOCA0002 * ***/ for (int j = 0; j < 2; j++) { //validation on/off toValidate = ( 0 == j) ? true : false; // lexical valid CANREP_TEST(lex_v_1, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_1_canrep, DONT_CARE); CANREP_TEST(lex_v_2, dt, toValidate, EXP_RET_CANREP_TRUE, lex_v_2_canrep, DONT_CARE); // lexical invalid CANREP_TEST(lex_iv_1, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); CANREP_TEST(lex_iv_2, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); } } void test_dt_duration() { const XSValue::DataType dt = XSValue::dt_duration; bool toValidate = true; const char v_1[]=" P1Y1M1DT1H1M1S \n"; const char v_2[]="P1Y1M31DT23H119M120S"; const char v_3[]="-P1Y1M1DT23H"; const char iv_1[]="P-1Y2M3DT10H30M"; const char iv_2[]="P1Y1M1DT1H1M1X"; const char iv_3[]="P1Z1M1DT23H"; XSValue::XSValue_Data act_v_ran_v_1; XSValue::XSValue_Data act_v_ran_v_2; XSValue::XSValue_Data act_v_ran_v_3; act_v_ran_v_1.fValue.f_datetime.f_year = 1; act_v_ran_v_1.fValue.f_datetime.f_month = 1; act_v_ran_v_1.fValue.f_datetime.f_day = 1; act_v_ran_v_1.fValue.f_datetime.f_hour = 1; act_v_ran_v_1.fValue.f_datetime.f_min = 1; act_v_ran_v_1.fValue.f_datetime.f_second = 1; act_v_ran_v_1.fValue.f_datetime.f_milisec = 0; act_v_ran_v_2.fValue.f_datetime.f_year = 1; act_v_ran_v_2.fValue.f_datetime.f_month = 1; act_v_ran_v_2.fValue.f_datetime.f_day = 31; act_v_ran_v_2.fValue.f_datetime.f_hour = 23; act_v_ran_v_2.fValue.f_datetime.f_min = 119; act_v_ran_v_2.fValue.f_datetime.f_second = 120; act_v_ran_v_2.fValue.f_datetime.f_milisec = 0; act_v_ran_v_3.fValue.f_datetime.f_year = -1; act_v_ran_v_3.fValue.f_datetime.f_month = -1; act_v_ran_v_3.fValue.f_datetime.f_day = -1; act_v_ran_v_3.fValue.f_datetime.f_hour = -23; act_v_ran_v_3.fValue.f_datetime.f_min = 0; act_v_ran_v_3.fValue.f_datetime.f_second = 0; act_v_ran_v_3.fValue.f_datetime.f_milisec = 0; /*** * * validate * --------- * availability return value context * ---------------------------------------------- * valid true n/a * invalid false st_FOCA0002 * ***/ // valid VALIDATE_TEST(v_1, dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(v_2, dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(v_3, dt, EXP_RET_VALID_TRUE, DONT_CARE); // invalid VALIDATE_TEST(iv_1, dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(iv_2, dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(iv_3, dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); /*** * * getActualValue * --------------- * availability return value context * ---------------------------------------------- * validation on * ============= * valid XSValue n/a * invalid 0 st_FOCA0002 * * validation off * ============== * valid XSValue n/a * invalid 0 st_FOCA0002 * ***/ for (int i = 0; i < 2; i++) { //validation on/off toValidate = ( 0 == i) ? true : false; // valid ACTVALUE_TEST(v_1, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_1); ACTVALUE_TEST(v_2, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_2); ACTVALUE_TEST(v_3, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_3); // invalid ACTVALUE_TEST(iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1); ACTVALUE_TEST(iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1); ACTVALUE_TEST(iv_3, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1); } /*** * * getCanonicalRepresentation * --------------------------- * availability return value context * ---------------------------------------------- * * validation on * ============= * valid XMLCh st_NoCanRep * invalid 0 st_FOCA0002 * * validation off * ============== * valid XMLCh st_NoCanRep * invalid 0 st_NoCanRep * ***/ for (int j = 0; j < 2; j++) { //validation on/off toValidate = ( 0 == j) ? true : false; // valid CANREP_TEST(v_1, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_NoCanRep); CANREP_TEST(v_2, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_NoCanRep); CANREP_TEST(v_3, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_NoCanRep); // invalid CANREP_TEST(iv_1, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, (toValidate? XSValue::st_FOCA0002: XSValue::st_NoCanRep)); CANREP_TEST(iv_2, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, (toValidate? XSValue::st_FOCA0002: XSValue::st_NoCanRep)); CANREP_TEST(iv_3, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, (toValidate? XSValue::st_FOCA0002: XSValue::st_NoCanRep)); } } void test_dt_date() { const XSValue::DataType dt = XSValue::dt_date; bool toValidate = true; const char v_1[]=" 1991-05-31 \n"; const char v_2[]="9999-06-30Z"; const char v_3[]="99991-07-31+14:00"; const char iv_1[]="2000-12-32"; const char iv_2[]="2001-02-29"; const char iv_3[]="2001-06-31"; XSValue::XSValue_Data act_v_ran_v_1; XSValue::XSValue_Data act_v_ran_v_2; XSValue::XSValue_Data act_v_ran_v_3; const char v_1_canrep[]="1991-05-31"; const char v_2_canrep[]="9999-06-30Z"; const char v_3_canrep[]="99991-07-30-10:00"; /* * Case Date Actual Value Canonical Value * 1 yyyy-mm-dd yyyy-mm-dd yyyy-mm-dd * 2 yyyy-mm-ddZ yyyy-mm-ddT00:00Z yyyy-mm-ddZ * 3 yyyy-mm-dd+00:00 yyyy-mm-ddT00:00Z yyyy-mm-ddZ * 4 yyyy-mm-dd+00:01 YYYY-MM-DCT23:59Z yyyy-mm-dd+00:01 * 5 yyyy-mm-dd+12:00 YYYY-MM-DCT12:00Z yyyy-mm-dd+12:00 * 6 yyyy-mm-dd+12:01 YYYY-MM-DCT11:59Z YYYY-MM-DC-11:59 * 7 yyyy-mm-dd+14:00 YYYY-MM-DCT10:00Z YYYY-MM-DC-10:00 * 8 yyyy-mm-dd-00:00 yyyy-mm-ddT00:00Z yyyy-mm-ddZ * 9 yyyy-mm-dd-00:01 yyyy-mm-ddT00:01Z yyyy-mm-dd-00:01 * 11 yyyy-mm-dd-11:59 yyyy-mm-ddT11:59Z YYYY-MM-DD-11:59 * 10 yyyy-mm-dd-12:00 yyyy-mm-ddT12:00Z YYYY-MM-DD+12:00 * 12 yyyy-mm-dd-14:00 yyyy-mm-ddT14:00Z YYYY-MM-DD+10:00 */ const char c_1[] = " 1993-05-31 "; const char r_1[] = "1993-05-31"; const char c_2[] = " 1993-05-31Z "; const char r_2[] = "1993-05-31Z"; const char c_3[] = " 1993-05-31+00:00 "; const char r_3[] = "1993-05-31Z"; const char c_4[] = " 1993-05-31+00:01 "; const char r_4[] = "1993-05-31+00:01"; const char c_5[] = " 1993-05-31+12:00 "; const char r_5[] = "1993-05-31+12:00"; const char c_6[] = " 1994-01-01+12:01 "; const char r_6[] = "1993-12-31-11:59"; const char c_7[] = " 1994-01-01+14:00 "; const char r_7[] = "1993-12-31-10:00"; const char c_8[] = " 1993-06-01-00:00 "; const char r_8[] = "1993-06-01Z"; const char c_9[] = " 1993-06-01-00:01 "; const char r_9[] = "1993-06-01-00:01"; const char c_a[] = " 1993-06-01-11:59 "; const char r_a[] = "1993-06-01-11:59"; const char c_b[] = " 1993-05-31-12:00 "; const char r_b[] = "1993-06-01+12:00"; const char c_c[] = " 1993-05-31-14:00 "; const char r_c[] = "1993-06-01+10:00"; act_v_ran_v_1.fValue.f_datetime.f_year = 1991; act_v_ran_v_1.fValue.f_datetime.f_month = 05; act_v_ran_v_1.fValue.f_datetime.f_day = 31; act_v_ran_v_1.fValue.f_datetime.f_hour = 0; act_v_ran_v_1.fValue.f_datetime.f_min = 0; act_v_ran_v_1.fValue.f_datetime.f_second = 0; act_v_ran_v_1.fValue.f_datetime.f_milisec = 0; act_v_ran_v_2.fValue.f_datetime.f_year = 9999; act_v_ran_v_2.fValue.f_datetime.f_month = 06; act_v_ran_v_2.fValue.f_datetime.f_day = 30; act_v_ran_v_2.fValue.f_datetime.f_hour = 0; act_v_ran_v_2.fValue.f_datetime.f_min = 0; act_v_ran_v_2.fValue.f_datetime.f_second = 0; act_v_ran_v_2.fValue.f_datetime.f_milisec = 0; act_v_ran_v_3.fValue.f_datetime.f_year = 99991; act_v_ran_v_3.fValue.f_datetime.f_month = 07; act_v_ran_v_3.fValue.f_datetime.f_day = 30; act_v_ran_v_3.fValue.f_datetime.f_hour = 0; act_v_ran_v_3.fValue.f_datetime.f_min = 0; act_v_ran_v_3.fValue.f_datetime.f_second = 0; act_v_ran_v_3.fValue.f_datetime.f_milisec = 0; /*** * * validate * --------- * availability return value context * ---------------------------------------------- * valid true n/a * invalid false st_FOCA0002 * ***/ // valid VALIDATE_TEST(v_1, dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(v_2, dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(v_3, dt, EXP_RET_VALID_TRUE, DONT_CARE); // invalid VALIDATE_TEST(iv_1, dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(iv_2, dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(iv_3, dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); /*** * * getActualValue * --------------- * availability return value context * ---------------------------------------------- * validation on * ============= * valid XSValue n/a * invalid 0 st_FOCA0002 * * validation off * ============== * valid XSValue n/a * invalid 0 st_FOCA0002 * ***/ for (int i = 0; i < 2; i++) { //validation on/off toValidate = ( 0 == i) ? true : false; // valid ACTVALUE_TEST(v_1, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_1); ACTVALUE_TEST(v_2, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_2); ACTVALUE_TEST(v_3, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_3); // invalid ACTVALUE_TEST(iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1); ACTVALUE_TEST(iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1); ACTVALUE_TEST(iv_3, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1); } /*** * * getCanonicalRepresentation * --------------------------- * availability return value context * ---------------------------------------------- * * validation on * ============= * valid XMLCh st_NoCanRep * invalid 0 st_FOCA0002 * * validation off * ============== * valid XMLCh st_NoCanRep * invalid 0 st_NoCanRep * ***/ for (int j = 0; j < 2; j++) { //validation on/off toValidate = ( 0 == j) ? true : false; // valid CANREP_TEST(v_1, dt, toValidate, EXP_RET_CANREP_TRUE, v_1_canrep, DONT_CARE); CANREP_TEST(v_2, dt, toValidate, EXP_RET_CANREP_TRUE, v_2_canrep, DONT_CARE); CANREP_TEST(v_3, dt, toValidate, EXP_RET_CANREP_TRUE, v_3_canrep, DONT_CARE); CANREP_TEST(c_1, dt, toValidate, EXP_RET_CANREP_TRUE, r_1, DONT_CARE); CANREP_TEST(c_2, dt, toValidate, EXP_RET_CANREP_TRUE, r_2, DONT_CARE); CANREP_TEST(c_3, dt, toValidate, EXP_RET_CANREP_TRUE, r_3, DONT_CARE); CANREP_TEST(c_4, dt, toValidate, EXP_RET_CANREP_TRUE, r_4, DONT_CARE); CANREP_TEST(c_5, dt, toValidate, EXP_RET_CANREP_TRUE, r_5, DONT_CARE); CANREP_TEST(c_6, dt, toValidate, EXP_RET_CANREP_TRUE, r_6, DONT_CARE); CANREP_TEST(c_7, dt, toValidate, EXP_RET_CANREP_TRUE, r_7, DONT_CARE); CANREP_TEST(c_8, dt, toValidate, EXP_RET_CANREP_TRUE, r_8, DONT_CARE); CANREP_TEST(c_9, dt, toValidate, EXP_RET_CANREP_TRUE, r_9, DONT_CARE); CANREP_TEST(c_a, dt, toValidate, EXP_RET_CANREP_TRUE, r_a, DONT_CARE); CANREP_TEST(c_b, dt, toValidate, EXP_RET_CANREP_TRUE, r_b, DONT_CARE); CANREP_TEST(c_c, dt, toValidate, EXP_RET_CANREP_TRUE, r_c, DONT_CARE); // invalid CANREP_TEST(iv_1, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); CANREP_TEST(iv_2, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); CANREP_TEST(iv_3, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); } } void test_dt_gYearMonth() { const XSValue::DataType dt = XSValue::dt_gYearMonth; bool toValidate = true; const char v_1[]=" 20000-02 \n"; const char v_2[]="0200-11+14:00"; const char v_3[]="2000-02-14:00"; const char iv_1[]="0000-12"; const char iv_2[]="+2000-11"; const char iv_3[]="2000.90-02"; XSValue::XSValue_Data act_v_ran_v_1; XSValue::XSValue_Data act_v_ran_v_2; XSValue::XSValue_Data act_v_ran_v_3; act_v_ran_v_1.fValue.f_datetime.f_year = 20000; act_v_ran_v_1.fValue.f_datetime.f_month = 02; act_v_ran_v_1.fValue.f_datetime.f_day = 0; act_v_ran_v_1.fValue.f_datetime.f_hour = 0; act_v_ran_v_1.fValue.f_datetime.f_min = 0; act_v_ran_v_1.fValue.f_datetime.f_second = 0; act_v_ran_v_1.fValue.f_datetime.f_milisec = 0; act_v_ran_v_2.fValue.f_datetime.f_year = 200; act_v_ran_v_2.fValue.f_datetime.f_month = 11; act_v_ran_v_2.fValue.f_datetime.f_day = 0; act_v_ran_v_2.fValue.f_datetime.f_hour = 0; act_v_ran_v_2.fValue.f_datetime.f_min = 0; act_v_ran_v_2.fValue.f_datetime.f_second = 0; act_v_ran_v_2.fValue.f_datetime.f_milisec = 0; act_v_ran_v_3.fValue.f_datetime.f_year = 2000; act_v_ran_v_3.fValue.f_datetime.f_month = 02; act_v_ran_v_3.fValue.f_datetime.f_day = 0; act_v_ran_v_3.fValue.f_datetime.f_hour = 0; act_v_ran_v_3.fValue.f_datetime.f_min = 0; act_v_ran_v_3.fValue.f_datetime.f_second = 0; act_v_ran_v_3.fValue.f_datetime.f_milisec = 0; /*** * * validate * --------- * availability return value context * ---------------------------------------------- * valid true n/a * invalid false st_FOCA0002 * ***/ // valid VALIDATE_TEST(v_1, dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(v_2, dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(v_3, dt, EXP_RET_VALID_TRUE, DONT_CARE); // invalid VALIDATE_TEST(iv_1, dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(iv_2, dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(iv_3, dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); /*** * * getActualValue * --------------- * availability return value context * ---------------------------------------------- * validation on * ============= * valid XSValue n/a * invalid 0 st_FOCA0002 * * validation off * ============== * valid XSValue n/a * invalid 0 st_FOCA0002 * ***/ for (int i = 0; i < 2; i++) { //validation on/off toValidate = ( 0 == i) ? true : false; // valid ACTVALUE_TEST(v_1, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_1); ACTVALUE_TEST(v_2, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_2); ACTVALUE_TEST(v_3, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_3); // invalid ACTVALUE_TEST(iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1); ACTVALUE_TEST(iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1); ACTVALUE_TEST(iv_3, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1); } /*** * * getCanonicalRepresentation * --------------------------- * availability return value context * ---------------------------------------------- * * validation on * ============= * valid XMLCh st_NoCanRep * invalid 0 st_FOCA0002 * * validation off * ============== * valid XMLCh st_NoCanRep * invalid 0 st_NoCanRep * ***/ for (int j = 0; j < 2; j++) { //validation on/off toValidate = ( 0 == j) ? true : false; // valid CANREP_TEST(v_1, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_NoCanRep); CANREP_TEST(v_2, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_NoCanRep); CANREP_TEST(v_3, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_NoCanRep); // invalid CANREP_TEST(iv_1, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, (toValidate? XSValue::st_FOCA0002: XSValue::st_NoCanRep)); CANREP_TEST(iv_2, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, (toValidate? XSValue::st_FOCA0002: XSValue::st_NoCanRep)); CANREP_TEST(iv_3, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, (toValidate? XSValue::st_FOCA0002: XSValue::st_NoCanRep)); } } void test_dt_gYear() { const XSValue::DataType dt = XSValue::dt_gYear; bool toValidate = true; const char v_1[]=" 0001-14:00 \n"; const char v_2[]="9999+14:00"; const char v_3[]="-1999"; const char iv_1[]="0000"; const char iv_2[]="+2000"; const char iv_3[]="2000.90"; XSValue::XSValue_Data act_v_ran_v_1; XSValue::XSValue_Data act_v_ran_v_2; XSValue::XSValue_Data act_v_ran_v_3; act_v_ran_v_1.fValue.f_datetime.f_year = 1; act_v_ran_v_1.fValue.f_datetime.f_month = 0; act_v_ran_v_1.fValue.f_datetime.f_day = 0; act_v_ran_v_1.fValue.f_datetime.f_hour = 0; act_v_ran_v_1.fValue.f_datetime.f_min = 0; act_v_ran_v_1.fValue.f_datetime.f_second = 0; act_v_ran_v_1.fValue.f_datetime.f_milisec = 0; act_v_ran_v_2.fValue.f_datetime.f_year = 9999; act_v_ran_v_2.fValue.f_datetime.f_month = 0; act_v_ran_v_2.fValue.f_datetime.f_day = 0; act_v_ran_v_2.fValue.f_datetime.f_hour = 0; act_v_ran_v_2.fValue.f_datetime.f_min = 0; act_v_ran_v_2.fValue.f_datetime.f_second = 0; act_v_ran_v_2.fValue.f_datetime.f_milisec = 0; act_v_ran_v_3.fValue.f_datetime.f_year = -1999; act_v_ran_v_3.fValue.f_datetime.f_month = 0; act_v_ran_v_3.fValue.f_datetime.f_day = 0; act_v_ran_v_3.fValue.f_datetime.f_hour = 0; act_v_ran_v_3.fValue.f_datetime.f_min = 0; act_v_ran_v_3.fValue.f_datetime.f_second = 0; act_v_ran_v_3.fValue.f_datetime.f_milisec = 0; /*** * * validate * --------- * availability return value context * ---------------------------------------------- * valid true n/a * invalid false st_FOCA0002 * ***/ // valid VALIDATE_TEST(v_1, dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(v_2, dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(v_3, dt, EXP_RET_VALID_TRUE, DONT_CARE); // invalid VALIDATE_TEST(iv_1, dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(iv_2, dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(iv_3, dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); /*** * * getActualValue * --------------- * availability return value context * ---------------------------------------------- * validation on * ============= * valid XSValue n/a * invalid 0 st_FOCA0002 * * validation off * ============== * valid XSValue n/a * invalid 0 st_FOCA0002 * ***/ for (int i = 0; i < 2; i++) { //validation on/off toValidate = ( 0 == i) ? true : false; // valid ACTVALUE_TEST(v_1, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_1); ACTVALUE_TEST(v_2, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_2); ACTVALUE_TEST(v_3, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_3); // invalid ACTVALUE_TEST(iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1); ACTVALUE_TEST(iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1); ACTVALUE_TEST(iv_3, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1); } /*** * * getCanonicalRepresentation * --------------------------- * availability return value context * ---------------------------------------------- * * validation on * ============= * valid XMLCh st_NoCanRep * invalid 0 st_FOCA0002 * * validation off * ============== * valid XMLCh st_NoCanRep * invalid 0 st_NoCanRep * ***/ for (int j = 0; j < 2; j++) { //validation on/off toValidate = ( 0 == j) ? true : false; // valid CANREP_TEST(v_1, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_NoCanRep); CANREP_TEST(v_2, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_NoCanRep); CANREP_TEST(v_3, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_NoCanRep); // invalid CANREP_TEST(iv_1, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, (toValidate? XSValue::st_FOCA0002: XSValue::st_NoCanRep)); CANREP_TEST(iv_2, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, (toValidate? XSValue::st_FOCA0002: XSValue::st_NoCanRep)); CANREP_TEST(iv_3, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, (toValidate? XSValue::st_FOCA0002: XSValue::st_NoCanRep)); } } void test_dt_gMonthDay() { const XSValue::DataType dt = XSValue::dt_gMonthDay; bool toValidate = true; const char v_1[]=" --01-31+00:01 \n"; const char v_2[]="--03-31-00:01"; const char v_3[]="--04-01"; const char iv_1[]="--14-31"; const char iv_2[]="--12-32"; const char iv_3[]="--02-30"; XSValue::XSValue_Data act_v_ran_v_1; XSValue::XSValue_Data act_v_ran_v_2; XSValue::XSValue_Data act_v_ran_v_3; act_v_ran_v_1.fValue.f_datetime.f_year = 0; act_v_ran_v_1.fValue.f_datetime.f_month = 1; act_v_ran_v_1.fValue.f_datetime.f_day = 30; act_v_ran_v_1.fValue.f_datetime.f_hour = 0; act_v_ran_v_1.fValue.f_datetime.f_min = 0; act_v_ran_v_1.fValue.f_datetime.f_second = 0; act_v_ran_v_1.fValue.f_datetime.f_milisec = 0; act_v_ran_v_2.fValue.f_datetime.f_year = 0; act_v_ran_v_2.fValue.f_datetime.f_month = 3; act_v_ran_v_2.fValue.f_datetime.f_day = 31; act_v_ran_v_2.fValue.f_datetime.f_hour = 0; act_v_ran_v_2.fValue.f_datetime.f_min = 0; act_v_ran_v_2.fValue.f_datetime.f_second = 0; act_v_ran_v_2.fValue.f_datetime.f_milisec = 0; act_v_ran_v_3.fValue.f_datetime.f_year = 0; act_v_ran_v_3.fValue.f_datetime.f_month = 4; act_v_ran_v_3.fValue.f_datetime.f_day = 1; act_v_ran_v_3.fValue.f_datetime.f_hour = 0; act_v_ran_v_3.fValue.f_datetime.f_min = 0; act_v_ran_v_3.fValue.f_datetime.f_second = 0; act_v_ran_v_3.fValue.f_datetime.f_milisec = 0; /*** * * validate * --------- * availability return value context * ---------------------------------------------- * valid true n/a * invalid false st_FOCA0002 * ***/ // valid VALIDATE_TEST(v_1, dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(v_2, dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(v_3, dt, EXP_RET_VALID_TRUE, DONT_CARE); // invalid VALIDATE_TEST(iv_1, dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(iv_2, dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(iv_3, dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); /*** * * getActualValue * --------------- * availability return value context * ---------------------------------------------- * validation on * ============= * valid XSValue n/a * invalid 0 st_FOCA0002 * * validation off * ============== * valid XSValue n/a * invalid 0 st_FOCA0002 * ***/ for (int i = 0; i < 2; i++) { //validation on/off toValidate = ( 0 == i) ? true : false; // valid ACTVALUE_TEST(v_1, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_1); ACTVALUE_TEST(v_2, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_2); ACTVALUE_TEST(v_3, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_3); // invalid ACTVALUE_TEST(iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1); ACTVALUE_TEST(iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1); ACTVALUE_TEST(iv_3, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1); } /*** * * getCanonicalRepresentation * --------------------------- * availability return value context * ---------------------------------------------- * * validation on * ============= * valid XMLCh st_NoCanRep * invalid 0 st_FOCA0002 * * validation off * ============== * valid XMLCh st_NoCanRep * invalid 0 st_NoCanRep * ***/ for (int j = 0; j < 2; j++) { //validation on/off toValidate = ( 0 == j) ? true : false; // valid CANREP_TEST(v_1, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_NoCanRep); CANREP_TEST(v_2, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_NoCanRep); CANREP_TEST(v_3, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_NoCanRep); // invalid CANREP_TEST(iv_1, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, (toValidate? XSValue::st_FOCA0002: XSValue::st_NoCanRep)); CANREP_TEST(iv_2, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, (toValidate? XSValue::st_FOCA0002: XSValue::st_NoCanRep)); CANREP_TEST(iv_3, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, (toValidate? XSValue::st_FOCA0002: XSValue::st_NoCanRep)); } } void test_dt_gDay() { const XSValue::DataType dt = XSValue::dt_gDay; bool toValidate = true; const char v_1[]=" ---31+01:30 \n"; const char v_2[]="---01-01:30"; const char v_3[]="---28"; const char iv_1[]="---+31"; const char iv_2[]="---28.00"; const char iv_3[]="--31"; XSValue::XSValue_Data act_v_ran_v_1; XSValue::XSValue_Data act_v_ran_v_2; XSValue::XSValue_Data act_v_ran_v_3; act_v_ran_v_1.fValue.f_datetime.f_year = 0; act_v_ran_v_1.fValue.f_datetime.f_month = 0; act_v_ran_v_1.fValue.f_datetime.f_day = 30; act_v_ran_v_1.fValue.f_datetime.f_hour = 0; act_v_ran_v_1.fValue.f_datetime.f_min = 0; act_v_ran_v_1.fValue.f_datetime.f_second = 0; act_v_ran_v_1.fValue.f_datetime.f_milisec = 0; act_v_ran_v_2.fValue.f_datetime.f_year = 0; act_v_ran_v_2.fValue.f_datetime.f_month = 0; act_v_ran_v_2.fValue.f_datetime.f_day = 1; act_v_ran_v_2.fValue.f_datetime.f_hour = 0; act_v_ran_v_2.fValue.f_datetime.f_min = 0; act_v_ran_v_2.fValue.f_datetime.f_second = 0; act_v_ran_v_2.fValue.f_datetime.f_milisec = 0; act_v_ran_v_3.fValue.f_datetime.f_year = 0; act_v_ran_v_3.fValue.f_datetime.f_month = 0; act_v_ran_v_3.fValue.f_datetime.f_day = 28; act_v_ran_v_3.fValue.f_datetime.f_hour = 0; act_v_ran_v_3.fValue.f_datetime.f_min = 0; act_v_ran_v_3.fValue.f_datetime.f_second = 0; act_v_ran_v_3.fValue.f_datetime.f_milisec = 0; /*** * * validate * --------- * availability return value context * ---------------------------------------------- * valid true n/a * invalid false st_FOCA0002 * ***/ // valid VALIDATE_TEST(v_1, dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(v_2, dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(v_3, dt, EXP_RET_VALID_TRUE, DONT_CARE); // invalid VALIDATE_TEST(iv_1, dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(iv_2, dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(iv_3, dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); /*** * * getActualValue * --------------- * availability return value context * ---------------------------------------------- * validation on * ============= * valid XSValue n/a * invalid 0 st_FOCA0002 * * validation off * ============== * valid XSValue n/a * invalid 0 st_FOCA0002 * ***/ for (int i = 0; i < 2; i++) { //validation on/off toValidate = ( 0 == i) ? true : false; // valid ACTVALUE_TEST(v_1, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_1); ACTVALUE_TEST(v_2, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_2); ACTVALUE_TEST(v_3, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_3); // invalid ACTVALUE_TEST(iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1); ACTVALUE_TEST(iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_2); ACTVALUE_TEST(iv_3, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_3); } /*** * * getCanonicalRepresentation * --------------------------- * availability return value context * ---------------------------------------------- * * validation on * ============= * valid XMLCh st_NoCanRep * invalid 0 st_FOCA0002 * * validation off * ============== * valid XMLCh st_NoCanRep * invalid 0 st_NoCanRep * ***/ for (int j = 0; j < 2; j++) { //validation on/off toValidate = ( 0 == j) ? true : false; // valid CANREP_TEST(v_1, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_NoCanRep); CANREP_TEST(v_2, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_NoCanRep); CANREP_TEST(v_3, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_NoCanRep); // invalid CANREP_TEST(iv_1, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, (toValidate? XSValue::st_FOCA0002: XSValue::st_NoCanRep)); CANREP_TEST(iv_2, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, (toValidate? XSValue::st_FOCA0002: XSValue::st_NoCanRep)); CANREP_TEST(iv_3, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, (toValidate? XSValue::st_FOCA0002: XSValue::st_NoCanRep)); } } void test_dt_gMonth() { const XSValue::DataType dt = XSValue::dt_gMonth; bool toValidate = true; const char v_1[]=" --02+10:10 \n"; const char v_2[]="--10-12:12"; const char v_3[]="--12"; const char iv_1[]="--+11"; const char iv_2[]="---02.09"; const char iv_3[]="--14--"; XSValue::XSValue_Data act_v_ran_v_1; XSValue::XSValue_Data act_v_ran_v_2; XSValue::XSValue_Data act_v_ran_v_3; act_v_ran_v_1.fValue.f_datetime.f_year = 0; act_v_ran_v_1.fValue.f_datetime.f_month = 2; act_v_ran_v_1.fValue.f_datetime.f_day = 0; act_v_ran_v_1.fValue.f_datetime.f_hour = 0; act_v_ran_v_1.fValue.f_datetime.f_min = 0; act_v_ran_v_1.fValue.f_datetime.f_second = 0; act_v_ran_v_1.fValue.f_datetime.f_milisec = 0; act_v_ran_v_2.fValue.f_datetime.f_year = 0; act_v_ran_v_2.fValue.f_datetime.f_month = 10; act_v_ran_v_2.fValue.f_datetime.f_day = 0; act_v_ran_v_2.fValue.f_datetime.f_hour = 0; act_v_ran_v_2.fValue.f_datetime.f_min = 0; act_v_ran_v_2.fValue.f_datetime.f_second = 0; act_v_ran_v_2.fValue.f_datetime.f_milisec = 0; act_v_ran_v_3.fValue.f_datetime.f_year = 0; act_v_ran_v_3.fValue.f_datetime.f_month = 12; act_v_ran_v_3.fValue.f_datetime.f_day = 0; act_v_ran_v_3.fValue.f_datetime.f_hour = 0; act_v_ran_v_3.fValue.f_datetime.f_min = 0; act_v_ran_v_3.fValue.f_datetime.f_second = 0; act_v_ran_v_3.fValue.f_datetime.f_milisec = 0; /*** * * validate * --------- * availability return value context * ---------------------------------------------- * valid true n/a * invalid false st_FOCA0002 * ***/ // valid VALIDATE_TEST(v_1, dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(v_2, dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(v_3, dt, EXP_RET_VALID_TRUE, DONT_CARE); // invalid VALIDATE_TEST(iv_1, dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(iv_2, dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(iv_3, dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); /*** * * getActualValue * --------------- * availability return value context * ---------------------------------------------- * validation on * ============= * valid XSValue n/a * invalid 0 st_FOCA0002 * * validation off * ============== * valid XSValue n/a * invalid 0 st_FOCA0002 * ***/ for (int i = 0; i < 2; i++) { //validation on/off toValidate = ( 0 == i) ? true : false; // valid ACTVALUE_TEST(v_1, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_1); ACTVALUE_TEST(v_2, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_2); ACTVALUE_TEST(v_3, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_3); // invalid ACTVALUE_TEST(iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1); ACTVALUE_TEST(iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_2); ACTVALUE_TEST(iv_3, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_3); } /*** * * getCanonicalRepresentation * --------------------------- * availability return value context * ---------------------------------------------- * * validation on * ============= * valid XMLCh st_NoCanRep * invalid 0 st_FOCA0002 * * validation off * ============== * valid XMLCh st_NoCanRep * invalid 0 st_NoCanRep * ***/ for (int j = 0; j < 2; j++) { //validation on/off toValidate = ( 0 == j) ? true : false; // valid CANREP_TEST(v_1, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_NoCanRep); CANREP_TEST(v_2, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_NoCanRep); CANREP_TEST(v_3, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_NoCanRep); // invalid CANREP_TEST(iv_1, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, (toValidate? XSValue::st_FOCA0002: XSValue::st_NoCanRep)); CANREP_TEST(iv_2, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, (toValidate? XSValue::st_FOCA0002: XSValue::st_NoCanRep)); CANREP_TEST(iv_3, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, (toValidate? XSValue::st_FOCA0002: XSValue::st_NoCanRep)); } } void test_dt_dateTime() { const XSValue::DataType dt = XSValue::dt_dateTime; bool toValidate = true; const char v_1[]=" 2000-12-31T23:59:59.00389 \n"; const char v_2[]="2000-10-01T11:10:20+13:30"; const char v_3[]="2000-10-01T11:10:20-06:00"; const char iv_1[]="0000-12-31T23:59:59"; const char iv_2[]="+2000-11-30T23:59:59Z"; const char iv_3[]="2000-02-28T23:59.1:59Z"; const char iv_4[]="2000-11-30T01:01:01Z99"; const char iv_5[]="2000-02-28T01:01:01Z10:61"; XSValue::XSValue_Data act_v_ran_v_1; XSValue::XSValue_Data act_v_ran_v_2; XSValue::XSValue_Data act_v_ran_v_3; const char v_1_canrep[]="2000-12-31T23:59:59.00389"; const char v_2_canrep[]="2000-09-30T21:40:20Z"; const char v_3_canrep[]="2000-10-01T17:10:20Z"; act_v_ran_v_1.fValue.f_datetime.f_year = 2000; act_v_ran_v_1.fValue.f_datetime.f_month = 12; act_v_ran_v_1.fValue.f_datetime.f_day = 31; act_v_ran_v_1.fValue.f_datetime.f_hour = 23; act_v_ran_v_1.fValue.f_datetime.f_min = 59; act_v_ran_v_1.fValue.f_datetime.f_second = 59; act_v_ran_v_1.fValue.f_datetime.f_milisec = 0.00389; act_v_ran_v_2.fValue.f_datetime.f_year = 2000; act_v_ran_v_2.fValue.f_datetime.f_month = 9; act_v_ran_v_2.fValue.f_datetime.f_day = 30; act_v_ran_v_2.fValue.f_datetime.f_hour = 21; act_v_ran_v_2.fValue.f_datetime.f_min = 40; act_v_ran_v_2.fValue.f_datetime.f_second = 20; act_v_ran_v_2.fValue.f_datetime.f_milisec = 0; act_v_ran_v_3.fValue.f_datetime.f_year = 2000; act_v_ran_v_3.fValue.f_datetime.f_month = 10; act_v_ran_v_3.fValue.f_datetime.f_day = 1; act_v_ran_v_3.fValue.f_datetime.f_hour = 17; act_v_ran_v_3.fValue.f_datetime.f_min = 10; act_v_ran_v_3.fValue.f_datetime.f_second = 20; act_v_ran_v_3.fValue.f_datetime.f_milisec = 0; /*** * E2-41 * * 3.2.7.2 Canonical representation * * Except for trailing fractional zero digits in the seconds representation, * '24:00:00' time representations, and timezone (for timezoned values), * the mapping from literals to values is one-to-one. Where there is more * than one possible representation, the canonical representation is as follows: * redundant trailing zero digits in fractional-second literals are prohibited. * An hour representation of '24' is prohibited. Timezoned values are canonically * represented by appending 'Z' to the nontimezoned representation. (All * timezoned dateTime values are UTC.) * * .'24:00:00' -> '00:00:00' * .milisecond: trailing zeros removed * .'Z' * ***/ /*** * * validate * --------- * availability return value context * ---------------------------------------------- * valid true n/a * invalid false st_FOCA0002 * ***/ // valid VALIDATE_TEST(v_1, dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(v_2, dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(v_3, dt, EXP_RET_VALID_TRUE, DONT_CARE); // invalid VALIDATE_TEST(iv_1, dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(iv_2, dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(iv_3, dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(iv_4, dt, EXP_RET_VALID_FALSE, XSValue::st_FODT0003); VALIDATE_TEST(iv_5, dt, EXP_RET_VALID_FALSE, XSValue::st_FODT0003); /*** * * getActualValue * --------------- * availability return value context * ---------------------------------------------- * validation on * ============= * valid XSValue n/a * invalid 0 st_FOCA0002 * * validation off * ============== * valid XSValue n/a * invalid 0 st_FOCA0002 * ***/ for (int i = 0; i < 2; i++) { //validation on/off toValidate = ( 0 == i) ? true : false; // valid ACTVALUE_TEST(v_1, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_1); ACTVALUE_TEST(v_2, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_2); ACTVALUE_TEST(v_3, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_3); // invalid ACTVALUE_TEST(iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1); ACTVALUE_TEST(iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1); ACTVALUE_TEST(iv_3, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1); ACTVALUE_TEST(iv_4, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FODT0003, act_v_ran_v_1); ACTVALUE_TEST(iv_5, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FODT0003, act_v_ran_v_1); } /*** * * getCanonicalRepresentation * --------------------------- * availability return value context * ---------------------------------------------- * * validation on * ============= * valid XMLCh n/a * invalid 0 st_FOCA0002 * * validation off * ============== * valid XMLCh n/a * invalid 0 st_FOCA0002 * ***/ for (int j = 0; j < 2; j++) { //validation on/off toValidate = ( 0 == j) ? true : false; // valid CANREP_TEST(v_1, dt, toValidate, EXP_RET_CANREP_TRUE, v_1_canrep, DONT_CARE); CANREP_TEST(v_2, dt, toValidate, EXP_RET_CANREP_TRUE, v_2_canrep, DONT_CARE); CANREP_TEST(v_3, dt, toValidate, EXP_RET_CANREP_TRUE, v_3_canrep, DONT_CARE); // invalid CANREP_TEST(iv_1, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); CANREP_TEST(iv_2, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); CANREP_TEST(iv_3, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); CANREP_TEST(iv_4, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FODT0003); CANREP_TEST(iv_5, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FODT0003); } } void test_dt_time() { const XSValue::DataType dt = XSValue::dt_time; bool toValidate = true; const char v_1[]=" 23:59:59.38900Z \n"; const char v_2[]="24:00:00"; const char v_3[]="23:59:59+00:01"; const char iv_1[]="55:59:59"; const char iv_2[]="03:99:59"; const char iv_3[]="23:59.1:59"; const char iv_4[]="01:01:01Z99"; const char iv_5[]="01:01:01Z10:61"; XSValue::XSValue_Data act_v_ran_v_1; XSValue::XSValue_Data act_v_ran_v_2; XSValue::XSValue_Data act_v_ran_v_3; const char v_1_canrep[]="23:59:59.389Z"; const char v_2_canrep[]="00:00:00"; const char v_3_canrep[]="23:58:59Z"; act_v_ran_v_1.fValue.f_datetime.f_year = 0; act_v_ran_v_1.fValue.f_datetime.f_month = 0; act_v_ran_v_1.fValue.f_datetime.f_day = 0; act_v_ran_v_1.fValue.f_datetime.f_hour = 23; act_v_ran_v_1.fValue.f_datetime.f_min = 59; act_v_ran_v_1.fValue.f_datetime.f_second = 59; act_v_ran_v_1.fValue.f_datetime.f_milisec = 0.389; act_v_ran_v_2.fValue.f_datetime.f_year = 0; act_v_ran_v_2.fValue.f_datetime.f_month = 0; act_v_ran_v_2.fValue.f_datetime.f_day = 0; act_v_ran_v_2.fValue.f_datetime.f_hour = 24; act_v_ran_v_2.fValue.f_datetime.f_min = 0; act_v_ran_v_2.fValue.f_datetime.f_second = 0; act_v_ran_v_2.fValue.f_datetime.f_milisec = 0; act_v_ran_v_3.fValue.f_datetime.f_year = 0; act_v_ran_v_3.fValue.f_datetime.f_month = 0; act_v_ran_v_3.fValue.f_datetime.f_day = 0; act_v_ran_v_3.fValue.f_datetime.f_hour = 23; act_v_ran_v_3.fValue.f_datetime.f_min = 58; act_v_ran_v_3.fValue.f_datetime.f_second = 59; act_v_ran_v_3.fValue.f_datetime.f_milisec = 0; /*** * 3.2.8.2 Canonical representation * * The canonical representation for time is defined by prohibiting certain options * from the Lexical representation (3.2.8.1). Specifically, * 1. either the time zone must be omitted or, * 2. if present, the time zone must be Coordinated Universal Time (UTC) * indicated by a "Z". * 3. Additionally, the canonical representation for midnight is 00:00:00. * ***/ /*** * * validate * --------- * availability return value context * ---------------------------------------------- * valid true n/a * invalid false st_FOCA0002 * ***/ // valid VALIDATE_TEST(v_1, dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(v_2, dt, EXP_RET_VALID_TRUE, DONT_CARE); VALIDATE_TEST(v_3, dt, EXP_RET_VALID_TRUE, DONT_CARE); // invalid VALIDATE_TEST(iv_1, dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(iv_2, dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(iv_3, dt, EXP_RET_VALID_FALSE, XSValue::st_FOCA0002); VALIDATE_TEST(iv_4, dt, EXP_RET_VALID_FALSE, XSValue::st_FODT0003); VALIDATE_TEST(iv_5, dt, EXP_RET_VALID_FALSE, XSValue::st_FODT0003); /*** * * getActualValue * --------------- * availability return value context * ---------------------------------------------- * validation on * ============= * valid XSValue n/a * invalid 0 st_FOCA0002 * * validation off * ============== * valid XSValue n/a * invalid 0 st_FOCA0002 * ***/ for (int i = 0; i < 2; i++) { //validation on/off toValidate = ( 0 == i) ? true : false; // valid ACTVALUE_TEST(v_1, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_1); ACTVALUE_TEST(v_2, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_2); ACTVALUE_TEST(v_3, dt, toValidate, EXP_RET_VALUE_TRUE, DONT_CARE, act_v_ran_v_3); // invalid ACTVALUE_TEST(iv_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1); ACTVALUE_TEST(iv_2, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1); ACTVALUE_TEST(iv_3, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FOCA0002, act_v_ran_v_1); ACTVALUE_TEST(iv_4, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FODT0003, act_v_ran_v_1); ACTVALUE_TEST(iv_5, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_FODT0003, act_v_ran_v_1); } /*** * * getCanonicalRepresentation * --------------------------- * availability return value context * ---------------------------------------------- * * validation on * ============= * valid XMLCh n/a * invalid 0 st_FOCA0002 * * validation off * ============== * valid XMLCh n/a * invalid 0 st_FOCA0002 * ***/ for (int j = 0; j < 2; j++) { //validation on/off toValidate = ( 0 == j) ? true : false; // valid CANREP_TEST(v_1, dt, toValidate, EXP_RET_CANREP_TRUE, v_1_canrep, DONT_CARE); CANREP_TEST(v_2, dt, toValidate, EXP_RET_CANREP_TRUE, v_2_canrep, DONT_CARE); CANREP_TEST(v_3, dt, toValidate, EXP_RET_CANREP_TRUE, v_3_canrep, DONT_CARE); // invalid CANREP_TEST(iv_1, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); CANREP_TEST(iv_2, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); CANREP_TEST(iv_3, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FOCA0002); CANREP_TEST(iv_4, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FODT0003); CANREP_TEST(iv_5, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_FODT0003); } } void test_dt_string() { const XSValue::DataType dt = XSValue::dt_string; bool toValidate = true; const char v_1[]="mystring"; XSValue::XSValue_Data act_v_ran_v_1; act_v_ran_v_1.fValue.f_strVal = 0; /*** * * validate * --------- * availability return value context * ---------------------------------------------- * valid true n/a * invalid n/a false st_FOCA0002 * ***/ // valid VALIDATE_TEST(v_1, dt, EXP_RET_VALID_TRUE, DONT_CARE); // invalid /*** * * getActualValue * --------------- * availability return value context * ---------------------------------------------- * validation on * ============= * valid 0 n/a * invalid n/a 0 st_FOCA0002 * * validation off * ============== * valid 0 n/a * invalid n/a 0 st_FOCA0002 * ***/ for (int i = 0; i < 2; i++) { //validation on/off toValidate = ( 0 == i) ? true : false; // valid ACTVALUE_TEST(v_1, dt, toValidate, EXP_RET_VALUE_FALSE, XSValue::st_NoActVal, act_v_ran_v_1); // invalid } /*** * * getCanonicalRepresentation * --------------------------- * availability return value context * ---------------------------------------------- * * validation on * ============= * valid 0 n/a * invalid n/a 0 st_FOCA0002 * * validation off * ============== * valid 0 n/a * invalid n/a 0 st_FOCA0002 * ***/ for (int j = 0; j < 2; j++) { //validation on/off toValidate = ( 0 == j) ? true : false; // valid CANREP_TEST(v_1, dt, toValidate, EXP_RET_CANREP_FALSE, null_string, XSValue::st_NoCanRep); // invalid } } void test_dt_anyURI() { const XSValue::DataType dt = XSValue::dt_anyURI; bool toValidate = true; const char v_1[]=" http://www.schemaTest.org/IBMd3_2_17v01 \n"; const char v_2[]="gopher://spinaltap.micro.umn.edu/00/Weather/California/Los%20Angeles"; const char v_3[]="ftp://www.noNamespace.edu"; XSValue::XSValue_Data act_v_ran_v_1; act_v_ran_v_1.fValue.f_strVal = 0; XSValue::XSValue_Data act_v_ran_v_2; act_v_ran_v_2.fValue.f_strVal = 0; XSValue::XSValue_Data act_v_ran_v_3; act_v_ran_v_3.fValue.f_strVal = 0; const char iv_1[]="+htp://peiyongz@:90"; const char iv_2[]=">////1.2.3.4."; const char iv_3[]=" #if defined(XERCES_NEW_IOSTREAMS) #include #else #include #endif #include XERCES_CPP_NAMESPACE_USE // --------------------------------------------------------------------------- // This is a simple class that lets us do easy (though not terribly efficient) // trancoding of XMLCh data to local code page for display. // --------------------------------------------------------------------------- class StrX { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- StrX(const XMLCh* const toTranscode) { fUnicodeForm = XMLString::replicate(toTranscode); fLocalForm = XMLString::transcode(toTranscode); } StrX(const char* const toTranscode) { // Call the private transcoding method fLocalForm = XMLString::replicate(toTranscode); fUnicodeForm = XMLString::transcode(toTranscode); } ~StrX() { XMLString::release(&fLocalForm); XMLString::release(&fUnicodeForm); } // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const char* localForm() const { return fLocalForm; } const XMLCh* unicodeForm() const { return fUnicodeForm; } private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- StrX(const StrX&); StrX & operator=(const StrX &); // ----------------------------------------------------------------------- // Private data members // // fLocalForm // This is the local code page form of the string. // // fUnicodeForm // This is the Unicode XMLCh format of the string. // ----------------------------------------------------------------------- XMLCh* fUnicodeForm; char* fLocalForm; }; #define UniForm(str) StrX(str).unicodeForm() #define LocForm(str) StrX(str).localForm() inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump) { target << toDump.localForm(); return target; } #endif xerces-c-3.1.1/tests/src/MemHandlerTest/0000755000175000017500000000000011363617314017055 5ustar borisborisxerces-c-3.1.1/tests/src/MemHandlerTest/MemoryMonitor.cpp0000644000175000017500000004043511274567126022415 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: MemoryMonitor.cpp 833057 2009-11-05 15:25:10Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include "MemoryMonitor.hpp" #if defined(XERCES_NEW_IOSTREAMS) #include #include #else #include #include #endif #include #include #include #include MemoryManager* MemoryMonitor::getExceptionMemoryManager() { return this; } void* MemoryMonitor::allocate(XMLSize_t size) { void *key = ::operator new(size); fHashTable->put(key, (unsigned int)size); return key; } void MemoryMonitor::deallocate(void* p) { // if fHashTable doesn't contain p, then this memory manager // didn't allocate that memory--a segfault waiting to happen... assert(p == 0 || fHashTable->containsKey(p) != 0); if (p != 0) { fHashTable->removeKey(p); ::operator delete(p); } } unsigned int MemoryMonitor::getTotalMemory() { unsigned int total = 0; ValueHashTableOfEnumerator *memEnum = new ValueHashTableOfEnumerator(fHashTable); while(memEnum->hasMoreElements()) { total += memEnum->nextElement(); } delete memEnum; return total; } static void usage() { XERCES_STD_QUALIFIER cout << "\nUsage:\n" " MemHandlerTest [options] \n\n" "This program invokes the XercesDOMParser, DOMLSParser, SAXParser ,\n" "and the SAX2XMLReader, and ensures that MemoryManagers set on these\n" "domBuilders are called to delete just as many bytes as they allocate.\n" "This is done for each XML file, and each file is processed\n" "as many times as indicated.\n" "Options:\n" " -l Indicate the input file is a List File that has a list of xml files.\n" " Default to off (Input file is an XML file).\n" " -v=xxx Validation scheme [always | never | auto*].\n" " -n Enable namespace processing. Defaults to off.\n" " -s Enable schema processing. Defaults to off.\n" " -f Enable full schema constraint checking. Defaults to off.\n" " -r=n Run file through domBuilders n times.\n" " -? Show this help.\n\n" " * = Default if not provided explicitly.\n" << XERCES_STD_QUALIFIER endl; } class DOMLSParserHandler : public DOMErrorHandler { public: DOMLSParserHandler() {}; ~DOMLSParserHandler() {}; bool handleError(const DOMError &error) { char *message = 0; XERCES_STD_QUALIFIER cerr << "Error occurred in DOMBuilder! Message: " << (message = XMLString::transcode(error.getMessage())) << " of severity " << error.getSeverity() << "." << XERCES_STD_QUALIFIER endl; XMLString::release(&message); return true; } }; class SAXErrorHandler : public ErrorHandler { public: SAXErrorHandler() {}; ~SAXErrorHandler() {}; void warning(const SAXParseException &exc ) { char *message = 0; XERCES_STD_QUALIFIER cerr << "SAX warning received! Text: " << (message = XMLString::transcode(exc.getMessage())) << "." << XERCES_STD_QUALIFIER endl; XMLString::release(&message); } void error(const SAXParseException &exc ) { char *message = 0; XERCES_STD_QUALIFIER cerr << "SAX error received! Text: " << (message = XMLString::transcode(exc.getMessage())) << "." << XERCES_STD_QUALIFIER endl; XMLString::release(&message); } void fatalError(const SAXParseException &exc ) { char *message = 0; XERCES_STD_QUALIFIER cerr << "SAX fatalError received! Text: " << (message = XMLString::transcode(exc.getMessage())) << "." << XERCES_STD_QUALIFIER endl; XMLString::release(&message); } // no state so no body void resetErrors() {}; }; /** * This utility takes similar parameters as DOMCount, * with similar meanings. The only difference is that it runs * the file(s) in question through a DOMParser, a DOMBuilder, a SAXParser and * a SAX2XMLReader, setting options as appropriate. It does this * sequentially, n times per file with a single domBuilder * object, and reports what it finds in terms of memory * allocations/deallocations. */ int main (int argC, char *argV[]) { MemoryMonitor *staticMemMonitor = new MemoryMonitor(); // Initialize the XML4C system try { XMLPlatformUtils::Initialize(XMLUni::fgXercescDefaultLocale, 0, 0, staticMemMonitor); } catch (const XMLException& toCatch) { char *msg = XMLString::transcode(toCatch.getMessage()); XERCES_STD_QUALIFIER cerr << "Error during initialization! :\n" << msg << XERCES_STD_QUALIFIER endl; XMLString::release(&msg); return 1; } // Check command line and extract arguments. if (argC < 2) { usage(); return 1; } const char* xmlFile = 0; AbstractDOMParser::ValSchemes domBuilderValScheme = AbstractDOMParser::Val_Auto; bool doNamespaces = false; bool doSchema = false; bool schemaFullChecking = false; bool doList = false; int numReps =1; int argInd; for (argInd = 1; argInd < argC; argInd++) { // Break out on first parm not starting with a dash if (argV[argInd][0] != '-') break; // Watch for special case help request if (!strcmp(argV[argInd], "-?")) { usage(); return 2; } else if (!strncmp(argV[argInd], "-v=", 3) || !strncmp(argV[argInd], "-V=", 3)) { const char* const parm = &argV[argInd][3]; if (!strcmp(parm, "never")) domBuilderValScheme = AbstractDOMParser::Val_Never; else if (!strcmp(parm, "auto")) domBuilderValScheme = AbstractDOMParser::Val_Auto; else if (!strcmp(parm, "always")) domBuilderValScheme = AbstractDOMParser::Val_Always; else { XERCES_STD_QUALIFIER cerr << "Unknown -v= value: " << parm << XERCES_STD_QUALIFIER endl; return 2; } } else if (!strcmp(argV[argInd], "-n") || !strcmp(argV[argInd], "-N")) { doNamespaces = true; } else if (!strcmp(argV[argInd], "-s") || !strcmp(argV[argInd], "-S")) { doSchema = true; } else if (!strcmp(argV[argInd], "-f") || !strcmp(argV[argInd], "-F")) { schemaFullChecking = true; } else if (!strcmp(argV[argInd], "-l") || !strcmp(argV[argInd], "-L")) { doList = true; } else if (!strncmp(argV[argInd], "-r=", 3) || !strncmp(argV[argInd], "-R=", 3)) { const char* const numStr = &argV[argInd][3]; XMLCh* numXStr = XMLString::transcode(numStr); numReps = XMLString::parseInt(numXStr); XMLString::release(&numXStr); } else { XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[argInd] << "', ignoring it\n" << XERCES_STD_QUALIFIER endl; } } // // There should be only one and only one parameter left, and that // should be the file name. // if (argInd != argC - 1) { usage(); return 1; } // Instantiate the DOM domBuilder with its memory manager. MemoryMonitor *domBuilderMemMonitor = new MemoryMonitor(); static const XMLCh gLS[] = { chLatin_L, chLatin_S, chNull }; DOMImplementation *impl = DOMImplementationRegistry::getDOMImplementation(gLS); DOMLSParser *domBuilder = ((DOMImplementationLS*)impl)->createLSParser(DOMImplementationLS::MODE_SYNCHRONOUS, 0, domBuilderMemMonitor); DOMLSParserHandler domBuilderHandler; domBuilder->getDomConfig()->setParameter(XMLUni::fgDOMErrorHandler, &domBuilderHandler); // Instantiate the SAX2 parser with its memory manager. MemoryMonitor *sax2MemMonitor = new MemoryMonitor(); SAX2XMLReader *sax2parser = XMLReaderFactory::createXMLReader(sax2MemMonitor); SAXErrorHandler saxErrorHandler; sax2parser->setErrorHandler(&saxErrorHandler); // Instantiate the SAX 1 parser with its memory manager. MemoryMonitor *sax1MemMonitor = new MemoryMonitor(); SAXParser *saxParser = new (sax1MemMonitor) SAXParser(0, sax1MemMonitor); saxParser->setErrorHandler(&saxErrorHandler); // set features domBuilder->getDomConfig()->setParameter(XMLUni::fgDOMNamespaces, doNamespaces); sax2parser->setFeature(XMLUni::fgSAX2CoreNameSpaces, doNamespaces); saxParser->setDoNamespaces(doNamespaces); domBuilder->getDomConfig()->setParameter(XMLUni::fgXercesSchema, doSchema); sax2parser->setFeature(XMLUni::fgXercesSchema, doSchema); saxParser->setDoSchema(doSchema); domBuilder->getDomConfig()->setParameter(XMLUni::fgXercesHandleMultipleImports, true); sax2parser->setFeature(XMLUni::fgXercesHandleMultipleImports, true); saxParser->setHandleMultipleImports (true); domBuilder->getDomConfig()->setParameter(XMLUni::fgXercesSchemaFullChecking, schemaFullChecking); sax2parser->setFeature(XMLUni::fgXercesSchemaFullChecking, schemaFullChecking); saxParser->setValidationSchemaFullChecking(schemaFullChecking); if (domBuilderValScheme == AbstractDOMParser::Val_Auto) { domBuilder->getDomConfig()->setParameter(XMLUni::fgDOMValidateIfSchema, true); sax2parser->setFeature(XMLUni::fgSAX2CoreValidation, true); sax2parser->setFeature(XMLUni::fgXercesDynamic, true); saxParser->setValidationScheme(SAXParser::Val_Auto); } else if (domBuilderValScheme == AbstractDOMParser::Val_Never) { domBuilder->getDomConfig()->setParameter(XMLUni::fgDOMValidate, false); sax2parser->setFeature(XMLUni::fgSAX2CoreValidation, false); saxParser->setValidationScheme(SAXParser::Val_Never); } else if (domBuilderValScheme == AbstractDOMParser::Val_Always) { domBuilder->getDomConfig()->setParameter(XMLUni::fgDOMValidate, true); sax2parser->setFeature(XMLUni::fgSAX2CoreValidation, true); sax2parser->setFeature(XMLUni::fgXercesDynamic, false); saxParser->setValidationScheme(SAXParser::Val_Always); } // enable datatype normalization - default is off domBuilder->getDomConfig()->setParameter(XMLUni::fgDOMDatatypeNormalization, true); XERCES_STD_QUALIFIER ifstream fin; bool more = true; // the input is a list file if (doList) fin.open(argV[argInd]); if (fin.fail()) { XERCES_STD_QUALIFIER cerr <<"Cannot open the list file: " << argV[argInd] << XERCES_STD_QUALIFIER endl; return 2; } while (more) { char fURI[1000]; //initialize the array to zeros memset(fURI,0,sizeof(fURI)); if (doList) { if (! fin.eof() ) { fin.getline (fURI, sizeof(fURI)); if (!*fURI) continue; else { xmlFile = fURI; XERCES_STD_QUALIFIER cerr << "==Parsing== " << xmlFile << XERCES_STD_QUALIFIER endl; } } else break; } else { xmlFile = argV[argInd]; more = false; } // parse numReps times (in case we need it for some reason) for (int i=0; iresetDocumentPool(); doc = domBuilder->parseURI(xmlFile); if(doc && doc->getDocumentElement()) { XERCES_CPP_NAMESPACE_QUALIFIER DOMNodeList *list=NULL; if(doNamespaces) list=doc->getElementsByTagNameNS(doc->getDocumentElement()->getNamespaceURI(), doc->getDocumentElement()->getLocalName()); else list=doc->getElementsByTagName(doc->getDocumentElement()->getNodeName()); if(list==NULL) XERCES_STD_QUALIFIER cout << "getElementsByTagName didn't return a valid DOMNodeList." << XERCES_STD_QUALIFIER endl; else if(list->item(0)!=doc->getDocumentElement()) XERCES_STD_QUALIFIER cout << "getElementsByTagName didn't find the root element." << XERCES_STD_QUALIFIER endl; } sax2parser->parse(xmlFile); saxParser->parse(xmlFile); } catch (const OutOfMemoryException&) { XERCES_STD_QUALIFIER cerr << "OutOfMemoryException during parsing: '" << xmlFile << "'\n" << XERCES_STD_QUALIFIER endl;; continue; } catch (const XMLException& toCatch) { char *msg = XMLString::transcode(toCatch.getMessage()); XERCES_STD_QUALIFIER cerr << "\nError during parsing: '" << xmlFile << "'\n" << "Exception message is: \n" << msg << "\n" << XERCES_STD_QUALIFIER endl; XMLString::release(&msg); continue; } catch (const DOMException& toCatch) { const unsigned int maxChars = 2047; XMLCh errText[maxChars + 1]; XERCES_STD_QUALIFIER cerr << "\nDOM Error during parsing: '" << xmlFile << "'\n" << "DOMException code is: " << toCatch.code << XERCES_STD_QUALIFIER endl; if (DOMImplementation::loadDOMExceptionMsg(toCatch.code, errText, maxChars)) { char * msg = XMLString::transcode(errText); XERCES_STD_QUALIFIER cerr << "Message is: " << msg << XERCES_STD_QUALIFIER endl; continue; } } catch (...) { XERCES_STD_QUALIFIER cerr << "\nUnexpected exception during parsing: '" << xmlFile << "'\n"; continue; } } } // // Delete the domBuilder itself. Must be done prior to calling Terminate, below. // domBuilder->release(); delete sax2parser; delete saxParser; XERCES_STD_QUALIFIER cout << "At destruction, domBuilderMemMonitor has " << domBuilderMemMonitor->getTotalMemory() << " bytes." << XERCES_STD_QUALIFIER endl; XERCES_STD_QUALIFIER cout << "At destruction, sax2MemMonitor has " << sax2MemMonitor->getTotalMemory() << " bytes." << XERCES_STD_QUALIFIER endl; XERCES_STD_QUALIFIER cout << "At destruction, sax1MemMonitor has " << sax1MemMonitor->getTotalMemory() << " bytes." << XERCES_STD_QUALIFIER endl; delete domBuilderMemMonitor; delete sax2MemMonitor; delete sax1MemMonitor; XMLPlatformUtils::Terminate(); XERCES_STD_QUALIFIER cout << "At destruction, staticMemMonitor has " << staticMemMonitor->getTotalMemory() << " bytes." << XERCES_STD_QUALIFIER endl; delete staticMemMonitor; return 0; } xerces-c-3.1.1/tests/src/MemHandlerTest/SimpleValueHashTableOf.hpp0000644000175000017500000004233211042054515024051 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SimpleValueHashTableOf.hpp 679340 2008-07-24 10:28:29Z borisk $ */ // // This is just a version of the ValueHashTableOf implementation from // xercesc/util; we need a new one here because this cannot use the // pluggable memory management facilities. // #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_USE // Forward declare the enumerator so it can be our friend. // template class ValueHashTableOfEnumerator; // // This should really be a nested class, but some of the compilers we // have to support cannot deal with that! // template struct ValueHashTableBucketElem { ValueHashTableBucketElem(void* key, const TVal& value, ValueHashTableBucketElem* next) : fData(value), fNext(next), fKey(key) { } TVal fData; ValueHashTableBucketElem* fNext; void* fKey; }; template class SimpleValueHashTableOf { public: // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- SimpleValueHashTableOf(const XMLSize_t modulus); SimpleValueHashTableOf(const XMLSize_t modulus, const THasher& hasher); ~SimpleValueHashTableOf(); // ----------------------------------------------------------------------- // Element management // ----------------------------------------------------------------------- bool isEmpty() const; bool containsKey(const void* const key) const; void removeKey(const void* const key); void removeAll(); // ----------------------------------------------------------------------- // Getters // ----------------------------------------------------------------------- TVal& get(const void* const key); const TVal& get(const void* const key) const; // ----------------------------------------------------------------------- // Putters // ----------------------------------------------------------------------- void put(void* key, const TVal& valueToAdopt); private : // ----------------------------------------------------------------------- // Declare our friends // ----------------------------------------------------------------------- friend class ValueHashTableOfEnumerator; private: // ----------------------------------------------------------------------- // Private methods // ----------------------------------------------------------------------- ValueHashTableBucketElem* findBucketElem(const void* const key, XMLSize_t& hashVal); const ValueHashTableBucketElem* findBucketElem(const void* const key, XMLSize_t& hashVal) const; void removeBucketElem(const void* const key, XMLSize_t& hashVal); void initialize(const XMLSize_t modulus); // ----------------------------------------------------------------------- // Data members // // fBucketList // This is the array that contains the heads of all of the list // buckets, one for each possible hash value. // // fHashModulus // The modulus used for this hash table, to hash the keys. This is // also the number of elements in the bucket list. // // fHash // The hasher for the key data type. // ----------------------------------------------------------------------- ValueHashTableBucketElem** fBucketList; XMLSize_t fHashModulus; THasher fHasher; }; // // An enumerator for a value array. It derives from the basic enumerator // class, so that value vectors can be generically enumerated. // template class ValueHashTableOfEnumerator : public XMLEnumerator { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- ValueHashTableOfEnumerator(SimpleValueHashTableOf* const toEnum, const bool adopt = false); virtual ~ValueHashTableOfEnumerator(); // ----------------------------------------------------------------------- // Enum interface // ----------------------------------------------------------------------- bool hasMoreElements() const; TVal& nextElement(); void Reset(); private : // ----------------------------------------------------------------------- // Private methods // ----------------------------------------------------------------------- void findNext(); // ----------------------------------------------------------------------- // Data Members // // fAdopted // Indicates whether we have adopted the passed vector. If so then // we delete the vector when we are destroyed. // // fCurElem // This is the current bucket bucket element that we are on. // // fCurHash // The is the current hash buck that we are working on. Once we hit // the end of the bucket that fCurElem is in, then we have to start // working this one up to the next non-empty bucket. // // fToEnum // The value array being enumerated. // ----------------------------------------------------------------------- bool fAdopted; ValueHashTableBucketElem* fCurElem; XMLSize_t fCurHash; SimpleValueHashTableOf* fToEnum; }; // --------------------------------------------------------------------------- // ValueHashTableOf: Constructors and Destructor // --------------------------------------------------------------------------- template SimpleValueHashTableOf::SimpleValueHashTableOf(const XMLSize_t modulus , const THasher& hasher) : fBucketList(0), fHashModulus(modulus), fHasher (hasher) { initialize(modulus); } template SimpleValueHashTableOf::SimpleValueHashTableOf(const XMLSize_t modulus) : fBucketList(0), fHashModulus(modulus) { initialize(modulus); } template void SimpleValueHashTableOf::initialize(const XMLSize_t modulus) { if (modulus == 0) ThrowXML(IllegalArgumentException, XMLExcepts::HshTbl_ZeroModulus); // Allocate the bucket list and zero them fBucketList = new ValueHashTableBucketElem*[fHashModulus]; for (XMLSize_t index = 0; index < fHashModulus; index++) fBucketList[index] = 0; } template SimpleValueHashTableOf::~SimpleValueHashTableOf() { removeAll(); // Then delete the bucket list & hasher delete [] fBucketList; } // --------------------------------------------------------------------------- // SimpleValueHashTableOf: Element management // --------------------------------------------------------------------------- template bool SimpleValueHashTableOf::isEmpty() const { // Just check the bucket list for non-empty elements for (XMLSize_t buckInd = 0; buckInd < fHashModulus; buckInd++) { if (fBucketList[buckInd] != 0) return false; } return true; } template bool SimpleValueHashTableOf:: containsKey(const void* const key) const { XMLSize_t hashVal; const ValueHashTableBucketElem* findIt = findBucketElem(key, hashVal); return (findIt != 0); } template void SimpleValueHashTableOf:: removeKey(const void* const key) { XMLSize_t hashVal; removeBucketElem(key, hashVal); } template void SimpleValueHashTableOf::removeAll() { // Clean up the buckets first for (XMLSize_t buckInd = 0; buckInd < fHashModulus; buckInd++) { // Get the bucket list head for this entry ValueHashTableBucketElem* curElem = fBucketList[buckInd]; ValueHashTableBucketElem* nextElem; while (curElem) { // Save the next element before we hose this one nextElem = curElem->fNext; // delete the current element and move forward delete curElem; curElem = nextElem; } // Clean out this entry fBucketList[buckInd] = 0; } } // --------------------------------------------------------------------------- // SimpleValueHashTableOf: Getters // --------------------------------------------------------------------------- template TVal& SimpleValueHashTableOf::get(const void* const key) { XMLSize_t hashVal; ValueHashTableBucketElem* findIt = findBucketElem(key, hashVal); if (!findIt) ThrowXML(NoSuchElementException, XMLExcepts::HshTbl_NoSuchKeyExists); return findIt->fData; } template const TVal& SimpleValueHashTableOf:: get(const void* const key) const { XMLSize_t hashVal; const ValueHashTableBucketElem* findIt = findBucketElem(key, hashVal); if (!findIt) ThrowXML(NoSuchElementException, XMLExcepts::HshTbl_NoSuchKeyExists); return findIt->fData; } // --------------------------------------------------------------------------- // SimpleValueHashTableOf: Putters // --------------------------------------------------------------------------- template void SimpleValueHashTableOf::put(void* key, const TVal& valueToAdopt) { // First see if the key exists already XMLSize_t hashVal; ValueHashTableBucketElem* newBucket = findBucketElem(key, hashVal); // // If so,then update its value. If not, then we need to add it to // the right bucket // if (newBucket) { newBucket->fData = valueToAdopt; newBucket->fKey = key; } else { newBucket = new ValueHashTableBucketElem(key, valueToAdopt, fBucketList[hashVal]); fBucketList[hashVal] = newBucket; } } // --------------------------------------------------------------------------- // SimpleValueHashTableOf: Private methods // --------------------------------------------------------------------------- template ValueHashTableBucketElem* SimpleValueHashTableOf:: findBucketElem(const void* const key, XMLSize_t& hashVal) { // Hash the key hashVal = fHasher.getHashVal(key, fHashModulus); if (hashVal > fHashModulus) ThrowXML(RuntimeException, XMLExcepts::HshTbl_BadHashFromKey); // Search that bucket for the key ValueHashTableBucketElem* curElem = fBucketList[hashVal]; while (curElem) { if (fHasher.equals(key, curElem->fKey)) return curElem; curElem = curElem->fNext; } return 0; } template const ValueHashTableBucketElem* SimpleValueHashTableOf:: findBucketElem(const void* const key, XMLSize_t& hashVal) const { // Hash the key hashVal = fHasher.getHashVal(key, fHashModulus); if (hashVal > fHashModulus) ThrowXML(RuntimeException, XMLExcepts::HshTbl_BadHashFromKey); // Search that bucket for the key const ValueHashTableBucketElem* curElem = fBucketList[hashVal]; while (curElem) { if (fHasher.equals(key, curElem->fKey)) return curElem; curElem = curElem->fNext; } return 0; } template void SimpleValueHashTableOf:: removeBucketElem(const void* const key, XMLSize_t& hashVal) { // Hash the key hashVal = fHasher.getHashVal(key, fHashModulus); if (hashVal > fHashModulus) ThrowXML(RuntimeException, XMLExcepts::HshTbl_BadHashFromKey); // // Search the given bucket for this key. Keep up with the previous // element so we can patch around it. // ValueHashTableBucketElem* curElem = fBucketList[hashVal]; ValueHashTableBucketElem* lastElem = 0; while (curElem) { if (fHasher.equals(key, curElem->fKey)) { if (!lastElem) { // It was the first in the bucket fBucketList[hashVal] = curElem->fNext; } else { // Patch around the current element lastElem->fNext = curElem->fNext; } // Delete the current element delete curElem; return; } // Move both pointers upwards lastElem = curElem; curElem = curElem->fNext; } // We never found that key ThrowXML(NoSuchElementException, XMLExcepts::HshTbl_NoSuchKeyExists); } // --------------------------------------------------------------------------- // ValueHashTableOfEnumerator: Constructors and Destructor // --------------------------------------------------------------------------- template ValueHashTableOfEnumerator:: ValueHashTableOfEnumerator(SimpleValueHashTableOf* const toEnum, const bool adopt) : fAdopted(adopt), fCurElem(0), fCurHash((XMLSize_t)-1), fToEnum(toEnum) { if (!toEnum) ThrowXML(NullPointerException, XMLExcepts::CPtr_PointerIsZero); // // Find the next available bucket element in the hash table. If it // comes back zero, that just means the table is empty. // // Note that the -1 in the current hash tells it to start from the // beginning. // findNext(); } template ValueHashTableOfEnumerator::~ValueHashTableOfEnumerator() { if (fAdopted) delete fToEnum; } // --------------------------------------------------------------------------- // ValueHashTableOfEnumerator: Enum interface // --------------------------------------------------------------------------- template bool ValueHashTableOfEnumerator::hasMoreElements() const { // // If our current has is at the max and there are no more elements // in the current bucket, then no more elements. // if (!fCurElem && (fCurHash == fToEnum->fHashModulus)) return false; return true; } template TVal& ValueHashTableOfEnumerator::nextElement() { // Make sure we have an element to return if (!hasMoreElements()) ThrowXML(NoSuchElementException, XMLExcepts::Enum_NoMoreElements); // // Save the current element, then move up to the next one for the // next time around. // ValueHashTableBucketElem* saveElem = fCurElem; findNext(); return saveElem->fData; } template void ValueHashTableOfEnumerator::Reset() { fCurHash = (XMLSize_t)-1; fCurElem = 0; findNext(); } // --------------------------------------------------------------------------- // ValueHashTableOfEnumerator: Private helper methods // --------------------------------------------------------------------------- template void ValueHashTableOfEnumerator::findNext() { // // If there is a current element, move to its next element. If this // hits the end of the bucket, the next block will handle the rest. // if (fCurElem) fCurElem = fCurElem->fNext; // // If the current element is null, then we have to move up to the // next hash value. If that is the hash modulus, then we cannot // go further. // if (!fCurElem) { fCurHash++; if (fCurHash == fToEnum->fHashModulus) return; // Else find the next non-empty bucket while (true) { if (fToEnum->fBucketList[fCurHash]) break; // Bump to the next hash value. If we max out return fCurHash++; if (fCurHash == fToEnum->fHashModulus) return; } fCurElem = fToEnum->fBucketList[fCurHash]; } } xerces-c-3.1.1/tests/src/MemHandlerTest/MemoryMonitor.hpp0000644000175000017500000000614111066450070022402 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: MemoryMonitor.hpp 698591 2008-09-24 14:35:36Z borisk $ */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "SimpleValueHashTableOf.hpp" XERCES_CPP_NAMESPACE_USE /** * Configurable memory manager * *

This class is a memory manager implementation that keeps track of all * allocations/deallocations to ensure that all memory that it allocated is * deallocated. *

*/ class MemoryMonitor : public MemoryManager { public: /** @name Constructor */ //@{ /** * Default constructor */ MemoryMonitor() { fHashTable = new SimpleValueHashTableOf(1013); } //@} /** @name Destructor */ //@{ /** * Default destructor */ virtual ~MemoryMonitor() { delete fHashTable; } //@} virtual MemoryManager* getExceptionMemoryManager(); /** @name The virtual methods in MemoryManager */ //@{ /** * This method allocates requested memory. * * @param size The requested memory size * * @return A pointer to the allocated memory */ virtual void* allocate(XMLSize_t size); /** * This method deallocates memory * * @param p The pointer to the allocated memory to be deleted */ virtual void deallocate(void* p); //@} // Print out amount of currently allocated memory unsigned int getTotalMemory(); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- MemoryMonitor(const MemoryMonitor &); MemoryMonitor& operator=(const MemoryMonitor &); SimpleValueHashTableOf* fHashTable; }; xerces-c-3.1.1/tests/src/InitTermTest/0000755000175000017500000000000011363617314016574 5ustar borisborisxerces-c-3.1.1/tests/src/InitTermTest/InitTermTest.cpp0000644000175000017500000004521111274567126021704 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: InitTermTest.cpp 833057 2009-11-05 15:25:10Z borisk $ */ // --------------------------------------------------------------------------- // This program tests the XMLPlatformUtils::Initialize/Terminate() pair // by calling the pair a number of times. // --------------------------------------------------------------------------- // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include #include "InitTermTest.hpp" #include #include #if defined(XERCES_NEW_IOSTREAMS) #include #else #include #endif #include // --------------------------------------------------------------------------- // Local Enum to switch theState // --------------------------------------------------------------------------- enum Teststate { Once, Multiple, UnEven, Limit, ExceedLimit }; // --------------------------------------------------------------------------- // Declare functions // --------------------------------------------------------------------------- int TestInit4DOM(const char* xmlFile, bool gDoNamespaces, bool gDoSchema, bool gSchemaFullChecking, Teststate theState); int TestInit4SAX(const char* xmlFile, bool gDoNamespaces, bool gDoSchema, bool gSchemaFullChecking, Teststate theState); int TestInit4SAX2(const char* xmlFile, bool gDoNamespaces, bool gDoSchema, bool gSchemaFullChecking, Teststate theState); // --------------------------------------------------------------------------- // Define macro // --------------------------------------------------------------------------- #define TESTINITPRE \ long times = 1; \ switch (theState) { \ case Multiple: \ case UnEven: \ times = 100; \ break; \ case Limit: \ case ExceedLimit: \ times = LONG_MAX; \ break; \ case Once: \ default: \ times = 1; \ } \ long i = 0; \ for (i = 0; i < times; i++) { \ try \ { \ XMLPlatformUtils::Initialize(); \ } \ \ catch (const XMLException& toCatch) \ { \ XERCES_STD_QUALIFIER cerr << "Error during initialization! :\n" \ << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl; \ return 1; \ } \ } \ \ if (theState == ExceedLimit) { \ try \ { \ XMLPlatformUtils::Initialize(); \ } \ \ catch (const XMLException& toCatch) \ { \ XERCES_STD_QUALIFIER cerr << "Error during initialization! :\n" \ << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl; \ return 1; \ } \ } #define TESTINITPOST \ InitTermTestErrorHandler errorHandler; \ parser->setErrorHandler(&errorHandler); \ bool errorOccurred = false; \ \ errorHandler.resetErrors(); \ \ try \ { \ parser->parse(xmlFile); \ } \ catch (const OutOfMemoryException&) \ { \ XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl; \ errorOccurred = true; \ } \ catch (const XMLException& toCatch) \ { \ XERCES_STD_QUALIFIER cerr << "\nError during parsing: '" << xmlFile << "'\n" \ << "Exception message is: \n" \ << StrX(toCatch.getMessage()) << "\n" << XERCES_STD_QUALIFIER endl; \ errorOccurred = true; \ } \ catch (const DOMException& toCatch) \ { \ XERCES_STD_QUALIFIER cerr << "\nDOM Error during parsing: '" << xmlFile \ << "\nDOMException code is: \n" \ << toCatch.code << "\n" << XERCES_STD_QUALIFIER endl; \ errorOccurred = true; \ } \ catch (...) \ { \ XERCES_STD_QUALIFIER cerr << "\nUnexpected exception during parsing: '" \ << xmlFile << "'\n"; \ errorOccurred = true; \ } \ \ if (errorHandler.getSawErrors()) \ { \ XERCES_STD_QUALIFIER cout << "\nErrors occurred, no output available\n" << XERCES_STD_QUALIFIER endl;\ errorOccurred = true; \ } \ \ delete parser; \ \ for (i = 0; i < times; i++) { \ XMLPlatformUtils::Terminate(); \ } \ \ if (theState == ExceedLimit || theState == UnEven) { \ XMLPlatformUtils::Terminate(); \ } \ \ if (errorOccurred) \ return 4; \ else \ return 0; // --------------------------------------------------------------------------- // DOM Parser // --------------------------------------------------------------------------- int TestInit4DOM(const char* xmlFile, bool gDoNamespaces, bool gDoSchema, bool gSchemaFullChecking, Teststate theState) { TESTINITPRE; XercesDOMParser* parser = new XercesDOMParser; parser->setDoNamespaces(gDoNamespaces); parser->setDoSchema(gDoSchema); parser->setHandleMultipleImports (true); parser->setValidationSchemaFullChecking(gSchemaFullChecking); TESTINITPOST; } // --------------------------------------------------------------------------- // SAX Parser // --------------------------------------------------------------------------- int TestInit4SAX(const char* xmlFile, bool gDoNamespaces, bool gDoSchema, bool gSchemaFullChecking, Teststate theState) { TESTINITPRE; SAXParser* parser = new SAXParser; parser->setDoNamespaces(gDoNamespaces); parser->setDoSchema(gDoSchema); parser->setHandleMultipleImports (true); parser->setValidationSchemaFullChecking(gSchemaFullChecking); TESTINITPOST; } // --------------------------------------------------------------------------- // SAX2 XML Reader // --------------------------------------------------------------------------- int TestInit4SAX2(const char* xmlFile, bool gDoNamespaces, bool gDoSchema, bool gSchemaFullChecking, Teststate theState) { TESTINITPRE; SAX2XMLReader* parser = XMLReaderFactory::createXMLReader(); XMLCh* doNamespaceFeature = XMLString::transcode("http://xml.org/sax/features/namespaces"); parser->setFeature(doNamespaceFeature, gDoNamespaces); XMLCh* doSchemaFeature = XMLString::transcode("http://apache.org/xml/features/validation/schema"); parser->setFeature(doSchemaFeature, gDoSchema); XMLCh* handleMultipleImportsFeature = XMLString::transcode("http://apache.org/xml/features/validation/schema/handle-multiple-imports"); parser->setFeature(handleMultipleImportsFeature, true); XMLCh* fullSchemaCheckFeature = XMLString::transcode("http://apache.org/xml/features/validation/schema-full-checking"); parser->setFeature(fullSchemaCheckFeature, gSchemaFullChecking); XMLString::release(&doNamespaceFeature); XMLString::release(&doSchemaFeature); XMLString::release(&handleMultipleImportsFeature); XMLString::release(&fullSchemaCheckFeature); TESTINITPOST; } // --------------------------------------------------------------------------- // // Usage() // // --------------------------------------------------------------------------- void usage() { XERCES_STD_QUALIFIER cout << "\nUsage:\n" " InitTermTest [options] \n\n" "This program tests the XMLPlatformUtils::Initialize()/Terminate()\n" "pair by calling it a number of times.\n" "Options:\n" " -n Enable namespace processing. Default is off.\n" " -s Enable schema processing. Default is off.\n" " -f Enable full schema constraint checking. Defaults to off.\n" " -? Show this help.\n" << XERCES_STD_QUALIFIER endl; } // --------------------------------------------------------------------------- // Main // --------------------------------------------------------------------------- int main(int argC, char* argV[]) { // --------------------------------------------------------------------------- // Local data // // gDoNamespaces // Indicates whether namespace processing should be done. // // gDoSchema // Indicates whether schema processing should be done. // // gSchemaFullChecking // Indicates whether full schema constraint checking should be done. // // --------------------------------------------------------------------------- bool gDoNamespaces = false; bool gDoSchema = false; bool gSchemaFullChecking = false; // Check command line and extract arguments. if (argC < 2) { usage(); return 1; } // See if non validating dom parser configuration is requested. int parmInd; for (parmInd = 1; parmInd < argC; parmInd++) { // Break out on first parm not starting with a dash if (argV[parmInd][0] != '-') break; // Watch for special case help request if (!strcmp(argV[parmInd], "-?")) { usage(); return 2; } else if (!strcmp(argV[parmInd], "-n") || !strcmp(argV[parmInd], "-N")) { gDoNamespaces = true; } else if (!strcmp(argV[parmInd], "-s") || !strcmp(argV[parmInd], "-S")) { gDoSchema = true; } else if (!strcmp(argV[parmInd], "-f") || !strcmp(argV[parmInd], "-F")) { gSchemaFullChecking = true; } else { XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[parmInd] << "', ignoring it.\n" << XERCES_STD_QUALIFIER endl; } } // // And now we have to have only one parameter left and it must be // the file name. // if (parmInd + 1 != argC) { usage(); return 1; } char* xmlFile = argV[parmInd]; bool error = false; // // Calling Init/Term pair a number of times // unsigned int i = 0; for (i=0; i < 100; i++) { if (error) { XERCES_STD_QUALIFIER cout << "Test Failed" << XERCES_STD_QUALIFIER endl; return 4; } if (TestInit4DOM(xmlFile, gDoNamespaces, gDoSchema, gSchemaFullChecking, Once)) error = true; if (TestInit4SAX(xmlFile, gDoNamespaces, gDoSchema, gSchemaFullChecking, Once)) error = true; if (TestInit4SAX2(xmlFile, gDoNamespaces, gDoSchema, gSchemaFullChecking, Once)) error = true; } if (error || TestInit4DOM(xmlFile, gDoNamespaces, gDoSchema, gSchemaFullChecking, Multiple)) error = true; if (error || TestInit4SAX(xmlFile, gDoNamespaces, gDoSchema, gSchemaFullChecking, Multiple)) error = true; if (error || TestInit4SAX2(xmlFile, gDoNamespaces, gDoSchema, gSchemaFullChecking, Multiple)) error = true; /* * The following Limit test is a stress test that can run a long time * Commented out for regular sanity test */ /* if (error || TestInit4DOM(xmlFile, gDoNamespaces, gDoSchema, gSchemaFullChecking, Limit)) error = true; if (error || TestInit4SAX(xmlFile, gDoNamespaces, gDoSchema, gSchemaFullChecking, Limit)) error = true; if (error || TestInit4SAX2(xmlFile, gDoNamespaces, gDoSchema, gSchemaFullChecking, Limit)) error = true; if (error || TestInit4DOM(xmlFile, gDoNamespaces, gDoSchema, gSchemaFullChecking, ExceedLimit)) error = true; if (error || TestInit4SAX(xmlFile, gDoNamespaces, gDoSchema, gSchemaFullChecking, ExceedLimit)) error = true; if (error || TestInit4SAX2(xmlFile, gDoNamespaces, gDoSchema, gSchemaFullChecking, ExceedLimit)) error = true; */ if (error || TestInit4DOM(xmlFile, gDoNamespaces, gDoSchema, gSchemaFullChecking, UnEven)) error = true; if (error || TestInit4SAX(xmlFile, gDoNamespaces, gDoSchema, gSchemaFullChecking, UnEven)) error = true; if (error || TestInit4SAX2(xmlFile, gDoNamespaces, gDoSchema, gSchemaFullChecking, UnEven)) error = true; if (error) { XERCES_STD_QUALIFIER cout << "Test Failed" << XERCES_STD_QUALIFIER endl; return 4; } XERCES_STD_QUALIFIER cout << "Test Run Successfully" << XERCES_STD_QUALIFIER endl; return 0; } // --------------------------------------------------------------------------- // InitTermTestErrorHandler // --------------------------------------------------------------------------- InitTermTestErrorHandler::InitTermTestErrorHandler() : fSawErrors(false) { } InitTermTestErrorHandler::~InitTermTestErrorHandler() { } void InitTermTestErrorHandler::error(const SAXParseException& e) { fSawErrors = true; XERCES_STD_QUALIFIER cerr << "\nError at file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "\n Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; } void InitTermTestErrorHandler::fatalError(const SAXParseException& e) { fSawErrors = true; XERCES_STD_QUALIFIER cerr << "\nFatal Error at file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "\n Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; } void InitTermTestErrorHandler::warning(const SAXParseException& e) { XERCES_STD_QUALIFIER cerr << "\nWarning at file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "\n Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; } void InitTermTestErrorHandler::resetErrors() { fSawErrors = false; } xerces-c-3.1.1/tests/src/InitTermTest/InitTermTest.hpp0000644000175000017500000001123710522202400021662 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: InitTermTest.hpp 470088 2006-11-01 20:35:12Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #if defined(XERCES_NEW_IOSTREAMS) #include #else #include #endif XERCES_CPP_NAMESPACE_USE XERCES_CPP_NAMESPACE_BEGIN class SAXParseException; XERCES_CPP_NAMESPACE_END // --------------------------------------------------------------------------- // Simple error handler deriviative to install on parser // --------------------------------------------------------------------------- class InitTermTestErrorHandler : public ErrorHandler { public: // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- InitTermTestErrorHandler(); ~InitTermTestErrorHandler(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- bool getSawErrors() const; // ----------------------------------------------------------------------- // Implementation of the SAX ErrorHandler interface // ----------------------------------------------------------------------- void warning(const SAXParseException& e); void error(const SAXParseException& e); void fatalError(const SAXParseException& e); void resetErrors(); private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- InitTermTestErrorHandler(const InitTermTestErrorHandler&); void operator=(const InitTermTestErrorHandler&); // ----------------------------------------------------------------------- // Private data members // // fSawErrors // This is set if we get any errors, and is queryable via a getter // method. Its used by the main code to suppress output if there are // errors. // ----------------------------------------------------------------------- bool fSawErrors; }; // --------------------------------------------------------------------------- // This is a simple class that lets us do easy (though not terribly efficient) // trancoding of XMLCh data to local code page for display. // --------------------------------------------------------------------------- class StrX { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- StrX(const XMLCh* const toTranscode) { // Call the private transcoding method fLocalForm = XMLString::transcode(toTranscode); } ~StrX() { XMLString::release(&fLocalForm); } // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const char* localForm() const { return fLocalForm; } private : // ----------------------------------------------------------------------- // Private data members // // fLocalForm // This is the local code page form of the string. // ----------------------------------------------------------------------- char* fLocalForm; }; inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump) { target << toDump.localForm(); return target; } inline bool InitTermTestErrorHandler::getSawErrors() const { return fSawErrors; } xerces-c-3.1.1/tests/src/ThreadTest/0000755000175000017500000000000011363617314016250 5ustar borisborisxerces-c-3.1.1/tests/src/ThreadTest/ThreadTest.cpp0000644000175000017500000013316111274567126021036 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: ThreadTest.cpp 833057 2009-11-05 15:25:10Z borisk $ * * @author Andy Heninger, IBM */ #if HAVE_CONFIG_H # include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include void clearFileInfoMemory(); #ifdef HAVE_PTHREAD #include #include #include //------------------------------------------------------------------------------ // // UNIX specific code for starting threads // //------------------------------------------------------------------------------ extern "C" { typedef void (*ThreadFunc)(void *); typedef void *(*pthreadfunc)(void *); class ThreadFuncs // This class isolates OS dependent threading { // functions from the rest of ThreadTest program. public: static void Sleep(int millis); static void startThread(ThreadFunc, void *param); }; void ThreadFuncs::Sleep(int millis) { int seconds = millis/1000; if (seconds <= 0) seconds = 1; #if defined(SOLARIS) // somehow the sleep hangs on Solaris // so ignore the call #else ::sleep(seconds); #endif } void ThreadFuncs::startThread(ThreadFunc func, void *param) { int x; pthread_t tId; //thread_t tId; #if defined(_HP_UX) && defined(XML_USE_DCE) x = pthread_create( &tId, pthread_attr_default, (pthreadfunc)func, param); #else pthread_attr_t attr; pthread_attr_init(&attr); x = pthread_create( &tId, &attr, (pthreadfunc)func, param); #endif if (x == -1) { fprintf(stderr, "Error starting thread. Errno = %d\n", errno); clearFileInfoMemory(); exit(-1); } } } // end of extern "C" #else //------------------------------------------------------------------------------ // // Windows specific code for starting threads // //------------------------------------------------------------------------------ #include #include typedef DWORD (WINAPI *ThreadFunc)(void *); class ThreadFuncs // This class isolates OS dependent threading { // functions from the rest of ThreadTest program. public: static void Sleep(int millis) {::Sleep(millis);}; static void startThread(ThreadFunc, void *param); }; void ThreadFuncs::startThread(ThreadFunc func, void *param) { HANDLE tHandle; DWORD threadID; tHandle = CreateThread(0, // Security Attributes, 0x10000, // Stack Size, func, // Starting Address. param, // Parmeters 0, // Creation Flags, &threadID); // Thread ID (Can not be null on 95/98) if (tHandle == 0) { fprintf(stderr, "Error starting thread. Errno = %d\n", errno); clearFileInfoMemory(); exit(-1); } // Set the priority of the working threads low, so that the UI of the running system will // remain responsive. SetThreadPriority(tHandle, THREAD_PRIORITY_IDLE); } #endif //------------------------------------------------------------------------------ // // struct InFileInfo One of these structs will be set up for each file listed // on the command line. Once set, the data is unchanging // and can safely be referenced by the test threads without // use of synchronization. // //------------------------------------------------------------------------------ struct InFileInfo { char *fileName; XMLCh *uFileName; // When doing an in-memory parse, avoid transcoding file name // each time through. char *fileContent; // If doing an in-memory parse, this field points // to an allocated string containing the entire file // contents. Otherwise it's 0. size_t fileSize; // The file length. Only initialized when doing // an in-memory test. int checkSum; // The XML checksum. Set up by the main thread for // each file before the worker threads are started. }; //------------------------------------------------------------------------------ // // struct threadInfo Holds information specific to an individual thread. // One of these is set up for each thread in the test. // The main program monitors the threads by looking // at the status stored in these structs. // //------------------------------------------------------------------------------ struct ThreadInfo { bool fHeartBeat; // Set true by the thread each time it finishes // parsing a file. bool fInProgress; // Set to false by the thread when parse in progress unsigned int fParses; // Number of parses completed. int fThreadNum; // Identifying number for this thread. ThreadInfo() { fHeartBeat = false; fInProgress = false; fParses = 0; fThreadNum = -1; } }; XERCES_CPP_NAMESPACE_USE //------------------------------------------------------------------------------ // // struct runInfo Holds the info extracted from the command line. // There is only one of these, and it is static, and // unchanging once the command line has been parsed. // During the test, the threads will access this info without // any synchronization. // //------------------------------------------------------------------------------ const int MAXINFILES = 25; struct RunInfo { bool doGrammarCaching; bool quiet; bool verbose; bool stopNow; bool dom; bool sax; bool reuseParser; bool inMemory; bool dumpOnErr; bool doSchema; bool schemaFullChecking; bool doNamespaces; bool doInitialParse; bool doNamespacePrefixes; // SAX2 SAXParser::ValSchemes valScheme; int numThreads; int totalTime; int numInputFiles; unsigned int numParses; InFileInfo files[MAXINFILES]; }; // //------------------------------------------------------------------------------ // // Global Data // //------------------------------------------------------------------------------ RunInfo gRunInfo; ThreadInfo *gThreadInfo; /** Grammar caching thread testing */ MemoryManager* gpMemMgr = 0; XMLGrammarPool* gp = 0; #ifdef HELPER_ROUTINES // Routines which maybe helpful for debugging static void printString(const XMLCh *str) { char *s = XMLString::transcode(str); printf("%s", s); delete s; } #define CHARS_PER_LINE 40 #define BYTES_PER_LINE 16 /* * DumpLine: Dump out a buffer (address and length) to stderr. */ static void DumpLine(char* address, int length) { int i, c, charCount=0; if (length % 4) length += 4; fprintf(stderr, "%8.8p: ", address); for (i=0; i < length/4; ++i) { fprintf(stderr, "%8.8X ", ((int*)address)[i]); charCount += 9; } for (i=charCount; i < CHARS_PER_LINE; ++i) { putc(' ', stderr); } fprintf(stderr, "| "); for (i=0; i < length; ++i) { c = address[i]; c = (isprint(c) ? c : '.'); fprintf(stderr, "%c", c); } fprintf(stderr, "\n"); } /* * dump: dump out a buffer (address and length) to stderr by dumping out * a line at a time (DumpLine), until the buffer is written out. */ static void dump(void* generalAddress, int length) { int curr = 0; char* address = (char*) generalAddress; while (&address[curr] < &address[length-BYTES_PER_LINE]) { DumpLine(&address[curr], BYTES_PER_LINE); curr += BYTES_PER_LINE; } if (curr < length) { DumpLine(&address[curr], length-curr); } fflush(stderr); } #endif //------------------------------------------------------------------------------ // // class ThreadParser Bundles together a SAX parser and the SAX handlers // and contains the API that the rest of this test // program uses for creating parsers and doing parsing. // // Multiple instances of this class can operate concurrently // in different threads. // //------------------------------------------------------------------------------- class ThreadParser { public: class SAXHandler; class SAX2Handler; SAXHandler* fSAXHandler; SAX2Handler* fSAX2Handler; ErrorHandler* fDOMErrorHandler; // This is the API used by the rest of the test program ThreadParser(); ~ThreadParser(); int parse(int fileNum); // Parse the specified file. fileNum is an index // into the gRunInfo.files array. // return the XML checksum, or // 0 if a parse error occurred. int getCheckSum() { return fCheckSum; } int reCheck(); // Try to compute the checksum again. // for DOM, re-walk the tree. // for SAX, can't do, just return previous value. void domPrint(); // including any children. Default (no param) // version dumps the entire document. void addToCheckSum(const XMLCh *chars, XMLSize_t len=(XMLSize_t)-1); // These are the SAX call-back functions that this class implements. Can be used // for SAX and SAX2. void characters(const XMLCh* const chars, const XMLSize_t length) { addToCheckSum(chars, length); } void ignorableWhitespace(const XMLCh* const chars, const XMLSize_t length) { addToCheckSum(chars, length); } void resetDocument() { } void warning(const SAXParseException& exc) { fprintf(stderr, "*** Warning "); fflush(stderr); throw exc; } void error(const SAXParseException& exc) { fprintf(stderr, "*** Error "); fflush(stderr); throw exc; } void fatalError(const SAXParseException& exc) { fprintf(stderr, "***** Fatal error "); fflush(stderr); throw exc; } // Create a nested class that can inherit from HandlerBase // for SAX startElement callbacks. class SAXHandler : public HandlerBase { public: ThreadParser* SAXInstance; void startElement(const XMLCh* const name, AttributeList& attributes); }; // Create a nested class that can inherit from DefaultHandler // for SAX2 startElement callbacks. class SAX2Handler : public DefaultHandler { public: ThreadParser* SAX2Instance; void startElement(const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname, const Attributes& attributes); }; private: int fCheckSum; SAXParser* fSAXParser; SAX2XMLReader* fSAX2Parser; XercesDOMParser* fXercesDOMParser; XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument * fDoc; ThreadParser(const ThreadParser &); // No copy constructor const ThreadParser & operator =(const ThreadParser &); // No assignment. void domCheckSum(const DOMNode *); }; // // ThreadParser constructor. Invoked by the threads of the test program // to create parsers. // ThreadParser::ThreadParser() { fSAXParser = 0; fSAX2Parser = 0; fXercesDOMParser = 0; fSAXHandler = 0; fSAX2Handler = 0; fDOMErrorHandler = 0; fDoc = 0; fCheckSum = 0; if (gRunInfo.dom) { // Set up to use a DOM parser /** Grammar caching thread testing */ if (gp) { fXercesDOMParser = new XercesDOMParser(0, XMLPlatformUtils::fgMemoryManager, gp); fXercesDOMParser->cacheGrammarFromParse(true); fXercesDOMParser->useCachedGrammarInParse(true); } else { fXercesDOMParser = new XercesDOMParser; } switch (gRunInfo.valScheme) { case SAXParser::Val_Never: fXercesDOMParser->setValidationScheme(XercesDOMParser::Val_Never); break; case SAXParser::Val_Auto: fXercesDOMParser->setValidationScheme(XercesDOMParser::Val_Auto); break; default: //SAXParser::Val_Always: fXercesDOMParser->setValidationScheme(XercesDOMParser::Val_Always); break; } fXercesDOMParser->setDoSchema(gRunInfo.doSchema); fXercesDOMParser->setHandleMultipleImports (true); fXercesDOMParser->setValidationSchemaFullChecking(gRunInfo.schemaFullChecking); fXercesDOMParser->setDoNamespaces(gRunInfo.doNamespaces); fDOMErrorHandler = (ErrorHandler*) new HandlerBase(); fXercesDOMParser->setErrorHandler(fDOMErrorHandler); } else if (gRunInfo.sax) { // Set up to use a SAX1 parser. /** Grammar caching thread testing */ if (gp) { fSAXParser = new SAXParser(0, XMLPlatformUtils::fgMemoryManager, gp); fSAXParser->cacheGrammarFromParse(true); fSAXParser->useCachedGrammarInParse(true); } else { fSAXParser = new SAXParser(); } fSAXParser->setValidationScheme(gRunInfo.valScheme); fSAXParser->setDoSchema(gRunInfo.doSchema); fSAXParser->setHandleMultipleImports (true); fSAXParser->setValidationSchemaFullChecking(gRunInfo.schemaFullChecking); fSAXParser->setDoNamespaces(gRunInfo.doNamespaces); fSAXHandler = new ThreadParser::SAXHandler(); fSAXHandler->SAXInstance = this; fSAXParser->setDocumentHandler(fSAXHandler); fSAXParser->setErrorHandler(fSAXHandler); } else { // Set up to use a SAX2 parser. /** Grammar caching thread testing */ if (gp) { fSAX2Parser = XMLReaderFactory::createXMLReader(gpMemMgr, gp); fSAX2Parser->setFeature(XMLUni::fgXercesCacheGrammarFromParse,true); fSAX2Parser->setFeature(XMLUni::fgXercesUseCachedGrammarInParse,true); } else { fSAX2Parser = XMLReaderFactory::createXMLReader(); } fSAX2Parser->setFeature(XMLUni::fgSAX2CoreNameSpaces,(gRunInfo.doNamespaces)); fSAX2Parser->setFeature(XMLUni::fgXercesSchema,(gRunInfo.doSchema)); fSAX2Parser->setFeature(XMLUni::fgXercesHandleMultipleImports, true); fSAX2Parser->setFeature(XMLUni::fgXercesSchemaFullChecking,(gRunInfo.schemaFullChecking)); switch (gRunInfo.valScheme) { case SAXParser::Val_Never: fSAX2Parser->setFeature(XMLUni::fgSAX2CoreValidation, false); break; case SAXParser::Val_Auto: fSAX2Parser->setFeature(XMLUni::fgSAX2CoreValidation, true); fSAX2Parser->setFeature(XMLUni::fgXercesDynamic, true); break; default: //SAXParser::Val_Always: fSAX2Parser->setFeature(XMLUni::fgSAX2CoreValidation, true); fSAX2Parser->setFeature(XMLUni::fgXercesDynamic, false); break; } fSAX2Parser->setFeature(XMLUni::fgSAX2CoreNameSpacePrefixes,(gRunInfo.doNamespacePrefixes)); fSAX2Handler = new ThreadParser::SAX2Handler(); fSAX2Handler->SAX2Instance = this; fSAX2Parser->setContentHandler(fSAX2Handler); fSAX2Parser->setErrorHandler(fSAX2Handler); } } ThreadParser::~ThreadParser() { delete fSAXParser; delete fSAX2Parser; delete fXercesDOMParser; delete fSAXHandler; delete fSAX2Handler; delete fDOMErrorHandler; } //------------------------------------------------------------------------ // // parse - This is the method that is invoked by the rest of // the test program to actually parse an XML file. // //------------------------------------------------------------------------ int ThreadParser::parse(int fileNum) { MemBufInputSource *mbis = 0; InFileInfo *fInfo = &gRunInfo.files[fileNum]; bool errors = false; fCheckSum = 0; if (gRunInfo.inMemory) { mbis = new MemBufInputSource((const XMLByte *) fInfo->fileContent, fInfo->fileSize, fInfo->uFileName, false); } try { if (gRunInfo.dom) { // Do a DOM parse fXercesDOMParser->resetDocumentPool(); if (gRunInfo.inMemory) fXercesDOMParser->parse(*mbis); else fXercesDOMParser->parse(fInfo->fileName); fDoc = fXercesDOMParser->getDocument(); domCheckSum(fDoc); } else if (gRunInfo.sax) { // Do a SAX1 parse if (gRunInfo.inMemory) fSAXParser->parse(*mbis); else fSAXParser->parse(fInfo->fileName); } else { // Do a SAX2 parse if (gRunInfo.inMemory) fSAX2Parser->parse(*mbis); else fSAX2Parser->parse(fInfo->fileName); } } catch (const OutOfMemoryException&) { fprintf(stderr, " during parsing: %s\n OutOfMemoryException.\n", fInfo->fileName); errors = true; } catch (const XMLException& e) { char *exceptionMessage = XMLString::transcode(e.getMessage()); fprintf(stderr, " during parsing: %s\n Exception message is: %s\n", fInfo->fileName, exceptionMessage); XMLString::release(&exceptionMessage); errors = true; } catch (const DOMException& toCatch) { fprintf(stderr, " during parsing: %s\n DOMException code is: %i\n", fInfo->fileName, toCatch.code); errors = true; } catch (const SAXParseException& e) { char *exceptionMessage = XMLString::transcode(e.getMessage()); fprintf(stderr, " during parsing: %s\n Exception message is: %s\n", fInfo->fileName, exceptionMessage); XMLString::release(&exceptionMessage); errors = true; } catch (...) { fprintf(stderr, "Unexpected exception during parsing\n"); errors = true; } delete mbis; if (errors) { fflush(stderr); return 0; // if errors occurred, return zero as if checksum = 0; } return fCheckSum; } // // addToCheckSum - private function, used within ThreadParser in // computing the checksum of the XML file. // // Unichar Strings to be added to the checksum // can either be null terminated (omit len param, which // will then default to -1), or provide an explicit // length. // void ThreadParser::addToCheckSum(const XMLCh *chars, XMLSize_t len) { if (len == (XMLSize_t)-1) { // Null terminated string. while (*chars != 0) { fCheckSum = fCheckSum*5 + *chars; chars++; } } else { // String with character count. XMLSize_t i; for (i=0; iaddToCheckSum(name); XMLSize_t n = attributes.getLength(); XMLSize_t i; for (i=0; iaddToCheckSum(attNam); const XMLCh *attVal = attributes.getValue(i); SAXInstance->addToCheckSum(attVal); } } // // startElement - our SAX2 handler callback function for startElement. // Update the document checksum with the element name // and any attribute names and values. // void ThreadParser::SAX2Handler::startElement(const XMLCh *const /*uri*/, const XMLCh *const localname, const XMLCh *const /*qname*/, const Attributes& attributes) { SAX2Instance->addToCheckSum(localname); XMLSize_t n = attributes.getLength(); XMLSize_t i; for (i=0; iaddToCheckSum(attNam); const XMLCh *attVal = attributes.getValue(i); SAX2Instance->addToCheckSum(attVal); } } // // domCheckSum - Compute the check sum for a DOM node. // Works recursively - initially called with a document node. // void ThreadParser::domCheckSum(const DOMNode *node) { const XMLCh *s; DOMNode *child; DOMNamedNodeMap *attributes; switch (node->getNodeType() ) { case DOMNode::ELEMENT_NODE: { s = node->getNodeName(); // the element name attributes = node->getAttributes(); // Element's attributes XMLSize_t numAttributes = attributes->getLength(); XMLSize_t i; for (i=0; iitem(i)); addToCheckSum(s); // Content and Children for (child=node->getFirstChild(); child!=0; child=child->getNextSibling()) domCheckSum(child); break; } case DOMNode::ATTRIBUTE_NODE: { s = node->getNodeName(); // The attribute name addToCheckSum(s); s = node->getNodeValue(); // The attribute value if (s != 0) addToCheckSum(s); break; } case DOMNode::TEXT_NODE: case DOMNode::CDATA_SECTION_NODE: { s = node->getNodeValue(); addToCheckSum(s); break; } case DOMNode::ENTITY_REFERENCE_NODE: case DOMNode::DOCUMENT_NODE: { // For entity references and the document, nothing is dirctly // added to the checksum, but we do want to process the chidren nodes. // for (child=node->getFirstChild(); child!=0; child=child->getNextSibling()) domCheckSum(child); break; } } } // // Recompute the checksum. Meaningful only for DOM, will tell us whether // a failure is transient, or whether the DOM data is permanently corrupted. // int ThreadParser::reCheck() { if (gRunInfo.dom) { fCheckSum = 0; domCheckSum(fDoc); } return fCheckSum; } // // domPrint - Dump the contents of a DOM node. // For debugging failures, when all else fails. // Works recursively - initially called with a document node. // void ThreadParser::domPrint() { printf("Begin DOMPrint ...\n"); if (gRunInfo.dom) { try { XMLCh tempStr[100]; XMLString::transcode("LS", tempStr, 99); DOMImplementation *impl = DOMImplementationRegistry::getDOMImplementation(tempStr); DOMLSSerializer *theSerializer = ((DOMImplementationLS*)impl)->createLSSerializer(); DOMLSOutput *theOutput = ((DOMImplementationLS*)impl)->createLSOutput(); XMLFormatTarget *myFormTarget = new StdOutFormatTarget(); theOutput->setByteStream(myFormTarget); DOMNode *doc = fXercesDOMParser->getDocument(); theSerializer->write(doc,theOutput); delete myFormTarget; theSerializer->release(); theOutput->release(); } catch (...) { // do nothing } } printf("End DOMPrint\n"); } //---------------------------------------------------------------------- // // parseCommandLine Read through the command line, and save all // of the options in the gRunInfo struct. // // Display the usage message if the command line // is no good. // // Probably ought to be a member function of RunInfo. // //---------------------------------------------------------------------- void parseCommandLine(int argc, char **argv) { gRunInfo.doGrammarCaching = false; gRunInfo.quiet = false; // Set up defaults for run. gRunInfo.verbose = false; gRunInfo.stopNow = false; gRunInfo.dom = false; gRunInfo.sax = true; gRunInfo.reuseParser = false; gRunInfo.inMemory = false; gRunInfo.dumpOnErr = false; gRunInfo.doSchema = false; gRunInfo.schemaFullChecking = false; gRunInfo.doNamespaces = false; gRunInfo.doInitialParse = false; gRunInfo.doNamespacePrefixes = false; gRunInfo.valScheme = SAXParser::Val_Auto; gRunInfo.numThreads = 2; gRunInfo.totalTime = 0; gRunInfo.numInputFiles = 0; gRunInfo.numParses = 0; try // Use exceptions for command line syntax errors. { int argnum = 1; while (argnum < argc) { if (strcmp(argv[argnum], "-quiet") == 0) gRunInfo.quiet = true; else if (strcmp(argv[argnum], "-verbose") == 0) gRunInfo.verbose = true; else if (strncmp(argv[argnum], "-v=", 3) == 0) { const char* const parm = &argv[argnum][3]; if (!strcmp(parm, "never")) gRunInfo.valScheme = SAXParser::Val_Never; else if (!strcmp(parm, "auto")) gRunInfo.valScheme = SAXParser::Val_Auto; else if (!strcmp(parm, "always")) gRunInfo.valScheme = SAXParser::Val_Always; else { fprintf(stderr, "Unrecognized -v option \"%s\"\n", parm); throw 1; } } else if (strcmp(argv[argnum], "-v") == 0) { fprintf(stderr, "Please note the -v option has been changed to -v=[always | never | auto]\n"); fprintf(stderr, "ThreadTest will continue with -v=always\n"); gRunInfo.valScheme = SAXParser::Val_Always; } else if (strcmp(argv[argnum], "-s") == 0) gRunInfo.doSchema = true; else if (strcmp(argv[argnum], "-f") == 0) gRunInfo.schemaFullChecking = true; else if (strcmp(argv[argnum], "-n") == 0) gRunInfo.doNamespaces = true; else if (strcmp(argv[argnum], "-p") == 0) gRunInfo.doNamespacePrefixes = true; else if (!strncmp(argv[argnum], "-parser=", 8)) { const char* const parm = &argv[argnum][8]; if (!strcmp(parm, "dom")) { gRunInfo.dom = true; gRunInfo.sax = false; } else if (!strcmp(parm, "sax")) { gRunInfo.dom = false; gRunInfo.sax = true; } else if (!strcmp(parm, "sax2")) { gRunInfo.dom = false; gRunInfo.sax = false; } else { fprintf(stderr, "Unrecognized -parser option \"%s\"\n", parm); throw 1; } } else if (strcmp(argv[argnum], "-init") == 0) gRunInfo.doInitialParse = true; else if (strcmp(argv[argnum], "-reuse") == 0) gRunInfo.reuseParser = true; else if (strcmp(argv[argnum], "-dump") == 0) gRunInfo.dumpOnErr = true; else if (strcmp(argv[argnum], "-mem") == 0) gRunInfo.inMemory = true; else if (strcmp(argv[argnum], "-threads") == 0) { ++argnum; if (argnum >= argc) { fprintf(stderr, "Invalid -threads option (missing # of threads)\n"); throw 1; } gRunInfo.numThreads = atoi(argv[argnum]); if (gRunInfo.numThreads < 0) { fprintf(stderr, "Invalid -threads option (negative # of threads)\n"); throw 1; } } else if (strcmp(argv[argnum], "-time") == 0) { ++argnum; if (argnum >= argc) { fprintf(stderr, "Invalid -time option (missing time value)\n"); throw 1; } gRunInfo.totalTime = atoi(argv[argnum]); if (gRunInfo.totalTime < 1) { fprintf(stderr, "Invalid -time option (time value < 1)\n"); throw 1; } } else if (strcmp(argv[argnum], "-gc") == 0) gRunInfo.doGrammarCaching = true; else if (strcmp(argv[argnum], "-parses") == 0) { ++argnum; if (argnum >= argc) { fprintf(stderr, "Invalid -parses option (missing # of parses)\n"); throw 1; } int temp = atoi(argv[argnum]); if (temp < 0) { fprintf(stderr, "Invalid -parses option (negative # of parses)\n"); throw 1; } gRunInfo.numParses = temp; } else if (argv[argnum][0] == '-') { fprintf(stderr, "Unrecognized command line option. Scanning \"%s\"\n", argv[argnum]); throw 1; } else { gRunInfo.numInputFiles++; if (gRunInfo.numInputFiles >= MAXINFILES) { fprintf(stderr, "Too many input files. Limit is %d\n", MAXINFILES); throw 1; } gRunInfo.files[gRunInfo.numInputFiles-1].fileName = argv[argnum]; } argnum++; } // We've made it through the command line. // Verify that at least one input file to be parsed was specified. if (gRunInfo.numInputFiles == 0) { fprintf(stderr, "No input XML file specified on command line.\n"); throw 1; }; if (gRunInfo.numParses && gRunInfo.totalTime) { fprintf(stderr, "Both -parses nnn and -time nnn were specified. Ignoring -time nnn.\n"); } } catch (int) { fprintf(stderr, "usage: ThreadTest [-v] [-threads nnn] [-time nnn] [-quiet] [-verbose] xmlfile...\n" " -v=xxx Validation scheme [always | never | auto]. Default is AUTO.\n" " -n Enable namespace processing. Defaults to off.\n" " -s Enable schema processing. Defaults to off.\n" " -f Enable full schema constraint checking. Defaults to off.\n" " -parser=xxx Parser Type [dom | sax | sax2]. Default is SAX (SAX1).\n" " -p Enable namespace prefixes. Defaults to off.\n" " (Only used with -parser=sax2, ignored otherwise.)\n" " -quiet Suppress periodic status display.\n" " -verbose Display extra messages.\n" " -reuse Retain and reuse parser. Default creates new for each parse.\n" " -threads nnn Number of threads. Default is 2.\n" " -time nnn Total time to run, in seconds. Default is forever.\n" " -parses nnn Run for nnn parses instead of time. Default is to use time\n" " -dump Dump DOM tree on error.\n" " -mem Read files into memory once only, and parse them from there.\n" " -gc Enable grammar caching (i.e. grammar cached and used in subsequent parses). Defaults to off.\n" " -init Perform an initial parse of the file(s) before starting up the individual threads.\n\n" ); exit(1); } } //--------------------------------------------------------------------------- // // ReadFilesIntoMemory For use when parsing from memory rather than // reading the files each time, here is the code that // reads the files into local memory buffers. // // This function is only called once, from the main // thread, before all of the worker threads are started. // //--------------------------------------------------------------------------- void ReadFilesIntoMemory() { int fileNum; FILE *fileF; size_t t; if (gRunInfo.inMemory) { for (fileNum = 0; fileNum uFileName = XMLString::transcode(fInfo->fileName); fileF = fopen( fInfo->fileName, "rb" ); if (fileF == 0) { fprintf(stderr, "Can not open file \"%s\".\n", fInfo->fileName); clearFileInfoMemory(); exit(-1); } fseek(fileF, 0, SEEK_END); fInfo->fileSize = ftell(fileF); fseek(fileF, 0, SEEK_SET); fInfo->fileContent = new char[fInfo->fileSize + 1]; t = fread(fInfo->fileContent, 1, fInfo->fileSize, fileF); if (t != fInfo->fileSize) { fprintf(stderr, "Error reading file \"%s\".\n", fInfo->fileName); clearFileInfoMemory(); exit(-1); } fclose(fileF); fInfo->fileContent[fInfo->fileSize] = 0; } } } void clearFileInfoMemory() { int fileNum; if (gRunInfo.inMemory) { for (fileNum = 0; fileNum uFileName); delete [] fInfo->fileContent; } } } //---------------------------------------------------------------------- // // threadMain The main function for each of the swarm of test threads. // Run in an infinite loop, parsing each of the documents // given on the command line in turn. // //---------------------------------------------------------------------- #ifdef HAVE_PTHREAD extern "C" { void threadMain (void *param) #else unsigned long WINAPI threadMain (void *param) #endif { ThreadInfo *thInfo = (ThreadInfo *)param; ThreadParser *thParser = 0; if (gRunInfo.verbose) printf("Thread #%d: starting\n", thInfo->fThreadNum); int docNum = gRunInfo.numInputFiles; // // Each time through this loop, one file will be parsed and its checksum // computed and compared with the precomputed value for that file. // while (gRunInfo.stopNow == false) { if (gRunInfo.numParses == 0 || thInfo->fParses < gRunInfo.numParses) { thInfo->fInProgress = true; if (thParser == 0) thParser = new ThreadParser; docNum++; if (docNum >= gRunInfo.numInputFiles) docNum = 0; InFileInfo *fInfo = &gRunInfo.files[docNum]; if (gRunInfo.verbose ) printf("Thread #%d: parse %d starting file %s\n", thInfo->fThreadNum, thInfo->fParses, fInfo->fileName); int checkSum = 0; checkSum = thParser->parse(docNum); // For the case where we skip the preparse we will have nothing to // compare the first parse's results to ... so if this looks like first // parse move the checkSum back into the gRunInfo data for this file. if (gRunInfo.files[docNum].checkSum == 0) { gRunInfo.files[docNum].checkSum = checkSum; } else if (checkSum != gRunInfo.files[docNum].checkSum) { if (checkSum == 0) { // parse returns 0 if there was an error so do this to get the real // checksum value checkSum = thParser->getCheckSum(); } fprintf(stderr, "\nThread %d: Parse Check sum error on file \"%s\" for parse # %d. Expected %x, got %x\n", thInfo->fThreadNum, fInfo->fileName, thInfo->fParses, fInfo->checkSum, checkSum); double totalParsesCompleted = 0; for (int threadNum=0; threadNum < gRunInfo.numThreads; threadNum++) { totalParsesCompleted += gThreadInfo[threadNum].fParses; } fprintf(stderr, "Total number of parses completed is %f.\n", totalParsesCompleted); // Revisit - let the loop continue to run? int secondTryCheckSum = thParser->reCheck(); fprintf(stderr, " Retry checksum is %x\n", secondTryCheckSum); if (gRunInfo.dumpOnErr && gRunInfo.dom) { thParser->domPrint(); } fflush(stdout); fflush(stderr); clearFileInfoMemory(); exit(-1); } if (gRunInfo.reuseParser == false) { delete thParser; thParser = 0; } thInfo->fHeartBeat = true; thInfo->fParses++; thInfo->fInProgress = false; } else { ThreadFuncs::Sleep(1000); } } delete thParser; #ifdef HAVE_PTHREAD return; } #else return 0; #endif } //---------------------------------------------------------------------- // // main // //---------------------------------------------------------------------- int main (int argc, char **argv) { parseCommandLine(argc, argv); // // Initialize the XML system. // try { XMLPlatformUtils::Initialize(); } catch (...) { fprintf(stderr, "Exception from XMLPlatfromUtils::Initialize.\n"); return 1; } /** Grammar caching thread testing */ // Initialize memory manger and grammar pool // set doInitialParse to true so that the first parse will cache the // grammar and it'll be used in subsequent parses if (gRunInfo.doSchema == true && gRunInfo.doNamespaces == true && gRunInfo.doGrammarCaching == true) { gpMemMgr = new MemoryManagerImpl(); gp = new XMLGrammarPoolImpl(gpMemMgr); gRunInfo.doInitialParse = true; } // // If we will be parsing from memory, read each of the input files // into memory now. // ReadFilesIntoMemory(); // Initialize checksums to zero so we can check first parse and if // zero then we need to move first parse's checksum into array. This // is for the cse where we skip the initial parse. for (int n = 0; n < gRunInfo.numInputFiles; n++) { gRunInfo.files[n].checkSum = 0; } if (gRunInfo.doInitialParse) { // // While we are still single threaded, parse each of the documents // once, to check for errors, and to note the checksum. // Blow off the rest of the test if there are errors. // ThreadParser *mainParser = new ThreadParser; int n; bool errors = false; int cksum; for (n = 0; n < gRunInfo.numInputFiles; n++) { char *fileName = gRunInfo.files[n].fileName; if (gRunInfo.verbose) printf("%s checksum is ", fileName); cksum = mainParser->parse(n); if (cksum == 0) { fprintf(stderr, "An error occurred while initially parsing %s\n", fileName); errors = true; }; gRunInfo.files[n].checkSum = cksum; if (gRunInfo.verbose ) printf("%x\n", cksum); if (gRunInfo.dumpOnErr && errors && gRunInfo.dom) { mainParser->domPrint(); } } delete mainParser; if (errors) { fprintf(stderr, "Quitting due to error incurred during initial parse\n"); clearFileInfoMemory(); return 1; } } // // Fire off the requested number of parallel threads // if (gRunInfo.numThreads == 0) { clearFileInfoMemory(); exit(0); } gThreadInfo = new ThreadInfo[gRunInfo.numThreads]; int threadNum; for (threadNum=0; threadNum < gRunInfo.numThreads; threadNum++) { gThreadInfo[threadNum].fThreadNum = threadNum; ThreadFuncs::startThread(threadMain, &gThreadInfo[threadNum]); } if (gRunInfo.numParses) { bool notDone; while (true) { ThreadFuncs::Sleep(1000); notDone = false; for (threadNum = 0; threadNum < gRunInfo.numThreads; threadNum++) { if (gThreadInfo[threadNum].fParses < gRunInfo.numParses) notDone = true; } if (notDone == false) { break; } } } else { // // Loop, watching the heartbeat of the worker threads. // Each second, display "+" when all threads have completed a parse // display "." if some thread hasn't since previous "+" // unsigned long startTime = XMLPlatformUtils::getCurrentMillis(); int elapsedSeconds = 0; while (gRunInfo.totalTime == 0 || gRunInfo.totalTime > elapsedSeconds) { ThreadFuncs::Sleep(1000); if (gRunInfo.quiet == false && gRunInfo.verbose == false) { char c = '+'; for (threadNum=0; threadNum < gRunInfo.numThreads; threadNum++) { if (gThreadInfo[threadNum].fHeartBeat == false) { c = '.'; break; } } fputc(c, stdout); fflush(stdout); if (c == '+') for (threadNum=0; threadNum < gRunInfo.numThreads; threadNum++) gThreadInfo[threadNum].fHeartBeat = false; } elapsedSeconds = (XMLPlatformUtils::getCurrentMillis() - startTime) / 1000; } } // // Time's up, we are done. (We only get here if this was a timed run) // Tally up the total number of parses completed by each of the threads. // gRunInfo.stopNow = true; // set flag, which will cause worker threads to stop. // // Make sure all threads are done before terminate // for (threadNum=0; threadNum < gRunInfo.numThreads; threadNum++) { while (gThreadInfo[threadNum].fInProgress == true) { ThreadFuncs::Sleep(1000); } if (gRunInfo.verbose) printf("Thread #%d: is finished.\n", threadNum); } // // We are done! Count the number of parse and terminate the program // double totalParsesCompleted = 0; for (threadNum=0; threadNum < gRunInfo.numThreads; threadNum++) { totalParsesCompleted += gThreadInfo[threadNum].fParses; // printf("%f ", totalParsesCompleted); } if (gRunInfo.quiet == false) { if (gRunInfo.numParses) { printf("\n%8.0f total parses were completed.\n", totalParsesCompleted); } else { double parsesPerMinute = totalParsesCompleted / (double(gRunInfo.totalTime) / double(60)); printf("\n%8.2f parses per minute.\n", parsesPerMinute); } } // delete grammar pool and memory manager if (gp) { delete gp; delete gpMemMgr; } XMLPlatformUtils::Terminate(); clearFileInfoMemory(); delete [] gThreadInfo; printf("Test Run Successfully\n"); return 0; } xerces-c-3.1.1/tests/src/XSerializerTest/0000755000175000017500000000000011363617313017301 5ustar borisborisxerces-c-3.1.1/tests/src/XSerializerTest/XSerializerHandlers.hpp0000644000175000017500000000723011037027715023735 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XSerializerHandlers.hpp 676796 2008-07-15 05:04:13Z dbertoni $ */ #if !defined(XSERIALIZER_HANDLER_HPP) #define XSERIALIZER_HANDLER_HPP // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include XERCES_CPP_NAMESPACE_USE class XSerializerHandlers : public DefaultHandler { public: // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- XSerializerHandlers(); ~XSerializerHandlers(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- XMLSize_t getElementCount() const { return fElementCount; } XMLSize_t getAttrCount() const { return fAttrCount; } XMLSize_t getCharacterCount() const { return fCharacterCount; } bool getSawErrors() const { return fSawErrors; } XMLSize_t getSpaceCount() const { return fSpaceCount; } // ----------------------------------------------------------------------- // Handlers for the SAX ContentHandler interface // ----------------------------------------------------------------------- void startElement(const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname, const Attributes& attrs); void characters(const XMLCh* const chars, const XMLSize_t length); void ignorableWhitespace(const XMLCh* const chars, const XMLSize_t length); void resetDocument(); // ----------------------------------------------------------------------- // Handlers for the SAX ErrorHandler interface // ----------------------------------------------------------------------- void warning(const SAXParseException& exc); void error(const SAXParseException& exc); void fatalError(const SAXParseException& exc); void resetErrors(); private: // ----------------------------------------------------------------------- // Private data members // // fAttrCount // fCharacterCount // fElementCount // fSpaceCount // These are just counters that are run upwards based on the input // from the document handlers. // // fSawErrors // This is set by the error handlers, and is queryable later to // see if any errors occured. // ----------------------------------------------------------------------- XMLSize_t fAttrCount; XMLSize_t fCharacterCount; XMLSize_t fElementCount; XMLSize_t fSpaceCount; bool fSawErrors; }; #endif xerces-c-3.1.1/tests/src/XSerializerTest/XSerializerHandlers.cpp0000644000175000017500000000755310647424627023751 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XSerializerHandlers.cpp 557282 2007-07-18 14:54:15Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include "XSerializerTest.hpp" #include #include #include // --------------------------------------------------------------------------- // XSerializerHandlers: Constructors and Destructor // --------------------------------------------------------------------------- XSerializerHandlers::XSerializerHandlers() : fAttrCount(0) , fCharacterCount(0) , fElementCount(0) , fSpaceCount(0) , fSawErrors(false) { } XSerializerHandlers::~XSerializerHandlers() { } // --------------------------------------------------------------------------- // XSerializerHandlers: Implementation of the SAX DocumentHandler interface // --------------------------------------------------------------------------- void XSerializerHandlers::startElement(const XMLCh* const /*uri*/ , const XMLCh* const /*localname*/ , const XMLCh* const /*qname*/ , const Attributes& attrs) { fElementCount++; fAttrCount += attrs.getLength(); } void XSerializerHandlers::characters( const XMLCh* const /*chars*/ , const XMLSize_t length) { fCharacterCount += length; } void XSerializerHandlers::ignorableWhitespace( const XMLCh* const /*chars*/ , const XMLSize_t length) { fSpaceCount += length; } void XSerializerHandlers::resetDocument() { fAttrCount = 0; fCharacterCount = 0; fElementCount = 0; fSpaceCount = 0; } // --------------------------------------------------------------------------- // XSerializerHandlers: Overrides of the SAX ErrorHandler interface // --------------------------------------------------------------------------- void XSerializerHandlers::error(const SAXParseException& e) { fSawErrors = true; XERCES_STD_QUALIFIER cerr << "\nError at file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "\n Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; } void XSerializerHandlers::fatalError(const SAXParseException& e) { fSawErrors = true; XERCES_STD_QUALIFIER cerr << "\nFatal Error at file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "\n Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; } void XSerializerHandlers::warning(const SAXParseException& e) { XERCES_STD_QUALIFIER cerr << "\nWarning at file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "\n Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; } void XSerializerHandlers::resetErrors() { fSawErrors = false; } xerces-c-3.1.1/tests/src/XSerializerTest/XSerializerTest.cpp0000644000175000017500000004003711274567126023121 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XSerializerTest.cpp 833057 2009-11-05 15:25:10Z borisk $ */ #if HAVE_CONFIG_H # include #endif // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include "XSerializerTest.hpp" #if defined(XERCES_NEW_IOSTREAMS) #include #else #include #endif // --------------------------------------------------------------------------- // command line option variables // --------------------------------------------------------------------------- static const char* xmlFile = 0; static SAX2XMLReader::ValSchemes valScheme = SAX2XMLReader::Val_Auto; static bool doNamespaces = true; static bool doSchema = true; static bool schemaFullChecking = false; static bool doList = false; static bool namespacePrefixes = false; static bool errorOccurred = false; static bool recognizeNEL = false; static char localeStr[64]; // --------------------------------------------------------------------------- // parsing components // --------------------------------------------------------------------------- static XSerializerHandlers* handler = 0; /*** * * This program is a variation of SAX2Count. * * Whenever a file is served, it does the following: * * . parses the file * . caches the grammar without issuing any error message with regards to the parsing * . serializes(store) the grammar cached to a BinOutputStream * . deserialize(load) the grammar from the BinInputStream * . parses the instance document a second time * . validates the instance against the deserialized grammar if validation is on. * ***/ #include static void parseCase(const char* const xmlFile); static bool parseOne(BinOutputStream* outStream , const char* const xmlFile); static void parseTwo(BinInputStream* inStream , const char* const xmlFile); static void parseFile(SAX2XMLReader* const parser , const char* const xmlFile); static SAX2XMLReader* getParser(XMLGrammarPool* const theGramPool , bool setHandler); // --------------------------------------------------------------------------- // Local helper methods // --------------------------------------------------------------------------- void usage() { XERCES_STD_QUALIFIER cout << "\nUsage:\n" " XSerializerTest [options] \n\n" "This program invokes the SAX2XMLReader, and then prints the\n" "number of elements, attributes, spaces and characters found\n" "in each XML file, using SAX2 API.\n\n" "Options:\n" " -l Indicate the input file is a List File that has a list of xml files.\n" " Default to off (Input file is an XML file).\n" " -v=xxx Validation scheme [always | never | auto*].\n" " -f Enable full schema constraint checking processing. Defaults to off.\n" " -p Enable namespace-prefixes feature. Defaults to off.\n" " -n Disable namespace processing. Defaults to on.\n" " NOTE: THIS IS OPPOSITE FROM OTHER SAMPLES.\n" " -s Disable schema processing. Defaults to on.\n" " NOTE: THIS IS OPPOSITE FROM OTHER SAMPLES.\n" " -locale=ll_CC specify the locale, default: en_US.\n" " -? Show this help.\n\n" " * = Default if not provided explicitly.\n" << XERCES_STD_QUALIFIER endl; } // --------------------------------------------------------------------------- // Program entry point // --------------------------------------------------------------------------- int main(int argC, char* argV[]) { // Check command line and extract arguments. if (argC < 2) { usage(); return 1; } memset(localeStr, 0, sizeof localeStr); int argInd; for (argInd = 1; argInd < argC; argInd++) { // Break out on first parm not starting with a dash if (argV[argInd][0] != '-') break; // Watch for special case help request if (!strcmp(argV[argInd], "-?")) { usage(); return 2; } else if (!strncmp(argV[argInd], "-v=", 3) || !strncmp(argV[argInd], "-V=", 3)) { const char* const parm = &argV[argInd][3]; if (!strcmp(parm, "never")) valScheme = SAX2XMLReader::Val_Never; else if (!strcmp(parm, "auto")) valScheme = SAX2XMLReader::Val_Auto; else if (!strcmp(parm, "always")) valScheme = SAX2XMLReader::Val_Always; else { XERCES_STD_QUALIFIER cerr << "Unknown -v= value: " << parm << XERCES_STD_QUALIFIER endl; return 2; } } else if (!strcmp(argV[argInd], "-n") || !strcmp(argV[argInd], "-N")) { doNamespaces = false; } else if (!strcmp(argV[argInd], "-s") || !strcmp(argV[argInd], "-S")) { doSchema = false; } else if (!strcmp(argV[argInd], "-f") || !strcmp(argV[argInd], "-F")) { schemaFullChecking = true; } else if (!strcmp(argV[argInd], "-l") || !strcmp(argV[argInd], "-L")) { doList = true; } else if (!strcmp(argV[argInd], "-p") || !strcmp(argV[argInd], "-P")) { namespacePrefixes = true; } else if (!strcmp(argV[argInd], "-special:nel")) { // turning this on will lead to non-standard compliance behaviour // it will recognize the unicode character 0x85 as new line character // instead of regular character as specified in XML 1.0 // do not turn this on unless really necessary recognizeNEL = true; } else if (!strncmp(argV[argInd], "-locale=", 8)) { // Get out the end of line strcpy(localeStr, &(argV[argInd][8])); } else { XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[argInd] << "', ignoring it\n" << XERCES_STD_QUALIFIER endl; } } // // There should at least one parameter left, and that // should be the file name(s). // if (argInd == argC) { usage(); return 1; } // Initialize the XML4C2 system try { if (strlen(localeStr)) { XMLPlatformUtils::Initialize(localeStr); } else { XMLPlatformUtils::Initialize(); } if (recognizeNEL) { XMLPlatformUtils::recognizeNEL(recognizeNEL); } } catch (const XMLException& toCatch) { XERCES_STD_QUALIFIER cerr << "Error during initialization! Message:\n" << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl; return 1; } XERCES_STD_QUALIFIER ifstream fin; // the input is a list file if (doList) fin.open(argV[argInd]); if (fin.fail()) { XERCES_STD_QUALIFIER cerr <<"Cannot open the list file: " << argV[argInd] << XERCES_STD_QUALIFIER endl; return 2; } while (true) { char fURI[1000]; //initialize the array to zeros memset(fURI,0,sizeof(fURI)); if (doList) { if (! fin.eof() ) { fin.getline (fURI, sizeof(fURI)); if (!*fURI) continue; else { xmlFile = fURI; XERCES_STD_QUALIFIER cerr << "==Parsing== " << xmlFile << XERCES_STD_QUALIFIER endl; } } else break; } else { if (argInd < argC) { xmlFile = argV[argInd]; argInd++; } else break; } parseCase(xmlFile); } if (doList) fin.close(); // And call the termination method XMLPlatformUtils::Terminate(); if (errorOccurred) return 4; else return 0; } // --------------------------------------------------------------------------- // Serialization/Deserialization // --------------------------------------------------------------------------- static const int BufSize = 1024; static void parseCase(const char* const xmlFile) { // // Create our SAX handler object and install it on the parser, as the // document and error handler. // if (!handler) handler = new XSerializerHandlers(); BinOutputStream* myOut = new BinMemOutputStream(BufSize); Janitor janOut(myOut); if (!parseOne(myOut, xmlFile)) return; BinInputStream* myIn = new BinMemInputStream( ((BinMemOutputStream*)myOut)->getRawBuffer() , (XMLSize_t)((BinMemOutputStream*)myOut)->getSize() , BinMemInputStream::BufOpt_Reference ); Janitor janIn(myIn); parseTwo(myIn, xmlFile); } static bool parseOne(BinOutputStream* outStream , const char* const xmlFile) { //we don't use janitor here MemoryManager* theMemMgr = new MemoryManagerImpl(); XMLGrammarPool* theGramPool = new XMLGrammarPoolImpl(theMemMgr); SAX2XMLReader* theParser = getParser(theGramPool, false); //don't emit error bool retVal = true; theParser->setFeature(XMLUni::fgXercesCacheGrammarFromParse, true); //scan instance document and cache grammar try { theParser->parse(xmlFile); } catch (...) { //do nothing, it could be an invalid instance document, but the grammar is fine } //serialize the grammar pool try { theGramPool->serializeGrammars(outStream); } catch (const XSerializationException& e) { //do emit error here so that we know serialization failure XERCES_STD_QUALIFIER cerr << "An error occurred during serialization\n Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; retVal = false; } catch (...) { //do emit error here so that we know serialization failure XERCES_STD_QUALIFIER cerr << "An error occurred during serialization\n" << XERCES_STD_QUALIFIER endl; retVal = false; } //the order is important delete theParser; delete theGramPool; delete theMemMgr; return retVal; } static void parseTwo(BinInputStream* inStream , const char* const xmlFile) { //we don't use janitor here MemoryManager* theMemMgr = new MemoryManagerImpl(); XMLGrammarPool* theGramPool = new XMLGrammarPoolImpl(theMemMgr); bool errorSeen = false; //de-serialize grammar pool try { theGramPool->deserializeGrammars(inStream); } catch(const XSerializationException& e) { XERCES_STD_QUALIFIER cerr << "An error occurred during de-serialization\n Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; errorSeen = true; } catch (...) { //do emit error here so that we know serialization failure XERCES_STD_QUALIFIER cerr << "An error occurred during de-serialization\n" << XERCES_STD_QUALIFIER endl; errorSeen = true; } if (!errorSeen) { SAX2XMLReader* theParser = getParser(theGramPool, true); //set the handler theParser->setFeature(XMLUni::fgXercesUseCachedGrammarInParse, true); parseFile(theParser, xmlFile); delete theParser; } //the order is important delete theGramPool; delete theMemMgr; return; } static SAX2XMLReader* getParser(XMLGrammarPool* const theGramPool , bool setHandler) { SAX2XMLReader* parser = XMLReaderFactory::createXMLReader(theGramPool->getMemoryManager(), theGramPool); parser->setFeature(XMLUni::fgSAX2CoreNameSpaces, doNamespaces); parser->setFeature(XMLUni::fgXercesSchema, doSchema); parser->setFeature(XMLUni::fgXercesHandleMultipleImports, true); parser->setFeature(XMLUni::fgXercesSchemaFullChecking, schemaFullChecking); parser->setFeature(XMLUni::fgSAX2CoreNameSpacePrefixes, namespacePrefixes); if (valScheme == SAX2XMLReader::Val_Auto) { parser->setFeature(XMLUni::fgSAX2CoreValidation, true); parser->setFeature(XMLUni::fgXercesDynamic, true); } if (valScheme == SAX2XMLReader::Val_Never) { parser->setFeature(XMLUni::fgSAX2CoreValidation, false); } if (valScheme == SAX2XMLReader::Val_Always) { parser->setFeature(XMLUni::fgSAX2CoreValidation, true); parser->setFeature(XMLUni::fgXercesDynamic, false); } if (setHandler) { parser->setContentHandler(handler); parser->setErrorHandler(handler); } else { parser->setContentHandler(0); parser->setErrorHandler(0); } return parser; } static void parseFile(SAX2XMLReader* const parser , const char* const xmlFile) { // // Get the starting time and kick off the parse of the indicated // file. Catch any exceptions that might propogate out of it. // unsigned long duration; //reset error count first handler->resetErrors(); try { const unsigned long startMillis = XMLPlatformUtils::getCurrentMillis(); parser->parse(xmlFile); const unsigned long endMillis = XMLPlatformUtils::getCurrentMillis(); duration = endMillis - startMillis; } catch (const XMLException& e) { XERCES_STD_QUALIFIER cerr << "\nError during parsing: '" << xmlFile << "'\n" << "Exception message is: \n" << StrX(e.getMessage()) << "\n" << XERCES_STD_QUALIFIER endl; errorOccurred = true; } catch (...) { XERCES_STD_QUALIFIER cerr << "\nUnexpected exception during parsing: '" << xmlFile << "'\n"; errorOccurred = true; } // Print out the stats that we collected and time taken if (!handler->getSawErrors()) { XERCES_STD_QUALIFIER cout << xmlFile << ": " << duration << " ms (" << handler->getElementCount() << " elems, " << handler->getAttrCount() << " attrs, " << handler->getSpaceCount() << " spaces, " << handler->getCharacterCount() << " chars)" << XERCES_STD_QUALIFIER endl; } else errorOccurred = true; } xerces-c-3.1.1/tests/src/XSerializerTest/XSerializerTest.hpp0000644000175000017500000000555010522202400023077 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XSerializerTest.hpp 470088 2006-11-01 20:35:12Z amassari $ */ #if !defined(XSERIALIZER_TEST_HPP) #define XSERIALIZER_TEST_HPP // --------------------------------------------------------------------------- // Includes for all the program files to see // --------------------------------------------------------------------------- #include #include #include #if defined(XERCES_NEW_IOSTREAMS) #include #else #include #endif #include "XSerializerHandlers.hpp" #include #include // --------------------------------------------------------------------------- // This is a simple class that lets us do easy (though not terribly efficient) // trancoding of XMLCh data to local code page for display. // --------------------------------------------------------------------------- class StrX { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- StrX(const XMLCh* const toTranscode) { // Call the private transcoding method fLocalForm = XMLString::transcode(toTranscode); } ~StrX() { XMLString::release(&fLocalForm); } // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const char* localForm() const { return fLocalForm; } private : // ----------------------------------------------------------------------- // Private data members // // fLocalForm // This is the local code page form of the string. // ----------------------------------------------------------------------- char* fLocalForm; }; inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump) { target << toDump.localForm(); return target; } #endif xerces-c-3.1.1/tests/src/xinclude/0000755000175000017500000000000011363617314016014 5ustar borisborisxerces-c-3.1.1/tests/src/xinclude/harness.pl0000644000175000017500000001623710610720035020012 0ustar borisboris#use strict; # usage perl harness.pl [testNum] # where testNum is an integer from 1 to 41 # testNum may also be a list of integers denoting tests to be run # ommitting testNum will lead to all tests being run # # this harness outputs the results to the file results.html as well # as reporting them to stderr. # # note that the XInclude sample application must be discoverable on # the current PATH. # # Find out the platform from 'uname -s' # open(PLATFORM, "uname -s|"); $platform = ; chomp($platform); close (PLATFORM); if ($platform =~ m/Windows/i || $platform =~ m/CYGWIN/i) { $pathsep = "\\"; } else { $pathsep = "/"; } @CORRECT_TEST_RESULTS = ( -3, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1 ); # private static boolean[] TEST_RESULTS = new boolean[] { # // one value for each test # true, true, true, true, true, true, false, true, false, true, // 10 # false, false, false, false, true, true, true, false, true, true, // 20 # true, false, true, false, false, false, true, true, false, true, // 30 # true, false, true, true, true, true, true, true, false, false, // 40 # true, }; #no need to add one to this value since there is a dummy value in the tables $NUM_TESTS = $#CORRECT_TEST_RESULTS; @ACTUAL_TEST_RESULTS = ( -3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ); print "Running XInclude Tests\n"; $dateAndTime = localtime(); open(outfile, ">results.html"); print outfile "XInclude results generated at $dateAndTime "; print outfile "
"; print outfile ""; print outfile ""; print outfile ""; $successes = 0; $correct = 0; $numTestsToRun = $#ARGV + 1; while (<@ARGV>){ $i = $_; if ($i < 10) { $testNum = "0$i"; } else { $testNum = "$i"; } $input_file = "tests".$pathsep."xinclude".$pathsep."tests".$pathsep."test$testNum.xml"; if ($CORRECT_TEST_RESULTS[$i] == 1) { $output_file = "tests".$pathsep."xinclude".$pathsep."written".$pathsep."test$testNum.xml"; $expected_result_file = "tests".$pathsep."xinclude".$pathsep."cppoutput".$pathsep."test$testNum.xml"; } else { $output_file = "tests".$pathsep."xinclude".$pathsep."written".$pathsep."test$testNum.txt"; $expected_result_file = "tests".$pathsep."xinclude".$pathsep."cppoutput".$pathsep."test$testNum.txt"; } # run the tests and apture the output $command = "XInclude $input_file $output_file"; print "R[$command]\n"; system("$command"); $outcome = 0; if (! -e $output_file) { $ACTUAL_TEST_RESULTS[$i] = 0; # we didn't generate an output, we are correct if the test was expected to fail if($CORRECT_TEST_RESULTS[$i] eq 0) { $outcome = 1; } } else { $ACTUAL_TEST_RESULTS[$i] = 1; # we generated an output, we are correct if our result matches if($CORRECT_TEST_RESULTS[$i] eq 1) { $outcome = &compareFiles($expected_result_file, $output_file); } } print outfile ""; #test number print outfile ""; print outfile ""; # actual result $result = (($ACTUAL_TEST_RESULTS[$i])?"true":"false"); print outfile ""; # correct result $result = (($CORRECT_TEST_RESULTS[$i])?"true":"false"); print outfile ""; if ($outcome eq 1) { $successes++; $result = "Passed"; print "[test $testNum PASSED]\n"; $correct++; } else { $result = "Failed"; print "[test $testNum FAILED]\n"; } print outfile ""; } print outfile "
Results of XI Test Run
Test NumberTest Input FileGenerated Output FileReference Result FileResultExpected ResultTest Status
$testNum"; $anchor = &createHTMLAnchor("$input_file"); print outfile "$anchor"; print outfile ""; $anchor = &createHTMLAnchor("$output_file"); print outfile "$anchor"; print outfile ""; $anchor = &createHTMLAnchor("$expected_result_file"); print outfile "$anchor"; print outfile "$result$result$result
"; print "Tests Passed: $correct\n"; $percentSucceeding = $correct / $numTestsToRun * 100.0; print outfile "

$percentSucceeding% of tests that were run passed ($correct out of $numTestsToRun).

"; $shPass = 0; $shFail = 0; for ($i = 1; $i < $NUM_TESTS+1; $i++){ if ($CORRECT_TEST_RESULTS[$i]){ $shPass++; } else { $shFail++; } } print outfile "

$shPass should pass ($successes) did

"; $failures = $NUM_TESTS - $successes; print outfile "

$shFail should fail ($failures) did

"; $percentSucceeding = $correct / $NUM_TESTS * 100.0; print outfile "

$percentSucceeding% of all available tests passed ($correct out of $NUM_TESTS).

"; $percentSucceeding = $numTestsToRun / $NUM_TESTS * 100.0; print outfile "

$percentSucceeding% of all available tests were run ($numTestsToRun out of $NUM_TESTS).

"; print outfile "

"; close(outfile); # quick and dirty but functional sub compareFiles { $result = 1; print "C[$_[0]]:[$_[1]]\n"; if (! -e $_[0]) { print "No such file as $_[0] - cannot compare\n"; return 0; } if (! -e $_[1]) { print "No such file as $_[1] - cannot compare\n"; return 0; } open(expected, "<$_[0]"); open(actual, "<$_[1]"); #compare the files @expectedData = ; @actualData = ; close(expected); close(actual); for ($x = 0, $a = 0; $x < $#expectedData && $a < $#actualData; $x++, $a++){ $dataLineEx = $expectedData[$x]; $dataLineAc = $actualData[$a]; chomp($dataLineEx); chomp($dataLineAc); if ($dataLineEx ne $dataLineAc) { # check if its a warning and can be ignored at this stage if ($dataLineEx =~ /Warning/) { print "probably just a warning line:\n"; print "[$dataLineEx]\n"; $a-- } elsif ( $dataLineEx =~ m/^\s*$/ && $dataLineAc =~ m/^\s*$/ ) { $line_num = $x + 1; print "Line $line_num ws difference: \n[$dataLineEx] != \n[$dataLineAc]\n"; print "probably just white space on both lines\n"; $a-- } else { $line_num = $x + 1; print "Line $line_num difference: \n[$dataLineEx] != \n[$dataLineAc]\n"; print "From files: $_[0] $_[1]\n"; return 0; } } } return 1; } sub createHTMLAnchor { "$_[0]"; } xerces-c-3.1.1/tests/src/xinclude/tests/0000755000175000017500000000000011363617314017156 5ustar borisborisxerces-c-3.1.1/tests/src/xinclude/tests/xinclude/0000755000175000017500000000000011363617314020771 5ustar borisborisxerces-c-3.1.1/tests/src/xinclude/tests/xinclude/included/0000755000175000017500000000000011363617314022560 5ustar borisborisxerces-c-3.1.1/tests/src/xinclude/tests/xinclude/included/not2.xml0000644000175000017500000000056110571764421024170 0ustar borisboris ]> xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/included/base.xml0000644000175000017500000000026110571764421024215 0ustar borisboris xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/included/text.txt0000644000175000017500000000001710571764421024305 0ustar borisborisblah blah blah xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/included/elem_base.xml0000644000175000017500000000014710571764421025222 0ustar borisboris xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/included/include10.txt0000644000175000017500000000000610571764421025103 0ustar borisborisText3 xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/included/include02.xml0000644000175000017500000000020610571764421025067 0ustar borisboris xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/included/include08.xml0000644000175000017500000000015410571764421025077 0ustar borisboris xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/included/not-well-formed.xml0000644000175000017500000000002310571764421026312 0ustar borisboris xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/included/not.xml0000644000175000017500000000021610571764421024103 0ustar borisboris xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/included/include07.xml0000644000175000017500000000015010571764421025072 0ustar borisboris xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/included/include01.xml0000644000175000017500000000025110571764421025066 0ustar borisboris xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/included/dir/0000755000175000017500000000000011363617314023336 5ustar borisborisxerces-c-3.1.1/tests/src/xinclude/tests/xinclude/included/dir/include09.xml0000644000175000017500000000126710571764421025664 0ustar borisboris Text4 xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/included/include06.xml0000644000175000017500000000015010571764421025071 0ustar borisboris xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/included/ue2.xml0000644000175000017500000000060210571764421023775 0ustar borisboris ]> xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/included/unparsed.xml0000644000175000017500000000031510571764421025124 0ustar borisboris ]> xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/included/elem.xml0000644000175000017500000000012010571764421024217 0ustar borisboris xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/included/elem.jpg0000644000175000017500000000012010571764421024177 0ustar borisboris xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/included/ue.xml0000644000175000017500000000022010571764421023707 0ustar borisboris xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/included/include03.xml0000644000175000017500000000020610571764421025070 0ustar borisboris xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/included/include.xml0000644000175000017500000000017510571764421024732 0ustar borisboris xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/included/include05.xml0000644000175000017500000000020610571764421025072 0ustar borisboris xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/included/include04.xml0000644000175000017500000000020610571764421025071 0ustar borisboris xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/tests/0000755000175000017500000000000011363617314022133 5ustar borisborisxerces-c-3.1.1/tests/src/xinclude/tests/xinclude/tests/test38.xml0000644000175000017500000000070310571764421024011 0ustar borisboris xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/tests/test13.xml0000644000175000017500000000076510571764421024012 0ustar borisboris xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/tests/test01.xml0000644000175000017500000000310310571764421023774 0ustar borisboris Text1 Text2 Text2 xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/cppoutput/test26.txt0000644000175000017500000000064310571764421024731 0ustar borisboris [Warning] test26.xml:9:48 [Fatal Error] test26.xml:9:48 xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/cppoutput/test35.xml0000644000175000017500000000067610571764421024720 0ustar borisboris xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/cppoutput/test04.xml0000644000175000017500000000064010571764421024703 0ustar borisboris xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/cppoutput/test31.xml0000644000175000017500000000076610610720035024677 0ustar borisboris xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/cppoutput/test19.xml0000644000175000017500000000064110571764421024712 0ustar borisboris <?xml version="1.0"?> <elem xmlns="http://www.schemaTest.org/xinclude-test"/> xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/cppoutput/test23.xml0000644000175000017500000000142410571764421024705 0ustar borisboris <?xml version="1.0"?> <x xmlns="http://www.schemaTest.org/xinclude-test" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.schemaTest.org/xinclude-test tests.xsd"> <!-- test that including the same document fails --> <!-- EXPECT FAILURE --> <xi:include parse="xml" href="test24.xml"/> </x> xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/cppoutput/readme.txt0000644000175000017500000000107710571764421025041 0ustar borisborisThe following changes are made to the java xinclude test output files; 1) [ standalone="no" ] is added to the XML Declaration in each file. 2) Attributes on the included top level include element are reordered alphabetically as this is the xerces c++ behaviour! 3) Removed a space from after the xml declaration and before the first document element (thats a single space btw). 4) xerces c++ parser's don't expand quotation entities to ". Java does. Investigate! 5) added xmlns:xml="http://www.w3.org/XML/1998/namespace" attribute to appropriate top level elements xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/cppoutput/test20.xml0000644000175000017500000000066710571764421024712 0ustar borisboris xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/cppoutput/test11.txt0000644000175000017500000000075110571764421024723 0ustar borisboris [Fatal Error] test11.xml:11:22 xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/cppoutput/test32.txt0000644000175000017500000000116010571764421024721 0ustar borisboris [Fatal Error] ue2.xml:12:56 [Fatal Error] test32.xml:14:44 xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/cppoutput/test24.txt0000644000175000017500000000062410571764421024726 0ustar borisboris [Fatal Error] test24.xml:1:1 [Fatal Error] test24.xml:9:35 xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/cppoutput/test09.txt0000644000175000017500000000065210571764421024732 0ustar borisboris [Warning] test09.xml:9:48 [Fatal Error] test09.xml:9:48 xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/cppoutput/test40.txt0000644000175000017500000000064410571764421024726 0ustar borisboris [Warning] test40.xml:10:45 [Fatal Error] test40.xml:10:45 xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/cppoutput/test21.xml0000644000175000017500000000067310571764421024710 0ustar borisboris <?xml version="1.0"?> <elem xmlns="http://www.schemaTest.org/xinclude-test"/> xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/cppoutput/test13.txt0000644000175000017500000000077210571764421024730 0ustar borisboris [Fatal Error] test13.xml:10:19 xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/cppoutput/test33.xml0000644000175000017500000000100210571764421024676 0ustar borisboris xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/cppoutput/test16.xml0000644000175000017500000000064710571764421024715 0ustar borisboris xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/cppoutput/test34.xml0000644000175000017500000000077210571764421024714 0ustar borisboris xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/cppoutput/test06.xml0000644000175000017500000000065110571764421024707 0ustar borisboris xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/cppoutput/test05.xml0000644000175000017500000000053010571764421024702 0ustar borisboris blah blah blah xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/cppoutput/test14.txt0000644000175000017500000000070110571764421024721 0ustar borisboris [Warning] test14.xml:9:47 [Fatal Error] test14.xml:10:19 xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/cppoutput/test10.xml0000644000175000017500000000070210571764421024677 0ustar borisboris xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/cppoutput/test08.xml0000644000175000017500000000071210571764421024707 0ustar borisboris xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/cppoutput/test30.xml0000644000175000017500000000077510610720035024676 0ustar borisboris xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/cppoutput/test27.xml0000644000175000017500000000077410610720035024703 0ustar borisboris xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/cppoutput/test03.xml0000644000175000017500000000070110571764421024700 0ustar borisboris xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/cppoutput/test18.txt0000644000175000017500000000057010571764421024731 0ustar borisboris [Fatal Error] test18.xml:8:18 xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/cppoutput/test41.xml0000644000175000017500000000111210571764421024677 0ustar borisboris xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/cppoutput/test39.txt0000644000175000017500000000066710571764421024743 0ustar borisboris [Warning] test39.xml:10:45 [Fatal Error] test39.xml:10:45 xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/cppoutput/test07.txt0000644000175000017500000000061610571764421024730 0ustar borisboris [Fatal Error] test07.xml:9:45 xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/cppoutput/test17.xml0000644000175000017500000000064510571764421024714 0ustar borisboris xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/cppoutput/test02.xml0000644000175000017500000000072210571764421024702 0ustar borisboris xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/cppoutput/test12.txt0000644000175000017500000000065610571764421024730 0ustar borisboris [Warning] test12.xml:9:47 [Fatal Error] test12.xml:11:22 xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/cppoutput/test15.xml0000644000175000017500000000113210571764421024702 0ustar borisboris xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/cppoutput/test28.xml0000644000175000017500000000076510610720035024704 0ustar borisboris xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/cppoutput/test37.xml0000644000175000017500000000070710571764421024715 0ustar borisboris xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/cppoutput/test36.xml0000644000175000017500000000101410571764421024704 0ustar borisboris xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/cppoutput/test29.txt0000644000175000017500000000066410571764421024737 0ustar borisboris [Fatal Error] not2.xml:12:56 [Fatal Error] test29.xml:11:45 xerces-c-3.1.1/tests/src/xinclude/tests/xinclude/written/0000755000175000017500000000000011363617314022465 5ustar borisborisxerces-c-3.1.1/tests/src/xinclude/run.bat0000644000175000017500000000063010571764421017311 0ustar borisborisset PATH=../../../samples;%PATH% rem not running / current failures rem 1 7 9 11 12 13 14 18 19 21 22 23 29 32 34 35 36 37 38 39 40 41 del /Q tests\xinclude\written\* if %1. NEQ . goto USEARGS perl harness.pl 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 goto END :USEARGS perl harness.pl %1 %2 %3 %4 %5 %6 %7 %8 %9 :END xerces-c-3.1.1/tests/src/UtilTests/0000755000175000017500000000000011363617313016140 5ustar borisborisxerces-c-3.1.1/tests/src/UtilTests/CoreTests_ValueArray.cpp0000644000175000017500000001504310522202400022674 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: CoreTests_ValueArray.cpp 470088 2006-11-01 20:35:12Z amassari $ */ // --------------------------------------------------------------------------- // XML4C2 includes // --------------------------------------------------------------------------- #include "CoreTests.hpp" #include #include // --------------------------------------------------------------------------- // Force a full instantiation of our array and its enumerator, just to // insure that all methods get instantiated and compiled. // --------------------------------------------------------------------------- template ValueArrayOf; template ValueArrayEnumerator; // --------------------------------------------------------------------------- // Local functions // --------------------------------------------------------------------------- static bool constructorTests() { // Do a basic constructor with just the count of elements ValueArrayOf testArray1(255); // Make sure that it has the right initial size if (testArray1.length() != 255) { XERCES_STD_QUALIFIER wcout << L" The ctor created wrong length() value" << XERCES_STD_QUALIFIER endl; return false; } // Copy construct another array from it and test the length ValueArrayOf testArray2(testArray1); if (testArray2.length() != 255) { XERCES_STD_QUALIFIER wcout << L" The copy ctor created wrong length() value" << XERCES_STD_QUALIFIER endl; return false; } // Test the equality of the two arrays if (testArray1 != testArray2) { XERCES_STD_QUALIFIER wcout << L" The copy ctor created unequal arrays" << XERCES_STD_QUALIFIER endl; return false; } // // Do another one where we provide the initial values. // double initValues[] = { 1.1, 2.2, 3.3, 4.4 }; ValueArrayOf testArray3(initValues, 4); if (testArray3.length() != 4) { XERCES_STD_QUALIFIER wcout << L" The init values ctor created wrong length() value" << XERCES_STD_QUALIFIER endl; return false; } // Make sure the initial values are correct if ((testArray3[0] != 1.1) || (testArray3[1] != 2.2) || (testArray3[2] != 3.3) || (testArray3[3] != 4.4)) { XERCES_STD_QUALIFIER wcout << L" The init values ctor did not init contents correctly" << XERCES_STD_QUALIFIER endl; return false; } // // Create another array of a different size and assign one of the // existing ones to it and make sure that they are equal. // ValueArrayOf testArray4(15); testArray4 = testArray3; if (testArray4 != testArray3) { XERCES_STD_QUALIFIER wcout << L" Assignment did not create equal arrays" << XERCES_STD_QUALIFIER endl; return false; } return true; } static bool accessTests() { ValueArrayOf testArray1(16); // Fill in the array unsigned int index; for (index = 0; index < 16; index++) testArray1[index] = index; // Read them back again for (index = 0; index < 16; index++) { if (testArray1[index] != index) { XERCES_STD_QUALIFIER wcout << L" Failed to read back values just set" << XERCES_STD_QUALIFIER endl; return false; } } // Make sure we get the expected array index error bool caughtIt = false; try { index = testArray1[16]; } catch(const ArrayIndexOutOfBoundsException&) { caughtIt = true; } if (!caughtIt) { XERCES_STD_QUALIFIER wcout << L" Failed to catch index error" << XERCES_STD_QUALIFIER endl; return false; } return true; } // --------------------------------------------------------------------------- // Test entry point // --------------------------------------------------------------------------- bool testValueArray() { XERCES_STD_QUALIFIER wcout << L"----------------------------------\n" << L"Testing ValueArrayOf template class\n" << L"----------------------------------" << XERCES_STD_QUALIFIER endl; bool retVal = true; try { // Call other local methods to do specific tests XERCES_STD_QUALIFIER wcout << L"Testing ValueArrayOf contructors" << XERCES_STD_QUALIFIER endl; if (!constructorTests()) { XERCES_STD_QUALIFIER wcout << L"ValueArrayOf constructor tests failed" << XERCES_STD_QUALIFIER endl; retVal = false; } else { XERCES_STD_QUALIFIER wcout << L"ValueArrayOf constructor tests passed" << XERCES_STD_QUALIFIER endl; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; XERCES_STD_QUALIFIER wcout << L"Testing ValueArrayOf element access" << XERCES_STD_QUALIFIER endl; if (!accessTests()) { XERCES_STD_QUALIFIER wcout << L"ValueArrayOf element access tests failed" << XERCES_STD_QUALIFIER endl; retVal = false; } else { XERCES_STD_QUALIFIER wcout << L"ValueArrayOf element access tests passed" << XERCES_STD_QUALIFIER endl; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; } catch(const XMLException& toCatch) { XERCES_STD_QUALIFIER wcout << L" ERROR: Unexpected exception!\n Msg: " << toCatch.getMessage() << XERCES_STD_QUALIFIER endl; return false; } return retVal; } xerces-c-3.1.1/tests/src/UtilTests/CoreTests_ValueVector.cpp0000644000175000017500000002636410522202400023070 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: CoreTests_ValueVector.cpp 470088 2006-11-01 20:35:12Z amassari $ */ // --------------------------------------------------------------------------- // XML4C2 includes // --------------------------------------------------------------------------- #include "CoreTests.hpp" #include #include // --------------------------------------------------------------------------- // Force a full instantiation of our vector and its enumerator, just to // insure that all methods get instantiated and compiled. // --------------------------------------------------------------------------- template ValueVectorOf; template ValueVectorEnumerator; // --------------------------------------------------------------------------- // Templatized testing code. These allow the exact same tests to be run // for any number of instantiation types over the by value vectors. // --------------------------------------------------------------------------- template bool commonValueTests() { const unsigned int testMax = 3; bool caughtIt; // Create a vector of testMax of the instantiation type ValueVectorOf testVec(testMax); // Make sure the initial capacity is what we set if (testVec.curCapacity() != testMax) { XERCES_STD_QUALIFIER wcout << L" Init capacity was bad" << XERCES_STD_QUALIFIER endl; return false; } // Make sure the initial size is zero if (testVec.size() != 0) { XERCES_STD_QUALIFIER wcout << L" Init size was bad" << XERCES_STD_QUALIFIER endl; return false; } // Test value for adding T testElem; // Add a value and check the count is 1 testVec.addElement(testElem); if (testVec.size() != 1) { XERCES_STD_QUALIFIER wcout << L" Adding one element caused bad size" << XERCES_STD_QUALIFIER endl; return false; } // Add another value and check the count is 2 testVec.addElement(testElem); if (testVec.size() != 2) { XERCES_STD_QUALIFIER wcout << L" Adding another element caused bad size" << XERCES_STD_QUALIFIER endl; return false; } // Test that the two of them are the same if (testVec.elementAt(0) != testVec.elementAt(1)) { XERCES_STD_QUALIFIER wcout << L" First two elements did not match" << XERCES_STD_QUALIFIER endl; return false; } // Add two more, which should cause an expansion of the vector testVec.addElement(testElem); testVec.addElement(testElem); if (testVec.curCapacity() == testMax) { XERCES_STD_QUALIFIER wcout << L" Adding another element failed to cause an expansion" << XERCES_STD_QUALIFIER endl; return false; } // Check that we get an array bounds exception after an expansion caughtIt = false; try { testVec.elementAt(4); } catch(const ArrayIndexOutOfBoundsException&) { caughtIt = true; } if (!caughtIt) { XERCES_STD_QUALIFIER wcout << L" Failed to catch array bounds error at element 4" << XERCES_STD_QUALIFIER endl; return false; } // Remove an item and see if the count went down by one testVec.removeElementAt(0); if (testVec.size() != 3) { XERCES_STD_QUALIFIER wcout << L" Removing an element did not adjust size correctly" << XERCES_STD_QUALIFIER endl; return false; } // Remove the rest of them and make sure we hit zero testVec.removeElementAt(0); testVec.removeElementAt(0); testVec.removeElementAt(0); if (testVec.size() != 0) { XERCES_STD_QUALIFIER wcout << L" Removing all elements did not zero the size" << XERCES_STD_QUALIFIER endl; return false; } // Check that we get an array bounds exception now still caughtIt = false; try { testVec.elementAt(0); } catch(const ArrayIndexOutOfBoundsException&) { caughtIt = true; } if (!caughtIt) { XERCES_STD_QUALIFIER wcout << L" Failed to catch array bounds error at element 0" << XERCES_STD_QUALIFIER endl; return false; } // Add a few more elements back in, via insertion testVec.insertElementAt(testElem, 0); testVec.insertElementAt(testElem, 0); testVec.insertElementAt(testElem, 0); if (testVec.size() != 3) { XERCES_STD_QUALIFIER wcout << L" Inserting elements caused bad size" << XERCES_STD_QUALIFIER endl; return false; } // Now do a remove all elements testVec.removeAllElements(); if (testVec.size() != 0) { XERCES_STD_QUALIFIER wcout << L" removeAllElements caused bad size" << XERCES_STD_QUALIFIER endl; return false; } return true; } template bool extendedValueTests() { const unsigned int testMax = 8; // Create a test vector and put in ascending test values ValueVectorOf testVec(testMax); testVec.addElement(T(0)); testVec.addElement(T(1)); testVec.addElement(T(2)); testVec.addElement(T(3)); testVec.addElement(T(4)); testVec.addElement(T(5)); testVec.addElement(T(6)); testVec.addElement(T(7)); // Now check that they went in that way unsigned int index; for (index = 0; index < testMax; index++) { if (testVec.elementAt(index) != T(index)) { XERCES_STD_QUALIFIER wcout << L" addElement put elements in wrong order" << XERCES_STD_QUALIFIER endl; return false; } } // Remove the zero'th element and test again testVec.removeElementAt(0); for (index = 0; index < testMax-1; index++) { if (testVec.elementAt(index) != T(index+1)) { XERCES_STD_QUALIFIER wcout << L" removeElement at head removed wrong element" << XERCES_STD_QUALIFIER endl; return false; } } // Test edge case by removing last element and test again testVec.removeElementAt(6); for (index = 0; index < testMax-2; index++) { if (testVec.elementAt(index) != T(index+1)) { XERCES_STD_QUALIFIER wcout << L" removeElement at end removed wrong element" << XERCES_STD_QUALIFIER endl; return false; } } return true; } // --------------------------------------------------------------------------- // Local functions // --------------------------------------------------------------------------- static bool doBasicTests() { bool retVal = true; // // Do the common value vector tests for ints, bools and strings. // XERCES_STD_QUALIFIER wcout << L"Testing ValueVectorOf, common tests" << XERCES_STD_QUALIFIER endl; if (!commonValueTests()) { XERCES_STD_QUALIFIER wcout << L"ValueVectorOf failed" << XERCES_STD_QUALIFIER endl; retVal = false; } else { XERCES_STD_QUALIFIER wcout << L"ValueVectorOf passed" << XERCES_STD_QUALIFIER endl; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; XERCES_STD_QUALIFIER wcout << L"Testing ValueVectorOf, common tests" << XERCES_STD_QUALIFIER endl; if (!commonValueTests()) { XERCES_STD_QUALIFIER wcout << L"ValueVectorOf failed" << XERCES_STD_QUALIFIER endl; retVal = false; } else { XERCES_STD_QUALIFIER wcout << L"ValueVectorOf passed" << XERCES_STD_QUALIFIER endl; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; // // And now do the second round of extended tests. These require that // the instantiation type be of a fundamental value, because its going // to test element ordering issues. // XERCES_STD_QUALIFIER wcout << L"Testing ValueVectorOf, extended tests" << XERCES_STD_QUALIFIER endl; if (!extendedValueTests()) { XERCES_STD_QUALIFIER wcout << L"Extended ValueVectorOf failed" << XERCES_STD_QUALIFIER endl; retVal = false; } else { XERCES_STD_QUALIFIER wcout << L"Extended ValueVectorOf passed" << XERCES_STD_QUALIFIER endl; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; return retVal; } static bool enumTests() { // Create a vector and fill it in with some known values ValueVectorOf testVec(32); unsigned int index; for (index = 0; index < 32; index++) testVec.addElement(index); // Create an enumeration for it ValueVectorEnumerator enumTest(&testVec); index = 0; while (enumTest.hasMoreElements()) { if (enumTest.nextElement() != index++) { XERCES_STD_QUALIFIER wcout << L" Enumerator sequence was incorrect" << XERCES_STD_QUALIFIER endl; return false; } } if (index != 32) { XERCES_STD_QUALIFIER wcout << L" Enumerator did not enum enough elements" << XERCES_STD_QUALIFIER endl; return false; } return true; } // --------------------------------------------------------------------------- // Test entry point // --------------------------------------------------------------------------- bool testValueVector() { XERCES_STD_QUALIFIER wcout << L"----------------------------------\n" << L"Testing ValueVectorOf template class\n" << L"----------------------------------" << XERCES_STD_QUALIFIER endl; bool retVal = true; try { // Do the basic suite of tests, which is templatized if (!doBasicTests()) retVal = false; // Test the enumerator XERCES_STD_QUALIFIER wcout << L"Testing ValueVectorEnumerator" << XERCES_STD_QUALIFIER endl; if (!enumTests()) { XERCES_STD_QUALIFIER wcout << L"ValueVectorEnumeration failed" << XERCES_STD_QUALIFIER endl; retVal = false; } else { XERCES_STD_QUALIFIER wcout << L"ValueVectorEnumeration passed" << XERCES_STD_QUALIFIER endl; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; } catch(const XMLException& toCatch) { XERCES_STD_QUALIFIER wcout << L" ERROR: Unexpected exception!\n Msg: " << toCatch.getMessage() << XERCES_STD_QUALIFIER endl; return false; } return retVal; } xerces-c-3.1.1/tests/src/UtilTests/CoreTests_URL.cpp0000644000175000017500000002621310522202400021264 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: CoreTests_URL.cpp 470088 2006-11-01 20:35:12Z amassari $ */ // --------------------------------------------------------------------------- // XML4C2 includes // --------------------------------------------------------------------------- #include #include #include "CoreTests.hpp" // --------------------------------------------------------------------------- // Local testing functions // --------------------------------------------------------------------------- // // This test just sets up a list of variations on URLs and parses them. The // URL list includes the expected text for each of the parts that should be // parsed out of the URL. // struct BasicTestEntry { const XMLCh* orgURL; const XMLCh* fullText; XMLURL::Protocols protocol; unsigned int portNum; const XMLCh* fragment; const XMLCh* host; const XMLCh* path; const XMLCh* password; const XMLCh* query; const XMLCh* user; }; static bool checkAField(const XMLCh* const test , const XMLCh* const expected , const XMLCh* const fieldName) { if (!test && !expected) return true; if (!test && expected) { XERCES_STD_QUALIFIER wcout << L"Expected value for the " << fieldName << " field was not present" << XERCES_STD_QUALIFIER endl; return false; } else if (test && !expected) { XERCES_STD_QUALIFIER wcout << L"The value '" << test << L"' for the " << fieldName << L" was not expected" << XERCES_STD_QUALIFIER endl; return false; } else if (XMLString::compareString(test, expected)) { XERCES_STD_QUALIFIER wcout << L"Expected: " << expected << L", but got: " << test << XERCES_STD_QUALIFIER endl; return false; } return true; } static bool checkBasicResult(const XMLURL& testURL , const BasicTestEntry& testInfo) { // // Check each part to insure that its what its supposed to be. Since // any of them can be a null pointer, we have a little helper function // that spits out the actual testing code for each one. // if (!checkAField(testURL.getURLText(), testInfo.fullText, L"Full Text")) return false; if (!checkAField(testURL.getFragment(), testInfo.fragment, L"Fragment")) return false; if (!checkAField(testURL.getHost(), testInfo.host, L"Host")) return false; if (testURL.getPortNum() != testInfo.portNum) { XERCES_STD_QUALIFIER wcout << L"Expected port number: " << testInfo.portNum << L" but got: " << testURL.getPortNum() << XERCES_STD_QUALIFIER endl; return false; } if (!checkAField(testURL.getPath(), testInfo.path, L"Path")) return false; if (!checkAField(testURL.getPassword(), testInfo.password, L"Password")) return false; if (!checkAField(testURL.getQuery(), testInfo.query, L"Query")) return false; if (!checkAField(testURL.getUser(), testInfo.user, L"User")) return false; return true; } static bool basicURLTest() { static BasicTestEntry testList[] = { { L"file://user:password@host/path1/path2/file.txt?query#fragment" , L"file://user:password@host/path1/path2/file.txt?query#fragment" , XMLURL::File , 0 , L"fragment" , L"host" , L"/path1/path2/file.txt" , L"password" , L"query" , L"user" } , { L"file:///path2/file.txt?query#fragment" , L"file:///path2/file.txt?query#fragment" , XMLURL::File , 0 , L"fragment" , 0 , L"/path2/file.txt" , 0 , L"query" , 0 } , { L"#fragment" , L"#fragment" , XMLURL::Unknown , 0 , L"fragment" , 0 , 0 , 0 , 0 , 0 } , { L"file://user@host/path1/path2/file.txt#fragment" , L"file://user@host/path1/path2/file.txt#fragment" , XMLURL::File , 0 , L"fragment" , L"host" , L"/path1/path2/file.txt" , 0 , 0 , L"user" } , { L" file://user@host/path1/path2/file.txt#fragment" , L"file://user@host/path1/path2/file.txt#fragment" , XMLURL::File , 0 , L"fragment" , L"host" , L"/path1/path2/file.txt" , 0 , 0 , L"user" } , { L"http://host:90/path1/path2/file.txt" , L"http://host:90/path1/path2/file.txt" , XMLURL::HTTP , 90 , 0 , L"host" , L"/path1/path2/file.txt" , 0 , 0 , 0 } , { L"http://host/path1/path2/file.txt" , L"http://host/path1/path2/file.txt" , XMLURL::HTTP , 80 , 0 , L"host" , L"/path1/path2/file.txt" , 0 , 0 , 0 } , { L"ftp://" , L"ftp://" , XMLURL::FTP , 21 , 0 , 0 , 0 , 0 , 0 , 0 } , { L"ftp://user@" , L"ftp://user@" , XMLURL::FTP , 21 , 0 , 0 , 0 , 0 , 0 , L"user" } }; const unsigned int testCount = sizeof(testList) / sizeof(testList[0]); bool retVal = true; // // Do a run where we construct the URL over and over for each // test. // unsigned int index; for (index = 0; index < testCount; index++) { // Force full destruction each time { XMLURL testURL(testList[index].orgURL); // Call the comparison function if (!checkBasicResult(testURL, testList[index])) retVal = false; } } // // Do a run where we use a single URL object and just reset it over // and over again. // XMLURL testURL; for (index = 0; index < testCount; index++) { testURL.setURL(testList[index].orgURL); // Call the comparison function if (!checkBasicResult(testURL, testList[index])) retVal = false; } return retVal; } // // This test makes sure that parsing one URL relative to another works // correctly. The tests used here come from one of the internet RFCs on // generic URI syntax. A single base URL is created, then a number of // relative URLs are parsed against it and the results compared to the // expected result. // static bool relativeURLTest() { static struct TestEntry { const XMLCh* relative; const XMLCh* result; } testList[] = { { L"g" , L"http://a/b/c/g" } , { L"./g" , L"http://a/b/c/g" } , { L"g/" , L"http://a/b/c/g/" } , { L"/g" , L"http://a/g" } , { L"?y" , L"http://a/b/c/?y" } , { L"g?y" , L"http://a/b/c/g?y" } , { L"#s" , L"http://a/b/c/d;p#s" } , { L"g#s" , L"http://a/b/c/g#s" } , { L"g?y#s" , L"http://a/b/c/g?y#s" } , { L";x" , L"http://a/b/c/;x" } , { L"g;x" , L"http://a/b/c/g;x" } , { L"g;x?y#s", L"http://a/b/c/g;x?y#s" } , { L"." , L"http://a/b/c/" } , { L"./" , L"http://a/b/c/" } , { L".." , L"http://a/b/" } , { L"../" , L"http://a/b/" } , { L"../g" , L"http://a/b/g" } , { L"../.." , L"http://a/" } , { L"../../" , L"http://a/" } , { L"../../g", L"http://a/g" } }; const unsigned int testCount = sizeof(testList) / sizeof(testList[0]); // This is the base URL against which the tests are run XMLURL baseURL(L"http://a/b/c/d;p?q"); bool retVal = true; for (unsigned int index = 0; index < testCount; index++) { XMLURL testURL(baseURL, testList[index].relative); if (XMLString::compareString(testURL.getURLText(), testList[index].result)) { XERCES_STD_QUALIFIER wcout << L"Expected URL: " << testList[index].result << L" but got: " << testURL.getURLText() << XERCES_STD_QUALIFIER endl; retVal = false; } } return retVal; }; // --------------------------------------------------------------------------- // Test entry point // --------------------------------------------------------------------------- bool testURL() { XERCES_STD_QUALIFIER wcout << L"----------------------------------\n" << L"Testing URL class \n" << L"----------------------------------" << XERCES_STD_QUALIFIER endl; bool retVal = true; try { // Call other local methods to do specific tests XERCES_STD_QUALIFIER wcout << L"Testing basic URL parsing" << XERCES_STD_QUALIFIER endl; if (!basicURLTest()) { XERCES_STD_QUALIFIER wcout << L"Basic URL parsing tests failed" << XERCES_STD_QUALIFIER endl; retVal = false; } else { XERCES_STD_QUALIFIER wcout << L"Basic URL parsing tests passed" << XERCES_STD_QUALIFIER endl; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; XERCES_STD_QUALIFIER wcout << L"Testing relative URL parsing" << XERCES_STD_QUALIFIER endl; if (!relativeURLTest()) { XERCES_STD_QUALIFIER wcout << L"Relative URL parsing tests failed" << XERCES_STD_QUALIFIER endl; retVal = false; } else { XERCES_STD_QUALIFIER wcout << L"Relative URL parsing tests passed" << XERCES_STD_QUALIFIER endl; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; } catch(const XMLException& toCatch) { XERCES_STD_QUALIFIER wcout << L" ERROR: Unexpected exception!\n Msg: " << toCatch.getMessage() << XERCES_STD_QUALIFIER endl; return false; } return retVal; } xerces-c-3.1.1/tests/src/UtilTests/CoreTests_String.cpp0000644000175000017500000000405310522202400022066 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: CoreTests_String.cpp 470088 2006-11-01 20:35:12Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include "CoreTests.hpp" #include #include #include // --------------------------------------------------------------------------- // Local test functions // --------------------------------------------------------------------------- // --------------------------------------------------------------------------- // Test entry point // --------------------------------------------------------------------------- bool testString() { XERCES_STD_QUALIFIER wcout << L"----------------------------------\n" << L"Testing String class\n" << L"----------------------------------" << XERCES_STD_QUALIFIER endl; bool retVal = true; try { } catch(const XMLException& toCatch) { XERCES_STD_QUALIFIER wcout << L" ERROR: Unexpected exception!\n Msg: " << toCatch.getMessage() << XERCES_STD_QUALIFIER endl; return false; } return retVal; } xerces-c-3.1.1/tests/src/UtilTests/CoreTests_BitSet.cpp0000644000175000017500000001712010522202400022011 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: CoreTests_BitSet.cpp 470088 2006-11-01 20:35:12Z amassari $ */ // --------------------------------------------------------------------------- // XML4C2 Includes // --------------------------------------------------------------------------- #include "CoreTests.hpp" #include // --------------------------------------------------------------------------- // Local testing methods // --------------------------------------------------------------------------- static bool basicTests() { // // Create a bitset with 32 bits. We just happen to know that this is // the unit of expansion, so it should come back with exactly that // number of bits of size. // BitSet setTest(32); if (setTest.size() != 32) { XERCES_STD_QUALIFIER wcout << L" Ctor did not create set of correct size" << XERCES_STD_QUALIFIER endl; return false; } // // Check the value of all of the bits and make sure that they all come // back zero. // const unsigned int count = setTest.size(); unsigned int index; for (index = 0; index < count; index++) { if (setTest.get(index)) { XERCES_STD_QUALIFIER wcout << L" A bit's initial value was not zero" << XERCES_STD_QUALIFIER endl; return false; } } // Make sure that allAreCleared() agrees if (!setTest.allAreCleared()) { XERCES_STD_QUALIFIER wcout << L" allAreCleared() disagrees with individual bit gets" << XERCES_STD_QUALIFIER endl; return false; } // Set and clear each bit and make sure that they come back right for (index = 0; index < count; index++) { setTest.set(index); if (!setTest.get(index)) { XERCES_STD_QUALIFIER wcout << L" Bit was set but get returned false" << XERCES_STD_QUALIFIER endl; return false; } setTest.clear(index); if (setTest.get(index)) { XERCES_STD_QUALIFIER wcout << L" Bit was cleared but get returned true" << XERCES_STD_QUALIFIER endl; return false; } } // And once more make sure they are all zero for (index = 0; index < count; index++) { if (setTest.get(index)) { XERCES_STD_QUALIFIER wcout << L" A bit remained set after clearing" << XERCES_STD_QUALIFIER endl; return false; } } // // Set some bits, then copy construct another bitset from this one. Then // see if they come out equal. // setTest.set(1); setTest.set(16); setTest.set(20); setTest.set(24); BitSet setTest2(setTest); if (!setTest.equals(setTest2)) { XERCES_STD_QUALIFIER wcout << L" Copy ctor did not create equal sets" << XERCES_STD_QUALIFIER endl; return false; } // Clear all bits of the copy and make sure they are all cleared setTest2.clearAll(); for (index = 0; index < count; index++) { if (setTest2.get(index)) { XERCES_STD_QUALIFIER wcout << L" clearAll() did not clear all bits" << XERCES_STD_QUALIFIER endl; return false; } } // Set a bit beyond the current size setTest2.set(32); // Make sure it expanded if (setTest2.size() != 64) { XERCES_STD_QUALIFIER wcout << L" Set of bit beyond size did not expand" << XERCES_STD_QUALIFIER endl; return false; } // Set all the bits for (index = 0; index < count; index++) setTest.set(index); // Make sure that allAreSet() sees them all set if (!setTest.allAreSet()) { XERCES_STD_QUALIFIER wcout << L" After setting all bits, allAreSet() returned false" << XERCES_STD_QUALIFIER endl; return false; } return true; } static bool bitopsTests() { // Create a bit set to test BitSet setTest(48); // Set some bits setTest.set(1); setTest.set(10); setTest.set(16); setTest.set(21); setTest.set(33); setTest.set(41); // Create another set to do ops on BitSet setTest2(48); // Or with the new set setTest2.orWith(setTest); // They should be equal now if (!setTest.equals(setTest2)) { XERCES_STD_QUALIFIER wcout << L" OR of set with empty set did not create equal sets" << XERCES_STD_QUALIFIER endl; return false; } // Xor with original which should get back an empty set setTest2.xorWith(setTest); if (!setTest2.allAreCleared()) { XERCES_STD_QUALIFIER wcout << L" XOR against original set did not get back original" << XERCES_STD_QUALIFIER endl; return false; } // And them, which should have no effect setTest2.andWith(setTest); if (!setTest2.allAreCleared()) { XERCES_STD_QUALIFIER wcout << L" AND against empty set changed bits" << XERCES_STD_QUALIFIER endl; return false; } return true; } // --------------------------------------------------------------------------- // Test entry point // --------------------------------------------------------------------------- bool testBitSet() { XERCES_STD_QUALIFIER wcout << L"----------------------------------\n" << L"Testing BitSet class\n" << L"----------------------------------" << XERCES_STD_QUALIFIER endl; bool retVal = true; try { XERCES_STD_QUALIFIER wcout << L"Testing basic BitSet methods" << XERCES_STD_QUALIFIER endl; if (!basicTests()) { XERCES_STD_QUALIFIER wcout << L"Bitset basic test methods failed" << XERCES_STD_QUALIFIER endl; retVal = false; } else { XERCES_STD_QUALIFIER wcout << L"Bitset basic tests passed" << XERCES_STD_QUALIFIER endl; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; XERCES_STD_QUALIFIER wcout << L"Testing BitSet logical bit ops methods" << XERCES_STD_QUALIFIER endl; if (!bitopsTests()) { XERCES_STD_QUALIFIER wcout << L"Bitset logical bit ops failed" << XERCES_STD_QUALIFIER endl; retVal = false; } else { XERCES_STD_QUALIFIER wcout << L"Bitset logical bit ops passed" << XERCES_STD_QUALIFIER endl; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; } catch(const XMLException& toCatch) { XERCES_STD_QUALIFIER wcout << L" ERROR: Unexpected exception!\n Msg: " << toCatch.getMessage() << XERCES_STD_QUALIFIER endl; return false; } return retVal; } xerces-c-3.1.1/tests/src/UtilTests/CoreTests_ValueStack.cpp0000644000175000017500000000575710522202400022676 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: CoreTests_ValueStack.cpp 470088 2006-11-01 20:35:12Z amassari $ */ // --------------------------------------------------------------------------- // XML4C2 includes // --------------------------------------------------------------------------- #include "CoreTests.hpp" #include // --------------------------------------------------------------------------- // Force a full instantiation of our stack and its enumerator, just to // insure that all methods get instantiated and compiled. // --------------------------------------------------------------------------- template ValueStackOf; template ValueStackEnumerator; // --------------------------------------------------------------------------- // Test entry point // --------------------------------------------------------------------------- static bool basicTests() { ValueStackOf testStack(500); return true; } // --------------------------------------------------------------------------- // Test entry point // --------------------------------------------------------------------------- bool testValueStack() { XERCES_STD_QUALIFIER wcout << L"----------------------------------\n" << L"Testing ValueStackOf template class\n" << L"----------------------------------" << XERCES_STD_QUALIFIER endl; bool retVal = true; try { // Call other local methods to do specific tests XERCES_STD_QUALIFIER wcout << L"Testing ValueStackOf basics" << XERCES_STD_QUALIFIER endl; if (!basicTests()) { XERCES_STD_QUALIFIER wcout << L"ValueStackOf basic tests failed" << XERCES_STD_QUALIFIER endl; retVal = false; } else { XERCES_STD_QUALIFIER wcout << L"ValueArrayOf constructor tests passed" << XERCES_STD_QUALIFIER endl; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; } catch(const XMLException& toCatch) { XERCES_STD_QUALIFIER wcout << L" ERROR: Unexpected exception!\n Msg: " << toCatch.getMessage() << XERCES_STD_QUALIFIER endl; return false; } return retVal; } xerces-c-3.1.1/tests/src/UtilTests/CoreTests_Transcoders.cpp0000644000175000017500000000372610522202400023115 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: CoreTests_Transcoders.cpp 470088 2006-11-01 20:35:12Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include "CoreTests.hpp" #include #include #include #include // --------------------------------------------------------------------------- // Local test methods // --------------------------------------------------------------------------- // The transcoding system was changed, and there is no time at the moment // to update the tests, so they were temporarily removed. // --------------------------------------------------------------------------- // Test entry point // --------------------------------------------------------------------------- bool testTranscoders() { XERCES_STD_QUALIFIER wcout << L"----------------------------------\n" << L"Testing transcoder classes\n" << L"----------------------------------" << XERCES_STD_QUALIFIER endl; return true; } xerces-c-3.1.1/tests/src/UtilTests/CoreTests_RefStack.cpp0000644000175000017500000000573410522202400022331 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: CoreTests_RefStack.cpp 470088 2006-11-01 20:35:12Z amassari $ */ // --------------------------------------------------------------------------- // XML4C2 includes // --------------------------------------------------------------------------- #include "CoreTests.hpp" #include // --------------------------------------------------------------------------- // Force a full instantiation of our stack and its enumerator, just to // insure that all methods get instantiated and compiled. // --------------------------------------------------------------------------- template RefStackOf; template RefStackEnumerator; // --------------------------------------------------------------------------- // Test entry point // --------------------------------------------------------------------------- static bool basicTests() { RefStackOf testStack(500); return true; } // --------------------------------------------------------------------------- // Test entry point // --------------------------------------------------------------------------- bool testRefStack() { XERCES_STD_QUALIFIER wcout << L"----------------------------------\n" << L"Testing RefStackOf template class\n" << L"----------------------------------" << XERCES_STD_QUALIFIER endl; bool retVal = true; try { // Call other local methods to do specific tests XERCES_STD_QUALIFIER wcout << L"Testing RefStackOf basics" << XERCES_STD_QUALIFIER endl; if (!basicTests()) { XERCES_STD_QUALIFIER wcout << L"RefStackOf basic tests failed" << XERCES_STD_QUALIFIER endl; retVal = false; } else { XERCES_STD_QUALIFIER wcout << L"RefArrayOf constructor tests passed" << XERCES_STD_QUALIFIER endl; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; } catch(const XMLException& toCatch) { XERCES_STD_QUALIFIER wcout << L" ERROR: Unexpected exception!\n Msg: " << toCatch.getMessage() << XERCES_STD_QUALIFIER endl; return false; } return retVal; } xerces-c-3.1.1/tests/src/UtilTests/CoreTests_RefArray.cpp0000644000175000017500000001557410522202400022345 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: CoreTests_RefArray.cpp 470088 2006-11-01 20:35:12Z amassari $ */ // --------------------------------------------------------------------------- // XML4C2 includes // --------------------------------------------------------------------------- #include "CoreTests.hpp" #include #include // --------------------------------------------------------------------------- // Force a full instantiation of our array and its enumerator, just to // insure that all methods get instantiated and compiled. // --------------------------------------------------------------------------- template RefArrayOf; template RefArrayEnumerator; // --------------------------------------------------------------------------- // Local functions // --------------------------------------------------------------------------- static bool constructorTests() { // Some values to test with double testVals[16]; unsigned int index; for (index = 0; index < 16; index++) testVals[index] = index; // Do a basic constructor with just the count of elements RefArrayOf testArray1(255); // Make sure that it has the right initial size if (testArray1.length() != 255) { XERCES_STD_QUALIFIER wcout << L" The ctor created wrong length() value" << XERCES_STD_QUALIFIER endl; return false; } // Copy construct another array from it and test the length RefArrayOf testArray2(testArray1); if (testArray2.length() != 255) { XERCES_STD_QUALIFIER wcout << L" The copy ctor created wrong length() value" << XERCES_STD_QUALIFIER endl; return false; } // Test the equality of the two arrays if (testArray1 != testArray2) { XERCES_STD_QUALIFIER wcout << L" The copy ctor created unequal arrays" << XERCES_STD_QUALIFIER endl; return false; } // // Do another one where we provide the initial values. // double* initValues[16]; for (index = 0; index < 16; index++) initValues[index ] = &testVals[index]; RefArrayOf testArray3(initValues, 16); if (testArray3.length() != 16) { XERCES_STD_QUALIFIER wcout << L" The init values ctor created wrong length() value" << XERCES_STD_QUALIFIER endl; return false; } // Make sure the initial values are correct for (index = 0; index < 16; index++) { if (*testArray3[index] != (double)index) { XERCES_STD_QUALIFIER wcout << L" The init values ctor did not init contents correctly" << XERCES_STD_QUALIFIER endl; return false; } } // // Create another array of a different size and assign one of the // existing ones to it and make sure that they are equal. // RefArrayOf testArray4(15); testArray4 = testArray3; if (testArray4 != testArray3) { XERCES_STD_QUALIFIER wcout << L" Assignment did not create equal arrays" << XERCES_STD_QUALIFIER endl; return false; } return true; } static bool accessTests() { // Some values to test with unsigned int testVals[16]; unsigned int index; for (index = 0; index < 16; index++) testVals[index] = index; RefArrayOf testArray1(16); // Fill in the array for (index = 0; index < 16; index++) testArray1[index] = &testVals[index]; // Read them back again for (index = 0; index < 16; index++) { if (testArray1[index] != &testVals[index]) { XERCES_STD_QUALIFIER wcout << L" Failed to read back values just set" << XERCES_STD_QUALIFIER endl; return false; } } // Make sure we get the expected array index error bool caughtIt = false; try { testArray1[16]; } catch(const ArrayIndexOutOfBoundsException&) { caughtIt = true; } if (!caughtIt) { XERCES_STD_QUALIFIER wcout << L" Failed to catch index error" << XERCES_STD_QUALIFIER endl; return false; } return true; } // --------------------------------------------------------------------------- // Test entry point // --------------------------------------------------------------------------- bool testRefArray() { XERCES_STD_QUALIFIER wcout << L"----------------------------------\n" << L"Testing RefArrayOf template class\n" << L"----------------------------------" << XERCES_STD_QUALIFIER endl; bool retVal = true; try { // Call other local methods to do specific tests XERCES_STD_QUALIFIER wcout << L"Testing RefArrayOf contructors" << XERCES_STD_QUALIFIER endl; if (!constructorTests()) { XERCES_STD_QUALIFIER wcout << L"RefArrayOf constructor tests failed" << XERCES_STD_QUALIFIER endl; retVal = false; } else { XERCES_STD_QUALIFIER wcout << L"RefArrayOf constructor tests passed" << XERCES_STD_QUALIFIER endl; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; XERCES_STD_QUALIFIER wcout << L"Testing RefArrayOf element access" << XERCES_STD_QUALIFIER endl; if (!accessTests()) { XERCES_STD_QUALIFIER wcout << L"RefArrayOf element access tests failed" << XERCES_STD_QUALIFIER endl; retVal = false; } else { XERCES_STD_QUALIFIER wcout << L"RefArrayOf element access tests passed" << XERCES_STD_QUALIFIER endl; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; } catch(const XMLException& toCatch) { XERCES_STD_QUALIFIER wcout << L" ERROR: Unexpected exception!\n Msg: " << toCatch.getMessage() << XERCES_STD_QUALIFIER endl; return false; } return retVal; } xerces-c-3.1.1/tests/src/UtilTests/CoreTests_CountedPointer.cpp0000644000175000017500000000521510522202400023563 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: CoreTests_CountedPointer.cpp 470088 2006-11-01 20:35:12Z amassari $ */ // --------------------------------------------------------------------------- // XML4C2 Includes // --------------------------------------------------------------------------- #include "CoreTests.hpp" #include // --------------------------------------------------------------------------- // A local class used for testing // --------------------------------------------------------------------------- class TestClass { public : static unsigned int gCounter; TestClass() { gCounter++; } ~TestClass() { gCounter--; } void addRef() { refCount++; } void removeRef() { refCount--; if (refCount == 0) delete this; } private : unsigned int refCount; }; unsigned int TestClass::gCounter = 0; // --------------------------------------------------------------------------- // Force a full instantiation to test syntax // --------------------------------------------------------------------------- template class CountedPointerTo; // --------------------------------------------------------------------------- // Test entry point // --------------------------------------------------------------------------- bool testCountedPointer() { XERCES_STD_QUALIFIER wcout << L"----------------------------------\n" << L"Testing CountedPointerTo class\n" << L"----------------------------------" << XERCES_STD_QUALIFIER endl; bool retVal = true; try { } catch(const XMLException& toCatch) { XERCES_STD_QUALIFIER wcout << L" ERROR: Unexpected exception!\n Msg: " << toCatch.getMessage() << XERCES_STD_QUALIFIER endl; return false; } return retVal; } xerces-c-3.1.1/tests/src/UtilTests/CoreTests_RefHashTable.cpp0000644000175000017500000000731110522202400023110 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: CoreTests_RefHashTable.cpp 470088 2006-11-01 20:35:12Z amassari $ */ // --------------------------------------------------------------------------- // XML4C2 includes // --------------------------------------------------------------------------- #include "CoreTests.hpp" #include // --------------------------------------------------------------------------- // A simple class to test the ref hash table with // --------------------------------------------------------------------------- class TestElem { public : TestElem( const XMLCh* const key , const unsigned int value1 , const double value2) : fKey(XMLString::replicate(key)) , fValue1(value1) , fValue2(value2) { } ~TestElem() { XMLString::release(&fKey); } const XMLCh* getKey() const { return fKey; } private : XMLCh* fKey; unsigned int fValue1; double fValue2; }; // --------------------------------------------------------------------------- // Force a full instantiation of our hashtable, and its enumerator, just to // insure that all methods get instantiated and compiled. // --------------------------------------------------------------------------- template RefHashTableOf; template RefHashTableOfEnumerator; // --------------------------------------------------------------------------- // Local testing methods // --------------------------------------------------------------------------- static bool basicTests() { return true; } // --------------------------------------------------------------------------- // Test entry point // --------------------------------------------------------------------------- bool testRefHashTable() { XERCES_STD_QUALIFIER wcout << L"----------------------------------\n" << L"Testing RefHashTableOf class\n" << L"----------------------------------" << XERCES_STD_QUALIFIER endl; bool retVal = true; try { XERCES_STD_QUALIFIER wcout << L"Testing basic RefHashtable methods" << XERCES_STD_QUALIFIER endl; if (!basicTests()) { XERCES_STD_QUALIFIER wcout << L"RefHashtable basic test methods failed" << XERCES_STD_QUALIFIER endl; retVal = false; } else { XERCES_STD_QUALIFIER wcout << L"RefHashtable basic tests passed" << XERCES_STD_QUALIFIER endl; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; } catch(const XMLException& toCatch) { XERCES_STD_QUALIFIER wcout << L" ERROR: Unexpected exception!\n Msg: " << toCatch.getMessage() << XERCES_STD_QUALIFIER endl; return false; } return retVal; } xerces-c-3.1.1/tests/src/UtilTests/CoreTests.hpp0000644000175000017500000000217410522202400020547 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: CoreTests.hpp 470088 2006-11-01 20:35:12Z amassari $ */ #include #include #include #include #if defined(XERCES_NEW_IOSTREAMS) #include #else #include #endif XERCES_CPP_NAMESPACE_USE xerces-c-3.1.1/tests/src/UtilTests/CoreTests_RefVector.cpp0000644000175000017500000002600310522202400022516 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: CoreTests_RefVector.cpp 470088 2006-11-01 20:35:12Z amassari $ */ // --------------------------------------------------------------------------- // XML4C2 Includes // --------------------------------------------------------------------------- #include "CoreTests.hpp" #include #include // --------------------------------------------------------------------------- // Force a full instantiation of the vector and its enumerator just to insure // that all methods get instantiated and compiled. // --------------------------------------------------------------------------- template RefVectorOf; template RefVectorEnumerator; // --------------------------------------------------------------------------- // Templatized testing code. These allow the exact same tests to be run // for any number of instantiation types over the by value vectors. // --------------------------------------------------------------------------- template bool commonRefTests() { const unsigned int testMax = 3; bool caughtIt; // // Create a vector of testMax of the instantiation type. Tell it that // we adopt elements. // RefVectorOf testVec(testMax, true); // Make sure the initial capacity is what we set if (testVec.curCapacity() != testMax) { XERCES_STD_QUALIFIER wcout << L" Init capacity was incorrect" << XERCES_STD_QUALIFIER endl; return false; } // Make sure the initial size is zero if (testVec.size() != 0) { XERCES_STD_QUALIFIER wcout << L" Init size was not correct" << XERCES_STD_QUALIFIER endl; return false; } // Add a value and check the count is 1 testVec.addElement(new T); if (testVec.size() != 1) { XERCES_STD_QUALIFIER wcout << L" Adding one element caused bad size" << XERCES_STD_QUALIFIER endl; return false; } // Add another value and check the count is 2 testVec.addElement(new T); if (testVec.size() != 2) { XERCES_STD_QUALIFIER wcout << L" Adding another element caused bad size" << XERCES_STD_QUALIFIER endl; return false; } // Add two more, which should cause an expansion of the vector testVec.addElement(new T); testVec.addElement(new T); if (testVec.curCapacity() == testMax) { XERCES_STD_QUALIFIER wcout << L" Adding another element failed to cause an expansion" << XERCES_STD_QUALIFIER endl; return false; } // Check that we get an array bounds exception after an expansion caughtIt = false; try { testVec.elementAt(4); } catch(const ArrayIndexOutOfBoundsException&) { caughtIt = true; } if (!caughtIt) { XERCES_STD_QUALIFIER wcout << L" Failed to catch array bounds error at element 4" << XERCES_STD_QUALIFIER endl; return false; } // Remove an item and see if the count went down by one testVec.removeElementAt(0); if (testVec.size() != 3) { XERCES_STD_QUALIFIER wcout << L" Removing an element did not adjust size correctly" << XERCES_STD_QUALIFIER endl; return false; } // Remove the rest of them and make sure we hit zero testVec.removeElementAt(0); testVec.removeElementAt(0); testVec.removeElementAt(0); if (testVec.size() != 0) { XERCES_STD_QUALIFIER wcout << L" Removing all elements did not zero the size" << XERCES_STD_QUALIFIER endl; return false; } // Check that we get an array bounds exception now still caughtIt = false; try { testVec.elementAt(0); } catch(const ArrayIndexOutOfBoundsException&) { caughtIt = true; } if (!caughtIt) { XERCES_STD_QUALIFIER wcout << L" Failed to catch array bounds error at element 0" << XERCES_STD_QUALIFIER endl; return false; } // Add a few more elements back in, via insertion testVec.insertElementAt(new T, 0); testVec.insertElementAt(new T, 0); testVec.insertElementAt(new T, 0); if (testVec.size() != 3) { XERCES_STD_QUALIFIER wcout << L" Inserting elements caused bad size" << XERCES_STD_QUALIFIER endl; return false; } // Now do a remove all elements testVec.removeAllElements(); if (testVec.size() != 0) { XERCES_STD_QUALIFIER wcout << L" removeAllElements caused bad size" << XERCES_STD_QUALIFIER endl; return false; } return true; } template bool extendedRefTests() { const unsigned int testMax = 8; // Create a test vector and put in ascending test values RefVectorOf testVec(testMax, true); testVec.addElement(new T(0)); testVec.addElement(new T(1)); testVec.addElement(new T(2)); testVec.addElement(new T(3)); testVec.addElement(new T(4)); testVec.addElement(new T(5)); testVec.addElement(new T(6)); testVec.addElement(new T(7)); // Now check that they went in that way unsigned int index; for (index = 0; index < testMax; index++) { if (*testVec.elementAt(index) != T(index)) { XERCES_STD_QUALIFIER wcout << L" addElement put elements in wrong order" << XERCES_STD_QUALIFIER endl; return false; } } // Remove the zero'th element and test again testVec.removeElementAt(0); for (index = 0; index < testMax-1; index++) { if (*testVec.elementAt(index) != T(index+1)) { XERCES_STD_QUALIFIER wcout << L" removeElement at head removed wrong element" << XERCES_STD_QUALIFIER endl; return false; } } // Test edge case by removing last element and test again testVec.removeElementAt(6); for (index = 0; index < testMax-2; index++) { if (*testVec.elementAt(index) != T(index+1)) { XERCES_STD_QUALIFIER wcout << L" removeElement at end removed wrong element" << XERCES_STD_QUALIFIER endl; return false; } } return true; } // --------------------------------------------------------------------------- // Local functions // --------------------------------------------------------------------------- static bool doBasicTests() { bool retVal = true; // // Do the common reference vector tests for ints, bools and strings. // XERCES_STD_QUALIFIER wcout << L"Testing RefVectorOf, common tests" << XERCES_STD_QUALIFIER endl; if (!commonRefTests()) { XERCES_STD_QUALIFIER wcout << L"RefVectorOf failed" << XERCES_STD_QUALIFIER endl; retVal = false; } else { XERCES_STD_QUALIFIER wcout << L"RefVectorOf passed" << XERCES_STD_QUALIFIER endl; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; XERCES_STD_QUALIFIER wcout << L"Testing RefVectorOf, common tests" << XERCES_STD_QUALIFIER endl; if (!commonRefTests()) { XERCES_STD_QUALIFIER wcout << L"RefVectorOf failed" << XERCES_STD_QUALIFIER endl; retVal = false; } else { XERCES_STD_QUALIFIER wcout << L"RefVectorOf passed" << XERCES_STD_QUALIFIER endl; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; // // And now do the second round of extended tests. These require that // the instantiation type be of a fundamental value, because its going // to test element ordering issues. // XERCES_STD_QUALIFIER wcout << L"Testing RefVectorOf, extended tests" << XERCES_STD_QUALIFIER endl; if (!extendedRefTests()) { XERCES_STD_QUALIFIER wcout << L"Extended RefVectorOf failed" << XERCES_STD_QUALIFIER endl; retVal = false; } else { XERCES_STD_QUALIFIER wcout << L"Extended RefVectorOf passed" << XERCES_STD_QUALIFIER endl; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; return retVal; } static bool enumTests() { // Create a vector and fill it in with some known values RefVectorOf testVec(32, true); unsigned int index; for (index = 0; index < 32; index++) testVec.addElement(new unsigned int(index)); // Create an enumeration for it RefVectorEnumerator enumTest(&testVec); index = 0; while (enumTest.hasMoreElements()) { if (enumTest.nextElement() != index++) { XERCES_STD_QUALIFIER wcout << L" Enumerator sequence was incorrect" << XERCES_STD_QUALIFIER endl; return false; } } if (index != 32) { XERCES_STD_QUALIFIER wcout << L" Enumerator did not enum enough elements" << XERCES_STD_QUALIFIER endl; return false; } return true; } // --------------------------------------------------------------------------- // Test entry point // --------------------------------------------------------------------------- bool testRefVector() { XERCES_STD_QUALIFIER wcout << L"----------------------------------\n" << L"Testing RefVectorOf template class\n" << L"----------------------------------" << XERCES_STD_QUALIFIER endl; bool retVal = true; try { // Do the basic suite of tests if (!doBasicTests()) retVal = false; // Test the enumerator XERCES_STD_QUALIFIER wcout << L"Testing RefVectorEnumerator" << XERCES_STD_QUALIFIER endl; if (!enumTests()) { XERCES_STD_QUALIFIER wcout << L"RefVectorEnumeration failed" << XERCES_STD_QUALIFIER endl; retVal = false; } else { XERCES_STD_QUALIFIER wcout << L"RefVectorEnumeration passed" << XERCES_STD_QUALIFIER endl; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; } catch(const XMLException& toCatch) { XERCES_STD_QUALIFIER wcout << L" ERROR: Unexpected exception!\n Msg: " << toCatch.getMessage() << XERCES_STD_QUALIFIER endl; return false; } return retVal; } xerces-c-3.1.1/tests/src/UtilTests/CoreTestsMain.cpp0000644000175000017500000002037510522202400021352 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: CoreTestsMain.cpp 470088 2006-11-01 20:35:12Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include "CoreTests.hpp" #include // --------------------------------------------------------------------------- // Externs for our testing methods. There is just one per file so a header // for each one is a little overkill, so we just do it the old fashioned way. // --------------------------------------------------------------------------- extern bool testTranscoders(); extern bool testCountedPointer(); extern bool testBitSet(); extern bool testRefArray(); extern bool testRefHashTable(); extern bool testRefStack(); extern bool testRefVector(); extern bool testString(); extern bool testURL(); extern bool testValueArray(); extern bool testValueStack(); extern bool testValueVector(); int main() { // Do the platform initialization try { XMLPlatformUtils::Initialize(); } catch(const XMLException& toCatch) { XERCES_STD_QUALIFIER wcout << L"Parser Init Failed!\n INFO: (" << toCatch.getSrcFile() << L"." << toCatch.getSrcLine() << L") -" << toCatch.getMessage() << XERCES_STD_QUALIFIER endl; return 0xFFFF; } XERCES_STD_QUALIFIER wcout << L"\nXML4C2 Core Utilities Unit Tester\n" << XERCES_STD_QUALIFIER endl; // This value will return the number of failed tests int retVal = 0; try { // ------------------------------------------------------------------- // Test the basic transcoding services // ------------------------------------------------------------------- if (!testTranscoders()) { XERCES_STD_QUALIFIER wcout << L"Transcoder tests failed" << XERCES_STD_QUALIFIER endl; retVal++; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; // ------------------------------------------------------------------- // Test the String class // ------------------------------------------------------------------- if (!testString()) { XERCES_STD_QUALIFIER wcout << L"String tests failed" << XERCES_STD_QUALIFIER endl; retVal++; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; // ------------------------------------------------------------------- // Test the CountedPointerTo template class // ------------------------------------------------------------------- if (!testCountedPointer()) { XERCES_STD_QUALIFIER wcout << L"CountedPointerTo tests failed" << XERCES_STD_QUALIFIER endl; retVal++; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; // ------------------------------------------------------------------- // Test the URL class // ------------------------------------------------------------------- if (!testURL()) { XERCES_STD_QUALIFIER wcout << L"URL tests failed" << XERCES_STD_QUALIFIER endl; retVal++; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; // ------------------------------------------------------------------- // Test the ValueVectorOf template class // ------------------------------------------------------------------- if (!testValueVector()) { XERCES_STD_QUALIFIER wcout << L"ValueVectorOf tests failed" << XERCES_STD_QUALIFIER endl; retVal++; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; // ------------------------------------------------------------------- // Test the ValueArrayOf template class // ------------------------------------------------------------------- if (!testValueArray()) { XERCES_STD_QUALIFIER wcout << L"ValueArrayOf tests failed" << XERCES_STD_QUALIFIER endl; retVal++; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; // ------------------------------------------------------------------- // Test the ValueStackOf template class // ------------------------------------------------------------------- if (!testValueStack()) { XERCES_STD_QUALIFIER wcout << L"ValueStackOf tests failed" << XERCES_STD_QUALIFIER endl; retVal++; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; // ------------------------------------------------------------------- // Test the RefArrayOf template class // ------------------------------------------------------------------- if (!testRefArray()) { XERCES_STD_QUALIFIER wcout << L"RefArrayOf tests failed" << XERCES_STD_QUALIFIER endl; retVal++; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; // ------------------------------------------------------------------- // Test the RefStackOf template class // ------------------------------------------------------------------- if (!testRefStack()) { XERCES_STD_QUALIFIER wcout << L"RefStackOf tests failed" << XERCES_STD_QUALIFIER endl; retVal++; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; // ------------------------------------------------------------------- // Test the RefVectorOf template class // ------------------------------------------------------------------- if (!testRefVector()) { XERCES_STD_QUALIFIER wcout << L"RefVectorOf tests failed" << XERCES_STD_QUALIFIER endl; retVal++; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; // ------------------------------------------------------------------- // Test the RefHashtableOf template class // ------------------------------------------------------------------- if (!testRefHashTable()) { XERCES_STD_QUALIFIER wcout << L"RefHashTableOf tests failed" << XERCES_STD_QUALIFIER endl; retVal++; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; // ------------------------------------------------------------------- // Test the BitSet class // ------------------------------------------------------------------- if (!testBitSet()) { XERCES_STD_QUALIFIER wcout << L"BitSet tests failed" << XERCES_STD_QUALIFIER endl; retVal++; } XERCES_STD_QUALIFIER wcout << XERCES_STD_QUALIFIER endl; } catch(const XMLException& toCatch) { XERCES_STD_QUALIFIER wcout << L"Exception During Test!\n INFO: (" << toCatch.getSrcFile() << L"." << toCatch.getSrcLine() << L") -" << toCatch.getMessage() << XERCES_STD_QUALIFIER endl; return 0xFFFF; } // If we failed any tests, display a message XERCES_STD_QUALIFIER wcout << L"--------------------------------\n"; if (retVal == 0) XERCES_STD_QUALIFIER wcout << L"<>: All tests passed\n"; else XERCES_STD_QUALIFIER wcout << L"<>: Some tests failed\n"; XERCES_STD_QUALIFIER wcout << L"--------------------------------\n" << XERCES_STD_QUALIFIER endl; return retVal; } xerces-c-3.1.1/tests/src/DOM/0000755000175000017500000000000011363617312014616 5ustar borisborisxerces-c-3.1.1/tests/src/DOM/DOMMemTest/0000755000175000017500000000000011363617312016534 5ustar borisborisxerces-c-3.1.1/tests/src/DOM/DOMMemTest/DOMMemTest.cpp0000644000175000017500000015070711037122704021162 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // // Various DOM tests. // This is NOT a complete test of DOM functionality. // /* * $Id: DOMMemTest.cpp 676911 2008-07-15 13:27:32Z amassari $ */ #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_USE bool errorOccurred = false; #define UNUSED(x) { if(x!=0){} } #define TASSERT(c) tassert((c), __FILE__, __LINE__) void tassert(bool c, const char *file, int line) { if (!c) { printf("Failure. Line %d, file %s\n", line, file); errorOccurred = true; } }; #define EXCEPTION_TEST(operation, expected_exception) \ { \ try { \ operation; \ printf(" Error: no exception thrown at line %d\n", __LINE__); \ errorOccurred = true; \ } \ catch (DOMException &e) { \ if (e.code != expected_exception) { \ printf(" Wrong exception code: %d at line %d\n", e.code, __LINE__); \ errorOccurred = true; \ } \ } \ catch (...) { \ printf(" Wrong exception thrown at line %d\n", __LINE__); \ errorOccurred = true; \ } \ } // --------------------------------------------------------------------------- // This is a simple class that lets us do easy (though not terribly efficient) // trancoding of char* data to XMLCh data. // --------------------------------------------------------------------------- class XStr { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- XStr(const char* const toTranscode) { // Call the private transcoding method fUnicodeForm = XMLString::transcode(toTranscode); } ~XStr() { XMLString::release(&fUnicodeForm); } // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const XMLCh* unicodeForm() const { return fUnicodeForm; } private : // ----------------------------------------------------------------------- // Private data members // // fUnicodeForm // This is the Unicode XMLCh format of the string. // ----------------------------------------------------------------------- XMLCh* fUnicodeForm; }; #define X(str) XStr(str).unicodeForm() //--------------------------------------------------------------------------------------- // // DOMBasicTests Basic DOM Level 1 tests // //--------------------------------------------------------------------------------------- void DOMBasicTests() { // // Test Doc01 Create a new empty document // { // First precondition, so that lazily created strings do not appear // as memory leaks. DOMDocument* doc; doc = DOMImplementationRegistry::getDOMImplementation(X("Core"))->createDocument(); doc->release(); } // // Test Doc02 Create one of each kind of node using the // document createXXX methods. // Watch for memory leaks. // { // Do all operations in a preconditioning step, to force the // creation of implementation objects that are set up on first use. // Don't watch for leaks in this block (no / ) DOMDocument* doc = DOMImplementationRegistry::getDOMImplementation(X("Core"))->createDocument(); DOMElement* el = doc->createElement(X("Doc02Element")); UNUSED(el); // silence warning DOMDocumentFragment* frag = doc->createDocumentFragment (); UNUSED(frag); // silence warning DOMText* text = doc->createTextNode(X("Doc02TextNode")); UNUSED(text); // silence warning DOMComment* comment = doc->createComment(X("Doc02Comment")); UNUSED(comment); // silence warning DOMCDATASection* cdataSec = doc->createCDATASection(X("Doc02CDataSection")); UNUSED(cdataSec); // silence warning DOMDocumentType* docType = doc->createDocumentType(X("Doc02DocumentType")); UNUSED(docType); // silence warning DOMNotation* notation = doc->createNotation(X("Doc02Notation")); UNUSED(notation); // silence warning DOMProcessingInstruction* pi = doc->createProcessingInstruction(X("Doc02PITarget"), X("Doc02PIData")); UNUSED(pi); // silence warning DOMNodeList* nodeList = doc->getElementsByTagName(X("*")); UNUSED(nodeList); // silence warning doc->release(); } // // Doc03 - Create a small document tree // { DOMDocument* doc = DOMImplementationRegistry::getDOMImplementation(X("Core"))->createDocument(); DOMElement* rootEl = doc->createElement(X("Doc03RootElement")); doc->appendChild(rootEl); DOMText* textNode = doc->createTextNode(X("Doc03 text stuff")); rootEl->appendChild(textNode); DOMNodeList* nodeList = doc->getElementsByTagName(X("*")); UNUSED(nodeList); // silence warning doc->release(); }; // // Attr01 // { DOMDocument* doc = DOMImplementationRegistry::getDOMImplementation(X("Core"))->createDocument(); DOMElement* rootEl = doc->createElement(X("RootElement")); doc->appendChild(rootEl); { DOMAttr* attr01 = doc->createAttribute(X("Attr01")); DOMNode* rem = rootEl->setAttributeNode(attr01); if (rem) rem->release(); } { DOMAttr* attr02 = doc->createAttribute(X("Attr01")); DOMNode* rem = rootEl->setAttributeNode(attr02); if (rem) rem->release(); } doc->release(); }; // // Attr02 // { DOMDocument* doc = DOMImplementationRegistry::getDOMImplementation(X("Core"))->createDocument(); DOMElement* rootEl = doc->createElement(X("RootElement")); doc->appendChild(rootEl); DOMAttr* attr01 = doc->createAttribute(X("Attr02")); DOMNode* rem = rootEl->setAttributeNode(attr01); if (rem) rem->release(); DOMAttr* attr02 = doc->createAttribute(X("Attr02")); rem = rootEl->setAttributeNode(attr02); if (rem) rem->release(); doc->release(); } // // Attr03 // { DOMDocument* doc = DOMImplementationRegistry::getDOMImplementation(X("Core"))->createDocument(); DOMElement* rootEl = doc->createElement(X("RootElement")); doc->appendChild(rootEl); DOMAttr* attr01 = doc->createAttribute(X("Attr03")); DOMNode* rem = rootEl->setAttributeNode(attr01); if (rem) rem->release(); attr01->setValue(X("Attr03Value1")); attr01->setValue(X("Attr03Value2")); doc->release(); } // // Attr04 // { DOMDocument* doc = DOMImplementationRegistry::getDOMImplementation(X("Core"))->createDocument(); DOMElement* rootEl = doc->createElement(X("RootElement")); doc->appendChild(rootEl); DOMAttr* attr01 = doc->createAttribute(X("Attr04")); DOMNode* rem = rootEl->setAttributeNode(attr01); if (rem) rem->release(); attr01->setValue(X("Attr04Value1")); DOMNode* value = attr01->getFirstChild(); UNUSED(value); // silence warning doc->release(); } // // Text01 // { DOMDocument* doc = DOMImplementationRegistry::getDOMImplementation(X("Core"))->createDocument(); DOMElement* rootEl = doc->createElement(X("RootElement")); doc->appendChild(rootEl); DOMText* txt1 = doc->createTextNode(X("Hello Goodbye")); rootEl->appendChild(txt1); txt1->splitText(6); rootEl->normalize(); doc->release(); } // // Notation01 // { DOMDocument* doc = DOMImplementationRegistry::getDOMImplementation(X("Core"))->createDocument(); DOMDocumentType* dt = doc->createDocumentType(X("DocType_for_Notation01")); doc->appendChild(dt); DOMNamedNodeMap* notationMap = dt->getNotations(); DOMNotation* nt1 = doc->createNotation(X("Notation01")); DOMNode* rem = notationMap->setNamedItem (nt1); if (rem) rem->release(); DOMNode* abc1 = notationMap->getNamedItem(X("Notation01")); DOMNotation* nt2 = (DOMNotation*) abc1; TASSERT(nt1==nt2); nt2 = 0; nt1 = 0; DOMNode* abc6 = notationMap->getNamedItem(X("Notation01")); nt2 = (DOMNotation*) abc6; doc->release(); } // // NamedNodeMap01 - comparison operators. // { DOMNamedNodeMap* nnm = 0; TASSERT(nnm == 0); DOMDocument* doc = DOMImplementationRegistry::getDOMImplementation(X("Core"))->createDocument(); nnm = doc->getAttributes(); // Should be null, because node type // is not Element. TASSERT(nnm == 0); TASSERT(!(nnm != 0)); DOMElement* el = doc->createElement(X("NamedNodeMap01")); DOMNamedNodeMap* nnm2 = el->getAttributes(); // Should be an empty, but non-null map. TASSERT(nnm2 != 0); TASSERT(nnm != nnm2); nnm = nnm2; TASSERT(nnm == nnm2); doc->release(); } // // importNode quick test // { DOMDocument* doc1 = DOMImplementationRegistry::getDOMImplementation(X("Core"))->createDocument(); DOMDocument* doc2 = DOMImplementationRegistry::getDOMImplementation(X("Core"))->createDocument(); DOMElement* el1 = doc1->createElement(X("abc")); doc1->appendChild(el1); TASSERT(el1->getParentNode() != 0); DOMNode* el2 = doc2->importNode(el1, true); TASSERT(el2->getParentNode() == 0); const XMLCh* tagName = el2->getNodeName(); TASSERT(!XMLString::compareString(tagName, X("abc"))); TASSERT(el2->getOwnerDocument() == doc2); TASSERT(doc1 != doc2); doc1->release(); doc2->release(); } // // getLength() tests. Both Node CharacterData and NodeList implement // getLength(). Early versions of the DOM had a clash // between the two, originating in the implementation class // hirearchy, which has NodeList as a (distant) base class // of CharacterData. This is a regression test to verify // that the problem stays fixed. // { DOMDocument* doc = DOMImplementationRegistry::getDOMImplementation(X("Core"))->createDocument(); DOMText* tx = doc->createTextNode(X("Hello")); DOMElement* el = doc->createElement(X("abc")); el->appendChild(tx); XMLSize_t textLength = tx->getLength(); TASSERT(textLength == 5); DOMNodeList* nl = tx->getChildNodes(); XMLSize_t nodeListLen = nl->getLength(); TASSERT(nodeListLen == 0); nl = el->getChildNodes(); nodeListLen = nl->getLength(); TASSERT(nodeListLen == 1); doc->release(); } // // NodeList - comparison operators, basic operation. // { DOMNodeList* nl = 0; DOMNodeList* nl2 = 0; TASSERT(nl == 0); TASSERT(!(nl != 0)); TASSERT(nl == nl2); DOMDocument* doc = DOMImplementationRegistry::getDOMImplementation(X("Core"))->createDocument(); nl = doc->getChildNodes(); // Should be non-null, but empty TASSERT(nl != 0); XMLSize_t len = nl->getLength(); TASSERT(len == 0); DOMElement* el = doc->createElement(X("NodeList01")); doc->appendChild(el); len = nl->getLength(); TASSERT(len == 1); TASSERT(nl != nl2); nl2 = nl; TASSERT(nl == nl2); doc->release(); } // // Name validity checking. // { DOMDocument* doc = DOMImplementationRegistry::getDOMImplementation(X("Core"))->createDocument(); try { DOMElement* el = doc->createElement(X("!@@ bad element name")); UNUSED(el); // silence warning TASSERT(false); // Exception above should prevent us reaching here. } catch ( DOMException e) { TASSERT(e.code == DOMException::INVALID_CHARACTER_ERR); } catch (...) { TASSERT(false); // Wrong exception thrown. } doc->release(); } // // Assignment ops return value // { DOMDocument* doc = DOMImplementationRegistry::getDOMImplementation(X("Core"))->createDocument(); DOMElement* el = doc->createElement(X("NodeList01")); doc->appendChild(el); DOMElement* n1, *n2, *n3; n1 = n2 = n3 = el; TASSERT(n1 == n2); TASSERT(n1 == n3); TASSERT(n1 == el); TASSERT(n1 != 0); n1 = n2 = n3 = 0; TASSERT(n1 == 0); doc->release(); } // // Cloning of a node with attributes. Regression test for a ref counting // bug in attributes of cloned nodes that occured when the "owned" flag // was not set in the clone. // { DOMDocument* doc = DOMImplementationRegistry::getDOMImplementation(X("Core"))->createDocument(); DOMElement* root = doc->createElement(X("CTestRoot")); root->setAttribute(X("CTestAttr"), X("CTestAttrValue")); const XMLCh* s = root->getAttribute(X("CTestAttr")); TASSERT(!XMLString::compareString(s, X("CTestAttrValue"))); DOMNode* abc2 = root->cloneNode(true); DOMElement* cloned = (DOMElement*) abc2; DOMAttr* a = cloned->getAttributeNode(X("CTestAttr")); TASSERT(a != 0); s = a->getValue(); TASSERT(!XMLString::compareString(s, X("CTestAttrValue"))); a = 0; a = cloned->getAttributeNode(X("CTestAttr")); TASSERT(a != 0); s = a->getValue(); TASSERT(!XMLString::compareString(s, X("CTestAttrValue"))); doc->release(); } // // splitText() // Regression test for a bug from Tinny Ng // { DOMDocument* doc; doc = DOMImplementationRegistry::getDOMImplementation(X("Core"))->createDocument(); DOMText* tn, *tn1, *tn2; tn = doc->createTextNode (X("0123456789")); tn1 = tn->splitText(5); TASSERT(!XMLString::compareString(tn->getNodeValue(), X("01234"))); TASSERT(!XMLString::compareString(tn1->getNodeValue(), X("56789"))); tn2 = tn->splitText(5); TASSERT(!XMLString::compareString(tn->getNodeValue(), X("01234"))); TASSERT(!XMLString::compareString(tn2->getNodeValue(), XMLUni::fgZeroLenString)); EXCEPTION_TEST(tn->splitText(6), DOMException::INDEX_SIZE_ERR); doc->release(); } } //--------------------------------------------------------------------------------------- // // DOMNSTests DOM Name Space tests // //--------------------------------------------------------------------------------------- void DOMNSTests() { // // DOM Level 2 tests. These should be split out as a separate test. // // // hasFeature. The set of supported options tested here is for Xerces 1.1 // Note: because the implementation lazily creates some of the comprison // strings within the implementation, this test must be pre-flighted // outside of the TESPROLOG/ macros to avoid spurious // reports of memory leaks. // // Also test the case-insensitive // { DOMImplementation* impl = DOMImplementationRegistry::getDOMImplementation(X("Core")); TASSERT(impl->hasFeature(X("XmL"), X("2.0")) == true); TASSERT(impl->hasFeature(X("xML"), 0) == true); TASSERT(impl->hasFeature(X("xML"), XMLUni::fgZeroLenString) == true); TASSERT(impl->hasFeature(X("XMl"), X("1.0")) == true); TASSERT(impl->hasFeature(X("xMl"), X("3.0")) == false); TASSERT(impl->hasFeature(X("TrAveRsal"), 0) == true); TASSERT(impl->hasFeature(X("TrAveRsal"), XMLUni::fgZeroLenString) == true); } { DOMImplementation* impl = DOMImplementationRegistry::getDOMImplementation(X("Core")); TASSERT(impl->hasFeature(X("XmL"), 0) == true); TASSERT(impl->hasFeature(X("XmL"), X("1.0")) == true); TASSERT(impl->hasFeature(X("XmL"), X("2.0")) == true); TASSERT(impl->hasFeature(X("XmL"), X("3.0")) == false); TASSERT(impl->hasFeature(X("Core"), 0) == true); TASSERT(impl->hasFeature(X("coRe"), X("1.0")) == true); TASSERT(impl->hasFeature(X("core"), X("2.0")) == true); TASSERT(impl->hasFeature(X("cORe"), X("3.0")) == true); TASSERT(impl->hasFeature(X("cORe"), X("4.0")) == false); TASSERT(impl->hasFeature(X("Traversal"), XMLUni::fgZeroLenString) == true); TASSERT(impl->hasFeature(X("traversal"), X("1.0")) == false); TASSERT(impl->hasFeature(X("TraVersal"), X("2.0")) == true); TASSERT(impl->hasFeature(X("Range"), 0) == true); TASSERT(impl->hasFeature(X("raNge"), X("1.0")) == false); TASSERT(impl->hasFeature(X("RaNge"), X("2.0")) == true); TASSERT(impl->hasFeature(X("HTML"), 0) == false); TASSERT(impl->hasFeature(X("Views"), XMLUni::fgZeroLenString) == false); TASSERT(impl->hasFeature(X("StyleSheets"), 0) == false); TASSERT(impl->hasFeature(X("CSS"), XMLUni::fgZeroLenString) == false); TASSERT(impl->hasFeature(X("CSS2"), 0) == false); TASSERT(impl->hasFeature(X("Events"), 0) == false); TASSERT(impl->hasFeature(X("UIEvents"), 0) == false); TASSERT(impl->hasFeature(X("MouseEvents"), 0) == false); TASSERT(impl->hasFeature(X("MutationEvents"), 0) == false); TASSERT(impl->hasFeature(X("HTMLEvents"), 0) == false); } // // isSupported test (similar to hasFeature) // { DOMDocument* doc; doc = DOMImplementationRegistry::getDOMImplementation(X("Core"))->createDocument(); TASSERT(doc->isSupported(X("XmL"), 0) == true); TASSERT(doc->isSupported(X("XmL"), X("1.0")) == true); TASSERT(doc->isSupported(X("XmL"), X("2.0")) == true); TASSERT(doc->isSupported(X("XmL"), X("3.0")) == false); TASSERT(doc->isSupported(X("Core"), 0) == true); TASSERT(doc->isSupported(X("Core"), XMLUni::fgZeroLenString) == true); TASSERT(doc->isSupported(X("coRe"), X("1.0")) == true); TASSERT(doc->isSupported(X("core"), X("2.0")) == true); TASSERT(doc->isSupported(X("cORe"), X("3.0")) == true); TASSERT(doc->isSupported(X("cORe"), X("4.0")) == false); TASSERT(doc->isSupported(X("Traversal"), 0) == true); TASSERT(doc->isSupported(X("traversal"), X("1.0")) == false); TASSERT(doc->isSupported(X("TraVersal"), X("2.0")) == true); TASSERT(doc->isSupported(X("Range"), XMLUni::fgZeroLenString) == true); TASSERT(doc->isSupported(X("raNge"), X("1.0")) == false); TASSERT(doc->isSupported(X("RaNge"), X("2.0")) == true); TASSERT(doc->isSupported(X("HTML"), 0) == false); TASSERT(doc->isSupported(X("Views"), 0) == false); TASSERT(doc->isSupported(X("StyleSheets"), 0) == false); TASSERT(doc->isSupported(X("CSS"), 0) == false); TASSERT(doc->isSupported(X("CSS2"), XMLUni::fgZeroLenString) == false); TASSERT(doc->isSupported(X("Events"), 0) == false); TASSERT(doc->isSupported(X("UIEvents"), 0) == false); TASSERT(doc->isSupported(X("MouseEvents"), 0) == false); TASSERT(doc->isSupported(X("MutationEvents"), XMLUni::fgZeroLenString) == false); TASSERT(doc->isSupported(X("HTMLEvents"), 0) == false); doc->release(); } // // CreateDocumentType // { DOMImplementation* impl = DOMImplementationRegistry::getDOMImplementation(X("Core")); DOMDocumentType* dt = impl->createDocumentType(X("foo:docName"), X("pubId"), X("http://sysId")); TASSERT(dt != 0); TASSERT(dt->getNodeType() == DOMNode::DOCUMENT_TYPE_NODE); TASSERT(!XMLString::compareString(dt->getNodeName(), X("foo:docName"))); TASSERT(dt->getNamespaceURI() == 0); TASSERT(dt->getPrefix() == 0); TASSERT(dt->getLocalName() == 0); TASSERT(!XMLString::compareString(dt->getPublicId(), X("pubId"))); TASSERT(!XMLString::compareString(dt->getSystemId(), X("http://sysId"))); TASSERT(dt->getInternalSubset() == 0); TASSERT(dt->getOwnerDocument() == 0); DOMNamedNodeMap* nnm = dt->getEntities(); TASSERT(nnm->getLength() == 0); nnm = dt->getNotations(); TASSERT(nnm->getLength() == 0); // release the documentType (dt) which is an orphaned node (does not have the owner) dt->release(); // // Qualified name without prefix should also work. // dt = impl->createDocumentType(X("docName"), X("pubId"), X("http://sysId")); TASSERT(dt != 0); TASSERT(dt->getNodeType() == DOMNode::DOCUMENT_TYPE_NODE); TASSERT(!XMLString::compareString(dt->getNodeName(), X("docName"))); TASSERT(dt->getNamespaceURI() == 0); TASSERT(dt->getPrefix() == 0); TASSERT(dt->getLocalName() == 0); TASSERT(!XMLString::compareString(dt->getPublicId(), X("pubId"))); TASSERT(!XMLString::compareString(dt->getSystemId(), X("http://sysId"))); TASSERT(dt->getInternalSubset() == 0); TASSERT(dt->getOwnerDocument() == 0); // Creating a DocumentType with invalid or malformed qName should fail. EXCEPTION_TEST(impl->createDocumentType(X("createDocumentType(X(":docName"), X("pubId"), X("http://sysId")), DOMException::NAMESPACE_ERR); EXCEPTION_TEST(impl->createDocumentType(X("docName:"), X("pubId"), X("http://sysId")), DOMException::NAMESPACE_ERR); EXCEPTION_TEST(impl->createDocumentType(X("doc::Name"), X("pubId"), X("http://sysId")), DOMException::NAMESPACE_ERR); EXCEPTION_TEST(impl->createDocumentType(X("doc:N:ame"), X("pubId"), X("http://sysId")), DOMException::NAMESPACE_ERR); // release the documentType (dt) which is an orphaned node (does not have the owner) dt->release(); } // // DOMImplementation::CreateDocument { DOMImplementation* impl = DOMImplementationRegistry::getDOMImplementation(X("Core")); DOMDocumentType* dt = 0; DOMDocument* doc = impl->createDocument(XMLUni::fgZeroLenString, X("a"), dt); doc->getNodeName(); doc->release(); } // { DOMImplementation* impl = DOMImplementationRegistry::getDOMImplementation(X("Core")); DOMDocumentType* dt = impl->createDocumentType(X("foo:docName"), X("pubId"), X("http://sysId")); DOMDocument* doc = impl->createDocument(X("http://document.namespace"), X("foo:docName"), dt); TASSERT(dt->getOwnerDocument() == doc); TASSERT(doc->getOwnerDocument() == 0); TASSERT(doc->getNodeType() == DOMNode::DOCUMENT_NODE); TASSERT(doc->getDoctype() == dt); TASSERT(!XMLString::compareString(doc->getNodeName(), X("#document"))); TASSERT(doc->getNodeValue() == 0); TASSERT(doc->getNamespaceURI() == 0); TASSERT(doc->getPrefix() == 0); TASSERT(doc->getLocalName() == 0); DOMElement* el = doc->getDocumentElement(); TASSERT(!XMLString::compareString(el->getLocalName(), X("docName"))); TASSERT(!XMLString::compareString(el->getNamespaceURI(), X("http://document.namespace"))); TASSERT(!XMLString::compareString(el->getNodeName(), X("foo:docName"))); TASSERT(el->getOwnerDocument() == doc); TASSERT(el->getParentNode() == doc); TASSERT(!XMLString::compareString(el->getPrefix(), X("foo"))); TASSERT(!XMLString::compareString(el->getTagName(), X("foo:docName"))); TASSERT(el->hasChildNodes() == false); // // Creating a second document with the same docType object should fail. // try { DOMDocument* doc2 = impl->createDocument(X("pubId"), X("foo:docName"), dt); UNUSED(doc2); // silence warning TASSERT(false); // should not reach here. } catch ( DOMException &e) { TASSERT(e.code == DOMException::WRONG_DOCUMENT_ERR); } catch (...) { TASSERT(false); // Wrong exception thrown. } // release the document, the documentType (dt) still has the owner, and thus no need to release doc->release(); // Creating a document with null NamespaceURI and DocumentType doc = impl->createDocument(X("pubId"), X("foo:docName"), 0); doc->release(); // Namespace tests of createDocument are covered by createElementNS below } // // CreateElementNS methods // { // Set up an initial (root element only) document. // DOMImplementation* impl = DOMImplementationRegistry::getDOMImplementation(X("Core")); DOMDocumentType* dt = impl->createDocumentType(X("foo:docName"), X("pubId"), X("http://sysId")); DOMDocument* doc = impl->createDocument(X("http://document.namespace"), X("foo:docName"), dt); DOMElement* rootEl = doc->getDocumentElement(); // // CreateElementNS // DOMElement* ela = doc->createElementNS(X("http://nsa"), X("a:ela")); // prefix and URI TASSERT(!XMLString::compareString(ela->getNodeName(), X("a:ela"))); TASSERT(!XMLString::compareString(ela->getNamespaceURI(), X("http://nsa"))); TASSERT(!XMLString::compareString(ela->getPrefix(), X("a"))); TASSERT(!XMLString::compareString(ela->getLocalName(), X("ela"))); TASSERT(!XMLString::compareString(ela->getTagName(), X("a:ela"))); DOMElement* elb = doc->createElementNS(X("http://nsb"), X("elb")); // URI, no prefix. TASSERT(!XMLString::compareString(elb->getNodeName(), X("elb"))); TASSERT(!XMLString::compareString(elb->getNamespaceURI(), X("http://nsb"))); TASSERT(!XMLString::compareString(elb->getPrefix(), XMLUni::fgZeroLenString)); TASSERT(!XMLString::compareString(elb->getLocalName(), X("elb"))); TASSERT(!XMLString::compareString(elb->getTagName(), X("elb"))); DOMElement* elc = doc->createElementNS(XMLUni::fgZeroLenString, X("elc")); // No URI, no prefix. TASSERT(!XMLString::compareString(elc->getNodeName(), X("elc"))); TASSERT(!XMLString::compareString(elc->getNamespaceURI(), XMLUni::fgZeroLenString)); TASSERT(!XMLString::compareString(elc->getPrefix(), XMLUni::fgZeroLenString)); TASSERT(!XMLString::compareString(elc->getLocalName(), X("elc"))); TASSERT(!XMLString::compareString(elc->getTagName(), X("elc"))); rootEl->appendChild(ela); rootEl->appendChild(elb); rootEl->appendChild(elc); // Badly formed qualified name EXCEPTION_TEST(doc->createElementNS(X("http://nsa"), X("createElementNS(X("http://nsa"), X(":a")), DOMException::NAMESPACE_ERR); EXCEPTION_TEST(doc->createElementNS(X("http://nsa"), X("a:")), DOMException::NAMESPACE_ERR); EXCEPTION_TEST(doc->createElementNS(X("http://nsa"), X("a::a")), DOMException::NAMESPACE_ERR); EXCEPTION_TEST(doc->createElementNS(X("http://nsa"), X("a:a:a")), DOMException::NAMESPACE_ERR); // xml:a must have namespaceURI == "http://www.w3.org/XML/1998/namespace" TASSERT(!XMLString::compareString(doc->createElementNS(X("http://www.w3.org/XML/1998/namespace"), X("xml:a"))->getNamespaceURI(), X("http://www.w3.org/XML/1998/namespace"))); EXCEPTION_TEST(doc->createElementNS(X("http://nsa"), X("xml:a")), DOMException::NAMESPACE_ERR); EXCEPTION_TEST(doc->createElementNS(XMLUni::fgZeroLenString, X("xml:a")), DOMException::NAMESPACE_ERR); EXCEPTION_TEST(doc->createElementNS(0, X("xml:a")), DOMException::NAMESPACE_ERR); //unlike Attribute, xmlns (no different from foo) can have any namespaceURI for Element TASSERT(!XMLString::compareString(doc->createElementNS(X("http://nsa"), X("xmlns"))->getNamespaceURI(), X("http://nsa"))); TASSERT(!XMLString::compareString(doc->createElementNS(X("http://www.w3.org/XML/1998/namespace"), X("xmlns"))->getNamespaceURI(), X("http://www.w3.org/XML/1998/namespace"))); TASSERT(!XMLString::compareString(doc->createElementNS(XMLUni::fgZeroLenString, X("xmlns"))->getNamespaceURI(), XMLUni::fgZeroLenString)); TASSERT(!XMLString::compareString(doc->createElementNS(0, X("xmlns"))->getNamespaceURI(), XMLUni::fgZeroLenString)); //unlike Attribute, xmlns:a (no different from foo:a) can have any namespaceURI for Element //except "" and null TASSERT(!XMLString::compareString(doc->createElementNS(X("http://nsa"), X("xmlns:a"))->getNamespaceURI(), X("http://nsa"))); TASSERT(!XMLString::compareString(doc->createElementNS(X("http://www.w3.org/XML/1998/namespace"), X("xmlns:a"))->getNamespaceURI(), X("http://www.w3.org/XML/1998/namespace"))); EXCEPTION_TEST(doc->createElementNS(XMLUni::fgZeroLenString, X("xmlns:a")), DOMException::NAMESPACE_ERR); EXCEPTION_TEST(doc->createElementNS(0, X("xmlns:a")), DOMException::NAMESPACE_ERR); //In fact, any prefix != null should have a namespaceURI != 0 or != "" TASSERT(!XMLString::compareString(doc->createElementNS(X("http://nsa"), X("foo:a"))->getNamespaceURI(), X("http://nsa"))); EXCEPTION_TEST(doc->createElementNS(XMLUni::fgZeroLenString, X("foo:a")), DOMException::NAMESPACE_ERR); EXCEPTION_TEST(doc->createElementNS(0, X("foo:a")), DOMException::NAMESPACE_ERR); //Change prefix DOMElement* elem = doc->createElementNS(X("http://nsa"), X("foo:a")); elem->setPrefix(X("bar")); TASSERT(!XMLString::compareString(elem->getNodeName(), X("bar:a"))); TASSERT(!XMLString::compareString(elem->getNamespaceURI(), X("http://nsa"))); TASSERT(!XMLString::compareString(elem->getPrefix(), X("bar"))); TASSERT(!XMLString::compareString(elem->getLocalName(), X("a"))); TASSERT(!XMLString::compareString(elem->getTagName(), X("bar:a"))); //The spec does not prevent us from setting prefix to a node without prefix elem = doc->createElementNS(X("http://nsa"), X("a")); TASSERT(!XMLString::compareString(elem->getPrefix(), XMLUni::fgZeroLenString)); elem->setPrefix(X("bar")); TASSERT(!XMLString::compareString(elem->getNodeName(), X("bar:a"))); TASSERT(!XMLString::compareString(elem->getNamespaceURI(), X("http://nsa"))); TASSERT(!XMLString::compareString(elem->getPrefix(), X("bar"))); TASSERT(!XMLString::compareString(elem->getLocalName(), X("a"))); TASSERT(!XMLString::compareString(elem->getTagName(), X("bar:a"))); //Special case for xml:a where namespaceURI must be xmlURI elem = doc->createElementNS(X("http://www.w3.org/XML/1998/namespace"), X("foo:a")); elem->setPrefix(X("xml")); elem = doc->createElementNS(X("http://nsa"), X("foo:a")); EXCEPTION_TEST(elem->setPrefix(X("xml")), DOMException::NAMESPACE_ERR); //However, there is no restriction on prefix xmlns elem->setPrefix(X("xmlns")); //Also an element can not have a prefix with namespaceURI == null or "" elem = doc->createElementNS(0, X("a")); EXCEPTION_TEST(elem->setPrefix(X("foo")), DOMException::NAMESPACE_ERR); elem = doc->createElementNS(XMLUni::fgZeroLenString, X("a")); EXCEPTION_TEST(elem->setPrefix(X("foo")), DOMException::NAMESPACE_ERR); //Only prefix of Element and Attribute can be changed EXCEPTION_TEST(doc->setPrefix(X("foo")), DOMException::NAMESPACE_ERR); //Prefix of readonly Element can not be changed. //However, there is no way to create such DOMElement* for testing yet. // release the document, the documentType (dt) still has the owner, and thus no need to release doc->release(); } // // CreateAttributeNS methods // { // Set up an initial (root element only) document. // DOMImplementation* impl = DOMImplementationRegistry::getDOMImplementation(X("Core")); DOMDocumentType* dt = impl->createDocumentType(X("foo:docName"), X("pubId"), X("http://sysId")); DOMDocument* doc = impl->createDocument(X("http://document.namespace"), X("foo:docName"), dt); DOMElement* rootEl = doc->getDocumentElement(); UNUSED(rootEl); // silence warning // // CreateAttributeNS // DOMAttr* attra = doc->createAttributeNS(X("http://nsa"), X("a:attra")); // prefix and URI TASSERT(!XMLString::compareString(attra->getNodeName(), X("a:attra"))); TASSERT(!XMLString::compareString(attra->getNamespaceURI(), X("http://nsa"))); TASSERT(!XMLString::compareString(attra->getPrefix(), X("a"))); TASSERT(!XMLString::compareString(attra->getLocalName(), X("attra"))); TASSERT(!XMLString::compareString(attra->getName(), X("a:attra"))); TASSERT(attra->getOwnerElement() == 0); DOMAttr* attrb = doc->createAttributeNS(X("http://nsb"), X("attrb")); // URI, no prefix. TASSERT(!XMLString::compareString(attrb->getNodeName(), X("attrb"))); TASSERT(!XMLString::compareString(attrb->getNamespaceURI(), X("http://nsb"))); TASSERT(!XMLString::compareString(attrb->getPrefix(), XMLUni::fgZeroLenString)); TASSERT(!XMLString::compareString(attrb->getLocalName(), X("attrb"))); TASSERT(!XMLString::compareString(attrb->getName(), X("attrb"))); TASSERT(attrb->getOwnerElement() == 0); DOMAttr* attrc = doc->createAttributeNS(XMLUni::fgZeroLenString, X("attrc")); TASSERT(!XMLString::compareString(attrc->getNodeName(), X("attrc"))); TASSERT(!XMLString::compareString(attrc->getNamespaceURI(), XMLUni::fgZeroLenString)); TASSERT(!XMLString::compareString(attrc->getPrefix(), XMLUni::fgZeroLenString)); TASSERT(!XMLString::compareString(attrc->getLocalName(), X("attrc"))); TASSERT(!XMLString::compareString(attrc->getName(), X("attrc"))); TASSERT(attrc->getOwnerElement() == 0); // Badly formed qualified name EXCEPTION_TEST(doc->createAttributeNS(X("http://nsa"), X("createAttributeNS(X("http://nsa"), X(":a")), DOMException::NAMESPACE_ERR); EXCEPTION_TEST(doc->createAttributeNS(X("http://nsa"), X("a:")), DOMException::NAMESPACE_ERR); EXCEPTION_TEST(doc->createAttributeNS(X("http://nsa"), X("a::a")), DOMException::NAMESPACE_ERR); EXCEPTION_TEST(doc->createAttributeNS(X("http://nsa"), X("a:a:a")), DOMException::NAMESPACE_ERR); // xml:a must have namespaceURI == "http://www.w3.org/XML/1998/namespace" TASSERT(!XMLString::compareString(doc->createAttributeNS(X("http://www.w3.org/XML/1998/namespace"), X("xml:a"))->getNamespaceURI(), X("http://www.w3.org/XML/1998/namespace"))); EXCEPTION_TEST(doc->createAttributeNS(X("http://nsa"), X("xml:a")), DOMException::NAMESPACE_ERR); EXCEPTION_TEST(doc->createAttributeNS(XMLUni::fgZeroLenString, X("xml:a")), DOMException::NAMESPACE_ERR); EXCEPTION_TEST(doc->createAttributeNS(0, X("xml:a")), DOMException::NAMESPACE_ERR); //unlike Element, xmlns must have namespaceURI == "http://www.w3.org/2000/xmlns/" TASSERT(!XMLString::compareString(doc->createAttributeNS(X("http://www.w3.org/2000/xmlns/"), X("xmlns"))->getNamespaceURI(), X("http://www.w3.org/2000/xmlns/"))); EXCEPTION_TEST(doc->createAttributeNS(X("http://nsa"), X("xmlns")), DOMException::NAMESPACE_ERR); EXCEPTION_TEST(doc->createAttributeNS(X("http://www.w3.org/XML/1998/namespace"), X("xmlns")), DOMException::NAMESPACE_ERR); EXCEPTION_TEST(doc->createAttributeNS(XMLUni::fgZeroLenString, X("xmlns")), DOMException::NAMESPACE_ERR); EXCEPTION_TEST(doc->createAttributeNS(0, X("xmlns")), DOMException::NAMESPACE_ERR); //unlike Element, xmlns:a must have namespaceURI == "http://www.w3.org/2000/xmlns/" TASSERT(!XMLString::compareString(doc->createAttributeNS(X("http://www.w3.org/2000/xmlns/"), X("xmlns:a"))->getNamespaceURI(), X("http://www.w3.org/2000/xmlns/"))); EXCEPTION_TEST(doc->createAttributeNS(X("http://nsa"), X("xmlns:a")), DOMException::NAMESPACE_ERR); EXCEPTION_TEST(doc->createAttributeNS(X("http://www.w3.org/XML/1998/namespace"), X("xmlns:a")), DOMException::NAMESPACE_ERR); EXCEPTION_TEST(doc->createAttributeNS(XMLUni::fgZeroLenString, X("xmlns:a")), DOMException::NAMESPACE_ERR); EXCEPTION_TEST(doc->createAttributeNS(0, X("xmlns:a")), DOMException::NAMESPACE_ERR); //In fact, any prefix != null should have a namespaceURI != 0 or != "" TASSERT(!XMLString::compareString(doc->createAttributeNS(X("http://nsa"), X("foo:a"))->getNamespaceURI(), X("http://nsa"))); EXCEPTION_TEST(doc->createAttributeNS(XMLUni::fgZeroLenString, X("foo:a")), DOMException::NAMESPACE_ERR); EXCEPTION_TEST(doc->createAttributeNS(0, X("foo:a")), DOMException::NAMESPACE_ERR); //Change prefix DOMAttr* attr = doc->createAttributeNS(X("http://nsa"), X("foo:a")); attr->setPrefix(X("bar")); TASSERT(!XMLString::compareString(attr->getNodeName(), X("bar:a"))); TASSERT(!XMLString::compareString(attr->getNamespaceURI(), X("http://nsa"))); TASSERT(!XMLString::compareString(attr->getPrefix(), X("bar"))); TASSERT(!XMLString::compareString(attr->getName(), X("bar:a"))); //The spec does not prevent us from setting prefix to a node without prefix TASSERT(!XMLString::compareString(attr->getLocalName(), X("a"))); attr = doc->createAttributeNS(X("http://nsa"), X("a")); TASSERT(!XMLString::compareString(attr->getPrefix(), XMLUni::fgZeroLenString)); attr->setPrefix(X("bar")); TASSERT(!XMLString::compareString(attr->getNodeName(), X("bar:a"))); TASSERT(!XMLString::compareString(attr->getNamespaceURI(), X("http://nsa"))); TASSERT(!XMLString::compareString(attr->getPrefix(), X("bar"))); TASSERT(!XMLString::compareString(attr->getLocalName(), X("a"))); TASSERT(!XMLString::compareString(attr->getName(), X("bar:a"))); //Special case for xml:a where namespaceURI must be xmlURI attr = doc->createAttributeNS(X("http://www.w3.org/XML/1998/namespace"), X("foo:a")); attr->setPrefix(X("xml")); attr = doc->createAttributeNS(X("http://nsa"), X("foo:a")); EXCEPTION_TEST(attr->setPrefix(X("xml")), DOMException::NAMESPACE_ERR); //Special case for xmlns:a where namespaceURI must be xmlURI attr = doc->createAttributeNS(X("http://www.w3.org/2000/xmlns/"), X("foo:a")); attr->setPrefix(X("xmlns")); attr = doc->createAttributeNS(X("http://nsa"), X("foo:a")); EXCEPTION_TEST(attr->setPrefix(X("xmlns")), DOMException::NAMESPACE_ERR); //Special case for xmlns where no prefix can be set attr = doc->createAttributeNS(X("http://www.w3.org/2000/xmlns/"), X("xmlns")); EXCEPTION_TEST(attr->setPrefix(X("foo")), DOMException::NAMESPACE_ERR); EXCEPTION_TEST(attr->setPrefix(X("xmlns")), DOMException::NAMESPACE_ERR); //Also an attribute can not have a prefix with namespaceURI == null or "" attr = doc->createAttributeNS(XMLUni::fgZeroLenString, X("a")); EXCEPTION_TEST(attr->setPrefix(X("foo")), DOMException::NAMESPACE_ERR); attr = doc->createAttributeNS(0, X("a")); EXCEPTION_TEST(attr->setPrefix(X("foo")), DOMException::NAMESPACE_ERR); //Only prefix of Element and Attribute can be changed EXCEPTION_TEST(doc->setPrefix(X("foo")), DOMException::NAMESPACE_ERR); //Prefix of readonly Attribute can not be changed. //However, there is no way to create such DOMAttribute for testing yet. // release the document, the documentType (dt) still has the owner, and thus no need to release doc->release(); } // // getElementsByTagName* // { // Set up an initial (root element only) document. // DOMImplementation* impl = DOMImplementationRegistry::getDOMImplementation(X("Core")); DOMDocumentType* dt = impl->createDocumentType(X("foo:docName"), X("pubId"), X("http://sysId")); DOMDocument* doc = impl->createDocument(X("http://document.namespace"), X("foo:docName"), dt); DOMElement* rootEl = doc->getDocumentElement(); // // Populate the document // DOMElement* ela = doc->createElementNS(X("http://nsa"), X("a:ela")); rootEl->appendChild(ela); DOMElement* elb = doc->createElementNS(X("http://nsb"), X("elb")); rootEl->appendChild(elb); DOMElement* elc = doc->createElementNS(XMLUni::fgZeroLenString, X("elc")); rootEl->appendChild(elc); DOMElement* eld = doc->createElementNS(X("http://nsa"), X("d:ela")); rootEl->appendChild(eld); DOMElement* ele = doc->createElementNS(X("http://nse"), X("elb")); rootEl->appendChild(ele); // // Access with DOM Level 1 getElementsByTagName // DOMNodeList* nl; nl = doc->getElementsByTagName(X("a:ela")); TASSERT(nl->getLength() == 1); TASSERT(nl->item(0) == ela); nl = doc->getElementsByTagName(X("elb")); TASSERT(nl->getLength() == 2); TASSERT(nl->item(0) == elb); TASSERT(nl->item(1) == ele); nl = doc->getElementsByTagName(X("d:ela")); TASSERT(nl->getLength() == 1); TASSERT(nl->item(0) == eld); // // Access with DOM Level 2 getElementsByTagNameNS // nl = doc->getElementsByTagNameNS(XMLUni::fgZeroLenString, X("elc")); TASSERT(nl->getLength() == 1); TASSERT(nl->item(0) == elc); nl = doc->getElementsByTagNameNS(0, X("elc")); TASSERT(nl->getLength() == 1); TASSERT(nl->item(0) == elc); nl = doc->getElementsByTagNameNS(X("http://nsa"), X("ela")); TASSERT(nl->getLength() == 2); TASSERT(nl->item(0) == ela); TASSERT(nl->item(1) == eld); nl = doc->getElementsByTagNameNS(XMLUni::fgZeroLenString, X("elb")); TASSERT(nl->getLength() == 0); nl = doc->getElementsByTagNameNS(X("http://nsb"), X("elb")); TASSERT(nl->getLength() == 1); TASSERT(nl->item(0) == elb); nl = doc->getElementsByTagNameNS(X("*"), X("elb")); TASSERT(nl->getLength() == 2); TASSERT(nl->item(0) == elb); TASSERT(nl->item(1) == ele); nl = doc->getElementsByTagNameNS(X("http://nsa"), X("*")); TASSERT(nl->getLength() == 2); TASSERT(nl->item(0) == ela); TASSERT(nl->item(1) == eld); nl = doc->getElementsByTagNameNS(X("*"), X("*")); TASSERT(nl->getLength() == 6); // Gets the document root element, plus 5 more TASSERT(nl->item(6) == 0); // TASSERT(nl->item(-1) == 0); nl = rootEl->getElementsByTagNameNS(X("*"), X("*")); TASSERT(nl->getLength() == 5); nl = doc->getElementsByTagNameNS(X("http://nsa"), X("d:ela")); TASSERT(nl->getLength() == 0); // // Node lists are Live // nl = doc->getElementsByTagNameNS(X("*"), X("*")); DOMNodeList* nla = ela->getElementsByTagNameNS(X("*"), X("*")); TASSERT(nl->getLength() == 6); TASSERT(nla->getLength() == 0); DOMNode* rem = rootEl->removeChild(elc); rem->release(); TASSERT(nl->getLength() == 5); TASSERT(nla->getLength() == 0); ela->appendChild(elc); TASSERT(nl->getLength() == 6); TASSERT(nla->getLength() == 1); // release the document, the documentType (dt) still has the owner, and thus no need to release doc->release(); } // // Attributes and NamedNodeMaps. // { // Set up an initial (root element only) document. // DOMImplementation* impl = DOMImplementationRegistry::getDOMImplementation(X("Core")); DOMDocumentType* dt = impl->createDocumentType(X("foo:docName"), X("pubId"), X("http://sysId")); DOMDocument* doc = impl->createDocument(X("http://document.namespace"), X("foo:docName"), dt); DOMElement* rootEl = doc->getDocumentElement(); // // Create a set of attributes and hang them on the root element. // DOMAttr* attra = doc->createAttributeNS(X("http://nsa"), X("a:attra")); DOMNode* rem = rootEl->setAttributeNodeNS(attra); if (rem) rem->release(); // // Check that the attribute nodes were created with the correct properties. // TASSERT(!XMLString::compareString(attra->getNodeName(), X("a:attra"))); TASSERT(!XMLString::compareString(attra->getNamespaceURI(), X("http://nsa"))); TASSERT(!XMLString::compareString(attra->getLocalName(), X("attra"))); TASSERT(!XMLString::compareString(attra->getName(), X("a:attra"))); TASSERT(attra->getNodeType() == DOMNode::ATTRIBUTE_NODE); TASSERT(!XMLString::compareString(attra->getNodeValue(), XMLUni::fgZeroLenString)); TASSERT(!XMLString::compareString(attra->getPrefix(), X("a"))); TASSERT(attra->getSpecified() == true); TASSERT(!XMLString::compareString(attra->getValue(), XMLUni::fgZeroLenString)); // // Create a set of attributes and hang them on the root element. // DOMAttr* attrb = doc->createAttributeNS(X("http://nsb"), X("attrb")); rem = rootEl->setAttributeNodeNS(attrb); if (rem) rem->release(); DOMAttr* attrc = doc->createAttributeNS(XMLUni::fgZeroLenString, X("attrc")); rem = rootEl->setAttributeNodeNS(attrc); if (rem) rem->release(); // this one will replace the attra DOMAttr* attrd = doc->createAttributeNS(X("http://nsa"), X("d:attra")); rem = rootEl->setAttributeNodeNS(attrd); TASSERT(attra->getOwnerElement() == 0); if (rem) rem->release(); DOMAttr* attre = doc->createAttributeNS(X("http://nse"), X("attrb")); rem = rootEl->setAttributeNodeNS(attre); if (rem) rem->release(); // Test methods of NamedNodeMap DOMNamedNodeMap* nnm = rootEl->getAttributes(); TASSERT(nnm->getLength() == 4); TASSERT(nnm->getNamedItemNS(X("http://nsa"), X("attra")) == attrd); TASSERT(nnm->getNamedItemNS(X("http://nsb"), X("attrb")) == attrb); TASSERT(nnm->getNamedItemNS(XMLUni::fgZeroLenString, X("attra")) == 0); TASSERT(nnm->getNamedItemNS(X("http://nsa"), X("attrb")) == 0); TASSERT(nnm->getNamedItemNS(X("http://nse"), X("attrb")) == attre); TASSERT(nnm->getNamedItemNS(XMLUni::fgZeroLenString, X("attrc")) == attrc); // Test hasAttributes, hasAttribute, hasAttributeNS TASSERT(doc->hasAttributes() == false); TASSERT(attrc->hasAttributes() == false); TASSERT(rootEl->hasAttributes() == true); TASSERT(rootEl->hasAttribute(X("attrc")) == true); TASSERT(rootEl->hasAttribute(X("wrong")) == false); TASSERT(rootEl->hasAttributeNS(X("http://nsa"), X("attra")) == true); TASSERT(rootEl->hasAttributeNS(X("http://nsa"), X("wrong")) == false); // release the document, the documentType (dt) still has the owner, and thus no need to release doc->release(); } // // // } //--------------------------------------------------------------------------------------- // // DOMReleaseTests Test if the release() function // //--------------------------------------------------------------------------------------- void DOMReleaseTests() { XMLCh tempStr[4000]; XMLCh tempStr2[4000]; XMLCh tempStr3[4000]; XMLString::transcode("status", tempStr, 3999); XMLString::transcode("true", tempStr2, 3999); XMLString::transcode("root", tempStr3, 3999); //create document DOMDocument* cpXMLDocument; cpXMLDocument = DOMImplementation::getImplementation()->createDocument(); //create root element DOMElement* cpRoot = cpXMLDocument->createElement(tempStr3); //create status attribute cpRoot->setAttribute(tempStr,tempStr2); DOMAttr* pAttr = cpRoot->getAttributeNode(tempStr); //simulate setting the attribute value // The setValue and setAttribute should call release internally so that // the overall memory usage is not increased int i = 0; for(i=0;i<20000;i++) { pAttr->setValue(tempStr2); } for(i=0;i<20000;i++) { //same problem cpRoot->removeAttribute(tempStr); cpRoot->setAttribute(tempStr,tempStr2); } //simulate changing node value // the overall memory usage is not increased char tempchar[4000]; for(i=0;i<20000;i++) { sprintf(tempchar, "time is %lu\n",XMLPlatformUtils::getCurrentMillis()); XMLSize_t len = strlen(tempchar), j; for (j = len; j < 4000-len; j++) tempchar[j] = 'a'; tempchar[j]=0; pAttr->setNodeValue(X(tempchar)); } DOMText* text = cpXMLDocument->createTextNode(tempStr3); for(i=0;i<20000;i++) { sprintf(tempchar, "time is %lu\n",XMLPlatformUtils::getCurrentMillis()); XMLSize_t len = strlen(tempchar), j; for (j = len; j < 4000-len; j++) tempchar[j] = 'a'; tempchar[j]=0; text->setNodeValue(X(tempchar)); } cpXMLDocument->release(); } //--------------------------------------------------------------------------------------- // // main // //--------------------------------------------------------------------------------------- int mymain() { try { XMLPlatformUtils::Initialize(); } catch (const XMLException& toCatch) { char *pMessage = XMLString::transcode(toCatch.getMessage()); fprintf(stderr, "Error during XMLPlatformUtils::Initialize(). \n" " Message is: %s\n", pMessage); XMLString::release(&pMessage); return -1; } DOMBasicTests(); DOMNSTests(); DOMReleaseTests(); // // Print Final allocation stats for full set of tests // XMLPlatformUtils::Terminate(); return 0; }; int main() { for (int i = 0; i<3; i++) mymain(); if (errorOccurred) { printf("Test Failed\n"); return 4; } printf("Test Run Successfully\n"); return 0; } xerces-c-3.1.1/tests/src/DOM/Normalizer/0000755000175000017500000000000011363617312016740 5ustar borisborisxerces-c-3.1.1/tests/src/DOM/Normalizer/Normalizer.hpp0000644000175000017500000000273410522202400021561 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // define null for compatibility with original Java source code. #define null 0 #include #include XERCES_CPP_NAMESPACE_USE XERCES_CPP_NAMESPACE_BEGIN class XercesDOMParser; XERCES_CPP_NAMESPACE_END class Normalizer : public DOMErrorHandler { public: Normalizer(); ~Normalizer(); DOMDocument* createDocument(); void serializeNode(const DOMNode *const node); void printEntityRefNodes(DOMElement *ele); bool handleError(const DOMError& domError); void resetErrors(){}; private: Normalizer(const Normalizer&); void operator=(const Normalizer&); XercesDOMParser *parser; DOMDocument *doc; }; xerces-c-3.1.1/tests/src/DOM/Normalizer/Normalizer.cpp0000644000175000017500000004011410522202400021546 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "Normalizer.hpp" #include #include #include #include #if defined(XERCES_NEW_IOSTREAMS) #include #else #include #endif #include #include #include "xercesc/dom/impl/DOMConfigurationImpl.hpp" #include "xercesc/dom/impl/DOMDocumentImpl.hpp" #include "xercesc/dom/impl/DOMEntityImpl.hpp" #include "xercesc/dom/impl/DOMEntityReferenceImpl.hpp" // --------------------------------------------------------------------------- // This is a simple class that lets us do easy (though not terribly efficient) // trancoding of char* data to XMLCh data. // --------------------------------------------------------------------------- class XStr { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- XStr(const char* const toTranscode) { // Call the private transcoding method fUnicodeForm = XMLString::transcode(toTranscode); } ~XStr() { XMLString::release(&fUnicodeForm); } // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const XMLCh* unicodeForm() const { return fUnicodeForm; } private : // ----------------------------------------------------------------------- // Private data members // // fUnicodeForm // This is the Unicode XMLCh format of the string. // ----------------------------------------------------------------------- XMLCh* fUnicodeForm; }; #define X(str) XStr(str).unicodeForm() // This is a simple class that lets us do easy (though not terribly efficient) // trancoding of XMLCh data to local code page for display. // --------------------------------------------------------------------------- class StrX { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- StrX(const XMLCh* const toTranscode) { // Call the private transcoding method fLocalForm = XMLString::transcode(toTranscode); } ~StrX() { XMLString::release(&fLocalForm); } // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const char* localForm() const { return fLocalForm; } private : // ----------------------------------------------------------------------- // Private data members // // fLocalForm // This is the local code page form of the string. // ----------------------------------------------------------------------- char* fLocalForm; }; #define StrX(str) StrX(str).localForm() Normalizer::Normalizer() { try { XMLPlatformUtils::Initialize(); } catch(const XMLException &toCatch) { XERCES_STD_QUALIFIER cerr << "Error during Xerces-c Initialization.\n" << " Exception message:" << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl; } parser = 0; } Normalizer::~Normalizer() { XMLPlatformUtils::Terminate(); } void Normalizer::printEntityRefNodes(DOMElement *ele) { DOMNode *child = ele->getFirstChild(); while(child != 0) { if(child->getNodeType() == DOMNode::ENTITY_REFERENCE_NODE) { XERCES_STD_QUALIFIER cout << "start of entity ref node" << XERCES_STD_QUALIFIER endl; DOMNode *entChild = ((DOMEntityReference*)child)->getFirstChild(); while(entChild != 0) { serializeNode(entChild); entChild = entChild->getNextSibling(); } XERCES_STD_QUALIFIER cout << "\nend of entity ref node\n\n" << XERCES_STD_QUALIFIER endl; } if(child->getNodeType() == DOMNode::ELEMENT_NODE) { printEntityRefNodes((DOMElement*)child); } child = child->getNextSibling(); } } bool Normalizer::handleError(const DOMError& domError) { // Display whatever error message passed from the serializer if (domError.getSeverity() == DOMError::DOM_SEVERITY_WARNING) XERCES_STD_QUALIFIER cerr << "\nWarning Message: "; else if (domError.getSeverity() == DOMError::DOM_SEVERITY_ERROR) XERCES_STD_QUALIFIER cerr << "\nError Message: "; else XERCES_STD_QUALIFIER cerr << "\nFatal Message: "; char *msg = XMLString::transcode(domError.getMessage()); XERCES_STD_QUALIFIER cerr<< msg <getNodeName()); XERCES_STD_QUALIFIER cerr << msg <createDocument(); }; void Normalizer::serializeNode(const DOMNode * const node) { XMLCh tempStr[100]; XMLString::transcode("LS", tempStr, 99); DOMImplementation *impl = DOMImplementationRegistry::getDOMImplementation(tempStr); DOMLSSerializer *theSerializer = ((DOMImplementationLS*)impl)->createLSSerializer(); DOMLSOutput *theOutput = ((DOMImplementationLS*)impl)->createLSOutput(); theSerializer->getDomConfig()->setParameter(X("format-pretty-print"), true); XMLFormatTarget *myFormTarget; myFormTarget = new StdOutFormatTarget(); theOutput->setByteStream(myFormTarget); theSerializer->write(node,theOutput); delete myFormTarget; theSerializer->release(); theOutput->release(); } int main(int /*argc*/, char ** /*argv*/) { Normalizer *normalizer = new Normalizer(); DOMDocument *doc = normalizer->createDocument(); bool *tmpTrue = new bool(true); bool *tmpFalse = new bool(false); DOMElement* docFirstElement = doc->createElementNS(X("http://www.test.com"),X("docEle")); doc->appendChild(docFirstElement); DOMElement* docFirstElementChild = doc->createElementNS(X("http://www.test2.com"),X("docEleChild")); docFirstElement->appendChild(docFirstElementChild); //create default ns doc->normalizeDocument(); normalizer->serializeNode(doc); XERCES_STD_QUALIFIER cout << "\n\n"; //add in binding docFirstElement->setPrefix(X("po")); doc->normalizeDocument(); normalizer->serializeNode(doc); XERCES_STD_QUALIFIER cout << "\n\n"; //use default DOMElement* docFirstElementChildChild = doc->createElementNS(X("http://www.test2.com"),X("docEleChildChild")); docFirstElementChild->appendChild(docFirstElementChildChild); doc->normalizeDocument(); normalizer->serializeNode(doc); XERCES_STD_QUALIFIER cout << "\n\n"; // this block is needed to destroy the XMLBuffer { //use a binding XMLBuffer buf; buf.set(XMLUni::fgXMLNSString); buf.append(chColon); buf.append(X("po2")); docFirstElementChild->removeAttributeNS(XMLUni::fgXMLNSURIName, XMLUni::fgXMLNSString); docFirstElement->removeAttributeNS(XMLUni::fgXMLNSURIName, XMLUni::fgXMLNSString); docFirstElement->setAttributeNS(XMLUni::fgXMLNSURIName, buf.getRawBuffer(), X("http://www.test2.com")); docFirstElementChild->setPrefix(X("po2")); doc->normalizeDocument(); normalizer->serializeNode(doc); XERCES_STD_QUALIFIER cout << "\n\n"; } //some siblngs to ensure the scope stacks are working docFirstElementChildChild = doc->createElementNS(X("http://www.test3.com"),X("docEleChildChild2")); docFirstElementChild->appendChild(docFirstElementChildChild); docFirstElementChildChild = doc->createElementNS(X("http://www.test4.com"),X("po4:docEleChildChild3")); docFirstElementChild->appendChild(docFirstElementChildChild); docFirstElementChildChild = doc->createElementNS(X("http://www.test4.com"),X("po4:docEleChildChild4")); docFirstElementChild->appendChild(docFirstElementChildChild); doc->normalizeDocument(); normalizer->serializeNode(doc); XERCES_STD_QUALIFIER cout << "\n\n"; //conflicting prefix docFirstElementChildChild->setAttributeNS(XMLUni::fgXMLNSURIName, X("po4"), X("conflict")); doc->normalizeDocument(); normalizer->serializeNode(doc); XERCES_STD_QUALIFIER cout << "\n\n"; //conflicting default docFirstElementChildChild = doc->createElementNS(X("http://www.test4.com"),X("docEleChildChild5")); docFirstElementChild->appendChild(docFirstElementChildChild); docFirstElementChildChild->setAttributeNS(XMLUni::fgXMLNSURIName, XMLUni::fgXMLNSString, X("conflict")); doc->normalizeDocument(); normalizer->serializeNode(doc); XERCES_STD_QUALIFIER cout << "\n\n"; //set the xmlns to "" DOMElement *noNamespaceEle = doc->createElementNS(X(""),X("noNamespace")); docFirstElementChildChild->appendChild(noNamespaceEle); doc->normalizeDocument(); normalizer->serializeNode(doc); XERCES_STD_QUALIFIER cout << "\n\n"; //now lets do a bit off attribute testing on the doc ele docFirstElement->setAttributeNS(X("http://testattr.com"), X("attr1"), X("value")); docFirstElement->setAttributeNS(X("http://testattr.com"), X("attr2"), X("value")); docFirstElement->setAttributeNS(X("http://testattr2.com"), X("attr3"), X("value")); docFirstElement->setAttributeNS(X("http://www.test.com"), X("attr4"), X("value")); docFirstElement->setAttributeNS(X("http://testattr2.com"), X("po:attr5"), X("value")); docFirstElement->setAttributeNS(X("http://testattr2.com"), X("poFake:attr6"), X("value")); docFirstElement->setAttributeNS(X("http://testattr3.com"), X("po3:attr7"), X("value")); doc->normalizeDocument(); normalizer->serializeNode(doc); XERCES_STD_QUALIFIER cout << "\n\n"; //and now on one of its children docFirstElementChildChild->setAttributeNS(X("http://testattr.com"), X("attr1"), X("value")); docFirstElementChildChild->setAttributeNS(X("http://testattr.com"), X("attr2"), X("value")); docFirstElementChildChild->setAttributeNS(X("http://testattr2.com"), X("attr3"), X("value")); docFirstElementChildChild->setAttributeNS(X("http://www.test.com"), X("attr4"), X("value")); docFirstElementChildChild->setAttributeNS(X("http://testattr2.com"), X("po:attr5"), X("value")); docFirstElementChildChild->setAttributeNS(X("http://testattr2.com"), X("poFake:attr6"), X("value")); docFirstElementChildChild->setAttributeNS(X("http://testattr3.com"), X("po3:attr7"), X("value")); docFirstElementChildChild->setAttributeNS(X("http://testattr4.com"), X("po4:attr8"), X("value")); //test for a clash with our NSx attrs docFirstElementChildChild->setAttributeNS(X("http://testclash.com"), X("NS1:attr9"), X("value")); docFirstElementChildChild->setAttributeNS(XMLUni::fgXMLNSURIName, X("xmlns:NS1"), X("http://testclash.com")); //clash with standard prefix docFirstElementChildChild->setAttributeNS(X("http://testattr5.com"), X("po:attr10"), X("value")); doc->normalizeDocument(); normalizer->serializeNode(doc); XERCES_STD_QUALIFIER cout << "\n\n"; //2 prefix with the same uri docFirstElementChildChild = doc->createElementNS(X("http://www.uri1.com"),X("docEleChildChild6")); docFirstElementChild->appendChild(docFirstElementChildChild); docFirstElementChildChild->setAttributeNS(XMLUni::fgXMLNSURIName, X("xmlns:uri1"), X("http://www.uri1.com")); docFirstElementChildChild->setAttributeNS(XMLUni::fgXMLNSURIName, X("xmlns:uri1b"), X("http://www.uri1.com")); docFirstElementChildChild->setAttributeNS(X("http://www.uri1.com"), X("uri1:attr1"), X("value")); docFirstElementChildChild->setAttributeNS(X("http://www.uri1.com"), X("uri1b:attr2"), X("value")); doc->normalizeDocument(); normalizer->serializeNode(doc); XERCES_STD_QUALIFIER cout << "\n\n"; //check to see we use the nearest binding and for more inheritence DOMElement *docFirstElementChildChildChild = doc->createElementNS(X("http://www.uri1.com"),X("docEleChildChildChild")); docFirstElementChildChild->appendChild(docFirstElementChildChildChild); docFirstElementChildChild->setAttributeNS(XMLUni::fgXMLNSURIName, X("xmlns:nearerThanPo"), X("http://www.test.com")); docFirstElementChildChildChild->setAttributeNS(X("http://testattr.com"), X("attr2"), X("value")); docFirstElementChildChildChild->setAttributeNS(X("http://www.test.com"), X("attr1"), X("value")); doc->normalizeDocument(); normalizer->serializeNode(doc); XERCES_STD_QUALIFIER cout << "\n\n"; //NS1.1 stuff //test creating default prefix when NS1 has been set to "" noNamespaceEle->setAttributeNS(XMLUni::fgXMLNSURIName, X("xmlns:NS1"), X("")); DOMElement *noNamespaceChild = doc->createElementNS(X("http://testclash.com"),X("testing1.1Stuff")); noNamespaceEle->appendChild(noNamespaceChild); doc->normalizeDocument(); normalizer->serializeNode(doc); noNamespaceChild = doc->createElementNS(X("http://testclash.com"),X("NS1:testing1.1Stuff")); noNamespaceEle->appendChild(noNamespaceChild); noNamespaceChild->setAttributeNS(X("http://www.someRandomUri.com"), X("attr"), X("value")); doc->normalizeDocument(); normalizer->serializeNode(doc); //check error conditions XERCES_STD_QUALIFIER cout << "error conditions" << XERCES_STD_QUALIFIER endl; DOMConfiguration *conf = doc->getDOMConfig(); conf->setParameter(XMLUni::fgDOMErrorHandler, normalizer); conf->setParameter(XMLUni::fgDOMNamespaces, true); DOMElement *level1Node = doc->createElement(X("level1Node")); docFirstElement->appendChild(level1Node); doc->normalizeDocument(); docFirstElement->removeChild(level1Node); docFirstElement->setAttribute(X("level1Attr"), X("level1")); doc->normalizeDocument(); docFirstElement->removeAttribute(X("level1Attr")); //cant check this as Xerces does not let us do it // noNamespaceChild->setAttributeNS(X("http://www.someRandomUri.com"), X("xmlns"), X("value")); // doc->normalizeDocument(); //lets do a sanity test on a comment DOMComment *comment = doc->createComment(X("some comment")); docFirstElement->appendChild(comment); doc->normalizeDocument(); normalizer->serializeNode(doc); conf->setParameter(XMLUni::fgDOMComments, false); docFirstElement->appendChild(comment); doc->normalizeDocument(); normalizer->serializeNode(doc); //and on a CDATA DOMCDATASection *cData = doc->createCDATASection(X("some cdata")); docFirstElement->appendChild(cData); doc->normalizeDocument(); normalizer->serializeNode(doc); conf->setParameter(XMLUni::fgDOMCDATASections, false); docFirstElement->appendChild(cData); doc->normalizeDocument(); normalizer->serializeNode(doc); delete normalizer; delete tmpTrue; delete tmpFalse; return 0; } xerces-c-3.1.1/tests/src/DOM/Normalizer/expectedOutput0000644000175000017500000004041110254305044021677 0ustar borisboris error conditions Fatal Message: Namespace fixup cannot be performed on a DOM Level 1 Node. Related data level1Node Fatal Message: Namespace fixup cannot be performed on a DOM Level 1 Node. Related data level1Attr some cdata xerces-c-3.1.1/tests/src/DOM/RangeTest/0000755000175000017500000000000011363617312016512 5ustar borisborisxerces-c-3.1.1/tests/src/DOM/RangeTest/RangeTest.cpp0000644000175000017500000013445510522202400021106 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * $Id: RangeTest.cpp 470088 2006-11-01 20:35:12Z amassari $ */ /** This IRangeTest tests all of the cases delineated as examples * in the DOM Level 2 Range specification, and a few others. *

These do not by any means completely test the API and * corner cases. */ #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_USE bool errorOccurred = false; #define UNUSED(x) { if(x!=0){} } #define TASSERT(c) tassert((c), __FILE__, __LINE__) void tassert(bool c, const char *file, int line) { if (!c) { errorOccurred = true; printf("Failure. Line %d, file %s\n", line, file); } }; #define EXCEPTION_TEST(operation, expected_exception) \ { \ try { \ operation; \ printf(" Error: no exception thrown at line %d\n", __LINE__); \ errorOccurred = true; \ } \ catch (DOMRangeException &e) { \ if (e.code != (DOMRangeException::RangeExceptionCode)expected_exception) { \ printf(" Wrong RangeException code: %d at line %d\n", e.code, __LINE__); \ errorOccurred = true; \ } \ } \ catch (DOMException &e) { \ if (e.code != (DOMException::ExceptionCode)expected_exception) { \ printf(" Wrong exception code: %d at line %d\n", e.code, __LINE__); \ errorOccurred = true; \ } \ } \ catch (...) { \ printf(" Wrong exception thrown at line %d\n", __LINE__); \ errorOccurred = true; \ } \ } //Define a bunch of XMLCh* string for comparison XMLCh xa[] = {chLatin_a, chNull}; XMLCh xab[] = {chLatin_a, chLatin_b, chNull}; XMLCh xabHello[] = {chLatin_a, chLatin_b, chLatin_H, chLatin_e, chLatin_l, chLatin_l, chLatin_o, chNull}; XMLCh xabHellocd[] = {chLatin_a, chLatin_b, chLatin_H, chLatin_e, chLatin_l, chLatin_l, chLatin_o, chSpace, chLatin_c, chLatin_d, chNull}; XMLCh xAnotherText[] = {chLatin_A, chLatin_n, chLatin_o, chLatin_t, chLatin_h, chLatin_e, chLatin_r, chLatin_T, chLatin_e, chLatin_x, chLatin_t, chNull}; XMLCh xb[] = {chLatin_b, chNull}; XMLCh xBlahxyz[] = {chLatin_B, chLatin_l, chLatin_a, chLatin_h, chSpace, chLatin_x, chLatin_y, chLatin_z, chNull}; XMLCh xBody[] = {chLatin_B, chLatin_o, chLatin_d, chLatin_y, chNull}; XMLCh xbody2[] = {chLatin_b, chLatin_o, chLatin_d, chLatin_y, chDigit_2, chNull}; XMLCh xc[] = {chLatin_c, chNull}; XMLCh xcool[] = {chLatin_c, chLatin_o, chLatin_o, chLatin_l, chNull}; XMLCh xef[] = {chLatin_e, chLatin_f, chNull}; XMLCh xElement1[] = {chLatin_E, chLatin_l, chLatin_e, chLatin_m, chLatin_e, chLatin_n, chLatin_t, chDigit_1, chNull}; XMLCh xElement2[] = {chLatin_E, chLatin_l, chLatin_e, chLatin_m, chLatin_e, chLatin_n, chLatin_t, chDigit_2, chNull}; XMLCh xElement3[] = {chLatin_E, chLatin_l, chLatin_e, chLatin_m, chLatin_e, chLatin_n, chLatin_t, chDigit_3, chNull}; XMLCh xell[] = {chLatin_e, chLatin_l, chLatin_l, chNull}; XMLCh xellocd[] = {chLatin_e, chLatin_l, chLatin_l, chLatin_o, chSpace, chLatin_c, chLatin_d, chNull}; XMLCh xellocdef[] = {chLatin_e, chLatin_l, chLatin_l, chLatin_o, chSpace, chLatin_c, chLatin_d, chLatin_e, chLatin_f, chNull}; XMLCh xeplacedTextInsertedTexttle[] = {chLatin_e, chLatin_p, chLatin_l, chLatin_a, chLatin_c, chLatin_e, chLatin_d, chLatin_T, chLatin_e, chLatin_x, chLatin_t, chLatin_I, chLatin_n, chLatin_s, chLatin_e, chLatin_r, chLatin_t, chLatin_e, chLatin_d, chLatin_T, chLatin_e, chLatin_x, chLatin_t, chLatin_t, chLatin_l, chLatin_e, chNull}; XMLCh xex[] = {chLatin_e, chLatin_x, chNull}; XMLCh xext1[] = {chLatin_e, chLatin_x, chLatin_t, chDigit_1, chNull}; XMLCh xext3[] = {chLatin_e, chLatin_x, chLatin_t, chDigit_3, chNull}; XMLCh xfoo[] = {chLatin_f, chLatin_o, chLatin_o, chNull}; XMLCh xH1[] = {chLatin_H, chDigit_1, chNull}; XMLCh xh2[] = {chLatin_h, chDigit_2, chNull}; XMLCh xh3[] = {chLatin_h, chDigit_3, chNull}; XMLCh xh4[] = {chLatin_h, chDigit_4, chNull}; XMLCh xHellocd[] = {chLatin_H, chLatin_e, chLatin_l, chLatin_l, chLatin_o, chSpace, chLatin_c, chLatin_d, chNull}; XMLCh xhead[] = {chLatin_h, chLatin_e, chLatin_a, chLatin_d, chNull}; XMLCh xhead2[] = {chLatin_h, chLatin_e, chLatin_a, chLatin_d, chDigit_2, chNull}; XMLCh xInsertedText[] = {chLatin_I, chLatin_n, chLatin_s, chLatin_e, chLatin_r, chLatin_t, chLatin_e, chLatin_d, chLatin_T, chLatin_e, chLatin_x, chLatin_t, chNull}; XMLCh xInsertedTexttle[] = {chLatin_I, chLatin_n, chLatin_s, chLatin_e, chLatin_r, chLatin_t, chLatin_e, chLatin_d, chLatin_T, chLatin_e, chLatin_x, chLatin_t, chLatin_t, chLatin_l, chLatin_e, chNull}; XMLCh xmoo[] = {chLatin_m, chLatin_o, chLatin_o, chNull}; XMLCh xroot[] = {chLatin_r, chLatin_o, chLatin_o, chLatin_t, chNull}; XMLCh xroot2[] = {chLatin_r, chLatin_o, chLatin_o, chLatin_t, chDigit_2, chNull}; XMLCh xP[] = {chLatin_P, chNull}; XMLCh xp1[] = {chLatin_p, chDigit_1, chNull}; XMLCh xp2[] = {chLatin_p, chDigit_2, chNull}; XMLCh xptext2[] = {chLatin_p, chLatin_t, chLatin_e, chLatin_x, chLatin_t, chDigit_2, chNull}; XMLCh xReplacedText[] = {chLatin_R, chLatin_e, chLatin_p, chLatin_l, chLatin_a, chLatin_c, chLatin_e, chLatin_d, chLatin_T, chLatin_e, chLatin_x, chLatin_t, chNull}; XMLCh xSurroundNode1[] = {chLatin_S, chLatin_u, chLatin_r, chLatin_r, chLatin_o, chLatin_u, chLatin_n, chLatin_d, chLatin_N, chLatin_o, chLatin_d, chLatin_e, chDigit_1, chNull}; XMLCh xt[] = {chLatin_t, chNull}; XMLCh xtl[] = {chLatin_t, chLatin_l, chNull}; XMLCh xtext1[] = {chLatin_t, chLatin_e, chLatin_x, chLatin_t, chDigit_1, chNull}; XMLCh xtext2[] = {chLatin_t, chLatin_e, chLatin_x, chLatin_t, chDigit_2, chNull}; XMLCh xtext2ex[] = {chLatin_t, chLatin_e, chLatin_x, chLatin_t, chDigit_2, chLatin_e, chLatin_x, chNull}; XMLCh xtext3[] = {chLatin_t, chLatin_e, chLatin_x, chLatin_t, chDigit_3, chNull}; XMLCh xtext4[] = {chLatin_t, chLatin_e, chLatin_x, chLatin_t, chDigit_4, chNull}; XMLCh xtext4ext3[] = {chLatin_t, chLatin_e, chLatin_x, chLatin_t, chDigit_4, chLatin_e, chLatin_x, chLatin_t, chDigit_3, chNull}; XMLCh xttext4ext3[] = {chLatin_t, chLatin_t, chLatin_e, chLatin_x, chLatin_t, chDigit_4, chLatin_e, chLatin_x, chLatin_t, chDigit_3, chNull}; XMLCh xtext5[] = {chLatin_t, chLatin_e, chLatin_x, chLatin_t, chDigit_5, chNull}; XMLCh xtext6[] = {chLatin_t, chLatin_e, chLatin_x, chLatin_t, chDigit_6, chNull}; XMLCh xTi[] = {chLatin_T, chLatin_i, chNull}; XMLCh xTitle[] = {chLatin_T, chLatin_i, chLatin_t, chLatin_l, chLatin_e, chNull}; XMLCh xtle[] = {chLatin_t, chLatin_l, chLatin_e, chNull}; XMLCh xu[] = {chLatin_u, chNull}; XMLCh xupbody[] = {chLatin_u, chLatin_p, chLatin_b, chLatin_o, chLatin_d, chLatin_y, chNull}; XMLCh xupbody2[] = {chLatin_u, chLatin_p, chLatin_b, chLatin_o, chLatin_d, chLatin_y, chDigit_2, chNull}; XMLCh xupp1[] = {chLatin_u, chLatin_p, chLatin_p, chDigit_1, chNull}; XMLCh xuptext1[] = {chLatin_u, chLatin_p, chLatin_t, chLatin_e, chLatin_x, chLatin_t, chDigit_1, chNull}; XMLCh xuptext2[] = {chLatin_u, chLatin_p, chLatin_t, chLatin_e, chLatin_x, chLatin_t, chDigit_2, chNull}; int main() { try { XMLPlatformUtils::Initialize(); } catch (const XMLException& toCatch) { char *pMessage = XMLString::transcode(toCatch.getMessage()); fprintf(stderr, "Error during XMLPlatformUtils::Initialize(). \n" " Message is: %s\n", pMessage); XMLString::release(&pMessage); return -1; } /* Range tests include testing of createRange setStart, setStartBefore. setStartAfter, setEnd, setEndBefore. setEndAfter getStartContainer, getStartOffset getEndContainer, getEndOffset getCommonAncestorContainer selectNode selectNodeContents insertNode deleteContents collapse getCollapsed surroundContents compareBoundaryPoints cloneRange cloneContents extractContents toString detach removeChild */ { XMLCh tempStr[100]; XMLString::transcode("Range",tempStr,99); { DOMImplementation* impl = DOMImplementationRegistry::getDOMImplementation(tempStr); DOMDocument* doc = impl->createDocument(); //Creating a root element DOMElement* root = doc->createElement(xBody); doc->appendChild(root); //Creating the siblings of root DOMElement* E11 = doc->createElement(xH1); root->appendChild(E11); DOMElement* E12 = doc->createElement(xP); root->appendChild(E12); //Attaching texts to siblings DOMText* textNode1 = doc->createTextNode(xTitle); E11->appendChild(textNode1); DOMText* textNode11 = doc->createTextNode(xAnotherText); E11->appendChild(textNode11); DOMText* textNode2 = doc->createTextNode(xBlahxyz); E12->appendChild(textNode2); DOMText* E210 = doc->createTextNode(xInsertedText); UNUSED(E210); // silence warning doc->release(); } { //DOM Tree and some usable node creation DOMImplementation* impl = DOMImplementationRegistry::getDOMImplementation(tempStr); DOMDocument* doc = impl->createDocument(); //Creating a root element DOMElement* root = doc->createElement(xBody); doc->appendChild(root); //Creating the siblings of root DOMElement* E11 = doc->createElement(xH1); root->appendChild(E11); DOMElement* E12 = doc->createElement(xP); root->appendChild(E12); //Attaching texts to siblings DOMText* textNode1 = doc->createTextNode(xTitle); E11->appendChild(textNode1); DOMText* textNode11 = doc->createTextNode(xAnotherText); E11->appendChild(textNode11); DOMText* textNode2 = doc->createTextNode(xBlahxyz); E12->appendChild(textNode2); //experimental nodes DOMElement* E120 = doc->createElement(xElement1); DOMElement* E121 = doc->createElement(xElement2); DOMElement* E122 = doc->createElement(xElement3); DOMElement* E311 = doc->createElement(xSurroundNode1); DOMText* E210 = doc->createTextNode(xInsertedText); DOMNode* rt = doc->getDocumentElement(); DOMRange* range = ((DOMDocumentRange*)doc)->createRange(); //Tests start here // Initial dom tree looks like : //

TitleAnother Text

Blah xyz

//i.e., Body(rt) // _____________|________________ // | | // ___H1(E11)___ P(E12) // | | | // "Title" "Another Text" "Blah xyz" //test for start and end settings of a range range->setStart(rt->getFirstChild(), 0); TASSERT(range->getStartContainer() == rt->getFirstChild() ); TASSERT(range->getStartOffset() == 0); range->setEnd(rt->getFirstChild(), 1); TASSERT(range->getEndContainer() == rt->getFirstChild() ); TASSERT(range->getEndOffset() == 1); //DOMNode* node = range->getCommonAncestorContainer(); TASSERT(range->getCommonAncestorContainer() == rt->getFirstChild()); //selection related test range->selectNode(rt->getLastChild()); TASSERT(range->getStartContainer() == rt); TASSERT(range->getStartOffset() == 1); TASSERT(range->getEndContainer() == rt); TASSERT(range->getEndOffset() == 2); //insertion related tests range->insertNode(E120); //only end offset moves and new node gets into range as being inserted at boundary point TASSERT(range->getStartContainer() == rt); TASSERT(range->getStartOffset() == 1); TASSERT(range->getEndContainer() == rt); TASSERT(range->getEndOffset() == 3); range->insertNode(E121); //only end offset moves and new node gets into range as being inserted at boundary point TASSERT(range->getStartContainer() == rt); TASSERT(range->getStartOffset() == 1); TASSERT(range->getEndContainer() == rt); TASSERT(range->getEndOffset() == 4); rt->insertBefore(E122, rt->getFirstChild()); //both offsets move as new node is not part of the range TASSERT(range->getStartContainer() == rt); TASSERT(range->getStartOffset() == 2); TASSERT(range->getEndContainer() == rt); TASSERT(range->getEndOffset() == 5); //After above operations, now the tree looks like: //

TitleAnother Text

Blah xyz

//i.e., Body(rt) // _____________|_______________________________________________________________ // | | | | | // Element3(E122) ___H1(E11)___ Element2(E121) Element1(E120) P(E12) // | | | // "Title" "Another Text" "Blah xyz" // // range has rt as start and end container, and 2 as start offset, 5 as end offset //changing selection range->selectNode(rt->getLastChild()->getPreviousSibling()); TASSERT(range->getStartContainer() == rt); TASSERT(range->getStartOffset() == 3); TASSERT(range->getEndContainer() == rt); TASSERT(range->getEndOffset() == 4); //deleting related tests range->deleteContents(); TASSERT(rt->getLastChild()->getPreviousSibling() == E121); range->setStart(rt->getFirstChild()->getNextSibling()->getFirstChild(), 2); TASSERT(range->getStartContainer() == rt->getFirstChild()->getNextSibling()->getFirstChild()); TASSERT(!XMLString::compareString(range->getStartContainer()->getNodeValue(),xTitle)); TASSERT(range->getStartOffset() == 2); range->setEnd(rt->getFirstChild()->getNextSibling()->getFirstChild(), 4); TASSERT(range->getEndContainer() == rt->getFirstChild()->getNextSibling()->getFirstChild()); TASSERT(!XMLString::compareString(range->getEndContainer()->getNodeValue(),xTitle)); TASSERT(range->getEndOffset() == 4); TASSERT(!XMLString::compareString(range->toString(),xtl)); //inserting text between a text node range->insertNode(E210); //only end offset moves and new node gets into range as being inserted at boundary point TASSERT(range->getStartContainer() == rt->getFirstChild()->getNextSibling()->getFirstChild()); TASSERT(range->getStartOffset() == 2); TASSERT(range->getEndContainer() == rt->getFirstChild()->getNextSibling()->getLastChild()->getPreviousSibling()); TASSERT(range->getEndOffset() == 2); //inserting element node before the selected text node range->insertNode(E120); //only end offset moves and new node gets into range as being inserted at boundary point TASSERT(range->getStartContainer() == rt->getFirstChild()->getNextSibling()->getFirstChild()); TASSERT(!XMLString::compareString(range->getStartContainer()->getNodeValue(),xTi)); TASSERT(range->getStartOffset() == 2); TASSERT(range->getEndContainer() == rt->getFirstChild()->getNextSibling()->getLastChild()->getPreviousSibling()); TASSERT(!XMLString::compareString(range->getEndContainer()->getNodeValue(),xtle)); TASSERT(range->getEndOffset() == 2); TASSERT(E11->getChildNodes()->getLength()==6); //checking the text replacment range->getStartContainer()->setNodeValue(xReplacedText); //only the start offset is impact TASSERT(range->getStartContainer() == rt->getFirstChild()->getNextSibling()->getFirstChild()); TASSERT(!XMLString::compareString(range->getStartContainer()->getNodeValue(),xReplacedText)); TASSERT(range->getStartOffset() == 0); TASSERT(range->getEndContainer() == rt->getFirstChild()->getNextSibling()->getLastChild()->getPreviousSibling()); TASSERT(!XMLString::compareString(range->getEndContainer()->getNodeValue(),xtle)); TASSERT(range->getEndOffset() == 2); //After above operations, now the tree looks like: //

ReplacedTextInsertedTexttleAnother Text

Blah xyz

//i.e., Body(rt) // _____________|_______________________________________________________________________________________________ // | | | | // Element3(E122) ___H1(E11)___________________________________________________________ Element2(E121) P(E12) // | | | | | | | // "ReplacedText" "" Element1(E120) "InsertedText"(E210) "tle" "Another Text" "Blah xyz" // // range has "ReplacedText" as start container and "tle" as end container // and 0 as start offset, 2 as end offset //changing the selection. Preparing for 'surround' range->setStart(range->getStartContainer()->getParentNode(), 2); range->setEnd(range->getStartContainer(), 5); TASSERT(!XMLString::compareString(range->getStartContainer()->getNodeName(),xH1)); TASSERT(!XMLString::compareString(range->getEndContainer()->getNodeName(),xH1)); TASSERT(!XMLString::compareString(range->toString(),xInsertedTexttle)); range->surroundContents(E311); TASSERT(!XMLString::compareString(range->getStartContainer()->getNodeName(),xH1)); TASSERT(range->getStartOffset() == 2); TASSERT(!XMLString::compareString(range->getEndContainer()->getNodeName(),xH1)); TASSERT(range->getEndOffset() == 3); TASSERT(E11->getChildNodes()->getLength()==4); TASSERT(E311->getChildNodes()->getLength()==3); TASSERT(!XMLString::compareString(range->toString(),xInsertedTexttle)); //After above operations, now the tree looks like: //

ReplacedTextInsertedTexttleAnother Text

Blah xyz

//i.e., Body(rt) // _____________|_________________________________________________________________________ // | | | | // Element3(E122) ___H1(E11)___________________________________ Element2(E121) P(E12) // | | | | | // "ReplacedText" "" SurroundNode1(E311) "Another Text" "Blah xyz" // ____________ |_____________________________ // | | | // Element1(E120) "InsertedText"(E210) "tle" // // range has H1 as start and end container and 2 as start offset, 3 as end offset //testing cloning DOMRange* aRange = range->cloneRange(); TASSERT(aRange->getStartContainer() == range->getStartContainer()); TASSERT(aRange->getEndContainer() == range->getEndContainer()); TASSERT(aRange->getStartOffset() == 2); TASSERT(aRange->getEndOffset() == 3); //changing the new ranges start aRange->setStart(aRange->getStartContainer()->getFirstChild(), 1); //comparing the ranges short compVal = range->compareBoundaryPoints(DOMRange::END_TO_END, aRange); TASSERT(compVal == 0); compVal = range->compareBoundaryPoints(DOMRange::START_TO_START, aRange); TASSERT(compVal == 1); compVal = range->compareBoundaryPoints(DOMRange::START_TO_END, aRange); TASSERT(compVal == 1); compVal = range->compareBoundaryPoints(DOMRange::END_TO_START, aRange); TASSERT(compVal == -1); //testing collapse //not collapsed TASSERT(range->getCollapsed() == false); TASSERT(range->getStartOffset() == 2); TASSERT(range->getEndOffset() == 3); //selectNodeContents range->selectNodeContents(rt->getLastChild()->getFirstChild()); TASSERT(range->getStartContainer() == rt->getLastChild()->getFirstChild()); TASSERT(range->getEndContainer() == rt->getLastChild()->getFirstChild()); TASSERT(range->getStartOffset() == 0); TASSERT(range->getEndOffset() == 8); TASSERT(!XMLString::compareString(range->toString(),xBlahxyz)); //testing collapse range->collapse(true); //collapse to start TASSERT(range->getCollapsed() == true); TASSERT(range->getStartOffset() == 0); TASSERT(range->getEndOffset() == 0); TASSERT(!XMLString::compareString(range->toString(),XMLUni::fgZeroLenString)); TASSERT(aRange->getEndOffset() == 3); //other range is unaffected TASSERT(!XMLString::compareString(aRange->toString(),xeplacedTextInsertedTexttle)); //After above operations, now the tree looks like: //

ReplacedTextInsertedTexttleAnother Text

Blah xyz

//i.e., Body(rt) // _____________|_________________________________________________________________________ // | | | | // Element3(E122) ___H1(E11)___________________________________ Element2(E121) P(E12) // | | | | | // "ReplacedText" "" SurroundNode1(E311) "Another Text" "Blah xyz" // ____________ |_____________________________ // | | | // Element1(E120) "InsertedText"(E210) "tle" // // range has "Blah xyz" as start and end container and 0 as start and end offset (collapsed) // aRange has "ReplacedText" as start container and H1 as end container // and 1 as start offset and 3 as end offset DOMDocumentFragment* docFrag = aRange->cloneContents(); TASSERT( docFrag != 0); range->selectNode(rt->getFirstChild()); TASSERT(range->getStartContainer() == rt); TASSERT(range->getEndContainer() == rt); TASSERT(range->getStartOffset() == 0); TASSERT(range->getEndOffset() == 1); //Testing toString() const XMLCh* str = aRange->toString(); TASSERT(!XMLString::compareString(str, xeplacedTextInsertedTexttle)); //start and end before and after tests range->setStartBefore(rt->getFirstChild()); TASSERT(range->getStartOffset() == 0); range->setEndBefore(rt->getFirstChild()); TASSERT(range->getEndOffset() == 0); range->setStartAfter(rt->getLastChild()); TASSERT(range->getStartOffset() == 4); range->setStartAfter(rt->getFirstChild()); TASSERT(range->getStartOffset() == 1); range->setEndBefore(rt->getLastChild()); TASSERT(range->getEndOffset() == 3); range->setEndAfter(rt->getLastChild()); TASSERT(range->getEndOffset() == 4); //testing extract() DOMDocumentFragment* frag2 = range->extractContents(); TASSERT( frag2 != 0); //After above operations, now the tree looks like: // //i.e., Body(rt) // | // Element3(E122) // // aRange has rt as start and end container, and 1 as start and end offset (collapsed) // range has rt as start and end container, and 1 as start and end offset (collapsed) // //and frag2 looks: // ReplacedTextInsertedTexttleAnother Text

Blah xyz

//i.e., Body(rt) // ______________|________________________________________________________ // | | | // ___H1(E11)___________________________________ Element2(E121) P(E12) // | | | | | //"ReplacedText" "" SurroundNode1(E311) "Another Text" "Blah xyz" // ____________ |_____________________________ // | | | // Element1(E120) "InsertedText"(E210) "tle" // //the tree do not have those node anymore after extract //only Element3 left TASSERT(rt->getChildNodes()->getLength()==1); //aRange is collapsed TASSERT(aRange->getCollapsed() == true); TASSERT(aRange->getStartContainer() == rt); TASSERT(aRange->getStartOffset() == 1); TASSERT(aRange->getEndContainer() == rt); TASSERT(aRange->getEndOffset() == 1); //range is collapsed as well TASSERT(range->getCollapsed() == true); TASSERT(range->getStartContainer() == rt); TASSERT(range->getStartOffset() == 1); TASSERT(range->getEndContainer() == rt); TASSERT(range->getEndOffset() == 1); //test the document fragment frag2 TASSERT(frag2->getChildNodes()->getLength()==3); //detaching the other range aRange->detach(); range->detach(); //*************************************************************** //another set of test //TEST createRange, setStart and setEnd, insertnode //*************************************************************** DOMImplementation* impl2 = DOMImplementationRegistry::getDOMImplementation(tempStr); DOMDocument* doc2 = impl2->createDocument(); DOMElement* root2 = doc2->createElement(xroot2); doc2->appendChild(root2); //case 1: simple text node, start==end // text1 DOMElement* body = doc2->createElement(xBody); DOMText* text1 = doc2->createTextNode(xtext1); body->appendChild(text1); root2->appendChild(body); //set range DOMRange* range1 = doc2->createRange(); range1->setStart(text1,1); range1->setEnd(text1,3); TASSERT(!XMLString::compareString(range1->toString(),xex)); TASSERT(range1->getStartOffset()==1); TASSERT(!XMLString::compareString(range1->getStartContainer()->getNodeValue(),xtext1)); TASSERT(range1->getEndOffset()==3); TASSERT(!XMLString::compareString(range1->getEndContainer()->getNodeValue(),xtext1)); //now insert a text node //ttext2ext1 DOMText* text2 = doc2->createTextNode(xtext2); range1->insertNode(text2); TASSERT(!XMLString::compareString(range1->toString(),xtext2ex)); TASSERT(range1->getStartOffset()==1); TASSERT(!XMLString::compareString(range1->getStartContainer()->getNodeValue(),xt)); TASSERT(range1->getEndOffset()==2); TASSERT(!XMLString::compareString(range1->getEndContainer()->getNodeValue(),xext1)); //now insert a non-text node //ttext2ext1 DOMElement* p1 = doc2->createElement(xp1); range1->insertNode(p1); TASSERT(!XMLString::compareString(range1->toString(),xtext2ex)); TASSERT(range1->getStartOffset()==1); TASSERT(!XMLString::compareString(range1->getStartContainer()->getNodeValue(),xt)); TASSERT(range1->getEndOffset()==2); TASSERT(!XMLString::compareString(range1->getEndContainer()->getNodeValue(),xext1)); //case 2: non-text node, start==end //

DOMElement* head = doc2->createElement(xhead); DOMElement* h1 = doc2->createElement(xH1); head->appendChild(h1); root2->appendChild(head); //set range DOMRange* range2 = doc2->createRange(); range2->setStart(head,0); range2->setEnd(head,1); TASSERT(!XMLString::compareString(range2->toString(),XMLUni::fgZeroLenString)); TASSERT(range2->getStartOffset()==0); TASSERT(!XMLString::compareString(range2->getStartContainer()->getNodeName(),xhead)); TASSERT(range2->getEndOffset()==1); TASSERT(!XMLString::compareString(range2->getEndContainer()->getNodeName(),xhead)); //now insert a non-text node //

DOMElement* h2 = doc2->createElement(xh2); range2->insertNode(h2); TASSERT(!XMLString::compareString(range2->toString(),XMLUni::fgZeroLenString)); TASSERT(range2->getStartOffset()==0); TASSERT(!XMLString::compareString(range2->getStartContainer()->getNodeName(),xhead)); TASSERT(range2->getEndOffset()==2); TASSERT(!XMLString::compareString(range2->getEndContainer()->getNodeName(),xhead)); //now insert a text node //text5

DOMText* text5 = doc2->createTextNode(xtext5); range2->insertNode(text5); TASSERT(!XMLString::compareString(range2->toString(),xtext5)); TASSERT(range2->getStartOffset()==0); TASSERT(!XMLString::compareString(range2->getStartContainer()->getNodeName(),xhead)); TASSERT(range2->getEndOffset()==3); TASSERT(!XMLString::compareString(range2->getEndContainer()->getNodeName(),xhead)); //case 3: simple text node, start!=end // text3 DOMElement* body2 = doc2->createElement(xbody2); DOMText* text3 = doc2->createTextNode(xtext3); body2->appendChild(text3); root2->appendChild(body2); //set range DOMRange* range3 = ((DOMDocumentRange*)doc2)->createRange(); range3->setStart(text3,1); range3->setEnd(body2,1); TASSERT(!XMLString::compareString(range3->toString(),xext3)); TASSERT(range3->getStartOffset()==1); TASSERT(!XMLString::compareString(range3->getStartContainer()->getNodeValue(),xtext3)); TASSERT(range3->getEndOffset()==1); TASSERT(!XMLString::compareString(range3->getEndContainer()->getNodeName(),xbody2)); //now insert a textnode //ttext4ext3 DOMText* text4 = doc2->createTextNode(xtext4); range3->insertNode(text4); TASSERT(!XMLString::compareString(range3->toString(),XMLUni::fgZeroLenString)); TASSERT(range3->getStartOffset()==1); TASSERT(!XMLString::compareString(range3->getStartContainer()->getNodeValue(),xt)); TASSERT(range3->getEndOffset()==1); TASSERT(!XMLString::compareString(range3->getEndContainer()->getNodeName(),xbody2)); //now insert a non-text node //ttext4ext3 DOMElement* p2 = doc2->createElement(xp2); range3->insertNode(p2); //extra empty node caused by splitting 't' TASSERT(!XMLString::compareString(range3->toString(),XMLUni::fgZeroLenString)); TASSERT(range3->getStartOffset()==1); TASSERT(!XMLString::compareString(range3->getStartContainer()->getNodeValue(),xt)); TASSERT(range3->getEndOffset()==1); TASSERT(!XMLString::compareString(range3->getEndContainer()->getNodeName(),xbody2)); //test toString a bit range3->setStart(body2,1); range3->setEnd(body2,5); TASSERT(!XMLString::compareString(range3->toString(),xtext4ext3)); range3->setStart(body2,0); range3->setEnd(body2,5); TASSERT(!XMLString::compareString(range3->toString(),xttext4ext3)); //case 4: non-text node, start!=end //

DOMElement* head2 = doc2->createElement(xhead2); DOMElement* h3 = doc2->createElement(xh3); head2->appendChild(h3); root2->appendChild(head2); //set range DOMRange* range4 = doc2->createRange(); range4->setStart(head2,0); range4->setEnd(h3,0); TASSERT(!XMLString::compareString(range4->toString(),XMLUni::fgZeroLenString)); TASSERT(range4->getStartOffset()==0); TASSERT(!XMLString::compareString(range4->getStartContainer()->getNodeName(),xhead2)); TASSERT(range4->getEndOffset()==0); TASSERT(!XMLString::compareString(range4->getEndContainer()->getNodeName(),xh3)); //now insert a non-text node //

DOMElement* h4 = doc2->createElement(xh4); range4->insertNode(h4); TASSERT(!XMLString::compareString(range4->toString(),XMLUni::fgZeroLenString)); TASSERT(range4->getStartOffset()==0); TASSERT(!XMLString::compareString(range4->getStartContainer()->getNodeName(),xhead2)); TASSERT(range4->getEndOffset()==0); TASSERT(!XMLString::compareString(range4->getEndContainer()->getNodeName(),xh3)); //now insert a text node //text6

DOMText* text6 = doc2->createTextNode(xtext6); range4->insertNode(text6); TASSERT(!XMLString::compareString(range4->toString(),xtext6)); TASSERT(range4->getStartOffset()==0); TASSERT(!XMLString::compareString(range4->getStartContainer()->getNodeName(),xhead2)); TASSERT(range4->getEndOffset()==0); TASSERT(!XMLString::compareString(range4->getEndContainer()->getNodeName(),xh3)); //*************************************************************** // quick test of updating //*************************************************************** // text1 DOMElement* upbody = doc2->createElement(xupbody); DOMText* uptext1 = doc2->createTextNode(xuptext1); upbody->appendChild(uptext1); root2->appendChild(upbody); DOMRange* uprange = ((DOMDocumentRange*)doc2)->createRange(); uprange->setStart(upbody,0); uprange->setEnd(upbody,1); TASSERT(!XMLString::compareString(uprange->toString(),xuptext1)); TASSERT(uprange->getStartOffset()==0); TASSERT(!XMLString::compareString(uprange->getStartContainer()->getNodeName(),xupbody)); TASSERT(uprange->getEndOffset()==1); TASSERT(!XMLString::compareString(uprange->getEndContainer()->getNodeName(),xupbody)); // split text uptext1->splitText(1); TASSERT(!XMLString::compareString(uprange->toString(),xu)); TASSERT(uprange->getStartOffset()==0); TASSERT(!XMLString::compareString(uprange->getStartContainer()->getNodeName(),xupbody)); TASSERT(uprange->getEndOffset()==1); TASSERT(!XMLString::compareString(uprange->getEndContainer()->getNodeName(),xupbody)); //insert node DOMElement* upbody2 = doc2->createElement(xupbody2); DOMText* uptext2 = doc2->createTextNode(xuptext2); upbody2->appendChild(uptext2); root2->appendChild(upbody2); DOMRange* uprange2 = ((DOMDocumentRange*)doc2)->createRange(); uprange2->setStart(uptext2,1); uprange2->setEnd(upbody2,1); DOMRange* uprange3 = doc2->createRange(); uprange3->setStart(uptext2,1); uprange3->setEnd(upbody2,1); TASSERT(!XMLString::compareString(uprange2->toString(),xptext2)); TASSERT(uprange2->getStartOffset()==1); TASSERT(!XMLString::compareString(uprange2->getStartContainer()->getNodeValue(),xuptext2)); TASSERT(uprange2->getEndOffset()==1); TASSERT(!XMLString::compareString(uprange2->getEndContainer()->getNodeName(),xupbody2)); TASSERT(!XMLString::compareString(uprange3->toString(),xptext2)); TASSERT(uprange3->getStartOffset()==1); TASSERT(!XMLString::compareString(uprange3->getStartContainer()->getNodeValue(),xuptext2)); TASSERT(uprange3->getEndOffset()==1); TASSERT(!XMLString::compareString(uprange3->getEndContainer()->getNodeName(),xupbody2)); DOMElement* upp1 = doc2->createElement(xupp1); uprange2->insertNode(upp1); TASSERT(!XMLString::compareString(uprange2->toString(),XMLUni::fgZeroLenString)); TASSERT(uprange2->getStartOffset()==1); TASSERT(!XMLString::compareString(uprange2->getStartContainer()->getNodeValue(),xu)); TASSERT(uprange2->getEndOffset()==1); TASSERT(!XMLString::compareString(uprange2->getEndContainer()->getNodeName(),xupbody2)); TASSERT(!XMLString::compareString(uprange3->toString(),XMLUni::fgZeroLenString)); TASSERT(uprange3->getStartOffset()==1); TASSERT(!XMLString::compareString(uprange3->getStartContainer()->getNodeValue(),xu)); TASSERT(uprange3->getEndOffset()==1); TASSERT(!XMLString::compareString(uprange3->getEndContainer()->getNodeName(),xupbody2)); //*************************************************************** //another set of test //abHello cdef // // ______________________foo_____________________ // | | | | | // c moo "ab" a cool // | | | // b "Hello cd" "ef" // DOMImplementation* impl3 = DOMImplementationRegistry::getDOMImplementation(tempStr); DOMDocument* doc3 = impl3->createDocument(); DOMElement* root3 = doc3->createElement(xroot); doc3->appendChild(root3); DOMElement* foo = doc3->createElement(xfoo); DOMElement* moo = doc3->createElement(xmoo); DOMElement* cool = doc3->createElement(xcool); DOMText* ab = doc3->createTextNode(xab); DOMText* cd = doc3->createTextNode(xHellocd); DOMText* ef = doc3->createTextNode(xef); DOMElement* a = doc3->createElement(xa); DOMElement* b = doc3->createElement(xb); DOMElement* c = doc3->createElement(xc); root3->appendChild(foo); foo->appendChild(c); foo->appendChild(moo); foo->appendChild(ab); foo->appendChild(a); foo->appendChild(cool); moo->appendChild(b); a->appendChild(cd); cool->appendChild(ef); //*************************************************************** //TEST toString //*************************************************************** DOMRange* newtestrange = ((DOMDocumentRange*)doc3)->createRange(); //case 1: //start container is text node // i) end container is also text node // a) start==end // b) start!=end // ii) end container is not text node // a) start==end => impossible // b) start!=end // //case 2: //start container is not text node // i) end container is text node // a) start==end => impossible // b) start!=end // ii) end container is not text node // a) start==end // b) start!=end //case 1, i, a newtestrange->setStart( cd, 1 ); newtestrange->setEnd( cd, 4 ); TASSERT(!XMLString::compareString(newtestrange->toString(),xell)); //case 1, i, b newtestrange->setStart( cd, 1 ); newtestrange->setEnd( ef, 2 ); TASSERT(!XMLString::compareString(newtestrange->toString(),xellocdef)); //case 1, ii, b newtestrange->setStart( cd, 1 ); newtestrange->setEnd( foo, 4 ); TASSERT(!XMLString::compareString(newtestrange->toString(),xellocd)); //case 2, i, b newtestrange->setStart( foo, 1 ); newtestrange->setEnd( cd, 5 ); TASSERT(!XMLString::compareString(newtestrange->toString(),xabHello)); //case 2, ii, a newtestrange->setStart( foo, 1 ); newtestrange->setEnd( foo, 4 ); TASSERT(!XMLString::compareString(newtestrange->toString(),xabHellocd)); //case 2, ii, b newtestrange->setStart( moo, 1 ); newtestrange->setEnd( foo, 4 ); TASSERT(!XMLString::compareString(newtestrange->toString(),xabHellocd)); //*************************************************************** //test removeChild //*************************************************************** DOMRange* newrange = doc3->createRange(); newrange->setStart( moo, 0 ); newrange->setEnd( foo, 4 ); TASSERT(newrange->getStartOffset()==0); TASSERT(!XMLString::compareString(newrange->getStartContainer()->getNodeName(),xmoo)); TASSERT(newrange->getEndOffset()==4); TASSERT(!XMLString::compareString(newrange->getEndContainer()->getNodeName(),xfoo)); TASSERT(!XMLString::compareString(newrange->toString(),xabHellocd)); DOMNode* n = newrange->cloneContents(); UNUSED(n); // silence warning DOMNodeList* nol = foo->getChildNodes(); //removing moo DOMNode* rem = foo->removeChild(nol->item(1)); rem->release(); TASSERT(newrange->getStartOffset()==1); TASSERT(!XMLString::compareString(newrange->getStartContainer()->getNodeName(),xfoo)); TASSERT(newrange->getEndOffset()==3); TASSERT(!XMLString::compareString(newrange->getEndContainer()->getNodeName(),xfoo)); TASSERT(!XMLString::compareString(newrange->toString(),xabHellocd)); TASSERT(newtestrange->getStartOffset()==1); TASSERT(!XMLString::compareString(newtestrange->getStartContainer()->getNodeName(),xfoo)); TASSERT(newtestrange->getEndOffset()==3); TASSERT(!XMLString::compareString(newtestrange->getEndContainer()->getNodeName(),xfoo)); TASSERT(!XMLString::compareString(newtestrange->toString(),xabHellocd)); // Now do some exception test newrange->detach(); EXCEPTION_TEST(newrange->setStart( moo, 0 ), DOMException::INVALID_STATE_ERR); EXCEPTION_TEST(newtestrange->setStartBefore(moo), DOMRangeException::INVALID_NODE_TYPE_ERR); doc->release(); doc2->release(); doc3->release(); } } //creating the dom tree and tests // And call the termination method XMLPlatformUtils::Terminate(); if (errorOccurred) { printf("Test Failed\n"); return 4; } printf("Test Run Successfully\n"); return 0; }; xerces-c-3.1.1/tests/src/DOM/TypeInfo/0000755000175000017500000000000011363617312016353 5ustar borisborisxerces-c-3.1.1/tests/src/DOM/TypeInfo/data/0000755000175000017500000000000011363617312017264 5ustar borisborisxerces-c-3.1.1/tests/src/DOM/TypeInfo/data/TypeInfo.dtd0000644000175000017500000000115410254305044021511 0ustar borisboris xerces-c-3.1.1/tests/src/DOM/TypeInfo/data/combined.dtd0000644000175000017500000000037310254305044021536 0ustar borisboris xerces-c-3.1.1/tests/src/DOM/TypeInfo/data/TypeInfoNoDTD.xml0000644000175000017500000001115010254305044022364 0ustar borisboris string true 2.0 2.1 2.1 P1Y2M3DT10H30M 2000-10-30T11:12:00 11:12:00 2000-10-30 1999-01 1999 --01-08 ---21 --12-- 0FB7 abcd http://www.example.com/ xsla example example en example example bar example example 1 -1 -1 1 1 1 1 1 1 1 1 1 1 20 hello abcd hello 50 abcd hello 50 abcdefg 50 hello 200 abcdefg 50 25 11 99 74 49 a a b a b c la la la la abcd asa 74 a b hello1 xerces-c-3.1.1/tests/src/DOM/TypeInfo/data/TypeInfo.xml0000644000175000017500000001125410254305044021540 0ustar borisboris string true 2.0 2.1 2.1 P1Y2M3DT10H30M 2000-10-30T11:12:00 11:12:00 2000-10-30 1999-01 1999 --01-08 ---21 --12-- 0FB7 abcd http://www.example.com/ xsla example example en example example bar example example 1 -1 -1 1 1 1 1 1 1 1 1 1 1 20 hello abcd hello 50 abcd hello 50 abcdefg 50 hello 200 abcdefg 50 25 11 99 74 49 a a b a b c la la la la abcd asa 74 a b hello1 xerces-c-3.1.1/tests/src/DOM/TypeInfo/data/combined.xml0000644000175000017500000000040110254305044021553 0ustar borisboris content content xerces-c-3.1.1/tests/src/DOM/TypeInfo/data/TypeInfoNoDTD.xsd0000644000175000017500000003166310254305044022375 0ustar borisboris xerces-c-3.1.1/tests/src/DOM/TypeInfo/data/TypeInfo.xsd0000644000175000017500000003203310254305044021534 0ustar borisboris xerces-c-3.1.1/tests/src/DOM/TypeInfo/data/TypeInfoJustDTD.xml0000644000175000017500000000051010254305044022733 0ustar borisboris xerces-c-3.1.1/tests/src/DOM/TypeInfo/data/SecondSchema.xsd0000644000175000017500000000125210254305044022332 0ustar borisboris xerces-c-3.1.1/tests/src/DOM/TypeInfo/data/combined.xsd0000644000175000017500000000066010254305044021560 0ustar borisboris xerces-c-3.1.1/tests/src/DOM/TypeInfo/TypeInfo.cpp0000644000175000017500000012712610522202400020605 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "TypeInfo.hpp" #include #include #include #include #include #include #include #if defined(XERCES_NEW_IOSTREAMS) #include #else #include #endif #define UNUSED(x) { if(x!=0){} } #define DOMTYPEINFOTEST(info, type, uri, line) \ tmp = XMLString::equals(info->getTypeName(), type) && XMLString::equals(info->getTypeNamespace(), uri);\ if(!tmp) { \ XERCES_STD_QUALIFIER cerr << "DOMTypeInfo test failed at line, " << line << "\nExpected values : typename '" << XMLString::transcode((XMLCh*)type) << "', uri '" << XMLString::transcode((XMLCh*)uri); \ XERCES_STD_QUALIFIER cerr << "'\nActual values : typename '"; \ if(info->getTypeName()) \ XERCES_STD_QUALIFIER cerr << XMLString::transcode(info->getTypeName()); \ else \ XERCES_STD_QUALIFIER cerr << "(null)"; \ XERCES_STD_QUALIFIER cerr << "', uri '"; \ if(info->getTypeNamespace()) \ XERCES_STD_QUALIFIER cerr << XMLString::transcode(info->getTypeNamespace()); \ else \ XERCES_STD_QUALIFIER cerr << "(null)"; \ XERCES_STD_QUALIFIER cerr << "'\n" << XERCES_STD_QUALIFIER endl; \ passed = false; \ } bool tmp; // --------------------------------------------------------------------------- // This is a simple class that lets us do easy (though not terribly efficient) // trancoding of char* data to XMLCh data. // --------------------------------------------------------------------------- class XStr { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- XStr(const char* const toTranscode) { // Call the private transcoding method fUnicodeForm = XMLString::transcode(toTranscode); } ~XStr() { XMLString::release(&fUnicodeForm); } // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const XMLCh* unicodeForm() const { return fUnicodeForm; } private : // ----------------------------------------------------------------------- // Private data members // // fUnicodeForm // This is the Unicode XMLCh format of the string. // ----------------------------------------------------------------------- XMLCh* fUnicodeForm; }; #define X(str) XStr(str).unicodeForm() // This is a simple class that lets us do easy (though not terribly efficient) // trancoding of XMLCh data to local code page for display. // --------------------------------------------------------------------------- class StrX { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- StrX(const XMLCh* const toTranscode) { // Call the private transcoding method fLocalForm = XMLString::transcode(toTranscode); } ~StrX() { XMLString::release(&fLocalForm); } // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const char* localForm() const { return fLocalForm; } private : // ----------------------------------------------------------------------- // Private data members // // fLocalForm // This is the local code page form of the string. // ----------------------------------------------------------------------- char* fLocalForm; }; #define StrX(str) StrX(str).localForm() TypeInfo::TypeInfo() { try { XMLPlatformUtils::Initialize(); } catch(const XMLException &toCatch) { XERCES_STD_QUALIFIER cerr << "Error during Xerces-c Initialization.\n" << " Exception message:" << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl; } parser = 0; } TypeInfo::~TypeInfo() { XMLPlatformUtils::Terminate(); } bool TypeInfo::testInBuiltTypesOnAttributes(bool DTDPresent) { bool passed = true; DOMElement *testEle = findElement(X("attrTest")); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), X("attrTestType"), X(""), __LINE__); DOMAttr *testAttr; testAttr = testEle->getAttributeNodeNS(0, X("anySimpleType")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_ANYSIMPLETYPE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("string")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_STRING, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("boolean")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_BOOLEAN, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("decimal")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_DECIMAL, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("float")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_FLOAT, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("double")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_DOUBLE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("duration")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_DURATION, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("dateTime")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_DATETIME, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("time")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_TIME, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("date")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_DATE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("gYearMonth")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_YEARMONTH, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("gYear")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_YEAR, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("gMonthDay")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_MONTHDAY, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("gDay")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_DAY, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("gMonth")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_MONTH, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("hexBinary")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_HEXBINARY, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("base64Binary")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_BASE64BINARY, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("anyURI")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_ANYURI, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("QName")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_QNAME, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("normalizedString")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_NORMALIZEDSTRING, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("token")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_TOKEN, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("language")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_LANGUAGE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("NMTOKEN")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), XMLUni::fgNmTokenString, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("NMTOKENS")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), XMLUni::fgNmTokensString, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("Name")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_NAME, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("NCName")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_NCNAME, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("ID")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), XMLUni::fgIDString, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("IDREF")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), XMLUni::fgIDRefString, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("IDREFS")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), XMLUni::fgIDRefsString, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); if(DTDPresent) { testAttr = testEle->getAttributeNodeNS(0, X("ENTITY")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), XMLUni::fgEntityString, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("ENTITIES")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), XMLUni::fgEntitiesString, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); } testAttr = testEle->getAttributeNodeNS(0, X("integer")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_INTEGER, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("nonPositiveInteger")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_NONPOSITIVEINTEGER, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("negativeInteger")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_NEGATIVEINTEGER, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("long")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_LONG, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("int")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_INT, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("short")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_SHORT, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("byte")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_BYTE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("nonNegativeInteger")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_NONNEGATIVEINTEGER, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("unsignedLong")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_ULONG, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("unsignedInt")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_UINT, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("unsignedShort")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_USHORT, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("unsignedByte")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_UBYTE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("positiveInteger")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_POSITIVEINTEGER, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); //couple of defaulted ones testAttr = testEle->getAttributeNodeNS(0, X("defaultString")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_STRING, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("defaultInt")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_INTEGER, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); //ns attr testAttr = testEle->getAttributeNodeNS(X("http://www.w3.org/2000/xmlns/"), X("prefix")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_ANYURI, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(X("http://www.w3.org/2001/XMLSchema-instance"), X("noNamespaceSchemaLocation")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_ANYURI, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); return passed; } bool TypeInfo::testInBuiltTypesOnElements() { bool passed = true; DOMNode *docEle = doc->getDocumentElement(); UNUSED(docEle); // silence warning //the eleTest element. DOMElement *testEle = findElement(X("eleTest")); testEle = (DOMElement *)testEle->getFirstChild()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_STRING, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_BOOLEAN, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_DECIMAL, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_FLOAT, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_DOUBLE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_DURATION, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_DATETIME, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_TIME, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_DATE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_YEARMONTH, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_YEAR, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_MONTHDAY, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_DAY, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_MONTH, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_HEXBINARY, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_BASE64BINARY, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_ANYURI, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_QNAME, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_NORMALIZEDSTRING, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_TOKEN, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_LANGUAGE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), XMLUni::fgNmTokenString, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), XMLUni::fgNmTokensString, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_NAME, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_NCNAME, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_INTEGER, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_NONPOSITIVEINTEGER, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_NEGATIVEINTEGER, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_LONG, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_INT, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_SHORT, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_BYTE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_NONNEGATIVEINTEGER, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_ULONG, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_UINT, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_USHORT, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_UBYTE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_POSITIVEINTEGER, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgATTVAL_ANYTYPE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); return passed; } bool TypeInfo::testSimpleDerived() { bool passed = true; DOMNode *docEle = doc->getDocumentElement(); UNUSED(docEle); // silence warning //element simpleDerTest DOMElement *testEle = (DOMElement *)docEle->getFirstChild()->getNextSibling()->getNextSibling() ->getNextSibling()->getNextSibling()->getNextSibling(); DOMAttr *testAtt = testEle->getAttributeNodeNS(0, X("decimalDerived")); DOMTYPEINFOTEST(testAtt->getSchemaTypeInfo(), X("decimalDerivedType"), X(""), __LINE__); testAtt = testEle->getAttributeNodeNS(0, X("stringDerived")); DOMTYPEINFOTEST(testAtt->getSchemaTypeInfo(), X("stringDerivedType"), X(""), __LINE__); testEle = (DOMElement *)testEle->getFirstChild()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), X("decimalDerivedType"), X(""), __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), X("stringDerivedType"), X(""), __LINE__); return passed; } bool TypeInfo::testComplexTypes() { bool passed = true; DOMNode *docEle = doc->getDocumentElement(); UNUSED(docEle); // silence warning //element complexTest DOMElement *testEle = findElement(X("complexTest")); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), X("complexTestType"), X(""), __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), X("complexDerTestType"), X(""), __LINE__); return passed; } bool TypeInfo::testUnions() { bool passed = true; DOMNode *docEle = doc->getDocumentElement(); UNUSED(docEle); // silence warning DOMAttr *testAttr; //element unionTest DOMElement *testEle = findElement(X("unionTest")); testEle = (DOMElement *)testEle->getFirstChild()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), X("decimalDerivedType"), X(""), __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), X("stringDerivedType"), X(""), __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), X("decimal"), SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), X("string"), SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); testAttr = testEle->getAttributeNodeNS(0, X("testAttr")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), X("decimalDerivedType"), X(""), __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("testAttr2")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), X("stringDerivedType"), X(""), __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); testAttr = testEle->getAttributeNodeNS(0, X("testAttr")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), X("stringDerivedType"), X(""), __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("testAttr2")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), X("decimalDerivedType"), X(""), __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); testAttr = testEle->getAttributeNodeNS(0, X("testAttr")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), X("decimal"), SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("testAttr2")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), X("string"), SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); testAttr = testEle->getAttributeNodeNS(0, X("testAttr")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), X("string"), SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("testAttr2")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), X("decimal"), SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); return passed; } bool TypeInfo::testAnonymous() { bool passed = true; DOMNode *docEle = doc->getDocumentElement(); UNUSED(docEle); // silence warning DOMAttr *testAttr; //element anonymousTest DOMElement *testEle = findElement(X("anonymousTest")); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), X("__AnonC1"), X(""), __LINE__); testAttr = testEle->getAttributeNodeNS(X(""), X("partNum")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), X("__AnonS7"), X(""), __LINE__); testEle = (DOMElement *)testEle->getFirstChild()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), X("__AnonS2"), X(""), __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), X("__AnonS4"), X(""), __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), X("__AnonS6"), X(""), __LINE__); return passed; } bool TypeInfo::testXsiTypes() { bool passed = true; DOMNode *docEle = doc->getDocumentElement(); UNUSED(docEle); // silence warning //element xsiTypeTest DOMElement *testEle = findElement(X("xsiTypeTest")); testEle = (DOMElement *)testEle->getFirstChild()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), X("base"), X(""), __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), X("level1"), X(""), __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), X("level2"), X(""), __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), X("baseComplex"), X(""), __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), X("level1Complex"), X(""), __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), X("level2Complex"), X(""), __LINE__); return passed; } bool TypeInfo::testAnys() { bool passed = true; DOMNode *docEle = doc->getDocumentElement(); UNUSED(docEle); // silence warning DOMAttr *testAttr; //element anyTestPartial DOMElement *testEle = findElement(X("anyTestPartial")); DOMElement *back = testEle; testAttr = testEle->getAttributeNodeNS(X("http://www.w3.org/1999/xhtml"), X("attr2")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), 0, 0, __LINE__); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), X("anyTestPartialType"), X(""), __LINE__); testEle = (DOMElement *)testEle->getFirstChild()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), 0, 0, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), 0, 0, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_STRING, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); //element anyTest testEle = (DOMElement *)back->getNextSibling()->getNextSibling(); back = testEle; testAttr = testEle->getAttributeNodeNS(X("http://www.secondSchema"), X("attr1")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_STRING, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(X("http://www.secondSchema"), X("attr2")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_INTEGER, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(X("http://www.secondSchema"), X("attr3")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_STRING, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(X("http://www.secondSchema"), X("attr4")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_INTEGER, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), X("anyTestType"), X(""), __LINE__); testEle = (DOMElement *)testEle->getFirstChild()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_STRING, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_STRING, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), 0, 0, __LINE__); //anyTestAttr1 testEle = (DOMElement *)back->getNextSibling()->getNextSibling(); back = testEle; testAttr = testEle->getAttributeNodeNS(X("http://www.secondSchema"), X("attr5")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), 0, 0, __LINE__); //anyTestAttr2 testEle = (DOMElement *)back->getNextSibling()->getNextSibling(); back = testEle; testAttr = testEle->getAttributeNodeNS(X("http://www.secondSchema"), X("attr5")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), 0, 0, __LINE__); //anyTestMissing testEle = (DOMElement *)back->getNextSibling()->getNextSibling(); back = testEle; DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), X("anyTestType"), X(""), __LINE__); return passed; } bool TypeInfo::testInvaild() { bool passed = true; DOMNode *docEle = doc->getDocumentElement(); UNUSED(docEle); // silence warning DOMAttr *testAttr; DOMTYPEINFOTEST(((DOMElement *)docEle)->getSchemaTypeInfo(), X("rootType"), X(""), __LINE__); //element invalidTest DOMElement *testEle = findElement(X("invalidTest")); testAttr = testEle->getAttributeNodeNS(X(""), X("simple")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), X("stringDerivedType"), X(""), __LINE__); testAttr = testEle->getAttributeNodeNS(X(""), X("invalid")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), 0, 0, __LINE__); testEle = (DOMElement *)testEle->getFirstChild()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), X("stringDerivedType"), X(""), __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), X("baseComplex"), X(""), __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); // this is a "number" of type "base" but it has a xsi:type="stringDerivedType" DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), X("stringDerivedType"), X(""), __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), X("baseComplex"), X(""), __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), X("uType"), X(""), __LINE__); //an undeclared element does not have anon value. Test this here testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), 0, 0, __LINE__); DOMElement *testEle2 = (DOMElement *)testEle->getFirstChild()->getNextSibling(); DOMTYPEINFOTEST(testEle2->getSchemaTypeInfo(), 0, 0, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), X("attrOnlyType"), X(""), __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), X("attrOnlyType"), X(""), __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), X("prohibitedAttrType"), X(""), __LINE__); return passed; } bool TypeInfo::compareDOMTypeInfo(const DOMTypeInfo *info, const XMLCh* type, const XMLCh* uri) { return XMLString::equals(info->getTypeName(), type) && XMLString::equals(info->getTypeNamespace(), uri); } bool TypeInfo::testDTD() { bool passed = true; DOMElement *testEle = doc->getDocumentElement(); DOMAttr *testAttr; DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), X(""), X(""), __LINE__); testAttr = testEle->getAttributeNodeNS(X(""), X("cdata")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), X("CDATA"), X("http://www.w3.org/TR/REC-xml"), __LINE__); testAttr = testEle->getAttributeNodeNS(X(""), X("enum")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), X("ENUMERATION"), X("http://www.w3.org/TR/REC-xml"), __LINE__); testAttr = testEle->getAttributeNodeNS(X(""), X("id")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), X("ID"), X("http://www.w3.org/TR/REC-xml"), __LINE__); testAttr = testEle->getAttributeNodeNS(X(""), X("idRef")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), X("IDREF"), X("http://www.w3.org/TR/REC-xml"), __LINE__); testAttr = testEle->getAttributeNodeNS(X(""), X("idRefs")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), X("IDREFS"), X("http://www.w3.org/TR/REC-xml"), __LINE__); testAttr = testEle->getAttributeNodeNS(X(""), X("nmToken")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), X("NMTOKEN"), X("http://www.w3.org/TR/REC-xml"), __LINE__); testAttr = testEle->getAttributeNodeNS(X(""), X("nmTokenDefault")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), X("NMTOKEN"), X("http://www.w3.org/TR/REC-xml"), __LINE__); testAttr = testEle->getAttributeNodeNS(X(""), X("nmTokenDefault2")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), X("NMTOKEN"), X("http://www.w3.org/TR/REC-xml"), __LINE__); testAttr = testEle->getAttributeNodeNS(X(""), X("nmTokens")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), X("NMTOKENS"), X("http://www.w3.org/TR/REC-xml"), __LINE__); testAttr = testEle->getAttributeNodeNS(X(""), X("entity")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), X("ENTITY"), X("http://www.w3.org/TR/REC-xml"), __LINE__); testAttr = testEle->getAttributeNodeNS(X(""), X("entities")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), X("ENTITIES"), X("http://www.w3.org/TR/REC-xml"), __LINE__); testAttr = testEle->getAttributeNodeNS(X(""), X("notation")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), X("NOTATION"), X("http://www.w3.org/TR/REC-xml"), __LINE__); testAttr = testEle->getAttributeNodeNS(X(""), X("noDecl")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), X("CDATA"), X("http://www.w3.org/TR/REC-xml"), __LINE__); testAttr = testEle->getAttributeNode(X("xmlns:foo")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), X("CDATA"), X("http://www.w3.org/TR/REC-xml"), __LINE__); return passed; } bool TypeInfo::combinedTest() { bool passed = true; DOMNode *docEle = doc->getDocumentElement(); UNUSED(docEle); // silence warning DOMAttr *testAttr; DOMElement *testEle = doc->getDocumentElement(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), X("rootType"), X(""), __LINE__); testAttr = testEle->getAttributeNodeNS(X(""), X("attBoth")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_STRING, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(X(""), X("attSchema")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), SchemaSymbols::fgDT_STRING, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(X(""), X("attDTD")); DOMTYPEINFOTEST(testAttr->getSchemaTypeInfo(), 0, 0, __LINE__); testEle = (DOMElement *)testEle->getFirstChild()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), SchemaSymbols::fgDT_STRING, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getSchemaTypeInfo(), 0, 0, __LINE__); return passed; } DOMElement* TypeInfo::findElement(const XMLCh *name) const { DOMNode *toTest = doc->getDocumentElement()->getFirstChild(); while(!XMLString::equals(toTest->getNodeName(), name)) { toTest = toTest->getNextSibling(); } return (DOMElement *)toTest; } int main(int /*argc*/, char ** /*argv*/) { bool passed = true; TypeInfo ti; try { //first the combined DTD/Schema scanner ti.parser = new XercesDOMParser; ti.parser->setValidationScheme(XercesDOMParser::Val_Auto); ti.parser->setCreateSchemaInfo(true); ti.parser->setDoNamespaces(true); ti.parser->setDoSchema(true); ti.parser->parse("data/TypeInfo.xml"); ti.doc = ti.parser->getDocument(); } catch (...) { XERCES_STD_QUALIFIER cerr << "parsing data/TypeInfo.xml failed at line" << __LINE__ << XERCES_STD_QUALIFIER endl; delete ti.parser; return false; } // test only if we got a doc if (ti.doc) { passed &= ti.testInBuiltTypesOnAttributes(true); passed &= ti.testInBuiltTypesOnElements(); passed &= ti.testSimpleDerived(); passed &= ti.testComplexTypes(); passed &= ti.testUnions(); passed &= ti.testAnonymous(); passed &= ti.testXsiTypes(); passed &= ti.testAnys(); passed &= ti.testInvaild(); } else XERCES_STD_QUALIFIER cout << "DOMTypeInfo test at line " << __LINE__ << "was not carried out" << XERCES_STD_QUALIFIER endl; delete ti.parser; //lets do the same for the just schema scanner try { ti.parser = new XercesDOMParser; ti.parser->setValidationScheme(XercesDOMParser::Val_Auto); ti.parser->setCreateSchemaInfo(true); ti.parser->setDoNamespaces(true); ti.parser->setDoSchema(true); ti.parser->useScanner(X("SGXMLScanner")); ti.parser->parse("data/TypeInfoNoDTD.xml"); ti.doc = ti.parser->getDocument(); } catch (...) { XERCES_STD_QUALIFIER cerr << "parsing data/TypeInfoNoDTD.xml failed at line" << __LINE__ << XERCES_STD_QUALIFIER endl; delete ti.parser; return false; } // test only if we got a doc if (ti.doc) { passed &= ti.testInBuiltTypesOnAttributes(false); passed &= ti.testInBuiltTypesOnElements(); passed &= ti.testSimpleDerived(); passed &= ti.testComplexTypes(); passed &= ti.testUnions(); passed &= ti.testAnonymous(); passed &= ti.testXsiTypes(); passed &= ti.testAnys(); passed &= ti.testInvaild(); } else XERCES_STD_QUALIFIER cout << "DOMTypeInfo test at line " << __LINE__ << "was not carried out" << XERCES_STD_QUALIFIER endl; delete ti.parser; //now default for DTD try { ti.parser = new XercesDOMParser; ti.parser->setValidationScheme(XercesDOMParser::Val_Auto); ti.parser->setCreateSchemaInfo(true); ti.parser->parse("data/TypeInfoJustDTD.xml"); ti.doc = ti.parser->getDocument(); } catch (...) { XERCES_STD_QUALIFIER cerr << "parsing data/TypeInfoJustDTD.xml failed at line" << __LINE__ << XERCES_STD_QUALIFIER endl; delete ti.parser; return false; } // test only if we got a doc if (ti.doc) { passed &= ti.testDTD(); } else XERCES_STD_QUALIFIER cout << "DOMTypeInfo test at line " << __LINE__ << "was not carried out" << XERCES_STD_QUALIFIER endl; delete ti.parser; //and specific scanner try { ti.parser = new XercesDOMParser; ti.parser->setValidationScheme(XercesDOMParser::Val_Auto); ti.parser->setCreateSchemaInfo(true); ti.parser->useScanner(X("DGXMLScanner")); ti.parser->parse("data/TypeInfoJustDTD.xml"); ti.doc = ti.parser->getDocument(); } catch (...) { XERCES_STD_QUALIFIER cerr << "parsing data/TypeInfoJustDTD.xml failed at line" << __LINE__ << XERCES_STD_QUALIFIER endl; delete ti.parser; return false; } // test only if we got a doc if (ti.doc) { passed &= ti.testDTD(); } else XERCES_STD_QUALIFIER cout << "DOMTypeInfo test at line " << __LINE__ << "was not carried out" << XERCES_STD_QUALIFIER endl; delete ti.parser; try { ti.parser = new XercesDOMParser; ti.parser->setValidationScheme(XercesDOMParser::Val_Auto); ti.parser->setCreateSchemaInfo(true); ti.parser->setDoNamespaces(true); ti.parser->setDoSchema(true); ti.parser->parse("data/combined.xml"); ti.doc = ti.parser->getDocument(); } catch (...) { XERCES_STD_QUALIFIER cerr << "parsing data/combined.xml failed at line" << __LINE__ << XERCES_STD_QUALIFIER endl; delete ti.parser; return false; } // test only if we got a doc if (ti.doc) { passed &= ti.combinedTest(); } else XERCES_STD_QUALIFIER cout << "DOMTypeInfo test at line " << __LINE__ << "was not carried out" << XERCES_STD_QUALIFIER endl; delete ti.parser; if (!passed) { XERCES_STD_QUALIFIER cerr << "test failed" << XERCES_STD_QUALIFIER endl; return 4; } XERCES_STD_QUALIFIER cerr << "Test Run Successfully" << XERCES_STD_QUALIFIER endl; return 0; } xerces-c-3.1.1/tests/src/DOM/TypeInfo/TypeInfo.hpp0000644000175000017500000000311010522202400020574 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // define null for compatibility with original Java source code. #define null 0 #include XERCES_CPP_NAMESPACE_USE XERCES_CPP_NAMESPACE_BEGIN class XercesDOMParser; XERCES_CPP_NAMESPACE_END class TypeInfo { public: TypeInfo(); ~TypeInfo(); bool testInBuiltTypesOnElements(); bool testInBuiltTypesOnAttributes(bool DTDPresent); bool testSimpleDerived(); bool testComplexTypes(); bool testUnions(); bool testAnonymous(); bool testXsiTypes(); bool testInvaild(); bool testAnys(); bool testDTD(); bool combinedTest(); bool compareDOMTypeInfo(const DOMTypeInfo *info, const XMLCh* type, const XMLCh* uri); XercesDOMParser *parser; DOMDocument *doc; private: DOMElement* findElement(const XMLCh *name) const ; }; xerces-c-3.1.1/tests/src/DOM/Traversal/0000755000175000017500000000000011363617312016561 5ustar borisborisxerces-c-3.1.1/tests/src/DOM/Traversal/Traversal.cpp0000644000175000017500000004565511030714661021243 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // // Various DOM tests. // Contents include // 1. NodeIterator tests // 2. Tree Walker tests // All individual are wrapped in a memory leak checker. // // This is NOT a complete test of DOM functionality. // /* * $Id: Traversal.cpp 671894 2008-06-26 13:29:21Z borisk $ */ #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_USE bool errorOccurred = false; #define UNUSED(x) { if(x!=0){} } #define TASSERT(c) tassert((c), __FILE__, __LINE__) void tassert(bool c, const char *file, int line) { if (!c) { printf("Failure. Line %d, file %s\n", line, file); errorOccurred = true; } }; #define EXCEPTION_TEST(operation, expected_exception) \ { \ try { \ operation; \ printf(" Error: no exception thrown at line %d\n", __LINE__); \ errorOccurred = true; \ } \ catch (DOMException &e) { \ if (e.code != expected_exception) { \ printf(" Wrong exception code: %d at line %d\n", e.code, __LINE__); \ errorOccurred = true; \ } \ } \ catch (...) { \ printf(" Wrong exception thrown at line %d\n", __LINE__); \ errorOccurred = true; \ } \ } class MyFilter : public DOMNodeFilter { public: MyFilter(short nodeType, bool reject=false) : DOMNodeFilter(), fNodeType(nodeType), fReject(reject) {}; virtual FilterAction acceptNode(const DOMNode* node) const; private: short fNodeType; bool fReject; }; /* Node Types can be of the following: ELEMENT_NODE = 1, ATTRIBUTE_NODE = 2, TEXT_NODE = 3, CDATA_SECTION_NODE = 4, ENTITY_REFERENCE_NODE = 5, ENTITY_NODE = 6, PROCESSING_INSTRUCTION_NODE = 7, COMMENT_NODE = 8, DOCUMENT_NODE = 9, DOCUMENT_TYPE_NODE = 10, DOCUMENT_FRAGMENT_NODE = 11, NOTATION_NODE = 12 */ DOMNodeFilter::FilterAction MyFilter::acceptNode(const DOMNode* node) const { if (fNodeType == 0) return DOMNodeFilter::FILTER_ACCEPT; if (node->getNodeType() == fNodeType) { return DOMNodeFilter::FILTER_ACCEPT; } else { return fReject ? DOMNodeFilter::FILTER_REJECT : DOMNodeFilter::FILTER_SKIP; } } int main() { try { XMLPlatformUtils::Initialize(); } catch (const XMLException& toCatch) { char *pMessage = XMLString::transcode(toCatch.getMessage()); fprintf(stderr, "Error during XMLPlatformUtils::Initialize(). \n" " Message is: %s\n", pMessage); XMLString::release(&pMessage); return -1; } // Create a XMLCh buffer for string manipulation XMLCh tempStr[4000]; XMLCh featureStr[100]; XMLString::transcode("Traversal",featureStr,99); // // Doc - Create a small document tree // { //creating a DOM Tree /* Tests are based on the tree structure below doc - root - E11 (attr01) - textNode1 - E111 - E112 - cdataSec - E12 (attr02) - textNode2 - E121 - E122 - E13 - E131 - docPI - comment */ DOMImplementation* impl = DOMImplementationRegistry::getDOMImplementation(featureStr); DOMDocument* doc = impl->createDocument(); //Creating a root element XMLString::transcode("RootElement", tempStr, 3999); DOMElement* root = doc->createElement(tempStr); doc->appendChild(root); //Creating the siblings of root XMLString::transcode("FirstSibling", tempStr, 3999); DOMElement* E11 = doc->createElement(tempStr); root->appendChild(E11); XMLString::transcode("SecondSibling", tempStr, 3999); DOMElement* E12 = doc->createElement(tempStr); root->appendChild(E12); XMLString::transcode("ThirdSibling", tempStr, 3999); DOMElement* E13 = doc->createElement(tempStr); root->appendChild(E13); //Attaching texts to few siblings XMLString::transcode("Text1", tempStr, 3999); DOMText* textNode1 = doc->createTextNode(tempStr); E11->appendChild(textNode1); XMLString::transcode("Text2", tempStr, 3999); DOMText* textNode2 = doc->createTextNode(tempStr); E12->appendChild(textNode2); //creating child of siblings XMLString::transcode("FirstSiblingChild1", tempStr, 3999); DOMElement* E111 = doc->createElement(tempStr); E11->appendChild(E111); XMLString::transcode("Attr01", tempStr, 3999); DOMAttr* attr01 = doc->createAttribute(tempStr); DOMNode* rem = E11->setAttributeNode(attr01); if (rem) rem->release(); XMLString::transcode("FirstSiblingChild2", tempStr, 3999); DOMElement* E112 = doc->createElement(tempStr); E11->appendChild(E112); XMLString::transcode("SecondSiblingChild1", tempStr, 3999); DOMElement* E121 = doc->createElement(tempStr); E12->appendChild(E121); XMLString::transcode("Attr01", tempStr, 3999); DOMAttr* attr02 = doc->createAttribute(tempStr); rem = E12->setAttributeNode(attr02); if (rem) rem->release(); XMLString::transcode("SecondSiblingChild2", tempStr, 3999); DOMElement* E122 = doc->createElement(tempStr); E12->appendChild(E122); XMLString::transcode("ThirdSiblingChild1", tempStr, 3999); DOMElement* E131 = doc->createElement(tempStr); E13->appendChild(E131); XMLString::transcode("DocComment", tempStr, 3999); DOMComment* comment = doc->createComment(tempStr); root->appendChild(comment); XMLString::transcode("DocCDataSection", tempStr, 3999); DOMCDATASection* cdataSec = doc->createCDATASection(tempStr); E11->appendChild(cdataSec); XMLString::transcode("DocPI", tempStr, 3999); XMLCh piStr[] = {chLatin_D, chLatin_o, chLatin_c, chLatin_P, chLatin_I, chNull}; DOMProcessingInstruction* docPI = doc->createProcessingInstruction(piStr, tempStr); E13->appendChild(docPI); /* following are whatToShow types: SHOW_ALL = 0x0000FFFF, SHOW_ELEMENT = 0x00000001, SHOW_ATTRIBUTE = 0x00000002, SHOW_TEXT = 0x00000004, SHOW_CDATA_SECTION = 0x00000008, SHOW_ENTITY_REFERENCE = 0x00000010, SHOW_ENTITY = 0x00000020, SHOW_PROCESSING_INSTRUCTION = 0x00000040, SHOW_COMMENT = 0x00000080, SHOW_DOCUMENT = 0x00000100, SHOW_DOCUMENT_TYPE = 0x00000200, SHOW_DOCUMENT_FRAGMENT = 0x00000400, SHOW_NOTATION = 0x00000800 */ ////////// NodeIterator Test Cases //////////////// { // all node iterating test DOMNode* node = doc->getFirstChild(); UNUSED(node); // silence warning unsigned long whatToShow = DOMNodeFilter::SHOW_ALL; MyFilter* filter = new MyFilter(0); DOMNodeIterator* iter = ((DOMDocumentTraversal*)doc)->createNodeIterator(root, whatToShow, filter, true); TASSERT(iter->getWhatToShow() == 65535); TASSERT(iter->getExpandEntityReferences() == 1); DOMNode* nd; nd = iter->nextNode(); TASSERT (nd ==root); nd = iter->nextNode(); TASSERT (nd ==E11); nd = iter->nextNode(); TASSERT(nd == textNode1); nd = iter->nextNode(); TASSERT(nd == E111); nd = iter->nextNode(); TASSERT(nd == E112); nd = iter->nextNode(); TASSERT(nd == cdataSec); nd = iter->nextNode(); TASSERT(nd == E12); nd = iter->nextNode(); TASSERT(nd == textNode2); nd = iter->nextNode(); TASSERT(nd == E121); nd = iter->nextNode(); TASSERT(nd == E122); nd = iter->nextNode(); TASSERT(nd == E13); nd = iter->nextNode(); TASSERT(nd == E131); nd = iter->nextNode(); TASSERT(nd == docPI); nd = iter->nextNode(); TASSERT(nd == comment); nd = iter->previousNode(); TASSERT(nd == comment); nd = iter->previousNode(); TASSERT(nd == docPI); nd = iter->previousNode(); TASSERT(nd == E131); //test getRoot TASSERT(iter->getRoot() == root); TASSERT(iter->getRoot() != doc); delete filter; } { //element node iterating test DOMNode* node = doc->getFirstChild(); UNUSED(node); // silence warning unsigned long whatToShow = DOMNodeFilter::SHOW_ELEMENT; MyFilter* filter = new MyFilter(DOMNode::ELEMENT_NODE); DOMNodeIterator* iter = doc->createNodeIterator(root, whatToShow, filter, true); TASSERT(iter->getWhatToShow() == 1); TASSERT(iter->getExpandEntityReferences() == 1); DOMNode* nd; nd = iter->nextNode(); TASSERT (nd ==root); nd = iter->nextNode(); TASSERT (nd ==E11); nd = iter->nextNode(); TASSERT(nd == E111); nd = iter->nextNode(); TASSERT(nd == E112); nd = iter->nextNode(); TASSERT(nd == E12); nd = iter->nextNode(); TASSERT(nd == E121); nd = iter->nextNode(); TASSERT(nd == E122); nd = iter->nextNode(); TASSERT(nd == E13); nd = iter->nextNode(); TASSERT(nd == E131); nd = iter->previousNode(); TASSERT(nd == E131); nd = iter->previousNode(); TASSERT(nd == E13); nd = iter->previousNode(); TASSERT(nd == E122); delete filter; } { // Text node iterating test DOMNode* node = doc->getFirstChild(); UNUSED(node); // silence warning unsigned long whatToShow = DOMNodeFilter::SHOW_TEXT; MyFilter* filter = new MyFilter(DOMNode::TEXT_NODE); DOMNodeIterator* iter = ((DOMDocumentTraversal*)doc)->createNodeIterator(root, whatToShow, filter, true); TASSERT(iter->getWhatToShow() == 4); TASSERT(iter->getExpandEntityReferences() == 1); DOMNode* nd; nd = iter->nextNode(); TASSERT (nd ==textNode1); nd = iter->nextNode(); TASSERT (nd ==textNode2); nd = iter->previousNode(); TASSERT(nd == textNode2); delete filter; } { //CDataSection node itearating test DOMNode* node = doc->getFirstChild(); UNUSED(node); // silence warning unsigned long whatToShow = DOMNodeFilter::SHOW_CDATA_SECTION; MyFilter* filter = new MyFilter(DOMNode::CDATA_SECTION_NODE); DOMNodeIterator* iter = doc->createNodeIterator(root, whatToShow, filter, true); TASSERT(iter->getWhatToShow() == 8); TASSERT(iter->getExpandEntityReferences() == 1); DOMNode* nd; nd = iter->nextNode(); TASSERT(nd == cdataSec); nd = iter->nextNode(); TASSERT(nd == 0); delete filter; } { // PI nodes iterating test DOMNode* node = doc->getFirstChild(); UNUSED(node); // silence warning unsigned long whatToShow = DOMNodeFilter::SHOW_PROCESSING_INSTRUCTION; MyFilter* filter = new MyFilter(DOMNode::PROCESSING_INSTRUCTION_NODE); DOMNodeIterator* iter = ((DOMDocumentTraversal*)doc)->createNodeIterator(root, whatToShow, filter, true); TASSERT(iter->getWhatToShow() == 64); TASSERT(iter->getExpandEntityReferences() == 1); DOMNode* nd; nd = iter->nextNode(); TASSERT(nd == docPI); nd = iter->nextNode(); TASSERT(nd == 0); delete filter; } { DOMNode* node = doc->getFirstChild(); UNUSED(node); // silence warning unsigned long whatToShow = DOMNodeFilter::SHOW_COMMENT; MyFilter* filter = new MyFilter(DOMNode::COMMENT_NODE); DOMNodeIterator* iter = doc->createNodeIterator(root, whatToShow, filter, true); TASSERT(iter->getWhatToShow() == 128); TASSERT(iter->getExpandEntityReferences() == 1); DOMNode* nd; nd = iter->nextNode(); TASSERT(nd == comment); nd = iter->nextNode(); TASSERT(nd == 0); delete filter; } ////////// TreeWalker Test Cases //////////////// { unsigned long whatToShow = DOMNodeFilter::SHOW_ALL; DOMTreeWalker* tw = ((DOMDocumentTraversal*)doc)->createTreeWalker(doc, whatToShow, 0, true); TASSERT(tw->getCurrentNode() == doc); TASSERT(tw->firstChild() == root); TASSERT(tw->nextSibling() == 0); TASSERT(tw->lastChild() == comment); TASSERT(tw->firstChild() == 0); TASSERT(tw->lastChild() == 0); TASSERT(tw->nextSibling() == 0); TASSERT(tw->nextNode() == 0); TASSERT(tw->previousSibling() == E13); TASSERT(tw->previousNode() == E122); TASSERT(tw->parentNode() == E12); TASSERT(tw->firstChild() == textNode2); TASSERT(tw->previousSibling() == 0); TASSERT(tw->nextSibling() == E121); TASSERT(tw->nextNode() == E122); TASSERT(tw->parentNode() == E12); TASSERT(tw->previousSibling() == E11); TASSERT(tw->previousNode() == root); TASSERT(tw->previousNode() == doc); TASSERT(tw->previousNode() == 0); TASSERT(tw->parentNode() == 0); TASSERT(tw->getCurrentNode() == doc); } { MyFilter mf(DOMNode::ELEMENT_NODE); unsigned long whatToShow = DOMNodeFilter::SHOW_ALL; DOMTreeWalker* tw = doc->createTreeWalker(root, whatToShow, &mf, true); TASSERT(tw->getCurrentNode() == root); TASSERT(tw->parentNode() == 0); //should not change currentNode TASSERT(tw->getCurrentNode() == root); TASSERT(tw->nextNode() == E11); TASSERT(tw->nextNode() == E111); tw->setCurrentNode(E12); //when first is not visible, should it go to its sibling? TASSERT(tw->firstChild() == E121); //first visible child TASSERT(tw->previousSibling() == 0); } { MyFilter mf(DOMNode::ELEMENT_NODE, true); unsigned long whatToShow = DOMNodeFilter::SHOW_ELEMENT; DOMTreeWalker* tw = ((DOMDocumentTraversal*)doc)->createTreeWalker(root, whatToShow, &mf, true); tw->setCurrentNode(E12); TASSERT(tw->firstChild() == E121); //still first visible child } { MyFilter mf(DOMNode::TEXT_NODE); unsigned long whatToShow = DOMNodeFilter::SHOW_TEXT; DOMTreeWalker* tw = doc->createTreeWalker(root, whatToShow, &mf, true); //when first is not visible, should it go to its descendent? TASSERT(tw->firstChild() == textNode1); //E11 skipped TASSERT(tw->firstChild() == 0); TASSERT(tw->nextNode() == textNode2); TASSERT(tw->nextSibling() == 0); TASSERT(tw->parentNode() == 0); //no visible ancestor TASSERT(tw->getCurrentNode() == textNode2); tw->setCurrentNode(root); //when last is not visible, should it go to its sibling & descendent? TASSERT(tw->lastChild() == textNode2); //last visible child tw->setCurrentNode(E12); //when next sibling is not visible, should it go to its descendent? TASSERT(tw->nextSibling() == 0); } { MyFilter mf(DOMNode::TEXT_NODE, true); unsigned long whatToShow = DOMNodeFilter::SHOW_TEXT; DOMTreeWalker* tw = ((DOMDocumentTraversal*)doc)->createTreeWalker(root, whatToShow, &mf, true); TASSERT(tw->firstChild() == 0); //E11 rejected and no children is TEXT TASSERT(tw->getCurrentNode() == root); TASSERT(tw->nextNode() == 0); //E11 rejected so can't get to textNode1 //test getRoot TASSERT(tw->getRoot() == root); TASSERT(tw->getRoot() != doc); } doc->release(); }; // And call the termination method XMLPlatformUtils::Terminate(); if (errorOccurred) { printf("Test Failed\n"); return 4; } printf("Test Run Successfully\n"); return 0; }; xerces-c-3.1.1/tests/src/DOM/DOMTest/0000755000175000017500000000000011363617312016075 5ustar borisborisxerces-c-3.1.1/tests/src/DOM/DOMTest/DTest.h0000644000175000017500000001116211243463252017271 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DTest.h 806472 2009-08-21 09:19:38Z amassari $ */ /** * This class tests methods for XML DOM implementation * * DOMException errors are tested by calls to DOMExceptionsTest from: Main, docBuilder... * */ #include // define null for compatibility with original Java source code. #define null 0 XERCES_CPP_NAMESPACE_USE XERCES_CPP_NAMESPACE_BEGIN class XercesDOMParser; XERCES_CPP_NAMESPACE_END class DOMTest { public: static DOMElement *testElementNode; static DOMAttr *testAttributeNode; static DOMText *testTextNode; static DOMCDATASection *testCDATASectionNode; static DOMEntityReference *testEntityReferenceNode; static DOMEntity *testEntityNode; static DOMProcessingInstruction *testProcessingInstructionNode; static DOMComment *testCommentNode; static DOMDocument *testDocumentNode; static DOMDocumentType *testDocumentTypeNode; static DOMDocumentFragment *testDocumentFragmentNode; static DOMNotation *testNotationNode; DOMTest(); DOMDocument* createDocument(); DOMDocumentType* createDocumentType(DOMDocument* doc, XMLCh* name); DOMEntity* createEntity(DOMDocument* doc, XMLCh* name); DOMNotation* createNotation(DOMDocument* doc, XMLCh* name); bool docBuilder(DOMDocument* document, XMLCh* name); void findTestNodes(DOMDocument* document); void findTestNodes(DOMNode* node); bool testAttr(DOMDocument* document); bool testCDATASection(DOMDocument* document); bool testCharacterData(DOMDocument* document); bool testChildNodeList(DOMDocument* document); bool testComment(DOMDocument* document); bool testDeepNodeList(DOMDocument* document); /** **** ALL DOMDocument create methods are run in docBuilder except createAttribute which is in testAttribute** */ bool testDocument(DOMDocument* document); /** ********This really isn't needed, only exists to throw NO_MODIFICATION_ALLOWED_ERR ******** */ bool testDocumentFragment(DOMDocument* document); bool testDocumentType(DOMDocument* document); bool testDOMerrors(DOMDocument* document); bool testXPath(DOMDocument* document); bool testDOMImplementation(DOMDocument* document); bool testElement(DOMDocument* document); bool testEntity(DOMDocument* document); bool testEntityReference(DOMDocument* document); /** ********* This is only for a test of cloneNode "deep"******* ********* And for error tests********* */ bool testNode(DOMDocument* document); bool testNotation(DOMDocument* document); bool testPI(DOMDocument* document); bool testText(DOMDocument* document); bool treeCompare(DOMNode* node, DOMNode* node2); bool testBaseURI(XercesDOMParser* parser); bool testWholeText(XercesDOMParser* parser); bool testLSExceptions(); bool testElementTraversal(); bool testRegex(); bool testScanner(XercesDOMParser* parser); bool testUtilFunctions(); }; class myUserDataHandler : public DOMUserDataHandler { private: DOMOperationType currentType; XMLCh* currentKey; void* currentData; DOMNode* currentSrc; DOMNode* currentDst; public: myUserDataHandler() : currentKey(0), currentData(0), currentSrc(0), currentDst(0) {}; virtual void handle(DOMOperationType operation, const XMLCh* const key, void* data, const DOMNode* src, DOMNode* dst) { currentType = operation; currentKey = (XMLCh*) key; currentData = data; currentSrc = (DOMNode*) src; currentDst = dst; }; DOMOperationType getCurrentType() { return currentType; }; XMLCh* getCurrentKey() const { return currentKey; }; void* getCurrentData() const { return currentData; }; DOMNode* getCurrentSrc() const { return currentSrc; }; DOMNode* getCurrentDst() const { return currentDst; }; }; xerces-c-3.1.1/tests/src/DOM/DOMTest/DTest.cpp0000644000175000017500000070131311272044767017640 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DTest.cpp 830538 2009-10-28 13:41:11Z amassari $ */ /** * This class tests methods for XML DOM implementation * DOMException errors are tested by calls to DOMExceptionsTest from: Main, docBuilder... * */ #include #include "DTest.h" #include #include #include #include #include #include #include #include #include #include #include #define UNUSED(x) { if(x!=0){} } #define EXCEPTIONSTEST(operation, expectedException, resultFlag, testNum) \ { \ try \ { \ operation; \ fprintf(stderr, "Exceptions Test # %d: no Exception thrown->\n", testNum); \ } \ catch (DOMException &e) \ { \ if (e.code != expectedException) { \ fprintf(stderr, "Exceptions Test # %d: wrong DOMException thrown->\n", \ testNum); \ resultFlag = false; \ } \ } \ catch (...) \ { \ fprintf(stderr, "Exceptions Test # %d: unknown exception thrown->\n", \ testNum); \ resultFlag = false; \ } \ } #define USERDATAHANDLERTEST(userhandler, uoperation, ukey, udata, usrc, udst, uline) \ if (userhandler.getCurrentType() != uoperation) {\ fprintf(stderr, "DOMUserDataHandler::handler's operationType does not work in line %i\n", uline); \ OK = false; \ } \ if (XMLString::compareString(userhandler.getCurrentKey(), ukey)) {\ fprintf(stderr, "DOMUserDataHandler::handler's key does not work in line %i\n", uline); \ OK = false; \ } \ if (userhandler.getCurrentData() != udata) {\ fprintf(stderr, "DOMUserDataHandler::handler's data does not work in line %i\n", uline); \ OK = false; \ } \ if (userhandler.getCurrentSrc() != usrc) {\ fprintf(stderr, "DOMUserDataHandler::handler's src does not work in line %i\n", uline); \ OK = false; \ } \ if (userhandler.getCurrentDst() != udst) {\ fprintf(stderr, "DOMUserDataHandler::handler's dst does not work in line %i\n", uline); \ OK = false; \ } #define LOOKUPDEFAULTNSTEST(thisNode, uri, pass, line) \ if(thisNode->isDefaultNamespace(uri)) { \ if(!pass) { \ fprintf(stderr, "DOMNode::isDefaultNamespace returned true in line %i\n", line); \ OK = false; \ } \ } \ else { \ if(pass) { \ fprintf(stderr, "DOMNode::isDefaultNamespace returned false in line %i\n", line); \ OK = false; \ } \ } #define LOOKUPNSTEST(thisNode, prefix, uri, pass, line) \ prefixResult = XMLString::compareString(thisNode->lookupPrefix(uri), prefix); \ uriResult = XMLString::compareString(thisNode->lookupNamespaceURI(prefix), uri); \ if(pass) { \ if(prefixResult != 0) { \ fprintf(stderr, "DOMNode::lookupNamespacePrefix does not work in line %i\n", line); \ OK = false; \ } \ if(uriResult != 0) { \ fprintf(stderr, "DOMNode::lookupNamespaceURI does not work in line %i\n", line); \ OK = false;\ } \ } \ else { \ if(prefixResult == 0) { \ fprintf(stderr, "DOMNode::lookupNamespacePrefix does not work in line %i\n", line); \ OK = false; \ } \ if(uriResult == 0) { \ fprintf(stderr, "DOMNode::lookupNamespaceURI does not work in line %i\n", line); \ OK = false; \ } \ } \ int prefixResult; int uriResult; #define COMPARETREEPOSITIONTEST(thisNode, otherNode, position, line) \ myposition = thisNode->compareDocumentPosition(otherNode); \ if ((myposition & position) == 0) {\ fprintf(stderr, "DOMNode::compareDocumentPosition does not work in line %i\n", line); \ OK = false; \ } // temp position for compareDocumentPosition short myposition; //temp XMLCh String Buffer XMLCh tempStr[4000]; XMLCh tempStr2[4000]; XMLCh tempStr3[4000]; XMLCh tempStr4[4000]; XMLCh tempStr5[4000]; //DOMUserDataHandler myUserDataHandler userhandler; DOMElement* DOMTest::testElementNode; DOMAttr* DOMTest::testAttributeNode; DOMText* DOMTest::testTextNode; DOMCDATASection* DOMTest::testCDATASectionNode; DOMEntityReference* DOMTest::testEntityReferenceNode; DOMEntity* DOMTest::testEntityNode; DOMProcessingInstruction* DOMTest::testProcessingInstructionNode; DOMComment* DOMTest::testCommentNode; DOMDocument* DOMTest::testDocumentNode; DOMDocumentType* DOMTest::testDocumentTypeNode; DOMDocumentFragment* DOMTest::testDocumentFragmentNode; DOMNotation* DOMTest::testNotationNode; /** * * */ DOMTest::DOMTest() { } /** * * @return DOMDocument * */ DOMDocument* DOMTest::createDocument() { XMLCh coreStr[100]; XMLString::transcode("Core",coreStr,99); DOMImplementation* impl = DOMImplementationRegistry::getDOMImplementation(coreStr); return impl->createDocument(); } /** * * @return DOMDocumentType * @param name XMLCh* * */ DOMDocumentType* DOMTest::createDocumentType(DOMDocument* doc, XMLCh* name) { return doc->createDocumentType(name); //Replace with a DOMDocumentType* creator } /** * * @return org.w3c.dom.DOMEntity * @param doc org.w3c.dom.DOMDocument * @param name XMLCh* * */ DOMEntity* DOMTest::createEntity(DOMDocument* doc, XMLCh* name) { return doc->createEntity(name); } /** * * @return org.w3c.dom.DOMNotation * @param doc org.w3c.dom.DOMDocument * @param name XMLCh* * */ DOMNotation* DOMTest::createNotation(DOMDocument* doc, XMLCh* name) { return doc->createNotation(name); } /** * This method builds test documents for the XML DOM implementation * @param document org.w3c.dom.DOMDocument * @param name document's name * @param type document's type * */ bool DOMTest::docBuilder(DOMDocument* document, XMLCh* nameIn) { XMLCh* name = XMLString::replicate(nameIn); DOMDocument* doc = document; bool OK = true; //name + "FirstElement" XMLString::transcode("FirstElement", tempStr2, 3999); XMLString::copyString(tempStr, name); XMLString::catString(tempStr, tempStr2); DOMElement* docFirstElement = doc->createElement(tempStr); doc->appendChild(docFirstElement); //name + "FirstElement", name + "firstElement" XMLString::catString(tempStr, name); XMLString::transcode("FirstElement", tempStr2, 3999); XMLString::catString(tempStr, tempStr2); XMLString::catString(tempStr2, name); XMLString::transcode("firstElement", tempStr3, 3999); XMLString::catString(tempStr2, tempStr3); docFirstElement->setAttribute(tempStr, tempStr2); DOMAttr* docFirstElementAttr = docFirstElement->getAttributeNode(tempStr); //name + "TargetProcessorChannel" + "This is " + doc->getNodeName() + "'s processing instruction"); XMLString::copyString(tempStr, name); XMLString::transcode("TargetProcessorChannel", tempStr2, 3999); XMLString::catString(tempStr, tempStr2); XMLString::transcode("This is ", tempStr2, 3999); XMLString::catString(tempStr2, doc->getNodeName()); XMLString::transcode("'s processing instruction", tempStr3, 3999); XMLString::catString(tempStr2, tempStr3); DOMProcessingInstruction* docProcessingInstruction = doc->createProcessingInstruction(tempStr, tempStr2); docFirstElement->appendChild(docProcessingInstruction); //name + "TestBody" XMLString::copyString(tempStr, name); XMLString::transcode("TestBody", tempStr2, 3999); XMLString::catString(tempStr, tempStr2); DOMElement* docBody = doc->createElement(tempStr); docFirstElement->appendChild(docBody); //name + "BodyLevel21" XMLString::copyString(tempStr, name); XMLString::transcode("BodyLevel21", tempStr2, 3999); XMLString::catString(tempStr, tempStr2); DOMElement* docBodyLevel21 = doc->createElement(tempStr); //name + "BodyLevel22" XMLString::copyString(tempStr, name); XMLString::transcode("BodyLevel22", tempStr2, 3999); XMLString::catString(tempStr, tempStr2); DOMElement* docBodyLevel22 = doc->createElement(tempStr); //name + "BodyLevel23" XMLString::copyString(tempStr, name); XMLString::transcode("BodyLevel23", tempStr2, 3999); XMLString::catString(tempStr, tempStr2); DOMElement* docBodyLevel23 = doc->createElement(tempStr); //name + "BodyLevel24" XMLString::copyString(tempStr, name); XMLString::transcode("BodyLevel24", tempStr2, 3999); XMLString::catString(tempStr, tempStr2); DOMElement* docBodyLevel24 = doc->createElement(tempStr); docBody->appendChild(docBodyLevel21); docBody->appendChild(docBodyLevel22); docBody->appendChild(docBodyLevel23); docBody->appendChild(docBodyLevel24); //name + "BodyLevel31" XMLString::copyString(tempStr, name); XMLString::transcode("BodyLevel31", tempStr2, 3999); XMLString::catString(tempStr, tempStr2); DOMElement* docBodyLevel31 = doc->createElement(tempStr); //name + "BodyLevel32" XMLString::copyString(tempStr, name); XMLString::transcode("BodyLevel32", tempStr2, 3999); XMLString::catString(tempStr, tempStr2); DOMElement* docBodyLevel32 = doc->createElement(tempStr); //name + "BodyLevel33" XMLString::copyString(tempStr, name); XMLString::transcode("BodyLevel33", tempStr2, 3999); XMLString::catString(tempStr, tempStr2); DOMElement* docBodyLevel33 = doc->createElement(tempStr); //name + "BodyLevel34" XMLString::copyString(tempStr, name); XMLString::transcode("BodyLevel34", tempStr2, 3999); XMLString::catString(tempStr, tempStr2); DOMElement* docBodyLevel34 = doc->createElement(tempStr); docBodyLevel21->appendChild(docBodyLevel31); docBodyLevel21->appendChild(docBodyLevel32); docBodyLevel22->appendChild(docBodyLevel33); docBodyLevel22->appendChild(docBodyLevel34); //name + "BodyLevel31'sChildTextNode11" XMLString::copyString(tempStr, name); XMLString::transcode("BodyLevel31'sChildTextNode11", tempStr2, 3999); XMLString::catString(tempStr, tempStr2); DOMText* docTextNode11 = doc->createTextNode(tempStr); //name + "BodyLevel31'sChildTextNode12" XMLString::copyString(tempStr, name); XMLString::transcode("BodyLevel31'sChildTextNode12", tempStr2, 3999); XMLString::catString(tempStr, tempStr2); DOMText* docTextNode12 = doc->createTextNode(tempStr); //name + "BodyLevel31'sChildTextNode13" XMLString::copyString(tempStr, name); XMLString::transcode("BodyLevel31'sChildTextNode13", tempStr2, 3999); XMLString::catString(tempStr, tempStr2); DOMText* docTextNode13 = doc->createTextNode(tempStr); //name + "TextNode2" XMLString::copyString(tempStr, name); XMLString::transcode("TextNode2", tempStr2, 3999); XMLString::catString(tempStr, tempStr2); DOMText* docTextNode2 = doc->createTextNode(tempStr); //name + "TextNode3" XMLString::copyString(tempStr, name); XMLString::transcode("TextNode3", tempStr2, 3999); XMLString::catString(tempStr, tempStr2); DOMText* docTextNode3 = doc->createTextNode(tempStr); //name + "TextNode4" XMLString::copyString(tempStr, name); XMLString::transcode("TextNode4", tempStr2, 3999); XMLString::catString(tempStr, tempStr2); DOMText* docTextNode4 = doc->createTextNode(tempStr); docBodyLevel31->appendChild(docTextNode11); docBodyLevel31->appendChild(docTextNode12); docBodyLevel31->appendChild(docTextNode13); docBodyLevel32->appendChild(docTextNode2); docBodyLevel33->appendChild(docTextNode3); docBodyLevel34->appendChild(docTextNode4); //"Hello, world!]]>" XMLString::transcode("Hello, world!]]>", tempStr, 3999); DOMCDATASection* docCDATASection = doc->createCDATASection(tempStr); docBodyLevel23->appendChild(docCDATASection); //"This should be a comment of some kind " XMLString::transcode("This should be a comment of some kind ", tempStr, 3999); DOMComment* docComment = doc->createComment(tempStr); //Test compareDocumentPosition before append COMPARETREEPOSITIONTEST(docFirstElementAttr, docComment, DOMNode::DOCUMENT_POSITION_DISCONNECTED, __LINE__); docBodyLevel23->appendChild(docComment); //"ourEntityNode" XMLString::transcode("ourEntityNode", tempStr, 3999); DOMEntityReference* docReferenceEntity = doc->createEntityReference(tempStr); docBodyLevel24->appendChild(docReferenceEntity); DOMTest make; //"ourNotationNode" XMLString::transcode("ourNotationNode", tempStr, 3999); DOMNotation* docNotation = make.createNotation(doc, tempStr); DOMNode* abc1 = doc->getFirstChild(); DOMDocumentType* docType = (DOMDocumentType*) abc1; DOMNode* rem = docType->getNotations()->setNamedItem(docNotation); if (rem) rem->release(); //***********Do some quick compareDocumentPosition tests //The tree now looks like // // docFirstElement (has docFirstElementAttr) // | // |_ docProcessInstruction // | // |_ docBody // | // |_ docBodyLevel21 // | | // | |_ docBodyLevel31 // | | | // | | |_ docTextNode11 // | | | // | | |_ docTextNode12 // | | | // | | |_ docTextNode13 // | | // | |_ docBodyLevel32 // | | // | |_ docTextNode2 // | // |_ docBodyLevel22 // | | // | |_ docBodyLevel33 // | | | // | | |_ docTextNode3 // | | // | | // | |_ docBodyLevel34 // | | // | |_ docTextNode4 // | // |_ docBodyLevel23 // | | // | |_ docCDATASection // | | // | |_ docComment // | // |_ docBodyLevel24 // | // |_ docReferenceEntity // COMPARETREEPOSITIONTEST(docProcessingInstruction, docBody, DOMNode::DOCUMENT_POSITION_FOLLOWING, __LINE__); COMPARETREEPOSITIONTEST(docBodyLevel24, docProcessingInstruction, DOMNode::DOCUMENT_POSITION_PRECEDING, __LINE__); COMPARETREEPOSITIONTEST(docBodyLevel23, docBodyLevel21, DOMNode::DOCUMENT_POSITION_PRECEDING, __LINE__); COMPARETREEPOSITIONTEST(docBodyLevel21, docTextNode11, DOMNode::DOCUMENT_POSITION_CONTAINED_BY, __LINE__); COMPARETREEPOSITIONTEST(docCDATASection, docFirstElement, DOMNode::DOCUMENT_POSITION_CONTAINS, __LINE__); COMPARETREEPOSITIONTEST(docReferenceEntity, docFirstElement, DOMNode::DOCUMENT_POSITION_CONTAINS, __LINE__); COMPARETREEPOSITIONTEST(docFirstElementAttr, docFirstElement, DOMNode::DOCUMENT_POSITION_PRECEDING, __LINE__); COMPARETREEPOSITIONTEST(docFirstElementAttr, docProcessingInstruction, DOMNode::DOCUMENT_POSITION_FOLLOWING, __LINE__); COMPARETREEPOSITIONTEST(docProcessingInstruction, docFirstElementAttr, DOMNode::DOCUMENT_POSITION_PRECEDING, __LINE__); COMPARETREEPOSITIONTEST(docFirstElementAttr, doc, DOMNode::DOCUMENT_POSITION_PRECEDING, __LINE__); COMPARETREEPOSITIONTEST(doc, docFirstElementAttr, DOMNode::DOCUMENT_POSITION_FOLLOWING, __LINE__); COMPARETREEPOSITIONTEST(docBodyLevel21, docBodyLevel22, DOMNode::DOCUMENT_POSITION_FOLLOWING, __LINE__); COMPARETREEPOSITIONTEST(docNotation, docFirstElement, DOMNode::DOCUMENT_POSITION_FOLLOWING, __LINE__); myposition = docFirstElement->compareDocumentPosition(docFirstElement); if (myposition != 0) { fprintf(stderr, "DOMNode::compareDocumentPosition does not work in line %i\n", __LINE__); OK = false; } //now do some lookupNamespaceURI and lookupNamespacePrefix //first lets add some attributes XMLString::transcode("http://www.w3.org/2000/xmlns/", tempStr, 3999); XMLString::transcode("xmlns:pre1", tempStr2, 3999); XMLString::transcode("pre1URI", tempStr3, 3999); XMLString::transcode("pre1", tempStr4, 3999); DOMAttr *attr1 = doc->createAttributeNS(tempStr, tempStr2); attr1->setValue(tempStr3); docFirstElement->setAttributeNodeNS(attr1); LOOKUPNSTEST(docProcessingInstruction, tempStr4, tempStr3, true, __LINE__); LOOKUPNSTEST(docBodyLevel24, tempStr4, tempStr3, true, __LINE__); LOOKUPNSTEST(docBodyLevel23, tempStr4, tempStr3, true, __LINE__); LOOKUPNSTEST(docBodyLevel21, tempStr4, tempStr3, true, __LINE__); LOOKUPNSTEST(docBodyLevel31, tempStr4, tempStr3, true, __LINE__); LOOKUPNSTEST(docBodyLevel32, tempStr4, tempStr3, true, __LINE__); LOOKUPNSTEST(docCDATASection, tempStr4, tempStr3, true, __LINE__); LOOKUPNSTEST(docFirstElement, tempStr4, tempStr3, true, __LINE__); LOOKUPNSTEST(docReferenceEntity, tempStr4, tempStr3, true, __LINE__); LOOKUPNSTEST(docFirstElementAttr, tempStr4, tempStr3, true, __LINE__); LOOKUPNSTEST(doc, tempStr4, tempStr3, true, __LINE__); LOOKUPNSTEST(docNotation, tempStr4, tempStr3, false, __LINE__); LOOKUPNSTEST(docTextNode2, tempStr4, tempStr3, true, __LINE__); LOOKUPNSTEST(docTextNode4, tempStr4, tempStr3, true, __LINE__); LOOKUPNSTEST(docComment, tempStr4, tempStr3, true, __LINE__); XMLString::transcode("xmlns:pre2", tempStr2, 3999); XMLString::transcode("pre2URI", tempStr3, 3999); XMLString::transcode("pre2", tempStr4, 3999); DOMAttr *attr2 = doc->createAttributeNS(tempStr, tempStr2); attr2->setValue(tempStr3); docBodyLevel21->setAttributeNodeNS(attr2); LOOKUPNSTEST(docProcessingInstruction, tempStr4, tempStr3, false, __LINE__); LOOKUPNSTEST(docBodyLevel24, tempStr4, tempStr3, false, __LINE__); LOOKUPNSTEST(docBodyLevel23, tempStr4, tempStr3, false, __LINE__); LOOKUPNSTEST(docBodyLevel21, tempStr4, tempStr3, true, __LINE__); LOOKUPNSTEST(docBodyLevel31, tempStr4, tempStr3, true, __LINE__); LOOKUPNSTEST(docBodyLevel32, tempStr4, tempStr3, true, __LINE__); LOOKUPNSTEST(docCDATASection, tempStr4, tempStr3, false, __LINE__); LOOKUPNSTEST(docFirstElement, tempStr4, tempStr3, false, __LINE__); LOOKUPNSTEST(docReferenceEntity, tempStr4, tempStr3, false, __LINE__); LOOKUPNSTEST(docFirstElementAttr, tempStr4, tempStr3, false, __LINE__); LOOKUPNSTEST(doc, tempStr4, tempStr3, false, __LINE__); LOOKUPNSTEST(docNotation, tempStr4, tempStr3, false, __LINE__); LOOKUPNSTEST(docComment, tempStr4, tempStr3, false, __LINE__); LOOKUPNSTEST(docTextNode2, tempStr4, tempStr3, true, __LINE__); LOOKUPNSTEST(docTextNode4, tempStr4, tempStr3, false, __LINE__); XMLString::transcode("xmlns", tempStr2, 3999); XMLString::transcode("default", tempStr3, 3999); XMLString::transcode("", tempStr4, 3999); DOMAttr *attr3 = doc->createAttributeNS(tempStr, tempStr2); attr3->setValue(tempStr3); docFirstElement->setAttributeNodeNS(attr3); LOOKUPNSTEST(docProcessingInstruction, 0, tempStr3, true, __LINE__); LOOKUPNSTEST(docBodyLevel24, 0, tempStr3, true, __LINE__); LOOKUPNSTEST(docBodyLevel23, 0, tempStr3, true, __LINE__); LOOKUPNSTEST(docBodyLevel21, 0, tempStr3, true, __LINE__); LOOKUPNSTEST(docBodyLevel31, 0, tempStr3, true, __LINE__); LOOKUPNSTEST(docBodyLevel32, 0, tempStr3, true, __LINE__); LOOKUPNSTEST(docCDATASection, 0, tempStr3, true, __LINE__); LOOKUPNSTEST(docFirstElement, 0, tempStr3, true, __LINE__); LOOKUPNSTEST(docReferenceEntity, 0, tempStr3, true, __LINE__); LOOKUPNSTEST(docFirstElementAttr, 0, tempStr3, true, __LINE__); LOOKUPNSTEST(doc, 0, tempStr3, true, __LINE__); LOOKUPNSTEST(docComment, 0, tempStr3, true, __LINE__); LOOKUPNSTEST(docTextNode2, 0, tempStr3, true, __LINE__); LOOKUPNSTEST(docTextNode4, 0, tempStr3, true, __LINE__); //this has to be done separately because negative lookup is the same as default ns lookup!!! prefixResult = XMLString::compareString(docNotation->lookupPrefix(tempStr3), 0); uriResult = XMLString::compareString(docNotation->lookupNamespaceURI(0), 0); if(prefixResult != 0) { fprintf(stderr, "DOMNode::lookupNamespacePrefix does not work in line %i\n", __LINE__); OK = false; } if(uriResult != 0) { fprintf(stderr, "DOMNode::lookupNamespacePrefix does not work in line %i\n", __LINE__); OK = false; } XMLString::transcode("notset", tempStr3, 3999); LOOKUPDEFAULTNSTEST(docProcessingInstruction, tempStr3, false, __LINE__); LOOKUPDEFAULTNSTEST(docBodyLevel24, tempStr3, false, __LINE__); LOOKUPDEFAULTNSTEST(docBodyLevel23, tempStr3, false, __LINE__); LOOKUPDEFAULTNSTEST(docBodyLevel21, tempStr3, false, __LINE__); LOOKUPDEFAULTNSTEST(docBodyLevel31, tempStr3, false, __LINE__); LOOKUPDEFAULTNSTEST(docBodyLevel32, tempStr3, false, __LINE__); LOOKUPDEFAULTNSTEST(docCDATASection, tempStr3, false, __LINE__); LOOKUPDEFAULTNSTEST(docFirstElement, tempStr3, false, __LINE__); LOOKUPDEFAULTNSTEST(docReferenceEntity, tempStr3, false, __LINE__); LOOKUPDEFAULTNSTEST(docFirstElementAttr, tempStr3, false, __LINE__); LOOKUPDEFAULTNSTEST(doc, tempStr3, false, __LINE__); LOOKUPDEFAULTNSTEST(docNotation, tempStr3, false, __LINE__); LOOKUPDEFAULTNSTEST(docComment, tempStr3, false, __LINE__); LOOKUPDEFAULTNSTEST(docTextNode2, tempStr3, false, __LINE__); LOOKUPDEFAULTNSTEST(docTextNode4, tempStr3, false, __LINE__); XMLString::transcode("default", tempStr3, 3999); LOOKUPDEFAULTNSTEST(docProcessingInstruction, tempStr3, false, __LINE__); LOOKUPDEFAULTNSTEST(docBodyLevel24, tempStr3, false, __LINE__); LOOKUPDEFAULTNSTEST(docBodyLevel23, tempStr3, false, __LINE__); LOOKUPDEFAULTNSTEST(docBodyLevel21, tempStr3, false, __LINE__); LOOKUPDEFAULTNSTEST(docBodyLevel31, tempStr3, false, __LINE__); LOOKUPDEFAULTNSTEST(docBodyLevel32, tempStr3, false, __LINE__); LOOKUPDEFAULTNSTEST(docCDATASection, tempStr3, false, __LINE__); LOOKUPDEFAULTNSTEST(docFirstElement, tempStr3, false, __LINE__); LOOKUPDEFAULTNSTEST(docReferenceEntity, tempStr3, false, __LINE__); LOOKUPDEFAULTNSTEST(docFirstElementAttr, tempStr3, false, __LINE__); LOOKUPDEFAULTNSTEST(doc, tempStr3, false, __LINE__); LOOKUPDEFAULTNSTEST(docNotation, tempStr3, false, __LINE__); LOOKUPDEFAULTNSTEST(docComment, tempStr3, false, __LINE__); LOOKUPDEFAULTNSTEST(docTextNode2, tempStr3, false, __LINE__); LOOKUPDEFAULTNSTEST(docTextNode4, tempStr3, false, __LINE__); //remove the xmlns attr docFirstElement->removeAttributeNode(attr3); LOOKUPDEFAULTNSTEST(docProcessingInstruction, 0, true, __LINE__); LOOKUPDEFAULTNSTEST(docBodyLevel24, 0, true, __LINE__); LOOKUPDEFAULTNSTEST(docBodyLevel23, 0, true, __LINE__); LOOKUPDEFAULTNSTEST(docBodyLevel21, 0, true, __LINE__); LOOKUPDEFAULTNSTEST(docBodyLevel31, 0, true, __LINE__); LOOKUPDEFAULTNSTEST(docBodyLevel32, 0, true, __LINE__); LOOKUPDEFAULTNSTEST(docCDATASection, 0, true, __LINE__); LOOKUPDEFAULTNSTEST(docFirstElement, 0, true, __LINE__); LOOKUPDEFAULTNSTEST(docReferenceEntity, 0, true, __LINE__); LOOKUPDEFAULTNSTEST(docFirstElementAttr, 0, true, __LINE__); LOOKUPDEFAULTNSTEST(doc, 0, true, __LINE__); LOOKUPDEFAULTNSTEST(docNotation, 0, false, __LINE__); LOOKUPDEFAULTNSTEST(docComment, 0, true, __LINE__); LOOKUPDEFAULTNSTEST(docTextNode2, 0, true, __LINE__); LOOKUPDEFAULTNSTEST(docTextNode4, 0, true, __LINE__); XMLString::transcode("someSpecialURI", tempStr3, 3999); XMLString::transcode("newNameForEle", tempStr4, 3999); DOMElement *ele = doc->createElementNS(tempStr3, tempStr4); docFirstElement->insertBefore(ele, docFirstElement->getFirstChild()); // test for bug# 26919 docFirstElement->insertBefore(docFirstElement->getFirstChild(), docFirstElement->getFirstChild()); //a test for lookup when xmlns is not set so we take the fact that there is no prefix to be confimation LOOKUPDEFAULTNSTEST(ele, tempStr3, true, __LINE__); docFirstElement->removeAttributeNode(attr1); docBodyLevel21->removeAttributeNode(attr2); docFirstElement->removeChild(ele); //***********Following are for errorTests DOMDocumentFragment* docDocFragment = doc->createDocumentFragment(); UNUSED(docDocFragment); // silence warning //name + "docTextNode3" XMLString::copyString(tempStr, name); XMLString::transcode("docTextNode3", tempStr2, 3999); XMLString::catString(tempStr, tempStr2); DOMText* docNode3 = doc->createTextNode(tempStr); //name + "docTextNode4" XMLString::copyString(tempStr, name); XMLString::transcode("docTextNode4", tempStr2, 3999); XMLString::catString(tempStr, tempStr2); DOMText* docNode4 = doc->createTextNode(tempStr); //"ourEntityNode" XMLString::transcode("ourEntityNode", tempStr, 3999); DOMNode* abc2 = doc->getDoctype()->getEntities()->getNamedItem(tempStr); // Get the DOMEntity* node DOMEntity* docEntity = (DOMEntity*) abc2; UNUSED(docEntity); // silence warning DOMNode* abc3 = doc->getFirstChild(); // Get the DOMDocumentType* node DOMDocumentType* docDocType = (DOMDocumentType*) abc3; UNUSED(docDocType); // silence warning DOMNode* abc4 = doc->getLastChild()->getLastChild()->getLastChild()->getFirstChild(); DOMEntityReference* entityReferenceText = (DOMEntityReference*) abc4; UNUSED(entityReferenceText); // silence warning //"entityReferenceText information" XMLString::transcode("entityReferenceText information", tempStr, 3999); DOMText* entityReferenceText2 = doc->createTextNode(tempStr); //************************************************ ERROR TESTS DOMTest tests; EXCEPTIONSTEST(document->appendChild(docBody), DOMException::HIERARCHY_REQUEST_ERR, OK, 1); EXCEPTIONSTEST(document->appendChild(docBody), DOMException::HIERARCHY_REQUEST_ERR, OK, 2); EXCEPTIONSTEST(docNode3->appendChild(docNode4), DOMException::HIERARCHY_REQUEST_ERR, OK, 3); // EXCEPTIONSTEST(doc->insertBefore(docEntity, docFirstElement), DOMException::HIERARCHY_REQUEST_ERR, OK, 4); EXCEPTIONSTEST(doc->replaceChild(docCDATASection, docFirstElement), DOMException::HIERARCHY_REQUEST_ERR, OK, 5); //"This shouldn't work!" XMLString::transcode("entityReferenceText information", tempStr, 3999); // The following setNodeValue tests are not invalid // According to DOM spec, if the node value is defined to be null in the DOM spec, setting it has no effect. // Only those node type that are supposed to have node value, exception will be raised if the node is readonly. // EXCEPTIONSTEST(docFirstElement->setNodeValue(tempStr), DOMException::NO_MODIFICATION_ALLOWED_ERR, OK, 6); // EXCEPTIONSTEST(docReferenceEntity->setNodeValue(tempStr), DOMException::NO_MODIFICATION_ALLOWED_ERR, OK, 7); // EXCEPTIONSTEST(docEntity->setNodeValue(tempStr), DOMException::NO_MODIFICATION_ALLOWED_ERR, OK, 8); // EXCEPTIONSTEST(doc->setNodeValue(tempStr), DOMException::NO_MODIFICATION_ALLOWED_ERR, OK, 9); // EXCEPTIONSTEST(docDocType->setNodeValue(tempStr), DOMException::NO_MODIFICATION_ALLOWED_ERR, OK, 10); // EXCEPTIONSTEST(docDocFragment->setNodeValue(tempStr), DOMException::NO_MODIFICATION_ALLOWED_ERR, OK, 11); // EXCEPTIONSTEST(docNotation->setNodeValue(tempStr), DOMException::NO_MODIFICATION_ALLOWED_ERR, OK, 12); EXCEPTIONSTEST(docReferenceEntity->appendChild(entityReferenceText2 ), DOMException::NO_MODIFICATION_ALLOWED_ERR , OK, 13); EXCEPTIONSTEST(docBodyLevel32->insertBefore(docTextNode11,docBody ), DOMException::NOT_FOUND_ERR, OK, 14); EXCEPTIONSTEST(docBodyLevel32->removeChild(docFirstElement), DOMException::NOT_FOUND_ERR, OK, 15); EXCEPTIONSTEST(docBodyLevel32->replaceChild(docTextNode11,docFirstElement ), DOMException::NOT_FOUND_ERR, OK, 16); XMLString::release(&name); return OK; //!! Throws a NOT_FOUND_ERR ******** // docBodyLevel32->getAttributes()->removeNamedItem(testAttribute->getName()); 16 // To test removeNamedItem } //END OF DOCBUILDER /** * @param document org.w3c.dom.DOMDocument */ void DOMTest::findTestNodes(DOMDocument* document) { DOMNode* node = document; int nodeCount = 0; // Walk the tree until you find and assign all node types needed that exist. while (node != 0 && nodeCount < 12) { switch (node->getNodeType()) { case DOMNode::ELEMENT_NODE : if (testElementNode == 0) {testElementNode = (DOMElement*)node; nodeCount++;} break; case DOMNode::ATTRIBUTE_NODE : if (testAttributeNode == 0) {testAttributeNode = (DOMAttr*)node; nodeCount++;} break; case DOMNode::TEXT_NODE : if (testTextNode == 0) {testTextNode = (DOMText*)node; nodeCount++;} break; case DOMNode::CDATA_SECTION_NODE : if (testCDATASectionNode == 0) {testCDATASectionNode = (DOMCDATASection*)node; nodeCount++;} break; case DOMNode::ENTITY_REFERENCE_NODE : if (testEntityReferenceNode == 0) {testEntityReferenceNode = (DOMEntityReference*)node; nodeCount++;} break; case DOMNode::ENTITY_NODE : if (testEntityNode == 0) {testEntityNode = (DOMEntity*)node; nodeCount++;} break; case DOMNode::PROCESSING_INSTRUCTION_NODE : if (testProcessingInstructionNode == 0) {testProcessingInstructionNode = (DOMProcessingInstruction*)node; nodeCount++;} break; case DOMNode::COMMENT_NODE : if (testCommentNode == 0) {testCommentNode = (DOMComment*)node; nodeCount++;} break; case DOMNode::DOCUMENT_TYPE_NODE : if (testDocumentTypeNode == 0) {testDocumentTypeNode = (DOMDocumentType*)node; nodeCount++;} break; case DOMNode::DOCUMENT_FRAGMENT_NODE : if (testDocumentFragmentNode == 0) {testDocumentFragmentNode = (DOMDocumentFragment*)node; nodeCount++;} break; case DOMNode::NOTATION_NODE : if (testNotationNode == 0) {testNotationNode = (DOMNotation*)node; nodeCount++;} break; case DOMNode::DOCUMENT_NODE : if (testDocumentNode == 0) {testDocumentNode = (DOMDocument*)node; nodeCount++;} break; default: ; }// End of switch } // End of while } /** * @param document org.w3c.dom.DOMDocument */ void DOMTest::findTestNodes(DOMNode* node) { DOMTest test; DOMNode* kid; // Walk the tree until you find and assign all node types needed that exist. if (node->getFirstChild() != 0) { kid = node->getFirstChild(); test.findTestNodes(kid); } if (node->getNextSibling() != 0) { kid = node->getNextSibling(); test.findTestNodes(kid); } switch (node->getNodeType()) { case DOMNode::ELEMENT_NODE : if (testElementNode == 0) {testElementNode = (DOMElement*)node; } break; case DOMNode::ATTRIBUTE_NODE : if (testAttributeNode == 0) {testAttributeNode = (DOMAttr*)node; } break; case DOMNode::TEXT_NODE : if (testTextNode == 0) {testTextNode = (DOMText*)node; } break; case DOMNode::CDATA_SECTION_NODE : if (testCDATASectionNode == 0) {testCDATASectionNode = (DOMCDATASection*)node; } break; case DOMNode::ENTITY_REFERENCE_NODE : if (testEntityReferenceNode == 0) {testEntityReferenceNode = (DOMEntityReference*)node;} break; case DOMNode::ENTITY_NODE : if (testEntityNode == 0) {testEntityNode = (DOMEntity*)node;} break; case DOMNode::PROCESSING_INSTRUCTION_NODE : if (testProcessingInstructionNode == 0) {testProcessingInstructionNode = (DOMProcessingInstruction*)node;} break; case DOMNode::COMMENT_NODE : if (testCommentNode == 0) {testCommentNode = (DOMComment*)node;} break; case DOMNode::DOCUMENT_TYPE_NODE : if (testDocumentTypeNode == 0) {testDocumentTypeNode = (DOMDocumentType*)node; } break; case DOMNode::DOCUMENT_FRAGMENT_NODE : if (testDocumentFragmentNode == 0) {testDocumentFragmentNode = (DOMDocumentFragment*)node;} break; case DOMNode::NOTATION_NODE : if (testNotationNode == 0) {testNotationNode = (DOMNotation*)node;} break; case DOMNode::DOCUMENT_NODE : if (testDocumentNode == 0) {testDocumentNode = (DOMDocument*)node;} break; default: ; }// End of switch }//End of class /** * * */ int main(int /*argc*/, char ** /*argv*/) { bool OK = true; { // Nest entire test in an inner block. // Reference counting should recover all document // storage when this block exits. DOMTest test; try { XMLPlatformUtils::Initialize(); } catch (const XMLException& toCatch) { char *pMessage = XMLString::transcode(toCatch.getMessage()); fprintf(stderr, "Error during initialization! \n %s \n", pMessage); XMLString::release(&pMessage); return -1; } // for (int i=0; i< 1000; i++) // { // AH Revisit // startTime = System.currentTimeMillis(); // if(!OK) // break; DOMDocument* d = test.createDocument(); XMLString::transcode("testDocument1", tempStr, 3999); DOMDocumentType* docDocType = test.createDocumentType(d,tempStr); d->appendChild(docDocType); XMLString::transcode("ourEntityNode", tempStr, 3999); DOMEntity* docEntity = test.createEntity( d, tempStr); UNUSED(docEntity); // silence warning //Build a branch for entityReference tests // DOMText* entityChildText = d.createTextNode("entityChildText information"); // // docEntity->appendChild(entityChildText); // docDocType->getEntities()->setNamedItem(docEntity); XMLString::transcode("d", tempStr3, 3999); OK &= test.docBuilder(d, tempStr3); test.findTestNodes((DOMNode*)d); OK &= test.testAttr(d); OK &= test.testCDATASection(d); OK &= test.testCharacterData(d); OK &= test.testChildNodeList(d); OK &= test.testComment(d); OK &= test.testDeepNodeList(d); OK &= test.testDocument(d); OK &= test.testDocumentFragment(d); OK &= test.testDocumentType(d); OK &= test.testDOMImplementation(d); OK &= test.testElement(d); // OK &= test.testEntity(d); // Can not test entities; only parser can create them. OK &= test.testEntityReference(d); OK &= test.testNode(d); OK &= test.testNotation(d); OK &= test.testPI(d); OK &= test.testText(d); OK &= test.testDOMerrors(d); OK &= test.testXPath(d); OK &= test.testRegex(); // Null out the static object references in class DOMTest, // which will recover their storage. DOMTest::testElementNode = 0; DOMTest::testAttributeNode = 0; DOMTest::testTextNode = 0; DOMTest::testCDATASectionNode = 0; DOMTest::testEntityReferenceNode = 0; DOMTest::testEntityNode = 0; DOMTest::testProcessingInstructionNode = 0; DOMTest::testCommentNode = 0; DOMTest::testDocumentNode = 0; DOMTest::testDocumentTypeNode = 0; DOMTest::testDocumentFragmentNode = 0; DOMTest::testNotationNode = 0; // test release of attributes DOMElement* elt = d->createElement(tempStr3); elt->setAttribute(tempStr3, tempStr3); elt->release(); elt = d->createElement(tempStr3); DOMAttr *attr = d->createAttribute(tempStr3); attr->setValue(tempStr3); elt->setAttributeNode(attr); elt->setIdAttributeNode(attr, true); DOMElement *eleTest = d->getElementById(tempStr3); if(eleTest==NULL) { fprintf(stderr, "getElementById test failed at line %i\n", __LINE__); OK = false; } //all good until here elt->release(); eleTest = d->getElementById(tempStr3); if(eleTest!=NULL) { fprintf(stderr, "getElementById test failed at line %i\n", __LINE__); OK = false; } // we couldn't really test the user data handler call as the userhandler is already // deleted when the release() is done, but still set it to test the code internally d->setUserData(tempStr, (void*) tempStr, &userhandler); d->release(); // Test baseURI. BaseURI is set on nodes at parse time so we // cannot use the docBuilder document above //Setup parser XercesDOMParser *parser = new XercesDOMParser; parser->setValidationScheme(XercesDOMParser::Val_Never); parser->setDoNamespaces(true); parser->setDoSchema(true); parser->setCreateEntityReferenceNodes(true); OK &= test.testBaseURI(parser); parser->setCreateEntityReferenceNodes(false); OK &= test.testBaseURI(parser); parser->setDoNamespaces(false); parser->setDoSchema(false); OK &= test.testBaseURI(parser); parser->setCreateEntityReferenceNodes(true); OK &= test.testBaseURI(parser); OK &= test.testWholeText(parser); OK &= test.testScanner(parser); delete parser; OK &= test.testLSExceptions(); OK &= test.testElementTraversal(); OK &= test.testUtilFunctions(); } XMLPlatformUtils::Terminate(); if (!OK) { printf("Test Failed\n"); return 4; } printf("Test Run Successfully\n"); return 0; } /** * This method tests DOMAttr* methods for the XML DOM implementation * @param document org.w3c.dom.DOMDocument * */ bool DOMTest::testAttr(DOMDocument* document) { DOMNode* node; DOMAttr* attributeNode; bool T = true; bool OK = true; // For debugging***** printf("\n testAttr's outputs:\n\n"); XMLString::transcode("testAttribute", tempStr, 3999); DOMAttr* testAttribute = document->createAttribute(tempStr); XMLString::transcode("testAttribute's value", tempStr, 3999); testAttribute->setValue(tempStr); node = document->getDocumentElement(); // node gets first element // ((DOMElement*)node)->setAttributeNode(testAttribute); // attributeNode = ((DOMElement*)node)->getAttributeNode("testAttribute"); DOMElement* el = (DOMElement*)node; DOMNode* rem = el->setAttributeNode(testAttribute); if (rem) rem->release(); XMLString::transcode("testAttribute", tempStr, 3999); attributeNode = el->getAttributeNode(tempStr); //Test compareDocumentPosition, the equivalent case here XMLString::transcode("dFirstElementdFirstElement", tempStr2, 3999); DOMAttr* docFirstElementAttr = el->getAttributeNode(tempStr2); COMPARETREEPOSITIONTEST(docFirstElementAttr, attributeNode, DOMNode::DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, __LINE__); // Test the name and other data if (XMLString::compareString(tempStr, attributeNode->getName())) { fprintf(stderr, "Warning!!! DOMAttr's 'getName' method failed to work properly!\n"); OK = false; } XMLString::transcode("testAttribute's value", tempStr, 3999); if (XMLString::compareString(tempStr, attributeNode->getNodeValue())) { fprintf(stderr, "Warning!!! DOMAttr's 'getNodeValue' method failed to work properly!\n"); OK = false; } if (! T ==attributeNode->getSpecified()) { fprintf(stderr, "Warning!!! DOMAttr's 'getSpecified' method failed to work properly!\n"); OK = false; } if (XMLString::compareString(tempStr, attributeNode->getValue())) { fprintf(stderr, "Warning!!! DOMAttr's 'getValue' method failed to work properly!\n"); OK = false; } XMLString::transcode("Reset Value", tempStr, 3999); attributeNode->setNodeValue(tempStr); /// LEAK!!!!! if (XMLString::compareString(tempStr, attributeNode->getNodeValue())) { fprintf(stderr, "Warning!!! DOMAttr's 'setNodeValue' method failed to work properly!\n"); OK = false; } attributeNode->setValue(XMLUni::fgZeroLenString); if (XMLString::compareString(XMLUni::fgZeroLenString, attributeNode->getValue())) { fprintf(stderr, "Warning!!! DOMAttr's 'setValue' to '0' method failed to work properly!\n"); OK = false; } XMLString::transcode("Another value ", tempStr, 3999); attributeNode->setValue(tempStr); if (XMLString::compareString(tempStr, attributeNode->getValue())) { fprintf(stderr, "Warning!!! DOMAttr's 'setValue' method failed to work properly!"); OK = false; } node = attributeNode->cloneNode(T); // Check nodes for equality, both their name and value or lack thereof bool cloneOK = true; if (XMLString::compareString(node->getNodeName(), attributeNode->getNodeName())) cloneOK = false; if (node->getNodeValue() == 0 && attributeNode->getNodeValue() != 0) { cloneOK = false; } if (node->getNodeValue() != 0 && attributeNode->getNodeValue() == 0) { cloneOK = false; } if (node->getNodeValue() != 0 && attributeNode->getNodeValue() != 0) { if (XMLString::compareString(node->getNodeValue(),attributeNode->getNodeValue())) cloneOK = false; } /* if (! (node->getNodeName(), attributeNode->getNodeName()) && // Compares node names for equality (node->getNodeValue() != 0 && attributeNode->getNodeValue() != 0) // Checks to make sure each node has a value node ? node->getNodeValue(), attributeNode->getNodeValue()) // If both have value nodes test those value nodes for equality : (node->getNodeValue() == 0 && attributeNode->getNodeValue() == 0)))// If one node doesn't have a value node make sure both don't */ if (cloneOK == false) { fprintf(stderr, "'cloneNode' did not clone the Attribute node correctly\n"); OK = false; } // Deep clone test comparison is in testNode & testDocument //************************************************* ERROR TESTS DOMTest tests; //!! Throws HIERARCHY_REQUEST_ERR **************** // doc->getDocumentElement()->appendChild(attributeNode); //!! Throws a NOT_FOUND_ERR ******** // attribute2 = doc->createAttribute("testAttribute2"); // doc->getDocumentElement()->removeAttributeNode(attribute2); //!! Throws an INUSE_ATTRIBUTE_ERR ****** // DOMElement* element = (DOMElement*)doc->getLastChild()->getLastChild(); // element->setAttributeNode(testAttribute );// Tests setNamedItem which generates error through justSetNamedItem. // Test the user data // Test simple set and get DOMAttr* userTest = testAttribute; DOMElement* userFirst = el; XMLCh* userSecond = tempStr2; XMLString::transcode("first", tempStr, 3999); XMLString::transcode("document", tempStr2, 3999); userTest->setUserData(tempStr2, (void*) document, 0); void* mydocument = userTest->getUserData(tempStr2); if (document != mydocument) { fprintf(stderr, "'set/getUserData' in line %i does not work\n", __LINE__); OK = false; } userTest->setUserData(tempStr, (void*) userFirst, 0); void* myFirst = userTest->getUserData(tempStr); if (userFirst != myFirst) { fprintf(stderr, "'set/getUserData' in line %i does not work\n", __LINE__); OK = false; } // Test overwrite void* myFirst2 = userTest->setUserData(tempStr, (void*) userSecond, 0); void* mySecond = userTest->getUserData(tempStr); if (userSecond != mySecond) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (userFirst != myFirst2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (userFirst == mySecond) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } // Test null // test non-exist key XMLString::transcode("not-exist", tempStr3, 3999); if (userTest->getUserData(tempStr3)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // use a node that does not have user data set before if (userFirst->getUserData(tempStr)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // Test reset void* mySecond2 = userTest->setUserData(tempStr, (void*) 0, 0); void* myNull = userTest->getUserData(tempStr); if (userSecond != mySecond2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (myNull) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } void* mydocument2 = userTest->setUserData(tempStr2, (void*) 0, 0); void* myNull2 = userTest->getUserData(tempStr2); if (mydocument != mydocument2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (myNull2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } //the userTest user data table should be null now if (userTest->getUserData(tempStr)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } if (userTest->getUserData(tempStr2)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // Test DOMUserDataHandler // test clone userTest->setUserData(tempStr2, (void*) document, &userhandler); DOMNode* mycloned = userTest->cloneNode(true); USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_CLONED, tempStr2, document, userTest, mycloned, __LINE__); // test import document->setUserData(tempStr2, (void*) document, &userhandler); DOMNode* myimport = document->importNode(userTest,true); USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_IMPORTED, tempStr2, document, userTest, myimport, __LINE__); // test delete myimport->setUserData(tempStr2, (void*) userTest, &userhandler); myimport->release(); USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_DELETED, tempStr2, userTest, 0, 0, __LINE__); // Test isSameNode if (!userTest->isSameNode(userTest)) { fprintf(stderr, "isSameNode failed in line %i\n", __LINE__); OK = false; } if (userTest->isSameNode(userFirst)) { fprintf(stderr, "isSameNode failed in line %i\n", __LINE__); OK = false; } // Test isEqualNode if (!userTest->isEqualNode(mycloned)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } if (!userTest->isEqualNode(userTest)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } if (userTest->isEqualNode(userFirst)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } // Test renameNode XMLString::transcode("http://nsa", tempStr4, 3999); XMLString::transcode("aa", tempStr5, 3999); XMLString::transcode("pnsa:aa", tempStr3, 3999); // create the attribute DOMAttr* renameTestAttribute = document->createAttribute(tempStr5); DOMAttr* renameTestAttributeNS = document->createAttributeNS(tempStr4, tempStr3); // create the owner element and append the attribute node DOMElement* renameTestElement = document->createElement(tempStr5); renameTestElement->setAttributeNode(renameTestAttribute); renameTestElement->setAttributeNode(renameTestAttributeNS); // set up the userdata renameTestAttribute->setUserData(tempStr5, (void*) document, &userhandler); renameTestAttributeNS->setUserData(tempStr4, (void*) document, 0); // set up the node value renameTestAttribute->setNodeValue(tempStr5); renameTestAttributeNS->setNodeValue(tempStr4); XMLString::transcode("http://nsb", tempStr, 3999); XMLString::transcode("bb", tempStr2, 3999); XMLString::transcode("pnsb:bb", tempStr3, 3999); // start the rename tests // rename the NS Attribute DOMAttr* renameTest = (DOMAttr*) document->renameNode(renameTestAttributeNS, tempStr, tempStr3); // test the name if (XMLString::compareString(tempStr, renameTest->getNamespaceURI())) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } if (XMLString::compareString(tempStr2, renameTest->getLocalName())) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } if (XMLString::compareString(tempStr3, renameTest->getNodeName())) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } // test the child / nodevalue if (XMLString::compareString(tempStr4, renameTest->getNodeValue())) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } if (XMLString::compareString(tempStr4, renameTest->getFirstChild()->getNodeValue())) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } // test the owner element if (!renameTestElement->getAttributeNodeNS(tempStr, tempStr2)) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } if (renameTestElement->getAttributeNodeNS(tempStr4, tempStr5)) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } // test user data void* renamedocument = renameTest->getUserData(tempStr4); if (document != renamedocument) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } // test isSame and isEqual if (!renameTestAttributeNS->isEqualNode(renameTest)) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } if (!renameTestAttributeNS->isSameNode(renameTest)) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } // rename the Attribute (null namespace) renameTest = (DOMAttr*) document->renameNode(renameTestAttribute, 0, tempStr2); // test the name if (renameTest->getNamespaceURI()) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } if (renameTest->getLocalName()) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } if (XMLString::compareString(tempStr2, renameTest->getNodeName())) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } // test the child / nodevalue if (XMLString::compareString(tempStr5, renameTest->getNodeValue())) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } if (XMLString::compareString(tempStr5, renameTest->getFirstChild()->getNodeValue())) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } // test the owner element if (!renameTestElement->getAttributeNode(tempStr2)) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } if (renameTestElement->getAttributeNode(tempStr5)) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } // test user data renamedocument = renameTest->getUserData(tempStr5); if (document != renamedocument) { fprintf(stderr, "'set/getUserData' in line %i does not work\n", __LINE__); OK = false; } // test isSame and isEqual if (!renameTestAttribute->isEqualNode(renameTest)) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } if (!renameTestAttribute->isSameNode(renameTest)) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } // rename the Attribute (with namespace) renameTest = (DOMAttr*) document->renameNode(renameTestAttribute, tempStr, tempStr3); // test the name if (XMLString::compareString(tempStr, renameTest->getNamespaceURI())) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } if (XMLString::compareString(tempStr2, renameTest->getLocalName())) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } if (XMLString::compareString(tempStr3, renameTest->getNodeName())) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } // test the child / nodevalue if (XMLString::compareString(tempStr5, renameTest->getNodeValue())) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } if (XMLString::compareString(tempStr5, renameTest->getFirstChild()->getNodeValue())) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } if (renameTestAttribute->getFirstChild()) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } // test the owner element if (!renameTestElement->getAttributeNodeNS(tempStr, tempStr2)) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } if (renameTestElement->getAttributeNodeNS(0, tempStr2)) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } if (renameTestElement->getAttributeNode(tempStr2)) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } // test user data renamedocument = renameTest->getUserData(tempStr5); if (document != renamedocument) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } // test userdatahandler USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_RENAMED, tempStr5, document, renameTestAttribute, renameTest, __LINE__); // test isSame and isEqual // a new node is created here, so both isSame and isEqual are not compared if (renameTestAttribute->isEqualNode(renameTest)) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } if (renameTestAttribute->isSameNode(renameTest)) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } //isID tests XMLString::transcode("http://nsa", tempStr4, 3999); XMLString::transcode("aa", tempStr5, 3999); DOMAttr *idAtt = document->createAttributeNS(tempStr4, tempStr5); testElementNode->setAttributeNode(idAtt); if(idAtt->isId()) { fprintf(stderr, "isID failed in line %i\n", __LINE__); OK = false; } testElementNode->setIdAttributeNode(idAtt,true); if(!idAtt->isId()) { fprintf(stderr, "isID failed in line %i\n", __LINE__); OK = false; } testElementNode->setIdAttributeNode(idAtt,false); if(idAtt->isId()) { fprintf(stderr, "isID failed in line %i\n", __LINE__); OK = false; } //clean up testElementNode->removeAttributeNode(idAtt); if (! OK) printf("\n*****The DOMAttr* method calls listed above failed, all others worked correctly.*****\n"); return OK; } /** * This method tests DOMCDATASection* methods for the XML DOM implementation * @param document org.w3c.dom.DOMDocument * */ bool DOMTest::testCDATASection(DOMDocument* document) { DOMNode* node; DOMNode* node2; bool T = true; bool OK = true; // For debugging***** printf("\n testCDATASection's outputs:\n"); XMLString::transcode("dBodyLevel23", tempStr, 3999); node = document->getDocumentElement()->getElementsByTagName(tempStr)->item(0)->getFirstChild(); // node gets DOMCDATASection* node node2 = node->cloneNode(T);//*****? // Check nodes for equality, both their name and value or lack thereof if (!(!XMLString::compareString(node->getNodeName(), node2->getNodeName()) && // Compares node names for equality (node->getNodeValue() != 0 && node2->getNodeValue() != 0) // Checks to make sure each node has a value node ? !XMLString::compareString(node->getNodeValue(), node2->getNodeValue()) // If both have value nodes test those value nodes for equality : (node->getNodeValue() == 0 && node2->getNodeValue() == 0))) // If one node doesn't have a value node make sure both don't { fprintf(stderr, "'cloneNode' did not clone the DOMCDATASection* node correctly\n"); OK = false; } // Deep clone test comparison is in testNode & testDocument // Test the user data // Test simple set and get DOMCDATASection* userTest = (DOMCDATASection*) node; DOMCDATASection* userFirst = (DOMCDATASection*) node2; XMLCh* userSecond = tempStr2; XMLString::transcode("first", tempStr, 3999); XMLString::transcode("document", tempStr2, 3999); userTest->setUserData(tempStr2, (void*) document, 0); void* mydocument = userTest->getUserData(tempStr2); if (document != mydocument) { fprintf(stderr, "'set/getUserData' in line %i does not work\n", __LINE__); OK = false; } userTest->setUserData(tempStr, (void*) userFirst, 0); void* myFirst = userTest->getUserData(tempStr); if (userFirst != myFirst) { fprintf(stderr, "'set/getUserData' in line %i does not work\n", __LINE__); OK = false; } // Test overwrite void* myFirst2 = userTest->setUserData(tempStr, (void*) userSecond, 0); void* mySecond = userTest->getUserData(tempStr); if (userSecond != mySecond) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (userFirst != myFirst2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (userFirst == mySecond) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } // Test null // test non-exist key XMLString::transcode("not-exist", tempStr3, 3999); if (userTest->getUserData(tempStr3)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // use a node that does not have user data set before if (userFirst->getUserData(tempStr)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // Test reset void* mySecond2 = userTest->setUserData(tempStr, (void*) 0, 0); void* myNull = userTest->getUserData(tempStr); if (userSecond != mySecond2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (myNull) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } void* mydocument2 = userTest->setUserData(tempStr2, (void*) 0, 0); void* myNull2 = userTest->getUserData(tempStr2); if (mydocument != mydocument2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (myNull2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } //the userTest user data table should be null now if (userTest->getUserData(tempStr)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } if (userTest->getUserData(tempStr2)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // Test DOMUserDataHandler // test clone userTest->setUserData(tempStr2, (void*) document, &userhandler); DOMNode* mycloned = userTest->cloneNode(true); USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_CLONED, tempStr2, document, userTest, mycloned, __LINE__); // test import document->setUserData(tempStr2, (void*) document, &userhandler); DOMNode* myimport = document->importNode(userTest,true); USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_IMPORTED, tempStr2, document, userTest, myimport, __LINE__); // test delete myimport->setUserData(tempStr2, (void*) userTest, &userhandler); myimport->release(); USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_DELETED, tempStr2, userTest, 0, 0, __LINE__); // Test isSameNode if (!userTest->isSameNode(userTest)) { fprintf(stderr, "isSameNode failed in line %i\n", __LINE__); OK = false; } if (userTest->isSameNode(userFirst)) { fprintf(stderr, "isSameNode failed in line %i\n", __LINE__); OK = false; } // Test isEqualNode if (!userTest->isEqualNode(mycloned)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } if (!userTest->isEqualNode(userTest)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } if (userTest->isEqualNode(document)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } // Test rename, should throw exception EXCEPTIONSTEST(document->renameNode(userTest, 0, tempStr2), DOMException::NOT_SUPPORTED_ERR, OK, 204 ); if (! OK) printf("\n*****The DOMCDATASection* method calls listed above failed, all others worked correctly.*****\n"); return OK; } /** * This method tests DOMCharacterData methods for the XML DOM implementation * @param document org.w3c.dom.DOMDocument * */ bool DOMTest::testCharacterData(DOMDocument* document) { DOMCharacterData* charData; XMLCh resetData[3999]; bool OK = true; // For debugging***** printf("\n testCharacterData's outputs:\n"); XMLString::transcode("dBodyLevel31", tempStr, 3999); DOMNode* abc1 = document->getDocumentElement()->getElementsByTagName(tempStr)->item(0)->getFirstChild(); // charData gets textNode11 charData = (DOMCharacterData *) abc1; XMLString::transcode("dBodyLevel31'sChildTextNode11", tempStr, 3999); if (XMLString::compareString(tempStr, charData->getData())) { fprintf(stderr, "Warning!!! DOMCharacterData's 'getData' failed to work properly!\n This may corrupt other DOMCharacterData tests!!!*****\n"); OK = false; } XMLString::copyString(resetData,charData->getData()); // printf("This node's original data is: " + charData->getData()); XMLString::transcode(" This is new data for this node", tempStr2, 3999); XMLString::copyString(tempStr, charData->getData()); XMLString::catString(tempStr, tempStr2); charData->appendData(tempStr2); if (XMLString::compareString(tempStr, charData->getData())) { fprintf(stderr, "Warning!!! DOMCharacterData's 'appendData' failed to work properly!\n"); OK = false; } // printf("This node's appended data is: " + charData->getData()); XMLString::transcode("dBodyLevel", tempStr, 3999); charData->deleteData(10, 100); if (XMLString::compareString(tempStr, charData->getData())) { fprintf(stderr, "Warning!!! DOMCharacterData's 'deleteData' failed to work properly!\n"); OK = false; } // printf("This node's partially deleted data is: " + charData->getData()); XMLSize_t length = 10; if (!(length == charData->getLength())) { fprintf(stderr, "Warning!!! DOMCharacterData's 'getLength' failed to work properly!\n"); OK = false; } // printf("This node's data length is: " + charData->getLength()); XMLString::transcode("dBody' This is data inserted into this node'Level", tempStr, 3999); XMLString::transcode("' This is data inserted into this node'", tempStr2, 3999); charData->insertData(5, tempStr2); if (XMLString::compareString(tempStr, charData->getData())) { fprintf(stderr, "Warning!!! DOMCharacterData's 'insertData' failed to work properly!\n"); OK = false; } // printf("This node's updated with insert data is: " + charData->getData()); XMLString::transcode("dBody' This is ' replacement data'ted into this node'Level", tempStr, 3999); XMLString::transcode("' replacement data'", tempStr2, 3999); charData->replaceData(15, 10, tempStr2); if (XMLString::compareString(tempStr, charData->getData())) { fprintf(stderr, "Warning!!! DOMCharacterData's 'replaceData' failed to work properly!\n"); OK = false; } // printf("This node's updated with replacement data is: " +charData->getData()); XMLString::transcode("New data A123456789B123456789C123456789D123456789E123456789", tempStr, 3999); charData->setData(tempStr); if (XMLString::compareString(tempStr, charData->getData())) { fprintf(stderr, "Warning!!! DOMCharacterData's 'setData' failed to work properly!"); OK = false; } // printf("This node's new data via setData: " + charData->getData()); XMLString::transcode("123456789D123456789E123456789", tempStr, 3999); if (XMLString::compareString(tempStr, charData->substringData(30, 30))) { fprintf(stderr, "Warning!!! DOMCharacterData's 'substringData' failed to work properly!\n"); OK = false; } // printf("Using subString 30,30 you get:"); charData->substringData(30,30)).print(); XMLString::transcode("New data A123456789B12345", tempStr, 3999); if (XMLString::compareString(tempStr, charData->substringData(0, 25))) { fprintf(stderr, "Warning!!! DOMCharacterData's 'substringData' failed to work properly!\n"); OK = false; } // printf("Using subString 0,25 you get: "); charData->substringData(0,25)).print(); //************************************************* ERROR TESTS DOMTest tests; // What is this for? 'tests' is never used. //!! Throws INDEX_SIZE_ERR ******************** EXCEPTIONSTEST(charData->deleteData((XMLSize_t)-1, 5), DOMException::INDEX_SIZE_ERR, OK, 101 ); // Test 102 is not an error because the -1 parameter is an unsigned value, and counts // that exceed the length of the string are allowed. // EXCEPTIONSTEST(charData->deleteData(2, -1), DOMException::INDEX_SIZE_ERR, OK, 102 ); EXCEPTIONSTEST(charData->deleteData(100, 5), DOMException::INDEX_SIZE_ERR, OK,103 ); //can't set negative XMLSize_t in c++ compiler // EXCEPTIONSTEST(charData->insertData(-1, "Stuff inserted"), DOMException::INDEX_SIZE_ERR, OK, 104 ); XMLString::transcode("Stuff inserted", tempStr, 3999); EXCEPTIONSTEST(charData->insertData(100, tempStr), DOMException::INDEX_SIZE_ERR, OK, 105 ); // EXCEPTIONSTEST(charData->replaceData(-1, 5, "Replacement stuff") , DOMException::INDEX_SIZE_ERR, OK, 106 ); XMLString::transcode("Replacement stuff", tempStr, 3999); EXCEPTIONSTEST(charData->replaceData(100, 5 ,tempStr), DOMException::INDEX_SIZE_ERR, OK, 107 ); // EXCEPTIONSTEST(charData->replaceData(2, -1, "Replacement stuff"), DOMException::INDEX_SIZE_ERR, OK, 108 ); EXCEPTIONSTEST(charData->substringData((XMLSize_t)-1, 5), DOMException::INDEX_SIZE_ERR, OK, 109 ); EXCEPTIONSTEST(charData->substringData(100, 5), DOMException::INDEX_SIZE_ERR, OK, 110 ); // EXCEPTIONSTEST(charData->substringData(2, -1), DOMException::INDEX_SIZE_ERR, OK, 111 ); // Test the user data // Test simple set and get DOMCharacterData* userTest = charData; DOMDocument* userFirst = document; XMLCh* userSecond = tempStr2; XMLString::transcode("first", tempStr, 3999); XMLString::transcode("document", tempStr2, 3999); userTest->setUserData(tempStr2, (void*) document, 0); void* mydocument = userTest->getUserData(tempStr2); if (document != mydocument) { fprintf(stderr, "'set/getUserData' in line %i does not work\n", __LINE__); OK = false; } userTest->setUserData(tempStr, (void*) userFirst, 0); void* myFirst = userTest->getUserData(tempStr); if (userFirst != myFirst) { fprintf(stderr, "'set/getUserData' in line %i does not work\n", __LINE__); OK = false; } // Test overwrite void* myFirst2 = userTest->setUserData(tempStr, (void*) userSecond, 0); void* mySecond = userTest->getUserData(tempStr); if (userSecond != mySecond) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (userFirst != myFirst2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (userFirst == mySecond) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } // Test null // test non-exist key XMLString::transcode("not-exist", tempStr3, 3999); if (userTest->getUserData(tempStr3)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // use a node that does not have user data set before if (userFirst->getUserData(tempStr)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // Test reset void* mySecond2 = userTest->setUserData(tempStr, (void*) 0, 0); void* myNull = userTest->getUserData(tempStr); if (userSecond != mySecond2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (myNull) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } void* mydocument2 = userTest->setUserData(tempStr2, (void*) 0, 0); void* myNull2 = userTest->getUserData(tempStr2); if (mydocument != mydocument2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (myNull2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } //the userTest user data table should be null now if (userTest->getUserData(tempStr)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } if (userTest->getUserData(tempStr2)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // Test DOMUserDataHandler // test clone userTest->setUserData(tempStr2, (void*) document, &userhandler); DOMNode* mycloned = userTest->cloneNode(true); USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_CLONED, tempStr2, document, userTest, mycloned, __LINE__); // test import document->setUserData(tempStr2, (void*) document, &userhandler); DOMNode* myimport = document->importNode(userTest,true); USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_IMPORTED, tempStr2, document, userTest, myimport, __LINE__); // test delete myimport->setUserData(tempStr2, (void*) userTest, &userhandler); myimport->release(); USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_DELETED, tempStr2, userTest, 0, 0, __LINE__); // Test isSameNode if (!userTest->isSameNode(userTest)) { fprintf(stderr, "isSameNode failed in line %i\n", __LINE__); OK = false; } if (userTest->isSameNode(userFirst)) { fprintf(stderr, "isSameNode failed in line %i\n", __LINE__); OK = false; } // Test isEqualNode if (!userTest->isEqualNode(mycloned)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } if (!userTest->isEqualNode(userTest)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } if (userTest->isEqualNode(userFirst)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } // Test rename, should throw exception EXCEPTIONSTEST(document->renameNode(userTest, 0, tempStr2), DOMException::NOT_SUPPORTED_ERR, OK, 205 ); if (!OK) printf("\n*****The DOMCharacterData method calls listed above failed, all others worked correctly.*****\n"); charData->setData(resetData); // reset node to original data return OK; } /** * This method tests ChildNodeList methods for the XML DOM implementation * @param document org.w3c.dom.DOMDocument * */ bool DOMTest::testChildNodeList(DOMDocument* document) { DOMNode* node; DOMNode* node2; bool OK = true; // For debugging***** printf("\n testChildNodeList's outputs:\n"); node = document->getDocumentElement()->getLastChild(); // node gets doc's testBody element if (!(node->getChildNodes()->getLength()== 4)) OK = false; node2 = node->getChildNodes()->item(2); XMLString::transcode("dBodyLevel23", tempStr, 3999); if (XMLString::compareString(tempStr, node2->getNodeName())) OK = false; if (!OK) printf("\n*****The ChildNodeList method calls listed above failed, all others worked correctly.*****\n"); return OK; } /** * This method tests DOMComment* methods for the XML DOM implementation * @param document org.w3c.dom.DOMDocument * */ bool DOMTest::testComment(DOMDocument* document) { DOMNode* node; DOMNode* node2; bool T = true; bool OK = true; // For debugging***** printf("\n testComment's outputs:\n"); XMLString::transcode("dBodyLevel31", tempStr, 3999); node = document->getDocumentElement()->getElementsByTagName(tempStr)->item(0)->getFirstChild(); // node gets textNode11 node2 = node->cloneNode(T); // Check nodes for equality, both their name and value or lack thereof if (!(!XMLString::compareString(node->getNodeName(), node2->getNodeName()) && // Compares node names for equality (node->getNodeValue() != 0 && node2->getNodeValue() != 0) // Checks to make sure each node has a value node ? !XMLString::compareString(node->getNodeValue(), node2->getNodeValue()) // If both have value nodes test those value nodes for equality : (node->getNodeValue() == 0 && node2->getNodeValue() == 0))) // If one node doesn't have a value node make sure both don't { fprintf(stderr, "'cloneNode' did not clone the DOMComment* node correctly\n"); OK = false; } // Deep clone test comparison is in testNode & testDocument // Test the user data // Test simple set and get DOMComment* userTest = (DOMComment*) node; DOMComment* userFirst = (DOMComment*) node2; XMLCh* userSecond = tempStr2; XMLString::transcode("first", tempStr, 3999); XMLString::transcode("document", tempStr2, 3999); userTest->setUserData(tempStr2, (void*) document, 0); void* mydocument = userTest->getUserData(tempStr2); if (document != mydocument) { fprintf(stderr, "'set/getUserData' in line %i does not work\n", __LINE__); OK = false; } userTest->setUserData(tempStr, (void*) userFirst, 0); void* myFirst = userTest->getUserData(tempStr); if (userFirst != myFirst) { fprintf(stderr, "'set/getUserData' in line %i does not work\n", __LINE__); OK = false; } // Test overwrite void* myFirst2 = userTest->setUserData(tempStr, (void*) userSecond, 0); void* mySecond = userTest->getUserData(tempStr); if (userSecond != mySecond) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (userFirst != myFirst2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (userFirst == mySecond) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } // Test null // test non-exist key XMLString::transcode("not-exist", tempStr3, 3999); if (userTest->getUserData(tempStr3)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // use a node that does not have user data set before if (userFirst->getUserData(tempStr)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // Test reset void* mySecond2 = userTest->setUserData(tempStr, (void*) 0, 0); void* myNull = userTest->getUserData(tempStr); if (userSecond != mySecond2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (myNull) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } void* mydocument2 = userTest->setUserData(tempStr2, (void*) 0, 0); void* myNull2 = userTest->getUserData(tempStr2); if (mydocument != mydocument2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (myNull2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } //the userTest user data table should be null now if (userTest->getUserData(tempStr)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } if (userTest->getUserData(tempStr2)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // Test DOMUserDataHandler // test clone userTest->setUserData(tempStr2, (void*) document, &userhandler); DOMNode* mycloned = userTest->cloneNode(true); USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_CLONED, tempStr2, document, userTest, mycloned, __LINE__); // test import document->setUserData(tempStr2, (void*) document, &userhandler); DOMNode* myimport = document->importNode(userTest,true); USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_IMPORTED, tempStr2, document, userTest, myimport, __LINE__); // test delete myimport->setUserData(tempStr2, (void*) userTest, &userhandler); myimport->release(); USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_DELETED, tempStr2, userTest, 0, 0, __LINE__); // Test isSameNode if (!userTest->isSameNode(userTest)) { fprintf(stderr, "isSameNode failed in line %i\n", __LINE__); OK = false; } if (userTest->isSameNode(userFirst)) { fprintf(stderr, "isSameNode failed in line %i\n", __LINE__); OK = false; } // Test isEqualNode if (!userTest->isEqualNode(mycloned)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } if (!userTest->isEqualNode(userTest)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } if (userTest->isEqualNode(document)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } // Test rename, should throw exception EXCEPTIONSTEST(document->renameNode(userTest, 0, tempStr2), DOMException::NOT_SUPPORTED_ERR, OK, 206 ); if (!OK) printf("\n*****The DOMComment* method calls listed above failed, all others worked correctly.*****\n"); return OK; } /** * This method tests DeepNodeList methods for the XML DOM implementation * @param document org.w3c.dom.DOMDocument * */ bool DOMTest::testDeepNodeList(DOMDocument* document) { DOMNode* node; DOMNode* node2; bool OK = true; // For debugging***** printf("\n testDeepNodeList's outputs:\n\n"); node = document->getLastChild()->getLastChild(); // node gets docBody element // DOMElement* el = (DOMElement*)node; // DOMNodeList nl = el->getElementsByTagName("*"); // int len = nl->getLength(); // if (len != 8) XMLString::transcode("*",tempStr, 3999); if (!(8 == ((DOMElement*) node)->getElementsByTagName(tempStr)->getLength())) { printf ("Warning!!! DeepNodeList's 'getLength' failed to work properly!\n"); OK = false; } node2 = ((DOMElement*) node)->getElementsByTagName(tempStr)->item(2); //This also runs through 'nextMatchingElementAfter" XMLString::transcode("dBodyLevel32", tempStr, 3999); if (XMLString::compareString(tempStr, node2->getNodeName())) { printf ("Warning!!! DeepNodeList's 'item' (or DOMElement's 'getElementsBy TagName)failed to work properly!\n"); OK = false; } node2 = document->getLastChild(); XMLString::transcode("dTestBody", tempStr, 3999); if (XMLString::compareString(tempStr, ((DOMElement*) node2)->getElementsByTagName(tempStr)->item(0)->getNodeName()))//This also runs through 'nextMatchingElementAfter" { printf ("Warning!!! DeepNodeList's 'item' (or DOMElement's 'getElementsBy TagName)failed to work properly!\n"); OK = false; } if (!OK) printf("\n*****The DeepNodeList method calls listed above failed, all others worked correctly.*****\n"); return OK; } /** * This method tests DOMDocument* methods for the XML DOM implementation * @param document org.w3c.dom.DOMDocument * * **** ALL DOMDocument* create methods are run in docBuilder except createAttribute which is in testAttribute** */ bool DOMTest::testDocument(DOMDocument* document) { DOMTest make; DOMDocumentFragment* docFragment, *docFragment2; DOMElement* newElement; DOMNode* node, *node2; const char* elementNames[] = {"dFirstElement", "dTestBody", "dBodyLevel21","dBodyLevel31","dBodyLevel32", "dBodyLevel22","dBodyLevel33","dBodyLevel34","dBodyLevel23","dBodyLevel24"}; const char* newElementNames[] = {"dFirstElement", "dTestBody", "dBodyLevel22","dBodyLevel33","dBodyLevel34","dBodyLevel23"}; bool result; bool OK = true; // For debugging***** printf("\n testDocument's outputs:\n \n"); XMLString::transcode("testDocument1", tempStr, 3999); DOMDocumentType* checkDocType = make.createDocumentType(document,tempStr); DOMDocumentType* docType = document->getDoctype(); if (XMLString::compareString(checkDocType->getNodeName(),docType->getNodeName() )) { fprintf(stderr, "Warning!!! DOMDocument's 'getDocType method failed!\n" ); OK = false; } if (XMLString::compareString(checkDocType->getNodeValue(), docType->getNodeValue())) { fprintf(stderr, "Warning!!! DOMDocument's 'getDocType method failed!\n" ); OK = false; } /* if (! (checkDocType->getNodeName(), docType->getNodeName()) && // Compares node names for equality (checkDocType->getNodeValue() != 0 && docType->getNodeValue() != 0) // Checks to make sure each node has a value node ? checkDocType->getNodeValue(), docType->getNodeValue()) // If both have value nodes test those value nodes for equality : (checkDocType->getNodeValue() == 0 && docType->getNodeValue() == 0))) // If one node doesn't have a value node make sure both don't { fprintf(stderr, "Warning!!! DOMDocument's 'getDocType method failed!\n" ); OK = false; } */ DOMNode* rootElement = document->getLastChild(); bool check = (rootElement->getNodeValue() && document->getDocumentElement()->getNodeValue()) // Checks to make sure each node has a value node ? !XMLString::compareString(rootElement->getNodeValue(), document->getDocumentElement()->getNodeValue()) // If both have value nodes test those value nodes for equality : (rootElement->getNodeValue() == 0 && document->getDocumentElement()->getNodeValue() == 0); // If one node doesn't have a value node make sure both don't if (!(!XMLString::compareString(rootElement->getNodeName(), document->getDocumentElement()->getNodeName()) && // Compares node names for equality check)) { fprintf(stderr, "Warning!!! DOMDocument's 'getDocumentElement' method failed!\n" ); OK = false; } XMLString::transcode("*", tempStr, 3999); DOMNodeList* docElements = document->getElementsByTagName(tempStr); XMLSize_t docSize = docElements->getLength(); XMLSize_t i; for (i = 0; i < docSize; i++) { DOMNode* n = (DOMNode*) docElements->item(i); XMLString::transcode(elementNames[i], tempStr, 3999); if (XMLString::compareString(tempStr, n->getNodeName())) { fprintf(stderr, "Comparison of this document's elements failed at element number %d at line %i \n", i, __LINE__); OK = false; break; } } // What is this supposed to be doing? // //if (document->equals(document->getImplementation())) //{ // fprintf(stderr, "Warning!!! DOMDocument's 'getImplementation' method failed!\n" ); // OK = false; //} XMLString::transcode("NewElementTestsInsertBefore", tempStr, 3999); newElement = document->createElement(tempStr); // doc->insertBefore(newElement,0);//!! Throws a HIERARCHY_REQUEST_ERR ******* // doc->removeChild(docElements->item(9));//!! Throws a NOT_FOUND_ERR ******** docFragment = document->createDocumentFragment(); //Tests removeChild and stores removed branch for tree reconstruction docFragment->appendChild(docElements->item(1)->removeChild(docElements->item(9))); docFragment2 = document->createDocumentFragment(); //Tests removeChild and stores removed branch for tree reconstruction docFragment2->appendChild(docElements->item(1)->removeChild(docElements->item(2))); docSize = docElements->getLength(); for (i = 0; i < docSize; i++) { DOMNode* n = (DOMNode*) docElements->item(i); XMLString::transcode(newElementNames[i], tempStr, 3999); if (XMLString::compareString(tempStr, n->getNodeName())) { fprintf(stderr, "Comparison of new document's elements failed at element number %d at line %i \n", i, __LINE__); OK = false; break; } } docElements->item(1)->insertBefore(docFragment, 0); //Reattaches removed branch to restore tree to the original // AH Revist. Note: insertBefore should be able to take // a 0 as its second parameter. docElements->item(1)->insertBefore(docFragment2, docElements->item(2)); //Reattaches removed branch to restore tree to the original // printf(docElements->item(2)->getNodeName()); docSize = docElements->getLength(); for (i = 0; i < docSize; i++) { DOMNode* n = (DOMNode*) docElements->item(i); XMLString::transcode(elementNames[i], tempStr, 3999); if (XMLString::compareString(tempStr, n->getNodeName())) { fprintf(stderr, "Comparison of restored document's elements failed at element number %d at line %i \n", i, __LINE__); OK = false; break; } } DOMTest tests; // DOMDocument* z = tests.createDocument(); // tests.docBuilder(z, "z"); //!! Throws WRONG_DOCUMENT_ERR ********** // EXCEPTIONSTEST(z->appendChild( // z->appendChild(d.createComment("Test doc d comment"));// Tries to append z document with document d comment // d->getDocumentElement()->appendChild(z.createElement("newZdocElement"));// Tries to append d document with document z DOMElement // d->getLastChild()->getLastChild()->insertBefore(z.createElement("newZdocElement"),d->getLastChild()->getLastChild()->getFirstChild());// Tries to insert into d document with document z DOMElement // d->replaceChild(z.createElement("newZdocElement"),d->getLastChild()->getLastChild()->getFirstChild()); // Tries to replace in d document with document z DOMElement // doc->setNodeValue("This shouldn't work");//!! Throws a NO_MODIFICATION_ALLOWED_ERR ******** node = document; node2 = document->cloneNode(true); result = treeCompare(node, node2); // Deep clone test comparison of document cloneNode if (!result) { fprintf(stderr, "Warning!!! Deep clone of the document failed!\n"); OK = false; } node2->release(); // Deep clone test comparison is also in testNode // Test the user data // Test simple set and get DOMDocumentFragment* userTest = docFragment; DOMDocumentFragment* userFirst = docFragment2; XMLCh* userSecond = tempStr2; XMLString::transcode("first", tempStr, 3999); XMLString::transcode("document", tempStr2, 3999); userTest->setUserData(tempStr2, (void*) document, 0); void* mydocument = userTest->getUserData(tempStr2); if (document != mydocument) { fprintf(stderr, "'set/getUserData' in line %i does not work\n", __LINE__); OK = false; } userTest->setUserData(tempStr, (void*) userFirst, 0); void* myFirst = userTest->getUserData(tempStr); if (userFirst != myFirst) { fprintf(stderr, "'set/getUserData' in line %i does not work\n", __LINE__); OK = false; } // Test overwrite void* myFirst2 = userTest->setUserData(tempStr, (void*) userSecond, 0); void* mySecond = userTest->getUserData(tempStr); if (userSecond != mySecond) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (userFirst != myFirst2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (userFirst == mySecond) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } // Test null // test non-exist key XMLString::transcode("not-exist", tempStr3, 3999); if (userTest->getUserData(tempStr3)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // use a node that does not have user data set before if (userFirst->getUserData(tempStr)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // Test reset void* mySecond2 = userTest->setUserData(tempStr, (void*) 0, 0); void* myNull = userTest->getUserData(tempStr); if (userSecond != mySecond2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (myNull) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } void* mydocument2 = userTest->setUserData(tempStr2, (void*) 0, 0); void* myNull2 = userTest->getUserData(tempStr2); if (mydocument != mydocument2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (myNull2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } //the userTest user data table should be null now if (userTest->getUserData(tempStr)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } if (userTest->getUserData(tempStr2)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // Test DOMUserDataHandler // test clone userTest->setUserData(tempStr2, (void*) document, &userhandler); DOMNode* mycloned = userTest->cloneNode(true); USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_CLONED, tempStr2, document, userTest, mycloned, __LINE__); // test import document->setUserData(tempStr2, (void*) document, &userhandler); DOMNode* myimport = document->importNode(userTest,true); USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_IMPORTED, tempStr2, document, userTest, myimport, __LINE__); // test delete myimport->setUserData(tempStr2, (void*) userTest, &userhandler); myimport->release(); USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_DELETED, tempStr2, userTest, 0, 0, __LINE__); // Test isSameNode if (!userTest->isSameNode(userTest)) { fprintf(stderr, "isSameNode failed in line %i\n", __LINE__); OK = false; } if (userTest->isSameNode(userFirst)) { fprintf(stderr, "isSameNode failed in line %i\n", __LINE__); OK = false; } // Test isEqualNode if (!userTest->isEqualNode(mycloned)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } if (!userTest->isEqualNode(userTest)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } if (userTest->isEqualNode(document)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } // Test rename, should throw exception EXCEPTIONSTEST(document->renameNode(userTest, 0, tempStr2), DOMException::NOT_SUPPORTED_ERR, OK, 207 ); if (!OK) printf("\n*****The DOMDocument* method calls listed above failed, all others worked correctly.*****\n"); return OK; } /** * This method tests DOMDocumentFragment* methods for the XML DOM implementation * @param document org.w3c.dom.DOMDocument * * * ********This really isn't needed, only exists to throw NO_MODIFICATION_ALLOWED_ERR ******** */ bool DOMTest::testDocumentFragment(DOMDocument* document) { bool OK = true; // For debugging***** printf("\n testDocumentFragment's outputs:\n"); DOMDocumentFragment* testDocFragment = document->createDocumentFragment(); // testDocFragment->setNodeValue("This is a document fragment!");//!! Throws a NO_MODIFICATION_ALLOWED_ERR ******** // Test isSameNode DOMDocumentFragment* userTest = testDocFragment; DOMNode* mycloned = testDocFragment->cloneNode(true); DOMDocument* userFirst = document; if (!userTest->isSameNode(userTest)) { fprintf(stderr, "isSameNode failed in line %i\n", __LINE__); OK = false; } if (userTest->isSameNode(userFirst)) { fprintf(stderr, "isSameNode failed in line %i\n", __LINE__); OK = false; } // Test isEqualNode if (!userTest->isEqualNode(mycloned)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } if (!userTest->isEqualNode(userTest)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } if (userTest->isEqualNode(userFirst)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } // Test rename, should throw exception EXCEPTIONSTEST(document->renameNode(userTest, 0, tempStr2), DOMException::NOT_SUPPORTED_ERR, OK, 208 ); if (!OK) printf("\n*****The DOMDocumentFragment* method calls listed above failed, all others worked correctly.*****\n"); return OK; } /** * This method tests DOMDocumentType* methods for the XML DOM implementation * @param document org.w3c.dom.DOMDocument * */ bool DOMTest::testDocumentType(DOMDocument* document) { DOMTest test; DOMDocumentType* docType, *holdDocType; DOMNamedNodeMap* docNotationMap; DOMNode* node, *node2; bool OK = true; // For debugging***** printf("\n testDocumentType's outputs:\n"); XMLString::transcode("TestDocument", tempStr, 3999); DOMDocumentType* newDocumentType = test.createDocumentType(document, tempStr); node = document->getFirstChild(); // node gets doc's docType node node2 = node->cloneNode(true); // Check nodes for equality, both their name and value or lack thereof if (!(!XMLString::compareString(node->getNodeName(), node2->getNodeName()) && // Compares node names for equality (node->getNodeValue() != 0 && node2->getNodeValue() != 0) // Checks to make sure each node has a value node ? !XMLString::compareString(node->getNodeValue(), node2->getNodeValue()) // If both have value nodes test those value nodes for equality : (node->getNodeValue() == 0 && node2->getNodeValue() == 0))) // If one node doesn't have a value node make sure both don't { fprintf(stderr, "'cloneNode' did not clone the DOMDocumentType* node correctly\n"); OK = false; } // Deep clone test comparison is in testNode & testDocument DOMNode* abc9 = document->getFirstChild(); docType = (DOMDocumentType*) abc9; XMLString::transcode("ourNotationNode", tempStr, 3999); docNotationMap = docType->getNotations(); if (XMLString::compareString(tempStr, docNotationMap->item(0)->getNodeName())) { fprintf(stderr, "Warning!!! DOMDocumentType's 'getNotations' failed!\n"); OK = false; } // doc->appendChild(newDocumentTypeImpl);//!! Throws a HIERARCHY_REQUEST_ERR ******* DOMNode* abc10 = document->removeChild(document->getFirstChild()); //Tests removeChild and stores removed branch for tree reconstruction holdDocType = (DOMDocumentType*) abc10; document->insertBefore(newDocumentType, document->getDocumentElement()); //** Other aspects of insertBefore are tested in docBuilder through appendChild* DOMNode* rem = document->removeChild(document->getFirstChild()); //Removes newDocumentType for tree restoral rem->release(); document->insertBefore(holdDocType, document->getFirstChild()); //Reattaches removed branch to restore tree to the original // Test the user data // Test simple set and get DOMDocumentType* userTest = docType; DOMNamedNodeMap* userFirst = docNotationMap; XMLCh* userSecond = tempStr2; XMLString::transcode("first", tempStr, 3999); XMLString::transcode("document", tempStr2, 3999); userTest->setUserData(tempStr2, (void*) document, 0); void* mydocument = userTest->getUserData(tempStr2); if (document != mydocument) { fprintf(stderr, "'set/getUserData' in line %i does not work\n", __LINE__); OK = false; } userTest->setUserData(tempStr, (void*) userFirst, 0); void* myFirst = userTest->getUserData(tempStr); if (userFirst != myFirst) { fprintf(stderr, "'set/getUserData' in line %i does not work\n", __LINE__); OK = false; } // Test overwrite void* myFirst2 = userTest->setUserData(tempStr, (void*) userSecond, 0); void* mySecond = userTest->getUserData(tempStr); if (userSecond != mySecond) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (userFirst != myFirst2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (userFirst == mySecond) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } // Test null // test non-exist key XMLString::transcode("not-exist", tempStr3, 3999); if (userTest->getUserData(tempStr3)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // use a node that does not have user data set before if (node2->getUserData(tempStr)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // Test reset void* mySecond2 = userTest->setUserData(tempStr, (void*) 0, 0); void* myNull = userTest->getUserData(tempStr); if (userSecond != mySecond2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (myNull) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } void* mydocument2 = userTest->setUserData(tempStr2, (void*) 0, 0); void* myNull2 = userTest->getUserData(tempStr2); if (mydocument != mydocument2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (myNull2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } //the userTest user data table should be null now if (userTest->getUserData(tempStr)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } if (userTest->getUserData(tempStr2)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // Test DOMUserDataHandler // test clone userTest->setUserData(tempStr2, (void*) document, &userhandler); DOMNode* mycloned = userTest->cloneNode(true); USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_CLONED, tempStr2, document, userTest, mycloned, __LINE__); // document type cannot be imported, so no test import, rather test the exception document->setUserData(tempStr2, (void*) document, &userhandler); EXCEPTIONSTEST(document->importNode(userTest,true), DOMException::NOT_SUPPORTED_ERR, OK, 203 ); // Test isSameNode if (!userTest->isSameNode(userTest)) { fprintf(stderr, "isSameNode failed in line %i\n", __LINE__); OK = false; } if (userTest->isSameNode(document)) { fprintf(stderr, "isSameNode failed in line %i\n", __LINE__); OK = false; } // Test isEqualNode if (!userTest->isEqualNode(mycloned)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } if (!userTest->isEqualNode(userTest)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } if (userTest->isEqualNode(document)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } // Test rename, should throw exception EXCEPTIONSTEST(document->renameNode(userTest, 0, tempStr2), DOMException::NOT_SUPPORTED_ERR, OK, 209 ); if (!OK) printf("\n*****The DOMDocumentType* method calls listed above failed, all others worked correctly.*****\n"); return OK; } /** * @param document org.w3c.dom.DOMDocument */ bool DOMTest::testDOMerrors(DOMDocument* document) { bool OK = true; DOMTest tests; EXCEPTIONSTEST(document->appendChild(testElementNode), DOMException::HIERARCHY_REQUEST_ERR, OK, 201 ); EXCEPTIONSTEST(testTextNode->appendChild(testTextNode), DOMException::HIERARCHY_REQUEST_ERR, OK, 202 ); return OK; } #define TEST_VALID_XPATH(xpath, expected, line) \ try \ { \ XMLCh xpathStr[100]; \ XMLString::transcode(xpath,xpathStr,99); \ DOMXPathResult* result=(DOMXPathResult*)document->evaluate(xpathStr, document->getDocumentElement(), NULL, DOMXPathResult::ORDERED_NODE_SNAPSHOT_TYPE, NULL); \ if(result->getSnapshotLength() != expected) { \ fprintf(stderr, "DOMDocument::evaluate does not work in line %i (%d nodes instead of %d)\n", line, result->getSnapshotLength(), expected); \ OK = false; \ } \ result->release(); \ } \ catch(DOMException&) \ { \ fprintf(stderr, "DOMDocument::evaluate failed at line %i\n", line); \ OK = false; \ } #define TEST_VALID_XPATH_NS(xpath, resolver, expected, line) \ try \ { \ XMLCh xpathStr[100]; \ XMLString::transcode(xpath,xpathStr,99); \ DOMXPathResult* result=(DOMXPathResult*)document->evaluate(xpathStr, document->getDocumentElement(), resolver, DOMXPathResult::ORDERED_NODE_SNAPSHOT_TYPE, NULL); \ if(result->getSnapshotLength() != expected) { \ fprintf(stderr, "DOMDocument::evaluate does not work in line %i (%d nodes instead of %d)\n", line, result->getSnapshotLength(), expected); \ OK = false; \ } \ result->release(); \ } \ catch(DOMException&) \ { \ fprintf(stderr, "DOMDocument::evaluate failed at line %i\n", line); \ OK = false; \ } #define TEST_INVALID_XPATH(xpath, line) \ try \ { \ XMLCh xpathStr[100]; \ XMLString::transcode(xpath,xpathStr,99); \ DOMXPathResult* result=(DOMXPathResult*)document->evaluate(xpathStr, document->getDocumentElement(), NULL, DOMXPathResult::ORDERED_NODE_SNAPSHOT_TYPE, NULL); \ fprintf(stderr, "DOMDocument::evaluate does not work in line %i (invalid XPath)\n", line); \ OK = false; \ result->release(); \ } \ catch(DOMException& ) \ { \ } #define TEST_VALID_XPATH_SINGLE(xpath, line) \ try \ { \ XMLCh xpathStr[100]; \ XMLString::transcode(xpath,xpathStr,99); \ DOMXPathResult* result=(DOMXPathResult*)document->evaluate(xpathStr, document->getDocumentElement(), NULL, DOMXPathResult::FIRST_ORDERED_NODE_TYPE, NULL); \ if(result->getNodeValue() == NULL) { \ fprintf(stderr, "DOMDocument::evaluate does not work in line %i (single node not found)\n", line); \ OK = false; \ } \ result->release(); \ } \ catch(DOMException& ) \ { \ fprintf(stderr, "DOMDocument::evaluate failed at line %i\n", line); \ OK = false; \ } #include bool DOMTest::testXPath(DOMDocument* document) { bool OK = true; #if 0 XMLCh tempLS[3] = {chLatin_L, chLatin_S, chNull}; DOMImplementation *impl = DOMImplementationRegistry::getDOMImplementation(tempLS); DOMLSSerializer *theSerializer = ((DOMImplementationLS*)impl)->createLSSerializer(); DOMLSOutput *theOutputDesc = ((DOMImplementationLS*)impl)->createLSOutput(); StdOutFormatTarget myFormTarget; theOutputDesc->setByteStream(&myFormTarget); theSerializer->getDomConfig()->setParameter(XMLUni::fgDOMWRTFormatPrettyPrint, true); theSerializer->write(document, theOutputDesc); theOutputDesc->release(); theSerializer->release(); #endif TEST_VALID_XPATH("*", 1, __LINE__); TEST_VALID_XPATH("dTestBody/dBodyLevel24", 1, __LINE__); TEST_VALID_XPATH("//dBodyLevel34", 1, __LINE__); TEST_VALID_XPATH("/*", 1, __LINE__); TEST_VALID_XPATH("/dFirstElement/dTestBody/dBodyLevel24", 1, __LINE__); TEST_INVALID_XPATH("/dFirstElement//dBodyLevel34", __LINE__); // the "//" can only be at the beginning TEST_INVALID_XPATH("/dFirstElement/@dFirstElementdFirstElement", __LINE__); // cannot select attributes TEST_VALID_XPATH("//*", 10, __LINE__); TEST_VALID_XPATH_SINGLE("//*", __LINE__); TEST_INVALID_XPATH("//ns:node", __LINE__); // "ns" prefix is undefined XMLCh tempStr[100]; XMLString::transcode("xmlns:ns",tempStr,99); DOMAttr* attr=document->createAttributeNS(XMLUni::fgXMLNSURIName, tempStr); attr->setNodeValue(XMLUni::fgXSAXMLScanner); document->getDocumentElement()->setAttributeNodeNS(attr); const DOMXPathNSResolver* resolver=document->createNSResolver(document->getDocumentElement()); TEST_VALID_XPATH_NS("//ns:node", resolver, 0, __LINE__); document->getDocumentElement()->removeAttributeNode(attr); return OK; } /** * This method tests DOMImplementation methods for the XML DOM implementation * @param document org.w3c.dom.DOMDocument * */ bool DOMTest::testDOMImplementation(DOMDocument* document) { DOMImplementation* implementation; bool result = false; bool OK = true; // For debugging***** printf("\n testDOMImplementation's outputs:\n"); implementation = document->getImplementation(); //Uses getDOMImplementation to obtain implementation XMLString::transcode("XML", tempStr, 3999); XMLString::transcode("1.0", tempStr2, 3999); result = implementation->hasFeature(tempStr, tempStr2); if(!result) { fprintf(stderr, "Warning!!! DOMImplementation's 'hasFeature' that should be 'true' failed!"); OK = false; } XMLString::transcode("HTML", tempStr, 3999); XMLString::transcode("4.0", tempStr2, 3999); result = implementation->hasFeature(tempStr, tempStr2); if(result) { fprintf(stderr, "Warning!!! DOMImplementation's 'hasFeature' that should be 'false' failed!"); OK = false; } if (!OK) fprintf(stderr, "\n*****The DOMImplementation method calls listed above failed, all others worked correctly.*****\n"); return OK; } /** * This method tests DOMElement* methods for the XML DOM implementation * @param document org.w3c.dom.DOMDocument * */ bool DOMTest::testElement(DOMDocument* document) { DOMAttr* attributeNode, *newAttributeNode; DOMElement* element, *element2; DOMNode* node, *node2; const char* elementNames[] = {"dFirstElement", "dTestBody", "dBodyLevel21","dBodyLevel31","dBodyLevel32", "dBodyLevel22","dBodyLevel33","dBodyLevel34","dBodyLevel23","dBodyLevel24"}; const char* textCompare[] = {"dBodyLevel31'sChildTextNode11", "dBodyLevel31'sChildTextNode12", "dBodyLevel31'sChildTextNode13"}; DOMNamedNodeMap* nodeMap; bool OK = true; node = document->getDocumentElement(); // node gets doc's firstElement node2 = node->cloneNode(true); // Check nodes for equality, both their name and value or lack thereof if (!(!XMLString::compareString(node->getNodeName(), node2->getNodeName()) && // Compares node names for equality (node->getNodeValue() != 0 && node2->getNodeValue() != 0) // Checks to make sure each node has a value node ? !XMLString::compareString(node->getNodeValue(), node2->getNodeValue()) // If both have value nodes test those value nodes for equality : (node->getNodeValue() == 0 && node2->getNodeValue() == 0))) // If one node doesn't have a value node make sure both don't { fprintf(stderr, "'cloneNode' did not clone the DOMElement* node correctly.\n"); OK = false; } // Deep clone test comparison is in testNode & testDocument element = document->getDocumentElement(); // element gets doc's firstElement XMLString::copyString(tempStr, document->getNodeValue()); XMLString::transcode("'s test attribute", tempStr2, 3999); XMLString::catString(tempStr, tempStr2); if (XMLString::compareString(XMLUni::fgZeroLenString, element->getAttribute(tempStr))) { fprintf(stderr, "Warning!!! DOMElement's 'getAttribute' failed!\n"); OK = false; } XMLString::copyString(tempStr, document->getNodeValue()); XMLString::transcode("FirstElement", tempStr2, 3999); XMLString::catString(tempStr, tempStr2); attributeNode = element->getAttributeNode(tempStr); if(! (attributeNode == 0)) { fprintf(stderr, "Warning!!! DOMElement's 'getAttributeNode' failed! It should have returned '0' here!\n"); OK = false; } XMLString::transcode("AnotherFirstElementAttribute", tempStr, 3999); newAttributeNode = document->createAttribute(tempStr); XMLString::transcode("A new attribute which helps test calls in DOMElement", tempStr, 3999); newAttributeNode->setValue(tempStr); // This test is incorrect. It assumes that there is a defined ordering of the entries // in a nodeMap, but there is no ordering required. #ifdef TheFollowingCheckIsInvalid DOMNode* rem2 = element->setAttributeNode(newAttributeNode); if (rem2) rem2->release(); nodeMap = element->getAttributes(); XMLSize_t size = nodeMap->getLength(); XMLSize_t k; for (k = 0; k < size; k++) { DOMNode* n = (DOMNode) nodeMap->item(k); XMLString::transcode(attributeCompare[k], tempStr, 3999); if (XMLString::compareString(tempStr, n->getNodeName()))) { fprintf(stderr, "Warning!!! Comparison of firstElement's attributes failed at line %i.\n", __LINE__); fprintf(stderr, " This failure can be a result of DOMElement's 'setValue' and/or 'setAttributeNode' and/or 'getAttributes' failing.\n"); OK = false; break; } // printf("firstElement's attribute number " + k + " : " + n->getNodeName()); } #endif nodeMap = element->getAttributes(); XMLSize_t size = nodeMap->getLength(); if (size != 2) { fprintf(stderr, "DOMElement* Tests Failure 001\n"); OK = false; } DOMNode* rem = element->setAttributeNode(newAttributeNode); if (rem) rem->release(); size = nodeMap->getLength(); if (size != 3) { fprintf(stderr, "DOMElement* Tests Failure 002\n"); OK = false; } // Fetch the newly added attribute node back out of from the named node map, // and check that we are returned the same node that we put in-> XMLString::transcode("AnotherFirstElementAttribute", tempStr, 3999); DOMNode* abc12 = nodeMap->getNamedItem(tempStr); DOMAttr* fetchedAttr = (DOMAttr*) abc12; if (fetchedAttr != newAttributeNode) { fprintf(stderr, "DOMElement* Tests Failure 003\n"); OK = false; } // Fetch the newly added attribute back out directly from the element itself. XMLString::transcode("AnotherFirstElementAttribute", tempStr, 3999); fetchedAttr = element->getAttributeNode(tempStr); if (fetchedAttr != newAttributeNode) { fprintf(stderr, "DOMElement* Tests Failure 004\n"); OK = false; } XMLString::transcode("*",tempStr, 3999); DOMNodeList* docElements = document->getElementsByTagName(tempStr); XMLSize_t docSize = docElements->getLength(); XMLSize_t i; for (i = 0; i < docSize; i++) { DOMNode* n = docElements->item(i); XMLString::transcode(elementNames[i], tempStr, 3999); if (XMLString::compareString(tempStr, n->getNodeName())) { fprintf(stderr, "Warning!!! Comparison of DOMElement's 'getElementsByTagName' " "and/or 'item' failed at element number %d at line %i \n", i, __LINE__ ); fprintf(stderr, "\n"); OK = false; break; } // printf("docElement's number " + i + " is: " + n->getNodeName()); } XMLString::transcode("dBodyLevel21", tempStr, 3999); DOMNode* abc15 = document->getElementsByTagName(tempStr)->item(0); // element gets DOMElement* test BodyLevel21 element = (DOMElement*) abc15; XMLString::transcode("dBodyLevel31", tempStr, 3999); DOMNode* abc16 = document->getElementsByTagName(tempStr)->item(0); // element2 gets DOMElement* test BodyLevel31 element2 = (DOMElement*) abc16; DOMNodeList* text = ((DOMNode* &) element2)->getChildNodes(); XMLSize_t textSize = text->getLength(); XMLSize_t j; static bool firstTime = true; if (firstTime) { firstTime = false; // Temporary fix. Subsequent tests alter the doc, causing // this test to fail on all but the first time through. for (j = 0; j < textSize; j++) { DOMNode* n = text->item(j); XMLString::transcode(textCompare[j], tempStr, 3999); if (XMLString::compareString(tempStr, n->getNodeValue())) { fprintf(stderr, "Warning!!! Comparison of original text nodes via DOMNode* 'getChildNodes' & DOMNodeList 'item'\n" " failed at text node: #%d at line %i \n ", j, __LINE__ ); OK = false; break; } // printf("DOMElement* testBodyLevel31's child text node " + j + " is: " + n->getNodeValue()); } } element = document->getDocumentElement(); // element gets doc's firstElement element->normalize(); // Concatenates all adjacent text nodes in this element's subtree DOMNodeList* text2 = ((DOMNode*) element2)->getChildNodes(); XMLString::transcode("dBodyLevel31'sChildTextNode11dBodyLevel31'sChildTextNode12dBodyLevel31'sChildTextNode13", tempStr, 3999); DOMNode* n = text2->item(0); if (XMLString::compareString(tempStr, n->getNodeValue())) { fprintf(stderr, "Warning!!! Comparison of concatenated text nodes created by DOMElement's 'normalize' failed!\n"); OK = false; } XMLString::transcode("FirstElementLastAttribute", tempStr, 3999); XMLString::transcode("More attribute stuff for firstElement!!", tempStr2, 3999); element->setAttribute(tempStr, tempStr2); XMLString::transcode("FirstElementLastAttribute", tempStr, 3999); element->removeAttribute(tempStr); rem = element->removeAttributeNode(newAttributeNode); if (rem) rem->release(); // doc->getLastChild()->setNodeValue("This shouldn't work");//!! Throws a NO_MODIFICATION_ALLOWED_ERR*** // Test the user data // Test simple set and get DOMElement* userTest = element; DOMAttr* userFirst = newAttributeNode; XMLCh* userSecond = tempStr2; XMLString::transcode("first", tempStr, 3999); XMLString::transcode("document", tempStr2, 3999); userTest->setUserData(tempStr2, (void*) document, 0); void* mydocument = userTest->getUserData(tempStr2); if (document != mydocument) { fprintf(stderr, "'set/getUserData' in line %i does not work\n", __LINE__); OK = false; } userTest->setUserData(tempStr, (void*) userFirst, 0); void* myFirst = userTest->getUserData(tempStr); if (userFirst != myFirst) { fprintf(stderr, "'set/getUserData' in line %i does not work\n", __LINE__); OK = false; } // Test overwrite void* myFirst2 = userTest->setUserData(tempStr, (void*) userSecond, 0); void* mySecond = userTest->getUserData(tempStr); if (userSecond != mySecond) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (userFirst != myFirst2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (userFirst == mySecond) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } // Test null // test non-exist key XMLString::transcode("not-exist", tempStr3, 3999); if (userTest->getUserData(tempStr3)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // use a node that does not have user data set before if (userFirst->getUserData(tempStr)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // Test reset void* mySecond2 = userTest->setUserData(tempStr, (void*) 0, 0); void* myNull = userTest->getUserData(tempStr); if (userSecond != mySecond2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (myNull) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } void* mydocument2 = userTest->setUserData(tempStr2, (void*) 0, 0); void* myNull2 = userTest->getUserData(tempStr2); if (mydocument != mydocument2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (myNull2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } //the userTest user data table should be null now if (userTest->getUserData(tempStr)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } if (userTest->getUserData(tempStr2)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // Test DOMUserDataHandler // test clone userTest->setUserData(tempStr2, (void*) document, &userhandler); DOMNode* mycloned = userTest->cloneNode(true); USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_CLONED, tempStr2, document, userTest, mycloned, __LINE__); // test import document->setUserData(tempStr2, (void*) document, &userhandler); DOMNode* myimport = document->importNode(userTest,true); USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_IMPORTED, tempStr2, document, userTest, myimport, __LINE__); // test delete myimport->setUserData(tempStr2, (void*) userTest, &userhandler); myimport->release(); USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_DELETED, tempStr2, userTest, 0, 0, __LINE__); // Test isSameNode if (!userTest->isSameNode(userTest)) { fprintf(stderr, "isSameNode failed in line %i\n", __LINE__); OK = false; } if (userTest->isSameNode(userFirst)) { fprintf(stderr, "isSameNode failed in line %i\n", __LINE__); OK = false; } // Test isEqualNode if (!userTest->isEqualNode(mycloned)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } if (!userTest->isEqualNode(userTest)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } if (userTest->isEqualNode(userFirst)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } // Test renameNode XMLString::transcode("http://nsa", tempStr4, 3999); XMLString::transcode("aa", tempStr5, 3999); XMLString::transcode("pnsa:aa", tempStr3, 3999); // create the element DOMElement* renameTestElement = document->createElement(tempStr5); DOMElement* renameTestElementNS = document->createElementNS(tempStr4, tempStr3); // create the parent DOMElement* renameTestParent = document->createElement(tempStr5); renameTestParent->appendChild(renameTestElement); renameTestParent->appendChild(renameTestElementNS); // set up the userdata renameTestElement->setUserData(tempStr5, (void*) document, &userhandler); renameTestElementNS->setUserData(tempStr4, (void*) document, 0); // append a text node as child DOMText* renameTestText = document->createTextNode(tempStr5); DOMText* renameTestTextNS = document->createTextNode(tempStr4); renameTestElement->appendChild(renameTestText); renameTestElementNS->appendChild(renameTestTextNS); XMLString::transcode("http://nsb", tempStr, 3999); XMLString::transcode("bb", tempStr2, 3999); XMLString::transcode("pnsb:bb", tempStr3, 3999); // set up some attributes DOMAttr* renameTestAttribute = document->createAttribute(tempStr5); DOMAttr* renameTestAttributeNS = document->createAttributeNS(tempStr4, tempStr3); renameTestElement->setAttributeNode(renameTestAttribute); renameTestElementNS->setAttributeNodeNS(renameTestAttributeNS); //Test compareDocumentPosition first before testing rename // renameTestParent // | // |_ renameTestElement (has renameTestAttribute) // | | // | |_ renameTestText // | // |_ renameTestElementNS (has renameTestAttributeNS) // | | // | |_ renameTestTextNS // COMPARETREEPOSITIONTEST(renameTestAttribute, renameTestAttributeNS, DOMNode::DOCUMENT_POSITION_FOLLOWING, __LINE__); COMPARETREEPOSITIONTEST(renameTestAttribute, renameTestElement, DOMNode::DOCUMENT_POSITION_PRECEDING, __LINE__); COMPARETREEPOSITIONTEST(renameTestAttribute, renameTestText, DOMNode::DOCUMENT_POSITION_FOLLOWING, __LINE__); COMPARETREEPOSITIONTEST(renameTestAttribute, renameTestTextNS, DOMNode::DOCUMENT_POSITION_FOLLOWING, __LINE__); COMPARETREEPOSITIONTEST(renameTestAttribute, renameTestParent, DOMNode::DOCUMENT_POSITION_PRECEDING, __LINE__); COMPARETREEPOSITIONTEST(renameTestAttributeNS, renameTestAttribute, DOMNode::DOCUMENT_POSITION_PRECEDING, __LINE__); COMPARETREEPOSITIONTEST(renameTestElement, renameTestAttributeNS, DOMNode::DOCUMENT_POSITION_FOLLOWING, __LINE__); COMPARETREEPOSITIONTEST(renameTestAttributeNS, renameTestText, DOMNode::DOCUMENT_POSITION_PRECEDING, __LINE__); COMPARETREEPOSITIONTEST(renameTestTextNS, renameTestAttributeNS, DOMNode::DOCUMENT_POSITION_PRECEDING, __LINE__); // start the rename tests // rename the NS Element DOMElement* renameTest = (DOMElement*) document->renameNode(renameTestElementNS, tempStr, tempStr3); // test the name if (XMLString::compareString(tempStr, renameTest->getNamespaceURI())) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } if (XMLString::compareString(tempStr2, renameTest->getLocalName())) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } if (XMLString::compareString(tempStr3, renameTest->getNodeName())) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } // test the child / nodevalue if (XMLString::compareString(tempStr4, renameTest->getFirstChild()->getNodeValue())) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } // test the attribute if (!renameTest->getAttributeNodeNS(tempStr4, tempStr2)) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } // test the owner element if (renameTestParent->getElementsByTagNameNS(tempStr, tempStr2)->getLength() != 1) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } if (renameTestParent->getElementsByTagNameNS(tempStr4, tempStr5)->getLength() != 0) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } // test user data void* renamedocument = renameTest->getUserData(tempStr4); if (document != renamedocument) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } // test isSame and isEqual if (!renameTestElementNS->isEqualNode(renameTest)) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } if (!renameTestElementNS->isSameNode(renameTest)) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } // rename the Element (null namespace) renameTest = (DOMElement*) document->renameNode(renameTestElement, 0, tempStr2); // test the name if (renameTest->getNamespaceURI()) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } if (renameTest->getLocalName()) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } if (XMLString::compareString(tempStr2, renameTest->getNodeName())) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } // test the child / nodevalue if (XMLString::compareString(tempStr5, renameTest->getFirstChild()->getNodeValue())) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } // test the attribute if (!renameTest->getAttributeNode(tempStr5)) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } // test the owner element if (renameTestParent->getElementsByTagName(tempStr2)->getLength() != 1) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } if (renameTestParent->getElementsByTagName(tempStr5)->getLength() != 0) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } // test user data renamedocument = renameTest->getUserData(tempStr5); if (document != renamedocument) { fprintf(stderr, "'set/getUserData' in line %i does not work\n", __LINE__); OK = false; } // test isSame and isEqual if (!renameTestElement->isEqualNode(renameTest)) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } if (!renameTestElement->isSameNode(renameTest)) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } // rename the Element (with namespace) renameTest = (DOMElement*) document->renameNode(renameTestElement, tempStr, tempStr3); // test the name if (XMLString::compareString(tempStr, renameTest->getNamespaceURI())) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } if (XMLString::compareString(tempStr2, renameTest->getLocalName())) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } if (XMLString::compareString(tempStr3, renameTest->getNodeName())) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } // test the child / nodevalue if (XMLString::compareString(tempStr5, renameTest->getFirstChild()->getNodeValue())) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } if (renameTestElement->getFirstChild()) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } // test the attribute if (!renameTest->getAttributeNode(tempStr5)) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } if (renameTestElement->getAttributeNode(tempStr5)) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } // test the owner element // the nodelist should be 2 items as we have to count the renameTestElementNS as well if (renameTestParent->getElementsByTagNameNS(tempStr, tempStr2)->getLength() != 2) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } if (renameTestParent->getElementsByTagNameNS(0, tempStr2)->getLength() != 0) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } if (renameTestParent->getElementsByTagName(tempStr2)->getLength() != 0) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } // test user data renamedocument = renameTest->getUserData(tempStr5); if (document != renamedocument) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } // test userdatahandler USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_RENAMED, tempStr5, document, renameTestElement, renameTest, __LINE__); // test isSame and isEqual // a new node is created here, so both isSame and isEqual are not compared if (renameTestElement->isEqualNode(renameTest)) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } if (renameTestElement->isSameNode(renameTest)) { fprintf(stderr, "renameNode failed in line %i\n", __LINE__); OK = false; } //setIdAttribute tests XMLString::transcode("http://nsa", tempStr4, 3999); XMLString::transcode("aa", tempStr5, 3999); DOMAttr *idAtt = document->createAttributeNS(tempStr4, tempStr5); //tests for node not being on testElementNode EXCEPTIONSTEST(testElementNode->setIdAttribute(tempStr4, true), DOMException::NOT_FOUND_ERR, OK, 1000); EXCEPTIONSTEST(testElementNode->setIdAttributeNS(tempStr4, tempStr5, true), DOMException::NOT_FOUND_ERR, OK, 1001); EXCEPTIONSTEST(testElementNode->setIdAttributeNode(idAtt, true), DOMException::NOT_FOUND_ERR, OK, 1002); //should test NO_MODIFICATION_ALLOWED_ERR but dont know how to without direct access to DOMAttrImpl. idAtt = document->createAttributeNS(tempStr4, tempStr5); idAtt->setValue(tempStr3); testElementNode->setAttributeNode(idAtt); testElementNode->setIdAttributeNode(idAtt, true); if(!idAtt->isId()) { fprintf(stderr, "setIdAttributeNode failed in line %i\n", __LINE__); OK = false; } DOMElement *idEle = document->getElementById(tempStr3); if(!idEle || !idEle->isSameNode(testElementNode)) { fprintf(stderr, "setIdAttributeNode failed in line %i\n", __LINE__); OK = false; } testElementNode->setIdAttributeNode(idAtt, false); if(idAtt->isId()) { fprintf(stderr, "setIdAttributeNode failed in line %i\n", __LINE__); OK = false; } idEle = document->getElementById(tempStr3); if(idEle) { fprintf(stderr, "setIdAttributeNode failed in line %i\n", __LINE__); OK = false; } testElementNode->removeAttributeNode(idAtt); XMLString::transcode("someval", tempStr3, 3999); idAtt = document->createAttributeNS(tempStr4, tempStr5); idAtt->setValue(tempStr3); testElementNode->setAttributeNode(idAtt); testElementNode->setIdAttributeNS(tempStr4, tempStr5, true); if(!idAtt->isId()) { fprintf(stderr, "setIdAttributeNS failed in line %i\n", __LINE__); OK = false; } idEle = document->getElementById(tempStr3); if(!idEle || !idEle->isSameNode(testElementNode)) { fprintf(stderr, "setIdAttributeNS failed in line %i\n", __LINE__); OK = false; } testElementNode->setIdAttributeNS(tempStr4, tempStr5, false); if(idAtt->isId()) { fprintf(stderr, "setIdAttributeNS failed in line %i\n", __LINE__); OK = false; } idEle = document->getElementById(tempStr3); if(idEle) { fprintf(stderr, "setIdAttributeNS failed in line %i\n", __LINE__); OK = false; } testElementNode->removeAttributeNode(idAtt); idAtt->release(); XMLString::transcode("somevalDif", tempStr3, 3999); idAtt = document->createAttribute(tempStr5); idAtt->setValue(tempStr3); testElementNode->setAttributeNode(idAtt); testElementNode->setIdAttribute(tempStr5, true); if(!idAtt->isId()) { fprintf(stderr, "setIdAttribute failed in line %i\n", __LINE__); OK = false; } idEle = document->getElementById(tempStr3); if(!idEle || !idEle->isSameNode(testElementNode)) { fprintf(stderr, "setIdAttribute failed in line %i\n", __LINE__); OK = false; } testElementNode->setIdAttribute(tempStr5, false); if(idAtt->isId()) { fprintf(stderr, "setIdAttribute failed in line %i\n", __LINE__); OK = false; } idEle = document->getElementById(tempStr3); if(idEle) { fprintf(stderr, "setIdAttribute failed in line %i\n", __LINE__); OK = false; } testElementNode->removeAttributeNode(idAtt); idAtt->release(); if (!OK) printf("\n*****The DOMElement* method calls listed above failed, all others worked correctly.*****\n"); return OK; } /** * This method tests DOMEntity* methods for the XML DOM implementation * @param document org.w3c.dom.DOMDocument * */ bool DOMTest::testEntity(DOMDocument* document) { DOMEntity* entity; DOMNode* node, *node2; bool OK = true; // For debugging***** printf("\n testEntity's outputs:\n\n"); XMLString::transcode("ourEntityNode", tempStr, 3999); DOMNode* abc20 = document->getDoctype()->getEntities()->getNamedItem(tempStr); entity = (DOMEntity*) abc20; node = entity; node2 = entity->cloneNode(true); // Check nodes for equality, both their name and value or lack thereof if (!(!XMLString::compareString(node->getNodeName(), node2->getNodeName()) && // Compares node names for equality (node->getNodeValue() != 0 && node2->getNodeValue() != 0) // Checks to make sure each node has a value node ? !XMLString::compareString(node->getNodeValue(), node2->getNodeValue()) // If both have value nodes test those value nodes for equality : (node->getNodeValue() == 0 && node2->getNodeValue() == 0))) // If one node doesn't have a value node make sure both don't { fprintf(stderr, "'cloneNode' did not clone the DOMEntity* node correctly"); OK = false; } // Deep clone test comparison is in testNode & testDocument // Test the user data // Test simple set and get DOMEntity* userTest = entity; DOMNode* userFirst = node; XMLCh* userSecond = tempStr2; XMLString::transcode("first", tempStr, 3999); XMLString::transcode("document", tempStr2, 3999); userTest->setUserData(tempStr2, (void*) document, 0); void* mydocument = userTest->getUserData(tempStr2); if (document != mydocument) { fprintf(stderr, "'set/getUserData' in line %i does not work\n", __LINE__); OK = false; } userTest->setUserData(tempStr, (void*) userFirst, 0); void* myFirst = userTest->getUserData(tempStr); if (userFirst != myFirst) { fprintf(stderr, "'set/getUserData' in line %i does not work\n", __LINE__); OK = false; } // Test overwrite void* myFirst2 = userTest->setUserData(tempStr, (void*) userSecond, 0); void* mySecond = userTest->getUserData(tempStr); if (userSecond != mySecond) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (userFirst != myFirst2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (userFirst == mySecond) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } // Test null // test non-exist key XMLString::transcode("not-exist", tempStr3, 3999); if (userTest->getUserData(tempStr3)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // use a node that does not have user data set before if (userFirst->getUserData(tempStr)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // Test reset void* mySecond2 = userTest->setUserData(tempStr, (void*) 0, 0); void* myNull = userTest->getUserData(tempStr); if (userSecond != mySecond2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (myNull) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } void* mydocument2 = userTest->setUserData(tempStr2, (void*) 0, 0); void* myNull2 = userTest->getUserData(tempStr2); if (mydocument != mydocument2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (myNull2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } //the userTest user data table should be null now if (userTest->getUserData(tempStr)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } if (userTest->getUserData(tempStr2)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // Test DOMUserDataHandler // test clone userTest->setUserData(tempStr2, (void*) document, &userhandler); DOMNode* mycloned = userTest->cloneNode(true); USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_CLONED, tempStr2, document, userTest, mycloned, __LINE__); // test import document->setUserData(tempStr2, (void*) document, &userhandler); DOMNode* myimport = document->importNode(userTest,true); USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_IMPORTED, tempStr2, document, userTest, myimport, __LINE__); // test delete myimport->setUserData(tempStr2, (void*) userTest, &userhandler); myimport->release(); USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_DELETED, tempStr2, userTest, 0, 0, __LINE__); // Test isSameNode if (!userTest->isSameNode(userTest)) { fprintf(stderr, "isSameNode failed in line %i\n", __LINE__); OK = false; } if (userTest->isSameNode(userFirst)) { fprintf(stderr, "isSameNode failed in line %i\n", __LINE__); OK = false; } // Test isEqualNode if (!userTest->isEqualNode(mycloned)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } if (!userTest->isEqualNode(userTest)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } if (userTest->isEqualNode(userFirst)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } // Test rename, should throw exception EXCEPTIONSTEST(document->renameNode(userTest, 0, tempStr2), DOMException::NOT_SUPPORTED_ERR, OK, 210 ); if (!OK) printf("\n*****The DOMEntity* method calls listed above failed, all others worked correctly.*****\n"); return OK; } /** * This method tests DOMEntityReference* methods for the XML DOM implementation * @param document org.w3c.dom.DOMDocument * */ bool DOMTest::testEntityReference(DOMDocument* document) { DOMEntityReference* entityReference; DOMNode* node, *node2; bool OK = true; // For debugging***** printf("\n testEntityReference's outputs:\n"); DOMNode* abc30 = document->getLastChild()->getLastChild()->getLastChild()->getFirstChild(); entityReference = (DOMEntityReference*) abc30; node = entityReference; node2 = node->cloneNode(true); // Check nodes for equality, both their name and value or lack thereof if (!(!XMLString::compareString(node->getNodeName(), node2->getNodeName()) && // Compares node names for equality (node->getNodeValue() != 0 && node2->getNodeValue() != 0) // Checks to make sure each node has a value node ? !XMLString::compareString(node->getNodeValue(), node2->getNodeValue()) // If both have value nodes test those value nodes for equality : (node->getNodeValue() == 0 && node2->getNodeValue() == 0))) // If one node doesn't have a value node make sure both don't { fprintf(stderr, "'cloneNode' did not clone the DOMEntityReference* node correctly\n"); OK = false; } // Deep clone test comparison is in testNode & testDocument // entityReference->setNodeValue("This shouldn't work");//!! Throws a NO_MODIFICATION_ALLOWED_ERR ******** // Test the user data // Test simple set and get DOMEntityReference* userTest = entityReference; DOMNode* userFirst = node2; XMLCh* userSecond = tempStr2; XMLString::transcode("first", tempStr, 3999); XMLString::transcode("document", tempStr2, 3999); userTest->setUserData(tempStr2, (void*) document, 0); void* mydocument = userTest->getUserData(tempStr2); if (document != mydocument) { fprintf(stderr, "'set/getUserData' in line %i does not work\n", __LINE__); OK = false; } userTest->setUserData(tempStr, (void*) userFirst, 0); void* myFirst = userTest->getUserData(tempStr); if (userFirst != myFirst) { fprintf(stderr, "'set/getUserData' in line %i does not work\n", __LINE__); OK = false; } // Test overwrite void* myFirst2 = userTest->setUserData(tempStr, (void*) userSecond, 0); void* mySecond = userTest->getUserData(tempStr); if (userSecond != mySecond) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (userFirst != myFirst2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (userFirst == mySecond) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } // Test null // test non-exist key XMLString::transcode("not-exist", tempStr3, 3999); if (userTest->getUserData(tempStr3)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // use a node that does not have user data set before if (node2->getUserData(tempStr)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // Test reset void* mySecond2 = userTest->setUserData(tempStr, (void*) 0, 0); void* myNull = userTest->getUserData(tempStr); if (userSecond != mySecond2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (myNull) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } void* mydocument2 = userTest->setUserData(tempStr2, (void*) 0, 0); void* myNull2 = userTest->getUserData(tempStr2); if (mydocument != mydocument2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (myNull2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } //the userTest user data table should be null now if (userTest->getUserData(tempStr)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } if (userTest->getUserData(tempStr2)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // Test DOMUserDataHandler // test clone userTest->setUserData(tempStr2, (void*) document, &userhandler); DOMNode* mycloned = userTest->cloneNode(true); USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_CLONED, tempStr2, document, userTest, mycloned, __LINE__); // test import document->setUserData(tempStr2, (void*) document, &userhandler); DOMNode* myimport = document->importNode(userTest,true); USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_IMPORTED, tempStr2, document, userTest, myimport, __LINE__); // test delete myimport->setUserData(tempStr2, (void*) userTest, &userhandler); myimport->release(); USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_DELETED, tempStr2, userTest, 0, 0, __LINE__); // Test isSameNode if (!userTest->isSameNode(userTest)) { fprintf(stderr, "isSameNode failed in line %i\n", __LINE__); OK = false; } if (userTest->isSameNode(userFirst)) { fprintf(stderr, "isSameNode failed in line %i\n", __LINE__); OK = false; } // Test isEqualNode if (!userTest->isEqualNode(mycloned)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } if (!userTest->isEqualNode(userTest)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } if (userTest->isEqualNode(document)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } // Test rename, should throw exception EXCEPTIONSTEST(document->renameNode(userTest, 0, tempStr2), DOMException::NOT_SUPPORTED_ERR, OK, 211 ); if (!OK) printf("\n*****The DOMEntityReference* method calls listed above failed, all others worked correctly.*****\n"); return OK; } /** * This method tests DOMNode* methods for the XML DOM implementation * @param document org.w3c.dom.DOMDocument * * * ********* This is only for a test of cloneNode "deep"******* ********* And for error tests********* */ bool DOMTest::testNode(DOMDocument* document) { DOMNode* node, *node2; bool result; bool OK = true; // For debugging***** printf("\n testNode's outputs:\n"); node = document->getDocumentElement(); node2 = node->cloneNode(true); result = treeCompare(node, node2); // Deep clone test of cloneNode if (result) { //printf("'cloneNode' successfully cloned this whole node tree (deep)!\n"); } else { fprintf(stderr, "'cloneNode' did not successfully clone this whole node tree (deep)!\n"); OK = false; } //!! The following gives a did not clone successfully message********* node = document->getDocumentElement(); node2 = node->getFirstChild(); result = treeCompare(node, node2); if (!result) { //fprintf(stderr, "'cloneNode' did not successfully clone this whole node tree (deep)!\n"); } else { fprintf(stderr, "'cloneNode' was supposed to fail here, either it or 'treeCompare' failed!!!\n"); OK = false; } // Deep clone test also in testDocument // Test the user data // Test simple set and get DOMNode* userTest = node; DOMNode* userFirst = node2; XMLCh* userSecond = tempStr2; XMLString::transcode("first", tempStr, 3999); XMLString::transcode("document", tempStr2, 3999); userTest->setUserData(tempStr2, (void*) document, 0); void* mydocument = userTest->getUserData(tempStr2); if (document != mydocument) { fprintf(stderr, "'set/getUserData' in line %i does not work\n", __LINE__); OK = false; } userTest->setUserData(tempStr, (void*) userFirst, 0); void* myFirst = userTest->getUserData(tempStr); if (userFirst != myFirst) { fprintf(stderr, "'set/getUserData' in line %i does not work\n", __LINE__); OK = false; } // Test overwrite void* myFirst2 = userTest->setUserData(tempStr, (void*) userSecond, 0); void* mySecond = userTest->getUserData(tempStr); if (userSecond != mySecond) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (userFirst != myFirst2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (userFirst == mySecond) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } // Test null // test non-exist key XMLString::transcode("not-exist", tempStr3, 3999); if (userTest->getUserData(tempStr3)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // use a node that does not have user data set before if (userFirst->getUserData(tempStr)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // Test reset void* mySecond2 = userTest->setUserData(tempStr, (void*) 0, 0); void* myNull = userTest->getUserData(tempStr); if (userSecond != mySecond2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (myNull) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } void* mydocument2 = userTest->setUserData(tempStr2, (void*) 0, 0); void* myNull2 = userTest->getUserData(tempStr2); if (mydocument != mydocument2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (myNull2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } //the userTest user data table should be null now if (userTest->getUserData(tempStr)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } if (userTest->getUserData(tempStr2)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // Test DOMUserDataHandler // test clone userTest->setUserData(tempStr2, (void*) document, &userhandler); DOMNode* mycloned = userTest->cloneNode(true); USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_CLONED, tempStr2, document, userTest, mycloned, __LINE__); // test import document->setUserData(tempStr2, (void*) document, &userhandler); DOMNode* myimport = document->importNode(userTest,true); USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_IMPORTED, tempStr2, document, userTest, myimport, __LINE__); // test delete myimport->setUserData(tempStr2, (void*) userTest, &userhandler); myimport->release(); USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_DELETED, tempStr2, userTest, 0, 0, __LINE__); // Test isSameNode if (!userTest->isSameNode(userTest)) { fprintf(stderr, "isSameNode failed in line %i\n", __LINE__); OK = false; } if (userTest->isSameNode(userFirst)) { fprintf(stderr, "isSameNode failed in line %i\n", __LINE__); OK = false; } // Test isEqualNode if (!userTest->isEqualNode(mycloned)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } if (!userTest->isEqualNode(userTest)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } if (userTest->isEqualNode(document)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } if (!OK) printf("\n*****The DOMNode* method calls listed above failed, all others worked correctly.*****\n"); return OK; } /** * This method tests DOMNotation* methods for the XML DOM implementation * @param document org.w3c.dom.DOMDocument * */ bool DOMTest::testNotation(DOMDocument* document) { DOMNode* node, *node2; DOMNotation* notation; bool OK = true; // For debugging***** printf("\n testNotation's outputs:\n"); XMLString::transcode("ourNotationNode", tempStr, 3999); DOMNode* abc40 = document->getDoctype()->getNotations()->getNamedItem(tempStr); notation = (DOMNotation*) abc40; node = notation; node2 = notation->cloneNode(true);//*****? // Check nodes for equality, both their name and value or lack thereof if (!(!XMLString::compareString(node->getNodeName(), node2->getNodeName()) && // Compares node names for equality (node->getNodeValue() != 0 && node2->getNodeValue() != 0) // Checks to make sure each node has a value node ? !XMLString::compareString(node->getNodeValue(), node2->getNodeValue()) // If both have value nodes test those value nodes for equality : (node->getNodeValue() == 0 && node2->getNodeValue() == 0))) // If one node doesn't have a value node make sure both don't { fprintf(stderr, "'cloneNode' did not clone the DOMNotation* node correctly"); OK = false; } // Deep clone test comparison is in testNode & testDocument // notation->setNodeValue("This shouldn't work");//!! Throws a NO_MODIFICATION_ALLOWED_ERR ******** // Test the user data // Test simple set and get DOMNotation* userTest = notation; DOMNode* userFirst = node2; XMLCh* userSecond = tempStr2; XMLString::transcode("first", tempStr, 3999); XMLString::transcode("document", tempStr2, 3999); userTest->setUserData(tempStr2, (void*) document, 0); void* mydocument = userTest->getUserData(tempStr2); if (document != mydocument) { fprintf(stderr, "'set/getUserData' in line %i does not work\n", __LINE__); OK = false; } userTest->setUserData(tempStr, (void*) userFirst, 0); void* myFirst = userTest->getUserData(tempStr); if (userFirst != myFirst) { fprintf(stderr, "'set/getUserData' in line %i does not work\n", __LINE__); OK = false; } // Test overwrite void* myFirst2 = userTest->setUserData(tempStr, (void*) userSecond, 0); void* mySecond = userTest->getUserData(tempStr); if (userSecond != mySecond) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (userFirst != myFirst2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (userFirst == mySecond) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } // Test null // test non-exist key XMLString::transcode("not-exist", tempStr3, 3999); if (userTest->getUserData(tempStr3)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // use a node that does not have user data set before if (userFirst->getUserData(tempStr)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // Test reset void* mySecond2 = userTest->setUserData(tempStr, (void*) 0, 0); void* myNull = userTest->getUserData(tempStr); if (userSecond != mySecond2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (myNull) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } void* mydocument2 = userTest->setUserData(tempStr2, (void*) 0, 0); void* myNull2 = userTest->getUserData(tempStr2); if (mydocument != mydocument2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (myNull2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } //the userTest user data table should be null now if (userTest->getUserData(tempStr)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } if (userTest->getUserData(tempStr2)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // Test DOMUserDataHandler // test clone userTest->setUserData(tempStr2, (void*) document, &userhandler); DOMNode* mycloned = userTest->cloneNode(true); USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_CLONED, tempStr2, document, userTest, mycloned, __LINE__); // test import document->setUserData(tempStr2, (void*) document, &userhandler); DOMNode* myimport = document->importNode(userTest,true); USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_IMPORTED, tempStr2, document, userTest, myimport, __LINE__); // test delete myimport->setUserData(tempStr2, (void*) userTest, &userhandler); myimport->release(); USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_DELETED, tempStr2, userTest, 0, 0, __LINE__); // Test isSameNode if (!userTest->isSameNode(userTest)) { fprintf(stderr, "isSameNode failed in line %i\n", __LINE__); OK = false; } if (userTest->isSameNode(userFirst)) { fprintf(stderr, "isSameNode failed in line %i\n", __LINE__); OK = false; } // Test isEqualNode if (!userTest->isEqualNode(mycloned)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } if (!userTest->isEqualNode(userTest)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } if (userTest->isEqualNode(document)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } // Test rename, should throw exception EXCEPTIONSTEST(document->renameNode(userTest, 0, tempStr2), DOMException::NOT_SUPPORTED_ERR, OK, 212 ); if (!OK) printf("\n*****The DOMNotation* method calls listed above failed, all others worked correctly.*****\n"); return OK; } /** * This method tests DOMProcessingInstruction* methods for the XML DOM implementation * @param document org.w3c.dom.DOMDocument * */ bool DOMTest::testPI(DOMDocument* document) { DOMProcessingInstruction* pI, *pI2; bool OK = true; // For debugging***** printf("\n testPI's outputs:\n"); DOMNode* abc50 = document->getDocumentElement()->getFirstChild();// Get doc's DOMProcessingInstruction pI = (DOMProcessingInstruction*) abc50; DOMNode* abc51 = pI->cloneNode(true);//*****? pI2 = (DOMProcessingInstruction*) abc51; // Check nodes for equality, both their name and value or lack thereof if (!(!XMLString::compareString(pI->getNodeName(), pI2->getNodeName()) && // Compares node names for equality (pI->getNodeValue() != 0 && pI2->getNodeValue() != 0) // Checks to make sure each node has a value node ? !XMLString::compareString(pI->getNodeValue(), pI2->getNodeValue()) // If both have value nodes test those value nodes for equality :(pI->getNodeValue() == 0 && pI2->getNodeValue() == 0)))// If one node doesn't have a value node make sure both don't { fprintf(stderr, "'cloneNode' did not clone the DOMEntity* node correctly\n"); OK = false; } // Deep clone test comparison is in testNode & testDocument // compare = "This is [#document: 0]'s processing instruction"; // AH Revisit. Where id // this ": 0]" stuff come from in the Java version?? I don' think that it is right. XMLString::transcode("This is #document's processing instruction", tempStr, 3999); if (XMLString::compareString(tempStr, pI->getData())) { fprintf(stderr, "Warning!!! PI's 'getData' failed!\n"); OK = false; } XMLString::transcode("PI's reset data", tempStr, 3999); pI->setData(tempStr); if (XMLString::compareString(tempStr, pI->getData())) { fprintf(stderr, "Warning!!! PI's 'setData' failed!\n"); OK = false; } XMLString::transcode("dTargetProcessorChannel", tempStr, 3999); if (XMLString::compareString(tempStr, pI->getTarget())) { fprintf(stderr, "Warning!!! PI's 'getTarget' failed!\n"); OK = false; } // Restore original PI data. XMLString::transcode("This is #document's processing instruction", tempStr, 3999); pI->setData(tempStr); // Test the user data // Test simple set and get DOMProcessingInstruction* userTest = pI; DOMNode* userFirst = abc51; XMLCh* userSecond = tempStr2; XMLString::transcode("first", tempStr, 3999); XMLString::transcode("document", tempStr2, 3999); userTest->setUserData(tempStr2, (void*) document, 0); void* mydocument = userTest->getUserData(tempStr2); if (document != mydocument) { fprintf(stderr, "'set/getUserData' in line %i does not work\n", __LINE__); OK = false; } userTest->setUserData(tempStr, (void*) userFirst, 0); void* myFirst = userTest->getUserData(tempStr); if (userFirst != myFirst) { fprintf(stderr, "'set/getUserData' in line %i does not work\n", __LINE__); OK = false; } // Test overwrite void* myFirst2 = userTest->setUserData(tempStr, (void*) userSecond, 0); void* mySecond = userTest->getUserData(tempStr); if (userSecond != mySecond) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (userFirst != myFirst2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (userFirst == mySecond) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } // Test null // test non-exist key XMLString::transcode("not-exist", tempStr3, 3999); if (userTest->getUserData(tempStr3)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // use a node that does not have user data set before if (abc51->getUserData(tempStr)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // Test reset(reset) void* mySecond2 = userTest->setUserData(tempStr, (void*) 0, 0); void* myNull = userTest->getUserData(tempStr); if (userSecond != mySecond2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (myNull) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } void* mydocument2 = userTest->setUserData(tempStr2, (void*) 0, 0); void* myNull2 = userTest->getUserData(tempStr2); if (mydocument != mydocument2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (myNull2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } //the userTest user data table should be null now if (userTest->getUserData(tempStr)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } if (userTest->getUserData(tempStr2)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // Test DOMUserDataHandler // test clone userTest->setUserData(tempStr2, (void*) document, &userhandler); DOMNode* mycloned = userTest->cloneNode(true); USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_CLONED, tempStr2, document, userTest, mycloned, __LINE__); // test import document->setUserData(tempStr2, (void*) document, &userhandler); DOMNode* myimport = document->importNode(userTest,true); USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_IMPORTED, tempStr2, document, userTest, myimport, __LINE__); // test delete myimport->setUserData(tempStr2, (void*) userTest, &userhandler); myimport->release(); USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_DELETED, tempStr2, userTest, 0, 0, __LINE__); // Test isSameNode if (!userTest->isSameNode(userTest)) { fprintf(stderr, "isSameNode failed in line %i\n", __LINE__); OK = false; } if (userTest->isSameNode(userFirst)) { fprintf(stderr, "isSameNode failed in line %i\n", __LINE__); OK = false; } // Test isEqualNode if (!userTest->isEqualNode(mycloned)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } if (!userTest->isEqualNode(userTest)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } if (userTest->isEqualNode(document)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } // Test rename, should throw exception EXCEPTIONSTEST(document->renameNode(userTest, 0, tempStr2), DOMException::NOT_SUPPORTED_ERR, OK, 213 ); if (!OK) printf("\n*****The PI method calls listed above failed, all others worked correctly.*****\n"); return OK; } /** * This method tests DOMText* methods for the XML DOM implementation * @param document org.w3c.dom.DOMDocument * */ bool DOMTest::testText(DOMDocument* document) { DOMNode* node, *node2; DOMText* text; bool OK = true; // For debugging***** printf("\n testText's outputs:\n"); XMLString::transcode("dBodyLevel31", tempStr, 3999); DOMNode* abc70 = document->getDocumentElement()->getElementsByTagName(tempStr)->item(0); DOMElement* elem = (DOMElement*) abc70; node = elem->getFirstChild(); // charData gets textNode11 text = (DOMText*) node; node2 = node->cloneNode(true);//*****? // Check nodes for equality, both their name and value or lack thereof if (!(!XMLString::compareString(node->getNodeName(), node2->getNodeName()) && // Compares node names for equality (node->getNodeValue() != 0 && node2->getNodeValue() != 0) // Checks to make sure each node has a value node ? !XMLString::compareString(node->getNodeValue(), node2->getNodeValue()) // If both have value nodes test those value nodes for equality : (node->getNodeValue() == 0 && node2->getNodeValue() == 0))) // If one node doesn't have a value node make sure both don't { fprintf(stderr, "'cloneNode' did not clone the DOMText* node correctly\n"); OK = false; } // Deep clone test comparison is in testNode & testDocument text->splitText(25); // Three original text nodes were concatenated by 'normalize' in testElement XMLString::transcode("dBodyLevel31'sChildTextNo", tempStr, 3999); if (XMLString::compareString(tempStr, text->getNodeValue())) { fprintf(stderr, "First part of DOMText's split text failed!\n" ); OK = false; } // Three original text nodes were concatenated by 'normalize' in testElement XMLString::transcode("de11dBodyLevel31'sChildTextNode12dBodyLevel31'sChildTextNode13", tempStr, 3999); if (XMLString::compareString(tempStr, text->getNextSibling()->getNodeValue())) { fprintf(stderr, "The second part of DOMText's split text failed!\n") ; OK = false; } // Re-normalize the text nodes under elem, so that this test can be rerun-> elem->normalize(); //************************************************* ERROR TESTS DOMTest tests; //!! Throws INDEX_SIZE_ERR ******************** // text.splitText(-1); // text.splitText(100); // Test the user data // Test simple set and get DOMText* userTest = text; DOMNode* userFirst = node2; XMLCh* userSecond = tempStr2; XMLString::transcode("first", tempStr, 3999); XMLString::transcode("document", tempStr2, 3999); userTest->setUserData(tempStr2, (void*) document, 0); void* mydocument = userTest->getUserData(tempStr2); if (document != mydocument) { fprintf(stderr, "'set/getUserData' in line %i does not work\n", __LINE__); OK = false; } userTest->setUserData(tempStr, (void*) userFirst, 0); void* myFirst = userTest->getUserData(tempStr); if (userFirst != myFirst) { fprintf(stderr, "'set/getUserData' in line %i does not work\n", __LINE__); OK = false; } // Test overwrite void* myFirst2 = userTest->setUserData(tempStr, (void*) userSecond, 0); void* mySecond = userTest->getUserData(tempStr); if (userSecond != mySecond) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (userFirst != myFirst2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (userFirst == mySecond) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } // Test null // test non-exist key XMLString::transcode("not-exist", tempStr3, 3999); if (userTest->getUserData(tempStr3)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // use a node that does not have user data set before if (userFirst->getUserData(tempStr)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // Test reset void* mySecond2 = userTest->setUserData(tempStr, (void*) 0, 0); void* myNull = userTest->getUserData(tempStr); if (userSecond != mySecond2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (myNull) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } void* mydocument2 = userTest->setUserData(tempStr2, (void*) 0, 0); void* myNull2 = userTest->getUserData(tempStr2); if (mydocument != mydocument2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } if (myNull2) { fprintf(stderr, "overwrite userdata with same key in line %i does not work\n", __LINE__); OK = false; } //the userTest user data table should be null now if (userTest->getUserData(tempStr)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } if (userTest->getUserData(tempStr2)) { fprintf(stderr, "get non-exist user data in line %i does not work\n", __LINE__); OK = false; } // Test DOMUserDataHandler // test clone userTest->setUserData(tempStr2, (void*) document, &userhandler); DOMNode* mycloned = userTest->cloneNode(true); USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_CLONED, tempStr2, document, userTest, mycloned, __LINE__); // test import document->setUserData(tempStr2, (void*) document, &userhandler); DOMNode* myimport = document->importNode(userTest,true); USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_IMPORTED, tempStr2, document, userTest, myimport, __LINE__); // test delete myimport->setUserData(tempStr2, (void*) userTest, &userhandler); myimport->release(); USERDATAHANDLERTEST(userhandler, DOMUserDataHandler::NODE_DELETED, tempStr2, userTest, 0, 0, __LINE__); // Test isSameNode if (!userTest->isSameNode(userTest)) { fprintf(stderr, "isSameNode failed in line %i\n", __LINE__); OK = false; } if (userTest->isSameNode(userFirst)) { fprintf(stderr, "isSameNode failed in line %i\n", __LINE__); OK = false; } // Test isEqualNode if (!userTest->isEqualNode(mycloned)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } if (!userTest->isEqualNode(userTest)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } if (userTest->isEqualNode(abc70)) { fprintf(stderr, "isEqualNode failed in line %i\n", __LINE__); OK = false; } // Test rename, should throw exception EXCEPTIONSTEST(document->renameNode(userTest, 0, tempStr2), DOMException::NOT_SUPPORTED_ERR, OK, 214 ); if (!OK) printf("\n*****The DOMText* method calls listed above failed, all others worked correctly.*****\n"); return OK; } /** * This method tests setting the DOM Level 3 baseURI attribute at * parse time on nodes from the document personal-schema.xml.xml * */ bool DOMTest::testBaseURI(XercesDOMParser* parser) { bool OK = true; try { // this one assumes executing in samples/data where personal-schema.xml resides // please modify if this is not correct parser->parse("personal-schema.xml"); } catch (const OutOfMemoryException&) { fprintf(stderr, "OutOfMemoryException.\n"); return false; } catch (...) { fprintf(stderr, "parsing personal-schema.xml failed at line %i\n", __LINE__); return false; } // test only if there is no error if (!parser->getErrorCount()) { //Setup testing strings XMLCh *fileSchema = XMLString::transcode("file://"); XMLCh *filePath = XMLString::transcode("samples/data/personal-schema.xml"); //Test document baseURI DOMDocument *document = parser->getDocument(); //The baseURI should contain `file://' and `samples/data/personal-schema.xml' const XMLCh *docBaseURI = document->getBaseURI(); if(XMLString::patternMatch(docBaseURI, fileSchema) == -1) { OK = false; fprintf(stderr, "checking baseURI failed at line %i\n", __LINE__); } if(XMLString::patternMatch(docBaseURI, filePath) == -1) { OK = false; fprintf(stderr, "checking baseURI failed at line %i\n", __LINE__); } //Create relative paths from document baseURI XMLCh *docBaseURIRoot = new XMLCh [ XMLString::stringLen(docBaseURI) ]; XMLString::copyNString(docBaseURIRoot, docBaseURI, XMLString::lastIndexOf(docBaseURI, chForwardSlash) + 1); XMLCh *base_foobar = new XMLCh [ XMLString::stringLen(docBaseURIRoot) + 8]; XMLString::copyString(base_foobar, docBaseURIRoot); XMLCh *foobar = XMLString::transcode("foo/bar"); XMLString::catString(base_foobar, foobar); XMLCh *base_foobarbar = new XMLCh [ XMLString::stringLen(docBaseURIRoot) + 12]; XMLString::copyString(base_foobarbar, docBaseURIRoot); XMLCh *foobarbar = XMLString::transcode("foo/bar/bar"); XMLString::catString(base_foobarbar, foobarbar); XMLCh *base_foocarbar = new XMLCh [ XMLString::stringLen(docBaseURIRoot) + 12]; XMLString::copyString(base_foocarbar, docBaseURIRoot); XMLCh *foocarbar = XMLString::transcode("foo/car/bar"); XMLString::catString(base_foocarbar, foocarbar); XMLCh *file_autobar = XMLString::transcode("file:///auto/bar"); XMLCh *file_carfoo = XMLString::transcode("file:///car/foo/"); XMLCh *file_carfoobarbar = XMLString::transcode("file:///car/foo/bar/bar"); XMLCh *http_carcar = XMLString::transcode("http://www.example.com/car/car"); XMLCh *http_barfoo = XMLString::transcode("http://www.example.com/bar/foo/"); XMLCh *http_barfoofoobar = XMLString::transcode("http://www.example.com/bar/foo/foo/bar"); //Processing instruction before Document Element (has document baseURI) DOMNode *node = document->getFirstChild(); while(node->getNodeType() != DOMNode::PROCESSING_INSTRUCTION_NODE) node = node->getNextSibling(); if(XMLString::compareString(node->getBaseURI(), docBaseURI) != 0) { OK = false; fprintf(stderr, "checking baseURI failed at line %i\n", __LINE__); } //Document Element baseURI (same as document) node = document->getDocumentElement(); if(XMLString::compareString(node->getBaseURI(), docBaseURI) != 0) { OK = false; fprintf(stderr, "checking baseURI, failed at line %i\n", __LINE__); } // node = node->getFirstChild(); while(node->getNodeType() != DOMNode::ELEMENT_NODE) node = node->getNextSibling(); DOMNode *level1 = node; // node = node->getFirstChild(); while(node->getNodeType() != DOMNode::ELEMENT_NODE) node = node->getNextSibling(); if(XMLString::compareString(node->getBaseURI(), base_foobar) != 0) { OK = false; fprintf(stderr, "checking baseURI failed at line %i\n", __LINE__); } // node = node->getFirstChild(); while(node->getNodeType() != DOMNode::ELEMENT_NODE) node = node->getNextSibling(); if(XMLString::compareString(node->getBaseURI(), base_foobarbar) != 0) { OK = false; fprintf(stderr, "checking baseURI failed at line %i\n", __LINE__); } // node = node->getNextSibling(); while(node->getNodeType() != DOMNode::ELEMENT_NODE) node = node->getNextSibling(); if(XMLString::compareString(node->getBaseURI(), base_foocarbar) != 0) { OK = false; fprintf(stderr, "checking baseURI failed at line %i\n", __LINE__); } // node = node->getNextSibling(); while(node->getNodeType() != DOMNode::PROCESSING_INSTRUCTION_NODE) node = node->getNextSibling(); if(XMLString::compareString(node->getBaseURI(), base_foobar) != 0) { OK = false; fprintf(stderr, "checking baseURI failed at line %i\n", __LINE__); } // node = level1->getNextSibling(); while(node->getNodeType() != DOMNode::ELEMENT_NODE) node = node->getNextSibling(); DOMNode *level2 = node; if(XMLString::compareString(node->getBaseURI(), file_autobar) != 0) { OK = false; fprintf(stderr, "checking baseURI failed at line %i\n", __LINE__); } // node = node->getFirstChild(); while(node->getNodeType() != DOMNode::ELEMENT_NODE) node = node->getNextSibling(); if(XMLString::compareString(node->getBaseURI(), file_carfoo) != 0) { OK = false; fprintf(stderr, "checking baseURI failed at line %i\n", __LINE__); } // node = node->getFirstChild(); while(node->getNodeType() != DOMNode::ELEMENT_NODE) node = node->getNextSibling(); if(XMLString::compareString(node->getBaseURI(), file_carfoobarbar) != 0) { OK = false; fprintf(stderr, "checking baseURI failed at line %i\n", __LINE__); } // node = level2->getNextSibling(); while(node->getNodeType() != DOMNode::ELEMENT_NODE) node = node->getNextSibling(); if(XMLString::compareString(node->getBaseURI(), http_carcar) != 0) { OK = false; fprintf(stderr, "checking baseURI failed at line %i\n", __LINE__); } // node = node->getFirstChild(); while(node->getNodeType() != DOMNode::ELEMENT_NODE) node = node->getNextSibling(); if(XMLString::compareString(node->getBaseURI(), http_barfoo) != 0) { OK = false; fprintf(stderr, "checking baseURI failed at line %i\n", __LINE__); } // node = node->getFirstChild(); while(node->getNodeType() != DOMNode::ELEMENT_NODE) node = node->getNextSibling(); if(XMLString::compareString(node->getBaseURI(), http_barfoofoobar) != 0) { OK = false; fprintf(stderr, "checking baseURI failed at line %i\n", __LINE__); } } else { printf("baseURI test was not carried out\n"); } return OK; } bool DOMTest::testWholeText(XercesDOMParser* parser) { const char* sXml="" "" "'>" " " "" "" "'>" "]>" "&ent1; &ent2;" "Home " "Test: &ent5;" ""; MemBufInputSource is((XMLByte*)sXml, strlen(sXml), "bufId"); parser->parse(is); DOMDocument* doc=parser->getDocument(); // pointing to "Dallas. " DOMNode* t1=doc->getDocumentElement()->getFirstChild()->getFirstChild(); if(t1==NULL || t1->getNodeType()!=DOMNode::TEXT_NODE) { fprintf(stderr, "checking wholeText failed at line %i\n", __LINE__); return false; } const XMLCh* s1=((DOMText*)t1)->getWholeText(); const XMLCh* refText=XMLString::transcode("Dallas. California. USA PO #5668 1900 Dallas Road (East) "); if(XMLString::compareString(s1,refText)!=0) { fprintf(stderr, "checking wholeText failed at line %i\n", __LINE__); return false; } // pointing to " (East) " [CDATA] DOMNode* t2=doc->getDocumentElement()->getFirstChild()->getNextSibling()->getNextSibling()->getFirstChild()->getNextSibling(); if(t2==NULL || t2->getNodeType()!=DOMNode::CDATA_SECTION_NODE) { fprintf(stderr, "checking wholeText failed at line %i\n", __LINE__); return false; } const XMLCh* s2=((DOMText*)t2)->getWholeText(); if(XMLString::compareString(s2,refText)!=0) { fprintf(stderr, "checking wholeText failed at line %i\n", __LINE__); return false; } // pointing to "Home " DOMNode* t3=doc->getDocumentElement()->getFirstChild()->getNextSibling()->getNextSibling()->getNextSibling()->getFirstChild(); if(t3==NULL || t3->getNodeType()!=DOMNode::TEXT_NODE) { fprintf(stderr, "checking wholeText failed at line %i\n", __LINE__); return false; } const XMLCh* s3=((DOMText*)t3)->getWholeText(); refText=XMLString::transcode("Home "); if(XMLString::compareString(s3,refText)!=0) { fprintf(stderr, "checking wholeText failed at line %i\n", __LINE__); return false; } // pointing to "The Content " DOMNode* t4=doc->getDocumentElement()->getFirstChild()->getNextSibling()->getNextSibling()->getNextSibling()->getNextSibling()->getFirstChild()->getNextSibling()->getFirstChild(); if(t4==NULL || t4->getNodeType()!=DOMNode::TEXT_NODE) { fprintf(stderr, "checking wholeText failed at line %i\n", __LINE__); return false; } const XMLCh* s4=((DOMText*)t4)->getWholeText(); refText=XMLString::transcode("Test: The Content ends here. "); if(XMLString::compareString(s4,refText)!=0) { fprintf(stderr, "checking wholeText failed at line %i\n", __LINE__); return false; } DOMNode* newt2=((DOMText*)t2)->replaceWholeText(s2); UNUSED(newt2); //silence warning DOMNode* newt3=((DOMText*)t3)->replaceWholeText(s3); UNUSED(newt3); //silence warning try { DOMNode* newt4=((DOMText*)t4)->replaceWholeText(s4); UNUSED(newt4); //silence warning // ent5 contains a node, and cannot be removed fprintf(stderr, "checking wholeText failed at line %i\n", __LINE__); return false; } catch(DOMException&) { } DOMLSSerializer* writer=DOMImplementation::getImplementation()->createLSSerializer(); const XMLCh* xml=writer->writeToString(doc->getDocumentElement()); refText=XMLString::transcode("" "Home " "Test: &ent5;" ""); if(XMLString::compareString(xml,refText)!=0) { fprintf(stderr, "checking wholeText failed at line %i\n", __LINE__); return false; } writer->release(); return true; } class ParserAborter : public DOMLSParserFilter { public: ParserAborter() {} virtual FilterAction acceptNode(DOMNode* ) { return DOMLSParserFilter::FILTER_INTERRUPT; } virtual FilterAction startElement(DOMElement* ) { return DOMLSParserFilter::FILTER_INTERRUPT; } virtual DOMNodeFilter::ShowType getWhatToShow() const { return DOMNodeFilter::SHOW_ALL; } }; class ParserNester : public DOMLSParserFilter { public: ParserNester(DOMLSParser* parser, DOMLSInput* input) { m_parser=parser; m_input=input; } virtual FilterAction acceptNode(DOMNode* ) { m_parser->parse(m_input); return DOMLSParserFilter::FILTER_ACCEPT;} virtual FilterAction startElement(DOMElement* ) { return DOMLSParserFilter::FILTER_ACCEPT; } virtual DOMNodeFilter::ShowType getWhatToShow() const { return DOMNodeFilter::SHOW_ALL; } DOMLSParser* m_parser; DOMLSInput* m_input; }; class ParserSkipper : public DOMLSParserFilter { public: ParserSkipper() : fCallbackCalls(0) { } virtual FilterAction acceptNode(DOMNode* node) { fCallbackCalls++; return DOMLSParserFilter::FILTER_ACCEPT;} virtual FilterAction startElement(DOMElement* node) { XMLCh elem[]={chLatin_e, chLatin_l, chLatin_e, chLatin_m, chNull }; if(XMLString::equals(node->getNodeName(), elem)) return DOMLSParserFilter::FILTER_REJECT; else return DOMLSParserFilter::FILTER_ACCEPT; } virtual DOMNodeFilter::ShowType getWhatToShow() const { return DOMNodeFilter::SHOW_ALL; } unsigned int fCallbackCalls; }; bool DOMTest::testLSExceptions() { bool OK = true; const char* sXml="" "" "'>" " " "" "" "'>" "]>" "&ent1; &ent2;" "Home " "Test: &ent5;" ""; static const XMLCh gLS[] = { chLatin_L, chLatin_S, chNull }; DOMImplementationLS *impl = (DOMImplementationLS*)DOMImplementationRegistry::getDOMImplementation(gLS); DOMLSParser *domBuilder = impl->createLSParser(DOMImplementationLS::MODE_SYNCHRONOUS, 0); DOMLSInput *input = impl->createLSInput(); XMLString::transcode(sXml, tempStr, 3999); input->setStringData(tempStr); try { ParserAborter aborter; domBuilder->setFilter(&aborter); DOMDocument* doc=domBuilder->parse(input); fprintf(stderr, "checking testLSExceptions failed at line %i\n", __LINE__); OK=false; } catch(DOMLSException& e) { if(e.code!=DOMLSException::PARSE_ERR) { fprintf(stderr, "checking testLSExceptions failed at line %i\n", __LINE__); OK=false; } } try { ParserNester nester(domBuilder, input); domBuilder->setFilter(&nester); DOMDocument* doc=domBuilder->parse(input); fprintf(stderr, "checking testLSExceptions failed at line %i\n", __LINE__); OK=false; } catch(DOMException& e) { if(e.code!=DOMException::INVALID_STATE_ERR) { fprintf(stderr, "checking testLSExceptions failed at line %i\n", __LINE__); OK=false; } } try { ParserSkipper skipper; domBuilder->setFilter(&skipper); domBuilder->getDomConfig()->setParameter(XMLUni::fgDOMEntities, false); DOMDocument* doc=domBuilder->parse(input); // verify that we get only 3 calls: for the text node, the CDATA section and the root element if(doc==NULL || doc->getDocumentElement()==NULL || doc->getDocumentElement()->getChildElementCount()!=0 || skipper.fCallbackCalls!=3) { fprintf(stderr, "checking testLSExceptions failed at line %i\n", __LINE__); OK=false; } } catch(DOMException&) { fprintf(stderr, "checking testLSExceptions failed at line %i\n", __LINE__); OK=false; } // this XML should trigger reuse of DOMElement const char* sXml2="" "" "Home" "Test" "Home" "Test" ""; XMLString::transcode(sXml2, tempStr, 3999); input->setStringData(tempStr); try { ParserSkipper skipper; domBuilder->setFilter(&skipper); DOMDocument* doc=domBuilder->parse(input); // verify that we get only 5 calls: for the root element, the two elem2 and the two text nodes under them if(doc==NULL || doc->getDocumentElement()==NULL || doc->getDocumentElement()->getChildElementCount()!=2 || skipper.fCallbackCalls!=5) { fprintf(stderr, "checking testLSExceptions failed at line %i\n", __LINE__); OK=false; } } catch(DOMException&) { fprintf(stderr, "checking testLSExceptions failed at line %i\n", __LINE__); OK=false; } // test for parseWithContext try { XMLString::transcode("root", tempStr2, 3999); domBuilder->setFilter(NULL); DOMDocument* doc=domBuilder->parse(input); domBuilder->parseWithContext(input, doc->getDocumentElement()->getFirstElementChild(), DOMLSParser::ACTION_APPEND_AS_CHILDREN); // the first 'elem' child of 'root' must have a 'root' child if(!XMLString::equals(doc->getDocumentElement()->getFirstElementChild()->getFirstElementChild()->getNodeName(), tempStr2)) { fprintf(stderr, "checking testLSExceptions failed at line %i\n", __LINE__); OK=false; } doc=domBuilder->parse(input); domBuilder->parseWithContext(input, doc->getDocumentElement()->getFirstElementChild(), DOMLSParser::ACTION_REPLACE_CHILDREN); // the first 'elem' child of 'root' must have a 'root' child if(!XMLString::equals(doc->getDocumentElement()->getFirstElementChild()->getFirstElementChild()->getNodeName(), tempStr2)) { fprintf(stderr, "checking testLSExceptions failed at line %i\n", __LINE__); OK=false; } doc=domBuilder->parse(input); domBuilder->parseWithContext(input, doc->getDocumentElement()->getFirstElementChild(), DOMLSParser::ACTION_INSERT_BEFORE); // the first child of 'root' must be another 'root' child if(!XMLString::equals(doc->getDocumentElement()->getFirstElementChild()->getNodeName(), tempStr2)) { fprintf(stderr, "checking testLSExceptions failed at line %i\n", __LINE__); OK=false; } doc=domBuilder->parse(input); domBuilder->parseWithContext(input, doc->getDocumentElement()->getFirstElementChild(), DOMLSParser::ACTION_INSERT_AFTER); // the node after the first child of 'root' must be another 'root' child if(!XMLString::equals(doc->getDocumentElement()->getFirstElementChild()->getNextElementSibling()->getNodeName(), tempStr2)) { fprintf(stderr, "checking testLSExceptions failed at line %i\n", __LINE__); OK=false; } doc=domBuilder->parse(input); domBuilder->parseWithContext(input, doc->getDocumentElement()->getFirstElementChild(), DOMLSParser::ACTION_REPLACE); // the first child of 'root' must be another 'root' child if(!XMLString::equals(doc->getDocumentElement()->getFirstElementChild()->getNodeName(), tempStr2)) { fprintf(stderr, "checking testLSExceptions failed at line %i\n", __LINE__); OK=false; } // verify that namespaces are in scope doc=domBuilder->parse(input); const char* sXml3=""; XMLString::transcode(sXml3, tempStr2, 3999); input->setStringData(tempStr2); domBuilder->parseWithContext(input, doc->getDocumentElement()->getFirstElementChild(), DOMLSParser::ACTION_APPEND_AS_CHILDREN); // the first 'elem' child of 'root' must have a 'x:root' child XMLString::transcode("urn:xxx", tempStr2, 3999); if(!XMLString::equals(doc->getDocumentElement()->getFirstElementChild()->getFirstElementChild()->getNamespaceURI(), tempStr2)) { fprintf(stderr, "checking testLSExceptions failed at line %i\n", __LINE__); OK=false; } } catch(DOMException&) { fprintf(stderr, "checking testLSExceptions failed at line %i\n", __LINE__); OK=false; } input->release(); domBuilder->release(); return OK; } bool DOMTest::testElementTraversal() { const char* sXml="" "&ent2;'>" "" "]>" "\n" "\n" "\t\n" "\t\n" "\n" "\t\n" "\n" "\t\n" "\t\n" "\t\t&ent1;&ent2;&ent1;\n" ""; MemBufInputSource is((XMLByte*)sXml, strlen(sXml), "bufId"); static const XMLCh gLS[] = { chLatin_L, chLatin_S, chNull }; DOMImplementationLS *impl = (DOMImplementationLS*)DOMImplementationRegistry::getDOMImplementation(gLS); DOMLSParser *domBuilder = impl->createLSParser(DOMImplementationLS::MODE_SYNCHRONOUS, 0); DOMLSInput *input = impl->createLSInput(); XMLString::transcode(sXml, tempStr, 3999); input->setStringData(tempStr); try { DOMDocument* doc=domBuilder->parse(input); XMLSize_t c = doc->getDocumentElement()->getChildNodes()->getLength(); if(c!=11) { fprintf(stderr, "checking ElementTraversal failed at line %i\n", __LINE__); return false; } DOMNode* firstNode = doc->getDocumentElement()->getFirstChild(); if(firstNode==NULL || firstNode->getNodeType()!=DOMNode::TEXT_NODE || *firstNode->getNodeValue()=='\r') { fprintf(stderr, "checking ElementTraversal failed at line %i\n", __LINE__); return false; } DOMElement* childNode = doc->getDocumentElement()->getFirstElementChild(); XMLString::transcode("id", tempStr, 3999); XMLString::transcode("rect1", tempStr2, 3999); if(childNode==NULL || childNode->getNodeType()!=DOMNode::ELEMENT_NODE || !XMLString::equals(childNode->getAttribute(tempStr),tempStr2)) { fprintf(stderr, "checking ElementTraversal failed at line %i\n", __LINE__); return false; } XMLSize_t count=0; while(childNode!=NULL) { count++; childNode=childNode->getNextElementSibling(); } if(count!=5) { fprintf(stderr, "checking ElementTraversal failed at line %i\n", __LINE__); return false; } count = doc->getDocumentElement()->getChildElementCount(); if(count!=5) { fprintf(stderr, "checking ElementTraversal failed at line %i\n", __LINE__); return false; } DOMElement* text=doc->getDocumentElement()->getLastElementChild(); XMLString::transcode("id", tempStr, 3999); XMLString::transcode("text1", tempStr2, 3999); if(text==NULL || text->getNodeType()!=DOMNode::ELEMENT_NODE || !XMLString::equals(text->getAttribute(tempStr),tempStr2)) { fprintf(stderr, "checking ElementTraversal failed at line %i\n", __LINE__); return false; } DOMElement* textPath=text->getFirstElementChild(); XMLString::transcode("id", tempStr, 3999); XMLString::transcode("textPath1", tempStr2, 3999); if(textPath==NULL || textPath->getNodeType()!=DOMNode::ELEMENT_NODE || !XMLString::equals(textPath->getAttribute(tempStr),tempStr2)) { fprintf(stderr, "checking ElementTraversal failed at line %i\n", __LINE__); return false; } count = textPath->getChildElementCount(); if(count!=2) { fprintf(stderr, "checking ElementTraversal failed at line %i\n", __LINE__); return false; } DOMElement* insideEntity=textPath->getFirstElementChild(); if(insideEntity==NULL || insideEntity->getNodeType()!=DOMNode::ELEMENT_NODE) { fprintf(stderr, "checking ElementTraversal failed at line %i\n", __LINE__); return false; } DOMElement* insideEntity2=textPath->getLastElementChild(); if(insideEntity2==NULL || insideEntity2->getNodeType()!=DOMNode::ELEMENT_NODE) { fprintf(stderr, "checking ElementTraversal failed at line %i\n", __LINE__); return false; } if(insideEntity->getNextElementSibling()!=insideEntity2 || insideEntity!=insideEntity2->getPreviousElementSibling()) { fprintf(stderr, "checking ElementTraversal failed at line %i\n", __LINE__); return false; } return true; } catch(DOMLSException&) { fprintf(stderr, "checking testElementTraversal failed at line %i\n", __LINE__); return false; } input->release(); domBuilder->release(); return true; } /** * * @param node org.w3c.dom.DOMNode * @param node2 org.w3c.dom.DOMNode * */ bool DOMTest::treeCompare(DOMNode* node, DOMNode* node2) { bool answer = true; DOMNode* kid, *kid2; // Check the subtree for equality kid = node->getFirstChild(); kid2 = node2->getFirstChild(); if (kid && kid2) { answer = treeCompare(kid, kid2); if (!answer) return answer; else if (kid->getNextSibling() && kid2->getNextSibling()) { while (kid->getNextSibling() && kid2->getNextSibling()) { answer = treeCompare(kid->getNextSibling(), kid2->getNextSibling()); if (!answer) return answer; else { kid = kid->getNextSibling(); kid2 = kid2->getNextSibling(); } } } else if (!(!kid->getNextSibling() && !kid2->getNextSibling())) { return false; } } else if (kid != kid2) { // One or the other of (kid1, kid2) is 0, but not both. return false; } if (XMLString::compareString(node->getNodeName(), node2->getNodeName())) return false; if (node->getNodeValue()==0 && node2->getNodeValue()!=0) return false; if (node->getNodeValue()!=0 && node2->getNodeValue()==0) return false; if (XMLString::compareString(node->getNodeValue(), node2->getNodeValue())) return false; return answer; } #define TEST_VALID_REGEX(str, regex, line) \ try \ { \ RegularExpression p(regex); \ if(!p.matches(str)) \ { \ fprintf(stderr, "Regular expression test failed at line %i\n", line); \ OK = false; \ } \ } \ catch(XMLException& ) \ { \ fprintf(stderr, "Regular expression test failed at line %i\n", line); \ OK = false; \ } #define TEST_INVALID_REGEX(str, regex, line) \ try \ { \ RegularExpression p(regex); \ if(p.matches(str)) \ { \ fprintf(stderr, "Regular expression test failed at line %i\n", line); \ OK = false; \ } \ } \ catch(XMLException& ) \ { \ fprintf(stderr, "Regular expression test failed at line %i\n", line); \ OK = false; \ } #define TEST_VALID_SCHEMA_REGEX(str, regex, line) \ try \ { \ RegularExpression p(regex, "X"); \ if(!p.matches(str)) \ { \ fprintf(stderr, "Regular expression test failed at line %i\n", line); \ OK = false; \ } \ } \ catch(XMLException& ) \ { \ fprintf(stderr, "Regular expression test failed at line %i\n", line); \ OK = false; \ } #define TEST_INVALID_SCHEMA_REGEX(str, regex, line) \ try \ { \ RegularExpression p(regex, "X"); \ if(p.matches(str)) \ { \ fprintf(stderr, "Regular expression test failed at line %i\n", line); \ OK = false; \ } \ } \ catch(XMLException& ) \ { \ fprintf(stderr, "Regular expression test failed at line %i\n", line); \ OK = false; \ } #define HUGE_STRING (100*1024) // 100Kb bool DOMTest::testRegex() { bool OK = true; char* hugeString=new char[HUGE_STRING+1]; for(int i=0;i\n" "\n" "\n" " \n" " foo\n" "\n" " \n" " \n" "\n"; const size_t sampleDocSize = sizeof(sampleDoc) - 1; const XMLByte* sampleDocXML = reinterpret_cast(sampleDoc); try { // First, try parsing the document in one hit SlicerSource src(sampleDocXML, sampleDocSize); parser->parse(src); } catch (...) { OK = false; fprintf(stderr, "Variable chunks parsing failed at line %i\n", __LINE__); } try { // Now, parse it in blocks that end between the '<', '!' and '--' of a comment const XMLSize_t slices[] = { 142, 1 }; const XMLSize_t count = sizeof(slices) / sizeof(slices[0]); SlicerSource src(sampleDocXML, sampleDocSize, slices, count); parser->parse(src); } catch (...) { OK = false; fprintf(stderr, "Variable chunks parsing failed at line %i\n", __LINE__); } try { // Now, parse it in blocks that end between the '<', '!-' and '-' of a comment const XMLSize_t slices[] = { 142, 2 }; const XMLSize_t count = sizeof(slices) / sizeof(slices[0]); SlicerSource src(sampleDocXML, sampleDocSize, slices, count); parser->parse(src); } catch (...) { OK = false; fprintf(stderr, "Variable chunks parsing failed at line %i\n", __LINE__); } try { // Now, parse it in blocks that end between the '<', '!-' and '-' of a comment static const XMLSize_t slices[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; static const XMLSize_t count = sizeof(slices) / sizeof(slices[0]); SlicerSource src(sampleDocXML, sampleDocSize, slices, count); parser->parse(src); } catch (...) { OK = false; fprintf(stderr, "Variable chunks parsing failed at line %i\n", __LINE__); } return OK; } #define TEST_BOOLEAN(x) \ if(!x) \ { \ fprintf(stderr, "Boolean expression test failed at line %i\n", __LINE__); \ OK = false; \ } #define TEST_STRING(x,y) \ if(!XMLString::equals(x,y)) \ { \ fprintf(stderr, "String expression test failed at line %i\n", __LINE__); \ OK = false; \ } bool DOMTest::testUtilFunctions() { bool OK = true; // test isWSReplaced XMLString::transcode(" xyz ", tempStr, 3999); TEST_BOOLEAN(XMLString::isWSReplaced(tempStr)); XMLString::transcode(" x\tyz ", tempStr, 3999); TEST_BOOLEAN(!XMLString::isWSReplaced(tempStr)); XMLString::transcode(" xyz\n", tempStr, 3999); TEST_BOOLEAN(!XMLString::isWSReplaced(tempStr)); XMLString::transcode("\rxyz", tempStr, 3999); TEST_BOOLEAN(!XMLString::isWSReplaced(tempStr)); // test replaceWS XMLString::transcode(" x yz ", tempStr2, 3999); XMLString::transcode(" x yz ", tempStr, 3999); XMLString::replaceWS(tempStr); TEST_STRING(tempStr, tempStr2); XMLString::transcode(" x\tyz ", tempStr, 3999); XMLString::replaceWS(tempStr); TEST_STRING(tempStr, tempStr2); XMLString::transcode(" x yz\n", tempStr, 3999); XMLString::replaceWS(tempStr); TEST_STRING(tempStr, tempStr2); XMLString::transcode("\rx yz ", tempStr, 3999); XMLString::replaceWS(tempStr); TEST_STRING(tempStr, tempStr2); // test isWSCollapsed XMLString::transcode(" xyz ", tempStr, 3999); TEST_BOOLEAN(!XMLString::isWSCollapsed(tempStr)); XMLString::transcode(" x\tyz ", tempStr, 3999); TEST_BOOLEAN(!XMLString::isWSCollapsed(tempStr)); XMLString::transcode(" xyz\n", tempStr, 3999); TEST_BOOLEAN(!XMLString::isWSCollapsed(tempStr)); XMLString::transcode("\rxyz", tempStr, 3999); TEST_BOOLEAN(!XMLString::isWSCollapsed(tempStr)); XMLString::transcode("xyz", tempStr, 3999); TEST_BOOLEAN(XMLString::isWSCollapsed(tempStr)); XMLString::transcode("x yz", tempStr, 3999); TEST_BOOLEAN(XMLString::isWSCollapsed(tempStr)); XMLString::transcode("x yz", tempStr, 3999); TEST_BOOLEAN(!XMLString::isWSCollapsed(tempStr)); // test collapseWS XMLString::transcode("x yz", tempStr2, 3999); XMLString::transcode(" x\tyz ", tempStr, 3999); XMLString::collapseWS(tempStr); TEST_STRING(tempStr, tempStr2); XMLString::transcode("x yz", tempStr, 3999); XMLString::collapseWS(tempStr); TEST_STRING(tempStr, tempStr2); XMLString::transcode("x yz", tempStr, 3999); XMLString::collapseWS(tempStr); TEST_STRING(tempStr, tempStr2); XMLString::transcode("xyz", tempStr2, 3999); XMLString::transcode(" xyz ", tempStr, 3999); XMLString::collapseWS(tempStr); TEST_STRING(tempStr, tempStr2); XMLString::transcode(" xyz\n", tempStr, 3999); XMLString::collapseWS(tempStr); TEST_STRING(tempStr, tempStr2); XMLString::transcode("\rxyz", tempStr, 3999); XMLString::collapseWS(tempStr); TEST_STRING(tempStr, tempStr2); XMLString::transcode("xyz", tempStr, 3999); XMLString::collapseWS(tempStr); TEST_STRING(tempStr, tempStr2); // test removeWS XMLString::transcode("xyz", tempStr2, 3999); XMLString::transcode(" x\tyz ", tempStr, 3999); XMLString::removeWS(tempStr); TEST_STRING(tempStr, tempStr2); XMLString::transcode("x yz", tempStr, 3999); XMLString::removeWS(tempStr); TEST_STRING(tempStr, tempStr2); XMLString::transcode("x yz", tempStr, 3999); XMLString::removeWS(tempStr); TEST_STRING(tempStr, tempStr2); XMLString::transcode(" xyz ", tempStr, 3999); XMLString::removeWS(tempStr); TEST_STRING(tempStr, tempStr2); XMLString::transcode(" xyz\n", tempStr, 3999); XMLString::removeWS(tempStr); TEST_STRING(tempStr, tempStr2); XMLString::transcode("\rxyz", tempStr, 3999); XMLString::removeWS(tempStr); TEST_STRING(tempStr, tempStr2); XMLString::transcode("xyz", tempStr, 3999); XMLString::removeWS(tempStr); TEST_STRING(tempStr, tempStr2); if(XMLString::stringLen((XMLCh*)0)!=0) { fprintf(stderr, "strLen test failed at line %i\n", __LINE__); OK = false; } if(XMLString::stringLen(XMLUni::fgZeroLenString)!=0) { fprintf(stderr, "strLen test failed at line %i\n", __LINE__); OK = false; } XMLCh one[2]={ chLatin_A, chNull }; if(XMLString::stringLen(one)!=1) { fprintf(stderr, "strLen test failed at line %i\n", __LINE__); OK = false; } XMLCh two[3]={ chLatin_A, chLatin_B, chNull }; if(XMLString::stringLen(two)!=2) { fprintf(stderr, "strLen test failed at line %i\n", __LINE__); OK = false; } // test copyNString XMLCh buffer[100]; XMLString::transcode("xyz", tempStr, 3999); if(!XMLString::copyNString(buffer, tempStr, 100)) { fprintf(stderr, "copyNString test failed at line %i\n", __LINE__); OK = false; } if(!XMLString::copyNString(buffer, tempStr, 3)) { fprintf(stderr, "copyNString test failed at line %i\n", __LINE__); OK = false; } if(XMLString::copyNString(buffer, tempStr, 2)) { fprintf(stderr, "copyNString test failed at line %i\n", __LINE__); OK = false; } if(!XMLString::copyNString(buffer, tempStr, 4)) { fprintf(stderr, "copyNString test failed at line %i\n", __LINE__); OK = false; } // test indexOf XMLString::transcode("1234567890", tempStr, 3999); if(XMLString::indexOf(tempStr, '1')!=0) { fprintf(stderr, "indexOf test failed at line %i\n", __LINE__); OK = false; } if(XMLString::indexOf(tempStr, '5')!=4) { fprintf(stderr, "indexOf test failed at line %i\n", __LINE__); OK = false; } if(XMLString::indexOf(tempStr, '0')!=9) { fprintf(stderr, "indexOf test failed at line %i\n", __LINE__); OK = false; } if(XMLString::indexOf(tempStr, 'A')!=-1) { fprintf(stderr, "indexOf test failed at line %i\n", __LINE__); OK = false; } // test lastIndexOf XMLString::transcode("1234567890", tempStr, 3999); if(XMLString::lastIndexOf(tempStr, '1')!=0) { fprintf(stderr, "lastIndexOf test failed at line %i\n", __LINE__); OK = false; } if(XMLString::lastIndexOf(tempStr, '5')!=4) { fprintf(stderr, "lastIndexOf test failed at line %i\n", __LINE__); OK = false; } if(XMLString::lastIndexOf(tempStr, '0')!=9) { fprintf(stderr, "lastIndexOf test failed at line %i\n", __LINE__); OK = false; } if(XMLString::lastIndexOf(tempStr, 'A')!=-1) { fprintf(stderr, "lastIndexOf test failed at line %i\n", __LINE__); OK = false; } // this tests the cached bit storage CMStateSet setT(60); setT.setBit(8); setT.setBit(52); setT.setBit(34); if(!setT.getBit(8) || !setT.getBit(52) || !setT.getBit(34)) { fprintf(stderr, "bitset test failed at line %i\n", __LINE__); OK = false; } CMStateSetEnumerator enumT(&setT); if(!enumT.hasMoreElements() || enumT.nextElement()!=8) { fprintf(stderr, "bitset test failed at line %i\n", __LINE__); OK = false; } if(!enumT.hasMoreElements() || enumT.nextElement()!=34) { fprintf(stderr, "bitset test failed at line %i\n", __LINE__); OK = false; } if(!enumT.hasMoreElements() || enumT.nextElement()!=52) { fprintf(stderr, "bitset test failed at line %i\n", __LINE__); OK = false; } if(enumT.hasMoreElements()) { fprintf(stderr, "bitset test failed at line %i\n", __LINE__); OK = false; } // this tests the dynamic bit storage CMStateSet setT2(3 * CMSTATE_BITFIELD_CHUNK); setT2.setBit(0); // first block, begin setT2.setBit(CMSTATE_BITFIELD_CHUNK/2 -1); // first block, middle setT2.setBit(CMSTATE_BITFIELD_CHUNK/2); // first block, middle setT2.setBit(CMSTATE_BITFIELD_CHUNK/2 +1); // first block, middle setT2.setBit(CMSTATE_BITFIELD_CHUNK-1); // first block, end setT2.setBit(2*CMSTATE_BITFIELD_CHUNK); // last block, begin setT2.setBit(2*CMSTATE_BITFIELD_CHUNK + CMSTATE_BITFIELD_CHUNK/2 -1); // last block, middle setT2.setBit(2*CMSTATE_BITFIELD_CHUNK + CMSTATE_BITFIELD_CHUNK/2); // last block, middle setT2.setBit(2*CMSTATE_BITFIELD_CHUNK + CMSTATE_BITFIELD_CHUNK/2 +1); // last block, middle setT2.setBit(3*CMSTATE_BITFIELD_CHUNK-1); // last block, end // test just a few ones if(!setT2.getBit(0) || !setT2.getBit(CMSTATE_BITFIELD_CHUNK-1) || !setT2.getBit(2*CMSTATE_BITFIELD_CHUNK + CMSTATE_BITFIELD_CHUNK/2 +1)) { fprintf(stderr, "bitset test failed at line %i\n", __LINE__); OK = false; } if(setT2.getBitCountInRange(0, 3*CMSTATE_BITFIELD_CHUNK)!=10) { fprintf(stderr, "bitset test failed at line %i\n", __LINE__); OK = false; } CMStateSetEnumerator enumT2(&setT2); XMLSize_t count=0; while(enumT2.hasMoreElements()) { count++; enumT2.nextElement(); } if(count!=10) { fprintf(stderr, "bitset test failed at line %i\n", __LINE__); OK = false; } // test the enumerator with a non-default start CMStateSetEnumerator enumT2a(&setT2, CMSTATE_BITFIELD_CHUNK/2); if(!enumT2a.hasMoreElements() || enumT2a.nextElement()!= (CMSTATE_BITFIELD_CHUNK/2)) { fprintf(stderr, "bitset test failed at line %i\n", __LINE__); OK = false; } CMStateSetEnumerator enumT2b(&setT2, CMSTATE_BITFIELD_CHUNK/2+2); if(!enumT2b.hasMoreElements() || enumT2b.nextElement()!= (CMSTATE_BITFIELD_CHUNK-1)) { fprintf(stderr, "bitset test failed at line %i\n", __LINE__); OK = false; } CMStateSetEnumerator enumT2c(&setT2, 2*CMSTATE_BITFIELD_CHUNK); if(!enumT2c.hasMoreElements() || enumT2c.nextElement()!= (2*CMSTATE_BITFIELD_CHUNK)) { fprintf(stderr, "bitset test failed at line %i\n", __LINE__); OK = false; } // this tests the hash generator CMStateSet setT3(3 * CMSTATE_BITFIELD_CHUNK), setT4(3 * CMSTATE_BITFIELD_CHUNK); // these two sets will have a single bit set at the beginning of a chunk setT3.setBit(0); setT4.setBit(CMSTATE_BITFIELD_CHUNK); if(setT3.hashCode()==setT4.hashCode()) { fprintf(stderr, "bitset test failed at line %i\n", __LINE__); OK = false; } return OK; } xerces-c-3.1.1/tests/src/EncodingTest/0000755000175000017500000000000011363617313016566 5ustar borisborisxerces-c-3.1.1/tests/src/EncodingTest/EncodingTest.cpp0000644000175000017500000003322611037122704021657 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ //--------------------------------------------------------------------- // // This test program is used, in conjunction with a set of test data files, // to verify support for different character encodings in XML. // //--------------------------------------------------------------------- // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_USE static int gTestsFailed = 0; static int gTestsRun = 0; static XercesDOMParser* parser = 0; //----------------------------------------------------------------------- // // ErrorHandler. The DOM Parser will report any parsing errors by means // of call-backs to the methods of this class. // This is just necessary boilerplate, as far as this // program is concerned. // //----------------------------------------------------------------------- class ParseErrorHandler: public ErrorHandler { public: void warning(const SAXParseException& e); void error(const SAXParseException& e); void fatalError(const SAXParseException& e); void resetErrors() {}; }; void ParseErrorHandler::error(const SAXParseException& e) { char* systemId = XMLString::transcode(e.getSystemId()); char* message = XMLString::transcode(e.getMessage()); fprintf(stderr, "\nError at file \"%s\", line %d, char %d: %s\n", systemId, e.getLineNumber(), e.getColumnNumber(), message); XMLString::release(&systemId); XMLString::release(&message); throw e; }; void ParseErrorHandler::fatalError(const SAXParseException& e) { char* systemId = XMLString::transcode(e.getSystemId()); char* message = XMLString::transcode(e.getMessage()); fprintf(stderr, "\nFatal Error at file \"%s\", line %d, char %d: %s\n", systemId, e.getLineNumber(), e.getColumnNumber(), message); XMLString::release(&systemId); XMLString::release(&message); throw e; }; void ParseErrorHandler::warning(const SAXParseException& e) { char* systemId = XMLString::transcode(e.getSystemId()); char* message = XMLString::transcode(e.getMessage()); fprintf(stderr, "\nWarning at file \"%s\", line %d, char %d: %s\n", systemId, e.getLineNumber(), e.getColumnNumber(), message); XMLString::release(&systemId); XMLString::release(&message); throw e; }; //------------------------------------------------------------------------ // // parseFile - a simpler to use function for just parsing an XML file // and getting the DOM Document back. // //------------------------------------------------------------------------ static DOMDocument* parseFile(char *fileName) { ParseErrorHandler eh; if (!parser) parser = new XercesDOMParser; parser->setValidationScheme(AbstractDOMParser::Val_Never); parser->setErrorHandler(&eh); try { parser->parse(fileName); } catch (const OutOfMemoryException&) { fprintf(stderr, "OutOfMemoryException during parsing: %s\n", fileName); return 0; } catch (const XMLException& e ) { fprintf(stderr, "Exception Occurred \"%s\". \n", XMLString::transcode(e.getMessage())); fprintf(stderr, "File being parsed is \"%s\".\n", fileName); return 0; // A null document. } catch (...) { fprintf(stderr, "Unexpected Exception thrown during parse of file \"%s\".\n", fileName); return 0; } return parser->getDocument(); } //------------------------------------------------------------------------ // // writeUData - Write out a udata xml element for a XMLCh* contents. // //------------------------------------------------------------------------ static void writeUData(const XMLCh* s) { unsigned int i; printf("\n"); size_t len = XMLString::stringLen(s); for (i=0; i\n"); }; //------------------------------------------------------------------------ // // eatWhiteSpace - XMLCh*s are kind of short on utility functions :-( // //------------------------------------------------------------------------ static void eatWhiteSpace(XMLCh* s, unsigned int &i) { size_t len = XMLString::stringLen(s); while (i < len) { XMLCh c = s[i]; if (!(c == 0x20 || // These are the official XML space characters, c == 0x09 || // expressed as Unicode constants. c == 0x0A)) break; i++; } } //------------------------------------------------------------------------ // // convertHexValue if the XMLCh* contains a hex number at position i, // convert it and return it, and update i to index the // first char not in the string. // return 0 if string[i] didn't have a hex digit. // 0 return is ambiguous, but it doesn't matter for XML, // where 0 is not a valid character. // //------------------------------------------------------------------------ static int convertHexValue(XMLCh* s, unsigned int &i) { int value = 0; // For reference, the digits 0-9 are Unicode 0x30-39 // the letters A-F are Unicode 0x41-0x46 // the letters a-f are Unicode 0x61-66 // We can't use character literals - we might be // building on an EBCDIC machine. size_t len = XMLString::stringLen(s); while (i < len) { XMLCh c = s[i]; if (c >= 0x61 && c <= 0x66) // Uppercase a-f to A-F. c -= 0x20; if (c < 0x30 || c >0x46) // Stop if not a hex digit break; if (c > 0x39 && c <0x41) break; value = value << 4; // Append this digit to accumulating value if (c <= 0x39) value += c-0x30; else value += 0xA + c - 0x41; i++; } return value; } //------------------------------------------------------------------------ // // processTestFile Given the file name of an encoding test xml file, // run it. // //------------------------------------------------------------------------ static bool processTestFile(const XMLCh* fileName) { // // Send the input file through the parse, create a DOM document for it. // char cFileName[4000]; XMLString::transcode(fileName, cFileName, 3999); DOMDocument* testDoc = parseFile(cFileName); if (testDoc == 0) return false; // parse errors in the source xml. // // Pull the "data" element out of the document. // XMLCh tempStr[4000]; XMLString::transcode("data", tempStr, 3999); DOMNodeList* nl = testDoc->getElementsByTagName(tempStr); if (nl->getLength() != 1) { fprintf(stderr, "Test file \"%s\" must have exactly one \"data\" element.\n", cFileName); return false; }; DOMNode* tmpNode = nl->item(0); DOMElement* data = (DOMElement*) tmpNode; // // Build up a string containing the character data contents of the data element. // DOMNode* child; XMLBuffer elData; for (child=data->getFirstChild(); child != 0; child= child->getNextSibling()) { if (child->getNodeType() == DOMNode::COMMENT_NODE) continue; if (! (child->getNodeType() == DOMNode::TEXT_NODE || child->getNodeType() == DOMNode::CDATA_SECTION_NODE || child->getNodeType() == DOMNode::ENTITY_REFERENCE_NODE)) { fprintf(stderr, "Test file \"%s\": data element contains unexpected children.", cFileName); return false; } elData.append(((DOMCharacterData *)child)->getData()); }; // // Pull the "udata" element out of the document // XMLString::transcode("udata", tempStr, 3999); nl = testDoc->getElementsByTagName(tempStr); if (nl->getLength() != 1) { fprintf(stderr, "Test file \"%s\" must have exactly one \"udata\" element.\n", cFileName); return false; }; DOMNode* tmpNode1 = nl->item(0); DOMElement* udata = (DOMElement*) tmpNode1; // // Build up a string containing the character data contents of the udata element. // This will consist of a whole bunch hex numbers, still in string from // XMLBuffer rawUData; for (child=udata->getFirstChild(); child != 0; child= child->getNextSibling()) { if (child->getNodeType() == DOMNode::COMMENT_NODE) continue; if (! (child->getNodeType() == DOMNode::TEXT_NODE || child->getNodeType() == DOMNode::CDATA_SECTION_NODE || child->getNodeType() == DOMNode::ENTITY_REFERENCE_NODE)) { fprintf(stderr, "Test file \"%s\": udata element contains unexpected children.", cFileName); return false; } rawUData.append(((DOMCharacterData *)child)->getData()); }; // // Convert the raw (hex numbers) form of the udata to the corresponding string. // XMLBuffer uData; unsigned int rawIndex = 0; while (rawIndex < rawUData.getLen()) { eatWhiteSpace(rawUData.getRawBuffer(), rawIndex); XMLCh c = convertHexValue(rawUData.getRawBuffer(), rawIndex); if (c > 0) uData.append(c); else if (rawIndex < rawUData.getLen()) { fprintf(stderr, "Test file \"%s\": Bad hex number in udata element. " "Data character number %d\n", cFileName, uData.getLen()); return false; } } // // Compare the two strings. // unsigned int i; for (i=0; i< elData.getLen(); i++) { XMLCh* elDataRaw = elData.getRawBuffer(); XMLCh* uDataRaw = uData.getRawBuffer(); if (i >= uData.getLen()) { fprintf(stderr, "Test file \"%s\": udata element shorter than data at char number %d\n", cFileName, i); writeUData(elDataRaw); return false; } if (uDataRaw[i] != elDataRaw[i]) { fprintf(stderr, "Test file \"%s\": comparison failure at character number %d\n", cFileName, i); writeUData(elDataRaw); return false; }; } if (elData.getLen() != uData.getLen()) { fprintf(stderr, "Test file \"%s\": udata element longer than data at char number %d\n", cFileName, i); writeUData(elData.getRawBuffer()); return false; } return true; } int main(int argc, char ** argv) { // // Initialize the Xerces-c environment // try { XMLPlatformUtils::Initialize(); } catch (const XMLException& toCatch) { fprintf(stderr, "Error during initialization of xerces-c: %s\n", XMLString::transcode(toCatch.getMessage())); return 1; } // // Parse the command line, which should specify exactly one file, which is an // xml file containing the list of test files to be processed. // if (argc != 2) { printf("usage: %s file_name \n" " where file name is the xml file specifying the list of test files.", argv[0]); return 1; } DOMDocument* fileListDoc = parseFile(argv[1]); if (fileListDoc == 0) return 1; // // Iterate over the list of files, running each as a test. // XMLCh tempStr[4000]; XMLString::transcode("testFile", tempStr, 3999); DOMNodeList* list = fileListDoc->getElementsByTagName(tempStr); XMLSize_t i; XMLSize_t numFiles = list->getLength(); for (i=0; iitem(i); XMLString::transcode("name", tempStr, 3999); const XMLCh* fileName = ((DOMElement*) tmpNode3)->getAttribute(tempStr); if (processTestFile(fileName) == false) ++gTestsFailed; }; // // We are done. Print out a summary of the results // printf("Encoding Tests Results Summary: \n" " %d encoding tests run.\n" " %d tests passed,\n" " %d tests failed\n", gTestsRun, gTestsRun-gTestsFailed, gTestsFailed); delete parser; parser = 0; return 0; }; xerces-c-3.1.1/samples/0000755000175000017500000000000011363617723013720 5ustar borisborisxerces-c-3.1.1/samples/Makefile.am0000644000175000017500000001767711302442455015765 0ustar borisboris# # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # # $Id: Makefile.am 883272 2009-11-23 08:17:49Z borisk $ # bin_PROGRAMS = ${sampleprogs} LDADD = ${top_builddir}/src/libxerces-c.la # the -I${top_builddir}/src is needed to pick the xercesc/util/Xerces_autoconf_config.hpp # header file when doing out-of-tree builds AM_CPPFLAGS = -I${top_builddir}/src -I${top_srcdir}/src EXTRA_DIST = data/personal.dtd \ data/personal.xml \ data/personal.xsd \ data/personal-schema.xml \ data/redirect.dtd sampleprogs = sampleprogs += CreateDOMDocument CreateDOMDocument_SOURCES = src/CreateDOMDocument/CreateDOMDocument.cpp sampleprogs += DOMCount DOMCount_SOURCES = src/DOMCount/DOMCount.cpp \ src/DOMCount/DOMCount.hpp sampleprogs += DOMPrint DOMPrint_SOURCES = src/DOMPrint/DOMPrint.cpp \ src/DOMPrint/DOMPrintErrorHandler.cpp \ src/DOMPrint/DOMPrintErrorHandler.hpp \ src/DOMPrint/DOMPrintFilter.cpp \ src/DOMPrint/DOMPrintFilter.hpp \ src/DOMPrint/DOMTreeErrorReporter.cpp \ src/DOMPrint/DOMTreeErrorReporter.hpp sampleprogs += EnumVal EnumVal_SOURCES = src/EnumVal/EnumVal.cpp sampleprogs += MemParse MemParse_SOURCES = src/MemParse/MemParse.cpp \ src/MemParse/MemParse.hpp \ src/MemParse/MemParseHandlers.cpp \ src/MemParse/MemParseHandlers.hpp sampleprogs += PParse PParse_SOURCES = src/PParse/PParse.cpp \ src/PParse/PParse.hpp \ src/PParse/PParseHandlers.cpp \ src/PParse/PParseHandlers.hpp sampleprogs += PSVIWriter PSVIWriter_SOURCES = src/PSVIWriter/PSVIWriter.cpp \ src/PSVIWriter/PSVIWriter.hpp \ src/PSVIWriter/PSVIWriterHandlers.cpp \ src/PSVIWriter/PSVIWriterHandlers.hpp sampleprogs += Redirect Redirect_SOURCES = src/Redirect/Redirect.cpp \ src/Redirect/Redirect.hpp \ src/Redirect/RedirectHandlers.cpp \ src/Redirect/RedirectHandlers.hpp sampleprogs += SAX2Count SAX2Count_SOURCES = src/SAX2Count/SAX2Count.cpp \ src/SAX2Count/SAX2Count.hpp \ src/SAX2Count/SAX2CountHandlers.cpp \ src/SAX2Count/SAX2CountHandlers.hpp sampleprogs += SAX2Print SAX2Print_SOURCES = src/SAX2Print/SAX2FilterHandlers.cpp \ src/SAX2Print/SAX2FilterHandlers.hpp \ src/SAX2Print/SAX2Print.cpp \ src/SAX2Print/SAX2Print.hpp \ src/SAX2Print/SAX2PrintHandlers.cpp \ src/SAX2Print/SAX2PrintHandlers.hpp sampleprogs += SAXCount SAXCount_SOURCES = src/SAXCount/SAXCount.cpp \ src/SAXCount/SAXCount.hpp \ src/SAXCount/SAXCountHandlers.cpp \ src/SAXCount/SAXCountHandlers.hpp sampleprogs += SAXPrint SAXPrint_SOURCES = src/SAXPrint/SAXPrint.cpp \ src/SAXPrint/SAXPrint.hpp \ src/SAXPrint/SAXPrintHandlers.cpp \ src/SAXPrint/SAXPrintHandlers.hpp sampleprogs += SCMPrint SCMPrint_SOURCES = src/SCMPrint/SCMPrint.cpp sampleprogs += SEnumVal SEnumVal_SOURCES = src/SEnumVal/SEnumVal.cpp sampleprogs += StdInParse StdInParse_SOURCES = src/StdInParse/StdInParse.cpp \ src/StdInParse/StdInParse.hpp \ src/StdInParse/StdInParseHandlers.cpp \ src/StdInParse/StdInParseHandlers.hpp sampleprogs += XInclude XInclude_SOURCES = src/XInclude/XInclude.cpp \ src/XInclude/XInclude.hpp # # Override generated rules to provide prettier make rules # # Warning: If Automake changes sufficiently, these rules may need to # be regenerated from the (new) default output of Automake # if XERCES_PRETTY_MAKE .cpp.o: @am__fastdepCXX_TRUE@ @depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`; \ @am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$$depbase.Tpo" -c -o $@ $<; \ @am__fastdepCXX_TRUE@ then $(am__mv) "$$depbase.Tpo" "$$depbase.Po"; else rm -f "$$depbase.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCXX_FALSE@ @source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ @depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`; \ @am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$$depbase.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ @am__fastdepCXX_TRUE@ then $(am__mv) "$$depbase.Tpo" "$$depbase.Po"; else rm -f "$$depbase.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCXX_FALSE@ @source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: @am__fastdepCXX_TRUE@ @depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`; \ @am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$$depbase.Tpo" -c -o $@ $<; \ @am__fastdepCXX_TRUE@ then $(am__mv) "$$depbase.Tpo" "$$depbase.Plo"; else rm -f "$$depbase.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCXX_FALSE@ @source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< PRETTY_MAKE=${top_srcdir}/config/pretty-make PRETTY_COMPILE=${PRETTY_MAKE} Compiling endif CXXCOMPILE = ${PRETTY_COMPILE} \ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = ${PRETTY_COMPILE} \ $(LIBTOOL) --quiet --tag=CXX --mode=compile \ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) xerces-c-3.1.1/samples/Makefile.in0000644000175000017500000012763711363617723016005 0ustar borisboris# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@ # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # # $Id: Makefile.am 883272 2009-11-23 08:17:49Z borisk $ # VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@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@ bin_PROGRAMS = $(am__EXEEXT_1) subdir = samples DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/acx_pthread.m4 \ $(top_srcdir)/m4/cxx_have_bool.m4 \ $(top_srcdir)/m4/cxx_have_lstring.m4 \ $(top_srcdir)/m4/cxx_have_namespaces.m4 \ $(top_srcdir)/m4/cxx_have_std_libs.m4 \ $(top_srcdir)/m4/cxx_have_std_namespace.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/xerces_curl_prefix.m4 \ $(top_srcdir)/m4/xerces_filemgr_selection.m4 \ $(top_srcdir)/m4/xerces_icu_prefix.m4 \ $(top_srcdir)/m4/xerces_int_types.m4 \ $(top_srcdir)/m4/xerces_link_darwin_framework.m4 \ $(top_srcdir)/m4/xerces_msgloader_selection.m4 \ $(top_srcdir)/m4/xerces_mutexmgr_selection.m4 \ $(top_srcdir)/m4/xerces_netaccessor_selection.m4 \ $(top_srcdir)/m4/xerces_no_threads.m4 \ $(top_srcdir)/m4/xerces_path_delimiters.m4 \ $(top_srcdir)/m4/xerces_pretty_make.m4 \ $(top_srcdir)/m4/xerces_transcoder_selection.m4 \ $(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 \ $(top_builddir)/src/xercesc/util/Xerces_autoconf_config.hpp CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__EXEEXT_1 = CreateDOMDocument$(EXEEXT) DOMCount$(EXEEXT) \ DOMPrint$(EXEEXT) EnumVal$(EXEEXT) MemParse$(EXEEXT) \ PParse$(EXEEXT) PSVIWriter$(EXEEXT) Redirect$(EXEEXT) \ SAX2Count$(EXEEXT) SAX2Print$(EXEEXT) SAXCount$(EXEEXT) \ SAXPrint$(EXEEXT) SCMPrint$(EXEEXT) SEnumVal$(EXEEXT) \ StdInParse$(EXEEXT) XInclude$(EXEEXT) am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am__dirstamp = $(am__leading_dot)dirstamp am_CreateDOMDocument_OBJECTS = \ src/CreateDOMDocument/CreateDOMDocument.$(OBJEXT) CreateDOMDocument_OBJECTS = $(am_CreateDOMDocument_OBJECTS) CreateDOMDocument_LDADD = $(LDADD) CreateDOMDocument_DEPENDENCIES = ${top_builddir}/src/libxerces-c.la am_DOMCount_OBJECTS = src/DOMCount/DOMCount.$(OBJEXT) DOMCount_OBJECTS = $(am_DOMCount_OBJECTS) DOMCount_LDADD = $(LDADD) DOMCount_DEPENDENCIES = ${top_builddir}/src/libxerces-c.la am_DOMPrint_OBJECTS = src/DOMPrint/DOMPrint.$(OBJEXT) \ src/DOMPrint/DOMPrintErrorHandler.$(OBJEXT) \ src/DOMPrint/DOMPrintFilter.$(OBJEXT) \ src/DOMPrint/DOMTreeErrorReporter.$(OBJEXT) DOMPrint_OBJECTS = $(am_DOMPrint_OBJECTS) DOMPrint_LDADD = $(LDADD) DOMPrint_DEPENDENCIES = ${top_builddir}/src/libxerces-c.la am_EnumVal_OBJECTS = src/EnumVal/EnumVal.$(OBJEXT) EnumVal_OBJECTS = $(am_EnumVal_OBJECTS) EnumVal_LDADD = $(LDADD) EnumVal_DEPENDENCIES = ${top_builddir}/src/libxerces-c.la am_MemParse_OBJECTS = src/MemParse/MemParse.$(OBJEXT) \ src/MemParse/MemParseHandlers.$(OBJEXT) MemParse_OBJECTS = $(am_MemParse_OBJECTS) MemParse_LDADD = $(LDADD) MemParse_DEPENDENCIES = ${top_builddir}/src/libxerces-c.la am_PParse_OBJECTS = src/PParse/PParse.$(OBJEXT) \ src/PParse/PParseHandlers.$(OBJEXT) PParse_OBJECTS = $(am_PParse_OBJECTS) PParse_LDADD = $(LDADD) PParse_DEPENDENCIES = ${top_builddir}/src/libxerces-c.la am_PSVIWriter_OBJECTS = src/PSVIWriter/PSVIWriter.$(OBJEXT) \ src/PSVIWriter/PSVIWriterHandlers.$(OBJEXT) PSVIWriter_OBJECTS = $(am_PSVIWriter_OBJECTS) PSVIWriter_LDADD = $(LDADD) PSVIWriter_DEPENDENCIES = ${top_builddir}/src/libxerces-c.la am_Redirect_OBJECTS = src/Redirect/Redirect.$(OBJEXT) \ src/Redirect/RedirectHandlers.$(OBJEXT) Redirect_OBJECTS = $(am_Redirect_OBJECTS) Redirect_LDADD = $(LDADD) Redirect_DEPENDENCIES = ${top_builddir}/src/libxerces-c.la am_SAX2Count_OBJECTS = src/SAX2Count/SAX2Count.$(OBJEXT) \ src/SAX2Count/SAX2CountHandlers.$(OBJEXT) SAX2Count_OBJECTS = $(am_SAX2Count_OBJECTS) SAX2Count_LDADD = $(LDADD) SAX2Count_DEPENDENCIES = ${top_builddir}/src/libxerces-c.la am_SAX2Print_OBJECTS = src/SAX2Print/SAX2FilterHandlers.$(OBJEXT) \ src/SAX2Print/SAX2Print.$(OBJEXT) \ src/SAX2Print/SAX2PrintHandlers.$(OBJEXT) SAX2Print_OBJECTS = $(am_SAX2Print_OBJECTS) SAX2Print_LDADD = $(LDADD) SAX2Print_DEPENDENCIES = ${top_builddir}/src/libxerces-c.la am_SAXCount_OBJECTS = src/SAXCount/SAXCount.$(OBJEXT) \ src/SAXCount/SAXCountHandlers.$(OBJEXT) SAXCount_OBJECTS = $(am_SAXCount_OBJECTS) SAXCount_LDADD = $(LDADD) SAXCount_DEPENDENCIES = ${top_builddir}/src/libxerces-c.la am_SAXPrint_OBJECTS = src/SAXPrint/SAXPrint.$(OBJEXT) \ src/SAXPrint/SAXPrintHandlers.$(OBJEXT) SAXPrint_OBJECTS = $(am_SAXPrint_OBJECTS) SAXPrint_LDADD = $(LDADD) SAXPrint_DEPENDENCIES = ${top_builddir}/src/libxerces-c.la am_SCMPrint_OBJECTS = src/SCMPrint/SCMPrint.$(OBJEXT) SCMPrint_OBJECTS = $(am_SCMPrint_OBJECTS) SCMPrint_LDADD = $(LDADD) SCMPrint_DEPENDENCIES = ${top_builddir}/src/libxerces-c.la am_SEnumVal_OBJECTS = src/SEnumVal/SEnumVal.$(OBJEXT) SEnumVal_OBJECTS = $(am_SEnumVal_OBJECTS) SEnumVal_LDADD = $(LDADD) SEnumVal_DEPENDENCIES = ${top_builddir}/src/libxerces-c.la am_StdInParse_OBJECTS = src/StdInParse/StdInParse.$(OBJEXT) \ src/StdInParse/StdInParseHandlers.$(OBJEXT) StdInParse_OBJECTS = $(am_StdInParse_OBJECTS) StdInParse_LDADD = $(LDADD) StdInParse_DEPENDENCIES = ${top_builddir}/src/libxerces-c.la am_XInclude_OBJECTS = src/XInclude/XInclude.$(OBJEXT) XInclude_OBJECTS = $(am_XInclude_OBJECTS) XInclude_LDADD = $(LDADD) XInclude_DEPENDENCIES = ${top_builddir}/src/libxerces-c.la DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -I$(top_builddir)/src/xercesc/util depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CXXLD = $(CXX) CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ 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 = $(CreateDOMDocument_SOURCES) $(DOMCount_SOURCES) \ $(DOMPrint_SOURCES) $(EnumVal_SOURCES) $(MemParse_SOURCES) \ $(PParse_SOURCES) $(PSVIWriter_SOURCES) $(Redirect_SOURCES) \ $(SAX2Count_SOURCES) $(SAX2Print_SOURCES) $(SAXCount_SOURCES) \ $(SAXPrint_SOURCES) $(SCMPrint_SOURCES) $(SEnumVal_SOURCES) \ $(StdInParse_SOURCES) $(XInclude_SOURCES) DIST_SOURCES = $(CreateDOMDocument_SOURCES) $(DOMCount_SOURCES) \ $(DOMPrint_SOURCES) $(EnumVal_SOURCES) $(MemParse_SOURCES) \ $(PParse_SOURCES) $(PSVIWriter_SOURCES) $(Redirect_SOURCES) \ $(SAX2Count_SOURCES) $(SAX2Print_SOURCES) $(SAXCount_SOURCES) \ $(SAXPrint_SOURCES) $(SCMPrint_SOURCES) $(SEnumVal_SOURCES) \ $(StdInParse_SOURCES) $(XInclude_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_SHARED = @BUILD_SHARED@ BUILD_STATIC = @BUILD_STATIC@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CURL_FLAGS = @CURL_FLAGS@ CURL_LIBS = @CURL_LIBS@ CURL_PRESENT = @CURL_PRESENT@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ ICU_BIN = @ICU_BIN@ ICU_FLAGS = @ICU_FLAGS@ ICU_LIBS = @ICU_LIBS@ ICU_PRESENT = @ICU_PRESENT@ ICU_SBIN = @ICU_SBIN@ 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@ MAINT = @MAINT@ 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_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SHREXT = @SHREXT@ STRIP = @STRIP@ VERSION = @VERSION@ 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_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ acx_pthread_config = @acx_pthread_config@ 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@ curl_config = @curl_config@ 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@ icu_config = @icu_config@ 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@ pkgconfigdir = @pkgconfigdir@ 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@ LDADD = ${top_builddir}/src/libxerces-c.la # the -I${top_builddir}/src is needed to pick the xercesc/util/Xerces_autoconf_config.hpp # header file when doing out-of-tree builds AM_CPPFLAGS = -I${top_builddir}/src -I${top_srcdir}/src EXTRA_DIST = data/personal.dtd \ data/personal.xml \ data/personal.xsd \ data/personal-schema.xml \ data/redirect.dtd sampleprogs = CreateDOMDocument DOMCount DOMPrint EnumVal MemParse \ PParse PSVIWriter Redirect SAX2Count SAX2Print SAXCount \ SAXPrint SCMPrint SEnumVal StdInParse XInclude CreateDOMDocument_SOURCES = src/CreateDOMDocument/CreateDOMDocument.cpp DOMCount_SOURCES = src/DOMCount/DOMCount.cpp \ src/DOMCount/DOMCount.hpp DOMPrint_SOURCES = src/DOMPrint/DOMPrint.cpp \ src/DOMPrint/DOMPrintErrorHandler.cpp \ src/DOMPrint/DOMPrintErrorHandler.hpp \ src/DOMPrint/DOMPrintFilter.cpp \ src/DOMPrint/DOMPrintFilter.hpp \ src/DOMPrint/DOMTreeErrorReporter.cpp \ src/DOMPrint/DOMTreeErrorReporter.hpp EnumVal_SOURCES = src/EnumVal/EnumVal.cpp MemParse_SOURCES = src/MemParse/MemParse.cpp \ src/MemParse/MemParse.hpp \ src/MemParse/MemParseHandlers.cpp \ src/MemParse/MemParseHandlers.hpp PParse_SOURCES = src/PParse/PParse.cpp \ src/PParse/PParse.hpp \ src/PParse/PParseHandlers.cpp \ src/PParse/PParseHandlers.hpp PSVIWriter_SOURCES = src/PSVIWriter/PSVIWriter.cpp \ src/PSVIWriter/PSVIWriter.hpp \ src/PSVIWriter/PSVIWriterHandlers.cpp \ src/PSVIWriter/PSVIWriterHandlers.hpp Redirect_SOURCES = src/Redirect/Redirect.cpp \ src/Redirect/Redirect.hpp \ src/Redirect/RedirectHandlers.cpp \ src/Redirect/RedirectHandlers.hpp SAX2Count_SOURCES = src/SAX2Count/SAX2Count.cpp \ src/SAX2Count/SAX2Count.hpp \ src/SAX2Count/SAX2CountHandlers.cpp \ src/SAX2Count/SAX2CountHandlers.hpp SAX2Print_SOURCES = src/SAX2Print/SAX2FilterHandlers.cpp \ src/SAX2Print/SAX2FilterHandlers.hpp \ src/SAX2Print/SAX2Print.cpp \ src/SAX2Print/SAX2Print.hpp \ src/SAX2Print/SAX2PrintHandlers.cpp \ src/SAX2Print/SAX2PrintHandlers.hpp SAXCount_SOURCES = src/SAXCount/SAXCount.cpp \ src/SAXCount/SAXCount.hpp \ src/SAXCount/SAXCountHandlers.cpp \ src/SAXCount/SAXCountHandlers.hpp SAXPrint_SOURCES = src/SAXPrint/SAXPrint.cpp \ src/SAXPrint/SAXPrint.hpp \ src/SAXPrint/SAXPrintHandlers.cpp \ src/SAXPrint/SAXPrintHandlers.hpp SCMPrint_SOURCES = src/SCMPrint/SCMPrint.cpp SEnumVal_SOURCES = src/SEnumVal/SEnumVal.cpp StdInParse_SOURCES = src/StdInParse/StdInParse.cpp \ src/StdInParse/StdInParse.hpp \ src/StdInParse/StdInParseHandlers.cpp \ src/StdInParse/StdInParseHandlers.hpp XInclude_SOURCES = src/XInclude/XInclude.cpp \ src/XInclude/XInclude.hpp @XERCES_PRETTY_MAKE_TRUE@PRETTY_MAKE = ${top_srcdir}/config/pretty-make @XERCES_PRETTY_MAKE_TRUE@PRETTY_COMPILE = ${PRETTY_MAKE} Compiling CXXCOMPILE = ${PRETTY_COMPILE} \ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = ${PRETTY_COMPILE} \ $(LIBTOOL) --quiet --tag=CXX --mode=compile \ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) all: all-am .SUFFIXES: .SUFFIXES: .cpp .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(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 samples/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign samples/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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p || test -f $$p1; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list src/CreateDOMDocument/$(am__dirstamp): @$(MKDIR_P) src/CreateDOMDocument @: > src/CreateDOMDocument/$(am__dirstamp) src/CreateDOMDocument/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/CreateDOMDocument/$(DEPDIR) @: > src/CreateDOMDocument/$(DEPDIR)/$(am__dirstamp) src/CreateDOMDocument/CreateDOMDocument.$(OBJEXT): \ src/CreateDOMDocument/$(am__dirstamp) \ src/CreateDOMDocument/$(DEPDIR)/$(am__dirstamp) CreateDOMDocument$(EXEEXT): $(CreateDOMDocument_OBJECTS) $(CreateDOMDocument_DEPENDENCIES) @rm -f CreateDOMDocument$(EXEEXT) $(CXXLINK) $(CreateDOMDocument_OBJECTS) $(CreateDOMDocument_LDADD) $(LIBS) src/DOMCount/$(am__dirstamp): @$(MKDIR_P) src/DOMCount @: > src/DOMCount/$(am__dirstamp) src/DOMCount/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/DOMCount/$(DEPDIR) @: > src/DOMCount/$(DEPDIR)/$(am__dirstamp) src/DOMCount/DOMCount.$(OBJEXT): src/DOMCount/$(am__dirstamp) \ src/DOMCount/$(DEPDIR)/$(am__dirstamp) DOMCount$(EXEEXT): $(DOMCount_OBJECTS) $(DOMCount_DEPENDENCIES) @rm -f DOMCount$(EXEEXT) $(CXXLINK) $(DOMCount_OBJECTS) $(DOMCount_LDADD) $(LIBS) src/DOMPrint/$(am__dirstamp): @$(MKDIR_P) src/DOMPrint @: > src/DOMPrint/$(am__dirstamp) src/DOMPrint/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/DOMPrint/$(DEPDIR) @: > src/DOMPrint/$(DEPDIR)/$(am__dirstamp) src/DOMPrint/DOMPrint.$(OBJEXT): src/DOMPrint/$(am__dirstamp) \ src/DOMPrint/$(DEPDIR)/$(am__dirstamp) src/DOMPrint/DOMPrintErrorHandler.$(OBJEXT): \ src/DOMPrint/$(am__dirstamp) \ src/DOMPrint/$(DEPDIR)/$(am__dirstamp) src/DOMPrint/DOMPrintFilter.$(OBJEXT): src/DOMPrint/$(am__dirstamp) \ src/DOMPrint/$(DEPDIR)/$(am__dirstamp) src/DOMPrint/DOMTreeErrorReporter.$(OBJEXT): \ src/DOMPrint/$(am__dirstamp) \ src/DOMPrint/$(DEPDIR)/$(am__dirstamp) DOMPrint$(EXEEXT): $(DOMPrint_OBJECTS) $(DOMPrint_DEPENDENCIES) @rm -f DOMPrint$(EXEEXT) $(CXXLINK) $(DOMPrint_OBJECTS) $(DOMPrint_LDADD) $(LIBS) src/EnumVal/$(am__dirstamp): @$(MKDIR_P) src/EnumVal @: > src/EnumVal/$(am__dirstamp) src/EnumVal/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/EnumVal/$(DEPDIR) @: > src/EnumVal/$(DEPDIR)/$(am__dirstamp) src/EnumVal/EnumVal.$(OBJEXT): src/EnumVal/$(am__dirstamp) \ src/EnumVal/$(DEPDIR)/$(am__dirstamp) EnumVal$(EXEEXT): $(EnumVal_OBJECTS) $(EnumVal_DEPENDENCIES) @rm -f EnumVal$(EXEEXT) $(CXXLINK) $(EnumVal_OBJECTS) $(EnumVal_LDADD) $(LIBS) src/MemParse/$(am__dirstamp): @$(MKDIR_P) src/MemParse @: > src/MemParse/$(am__dirstamp) src/MemParse/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/MemParse/$(DEPDIR) @: > src/MemParse/$(DEPDIR)/$(am__dirstamp) src/MemParse/MemParse.$(OBJEXT): src/MemParse/$(am__dirstamp) \ src/MemParse/$(DEPDIR)/$(am__dirstamp) src/MemParse/MemParseHandlers.$(OBJEXT): src/MemParse/$(am__dirstamp) \ src/MemParse/$(DEPDIR)/$(am__dirstamp) MemParse$(EXEEXT): $(MemParse_OBJECTS) $(MemParse_DEPENDENCIES) @rm -f MemParse$(EXEEXT) $(CXXLINK) $(MemParse_OBJECTS) $(MemParse_LDADD) $(LIBS) src/PParse/$(am__dirstamp): @$(MKDIR_P) src/PParse @: > src/PParse/$(am__dirstamp) src/PParse/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/PParse/$(DEPDIR) @: > src/PParse/$(DEPDIR)/$(am__dirstamp) src/PParse/PParse.$(OBJEXT): src/PParse/$(am__dirstamp) \ src/PParse/$(DEPDIR)/$(am__dirstamp) src/PParse/PParseHandlers.$(OBJEXT): src/PParse/$(am__dirstamp) \ src/PParse/$(DEPDIR)/$(am__dirstamp) PParse$(EXEEXT): $(PParse_OBJECTS) $(PParse_DEPENDENCIES) @rm -f PParse$(EXEEXT) $(CXXLINK) $(PParse_OBJECTS) $(PParse_LDADD) $(LIBS) src/PSVIWriter/$(am__dirstamp): @$(MKDIR_P) src/PSVIWriter @: > src/PSVIWriter/$(am__dirstamp) src/PSVIWriter/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/PSVIWriter/$(DEPDIR) @: > src/PSVIWriter/$(DEPDIR)/$(am__dirstamp) src/PSVIWriter/PSVIWriter.$(OBJEXT): src/PSVIWriter/$(am__dirstamp) \ src/PSVIWriter/$(DEPDIR)/$(am__dirstamp) src/PSVIWriter/PSVIWriterHandlers.$(OBJEXT): \ src/PSVIWriter/$(am__dirstamp) \ src/PSVIWriter/$(DEPDIR)/$(am__dirstamp) PSVIWriter$(EXEEXT): $(PSVIWriter_OBJECTS) $(PSVIWriter_DEPENDENCIES) @rm -f PSVIWriter$(EXEEXT) $(CXXLINK) $(PSVIWriter_OBJECTS) $(PSVIWriter_LDADD) $(LIBS) src/Redirect/$(am__dirstamp): @$(MKDIR_P) src/Redirect @: > src/Redirect/$(am__dirstamp) src/Redirect/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/Redirect/$(DEPDIR) @: > src/Redirect/$(DEPDIR)/$(am__dirstamp) src/Redirect/Redirect.$(OBJEXT): src/Redirect/$(am__dirstamp) \ src/Redirect/$(DEPDIR)/$(am__dirstamp) src/Redirect/RedirectHandlers.$(OBJEXT): src/Redirect/$(am__dirstamp) \ src/Redirect/$(DEPDIR)/$(am__dirstamp) Redirect$(EXEEXT): $(Redirect_OBJECTS) $(Redirect_DEPENDENCIES) @rm -f Redirect$(EXEEXT) $(CXXLINK) $(Redirect_OBJECTS) $(Redirect_LDADD) $(LIBS) src/SAX2Count/$(am__dirstamp): @$(MKDIR_P) src/SAX2Count @: > src/SAX2Count/$(am__dirstamp) src/SAX2Count/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/SAX2Count/$(DEPDIR) @: > src/SAX2Count/$(DEPDIR)/$(am__dirstamp) src/SAX2Count/SAX2Count.$(OBJEXT): src/SAX2Count/$(am__dirstamp) \ src/SAX2Count/$(DEPDIR)/$(am__dirstamp) src/SAX2Count/SAX2CountHandlers.$(OBJEXT): \ src/SAX2Count/$(am__dirstamp) \ src/SAX2Count/$(DEPDIR)/$(am__dirstamp) SAX2Count$(EXEEXT): $(SAX2Count_OBJECTS) $(SAX2Count_DEPENDENCIES) @rm -f SAX2Count$(EXEEXT) $(CXXLINK) $(SAX2Count_OBJECTS) $(SAX2Count_LDADD) $(LIBS) src/SAX2Print/$(am__dirstamp): @$(MKDIR_P) src/SAX2Print @: > src/SAX2Print/$(am__dirstamp) src/SAX2Print/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/SAX2Print/$(DEPDIR) @: > src/SAX2Print/$(DEPDIR)/$(am__dirstamp) src/SAX2Print/SAX2FilterHandlers.$(OBJEXT): \ src/SAX2Print/$(am__dirstamp) \ src/SAX2Print/$(DEPDIR)/$(am__dirstamp) src/SAX2Print/SAX2Print.$(OBJEXT): src/SAX2Print/$(am__dirstamp) \ src/SAX2Print/$(DEPDIR)/$(am__dirstamp) src/SAX2Print/SAX2PrintHandlers.$(OBJEXT): \ src/SAX2Print/$(am__dirstamp) \ src/SAX2Print/$(DEPDIR)/$(am__dirstamp) SAX2Print$(EXEEXT): $(SAX2Print_OBJECTS) $(SAX2Print_DEPENDENCIES) @rm -f SAX2Print$(EXEEXT) $(CXXLINK) $(SAX2Print_OBJECTS) $(SAX2Print_LDADD) $(LIBS) src/SAXCount/$(am__dirstamp): @$(MKDIR_P) src/SAXCount @: > src/SAXCount/$(am__dirstamp) src/SAXCount/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/SAXCount/$(DEPDIR) @: > src/SAXCount/$(DEPDIR)/$(am__dirstamp) src/SAXCount/SAXCount.$(OBJEXT): src/SAXCount/$(am__dirstamp) \ src/SAXCount/$(DEPDIR)/$(am__dirstamp) src/SAXCount/SAXCountHandlers.$(OBJEXT): src/SAXCount/$(am__dirstamp) \ src/SAXCount/$(DEPDIR)/$(am__dirstamp) SAXCount$(EXEEXT): $(SAXCount_OBJECTS) $(SAXCount_DEPENDENCIES) @rm -f SAXCount$(EXEEXT) $(CXXLINK) $(SAXCount_OBJECTS) $(SAXCount_LDADD) $(LIBS) src/SAXPrint/$(am__dirstamp): @$(MKDIR_P) src/SAXPrint @: > src/SAXPrint/$(am__dirstamp) src/SAXPrint/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/SAXPrint/$(DEPDIR) @: > src/SAXPrint/$(DEPDIR)/$(am__dirstamp) src/SAXPrint/SAXPrint.$(OBJEXT): src/SAXPrint/$(am__dirstamp) \ src/SAXPrint/$(DEPDIR)/$(am__dirstamp) src/SAXPrint/SAXPrintHandlers.$(OBJEXT): src/SAXPrint/$(am__dirstamp) \ src/SAXPrint/$(DEPDIR)/$(am__dirstamp) SAXPrint$(EXEEXT): $(SAXPrint_OBJECTS) $(SAXPrint_DEPENDENCIES) @rm -f SAXPrint$(EXEEXT) $(CXXLINK) $(SAXPrint_OBJECTS) $(SAXPrint_LDADD) $(LIBS) src/SCMPrint/$(am__dirstamp): @$(MKDIR_P) src/SCMPrint @: > src/SCMPrint/$(am__dirstamp) src/SCMPrint/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/SCMPrint/$(DEPDIR) @: > src/SCMPrint/$(DEPDIR)/$(am__dirstamp) src/SCMPrint/SCMPrint.$(OBJEXT): src/SCMPrint/$(am__dirstamp) \ src/SCMPrint/$(DEPDIR)/$(am__dirstamp) SCMPrint$(EXEEXT): $(SCMPrint_OBJECTS) $(SCMPrint_DEPENDENCIES) @rm -f SCMPrint$(EXEEXT) $(CXXLINK) $(SCMPrint_OBJECTS) $(SCMPrint_LDADD) $(LIBS) src/SEnumVal/$(am__dirstamp): @$(MKDIR_P) src/SEnumVal @: > src/SEnumVal/$(am__dirstamp) src/SEnumVal/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/SEnumVal/$(DEPDIR) @: > src/SEnumVal/$(DEPDIR)/$(am__dirstamp) src/SEnumVal/SEnumVal.$(OBJEXT): src/SEnumVal/$(am__dirstamp) \ src/SEnumVal/$(DEPDIR)/$(am__dirstamp) SEnumVal$(EXEEXT): $(SEnumVal_OBJECTS) $(SEnumVal_DEPENDENCIES) @rm -f SEnumVal$(EXEEXT) $(CXXLINK) $(SEnumVal_OBJECTS) $(SEnumVal_LDADD) $(LIBS) src/StdInParse/$(am__dirstamp): @$(MKDIR_P) src/StdInParse @: > src/StdInParse/$(am__dirstamp) src/StdInParse/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/StdInParse/$(DEPDIR) @: > src/StdInParse/$(DEPDIR)/$(am__dirstamp) src/StdInParse/StdInParse.$(OBJEXT): src/StdInParse/$(am__dirstamp) \ src/StdInParse/$(DEPDIR)/$(am__dirstamp) src/StdInParse/StdInParseHandlers.$(OBJEXT): \ src/StdInParse/$(am__dirstamp) \ src/StdInParse/$(DEPDIR)/$(am__dirstamp) StdInParse$(EXEEXT): $(StdInParse_OBJECTS) $(StdInParse_DEPENDENCIES) @rm -f StdInParse$(EXEEXT) $(CXXLINK) $(StdInParse_OBJECTS) $(StdInParse_LDADD) $(LIBS) src/XInclude/$(am__dirstamp): @$(MKDIR_P) src/XInclude @: > src/XInclude/$(am__dirstamp) src/XInclude/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/XInclude/$(DEPDIR) @: > src/XInclude/$(DEPDIR)/$(am__dirstamp) src/XInclude/XInclude.$(OBJEXT): src/XInclude/$(am__dirstamp) \ src/XInclude/$(DEPDIR)/$(am__dirstamp) XInclude$(EXEEXT): $(XInclude_OBJECTS) $(XInclude_DEPENDENCIES) @rm -f XInclude$(EXEEXT) $(CXXLINK) $(XInclude_OBJECTS) $(XInclude_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) -rm -f src/CreateDOMDocument/CreateDOMDocument.$(OBJEXT) -rm -f src/DOMCount/DOMCount.$(OBJEXT) -rm -f src/DOMPrint/DOMPrint.$(OBJEXT) -rm -f src/DOMPrint/DOMPrintErrorHandler.$(OBJEXT) -rm -f src/DOMPrint/DOMPrintFilter.$(OBJEXT) -rm -f src/DOMPrint/DOMTreeErrorReporter.$(OBJEXT) -rm -f src/EnumVal/EnumVal.$(OBJEXT) -rm -f src/MemParse/MemParse.$(OBJEXT) -rm -f src/MemParse/MemParseHandlers.$(OBJEXT) -rm -f src/PParse/PParse.$(OBJEXT) -rm -f src/PParse/PParseHandlers.$(OBJEXT) -rm -f src/PSVIWriter/PSVIWriter.$(OBJEXT) -rm -f src/PSVIWriter/PSVIWriterHandlers.$(OBJEXT) -rm -f src/Redirect/Redirect.$(OBJEXT) -rm -f src/Redirect/RedirectHandlers.$(OBJEXT) -rm -f src/SAX2Count/SAX2Count.$(OBJEXT) -rm -f src/SAX2Count/SAX2CountHandlers.$(OBJEXT) -rm -f src/SAX2Print/SAX2FilterHandlers.$(OBJEXT) -rm -f src/SAX2Print/SAX2Print.$(OBJEXT) -rm -f src/SAX2Print/SAX2PrintHandlers.$(OBJEXT) -rm -f src/SAXCount/SAXCount.$(OBJEXT) -rm -f src/SAXCount/SAXCountHandlers.$(OBJEXT) -rm -f src/SAXPrint/SAXPrint.$(OBJEXT) -rm -f src/SAXPrint/SAXPrintHandlers.$(OBJEXT) -rm -f src/SCMPrint/SCMPrint.$(OBJEXT) -rm -f src/SEnumVal/SEnumVal.$(OBJEXT) -rm -f src/StdInParse/StdInParse.$(OBJEXT) -rm -f src/StdInParse/StdInParseHandlers.$(OBJEXT) -rm -f src/XInclude/XInclude.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@src/CreateDOMDocument/$(DEPDIR)/CreateDOMDocument.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/DOMCount/$(DEPDIR)/DOMCount.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/DOMPrint/$(DEPDIR)/DOMPrint.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/DOMPrint/$(DEPDIR)/DOMPrintErrorHandler.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/DOMPrint/$(DEPDIR)/DOMPrintFilter.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/DOMPrint/$(DEPDIR)/DOMTreeErrorReporter.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/EnumVal/$(DEPDIR)/EnumVal.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/MemParse/$(DEPDIR)/MemParse.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/MemParse/$(DEPDIR)/MemParseHandlers.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/PParse/$(DEPDIR)/PParse.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/PParse/$(DEPDIR)/PParseHandlers.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/PSVIWriter/$(DEPDIR)/PSVIWriter.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/PSVIWriter/$(DEPDIR)/PSVIWriterHandlers.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/Redirect/$(DEPDIR)/Redirect.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/Redirect/$(DEPDIR)/RedirectHandlers.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/SAX2Count/$(DEPDIR)/SAX2Count.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/SAX2Count/$(DEPDIR)/SAX2CountHandlers.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/SAX2Print/$(DEPDIR)/SAX2FilterHandlers.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/SAX2Print/$(DEPDIR)/SAX2Print.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/SAX2Print/$(DEPDIR)/SAX2PrintHandlers.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/SAXCount/$(DEPDIR)/SAXCount.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/SAXCount/$(DEPDIR)/SAXCountHandlers.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/SAXPrint/$(DEPDIR)/SAXPrint.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/SAXPrint/$(DEPDIR)/SAXPrintHandlers.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/SCMPrint/$(DEPDIR)/SCMPrint.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/SEnumVal/$(DEPDIR)/SEnumVal.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/StdInParse/$(DEPDIR)/StdInParse.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/StdInParse/$(DEPDIR)/StdInParseHandlers.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/XInclude/$(DEPDIR)/XInclude.Po@am__quote@ @XERCES_PRETTY_MAKE_FALSE@.cpp.o: @am__fastdepCXX_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< @XERCES_PRETTY_MAKE_FALSE@.cpp.obj: @am__fastdepCXX_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` @XERCES_PRETTY_MAKE_FALSE@.cpp.lo: @am__fastdepCXX_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -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) set x; \ 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; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) 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)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__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 "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$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 $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(bindir)"; 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) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -rm -f src/CreateDOMDocument/$(DEPDIR)/$(am__dirstamp) -rm -f src/CreateDOMDocument/$(am__dirstamp) -rm -f src/DOMCount/$(DEPDIR)/$(am__dirstamp) -rm -f src/DOMCount/$(am__dirstamp) -rm -f src/DOMPrint/$(DEPDIR)/$(am__dirstamp) -rm -f src/DOMPrint/$(am__dirstamp) -rm -f src/EnumVal/$(DEPDIR)/$(am__dirstamp) -rm -f src/EnumVal/$(am__dirstamp) -rm -f src/MemParse/$(DEPDIR)/$(am__dirstamp) -rm -f src/MemParse/$(am__dirstamp) -rm -f src/PParse/$(DEPDIR)/$(am__dirstamp) -rm -f src/PParse/$(am__dirstamp) -rm -f src/PSVIWriter/$(DEPDIR)/$(am__dirstamp) -rm -f src/PSVIWriter/$(am__dirstamp) -rm -f src/Redirect/$(DEPDIR)/$(am__dirstamp) -rm -f src/Redirect/$(am__dirstamp) -rm -f src/SAX2Count/$(DEPDIR)/$(am__dirstamp) -rm -f src/SAX2Count/$(am__dirstamp) -rm -f src/SAX2Print/$(DEPDIR)/$(am__dirstamp) -rm -f src/SAX2Print/$(am__dirstamp) -rm -f src/SAXCount/$(DEPDIR)/$(am__dirstamp) -rm -f src/SAXCount/$(am__dirstamp) -rm -f src/SAXPrint/$(DEPDIR)/$(am__dirstamp) -rm -f src/SAXPrint/$(am__dirstamp) -rm -f src/SCMPrint/$(DEPDIR)/$(am__dirstamp) -rm -f src/SCMPrint/$(am__dirstamp) -rm -f src/SEnumVal/$(DEPDIR)/$(am__dirstamp) -rm -f src/SEnumVal/$(am__dirstamp) -rm -f src/StdInParse/$(DEPDIR)/$(am__dirstamp) -rm -f src/StdInParse/$(am__dirstamp) -rm -f src/XInclude/$(DEPDIR)/$(am__dirstamp) -rm -f src/XInclude/$(am__dirstamp) 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-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -rf src/CreateDOMDocument/$(DEPDIR) src/DOMCount/$(DEPDIR) src/DOMPrint/$(DEPDIR) src/EnumVal/$(DEPDIR) src/MemParse/$(DEPDIR) src/PParse/$(DEPDIR) src/PSVIWriter/$(DEPDIR) src/Redirect/$(DEPDIR) src/SAX2Count/$(DEPDIR) src/SAX2Print/$(DEPDIR) src/SAXCount/$(DEPDIR) src/SAXPrint/$(DEPDIR) src/SCMPrint/$(DEPDIR) src/SEnumVal/$(DEPDIR) src/StdInParse/$(DEPDIR) src/XInclude/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf src/CreateDOMDocument/$(DEPDIR) src/DOMCount/$(DEPDIR) src/DOMPrint/$(DEPDIR) src/EnumVal/$(DEPDIR) src/MemParse/$(DEPDIR) src/PParse/$(DEPDIR) src/PSVIWriter/$(DEPDIR) src/Redirect/$(DEPDIR) src/SAX2Count/$(DEPDIR) src/SAX2Print/$(DEPDIR) src/SAXCount/$(DEPDIR) src/SAXPrint/$(DEPDIR) src/SCMPrint/$(DEPDIR) src/SEnumVal/$(DEPDIR) src/StdInParse/$(DEPDIR) src/XInclude/$(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-binPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ clean-generic 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-binPROGRAMS 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 \ uninstall-binPROGRAMS # # Override generated rules to provide prettier make rules # # Warning: If Automake changes sufficiently, these rules may need to # be regenerated from the (new) default output of Automake # @XERCES_PRETTY_MAKE_TRUE@.cpp.o: @XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_TRUE@ @depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`; \ @XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$$depbase.Tpo" -c -o $@ $<; \ @XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_TRUE@ then $(am__mv) "$$depbase.Tpo" "$$depbase.Po"; else rm -f "$$depbase.Tpo"; exit 1; fi @XERCES_PRETTY_MAKE_TRUE@@AMDEP_TRUE@@am__fastdepCXX_FALSE@ @source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @XERCES_PRETTY_MAKE_TRUE@@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< @XERCES_PRETTY_MAKE_TRUE@.cpp.obj: @XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_TRUE@ @depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`; \ @XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$$depbase.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ @XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_TRUE@ then $(am__mv) "$$depbase.Tpo" "$$depbase.Po"; else rm -f "$$depbase.Tpo"; exit 1; fi @XERCES_PRETTY_MAKE_TRUE@@AMDEP_TRUE@@am__fastdepCXX_FALSE@ @source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @XERCES_PRETTY_MAKE_TRUE@@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` @XERCES_PRETTY_MAKE_TRUE@.cpp.lo: @XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_TRUE@ @depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`; \ @XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$$depbase.Tpo" -c -o $@ $<; \ @XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_TRUE@ then $(am__mv) "$$depbase.Tpo" "$$depbase.Plo"; else rm -f "$$depbase.Tpo"; exit 1; fi @XERCES_PRETTY_MAKE_TRUE@@AMDEP_TRUE@@am__fastdepCXX_FALSE@ @source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @XERCES_PRETTY_MAKE_TRUE@@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< # 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: xerces-c-3.1.1/samples/data/0000755000175000017500000000000011363617315014626 5ustar borisborisxerces-c-3.1.1/samples/data/personal.dtd0000644000175000017500000000066107052355571017154 0ustar borisboris xerces-c-3.1.1/samples/data/long.xml0000644000175000017500000020032311064072071016277 0ustar borisboris89.63xerces-c-3.1.1/samples/data/redirect.dtd0000644000175000017500000000066007143640516017126 0ustar borisboris xerces-c-3.1.1/samples/data/personal.xml0000644000175000017500000000222407052355571017176 0ustar borisboris Boss Big chief@foo.com Worker One one@foo.com Worker Two two@foo.com Worker Three three@foo.com Worker Four four@foo.com Worker Five five@foo.com xerces-c-3.1.1/samples/data/personal.xsd0000644000175000017500000000620607642514613017177 0ustar borisboris The schemaLocation of the relevant file is "http://www.w3.org/2001/xml.xsd"; however, we don't want to assume people are always connected to the 'net when playing with this file. xerces-c-3.1.1/samples/data/personal-schema.xml0000644000175000017500000000265607543656555020460 0ustar borisboris Boss Big chief@foo.com Worker One one@foo.com Worker Two two@foo.com Worker Three three@foo.com Worker Four four@foo.com Worker Five five@foo.com xerces-c-3.1.1/samples/src/0000755000175000017500000000000011363617315014504 5ustar borisborisxerces-c-3.1.1/samples/src/SAXPrint/0000755000175000017500000000000011363617315016154 5ustar borisborisxerces-c-3.1.1/samples/src/SAXPrint/SAXPrint.cpp0000644000175000017500000002163211274567126020341 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SAXPrint.cpp 833057 2009-11-05 15:25:10Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include "SAXPrint.hpp" #include // --------------------------------------------------------------------------- // Local data // // doNamespaces // Indicates whether namespace processing should be enabled or not. // Defaults to disabled. // // doSchema // Indicates whether schema processing should be enabled or not. // Defaults to disabled. // // schemaFullChecking // Indicates whether full schema constraint checking should be enabled or not. // Defaults to disabled. // // encodingName // The encoding we are to output in. If not set on the command line, // then it is defaulted to LATIN1. // // xmlFile // The path to the file to parser. Set via command line. // // valScheme // Indicates what validation scheme to use. It defaults to 'auto', but // can be set via the -v= command. // --------------------------------------------------------------------------- static bool doNamespaces = false; static bool doSchema = false; static bool schemaFullChecking = false; static const char* encodingName = "LATIN1"; static XMLFormatter::UnRepFlags unRepFlags = XMLFormatter::UnRep_CharRef; static char* xmlFile = 0; static SAXParser::ValSchemes valScheme = SAXParser::Val_Auto; // --------------------------------------------------------------------------- // Local helper methods // --------------------------------------------------------------------------- static void usage() { XERCES_STD_QUALIFIER cout << "\nUsage:\n" " SAXPrint [options] \n\n" "This program invokes the SAX Parser, and then prints the\n" "data returned by the various SAX handlers for the specified\n" "XML file.\n\n" "Options:\n" " -u=xxx Handle unrepresentable chars [fail | rep | ref*].\n" " -v=xxx Validation scheme [always | never | auto*].\n" " -n Enable namespace processing.\n" " -s Enable schema processing.\n" " -f Enable full schema constraint checking.\n" " -x=XXX Use a particular encoding for output (LATIN1*).\n" " -? Show this help.\n\n" " * = Default if not provided explicitly.\n\n" "The parser has intrinsic support for the following encodings:\n" " UTF-8, US-ASCII, ISO8859-1, UTF-16[BL]E, UCS-4[BL]E,\n" " WINDOWS-1252, IBM1140, IBM037, IBM1047.\n" << XERCES_STD_QUALIFIER endl; } // --------------------------------------------------------------------------- // Program entry point // --------------------------------------------------------------------------- int main(int argC, char* argV[]) { // Initialize the XML4C2 system try { XMLPlatformUtils::Initialize(); } catch (const XMLException& toCatch) { XERCES_STD_QUALIFIER cerr << "Error during initialization! :\n" << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl; return 1; } // Check command line and extract arguments. if (argC < 2) { usage(); XMLPlatformUtils::Terminate(); return 1; } int parmInd; for (parmInd = 1; parmInd < argC; parmInd++) { // Break out on first parm not starting with a dash if (argV[parmInd][0] != '-') break; // Watch for special case help request if (!strcmp(argV[parmInd], "-?")) { usage(); XMLPlatformUtils::Terminate(); return 2; } else if (!strncmp(argV[parmInd], "-v=", 3) || !strncmp(argV[parmInd], "-V=", 3)) { const char* const parm = &argV[parmInd][3]; if (!strcmp(parm, "never")) valScheme = SAXParser::Val_Never; else if (!strcmp(parm, "auto")) valScheme = SAXParser::Val_Auto; else if (!strcmp(parm, "always")) valScheme = SAXParser::Val_Always; else { XERCES_STD_QUALIFIER cerr << "Unknown -v= value: " << parm << XERCES_STD_QUALIFIER endl; XMLPlatformUtils::Terminate(); return 2; } } else if (!strcmp(argV[parmInd], "-n") || !strcmp(argV[parmInd], "-N")) { doNamespaces = true; } else if (!strcmp(argV[parmInd], "-s") || !strcmp(argV[parmInd], "-S")) { doSchema = true; } else if (!strcmp(argV[parmInd], "-f") || !strcmp(argV[parmInd], "-F")) { schemaFullChecking = true; } else if (!strncmp(argV[parmInd], "-x=", 3) || !strncmp(argV[parmInd], "-X=", 3)) { // Get out the encoding name encodingName = &argV[parmInd][3]; } else if (!strncmp(argV[parmInd], "-u=", 3) || !strncmp(argV[parmInd], "-U=", 3)) { const char* const parm = &argV[parmInd][3]; if (!strcmp(parm, "fail")) unRepFlags = XMLFormatter::UnRep_Fail; else if (!strcmp(parm, "rep")) unRepFlags = XMLFormatter::UnRep_Replace; else if (!strcmp(parm, "ref")) unRepFlags = XMLFormatter::UnRep_CharRef; else { XERCES_STD_QUALIFIER cerr << "Unknown -u= value: " << parm << XERCES_STD_QUALIFIER endl; XMLPlatformUtils::Terminate(); return 2; } } else { XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[parmInd] << "', ignoring it\n" << XERCES_STD_QUALIFIER endl; } } // // And now we have to have only one parameter left and it must be // the file name. // if (parmInd + 1 != argC) { usage(); XMLPlatformUtils::Terminate(); return 1; } xmlFile = argV[parmInd]; int errorCount = 0; // // Create a SAX parser object. Then, according to what we were told on // the command line, set it to validate or not. // SAXParser* parser = new SAXParser; parser->setValidationScheme(valScheme); parser->setDoNamespaces(doNamespaces); parser->setDoSchema(doSchema); parser->setHandleMultipleImports (true); parser->setValidationSchemaFullChecking(schemaFullChecking); // // Create the handler object and install it as the document and error // handler for the parser-> Then parse the file and catch any exceptions // that propogate out // int errorCode = 0; try { SAXPrintHandlers handler(encodingName, unRepFlags); parser->setDocumentHandler(&handler); parser->setErrorHandler(&handler); parser->parse(xmlFile); errorCount = parser->getErrorCount(); } catch (const OutOfMemoryException&) { XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl; errorCode = 5; } catch (const XMLException& toCatch) { XERCES_STD_QUALIFIER cerr << "\nAn error occurred\n Error: " << StrX(toCatch.getMessage()) << "\n" << XERCES_STD_QUALIFIER endl; errorCode = 4; } if(errorCode) { XMLPlatformUtils::Terminate(); return errorCode; } // // Delete the parser itself. Must be done prior to calling Terminate, below. // delete parser; // And call the termination method XMLPlatformUtils::Terminate(); if (errorCount > 0) return 4; else return 0; } xerces-c-3.1.1/samples/src/SAXPrint/SAXPrintHandlers.hpp0000644000175000017500000000756210647424627022036 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SAXPrintHandlers.hpp 557282 2007-07-18 14:54:15Z amassari $ */ #include #include XERCES_CPP_NAMESPACE_USE class SAXPrintHandlers : public HandlerBase, private XMLFormatTarget { public: // ----------------------------------------------------------------------- // Constructors // ----------------------------------------------------------------------- SAXPrintHandlers ( const char* const encodingName , const XMLFormatter::UnRepFlags unRepFlags ); ~SAXPrintHandlers(); // ----------------------------------------------------------------------- // Implementations of the format target interface // ----------------------------------------------------------------------- void writeChars ( const XMLByte* const toWrite ); virtual void writeChars ( const XMLByte* const toWrite , const XMLSize_t count , XMLFormatter* const formatter ); // ----------------------------------------------------------------------- // Implementations of the SAX DocumentHandler interface // ----------------------------------------------------------------------- void endDocument(); void endElement(const XMLCh* const name); void characters(const XMLCh* const chars, const XMLSize_t length); void ignorableWhitespace ( const XMLCh* const chars , const XMLSize_t length ); void processingInstruction ( const XMLCh* const target , const XMLCh* const data ); void startDocument(); void startElement(const XMLCh* const name, AttributeList& attributes); // ----------------------------------------------------------------------- // Implementations of the SAX ErrorHandler interface // ----------------------------------------------------------------------- void warning(const SAXParseException& exc); void error(const SAXParseException& exc); void fatalError(const SAXParseException& exc); // ----------------------------------------------------------------------- // Implementation of the SAX DTDHandler interface // ----------------------------------------------------------------------- void notationDecl ( const XMLCh* const name , const XMLCh* const publicId , const XMLCh* const systemId ); void unparsedEntityDecl ( const XMLCh* const name , const XMLCh* const publicId , const XMLCh* const systemId , const XMLCh* const notationName ); private : // ----------------------------------------------------------------------- // Private data members // // fFormatter // This is the formatter object that is used to output the data // to the target. It is set up to format to the standard output // stream. // ----------------------------------------------------------------------- XMLFormatter fFormatter; }; xerces-c-3.1.1/samples/src/SAXPrint/SAXPrint.hpp0000644000175000017500000000522410523637166020343 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SAXPrint.hpp 471735 2006-11-06 13:53:58Z amassari $ */ // --------------------------------------------------------------------------- // Includes for all the program files to see // --------------------------------------------------------------------------- #include #if defined(XERCES_NEW_IOSTREAMS) #include #else #include #endif #include #include "SAXPrintHandlers.hpp" // --------------------------------------------------------------------------- // This is a simple class that lets us do easy (though not terribly efficient) // trancoding of XMLCh data to local code page for display. // --------------------------------------------------------------------------- class StrX { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- StrX(const XMLCh* const toTranscode) { // Call the private transcoding method fLocalForm = XMLString::transcode(toTranscode); } ~StrX() { XMLString::release(&fLocalForm); } // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const char* localForm() const { return fLocalForm; } private : // ----------------------------------------------------------------------- // Private data members // // fLocalForm // This is the local code page form of the string. // ----------------------------------------------------------------------- char* fLocalForm; }; inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump) { target << toDump.localForm(); return target; } xerces-c-3.1.1/samples/src/SAXPrint/SAXPrintHandlers.cpp0000644000175000017500000002004011037122704021774 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SAXPrintHandlers.cpp 676911 2008-07-15 13:27:32Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include "SAXPrint.hpp" // --------------------------------------------------------------------------- // Local const data // // Note: This is the 'safe' way to do these strings. If you compiler supports // L"" style strings, and portability is not a concern, you can use // those types constants directly. // --------------------------------------------------------------------------- static const XMLCh gEndElement[] = { chOpenAngle, chForwardSlash, chNull }; static const XMLCh gEndPI[] = { chQuestion, chCloseAngle, chNull }; static const XMLCh gStartPI[] = { chOpenAngle, chQuestion, chNull }; static const XMLCh gXMLDecl1[] = { chOpenAngle, chQuestion, chLatin_x, chLatin_m, chLatin_l , chSpace, chLatin_v, chLatin_e, chLatin_r, chLatin_s, chLatin_i , chLatin_o, chLatin_n, chEqual, chDoubleQuote, chDigit_1, chPeriod , chDigit_0, chDoubleQuote, chSpace, chLatin_e, chLatin_n, chLatin_c , chLatin_o, chLatin_d, chLatin_i, chLatin_n, chLatin_g, chEqual , chDoubleQuote, chNull }; static const XMLCh gXMLDecl2[] = { chDoubleQuote, chQuestion, chCloseAngle , chLF, chNull }; // --------------------------------------------------------------------------- // SAXPrintHandlers: Constructors and Destructor // --------------------------------------------------------------------------- SAXPrintHandlers::SAXPrintHandlers( const char* const encodingName , const XMLFormatter::UnRepFlags unRepFlags) : fFormatter ( encodingName , 0 , this , XMLFormatter::NoEscapes , unRepFlags ) { // // Go ahead and output an XML Decl with our known encoding. This // is not the best answer, but its the best we can do until we // have SAX2 support. // fFormatter << gXMLDecl1 << fFormatter.getEncodingName() << gXMLDecl2; } SAXPrintHandlers::~SAXPrintHandlers() { } // --------------------------------------------------------------------------- // SAXPrintHandlers: Overrides of the output formatter target interface // --------------------------------------------------------------------------- void SAXPrintHandlers::writeChars(const XMLByte* const /* toWrite */) { } void SAXPrintHandlers::writeChars(const XMLByte* const toWrite, const XMLSize_t count, XMLFormatter* const /* formatter */) { // For this one, just dump them to the standard output // Surprisingly, Solaris was the only platform on which // required the char* cast to print out the string correctly. // Without the cast, it was printing the pointer value in hex. // Quite annoying, considering every other platform printed // the string with the explicit cast to char* below. XERCES_STD_QUALIFIER cout.write((char *) toWrite, (int) count); XERCES_STD_QUALIFIER cout.flush(); } // --------------------------------------------------------------------------- // SAXPrintHandlers: Overrides of the SAX ErrorHandler interface // --------------------------------------------------------------------------- void SAXPrintHandlers::error(const SAXParseException& e) { XERCES_STD_QUALIFIER cerr << "\nError at file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "\n Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; } void SAXPrintHandlers::fatalError(const SAXParseException& e) { XERCES_STD_QUALIFIER cerr << "\nFatal Error at file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "\n Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; } void SAXPrintHandlers::warning(const SAXParseException& e) { XERCES_STD_QUALIFIER cerr << "\nWarning at file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "\n Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; } // --------------------------------------------------------------------------- // SAXPrintHandlers: Overrides of the SAX DTDHandler interface // --------------------------------------------------------------------------- void SAXPrintHandlers::unparsedEntityDecl(const XMLCh* const /* name */ , const XMLCh* const /* publicId */ , const XMLCh* const /* systemId */ , const XMLCh* const /* notationName */) { // Not used at this time } void SAXPrintHandlers::notationDecl(const XMLCh* const /* name */ , const XMLCh* const /* publicId */ , const XMLCh* const /* systemId */) { // Not used at this time } // --------------------------------------------------------------------------- // SAXPrintHandlers: Overrides of the SAX DocumentHandler interface // --------------------------------------------------------------------------- void SAXPrintHandlers::characters(const XMLCh* const chars , const XMLSize_t length) { fFormatter.formatBuf(chars, length, XMLFormatter::CharEscapes); } void SAXPrintHandlers::endDocument() { } void SAXPrintHandlers::endElement(const XMLCh* const name) { // No escapes are legal here fFormatter << XMLFormatter::NoEscapes << gEndElement << name << chCloseAngle; } void SAXPrintHandlers::ignorableWhitespace( const XMLCh* const chars ,const XMLSize_t length) { fFormatter.formatBuf(chars, length, XMLFormatter::NoEscapes); } void SAXPrintHandlers::processingInstruction(const XMLCh* const target , const XMLCh* const data) { fFormatter << XMLFormatter::NoEscapes << gStartPI << target; if (data) fFormatter << chSpace << data; fFormatter << XMLFormatter::NoEscapes << gEndPI; } void SAXPrintHandlers::startDocument() { } void SAXPrintHandlers::startElement(const XMLCh* const name , AttributeList& attributes) { // The name has to be representable without any escapes fFormatter << XMLFormatter::NoEscapes << chOpenAngle << name; XMLSize_t len = attributes.getLength(); for (XMLSize_t index = 0; index < len; index++) { // // Again the name has to be completely representable. But the // attribute can have refs and requires the attribute style // escaping. // fFormatter << XMLFormatter::NoEscapes << chSpace << attributes.getName(index) << chEqual << chDoubleQuote << XMLFormatter::AttrEscapes << attributes.getValue(index) << XMLFormatter::NoEscapes << chDoubleQuote; } fFormatter << chCloseAngle; } xerces-c-3.1.1/samples/src/SCMPrint/0000755000175000017500000000000011363617315016143 5ustar borisborisxerces-c-3.1.1/samples/src/SCMPrint/SCMPrint.cpp0000644000175000017500000005264011327536320020311 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SCMPrint.cpp 903149 2010-01-26 09:58:40Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include #include #include #if defined(XERCES_NEW_IOSTREAMS) #include #include #else #include #include #endif #include #include #include #include XERCES_CPP_NAMESPACE_USE // --------------------------------------------------------------------------- // Forward references // --------------------------------------------------------------------------- static void usage(); void processElements(XSNamedMap *xsElements); void processTypeDefinitions(XSNamedMap *xsTypeDefs); void printBasic(XSObject *xsObject, const char *type); void printCompositorTypeConnector(XSModelGroup::COMPOSITOR_TYPE type); void processSimpleTypeDefinition(XSSimpleTypeDefinition * xsSimpleTypeDef); void processComplexTypeDefinition(XSComplexTypeDefinition *xsComplexTypeDef); void processParticle(XSParticle *xsParticle); // --------------------------------------------------------------------------- // This is a simple class that lets us do easy (though not terribly efficient) // trancoding of XMLCh data to local code page for display. // --------------------------------------------------------------------------- class StrX { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- StrX(const XMLCh* const toTranscode) { // Call the private transcoding method fLocalForm = XMLString::transcode(toTranscode); } ~StrX() { XMLString::release(&fLocalForm); } // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const char* localForm() const { return fLocalForm; } private : // ----------------------------------------------------------------------- // Private data members // // fLocalForm // This is the local code page form of the string. // ----------------------------------------------------------------------- char* fLocalForm; }; inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump) { target << toDump.localForm(); return target; } class SCMPrintHandler : public DefaultHandler { public: // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- SCMPrintHandler(); ~SCMPrintHandler(); bool getSawErrors() const { return fSawErrors; } void warning(const SAXParseException& exc); void error(const SAXParseException& exc); void fatalError(const SAXParseException& exc); void resetErrors(); private: bool fSawErrors; }; SCMPrintHandler::SCMPrintHandler() : fSawErrors(false) { } SCMPrintHandler::~SCMPrintHandler() { } // --------------------------------------------------------------------------- // SCMPrintHandler: Overrides of the SAX ErrorHandler interface // --------------------------------------------------------------------------- void SCMPrintHandler::error(const SAXParseException& e) { fSawErrors = true; XERCES_STD_QUALIFIER cerr << "\nError at file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "\n Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; } void SCMPrintHandler::fatalError(const SAXParseException& e) { fSawErrors = true; XERCES_STD_QUALIFIER cerr << "\nFatal Error at file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "\n Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; } void SCMPrintHandler::warning(const SAXParseException& e) { XERCES_STD_QUALIFIER cerr << "\nWarning at file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "\n Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; } void SCMPrintHandler::resetErrors() { fSawErrors = false; } // --------------------------------------------------------------------------- // Local helper methods // --------------------------------------------------------------------------- static void usage() { XERCES_STD_QUALIFIER cout << "\nUsage:\n" " SCMPrint [options] \n\n" "This program parses XML Schema file(s), to show how one can\n" "access the Schema Content Model information.\n\n" "Options:\n" " -f Enable full schema constraint checking processing. Defaults to off.\n" " -l Indicate the input file is a List File that has a list of XSD files.\n" " Default to off (Input file is a XSD file).\n" " -? Show this help.\n\n" << XERCES_STD_QUALIFIER endl; } // --------------------------------------------------------------------------- // Program entry point // --------------------------------------------------------------------------- int main(int argC, char* argV[]) { // Check command line and extract arguments. if (argC < 2) { usage(); return 1; } // cannot return out of catch-blocks lest exception-destruction // result in calls to destroyed memory handler! int errorCode = 0; try { XMLPlatformUtils::Initialize(); } catch (const XMLException& toCatch) { XERCES_STD_QUALIFIER cerr << "Error during initialization! Message:\n" << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl; errorCode = 2; } if(errorCode) { XMLPlatformUtils::Terminate(); return errorCode; } bool doList = false; bool schemaFullChecking = false; const char* xsdFile = 0; int argInd; for (argInd = 1; argInd < argC; argInd++) { // Break out on first parm not starting with a dash if (argV[argInd][0] != '-') break; // Watch for special case help request if (!strcmp(argV[argInd], "-?")) { usage(); return 1; } else if (!strcmp(argV[argInd], "-l") || !strcmp(argV[argInd], "-L")) { doList = true; } else if (!strcmp(argV[argInd], "-f") || !strcmp(argV[argInd], "-F")) { schemaFullChecking = true; } else { XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[argInd] << "', ignoring it\n" << XERCES_STD_QUALIFIER endl; } } // // There should be only one and only one parameter left, and that // should be the file name. // if (argInd != argC - 1) { usage(); return 1; } XMLGrammarPool *grammarPool = 0; SAX2XMLReader* parser = 0; try { grammarPool = new XMLGrammarPoolImpl(XMLPlatformUtils::fgMemoryManager); parser = XMLReaderFactory::createXMLReader(XMLPlatformUtils::fgMemoryManager, grammarPool); parser->setFeature(XMLUni::fgSAX2CoreNameSpaces, true); parser->setFeature(XMLUni::fgXercesSchema, true); parser->setFeature(XMLUni::fgXercesHandleMultipleImports, true); parser->setFeature(XMLUni::fgXercesSchemaFullChecking, schemaFullChecking); parser->setFeature(XMLUni::fgSAX2CoreNameSpacePrefixes, false); parser->setFeature(XMLUni::fgSAX2CoreValidation, true); parser->setFeature(XMLUni::fgXercesDynamic, true); parser->setProperty(XMLUni::fgXercesScannerName, (void *)XMLUni::fgSGXMLScanner); SCMPrintHandler handler; parser->setErrorHandler(&handler); bool more = true; bool parsedOneSchemaOkay = false; XERCES_STD_QUALIFIER ifstream fin; // the input is a list file if (doList) fin.open(argV[argInd]); if (fin.fail()) { XERCES_STD_QUALIFIER cerr <<"Cannot open the list file: " << argV[argInd] << XERCES_STD_QUALIFIER endl; return 3; } while (more) { char fURI[1000]; //initialize the array to zeros memset(fURI,0,sizeof(fURI)); if (doList) { if (! fin.eof() ) { fin.getline (fURI, sizeof(fURI)); if (!*fURI) continue; else { xsdFile = fURI; XERCES_STD_QUALIFIER cerr << "==Parsing== " << xsdFile << XERCES_STD_QUALIFIER endl; } } else break; } else { xsdFile = argV[argInd]; more = false; } parser->loadGrammar(xsdFile, Grammar::SchemaGrammarType, true); if (handler.getSawErrors()) { handler.resetErrors(); } else { parsedOneSchemaOkay = true; } } if (parsedOneSchemaOkay) { XERCES_STD_QUALIFIER cout << "********** Printing out information from Schema **********" << "\n\n"; bool updatedXSModel; XSModel *xsModel = grammarPool->getXSModel(updatedXSModel); if (xsModel) { StringList *namespaces = xsModel->getNamespaces(); for (unsigned i = 0; i < namespaces->size(); i++) { XERCES_STD_QUALIFIER cout << "Processing Namespace: "; const XMLCh *nameSpace = namespaces->elementAt(i); if (nameSpace && *nameSpace) XERCES_STD_QUALIFIER cout << StrX(nameSpace); XERCES_STD_QUALIFIER cout << "\n============================================" << XERCES_STD_QUALIFIER endl << XERCES_STD_QUALIFIER endl; processElements(xsModel->getComponentsByNamespace(XSConstants::ELEMENT_DECLARATION, nameSpace)); processTypeDefinitions(xsModel->getComponentsByNamespace(XSConstants::TYPE_DEFINITION, nameSpace)); } } else { XERCES_STD_QUALIFIER cout << "No XSModel to print" << "\n\n"; } } else { XERCES_STD_QUALIFIER cout << "Did not parse a schema document cleanly so not printing Schema for Schema XSModel information"; } XERCES_STD_QUALIFIER cout << XERCES_STD_QUALIFIER endl; } catch (const OutOfMemoryException&) { XERCES_STD_QUALIFIER cerr << "OutOfMemoryException during parsing: '" << xsdFile << "'\n" << XERCES_STD_QUALIFIER endl; errorCode = 6; } catch (const XMLException& e) { XERCES_STD_QUALIFIER cerr << "\nError during parsing: '" << xsdFile << "'\n" << "Exception message is: \n" << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; errorCode = 4; } catch (...) { XERCES_STD_QUALIFIER cerr << "\nUnexpected exception during parsing: '" << xsdFile << "'\n" << XERCES_STD_QUALIFIER endl; errorCode = 5; } delete parser; delete grammarPool; XMLPlatformUtils::Terminate(); return errorCode; } void printBasic(XSObject *xsObject, const char *type) { XERCES_STD_QUALIFIER cout << "Name:\t\t\t"; const XMLCh *nameSpace = xsObject->getNamespace(); if (nameSpace && *nameSpace) { XERCES_STD_QUALIFIER cout << StrX(nameSpace) << ", "; } XERCES_STD_QUALIFIER cout << StrX(xsObject->getName()) << "\n"; XERCES_STD_QUALIFIER cout << "Component Type:\t" << type << XERCES_STD_QUALIFIER endl; } void processElements(XSNamedMap *xsElements) { if (!xsElements || xsElements->getLength() == 0) { XERCES_STD_QUALIFIER cout << "no elements\n\n" << XERCES_STD_QUALIFIER endl; return; } for (XMLSize_t i=0; i < xsElements->getLength(); i++) { XSElementDeclaration *xsElement = (XSElementDeclaration *)xsElements->item(i); printBasic(xsElement, "Element"); // Content Model XSTypeDefinition *xsTypeDef = xsElement->getTypeDefinition(); XERCES_STD_QUALIFIER cout << "Content Model" << "\n"; XERCES_STD_QUALIFIER cout << "\tType:\t"; if (xsTypeDef->getTypeCategory() == XSTypeDefinition::SIMPLE_TYPE) { XERCES_STD_QUALIFIER cout << "Simple\n"; } else { XERCES_STD_QUALIFIER cout << "Complex\n"; } XERCES_STD_QUALIFIER cout << "\tName:\t" << StrX(xsTypeDef->getName()) << "\n"; XERCES_STD_QUALIFIER cout << "\n--------------------------------------------" << XERCES_STD_QUALIFIER endl; } } void processSimpleTypeDefinition(XSSimpleTypeDefinition * xsSimpleTypeDef) { XSTypeDefinition *xsBaseTypeDef = xsSimpleTypeDef->getBaseType(); XERCES_STD_QUALIFIER cout << "Base:\t\t\t"; XERCES_STD_QUALIFIER cout << StrX(xsBaseTypeDef->getName()) << XERCES_STD_QUALIFIER endl; int facets = xsSimpleTypeDef->getDefinedFacets(); if (facets) { XERCES_STD_QUALIFIER cout << "Facets:\n"; if (facets & XSSimpleTypeDefinition::FACET_LENGTH) XERCES_STD_QUALIFIER cout << "\tLength:\t\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_LENGTH)) << XERCES_STD_QUALIFIER endl; if (facets & XSSimpleTypeDefinition::FACET_MINLENGTH) XERCES_STD_QUALIFIER cout << "\tMinLength:\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_MINLENGTH)) << XERCES_STD_QUALIFIER endl; if (facets & XSSimpleTypeDefinition::FACET_MAXLENGTH) XERCES_STD_QUALIFIER cout << "\tMaxLength:\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_MAXLENGTH)) << XERCES_STD_QUALIFIER endl; if (facets & XSSimpleTypeDefinition::FACET_PATTERN) { StringList *lexicalPatterns = xsSimpleTypeDef->getLexicalPattern(); if (lexicalPatterns && lexicalPatterns->size()) { XERCES_STD_QUALIFIER cout << "\tPattern:\t\t"; for (unsigned i = 0; i < lexicalPatterns->size(); i++) { XERCES_STD_QUALIFIER cout << StrX(lexicalPatterns->elementAt(i)); } XERCES_STD_QUALIFIER cout << XERCES_STD_QUALIFIER endl; } } if (facets & XSSimpleTypeDefinition::FACET_WHITESPACE) XERCES_STD_QUALIFIER cout << "\tWhitespace:\t\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_WHITESPACE)) << XERCES_STD_QUALIFIER endl; if (facets & XSSimpleTypeDefinition::FACET_MAXINCLUSIVE) XERCES_STD_QUALIFIER cout << "\tMaxInclusive:\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_MAXINCLUSIVE)) << XERCES_STD_QUALIFIER endl; if (facets & XSSimpleTypeDefinition::FACET_MAXEXCLUSIVE) XERCES_STD_QUALIFIER cout << "\tMaxExclusive:\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_MAXEXCLUSIVE)) << XERCES_STD_QUALIFIER endl; if (facets & XSSimpleTypeDefinition::FACET_MINEXCLUSIVE) XERCES_STD_QUALIFIER cout << "\tMinExclusive:\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_MINEXCLUSIVE)) << XERCES_STD_QUALIFIER endl; if (facets & XSSimpleTypeDefinition::FACET_MININCLUSIVE) XERCES_STD_QUALIFIER cout << "\tMinInclusive:\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_MININCLUSIVE)) << XERCES_STD_QUALIFIER endl; if (facets & XSSimpleTypeDefinition::FACET_TOTALDIGITS) XERCES_STD_QUALIFIER cout << "\tTotalDigits:\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_TOTALDIGITS)) << XERCES_STD_QUALIFIER endl; if (facets & XSSimpleTypeDefinition::FACET_FRACTIONDIGITS) XERCES_STD_QUALIFIER cout << "\tFractionDigits:\t" << StrX(xsSimpleTypeDef->getLexicalFacetValue(XSSimpleTypeDefinition::FACET_FRACTIONDIGITS)) << XERCES_STD_QUALIFIER endl; if (facets & XSSimpleTypeDefinition::FACET_ENUMERATION) { StringList *lexicalEnums = xsSimpleTypeDef->getLexicalEnumeration(); if (lexicalEnums && lexicalEnums->size()) { XERCES_STD_QUALIFIER cout << "\tEnumeration:\n"; for (unsigned i = 0; i < lexicalEnums->size(); i++) { XERCES_STD_QUALIFIER cout << "\t\t\t" << StrX(lexicalEnums->elementAt(i)) << "\n"; } XERCES_STD_QUALIFIER cout << XERCES_STD_QUALIFIER endl; } } } } void printCompositorTypeConnector(XSModelGroup::COMPOSITOR_TYPE type) { switch (type) { case XSModelGroup::COMPOSITOR_SEQUENCE : XERCES_STD_QUALIFIER cout << ","; break; case XSModelGroup::COMPOSITOR_CHOICE : XERCES_STD_QUALIFIER cout << "|"; break; case XSModelGroup::COMPOSITOR_ALL : XERCES_STD_QUALIFIER cout << "*"; break; } } void processParticle(XSParticle *xsParticle) { if (!xsParticle) { XERCES_STD_QUALIFIER cout << "xsParticle is NULL"; return; } XSParticle::TERM_TYPE termType = xsParticle->getTermType(); if (termType == XSParticle::TERM_ELEMENT) { XSElementDeclaration *xsElement = xsParticle->getElementTerm(); XERCES_STD_QUALIFIER cout << StrX(xsElement->getName()); } else if (termType == XSParticle::TERM_MODELGROUP) { XERCES_STD_QUALIFIER cout << "("; XSModelGroup *xsModelGroup = xsParticle->getModelGroupTerm(); XSModelGroup::COMPOSITOR_TYPE compositorType = xsModelGroup->getCompositor(); XSParticleList *xsParticleList = xsModelGroup->getParticles(); for (unsigned i = 0; i < xsParticleList->size()-1; i++) { processParticle(xsParticleList->elementAt(i)); printCompositorTypeConnector(compositorType); } processParticle(xsParticleList->elementAt(xsParticleList->size()-1)); XERCES_STD_QUALIFIER cout << ")"; } else if (termType == XSParticle::TERM_WILDCARD) { XERCES_STD_QUALIFIER cout << "* (wildcard)"; } } void processComplexTypeDefinition(XSComplexTypeDefinition *xsComplexTypeDef) { XSTypeDefinition *xsBaseTypeDef = xsComplexTypeDef->getBaseType(); if (xsBaseTypeDef) { XERCES_STD_QUALIFIER cout << "Base:\t\t\t"; XERCES_STD_QUALIFIER cout << StrX(xsBaseTypeDef->getName()) << "\n"; } XERCES_STD_QUALIFIER cout << "Content Model:\t"; XSComplexTypeDefinition::CONTENT_TYPE contentType = xsComplexTypeDef->getContentType(); if (contentType == XSComplexTypeDefinition::CONTENTTYPE_ELEMENT || contentType == XSComplexTypeDefinition::CONTENTTYPE_MIXED) { processParticle(xsComplexTypeDef->getParticle()); XERCES_STD_QUALIFIER cout << XERCES_STD_QUALIFIER endl; } } void processTypeDefinitions(XSNamedMap *xsTypeDefs) { if (!xsTypeDefs) return; for (XMLSize_t i=0; i < xsTypeDefs->getLength(); i++) { XSTypeDefinition *xsTypeDef = (XSTypeDefinition *)xsTypeDefs->item(i); printBasic(xsTypeDef, "Type Definition"); // Content Model XERCES_STD_QUALIFIER cout << "Category:\t"; if (xsTypeDef->getTypeCategory() == XSTypeDefinition::SIMPLE_TYPE) { XERCES_STD_QUALIFIER cout << "\tSimple\n"; processSimpleTypeDefinition((XSSimpleTypeDefinition *)xsTypeDef); } else { XERCES_STD_QUALIFIER cout << "\tComplex\n"; processComplexTypeDefinition((XSComplexTypeDefinition *)xsTypeDef); } XERCES_STD_QUALIFIER cout << "\n--------------------------------------------" << XERCES_STD_QUALIFIER endl; } } xerces-c-3.1.1/samples/src/SAXCount/0000755000175000017500000000000011363617315016150 5ustar borisborisxerces-c-3.1.1/samples/src/SAXCount/SAXCountHandlers.hpp0000644000175000017500000000704111042066772022007 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SAXCountHandlers.hpp 679377 2008-07-24 11:56:42Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include XERCES_CPP_NAMESPACE_USE XERCES_CPP_NAMESPACE_BEGIN class AttributeList; XERCES_CPP_NAMESPACE_END class SAXCountHandlers : public HandlerBase { public: // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- SAXCountHandlers(); ~SAXCountHandlers(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- XMLSize_t getElementCount() const { return fElementCount; } XMLSize_t getAttrCount() const { return fAttrCount; } XMLSize_t getCharacterCount() const { return fCharacterCount; } bool getSawErrors() const { return fSawErrors; } XMLSize_t getSpaceCount() const { return fSpaceCount; } // ----------------------------------------------------------------------- // Handlers for the SAX DocumentHandler interface // ----------------------------------------------------------------------- void startElement(const XMLCh* const name, AttributeList& attributes); void characters(const XMLCh* const chars, const XMLSize_t length); void ignorableWhitespace(const XMLCh* const chars, const XMLSize_t length); void resetDocument(); // ----------------------------------------------------------------------- // Handlers for the SAX ErrorHandler interface // ----------------------------------------------------------------------- void warning(const SAXParseException& exc); void error(const SAXParseException& exc); void fatalError(const SAXParseException& exc); void resetErrors(); private: // ----------------------------------------------------------------------- // Private data members // // fAttrCount // fCharacterCount // fElementCount // fSpaceCount // These are just counters that are run upwards based on the input // from the document handlers. // // fSawErrors // This is set by the error handlers, and is queryable later to // see if any errors occured. // ----------------------------------------------------------------------- XMLSize_t fAttrCount; XMLSize_t fCharacterCount; XMLSize_t fElementCount; XMLSize_t fSpaceCount; bool fSawErrors; }; xerces-c-3.1.1/samples/src/SAXCount/SAXCountHandlers.cpp0000644000175000017500000000723010647424627022011 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SAXCountHandlers.cpp 557282 2007-07-18 14:54:15Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include "SAXCount.hpp" #include #include #include // --------------------------------------------------------------------------- // SAXCountHandlers: Constructors and Destructor // --------------------------------------------------------------------------- SAXCountHandlers::SAXCountHandlers() : fAttrCount(0) , fCharacterCount(0) , fElementCount(0) , fSpaceCount(0) , fSawErrors(false) { } SAXCountHandlers::~SAXCountHandlers() { } // --------------------------------------------------------------------------- // SAXCountHandlers: Implementation of the SAX DocumentHandler interface // --------------------------------------------------------------------------- void SAXCountHandlers::startElement(const XMLCh* const /* name */ , AttributeList& attributes) { fElementCount++; fAttrCount += attributes.getLength(); } void SAXCountHandlers::characters( const XMLCh* const /* chars */ , const XMLSize_t length) { fCharacterCount += length; } void SAXCountHandlers::ignorableWhitespace( const XMLCh* const /* chars */ , const XMLSize_t length) { fSpaceCount += length; } void SAXCountHandlers::resetDocument() { fAttrCount = 0; fCharacterCount = 0; fElementCount = 0; fSpaceCount = 0; } // --------------------------------------------------------------------------- // SAXCountHandlers: Overrides of the SAX ErrorHandler interface // --------------------------------------------------------------------------- void SAXCountHandlers::error(const SAXParseException& e) { fSawErrors = true; XERCES_STD_QUALIFIER cerr << "\nError at file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "\n Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; } void SAXCountHandlers::fatalError(const SAXParseException& e) { fSawErrors = true; XERCES_STD_QUALIFIER cerr << "\nFatal Error at file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "\n Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; } void SAXCountHandlers::warning(const SAXParseException& e) { XERCES_STD_QUALIFIER cerr << "\nWarning at file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "\n Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; } void SAXCountHandlers::resetErrors() { fSawErrors = false; } xerces-c-3.1.1/samples/src/SAXCount/SAXCount.hpp0000644000175000017500000000535010523637166020333 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SAXCount.hpp 471735 2006-11-06 13:53:58Z amassari $ */ // --------------------------------------------------------------------------- // Includes for all the program files to see // --------------------------------------------------------------------------- #include #include #include #if defined(XERCES_NEW_IOSTREAMS) #include #else #include #endif #include #include "SAXCountHandlers.hpp" // --------------------------------------------------------------------------- // This is a simple class that lets us do easy (though not terribly efficient) // trancoding of XMLCh data to local code page for display. // --------------------------------------------------------------------------- class StrX { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- StrX(const XMLCh* const toTranscode) { // Call the private transcoding method fLocalForm = XMLString::transcode(toTranscode); } ~StrX() { XMLString::release(&fLocalForm); } // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const char* localForm() const { return fLocalForm; } private : // ----------------------------------------------------------------------- // Private data members // // fLocalForm // This is the local code page form of the string. // ----------------------------------------------------------------------- char* fLocalForm; }; inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump) { target << toDump.localForm(); return target; } xerces-c-3.1.1/samples/src/SAXCount/SAXCount.cpp0000644000175000017500000002355411274567126020336 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SAXCount.cpp 833057 2009-11-05 15:25:10Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include "SAXCount.hpp" #if defined(XERCES_NEW_IOSTREAMS) #include #else #include #endif #include // --------------------------------------------------------------------------- // Local helper methods // --------------------------------------------------------------------------- void usage() { XERCES_STD_QUALIFIER cout << "\nUsage:\n" " SAXCount [options] \n\n" "This program invokes the SAX Parser, and then prints the\n" "number of elements, attributes, spaces and characters found\n" "in each XML file, using SAX API.\n\n" "Options:\n" " -l Indicate the input file is a List File that has a list of xml files.\n" " Default to off (Input file is an XML file).\n" " -v=xxx Validation scheme [always | never | auto*].\n" " -n Enable namespace processing. Defaults to off.\n" " -s Enable schema processing. Defaults to off.\n" " -f Enable full schema constraint checking. Defaults to off.\n" " -locale=ll_CC specify the locale, default: en_US.\n" " -? Show this help.\n\n" " * = Default if not provided explicitly.\n" << XERCES_STD_QUALIFIER endl; } // --------------------------------------------------------------------------- // Program entry point // --------------------------------------------------------------------------- int main(int argC, char* argV[]) { // Check command line and extract arguments. if (argC < 2) { usage(); return 1; } const char* xmlFile = 0; SAXParser::ValSchemes valScheme = SAXParser::Val_Auto; bool doNamespaces = false; bool doSchema = false; bool schemaFullChecking = false; bool doList = false; bool errorOccurred = false; bool recognizeNEL = false; char localeStr[64]; memset(localeStr, 0, sizeof localeStr); int argInd; for (argInd = 1; argInd < argC; argInd++) { // Break out on first parm not starting with a dash if (argV[argInd][0] != '-') break; // Watch for special case help request if (!strcmp(argV[argInd], "-?")) { usage(); return 2; } else if (!strncmp(argV[argInd], "-v=", 3) || !strncmp(argV[argInd], "-V=", 3)) { const char* const parm = &argV[argInd][3]; if (!strcmp(parm, "never")) valScheme = SAXParser::Val_Never; else if (!strcmp(parm, "auto")) valScheme = SAXParser::Val_Auto; else if (!strcmp(parm, "always")) valScheme = SAXParser::Val_Always; else { XERCES_STD_QUALIFIER cerr << "Unknown -v= value: " << parm << XERCES_STD_QUALIFIER endl; return 2; } } else if (!strcmp(argV[argInd], "-n") || !strcmp(argV[argInd], "-N")) { doNamespaces = true; } else if (!strcmp(argV[argInd], "-s") || !strcmp(argV[argInd], "-S")) { doSchema = true; } else if (!strcmp(argV[argInd], "-f") || !strcmp(argV[argInd], "-F")) { schemaFullChecking = true; } else if (!strcmp(argV[argInd], "-l") || !strcmp(argV[argInd], "-L")) { doList = true; } else if (!strcmp(argV[argInd], "-special:nel")) { // turning this on will lead to non-standard compliance behaviour // it will recognize the unicode character 0x85 as new line character // instead of regular character as specified in XML 1.0 // do not turn this on unless really necessary recognizeNEL = true; } else if (!strncmp(argV[argInd], "-locale=", 8)) { // Get out the end of line strcpy(localeStr, &(argV[argInd][8])); } else { XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[argInd] << "', ignoring it\n" << XERCES_STD_QUALIFIER endl; } } // // There should at least one parameter left, and that // should be the file name(s). // if (argInd == argC) { usage(); return 1; } // Initialize the XML4C2 system try { if (strlen(localeStr)) { XMLPlatformUtils::Initialize(localeStr); } else { XMLPlatformUtils::Initialize(); } if (recognizeNEL) { XMLPlatformUtils::recognizeNEL(recognizeNEL); } } catch (const XMLException& toCatch) { XERCES_STD_QUALIFIER cerr << "Error during initialization! Message:\n" << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl; return 1; } // // Create a SAX parser object. Then, according to what we were told on // the command line, set it to validate or not. // SAXParser* parser = new SAXParser; parser->setValidationScheme(valScheme); parser->setDoNamespaces(doNamespaces); parser->setDoSchema(doSchema); parser->setHandleMultipleImports (true); parser->setValidationSchemaFullChecking(schemaFullChecking); // // Create our SAX handler object and install it on the parser, as the // document and error handler. // SAXCountHandlers handler; parser->setDocumentHandler(&handler); parser->setErrorHandler(&handler); // // Get the starting time and kick off the parse of the indicated // file. Catch any exceptions that might propogate out of it. // unsigned long duration; XERCES_STD_QUALIFIER ifstream fin; // the input is a list file if (doList) fin.open(argV[argInd]); if (fin.fail()) { XERCES_STD_QUALIFIER cerr <<"Cannot open the list file: " << argV[argInd] << XERCES_STD_QUALIFIER endl; return 2; } while (true) { char fURI[1000]; //initialize the array to zeros memset(fURI,0,sizeof(fURI)); if (doList) { if (! fin.eof() ) { fin.getline (fURI, sizeof(fURI)); if (!*fURI) continue; else { xmlFile = fURI; XERCES_STD_QUALIFIER cerr << "==Parsing== " << xmlFile << XERCES_STD_QUALIFIER endl; } } else break; } else { if (argInd < argC) { xmlFile = argV[argInd]; argInd++; } else break; } //reset error count first handler.resetErrors(); try { const unsigned long startMillis = XMLPlatformUtils::getCurrentMillis(); parser->parse(xmlFile); const unsigned long endMillis = XMLPlatformUtils::getCurrentMillis(); duration = endMillis - startMillis; } catch (const OutOfMemoryException&) { XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl; errorOccurred = true; continue; } catch (const XMLException& e) { XERCES_STD_QUALIFIER cerr << "\nError during parsing: '" << xmlFile << "'\n" << "Exception message is: \n" << StrX(e.getMessage()) << "\n" << XERCES_STD_QUALIFIER endl; errorOccurred = true; continue; } catch (...) { XERCES_STD_QUALIFIER cerr << "\nUnexpected exception during parsing: '" << xmlFile << "'\n"; errorOccurred = true; continue; } // Print out the stats that we collected and time taken if (!handler.getSawErrors()) { XERCES_STD_QUALIFIER cout << xmlFile << ": " << duration << " ms (" << handler.getElementCount() << " elems, " << handler.getAttrCount() << " attrs, " << handler.getSpaceCount() << " spaces, " << handler.getCharacterCount() << " chars)" << XERCES_STD_QUALIFIER endl; } else errorOccurred = true; } if (doList) fin.close(); // // Delete the parser itself. Must be done prior to calling Terminate, below. // delete parser; // And call the termination method XMLPlatformUtils::Terminate(); if (errorOccurred) return 4; else return 0; } xerces-c-3.1.1/samples/src/MemParse/0000755000175000017500000000000011363617315016215 5ustar borisborisxerces-c-3.1.1/samples/src/MemParse/MemParseHandlers.hpp0000644000175000017500000000641111042066772022121 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: MemParseHandlers.hpp 679377 2008-07-24 11:56:42Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include XERCES_CPP_NAMESPACE_USE XERCES_CPP_NAMESPACE_BEGIN class AttributeList; XERCES_CPP_NAMESPACE_END class MemParseHandlers : public HandlerBase { public: // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- MemParseHandlers(); ~MemParseHandlers(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- XMLSize_t getElementCount() { return fElementCount; } XMLSize_t getAttrCount() { return fAttrCount; } XMLSize_t getCharacterCount() { return fCharacterCount; } XMLSize_t getSpaceCount() { return fSpaceCount; } // ----------------------------------------------------------------------- // Handlers for the SAX DocumentHandler interface // ----------------------------------------------------------------------- void startElement(const XMLCh* const name, AttributeList& attributes); void characters(const XMLCh* const chars, const XMLSize_t length); void ignorableWhitespace(const XMLCh* const chars, const XMLSize_t length); void resetDocument(); // ----------------------------------------------------------------------- // Handlers for the SAX ErrorHandler interface // ----------------------------------------------------------------------- void warning(const SAXParseException& exc); void error(const SAXParseException& exc); void fatalError(const SAXParseException& exc); private: // ----------------------------------------------------------------------- // Private data members // // fAttrCount // fCharacterCount // fElementCount // fSpaceCount // These are just counters that are run upwards based on the input // from the document handlers. // ----------------------------------------------------------------------- XMLSize_t fAttrCount; XMLSize_t fCharacterCount; XMLSize_t fElementCount; XMLSize_t fSpaceCount; }; xerces-c-3.1.1/samples/src/MemParse/MemParse.hpp0000644000175000017500000000530410523637166020444 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: MemParse.hpp 471735 2006-11-06 13:53:58Z amassari $ */ // --------------------------------------------------------------------------- // Includes for all the program files to see // --------------------------------------------------------------------------- #include #include #include #include "MemParseHandlers.hpp" #if defined(XERCES_NEW_IOSTREAMS) #include #else #include #endif // --------------------------------------------------------------------------- // This is a simple class that lets us do easy (though not terribly efficient) // trancoding of XMLCh data to local code page for display. // --------------------------------------------------------------------------- class StrX { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- StrX(const XMLCh* const toTranscode) { // Call the private transcoding method fLocalForm = XMLString::transcode(toTranscode); } ~StrX() { XMLString::release(&fLocalForm); } // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const char* localForm() const { return fLocalForm; } private : // ----------------------------------------------------------------------- // Private data members // // fLocalForm // This is the local code page form of the string. // ----------------------------------------------------------------------- char* fLocalForm; }; inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump) { target << toDump.localForm(); return target; } xerces-c-3.1.1/samples/src/MemParse/MemParse.cpp0000644000175000017500000002272511274567126020447 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: MemParse.cpp 833057 2009-11-05 15:25:10Z borisk $ */ /** * This sample program illustrates how one can use a memory buffer as the * input to parser. The memory buffer contains raw bytes representing XML * statements. * * Look at the API documentation for 'MemBufInputSource' for more information * on parameters to the constructor. * */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include "MemParse.hpp" #include // --------------------------------------------------------------------------- // Local const data // // gXMLInMemBuf // Defines the memory buffer contents here which parsed by the XML // parser. This is the cheap way to do it, instead of reading it from // somewhere. For this demo, its fine. // // NOTE: If your encoding is not ascii you will need to change // the MEMPARSE_ENCODING #define // // gMemBufId // A simple name to give as the system id for the memory buffer. This // just for indentification purposes in case of errors. Its not a real // system id (and the parser knows that.) // --------------------------------------------------------------------------- #ifndef MEMPARSE_ENCODING #if defined(OS390) #define MEMPARSE_ENCODING "ibm-1047-s390" #elif defined(OS400) #define MEMPARSE_ENCODING "ibm037" #else #define MEMPARSE_ENCODING "ascii" #endif #endif /* ifndef MEMPARSE_ENCODING */ static const char* gXMLInMemBuf = "\ \n\ \n\ \n\ \n\ \n\ \n\ ]>\n\n\ \n\ XML4C\n\ XML Parsing Tools\n\ \n\ IBM Center for Java Technology, Silicon Valley, Cupertino, CA\n\ \n\ \ "; static const char* gMemBufId = "prodInfo"; // --------------------------------------------------------------------------- // Local helper methods // --------------------------------------------------------------------------- void usage() { XERCES_STD_QUALIFIER cout << "\nUsage:\n" " MemParse [options]\n\n" "This program uses the SAX Parser to parse a memory buffer\n" "containing XML statements, and reports the number of\n" "elements and attributes found.\n\n" "Options:\n" " -v=xxx Validation scheme [always | never | auto*].\n" " -n Enable namespace processing. Defaults to off.\n" " -s Enable schema processing. Defaults to off.\n" " -f Enable full schema constraint checking. Defaults to off.\n" " -? Show this help.\n\n" " * = Default if not provided explicitly.\n" << XERCES_STD_QUALIFIER endl; } // --------------------------------------------------------------------------- // Program entry point // --------------------------------------------------------------------------- int main(int argC, char* argV[]) { // Initialize the XML4C2 system try { XMLPlatformUtils::Initialize(); } catch (const XMLException& toCatch) { XERCES_STD_QUALIFIER cerr << "Error during initialization! Message:\n" << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl; return 1; } SAXParser::ValSchemes valScheme = SAXParser::Val_Auto; bool doNamespaces = false; bool doSchema = false; bool schemaFullChecking = false; int argInd; for (argInd = 1; argInd < argC; argInd++) { // Break out on first parm not starting with a dash if (argV[argInd][0] != '-') { usage(); XMLPlatformUtils::Terminate(); return 1; } // Watch for special case help request if (!strcmp(argV[argInd], "-?")) { usage(); XMLPlatformUtils::Terminate(); return 1; } else if (!strncmp(argV[argInd], "-v=", 3) || !strncmp(argV[argInd], "-V=", 3)) { const char* const parm = &argV[argInd][3]; if (!strcmp(parm, "never")) valScheme = SAXParser::Val_Never; else if (!strcmp(parm, "auto")) valScheme = SAXParser::Val_Auto; else if (!strcmp(parm, "always")) valScheme = SAXParser::Val_Always; else { XERCES_STD_QUALIFIER cerr << "Unknown -v= value: " << parm << XERCES_STD_QUALIFIER endl; return 2; } } else if (!strcmp(argV[argInd], "-n") || !strcmp(argV[argInd], "-N")) { doNamespaces = true; } else if (!strcmp(argV[argInd], "-s") || !strcmp(argV[argInd], "-S")) { doSchema = true; } else if (!strcmp(argV[argInd], "-f") || !strcmp(argV[argInd], "-F")) { schemaFullChecking = true; } else { XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[argInd] << "', ignoring it\n" << XERCES_STD_QUALIFIER endl; } } // // Create a SAX parser object. Then, according to what we were told on // the command line, set it to validate or not. // SAXParser* parser = new SAXParser; parser->setValidationScheme(valScheme); parser->setDoNamespaces(doNamespaces); parser->setDoSchema(doSchema); parser->setHandleMultipleImports (true); parser->setValidationSchemaFullChecking(schemaFullChecking); // // Create our SAX handler object and install it on the parser, as the // document and error handlers. // MemParseHandlers handler; parser->setDocumentHandler(&handler); parser->setErrorHandler(&handler); // // Create MemBufferInputSource from the buffer containing the XML // statements. // // NOTE: We are using strlen() here, since we know that the chars in // our hard coded buffer are single byte chars!!! The parameter wants // the number of BYTES, not chars, so when you create a memory buffer // give it the byte size (which just happens to be the same here.) // MemBufInputSource* memBufIS = new MemBufInputSource ( (const XMLByte*)gXMLInMemBuf , strlen(gXMLInMemBuf) , gMemBufId , false ); // // Get the starting time and kick off the parse of the indicated // file. Catch any exceptions that might propogate out of it. // unsigned long duration; int errorCount = 0; int errorCode = 0; try { const unsigned long startMillis = XMLPlatformUtils::getCurrentMillis(); parser->parse(*memBufIS); const unsigned long endMillis = XMLPlatformUtils::getCurrentMillis(); duration = endMillis - startMillis; errorCount = parser->getErrorCount(); } catch (const OutOfMemoryException&) { XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl; errorCode = 5; } catch (const XMLException& e) { XERCES_STD_QUALIFIER cerr << "\nError during parsing memory stream:\n" << "Exception message is: \n" << StrX(e.getMessage()) << "\n" << XERCES_STD_QUALIFIER endl; errorCode = 4; } if(errorCode) { XMLPlatformUtils::Terminate(); return errorCode; } // Print out the stats that we collected and time taken. if (!errorCount) { XERCES_STD_QUALIFIER cout << "\nFinished parsing the memory buffer containing the following " << "XML statements:\n\n" << gXMLInMemBuf << "\n\n\n" << "Parsing took " << duration << " ms (" << handler.getElementCount() << " elements, " << handler.getAttrCount() << " attributes, " << handler.getSpaceCount() << " spaces, " << handler.getCharacterCount() << " characters).\n" << XERCES_STD_QUALIFIER endl; } // // Delete the parser itself. Must be done prior to calling Terminate, below. // delete parser; delete memBufIS; // And call the termination method XMLPlatformUtils::Terminate(); if (errorCount > 0) return 4; else return 0; } xerces-c-3.1.1/samples/src/MemParse/MemParseHandlers.cpp0000644000175000017500000000707510647424627022132 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: MemParseHandlers.cpp 557282 2007-07-18 14:54:15Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include "MemParse.hpp" #include #include #include #include // --------------------------------------------------------------------------- // MemParseHandlers: Constructors and Destructor // --------------------------------------------------------------------------- MemParseHandlers::MemParseHandlers() : fAttrCount(0) , fCharacterCount(0) , fElementCount(0) , fSpaceCount(0) { } MemParseHandlers::~MemParseHandlers() { } // --------------------------------------------------------------------------- // MemParseHandlers: Implementation of the SAX DocumentHandler interface // --------------------------------------------------------------------------- void MemParseHandlers::startElement(const XMLCh* const /* name */ , AttributeList& attributes) { fElementCount++; fAttrCount += attributes.getLength(); } void MemParseHandlers::characters( const XMLCh* const /* chars */ , const XMLSize_t length) { fCharacterCount += length; } void MemParseHandlers::ignorableWhitespace( const XMLCh* const /* chars */ , const XMLSize_t length) { fSpaceCount += length; } void MemParseHandlers::resetDocument() { fAttrCount = 0; fCharacterCount = 0; fElementCount = 0; fSpaceCount = 0; } // --------------------------------------------------------------------------- // MemParseHandlers: Overrides of the SAX ErrorHandler interface // --------------------------------------------------------------------------- void MemParseHandlers::error(const SAXParseException& e) { XERCES_STD_QUALIFIER cerr << "\nError at (file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "): " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; } void MemParseHandlers::fatalError(const SAXParseException& e) { XERCES_STD_QUALIFIER cerr << "\nFatal Error at (file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "): " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; } void MemParseHandlers::warning(const SAXParseException& e) { XERCES_STD_QUALIFIER cerr << "\nWarning at (file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "): " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; } xerces-c-3.1.1/samples/src/Redirect/0000755000175000017500000000000011363617315016245 5ustar borisborisxerces-c-3.1.1/samples/src/Redirect/RedirectHandlers.hpp0000644000175000017500000001006511042066772022201 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: RedirectHandlers.hpp 679377 2008-07-24 11:56:42Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include XERCES_CPP_NAMESPACE_USE XERCES_CPP_NAMESPACE_BEGIN class AttributeList; XERCES_CPP_NAMESPACE_END class RedirectHandlers : public HandlerBase, public XMLEntityResolver { public: // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- RedirectHandlers(); ~RedirectHandlers(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- XMLSize_t getElementCount() { return fElementCount; } XMLSize_t getAttrCount() { return fAttrCount; } XMLSize_t getCharacterCount() { return fCharacterCount; } XMLSize_t getSpaceCount() { return fSpaceCount; } // ----------------------------------------------------------------------- // Handlers for the SAX DocumentHandler interface // ----------------------------------------------------------------------- void startElement(const XMLCh* const name, AttributeList& attributes); void characters(const XMLCh* const chars, const XMLSize_t length); void ignorableWhitespace(const XMLCh* const chars, const XMLSize_t length); void resetDocument(); // ----------------------------------------------------------------------- // Handlers for the SAX ErrorHandler interface // ----------------------------------------------------------------------- void warning(const SAXParseException& exc); void error(const SAXParseException& exc); void fatalError(const SAXParseException& exc); // This is the SAX2 resolveEntity interface. This is inherited from // EntityResolver. // ----------------------------------------------------------------------- // Handlers for the SAX EntityResolver interface // ----------------------------------------------------------------------- InputSource* resolveEntity ( const XMLCh* const publicId , const XMLCh* const systemId ); // ----------------------------------------------------------------------- // Handlers for the XMLEntityResolver interface // ----------------------------------------------------------------------- InputSource* resolveEntity ( XMLResourceIdentifier* resourceIdentifier ); private: // ----------------------------------------------------------------------- // Private data members // // fAttrCount // fCharacterCount // fElementCount // fSpaceCount // These are just counters that are run upwards based on the input // from the document handlers. // ----------------------------------------------------------------------- XMLSize_t fAttrCount; XMLSize_t fCharacterCount; XMLSize_t fElementCount; XMLSize_t fSpaceCount; }; xerces-c-3.1.1/samples/src/Redirect/Redirect.hpp0000644000175000017500000000530010523637166020520 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: Redirect.hpp 471735 2006-11-06 13:53:58Z amassari $ */ // --------------------------------------------------------------------------- // Includes for all the program files to see // --------------------------------------------------------------------------- #include #include #if defined(XERCES_NEW_IOSTREAMS) #include #else #include #endif #include #include "RedirectHandlers.hpp" // --------------------------------------------------------------------------- // This is a simple class that lets us do easy (though not terribly efficient) // trancoding of XMLCh data to local code page for display. // --------------------------------------------------------------------------- class StrX { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- StrX(const XMLCh* const toTranscode) { // Call the private transcoding method fLocalForm = XMLString::transcode(toTranscode); } ~StrX() { XMLString::release(&fLocalForm); } // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const char* localForm() const { return fLocalForm; } private : // ----------------------------------------------------------------------- // Private data members // // fLocalForm // This is the local code page form of the string. // ----------------------------------------------------------------------- char* fLocalForm; }; inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump) { target << toDump.localForm(); return target; } xerces-c-3.1.1/samples/src/Redirect/RedirectHandlers.cpp0000644000175000017500000001324711032551240022165 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: RedirectHandlers.cpp 673248 2008-07-02 00:58:08Z dbertoni $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include "Redirect.hpp" #include // --------------------------------------------------------------------------- // Local constant data // // gFileToTrap // This is the file that we are looking for in the entity handler, to // redirect to another file. // // gRedirectToFile // This is the file that we are going to redirect the parser to. // --------------------------------------------------------------------------- static const XMLCh gFileToTrap[] = { chLatin_p, chLatin_e, chLatin_r, chLatin_s, chLatin_o, chLatin_n , chLatin_a, chLatin_l, chPeriod, chLatin_d, chLatin_t, chLatin_d, chNull }; static const XMLCh gRedirectToFile[] = { chLatin_r, chLatin_e, chLatin_d, chLatin_i, chLatin_r, chLatin_e , chLatin_c, chLatin_t, chPeriod, chLatin_d, chLatin_t, chLatin_d, chNull }; // --------------------------------------------------------------------------- // RedirectHandlers: Constructors and Destructor // --------------------------------------------------------------------------- RedirectHandlers::RedirectHandlers() : fAttrCount(0) , fCharacterCount(0) , fElementCount(0) , fSpaceCount(0) { } RedirectHandlers::~RedirectHandlers() { } // --------------------------------------------------------------------------- // RedirectHandlers: Implementation of the SAX DocumentHandler interface // --------------------------------------------------------------------------- void RedirectHandlers::startElement(const XMLCh* const /* name */ , AttributeList& attributes) { fElementCount++; fAttrCount += attributes.getLength(); } void RedirectHandlers::characters( const XMLCh* const /* chars */ , const XMLSize_t length) { fCharacterCount += length; } void RedirectHandlers::ignorableWhitespace( const XMLCh* const /* chars */ , const XMLSize_t length) { fSpaceCount += length; } void RedirectHandlers::resetDocument() { fAttrCount = 0; fCharacterCount = 0; fElementCount = 0; fSpaceCount = 0; } // --------------------------------------------------------------------------- // RedirectHandlers: Overrides of the SAX ErrorHandler interface // --------------------------------------------------------------------------- void RedirectHandlers::error(const SAXParseException& e) { XERCES_STD_QUALIFIER cerr << "\nError at (file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "): " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; } void RedirectHandlers::fatalError(const SAXParseException& e) { XERCES_STD_QUALIFIER cerr << "\nFatal Error at (file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "): " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; } void RedirectHandlers::warning(const SAXParseException& e) { XERCES_STD_QUALIFIER cerr << "\nWarning at (file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "): " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; } // This is the SAX2 resolveEntity interface... // ----------------------------------------------------------------------- // Handlers for the SAX EntityResolver interface // ----------------------------------------------------------------------- InputSource* RedirectHandlers::resolveEntity(const XMLCh* const /* publicId */ , const XMLCh* const systemId) { // // If it's our file, then create a new URL input source for the file that // we want to really be used. Otherwise, just return NULL to let the // default action occur. if (XMLString::compareString(gFileToTrap, systemId) != 0) { return NULL; } else { // They were equal, so redirect to our other file return new LocalFileInputSource(gRedirectToFile); } } // ----------------------------------------------------------------------- // Handlers for the XMLEntityResolver interface // ----------------------------------------------------------------------- InputSource* RedirectHandlers::resolveEntity(XMLResourceIdentifier* resourceIdentifier) { // Call the SAX2 version. return resolveEntity(NULL, resourceIdentifier->getSystemId()); } xerces-c-3.1.1/samples/src/Redirect/Redirect.cpp0000644000175000017500000001320110523637166020512 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * * This simplistic sample illustrates how an XML application can use * the SAX entityResolver handler to provide customized handling for * external entities. * * It registers an entity resolver with the parser. When ever the parser * comes across an external entity, like a reference to an external DTD * file, it calls the 'resolveEntity()' callback. This callback in this * sample checks to see if the external entity to be resolved is the file * 'personal.dtd'. * * If it is then, it redirects the input stream to the file 'redirect.dtd', * which is then read instead of 'personal.dtd'. * * If the external entity to be resolved was not the file 'personal.dtd', the * callback returns NULL indicating that do the default behaviour which is * to read the contents of 'personal.dtd'. * * $Id: Redirect.cpp 471735 2006-11-06 13:53:58Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include "Redirect.hpp" #include // --------------------------------------------------------------------------- // Local helper methods // --------------------------------------------------------------------------- void usage() { XERCES_STD_QUALIFIER cout << "\nUsage:\n" " Redirect \n\n" "This program installs an entity resolver, traps the call to\n" "the external DTD file and redirects it to another application\n" "specific file which contains the actual dtd.\n\n" "The program then counts and reports the number of elements and\n" "attributes in the given XML file.\n" << XERCES_STD_QUALIFIER endl; } // --------------------------------------------------------------------------- // Program entry point // --------------------------------------------------------------------------- int main(int argc, char* args[]) { // Initialize the XML4C system try { XMLPlatformUtils::Initialize(); } catch (const XMLException& toCatch) { XERCES_STD_QUALIFIER cerr << "Error during initialization! Message:\n" << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl; return 1; } // We only have one parameter, which is the file to process // We only have one required parameter, which is the file to process if ((argc != 2) || (*(args[1]) == '-')) { usage(); XMLPlatformUtils::Terminate(); return 1; } const char* xmlFile = args[1]; // // Create a SAX parser object. Then, according to what we were told on // the command line, set it to validate or not. // SAXParser* parser = new SAXParser; // // Create our SAX handler object and install it on the parser, as the // document, entity and error handlers. // RedirectHandlers handler; parser->setDocumentHandler(&handler); parser->setErrorHandler(&handler); //Use the new XML Entity Resolver //parser->setEntityResolver(&handler); parser->setXMLEntityResolver(&handler); // // Get the starting time and kick off the parse of the indicated file. // Catch any exceptions that might propogate out of it. // unsigned long duration; int errorCount = 0; int errorCode = 0; try { const unsigned long startMillis = XMLPlatformUtils::getCurrentMillis(); parser->parse(xmlFile); const unsigned long endMillis = XMLPlatformUtils::getCurrentMillis(); duration = endMillis - startMillis; errorCount = parser->getErrorCount(); } catch (const OutOfMemoryException&) { XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl; errorCode = 5; } catch (const XMLException& e) { XERCES_STD_QUALIFIER cerr << "\nError during parsing: '" << xmlFile << "'\n" << "Exception message is: \n" << StrX(e.getMessage()) << "\n" << XERCES_STD_QUALIFIER endl; errorCode = 4; } if(errorCode) { XMLPlatformUtils::Terminate(); return errorCode; } // Print out the stats that we collected and time taken. if (!errorCount) { XERCES_STD_QUALIFIER cout << xmlFile << ": " << duration << " ms (" << handler.getElementCount() << " elems, " << handler.getAttrCount() << " attrs, " << handler.getSpaceCount() << " spaces, " << handler.getCharacterCount() << " chars)" << XERCES_STD_QUALIFIER endl; } // // Delete the parser itself. Must be done prior to calling Terminate, below. // delete parser; XMLPlatformUtils::Terminate(); if (errorCount > 0) return 4; else return 0; } xerces-c-3.1.1/samples/src/PSVIWriter/0000755000175000017500000000000011363617315016462 5ustar borisborisxerces-c-3.1.1/samples/src/PSVIWriter/PSVIWriter.hpp0000644000175000017500000000546510523637166021166 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(PSVIWRITER_HPP) #define PSVIWRITER_HPP // --------------------------------------------------------------------------- // Includes for all the program files to see // --------------------------------------------------------------------------- #include "PSVIWriterHandlers.hpp" #include #include #include #include #include #include #if defined(XERCES_NEW_IOSTREAMS) #include #else #include #endif // --------------------------------------------------------------------------- // This is a simple class that lets us do easy (though not terribly efficient) // trancoding of XMLCh data to local code page for display. // --------------------------------------------------------------------------- class StrX { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- StrX(const XMLCh* const toTranscode) { // Call the private transcoding method fLocalForm = XMLString::transcode(toTranscode); } ~StrX() { XMLString::release(&fLocalForm); } // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const char* localForm() const { return fLocalForm; } private : // ----------------------------------------------------------------------- // Private data members // // fLocalForm // This is the local code page form of the string. // ----------------------------------------------------------------------- char* fLocalForm; }; inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump) { target << toDump.localForm(); return target; } #endif xerces-c-3.1.1/samples/src/PSVIWriter/PSVIWriterHandlers.hpp0000644000175000017500000003341311042066772022635 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef PSVIWRITERHANDLER_HPP #define PSVIWRITERHANDLER_HPP // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_USE class AttrInfo { public: AttrInfo(const XMLCh* pUri, const XMLCh* pName, const XMLCh* pType, const XMLCh* pValue) { uri = XMLString::replicate(pUri); name = XMLString::replicate(pName); type = XMLString::replicate(pType); value = XMLString::replicate(pValue); } ~AttrInfo() { XMLString::release((XMLCh**)&uri); XMLString::release((XMLCh**)&name); XMLString::release((XMLCh**)&type); XMLString::release((XMLCh**)&value); } const XMLCh* getUri() const { return uri; } const XMLCh* getLocalName() const { return name; } const XMLCh* getType() const { return type; } const XMLCh* getValue() const { return value; } private: const XMLCh* uri; const XMLCh* name; const XMLCh* type; const XMLCh* value; }; class PSVIWriterHandlers : public PSVIHandler, public DefaultHandler, public XMLEntityResolver { public: // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- PSVIWriterHandlers(XMLFormatter* outputFormatter, XMLFormatter* errorFormatter = NULL); ~PSVIWriterHandlers(); friend class PSVIAdvancedHandler; // ----------------------------------------------------------------------- // Convenience Utility // ----------------------------------------------------------------------- void resetPSVIFormatter(XMLFormatter* outputFormatter); void resetDocument(); // ----------------------------------------------------------------------- // Handlers for the SAX ContentHandler interface // ----------------------------------------------------------------------- void startElement(const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname, const Attributes& attrs); void endElement(const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname); void startDocument(); void endDocument(); void characters(const XMLCh* const chars, const XMLSize_t length); void ignorableWhitespace(const XMLCh* const chars, const XMLSize_t length); void comment(const XMLCh* const chars, const XMLSize_t length); void processingInstruction(const XMLCh* const target, const XMLCh* const data); void startPrefixMapping(const XMLCh* const prefix, const XMLCh* const uri); void endPrefixMapping(const XMLCh* const prefix); InputSource* resolveEntity(XMLResourceIdentifier* resourceIdentifier); InputSource* resolveEntity(const XMLCh* const publicId, const XMLCh* const systemId); // ----------------------------------------------------------------------- // Handlers for the SAX ErrorHandler interface // ----------------------------------------------------------------------- void warning(const SAXParseException& exc); void error(const SAXParseException& exc); void fatalError(const SAXParseException& exc); void resetErrors(); // ----------------------------------------------------------------------- // Handlers for the PSVIHandler interface // ----------------------------------------------------------------------- void handleAttributesPSVI( const XMLCh* const localName, const XMLCh* const uri, PSVIAttributeList* psviAttributes ); void handleElementPSVI( const XMLCh* const localName, const XMLCh* const uri, PSVIElement* elementInfo ); void handlePartialElementPSVI( const XMLCh* const localName, const XMLCh* const uri, PSVIElement* elementInfo ); private: // ----------------------------------------------------------------------- // Private methods // ----------------------------------------------------------------------- void processAttributes(PSVIAttributeList* psviAttributes, const RefVectorOf* attributesInfo); void processNamespaceAttributes(PSVIAttributeList* psviAttributes, const RefVectorOf* attributes); void processAttributePSVI(PSVIAttribute* attribute); void processInScopeNamespaces(); void processActualValue(PSVIItem*); void formDateTime(XSValue*); void processSchemaInformation(XSModel* model); void processNamespaceItem(XSNamespaceItem* namespaceItem); void processSchemaComponents(XSNamespaceItem* namespaceItem); void processSchemaDocuments(XSNamespaceItem* namespaceItem); void processSchemaAnnotations(XSAnnotationList* annotations); void processSchemaErrorCode(StringList* errors); void processTypeDefinition(XSTypeDefinition* type); void processComplexTypeDefinition(XSComplexTypeDefinition* complexType); void processSimpleTypeDefinition(XSSimpleTypeDefinition* simpleType); void processModelGroupDefinition(XSModelGroupDefinition* modelGroup); void processAttributeGroupDefinition(XSAttributeGroupDefinition* attributeGroup); void processElementDeclaration(XSElementDeclaration* element); void processAttributeDeclaration(XSAttributeDeclaration* attribute); void processNotationDeclaration(XSNotationDeclaration* notation); void processAnnotations(XSAnnotationList* annotations); void processAttributeUses(XSAttributeUseList* attributeUses); void processFacets(XSFacetList* facets, XSMultiValueFacetList* multiFacets); void processFundamentalFacets(XSSimpleTypeDefinition* facets); void processMemberTypeDefinitions(XSSimpleTypeDefinitionList* memberTypes); void processAnnotation(XSAnnotation* annotation); void processDOMElement(const XMLCh* const encloseName, DOMElement* rootElem, const XMLCh* const elementName); void processDOMAttributes(DOMNamedNodeMap* attrs); void processWildcard(XSWildcard* wildcard); void processModelGroup(XSModelGroup* modelGroup); void processParticle(XSParticle* particle); void processAttributeWildcard(XSWildcard* wildcard); void processScope(XSComplexTypeDefinition* enclosingCTD, short scope); void processValueConstraint(XSConstants::VALUE_CONSTRAINT ConstraintType, const XMLCh* constraintValue); void processIdentityConstraintDefinition(XSNamedMap* identityConstraint); void processFields(StringList* fields); void processXPath(const XMLCh* xpath); void processChildren(); void processChildrenEnd(); void processTypeDefinitionOrRef(const XMLCh* enclose, XSTypeDefinition* type); void processSimpleTypeDefinitionOrRef(XSSimpleTypeDefinition* type); void processAttributeDeclarationOrRef(XSAttributeDeclaration* attrDecl); void processElementDeclarationOrRef(XSElementDeclaration* elemDecl); void processTypeDefinitionRef(const XMLCh* enclose, XSTypeDefinition* type); void processAttributeDeclarationRef(const XMLCh* enclose, XSAttributeDeclaration* attrDecl); void processElementDeclarationRef(const XMLCh* enclose, XSElementDeclaration* elemDecl); void sendReference(const XMLCh* elementName, XSObject* obj); void sendElementEmpty(const XMLCh* const elementName); void sendElementValueInt(const XMLCh* const elementName, int value); void sendElementValue(const XMLCh* const elementName, const XMLCh* const value); void sendElementValueList(const XMLCh* const elementName, const StringList* const values); void sendIndentedElement(const XMLCh* const elementName); void sendIndentedElementWithID(const XMLCh* const elementName, XSObject* obj); //adds the ID to the attribute list before sending void sendUnindentedElement(const XMLCh* const elementName); void writeOpen(const XMLCh* const elementName); void writeOpen(const XMLCh* const elementName, const StringList* const attrs); void writeClose(const XMLCh* const elementName); void writeValue(const XMLCh* const elementName, const XMLCh* const value); void writeValue(const XMLCh* const elementName, const StringList* const values); void writeEmpty(const XMLCh* const elementName, const StringList* const attrs); void writeEmpty(const XMLCh* const elementName); void writeString(const XMLCh* const string); const XMLCh* translateScope(XSConstants::SCOPE scope); const XMLCh* translateValueConstraint(XSConstants::VALUE_CONSTRAINT constraintKind); const XMLCh* translateBlockOrFinal(short val); const XMLCh* translateDerivationMethod(XSConstants::DERIVATION_TYPE derivation); const XMLCh* translateProcessContents(XSWildcard::PROCESS_CONTENTS processContents); const XMLCh* translateCompositor(XSModelGroup::COMPOSITOR_TYPE compositor); const XMLCh* translateValidity(PSVIItem::VALIDITY_STATE validity); const XMLCh* translateValidationAttempted(PSVIItem::ASSESSMENT_TYPE validation); const XMLCh* translateIdConstraintCategory(XSIDCDefinition::IC_CATEGORY category); const XMLCh* translateComplexContentType(XSComplexTypeDefinition::CONTENT_TYPE contentType); const XMLCh* translateSimpleTypeVariety(XSSimpleTypeDefinition::VARIETY variety); const XMLCh* translateOrderedFacet(XSSimpleTypeDefinition::ORDERING ordered); const XMLCh* translateFacet(XSSimpleTypeDefinition::FACET facetKind); const XMLCh* translateComponentType(XSConstants::COMPONENT_TYPE type); const XMLCh* translateBool(bool flag); XMLCh* createID(XSObject* obj); const XMLCh* getIdName(XSObject* obj); void incIndent(); void decIndent(); protected: XMLFormatter* fFormatter; XMLFormatter* fErrorFormatter; StringList* fAttrList; XMLCh* fTempResult; XMLCh* fIndentChars; XMLCh* fBaseUri; unsigned int fIndent; unsigned int fIndentCap; unsigned int fAnonNum; RefHashTableOf* fIdMap; RefVectorOf* fDefinedIds; RefArrayVectorOf* fIdNames; RefArrayVectorOf* fObjectLocations; RefHashTableOf* fPrefixMap; RefArrayVectorOf* fNamespaces; ValueVectorOf* fNSAttributes; //REVISIT dont need if NSAttrs in different object ValueStackOf* fElementChildren; RefVectorOf* fAttributesInfo; }; class PSVIAdvancedHandler: public XMLDocumentHandler { public: PSVIAdvancedHandler(PSVIWriterHandlers* writerHandler) : XMLDocumentHandler(), fWriterHandler(writerHandler) {} ~PSVIAdvancedHandler() {} void docCharacters(const XMLCh* const, const XMLSize_t, const bool) {} void docComment(const XMLCh* const) {} void docPI(const XMLCh* const, const XMLCh* const) {} void endDocument() {} void endElement(const XMLElementDecl&, const unsigned int, const bool, const XMLCh* const) {} void endEntityReference(const XMLEntityDecl&) {} void ignorableWhitespace(const XMLCh* const, const XMLSize_t, const bool) {} void resetDocument() {} void startDocument() {} void startElement(const XMLElementDecl&, const unsigned int, const XMLCh* const, const RefVectorOf& ,const XMLSize_t, const bool, const bool) {} void startEntityReference(const XMLEntityDecl&) {}; void XMLDecl(const XMLCh* const versionStr, const XMLCh* const encodingStr, const XMLCh* const standaloneStr, const XMLCh* const autoEncodingStr); private: PSVIWriterHandlers* fWriterHandler; }; #endif xerces-c-3.1.1/samples/src/PSVIWriter/PSVIWriterHandlers.cpp0000644000175000017500000022447611276506011022635 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include "PSVIWriterHandlers.hpp" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_USE static const XMLCh fgSpace[] = { chSpace, chNull }; static const XMLCh fgRoot[] = { chLatin_r, chLatin_o, chLatin_o, chLatin_t, chNull }; static const XMLCh fgChar[] = { chSpace, chLatin_C, chLatin_h, chLatin_a, chLatin_r, chNull }; // char static const XMLCh fgLine[] = { chSpace, chLatin_L, chLatin_i, chLatin_n, chLatin_e, chNull }; // line static const XMLCh fgError[] = { chLatin_E, chLatin_r, chLatin_r, chLatin_o, chLatin_r, chNull }; //Error static const XMLCh fgAtFile[] = { // at file chSpace, chLatin_a, chLatin_t, chSpace, chLatin_f, chLatin_i, chLatin_l, chLatin_e, chNull }; static const XMLCh fgFatalError[] = { //Fatal Error chLatin_F, chLatin_a, chLatin_t, chLatin_a, chLatin_l, chSpace, chLatin_E, chLatin_r, chLatin_r, chLatin_o, chLatin_r, chNull }; static const XMLCh fgMessage[] = { //Message chLatin_M, chLatin_e, chLatin_s, chLatin_s, chLatin_a, chLatin_g, chLatin_e, chNull }; static const XMLCh fgXsiNil[] = { //xsi:nil chLatin_x, chLatin_s, chLatin_i, chColon, chLatin_n, chLatin_i, chLatin_l, chNull }; static const XMLCh fgWarning[] = { //Warning chLatin_W, chLatin_a, chLatin_r, chLatin_n, chLatin_i, chLatin_n, chLatin_g, chNull }; static const XMLCh gXmlnsColonXsi[] = { //xmlns:xsi chLatin_x, chLatin_m, chLatin_l, chLatin_n, chLatin_s, chColon, chLatin_x, chLatin_s, chLatin_i, chNull }; static const XMLCh gXmlnsColonPsv[] = { //xmlns:psv chLatin_x, chLatin_m, chLatin_l, chLatin_n, chLatin_s, chColon, chLatin_p, chLatin_s, chLatin_v, chNull }; static const XMLCh gRef[] = { chLatin_r, chLatin_e, chLatin_f, chNull }; // ref static const XMLCh gId[] = { chLatin_i, chLatin_d, chNull }; // id static const XMLCh gEqualsQuote[] = { chEqual, chDoubleQuote, chNull }; static const XMLCh gAngleSlash[] = { chOpenAngle, chForwardSlash, chNull }; static const XMLCh gAngleFeed[] = { chCloseAngle, chLF, chNull }; static const XMLCh gSlashAngleFeed[] = { chForwardSlash, chCloseAngle, chLF, chNull }; static const XMLCh gQuoteAngleFeed[] = { chDoubleQuote, chCloseAngle, chLF, chNull }; static const XMLCh gActualValue[] = { chLatin_a, chLatin_c, chLatin_t, chLatin_u, chLatin_a, chLatin_l, chLatin_V, chLatin_a, chLatin_l, chLatin_u, chLatin_e, chNull }; static const XMLCh gDataType[] = { chLatin_d, chLatin_a, chLatin_t, chLatin_a, chLatin_T, chLatin_y, chLatin_p, chLatin_e, chNull }; static const XMLCh gDataValue[] = { chLatin_d, chLatin_a, chLatin_t, chLatin_a, chLatin_V, chLatin_a, chLatin_l, chLatin_u, chLatin_e, chNull }; static const XMLCh gCommentStart[] = { chOpenAngle, chBang, chDash, chDash, chLF, chNull}; static const XMLCh gCommentEnd[] = { chDash, chDash, chCloseAngle, chLF, chNull}; static const XMLCh gPartialElementPSVI[] = { chLatin_p, chLatin_a, chLatin_r, chLatin_t, chLatin_i, chLatin_t, chLatin_i, chLatin_a, chLatin_l, chLatin_E, chLatin_l, chLatin_e, chLatin_m, chLatin_e, chLatin_n, chLatin_t, chLatin_P, chLatin_S, chLatin_V, chLatin_I, chNull }; // --------------------------------------------------------------------------- // PSVIWriterHandlers: Constructors and Destructor // --------------------------------------------------------------------------- PSVIWriterHandlers::PSVIWriterHandlers(XMLFormatter* outputFormatter, XMLFormatter* errorFormatter) : PSVIHandler(), DefaultHandler() { fFormatter = outputFormatter; fErrorFormatter = (errorFormatter != NULL) ? errorFormatter : outputFormatter; fAttrList = new StringList(8, false); fTempResult = new XMLCh[51]; fIndentChars = (XMLCh*) XMLPlatformUtils::fgMemoryManager->allocate(101*sizeof(XMLCh)); fBaseUri = 0; XMLString::copyString(fIndentChars, XMLUni::fgZeroLenString); fIndent = 0; fIndentCap = 100; fAnonNum = 1000; fIdMap = new RefHashTableOf(101, false); fDefinedIds = new RefVectorOf(25, false); fIdNames = new RefArrayVectorOf(25, true); fObjectLocations = new RefArrayVectorOf(25, true); fPrefixMap = new RefHashTableOf(5, false); fNamespaces = new RefArrayVectorOf(5, false); fNSAttributes = new ValueVectorOf(15); fElementChildren = new ValueStackOf(20); fAttributesInfo = new RefVectorOf(8, true); } PSVIWriterHandlers::~PSVIWriterHandlers() { if (fBaseUri != NULL) XMLString::release(&fBaseUri); delete fAttrList; delete[] fTempResult; XMLPlatformUtils::fgMemoryManager->deallocate(fIndentChars); delete fIdMap; delete fDefinedIds; delete fIdNames; delete fObjectLocations; delete fPrefixMap; delete fNamespaces; delete fNSAttributes; delete fElementChildren; delete fAttributesInfo; } // ----------------------------------------------------------------------- // Convenience Utility // ----------------------------------------------------------------------- void PSVIWriterHandlers::resetPSVIFormatter(XMLFormatter* outputFormatter) { fFormatter = outputFormatter; } void PSVIWriterHandlers::resetDocument() { fIndent = 0; fAnonNum = 1000; XMLString::copyString(fIndentChars, XMLUni::fgZeroLenString); if (fBaseUri != NULL) XMLString::release(&fBaseUri); fIdMap->removeAll(); fDefinedIds->removeAllElements(); fIdNames->removeAllElements(); fObjectLocations->removeAllElements(); fPrefixMap->removeAll(); fNamespaces->removeAllElements(); fElementChildren->removeAllElements(); } // --------------------------------------------------------------------------- // PSVIWriterHandlers: Implementation of the SAX DocumentHandler interface // --------------------------------------------------------------------------- void PSVIWriterHandlers::startElement( const XMLCh* const /* uri */, const XMLCh* const /* localname */, const XMLCh* const /* qname */, const Attributes& attrs) { fAttributesInfo->removeAllElements(); for (XMLSize_t i=0; iaddElement( new AttrInfo( attrs.getURI(i), attrs.getLocalName(i), attrs.getType(i), attrs.getValue(i) ) ); } } void PSVIWriterHandlers::endElement( const XMLCh* const /* uri */, const XMLCh* const /* localname */, const XMLCh* const /* qname */) { } void PSVIWriterHandlers::startDocument() { fAttrList->removeAllElements(); fAttrList->addElement((XMLCh*)gXmlnsColonXsi); fAttrList->addElement((XMLCh*)PSVIUni::fgNamespaceInstance); fAttrList->addElement((XMLCh*)gXmlnsColonPsv); fAttrList->addElement((XMLCh*)PSVIUni::fgNamespacePsvi); fAttrList->addElement((XMLCh*)XMLUni::fgXMLNSString); fAttrList->addElement((XMLCh*)PSVIUni::fgNamespaceInfoset); writeOpen(PSVIUni::fgDocument, fAttrList); incIndent(); fElementChildren->push(false); } void PSVIWriterHandlers::endDocument() { processChildrenEnd(); sendElementEmpty(PSVIUni::fgDocumentElement); writeEmpty(PSVIUni::fgNotations); writeEmpty(PSVIUni::fgUnparsedEntities); sendElementValue(PSVIUni::fgBaseURI, fBaseUri); sendElementValue(PSVIUni::fgAllDeclarationsProcessed, PSVIUni::fgTrue); sendUnindentedElement(PSVIUni::fgDocument); resetDocument(); } void PSVIWriterHandlers::characters( const XMLCh* const chars, const XMLSize_t /* length */ ) { processChildren(); sendIndentedElement(PSVIUni::fgCharacter); sendElementValue(PSVIUni::fgTextContent, chars); sendUnindentedElement(PSVIUni::fgCharacter); } void PSVIWriterHandlers::ignorableWhitespace( const XMLCh* const /* chars */, const XMLSize_t /* length */) { //ignore it } void PSVIWriterHandlers::comment(const XMLCh* const chars, const XMLSize_t /* length */) { processChildren(); sendIndentedElement(PSVIUni::fgComment); sendElementValue(PSVIUni::fgContent, chars); sendUnindentedElement(PSVIUni::fgComment); } void PSVIWriterHandlers::processingInstruction( const XMLCh* const target, const XMLCh* const data) { processChildren(); sendIndentedElement(PSVIUni::fgProcessingInstruction); sendElementValue(PSVIUni::fgTarget, target); sendElementValue(PSVIUni::fgContent, data); sendUnindentedElement(PSVIUni::fgProcessingInstruction); } void PSVIWriterHandlers::startPrefixMapping(const XMLCh* const prefix, const XMLCh* const uri) { if (!fPrefixMap->containsKey(uri)) { XMLCh* permaUri = XMLString::replicate((XMLCh*)uri); XMLCh* permaPrefix = XMLString::replicate((XMLCh*)prefix); fNamespaces->addElement(permaUri); fPrefixMap->put(permaUri, permaPrefix); } } void PSVIWriterHandlers::endPrefixMapping(const XMLCh* const prefix) { for (unsigned int i=0; i < fNamespaces->size(); i++) { if (XMLString::equals(fPrefixMap->get(fNamespaces->elementAt(i)), prefix)) { XMLCh* uri = fNamespaces->elementAt(i); XMLCh* pre = fPrefixMap->get(uri); fPrefixMap->removeKey(uri); fNamespaces->removeElementAt(i); XMLString::release(&uri); XMLString::release(&pre); break; } } } InputSource* PSVIWriterHandlers::resolveEntity(XMLResourceIdentifier* resourceIdentifier) { if (fBaseUri != NULL) XMLString::release(&fBaseUri); fBaseUri = XMLString::replicate(resourceIdentifier->getBaseURI()); return 0; } InputSource* PSVIWriterHandlers::resolveEntity(const XMLCh* const, const XMLCh* const) { return 0; } // --------------------------------------------------------------------------- // PSVIWriterHandlers: Overrides of the SAX ErrorHandler interface // --------------------------------------------------------------------------- void PSVIWriterHandlers::error(const SAXParseException& e) { XMLCh* temp1 = new XMLCh[10]; XMLCh* temp2 = new XMLCh[10]; XMLString::binToText((unsigned long)e.getLineNumber(), temp1, 9, 10); XMLString::binToText((unsigned long)e.getColumnNumber(), temp2, 9, 10); *fErrorFormatter << fgError << fgAtFile << chSpace << e.getSystemId() << chComma << fgLine << chSpace << temp1 << chComma << fgChar << chSpace << temp2 << chLF << fgMessage << chColon << e.getMessage() << chLF; delete[] temp1; delete[] temp2; } void PSVIWriterHandlers::fatalError(const SAXParseException& e) { XMLCh* temp1 = new XMLCh[10]; XMLCh* temp2 = new XMLCh[10]; XMLString::binToText((unsigned long)e.getLineNumber(), temp1, 9, 10); XMLString::binToText((unsigned long)e.getColumnNumber(), temp2, 9, 10); *fErrorFormatter << fgFatalError << fgAtFile << chSpace << e.getSystemId() << chComma << fgLine << chSpace << temp1 << chComma << fgChar << chSpace << temp2 << chLF << fgMessage << chColon << e.getMessage() << chLF; delete[] temp1; delete[] temp2; resetDocument(); } void PSVIWriterHandlers::warning(const SAXParseException& e) { XMLCh* temp1 = new XMLCh[10]; XMLCh* temp2 = new XMLCh[10]; XMLString::binToText((unsigned long)e.getLineNumber(), temp1, 9, 10); XMLString::binToText((unsigned long)e.getColumnNumber(), temp2, 9, 10); *fErrorFormatter << fgWarning << fgAtFile << chSpace << e.getSystemId() << chComma << fgLine << chSpace << temp1 << chComma << fgChar << chSpace << temp2 << chLF << fgMessage << chColon << e.getMessage() << chLF; delete[] temp1; delete[] temp2; } void PSVIWriterHandlers::resetErrors() { } // --------------------------------------------------------------------------- // PSVIWriterHandlers: Overrides of the PSVIHandler interface // --------------------------------------------------------------------------- void PSVIWriterHandlers::handleAttributesPSVI( const XMLCh* const localName, const XMLCh* const uri, PSVIAttributeList* psviAttributes ) { processChildren(); fElementChildren->push(false); sendIndentedElement(PSVIUni::fgElement); sendElementValue(PSVIUni::fgNamespaceName, uri); sendElementValue(PSVIUni::fgLocalName, localName); sendElementValue(PSVIUni::fgPrefix, fPrefixMap->get(uri)); processAttributes(psviAttributes, fAttributesInfo); processInScopeNamespaces(); sendElementValue(PSVIUni::fgBaseURI, fBaseUri); } void PSVIWriterHandlers::handleElementPSVI( const XMLCh* const /* localName */, const XMLCh* const /* uri */, PSVIElement* elementInfo ) { processActualValue(elementInfo); processChildrenEnd(); processSchemaInformation(elementInfo->getSchemaInformation()); sendElementValue( PSVIUni::fgValidationAttempted, translateValidationAttempted(elementInfo->getValidationAttempted())); sendElementValue(PSVIUni::fgValidationContext, elementInfo->getValidationContext()); sendElementValue(PSVIUni::fgValidity, translateValidity(elementInfo->getValidity())); //REVISIT errorCodes not supported //processSchemaErrorCode(elementInfo->getErrorCodes()); sendElementEmpty(PSVIUni::fgSchemaErrorCode); sendElementValue(PSVIUni::fgSchemaNormalizedValue, elementInfo->getSchemaNormalizedValue()); sendElementValue(PSVIUni::fgCanonicalRepresentation, elementInfo->getCanonicalRepresentation()); sendElementValue(PSVIUni::fgSchemaSpecified, (elementInfo->getIsSchemaSpecified() ? PSVIUni::fgSchema : PSVIUni::fgInfoset)); sendElementValue(PSVIUni::fgSchemaDefault, elementInfo->getSchemaDefault()); processTypeDefinitionRef(PSVIUni::fgTypeDefinition, elementInfo->getTypeDefinition()); processTypeDefinitionRef(PSVIUni::fgMemberTypeDefinition, elementInfo->getMemberTypeDefinition()); sendElementEmpty(PSVIUni::fgNil); processElementDeclarationRef(PSVIUni::fgDeclaration, elementInfo->getElementDeclaration()); sendReference(PSVIUni::fgNotation, elementInfo->getNotationDeclaration()); sendElementEmpty(PSVIUni::fgIdIdrefTable); sendElementEmpty(PSVIUni::fgIdentityConstraintTable); sendUnindentedElement(PSVIUni::fgElement); } /*** * * * getValidity() * getValidationAttemped() * getValidationContext() * getIsSchemaSpecified() * getElementDeclaration() * getTypeDefinition() * getMemberTypeDefinition() * getSchemaInformation() * getSchemaDefault() * getSchemaNormalizedValue() * getCanonicalRepresentation() * getNotationDeclaration() * * ***/ void PSVIWriterHandlers::handlePartialElementPSVI( const XMLCh* const /* localName */, const XMLCh* const /* uri */, PSVIElement* elementInfo ) { writeString(gCommentStart); incIndent(); writeOpen(gPartialElementPSVI); incIndent(); processSchemaInformation(elementInfo->getSchemaInformation()); sendElementValue(PSVIUni::fgValidationAttempted , translateValidationAttempted(elementInfo->getValidationAttempted())); sendElementValue(PSVIUni::fgValidationContext , elementInfo->getValidationContext()); sendElementValue(PSVIUni::fgValidity , translateValidity(elementInfo->getValidity())); sendElementValue(PSVIUni::fgSchemaNormalizedValue , elementInfo->getSchemaNormalizedValue()); sendElementValue(PSVIUni::fgCanonicalRepresentation , elementInfo->getCanonicalRepresentation()); sendElementValue(PSVIUni::fgSchemaSpecified , (elementInfo->getIsSchemaSpecified() ? PSVIUni::fgSchema : PSVIUni::fgInfoset)); sendElementValue(PSVIUni::fgSchemaDefault , elementInfo->getSchemaDefault()); processTypeDefinitionRef(PSVIUni::fgTypeDefinition , elementInfo->getTypeDefinition()); processTypeDefinitionRef(PSVIUni::fgMemberTypeDefinition , elementInfo->getMemberTypeDefinition()); processElementDeclarationRef(PSVIUni::fgDeclaration , elementInfo->getElementDeclaration()); sendReference(PSVIUni::fgNotation , elementInfo->getNotationDeclaration()); decIndent(); writeClose(gPartialElementPSVI); decIndent(); writeString(gCommentEnd); } // --------------------------------------------------------------------------- // Private methods // --------------------------------------------------------------------------- void PSVIWriterHandlers::processAttributes(PSVIAttributeList* psviAttributes, const RefVectorOf* attributesInfo) { fNSAttributes->removeAllElements(); //will store the indecies of namespace attributes bool firstFlag = true; for (XMLSize_t i = 0; i < attributesInfo->size(); i++) { if (attributesInfo->elementAt(i)->getUri() == XMLUni::fgXMLNSURIName) { fNSAttributes->addElement(i); } else { if (firstFlag) { sendIndentedElement(PSVIUni::fgAttributes); firstFlag = false; } const XMLCh* localName = attributesInfo->elementAt(i)->getLocalName(); const XMLCh* namespaceUri = attributesInfo->elementAt(i)->getUri(); sendIndentedElement(PSVIUni::fgAttribute); sendElementValue(PSVIUni::fgNamespaceName, namespaceUri); sendElementValue(PSVIUni::fgLocalName, localName); sendElementValue(PSVIUni::fgPrefix, fPrefixMap->get(attributesInfo->elementAt(i)->getUri())); sendElementValue(PSVIUni::fgNormalizedValue, attributesInfo->elementAt(i)->getValue()); if (psviAttributes!=NULL && psviAttributes->getAttributePSVIAtIndex(i)!=NULL) { sendElementValue(PSVIUni::fgSpecified, translateBool(!(psviAttributes->getAttributePSVIAtIndex(i)->getIsSchemaSpecified()))); } else //the desired value is !schemaSpecified sendElementValue(PSVIUni::fgSpecified, PSVIUni::fgUnknown); sendElementValue(PSVIUni::fgAttributeType, attributesInfo->elementAt(i)->getType()); sendElementEmpty(PSVIUni::fgReferences); PSVIAttribute* psviAttr = psviAttributes->getAttributePSVIByName(localName, namespaceUri); processAttributePSVI(psviAttr); sendUnindentedElement(PSVIUni::fgAttribute); } } if (firstFlag) writeEmpty(PSVIUni::fgAttributes); else sendUnindentedElement(PSVIUni::fgAttributes); processNamespaceAttributes(psviAttributes, attributesInfo); } void PSVIWriterHandlers::processNamespaceAttributes(PSVIAttributeList* psviAttributes, const RefVectorOf* attributes) { if (fNSAttributes->size()==0) { writeEmpty(PSVIUni::fgNamespaceAttributes); } else { sendIndentedElement(PSVIUni::fgNamespaceAttributes); XMLSize_t ind; for (XMLSize_t count = 0; count < fNSAttributes->size(); count++) { ind = fNSAttributes->elementAt(count); sendIndentedElement(PSVIUni::fgAttribute); sendElementValue(PSVIUni::fgNamespaceName, XMLUni::fgXMLNSURIName); sendElementValue(PSVIUni::fgLocalName, attributes->elementAt(ind)->getLocalName()); sendElementValue(PSVIUni::fgPrefix, XMLUni::fgXMLNSString); sendElementValue(PSVIUni::fgNormalizedValue, attributes->elementAt(ind)->getValue()); if (psviAttributes!=NULL) { sendElementValue(PSVIUni::fgSpecified, translateBool( psviAttributes->getAttributePSVIByName( attributes->elementAt(ind)->getLocalName(), attributes->elementAt(ind)->getUri() )->getIsSchemaSpecified() ) ); } else sendElementValue(PSVIUni::fgSpecified, PSVIUni::fgUnknown); sendElementValue(PSVIUni::fgAttributeType, attributes->elementAt(ind)->getType()); // this property isn't relevent to PSVI sendElementEmpty(PSVIUni::fgReferences); sendUnindentedElement(PSVIUni::fgAttribute); } sendUnindentedElement(PSVIUni::fgNamespaceAttributes); } } void PSVIWriterHandlers::processAttributePSVI(PSVIAttribute* attrPSVI) { if (attrPSVI != NULL) { sendElementValue(PSVIUni::fgValidationAttempted, translateValidationAttempted(attrPSVI->getValidationAttempted())); sendElementValue(PSVIUni::fgValidationContext, attrPSVI->getValidationContext()); sendElementValue(PSVIUni::fgValidity, translateValidity(attrPSVI->getValidity())); //REVISIT errorCodes not supported //processSchemaErrorCode(attrPSVI->getErrorCodes()); sendElementEmpty(PSVIUni::fgSchemaErrorCode); sendElementValue(PSVIUni::fgSchemaNormalizedValue, attrPSVI->getSchemaNormalizedValue()); sendElementValue(PSVIUni::fgSchemaSpecified, (attrPSVI->getIsSchemaSpecified() ? PSVIUni::fgSchema : PSVIUni::fgInfoset)); sendElementValue(PSVIUni::fgSchemaDefault, attrPSVI->getSchemaDefault()); processTypeDefinitionRef(PSVIUni::fgTypeDefinition, attrPSVI->getTypeDefinition()); processTypeDefinitionOrRef(PSVIUni::fgMemberTypeDefinition, attrPSVI->getMemberTypeDefinition()); processAttributeDeclarationRef(PSVIUni::fgDeclaration, attrPSVI->getAttributeDeclaration()); processActualValue(attrPSVI); } } void PSVIWriterHandlers::processInScopeNamespaces() { sendIndentedElement(PSVIUni::fgInScopeNamespaces); sendIndentedElement(PSVIUni::fgNamespace); sendElementValue(PSVIUni::fgPrefix, PSVIUni::fgXml); sendElementValue(PSVIUni::fgNamespaceName, XMLUni::fgXMLURIName); sendUnindentedElement(PSVIUni::fgNamespace); for (unsigned int i=0; isize(); i++) { sendIndentedElement(PSVIUni::fgNamespace); sendElementValue(PSVIUni::fgPrefix, fPrefixMap->get(fNamespaces->elementAt(i))); sendElementValue(PSVIUni::fgNamespaceName, fNamespaces->elementAt(i)); sendUnindentedElement(PSVIUni::fgNamespace); } sendUnindentedElement(PSVIUni::fgInScopeNamespaces); } void PSVIWriterHandlers::processSchemaInformation(XSModel* model) { if (fElementChildren->size()!=1 || model==NULL) { sendElementEmpty(PSVIUni::fgSchemaInformation); } else { sendIndentedElement(PSVIUni::fgSchemaInformation); XSNamespaceItemList* namespaceItems = model->getNamespaceItems(); for (unsigned int i=0; i < namespaceItems->size(); i++) { processNamespaceItem(namespaceItems->elementAt(i)); } sendUnindentedElement(PSVIUni::fgSchemaInformation); } } void PSVIWriterHandlers::processNamespaceItem(XSNamespaceItem* namespaceItem) { if (!XMLString::equals(namespaceItem->getSchemaNamespace(), PSVIUni::fgNamespaceXmlSchema)) { sendIndentedElement(PSVIUni::fgNamespaceSchemaInformation); sendElementValue(PSVIUni::fgSchemaNamespace, namespaceItem->getSchemaNamespace()); processSchemaComponents(namespaceItem); processSchemaDocuments(namespaceItem); processSchemaAnnotations(namespaceItem->getAnnotations()); sendUnindentedElement(PSVIUni::fgNamespaceSchemaInformation); } } void PSVIWriterHandlers::processSchemaComponents(XSNamespaceItem* namespaceItem) { sendIndentedElement(PSVIUni::fgSchemaComponents); XSNamedMap* types = (XSNamedMap*)(namespaceItem->getComponents(XSConstants::TYPE_DEFINITION)); for (XMLSize_t typeCount = 0; typeCount < types->getLength(); typeCount++) { processTypeDefinition(types->item(typeCount)); } XSNamedMap* attributes = (XSNamedMap*)namespaceItem->getComponents(XSConstants::ATTRIBUTE_DECLARATION); for (XMLSize_t attrCount = 0; attrCount < attributes->getLength(); attrCount++) { processAttributeDeclaration(attributes->item(attrCount)); } XSNamedMap* elements = (XSNamedMap*)namespaceItem->getComponents(XSConstants::ELEMENT_DECLARATION); for (XMLSize_t elemCount = 0; elemCount < elements->getLength(); elemCount++) { processElementDeclaration(elements->item(elemCount)); } XSNamedMap* attrGroups = (XSNamedMap*)namespaceItem->getComponents(XSConstants::ATTRIBUTE_GROUP_DEFINITION); for (XMLSize_t attrGroupCount = 0; attrGroupCount < attrGroups->getLength(); attrGroupCount++) { processAttributeGroupDefinition(attrGroups->item(attrGroupCount)); } XSNamedMap* modelGroups = (XSNamedMap*)namespaceItem->getComponents(XSConstants::MODEL_GROUP_DEFINITION); for (XMLSize_t modelGroupCount = 0; modelGroupCount < modelGroups->getLength(); modelGroupCount++) { processModelGroupDefinition(modelGroups->item(modelGroupCount)); } XSNamedMap* notations = (XSNamedMap*)namespaceItem->getComponents(XSConstants::NOTATION_DECLARATION); for (XMLSize_t notationCount = 0; notationCount < notations->getLength(); notationCount++) { processNotationDeclaration(notations->item(notationCount)); } sendUnindentedElement(PSVIUni::fgSchemaComponents); } void PSVIWriterHandlers::processSchemaDocuments(XSNamespaceItem* namespaceItem) { const StringList* locations = namespaceItem->getDocumentLocations(); if (locations==NULL) { sendElementEmpty(PSVIUni::fgSchemaDocuments); } sendIndentedElement(PSVIUni::fgSchemaDocuments); for (unsigned int i = 0; i < locations->size(); i++) { sendIndentedElement(PSVIUni::fgSchemaDocument); sendElementValue(PSVIUni::fgDocumentLocation, locations->elementAt(i)); sendElementEmpty(PSVIUni::fgPsvDocument); //supposed to point to a document element, but we dont deal with them sendUnindentedElement(PSVIUni::fgSchemaDocument); } sendUnindentedElement(PSVIUni::fgSchemaDocuments); } void PSVIWriterHandlers::processSchemaAnnotations(XSAnnotationList* annotations) { if (annotations == NULL || annotations->size()==0) { sendElementEmpty(PSVIUni::fgSchemaAnnotations); } else { sendIndentedElement(PSVIUni::fgSchemaAnnotations); for (unsigned int i = 0; i < annotations->size(); i++) { processAnnotation(annotations->elementAt(i)); } sendUnindentedElement(PSVIUni::fgSchemaAnnotations); } } void PSVIWriterHandlers::processSchemaErrorCode(StringList* /* errors */ ) { //REVISIT //ErrorCodes not yet supported } void PSVIWriterHandlers::processTypeDefinition(XSTypeDefinition* type) { if (type->getTypeCategory() == XSTypeDefinition::COMPLEX_TYPE) { processComplexTypeDefinition((XSComplexTypeDefinition*)type); } else { //XSTypeDefinition::SIMPLE_TYPE processSimpleTypeDefinition((XSSimpleTypeDefinition*)type); } } void PSVIWriterHandlers::processComplexTypeDefinition(XSComplexTypeDefinition* complexType) { sendIndentedElementWithID(PSVIUni::fgComplexTypeDefinition, (XSObject*) complexType); if (complexType->getAnonymous()) sendElementEmpty(PSVIUni::fgName); else sendElementValue(PSVIUni::fgName, complexType->getName()); sendElementValue(PSVIUni::fgTargetNamespace, complexType->getNamespace()); processTypeDefinitionOrRef(PSVIUni::fgBaseTypeDefinition, complexType->getBaseType()); sendElementValue(PSVIUni::fgDerivationMethod, translateDerivationMethod(complexType->getDerivationMethod())); sendElementValue(PSVIUni::fgFinal, translateBlockOrFinal(complexType->getFinal())); sendElementValue(PSVIUni::fgAbstract, translateBool(complexType->getAbstract())); processAttributeUses(complexType->getAttributeUses()); processAttributeWildcard(complexType->getAttributeWildcard()); sendIndentedElement(PSVIUni::fgContentType); sendElementValue(PSVIUni::fgVariety, translateComplexContentType(complexType->getContentType())); if (complexType->getSimpleType()==NULL) { sendElementEmpty(PSVIUni::fgSimpleTypeDefinition); } else { processSimpleTypeDefinitionOrRef(complexType->getSimpleType()); } processParticle(complexType->getParticle()); sendUnindentedElement(PSVIUni::fgContentType); sendElementValue(PSVIUni::fgProhibitedSubstitutions, translateBlockOrFinal(complexType->getProhibitedSubstitutions())); processAnnotations(complexType->getAnnotations()); sendUnindentedElement(PSVIUni::fgComplexTypeDefinition); } void PSVIWriterHandlers::processSimpleTypeDefinition(XSSimpleTypeDefinition* simpleType) { sendIndentedElementWithID(PSVIUni::fgSimpleTypeDefinition, (XSObject*) simpleType); if (simpleType->getAnonymous()) sendElementEmpty(PSVIUni::fgName); else sendElementValue(PSVIUni::fgName, simpleType->getName()); sendElementValue(PSVIUni::fgTargetNamespace, simpleType->getNamespace()); processTypeDefinitionOrRef(PSVIUni::fgBaseTypeDefinition, simpleType->getBaseType()); processTypeDefinitionOrRef(PSVIUni::fgPrimitiveTypeDefinition, simpleType->getPrimitiveType()); processFacets(simpleType->getFacets(), simpleType->getMultiValueFacets()); processFundamentalFacets(simpleType); sendElementValue(PSVIUni::fgFinal, translateBlockOrFinal(simpleType->getFinal())); sendElementValue(PSVIUni::fgVariety, translateSimpleTypeVariety(simpleType->getVariety())); processTypeDefinitionOrRef(PSVIUni::fgItemTypeDefinition, simpleType->getItemType()); processMemberTypeDefinitions(simpleType->getMemberTypes()); processAnnotations(simpleType->getAnnotations()); sendUnindentedElement(PSVIUni::fgSimpleTypeDefinition); } void PSVIWriterHandlers::processModelGroupDefinition(XSModelGroupDefinition* modelGroup) { if (modelGroup == NULL) { sendElementEmpty(PSVIUni::fgModelGroupDefinition); } else { sendIndentedElementWithID(PSVIUni::fgModelGroupDefinition, (XSObject*) modelGroup); sendElementValue(PSVIUni::fgName, modelGroup->getName()); sendElementValue(PSVIUni::fgTargetNamespace, modelGroup->getNamespace()); processModelGroup(modelGroup->getModelGroup()); processAnnotation(modelGroup->getAnnotation()); sendUnindentedElement(PSVIUni::fgModelGroupDefinition); } } void PSVIWriterHandlers::processAttributeGroupDefinition(XSAttributeGroupDefinition* attributeGroup) { if (attributeGroup == NULL) { sendElementEmpty(PSVIUni::fgAttributeGroupDefinition); } else { sendIndentedElementWithID(PSVIUni::fgAttributeGroupDefinition, (XSObject*) attributeGroup); sendElementValue(PSVIUni::fgName, attributeGroup->getName()); sendElementValue(PSVIUni::fgTargetNamespace, attributeGroup->getNamespace()); processAttributeUses(attributeGroup->getAttributeUses()); processAttributeWildcard(attributeGroup->getAttributeWildcard()); processAnnotation(attributeGroup->getAnnotation()); sendUnindentedElement(PSVIUni::fgAttributeGroupDefinition); } } void PSVIWriterHandlers::processElementDeclaration(XSElementDeclaration* element) { if (element == NULL) { sendElementEmpty(PSVIUni::fgElementDeclaration); } else { sendIndentedElementWithID(PSVIUni::fgElementDeclaration, (XSObject*) element); sendElementValue(PSVIUni::fgName, element->getName()); sendElementValue(PSVIUni::fgTargetNamespace, element->getNamespace()); processTypeDefinitionOrRef(PSVIUni::fgTypeDefinition, element->getTypeDefinition()); processScope(element->getEnclosingCTDefinition(), element->getScope()); processValueConstraint(element->getConstraintType(), element->getConstraintValue()); sendElementValue(PSVIUni::fgNillable, translateBool(element->getNillable())); processIdentityConstraintDefinition(element->getIdentityConstraints()); processElementDeclarationRef(PSVIUni::fgSubstitutionGroupAffiliation, element->getSubstitutionGroupAffiliation()); sendElementValue(PSVIUni::fgSubstitutionGroupExclusions, translateBlockOrFinal(element->getSubstitutionGroupExclusions())); sendElementValue(PSVIUni::fgDisallowedSubstitutions, translateBlockOrFinal(element->getDisallowedSubstitutions())); sendElementValue(PSVIUni::fgAbstract, translateBool(element->getAbstract())); processAnnotation(element->getAnnotation()); sendUnindentedElement(PSVIUni::fgElementDeclaration); } } void PSVIWriterHandlers::processAttributeDeclaration(XSAttributeDeclaration* attribute) { if (attribute == NULL) { sendElementEmpty(PSVIUni::fgAttributeDeclaration); } else { sendIndentedElementWithID(PSVIUni::fgAttributeDeclaration, (XSObject*) attribute); sendElementValue(PSVIUni::fgName, attribute->getName()); sendElementValue(PSVIUni::fgTargetNamespace, attribute->getNamespace()); sendIndentedElement(PSVIUni::fgTypeDefinition); processSimpleTypeDefinitionOrRef(attribute->getTypeDefinition()); sendUnindentedElement(PSVIUni::fgTypeDefinition); processScope(attribute->getEnclosingCTDefinition(), attribute->getScope()); processValueConstraint(attribute->getConstraintType(), attribute->getConstraintValue()); processAnnotation(attribute->getAnnotation()); sendUnindentedElement(PSVIUni::fgAttributeDeclaration); } } void PSVIWriterHandlers::processNotationDeclaration(XSNotationDeclaration* notation) { if (notation == NULL) { sendElementEmpty(PSVIUni::fgNotationDeclaration); } else { sendIndentedElementWithID(PSVIUni::fgNotationDeclaration, (XSObject*) notation); sendElementValue(PSVIUni::fgName, notation->getName()); sendElementValue(PSVIUni::fgTargetNamespace, notation->getNamespace()); sendElementValue(PSVIUni::fgSystemIdentifier, notation->getSystemId()); sendElementValue(PSVIUni::fgPublicIdentifier, notation->getPublicId()); processAnnotation(notation->getAnnotation()); sendUnindentedElement(PSVIUni::fgNotationDeclaration); } } void PSVIWriterHandlers::processAnnotations(XSAnnotationList* annotations) { if (annotations == NULL) { sendElementEmpty(PSVIUni::fgAnnotations); } else { sendIndentedElement(PSVIUni::fgAnnotations); for (unsigned int i = 0; i < annotations->size(); i++) { processAnnotation(annotations->elementAt(i)); } sendUnindentedElement(PSVIUni::fgAnnotations); } } void PSVIWriterHandlers::processAttributeUses(XSAttributeUseList* attributeUses) { if (attributeUses == NULL) { sendElementEmpty(PSVIUni::fgAttributeUses); } else { sendIndentedElement(PSVIUni::fgAttributeUses); XSAttributeUse* attrUse; for (unsigned int i=0; i < attributeUses->size(); i++) { attrUse = attributeUses->elementAt(i); sendIndentedElement(PSVIUni::fgAttributeUse); sendElementValue(PSVIUni::fgRequired, translateBool(attrUse->getRequired())); processAttributeDeclarationOrRef(attrUse->getAttrDeclaration()); processValueConstraint(attrUse->getConstraintType(), attrUse->getConstraintValue()); sendUnindentedElement(PSVIUni::fgAttributeUse); } sendUnindentedElement(PSVIUni::fgAttributeUses); } } void PSVIWriterHandlers::processFacets(XSFacetList* facets, XSMultiValueFacetList* multiFacets) { if (facets == NULL && multiFacets == NULL) { sendElementEmpty(PSVIUni::fgFacets); } else { sendIndentedElement(PSVIUni::fgFacets); if (facets != NULL) { for (unsigned int facetCount = 0; facetCount < facets->size(); facetCount++) { XSFacet* facet = facets->elementAt(facetCount); sendIndentedElement(translateFacet(facet->getFacetKind())); sendElementValue(PSVIUni::fgValue, facet->getLexicalFacetValue()); sendElementValue(PSVIUni::fgFacetFixed, translateBool(facet->isFixed())); processAnnotation(facet->getAnnotation()); sendUnindentedElement(translateFacet(facet->getFacetKind())); } } if (multiFacets != NULL) { for (unsigned int multiFacetCount = 0; multiFacetCount < multiFacets->size(); multiFacetCount++) { XSMultiValueFacet* multiFacet = multiFacets->elementAt(multiFacetCount); sendIndentedElement(translateFacet(multiFacet->getFacetKind())); StringList* values = multiFacet->getLexicalFacetValues(); for (unsigned int i=0; i < values->size(); i++) { sendElementValue(PSVIUni::fgValue, values->elementAt(i)); } sendElementValue(PSVIUni::fgFacetFixed, translateBool(multiFacet->isFixed())); processAnnotations(multiFacet->getAnnotations()); sendUnindentedElement(translateFacet(multiFacet->getFacetKind())); } } sendUnindentedElement(PSVIUni::fgFacets); } } void PSVIWriterHandlers::processFundamentalFacets(XSSimpleTypeDefinition* type) { sendIndentedElement(PSVIUni::fgFundamentalFacets); sendIndentedElement(PSVIUni::fgOrdered); sendElementValue(PSVIUni::fgValue, translateOrderedFacet(type->getOrdered())); sendUnindentedElement(PSVIUni::fgOrdered); sendIndentedElement(PSVIUni::fgBounded); sendElementValue(PSVIUni::fgValue, translateBool(type->getBounded())); sendUnindentedElement(PSVIUni::fgBounded); sendIndentedElement(PSVIUni::fgCardinality); sendElementValue(PSVIUni::fgValue, translateBool(type->getFinite())); sendUnindentedElement(PSVIUni::fgCardinality); sendIndentedElement(PSVIUni::fgNumeric); sendElementValue(PSVIUni::fgValue, translateBool(type->getNumeric())); sendUnindentedElement(PSVIUni::fgNumeric); sendUnindentedElement(PSVIUni::fgFundamentalFacets); } void PSVIWriterHandlers::processMemberTypeDefinitions(XSSimpleTypeDefinitionList* memberTypes) { if (memberTypes == NULL) { sendElementEmpty(PSVIUni::fgMemberTypeDefinitions); } else { sendIndentedElement(PSVIUni::fgMemberTypeDefinitions); for (unsigned int i = 0; i < memberTypes->size(); i++) { processTypeDefinitionOrRef(PSVIUni::fgMemberTypeDefinition, (XSTypeDefinition*)memberTypes->elementAt(i)); } sendUnindentedElement(PSVIUni::fgMemberTypeDefinitions); } } void PSVIWriterHandlers::processAnnotation(XSAnnotation* annotation) { if (annotation == NULL) { sendElementEmpty(PSVIUni::fgAnnotation); } else { XSAnnotation* annot; annot = annotation; while (annot) { XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument* document = DOMImplementationRegistry::getDOMImplementation(XMLUni::fgZeroLenString)-> createDocument(); annot->writeAnnotation((DOMNode*)document, XSAnnotation::W3C_DOM_DOCUMENT); DOMElement* elem = document->getDocumentElement(); sendIndentedElement(PSVIUni::fgAnnotation); processDOMElement(PSVIUni::fgApplicationInformation, elem, PSVIUni::fgAppinfo); processDOMElement(PSVIUni::fgUserInformation, elem, PSVIUni::fgDocumentation); processDOMAttributes(elem->getAttributes()); sendUnindentedElement(PSVIUni::fgAnnotation); document->release(); annot = annot->getNext(); } } } void PSVIWriterHandlers::processDOMElement(const XMLCh* const encloseName, DOMElement* rootElem, const XMLCh* const elementName) { DOMNodeList* elems = rootElem->getElementsByTagNameNS(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, elementName); if (elems->getLength()==0) { sendElementEmpty(encloseName); } else { sendIndentedElement(encloseName); for (XMLSize_t i=0; i < elems->getLength(); i++) { DOMElement* elem = (DOMElement*)elems->item(i); sendIndentedElement(PSVIUni::fgElement); sendElementValue(PSVIUni::fgNamespaceName, elem->getNamespaceURI()); sendElementValue(PSVIUni::fgLocalName, elem->getLocalName()); sendElementValue(PSVIUni::fgPrefix, elem->getPrefix()); sendIndentedElement(PSVIUni::fgChildren); sendIndentedElement(PSVIUni::fgCharacter); sendElementValue(PSVIUni::fgTextContent, elem->getTextContent()); sendUnindentedElement(PSVIUni::fgCharacter); sendUnindentedElement(PSVIUni::fgChildren); processDOMAttributes(elem->getAttributes()); sendUnindentedElement(PSVIUni::fgElement); } sendUnindentedElement(encloseName); } } void PSVIWriterHandlers::processDOMAttributes(DOMNamedNodeMap* attrs) { fNSAttributes->removeAllElements(); bool firstFlag = true; for (XMLSize_t count=0; count < attrs->getLength(); count++) { DOMAttr* attr = (DOMAttr*)attrs->item(count); if (XMLString::equals(attr->getNamespaceURI(), XMLUni::fgXMLNSURIName)) { fNSAttributes->addElement(count); } else { if (firstFlag) { sendIndentedElement(PSVIUni::fgAttributes); firstFlag = false; } sendIndentedElement(PSVIUni::fgAttribute); sendElementValue(PSVIUni::fgNamespaceName, attr->getNamespaceURI()); sendElementValue(PSVIUni::fgLocalName, attr->getLocalName()); sendElementValue(PSVIUni::fgPrefix, attr->getPrefix()); sendElementValue(PSVIUni::fgNormalizedValue, attr->getValue()); sendElementValue(PSVIUni::fgSpecified, translateBool(attr->getSpecified())); sendElementValue(PSVIUni::fgAttributeType, attr->getSchemaTypeInfo()->getTypeName()); sendElementEmpty(PSVIUni::fgReferences); sendUnindentedElement(PSVIUni::fgAttribute); } } if (firstFlag) writeEmpty(PSVIUni::fgAttributes); else sendUnindentedElement(PSVIUni::fgAttributes); //now for namespace attributes if (fNSAttributes->size()==0) { writeEmpty(PSVIUni::fgNamespaceAttributes); } else { sendIndentedElement(PSVIUni::fgNamespaceAttributes); for (XMLSize_t NScount = 0; NScount < fNSAttributes->size(); NScount++) { DOMAttr* attr = (DOMAttr*)attrs->item(fNSAttributes->elementAt(NScount)); sendIndentedElement(PSVIUni::fgAttribute); sendElementValue(PSVIUni::fgNamespaceName, XMLUni::fgXMLNSURIName); sendElementValue(PSVIUni::fgLocalName, attr->getLocalName()); sendElementValue(PSVIUni::fgPrefix, attr->getPrefix()); sendElementValue(PSVIUni::fgNormalizedValue, attr->getValue()); sendElementValue(PSVIUni::fgSpecified, translateBool(attr->getSpecified())); sendElementValue(PSVIUni::fgAttributeType, attr->getSchemaTypeInfo()->getTypeName()); sendElementEmpty(PSVIUni::fgReferences); sendUnindentedElement(PSVIUni::fgAttribute); } sendUnindentedElement(PSVIUni::fgNamespaceAttributes); } } void PSVIWriterHandlers::processWildcard(XSWildcard* wildcard) { if (wildcard == NULL) { sendElementEmpty(PSVIUni::fgWildcard); } else { sendIndentedElement(PSVIUni::fgWildcard); sendIndentedElement(PSVIUni::fgNamespaceConstraint); if (wildcard->getConstraintType()==XSWildcard::NSCONSTRAINT_ANY) { sendElementValue(PSVIUni::fgVariety, PSVIUni::fgAny); sendElementEmpty(PSVIUni::fgNamespaces); } else { if (wildcard->getConstraintType()==XSWildcard::NSCONSTRAINT_DERIVATION_LIST) { sendElementEmpty(PSVIUni::fgVariety); sendElementValueList(PSVIUni::fgNamespaces, wildcard->getNsConstraintList()); } else { //NSCONSTRAINT_NOT sendElementValue(PSVIUni::fgVariety, PSVIUni::fgNot); sendElementValueList(PSVIUni::fgNamespaces, wildcard->getNsConstraintList()); } } sendUnindentedElement(PSVIUni::fgNamespaceConstraint); sendElementValue(PSVIUni::fgProcessContents, translateProcessContents(wildcard->getProcessContents())); processAnnotation(wildcard->getAnnotation()); sendUnindentedElement(PSVIUni::fgWildcard); } } void PSVIWriterHandlers::processModelGroup(XSModelGroup* modelGroup) { if (modelGroup == NULL) { sendElementEmpty(PSVIUni::fgModelGroup); } else { sendIndentedElement(PSVIUni::fgModelGroup); sendElementValue(PSVIUni::fgCompositor, translateCompositor(modelGroup->getCompositor())); sendIndentedElement(PSVIUni::fgParticles); for (unsigned int i=0; i < modelGroup->getParticles()->size(); i++) { processParticle(modelGroup->getParticles()->elementAt(i)); } sendUnindentedElement(PSVIUni::fgParticles); processAnnotation(modelGroup->getAnnotation()); sendUnindentedElement(PSVIUni::fgModelGroup); } } void PSVIWriterHandlers::processParticle(XSParticle* particle) { if (particle == NULL) { sendElementEmpty(PSVIUni::fgParticle); } else { sendIndentedElement(PSVIUni::fgParticle); sendElementValueInt(PSVIUni::fgMinOccurs, particle->getMinOccurs()); if (particle->getMaxOccursUnbounded()) { sendElementValue(PSVIUni::fgMaxOccurs, PSVIUni::fgUnbounded); } else { sendElementValueInt(PSVIUni::fgMaxOccurs,particle->getMaxOccurs()); } sendIndentedElement(PSVIUni::fgTerm); switch (particle->getTermType()) { case XSParticle::TERM_ELEMENT: processElementDeclarationOrRef(particle->getElementTerm()); break; case XSParticle::TERM_MODELGROUP: processModelGroup(particle->getModelGroupTerm()); break; case XSParticle::TERM_WILDCARD: processWildcard(particle->getWildcardTerm()); break; default: break; } sendUnindentedElement(PSVIUni::fgTerm); sendUnindentedElement(PSVIUni::fgParticle); } } void PSVIWriterHandlers::processAttributeWildcard(XSWildcard* wildcard) { if (wildcard == NULL) { sendElementEmpty(PSVIUni::fgAttributeWildcard); } else { sendIndentedElement(PSVIUni::fgAttributeWildcard); processWildcard(wildcard); sendUnindentedElement(PSVIUni::fgAttributeWildcard); } } void PSVIWriterHandlers::processScope(XSComplexTypeDefinition* enclosingCTD, short scope) { switch (scope) { case XSConstants::SCOPE_ABSENT: sendElementEmpty(PSVIUni::fgScope); break; case XSConstants::SCOPE_LOCAL: sendIndentedElement(PSVIUni::fgScope); sendReference(PSVIUni::fgComplexTypeDefinition, enclosingCTD); sendUnindentedElement(PSVIUni::fgScope); break; case XSConstants::SCOPE_GLOBAL: sendElementValue(PSVIUni::fgScope, PSVIUni::fgGlobal); } } void PSVIWriterHandlers::processValueConstraint(XSConstants::VALUE_CONSTRAINT valueConstraintType, const XMLCh* constraintValue) { if (valueConstraintType == XSConstants::VALUE_CONSTRAINT_NONE) { sendElementEmpty(PSVIUni::fgValueConstraint); } else { sendIndentedElement(PSVIUni::fgValueConstraint); sendElementValue(PSVIUni::fgVariety, translateValueConstraint(valueConstraintType)); sendElementValue(PSVIUni::fgValue, constraintValue); sendUnindentedElement(PSVIUni::fgValueConstraint); } } void PSVIWriterHandlers::processIdentityConstraintDefinition(XSNamedMap* idConstraint) { if (idConstraint == NULL) { sendElementEmpty(PSVIUni::fgIdentityConstraintDefinitions); } else { sendIndentedElement(PSVIUni::fgIdentityConstraintDefinitions); for (XMLSize_t i=0; i < idConstraint->getLength(); i++) { XSIDCDefinition* constraint = idConstraint->item(i); sendIndentedElementWithID(PSVIUni::fgIdentityConstraintDefinition, (XSObject*) constraint); sendElementValue(PSVIUni::fgName, constraint->getName()); sendElementValue(PSVIUni::fgTargetNamespace, constraint->getNamespace()); sendElementValue(PSVIUni::fgIdentityConstraintCategory, translateIdConstraintCategory(constraint->getCategory())); sendIndentedElement(PSVIUni::fgSelector); processXPath(constraint->getSelectorStr()); sendUnindentedElement(PSVIUni::fgSelector); processFields(constraint->getFieldStrs()); sendReference(PSVIUni::fgReferencedKey, constraint->getRefKey()); processAnnotations(constraint->getAnnotations()); sendUnindentedElement(PSVIUni::fgIdentityConstraintDefinition); } sendUnindentedElement(PSVIUni::fgIdentityConstraintDefinitions); } } void PSVIWriterHandlers::processFields(StringList* fields) { sendIndentedElement(PSVIUni::fgFields); for (unsigned int i=0; i < fields->size(); i++) { processXPath(fields->elementAt(i)); } sendUnindentedElement(PSVIUni::fgFields); } void PSVIWriterHandlers::processXPath(const XMLCh* xpath) { sendIndentedElement(PSVIUni::fgXpath); sendElementValue(PSVIUni::fgXpath, xpath); sendUnindentedElement(PSVIUni::fgXpath); } void PSVIWriterHandlers::processChildren() { if (!fElementChildren->empty() && !fElementChildren->peek()) { fElementChildren->pop(); sendIndentedElement(PSVIUni::fgChildren); fElementChildren->push(true); } } void PSVIWriterHandlers::processChildrenEnd() { if (fElementChildren->pop()) { sendUnindentedElement(PSVIUni::fgChildren); } else { writeEmpty(PSVIUni::fgChildren); } } void PSVIWriterHandlers::processTypeDefinitionOrRef(const XMLCh* enclose, XSTypeDefinition* type) { if (type==NULL) { sendElementEmpty(enclose); } else { sendIndentedElement(enclose); if (type->getAnonymous() && !(fDefinedIds->containsElement(type))) { processTypeDefinition(type); } else { if (type->getTypeCategory() == XSTypeDefinition::SIMPLE_TYPE) { sendReference(PSVIUni::fgSimpleTypeDefinition, type); } else { sendReference(PSVIUni::fgComplexTypeDefinition, type); } } sendUnindentedElement(enclose); } } void PSVIWriterHandlers::processSimpleTypeDefinitionOrRef(XSSimpleTypeDefinition* type) { if (type==NULL) { sendElementEmpty(PSVIUni::fgSimpleTypeDefinition); } else { if (type->getAnonymous() && !(fDefinedIds->containsElement(type))) { processSimpleTypeDefinition(type); } else { sendReference(PSVIUni::fgSimpleTypeDefinition, type); } } } void PSVIWriterHandlers::processAttributeDeclarationOrRef(XSAttributeDeclaration* attrDecl) { if (attrDecl==NULL) { sendElementEmpty(PSVIUni::fgAttributeDeclaration); } else { if (fDefinedIds->containsElement(attrDecl) || (attrDecl->getScope() == XSConstants::SCOPE_GLOBAL)) { sendReference(PSVIUni::fgAttributeDeclaration, attrDecl); } else { processAttributeDeclaration(attrDecl); } } } void PSVIWriterHandlers::processElementDeclarationOrRef(XSElementDeclaration* elemDecl) { if (elemDecl==NULL) { sendElementEmpty(PSVIUni::fgElementDeclaration); } else { if (fDefinedIds->containsElement(elemDecl) || (elemDecl->getScope() == XSConstants::SCOPE_GLOBAL)) { sendReference(PSVIUni::fgElementDeclaration, elemDecl); } else { processElementDeclaration(elemDecl); } } } void PSVIWriterHandlers::processTypeDefinitionRef(const XMLCh* enclose, XSTypeDefinition* type) { if (type==NULL) { sendElementEmpty(enclose); } else { sendIndentedElement(enclose); if (type->getTypeCategory() == XSTypeDefinition::SIMPLE_TYPE) { sendReference(PSVIUni::fgSimpleTypeDefinition, type); } else { sendReference(PSVIUni::fgComplexTypeDefinition, type); } sendUnindentedElement(enclose); } } void PSVIWriterHandlers::processAttributeDeclarationRef(const XMLCh* /* enclose */, XSAttributeDeclaration* attrDecl) { if (attrDecl == NULL) { sendElementEmpty(PSVIUni::fgDeclaration); } else { sendIndentedElement(PSVIUni::fgDeclaration); sendReference(PSVIUni::fgAttributeDeclaration, attrDecl); sendUnindentedElement(PSVIUni::fgDeclaration); } } void PSVIWriterHandlers::processElementDeclarationRef(const XMLCh* enclose, XSElementDeclaration* elemDecl) { if (elemDecl==NULL) { sendElementEmpty(enclose); } else { sendIndentedElement(enclose); sendReference(PSVIUni::fgElementDeclaration, elemDecl); sendUnindentedElement(enclose); } } void PSVIWriterHandlers::sendReference(const XMLCh* elementName, XSObject* obj) { if (obj==NULL) { sendElementEmpty(elementName); } else { fAttrList->removeAllElements(); fAttrList->addElement((XMLCh*)gRef); fAttrList->addElement((XMLCh*)getIdName(obj)); fAttrList->addElement((XMLCh*)fgXsiNil); fAttrList->addElement((XMLCh*)PSVIUni::fgTrue); writeEmpty(elementName, fAttrList); } } void PSVIWriterHandlers::sendElementEmpty(const XMLCh* const elementName) { fAttrList->removeAllElements(); fAttrList->addElement((XMLCh*)fgXsiNil); fAttrList->addElement((XMLCh*)PSVIUni::fgTrue); writeEmpty(elementName, fAttrList); } void PSVIWriterHandlers::sendElementValueInt(const XMLCh* const elementName, int value) { XMLString::binToText(value, fTempResult, 50, 10); writeValue(elementName, fTempResult); } void PSVIWriterHandlers::sendElementValue(const XMLCh* const elementName, const XMLCh* const value) { if (value==NULL || XMLString::equals(value, XMLUni::fgZeroLenString)) { sendElementEmpty(elementName); } else { writeValue(elementName, value); } } void PSVIWriterHandlers::sendElementValueList(const XMLCh* const elementName, const StringList* const values) { if (values==NULL) { sendElementEmpty(elementName); } else { writeValue(elementName, values); } } void PSVIWriterHandlers::sendIndentedElement(const XMLCh* const elementName) { writeOpen(elementName); incIndent(); } void PSVIWriterHandlers::sendIndentedElementWithID(const XMLCh* const elementName, XSObject* obj) { fDefinedIds->addElement(obj); fAttrList->removeAllElements(); fAttrList->addElement((XMLCh*)gId); fAttrList->addElement((XMLCh*)getIdName(obj)); writeOpen(elementName, fAttrList); incIndent(); } void PSVIWriterHandlers::sendUnindentedElement(const XMLCh* const elementName) { decIndent(); writeClose(elementName); } void PSVIWriterHandlers::writeOpen(const XMLCh* const elementName) { *fFormatter << XMLFormatter::NoEscapes << fIndentChars << chOpenAngle << elementName << gAngleFeed; } void PSVIWriterHandlers::writeOpen(const XMLCh* const elementName, const StringList* const attrs) { *fFormatter << XMLFormatter::NoEscapes << fIndentChars << chOpenAngle << elementName ; for (unsigned int i=0; i < attrs->size(); i+=2 ) { *fFormatter << XMLFormatter::NoEscapes << chSpace << attrs->elementAt(i) << gEqualsQuote << XMLFormatter::AttrEscapes << attrs->elementAt(i+1) << XMLFormatter::NoEscapes << chDoubleQuote ; } *fFormatter << XMLFormatter::NoEscapes << gAngleFeed; } void PSVIWriterHandlers::writeClose(const XMLCh* const elementName) { *fFormatter << XMLFormatter::NoEscapes << fIndentChars << gAngleSlash << elementName << gAngleFeed; } void PSVIWriterHandlers::writeValue(const XMLCh* const elementName, const XMLCh* const value) { *fFormatter << XMLFormatter::NoEscapes << fIndentChars << chOpenAngle << elementName << chCloseAngle << XMLFormatter::CharEscapes << value << XMLFormatter::NoEscapes << gAngleSlash << elementName << gAngleFeed ; } void PSVIWriterHandlers::writeValue(const XMLCh* const elementName, const StringList* const values) { *fFormatter << XMLFormatter::NoEscapes << fIndentChars << chOpenAngle << elementName << chCloseAngle; for (unsigned int i=0; i < values->size(); i++) { *fFormatter << XMLFormatter::CharEscapes << values->elementAt(i) << chSpace; } *fFormatter << XMLFormatter::NoEscapes << gAngleSlash << elementName << gAngleFeed ; } void PSVIWriterHandlers::writeEmpty(const XMLCh* const elementName, const StringList* const attrs) { *fFormatter << XMLFormatter::NoEscapes << fIndentChars << chOpenAngle << elementName ; for (unsigned int i=0; i < attrs->size(); i+=2 ) { *fFormatter << XMLFormatter::NoEscapes << chSpace << attrs->elementAt(i) << gEqualsQuote << XMLFormatter::AttrEscapes << attrs->elementAt(i+1) << XMLFormatter::NoEscapes << chDoubleQuote ; } *fFormatter << XMLFormatter::NoEscapes << gSlashAngleFeed ; } void PSVIWriterHandlers::writeEmpty(const XMLCh* const elementName) { *fFormatter << XMLFormatter::NoEscapes << fIndentChars << chOpenAngle << elementName << gSlashAngleFeed ; } void PSVIWriterHandlers::writeString(const XMLCh* const string) { *fFormatter << XMLFormatter::NoEscapes << fIndentChars << string; } const XMLCh* PSVIWriterHandlers::translateScope(XSConstants::SCOPE scope) { switch (scope) { case XSConstants::SCOPE_ABSENT : return NULL; case XSConstants::SCOPE_GLOBAL : return PSVIUni::fgGlobal; case XSConstants::SCOPE_LOCAL : return PSVIUni::fgLocal; default : return PSVIUni::fgUnknown; } } const XMLCh* PSVIWriterHandlers::translateValueConstraint(XSConstants::VALUE_CONSTRAINT constraintKind) { switch (constraintKind) { case XSConstants::VALUE_CONSTRAINT_DEFAULT : return PSVIUni::fgDefault; case XSConstants::VALUE_CONSTRAINT_FIXED : return PSVIUni::fgVCFixed; default : return PSVIUni::fgUnknown; } } const XMLCh* PSVIWriterHandlers::translateBlockOrFinal(short val) { XMLString::copyString(fTempResult, XMLUni::fgZeroLenString); if ((val & XSConstants::DERIVATION_EXTENSION) != 0) { XMLString::catString(fTempResult, PSVIUni::fgExtension); } if ((val & XSConstants::DERIVATION_RESTRICTION) != 0) { if (fTempResult && *fTempResult) XMLString::catString(fTempResult, fgSpace); XMLString::catString(fTempResult, PSVIUni::fgRestriction); } if ((val & XSConstants::DERIVATION_LIST) != 0) { if (fTempResult && *fTempResult) XMLString::catString(fTempResult, fgSpace); XMLString::catString(fTempResult, PSVIUni::fgList); } if ((val & XSConstants::DERIVATION_UNION) != 0) { if (fTempResult && *fTempResult) XMLString::catString(fTempResult, fgSpace); XMLString::catString(fTempResult, PSVIUni::fgUnion); } if ((val & XSConstants::DERIVATION_SUBSTITUTION) != 0) { if (fTempResult && *fTempResult) XMLString::catString(fTempResult, fgSpace); XMLString::catString(fTempResult, PSVIUni::fgSubstitution); } return fTempResult; } const XMLCh* PSVIWriterHandlers::translateDerivationMethod(XSConstants::DERIVATION_TYPE derivation) { switch (derivation) { case XSConstants::DERIVATION_EXTENSION : return PSVIUni::fgExtension; case XSConstants::DERIVATION_LIST : return PSVIUni::fgList; case XSConstants::DERIVATION_RESTRICTION : return PSVIUni::fgRestriction; case XSConstants::DERIVATION_SUBSTITUTION : return PSVIUni::fgSubstitution; case XSConstants::DERIVATION_UNION : return PSVIUni::fgUnion; case XSConstants::DERIVATION_NONE : return NULL; default : return PSVIUni::fgUnknown; } } const XMLCh* PSVIWriterHandlers::translateProcessContents(XSWildcard::PROCESS_CONTENTS processContents) { switch (processContents) { case XSWildcard::PC_LAX : return PSVIUni::fgLax; case XSWildcard::PC_SKIP : return PSVIUni::fgSkip; case XSWildcard::PC_STRICT : return PSVIUni::fgStrict; default : return PSVIUni::fgUnknown; } } const XMLCh* PSVIWriterHandlers::translateCompositor(XSModelGroup::COMPOSITOR_TYPE compositor) { switch (compositor) { case XSModelGroup::COMPOSITOR_SEQUENCE : return PSVIUni::fgSequence; case XSModelGroup::COMPOSITOR_CHOICE : return PSVIUni::fgChoice; case XSModelGroup::COMPOSITOR_ALL : return PSVIUni::fgAll; default : return PSVIUni::fgUnknown; } } const XMLCh* PSVIWriterHandlers::translateValidity(PSVIItem::VALIDITY_STATE validity) { switch (validity) { case PSVIItem::VALIDITY_NOTKNOWN : return PSVIUni::fgNotKnown; case PSVIItem::VALIDITY_VALID : return PSVIUni::fgValid; case PSVIItem::VALIDITY_INVALID : return PSVIUni::fgInvalid; default : return PSVIUni::fgUnknown; } } const XMLCh* PSVIWriterHandlers::translateValidationAttempted(PSVIItem::ASSESSMENT_TYPE validation) { switch (validation) { case PSVIItem::VALIDATION_NONE : return PSVIUni::fgNone; case PSVIItem::VALIDATION_PARTIAL : return PSVIUni::fgPartial; case PSVIItem::VALIDATION_FULL : return PSVIUni::fgFull; default : return PSVIUni::fgUnknown; } } const XMLCh* PSVIWriterHandlers::translateIdConstraintCategory(XSIDCDefinition::IC_CATEGORY category) { switch (category) { case XSIDCDefinition::IC_KEY : return PSVIUni::fgKey; case XSIDCDefinition::IC_KEYREF : return PSVIUni::fgKeyref; case XSIDCDefinition::IC_UNIQUE : return PSVIUni::fgUnique; default : return PSVIUni::fgUnknown; } } const XMLCh* PSVIWriterHandlers::translateComplexContentType(XSComplexTypeDefinition::CONTENT_TYPE contentType) { switch (contentType) { case XSComplexTypeDefinition::CONTENTTYPE_ELEMENT : return PSVIUni::fgElementOnly; case XSComplexTypeDefinition::CONTENTTYPE_EMPTY : return PSVIUni::fgEmpty; case XSComplexTypeDefinition::CONTENTTYPE_MIXED : return PSVIUni::fgMixed; case XSComplexTypeDefinition::CONTENTTYPE_SIMPLE : return PSVIUni::fgSimple; default : return PSVIUni::fgUnknown; } } const XMLCh* PSVIWriterHandlers::translateSimpleTypeVariety(XSSimpleTypeDefinition::VARIETY variety) { switch (variety) { case XSSimpleTypeDefinition::VARIETY_LIST : return PSVIUni::fgList; case XSSimpleTypeDefinition::VARIETY_UNION : return PSVIUni::fgUnion; case XSSimpleTypeDefinition::VARIETY_ATOMIC : return PSVIUni::fgAtomic; case XSSimpleTypeDefinition::VARIETY_ABSENT : return NULL; default : return PSVIUni::fgUnknown; } } const XMLCh* PSVIWriterHandlers::translateOrderedFacet(XSSimpleTypeDefinition::ORDERING ordered) { switch (ordered) { case XSSimpleTypeDefinition::ORDERED_FALSE: return PSVIUni::fgFalse; case XSSimpleTypeDefinition::ORDERED_PARTIAL: return PSVIUni::fgPartial; case XSSimpleTypeDefinition::ORDERED_TOTAL: return PSVIUni::fgTotal; default : return PSVIUni::fgUnknown; } } const XMLCh* PSVIWriterHandlers::translateFacet(XSSimpleTypeDefinition::FACET facetKind) { switch (facetKind) { case XSSimpleTypeDefinition::FACET_WHITESPACE : return PSVIUni::fgWhiteSpace; case XSSimpleTypeDefinition::FACET_LENGTH : return PSVIUni::fgLength; case XSSimpleTypeDefinition::FACET_MINLENGTH : return PSVIUni::fgMinLength; case XSSimpleTypeDefinition::FACET_MAXLENGTH : return PSVIUni::fgMaxLength; case XSSimpleTypeDefinition::FACET_TOTALDIGITS : return PSVIUni::fgTotalDigits; case XSSimpleTypeDefinition::FACET_FRACTIONDIGITS : return PSVIUni::fgFractionDigits; case XSSimpleTypeDefinition::FACET_PATTERN : return PSVIUni::fgPattern; case XSSimpleTypeDefinition::FACET_ENUMERATION : return PSVIUni::fgEnumeration; case XSSimpleTypeDefinition::FACET_MAXINCLUSIVE : return PSVIUni::fgMaxInclusive; case XSSimpleTypeDefinition::FACET_MAXEXCLUSIVE : return PSVIUni::fgMaxExclusive; case XSSimpleTypeDefinition::FACET_MINEXCLUSIVE : return PSVIUni::fgMinExclusive; case XSSimpleTypeDefinition::FACET_MININCLUSIVE : return PSVIUni::fgMinInclusive; default : return PSVIUni::fgUnknown; } } const XMLCh* PSVIWriterHandlers::translateComponentType(XSConstants::COMPONENT_TYPE type) { switch (type) { case XSConstants::TYPE_DEFINITION : return PSVIUni::fgType; case XSConstants::ANNOTATION : return PSVIUni::fgAnnot; case XSConstants::ATTRIBUTE_DECLARATION : return PSVIUni::fgAttr; case XSConstants::ATTRIBUTE_GROUP_DEFINITION : return PSVIUni::fgAg; case XSConstants::ATTRIBUTE_USE : return PSVIUni::fgAu; case XSConstants::ELEMENT_DECLARATION : return PSVIUni::fgElt; case XSConstants::MODEL_GROUP_DEFINITION : return PSVIUni::fgMg; case XSConstants::NOTATION_DECLARATION : return PSVIUni::fgNot; case XSConstants::IDENTITY_CONSTRAINT : return PSVIUni::fgIdc; default : return PSVIUni::fgUnknown; } } const XMLCh* PSVIWriterHandlers::translateBool(bool flag) { return (flag ? PSVIUni::fgTrue : PSVIUni::fgFalse); } XMLCh* PSVIWriterHandlers::createID(XSObject* obj) { const XMLCh* objPrefix = fPrefixMap->get(obj->getNamespace()); XMLCh* result = new XMLCh[100]; if (XMLString::equals(obj->getNamespace(), PSVIUni::fgNamespaceXmlSchema)) { XMLString::copyString(result, obj->getName()); } else { const XMLCh period[] = { chPeriod, chNull }; XMLCh anonNum[6]; bool hasPrefix = objPrefix!=NULL && *objPrefix!=0; if (hasPrefix) { XMLString::copyString(result, objPrefix); XMLString::catString(result, period); XMLString::catString(result, translateComponentType(obj->getType())); } else { XMLString::copyString(result, translateComponentType(obj->getType())); } XMLString::catString(result, period); if (obj->getType()==XSConstants::TYPE_DEFINITION && ((XSTypeDefinition*)obj)->getAnonymous()) { const XMLCh anon[] = { chLatin_a, chLatin_n, chLatin_o, chLatin_n, chUnderscore, chNull }; XMLString::catString(result, anon); XMLString::binToText(fAnonNum, anonNum, 5, 10); XMLString::catString(result, anonNum); fAnonNum++; } else { XMLString::catString(result, obj->getName()); if (!hasPrefix) { XMLString::catString(result, period); XMLString::binToText(fAnonNum, anonNum, 5, 10); XMLString::catString(result, anonNum); fAnonNum++; } } } fIdNames->addElement(result); return result; } const XMLCh* PSVIWriterHandlers::getIdName(XSObject* obj) { XMLCh* objLoc = new XMLCh[9]; XMLString::sizeToText((XMLSize_t)obj, objLoc, 8, 16); XMLCh* idName = fIdMap->get(objLoc); if (!idName) { idName = createID(obj); fIdMap->put(objLoc, idName); fObjectLocations->addElement(objLoc); } else { delete objLoc; } return idName; } void PSVIWriterHandlers::incIndent() { XMLCh tab[] = {chHTab, chNull}; if (fIndent >= fIndentCap) { fIndentCap *= 2; XMLCh* temp = (XMLCh*) XMLPlatformUtils::fgMemoryManager->allocate((fIndentCap+1)*sizeof(XMLCh)); XMLString::copyString(temp, fIndentChars); XMLPlatformUtils::fgMemoryManager->deallocate(fIndentChars); fIndentChars = temp; } XMLString::catString(fIndentChars, tab); fIndent++; } void PSVIWriterHandlers::decIndent() { fIndentChars[XMLString::stringLen(fIndentChars)-1] = chNull; fIndent--; } /*** * yyyy-mm-ddThh:mm:ss.sssss ***/ void PSVIWriterHandlers::formDateTime(XSValue* obj) { char buffer[1024]; memset(buffer, 0, sizeof buffer); sprintf(buffer, "%d-%d-%dT%d:%d:%f", obj->fData.fValue.f_datetime.f_year , obj->fData.fValue.f_datetime.f_month , obj->fData.fValue.f_datetime.f_day , obj->fData.fValue.f_datetime.f_hour , obj->fData.fValue.f_datetime.f_min , obj->fData.fValue.f_datetime.f_second + obj->fData.fValue.f_datetime.f_milisec); XMLCh *value = XMLString::transcode(buffer); ArrayJanitor jan(value); writeValue(gDataValue, value); } /*** * * unsignedShort * 0 * ***/ void PSVIWriterHandlers::processActualValue(PSVIItem* item) { if (!item) return; XSValue* obj = item->getActualValue(); if (obj) { char buffer[1024]; writeString(gCommentStart); incIndent(); writeOpen(gActualValue); incIndent(); switch (obj->fData.f_datatype) { case XSValue::dt_boolean: { writeValue(gDataType, SchemaSymbols::fgDT_BOOLEAN); writeValue(gDataValue, XMLUni::fgBooleanValueSpace[obj->fData.fValue.f_bool? 0: 1]); } break; case XSValue::dt_decimal: { writeValue(gDataType, SchemaSymbols::fgDT_DECIMAL); sprintf( buffer,"%f", obj->fData.fValue.f_decimal.f_dvalue); XMLCh *value = XMLString::transcode(buffer); ArrayJanitor jan(value); writeValue(gDataValue, value); } break; case XSValue::dt_float: { writeValue(gDataType, SchemaSymbols::fgDT_FLOAT); sprintf( buffer,"%f", obj->fData.fValue.f_float); XMLCh *value = XMLString::transcode(buffer); ArrayJanitor jan(value); writeValue(gDataValue, value); } break; case XSValue::dt_double: { writeValue(gDataType, SchemaSymbols::fgDT_DOUBLE); sprintf( buffer,"%f", obj->fData.fValue.f_double); XMLCh *value = XMLString::transcode(buffer); ArrayJanitor jan(value); writeValue(gDataValue, value); } break; case XSValue::dt_duration: { writeValue(gDataType, SchemaSymbols::fgDT_DURATION); formDateTime(obj); } break; case XSValue::dt_dateTime: { writeValue(gDataType, SchemaSymbols::fgDT_DATETIME); formDateTime(obj); } break; case XSValue::dt_time: { writeValue(gDataType, SchemaSymbols::fgDT_TIME); formDateTime(obj); } break; case XSValue::dt_date: { writeValue(gDataType, SchemaSymbols::fgDT_DATE); formDateTime(obj); } break; case XSValue::dt_gYearMonth: { writeValue(gDataType, SchemaSymbols::fgDT_YEARMONTH); formDateTime(obj); } break; case XSValue::dt_gYear: { writeValue(gDataType, SchemaSymbols::fgDT_YEAR); formDateTime(obj); } break; case XSValue::dt_gMonthDay: { writeValue(gDataType, SchemaSymbols::fgDT_MONTHDAY); formDateTime(obj); } break; case XSValue::dt_gDay: { writeValue(gDataType, SchemaSymbols::fgDT_DAY); formDateTime(obj); } break; case XSValue::dt_gMonth: { writeValue(gDataType, SchemaSymbols::fgDT_MONTH); formDateTime(obj); } break; case XSValue::dt_hexBinary: { writeValue(gDataType, SchemaSymbols::fgDT_HEXBINARY); writeValue(gDataValue, obj->fData.fValue.f_strVal); } break; case XSValue::dt_base64Binary: { writeValue(gDataType, SchemaSymbols::fgDT_BASE64BINARY); writeValue(gDataValue, obj->fData.fValue.f_strVal); } break; case XSValue::dt_integer: { writeValue(gDataType, SchemaSymbols::fgDT_INTEGER); sprintf( buffer,"%ld", obj->fData.fValue.f_long); XMLCh *value = XMLString::transcode(buffer); ArrayJanitor jan(value); writeValue(gDataValue, value); } break; case XSValue::dt_nonPositiveInteger: { writeValue(gDataType, SchemaSymbols::fgDT_NONPOSITIVEINTEGER); sprintf( buffer,"%ld", obj->fData.fValue.f_long); XMLCh *value = XMLString::transcode(buffer); ArrayJanitor jan(value); writeValue(gDataValue, value); } break; case XSValue::dt_negativeInteger: { writeValue(gDataType, SchemaSymbols::fgDT_NEGATIVEINTEGER); sprintf( buffer,"%ld", obj->fData.fValue.f_long); XMLCh *value = XMLString::transcode(buffer); ArrayJanitor jan(value); writeValue(gDataValue, value); } break; case XSValue::dt_long: { writeValue(gDataType, SchemaSymbols::fgDT_LONG); sprintf( buffer,"%ld", obj->fData.fValue.f_long); XMLCh *value = XMLString::transcode(buffer); ArrayJanitor jan(value); writeValue(gDataValue, value); } break; case XSValue::dt_int: { writeValue(gDataType, SchemaSymbols::fgDT_INT); sprintf( buffer,"%d", obj->fData.fValue.f_int); XMLCh *value = XMLString::transcode(buffer); ArrayJanitor jan(value); writeValue(gDataValue, value); } break; case XSValue::dt_short: { writeValue(gDataType, SchemaSymbols::fgDT_SHORT); sprintf( buffer,"%d", obj->fData.fValue.f_short); XMLCh *value = XMLString::transcode(buffer); ArrayJanitor jan(value); writeValue(gDataValue, value); } break; case XSValue::dt_byte: { writeValue(gDataType, SchemaSymbols::fgDT_BYTE); sprintf( buffer,"%d", obj->fData.fValue.f_char); XMLCh *value = XMLString::transcode(buffer); ArrayJanitor jan(value); writeValue(gDataValue, value); } break; case XSValue::dt_nonNegativeInteger: { writeValue(gDataType, SchemaSymbols::fgDT_NONNEGATIVEINTEGER); sprintf( buffer,"%ld", obj->fData.fValue.f_long); XMLCh *value = XMLString::transcode(buffer); ArrayJanitor jan(value); writeValue(gDataValue, value); } break; case XSValue::dt_unsignedLong: { writeValue(gDataType, SchemaSymbols::fgDT_ULONG); sprintf( buffer,"%lu", obj->fData.fValue.f_ulong); XMLCh *value = XMLString::transcode(buffer); ArrayJanitor jan(value); writeValue(gDataValue, value); } break; case XSValue::dt_unsignedInt: { writeValue(gDataType, SchemaSymbols::fgDT_UINT); sprintf( buffer,"%u", obj->fData.fValue.f_uint); XMLCh *value = XMLString::transcode(buffer); ArrayJanitor jan(value); writeValue(gDataValue, value); } break; case XSValue::dt_unsignedShort: { writeValue(gDataType, SchemaSymbols::fgDT_USHORT); sprintf( buffer,"%u", obj->fData.fValue.f_ushort); XMLCh *value = XMLString::transcode(buffer); ArrayJanitor jan(value); writeValue(gDataValue, value); } break; case XSValue::dt_unsignedByte: { writeValue(gDataType, SchemaSymbols::fgDT_UBYTE); sprintf( buffer,"%u", obj->fData.fValue.f_uchar); XMLCh *value = XMLString::transcode(buffer); ArrayJanitor jan(value); writeValue(gDataValue, value); } break; case XSValue::dt_positiveInteger: { writeValue(gDataType, SchemaSymbols::fgDT_POSITIVEINTEGER); sprintf( buffer,"%ld", obj->fData.fValue.f_long); XMLCh *value = XMLString::transcode(buffer); ArrayJanitor jan(value); writeValue(gDataValue, value); } break; case XSValue::dt_string: case XSValue::dt_anyURI: case XSValue::dt_QName: case XSValue::dt_NOTATION: case XSValue::dt_normalizedString: case XSValue::dt_token: case XSValue::dt_language: case XSValue::dt_NMTOKEN: case XSValue::dt_NMTOKENS: case XSValue::dt_Name: case XSValue::dt_NCName: case XSValue::dt_ID: case XSValue::dt_IDREF: case XSValue::dt_IDREFS: case XSValue::dt_ENTITY: case XSValue::dt_ENTITIES: break; //we shouldn't see them default: break; } decIndent(); writeClose(gActualValue); decIndent(); writeString(gCommentEnd); delete obj; } } void PSVIAdvancedHandler::XMLDecl(const XMLCh* const versionStr, const XMLCh* const encodingStr, const XMLCh* const standaloneStr, const XMLCh* const autoEncodingStr) { if (encodingStr && *encodingStr) fWriterHandler->sendElementValue(PSVIUni::fgCharacterEncodingScheme, encodingStr); else fWriterHandler->sendElementValue(PSVIUni::fgCharacterEncodingScheme, autoEncodingStr); if (standaloneStr && *standaloneStr) fWriterHandler->sendElementValue(PSVIUni::fgStandalone, standaloneStr); else fWriterHandler->sendElementEmpty(PSVIUni::fgStandalone); fWriterHandler->sendElementValue(PSVIUni::fgVersion, versionStr); } xerces-c-3.1.1/samples/src/PSVIWriter/PSVIWriter.cpp0000644000175000017500000002643611274567126021164 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ //REVISIT /* * $Id: PSVIWriter.cpp 833057 2009-11-05 15:25:10Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include "PSVIWriter.hpp" #include #include #include #include #include #include #include #include #if defined(XERCES_NEW_IOSTREAMS) #include #else #include #endif // --------------------------------------------------------------------------- // Local helper methods // --------------------------------------------------------------------------- void usage() { XERCES_STD_QUALIFIER cout << "\nUsage:\n" " PSVIWriter [options] \n\n" "This program invokes the SAX2XMLReaderImpl, and then exposes the\n" "underlying PSVI of each parsed XML file, using SAX2 API.\n\n" "Options:\n" " -f Enable full schema constraint checking processing. Defaults to off.\n" " -o=xxx Output PSVI to file xxx (default is stdout)\n" " -e=xxx Output errors to file xxx (default is stdout)\n" " -u=xxx Handle unrepresentable chars [fail | rep | ref*].\n" " -x=XXX Use a particular encoding for output (UTF8*).\n" " -l Indicate the input file is a List File that has a list of xml files.\n" " Default to off (Input file is an XML file).\n" " -? Show this help.\n\n" " * = Default if not provided explicitly.\n" << XERCES_STD_QUALIFIER endl; } // --------------------------------------------------------------------------- // Program entry point // --------------------------------------------------------------------------- int main(int argC, char* argV[]) { // Check command line and extract arguments. if (argC < 2) { usage(); return 1; } static const char* encodingName = "UTF8"; static XMLFormatter::UnRepFlags unRepFlags = XMLFormatter::UnRep_CharRef; const char* xmlFile = 0; bool doList = false; //REVISIT bool schemaFullChecking = false; bool errorOccurred = false; const char* psviOut = 0; const char* errorOut = 0; XMLFormatTarget* psviTarget = 0; XMLFormatTarget* errorTarget = 0; XMLFormatter* psviFormatter = 0; XMLFormatter* errorFormatter = 0; char fileName[80] =""; int argInd; for (argInd = 1; argInd < argC; argInd++) { // Break out on first parm not starting with a dash if (argV[argInd][0] != '-') break; // Watch for special case help request if (!strcmp(argV[argInd], "-?")) { usage(); return 2; } else if (!strcmp(argV[argInd], "-l") || !strcmp(argV[argInd], "-L")) { doList = true; } else if (!strcmp(argV[argInd], "-f") || !strcmp(argV[argInd], "-F")) { schemaFullChecking = true; } else if (!strncmp(argV[argInd], "-o=", 3) || !strncmp(argV[argInd], "-O=", 3)) { psviOut = &argV[argInd][3]; } else if (!strncmp(argV[argInd], "-e=", 3) || !strncmp(argV[argInd], "-E=", 3)) { errorOut = &argV[argInd][3]; } else if (!strncmp(argV[argInd], "-x=", 3) || !strncmp(argV[argInd], "-X=", 3)) { // Get out the encoding name encodingName = &argV[argInd][3]; } else if (!strncmp(argV[argInd], "-u=", 3) || !strncmp(argV[argInd], "-U=", 3)) { const char* const parm = &argV[argInd][3]; if (!strcmp(parm, "fail")) unRepFlags = XMLFormatter::UnRep_Fail; else if (!strcmp(parm, "rep")) unRepFlags = XMLFormatter::UnRep_Replace; else if (!strcmp(parm, "ref")) unRepFlags = XMLFormatter::UnRep_CharRef; else { XERCES_STD_QUALIFIER cerr << "Unknown -u= value: " << parm << XERCES_STD_QUALIFIER endl; XMLPlatformUtils::Terminate(); return 2; } } else { XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[argInd] << "', ignoring it\n" << XERCES_STD_QUALIFIER endl; } } // // There should be only one and only one parameter left, and that // should be the file name. // if (argInd != argC - 1) { usage(); return 1; } // Initialize the XML4C2 system try { XMLPlatformUtils::Initialize(); } catch (const XMLException& toCatch) { XERCES_STD_QUALIFIER cerr << "Error during initialization! Message:\n" << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl; return 1; } // // Create a SAX parser object, then set it to validate or not. // SAX2XMLReaderImpl* parser = new SAX2XMLReaderImpl(); parser->setFeature(XMLUni::fgSAX2CoreNameSpaces, true); parser->setFeature(XMLUni::fgXercesSchema, true); parser->setFeature(XMLUni::fgXercesHandleMultipleImports, true); parser->setFeature(XMLUni::fgXercesSchemaFullChecking, schemaFullChecking); parser->setFeature(XMLUni::fgSAX2CoreNameSpacePrefixes, false); parser->setFeature(XMLUni::fgSAX2CoreValidation, true); parser->setFeature(XMLUni::fgXercesDynamic, true); // // Based on commandline arguments, create XMLFormatters for PSVI output and errors // if (!doList) { if (psviOut==0) { psviTarget = new StdOutFormatTarget(); } else { psviTarget = new LocalFileFormatTarget(psviOut); } psviFormatter = new XMLFormatter(encodingName, psviTarget, XMLFormatter::NoEscapes, unRepFlags); } if (errorOut==0) { errorTarget = new StdOutFormatTarget(); } else { errorTarget = new LocalFileFormatTarget(errorOut); } errorFormatter = new XMLFormatter(encodingName, errorTarget, XMLFormatter::NoEscapes, unRepFlags); // // Create our SAX handler object and install it as the handlers // PSVIWriterHandlers* handler; if (doList) handler = new PSVIWriterHandlers(0, errorFormatter); else handler = new PSVIWriterHandlers(psviFormatter, errorFormatter); PSVIAdvancedHandler* advancedHandler = new PSVIAdvancedHandler(handler); parser->installAdvDocHandler(advancedHandler); parser->setPSVIHandler(handler); parser->setContentHandler(handler); parser->setLexicalHandler(handler); parser->setXMLEntityResolver(handler); parser->setErrorHandler(handler); // // Get the starting time and kick off the parse of the indicated // file. Catch any exceptions that might propogate out of it. // unsigned long duration; bool more = true; XERCES_STD_QUALIFIER ifstream fin; // the input is a list file if (doList) //REVISIT fin.open(argV[argInd]); if (fin.fail()) { XERCES_STD_QUALIFIER cerr <<"Cannot open the list file: " << argV[argInd] << XERCES_STD_QUALIFIER endl; return 2; } while (more) //REVISIT { char fURI[1000]; //initialize the array to zeros memset(fURI,0,sizeof(fURI)); if (doList) { if (! fin.eof() ) { fin.getline (fURI, sizeof(fURI)); if (!*fURI) continue; else { xmlFile =fURI; XMLString::trim((char*)xmlFile); XERCES_STD_QUALIFIER cerr << "==Parsing== \"" << xmlFile << "\"" << XERCES_STD_QUALIFIER endl; } if (psviOut==0) { if (psviTarget==0 && psviFormatter==0) { psviTarget = new StdOutFormatTarget(); psviFormatter = new XMLFormatter(encodingName, psviTarget, XMLFormatter::NoEscapes, unRepFlags); handler->resetPSVIFormatter(psviFormatter); } } else { strcpy(fileName, psviOut); if (strrchr(xmlFile, '\\')>strrchr(xmlFile, '/')) { strcat(fileName, strrchr(xmlFile, '\\')); } else { strcat(fileName, strrchr(xmlFile, '/')); } if (psviFormatter) delete psviFormatter; if (psviTarget) delete psviTarget; psviTarget = new LocalFileFormatTarget(fileName); psviFormatter = new XMLFormatter(encodingName, psviTarget, XMLFormatter::NoEscapes, unRepFlags); handler->resetPSVIFormatter(psviFormatter); } } else break; } else { xmlFile = argV[argInd]; more = false; //REVISIT } //reset error count first handler->resetErrors(); try { const unsigned long startMillis = XMLPlatformUtils::getCurrentMillis(); parser->parse(xmlFile); const unsigned long endMillis = XMLPlatformUtils::getCurrentMillis(); duration = endMillis - startMillis; } catch (const OutOfMemoryException&) { XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl; errorOccurred = true; continue; } catch (const XMLException& e) { XERCES_STD_QUALIFIER cerr << "\nError during parsing: '" << xmlFile << "'\n" << "Exception message is: \n" << StrX(e.getMessage()) << "\n" << XERCES_STD_QUALIFIER endl; errorOccurred = true; continue; } catch (...) { XERCES_STD_QUALIFIER cerr << "\nUnexpected exception during parsing: '" << xmlFile << "'\n" << XERCES_STD_QUALIFIER endl;; errorOccurred = true; continue; } } if (doList) //REVISIT fin.close(); // // Delete the parser itself. Must be done prior to calling Terminate, below. // delete parser; delete advancedHandler; delete handler; delete psviFormatter; delete errorFormatter; delete psviTarget; delete errorTarget; // And call the termination method XMLPlatformUtils::Terminate(); if (errorOccurred) return 4; else return 0; } xerces-c-3.1.1/samples/src/PParse/0000755000175000017500000000000011363617314015675 5ustar borisborisxerces-c-3.1.1/samples/src/PParse/PParse.cpp0000644000175000017500000002421211274567126017602 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: PParse.cpp 833057 2009-11-05 15:25:10Z borisk $ */ // --------------------------------------------------------------------------- // This sample program demonstrates the progressive parse capabilities of // the parser system. It allows you to do a scanFirst() call followed by // a loop which calls scanNext(). You can drop out when you've found what // ever it is you want. In our little test, our event handler looks for // 16 new elements then sets a flag to indicate its found what it wants. // At that point, our progressive parse loop below exits. // // The parameters are: // // [-?] - Show usage and exit // [-v=xxx] - Validation scheme [always | never | auto*] // [-n] - Enable namespace processing // [-s] - Enable schema processing // [-f] - Enable full schema constraint checking // filename - The path to the XML file to parse // // * = Default if not provided explicitly // These are non-case sensitive // --------------------------------------------------------------------------- // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include "PParse.hpp" #include // --------------------------------------------------------------------------- // Local data // // xmlFile // The path to the file to parser. Set via command line. // // doNamespaces // Indicates whether namespace processing should be done. // // doSchema // Indicates whether schema processing should be done. // // schemaFullChecking // Indicates whether full schema constraint checking should be done. // // valScheme // Indicates what validation scheme to use. It defaults to 'auto', but // can be set via the -v= command. // --------------------------------------------------------------------------- static char* xmlFile = 0; static bool doNamespaces = false; static bool doSchema = false; static bool schemaFullChecking = false; static SAXParser::ValSchemes valScheme = SAXParser::Val_Auto; // --------------------------------------------------------------------------- // Local helper methods // --------------------------------------------------------------------------- static void usage() { XERCES_STD_QUALIFIER cout << "\nUsage:\n" " PParse [options] \n\n" "This program demonstrates the progressive parse capabilities of\n" "the parser system. It allows you to do a scanFirst() call followed by\n" "a loop which calls scanNext(). You can drop out when you've found what\n" "ever it is you want. In our little test, our event handler looks for\n" "16 new elements then sets a flag to indicate its found what it wants.\n" "At that point, our progressive parse loop exits.\n\n" "Options:\n" " -v=xxx - Validation scheme [always | never | auto*].\n" " -n - Enable namespace processing [default is off].\n" " -s - Enable schema processing [default is off].\n" " -f - Enable full schema constraint checking [default is off].\n" " -? - Show this help.\n\n" " * = Default if not provided explicitly.\n" << XERCES_STD_QUALIFIER endl; } // --------------------------------------------------------------------------- // Program entry point // --------------------------------------------------------------------------- int main(int argC, char* argV[]) { // Initialize the XML4C system try { XMLPlatformUtils::Initialize(); } catch (const XMLException& toCatch) { XERCES_STD_QUALIFIER cerr << "Error during initialization! :\n" << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl; return 1; } // Check command line and extract arguments. if (argC < 2) { usage(); XMLPlatformUtils::Terminate(); return 1; } // See if non validating dom parser configuration is requested. int parmInd; for (parmInd = 1; parmInd < argC; parmInd++) { // Break out on first parm not starting with a dash if (argV[parmInd][0] != '-') break; // Watch for special case help request if (!strcmp(argV[parmInd], "-?")) { usage(); XMLPlatformUtils::Terminate(); return 2; } else if (!strncmp(argV[parmInd], "-v=", 3) || !strncmp(argV[parmInd], "-V=", 3)) { const char* const parm = &argV[parmInd][3]; if (!strcmp(parm, "never")) valScheme = SAXParser::Val_Never; else if (!strcmp(parm, "auto")) valScheme = SAXParser::Val_Auto; else if (!strcmp(parm, "always")) valScheme = SAXParser::Val_Always; else { XERCES_STD_QUALIFIER cerr << "Unknown -v= value: " << parm << XERCES_STD_QUALIFIER endl; XMLPlatformUtils::Terminate(); return 2; } } else if (!strcmp(argV[parmInd], "-n") || !strcmp(argV[parmInd], "-N")) { doNamespaces = true; } else if (!strcmp(argV[parmInd], "-s") || !strcmp(argV[parmInd], "-S")) { doSchema = true; } else if (!strcmp(argV[parmInd], "-f") || !strcmp(argV[parmInd], "-F")) { schemaFullChecking = true; } else { XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[parmInd] << "', ignoring it\n" << XERCES_STD_QUALIFIER endl; } } // // And now we have to have only one parameter left and it must be // the file name. // if (parmInd + 1 != argC) { usage(); XMLPlatformUtils::Terminate(); return 1; } xmlFile = argV[parmInd]; int errorCount = 0; // // Create a SAX parser object to use and create our SAX event handlers // and plug them in. // SAXParser* parser = new SAXParser; PParseHandlers handler; parser->setDocumentHandler(&handler); parser->setErrorHandler(&handler); parser->setValidationScheme(valScheme); parser->setDoNamespaces(doNamespaces); parser->setDoSchema(doSchema); parser->setHandleMultipleImports (true); parser->setValidationSchemaFullChecking(schemaFullChecking); // // Ok, lets do the progressive parse loop. On each time around the // loop, we look and see if the handler has found what its looking // for. When it does, we fall out then. // unsigned long duration; int errorCode = 0; try { // Create a progressive scan token XMLPScanToken token; const unsigned long startMillis = XMLPlatformUtils::getCurrentMillis(); if (!parser->parseFirst(xmlFile, token)) { XERCES_STD_QUALIFIER cerr << "scanFirst() failed\n" << XERCES_STD_QUALIFIER endl; XMLPlatformUtils::Terminate(); return 1; } // // We started ok, so lets call scanNext() until we find what we want // or hit the end. // bool gotMore = true; while (gotMore && !parser->getErrorCount()) gotMore = parser->parseNext(token); const unsigned long endMillis = XMLPlatformUtils::getCurrentMillis(); duration = endMillis - startMillis; errorCount = parser->getErrorCount(); // // Reset the parser-> In this simple progrma, since we just exit // now, its not technically required. But, in programs which // would remain open, you should reset after a progressive parse // in case you broke out before the end of the file. This insures // that all opened files, sockets, etc... are closed. // parser->parseReset(token); } catch (const OutOfMemoryException&) { XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl; errorCode = 5; } catch (const XMLException& toCatch) { XERCES_STD_QUALIFIER cerr << "\nAn error occurred: '" << xmlFile << "'\n" << "Exception message is: \n" << StrX(toCatch.getMessage()) << "\n" << XERCES_STD_QUALIFIER endl; errorCode = 4; } if(errorCode) { XMLPlatformUtils::Terminate(); return errorCode; } if (!errorCount) { XERCES_STD_QUALIFIER cout << xmlFile << ": " << duration << " ms (" << handler.getElementCount() << " elems, " << handler.getAttrCount() << " attrs, " << handler.getSpaceCount() << " spaces, " << handler.getCharacterCount() << " chars)" << XERCES_STD_QUALIFIER endl; } // // Delete the parser itself. Must be done prior to calling Terminate, below. // delete parser; // And call the termination method XMLPlatformUtils::Terminate(); if (errorCount > 0) return 4; else return 0; } xerces-c-3.1.1/samples/src/PParse/PParse.hpp0000644000175000017500000000522310523637166017606 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: PParse.hpp 471735 2006-11-06 13:53:58Z amassari $ */ // --------------------------------------------------------------------------- // Includes for all the program files to see // --------------------------------------------------------------------------- #if defined(XERCES_NEW_IOSTREAMS) #include #else #include #endif #include #include #include "PParseHandlers.hpp" // --------------------------------------------------------------------------- // This is a simple class that lets us do easy (though not terribly efficient) // trancoding of XMLCh data to local code page for display. // --------------------------------------------------------------------------- class StrX { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- StrX(const XMLCh* const toTranscode) { // Call the private transcoding method fLocalForm = XMLString::transcode(toTranscode); } ~StrX() { XMLString::release(&fLocalForm); } // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const char* localForm() const { return fLocalForm; } private : // ----------------------------------------------------------------------- // Private data members // // fLocalForm // This is the local code page form of the string. // ----------------------------------------------------------------------- char* fLocalForm; }; inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump) { target << toDump.localForm(); return target; } xerces-c-3.1.1/samples/src/PParse/PParseHandlers.hpp0000644000175000017500000000642111042066772021264 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: PParseHandlers.hpp 679377 2008-07-24 11:56:42Z borisk $ */ #include XERCES_CPP_NAMESPACE_USE class PParseHandlers : public HandlerBase { public : // ----------------------------------------------------------------------- // Constructors // ----------------------------------------------------------------------- PParseHandlers(); ~PParseHandlers(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- XMLSize_t getElementCount() const { return fElementCount; } XMLSize_t getAttrCount() const { return fAttrCount; } XMLSize_t getCharacterCount() const { return fCharacterCount; } bool getSawErrors() const { return fSawErrors; } XMLSize_t getSpaceCount() const { return fSpaceCount; } // ----------------------------------------------------------------------- // Handlers for the SAX DocumentHandler interface // ----------------------------------------------------------------------- void startElement(const XMLCh* const name, AttributeList& attributes); void characters(const XMLCh* const chars, const XMLSize_t length); void ignorableWhitespace(const XMLCh* const chars, const XMLSize_t length); void resetDocument(); // ----------------------------------------------------------------------- // Implementations of the SAX ErrorHandler interface // ----------------------------------------------------------------------- void warning(const SAXParseException& exc); void error(const SAXParseException& exc); void fatalError(const SAXParseException& exc); private: // ----------------------------------------------------------------------- // Private data members // // fAttrCount // fCharacterCount // fElementCount // fSpaceCount // These are just counters that are run upwards based on the input // from the document handlers. // // fSawErrors // This is set by the error handlers, and is queryable later to // see if any errors occured. // ----------------------------------------------------------------------- XMLSize_t fAttrCount; XMLSize_t fCharacterCount; XMLSize_t fElementCount; XMLSize_t fSpaceCount; bool fSawErrors; }; xerces-c-3.1.1/samples/src/PParse/PParseHandlers.cpp0000644000175000017500000000673610647424627021277 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: PParseHandlers.cpp 557282 2007-07-18 14:54:15Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include "PParse.hpp" // --------------------------------------------------------------------------- // PParseHandlers: Constructors and Destructor // --------------------------------------------------------------------------- PParseHandlers::PParseHandlers() : fAttrCount(0) , fCharacterCount(0) , fElementCount(0) , fSpaceCount(0) { } PParseHandlers::~PParseHandlers() { } // --------------------------------------------------------------------------- // PParseHandlers: Overrides of the SAX DocumentHandler interface // --------------------------------------------------------------------------- void PParseHandlers::startElement(const XMLCh* const /* name */ , AttributeList& attributes) { fElementCount++; fAttrCount += attributes.getLength(); } void PParseHandlers::characters( const XMLCh* const /* chars */ , const XMLSize_t length) { fCharacterCount += length; } void PParseHandlers::ignorableWhitespace( const XMLCh* const /* chars */ , const XMLSize_t length) { fSpaceCount += length; } void PParseHandlers::resetDocument() { fAttrCount = 0; fCharacterCount = 0; fElementCount = 0; fSpaceCount = 0; } // --------------------------------------------------------------------------- // PParseHandlers: Overrides of the SAX ErrorHandler interface // --------------------------------------------------------------------------- void PParseHandlers::error(const SAXParseException& e) { XERCES_STD_QUALIFIER cerr << "\nError at file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "\n Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; } void PParseHandlers::fatalError(const SAXParseException& e) { XERCES_STD_QUALIFIER cerr << "\nFatal Error at file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "\n Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; } void PParseHandlers::warning(const SAXParseException& e) { XERCES_STD_QUALIFIER cerr << "\nWarning at file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "\n Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; } xerces-c-3.1.1/samples/src/CreateDOMDocument/0000755000175000017500000000000011363617315017746 5ustar borisborisxerces-c-3.1.1/samples/src/CreateDOMDocument/CreateDOMDocument.cpp0000644000175000017500000001547511037027715023725 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: CreateDOMDocument.cpp 676796 2008-07-15 05:04:13Z dbertoni $ */ /* * This sample illustrates how you can create a DOM tree in memory. * It then prints the count of elements in the tree. */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #if defined(XERCES_NEW_IOSTREAMS) #include #else #include #endif XERCES_CPP_NAMESPACE_USE // --------------------------------------------------------------------------- // This is a simple class that lets us do easy (though not terribly efficient) // trancoding of char* data to XMLCh data. // --------------------------------------------------------------------------- class XStr { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- XStr(const char* const toTranscode) { // Call the private transcoding method fUnicodeForm = XMLString::transcode(toTranscode); } ~XStr() { XMLString::release(&fUnicodeForm); } // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const XMLCh* unicodeForm() const { return fUnicodeForm; } private : // ----------------------------------------------------------------------- // Private data members // // fUnicodeForm // This is the Unicode XMLCh format of the string. // ----------------------------------------------------------------------- XMLCh* fUnicodeForm; }; #define X(str) XStr(str).unicodeForm() // --------------------------------------------------------------------------- // main // --------------------------------------------------------------------------- int main(int argC, char*[]) { // Initialize the XML4C2 system. try { XMLPlatformUtils::Initialize(); } catch(const XMLException& toCatch) { char *pMsg = XMLString::transcode(toCatch.getMessage()); XERCES_STD_QUALIFIER cerr << "Error during Xerces-c Initialization.\n" << " Exception message:" << pMsg; XMLString::release(&pMsg); return 1; } // Watch for special case help request int errorCode = 0; if (argC > 1) { XERCES_STD_QUALIFIER cout << "\nUsage:\n" " CreateDOMDocument\n\n" "This program creates a new DOM document from scratch in memory.\n" "It then prints the count of elements in the tree.\n" << XERCES_STD_QUALIFIER endl; errorCode = 1; } if(errorCode) { XMLPlatformUtils::Terminate(); return errorCode; } { // Nest entire test in an inner block. // The tree we create below is the same that the XercesDOMParser would // have created, except that no whitespace text nodes would be created. // // Xerces-C // XML Parsing Tools // Apache Software Foundation // DOMImplementation* impl = DOMImplementationRegistry::getDOMImplementation(X("Core")); if (impl != NULL) { try { DOMDocument* doc = impl->createDocument( 0, // root element namespace URI. X("company"), // root element name 0); // document type object (DTD). DOMElement* rootElem = doc->getDocumentElement(); DOMElement* prodElem = doc->createElement(X("product")); rootElem->appendChild(prodElem); DOMText* prodDataVal = doc->createTextNode(X("Xerces-C")); prodElem->appendChild(prodDataVal); DOMElement* catElem = doc->createElement(X("category")); rootElem->appendChild(catElem); catElem->setAttribute(X("idea"), X("great")); DOMText* catDataVal = doc->createTextNode(X("XML Parsing Tools")); catElem->appendChild(catDataVal); DOMElement* devByElem = doc->createElement(X("developedBy")); rootElem->appendChild(devByElem); DOMText* devByDataVal = doc->createTextNode(X("Apache Software Foundation")); devByElem->appendChild(devByDataVal); // // Now count the number of elements in the above DOM tree. // const XMLSize_t elementCount = doc->getElementsByTagName(X("*"))->getLength(); XERCES_STD_QUALIFIER cout << "The tree just created contains: " << elementCount << " elements." << XERCES_STD_QUALIFIER endl; doc->release(); } catch (const OutOfMemoryException&) { XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl; errorCode = 5; } catch (const DOMException& e) { XERCES_STD_QUALIFIER cerr << "DOMException code is: " << e.code << XERCES_STD_QUALIFIER endl; errorCode = 2; } catch (...) { XERCES_STD_QUALIFIER cerr << "An error occurred creating the document" << XERCES_STD_QUALIFIER endl; errorCode = 3; } } // (inpl != NULL) else { XERCES_STD_QUALIFIER cerr << "Requested implementation is not supported" << XERCES_STD_QUALIFIER endl; errorCode = 4; } } XMLPlatformUtils::Terminate(); return errorCode; } xerces-c-3.1.1/samples/src/SEnumVal/0000755000175000017500000000000011363617315016176 5ustar borisborisxerces-c-3.1.1/samples/src/SEnumVal/SEnumVal.cpp0000644000175000017500000004674011360561266020407 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SEnumVal.cpp 933155 2010-04-12 09:07:02Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include #if defined(XERCES_NEW_IOSTREAMS) #include #else #include #endif #include #include XERCES_CPP_NAMESPACE_USE // --------------------------------------------------------------------------- // Forward references // --------------------------------------------------------------------------- static void usage(); void process(char* const); void processAttributes( XMLAttDefList& attList, bool margin = false ); void processDatatypeValidator( const DatatypeValidator*, bool margin = false ); void processContentSpecNode( const ContentSpecNode* specNode, bool margin = false ); // --------------------------------------------------------------------------- // This is a simple class that lets us do easy (though not terribly efficient) // trancoding of XMLCh data to local code page for display. // --------------------------------------------------------------------------- class StrX { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- StrX(const XMLCh* const toTranscode) { // Call the private transcoding method fLocalForm = XMLString::transcode(toTranscode); } ~StrX() { XMLString::release(&fLocalForm); } // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const char* localForm() const { return fLocalForm; } private : // ----------------------------------------------------------------------- // Private data members // // fLocalForm // This is the local code page form of the string. // ----------------------------------------------------------------------- char* fLocalForm; }; inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump) { target << toDump.localForm(); return target; } // --------------------------------------------------------------------------- // Local helper methods // --------------------------------------------------------------------------- static void usage() { XERCES_STD_QUALIFIER cout << "\nUsage:\n" " SEnumVal \n\n" "This program parses a file, then shows how to enumerate the\n" "contents of the Schema Grammar. Essentially, shows how one can\n" "access the Schema information stored in internal data structures.\n" << XERCES_STD_QUALIFIER endl; } // --------------------------------------------------------------------------- // Program entry point // --------------------------------------------------------------------------- int main(int argC, char* argV[]) { // cannot return out of catch-blocks lest exception-destruction // result in calls to destroyed memory handler! int errorCode = 0; // Initialize the XML4C system try { XMLPlatformUtils::Initialize(); } catch (const XMLException& toCatch) { XERCES_STD_QUALIFIER cerr << "Error during initialization! Message:\n" << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl; errorCode = 1; } if(errorCode) { XMLPlatformUtils::Terminate(); return errorCode; } // Check command line and extract arguments. // We only have one required parameter, which is the file to process if ((argC != 2) || (*(argV[1]) == '-')) { usage(); XMLPlatformUtils::Terminate(); return 2; } try { process(argV[1]); } catch (const OutOfMemoryException&) { XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl; errorCode = 5; } catch (const XMLException& e) { XERCES_STD_QUALIFIER cerr << "\nError during parsing: '" << argV[1] << "'\n" << "Exception message is: \n" << StrX(e.getMessage()) << "\n" << XERCES_STD_QUALIFIER endl; errorCode = 3; } XMLPlatformUtils::Terminate(); return errorCode; } void process(char* const xmlFile) { // // Create a Schema validator to be used for our validation work. Then create // a SAX parser object and pass it our validator. Then, according to what // we were told on the command line, set it to validate or not. He owns // the validator, so we have to allocate it. // SAXParser parser; parser.setValidationScheme(SAXParser::Val_Always); parser.setDoNamespaces(true); parser.setDoSchema(true); parser.parse(xmlFile); if (parser.getErrorCount()) { XERCES_STD_QUALIFIER cout << "\nErrors occurred, no output available\n" << XERCES_STD_QUALIFIER endl; return; } if (!parser.getValidator().handlesSchema()) { XERCES_STD_QUALIFIER cout << "\n Non schema document, no output available\n" << XERCES_STD_QUALIFIER endl; return; } Grammar* rootGrammar = parser.getRootGrammar(); if (!rootGrammar || rootGrammar->getGrammarType() != Grammar::SchemaGrammarType) { XERCES_STD_QUALIFIER cout << "\n Non schema grammar, no output available\n" << XERCES_STD_QUALIFIER endl; return; } // // Now we will get an enumerator for the element pool from the validator // and enumerate the elements, printing them as we go. For each element // we get an enumerator for its attributes and print them also. // SchemaGrammar* grammar = (SchemaGrammar*) rootGrammar; RefHash3KeysIdPoolEnumerator elemEnum = grammar->getElemEnumerator(); if (!elemEnum.hasMoreElements()) { XERCES_STD_QUALIFIER cout << "\nThe validator has no elements to display\n" << XERCES_STD_QUALIFIER endl; return; } while(elemEnum.hasMoreElements()) { const SchemaElementDecl& curElem = elemEnum.nextElement(); // Name XERCES_STD_QUALIFIER cout << "Name:\t\t\t" << StrX(curElem.getFullName()) << "\n"; // Model Type XERCES_STD_QUALIFIER cout << "Model Type:\t\t"; switch( curElem.getModelType() ) { case SchemaElementDecl::Empty: XERCES_STD_QUALIFIER cout << "Empty"; break; case SchemaElementDecl::Any: XERCES_STD_QUALIFIER cout << "Any"; break; case SchemaElementDecl::Mixed_Simple: XERCES_STD_QUALIFIER cout << "Mixed_Simple"; break; case SchemaElementDecl::Mixed_Complex: XERCES_STD_QUALIFIER cout << "Mixed_Complex"; break; case SchemaElementDecl::Children: XERCES_STD_QUALIFIER cout << "Children"; break; case SchemaElementDecl::Simple: XERCES_STD_QUALIFIER cout << "Simple"; break; case SchemaElementDecl::ElementOnlyEmpty: XERCES_STD_QUALIFIER cout << "ElementOnlyEmpty"; break; default: XERCES_STD_QUALIFIER cout << "Unknown"; break; } XERCES_STD_QUALIFIER cout << "\n"; // Create Reason XERCES_STD_QUALIFIER cout << "Create Reason:\t"; switch( curElem.getCreateReason() ) { case XMLElementDecl::NoReason: XERCES_STD_QUALIFIER cout << "Empty"; break; case XMLElementDecl::Declared: XERCES_STD_QUALIFIER cout << "Declared"; break; case XMLElementDecl::AttList: XERCES_STD_QUALIFIER cout << "AttList"; break; case XMLElementDecl::InContentModel: XERCES_STD_QUALIFIER cout << "InContentModel"; break; case XMLElementDecl::AsRootElem: XERCES_STD_QUALIFIER cout << "AsRootElem"; break; case XMLElementDecl::JustFaultIn: XERCES_STD_QUALIFIER cout << "JustFaultIn"; break; default: XERCES_STD_QUALIFIER cout << "Unknown"; break; } XERCES_STD_QUALIFIER cout << "\n"; // Content Spec Node processContentSpecNode( curElem.getContentSpec() ); // Misc Flags int mflags = curElem.getMiscFlags(); if( mflags !=0 ) { XERCES_STD_QUALIFIER cout << "Misc. Flags:\t"; } if ( mflags & SchemaSymbols::XSD_NILLABLE ) XERCES_STD_QUALIFIER cout << "Nillable "; if ( mflags & SchemaSymbols::XSD_ABSTRACT ) XERCES_STD_QUALIFIER cout << "Abstract "; if ( mflags & SchemaSymbols::XSD_FIXED ) XERCES_STD_QUALIFIER cout << "Fixed "; if( mflags !=0 ) { XERCES_STD_QUALIFIER cout << "\n"; } // Substitution Name SchemaElementDecl* subsGroup = curElem.getSubstitutionGroupElem(); if( subsGroup ) { const XMLCh* uriText = parser.getURIText(subsGroup->getURI()); XERCES_STD_QUALIFIER cout << "Substitution Name:\t" << StrX(uriText) << "," << StrX(subsGroup->getBaseName()) << "\n"; } // Content Model const XMLCh* fmtCntModel = curElem.getFormattedContentModel(); if( fmtCntModel != NULL ) { XERCES_STD_QUALIFIER cout << "Content Model:\t" << StrX(fmtCntModel) << "\n"; } const ComplexTypeInfo* ctype = curElem.getComplexTypeInfo(); if( ctype != NULL) { XERCES_STD_QUALIFIER cout << "ComplexType:\n"; XERCES_STD_QUALIFIER cout << "\tTypeName:\t" << StrX(ctype->getTypeName()) << "\n"; ContentSpecNode* cSpecNode = ctype->getContentSpec(); processContentSpecNode(cSpecNode, true ); } // Datatype DatatypeValidator* dtValidator = curElem.getDatatypeValidator(); processDatatypeValidator( dtValidator ); // Get an enumerator for this guy's attributes if any if ( curElem.hasAttDefs() ) { processAttributes( curElem.getAttDefList() ); } XERCES_STD_QUALIFIER cout << "--------------------------------------------"; XERCES_STD_QUALIFIER cout << XERCES_STD_QUALIFIER endl; } return; } //--------------------------------------------------------------------- // Prints the Attribute's properties //--------------------------------------------------------------------- void processAttributes( XMLAttDefList& attList, bool margin ) { if ( attList.isEmpty() ) { return; } if ( margin ) { XERCES_STD_QUALIFIER cout << "\t"; } XERCES_STD_QUALIFIER cout << "Attributes:\n"; for (unsigned int i=0; igetType() ) { case DatatypeValidator::String: XERCES_STD_QUALIFIER cout << "string"; break; case DatatypeValidator::AnyURI: XERCES_STD_QUALIFIER cout << "AnyURI"; break; case DatatypeValidator::QName: XERCES_STD_QUALIFIER cout << "QName"; break; case DatatypeValidator::Name: XERCES_STD_QUALIFIER cout << "Name"; break; case DatatypeValidator::NCName: XERCES_STD_QUALIFIER cout << "NCName"; break; case DatatypeValidator::Boolean: XERCES_STD_QUALIFIER cout << "Boolean"; break; case DatatypeValidator::Float: XERCES_STD_QUALIFIER cout << "Float"; break; case DatatypeValidator::Double: XERCES_STD_QUALIFIER cout << "Double"; break; case DatatypeValidator::Decimal: XERCES_STD_QUALIFIER cout << "Decimal"; break; case DatatypeValidator::HexBinary: XERCES_STD_QUALIFIER cout << "HexBinary"; break; case DatatypeValidator::Base64Binary: XERCES_STD_QUALIFIER cout << "Base64Binary";break; case DatatypeValidator::Duration: XERCES_STD_QUALIFIER cout << "Duration"; break; case DatatypeValidator::DateTime: XERCES_STD_QUALIFIER cout << "DateTime"; break; case DatatypeValidator::Date: XERCES_STD_QUALIFIER cout << "Date"; break; case DatatypeValidator::Time: XERCES_STD_QUALIFIER cout << "Time"; break; case DatatypeValidator::MonthDay: XERCES_STD_QUALIFIER cout << "MonthDay"; break; case DatatypeValidator::YearMonth: XERCES_STD_QUALIFIER cout << "YearMonth"; break; case DatatypeValidator::Year: XERCES_STD_QUALIFIER cout << "Year"; break; case DatatypeValidator::Month: XERCES_STD_QUALIFIER cout << "Month"; break; case DatatypeValidator::Day: XERCES_STD_QUALIFIER cout << "Day"; break; case DatatypeValidator::ID: XERCES_STD_QUALIFIER cout << "ID"; break; case DatatypeValidator::IDREF: XERCES_STD_QUALIFIER cout << "IDREF"; break; case DatatypeValidator::ENTITY: XERCES_STD_QUALIFIER cout << "ENTITY"; break; case DatatypeValidator::NOTATION: XERCES_STD_QUALIFIER cout << "NOTATION"; break; case DatatypeValidator::List: XERCES_STD_QUALIFIER cout << "List"; break; case DatatypeValidator::Union: XERCES_STD_QUALIFIER cout << "Union"; break; case DatatypeValidator::AnySimpleType: XERCES_STD_QUALIFIER cout << "AnySimpleType"; break; case DatatypeValidator::UnKnown: XERCES_STD_QUALIFIER cout << "UNKNOWN"; break; } XERCES_STD_QUALIFIER cout << "\n"; // Facets RefHashTableOf* facets = dtValidator->getFacets(); if( facets && facets->getCount()>0) { XMLSize_t i; // Element's properties XERCES_STD_QUALIFIER cout << "Facets:\t\t\n"; // use a list to print them sorted, or the list could be different on 64-bit machines RefVectorOf sortedList(facets->getCount(), false); RefHashTableOfEnumerator enumFacets(facets); while( enumFacets.hasMoreElements() ) { const KVStringPair& curPair = enumFacets.nextElement(); const XMLCh* key=curPair.getKey(); XMLSize_t len=sortedList.size(); for(i=0;i* enums = (RefVectorOf*) dtValidator->getEnumString(); if (enums) { XERCES_STD_QUALIFIER cout << "Enumeration:\t\t\n"; int enumLength = enums->size(); for ( int i = 0; i < enumLength; i++) { XERCES_STD_QUALIFIER cout << "\t" << StrX( enums->elementAt(i)) << "\n"; } } } void processContentSpecNode( const ContentSpecNode* cSpecNode, bool margin ) { if( !cSpecNode ) { return; } if( margin ) { XERCES_STD_QUALIFIER cout << "\t"; } XERCES_STD_QUALIFIER cout << "ContentType:\t"; switch( cSpecNode->getType() ) { case ContentSpecNode::Leaf: XERCES_STD_QUALIFIER cout << "Leaf"; break; case ContentSpecNode::ZeroOrOne: XERCES_STD_QUALIFIER cout << "ZeroOrOne"; break; case ContentSpecNode::ZeroOrMore: XERCES_STD_QUALIFIER cout << "ZeroOrMore"; break; case ContentSpecNode::OneOrMore: XERCES_STD_QUALIFIER cout << "OneOrMore"; break; case ContentSpecNode::ModelGroupChoice: case ContentSpecNode::Choice: XERCES_STD_QUALIFIER cout << "Choice"; break; case ContentSpecNode::ModelGroupSequence: case ContentSpecNode::Sequence: XERCES_STD_QUALIFIER cout << "Sequence"; break; case ContentSpecNode::All: XERCES_STD_QUALIFIER cout << "All"; break; case ContentSpecNode::Any: XERCES_STD_QUALIFIER cout << "Any"; break; case ContentSpecNode::Any_Other: XERCES_STD_QUALIFIER cout << "Any_Other"; break; case ContentSpecNode::Any_NS: XERCES_STD_QUALIFIER cout << "Any_NS"; break; case ContentSpecNode::Any_Lax: XERCES_STD_QUALIFIER cout << "Any_Lax"; break; case ContentSpecNode::Any_Other_Lax: XERCES_STD_QUALIFIER cout << "Any_Other_Lax"; break; case ContentSpecNode::Any_NS_Lax: XERCES_STD_QUALIFIER cout << "Any_NS_Lax"; break; case ContentSpecNode::Any_Skip: XERCES_STD_QUALIFIER cout << "Any_Skip"; break; case ContentSpecNode::Any_Other_Skip: XERCES_STD_QUALIFIER cout << "Any_Other_Skip"; break; case ContentSpecNode::Any_NS_Skip: XERCES_STD_QUALIFIER cout << "Any_NS_Skip"; break; case ContentSpecNode::Any_NS_Choice: XERCES_STD_QUALIFIER cout << "Any_NS_Choice"; break; case ContentSpecNode::UnknownType: XERCES_STD_QUALIFIER cout << "UnknownType"; break; } XERCES_STD_QUALIFIER cout << "\n"; } xerces-c-3.1.1/samples/src/StdInParse/0000755000175000017500000000000011363617315016520 5ustar borisborisxerces-c-3.1.1/samples/src/StdInParse/StdInParse.hpp0000644000175000017500000000530310523637166021251 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: StdInParse.hpp 471735 2006-11-06 13:53:58Z amassari $ */ // --------------------------------------------------------------------------- // Includes for all the program files to see // --------------------------------------------------------------------------- #include #include #if defined(XERCES_NEW_IOSTREAMS) #include #else #include #endif #include #include "StdInParseHandlers.hpp" // --------------------------------------------------------------------------- // This is a simple class that lets us do easy (though not terribly efficient) // trancoding of XMLCh data to local code page for display. // --------------------------------------------------------------------------- class StrX { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- StrX(const XMLCh* const toTranscode) { // Call the private transcoding method fLocalForm = XMLString::transcode(toTranscode); } ~StrX() { XMLString::release(&fLocalForm); } // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const char* localForm() const { return fLocalForm; } private : // ----------------------------------------------------------------------- // Private data members // // fLocalForm // This is the local code page form of the string. // ----------------------------------------------------------------------- char* fLocalForm; }; inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump) { target << toDump.localForm(); return target; } xerces-c-3.1.1/samples/src/StdInParse/StdInParse.cpp0000644000175000017500000001764011274567126021255 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: StdInParse.cpp 833057 2009-11-05 15:25:10Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include "StdInParse.hpp" #include // --------------------------------------------------------------------------- // Local data // // doNamespaces // Indicates whether namespace processing should be enabled or not. // The default is no, but -n overrides that. // // doSchema // Indicates whether schema processing should be enabled or not. // The default is no, but -s overrides that. // // schemaFullChecking // Indicates whether full schema constraint checking should be enabled or not. // The default is no, but -s overrides that. // // valScheme // Indicates what validation scheme to use. It defaults to 'auto', but // can be set via the -v= command. // --------------------------------------------------------------------------- static bool doNamespaces = false; static bool doSchema = false; static bool schemaFullChecking = false; static SAXParser::ValSchemes valScheme = SAXParser::Val_Auto; // --------------------------------------------------------------------------- // Local helper methods // --------------------------------------------------------------------------- void usage() { XERCES_STD_QUALIFIER cout << "\nUsage:\n" " StdInParse [options] < \n\n" "This program demonstrates streaming XML data from standard\n" "input. It then uses the SAX Parser, and prints the\n" "number of elements, attributes, spaces and characters found\n" "in the input, using SAX API.\n\n" "Options:\n" " -v=xxx Validation scheme [always | never | auto*].\n" " -n Enable namespace processing. Defaults to off.\n" " -s Enable schema processing. Defaults to off.\n" " -f Enable full schema constraint checking. Defaults to off.\n" " -? Show this help.\n\n" " * = Default if not provided explicitly.\n" << XERCES_STD_QUALIFIER endl; } // --------------------------------------------------------------------------- // Program entry point // --------------------------------------------------------------------------- int main(int argC, char* argV[]) { // Initialize the XML4C system try { XMLPlatformUtils::Initialize(); } catch (const XMLException& toCatch) { XERCES_STD_QUALIFIER cerr << "Error during initialization! Message:\n" << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl; return 1; } int parmInd; for (parmInd = 1; parmInd < argC; parmInd++) { // Break out on first parm not starting with a dash if (argV[parmInd][0] != '-') break; // Watch for special case help request if (!strcmp(argV[parmInd], "-?")) { usage(); XMLPlatformUtils::Terminate(); return 2; } else if (!strncmp(argV[parmInd], "-v=", 3) || !strncmp(argV[parmInd], "-V=", 3)) { const char* const parm = &argV[parmInd][3]; if (!strcmp(parm, "never")) valScheme = SAXParser::Val_Never; else if (!strcmp(parm, "auto")) valScheme = SAXParser::Val_Auto; else if (!strcmp(parm, "always")) valScheme = SAXParser::Val_Always; else { XERCES_STD_QUALIFIER cerr << "Unknown -v= value: " << parm << XERCES_STD_QUALIFIER endl; XMLPlatformUtils::Terminate(); return 2; } } else if (!strcmp(argV[parmInd], "-n") || !strcmp(argV[parmInd], "-N")) { doNamespaces = true; } else if (!strcmp(argV[parmInd], "-s") || !strcmp(argV[parmInd], "-S")) { doSchema = true; } else if (!strcmp(argV[parmInd], "-f") || !strcmp(argV[parmInd], "-F")) { schemaFullChecking = true; } else { XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[parmInd] << "', ignoring it\n" << XERCES_STD_QUALIFIER endl; } } // // Create a SAX parser object. Then, according to what we were told on // the command line, set the options. // SAXParser* parser = new SAXParser; parser->setValidationScheme(valScheme); parser->setDoNamespaces(doNamespaces); parser->setDoSchema(doSchema); parser->setHandleMultipleImports (true); parser->setValidationSchemaFullChecking(schemaFullChecking); // // Create our SAX handler object and install it on the parser, as the // document and error handler. We are responsible for cleaning them // up, but since its just stack based here, there's nothing special // to do. // StdInParseHandlers handler; parser->setDocumentHandler(&handler); parser->setErrorHandler(&handler); unsigned long duration; int errorCount = 0; // create a faux scope so that 'src' destructor is called before // XMLPlatformUtils::Terminate { // // Kick off the parse and catch any exceptions. Create a standard // input input source and tell the parser to parse from that. // StdInInputSource src; try { const unsigned long startMillis = XMLPlatformUtils::getCurrentMillis(); parser->parse(src); const unsigned long endMillis = XMLPlatformUtils::getCurrentMillis(); duration = endMillis - startMillis; errorCount = parser->getErrorCount(); } catch (const OutOfMemoryException&) { XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl; errorCount = 2; return 4; } catch (const XMLException& e) { XERCES_STD_QUALIFIER cerr << "\nError during parsing: \n" << StrX(e.getMessage()) << "\n" << XERCES_STD_QUALIFIER endl; errorCount = 1; return 4; } // Print out the stats that we collected and time taken if (!errorCount) { XERCES_STD_QUALIFIER cout << StrX(src.getSystemId()) << ": " << duration << " ms (" << handler.getElementCount() << " elems, " << handler.getAttrCount() << " attrs, " << handler.getSpaceCount() << " spaces, " << handler.getCharacterCount() << " chars)" << XERCES_STD_QUALIFIER endl; } } // // Delete the parser itself. Must be done prior to calling Terminate, below. // delete parser; XMLPlatformUtils::Terminate(); if (errorCount > 0) return 4; else return 0; } xerces-c-3.1.1/samples/src/StdInParse/StdInParseHandlers.hpp0000644000175000017500000000646711042066772022742 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: StdInParseHandlers.hpp 679377 2008-07-24 11:56:42Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include XERCES_CPP_NAMESPACE_USE XERCES_CPP_NAMESPACE_BEGIN class AttributeList; XERCES_CPP_NAMESPACE_END class StdInParseHandlers : public HandlerBase { public: // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- StdInParseHandlers(); ~StdInParseHandlers(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- XMLSize_t getElementCount() { return fElementCount; } XMLSize_t getAttrCount() { return fAttrCount; } XMLSize_t getCharacterCount() { return fCharacterCount; } XMLSize_t getSpaceCount() { return fSpaceCount; } // ----------------------------------------------------------------------- // Handlers for the SAX DocumentHandler interface // ----------------------------------------------------------------------- void endElement(const XMLCh* const name); void startElement(const XMLCh* const name, AttributeList& attributes); void characters(const XMLCh* const chars, const XMLSize_t length); void ignorableWhitespace(const XMLCh* const chars, const XMLSize_t length); void resetDocument(); // ----------------------------------------------------------------------- // Handlers for the SAX ErrorHandler interface // ----------------------------------------------------------------------- void warning(const SAXParseException& exc); void error(const SAXParseException& exc); void fatalError(const SAXParseException& exc); private: // ----------------------------------------------------------------------- // Private data members // // fAttrCount // fCharacterCount // fElementCount // fSpaceCount // These are just counters that are run upwards based on the input // from the document handlers. // ----------------------------------------------------------------------- XMLSize_t fAttrCount; XMLSize_t fCharacterCount; XMLSize_t fElementCount; XMLSize_t fSpaceCount; }; xerces-c-3.1.1/samples/src/StdInParse/StdInParseHandlers.cpp0000644000175000017500000000713510647424627022735 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: StdInParseHandlers.cpp 557282 2007-07-18 14:54:15Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include "StdInParse.hpp" // --------------------------------------------------------------------------- // StdInParseHandlers: Constructors and Destructor // --------------------------------------------------------------------------- StdInParseHandlers::StdInParseHandlers() : fAttrCount(0) , fCharacterCount(0) , fElementCount(0) , fSpaceCount(0) { } StdInParseHandlers::~StdInParseHandlers() { } // --------------------------------------------------------------------------- // StdInParseHandlers: Implementation of the SAX DocumentHandler interface // --------------------------------------------------------------------------- void StdInParseHandlers::endElement(const XMLCh* const /* name */) { } void StdInParseHandlers::startElement( const XMLCh* const /* name */ , AttributeList& attributes) { fElementCount++; fAttrCount += attributes.getLength(); } void StdInParseHandlers::characters(const XMLCh* const /* chars */ , const XMLSize_t length) { fCharacterCount += length; } void StdInParseHandlers::ignorableWhitespace(const XMLCh* const /* chars */ , const XMLSize_t length) { fSpaceCount += length; } void StdInParseHandlers::resetDocument() { fAttrCount = 0; fCharacterCount = 0; fElementCount = 0; fSpaceCount = 0; } // --------------------------------------------------------------------------- // StdInParseHandlers: Overrides of the SAX ErrorHandler interface // --------------------------------------------------------------------------- void StdInParseHandlers::error(const SAXParseException& e) { XERCES_STD_QUALIFIER cerr << "\nError at (file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "): " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; } void StdInParseHandlers::fatalError(const SAXParseException& e) { XERCES_STD_QUALIFIER cerr << "\nFatal Error at (file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "): " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; } void StdInParseHandlers::warning(const SAXParseException& e) { XERCES_STD_QUALIFIER cerr << "\nWarning at (file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "): " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; } xerces-c-3.1.1/samples/src/XInclude/0000755000175000017500000000000011363617315016217 5ustar borisborisxerces-c-3.1.1/samples/src/XInclude/XInclude.hpp0000644000175000017500000001073010571766357020457 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XInclude.hpp 513675 2007-03-02 09:22:55Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #if defined(XERCES_NEW_IOSTREAMS) #include #else #include #endif XERCES_CPP_NAMESPACE_USE // --------------------------------------------------------------------------- // Simple error handler deriviative to install on parser // --------------------------------------------------------------------------- class XIncludeErrorHandler : public DOMErrorHandler { public: // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- XIncludeErrorHandler(); ~XIncludeErrorHandler(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- bool getSawErrors() const; // ----------------------------------------------------------------------- // Implementation of the DOM ErrorHandler interface // ----------------------------------------------------------------------- bool handleError(const DOMError& domError); void resetErrors(); private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XIncludeErrorHandler(const XIncludeErrorHandler&); void operator=(const XIncludeErrorHandler&); // ----------------------------------------------------------------------- // Private data members // // fSawErrors // This is set if we get any errors, and is queryable via a getter // method. Its used by the main code to suppress output if there are // errors. // ----------------------------------------------------------------------- bool fSawErrors; }; // --------------------------------------------------------------------------- // This is a simple class that lets us do easy (though not terribly efficient) // trancoding of XMLCh data to local code page for display. // --------------------------------------------------------------------------- class StrX { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- StrX(const XMLCh* const toTranscode) { // Call the private transcoding method fLocalForm = XMLString::transcode(toTranscode); } ~StrX() { XMLString::release(&fLocalForm); } // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const char* localForm() const { return fLocalForm; } private : // ----------------------------------------------------------------------- // Private data members // // fLocalForm // This is the local code page form of the string. // ----------------------------------------------------------------------- char* fLocalForm; }; inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump) { target << toDump.localForm(); return target; } inline bool XIncludeErrorHandler::getSawErrors() const { return fSawErrors; } xerces-c-3.1.1/samples/src/XInclude/XInclude.cpp0000644000175000017500000002006111274567126020442 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XInclude.cpp 833057 2009-11-05 15:25:10Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include "XInclude.hpp" // --------------------------------------------------------------------------- // This is a simple program which tests the different XInclude mechanisms prototyped // for my dissertation. Based largely on the DOMCount example provided with the // Xerces C++ project. // Simon Rowland 2006 // --------------------------------------------------------------------------- static void usage() { XERCES_STD_QUALIFIER cout << "\nUsage:\n" " XInclude [-h] InputFile OutputFile\n" " -h : Prints this help message and exits.\n" << XERCES_STD_QUALIFIER endl; } // --------------------------------------------------------------------------- // // main // // --------------------------------------------------------------------------- int main(int argC, char* argV[]) { char *testFileName; char *outputFileName; for (int argInd = 1; argInd < argC; argInd++) { if (!strcmp(argV[argInd], "-?") || !strcmp(argV[argInd], "-h")) { /* print help and exit */ usage(); return 2; } } if (argC < 3){ usage(); return 2; } testFileName = argV[argC-2]; outputFileName = argV[argC-1]; // Initialize the XML4C system try { XMLPlatformUtils::Initialize(); } catch (const XMLException& toCatch) { XERCES_STD_QUALIFIER cerr << "Error during initialization! :\n" << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl; return 1; } //============================================================================ // Instantiate the DOM parser to use for the source documents //============================================================================ static const XMLCh gLS[] = { chLatin_L, chLatin_S, chNull }; DOMImplementation *impl = DOMImplementationRegistry::getDOMImplementation(gLS); DOMLSParser *parser = ((DOMImplementationLS*)impl)->createLSParser(DOMImplementationLS::MODE_SYNCHRONOUS, 0); DOMConfiguration *config = parser->getDomConfig(); config->setParameter(XMLUni::fgDOMNamespaces, true); config->setParameter(XMLUni::fgXercesSchema, true); config->setParameter(XMLUni::fgXercesHandleMultipleImports, true); config->setParameter(XMLUni::fgXercesSchemaFullChecking, true); if(config->canSetParameter(XMLUni::fgXercesDoXInclude, true)){ config->setParameter(XMLUni::fgXercesDoXInclude, true); } // enable datatype normalization - default is off //config->setParameter(XMLUni::fgDOMDatatypeNormalization, true); // And create our error handler and install it XIncludeErrorHandler errorHandler; config->setParameter(XMLUni::fgDOMErrorHandler, &errorHandler); XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *doc = 0; try { // load up the test source document XERCES_STD_QUALIFIER cerr << "Parse " << testFileName << " in progress ..."; parser->resetDocumentPool(); doc = parser->parseURI(testFileName); XERCES_STD_QUALIFIER cerr << " finished." << XERCES_STD_QUALIFIER endl; } catch (const XMLException& toCatch) { XERCES_STD_QUALIFIER cerr << "\nError during parsing: '" << testFileName << "'\n" << "Exception message is: \n" << StrX(toCatch.getMessage()) << "\n" << XERCES_STD_QUALIFIER endl; } catch (const DOMException& toCatch) { const unsigned int maxChars = 2047; XMLCh errText[maxChars + 1]; XERCES_STD_QUALIFIER cerr << "\nDOM Error during parsing: '" << testFileName << "'\n" << "DOMException code is: " << toCatch.code << XERCES_STD_QUALIFIER endl; if (DOMImplementation::loadDOMExceptionMsg(toCatch.code, errText, maxChars)) XERCES_STD_QUALIFIER cerr << "Message is: " << StrX(errText) << XERCES_STD_QUALIFIER endl; } catch (...) { XERCES_STD_QUALIFIER cerr << "\nUnexpected exception during parsing: '" << testFileName << "'\n"; } if (!errorHandler.getSawErrors() && doc) { DOMLSSerializer *writer = ((DOMImplementationLS*)impl)->createLSSerializer(); DOMLSOutput *theOutputDesc = ((DOMImplementationLS*)impl)->createLSOutput(); try { // write out the results XERCES_STD_QUALIFIER cerr << "Writing result to: " << outputFileName << XERCES_STD_QUALIFIER endl; XMLFormatTarget *myFormTarget = new LocalFileFormatTarget(outputFileName); theOutputDesc->setByteStream(myFormTarget); writer->write(doc, theOutputDesc); delete myFormTarget; } catch (const XMLException& toCatch) { XERCES_STD_QUALIFIER cerr << "\nXMLException during writing: '" << testFileName << "'\n" << "Exception message is: \n" << StrX(toCatch.getMessage()) << "\n" << XERCES_STD_QUALIFIER endl; } catch (const DOMException& toCatch) { const unsigned int maxChars = 2047; XMLCh errText[maxChars + 1]; XERCES_STD_QUALIFIER cerr << "\nDOM Error during writing: '" << testFileName << "'\n" << "DOMException code is: " << toCatch.code << XERCES_STD_QUALIFIER endl; if (DOMImplementation::loadDOMExceptionMsg(toCatch.code, errText, maxChars)) XERCES_STD_QUALIFIER cerr << "Message is: " << StrX(errText) << XERCES_STD_QUALIFIER endl; } catch (...) { XERCES_STD_QUALIFIER cerr << "\nUnexpected exception during writing: '" << testFileName << "'\n"; } writer->release(); theOutputDesc->release(); } // // Delete the parser itself. Must be done prior to calling Terminate, below. // parser->release(); // And call the termination method XMLPlatformUtils::Terminate(); return 0; } XIncludeErrorHandler::XIncludeErrorHandler() : fSawErrors(false) { } XIncludeErrorHandler::~XIncludeErrorHandler() { } // --------------------------------------------------------------------------- // XIncludeHandlers: Overrides of the DOM ErrorHandler interface // --------------------------------------------------------------------------- bool XIncludeErrorHandler::handleError(const DOMError& domError) { bool continueParsing = true; if (domError.getSeverity() == DOMError::DOM_SEVERITY_WARNING) XERCES_STD_QUALIFIER cerr << "\nWarning at file "; else if (domError.getSeverity() == DOMError::DOM_SEVERITY_ERROR) { XERCES_STD_QUALIFIER cerr << "\nError at file "; fSawErrors = true; } else { XERCES_STD_QUALIFIER cerr << "\nFatal Error at file "; continueParsing = false; fSawErrors = true; } XERCES_STD_QUALIFIER cerr << StrX(domError.getLocation()->getURI()) << ", line " << domError.getLocation()->getLineNumber() << ", char " << domError.getLocation()->getColumnNumber() << "\n Message: " << StrX(domError.getMessage()) << XERCES_STD_QUALIFIER endl; return continueParsing; } void XIncludeErrorHandler::resetErrors() { fSawErrors = false; } xerces-c-3.1.1/samples/src/SAX2Count/0000755000175000017500000000000011363617314016231 5ustar borisborisxerces-c-3.1.1/samples/src/SAX2Count/SAX2Count.hpp0000644000175000017500000000543110523637166020477 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SAX2Count.hpp 471735 2006-11-06 13:53:58Z amassari $ */ // --------------------------------------------------------------------------- // Includes for all the program files to see // --------------------------------------------------------------------------- #include #include #include #if defined(XERCES_NEW_IOSTREAMS) #include #else #include #endif #include "SAX2CountHandlers.hpp" #include #include // --------------------------------------------------------------------------- // This is a simple class that lets us do easy (though not terribly efficient) // trancoding of XMLCh data to local code page for display. // --------------------------------------------------------------------------- class StrX { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- StrX(const XMLCh* const toTranscode) { // Call the private transcoding method fLocalForm = XMLString::transcode(toTranscode); } ~StrX() { XMLString::release(&fLocalForm); } // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const char* localForm() const { return fLocalForm; } private : // ----------------------------------------------------------------------- // Private data members // // fLocalForm // This is the local code page form of the string. // ----------------------------------------------------------------------- char* fLocalForm; }; inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump) { target << toDump.localForm(); return target; } xerces-c-3.1.1/samples/src/SAX2Count/SAX2CountHandlers.cpp0000644000175000017500000000742310647424627022161 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SAX2CountHandlers.cpp 557282 2007-07-18 14:54:15Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include "SAX2Count.hpp" #include #include #include // --------------------------------------------------------------------------- // SAX2CountHandlers: Constructors and Destructor // --------------------------------------------------------------------------- SAX2CountHandlers::SAX2CountHandlers() : fAttrCount(0) , fCharacterCount(0) , fElementCount(0) , fSpaceCount(0) , fSawErrors(false) { } SAX2CountHandlers::~SAX2CountHandlers() { } // --------------------------------------------------------------------------- // SAX2CountHandlers: Implementation of the SAX DocumentHandler interface // --------------------------------------------------------------------------- void SAX2CountHandlers::startElement(const XMLCh* const /* uri */ , const XMLCh* const /* localname */ , const XMLCh* const /* qname */ , const Attributes& attrs) { fElementCount++; fAttrCount += attrs.getLength(); } void SAX2CountHandlers::characters( const XMLCh* const /* chars */ , const XMLSize_t length) { fCharacterCount += length; } void SAX2CountHandlers::ignorableWhitespace( const XMLCh* const /* chars */ , const XMLSize_t length) { fSpaceCount += length; } void SAX2CountHandlers::startDocument() { fAttrCount = 0; fCharacterCount = 0; fElementCount = 0; fSpaceCount = 0; } // --------------------------------------------------------------------------- // SAX2CountHandlers: Overrides of the SAX ErrorHandler interface // --------------------------------------------------------------------------- void SAX2CountHandlers::error(const SAXParseException& e) { fSawErrors = true; XERCES_STD_QUALIFIER cerr << "\nError at file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "\n Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; } void SAX2CountHandlers::fatalError(const SAXParseException& e) { fSawErrors = true; XERCES_STD_QUALIFIER cerr << "\nFatal Error at file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "\n Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; } void SAX2CountHandlers::warning(const SAXParseException& e) { XERCES_STD_QUALIFIER cerr << "\nWarning at file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "\n Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; } void SAX2CountHandlers::resetErrors() { fSawErrors = false; } xerces-c-3.1.1/samples/src/SAX2Count/SAX2CountHandlers.hpp0000644000175000017500000000710011042066772022147 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SAX2CountHandlers.hpp 679377 2008-07-24 11:56:42Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include XERCES_CPP_NAMESPACE_USE class SAX2CountHandlers : public DefaultHandler { public: // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- SAX2CountHandlers(); ~SAX2CountHandlers(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- XMLSize_t getElementCount() const { return fElementCount; } XMLSize_t getAttrCount() const { return fAttrCount; } XMLSize_t getCharacterCount() const { return fCharacterCount; } bool getSawErrors() const { return fSawErrors; } XMLSize_t getSpaceCount() const { return fSpaceCount; } // ----------------------------------------------------------------------- // Handlers for the SAX ContentHandler interface // ----------------------------------------------------------------------- void startElement(const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname, const Attributes& attrs); void characters(const XMLCh* const chars, const XMLSize_t length); void ignorableWhitespace(const XMLCh* const chars, const XMLSize_t length); void startDocument(); // ----------------------------------------------------------------------- // Handlers for the SAX ErrorHandler interface // ----------------------------------------------------------------------- void warning(const SAXParseException& exc); void error(const SAXParseException& exc); void fatalError(const SAXParseException& exc); void resetErrors(); private: // ----------------------------------------------------------------------- // Private data members // // fAttrCount // fCharacterCount // fElementCount // fSpaceCount // These are just counters that are run upwards based on the input // from the document handlers. // // fSawErrors // This is set by the error handlers, and is queryable later to // see if any errors occured. // ----------------------------------------------------------------------- XMLSize_t fAttrCount; XMLSize_t fCharacterCount; XMLSize_t fElementCount; XMLSize_t fSpaceCount; bool fSawErrors; }; xerces-c-3.1.1/samples/src/SAX2Count/SAX2Count.cpp0000644000175000017500000002703611274567126020501 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SAX2Count.cpp 833057 2009-11-05 15:25:10Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include "SAX2Count.hpp" #include #include #include #if defined(XERCES_NEW_IOSTREAMS) #include #else #include #endif #include // --------------------------------------------------------------------------- // Local helper methods // --------------------------------------------------------------------------- void usage() { XERCES_STD_QUALIFIER cout << "\nUsage:\n" " SAX2Count [options] \n\n" "This program invokes the SAX2XMLReader, and then prints the\n" "number of elements, attributes, spaces and characters found\n" "in each XML file, using SAX2 API.\n\n" "Options:\n" " -l Indicate the input file is a List File that has a list of xml files.\n" " Default to off (Input file is an XML file).\n" " -v=xxx Validation scheme [always | never | auto*].\n" " -f Enable full schema constraint checking processing. Defaults to off.\n" " -p Enable namespace-prefixes feature. Defaults to off.\n" " -n Disable namespace processing. Defaults to on.\n" " NOTE: THIS IS OPPOSITE FROM OTHER SAMPLES.\n" " -s Disable schema processing. Defaults to on.\n" " NOTE: THIS IS OPPOSITE FROM OTHER SAMPLES.\n" " -i Disable identity constraint checking. Defaults to on.\n" " NOTE: THIS IS OPPOSITE FROM OTHER SAMPLES.\n" " -locale=ll_CC specify the locale, default: en_US.\n" " -? Show this help.\n\n" " * = Default if not provided explicitly.\n" << XERCES_STD_QUALIFIER endl; } // --------------------------------------------------------------------------- // Program entry point // --------------------------------------------------------------------------- int main(int argC, char* argV[]) { // Check command line and extract arguments. if (argC < 2) { usage(); return 1; } const char* xmlFile = 0; SAX2XMLReader::ValSchemes valScheme = SAX2XMLReader::Val_Auto; bool doNamespaces = true; bool doSchema = true; bool schemaFullChecking = false; bool identityConstraintChecking = true; bool doList = false; bool errorOccurred = false; bool namespacePrefixes = false; bool recognizeNEL = false; char localeStr[64]; memset(localeStr, 0, sizeof localeStr); int argInd; for (argInd = 1; argInd < argC; argInd++) { // Break out on first parm not starting with a dash if (argV[argInd][0] != '-') break; // Watch for special case help request if (!strcmp(argV[argInd], "-?")) { usage(); return 2; } else if (!strncmp(argV[argInd], "-v=", 3) || !strncmp(argV[argInd], "-V=", 3)) { const char* const parm = &argV[argInd][3]; if (!strcmp(parm, "never")) valScheme = SAX2XMLReader::Val_Never; else if (!strcmp(parm, "auto")) valScheme = SAX2XMLReader::Val_Auto; else if (!strcmp(parm, "always")) valScheme = SAX2XMLReader::Val_Always; else { XERCES_STD_QUALIFIER cerr << "Unknown -v= value: " << parm << XERCES_STD_QUALIFIER endl; return 2; } } else if (!strcmp(argV[argInd], "-n") || !strcmp(argV[argInd], "-N")) { doNamespaces = false; } else if (!strcmp(argV[argInd], "-s") || !strcmp(argV[argInd], "-S")) { doSchema = false; } else if (!strcmp(argV[argInd], "-f") || !strcmp(argV[argInd], "-F")) { schemaFullChecking = true; } else if (!strcmp(argV[argInd], "-i") || !strcmp(argV[argInd], "-I")) { identityConstraintChecking = false; } else if (!strcmp(argV[argInd], "-l") || !strcmp(argV[argInd], "-L")) { doList = true; } else if (!strcmp(argV[argInd], "-p") || !strcmp(argV[argInd], "-P")) { namespacePrefixes = true; } else if (!strcmp(argV[argInd], "-special:nel")) { // turning this on will lead to non-standard compliance behaviour // it will recognize the unicode character 0x85 as new line character // instead of regular character as specified in XML 1.0 // do not turn this on unless really necessary recognizeNEL = true; } else if (!strncmp(argV[argInd], "-locale=", 8)) { // Get out the end of line strncpy(localeStr, &(argV[argInd][8]), sizeof localeStr); } else { XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[argInd] << "', ignoring it\n" << XERCES_STD_QUALIFIER endl; } } // // There should be only one and only one parameter left, and that // should be the file name. // if (argInd != argC - 1) { usage(); return 1; } // Initialize the XML4C2 system try { if (strlen(localeStr)) { XMLPlatformUtils::Initialize(localeStr); } else { XMLPlatformUtils::Initialize(); } if (recognizeNEL) { XMLPlatformUtils::recognizeNEL(recognizeNEL); } } catch (const XMLException& toCatch) { XERCES_STD_QUALIFIER cerr << "Error during initialization! Message:\n" << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl; return 1; } // // Create a SAX parser object. Then, according to what we were told on // the command line, set it to validate or not. // SAX2XMLReader* parser = XMLReaderFactory::createXMLReader(); parser->setFeature(XMLUni::fgSAX2CoreNameSpaces, doNamespaces); parser->setFeature(XMLUni::fgXercesSchema, doSchema); parser->setFeature(XMLUni::fgXercesHandleMultipleImports, true); parser->setFeature(XMLUni::fgXercesSchemaFullChecking, schemaFullChecking); parser->setFeature(XMLUni::fgXercesIdentityConstraintChecking, identityConstraintChecking); parser->setFeature(XMLUni::fgSAX2CoreNameSpacePrefixes, namespacePrefixes); if (valScheme == SAX2XMLReader::Val_Auto) { parser->setFeature(XMLUni::fgSAX2CoreValidation, true); parser->setFeature(XMLUni::fgXercesDynamic, true); } if (valScheme == SAX2XMLReader::Val_Never) { parser->setFeature(XMLUni::fgSAX2CoreValidation, false); } if (valScheme == SAX2XMLReader::Val_Always) { parser->setFeature(XMLUni::fgSAX2CoreValidation, true); parser->setFeature(XMLUni::fgXercesDynamic, false); } // // Create our SAX handler object and install it on the parser, as the // document and error handler. // SAX2CountHandlers handler; parser->setContentHandler(&handler); parser->setErrorHandler(&handler); // // Get the starting time and kick off the parse of the indicated // file. Catch any exceptions that might propogate out of it. // unsigned long duration; bool more = true; XERCES_STD_QUALIFIER ifstream fin; // the input is a list file if (doList) fin.open(argV[argInd]); if (fin.fail()) { XERCES_STD_QUALIFIER cerr <<"Cannot open the list file: " << argV[argInd] << XERCES_STD_QUALIFIER endl; return 2; } while (more) { char fURI[1000]; //initialize the array to zeros memset(fURI,0,sizeof(fURI)); if (doList) { if (! fin.eof() ) { fin.getline (fURI, sizeof(fURI)); if (!*fURI) continue; else { xmlFile = fURI; XERCES_STD_QUALIFIER cerr << "==Parsing== " << xmlFile << XERCES_STD_QUALIFIER endl; } } else break; } else { xmlFile = argV[argInd]; more = false; } //reset error count first handler.resetErrors(); try { const unsigned long startMillis = XMLPlatformUtils::getCurrentMillis(); parser->parse(xmlFile); const unsigned long endMillis = XMLPlatformUtils::getCurrentMillis(); duration = endMillis - startMillis; } catch (const OutOfMemoryException&) { XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl; errorOccurred = true; continue; } catch (const XMLException& e) { XERCES_STD_QUALIFIER cerr << "\nError during parsing: '" << xmlFile << "'\n" << "Exception message is: \n" << StrX(e.getMessage()) << "\n" << XERCES_STD_QUALIFIER endl; errorOccurred = true; continue; } catch (...) { XERCES_STD_QUALIFIER cerr << "\nUnexpected exception during parsing: '" << xmlFile << "'\n"; errorOccurred = true; continue; } // Print out the stats that we collected and time taken if (!handler.getSawErrors()) { XERCES_STD_QUALIFIER cout << xmlFile << ": " << duration << " ms (" << handler.getElementCount() << " elems, " << handler.getAttrCount() << " attrs, " << handler.getSpaceCount() << " spaces, " << handler.getCharacterCount() << " chars)" << XERCES_STD_QUALIFIER endl; } else errorOccurred = true; } if (doList) fin.close(); // // Delete the parser itself. Must be done prior to calling Terminate, below. // delete parser; // And call the termination method XMLPlatformUtils::Terminate(); if (errorOccurred) return 4; else return 0; } xerces-c-3.1.1/samples/src/SAX2Print/0000755000175000017500000000000011363617315016236 5ustar borisborisxerces-c-3.1.1/samples/src/SAX2Print/SAX2Print.hpp0000644000175000017500000000522610523637166020511 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SAX2Print.hpp 471735 2006-11-06 13:53:58Z amassari $ */ // --------------------------------------------------------------------------- // Includes for all the program files to see // --------------------------------------------------------------------------- #include #if defined(XERCES_NEW_IOSTREAMS) #include #else #include #endif #include #include "SAX2PrintHandlers.hpp" // --------------------------------------------------------------------------- // This is a simple class that lets us do easy (though not terribly efficient) // trancoding of XMLCh data to local code page for display. // --------------------------------------------------------------------------- class StrX { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- StrX(const XMLCh* const toTranscode) { // Call the private transcoding method fLocalForm = XMLString::transcode(toTranscode); } ~StrX() { XMLString::release(&fLocalForm); } // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const char* localForm() const { return fLocalForm; } private : // ----------------------------------------------------------------------- // Private data members // // fLocalForm // This is the local code page form of the string. // ----------------------------------------------------------------------- char* fLocalForm; }; inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump) { target << toDump.localForm(); return target; } xerces-c-3.1.1/samples/src/SAX2Print/SAX2FilterHandlers.cpp0000644000175000017500000001353511031207655022307 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SAX2FilterHandlers.cpp 672311 2008-06-27 16:05:01Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include "SAX2FilterHandlers.hpp" #include struct Attr { const XMLCh* qName; const XMLCh* uri; const XMLCh* localPart; const XMLCh* value; const XMLCh* attrType; }; class AttrList : public Attributes, public RefVectorOf { public: AttrList(XMLSize_t count) : RefVectorOf(count) {} virtual XMLSize_t getLength() const { return size(); } virtual const XMLCh* getURI(const XMLSize_t index) const { return elementAt(index)->uri; } virtual const XMLCh* getLocalName(const XMLSize_t index) const { return elementAt(index)->localPart; } virtual const XMLCh* getQName(const XMLSize_t index) const { return elementAt(index)->qName; } virtual const XMLCh* getType(const XMLSize_t index) const { return elementAt(index)->attrType; } virtual const XMLCh* getValue(const XMLSize_t index) const { return elementAt(index)->value; } virtual bool getIndex(const XMLCh* const uri, const XMLCh* const localPart, XMLSize_t& i) const { for(i=0;iuri,uri) && XMLString::equals(elementAt(i)->localPart,localPart)) return true; return false; } virtual int getIndex(const XMLCh* const uri, const XMLCh* const localPart ) const { for(XMLSize_t i=0;iuri,uri) && XMLString::equals(elementAt(i)->localPart,localPart)) return (int)i; return -1; } virtual bool getIndex(const XMLCh* const qName, XMLSize_t& i) const { for(i=0;iqName,qName)) return true; return false; } virtual int getIndex(const XMLCh* const qName ) const { for(XMLSize_t i=0;iqName,qName)) return (int)i; return -1; } virtual const XMLCh* getType(const XMLCh* const uri, const XMLCh* const localPart ) const { for(XMLSize_t i=0;iuri,uri) && XMLString::equals(elementAt(i)->localPart,localPart)) return elementAt(i)->attrType; return NULL; } virtual const XMLCh* getType(const XMLCh* const qName) const { for(XMLSize_t i=0;iqName,qName)) return elementAt(i)->attrType; return NULL; } virtual const XMLCh* getValue(const XMLCh* const uri, const XMLCh* const localPart ) const { for(XMLSize_t i=0;iuri,uri) && XMLString::equals(elementAt(i)->localPart,localPart)) return elementAt(i)->value; return NULL; } virtual const XMLCh* getValue(const XMLCh* const qName) const { for(XMLSize_t i=0;iqName,qName)) return elementAt(i)->value; return NULL; } }; // --------------------------------------------------------------------------- // SAX2SortAttributesFilter: Constructors and Destructor // --------------------------------------------------------------------------- SAX2SortAttributesFilter::SAX2SortAttributesFilter(SAX2XMLReader* parent) : SAX2XMLFilterImpl(parent) { } SAX2SortAttributesFilter::~SAX2SortAttributesFilter() { } // --------------------------------------------------------------------------- // SAX2SortAttributesFilter: Overrides of the SAX2XMLFilter interface // --------------------------------------------------------------------------- void SAX2SortAttributesFilter::startElement(const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname, const Attributes& attributes) { AttrList sortedList(attributes.getLength()); for(XMLSize_t i=0;iqName,attributes.getQName(i))>=0) break; } Attr* pClone=new Attr; pClone->qName = attributes.getQName(i); pClone->uri = attributes.getURI(i); pClone->localPart = attributes.getLocalName(i); pClone->value = attributes.getValue(i); pClone->attrType = attributes.getType(i); sortedList.insertElementAt(pClone, j); } SAX2XMLFilterImpl::startElement(uri, localname, qname, sortedList); } xerces-c-3.1.1/samples/src/SAX2Print/SAX2FilterHandlers.hpp0000644000175000017500000000323010523637166022314 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SAX2FilterHandlers.hpp 471735 2006-11-06 13:53:58Z amassari $ */ #include XERCES_CPP_NAMESPACE_USE class SAX2SortAttributesFilter : public SAX2XMLFilterImpl { public: // ----------------------------------------------------------------------- // Constructors // ----------------------------------------------------------------------- SAX2SortAttributesFilter(SAX2XMLReader* parent); ~SAX2SortAttributesFilter(); // ----------------------------------------------------------------------- // Implementations of the SAX2XMLFilter interface // ----------------------------------------------------------------------- void startElement( const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname, const Attributes& attributes); }; xerces-c-3.1.1/samples/src/SAX2Print/SAX2Print.cpp0000644000175000017500000002546311274567126020513 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SAX2Print.cpp 833057 2009-11-05 15:25:10Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include "SAX2Print.hpp" #include #include "SAX2FilterHandlers.hpp" // --------------------------------------------------------------------------- // Local data // // encodingName // The encoding we are to output in. If not set on the command line, // then it is defaulted to LATIN1. // // xmlFile // The path to the file to parser. Set via command line. // // valScheme // Indicates what validation scheme to use. It defaults to 'auto', but // can be set via the -v= command. // // expandNamespaces // Indicates if the output should expand the namespaces Alias with // their URI's, defaults to false, can be set via the command line -e // --------------------------------------------------------------------------- static const char* encodingName = "LATIN1"; static XMLFormatter::UnRepFlags unRepFlags = XMLFormatter::UnRep_CharRef; static char* xmlFile = 0; static SAX2XMLReader::ValSchemes valScheme = SAX2XMLReader::Val_Auto; static bool expandNamespaces= false ; static bool doNamespaces = true; static bool doSchema = true; static bool schemaFullChecking = false; static bool namespacePrefixes = false; static bool sortAttributes = false; // --------------------------------------------------------------------------- // Local helper methods // --------------------------------------------------------------------------- static void usage() { XERCES_STD_QUALIFIER cout << "\nUsage:\n" " SAX2Print [options] \n\n" "This program invokes the SAX2XMLReader, and then prints the\n" "data returned by the various SAX2 handlers for the specified\n" "XML file.\n\n" "Options:\n" " -u=xxx Handle unrepresentable chars [fail | rep | ref*].\n" " -v=xxx Validation scheme [always | never | auto*].\n" " -e Expand Namespace Alias with URI's. Defaults to off.\n" " -x=XXX Use a particular encoding for output (LATIN1*).\n" " -f Enable full schema constraint checking processing. Defaults to off.\n" " -p Enable namespace-prefixes feature. Defaults to off.\n" " -n Disable namespace processing. Defaults to on.\n" " NOTE: THIS IS OPPOSITE FROM OTHER SAMPLES.\n" " -s Disable schema processing. Defaults to on.\n" " NOTE: THIS IS OPPOSITE FROM OTHER SAMPLES.\n" " -sa Print the attributes in alphabetic order. Defaults to off.\n" " -? Show this help.\n\n" " * = Default if not provided explicitly.\n\n" "The parser has intrinsic support for the following encodings:\n" " UTF-8, US-ASCII, ISO8859-1, UTF-16[BL]E, UCS-4[BL]E,\n" " WINDOWS-1252, IBM1140, IBM037, IBM1047.\n" << XERCES_STD_QUALIFIER endl; } // --------------------------------------------------------------------------- // Program entry point // --------------------------------------------------------------------------- int main(int argC, char* argV[]) { // Initialize the XML4C2 system try { XMLPlatformUtils::Initialize(); } catch (const XMLException& toCatch) { XERCES_STD_QUALIFIER cerr << "Error during initialization! :\n" << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl; return 1; } // Check command line and extract arguments. if (argC < 2) { usage(); XMLPlatformUtils::Terminate(); return 1; } int parmInd; for (parmInd = 1; parmInd < argC; parmInd++) { // Break out on first parm not starting with a dash if (argV[parmInd][0] != '-') break; // Watch for special case help request if (!strcmp(argV[parmInd], "-?")) { usage(); XMLPlatformUtils::Terminate(); return 2; } else if (!strncmp(argV[parmInd], "-v=", 3) || !strncmp(argV[parmInd], "-V=", 3)) { const char* const parm = &argV[parmInd][3]; if (!strcmp(parm, "never")) valScheme = SAX2XMLReader::Val_Never; else if (!strcmp(parm, "auto")) valScheme = SAX2XMLReader::Val_Auto; else if (!strcmp(parm, "always")) valScheme = SAX2XMLReader::Val_Always; else { XERCES_STD_QUALIFIER cerr << "Unknown -v= value: " << parm << XERCES_STD_QUALIFIER endl; XMLPlatformUtils::Terminate(); return 2; } } else if (!strcmp(argV[parmInd], "-e") || !strcmp(argV[parmInd], "-E")) { expandNamespaces = true; } else if (!strncmp(argV[parmInd], "-x=", 3) || !strncmp(argV[parmInd], "-X=", 3)) { // Get out the encoding name encodingName = &argV[parmInd][3]; } else if (!strncmp(argV[parmInd], "-u=", 3) || !strncmp(argV[parmInd], "-U=", 3)) { const char* const parm = &argV[parmInd][3]; if (!strcmp(parm, "fail")) unRepFlags = XMLFormatter::UnRep_Fail; else if (!strcmp(parm, "rep")) unRepFlags = XMLFormatter::UnRep_Replace; else if (!strcmp(parm, "ref")) unRepFlags = XMLFormatter::UnRep_CharRef; else { XERCES_STD_QUALIFIER cerr << "Unknown -u= value: " << parm << XERCES_STD_QUALIFIER endl; XMLPlatformUtils::Terminate(); return 2; } } else if (!strcmp(argV[parmInd], "-n") || !strcmp(argV[parmInd], "-N")) { doNamespaces = false; } else if (!strcmp(argV[parmInd], "-s") || !strcmp(argV[parmInd], "-S")) { doSchema = false; } else if (!strcmp(argV[parmInd], "-f") || !strcmp(argV[parmInd], "-F")) { schemaFullChecking = true; } else if (!strcmp(argV[parmInd], "-p") || !strcmp(argV[parmInd], "-P")) { namespacePrefixes = true; } else if (!strcmp(argV[parmInd], "-sa")) { sortAttributes = true; } else { XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[parmInd] << "', ignoring it\n" << XERCES_STD_QUALIFIER endl; } } // // And now we have to have only one parameter left and it must be // the file name. // if (parmInd + 1 != argC) { usage(); XMLPlatformUtils::Terminate(); return 1; } xmlFile = argV[parmInd]; // // Create a SAX parser object. Then, according to what we were told on // the command line, set it to validate or not. // SAX2XMLReader* parser; SAX2XMLReader* reader = XMLReaderFactory::createXMLReader(); SAX2XMLReader* filter = NULL; if(sortAttributes) { filter=new SAX2SortAttributesFilter(reader); parser=filter; } else parser=reader; // // Then, according to what we were told on // the command line, set it to validate or not. // if (valScheme == SAX2XMLReader::Val_Auto) { parser->setFeature(XMLUni::fgSAX2CoreValidation, true); parser->setFeature(XMLUni::fgXercesDynamic, true); } if (valScheme == SAX2XMLReader::Val_Never) { parser->setFeature(XMLUni::fgSAX2CoreValidation, false); } if (valScheme == SAX2XMLReader::Val_Always) { parser->setFeature(XMLUni::fgSAX2CoreValidation, true); parser->setFeature(XMLUni::fgXercesDynamic, false); } parser->setFeature(XMLUni::fgSAX2CoreNameSpaces, doNamespaces); parser->setFeature(XMLUni::fgXercesSchema, doSchema); parser->setFeature(XMLUni::fgXercesHandleMultipleImports, true); parser->setFeature(XMLUni::fgXercesSchemaFullChecking, schemaFullChecking); parser->setFeature(XMLUni::fgSAX2CoreNameSpacePrefixes, namespacePrefixes); // // Create the handler object and install it as the document and error // handler for the parser. Then parse the file and catch any exceptions // that propogate out // int errorCount = 0; int errorCode = 0; try { SAX2PrintHandlers handler(encodingName, unRepFlags, expandNamespaces); parser->setContentHandler(&handler); parser->setErrorHandler(&handler); parser->parse(xmlFile); errorCount = parser->getErrorCount(); } catch (const OutOfMemoryException&) { XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl; errorCode = 5; } catch (const XMLException& toCatch) { XERCES_STD_QUALIFIER cerr << "\nAn error occurred\n Error: " << StrX(toCatch.getMessage()) << "\n" << XERCES_STD_QUALIFIER endl; errorCode = 4; } if(errorCode) { XMLPlatformUtils::Terminate(); return errorCode; } // // Delete the parser itself. Must be done prior to calling Terminate, below. // delete reader; if(filter) delete filter; // And call the termination method XMLPlatformUtils::Terminate(); if (errorCount > 0) return 4; else return 0; } xerces-c-3.1.1/samples/src/SAX2Print/SAX2PrintHandlers.cpp0000644000175000017500000002153111037122704022146 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SAX2PrintHandlers.cpp 676911 2008-07-15 13:27:32Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include "SAX2Print.hpp" // --------------------------------------------------------------------------- // Local const data // // Note: This is the 'safe' way to do these strings. If you compiler supports // L"" style strings, and portability is not a concern, you can use // those types constants directly. // --------------------------------------------------------------------------- static const XMLCh gEndElement[] = { chOpenAngle, chForwardSlash, chNull }; static const XMLCh gEndPI[] = { chQuestion, chCloseAngle, chNull }; static const XMLCh gStartPI[] = { chOpenAngle, chQuestion, chNull }; static const XMLCh gXMLDecl1[] = { chOpenAngle, chQuestion, chLatin_x, chLatin_m, chLatin_l , chSpace, chLatin_v, chLatin_e, chLatin_r, chLatin_s, chLatin_i , chLatin_o, chLatin_n, chEqual, chDoubleQuote, chDigit_1, chPeriod , chDigit_0, chDoubleQuote, chSpace, chLatin_e, chLatin_n, chLatin_c , chLatin_o, chLatin_d, chLatin_i, chLatin_n, chLatin_g, chEqual , chDoubleQuote, chNull }; static const XMLCh gXMLDecl2[] = { chDoubleQuote, chQuestion, chCloseAngle , chLF, chNull }; // --------------------------------------------------------------------------- // SAX2PrintHandlers: Constructors and Destructor // --------------------------------------------------------------------------- SAX2PrintHandlers::SAX2PrintHandlers( const char* const encodingName , const XMLFormatter::UnRepFlags unRepFlags , const bool expandNamespaces) : fFormatter ( encodingName , 0 , this , XMLFormatter::NoEscapes , unRepFlags ), fExpandNS ( expandNamespaces ) { // // Go ahead and output an XML Decl with our known encoding. This // is not the best answer, but its the best we can do until we // have SAX2 support. // fFormatter << gXMLDecl1 << fFormatter.getEncodingName() << gXMLDecl2; } SAX2PrintHandlers::~SAX2PrintHandlers() { } // --------------------------------------------------------------------------- // SAX2PrintHandlers: Overrides of the output formatter target interface // --------------------------------------------------------------------------- void SAX2PrintHandlers::writeChars(const XMLByte* const /* toWrite */) { } void SAX2PrintHandlers::writeChars(const XMLByte* const toWrite, const XMLSize_t count, XMLFormatter* const /* formatter */) { // For this one, just dump them to the standard output // Surprisingly, Solaris was the only platform on which // required the char* cast to print out the string correctly. // Without the cast, it was printing the pointer value in hex. // Quite annoying, considering every other platform printed // the string with the explicit cast to char* below. XERCES_STD_QUALIFIER cout.write((char *) toWrite, (int) count); XERCES_STD_QUALIFIER cout.flush(); } // --------------------------------------------------------------------------- // SAX2PrintHandlers: Overrides of the SAX ErrorHandler interface // --------------------------------------------------------------------------- void SAX2PrintHandlers::error(const SAXParseException& e) { XERCES_STD_QUALIFIER cerr << "\nError at file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "\n Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; } void SAX2PrintHandlers::fatalError(const SAXParseException& e) { XERCES_STD_QUALIFIER cerr << "\nFatal Error at file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "\n Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; } void SAX2PrintHandlers::warning(const SAXParseException& e) { XERCES_STD_QUALIFIER cerr << "\nWarning at file " << StrX(e.getSystemId()) << ", line " << e.getLineNumber() << ", char " << e.getColumnNumber() << "\n Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; } // --------------------------------------------------------------------------- // SAX2PrintHandlers: Overrides of the SAX DTDHandler interface // --------------------------------------------------------------------------- void SAX2PrintHandlers::unparsedEntityDecl(const XMLCh* const /* name */ , const XMLCh* const /* publicId */ , const XMLCh* const /* systemId */ , const XMLCh* const /* notationName */) { // Not used at this time } void SAX2PrintHandlers::notationDecl(const XMLCh* const /* name */ , const XMLCh* const /* publicId */ , const XMLCh* const /* systemId */) { // Not used at this time } // --------------------------------------------------------------------------- // SAX2PrintHandlers: Overrides of the SAX DocumentHandler interface // --------------------------------------------------------------------------- void SAX2PrintHandlers::characters(const XMLCh* const chars , const XMLSize_t length) { fFormatter.formatBuf(chars, length, XMLFormatter::CharEscapes); } void SAX2PrintHandlers::endDocument() { } void SAX2PrintHandlers::endElement(const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname) { // No escapes are legal here fFormatter << XMLFormatter::NoEscapes << gEndElement ; if ( fExpandNS ) { if (XMLString::compareIString(uri,XMLUni::fgZeroLenString) != 0) fFormatter << uri << chColon; fFormatter << localname << chCloseAngle; } else fFormatter << qname << chCloseAngle; } void SAX2PrintHandlers::ignorableWhitespace( const XMLCh* const chars ,const XMLSize_t length) { fFormatter.formatBuf(chars, length, XMLFormatter::NoEscapes); } void SAX2PrintHandlers::processingInstruction(const XMLCh* const target , const XMLCh* const data) { fFormatter << XMLFormatter::NoEscapes << gStartPI << target; if (data) fFormatter << chSpace << data; fFormatter << XMLFormatter::NoEscapes << gEndPI; } void SAX2PrintHandlers::startDocument() { } void SAX2PrintHandlers::startElement(const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname, const Attributes& attributes) { // The name has to be representable without any escapes fFormatter << XMLFormatter::NoEscapes << chOpenAngle ; if ( fExpandNS ) { if (XMLString::compareIString(uri,XMLUni::fgZeroLenString) != 0) fFormatter << uri << chColon; fFormatter << localname ; } else fFormatter << qname ; XMLSize_t len = attributes.getLength(); for (XMLSize_t index = 0; index < len; index++) { // // Again the name has to be completely representable. But the // attribute can have refs and requires the attribute style // escaping. // fFormatter << XMLFormatter::NoEscapes << chSpace ; if ( fExpandNS ) { if (XMLString::compareIString(attributes.getURI(index),XMLUni::fgZeroLenString) != 0) fFormatter << attributes.getURI(index) << chColon; fFormatter << attributes.getLocalName(index) ; } else fFormatter << attributes.getQName(index) ; fFormatter << chEqual << chDoubleQuote << XMLFormatter::AttrEscapes << attributes.getValue(index) << XMLFormatter::NoEscapes << chDoubleQuote; } fFormatter << chCloseAngle; } xerces-c-3.1.1/samples/src/SAX2Print/SAX2PrintHandlers.hpp0000644000175000017500000001013210647424627022165 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SAX2PrintHandlers.hpp 557282 2007-07-18 14:54:15Z amassari $ */ #include #include XERCES_CPP_NAMESPACE_USE class SAX2PrintHandlers : public DefaultHandler, private XMLFormatTarget { public: // ----------------------------------------------------------------------- // Constructors // ----------------------------------------------------------------------- SAX2PrintHandlers ( const char* const encodingName , const XMLFormatter::UnRepFlags unRepFlags , const bool expandNamespaces ); ~SAX2PrintHandlers(); // ----------------------------------------------------------------------- // Implementations of the format target interface // ----------------------------------------------------------------------- void writeChars ( const XMLByte* const toWrite ); virtual void writeChars ( const XMLByte* const toWrite , const XMLSize_t count , XMLFormatter* const formatter ); // ----------------------------------------------------------------------- // Implementations of the SAX DocumentHandler interface // ----------------------------------------------------------------------- void endDocument(); void endElement( const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname); void characters(const XMLCh* const chars, const XMLSize_t length); void ignorableWhitespace ( const XMLCh* const chars , const XMLSize_t length ); void processingInstruction ( const XMLCh* const target , const XMLCh* const data ); void startDocument(); void startElement( const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname, const Attributes& attributes); // ----------------------------------------------------------------------- // Implementations of the SAX ErrorHandler interface // ----------------------------------------------------------------------- void warning(const SAXParseException& exc); void error(const SAXParseException& exc); void fatalError(const SAXParseException& exc); // ----------------------------------------------------------------------- // Implementation of the SAX DTDHandler interface // ----------------------------------------------------------------------- void notationDecl ( const XMLCh* const name , const XMLCh* const publicId , const XMLCh* const systemId ); void unparsedEntityDecl ( const XMLCh* const name , const XMLCh* const publicId , const XMLCh* const systemId , const XMLCh* const notationName ); private : // ----------------------------------------------------------------------- // Private data members // // fFormatter // This is the formatter object that is used to output the data // to the target. It is set up to format to the standard output // stream. // ----------------------------------------------------------------------- XMLFormatter fFormatter; bool fExpandNS ; }; xerces-c-3.1.1/samples/src/DOMCount/0000755000175000017500000000000011363617314016133 5ustar borisborisxerces-c-3.1.1/samples/src/DOMCount/DOMCount.hpp0000644000175000017500000001072610523637166020306 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMCount.hpp 471735 2006-11-06 13:53:58Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #if defined(XERCES_NEW_IOSTREAMS) #include #else #include #endif XERCES_CPP_NAMESPACE_USE // --------------------------------------------------------------------------- // Simple error handler deriviative to install on parser // --------------------------------------------------------------------------- class DOMCountErrorHandler : public DOMErrorHandler { public: // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- DOMCountErrorHandler(); ~DOMCountErrorHandler(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- bool getSawErrors() const; // ----------------------------------------------------------------------- // Implementation of the DOM ErrorHandler interface // ----------------------------------------------------------------------- bool handleError(const DOMError& domError); void resetErrors(); private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DOMCountErrorHandler(const DOMCountErrorHandler&); void operator=(const DOMCountErrorHandler&); // ----------------------------------------------------------------------- // Private data members // // fSawErrors // This is set if we get any errors, and is queryable via a getter // method. Its used by the main code to suppress output if there are // errors. // ----------------------------------------------------------------------- bool fSawErrors; }; // --------------------------------------------------------------------------- // This is a simple class that lets us do easy (though not terribly efficient) // trancoding of XMLCh data to local code page for display. // --------------------------------------------------------------------------- class StrX { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- StrX(const XMLCh* const toTranscode) { // Call the private transcoding method fLocalForm = XMLString::transcode(toTranscode); } ~StrX() { XMLString::release(&fLocalForm); } // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const char* localForm() const { return fLocalForm; } private : // ----------------------------------------------------------------------- // Private data members // // fLocalForm // This is the local code page form of the string. // ----------------------------------------------------------------------- char* fLocalForm; }; inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump) { target << toDump.localForm(); return target; } inline bool DOMCountErrorHandler::getSawErrors() const { return fSawErrors; } xerces-c-3.1.1/samples/src/DOMCount/DOMCount.cpp0000644000175000017500000003766411274567126020315 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMCount.cpp 833057 2009-11-05 15:25:10Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include #include #include #include #include #include "DOMCount.hpp" #include #include #if defined(XERCES_NEW_IOSTREAMS) #include #else #include #endif // --------------------------------------------------------------------------- // This is a simple program which invokes the DOMParser to build a DOM // tree for the specified input file. It then walks the tree and counts // the number of elements. The element count is then printed. // --------------------------------------------------------------------------- static void usage() { XERCES_STD_QUALIFIER cout << "\nUsage:\n" " DOMCount [options] \n\n" "This program invokes the DOMLSParser, builds the DOM tree,\n" "and then prints the number of elements found in each XML file.\n\n" "Options:\n" " -l Indicate the input file is a List File that has a list of xml files.\n" " Default to off (Input file is an XML file).\n" " -v=xxx Validation scheme [always | never | auto*].\n" " -n Enable namespace processing. Defaults to off.\n" " -s Enable schema processing. Defaults to off.\n" " -f Enable full schema constraint checking. Defaults to off.\n" " -locale=ll_CC specify the locale, default: en_US.\n" " -p Print out names of elements and attributes encountered.\n" " -? Show this help.\n\n" " * = Default if not provided explicitly.\n" << XERCES_STD_QUALIFIER endl; } // --------------------------------------------------------------------------- // // Recursively Count up the total number of child Elements under the specified Node. // Process attributes of the node, if any. // // --------------------------------------------------------------------------- static int countChildElements(DOMNode *n, bool printOutEncounteredEles) { DOMNode *child; int count = 0; if (n) { if (n->getNodeType() == DOMNode::ELEMENT_NODE) { if(printOutEncounteredEles) { char *name = XMLString::transcode(n->getNodeName()); XERCES_STD_QUALIFIER cout <<"----------------------------------------------------------"<hasAttributes()) { // get all the attributes of the node DOMNamedNodeMap *pAttributes = n->getAttributes(); const XMLSize_t nSize = pAttributes->getLength(); XERCES_STD_QUALIFIER cout <<"\tAttributes" << XERCES_STD_QUALIFIER endl; XERCES_STD_QUALIFIER cout <<"\t----------" << XERCES_STD_QUALIFIER endl; for(XMLSize_t i=0;iitem(i); // get attribute name char *name = XMLString::transcode(pAttributeNode->getName()); XERCES_STD_QUALIFIER cout << "\t" << name << "="; XMLString::release(&name); // get attribute type name = XMLString::transcode(pAttributeNode->getValue()); XERCES_STD_QUALIFIER cout << name << XERCES_STD_QUALIFIER endl; XMLString::release(&name); } } } ++count; } for (child = n->getFirstChild(); child != 0; child=child->getNextSibling()) count += countChildElements(child, printOutEncounteredEles); } return count; } // --------------------------------------------------------------------------- // // main // // --------------------------------------------------------------------------- int main(int argC, char* argV[]) { // Check command line and extract arguments. if (argC < 2) { usage(); return 1; } const char* xmlFile = 0; AbstractDOMParser::ValSchemes valScheme = AbstractDOMParser::Val_Auto; bool doNamespaces = false; bool doSchema = false; bool schemaFullChecking = false; bool doList = false; bool errorOccurred = false; bool recognizeNEL = false; bool printOutEncounteredEles = false; char localeStr[64]; memset(localeStr, 0, sizeof localeStr); int argInd; for (argInd = 1; argInd < argC; argInd++) { // Break out on first parm not starting with a dash if (argV[argInd][0] != '-') break; // Watch for special case help request if (!strcmp(argV[argInd], "-?")) { usage(); return 2; } else if (!strncmp(argV[argInd], "-v=", 3) || !strncmp(argV[argInd], "-V=", 3)) { const char* const parm = &argV[argInd][3]; if (!strcmp(parm, "never")) valScheme = AbstractDOMParser::Val_Never; else if (!strcmp(parm, "auto")) valScheme = AbstractDOMParser::Val_Auto; else if (!strcmp(parm, "always")) valScheme = AbstractDOMParser::Val_Always; else { XERCES_STD_QUALIFIER cerr << "Unknown -v= value: " << parm << XERCES_STD_QUALIFIER endl; return 2; } } else if (!strcmp(argV[argInd], "-n") || !strcmp(argV[argInd], "-N")) { doNamespaces = true; } else if (!strcmp(argV[argInd], "-s") || !strcmp(argV[argInd], "-S")) { doSchema = true; } else if (!strcmp(argV[argInd], "-f") || !strcmp(argV[argInd], "-F")) { schemaFullChecking = true; } else if (!strcmp(argV[argInd], "-l") || !strcmp(argV[argInd], "-L")) { doList = true; } else if (!strcmp(argV[argInd], "-special:nel")) { // turning this on will lead to non-standard compliance behaviour // it will recognize the unicode character 0x85 as new line character // instead of regular character as specified in XML 1.0 // do not turn this on unless really necessary recognizeNEL = true; } else if (!strcmp(argV[argInd], "-p") || !strcmp(argV[argInd], "-P")) { printOutEncounteredEles = true; } else if (!strncmp(argV[argInd], "-locale=", 8)) { // Get out the end of line strcpy(localeStr, &(argV[argInd][8])); } else { XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[argInd] << "', ignoring it\n" << XERCES_STD_QUALIFIER endl; } } // // There should be only one and only one parameter left, and that // should be the file name. // if (argInd != argC - 1) { usage(); return 1; } // Initialize the XML4C system try { if (strlen(localeStr)) { XMLPlatformUtils::Initialize(localeStr); } else { XMLPlatformUtils::Initialize(); } if (recognizeNEL) { XMLPlatformUtils::recognizeNEL(recognizeNEL); } } catch (const XMLException& toCatch) { XERCES_STD_QUALIFIER cerr << "Error during initialization! :\n" << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl; return 1; } // Instantiate the DOM parser. static const XMLCh gLS[] = { chLatin_L, chLatin_S, chNull }; DOMImplementation *impl = DOMImplementationRegistry::getDOMImplementation(gLS); DOMLSParser *parser = ((DOMImplementationLS*)impl)->createLSParser(DOMImplementationLS::MODE_SYNCHRONOUS, 0); DOMConfiguration *config = parser->getDomConfig(); config->setParameter(XMLUni::fgDOMNamespaces, doNamespaces); config->setParameter(XMLUni::fgXercesSchema, doSchema); config->setParameter(XMLUni::fgXercesHandleMultipleImports, true); config->setParameter(XMLUni::fgXercesSchemaFullChecking, schemaFullChecking); if (valScheme == AbstractDOMParser::Val_Auto) { config->setParameter(XMLUni::fgDOMValidateIfSchema, true); } else if (valScheme == AbstractDOMParser::Val_Never) { config->setParameter(XMLUni::fgDOMValidate, false); } else if (valScheme == AbstractDOMParser::Val_Always) { config->setParameter(XMLUni::fgDOMValidate, true); } // enable datatype normalization - default is off config->setParameter(XMLUni::fgDOMDatatypeNormalization, true); // And create our error handler and install it DOMCountErrorHandler errorHandler; config->setParameter(XMLUni::fgDOMErrorHandler, &errorHandler); // // Get the starting time and kick off the parse of the indicated // file. Catch any exceptions that might propogate out of it. // unsigned long duration; bool more = true; XERCES_STD_QUALIFIER ifstream fin; // the input is a list file if (doList) fin.open(argV[argInd]); if (fin.fail()) { XERCES_STD_QUALIFIER cerr <<"Cannot open the list file: " << argV[argInd] << XERCES_STD_QUALIFIER endl; return 2; } while (more) { char fURI[1000]; //initialize the array to zeros memset(fURI,0,sizeof(fURI)); if (doList) { if (! fin.eof() ) { fin.getline (fURI, sizeof(fURI)); if (!*fURI) continue; else { xmlFile = fURI; XERCES_STD_QUALIFIER cerr << "==Parsing== " << xmlFile << XERCES_STD_QUALIFIER endl; } } else break; } else { xmlFile = argV[argInd]; more = false; } //reset error count first errorHandler.resetErrors(); XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *doc = 0; try { // reset document pool parser->resetDocumentPool(); const unsigned long startMillis = XMLPlatformUtils::getCurrentMillis(); doc = parser->parseURI(xmlFile); const unsigned long endMillis = XMLPlatformUtils::getCurrentMillis(); duration = endMillis - startMillis; } catch (const XMLException& toCatch) { XERCES_STD_QUALIFIER cerr << "\nError during parsing: '" << xmlFile << "'\n" << "Exception message is: \n" << StrX(toCatch.getMessage()) << "\n" << XERCES_STD_QUALIFIER endl; errorOccurred = true; continue; } catch (const DOMException& toCatch) { const unsigned int maxChars = 2047; XMLCh errText[maxChars + 1]; XERCES_STD_QUALIFIER cerr << "\nDOM Error during parsing: '" << xmlFile << "'\n" << "DOMException code is: " << toCatch.code << XERCES_STD_QUALIFIER endl; if (DOMImplementation::loadDOMExceptionMsg(toCatch.code, errText, maxChars)) XERCES_STD_QUALIFIER cerr << "Message is: " << StrX(errText) << XERCES_STD_QUALIFIER endl; errorOccurred = true; continue; } catch (...) { XERCES_STD_QUALIFIER cerr << "\nUnexpected exception during parsing: '" << xmlFile << "'\n"; errorOccurred = true; continue; } // // Extract the DOM tree, get the list of all the elements and report the // length as the count of elements. // if (errorHandler.getSawErrors()) { XERCES_STD_QUALIFIER cout << "\nErrors occurred, no output available\n" << XERCES_STD_QUALIFIER endl; errorOccurred = true; } else { unsigned int elementCount = 0; if (doc) { elementCount = countChildElements((DOMNode*)doc->getDocumentElement(), printOutEncounteredEles); // test getElementsByTagName and getLength XMLCh xa[] = {chAsterisk, chNull}; if (elementCount != doc->getElementsByTagName(xa)->getLength()) { XERCES_STD_QUALIFIER cout << "\nErrors occurred, element count is wrong\n" << XERCES_STD_QUALIFIER endl; errorOccurred = true; } } // Print out the stats that we collected and time taken. XERCES_STD_QUALIFIER cout << xmlFile << ": " << duration << " ms (" << elementCount << " elems)." << XERCES_STD_QUALIFIER endl; } } // // Delete the parser itself. Must be done prior to calling Terminate, below. // parser->release(); // And call the termination method XMLPlatformUtils::Terminate(); if (doList) fin.close(); if (errorOccurred) return 4; else return 0; } DOMCountErrorHandler::DOMCountErrorHandler() : fSawErrors(false) { } DOMCountErrorHandler::~DOMCountErrorHandler() { } // --------------------------------------------------------------------------- // DOMCountHandlers: Overrides of the DOM ErrorHandler interface // --------------------------------------------------------------------------- bool DOMCountErrorHandler::handleError(const DOMError& domError) { fSawErrors = true; if (domError.getSeverity() == DOMError::DOM_SEVERITY_WARNING) XERCES_STD_QUALIFIER cerr << "\nWarning at file "; else if (domError.getSeverity() == DOMError::DOM_SEVERITY_ERROR) XERCES_STD_QUALIFIER cerr << "\nError at file "; else XERCES_STD_QUALIFIER cerr << "\nFatal Error at file "; XERCES_STD_QUALIFIER cerr << StrX(domError.getLocation()->getURI()) << ", line " << domError.getLocation()->getLineNumber() << ", char " << domError.getLocation()->getColumnNumber() << "\n Message: " << StrX(domError.getMessage()) << XERCES_STD_QUALIFIER endl; return true; } void DOMCountErrorHandler::resetErrors() { fSawErrors = false; } xerces-c-3.1.1/samples/src/EnumVal/0000755000175000017500000000000011363617315016053 5ustar borisborisxerces-c-3.1.1/samples/src/EnumVal/EnumVal.cpp0000644000175000017500000002331710523637166020137 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: EnumVal.cpp 471735 2006-11-06 13:53:58Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #if defined(XERCES_NEW_IOSTREAMS) #include #else #include #endif #include #include XERCES_CPP_NAMESPACE_USE // --------------------------------------------------------------------------- // Forward references // --------------------------------------------------------------------------- static void usage(); // --------------------------------------------------------------------------- // This is a simple class that lets us do easy (though not terribly efficient) // trancoding of XMLCh data to local code page for display. // --------------------------------------------------------------------------- class StrX { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- StrX(const XMLCh* const toTranscode) { // Call the private transcoding method fLocalForm = XMLString::transcode(toTranscode); } ~StrX() { XMLString::release(&fLocalForm); } // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const char* localForm() const { return fLocalForm; } private : // ----------------------------------------------------------------------- // Private data members // // fLocalForm // This is the local code page form of the string. // ----------------------------------------------------------------------- char* fLocalForm; }; inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump) { target << toDump.localForm(); return target; } // --------------------------------------------------------------------------- // Local helper methods // --------------------------------------------------------------------------- static void usage() { XERCES_STD_QUALIFIER cout << "\nUsage:\n" " EnumVal \n\n" "This program parses the specified XML file, then shows how to\n" "enumerate the contents of the DTD Grammar. Essentially,\n" "shows how one can access the DTD information stored in internal\n" "data structures.\n" << XERCES_STD_QUALIFIER endl; } // --------------------------------------------------------------------------- // Program entry point // --------------------------------------------------------------------------- int main(int argC, char* argV[]) { // Initialize the XML4C system try { XMLPlatformUtils::Initialize(); } catch (const XMLException& toCatch) { XERCES_STD_QUALIFIER cerr << "Error during initialization! Message:\n" << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl; return 1; } // Check command line and extract arguments. if (argC < 2) { usage(); XMLPlatformUtils::Terminate(); return 1; } // We only have one required parameter, which is the file to process if ((argC != 2) || (*(argV[1]) == '-')) { usage(); XMLPlatformUtils::Terminate(); return 1; } const char* xmlFile = argV[1]; SAXParser::ValSchemes valScheme = SAXParser::Val_Auto; // // Create a DTD validator to be used for our validation work. Then create // a SAX parser object and pass it our validator. Then, according to what // we were told on the command line, set it to validate or not. He owns // the validator, so we have to allocate it. // int errorCount = 0; DTDValidator* valToUse = new DTDValidator; SAXParser* parser = new SAXParser(valToUse); parser->setValidationScheme(valScheme); // // Get the starting time and kick off the parse of the indicated // file. Catch any exceptions that might propogate out of it. // int errorCode = 0; try { parser->parse(xmlFile); errorCount = parser->getErrorCount(); } catch (const OutOfMemoryException&) { XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl; errorCode = 5; } catch (const XMLException& e) { XERCES_STD_QUALIFIER cerr << "\nError during parsing: '" << xmlFile << "'\n" << "Exception message is: \n" << StrX(e.getMessage()) << "\n" << XERCES_STD_QUALIFIER endl; errorCode = 4; } if(errorCode) { XMLPlatformUtils::Terminate(); return errorCode; } if (!errorCount) { // // Now we will get an enumerator for the element pool from the validator // and enumerate the elements, printing them as we go. For each element // we get an enumerator for its attributes and print them also. // DTDGrammar* grammar = (DTDGrammar*) valToUse->getGrammar(); NameIdPoolEnumerator elemEnum = grammar->getElemEnumerator(); if (elemEnum.hasMoreElements()) { XERCES_STD_QUALIFIER cout << "\nELEMENTS:\n----------------------------\n"; while(elemEnum.hasMoreElements()) { const DTDElementDecl& curElem = elemEnum.nextElement(); XERCES_STD_QUALIFIER cout << " Name: " << StrX(curElem.getFullName()) << "\n"; XERCES_STD_QUALIFIER cout << " Content Model: " << StrX(curElem.getFormattedContentModel()) << "\n"; // Get an enumerator for this guy's attributes if any if (curElem.hasAttDefs()) { XERCES_STD_QUALIFIER cout << " Attributes:\n"; XMLAttDefList& attList = curElem.getAttDefList(); for (unsigned int i=0; i 0) return 4; else return 0; } xerces-c-3.1.1/samples/src/DOMPrint/0000755000175000017500000000000011363617315016140 5ustar borisborisxerces-c-3.1.1/samples/src/DOMPrint/DOMPrintErrorHandler.hpp0000644000175000017500000000264210523637166022624 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMPrintErrorHandler.hpp 471735 2006-11-06 13:53:58Z amassari $ */ #ifndef DOM_PRINT_ERROR_HANDLER_HPP #define DOM_PRINT_ERROR_HANDLER_HPP #include XERCES_CPP_NAMESPACE_USE class DOMPrintErrorHandler : public DOMErrorHandler { public: DOMPrintErrorHandler(){}; ~DOMPrintErrorHandler(){}; /** @name The error handler interface */ bool handleError(const DOMError& domError); void resetErrors(){}; private : /* Unimplemented constructors and operators */ DOMPrintErrorHandler(const DOMErrorHandler&); void operator=(const DOMErrorHandler&); }; #endif xerces-c-3.1.1/samples/src/DOMPrint/DOMTreeErrorReporter.cpp0000644000175000017500000000420110523637166022640 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMTreeErrorReporter.cpp 471735 2006-11-06 13:53:58Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include "DOMTreeErrorReporter.hpp" #if defined(XERCES_NEW_IOSTREAMS) #include #else #include #endif #include #include void DOMTreeErrorReporter::warning(const SAXParseException&) { // // Ignore all warnings. // } void DOMTreeErrorReporter::error(const SAXParseException& toCatch) { fSawErrors = true; XERCES_STD_QUALIFIER cerr << "Error at file \"" << StrX(toCatch.getSystemId()) << "\", line " << toCatch.getLineNumber() << ", column " << toCatch.getColumnNumber() << "\n Message: " << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl; } void DOMTreeErrorReporter::fatalError(const SAXParseException& toCatch) { fSawErrors = true; XERCES_STD_QUALIFIER cerr << "Fatal Error at file \"" << StrX(toCatch.getSystemId()) << "\", line " << toCatch.getLineNumber() << ", column " << toCatch.getColumnNumber() << "\n Message: " << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl; } void DOMTreeErrorReporter::resetErrors() { fSawErrors = false; } xerces-c-3.1.1/samples/src/DOMPrint/DOMPrintErrorHandler.cpp0000644000175000017500000000337410523637166022622 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMPrintErrorHandler.cpp 471735 2006-11-06 13:53:58Z amassari $ */ #include #include #if defined(XERCES_NEW_IOSTREAMS) #include #else #include #endif #include "DOMPrintErrorHandler.hpp" bool DOMPrintErrorHandler::handleError(const DOMError &domError) { // Display whatever error message passed from the serializer if (domError.getSeverity() == DOMError::DOM_SEVERITY_WARNING) XERCES_STD_QUALIFIER cerr << "\nWarning Message: "; else if (domError.getSeverity() == DOMError::DOM_SEVERITY_ERROR) XERCES_STD_QUALIFIER cerr << "\nError Message: "; else XERCES_STD_QUALIFIER cerr << "\nFatal Message: "; char *msg = XMLString::transcode(domError.getMessage()); XERCES_STD_QUALIFIER cerr<< msg < #include static const XMLCh element_person[]= { chLatin_p, chLatin_e, chLatin_r, chLatin_s, chLatin_o, chLatin_n, chNull }; static const XMLCh element_link[]= { chLatin_l, chLatin_i, chLatin_n, chLatin_k, chNull }; DOMPrintFilter::DOMPrintFilter(ShowType whatToShow) :fWhatToShow(whatToShow) {} DOMNodeFilter::FilterAction DOMPrintFilter:: acceptNode(const DOMNode* node) const { // // The DOMLSSerializer shall call getWhatToShow() before calling // acceptNode(), to show nodes which are supposed to be // shown to this filter. // // REVISIT: In case the DOMLSSerializer does not follow the protocol, // Shall the filter honour, or NOT, what it claims // it is interested in ? // // The DOMLS specs does not specify that acceptNode() shall do // this way, or not, so it is up the implementation, // to skip the code below for the sake of performance ... // if ((getWhatToShow() & (1 << (node->getNodeType() - 1))) == 0) return DOMNodeFilter::FILTER_ACCEPT; switch (node->getNodeType()) { case DOMNode::ELEMENT_NODE: { // for element whose name is "person", skip it if (XMLString::compareString(node->getNodeName(), element_person)==0) return DOMNodeFilter::FILTER_SKIP; // for element whose name is "line", reject it if (XMLString::compareString(node->getNodeName(), element_link)==0) return DOMNodeFilter::FILTER_REJECT; // for rest, accept it return DOMNodeFilter::FILTER_ACCEPT; break; } case DOMNode::COMMENT_NODE: { // the WhatToShow will make this no effect return DOMNodeFilter::FILTER_REJECT; break; } case DOMNode::TEXT_NODE: { // the WhatToShow will make this no effect return DOMNodeFilter::FILTER_REJECT; break; } case DOMNode::DOCUMENT_TYPE_NODE: { // even we say we are going to process document type, // we are not able be to see this node since // DOMLSSerializerImpl (a XercesC's default implementation // of DOMLSSerializer) will not pass DocumentType node to // this filter. // return DOMNodeFilter::FILTER_REJECT; // no effect break; } case DOMNode::DOCUMENT_NODE: { // same as DOCUMENT_NODE return DOMNodeFilter::FILTER_REJECT; // no effect break; } default : { return DOMNodeFilter::FILTER_ACCEPT; break; } } return DOMNodeFilter::FILTER_ACCEPT; } xerces-c-3.1.1/samples/src/DOMPrint/DOMPrint.cpp0000644000175000017500000005355111274567126020316 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMPrint.cpp 833057 2009-11-05 15:25:10Z borisk $ */ // --------------------------------------------------------------------------- // This sample program invokes the XercesDOMParser to build a DOM tree for // the specified input file. It then invokes DOMLSSerializer::write() to // serialize the resultant DOM tree back to XML stream. // // Note: // Application needs to provide its own implementation of // DOMErrorHandler (in this sample, the DOMPrintErrorHandler), // if it would like to receive notification from the serializer // in the case any error occurs during the serialization. // // Application needs to provide its own implementation of // DOMLSSerializerFilter (in this sample, the DOMPrintFilter), // if it would like to filter out certain part of the DOM // representation, but must be aware that thus may render the // resultant XML stream invalid. // // Application may choose any combination of characters as the // end of line sequence to be used in the resultant XML stream, // but must be aware that thus may render the resultant XML // stream ill formed. // // Application may choose a particular encoding name in which // the output XML stream would be, but must be aware that if // characters, unrepresentable in the encoding specified, appearing // in markups, may force the serializer to terminate serialization // prematurely, and thus no complete serialization would be done. // // Application shall query the serializer first, before set any // feature/mode(true, false), or be ready to catch exception if this // feature/mode is not supported by the serializer. // // Application needs to clean up the filter, error handler and // format target objects created for the serialization. // // Limitations: // 1. The encoding="xxx" clause in the XML header should reflect // the system local code page, but does not. // 2. Cases where the XML data contains characters that can not // be represented in the system local code page are not handled. // // --------------------------------------------------------------------------- // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include "DOMTreeErrorReporter.hpp" #include "DOMPrintFilter.hpp" #include "DOMPrintErrorHandler.hpp" #include #include #include // --------------------------------------------------------------------------- // Local data // // gXmlFile // The path to the file to parser. Set via command line. // // gDoNamespaces // Indicates whether namespace processing should be done. // // gDoSchema // Indicates whether schema processing should be done. // // gSchemaFullChecking // Indicates whether full schema constraint checking should be done. // // gDoCreate // Indicates whether entity reference nodes needs to be created or not // Defaults to false // // gOutputEncoding // The encoding we are to output in. If not set on the command line, // then it is defaults to the encoding of the input XML file. // // gSplitCdataSections // Indicates whether split-cdata-sections is to be enabled or not. // // gDiscardDefaultContent // Indicates whether default content is discarded or not. // // gUseFilter // Indicates if user wants to plug in the DOMPrintFilter. // // gValScheme // Indicates what validation scheme to use. It defaults to 'auto', but // can be set via the -v= command. // // --------------------------------------------------------------------------- static char* gXmlFile = 0; static bool gDoNamespaces = false; static bool gDoSchema = false; static bool gSchemaFullChecking = false; static bool gDoCreate = false; static char* goutputfile = 0; static char* gXPathExpression = 0; // options for DOMLSSerializer's features static XMLCh* gOutputEncoding = 0; static bool gSplitCdataSections = true; static bool gDiscardDefaultContent = true; static bool gUseFilter = false; static bool gFormatPrettyPrint = false; static bool gWriteBOM = false; static XercesDOMParser::ValSchemes gValScheme = XercesDOMParser::Val_Auto; // Prototypes for internally used functions void usage(); // --------------------------------------------------------------------------- // // Usage() // // --------------------------------------------------------------------------- void usage() { XERCES_STD_QUALIFIER cout << "\nUsage:\n" " DOMPrint [options] \n\n" "This program invokes the DOM parser, and builds the DOM tree.\n" "It then asks the DOMLSSerializer to serialize the DOM tree.\n" "Options:\n" " -e create entity reference nodes. Default is no expansion.\n" " -v=xxx Validation scheme [always | never | auto*].\n" " -n Enable namespace processing. Default is off.\n" " -s Enable schema processing. Default is off.\n" " -f Enable full schema constraint checking. Defaults is off.\n" " -wenc=XXX Use a particular encoding for output. Default is\n" " the same encoding as the input XML file. UTF-8 if\n" " input XML file has not XML declaration.\n" " -wfile=xxx Write to a file instead of stdout.\n" " -wscs=xxx Enable/Disable split-cdata-sections. Default on\n" " -wddc=xxx Enable/Disable discard-default-content. Default on\n" " -wflt=xxx Enable/Disable filtering. Default off\n" " -wfpp=xxx Enable/Disable format-pretty-print. Default off\n" " -wbom=xxx Enable/Disable write Byte-Order-Mark Default off\n" " -xpath=xxx Prints only the nodes matching the given XPath.\n" " -? Show this help.\n\n" " * = Default if not provided explicitly.\n\n" "The parser has intrinsic support for the following encodings:\n" " UTF-8, US-ASCII, ISO8859-1, UTF-16[BL]E, UCS-4[BL]E,\n" " WINDOWS-1252, IBM1140, IBM037, IBM1047.\n" << XERCES_STD_QUALIFIER endl; } // --------------------------------------------------------------------------- // // main // // --------------------------------------------------------------------------- int main(int argC, char* argV[]) { int retval = 0; // Initialize the XML4C2 system try { XMLPlatformUtils::Initialize(); } catch(const XMLException &toCatch) { XERCES_STD_QUALIFIER cerr << "Error during Xerces-c Initialization.\n" << " Exception message:" << StrX(toCatch.getMessage()) << XERCES_STD_QUALIFIER endl; return 1; } // Check command line and extract arguments. if (argC < 2) { usage(); XMLPlatformUtils::Terminate(); return 1; } // See if non validating dom parser configuration is requested. int parmInd; for (parmInd = 1; parmInd < argC; parmInd++) { // Break out on first parm not starting with a dash if (argV[parmInd][0] != '-') break; // Watch for special case help request if (!strcmp(argV[parmInd], "-?")) { usage(); XMLPlatformUtils::Terminate(); return 2; } else if (!strncmp(argV[parmInd], "-v=", 3) || !strncmp(argV[parmInd], "-V=", 3)) { const char* const parm = &argV[parmInd][3]; if (!strcmp(parm, "never")) gValScheme = XercesDOMParser::Val_Never; else if (!strcmp(parm, "auto")) gValScheme = XercesDOMParser::Val_Auto; else if (!strcmp(parm, "always")) gValScheme = XercesDOMParser::Val_Always; else { XERCES_STD_QUALIFIER cerr << "Unknown -v= value: " << parm << XERCES_STD_QUALIFIER endl; XMLPlatformUtils::Terminate(); return 2; } } else if (!strcmp(argV[parmInd], "-n") || !strcmp(argV[parmInd], "-N")) { gDoNamespaces = true; } else if (!strcmp(argV[parmInd], "-s") || !strcmp(argV[parmInd], "-S")) { gDoSchema = true; } else if (!strcmp(argV[parmInd], "-f") || !strcmp(argV[parmInd], "-F")) { gSchemaFullChecking = true; } else if (!strcmp(argV[parmInd], "-e") || !strcmp(argV[parmInd], "-E")) { gDoCreate = true; } else if (!strncmp(argV[parmInd], "-wenc=", 6)) { // Get out the encoding name gOutputEncoding = XMLString::transcode( &(argV[parmInd][6]) ); } else if (!strncmp(argV[parmInd], "-wfile=", 7)) { goutputfile = &(argV[parmInd][7]); } else if (!strncmp(argV[parmInd], "-wddc=", 6)) { const char* const parm = &argV[parmInd][6]; if (!strcmp(parm, "on")) gDiscardDefaultContent = true; else if (!strcmp(parm, "off")) gDiscardDefaultContent = false; else { XERCES_STD_QUALIFIER cerr << "Unknown -wddc= value: " << parm << XERCES_STD_QUALIFIER endl; XMLPlatformUtils::Terminate(); return 2; } } else if (!strncmp(argV[parmInd], "-wscs=", 6)) { const char* const parm = &argV[parmInd][6]; if (!strcmp(parm, "on")) gSplitCdataSections = true; else if (!strcmp(parm, "off")) gSplitCdataSections = false; else { XERCES_STD_QUALIFIER cerr << "Unknown -wscs= value: " << parm << XERCES_STD_QUALIFIER endl; XMLPlatformUtils::Terminate(); return 2; } } else if (!strncmp(argV[parmInd], "-wflt=", 6)) { const char* const parm = &argV[parmInd][6]; if (!strcmp(parm, "on")) gUseFilter = true; else if (!strcmp(parm, "off")) gUseFilter = false; else { XERCES_STD_QUALIFIER cerr << "Unknown -wflt= value: " << parm << XERCES_STD_QUALIFIER endl; XMLPlatformUtils::Terminate(); return 2; } } else if (!strncmp(argV[parmInd], "-wfpp=", 6)) { const char* const parm = &argV[parmInd][6]; if (!strcmp(parm, "on")) gFormatPrettyPrint = true; else if (!strcmp(parm, "off")) gFormatPrettyPrint = false; else { XERCES_STD_QUALIFIER cerr << "Unknown -wfpp= value: " << parm << XERCES_STD_QUALIFIER endl; XMLPlatformUtils::Terminate(); return 2; } } else if (!strncmp(argV[parmInd], "-wbom=", 6)) { const char* const parm = &argV[parmInd][6]; if (!strcmp(parm, "on")) gWriteBOM = true; else if (!strcmp(parm, "off")) gWriteBOM = false; else { XERCES_STD_QUALIFIER cerr << "Unknown -wbom= value: " << parm << XERCES_STD_QUALIFIER endl; XMLPlatformUtils::Terminate(); return 2; } } else if (!strncmp(argV[parmInd], "-xpath=", 7)) { gXPathExpression = &(argV[parmInd][7]); } else { XERCES_STD_QUALIFIER cerr << "Unknown option '" << argV[parmInd] << "', ignoring it.\n" << XERCES_STD_QUALIFIER endl; } } // // And now we have to have only one parameter left and it must be // the file name. // if (parmInd + 1 != argC) { usage(); XMLPlatformUtils::Terminate(); return 1; } gXmlFile = argV[parmInd]; // // Create our parser, then attach an error handler to the parser. // The parser will call back to methods of the ErrorHandler if it // discovers errors during the course of parsing the XML document. // XercesDOMParser *parser = new XercesDOMParser; parser->setValidationScheme(gValScheme); parser->setDoNamespaces(gDoNamespaces); parser->setDoSchema(gDoSchema); parser->setHandleMultipleImports (true); parser->setValidationSchemaFullChecking(gSchemaFullChecking); parser->setCreateEntityReferenceNodes(gDoCreate); DOMTreeErrorReporter *errReporter = new DOMTreeErrorReporter(); parser->setErrorHandler(errReporter); // // Parse the XML file, catching any XML exceptions that might propogate // out of it. // bool errorsOccured = false; try { parser->parse(gXmlFile); } catch (const OutOfMemoryException&) { XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl; errorsOccured = true; } catch (const XMLException& e) { XERCES_STD_QUALIFIER cerr << "An error occurred during parsing\n Message: " << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; errorsOccured = true; } catch (const DOMException& e) { const unsigned int maxChars = 2047; XMLCh errText[maxChars + 1]; XERCES_STD_QUALIFIER cerr << "\nDOM Error during parsing: '" << gXmlFile << "'\n" << "DOMException code is: " << e.code << XERCES_STD_QUALIFIER endl; if (DOMImplementation::loadDOMExceptionMsg(e.code, errText, maxChars)) XERCES_STD_QUALIFIER cerr << "Message is: " << StrX(errText) << XERCES_STD_QUALIFIER endl; errorsOccured = true; } catch (...) { XERCES_STD_QUALIFIER cerr << "An error occurred during parsing\n " << XERCES_STD_QUALIFIER endl; errorsOccured = true; } // If the parse was successful, output the document data from the DOM tree if (!errorsOccured && !errReporter->getSawErrors()) { DOMPrintFilter *myFilter = 0; try { // get a serializer, an instance of DOMLSSerializer XMLCh tempStr[3] = {chLatin_L, chLatin_S, chNull}; DOMImplementation *impl = DOMImplementationRegistry::getDOMImplementation(tempStr); DOMLSSerializer *theSerializer = ((DOMImplementationLS*)impl)->createLSSerializer(); DOMLSOutput *theOutputDesc = ((DOMImplementationLS*)impl)->createLSOutput(); // set user specified output encoding theOutputDesc->setEncoding(gOutputEncoding); // plug in user's own filter if (gUseFilter) { // even we say to show attribute, but the DOMLSSerializer // will not show attribute nodes to the filter as // the specs explicitly says that DOMLSSerializer shall // NOT show attributes to DOMLSSerializerFilter. // // so DOMNodeFilter::SHOW_ATTRIBUTE has no effect. // same DOMNodeFilter::SHOW_DOCUMENT_TYPE, no effect. // myFilter = new DOMPrintFilter(DOMNodeFilter::SHOW_ELEMENT | DOMNodeFilter::SHOW_ATTRIBUTE | DOMNodeFilter::SHOW_DOCUMENT_TYPE); theSerializer->setFilter(myFilter); } // plug in user's own error handler DOMErrorHandler *myErrorHandler = new DOMPrintErrorHandler(); DOMConfiguration* serializerConfig=theSerializer->getDomConfig(); serializerConfig->setParameter(XMLUni::fgDOMErrorHandler, myErrorHandler); // set feature if the serializer supports the feature/mode if (serializerConfig->canSetParameter(XMLUni::fgDOMWRTSplitCdataSections, gSplitCdataSections)) serializerConfig->setParameter(XMLUni::fgDOMWRTSplitCdataSections, gSplitCdataSections); if (serializerConfig->canSetParameter(XMLUni::fgDOMWRTDiscardDefaultContent, gDiscardDefaultContent)) serializerConfig->setParameter(XMLUni::fgDOMWRTDiscardDefaultContent, gDiscardDefaultContent); if (serializerConfig->canSetParameter(XMLUni::fgDOMWRTFormatPrettyPrint, gFormatPrettyPrint)) serializerConfig->setParameter(XMLUni::fgDOMWRTFormatPrettyPrint, gFormatPrettyPrint); if (serializerConfig->canSetParameter(XMLUni::fgDOMWRTBOM, gWriteBOM)) serializerConfig->setParameter(XMLUni::fgDOMWRTBOM, gWriteBOM); // // Plug in a format target to receive the resultant // XML stream from the serializer. // // StdOutFormatTarget prints the resultant XML stream // to stdout once it receives any thing from the serializer. // XMLFormatTarget *myFormTarget; if (goutputfile) myFormTarget=new LocalFileFormatTarget(goutputfile); else myFormTarget=new StdOutFormatTarget(); theOutputDesc->setByteStream(myFormTarget); // get the DOM representation DOMDocument *doc = parser->getDocument(); // // do the serialization through DOMLSSerializer::write(); // if(gXPathExpression!=NULL) { XMLCh* xpathStr=XMLString::transcode(gXPathExpression); DOMElement* root = doc->getDocumentElement(); try { DOMXPathNSResolver* resolver=doc->createNSResolver(root); DOMXPathResult* result=doc->evaluate( xpathStr, root, resolver, DOMXPathResult::ORDERED_NODE_SNAPSHOT_TYPE, NULL); XMLSize_t nLength = result->getSnapshotLength(); for(XMLSize_t i = 0; i < nLength; i++) { result->snapshotItem(i); theSerializer->write(result->getNodeValue(), theOutputDesc); } result->release(); resolver->release (); } catch(const DOMXPathException& e) { XERCES_STD_QUALIFIER cerr << "An error occurred during processing of the XPath expression. Msg is:" << XERCES_STD_QUALIFIER endl << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; retval = 4; } catch(const DOMException& e) { XERCES_STD_QUALIFIER cerr << "An error occurred during processing of the XPath expression. Msg is:" << XERCES_STD_QUALIFIER endl << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; retval = 4; } XMLString::release(&xpathStr); } else theSerializer->write(doc, theOutputDesc); theOutputDesc->release(); theSerializer->release(); // // Filter, formatTarget and error handler // are NOT owned by the serializer. // delete myFormTarget; delete myErrorHandler; if (gUseFilter) delete myFilter; } catch (const OutOfMemoryException&) { XERCES_STD_QUALIFIER cerr << "OutOfMemoryException" << XERCES_STD_QUALIFIER endl; retval = 5; } catch (XMLException& e) { XERCES_STD_QUALIFIER cerr << "An error occurred during creation of output transcoder. Msg is:" << XERCES_STD_QUALIFIER endl << StrX(e.getMessage()) << XERCES_STD_QUALIFIER endl; retval = 4; } } else retval = 4; // // Clean up the error handler. The parser does not adopt handlers // since they could be many objects or one object installed for multiple // handlers. // delete errReporter; // // Delete the parser itself. Must be done prior to calling Terminate, below. // delete parser; XMLString::release(&gOutputEncoding); // And call the termination method XMLPlatformUtils::Terminate(); return retval; } xerces-c-3.1.1/samples/src/DOMPrint/DOMPrintFilter.hpp0000644000175000017500000000327511030714661021453 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMPrintFilter.hpp 671894 2008-06-26 13:29:21Z borisk $ */ ////////////////////////////////////////////////////////////////////// // DOMPrintFilter.hpp: a sample implementation of DOMWriterFilter. // ////////////////////////////////////////////////////////////////////// #ifndef DOMPrintFilter_HEADER_GUARD_ #define DOMPrintFilter_HEADER_GUARD_ #include XERCES_CPP_NAMESPACE_USE class DOMPrintFilter : public DOMLSSerializerFilter { public: DOMPrintFilter(ShowType whatToShow = DOMNodeFilter::SHOW_ALL); ~DOMPrintFilter(){}; virtual FilterAction acceptNode(const DOMNode*) const; virtual ShowType getWhatToShow() const {return fWhatToShow;}; private: // unimplemented copy ctor and assignement operator DOMPrintFilter(const DOMPrintFilter&); DOMPrintFilter & operator = (const DOMPrintFilter&); ShowType fWhatToShow; }; #endif xerces-c-3.1.1/samples/src/DOMPrint/DOMTreeErrorReporter.hpp0000644000175000017500000000766310523637166022664 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMTreeErrorReporter.hpp 471735 2006-11-06 13:53:58Z amassari $ */ #include #include #if defined(XERCES_NEW_IOSTREAMS) #include #else #include #endif XERCES_CPP_NAMESPACE_USE class DOMTreeErrorReporter : public ErrorHandler { public: // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- DOMTreeErrorReporter() : fSawErrors(false) { } ~DOMTreeErrorReporter() { } // ----------------------------------------------------------------------- // Implementation of the error handler interface // ----------------------------------------------------------------------- void warning(const SAXParseException& toCatch); void error(const SAXParseException& toCatch); void fatalError(const SAXParseException& toCatch); void resetErrors(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- bool getSawErrors() const; // ----------------------------------------------------------------------- // Private data members // // fSawErrors // This is set if we get any errors, and is queryable via a getter // method. Its used by the main code to suppress output if there are // errors. // ----------------------------------------------------------------------- bool fSawErrors; }; inline bool DOMTreeErrorReporter::getSawErrors() const { return fSawErrors; } // --------------------------------------------------------------------------- // This is a simple class that lets us do easy (though not terribly efficient) // trancoding of XMLCh data to local code page for display. // --------------------------------------------------------------------------- class StrX { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- StrX(const XMLCh* const toTranscode) { // Call the private transcoding method fLocalForm = XMLString::transcode(toTranscode); } ~StrX() { XMLString::release(&fLocalForm); } // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const char* localForm() const { return fLocalForm; } private : // ----------------------------------------------------------------------- // Private data members // // fLocalForm // This is the local code page form of the string. // ----------------------------------------------------------------------- char* fLocalForm; }; inline XERCES_STD_QUALIFIER ostream& operator<<(XERCES_STD_QUALIFIER ostream& target, const StrX& toDump) { target << toDump.localForm(); return target; } xerces-c-3.1.1/doc/0000755000175000017500000000000011363617317013020 5ustar borisborisxerces-c-3.1.1/doc/faq-build.xml0000644000175000017500000001127311065665171015412 0ustar borisboris Why do I get compilation error saying DOMDocument was declared twice using Microsoft Visual C++?

Your application somehow has picked up the Microsoft SDK header Msxml.h which has its own typedef of DOMDocument. This confuses with the &XercesCName; &XercesC3Version; &XercesC3Namespace;::DOMDocument and thus lead to the compilation errors.

Qualifier the use of DOMDocument in your application explicitly e.g.,

xercesc::DOMDocument* doc;

will eliminate these compilation problems. Alternatively, you may want to get rid of the Msxml.h header inclusion.

Why does my application give unresolved linking errors?

Please check the following:

  1. Verify that you have specified the appropriate option and library path in the linker command line
  2. If you're using the binary build of &XercesCName;, make sure that the CPU architecture, OS, and compiler are the same as the ones used to build the application. Different OS and compiler versions might cause unresolved linking problems or compilation errors. If the versions are different, rebuild the &XercesCName; library on your system before building your application.
  3. If you are using Microsoft Visual Studio 2003 (7.1), 2005 (8.0), or 2008 (9.0), check that the "Treat wchar_t as a built-in type" option has been set to the same value as used to build &XercesCName;. The binary distribution for Visual Studio 7.1 is built with this option turned off. The binary distributions for Visual Studio 8.0 and 9.0 are built with this option turned on.
I cannot run the sample applications. What is wrong?

In order to run an application built using &XercesCProjectName; you must set up your path and library search path properly. For more information refer to the Installation instructions.

Why my document is valid on some platform while invalid on others?

The parser relies on the system call, strtod(), to parse a string representation of a double/float data. In the case of no invalid characters found, the strtod() returns a double/float value if it is representable on that platform, or raises ERANGE to indicate either underflow or underflow occurs. And the parser assigns zero to the said data if underflow is found.

The threshold, where the strtod() decides if an underflow occurs, varies on platforms. On Windows, it is roughly the order of e-308, on Linux, e-325, and on AIX, HP-UX and Solaris, e-324.

So in an instance document, a data of value 1.0e-310 from a type with minExclusive 0, is considered invalid on windows (since it is converted to 0 and therefore violates the minExclusive constraint), but valid on other Unix platforms (since it remains the original value).

The discussion above applies to data in xsd file as well.

xerces-c-3.1.1/doc/saxprint.xml0000644000175000017500000001133411274310172015402 0ustar borisboris

SAXPrint uses the SAX APIs to parse an XML file and print it back. Do note that the output of this sample is not exactly the same as the input (in terms of whitespaces, first line), but the output has the same information content as the input.

The SAXPrint sample parses an XML file and prints out the contents again in XML (some loss occurs). To run SAXPrint, enter the following

SAXPrint <XML file>

The following parameters may be set from the command line

Usage: SAXPrint [options] <XML file> This program invokes the SAX Parser, and then prints the data returned by the various SAX handlers for the specified XML file. Options: -u=xxx Handle unrepresentable chars [fail | rep | ref*]. -v=xxx Validation scheme [always | never | auto*]. -n Enable namespace processing. -s Enable schema processing. -f Enable full schema constraint checking. -x=XXX Use a particular encoding for output (LATIN1*). -? Show this help. * = Default if not provided explicitly. The parser has intrinsic support for the following encodings: UTF-8, US-ASCII, ISO8859-1, UTF-16[BL]E, UCS-4[BL]E, WINDOWS-1252, IBM1140, IBM037, IBM1047.

-u=fail will fail when unrepresentable characters are encountered
-u=rep will replace with the substitution character for that codepage
-u=ref will report the character as a reference

-v=always will force validation
-v=never will not use any validation
-v=auto will validate if a DOCTYPE declaration or a schema declaration is present in the XML document

Here is a sample output from SAXPrint

cd &XercesC3InstallDir;/samples/data SAXPrint -v=always personal.xml <?xml version="1.0" encoding="LATIN1"?> <personnel> <person id="Big.Boss"> <name><family>Boss</family> <given>Big</given></name> <email>chief@foo.com</email> <link subordinates="one.worker two.worker three.worker four.worker five.worker"></link> </person> <person id="one.worker"> <name><family>Worker</family> <given>One</given></name> <email>one@foo.com</email> <link manager="Big.Boss"></link> </person> <person id="two.worker"> <name><family>Worker</family> <given>Two</given></name> <email>two@foo.com</email> <link manager="Big.Boss"></link> </person> <person id="three.worker"> <name><family>Worker</family> <given>Three</given></name> <email>three@foo.com</email> <link manager="Big.Boss"></link> </person> <person id="four.worker"> <name><family>Worker</family> <given>Four</given></name> <email>four@foo.com</email> <link manager="Big.Boss"></link> </person> <person id="five.worker"> <name><family>Worker</family> <given>Five</given></name> <email>five@foo.com</email> <link manager="Big.Boss"></link> </person> </personnel> SAXPrint does not reproduce the original XML file. SAXPrint and DOMPrint produce different results because of the way the two APIs store data and capture events.
xerces-c-3.1.1/doc/xinclude.xml0000644000175000017500000000322411065665171015356 0ustar borisboris

The XInclude example uses the provided DOM API to parse an XML file while expanding the xi:include elements. It then writes the resulting DOM tree in the expanded form.

The XInclude sample converts an input XML file into an expanded output XML file. To run XInclude, enter the following

XInclude <Input XML file> <Output XML file>

The following parameters may be set from the command line

Usage: XInclude [-h] InputFile OutputFile -h : Prints this help message and exits.
xerces-c-3.1.1/doc/readme.xml0000644000175000017500000001373011327553447015006 0ustar borisboris

&XercesCName; is a validating XML parser written in a portable subset of C++. &XercesCName; makes it easy to give your application the ability to read and write XML data. A shared library is provided for parsing, generating, manipulating, and validating XML documents using the DOM, SAX, and SAX2 APIs. For an introduction to programming with &XercesCName; refer to the Programming Guide.

&XercesCName; is faithful to the XML 1.0 recommendation and many associated standards (see Features below).

The parser provides high performance, modularity, and scalability. Source code, samples and API documentation are provided with the parser. For portability, care has been taken to make minimal use of templates, no RTTI, and minimal use of #ifdefs.

&XercesCProjectName; has rich generating and validating capabilities. The parser is used for:

  • Building XML-savvy Web servers
  • Building next generation of vertical applications that use XML as their data format
  • On-the-fly validation for creating XML editors
  • Ensuring the integrity of e-business data expressed in XML
  • Building truly internationalized XML applications
  • Conforms to
    • XML 1.0 (Third Edition), W3C Recommendation
    • XML 1.1 (First Edition), W3C Recommendation (Note: section 2.13 Normalization Checking has not been implemented)
    • DOM Level 1 Specification, W3C Recommendation of October 1, 1998
    • DOM Level 2 Core Specification, W3C Recommendation of November 13, 2000
    • DOM Level 2 Traversal and Range Specification, W3C Recommendation of November 13, 2000
    • SAX 1.0 and SAX 2.0
    • Namespaces in XML, W3C Recommendation of January 14, 1999
    • Namespaces in XML 1.1, W3C Recommendation
    • XML Schema Part 1: Structure, W3C Recommendation 2 May 2001
    • XML Schema Part 2: Datatypes, W3C Recommendation 2 May 2001
    • DOM Level 3.0 Core Specification, W3C Recommendation 7 April 2004
    • DOM Level 3.0 Load and Save Specification, W3C Recommendation 7 April 2004
      See DOM Level 3 Support for detail.
    • XML Inclusions (XInclude) 1.0 (Second Edition), W3C Recommendation 15 November 2006
    • Element Traversal Specification, W3C Recommendation 22 December 2008
  • Source code, samples, and documentation are provided
  • Programmatic generation and validation of XML
  • Pluggable catalogs, validators and encodings
  • High performance
  • Customizable error handling

The &XercesCName; Version &XercesC3Version; is available in both source distribution and binary distribution. &XercesCName; is made available under the Apache Software License, Version 2.0.

xerces-c-3.1.1/doc/migration.xml0000644000175000017500000000254011363611554015531 0ustar borisboris

For migration information on earlier versions of &XercesCName; please refer to Migration Archive.

&XercesCName; &XercesC3Version; is a bugfix-only release and is binary-compatible with &XercesCName; 3.1.0.

xerces-c-3.1.1/doc/program-dom.xml0000644000175000017500000032510411274550527015773 0ustar borisboris

The C++ DOM implementation is based on the Apache Recommended DOM C++ binding.

The design objective aims at meeting the following requirements:

  • Reduced memory footprint.
  • Fast - especially for use in server style and multi-threaded applications.
  • Good scalability on multiprocessor systems.
  • More C++ like and less Java like.

The &XercesCName; &XercesC3Version; contains an implementation of the W3C DOM Level 3 as specified in

  • DOM Level 3.0 Core Specification, Version 1.0 W3C Recommendation 07 April 2004 and
  • Document Object Model (DOM) Level 3 Load and Save Specification, Version 1.0 W3C Recommendation 07 April 2004

The following are NOT implemented in &XercesCName; &XercesC3Version;.

  • DOMError: setRelatedException
  • DOMImplementation: createLSParser(MODE_ASYNCHRONOUS)
  • DOMTypeInfo: isDerivedFrom()
#include <xercesc/dom/DOM.hpp>

The header file <dom/DOM.hpp> includes all the individual headers for the DOM API classes.

The DOM class names are prefixed with "DOM" (if not already), e.g. "DOMNode". The intent is to prevent conflicts between DOM class names and other names that may already be in use by an application or other libraries that a DOM based application must link with.

DOMDocument* myDocument; DOMNode* aNode; DOMText* someText;

Applications would use normal C++ pointers to directly access the implementation objects for Nodes in C++ DOM.

Consider the following code snippets

DOMNode* aNode; DOMNode* docRootNode; aNode = someDocument->createElement(anElementName); docRootNode = someDocument->getDocumentElement(); docRootNode->appendChild(aNode);

The C++ DOM implementation provides a release() method for releasing any "orphaned" resources that were created through createXXXX factory method. Memory for any returned object are owned by implementation. Please see Apache Recommended DOM C++ binding for details.

Users must call the release() function when finished using any objects that were created by the DOMImplementation::createXXXX (e.g. DOMLSParser, DOMLSSerializer, DOMLSInput, DOMLSOutput, DOMDocument, DOMDocumentType).

Access to a released object will lead to unexpected behaviour.

When a DOMDocument is released, all its associated children AND any objects it owned (e.g. DOMRange, DOMTreeWalker, DOMNodeIterator or any orphaned nodes) will also be released. When a DOMDocument is cloned, the cloned document has nothing related to the original master document and need to be released explicitly. When a DOMDocumentType has been inserted into a DOMDocument and thus has a owner, it will then be released automatically when its owner document is released. DOMException::INVALID_ACCESS_ERR will be raised if releasing such owned node.

Users can call the release() function to indicate the release of any orphaned nodes. When an orphaned Node is released, its associated children will also be released. Access to a released Node will lead to unexpected behaviour. These orphaned Nodes will eventually be released, if not already done so, when its owner document is released

DOMException::INVALID_ACCESS_ERR will be raised if releasing a Node that has a parent (has a owner).

Users can call release() function when finished using the DOMRange, DOMNodeIterator, DOMTreeWalker. Access to a released object will lead to unexpected behaviour. These objects will eventually be released, if not already done so, when its owner document is released

Here is an example

// // Create a small document tree // { XMLCh tempStr[100]; XMLString::transcode("Range", tempStr, 99); DOMImplementation* impl = DOMImplementationRegistry::getDOMImplementation(tempStr, 0); XMLString::transcode("root", tempStr, 99); DOMDocument* doc = impl->createDocument(0, tempStr, 0); DOMElement* root = doc->getDocumentElement(); XMLString::transcode("FirstElement", tempStr, 99); DOMElement* e1 = doc->createElement(tempStr); root->appendChild(e1); XMLString::transcode("SecondElement", tempStr, 99); DOMElement* e2 = doc->createElement(tempStr); root->appendChild(e2); XMLString::transcode("aTextNode", tempStr, 99); DOMText* textNode = doc->createTextNode(tempStr); e1->appendChild(textNode); // optionally, call release() to release the resource associated with the range after done DOMRange* range = doc->createRange(); range->release(); // removedElement is an orphaned node, optionally call release() to release associated resource DOMElement* removedElement = root->removeChild(e2); removedElement->release(); // no need to release this returned object which is owned by implementation XMLString::transcode("*", tempStr, 99); DOMNodeList* nodeList = doc->getElementsByTagName(tempStr); // done with the document, must call release() to release the entire document resources doc->release(); };

The C++ DOM uses the plain, null-terminated (XMLCh *) utf-16 strings as the String type. The (XMLCh*) utf-16 type string has low overhead.

//C++ DOM const XMLCh* nodeValue = aNode->getNodeValue();

All the string data would remain in memory until the document object is released. But such string data may be RECYCLED by the implementation if necessary. Users should make appropriate copy of any returned string for safe reference.

For example after a DOMNode has been released, the memory allocated for its node value will be recycled by the implementation.

XMLCh xfoo[] = {chLatin_f, chLatin_o, chLatin_o, chNull}; // pAttr has node value = "foo" // fNodeValue has "foo" pAttr->setNodeValue(xfoo); const XMLCh* fNodeValue = pAttr->getNodeValue(); // fNodeValue has "foo" // make a copy of the string for future reference XMLCh* oldNodeValue = XMLString::replicate(fNodeValue); // release the node pAttr pAttr->release() // other operations : : // implementation may have recycled the memory of the pAttr already // so it's not safe to expect fNodeValue still have "foo" if (XMLString::compareString(xfoo, fNodeValue)) printf("fNodeValue has some other content\n"); // should use your own safe copy if (!XMLString::compareString(xfoo, oldNodeValue)) printf("Use your own copy of the oldNodeValue if want to reference the string later\n"); // delete your own replicated string when done XMLString::release(&oldNodeValue);

Or if DOMNode::setNodeValue() is called to set a new node value, the implementation will simply overwrite the node value memory area. So any previous pointers will now have the new value automatically. Users should make appropriate copy of any previous returned string for safe reference. For example

XMLCh xfoo[] = {chLatin_f, chLatin_o, chLatin_o, chNull}; XMLCh xfee[] = {chLatin_f, chLatin_e, chLatin_e, chNull}; // pAttr has node value = "foo" pAttr->setNodeValue(xfoo); const XMLCh* fNodeValue = pAttr->getNodeValue(); // fNodeValue has "foo" // make a copy of the string for future reference XMLCh* oldNodeValue = XMLString::replicate(fNodeValue); // now set pAttr with a new node value "fee" pAttr->setNodeValue(xfee); // should not rely on fNodeValue for the old node value, it may not compare if (XMLString::compareString(xfoo, fNodeValue)) printf("Should not rely on fNodeValue for the old node value\n"); // should use your own safe copy if (!XMLString::compareString(xfoo, oldNodeValue)) printf("Use your own copy of the oldNodeValue if want to reference the string later\n"); // delete your own replicated string when done XMLString::release(&oldNodeValue);

This is to prevent memory growth when DOMNode::setNodeValue() is being called hundreds of times. This design allows users to actively select which returned string should stay in memory by manually copying the string to application's own heap.

In order to use &XercesCName; to parse XML files using DOM, you can create an instance of the XercesDOMParser class. The example below shows the code you need in order to create an instance of the XercesDOMParser.

#include <xercesc/parsers/XercesDOMParser.hpp> #include <xercesc/dom/DOM.hpp> #include <xercesc/sax/HandlerBase.hpp> #include <xercesc/util/XMLString.hpp> #include <xercesc/util/PlatformUtils.hpp> #include <iostream> using namespace std; using namespace xercesc; int main (int argc, char* args[]) { try { XMLPlatformUtils::Initialize(); } catch (const XMLException& toCatch) { char* message = XMLString::transcode(toCatch.getMessage()); cout << "Error during initialization! :\n" << message << "\n"; XMLString::release(&message); return 1; } XercesDOMParser* parser = new XercesDOMParser(); parser->setValidationScheme(XercesDOMParser::Val_Always); parser->setDoNamespaces(true); // optional ErrorHandler* errHandler = (ErrorHandler*) new HandlerBase(); parser->setErrorHandler(errHandler); char* xmlFile = "x1.xml"; try { parser->parse(xmlFile); } catch (const XMLException& toCatch) { char* message = XMLString::transcode(toCatch.getMessage()); cout << "Exception message is: \n" << message << "\n"; XMLString::release(&message); return -1; } catch (const DOMException& toCatch) { char* message = XMLString::transcode(toCatch.msg); cout << "Exception message is: \n" << message << "\n"; XMLString::release(&message); return -1; } catch (...) { cout << "Unexpected Exception \n" ; return -1; } delete parser; delete errHandler; return 0; }

The behavior of the XercesDOMParser is dependent on the values of the following features. All of the features below are set using the "setter" methods (e.g. setDoNamespaces), and are queried using the corresponding "getter" methods (e.g. getDoNamespaces). The following only gives you a quick summary of supported features. Please refer to API Documentation for complete detail.

void setCreateEntityReferenceNodes(const bool)
true: Create EntityReference nodes in the DOM tree. The EntityReference nodes and their child nodes will be read-only.
false: Do not create EntityReference nodes in the DOM tree. No EntityReference nodes will be created, only the nodes corresponding to their fully expanded substitution text will be created.
default: true
note: This feature only affects the appearance of EntityReference nodes in the DOM tree. The document will always contain the entity reference child nodes.

void setIncludeIgnorableWhitespace(const bool)
true: Include text nodes that can be considered "ignorable whitespace" in the DOM tree.
false: Do not include ignorable whitespace in the DOM tree.
default: true
note: The only way that the parser can determine if text is ignorable is by reading the associated grammar and having a content model for the document. When ignorable whitespace text nodes are included in the DOM tree, they will be flagged as ignorable; and the method DOMText::isIgnorableWhitespace() will return true for those text nodes.

void setDoNamespaces(const bool)
true: Perform Namespace processing.
false: Do not perform Namespace processing.
default: false
note: If the validation scheme is set to Val_Always or Val_Auto, then the document must contain a grammar that supports the use of namespaces.
see: setValidationScheme

void setValidationScheme(const ValSchemes)
Val_Auto: The parser will report validation errors only if a grammar is specified.
Val_Always: The parser will always report validation errors.
Val_Never: Do not report validation errors.
default: Val_Never
note: If set to Val_Always, the document must specify a grammar. If this feature is set to Val_Never and document specifies a grammar, that grammar might be parsed but no validation of the document contents will be performed.
see: setLoadExternalDTD

void setDoSchema(const bool)
true: Enable the parser's schema support.
false: Disable the parser's schema support.
default: false
note If set to true, namespace processing must also be turned on.
see: setDoNamespaces

void setValidationSchemaFullChecking(const bool)
true: Enable full schema constraint checking, including checking which may be time-consuming or memory intensive. Currently, particle unique attribution constraint checking and particle derivation restriction checking are controlled by this option.
false: Disable full schema constraint checking.
default: false
note: This feature checks the Schema grammar itself for additional errors that are time-consuming or memory intensive. It does not affect the level of checking performed on document instances that use Schema grammars.
see: setDoSchema

void setLoadSchema(const bool)
true: Load the schema.
false: Don't load the schema if it wasn't found in the grammar pool.
default: true
note: This feature is ignored and no schemas are loaded if schema processing is disabled.
see: setDoSchema

void setLoadExternalDTD(const bool)
true: Load the External DTD .
false: Ignore the external DTD completely.
default: true
note This feature is ignored and DTD is always loaded if the validation scheme is set to Val_Always or Val_Auto.
see: setValidationScheme

void setExitOnFirstFatalError(const bool)
true: Stops parse on first fatal error.
false: Attempt to continue parsing after a fatal error.
default: true
note: The behavior of the parser when this feature is set to false is undetermined! Therefore use this feature with extreme caution because the parser may get stuck in an infinite loop or worse.

void setValidationConstraintFatal(const bool)
true: The parser will treat validation error as fatal and will exit depends on the state of setExitOnFirstFatalError
false: The parser will report the error and continue processing.
default: false
note: Setting this true does not mean the validation error will be printed with the word "Fatal Error". It is still printed as "Error", but the parser will exit if setExitOnFirstFatalError is set to true.
see: setExitOnFirstFatalError

void useCachedGrammarInParse(const bool)
true:Use cached grammar if it exists in the pool.
false:Parse the schema grammar.
default: false
note:The getter function for this method is called isUsingCachedGrammarInParse.
note:If the grammar caching option is enabled, this option is set to true automatically and any setting to this option by the user is a no-op.
see: cacheGrammarFromParse

void cacheGrammarFromParse(const bool)
true:Cache the grammar in the pool for re-use in subsequent parses.
false:Do not cache the grammar in the pool
default: false
note:The getter function for this method is called isCachingGrammarFromParse
note: If set to true, the useCachedGrammarInParse is also set to true automatically.
see: useCachedGrammarInParse

void setStandardUriConformant(const bool)
true: Force standard uri conformance.
false: Do not force standard uri conformance.
default: false
note: If set to true, malformed uri will be rejected and fatal error will be issued.

void setCalculateSrcOfs(const bool)
true: Enable source offset calculation.
false: Disable source offset calculation.
default: false
note: If set to true, the user can inquire about the current source offset within the input source. Setting it to false (default) improves the performance.

void setIdentityConstraintChecking(const bool);
true: Enable identity constraint checking.
false: Disable identity constraint checking.
default: true

void setGenerateSyntheticAnnotations(const bool);
true: Enable generation of synthetic annotations. A synthetic annotation will be generated when a schema component has non-schema attributes but no child annotation.
false: Disable generation of synthetic annotations.
default: false

setValidateAnnotation
true: Enable validation of annotations.
false: Disable validation of annotations.
default: false
note: Each annotation is validated independently.

setIgnoreAnnotations
true: Do not generate XSAnnotations when traversing a schema.
false: Generate XSAnnotations when traversing a schema.
default: false

setDisableDefaultEntityResolution
true: The parser will not attempt to resolve the entity when the resolveEntity method returns NULL.
false: The parser will attempt to resolve the entity when the resolveEntity method returns NULL.
default: false

setSkipDTDValidation
true: When schema validation is on the parser will ignore the DTD, except for entities.
false: The parser will not ignore DTDs when validating.
default: false
see: DoSchema

setIgnoreCachedDTD
true: Ignore a cached DTD when an XML document contains both an internal and external DTD, and the use cached grammar from parse option is enabled. Currently, we do not allow using cached DTD grammar when an internal subset is present in the document. This option will only affect the behavior of the parser when an internal and external DTD both exist in a document (i.e. no effect if document has no internal subset).
false: Don't ignore cached DTD.
default: false
see: useCachedGrammarInParse

setHandleMultipleImports
true: During schema validation allow multiple schemas with the same namespace to be imported.
false: Don't import multiple schemas with the same namespace.
default: false

setCreateSchemaInfo
true: Enable storing of PSVI information in element and attribute nodes.
false: Disable storing of PSVI information in element and attribute nodes.
default: false

setCreateCommentNodes
true: Enable the parser to create comment nodes in the DOM tree being produced.
false: Disable comment nodes being produced.
default: true

The behavior of the XercesDOMParser is dependent on the values of the following properties. All of the properties below are set using the "setter" methods (e.g. setExternalSchemaLocation), and are queried using the corresponding "getter" methods (e.g. getExternalSchemaLocation). The following only gives you a quick summary of supported features. Please refer to API Documentation for complete details.

void setExternalSchemaLocation(const XMLCh*)
Description The XML Schema Recommendation explicitly states that the inclusion of schemaLocation/ noNamespaceSchemaLocation attributes in the instance document is only a hint; it does not mandate that these attributes must be used to locate schemas. Similar situation happens to <import> element in schema documents. This property allows the user to specify a list of schemas to use. If the targetNamespace of a schema specified using this method matches the targetNamespace of a schema occurring in the instance document in schemaLocation attribute, or if the targetNamespace matches the namespace attribute of <import> element, the schema specified by the user using this property will be used (i.e., the schemaLocation attribute in the instance document or on the <import> element will be effectively ignored).
Value The syntax is the same as for schemaLocation attributes in instance documents: e.g, "http://www.example.com file_name.xsd". The user can specify more than one XML Schema in the list.
Value Type XMLCh*

void setExternalNoNamespaceSchemaLocation(const XMLCh* const)
Description The XML Schema Recommendation explicitly states that the inclusion of schemaLocation/ noNamespaceSchemaLocation attributes in the instance document is only a hint; it does not mandate that these attributes must be used to locate schemas. This property allows the user to specify the no target namespace XML Schema Location externally. If specified, the instance document's noNamespaceSchemaLocation attribute will be effectively ignored.
Value The syntax is the same as for the noNamespaceSchemaLocation attribute that may occur in an instance document: e.g."file_name.xsd".
Value Type XMLCh*

void useScanner(const XMLCh* const)
Description This property allows the user to specify the name of the XMLScanner to use for scanning XML documents. If not specified, the default scanner "IGXMLScanner" is used.
Value The recognized scanner names are:
1."WFXMLScanner" - scanner that performs well-formedness checking only.
2. "DGXMLScanner" - scanner that handles XML documents with DTD grammar information.
3. "SGXMLScanner" - scanner that handles XML documents with XML schema grammar information.
4. "IGXMLScanner" - scanner that handles XML documents with DTD or/and XML schema grammar information.
Users can use the predefined constants defined in XMLUni directly (fgWFXMLScanner, fgDGXMLScanner, fgSGXMLScanner, or fgIGXMLScanner) or a string that matches the value of one of those constants.
Value Type XMLCh*
note: See Use Specific Scanner for more programming details.

void useImplementation(const XMLCh* const)
DescriptionThis property allows the user to specify a set of features which the parser will then use to acquire an implementation from which it will create the DOMDocument to use when reading in an XML file.
Value Type XMLCh*

setSecurityManager(Security Manager * const)
Description Certain valid XML and XML Schema constructs can force a processor to consume more system resources than an application may wish. In fact, certain features could be exploited by malicious document writers to produce a denial-of-service attack. This property allows applications to impose limits on the amount of resources the processor will consume while processing these constructs.
Value An instance of the SecurityManager class (see xercesc/util/SecurityManager). This class's documentation describes the particular limits that may be set. Note that, when instantiated, default values for limits that should be appropriate in most settings are provided. The default implementation is not thread-safe; if thread-safety is required, the application should extend this class, overriding methods appropriately. The parser will not adopt the SecurityManager instance; the application is responsible for deleting it when it is finished with it. If no SecurityManager instance has been provided to the parser (the default) then processing strictly conforming to the relevant specifications will be performed.
Value Type SecurityManager*

setLowWaterMark(XMLSize_t)
Description If the number of available bytes in the raw buffer is less than the low water mark the parser will attempt to read more data before continuing parsing. By default the value for this parameter is 100 bytes. You may want to set this parameter to 0 if you would like the parser to parse the available data immediately without potentially blocking while waiting for more date.
Value New low water mark.
Value Type XMLSize_t

DOMLSParser is a new interface introduced by the W3C DOM Level 3.0 Load and Save Specification. DOMLSParser provides the "Load" interface for parsing XML documents and building the corresponding DOM document tree from various input sources.

A DOMLSParser instance is obtained from the DOMImplementationLS interface by invoking its createLSParser method. For example:

#include <xercesc/dom/DOM.hpp> #include <xercesc/util/XMLString.hpp> #include <xercesc/util/PlatformUtils.hpp> #include <iostream> using namespace std; using namespace xercesc; int main (int argc, char* args[]) { try { XMLPlatformUtils::Initialize(); } catch (const XMLException& toCatch) { char* message = XMLString::transcode(toCatch.getMessage()); cout << "Error during initialization! :\n" << message << "\n"; XMLString::release(&message); return 1; } XMLCh tempStr[100]; XMLString::transcode("LS", tempStr, 99); DOMImplementation *impl = DOMImplementationRegistry::getDOMImplementation(tempStr); DOMLSParser* parser = ((DOMImplementationLS*)impl)->createLSParser(DOMImplementationLS::MODE_SYNCHRONOUS, 0); // optionally you can set some features on this builder if (parser->getDomConfig()->canSetParameter(XMLUni::fgDOMValidate, true)) parser->getDomConfig()->setParameter(XMLUni::fgDOMValidate, true); if (parser->getDomConfig()->canSetParameter(XMLUni::fgDOMNamespaces, true)) parser->getDomConfig()->setParameter(XMLUni::fgDOMNamespaces, true); if (parser->getDomConfig()->canSetParameter(XMLUni::fgDOMDatatypeNormalization, true)) parser->getDomConfig()->setParameter(XMLUni::fgDOMDatatypeNormalization, true); // optionally you can implement your DOMErrorHandler (e.g. MyDOMErrorHandler) // and set it to the builder MyDOMErrorHandler* errHandler = new myDOMErrorHandler(); parser->getDomConfig()->setParameter(XMLUni::fgDOMErrorHandler, errHandler); char* xmlFile = "x1.xml"; DOMDocument *doc = 0; try { doc = parser->parseURI(xmlFile); } catch (const XMLException& toCatch) { char* message = XMLString::transcode(toCatch.getMessage()); cout << "Exception message is: \n" << message << "\n"; XMLString::release(&message); return -1; } catch (const DOMException& toCatch) { char* message = XMLString::transcode(toCatch.msg); cout << "Exception message is: \n" << message << "\n"; XMLString::release(&message); return -1; } catch (...) { cout << "Unexpected Exception \n" ; return -1; } parser->release(); delete errHandler; return 0; }

Please refer to the API Documentation and the sample DOMCount for more detail.

DOM L3 has introduced a DOMLSInput which is similar to the SAX InputSource. The &XercesCName; internals (XMLScanner, Reader, etc.) use the SAX InputSource to process the xml data. In order to support DOM L3, we need to provide a mechanism to allow the &XercesCName; internals to talk to a DOMLSInput object. Similarly, &XercesCName; provides some framework classes for specialized types of input source (i.e. LocalFileInputSource, etc.) that are derived from the SAX InputSource. In DOM L3, to allow users implementing their own DOMLSResourceResolver(s), which return a DOMLSInput, to utilize these framework classes, we need to provide a mechanism to map a SAX InputSource to a DOMLSInput. Two wrapper classes are available to interchange DOMLSInput and SAX InputSource:

Wraps a DOMLSInput object to a SAX InputSource.

#include <xercesc/dom/DOMLSInput.hpp> #include <xercesc/framework/Wrapper4DOMLSInput.hpp> class DBInputSource: public DOMLSInput { ... }; ... DOMLSInput *domIS = new DBInputSource; Wrapper4DOMLSInput domISWrapper(domIS); XercesDOMParser parser; parser.parse(domISWrapper);

Wraps a SAX InputSource object to a DOMLSInput.

#include <xercesc/framework/Wrapper4InputSource.hpp> #include <xercesc/framework/LocalFileInputSource.hpp> DOMLSInput* MyEntityResolver::resolveResource( const XMLCh* const resourceType , const XMLCh* const namespaceUri , const XMLCh* const publicId , const XMLCh* const systemId , const XMLCh* const baseURI) { return new Wrapper4InputSource(new LocalFileInputSource(baseURI, systemId)); }

Please refer to the API Documentation for more detail.

The behavior of the DOMLSParser is dependent on the values of the following features. All of the features below can be set using the function DOMLSParser::getDomConfig()->setParameter(cons XMLCh* , bool). And can be queried using the function bool DOMLSParser::getDomConfig()->getParameter(const XMLCh* const). User can also call DOMLSParser::getDomConfig()->canSetParameter(const XMLCh* , bool) to query whether setting a feature to a specific value is supported

cdata-sections
true: Keep CDATASection nodes in the document.
false: Not Supported.
default: true
XMLUni Predefined Constant: fgDOMCDATASections
note: Setting this feature to false is not supported.
see: DOM Level 3.0 Load and Save Specification

comments
true: Keep Comment nodes in the document.
false: Discard Comment nodes in the document.
default: true
XMLUni Predefined Constant: fgDOMComments
see: DOM Level 3.0 Load and Save Specification

charset-overrides-xml-encoding
true: If a higher level protocol such as HTTP [IETF RFC 2616] provides an indication of the character encoding of the input stream being processed, that will override any encoding specified in the XML declaration or the Text declaration (see also [XML 1.0] 4.3.3 "Character Encoding in Entities"). Explicitly setting an encoding in the DOMInputSource overrides encodings from the protocol.
false: Any character set encoding information from higher level protocols is ignored by the parser.
default: true
XMLUni Predefined Constant: fgDOMCharsetOverridesXMLEncoding
see: DOM Level 3.0 Load and Save Specification

datatype-normalization
true: Let the validation process do its datatype normalization that is defined in the used schema language.
false: Disable datatype normalization. The XML 1.0 attribute value normalization always occurs though.
default: false
XMLUni Predefined Constant: fgDOMDatatypeNormalization
note: Note that setting this feature to true does not affect the DTD normalization operation which always takes place, in accordance to XML 1.0 (Second Edition).
see: DOM Level 3.0 Load and Save Specification
see: XML 1.0 (Second Edition).

entities
true: Create EntityReference nodes in the DOM tree. The EntityReference nodes and their child nodes will be read-only.
false: Do not create EntityReference nodes in the DOM tree. No EntityReference nodes will be created, only the nodes corresponding to their fully expanded substitution text will be created.
default: true
XMLUni Predefined Constant: fgDOMEntities
note: This feature only affects the appearance of EntityReference nodes in the DOM tree. The document will always contain the entity reference child nodes.
see: DOM Level 3.0 Load and Save Specification

canonical-form
true: Not Supported.
false: Do not canonicalize the document.
default: false
XMLUni Predefined Constant: fgDOMCanonicalForm
note: Setting this feature to true is not supported.
see: DOM Level 3.0 Load and Save Specification

infoset
true: Not Supported.
false: No effect.
default: false
XMLUni Predefined Constant: fgDOMInfoset
note: Setting this feature to true is not supported.
see: DOM Level 3.0 Load and Save Specification

namespaces
true: Perform Namespace processing
false: Do not perform Namespace processing
default: true
XMLUni Predefined Constant: fgDOMNamespaces
note: If the validation is on, then the document must contain a grammar that supports the use of namespaces
see: validation
see: DOM Level 3.0 Load and Save Specification

namespace-declarations
true: Include namespace declaration attributes, specified or defaulted from the schema or the DTD, in the document.
false: Not Supported.
default: true
XMLUni Predefined Constant: fgDOMNamespaceDeclarations
note: Setting this feature to false is not supported.
see: namespaces
see: DOM Level 3.0 Load and Save Specification

supported-mediatypes-only
true: Not Supported.
false: Don't check the media type, accept any type of data.
default: false
XMLUni Predefined Constant: fgDOMSupportedMediatypesOnly
note: Setting this feature to true is not supported.
see: DOM Level 3.0 Load and Save Specification

validate-if-schema
true: When validation is true, the parser will validate the document only if a grammar is specified.
false: Validation is determined by the state of the validation feature.
default: false
XMLUni Predefined Constant: fgDOMValidateIfSchema
see: validation
see: DOM Level 3.0 Load and Save Specification

validation
true: Report all validation errors.
false: Do not report validation errors.
default: false
XMLUni Predefined Constant: fgDOMValidate
note: If this feature is set to true, the document must specify a grammar. If this feature is set to false and document specifies a grammar, that grammar might be parsed but no validation of the document contents will be performed.
see: validate-if-schema
see: http://apache.org/xml/features/nonvalidating/load-external-dtd
see: DOM Level 3.0 Load and Save Specification

whitespace-in-element-content
true: Include text nodes that can be considered "ignorable whitespace" in the DOM tree.
false: Do not include ignorable whitespace in the DOM tree.
default: true
XMLUni Predefined Constant: fgDOMElementContentWhitespace
note: The only way that the parser can determine if text is ignorable is by reading the associated grammar and having a content model for the document. When ignorable whitespace text nodes are included in the DOM tree, they will be flagged as ignorable; and the method DOMText::isIgnorableWhitespace() will return true for those text nodes.
see: DOM Level 3.0 Load and Save Specification
http://apache.org/xml/features/validation/schema
true: Enable the parser's schema support.
false: Disable the parser's schema support.
default: false
XMLUni Predefined Constant: fgXercesSchema
note If set to true, namespace processing must also be turned on.
see: namespaces

http://apache.org/xml/features/validation/schema-full-checking
true: Enable full schema constraint checking, including checking which may be time-consuming or memory intensive. Currently, particle unique attribution constraint checking and particle derivation restriction checking are controlled by this option.
false: Disable full schema constraint checking.
default: false
XMLUni Predefined Constant: fgXercesSchemaFullChecking
note: This feature checks the Schema grammar itself for additional errors that are time-consuming or memory intensive. It does not affect the level of checking performed on document instances that use Schema grammars.
see: http://apache.org/xml/features/validation/schema

http://apache.org/xml/features/validating/load-schema
true: Load the schema.
false: Don't load the schema if it wasn't found in the grammar pool.
default: true
XMLUni Predefined Constant: fgXercesLoadSchema
note: This feature is ignored and no schemas are loaded if schema processing is disabled.
see: schema

http://apache.org/xml/features/nonvalidating/load-external-dtd
true: Load the External DTD.
false: Ignore the external DTD completely.
default: true
XMLUni Predefined Constant: fgXercesLoadExternalDTD
note This feature is ignored and DTD is always loaded when validation is on.
see: validation

http://apache.org/xml/features/continue-after-fatal-error
true: Attempt to continue parsing after a fatal error.
false: Stops parse on first fatal error.
default: false
XMLUni Predefined Constant: fgXercesContinueAfterFatalError
note: The behavior of the parser when this feature is set to true is undetermined! Therefore use this feature with extreme caution because the parser may get stuck in an infinite loop or worse.

http://apache.org/xml/features/validation-error-as-fatal
true: The parser will treat validation error as fatal and will exit depends on the state of http://apache.org/xml/features/continue-after-fatal-error.
false: The parser will report the error and continue processing.
default: false
XMLUni Predefined Constant: fgXercesValidationErrorAsFatal
note: Setting this true does not mean the validation error will be printed with the word "Fatal Error". It is still printed as "Error", but the parser will exit if http://apache.org/xml/features/continue-after-fatal-error is set to false.
see: http://apache.org/xml/features/continue-after-fatal-error

http://apache.org/xml/features/validation/use-cachedGrammarInParse
true:Use cached grammar if it exists in the pool.
false:Parse the schema grammar.
default: false
XMLUni Predefined Constant: fgXercesUseCachedGrammarInParse
note:If http://apache.org/xml/features/validation/cache-grammarFromParse is enabled, this feature is set to true automatically and any setting to this feature by the user is a no-op.
see: http://apache.org/xml/features/validation/cache-grammarFromParse

http://apache.org/xml/features/validation/cache-grammarFromParse
true:Cache the grammar in the pool for re-use in subsequent parses.
false:Do not cache the grammar in the pool
default: false
XMLUni Predefined Constant: fgXercesCacheGrammarFromParse
note: If set to true, the http://apache.org/xml/features/validation/use-cachedGrammarInParse is also set to true automatically.
see: http://apache.org/xml/features/validation/use-cachedGrammarInParse

http://apache.org/xml/features/standard-uri-conformant
true: Force standard uri conformance.
false: Do not force standard uri conformance.
default: false
XMLUni Predefined Constant: fgXercesStandardUriConformant
note: If set to true, malformed uri will be rejected and fatal error will be issued.

http://apache.org/xml/features/calculate-src-ofs
true: Enable source offset calculation.
false: Disable source offset calculation.
default: false
XMLUni Predefined Constant: fgXercesCalculateSrcOfs
note: If set to true, the user can inquire about the current source offset within the input source. Setting it to false (default) improves the performance.

http://apache.org/xml/features/validation/identity-constraint-checking
true: Enable identity constraint checking.
false: Disable identity constraint checking.
default: true
XMLUni Predefined Constant: fgXercesIdentityConstraintChecking

http://apache.org/xml/features/generate-synthetic-annotations
true: Enable generation of synthetic annotations. A synthetic annotation will be generated when a schema component has non-schema attributes but no child annotation.
false: Disable generation of synthetic annotations.
default: false
XMLUni Predefined Constant: fgXercesGenerateSyntheticAnnotations

http://apache.org/xml/features/validate-annotations
true: Enable validation of annotations.
false: Disable validation of annotations.
default: false
XMLUni Predefined Constant: fgXercesValidateAnnotations
note: Each annotation is validated independently.

http://apache.org/xml/features/schema/ignore-annotations
true: Do not generate XSAnnotations when traversing a schema.
false: Generate XSAnnotations when traversing a schema.
default: false
XMLUni Predefined Constant: fgXercesIgnoreAnnotations

http://apache.org/xml/features/disable-default-entity-resolution
true: The parser will not attempt to resolve the entity when the resolveEntity method returns NULL.
false: The parser will attempt to resolve the entity when the resolveEntity method returns NULL.
default: false
XMLUni Predefined Constant: fgXercesDisableDefaultEntityResolution

http://apache.org/xml/features/validation/schema/skip-dtd-validation
true: When schema validation is on the parser will ignore the DTD, except for entities.
false: The parser will not ignore DTDs when validating.
default: false
XMLUni Predefined Constant: fgXercesSkipDTDValidation
see: Schema Validation

http://apache.org/xml/features/validation/ignoreCachedDTD
true: Ignore a cached DTD when an XML document contains both an internal and external DTD, and the use cached grammar from parse option is enabled. Currently, we do not allow using cached DTD grammar when an internal subset is present in the document. This option will only affect the behavior of the parser when an internal and external DTD both exist in a document (i.e. no effect if document has no internal subset).
false: Don't ignore cached DTD.
default: false
XMLUni Predefined Constant: fgXercesIgnoreCachedDTD
see: http://apache.org/xml/features/validation/use-cachedGrammarInParse

http://apache.org/xml/features/validation/schema/handle-multiple-imports
true: During schema validation allow multiple schemas with the same namespace to be imported.
false: Don't import multiple schemas with the same namespace.
default: false
XMLUni Predefined Constant: fgXercesHandleMultipleImports

http://apache.org/xml/features/dom-has-psvi-info
true: Enable storing of PSVI information in element and attribute nodes.
false: Disable storing of PSVI information in element and attribute nodes.
default: false
XMLUni Predefined Constant: fgXercesDOMHasPSVIInfo

http://apache.org/xml/features/dom/user-adopts-DOMDocument
true: The caller will adopt the DOMDocument that is returned from the parse method and thus is responsible to call DOMDocument::release() to release the associated memory. The parser will not release it. The ownership is transferred from the parser to the caller.
false: The returned DOMDocument from the parse method is owned by the parser and thus will be deleted when the parser is released.
default: false
XMLUni Predefined Constant: fgXercesUserAdoptsDOMDocument
see: DOMLSParser API Documentation, (DOMLSParser::parse and DOMLSParser::resetDocumentPool)

The behavior of the DOMLSParser is dependent on the values of the following properties. All of the properties below can be set using the function DOMLSParser::getDomConfig()->setParameter(const XMLCh* , const void*). It takes a void pointer as the property value. Application is required to initialize this void pointer to a correct type. Please check the column "Value Type" below to learn exactly what type of property value each property expects for processing. Passing a void pointer that was initialized with a wrong type will lead to unexpected result. If the same property is set more than once, the last one takes effect.

Property values can be queried using the function void* DOMLSParser::getDomConfig()->getParameter(const XMLCh* ). The parser owns the returned pointer, and the memory allocated for the returned pointer will be destroyed when the parser is released. To ensure accessibility of the returned information after the parser is released, callers need to copy and store the returned information somewhere else. Since the returned pointer is a generic void pointer, check the column "Value Type" below to learn exactly what type of object each property returns for replication.

http://apache.org/xml/properties/schema/external-schemaLocation
Description The XML Schema Recommendation explicitly states that the inclusion of schemaLocation/ noNamespaceSchemaLocation attributes in the instance document is only a hint; it does not mandate that these attributes must be used to locate schemas. Similar situation happens to <import> element in schema documents. This property allows the user to specify a list of schemas to use. If the targetNamespace of a schema specified using this method matches the targetNamespace of a schema occurring in the instance document in schemaLocation attribute, or if the targetNamespace matches the namespace attribute of <import> element, the schema specified by the user using this property will be used (i.e., the schemaLocation attribute in the instance document or on the <import> element will be effectively ignored).
Value The syntax is the same as for schemaLocation attributes in instance documents: e.g, "http://www.example.com file_name.xsd". The user can specify more than one XML Schema in the list.
Value Type XMLCh*
XMLUni Predefined Constant: fgXercesSchemaExternalSchemaLocation

http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation
Description The XML Schema Recommendation explicitly states that the inclusion of schemaLocation/ noNamespaceSchemaLocation attributes in the instance document is only a hint; it does not mandate that these attributes must be used to locate schemas. This property allows the user to specify the no target namespace XML Schema Location externally. If specified, the instance document's noNamespaceSchemaLocation attribute will be effectively ignored.
Value The syntax is the same as for the noNamespaceSchemaLocation attribute that may occur in an instance document: e.g."file_name.xsd".
Value Type XMLCh*
XMLUni Predefined Constant: fgXercesSchemaExternalNoNameSpaceSchemaLocation

http://apache.org/xml/properties/scannerName
Description This property allows the user to specify the name of the XMLScanner to use for scanning XML documents. If not specified, the default scanner "IGXMLScanner" is used.
Value The recognized scanner names are:
1."WFXMLScanner" - scanner that performs well-formedness checking only.
2. "DGXMLScanner" - scanner that handles XML documents with DTD grammar information.
3. "SGXMLScanner" - scanner that handles XML documents with XML schema grammar information.
4. "IGXMLScanner" - scanner that handles XML documents with DTD or/and XML schema grammar information.
Users can use the predefined constants defined in XMLUni directly (fgWFXMLScanner, fgDGXMLScanner, fgSGXMLScanner, or fgIGXMLScanner) or a string that matches the value of one of those constants.
Value Type XMLCh*
XMLUni Predefined Constant: fgXercesScannerName
note: See Use Specific Scanner for more programming details.

http://apache.org/xml/properties/parser-use-DOMDocument-from-Implementation
DescriptionThis property allows the user to specify a set of features which the parser will then use to acquire an implementation from which it will create the DOMDocument to use when reading in an XML file.
Value Type XMLCh*
XMLUni Predefined Constant: fgXercesParserUseDocumentFromImplementation

http://apache.org/xml/properties/security-manager
Description Certain valid XML and XML Schema constructs can force a processor to consume more system resources than an application may wish. In fact, certain features could be exploited by malicious document writers to produce a denial-of-service attack. This property allows applications to impose limits on the amount of resources the processor will consume while processing these constructs.
Value An instance of the SecurityManager class (see xercesc/util/SecurityManager). This class's documentation describes the particular limits that may be set. Note that, when instantiated, default values for limits that should be appropriate in most settings are provided. The default implementation is not thread-safe; if thread-safety is required, the application should extend this class, overriding methods appropriately. The parser will not adopt the SecurityManager instance; the application is responsible for deleting it when it is finished with it. If no SecurityManager instance has been provided to the parser (the default) then processing strictly conforming to the relevant specifications will be performed.
Value Type SecurityManager*
XMLUni Predefined Constant: fgXercesSecurityManager

http://apache.org/xml/properties/low-water-mark
Description If the number of available bytes in the raw buffer is less than the low water mark the parser will attempt to read more data before continuing parsing. By default the value for this parameter is 100 bytes. You may want to set this parameter to 0 if you would like the parser to parse the available data immediately without potentially blocking while waiting for more date.
Value New low water mark.
Value Type XMLSize_t*
XMLUni Predefined Constant: fgXercesLowWaterMark

DOMLSSerializer is a new interface introduced by the W3C DOM Level 3.0 Load and Save Specification. DOMLSSerializer provides the "Save" interface for serializing (writing) a DOM document into XML data. The XML data can be written to various type of output stream.

A DOMLSSerializer instance is obtained from the DOMImplementationLS interface by invoking its createLSSerializer method. For example:

#include <xercesc/dom/DOM.hpp> #include <xercesc/util/XMLString.hpp> #include <xercesc/util/PlatformUtils.hpp> #include <iostream> using namespace std; using namespace xercesc; int serializeDOM(DOMNode* node) { XMLCh tempStr[100]; XMLString::transcode("LS", tempStr, 99); DOMImplementation *impl = DOMImplementationRegistry::getDOMImplementation(tempStr); DOMLSSerializer* theSerializer = ((DOMImplementationLS*)impl)->createLSSerializer(); // optionally you can set some features on this serializer if (theSerializer->getDomConfig()->canSetParameter(XMLUni::fgDOMWRTDiscardDefaultContent, true)) theSerializer->getDomConfig()->setParameter(XMLUni::fgDOMWRTDiscardDefaultContent, true); if (theSerializer->getDomConfig()->canSetParameter(XMLUni::fgDOMWRTFormatPrettyPrint, true)) theSerializer->getDomConfig()->setParameter(XMLUni::fgDOMWRTFormatPrettyPrint, true); // optionally you can implement your DOMLSSerializerFilter (e.g. MyDOMLSSerializerFilter) // and set it to the serializer DOMLSSerializer* myFilter = new myDOMLSSerializerFilter(); theSerializer->setFilter(myFilter); // optionally you can implement your DOMErrorHandler (e.g. MyDOMErrorHandler) // and set it to the serializer DOMErrorHandler* errHandler = new myDOMErrorHandler(); theSerializer->getDomConfig()->setParameter(XMLUni::fgDOMErrorHandler, myErrorHandler); // StdOutFormatTarget prints the resultant XML stream // to stdout once it receives any thing from the serializer. XMLFormatTarget *myFormTarget = new StdOutFormatTarget(); DOMLSOutput* theOutput = ((DOMImplementationLS*)impl)->createLSOutput(); theOutput->setByteStream(myFormTarget); try { // do the serialization through DOMLSSerializer::write(); theSerializer->write(node, theOutput); } catch (const XMLException& toCatch) { char* message = XMLString::transcode(toCatch.getMessage()); cout << "Exception message is: \n" << message << "\n"; XMLString::release(&message); return -1; } catch (const DOMException& toCatch) { char* message = XMLString::transcode(toCatch.msg); cout << "Exception message is: \n" << message << "\n"; XMLString::release(&message); return -1; } catch (...) { cout << "Unexpected Exception \n" ; return -1; } theOutput->release(); theSerializer->release(); delete myErrorHandler; delete myFilter; delete myFormTarget; return 0; }

Please refer to the API Documentation and the sample DOMPrint for more detail.

Say for example you parse the following xml document using XercesDOMParser or DOMLSParser

<root> <Test attr=" > ' &lt; &gt; &amp; &quot; &apos; "></Test> <Test attr=' > " &lt; &gt; &amp; &quot; &apos; '></Test> <Test> > " ' &lt; &gt; &amp; &quot; &apos; </Test> <Test><![CDATA[< > & " ' &lt; &gt; &amp; &quot; &apos; ] ]></Test> </root>

According to XML 1.0 spec, 4.4 XML Processor Treatment of Entities and References, the parser will expand the entity reference as follows

<root> <Test attr=" > ' < > & " ' "></Test> <Test attr=' > " < > & " ' '></Test> <Test> > " ' < > & " ' </Test> <Test><![CDATA[< > & " ' &lt; &gt; &amp; &quot; &apos; ] ]></Test> </root>

and pass such DOMNode to DOMLSSerializer for serialization. From DOMLSSerializer perspective, it does not know what the original string was. All it sees is above DOMNode from the parser. But since the DOMLSSerializer is supposed to generate something that is parsable if sent back to the parser, it cannot print such string as is. Thus the DOMLSSerializer is doing some "touch up", just enough, to get the string parsable.

So for example since the appearance of < and & in text value will lead to not well-form XML error, the DOMLSSerializer fixes them to &lt; and &amp; respectively; while the >, ' and " in text value are ok to the parser, so DOMLSSerializer does not do anything to them. Similarly the DOMLSSerializer fixes some of the characters for the attribute value but keep everything in CDATA.

So the string that is generated by DOMLSSerializer will look like this

<root> <Test attr=" > ' &lt; > &amp; &quot; ' "/> <Test attr=" > &quot; &lt; > &amp; &quot; ' "/> <Test> > " ' &lt; > &amp; " ' </Test> <Test><![CDATA[< > & " ' &lt; &gt; &amp; &quot; &apos; ] ]></Test> </root>

Below is the table that summarizes how built-in entity reference are handled for different DOM node types:

Input/Output < > & " ' &lt; &gt; &amp; &quot; &apos;
Attribute N/A > N/A &quot; ' &lt; > &amp; &quot; '
Text N/A > N/A " ' &lt; > &amp; " '
CDATA < > & " ' &lt; &gt; &amp; &quot; &apos;

The behavior of the DOMLSSerializer is dependent on the values of the following features. All of the features below can be set using the function DOMLSSerializer::getDomConfig()->setParameter(cons XMLCh* , bool). And can be queried using the function bool DOMLSSerializer::getDomConfig()->getParameter(const XMLCh* const). User can also call DOMLSSerializer::getDomConfig()->canSetParameter(const XMLCh* , bool) to query whether setting a feature to a specific value is supported

discard-default-content
true: Use whatever information available to the implementation (i.e. XML schema, DTD, the specified flag on Attr nodes, and so on) to decide what attributes and content should be discarded or not.
false: Keep all attributes and all content.
default: true
XMLUni Predefined Constant: fgDOMWRTDiscardDefaultContent
note: Note that the specified flag on Attr nodes in itself is not always reliable, it is only reliable when it is set to false since the only case where it can be set to false is if the attribute was created by the implementation. The default content won't be removed if an implementation does not have any information available.
see: DOM Level 3.0 Load and Save Specification

entities
true: EntityReference nodes are serialized as an entity reference of the form "&entityName;" in the output.
false: EntityReference nodes are serialized as expanded substitution text, unless the corresponding entity definition is not found.
default: true
XMLUni Predefined Constant: fgDOMWRTEntities
note: This feature only affects the output XML stream. The DOM tree to be serialized will not be changed.
see: DOM Level 3.0 Load and Save Specification

canonical-form
true: Not Supported.
false: Do not canonicalize the output.
default: false
XMLUni Predefined Constant: fgDOMWRTCanonicalForm
note: Setting this feature to true is not supported.
see: format-pretty-print
see: DOM Level 3.0 Load and Save Specification

format-pretty-print
true: Formatting the output by adding whitespace to produce a pretty-printed, indented, human-readable form. The exact form of the transformations is not specified by this specification.
false: Don't pretty-print the result.
default: false
XMLUni Predefined Constant: fgDOMWRTFormatPrettyPrint
note: Setting this feature to true will set the feature canonical-form to false.
see: canonical-form
see: DOM Level 3.0 Load and Save Specification

normalize-characters
true: Not Supported.
false: Do not perform character normalization.
note: Setting this feature to true is not supported.
default: false
XMLUni Predefined Constant: fgDOMWRTNormalizeCharacters
see: DOM Level 3.0 Load and Save Specification

split-cdata-sections
true: Split CDATA sections containing the CDATA section termination marker ']]>', or unrepresentable characters in the output encoding. When a CDATA section is split a warning is issued.
false: Signal an error if a CDATASection contains CDATA section termination marker ']]>', or an unrepresentable character.
default: true
XMLUni Predefined Constant: fgDOMWRTSplitCdataSections
see: DOM Level 3.0 Load and Save Specification

validation
true: Not Supported.
false: Do not report validation errors.
note: Setting this feature to true is not supported.
default: false
XMLUni Predefined Constant: fgDOMWRTValidation
see: DOM Level 3.0 Load and Save Specification

whitespace-in-element-content
true: Include text nodes that can be considered "ignorable whitespace" in the DOM tree.
false: Not Supported.
note: Setting this feature to false is not supported.
default: true
XMLUni Predefined Constant: fgDOMWRTWhitespaceInElementContent
see: DOM Level 3.0 Load and Save Specification

xml declaration
true: Include xml declaration.
false: Do not include xml declaration.
default: true
XMLUni Predefined Constant: fgDOMXMLDeclaration

byte-order-mark
true: Enable the writing of the Byte-Order-Mark (BOM), in the resultant XML stream.
false: Disable the writing of BOM.
note: The BOM is written at the beginning of the resultant XML stream, if and only if a DOMDocumentNode is rendered for serialization, and the output encoding is among the encodings listed here (alias acceptable), UTF-8, UTF-16, UTF-16LE, UTF-16BE, UCS-4, UCS-4LE, and UCS-4BE. In the case of UTF-16/UCS-4, the host machine's endian mode is referred to determine the appropriate BOM to be written.
default: false
XMLUni Predefined Constant: fgDOMWRTBOM
see: XML 1.0 Appendix F for more information about BOM.
xerces-c-3.1.1/doc/enumval.xml0000644000175000017500000000421311065665171015211 0ustar borisboris

EnumVal shows how to enumerate the markup declarations in a DTD Grammar.

This program parses the specified XML file, then shows how to enumerate the contents of the DTD Grammar.

Usage: EnumVal <XML file> This program parses the specified XML file, then shows how to enumerate the contents of the DTD Grammar. Essentially, shows how one can access the DTD information stored in internal data structures.

Here is a sample output from EnumVal

cd &XercesC3InstallDir;/samples/data EnumVal personal.xml ELEMENTS: ---------------------------- Name: personnel Content Model: (person)+ Name: person Content Model: (name,email*,url*,link?) Attributes: Name:id, Type: ID Name: name Content Model: (#PCDATA|family|given)* Name: email Content Model: (#PCDATA)* Name: url Content Model: EMPTY Attributes: Name:href, Type: CDATA Name: link Content Model: EMPTY Attributes: Name:subordinates, Type: IDREF(S) Name:manager, Type: IDREF(S) Name: family Content Model: (#PCDATA)* Name: given Content Model: (#PCDATA)*
xerces-c-3.1.1/doc/migration_archive.xml0000644000175000017500000022324111363611554017235 0ustar borisboris
  • Migrating from &XercesCName; 3.0.1 to 3.1.0
  • Migrating from &XercesCName; 3.0.0 to 3.0.1
  • Migrating from &XercesCName; 2.8.0 to 3.0.0
  • Migrating from &XercesCName; 2.7.0 to 2.8.0
  • Migrating from &XercesCName; 2.6.0 to 2.7.0
  • Migrating from &XercesCName; 2.5.0 to 2.6.0
  • Migrating from &XercesCName; 2.4.0 to 2.5.0
  • Migrating from &XercesCName; 2.3.0 to 2.4.0
  • Migrating from &XercesCName; 2.2.0 to 2.3.0
  • Migrating from &XercesCName; 2.1.0 to 2.2.0
  • Migrating from &XercesCName; 2.0.0 to 2.1.0
  • Migrating from &XercesCName; 1.7.0 to 2.0.0
  • Migrating from &XercesCName; 1.6.0 to 1.7.0
  • Migrating from &XercesCName; 1.5.2 to 1.6.0
  • Migrating from &XercesCName; 1.4.0 to 1.5.2
  • Migrating from XML4C 2.x to 1.4.0

The following section is a discussion of the technical differences between &XercesCName; 3.0.1 and &XercesCName; 3.1.0.

Topics discussed are:

  • New features in &XercesCName; 3.1.0
  • Public API Changes
  • Working multi-import support. The support for handling multiple import declarations with the same target namespaces has been improved and thoroughly tested. Furthermore, the same logic was extended to loadGrammar and the schemaLocation attributes so that you can load several schemas with the same namespace and/or "add" more declarations with the schemaLocation attributes. To enable this feature, set the XMLUni::fgXercesHandleMultipleImports feature/parameter to true. Starting with this release all the tests and examples have multi-import support enabled by default.
  • New property, XMLUni::fgXercesLowWaterMark, allows to configure the parser buffer low water mark. In particular, setting this value to 0 disables data caching in the parser which can be useful if you want the SAX events to be dispatched as soon as the data is available.
  • DOMLSParser::parseWithContext implementation. In particular, this functionality allows one to parse a document fragment with missing namespace declarations as long as the context document provides them.
  • Improved performance and reduced memory footprint when validating with large maxOccurs values. If available, the SSE2 instructions are used to further speedup this case.
  • Improved scalability of the XML Schema identity checking (key, keyref, and unique).
  • Multiple XML Schema conformance fixes.
  • More robust external library detection (libcurl and ICU). In particular, the build system no longer tries to inject any additional paths such as /usr or /usr/local.
  • Compilation of the ICU message loader resources no longer depends on the ICU implementation details.

&XercesCName; 3.1.0 is a minor release and does not include any public API changes that would preclude applications using the previous version of &XercesCName; from building successfully with this version.

&XercesCName; 3.0.1 is a bugfix-only release and is binary-compatible with &XercesCName; 3.0.0.

The following section is a discussion of the technical differences between &XercesCName; 2.8.0 and &XercesCName; 3.0.0.

Topics discussed are:

  • New features in &XercesCName; 3.0.0
  • Public API Changes
    • New Public API
    • Modified Public API
    • Deprecated/Removed Public API
  • Autotools-based build system for the UNIX/Linux/Mac OS X platforms
  • Project files for VC++ 9
  • Support for the ICU transcoder in VC++ 7.1, 8, and 9 project files
  • libcurl-based net accessor
  • Support for XInclude in DOM
  • Support for both XPath 1 and XPath 2 models in the DOM XPath interface
  • Support for the XML Schema subset of XPath 1 in DOM
  • Conformance to the final DOM Level 3 interface specification
  • Ability to provide custom DOM memory manager as well as tune the global DOM heap parameters
  • All public and widely used interfaces as well as a large portion of the implementation were converted to be 64-bit safe.
  • Various XML Schema fixes including the fix for the large maxOccurs and minOccurs bug as well as for the changed ##other interpretation
  • Reviewed and cleaned up diagnostics messages
  • Optimizations for SAX/SAX2 and DOM parsing as well as XML Schema validation

&XercesCName; 3.0.0 is a major release and includes a number of application-breaking interface changes compared to &XercesCName; 2 series. The following sub-sections provide an overview of the public API changes between &XercesCName; 2 series and this release.

  • XMLGrammarPoolImpl implementation has been moved to framework/ and is now publicly accessible
  • DOM XPath interfaces now support XPath 2 model
  • A number of DOM interfaces (DOMLSInput, DOMLSOuput, DOMLSParser, DOMLSSerializer, DOMConfiguration, etc.) were added as part of the the final DOM Level 3 specification conformance work

A large number of public APIs have been modified. Consult individual interface documentation for details. The following list gives an overview of major changes:

  • Several DOM interfaces have been adjusted to conform to the final DOM Level 3 specification
  • DOM XPath interfaces have been adjusted to support both XPath 1 and XPath 2
  • Many public interfaces that used int/long types to represent memory-related sizes, counts, indexes, etc., have been modified to use the 64-bit safe XMLSize_t type instead

All APIs marked as deprecated in &XercesCName; 2 series have been removed in this release. In particular deprecated DOM (depdom) as well as COM support have been removed.

Furthermore, a number of DOM interfaces (DOMBuilder, DOMWriter, DOMInputSource, etc.) were replaced as part of the the final DOM Level 3 specification conformance work.

The following section is a discussion of the technical differences between &XercesCName; 2.7.0 code base and the &XercesCName; 2.8.0.

Topics discussed are:

  • New features in &XercesCName; 2.8.0
  • Public API Changes
    • New Public API
    • Modified Public API
    • Deprecated/Removed Public API
  • Exponential growth of memory block (from 16KB to 128KB) that are allocated by the DOM heap.
  • The NODE_CLONED notification is now sent to each node's user data handler when cloning the entire DOMDocument.
  • On Windows extract the registry code page from MIME\Database\Charset\<encoding>\@InternetEncoding instead of MIME\Database\Charset\<encoding>\@Codepage.
  • Allow whitespace-only nodes to be added as children of a DOMDocument.
  • When a node is cloned or imported the type information (PSVI) is also copied.
  • When using SAX2, including XMLReaderFactory to use createXMLReader doesn't include xercesc/parsers/SAX2XMLReaderImpl.hpp anymore. If you need to cast the SAX2XMLReader to SAX2XMLReaderImpl, you need to include this header yourself.

The following section is a discussion of the technical differences between &XercesCName; 2.6.0 code base and the &XercesCName; 2.7.0.

Topics discussed are:

  • New features in &XercesCName; 2.7.0
  • Public API Changes
    • New Public API
    • Modified Public API
    • Deprecated/Removed Public API
  • Feature to not generate XML Schema annotations. That is, not to add them to the grammar. If you don't need annotations you may want to turn on this feature to avoid memory bloat for XML Schemas that use annotations heavily.
  • Option to skip regenerating the XML Schema annotations when deserializing a grammar. If you don't need annotations you may want to turn on this option to avoid memory bloat for XML Schemas that use annotations heavily.
  • Feature to not perform default entity resolution. When the entityResolver returns NULL, the parser doesn't try to resolve the entity externally.
  • Feature to do schema-only validation even if there is a DTD.

The following lists the public API changes between the &XercesCName; 2.6.0; and the &XercesCName; 2.7.0 releases of the parser.

  • XMLString: subString, compareIStringASCII, lowercaseASCII, uppercaseASCII
  • RefHash2KeysTableOf: rehashing support
  • XMemory: placement new and delete
  • SAX2XMLFilter

The following section is a discussion of the technical differences between &XercesCName; 2.5.0 code base and the &XercesCName; 2.6.0.

Topics discussed are:

  • New features in &XercesCName; 2.6.0
  • Public API Changes
    • New Public API
    • Modified Public API
    • Deprecated/Removed Public API
    • Please note the following source code incompatibility: Rename VALUE_CONSTRAINT enumeration values in XSConstants.hpp due to conflict with system header. New values are VALUE_CONSTRAINT_NONE, VALUE_CONSTRAINT_DEFAULT and VALUE_CONSTRAINT_FIXED. Old values are VC_NONE, VC_DEFAULT and VC_FIXED.
    • Also note that if you have implemented your own XMLGrammarPool implementation, that the original getXSModel has been marked deprecated and a new method, of the same name, that takes a bool parameter has been added. This new getXSModel needs to always return an XSModel.
  • Reduce footprint of DLL by building the deprecated DOM as a separate library
  • Improve packaging scripts
  • Enable ID's to work on all kinds of schema components
  • Add messages to DOMExceptions along with the error code
  • Improve annotation error-reporting capabilities
  • Make grammar caching work with DTD internal subsets
  • Bring parser up to the XML 1.0 3rd Edition
  • Update to the XML 1.1 recommendation
  • Add new method to DOMDocument so that DOM level-2 style DOMDocumentTypes (which have a DOMDocument to own them) can be created
  • Feature for disabling identity constraints
  • Update schema errata
  • Provide means to get actual values out of PSVI/schema component model
  • Synthesize annotation components for non-schema attributes
  • Expose partial PSVIElement information at the start element call
  • Externalize validation, actual/canonical value production for arbitrary strings
  • Laxly validate schema annotations
  • Upgrade to ICU 3.0
  • Handle elements with a large number of attributes more efficiently

The following lists the public API changes between the &XercesCName; 2.5.0; and the &XercesCName; 2.6.0 releases of the parser.

  • XSValue
  • IdentityConstraintHandler
  • XMLBufferFullHandler
  • XMLString: removeChar, isValidNOTATION
  • XMLUri: normalizeUri
  • PSVIHandler: handlePartialElementPSVI
  • RefHash family of classes: getHashModulus
  • XSAnnotation: setline/col and systemid
  • XMLReader: handeEOL
  • XMLChar: isValidNmToken
  • XMLBigDecimal: parseDecimal, getIntVal
  • HexBin: getCanonicalRepresentation, decode
  • Base64: getCanonicalRepresentation, decode
  • XMLBigInteger: compareValues
  • XMLAbstractDoubleFloat: isDataConverted, getValue, isDataOverFlowed
  • PSVIItem: getActualValue
  • XSSimpleTypeDefinition: getDatatypeValidator
  • RefHash2KeysTableOf: transferElement
  • XMLGrammarPool: getXSModel
  • XSerializeEngine constructor
  • MACUnicodeConverters
  • XSerializeEngine constructor
  • DTDAttDef: getDOMTypeInfoName, getDOMTypeInfoUri
  • DTDElementDecl: getDOMTypeInfoName, getDOMTypeInfoUri
  • SchemaAttDef: setAnyDatatypeValidator
  • UnionDatatypeValidator: getMemberTypeName, getMemberTypeUri, getMemberTypeAnonymous, getMemberTypeValidator
  • XMLAttr: getValidatingTypeURI, getValidatingTypeName, setDatatypeValidator, setSchemaValidated
  • ComplexTypeInfo: setContentModel
  • XMLGrammarPool: getXSModel
  • SAXParser, mark this class deprecated

The following section is a discussion of the technical differences between &XercesCName; 2.4.0 code base and the &XercesCName; 2.5.0.

Topics discussed are:

  • New features in &XercesCName; 2.5.0
  • Public API Changes
    • New Public API
    • Modified Public API
    • Deprecated/Removed Public API
  • Fix duplicate attribute detection when namespaces are disabled
  • Stricter use of static memory manager for static data only
  • PSVI bug fix and enhencement
  • ThreadTest with grammar caching
  • Re-pluggable Panic Handler
  • Enhenced mutex creation to impove thread safety
  • Intrinsic transcoding support for 390.
  • Canonical Representation Support
  • New sample SCMPrint
  • New sample PSVIWriter
  • New test XSerializerTest

The following lists the public API changes between the &XercesCName; 2.4.0; and the &XercesCName; 2.5.0 releases of the parser.

The following section is a discussion of the technical differences between &XercesCName; 2.3.0 code base and the &XercesCName; 2.4.0.

Topics discussed are:

  • New features in &XercesCName; 2.4.0
  • Public API Changes
    • New Public API
    • Modified Public API
    • Deprecated/Removed Public API
  • PSVI
  • Performance enhancement
  • Stateless Grammar
  • Grammar Serialization/Deserialiation

The following lists the public API changes between the &XercesCName; 2.3.0; and the &XercesCName; 2.4.0 releases of the parser.

  • PSVI related
  • Grammar serialization/deserialization related
  • XMLAttDef: getProvided, getDOMTypeInfoUri, getDOMTypeInfoName, setProvided
  • XMLAttDefList: hasMoreElements, nextElement, Reset
  • DTDAttDefList: hasMoreElements, nextElement, Reset
  • SchemaAttDefList: hasMoreElements, nextElement, Reset
  • XMLElementDecl: LookupOpts
  • XMLNumber family: toString
  • ENTITYDatatypeValidator: setEntityDeclPool
  • IDDatatypeValidator: setIDRefList
  • IDREFDatatypeValidator: setIDRefList
  • GeneralAttributeCheck: setIDRefList
  • SchemaGrammar: getIDRefList
  • SchemaElementDecl: all non thread safe methods
  • SchemaAttDef: getters
  • DTDGrammar: getRootElemId

The following section is a discussion of the technical differences between &XercesCName; 2.2.0 code base and the &XercesCName; 2.3.0.

Topics discussed are:

  • New features in &XercesCName; 2.3.0
  • Public API Changes
    • New Public API
    • Modified Public API
    • Deprecated/Removed Public API
  • Experimental Implementation of Namespaces in XML 1.1
  • Experimental Implementation of XML 1.1: in DOMWriter
  • More Schema 1.0 Errata Implementation
  • More DOM L3 Core Support
    • DOMConfiguration
    • Document Normalization
  • Plugable Memory Manager
  • Plugable Security Manager
  • Plugable Panic Handler
  • Logical Path Resolution

The following lists the public API changes between the &XercesCName; 2.2.0; and the &XercesCName; 2.3.0 releases of the parser.

  • To support additional DOM L3 functions, the following are added:
  • DOMDocument: getDOMConfiguration
  • DOMConfiguration class for document normalization.
  • DOMDocument canSetNormalizationFeature, setNormalizationFeature, getNormalizationFeature, getErrorHandler, setErrorHandler removed

The following section is a discussion of the technical differences between &XercesCName; 2.1.0 code base and the &XercesCName; 2.2.0.

Topics discussed are:

  • New features in &XercesCName; 2.2.0
  • Using C++ Namespace
  • Public API Changes
    • New Public API
    • Modified Public API
    • Deprecated/Removed Public API
  • C++ Namespace Support
  • Schema 1.0 Errata Implementation
  • Experimental Implementation of XML 1.1
  • More DOM L3 Core Support:
    • DOMNode: baseURI
    • DOMAttr: isId, getTypeInfo
    • DOMElement: setIdAttribute, setIdAttributeNS, setIdAttributeNode, getTypeInfo
  • DOM Message: make use of the non-standard extension DOMImplementation::loadDOMExceptionMsg to load the default error text message for the correspond Exception Code.
  • New feature XMLPlatformUtils::Initialize(const char* const locale) to set the locale for message loader. See Specify locale for Message Loader for details
  • Support Build with ICU Message Loader, or Message Catalog Message Loader
  • RPM for Linux
  • 390: Uniconv390 support
  • 390: support record-oriented MVS datasets with the DOM Level 3 serialization APIs
  • Support for Linux/390
  • Performance: Break Scanner for different functionalities and many other performance improvement
  • New feature, "http://apache.org/xml/features/dom/byte-order-mark", allows user to enable DOMWriter to write Byte-Order-Mark in the output XML stream, See Xercesc Feature: Byte Order Mark for details

&XercesCName; 2.2.0 now supports C++ Namespace. All &XercesCName; classes, data and variables are defined in the &XercesC3Namespace; namespace if C++ Namespace support is ENABLED.

All the binary distributions of &XercesCName; 2.2.0 are now built with C++ Namespace enabled. Therefore users' applications that links with the distributed binary packages must namespace qualify all the &XercesCName; classes, data and variables.

See the Programming Guide Using C++ Namespace for details.

The following lists the public API changes between the &XercesCName; 2.1.0; and the &XercesCName; 2.2.0 releases of the parser.

  • To support additional DOM L3 functions, the following are added:
    • DOMAttr: isId, getTypeInfo
    • DOMElement: setIdAttribute, setIdAttributeNS, setIdAttributeNode, getTypeInfo
    • Added DOMTypeInfo class for getTypeInfo class in DOMElement and DOMAttr
    • Added getDOMTypeInfoUri, getDOMTypeInfoName to XMLAttDef and XMLElementDecl for use in building DOMTypeInfo
  • Added a non-standard extension DOMImplementation::loadDOMExceptionMsg to load the default error message for the corresponding DOMException code.
  • XMLAttr: Added a constructor and a set method to allow creating/setting of XMLAttr using a rawname.
  • Added XMLUri::getUriText to return the URI as a string specification.
  • Add XMLString::fixURI to transform an absolute path filename to standard URI form.
  • Added XMLString::equals for faster string comparison.
  • To allow users to tell the parser to force standard uri conformance, the following are added:
    • XercesDOMParser/DOMParser/SAXParser: get/setStandardUriConformant
    • and DOMBuilder/SAX2XMLReader will recognize the feature http://apache.org/xml/features/standard-uri-conformant
  • Add XMLURL::hasInvalidChar() to indicate if the URL has invalid char as per RFC standard
  • To allow users to enable/disable src offset calculation, the following are added:
    • XercesDOMParser/DOMParser/SAXParser: get/setCalculateSrcOfs
    • and DOMBuilder/SAX2XMLReader will recognize the feature http://apache.org/xml/features/calculate-src-ofst
  • To allow users to select the scanner when scanning XML documents, the following are added:
    • XercesDOMParser/DOMParser/SAXParser: useScanner
    • and DOMBuilder/SAX2XMLReader will recognize the property http://apache.org/xml/properties/scannerName
  • Added getSrcOffset to XercesDOMParser/DOMParser/SAXParser/DOMBuilder/SAX2XMLReader to allow users to get the current src offset within the input source.
  • The following DOM functions are being added a const modifier.
    • DOMImplementation::hasFeature
    • DOMNode: isSameNode, isEqualNode, compareTreePosition
  • XMLPlatformUtils::Initialize() takes a parameter specifying locale for message loader, with default value "en_US".
  • To fix [Bug 13641], the QName copy constructor is corrected to take a reference as parameter, i.e. QName(const QName& qname).
  • To fix [Bug 12232], the QName operator== has been added a const modified.
  • Move XMLUri copy constructor and operator = as public.
  • Move XMLUri::isURIString as public.
  • For validation purpose, added two more default parameters to XMLValidator::validateAttrValue.
  • To fix [Bug 15802], the getURIText of DOMParser/XercesDOMParser/SAXParser/SAX2XMLReader are being added a const modifier.
  • No Deprecated Public API in this release.

The following section is a discussion of the technical differences between &XercesCName; 2.0.0 code base and the &XercesCName; 2.1.0.

Topics discussed are:

  • New features in &XercesCName; 2.1.0
  • Public API Changes
    • New Public API
    • Modified Public API
    • Deprecated/Removed Public API
  • 64 bit binaries distribution on Windows IA64 and Linux IA64
  • Support for Cygwin environment
  • DOM Level 3 DOMNode: compareTreePosition, lookupNamespaceURI, lookupNamespacePrefix and isDefaultNamespace
  • plus many more bug fixes

The following lists the public API changes between the &XercesCName; 2.0.0; and the &XercesCName; 2.1.0 releases of the parser.

  • To fix bug 7087, XMLEnumerator is added a virtual destructor.
  • To fix bug 11448, XMLNotationDecl::get/setBaseURI, and XMLEntityDecl::get/setBaseURI are added.
  • DOMNodeList: item, and getLength have been added a const modifier.
  • DOMNode: lookupNamespacePrefix, isDefaultNamespace, and lookupNamespaceURI have been added a const modifier.
  • No Deprecated Public API in this release.

The following section is a discussion of the technical differences between &XercesCName; 1.7.0 code base and the &XercesCName; 2.0.0.

Topics discussed are:

  • New features in &XercesCName; 2.0.0
  • Unix Library Name change
  • DOM Reorganization
  • Reuse Grammar becomes Grammar Caching
  • Public API Changes
    • New Public API
    • Modified Public API
    • Deprecated/Removed Public API
  • 64 bit binaries distribution
  • Follow Unix Shared Library Naming Convention
  • Apache Recommended DOM C++ Binding
  • Experimental DOM Level 3 subset support, including DOMWriter and DOMBuilder
  • Grammar preparsing and Grammar caching
  • Optionally ignore loading of external DTD
  • Project files for Microsoft Visual C++ .Net
  • Codewarrior 8 support
  • Option to enable/disable strict IANA encoding name checking
  • plus many more bug fixes and performance enhancement

The &XercesCName; UNIX Library now follows the Unix Shared Library Naming Convention (libname.so.soname).

1. The old Java-like DOM is now deprecated, and all the associated files, including the headers and DOMParser files are moved to src/xercesc/dom/deprecated. Users of the old Java-like DOM are required to change all their #include lines to pick up the headers. For example

//old code #include <xercesc/dom/DOM.hpp> #include <xercesc/dom/DOM_Document.hpp> #include <xercesc/parsers/DOMParser.hpp> void test(char* xmlFile) { DOMParser parser; parser.parse(xmlFile); DOM_Document doc = parser.getDocument(); : return; }

should now change to

//new code #include <xercesc/dom/deprecated/DOM.hpp> //<==== change this include line #include <xercesc/dom/deprecated/DOM_Document.hpp> //<==== change this include line #include <xercesc/dom/deprecated/DOMParser.hpp> //<==== change this include line // the rest is the same void test(char* xmlFile) { DOMParser parser; parser.parse(xmlFile); DOM_Document doc = parser.getDocument(); : return; }

2. The Experimental IDOM is now renamed, and becomes the Apache Recommended DOM C++ Binding. The following changes are made:

  • class names are renamed from IDOM_XXXX to DOMXXXX, e.g. IDOM_Document to DOMDocument
  • and thus header files are renamed from IDOM_XXXX.hpp to DOMXXXX.hpp and are moved to src/xercesc/dom
  • the IDOMParser is renamed to XercesDOMParser. And thus the header file is renamed as well
  • the rest is the same, see Apache Recommended DOM C++ binding and DOM Programming Guide for more programming information

Users of IDOM are required to change all their #include lines and do a global rename of IDOMParser to XercesDOMParesr, and IDOM_XXXX to DOMXXXX. For example

//old code #include <xercesc/idom/IDOM.hpp> #include <xercesc/idom/IDOM_Document.hpp> #include <xercesc/parsers/IDOMParser.hpp> void test(char* xmlFile) { IDOMParser parser; parser.parse(xmlFile); IDOM_Document* doc = parser.getDocument(); : return; }

should now change to

//new code #include <xercesc/dom/DOM.hpp> //<==== change this include line #include <xercesc/dom/DOMDocument.hpp> //<==== change this include line #include <xercesc/parsers/XercesDOMParser.hpp> //<==== change this include line void test(char* xmlFile) { XercesDOMParser parser; //<==== rename the IDOMParser parser.parse(xmlFile); DOMDocument* doc = parser.getDocument(); //<==== rename the IDOM_XXXX : return; }

The &XercesCName; 2.0.0 extends the "Reuse Grammar" support by replacing it with a new feature called "Grammar Caching" which provides more flexibility in reusing grammars. Users who used to do the following:

XercesDOMParser parser; // this is the first parse, just usual code as you do normal parse // "firstXmlFile" has a grammar (schema or DTD) specified. parser.parse(firstXmlFile); // this is the second parse, by setting second parameter to true, // the parser will reuse the grammar in the last parse // (i.e. the one in "firstXmlFile") // to validate the second "anotherXmlFile". Any grammar that is // specified in anotherXmlFile is IGNORED. // // Note: The anotherXmlFile cannot have any DTD internal subset. parser.parse(anotherXmlFile, true);

should now use the features cacheGrammarFromParse and useCachedGrammarFromParse:

XercesDOMParser parser; // By setting cacheGrammarFromParse to true, // the parser will cache any grammars encountered in the // follow-on xml files, if not cached already parser.cacheGrammarFromParse(true); parser.parse(firstXmlFile); // By setting useCachedGrammarFromParse to true, // the parser will use all the previous cached grammars // to validate the follow-on xml files if the cached // grammar matches the one specified in anotherXmlFile. // // Note: The follow-on xml files cannot have any DTD internal subset. parser.useCachedGrammarFromParse(true); parser.parse(anotherXmlFile); // This will flush the cached grammar pool parser.resetCachedGrammarPool();

Note there are a number of differences between "Reuse Grammar" and "Grammar Caching"

  1. "Reuse Grammar" ignores any grammar that is specified in anotherXmlFile and simply reuse whatever stored in previous parse; while "Grammar Caching" will use the cached grammar only if it matches the one specified in the anotherXmlFile. If not match, then the new grammar is parsed.
  2. "Reuse Grammar" can only reuse the grammar from previous parse; while "Grammar Caching" can selectively cache many grammars from different parses and collect them all in a pool indexed by targetNamespace (for Schema) or system id (for DTD).
  3. Plus "Grammar Caching" has much more functionalities other than above (like "Pre-parsing Grammar"). Please refer to Preparsing Grammar and Grammar Caching for more programming details.

The following lists the public API changes between the &XercesCName; 1.7.0; and the &XercesCName; 2.0.0 releases of the parser.

  • To support DOM Level 3, the following are added (see the API documentation page for details).
    • DOMNode functions set/getUserData, isSameNode isEqualNode.
    • DOMDocument functions renameNode, get/setActualEncoding, get/setEncoding, get/setVersion, get/setStandalone, get/setDocumentURI.
    • DOMEntity functions get/setActualEncoding, get/setEncoding, get/setVersion.
    • classes AbstractDOMParser, DOMError, DOMErrorHandler, and DOMLocator.
    • classes DOMUserDataHandler, DOMImplementationRegistry and DOMImplementationSource.
    • classes DOMBuilder, DOMEntityResolver, DOMImplementationLS, DOMInputSource, Wrapper4DOMInputSource and Wrapper4InputSource.
    • classes DOMWriter, DOMWriterFilter, LocalFileFormatTarget, StdOutFormatTarget, and MemBufFormatTarget
  • To support DOMWriter, the following PlatformUtils functions are added
    • openFileToWrite, writeBufferToFile
  • To have Apache Recommended DOM C++ Binding, the following are added (see Apache Recommended DOM C++ binding).
    • function release() to fix Memory Management problem
    • classes DOMDocumentRange and DOMDocumentTraversal
    • XMLSize_t is used to represent unsigned integral type in DOM
    • IDOM_XXXX classes are renamed to DOMXXXX, and IDOMParser is renamed to XercesDOMParser as described in DOM Reorganization
    • XercesDOMParser::adoptDocument is added so that document can optionally live outside the parser.
  • To support optionally load external DTD, the following are added:
    • XercesDOMParser::set/getLoadExternalDTD
    • DOMParser::set/getLoadExternalDTD
    • SAXParser::set/getLoadExternalDTD
    • and SAX2XMLReader will recognize the feature http://apache.org/xml/features/nonvalidating/load-external-dtd
  • To support Preparsing Grammar and Grammar Caching, the following are added:
    • XercesDOMParser/DOMParser/SAXParser functions loadGrammar, resetCachedGrammarPool, cacheGrammarFromParse, isCachingGrammarFromParse, useCachedGrammarInParse, isUsingCachedGrammarInParse.
    • SAX2XMLReader functions loadGrammar, resetCachedGrammarPool, and will recognize the features http://apache.org/xml/features/validation/cache-grammarFromParse and http://apache.org/xml/features/validation/use-cachedGrammarInParse.
  • To support access to Grammar info, the following are added:
    • XercesDOMParser/DOMParser/SAXParser/SAX2XMLReader functions getRootGrammar, getGrammar, getURIText.
  • To support strict IANA encoding name checking, the following are added:
    • class EncodingValidator.
    • PlatformUtils functions strictIANAEncoding, isStrictIANAEncoding.
    • XMLTransService functions strictIANAEncoding, isStrictIANAEncoding.
  • SAXParser::getScanner() is moved from public to protected.
  • Grammar::getGrammarType has been added a const modifier.
  • Xerces features are renamed from XMLUni::fgSAX2XercesXXXX to XMLUni::fgXercesXXXX so that they can be shared with DOM parser.
  • With the new Grammar Caching introduced, the the last parameter "reuseGrammar" in the following API is dropped. Users should now use the "Grammar Caching" feature as described in Reuse Grammar becomes Grammar Caching.
    • (in Parser, SAXParser, DOMParser, and XercesDOMParser)
    • parse(const InputSource& source, const bool reuseGrammar = false);
    • parse(const XMLCh* const systemId, const bool reuseGrammar = false);
    • parse(const char* const systemId, const bool reuseGrammar = false);
    • (in SAXParser, DOMParser, and XercesDOMParser)
    • parseFirst(const InputSource& source, XMLPScanToken& toFill, const bool reuseGrammar = false);
    • parseFirst(const XMLCh* const systemId, XMLPScanToken& toFill, const bool reuseGrammar = false);
    • parseFirst(const char* const systemId, XMLPScanToken& toFill, const bool reuseGrammar = false);
  • The old Java-like DOM is now deprecated as described in DOM Reorganization
  • SAX2XMLReader::setValidationConstraint. For consistency, SAX2XMLReader users should set the feature "http://apache.org/xml/features/validation-error-as-fatal" instead.
  • SAX2XMLReader::setExitOnFirstFatalError. For consistency, SAX2XMLReader users should set the feature "http://apache.org/xml/features/continue-after-fatal-error" instead.
  • With the new Grammar Caching introduced, the following features will not be recognized by the SAX2XMLReader:
    • http://apache.org/xml/features/validation/reuse-grammar
    • http://apache.org/xml/features/validation/reuse-validator

The following section is a discussion of the technical differences between &XercesCName; 1.6.0 code base and the &XercesCName; 1.7.0 code base.

  • Support SAX2-ext's DeclHandler.
  • Directory sane_include reorganization: add sub-directory 'xercesc' to src / include folder. See "Directory change in &XercesCName; 1.7.0" below for detail.
  • More IDOM test cases - port IDOMMemTest, and merge ThreadTest and IThreadTest.
  • Support IconvFBSD in multi-threading environment.
  • Use IDOM in schema processing for faster performance.
  • Add Project files for BCB6.
  • Port to Caldera (SCO) OpenServer.
  • Support building with new MacOSURLAccessCF NetAccessor that doesn't require Carbon but can allow Xerces to live solely within CoreServices layer.
  • A new directory, src/xercesc is created to be the new parent directory of all src's direct subdirectories.
  • And in the binary package, all the headers are distributed in include/xercesc directory.
  • Migration considerations:
    • Windows application,
      either change the include directories setting to "..\..\..\..\..\src\xercesc" (Projects->settings->C/C++->Preprocessor),
      or
      change the relevant #include instances in the source/header files, accordingly, eg
      #include <util/XMLString.hpp> be changed to
      #include <xercesc/util/XMLString.hpp>
    • Unix application,
      either change the include search path in the Makefile to " -I <installroot>/include/xercesc",
      or
      change the relevant #include instances in the source/header files as shown above.

The following lists the public API changes between the &XercesCName; 1.7.0 and the &XercesCName; 1.7.0 releases of the parser.

  • Added SAX2-ext's DeclHandler class. See the API documentation page for details.
  • To support SAX2-ext's DeclHandler, the following new methods are added in classes DefaultHandler and SAX2XMLReader:
    • void DefaultHandler::elementDecl(const XMLCh* const name, const XMLCh* const model)
    • void DefaultHandler::attributeDecl(const XMLCh* const eName, const XMLCh* const aName, const XMLCh* const type, const XMLCh* const mode, const XMLCh* const value)
    • void DefaultHandler::internalEntityDecl(const XMLCh* const name, const XMLCh* const value)
    • void DefaultHandler::externalEntityDecl(const XMLCh* const name, const XMLCh* const publicId, const XMLCh* const systemId)
    • DeclHandler* SAX2XMLReader::getDeclarationHandler() const
    • void SAX2XMLReader::setDeclarationHandler(DeclHandler* const handler)
  • To conform to DOM Level 2 specification, the following methods are added:
    • DOM_Node DOM_NodeIterator::getRoot()
    • DOM_Node DOM_TreeWalker::getRoot()
    • bool DOM_Node::hasAttributes() const
    • bool DOM_Element::hasAttribute(const DOMString &name) const
    • bool DOM_Element::hasAttributeNS(const DOMString &namespaceURI, const DOMString &localName) const
    • IDOM_Node* IDOM_NodeIterator::getRoot()
    • IDOM_Node* IDOM_TreeWalker::getRoot()
    • bool IDOM_Node::hasAttributes() const
    • bool IDOM_Element::hasAttribute(const XMLCh* name) const
    • bool IDOM_Element::hasAttributeNS(const XMLCh* namespaceURI, const XMLCh* localName) const
  • To fix [Bug 5570], a copy constructor is added to DOM_Range
  • To conform to the SAX2 specification, the namespace-prefixes feature in SAX2 is set to off as default.
  • To fix [Bug 6330], the Base64::encode and Base64::decode have been modified as follows
    • static XMLByte* Base64::encode(const XMLByte* const inputData, const unsigned int inputLength, unsigned int* outputLength);
    • static XMLByte* Base64::decode(const XMLByte* const inputData, unsigned int* outputLength);
    • static XMLCh* decode(const XMLCh* const inputData, unsigned int* outputLength);
  • To conform to DOM Level 2 specification, the DOM_Node::supports and IDOM_Node::supports are modified to
    • bool DOM_Node::isSupported(const DOMString &feature, const DOMString &version) const
    • bool IDOM_Node::isSupported(const XMLCh* feature, const XMLCh* version) const
  • No Deprecated Public API in this release.

The following section is a discussion of the technical differences between &XercesCName; 1.5.2 code base and the &XercesCName; 1.6.0 code base.

  • Full Schema support is available in this release. See the Schema page for details.
  • New sample SEnumVal to show how to enumerate the markup decls in a Schema Grammar is added.

The following lists the public API changes between the &XercesCName; 1.5.2 and the &XercesCName; 1.6.0 releases of the parser.

  • It should not be a fatal error if a schema InputSource is not found. Add the following new methods:
    • const bool InputSource::getIssueFatalErrorIfNotFound() const
    • void InputSource::setIssueFatalErrorIfNotFound(const bool flag
  • Allow code to take advantage of the fact that the length of the prefix and local name are known when constructing the QName. Add the following new methods:
    • void QName::setNPrefix(const XMLCh*, const unsigned int)
    • void QName::setNLocalPart(const XMLCh*, const unsigned int)
  • To support schemaLocation and noNamespaceSchemaLocation to be specified outside the instance document, the following new methods are added:
    • XMLCh* DOMParser::getExternalSchemaLocation() const
    • XMLCh* DOMParser::getExternalNoNamespaceSchemaLocation() const
    • void DOMParser::setExternalSchemaLocation(const XMLCh* const schemaLocation)
    • void DOMParser::setExternalNoNamespaceSchemaLocation(const char* const noNamespaceSchemaLocation)
    • XMLCh* IDOMParser::getExternalSchemaLocation() const
    • XMLCh* IDOMParser::getExternalNoNamespaceSchemaLocation() const
    • void IDOMParser::setExternalSchemaLocation(const XMLCh* const schemaLocation)
    • void IDOMParser::setExternalNoNamespaceSchemaLocation(const char* const noNamespaceSchemaLocation)
    • XMLCh* SAXParser::getExternalSchemaLocation() const
    • XMLCh* SAXParser::getExternalNoNamespaceSchemaLocation() const
    • void SAXParser::setExternalSchemaLocation(const XMLCh* const schemaLocation)
    • void SAXParser::setExternalNoNamespaceSchemaLocation(const char* const noNamespaceSchemaLocation)
    • and the following properties are recognized by SAX2XMLReader:
      • http://apache.org/xml/properties/schema/external-schemaLocation
      • http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation
  • To support identity constraints, the following new method is added:
    • QName* XMLAttr::getAttName() const
  • To support attribute constraint checking, the constant values in XMLAttDef::DefAttTypes have been re-ordered.
  • Root Element check is moved from XMLValidator to XMLScanner. Thus XMLValidator::checkRootElement() is deprecated.

The following section is a discussion of the technical differences between &XercesCName; 1.4.0 code base and the &XercesCName; 1.5.2 code base.

Schema subset support and an experimental IDOM are available in this release.

  • New function "setDoSchema" is added to DOM/SAX parser.
  • New feature "http://apache.org/xml/features/validation/schema" is recognized by SAX2XMLReader.
  • New classes such as SchemaValidator, TraverseSchema ... are added.
  • The Scanner is enhanced to process schema.
  • New sample data files personal-schema.xml and personal.xsd.
  • New command line option "-s" for samples.

See the Schema page for details.

The experimental IDOM API is a new design of the C++ DOM API. Please note that this experimental IDOM API is only a prototype and is subject to change.

There are some architectural changes between the &XercesCName; 1.4.0 and the &XercesCName; 1.5.2 releases of the parser, and as a result, some code has undergone restructuring as shown below.

  • common content model files such as DFAContentModel ... are moved to a new directory called src/validators/common
  • DTD related files are moved to a new directory called src/validators/DTD
  • new directory src/validators/Datatype is created to store all datatype validators
  • new directory src/validators/schema is created to store Schema related files

DTDValidator was design to scan, validate and store the DTD in &XercesCName; 1.4.0 or earlier. In &XercesCName; 1.5.2, this process is broken down into three components:

  • new class DTDScanner - to scan the DTD
  • new class DTDGrammar - to store the DTD Grammar
  • DTDValidator - to validate the DTD only

The following section is a discussion of the technical differences between XML4C 2.x code base and the new &XercesCName; 1.4.0 code base.

There are some major architectural changes between the 2.3.x and &XercesCName; 1.4.0 releases of the parser, and as a result the code has undergone significant restructuring. The list below mentions the public api's which existed in 2.3.x and no longer exist in &XercesCName; 1.4.0. It also mentions the &XercesCName; 1.4.0 api which will give you the same functionality. Note: This list is not exhaustive. The API docs (and ultimately the header files) supplement this information.

  • parsers/[Non]Validating[DOM/SAX]parser.hpp
    These files/classes have all been consolidated in the new version to just two files/classes: [DOM/SAX]Parser.hpp. Validation is now a property which may be set before invoking the parse. Now, the setDoValidation() method controls the validation processing.
  • The framework/XMLDocumentTypeHandler.hpp been replaced with validators/DTD/DocTypeHandler.hpp.
  • The following methods now have different set of parameters because the underlying base class methods have changed in the 3.x release. These methods belong to one of XMLDocumentHandler, XMLErrorReporter or DocTypeHandler interfaces.
    • [Non]Validating[DOM/SAX]Parser::docComment
    • [Non]Validating[DOM/SAX]Parser::doctypePI
    • [Non]ValidatingSAXParser::elementDecl
    • [Non]ValidatingSAXParser::endAttList
    • [Non]ValidatingSAXParser::entityDecl
    • [Non]ValidatingSAXParser::notationDecl
    • [Non]ValidatingSAXParser::startAttList
    • [Non]ValidatingSAXParser::TextDecl
    • [Non]ValidatingSAXParser::docComment
    • [Non]ValidatingSAXParser::docPI
    • [Non]Validating[DOM/SAX]Parser::endElement
    • [Non]Validating[DOM/SAX]Parser::startElement
    • [Non]Validating[DOM/SAX]Parser::XMLDecl
    • [Non]Validating[DOM/SAX]Parser::error
  • The following methods/data members changed visibility from protected in 2.3.x to private (with public setters and getters, as appropriate).
    • [Non]ValidatingDOMParser::fDocument
    • [Non]ValidatingDOMParser::fCurrentParent
    • [Non]ValidatingDOMParser::fCurrentNode
    • [Non]ValidatingDOMParser::fNodeStack
  • The following files have moved, possibly requiring changes in the #include statements.
    • MemBufInputSource.hpp
    • StdInInputSource.hpp
    • URLInputSource.hpp
  • All the DTD validator code was moved from internal to separate validators/DTD directory.
  • The error code definitions which were earlier in internal/ErrorCodes.hpp are now split up into the following files:
    • framework/XMLErrorCodes.hpp - Core XML errors
    • framework/XMLValidityCodes.hpp - DTD validity errors
    • util/XMLExceptMsgs.hpp - C++ specific exception codes.

The sample programs no longer use any of the unsupported util/xxx classes. They only existed to allow us to write portable samples. But, since we feel that the wide character APIs are supported on a lot of platforms these days, it was decided to go ahead and just write the samples in terms of these. If your system does not support these APIs, you will not be able to build and run the samples. On some platforms, these APIs might perhaps be optional packages or require runtime updates or some such action.

More samples have been added as well. These highlight some of the new functionality introduced in the new code base. And the existing ones have been cleaned up as well.

The new samples are:

  1. PParse - Demonstrates 'progressive parse' (see below)
  2. StdInParse - Demonstrates use of the standard in input source
  3. EnumVal - Shows how to enumerate the markup decls in a DTD Validator

In the XML4C 2.x code base, there were the following parser classes (in the src/parsers/ source directory): NonValidatingSAXParser, ValidatingSAXParser, NonValidatingDOMParser, ValidatingDOMParser. The non-validating ones were the base classes and the validating ones just derived from them and turned on the validation. This was deemed a little bit overblown, considering the tiny amount of code required to turn on validation and the fact that it makes people use a pointer to the parser in most cases (if they needed to support either validating or non-validating versions.)

The new code base just has SAXParer and DOMParser classes. These are capable of handling both validating and non-validating modes, according to the state of a flag that you can set on them. For instance, here is a code snippet that shows this in action.

void ParseThis(const XMLCh* const fileToParse, const bool validate) { // // Create a SAXParser. It can now just be // created by value on the stack if we want // to parse something within this scope. // SAXParser myParser; // Tell it whether to validate or not myParser.setDoValidation(validate); // Parse and catch exceptions... try { myParser.parse(fileToParse); } ... };

We feel that this is a simpler architecture, and that it makes things easier for you. In the above example, for instance, the parser will be cleaned up for you automatically upon exit since you don't have to allocate it anymore.

Some of the classes previously in the src/internal/ directory have been moved to their more correct location in the src/framework/ directory. These are classes used by the outside world and should have been framework classes to begin with. Also, to avoid name classes in the absence of C++ namespace support, some of these clashes have been renamed to make them more XML specific and less likely to clash. More classes might end up being moved to framework as well.

So you might have to change a few include statements to find these classes in their new locations. And you might have to rename some of the names of the classes, if you used any of the ones whose names were changed.

The src/util directory was becoming somewhat of a dumping ground of platform and compiler stuff. So we reworked that directory to better spread things out. The new scheme is:

  • MsgLoaders - Holds the msg loader implementations
    1. ICU
    2. InMemory
    3. MsgCatalog
    4. Win32
  • Compilers - All the compiler specific files
  • Transcoders - Holds the transcoder implementations
    1. Iconv
    2. ICU
    3. Win32
  • Platforms
    1. AIX
    2. HP-UX
    3. Linux
    4. Solaris
    5. ....
    6. Win32

This organization makes things much easier to understand. And it makes it easier to find which files you need and which are optional. Note that only per-platform files have any hard coded references to specific message loaders or transcoders. So if you don't include the ICU implementations of these services, you don't need to link in ICU or use any ICU headers. The rest of the system works only in terms of the abstraction APIs.

xerces-c-3.1.1/doc/domprint.xml0000644000175000017500000001503611274310172015371 0ustar borisboris

DOMPrint parses an XML file, constructs the DOM tree, and invokes DOMLSSerializer::write() to serialize the resultant DOM tree back to XML stream.

The DOMPrint sample parses an XML file, using either a validating or non-validating DOM parser configuration, builds a DOM tree, and then invokes DOMLSSerializer::write() to serialize the resultant DOM tree. To run DOMPrint, enter the following:

DOMPrint <XML file>

The following parameters may be set from the command line

Usage: DOMPrint [options] <XML file> This program invokes the DOM parser, and builds the DOM tree It then asks the DOMLSSerializer to serialize the DOM tree. Options: -e create entity reference nodes. Default is no expansion. -v=xxx Validation scheme [always | never | auto*]. -n Enable namespace processing. Default is off. -s Enable schema processing. Default is off. -f Enable full schema constraint checking. Defaults is off. -wenc=XXX Use a particular encoding for output. Default is the same encoding as the input XML file. UTF-8 if input XML file has not XML declaration. -wfile=xxx Write to a file instead of stdout. -wscs=xxx Enable/Disable split-cdata-sections. Default on. -wddc=xxx Enable/Disable discard-default-content. Default on. -wflt=xxx Enable/Disable filtering. Default off. -wfpp=xxx Enable/Disable format-pretty-print. Default off. -wbom=xxx Enable/Disable write Byte-Order-Mark Default off. -? Show this help * = Default if not provided explicitly. The parser has intrinsic support for the following encodings:\n" UTF-8, US-ASCII, ISO8859-1, UTF-16[BL]E, UCS-4[BL]E,\n" WINDOWS-1252, IBM1140, IBM037, IBM1047.\n"

-v=always will force validation
-v=never will not use any validation
-v=auto will validate if a DOCTYPE declaration or a schema declaration is present in the XML document

Here is a sample output from DOMPrint

cd &XercesC3InstallDir;/samples/data DOMPrint -v=always personal.xml <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE personnel SYSTEM "personal.dtd"> <!-- @version: --> <personnel> <person id="Big.Boss"> <name><family>Boss</family> <given>Big</given></name> <email>chief@foo.com</email> <link subordinates="one.worker two.worker three.worker four.worker five.worker"></link> </person> <person id="one.worker"> <name><family>Worker</family> <given>One</given></name> <email>one@foo.com</email> <link manager="Big.Boss"></link> </person> <person id="two.worker"> <name><family>Worker</family> <given>Two</given></name> <email>two@foo.com</email> <link manager="Big.Boss"></link> </person> <person id="three.worker"> <name><family>Worker</family> <given>Three</given></name> <email>three@foo.com</email> <link manager="Big.Boss"></link> </person> <person id="four.worker"> <name><family>Worker</family> <given>Four</given></name> <email>four@foo.com</email> <link manager="Big.Boss"></link> </person> <person id="five.worker"> <name><family>Worker</family> <given>Five</given></name> <email>five@foo.com</email> <link manager="Big.Boss"></link> </person> </personnel>

Note that DOMPrint does not reproduce the original XML file. DOMPrint and SAXPrint produce different results because of the way the two APIs store data and capture events.

Application needs to provide its own implementation of DOMErrorHandler (in this sample, the DOMPrintErrorHandler), if it would like to receive notification from the serializer in the case any error occurs during the serialization.

Application needs to provide its own implementation of DOMLSSerializerFilter (in this sample, the DOMPrintFilter), if it would like to filter out certain part of the DOM representation, but must be aware that thus may render the resultant XML stream invalid.

Application may choose any combination of characters as the end of line sequence to be used in the resultant XML stream, but must be aware that this may render the resultant XML stream ill formed.

Application may choose a particular encoding name in which the output XML stream should be, but must be aware that if unrepresentable in the encoding specified characters appear in the markup, it may force the serializer to terminate serialization prematurely, and thus no complete serialization would be done.

Application shall query the serializer first, before set any feature/mode(true, false), or be ready to catch exception if this feature/mode is not supported by the serializer.

Application needs to release the filter, error handler and format target objects created for the serialization.

xerces-c-3.1.1/doc/samples.xml0000644000175000017500000001165511065665171015216 0ustar borisboris

&XercesCName; comes with sample applications that demonstrate salient features of the parser. They are simple applications written on top of the SAX and DOM APIs provided by the parser. Sample XML data files are provided in the samples/data directory.

The sample applications are dependent on the &XercesCName; shared library (and could also depend on the ICU library if you built &XercesCName; with ICU). Therefore, on Windows platforms you must make sure that your PATH environment variable is set properly to pick up these shared libraries at runtime.

On UNIX platforms you must ensure that LD_LIBRARY_PATH environment variable is set properly to pick up the shared libraries at runtime. (UNIX gurus will understand here that LD_LIBRARY_PATH actually translates to LD_LIBRARY_PATH on Solaris and Linux, SHLIB_PATH on HP-UX, DYLD_LIBRARY_PATH on Mac OS X, and LIBPATH on AIX).

On both Windows and UNIX platforms, if the parser is built with the ICU message loader or message catalog loader, then you may need to set another environment variable, XERCESC_NLS_HOME, to point to the &XercesC3SrcInstallDir;/msg directory, which is where the message files reside.

Once you have set up the environment variables, you can run the samples by opening a command window (or your shell prompt for UNIX environments).

  • SAXCount
    SAXCount counts the elements, attributes, spaces and characters in an XML file.
  • SAXPrint
    SAXPrint parses an XML file and prints it out.
  • SAX2Count
    SAX2Count counts the elements, attributes, spaces and characters in an XML file.
  • SAX2Print
    SAX2Print parses an XML file and prints it out.
  • DOMCount
    DOMCount counts the elements in a XML file.
  • DOMPrint
    DOMPrint parses an XML file and prints it out.
  • CreateDOMDocument
    CreateDOMDocument creates a DOM tree in memory from scratch.
  • MemParse
    MemParse parses XML in a memory buffer, printing the number of elements and attributes.
  • Redirect
    Redirect redirects the input stream for external entities.
  • PParse
    PParse demonstrates progressive parsing.
  • StdInParse
    StdInParse demonstrates streaming XML data from standard input.
  • EnumVal
    EnumVal shows how to enumerate the markup declarations in a DTD Grammar.
  • SEnumVal
    SEnumVal shows how to enumerate the markup declarations in a Schema Grammar.
  • PSVIWriter
    PSVIWriter exposes the underlying PSVI of the parsed XML file.
  • SCMPrint
    SCMPrint parses an XSD file and prints information about the Schema Component Model.
  • XInclude
    XInclude parses an XML file and writes a new XML file with the xi:include elements expanded.
xerces-c-3.1.1/doc/apidocs.xml0000644000175000017500000000565011065665171015172 0ustar borisboris

&XercesCName; is packaged with the API documentation for SAX and DOM, the two most common programming interfaces for XML. The most common framework classes have also been documented.

&XercesCName; SAX is an implementation of the SAX 1.0/2.0 specification.

&XercesCName; DOM is an implementation of the following specifications:

  • DOM Level 1 Specification, a W3C Recommendation of October 1, 1998
  • DOM Level 2 Core Specification, a W3C Recommendation of November 13, 2000
  • DOM Level 2 Traversal and Range Specification, a W3C Recommendation of November 13, 2000
  • DOM Level 3.0 Core Specification, and DOM Level 3.0 Load and Save Specification, a W3C Recommendation of April 7, 2004 See DOM Level 3 Support for details.

For a complete understanding of how the &XercesCName; APIs work, we recommend that you read these specifications.

See the &XercesCName; API Reference for the detailed documentation of &XercesCName; interfaces.

The API Reference is automatically generated using Doxygen.
xerces-c-3.1.1/doc/program-sax.xml0000644000175000017500000007367711274550527016026 0ustar borisboris

The SAX API for XML parsers was originally developed for Java. Please be aware that there is no standard SAX API for C++, and that use of the &XercesCName; SAX API does not guarantee client code compatibility with other C++ XML parsers.

The SAX API presents a callback based API to the parser. An application that uses SAX provides an instance of a handler class to the parser. When the parser detects XML constructs, it calls the methods of the handler class, passing them information about the construct that was detected. The most commonly used handler classes are DocumentHandler which is called when XML constructs are recognized, and ErrorHandler which is called when an error occurs. The header files for the various SAX handler classes are in the xercesc/sax/ directory.

As a convenience, &XercesCName; provides HandlerBase, a single class which is publicly derived from all the Handler classes. HandlerBase's default implementation of the handler callback methods is to do nothing. A convenient way to get started with &XercesCName; is to derive your own handler class from HandlerBase and override just those methods in HandlerBase which you are interested in customizing. This simple example shows how to create a handler which will print element names, and print fatal error messages. The source code for the sample applications show additional examples of how to write handler classes.

This is the header file MySAXHandler.hpp:

#include <xercesc/sax/HandlerBase.hpp> class MySAXHandler : public HandlerBase { public: void startElement(const XMLCh* const, AttributeList&); void fatalError(const SAXParseException&); };

This is the implementation file MySAXHandler.cpp:

#include "MySAXHandler.hpp" #include <iostream> using namespace std; MySAXHandler::MySAXHandler() { } void MySAXHandler::startElement(const XMLCh* const name, AttributeList& attributes) { char* message = XMLString::transcode(name); cout << "I saw element: "<< message << endl; XMLString::release(&message); } void MySAXHandler::fatalError(const SAXParseException& exception) { char* message = XMLString::transcode(exception.getMessage()); cout << "Fatal Error: " << message << " at line: " << exception.getLineNumber() << endl; XMLString::release(&message); }

The XMLCh and AttributeList types are supplied by &XercesCName; and are documented in the API reference. Examples of their usage appear in the source code for the sample applications.

In order to use &XercesCName; SAX to parse XML files, you will need to create an instance of the SAXParser class. The example below shows the code you need in order to create an instance of SAXParser. The DocumentHandler and ErrorHandler instances required by the SAX API are provided using the HandlerBase class supplied with &XercesCName;.

#include <xercesc/parsers/SAXParser.hpp> #include <xercesc/sax/HandlerBase.hpp> #include <xercesc/util/XMLString.hpp> #include <iostream> using namespace std; using namespace xercesc; int main (int argc, char* args[]) { try { XMLPlatformUtils::Initialize(); } catch (const XMLException& toCatch) { char* message = XMLString::transcode(toCatch.getMessage()); cout << "Error during initialization! :\n" << message << "\n"; XMLString::release(&message); return 1; } char* xmlFile = "x1.xml"; SAXParser* parser = new SAXParser(); parser->setDoValidation(true); parser->setDoNamespaces(true); // optional DocumentHandler* docHandler = new HandlerBase(); ErrorHandler* errHandler = (ErrorHandler*) docHandler; parser->setDocumentHandler(docHandler); parser->setErrorHandler(errHandler); try { parser->parse(xmlFile); } catch (const XMLException& toCatch) { char* message = XMLString::transcode(toCatch.getMessage()); cout << "Exception message is: \n" << message << "\n"; XMLString::release(&message); return -1; } catch (const SAXParseException& toCatch) { char* message = XMLString::transcode(toCatch.getMessage()); cout << "Exception message is: \n" << message << "\n"; XMLString::release(&message); return -1; } catch (...) { cout << "Unexpected Exception \n" ; return -1; } delete parser; delete docHandler; return 0; }

The behavior of the SAXParser is dependant on the values of the following features. All of the features below are set using the "setter" methods (e.g. setDoNamespaces), and are queried using the corresponding "getter" methods (e.g. getDoNamespaces). The following only gives you a quick summary of supported features. Please refer to API Documentation for complete detail.

None of these features can be modified in the middle of a parse, or an exception will be thrown.

void setDoNamespaces(const bool)
true: Perform Namespace processing.
false: Do not perform Namespace processing.
default: false
note: If the validation scheme is set to Val_Always or Val_Auto, then the document must contain a grammar that supports the use of namespaces.
see: setValidationScheme

void setValidationScheme(const ValSchemes)
Val_Auto: The parser will report validation errors only if a grammar is specified.
Val_Always: The parser will always report validation errors.
Val_Never: Do not report validation errors.
default: Val_Never
note: If set to Val_Always, the document must specify a grammar. If this feature is set to Val_Never and document specifies a grammar, that grammar might be parsed but no validation of the document contents will be performed.
see: setLoadExternalDTD

void setDoSchema(const bool)
true: Enable the parser's schema support.
false: Disable the parser's schema support.
default: false
note If set to true, namespace processing must also be turned on.
see: setDoNamespaces

void setValidationSchemaFullChecking(const bool)
true: Enable full schema constraint checking, including checking which may be time-consuming or memory intensive. Currently, particle unique attribution constraint checking and particle derivation restriction checking are controlled by this option.
false: Disable full schema constraint checking.
default: false
note: This feature checks the Schema grammar itself for additional errors that are time-consuming or memory intensive. It does not affect the level of checking performed on document instances that use Schema grammars.
see: setDoSchema

void setLoadSchema(const bool)
true: Load the schema.
false: Don't load the schema if it wasn't found in the grammar pool.
default: true
note: This feature is ignored and no schemas are loaded if schema processing is disabled.
see: setDoSchema

void setLoadExternalDTD(const bool)
true: Load the External DTD.
false: Ignore the external DTD completely.
default: true
note This feature is ignored and DTD is always loaded if the validation scheme is set to Val_Always or Val_Auto.
see: setValidationScheme

void setExitOnFirstFatalError(const bool)
true: Stops parse on first fatal error.
false: Attempt to continue parsing after a fatal error.
default: true
note: The behavior of the parser when this feature is set to false is undetermined! Therefore use this feature with extreme caution because the parser may get stuck in an infinite loop or worse.

void setValidationConstraintFatal(const bool)
true: The parser will treat validation error as fatal and will exit depends on the state of setExitOnFirstFatalError.
false: The parser will report the error and continue processing.
default: false
note: Setting this true does not mean the validation error will be printed with the word "Fatal Error". It is still printed as "Error", but the parser will exit if setExitOnFirstFatalError is set to true.
see: setExitOnFirstFatalError

void useCachedGrammarInParse(const bool)
true:Use cached grammar if it exists in the pool.
false:Parse the schema grammar.
default: false
note:The getter function for this method is called isUsingCachedGrammarInParse.
note:If the grammar caching option is enabled, this option is set to true automatically and any setting to this option by the user is a no-op.
see: cacheGrammarFromParse

void cacheGrammarFromParse(const bool)
true:Cache the grammar in the pool for re-use in subsequent parses.
false:Do not cache the grammar in the pool
default: false
note:The getter function for this method is called isCachingGrammarFromParse
note: If set to true, the useCachedGrammarInParse is also set to true automatically.
see: useCachedGrammarInParse

void setStandardUriConformant(const bool)
true: Force standard uri conformance.
false: Do not force standard uri conformance.
default: false
note: If set to true, malformed uri will be rejected and fatal error will be issued.

void setCalculateSrcOfs(const bool)
true: Enable src offset calculation.
false: Disable src offset calculation.
default: false
note: If set to true, the user can inquire about the current src offset within the input source. Setting it to false (default) improves the performance.

void setIdentityConstraintChecking(const bool);
true: Enable identity constraint checking.
false: Disable identity constraint checking.
default: true

void setGenerateSyntheticAnnotations(const bool);
true: Enable generation of synthetic annotations. A synthetic annotation will be generated when a schema component has non-schema attributes but no child annotation.
false: Disable generation of synthetic annotations.
default: false

setValidateAnnotation
true: Enable validation of annotations.
false: Disable validation of annotations.
default: false
note: Each annotation is validated independently.

setIgnoreAnnotations
true: Do not generate XSAnnotations when traversing a schema.
false: Generate XSAnnotations when traversing a schema.
default: false

setDisableDefaultEntityResolution
true: The parser will not attempt to resolve the entity when the resolveEntity method returns NULL.
false: The parser will attempt to resolve the entity when the resolveEntity method returns NULL.
default: false

setSkipDTDValidation
true: When schema validation is on the parser will ignore the DTD, except for entities.
false: The parser will not ignore DTDs when validating.
default: false
see: DoSchema

setIgnoreCachedDTD
true: Ignore a cached DTD when an XML document contains both an internal and external DTD, and the use cached grammar from parse option is enabled. Currently, we do not allow using cached DTD grammar when an internal subset is present in the document. This option will only affect the behavior of the parser when an internal and external DTD both exist in a document (i.e. no effect if document has no internal subset).
false: Don't ignore cached DTD.
default: false
see: useCachedGrammarInParse

setHandleMultipleImports
true: During schema validation allow multiple schemas with the same namespace to be imported.
false: Don't import multiple schemas with the same namespace.
default: false

void setExternalSchemaLocation(const XMLCh* const)
Description The XML Schema Recommendation explicitly states that the inclusion of schemaLocation/ noNamespaceSchemaLocation attributes in the instance document is only a hint; it does not mandate that these attributes must be used to locate schemas. Similar situation happens to <import> element in schema documents. This property allows the user to specify a list of schemas to use. If the targetNamespace of a schema specified using this method matches the targetNamespace of a schema occurring in the instance document in schemaLocation attribute, or if the targetNamespace matches the namespace attribute of <import> element, the schema specified by the user using this property will be used (i.e., the schemaLocation attribute in the instance document or on the <import> element will be effectively ignored).
Value The syntax is the same as for schemaLocation attributes in instance documents: e.g, "http://www.example.com file_name.xsd". The user can specify more than one XML Schema in the list.
Value Type XMLCh*

void setExternalNoNamespaceSchemaLocation(const XMLCh* const)
Description The XML Schema Recommendation explicitly states that the inclusion of schemaLocation/ noNamespaceSchemaLocation attributes in the instance document is only a hint; it does not mandate that these attributes must be used to locate schemas. This property allows the user to specify the no target namespace XML Schema Location externally. If specified, the instance document's noNamespaceSchemaLocation attribute will be effectively ignored.
Value The syntax is the same as for the noNamespaceSchemaLocation attribute that may occur in an instance document: e.g."file_name.xsd".
Value Type XMLCh*

void useScanner(const XMLCh* const)
Description This property allows the user to specify the name of the XMLScanner to use for scanning XML documents. If not specified, the default scanner "IGXMLScanner" is used.
Value The recognized scanner names are:
1."WFXMLScanner" - scanner that performs well-formedness checking only.
2. "DGXMLScanner" - scanner that handles XML documents with DTD grammar information.
3. "SGXMLScanner" - scanner that handles XML documents with XML schema grammar information.
4. "IGXMLScanner" - scanner that handles XML documents with DTD or/and XML schema grammar information.
Users can use the predefined constants defined in XMLUni directly (fgWFXMLScanner, fgDGXMLScanner, fgSGXMLScanner, or fgIGXMLScanner) or a string that matches the value of one of those constants.
Value Type XMLCh*
note: See Use Specific Scanner for more programming details.

setSecurityManager(Security Manager * const)
Description Certain valid XML and XML Schema constructs can force a processor to consume more system resources than an application may wish. In fact, certain features could be exploited by malicious document writers to produce a denial-of-service attack. This property allows applications to impose limits on the amount of resources the processor will consume while processing these constructs.
Value An instance of the SecurityManager class (see xercesc/util/SecurityManager). This class's documentation describes the particular limits that may be set. Note that, when instantiated, default values for limits that should be appropriate in most settings are provided. The default implementation is not thread-safe; if thread-safety is required, the application should extend this class, overriding methods appropriately. The parser will not adopt the SecurityManager instance; the application is responsible for deleting it when it is finished with it. If no SecurityManager instance has been provided to the parser (the default) then processing strictly conforming to the relevant specifications will be performed.
Value Type SecurityManager*

setLowWaterMark(XMLSize_t)
Description If the number of available bytes in the raw buffer is less than the low water mark the parser will attempt to read more data before continuing parsing. By default the value for this parameter is 100 bytes. You may want to set this parameter to 0 if you would like the parser to parse the available data immediately without potentially blocking while waiting for more date.
Value New low water mark.
Value Type XMLSize_t

setInputBufferSize(const size_t bufferSize)
Description Set maximum input buffer size. This method allows users to limit the size of buffers used in parsing XML character data. The effect of setting this size is to limit the size of a ContentHandler::characters() call. The parser's default input buffer size is 1 megabyte.
Value The maximum input buffer size
Value Type XMLCh*

xerces-c-3.1.1/doc/build.xml0000644000175000017500000003353411363611554014646 0ustar borisboris

Build instructions are provided for the following platforms and compilers:

  • UNIX/Linux/Mac OS X/Cygwin/MinGW
  • Windows using Microsoft Visual C++
  • Windows using Borland C++

For building on UNIX and UNIX-like (GNU/Linux, Max OS X, Cygwin, MinGW-MSYS) platforms &XercesCName; uses the GNU automake-based build systems and requires that you have GNU make installed. On some platforms GNU make is called gmake instead of make.

As with all automake-based projects the build process is divided into two parts: configuration and building. The configuration part is performed using the configure script that can be found in the &XercesC3SrcInstallDir; directory. The build part is performed by invoking make.

Besides the standard configure options which you can view by running configure --help, &XercesCName; provides a number of project-specific options that are worth mentioning. You can specify one option for each category outlined below. If you do not specify anything for a particular category then configure will select the most appropriate default. At the end of its execution configure prints the selected values for each category.

Net Accessor (used to access network resources):

Option Description
--enable-netaccessor-curl use the libcurl library
--enable-netaccessor-socket use plain sockets
--enable-netaccessor-cfurl use the CFURL API (only on Mac OS X)
--enable-netaccessor-winsock use WinSock (only on Windows, Cygwin, MinGW)
--disable-network disable network support

Transcoder (used to convert between internal UTF-16 and other encodings):

Option Description
--enable-transcoder-gnuiconv use the GNU iconv library
--enable-transcoder-iconv use the iconv library
--enable-transcoder-icu use the ICU library
--enable-transcoder-macosunicodeconverter use Mac OS X APIs (only on Mac OS X)
--enable-transcoder-windows use Windows APIs (only on Windows, Cygwin, MinGW)

Message Loader (used to access diagnostics messages):

Option Description
--enable-msgloader-inmemory store the messages in memory
--enable-msgloader-icu store the messages using the ICU resource bundles
--enable-msgloader-iconv store the messages in the iconv message catalog

Thread support is enabled by default and can be disabled with the --disable-threads option.

By default configure selects both shared and static libraries. You can use the --disable-shared and --disable-static options to avoid building the version you don't need.

Finally, to make the build process cleaner the &XercesCName; build system hides actual compiler commands being executed by make. If you would like to see those then you can specify the --disable-pretty-make option.

If you need to specify compiler executables that should be used to build &XercesCName;, you can set the CC and CXX variables when invoking configure. Similarly, if you need to specify additional compiler or linker options, you can set the CFLAGS, CXXFLAGS, and LDFLAGS variables. For example:

./configure --disable-static CC=gcc-4.3 CXX=g++-4.3 CFLAGS=-O3 CXXFLAGS=-O3

Once the configuration part is complete you can run make (or gmake). Running make from the &XercesC3SrcInstallDir; directory builds &XercesCName; library and examples. The library is placed into the src/.libs directory. If you like to build only the library, you can run make from &XercesC3SrcInstallDir;/src.

If you would like to build the tests and run the automated test suite, run make check from the &XercesC3SrcInstallDir; directory. The automated test suite required Perl and the diff command.

Finally, to install the library and examples you can run make install (or gmake install). To change the installation directory, use the --prefix configure option.

Some platforms and configurations require extra configure and make options which are shown in the following table.

Platform Compiler Options
Solaris x86 Sun CC ./configure CXX=CC CC=cc
Solaris x86-64 Sun CC ./configure CXX=CC CC=cc CFLAGS=-xarch=amd64 CXXFLAGS=-xarch=amd64
(for newer Sun CC versions use -m64 instead of -xarch=amd64)
Solaris SPARC Sun CC ./configure CXX=CC CC=cc
Solaris SPARCv9 Sun CC ./configure CXX=CC CC=cc CFLAGS=-xarch=v9 CXXFLAGS=-xarch=v9
(for newer Sun CC versions use -m64 instead of -xarch=v9)
AIX PowerPC IBM XL C++ ./configure CXX=xlC_r CC=xlc_r
gmake libxerces_c_la_LDFLAGS=-qmkshrobj
AIX PowerPC-64 IBM XL C++ export OBJECT_MODE=64
./configure CXX=xlC_r CC=xlc_r CXXFLAGS=-q64 CFLAGS=-q64
gmake libxerces_c_la_LDFLAGS=-qmkshrobj
HP-UX IA-64-32 HP aCC ./configure CXX=aCC CC=aCC CFLAGS=-mt CXXFLAGS=-mt LDFLAGS=-mt
HP-UX IA-64 HP aCC ./configure CXX=aCC CC=aCC CFLAGS="-mt +DD64" CXXFLAGS="-mt +DD64" LDFLAGS="-mt +DD64"
Mac OS X x86-64 GCC ./configure CFLAGS="-arch x86_64" CXXFLAGS="-arch x86_64"
Mac OS X PowerPC-64 GCC ./configure CFLAGS="-arch ppc64" CXXFLAGS="-arch ppc64"
Mac OS X x86/PowerPC GCC ./configure --disable-dependency-tracking CFLAGS="-arch i386 -arch ppc" CXXFLAGS="-arch i386 -arch ppc"
Mingw x86 GCC ./configure LDFLAGS=-no-undefined
Cygwin x86 GCC ./configure LDFLAGS=-no-undefined

Note that different UNIX platforms use different system environment variable for finding shared libraries. On Linux and Solaris, the environment variable name is LD_LIBRARY_PATH, on AIX it is LIBPATH, on Mac OS X it is DYLD_LIBRARY_PATH, and on HP-UX it is SHLIB_PATH. Note that Cygwin and MinGW are different from the UNIX platforms in the way they find shared libraries at run time. While UNIX platforms may use the LD_LIBRARY_PATH environment variable, Cygwin and MinGW use the PATH environment variable.

&XercesCName; source distribution comes with Microsoft Visual C++ projects and solutions. The following describes the steps you need to build with this compiler.

To build &XercesCName; from the source distribution you will need to open the solution containing the project. The solutions containing the &XercesCName; project files are in the following sub-directories in the &XercesC3SrcInstallDir; directory:

(For VC7.1) projects\Win32\VC7.1\xerces-all\xerces-all.sln (For VC8.0) projects\Win32\VC8\xerces-all\xerces-all.sln (For VC9.0) projects\Win32\VC9\xerces-all\xerces-all.sln (For VC10.0) projects\Win32\VC10\xerces-all\xerces-all.sln

Once you have the solution open, you need to build the project named XercesLib. You can select Debug/Release, Static/DLL, and, for VC8, VC9, and VC10, 32/64 bit builds using the Configuration Manager dialog. You can also select whether the &XercesCName; library should use ICU for transcoding.

When building your own applications you need to make sure that you are linking your application with the &XercesC3WindowsLib;.lib (Release) and/or &XercesC3WindowsLib;D.lib (Debug) libraries (or the static versions of them) and also that the associated DLLs are somewhere in the executable/DLL search path (PATH).

If you are linking your application to the static &XercesCName; library, then you will need to compile your application with the XERCES_STATIC_LIBRARY preprocessor macro defined in order to turn off the DLL import/export mechanism.

If you would also like to build tests and/or samples, inside the solution files mentioned above, you'll find several other projects which are for the tests and samples. Select all the tests/samples that you would like to build and then right click on the selection. Choose "Build (selection only)" to build all the selected projects in one shot.

&XercesCName; source distribution comes with the Borland C++ makefiles. The following describes the steps you need to build &XercesCName; with this compiler.

  1. Change to the &XercesC3SrcInstallDir;\projects\Win32\BCC5\Xerces-all directory
  2. Run MakeBuildDirs.bat
  3. make -f Xerces-all.mak to build the library, examples, and tests.
xerces-c-3.1.1/doc/senumval.xml0000644000175000017500000001066711065665171015406 0ustar borisboris

SEnumVal shows how to enumerate the markup declarations in a Schema Grammar.

This program parses the specified XML file, then shows how to enumerate the contents of the Schema Grammar.

Usage: SEnumVal <XML file> This program parses a file, then shows how to enumerate the contents of the Schema Grammar. Essentially, shows how one can access the Schema information stored in internal data structures.

Here is a sample output from SEnumVal

cd &XercesC3InstallDir;/samples/data SEnumVal personal-schema.xml Name: personnel Model Type: Children Create Reason: Declared ContentType: OneOrMore Content Model: (person)+ ComplexType: TypeName: ,C0 ContentType: OneOrMore -------------------------------------------- Name: person Model Type: Children Create Reason: Declared ContentType: Sequence Content Model: (name,email*,url*,link?) ComplexType: TypeName: ,C1 ContentType: Sequence Attributes: Name: salary Type: CDATA Default Type: #IMPLIED Base Datatype: Decimal Facets: fractionDigits=0 Name: id Type: ID Default Type: #REQUIRED Base Datatype: ID Name: contr Type: CDATA Default Type: #DEFAULT Value: false Base Datatype: string Enumeration: true false Name: note Type: CDATA Default Type: #IMPLIED Base Datatype: string -------------------------------------------- Name: name Model Type: Children Create Reason: Declared ContentType: All Content Model: All(family,given) ComplexType: TypeName: ,C3 ContentType: All -------------------------------------------- Name: family Model Type: Simple Create Reason: Declared Base Datatype: string -------------------------------------------- Name: given Model Type: Simple Create Reason: Declared Base Datatype: string -------------------------------------------- Name: email Model Type: Simple Create Reason: Declared Base Datatype: string -------------------------------------------- Name: url Model Type: Empty Create Reason: Declared Content Model: EMPTY ComplexType: TypeName: ,C4 Attributes: Name: href Type: CDATA Default Type: #DEFAULT Value: http:// Base Datatype: string -------------------------------------------- Name: link Model Type: Empty Create Reason: Declared Content Model: EMPTY ComplexType: TypeName: ,C5 Attributes: Name: subordinates Type: IDREFS Default Type: #IMPLIED Base Datatype: List Name: manager Type: IDREF Default Type: #IMPLIED Base Datatype: IDREF --------------------------------------------
xerces-c-3.1.1/doc/Doxyfile0000644000175000017500000013327411362617414014535 0ustar borisboris# Doxyfile 1.3.4 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project # # All text after a hash (#) is considered a comment and will be ignored # The format is: # TAG = value [value, ...] # For lists items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (" ") #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # The PROJECT_NAME tag is a single word (or a sequence of words surrounded # by quotes) that should identify the project. PROJECT_NAME = Xerces-C++ # The PROJECT_NUMBER tag can be used to enter a project or revision number. # This could be handy for archiving the generated documentation or # if some version control system is used. PROJECT_NUMBER = 3.1.1 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. # If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. OUTPUT_DIRECTORY = html # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # The default language is English, other supported languages are: # Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, # Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en # (Japanese with English messages), Korean, Norwegian, Polish, Portuguese, # Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian. OUTPUT_LANGUAGE = English # This tag can be used to specify the encoding used in the generated output. # The encoding is not always determined by the language that is chosen, # but also whether or not the output is meant for Windows or non-Windows users. # In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES # forces the Windows encoding (this is the default for the Windows binary), # whereas setting the tag to NO uses a Unix-style encoding (the default for # all platforms other than Windows). USE_WINDOWS_ENCODING = NO # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will # include brief member descriptions after the members that are listed in # the file and class documentation (similar to JavaDoc). # Set to NO to disable this. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend # the brief description of a member or function before the detailed description. # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. REPEAT_BRIEF = YES # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # Doxygen will generate a detailed section even if there is only a brief # description. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited # members of a class in the documentation of that class as if those members were # ordinary class members. Constructors, destructors and assignment operators of # the base classes will not be shown. INLINE_INHERITED_MEMB = NO # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full # path before files name in the file list and in the header files. If set # to NO the shortest path that makes the file name unique will be used. FULL_PATH_NAMES = No # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag # can be used to strip a user-defined part of the path. Stripping is # only done if one of the specified strings matches the left-hand part of # the path. It is allowed to use relative paths in the argument list. STRIP_FROM_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter # (but less readable) file names. This can be useful is your file systems # doesn't support long names like on DOS, Mac, or CD-ROM. SHORT_NAMES = NO # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen # will interpret the first line (until the first dot) of a JavaDoc-style # comment as the brief description. If set to NO, the JavaDoc # comments will behave just like the Qt-style comments (thus requiring an # explict @brief command for a brief description. JAVADOC_AUTOBRIEF = YES # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen # treat a multi-line C++ special comment block (i.e. a block of //! or /// # comments) as a brief description. This used to be the default behaviour. # The new default is to treat a multi-line C++ comment block as a detailed # description. Set this tag to YES if you prefer the old behaviour instead. MULTILINE_CPP_IS_BRIEF = NO # If the DETAILS_AT_TOP tag is set to YES then Doxygen # will output the detailed description near the top, like JavaDoc. # If set to NO, the detailed description appears after the member # documentation. DETAILS_AT_TOP = NO # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented # member inherits the documentation from any documented member that it # reimplements. INHERIT_DOCS = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES, then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. DISTRIBUTE_GROUP_DOC = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. # Doxygen uses this value to replace tabs by spaces in code fragments. TAB_SIZE = 4 # This tag can be used to specify a number of aliases that acts # as commands in the documentation. An alias has the form "name=value". # For example adding "sideeffect=\par Side Effects:\n" will allow you to # put the command \sideeffect (or @sideeffect) in the documentation, which # will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. ALIASES = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources # only. Doxygen will then generate output that is more tailored for C. # For instance, some of the names that are used will be different. The list # of all members will be omitted, etc. OPTIMIZE_OUTPUT_FOR_C = NO # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources # only. Doxygen will then generate output that is more tailored for Java. # For instance, namespaces will be presented as packages, qualified scopes # will look different, etc. OPTIMIZE_OUTPUT_JAVA = NO # Set the SUBGROUPING tag to YES (the default) to allow class member groups of # the same type (for instance a group of public functions) to be put as a # subgroup of that type (e.g. under the Public Functions section). Set it to # NO to prevent subgrouping. Alternatively, this can be done per class using # the \nosubgrouping command. SUBGROUPING = YES #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in # documentation are documented, even if no documentation was available. # Private class members and static file members will be hidden unless # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES EXTRACT_ALL = YES # If the EXTRACT_PRIVATE tag is set to YES all private members of a class # will be included in the documentation. EXTRACT_PRIVATE = NO # If the EXTRACT_STATIC tag is set to YES all static members of a file # will be included in the documentation. EXTRACT_STATIC = NO # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) # defined locally in source files will be included in the documentation. # If set to NO only classes defined in header files are included. EXTRACT_LOCAL_CLASSES = YES # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all # undocumented members of documented classes, files or namespaces. # If set to NO (the default) these members will be included in the # various overviews, but no documentation section is generated. # This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. # If set to NO (the default) these classes will be included in the various # overviews. This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_CLASSES = NO # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all # friend (class|struct|union) declarations. # If set to NO (the default) these declarations will be included in the # documentation. HIDE_FRIEND_COMPOUNDS = NO # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any # documentation blocks found inside the body of a function. # If set to NO (the default) these blocks will be appended to the # function's detailed documentation block. HIDE_IN_BODY_DOCS = NO # The INTERNAL_DOCS tag determines if documentation # that is typed after a \internal command is included. If the tag is set # to NO (the default) then the documentation will be excluded. # Set it to YES to include the internal documentation. INTERNAL_DOCS = NO # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate # file names in lower-case letters. If set to YES upper-case letters are also # allowed. This is useful if you have classes or files whose names only differ # in case and if your file system supports case sensitive file names. Windows # users are advised to set this option to NO. CASE_SENSE_NAMES = YES # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen # will show members with their full class and namespace scopes in the # documentation. If set to YES the scope will be hidden. HIDE_SCOPE_NAMES = NO # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen # will put a list of the files that are included by a file in the documentation # of that file. SHOW_INCLUDE_FILES = NO # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] # is inserted in the documentation for inline members. INLINE_INFO = NO # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen # will sort the (detailed) documentation of file and class members # alphabetically by member name. If set to NO the members will appear in # declaration order. SORT_MEMBER_DOCS = YES # The GENERATE_TODOLIST tag can be used to enable (YES) or # disable (NO) the todo list. This list is created by putting \todo # commands in the documentation. GENERATE_TODOLIST = YES # The GENERATE_TESTLIST tag can be used to enable (YES) or # disable (NO) the test list. This list is created by putting \test # commands in the documentation. GENERATE_TESTLIST = YES # The GENERATE_BUGLIST tag can be used to enable (YES) or # disable (NO) the bug list. This list is created by putting \bug # commands in the documentation. GENERATE_BUGLIST = YES # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or # disable (NO) the deprecated list. This list is created by putting # \deprecated commands in the documentation. GENERATE_DEPRECATEDLIST= YES # The ENABLED_SECTIONS tag can be used to enable conditional # documentation sections, marked by \if sectionname ... \endif. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines # the initial value of a variable or define consists of for it to appear in # the documentation. If the initializer consists of more lines than specified # here it will be hidden. Use a value of 0 to hide initializers completely. # The appearance of the initializer of individual variables and defines in the # documentation can be controlled using \showinitializer or \hideinitializer # command in the documentation regardless of this setting. MAX_INITIALIZER_LINES = 30 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated # at the bottom of the documentation of classes and structs. If set to YES the # list will mention the files that were used to generate the documentation. SHOW_USED_FILES = YES #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated # by doxygen. Possible values are YES and NO. If left blank NO is used. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are # generated by doxygen. Possible values are YES and NO. If left blank # NO is used. WARNINGS = YES # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings # for undocumented members. If EXTRACT_ALL is set to YES then this flag will # automatically be disabled. WARN_IF_UNDOCUMENTED = YES # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as not documenting some # parameters in a documented function, or documenting parameters that # don't exist or using markup commands wrongly. WARN_IF_DOC_ERROR = YES # The WARN_FORMAT tag determines the format of the warning messages that # doxygen can produce. The string should contain the $file, $line, and $text # tags, which will be replaced by the file and line number from which the # warning originated and the warning text. WARN_FORMAT = "$file:$line: $text" # The WARN_LOGFILE tag can be used to specify a file to which warning # and error messages should be written. If left blank the output is written # to stderr. WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag can be used to specify the files and/or directories that contain # documented source files. You may enter file names like "myfile.cpp" or # directories like "/usr/src/myproject". Separate the files or directories # with spaces. INPUT = ../src/xercesc/dom \ ../src/xercesc/framework \ ../src/xercesc/framework/psvi \ ../src/xercesc/sax \ ../src/xercesc/parsers \ ../src/xercesc/util \ ../src/xercesc/sax2 # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank the following patterns are tested: # *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp # *.h++ *.idl *.odl *.cs *.php *.php3 *.inc FILE_PATTERNS = *.hpp # The RECURSIVE tag can be used to turn specify whether or not subdirectories # should be searched for input files as well. Possible values are YES and NO. # If left blank NO is used. RECURSIVE = NO # The EXCLUDE tag can be used to specify files and/or directories that should # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. EXCLUDE = # The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories # that are symbolic links (a Unix filesystem feature) are excluded from the input. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. EXCLUDE_PATTERNS = *Impl.hpp \ DOM_*.hpp \ DOMParser.hpp \ ChildNode.hpp \ DOM.hpp \ DomMemDebug.hpp \ MemDebug.hpp \ DStringPool.hpp \ NodeIDMap.hpp \ NameNodeFilter.hpp \ NodeVector.hpp \ DOMString.hpp \ ParentNode.hpp \ DOMCasts.hpp \ DOMChildNode.hpp \ DOMDeepNodeListPool.hpp \ DOMNodeIDMap.hpp \ DOMNodeVector.hpp \ DOMParentNode.hpp \ DOMStringPool.hpp \ NameIdPool.hpp \ KVStringPair.hpp \ Janitor.hpp \ BitOps.hpp \ BitSet.hpp \ CountedPointer.hpp \ TransENameMap.hpp \ EncodingValidator.hpp \ FlagJanitor.hpp \ Hashers.hpp \ KeyValuePair.hpp \ KeyRefPair.hpp \ KVStringPair.hpp \ NameIdPool.hpp \ NodeIDMap.hpp \ NameNodeFilter.hpp \ NodeVector.hpp \ BaseRefVectorOf.hpp \ RefArrayVectorOf.hpp \ RefArrayOf.hpp \ RefHash*.hpp \ RefStackOf.hpp \ RefVectorOf.hpp \ ValueHashTableOf.hpp \ ValueArrayOf.hpp \ ValueStackOf.hpp \ ValueVectorOf.hpp \ XML256TableTranscoder.hpp \ XML88591Transcoder.hpp \ XMLASCIITranscoder.hpp \ XMLBufferMgr.hpp \ XMLBuffer.hpp \ XMLChTranscoder.hpp \ XMLEBCDICTranscoder.hpp \ XMLEnumerator.hpp \ XMLExceptMsgs.hpp \ XMLIBM1140Transcoder.hpp \ XMLMsgLoader.hpp \ Mutexes.hpp \ XMLPScanToken.hpp \ XMLRecognizer.hpp \ XMLRefInfo.hpp \ StringPool.hpp \ XMLUCS4Transcoder.hpp \ XMLUTF16Transcoder.hpp \ XMLUTF8Transcoder.hpp \ XMLWin1252Transcoder.hpp \ XercesVersion.hpp # The EXAMPLE_PATH tag can be used to specify one or more files or # directories that contain example code fragments that are included (see # the \include command). EXAMPLE_PATH = # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank all files are included. EXAMPLE_PATTERNS = # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude # commands irrespective of the value of the RECURSIVE tag. # Possible values are YES and NO. If left blank NO is used. EXAMPLE_RECURSIVE = NO # The IMAGE_PATH tag can be used to specify one or more files or # directories that contain image that are included in the documentation (see # the \image command). IMAGE_PATH = # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command , where # is the value of the INPUT_FILTER tag, and is the name of an # input file. Doxygen will then use the output that the filter program writes # to standard output. INPUT_FILTER = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will be used to filter the input files when producing source # files to browse (i.e. when SOURCE_BROWSER is set to YES). FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will # be generated. Documented entities will be cross-referenced with these sources. SOURCE_BROWSER = NO # Setting the INLINE_SOURCES tag to YES will include the body # of functions and classes directly in the documentation. INLINE_SOURCES = NO # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct # doxygen to hide any special comment blocks from generated source code # fragments. Normal C and C++ comments will always remain visible. STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES (the default) # then for each documented function all documented # functions referencing it will be listed. REFERENCED_BY_RELATION = YES # If the REFERENCES_RELATION tag is set to YES (the default) # then for each documented function all documented entities # called/used by that function will be listed. REFERENCES_RELATION = YES # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen # will generate a verbatim copy of the header file for each class for # which an include is specified. Set to NO to disable this. VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index # of all compounds will be generated. Enable this if the project # contains a lot of classes, structs, unions or interfaces. ALPHABETICAL_INDEX = YES # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns # in which this list will be split (can be a number in the range [1..20]) COLS_IN_ALPHA_INDEX = 2 # In case all classes in a project start with a common prefix, all # classes will be put under the same header in the alphabetical index. # The IGNORE_PREFIX tag can be used to specify one or more prefixes that # should be ignored while generating the index headers. IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES (the default) Doxygen will # generate HTML output. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `html' will be used as the default path. HTML_OUTPUT = apiDocs-3 # The HTML_FILE_EXTENSION tag can be used to specify the file extension for # each generated HTML page (for example: .htm,.php,.asp). If it is left blank # doxygen will generate files with .html extension. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a personal HTML header for # each generated HTML page. If it is left blank doxygen will generate a # standard header. HTML_HEADER = # The HTML_FOOTER tag can be used to specify a personal HTML footer for # each generated HTML page. If it is left blank doxygen will generate a # standard footer. HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading # style sheet that is used by each HTML page. It can be used to # fine-tune the look of the HTML output. If the tag is left blank doxygen # will generate a default style sheet HTML_STYLESHEET = # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, # files or namespaces will be aligned in HTML using tables. If set to # NO a bullet list will be used. HTML_ALIGN_MEMBERS = YES # If the GENERATE_HTMLHELP tag is set to YES, additional index files # will be generated that can be used as input for tools like the # Microsoft HTML help workshop to generate a compressed HTML help file (.chm) # of the generated HTML documentation. GENERATE_HTMLHELP = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can # be used to specify the file name of the resulting .chm file. You # can add a path in front of the file if the result should not be # written to the html output dir. CHM_FILE = # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can # be used to specify the location (absolute path including file name) of # the HTML help compiler (hhc.exe). If non-empty doxygen will try to run # the HTML help compiler on the generated index.hhp. HHC_LOCATION = # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag # controls if a separate .chi index file is generated (YES) or that # it should be included in the master .chm file (NO). GENERATE_CHI = NO # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag # controls whether a binary table of contents is generated (YES) or a # normal table of contents (NO) in the .chm file. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members # to the contents of the HTML help documentation and to the tree view. TOC_EXPAND = NO # The DISABLE_INDEX tag can be used to turn on/off the condensed index at # top of each HTML page. The value NO (the default) enables the index and # the value YES disables it. DISABLE_INDEX = NO # This tag can be used to set the number of enum values (range [1..20]) # that doxygen will group on one line in the generated HTML documentation. ENUM_VALUES_PER_LINE = 4 # If the GENERATE_TREEVIEW tag is set to YES, a side panel will be # generated containing a tree-like index structure (just like the one that # is generated for HTML Help). For this to work a browser that supports # JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, # Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are # probably better off using the HTML help feature. GENERATE_TREEVIEW = NO # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be # used to set the initial width (in pixels) of the frame in which the tree # is shown. TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will # generate Latex output. GENERATE_LATEX = NO # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `latex' will be used as the default path. LATEX_OUTPUT = latex # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be # invoked. If left blank `latex' will be used as the default command name. LATEX_CMD_NAME = latex # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to # generate index for LaTeX. If left blank `makeindex' will be used as the # default command name. MAKEINDEX_CMD_NAME = makeindex # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact # LaTeX documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_LATEX = NO # The PAPER_TYPE tag can be used to set the paper type that is used # by the printer. Possible values are: a4, a4wide, letter, legal and # executive. If left blank a4wide will be used. PAPER_TYPE = a4wide # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX # packages that should be included in the LaTeX output. EXTRA_PACKAGES = # The LATEX_HEADER tag can be used to specify a personal LaTeX header for # the generated latex document. The header should contain everything until # the first chapter. If it is left blank doxygen will generate a # standard header. Notice: only use this tag if you know what you are doing! LATEX_HEADER = # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated # is prepared for conversion to pdf (using ps2pdf). The pdf file will # contain links (just like the HTML output) instead of page references # This makes the output suitable for online browsing using a pdf viewer. PDF_HYPERLINKS = NO # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of # plain latex in the generated Makefile. Set this option to YES to get a # higher quality PDF documentation. USE_PDFLATEX = NO # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. # command to the generated LaTeX files. This will instruct LaTeX to keep # running if errors occur, instead of asking the user for help. # This option is also used when generating formulas in HTML. LATEX_BATCHMODE = NO # If LATEX_HIDE_INDICES is set to YES then doxygen will not # include the index chapters (such as File Index, Compound Index, etc.) # in the output. LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output # The RTF output is optimised for Word 97 and may not look very pretty with # other RTF readers or editors. GENERATE_RTF = NO # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `rtf' will be used as the default path. RTF_OUTPUT = rtf # If the COMPACT_RTF tag is set to YES Doxygen generates more compact # RTF documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_RTF = NO # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated # will contain hyperlink fields. The RTF file will # contain links (just like the HTML output) instead of page references. # This makes the output suitable for online browsing using WORD or other # programs which support those fields. # Note: wordpad (write) and others do not support links. RTF_HYPERLINKS = NO # Load stylesheet definitions from file. Syntax is similar to doxygen's # config file, i.e. a series of assigments. You only have to provide # replacements, missing definitions are set to their default value. RTF_STYLESHEET_FILE = # Set optional variables used in the generation of an rtf document. # Syntax is similar to doxygen's config file. RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- # If the GENERATE_MAN tag is set to YES (the default) Doxygen will # generate man pages GENERATE_MAN = NO # The MAN_OUTPUT tag is used to specify where the man pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `man' will be used as the default path. MAN_OUTPUT = man # The MAN_EXTENSION tag determines the extension that is added to # the generated man pages (default is the subroutine's section .3) MAN_EXTENSION = .3 # If the MAN_LINKS tag is set to YES and Doxygen generates man output, # then it will generate one additional man file for each entity # documented in the real man page(s). These additional files # only source the real man page, but without them the man command # would be unable to find the correct page. The default is NO. MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- # If the GENERATE_XML tag is set to YES Doxygen will # generate an XML file that captures the structure of # the code including all documentation. Note that this # feature is still experimental and incomplete at the # moment. GENERATE_XML = NO # The XML_OUTPUT tag is used to specify where the XML pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `xml' will be used as the default path. XML_OUTPUT = xml # The XML_SCHEMA tag can be used to specify an XML schema, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_SCHEMA = # The XML_DTD tag can be used to specify an XML DTD, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_DTD = #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will # generate an AutoGen Definitions (see autogen.sf.net) file # that captures the structure of the code including all # documentation. Note that this feature is still experimental # and incomplete at the moment. GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- # If the GENERATE_PERLMOD tag is set to YES Doxygen will # generate a Perl module file that captures the structure of # the code including all documentation. Note that this # feature is still experimental and incomplete at the # moment. GENERATE_PERLMOD = NO # If the PERLMOD_LATEX tag is set to YES Doxygen will generate # the necessary Makefile rules, Perl scripts and LaTeX code to be able # to generate PDF and DVI output from the Perl module output. PERLMOD_LATEX = NO # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be # nicely formatted so it can be parsed by a human reader. This is useful # if you want to understand what is going on. On the other hand, if this # tag is set to NO the size of the Perl module output will be much smaller # and Perl will parse it just the same. PERLMOD_PRETTY = YES # The names of the make variables in the generated doxyrules.make file # are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. # This is useful so different doxyrules.make files included by the same # Makefile don't overwrite each other's variables. PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will # evaluate all C-preprocessor directives found in the sources and include # files. ENABLE_PREPROCESSING = YES # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro # names in the source code. If set to NO (the default) only conditional # compilation will be performed. Macro expansion can be done in a controlled # way by setting EXPAND_ONLY_PREDEF to YES. MACRO_EXPANSION = YES # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES # then the macro expansion is limited to the macros specified with the # PREDEFINED and EXPAND_AS_PREDEFINED tags. EXPAND_ONLY_PREDEF = NO # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files # in the INCLUDE_PATH (see below) will be search if a #include is found. SEARCH_INCLUDES = YES # The INCLUDE_PATH tag can be used to specify one or more directories that # contain include files that are not input files but should be processed by # the preprocessor. INCLUDE_PATH = # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard # patterns (like *.h and *.hpp) to filter out the header-files in the # directories. If left blank, the patterns specified with FILE_PATTERNS will # be used. INCLUDE_FILE_PATTERNS = # The PREDEFINED tag can be used to specify one or more macro names that # are defined before the preprocessor is started (similar to the -D option of # gcc). The argument of the tag is a list of macros of the form: name # or name=definition (no spaces). If the definition and the = are # omitted =1 is assumed. PREDEFINED = # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then # this tag can be used to specify a list of macro names that should be expanded. # The macro definition that is found in the sources will be used. # Use the PREDEFINED tag if you want to use a different macro definition. EXPAND_AS_DEFINED = # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then # doxygen's preprocessor will remove all function-like macros that are alone # on a line, have an all uppercase name, and do not end with a semicolon. Such # function macros are typically used for boiler-plate code, and will confuse the # parser if not removed. SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::addtions related to external references #--------------------------------------------------------------------------- # The TAGFILES option can be used to specify one or more tagfiles. # Optionally an initial location of the external documentation # can be added for each tagfile. The format of a tag file without # this location is as follows: # TAGFILES = file1 file2 ... # Adding location for the tag files is done as follows: # TAGFILES = file1=loc1 "file2 = loc2" ... # where "loc1" and "loc2" can be relative or absolute paths or # URLs. If a location is present for each tag, the installdox tool # does not have to be run to correct the links. # Note that each tag file must have a unique name # (where the name does NOT include the path) # If a tag file is not located in the directory in which doxygen # is run, you must also specify the path to the tagfile here. TAGFILES = # When a file name is specified after GENERATE_TAGFILE, doxygen will create # a tag file that is based on the input files it reads. GENERATE_TAGFILE = # If the ALLEXTERNALS tag is set to YES all external classes will be listed # in the class index. If set to NO only the inherited external classes # will be listed. ALLEXTERNALS = NO # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed # in the modules index. If set to NO, only the current project's groups will # be listed. EXTERNAL_GROUPS = YES # The PERL_PATH should be the absolute path and name of the perl script # interpreter (i.e. the result of `which perl'). PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base or # super classes. Setting the tag to NO turns the diagrams off. Note that this # option is superceded by the HAVE_DOT option below. This is only a fallback. It is # recommended to install and use dot, since it yields more powerful graphs. CLASS_DIAGRAMS = YES # If set to YES, the inheritance and collaboration graphs will hide # inheritance and usage relations if the target is undocumented # or is not a class. HIDE_UNDOC_RELATIONS = YES # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is # available from the path. This tool is part of Graphviz, a graph visualization # toolkit from AT&T and Lucent Bell Labs. HAVE_DOT = NO # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect inheritance relations. Setting this tag to YES will force the # the CLASS_DIAGRAMS tag to NO. CLASS_GRAPH = YES # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect implementation dependencies (inheritance, containment, and # class references variables) of the class with other documented classes. COLLABORATION_GRAPH = NO # If the UML_LOOK tag is set to YES doxygen will generate inheritance and # collaboration diagrams in a style similiar to the OMG's Unified Modeling # Language. UML_LOOK = NO # If set to YES, the inheritance and collaboration graphs will show the # relations between templates and their instances. TEMPLATE_RELATIONS = NO # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT # tags are set to YES then doxygen will generate a graph for each documented # file showing the direct and indirect include dependencies of the file with # other documented files. INCLUDE_GRAPH = YES # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and # HAVE_DOT tags are set to YES then doxygen will generate a graph for each # documented header file showing the documented files that directly or # indirectly include this file. INCLUDED_BY_GRAPH = YES # If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will # generate a call dependency graph for every global function or class method. # Note that enabling this option will significantly increase the time of a run. # So in most cases it will be better to enable call graphs for selected # functions only using the \callgraph command. CALL_GRAPH = NO # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen # will graphical hierarchy of all classes instead of a textual one. GRAPHICAL_HIERARCHY = YES # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. Possible values are png, jpg, or gif # If left blank png will be used. DOT_IMAGE_FORMAT = png # The tag DOT_PATH can be used to specify the path where the dot tool can be # found. If left blank, it is assumed the dot tool can be found on the path. DOT_PATH = # The DOTFILE_DIRS tag can be used to specify one or more directories that # contain dot files that are included in the documentation (see the # \dotfile command). DOTFILE_DIRS = # The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width # (in pixels) of the graphs generated by dot. If a graph becomes larger than # this value, doxygen will try to truncate the graph, so that it fits within # the specified constraint. Beware that most browsers cannot cope with very # large images. MAX_DOT_GRAPH_WIDTH = 1024 # The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height # (in pixels) of the graphs generated by dot. If a graph becomes larger than # this value, doxygen will try to truncate the graph, so that it fits within # the specified constraint. Beware that most browsers cannot cope with very # large images. MAX_DOT_GRAPH_HEIGHT = 1024 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the # graphs generated by dot. A depth value of 3 means that only nodes reachable # from the root by following a path via at most 3 edges will be shown. Nodes that # lay further from the root node will be omitted. Note that setting this option to # 1 or 2 may greatly reduce the computation time needed for large code bases. Also # note that a graph may be further truncated if the graph's image dimensions are # not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT). # If 0 is used for the depth value (the default), the graph is not depth-constrained. MAX_DOT_GRAPH_DEPTH = 0 # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will # generate a legend page explaining the meaning of the various boxes and # arrows in the dot generated graphs. GENERATE_LEGEND = YES # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will # remove the intermediate dot files that are used to generate # the various graphs. DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::addtions related to the search engine #--------------------------------------------------------------------------- # The SEARCHENGINE tag specifies whether or not a search engine should be # used. If set to NO the values of all tags below this one will be ignored. SEARCHENGINE = NO xerces-c-3.1.1/doc/domcount.xml0000644000175000017500000000541111065665171015373 0ustar borisboris

DOMCount uses the provided DOM API to parse an XML file, construct the DOM tree and walk through the tree counting the elements (using just one API call).

The DOMCount sample parses an XML file and prints out the number of elements in the file. To run DOMCount, enter the following

DOMCount <XML file>

The following parameters may be set from the command line

Usage: DOMCount [options] <XML file | List file> This program invokes the DOMLSParser, builds the DOM tree, and then prints the number of elements found in each XML file. Options: -l Indicate the input file is a List File that has a list of xml files. Default to off (Input file is an XML file). -v=xxx Validation scheme [always | never | auto*]. -n Enable namespace processing. Defaults to off. -s Enable schema processing. Defaults to off. -f Enable full schema constraint checking. Defaults to off. -locale=ll_CC specify the locale, default: en_US -p Print out names of elements and attributes encountered. -? Show this help. * = Default if not provided explicitly.

-v=always will force validation
-v=never will not use any validation
-v=auto will validate if a DOCTYPE declaration or a schema declaration is present in the XML document

Here is a sample output from DOMCount

cd &XercesC3InstallDir;/samples/data DOMCount -v=always personal.xml personal.xml: 20 ms (37 elems) The time reported by the system may be different, depending on your processor speed.
xerces-c-3.1.1/doc/sax2print.xml0000644000175000017500000001204511274310172015464 0ustar borisboris

SAX2Print uses the SAX2 APIs to parse an XML file and print it back. Do note that the output of this sample is not exactly the same as the input (in terms of whitespaces, first line), but the output has the same information content as the input.

The SAX2Print sample parses an XML file and prints out the contents again in XML (some loss occurs). To run SAX2Print, enter the following

SAX2Print <XML file>

The following parameters may be set from the command line

Usage: SAX2Print [options] <XML file> This program invokes the SAX2XMLReader, and then prints the data returned by the various SAX2 handlers for the specified XML file. Options: -u=xxx Handle unrepresentable chars [fail | rep | ref*]. -v=xxx Validation scheme [always | never | auto*]. -e Expand Namespace Alias with URI's. -x=XXX Use a particular encoding for output (LATIN1*). -f Enable full schema constraint checking processing. Defaults to off. -p Enable namespace-prefixes feature. Defaults to off.\n" -n Disable namespace processing. Defaults to on.\n" NOTE: THIS IS OPPOSITE FROM OTHER SAMPLES.\n" -s Disable schema processing. Defaults to on. NOTE: THIS IS OPPOSITE FROM OTHER SAMPLES. -? Show this help. * = Default if not provided explicitly. The parser has intrinsic support for the following encodings: UTF-8, US-ASCII, ISO8859-1, UTF-16[BL]E, UCS-4[BL]E, WINDOWS-1252, IBM1140, IBM037, IBM1047.

-u=fail will fail when unrepresentable characters are encountered
-u=rep will replace with the substitution character for that codepage
-u=ref will report the character as a reference

-v=always will force validation
-v=never will not use any validation
-v=auto will validate if a DOCTYPE declaration or a schema declaration is present in the XML document

Here is a sample output from SAX2Print

cd &XercesC3InstallDir;/samples/data SAX2Print -v=always personal.xml <?xml version="1.0" encoding="LATIN1"?> <personnel> <person id="Big.Boss"> <name><family>Boss</family> <given>Big</given></name> <email>chief@foo.com</email> <link subordinates="one.worker two.worker three.worker four.worker five.worker"></link> </person> <person id="one.worker"> <name><family>Worker</family> <given>One</given></name> <email>one@foo.com</email> <link manager="Big.Boss"></link> </person> <person id="two.worker"> <name><family>Worker</family> <given>Two</given></name> <email>two@foo.com</email> <link manager="Big.Boss"></link> </person> <person id="three.worker"> <name><family>Worker</family> <given>Three</given></name> <email>three@foo.com</email> <link manager="Big.Boss"></link> </person> <person id="four.worker"> <name><family>Worker</family> <given>Four</given></name> <email>four@foo.com</email> <link manager="Big.Boss"></link> </person> <person id="five.worker"> <name><family>Worker</family> <given>Five</given></name> <email>five@foo.com</email> <link manager="Big.Boss"></link> </person> </personnel> SAX2Print does not reproduce the original XML file. SAX2Print and DOMPrint produce different results because of the way the two APIs store data and capture events.
xerces-c-3.1.1/doc/memparse.xml0000644000175000017500000001026411065665171015356 0ustar borisboris

MemParse uses the SAX Parser to parse a memory buffer containing XML statements, and reports the number of elements and attributes found.

This program uses the SAX Parser to parse a memory buffer containing XML statements, and reports the number of elements and attributes found.

The following parameters may be set from the command line

Usage: MemParse [options] This program uses the SAX Parser to parse a memory buffer containing XML statements, and reports the number of elements and attributes found. Options: -v=xxx Validation scheme [always | never | auto*]. -n Enable namespace processing. Defaults to off. -s Enable schema processing. Defaults to off. -f Enable full schema constraint checking. Defaults to off. -? Show this help. * = Default if not provided explicitly.

-v=always will force validation
-v=never will not use any validation
-v=auto will validate if a DOCTYPE declaration or a schema declaration is present in the XML document

Here is a sample output from MemParse

MemParse -v=always

The output is the following:

Finished parsing the memory buffer containing the following XML statements: <?xml version='1.0' encoding='ascii'?> <!DOCTYPE company [ <!ELEMENT company (product,category,developedAt)> <!ELEMENT product (#PCDATA)> <!ELEMENT category (#PCDATA)> <!ATTLIST category idea CDATA #IMPLIED> <!ELEMENT developedAt (#PCDATA)> ]> <company> <product>XML4C</product> <category idea='great'>XML Parsing Tools</category> <developedAt> IBM Center for Java Technology, Silicon Valley, Cupertino, CA </developedAt> </company> Parsing took 10 ms (4 elements, 1 attributes, 16 spaces, 95 characters).

Running MemParse with the validating parser gives a different result because ignorable white-space is counted separately from regular characters.

MemParse -v=never

The output is the following:

Finished parsing the memory buffer containing the following XML statements: <?xml version='1.0' encoding='ascii'?> <!DOCTYPE company [ <!ELEMENT company (product,category,developedAt)> <!ELEMENT product (#PCDATA)> <!ELEMENT category (#PCDATA)> <!ATTLIST category idea CDATA #IMPLIED> <!ELEMENT developedAt (#PCDATA)> ]> <company> <product>XML4C</product> <category idea='great'>XML Parsing Tools</category> <developedAt> IBM Center for Java Technology, Silicon Valley, Cupertino, CA </developedAt> </company> Parsing took 10 ms (4 elements, 1 attributes, 0 spaces, 111 characters).

Note that the sum of spaces and characters in both versions is the same.

The time reported by the system may be different, depending on your processor speed.
xerces-c-3.1.1/doc/stdinparse.xml0000644000175000017500000000576611065665171015734 0ustar borisboris

StdInParse demonstrates streaming XML data from standard input.

The StdInParse sample parses an XML file from standard input and prints out the number of elements in the file. To run StdInParse, enter the following:

StdInParse < <XML file>

The following parameters may be set from the command line

Usage: StdInParse [options] < <XML file> This program demonstrates streaming XML data from standard input. It then uses the SAX Parser, and prints the number of elements, attributes, spaces and characters found in the input, using SAX API. Options: -v=xxx Validation scheme [always | never | auto*]. -n Enable namespace processing. Defaults to off. -s Enable schema processing. Defaults to off. -f Enable full schema constraint checking. Defaults to off. -? Show this help. * = Default if not provided explicitly.

-v=always will force validation
-v=never will not use any validation
-v=auto will validate if a DOCTYPE declaration or a schema declaration is present in the XML document

Make sure that you run StdInParse in the samples/data directory.

Here is a sample output from StdInParse:

cd &XercesC3InstallDir;/samples/data StdInParse -v=always < personal.xml stdin: 10 ms (37 elems, 12 attrs, 0 spaces, 268 chars)

Running StdInParse with the validating parser gives a different result because ignorable white-space is counted separately from regular characters.

StdInParse -v=never < personal.xml stdin: 10 ms (37 elems, 12 attrs, 0 spaces, 268 chars)

Note that the sum of spaces and characters in both versions is the same.

The time reported by the program may be different depending on your processor speed.
xerces-c-3.1.1/doc/createdoc.xml0000644000175000017500000000311011065665171015466 0ustar borisboris

The CreateDOMDocument example illustrates how you can create a DOM tree in memory from scratch. It then reports the number of elements in the tree that was just created.

The CreateDOMDocument sample illustrates how you can create a DOM tree in memory from scratch. To run CreateDOMDocument, enter the following

CreateDOMDocument

Here is a sample output from CreateDOMDocument

CreateDOMDocument The tree just created contains: 4 elements.
xerces-c-3.1.1/doc/style/0000755000175000017500000000000011363617317014160 5ustar borisborisxerces-c-3.1.1/doc/style/loader.xml0000644000175000017500000000037607430052530016144 0ustar borisboris xerces-c-3.1.1/doc/style/dtd/0000755000175000017500000000000011363617317014733 5ustar borisborisxerces-c-3.1.1/doc/style/dtd/faqs.dtd0000644000175000017500000000074707432541525016371 0ustar borisboris %blocksEntity; xerces-c-3.1.1/doc/style/dtd/markup.ent0000644000175000017500000000121611244775400016736 0ustar borisboris %externalEntity; %charEntity; %linksEntity; xerces-c-3.1.1/doc/style/dtd/book.dtd0000644000175000017500000000306310760560046016360 0ustar borisboris %externalEntity; xerces-c-3.1.1/doc/style/dtd/characters.ent0000644000175000017500000010034707432541525017566 0ustar borisboris xerces-c-3.1.1/doc/style/dtd/links.ent0000644000175000017500000000124307432541525016562 0ustar borisboris xerces-c-3.1.1/doc/style/dtd/blocks.ent0000644000175000017500000000150307432541525016716 0ustar borisboris %markupEntity; xerces-c-3.1.1/doc/style/dtd/changes.dtd0000644000175000017500000000116007432541525017035 0ustar borisboris %markupEntity; xerces-c-3.1.1/doc/style/dtd/entities.ent0000644000175000017500000000331211362617414017263 0ustar borisboris xerces-c-3.1.1/doc/style/dtd/document.dtd0000644000175000017500000000100207432541525017236 0ustar borisboris %blocksEntity; xerces-c-3.1.1/doc/style/graphics/0000755000175000017500000000000011363617317015760 5ustar borisborisxerces-c-3.1.1/doc/style/graphics/button-a.gif0000644000175000017500000000026307430052530020167 0ustar borisborisGIF89ax ³™xx­ŒŒ­¬Á¤¤Ò¬ŸŸyppxooe]]d\\!ù,x @`°˜@«½8ëÍ»ÿ`‡(Ò`žhª®lë¾p,»Â‘”'¡Ï|ïÿ@ÔH*Ȥˆd@@pJ­öj·¦uËí²°D¥xL.µÞ´ºzv>¥ë¸œÕFEáó¼ŒÖûõ|‚yX;xerces-c-3.1.1/doc/style/graphics/section.gif0000644000175000017500000000020510760560046020104 0ustar borisborisGIF87axÂiiijjj}}}~~~•••–––±±±×××,xRxFÜþ0ÊI«½˜–Tþ`(Žç‘hªª[·¬p,OpÎx®Ö·îÿÞ H,B„Æd©lúZ=§N¯©*v‹Òr¿ /xl“Ï3zÍP³Ñ­;xerces-c-3.1.1/doc/style/graphics/button-b.gif0000644000175000017500000000023207430052530020164 0ustar borisborisGIF89ax ³×××±±±–––•••~~~}}}jjjiii,x O„A«½8ëÍ»ÿ`WRhžhªŠä´¾p,¥lßøF»TàçÀ`jgù„Ȥ®UŽÊ¨R@0Ô*O¨t ¤ZyÜ0Ò{›sdðyK³ßíj;xerces-c-3.1.1/doc/style/resources/0000755000175000017500000000000011363617317016172 5ustar borisborisxerces-c-3.1.1/doc/style/resources/bottom.gif0000644000175000017500000000206307430052530020154 0ustar borisborisGIF89a¨÷ÓÔÕIF|M‚ÌÏÑR†[ŽV‰c•`’_‘ÔØÚ¥§¨mk›išh™g˜e–Îäîíöúw¦v¥u¤t£s¢r¡q pŸožn ˆ±»×⟮´ñøû®€­¬~«}ª|©{¨x¦x¥iŽk‘•Èf‰b…^€ ¨á«å¬æ«á n“Џ q˜±çl‹ nŒD¾ë;œvÐñZ”©u¸Ðu·Ïo›¬£Óä²Úè¸ÝꢽÇÓêòÙíôØìóÚíôÞïõžÓ‰µ‡³…²†²…±ƒ°„¯‚¯~¨{¤vgЍâ’Ây¢vžsšr™‡´šÌ™Ë–Çm’£Ù‡³€«ˆ³›Í‰´ ‹¶¥Ø Œ¶ i‰Ž·¸‘¹’º”» •¼!–¼#—½$—½&˜½*š¿3³Ý-›À0À/•·3žÁ4ŸÂ6 Â8¡Ã;¢Ä3ˆ¥>£Å;š»?¤ÅB¥ÆD¦ÇF§ÇH¨ÈJªÉN«ÊQ¬ÊT®ËV¯ÌY°Í]²Î`´ÏcµÐdµÐe¶Ðg·Ñi¸Òl¹Óo»Ôr¼Ôt½Õu¾Õw¾Öy¿×†Ðé|Á×~ÂØ€ÃÙ‚ÄÙ†ÅÙt¨ºŠÇ܉ÇÛÉÝ‘ËÞ”Ìß“ÌÞ˜Îà™Ïà™ÍßžÑâ¨Öå«×æª×å®Ù献¹°Úç´Ûè¶Üé¹Þêk€‡ºÞê¾âî½àëš´½ÄãíÇäîÊæïÌçðÎèðÐéñÖìóÕëò·ÉÏÛîôÜîôåôùâñöËÔ×î÷úmpqæìî’º¹¶ÁâìÒêñßðõåó÷ëöùšÀ™¿–½éõøöûüúýýijjýþþÙÚÚ¾¿¿ÿÿÿòòò×××ÕÕÕÐÐÐÏÏÏÊÊÊÅÅÅ»»»···µµµ²²²±±±­­­©©©§§§¥¥¥   ™™™–––•••‘‘‘ŠŠŠ†††~~~}}}yyyrrrnnnjjjiii,¨ÿ¡H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£ÇÁˆI²¤É“(Sª\ɲ¥Ë—0c¶襦͛8sêÜɳ§ÏŸ@ƒ J(/ “*]š)O¡D µªT«T¯jÍʫ׭_»‚+¶lسdÑŠ=J³-Û·HáºKw®]¹xëæ½«·/ß¿{û x0ÓÈ?tª¶qÚÇf!;ŽLy²eɘ£Þ<¸sáÏœA{Mz´é»ŠS«VÍ8óåÊ®cÞýº¶ì§K‹Þ­»wîß¼ã]M¼xÓÛÈi'·­¼9sǾƒKN]¸õé¹kߎ±¨÷ïàË>†ùóèÓ«_Ͼ½û÷ðãËŸO¿þü€;xerces-c-3.1.1/doc/style/resources/logo.gif0000644000175000017500000000622707430052530017616 0ustar borisborisGIF89a‡<÷ÓÔÕIF|M‚ÌÏÑR†[ŽV‰c•`’_‘ÔØÚ¥§¨mk›išh™g˜e–Îäîíöúw¦v¥u¤t£s¢r¡q pŸožn ˆ±»×⟮´ñøû®€­¬~«}ª|©{¨x¦x¥iŽk‘•Èf‰b…^€ ¨á«å¬æ«á n“Џ q˜±çl‹ nŒD¾ë;œvÐñZ”©u¸Ðu·Ïo›¬£Óä²Úè¸ÝꢽÇÓêòÙíôØìóÚíôÞïõžÓ‰µ‡³…²†²…±ƒ°„¯‚¯~¨{¤vgЍâ’Ây¢vžsšr™‡´šÌ™Ë–Çm’£Ù‡³€«ˆ³›Í‰´ ‹¶¥Ø Œ¶ i‰Ž·¸‘¹’º”» •¼!–¼#—½$—½&˜½*š¿3³Ý-›À0À/•·3žÁ4ŸÂ6 Â8¡Ã;¢Ä3ˆ¥>£Å;š»?¤ÅB¥ÆD¦ÇF§ÇH¨ÈJªÉN«ÊQ¬ÊT®ËV¯ÌY°Í]²Î`´ÏcµÐdµÐe¶Ðg·Ñi¸Òl¹Óo»Ôr¼Ôt½Õu¾Õw¾Öy¿×†Ðé|Á×~ÂØ€ÃÙ‚ÄÙ†ÅÙt¨ºŠÇ܉ÇÛÉÝ‘ËÞ”Ìß“ÌÞ˜Îà™Ïà™ÍßžÑâ¨Öå«×æª×å®Ù献¹°Úç´Ûè¶Üé¹Þêk€‡ºÞê¾âî½àëš´½ÄãíÇäîÊæïÌçðÎèðÐéñÖìóÕëò·ÉÏÛîôÜîôåôùâñöËÔ×î÷úmpqæìî’º¹¶ÁâìÒêñßðõåó÷ëöùšÀ™¿–½éõøöûüúýýijjýþþÙÚÚ¾¿¿ÿÿÿòòò×××ÕÕÕÐÐÐÏÏÏÊÊÊÅÅÅ»»»···µµµ²²²±±±­­­©©©§§§¥¥¥   ™™™–––•••‘‘‘ŠŠŠ†††~~~}}}yyyrrrnnnjjjiii,‡<ÿÁ §Ë4*\Ȱ¡Ã‡#JœH±¢E‡‘ù¨A† 0 CŠI²¤É“(Sª\ɲeIp³€Ñrã ”›8sêÜɳ§ÏŸ@ƒ J”'8Y\¨)Ê´©Ó§Pu‚ñòsª®`–FÝʵkÔ©PÀÜv¬d´x]˶mO°P¨Æ½Iu*&7ÜêÝÛî[/9ÐØäK¸0Q°d›¥AÖ°ãÇ;áÊÖ cž›X±Út“3Ϲ6m¢¹4S¿<§^æyèNϰMË.Šx¬íÊ«w¶ÆzS®›½]Ïþ—®ñ¹ªëÜݹùgâЋûLÞ“ùóë½IGß^»¬wêÛÃCÿ•|¼®eå@çˆÞ$¼óúÑ9Õ‹nÓï\¬Ú‹ÖNIôë÷þéÔˆhn¸çÙg¢5ÅëÍážvB¡ÙyD™2P09 4Ðo7Y(†8¹Œ†àh'‡¹„‰*ê4Ç2àÄ%)xÓ†Ÿ $܉‡Õu[bµ8C‚ãàDn#8{Ü4d‘GBÁŠ@¦4²d™Áp€<Ð@x°Atp*¨PAçN”ÀÁ擾›eß¼S `ð€¨=À Dà@8{¡7¯B ¨`B%$9 $¿Voœõ¶ï‚¦lbJ“Íe·àf¦|¢ÙÌ8 Ü¿ò9! Jgìî ˆž¦W½È-·kÀT° ¤ HÁøF¤Àâ»@ Ô•Øxæ}ïƒB 93³¯¬5&û­l†8û8'‰4£ }hÛ 'Q°Â^ „b,ÀçøF~ÀJùÔTÉô¦;ýéPºÔ92TÍiOƒZÔ¤6µ¬iÍê[¿Z×M¦K ­Ð‚ÃèPG:Ò¡tœc|h ±le3ÛÙЖv±ìe7ûÙÑfÊ´¹míogÛÍbiLÆÐe|ƒðpÇ<æáŽx»#|ƒ£iügv»Þò¦·½ñ­oCÏð&ën÷»ã=ïz»ãÞùÞ7û­p€7|à7øŽ/=.¼  ¯‡ÈG.r{ÌB bÿh°¡Ðñ‡œä#79ÊUŽê›´äð†yÌOžrœùæ/×¹Ì{¾rLU¡B0GÎ×!r¦×ƒéöøÇÈðŒ =éKoºÖ£>õªåêJ‡ÇÓµ>v®SÝêHûØ×u©Ÿ=(ÞÚÂÇÑ!v‘çÃîvÇ?p±µÜ r/ÝG~÷z>zç»ß ø¹×Ýðx7|âûÞçÆ þñ‡ÏûÞ)ÿhoq P‡;tNr{äƒ2(xÍ¡ðùОô%?}ê}ÞâÖ‹ö±G½êlû×ÃÞôº§=ª½Õ…x#ó »ÓŽnÌ A)þñ“Ïv²7ÿùÑ7>ò•o}çC(Òß~|õ×®ï % q±ÄÁ’gòz_ƒ`þŽƒŒ£ý„üÝã?Æ×ÿþî§õÀ6áö‡yúð4~'vvÆ~¸7r÷À„€Áf6ðäÐ(r˜yQsè ‚#¨&Ø‚õ°€(4(;xerces-c-3.1.1/doc/style/resources/dot.gif0000644000175000017500000000006107430052530017432 0ustar borisborisGIF89a‘ÿÿÿÿÀÀÀ!ù,”U;xerces-c-3.1.1/doc/style/resources/button-asf-lo.gif0000644000175000017500000000275707430052530021354 0ustar borisborisGIF89a`÷ÓÔÕIF|M‚ÌÏÑR†[ŽV‰c•`’_‘ÔØÚ¥§¨mk›išh™g˜e–Îäîíöúw¦v¥u¤t£s¢r¡q pŸožn ˆ±»×⟮´ñøû®€­¬~«}ª|©{¨x¦x¥iŽk‘•Èf‰b…^€ ¨á«å¬æ«á n“Џ q˜±çl‹ nŒD¾ë;œvÐñZ”©u¸Ðu·Ïo›¬£Óä²Úè¸ÝꢽÇÓêòÙíôØìóÚíôÞïõžÓ‰µ‡³…²†²…±ƒ°„¯‚¯~¨{¤vgЍâ’Ây¢vžsšr™‡´šÌ™Ë–Çm’£Ù‡³€«ˆ³›Í‰´ ‹¶¥Ø Œ¶ i‰Ž·¸‘¹’º”» •¼!–¼#—½$—½&˜½*š¿3³Ý-›À0À/•·3žÁ4ŸÂ6 Â8¡Ã;¢Ä3ˆ¥>£Å;š»?¤ÅB¥ÆD¦ÇF§ÇH¨ÈJªÉN«ÊQ¬ÊT®ËV¯ÌY°Í]²Î`´ÏcµÐdµÐe¶Ðg·Ñi¸Òl¹Óo»Ôr¼Ôt½Õu¾Õw¾Öy¿×†Ðé|Á×~ÂØ€ÃÙ‚ÄÙ†ÅÙt¨ºŠÇ܉ÇÛÉÝ‘ËÞ”Ìß“ÌÞ˜Îà™Ïà™ÍßžÑâ¨Öå«×æª×å®Ù献¹°Úç´Ûè¶Üé¹Þêk€‡ºÞê¾âî½àëš´½ÄãíÇäîÊæïÌçðÎèðÐéñÖìóÕëò·ÉÏÛîôÜîôåôùâñöËÔ×î÷úmpqæìî’º¹¶ÁâìÒêñßðõåó÷ëöùšÀ™¿–½éõøöûüúýýijjýþþÙÚÚ¾¿¿ÿÿÿòòò×××ÕÕÕÐÐÐÏÏÏÊÊÊÅÅÅ»»»···µµµ²²²±±±­­­©©©§§§¥¥¥   ™™™–––•••‘‘‘ŠŠŠ†††~~~}}}yyyrrrnnnjjjiii,`ÿ¡H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜhÐ‹Ç CŠI²¤É“(S†,Æ‹À–/]B9S&Í›6sÆÜY“'NŸ:{ ¥‰ðçРF“"] ´éQ§,ÁHõ"µeUªS¯jÍÊÕjW¬^»UlY²`X:Uº–éÓ·lẕù’£Ý»éÎÈ LC ‚µhˆ5°üŠ e)°"X{Ô¼BDð‘,FPʘ‚%«”(n†¸RåË#[Ñ\É1Å ÊWwþÀšmiàJ¹¢ŠóEÕìW{ ÈI-—©¼Ó U+ ‘`x2E‹ã둟`DÞøº”(ØQÁ ÿ‚>ðL¬`¿Ô:e¨+(Š‚;?'?˜ôÄZõ¥O0=ˆ„—ˆ1 »°’Æ.«Â`Cñ‡› 7rP †Ñd (P¬RÊ%»ìÒ0ƒÀL$CØRÊ'¹œ1PÑPâËPÊ B¡ +©¤Å(¾¤!ÐCD3,ÀàaH0®°B™@¥Ð"P&ÁÈQË*…ä² Á$Ç XX—@qäBK*œØÒ e‘øBÄ$CвËPD‹"¹! A›øbI0•@ñJ/[Þñ0«¨L )P¯ÄÒ&Mž"t d Wf) jѰ&"€Èâ‹™{9D0”üÔ 0q@±‡|rh *QL*jD fŽhÂF°¤B-jØ Aòk*+>ÉI—ô‹*Pàñ_€‹ü1‡¥Ì$¤–F4¡ Œ_±HˆI0¬b$Cô¡†+¢|…©œÅ®L©‡+˜eâÊPXbJCà1pÄ£<2'­A! (¦½’¬ dâš+tôáÊC@"‡aPPÂY)rôFɽ Ïq ,C„R/^£Å;š»?¤ÅB¥ÆD¦ÇF§ÇH¨ÈJªÉN«ÊQ¬ÊT®ËV¯ÌY°Í]²Î`´ÏcµÐdµÐe¶Ðg·Ñi¸Òl¹Óo»Ôr¼Ôt½Õu¾Õw¾Öy¿×†Ðé|Á×~ÂØ€ÃÙ‚ÄÙ†ÅÙt¨ºŠÇ܉ÇÛÉÝ‘ËÞ”Ìß“ÌÞ˜Îà™Ïà™ÍßžÑâ¨Öå«×æª×å®Ù献¹°Úç´Ûè¶Üé¹Þêk€‡ºÞê¾âî½àëš´½ÄãíÇäîÊæïÌçðÎèðÐéñÖìóÕëò·ÉÏÛîôÜîôåôùâñöËÔ×î÷úmpqæìî’º¹¶ÁâìÒêñßðõåó÷ëöùšÀ™¿–½éõøöûüúýýijjýþþÙÚÚ¾¿¿ÿÿÿòòò×××ÕÕÕÐÐÐÏÏÏÊÊÊÅÅÅ»»»···µµµ²²²±±±­­­©©©§§§¥¥¥   ™™™–––•••‘‘‘ŠŠŠ†††~~~}}}yyyrrrnnnjjjiii,`ÿ¡H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜhÐ‹Ç CŠI²¤É“(S†,Æ‹À–/]B9S&Í›6sÆÜY“'NŸ:{ ¥‰ðçРF“"] ´éQ§,ÁHõ"µeUªS¯jÍÊÕjW¬^»UlY²`X:Uº–éÓ·lẕù’£Ý»éÎ4hJI¥ :•(Õ8©A EÉ&(ŒR¥Á“jŽ@E©ØèI¨L*D…†Ð2gà—F¯`eR“¦Ô*Vœä@¹S ÖH_ž‰ã&¡Þ´MÕr³+Q¶îkt(Ø*8ÁUê•ÆU0<|±h(˜ŸJÁ4éÿñŽÈQ¢`•> f‰Ñ¯Oi‚bì“›"´ -¥aI¢èE¹ô›A‰D£ˆ/½@ (P '½Ðˆ/qøáK ¶ôÉ)ª äÆ/–”Í*“ä’z|R„€­b‹@ÂñK'zøRI!ÁôÇwøÇˆôчi¼A }dIAG.±¸ò ,¾,Å'»Q ± ¶ 1Ä&XBB+²ÔâH²Æb&¹42+´t †Ñá ,i(Ì’ìËŠP”w %”¼E$™ÌÁ‰ŽHp}1D0—L0²ñø «É@©Êx×AQ "PP¼ iÈŒ#P r‡Ñ„ò†&qÈjÈ»¤¢{Ž“HÀTvJ4ˆþ‘Ê!¬4RÆ€Ÿ<òdy]z%Dô¡†,§ä¦Æ+§@FD!=BD"šºrƱl2™@q v@I»¸RG»ø¡F'EܲŠgñ¥ ñ"°ØBË'×B±&­½ñÇ%™Ç'”ÀØí@˜â¥2FQ®ìrEzA¡ÒÌ4×lóIÅ óÎ<÷ìóÏ@-ôÐDÝs@;xerces-c-3.1.1/doc/style/resources/separator.gif0000644000175000017500000000015607430052530020651 0ustar borisborisGIF89ax¢××ײ²²±±±•••~~~}}}iii,x;2Üþ0ÊI«½¸£²ÿ`(jÜœhª®lë¾p,Ïî°uD®ï|ïÿÀ pH,m¥‘rÉl";ΨtúØ$;xerces-c-3.1.1/doc/style/resources/button-w3c-hi.gif0000644000175000017500000000273707430052530021263 0ustar borisborisGIF89a`÷ÓÔÕIF|M‚ÌÏÑR†[ŽV‰c•`’_‘ÔØÚ¥§¨mk›išh™g˜e–Îäîíöúw¦v¥u¤t£s¢r¡q pŸožn ˆ±»×⟮´ñøû®€­¬~«}ª|©{¨x¦x¥iŽk‘•Èf‰b…^€ ¨á«å¬æ«á n“Џ q˜±çl‹ nŒD¾ë;œvÐñZ”©u¸Ðu·Ïo›¬£Óä²Úè¸ÝꢽÇÓêòÙíôØìóÚíôÞïõžÓ‰µ‡³…²†²…±ƒ°„¯‚¯~¨{¤vgЍâ’Ây¢vžsšr™‡´šÌ™Ë–Çm’£Ù‡³€«ˆ³›Í‰´ ‹¶¥Ø Œ¶ i‰Ž·¸‘¹’º”» •¼!–¼#—½$—½&˜½*š¿3³Ý-›À0À/•·3žÁ4ŸÂ6 Â8¡Ã;¢Ä3ˆ¥>£Å;š»?¤ÅB¥ÆD¦ÇF§ÇH¨ÈJªÉN«ÊQ¬ÊT®ËV¯ÌY°Í]²Î`´ÏcµÐdµÐe¶Ðg·Ñi¸Òl¹Óo»Ôr¼Ôt½Õu¾Õw¾Öy¿×†Ðé|Á×~ÂØ€ÃÙ‚ÄÙ†ÅÙt¨ºŠÇ܉ÇÛÉÝ‘ËÞ”Ìß“ÌÞ˜Îà™Ïà™ÍßžÑâ¨Öå«×æª×å®Ù献¹°Úç´Ûè¶Üé¹Þêk€‡ºÞê¾âî½àëš´½ÄãíÇäîÊæïÌçðÎèðÐéñÖìóÕëò·ÉÏÛîôÜîôåôùâñöËÔ×î÷úmpqæìî’º¹¶ÁâìÒêñßðõåó÷ëöùšÀ™¿–½éõøöûüúýýijjýþþÙÚÚ¾¿¿ÿÿÿòòò×××ÕÕÕÐÐÐÏÏÏÊÊÊÅÅÅ»»»···µµµ²²²±±±­­­©©©§§§¥¥¥   ™™™–––•••‘‘‘ŠŠŠ†††~~~}}}yyyrrrnnnjjjiii,`ÿ¡H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜhÐ‹Ç CŠI²¤É“(S†,Æ‹À–/]B9S&Í›6sÆÜY“'NŸ:{ ¥‰ðçРF“"] ´éQ§,ÁHõ"µeUªS¯jÍÊÕjW¬^»UlY²`X:Uº–éÓ·lẕù’£Ý»éÎ4øª”N² 0"ò¨Èž8E$AqõI”)(“l¥éSäŽ@HEÜ*‚茭G‹€!y5g`JÁˆb“V®]¨è@ًدL_ž™'¡Þ´_-yS žWÉö€³ÔÜ®8à0‘¦8?™¶¹Èœ!PàNýÿWè‘¥Gà@ ¼N¥m¬Ô€£E «7Ô”0Š4D ÂA i”QÐo=² $ڈɮ@aŒ+©ˆ „$ÚÈaˆ6ˆ$#'´Ø2Û„‹»|’°B̀풌@¨ˆÇ6©¢M(‹€3ˆ{ìa †èáH!ƒ’ŸôQÈ)œHpÍŒ4Ѱr„6‘@±J6Æ€rŒ4À@áF2¿ø‚ 1ÚdBP4Ã,aI2ÃÀ" §PSÉ@Ñ(!Ð(.C6Ĥ 8ztR4iäÈ%´|òIPpRʨ¼ÑAôÅ/àŒ‚8àXÖã6qä*a ¤öÄE(@Þ1j Î%P(¢G˸Ç)t|#{Tc í±÷ˆÝTFBqHDSÉP¨±Ê%Q™×”}bL!l$!‹lC dÆ,"Ð%Æ£Å;š»?¤ÅB¥ÆD¦ÇF§ÇH¨ÈJªÉN«ÊQ¬ÊT®ËV¯ÌY°Í]²Î`´ÏcµÐdµÐe¶Ðg·Ñi¸Òl¹Óo»Ôr¼Ôt½Õu¾Õw¾Öy¿×†Ðé|Á×~ÂØ€ÃÙ‚ÄÙ†ÅÙt¨ºŠÇ܉ÇÛÉÝ‘ËÞ”Ìß“ÌÞ˜Îà™Ïà™ÍßžÑâ¨Öå«×æª×å®Ù献¹°Úç´Ûè¶Üé¹Þêk€‡ºÞê¾âî½àëš´½ÄãíÇäîÊæïÌçðÎèðÐéñÖìóÕëò·ÉÏÛîôÜîôåôùâñöËÔ×î÷úmpqæìî’º¹¶ÁâìÒêñßðõåó÷ëöùšÀ™¿–½éõøöûüúýýijjýþþÙÚÚ¾¿¿ÿÿÿòòò×××ÕÕÕÐÐÐÏÏÏÊÊÊÅÅÅ»»»···µµµ²²²±±±­­­©©©§§§¥¥¥   ™™™–––•••‘‘‘ŠŠŠ†††~~~}}}yyyrrrnnnjjjiii,`ÿ¡H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜhÐ‹Ç CŠI²¤É“(S†,Æ‹À–/]B9S&Í›6sÆÜY“'NŸ:{ ¥‰ðçРF“"] ´éQ§,ÁHõ"µeUªS¯jÍÊÕjW¬^»UlY²`X:Uº–éÓ·lẕù’£Ý»éέ”R¾ ,: Ø6Güºr%êHıöˆ ¦a“ œyEl,=PÞüêÅJ™KÉ–ùªó*=Âô"F[ÔÀ2Ÿ¨U“Eç‹­#Ä‚‚RÇj¯òL+pÈ5KÀù9µLŽ6L…Àƒ£mÔ#p{†€ÿÓ¤\Ÿi¤s\fF"¢=®Ñ|T†L’–«Ì p€8N&ü1$"RM4jT³‹‚»¤Œ1‡üŠr1Å#"8B¥Dà ¹È2J5ÙT²"q€ÃÉ/ÉIJ 2i 4H5Ÿhš1®Üá ¶ìRDP ¡M¦ý"‚/ÄtãG#àø²‹#Á¢„@¥€cÇ4¹,B *x€óHŠ‚a]É E ’Œ6öq¢Í1Ÿü¢D5p@ñ‹1G<‚ 5C„Š6¢€ Áˆ°D.zıM.¶€C‡+Ú¨!ÐÁHC‰)NB© $x ôŠ1¢eÉP°Œa:‚È0ڜ乗@_üb¨!àt#ÐG‡©µô 8E¨A8”@qÉ)n$CÌ-Ç ÁF2®¸!P&àØr 8›@‰J!£ r„-Pôàw‘r±ÜÉ€†,à®”g Ò,aH–²jE&¾ ÂF4®|·È…!¾P ž${Š/w@Ê+…ørÃ~ É@¨¸…+¬”‰0ÄØR‡+~é ûâ‹&wÅ'G ‹¾}…&½ÜqÄãJ¿x%½‘^þ*íôDzA¡ÒÔTWmõIÅ õÖ\wíõ×`‡-öØd—Ýu@;xerces-c-3.1.1/doc/style/resources/join.gif0000644000175000017500000000236407430052530017613 0ustar borisborisGIF89ax÷ÓÔÕIF|M‚ÌÏÑR†[ŽV‰c•`’_‘ÔØÚ¥§¨mk›išh™g˜e–Îäîíöúw¦v¥u¤t£s¢r¡q pŸožn ˆ±»×⟮´ñøû®€­¬~«}ª|©{¨x¦x¥iŽk‘•Èf‰b…^€ ¨á«å¬æ«á n“Џ q˜±çl‹ nŒD¾ë;œvÐñZ”©u¸Ðu·Ïo›¬£Óä²Úè¸ÝꢽÇÓêòÙíôØìóÚíôÞïõžÓ‰µ‡³…²†²…±ƒ°„¯‚¯~¨{¤vgЍâ’Ây¢vžsšr™‡´šÌ™Ë–Çm’£Ù‡³€«ˆ³›Í‰´ ‹¶¥Ø Œ¶ i‰Ž·¸‘¹’º”» •¼!–¼#—½$—½&˜½*š¿3³Ý-›À0À/•·3žÁ4ŸÂ6 Â8¡Ã;¢Ä3ˆ¥>£Å;š»?¤ÅB¥ÆD¦ÇF§ÇH¨ÈJªÉN«ÊQ¬ÊT®ËV¯ÌY°Í]²Î`´ÏcµÐdµÐe¶Ðg·Ñi¸Òl¹Óo»Ôr¼Ôt½Õu¾Õw¾Öy¿×†Ðé|Á×~ÂØ€ÃÙ‚ÄÙ†ÅÙt¨ºŠÇ܉ÇÛÉÝ‘ËÞ”Ìß“ÌÞ˜Îà™Ïà™ÍßžÑâ¨Öå«×æª×å®Ù献¹°Úç´Ûè¶Üé¹Þêk€‡ºÞê¾âî½àëš´½ÄãíÇäîÊæïÌçðÎèðÐéñÖìóÕëò·ÉÏÛîôÜîôåôùâñöËÔ×î÷úmpqæìî’º¹¶ÁâìÒêñßðõåó÷ëöùšÀ™¿–½éõøöûüúýýijjýþþÙÚÚ¾¿¿ÿÿÿòòò×××ÕÕÕÐÐÐÏÏÏÊÊÊÅÅÅ»»»···µµµ²²²±±±­­­©©©§§§¥¥¥   ™™™–––•••‘‘‘ŠŠŠ†††~~~}}}yyyrrrnnnjjjiii,xÿÅ 8]½ƒë*¬goŸ2Z HœHÑ #æÞ¬—ã†#Ri£Æ…;‚„8’äÅŒS.Ô÷O»›8qn¬—ï`Ož>ó­¹Ñr¢/:”}‹·ó§Ó C‹J<štiSŸXy %*•ªR¦Ÿ¥is§Ù³gïݛŵ¥™+X0¶›‡6íÚ¶#߯57·®Yµl»Â•K×ïA²=*–¹xã¼{ H™1cÅÌT+^°Ì€Ž)cÆõGž\ùræÍ« Y2eËP(ŸæìåÌš‰ê+6´<³t°°‡ :Œø/lÖÞó~^üxòåÍŸk?¸pâÆ‘+Ùgî|7VĆÓ×£7O:¼~èØñÈ2sèàÑS¿“½{øòÑg~úñ·‘ïÅ7_}÷å·è©ö™mܵsN9âx39æ|ÓXNXá…nØá‡;‰Ú<b¨!‡‚(ámemÇÛvëÉO;é°ÓÎ;ñv•yDæ¸c?yÖEÒ£#>)dy7Fhà•Xf©å–WZÉå—`†)æFè­cæ™h¦©æšl¶éæ›pÆ)g›õ —Ïxæ©çž|öé矀*è ~Ö‰Û˜ˆ&ª¨a^.êè£`Ò;xerces-c-3.1.1/doc/style/resources/note.gif0000644000175000017500000000044707430052530017621 0ustar borisborisGIF89a³„„;¼¼Xww8¨¨PPP(ÏÏikk6ÙÙsÃÃgää~^^5í퇵µgõõüü—ÿÿÿ,ÜPÉI¥‘/gźïH^ÚÃ} #"œ¢ß2Fçš±\ D=0.˜JÚ†dRZí ‚€0 ެ(¤ÈV±-ì€Â”šHdæ‚p= ‰ƒ›\D˜£tbmmHEqjx„ †ˆ^ WjŽnˆ<t„m  Hq  ž  ¢fvh“ެ™vXz¶­ ½¤=]¾   ËÁ½ŠS –ɶÌÁ€hÓÊÌÂU=–ÔÝÞbQåæç„ŠíÞôßGøùøèüþþ;xerces-c-3.1.1/doc/style/resources/close.gif0000644000175000017500000000076207430052530017761 0ustar borisborisGIF89axÕÿÿÿòòòìììÛÛÛ×××ÅÅÅÃÃû»»¶¶¶²²²±±±­­­©©©£££™™™–––•••’’’‘‘‘‹‹‹ˆˆˆ‡‡‡‚‚‚~~~}}}rrrqqqnnnjjjiii,xÿ@‚B,ȤrÉl:ŸÐ¦æ#ŒZ¯Ø¬VJ&¾à°xL.›Ïè´zm†L«™¸|N¯Ûïø¼~ÏïãÝ][‚ƒ„…€U†‰Š‹F D —™˜šœŸ›¡ž¢ £¦¥¨¤ª§«¨”˜ D¶¸·º°½Ž¾À¿ÄÁÅÃÆÉÈËÇÍÊŽ¶ G˜ÙÚÛÜÝÞßàáâãäÙ µE¬ð©ñ­ôóöòøªÜyFYAg"\x°a¯:, À ,H8W®£GsŒ¶d‹P¡_+øÀƒ?0cÊœ9³Â… Q¦¤X`Â@ƒ J´¨Ñ£H“*]Êt…ÿR;xerces-c-3.1.1/doc/style/resources/right.gif0000644000175000017500000000226207430052530017766 0ustar borisborisGIF89a<÷ÓÔÕIF|M‚ÌÏÑR†[ŽV‰c•`’_‘ÔØÚ¥§¨mk›išh™g˜e–Îäîíöúw¦v¥u¤t£s¢r¡q pŸožn ˆ±»×⟮´ñøû®€­¬~«}ª|©{¨x¦x¥iŽk‘•Èf‰b…^€ ¨á«å¬æ«á n“Џ q˜±çl‹ nŒD¾ë;œvÐñZ”©u¸Ðu·Ïo›¬£Óä²Úè¸ÝꢽÇÓêòÙíôØìóÚíôÞïõžÓ‰µ‡³…²†²…±ƒ°„¯‚¯~¨{¤vgЍâ’Ây¢vžsšr™‡´šÌ™Ë–Çm’£Ù‡³€«ˆ³›Í‰´ ‹¶¥Ø Œ¶ i‰Ž·¸‘¹’º”» •¼!–¼#—½$—½&˜½*š¿3³Ý-›À0À/•·3žÁ4ŸÂ6 Â8¡Ã;¢Ä3ˆ¥>£Å;š»?¤ÅB¥ÆD¦ÇF§ÇH¨ÈJªÉN«ÊQ¬ÊT®ËV¯ÌY°Í]²Î`´ÏcµÐdµÐe¶Ðg·Ñi¸Òl¹Óo»Ôr¼Ôt½Õu¾Õw¾Öy¿×†Ðé|Á×~ÂØ€ÃÙ‚ÄÙ†ÅÙt¨ºŠÇ܉ÇÛÉÝ‘ËÞ”Ìß“ÌÞ˜Îà™Ïà™ÍßžÑâ¨Öå«×æª×å®Ù献¹°Úç´Ûè¶Üé¹Þêk€‡ºÞê¾âî½àëš´½ÄãíÇäîÊæïÌçðÎèðÐéñÖìóÕëò·ÉÏÛîôÜîôåôùâñöËÔ×î÷úmpqæìî’º¹¶ÁâìÒêñßðõåó÷ëöùšÀ™¿–½éõøöûüúýýijjýþþÙÚÚ¾¿¿ÿÿÿòòò×××ÕÕÕÐÐÐÏÏÏÊÊÊÅÅÅ»»»···µµµ²²²±±±­­­©©©§§§¥¥¥   ™™™–––•••‘‘‘ŠŠŠ†††~~~}}}yyyrrrnnnjjjiii,<ÿiH° Á,2òxǘ‡#Jœˆ† ™,š¦1„±£Ç ¿ÜÐrã$ÁxÉ’¥MàR®Ñ&›8AšÁ2J&Ç•P€ ýùÑ A>[*åhƆ Ÿ9oÖœ*µ#I‡%ºµkÐI—*õ¶£ÊªQƒzY˶mÙšZã.}{èØ¹P©Ú :1"ݳ]ã¶L6lK»,ÿÎÔÛ1HÅ\ãö…y)áÁ£îuü±²\¯‰ ³ô2ùafÆ?/³õ™kËÊw•žFÛ¸4ÖS«.l–óGßg§Î·äÒ°ïæ —vU㶆ÞY4HÒÈó:W»Ûøô×Öã—íí|³mï—'=¾¹æÆíëNz>¼ÇåÌå¿wš|îÿ¯íØXç ¸ØvøÅ`à|ü=¶ es-¸_M“A¡ ŸYvasbµ¡~¨M:<øÙgMõð`‡ EŠ„!RÕ‘^´‚‰ zeÆXâ‹-™a…XüÐŒCøí†ƒ ,´AÊ‘àÄ å”TVi¥=BCà;xerces-c-3.1.1/doc/style/resources/button-xml-hi.gif0000644000175000017500000000267007430052530021363 0ustar borisborisGIF89a`÷ÓÔÕIF|M‚ÌÏÑR†[ŽV‰c•`’_‘ÔØÚ¥§¨mk›išh™g˜e–Îäîíöúw¦v¥u¤t£s¢r¡q pŸožn ˆ±»×⟮´ñøû®€­¬~«}ª|©{¨x¦x¥iŽk‘•Èf‰b…^€ ¨á«å¬æ«á n“Џ q˜±çl‹ nŒD¾ë;œvÐñZ”©u¸Ðu·Ïo›¬£Óä²Úè¸ÝꢽÇÓêòÙíôØìóÚíôÞïõžÓ‰µ‡³…²†²…±ƒ°„¯‚¯~¨{¤vgЍâ’Ây¢vžsšr™‡´šÌ™Ë–Çm’£Ù‡³€«ˆ³›Í‰´ ‹¶¥Ø Œ¶ i‰Ž·¸‘¹’º”» •¼!–¼#—½$—½&˜½*š¿3³Ý-›À0À/•·3žÁ4ŸÂ6 Â8¡Ã;¢Ä3ˆ¥>£Å;š»?¤ÅB¥ÆD¦ÇF§ÇH¨ÈJªÉN«ÊQ¬ÊT®ËV¯ÌY°Í]²Î`´ÏcµÐdµÐe¶Ðg·Ñi¸Òl¹Óo»Ôr¼Ôt½Õu¾Õw¾Öy¿×†Ðé|Á×~ÂØ€ÃÙ‚ÄÙ†ÅÙt¨ºŠÇ܉ÇÛÉÝ‘ËÞ”Ìß“ÌÞ˜Îà™Ïà™ÍßžÑâ¨Öå«×æª×å®Ù献¹°Úç´Ûè¶Üé¹Þêk€‡ºÞê¾âî½àëš´½ÄãíÇäîÊæïÌçðÎèðÐéñÖìóÕëò·ÉÏÛîôÜîôåôùâñöËÔ×î÷úmpqæìî’º¹¶ÁâìÒêñßðõåó÷ëöùšÀ™¿–½éõøöûüúýýijjýþþÙÚÚ¾¿¿ÿÿÿòòò×××ÕÕÕÐÐÐÏÏÏÊÊÊÅÅÅ»»»···µµµ²²²±±±­­­©©©§§§¥¥¥   ™™™–––•••‘‘‘ŠŠŠ†††~~~}}}yyyrrrnnnjjjiii,`ÿ¡H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜhÐ‹Ç CŠI²¤É“(S†,Æ‹À–/]B9S&Í›6sÆÜY“'NŸ:{ ¥‰ðçРF“"] ´éQ§,ÁHõ"µeUªS¯jÍÊÕjW¬^»UlY²`X:Uº–éÓ·lẕù’£Ý»éÎ<Èé›9¶ )ІJ¤]úкc0Q4I?ÙåJ@S²à4m :JA‘#ËŸZE¢"øè—±Uo Œ*’Ëã8¬Ý‘`Zƒ{D¨’E Ê&p¹Ü ÇH¸@k–J´c—ý‚¢G8ȃºÿqä*­ízÀ)Z•¦FSõ(,(ÁzAªË:µGŒ q^¿ 8"XöÉ6K¼b sÎAG" B#ÖùB‡4Â@±Ê±#8u TË6»N"ìE“K$½² P,0¹ BÍ)v€IŠ$2 o5Ž6–…"Ì)à˜¢M#” 8œP E H"gP“Ë*àè! 8r dK5 €¹Þ|2,Õ¨'ÝÄÑ‹6ÚPãFz‹8²CT AwT“J4"‚’™”à„â ‹ ñ†/Ó¼"uäÌr:Î.´4é耄bH-Ûá¡{˜ ²GCè •³KG°â(eCL ªlh]BK{ürÈ#CœÅÑ òG/½ü2J$¾ô‘‹›{ô²ˆ)¨ ÄɲP˜òÊ£Ä.xŒ² sìH Øj‹0…ir„²Ì…+œ@‰/wÜa À°rì^xE¬W|‘^P¨¤ñÆw|’@1„,òÈ$—lòÉ(§¬òÊ,“;xerces-c-3.1.1/doc/style/resources/separator-space.gif0000644000175000017500000000013110760560046021741 0ustar borisborisGIF87axÂ××ײ²²±±±•••~~~}}}iiiÿÿÿ,x&2Üþ0ÊI«½¸£²ÿ`(jÜ2žhªnê¾ðÄšqm§ó­ïß–;xerces-c-3.1.1/doc/style/resources/button-xml-lo.gif0000644000175000017500000000266207430052530021376 0ustar borisborisGIF89a`÷ÓÔÕIF|M‚ÌÏÑR†[ŽV‰c•`’_‘ÔØÚ¥§¨mk›išh™g˜e–Îäîíöúw¦v¥u¤t£s¢r¡q pŸožn ˆ±»×⟮´ñøû®€­¬~«}ª|©{¨x¦x¥iŽk‘•Èf‰b…^€ ¨á«å¬æ«á n“Џ q˜±çl‹ nŒD¾ë;œvÐñZ”©u¸Ðu·Ïo›¬£Óä²Úè¸ÝꢽÇÓêòÙíôØìóÚíôÞïõžÓ‰µ‡³…²†²…±ƒ°„¯‚¯~¨{¤vgЍâ’Ây¢vžsšr™‡´šÌ™Ë–Çm’£Ù‡³€«ˆ³›Í‰´ ‹¶¥Ø Œ¶ i‰Ž·¸‘¹’º”» •¼!–¼#—½$—½&˜½*š¿3³Ý-›À0À/•·3žÁ4ŸÂ6 Â8¡Ã;¢Ä3ˆ¥>£Å;š»?¤ÅB¥ÆD¦ÇF§ÇH¨ÈJªÉN«ÊQ¬ÊT®ËV¯ÌY°Í]²Î`´ÏcµÐdµÐe¶Ðg·Ñi¸Òl¹Óo»Ôr¼Ôt½Õu¾Õw¾Öy¿×†Ðé|Á×~ÂØ€ÃÙ‚ÄÙ†ÅÙt¨ºŠÇ܉ÇÛÉÝ‘ËÞ”Ìß“ÌÞ˜Îà™Ïà™ÍßžÑâ¨Öå«×æª×å®Ù献¹°Úç´Ûè¶Üé¹Þêk€‡ºÞê¾âî½àëš´½ÄãíÇäîÊæïÌçðÎèðÐéñÖìóÕëò·ÉÏÛîôÜîôåôùâñöËÔ×î÷úmpqæìî’º¹¶ÁâìÒêñßðõåó÷ëöùšÀ™¿–½éõøöûüúýýijjýþþÙÚÚ¾¿¿ÿÿÿòòò×××ÕÕÕÐÐÐÏÏÏÊÊÊÅÅÅ»»»···µµµ²²²±±±­­­©©©§§§¥¥¥   ™™™–––•••‘‘‘ŠŠŠ†††~~~}}}yyyrrrnnnjjjiii,`ÿ¡H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜhÐ‹Ç CŠI²¤É“(S†,Æ‹À–/]B9S&Í›6sÆÜY“'NŸ:{ ¥‰ðçРF“"] ´éQ§,ÁHõ"µeUªS¯jÍÊÕjW¬^»UlY²`X:Uº–éÓ·lẕù’£Ý»éÎ<É”š8ªþ bÊ¢Uzðœšc0+F)¥ZêŽ@L§ÞüãŠÈ©8’0A‰S T©X]"ˆh‘On \šJ”7ŸhÁÝ‘`Zƒwzq: J¤`«ØÈ fhP°=Q{• +"Žr rÇW0È}€¥ÿB*Щív‚ *Œ¤CµO”«”W®í²Ï*—"C£¤×oÉ׋e“øB„)D0çtÑÑË&Ñ …+CÄK,P|K)¯ÈŒm¡ +C{®¬²È@¦D£”üòÆ«RD&r£Èƒ" oŒ/–U‹&Á`ÒKsÏI0‘Ds ©ÓK.ƒœ‘Ë*Ÿs‡%ÁÄ1P*»TæŠíIâÇ@¥ìR]$ÀÀáŠ/¾ÁFz… âK/CD Asì +!R"KüÁ\ ÁX‚ˆ…ˆâ†+µ˜K/r¬’auˆ wJ“ŽŠ¢G% ²]ê±÷ wÈ—1Ê‹P¹«|Ë'ÎU¢+,{pòK uDÉ)iÜ1ĈŒRs¸Ò‡®`xÉ"®à±ÊܹR&œ  ²P`bJмBË*t\òÉh¬è±GµC\BÇ…A -ŸA!J$P<âÊr¤BËïö&(^ o4`Ã_¤*UlñÅŸ$P wìñÇ ‡,òÈ$—lòÉ;xerces-c-3.1.1/doc/style/resources/line.gif0000644000175000017500000000163407430052530017602 0ustar borisborisGIF89aÈ÷ÓÔÕIF|M‚ÌÏÑR†[ŽV‰c•`’_‘ÔØÚ¥§¨mk›išh™g˜e–Îäîíöúw¦v¥u¤t£s¢r¡q pŸožn ˆ±»×⟮´ñøû®€­¬~«}ª|©{¨x¦x¥iŽk‘•Èf‰b…^€ ¨á«å¬æ«á n“Џ q˜±çl‹ nŒD¾ë;œvÐñZ”©u¸Ðu·Ïo›¬£Óä²Úè¸ÝꢽÇÓêòÙíôØìóÚíôÞïõžÓ‰µ‡³…²†²…±ƒ°„¯‚¯~¨{¤vgЍâ’Ây¢vžsšr™‡´šÌ™Ë–Çm’£Ù‡³€«ˆ³›Í‰´ ‹¶¥Ø Œ¶ i‰Ž·¸‘¹’º”» •¼!–¼#—½$—½&˜½*š¿3³Ý-›À0À/•·3žÁ4ŸÂ6 Â8¡Ã;¢Ä3ˆ¥>£Å;š»?¤ÅB¥ÆD¦ÇF§ÇH¨ÈJªÉN«ÊQ¬ÊT®ËV¯ÌY°Í]²Î`´ÏcµÐdµÐe¶Ðg·Ñi¸Òl¹Óo»Ôr¼Ôt½Õu¾Õw¾Öy¿×†Ðé|Á×~ÂØ€ÃÙ‚ÄÙ†ÅÙt¨ºŠÇ܉ÇÛÉÝ‘ËÞ”Ìß“ÌÞ˜Îà™Ïà™ÍßžÑâ¨Öå«×æª×å®Ù献¹°Úç´Ûè¶Üé¹Þêk€‡ºÞê¾âî½àëš´½ÄãíÇäîÊæïÌçðÎèðÐéñÖìóÕëò·ÉÏÛîôÜîôåôùâñöËÔ×î÷úmpqæìî’º¹¶ÁâìÒêñßðõåó÷ëöùšÀ™¿–½éõøöûüúýýijjýþþÙÚÚ¾¿¿ÿÿÿòòò×××ÕÕÕÐÐÐÏÏÏÊÊÊÅÅÅ»»»···µµµ²²²±±±­­­©©©§§§¥¥¥   ™™™–––•••‘‘‘ŠŠŠ†††~~~}}}yyyrrrnnnjjjiii,ÈiH° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱcE0 CŠI²¤É“(Sª\ɲ¥Ë—0cÊœI³¦Í›8sêÜ9ŠÏŸ@ƒ J´¨Ñ£H“*]Ê´©Ó§P£JJµªÕ«X³jÝʵ«×¯`ÊK¶¬Ù³hÓª]˶­Û·f;xerces-c-3.1.1/doc/style/resources/script.js0000644000175000017500000000076107430052530020026 0ustar borisborisrolloverImagesOn=new Array(); rolloverImagesOff=new Array(); function rolloverOn(name) { if(rolloverImagesOn[name]){ document.images[name].src=rolloverImagesOn[name].src; } } function rolloverOff(name) { if(rolloverImagesOff[name]){ document.images[name].src=rolloverImagesOff[name].src; } } function rolloverLoad(name,on,off) { rolloverImagesOn[name]=new Image(); rolloverImagesOn[name].src=on; rolloverImagesOff[name]=new Image(); rolloverImagesOff[name].src=off; } xerces-c-3.1.1/doc/style/resources/void.gif0000644000175000017500000000006107430052530017605 0ustar borisborisGIF89a‘ÿÿÿÿÀÀÀ!ù,T;xerces-c-3.1.1/doc/style/stylesheets/0000755000175000017500000000000011363617317016534 5ustar borisborisxerces-c-3.1.1/doc/style/stylesheets/group2document.xsl0000644000175000017500000000133707430052530022233 0ustar borisboris

Read the document or jump directly to:

  • xerces-c-3.1.1/doc/style/stylesheets/any2header.xsl0000644000175000017500000000154407430052530021300 0ustar borisboris xerces-c-3.1.1/doc/style/stylesheets/book2project.xsl0000644000175000017500000002464410760560046021675 0ustar borisboris xerces-c-3.1.1/doc/style/stylesheets/book2group.xsl0000644000175000017500000000162407430052530021346 0ustar borisboris xerces-c-3.1.1/doc/style/stylesheets/context2footer.xsl0000644000175000017500000000177307430052530022247 0ustar borisboris xerces-c-3.1.1/doc/style/stylesheets/context2section.xsl0000644000175000017500000000113710760560046022415 0ustar borisboris xerces-c-3.1.1/doc/style/stylesheets/faqs2document.xsl0000644000175000017500000000222307430052530022024 0ustar borisboris

  • xerces-c-3.1.1/doc/style/stylesheets/changes2document.xsl0000644000175000017500000000163607430052530022511 0ustar borisboris
  • xerces-c-3.1.1/doc/style/stylesheets/document2html.xsl0000644000175000017500000004717011244775400022056 0ustar borisboris Other Xerces-C++ Questions
    http://xml.apache.org/http://www.apache.org/http://www.w3.org/

    Xerces-C++ 3.1.1
    Readme
    Installation
    Build Instructions

    Programming
    Samples
    FAQs

    API Reference
    DOM C++ Binding
    Migration Guide

    Questions
     


    How do I determine the version of Xerces-C++ I am using?
     

    The version string for Xerces-C++ is in one of the header files. Look inside the file src/xercesc/util/XercesVersion.hpp or, in the binary distribution, look in include/xercesc/utils/XercesVersion.hpp.

    If you don't have the header files, you have to find the version information from the shared library name. On Windows right click on the DLL name in the bin directory and look up properties. The version information can be found in the Version tab.

    On UNIX/Linux/Mac OS X platforms the version is embedded into the library name.


    Is there any kind of support available for Xerces-C++?
     

    Xerces-C++ comes with no formal support.

    Every volunteer project obtains its strength from the people involved in it. Mailing lists provide a simple and effective communication mechanism. You are welcome to join any of these mailing lists (or all of them if you wish). You can choose to lurk, or to actively participate. It is up to you.

    Instructions for subscribing as well as archives are available at the Xerces-C++ mailing lists page.


    I found a defect -- how do I report it?
     

    See Bug Reporting.



    Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.
    xerces-c-3.1.1/doc/html/program-sax2-3.html0000644000175000017500000032630111363617747017350 0ustar borisborisSAX2 Programming Guide
    http://xml.apache.org/http://www.apache.org/http://www.w3.org/

    Xerces-C++ 3.1.1
    Readme
    Installation
    Build Instructions

    Programming
    Samples
    FAQs

    API Reference
    DOM C++ Binding
    Migration Guide

    Using the SAX2 API
     

    The SAX2 API for XML parsers was originally developed for Java. Please be aware that there is no standard SAX2 API for C++, and that use of the Xerces-C++ SAX2 API does not guarantee client code compatibility with other C++ XML parsers.

    The SAX2 API presents a callback based API to the parser. An application that uses SAX2 provides an instance of a handler class to the parser. When the parser detects XML constructs, it calls the methods of the handler class, passing them information about the construct that was detected. The most commonly used handler classes are ContentHandler which is called when XML constructs are recognized, and ErrorHandler which is called when an error occurs. The header files for the various SAX2 handler classes are in the xercesc/sax2/ directory.

    As a convenience, Xerces-C++ provides DefaultHandler, a single class which is publicly derived from all the Handler classes. DefaultHandler's default implementation of the handler callback methods is to do nothing. A convenient way to get started with Xerces-C++ is to derive your own handler class from DefaultHandler and override just those methods in HandlerBase which you are interested in customizing. This simple example shows how to create a handler which will print element names, and print fatal error messages. The source code for the sample applications show additional examples of how to write handler classes.

    This is the header file MySAX2Handler.hpp:

    #include <xercesc/sax2/DefaultHandler.hpp>
    
    class MySAX2Handler : public DefaultHandler {
    public:
        void startElement(
            const   XMLCh* const    uri,
            const   XMLCh* const    localname,
            const   XMLCh* const    qname,
            const   Attributes&     attrs
        );
        void fatalError(const SAXParseException&);
    };

    This is the implementation file MySAX2Handler.cpp:

    #include "MySAX2Handler.hpp"
    #include <iostream>
    
    using namespace std;
    
    MySAX2Handler::MySAX2Handler()
    {
    }
    
    void MySAX2Handler::startElement(const   XMLCh* const    uri,
                                const   XMLCh* const    localname,
                                const   XMLCh* const    qname,
                                const   Attributes&     attrs)
    {
        char* message = XMLString::transcode(localname);
        cout << "I saw element: "<< message << endl;
        XMLString::release(&message);
    }
    
    void MySAX2Handler::fatalError(const SAXParseException& exception)
    {
        char* message = XMLString::transcode(exception.getMessage());
        cout << "Fatal Error: " << message
             << " at line: " << exception.getLineNumber()
             << endl;
        XMLString::release(&message);
    }

    The XMLCh and Attributes types are supplied by Xerces-C++ and are documented in the API Reference. Examples of their usage appear in the source code to the sample applications.


    SAX2XMLReader
     
    Constructing an XML Reader
     

    In order to use Xerces-C++ SAX2 to parse XML files, you will need to create an instance of the SAX2XMLReader class. The example below shows the code you need in order to create an instance of SAX2XMLReader. The ContentHandler and ErrorHandler instances required by the SAX2 API are provided using the DefaultHandler class supplied with Xerces-C++.

        #include <xercesc/sax2/SAX2XMLReader.hpp>
        #include <xercesc/sax2/XMLReaderFactory.hpp>
        #include <xercesc/sax2/DefaultHandler.hpp>
        #include <xercesc/util/XMLString.hpp>
    
        #include <iostream>
    
        using namespace std;
        using namespace xercesc;
    
        int main (int argc, char* args[]) {
    
            try {
                XMLPlatformUtils::Initialize();
            }
            catch (const XMLException& toCatch) {
                char* message = XMLString::transcode(toCatch.getMessage());
                cout << "Error during initialization! :\n";
                cout << "Exception message is: \n"
                     << message << "\n";
                XMLString::release(&message);
                return 1;
            }
    
            char* xmlFile = "x1.xml";
            SAX2XMLReader* parser = XMLReaderFactory::createXMLReader();
            parser->setFeature(XMLUni::fgSAX2CoreValidation, true);
            parser->setFeature(XMLUni::fgSAX2CoreNameSpaces, true);   // optional
    
            DefaultHandler* defaultHandler = new DefaultHandler();
            parser->setContentHandler(defaultHandler);
            parser->setErrorHandler(defaultHandler);
    
            try {
                parser->parse(xmlFile);
            }
            catch (const XMLException& toCatch) {
                char* message = XMLString::transcode(toCatch.getMessage());
                cout << "Exception message is: \n"
                     << message << "\n";
                XMLString::release(&message);
                return -1;
            }
            catch (const SAXParseException& toCatch) {
                char* message = XMLString::transcode(toCatch.getMessage());
                cout << "Exception message is: \n"
                     << message << "\n";
                XMLString::release(&message);
                return -1;
            }
            catch (...) {
                cout << "Unexpected Exception \n" ;
                return -1;
            }
    
            delete parser;
            delete defaultHandler;
            return 0;
        }

    Supported Features in SAX2XMLReader
     

    The behavior of the SAX2XMLReader is dependant on the values of the following features. All of the features below can be set using the function SAX2XMLReader::setFeature(cons XMLCh* const, const bool). And can be queried using the function bool SAX2XMLReader::getFeature(const XMLCh* const).

    None of these features can be modified in the middle of a parse, or an exception will be thrown.

    SAX2 Features
     
    http://xml.org/sax/features/namespaces 
    true:  Perform Namespace processing.  
    false:  Do not perform Namespace processing.  
    default:  true  
    XMLUni Predefined Constant:  fgSAX2CoreNameSpaces  
    note:  If the validation feature is set to true, then the document must contain a grammar that supports the use of namespaces.  
    see:  http://xml.org/sax/features/namespace-prefixes  
    see:  http://xml.org/sax/features/validation  

    http://xml.org/sax/features/namespace-prefixes 
    true:  Report the original prefixed names and attributes used for Namespace declarations.  
    false:  Do not report attributes used for Namespace declarations, and optionally do not report original prefixed names.  
    default:  false  
    XMLUni Predefined Constant:  fgSAX2CoreNameSpacePrefixes  

    http://xml.org/sax/features/validation 
    true:  Report all validation errors.  
    false:  Do not report validation errors.  
    default:  false  
    XMLUni Predefined Constant:  fgSAX2CoreValidation  
    note:  If this feature is set to true, the document must specify a grammar. If this feature is set to false and document specifies a grammar, that grammar might be parsed but no validation of the document contents will be performed.  
    see:  http://apache.org/xml/features/validation/dynamic  
    see:  http://apache.org/xml/features/nonvalidating/load-external-dtd  

    Xerces Features
     
    http://apache.org/xml/features/validation/dynamic 
    true:  The parser will validate the document only if a grammar is specified. (http://xml.org/sax/features/validation must be true).  
    false:  Validation is determined by the state of the http://xml.org/sax/features/validation feature.  
    default:  false  
    XMLUni Predefined Constant:  fgXercesDynamic  
    see:  http://xml.org/sax/features/validation  

    http://apache.org/xml/features/validation/schema 
    true:  Enable the parser's schema support.  
    false:  Disable the parser's schema support.  
    default:  true  
    XMLUni Predefined Constant:  fgXercesSchema  
    note  If set to true, namespace processing must also be turned on.  
    see:  http://xml.org/sax/features/namespaces  

    http://apache.org/xml/features/validation/schema-full-checking 
    true:  Enable full schema constraint checking, including checking which may be time-consuming or memory intensive. Currently, particle unique attribution constraint checking and particle derivation restriction checking are controlled by this option.  
    false:  Disable full schema constraint checking.  
    default:  false  
    XMLUni Predefined Constant:  fgXercesSchemaFullChecking  
    note:  This feature checks the schema grammar itself for additional errors that are time-consuming or memory intensive. It does not affect the level of checking performed on document instances that use schema grammars.  
    see:  http://apache.org/xml/features/validation/schema  

    http://apache.org/xml/features/validating/load-schema 
    true:  Load the schema.  
    false:  Don't load the schema if it wasn't found in the grammar pool.  
    default:  true  
    XMLUni Predefined Constant:  fgXercesLoadSchema  
    note:  This feature is ignored and no schemas are loaded if schema processing is disabled.  
    see:  http://apache.org/xml/features/validation/schema  

    http://apache.org/xml/features/nonvalidating/load-external-dtd 
    true:  Load the external DTD.  
    false:  Ignore the external DTD completely.  
    default:  true  
    XMLUni Predefined Constant:  fgXercesLoadExternalDTD  
    note  This feature is ignored and DTD is always loaded when validation is on.  
    see:  http://xml.org/sax/features/validation  

    http://apache.org/xml/features/continue-after-fatal-error 
    true:  Attempt to continue parsing after a fatal error.  
    false:  Stops parse on first fatal error.  
    default:  false  
    XMLUni Predefined Constant:  fgXercesContinueAfterFatalError  
    note:  The behavior of the parser when this feature is set to true is undetermined! Therefore use this feature with extreme caution because the parser may get stuck in an infinite loop or worse.  

    http://apache.org/xml/features/validation-error-as-fatal 
    true:  The parser will treat validation error as fatal and will exit depends on the state of http://apache.org/xml/features/continue-after-fatal-error.  
    false:  The parser will report the error and continue processing.  
    default:  false  
    XMLUni Predefined Constant:  fgXercesValidationErrorAsFatal  
    note:  Setting this true does not mean the validation error will be printed with the word "Fatal Error". It is still printed as "Error", but the parser will exit if http://apache.org/xml/features/continue-after-fatal-error is set to false.  
    see:  http://apache.org/xml/features/continue-after-fatal-error  

    http://apache.org/xml/features/validation/use-cachedGrammarInParse 
    true:  Use cached grammar if it exists in the pool. 
    false:  Parse the schema grammar. 
    default:  false  
    XMLUni Predefined Constant:  fgXercesUseCachedGrammarInParse  
    note:  If http://apache.org/xml/features/validation/cache-grammarFromParse is enabled, this feature is set to true automatically and any setting to this feature by the user is a no-op. 
    see:  http://apache.org/xml/features/validation/cache-grammarFromParse  

    http://apache.org/xml/features/validation/cache-grammarFromParse 
    true:  Cache the grammar in the pool for re-use in subsequent parses. 
    false:  Do not cache the grammar in the pool 
    default:  false  
    XMLUni Predefined Constant:  fgXercesCacheGrammarFromParse  
    note:  If set to true, the http://apache.org/xml/features/validation/use-cachedGrammarInParse is also set to true automatically. 
    see:  http://apache.org/xml/features/validation/use-cachedGrammarInParse  

    http://apache.org/xml/features/standard-uri-conformant 
    true:  Force standard uri conformance.  
    false:  Do not force standard uri conformance.  
    default:  false  
    XMLUni Predefined Constant:  fgXercesStandardUriConformant  
    note:  If set to true, malformed uri will be rejected and fatal error will be issued.  

    http://apache.org/xml/features/calculate-src-ofs 
    true:  Enable src offset calculation.  
    false:  Disable src offset calculation.  
    default:  false  
    XMLUni Predefined Constant:  fgXercesCalculateSrcOfs  
    note:  If set to true, the user can inquire about the current src offset within the input source. Setting it to false (default) improves the performance. 

    http://apache.org/xml/features/validation/identity-constraint-checking 
    true:  Enable identity constraint checking.  
    false:  Disable identity constraint checking.  
    default:  true  
    XMLUni Predefined Constant:  fgXercesIdentityConstraintChecking  

    http://apache.org/xml/features/generate-synthetic-annotations 
    true:  Enable generation of synthetic annotations. A synthetic annotation will be generated when a schema component has non-schema attributes but no child annotation.  
    false:  Disable generation of synthetic annotations.  
    default:  false  
    XMLUni Predefined Constant:  fgXercesGenerateSyntheticAnnotations  

    http://apache.org/xml/features/validate-annotations 
    true:  Enable validation of annotations.  
    false:  Disable validation of annotations.  
    default:  false  
    XMLUni Predefined Constant:  fgXercesValidateAnnotations  
    note:  Each annotation is validated independently.  

    http://apache.org/xml/features/schema/ignore-annotations 
    true:  Do not generate XSAnnotations when traversing a schema. 
    false:  Generate XSAnnotations when traversing a schema. 
    default:  false  
    XMLUni Predefined Constant:  fgXercesIgnoreAnnotations  

    http://apache.org/xml/features/disable-default-entity-resolution 
    true:  The parser will not attempt to resolve the entity when the resolveEntity method returns NULL. 
    false:  The parser will attempt to resolve the entity when the resolveEntity method returns NULL. 
    default:  false  
    XMLUni Predefined Constant:  fgXercesDisableDefaultEntityResolution  

    http://apache.org/xml/features/validation/schema/skip-dtd-validation 
    true:  When schema validation is on the parser will ignore the DTD, except for entities. 
    false:  The parser will not ignore DTDs when validating. 
    default:  false  
    XMLUni Predefined Constant:  fgXercesSkipDTDValidation  
    see:  Schema Validation 

    http://apache.org/xml/features/validation/ignoreCachedDTD 
    true:  Ignore a cached DTD when an XML document contains both an internal and external DTD, and the use cached grammar from parse option is enabled. Currently, we do not allow using cached DTD grammar when an internal subset is present in the document. This option will only affect the behavior of the parser when an internal and external DTD both exist in a document (i.e. no effect if document has no internal subset). 
    false:  Don't ignore cached DTD.  
    default:  false  
    XMLUni Predefined Constant:  fgXercesIgnoreCachedDTD  
    see:  http://apache.org/xml/features/validation/use-cachedGrammarInParse  

    http://apache.org/xml/features/validation/schema/handle-multiple-imports 
    true:  During schema validation allow multiple schemas with the same namespace to be imported. 
    false:  Don't import multiple schemas with the same namespace.  
    default:  false  
    XMLUni Predefined Constant:  fgXercesHandleMultipleImports  



    Supported Properties in SAX2XMLReader
     

    The behavior of the SAX2XMLReader is dependant on the values of the following properties. All of the properties below can be set using the function SAX2XMLReader::setProperty(const XMLCh* const, void*). It takes a void pointer as the property value. Application is required to initialize this void pointer to a correct type. Please check the column "Value Type" below to learn exactly what type of property value each property expects for processing. Passing a void pointer that was initialized with a wrong type will lead to unexpected result. If the same property is set more than once, the last one takes effect.

    Property values can be queried using the function void* SAX2XMLReader::getProperty(const XMLCh* const). The parser owns the returned pointer, and the memory allocated for the returned pointer will be destroyed when the parser is deleted. To ensure accessibility of the returned information after the parser is deleted, callers need to copy and store the returned information somewhere else. Since the returned pointer is a generic void pointer, check the column "Value Type" below to learn exactly what type of object each property returns for replication.

    None of these properties can be modified in the middle of a parse, or an exception will be thrown.

    Xerces Properties
     
    http://apache.org/xml/properties/schema/external-schemaLocation 
    Description  The XML Schema Recommendation explicitly states that the inclusion of schemaLocation/ noNamespaceSchemaLocation attributes in the instance document is only a hint; it does not mandate that these attributes must be used to locate schemas. Similar situation happens to <import> element in schema documents. This property allows the user to specify a list of schemas to use. If the targetNamespace of a schema specified using this method matches the targetNamespace of a schema occurring in the instance document in schemaLocation attribute, or if the targetNamespace matches the namespace attribute of <import> element, the schema specified by the user using this property will be used (i.e., the schemaLocation attribute in the instance document or on the <import> element will be effectively ignored).  
    Value  The syntax is the same as for schemaLocation attributes in instance documents: e.g, "http://www.example.com file_name.xsd". The user can specify more than one XML Schema in the list.  
    Value Type  XMLCh*  
    XMLUni Predefined Constant:  fgXercesSchemaExternalSchemaLocation  

    http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation 
    Description  The XML Schema Recommendation explicitly states that the inclusion of schemaLocation/ noNamespaceSchemaLocation attributes in the instance document is only a hint; it does not mandate that these attributes must be used to locate schemas. This property allows the user to specify the no target namespace XML Schema Location externally. If specified, the instance document's noNamespaceSchemaLocation attribute will be effectively ignored.  
    Value  The syntax is the same as for the noNamespaceSchemaLocation attribute that may occur in an instance document: e.g."file_name.xsd".  
    Value Type  XMLCh*  
    XMLUni Predefined Constant:  fgXercesSchemaExternalNoNameSpaceSchemaLocation  

    http://apache.org/xml/properties/scannerName 
    Description  This property allows the user to specify the name of the XMLScanner to use for scanning XML documents. If not specified, the default scanner "IGXMLScanner" is used. 
    Value  The recognized scanner names are:
    1."WFXMLScanner" - scanner that performs well-formedness checking only.
    2. "DGXMLScanner" - scanner that handles XML documents with DTD grammar information.
    3. "SGXMLScanner" - scanner that handles XML documents with XML schema grammar information.
    4. "IGXMLScanner" - scanner that handles XML documents with DTD or/and XML schema grammar information.
    Users can use the predefined constants defined in XMLUni directly (fgWFXMLScanner, fgDGXMLScanner, fgSGXMLScanner, or fgIGXMLScanner) or a string that matches the value of one of those constants. 
    Value Type  XMLCh*  
    XMLUni Predefined Constant:  fgXercesScannerName  
    note:   See Use Specific Scanner for more programming details.  

    http://apache.org/xml/properties/security-manager 
    Description  Certain valid XML and XML Schema constructs can force a processor to consume more system resources than an application may wish. In fact, certain features could be exploited by malicious document writers to produce a denial-of-service attack. This property allows applications to impose limits on the amount of resources the processor will consume while processing these constructs.  
    Value  An instance of the SecurityManager class (see xercesc/util/SecurityManager). This class's documentation describes the particular limits that may be set. Note that, when instantiated, default values for limits that should be appropriate in most settings are provided. The default implementation is not thread-safe; if thread-safety is required, the application should extend this class, overriding methods appropriately. The parser will not adopt the SecurityManager instance; the application is responsible for deleting it when it is finished with it. If no SecurityManager instance has been provided to the parser (the default) then processing strictly conforming to the relevant specifications will be performed.  
    Value Type  SecurityManager*  
    XMLUni Predefined Constant:  fgXercesSecurityManager  

    http://apache.org/xml/properties/low-water-mark 
    Description  If the number of available bytes in the raw buffer is less than the low water mark the parser will attempt to read more data before continuing parsing. By default the value for this parameter is 100 bytes. You may want to set this parameter to 0 if you would like the parser to parse the available data immediately without potentially blocking while waiting for more date.  
    Value  New low water mark.  
    Value Type  XMLSize_t*  
    XMLUni Predefined Constant:  fgXercesLowWaterMark  

    setInputBufferSize(const size_t bufferSize) 
    Description  Set maximum input buffer size. This method allows users to limit the size of buffers used in parsing XML character data. The effect of setting this size is to limit the size of a ContentHandler::characters() call. The parser's default input buffer size is 1 megabyte.  
    Value  The maximum input buffer size  
    Value Type  XMLCh*  





    Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.
    xerces-c-3.1.1/doc/html/psviwriter-3.html0000644000175000017500000003413311363617750017235 0ustar borisborisSample: PSVIWriter
    http://xml.apache.org/http://www.apache.org/http://www.w3.org/

    Xerces-C++ 3.1.1
    Readme
    Installation
    Build Instructions

    Programming
    Samples
    FAQs

    API Reference
    DOM C++ Binding
    Migration Guide

    PSVIWriter
     

    PSVIWriter shows how to access the Post Schema Validation Infoset (PSVI) and Schema Component Model information for the parsed document.

    Running PSVIWriter
     

    This program parses the specified XML file, then exposes the PSVI and Schema Component Model information.

    Usage:
        PSVIWriter [options] <XML file | List file>
    
    This program invokes the SAX2XMLReaderImpl, and then exposes the
    underlying PSVI of each parsed XML file, using SAX2 API.
    
    Options:
        -f          Enable full schema constraint checking processing. Defaults to off.
        -o=xxx      Output PSVI to file xxx (default is stdout)
        -e=xxx      Output errors to file xxx (default is stdout)
        -u=xxx      Handle unrepresentable chars [fail | rep | ref*].
        -x=XXX      Use a particular encoding for output (UTF8*).
        -l          Indicate the input file is a List File that has a list of xml files.
                    Default to off (Input file is an XML file).
        -?          Show this help.
    
      * = Default if not provided explicitly.
    

    Here is some sample output from PSVWriter (as the output is verbose it has been truncated)

    cd xerces-c-3.1.1/samples/data
    PSVIWriter personal.xml
    
    <document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xmlns:psv="http://apache.org/xml/2001/PSVInfosetExtension"
                 xmlns="http://www.w3.org/2001/05/XMLInfoset">
    	<characterEncodingScheme>UTF8</characterEncodingScheme>
    	<standalone xsi:nil="true"/>
    	<version>1.0</version>
    	<children>
    		<comment>
    			<content> @version:  </content>
    		</comment>
    
    ...
    		



    Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.
    xerces-c-3.1.1/doc/html/faq-parse-3.html0000644000175000017500000022531211363617747016705 0ustar borisborisProgramming Xerces-C++
    http://xml.apache.org/http://www.apache.org/http://www.w3.org/

    Xerces-C++ 3.1.1
    Readme
    Installation
    Build Instructions

    Programming
    Samples
    FAQs

    API Reference
    DOM C++ Binding
    Migration Guide

    Questions
     


    Does Xerces-C++ support Schema?
     

    Yes, Xerces-C++ 3.1.1 contains an implementation of the W3C XML Schema Language, a recommendation of the Worldwide Web Consortium available in three parts: XML Schema: Primer and XML Schema: Structures and XML Schema: Datatypes. We consider this implementation complete. See the XML Schema Support page for limitations.


    Does Xerces-C++ support XPath?
     

    Xerces-C++ 3.1.1 provides partial XPath 1 implementation for the purposes of handling XML Schema identity constraints. The same engine is made available through the DOMDocument::evaluate API to let the user perform simple XPath queries involving DOMElement nodes only, with no predicate testing and allowing the "//" operator only as the initial step. For full XPath 1 and 2 support refer to the XQilla and Apache Xalan C++ open source projects.


    Why does my application crash when instantiating the parser?
     

    In order to work with the Xerces-C++ parser, you have to first initialize the XML subsystem. The most common mistake is to forget this initialization. Before you make any calls to Xerces-C++ APIs, you must call XMLPlatformUtils::Initialize():

    try {
       XMLPlatformUtils::Initialize();
    }
    catch (const XMLException& toCatch) {
       // Do your failure processing here
    }

    This initializes the Xerces system and sets its internal variables. Note that you must include the xercesc/util/PlatformUtils.hpp file for this to work.


    Is it OK to call the XMLPlatformUtils::Initialize/Terminate pair of routines multiple times in one program?
     

    Yes. Note, however, that the application needs to guarantee that the XMLPlatformUtils::Initialize() and XMLPlatformUtils::Terminate() methods are called from the same thread (usually the initial thread executing main()) or proper synchronization is performed by the application if multiple threads call XMLPlatformUtils::Initialize() and XMLPlatformUtils::Terminate() concurrently.

    If you are calling XMLPlatformUtils::Initialize() a number of times, and then follow with XMLPlatformUtils::Terminate() the same number of times, only the first XMLPlatformUtils::Initialize() will do the initialization, and only the last XMLPlatformUtils::Terminate() will clean up the memory. The other calls are ignored.


    Why does my application crash after calling XMLPlatformUtils::Terminate()?
     

    Please make sure the XMLPlatformUtils::Terminate() is the last Xerces-C++ function to be called in your program. NO explicit nor implicit Xerces-C++ destructor (those local data that are destructed when going out of scope) should be called after XMLPlatformUtils::Terminate().

    For example consider the following code snippet which is incorrect:

    1: {
    2:    XMLPlatformUtils::Initialize();
    3:    XercesDOMParser parser;
    4:    XMLPlatformUtils::Terminate();
    5: }
    

    The XercesDOMParser object "parser" is destructed when going out of scope at line 5 before the closing brace. As a result, XercesDOMParser destructor is called at line 5 after XMLPlatformUtils::Terminate() which is incorrect. Correct code should be:

    1: {
    2:    XMLPlatformUtils::Initialize();
    2a:    {
    3:           XercesDOMParser parser;
    3a:    }
    4:    XMLPlatformUtils::Terminate();
    5: }
    

    The extra pair of braces (line 2a and 3a) ensures that all implicit destructors are called before terminating Xerces-C++.

    Note also that the application needs to guarantee that the XMLPlatformUtils::Initialize() and XMLPlatformUtils::Terminate() methods are called from the same thread (usually the initial thread executing main()) or proper synchronization is performed by the application if multiple threads call XMLPlatformUtils::Initialize() and XMLPlatformUtils::Terminate() concurrently.


    Is Xerces-C++ thread-safe?
     

    The answer is yes if you observe the following rules for using Xerces-C++ in a multi-threaded environment:

    Within an address space, an instance of the parser may be used without restriction from a single thread, or an instance of the parser can be accessed from multiple threads, provided the application guarantees that only one thread has entered a method of the parser at any one time.

    When two or more parser instances exist in a process, the instances can be used concurrently, without external synchronization. That is, in an application containing two parsers and two threads, one parser can be running within the first thread concurrently with the second parser running within the second thread.

    The same rules apply to Xerces-C++ DOM documents. Multiple document instances may be concurrently accessed from different threads, but any given document instance can only be accessed by one thread at a time.

    The application also needs to guarantee that the XMLPlatformUtils::Initialize() and XMLPlatformUtils::Terminate() methods are called from the same thread (usually the initial thread executing main()) or proper synchronization is performed by the application if multiple threads call XMLPlatformUtils::Initialize() and XMLPlatformUtils::Terminate() concurrently.


    I am seeing memory leaks in Xerces-C++. Are they real?
     

    The Xerces-C++ library allocates and caches some commonly reused items. The storage for these may be reported as memory leaks by some heap analysis tools; to avoid the problem, call the function XMLPlatformUtils::Terminate() before your application exits. This will free all memory that was being held by the library.

    For most applications, the use of Terminate() is optional. The system will recover all memory when the application process shuts down. The exception to this is the use of Xerces-C++ from DLLs that will be repeatedly loaded and unloaded from within the same process. To avoid memory leaks with this kind of use, Terminate() must be called before unloading the Xerces-C++ library

    To ensure all the memory held by the parser are freed, the number of XMLPlatformUtils::Terminate() calls should match the number of XMLPlatformUtils::Initialize() calls.

    If you have built Xerces-C++ with dependency on ICU then you may want to call the u_cleanup() ICU function to clean up ICU static data. Refer to the ICU documentation for details.


    Is there a function that creates an XML file from a DTD (obviously with the values missing, a skeleton)?
     

    No, there is no such functionality.


    Can I use Xerces-C++ to perform "write validation"? That is, having an appropriate Grammar and being able to add elements to the DOM whilst validating against the grammar?
     

    No, there is no such functionality.

    The best you can do for now is to create the DOM document, write it back as XML and re-parse it with validation turned on.


    Is there a facility in Xerces-C++ to validate the data contained in a DOM tree? That is, without saving and re-parsing the source document?
     

    No, there is no such functionality. The best you can do for now is to create the DOM document, write it back as XML and re-parse it with validation turned on.


    How to write out a DOM tree into a string or an XML file?
     

    You can use the DOMLSSerializer::writeToString, or DOMLSSerializer::writeNode to serialize a DOM tree. Please refer to the sample DOMPrint or the API documentation for more details of DOMLSSerializer.


    Why doesn't DOMNode::cloneNode() clone the pointer assigned to a DOMNode via DOMNode::setUserData()?
     

    Xerces-C++ supports the DOMNode::userData specified in the DOM level 3 Node interface. As is made clear in the description of the behavior of cloneNode(), userData that has been set on the Node is not cloned. Thus, if the userData is to be copied to the new Node, this copy must be effected manually. Note further that the operation of importNode() is specified similarly.


    How are entity reference nodes handled in DOM?
     

    If you are using the native DOM classes, the function setCreateEntityReferenceNodes controls how entities appear in the DOM tree. When setCreateEntityReferenceNodes is set to true (the default), an occurrence of an entity reference in the XML document will be represented by a subtree with an EntityReference node at the root whose children represent the entity expansion. Entity expansion will be a DOM tree representing the structure of the entity expansion, not a text node containing the entity expansion as text.

    If setCreateEntityReferenceNodes is false, an entity reference in the XML document is represented by only the nodes that represent the entity expansion. The DOM tree will not contain any entityReference nodes.


    Can I use Xerces-C++ to parse HTML?
     

    Yes, but only if the HTML follows the rules given in the XML specification. Most HTML, however, does not follow the XML rules, and will generate XML well-formedness errors.


    I keep getting an error: "invalid UTF-8 character". What's wrong?
     

    Most commonly, the XML encoding = declaration is either incorrect or missing. Without a declaration, XML defaults to the use utf-8 character encoding, which is not compatible with the default text file encoding on most systems.

    The XML declaration should look something like this:

    <?xml version="1.0" encoding="iso-8859-1"?>

    Make sure to specify the encoding that is actually used by file. The encoding for "plain" text files depends both on the operating system and the locale (country and language) in use.

    Another common source of problems is characters that are not allowed in XML documents, according to the XML spec. Typical disallowed characters are control characters, even if you escape them using the Character Reference form. See the XML specification, sections 2.2 and 4.1 for details. If the parser is generating an Invalid character (Unicode: 0x???) error, it is very likely that there's a character in there that you can't see. You can generally use a UNIX command like "od -hc" to find it.


    What encodings are supported by Xerces-C++?
     

    Xerces-C++ has intrinsic support for ASCII, UTF-8, UTF-16 (Big/Small Endian), UCS4 (Big/Small Endian), EBCDIC code pages IBM037, IBM1047 and IBM1140 encodings, ISO-8859-1 (aka Latin1) and Windows-1252. This means that it can always parse input XML files in these above mentioned encodings.

    Furthermore, if you build Xerces-C++ with the International Components for Unicode (ICU) as a transcoder then the list of supported encodings extends to over 100 different encodings that are supported by ICU. In particular, all the encodings registered with the Internet Assigned Numbers Authority (IANA) are supported in this configuration.


    What character encoding should I use when creating XML documents?
     

    The best choice in most cases is either utf-8 or utf-16. Advantages of these encodings include:

    • The best portability. These encodings are more widely supported by XML processors than any others, meaning that your documents will have the best possible chance of being read correctly, no matter where they end up.
    • Full international character support. Both utf-8 and utf-16 cover the full Unicode character set, which includes all of the characters from all major national, international and industry character sets.
    • Efficient. utf-8 has the smaller storage requirements for documents that are primarily composed of characters from the Latin alphabet. utf-16 is more efficient for encoding Asian languages. But both encodings cover all languages without loss.

    The only drawback of utf-8 or utf-16 is that they are not the native text file format for most systems, meaning that some text file editors and viewers can not be directly used.

    A second choice of encoding would be any of the others listed in the table above. This works best when the xml encoding is the same as the default system encoding on the machine where the XML document is being prepared, because the document will then display correctly as a plain text file. For UNIX systems in countries speaking Western European languages, the encoding will usually be iso-8859-1.

    A word of caution for Windows users: The default character set on Windows systems is windows-1252, not iso-8859-1. While Xerces-C++ does recognize this Windows encoding, it is a poor choice for portable XML data because it is not widely recognized by other XML processing tools. If you are using a Windows-based editing tool to generate XML, check which character set it generates, and make sure that the resulting XML specifies the correct name in the encoding="..." declaration.


    Why does deleting a transcoded string result in assertion on windows?
     

    Both your application program and the Xerces-C++ DLL must use the same DLL version of the runtime library. If either statically links to the runtime library, this problem will still occur.

    For a Visual Studio build the runtime library setting MUST be "Multithreaded DLL" for release builds and "Debug Multithreaded DLL" for debug builds.

    To bypass such problem, instead of calling operator delete[] directly, you can use the provided function XMLString::release to delete any string that was allocated by the parser. This will ensure the string is allocated and deleted by the same DLL and such assertion problem should be resolved.


    How do I transcode to/from something besides the local code page?
     

    XMLString::transcode() will transcode from XMLCh to the local code page, and other APIs which take a char* assume that the source text is in the local code page. If this is not true, you must transcode the text yourself. You can do this using local transcoding support on your OS, such as Iconv on Unix or IBM's ICU package. However, if your transcoding needs are simple, you can achieve better portability by using the Xerces-C++ parser's transcoder wrappers. You get a transcoder like this:

    • Call XMLPlatformUtils::fgTransServer->MakeNewTranscoderFor() and provide the name of the encoding you wish to create a transcoder for. This will return a transcoder to you, which you own and must delete when you are through with it. NOTE: You must provide a maximum block size that you will pass to the transcoder at one time, and you must pass blocks of characters of this count or smaller when you do your transcoding. The reason for this is that this is really an internal API and is used by the parser itself to do transcoding. The parser always does transcoding in known block sizes, and this allows transcoders to be much more efficient for internal use since it knows the max size it will ever have to deal with and can set itself up for that internally. In general, you should stick to block sizes in the 4 to 64K range.
    • The returned transcoder is something derived from XMLTranscoder, so they are all returned to you via that interface.
    • This object is really just a wrapper around the underlying transcoding system actually in use by your version of Xerces-C++, and does whatever is necessary to handle differences between the XMLCh representation and the representation used by that underlying transcoding system.
    • The transcoder object has two primary APIs, transcodeFrom() and transcodeTo(). These transcode between the XMLCh format and the encoding you indicated.
    • These APIs will transcode as much of the source data as will fit into the outgoing buffer you provide. They will tell you how much of the source they ate and how much of the target they filled. You can use this information to continue the process until all source is consumed.
    • char* data is always dealt with in terms of bytes, and XMLCh data is always dealt with in terms of characters. Don't mix up which you are dealing with or you will not get the correct results, since many encodings don't have a one to one relationship of characters to bytes.
    • When transcoding from XMLCh to the target encoding, the transcodeTo() method provides an 'unrepresentable flag' parameter, which tells the transcoder how to deal with an XMLCh code point that cannot be converted legally to the target encoding, which can easily happen since XMLCh is Unicode and can represent thousands of code points. The options are to use a default replacement character (which the underlying transcoding service will choose, and which is guaranteed to be legal for the target encoding), or to throw an exception.

    Here is an example:

    // Create an XMLTranscoder that is able to transcode between
    // Unicode and UTF-8.
    //
    XMLTranscoder* t = XMLPlatformUtils::fgTransService->makeNewTranscoderFor(
      "UTF-8", failReason, 16*1024);
    
    // Source string is in Unicode, want to transcode to UTF-8
    t->transcodeTo(source_unicode,
                      length,
                      result_utf8,
                      length,
                      charsEaten,
                      XMLTranscoder::UnRep_Throw);
    
    // Source string in UTF-8, want to transcode to Unicode.
    t->transcodeFrom(source_utf8,
                        length,
                        result_unicode,
                        length,
                        bytesEaten,
                        (unsigned char*)charSz);
    

    An even simpler way to transcode to a different encoding is to use the TranscodeToStr and TranscodeFromStr wrapper classes which represent a one-time transcoding and encapsulate all the memory management. Refer to the API Reference for more information.


    Why does the parser still try to locate the DTD even validation is turned off and how to ignore external DTD reference?
     

    When DTD is referenced, the parser will try to read it, because DTDs can provide a lot more information than just validation. It defines entities and notations, external unparsed entities, default attributes, character entities, etc. Therefore the parser will always try to read it if present, even if validation is turned off.

    To ignore external DTDs completely you can call setLoadExternalDTD(false) (or setFeature(XMLUni::fgXercesLoadExternalDTD, false) to disable the loading of external DTD. The parser will then ignore any external DTD completely if the validationScheme is set to Val_Never.

    Note: This flag is ignored if the validationScheme is set to Val_Always or Val_Auto.


    Why does the XML data generated by the DOMLSSerializer does not match my original XML input?
     

    If you parse an xml document using XercesDOMParser or DOMLSParser and pass such DOMNode to DOMLSSerializer for serialization, you may not get something that is exactly the same as the original XML data. The parser may have done normalization, end of line conversion, or has expanded the entity reference as per the XML 1.0 specification, 4.4 XML Processor Treatment of Entities and References. From DOMLSSerializer perspective, it does not know what the original string was, all it sees is a processed DOMNode generated by the parser. But since the DOMLSSerializer is supposed to generate something that is parsable if sent back to the parser, it will not print the DOMNode node value as is. The DOMLSSerializer may do some "touch up" to the output data for it to be parsable.

    See How does DOMLSSerializer handle built-in entity Reference in node value? to understand further how DOMLSSerializer touches up the entity reference.


    Why does my application crash when deleting the parser after releasing a document?
     

    In most cases, the parser handles deleting documents when the parser gets deleted. However, if an application needs to release a document, it shall adopt the document before releasing it, so that the parser knows that the ownership of this particular document is transfered to the application and will not try to delete it once the parser gets deleted.

    XercesDOMParser *parser = new XercesDOMParser;
    ...
    try
    {
        parser->parse(xml_file);
    }
    catch ()
    {
    ...
    }
    DOMNode *doc = parser->getDocument();
    ...
    parser->adoptDocument();
    doc->release();
    ...
    delete parser;
    

    The alternative to release document is to call parser's resetDocumentPool(), which releases all the documents parsed.



    Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.
    xerces-c-3.1.1/doc/html/program-3.html0000644000175000017500000005036011363617746016473 0ustar borisborisProgramming Guide
    http://xml.apache.org/http://www.apache.org/http://www.w3.org/

    Xerces-C++ 3.1.1
    Readme
    Installation
    Build Instructions

    Programming
    Samples
    FAQs

    API Reference
    DOM C++ Binding
    Migration Guide

    This Programming Guide is for Xerces-C++ version 3.1.1.

    Independent of the API you want to use, DOM, SAX, or SAX2, your application must initialize the Xerces system before using the API, and terminate it after you are done. This is achieved by the following code:

    #include <xercesc/util/PlatformUtils.hpp>
    // Other include files, declarations, and non-Xerces-C++ initializations.
    
    using namespace xercesc;
    
    int main(int argc, char* argv[])
    {
      try {
        XMLPlatformUtils::Initialize();
      }
      catch (const XMLException& toCatch) {
        // Do your failure processing here
        return 1;
      }
    
      // Do your actual work with Xerces-C++ here.
    
      XMLPlatformUtils::Terminate();
    
      // Other terminations and cleanup.
      return 0;
    }

    XMLPlatformUtils::Initialize() and XMLPlatformUtils::Terminate must be called at least once in each process. You are allowed to call XMLPlatformUtils::Initialize() and XMLPlatformUtils::Terminate multiple times, but each call to XMLPlatformUtils::Initialize() must be matched with a call to XMLPlatformUtils::Terminate.

    DOM Programming Guide
     

    The DOM API is based on the Apache Recommended DOM C++ binding.

    Read the DOM Programming Guide document or jump directly to:


    SAX2 Programming Guide
     

    Read the SAX2 Programming Guide document or jump directly to:


    SAX Programming Guide
     

    Read the SAX Programming Guide document or jump directly to:


    Other Features
     

    Read the Xerces-C++ Programming Guide document or jump directly to:



    Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.
    xerces-c-3.1.1/doc/html/memparse-3.html0000644000175000017500000004663511363617747016650 0ustar borisborisSample: MemParse
    http://xml.apache.org/http://www.apache.org/http://www.w3.org/

    Xerces-C++ 3.1.1
    Readme
    Installation
    Build Instructions

    Programming
    Samples
    FAQs

    API Reference
    DOM C++ Binding
    Migration Guide

    MemParse
     

    MemParse uses the SAX Parser to parse a memory buffer containing XML statements, and reports the number of elements and attributes found.

    Running MemParse
     

    This program uses the SAX Parser to parse a memory buffer containing XML statements, and reports the number of elements and attributes found.

    The following parameters may be set from the command line

    Usage:
        MemParse [options]
    
    This program uses the SAX Parser to parse a memory buffer
    containing XML statements, and reports the number of
    elements and attributes found.
    
    Options:
        -v=xxx      Validation scheme [always | never | auto*].
        -n          Enable namespace processing. Defaults to off.
        -s          Enable schema processing. Defaults to off.
        -f          Enable full schema constraint checking. Defaults to off.
        -?          Show this help.
    
      * = Default if not provided explicitly.
    

    -v=always will force validation
    -v=never will not use any validation
    -v=auto will validate if a DOCTYPE declaration or a schema declaration is present in the XML document

    Here is a sample output from MemParse

    MemParse -v=always

    The output is the following:

    Finished parsing the memory buffer containing the following XML statements:
    
    <?xml version='1.0' encoding='ascii'?>
    <!DOCTYPE company [
    <!ELEMENT company     (product,category,developedAt)>
    <!ELEMENT product     (#PCDATA)>
    <!ELEMENT category    (#PCDATA)>
    <!ATTLIST category idea CDATA #IMPLIED>
    <!ELEMENT developedAt (#PCDATA)>
    ]>
    
    <company>
      <product>XML4C</product>
      <category idea='great'>XML Parsing Tools</category>
      <developedAt>
        IBM Center for Java Technology, Silicon Valley, Cupertino, CA
      </developedAt>
    </company>
    
    Parsing took 10 ms (4 elements, 1 attributes, 16 spaces, 95 characters).

    Running MemParse with the validating parser gives a different result because ignorable white-space is counted separately from regular characters.

    MemParse -v=never

    The output is the following:

    Finished parsing the memory buffer containing the following XML statements:
    
    <?xml version='1.0' encoding='ascii'?>
    <!DOCTYPE company [
    <!ELEMENT company     (product,category,developedAt)>
    <!ELEMENT product     (#PCDATA)>
    <!ELEMENT category    (#PCDATA)>
    <!ATTLIST category idea CDATA #IMPLIED>
    <!ELEMENT developedAt (#PCDATA)>
    ]>
    
    <company>
      <product>XML4C</product>
      <category idea='great'>XML Parsing Tools</category>
      <developedAt>
        IBM Center for Java Technology, Silicon Valley, Cupertino, CA
      </developedAt>
    </company>
    
    Parsing took 10 ms (4 elements, 1 attributes, 0 spaces, 111 characters).

    Note that the sum of spaces and characters in both versions is the same.

    NoteThe time reported by the system may be different, depending on your processor speed.



    Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.
    xerces-c-3.1.1/doc/html/faq-build-3.html0000644000175000017500000004504611363617747016676 0ustar borisborisBuilding / Running Xerces-C++
    http://xml.apache.org/http://www.apache.org/http://www.w3.org/

    Xerces-C++ 3.1.1
    Readme
    Installation
    Build Instructions

    Programming
    Samples
    FAQs

    API Reference
    DOM C++ Binding
    Migration Guide

    Questions
     


    Why do I get compilation error saying DOMDocument was declared twice using Microsoft Visual C++?
     

    Your application somehow has picked up the Microsoft SDK header Msxml.h which has its own typedef of DOMDocument. This confuses with the Xerces-C++ 3.1.1 xercesc::DOMDocument and thus lead to the compilation errors.

    Qualifier the use of DOMDocument in your application explicitly e.g.,

    xercesc::DOMDocument* doc;

    will eliminate these compilation problems. Alternatively, you may want to get rid of the Msxml.h header inclusion.


    Why does my application give unresolved linking errors?
     

    Please check the following:

    1. Verify that you have specified the appropriate option and library path in the linker command line
    2. If you're using the binary build of Xerces-C++, make sure that the CPU architecture, OS, and compiler are the same as the ones used to build the application. Different OS and compiler versions might cause unresolved linking problems or compilation errors. If the versions are different, rebuild the Xerces-C++ library on your system before building your application.
    3. If you are using Microsoft Visual Studio 2003 (7.1), 2005 (8.0), or 2008 (9.0), check that the "Treat wchar_t as a built-in type" option has been set to the same value as used to build Xerces-C++. The binary distribution for Visual Studio 7.1 is built with this option turned off. The binary distributions for Visual Studio 8.0 and 9.0 are built with this option turned on.

    I cannot run the sample applications. What is wrong?
     

    In order to run an application built using Xerces you must set up your path and library search path properly. For more information refer to the Installation instructions.


    Why my document is valid on some platform while invalid on others?
     

    The parser relies on the system call, strtod(), to parse a string representation of a double/float data. In the case of no invalid characters found, the strtod() returns a double/float value if it is representable on that platform, or raises ERANGE to indicate either underflow or underflow occurs. And the parser assigns zero to the said data if underflow is found.

    The threshold, where the strtod() decides if an underflow occurs, varies on platforms. On Windows, it is roughly the order of e-308, on Linux, e-325, and on AIX, HP-UX and Solaris, e-324.

    So in an instance document, a data of value 1.0e-310 from a type with minExclusive 0, is considered invalid on windows (since it is converted to 0 and therefore violates the minExclusive constraint), but valid on other Unix platforms (since it remains the original value).

    The discussion above applies to data in xsd file as well.



    Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.
    xerces-c-3.1.1/doc/html/schema-3.html0000644000175000017500000013016511363617746016266 0ustar borisborisXML Schema Support
    http://xml.apache.org/http://www.apache.org/http://www.w3.org/

    Xerces-C++ 3.1.1
    Readme
    Installation
    Build Instructions

    Programming
    Samples
    FAQs

    API Reference
    DOM C++ Binding
    Migration Guide

    Introduction
     

    Xerces-C++ includes an implementation of the W3C XML Schema specification, a recommendation of the Worldwide Web Consortium available in three parts: XML Schema: Primer, XML Schema: Structures and XML Schema: Datatypes. We consider this implementation complete except for the limitations outlined below.


    Limitations
     
    • In certain complex content models specifying large values for the minOccurs or maxOccurs attributes may result in poor performance and/or large amount of memory being allocated by the parser. In such situations large values for minOccurs should be avoided, and unbounded should be used instead.
    • The parser treats local elements in the same scope with the same name and namespace as one element declaration and does not differentiate between them.

    Interpretation of Areas that are Unclear or Implementation-Dependent
     
    keyref
     

    We have interpreted the specs as requiring <keyref> Identity Constraints to refer to <key> or <unique> identity constraints within the scope of the elements to which the <keyref> is attached. This interpretation is at variance with the Schema Primer, which contains an example with a <keyref> declared on an element used inside the element of its corresponding <key>.


    out-of-bound float values
     

    For float data, the specification does not explicitly prescribe how to deal with out-of-bound data. Xerces-C++ converts these values as shown below:

    Values in range  Values converted 
    less than -224 * 2104 (approx -3.402823669e+38)   -INF 
    greater than -1 * 2-149 (approx -1.401298464e-45) and less than -0   -0 
    greater than +0 and less than +1 * 2-149 (approx +1.401298464e-45)   +0 
    greater than +224 * 2104 (approx 3.402823669e+38)   +INF 

    The effect of this conversion would invalidate an instance data, for example, "1.1e-46", of a data type derived from float, with minExclusive value '+0', since "1.1e-46" is converted to "+0", which is the same as the minExclusive.


    out-of-bound double values
     

    Similarly, Xerces-C++ converts double values as shown below (the values depend on the system specific values of DBL_MAX and DBL_MIN):

    Values in range  Values converted 
    less than -DBL_MAX (approx -1.7976931348623158e+308)   -INF 
    greater than -DBL_MIN (approx -2.2250738585072014e-308) and less than -0   -0 
    greater than +0 and less than +DBL_MIN (approx +2.2250738585072014e-308)   +0 
    greater than +DBL_MAX (approx +1.7976931348623158e+308)   +INF 


    Usage
     

    Below is an example that shows how to turn on schema processing in DOMParser (default is off). Note that you must also turn on namespace support (default is off) for schema processing.

    // Instantiate the DOM parser.
    XercesDOMParser parser;
    parser.setDoNamespaces(true);
    parser.setDoSchema(true);
    parser.parse(xmlFile);
    

    Usage in SAXParser is similar, please refer to the SAXCount sample program for further reference.

    Below is an example that shows how to turn on schema processing in SAX2XMLReader (default is on). Note that namespace must be on (default is on) as well.

    SAX2XMLReader* parser = XMLReaderFactory::createXMLReader();
    parser->setFeature(XMLUni::fgSAX2CoreNameSpaces, true);
    parser->setFeature(XMLUni::fgXercesSchema, true);
    parser->parse(xmlFile);
    

    Associating Schema Grammar with instance document
     

    Schema grammars can be associated with instance documents in three ways.

    Specifying Schema Grammar through attributes in the instance document
     

    If schema grammar was not specified externally through methods, then each instance document that uses XML Schema grammars must specify the location of the grammars it uses by using an xsi:schemaLocation attribute if they use namespaces, and xsi:noNamespaceSchemaLocation attribute otherwise.

    Here is an example with no target namespace:

    <?xml version="1.0" encoding="UTF-8"?>
    <personnel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	   xsi:noNamespaceSchemaLocation='personal.xsd'>
    ...
    </personnel>
    

    Here is an example with a target namespace. Note that it is an error to specify a different namespace in xsi:schemaLocation attribute than the target namespace defined in the Schema.

    <?xml version="1.0" encoding="UTF-8"?>
    <personnel xmlns="http://my.com"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	   xsi:schemaLocation="http://my.com personal.xsd http://my2.com test2.xsd">
    ...
    </personnel>
    

    Specifying Schema Grammar through method calls
     

    An application developer may associate schemas with instance documents through methods setExternalSchemaLocation if they use namespaces, and setExternalNoNamespaceSchemaLocation otherwise. (For SAX2XMLReader, use the properties: "http://apache.org/xml/properties/schema/external-schemaLocation" and "http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation")

    Here is an example with no target namespace:

    // Instantiate the DOM parser.
    XercesDOMParser parser;
    parser.setDoNamespaces(true);
    parser.setDoSchema(true);
    parser.setExternalNoNamespaceSchemaLocation("personal.xsd");
    parser.parse("test.xml");
    
    // Instantiate the SAX2 XMLReader.
    SAX2XMLReader* parser = XMLReaderFactory::createXMLReader();
    XMLCh* propertyValue = XMLString::transcode("personal.xsd");
    ArrayJanitor<XMLCh> janValue(propertyValue);
    
    parser->setProperty(
           XMLUni::fgXercesSchemaExternalNoNameSpaceSchemaLocation,
           propertyValue);
    parser.parse("test.xml");
    

    Here is an example with a target namespace. Note that it is an error to specify a different namespace in setExternalSchemaLocation than the target namespace defined in the Schema.

    // Instantiate the DOM parser.
    XercesDOMParser parser;
    parser.setDoNamespaces(true);
    parser.setDoSchema(true);
    parser.setExternalSchemaLocation(
      "http://my.com personal.xsd http://my2.com test2.xsd");
    parser.parse("test.xml");
    
    // Instantiate the SAX2 XMLReader.
    SAX2XMLReader* parser = XMLReaderFactory::createXMLReader();
    XMLCh* propertyValue = XMLString::transcode(
      "http://my.com personal.xsd http://my2.com test2.xsd");
    ArrayJanitor<XMLCh> janValue(propertyValue);
    
    parser->setProperty(
           XMLUni::fgXercesSchemaExternalSchemaLocation,
           propertyValue);
    parser.parse("test.xml");
    

    Pre-parsing and Caching Schema Grammar
     

    An application developer may also pre-parse and cache the grammar corresponding to the XML document namespace as described in the Pre-parsing Grammar and Grammar Caching section of the Xerces-C++ Programming Guide.




    Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.
    xerces-c-3.1.1/doc/html/program-dom-3.html0000644000175000017500000120304011363617746017244 0ustar borisborisDOM Programming Guide
    http://xml.apache.org/http://www.apache.org/http://www.w3.org/

    Xerces-C++ 3.1.1
    Readme
    Installation
    Build Instructions

    Programming
    Samples
    FAQs

    API Reference
    DOM C++ Binding
    Migration Guide

    Design Objectives
     

    The C++ DOM implementation is based on the Apache Recommended DOM C++ binding.

    The design objective aims at meeting the following requirements:

    • Reduced memory footprint.
    • Fast - especially for use in server style and multi-threaded applications.
    • Good scalability on multiprocessor systems.
    • More C++ like and less Java like.

    DOM Level 3 Support in Xerces-C++
     

    The Xerces-C++ 3.1.1 contains an implementation of the W3C DOM Level 3 as specified in

    Implementation of DOM Level 3 Core
     

    The following are NOT implemented in Xerces-C++ 3.1.1.

    • DOMError: setRelatedException
    • DOMImplementation: createLSParser(MODE_ASYNCHRONOUS)
    • DOMTypeInfo: isDerivedFrom()


    Using DOM API
     
    Accessing API from application code
     
    #include <xercesc/dom/DOM.hpp>

    The header file <dom/DOM.hpp> includes all the individual headers for the DOM API classes.


    Class Names
     

    The DOM class names are prefixed with "DOM" (if not already), e.g. "DOMNode". The intent is to prevent conflicts between DOM class names and other names that may already be in use by an application or other libraries that a DOM based application must link with.

       DOMDocument*   myDocument;
       DOMNode*       aNode;
       DOMText*       someText;
             

    Objects Management
     

    Applications would use normal C++ pointers to directly access the implementation objects for Nodes in C++ DOM.

    Consider the following code snippets

       DOMNode*       aNode;
       DOMNode* docRootNode;
    
       aNode = someDocument->createElement(anElementName);
       docRootNode = someDocument->getDocumentElement();
       docRootNode->appendChild(aNode);
             

    Memory Management
     

    The C++ DOM implementation provides a release() method for releasing any "orphaned" resources that were created through createXXXX factory method. Memory for any returned object are owned by implementation. Please see Apache Recommended DOM C++ binding for details.

    Objects created by DOMImplementation::createXXXX
     

    Users must call the release() function when finished using any objects that were created by the DOMImplementation::createXXXX (e.g. DOMLSParser, DOMLSSerializer, DOMLSInput, DOMLSOutput, DOMDocument, DOMDocumentType).

    Access to a released object will lead to unexpected behaviour.

    NoteWhen a DOMDocument is released, all its associated children AND any objects it owned (e.g. DOMRange, DOMTreeWalker, DOMNodeIterator or any orphaned nodes) will also be released.
    NoteWhen a DOMDocument is cloned, the cloned document has nothing related to the original master document and need to be released explicitly.
    NoteWhen a DOMDocumentType has been inserted into a DOMDocument and thus has a owner, it will then be released automatically when its owner document is released. DOMException::INVALID_ACCESS_ERR will be raised if releasing such owned node.

    Objects created by DOMDocument::createXXXX
     

    Users can call the release() function to indicate the release of any orphaned nodes. When an orphaned Node is released, its associated children will also be released. Access to a released Node will lead to unexpected behaviour. These orphaned Nodes will eventually be released, if not already done so, when its owner document is released

    NoteDOMException::INVALID_ACCESS_ERR will be raised if releasing a Node that has a parent (has a owner).

    Objects created by DOMDocumentRange::createRange or DOMDocumentTraversal::createXXXX
     

    Users can call release() function when finished using the DOMRange, DOMNodeIterator, DOMTreeWalker. Access to a released object will lead to unexpected behaviour. These objects will eventually be released, if not already done so, when its owner document is released


    Here is an example

        //
        //  Create a small document tree
        //
    
        {
            XMLCh tempStr[100];
    
            XMLString::transcode("Range", tempStr, 99);
            DOMImplementation* impl = DOMImplementationRegistry::getDOMImplementation(tempStr, 0);
    
            XMLString::transcode("root", tempStr, 99);
            DOMDocument*   doc = impl->createDocument(0, tempStr, 0);
            DOMElement*   root = doc->getDocumentElement();
    
            XMLString::transcode("FirstElement", tempStr, 99);
            DOMElement*   e1 = doc->createElement(tempStr);
            root->appendChild(e1);
    
            XMLString::transcode("SecondElement", tempStr, 99);
            DOMElement*   e2 = doc->createElement(tempStr);
            root->appendChild(e2);
    
            XMLString::transcode("aTextNode", tempStr, 99);
            DOMText*       textNode = doc->createTextNode(tempStr);
            e1->appendChild(textNode);
    
            // optionally, call release() to release the resource associated with the range after done
            DOMRange* range = doc->createRange();
            range->release();
    
            // removedElement is an orphaned node, optionally call release() to release associated resource
            DOMElement* removedElement = root->removeChild(e2);
            removedElement->release();
    
            // no need to release this returned object which is owned by implementation
            XMLString::transcode("*", tempStr, 99);
            DOMNodeList*    nodeList = doc->getElementsByTagName(tempStr);
    
            // done with the document, must call release() to release the entire document resources
            doc->release();
        };
             

    String Type
     

    The C++ DOM uses the plain, null-terminated (XMLCh *) utf-16 strings as the String type. The (XMLCh*) utf-16 type string has low overhead.

       //C++ DOM
       const XMLCh* nodeValue = aNode->getNodeValue();
           

    All the string data would remain in memory until the document object is released. But such string data may be RECYCLED by the implementation if necessary. Users should make appropriate copy of any returned string for safe reference.

    For example after a DOMNode has been released, the memory allocated for its node value will be recycled by the implementation.

       XMLCh xfoo[] = {chLatin_f, chLatin_o, chLatin_o, chNull};
    
       // pAttr has node value = "foo"
       // fNodeValue has "foo"
       pAttr->setNodeValue(xfoo);
       const XMLCh* fNodeValue = pAttr->getNodeValue();
    
       // fNodeValue has "foo"
       // make a copy of the string for future reference
       XMLCh* oldNodeValue = XMLString::replicate(fNodeValue);
    
       // release the node pAttr
       pAttr->release()
    
       // other operations
       :
       :
    
       // implementation may have recycled the memory of the pAttr already
       // so it's not safe to expect fNodeValue still have "foo"
       if (XMLString::compareString(xfoo, fNodeValue))
           printf("fNodeValue has some other content\n");
    
       // should use your own safe copy
       if (!XMLString::compareString(xfoo, oldNodeValue))
           printf("Use your own copy of the oldNodeValue if want to reference the string later\n");
    
       // delete your own replicated string when done
       XMLString::release(&oldNodeValue);
    
           

    Or if DOMNode::setNodeValue() is called to set a new node value, the implementation will simply overwrite the node value memory area. So any previous pointers will now have the new value automatically. Users should make appropriate copy of any previous returned string for safe reference. For example

       XMLCh xfoo[] = {chLatin_f, chLatin_o, chLatin_o, chNull};
       XMLCh xfee[] = {chLatin_f, chLatin_e, chLatin_e, chNull};
    
       // pAttr has node value = "foo"
       pAttr->setNodeValue(xfoo);
       const XMLCh* fNodeValue = pAttr->getNodeValue();
    
       // fNodeValue has "foo"
       // make a copy of the string for future reference
       XMLCh* oldNodeValue = XMLString::replicate(fNodeValue);
    
       // now set pAttr with a new node value "fee"
       pAttr->setNodeValue(xfee);
    
       // should not rely on fNodeValue for the old node value, it may not compare
       if (XMLString::compareString(xfoo, fNodeValue))
           printf("Should not rely on fNodeValue for the old node value\n");
    
       // should use your own safe copy
       if (!XMLString::compareString(xfoo, oldNodeValue))
           printf("Use your own copy of the oldNodeValue if want to reference the string later\n");
    
       // delete your own replicated string when done
       XMLString::release(&oldNodeValue);
    
           

    This is to prevent memory growth when DOMNode::setNodeValue() is being called hundreds of times. This design allows users to actively select which returned string should stay in memory by manually copying the string to application's own heap.



    XercesDOMParser
     
    Constructing a XercesDOMParser
     

    In order to use Xerces-C++ to parse XML files using DOM, you can create an instance of the XercesDOMParser class. The example below shows the code you need in order to create an instance of the XercesDOMParser.

        #include <xercesc/parsers/XercesDOMParser.hpp>
        #include <xercesc/dom/DOM.hpp>
        #include <xercesc/sax/HandlerBase.hpp>
        #include <xercesc/util/XMLString.hpp>
        #include <xercesc/util/PlatformUtils.hpp>
    
        #include <iostream>
    
        using namespace std;
        using namespace xercesc;
    
        int main (int argc, char* args[]) {
    
            try {
                XMLPlatformUtils::Initialize();
            }
            catch (const XMLException& toCatch) {
                char* message = XMLString::transcode(toCatch.getMessage());
                cout << "Error during initialization! :\n"
                     << message << "\n";
                XMLString::release(&message);
                return 1;
            }
    
            XercesDOMParser* parser = new XercesDOMParser();
            parser->setValidationScheme(XercesDOMParser::Val_Always);
            parser->setDoNamespaces(true);    // optional
    
            ErrorHandler* errHandler = (ErrorHandler*) new HandlerBase();
            parser->setErrorHandler(errHandler);
    
            char* xmlFile = "x1.xml";
    
            try {
                parser->parse(xmlFile);
            }
            catch (const XMLException& toCatch) {
                char* message = XMLString::transcode(toCatch.getMessage());
                cout << "Exception message is: \n"
                     << message << "\n";
                XMLString::release(&message);
                return -1;
            }
            catch (const DOMException& toCatch) {
                char* message = XMLString::transcode(toCatch.msg);
                cout << "Exception message is: \n"
                     << message << "\n";
                XMLString::release(&message);
                return -1;
            }
            catch (...) {
                cout << "Unexpected Exception \n" ;
                return -1;
            }
    
            delete parser;
            delete errHandler;
            return 0;
        }
              

    XercesDOMParser Supported Features
     

    The behavior of the XercesDOMParser is dependent on the values of the following features. All of the features below are set using the "setter" methods (e.g. setDoNamespaces), and are queried using the corresponding "getter" methods (e.g. getDoNamespaces). The following only gives you a quick summary of supported features. Please refer to API Documentation for complete detail.

    void setCreateEntityReferenceNodes(const bool) 
    true:  Create EntityReference nodes in the DOM tree. The EntityReference nodes and their child nodes will be read-only.  
    false:  Do not create EntityReference nodes in the DOM tree. No EntityReference nodes will be created, only the nodes corresponding to their fully expanded substitution text will be created.  
    default:  true  
    note:  This feature only affects the appearance of EntityReference nodes in the DOM tree. The document will always contain the entity reference child nodes.  

    void setIncludeIgnorableWhitespace(const bool) 
    true:  Include text nodes that can be considered "ignorable whitespace" in the DOM tree.  
    false:  Do not include ignorable whitespace in the DOM tree.  
    default:  true  
    note:  The only way that the parser can determine if text is ignorable is by reading the associated grammar and having a content model for the document. When ignorable whitespace text nodes are included in the DOM tree, they will be flagged as ignorable; and the method DOMText::isIgnorableWhitespace() will return true for those text nodes.  

    void setDoNamespaces(const bool) 
    true:  Perform Namespace processing.  
    false:  Do not perform Namespace processing.  
    default:  false  
    note:  If the validation scheme is set to Val_Always or Val_Auto, then the document must contain a grammar that supports the use of namespaces.  
    see:  setValidationScheme  

    void setValidationScheme(const ValSchemes) 
    Val_Auto:  The parser will report validation errors only if a grammar is specified. 
    Val_Always:  The parser will always report validation errors.  
    Val_Never:  Do not report validation errors.  
    default:  Val_Never  
    note:  If set to Val_Always, the document must specify a grammar. If this feature is set to Val_Never and document specifies a grammar, that grammar might be parsed but no validation of the document contents will be performed.  
    see:  setLoadExternalDTD  

    void setDoSchema(const bool) 
    true:  Enable the parser's schema support.  
    false:  Disable the parser's schema support.  
    default:  false  
    note  If set to true, namespace processing must also be turned on.  
    see:  setDoNamespaces  

    void setValidationSchemaFullChecking(const bool) 
    true:  Enable full schema constraint checking, including checking which may be time-consuming or memory intensive. Currently, particle unique attribution constraint checking and particle derivation restriction checking are controlled by this option.  
    false:  Disable full schema constraint checking.  
    default:  false  
    note:  This feature checks the Schema grammar itself for additional errors that are time-consuming or memory intensive. It does not affect the level of checking performed on document instances that use Schema grammars. 
    see:  setDoSchema  

    void setLoadSchema(const bool) 
    true:  Load the schema.  
    false:  Don't load the schema if it wasn't found in the grammar pool.  
    default:  true  
    note:  This feature is ignored and no schemas are loaded if schema processing is disabled.  
    see:  setDoSchema  

    void setLoadExternalDTD(const bool) 
    true:  Load the External DTD .  
    false:  Ignore the external DTD completely.  
    default:  true  
    note  This feature is ignored and DTD is always loaded if the validation scheme is set to Val_Always or Val_Auto.  
    see:  setValidationScheme  

    void setExitOnFirstFatalError(const bool) 
    true:  Stops parse on first fatal error.  
    false:  Attempt to continue parsing after a fatal error.  
    default:  true  
    note:  The behavior of the parser when this feature is set to false is undetermined! Therefore use this feature with extreme caution because the parser may get stuck in an infinite loop or worse. 

    void setValidationConstraintFatal(const bool) 
    true:  The parser will treat validation error as fatal and will exit depends on the state of setExitOnFirstFatalError  
    false:  The parser will report the error and continue processing.  
    default:  false  
    note:  Setting this true does not mean the validation error will be printed with the word "Fatal Error". It is still printed as "Error", but the parser will exit if setExitOnFirstFatalError is set to true. 
    see:  setExitOnFirstFatalError  

    void useCachedGrammarInParse(const bool) 
    true:  Use cached grammar if it exists in the pool. 
    false:  Parse the schema grammar. 
    default:  false  
    note:  The getter function for this method is called isUsingCachedGrammarInParse. 
    note:  If the grammar caching option is enabled, this option is set to true automatically and any setting to this option by the user is a no-op. 
    see:  cacheGrammarFromParse  

    void cacheGrammarFromParse(const bool) 
    true:  Cache the grammar in the pool for re-use in subsequent parses. 
    false:  Do not cache the grammar in the pool 
    default:  false  
    note:  The getter function for this method is called isCachingGrammarFromParse 
    note:  If set to true, the useCachedGrammarInParse is also set to true automatically. 
    see:  useCachedGrammarInParse  

    void setStandardUriConformant(const bool) 
    true:  Force standard uri conformance.  
    false:  Do not force standard uri conformance.  
    default:  false  
    note:  If set to true, malformed uri will be rejected and fatal error will be issued.  

    void setCalculateSrcOfs(const bool) 
    true:  Enable source offset calculation.  
    false:  Disable source offset calculation.  
    default:  false  
    note:  If set to true, the user can inquire about the current source offset within the input source. Setting it to false (default) improves the performance. 

    void setIdentityConstraintChecking(const bool); 
    true:  Enable identity constraint checking.  
    false:  Disable identity constraint checking.  
    default:  true  

    void setGenerateSyntheticAnnotations(const bool); 
    true:  Enable generation of synthetic annotations. A synthetic annotation will be generated when a schema component has non-schema attributes but no child annotation.  
    false:  Disable generation of synthetic annotations.  
    default:  false  

    setValidateAnnotation 
    true:  Enable validation of annotations.  
    false:  Disable validation of annotations.  
    default:  false  
    note:  Each annotation is validated independently.  

    setIgnoreAnnotations 
    true:  Do not generate XSAnnotations when traversing a schema. 
    false:  Generate XSAnnotations when traversing a schema. 
    default:  false  

    setDisableDefaultEntityResolution 
    true:  The parser will not attempt to resolve the entity when the resolveEntity method returns NULL. 
    false:  The parser will attempt to resolve the entity when the resolveEntity method returns NULL. 
    default:  false  

    setSkipDTDValidation 
    true:  When schema validation is on the parser will ignore the DTD, except for entities. 
    false:  The parser will not ignore DTDs when validating. 
    default:  false  
    see:  DoSchema 

    setIgnoreCachedDTD 
    true:  Ignore a cached DTD when an XML document contains both an internal and external DTD, and the use cached grammar from parse option is enabled. Currently, we do not allow using cached DTD grammar when an internal subset is present in the document. This option will only affect the behavior of the parser when an internal and external DTD both exist in a document (i.e. no effect if document has no internal subset). 
    false:  Don't ignore cached DTD.  
    default:  false  
    see:  useCachedGrammarInParse 

    setHandleMultipleImports 
    true:  During schema validation allow multiple schemas with the same namespace to be imported. 
    false:  Don't import multiple schemas with the same namespace.  
    default:  false  

    setCreateSchemaInfo 
    true:  Enable storing of PSVI information in element and attribute nodes.  
    false:  Disable storing of PSVI information in element and attribute nodes.  
    default:  false  

    setCreateCommentNodes 
    true:  Enable the parser to create comment nodes in the DOM tree being produced. 
    false:  Disable comment nodes being produced.  
    default:  true  


    XercesDOMParser Supported Properties
     

    The behavior of the XercesDOMParser is dependent on the values of the following properties. All of the properties below are set using the "setter" methods (e.g. setExternalSchemaLocation), and are queried using the corresponding "getter" methods (e.g. getExternalSchemaLocation). The following only gives you a quick summary of supported features. Please refer to API Documentation for complete details.

    void setExternalSchemaLocation(const XMLCh*) 
    Description  The XML Schema Recommendation explicitly states that the inclusion of schemaLocation/ noNamespaceSchemaLocation attributes in the instance document is only a hint; it does not mandate that these attributes must be used to locate schemas. Similar situation happens to <import> element in schema documents. This property allows the user to specify a list of schemas to use. If the targetNamespace of a schema specified using this method matches the targetNamespace of a schema occurring in the instance document in schemaLocation attribute, or if the targetNamespace matches the namespace attribute of <import> element, the schema specified by the user using this property will be used (i.e., the schemaLocation attribute in the instance document or on the <import> element will be effectively ignored). 
    Value  The syntax is the same as for schemaLocation attributes in instance documents: e.g, "http://www.example.com file_name.xsd". The user can specify more than one XML Schema in the list. 
    Value Type  XMLCh*  

    void setExternalNoNamespaceSchemaLocation(const XMLCh* const) 
    Description  The XML Schema Recommendation explicitly states that the inclusion of schemaLocation/ noNamespaceSchemaLocation attributes in the instance document is only a hint; it does not mandate that these attributes must be used to locate schemas. This property allows the user to specify the no target namespace XML Schema Location externally. If specified, the instance document's noNamespaceSchemaLocation attribute will be effectively ignored. 
    Value  The syntax is the same as for the noNamespaceSchemaLocation attribute that may occur in an instance document: e.g."file_name.xsd". 
    Value Type  XMLCh*  

    void useScanner(const XMLCh* const) 
    Description  This property allows the user to specify the name of the XMLScanner to use for scanning XML documents. If not specified, the default scanner "IGXMLScanner" is used. 
    Value  The recognized scanner names are:
    1."WFXMLScanner" - scanner that performs well-formedness checking only.
    2. "DGXMLScanner" - scanner that handles XML documents with DTD grammar information.
    3. "SGXMLScanner" - scanner that handles XML documents with XML schema grammar information.
    4. "IGXMLScanner" - scanner that handles XML documents with DTD or/and XML schema grammar information.
    Users can use the predefined constants defined in XMLUni directly (fgWFXMLScanner, fgDGXMLScanner, fgSGXMLScanner, or fgIGXMLScanner) or a string that matches the value of one of those constants. 
    Value Type  XMLCh*  
    note:   See Use Specific Scanner for more programming details.  

    void useImplementation(const XMLCh* const) 
    Description  This property allows the user to specify a set of features which the parser will then use to acquire an implementation from which it will create the DOMDocument to use when reading in an XML file. 
    Value Type  XMLCh*  

    setSecurityManager(Security Manager * const) 
    Description  Certain valid XML and XML Schema constructs can force a processor to consume more system resources than an application may wish. In fact, certain features could be exploited by malicious document writers to produce a denial-of-service attack. This property allows applications to impose limits on the amount of resources the processor will consume while processing these constructs.  
    Value  An instance of the SecurityManager class (see xercesc/util/SecurityManager). This class's documentation describes the particular limits that may be set. Note that, when instantiated, default values for limits that should be appropriate in most settings are provided. The default implementation is not thread-safe; if thread-safety is required, the application should extend this class, overriding methods appropriately. The parser will not adopt the SecurityManager instance; the application is responsible for deleting it when it is finished with it. If no SecurityManager instance has been provided to the parser (the default) then processing strictly conforming to the relevant specifications will be performed.  
    Value Type  SecurityManager*  

    setLowWaterMark(XMLSize_t) 
    Description  If the number of available bytes in the raw buffer is less than the low water mark the parser will attempt to read more data before continuing parsing. By default the value for this parameter is 100 bytes. You may want to set this parameter to 0 if you would like the parser to parse the available data immediately without potentially blocking while waiting for more date.  
    Value  New low water mark.  
    Value Type  XMLSize_t  



    DOMLSParser
     
    Constructing a DOMLSParser
     

    DOMLSParser is a new interface introduced by the W3C DOM Level 3.0 Load and Save Specification. DOMLSParser provides the "Load" interface for parsing XML documents and building the corresponding DOM document tree from various input sources.

    A DOMLSParser instance is obtained from the DOMImplementationLS interface by invoking its createLSParser method. For example:

        #include <xercesc/dom/DOM.hpp>
        #include <xercesc/util/XMLString.hpp>
        #include <xercesc/util/PlatformUtils.hpp>
    
        #include <iostream>
    
        using namespace std;
        using namespace xercesc;
    
        int main (int argc, char* args[]) {
    
            try {
                XMLPlatformUtils::Initialize();
            }
            catch (const XMLException& toCatch) {
                char* message = XMLString::transcode(toCatch.getMessage());
                cout << "Error during initialization! :\n"
                     << message << "\n";
                XMLString::release(&message);
                return 1;
            }
    
    
            XMLCh tempStr[100];
            XMLString::transcode("LS", tempStr, 99);
            DOMImplementation *impl = DOMImplementationRegistry::getDOMImplementation(tempStr);
            DOMLSParser* parser = ((DOMImplementationLS*)impl)->createLSParser(DOMImplementationLS::MODE_SYNCHRONOUS, 0);
    
            // optionally you can set some features on this builder
            if (parser->getDomConfig()->canSetParameter(XMLUni::fgDOMValidate, true))
                parser->getDomConfig()->setParameter(XMLUni::fgDOMValidate, true);
            if (parser->getDomConfig()->canSetParameter(XMLUni::fgDOMNamespaces, true))
                parser->getDomConfig()->setParameter(XMLUni::fgDOMNamespaces, true);
            if (parser->getDomConfig()->canSetParameter(XMLUni::fgDOMDatatypeNormalization, true))
                parser->getDomConfig()->setParameter(XMLUni::fgDOMDatatypeNormalization, true);
    
    
            // optionally you can implement your DOMErrorHandler (e.g. MyDOMErrorHandler)
            // and set it to the builder
            MyDOMErrorHandler* errHandler = new myDOMErrorHandler();
            parser->getDomConfig()->setParameter(XMLUni::fgDOMErrorHandler, errHandler);
    
            char* xmlFile = "x1.xml";
            DOMDocument *doc = 0;
    
            try {
                doc = parser->parseURI(xmlFile);
            }
            catch (const XMLException& toCatch) {
                char* message = XMLString::transcode(toCatch.getMessage());
                cout << "Exception message is: \n"
                     << message << "\n";
                XMLString::release(&message);
                return -1;
            }
            catch (const DOMException& toCatch) {
                char* message = XMLString::transcode(toCatch.msg);
                cout << "Exception message is: \n"
                     << message << "\n";
                XMLString::release(&message);
                return -1;
            }
            catch (...) {
                cout << "Unexpected Exception \n" ;
                return -1;
            }
    
            parser->release();
            delete errHandler;
            return 0;
        }
        

    Please refer to the API Documentation and the sample DOMCount for more detail.


    How to interchange DOMLSInput and SAX InputSource?
     

    DOM L3 has introduced a DOMLSInput which is similar to the SAX InputSource. The Xerces-C++ internals (XMLScanner, Reader, etc.) use the SAX InputSource to process the xml data. In order to support DOM L3, we need to provide a mechanism to allow the Xerces-C++ internals to talk to a DOMLSInput object. Similarly, Xerces-C++ provides some framework classes for specialized types of input source (i.e. LocalFileInputSource, etc.) that are derived from the SAX InputSource. In DOM L3, to allow users implementing their own DOMLSResourceResolver(s), which return a DOMLSInput, to utilize these framework classes, we need to provide a mechanism to map a SAX InputSource to a DOMLSInput. Two wrapper classes are available to interchange DOMLSInput and SAX InputSource:

    Wrapper4DOMLSInput
     

    Wraps a DOMLSInput object to a SAX InputSource.

        #include <xercesc/dom/DOMLSInput.hpp>
        #include <xercesc/framework/Wrapper4DOMLSInput.hpp>
    
        class DBInputSource: public DOMLSInput
        {
        ...
        };
    
        ...
        DOMLSInput *domIS = new DBInputSource;
        Wrapper4DOMLSInput domISWrapper(domIS);
        XercesDOMParser parser;
    
        parser.parse(domISWrapper);
               

    Wrapper4InputSource
     

    Wraps a SAX InputSource object to a DOMLSInput.

        #include <xercesc/framework/Wrapper4InputSource.hpp>
        #include <xercesc/framework/LocalFileInputSource.hpp>
    
        DOMLSInput* MyEntityResolver::resolveResource(  const XMLCh* const    resourceType
                                                      , const XMLCh* const    namespaceUri
                                                      , const XMLCh* const    publicId
                                                      , const XMLCh* const    systemId
                                                      , const XMLCh* const    baseURI)
        {
            return new Wrapper4InputSource(new LocalFileInputSource(baseURI, systemId));
        }
    
               

    Please refer to the API Documentation for more detail.


    DOMLSParser Supported Features
     

    The behavior of the DOMLSParser is dependent on the values of the following features. All of the features below can be set using the function DOMLSParser::getDomConfig()->setParameter(cons XMLCh* , bool). And can be queried using the function bool DOMLSParser::getDomConfig()->getParameter(const XMLCh* const). User can also call DOMLSParser::getDomConfig()->canSetParameter(const XMLCh* , bool) to query whether setting a feature to a specific value is supported

    DOM Features
     
    cdata-sections 
    true:  Keep CDATASection nodes in the document.  
    false:  Not Supported.  
    default:  true  
    XMLUni Predefined Constant:  fgDOMCDATASections  
    note:  Setting this feature to false is not supported.  
    see:  DOM Level 3.0 Load and Save Specification  

    comments 
    true:  Keep Comment nodes in the document.  
    false:  Discard Comment nodes in the document.  
    default:  true  
    XMLUni Predefined Constant:  fgDOMComments  
    see:  DOM Level 3.0 Load and Save Specification  

    charset-overrides-xml-encoding 
    true:  If a higher level protocol such as HTTP [IETF RFC 2616] provides an indication of the character encoding of the input stream being processed, that will override any encoding specified in the XML declaration or the Text declaration (see also [XML 1.0] 4.3.3 "Character Encoding in Entities"). Explicitly setting an encoding in the DOMInputSource overrides encodings from the protocol.  
    false:  Any character set encoding information from higher level protocols is ignored by the parser.  
    default:  true  
    XMLUni Predefined Constant:  fgDOMCharsetOverridesXMLEncoding  
    see:  DOM Level 3.0 Load and Save Specification  

    datatype-normalization 
    true:  Let the validation process do its datatype normalization that is defined in the used schema language.  
    false:  Disable datatype normalization. The XML 1.0 attribute value normalization always occurs though.  
    default:  false  
    XMLUni Predefined Constant:  fgDOMDatatypeNormalization  
    note:  Note that setting this feature to true does not affect the DTD normalization operation which always takes place, in accordance to XML 1.0 (Second Edition).  
    see:  DOM Level 3.0 Load and Save Specification  
    see:  XML 1.0 (Second Edition).  

    entities 
    true:  Create EntityReference nodes in the DOM tree. The EntityReference nodes and their child nodes will be read-only.  
    false:  Do not create EntityReference nodes in the DOM tree. No EntityReference nodes will be created, only the nodes corresponding to their fully expanded substitution text will be created.  
    default:  true  
    XMLUni Predefined Constant:  fgDOMEntities  
    note:  This feature only affects the appearance of EntityReference nodes in the DOM tree. The document will always contain the entity reference child nodes.  
    see:  DOM Level 3.0 Load and Save Specification  

    canonical-form 
    true:  Not Supported.  
    false:  Do not canonicalize the document.  
    default:  false  
    XMLUni Predefined Constant:  fgDOMCanonicalForm  
    note:  Setting this feature to true is not supported.  
    see:  DOM Level 3.0 Load and Save Specification  

    infoset 
    true:  Not Supported.  
    false:  No effect.  
    default:  false  
    XMLUni Predefined Constant:  fgDOMInfoset  
    note:  Setting this feature to true is not supported.  
    see:  DOM Level 3.0 Load and Save Specification  

    namespaces 
    true:  Perform Namespace processing  
    false:  Do not perform Namespace processing 
    default:  true  
    XMLUni Predefined Constant:  fgDOMNamespaces  
    note:  If the validation is on, then the document must contain a grammar that supports the use of namespaces  
    see:  validation  
    see:  DOM Level 3.0 Load and Save Specification  

    namespace-declarations 
    true:  Include namespace declaration attributes, specified or defaulted from the schema or the DTD, in the document.  
    false:  Not Supported.  
    default:  true  
    XMLUni Predefined Constant:  fgDOMNamespaceDeclarations  
    note:  Setting this feature to false is not supported.  
    see:  namespaces  
    see:  DOM Level 3.0 Load and Save Specification  

    supported-mediatypes-only 
    true:  Not Supported.  
    false:  Don't check the media type, accept any type of data.  
    default:  false  
    XMLUni Predefined Constant:  fgDOMSupportedMediatypesOnly  
    note:  Setting this feature to true is not supported.  
    see:  DOM Level 3.0 Load and Save Specification  

    validate-if-schema 
    true:  When validation is true, the parser will validate the document only if a grammar is specified. 
    false:  Validation is determined by the state of the validation feature.  
    default:  false  
    XMLUni Predefined Constant:  fgDOMValidateIfSchema  
    see:  validation  
    see:  DOM Level 3.0 Load and Save Specification  

    validation 
    true:  Report all validation errors.  
    false:  Do not report validation errors.  
    default:  false  
    XMLUni Predefined Constant:  fgDOMValidate  
    note:  If this feature is set to true, the document must specify a grammar. If this feature is set to false and document specifies a grammar, that grammar might be parsed but no validation of the document contents will be performed.  
    see:  validate-if-schema  
    see:  http://apache.org/xml/features/nonvalidating/load-external-dtd  
    see:  DOM Level 3.0 Load and Save Specification  

    whitespace-in-element-content 
    true:  Include text nodes that can be considered "ignorable whitespace" in the DOM tree.  
    false:  Do not include ignorable whitespace in the DOM tree.  
    default:  true  
    XMLUni Predefined Constant:  fgDOMElementContentWhitespace  
    note:  The only way that the parser can determine if text is ignorable is by reading the associated grammar and having a content model for the document. When ignorable whitespace text nodes are included in the DOM tree, they will be flagged as ignorable; and the method DOMText::isIgnorableWhitespace() will return true for those text nodes.  
    see:  DOM Level 3.0 Load and Save Specification  

    Xerces Features
     
    http://apache.org/xml/features/validation/schema 
    true:  Enable the parser's schema support.  
    false:  Disable the parser's schema support.  
    default:  false  
    XMLUni Predefined Constant:  fgXercesSchema  
    note  If set to true, namespace processing must also be turned on.  
    see:  namespaces  

    http://apache.org/xml/features/validation/schema-full-checking 
    true:  Enable full schema constraint checking, including checking which may be time-consuming or memory intensive. Currently, particle unique attribution constraint checking and particle derivation restriction checking are controlled by this option.  
    false:  Disable full schema constraint checking.  
    default:  false  
    XMLUni Predefined Constant:  fgXercesSchemaFullChecking  
    note:  This feature checks the Schema grammar itself for additional errors that are time-consuming or memory intensive. It does not affect the level of checking performed on document instances that use Schema grammars.  
    see:  http://apache.org/xml/features/validation/schema  

    http://apache.org/xml/features/validating/load-schema 
    true:  Load the schema.  
    false:  Don't load the schema if it wasn't found in the grammar pool.  
    default:  true  
    XMLUni Predefined Constant:  fgXercesLoadSchema  
    note:  This feature is ignored and no schemas are loaded if schema processing is disabled.  
    see:  schema  

    http://apache.org/xml/features/nonvalidating/load-external-dtd 
    true:  Load the External DTD.  
    false:  Ignore the external DTD completely.  
    default:  true  
    XMLUni Predefined Constant:  fgXercesLoadExternalDTD  
    note  This feature is ignored and DTD is always loaded when validation is on.  
    see:  validation  

    http://apache.org/xml/features/continue-after-fatal-error 
    true:  Attempt to continue parsing after a fatal error.  
    false:  Stops parse on first fatal error.  
    default:  false  
    XMLUni Predefined Constant:  fgXercesContinueAfterFatalError  
    note:  The behavior of the parser when this feature is set to true is undetermined! Therefore use this feature with extreme caution because the parser may get stuck in an infinite loop or worse.  

    http://apache.org/xml/features/validation-error-as-fatal 
    true:  The parser will treat validation error as fatal and will exit depends on the state of http://apache.org/xml/features/continue-after-fatal-error.  
    false:  The parser will report the error and continue processing.  
    default:  false  
    XMLUni Predefined Constant:  fgXercesValidationErrorAsFatal  
    note:  Setting this true does not mean the validation error will be printed with the word "Fatal Error". It is still printed as "Error", but the parser will exit if http://apache.org/xml/features/continue-after-fatal-error is set to false.  
    see:  http://apache.org/xml/features/continue-after-fatal-error  

    http://apache.org/xml/features/validation/use-cachedGrammarInParse 
    true:  Use cached grammar if it exists in the pool. 
    false:  Parse the schema grammar. 
    default:  false  
    XMLUni Predefined Constant:  fgXercesUseCachedGrammarInParse  
    note:  If http://apache.org/xml/features/validation/cache-grammarFromParse is enabled, this feature is set to true automatically and any setting to this feature by the user is a no-op. 
    see:  http://apache.org/xml/features/validation/cache-grammarFromParse  

    http://apache.org/xml/features/validation/cache-grammarFromParse 
    true:  Cache the grammar in the pool for re-use in subsequent parses. 
    false:  Do not cache the grammar in the pool 
    default:  false  
    XMLUni Predefined Constant:  fgXercesCacheGrammarFromParse  
    note:  If set to true, the http://apache.org/xml/features/validation/use-cachedGrammarInParse is also set to true automatically. 
    see:  http://apache.org/xml/features/validation/use-cachedGrammarInParse  

    http://apache.org/xml/features/standard-uri-conformant 
    true:  Force standard uri conformance.  
    false:  Do not force standard uri conformance.  
    default:  false  
    XMLUni Predefined Constant:  fgXercesStandardUriConformant  
    note:  If set to true, malformed uri will be rejected and fatal error will be issued.  

    http://apache.org/xml/features/calculate-src-ofs 
    true:  Enable source offset calculation.  
    false:  Disable source offset calculation.  
    default:  false  
    XMLUni Predefined Constant:  fgXercesCalculateSrcOfs  
    note:  If set to true, the user can inquire about the current source offset within the input source. Setting it to false (default) improves the performance. 

    http://apache.org/xml/features/validation/identity-constraint-checking 
    true:  Enable identity constraint checking.  
    false:  Disable identity constraint checking.  
    default:  true  
    XMLUni Predefined Constant:  fgXercesIdentityConstraintChecking  

    http://apache.org/xml/features/generate-synthetic-annotations 
    true:  Enable generation of synthetic annotations. A synthetic annotation will be generated when a schema component has non-schema attributes but no child annotation.  
    false:  Disable generation of synthetic annotations.  
    default:  false  
    XMLUni Predefined Constant:  fgXercesGenerateSyntheticAnnotations  

    http://apache.org/xml/features/validate-annotations 
    true:  Enable validation of annotations.  
    false:  Disable validation of annotations.  
    default:  false  
    XMLUni Predefined Constant:  fgXercesValidateAnnotations  
    note:  Each annotation is validated independently.  

    http://apache.org/xml/features/schema/ignore-annotations 
    true:  Do not generate XSAnnotations when traversing a schema. 
    false:  Generate XSAnnotations when traversing a schema. 
    default:  false  
    XMLUni Predefined Constant:  fgXercesIgnoreAnnotations  

    http://apache.org/xml/features/disable-default-entity-resolution 
    true:  The parser will not attempt to resolve the entity when the resolveEntity method returns NULL. 
    false:  The parser will attempt to resolve the entity when the resolveEntity method returns NULL. 
    default:  false  
    XMLUni Predefined Constant:  fgXercesDisableDefaultEntityResolution  

    http://apache.org/xml/features/validation/schema/skip-dtd-validation 
    true:  When schema validation is on the parser will ignore the DTD, except for entities. 
    false:  The parser will not ignore DTDs when validating. 
    default:  false  
    XMLUni Predefined Constant:  fgXercesSkipDTDValidation  
    see:  Schema Validation 

    http://apache.org/xml/features/validation/ignoreCachedDTD 
    true:  Ignore a cached DTD when an XML document contains both an internal and external DTD, and the use cached grammar from parse option is enabled. Currently, we do not allow using cached DTD grammar when an internal subset is present in the document. This option will only affect the behavior of the parser when an internal and external DTD both exist in a document (i.e. no effect if document has no internal subset). 
    false:  Don't ignore cached DTD.  
    default:  false  
    XMLUni Predefined Constant:  fgXercesIgnoreCachedDTD  
    see:  http://apache.org/xml/features/validation/use-cachedGrammarInParse  

    http://apache.org/xml/features/validation/schema/handle-multiple-imports 
    true:  During schema validation allow multiple schemas with the same namespace to be imported. 
    false:  Don't import multiple schemas with the same namespace.  
    default:  false  
    XMLUni Predefined Constant:  fgXercesHandleMultipleImports  

    http://apache.org/xml/features/dom-has-psvi-info 
    true:  Enable storing of PSVI information in element and attribute nodes. 
    false:  Disable storing of PSVI information in element and attribute nodes.  
    default:  false  
    XMLUni Predefined Constant:  fgXercesDOMHasPSVIInfo  

    http://apache.org/xml/features/dom/user-adopts-DOMDocument 
    true:  The caller will adopt the DOMDocument that is returned from the parse method and thus is responsible to call DOMDocument::release() to release the associated memory. The parser will not release it. The ownership is transferred from the parser to the caller.  
    false:  The returned DOMDocument from the parse method is owned by the parser and thus will be deleted when the parser is released.  
    default:  false  
    XMLUni Predefined Constant:  fgXercesUserAdoptsDOMDocument  
    see:  DOMLSParser API Documentation, (DOMLSParser::parse and DOMLSParser::resetDocumentPool)  



    DOMLSParser Supported Properties
     

    The behavior of the DOMLSParser is dependent on the values of the following properties. All of the properties below can be set using the function DOMLSParser::getDomConfig()->setParameter(const XMLCh* , const void*). It takes a void pointer as the property value. Application is required to initialize this void pointer to a correct type. Please check the column "Value Type" below to learn exactly what type of property value each property expects for processing. Passing a void pointer that was initialized with a wrong type will lead to unexpected result. If the same property is set more than once, the last one takes effect.

    Property values can be queried using the function void* DOMLSParser::getDomConfig()->getParameter(const XMLCh* ). The parser owns the returned pointer, and the memory allocated for the returned pointer will be destroyed when the parser is released. To ensure accessibility of the returned information after the parser is released, callers need to copy and store the returned information somewhere else. Since the returned pointer is a generic void pointer, check the column "Value Type" below to learn exactly what type of object each property returns for replication.

    Xerces Properties
     
    http://apache.org/xml/properties/schema/external-schemaLocation 
    Description  The XML Schema Recommendation explicitly states that the inclusion of schemaLocation/ noNamespaceSchemaLocation attributes in the instance document is only a hint; it does not mandate that these attributes must be used to locate schemas. Similar situation happens to <import> element in schema documents. This property allows the user to specify a list of schemas to use. If the targetNamespace of a schema specified using this method matches the targetNamespace of a schema occurring in the instance document in schemaLocation attribute, or if the targetNamespace matches the namespace attribute of <import> element, the schema specified by the user using this property will be used (i.e., the schemaLocation attribute in the instance document or on the <import> element will be effectively ignored).  
    Value  The syntax is the same as for schemaLocation attributes in instance documents: e.g, "http://www.example.com file_name.xsd". The user can specify more than one XML Schema in the list.  
    Value Type  XMLCh*  
    XMLUni Predefined Constant:  fgXercesSchemaExternalSchemaLocation  

    http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation 
    Description  The XML Schema Recommendation explicitly states that the inclusion of schemaLocation/ noNamespaceSchemaLocation attributes in the instance document is only a hint; it does not mandate that these attributes must be used to locate schemas. This property allows the user to specify the no target namespace XML Schema Location externally. If specified, the instance document's noNamespaceSchemaLocation attribute will be effectively ignored.  
    Value  The syntax is the same as for the noNamespaceSchemaLocation attribute that may occur in an instance document: e.g."file_name.xsd".  
    Value Type  XMLCh*  
    XMLUni Predefined Constant:  fgXercesSchemaExternalNoNameSpaceSchemaLocation  

    http://apache.org/xml/properties/scannerName 
    Description  This property allows the user to specify the name of the XMLScanner to use for scanning XML documents. If not specified, the default scanner "IGXMLScanner" is used. 
    Value  The recognized scanner names are:
    1."WFXMLScanner" - scanner that performs well-formedness checking only.
    2. "DGXMLScanner" - scanner that handles XML documents with DTD grammar information.
    3. "SGXMLScanner" - scanner that handles XML documents with XML schema grammar information.
    4. "IGXMLScanner" - scanner that handles XML documents with DTD or/and XML schema grammar information.
    Users can use the predefined constants defined in XMLUni directly (fgWFXMLScanner, fgDGXMLScanner, fgSGXMLScanner, or fgIGXMLScanner) or a string that matches the value of one of those constants. 
    Value Type  XMLCh*  
    XMLUni Predefined Constant:  fgXercesScannerName  
    note:   See Use Specific Scanner for more programming details.  

    http://apache.org/xml/properties/parser-use-DOMDocument-from-Implementation 
    Description  This property allows the user to specify a set of features which the parser will then use to acquire an implementation from which it will create the DOMDocument to use when reading in an XML file. 
    Value Type  XMLCh*  
    XMLUni Predefined Constant:  fgXercesParserUseDocumentFromImplementation  

    http://apache.org/xml/properties/security-manager 
    Description  Certain valid XML and XML Schema constructs can force a processor to consume more system resources than an application may wish. In fact, certain features could be exploited by malicious document writers to produce a denial-of-service attack. This property allows applications to impose limits on the amount of resources the processor will consume while processing these constructs.  
    Value  An instance of the SecurityManager class (see xercesc/util/SecurityManager). This class's documentation describes the particular limits that may be set. Note that, when instantiated, default values for limits that should be appropriate in most settings are provided. The default implementation is not thread-safe; if thread-safety is required, the application should extend this class, overriding methods appropriately. The parser will not adopt the SecurityManager instance; the application is responsible for deleting it when it is finished with it. If no SecurityManager instance has been provided to the parser (the default) then processing strictly conforming to the relevant specifications will be performed.  
    Value Type  SecurityManager*  
    XMLUni Predefined Constant:  fgXercesSecurityManager  

    http://apache.org/xml/properties/low-water-mark 
    Description  If the number of available bytes in the raw buffer is less than the low water mark the parser will attempt to read more data before continuing parsing. By default the value for this parameter is 100 bytes. You may want to set this parameter to 0 if you would like the parser to parse the available data immediately without potentially blocking while waiting for more date.  
    Value  New low water mark.  
    Value Type  XMLSize_t*  
    XMLUni Predefined Constant:  fgXercesLowWaterMark  




    DOMLSSerializer
     
    Constructing a DOMLSSerializer
     

    DOMLSSerializer is a new interface introduced by the W3C DOM Level 3.0 Load and Save Specification. DOMLSSerializer provides the "Save" interface for serializing (writing) a DOM document into XML data. The XML data can be written to various type of output stream.

    A DOMLSSerializer instance is obtained from the DOMImplementationLS interface by invoking its createLSSerializer method. For example:

        #include <xercesc/dom/DOM.hpp>
        #include <xercesc/util/XMLString.hpp>
        #include <xercesc/util/PlatformUtils.hpp>
    
        #include <iostream>
    
        using namespace std;
        using namespace xercesc;
    
        int serializeDOM(DOMNode* node) {
    
            XMLCh tempStr[100];
            XMLString::transcode("LS", tempStr, 99);
            DOMImplementation *impl = DOMImplementationRegistry::getDOMImplementation(tempStr);
            DOMLSSerializer* theSerializer = ((DOMImplementationLS*)impl)->createLSSerializer();
    
            // optionally you can set some features on this serializer
            if (theSerializer->getDomConfig()->canSetParameter(XMLUni::fgDOMWRTDiscardDefaultContent, true))
                theSerializer->getDomConfig()->setParameter(XMLUni::fgDOMWRTDiscardDefaultContent, true);
    
            if (theSerializer->getDomConfig()->canSetParameter(XMLUni::fgDOMWRTFormatPrettyPrint, true))
                 theSerializer->getDomConfig()->setParameter(XMLUni::fgDOMWRTFormatPrettyPrint, true);
    
            // optionally you can implement your DOMLSSerializerFilter (e.g. MyDOMLSSerializerFilter)
            // and set it to the serializer
            DOMLSSerializer* myFilter = new myDOMLSSerializerFilter();
            theSerializer->setFilter(myFilter);
    
            // optionally you can implement your DOMErrorHandler (e.g. MyDOMErrorHandler)
            // and set it to the serializer
            DOMErrorHandler* errHandler = new myDOMErrorHandler();
            theSerializer->getDomConfig()->setParameter(XMLUni::fgDOMErrorHandler, myErrorHandler);
    
            // StdOutFormatTarget prints the resultant XML stream
            // to stdout once it receives any thing from the serializer.
            XMLFormatTarget *myFormTarget = new StdOutFormatTarget();
            DOMLSOutput* theOutput = ((DOMImplementationLS*)impl)->createLSOutput();
            theOutput->setByteStream(myFormTarget);
    
            try {
                // do the serialization through DOMLSSerializer::write();
                theSerializer->write(node, theOutput);
            }
            catch (const XMLException& toCatch) {
                char* message = XMLString::transcode(toCatch.getMessage());
                cout << "Exception message is: \n"
                     << message << "\n";
                XMLString::release(&message);
                return -1;
            }
            catch (const DOMException& toCatch) {
                char* message = XMLString::transcode(toCatch.msg);
                cout << "Exception message is: \n"
                     << message << "\n";
                XMLString::release(&message);
                return -1;
            }
            catch (...) {
                cout << "Unexpected Exception \n" ;
                return -1;
            }
    
            theOutput->release();
            theSerializer->release();
            delete myErrorHandler;
            delete myFilter;
            delete myFormTarget;
            return 0;
        }
    
        

    Please refer to the API Documentation and the sample DOMPrint for more detail.


    How does DOMLSSerializer handle built-in entity Reference in node value?
     

    Say for example you parse the following xml document using XercesDOMParser or DOMLSParser

    <root>
    <Test attr=" > ' &lt; &gt; &amp; &quot; &apos; "></Test>
    <Test attr=' > " &lt; &gt; &amp; &quot; &apos; '></Test>
    <Test> >  " ' &lt; &gt; &amp; &quot; &apos; </Test>
    <Test><![CDATA[< > & " ' &lt; &gt; &amp; &quot; &apos; ] ]></Test>
    </root>
    

    According to XML 1.0 spec, 4.4 XML Processor Treatment of Entities and References, the parser will expand the entity reference as follows

    <root>
    <Test attr=" > ' < > & " ' "></Test>
    <Test attr=' > " < > & " ' '></Test>
    <Test> >  " ' < > & " ' </Test>
    <Test><![CDATA[< > & " ' &lt; &gt; &amp; &quot; &apos; ] ]></Test>
    </root>
    

    and pass such DOMNode to DOMLSSerializer for serialization. From DOMLSSerializer perspective, it does not know what the original string was. All it sees is above DOMNode from the parser. But since the DOMLSSerializer is supposed to generate something that is parsable if sent back to the parser, it cannot print such string as is. Thus the DOMLSSerializer is doing some "touch up", just enough, to get the string parsable.

    So for example since the appearance of < and & in text value will lead to not well-form XML error, the DOMLSSerializer fixes them to &lt; and &amp; respectively; while the >, ' and " in text value are ok to the parser, so DOMLSSerializer does not do anything to them. Similarly the DOMLSSerializer fixes some of the characters for the attribute value but keep everything in CDATA.

    So the string that is generated by DOMLSSerializer will look like this

    <root>
    <Test attr=" > ' &lt; > &amp; &quot; ' "/>
    <Test attr=" > &quot; &lt; > &amp; &quot; ' "/>
    <Test> >  " ' &lt; > &amp; " ' </Test>
    <Test><![CDATA[< > & " ' &lt; &gt; &amp; &quot; &apos; ] ]></Test>
    </root>
    

    Below is the table that summarizes how built-in entity reference are handled for different DOM node types:

    Input/Output  <  >  &  "  '  &lt;  &gt;  &amp;  &quot;  &apos; 
    Attribute  N/A  N/A  &quot;  &lt;  &amp;  &quot; 
    Text  N/A  N/A  &lt;  &amp; 
    CDATA  &lt;  &gt;  &amp;  &quot;  &apos; 

    DOMLSSerializer Supported Features
     

    The behavior of the DOMLSSerializer is dependent on the values of the following features. All of the features below can be set using the function DOMLSSerializer::getDomConfig()->setParameter(cons XMLCh* , bool). And can be queried using the function bool DOMLSSerializer::getDomConfig()->getParameter(const XMLCh* const). User can also call DOMLSSerializer::getDomConfig()->canSetParameter(const XMLCh* , bool) to query whether setting a feature to a specific value is supported

    DOM Features
     
    discard-default-content 
    true:  Use whatever information available to the implementation (i.e. XML schema, DTD, the specified flag on Attr nodes, and so on) to decide what attributes and content should be discarded or not.  
    false:  Keep all attributes and all content.  
    default:  true  
    XMLUni Predefined Constant:  fgDOMWRTDiscardDefaultContent  
    note:  Note that the specified flag on Attr nodes in itself is not always reliable, it is only reliable when it is set to false since the only case where it can be set to false is if the attribute was created by the implementation. The default content won't be removed if an implementation does not have any information available.  
    see:  DOM Level 3.0 Load and Save Specification  

    entities 
    true:  EntityReference nodes are serialized as an entity reference of the form "&entityName;" in the output.  
    false:  EntityReference nodes are serialized as expanded substitution text, unless the corresponding entity definition is not found.  
    default:  true  
    XMLUni Predefined Constant:  fgDOMWRTEntities  
    note:  This feature only affects the output XML stream. The DOM tree to be serialized will not be changed.  
    see:  DOM Level 3.0 Load and Save Specification  

    canonical-form 
    true:  Not Supported.  
    false:  Do not canonicalize the output.  
    default:  false  
    XMLUni Predefined Constant:  fgDOMWRTCanonicalForm  
    note:  Setting this feature to true is not supported.  
    see:  format-pretty-print  
    see:  DOM Level 3.0 Load and Save Specification  

    format-pretty-print 
    true:  Formatting the output by adding whitespace to produce a pretty-printed, indented, human-readable form. The exact form of the transformations is not specified by this specification.  
    false:  Don't pretty-print the result.  
    default:  false  
    XMLUni Predefined Constant:  fgDOMWRTFormatPrettyPrint  
    note:  Setting this feature to true will set the feature canonical-form to false.  
    see:  canonical-form  
    see:  DOM Level 3.0 Load and Save Specification  

    normalize-characters 
    true:  Not Supported.  
    false:  Do not perform character normalization.  
    note:  Setting this feature to true is not supported.  
    default:  false  
    XMLUni Predefined Constant:  fgDOMWRTNormalizeCharacters  
    see:  DOM Level 3.0 Load and Save Specification  

    split-cdata-sections 
    true:  Split CDATA sections containing the CDATA section termination marker ']]>', or unrepresentable characters in the output encoding. When a CDATA section is split a warning is issued.  
    false:  Signal an error if a CDATASection contains CDATA section termination marker ']]>', or an unrepresentable character.  
    default:  true  
    XMLUni Predefined Constant:  fgDOMWRTSplitCdataSections  
    see:  DOM Level 3.0 Load and Save Specification  

    validation 
    true:  Not Supported.  
    false:  Do not report validation errors.  
    note:  Setting this feature to true is not supported.  
    default:  false  
    XMLUni Predefined Constant:  fgDOMWRTValidation  
    see:  DOM Level 3.0 Load and Save Specification  

    whitespace-in-element-content 
    true:  Include text nodes that can be considered "ignorable whitespace" in the DOM tree.  
    false:  Not Supported.  
    note:  Setting this feature to false is not supported.  
    default:  true  
    XMLUni Predefined Constant:  fgDOMWRTWhitespaceInElementContent  
    see:  DOM Level 3.0 Load and Save Specification  

    xml declaration 
    true:  Include xml declaration.  
    false:  Do not include xml declaration.  
    default:  true  
    XMLUni Predefined Constant:  fgDOMXMLDeclaration  


    Xerces Features
     
    byte-order-mark 
    true:  Enable the writing of the Byte-Order-Mark (BOM), in the resultant XML stream.  
    false:  Disable the writing of BOM.  
    note:  The BOM is written at the beginning of the resultant XML stream, if and only if a DOMDocumentNode is rendered for serialization, and the output encoding is among the encodings listed here (alias acceptable), UTF-8, UTF-16, UTF-16LE, UTF-16BE, UCS-4, UCS-4LE, and UCS-4BE. In the case of UTF-16/UCS-4, the host machine's endian mode is referred to determine the appropriate BOM to be written.  
    default:  false  
    XMLUni Predefined Constant:  fgDOMWRTBOM  
    see:  XML 1.0 Appendix F for more information about BOM.  




    Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.
    xerces-c-3.1.1/doc/html/domcount-3.html0000644000175000017500000003714611363617747016664 0ustar borisborisSample: DOMCount
    http://xml.apache.org/http://www.apache.org/http://www.w3.org/

    Xerces-C++ 3.1.1
    Readme
    Installation
    Build Instructions

    Programming
    Samples
    FAQs

    API Reference
    DOM C++ Binding
    Migration Guide

    DOMCount
     

    DOMCount uses the provided DOM API to parse an XML file, construct the DOM tree and walk through the tree counting the elements (using just one API call).

    Running DOMCount
     

    The DOMCount sample parses an XML file and prints out the number of elements in the file. To run DOMCount, enter the following

    DOMCount <XML file>

    The following parameters may be set from the command line

    Usage:
        DOMCount [options] <XML file | List file>
    
    This program invokes the DOMLSParser, builds the DOM tree,
    and then prints the number of elements found in each XML file.
    
    Options:
        -l          Indicate the input file is a List File that has a list of xml files.
                    Default to off (Input file is an XML file).
        -v=xxx      Validation scheme [always | never | auto*].
        -n          Enable namespace processing. Defaults to off.
        -s          Enable schema processing. Defaults to off.
        -f          Enable full schema constraint checking. Defaults to off.
        -locale=ll_CC specify the locale, default: en_US
        -p          Print out names of elements and attributes encountered.
        -?          Show this help.
    
      * = Default if not provided explicitly.
    

    -v=always will force validation
    -v=never will not use any validation
    -v=auto will validate if a DOCTYPE declaration or a schema declaration is present in the XML document

    Here is a sample output from DOMCount

    cd xerces-c-3.1.1/samples/data
    DOMCount -v=always personal.xml
    personal.xml: 20 ms (37 elems)
    NoteThe time reported by the system may be different, depending on your processor speed.



    Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.
    xerces-c-3.1.1/doc/html/index.html0000644000175000017500000004315011363617747015773 0ustar borisborisXerces C++ XML Parser
    http://xml.apache.org/http://www.apache.org/http://www.w3.org/

    Xerces-C++ 3.1.1
    Readme
    Installation
    Build Instructions

    Programming
    Samples
    FAQs

    API Reference
    DOM C++ Binding
    Migration Guide

    Xerces-C++ Version 3.1.1
     

    Xerces-C++ is a validating XML parser written in a portable subset of C++. Xerces-C++ makes it easy to give your application the ability to read and write XML data. A shared library is provided for parsing, generating, manipulating, and validating XML documents using the DOM, SAX, and SAX2 APIs. For an introduction to programming with Xerces-C++ refer to the Programming Guide.

    Xerces-C++ is faithful to the XML 1.0 recommendation and many associated standards (see Features below).

    The parser provides high performance, modularity, and scalability. Source code, samples and API documentation are provided with the parser. For portability, care has been taken to make minimal use of templates, no RTTI, and minimal use of #ifdefs.


    Applications of the Xerces Parser
     

    Xerces has rich generating and validating capabilities. The parser is used for:

    • Building XML-savvy Web servers
    • Building next generation of vertical applications that use XML as their data format
    • On-the-fly validation for creating XML editors
    • Ensuring the integrity of e-business data expressed in XML
    • Building truly internationalized XML applications

    Features
     

    License Information
     

    The Xerces-C++ Version 3.1.1 is available in both source distribution and binary distribution. Xerces-C++ is made available under the Apache Software License, Version 2.0.



    Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.
    xerces-c-3.1.1/doc/html/ApacheDOMC++Binding.html0000644000175000017500000050523411272046770020126 0ustar borisboris C++ Language Binding for DOM Level 3

    C++ Language Binding for DOM Level 3



    This document contains the Apache Recommended C++ Language binding for the Document Object Model Level 3.0 Core, Document Object Model Level 2.0 Traversal and Range and for the Document Object Model Level 3.0 Load and Save, as well as the Document Object Model Level 3.0 XPath Note. 

    The definitions are divided into Core, Traversal, Range, Load and Save and XPath. The headers are also available in Xerces-C++ distribution.

    Note:

    1. Constructor and Destructors are implementation specific
    2. String is represented by "XMLCh*" which is a pointer to unsigned 16 bit type holding utf-16 values, null terminated.
      • typedef unsigned int XMLCh
    3. XMLSize_t is an implementation-dependent unsigned integral type
      • typedef size_t XMLSize_t
    4. DOMObject is represented as void*
    5. C++ Memory Management:
      1. A member method "release()" is added for releasing any "orphaned" resources that were created through createXXXX factory method.
      2. Memory for any returned object e.g.
        • DOMImplementation* getDOMImplementation(const XMLCh* features)
        • ... etc.
        • are owned by implementation

    Change History

    Date Description
    Xerces-C++ 2.0: July 23, 2002 Created
    Xerces-C++ 2.1: August 26, 2002 Modified
    - add const modifier to DOMNode::lookupNamespacePrefix
    - add const modifier to DOMNode::lookupNamespaceURI
    - add const modifier to DOMNode::isDefaultNamespace
    Xerces-C++ 2.2: February 7, 2003 Modified
    - add DOMElement::getTypeInfo and DOMAttr::getTypeInfo and DOMTypeInfo.hpp
    - add const modifier to DOMNode::compareTreePosition, and add DOMTreePosition
    - add const modifier to DOMNode::isSameNode
    - add const modifier to DOMNode::isEqualNode
    - add const modifier to DOMImplementation::hasFeature
    - fix typo: "Mode:" -> "Model"
    - added DOMAttr::isID
    - added DOMElement::setIdAttribute, DOMElement::setIdAttributeNS, DOMElement::setIdAttributeNode
    Xerces-C++ 2.3 Modified
    - added DOMError::getRelatedData, DOMError::setRelatedData, DOMError::SetType, DOMError::getType
    - removed DOMDocument::setFeature, DOMDocument::getFeature, DOMDocument::canSetFeature
    - added DOMDocument::getDOMConfiguration
    Xerces-C++ 2.4 Modified
    - added DOM Level 3 XPath interfaces
    Xerces-C++ 3.0 Modified
    - Updated to match the final DOM Level 3 Recommendation documents
    Xerces-C++ 3.1 Modified
    - added DOM ElementTraversal


    A: Document Object Model: Core

    DOMImplementationRegistry.hpp:

    class DOMImplementationRegistry
    {
    public:
    static DOMImplementation* getDOMImplementation(const XMLCh* features);
    static DOMImplementationList* getDOMImplementationList(const XMLCh* features);
    static void addSource(DOMImplementationSource* source);
    };

    DOMImplementationSource.hpp:

    class DOMImplementationSource
    {
    public:
    virtual DOMImplementation* getDOMImplementation(const XMLCh* features) const = 0;
    virtual DOMImplementationList* getDOMImplementationList(const XMLCh* features) const = 0;
    };

    DOMImplementationList.hpp:

    class DOMImplementationList
    {
    public:
    virtual DOMImplementation *item(XMLSize_t index) const = 0;
    virtual XMLSize_t getLength() const = 0;
    virtual void release() = 0;
    };

    DOMImplementation.hpp:

    class DOMImplementation : public DOMImplementationLS
    {
    public:
    virtual bool hasFeature(const XMLCh *feature, const XMLCh *version) const = 0;
    virtual DOMDocumentType *createDocumentType(const XMLCh *qualifiedName, const XMLCh *publicId, const XMLCh *systemId) = 0;
    virtual DOMDocument *createDocument(const XMLCh *namespaceURI, const XMLCh *qualifiedName, DOMDocumentType *doctype, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0;
    virtual void* getFeature(const XMLCh* feature, const XMLCh* version) const = 0;
    virtual DOMDocument *createDocument(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0;
    static DOMImplementation *getImplementation();
    };

    DOMConfiguration.hpp:

    class DOMConfiguration
    {
    public:
    virtual void setParameter(const XMLCh* name, const void* value) = 0;
    virtual void setParameter(const XMLCh* name, bool value) = 0;
    virtual const void* getParameter(const XMLCh* name) const = 0;
    virtual bool canSetParameter(const XMLCh* name, const void* value) const = 0;
    virtual bool canSetParameter(const XMLCh* name, bool value) const = 0;
    virtual const DOMStringList* getParameterNames() const = 0;
    };

    DOMStringList.hpp:

    class DOMStringList
    {
    public:
    virtual const XMLCh *item(XMLSize_t index) const = 0;
    virtual XMLSize_t getLength() const = 0;
    virtual bool contains(const XMLCh*) const = 0;
    virtual void release() = 0;
    };

    DOMNamedNodeMap.hpp:

    class DOMNamedNodeMap
    {
    public:
    virtual DOMNode *setNamedItem(DOMNode *arg) = 0;
    virtual DOMNode *item(XMLSize_t index) const = 0;
    virtual DOMNode *getNamedItem(const XMLCh *name) const = 0;
    virtual XMLSize_t getLength() const = 0;
    virtual DOMNode *removeNamedItem(const XMLCh *name) = 0;
    virtual DOMNode *getNamedItemNS(const XMLCh *namespaceURI, const XMLCh *localName) const = 0;
    virtual DOMNode *setNamedItemNS(DOMNode *arg) = 0;
    virtual DOMNode *removeNamedItemNS(const XMLCh *namespaceURI, const XMLCh *localName) = 0;
    };

    DOMNodeList.hpp:

    class DOMNodeList
    {
    public:
    virtual DOMNode *item(XMLSize_t index) const = 0;
    virtual XMLSize_t getLength() const = 0;
    };

    DOMError.hpp:

    class DOMError
    {
    public:
    virtual ErrorSeverity getSeverity() const = 0;
    virtual const XMLCh* getMessage() const = 0;
    virtual DOMLocator* getLocation() const = 0;
    virtual void* getRelatedException() const = 0;
    virtual const XMLCh* getType() const = 0;
    virtual void* getRelatedData() const = 0;
    };

    DOMException.hpp:

    class DOMException
    {
    public:
    enum ExceptionCode {
    INDEX_SIZE_ERR = 1,
    DOMSTRING_SIZE_ERR = 2,
    HIERARCHY_REQUEST_ERR = 3,
    WRONG_DOCUMENT_ERR = 4,
    INVALID_CHARACTER_ERR = 5,
    NO_DATA_ALLOWED_ERR = 6,
    NO_MODIFICATION_ALLOWED_ERR = 7,
    NOT_FOUND_ERR = 8,
    NOT_SUPPORTED_ERR = 9,
    INUSE_ATTRIBUTE_ERR = 10,
    INVALID_STATE_ERR = 11,
    SYNTAX_ERR = 12,
    INVALID_MODIFICATION_ERR = 13,
    NAMESPACE_ERR = 14,
    INVALID_ACCESS_ERR = 15,
    VALIDATION_ERR = 16,
    TYPE_MISMATCH_ERR = 17,
    };
    };

    DOMLocator.hpp:

    class DOMLocator
    {
    public:
    virtual XMLFileLoc getLineNumber() const = 0;
    virtual XMLFileLoc getColumnNumber() const = 0;
    virtual XMLFilePos getByteOffset() const = 0;
    virtual XMLFilePos getUtf16Offset() const = 0;
    virtual DOMNode* getRelatedNode() const = 0;
    virtual const XMLCh* getURI() const = 0;
    };

    DOMNode.hpp:

    class DOMNode
    {
    public:
    enum NodeType {
    ELEMENT_NODE = 1,
    ATTRIBUTE_NODE = 2,
    TEXT_NODE = 3,
    CDATA_SECTION_NODE = 4,
    ENTITY_REFERENCE_NODE = 5,
    ENTITY_NODE = 6,
    PROCESSING_INSTRUCTION_NODE = 7,
    COMMENT_NODE = 8,
    DOCUMENT_NODE = 9,
    DOCUMENT_TYPE_NODE = 10,
    DOCUMENT_FRAGMENT_NODE = 11,
    NOTATION_NODE = 12,
    };
    enum DocumentPosition {
    DOCUMENT_POSITION_DISCONNECTED = 0x01,
    DOCUMENT_POSITION_PRECEDING = 0x02,
    DOCUMENT_POSITION_FOLLOWING = 0x04,
    DOCUMENT_POSITION_CONTAINS = 0x08,
    DOCUMENT_POSITION_CONTAINED_BY = 0x10,
    DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20,
    };
    virtual const XMLCh * getNodeName() const = 0;
    virtual const XMLCh * getNodeValue() const = 0;
    virtual NodeType getNodeType() const = 0;
    virtual DOMNode *getParentNode() const = 0;
    virtual DOMNodeList *getChildNodes() const = 0;
    virtual DOMNode *getFirstChild() const = 0;
    virtual DOMNode *getLastChild() const = 0;
    virtual DOMNode *getPreviousSibling() const = 0;
    virtual DOMNode *getNextSibling() const = 0;
    virtual DOMNamedNodeMap *getAttributes() const = 0;
    virtual DOMDocument *getOwnerDocument() const = 0;
    virtual DOMNode * cloneNode(bool deep) const = 0;
    virtual DOMNode *insertBefore(DOMNode *newChild, DOMNode *refChild) = 0;
    virtual DOMNode *replaceChild(DOMNode *newChild, DOMNode *oldChild) = 0;
    virtual DOMNode *removeChild(DOMNode *oldChild) = 0;
    virtual DOMNode *appendChild(DOMNode *newChild) = 0;
    virtual bool hasChildNodes() const = 0;
    virtual void setNodeValue(const XMLCh *nodeValue) = 0;
    virtual void normalize() = 0;
    virtual bool isSupported(const XMLCh *feature, const XMLCh *version) const = 0;
    virtual const XMLCh * getNamespaceURI() const = 0;
    virtual const XMLCh * getPrefix() const = 0;
    virtual const XMLCh * getLocalName() const = 0;
    virtual void setPrefix(const XMLCh * prefix) = 0;
    virtual bool hasAttributes() const = 0;
    virtual bool isSameNode(const DOMNode* other) const = 0;
    virtual bool isEqualNode(const DOMNode* arg) const = 0;
    virtual void* setUserData(const XMLCh* key, void* data, DOMUserDataHandler* handler) = 0;
    virtual void* getUserData(const XMLCh* key) const = 0;
    virtual const XMLCh* getBaseURI() const = 0;
    virtual short compareDocumentPosition(const DOMNode* other) const = 0;
    virtual const XMLCh* getTextContent() const = 0;
    virtual void setTextContent(const XMLCh* textContent) = 0;
    virtual const XMLCh* lookupPrefix(const XMLCh* namespaceURI) const = 0;
    virtual bool isDefaultNamespace(const XMLCh* namespaceURI) const = 0;
    virtual const XMLCh* lookupNamespaceURI(const XMLCh* prefix) const = 0;
    virtual void* getFeature(const XMLCh* feature, const XMLCh* version) const = 0;
    virtual void release() = 0;
    virtual void decRefCount() {}
    virtual void incRefCount() {}
    };

    DOMAttr.hpp:

    class DOMAttr : public DOMNode
    {
    public:
    virtual const XMLCh * getName() const = 0;
    virtual bool getSpecified() const = 0;
    virtual const XMLCh * getValue() const = 0;
    virtual void setValue(const XMLCh *value) = 0;
    virtual DOMElement *getOwnerElement() const = 0;
    virtual bool isId() const = 0;
    virtual const DOMTypeInfo * getSchemaTypeInfo() const = 0;
    };

    DOMCDATASection.hpp:

    class DOMCDATASection : public DOMText
    {
    public:
    };

    DOMCharacterData.hpp:

    class DOMCharacterData : public DOMNode
    {
    public:
    virtual const XMLCh * getData() const = 0;
    virtual XMLSize_t getLength() const = 0;
    virtual const XMLCh * substringData(XMLSize_t offset, XMLSize_t count) const = 0;
    virtual void appendData(const XMLCh *arg) = 0;
    virtual void insertData(XMLSize_t offset, const XMLCh *arg) = 0;
    virtual void deleteData(XMLSize_t offset, XMLSize_t count) = 0;
    virtual void replaceData(XMLSize_t offset, XMLSize_t count, const XMLCh *arg) = 0;
    virtual void setData(const XMLCh *data) = 0;
    };

    DOMComment.hpp:

    class DOMComment : public DOMCharacterData
    {
    public:
    };

    DOMDocument.hpp:

    class DOMDocument : public DOMNode
    {
    public:
    virtual DOMElement *createElement(const XMLCh *tagName) = 0;
    virtual DOMDocumentFragment *createDocumentFragment() = 0;
    virtual DOMText *createTextNode(const XMLCh *data) = 0;
    virtual DOMComment *createComment(const XMLCh *data) = 0;
    virtual DOMCDATASection *createCDATASection(const XMLCh *data) = 0;
    virtual DOMProcessingInstruction *createProcessingInstruction(const XMLCh *target, const XMLCh *data) = 0;
    virtual DOMAttr *createAttribute(const XMLCh *name) = 0;
    virtual DOMEntityReference *createEntityReference(const XMLCh *name) = 0;
    virtual DOMDocumentType *getDoctype() const = 0;
    virtual DOMImplementation *getImplementation() const = 0;
    virtual DOMElement *getDocumentElement() const = 0;
    virtual DOMNodeList *getElementsByTagName(const XMLCh *tagname) const = 0;
    virtual DOMNode *importNode(const DOMNode *importedNode, bool deep) = 0;
    virtual DOMElement *createElementNS(const XMLCh *namespaceURI, const XMLCh *qualifiedName) = 0;
    virtual DOMAttr *createAttributeNS(const XMLCh *namespaceURI, const XMLCh *qualifiedName) = 0;
    virtual DOMNodeList *getElementsByTagNameNS(const XMLCh *namespaceURI, const XMLCh *localName) const = 0;
    virtual DOMElement * getElementById(const XMLCh *elementId) const = 0;
    virtual const XMLCh* getInputEncoding() const = 0;
    virtual const XMLCh* getXmlEncoding() const = 0;
    virtual bool getXmlStandalone() const = 0;
    virtual void setXmlStandalone(bool standalone) = 0;
    virtual const XMLCh* getXmlVersion() const = 0;
    virtual void setXmlVersion(const XMLCh* version) = 0;
    virtual const XMLCh* getDocumentURI() const = 0;
    virtual void setDocumentURI(const XMLCh* documentURI) = 0;
    virtual bool getStrictErrorChecking() const = 0;
    virtual void setStrictErrorChecking(bool strictErrorChecking) = 0;
    virtual DOMNode* renameNode(DOMNode* n, const XMLCh* namespaceURI, const XMLCh* qualifiedName) = 0;
    virtual DOMNode* adoptNode(DOMNode* source) = 0;
    virtual void normalizeDocument() = 0;
    virtual DOMConfiguration* getDOMConfig() const = 0;
    virtual DOMEntity *createEntity(const XMLCh *name) = 0;
    virtual DOMDocumentType *createDocumentType(const XMLCh *name) = 0;
    virtual DOMDocumentType* createDocumentType(const XMLCh *qName, const XMLCh*, //publicId, const XMLCh* //systemId )
    virtual DOMNotation *createNotation(const XMLCh *name) = 0;
    virtual DOMElement *createElementNS(const XMLCh *namespaceURI, const XMLCh *qualifiedName, const XMLFileLoc lineNum, const XMLFileLoc columnNum) = 0;
    };

    DOMDocumentFragment.hpp:

    class DOMDocumentFragment : public DOMNode
    {
    public:
    };

    DOMDocumentType.hpp:

    class DOMDocumentType : public DOMNode
    {
    public:
    virtual const XMLCh * getName() const = 0;
    virtual DOMNamedNodeMap *getEntities() const = 0;
    virtual DOMNamedNodeMap *getNotations() const = 0;
    virtual const XMLCh * getPublicId() const = 0;
    virtual const XMLCh * getSystemId() const = 0;
    virtual const XMLCh * getInternalSubset() const = 0;
    };

    DOMElement.hpp:

    class DOMElement : public DOMNode
    {
    public:
    virtual const XMLCh * getTagName() const = 0;
    virtual const XMLCh * getAttribute(const XMLCh *name) const = 0;
    virtual DOMAttr * getAttributeNode(const XMLCh *name) const = 0;
    virtual DOMNodeList * getElementsByTagName(const XMLCh *name) const = 0;
    virtual void setAttribute(const XMLCh *name, const XMLCh *value) = 0;
    virtual DOMAttr * setAttributeNode(DOMAttr *newAttr) = 0;
    virtual DOMAttr * removeAttributeNode(DOMAttr *oldAttr) = 0;
    virtual void removeAttribute(const XMLCh *name) = 0;
    virtual const XMLCh * getAttributeNS(const XMLCh *namespaceURI, const XMLCh *localName) const = 0;
    virtual void setAttributeNS(const XMLCh *namespaceURI, const XMLCh *qualifiedName, const XMLCh *value) = 0;
    virtual void removeAttributeNS(const XMLCh *namespaceURI, const XMLCh *localName) = 0;
    virtual DOMAttr * getAttributeNodeNS(const XMLCh *namespaceURI, const XMLCh *localName) const = 0;
    virtual DOMAttr * setAttributeNodeNS(DOMAttr *newAttr) = 0;
    virtual DOMNodeList * getElementsByTagNameNS(const XMLCh *namespaceURI, const XMLCh *localName) const = 0;
    virtual bool hasAttribute(const XMLCh *name) const = 0;
    virtual bool hasAttributeNS(const XMLCh *namespaceURI, const XMLCh *localName) const = 0;
    virtual void setIdAttribute(const XMLCh* name, bool isId) = 0;
    virtual void setIdAttributeNS(const XMLCh* namespaceURI, const XMLCh* localName, bool isId) = 0;
    virtual void setIdAttributeNode(const DOMAttr *idAttr, bool isId) = 0;
    virtual const DOMTypeInfo* getSchemaTypeInfo() const = 0;
    virtual DOMElement * getFirstElementChild() const = 0;
    virtual DOMElement * getLastElementChild() const = 0;
    virtual DOMElement * getPreviousElementSibling() const = 0;
    virtual DOMElement * getNextElementSibling() const = 0;
    virtual XMLSize_t getChildElementCount() const = 0;
    };

    DOMEntity.hpp:

    class DOMEntity : public DOMNode
    {
    public:
    virtual const XMLCh * getPublicId() const = 0;
    virtual const XMLCh * getSystemId() const = 0;
    virtual const XMLCh * getNotationName() const = 0;
    virtual const XMLCh* getInputEncoding() const = 0;
    virtual const XMLCh* getXmlEncoding() const = 0;
    virtual const XMLCh* getXmlVersion() const = 0;
    };

    DOMEntityReference.hpp:

    class DOMEntityReference : public DOMNode
    {
    public:
    };

    DOMNotation.hpp:

    class DOMNotation : public DOMNode
    {
    public:
    virtual const XMLCh *getPublicId() const = 0;
    virtual const XMLCh *getSystemId() const = 0;
    };

    DOMProcessingInstruction.hpp:

    class DOMProcessingInstruction : public DOMNode
    {
    public:
    virtual const XMLCh * getTarget() const = 0;
    virtual const XMLCh * getData() const = 0;
    virtual void setData(const XMLCh * data) = 0;
    };

    DOMText.hpp:

    class DOMText : public DOMCharacterData
    {
    public:
    virtual DOMText *splitText(XMLSize_t offset) = 0;
    virtual bool getIsElementContentWhitespace() const = 0;
    virtual const XMLCh* getWholeText() const = 0;
    virtual DOMText* replaceWholeText(const XMLCh* content) = 0;
    virtual bool isIgnorableWhitespace() const = 0;
    };

    DOMTypeInfo.hpp:

    class DOMTypeInfo
    {
    public:
    enum DerivationMethods {
    DERIVATION_RESTRICTION = 0x001,
    DERIVATION_EXTENSION = 0x002,
    DERIVATION_UNION = 0x004,
    DERIVATION_LIST = 0x008,
    };
    virtual const XMLCh* getTypeName() const = 0;
    virtual const XMLCh* getTypeNamespace() const = 0;
    virtual bool isDerivedFrom(const XMLCh* typeNamespaceArg, const XMLCh* typeNameArg, DerivationMethods derivationMethod) const = 0;
    };

    DOMErrorHandler.hpp:

    class DOMErrorHandler
    {
    public:
    virtual bool handleError(const DOMError& domError) = 0;
    };

    DOMUserDataHandler.hpp:

    class DOMUserDataHandler
    {
    public:
    enum DOMOperationType {
    NODE_CLONED = 1,
    NODE_IMPORTED = 2,
    NODE_DELETED = 3,
    NODE_RENAMED = 4,
    NODE_ADOPTED = 5,
    };
    virtual void handle(DOMOperationType operation, const XMLCh* const key, void* data, const DOMNode* src, DOMNode* dst) = 0;
    };

    B: Document Object Model: Traversal

    DOMNodeIterator.hpp:

    class DOMNodeIterator
    {
    public:
    virtual DOMNode* getRoot() = 0;
    virtual DOMNodeFilter::ShowType getWhatToShow() = 0;
    virtual DOMNodeFilter* getFilter() = 0;
    virtual bool getExpandEntityReferences() = 0;
    virtual DOMNode* nextNode() = 0;
    virtual DOMNode* previousNode() = 0;
    virtual void detach() = 0;
    virtual void release() = 0;
    };

    DOMNodeFilter.hpp:

    class DOMNodeFilter
    {
    public:
    enum FilterAction {
    FILTER_REJECT = 2,
    FILTER_SKIP = 3};,
    };
    enum ShowTypeMasks {
    SHOW_ALL = 0x0000FFFF,
    SHOW_ELEMENT = 0x00000001,
    SHOW_ATTRIBUTE = 0x00000002,
    SHOW_TEXT = 0x00000004,
    SHOW_CDATA_SECTION = 0x00000008,
    SHOW_ENTITY_REFERENCE = 0x00000010,
    SHOW_ENTITY = 0x00000020,
    SHOW_PROCESSING_INSTRUCTION = 0x00000040,
    SHOW_COMMENT = 0x00000080,
    SHOW_DOCUMENT = 0x00000100,
    SHOW_DOCUMENT_TYPE = 0x00000200,
    SHOW_DOCUMENT_FRAGMENT = 0x00000400,
    SHOW_NOTATION = 0x00000800,
    };
    };

    DOMTreeWalker.hpp:

    class DOMTreeWalker
    {
    public:
    virtual DOMNode* getRoot() = 0;
    virtual DOMNodeFilter::ShowType getWhatToShow()= 0;
    virtual DOMNodeFilter* getFilter()= 0;
    virtual bool getExpandEntityReferences()= 0;
    virtual DOMNode* getCurrentNode()= 0;
    virtual DOMNode* parentNode()= 0;
    virtual DOMNode* firstChild()= 0;
    virtual DOMNode* lastChild()= 0;
    virtual DOMNode* previousSibling()= 0;
    virtual DOMNode* nextSibling()= 0;
    virtual DOMNode* previousNode()= 0;
    virtual DOMNode* nextNode()= 0;
    virtual void setCurrentNode(DOMNode* currentNode)= 0;
    virtual void release() = 0;
    };

    DOMDocumentTraversal.hpp:

    class DOMDocumentTraversal
    {
    public:
    virtual DOMNodeIterator *createNodeIterator(DOMNode* root, DOMNodeFilter::ShowType whatToShow, DOMNodeFilter* filter, bool entityReferenceExpansion) = 0;
    virtual DOMTreeWalker *createTreeWalker(DOMNode* root, DOMNodeFilter::ShowType whatToShow, DOMNodeFilter* filter, bool entityReferenceExpansion) = 0;
    };

    C: Document Object Model: Range

    DOMRangeException.hpp:

    class DOMRangeException : public DOMException
    {
    public:
    enum RangeExceptionCode {
    BAD_BOUNDARYPOINTS_ERR = 111,
    INVALID_NODE_TYPE_ERR = 112,
    };
    };

    DOMRange.hpp:

    class DOMRange
    {
    public:
    enum CompareHow {
    START_TO_START = 0,
    START_TO_END = 1,
    END_TO_END = 2,
    END_TO_START = 3,
    };
    virtual DOMNode* getStartContainer() const = 0;
    virtual XMLSize_t getStartOffset() const = 0;
    virtual DOMNode* getEndContainer() const = 0;
    virtual XMLSize_t getEndOffset() const = 0;
    virtual bool getCollapsed() const = 0;
    virtual const DOMNode* getCommonAncestorContainer() const = 0;
    virtual void setStart(const DOMNode *refNode, XMLSize_t offset) = 0;
    virtual void setEnd(const DOMNode *refNode, XMLSize_t offset) = 0;
    virtual void setStartBefore(const DOMNode *refNode) = 0;
    virtual void setStartAfter(const DOMNode *refNode) = 0;
    virtual void setEndBefore(const DOMNode *refNode) = 0;
    virtual void setEndAfter(const DOMNode *refNode) = 0;
    virtual void collapse(bool toStart) = 0;
    virtual void selectNode(const DOMNode *refNode) = 0;
    virtual void selectNodeContents(const DOMNode *refNode) = 0;
    virtual short compareBoundaryPoints(CompareHow how, const DOMRange* sourceRange) const = 0;
    virtual void deleteContents() = 0;
    virtual DOMDocumentFragment* extractContents() = 0;
    virtual DOMDocumentFragment* cloneContents() const = 0;
    virtual void insertNode(DOMNode *newNode) = 0;
    virtual void surroundContents(DOMNode *newParent) = 0;
    virtual DOMRange* cloneRange() const = 0;
    virtual const XMLCh* toString() const = 0;
    virtual void detach() = 0;
    virtual void release() = 0;
    };

    DOMDocumentRange.hpp:

    class DOMDocumentRange
    {
    public:
    virtual DOMRange *createRange() = 0;
    };

    D: Document Object Model: Load and Save

    DOMLSException.hpp:

    class DOMLSException : public DOMException
    {
    public:
    enum LSExceptionCode {
    PARSE_ERR = 81,
    SERIALIZE_ERR = 82,
    };
    };

    DOMImplementationLS.hpp:

    class DOMImplementationLS
    {
    public:
    virtual DOMLSParser* createLSParser(const DOMImplementationLSMode mode, const XMLCh* const schemaType, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager, XMLGrammarPool* const gramPool = 0) = 0;
    virtual DOMLSSerializer* createLSSerializer(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0;
    virtual DOMLSInput* createLSInput(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0;
    virtual DOMLSOutput* createLSOutput(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0;
    };

    DOMLSInput.hpp:

    class DOMLSInput
    {
    public:
    virtual const XMLCh* getStringData() const = 0;
    virtual InputSource* getByteStream() const = 0;
    virtual const XMLCh* getEncoding() const = 0;
    virtual const XMLCh* getPublicId() const = 0;
    virtual const XMLCh* getSystemId() const = 0;
    virtual const XMLCh* getBaseURI() const = 0;
    virtual void setStringData(const XMLCh* data) = 0;
    virtual void setByteStream(InputSource* stream) = 0;
    virtual void setEncoding(const XMLCh* const encodingStr) = 0;
    virtual void setPublicId(const XMLCh* const publicId) = 0;
    virtual void setSystemId(const XMLCh* const systemId) = 0;
    virtual void setBaseURI(const XMLCh* const baseURI) = 0;
    virtual void setIssueFatalErrorIfNotFound(bool flag) = 0;
    virtual bool getIssueFatalErrorIfNotFound() const = 0;
    virtual void release() = 0;
    };

    DOMLSOutput.hpp:

    class DOMLSOutput
    {
    public:
    virtual XMLFormatTarget* getByteStream() const = 0;
    virtual const XMLCh* getEncoding() const = 0;
    virtual const XMLCh* getSystemId() const = 0;
    virtual void setByteStream(XMLFormatTarget* stream) = 0;
    virtual void setEncoding(const XMLCh* const encodingStr) = 0;
    virtual void setSystemId(const XMLCh* const systemId) = 0;
    virtual void release() = 0;
    };

    DOMLSParser.hpp:

    class DOMLSParser
    {
    public:
    virtual DOMConfiguration* getDomConfig() = 0;
    virtual const DOMLSParserFilter* getFilter() const = 0;
    virtual bool getAsync() const = 0;
    virtual bool getBusy() const = 0;
    virtual void setFilter(DOMLSParserFilter* const filter) = 0;
    virtual DOMDocument* parse(const DOMLSInput* source) = 0;
    virtual DOMDocument* parseURI(const XMLCh* const uri) = 0;
    virtual DOMDocument* parseURI(const char* const uri) = 0;
    virtual DOMNode* parseWithContext(const DOMLSInput* source, DOMNode* contextNode, const ActionType action) = 0;
    virtual void abort() = 0;
    virtual void release() = 0;
    virtual void resetDocumentPool() = 0;
    virtual Grammar* loadGrammar(const DOMLSInput* source, const Grammar::GrammarType grammarType, const bool toCache = false) = 0;
    virtual Grammar* loadGrammar(const XMLCh* const systemId, const Grammar::GrammarType grammarType, const bool toCache = false) = 0;
    virtual Grammar* loadGrammar(const char* const systemId, const Grammar::GrammarType grammarType, const bool toCache = false) = 0;
    virtual Grammar* getGrammar(const XMLCh* const nameSpaceKey) const = 0;
    virtual Grammar* getRootGrammar() const = 0;
    virtual const XMLCh* getURIText(unsigned int uriId) const = 0;
    virtual void resetCachedGrammarPool() = 0;
    virtual XMLFilePos getSrcOffset() const = 0;
    };

    DOMLSParserFilter.hpp:

    class DOMLSParserFilter
    {
    public:
    enum FilterAction {
    FILTER_REJECT = 2,
    FILTER_SKIP = 3,
    FILTER_INTERRUPT = 4};,
    };
    virtual FilterAction acceptNode(DOMNode* node) = 0;
    virtual FilterAction startElement(DOMElement* node) = 0;
    virtual DOMNodeFilter::ShowType getWhatToShow() const = 0;
    };

    DOMLSResourceResolver.hpp:

    class DOMLSResourceResolver
    {
    public:
    virtual DOMLSInput* resolveResource( const XMLCh* const resourceType , const XMLCh* const namespaceUri , const XMLCh* const publicId , const XMLCh* const systemId , const XMLCh* const baseURI) = 0;
    };

    DOMLSSerializer.hpp:

    class DOMLSSerializer
    {
    public:
    virtual DOMConfiguration* getDomConfig() = 0;
    virtual void setNewLine(const XMLCh* const newLine) = 0;
    virtual void setFilter(DOMLSSerializerFilter *filter) = 0;
    virtual const XMLCh* getNewLine() const = 0;
    virtual DOMLSSerializerFilter* getFilter() const = 0;
    virtual bool write(const DOMNode* nodeToWrite, DOMLSOutput* const destination) = 0;
    virtual bool writeToURI(const DOMNode* nodeToWrite, const XMLCh* uri) = 0;
    virtual XMLCh* writeToString(const DOMNode* nodeToWrite, MemoryManager* manager = NULL) = 0;
    virtual void release() = 0;
    };

    DOMLSSerializerFilter.hpp:

    class DOMLSSerializerFilter : public DOMNodeFilter
    {
    public:
    virtual FilterAction acceptNode(const DOMNode* node) const = 0;
    virtual ShowType getWhatToShow() const =0;
    };

    E: Document Object Model: XPath

    DOMXPathEvaluator.hpp:

    class DOMXPathEvaluator
    {
    public:
    virtual DOMXPathExpression* createExpression(const XMLCh *expression, const DOMXPathNSResolver *resolver) = 0;
    virtual DOMXPathNSResolver* createNSResolver(const DOMNode *nodeResolver) = 0;
    virtual DOMXPathResult* evaluate(const XMLCh *expression, const DOMNode *contextNode, const DOMXPathNSResolver *resolver, DOMXPathResult::ResultType type, DOMXPathResult* result) = 0;
    };

    DOMXPathException.hpp:

    class DOMXPathException : public DOMException
    {
    public:
    enum ExceptionCode {
    INVALID_EXPRESSION_ERR = 51,
    TYPE_ERR = 52,
    NO_RESULT_ERROR = 53,
    };
    };

    DOMXPathExpression.hpp:

    class DOMXPathExpression
    {
    public:
    virtual DOMXPathResult* evaluate(const DOMNode *contextNode, DOMXPathResult::ResultType type, DOMXPathResult* result) const = 0;
    virtual void release() = 0;
    };

    DOMXPathNamespace.hpp:

    class DOMXPathNamespace : public DOMNode
    {
    public:
    enum XPathNodeType {
    XPATH_NAMESPACE_NODE = 13,
    };
    virtual DOMElement *getOwnerElement() const = 0;
    };

    DOMXPathNSResolver.hpp:

    class DOMXPathNSResolver
    {
    public:
    virtual const XMLCh* lookupNamespaceURI(const XMLCh* prefix) const = 0;
    virtual const XMLCh* lookupPrefix(const XMLCh* URI) const = 0;
    virtual void addNamespaceBinding(const XMLCh* prefix, const XMLCh* uri) = 0;
    virtual void release() = 0;
    };

    DOMXPathResult.hpp:

    class DOMXPathResult
    {
    public:
    enum ResultType {
    ANY_TYPE = 0,
    NUMBER_TYPE = 1,
    STRING_TYPE = 2,
    BOOLEAN_TYPE = 3,
    UNORDERED_NODE_ITERATOR_TYPE = 4,
    ORDERED_NODE_ITERATOR_TYPE = 5,
    UNORDERED_NODE_SNAPSHOT_TYPE = 6,
    ORDERED_NODE_SNAPSHOT_TYPE = 7,
    ANY_UNORDERED_NODE_TYPE = 8,
    FIRST_ORDERED_NODE_TYPE = 9,
    FIRST_RESULT_TYPE = 100,
    ITERATOR_RESULT_TYPE = 101,
    SNAPSHOT_RESULT_TYPE = 102,
    };
    virtual ResultType getResultType() const = 0;
    virtual const DOMTypeInfo *getTypeInfo() const = 0;
    virtual bool isNode() const = 0;
    virtual bool getBooleanValue() const = 0;
    virtual int getIntegerValue() const = 0;
    virtual double getNumberValue() const = 0;
    virtual const XMLCh* getStringValue() const = 0;
    virtual DOMNode* getNodeValue() const = 0;
    virtual bool iterateNext() = 0;
    virtual bool getInvalidIteratorState() const = 0;
    virtual bool snapshotItem(XMLSize_t index) = 0;
    virtual XMLSize_t getSnapshotLength() const = 0;
    virtual void release() = 0;
    };

    Copyright © 1999-2009 The Apache Software Foundation. All Rights Reserved.
    xerces-c-3.1.1/doc/html/apiDocs-3/0000755000175000017500000000000011363620007015474 5ustar borisborisxerces-c-3.1.1/doc/html/apiDocs-3/OutOfMemoryException_8hpp-source.html0000644000175000017500000003345711363620004024734 0ustar borisboris Xerces-C++: OutOfMemoryException.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classPSVIAttributeList.png0000644000175000017500000000063511363620006022534 0ustar borisboris‰PNG  IHDRjPîýoPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf3IDATX…í”Kvà EÑ$c‰àî ÝPGÞÿú$al’8±9‰{Z![} _--|ûÛÇ9¨ˆ‘ Ó.*i*TÂHð 9Ä5ŠU jlö1E1‰=žPHh¦l”þĦ4ˆTT]ž{yU)TÚ@YEø˜òó².îËj8Ôim¾MÔÕ]ÙHÕ®þÞ?åÍTÛ—m½]¼{55~F]Æñ0êÐvªSêÔ¹(ii¢ ÿLŠ‚ZBq]-·ä Xerces-C++: Member List

    XSModel Member List

    This is the complete list of members for XSModel, including all inherited members.

    fAddedS4SGrammarXSModel [protected]
    fComponentMapXSModel [protected]
    fDeleteNamespaceXSModel [protected]
    fDeleteParentXSModel [protected]
    fHashNamespaceXSModel [protected]
    fIdVectorXSModel [protected]
    fMemoryManagerXSModel [protected]
    fNamespaceStringListXSModel [protected]
    fObjFactoryXSModel [protected]
    fParentXSModel [protected]
    fURIStringPoolXSModel [protected]
    fXSAnnotationListXSModel [protected]
    fXSNamespaceItemListXSModel [protected]
    getAnnotations()XSModel
    getAttributeDeclaration(const XMLCh *name, const XMLCh *compNamespace)XSModel
    getAttributeGroup(const XMLCh *name, const XMLCh *compNamespace)XSModel
    getComponents(XSConstants::COMPONENT_TYPE objectType)XSModel
    getComponentsByNamespace(XSConstants::COMPONENT_TYPE objectType, const XMLCh *compNamespace)XSModel
    getElementDeclaration(const XMLCh *name, const XMLCh *compNamespace)XSModel
    getModelGroupDefinition(const XMLCh *name, const XMLCh *compNamespace)XSModel
    getNamespaceItem(const XMLCh *const key)XSModel
    getNamespaceItems()XSModel
    getNamespaces()XSModel
    getNotationDeclaration(const XMLCh *name, const XMLCh *compNamespace)XSModel
    getTypeDefinition(const XMLCh *name, const XMLCh *compNamespace)XSModel
    getURIStringPool()XSModel
    getXSObject(void *key)XSModel
    getXSObjectById(XMLSize_t compId, XSConstants::COMPONENT_TYPE compType)XSModel
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    XMemory()XMemory [protected]
    XSModel(XMLGrammarPool *grammarPool, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSModel
    XSModel(XSModel *baseModel, GrammarResolver *grammarResolver, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSModel
    XSObject classXSModel [friend]
    XSObjectFactory classXSModel [friend]
    ~XSModel()XSModel


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMCDATASection_8hpp.html0000644000175000017500000000476611363620005022035 0ustar borisboris Xerces-C++: DOMCDATASection.hpp File Reference

    DOMCDATASection.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMCDATASection
     CDATA sections are used to escape blocks of text containing characters that would otherwise be regarded as markup. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMCDATASECTION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMCDATASECTION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_eval_0x6a.html0000644000175000017500000000775111363620005022247 0ustar borisboris Xerces-C++: Class Members - Enumerator
     

    - j -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMemory-members.html0000644000175000017500000000576311363620006022452 0ustar borisboris Xerces-C++: Member List

    XMemory Member List

    This is the complete list of members for XMemory, including all inherited members.

    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    XMemory()XMemory [protected]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLException_8hpp.html0000644000175000017500000004072311363620005021644 0ustar borisboris Xerces-C++: XMLException.hpp File Reference

    XMLException.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLException

    Defines

    #define XERCESC_INCLUDE_GUARD_XMLEXCEPTION_HPP
    #define MakeXMLException(theType, expKeyword)
    #define ThrowXML(type, code)   throw type(__FILE__, __LINE__, code)
    #define ThrowXML1(type, code, p1)   throw type(__FILE__, __LINE__, code, p1)
    #define ThrowXML2(type, code, p1, p2)   throw type(__FILE__, __LINE__, code, p1, p2)
    #define ThrowXML3(type, code, p1, p2, p3)   throw type(__FILE__, __LINE__, code, p1, p2, p3)
    #define ThrowXML4(type, code, p1, p2, p3, p4)   throw type(__FILE__, __LINE__, code, p1, p2, p3, p4)
    #define ThrowXMLwithMemMgr(type, code, memMgr)   throw type(__FILE__, __LINE__, code, memMgr)
    #define ThrowXMLwithMemMgr1(type, code, p1, memMgr)   throw type(__FILE__, __LINE__, code, p1, 0, 0, 0, memMgr)
    #define ThrowXMLwithMemMgr2(type, code, p1, p2, memMgr)   throw type(__FILE__, __LINE__, code, p1, p2, 0, 0, memMgr)
    #define ThrowXMLwithMemMgr3(type, code, p1, p2, p3, memMgr)   throw type(__FILE__, __LINE__, code, p1, p2, p3, 0, memMgr)
    #define ThrowXMLwithMemMgr4(type, code, p1, p2, p3, p4, memMgr)   throw type(__FILE__, __LINE__, code, p1, p2, p3, p4, memMgr)


    Define Documentation

    #define MakeXMLException ( theType,
    expKeyword   ) 

    #define ThrowXML ( type,
    code   )     throw type(__FILE__, __LINE__, code)

    #define ThrowXML1 ( type,
    code,
    p1   )     throw type(__FILE__, __LINE__, code, p1)

    #define ThrowXML2 ( type,
    code,
    p1,
    p2   )     throw type(__FILE__, __LINE__, code, p1, p2)

    #define ThrowXML3 ( type,
    code,
    p1,
    p2,
    p3   )     throw type(__FILE__, __LINE__, code, p1, p2, p3)

    #define ThrowXML4 ( type,
    code,
    p1,
    p2,
    p3,
    p4   )     throw type(__FILE__, __LINE__, code, p1, p2, p3, p4)

    #define ThrowXMLwithMemMgr ( type,
    code,
    memMgr   )     throw type(__FILE__, __LINE__, code, memMgr)

    #define ThrowXMLwithMemMgr1 ( type,
    code,
    p1,
    memMgr   )     throw type(__FILE__, __LINE__, code, p1, 0, 0, 0, memMgr)

    #define ThrowXMLwithMemMgr2 ( type,
    code,
    p1,
    p2,
    memMgr   )     throw type(__FILE__, __LINE__, code, p1, p2, 0, 0, memMgr)

    #define ThrowXMLwithMemMgr3 ( type,
    code,
    p1,
    p2,
    p3,
    memMgr   )     throw type(__FILE__, __LINE__, code, p1, p2, p3, 0, memMgr)

    #define ThrowXMLwithMemMgr4 ( type,
    code,
    p1,
    p2,
    p3,
    p4,
    memMgr   )     throw type(__FILE__, __LINE__, code, p1, p2, p3, p4, memMgr)

    #define XERCESC_INCLUDE_GUARD_XMLEXCEPTION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DefaultPanicHandler_8hpp-source.html0000644000175000017500000001573411363620004024463 0ustar borisboris Xerces-C++: DefaultPanicHandler.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMLocator-members.html0000644000175000017500000000657611363620005023017 0ustar borisboris Xerces-C++: Member List

    DOMLocator Member List

    This is the complete list of members for DOMLocator, including all inherited members.

    DOMLocator()DOMLocator [protected]
    getByteOffset() const =0DOMLocator [pure virtual]
    getColumnNumber() const =0DOMLocator [pure virtual]
    getLineNumber() const =0DOMLocator [pure virtual]
    getRelatedNode() const =0DOMLocator [pure virtual]
    getURI() const =0DOMLocator [pure virtual]
    getUtf16Offset() const =0DOMLocator [pure virtual]
    ~DOMLocator()DOMLocator [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classLocalFileFormatTarget.png0000644000175000017500000000117211363620006023402 0ustar borisboris‰PNG  IHDR‹ˆ%£bPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfIDAThí˜Krà †Ñ¦kÄ ð :í…ºÊýP=À¶ㄆIŒHf°ú,$çOøÑ>Ã×4 9¦“ù›è"=M¢ké2QtÔçœ9Î 9·ò„Yûœz1œ”“ä[?ÝÑdvG4˜ýdåF1|3c8ÂnŒ Ì¢:1eßH½„%½X»¢iµA˜ÆvìÄ4‚yþê˜A/˜ÛíãŽ9ÏÃ\~N„ù¸\N„9Y¥ãÇ8Æ1Žù?Ì ŸIçúí÷Þ˜E{³À@‡¶%2Y³Ü­£™EsžöOºÒ/wb2²*,*œnr5‘ VËf¥½§òÏs« —hÔ”r²*ؤ8­0œ‡Yµ¦©b&#eÛÑÌ¢yíA br¥‹>oæ¦1‹*Æ£›)mÌAní]–²TžJ¥„'•šö+ÕÓ6Ûêo˜4“·å´'ü0ƒ^0ƒ^wOø?à ¡8Æ1ŽqŒcóúÑbˆ#vÌ pñB#pì(ð¨ßÀÄ:º)–-xz=™:ÅP4rÔL-Ȩn1„bY0Qµ+˜¨+c3DˆX-±šÖ9Ô_v¥:!ª?tTž2÷1€K4ˆK4Š‘QYT¥—9[Œ]TØ`Ì¢J4áÓÎÍ>f“ޱV v+UP*ÅÞZ)ˆîây[=‚1˜°”žð÷ÃŒyÁüsöämC{ñäIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/HexBin_8hpp.html0000644000175000017500000000424511363620005020501 0ustar borisboris Xerces-C++: HexBin.hpp File Reference

    HexBin.hpp File Reference

    Go to the source code of this file.

    Classes

    class  HexBin

    Defines

    #define XERCESC_INCLUDE_GUARD_HEXBIN_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_HEXBIN_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMCharacterData-members.html0000644000175000017500000004547011363620005024076 0ustar borisboris Xerces-C++: Member List

    DOMCharacterData Member List

    This is the complete list of members for DOMCharacterData, including all inherited members.

    appendChild(DOMNode *newChild)=0DOMNode [pure virtual]
    appendData(const XMLCh *arg)=0DOMCharacterData [pure virtual]
    ATTRIBUTE_NODE enum valueDOMNode
    CDATA_SECTION_NODE enum valueDOMNode
    cloneNode(bool deep) const =0DOMNode [pure virtual]
    COMMENT_NODE enum valueDOMNode
    compareDocumentPosition(const DOMNode *other) const =0DOMNode [pure virtual]
    deleteData(XMLSize_t offset, XMLSize_t count)=0DOMCharacterData [pure virtual]
    DOCUMENT_FRAGMENT_NODE enum valueDOMNode
    DOCUMENT_NODE enum valueDOMNode
    DOCUMENT_POSITION_CONTAINED_BY enum valueDOMNode
    DOCUMENT_POSITION_CONTAINS enum valueDOMNode
    DOCUMENT_POSITION_DISCONNECTED enum valueDOMNode
    DOCUMENT_POSITION_FOLLOWING enum valueDOMNode
    DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC enum valueDOMNode
    DOCUMENT_POSITION_PRECEDING enum valueDOMNode
    DOCUMENT_TYPE_NODE enum valueDOMNode
    DocumentPosition enum nameDOMNode
    DOMCharacterData()DOMCharacterData [protected]
    DOMCharacterData(const DOMCharacterData &other)DOMCharacterData [protected]
    DOMNode()DOMNode [protected]
    DOMNode(const DOMNode &)DOMNode [protected]
    ELEMENT_NODE enum valueDOMNode
    ENTITY_NODE enum valueDOMNode
    ENTITY_REFERENCE_NODE enum valueDOMNode
    getAttributes() const =0DOMNode [pure virtual]
    getBaseURI() const =0DOMNode [pure virtual]
    getChildNodes() const =0DOMNode [pure virtual]
    getData() const =0DOMCharacterData [pure virtual]
    getFeature(const XMLCh *feature, const XMLCh *version) const =0DOMNode [pure virtual]
    getFirstChild() const =0DOMNode [pure virtual]
    getLastChild() const =0DOMNode [pure virtual]
    getLength() const =0DOMCharacterData [pure virtual]
    getLocalName() const =0DOMNode [pure virtual]
    getNamespaceURI() const =0DOMNode [pure virtual]
    getNextSibling() const =0DOMNode [pure virtual]
    getNodeName() const =0DOMNode [pure virtual]
    getNodeType() const =0DOMNode [pure virtual]
    getNodeValue() const =0DOMNode [pure virtual]
    getOwnerDocument() const =0DOMNode [pure virtual]
    getParentNode() const =0DOMNode [pure virtual]
    getPrefix() const =0DOMNode [pure virtual]
    getPreviousSibling() const =0DOMNode [pure virtual]
    getTextContent() const =0DOMNode [pure virtual]
    getUserData(const XMLCh *key) const =0DOMNode [pure virtual]
    hasAttributes() const =0DOMNode [pure virtual]
    hasChildNodes() const =0DOMNode [pure virtual]
    insertBefore(DOMNode *newChild, DOMNode *refChild)=0DOMNode [pure virtual]
    insertData(XMLSize_t offset, const XMLCh *arg)=0DOMCharacterData [pure virtual]
    isDefaultNamespace(const XMLCh *namespaceURI) const =0DOMNode [pure virtual]
    isEqualNode(const DOMNode *arg) const =0DOMNode [pure virtual]
    isSameNode(const DOMNode *other) const =0DOMNode [pure virtual]
    isSupported(const XMLCh *feature, const XMLCh *version) const =0DOMNode [pure virtual]
    lookupNamespaceURI(const XMLCh *prefix) const =0DOMNode [pure virtual]
    lookupPrefix(const XMLCh *namespaceURI) const =0DOMNode [pure virtual]
    NodeType enum nameDOMNode
    normalize()=0DOMNode [pure virtual]
    NOTATION_NODE enum valueDOMNode
    PROCESSING_INSTRUCTION_NODE enum valueDOMNode
    release()=0DOMNode [pure virtual]
    removeChild(DOMNode *oldChild)=0DOMNode [pure virtual]
    replaceChild(DOMNode *newChild, DOMNode *oldChild)=0DOMNode [pure virtual]
    replaceData(XMLSize_t offset, XMLSize_t count, const XMLCh *arg)=0DOMCharacterData [pure virtual]
    setData(const XMLCh *data)=0DOMCharacterData [pure virtual]
    setNodeValue(const XMLCh *nodeValue)=0DOMNode [pure virtual]
    setPrefix(const XMLCh *prefix)=0DOMNode [pure virtual]
    setTextContent(const XMLCh *textContent)=0DOMNode [pure virtual]
    setUserData(const XMLCh *key, void *data, DOMUserDataHandler *handler)=0DOMNode [pure virtual]
    substringData(XMLSize_t offset, XMLSize_t count) const =0DOMCharacterData [pure virtual]
    TEXT_NODE enum valueDOMNode
    ~DOMCharacterData()DOMCharacterData [virtual]
    ~DOMNode()DOMNode [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/SAX2XMLReader_8hpp-source.html0000644000175000017500000006513511363620004023047 0ustar borisboris Xerces-C++: SAX2XMLReader.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/QName_8hpp-source.html0000644000175000017500000006303011363620004021617 0ustar borisboris Xerces-C++: QName.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/globals_0x67.html0000644000175000017500000001052211363620006020570 0ustar borisboris Xerces-C++: Class Members
    Here is a list of all file members with links to the files they belong to:

    - g -


    Generated on Wed Apr 21 17:55:51 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/Xerces__autoconf__config_8msvc_8hpp-source.html0000644000175000017500000005165211363620004026717 0ustar borisboris Xerces-C++: Xerces_autoconf_config.msvc.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSWildcard-members.html0000644000175000017500000002420311363620006023044 0ustar borisboris Xerces-C++: Member List

    XSWildcard Member List

    This is the complete list of members for XSWildcard, including all inherited members.

    fAnnotationXSWildcard [protected]
    fComponentTypeXSObject [protected]
    fConstraintTypeXSWildcard [protected]
    fIdXSObject [protected]
    fMemoryManagerXSObject [protected]
    fNsConstraintListXSWildcard [protected]
    fProcessContentsXSWildcard [protected]
    fXSModelXSObject [protected]
    getAnnotation() const XSWildcard
    getConstraintType() const XSWildcard
    getId() const XSObject [virtual]
    getName() const XSObject [virtual]
    getNamespace()XSObject [virtual]
    getNamespaceItem()XSObject [virtual]
    getNsConstraintList()XSWildcard
    getProcessContents() const XSWildcard
    getType() const XSObject
    NAMESPACE_CONSTRAINT enum nameXSWildcard
    NSCONSTRAINT_ANY enum valueXSWildcard
    NSCONSTRAINT_DERIVATION_LIST enum valueXSWildcard
    NSCONSTRAINT_NOT enum valueXSWildcard
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    PC_LAX enum valueXSWildcard
    PC_SKIP enum valueXSWildcard
    PC_STRICT enum valueXSWildcard
    PROCESS_CONTENTS enum nameXSWildcard
    setId(XMLSize_t id)XSObject
    XMemory()XMemory [protected]
    XSObject(XSConstants::COMPONENT_TYPE compType, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSObject
    XSWildcard(SchemaAttDef *const attWildCard, XSAnnotation *const annot, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSWildcard
    XSWildcard(const ContentSpecNode *const elmWildCard, XSAnnotation *const annot, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSWildcard
    ~XSObject()XSObject [virtual]
    ~XSWildcard()XSWildcard


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/AbstractDOMParser_8hpp-source.html0000644000175000017500000025275511363620004024114 0ustar borisboris Xerces-C++: AbstractDOMParser.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMLSParser.html0000644000175000017500000024053311363620005021450 0ustar borisboris Xerces-C++: DOMLSParser Class Reference

    DOMLSParser Class Reference

    DOMLSParser provides an API for parsing XML documents and building the corresponding DOM document tree. More...

    List of all members.

    Public Types

    Public Constants
    enum  ActionType {
      ACTION_APPEND_AS_CHILDREN = 1, ACTION_REPLACE_CHILDREN = 2, ACTION_INSERT_BEFORE = 3, ACTION_INSERT_AFTER = 4,
      ACTION_REPLACE = 5
    }
     A set of possible actions for the parseWithContext method. More...

    Public Member Functions

    Destructor
    virtual ~DOMLSParser ()
     Destructor.
    Functions introduced in DOM Level 3
    virtual DOMConfigurationgetDomConfig ()=0
     Get a pointer to the DOMConfiguration object used when parsing an input source.
    virtual const DOMLSParserFiltergetFilter () const =0
     Get a const pointer to the application filter.
    virtual bool getAsync () const =0
     Return whether the parser is asynchronous.
    virtual bool getBusy () const =0
     Return whether the parser is busy parsing.
    virtual void setFilter (DOMLSParserFilter *const filter)=0
     Set the application filter.
    virtual DOMDocumentparse (const DOMLSInput *source)=0
     Parse an XML document from a resource identified by a DOMLSInput.
    virtual DOMDocumentparseURI (const XMLCh *const uri)=0
     Parse an XML document from a location identified by a URI reference [IETF RFC 2396].
    virtual DOMDocumentparseURI (const char *const uri)=0
     Parse an XML document from a location identified by a URI reference [IETF RFC 2396].
    virtual DOMNodeparseWithContext (const DOMLSInput *source, DOMNode *contextNode, const ActionType action)=0
     Parse an XML fragment from a resource identified by a DOMLSInput and insert the content into an existing document at the position specified with the context and action arguments.
    virtual void abort ()=0
     Abort the loading of the document that is currently being loaded by the DOMLSParser.
    Non-standard Extension
    virtual void release ()=0
     Called to indicate that this DOMLSParser is no longer in use and that the implementation may relinquish any resources associated with it.
    virtual void resetDocumentPool ()=0
     Reset the documents vector pool and release all the associated memory back to the system.
    virtual Grammar * loadGrammar (const DOMLSInput *source, const Grammar::GrammarType grammarType, const bool toCache=false)=0
     Preparse schema grammar (XML Schema, DTD, etc.
    virtual Grammar * loadGrammar (const XMLCh *const systemId, const Grammar::GrammarType grammarType, const bool toCache=false)=0
     Preparse schema grammar (XML Schema, DTD, etc.
    virtual Grammar * loadGrammar (const char *const systemId, const Grammar::GrammarType grammarType, const bool toCache=false)=0
     Preparse schema grammar (XML Schema, DTD, etc.
    virtual Grammar * getGrammar (const XMLCh *const nameSpaceKey) const =0
     Retrieve the grammar that is associated with the specified namespace key.
    virtual Grammar * getRootGrammar () const =0
     Retrieve the grammar where the root element is declared.
    virtual const XMLChgetURIText (unsigned int uriId) const =0
     Returns the string corresponding to a URI id from the URI string pool.
    virtual void resetCachedGrammarPool ()=0
     Clear the cached grammar pool.
    virtual XMLFilePos getSrcOffset () const =0
     Returns the current src offset within the input source.

    Protected Member Functions

    Hidden constructors
     DOMLSParser ()


    Detailed Description

    DOMLSParser provides an API for parsing XML documents and building the corresponding DOM document tree.

    A DOMLSParser instance is obtained from the DOMImplementationLS interface by invoking its createLSParser method.

    Since:
    DOM Level 3

    Member Enumeration Documentation

    A set of possible actions for the parseWithContext method.

    ACTION_APPEND_AS_CHILDREN: Append the result of the parse operation as children of the context node. For this action to work, the context node must be a DOMElement or a DOMDocumentFragment.

    ACTION_INSERT_AFTER: Insert the result of the parse operation as the immediately following sibling of the context node. For this action to work the context node's parent must be a DOMElement or a DOMDocumentFragment.

    ACTION_INSERT_BEFORE: Insert the result of the parse operation as the immediately preceding sibling of the context node. For this action to work the context node's parent must be a DOMElement or a DOMDocumentFragment.

    ACTION_REPLACE: Replace the context node with the result of the parse operation. For this action to work, the context node must have a parent, and the parent must be a DOMElement or a DOMDocumentFragment.

    ACTION_REPLACE_CHILDREN: Replace all the children of the context node with the result of the parse operation. For this action to work, the context node must be a DOMElement, a DOMDocument, or a DOMDocumentFragment.

    See also:
    parseWithContext(...)
    Since:
    DOM Level 3
    Enumerator:
    ACTION_APPEND_AS_CHILDREN 
    ACTION_REPLACE_CHILDREN 
    ACTION_INSERT_BEFORE 
    ACTION_INSERT_AFTER 
    ACTION_REPLACE 


    Constructor & Destructor Documentation

    DOMLSParser::DOMLSParser (  )  [protected]

    virtual DOMLSParser::~DOMLSParser (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual DOMConfiguration* DOMLSParser::getDomConfig (  )  [pure virtual]

    Get a pointer to the DOMConfiguration object used when parsing an input source.

    This DOMConfiguration is specific to the parse operation. No parameter values from this DOMConfiguration object are passed automatically to the DOMConfiguration object on the DOMDocument that is created, or used, by the parse operation. The DOM application is responsible for passing any needed parameter values from this DOMConfiguration object to the DOMConfiguration object referenced by the DOMDocument object.

    In addition to the parameters recognized in on the DOMConfiguration interface defined in [DOM Level 3 Core], the DOMConfiguration objects for DOMLSParser add or modify the following parameters:

    "charset-overrides-xml-encoding" true [optional] (default) If a higher level protocol such as HTTP [IETF RFC 2616] provides an indication of the character encoding of the input stream being processed, that will override any encoding specified in the XML declaration or the Text declaration (see also section 4.3.3, "Character Encoding in Entities", in [XML 1.0]). Explicitly setting an encoding in the DOMLSInput overrides any encoding from the protocol. false [required] The parser ignores any character set encoding information from higher-level protocols.

    "disallow-doctype" true [optional] Throw a fatal "doctype-not-allowed" error if a doctype node is found while parsing the document. This is useful when dealing with things like SOAP envelopes where doctype nodes are not allowed. false [required] (default) Allow doctype nodes in the document.

    "ignore-unknown-character-denormalizations" true [required] (default) If, while verifying full normalization when [XML 1.1] is supported, a processor encounters characters for which it cannot determine the normalization properties, then the processor will ignore any possible denormalizations caused by these characters. This parameter is ignored for [XML 1.0]. false [optional] Report an fatal "unknown-character-denormalization" error if a character is encountered for which the processor cannot determine the normalization properties.

    "infoset" See the definition of DOMConfiguration for a description of this parameter. Unlike in [DOM Level 3 Core], this parameter will default to true for DOMLSParser.

    "namespaces" true [required] (default) Perform the namespace processing as defined in [XML Namespaces] and [XML Namespaces 1.1]. false [optional] Do not perform the namespace processing.

    "resource-resolver" [required] A pointer to a DOMLSResourceResolver object, or NULL. If the value of this parameter is not null when an external resource (such as an external XML entity or an XML schema location) is encountered, the implementation will request that the DOMLSResourceResolver referenced in this parameter resolves the resource.

    "supported-media-types-only" true [optional] Check that the media type of the parsed resource is a supported media type. If an unsupported media type is encountered, a fatal error of type "unsupported-media-type" will be raised. The media types defined in [IETF RFC 3023] must always be accepted. false [required] (default) Accept any media type.

    "validate" See the definition of DOMConfiguration for a description of this parameter. Unlike in [DOM Level 3 Core], the processing of the internal subset is always accomplished, even if this parameter is set to false.

    "validate-if-schema" See the definition of DOMConfiguration for a description of this parameter. Unlike in [DOM Level 3 Core], the processing of the internal subset is always accomplished, even if this parameter is set to false.

    "well-formed" See the definition of DOMConfiguration for a description of this parameter. Unlike in [DOM Level 3 Core], this parameter cannot be set to false.

    In addition to these, Xerces adds these non standard parameters:

    "http://apache.org/xml/properties/entity-resolver" A pointer to a XMLEntityResolver object, or NULL. If the value of this parameter is not null when an external resource (such as an external XML entity or an XML schema location) is encountered, the implementation will request that the XMLEntityResolver referenced in this parameter resolves the resource.

    "http://apache.org/xml/properties/schema/external-schemaLocation" A string holding a set of [namespaceUri schemaLocation] entries that will be treated as the content of the attribute xsi:schemaLocation of the root element

    "http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation" A string holding the schemaLocation for the empty namespace URI that will be treated as the content of the attribute xsi:noNamespaceSchemaLocation of the root element

    "http://apache.org/xml/properties/security-manager" A pointer to a SecurityManager object that will control how many entity references will be expanded during parsing

    "http://apache.org/xml/properties/scannerName" A string holding the type of scanner used while parsing. The valid names are:

    • IGXMLScanner: the default one, capable of both XMLSchema and DTD validation
    • SGXMLScanner: a scanner that can only perform XMLSchema validation
    • DGXMLScanner: a scanner that can only perform DTD validation
    • WFXMLScanner: a scanner that cannot perform any type validation, only well-formedness

    "http://apache.org/xml/properties/parser-use-DOMDocument-from-Implementation" A string holding the capabilities of the DOM implementation to be used to create the DOMDocument resulting from the parse operation. For instance, "LS" or "Core"

    "http://apache.org/xml/features/validation/schema" true Enable XMLSchema validation (note that also namespace processing should be enabled) false (default) Don't perform XMLSchema validation

    "http://apache.org/xml/features/validation/schema-full-checking" true Turn on full XMLSchema checking (e.g. Unique Particle Attribution) false (default) Don't perform full XMLSchema checking

    "http://apache.org/xml/features/validating/load-schema" true (default) Allow the parser to load schemas that are not in the grammar pool false Schemas that are not in the grammar pool are ignored

    "http://apache.org/xml/features/dom/user-adopts-DOMDocument" true The DOMDocument objects returned by parse will be owned by the caller false (default) The DOMDocument objects returned by parse will be owned by this DOMLSParser and deleted when released

    "http://apache.org/xml/features/nonvalidating/load-external-dtd" true (default) Allow the parser to load external DTDs false References to external DTDs will be ignored

    "http://apache.org/xml/features/continue-after-fatal-error" true Parsing should try to continue even if a fatal error has been triggered, trying to generate a DOM tree from a non well-formed XML false (default) Violation of XML rules will abort parsing

    "http://apache.org/xml/features/validation-error-as-fatal" true Validation errors are treated as fatal errors, and abort parsing (unless "continue-after-fatal-error" has been specified) false (default) Validation errors are normal errors

    "http://apache.org/xml/features/validation/cache-grammarFromParse" true XMLSchemas referenced by an XML file are cached in order to be reused by other parse operations false (default) XMLSchemas loaded during a parse operation will be discarded before the next one

    "http://apache.org/xml/features/validation/use-cachedGrammarInParse" true During this parse operation, reuse the XMLSchemas found in the cache false (default) Don't reuse the XMLSchemas found in the cache

    "http://apache.org/xml/features/calculate-src-ofs" true During parsing update the position in the source stream false (default) Don't waste time computing the position in the source stream

    "http://apache.org/xml/features/standard-uri-conformant" true Require that every URL being resolved is made of valid URL characters only false (default) Allow invalid URL characters in URL (e.g. spaces)

    "http://apache.org/xml/features/dom-has-psvi-info" true Add schema informations to DOMElement and DOMAttr nodes in the output DOM tree false (default) Don't store schema informations in the output DOM tree

    "http://apache.org/xml/features/generate-synthetic-annotations" true Create annotation objects in the representation of the loaded XMLSchemas false (default) Discard annotations found in the loaded XMLSchemas

    "http://apache.org/xml/features/validate-annotations" true Check that annotations are valid according to their XMLSchema definition false (default) Don't validate annotations

    "http://apache.org/xml/features/validation/identity-constraint-checking" true (default) Enforce identity constraints specified in the XMLSchema false Don't enforce identity constraints

    "http://apache.org/xml/features/validation/ignoreCachedDTD" true Don't reuse DTDs found in the cache, even if use-cachedGrammarInParse is true false (default) Reuse DTDs found in the cache, if use-cachedGrammarInParse is true

    "http://apache.org/xml/features/schema/ignore-annotations" true Don't process annotations found in an XMLSchema false (default) Process the annotations found in an XMLSchema

    "http://apache.org/xml/features/disable-default-entity-resolution" true Entities will be resolved only by a resolver installed by the user false (default) If the entity resolver has not been installed, or it refuses to resolve the given entity, the parser will try to locate it himself

    "http://apache.org/xml/features/validation/schema/skip-dtd-validation" true If XMLSchema validation is true, DTD validation will not be performed false (default) If a DTD is found, it will be used to validate the XML

    Returns:
    The pointer to the configuration object.
    Since:
    DOM Level 3

    virtual const DOMLSParserFilter* DOMLSParser::getFilter (  )  const [pure virtual]

    Get a const pointer to the application filter.

    This method returns the installed application filter. If no filter has been installed, then it will be a zero pointer.

    Returns:
    A const pointer to the installed application filter
    Since:
    DOM Level 3

    virtual bool DOMLSParser::getAsync (  )  const [pure virtual]

    Return whether the parser is asynchronous.

    Returns:
    true if the DOMLSParser is asynchronous, false if it is synchronous
    Since:
    DOM Level 3

    virtual bool DOMLSParser::getBusy (  )  const [pure virtual]

    Return whether the parser is busy parsing.

    Returns:
    true if the DOMLSParser is currently busy loading a document, otherwise false.
    Since:
    DOM Level 3

    virtual void DOMLSParser::setFilter ( DOMLSParserFilter *const   filter  )  [pure virtual]

    Set the application filter.

    When the application provides a filter, the parser will call out to the filter at the completion of the construction of each DOMElement node. The filter implementation can choose to remove the element from the document being constructed or to terminate the parse early. The filter is invoked after the operations requested by the DOMConfiguration parameters have been applied. For example, if "validate" is set to true, the validation is done before invoking the filter.

    Any previously set filter is merely dropped, since the parser does not own them.

    Parameters:
    filter A const pointer to the user supplied application filter.
    See also:
    getFilter
    Since:
    DOM Level 3

    virtual DOMDocument* DOMLSParser::parse ( const DOMLSInput source  )  [pure virtual]

    Parse an XML document from a resource identified by a DOMLSInput.

    The parser owns the returned DOMDocument. It will be deleted when the parser is released.

    Parameters:
    source The DOMLSInput from which the source of the document is to be read.
    Returns:
    If the DOMLSParser is a synchronous DOMLSParser the newly created and populated DOMDocument is returned. If the DOMLSParser is asynchronous then NULL is returned since the document object may not yet be constructed when this method returns.
    Exceptions:
    DOMException INVALID_STATE_ERR: Raised if the DOMLSParser::busy attribute is true.
    DOMLSException PARSE_ERR: Starting from Xerces-C++ 4.0.0 this exception is raised if the DOMLSParser was unable to load the XML document. DOM applications should attach a DOMErrorHandler using the parameter "error-handler" if they wish to get details on the error.
    See also:
    DOMLSInput::DOMLSInput

    DOMConfiguration

    resetDocumentPool

    Since:
    DOM Level 3

    virtual DOMDocument* DOMLSParser::parseURI ( const XMLCh *const   uri  )  [pure virtual]

    Parse an XML document from a location identified by a URI reference [IETF RFC 2396].

    If the URI contains a fragment identifier (see section 4.1 in [IETF RFC 2396]), the behavior is not defined by this specification, future versions of this specification may define the behavior.

    The parser owns the returned DOMDocument. It will be deleted when the parser is released.

    Parameters:
    uri The location of the XML document to be read (in Unicode)
    Returns:
    If the DOMLSParser is a synchronous DOMLSParser the newly created and populated DOMDocument is returned. If the DOMLSParser is asynchronous then NULL is returned since the document object is not yet parsed when this method returns.
    Exceptions:
    DOMException INVALID_STATE_ERR: Raised if the DOMLSParser::busy attribute is true.
    DOMLSException PARSE_ERR: Starting from Xerces-C++ 4.0.0 this exception is raised if the DOMLSParser was unable to load the XML document. DOM applications should attach a DOMErrorHandler using the parameter "error-handler" if they wish to get details on the error.
    See also:
    parse(DOMLSInput,...)

    resetDocumentPool

    Since:
    DOM Level 3

    virtual DOMDocument* DOMLSParser::parseURI ( const char *const   uri  )  [pure virtual]

    Parse an XML document from a location identified by a URI reference [IETF RFC 2396].

    If the URI contains a fragment identifier (see section 4.1 in [IETF RFC 2396]), the behavior is not defined by this specification, future versions of this specification may define the behavior.

    The parser owns the returned DOMDocument. It will be deleted when the parser is released.

    Parameters:
    uri The location of the XML document to be read (in the local code page)
    Returns:
    If the DOMLSParser is a synchronous DOMLSParser the newly created and populated DOMDocument is returned. If the DOMLSParser is asynchronous then NULL is returned since the document object is not yet parsed when this method returns.
    Exceptions:
    DOMException INVALID_STATE_ERR: Raised if the DOMLSParser::busy attribute is true.
    DOMLSException PARSE_ERR: Starting from Xerces-C++ 4.0.0 this exception is raised if the DOMLSParser was unable to load the XML document. DOM applications should attach a DOMErrorHandler using the parameter "error-handler" if they wish to get details on the error.
    See also:
    parse(DOMLSInput,...)

    resetDocumentPool

    Since:
    DOM Level 3

    virtual DOMNode* DOMLSParser::parseWithContext ( const DOMLSInput source,
    DOMNode contextNode,
    const ActionType  action 
    ) [pure virtual]

    Parse an XML fragment from a resource identified by a DOMLSInput and insert the content into an existing document at the position specified with the context and action arguments.

    When parsing the input stream, the context node (or its parent, depending on where the result will be inserted) is used for resolving unbound namespace prefixes. The context node's ownerDocument node (or the node itself if the node of type DOCUMENT_NODE) is used to resolve default attributes and entity references. As the new data is inserted into the document, at least one mutation event is fired per new immediate child or sibling of the context node. If the context node is a DOMDocument node and the action is ACTION_REPLACE_CHILDREN, then the document that is passed as the context node will be changed such that its xmlEncoding, documentURI, xmlVersion, inputEncoding, xmlStandalone, and all other such attributes are set to what they would be set to if the input source was parsed using DOMLSParser::parse(). This method is always synchronous, even if the DOMLSParser is asynchronous (DOMLSParser::getAsync() returns true). If an error occurs while parsing, the caller is notified through the ErrorHandler instance associated with the "error-handler" parameter of the DOMConfiguration. When calling parseWithContext, the values of the following configuration parameters will be ignored and their default values will always be used instead: "validate", "validate-if-schema" "element-content-whitespace". Other parameters will be treated normally, and the parser is expected to call the DOMLSParserFilter just as if a whole document was parsed.

    Parameters:
    source The DOMLSInput from which the source document is to be read. The source document must be an XML fragment, i.e. anything except a complete XML document (except in the case where the context node of type DOCUMENT_NODE, and the action is ACTION_REPLACE_CHILDREN), a DOCTYPE (internal subset), entity declaration(s), notation declaration(s), or XML or text declaration(s).
    contextNode The node that is used as the context for the data that is being parsed. This node must be a DOMDocument node, a DOMDocumentFragment node, or a node of a type that is allowed as a child of an DOMElement node, e.g. it cannot be an DOMAttribute node.
    action This parameter describes which action should be taken between the new set of nodes being inserted and the existing children of the context node. The set of possible actions is defined in ACTION_TYPES above.
    Returns:
    Return the node that is the result of the parse operation. If the result is more than one top-level node, the first one is returned.
    Exceptions:
    DOMException HIERARCHY_REQUEST_ERR: Raised if the content cannot replace, be inserted before, after, or as a child of the context node (see also DOMNode::insertBefore or DOMNode::replaceChild in [DOM Level 3 Core]). NOT_SUPPORTED_ERR: Raised if the DOMLSParser doesn't support this method, or if the context node is of type DOMDocument and the DOM implementation doesn't support the replacement of the DOMDocumentType child or DOMElement child. NO_MODIFICATION_ALLOWED_ERR: Raised if the context node is a read only node and the content is being appended to its child list, or if the parent node of the context node is read only node and the content is being inserted in its child list. INVALID_STATE_ERR: Raised if the DOMLSParser::getBusy() returns true.
    DOMLSException PARSE_ERR: Raised if the DOMLSParser was unable to load the XML fragment. DOM applications should attach a DOMErrorHandler using the parameter "error-handler" if they wish to get details on the error.
    Since:
    DOM Level 3

    virtual void DOMLSParser::abort (  )  [pure virtual]

    Abort the loading of the document that is currently being loaded by the DOMLSParser.

    If the DOMLSParser is currently not busy, a call to this method does nothing.

    Note: invoking this method will remove the installed DOMLSParserFilter filter

    Since:
    DOM Level 3

    virtual void DOMLSParser::release (  )  [pure virtual]

    Called to indicate that this DOMLSParser is no longer in use and that the implementation may relinquish any resources associated with it.

    Access to a released object will lead to unexpected result.

    virtual void DOMLSParser::resetDocumentPool (  )  [pure virtual]

    Reset the documents vector pool and release all the associated memory back to the system.

    When parsing a document using a DOM parser, all memory allocated for a DOM tree is associated to the DOM document.

    If you do multiple parse using the same DOM parser instance, then multiple DOM documents will be generated and saved in a vector pool. All these documents (and thus all the allocated memory) won't be deleted until the parser instance is destroyed.

    If you don't need these DOM documents anymore and don't want to destroy the DOM parser instance at this moment, then you can call this method to reset the document vector pool and release all the allocated memory back to the system.

    It is an error to call this method if you are in the middle of a parse (e.g. in the mid of a progressive parse).

    Exceptions:
    IOException An exception from the parser if this function is called when a parse is in progress.

    virtual Grammar* DOMLSParser::loadGrammar ( const DOMLSInput source,
    const Grammar::GrammarType  grammarType,
    const bool  toCache = false 
    ) [pure virtual]

    Preparse schema grammar (XML Schema, DTD, etc.

    ) via an input source object.

    This method invokes the preparsing process on a schema grammar XML file specified by the DOMLSInput parameter. If the 'toCache' flag is enabled, the parser will cache the grammars for re-use. If a grammar key is found in the pool, no caching of any grammar will take place.

    Parameters:
    source A const reference to the DOMLSInput object which points to the schema grammar file to be preparsed.
    grammarType The grammar type (Schema or DTD).
    toCache If true, we cache the preparsed grammar, otherwise, no chaching. Default is false.
    Returns:
    The preparsed schema grammar object (SchemaGrammar or DTDGrammar). That grammar object is owned by the parser.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    XMLException An exception from the parser or client handler code.
    DOMException A DOM exception as per DOM spec.
    See also:
    DOMLSInput::DOMLSInput

    virtual Grammar* DOMLSParser::loadGrammar ( const XMLCh *const   systemId,
    const Grammar::GrammarType  grammarType,
    const bool  toCache = false 
    ) [pure virtual]

    Preparse schema grammar (XML Schema, DTD, etc.

    ) via a file path or URL

    This method invokes the preparsing process on a schema grammar XML file specified by the file path parameter. If the 'toCache' flag is enabled, the parser will cache the grammars for re-use. If a grammar key is found in the pool, no caching of any grammar will take place.

    Parameters:
    systemId A const XMLCh pointer to the Unicode string which contains the path to the XML grammar file to be preparsed.
    grammarType The grammar type (Schema or DTD).
    toCache If true, we cache the preparsed grammar, otherwise, no chaching. Default is false.
    Returns:
    The preparsed schema grammar object (SchemaGrammar or DTDGrammar). That grammar object is owned by the parser.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    XMLException An exception from the parser or client handler code.
    DOMException A DOM exception as per DOM spec.

    virtual Grammar* DOMLSParser::loadGrammar ( const char *const   systemId,
    const Grammar::GrammarType  grammarType,
    const bool  toCache = false 
    ) [pure virtual]

    Preparse schema grammar (XML Schema, DTD, etc.

    ) via a file path or URL

    This method invokes the preparsing process on a schema grammar XML file specified by the file path parameter. If the 'toCache' flag is enabled, the parser will cache the grammars for re-use. If a grammar key is found in the pool, no caching of any grammar will take place.

    Parameters:
    systemId A const char pointer to a native string which contains the path to the XML grammar file to be preparsed.
    grammarType The grammar type (Schema or DTD).
    toCache If true, we cache the preparsed grammar, otherwise, no chaching. Default is false.
    Returns:
    The preparsed schema grammar object (SchemaGrammar or DTDGrammar). That grammar object is owned by the parser.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    XMLException An exception from the parser or client handler code.
    DOMException A DOM exception as per DOM spec.

    virtual Grammar* DOMLSParser::getGrammar ( const XMLCh *const   nameSpaceKey  )  const [pure virtual]

    Retrieve the grammar that is associated with the specified namespace key.

    Parameters:
    nameSpaceKey Namespace key
    Returns:
    Grammar associated with the Namespace key.

    virtual Grammar* DOMLSParser::getRootGrammar (  )  const [pure virtual]

    Retrieve the grammar where the root element is declared.

    Returns:
    Grammar where root element declared

    virtual const XMLCh* DOMLSParser::getURIText ( unsigned int  uriId  )  const [pure virtual]

    Returns the string corresponding to a URI id from the URI string pool.

    Parameters:
    uriId id of the string in the URI string pool.
    Returns:
    URI string corresponding to the URI id.

    virtual void DOMLSParser::resetCachedGrammarPool (  )  [pure virtual]

    Clear the cached grammar pool.

    virtual XMLFilePos DOMLSParser::getSrcOffset (  )  const [pure virtual]

    Returns the current src offset within the input source.

    Returns:
    offset within the input source


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSSimpleTypeDefinition-members.html0000644000175000017500000006015511363620006025425 0ustar borisboris Xerces-C++: Member List

    XSSimpleTypeDefinition Member List

    This is the complete list of members for XSSimpleTypeDefinition, including all inherited members.

    COMPLEX_TYPE enum valueXSTypeDefinition
    derivedFrom(const XMLCh *typeNamespace, const XMLCh *name)XSTypeDefinition
    derivedFromType(const XSTypeDefinition *const ancestorType)XSSimpleTypeDefinition [virtual]
    FACET enum nameXSSimpleTypeDefinition
    FACET_ENUMERATION enum valueXSSimpleTypeDefinition
    FACET_FRACTIONDIGITS enum valueXSSimpleTypeDefinition
    FACET_LENGTH enum valueXSSimpleTypeDefinition
    FACET_MAXEXCLUSIVE enum valueXSSimpleTypeDefinition
    FACET_MAXINCLUSIVE enum valueXSSimpleTypeDefinition
    FACET_MAXLENGTH enum valueXSSimpleTypeDefinition
    FACET_MINEXCLUSIVE enum valueXSSimpleTypeDefinition
    FACET_MININCLUSIVE enum valueXSSimpleTypeDefinition
    FACET_MINLENGTH enum valueXSSimpleTypeDefinition
    FACET_NONE enum valueXSSimpleTypeDefinition
    FACET_PATTERN enum valueXSSimpleTypeDefinition
    FACET_TOTALDIGITS enum valueXSSimpleTypeDefinition
    FACET_WHITESPACE enum valueXSSimpleTypeDefinition
    fBaseTypeXSTypeDefinition [protected]
    fComponentTypeXSObject [protected]
    fDatatypeValidatorXSSimpleTypeDefinition [protected]
    fDefinedFacetsXSSimpleTypeDefinition [protected]
    fFinalXSTypeDefinition [protected]
    fFixedFacetsXSSimpleTypeDefinition [protected]
    fIdXSObject [protected]
    fMemberTypesXSSimpleTypeDefinition [protected]
    fMemoryManagerXSObject [protected]
    fPatternListXSSimpleTypeDefinition [protected]
    fPrimitiveOrItemTypeXSSimpleTypeDefinition [protected]
    fTypeCategoryXSTypeDefinition [protected]
    fVarietyXSSimpleTypeDefinition [protected]
    fXSAnnotationListXSSimpleTypeDefinition [protected]
    fXSFacetListXSSimpleTypeDefinition [protected]
    fXSModelXSObject [protected]
    fXSMultiValueFacetListXSSimpleTypeDefinition [protected]
    getAnnotations()XSSimpleTypeDefinition
    getAnonymous() const XSSimpleTypeDefinition [virtual]
    getBaseType()XSSimpleTypeDefinition [virtual]
    getBounded() const XSSimpleTypeDefinition
    getDatatypeValidator() const XSSimpleTypeDefinition
    getDefinedFacets() const XSSimpleTypeDefinition
    getFacets()XSSimpleTypeDefinition
    getFinal() const XSTypeDefinition
    getFinite() const XSSimpleTypeDefinition
    getFixedFacets() const XSSimpleTypeDefinition
    getId() const XSObject [virtual]
    getItemType()XSSimpleTypeDefinition
    getLexicalEnumeration()XSSimpleTypeDefinition
    getLexicalFacetValue(FACET facetName)XSSimpleTypeDefinition
    getLexicalPattern()XSSimpleTypeDefinition
    getMemberTypes() const XSSimpleTypeDefinition
    getMultiValueFacets()XSSimpleTypeDefinition
    getName() const XSSimpleTypeDefinition [virtual]
    getNamespace()XSSimpleTypeDefinition [virtual]
    getNamespaceItem()XSSimpleTypeDefinition [virtual]
    getNumeric() const XSSimpleTypeDefinition
    getOrdered() const XSSimpleTypeDefinition
    getPrimitiveType()XSSimpleTypeDefinition
    getType() const XSObject
    getTypeCategory() const XSTypeDefinition
    getVariety() const XSSimpleTypeDefinition
    isDefinedFacet(FACET facetName)XSSimpleTypeDefinition
    isFinal(short toTest)XSTypeDefinition
    isFixedFacet(FACET facetName)XSSimpleTypeDefinition
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    ORDERED_FALSE enum valueXSSimpleTypeDefinition
    ORDERED_PARTIAL enum valueXSSimpleTypeDefinition
    ORDERED_TOTAL enum valueXSSimpleTypeDefinition
    ORDERING enum nameXSSimpleTypeDefinition
    setId(XMLSize_t id)XSObject
    SIMPLE_TYPE enum valueXSTypeDefinition
    TYPE_CATEGORY enum nameXSTypeDefinition
    VARIETY enum nameXSSimpleTypeDefinition
    VARIETY_ABSENT enum valueXSSimpleTypeDefinition
    VARIETY_ATOMIC enum valueXSSimpleTypeDefinition
    VARIETY_LIST enum valueXSSimpleTypeDefinition
    VARIETY_UNION enum valueXSSimpleTypeDefinition
    XMemory()XMemory [protected]
    XSObject(XSConstants::COMPONENT_TYPE compType, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSObject
    XSObjectFactory classXSSimpleTypeDefinition [friend]
    XSSimpleTypeDefinition(DatatypeValidator *const datatypeValidator, VARIETY stVariety, XSTypeDefinition *const xsBaseType, XSSimpleTypeDefinition *const primitiveOrItemType, XSSimpleTypeDefinitionList *const memberTypes, XSAnnotation *headAnnot, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSSimpleTypeDefinition
    XSTypeDefinition(TYPE_CATEGORY typeCategory, XSTypeDefinition *const xsBaseType, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSTypeDefinition
    ~XSObject()XSObject [virtual]
    ~XSSimpleTypeDefinition()XSSimpleTypeDefinition
    ~XSTypeDefinition()XSTypeDefinition [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLInteger_8hpp-source.html0000644000175000017500000002003411363620005022572 0ustar borisboris Xerces-C++: XMLInteger.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSConstants-members.html0000644000175000017500000002142311363620006023270 0ustar borisboris Xerces-C++: Member List
    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classTranscodeToStr-members.html0000644000175000017500000000717711363620006023771 0ustar borisboris Xerces-C++: Member List

    TranscodeToStr Member List

    This is the complete list of members for TranscodeToStr, including all inherited members.

    adopt()TranscodeToStr
    length() const TranscodeToStr
    str() const TranscodeToStr
    TranscodeToStr(const XMLCh *in, const char *encoding, MemoryManager *manager=XMLPlatformUtils::fgMemoryManager)TranscodeToStr
    TranscodeToStr(const XMLCh *in, XMLSize_t length, const char *encoding, MemoryManager *manager=XMLPlatformUtils::fgMemoryManager)TranscodeToStr
    TranscodeToStr(const XMLCh *in, XMLTranscoder *trans, MemoryManager *manager=XMLPlatformUtils::fgMemoryManager)TranscodeToStr
    TranscodeToStr(const XMLCh *in, XMLSize_t length, XMLTranscoder *trans, MemoryManager *manager=XMLPlatformUtils::fgMemoryManager)TranscodeToStr
    ~TranscodeToStr()TranscodeToStr


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classSAXParser.png0000644000175000017500000000213411363620006021037 0ustar borisboris‰PNG  IHDRäP£N}PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfòIDATxœíšK’ã D­Í¬ 7@sƒ™ ±òý0TQü$0¨ƒ¨tG[?²“§r Gôëo½@lÕfõgï ß˜ˆ­Ú¬î—èñV÷Kôx«û%z¼Õý=Þ*k£àGš Ù'‘F‘UÈ ¾:àE2Ýͦ’d…W¨ÔÐì]ó©üÙ$› ¿¬üI/yp*V¹4/ã£:!—Ç)´Xù ê«C3r/sR ò£É¡º¾#?fsCú 7Å a˜yWJ&Þ‚\?ã$i£tiùŽYÌ`á"Ia~»sfgŠ®S È‹r‹,à€IÌ*r²HD9a®4p 9f°°M(;ÿÀϑ۔ÒmÔ‘G\WÀÁq$2ÜÃŽØ¥c{â„wB)\Д\°°’˜G«c6 Bù('9M¸øø”rkæ^?An§Ä—{«"2ÄÈ÷8ÎP ½¿Òå]lØj¸ [µëóÑ]|Øj´ []P¶oÃVÃmØj¸ [ ·a«á6l5܆­†Û°Õp¶nÃVíú°šÕ ù=¥gXOzv€õ¤gXOzv€õ¤gXOzv€õ¤gXOzv€õ¤gXOzv€õ¤gXOzv€õ¤gXOzv€õ¤gx˜D͞ťw“­‡É2bäÃÅȇ‹‘#®r\¼íÏÖ²aäW”A¾ÁÑmƒÍîÔÄȯ(ü•"x L¹ÛüV£²C[y#rDo~ÓÆy#¿¢lׄ*{9Õ;½Äȯ(ߨM/¾ÊñyºÁØìÆIŒüŠ O_ÒÛ+÷ÛîdG°šÕŽÜõòŒ #¿¢Âº‘¿©°ÍBåW,™ŒüŠøÛçp1òábäÃÅȇ‹‘#.F>\Œ|¸žüOÿÀG ]8úo–IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classStDOMNode-members.html0000644000175000017500000000761211363620006022601 0ustar borisboris Xerces-C++: Member List

    StDOMNode< T > Member List

    This is the complete list of members for StDOMNode< T >, including all inherited members.

    ClearNode()StDOMNode< T >
    operator T *() const StDOMNode< T >
    operator!=(T *node) const StDOMNode< T >
    operator*()StDOMNode< T >
    operator*() const StDOMNode< T >
    operator->() const StDOMNode< T >
    operator=(T *node)StDOMNode< T >
    operator==(T *node) const StDOMNode< T >
    StDOMNode(T *node=(T *) 0)StDOMNode< T >
    StDOMNode(const StDOMNode &stNode)StDOMNode< T >
    ~StDOMNode()StDOMNode< T >


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSElementDeclaration.png0000644000175000017500000000110511363620006023236 0ustar borisboris‰PNG  IHDRŠˆÊan\PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfÛIDAThí˜[– †É‹Ï ; ³ƒ™ Í“û_Âä´UªRÑSϪ IÀSÃψ¾§çË—Sz(‘¯ÄmzŠ’¤2ŠQ_‰}ãvŠ1Š—Sx‚LÖù1EÒ–™NÈLÑ«ÖN_ø-MD+J;Ý·ò¢”(JI;(JZEÔG±ó¢•ÌÝ£©–î³;„²q–;)mW>á;ýÑ”1O’ûåô€Í»(çßÃPNçóa(‡Ú#§8Å)NqŠS^Oó+èH¿ëþ %©Ð"Q±¦‹ªéÓ&ÍdöZqî d7"™h›X‰6uú¦–˜b¦Pަ#;(jbö¥R:#2±šÖ;³»ôeÚMÑ=Ú›—‹ó2ïQû¿”GÏîí¿sÞKÙÒ”ÛÅ)[”1O’1OµwQ\Oo`F@œâ§8Å)Nù (x NÙ¦€\@ZÙŹÓ\ßîQk¹¿^æNhÜ®(!¿xiD6’–øó ºäS7‹B‰ 3$@k¥‹y­ƒ2ª·Ù¢F§¨œ«‰¥£a`Y¬X,}©Ñ¡¬­Ê‹Ê&Hp Ê*»PW K_B1Ïõ.å*"«¼´)ç…²9™5êy™÷H±€Åâ€ß§œ2äIòr¨âD°ØsIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/XSMultiValueFacet_8hpp.html0000644000175000017500000000442311363620005022627 0ustar borisboris Xerces-C++: XSMultiValueFacet.hpp File Reference

    XSMultiValueFacet.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XSMultiValueFacet

    Defines

    #define XERCESC_INCLUDE_GUARD_XSMULTIVALUEFACET_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XSMULTIVALUEFACET_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSComplexTypeDefinition.png0000644000175000017500000000146011363620006023765 0ustar borisboris‰PNG  IHDRžÀ/ÇÏPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfÆIDAThíšAv㠆Ѧk¤à¹ÁÌ…f•ûa@ØÄ %@_<­°_‰ë¸?k“û½­L¿Œ÷e<ŠgˆyXÄ éˆP\Î ñ ÑÞ˜oD”,àÅ[†I9ôa^¸Çg9†í‹†Xñútü˜Gé¢ð™UGy2ÿø@±ý»5†oìýXÌk½/#¼†yÿõÿ—ïÉ[½^v¦Þ†oâÝþ^š÷q»]šwyÿÏxÆ3žñŒg¼…¼Õß“Wÿ~6^NCjL ‡Ä½%°Õ$OœZƒ˜â©i„¨oHá¹ÂÓÖKRIy¨‚è C<¾/ÚWxÃý!#x,ÄLûãhß¶€Çþ¿»ù·û·¡à½ô~t‹o嵄—^G2Þ,oõz¹z=Ïô—IàZœñŒg<ãÏxÆ»2oõ÷äÕ¿Ÿ8/½ñå"J0ˆszSŸíËAy}i°š Ÿ…®ÏxŠ`Ù%E䬚°òB!)HÄÅ÷‘ú™—EåaQ (ïäнZû/‹.Ù¾3oÛy§­0íÛdütCItð8•wô•í3y¯Ó4¯Œ_؆ú»‹.¢©yþ!í<õo‡?jx‡¦ÑÏkïÅy™×–¾^ç $ãÍòV¯—«×ó7ñL™®ÅÏxÆ3žñŒg¼+ópmr~i7Àxó> •¡WæQjTĹÆÐ{.ÆÂƒÔc/¼t#Æ®@êSÀ)µÀå<7òZ[üÁ _xèƒ2àŽwl¼óö¾×¼èˆÌãAy£4ÆËþx`ŸÓþÆ1€Sû\Ü¡‰¶S$^?pÍþÖó½4©ýËÏ’Zžèwžú÷à‡3ýtÝñ*õóüZž:bœ7–Œ7Ë[¼^þ1X)– +[*IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/functions_func_0x78.html0000644000175000017500000002756411363620005022207 0ustar borisboris Xerces-C++: Class Members - Functions
     

    - x -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMLSSerializer-members.html0000644000175000017500000001063011363620005023746 0ustar borisboris Xerces-C++: Member List

    DOMLSSerializer Member List

    This is the complete list of members for DOMLSSerializer, including all inherited members.

    DOMLSSerializer()DOMLSSerializer [protected]
    getDomConfig()=0DOMLSSerializer [pure virtual]
    getFilter() const =0DOMLSSerializer [pure virtual]
    getNewLine() const =0DOMLSSerializer [pure virtual]
    release()=0DOMLSSerializer [pure virtual]
    setFilter(DOMLSSerializerFilter *filter)=0DOMLSSerializer [pure virtual]
    setNewLine(const XMLCh *const newLine)=0DOMLSSerializer [pure virtual]
    write(const DOMNode *nodeToWrite, DOMLSOutput *const destination)=0DOMLSSerializer [pure virtual]
    writeToString(const DOMNode *nodeToWrite, MemoryManager *manager=NULL)=0DOMLSSerializer [pure virtual]
    writeToURI(const DOMNode *nodeToWrite, const XMLCh *uri)=0DOMLSSerializer [pure virtual]
    ~DOMLSSerializer()DOMLSSerializer [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_0x67.html0000644000175000017500000023131611363620005021162 0ustar borisboris Xerces-C++: Class Members
    Here is a list of all class members with links to the classes they belong to:

    - g -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMXPathNamespace.html0000644000175000017500000002445111363620006022616 0ustar borisboris Xerces-C++: DOMXPathNamespace Class Reference

    DOMXPathNamespace Class Reference

    The DOMXPathNamespace interface is returned by DOMXPathResult interfaces to represent the XPath namespace node type that DOM lacks. More...

    Inheritance diagram for DOMXPathNamespace:

    DOMNode

    List of all members.

    Public Types

    enum  XPathNodeType { XPATH_NAMESPACE_NODE = 13 }

    Public Member Functions

    Destructor
    virtual ~DOMXPathNamespace ()
     Destructor.
    Functions introduced in DOM Level 3
    virtual DOMElementgetOwnerElement () const =0
     The DOMElement on which the namespace was in scope when it was requested.

    Protected Member Functions

    Hidden constructors
     DOMXPathNamespace ()


    Detailed Description

    The DOMXPathNamespace interface is returned by DOMXPathResult interfaces to represent the XPath namespace node type that DOM lacks.

    There is no public constructor for this node type. Attempts to place it into a hierarchy or a NamedNodeMap result in a DOMException with the code HIERARCHY_REQUEST_ERR. This node is read only, so methods or setting of attributes that would mutate the node result in a DOMException with the code NO_MODIFICATION_ALLOWED_ERR. The core specification describes attributes of the DOMNode interface that are different for different node types but does not describe XPATH_NAMESPACE_NODE, so here is a description of those attributes for this node type. All attributes of DOMNode not described in this section have a null or false value. ownerDocument matches the ownerDocument of the ownerElement even if the element is later adopted. nodeName is always the string "#namespace". prefix is the prefix of the namespace represented by the node. localName is the same as prefix. nodeType is equal to XPATH_NAMESPACE_NODE. namespaceURI is the namespace URI of the namespace represented by the node. nodeValue is the same as namespaceURI. adoptNode, cloneNode, and importNode fail on this node type by raising a DOMException with the code NOT_SUPPORTED_ERR. Note: In future versions of the XPath specification, the definition of a namespace node may be changed incompatibly, in which case incompatible changes to field values may be required to implement versions beyond XPath 1.0.

    Since:
    DOM Level 3

    Member Enumeration Documentation

    Enumerator:
    XPATH_NAMESPACE_NODE 


    Constructor & Destructor Documentation

    DOMXPathNamespace::DOMXPathNamespace (  )  [protected]

    virtual DOMXPathNamespace::~DOMXPathNamespace (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual DOMElement* DOMXPathNamespace::getOwnerElement (  )  const [pure virtual]

    The DOMElement on which the namespace was in scope when it was requested.

    This does not change on a returned namespace node even if the document changes such that the namespace goes out of scope on that element and this node is no longer found there by XPath.

    Since:
    DOM Level 3


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classMemBufFormatTarget-members.html0000644000175000017500000001242411363620006024535 0ustar borisboris Xerces-C++: Member List

    MemBufFormatTarget Member List

    This is the complete list of members for MemBufFormatTarget, including all inherited members.

    flush()XMLFormatTarget [virtual]
    getLen() const MemBufFormatTarget
    getRawBuffer() const MemBufFormatTarget
    MemBufFormatTarget(XMLSize_t initCapacity=1023, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)MemBufFormatTarget
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    reset()MemBufFormatTarget
    writeChars(const XMLByte *const toWrite, const XMLSize_t count, XMLFormatter *const formatter)MemBufFormatTarget [virtual]
    XMemory()XMemory [protected]
    XMLFormatTarget()XMLFormatTarget [protected]
    ~MemBufFormatTarget()MemBufFormatTarget
    ~XMLFormatTarget()XMLFormatTarget [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMLSOutput_8hpp-source.html0000644000175000017500000002520111363620004022713 0ustar borisboris Xerces-C++: DOMLSOutput.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLDateTime_8hpp.html0000644000175000017500000000433211363620005021376 0ustar borisboris Xerces-C++: XMLDateTime.hpp File Reference

    XMLDateTime.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLDateTime

    Defines

    #define XERCESC_INCLUDE_GUARD_XML_DATETIME_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XML_DATETIME_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMConfiguration-members.html0000644000175000017500000000727111363620005024214 0ustar borisboris Xerces-C++: Member List

    DOMConfiguration Member List

    This is the complete list of members for DOMConfiguration, including all inherited members.

    canSetParameter(const XMLCh *name, const void *value) const =0DOMConfiguration [pure virtual]
    canSetParameter(const XMLCh *name, bool value) const =0DOMConfiguration [pure virtual]
    DOMConfiguration()DOMConfiguration [protected]
    getParameter(const XMLCh *name) const =0DOMConfiguration [pure virtual]
    getParameterNames() const =0DOMConfiguration [pure virtual]
    setParameter(const XMLCh *name, const void *value)=0DOMConfiguration [pure virtual]
    setParameter(const XMLCh *name, bool value)=0DOMConfiguration [pure virtual]
    ~DOMConfiguration()DOMConfiguration [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLContentModel-members.html0000644000175000017500000001512711363620006024021 0ustar borisboris Xerces-C++: Member List

    XMLContentModel Member List

    This is the complete list of members for XMLContentModel, including all inherited members.

    checkUniqueParticleAttribution(SchemaGrammar *const pGrammar, GrammarResolver *const pGrammarResolver, XMLStringPool *const pStringPool, XMLValidator *const pValidator, unsigned int *const pContentSpecOrgURI, const XMLCh *pComplexTypeName=0)=0XMLContentModel [pure virtual]
    gEOCFakeIdXMLContentModel [static]
    gEpsilonFakeIdXMLContentModel [static]
    getContentLeafNameTypeVector() const =0XMLContentModel [pure virtual]
    getNextState(unsigned int currentState, XMLSize_t elementIndex) const =0XMLContentModel [pure virtual]
    gInvalidTransXMLContentModel [static]
    handleRepetitions(const QName *const curElem, unsigned int curState, unsigned int currentLoop, unsigned int &nextState, unsigned int &nextLoop, XMLSize_t elementIndex, SubstitutionGroupComparator *comparator) const =0XMLContentModel [pure virtual]
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    validateContent(QName **const children, XMLSize_t childCount, unsigned int emptyNamespaceId, XMLSize_t *indexFailingChild, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager) const =0XMLContentModel [pure virtual]
    validateContentSpecial(QName **const children, XMLSize_t childCount, unsigned int emptyNamespaceId, GrammarResolver *const pGrammarResolver, XMLStringPool *const pStringPool, XMLSize_t *indexFailingChild, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager) const =0XMLContentModel [pure virtual]
    XMemory()XMemory [protected]
    XMLContentModel()XMLContentModel [protected]
    ~XMLContentModel()XMLContentModel [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_0x63.html0000644000175000017500000005325611363620005021163 0ustar borisboris Xerces-C++: Class Members
    Here is a list of all class members with links to the classes they belong to:

    - c -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_func_0x68.html0000644000175000017500000001527611363620005022203 0ustar borisboris Xerces-C++: Class Members - Functions
     

    - h -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLNetAccessor_8hpp.html0000644000175000017500000000467111363620005022121 0ustar borisboris Xerces-C++: XMLNetAccessor.hpp File Reference

    XMLNetAccessor.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLNetHTTPInfo
    class  XMLNetAccessor

    Defines

    #define XERCESC_INCLUDE_GUARD_XMLNETACCESSOR_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XMLNETACCESSOR_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLEntityHandler.html0000644000175000017500000003743011363620006022551 0ustar borisboris Xerces-C++: XMLEntityHandler Class Reference

    XMLEntityHandler Class Reference

    This abstract class is a callback mechanism for the scanner. More...

    Inheritance diagram for XMLEntityHandler:

    AbstractDOMParser SAXParser XercesDOMParser

    List of all members.

    Public Member Functions

    Destructor
    virtual ~XMLEntityHandler ()
     Default destructor.
    The pure virtual methods in this interface.
    virtual void endInputSource (const InputSource &inputSource)=0
     This method get called after the scanner has finished reading from the given input source while processing external entity references.
    virtual bool expandSystemId (const XMLCh *const systemId, XMLBuffer &toFill)=0
     This method allows the passes the scanned systemId to the entity handler, thereby giving it a chance to provide any customized handling like resolving relative path names.
    virtual void resetEntities ()=0
     This method allows the entity handler to reset itself, so that it can be used again.
    virtual InputSourceresolveEntity (XMLResourceIdentifier *resourceIdentifier)=0
     This method allows the entity handler to provide customized application specific entity resolution.
    virtual void startInputSource (const InputSource &inputSource)=0
     This method will be called before the scanner starts reading from an input source while processing external entity references.

    Protected Member Functions

    Constructor
     XMLEntityHandler ()
     Protected default constructor.


    Detailed Description

    This abstract class is a callback mechanism for the scanner.

    By creating a derivative of this class and plugging into the scanner, the scanner will call back on the object's methods to entity events.

    This class is primarily for use by those writing their own parser classes. If you use the standard parser classes, DOMParser and SAXParser, you won't use this API. You will instead use a similar mechanism defined by the SAX API, called EntityResolver.


    Constructor & Destructor Documentation

    virtual XMLEntityHandler::~XMLEntityHandler (  )  [virtual]

    Default destructor.

    XMLEntityHandler::XMLEntityHandler (  )  [protected]

    Protected default constructor.


    Member Function Documentation

    virtual void XMLEntityHandler::endInputSource ( const InputSource inputSource  )  [pure virtual]

    This method get called after the scanner has finished reading from the given input source while processing external entity references.

    Parameters:
    inputSource The input source for the entity

    Implemented in SAXParser, and XercesDOMParser.

    virtual bool XMLEntityHandler::expandSystemId ( const XMLCh *const   systemId,
    XMLBuffer &  toFill 
    ) [pure virtual]

    This method allows the passes the scanned systemId to the entity handler, thereby giving it a chance to provide any customized handling like resolving relative path names.

    The scanner first calls this method before calling resolveEntity.

    Parameters:
    systemId The system id extracted by the scanner from the input source.
    toFill The buffer in which the fully expanded system id needs to be stored.

    Implemented in SAXParser, and XercesDOMParser.

    virtual void XMLEntityHandler::resetEntities (  )  [pure virtual]

    This method allows the entity handler to reset itself, so that it can be used again.

    It is called prior to a new document parse operation.

    Implemented in SAXParser, and XercesDOMParser.

    virtual InputSource* XMLEntityHandler::resolveEntity ( XMLResourceIdentifier resourceIdentifier  )  [pure virtual]

    This method allows the entity handler to provide customized application specific entity resolution.

    Only one resolveEntity method will be used. If both setEntityResolver and setXMLEntityResolver are called, then the last one is used.

    Parameters:
    resourceIdentifier An object containing the type of resource to be resolved and the associated data members corresponding to this type.
    Returns:
    The value returned by the resolveEntity method or NULL otherwise to indicate no processing was done. The returned InputSource is owned by the parser which is responsible to clean up the memory.

    Implemented in SAXParser, and XercesDOMParser.

    virtual void XMLEntityHandler::startInputSource ( const InputSource inputSource  )  [pure virtual]

    This method will be called before the scanner starts reading from an input source while processing external entity references.

    Parameters:
    inputSource The external input source.

    Implemented in SAXParser, and XercesDOMParser.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMDocumentFragment.png0000644000175000017500000000070311363620005023030 0ustar borisboris‰PNG  IHDR—Pæ\úFPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfYIDATX…í•Kn„0 †ãͬíÜ 9AÕ¹PWÜÿõk ã¢!R‘j#Å›?v€ôgé³³€ „åZ …'¥ò$[ wÀ”"Cỉk°šET6XÎ|EtfuÝ0WVd¹EÝEXqX½cU ™aDa¨Sݬ)jÖì³òÚgÝÝì±€ì6ôWwÊçÒþ6}Ýö˜¦›ÂnÜÍ€,` XÀ¦Fã ŽÓ°N%ikR2Út?¤g{3L¼L„t(WbûÖÂÀü ¬–µJAb<ŽÂ5 rbY$ã†h  wHîÁ•‘E™¨YdŸaÉ.lX*›Àcmò ìé×ÝïÖ‹@ Œè·0.0l•¥5Ì»éimúj™ Œö—Ùì3ôºx7µÂ¨ÍÕJÏËÔs}Š÷¯½›=׃‘°´}¯nþÕø°‘¿ºo4¾sœå#IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/hierarchy.html0000644000175000017500000003756011363620005020351 0ustar borisboris Xerces-C++: Hierarchical Index

    Class Hierarchy

    This inheritance list is sorted roughly, but not completely, alphabetically:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMXPathNSResolver-members.html0000644000175000017500000000622311363620006024411 0ustar borisboris Xerces-C++: Member List

    DOMXPathNSResolver Member List

    This is the complete list of members for DOMXPathNSResolver, including all inherited members.

    addNamespaceBinding(const XMLCh *prefix, const XMLCh *uri)=0DOMXPathNSResolver [pure virtual]
    DOMXPathNSResolver()DOMXPathNSResolver [protected]
    lookupNamespaceURI(const XMLCh *prefix) const =0DOMXPathNSResolver [pure virtual]
    lookupPrefix(const XMLCh *URI) const =0DOMXPathNSResolver [pure virtual]
    release()=0DOMXPathNSResolver [pure virtual]
    ~DOMXPathNSResolver()DOMXPathNSResolver [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_0x68.html0000644000175000017500000001741411363620005021164 0ustar borisboris Xerces-C++: Class Members
    Here is a list of all class members with links to the classes they belong to:

    - h -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMErrorHandler_8hpp.html0000644000175000017500000000465311363620005022256 0ustar borisboris Xerces-C++: DOMErrorHandler.hpp File Reference

    DOMErrorHandler.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMErrorHandler
     Basic interface for DOM error handlers. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMERRORHANDLER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMERRORHANDLER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSAttributeUse.html0000644000175000017500000003775611363620006022324 0ustar borisboris Xerces-C++: XSAttributeUse Class Reference

    XSAttributeUse Class Reference

    Inheritance diagram for XSAttributeUse:

    XSObject XMemory

    List of all members.

    Public Member Functions

    Constructors
     XSAttributeUse (XSAttributeDeclaration *const xsAttDecl, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     The default constructor.
    Destructor
     ~XSAttributeUse ()
    XSAttributeUse methods
    bool getRequired () const
     [required]: determines whether this use of an attribute declaration requires an appropriate attribute information item to be present, or merely allows it.
    XSAttributeDeclarationgetAttrDeclaration () const
     [attribute declaration]: provides the attribute declaration itself, which will in turn determine the simple type definition used.
    XSConstants::VALUE_CONSTRAINT getConstraintType () const
     Value Constraint: one of default, fixed.
    const XMLChgetConstraintValue ()
     Value Constraint: The actual value.

    Protected Attributes

    bool fRequired
    XSConstants::VALUE_CONSTRAINT fConstraintType
    const XMLChfConstraintValue
    XSAttributeDeclarationfXSAttributeDeclaration

    Friends

    class XSObjectFactory


    Constructor & Destructor Documentation

    XSAttributeUse::XSAttributeUse ( XSAttributeDeclaration *const   xsAttDecl,
    XSModel *const   xsModel,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    The default constructor.

    Parameters:
    xsAttDecl 
    xsModel 
    manager The configurable memory manager

    XSAttributeUse::~XSAttributeUse (  ) 


    Member Function Documentation

    bool XSAttributeUse::getRequired (  )  const

    [required]: determines whether this use of an attribute declaration requires an appropriate attribute information item to be present, or merely allows it.

    References fRequired.

    XSAttributeDeclaration * XSAttributeUse::getAttrDeclaration (  )  const

    [attribute declaration]: provides the attribute declaration itself, which will in turn determine the simple type definition used.

    References fXSAttributeDeclaration.

    XSConstants::VALUE_CONSTRAINT XSAttributeUse::getConstraintType (  )  const

    Value Constraint: one of default, fixed.

    References fConstraintType.

    const XMLCh * XSAttributeUse::getConstraintValue (  ) 

    Value Constraint: The actual value.

    References fConstraintValue.


    Friends And Related Function Documentation

    friend class XSObjectFactory [friend]


    Member Data Documentation

    bool XSAttributeUse::fRequired [protected]

    Referenced by getRequired().

    Referenced by getConstraintValue().


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMDocument.png0000644000175000017500000000203011363620005021337 0ustar borisboris‰PNG  IHDR~PuÇe<PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf®IDATxœí™Qò£ ÆåeŸ!7€½Áî…þO½ÿ’€ˆZmÃLé’¯3ZD>ÂO vºüí¨%i2Ã?¡›~ct“ŽÝø†cG7¾áØÑo8vtãf3ç ><u^×D×8Æxç° <Ö»|köó'†Ô. T6w9\ðk;)áøãû)Âl†ÃL[;*wsZ×D×8zü*äW ó’_q‹£óà77:ûš_Ó ¼ÈG•ù%ŸhA‡T‹àâ™Äë©À»šá:~.ΟÔŸ2õž,SU¼¸3ô<}ᇷcÓØ)„áÆ/\ƒ#ÀFX¾ä·éÄçNèt›ŸžWúáÉy s*_O_=^¾à‡Žèé¢+¶%~TÎ]=þS~Ñ€‹¥¸5 ¼·¤ö7ùQ'ÅÃ8›ï7øàí0uŒ·øù¼Å°WÚÿ€&æ¡5<åÇO*œ¼o­ü(¾×ùm\_àGmøÑxÉ-æ…̯læ§ühÈÀŠsŹæ2Z^òó>òsnÃÏ¥åŒÏ+¨“ûü¨¿.¿³œô¿ívõTfÏøå™P­Wä·_¿oñËÒ½øÉý­Cy—ßY¶:Ì¿%ŽzØŽq5~ºÿmùq}Þdžðc7`n°‰`·~}3š›üšNÜ û_õ¶Vf,åß”€0@Îvœiê<É¿cžŽ)»¼ÿì%™%åß=¿êÕ,oœ=ïTü¢àòú<Z¿©“ûïª$+ÿ¾«êÁ|ÃÏ…Á~¿òµßLìoî`ü³ñ‡«ü3;ºñ ÇŽn|ñ£ß°ëŸyI^ëçæ}·5™aW³ù =:šMh8vtã>?Ýæ3;º/0ìé5£aW³ »šMhØÕlBîfv5›Ð°«Ù„†]Í&4ìj6¡aW³ ó©+¿é×§ør)?™”ŸLÊO&å'“ò“IùɤüdR~2)?™”ŸLÊO&å'“ò“Iùɸ~²ŸÌd:z)?™”ŸLÊO&å'“ò[0!Çc:$–ЇÚáR~tÁÒ!‚3ÖœcQ~Ë1?“H˜ÂÏÄ9g¤W­Iu±hbÍnb*¿¥æg#/ËÅx¦“u|6:ÿ’îó[èd+œ”ß²ágÖž_ü¥¦üXïðÃZå‡z’-s³eÁ]¿­ž¾ÿY~ÿãük,ñKù—òóVÊO&å'“ò“IùɤüdR~2)?™”ŸLSòû/þ¿ühlfÔ~IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classDOMRangeException.html0000644000175000017500000003000411363620005022656 0ustar borisboris Xerces-C++: DOMRangeException Class Reference

    DOMRangeException Class Reference

    Range operations may throw a DOMRangeException as specified in their method descriptions. More...

    Inheritance diagram for DOMRangeException:

    DOMException

    List of all members.

    Public Types

    Public Constants
    enum  RangeExceptionCode { BAD_BOUNDARYPOINTS_ERR = 111, INVALID_NODE_TYPE_ERR = 112 }
     Enumerators for DOM Range Exceptions. More...

    Public Member Functions

    Constructors
     DOMRangeException ()
     Default constructor for DOMRangeException.
     DOMRangeException (short code, short messageCode, MemoryManager *const memoryManager)
     Constructor which takes an error code and a message.
     DOMRangeException (const DOMRangeException &other)
     Copy constructor.
    Destructor.
    virtual ~DOMRangeException ()
     Destructor for DOMRangeException.


    Detailed Description

    Range operations may throw a DOMRangeException as specified in their method descriptions.

    See also the Document Object Model (DOM) Level 2 Traversal and Range Specification.

    Since:
    DOM Level 2

    Member Enumeration Documentation

    Enumerators for DOM Range Exceptions.

    BAD_BOUNDARYPOINTS_ERR: If the boundary-points of a Range do not meet specific requirements.

    INVALID_NODE_TYPE_ERR: If the container of an boundary-point of a Range is being set to either a node of an invalid type or a node with an ancestor of an invalid type.

    Since:
    DOM Level 2
    Enumerator:
    BAD_BOUNDARYPOINTS_ERR 
    INVALID_NODE_TYPE_ERR 


    Constructor & Destructor Documentation

    DOMRangeException::DOMRangeException (  ) 

    Default constructor for DOMRangeException.

    DOMRangeException::DOMRangeException ( short  code,
    short  messageCode,
    MemoryManager *const   memoryManager 
    )

    Constructor which takes an error code and a message.

    Parameters:
    code The error code which indicates the exception
    messageCode The string containing the error message
    memoryManager The memory manager used to (de)allocate memory

    DOMRangeException::DOMRangeException ( const DOMRangeException other  ) 

    Copy constructor.

    Parameters:
    other The object to be copied.

    virtual DOMRangeException::~DOMRangeException (  )  [virtual]

    Destructor for DOMRangeException.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/globals_defs_0x76.html0000644000175000017500000000477011363620007021602 0ustar borisboris Xerces-C++: Class Members
     

    - v -


    Generated on Wed Apr 21 17:55:51 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMLSSerializerFilter_8hpp-source.html0000644000175000017500000002124211363620004024673 0ustar borisboris Xerces-C++: DOMLSSerializerFilter.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XSMultiValueFacet_8hpp-source.html0000644000175000017500000003140511363620005024125 0ustar borisboris Xerces-C++: XSMultiValueFacet.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classBinMemInputStream.html0000644000175000017500000003620211363620005022754 0ustar borisboris Xerces-C++: BinMemInputStream Class Reference

    BinMemInputStream Class Reference

    Inheritance diagram for BinMemInputStream:

    BinInputStream XMemory

    List of all members.

    Public Types

    enum  BufOpts { BufOpt_Adopt, BufOpt_Copy, BufOpt_Reference }

    Public Member Functions

     BinMemInputStream (const XMLByte *const initData, const XMLSize_t capacity, const BufOpts bufOpt=BufOpt_Copy, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
    virtual ~BinMemInputStream ()
    void reset ()
    virtual XMLFilePos curPos () const
    virtual XMLSize_t readBytes (XMLByte *const toFill, const XMLSize_t maxToRead)
    virtual const XMLChgetContentType () const
     Return the "out-of-band" content type for the data supplied by this input stream in the form of the media-type production (mime type with optional parameters such as encoding) as defined by the HTTP 1.1 specification.
    XMLSize_t getSize () const


    Member Enumeration Documentation

    Enumerator:
    BufOpt_Adopt 
    BufOpt_Copy 
    BufOpt_Reference 


    Constructor & Destructor Documentation

    BinMemInputStream::BinMemInputStream ( const XMLByte *const   initData,
    const XMLSize_t  capacity,
    const BufOpts  bufOpt = BufOpt_Copy,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    virtual BinMemInputStream::~BinMemInputStream (  )  [virtual]


    Member Function Documentation

    void BinMemInputStream::reset (  ) 

    XMLFilePos BinMemInputStream::curPos (  )  const [virtual]

    Implements BinInputStream.

    virtual XMLSize_t BinMemInputStream::readBytes ( XMLByte *const   toFill,
    const XMLSize_t  maxToRead 
    ) [virtual]

    Implements BinInputStream.

    virtual const XMLCh* BinMemInputStream::getContentType (  )  const [virtual]

    Return the "out-of-band" content type for the data supplied by this input stream in the form of the media-type production (mime type with optional parameters such as encoding) as defined by the HTTP 1.1 specification.

    If no such content type is provided for the data, 0 is returned. This function is expected to return the correct value at any time after the construction of the stream.

    An example of the stream that may return non-0 from this function is an HTTP stream with the value returned taken from the "Content-Type" HTTP header. Note also that if the encoding of the data is known to the application by some other means then the setEncoding function in the InputSource object should be used instead. The getContentType function should only be used to return information that is intrinsic to the stream.

    Returns:
    The content type, or 0 if one is not available.

    Implements BinInputStream.

    XMLSize_t BinMemInputStream::getSize (  )  const


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLTransService-members.html0000644000175000017500000002326711363620006024042 0ustar borisboris Xerces-C++: Member List

    XMLTransService Member List

    This is the complete list of members for XMLTransService, including all inherited members.

    addEncoding(const XMLCh *const encoding, ENameMap *const ownMapping)XMLTransService [static]
    Codes enum nameXMLTransService
    compareIString(const XMLCh *const comp1, const XMLCh *const comp2)=0XMLTransService [pure virtual]
    compareNIString(const XMLCh *const comp1, const XMLCh *const comp2, const XMLSize_t maxChars)=0XMLTransService [pure virtual]
    getId() const =0XMLTransService [pure virtual]
    gMappingsXMLTransService [protected, static]
    gMappingsRecognizerXMLTransService [protected, static]
    initTransService()XMLTransService [protected, virtual]
    InternalFailure enum valueXMLTransService
    lowerCase(XMLCh *const toLowerCase)=0XMLTransService [pure virtual]
    makeNewLCPTranscoder(MemoryManager *manager)=0XMLTransService [pure virtual]
    makeNewTranscoderFor(const XMLCh *const encodingName, XMLTransService::Codes &resValue, const XMLSize_t blockSize, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLTransService
    makeNewTranscoderFor(const char *const encodingName, XMLTransService::Codes &resValue, const XMLSize_t blockSize, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLTransService
    makeNewTranscoderFor(XMLRecognizer::Encodings encodingEnum, XMLTransService::Codes &resValue, const XMLSize_t blockSize, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLTransService
    makeNewXMLTranscoder(const XMLCh *const encodingName, XMLTransService::Codes &resValue, const XMLSize_t blockSize, MemoryManager *const manager)=0XMLTransService [protected, pure virtual]
    Ok enum valueXMLTransService
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    SupportFilesNotFound enum valueXMLTransService
    supportsSrcOfs() const =0XMLTransService [pure virtual]
    UnsupportedEncoding enum valueXMLTransService
    upperCase(XMLCh *const toUpperCase)=0XMLTransService [pure virtual]
    XMemory()XMemory [protected]
    XMLInitializer classXMLTransService [friend]
    XMLPlatformUtils classXMLTransService [friend]
    XMLTransService()XMLTransService [protected]
    ~XMLTransService()XMLTransService [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLNetAccessor.png0000644000175000017500000000062311363620006022022 0ustar borisboris‰PNG  IHDRpP3bìNPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf)IDATX…í”K @ÉÆ5áÔè…ºêý`~`éô'Ž:%a )<ò)Ö=+Å=º*¹_Œ<M§)ýˆ4 ”Ù#ç² ÒÚ/Hì0ªaäâ2d$Ý12€X€aäd'ƒœÅPà"ÕMÐÞ£ôVh±òt«9 R N/Ä^pðÿŽSƒÕŸÇ5éWWÞ†£ÁaèïjØÀ6°ÄJq¾.¸ éüãô°d×"zR$G@Ì ÀG Ï H†5:ô@yÆû3²`jØ õ¹9~ B :-܃5äÁ("@j W 1ƒ<•TKP3ƒÖbxG´¼f@K‡»©©8Sãä=ò¢ÞzîªC­h®«îÿîj—ÀÚÏã \°Õ·(èSIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/functions_eval_0x65.html0000644000175000017500000004070311363620005022165 0ustar borisboris Xerces-C++: Class Members - Enumerator
     

    - e -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMRange.html0000644000175000017500000023760011363620005021012 0ustar borisboris Xerces-C++: DOMRange Class Reference

    DOMRange Class Reference

    List of all members.

    Public Types

    Public Constants
    enum  CompareHow { START_TO_START = 0, START_TO_END = 1, END_TO_END = 2, END_TO_START = 3 }
     Constants CompareHow. More...

    Public Member Functions

    Destructor
    virtual ~DOMRange ()
     Destructor.
    Functions introduced in DOM Level 2
    virtual DOMNodegetStartContainer () const =0
     DOMNode within which the Range begins
    Exceptions:
    DOMException INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.

    virtual XMLSize_t getStartOffset () const =0
     Offset within the starting node of the Range.
    virtual DOMNodegetEndContainer () const =0
     DOMNode within which the Range ends
    Exceptions:
    DOMException INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.

    virtual XMLSize_t getEndOffset () const =0
     Offset within the ending node of the Range.
    virtual bool getCollapsed () const =0
     TRUE if the Range is collapsed
    Exceptions:
    DOMException INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.

    virtual const DOMNodegetCommonAncestorContainer () const =0
     The deepest common ancestor container of the Range's two boundary-points.
    virtual void setStart (const DOMNode *refNode, XMLSize_t offset)=0
     Sets the attributes describing the start of the Range.
    virtual void setEnd (const DOMNode *refNode, XMLSize_t offset)=0
     Sets the attributes describing the end of a Range.
    virtual void setStartBefore (const DOMNode *refNode)=0
     Sets the start position to be before a node.
    virtual void setStartAfter (const DOMNode *refNode)=0
     Sets the start position to be after a node.
    virtual void setEndBefore (const DOMNode *refNode)=0
     Sets the end position to be before a node.
    virtual void setEndAfter (const DOMNode *refNode)=0
     Sets the end of a Range to be after a node.
    virtual void collapse (bool toStart)=0
     Collapse a Range onto one of its boundary-points.
    virtual void selectNode (const DOMNode *refNode)=0
     Select a node and its contents.
    virtual void selectNodeContents (const DOMNode *refNode)=0
     Select the contents within a node.
    virtual short compareBoundaryPoints (CompareHow how, const DOMRange *sourceRange) const =0
     Compare the boundary-points of two Ranges in a document.
    virtual void deleteContents ()=0
     Removes the contents of a Range from the containing document or document fragment without returning a reference to the removed content.
    virtual DOMDocumentFragmentextractContents ()=0
     Moves the contents of a Range from the containing document or document fragment to a new DOMDocumentFragment.
    virtual DOMDocumentFragmentcloneContents () const =0
     Duplicates the contents of a Range.
    virtual void insertNode (DOMNode *newNode)=0
     Inserts a node into the DOMDocument or DOMDocumentFragment at the start of the Range.
    virtual void surroundContents (DOMNode *newParent)=0
     Reparents the contents of the Range to the given node and inserts the node at the position of the start of the Range.
    virtual DOMRangecloneRange () const =0
     Produces a new Range whose boundary-points are equal to the boundary-points of the Range.
    virtual const XMLChtoString () const =0
     Returns the contents of a Range as a string.
    virtual void detach ()=0
     Called to indicate that the Range is no longer in use and that the implementation may relinquish any resources associated with this Range.
    Non-standard Extension
    virtual void release ()=0
     Called to indicate that this Range is no longer in use and that the implementation may relinquish any resources associated with it.

    Protected Member Functions

    Hidden constructors
     DOMRange ()
     DOMRange (const DOMRange &)


    Detailed Description

    See also the Document Object Model (DOM) Level 2 Traversal and Range Specification.
    Since:
    DOM Level 2

    Member Enumeration Documentation

    Constants CompareHow.

    START_TO_START: Compare start boundary-point of sourceRange to start boundary-point of Range on which compareBoundaryPoints is invoked.

    START_TO_END: Compare start boundary-point of sourceRange to end boundary-point of Range on which compareBoundaryPoints is invoked.

    END_TO_END: Compare end boundary-point of sourceRange to end boundary-point of Range on which compareBoundaryPoints is invoked.

    END_TO_START: Compare end boundary-point of sourceRange to start boundary-point of Range on which compareBoundaryPoints is invoked.

    Since:
    DOM Level 2
    Enumerator:
    START_TO_START 
    START_TO_END 
    END_TO_END 
    END_TO_START 


    Constructor & Destructor Documentation

    DOMRange::DOMRange (  )  [protected]

    DOMRange::DOMRange ( const DOMRange  )  [protected]

    virtual DOMRange::~DOMRange (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual DOMNode* DOMRange::getStartContainer (  )  const [pure virtual]

    DOMNode within which the Range begins

    Exceptions:
    DOMException INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.

    Since:
    DOM Level 2

    virtual XMLSize_t DOMRange::getStartOffset (  )  const [pure virtual]

    Offset within the starting node of the Range.

    Exceptions:
    DOMException INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
    Since:
    DOM Level 2

    virtual DOMNode* DOMRange::getEndContainer (  )  const [pure virtual]

    DOMNode within which the Range ends

    Exceptions:
    DOMException INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.

    Since:
    DOM Level 2

    virtual XMLSize_t DOMRange::getEndOffset (  )  const [pure virtual]

    Offset within the ending node of the Range.

    Exceptions:
    DOMException INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
    Since:
    DOM Level 2

    virtual bool DOMRange::getCollapsed (  )  const [pure virtual]

    TRUE if the Range is collapsed

    Exceptions:
    DOMException INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.

    Since:
    DOM Level 2

    virtual const DOMNode* DOMRange::getCommonAncestorContainer (  )  const [pure virtual]

    The deepest common ancestor container of the Range's two boundary-points.

    Exceptions:
    DOMException INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
    Since:
    DOM Level 2

    virtual void DOMRange::setStart ( const DOMNode refNode,
    XMLSize_t  offset 
    ) [pure virtual]

    Sets the attributes describing the start of the Range.

    Parameters:
    refNode The refNode value. This parameter must be different from null.
    offset The startOffset value.
    Exceptions:
    DOMRangeException INVALID_NODE_TYPE_ERR: Raised if refNode or an ancestor of refNode is an DOMEntity, DOMNotation, or DOMDocumentType node.
    DOMException INDEX_SIZE_ERR: Raised if offset is negative or greater than the number of child units in refNode. Child units are 16-bit units if refNode is a type of DOMCharacterData node (e.g., a DOMText or DOMComment node) or a DOMProcessingInstruction node. Child units are Nodes in all other cases.
    INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
    WRONG_DOCUMENT_ERR: Raised if refNode was created from a different document than the one that created this range.
    Since:
    DOM Level 2

    virtual void DOMRange::setEnd ( const DOMNode refNode,
    XMLSize_t  offset 
    ) [pure virtual]

    Sets the attributes describing the end of a Range.

    Parameters:
    refNode The refNode value. This parameter must be different from null.
    offset The endOffset value.
    Exceptions:
    DOMRangeException INVALID_NODE_TYPE_ERR: Raised if refNode or an ancestor of refNode is an DOMEntity, DOMNotation, or DOMDocumentType node.
    DOMException INDEX_SIZE_ERR: Raised if offset is negative or greater than the number of child units in refNode. Child units are 16-bit units if refNode is a type of DOMCharacterData node (e.g., a DOMText or DOMComment node) or a DOMProcessingInstruction node. Child units are Nodes in all other cases.
    INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
    WRONG_DOCUMENT_ERR: Raised if refNode was created from a different document than the one that created this range.
    Since:
    DOM Level 2

    virtual void DOMRange::setStartBefore ( const DOMNode refNode  )  [pure virtual]

    Sets the start position to be before a node.

    Parameters:
    refNode Range starts before refNode
    Exceptions:
    DOMRangeException INVALID_NODE_TYPE_ERR: Raised if the root container of refNode is not an DOMAttr, DOMDocument, or DOMDocumentFragment node or if refNode is a DOMDocument, DOMDocumentFragment, DOMAttr, DOMEntity, or DOMNotation node.
    DOMException INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
    WRONG_DOCUMENT_ERR: Raised if refNode was created from a different document than the one that created this range.
    Since:
    DOM Level 2

    virtual void DOMRange::setStartAfter ( const DOMNode refNode  )  [pure virtual]

    Sets the start position to be after a node.

    Parameters:
    refNode Range starts after refNode
    Exceptions:
    DOMRangeException INVALID_NODE_TYPE_ERR: Raised if the root container of refNode is not an DOMAttr, DOMDocument, or DOMDocumentFragment node or if refNode is a DOMDocument, DOMDocumentFragment, DOMAttr, DOMEntity, or DOMNotation node.
    DOMException INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
    WRONG_DOCUMENT_ERR: Raised if refNode was created from a different document than the one that created this range.
    Since:
    DOM Level 2

    virtual void DOMRange::setEndBefore ( const DOMNode refNode  )  [pure virtual]

    Sets the end position to be before a node.

    Parameters:
    refNode Range ends before refNode
    Exceptions:
    DOMRangeException INVALID_NODE_TYPE_ERR: Raised if the root container of refNode is not an DOMAttr, DOMDocument, or DOMDocumentFragment node or if refNode is a DOMDocument, DOMDocumentFragment, DOMAttr, DOMEntity, or DOMNotation node.
    DOMException INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
    WRONG_DOCUMENT_ERR: Raised if refNode was created from a different document than the one that created this range.
    Since:
    DOM Level 2

    virtual void DOMRange::setEndAfter ( const DOMNode refNode  )  [pure virtual]

    Sets the end of a Range to be after a node.

    Parameters:
    refNode Range ends after refNode.
    Exceptions:
    DOMRangeException INVALID_NODE_TYPE_ERR: Raised if the root container of refNode is not a DOMAttr, DOMDocument or DOMDocumentFragment node or if refNode is a DOMDocument, DOMDocumentFragment, DOMAttr, DOMEntity, or DOMNotation node.
    DOMException INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
    WRONG_DOCUMENT_ERR: Raised if refNode was created from a different document than the one that created this range.
    Since:
    DOM Level 2

    virtual void DOMRange::collapse ( bool  toStart  )  [pure virtual]

    Collapse a Range onto one of its boundary-points.

    Parameters:
    toStart If TRUE, collapses the Range onto its start; if FALSE, collapses it onto its end.
    Exceptions:
    DOMException INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
    Since:
    DOM Level 2

    virtual void DOMRange::selectNode ( const DOMNode refNode  )  [pure virtual]

    Select a node and its contents.

    Parameters:
    refNode The node to select.
    Exceptions:
    DOMRangeException INVALID_NODE_TYPE_ERR: Raised if an ancestor of refNode is an DOMEntity, DOMNotation or DOMDocumentType node or if refNode is a DOMDocument, DOMDocumentFragment, DOMAttr, DOMEntity, or DOMNotation node.
    DOMException INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
    WRONG_DOCUMENT_ERR: Raised if refNode was created from a different document than the one that created this range.
    Since:
    DOM Level 2

    virtual void DOMRange::selectNodeContents ( const DOMNode refNode  )  [pure virtual]

    Select the contents within a node.

    Parameters:
    refNode DOMNode to select from
    Exceptions:
    DOMRangeException INVALID_NODE_TYPE_ERR: Raised if refNode or an ancestor of refNode is an DOMEntity, DOMNotation or DOMDocumentType node.
    DOMException INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
    WRONG_DOCUMENT_ERR: Raised if refNode was created from a different document than the one that created this range.
    Since:
    DOM Level 2

    virtual short DOMRange::compareBoundaryPoints ( CompareHow  how,
    const DOMRange sourceRange 
    ) const [pure virtual]

    Compare the boundary-points of two Ranges in a document.

    Parameters:
    how A code representing the type of comparison, as defined above.
    sourceRange The Range on which this current Range is compared to.
    Returns:
    -1, 0 or 1 depending on whether the corresponding boundary-point of the Range is respectively before, equal to, or after the corresponding boundary-point of sourceRange.
    Exceptions:
    DOMException WRONG_DOCUMENT_ERR: Raised if the two Ranges are not in the same DOMDocument or DOMDocumentFragment.
    INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
    Since:
    DOM Level 2

    virtual void DOMRange::deleteContents (  )  [pure virtual]

    Removes the contents of a Range from the containing document or document fragment without returning a reference to the removed content.

    Exceptions:
    DOMException NO_MODIFICATION_ALLOWED_ERR: Raised if any portion of the content of the Range is read-only or any of the nodes that contain any of the content of the Range are read-only.
    INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
    Since:
    DOM Level 2

    virtual DOMDocumentFragment* DOMRange::extractContents (  )  [pure virtual]

    Moves the contents of a Range from the containing document or document fragment to a new DOMDocumentFragment.

    Returns:
    A DOMDocumentFragment containing the extracted contents.
    Exceptions:
    DOMException NO_MODIFICATION_ALLOWED_ERR: Raised if any portion of the content of the Range is read-only or any of the nodes which contain any of the content of the Range are read-only.
    HIERARCHY_REQUEST_ERR: Raised if a DOMDocumentType node would be extracted into the new DOMDocumentFragment.
    INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
    Since:
    DOM Level 2

    virtual DOMDocumentFragment* DOMRange::cloneContents (  )  const [pure virtual]

    Duplicates the contents of a Range.

    Returns:
    A DOMDocumentFragment that contains content equivalent to this Range.
    Exceptions:
    DOMException HIERARCHY_REQUEST_ERR: Raised if a DOMDocumentType node would be extracted into the new DOMDocumentFragment.
    INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
    Since:
    DOM Level 2

    virtual void DOMRange::insertNode ( DOMNode newNode  )  [pure virtual]

    Inserts a node into the DOMDocument or DOMDocumentFragment at the start of the Range.

    If the container is a DOMText node, this will be split at the start of the Range (as if the DOMText node's splitText method was performed at the insertion point) and the insertion will occur between the two resulting DOMText nodes. Adjacent DOMText nodes will not be automatically merged. If the node to be inserted is a DOMDocumentFragment node, the children will be inserted rather than the DOMDocumentFragment node itself.

    Parameters:
    newNode The node to insert at the start of the Range
    Exceptions:
    DOMException NO_MODIFICATION_ALLOWED_ERR: Raised if an ancestor container of the start of the Range is read-only.
    WRONG_DOCUMENT_ERR: Raised if newNode and the container of the start of the Range were not created from the same document.
    HIERARCHY_REQUEST_ERR: Raised if the container of the start of the Range is of a type that does not allow children of the type of newNode or if newNode is an ancestor of the container.
    INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
    DOMRangeException INVALID_NODE_TYPE_ERR: Raised if newNode is an DOMAttr, DOMEntity, DOMNotation, or DOMDocument node.
    Since:
    DOM Level 2

    virtual void DOMRange::surroundContents ( DOMNode newParent  )  [pure virtual]

    Reparents the contents of the Range to the given node and inserts the node at the position of the start of the Range.

    Parameters:
    newParent The node to surround the contents with.
    Exceptions:
    DOMException NO_MODIFICATION_ALLOWED_ERR: Raised if an ancestor container of either boundary-point of the Range is read-only.
    WRONG_DOCUMENT_ERR: Raised if newParent and the container of the start of the Range were not created from the same document.
    HIERARCHY_REQUEST_ERR: Raised if the container of the start of the Range is of a type that does not allow children of the type of newParent or if newParent is an ancestor of the container or if node would end up with a child node of a type not allowed by the type of node.
    INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
    DOMRangeException BAD_BOUNDARYPOINTS_ERR: Raised if the Range partially selects a non-text node.
    INVALID_NODE_TYPE_ERR: Raised if node is an DOMAttr, DOMEntity, DOMDocumentType, DOMNotation, DOMDocument, or DOMDocumentFragment node.
    Since:
    DOM Level 2

    virtual DOMRange* DOMRange::cloneRange (  )  const [pure virtual]

    Produces a new Range whose boundary-points are equal to the boundary-points of the Range.

    Returns:
    The duplicated Range.
    Exceptions:
    DOMException INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
    Since:
    DOM Level 2

    virtual const XMLCh* DOMRange::toString (  )  const [pure virtual]

    Returns the contents of a Range as a string.

    This string contains only the data characters, not any markup.

    Returns:
    The contents of the Range.
    Exceptions:
    DOMException INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
    Since:
    DOM Level 2

    virtual void DOMRange::detach (  )  [pure virtual]

    Called to indicate that the Range is no longer in use and that the implementation may relinquish any resources associated with this Range.

    Subsequent calls to any methods or attribute getters on this Range will result in a DOMException being thrown with an error code of INVALID_STATE_ERR.

    Exceptions:
    DOMException INVALID_STATE_ERR: Raised if detach() has already been invoked on this object.
    Since:
    DOM Level 2

    virtual void DOMRange::release (  )  [pure virtual]

    Called to indicate that this Range is no longer in use and that the implementation may relinquish any resources associated with it.

    (release() will call detach() where appropriate)

    Access to a released object will lead to unexpected result.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLBigDecimal.png0000644000175000017500000000101611363620006021566 0ustar borisboris‰PNG  IHDRfˆ翃£PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf¤IDATX…í–[v„ †áežvÝA»¡>¹ÿ%4 w+ŽØÖsœ<ƒH>sçüæc¾™÷0ÛÞ^šqtyý㹈§O—'¿4çG0`h™MÅÚy‡2ÒvJ¤2r•¾ë‡~|@옮(ùãxRÿ”®‹m‰û#£©[èÒ9zN0ý¹8Ætnnô-ü%sæ¿jØã¥_e–ÏK˜Ç²\Â\V7e”QF™›3ª¯ÆTmí¢.-6nÈTÌŒ;Ád})¿¤±˜M>¶® klL‚Ó}gm]4o} vå§êä^—{Ä-f¥­WLcÆ—Zs‘ÁalU[‹î—¤“ŸT·|7eT_?iª¯•QFeþ%ƒóÍÀtö›Y ;*$ÄñM1Ë Š-u¤‰0- 1=ÀÐTVh¤)ò^‹DÆÒ >Œ5²s4²O-¤I®4Œä“–³jÞø±Ö´~OJbÊ$å3`JÚÖô±Aî«|¬)ù¬™´?C‰ûCu“ý)u“Ø`ïlìM{6ŸÏ3Gþoð-\œø¯úXgd‹%gæ/IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/DOMNotation_8hpp.html0000644000175000017500000000462111363620005021455 0ustar borisboris Xerces-C++: DOMNotation.hpp File Reference

    DOMNotation.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMNotation
     This interface represents a notation declared in the DTD. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMNOTATION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMNOTATION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMXPathException_8hpp.html0000644000175000017500000000442311363620005022565 0ustar borisboris Xerces-C++: DOMXPathException.hpp File Reference

    DOMXPathException.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMXPathException

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMXPATHEXCEPTION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMXPATHEXCEPTION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLDocumentHandler-members.html0000644000175000017500000001345411363620006024503 0ustar borisboris Xerces-C++: Member List

    XMLDocumentHandler Member List

    This is the complete list of members for XMLDocumentHandler, including all inherited members.

    docCharacters(const XMLCh *const chars, const XMLSize_t length, const bool cdataSection)=0XMLDocumentHandler [pure virtual]
    docComment(const XMLCh *const comment)=0XMLDocumentHandler [pure virtual]
    docPI(const XMLCh *const target, const XMLCh *const data)=0XMLDocumentHandler [pure virtual]
    endDocument()=0XMLDocumentHandler [pure virtual]
    endElement(const XMLElementDecl &elemDecl, const unsigned int uriId, const bool isRoot, const XMLCh *const prefixName=0)=0XMLDocumentHandler [pure virtual]
    endEntityReference(const XMLEntityDecl &entDecl)=0XMLDocumentHandler [pure virtual]
    ignorableWhitespace(const XMLCh *const chars, const XMLSize_t length, const bool cdataSection)=0XMLDocumentHandler [pure virtual]
    resetDocument()=0XMLDocumentHandler [pure virtual]
    startDocument()=0XMLDocumentHandler [pure virtual]
    startElement(const XMLElementDecl &elemDecl, const unsigned int uriId, const XMLCh *const prefixName, const RefVectorOf< XMLAttr > &attrList, const XMLSize_t attrCount, const bool isEmpty, const bool isRoot)=0XMLDocumentHandler [pure virtual]
    startEntityReference(const XMLEntityDecl &entDecl)=0XMLDocumentHandler [pure virtual]
    XMLDecl(const XMLCh *const versionStr, const XMLCh *const encodingStr, const XMLCh *const standaloneStr, const XMLCh *const autoEncodingStr)=0XMLDocumentHandler [pure virtual]
    XMLDocumentHandler()XMLDocumentHandler [protected]
    ~XMLDocumentHandler()XMLDocumentHandler [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMImplementationSource-members.html0000644000175000017500000000532211363620005025546 0ustar borisboris Xerces-C++: Member List

    DOMImplementationSource Member List

    This is the complete list of members for DOMImplementationSource, including all inherited members.

    DOMImplementationSource()DOMImplementationSource [protected]
    getDOMImplementation(const XMLCh *features) const =0DOMImplementationSource [pure virtual]
    getDOMImplementationList(const XMLCh *features) const =0DOMImplementationSource [pure virtual]
    ~DOMImplementationSource()DOMImplementationSource [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMRangeException-members.html0000644000175000017500000002314711363620005024320 0ustar borisboris Xerces-C++: Member List

    DOMRangeException Member List

    This is the complete list of members for DOMRangeException, including all inherited members.

    BAD_BOUNDARYPOINTS_ERR enum valueDOMRangeException
    codeDOMException
    DOMException()DOMException
    DOMException(short code, short messageCode=0, MemoryManager *const memoryManager=XMLPlatformUtils::fgMemoryManager)DOMException
    DOMException(const DOMException &other)DOMException
    DOMRangeException()DOMRangeException
    DOMRangeException(short code, short messageCode, MemoryManager *const memoryManager)DOMRangeException
    DOMRangeException(const DOMRangeException &other)DOMRangeException
    DOMSTRING_SIZE_ERR enum valueDOMException
    ExceptionCode enum nameDOMException
    fMemoryManagerDOMException [protected]
    getMessage() const DOMException
    HIERARCHY_REQUEST_ERR enum valueDOMException
    INDEX_SIZE_ERR enum valueDOMException
    INUSE_ATTRIBUTE_ERR enum valueDOMException
    INVALID_ACCESS_ERR enum valueDOMException
    INVALID_CHARACTER_ERR enum valueDOMException
    INVALID_MODIFICATION_ERR enum valueDOMException
    INVALID_NODE_TYPE_ERR enum valueDOMRangeException
    INVALID_STATE_ERR enum valueDOMException
    msgDOMException
    NAMESPACE_ERR enum valueDOMException
    NO_DATA_ALLOWED_ERR enum valueDOMException
    NO_MODIFICATION_ALLOWED_ERR enum valueDOMException
    NOT_FOUND_ERR enum valueDOMException
    NOT_SUPPORTED_ERR enum valueDOMException
    RangeExceptionCode enum nameDOMRangeException
    SYNTAX_ERR enum valueDOMException
    TYPE_MISMATCH_ERR enum valueDOMException
    VALIDATION_ERR enum valueDOMException
    WRONG_DOCUMENT_ERR enum valueDOMException
    ~DOMException()DOMException [virtual]
    ~DOMRangeException()DOMRangeException [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLAttr_8hpp.html0000644000175000017500000000462311363620005020617 0ustar borisboris Xerces-C++: XMLAttr.hpp File Reference

    XMLAttr.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLAttr
     This class defines the information about an attribute that will come out of the scanner during parsing. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_XMLATTR_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XMLATTR_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/ParseException_8hpp-source.html0000644000175000017500000001073211363620004023550 0ustar borisboris Xerces-C++: ParseException.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/Base64_8hpp.html0000644000175000017500000000424511363620005020350 0ustar borisboris Xerces-C++: Base64.hpp File Reference

    Base64.hpp File Reference

    Go to the source code of this file.

    Classes

    class  Base64

    Defines

    #define XERCESC_INCLUDE_GUARD_BASE64_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_BASE64_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/structXSValue_1_1XSValue__Data-members.html0000644000175000017500000002050111363620006025603 0ustar borisboris Xerces-C++: Member List
    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMRangeException_8hpp-source.html0000644000175000017500000002167711363620004024104 0ustar borisboris Xerces-C++: DOMRangeException.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLNetHTTPInfo-members.html0000644000175000017500000000734011363620006023466 0ustar borisboris Xerces-C++: Member List

    XMLNetHTTPInfo Member List

    This is the complete list of members for XMLNetHTTPInfo, including all inherited members.

    fHeadersXMLNetHTTPInfo
    fHeadersLenXMLNetHTTPInfo
    fHTTPMethodXMLNetHTTPInfo
    fPayloadXMLNetHTTPInfo
    fPayloadLenXMLNetHTTPInfo
    GET enum valueXMLNetHTTPInfo
    HTTPMethod enum nameXMLNetHTTPInfo
    POST enum valueXMLNetHTTPInfo
    PUT enum valueXMLNetHTTPInfo
    XMLNetHTTPInfo()XMLNetHTTPInfo


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/globals_0x70.html0000644000175000017500000000533611363620007020572 0ustar borisboris Xerces-C++: Class Members
    Here is a list of all file members with links to the files they belong to:

    - p -


    Generated on Wed Apr 21 17:55:51 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMCharacterData_8hpp-source.html0000644000175000017500000003074611363620004023654 0ustar borisboris Xerces-C++: DOMCharacterData.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classSAXException.png0000644000175000017500000000231111363620006021536 0ustar borisboris‰PNG  IHDR*ˆ;UÝLPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf_IDATxœía’£ …ßù¼ì ²U{žý5÷? ú,IÐ÷&51Fí—¦u*5Õ·[Sýn¥¶a7ÖöѯwŸØS"$RA"$RAªPÜøgC*‰Œÿqh4©@*Æ=ŒË÷l‡aðYtY*€‡x fÐáÙ1º8WPf*á1ý\˜ŠÏ÷ËX­3*µò{j*¡®*ƒ1Q1¤"d²tm*r¿~´äJ¸ÙZY97•.RYªz¯{I*µT¹&•ªH…TH…TH%¿ùxV_ïà#E*HßßÁ'ŠT€¾¾¿ßŠT Xm‘H‰TH‰TH‰TH‰TH‰TH‰TH‰TH‰TH‰TH‰TH‰TH‰T®CE·Ò»Oì)ÝùªF¾¯© ‘ © ‘ Ò&•p¹ËCi½8î^;ësRQþ-¥ü†§XM±ÓR¹eT£›Ë¥Ý^—<*nmùž“ÊM_?÷pŠÊ¯åw9(~;nmè¤T<–@Å狯+:¦ŒÀQãÖ†ÎJŽŠlÌ•HÅíº0%×5Õ%×»ì#•©Ú®ëÊÕ¨øû•@e¼_É®A·x º•mí:aRùñA+RAâ_‡H¤‚D*H¤‚D*HüæãY]ç[²#"$þç.©ñ?w‘HŠÕ‰TH‰TH‰TH‰TH©W*_µ£Ò̹g÷^ãnëÞkÜmÝ{»­{¯q·uï5î¶î½ÆÝֽ׸ۺ÷w[÷^ãnëÞkÜmÝ{»­{¯q·uï5î¶î½Æ}ÜýHk€?‡ûôêÞ¶çD¯î½ÆM*¯wï5nRy½»wÖ¾ð0µKäBÏõ“li­—oÎ#Ò¸±¿þf—÷&•l¢¥CÅ2s„P¤el lÆ!Å{À3=>‰û€ÿD¥è½E%ŸhÙ ¯b™¹?ÆÏn4‹*uhüê[UjéšìÛëð)N/%ŽxÌ cdkIûÛÐ(ÔÈ?KŸ=Þ*6§Lm4)[.©XÉ»aj—»šŽñIûÆÉÆÎ/ÃiMÇèØ 5¾“­ èo¡2ı~Ï>ïí”NdSÓ¯`¹¢bu43sç[©+±)p gl,kßÄqsXé›Ç ýeìlœ´™­xoWÛt¢PFbÖì°\Sñ¹¦GÄSiÙ»¤b¬ìøq­‹T ¿*{¼ × t"ʯ‘êºf¹¤bÆKƒW~²‚, 2áŽ)9©ý×¹R÷.UÛd¢)SÆ„/ZV¨X£žv'kß„e±P+T2“Õ•¬fm{¤2ו’åjIžÉ ‹«_à$åf|éj^ÔM,ê«j ýýýŠ‘^ƒÂÞºwé~%ÈÂÇà‡V,WTö©Òxa½ûîsLîÞÿãÞ¶4å~*†TÐýaš‹P9¨þÿ:lãL*È™T3© çž©ùBàBܺÿºÃáûû   IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/PSVIHandler_8hpp.html0000644000175000017500000000470111363620005021400 0ustar borisboris Xerces-C++: PSVIHandler.hpp File Reference

    PSVIHandler.hpp File Reference

    Go to the source code of this file.

    Classes

    class  PSVIHandler
     This abstract class provides the interface for the scanner to return PSVI information to the application. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_PSVIHANDLER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_PSVIHANDLER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XercesDefs_8hpp.html0000644000175000017500000003561611363620005021365 0ustar borisboris Xerces-C++: XercesDefs.hpp File Reference

    XercesDefs.hpp File Reference

    Go to the source code of this file.

    Defines

    #define XERCESC_INCLUDE_GUARD_XERCESDEFS_HPP
    #define XMLStrL(str)   str
    #define XERCES_CPP_NAMESPACE_BEGIN
    #define XERCES_CPP_NAMESPACE_END
    #define XERCES_CPP_NAMESPACE_USE
    #define XERCES_CPP_NAMESPACE_QUALIFIER
    #define XERCES_USING_STD(NAME)
    #define XERCES_STD_QUALIFIER
    #define XMLUTIL_EXPORT
    #define XMLPARSER_EXPORT
    #define SAX_EXPORT
    #define SAX2_EXPORT
    #define CDOM_EXPORT
    #define DEPRECATED_DOM_EXPORT
    #define PARSERS_EXPORT
    #define VALIDATORS_EXPORT
    #define XINCLUDE_EXPORT

    Typedefs

    typedef unsigned char XMLByte
    typedef XMLUInt16 UTF16Ch
    typedef XMLUInt32 UCS4Ch


    Define Documentation

    #define CDOM_EXPORT

    #define DEPRECATED_DOM_EXPORT

    #define PARSERS_EXPORT

    #define SAX2_EXPORT

    #define SAX_EXPORT

    #define VALIDATORS_EXPORT

    #define XERCES_CPP_NAMESPACE_BEGIN

    #define XERCES_CPP_NAMESPACE_END

    #define XERCES_CPP_NAMESPACE_QUALIFIER

    #define XERCES_CPP_NAMESPACE_USE

    #define XERCES_STD_QUALIFIER

    #define XERCES_USING_STD ( NAME   ) 

    #define XERCESC_INCLUDE_GUARD_XERCESDEFS_HPP

    #define XINCLUDE_EXPORT

    #define XMLPARSER_EXPORT

    #define XMLStrL ( str   )     str

    #define XMLUTIL_EXPORT


    Typedef Documentation

    typedef XMLUInt32 UCS4Ch

    typedef XMLUInt16 UTF16Ch

    typedef unsigned char XMLByte


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classTranscodeFromStr.html0000644000175000017500000003247511363620006022661 0ustar borisboris Xerces-C++: TranscodeFromStr Class Reference

    TranscodeFromStr Class Reference

    List of all members.

    Public Member Functions

     TranscodeFromStr (const XMLByte *data, XMLSize_t length, const char *encoding, MemoryManager *manager=XMLPlatformUtils::fgMemoryManager)
     Converts from the specified encoding to the internal XMLCh* encoding.
     TranscodeFromStr (const XMLByte *data, XMLSize_t length, XMLTranscoder *trans, MemoryManager *manager=XMLPlatformUtils::fgMemoryManager)
     Converts from the specified encoding to the internal XMLCh* encoding.
     ~TranscodeFromStr ()
    Getter methods
    const XMLChstr () const
     Returns the transcoded, null terminated string.
    XMLChadopt ()
     Returns the transcoded, null terminated string - adopting the memory allocated to it from the TranscodeFromStr object.
    XMLSize_t length () const
     Returns the length of the transcoded string in characters.


    Constructor & Destructor Documentation

    TranscodeFromStr::TranscodeFromStr ( const XMLByte data,
    XMLSize_t  length,
    const char *  encoding,
    MemoryManager manager = XMLPlatformUtils::fgMemoryManager 
    )

    Converts from the specified encoding to the internal XMLCh* encoding.

    Parameters:
    data the source buffer to be transcoded
    length the length of the source buffer
    encoding the name of the encoding to transcode to
    manager the memory manager to use

    TranscodeFromStr::TranscodeFromStr ( const XMLByte data,
    XMLSize_t  length,
    XMLTranscoder trans,
    MemoryManager manager = XMLPlatformUtils::fgMemoryManager 
    )

    Converts from the specified encoding to the internal XMLCh* encoding.

    Parameters:
    data the source buffer to be transcoded
    length the length of the source buffer
    trans the transcoder to use
    manager the memory manager to use

    TranscodeFromStr::~TranscodeFromStr (  ) 


    Member Function Documentation

    const XMLCh * TranscodeFromStr::str (  )  const

    Returns the transcoded, null terminated string.

    Returns:
    the transcoded string

    XMLCh * TranscodeFromStr::adopt (  ) 

    Returns the transcoded, null terminated string - adopting the memory allocated to it from the TranscodeFromStr object.

    Returns:
    the transcoded string

    XMLSize_t TranscodeFromStr::length (  )  const

    Returns the length of the transcoded string in characters.

    The length does not include the null terminator.

    Returns:
    the length of the transcoded string in characters


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMXPathException_8hpp-source.html0000644000175000017500000002021411363620004024056 0ustar borisboris Xerces-C++: DOMXPathException.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/Wrapper4InputSource_8hpp.html0000644000175000017500000000531211363620005023225 0ustar borisboris Xerces-C++: Wrapper4InputSource.hpp File Reference

    Wrapper4InputSource.hpp File Reference

    Go to the source code of this file.

    Classes

    class  Wrapper4InputSource
     Wrap a SAX InputSource object and make it behave like DOMLSInput. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_WRAPPER4INPUTSOURCE_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_WRAPPER4INPUTSOURCE_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMDocument_8hpp-source.html0000644000175000017500000007171111363620004022741 0ustar borisboris Xerces-C++: DOMDocument.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSTypeDefinition.png0000644000175000017500000000216311363620006022436 0ustar borisboris‰PNG  IHDRFÀŠgײPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf IDATxœíQ’â †åežé¾A³7˜­Úóì“÷?ÂBÓ‰€ImÇÀØ¿ÎP’øç“ЉQl.—nýÖUÿ†wè;hê—1ã3b¼S,i`FJ· S0R¼Sl×XDL-<cÄIhL‡„Àe$Š1vÄ#ß×Û0Œ©ã? ãFÒ™Óƒ•‘†cdÎj_Ę|ƒÜŽ×a£;Žsž™€që¼3 ãF3ø%c4ÆŸÏ8õk§¾ÎÜx§f`¼þ=›àµ&`üº^ÏFx©§ˆcÔ‘1êÈudŒ:2F£ŽŒQGƨ#cÔ‘1êÈudŒ::•q†ÏHgø¬ÙqFâ¯Ù!LÉß[¯_¸Ž4ž"íŸØêqÃ1J"äžJzÿØ™´·QATäñÃ02 ¡´ãÊ8Ô¾ÎP¨`ä>C1.1S¶c”‘ãzÌþØoq½1ÚðôóLÇ`McìÐÖÀžQ;dŒÆøóg¸ví”}N¡£ ÆÎÌÀ8ÃØ™§ˆcÔ‘1êÈudŒ:2F£ŽŒQGƨ#cÔ‘1êÈudŒ::•tu£Wusªn‹ŒQGƨ£†Ñ¥»ïêÈë9Ï¥wO^Û{ÚÑóÍ5 ¼l}©|ÆòNFÁŠÍ[¸Æ_RëÆ&tñ!xÏÕíñð=Œ.ím¿2&¨ ïY)½K;Úå‡ð «¼‘+œ_Ûñžñrcôç0:'ÛòÂÂ'3r9c3>3浤qíî2̾^޼ ‘æ¸æã#ø£ÄõI1SoqçièýŒ~|F·½øÙSô5á{Šÿ”1êèsg¸ví”}N¡£ ÆÎÌÀ8ÃØ™§ˆcÔ‘1êÈudŒ::1žâô¥Í¨ìw„§1Žéw„§1Žéw„§1Žéw„§1Žéw„§1¾Pç/ÿìùe£¶ç¿Õö4FOcÔñünÓK’ÔU=@®'äËL%#çxIÏ(-à>Ã…±NÓqÏxWKUe™è¡d$q¬]qŸaÃ(+Å•f6"N#(iƒ('æá¥!/H9GÒJ€ÈÕð˜QþJÏÐo¸2éwø¹[òÄF$í@KbZg⹸(,ë¥é¸êþˆ2õ„Ö³ßpe,ÒïÁZðHà× ™jËrå;FÞg²ñì7¬ÚQÒï4Œ©» cžp [rù‚QB „€g¿ahcæA;®}×IÁ0,å6c3g¿á#…b-YuIµ…xë>Å\\û‹þØiAæ«ãš%'¯‰7K Ö±>>–ž¡ß0lgÚô6í±ó±¶Ï3Ô<è0 {Q›±Ï0ì`ÜN`Uøõ2v†‰ÞS¨ú£Žß§2v^?öjϵk¯þ¹?ÃBÐâ®IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classLexicalHandler.html0000644000175000017500000005157011363620006022276 0ustar borisboris Xerces-C++: LexicalHandler Class Reference

    LexicalHandler Class Reference

    Receive notification of lexical events. More...

    Inheritance diagram for LexicalHandler:

    DefaultHandler

    List of all members.

    Public Member Functions

    Constructors and Destructor
     LexicalHandler ()
     Default constructor.
    virtual ~LexicalHandler ()
     Destructor.
    The virtual document handler interface
    virtual void comment (const XMLCh *const chars, const XMLSize_t length)=0
     Receive notification of comments.
    virtual void endCDATA ()=0
     Receive notification of the end of a CDATA section.
    virtual void endDTD ()=0
     Receive notification of the end of the DTD declarations.
    virtual void endEntity (const XMLCh *const name)=0
     Receive notification of the end of an entity.
    virtual void startCDATA ()=0
     Receive notification of the start of a CDATA section.
    virtual void startDTD (const XMLCh *const name, const XMLCh *const publicId, const XMLCh *const systemId)=0
     Receive notification of the start of the DTD declarations.
    virtual void startEntity (const XMLCh *const name)=0
     Receive notification of the start of an entity.


    Detailed Description

    Receive notification of lexical events.

    This is an extension handler for that provides lexical information about an XML document. It does not provide information about document content. For those events, an application must register an instance of a ContentHandler.

    The order of events in this interface is very important, and mirrors the order of information in the document itself. For example, startDTD() and endDTD() events will occur before the first element in the document.

    See also:
    SAX2XMLReader::setLexicalHandler

    SAX2XMLReader::setContentHandler


    Constructor & Destructor Documentation

    LexicalHandler::LexicalHandler (  ) 

    Default constructor.

    virtual LexicalHandler::~LexicalHandler (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual void LexicalHandler::comment ( const XMLCh *const   chars,
    const XMLSize_t  length 
    ) [pure virtual]

    Receive notification of comments.

    The Parser will call this method to report each occurrence of a comment in the XML document.

    The application must not attempt to read from the array outside of the specified range.

    Parameters:
    chars The characters from the XML document.
    length The number of characters to read from the array.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.

    Implemented in DefaultHandler.

    virtual void LexicalHandler::endCDATA (  )  [pure virtual]

    Receive notification of the end of a CDATA section.

    The SAX parser will invoke this method at the end of each CDATA parsed.

    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.

    Implemented in DefaultHandler.

    virtual void LexicalHandler::endDTD (  )  [pure virtual]

    Receive notification of the end of the DTD declarations.

    The SAX parser will invoke this method at the end of the DTD

    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.

    Implemented in DefaultHandler.

    virtual void LexicalHandler::endEntity ( const XMLCh *const   name  )  [pure virtual]

    Receive notification of the end of an entity.

    The SAX parser will invoke this method at the end of an entity

    Parameters:
    name The name of the entity that is ending.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.

    Implemented in DefaultHandler.

    virtual void LexicalHandler::startCDATA (  )  [pure virtual]

    Receive notification of the start of a CDATA section.

    The SAX parser will invoke this method at the start of each CDATA parsed.

    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.

    Implemented in DefaultHandler.

    virtual void LexicalHandler::startDTD ( const XMLCh *const   name,
    const XMLCh *const   publicId,
    const XMLCh *const   systemId 
    ) [pure virtual]

    Receive notification of the start of the DTD declarations.

    The SAX parser will invoke this method at the start of the DTD

    Parameters:
    name The document type name.
    publicId The declared public identifier for the external DTD subset, or null if none was declared.
    systemId The declared system identifier for the external DTD subset, or null if none was declared.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.

    Implemented in DefaultHandler.

    virtual void LexicalHandler::startEntity ( const XMLCh *const   name  )  [pure virtual]

    Receive notification of the start of an entity.

    The SAX parser will invoke this method at the start of an entity

    Parameters:
    name The name of the entity that is starting.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.

    Implemented in DefaultHandler.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/globals_defs_0x6d.html0000644000175000017500000000477311363620007021662 0ustar borisboris Xerces-C++: Class Members
     

    - m -


    Generated on Wed Apr 21 17:55:51 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_func_0x63.html0000644000175000017500000003575511363620005022202 0ustar borisboris Xerces-C++: Class Members - Functions
     

    - c -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSModelGroup.png0000644000175000017500000000077611363620006021571 0ustar borisboris‰PNG  IHDRcˆ–HçPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf”IDATX…í—]r„ ÇÉË>nOÐi/Ô'ï„&áCØD»k«Ct„ ùç¿æk¯}˜Ïi§Ý!9O\Ç2wAž:ÎÊ#Iþ ‹©Á4!ù‘\ ‘"âôŒG3 I(b¸*"µxD~$D27ÅŠk a_´oÊé¨Þzù;€[Û…I.òò¿9ðQªÙ£ºòJdþ>yÌó ÈIÈ@2« C'ÿQåE,Á&Ö‰"’ÞÙR}^èa[HHàPsŠV–k+R\¯aƒÎ¬"ºD.dIHëÁˆ|q‰åçY¦>D;ÖUËÓ¾,›ê{6Zs¾Yý·t—ÿÈÐÉk6tò@2ü‚{Í»7ýíB+l\ЋxW³X=À ³%"ÞbÂ7«ƒÕxó/° ð·ç@ËaÀ«aPÄϽ3•¯œÍ@©sqåYŒ†€I¢fu$–_ âï@–'ФIy-Ù¾hÐÒ1öê­½+ïX§A¶/ÿ 17Dö”~Õ¶`dã2IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/functions_func_0x71.html0000644000175000017500000000760511363620005022172 0ustar borisboris Xerces-C++: Class Members - Functions
     

    - q -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_eval_0x6f.html0000644000175000017500000001146311363620005022247 0ustar borisboris Xerces-C++: Class Members - Enumerator
     

    - o -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XSModelGroupDefinition_8hpp-source.html0000644000175000017500000002644311363620005025167 0ustar borisboris Xerces-C++: XSModelGroupDefinition.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMNodeList.html0000644000175000017500000002134211363620005021471 0ustar borisboris Xerces-C++: DOMNodeList Class Reference

    DOMNodeList Class Reference

    The DOMNodeList interface provides the abstraction of an ordered collection of nodes. More...

    List of all members.

    Public Member Functions

    Destructor
    virtual ~DOMNodeList ()
     Destructor.
    Functions introduced in DOM Level 1
    virtual DOMNodeitem (XMLSize_t index) const =0
     Returns the index item in the collection.
    virtual XMLSize_t getLength () const =0
     Returns the number of nodes in the list.

    Protected Member Functions

    Hidden constructors
     DOMNodeList ()


    Detailed Description

    The DOMNodeList interface provides the abstraction of an ordered collection of nodes.

    DOMNodeLists are created by DOMDocument::getElementsByTagName(), DOMNode::getChildNodes(),

    The items in the DOMNodeList are accessible via an integral index, starting from 0.

    DOMNodeLists are "live", in that any changes to the document tree are immediately reflected in any DOMNodeLists that may have been created for that tree.


    Constructor & Destructor Documentation

    DOMNodeList::DOMNodeList (  )  [protected]

    virtual DOMNodeList::~DOMNodeList (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual DOMNode* DOMNodeList::item ( XMLSize_t  index  )  const [pure virtual]

    Returns the index item in the collection.

    If index is greater than or equal to the number of nodes in the list, this returns null.

    Parameters:
    index Index into the collection.
    Returns:
    The node at the indexth position in the DOMNodeList, or null if that is not a valid index.
    Since:
    DOM Level 1

    virtual XMLSize_t DOMNodeList::getLength (  )  const [pure virtual]

    Returns the number of nodes in the list.

    The range of valid child node indices is 0 to length-1 inclusive.

    Since:
    DOM Level 1


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLException-members.html0000644000175000017500000001571611363620006023370 0ustar borisboris Xerces-C++: Member List

    XMLException Member List

    This is the complete list of members for XMLException, including all inherited members.

    fMemoryManagerXMLException [protected]
    getCode() const XMLException
    getErrorType() const XMLException
    getMessage() const XMLException
    getSrcFile() const XMLException
    getSrcLine() const XMLException
    getType() const =0XMLException [pure virtual]
    loadExceptText(const XMLExcepts::Codes toLoad)XMLException [protected]
    loadExceptText(const XMLExcepts::Codes toLoad, const XMLCh *const text1, const XMLCh *const text2=0, const XMLCh *const text3=0, const XMLCh *const text4=0)XMLException [protected]
    loadExceptText(const XMLExcepts::Codes toLoad, const char *const text1, const char *const text2=0, const char *const text3=0, const char *const text4=0)XMLException [protected]
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    operator=(const XMLException &toAssign)XMLException
    setPosition(const char *const file, const XMLFileLoc line)XMLException
    XMemory()XMemory [protected]
    XMLException()XMLException
    XMLException(const char *const srcFile, const XMLFileLoc srcLine, MemoryManager *const memoryManager=0)XMLException
    XMLException(const XMLException &toCopy)XMLException
    ~XMLException()XMLException [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classBinFileInputStream-members.html0000644000175000017500000001422711363620005024550 0ustar borisboris Xerces-C++: Member List

    BinFileInputStream Member List

    This is the complete list of members for BinFileInputStream, including all inherited members.

    BinFileInputStream(const XMLCh *const fileName, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)BinFileInputStream
    BinFileInputStream(const char *const fileName, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)BinFileInputStream
    BinFileInputStream(const FileHandle toUse, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)BinFileInputStream
    BinInputStream()BinInputStream [protected]
    curPos() const BinFileInputStream [virtual]
    getContentType() const BinFileInputStream [virtual]
    getIsOpen() const BinFileInputStream
    getSize() const BinFileInputStream
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    readBytes(XMLByte *const toFill, const XMLSize_t maxToRead)BinFileInputStream [virtual]
    reset()BinFileInputStream
    XMemory()XMemory [protected]
    ~BinFileInputStream()BinFileInputStream [virtual]
    ~BinInputStream()BinInputStream [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLElementDecl_8hpp.html0000644000175000017500000000467311363620005022073 0ustar borisboris Xerces-C++: XMLElementDecl.hpp File Reference

    XMLElementDecl.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLElementDecl
     This class defines the core information of an element declaration. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_XMLELEMENTDECL_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XMLELEMENTDECL_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classBinFileInputStream.html0000644000175000017500000004071111363620005023115 0ustar borisboris Xerces-C++: BinFileInputStream Class Reference

    BinFileInputStream Class Reference

    Inheritance diagram for BinFileInputStream:

    BinInputStream XMemory

    List of all members.

    Public Member Functions

     BinFileInputStream (const XMLCh *const fileName, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     BinFileInputStream (const char *const fileName, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     BinFileInputStream (const FileHandle toUse, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
    virtual ~BinFileInputStream ()
    bool getIsOpen () const
    XMLFilePos getSize () const
    void reset ()
    virtual XMLFilePos curPos () const
    virtual XMLSize_t readBytes (XMLByte *const toFill, const XMLSize_t maxToRead)
    virtual const XMLChgetContentType () const
     Return the "out-of-band" content type for the data supplied by this input stream in the form of the media-type production (mime type with optional parameters such as encoding) as defined by the HTTP 1.1 specification.


    Constructor & Destructor Documentation

    BinFileInputStream::BinFileInputStream ( const XMLCh *const   fileName,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    BinFileInputStream::BinFileInputStream ( const char *const   fileName,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    BinFileInputStream::BinFileInputStream ( const FileHandle  toUse,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    virtual BinFileInputStream::~BinFileInputStream (  )  [virtual]


    Member Function Documentation

    bool BinFileInputStream::getIsOpen (  )  const

    XMLFilePos BinFileInputStream::getSize (  )  const

    void BinFileInputStream::reset (  ) 

    virtual XMLFilePos BinFileInputStream::curPos (  )  const [virtual]

    Implements BinInputStream.

    virtual XMLSize_t BinFileInputStream::readBytes ( XMLByte *const   toFill,
    const XMLSize_t  maxToRead 
    ) [virtual]

    Implements BinInputStream.

    virtual const XMLCh* BinFileInputStream::getContentType (  )  const [virtual]

    Return the "out-of-band" content type for the data supplied by this input stream in the form of the media-type production (mime type with optional parameters such as encoding) as defined by the HTTP 1.1 specification.

    If no such content type is provided for the data, 0 is returned. This function is expected to return the correct value at any time after the construction of the stream.

    An example of the stream that may return non-0 from this function is an HTTP stream with the value returned taken from the "Content-Type" HTTP header. Note also that if the encoding of the data is known to the application by some other means then the setEncoding function in the InputSource object should be used instead. The getContentType function should only be used to return information that is intrinsic to the stream.

    Returns:
    The content type, or 0 if one is not available.

    Implements BinInputStream.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLDOMMsg_8hpp.html0000644000175000017500000000432511363620005020772 0ustar borisboris Xerces-C++: XMLDOMMsg.hpp File Reference

    XMLDOMMsg.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLDOMMsg

    Defines

    #define XERCESC_INCLUDE_GUARD_ERRHEADER_XMLDOMMsg


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_ERRHEADER_XMLDOMMsg


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_0x78.html0000644000175000017500000004215311363620005021163 0ustar borisboris Xerces-C++: Class Members
    Here is a list of all class members with links to the classes they belong to:

    - x -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSParticle.html0000644000175000017500000006054411363620006021436 0ustar borisboris Xerces-C++: XSParticle Class Reference

    XSParticle Class Reference

    Inheritance diagram for XSParticle:

    XSObject XMemory

    List of all members.

    Public Types

    enum  TERM_TYPE { TERM_EMPTY = 0, TERM_ELEMENT = XSConstants::ELEMENT_DECLARATION, TERM_MODELGROUP = XSConstants::MODEL_GROUP_DEFINITION, TERM_WILDCARD = XSConstants::WILDCARD }

    Public Member Functions

    Constructors
     XSParticle (TERM_TYPE termType, XSModel *const xsModel, XSObject *const particleTerm, XMLSize_t minOccurs, XMLSize_t maxOccurs, bool unbounded, MemoryManager *const manager)
     The default constructor.
    Destructor
     ~XSParticle ()
    XSParticle methods
    XMLSize_t getMinOccurs () const
     [min occurs]: determines the minimum number of terms that can occur.
    XMLSize_t getMaxOccurs () const
     [max occurs] determines the maximum number of terms that can occur.
    bool getMaxOccursUnbounded () const
     [max occurs] whether the maxOccurs value is unbounded.
    TERM_TYPE getTermType () const
     Returns the type of the [term]: one of TERM_EMPTY, TERM_ELEMENT, TERM_MODELGROUP, or TERM_WILDCARD.
    XSElementDeclarationgetElementTerm ()
     If this particle has an [element declaration] for its term, this method returns that declaration; otherwise, it returns 0.
    XSModelGroupgetModelGroupTerm ()
     If this particle has a [model group] for its term, this method returns that definition; otherwise, it returns 0.
    XSWildcardgetWildcardTerm ()
     If this particle has an [wildcard] for its term, this method returns that declaration; otherwise, it returns 0.

    Protected Attributes

    TERM_TYPE fTermType
    XMLSize_t fMinOccurs
    XMLSize_t fMaxOccurs
    bool fUnbounded
    XSObjectfTerm


    Member Enumeration Documentation

    Enumerator:
    TERM_EMPTY 
    TERM_ELEMENT 
    TERM_MODELGROUP 
    TERM_WILDCARD 


    Constructor & Destructor Documentation

    XSParticle::XSParticle ( TERM_TYPE  termType,
    XSModel *const   xsModel,
    XSObject *const   particleTerm,
    XMLSize_t  minOccurs,
    XMLSize_t  maxOccurs,
    bool  unbounded,
    MemoryManager *const   manager 
    )

    The default constructor.

    Parameters:
    termType 
    xsModel 
    particleTerm 
    minOccurs 
    maxOccurs 
    unbounded 
    manager The configurable memory manager

    XSParticle::~XSParticle (  ) 


    Member Function Documentation

    XMLSize_t XSParticle::getMinOccurs (  )  const

    [min occurs]: determines the minimum number of terms that can occur.

    References fMinOccurs.

    XMLSize_t XSParticle::getMaxOccurs (  )  const

    [max occurs] determines the maximum number of terms that can occur.

    To query for value of unbounded use maxOccursUnbounded.

    References fMaxOccurs.

    bool XSParticle::getMaxOccursUnbounded (  )  const

    [max occurs] whether the maxOccurs value is unbounded.

    References fUnbounded.

    XSParticle::TERM_TYPE XSParticle::getTermType (  )  const

    Returns the type of the [term]: one of TERM_EMPTY, TERM_ELEMENT, TERM_MODELGROUP, or TERM_WILDCARD.

    References fTermType.

    XSElementDeclaration* XSParticle::getElementTerm (  ) 

    If this particle has an [element declaration] for its term, this method returns that declaration; otherwise, it returns 0.

    Returns:
    The element declaration that is the [term] of this Particle if and only if getTermType() == TERM_ELEMENT.

    XSModelGroup* XSParticle::getModelGroupTerm (  ) 

    If this particle has a [model group] for its term, this method returns that definition; otherwise, it returns 0.

    Returns:
    The model group that is the [term] of this Particle if and only if getTermType() == TERM_MODELGROUP.

    XSWildcard* XSParticle::getWildcardTerm (  ) 

    If this particle has an [wildcard] for its term, this method returns that declaration; otherwise, it returns 0.

    Returns:
    The wildcard declaration that is the [term] of this Particle if and only if getTermType() == TERM_WILDCARD.


    Member Data Documentation

    Referenced by getTermType().

    Referenced by getMinOccurs().

    Referenced by getMaxOccurs().

    bool XSParticle::fUnbounded [protected]

    Referenced by getMaxOccursUnbounded().


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMText_8hpp-source.html0000644000175000017500000002425011363620004022103 0ustar borisboris Xerces-C++: DOMText.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMDocumentType-members.html0000644000175000017500000004356411363620005024032 0ustar borisboris Xerces-C++: Member List

    DOMDocumentType Member List

    This is the complete list of members for DOMDocumentType, including all inherited members.

    appendChild(DOMNode *newChild)=0DOMNode [pure virtual]
    ATTRIBUTE_NODE enum valueDOMNode
    CDATA_SECTION_NODE enum valueDOMNode
    cloneNode(bool deep) const =0DOMNode [pure virtual]
    COMMENT_NODE enum valueDOMNode
    compareDocumentPosition(const DOMNode *other) const =0DOMNode [pure virtual]
    DOCUMENT_FRAGMENT_NODE enum valueDOMNode
    DOCUMENT_NODE enum valueDOMNode
    DOCUMENT_POSITION_CONTAINED_BY enum valueDOMNode
    DOCUMENT_POSITION_CONTAINS enum valueDOMNode
    DOCUMENT_POSITION_DISCONNECTED enum valueDOMNode
    DOCUMENT_POSITION_FOLLOWING enum valueDOMNode
    DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC enum valueDOMNode
    DOCUMENT_POSITION_PRECEDING enum valueDOMNode
    DOCUMENT_TYPE_NODE enum valueDOMNode
    DocumentPosition enum nameDOMNode
    DOMDocumentType()DOMDocumentType [protected]
    DOMNode()DOMNode [protected]
    DOMNode(const DOMNode &)DOMNode [protected]
    ELEMENT_NODE enum valueDOMNode
    ENTITY_NODE enum valueDOMNode
    ENTITY_REFERENCE_NODE enum valueDOMNode
    getAttributes() const =0DOMNode [pure virtual]
    getBaseURI() const =0DOMNode [pure virtual]
    getChildNodes() const =0DOMNode [pure virtual]
    getEntities() const =0DOMDocumentType [pure virtual]
    getFeature(const XMLCh *feature, const XMLCh *version) const =0DOMNode [pure virtual]
    getFirstChild() const =0DOMNode [pure virtual]
    getInternalSubset() const =0DOMDocumentType [pure virtual]
    getLastChild() const =0DOMNode [pure virtual]
    getLocalName() const =0DOMNode [pure virtual]
    getName() const =0DOMDocumentType [pure virtual]
    getNamespaceURI() const =0DOMNode [pure virtual]
    getNextSibling() const =0DOMNode [pure virtual]
    getNodeName() const =0DOMNode [pure virtual]
    getNodeType() const =0DOMNode [pure virtual]
    getNodeValue() const =0DOMNode [pure virtual]
    getNotations() const =0DOMDocumentType [pure virtual]
    getOwnerDocument() const =0DOMNode [pure virtual]
    getParentNode() const =0DOMNode [pure virtual]
    getPrefix() const =0DOMNode [pure virtual]
    getPreviousSibling() const =0DOMNode [pure virtual]
    getPublicId() const =0DOMDocumentType [pure virtual]
    getSystemId() const =0DOMDocumentType [pure virtual]
    getTextContent() const =0DOMNode [pure virtual]
    getUserData(const XMLCh *key) const =0DOMNode [pure virtual]
    hasAttributes() const =0DOMNode [pure virtual]
    hasChildNodes() const =0DOMNode [pure virtual]
    insertBefore(DOMNode *newChild, DOMNode *refChild)=0DOMNode [pure virtual]
    isDefaultNamespace(const XMLCh *namespaceURI) const =0DOMNode [pure virtual]
    isEqualNode(const DOMNode *arg) const =0DOMNode [pure virtual]
    isSameNode(const DOMNode *other) const =0DOMNode [pure virtual]
    isSupported(const XMLCh *feature, const XMLCh *version) const =0DOMNode [pure virtual]
    lookupNamespaceURI(const XMLCh *prefix) const =0DOMNode [pure virtual]
    lookupPrefix(const XMLCh *namespaceURI) const =0DOMNode [pure virtual]
    NodeType enum nameDOMNode
    normalize()=0DOMNode [pure virtual]
    NOTATION_NODE enum valueDOMNode
    PROCESSING_INSTRUCTION_NODE enum valueDOMNode
    release()=0DOMNode [pure virtual]
    removeChild(DOMNode *oldChild)=0DOMNode [pure virtual]
    replaceChild(DOMNode *newChild, DOMNode *oldChild)=0DOMNode [pure virtual]
    setNodeValue(const XMLCh *nodeValue)=0DOMNode [pure virtual]
    setPrefix(const XMLCh *prefix)=0DOMNode [pure virtual]
    setTextContent(const XMLCh *textContent)=0DOMNode [pure virtual]
    setUserData(const XMLCh *key, void *data, DOMUserDataHandler *handler)=0DOMNode [pure virtual]
    TEXT_NODE enum valueDOMNode
    ~DOMDocumentType()DOMDocumentType [virtual]
    ~DOMNode()DOMNode [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLIBM1047Transcoder_8hpp-source.html0000644000175000017500000002143011363620005024146 0ustar borisboris Xerces-C++: XMLIBM1047Transcoder.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLGrammarDescription.png0000644000175000017500000000166211363620006023407 0ustar borisboris‰PNG  IHDR>ˆŒòšßPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfHIDATxœíœ]vâ0 …­—>[Þ3;èœ3ë™'ö¿„±d“(ä§n倦ՅðõWEJJQ½ú=Rݳöë}§_Îç|?…/•{.Ël”/Ó­@¢y¾\î¹Ä³,§”EÖ_A!,&K9!/ ­¾’x ßç› >Š_yÈâŠï¸`žŸÌ—heæË¦ø˜qµ­ðÕãß°Æëw:N?#çã|'ç|Çá³Áw"çs¾ïÆgýóeŸÞ^6sŸ¬óÝþ¾šà\ÆùÞn·W#œÊ:Ÿùúp>œO'çÓÉùtr>œO'çÓÉùtr>œO'çÓÉùtzŽÔ|q  ôºËùtr>"ÛsFžà¨ áñ¨q½a<_ù‰¡Ì ÌG1Ýž_ÆÇ 1 ØDÚˆ±¬p˜ËfzkÛ±<‹´ñB>š:6”ʇD! Ðf¨ð aÞ€ó¶D¹„…#„6u„:3„…/Ô<´ñJ>Ž@¸Ç&|¥2"¥Â“ù"O´æ‹"~ ãZ?›¯í:ά#¾(ˆZÖ=ïžXe&äÚ¬ûÄþå¡Eý®_hõ{i} ì|ºÁæøä|:9ŸNWðYÿ|Ù'ÿÿNÆ¿_bÏú÷K¬ó™¯çÓÉùtr>œO§ñ•óÖhåê6ÞÑù,¹wt>KnãÏ’ÛxGç³ä6ÞÑùŽÔw=ÝŸO\v7Öqüe‹cOçè|:ÇÅméãB} Ú‘ Ò’úV¬‡ñê¶…à[™MˆË°E¶’oé“Â}*j‡^¦Ý^ÛëóߎÙfD‡í_n¹’–_6Ï­]rNkÈœ„Û!ßDãÖ…Sí*ÿD—-_^Z µy¹¯e±?dþI3j­Cã±Ú`NÕîcÛŸèãrÀW£Ÿ¤mžöù¤÷ÖyØg»‰ßÒ'å‘ &õóI³©e}ª6¼±Çv“Ç|õ-½|f3_eû÷ÔvË×nêW$JZ%ÊŸ0›ûÃdÁ÷¡íöøÇ Œw曢Ð&*´©Ú>ßÊŒX0µý›R‡íWÏû½SÔç#¾óilÿ§¿F¸9ŸÎíçñõ}ÌëÔ'>_vêåÉ+Wô†W+IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classHandlerBase.html0000644000175000017500000014265611363620006021575 0ustar borisboris Xerces-C++: HandlerBase Class Reference

    HandlerBase Class Reference

    Default base class for handlers. More...

    Inheritance diagram for HandlerBase:

    EntityResolver DTDHandler DocumentHandler ErrorHandler

    List of all members.

    Public Member Functions

     HandlerBase ()
    virtual ~HandlerBase ()
    Default handlers for the DocumentHandler interface
    virtual void characters (const XMLCh *const chars, const XMLSize_t length)
     Receive notification of character data inside an element.
    virtual void endDocument ()
     Receive notification of the end of the document.
    virtual void endElement (const XMLCh *const name)
     Receive notification of the end of an element.
    virtual void ignorableWhitespace (const XMLCh *const chars, const XMLSize_t length)
     Receive notification of ignorable whitespace in element content.
    virtual void processingInstruction (const XMLCh *const target, const XMLCh *const data)
     Receive notification of a processing instruction.
    virtual void resetDocument ()
     Reset the Document object on its reuse.
    Default implementation of DocumentHandler interface
    virtual void setDocumentLocator (const Locator *const locator)
     Receive a Locator object for document events.
    virtual void startDocument ()
     Receive notification of the beginning of the document.
    virtual void startElement (const XMLCh *const name, AttributeList &attributes)
     Receive notification of the start of an element.
    Default implementation of the EntityResolver interface.
    virtual InputSourceresolveEntity (const XMLCh *const publicId, const XMLCh *const systemId)
     Resolve an external entity.
    Default implementation of the ErrorHandler interface
    virtual void error (const SAXParseException &exc)
     Receive notification of a recoverable parser error.
    virtual void fatalError (const SAXParseException &exc)
     Report a fatal XML parsing error.
    virtual void warning (const SAXParseException &exc)
     Receive notification of a parser warning.
    virtual void resetErrors ()
     Reset the Error handler object on its reuse.
    Default implementation of DTDHandler interface.
    virtual void notationDecl (const XMLCh *const name, const XMLCh *const publicId, const XMLCh *const systemId)
     Receive notification of a notation declaration.
    virtual void resetDocType ()
     Reset the DTD object on its reuse.
    virtual void unparsedEntityDecl (const XMLCh *const name, const XMLCh *const publicId, const XMLCh *const systemId, const XMLCh *const notationName)
     Receive notification of an unparsed entity declaration.


    Detailed Description

    Default base class for handlers.

    This class implements the default behaviour for four SAX interfaces: EntityResolver, DTDHandler, DocumentHandler, and ErrorHandler.

    Application writers can extend this class when they need to implement only part of an interface; parser writers can instantiate this class to provide default handlers when the application has not supplied its own.

    Note that the use of this class is optional.

    See also:
    EntityResolver::EntityResolver

    DTDHandler::DTDHandler

    DocumentHandler::DocumentHandler

    ErrorHandler::ErrorHandler


    Constructor & Destructor Documentation

    HandlerBase::HandlerBase (  ) 

    virtual HandlerBase::~HandlerBase (  )  [virtual]


    Member Function Documentation

    void HandlerBase::characters ( const XMLCh *const  chars,
    const XMLSize_t  length 
    ) [virtual]

    Receive notification of character data inside an element.

    By default, do nothing. Application writers may override this method to take specific actions for each chunk of character data (such as adding the data to a node or buffer, or printing it to a file).

    Parameters:
    chars The characters.
    length The number of characters to use from the character array.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    See also:
    DocumentHandler::characters

    Implements DocumentHandler.

    void HandlerBase::endDocument (  )  [virtual]

    Receive notification of the end of the document.

    By default, do nothing. Application writers may override this method in a subclass to take specific actions at the beginning of a document (such as finalising a tree or closing an output file).

    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    See also:
    DocumentHandler::endDocument

    Implements DocumentHandler.

    void HandlerBase::endElement ( const XMLCh *const  name  )  [virtual]

    Receive notification of the end of an element.

    By default, do nothing. Application writers may override this method in a subclass to take specific actions at the end of each element (such as finalising a tree node or writing output to a file).

    Parameters:
    name The element type name.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    See also:
    DocumentHandler::endElement

    Implements DocumentHandler.

    void HandlerBase::ignorableWhitespace ( const XMLCh *const  chars,
    const XMLSize_t  length 
    ) [virtual]

    Receive notification of ignorable whitespace in element content.

    By default, do nothing. Application writers may override this method to take specific actions for each chunk of ignorable whitespace (such as adding data to a node or buffer, or printing it to a file).

    Parameters:
    chars The whitespace characters.
    length The number of characters to use from the character array.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    See also:
    DocumentHandler::ignorableWhitespace

    Implements DocumentHandler.

    void HandlerBase::processingInstruction ( const XMLCh *const  target,
    const XMLCh *const  data 
    ) [virtual]

    Receive notification of a processing instruction.

    By default, do nothing. Application writers may override this method in a subclass to take specific actions for each processing instruction, such as setting status variables or invoking other methods.

    Parameters:
    target The processing instruction target.
    data The processing instruction data, or null if none is supplied.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    See also:
    DocumentHandler::processingInstruction

    Implements DocumentHandler.

    void HandlerBase::resetDocument (  )  [virtual]

    Reset the Document object on its reuse.

    See also:
    DocumentHandler::resetDocument

    Implements DocumentHandler.

    void HandlerBase::setDocumentLocator ( const Locator *const  locator  )  [virtual]

    Receive a Locator object for document events.

    By default, do nothing. Application writers may override this method in a subclass if they wish to store the locator for use with other document events.

    Parameters:
    locator A locator for all SAX document events.
    See also:
    DocumentHandler::setDocumentLocator

    Locator

    Implements DocumentHandler.

    void HandlerBase::startDocument (  )  [virtual]

    Receive notification of the beginning of the document.

    By default, do nothing. Application writers may override this method in a subclass to take specific actions at the beginning of a document (such as allocating the root node of a tree or creating an output file).

    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    See also:
    DocumentHandler::startDocument

    Implements DocumentHandler.

    void HandlerBase::startElement ( const XMLCh *const  name,
    AttributeList attributes 
    ) [virtual]

    Receive notification of the start of an element.

    By default, do nothing. Application writers may override this method in a subclass to take specific actions at the start of each element (such as allocating a new tree node or writing output to a file).

    Parameters:
    name The element type name.
    attributes The specified or defaulted attributes.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    See also:
    DocumentHandler::startElement

    Implements DocumentHandler.

    InputSource * HandlerBase::resolveEntity ( const XMLCh *const  publicId,
    const XMLCh *const  systemId 
    ) [virtual]

    Resolve an external entity.

    Always return null, so that the parser will use the system identifier provided in the XML document. This method implements the SAX default behaviour: application writers can override it in a subclass to do special translations such as catalog lookups or URI redirection.

    Parameters:
    publicId The public identifier, or null if none is available.
    systemId The system identifier provided in the XML document.
    Returns:
    The new input source, or null to require the default behaviour. The returned InputSource is owned by the parser which is responsible to clean up the memory.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    See also:
    EntityResolver::resolveEntity

    Implements EntityResolver.

    void HandlerBase::error ( const SAXParseException exc  )  [virtual]

    Receive notification of a recoverable parser error.

    The default implementation does nothing. Application writers may override this method in a subclass to take specific actions for each error, such as inserting the message in a log file or printing it to the console.

    Parameters:
    exc The warning information encoded as an exception.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    See also:
    ErrorHandler::warning

    SAXParseException::SAXParseException

    Implements ErrorHandler.

    void HandlerBase::fatalError ( const SAXParseException exc  )  [virtual]

    Report a fatal XML parsing error.

    The default implementation throws a SAXParseException. Application writers may override this method in a subclass if they need to take specific actions for each fatal error (such as collecting all of the errors into a single report): in any case, the application must stop all regular processing when this method is invoked, since the document is no longer reliable, and the parser may no longer report parsing events.

    Parameters:
    exc The error information encoded as an exception.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    See also:
    ErrorHandler::fatalError

    SAXParseException::SAXParseException

    Implements ErrorHandler.

    void HandlerBase::warning ( const SAXParseException exc  )  [virtual]

    Receive notification of a parser warning.

    The default implementation does nothing. Application writers may override this method in a subclass to take specific actions for each warning, such as inserting the message in a log file or printing it to the console.

    Parameters:
    exc The warning information encoded as an exception.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    See also:
    ErrorHandler::warning

    SAXParseException::SAXParseException

    Implements ErrorHandler.

    void HandlerBase::resetErrors (  )  [virtual]

    Reset the Error handler object on its reuse.

    See also:
    ErrorHandler::resetErrors

    Implements ErrorHandler.

    void HandlerBase::notationDecl ( const XMLCh *const  name,
    const XMLCh *const  publicId,
    const XMLCh *const  systemId 
    ) [virtual]

    Receive notification of a notation declaration.

    By default, do nothing. Application writers may override this method in a subclass if they wish to keep track of the notations declared in a document.

    Parameters:
    name The notation name.
    publicId The notation public identifier, or null if not available.
    systemId The notation system identifier.
    See also:
    DTDHandler::notationDecl

    Implements DTDHandler.

    void HandlerBase::resetDocType (  )  [virtual]

    Reset the DTD object on its reuse.

    See also:
    DTDHandler::resetDocType

    Implements DTDHandler.

    void HandlerBase::unparsedEntityDecl ( const XMLCh *const  name,
    const XMLCh *const  publicId,
    const XMLCh *const  systemId,
    const XMLCh *const  notationName 
    ) [virtual]

    Receive notification of an unparsed entity declaration.

    By default, do nothing. Application writers may override this method in a subclass to keep track of the unparsed entities declared in a document.

    Parameters:
    name The entity name.
    publicId The entity public identifier, or null if not available.
    systemId The entity system identifier.
    notationName The name of the associated notation.
    See also:
    DTDHandler::unparsedEntityDecl

    Implements DTDHandler.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/globals_type.html0000644000175000017500000001536711363620007021062 0ustar borisboris Xerces-C++: Class Members
    Generated on Wed Apr 21 17:55:51 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMNotation_8hpp-source.html0000644000175000017500000002215111363620004022750 0ustar borisboris Xerces-C++: DOMNotation.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classErrorHandler-members.html0000644000175000017500000000574311363620006023437 0ustar borisboris Xerces-C++: Member List

    ErrorHandler Member List

    This is the complete list of members for ErrorHandler, including all inherited members.

    error(const SAXParseException &exc)=0ErrorHandler [pure virtual]
    ErrorHandler()ErrorHandler
    fatalError(const SAXParseException &exc)=0ErrorHandler [pure virtual]
    resetErrors()=0ErrorHandler [pure virtual]
    warning(const SAXParseException &exc)=0ErrorHandler [pure virtual]
    ~ErrorHandler()ErrorHandler [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_eval_0x74.html0000644000175000017500000001431311363620005022163 0ustar borisboris Xerces-C++: Class Members - Enumerator
     

    - t -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XSTypeDefinition_8hpp.html0000644000175000017500000000471411363620005022532 0ustar borisboris Xerces-C++: XSTypeDefinition.hpp File Reference

    XSTypeDefinition.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XSTypeDefinition
     This class represents a complexType or simpleType definition. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_XSTYPEDEFINITION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XSTYPEDEFINITION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMemory.png0000644000175000017500000003053211363620006020632 0ustar borisboris‰PNG  IHDRô ð‘†ÎÈPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf IDATxœí½mnã8nÛ œß-΀ª!œ -àïü‡p#’’%ÛUeljWDî•îÄqõz¬7>ØÿLÿý#ã Dtˆ>ÔY8]ôßÿï߯ÿ¾ý¿üå<+ðïòññGÓÛÿË_Îç£ÿûñÏ¿ÿñõŸÿþûï3ÇËÓ!?—ÐÿýûßT¾~¼#Dÿ8É/ÑË?ÛÇ7ÿ—¿šOíõOÿþóñ¿¢ûèO_÷N½œë%úË7[ôG‰^âø¢×÷õò1Õ½^®ðŸ9sžýƒ¯æËÆþüÿÝuýùítýLÿe] ¢{Dô¡þËoF¿¶€¶€ÆÿùŸm 1pôÿý[Ábàè_æ"ú` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` xðòþ¿ÿ«¡GŸ-~EôˆÑ#ú‰žÊ?äËsyž¦'óǧ|ù¶·è9ß^2/Ÿòǧúm—ѧ%Þ”>/ûyy¸ KÚt‰þñüœ–ïëƒóGOÓ3-{8—¾|·EÏË«“êóí7˃>¢—°Ë~ë±>ßD¯çzýÝõËé£/¡ên,ѧé:úr—¤¹üæÇ_ÿä{£ÿïeþßß óÜårÀÏùv¯oÑÛÎ^¿9ý^/Ñ·s}Þëë~}9.§F'|Ýëå ¿\ä–k{^îÞ××èyÊõ€/WøóGÿ6"zD*ú¸wi~}Ü{s¿ÆþîÈŽ{3ú´` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` xðò^Zëæ"zDè½²•:ö Ý—®ÇÓ-¯ÓEߊl‡è¹Õ@ºžrNíS)-µ‡y_Ëùï퇳FOíÓ4·ÆÛT:`[ý-Mç‰^Îõ’pkþ”]£y¶§Ñ#ú©£ãÞ¥‰žÛ€Ñ£ç¦F÷fôiÁðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðàå- ¼´ º/=¢Gôˆ>ϵßÑÕ•ÁëúàÜÆõ}˺ÖÝ.ÑÓüDÃëœÑs-·ÕÆÇÒx(ãŒÊ`·<ÍeÐÒ…Hö N}ÚZ­•·:ãm®sÜZ+&ÿuˆÝ¹¢—s=¢oOä´¶šëúŠ>Ïé·Ñ×ù}S)÷¾+ú»znоŽ.LuÌ_·{½Mp›võÖKôÔeôõ\¯ïëKÃm¹Âçe>çòL™ØY®ð©·è÷^ÏþaDègŒþ2=¢GôˆþžèãÞŒ>-ØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØ¼¼…—Œ¼ $¢GôˆÑ¦VlËë*÷¥ÿ3mKÞ×o—5ðý¬‡¿.¶­ãït}©ô,-¶\‡x•j[®ÓÛJÝ'­¿³Î*óßVŸ#z^ë-[¹¥MoÛê?דŸòåé!ú¥ëTÏõm¶×Ç÷Sšó¾òß«'‰>Õ^ϾÒtùn=)¦KôG†Yþüž[š×xÇ6×n¢Ûþ¤Øžëb¯oÓÚ¶3ù=£OÝðå4žjÅ-—ëwíë–émùp…Oå‚¿^áÏýÛˆè=¢GôˆÑ#ú—G÷fôiÁðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðàå- ¼´`ä%=¢Gôa£ïº[Ë׺~÷ó6Ó-/‹å·\ž¦)_ÊŸ’q‚èkbÿó\Óåyÿ“òtÑ—"Cm®µ6K«¹åÔZ?så¶ ù9D/SJnyôû g?6úZ몯CJ‡²Ëú]kxµc¾E¯?iãÞæòÒÝÿ#£_jkmžÕrlÑçu‚Û=¯ã—ó}® ©­)4ÿ.ûŒ¾ÖÖ¶u%Ì4¥-g^¿«óü®øe_çú;óUøë¢OÏm=àwƒûÚþKë~¾뇽¾ŽµÛ"Ï·×·2_‹ÞßýðºËþÞ¹¾;àOt®¯µµvJOSkw–·¬\gºår>,§öõ›[©ÃÕ7ƒýOÏý÷¼<Îë¼Ñ?3жè_¹ÓOýK‰è=¢Gô÷D÷fôiÁðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðàå- ¼´`ä%=¢Gôa¢?Ûk« —;N/ š«-ÿôèïµýviøñùæEý¡ÑŸèµ•NKî–j*ç:óm?È-ßlù0æíÇD¦×VΊ6Á-§6½í2ÍlŒ´‹~Ùò6æmú1ÑŸíµMûùe—aV—‡Óº×[¾L½š~Jô'{móq°×:½mÚFzMWüºåݘ·é‡ôÜžíµ]Go—À;{ývË?p¯?ÓkÛ¢O»þ0¹ðι¾?àιþl¯­ëu¸Û¼NoûØÀtä–¯·|óö#¢ÿž/­8]ñãe¯í\Ñ¿s§ÿðèßJDè=¢¿'ú¸7£O ¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€/oaà¥#/(‰è=¢GôkŽ °ßµÝúž_\3~²è¹ÖòRw«UŽÖ*‰é©—âlÑ/…µ2ªmmBn寎£_ @¥ÈwbÕ¡£DßÏïJepå£Ï<·Ç¢ç›èÏlê”{}ÚnëkÐÂpÀ/×ò%üԺɩa;¿Â×üOÿEDè'ŽþUŒ{—æ×¸Ñǽ7÷kÜè?áŽì¸7£O ¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€/oaà¥Ñ}‰è=¢½ r›ëè—yºŒë¹úµë•ðéRÀÏŽ¾N¨©C¯vC»®¢ßùÓG/#¶N[šR¾ þÉ­øÒn4R ”ÓòõÑÙ£·pË‹PC¼Ó¡à¶M4Kµ —¶GýEoáæu*Tšë¼²ÝÀ¯¿õ€N½ ,¬£Ý¶èÛ´®2ÒkzWôïí¹ý&zšç]ô¼áw{yö½Þ®ëÓå ¿69o£·ÇsýÄÑ×wó©Žt[?¦vQ›ÚÀ¶\&²î®ðs»ÂŸ8úC\¿=Zq<ô›¤ãD¿ù¿–q¢šˆÑ#zDOôqoFŸlllllllllllllllllllllllllllllll^ÞÂÀK F^PÑ#zDèe†ÑT:¹®ßÊ>õRû”·oº‰>¯Ó}JÚœ·ßUôýs]EŸw¥¥à“ó6Ý­Nv+5ÀüØ”«E/½Ætù()·énmØW«½ô½Ì+›®£æ|­Ñû;àÚY¾´Ùn¢OÓzÀ¿'ú»æ¹µ óå—o÷úz…ïí€_£¯ok[ôËt·^ÏõåÓT¯s-ú”¯¦»¥ÖêL÷zÞçþDôˆÑ#zDèýË£{3ú´` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` xðò^Z0ò‚’ˆÑ#zDŸm¸åéÑÚÇ™¢?Øp{´ûp¾è4Üʃ\gþ¤4_ö;gô¿7Ürš×õ¹¿Ìw:Gô‡n¥â•çmÈ×ßF[#zýò—†Û®5OSo÷½Ñ¿¿çöhÃm{zûÑß8Å^¤ávŒÞǹ¾|úkÃ-—áeæÛÇçÔÇþ“<ð&ßgô‡þ×®Ïè•÷ûŒþ=¢GôˆþžèãÞŒ>-ØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØ¼¼…—Œ¼ $¢GôˆÑïq,¾=ßñ:sôCñmÄè­µöÜèºôýR|k•—i©|ôýP|Ë[íi„èõËÖþª“ÜÞý]óÜ®¢çCôyh¯ï‹o£ð»â[½Âýˈè}¨èãÞ¥ù5nôqïÍý7úO¸#;îÍèÓ‚-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-àÁË[xiA¬›‹è=¢Gôrðò|ÉéüÑSå5`ôZv)#¦¥“vÒWô¥ù‘¦ü؈›~¢_ªNCE¯=§å€¯Ñ§¿Î²úúèBÏ­V½jô´íõOpƽ^¯ðK¹3vÀ/Çyípç)×c”+üÑ#zDè=¢Gô/>îÍèÓ‚-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-àÁË[xiÁÈ J"zDèýÀÒnkõ¶¥òqµþù*ĉ¢§Úühs­n^˜'ƒŸ,ú|ˆ^F<-ý>¾[Fþ¤ö¨Ãè9Õ²Sk5·™VuœÛe°ÛãÇý‰¢×.g)·Íå\Ïmç_šOO€Î½ô|¦Ë^oѧI‰þΞ[ªWñ´]æjÁ­}ïõëèõzu®÷}y_Oë”Òsýx…Ïí ßeô?0N±3¢GôÏ2î]š˜ç6`ô˜ç¦F÷fôiÁðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðàå- ¼´ º/=¢Gôˆ¾ãªëö©eÁ'~Õu{i¢Ûé¢ÏÇèK "¥œÚƒŽ£_uÝj×eZÇ<=7îèdѯºn¥÷Tû.OÕ^Ný¦ëVª>/È4½9ú»ç¹ÝvÝÖâWýæÑyíÏÿùÌþNôv®wýÐu«|®|¹Â÷ý+‰è=¢GôˆÑ#ú—G÷fôiÁðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðàå- ¼´`ä%=¢Gôˆ¾’Ûвm¼Ï~|[¾ÔÝÒÕ×®¢>­9óåawÑk©m*ûz*å¶Ëø¶úJ||Í©<Ÿ—*TgÑ×VûA^¥âVž·1OÎ2R{!†Š>MS®C¯æ'‡ú-z«¶¤½´Ÿ¶©G©ó½^ú?cF/{=·ZWiµµèÓôæèïžçÖúk£m­9î*Îo‹Îkþϧ.si=º/ÑSÿüzZ×7ó=Mu¢áÔû^ÿB"zDè=¢GôˆþåÑǽ}Z°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°Ñ×§z>××Óz-q~|Í©¼¯—ÁnåÉœ/±Ÿ(úWÑ#zDè=¢Gô/>îÍèÓ‚-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-àÁË[xiÁÈ J"zDèý.wgºýîL·Q£OKïçéôgŒ~o¦Û“à ÏýÞL·OògŒ~o¦Ûû£¿}žÛ½™nƒìõ{3ÝÆˆ~w¦ÛÑ¿ŠˆÑ#zDè=¢yôqoFŸlllllllllllllllllllllllllllllll^ÞÂÀK F^PÑ#zDè{ãÜjícžwŸ:Ž~˜i–×1VcF_¾]ºSç6OË„·ùñÂÛy¢ƹµ~KËojÝ—òè™ÂÛ‰¢ïǹm¯ý§Öˆé0ú~œÛ:¸qÛáe¶Uòö¦èoì¹]sKǽ¾N;ëq¯_s[Ïõtu®wý8έœëõ _^ݾ¿è¿{=.<ùö~ê臣;ý8Žvz²Ûyêè¯Ñ#zDèï‰>îÍèÓ‚-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-àÁË[xiÁÈ J"zDè½q¨¸Íù²x}pè?¤ýOÎýÐóšÓeõ÷%zrÖ{ôZê›æ\ºKÏgù\£|—SùÒKôëŠÛÜZµR‹nuÈYëÃ<4ÖïÑ·5úœ·rÛ>úÜWô«ŠÛ.zpUöÿî…˜švuŠžÛuÅm¿×ç;ÑçÎ.s»_¾sÀ_žêê€?TÜÊûzžê·õbž–Ëz©òöw…ÿ"zDè=¢GôˆþåÑǽ}Z°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°Jíc÷ëÝD¿©{݉¾KÜyôRu›ÓVyËíÉ;§‰~ÓtkަuÐQÙëÏT½Îýj˜Û6Öjßzªïtžè×M·6Âí2Ê­FoÀwD×<·›¦[{°å–·'ûÚë×ÃÜæ»|êñ\¿æ–ê~^¿~<_Þ×{¼Â=¢GôˆÑ#zDÿòèãÞŒ>-ØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØ¼¼…—Œ¼ $¢GôˆÑ÷ÜTÝÊ“mÙÿt™ñvS;ôÛÉfíõ¨_óå÷ú^ÛmKÁ-×—`Ô]ôÛª[뾬Ñwíz‹~[u»½Û½~ì{åKéiÞÆ¸½+ú»znóݪۚ;m—ÿ>÷úªÛ>úú£Ïõ{U·yZfºåö¾Þïþ·<¶¿èu»ŒþÉÞCôÏÑ#zDèï‰>îÍèÓ‚-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-àÁË[xiÁÈ J"zDè}Ï:ͧ.öŸvÓÛÚŸ] }žè¥á2Õ¢Ó…àϯ>qô\ª>uºÏôñ9µGFϹ´žÒ¶×/ž¦­õ5=~ÜŸ(zi¿¬Ñ—s=§m¬×®ðÖcô²×s¾ «kÑK½íýÑߨsk#ËvÑ/•·Þ÷zZ?v—¹›s½ËèëlÆÚàü8×WøÜ®ð=FÿŸª{Eôˆ~ÖèŸ"¢GôˆÑß}ܛѧ[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[Àƒ—·0ðÒ‚‘”DôˆÑ#ú·U·:à&Ï—½æ{U·½Ì:,úRú˜Zô\êP½Fÿ]Õ­Î:Ëé©}®èWU·tŒþLñåtÑoªn©»j³ÎÞý=·ùU7!:¯ýù?Ÿ¸Ìí«n»Zk=×»~¬ºí®ðmœgÇÑÿÆsŧޢ?·Ï»ŠžŸüºŽ¢?KDè=¢¿'ú¸7£O ¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€/oaà¥#/(‰è=¢GôÆ_F¹ÍiZz0‡gz‰þ—QnÏ\ü:޾,O©4Ÿ¦Tzí©:ôç¡õáçˆ~Ûo+¯Å”Sì”×§RnÏôý¶ß¶¶jß©ðÛ“=E¿í·]¢—P9à×'§ÇFù£çvÛoÛ¢øC웣óÚŸÿóÄeîØoûmôÎÎõÛ~[¹œ·>¥v…/¯AëÖÏþe·>lô'Ên½E‚qïÒü7ú¸÷æ~ý'Ü‘÷fôiÁðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðàå- ¼´ º/=¢GôˆÞH­çV /×Ͷ×ÿŸ3zk³Œ/K÷&×ýcÇç\fzå©”ËF_ê^ëø²6³py-ršò®“»¬äy}ÚF;µ2ÐýáÍ)ú²×Ûø²Ë^¯ÑsêV_7Eç<·–ónôõ€frç‰öz¾dýmôNøú¾¾|”™…s½Â¯|þ¸ÜÕ':ŒþÕDôˆÑ#zDèýË£{3ú´` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` xðò^Z0ò‚’ˆÑ#úàÑSÜæ›)në¯]ÿ ×O­ÿüàèÇQfùw]îÿàFÀi¢—x©Ìn+}:Êm鹕&È´ôßÖ'J¢LýI˜…ò“£ßLq+í¾Zl[G¹•×åØsËe¬[ýîO3¾~rô÷ºçµÐ¶öžò|‰¾uöƒ¯ÎýzŠ[* Î]ôVó«E yzoôoí¹]OqÛO2»t»¶7‚µçÖÃ^?Lq+mÕßDßÏvkgø¹£§¸•kv*…¶Ë_.uËwWø¹\áÛ\·“Fÿ<•™#zDï$úcŒ{—&æ¹ =湩Ñǽ}Z°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°<°îÍèÓ‚-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-àÁË[xiÁÈ J"zDè}!ÍkÅ!µžÃRõøøwš¦ß7ë#úZešÖèu€×üû•ÿýFO-~éDä2æk´ú™§\¾¤¿-‘ÿùÑ—  s¾½•@Ò¾õ5­MÀÓG¯;÷*ú2ë)¯'@­mÕ§Vé ú²×K©ï¸××èÓº“wѧéû£¿¡çV[\¿¾îä]á­•¿9:¯ýù?^æZÂýþýö\ï zš×ÂêÇa\ç¹M‡>¥vU»ºÂŸ?ú·Ñ#zDè=¢Gô/>îÍèÓ‚-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-àÁË[xiÁÈ J"zDè}ÏMßm]?¯_Ÿûr¢èÇÒWy°¾>1Hô¥á¶Lt[Ú`å‰\¦~uýØwkÒV|©Oäúm'Œ~転/û{}âñ¹?'Š~컥u‡/¶éòÄÛ¢¿qžÛUßm‹^¿{t^ûóž½Ì]únÛ·´^ê=F?öÝÚ?åõ ¿>Ñcô‡_ 1£?5×­¯èOÍuë+úSDôˆÑ#ú{¢{3ú´` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` xðò^Z0ò‚’ˆÑ#zD_¹î¸íƾôýºèµF¸ØÕKôòÝT¹¥ËŒŸT^“ôØ,·óD¿é¸­s¬v3žrôôÐ,·E?ÎtK‡èóÚJõ¢ðhâ$Ñ·¼V¦i‹¾<,ü»¢¿©çvÕqÛöþ6ÅmwÍïl¯_Ït›¶v_º{®wýªãV¯ðK©m¹¤Ý»Â÷ý[ˆè=¢GôˆÑ#ú—G÷fôiÁðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðÀðàå- ¼´`ä%=¢Gôˆ¾Òê —ÒCYð^?m]·eâÑå÷{‰¾Ö˜r :¢ï~gKÜmô2Ò§ r[>ÕFDp´v"zŠžk•1mÑ[×e+~]7aú‰^rmÑ×ÔÇÎÛ%z{½Œé+/Cj§é:ú4½+ú»æ¹•×Mô|g¯Ï½íõµ´Ø²åûÑw ×n¢_j‹íˆ.—òå ŸÚ¾Vàæ¯ðßADè=¢GôˆÑ¿<ú¸7£O ¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€/oaà¥#/(‰è=¢Gô+î×ÝÚOúŽ~¿î6`ô­óµ|~fÛ)£ß­»M9µžÛƒƒÜNý~Ým«½=8×ê”Ñï×ÝZô¥öóÆèïê¹5~Ww[{nïõ;u·Úo\Ïõn£ß«»µ½þÌ ·3FÿZ"zD*ú¸wi~}Ü{s¿ÆþîÈŽ{3ú´` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` x` xðò^Zëæ"zDè£G?–Ûrky¬ ß§:Å-ï½›èW ¯ö:\Eí´çv}i;¤T{©Œ¯+ã}ÊüŸ4•úÏc•·D?”Ûr­}´¶K.Ñk¨”žÊYñ`åíÑå¶9oÅŸš°EO»ÉVé±Ð ¢Êm—âÏMôÒ*Ï?Vy;AÏíªÜv?zI¼E¨òv‚½~]nÛE¿œë»±iîå€?–Ûr™ãÖ¢ï¯ð¹\á—ç×+üù£ÿ‘g*}]E®ÈÙUôüL]½¯è¯Ñ#zDèï‰>îÍèÓ‚-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-àÁË[xiÁÈ J"zDèýBZ{nË£Vn»å©Î×Y¢×•ÿs©ü>âÑsnŶ¥Õ5ÕY?S~f¨ÛY¢/y–nOÞ¢§­Øv©½LÏ u;Môº£wÑçy+¶íÊNO̸:MôÒðIi}Zwò.úCÝNÐs+Ôâæ!úº“·énOu;Ë^ÏÛÇuôÛs½³èu箇t;àSjWµ«+|_Ñ¿ˆÑ#zDè=¢yôqoFŸlllllllllllllllllllllllllllllll^ÞÂÀK F^PÑ#zDèÃH·-ØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØØ¼¼…—Œ¼ $¢GôˆÑïqÛr«SŽˆ~[õZ'Eôޣߴܯ‰~Órç\¿i¹µ±^oŽnôÜnZnãð7-·a¢ß¶ÜÖó½ûè_FDè=¢GôˆÑ¿<ú¸7£O ¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€¶€/oaà¥#/(‰è=¢Gô×·ºüýf~º p¢è×-¯]à±¢—?S©äôñ|ÊÓòíƒÝÎýPpËí#-ÿ¤öhyºŒ~(¸å6²1Õ"Ìýñ­)ú¡à¶¼ó4­Ñë£wFkÏíPp[¢çm¯çÎ÷ú¡àVßënÏõ.£ n%ä”Òv…Oõ ßeô¯&¢GôˆÑ#zDè_}ܛѧ[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[Àƒ—·0ðÒ‚‘”DôˆÑ#ú=JËk™ø2Ïëê÷<_÷½uÒÒmš†Œ>×èù#ý”—/D¯U§ÒÊ­ò3m…˜Î£—ŒÓ>z%zZk¼éRôš¦·Gæ¹m—¹}ô4Òe®µÚ†:×/ïëåc¨+üWÑ#zDè=¢Gô/>îÍèÓ‚-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-àÁË[xiÁÈ J"zD轎µ™Ò6ÂìBÚõÜÖßž¦)?^ýúÙÑÛxŸ¥çpýÒsÛýzoÑë@¯2½-Õ)n9¥­ç–/ƒÌRý‹Ç:?<ú2Ì+·Yf¥Ù”S›ç”.e¯Ô~i‹Þš0™íöã—]žSßµ³jmŸ\Göí'صèó:ëÙxôÜNÜåP_§·-íÒZöÊKÁm;äS;NÖÖÛ³ÿðžÛz™«gùº×çKôt½×˼»öú%zÞEßF¸Ý9×ÛAúsýø¾^§·¥õ ßznùx…/{~zdpçÏŽþOwû"zD?sôÏÑ#zDèï‰>îÍèÓ‚-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-à-àÁË[xiÁÈ J"zDè½±áöçµÀùºvúè»nƒF/üj³­–ÙæZr+j»íãßµ ×Gôý·Úv™Zá§_öƒÍ¶6\/Ñ×n­îTë?å›z8ìZPk9¨—èÛ·Üšm©Œp›Û«Zk›¦­÷Žèï™ç¶›cv9®·Wcív­õǹ§½~‰¾ŽnK<×;Š~x_/%¶”Wø¼^áçz…ï'úølÝ)¢GôSFˆÑ#zDOôqoFŸlllllllllllllllllllllllllllllll^ÞÂÀK F^PÑ#zDèwØFÁ, äkó¡ñDÏëœÑ·@ye5Zôµê2Í­‘òõ\»þ¢o#ÞæÒ÷Øw_z¾x›·ªÏÖxê<úeÄÛ}šŒèï鹸Ì9»ìõyŒ½~¸Âu®_½¯_®ð7“K»‹~ïµøýÄÑŸ=Å;ŠþiƽKókÜèãÞ›û5nôŸpGvܛѧ[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[À[Àƒ—·0ðÒ‚è¾DôˆÑ#ú‘mA|jKƒ?»>ø|Ñ÷ 1£·¡^Sk<Ýr;eôµè–ÛÇ:ài€èkÑ­Mö)úZt«³ý¦6¸ozwt¡ç¶]æ–è»þi^Œþ:Ÿ¿Â··¹Òox!ú¥èV¦¦}?Wx!ú—Ñ#zDè=¢Gô/îÝŒþÿjkaÓ®ýzIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classXMLDTDDescription.html0000644000175000017500000002564211363620006022620 0ustar borisboris Xerces-C++: XMLDTDDescription Class Reference

    XMLDTDDescription Class Reference

    Inheritance diagram for XMLDTDDescription:

    XMLGrammarDescription XMemory

    List of all members.

    Public Member Functions

    Virtual destructor for derived classes
    virtual ~XMLDTDDescription ()
     virtual destructor
    Implementation of Grammar Description Interface
    virtual Grammar::GrammarType getGrammarType () const
     getGrammarType
    The DTDDescription Interface
    virtual const XMLChgetRootName () const =0
     Getter.
    virtual const XMLChgetSystemId () const
    virtual void setRootName (const XMLCh *const)=0
     Setter.
    virtual void setSystemId (const XMLCh *const)

    Protected Member Functions

     XMLDTDDescription (MemoryManager *const memMgr=XMLPlatformUtils::fgMemoryManager)
     Hidden Constructors.


    Constructor & Destructor Documentation

    virtual XMLDTDDescription::~XMLDTDDescription (  )  [virtual]

    virtual destructor

    XMLDTDDescription::XMLDTDDescription ( MemoryManager *const   memMgr = XMLPlatformUtils::fgMemoryManager  )  [protected]

    Hidden Constructors.


    Member Function Documentation

    virtual Grammar::GrammarType XMLDTDDescription::getGrammarType (  )  const [virtual]

    getGrammarType

    Implements XMLGrammarDescription.

    virtual const XMLCh* XMLDTDDescription::getRootName (  )  const [pure virtual]

    Getter.

    virtual const XMLCh* XMLDTDDescription::getSystemId (  )  const [virtual]

    virtual void XMLDTDDescription::setRootName ( const XMLCh const  )  [pure virtual]

    Setter.

    virtual void XMLDTDDescription::setSystemId ( const XMLCh const  )  [virtual]


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMLocator.html0000644000175000017500000003205011363620005021351 0ustar borisboris Xerces-C++: DOMLocator Class Reference

    DOMLocator Class Reference

    DOMLocator is an interface that describes a location. More...

    List of all members.

    Public Member Functions

    Destructor
    virtual ~DOMLocator ()
     Destructor.
    Functions introduced in DOM Level 3
    virtual XMLFileLoc getLineNumber () const =0
     Get the line number where the error occured, or 0 if there is no line number available.
    virtual XMLFileLoc getColumnNumber () const =0
     Get the column number where the error occured, or 0 if there is no column number available.
    virtual XMLFilePos getByteOffset () const =0
     Get the byte offset into the input source, or ~(XMLFilePos(0)) if there is no byte offset available.
    virtual XMLFilePos getUtf16Offset () const =0
     Get the UTF-16 offset into the input source, or ~(XMLFilePos(0)) if there is no UTF-16 offset available.
    virtual DOMNodegetRelatedNode () const =0
     Get the DOMNode where the error occured, or null if there is no node available.
    virtual const XMLChgetURI () const =0
     Get the URI where the error occured, or null if there is no URI available.

    Protected Member Functions

    Hidden constructors
     DOMLocator ()


    Detailed Description

    DOMLocator is an interface that describes a location.

    (e.g. where an error occured).

    See also:
    DOMError::DOMError
    Since:
    DOM Level 3

    Constructor & Destructor Documentation

    DOMLocator::DOMLocator (  )  [protected]

    virtual DOMLocator::~DOMLocator (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual XMLFileLoc DOMLocator::getLineNumber (  )  const [pure virtual]

    Get the line number where the error occured, or 0 if there is no line number available.

    Since:
    DOM Level 3

    virtual XMLFileLoc DOMLocator::getColumnNumber (  )  const [pure virtual]

    Get the column number where the error occured, or 0 if there is no column number available.

    Since:
    DOM Level 3

    virtual XMLFilePos DOMLocator::getByteOffset (  )  const [pure virtual]

    Get the byte offset into the input source, or ~(XMLFilePos(0)) if there is no byte offset available.

    Since:
    DOM Level 3

    virtual XMLFilePos DOMLocator::getUtf16Offset (  )  const [pure virtual]

    Get the UTF-16 offset into the input source, or ~(XMLFilePos(0)) if there is no UTF-16 offset available.

    Since:
    DOM Level 3

    virtual DOMNode* DOMLocator::getRelatedNode (  )  const [pure virtual]

    Get the DOMNode where the error occured, or null if there is no node available.

    Since:
    DOM Level 3

    virtual const XMLCh* DOMLocator::getURI (  )  const [pure virtual]

    Get the URI where the error occured, or null if there is no URI available.

    Since:
    DOM Level 3


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDeclHandler-members.html0000644000175000017500000000627011363620005023210 0ustar borisboris Xerces-C++: Member List

    DeclHandler Member List

    This is the complete list of members for DeclHandler, including all inherited members.

    attributeDecl(const XMLCh *const eName, const XMLCh *const aName, const XMLCh *const type, const XMLCh *const mode, const XMLCh *const value)=0DeclHandler [pure virtual]
    DeclHandler()DeclHandler
    elementDecl(const XMLCh *const name, const XMLCh *const model)=0DeclHandler [pure virtual]
    externalEntityDecl(const XMLCh *const name, const XMLCh *const publicId, const XMLCh *const systemId)=0DeclHandler [pure virtual]
    internalEntityDecl(const XMLCh *const name, const XMLCh *const value)=0DeclHandler [pure virtual]
    ~DeclHandler()DeclHandler [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLDOMMsg-members.html0000644000175000017500000003151011363620006022506 0ustar borisboris Xerces-C++: Member List

    XMLDOMMsg Member List

    This is the complete list of members for XMLDOMMsg, including all inherited members.

    BAD_BOUNDARYPOINTS_ERR enum valueXMLDOMMsg
    Codes enum nameXMLDOMMsg
    DOMErrorType(const XMLDOMMsg::Codes toCheck)XMLDOMMsg [static]
    DOMEXCEPTION_ERRX enum valueXMLDOMMsg
    DOMLSEXCEPTION_ERRX enum valueXMLDOMMsg
    DOMRANGEEXCEPTION_ERRX enum valueXMLDOMMsg
    DOMSTRING_SIZE_ERR enum valueXMLDOMMsg
    DOMXPATHEXCEPTION_ERRX enum valueXMLDOMMsg
    E_HighBounds enum valueXMLDOMMsg
    E_LowBounds enum valueXMLDOMMsg
    errorType(const XMLDOMMsg::Codes toCheck)XMLDOMMsg [static]
    F_HighBounds enum valueXMLDOMMsg
    F_LowBounds enum valueXMLDOMMsg
    HIERARCHY_REQUEST_ERR enum valueXMLDOMMsg
    INDEX_SIZE_ERR enum valueXMLDOMMsg
    INUSE_ATTRIBUTE_ERR enum valueXMLDOMMsg
    INVALID_ACCESS_ERR enum valueXMLDOMMsg
    INVALID_CHARACTER_ERR enum valueXMLDOMMsg
    INVALID_EXPRESSION_ERR enum valueXMLDOMMsg
    INVALID_MODIFICATION_ERR enum valueXMLDOMMsg
    INVALID_NODE_TYPE_ERR enum valueXMLDOMMsg
    INVALID_STATE_ERR enum valueXMLDOMMsg
    isError(const XMLDOMMsg::Codes toCheck)XMLDOMMsg [static]
    isFatal(const XMLDOMMsg::Codes toCheck)XMLDOMMsg [static]
    isWarning(const XMLDOMMsg::Codes toCheck)XMLDOMMsg [static]
    LSParser_ParseInProgress enum valueXMLDOMMsg
    LSParser_ParsingAborted enum valueXMLDOMMsg
    LSParser_ParsingFailed enum valueXMLDOMMsg
    NAMESPACE_ERR enum valueXMLDOMMsg
    NO_DATA_ALLOWED_ERR enum valueXMLDOMMsg
    NO_MODIFICATION_ALLOWED_ERR enum valueXMLDOMMsg
    NO_RESULT_ERR enum valueXMLDOMMsg
    NoError enum valueXMLDOMMsg
    NOT_FOUND_ERR enum valueXMLDOMMsg
    NOT_SUPPORTED_ERR enum valueXMLDOMMsg
    PARSE_ERR enum valueXMLDOMMsg
    SERIALIZE_ERR enum valueXMLDOMMsg
    SYNTAX_ERR enum valueXMLDOMMsg
    TYPE_ERR enum valueXMLDOMMsg
    TYPE_MISMATCH_ERR enum valueXMLDOMMsg
    VALIDATION_ERR enum valueXMLDOMMsg
    W_HighBounds enum valueXMLDOMMsg
    W_LowBounds enum valueXMLDOMMsg
    Writer_NestedCDATA enum valueXMLDOMMsg
    Writer_NotRecognizedType enum valueXMLDOMMsg
    Writer_NotRepresentChar enum valueXMLDOMMsg
    WRONG_DOCUMENT_ERR enum valueXMLDOMMsg


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classStdInInputSource.png0000644000175000017500000000103211363620006022445 0ustar borisboris‰PNG  IHDRlˆðjPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf°IDATX…í—Krà †Ñ¦kI7À½A{¡¬rÿ#TØbc¤ÎÔEöð2Ÿ"ñürß]澦ûü?˜×›¥ÁÏyc¹HØnŒ¤Éâ]jï½®£‚É™m€ŸÈ‡Úó¦›Z0¶{¾½yN”a\ÅtoÓ΂é 1C³E`ñÜ,žÆZm£õìX'V#V8û“œ_Ç:?x»Õ¾û¸Ÿ‰Ýï·±s#9° l`SyÀë±T‰ö¤Š¨ßÇøAÖíbL¢±M¼’©\OA`{Ó°´‡©7¥«™§Y3‡<€-Zx›æ Þ2^ýÔŠ­ý€µ`\bi`1ÿ)FKÞQó&[ÒŒˆ} ™¯J$#ÛboÆÚìÚØÈž°‘ l`ØÕ1ê2‡=ë€Ëc ! ¥¶ÞkDb ì_bŽP0T¿ZÊ$T_ ƒrÌÒβHk€`äb¡¯Ð¶à±áÀJ Žléä⬵ˆ• n!øs.Ãr"Ãäf!ÙÆ°Ä°ˆäºŒmH±–t‘zn1’3&[Ò„<2_y$·¦áWònìÀ®õ}ð~^ªŒµ”˜IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classXMLDocumentHandler.html0000644000175000017500000011352311363620006023051 0ustar borisboris Xerces-C++: XMLDocumentHandler Class Reference

    XMLDocumentHandler Class Reference

    This abstract class provides the interface for the scanner to return XML document information up to the parser as it scans through the document. More...

    Inheritance diagram for XMLDocumentHandler:

    AbstractDOMParser SAXParser XercesDOMParser

    List of all members.

    Public Member Functions

    Destructor
    virtual ~XMLDocumentHandler ()
    The document handler interface
    virtual void docCharacters (const XMLCh *const chars, const XMLSize_t length, const bool cdataSection)=0
     Receive notification of character data.
    virtual void docComment (const XMLCh *const comment)=0
     Receive notification of comments in the XML content being parsed.
    virtual void docPI (const XMLCh *const target, const XMLCh *const data)=0
     Receive notification of PI's parsed in the XML content.
    virtual void endDocument ()=0
     Receive notification after the scanner has parsed the end of the document.
    virtual void endElement (const XMLElementDecl &elemDecl, const unsigned int uriId, const bool isRoot, const XMLCh *const prefixName=0)=0
     Receive notification of the end of an element.
    virtual void endEntityReference (const XMLEntityDecl &entDecl)=0
     Receive notification when a referenced entity's content ends.
    virtual void ignorableWhitespace (const XMLCh *const chars, const XMLSize_t length, const bool cdataSection)=0
     Receive notification of ignorable whitespace in element content.
    virtual void resetDocument ()=0
     Reset the document handler's state, if required.
    virtual void startDocument ()=0
     Receive notification of the start of a new document.
    virtual void startElement (const XMLElementDecl &elemDecl, const unsigned int uriId, const XMLCh *const prefixName, const RefVectorOf< XMLAttr > &attrList, const XMLSize_t attrCount, const bool isEmpty, const bool isRoot)=0
     Receive notification of a new start tag.
    virtual void startEntityReference (const XMLEntityDecl &entDecl)=0
     Receive notification when the scanner hits an entity reference.
    virtual void XMLDecl (const XMLCh *const versionStr, const XMLCh *const encodingStr, const XMLCh *const standaloneStr, const XMLCh *const autoEncodingStr)=0
     Receive notification of an XML declaration.

    Protected Member Functions

     XMLDocumentHandler ()


    Detailed Description

    This abstract class provides the interface for the scanner to return XML document information up to the parser as it scans through the document.

    The interface is very similar to org.sax.DocumentHandler, but has some extra methods required to get all the data out.


    Constructor & Destructor Documentation

    virtual XMLDocumentHandler::~XMLDocumentHandler (  )  [virtual]

    XMLDocumentHandler::XMLDocumentHandler (  )  [protected]


    Member Function Documentation

    virtual void XMLDocumentHandler::docCharacters ( const XMLCh *const   chars,
    const XMLSize_t  length,
    const bool  cdataSection 
    ) [pure virtual]

    Receive notification of character data.

    The scanner will call this method to report each chunk of character data. The scanner may return all contiguous character data in a single chunk, or they may split it into several chunks; however, all of the characters in any single event will come from the same external entity, so that the Locator provides useful information.

    The parser must not attempt to read from the array outside of the specified range.

    Parameters:
    chars The content (characters) between markup from the XML document.
    length The number of characters to read from the array.
    cdataSection Indicates that this data is inside a CDATA section.
    See also:
    ignorableWhitespace

    Locator

    Implemented in AbstractDOMParser, and SAXParser.

    virtual void XMLDocumentHandler::docComment ( const XMLCh *const   comment  )  [pure virtual]

    Receive notification of comments in the XML content being parsed.

    This scanner will call this method for any comments found in the content of the document.

    Parameters:
    comment The text of the comment.

    Implemented in AbstractDOMParser, and SAXParser.

    virtual void XMLDocumentHandler::docPI ( const XMLCh *const   target,
    const XMLCh *const   data 
    ) [pure virtual]

    Receive notification of PI's parsed in the XML content.

    The scanner will call this method for any PIs it finds within the content of the document.

    Parameters:
    target The name of the PI.
    data The body of the PI. This may be an empty string since the body is optional.

    Implemented in AbstractDOMParser, and SAXParser.

    virtual void XMLDocumentHandler::endDocument (  )  [pure virtual]

    Receive notification after the scanner has parsed the end of the document.

    The scanner will call this method when the current document has been fully parsed. The handler may use this opportunity to do something with the data, clean up temporary data, etc...

    Implemented in AbstractDOMParser, and SAXParser.

    virtual void XMLDocumentHandler::endElement ( const XMLElementDecl elemDecl,
    const unsigned int  uriId,
    const bool  isRoot,
    const XMLCh *const   prefixName = 0 
    ) [pure virtual]

    Receive notification of the end of an element.

    This method is called when scanner encounters the end of element tag. There will be a corresponding startElement() event for every endElement() event, but not necessarily the other way around. For empty tags, there is only a startElement() call.

    Parameters:
    elemDecl The name of the element whose end tag was just parsed.
    uriId The ID of the URI in the URI pool (only valid if name spaces is enabled)
    isRoot Indicates if this is the root element.
    prefixName The string representing the prefix name

    Implemented in AbstractDOMParser, and SAXParser.

    virtual void XMLDocumentHandler::endEntityReference ( const XMLEntityDecl entDecl  )  [pure virtual]

    Receive notification when a referenced entity's content ends.

    This method is called when scanner encounters the end of an entity reference.

    Parameters:
    entDecl The name of the entity reference just scanned.

    Implemented in AbstractDOMParser, and SAXParser.

    virtual void XMLDocumentHandler::ignorableWhitespace ( const XMLCh *const   chars,
    const XMLSize_t  length,
    const bool  cdataSection 
    ) [pure virtual]

    Receive notification of ignorable whitespace in element content.

    Validating Parsers must use this method to report each chunk of ignorable whitespace (see the W3C XML 1.0 recommendation, section 2.10): non-validating parsers may also use this method if they are capable of parsing and using content models.

    The scanner may return all contiguous whitespace in a single chunk, or it may split it into several chunks; however, all of the characters in any single event will come from the same external entity, so that the Locator provides useful information.

    The parser must not attempt to read from the array outside of the specified range.

    Parameters:
    chars The whitespace characters from the XML document.
    length The number of characters to read from the array.
    cdataSection Indicates that this data is inside a CDATA section.
    See also:
    docCharacters

    Implemented in AbstractDOMParser, and SAXParser.

    virtual void XMLDocumentHandler::resetDocument (  )  [pure virtual]

    Reset the document handler's state, if required.

    This method is used to give the registered document handler a chance to reset itself. Its called by the scanner at the start of every parse.

    Implemented in AbstractDOMParser, and SAXParser.

    virtual void XMLDocumentHandler::startDocument (  )  [pure virtual]

    Receive notification of the start of a new document.

    This method is the first callback called the scanner at the start of every parse. This is before any content is parsed.

    Implemented in AbstractDOMParser, and SAXParser.

    virtual void XMLDocumentHandler::startElement ( const XMLElementDecl elemDecl,
    const unsigned int  uriId,
    const XMLCh *const   prefixName,
    const RefVectorOf< XMLAttr > &  attrList,
    const XMLSize_t  attrCount,
    const bool  isEmpty,
    const bool  isRoot 
    ) [pure virtual]

    Receive notification of a new start tag.

    This method is called when scanner encounters the start of an element tag. All elements must always have a startElement() tag. Empty tags will only have the startElement() tag and no endElement() tag.

    Parameters:
    elemDecl The name of the element whose start tag was just parsed.
    uriId The ID of the URI in the URI pool (only valid if name spaces is enabled)
    prefixName The string representing the prefix name
    attrList List of attributes in the element
    attrCount Count of the attributes in the element
    isEmpty Indicates if the element is empty, in which case you should not expect an endElement() event.
    isRoot Indicates if this is the root element.

    Implemented in AbstractDOMParser, and SAXParser.

    virtual void XMLDocumentHandler::startEntityReference ( const XMLEntityDecl entDecl  )  [pure virtual]

    Receive notification when the scanner hits an entity reference.

    This is currently useful only to DOM parser configurations as SAX does not provide any api to return this information.

    Parameters:
    entDecl The name of the entity that was referenced.

    Implemented in AbstractDOMParser, and SAXParser.

    virtual void XMLDocumentHandler::XMLDecl ( const XMLCh *const   versionStr,
    const XMLCh *const   encodingStr,
    const XMLCh *const   standaloneStr,
    const XMLCh *const   autoEncodingStr 
    ) [pure virtual]

    Receive notification of an XML declaration.

    Currently neither DOM nor SAX provide API's to return back this information.

    Parameters:
    versionStr The value of the version pseudoattribute of the XML decl.
    encodingStr The value of the encoding pseudoattribute of the XML decl.
    standaloneStr The value of the standalone pseudoattribute of the XML decl.
    autoEncodingStr The encoding string auto-detected by the scanner. In absence of any 'encoding' attribute in the XML decl, the XML standard specifies how a parser can auto-detect. If there is no encodingStr this is what will be used to try to decode the file.

    Implemented in AbstractDOMParser, and SAXParser.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/structHash2KeysSetBucketElem-members.html0000644000175000017500000000436011363620006025477 0ustar borisboris Xerces-C++: Member List

    Hash2KeysSetBucketElem Member List

    This is the complete list of members for Hash2KeysSetBucketElem, including all inherited members.

    fKey1Hash2KeysSetBucketElem
    fKey2Hash2KeysSetBucketElem
    fNextHash2KeysSetBucketElem


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMDocumentFragment_8hpp-source.html0000644000175000017500000001761111363620004024424 0ustar borisboris Xerces-C++: DOMDocumentFragment.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/globals_0x6c.html0000644000175000017500000000536011363620006020650 0ustar borisboris Xerces-C++: Class Members
    Here is a list of all file members with links to the files they belong to:

    - l -


    Generated on Wed Apr 21 17:55:51 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLNotationDecl.html0000644000175000017500000005473311363620006022367 0ustar borisboris Xerces-C++: XMLNotationDecl Class Reference

    XMLNotationDecl Class Reference

    This class represents the core information about a notation declaration that all validators must at least support. More...

    Inheritance diagram for XMLNotationDecl:

    XMemory

    List of all members.

    Public Member Functions

    XMLSize_t getId () const
    const XMLChgetName () const
    const XMLChgetPublicId () const
    const XMLChgetSystemId () const
    const XMLChgetBaseURI () const
    unsigned int getNameSpaceId () const
    MemoryManagergetMemoryManager () const
    void setId (const XMLSize_t newId)
    void setName (const XMLCh *const notName)
    void setPublicId (const XMLCh *const newId)
    void setSystemId (const XMLCh *const newId)
    void setBaseURI (const XMLCh *const newId)
    void setNameSpaceId (const unsigned int newId)
    const XMLChgetKey () const
    Constructors
     XMLNotationDecl (MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     XMLNotationDecl (const XMLCh *const notName, const XMLCh *const pubId, const XMLCh *const sysId, const XMLCh *const baseURI=0, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
    Destructor
     ~XMLNotationDecl ()


    Detailed Description

    This class represents the core information about a notation declaration that all validators must at least support.

    Each validator will create a derivative of this class which adds any information it requires for its own extra needs.

    At this common level, the information supported is the notation name and the public and sysetm ids indicated in the notation declaration.


    Constructor & Destructor Documentation

    XMLNotationDecl::XMLNotationDecl ( MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager  ) 

    XMLNotationDecl::XMLNotationDecl ( const XMLCh *const   notName,
    const XMLCh *const   pubId,
    const XMLCh *const   sysId,
    const XMLCh *const   baseURI = 0,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    XMLNotationDecl::~XMLNotationDecl (  ) 


    Member Function Documentation

    XMLSize_t XMLNotationDecl::getId (  )  const

    const XMLCh * XMLNotationDecl::getName (  )  const

    const XMLCh * XMLNotationDecl::getPublicId (  )  const

    const XMLCh * XMLNotationDecl::getSystemId (  )  const

    const XMLCh * XMLNotationDecl::getBaseURI (  )  const

    unsigned int XMLNotationDecl::getNameSpaceId (  )  const

    MemoryManager * XMLNotationDecl::getMemoryManager (  )  const

    void XMLNotationDecl::setId ( const XMLSize_t  newId  ) 

    void XMLNotationDecl::setName ( const XMLCh *const   notName  ) 

    void XMLNotationDecl::setPublicId ( const XMLCh *const   newId  ) 

    void XMLNotationDecl::setSystemId ( const XMLCh *const   newId  ) 

    void XMLNotationDecl::setBaseURI ( const XMLCh *const   newId  ) 

    void XMLNotationDecl::setNameSpaceId ( const unsigned int  newId  ) 

    const XMLCh * XMLNotationDecl::getKey (  )  const


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLString-members.html0000644000175000017500000006770511363620006022705 0ustar borisboris Xerces-C++: Member List

    XMLString Member List

    This is the complete list of members for XMLString, including all inherited members.

    binToText(const unsigned int toFormat, char *const toFill, const XMLSize_t maxChars, const unsigned int radix, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLString [static]
    binToText(const unsigned int toFormat, XMLCh *const toFill, const XMLSize_t maxChars, const unsigned int radix, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLString [static]
    binToText(const unsigned long toFormat, char *const toFill, const XMLSize_t maxChars, const unsigned int radix, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLString [static]
    binToText(const unsigned long toFormat, XMLCh *const toFill, const XMLSize_t maxChars, const unsigned int radix, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLString [static]
    binToText(const int toFormat, char *const toFill, const XMLSize_t maxChars, const unsigned int radix, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLString [static]
    binToText(const int toFormat, XMLCh *const toFill, const XMLSize_t maxChars, const unsigned int radix, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLString [static]
    binToText(const long toFormat, char *const toFill, const XMLSize_t maxChars, const unsigned int radix, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLString [static]
    binToText(const long toFormat, XMLCh *const toFill, const XMLSize_t maxChars, const unsigned int radix, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLString [static]
    catString(char *const target, const char *const src)XMLString [static]
    catString(XMLCh *const target, const XMLCh *const src)XMLString [static]
    collapseWS(XMLCh *toConvert, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLString [static]
    compareIString(const char *const str1, const char *const str2)XMLString [static]
    compareIString(const XMLCh *const str1, const XMLCh *const str2)XMLString [static]
    compareIStringASCII(const XMLCh *const str1, const XMLCh *const str2)XMLString [static]
    compareNIString(const char *const str1, const char *const str2, const XMLSize_t count)XMLString [static]
    compareNIString(const XMLCh *const str1, const XMLCh *const str2, const XMLSize_t count)XMLString [static]
    compareNString(const char *const str1, const char *const str2, const XMLSize_t count)XMLString [static]
    compareNString(const XMLCh *const str1, const XMLCh *const str2, const XMLSize_t count)XMLString [static]
    compareString(const char *const str1, const char *const str2)XMLString [static]
    compareString(const XMLCh *const str1, const XMLCh *const str2)XMLString [static]
    copyNString(XMLCh *const target, const XMLCh *const src, const XMLSize_t maxChars)XMLString [static]
    copyString(char *const target, const char *const src)XMLString [static]
    copyString(XMLCh *const target, const XMLCh *const src)XMLString [static]
    cut(XMLCh *const toCutFrom, const XMLSize_t count)XMLString [static]
    endsWith(const XMLCh *const toTest, const XMLCh *const suffix)XMLString [static]
    equals(const XMLCh *str1, const XMLCh *str2)XMLString [static]
    equals(const char *str1, const char *str2)XMLString [static]
    equalsN(const XMLCh *str1, const XMLCh *str2, XMLSize_t n)XMLString [static]
    equalsN(const char *str1, const char *str2, XMLSize_t n)XMLString [static]
    findAny(const XMLCh *const toSearch, const XMLCh *const searchList)XMLString [static]
    findAny(XMLCh *const toSearch, const XMLCh *const searchList)XMLString [static]
    fixURI(const XMLCh *const str, XMLCh *const target)XMLString [static]
    hash(const char *const toHash, const XMLSize_t hashModulus)XMLString [static]
    hash(const XMLCh *const toHash, const XMLSize_t hashModulus)XMLString [static]
    hashN(const XMLCh *const toHash, const XMLSize_t numChars, const XMLSize_t hashModulus)XMLString [static]
    indexOf(const char *const toSearch, const char ch)XMLString [static]
    indexOf(const XMLCh *const toSearch, const XMLCh ch)XMLString [static]
    indexOf(const char *const toSearch, const char chToFind, const XMLSize_t fromIndex, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLString [static]
    indexOf(const XMLCh *const toSearch, const XMLCh chToFind, const XMLSize_t fromIndex, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLString [static]
    isAlpha(XMLCh const theChar)XMLString [static]
    isAlphaNum(XMLCh const theChar)XMLString [static]
    isDigit(XMLCh const theChar)XMLString [static]
    isHex(XMLCh const theChar)XMLString [static]
    isInList(const XMLCh *const toFind, const XMLCh *const enumList)XMLString [static]
    isValidEncName(const XMLCh *const name)XMLString [static]
    isValidNOTATION(const XMLCh *const name, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLString [static]
    isWSCollapsed(const XMLCh *const toCheck)XMLString [static]
    isWSReplaced(const XMLCh *const toCheck)XMLString [static]
    lastIndexOf(const char *const toSearch, const char ch)XMLString [static]
    lastIndexOf(const XMLCh *const toSearch, const XMLCh ch)XMLString [static]
    lastIndexOf(const XMLCh ch, const XMLCh *const toSearch, const XMLSize_t toSearchLen)XMLString [static]
    lastIndexOf(const char *const toSearch, const char chToFind, const XMLSize_t fromIndex, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLString [static]
    lastIndexOf(const XMLCh *const toSearch, const XMLCh ch, const XMLSize_t fromIndex, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLString [static]
    lowerCase(XMLCh *const toLowerCase)XMLString [static]
    lowerCaseASCII(XMLCh *const toLowerCase)XMLString [static]
    makeUName(const XMLCh *const pszURI, const XMLCh *const pszName)XMLString [static]
    moveChars(XMLCh *const targetStr, const XMLCh *const srcStr, const XMLSize_t count)XMLString [static]
    parseInt(const XMLCh *const toConvert, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLString [static]
    patternMatch(const XMLCh *const toSearch, const XMLCh *const pattern)XMLString [static]
    regionIMatches(const XMLCh *const str1, const int offset1, const XMLCh *const str2, const int offset2, const XMLSize_t charCount)XMLString [static]
    regionMatches(const XMLCh *const str1, const int offset1, const XMLCh *const str2, const int offset2, const XMLSize_t charCount)XMLString [static]
    release(char **buf, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLString [static]
    release(XMLCh **buf, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLString [static]
    removeChar(const XMLCh *const srcString, const XMLCh &toRemove, XMLBuffer &dstBuffer)XMLString [static]
    removeWS(XMLCh *toConvert, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLString [static]
    replaceTokens(XMLCh *const errText, const XMLSize_t maxChars, const XMLCh *const text1, const XMLCh *const text2, const XMLCh *const text3, const XMLCh *const text4, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLString [static]
    replaceWS(XMLCh *toConvert, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLString [static]
    replicate(const char *const toRep, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLString [static]
    replicate(const XMLCh *const toRep, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLString [static]
    sizeToText(const XMLSize_t toFormat, char *const toFill, const XMLSize_t maxChars, const unsigned int radix, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLString [static]
    sizeToText(const XMLSize_t toFormat, XMLCh *const toFill, const XMLSize_t maxChars, const unsigned int radix, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLString [static]
    startsWith(const char *const toTest, const char *const prefix)XMLString [static]
    startsWith(const XMLCh *const toTest, const XMLCh *const prefix)XMLString [static]
    startsWithI(const char *const toTest, const char *const prefix)XMLString [static]
    startsWithI(const XMLCh *const toTest, const XMLCh *const prefix)XMLString [static]
    stringLen(const char *const src)XMLString [static]
    stringLen(const XMLCh *const src)XMLString [static]
    subString(char *const targetStr, const char *const srcStr, const XMLSize_t startIndex, const XMLSize_t endIndex, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLString [static]
    subString(XMLCh *const targetStr, const XMLCh *const srcStr, const XMLSize_t startIndex, const XMLSize_t endIndex, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLString [static]
    subString(XMLCh *const targetStr, const XMLCh *const srcStr, const XMLSize_t startIndex, const XMLSize_t endIndex, const XMLSize_t srcStrLength, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLString [static]
    textToBin(const XMLCh *const toConvert, unsigned int &toFill, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLString [static]
    tokenizeString(const XMLCh *const tokenizeSrc, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLString [static]
    transcode(const XMLCh *const toTranscode, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLString [static]
    transcode(const XMLCh *const toTranscode, char *const toFill, const XMLSize_t maxChars, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLString [static]
    transcode(const char *const toTranscode, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLString [static]
    transcode(const char *const toTranscode, XMLCh *const toFill, const XMLSize_t maxChars, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLString [static]
    trim(char *const toTrim)XMLString [static]
    trim(XMLCh *const toTrim)XMLString [static]
    upperCase(XMLCh *const toUpperCase)XMLString [static]
    upperCaseASCII(XMLCh *const toUpperCase)XMLString [static]
    XMLPlatformUtils classXMLString [friend]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_eval_0x77.html0000644000175000017500000001355611363620005022176 0ustar borisboris Xerces-C++: Class Members - Enumerator
     

    - w -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLAbstractDoubleFloat.html0000644000175000017500000007422511363620006023666 0ustar borisboris Xerces-C++: XMLAbstractDoubleFloat Class Reference

    XMLAbstractDoubleFloat Class Reference

    Inheritance diagram for XMLAbstractDoubleFloat:

    XMLNumber XMemory XMLDouble XMLFloat

    List of all members.

    Public Types

    enum  LiteralType {
      NegINF, PosINF, NaN, SpecialTypeNum,
      Normal
    }

    Public Member Functions

    virtual ~XMLAbstractDoubleFloat ()
    virtual XMLChgetRawData () const
     Return string representation of the decimal value.
    virtual const XMLChgetFormattedString () const
     Return the original and converted value of the original data.
    virtual int getSign () const
     Returns the sign of this number.
    MemoryManagergetMemoryManager () const
    bool isDataConverted () const
    bool isDataOverflowed () const
    double getValue () const
    LiteralType getType () const

    Static Public Member Functions

    static XMLChgetCanonicalRepresentation (const XMLCh *const rawData, MemoryManager *const memMgr=XMLPlatformUtils::fgMemoryManager)
    static void normalizeDecimalPoint (char *const toNormal)

    Protected Member Functions

     XMLAbstractDoubleFloat (MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
    void init (const XMLCh *const strValue)
    virtual void checkBoundary (char *const strValue)=0
    void convert (char *const strValue)

    Static Protected Member Functions

    static int compareValues (const XMLAbstractDoubleFloat *const lValue, const XMLAbstractDoubleFloat *const rValue, MemoryManager *const manager)
     Compares this object to the specified object.

    Protected Attributes

    double fValue
    LiteralType fType
    bool fDataConverted
    bool fDataOverflowed


    Member Enumeration Documentation

    Enumerator:
    NegINF 
    PosINF 
    NaN 
    SpecialTypeNum 
    Normal 


    Constructor & Destructor Documentation

    virtual XMLAbstractDoubleFloat::~XMLAbstractDoubleFloat (  )  [virtual]

    XMLAbstractDoubleFloat::XMLAbstractDoubleFloat ( MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager  )  [protected]


    Member Function Documentation

    static XMLCh* XMLAbstractDoubleFloat::getCanonicalRepresentation ( const XMLCh *const   rawData,
    MemoryManager *const   memMgr = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    virtual XMLCh* XMLAbstractDoubleFloat::getRawData (  )  const [virtual]

    Return string representation of the decimal value.

    A decimal point will be included as necessary. Similar to toString above, but the internal buffer is returned directly, user is not required to delete the returned buffer

    Implements XMLNumber.

    virtual const XMLCh* XMLAbstractDoubleFloat::getFormattedString (  )  const [virtual]

    Return the original and converted value of the original data.

    (applicable to double/float)

    The internal buffer is returned directly, user is not required to delete the returned buffer

    Implements XMLNumber.

    virtual int XMLAbstractDoubleFloat::getSign (  )  const [virtual]

    Returns the sign of this number.

    -1 negative 0 zero 1 positive

    Implements XMLNumber.

    MemoryManager * XMLAbstractDoubleFloat::getMemoryManager (  )  const

    bool XMLAbstractDoubleFloat::isDataConverted (  )  const

    References fDataConverted.

    bool XMLAbstractDoubleFloat::isDataOverflowed (  )  const

    References fDataOverflowed.

    double XMLAbstractDoubleFloat::getValue (  )  const

    References fValue.

    XMLAbstractDoubleFloat::LiteralType XMLAbstractDoubleFloat::getType (  )  const

    References fType.

    static void XMLAbstractDoubleFloat::normalizeDecimalPoint ( char *const   toNormal  )  [static]

    void XMLAbstractDoubleFloat::init ( const XMLCh *const   strValue  )  [protected]

    static int XMLAbstractDoubleFloat::compareValues ( const XMLAbstractDoubleFloat *const   lValue,
    const XMLAbstractDoubleFloat *const   rValue,
    MemoryManager *const   manager 
    ) [static, protected]

    Compares this object to the specified object.

    The result is true if and only if the argument is not null and is an XMLAbstractDoubleFloat object that contains the same int value as this object.

    Parameters:
    lValue the object to compare with.
    rValue the object to compare against.
    manager The MemoryManager to use to allocate objects
    Returns:
    true if the objects are the same; false otherwise.

    Referenced by XMLFloat::compareValues(), and XMLDouble::compareValues().

    virtual void XMLAbstractDoubleFloat::checkBoundary ( char *const   strValue  )  [protected, pure virtual]

    Implemented in XMLDouble, and XMLFloat.

    void XMLAbstractDoubleFloat::convert ( char *const   strValue  )  [protected]


    Member Data Documentation

    double XMLAbstractDoubleFloat::fValue [protected]

    Referenced by getValue().


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMStringList.html0000644000175000017500000002716511363620005022063 0ustar borisboris Xerces-C++: DOMStringList Class Reference

    DOMStringList Class Reference

    The DOMStringList interface provides the abstraction of an ordered collection of strings, without defining or constraining how this collection is implemented. More...

    List of all members.

    Public Member Functions

    Destructor
    virtual ~DOMStringList ()
     Destructor.
    Functions introduced in DOM Level 3
    virtual const XMLChitem (XMLSize_t index) const =0
     Returns the index item in the collection.
    virtual XMLSize_t getLength () const =0
     Returns the number of strings in the list.
    virtual bool contains (const XMLCh *) const =0
     Test if a string is part of this DOMStringList.
    Non-standard Extension
    virtual void release ()=0
     Called to indicate that this list is no longer in use and that the implementation may relinquish any resources associated with it and its associated children.

    Protected Member Functions

    Hidden constructors
     DOMStringList ()


    Detailed Description

    The DOMStringList interface provides the abstraction of an ordered collection of strings, without defining or constraining how this collection is implemented.

    The items in the DOMStringList are accessible via an integral index, starting from 0.


    Constructor & Destructor Documentation

    DOMStringList::DOMStringList (  )  [protected]

    virtual DOMStringList::~DOMStringList (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual const XMLCh* DOMStringList::item ( XMLSize_t  index  )  const [pure virtual]

    Returns the index item in the collection.

    If index is greater than or equal to the number of strings in the list, this returns null.

    Parameters:
    index Index into the collection.
    Returns:
    The string at the indexth position in the DOMStringList, or null if that is not a valid index.
    Since:
    DOM Level 3

    virtual XMLSize_t DOMStringList::getLength (  )  const [pure virtual]

    Returns the number of strings in the list.

    The range of valid child node indices is 0 to length-1 inclusive.

    Since:
    DOM Level 3

    virtual bool DOMStringList::contains ( const XMLCh  )  const [pure virtual]

    Test if a string is part of this DOMStringList.

    Returns:
    true if the string has been found, false otherwise.
    Since:
    DOM Level 3

    virtual void DOMStringList::release (  )  [pure virtual]

    Called to indicate that this list is no longer in use and that the implementation may relinquish any resources associated with it and its associated children.

    Access to a released object will lead to unexpected result.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/globals_0x75.html0000644000175000017500000000550211363620007020572 0ustar borisboris Xerces-C++: Class Members
    Here is a list of all file members with links to the files they belong to:

    - u -


    Generated on Wed Apr 21 17:55:51 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMText.png0000644000175000017500000000127711363620005020521 0ustar borisboris‰PNG  IHDRÀß¡€PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfUIDAThíš]nà Ǔ—>ßÀ>Á´I;Ïžzÿ#Ì_š¤KêÚµ& _?ŒAþ3ÃG_zÞ©+`!gÈ$.€5ÀA€Ž” yDâ§@ “ƒ¸Fì}5ØTÊRP_¿ ¨À³ëÀH©°¾³ d±ÑÕ9À|šv¡-àIÝ?ë;é´×áæ€ó×§óù΀Ø… À‹B7> `!¹¼–.²ìÁ ÀB*"mÈ› ð¯%àR*JþD y’\,d'ó$«Ù˜Ò€é-ŹfR ‘²íw FZ§,âì!,UWz·ÊB¼M]ëKkÝ@~ÊœØXÂ…TD*j7°Z¬ ©Hn,&Õœ'ñ¦µË9à*vgBzœ£€{B7Þº1@ðz€Ô—¦aê³0WâÛaäläÂ8²¯Kïc)ÙÈ©w0L2ù4’TKŽ؈lŒTµ[PÆ+} Ód¶¾à¥Ã€Ùîò)ê8Àva:º -)OèþYßI÷ÿÓºñv!@ðb€<F¼ñCL~¡TƒczÒo¯ÇùrbK4@‰uIJãkV’ÃÜÃ+ üF,½,D9ô¨G‰H®`W:3ü¢­eo»ÝÙlØÚJP0ßZ]ìfk¨'Áƒy²ÂÔÀٿ螥k(DšwaPû TçªspÐp¤îù.̀ÿè7~#gˆþ|K!IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classXMLContentModel.png0000644000175000017500000000064411363620006022207 0ustar borisboris‰PNG  IHDRuPÕK' PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf:IDATX…í”Q’ƒ †ÉË>'ÜOÐi/ä“÷?Âþ ¢²t[ ³cw HÈ—„€º[s¹¸ëÔZëÑÆÐÀ­0 ]l@ ˆãä½×ˆž°PSÄ(¼ØKU,6º³Ö¶Zå]˜D2¶HÞ/û5ÖëdcC5k|s ÏתD¿–ç©Øî+÷ªƒ-ïY=[¸}£ïè?°=ÿ؇e~¼üWì×r»,ó)ìYyì`;ØÁžÇJsaÇÍA}$KÚÔ“ÊDÒ*mj´Ï(uѯö(©pÉB$ÏYõð=‰#ˆ%²˜9!v–Ô^7ëPeÝ «E†Å™Êï¬vˉu9K9k~u­`qó"k†WÖ„ÇýÞgy}ÏXþ™+N¡X ĖP²˜×óU‘ž­=¼¦IbÞ"{/Ï÷j°oÎvüc¿0ãâÂJ¯R7IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/XMLNotationDecl_8hpp.html0000644000175000017500000000476611363620005022300 0ustar borisboris Xerces-C++: XMLNotationDecl.hpp File Reference

    XMLNotationDecl.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLNotationDecl
     This class represents the core information about a notation declaration that all validators must at least support. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_XMLNOTATIONDECL_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XMLNOTATIONDECL_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XSModelGroup_8hpp.html0000644000175000017500000000434111363620005021651 0ustar borisboris Xerces-C++: XSModelGroup.hpp File Reference

    XSModelGroup.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XSModelGroup

    Defines

    #define XERCESC_INCLUDE_GUARD_XSMODELGROUP_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XSMODELGROUP_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_func_0x65.html0000644000175000017500000002513711363620005022175 0ustar borisboris Xerces-C++: Class Members - Functions
     

    - e -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/PSVIUni_8hpp-source.html0000644000175000017500000017305311363620004022062 0ustar borisboris Xerces-C++: PSVIUni.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLGrammarDescription_8hpp.html0000644000175000017500000000447311363620005023502 0ustar borisboris Xerces-C++: XMLGrammarDescription.hpp File Reference

    XMLGrammarDescription.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLGrammarDescription

    Defines

    #define XERCESC_INCLUDE_GUARD_XMLGRAMMARDESCRIPTION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XMLGRAMMARDESCRIPTION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/Xerces__autoconf__config_8borland_8hpp-source.html0000644000175000017500000004531711363620004027371 0ustar borisboris Xerces-C++: Xerces_autoconf_config.borland.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMXPathExpression-members.html0000644000175000017500000000520211363620006024502 0ustar borisboris Xerces-C++: Member List

    DOMXPathExpression Member List

    This is the complete list of members for DOMXPathExpression, including all inherited members.

    DOMXPathExpression()DOMXPathExpression [protected]
    evaluate(const DOMNode *contextNode, DOMXPathResult::ResultType type, DOMXPathResult *result) const =0DOMXPathExpression [pure virtual]
    release()=0DOMXPathExpression [pure virtual]
    ~DOMXPathExpression()DOMXPathExpression [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/StDOMNode_8hpp-source.html0000644000175000017500000003303411363620004022353 0ustar borisboris Xerces-C++: StDOMNode.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_0x7e.html0000644000175000017500000005731311363620005021244 0ustar borisboris Xerces-C++: Class Members
    Here is a list of all class members with links to the classes they belong to:

    - ~ -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMRangeException_8hpp.html0000644000175000017500000000523111363620005022573 0ustar borisboris Xerces-C++: DOMRangeException.hpp File Reference

    DOMRangeException.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMRangeException
     Range operations may throw a DOMRangeException as specified in their method descriptions. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMRANGEEXCEPTION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMRANGEEXCEPTION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_vars_0x6d.html0000644000175000017500000000516211363620005022270 0ustar borisboris Xerces-C++: Class Members - Variables
     

    - m -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DeclHandler_8hpp.html0000644000175000017500000000460711363620005021473 0ustar borisboris Xerces-C++: DeclHandler.hpp File Reference

    DeclHandler.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DeclHandler
     Receive notification of DTD declaration events. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DECLHANDLER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DECLHANDLER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XSAnnotation_8hpp.html0000644000175000017500000000434111363620005021706 0ustar borisboris Xerces-C++: XSAnnotation.hpp File Reference

    XSAnnotation.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XSAnnotation

    Defines

    #define XERCESC_INCLUDE_GUARD_XSANNOTATION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XSANNOTATION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLResourceIdentifier_8hpp-source.html0000644000175000017500000004455011363620005025000 0ustar borisboris Xerces-C++: XMLResourceIdentifier.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMError_8hpp.html0000644000175000017500000000471611363620005020760 0ustar borisboris Xerces-C++: DOMError.hpp File Reference

    DOMError.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMError
     DOMError is an interface that describes an error. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMERROR_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMERROR_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLDouble_8hpp-source.html0000644000175000017500000002343511363620005022417 0ustar borisboris Xerces-C++: XMLDouble.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMLSException.html0000644000175000017500000002520211363620005022144 0ustar borisboris Xerces-C++: DOMLSException Class Reference

    DOMLSException Class Reference

    Inheritance diagram for DOMLSException:

    DOMException

    List of all members.

    Public Types

    Public Contants
    enum  LSExceptionCode { PARSE_ERR = 81, SERIALIZE_ERR = 82 }
     ExceptionCode. More...

    Public Member Functions

    Constructors
     DOMLSException ()
     Default constructor for DOMLSException.
     DOMLSException (short code, short messageCode, MemoryManager *const memoryManager)
     Constructor which takes an error code and a message.
     DOMLSException (const DOMLSException &other)
     Copy constructor.
    Destructor.
    virtual ~DOMLSException ()
     Destructor for DOMLSException.


    Member Enumeration Documentation

    ExceptionCode.

    PARSE_ERR: If an attempt was made to load a document, or an XML Fragment, using DOMLSParser and the processing has been stopped.

    SERIALIZE_ERR: If an attempt was made to serialize a Node using LSSerializer and the processing has been stopped.

    Since:
    DOM Level 3
    Enumerator:
    PARSE_ERR 
    SERIALIZE_ERR 


    Constructor & Destructor Documentation

    DOMLSException::DOMLSException (  ) 

    Default constructor for DOMLSException.

    DOMLSException::DOMLSException ( short  code,
    short  messageCode,
    MemoryManager *const   memoryManager 
    )

    Constructor which takes an error code and a message.

    Parameters:
    code The error code which indicates the exception
    messageCode The string containing the error message
    memoryManager The memory manager used to (de)allocate memory

    DOMLSException::DOMLSException ( const DOMLSException other  ) 

    Copy constructor.

    Parameters:
    other The object to be copied.

    virtual DOMLSException::~DOMLSException (  )  [virtual]

    Destructor for DOMLSException.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/PanicHandler_8hpp-source.html0000644000175000017500000002134711363620004023153 0ustar borisboris Xerces-C++: PanicHandler.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classBinInputStream.html0000644000175000017500000002364611363620005022325 0ustar borisboris Xerces-C++: BinInputStream Class Reference

    BinInputStream Class Reference

    Inheritance diagram for BinInputStream:

    XMemory BinFileInputStream BinMemInputStream

    List of all members.

    Public Member Functions

    virtual ~BinInputStream ()
    virtual XMLFilePos curPos () const =0
    virtual XMLSize_t readBytes (XMLByte *const toFill, const XMLSize_t maxToRead)=0
    virtual const XMLChgetContentType () const =0
     Return the "out-of-band" content type for the data supplied by this input stream in the form of the media-type production (mime type with optional parameters such as encoding) as defined by the HTTP 1.1 specification.

    Protected Member Functions

     BinInputStream ()


    Constructor & Destructor Documentation

    virtual BinInputStream::~BinInputStream (  )  [virtual]

    BinInputStream::BinInputStream (  )  [protected]


    Member Function Documentation

    virtual XMLFilePos BinInputStream::curPos (  )  const [pure virtual]

    Implemented in BinFileInputStream, and BinMemInputStream.

    virtual XMLSize_t BinInputStream::readBytes ( XMLByte *const   toFill,
    const XMLSize_t  maxToRead 
    ) [pure virtual]

    Implemented in BinFileInputStream, and BinMemInputStream.

    virtual const XMLCh* BinInputStream::getContentType (  )  const [pure virtual]

    Return the "out-of-band" content type for the data supplied by this input stream in the form of the media-type production (mime type with optional parameters such as encoding) as defined by the HTTP 1.1 specification.

    If no such content type is provided for the data, 0 is returned. This function is expected to return the correct value at any time after the construction of the stream.

    An example of the stream that may return non-0 from this function is an HTTP stream with the value returned taken from the "Content-Type" HTTP header. Note also that if the encoding of the data is known to the application by some other means then the setEncoding function in the InputSource object should be used instead. The getContentType function should only be used to return information that is intrinsic to the stream.

    Returns:
    The content type, or 0 if one is not available.

    Implemented in BinFileInputStream, and BinMemInputStream.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLValidator_8hpp.html0000644000175000017500000000464111363620005021632 0ustar borisboris Xerces-C++: XMLValidator.hpp File Reference

    XMLValidator.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLValidator
     This abstract class provides the interface for all validators. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_XMLVALIDATOR_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XMLVALIDATOR_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLFileMgr.html0000644000175000017500000005717211363620006021331 0ustar borisboris Xerces-C++: XMLFileMgr Class Reference

    XMLFileMgr Class Reference

    Inheritance diagram for XMLFileMgr:

    XMemory

    List of all members.

    Public Member Functions

     XMLFileMgr ()
    virtual ~XMLFileMgr ()
    virtual FileHandle fileOpen (const XMLCh *path, bool toWrite, MemoryManager *const manager)=0
    virtual FileHandle fileOpen (const char *path, bool toWrite, MemoryManager *const manager)=0
    virtual FileHandle openStdIn (MemoryManager *const manager)=0
    virtual void fileClose (FileHandle f, MemoryManager *const manager)=0
    virtual void fileReset (FileHandle f, MemoryManager *const manager)=0
    virtual XMLFilePos curPos (FileHandle f, MemoryManager *const manager)=0
    virtual XMLFilePos fileSize (FileHandle f, MemoryManager *const manager)=0
    virtual XMLSize_t fileRead (FileHandle f, XMLSize_t byteCount, XMLByte *buffer, MemoryManager *const manager)=0
    virtual void fileWrite (FileHandle f, XMLSize_t byteCount, const XMLByte *buffer, MemoryManager *const manager)=0
    virtual XMLChgetFullPath (const XMLCh *const srcPath, MemoryManager *const manager)=0
    virtual XMLChgetCurrentDirectory (MemoryManager *const manager)=0
    virtual bool isRelative (const XMLCh *const toCheck, MemoryManager *const manager)=0


    Constructor & Destructor Documentation

    XMLFileMgr::XMLFileMgr (  ) 

    virtual XMLFileMgr::~XMLFileMgr (  )  [virtual]


    Member Function Documentation

    virtual FileHandle XMLFileMgr::fileOpen ( const XMLCh path,
    bool  toWrite,
    MemoryManager *const   manager 
    ) [pure virtual]

    virtual FileHandle XMLFileMgr::fileOpen ( const char *  path,
    bool  toWrite,
    MemoryManager *const   manager 
    ) [pure virtual]

    virtual FileHandle XMLFileMgr::openStdIn ( MemoryManager *const   manager  )  [pure virtual]

    virtual void XMLFileMgr::fileClose ( FileHandle  f,
    MemoryManager *const   manager 
    ) [pure virtual]

    virtual void XMLFileMgr::fileReset ( FileHandle  f,
    MemoryManager *const   manager 
    ) [pure virtual]

    virtual XMLFilePos XMLFileMgr::curPos ( FileHandle  f,
    MemoryManager *const   manager 
    ) [pure virtual]

    virtual XMLFilePos XMLFileMgr::fileSize ( FileHandle  f,
    MemoryManager *const   manager 
    ) [pure virtual]

    virtual XMLSize_t XMLFileMgr::fileRead ( FileHandle  f,
    XMLSize_t  byteCount,
    XMLByte buffer,
    MemoryManager *const   manager 
    ) [pure virtual]

    virtual void XMLFileMgr::fileWrite ( FileHandle  f,
    XMLSize_t  byteCount,
    const XMLByte buffer,
    MemoryManager *const   manager 
    ) [pure virtual]

    virtual XMLCh* XMLFileMgr::getFullPath ( const XMLCh *const   srcPath,
    MemoryManager *const   manager 
    ) [pure virtual]

    virtual XMLCh* XMLFileMgr::getCurrentDirectory ( MemoryManager *const   manager  )  [pure virtual]

    virtual bool XMLFileMgr::isRelative ( const XMLCh *const   toCheck,
    MemoryManager *const   manager 
    ) [pure virtual]


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMPSVITypeInfo_8hpp.html0000644000175000017500000000571011363620005022121 0ustar borisboris Xerces-C++: DOMPSVITypeInfo.hpp File Reference

    DOMPSVITypeInfo.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMPSVITypeInfo
     The DOMPSVITypeInfo interface represent the PSVI info used by DOMElement or DOMAttr nodes, specified in the schemas associated with the document. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMPSVITYPEINFO_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMPSVITYPEINFO_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSSimpleTypeDefinition.html0000644000175000017500000020233511363620006023773 0ustar borisboris Xerces-C++: XSSimpleTypeDefinition Class Reference

    XSSimpleTypeDefinition Class Reference

    Inheritance diagram for XSSimpleTypeDefinition:

    XSTypeDefinition XSObject XMemory

    List of all members.

    Public Types

    enum  VARIETY { VARIETY_ABSENT = 0, VARIETY_ATOMIC = 1, VARIETY_LIST = 2, VARIETY_UNION = 3 }
    enum  FACET {
      FACET_NONE = 0, FACET_LENGTH = 1, FACET_MINLENGTH = 2, FACET_MAXLENGTH = 4,
      FACET_PATTERN = 8, FACET_WHITESPACE = 16, FACET_MAXINCLUSIVE = 32, FACET_MAXEXCLUSIVE = 64,
      FACET_MINEXCLUSIVE = 128, FACET_MININCLUSIVE = 256, FACET_TOTALDIGITS = 512, FACET_FRACTIONDIGITS = 1024,
      FACET_ENUMERATION = 2048
    }
    enum  ORDERING { ORDERED_FALSE = 0, ORDERED_PARTIAL = 1, ORDERED_TOTAL = 2 }

    Public Member Functions

    Constructors
     XSSimpleTypeDefinition (DatatypeValidator *const datatypeValidator, VARIETY stVariety, XSTypeDefinition *const xsBaseType, XSSimpleTypeDefinition *const primitiveOrItemType, XSSimpleTypeDefinitionList *const memberTypes, XSAnnotation *headAnnot, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     The default constructor.
    Destructor
     ~XSSimpleTypeDefinition ()
    XSSimpleTypeDefinition methods
    VARIETY getVariety () const
     [variety]: one of {atomic, list, union} or absent
    XSSimpleTypeDefinitiongetPrimitiveType ()
     If variety is atomic the primitive type definition (a built-in primitive datatype definition or the simple ur-type definition) is available, otherwise null.
    XSSimpleTypeDefinitiongetItemType ()
     If variety is list the item type definition (an atomic or union simple type definition) is available, otherwise null.
    XSSimpleTypeDefinitionListgetMemberTypes () const
     If variety is union the list of member type definitions (a non-empty sequence of simple type definitions) is available, otherwise null.
    int getDefinedFacets () const
     [facets]: get all facets defined on this type.
    bool isDefinedFacet (FACET facetName)
     Convenience method.
    int getFixedFacets () const
     [facets]: get all facets defined and fixed on this type.
    bool isFixedFacet (FACET facetName)
     Convenience method.
    const XMLChgetLexicalFacetValue (FACET facetName)
     Convenience method.
    StringListgetLexicalEnumeration ()
     Returns a list of enumeration values.
    StringListgetLexicalPattern ()
     Returns a list of pattern values.
    ORDERING getOrdered () const
     Fundamental Facet: ordered.
    bool getFinite () const
     Fundamental Facet: cardinality.
    bool getBounded () const
     Fundamental Facet: bounded.
    bool getNumeric () const
     Fundamental Facet: numeric.
    XSAnnotationListgetAnnotations ()
     Optional.
    XSFacetListgetFacets ()
    XSMultiValueFacetListgetMultiValueFacets ()
    const XMLChgetName () const
     The name of type NCName of this declaration as defined in XML Namespaces.
    const XMLChgetNamespace ()
     The [target namespace] of this object, or null if it is unspecified.
    XSNamespaceItemgetNamespaceItem ()
     A namespace schema information item corresponding to the target namespace of the component, if it's globally declared; or null otherwise.
    bool getAnonymous () const
     A boolean that specifies if the type definition is anonymous.
    XSTypeDefinitiongetBaseType ()
     {base type definition}: either a simple type definition or a complex type definition.
    bool derivedFromType (const XSTypeDefinition *const ancestorType)
     Convenience method: check if this type is derived from the given ancestorType.
    DatatypeValidator * getDatatypeValidator () const

    Protected Attributes

    int fDefinedFacets
    int fFixedFacets
    VARIETY fVariety
    DatatypeValidator * fDatatypeValidator
    XSFacetListfXSFacetList
    XSMultiValueFacetListfXSMultiValueFacetList
    StringListfPatternList
    XSSimpleTypeDefinitionfPrimitiveOrItemType
    XSSimpleTypeDefinitionListfMemberTypes
    XSAnnotationListfXSAnnotationList

    Friends

    class XSObjectFactory


    Member Enumeration Documentation

    Enumerator:
    VARIETY_ABSENT  The variety is absent for the anySimpleType definition.
    VARIETY_ATOMIC  Atomic type.
    VARIETY_LIST  List type.
    VARIETY_UNION  Union type.

    Enumerator:
    FACET_NONE  No facets defined.
    FACET_LENGTH  4.3.1 Length
    FACET_MINLENGTH  4.3.2 minLength.
    FACET_MAXLENGTH  4.3.3 maxLength.
    FACET_PATTERN  4.3.4 pattern.
    FACET_WHITESPACE  4.3.5 whitespace.
    FACET_MAXINCLUSIVE  4.3.7 maxInclusive.
    FACET_MAXEXCLUSIVE  4.3.9 maxExclusive.
    FACET_MINEXCLUSIVE  4.3.9 minExclusive.
    FACET_MININCLUSIVE  4.3.10 minInclusive.
    FACET_TOTALDIGITS  4.3.11 totalDigits .
    FACET_FRACTIONDIGITS  4.3.12 fractionDigits.
    FACET_ENUMERATION  4.3.5 enumeration.

    Enumerator:
    ORDERED_FALSE  A constant defined for the 'ordered' fundamental facet: Not ordered.
    ORDERED_PARTIAL  A constant defined for the 'ordered' fundamental facet: partially ordered.
    ORDERED_TOTAL  A constant defined for the 'ordered' fundamental facet: total ordered.


    Constructor & Destructor Documentation

    XSSimpleTypeDefinition::XSSimpleTypeDefinition ( DatatypeValidator *const   datatypeValidator,
    VARIETY  stVariety,
    XSTypeDefinition *const   xsBaseType,
    XSSimpleTypeDefinition *const   primitiveOrItemType,
    XSSimpleTypeDefinitionList *const   memberTypes,
    XSAnnotation headAnnot,
    XSModel *const   xsModel,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    The default constructor.

    Parameters:
    datatypeValidator 
    stVariety 
    xsBaseType 
    primitiveOrItemType 
    memberTypes 
    headAnnot 
    xsModel 
    manager The configurable memory manager

    XSSimpleTypeDefinition::~XSSimpleTypeDefinition (  ) 


    Member Function Documentation

    XSSimpleTypeDefinition::VARIETY XSSimpleTypeDefinition::getVariety (  )  const

    [variety]: one of {atomic, list, union} or absent

    References fVariety.

    XSSimpleTypeDefinition * XSSimpleTypeDefinition::getPrimitiveType (  ) 

    If variety is atomic the primitive type definition (a built-in primitive datatype definition or the simple ur-type definition) is available, otherwise null.

    References fPrimitiveOrItemType, fVariety, and VARIETY_ATOMIC.

    XSSimpleTypeDefinition * XSSimpleTypeDefinition::getItemType (  ) 

    If variety is list the item type definition (an atomic or union simple type definition) is available, otherwise null.

    References fPrimitiveOrItemType, fVariety, and VARIETY_LIST.

    XSSimpleTypeDefinitionList * XSSimpleTypeDefinition::getMemberTypes (  )  const

    If variety is union the list of member type definitions (a non-empty sequence of simple type definitions) is available, otherwise null.

    References fMemberTypes.

    int XSSimpleTypeDefinition::getDefinedFacets (  )  const

    [facets]: get all facets defined on this type.

    The value is a bit combination of FACET_XXX constants of all defined facets.

    References fDefinedFacets.

    bool XSSimpleTypeDefinition::isDefinedFacet ( FACET  facetName  ) 

    Convenience method.

    [Facets]: check whether a facet is defined on this type.

    Parameters:
    facetName The name of the facet.
    Returns:
    True if the facet is defined, false otherwise.

    int XSSimpleTypeDefinition::getFixedFacets (  )  const

    [facets]: get all facets defined and fixed on this type.

    References fFixedFacets.

    bool XSSimpleTypeDefinition::isFixedFacet ( FACET  facetName  ) 

    Convenience method.

    [Facets]: check whether a facet is defined and fixed on this type.

    Parameters:
    facetName The name of the facet.
    Returns:
    True if the facet is fixed, false otherwise.

    const XMLCh* XSSimpleTypeDefinition::getLexicalFacetValue ( FACET  facetName  ) 

    Convenience method.

    Returns a value of a single constraining facet for this simple type definition. This method must not be used to retrieve values for enumeration and pattern facets.

    Parameters:
    facetName The name of the facet, i.e. FACET_LENGTH, FACET_TOTALDIGITS (see XSConstants).To retrieve value for pattern or enumeration, see enumeration and pattern.
    Returns:
    A value of the facet specified in facetName for this simple type definition or null.

    StringList* XSSimpleTypeDefinition::getLexicalEnumeration (  ) 

    Returns a list of enumeration values.

    StringList * XSSimpleTypeDefinition::getLexicalPattern (  ) 

    Returns a list of pattern values.

    References fPatternList.

    ORDERING XSSimpleTypeDefinition::getOrdered (  )  const

    Fundamental Facet: ordered.

    bool XSSimpleTypeDefinition::getFinite (  )  const

    Fundamental Facet: cardinality.

    bool XSSimpleTypeDefinition::getBounded (  )  const

    Fundamental Facet: bounded.

    bool XSSimpleTypeDefinition::getNumeric (  )  const

    Fundamental Facet: numeric.

    XSAnnotationList * XSSimpleTypeDefinition::getAnnotations (  ) 

    Optional.

    A set of [annotation]s.

    References fXSAnnotationList.

    XSFacetList * XSSimpleTypeDefinition::getFacets (  ) 

    Returns:
    list of constraining facets. This method must not be used to retrieve values for enumeration and pattern facets.

    References fXSFacetList.

    XSMultiValueFacetList * XSSimpleTypeDefinition::getMultiValueFacets (  ) 

    Returns:
    list of enumeration and pattern facets.

    References fXSMultiValueFacetList.

    const XMLCh* XSSimpleTypeDefinition::getName (  )  const [virtual]

    The name of type NCName of this declaration as defined in XML Namespaces.

    Implements XSTypeDefinition.

    const XMLCh* XSSimpleTypeDefinition::getNamespace (  )  [virtual]

    The [target namespace] of this object, or null if it is unspecified.

    Implements XSTypeDefinition.

    XSNamespaceItem* XSSimpleTypeDefinition::getNamespaceItem (  )  [virtual]

    A namespace schema information item corresponding to the target namespace of the component, if it's globally declared; or null otherwise.

    Implements XSTypeDefinition.

    bool XSSimpleTypeDefinition::getAnonymous (  )  const [virtual]

    A boolean that specifies if the type definition is anonymous.

    Convenience attribute.

    Implements XSTypeDefinition.

    XSTypeDefinition* XSSimpleTypeDefinition::getBaseType (  )  [virtual]

    {base type definition}: either a simple type definition or a complex type definition.

    Implements XSTypeDefinition.

    bool XSSimpleTypeDefinition::derivedFromType ( const XSTypeDefinition *const   ancestorType  )  [virtual]

    Convenience method: check if this type is derived from the given ancestorType.

    Parameters:
    ancestorType An ancestor type definition.
    Returns:
    Return true if this type is derived from ancestorType.

    Implements XSTypeDefinition.

    DatatypeValidator * XSSimpleTypeDefinition::getDatatypeValidator (  )  const

    References fDatatypeValidator.


    Friends And Related Function Documentation

    friend class XSObjectFactory [friend]


    Member Data Documentation

    DatatypeValidator* XSSimpleTypeDefinition::fDatatypeValidator [protected]

    Referenced by getDatatypeValidator().


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/SAXParseException_8hpp-source.html0000644000175000017500000002526011363620004024126 0ustar borisboris Xerces-C++: SAXParseException.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMError-members.html0000644000175000017500000001036711363620005022476 0ustar borisboris Xerces-C++: Member List

    DOMError Member List

    This is the complete list of members for DOMError, including all inherited members.

    DOM_SEVERITY_ERROR enum valueDOMError
    DOM_SEVERITY_FATAL_ERROR enum valueDOMError
    DOM_SEVERITY_WARNING enum valueDOMError
    DOMError()DOMError [protected]
    ErrorSeverity enum nameDOMError
    getLocation() const =0DOMError [pure virtual]
    getMessage() const =0DOMError [pure virtual]
    getRelatedData() const =0DOMError [pure virtual]
    getRelatedException() const =0DOMError [pure virtual]
    getSeverity() const =0DOMError [pure virtual]
    getType() const =0DOMError [pure virtual]
    ~DOMError()DOMError [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_0x75.html0000644000175000017500000003110011363620005021146 0ustar borisboris Xerces-C++: Class Members
    Here is a list of all class members with links to the classes they belong to:

    - u -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/BinMemInputStream_8hpp.html0000644000175000017500000000442311363620005022665 0ustar borisboris Xerces-C++: BinMemInputStream.hpp File Reference

    BinMemInputStream.hpp File Reference

    Go to the source code of this file.

    Classes

    class  BinMemInputStream

    Defines

    #define XERCESC_INCLUDE_GUARD_BINMEMINPUTSTREAM_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_BINMEMINPUTSTREAM_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDocumentHandler-members.html0000644000175000017500000001067511363620005024123 0ustar borisboris Xerces-C++: Member List

    DocumentHandler Member List

    This is the complete list of members for DocumentHandler, including all inherited members.

    characters(const XMLCh *const chars, const XMLSize_t length)=0DocumentHandler [pure virtual]
    DocumentHandler()DocumentHandler
    endDocument()=0DocumentHandler [pure virtual]
    endElement(const XMLCh *const name)=0DocumentHandler [pure virtual]
    ignorableWhitespace(const XMLCh *const chars, const XMLSize_t length)=0DocumentHandler [pure virtual]
    processingInstruction(const XMLCh *const target, const XMLCh *const data)=0DocumentHandler [pure virtual]
    resetDocument()=0DocumentHandler [pure virtual]
    setDocumentLocator(const Locator *const locator)=0DocumentHandler [pure virtual]
    startDocument()=0DocumentHandler [pure virtual]
    startElement(const XMLCh *const name, AttributeList &attrs)=0DocumentHandler [pure virtual]
    ~DocumentHandler()DocumentHandler [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMRange_8hpp-source.html0000644000175000017500000004307111363620004022215 0ustar borisboris Xerces-C++: DOMRange.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_func_0x6c.html0000644000175000017500000001570511363620005022253 0ustar borisboris Xerces-C++: Class Members - Functions
     

    - l -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLFormatter_8hpp-source.html0000644000175000017500000012673011363620005023152 0ustar borisboris Xerces-C++: XMLFormatter.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMImplementationLS.png0000644000175000017500000000074511363620005023020 0ustar borisboris‰PNG  IHDR‹PÛΛ PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf{IDATX…í•KnÄ †ñfÖØ7€ŒZ©çé*÷?Bmca’VHÍHXšßcc<¥8aÞy7À&¦ƒDþ+"LÕèÖ ‰¯B@_0âU˜}LzÓ„ä ãù cò"„+YAÄ[e¦ãS«àÀY SHÆ•tÚ=øcL.Í’|êkÂÄi1ÛŒ€i ê5‡-fïl^0ezgûyYÜc7åKÝz6›¾SLõnVL¹)0¯hä| ¹¥z7»ù]{̯lbÎ0ƒ>0}{ŒXï0Ìò}#ÌcYn„¹ÙMMÌÄLÌÄLÌÄüæ³k_ý’§ûˆlb.`)ÆÀ8‘rAh;t„štÁh¿Hà:ìbŽVC6&ÈŠ…Ë"zbEKÓ1&hW .œÐ4P/#1”tèbr©‰y=µ:<ÄD¢ †?/9Ä¿`Öé£íçt5ù¦r1UgSoêS½›SnJ[4ˆrS„%l0»Ö>C{'Ìe›˜3LÿëqÁž?Joü Xerces-C++: DOMEntityReference.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classEntityResolver.html0000644000175000017500000003017711363620006022415 0ustar borisboris Xerces-C++: EntityResolver Class Reference

    EntityResolver Class Reference

    Basic interface for resolving entities. More...

    Inheritance diagram for EntityResolver:

    DefaultHandler HandlerBase

    List of all members.

    Public Member Functions

    Constructors and Destructor
     EntityResolver ()
     Default Constructor.
    virtual ~EntityResolver ()
     Destructor.
    The EntityResolver interface
    virtual InputSourceresolveEntity (const XMLCh *const publicId, const XMLCh *const systemId)=0
     Allow the application to resolve external entities.


    Detailed Description

    Basic interface for resolving entities.

    If a SAX application needs to implement customized handling for external entities, it must implement this interface and register an instance with the SAX parser using the parser's setEntityResolver method.

    The parser will then allow the application to intercept any external entities (including the external DTD subset and external parameter entities, if any) before including them.

    Many SAX applications will not need to implement this interface, but it will be especially useful for applications that build XML documents from databases or other specialised input sources, or for applications that use URI types other than URLs.

    The following resolver would provide the application with a special character stream for the entity with the system identifier "http://www.myhost.com/today":

    #include <xercesc/sax/EntityResolver.hpp>
    #include <xercesc/sax/InputSource.hpp>

    class MyResolver : public EntityResolver {
    public:
      InputSource resolveEntity (const XMLCh* const publicId, const XMLCh* const systemId);
      
    ...
       };
     
     MyResolver::resolveEntity {
      if (XMLString::compareString(systemId, "http://www.myhost.com/today")) {
       MyReader* reader = new MyReader();
       return new InputSource(reader);
      } else {
       return null;
      }
     }

    The application can also use this interface to redirect system identifiers to local URIs or to look up replacements in a catalog (possibly by using the public identifier).

    The HandlerBase class implements the default behaviour for this interface, which is simply always to return null (to request that the parser use the default system identifier).

    See also:
    Parser::setEntityResolver

    InputSource::InputSource

    HandlerBase::HandlerBase


    Constructor & Destructor Documentation

    EntityResolver::EntityResolver (  ) 

    Default Constructor.

    virtual EntityResolver::~EntityResolver (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual InputSource* EntityResolver::resolveEntity ( const XMLCh *const   publicId,
    const XMLCh *const   systemId 
    ) [pure virtual]

    Allow the application to resolve external entities.

    The Parser will call this method before opening any external entity except the top-level document entity (including the external DTD subset, external entities referenced within the DTD, and external entities referenced within the document element): the application may request that the parser resolve the entity itself, that it use an alternative URI, or that it use an entirely different input source.

    Application writers can use this method to redirect external system identifiers to secure and/or local URIs, to look up public identifiers in a catalogue, or to read an entity from a database or other input source (including, for example, a dialog box).

    If the system identifier is a URL, the SAX parser must resolve it fully before reporting it to the application.

    Parameters:
    publicId The public identifier of the external entity being referenced, or null if none was supplied.
    systemId The system identifier of the external entity being referenced.
    Returns:
    An InputSource object describing the new input source, or null to request that the parser open a regular URI connection to the system identifier. The returned InputSource is owned by the parser which is responsible to clean up the memory.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    IOException An IO exception, possibly the result of creating a new InputStream or Reader for the InputSource.
    See also:
    InputSource::InputSource

    Implemented in HandlerBase, and DefaultHandler.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMComment.html0000644000175000017500000001155411363620005021356 0ustar borisboris Xerces-C++: DOMComment Class Reference

    DOMComment Class Reference

    This interface inherits from CharacterData and represents the content of a comment, i.e., all the characters between the starting ' <!--' and ending '-->'. More...

    Inheritance diagram for DOMComment:

    DOMCharacterData DOMNode

    List of all members.

    Public Member Functions

    Destructor
    virtual ~DOMComment ()
     Destructor.

    Protected Member Functions

    Hidden constructors
     DOMComment ()


    Detailed Description

    This interface inherits from CharacterData and represents the content of a comment, i.e., all the characters between the starting ' <!--' and ending '-->'.

    See also the Document Object Model (DOM) Level 2 Core Specification.

    Since:
    DOM Level 1

    Constructor & Destructor Documentation

    DOMComment::DOMComment (  )  [protected]

    virtual DOMComment::~DOMComment (  )  [virtual]

    Destructor.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classPSVIAttribute-members.html0000644000175000017500000003010011363620006023476 0ustar borisboris Xerces-C++: Member List

    PSVIAttribute Member List

    This is the complete list of members for PSVIAttribute, including all inherited members.

    ASSESSMENT_TYPE enum namePSVIItem
    fAssessmentTypePSVIItem [protected]
    fCanonicalValuePSVIItem [protected]
    fDefaultValuePSVIItem [protected]
    fIsSpecifiedPSVIItem [protected]
    fMemberTypePSVIItem [protected]
    fMemoryManagerPSVIItem [protected]
    fNormalizedValuePSVIItem [protected]
    fTypePSVIItem [protected]
    fValidationContextPSVIItem [protected]
    fValidityStatePSVIItem [protected]
    getActualValue() const PSVIItem [virtual]
    getAttributeDeclaration()PSVIAttribute
    getCanonicalRepresentation() const PSVIItem
    getIsSchemaSpecified() const PSVIItem
    getMemberTypeDefinition()PSVIAttribute [virtual]
    getSchemaDefault()PSVIItem
    getSchemaNormalizedValue()PSVIItem
    getTypeDefinition()PSVIAttribute [virtual]
    getValidationAttempted() const PSVIItem
    getValidationContext()PSVIItem
    getValidity() const PSVIItem
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    PSVIAttribute(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)PSVIAttribute
    PSVIItem(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)PSVIItem
    reset(const XMLCh *const valContext, PSVIItem::VALIDITY_STATE state, PSVIItem::ASSESSMENT_TYPE assessmentType, XSSimpleTypeDefinition *validatingType, XSSimpleTypeDefinition *memberType, const XMLCh *const defaultValue, const bool isSpecified, XSAttributeDeclaration *attrDecl, DatatypeValidator *dv)PSVIAttribute
    PSVIItem::reset(const XMLCh *const validationContext, const XMLCh *const normalizedValue, const VALIDITY_STATE validityState, const ASSESSMENT_TYPE assessmentType)PSVIItem
    setValidationAttempted(PSVIItem::ASSESSMENT_TYPE attemptType)PSVIItem
    setValidity(PSVIItem::VALIDITY_STATE validity)PSVIItem
    setValue(const XMLCh *const normalizedValue)PSVIAttribute
    updateValidity(VALIDITY_STATE newValue)PSVIAttribute
    VALIDATION_FULL enum valuePSVIItem
    VALIDATION_NONE enum valuePSVIItem
    VALIDATION_PARTIAL enum valuePSVIItem
    VALIDITY_INVALID enum valuePSVIItem
    VALIDITY_NOTKNOWN enum valuePSVIItem
    VALIDITY_STATE enum namePSVIItem
    VALIDITY_VALID enum valuePSVIItem
    XMemory()XMemory [protected]
    ~PSVIAttribute()PSVIAttribute
    ~PSVIItem()PSVIItem [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMDocumentTraversal_8hpp-source.html0000644000175000017500000002524411363620004024625 0ustar borisboris Xerces-C++: DOMDocumentTraversal.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMImplementation_8hpp.html0000644000175000017500000000534211363620005022650 0ustar borisboris Xerces-C++: DOMImplementation.hpp File Reference

    DOMImplementation.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMImplementation
     The DOMImplementation interface provides a number of methods for performing operations that are independent of any particular instance of the document object model. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/PSVIHandler_8hpp-source.html0000644000175000017500000002646111363620004022704 0ustar borisboris Xerces-C++: PSVIHandler.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMImplementationSource_8hpp.html0000644000175000017500000000451711363620005024034 0ustar borisboris Xerces-C++: DOMImplementationSource.hpp File Reference

    DOMImplementationSource.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMImplementationSource

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONSOURCE_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONSOURCE_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/TransService_8hpp-source.html0000644000175000017500000021136611363620004023235 0ustar borisboris Xerces-C++: TransService.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLReaderFactory.html0000644000175000017500000001661711363620006022535 0ustar borisboris Xerces-C++: XMLReaderFactory Class Reference

    XMLReaderFactory Class Reference

    Creates a SAX2 parser (SAX2XMLReader). More...

    List of all members.

    Static Public Member Functions

    static SAX2XMLReadercreateXMLReader (MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager, XMLGrammarPool *const gramPool=0)
    static SAX2XMLReadercreateXMLReader (const XMLCh *className)

    Protected Member Functions

     XMLReaderFactory ()
     ~XMLReaderFactory ()


    Detailed Description

    Creates a SAX2 parser (SAX2XMLReader).

    Note: The parser object returned by XMLReaderFactory is owned by the calling users, and it's the responsibility of the users to delete that parser object, once they no longer need it.

    See also:
    SAX2XMLReader::SAX2XMLReader

    Constructor & Destructor Documentation

    XMLReaderFactory::XMLReaderFactory (  )  [protected]

    XMLReaderFactory::~XMLReaderFactory (  )  [protected]


    Member Function Documentation

    static SAX2XMLReader* XMLReaderFactory::createXMLReader ( MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager,
    XMLGrammarPool *const   gramPool = 0 
    ) [static]

    SAX2XMLReader * XMLReaderFactory::createXMLReader ( const XMLCh className  )  [static]


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLInteger.png0000644000175000017500000000055511363620006021212 0ustar borisboris‰PNG  IHDRNPEX^ÅPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfIDATH‰í“Kƒ †É¦ë„„Þ ½PWÞÿý BEšN]èŒ C |ä!cxú$<’Gî'á"†Âê§Y‹›S E|ØcÌ™¦õÁƒc#¢F1‹[ …}8Mñ0ié8]©Ï¸˜7ÓUÎØ.ïœ+ßÏTJ<ë7åm¿‡“«ï³ÅE'Wåøœ÷¿\‘ÛšónxíÊ݆aWn÷~/îâ.î$œø$°+£Ê3å)Ôi¡‚ÍoÁJƞʹ|y •”[Üq¡rÅPèâ…)gOe†ºúæ\q¦ãª{’—ú¼c?c;ëúÝ~vø•c'‡¯íâ¦WÏ9ÿË7€BŽÂE5Ú9IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classXMLNetAccessor.html0000644000175000017500000001466411363620006022214 0ustar borisboris Xerces-C++: XMLNetAccessor Class Reference

    XMLNetAccessor Class Reference

    Inheritance diagram for XMLNetAccessor:

    XMemory

    List of all members.

    Public Member Functions

    virtual ~XMLNetAccessor ()
    virtual const XMLChgetId () const =0
    virtual BinInputStreammakeNew (const XMLURL &urlSrc, const XMLNetHTTPInfo *httpInfo=0)=0

    Protected Member Functions

     XMLNetAccessor ()


    Constructor & Destructor Documentation

    virtual XMLNetAccessor::~XMLNetAccessor (  )  [virtual]

    XMLNetAccessor::XMLNetAccessor (  )  [protected]


    Member Function Documentation

    virtual const XMLCh* XMLNetAccessor::getId (  )  const [pure virtual]

    virtual BinInputStream* XMLNetAccessor::makeNew ( const XMLURL urlSrc,
    const XMLNetHTTPInfo httpInfo = 0 
    ) [pure virtual]


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLNumber.html0000644000175000017500000004076311363620006021232 0ustar borisboris Xerces-C++: XMLNumber Class Reference

    XMLNumber Class Reference

    Inheritance diagram for XMLNumber:

    XMemory XMLAbstractDoubleFloat XMLBigDecimal XMLDateTime XMLDouble XMLFloat

    List of all members.

    Public Types

    enum  { LESS_THAN = -1, EQUAL = 0, GREATER_THAN = 1, INDETERMINATE = 2 }
    enum  NumberType {
      Float, Double, BigDecimal, DateTime,
      UnKnown
    }

    Public Member Functions

    virtual ~XMLNumber ()
    virtual XMLChgetRawData () const =0
     Return string representation of the decimal value.
    virtual const XMLChgetFormattedString () const =0
     Return the original and converted value of the original data.
    virtual int getSign () const =0
     Returns the sign of this number.

    Static Public Member Functions

    static XMLNumberloadNumber (XMLNumber::NumberType numType, XSerializeEngine &serEng)

    Protected Member Functions

     XMLNumber ()
     XMLNumber (const XMLNumber &)


    Member Enumeration Documentation

    anonymous enum

    Enumerator:
    LESS_THAN 
    EQUAL 
    GREATER_THAN 
    INDETERMINATE 

    Enumerator:
    Float 
    Double 
    BigDecimal 
    DateTime 
    UnKnown 


    Constructor & Destructor Documentation

    virtual XMLNumber::~XMLNumber (  )  [virtual]

    XMLNumber::XMLNumber (  )  [protected]

    XMLNumber::XMLNumber ( const XMLNumber  )  [protected]


    Member Function Documentation

    virtual XMLCh* XMLNumber::getRawData (  )  const [pure virtual]

    Return string representation of the decimal value.

    A decimal point will be included as necessary. Similar to toString above, but the internal buffer is returned directly, user is not required to delete the returned buffer

    Implemented in XMLAbstractDoubleFloat, XMLBigDecimal, and XMLDateTime.

    virtual const XMLCh* XMLNumber::getFormattedString (  )  const [pure virtual]

    Return the original and converted value of the original data.

    (applicable to double/float)

    The internal buffer is returned directly, user is not required to delete the returned buffer

    Implemented in XMLAbstractDoubleFloat, XMLBigDecimal, and XMLDateTime.

    virtual int XMLNumber::getSign (  )  const [pure virtual]

    Returns the sign of this number.

    -1 negative 0 zero 1 positive

    Implemented in XMLAbstractDoubleFloat, XMLBigDecimal, and XMLDateTime.

    static XMLNumber* XMLNumber::loadNumber ( XMLNumber::NumberType  numType,
    XSerializeEngine &  serEng 
    ) [static]


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classBinInputStream-members.html0000644000175000017500000001040611363620005023743 0ustar borisboris Xerces-C++: Member List

    BinInputStream Member List

    This is the complete list of members for BinInputStream, including all inherited members.

    BinInputStream()BinInputStream [protected]
    curPos() const =0BinInputStream [pure virtual]
    getContentType() const =0BinInputStream [pure virtual]
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    readBytes(XMLByte *const toFill, const XMLSize_t maxToRead)=0BinInputStream [pure virtual]
    XMemory()XMemory [protected]
    ~BinInputStream()BinInputStream [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classMemoryManager-members.html0000644000175000017500000000535311363620006023610 0ustar borisboris Xerces-C++: Member List

    MemoryManager Member List

    This is the complete list of members for MemoryManager, including all inherited members.

    allocate(XMLSize_t size)=0MemoryManager [pure virtual]
    deallocate(void *p)=0MemoryManager [pure virtual]
    getExceptionMemoryManager()=0MemoryManager [pure virtual]
    MemoryManager()MemoryManager [protected]
    ~MemoryManager()MemoryManager [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/Wrapper4DOMLSInput_8hpp.html0000644000175000017500000000530111363620005022641 0ustar borisboris Xerces-C++: Wrapper4DOMLSInput.hpp File Reference

    Wrapper4DOMLSInput.hpp File Reference

    Go to the source code of this file.

    Classes

    class  Wrapper4DOMLSInput
     Wrap a DOMLSInput object and make it behave like a SAX InputSource. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_WRAPPER4DOMLSINPUT_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_WRAPPER4DOMLSINPUT_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLSchemaDescription-members.html0000644000175000017500000002567311363620006025041 0ustar borisboris Xerces-C++: Member List

    XMLSchemaDescription Member List

    This is the complete list of members for XMLSchemaDescription, including all inherited members.

    CONTEXT_ATTRIBUTE enum valueXMLSchemaDescription
    CONTEXT_ELEMENT enum valueXMLSchemaDescription
    CONTEXT_IMPORT enum valueXMLSchemaDescription
    CONTEXT_INCLUDE enum valueXMLSchemaDescription
    CONTEXT_INSTANCE enum valueXMLSchemaDescription
    CONTEXT_PREPARSE enum valueXMLSchemaDescription
    CONTEXT_REDEFINE enum valueXMLSchemaDescription
    CONTEXT_UNKNOWN enum valueXMLSchemaDescription
    CONTEXT_XSITYPE enum valueXMLSchemaDescription
    ContextType enum nameXMLSchemaDescription
    getAttributes() const =0XMLSchemaDescription [pure virtual]
    getContextType() const =0XMLSchemaDescription [pure virtual]
    getEnclosingElementName() const =0XMLSchemaDescription [pure virtual]
    getGrammarKey() const =0XMLGrammarDescription [pure virtual]
    getGrammarType() const XMLSchemaDescription [virtual]
    getLocationHints() const =0XMLSchemaDescription [pure virtual]
    getMemoryManager() const XMLGrammarDescription
    getTargetNamespace() const =0XMLSchemaDescription [pure virtual]
    getTriggeringComponent() const =0XMLSchemaDescription [pure virtual]
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    setAttributes(XMLAttDef *const)=0XMLSchemaDescription [pure virtual]
    setContextType(ContextType)=0XMLSchemaDescription [pure virtual]
    setEnclosingElementName(QName *const)=0XMLSchemaDescription [pure virtual]
    setLocationHints(const XMLCh *const)=0XMLSchemaDescription [pure virtual]
    setTargetNamespace(const XMLCh *const)=0XMLSchemaDescription [pure virtual]
    setTriggeringComponent(QName *const)=0XMLSchemaDescription [pure virtual]
    XMemory()XMemory [protected]
    XMLGrammarDescription(MemoryManager *const memMgr=XMLPlatformUtils::fgMemoryManager)XMLGrammarDescription [protected]
    XMLSchemaDescription(MemoryManager *const memMgr=XMLPlatformUtils::fgMemoryManager)XMLSchemaDescription [protected]
    ~XMLGrammarDescription()XMLGrammarDescription [virtual]
    ~XMLSchemaDescription()XMLSchemaDescription [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/PSVIElement_8hpp-source.html0000644000175000017500000003340111363620004022710 0ustar borisboris Xerces-C++: PSVIElement.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/globals_0x76.html0000644000175000017500000000534111363620007020574 0ustar borisboris Xerces-C++: Class Members
    Here is a list of all file members with links to the files they belong to:

    - v -


    Generated on Wed Apr 21 17:55:51 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classContentHandler-members.html0000644000175000017500000001213711363620005023752 0ustar borisboris Xerces-C++: Member List

    ContentHandler Member List

    This is the complete list of members for ContentHandler, including all inherited members.

    characters(const XMLCh *const chars, const XMLSize_t length)=0ContentHandler [pure virtual]
    ContentHandler()ContentHandler
    endDocument()=0ContentHandler [pure virtual]
    endElement(const XMLCh *const uri, const XMLCh *const localname, const XMLCh *const qname)=0ContentHandler [pure virtual]
    endPrefixMapping(const XMLCh *const prefix)=0ContentHandler [pure virtual]
    ignorableWhitespace(const XMLCh *const chars, const XMLSize_t length)=0ContentHandler [pure virtual]
    processingInstruction(const XMLCh *const target, const XMLCh *const data)=0ContentHandler [pure virtual]
    setDocumentLocator(const Locator *const locator)=0ContentHandler [pure virtual]
    skippedEntity(const XMLCh *const name)=0ContentHandler [pure virtual]
    startDocument()=0ContentHandler [pure virtual]
    startElement(const XMLCh *const uri, const XMLCh *const localname, const XMLCh *const qname, const Attributes &attrs)=0ContentHandler [pure virtual]
    startPrefixMapping(const XMLCh *const prefix, const XMLCh *const uri)=0ContentHandler [pure virtual]
    ~ContentHandler()ContentHandler [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLAttDefList-members.html0000644000175000017500000001363211363620006023430 0ustar borisboris Xerces-C++: Member List

    XMLAttDefList Member List

    This is the complete list of members for XMLAttDefList, including all inherited members.

    findAttDef(const unsigned int uriID, const XMLCh *const attName)=0XMLAttDefList [pure virtual]
    findAttDef(const unsigned int uriID, const XMLCh *const attName) const =0XMLAttDefList [pure virtual]
    findAttDef(const XMLCh *const attURI, const XMLCh *const attName)=0XMLAttDefList [pure virtual]
    findAttDef(const XMLCh *const attURI, const XMLCh *const attName) const =0XMLAttDefList [pure virtual]
    getAttDef(XMLSize_t index)=0XMLAttDefList [pure virtual]
    getAttDef(XMLSize_t index) const =0XMLAttDefList [pure virtual]
    getAttDefCount() const =0XMLAttDefList [pure virtual]
    getMemoryManager() const XMLAttDefList
    isEmpty() const =0XMLAttDefList [pure virtual]
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    XMemory()XMemory [protected]
    XMLAttDefList(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLAttDefList [protected]
    ~XMLAttDefList()XMLAttDefList [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLSchemaDescription_8hpp-source.html0000644000175000017500000003414311363620005024607 0ustar borisboris Xerces-C++: XMLSchemaDescription.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLInteger_8hpp.html0000644000175000017500000000432011363620005021274 0ustar borisboris Xerces-C++: XMLInteger.hpp File Reference

    XMLInteger.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLInteger

    Defines

    #define XERCESC_INCLUDE_GUARD_XML_INTEGER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XML_INTEGER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classStdInInputSource.html0000644000175000017500000001665611363620006022647 0ustar borisboris Xerces-C++: StdInInputSource Class Reference

    StdInInputSource Class Reference

    This class is a derivative of the standard InputSource class. More...

    Inheritance diagram for StdInInputSource:

    InputSource XMemory

    List of all members.

    Public Member Functions

    Constructor
     StdInInputSource (MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Since the standard input is a canned source, the constructor is very simple.
    Destructor
     ~StdInInputSource ()
    Virtual methods
    BinInputStreammakeStream () const
     This method will return a binary input stream derivative that will parse from the standard input of the local host.


    Detailed Description

    This class is a derivative of the standard InputSource class.

    It provides for the parser access to data via the standard input. This input source is not commonly used, but can be useful when implementing such things as pipe based tools which exchange XML data.

    As with all InputSource derivatives. The primary objective of an input source is to create an input stream via which the parser can spool in data from the referenced source.


    Constructor & Destructor Documentation

    StdInInputSource::StdInInputSource ( MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager  ) 

    Since the standard input is a canned source, the constructor is very simple.

    It just uses local platform services to open up the standard input source as file, a new handleof which it gives to each new stream it creates.

    StdInInputSource::~StdInInputSource (  ) 


    Member Function Documentation

    BinInputStream* StdInInputSource::makeStream (  )  const [virtual]

    This method will return a binary input stream derivative that will parse from the standard input of the local host.

    Returns:
    A dynamically allocated binary input stream derivative that can parse from the standardinput.

    Implements InputSource.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMXPathNamespace-members.html0000644000175000017500000004222211363620006024242 0ustar borisboris Xerces-C++: Member List

    DOMXPathNamespace Member List

    This is the complete list of members for DOMXPathNamespace, including all inherited members.

    appendChild(DOMNode *newChild)=0DOMNode [pure virtual]
    ATTRIBUTE_NODE enum valueDOMNode
    CDATA_SECTION_NODE enum valueDOMNode
    cloneNode(bool deep) const =0DOMNode [pure virtual]
    COMMENT_NODE enum valueDOMNode
    compareDocumentPosition(const DOMNode *other) const =0DOMNode [pure virtual]
    DOCUMENT_FRAGMENT_NODE enum valueDOMNode
    DOCUMENT_NODE enum valueDOMNode
    DOCUMENT_POSITION_CONTAINED_BY enum valueDOMNode
    DOCUMENT_POSITION_CONTAINS enum valueDOMNode
    DOCUMENT_POSITION_DISCONNECTED enum valueDOMNode
    DOCUMENT_POSITION_FOLLOWING enum valueDOMNode
    DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC enum valueDOMNode
    DOCUMENT_POSITION_PRECEDING enum valueDOMNode
    DOCUMENT_TYPE_NODE enum valueDOMNode
    DocumentPosition enum nameDOMNode
    DOMNode()DOMNode [protected]
    DOMNode(const DOMNode &)DOMNode [protected]
    DOMXPathNamespace()DOMXPathNamespace [protected]
    ELEMENT_NODE enum valueDOMNode
    ENTITY_NODE enum valueDOMNode
    ENTITY_REFERENCE_NODE enum valueDOMNode
    getAttributes() const =0DOMNode [pure virtual]
    getBaseURI() const =0DOMNode [pure virtual]
    getChildNodes() const =0DOMNode [pure virtual]
    getFeature(const XMLCh *feature, const XMLCh *version) const =0DOMNode [pure virtual]
    getFirstChild() const =0DOMNode [pure virtual]
    getLastChild() const =0DOMNode [pure virtual]
    getLocalName() const =0DOMNode [pure virtual]
    getNamespaceURI() const =0DOMNode [pure virtual]
    getNextSibling() const =0DOMNode [pure virtual]
    getNodeName() const =0DOMNode [pure virtual]
    getNodeType() const =0DOMNode [pure virtual]
    getNodeValue() const =0DOMNode [pure virtual]
    getOwnerDocument() const =0DOMNode [pure virtual]
    getOwnerElement() const =0DOMXPathNamespace [pure virtual]
    getParentNode() const =0DOMNode [pure virtual]
    getPrefix() const =0DOMNode [pure virtual]
    getPreviousSibling() const =0DOMNode [pure virtual]
    getTextContent() const =0DOMNode [pure virtual]
    getUserData(const XMLCh *key) const =0DOMNode [pure virtual]
    hasAttributes() const =0DOMNode [pure virtual]
    hasChildNodes() const =0DOMNode [pure virtual]
    insertBefore(DOMNode *newChild, DOMNode *refChild)=0DOMNode [pure virtual]
    isDefaultNamespace(const XMLCh *namespaceURI) const =0DOMNode [pure virtual]
    isEqualNode(const DOMNode *arg) const =0DOMNode [pure virtual]
    isSameNode(const DOMNode *other) const =0DOMNode [pure virtual]
    isSupported(const XMLCh *feature, const XMLCh *version) const =0DOMNode [pure virtual]
    lookupNamespaceURI(const XMLCh *prefix) const =0DOMNode [pure virtual]
    lookupPrefix(const XMLCh *namespaceURI) const =0DOMNode [pure virtual]
    NodeType enum nameDOMNode
    normalize()=0DOMNode [pure virtual]
    NOTATION_NODE enum valueDOMNode
    PROCESSING_INSTRUCTION_NODE enum valueDOMNode
    release()=0DOMNode [pure virtual]
    removeChild(DOMNode *oldChild)=0DOMNode [pure virtual]
    replaceChild(DOMNode *newChild, DOMNode *oldChild)=0DOMNode [pure virtual]
    setNodeValue(const XMLCh *nodeValue)=0DOMNode [pure virtual]
    setPrefix(const XMLCh *prefix)=0DOMNode [pure virtual]
    setTextContent(const XMLCh *textContent)=0DOMNode [pure virtual]
    setUserData(const XMLCh *key, void *data, DOMUserDataHandler *handler)=0DOMNode [pure virtual]
    TEXT_NODE enum valueDOMNode
    XPATH_NAMESPACE_NODE enum valueDOMXPathNamespace
    XPathNodeType enum nameDOMXPathNamespace
    ~DOMNode()DOMNode [virtual]
    ~DOMXPathNamespace()DOMXPathNamespace [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/NumberFormatException_8hpp.html0000644000175000017500000000406611363620005023605 0ustar borisboris Xerces-C++: NumberFormatException.hpp File Reference

    NumberFormatException.hpp File Reference

    Go to the source code of this file.

    Defines

    #define XERCESC_INCLUDE_GUARD_NUMBERFORMATEXCEPTION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_NUMBERFORMATEXCEPTION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLURL-members.html0000644000175000017500000002775411363620006022101 0ustar borisboris Xerces-C++: Member List

    XMLURL Member List

    This is the complete list of members for XMLURL, including all inherited members.

    File enum valueXMLURL
    FTP enum valueXMLURL
    getFragment() const XMLURL
    getHost() const XMLURL
    getMemoryManager() const XMLURL
    getPassword() const XMLURL
    getPath() const XMLURL
    getPortNum() const XMLURL
    getProtocol() const XMLURL
    getProtocolName() const XMLURL
    getQuery() const XMLURL
    getURLText() const XMLURL
    getUser() const XMLURL
    hasInvalidChar() const XMLURL
    HTTP enum valueXMLURL
    HTTPS enum valueXMLURL
    isRelative() const XMLURL
    lookupByName(const XMLCh *const protoName)XMLURL [static]
    makeNewStream() const XMLURL
    makeRelativeTo(const XMLCh *const baseURLText)XMLURL
    makeRelativeTo(const XMLURL &baseURL)XMLURL
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    operator!=(const XMLURL &toCompare) const XMLURL
    operator=(const XMLURL &toAssign)XMLURL
    operator==(const XMLURL &toCompare) const XMLURL
    parse(const XMLCh *const urlText, XMLURL &xmlURL)XMLURL [static]
    Protocols enum nameXMLURL
    Protocols_Count enum valueXMLURL
    setURL(const XMLCh *const urlText)XMLURL
    setURL(const XMLCh *const baseURL, const XMLCh *const relativeURL)XMLURL
    setURL(const XMLURL &baseURL, const XMLCh *const relativeURL)XMLURL
    setURL(const XMLCh *const baseURL, const XMLCh *const relativeURL, XMLURL &xmlURL)XMLURL
    Unknown enum valueXMLURL
    XMemory()XMemory [protected]
    XMLURL(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLURL
    XMLURL(const XMLCh *const baseURL, const XMLCh *const relativeURL, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLURL
    XMLURL(const XMLCh *const baseURL, const char *const relativeURL, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLURL
    XMLURL(const XMLURL &baseURL, const XMLCh *const relativeURL)XMLURL
    XMLURL(const XMLURL &baseURL, const char *const relativeURL)XMLURL
    XMLURL(const XMLCh *const urlText, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLURL
    XMLURL(const char *const urlText, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLURL
    XMLURL(const XMLURL &toCopy)XMLURL
    ~XMLURL()XMLURL [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/ContentHandler_8hpp-source.html0000644000175000017500000003112111363620004023522 0ustar borisboris Xerces-C++: ContentHandler.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classSAXParseException-members.html0000644000175000017500000001724611363620006024356 0ustar borisboris Xerces-C++: Member List

    SAXParseException Member List

    This is the complete list of members for SAXParseException, including all inherited members.

    fMemoryManagerSAXException [protected]
    fMsgSAXException [protected]
    getColumnNumber() const SAXParseException
    getLineNumber() const SAXParseException
    getMessage() const SAXException [virtual]
    getPublicId() const SAXParseException
    getSystemId() const SAXParseException
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    operator=(const SAXParseException &toAssign)SAXParseException
    SAXException::operator=(const SAXException &toCopy)SAXException
    SAXException(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)SAXException
    SAXException(const XMLCh *const msg, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)SAXException
    SAXException(const char *const msg, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)SAXException
    SAXException(const SAXException &toCopy)SAXException
    SAXParseException(const XMLCh *const message, const Locator &locator, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)SAXParseException
    SAXParseException(const XMLCh *const message, const XMLCh *const publicId, const XMLCh *const systemId, const XMLFileLoc lineNumber, const XMLFileLoc columnNumber, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)SAXParseException
    SAXParseException(const SAXParseException &toCopy)SAXParseException
    XMemory()XMemory [protected]
    ~SAXException()SAXException [virtual]
    ~SAXParseException()SAXParseException


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMException_8hpp-source.html0000644000175000017500000003374311363620004023124 0ustar borisboris Xerces-C++: DOMException.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLAttr.html0000644000175000017500000013606211363620006020712 0ustar borisboris Xerces-C++: XMLAttr Class Reference

    XMLAttr Class Reference

    This class defines the information about an attribute that will come out of the scanner during parsing. More...

    Inheritance diagram for XMLAttr:

    XMemory

    List of all members.

    Public Member Functions

    Constructors
     XMLAttr (MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     The default constructor just setsup an empty attribute to be filled in the later.
     XMLAttr (const unsigned int uriId, const XMLCh *const attrName, const XMLCh *const attrPrefix, const XMLCh *const attrValue, const XMLAttDef::AttTypes type=XMLAttDef::CData, const bool specified=true, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager, DatatypeValidator *datatypeValidator=0, const bool isSchema=false)
     This is the primary constructor which takes all of the information required to construct a complete attribute object.
     XMLAttr (const unsigned int uriId, const XMLCh *const rawName, const XMLCh *const attrValue, const XMLAttDef::AttTypes type=XMLAttDef::CData, const bool specified=true, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager, DatatypeValidator *datatypeValidator=0, const bool isSchema=false)
     This is the primary constructor which takes all of the information required to construct a complete attribute object.
    Destructor
     ~XMLAttr ()
    Getter methods
    QNamegetAttName () const
     This method returns the attribute name in a QName format.
    const XMLChgetName () const
     This method gets a const pointer to the name of the attribute.
    const XMLChgetPrefix () const
     This method will get a const pointer to the prefix string of this attribute.
    const XMLChgetQName () const
     This method will get the QName of this attribute, which will be the prefix if any, then a colon, then the base name.
    bool getSpecified () const
     This method will get the specified flag, which indicates whether the attribute was explicitly specified or just faulted in.
    XMLAttDef::AttTypes getType () const
     This method will get the type of the attribute.
    const XMLChgetValue () const
     This method will get the value of the attribute.
    unsigned int getURIId () const
     This method will get the id of the URI that this attribute's prefix mapped to.
    Setter methods
    void set (const unsigned int uriId, const XMLCh *const attrName, const XMLCh *const attrPrefix, const XMLCh *const attrValue, const XMLAttDef::AttTypes type=XMLAttDef::CData, DatatypeValidator *datatypeValidator=0, const bool isSchema=false)
     This method is called to set up a default constructed object after the fact, or to reuse a previously used object.
    void set (const unsigned int uriId, const XMLCh *const attrRawName, const XMLCh *const attrValue, const XMLAttDef::AttTypes type=XMLAttDef::CData, DatatypeValidator *datatypeValidator=0, const bool isSchema=false)
     This method is called to set up a default constructed object after the fact, or to reuse a previously used object.
    void setName (const unsigned int uriId, const XMLCh *const attrName, const XMLCh *const attrPrefix)
     This method will update just the name related fields of the attribute object.
    void setSpecified (const bool newValue)
     This method will update the specified state of the object.
    void setType (const XMLAttDef::AttTypes newType)
     This method will update the attribute type of the object.
    void setValue (const XMLCh *const newValue)
     This method will update the value field of the attribute.
    void setURIId (const unsigned int uriId)
     This method will set the URI id field of this attribute.


    Detailed Description

    This class defines the information about an attribute that will come out of the scanner during parsing.

    This information does not depend upon the type of validator because it is not tied to any scheme/DTD type info. Its just the raw XML 1.0 information that will be reported about an attribute in the startElement() callback method of the XMLDocumentHandler class. Hence it is not intended to be extended or derived from. Its designed to be used as is.

    The 'specified' field of this class indicates whether the attribute was actually present or whether it was faulted in because it had a fixed or default value.

    The code receiving this information can ask its validator for more info about the attribute, i.e. get its declaration from the DTD/Schema info.

    Because of the heavy use (and reuse) of instances of this class, and the number of string members it has, this class takes pains to not reallocate string members unless it has to. It keeps up with how long each buffer is and only reallocates if the new value won't fit.


    Constructor & Destructor Documentation

    XMLAttr::XMLAttr ( MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager  ) 

    The default constructor just setsup an empty attribute to be filled in the later.

    Though the initial state is a reasonable one, it is not documented because it should not be depended on.

    Parameters:
    manager The configurable memory manager

    XMLAttr::XMLAttr ( const unsigned int  uriId,
    const XMLCh *const   attrName,
    const XMLCh *const   attrPrefix,
    const XMLCh *const   attrValue,
    const XMLAttDef::AttTypes  type = XMLAttDef::CData,
    const bool  specified = true,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager,
    DatatypeValidator *  datatypeValidator = 0,
    const bool  isSchema = false 
    )

    This is the primary constructor which takes all of the information required to construct a complete attribute object.

    Parameters:
    uriId The id into the validator's URI pool of the URI that the prefix mapped to. Only used if namespaces are enabled/supported.
    attrName The base name of the attribute, i.e. the part after any prefix.
    attrPrefix The prefix, if any, of this attribute's name. If this is empty, then uriID is meaningless as well.
    attrValue The value string of the attribute, which should be fully normalized by XML rules!
    type The type of the attribute. This will indicate the type of normalization done and constrains the value content. Make sure that the value set meets the constraints!
    specified Indicates whether the attribute was explicitly specified or not. If not, then it was faulted in from a FIXED or DEFAULT value.
    manager The configurable memory manager
    datatypeValidator type used to validate the attribute, if it was validated by an XML Schema
    isSchema true if and only if this attribute was validated by an XML Schema

    XMLAttr::XMLAttr ( const unsigned int  uriId,
    const XMLCh *const   rawName,
    const XMLCh *const   attrValue,
    const XMLAttDef::AttTypes  type = XMLAttDef::CData,
    const bool  specified = true,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager,
    DatatypeValidator *  datatypeValidator = 0,
    const bool  isSchema = false 
    )

    This is the primary constructor which takes all of the information required to construct a complete attribute object.

    Parameters:
    uriId The id into the validator's URI pool of the URI that the prefix mapped to. Only used if namespaces are enabled/supported.
    rawName The raw name of the attribute.
    attrValue The value string of the attribute, which should be fully normalized by XML rules!
    type The type of the attribute. This will indicate the type of normalization done and constrains the value content. Make sure that the value set meets the constraints!
    specified Indicates whether the attribute was explicitly specified or not. If not, then it was faulted in from a FIXED or DEFAULT value.
    manager The configurable memory manager
    datatypeValidator type used to validate the attribute, if it was validated by an XML Schema
    isSchema true if and only if this attribute was validated by an XML Schema

    XMLAttr::~XMLAttr (  ) 


    Member Function Documentation

    QName * XMLAttr::getAttName (  )  const

    This method returns the attribute name in a QName format.

    const XMLCh * XMLAttr::getName (  )  const

    This method gets a const pointer to the name of the attribute.

    The form of this name is defined by the validator in use.

    References QName::getLocalPart().

    const XMLCh * XMLAttr::getPrefix (  )  const

    This method will get a const pointer to the prefix string of this attribute.

    Since prefixes are optional, it may be zero.

    References QName::getPrefix().

    const XMLCh* XMLAttr::getQName (  )  const

    This method will get the QName of this attribute, which will be the prefix if any, then a colon, then the base name.

    If there was no prefix, its the same as the getName() method.

    bool XMLAttr::getSpecified (  )  const

    This method will get the specified flag, which indicates whether the attribute was explicitly specified or just faulted in.

    XMLAttDef::AttTypes XMLAttr::getType (  )  const

    This method will get the type of the attribute.

    The available types are defined by the XML specification.

    const XMLCh * XMLAttr::getValue (  )  const

    This method will get the value of the attribute.

    The value can be be an empty string, but never null if the object is correctly set up.

    unsigned int XMLAttr::getURIId (  )  const

    This method will get the id of the URI that this attribute's prefix mapped to.

    If namespaces are not on, then its value is meaningless.

    References QName::getURI().

    void XMLAttr::set ( const unsigned int  uriId,
    const XMLCh *const   attrName,
    const XMLCh *const   attrPrefix,
    const XMLCh *const   attrValue,
    const XMLAttDef::AttTypes  type = XMLAttDef::CData,
    DatatypeValidator *  datatypeValidator = 0,
    const bool  isSchema = false 
    )

    This method is called to set up a default constructed object after the fact, or to reuse a previously used object.

    Parameters:
    uriId The id into the validator's URI pool of the URI that the prefix mapped to. Only used if namespaces are enabled/supported.
    attrName The base name of the attribute, i.e. the part after any prefix.
    attrPrefix The prefix, if any, of this attribute's name. If this is empty, then uriID is meaningless as well.
    attrValue The value string of the attribute, which should be fully normalized by XML rules according to the attribute type.
    type The type of the attribute. This will indicate the type of normalization done and constrains the value content. Make sure that the value set meets the constraints!
    datatypeValidator type used to validate the attribute, if it was validated by an XML Schema
    isSchema true if and only if this attribute was validated by an XML Schema

    References QName::setName(), and setValue().

    void XMLAttr::set ( const unsigned int  uriId,
    const XMLCh *const   attrRawName,
    const XMLCh *const   attrValue,
    const XMLAttDef::AttTypes  type = XMLAttDef::CData,
    DatatypeValidator *  datatypeValidator = 0,
    const bool  isSchema = false 
    )

    This method is called to set up a default constructed object after the fact, or to reuse a previously used object.

    Parameters:
    uriId The id into the validator's URI pool of the URI that the prefix mapped to. Only used if namespaces are enabled/supported.
    attrRawName The raw name of the attribute.
    attrValue The value string of the attribute, which should be fully normalized by XML rules according to the attribute type.
    type The type of the attribute. This will indicate the type of normalization done and constrains the value content. Make sure that the value set meets the constraints!
    datatypeValidator type used to validate the attribute, if it was validated by an XML Schema
    isSchema true if and only if this attribute was validated by an XML Schema

    References QName::setName(), and setValue().

    void XMLAttr::setName ( const unsigned int  uriId,
    const XMLCh *const   attrName,
    const XMLCh *const   attrPrefix 
    )

    This method will update just the name related fields of the attribute object.

    The other fields are left as is.

    Parameters:
    uriId The id into the validator's URI pool of the URI that the prefix mapped to. Only used if namespaces are enabled/supported.
    attrName The base name of the attribute, i.e. the part after any prefix.
    attrPrefix The prefix, if any, of this attribute's name. If this is empty, then uriID is meaningless as well.

    void XMLAttr::setSpecified ( const bool  newValue  ) 

    This method will update the specified state of the object.

    Parameters:
    newValue Indicates whether the attribute was explicitly specified or not. If not, then it was faulted in from a FIXED or DEFAULT value.

    void XMLAttr::setType ( const XMLAttDef::AttTypes  newType  ) 

    This method will update the attribute type of the object.

    Parameters:
    newType The type of the attribute. This will indicate the type of normalization done and constrains the value content. Make sure that the value set meets the constraints!

    void XMLAttr::setValue ( const XMLCh *const   newValue  ) 

    This method will update the value field of the attribute.

    Parameters:
    newValue The value string of the attribute, which should be fully normalized by XML rules according to the attribute type.

    Referenced by set().

    void XMLAttr::setURIId ( const unsigned int  uriId  ) 

    This method will set the URI id field of this attribute.

    This is generally only ever called internally by the parser itself during the parsing process.

    Parameters:
    uriId The uriId of the attribute.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLReaderFactory_8hpp.html0000644000175000017500000000474611363620005022445 0ustar borisboris Xerces-C++: XMLReaderFactory.hpp File Reference

    XMLReaderFactory.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLReaderFactory
     Creates a SAX2 parser (SAX2XMLReader). More...

    Defines

    #define XERCESC_INCLUDE_GUARD_XMLREADERFACTORY_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XMLREADERFACTORY_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classURLInputSource-members.html0000644000175000017500000002250511363620006023706 0ustar borisboris Xerces-C++: Member List

    URLInputSource Member List

    This is the complete list of members for URLInputSource, including all inherited members.

    getEncoding() const InputSource [virtual]
    getIssueFatalErrorIfNotFound() const InputSource [virtual]
    getMemoryManager() const InputSource
    getPublicId() const InputSource [virtual]
    getSystemId() const InputSource [virtual]
    InputSource(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)InputSource [protected]
    InputSource(const XMLCh *const systemId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)InputSource [protected]
    InputSource(const XMLCh *const systemId, const XMLCh *const publicId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)InputSource [protected]
    InputSource(const char *const systemId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)InputSource [protected]
    InputSource(const char *const systemId, const char *const publicId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)InputSource [protected]
    makeStream() const URLInputSource [virtual]
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    setEncoding(const XMLCh *const encodingStr)InputSource [virtual]
    setIssueFatalErrorIfNotFound(const bool flag)InputSource [virtual]
    setPublicId(const XMLCh *const publicId)InputSource [virtual]
    setSystemId(const XMLCh *const systemId)InputSource [virtual]
    URLInputSource(const XMLURL &urlId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)URLInputSource
    URLInputSource(const XMLCh *const baseId, const XMLCh *const systemId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)URLInputSource
    URLInputSource(const XMLCh *const baseId, const XMLCh *const systemId, const XMLCh *const publicId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)URLInputSource
    URLInputSource(const XMLCh *const baseId, const char *const systemId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)URLInputSource
    URLInputSource(const XMLCh *const baseId, const char *const systemId, const char *const publicId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)URLInputSource
    urlSrc() const URLInputSource
    XMemory()XMemory [protected]
    ~InputSource()InputSource [virtual]
    ~URLInputSource()URLInputSource


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/globals_defs_0x78.html0000644000175000017500000011043111363620007021574 0ustar borisboris Xerces-C++: Class Members
     

    - x -


    Generated on Wed Apr 21 17:55:51 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMNamedNodeMap.html0000644000175000017500000006760511363620005022254 0ustar borisboris Xerces-C++: DOMNamedNodeMap Class Reference

    DOMNamedNodeMap Class Reference

    DOMNamedNodeMaps are used to represent collections of nodes that can be accessed by name. More...

    List of all members.

    Public Member Functions

    Destructor
    virtual ~DOMNamedNodeMap ()
     Destructor.
    Functions introduced in DOM Level 1
    virtual DOMNodesetNamedItem (DOMNode *arg)=0
     Adds a node using its nodeName attribute.
    virtual DOMNodeitem (XMLSize_t index) const =0
     Returns the indexth item in the map.
    virtual DOMNodegetNamedItem (const XMLCh *name) const =0
     Retrieves a node specified by name.
    virtual XMLSize_t getLength () const =0
     The number of nodes in the map.
    virtual DOMNoderemoveNamedItem (const XMLCh *name)=0
     Removes a node specified by name.
    Functions introduced in DOM Level 2
    virtual DOMNodegetNamedItemNS (const XMLCh *namespaceURI, const XMLCh *localName) const =0
     Retrieves a node specified by local name and namespace URI.
    virtual DOMNodesetNamedItemNS (DOMNode *arg)=0
     Adds a node using its namespaceURI and localName.
    virtual DOMNoderemoveNamedItemNS (const XMLCh *namespaceURI, const XMLCh *localName)=0
     Removes a node specified by local name and namespace URI.

    Protected Member Functions

    Hidden constructors
     DOMNamedNodeMap ()


    Detailed Description

    DOMNamedNodeMaps are used to represent collections of nodes that can be accessed by name.

    Note that DOMNamedNodeMap does not inherit from DOMNodeList; DOMNamedNodeMaps are not maintained in any particular order. Nodes contained in a DOMNamedNodeMap may also be accessed by an ordinal index, but this is simply to allow convenient enumeration of the contents, and does not imply that the DOM specifies an order to these Nodes.

    Since:
    DOM Level 1

    Constructor & Destructor Documentation

    DOMNamedNodeMap::DOMNamedNodeMap (  )  [protected]

    virtual DOMNamedNodeMap::~DOMNamedNodeMap (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual DOMNode* DOMNamedNodeMap::setNamedItem ( DOMNode arg  )  [pure virtual]

    Adds a node using its nodeName attribute.


    As the nodeName attribute is used to derive the name which the node must be stored under, multiple nodes of certain types (those that have a "special" string value) cannot be stored as the names would clash. This is seen as preferable to allowing nodes to be aliased.

    Parameters:
    arg A node to store in a named node map. The node will later be accessible using the value of the nodeName attribute of the node. If a node with that name is already present in the map, it is replaced by the new one.
    Returns:
    If the new DOMNode replaces an existing node the replaced DOMNode is returned, otherwise null is returned.
    Exceptions:
    DOMException WRONG_DOCUMENT_ERR: Raised if arg was created from a different document than the one that created the DOMNamedNodeMap.
    NO_MODIFICATION_ALLOWED_ERR: Raised if this DOMNamedNodeMap is readonly.
    INUSE_ATTRIBUTE_ERR: Raised if arg is an DOMAttr that is already an attribute of another DOMElement object. The DOM user must explicitly clone DOMAttr nodes to re-use them in other elements.
    Since:
    DOM Level 1

    virtual DOMNode* DOMNamedNodeMap::item ( XMLSize_t  index  )  const [pure virtual]

    Returns the indexth item in the map.

    If index is greater than or equal to the number of nodes in the map, this returns null.

    Parameters:
    index Index into the map.
    Returns:
    The node at the indexth position in the DOMNamedNodeMap, or null if that is not a valid index.
    Since:
    DOM Level 1

    virtual DOMNode* DOMNamedNodeMap::getNamedItem ( const XMLCh name  )  const [pure virtual]

    Retrieves a node specified by name.

    Parameters:
    name The nodeName of a node to retrieve.
    Returns:
    A DOMNode (of any type) with the specified nodeName, or null if it does not identify any node in the map.
    Since:
    DOM Level 1

    virtual XMLSize_t DOMNamedNodeMap::getLength (  )  const [pure virtual]

    The number of nodes in the map.

    The range of valid child node indices is 0 to length-1 inclusive.

    Since:
    DOM Level 1

    virtual DOMNode* DOMNamedNodeMap::removeNamedItem ( const XMLCh name  )  [pure virtual]

    Removes a node specified by name.

    If the removed node is an DOMAttr with a default value it is immediately replaced.

    Parameters:
    name The nodeName of a node to remove.
    Returns:
    The node removed from the map if a node with such a name exists.
    Exceptions:
    DOMException NOT_FOUND_ERR: Raised if there is no node named name in the map.
    NO_MODIFICATION_ALLOWED_ERR: Raised if this DOMNamedNodeMap is readonly.
    Since:
    DOM Level 1

    virtual DOMNode* DOMNamedNodeMap::getNamedItemNS ( const XMLCh namespaceURI,
    const XMLCh localName 
    ) const [pure virtual]

    Retrieves a node specified by local name and namespace URI.

    Parameters:
    namespaceURI The namespace URI of the node to retrieve.
    localName The local name of the node to retrieve.
    Returns:
    A DOMNode (of any type) with the specified local name and namespace URI, or null if they do not identify any node in the map.
    Since:
    DOM Level 2

    virtual DOMNode* DOMNamedNodeMap::setNamedItemNS ( DOMNode arg  )  [pure virtual]

    Adds a node using its namespaceURI and localName.

    Parameters:
    arg A node to store in a named node map. The node will later be accessible using the value of the namespaceURI and localName attribute of the node. If a node with those namespace URI and local name is already present in the map, it is replaced by the new one.
    Returns:
    If the new DOMNode replaces an existing node the replaced DOMNode is returned, otherwise null is returned.
    Exceptions:
    DOMException WRONG_DOCUMENT_ERR: Raised if arg was created from a different document than the one that created the DOMNamedNodeMap.
    NO_MODIFICATION_ALLOWED_ERR: Raised if this DOMNamedNodeMap is readonly.
    INUSE_ATTRIBUTE_ERR: Raised if arg is an DOMAttr that is already an attribute of another DOMElement object. The DOM user must explicitly clone DOMAttr nodes to re-use them in other elements.
    Since:
    DOM Level 2

    virtual DOMNode* DOMNamedNodeMap::removeNamedItemNS ( const XMLCh namespaceURI,
    const XMLCh localName 
    ) [pure virtual]

    Removes a node specified by local name and namespace URI.

    Parameters:
    namespaceURI The namespace URI of the node to remove.
    localName The local name of the node to remove. When this DOMNamedNodeMap contains the attributes attached to an element, as returned by the attributes attribute of the DOMNode interface, if the removed attribute is known to have a default value, an attribute immediately appears containing the default value as well as the corresponding namespace URI, local name, and prefix.
    Returns:
    The node removed from the map if a node with such a local name and namespace URI exists.
    Exceptions:
    DOMException NOT_FOUND_ERR: Raised if there is no node named name in the map.
    NO_MODIFICATION_ALLOWED_ERR: Raised if this DOMNamedNodeMap is readonly.
    Since:
    DOM Level 2


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLFormatter_8hpp.html0000644000175000017500000000541611363620005021651 0ustar borisboris Xerces-C++: XMLFormatter.hpp File Reference

    XMLFormatter.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLFormatter
     This class provides the basic formatting capabilities that are required to turn the Unicode based XML data from the parsers into a form that can be used on non-Unicode based systems, that is, into local or generic text encodings. More...
    class  XMLFormatTarget

    Defines

    #define XERCESC_INCLUDE_GUARD_XMLFORMATTER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XMLFORMATTER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classBase64.html0000644000175000017500000005247011363620005020442 0ustar borisboris Xerces-C++: Base64 Class Reference

    Base64 Class Reference

    List of all members.

    Public Types

    enum  Conformance { Conf_RFC2045, Conf_Schema }

    Static Public Member Functions

    static XMLChgetCanonicalRepresentation (const XMLCh *const inputData, MemoryManager *const memMgr=0, Conformance conform=Conf_RFC2045)
     get canonical representation
    static XMLByteencode (const XMLByte *const inputData, const XMLSize_t inputLength, XMLSize_t *outputLength, MemoryManager *const memMgr=0)
     Encodes octets into Base64 data.
    static XMLBytedecode (const XMLByte *const inputData, XMLSize_t *decodedLength, MemoryManager *const memMgr=0, Conformance conform=Conf_RFC2045)
     Decodes Base64 data into octets.
    static XMLBytedecodeToXMLByte (const XMLCh *const inputData, XMLSize_t *decodedLength, MemoryManager *const memMgr=0, Conformance conform=Conf_RFC2045)
     Decodes Base64 data into octets.
    static int getDataLength (const XMLCh *const inputData, MemoryManager *const memMgr=0, Conformance conform=Conf_RFC2045)
     Get data length.


    Member Enumeration Documentation

    Enumerator:
    Conf_RFC2045 
    Conf_Schema 


    Member Function Documentation

    static XMLByte* Base64::encode ( const XMLByte *const   inputData,
    const XMLSize_t  inputLength,
    XMLSize_t outputLength,
    MemoryManager *const   memMgr = 0 
    ) [static]

    Encodes octets into Base64 data.

    NOTE: The returned buffer is dynamically allocated and is the responsibility of the caller to delete it when not longer needed. Use the memory manager to release the returned buffer or operator delete() if none was provided.

    Parameters:
    inputData Binary data in XMLByte stream.
    inputLength Length of the XMLByte stream.
    outputLength Length of the encoded Base64 byte stream.
    memMgr client provided memory manager
    Returns:
    Encoded Base64 data in XMLByte stream, or NULL if input data can not be encoded.

    static XMLByte* Base64::decode ( const XMLByte *const   inputData,
    XMLSize_t decodedLength,
    MemoryManager *const   memMgr = 0,
    Conformance  conform = Conf_RFC2045 
    ) [static]

    Decodes Base64 data into octets.

    NOTE: The returned buffer is dynamically allocated and is the responsibility of the caller to delete it when not longer needed. Use the memory manager to release the returned buffer or operator delete() if none was provided.

    Parameters:
    inputData Base64 data in XMLByte stream.
    decodedLength Length of decoded XMLByte stream.
    memMgr client provided memory manager
    conform conformance specified: if the input data conforms to the RFC 2045 it is allowed to have any number of whitespace characters inside; if it conforms to the XMLSchema specs, it is allowed to have at most one whitespace character between the quartets
    Returns:
    Decoded binary data in XMLByte stream, or NULL if input data can not be decoded.

    static XMLByte* Base64::decodeToXMLByte ( const XMLCh *const   inputData,
    XMLSize_t decodedLength,
    MemoryManager *const   memMgr = 0,
    Conformance  conform = Conf_RFC2045 
    ) [static]

    Decodes Base64 data into octets.

    NOTE: The returned buffer is dynamically allocated and is the responsibility of the caller to delete it when not longer needed. Use the memory manager to release the returned buffer or operator delete() if none was provided.

    Parameters:
    inputData Base64 data in XMLCh stream.
    decodedLength Length of decoded XMLByte stream.
    memMgr client provided memory manager
    conform conformance specified: if the input data conforms to the RFC 2045 it is allowed to have any number of whitespace characters inside; if it conforms to the XMLSchema specs, it is allowed to have at most one whitespace character between the quartets
    Returns:
    Decoded binary data in XMLByte stream, or NULL if input data can not be decoded.

    static int Base64::getDataLength ( const XMLCh *const   inputData,
    MemoryManager *const   memMgr = 0,
    Conformance  conform = Conf_RFC2045 
    ) [static]

    Get data length.

    Returns length of decoded data given an array containing encoded data.

    Parameters:
    inputData Base64 data in XMLCh stream.
    memMgr client provided memory manager
    conform conformance specified
    Returns:
    Length of decoded data, or -1 if input data can not be decoded.

    static XMLCh* Base64::getCanonicalRepresentation ( const XMLCh *const   inputData,
    MemoryManager *const   memMgr = 0,
    Conformance  conform = Conf_RFC2045 
    ) [static]

    get canonical representation

    Caller is responsible for the proper deallocation of the string returned.

    Parameters:
    inputData A string containing the Base64
    memMgr client provided memory manager
    conform conformance specified
    return: the canonical representation of the Base64 if it is a valid Base64 0 otherwise


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMElement_8hpp.html0000644000175000017500000000514211363620005021252 0ustar borisboris Xerces-C++: DOMElement.hpp File Reference

    DOMElement.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMElement
     By far the vast majority of objects (apart from text) that authors encounter when traversing a document are DOMElement nodes. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMELEMENT_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMELEMENT_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLDouble_8hpp.html0000644000175000017500000000430611363620005021115 0ustar borisboris Xerces-C++: XMLDouble.hpp File Reference

    XMLDouble.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLDouble

    Defines

    #define XERCESC_INCLUDE_GUARD_XML_DOUBLE_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XML_DOUBLE_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSObject-members.html0000644000175000017500000001320611363620006022522 0ustar borisboris Xerces-C++: Member List

    XSObject Member List

    This is the complete list of members for XSObject, including all inherited members.

    fComponentTypeXSObject [protected]
    fIdXSObject [protected]
    fMemoryManagerXSObject [protected]
    fXSModelXSObject [protected]
    getId() const XSObject [virtual]
    getName() const XSObject [virtual]
    getNamespace()XSObject [virtual]
    getNamespaceItem()XSObject [virtual]
    getType() const XSObject
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    setId(XMLSize_t id)XSObject
    XMemory()XMemory [protected]
    XSObject(XSConstants::COMPONENT_TYPE compType, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSObject
    ~XSObject()XSObject [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/ValidationContext_8hpp.html0000644000175000017500000000442611363620005022764 0ustar borisboris Xerces-C++: ValidationContext.hpp File Reference

    ValidationContext.hpp File Reference

    Go to the source code of this file.

    Classes

    class  ValidationContext

    Defines

    #define XERCESC_INCLUDE_GUARD_VALIDATION_CONTEXT_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_VALIDATION_CONTEXT_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMNodeList_8hpp-source.html0000644000175000017500000002164711363620004022707 0ustar borisboris Xerces-C++: DOMNodeList.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/UTFDataFormatException_8hpp-source.html0000644000175000017500000001106611363620004025100 0ustar borisboris Xerces-C++: UTFDataFormatException.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLAttDef.png0000644000175000017500000000055111363620006020760 0ustar borisboris‰PNG  IHDRJPL³þ¿PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfÿIDATH‰í“Qà †åeÏÀ p7Ø.´§ÞÿC¬:Ûn%‹Éš¥`4Êפ1Ü=nq߮ǦX‡è*)I®(9)Ñ!ª­kd攥ե{ Zœ…ÉVýfAiA²Q}¡¥“D¢Ž’U]FqÚTJ6(#»Œ=•ûeNYËîsY»½wQ=»¨xtÊ÷ÒÖvÙ8û–šèË4 £†Þñ¤Nê¤~E‘Ç:ÔáÈ!Ÿ¥-èĮ́FÕÓ&SˆF…œÂ[J[dŠ@°PC̬•‚Ø´Ò´O™À|¤eŠûº*…v×¢µ¨‹|£°ËXJÈM2 Éúô¢5ðý=åziOŸe‡xÃ=lIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/functions_func_0x69.html0000644000175000017500000004151211363620005022174 0ustar borisboris Xerces-C++: Class Members - Functions
     

    - i -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMPSVITypeInfo_8hpp-source.html0000644000175000017500000002606511363620004023424 0ustar borisboris Xerces-C++: DOMPSVITypeInfo.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMDocumentRange.html0000644000175000017500000001433511363620005022507 0ustar borisboris Xerces-C++: DOMDocumentRange Class Reference

    DOMDocumentRange Class Reference

    Inheritance diagram for DOMDocumentRange:

    DOMDocument

    List of all members.

    Public Member Functions

    Destructor
    virtual ~DOMDocumentRange ()
     Destructor.
    Functions introduced in DOM Level 2
    virtual DOMRangecreateRange ()=0
     To create the range consisting of boundary-points and offset of the selected contents.

    Protected Member Functions

    Hidden constructors
     DOMDocumentRange ()


    Detailed Description

    See also the Document Object Model (DOM) Level 2 Traversal and Range Specification.
    Since:
    DOM Level 2

    Constructor & Destructor Documentation

    DOMDocumentRange::DOMDocumentRange (  )  [protected]

    virtual DOMDocumentRange::~DOMDocumentRange (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual DOMRange* DOMDocumentRange::createRange (  )  [pure virtual]

    To create the range consisting of boundary-points and offset of the selected contents.

    Returns:
    The initial state of the Range such that both the boundary-points are positioned at the beginning of the corresponding DOMDOcument, before any content. The range returned can only be used to select content associated with this document, or with documentFragments and Attrs for which this document is the ownerdocument
    Since:
    DOM Level 2


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMLSSerializer_8hpp.html0000644000175000017500000000437711363620005022242 0ustar borisboris Xerces-C++: DOMLSSerializer.hpp File Reference

    DOMLSSerializer.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMLSSerializer

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMLSSERIALIZER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMLSSERIALIZER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classEntityResolver-members.html0000644000175000017500000000442711363620006024044 0ustar borisboris Xerces-C++: Member List

    EntityResolver Member List

    This is the complete list of members for EntityResolver, including all inherited members.

    EntityResolver()EntityResolver
    resolveEntity(const XMLCh *const publicId, const XMLCh *const systemId)=0EntityResolver [pure virtual]
    ~EntityResolver()EntityResolver [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLAttDef-members.html0000644000175000017500000004142411363620006022574 0ustar borisboris Xerces-C++: Member List

    XMLAttDef Member List

    This is the complete list of members for XMLAttDef, including all inherited members.

    Any_Any enum valueXMLAttDef
    Any_List enum valueXMLAttDef
    Any_Other enum valueXMLAttDef
    AttTypes enum nameXMLAttDef
    AttTypes_Count enum valueXMLAttDef
    AttTypes_Max enum valueXMLAttDef
    AttTypes_Min enum valueXMLAttDef
    AttTypes_Unknown enum valueXMLAttDef
    CData enum valueXMLAttDef
    CreateReasons enum nameXMLAttDef
    DefAttTypes enum nameXMLAttDef
    DefAttTypes_Count enum valueXMLAttDef
    DefAttTypes_Max enum valueXMLAttDef
    DefAttTypes_Min enum valueXMLAttDef
    DefAttTypes_Unknown enum valueXMLAttDef
    Default enum valueXMLAttDef
    Entities enum valueXMLAttDef
    Entity enum valueXMLAttDef
    Enumeration enum valueXMLAttDef
    fgInvalidAttrIdXMLAttDef [static]
    Fixed enum valueXMLAttDef
    getAttTypeString(const AttTypes attrType, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLAttDef [static]
    getCreateReason() const XMLAttDef
    getDefAttTypeString(const DefAttTypes attrType, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLAttDef [static]
    getDefaultType() const XMLAttDef
    getEnumeration() const XMLAttDef
    getFullName() const =0XMLAttDef [pure virtual]
    getId() const XMLAttDef
    getMemoryManager() const XMLAttDef
    getType() const XMLAttDef
    getValue() const XMLAttDef
    ID enum valueXMLAttDef
    IDRef enum valueXMLAttDef
    IDRefs enum valueXMLAttDef
    Implied enum valueXMLAttDef
    isExternal() const XMLAttDef
    JustFaultIn enum valueXMLAttDef
    NmToken enum valueXMLAttDef
    NmTokens enum valueXMLAttDef
    NoReason enum valueXMLAttDef
    Notation enum valueXMLAttDef
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    ProcessContents_Lax enum valueXMLAttDef
    ProcessContents_Skip enum valueXMLAttDef
    ProcessContents_Strict enum valueXMLAttDef
    Prohibited enum valueXMLAttDef
    Required enum valueXMLAttDef
    Required_And_Fixed enum valueXMLAttDef
    reset()=0XMLAttDef [pure virtual]
    setCreateReason(const CreateReasons newReason)XMLAttDef
    setDefaultType(const XMLAttDef::DefAttTypes newValue)XMLAttDef
    setEnumeration(const XMLCh *const newValue)XMLAttDef
    setExternalAttDeclaration(const bool aValue)XMLAttDef
    setId(const XMLSize_t newId)XMLAttDef
    setType(const XMLAttDef::AttTypes newValue)XMLAttDef
    setValue(const XMLCh *const newValue)XMLAttDef
    Simple enum valueXMLAttDef
    XMemory()XMemory [protected]
    XMLAttDef(const AttTypes type=CData, const DefAttTypes defType=Implied, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLAttDef [protected]
    XMLAttDef(const XMLCh *const attValue, const AttTypes type, const DefAttTypes defType, const XMLCh *const enumValues=0, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLAttDef [protected]
    ~XMLAttDef()XMLAttDef [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMTypeInfo_8hpp-source.html0000644000175000017500000002512311363620004022714 0ustar borisboris Xerces-C++: DOMTypeInfo.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLNumber.png0000644000175000017500000000272011363620006021041 0ustar borisboris‰PNG  IHDR4Àá9äPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØffIDATxœíArã D­×‚ ¹ÁLÕœgV¹ÿ>„¬v°¤Bôs*ޤg„”r¨ÿxÔãÏ™TÇð{:_µs.T¡Õ@¨Õhûa콡š5ÆÝ¬E5X±ÆÎ"{?i­Ý|ê[µàŒˆm´’{+Šjd‘Ijä#ÞzWãfýd&¥25x]îE¬5¢F»Q¡oùE5áºFnÊÏ9CMx©éF „jo®Ž{Wƒ'M÷jÞ@5TC5Tƒ ßl9ȳv® Õ@¾þÕîÁe¡Äóë«v® Õ`¸ C¨B5ªP „j T¡Õ@¨B5ªP „j T¡Õ@¨B5ªP „j T¡Õ@ºT£Î¤ö`Îe<1k81ëP „j T¡ȦûäèÆ9¸¯†å˜ßšìAÍànö;JÔŒT“ÈÕ 2{ÆA>Ûk5ºç6íVlOƒQF? ™šQ NÖìí•.Ô …gc”Oá~ºPãfýÔ ¹ûA¿jüÄ@jHB?j†xòv+ŒW£z? üu»)5ÊuÍ0†YÎP›Y=¨Ù Õ@¨B5ªP „j T¹™¾Ùr.ߢ+ƒj ÜÌ ¡73C¨ÃeB5ªP „j T¡Õ@¨r5öºþúTRÓeb¥f[H¬Ôl ‰•šm!±R³-$Vj¶…ÄJͶX©Ù+5ÛBb¥f[H¬Ôl ‰•šm!±R³-$Vj¶…ÄJÍ6XVéáï!ZH,âü2"-$R L¤˜H50‘j`b©#µK§PmÛ?õó´Q©Ö´?a¤ lzr{ y¼ýŸë¾H?‘B6²¡&Õ×Ò”£lð9…ÿ~K;®@òdü8¥Åèf9,¨&_„ou,V“ `ûÎè¨æ›Jê‡ÕØVí#å âÚoع¡äµ—*§ö…Ró×áIù‰r5ö¡ñUR••SÝ÷Ôk‰æb5Ò ß '*V ?ªÆ¹uÇÃ52 )«|9\y4ׯ5îY3WTŽOâY“Åk¦bYYùueôR¦fY|J}Ó~2¦jáGÕH735SxUã‘©™{áŽñЃwj²xYkæüp^‡Ô,jƒÏ«ãRÍüà¨3ÏAQ£Ô<]¥!Ô„%8”rWßÍš9>Ìš F©…ÿ PM¬ ž(ß©¤f±ÐïVãëǾû®OY%ò­Y3P«ø¥šiJj>: VµÁZΚ ö¨‰äPÍ‹´›p†òÓåÓµfךUmïjâ9çŸ}@¥&¸ög(ß»ž)wJq×r2Ú>Cix†Êãýu Ó=ž¡ä€Ò/$ß\×È9AéÐ7cÒj®~tÖœÅ×®ï/>ö$ru5†j [çŽc‰¥\^MíDª‰T©&R L,¢ìŠBšI<‘ÛüôùP „[!Tƒxrë1‚j0\†!T¡Õ@¨B5ªP „j ý©yÞe³õù4ð/ßµ Õ@¨B5ªP „j T¡Õ@¨B5ªt©¦ìßpØl}>·ù¯1ª¡š,‘j`"ÕÀÄK©Ùܾ÷š|£fšmýnFÍæîè£jÖ¡Ó-Ô¼ìÜ>IMÚúÝŒ°;:íÜÞ£fšmÇlGÍËîèÕÎí]j²ÐÕÖïvÔ¼ìŽ^íÜÞ¥fšmýnF ؽØ$½CÍ:´Í ìŽV‡Öšuh›j¶vGg;·÷¨ÉC§|ëw3jöÑÅÕð‘P ÕÀP ÕÀP ÕÀÜFMÙ{…üPbþàˆ^¬>„îaIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/XSTypeDefinition_8hpp-source.html0000644000175000017500000003541211363620005024027 0ustar borisboris Xerces-C++: XSTypeDefinition.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLErrorReporter.png0000644000175000017500000000157311363620006022432 0ustar borisboris‰PNG  IHDRˆéh PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfIDATxœí™mn#! †­ÔßÀ <½@µ+íy*UÊý°ØÆÀ4F‚IPׯª óeŒAiÞmëÊÉö{8¡Á( ¡BüÖ -\0åwKÀ6ÚƒáÓn¡gCw}šA˜kÂ%k"´Œ±]y ¹1f:† ½Ù PŒfiª,Æ ±lñú<$¬ ÃÙ¡^ ³HÓ^ŸA™À)H™È¤„`ÊÙ»A+ç‰í2‰_…H5qÙtÄ}"f:Õ-†íûêØxuL‡8#S½ª/‚¸äu…Pˆ†–øÊßÑÛ3:éi ˆÛç« ¶5 Þn·W#,±Fa*„H!D !RÑ ®<®ÏQˆ#Q…P…P…PˆË þ<ÖßÎýŒñ«óÐWçþö{CŒÅxW…¨Cxú ‚| vçÂEOÏA8—‚z “>@‚zÇ7Ÿž‚à×°§Øg vä|hãØ±IãÀ!eˆp}÷xÎ6Ä~„p…]0]ÂãcØ¡ÇQ%Ïà›ž¯Ç'©ÑœŽ9¢pàØhBP· Níw\>FçC«0]„ÀT1'ñPƒÀð<4zĹï8Ô'Гa,üJ{uð1Qö˜è˜®ûL$/ä“…™† 9îDª‰½¨ Y–'îát4 Rüv&hu`õàºlû„@€žZÍéà¤ç\RÈ]VGbD?mÛV…Pˆ DçÛxO§¾ò÷Ôû·äù½¶¯ Ç% –0—€X£0B¤"…)„H!D !R‘BˆB¤"…)„è9ß/Nù¢Ãšñs‘B(Ä5É-ÄÞ•‹¾FËÞœQ±cÄõa×̘š½9"z—ìêdë ˆ{{sfMøè1¦h†7É=ªÙ›3!¶™X¤Gˆº½9;.Ú¢äh–Óæ¬oØ›“kB¬ÃX€¾Q±7§CMѼ:Äîٛ³÷ ¶,óê(ö ß´7ÚŽ© ¡«B ZšS þ Š¨Ô±«AIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classSAXNotRecognizedException.html0000644000175000017500000002410111363620006024412 0ustar borisboris Xerces-C++: SAXNotRecognizedException Class Reference

    SAXNotRecognizedException Class Reference

    Inheritance diagram for SAXNotRecognizedException:

    SAXException XMemory

    List of all members.

    Public Member Functions

     SAXNotRecognizedException (MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     SAXNotRecognizedException (const XMLCh *const msg, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Create a new SAXException.
     SAXNotRecognizedException (const char *const msg, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Create a new SAXException.
     SAXNotRecognizedException (const SAXException &toCopy)
     Copy constructor.


    Constructor & Destructor Documentation

    SAXNotRecognizedException::SAXNotRecognizedException ( MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager  ) 

    SAXNotRecognizedException::SAXNotRecognizedException ( const XMLCh *const   msg,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    Create a new SAXException.

    Parameters:
    msg The error or warning message.
    manager Pointer to the memory manager to be used to allocate objects.

    SAXNotRecognizedException::SAXNotRecognizedException ( const char *const   msg,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    Create a new SAXException.

    Parameters:
    msg The error or warning message.
    manager Pointer to the memory manager to be used to allocate objects.

    SAXNotRecognizedException::SAXNotRecognizedException ( const SAXException toCopy  ) 

    Copy constructor.

    Parameters:
    toCopy The exception to be copy constructed


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classTranscodeToStr.html0000644000175000017500000004525011363620006022333 0ustar borisboris Xerces-C++: TranscodeToStr Class Reference

    TranscodeToStr Class Reference

    List of all members.

    Public Member Functions

     TranscodeToStr (const XMLCh *in, const char *encoding, MemoryManager *manager=XMLPlatformUtils::fgMemoryManager)
     Converts from the internal XMLCh* encoding to the specified encoding.
     TranscodeToStr (const XMLCh *in, XMLSize_t length, const char *encoding, MemoryManager *manager=XMLPlatformUtils::fgMemoryManager)
     Converts from the internal XMLCh* encoding to the specified encoding.
     TranscodeToStr (const XMLCh *in, XMLTranscoder *trans, MemoryManager *manager=XMLPlatformUtils::fgMemoryManager)
     Converts from the internal XMLCh* encoding to the specified encoding.
     TranscodeToStr (const XMLCh *in, XMLSize_t length, XMLTranscoder *trans, MemoryManager *manager=XMLPlatformUtils::fgMemoryManager)
     Converts from the internal XMLCh* encoding to the specified encoding.
     ~TranscodeToStr ()
    Getter methods
    const XMLBytestr () const
     Returns the transcoded, null terminated string.
    XMLByteadopt ()
     Returns the transcoded, null terminated string - adopting the memory allocated to it from the TranscodeToStr object.
    XMLSize_t length () const
     Returns the length of the transcoded string in bytes.


    Constructor & Destructor Documentation

    TranscodeToStr::TranscodeToStr ( const XMLCh in,
    const char *  encoding,
    MemoryManager manager = XMLPlatformUtils::fgMemoryManager 
    )

    Converts from the internal XMLCh* encoding to the specified encoding.

    Parameters:
    in the null terminated source buffer to be transcoded
    encoding the name of the encoding to transcode to
    manager the memory manager to use

    TranscodeToStr::TranscodeToStr ( const XMLCh in,
    XMLSize_t  length,
    const char *  encoding,
    MemoryManager manager = XMLPlatformUtils::fgMemoryManager 
    )

    Converts from the internal XMLCh* encoding to the specified encoding.

    Parameters:
    in the source buffer to be transcoded
    length the length of the source buffer
    encoding the name of the encoding to transcode to
    manager the memory manager to use

    TranscodeToStr::TranscodeToStr ( const XMLCh in,
    XMLTranscoder trans,
    MemoryManager manager = XMLPlatformUtils::fgMemoryManager 
    )

    Converts from the internal XMLCh* encoding to the specified encoding.

    Parameters:
    in the null terminated source buffer to be transcoded
    trans the transcoder to use
    manager the memory manager to use

    TranscodeToStr::TranscodeToStr ( const XMLCh in,
    XMLSize_t  length,
    XMLTranscoder trans,
    MemoryManager manager = XMLPlatformUtils::fgMemoryManager 
    )

    Converts from the internal XMLCh* encoding to the specified encoding.

    Parameters:
    in the source buffer to be transcoded
    length the length of the source buffer
    trans the transcoder to use
    manager the memory manager to use

    TranscodeToStr::~TranscodeToStr (  ) 


    Member Function Documentation

    const XMLByte * TranscodeToStr::str (  )  const

    Returns the transcoded, null terminated string.

    Returns:
    the transcoded string

    XMLByte * TranscodeToStr::adopt (  ) 

    Returns the transcoded, null terminated string - adopting the memory allocated to it from the TranscodeToStr object.

    Returns:
    the transcoded string

    XMLSize_t TranscodeToStr::length (  )  const

    Returns the length of the transcoded string in bytes.

    The length does not include the null terminator.

    Returns:
    the length of the transcoded string in bytes


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/PSVIElement_8hpp.html0000644000175000017500000000432711363620005021420 0ustar borisboris Xerces-C++: PSVIElement.hpp File Reference

    PSVIElement.hpp File Reference

    Go to the source code of this file.

    Classes

    class  PSVIElement

    Defines

    #define XERCESC_INCLUDE_GUARD_PSVIELEMENT_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_PSVIELEMENT_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMDocumentType.png0000644000175000017500000000063611363620005022213 0ustar borisboris‰PNG  IHDR~P-«ÜýPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf4IDATX…í”MŽÂ0 …ã k'7p¸s!V½ÿxþ)ÓRP Ѩš™)Nœ|Íë3júê‹t©=qüc)çR«`,¤bQ|£¼Ç¨ƒÈø5óµèÕÅùRPQ5ÅR  b¼è{ˆ¥v^‚¯Í<î6îÎçÜÇ?Ýñ¿:'mï¿è¿Ìýoñ¿)ÿÛùÞï÷Nœöü0?]åOÓt(¸ÿƒüà?ø?Êç¾HÜ%6j#’=Œ}ù4ޝ.t^ASz)ÊŽ=ã#ϽàÉNoyØöÍëÌJïó¶ Xerces-C++: LocalFileInputSource Class Reference

    LocalFileInputSource Class Reference

    This class is a derivative of the standard InputSource class. More...

    Inheritance diagram for LocalFileInputSource:

    InputSource XMemory

    List of all members.

    Public Member Functions

    Constructors
     LocalFileInputSource (const XMLCh *const basePath, const XMLCh *const relativePath, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     A local file input source requires a path to the file to load.
     LocalFileInputSource (const XMLCh *const filePath, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     This constructor takes a single parameter which is the fully qualified or relative path.
    Destructor
     ~LocalFileInputSource ()
    Virtual methods
    virtual BinInputStreammakeStream () const
     This method will return a binary input stream derivative that will parse from the local file indicatedby the system id.


    Detailed Description

    This class is a derivative of the standard InputSource class.

    It provides for the parser access to data which is referenced via a local file path, as apposed to remote file or URL. This is the most efficacious mechanism by which local files can be parsed, since the parse knows that it refers to a local file and will make no other attempts to interpret the passed path.

    The path provided can either be a fully qualified path or a relative path. If relative, it will be completed either relative to a passed base path or relative to the current working directory of the process.

    As with all InputSource derivatives. The primary objective of an input source is to create an input stream via which the parser can spool in data from the referenced source.


    Constructor & Destructor Documentation

    LocalFileInputSource::LocalFileInputSource ( const XMLCh *const   basePath,
    const XMLCh *const   relativePath,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    A local file input source requires a path to the file to load.

    This can be provided either as a fully qualified path, a path relative to the current working directly, or a path relative to a provided base path.

    The completed path will become the system id of this input source. The constructors don't take any public id for local files, but you still set them via the parent class' setPublicId() method of course.

    This constructor takes an explicit base path and a possibly relative path. If the relative path is seen to be fully qualified, it is used as is. Otherwise, it is made relative to the passed base path.

    Parameters:
    basePath The base path from which the passed relative path will be based, if the relative part is indeed relative.
    relativePath The relative part of the path. It can actually be fully qualified, in which case it is taken as is.
    manager Pointer to the memory manager to be used to allocate objects.
    Exceptions:
    XMLException If the path is relative and doesn't properly resolve to a file.

    LocalFileInputSource::LocalFileInputSource ( const XMLCh *const   filePath,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    This constructor takes a single parameter which is the fully qualified or relative path.

    If it is fully qualified, it is taken as is. If it is relative, then it is completed relative to the current working directory (or the equivalent on the local host machine.)

    The completed path will become the system id of this input source. The constructors don't take any public id for local files, but you still set them via the parent class' setPublicId() method of course.

    Parameters:
    filePath The relative or fully qualified path.
    manager Pointer to the memory manager to be used to allocate objects.
    Exceptions:
    XMLException If the path is relative and doesn't properly resolve to a file.

    LocalFileInputSource::~LocalFileInputSource (  ) 


    Member Function Documentation

    virtual BinInputStream* LocalFileInputSource::makeStream (  )  const [virtual]

    This method will return a binary input stream derivative that will parse from the local file indicatedby the system id.

    Returns:
    A dynamically allocated binary input stream derivative that can parse from the file indicated by the system id.

    Implements InputSource.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classPSVIAttribute.html0000644000175000017500000004242511363620006022063 0ustar borisboris Xerces-C++: PSVIAttribute Class Reference

    PSVIAttribute Class Reference

    Inheritance diagram for PSVIAttribute:

    PSVIItem XMemory

    List of all members.

    Public Member Functions

    Constructors
     PSVIAttribute (MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     The default constructor.
    Destructor
     ~PSVIAttribute ()
    PSVIAttribute methods
    XSAttributeDeclarationgetAttributeDeclaration ()
     An item isomorphic to the attribute declaration used to validate this attribute.
    XSTypeDefinitiongetTypeDefinition ()
     An item isomorphic to the type definition used to validate this element.
    XSSimpleTypeDefinitiongetMemberTypeDefinition ()
     If and only if that type definition is a simple type definition with {variety} union, or a complex type definition whose {content type} is a simple thype definition with {variety} union, then an item isomorphic to that member of the union's {member type definitions} which actually validated the element item's normalized value.
    void reset (const XMLCh *const valContext, PSVIItem::VALIDITY_STATE state, PSVIItem::ASSESSMENT_TYPE assessmentType, XSSimpleTypeDefinition *validatingType, XSSimpleTypeDefinition *memberType, const XMLCh *const defaultValue, const bool isSpecified, XSAttributeDeclaration *attrDecl, DatatypeValidator *dv)
     methods needed by implementation
    void setValue (const XMLCh *const normalizedValue)
     set the schema normalized value (and implicitly the canonical value) of this object; intended to be used by the implementation.
    void updateValidity (VALIDITY_STATE newValue)
     set VALIDITY_STATE to specified value; intended to be called by implementation.


    Constructor & Destructor Documentation

    PSVIAttribute::PSVIAttribute ( MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager  ) 

    The default constructor.

    Parameters:
    manager The configurable memory manager

    PSVIAttribute::~PSVIAttribute (  ) 


    Member Function Documentation

    XSAttributeDeclaration * PSVIAttribute::getAttributeDeclaration (  ) 

    An item isomorphic to the attribute declaration used to validate this attribute.

    Returns:
    an attribute declaration

    XSTypeDefinition * PSVIAttribute::getTypeDefinition (  )  [virtual]

    An item isomorphic to the type definition used to validate this element.

    Returns:
    a type declaration

    Implements PSVIItem.

    References PSVIItem::fType.

    XSSimpleTypeDefinition * PSVIAttribute::getMemberTypeDefinition (  )  [virtual]

    If and only if that type definition is a simple type definition with {variety} union, or a complex type definition whose {content type} is a simple thype definition with {variety} union, then an item isomorphic to that member of the union's {member type definitions} which actually validated the element item's normalized value.

    Returns:
    a simple type declaration

    Implements PSVIItem.

    References PSVIItem::fMemberType.

    void PSVIAttribute::reset ( const XMLCh *const   valContext,
    PSVIItem::VALIDITY_STATE  state,
    PSVIItem::ASSESSMENT_TYPE  assessmentType,
    XSSimpleTypeDefinition validatingType,
    XSSimpleTypeDefinition memberType,
    const XMLCh *const   defaultValue,
    const bool  isSpecified,
    XSAttributeDeclaration attrDecl,
    DatatypeValidator *  dv 
    )

    methods needed by implementation

    reset this object. Intended to be called by the implementation.

    void PSVIAttribute::setValue ( const XMLCh *const   normalizedValue  ) 

    set the schema normalized value (and implicitly the canonical value) of this object; intended to be used by the implementation.

    void PSVIAttribute::updateValidity ( VALIDITY_STATE  newValue  ) 

    set VALIDITY_STATE to specified value; intended to be called by implementation.

    References PSVIItem::fValidityState.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classErrorHandler.png0000644000175000017500000000106111363620006021614 0ustar borisboris‰PNG  IHDRÌP§¨‡ùPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfÇIDAThí–kjÃ0 €cýméò.06Øy …ÜÿÓÃŽ‡ I“¶ V‚£È–>KVKº®*VJ=Ô=q¯o˜‚á~óccλÙú­˜™ñ8Œ÷Îuœ•sŠqÀ¿±YtžÞÃa%¢Žüðœk6ð;d#gã;—.ûµ+ThŠñ;`d(0V´Œ±]‚ñ£lº£1nÇ¢¥³ÑNKEsÖ©ÓÇ·¾a攘ç|@Õä²o¸cúë‰0—¾?ædÖ0 Ó05é7ÉjÌuËÞÖ'Ú0 Ó0 Ó0¯ÆüTäV±‰ÓGeò·­ûëÄ0+>æ½1`oñ( É8f½Ä ÞÙ)*)ÜWSáñ¦´Ž1Ä{€róEÉF„Uˆ qá9 Ó‰(ZŦ‰.‘MÁÁ¦/¨ºuŠÄâªZtZÀ„Œ­0fpô)1¼‹-Æ}ÚÙå:ۉc™ AÆÌ1V4ÈÖÉÎF4T§i6a±h9›°ˆ¡Q6!bh:é´|64ÃP¥h# E«SºŠ‹ÆM%}•:ìTS§- QÛ#uš…Ó@ãN[%oÿgÓ0 óLí“§&w? ªòTb}ˆ`*òIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classXMLFormatter-members.html0000644000175000017500000002547211363620006023375 0ustar borisboris Xerces-C++: Member List

    XMLFormatter Member List

    This is the complete list of members for XMLFormatter, including all inherited members.

    AttrEscapes enum valueXMLFormatter
    CharEscapes enum valueXMLFormatter
    DefaultEscape enum valueXMLFormatter
    DefaultUnRep enum valueXMLFormatter
    EscapeFlags enum nameXMLFormatter
    EscapeFlags_Count enum valueXMLFormatter
    formatBuf(const XMLCh *const toFormat, const XMLSize_t count, const EscapeFlags escapeFlags=DefaultEscape, const UnRepFlags unrepFlags=DefaultUnRep)XMLFormatter
    getEncodingName() const XMLFormatter
    getEscapeFlags() const XMLFormatter
    getTranscoder() const XMLFormatter
    getTranscoder()XMLFormatter
    getUnRepFlags() const XMLFormatter
    NoEscapes enum valueXMLFormatter
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    operator<<(const XMLCh *const toFormat)XMLFormatter
    operator<<(const XMLCh toFormat)XMLFormatter
    operator<<(const EscapeFlags newFlags)XMLFormatter
    operator<<(const UnRepFlags newFlags)XMLFormatter
    setEscapeFlags(const EscapeFlags newFlags)XMLFormatter
    setUnRepFlags(const UnRepFlags newFlags)XMLFormatter
    StdEscapes enum valueXMLFormatter
    UnRep_CharRef enum valueXMLFormatter
    UnRep_Fail enum valueXMLFormatter
    UnRep_Replace enum valueXMLFormatter
    UnRepFlags enum nameXMLFormatter
    writeBOM(const XMLByte *const toFormat, const XMLSize_t count)XMLFormatter
    XMemory()XMemory [protected]
    XMLFormatter(const XMLCh *const outEncoding, const XMLCh *const docVersion, XMLFormatTarget *const target, const EscapeFlags escapeFlags=NoEscapes, const UnRepFlags unrepFlags=UnRep_Fail, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLFormatter
    XMLFormatter(const char *const outEncoding, const char *const docVersion, XMLFormatTarget *const target, const EscapeFlags escapeFlags=NoEscapes, const UnRepFlags unrepFlags=UnRep_Fail, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLFormatter
    XMLFormatter(const XMLCh *const outEncoding, XMLFormatTarget *const target, const EscapeFlags escapeFlags=NoEscapes, const UnRepFlags unrepFlags=UnRep_Fail, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLFormatter
    XMLFormatter(const char *const outEncoding, XMLFormatTarget *const target, const EscapeFlags escapeFlags=NoEscapes, const UnRepFlags unrepFlags=UnRep_Fail, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLFormatter
    ~XMLFormatter()XMLFormatter


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XSObject_8hpp.html0000644000175000017500000000427111363620005021004 0ustar borisboris Xerces-C++: XSObject.hpp File Reference

    XSObject.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XSObject

    Defines

    #define XERCESC_INCLUDE_GUARD_XSOBJECT_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XSOBJECT_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/NumberFormatException_8hpp-source.html0000644000175000017500000001102211363620004025070 0ustar borisboris Xerces-C++: NumberFormatException.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/PSVIItem_8hpp-source.html0000644000175000017500000005463111363620004022225 0ustar borisboris Xerces-C++: PSVIItem.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLTransService.html0000644000175000017500000007732311363620006022414 0ustar borisboris Xerces-C++: XMLTransService Class Reference

    XMLTransService Class Reference

    Inheritance diagram for XMLTransService:

    XMemory

    List of all members.

    Public Types

    enum  Codes { Ok, UnsupportedEncoding, InternalFailure, SupportFilesNotFound }

    Public Member Functions

    virtual ~XMLTransService ()
    XMLTranscodermakeNewTranscoderFor (const XMLCh *const encodingName, XMLTransService::Codes &resValue, const XMLSize_t blockSize, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
    XMLTranscodermakeNewTranscoderFor (const char *const encodingName, XMLTransService::Codes &resValue, const XMLSize_t blockSize, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
    XMLTranscodermakeNewTranscoderFor (XMLRecognizer::Encodings encodingEnum, XMLTransService::Codes &resValue, const XMLSize_t blockSize, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
    virtual int compareIString (const XMLCh *const comp1, const XMLCh *const comp2)=0
    virtual int compareNIString (const XMLCh *const comp1, const XMLCh *const comp2, const XMLSize_t maxChars)=0
    virtual const XMLChgetId () const =0
    virtual XMLLCPTranscodermakeNewLCPTranscoder (MemoryManager *manager)=0
    virtual bool supportsSrcOfs () const =0
    virtual void upperCase (XMLCh *const toUpperCase)=0
    virtual void lowerCase (XMLCh *const toLowerCase)=0

    Static Public Member Functions

    static void addEncoding (const XMLCh *const encoding, ENameMap *const ownMapping)

    Protected Member Functions

     XMLTransService ()
    virtual XMLTranscodermakeNewXMLTranscoder (const XMLCh *const encodingName, XMLTransService::Codes &resValue, const XMLSize_t blockSize, MemoryManager *const manager)=0
    virtual void initTransService ()

    Static Protected Attributes

    static RefHashTableOf< ENameMap > * gMappings
    static RefVectorOf< ENameMap > * gMappingsRecognizer

    Friends

    class XMLPlatformUtils
    class XMLInitializer

    Classes

    struct  TransRec


    Member Enumeration Documentation

    Enumerator:
    Ok 
    UnsupportedEncoding 
    InternalFailure 
    SupportFilesNotFound 


    Constructor & Destructor Documentation

    virtual XMLTransService::~XMLTransService (  )  [virtual]

    XMLTransService::XMLTransService (  )  [protected]


    Member Function Documentation

    XMLTranscoder* XMLTransService::makeNewTranscoderFor ( const XMLCh *const   encodingName,
    XMLTransService::Codes resValue,
    const XMLSize_t  blockSize,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    XMLTranscoder* XMLTransService::makeNewTranscoderFor ( const char *const   encodingName,
    XMLTransService::Codes resValue,
    const XMLSize_t  blockSize,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    XMLTranscoder* XMLTransService::makeNewTranscoderFor ( XMLRecognizer::Encodings  encodingEnum,
    XMLTransService::Codes resValue,
    const XMLSize_t  blockSize,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    virtual int XMLTransService::compareIString ( const XMLCh *const   comp1,
    const XMLCh *const   comp2 
    ) [pure virtual]

    virtual int XMLTransService::compareNIString ( const XMLCh *const   comp1,
    const XMLCh *const   comp2,
    const XMLSize_t  maxChars 
    ) [pure virtual]

    virtual const XMLCh* XMLTransService::getId (  )  const [pure virtual]

    virtual XMLLCPTranscoder* XMLTransService::makeNewLCPTranscoder ( MemoryManager manager  )  [pure virtual]

    virtual bool XMLTransService::supportsSrcOfs (  )  const [pure virtual]

    virtual void XMLTransService::upperCase ( XMLCh *const   toUpperCase  )  [pure virtual]

    virtual void XMLTransService::lowerCase ( XMLCh *const   toLowerCase  )  [pure virtual]

    static void XMLTransService::addEncoding ( const XMLCh *const   encoding,
    ENameMap *const   ownMapping 
    ) [static]

    virtual XMLTranscoder* XMLTransService::makeNewXMLTranscoder ( const XMLCh *const   encodingName,
    XMLTransService::Codes resValue,
    const XMLSize_t  blockSize,
    MemoryManager *const   manager 
    ) [protected, pure virtual]

    virtual void XMLTransService::initTransService (  )  [protected, virtual]


    Friends And Related Function Documentation

    friend class XMLPlatformUtils [friend]

    friend class XMLInitializer [friend]


    Member Data Documentation

    RefHashTableOf<ENameMap>* XMLTransService::gMappings [static, protected]

    RefVectorOf<ENameMap>* XMLTransService::gMappingsRecognizer [static, protected]


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMPSVITypeInfo.html0000644000175000017500000004172711363620005022220 0ustar borisboris Xerces-C++: DOMPSVITypeInfo Class Reference

    DOMPSVITypeInfo Class Reference

    The DOMPSVITypeInfo interface represent the PSVI info used by DOMElement or DOMAttr nodes, specified in the schemas associated with the document. More...

    List of all members.

    Public Types

    enum  PSVIProperty {
      PSVI_Validity, PSVI_Validation_Attempted, PSVI_Type_Definition_Type, PSVI_Type_Definition_Name,
      PSVI_Type_Definition_Namespace, PSVI_Type_Definition_Anonymous, PSVI_Nil, PSVI_Member_Type_Definition_Name,
      PSVI_Member_Type_Definition_Namespace, PSVI_Member_Type_Definition_Anonymous, PSVI_Schema_Default, PSVI_Schema_Normalized_Value,
      PSVI_Schema_Specified
    }

    Public Member Functions

    Destructor
    virtual ~DOMPSVITypeInfo ()
     Destructor.
    virtual const XMLChgetStringProperty (PSVIProperty prop) const =0
     Returns the string value of the specified PSVI property associated to a DOMElement or DOMAttr, or null if not available.
    virtual int getNumericProperty (PSVIProperty prop) const =0
     Returns the numeric value of the specified PSVI property associated to a DOMElement or DOMAttr, or null if not available.

    Protected Member Functions

    Hidden constructors
     DOMPSVITypeInfo ()


    Detailed Description

    The DOMPSVITypeInfo interface represent the PSVI info used by DOMElement or DOMAttr nodes, specified in the schemas associated with the document.

    Member Enumeration Documentation

    Enumerator:
    PSVI_Validity 
    PSVI_Validation_Attempted 
    PSVI_Type_Definition_Type 
    PSVI_Type_Definition_Name 
    PSVI_Type_Definition_Namespace 
    PSVI_Type_Definition_Anonymous 
    PSVI_Nil 
    PSVI_Member_Type_Definition_Name 
    PSVI_Member_Type_Definition_Namespace 
    PSVI_Member_Type_Definition_Anonymous 
    PSVI_Schema_Default 
    PSVI_Schema_Normalized_Value 
    PSVI_Schema_Specified 


    Constructor & Destructor Documentation

    DOMPSVITypeInfo::DOMPSVITypeInfo (  )  [protected]

    virtual DOMPSVITypeInfo::~DOMPSVITypeInfo (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual const XMLCh* DOMPSVITypeInfo::getStringProperty ( PSVIProperty  prop  )  const [pure virtual]

    Returns the string value of the specified PSVI property associated to a DOMElement or DOMAttr, or null if not available.

    Returns:
    the string value of the specified PSVI property associated to a DOMElement or DOMAttr, or null if not available.

    virtual int DOMPSVITypeInfo::getNumericProperty ( PSVIProperty  prop  )  const [pure virtual]

    Returns the numeric value of the specified PSVI property associated to a DOMElement or DOMAttr, or null if not available.

    Returns:
    the numeric value of the specified PSVI property associated to a DOMElement or DOMAttr, or null if not available.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLDTDDescription-members.html0000644000175000017500000001371511363620006024246 0ustar borisboris Xerces-C++: Member List

    XMLDTDDescription Member List

    This is the complete list of members for XMLDTDDescription, including all inherited members.

    getGrammarKey() const =0XMLGrammarDescription [pure virtual]
    getGrammarType() const XMLDTDDescription [virtual]
    getMemoryManager() const XMLGrammarDescription
    getRootName() const =0XMLDTDDescription [pure virtual]
    getSystemId() const XMLDTDDescription [virtual]
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    setRootName(const XMLCh *const)=0XMLDTDDescription [pure virtual]
    setSystemId(const XMLCh *const)XMLDTDDescription [virtual]
    XMemory()XMemory [protected]
    XMLDTDDescription(MemoryManager *const memMgr=XMLPlatformUtils::fgMemoryManager)XMLDTDDescription [protected]
    XMLGrammarDescription(MemoryManager *const memMgr=XMLPlatformUtils::fgMemoryManager)XMLGrammarDescription [protected]
    ~XMLDTDDescription()XMLDTDDescription [virtual]
    ~XMLGrammarDescription()XMLGrammarDescription [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSModelGroup.html0000644000175000017500000004010211363620006021734 0ustar borisboris Xerces-C++: XSModelGroup Class Reference

    XSModelGroup Class Reference

    Inheritance diagram for XSModelGroup:

    XSObject XMemory

    List of all members.

    Public Types

    enum  COMPOSITOR_TYPE { COMPOSITOR_SEQUENCE = 1, COMPOSITOR_CHOICE = 2, COMPOSITOR_ALL = 3 }

    Public Member Functions

    Constructors
     XSModelGroup (COMPOSITOR_TYPE compositorType, XSParticleList *const particleList, XSAnnotation *const annot, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     The default constructor.
    Destructor
     ~XSModelGroup ()
    XSModelGroup methods
    COMPOSITOR_TYPE getCompositor () const
     [compositor]: one of all, choice or sequence.
    XSParticleListgetParticles () const
     A list of [particles].
    XSAnnotationgetAnnotation () const
     Optional.

    Protected Attributes

    COMPOSITOR_TYPE fCompositorType
    XSParticleListfParticleList
    XSAnnotationfAnnotation


    Member Enumeration Documentation

    Enumerator:
    COMPOSITOR_SEQUENCE  This constant value signifies a sequence operator.
    COMPOSITOR_CHOICE  This constant value signifies a choice operator.
    COMPOSITOR_ALL  This content model represents a simplified version of the SGML &-Connector and is limited to the top-level of any content model.

    No element in the all content model may appear more than once.


    Constructor & Destructor Documentation

    XSModelGroup::XSModelGroup ( COMPOSITOR_TYPE  compositorType,
    XSParticleList *const   particleList,
    XSAnnotation *const   annot,
    XSModel *const   xsModel,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    The default constructor.

    Parameters:
    compositorType 
    particleList 
    annot 
    xsModel 
    manager The configurable memory manager

    XSModelGroup::~XSModelGroup (  ) 


    Member Function Documentation

    XSModelGroup::COMPOSITOR_TYPE XSModelGroup::getCompositor (  )  const

    [compositor]: one of all, choice or sequence.

    The valid constants values are: COMPOSITOR_SEQUENCE, COMPOSITOR_CHOICE, COMPOSITOR_ALL.

    References fCompositorType.

    XSParticleList * XSModelGroup::getParticles (  )  const

    A list of [particles].

    References fParticleList.

    XSAnnotation * XSModelGroup::getAnnotation (  )  const

    Optional.

    An [annotation].

    References fAnnotation.


    Member Data Documentation


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XSParticle_8hpp.html0000644000175000017500000000431511363620005021340 0ustar borisboris Xerces-C++: XSParticle.hpp File Reference

    XSParticle.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XSParticle

    Defines

    #define XERCESC_INCLUDE_GUARD_XSPARTICLE_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XSPARTICLE_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLEntityHandler_8hpp.html0000644000175000017500000000471311363620005022457 0ustar borisboris Xerces-C++: XMLEntityHandler.hpp File Reference

    XMLEntityHandler.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLEntityHandler
     This abstract class is a callback mechanism for the scanner. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_XMLENTITYHANDLER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XMLENTITYHANDLER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDefaultHandler.html0000644000175000017500000026253411363620005022304 0ustar borisboris Xerces-C++: DefaultHandler Class Reference

    DefaultHandler Class Reference

    Default base class for SAX2 handlers. More...

    Inheritance diagram for DefaultHandler:

    EntityResolver DTDHandler ContentHandler ErrorHandler LexicalHandler DeclHandler

    List of all members.

    Public Member Functions

     DefaultHandler ()
    virtual ~DefaultHandler ()
    Default handlers for the DocumentHandler interface
    virtual void characters (const XMLCh *const chars, const XMLSize_t length)
     Receive notification of character data inside an element.
    virtual void endDocument ()
     Receive notification of the end of the document.
    virtual void endElement (const XMLCh *const uri, const XMLCh *const localname, const XMLCh *const qname)
     Receive notification of the end of an element.
    virtual void ignorableWhitespace (const XMLCh *const chars, const XMLSize_t length)
     Receive notification of ignorable whitespace in element content.
    virtual void processingInstruction (const XMLCh *const target, const XMLCh *const data)
     Receive notification of a processing instruction.
    virtual void resetDocument ()
     Reset the Document object on its reuse.
    Default implementation of DocumentHandler interface
    virtual void setDocumentLocator (const Locator *const locator)
     Receive a Locator object for document events.
    virtual void startDocument ()
     Receive notification of the beginning of the document.
    virtual void startElement (const XMLCh *const uri, const XMLCh *const localname, const XMLCh *const qname, const Attributes &attrs)
     Receive notification of the start of an element.
    virtual void startPrefixMapping (const XMLCh *const prefix, const XMLCh *const uri)
     Receive notification of the start of an namespace prefix mapping.
    virtual void endPrefixMapping (const XMLCh *const prefix)
     Receive notification of the end of an namespace prefix mapping.
    virtual void skippedEntity (const XMLCh *const name)
     Receive notification of a skipped entity.
    Default implementation of the EntityResolver interface.
    virtual InputSourceresolveEntity (const XMLCh *const publicId, const XMLCh *const systemId)
     Resolve an external entity.
    Default implementation of the ErrorHandler interface
    virtual void error (const SAXParseException &exc)
     Receive notification of a recoverable parser error.
    virtual void fatalError (const SAXParseException &exc)
     Report a fatal XML parsing error.
    virtual void warning (const SAXParseException &exc)
     Receive notification of a parser warning.
    virtual void resetErrors ()
     Reset the Error handler object on its reuse.
    Default implementation of DTDHandler interface.
    virtual void notationDecl (const XMLCh *const name, const XMLCh *const publicId, const XMLCh *const systemId)
     Receive notification of a notation declaration.
    virtual void resetDocType ()
     Reset the DTD object on its reuse.
    virtual void unparsedEntityDecl (const XMLCh *const name, const XMLCh *const publicId, const XMLCh *const systemId, const XMLCh *const notationName)
     Receive notification of an unparsed entity declaration.
    Default implementation of LexicalHandler interface.
    virtual void comment (const XMLCh *const chars, const XMLSize_t length)
     Receive notification of comments.
    virtual void endCDATA ()
     Receive notification of the end of a CDATA section.
    virtual void endDTD ()
     Receive notification of the end of the DTD declarations.
    virtual void endEntity (const XMLCh *const name)
     Receive notification of the end of an entity.
    virtual void startCDATA ()
     Receive notification of the start of a CDATA section.
    virtual void startDTD (const XMLCh *const name, const XMLCh *const publicId, const XMLCh *const systemId)
     Receive notification of the start of the DTD declarations.
    virtual void startEntity (const XMLCh *const name)
     Receive notification of the start of an entity.
    Default implementation of DeclHandler interface.
    virtual void elementDecl (const XMLCh *const name, const XMLCh *const model)
     Report an element type declaration.
    virtual void attributeDecl (const XMLCh *const eName, const XMLCh *const aName, const XMLCh *const type, const XMLCh *const mode, const XMLCh *const value)
     Report an attribute type declaration.
    virtual void internalEntityDecl (const XMLCh *const name, const XMLCh *const value)
     Report an internal entity declaration.
    virtual void externalEntityDecl (const XMLCh *const name, const XMLCh *const publicId, const XMLCh *const systemId)
     Report a parsed external entity declaration.


    Detailed Description

    Default base class for SAX2 handlers.

    This class implements the default behaviour for SAX2 interfaces: EntityResolver, DTDHandler, ContentHandler, ErrorHandler, LexicalHandler, and DeclHandler.

    Application writers can extend this class when they need to implement only part of an interface; parser writers can instantiate this class to provide default handlers when the application has not supplied its own.

    Note that the use of this class is optional.

    See also:
    EntityResolver::EntityResolver

    DTDHandler::DTDHandler

    ContentHandler::ContentHandler

    ErrorHandler::ErrorHandler

    LexicalHandler::LexicalHandler

    DeclHandler::DeclHandler


    Constructor & Destructor Documentation

    DefaultHandler::DefaultHandler (  ) 

    virtual DefaultHandler::~DefaultHandler (  )  [virtual]


    Member Function Documentation

    void DefaultHandler::characters ( const XMLCh *const  chars,
    const XMLSize_t  length 
    ) [virtual]

    Receive notification of character data inside an element.

    By default, do nothing. Application writers may override this method to take specific actions for each chunk of character data (such as adding the data to a node or buffer, or printing it to a file).

    Parameters:
    chars The characters.
    length The number of characters to use from the character array.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    See also:
    DocumentHandler::characters

    Implements ContentHandler.

    void DefaultHandler::endDocument (  )  [virtual]

    Receive notification of the end of the document.

    By default, do nothing. Application writers may override this method in a subclass to take specific actions at the beginning of a document (such as finalising a tree or closing an output file).

    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    See also:
    DocumentHandler::endDocument

    Implements ContentHandler.

    void DefaultHandler::endElement ( const XMLCh *const  uri,
    const XMLCh *const  localname,
    const XMLCh *const  qname 
    ) [virtual]

    Receive notification of the end of an element.

    By default, do nothing. Application writers may override this method in a subclass to take specific actions at the end of each element (such as finalising a tree node or writing output to a file).

    Parameters:
    uri The URI of the associated namespace for this element
    localname The local part of the element name
    qname The QName of this element
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    See also:
    DocumentHandler::endElement

    Implements ContentHandler.

    void DefaultHandler::ignorableWhitespace ( const XMLCh *const  chars,
    const XMLSize_t  length 
    ) [virtual]

    Receive notification of ignorable whitespace in element content.

    By default, do nothing. Application writers may override this method to take specific actions for each chunk of ignorable whitespace (such as adding data to a node or buffer, or printing it to a file).

    Parameters:
    chars The whitespace characters.
    length The number of characters to use from the character array.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    See also:
    DocumentHandler::ignorableWhitespace

    Implements ContentHandler.

    void DefaultHandler::processingInstruction ( const XMLCh *const  target,
    const XMLCh *const  data 
    ) [virtual]

    Receive notification of a processing instruction.

    By default, do nothing. Application writers may override this method in a subclass to take specific actions for each processing instruction, such as setting status variables or invoking other methods.

    Parameters:
    target The processing instruction target.
    data The processing instruction data, or null if none is supplied.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    See also:
    DocumentHandler::processingInstruction

    Implements ContentHandler.

    void DefaultHandler::resetDocument (  )  [virtual]

    Reset the Document object on its reuse.

    See also:
    DocumentHandler::resetDocument

    void DefaultHandler::setDocumentLocator ( const Locator *const  locator  )  [virtual]

    Receive a Locator object for document events.

    By default, do nothing. Application writers may override this method in a subclass if they wish to store the locator for use with other document events.

    Parameters:
    locator A locator for all SAX document events.
    See also:
    DocumentHandler::setDocumentLocator

    Locator

    Implements ContentHandler.

    void DefaultHandler::startDocument (  )  [virtual]

    Receive notification of the beginning of the document.

    By default, do nothing. Application writers may override this method in a subclass to take specific actions at the beginning of a document (such as allocating the root node of a tree or creating an output file).

    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    See also:
    DocumentHandler::startDocument

    Implements ContentHandler.

    void DefaultHandler::startElement ( const XMLCh *const  uri,
    const XMLCh *const  localname,
    const XMLCh *const  qname,
    const Attributes attrs 
    ) [virtual]

    Receive notification of the start of an element.

    By default, do nothing. Application writers may override this method in a subclass to take specific actions at the start of each element (such as allocating a new tree node or writing output to a file).

    Parameters:
    uri The URI of the associated namespace for this element
    localname the local part of the element name
    qname the QName of this element
    attrs The specified or defaulted attributes.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    See also:
    DocumentHandler::startElement

    Implements ContentHandler.

    void DefaultHandler::startPrefixMapping ( const XMLCh *const  prefix,
    const XMLCh *const  uri 
    ) [virtual]

    Receive notification of the start of an namespace prefix mapping.

    By default, do nothing. Application writers may override this method in a subclass to take specific actions at the start of each namespace prefix mapping.

    Parameters:
    prefix The namespace prefix used
    uri The namespace URI used.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    See also:
    DocumentHandler::startPrefixMapping

    Implements ContentHandler.

    void DefaultHandler::endPrefixMapping ( const XMLCh *const  prefix  )  [virtual]

    Receive notification of the end of an namespace prefix mapping.

    By default, do nothing. Application writers may override this method in a subclass to take specific actions at the end of each namespace prefix mapping.

    Parameters:
    prefix The namespace prefix used
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    See also:
    DocumentHandler::endPrefixMapping

    Implements ContentHandler.

    void DefaultHandler::skippedEntity ( const XMLCh *const  name  )  [virtual]

    Receive notification of a skipped entity.

    The parser will invoke this method once for each entity skipped. All processors may skip external entities, depending on the values of the features:
    http://xml.org/sax/features/external-general-entities
    http://xml.org/sax/features/external-parameter-entities

    Introduced with SAX2

    Parameters:
    name The name of the skipped entity. If it is a parameter entity, the name will begin with %, and if it is the external DTD subset, it will be the string [dtd].
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.

    Implements ContentHandler.

    InputSource * DefaultHandler::resolveEntity ( const XMLCh *const  publicId,
    const XMLCh *const  systemId 
    ) [virtual]

    Resolve an external entity.

    Always return null, so that the parser will use the system identifier provided in the XML document. This method implements the SAX default behaviour: application writers can override it in a subclass to do special translations such as catalog lookups or URI redirection.

    Parameters:
    publicId The public identifier, or null if none is available.
    systemId The system identifier provided in the XML document.
    Returns:
    The new input source, or null to require the default behaviour. The returned InputSource is owned by the parser which is responsible to clean up the memory.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    See also:
    EntityResolver::resolveEntity

    Implements EntityResolver.

    void DefaultHandler::error ( const SAXParseException exc  )  [virtual]

    Receive notification of a recoverable parser error.

    The default implementation does nothing. Application writers may override this method in a subclass to take specific actions for each error, such as inserting the message in a log file or printing it to the console.

    Parameters:
    exc The warning information encoded as an exception.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    See also:
    ErrorHandler::warning

    SAXParseException::SAXParseException

    Implements ErrorHandler.

    void DefaultHandler::fatalError ( const SAXParseException exc  )  [virtual]

    Report a fatal XML parsing error.

    The default implementation throws a SAXParseException. Application writers may override this method in a subclass if they need to take specific actions for each fatal error (such as collecting all of the errors into a single report): in any case, the application must stop all regular processing when this method is invoked, since the document is no longer reliable, and the parser may no longer report parsing events.

    Parameters:
    exc The error information encoded as an exception.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    See also:
    ErrorHandler::fatalError

    SAXParseException::SAXParseException

    Implements ErrorHandler.

    void DefaultHandler::warning ( const SAXParseException exc  )  [virtual]

    Receive notification of a parser warning.

    The default implementation does nothing. Application writers may override this method in a subclass to take specific actions for each warning, such as inserting the message in a log file or printing it to the console.

    Parameters:
    exc The warning information encoded as an exception.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    See also:
    ErrorHandler::warning

    SAXParseException::SAXParseException

    Implements ErrorHandler.

    void DefaultHandler::resetErrors (  )  [virtual]

    Reset the Error handler object on its reuse.

    See also:
    ErrorHandler::resetErrors

    Implements ErrorHandler.

    void DefaultHandler::notationDecl ( const XMLCh *const  name,
    const XMLCh *const  publicId,
    const XMLCh *const  systemId 
    ) [virtual]

    Receive notification of a notation declaration.

    By default, do nothing. Application writers may override this method in a subclass if they wish to keep track of the notations declared in a document.

    Parameters:
    name The notation name.
    publicId The notation public identifier, or null if not available.
    systemId The notation system identifier.
    See also:
    DTDHandler::notationDecl

    Implements DTDHandler.

    void DefaultHandler::resetDocType (  )  [virtual]

    Reset the DTD object on its reuse.

    See also:
    DTDHandler::resetDocType

    Implements DTDHandler.

    void DefaultHandler::unparsedEntityDecl ( const XMLCh *const  name,
    const XMLCh *const  publicId,
    const XMLCh *const  systemId,
    const XMLCh *const  notationName 
    ) [virtual]

    Receive notification of an unparsed entity declaration.

    By default, do nothing. Application writers may override this method in a subclass to keep track of the unparsed entities declared in a document.

    Parameters:
    name The entity name.
    publicId The entity public identifier, or null if not available.
    systemId The entity system identifier.
    notationName The name of the associated notation.
    See also:
    DTDHandler::unparsedEntityDecl

    Implements DTDHandler.

    void DefaultHandler::comment ( const XMLCh *const  chars,
    const XMLSize_t  length 
    ) [virtual]

    Receive notification of comments.

    The Parser will call this method to report each occurrence of a comment in the XML document.

    The application must not attempt to read from the array outside of the specified range.

    Parameters:
    chars The characters from the XML document.
    length The number of characters to read from the array.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.

    Implements LexicalHandler.

    void DefaultHandler::endCDATA (  )  [virtual]

    Receive notification of the end of a CDATA section.

    The SAX parser will invoke this method at the end of each CDATA parsed.

    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.

    Implements LexicalHandler.

    void DefaultHandler::endDTD (  )  [virtual]

    Receive notification of the end of the DTD declarations.

    The SAX parser will invoke this method at the end of the DTD

    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.

    Implements LexicalHandler.

    void DefaultHandler::endEntity ( const XMLCh *const  name  )  [virtual]

    Receive notification of the end of an entity.

    The SAX parser will invoke this method at the end of an entity

    Parameters:
    name The name of the entity that is ending.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.

    Implements LexicalHandler.

    void DefaultHandler::startCDATA (  )  [virtual]

    Receive notification of the start of a CDATA section.

    The SAX parser will invoke this method at the start of each CDATA parsed.

    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.

    Implements LexicalHandler.

    void DefaultHandler::startDTD ( const XMLCh *const  name,
    const XMLCh *const  publicId,
    const XMLCh *const  systemId 
    ) [virtual]

    Receive notification of the start of the DTD declarations.

    The SAX parser will invoke this method at the start of the DTD

    Parameters:
    name The document type name.
    publicId The declared public identifier for the external DTD subset, or null if none was declared.
    systemId The declared system identifier for the external DTD subset, or null if none was declared.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.

    Implements LexicalHandler.

    void DefaultHandler::startEntity ( const XMLCh *const  name  )  [virtual]

    Receive notification of the start of an entity.

    The SAX parser will invoke this method at the start of an entity

    Parameters:
    name The name of the entity that is starting.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.

    Implements LexicalHandler.

    void DefaultHandler::elementDecl ( const XMLCh *const  name,
    const XMLCh *const  model 
    ) [virtual]

    Report an element type declaration.

    The content model will consist of the string "EMPTY", the string "ANY", or a parenthesised group, optionally followed by an occurrence indicator. The model will be normalized so that all parameter entities are fully resolved and all whitespace is removed,and will include the enclosing parentheses. Other normalization (such as removing redundant parentheses or simplifying occurrence indicators) is at the discretion of the parser.

    Parameters:
    name The element type name.
    model The content model as a normalized string.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.

    Implements DeclHandler.

    void DefaultHandler::attributeDecl ( const XMLCh *const  eName,
    const XMLCh *const  aName,
    const XMLCh *const  type,
    const XMLCh *const  mode,
    const XMLCh *const  value 
    ) [virtual]

    Report an attribute type declaration.

    Only the effective (first) declaration for an attribute will be reported.

    Parameters:
    eName The name of the associated element.
    aName The name of the attribute.
    type A string representing the attribute type.
    mode A string representing the attribute defaulting mode ("#IMPLIED", "#REQUIRED", or "#FIXED") or null if none of these applies.
    value A string representing the attribute's default value, or null if there is none.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.

    Implements DeclHandler.

    void DefaultHandler::internalEntityDecl ( const XMLCh *const  name,
    const XMLCh *const  value 
    ) [virtual]

    Report an internal entity declaration.

    Only the effective (first) declaration for each entity will be reported. All parameter entities in the value will be expanded, but general entities will not.

    Parameters:
    name The name of the entity. If it is a parameter entity, the name will begin with ''.
    value The replacement text of the entity.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.

    Implements DeclHandler.

    void DefaultHandler::externalEntityDecl ( const XMLCh *const  name,
    const XMLCh *const  publicId,
    const XMLCh *const  systemId 
    ) [virtual]

    Report a parsed external entity declaration.

    Only the effective (first) declaration for each entity will be reported.

    Parameters:
    name The name of the entity. If it is a parameter entity, the name will begin with ''.
    publicId The The declared public identifier of the entity, or null if none was declared.
    systemId The declared system identifier of the entity.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.

    Implements DeclHandler.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMException.png0000644000175000017500000000153111363620005021524 0ustar borisboris‰PNG  IHDR£PFÊÄPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfïIDATxœí˜}Λ0 ƃ&½ǾAئMÚy^©÷?ÂbÇR‚ÓŽ´ (O¥BüàùBSGV¥LªihÀ¡²:ÒK*«#½Ä¡²’„,­–k³YÍc -(IˆY¨|ê°Í?›}ëHÆR…‘qð}å{΂/­í9´ $ßQa”YúóÅ@ˆÃ|´çЂ4$šK¾¿¸³„ÌÊÑžC ÚA2Ö†^$€ë …?®<)R\ñd¨ñùf. iµ/ a_JW¼AV¼!©Êì²O:¼IéÛtõ×Ö9TVGz‰Ce]éz½ŠúútõuA¤Ûôé ªëzH_·Û§S¨­ "]qyèHgPG:ƒ:ÒԑΠ–nmiª€TÃÃÔ륩Ó‘Mx˜Ž¤hjÄÃt$ES#¦#)šñ0IÑÔˆ‡éHЦF Xerces-C++: DOMNodeIterator.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMXPathEvaluator_8hpp.html0000644000175000017500000000515711363620005022576 0ustar borisboris Xerces-C++: DOMXPathEvaluator.hpp File Reference

    DOMXPathEvaluator.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMXPathEvaluator
     The evaluation of XPath expressions is provided by DOMXPathEvaluator. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMXPATHEVALUATOR_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMXPATHEVALUATOR_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classPanicHandler.html0000644000175000017500000003246511363620006021751 0ustar borisboris Xerces-C++: PanicHandler Class Reference

    PanicHandler Class Reference

    Receive notification of panic. More...

    Inheritance diagram for PanicHandler:

    DefaultPanicHandler

    List of all members.

    hidden Constructors

     PanicHandler ()
     Default constructor.
    virtual ~PanicHandler ()
     Destructor.

    Public Types

    Public Types
    enum  PanicReasons {
      Panic_NoTransService, Panic_NoDefTranscoder, Panic_CantFindLib, Panic_UnknownMsgDomain,
      Panic_CantLoadMsgDomain, Panic_SynchronizationErr, Panic_SystemInit, Panic_AllStaticInitErr,
      Panic_MutexErr, PanicReasons_Count
    }

    Public Member Functions

    The virtual panic handler interface
    virtual void panic (const PanicHandler::PanicReasons reason)=0
     Receive notification of panic.

    Static Public Member Functions

    static const char * getPanicReasonString (const PanicHandler::PanicReasons reason)


    Detailed Description

    Receive notification of panic.

    This is the interface, through which the Xercesc reports a panic to the application.

    Application may implement this interface, instantiate an object of the derivative, and plug it to Xercesc in the invocation to XMLPlatformUtils::Initialize(), if it prefers to handling panic itself rather than Xercesc doing it.


    Member Enumeration Documentation

    Enumerator:
    Panic_NoTransService 
    Panic_NoDefTranscoder 
    Panic_CantFindLib 
    Panic_UnknownMsgDomain 
    Panic_CantLoadMsgDomain 
    Panic_SynchronizationErr 
    Panic_SystemInit 
    Panic_AllStaticInitErr 
    Panic_MutexErr 
    PanicReasons_Count 


    Constructor & Destructor Documentation

    PanicHandler::PanicHandler (  )  [protected]

    Default constructor.

    virtual PanicHandler::~PanicHandler (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual void PanicHandler::panic ( const PanicHandler::PanicReasons  reason  )  [pure virtual]

    Receive notification of panic.

    This method is called when an unrecoverable error has occurred in the Xerces library.

    This method must not return normally, otherwise, the results are undefined.

    Ways of handling this call could include throwing an exception or exiting the process.

    Once this method has been called, the results of calling any other Xerces API, or using any existing Xerces objects are undefined.

    Parameters:
    reason The reason of panic

    Implemented in DefaultPanicHandler.

    static const char* PanicHandler::getPanicReasonString ( const PanicHandler::PanicReasons  reason  )  [static]


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLURL_8hpp.html0000644000175000017500000000424511363620005020347 0ustar borisboris Xerces-C++: XMLURL.hpp File Reference

    XMLURL.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLURL

    Defines

    #define XERCESC_INCLUDE_GUARD_XMLURL_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XMLURL_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLValidator.html0000644000175000017500000013125411363620006021723 0ustar borisboris Xerces-C++: XMLValidator Class Reference

    XMLValidator Class Reference

    This abstract class provides the interface for all validators. More...

    Inheritance diagram for XMLValidator:

    XMemory

    List of all members.

    Public Member Functions

    Destructor
    virtual ~XMLValidator ()
     The derived class should clean up its allocated data, then this class will do the same for data allocated at this level.
    Virtual validator interface
    virtual bool checkContent (XMLElementDecl *const elemDecl, QName **const children, XMLSize_t childCount, XMLSize_t *indexFailingChild)=0
     The derived class should look up its declaration of the passed element from its element pool.
    virtual void faultInAttr (XMLAttr &toFill, const XMLAttDef &attDef) const =0
     The derived class should fault in the passed XMLAttr value.
    virtual void preContentValidation (bool reuseGrammar, bool validateDefAttr=false)=0
     This method is called by the scanner after a Grammar is scanned.
    virtual void postParseValidation ()=0
     This method is called by the scanner after the parse has completed.
    virtual void reset ()=0
     This method is called by the scanner before a new document is about to start.
    virtual bool requiresNamespaces () const =0
     The derived class should return a boolean that indicates whether it requires namespace processing or not.
    virtual void validateAttrValue (const XMLAttDef *attDef, const XMLCh *const attrValue, bool preValidation=false, const XMLElementDecl *elemDecl=0)=0
     The derived class should apply any rules to the passed attribute value that are above and beyond those defined by XML 1.0.
    virtual void validateElement (const XMLElementDecl *elemDef)=0
     The derived class should apply any rules to the passed element decl that are above and beyond those defined by XML 1.0.
    virtual Grammar * getGrammar () const =0
     Retrieve the Grammar used.
    virtual void setGrammar (Grammar *aGrammar)=0
     Set the Grammar.
    Virtual DTD handler interface
    virtual bool handlesDTD () const =0
     This method allows the scanner to ask the validator if it handles DTDs or not.
    Virtual Schema handler interface
    virtual bool handlesSchema () const =0
     This method allows the scanner to ask the validator if it handles Schema or not.
    Setter methods
    void setScannerInfo (XMLScanner *const owningScanner, ReaderMgr *const readerMgr, XMLBufferMgr *const bufMgr)
    void setErrorReporter (XMLErrorReporter *const errorReporter)
     This method is called to set an error reporter on the validator via which it will report any errors it sees during parsing or validation.
    Error emittor methods
    void emitError (const XMLValid::Codes toEmit)
     This call is a convenience by which validators can emit errors.
    void emitError (const XMLValid::Codes toEmit, const XMLCh *const text1, const XMLCh *const text2=0, const XMLCh *const text3=0, const XMLCh *const text4=0)
    void emitError (const XMLValid::Codes toEmit, const char *const text1, const char *const text2=0, const char *const text3=0, const char *const text4=0)
    void emitError (const XMLValid::Codes toEmit, const XMLExcepts::Codes originalErrorCode, const XMLCh *const text1=0, const XMLCh *const text2=0, const XMLCh *const text3=0, const XMLCh *const text4=0)

    Protected Member Functions

     XMLValidator (XMLErrorReporter *const errReporter=0)
    const XMLBufferMgr * getBufMgr () const
    XMLBufferMgr * getBufMgr ()
    const ReaderMgr * getReaderMgr () const
    ReaderMgr * getReaderMgr ()
    const XMLScanner * getScanner () const
    XMLScanner * getScanner ()


    Detailed Description

    This abstract class provides the interface for all validators.

    This is the simple amount of API that all validators must honor, in order for the scanner to use them to do validation. All validators will actually contain much more functionality than is accessible via this common API, but that functionality requires that you know what type of validator you are dealing with.

    Basically, at this level, the primary concern is to be able to query core information about elements and attributes. Adding decls to the validator requires that you go through the derived interface because they all have their own decl types. At this level, we can return information via the base decl classes, from which each validator derives its own decl classes.


    Constructor & Destructor Documentation

    virtual XMLValidator::~XMLValidator (  )  [virtual]

    The derived class should clean up its allocated data, then this class will do the same for data allocated at this level.

    XMLValidator::XMLValidator ( XMLErrorReporter *const   errReporter = 0  )  [protected]


    Member Function Documentation

    virtual bool XMLValidator::checkContent ( XMLElementDecl *const   elemDecl,
    QName **const   children,
    XMLSize_t  childCount,
    XMLSize_t indexFailingChild 
    ) [pure virtual]

    The derived class should look up its declaration of the passed element from its element pool.

    It should then use the content model description contained in that element declaration to validate that the passed list of child elements are valid for that content model. The count can be zero, indicating no child elements.

    Note that whitespace and text content are not validated here. Those are handled by the scanner. So only element ids are provided here.

    Parameters:
    elemDecl The element whose content is to be checked.
    children An array of element QName which represent the elements found within the parent element, i.e. the content to be validated.
    childCount The number of elements in the childIds array. It can be zero if the element had none.
    indexFailingChild On return, it will contain the index of the children failing validation, if the retun value is false

    virtual void XMLValidator::faultInAttr ( XMLAttr toFill,
    const XMLAttDef attDef 
    ) const [pure virtual]

    The derived class should fault in the passed XMLAttr value.

    It should use the passeed attribute definition (which is passed via the base type so it must often be downcast to the appropriate type for the derived validator class), to fill in the passed attribute. This is done as a performance enhancement since the derived class has more direct access to the information.

    virtual void XMLValidator::preContentValidation ( bool  reuseGrammar,
    bool  validateDefAttr = false 
    ) [pure virtual]

    This method is called by the scanner after a Grammar is scanned.

    virtual void XMLValidator::postParseValidation (  )  [pure virtual]

    This method is called by the scanner after the parse has completed.

    It gives the validator a chance to check certain things that can only be checked after the whole document has been parsed, such as referential integrity of ID/IDREF pairs and so forth. The validator should just issue errors for any problems it finds.

    virtual void XMLValidator::reset (  )  [pure virtual]

    This method is called by the scanner before a new document is about to start.

    It gives the validator a change to reset itself in preparation for another validation pass.

    virtual bool XMLValidator::requiresNamespaces (  )  const [pure virtual]

    The derived class should return a boolean that indicates whether it requires namespace processing or not.

    Some do and some allow it to be optional. This flag is used to control whether the client code's requests to disable namespace processing can be honored or not.

    virtual void XMLValidator::validateAttrValue ( const XMLAttDef attDef,
    const XMLCh *const   attrValue,
    bool  preValidation = false,
    const XMLElementDecl elemDecl = 0 
    ) [pure virtual]

    The derived class should apply any rules to the passed attribute value that are above and beyond those defined by XML 1.0.

    The scanner itself will impose XML 1.0 rules, based on the type of the attribute. This will generally be used to check things such as range checks and other datatype related validation.

    If the value breaks any rules as defined by the derived class, it should just issue errors as usual.

    virtual void XMLValidator::validateElement ( const XMLElementDecl elemDef  )  [pure virtual]

    The derived class should apply any rules to the passed element decl that are above and beyond those defined by XML 1.0.

    If the value breaks any rules as defined by the derived class, it should just issue errors as usual.

    virtual Grammar* XMLValidator::getGrammar (  )  const [pure virtual]

    Retrieve the Grammar used.

    virtual void XMLValidator::setGrammar ( Grammar *  aGrammar  )  [pure virtual]

    Set the Grammar.

    virtual bool XMLValidator::handlesDTD (  )  const [pure virtual]

    This method allows the scanner to ask the validator if it handles DTDs or not.

    virtual bool XMLValidator::handlesSchema (  )  const [pure virtual]

    This method allows the scanner to ask the validator if it handles Schema or not.

    void XMLValidator::setScannerInfo ( XMLScanner *const   owningScanner,
    ReaderMgr *const   readerMgr,
    XMLBufferMgr *const   bufMgr 
    )

    Parameters:
    owningScanner This is a pointer to the scanner to which the validator belongs. The validator will often need to query state data from the scanner.
    readerMgr This is a pointer to the reader manager that is being used by the scanner.
    bufMgr This is the buffer manager of the scanner. This is provided as a convenience so that the validator doesn't have to create its own buffer manager during the parse process.

    void XMLValidator::setErrorReporter ( XMLErrorReporter *const   errorReporter  ) 

    This method is called to set an error reporter on the validator via which it will report any errors it sees during parsing or validation.

    This is generally called by the owning scanner.

    Parameters:
    errorReporter A pointer to the error reporter to use. This is not adopted, just referenced so the caller remains responsible for its cleanup, if any.

    void XMLValidator::emitError ( const XMLValid::Codes  toEmit  ) 

    This call is a convenience by which validators can emit errors.

    Most of the grunt work of loading the text, getting the current source location, ect... is handled here.

    If the loaded text has replacement parameters, then text strings can be passed. These will be used to replace the tokens {0}, {1}, {2}, and {3} in the order passed. So text1 will replace {0}, text2 will replace {1}, and so forth.

    textX Up to four replacement parameters. They can be provided as either XMLCh strings, or local code page strings which will be transcoded internally.

    Parameters:
    toEmit The error code to emit. it must be one of the defined validator error codes.

    void XMLValidator::emitError ( const XMLValid::Codes  toEmit,
    const XMLCh *const   text1,
    const XMLCh *const   text2 = 0,
    const XMLCh *const   text3 = 0,
    const XMLCh *const   text4 = 0 
    )

    void XMLValidator::emitError ( const XMLValid::Codes  toEmit,
    const char *const   text1,
    const char *const   text2 = 0,
    const char *const   text3 = 0,
    const char *const   text4 = 0 
    )

    void XMLValidator::emitError ( const XMLValid::Codes  toEmit,
    const XMLExcepts::Codes  originalErrorCode,
    const XMLCh *const   text1 = 0,
    const XMLCh *const   text2 = 0,
    const XMLCh *const   text3 = 0,
    const XMLCh *const   text4 = 0 
    )

    const XMLBufferMgr * XMLValidator::getBufMgr (  )  const [protected]

    XMLBufferMgr * XMLValidator::getBufMgr (  )  [protected]

    const ReaderMgr * XMLValidator::getReaderMgr (  )  const [protected]

    ReaderMgr * XMLValidator::getReaderMgr (  )  [protected]

    const XMLScanner * XMLValidator::getScanner (  )  const [protected]

    XMLScanner * XMLValidator::getScanner (  )  [protected]


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLEntityHandler_8hpp-source.html0000644000175000017500000002373211363620005023757 0ustar borisboris Xerces-C++: XMLEntityHandler.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/URLInputSource_8hpp.html0000644000175000017500000000502611363620005022165 0ustar borisboris Xerces-C++: URLInputSource.hpp File Reference

    URLInputSource.hpp File Reference

    Go to the source code of this file.

    Classes

    class  URLInputSource
     This class is a derivative of the standard InputSource class. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_URLINPUTSOURCE_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_URLINPUTSOURCE_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_0x66.html0000644000175000017500000024151111363620005021157 0ustar borisboris Xerces-C++: Class Members
    Here is a list of all class members with links to the classes they belong to:

    - f -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLAttr-members.html0000644000175000017500000001753511363620006022345 0ustar borisboris Xerces-C++: Member List

    XMLAttr Member List

    This is the complete list of members for XMLAttr, including all inherited members.

    getAttName() const XMLAttr
    getName() const XMLAttr
    getPrefix() const XMLAttr
    getQName() const XMLAttr
    getSpecified() const XMLAttr
    getType() const XMLAttr
    getURIId() const XMLAttr
    getValue() const XMLAttr
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    set(const unsigned int uriId, const XMLCh *const attrName, const XMLCh *const attrPrefix, const XMLCh *const attrValue, const XMLAttDef::AttTypes type=XMLAttDef::CData, DatatypeValidator *datatypeValidator=0, const bool isSchema=false)XMLAttr
    set(const unsigned int uriId, const XMLCh *const attrRawName, const XMLCh *const attrValue, const XMLAttDef::AttTypes type=XMLAttDef::CData, DatatypeValidator *datatypeValidator=0, const bool isSchema=false)XMLAttr
    setName(const unsigned int uriId, const XMLCh *const attrName, const XMLCh *const attrPrefix)XMLAttr
    setSpecified(const bool newValue)XMLAttr
    setType(const XMLAttDef::AttTypes newType)XMLAttr
    setURIId(const unsigned int uriId)XMLAttr
    setValue(const XMLCh *const newValue)XMLAttr
    XMemory()XMemory [protected]
    XMLAttr(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLAttr
    XMLAttr(const unsigned int uriId, const XMLCh *const attrName, const XMLCh *const attrPrefix, const XMLCh *const attrValue, const XMLAttDef::AttTypes type=XMLAttDef::CData, const bool specified=true, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager, DatatypeValidator *datatypeValidator=0, const bool isSchema=false)XMLAttr
    XMLAttr(const unsigned int uriId, const XMLCh *const rawName, const XMLCh *const attrValue, const XMLAttDef::AttTypes type=XMLAttDef::CData, const bool specified=true, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager, DatatypeValidator *datatypeValidator=0, const bool isSchema=false)XMLAttr
    ~XMLAttr()XMLAttr


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLFormatTarget.png0000644000175000017500000000235311363620006022212 0ustar borisboris‰PNG  IHDRµˆ’h)PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfIDATxœímŽã †‹Všß8{Ñ®´ç±´Rï„å3 „6ìÔŽ†7U?hâyŸNÌíF¦¿)Dç‡R?fý”¦¨k° ¶wÓ÷c3öö:d·Y@Ý5ØØ~´¯³1ÆõèÅÙ,†CòTŒö¯–´ 6;ÑV6ÿX¶Ë³¹~³O0k±Õ“Ë¥Øü|ólÆ}XØ 6Ï—ÉØÂùÍo:ô›Ï“s}º]‹í¡:f{pÒ[½Ûú`{ ÁvºÛ`{7õ|¯A(m€Q(m€Owi|ê™í~Gi lê™­ç\2Ø.*”6À(”6À(”6À(”6À(”6À(”6À(”6À(”6À(”6À(”6À(”6À(”6À(”6À(”6À(”6À(”6À(”6À(”6À(”6À(”6À(”6À(”6À(”6ðU)M!iŠºÔÛ¡×`;#½ÛAèµÚšìCù–ɧϩØQ•ùPUÞ½•¶íf´g«íXÒVÞ½•ž±Ù®SVö³ÒîÛnZÅ–]·ÒÆÖä}+•جš´k™|¿Å&Ï?]¨ßÜÛ•ÍÎ-71Å1¹4^‹Íõ›}Êû-°)Ùd­¯ÄAªlÙ˜Œýv¹\²õý„íjó-œß¶ãMOë˜T*æI÷UÈ“êByòëGuĦ:f»í®Ç(œÐë{\+K¡×`;#½ºfëø^ƒPÚ£PÚŸzþúžÙzþúžÙzÎ%ƒí¢BiŒBiŒBiŒBiŒBiŒBiŒBi¥>îï("6š0NH‰ÈÔ`k’Elg…qB²Hƒí¬0NHi°Æ É" ¶³Â8!Y¤ÁvV'$‹4ØÎ ã„d‘šLWûs¼Ë§‹ÔP{ìocí1"S¿(*½6ŠH¡f‘©Ávf°k°5ɳå%s]qnKrƒÖEÍY÷m¾ÿ–-_* ®[ål M¨¦=Ç]ƒ·\F—±Í6³ü¥}¡`ØUØ-ز¥L Ó(g3s¬žv†Jy_³ ^²¹bÕÚÄÚÕóëWû£\3¤Êÿá—ôM¶7bËŽ--ÌmZ•l¾=•BwLôjŒ+‘n .Cد}KÎfBeîPs<°™´…[Ü Uþ‡ðCù¦° @ÑoÅR"·*Æd(®¶èÍ/@ ÁDËš Ä– Û ÜølZ¯¥Ö!|ëÍê¯×Ù–Ha ´*r ,?yÚ%F\@!É¥ñ!èµß´^û-UY–§qŸm.É— (ûí P™'¡d3[ ãŽ7aL¦FßReËÇdi)JóòG÷lëRu¶‡*¹ä[6&Í ñ_ó­n©6ßÖ–Øà˜íÁ|‹l:º‡C¶Ê|ÓzÍ“PÍ“i(Äôæ“TØÇìÙÒRnvÄ)ßh~óyÒŸß $˜ã˜4&æIéóä¼Í“_Örbyõºd=C½x]²=ý½ÂTl@ÅfÈØæõRçÅ~Û\3½ÄÙõX÷×ÊaÛ±[“úf;¾Ö Ö{x j¼‡× ÏòÏæçû¨„ÁIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classXercesDOMParser-members.html0000644000175000017500000015223211363620006024012 0ustar borisboris Xerces-C++: Member List

    XercesDOMParser Member List

    This is the complete list of members for XercesDOMParser, including all inherited members.

    AbstractDOMParser(XMLValidator *const valToAdopt=0, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager, XMLGrammarPool *const gramPool=0)AbstractDOMParser [protected]
    adoptDocument()AbstractDOMParser
    attDef(const DTDElementDecl &elemDecl, const DTDAttDef &attDef, const bool ignoring)AbstractDOMParser [virtual]
    cacheGrammarFromParse(const bool newState)XercesDOMParser
    createAttr(const XMLCh *name)AbstractDOMParser [protected, virtual]
    createAttrNS(const XMLCh *namespaceURI, const XMLCh *elemPrefix, const XMLCh *localName, const XMLCh *qName)AbstractDOMParser [protected, virtual]
    createCDATASection(const XMLCh *, XMLSize_t)AbstractDOMParser [protected, virtual]
    createElement(const XMLCh *name)AbstractDOMParser [protected, virtual]
    createElementNS(const XMLCh *namespaceURI, const XMLCh *elemPrefix, const XMLCh *localName, const XMLCh *qName)AbstractDOMParser [protected, virtual]
    createText(const XMLCh *, XMLSize_t)AbstractDOMParser [protected, virtual]
    docCharacters(const XMLCh *const chars, const XMLSize_t length, const bool cdataSection)AbstractDOMParser [virtual]
    docComment(const XMLCh *const comment)AbstractDOMParser [virtual]
    docPI(const XMLCh *const target, const XMLCh *const data)AbstractDOMParser [virtual]
    doctypeComment(const XMLCh *const comment)AbstractDOMParser [virtual]
    doctypeDecl(const DTDElementDecl &elemDecl, const XMLCh *const publicId, const XMLCh *const systemId, const bool hasIntSubset, const bool hasExtSubset=false)AbstractDOMParser [virtual]
    doctypePI(const XMLCh *const target, const XMLCh *const data)AbstractDOMParser [virtual]
    doctypeWhitespace(const XMLCh *const chars, const XMLSize_t length)AbstractDOMParser [virtual]
    elementDecl(const DTDElementDecl &decl, const bool isIgnored)AbstractDOMParser [virtual]
    endAttList(const DTDElementDecl &elemDecl)AbstractDOMParser [virtual]
    endDocument()AbstractDOMParser [virtual]
    endElement(const XMLElementDecl &elemDecl, const unsigned int urlId, const bool isRoot, const XMLCh *const elemPrefix)AbstractDOMParser [virtual]
    endEntityReference(const XMLEntityDecl &entDecl)AbstractDOMParser [virtual]
    endExtSubset()AbstractDOMParser [virtual]
    endInputSource(const InputSource &inputSource)XercesDOMParser [virtual]
    endIntSubset()AbstractDOMParser [virtual]
    entityDecl(const DTDEntityDecl &entityDecl, const bool isPEDecl, const bool isIgnored)AbstractDOMParser [virtual]
    error(const unsigned int errCode, const XMLCh *const msgDomain, const XMLErrorReporter::ErrTypes errType, const XMLCh *const errorText, const XMLCh *const systemId, const XMLCh *const publicId, const XMLFileLoc lineNum, const XMLFileLoc colNum)XercesDOMParser [virtual]
    ErrType_Error enum valueXMLErrorReporter
    ErrType_Fatal enum valueXMLErrorReporter
    ErrType_Warning enum valueXMLErrorReporter
    ErrTypes enum nameXMLErrorReporter
    ErrTypes_Unknown enum valueXMLErrorReporter
    expandSystemId(const XMLCh *const systemId, XMLBuffer &toFill)XercesDOMParser [virtual]
    fBufMgrAbstractDOMParser [protected]
    fCreateCommentNodesAbstractDOMParser [protected]
    fCreateEntityReferenceNodesAbstractDOMParser [protected]
    fCreateSchemaInfoAbstractDOMParser [protected]
    fCurrentEntityAbstractDOMParser [protected]
    fCurrentNodeAbstractDOMParser [protected]
    fCurrentParentAbstractDOMParser [protected]
    fDocumentAbstractDOMParser [protected]
    fDocumentAdoptedByUserAbstractDOMParser [protected]
    fDocumentTypeAbstractDOMParser [protected]
    fDocumentVectorAbstractDOMParser [protected]
    fDoXIncludeAbstractDOMParser [protected]
    fGrammarPoolAbstractDOMParser [protected]
    fGrammarResolverAbstractDOMParser [protected]
    fImplementationFeaturesAbstractDOMParser [protected]
    fIncludeIgnorableWhitespaceAbstractDOMParser [protected]
    fInternalSubsetAbstractDOMParser [protected]
    fMemoryManagerAbstractDOMParser [protected]
    fParseInProgressAbstractDOMParser [protected]
    fPSVIHandlerAbstractDOMParser [protected]
    fScannerAbstractDOMParser [protected]
    fURIStringPoolAbstractDOMParser [protected]
    fValidatorAbstractDOMParser [protected]
    fWithinElementAbstractDOMParser [protected]
    getCalculateSrcOfs() const AbstractDOMParser
    getCreateCommentNodes() const AbstractDOMParser
    getCreateEntityReferenceNodes() const AbstractDOMParser
    getCreateSchemaInfo() const AbstractDOMParser
    getCurrentNode()AbstractDOMParser [protected]
    getDisableDefaultEntityResolution() const AbstractDOMParser
    getDocument()AbstractDOMParser
    getDoNamespaces() const AbstractDOMParser
    getDoSchema() const AbstractDOMParser
    getDoXInclude() const AbstractDOMParser
    getEntityResolver()XercesDOMParser
    getEntityResolver() const XercesDOMParser
    getErrorCount() const AbstractDOMParser
    getErrorHandler()XercesDOMParser
    getErrorHandler() const XercesDOMParser
    getExitOnFirstFatalError() const AbstractDOMParser
    getExternalNoNamespaceSchemaLocation() const AbstractDOMParser
    getExternalSchemaLocation() const AbstractDOMParser
    getGenerateSyntheticAnnotations() const AbstractDOMParser
    getGrammar(const XMLCh *const nameSpaceKey)XercesDOMParser
    getGrammarResolver() const AbstractDOMParser [protected]
    getHandleMultipleImports() const AbstractDOMParser
    getIdentityConstraintChecking() const AbstractDOMParser
    getIgnoreAnnotations() const AbstractDOMParser
    getIgnoreCachedDTD() const XercesDOMParser
    getIncludeIgnorableWhitespace() const AbstractDOMParser
    getLoadExternalDTD() const AbstractDOMParser
    getLoadSchema() const AbstractDOMParser
    getLowWaterMark() const AbstractDOMParser
    getMemoryManager() const AbstractDOMParser [protected]
    getParseInProgress() const AbstractDOMParser [protected]
    getPSVIHandler()AbstractDOMParser
    getPSVIHandler() const AbstractDOMParser
    getRootGrammar()XercesDOMParser
    getScanner() const AbstractDOMParser [protected]
    getSecurityManager() const AbstractDOMParser
    getSkipDTDValidation() const AbstractDOMParser
    getSrcOffset() const XercesDOMParser
    getStandardUriConformant() const AbstractDOMParser
    getURIText(unsigned int uriId) const XercesDOMParser
    getValidateAnnotations() const AbstractDOMParser
    getValidationConstraintFatal() const AbstractDOMParser
    getValidationSchemaFullChecking() const AbstractDOMParser
    getValidationScheme() const AbstractDOMParser
    getValidator() const AbstractDOMParser
    getXMLEntityResolver()XercesDOMParser
    getXMLEntityResolver() const XercesDOMParser
    handleAttributesPSVI(const XMLCh *const localName, const XMLCh *const uri, PSVIAttributeList *psviAttributes)AbstractDOMParser [virtual]
    handleElementPSVI(const XMLCh *const localName, const XMLCh *const uri, PSVIElement *elementInfo)AbstractDOMParser [virtual]
    handlePartialElementPSVI(const XMLCh *const localName, const XMLCh *const uri, PSVIElement *elementInfo)AbstractDOMParser [virtual]
    ignorableWhitespace(const XMLCh *const chars, const XMLSize_t length, const bool cdataSection)AbstractDOMParser [virtual]
    isCachingGrammarFromParse() const XercesDOMParser
    isDocumentAdopted() const AbstractDOMParser [protected]
    isUsingCachedGrammarInParse() const XercesDOMParser
    loadGrammar(const InputSource &source, const Grammar::GrammarType grammarType, const bool toCache=false)XercesDOMParser
    loadGrammar(const XMLCh *const systemId, const Grammar::GrammarType grammarType, const bool toCache=false)XercesDOMParser
    loadGrammar(const char *const systemId, const Grammar::GrammarType grammarType, const bool toCache=false)XercesDOMParser
    notationDecl(const XMLNotationDecl &notDecl, const bool isIgnored)AbstractDOMParser [virtual]
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    parse(const InputSource &source)AbstractDOMParser
    parse(const XMLCh *const systemId)AbstractDOMParser
    parse(const char *const systemId)AbstractDOMParser
    parseFirst(const XMLCh *const systemId, XMLPScanToken &toFill)AbstractDOMParser
    parseFirst(const char *const systemId, XMLPScanToken &toFill)AbstractDOMParser
    parseFirst(const InputSource &source, XMLPScanToken &toFill)AbstractDOMParser
    parseNext(XMLPScanToken &token)AbstractDOMParser
    parseReset(XMLPScanToken &token)AbstractDOMParser
    PSVIHandler()PSVIHandler [protected]
    reset()AbstractDOMParser
    resetCachedGrammarPool()XercesDOMParser
    resetDocType()AbstractDOMParser [virtual]
    resetDocument()AbstractDOMParser [virtual]
    resetDocumentPool()XercesDOMParser
    resetEntities()XercesDOMParser [virtual]
    resetErrors()XercesDOMParser [virtual]
    resetPool()AbstractDOMParser [protected]
    resolveEntity(XMLResourceIdentifier *resourceIdentifier)XercesDOMParser [virtual]
    setCalculateSrcOfs(const bool newState)AbstractDOMParser
    setCreateCommentNodes(const bool create)AbstractDOMParser
    setCreateEntityReferenceNodes(const bool create)AbstractDOMParser
    setCreateSchemaInfo(const bool newState)AbstractDOMParser
    setCurrentNode(DOMNode *toSet)AbstractDOMParser [protected]
    setDisableDefaultEntityResolution(const bool newValue)AbstractDOMParser
    setDocument(DOMDocument *toSet)AbstractDOMParser [protected]
    setDoNamespaces(const bool newState)AbstractDOMParser
    setDoSchema(const bool newState)AbstractDOMParser
    setDoXInclude(const bool newState)AbstractDOMParser
    setEntityResolver(EntityResolver *const handler)XercesDOMParser
    setErrorHandler(ErrorHandler *const handler)XercesDOMParser
    setExitOnFirstFatalError(const bool newState)AbstractDOMParser
    setExternalNoNamespaceSchemaLocation(const XMLCh *const noNamespaceSchemaLocation)AbstractDOMParser
    setExternalNoNamespaceSchemaLocation(const char *const noNamespaceSchemaLocation)AbstractDOMParser
    setExternalSchemaLocation(const XMLCh *const schemaLocation)AbstractDOMParser
    setExternalSchemaLocation(const char *const schemaLocation)AbstractDOMParser
    setGenerateSyntheticAnnotations(const bool newValue)AbstractDOMParser
    setHandleMultipleImports(const bool newValue)AbstractDOMParser
    setIdentityConstraintChecking(const bool newState)AbstractDOMParser
    setIgnoreAnnotations(const bool newValue)AbstractDOMParser
    setIgnoreCachedDTD(const bool newValue)XercesDOMParser
    setIncludeIgnorableWhitespace(const bool include)AbstractDOMParser
    setLoadExternalDTD(const bool newState)AbstractDOMParser
    setLoadSchema(const bool newState)AbstractDOMParser
    setLowWaterMark(XMLSize_t lwm)AbstractDOMParser
    setParseInProgress(const bool toSet)AbstractDOMParser [protected]
    setPSVIHandler(PSVIHandler *const handler)AbstractDOMParser [virtual]
    setSecurityManager(SecurityManager *const securityManager)AbstractDOMParser
    setSkipDTDValidation(const bool newValue)AbstractDOMParser
    setStandardUriConformant(const bool newState)AbstractDOMParser
    setValidateAnnotations(const bool newValue)AbstractDOMParser
    setValidationConstraintFatal(const bool newState)AbstractDOMParser
    setValidationSchemaFullChecking(const bool schemaFullChecking)AbstractDOMParser
    setValidationScheme(const ValSchemes newScheme)AbstractDOMParser
    setXMLEntityResolver(XMLEntityResolver *const handler)XercesDOMParser
    startAttList(const DTDElementDecl &elemDecl)AbstractDOMParser [virtual]
    startDocument()AbstractDOMParser [virtual]
    startElement(const XMLElementDecl &elemDecl, const unsigned int urlId, const XMLCh *const elemPrefix, const RefVectorOf< XMLAttr > &attrList, const XMLSize_t attrCount, const bool isEmpty, const bool isRoot)AbstractDOMParser [virtual]
    startEntityReference(const XMLEntityDecl &entDecl)AbstractDOMParser [virtual]
    startExtSubset()AbstractDOMParser [virtual]
    startInputSource(const InputSource &inputSource)XercesDOMParser [virtual]
    startIntSubset()AbstractDOMParser [virtual]
    TextDecl(const XMLCh *const versionStr, const XMLCh *const encodingStr)AbstractDOMParser [virtual]
    useCachedGrammarInParse(const bool newState)XercesDOMParser
    useImplementation(const XMLCh *const implementationFeatures)AbstractDOMParser
    useScanner(const XMLCh *const scannerName)AbstractDOMParser
    Val_Always enum valueAbstractDOMParser
    Val_Auto enum valueAbstractDOMParser
    Val_Never enum valueAbstractDOMParser
    ValSchemes enum nameAbstractDOMParser
    XercesDOMParser(XMLValidator *const valToAdopt=0, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager, XMLGrammarPool *const gramPool=0)XercesDOMParser
    XMemory()XMemory [protected]
    XMLDecl(const XMLCh *const versionStr, const XMLCh *const encodingStr, const XMLCh *const standaloneStr, const XMLCh *const actualEncStr)AbstractDOMParser [virtual]
    XMLDocumentHandler()XMLDocumentHandler [protected]
    XMLEntityHandler()XMLEntityHandler [protected]
    XMLErrorReporter()XMLErrorReporter [protected]
    ~AbstractDOMParser()AbstractDOMParser [virtual]
    ~PSVIHandler()PSVIHandler [virtual]
    ~XercesDOMParser()XercesDOMParser [virtual]
    ~XMLDocumentHandler()XMLDocumentHandler [virtual]
    ~XMLEntityHandler()XMLEntityHandler [virtual]
    ~XMLErrorReporter()XMLErrorReporter [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMNode.png0000644000175000017500000000461011363620005020454 0ustar borisboris‰PNG  IHDRP€8=XPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf IDATxœíÝknã6àúÛ¼; g ÝPÙÿ*¾$ZÖÛÇ$¯}N;±SÏ7²ä©•ƒËƒÎýç=?.¡Ý?à»—ÐÕ{Â|.nÃ77ÿƒ÷#”úÐ ô·ágÌðÑ/ôçî7æ=Bï÷á¿}ïáê¾–#Ða£Þôæw[¸ºð€¯å8ô– ?ýB‡­€#Ô˜+øZ.A¯=àk9rÔÿDà­Ó}´x½å×Ñ.ú^ð]Kh÷ø®Ç%´û|×ã¾ ªæíòÑüÝøÏ?5Ðß[ F ôïßßÖ„cQÕs0Š¡èŠ¡èŠ¡èŠ¡èŠ¡èŠ¡è|(ô¯ÐyÔó‡PB }Ž1âœ.ìðMŸÒ!4ý…tføRº…:ñS&¨1Æ_u 6ªuñC=é½B‹×Ñ*¦Cè•J(¡„~TËÛå†!BÑ!BÑ!BÑ!BÑ!BÑ!BÑ!BÑ!…ª9‘«çÔ8¡„j‚ú.†ÿ-}è>øFynØt~—ïÜÓýu céa°ZqK5§ •ôU+hÙ ¾ô.ÍpiCJÂßGÂ- ¡ƒC"Ôø‰ ìÐ'‰¥“ &6^ô•xClçÅûÒGþ®-ÔZ7ACßÉ_ÆÝÂŒÐp“1¡×{O+Ð\'·hÚÎMŸútÔç;‡Š-îk-^Ge|õ·ßºþÒø£ÊÄg]ÂMþ¨—ÚPDýZ¨–ÿÃÿ£ªå=Ó-Ð7¾ Õòv¹aE‡PtE‡PtE‡PtE‡PtE‡PtE‡PtE‡PtEçC¡jNä~ïï™%´t6æÉ˜µÁ$vá¶šÐÙ˜'Yõ}ó”N¾ôº± ádÞxj Ó“ÆšK¼2VâujÇôÍm—ÉÝ ´˜žô …§W¡/Ï{:u®-:óT”žLOOýlÌSj8ù£~8’bE+¢lã£þ¥J(¡„~TËÛå†!BÑ!BÑ!BÑ!BÑ!BÑ!BÑ!BÑ!…ª9‘«çÔ8¡„ꀞ¨:³²Ø™Ô€ž¨:­.#U z¸êä=iú“„‘;á§â@˜šÐݪS€¦y?~¥®øSbkoÑݪ“÷dIwÈøÃ5¡»U§°EÓô§è— WzO'ªNj¶¨«¸EW ¨­ÿÔŸ¨:å§^$baéÃøÕ€^Œ’‚Öâb‡=BíÒ¿¥=BC(¡_ Õòv¹aE‡PtE‡PtE‡PtE‡PtE‡PtE‡PtE‡PtEçC¡jNäê95N(¡š ÇÛOvµýTzfÐÓÚß¡ôø §X–H«àµƒîz7~] ±3ƒžÄ‡vÐýAOiŶxÓ5èõyOg=ù;ea–Rå£~ÐS„6ÚGÏ zŠk06:êOfñÕ´G¨(ÆKt9„úµP-o—†PtE‡PtE‡PtE‡PtE‡PtE‡PtE‡PtE‡Pt>ªæD®žSㄪúÔ€2O¿Ÿ]©U†>5 ž‘Ü tÞ€Jí‡íEîZBs±èÐ"wÍ¡a=°È]Kh.¥ÎÓö"wç ×{O;ÐôýÆ"w-¶è¬å:}êŸP&õÛ‹ÜÕ‡^¡„Jè·Aµ¼]nBÑ!BÑ!BÑ!BÑ!BÑ!BÑ!BÑ!BÑùP¨š¹zNJ¨Zh=ã/rQ#ü‚~\Õ¬èØƒ0q¶˜Å™­¡iŒÎ «ÙÙásubU[¨¤b–Ëk†õ Í‹Äõ µ©D4A×wÓʽ§m¨·EÓQ?ΟêZ¼ŽÆ‰^©FèÌÆ.ÚÙ¿Lj /ù]A76h_ЭJè×Bµ¼]nBÑ!BÑ!BÑ!BÑ!BÑ!BÑ!BÑ!BÑùP¨š¹zNJ¨èNÑ)¯z·²¾]MèvÑ)­z·õ›åzЭ¢S˜Æ<ù06M}Ê+bµ.dZ-Ά;ÆUî¤,4€ÎŠN&ÐqÓ‡Œ£ŠZA—ŠNþ#ÚMXòpšúô°¸d…ÞÓNÑI¦ïòå¸E«ï£[E§Ç}tzêì£ÛE§tÔÇ)oiÖÛ¸úeUèVö^=»nv[;‚ß ­·(¡„º Õòv¹aE‡PtE‡PtE‡PtE‡PtE‡PtE‡PtE‡PtEçC¡jNäê95N(¡*¡ó ”+ªD]Í{šW äÚÓU lî<… ɧž ±Y4Hdj­ìm¡£Ñ}­Î ±Yds%Ç¡€yO«Péo‹Î*P¦Sè¬åRç)t%¯t×ô…J(¡„~TËÛå†!BÑ!BÑ!BÑ!BÑ!BÑ!BÑ!BÑ!…ª9‘«çÔ8¡„*€†36NICs’o´³k÷X…z'TÆy)«›Õ¦Eh-*.pFhœçdÓ<§ð)6\ûª†¿Ù— ¦>ÔT…ªM-—<Ï)ÏÊIŸùÂäbÉôCSª"Ô„½ÕNÈ$ÿHYÕ)&ÿ¸²SËXÎ?Ü)=õ4Ìzzº÷´ M‹A§yJU·h>êóŸ<›çT &³å';ö¡ª@‹×Ñ ºpÔ‡ƒlzêCo+õ¡¦*T7ÿ2í TêºÖëjw&vÝ¡„~-TËÛå†!BÑ!BÑ!BÑ!BÑ!BÑ!BÑ!BÑ!…ª9‘«çÔ8¡„jÎÊOWº wåe­-)ôvè¬ü;./ÉÖáëúP~¡&N{‰‹s™´®\¬EËÜM峊ÐÐ)ò0ëÊ"I*k˜ÐÖ-Sbl3¨ÍuìÔ€q®¨Á¤:D±T[mh|v%UôÌ´Ý$}#© W¾Ëí¨óÐkóžfд:[”šŠnQÜÒã¶-Z„Ç¡ç²pÔPû°âáëûèEèsù)n8#bÆ}rø&ì«åQ/Wú‹Ð Y|]%ô ‹!”Я…Âß.ÿå¥#:@¡BòIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classDOMLSParserFilter-members.html0000644000175000017500000001013011363620005024232 0ustar borisboris Xerces-C++: Member List

    DOMLSParserFilter Member List

    This is the complete list of members for DOMLSParserFilter, including all inherited members.

    acceptNode(DOMNode *node)=0DOMLSParserFilter [pure virtual]
    DOMLSParserFilter()DOMLSParserFilter [protected]
    FILTER_ACCEPT enum valueDOMLSParserFilter
    FILTER_INTERRUPT enum valueDOMLSParserFilter
    FILTER_REJECT enum valueDOMLSParserFilter
    FILTER_SKIP enum valueDOMLSParserFilter
    FilterAction enum nameDOMLSParserFilter
    getWhatToShow() const =0DOMLSParserFilter [pure virtual]
    startElement(DOMElement *node)=0DOMLSParserFilter [pure virtual]
    ~DOMLSParserFilter()DOMLSParserFilter [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_func_0x72.html0000644000175000017500000003341511363620005022171 0ustar borisboris Xerces-C++: Class Members - Functions
     

    - r -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMComment_8hpp.html0000644000175000017500000000502511363620005021263 0ustar borisboris Xerces-C++: DOMComment.hpp File Reference

    DOMComment.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMComment
     This interface inherits from CharacterData and represents the content of a comment, i.e., all the characters between the starting ' <!--' and ending '-->'. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMCOMMENT_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMCOMMENT_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMLSParserFilter_8hpp.html0000644000175000017500000000442311363620005022523 0ustar borisboris Xerces-C++: DOMLSParserFilter.hpp File Reference

    DOMLSParserFilter.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMLSParserFilter

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMLSPARSERFILTER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMLSPARSERFILTER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLDOMMsg.html0000644000175000017500000006703711363620006021073 0ustar borisboris Xerces-C++: XMLDOMMsg Class Reference

    XMLDOMMsg Class Reference

    List of all members.

    Public Types

    enum  Codes {
      NoError = 0, F_LowBounds = 1, DOMEXCEPTION_ERRX = 2, INDEX_SIZE_ERR = 3,
      DOMSTRING_SIZE_ERR = 4, HIERARCHY_REQUEST_ERR = 5, WRONG_DOCUMENT_ERR = 6, INVALID_CHARACTER_ERR = 7,
      NO_DATA_ALLOWED_ERR = 8, NO_MODIFICATION_ALLOWED_ERR = 9, NOT_FOUND_ERR = 10, NOT_SUPPORTED_ERR = 11,
      INUSE_ATTRIBUTE_ERR = 12, INVALID_STATE_ERR = 13, SYNTAX_ERR = 14, INVALID_MODIFICATION_ERR = 15,
      NAMESPACE_ERR = 16, INVALID_ACCESS_ERR = 17, VALIDATION_ERR = 18, TYPE_MISMATCH_ERR = 19,
      DOMRANGEEXCEPTION_ERRX = 20, BAD_BOUNDARYPOINTS_ERR = 21, INVALID_NODE_TYPE_ERR = 22, DOMLSEXCEPTION_ERRX = 23,
      PARSE_ERR = 24, SERIALIZE_ERR = 25, DOMXPATHEXCEPTION_ERRX = 26, INVALID_EXPRESSION_ERR = 27,
      TYPE_ERR = 28, NO_RESULT_ERR = 29, Writer_NestedCDATA = 30, Writer_NotRepresentChar = 31,
      Writer_NotRecognizedType = 32, LSParser_ParseInProgress = 33, LSParser_ParsingAborted = 34, LSParser_ParsingFailed = 35,
      F_HighBounds = 36, W_LowBounds = 37, W_HighBounds = 38, E_LowBounds = 39,
      E_HighBounds = 40
    }

    Static Public Member Functions

    static bool isFatal (const XMLDOMMsg::Codes toCheck)
    static bool isWarning (const XMLDOMMsg::Codes toCheck)
    static bool isError (const XMLDOMMsg::Codes toCheck)
    static XMLErrorReporter::ErrTypes errorType (const XMLDOMMsg::Codes toCheck)
    static DOMError::ErrorSeverity DOMErrorType (const XMLDOMMsg::Codes toCheck)


    Member Enumeration Documentation

    Enumerator:
    NoError 
    F_LowBounds 
    DOMEXCEPTION_ERRX 
    INDEX_SIZE_ERR 
    DOMSTRING_SIZE_ERR 
    HIERARCHY_REQUEST_ERR 
    WRONG_DOCUMENT_ERR 
    INVALID_CHARACTER_ERR 
    NO_DATA_ALLOWED_ERR 
    NO_MODIFICATION_ALLOWED_ERR 
    NOT_FOUND_ERR 
    NOT_SUPPORTED_ERR 
    INUSE_ATTRIBUTE_ERR 
    INVALID_STATE_ERR 
    SYNTAX_ERR 
    INVALID_MODIFICATION_ERR 
    NAMESPACE_ERR 
    INVALID_ACCESS_ERR 
    VALIDATION_ERR 
    TYPE_MISMATCH_ERR 
    DOMRANGEEXCEPTION_ERRX 
    BAD_BOUNDARYPOINTS_ERR 
    INVALID_NODE_TYPE_ERR 
    DOMLSEXCEPTION_ERRX 
    PARSE_ERR 
    SERIALIZE_ERR 
    DOMXPATHEXCEPTION_ERRX 
    INVALID_EXPRESSION_ERR 
    TYPE_ERR 
    NO_RESULT_ERR 
    Writer_NestedCDATA 
    Writer_NotRepresentChar 
    Writer_NotRecognizedType 
    LSParser_ParseInProgress 
    LSParser_ParsingAborted 
    LSParser_ParsingFailed 
    F_HighBounds 
    W_LowBounds 
    W_HighBounds 
    E_LowBounds 
    E_HighBounds 


    Member Function Documentation

    static bool XMLDOMMsg::isFatal ( const XMLDOMMsg::Codes  toCheck  )  [static]

    References F_HighBounds, and F_LowBounds.

    static bool XMLDOMMsg::isWarning ( const XMLDOMMsg::Codes  toCheck  )  [static]

    References W_HighBounds, and W_LowBounds.

    static bool XMLDOMMsg::isError ( const XMLDOMMsg::Codes  toCheck  )  [static]

    References E_HighBounds, and E_LowBounds.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classLocator-members.html0000644000175000017500000000547511363620006022455 0ustar borisboris Xerces-C++: Member List

    Locator Member List

    This is the complete list of members for Locator, including all inherited members.

    getColumnNumber() const =0Locator [pure virtual]
    getLineNumber() const =0Locator [pure virtual]
    getPublicId() const =0Locator [pure virtual]
    getSystemId() const =0Locator [pure virtual]
    Locator()Locator
    ~Locator()Locator [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/SchemaDateTimeException_8hpp-source.html0000644000175000017500000001102611363620004025310 0ustar borisboris Xerces-C++: SchemaDateTimeException.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/IllegalArgumentException_8hpp.html0000644000175000017500000000411611363620005024254 0ustar borisboris Xerces-C++: IllegalArgumentException.hpp File Reference

    IllegalArgumentException.hpp File Reference

    Go to the source code of this file.

    Defines

    #define XERCESC_INCLUDE_GUARD_ILLEGALARGUMENTEXCEPTION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_ILLEGALARGUMENTEXCEPTION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMDocumentFragment.html0000644000175000017500000002443411363620005023217 0ustar borisboris Xerces-C++: DOMDocumentFragment Class Reference

    DOMDocumentFragment Class Reference

    DOMDocumentFragment is a "lightweight" or "minimal" DOMDocument object. More...

    Inheritance diagram for DOMDocumentFragment:

    DOMNode

    List of all members.

    Public Member Functions

    Destructor
    virtual ~DOMDocumentFragment ()
     Destructor.

    Protected Member Functions

    Hidden constructors
     DOMDocumentFragment ()


    Detailed Description

    DOMDocumentFragment is a "lightweight" or "minimal" DOMDocument object.

    It is very common to want to be able to extract a portion of a document's tree or to create a new fragment of a document. Imagine implementing a user command like cut or rearranging a document by moving fragments around. It is desirable to have an object which can hold such fragments and it is quite natural to use a DOMNode for this purpose. While it is true that a DOMDocument object could fulfill this role, a DOMDocument object can potentially be a heavyweight object, depending on the underlying implementation. What is really needed for this is a very lightweight object. DOMDocumentFragment is such an object.

    Furthermore, various operations -- such as inserting nodes as children of another DOMNode -- may take DOMDocumentFragment objects as arguments; this results in all the child nodes of the DOMDocumentFragment being moved to the child list of this node.

    The children of a DOMDocumentFragment node are zero or more nodes representing the tops of any sub-trees defining the structure of the document. DOMDocumentFragment nodes do not need to be well-formed XML documents (although they do need to follow the rules imposed upon well-formed XML parsed entities, which can have multiple top nodes). For example, a DOMDocumentFragment might have only one child and that child node could be a DOMText node. Such a structure model represents neither an HTML document nor a well-formed XML document.

    When a DOMDocumentFragment is inserted into a DOMDocument (or indeed any other DOMNode that may take children) the children of the DOMDocumentFragment and not the DOMDocumentFragment itself are inserted into the DOMNode. This makes the DOMDocumentFragment very useful when the user wishes to create nodes that are siblings; the DOMDocumentFragment acts as the parent of these nodes so that the user can use the standard methods from the DOMNode interface, such as insertBefore() and appendChild().

    Since:
    DOM Level 1

    Constructor & Destructor Documentation

    DOMDocumentFragment::DOMDocumentFragment (  )  [protected]

    virtual DOMDocumentFragment::~DOMDocumentFragment (  )  [virtual]

    Destructor.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDeclHandler.html0000644000175000017500000004667611363620005021576 0ustar borisboris Xerces-C++: DeclHandler Class Reference

    DeclHandler Class Reference

    Receive notification of DTD declaration events. More...

    Inheritance diagram for DeclHandler:

    DefaultHandler

    List of all members.

    Public Member Functions

    Constructors and Destructor
     DeclHandler ()
     Default constructor.
    virtual ~DeclHandler ()
     Destructor.
    The virtual declaration handler interface
    virtual void elementDecl (const XMLCh *const name, const XMLCh *const model)=0
     Report an element type declaration.
    virtual void attributeDecl (const XMLCh *const eName, const XMLCh *const aName, const XMLCh *const type, const XMLCh *const mode, const XMLCh *const value)=0
     Report an attribute type declaration.
    virtual void internalEntityDecl (const XMLCh *const name, const XMLCh *const value)=0
     Report an internal entity declaration.
    virtual void externalEntityDecl (const XMLCh *const name, const XMLCh *const publicId, const XMLCh *const systemId)=0
     Report a parsed external entity declaration.


    Detailed Description

    Receive notification of DTD declaration events.

    This is an optional extension handler for SAX2 to provide more complete information about DTD declarations in an XML document. XML readers are not required to recognize this handler, and it is not part of core-only SAX2 distributions.

    Note that data-related DTD declarations (unparsed entities and notations) are already reported through the DTDHandler interface.

    If you are using the declaration handler together with a lexical handler, all of the events will occur between the startDTD and the endDTD events.

    See also:
    SAX2XMLReader::setLexicalHandler

    SAX2XMLReader::setDeclarationHandler


    Constructor & Destructor Documentation

    DeclHandler::DeclHandler (  ) 

    Default constructor.

    virtual DeclHandler::~DeclHandler (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual void DeclHandler::elementDecl ( const XMLCh *const   name,
    const XMLCh *const   model 
    ) [pure virtual]

    Report an element type declaration.

    The content model will consist of the string "EMPTY", the string "ANY", or a parenthesised group, optionally followed by an occurrence indicator. The model will be normalized so that all parameter entities are fully resolved and all whitespace is removed,and will include the enclosing parentheses. Other normalization (such as removing redundant parentheses or simplifying occurrence indicators) is at the discretion of the parser.

    Parameters:
    name The element type name.
    model The content model as a normalized string.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.

    Implemented in DefaultHandler.

    virtual void DeclHandler::attributeDecl ( const XMLCh *const   eName,
    const XMLCh *const   aName,
    const XMLCh *const   type,
    const XMLCh *const   mode,
    const XMLCh *const   value 
    ) [pure virtual]

    Report an attribute type declaration.

    The Parser will call this method to report each occurrence of a comment in the XML document.

    The application must not attempt to read from the array outside of the specified range.

    Parameters:
    eName The name of the associated element.
    aName The name of the attribute.
    type A string representing the attribute type.
    mode A string representing the attribute defaulting mode ("#IMPLIED", "#REQUIRED", or "#FIXED") or null if none of these applies.
    value A string representing the attribute's default value, or null if there is none.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.

    Implemented in DefaultHandler.

    virtual void DeclHandler::internalEntityDecl ( const XMLCh *const   name,
    const XMLCh *const   value 
    ) [pure virtual]

    Report an internal entity declaration.

    Only the effective (first) declaration for each entity will be reported. All parameter entities in the value will be expanded, but general entities will not.

    Parameters:
    name The name of the entity. If it is a parameter entity, the name will begin with ''.
    value The replacement text of the entity.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.

    Implemented in DefaultHandler.

    virtual void DeclHandler::externalEntityDecl ( const XMLCh *const   name,
    const XMLCh *const   publicId,
    const XMLCh *const   systemId 
    ) [pure virtual]

    Report a parsed external entity declaration.

    Only the effective (first) declaration for each entity will be reported.

    Parameters:
    name The name of the entity. If it is a parameter entity, the name will begin with ''.
    publicId The The declared public identifier of the entity, or null if none was declared.
    systemId The declared system identifier of the entity.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.

    Implemented in DefaultHandler.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/globals_0x6d.html0000644000175000017500000000551211363620006020650 0ustar borisboris Xerces-C++: Class Members
    Here is a list of all file members with links to the files they belong to:

    - m -


    Generated on Wed Apr 21 17:55:51 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/SecurityManager_8hpp.html0000644000175000017500000000472011363620005022424 0ustar borisboris Xerces-C++: SecurityManager.hpp File Reference

    SecurityManager.hpp File Reference

    Go to the source code of this file.

    Classes

    class  SecurityManager
     Allow application to force the parser to behave in a security-conscious way. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_SECURITYMANAGER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_SECURITYMANAGER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classPSVIItem.png0000644000175000017500000000121711363620006020630 0ustar borisboris‰PNG  IHDR¸ˆ¦g Xerces-C++: Member List

    LocalFileFormatTarget Member List

    This is the complete list of members for LocalFileFormatTarget, including all inherited members.

    flush()LocalFileFormatTarget [virtual]
    LocalFileFormatTarget(const XMLCh *const , MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)LocalFileFormatTarget
    LocalFileFormatTarget(const char *const , MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)LocalFileFormatTarget
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    writeChars(const XMLByte *const toWrite, const XMLSize_t count, XMLFormatter *const formatter)LocalFileFormatTarget [virtual]
    XMemory()XMemory [protected]
    XMLFormatTarget()XMLFormatTarget [protected]
    ~LocalFileFormatTarget()LocalFileFormatTarget
    ~XMLFormatTarget()XMLFormatTarget [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLFileMgr.png0000644000175000017500000000060211363620006021133 0ustar borisboris‰PNG  IHDRSP—TPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfIDATH‰í“A Eaã:áxG/äª÷?‚ÿ§AÑÒÑÎØ±H?ihÝ¥×Nî|ì´M¢‘=`æUš‚_„*¦Q0Æï…„Añ¨qch¡L2£ÁúÔšª‘ˆj…†'”¹Ž(e¤&jx•@Muµ:o£yŸ_ë…-@ó‘Ì¢Yô‡>Â/£ ~î–šÞOÑáºz†Е*°£;º£ÿ…j¯‰“ÞP›C=;·f,É8¡ß®R•w…Û™(¬ÝïQL¼&Ô Ë„z æ(P,áFo:ÓkIÚ¹”h:©šÀ];¼m®QIuî%jx«cc®MuåCÖô^±I©:{N+ý¨×zK‡m íÿ¹oÉJœ‰Ã4æIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classDOMProcessingInstruction.html0000644000175000017500000002662411363620005024336 0ustar borisboris Xerces-C++: DOMProcessingInstruction Class Reference

    DOMProcessingInstruction Class Reference

    The DOMProcessingInstruction interface represents a "processing instruction", used in XML as a way to keep processor-specific information in the text of the document. More...

    Inheritance diagram for DOMProcessingInstruction:

    DOMNode

    List of all members.

    Public Member Functions

    Destructor
    virtual ~DOMProcessingInstruction ()
     Destructor.
    Functions introduced in DOM Level 1
    virtual const XMLChgetTarget () const =0
     The target of this processing instruction.
    virtual const XMLChgetData () const =0
     The content of this processing instruction.
    virtual void setData (const XMLCh *data)=0
     Sets the content of this processing instruction.

    Protected Member Functions

    Hidden constructors
     DOMProcessingInstruction ()
     DOMProcessingInstruction (const DOMProcessingInstruction &other)


    Detailed Description

    The DOMProcessingInstruction interface represents a "processing instruction", used in XML as a way to keep processor-specific information in the text of the document.

    Since:
    DOM Level 1

    Constructor & Destructor Documentation

    DOMProcessingInstruction::DOMProcessingInstruction (  )  [protected]

    DOMProcessingInstruction::DOMProcessingInstruction ( const DOMProcessingInstruction other  )  [protected]

    virtual DOMProcessingInstruction::~DOMProcessingInstruction (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual const XMLCh* DOMProcessingInstruction::getTarget (  )  const [pure virtual]

    The target of this processing instruction.

    XML defines this as being the first token following the markup that begins the processing instruction.

    Since:
    DOM Level 1

    virtual const XMLCh* DOMProcessingInstruction::getData (  )  const [pure virtual]

    The content of this processing instruction.

    This is from the first non white space character after the target to the character immediately preceding the ?>.

    Exceptions:
    DOMException NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
    Since:
    DOM Level 1

    virtual void DOMProcessingInstruction::setData ( const XMLCh data  )  [pure virtual]

    Sets the content of this processing instruction.

    This is from the first non white space character after the target to the character immediately preceding the ?>.

    Parameters:
    data The string containing the processing instruction
    Since:
    DOM Level 1


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMElement.png0000644000175000017500000000054211363620005021160 0ustar borisboris‰PNG  IHDRVPq!ŸÙPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØføIDATH‰íÓQ Pú³ï¶7(Þ@/ä×îÛfq ™f‰3TC…=¡k¶pëp½q9«%âEщDpºÀkëÈÑ‹¤Ÿ¦l[r²Ìºb§°§-«[‹[±ZÄSÛJ¶±iuO7OKÔo}ˆÉÈv½‹þJéïV:bØOìžw¾S}ùk;ß±Ó<bëðÃ;¬õGÀîÃàŒô­!Áÿˆ:Ex…X¬ýôA9¸kÙœ(€­zÖ³VQ¿kC@Ê*û&ëõš %W-øu/‡’õüÆæyÊPé¦#K½µýÅÒ_»ÿPrêЯ<kw¼óbq›â|/ŸXIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/Base64_8hpp-source.html0000644000175000017500000005664711363620004021662 0ustar borisboris Xerces-C++: Base64.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDeclHandler.png0000644000175000017500000000061711363620005021377 0ustar borisboris‰PNG  IHDRaPû˜PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf%IDATH‰í”QŠÄ †ÍË>ûçñÃî…zÿ#¬‰V­­°tYÓR5æ3É/ÔaÒ¼ónÎÞŽP²‘úêAt<´>îÌñy;¡Ê#&§¼AY°§²€HsòCB#­«ŒS&®ª"ÀùÒ‡-2 ˆ4Ò±DJDJ}è÷}\ÞG§•×Ý¢UOüÚq/1ÿ÷Ùs2÷ ÄÇv?±mÏÛ‰¿Ðj‹XÄ"þñ5°ïÿá>ܽ!@Zå!H`Ño1–Žˆ®8AHLÀúÆG»O„ƒ0Û<0·„jPšpñÙ‚mnUwD¨¬9®gØÓ€1¬É!¨Ðl!çªjŽp ¸éCN„œªÒ’U—XU”E•Ùµ;¥hõú/â6bô÷Ùã»­¢~œ»IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classDOMDocument-members.html0000644000175000017500000007207211363620005023164 0ustar borisboris Xerces-C++: Member List

    DOMDocument Member List

    This is the complete list of members for DOMDocument, including all inherited members.

    adoptNode(DOMNode *source)=0DOMDocument [pure virtual]
    appendChild(DOMNode *newChild)=0DOMNode [pure virtual]
    ATTRIBUTE_NODE enum valueDOMNode
    CDATA_SECTION_NODE enum valueDOMNode
    cloneNode(bool deep) const =0DOMNode [pure virtual]
    COMMENT_NODE enum valueDOMNode
    compareDocumentPosition(const DOMNode *other) const =0DOMNode [pure virtual]
    createAttribute(const XMLCh *name)=0DOMDocument [pure virtual]
    createAttributeNS(const XMLCh *namespaceURI, const XMLCh *qualifiedName)=0DOMDocument [pure virtual]
    createCDATASection(const XMLCh *data)=0DOMDocument [pure virtual]
    createComment(const XMLCh *data)=0DOMDocument [pure virtual]
    createDocumentFragment()=0DOMDocument [pure virtual]
    createDocumentType(const XMLCh *name)=0DOMDocument [pure virtual]
    createDocumentType(const XMLCh *qName, const XMLCh *, const XMLCh *)DOMDocument [virtual]
    createElement(const XMLCh *tagName)=0DOMDocument [pure virtual]
    createElementNS(const XMLCh *namespaceURI, const XMLCh *qualifiedName)=0DOMDocument [pure virtual]
    createElementNS(const XMLCh *namespaceURI, const XMLCh *qualifiedName, const XMLFileLoc lineNum, const XMLFileLoc columnNum)=0DOMDocument [pure virtual]
    createEntity(const XMLCh *name)=0DOMDocument [pure virtual]
    createEntityReference(const XMLCh *name)=0DOMDocument [pure virtual]
    createExpression(const XMLCh *expression, const DOMXPathNSResolver *resolver)=0DOMXPathEvaluator [pure virtual]
    createNodeIterator(DOMNode *root, DOMNodeFilter::ShowType whatToShow, DOMNodeFilter *filter, bool entityReferenceExpansion)=0DOMDocumentTraversal [pure virtual]
    createNotation(const XMLCh *name)=0DOMDocument [pure virtual]
    createNSResolver(const DOMNode *nodeResolver)=0DOMXPathEvaluator [pure virtual]
    createProcessingInstruction(const XMLCh *target, const XMLCh *data)=0DOMDocument [pure virtual]
    createRange()=0DOMDocumentRange [pure virtual]
    createTextNode(const XMLCh *data)=0DOMDocument [pure virtual]
    createTreeWalker(DOMNode *root, DOMNodeFilter::ShowType whatToShow, DOMNodeFilter *filter, bool entityReferenceExpansion)=0DOMDocumentTraversal [pure virtual]
    DOCUMENT_FRAGMENT_NODE enum valueDOMNode
    DOCUMENT_NODE enum valueDOMNode
    DOCUMENT_POSITION_CONTAINED_BY enum valueDOMNode
    DOCUMENT_POSITION_CONTAINS enum valueDOMNode
    DOCUMENT_POSITION_DISCONNECTED enum valueDOMNode
    DOCUMENT_POSITION_FOLLOWING enum valueDOMNode
    DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC enum valueDOMNode
    DOCUMENT_POSITION_PRECEDING enum valueDOMNode
    DOCUMENT_TYPE_NODE enum valueDOMNode
    DocumentPosition enum nameDOMNode
    DOMDocument()DOMDocument [protected]
    DOMDocumentRange()DOMDocumentRange [protected]
    DOMDocumentTraversal()DOMDocumentTraversal [protected]
    DOMNode()DOMNode [protected]
    DOMNode(const DOMNode &)DOMNode [protected]
    DOMXPathEvaluator()DOMXPathEvaluator [protected]
    ELEMENT_NODE enum valueDOMNode
    ENTITY_NODE enum valueDOMNode
    ENTITY_REFERENCE_NODE enum valueDOMNode
    evaluate(const XMLCh *expression, const DOMNode *contextNode, const DOMXPathNSResolver *resolver, DOMXPathResult::ResultType type, DOMXPathResult *result)=0DOMXPathEvaluator [pure virtual]
    getAttributes() const =0DOMNode [pure virtual]
    getBaseURI() const =0DOMNode [pure virtual]
    getChildNodes() const =0DOMNode [pure virtual]
    getDoctype() const =0DOMDocument [pure virtual]
    getDocumentElement() const =0DOMDocument [pure virtual]
    getDocumentURI() const =0DOMDocument [pure virtual]
    getDOMConfig() const =0DOMDocument [pure virtual]
    getElementById(const XMLCh *elementId) const =0DOMDocument [pure virtual]
    getElementsByTagName(const XMLCh *tagname) const =0DOMDocument [pure virtual]
    getElementsByTagNameNS(const XMLCh *namespaceURI, const XMLCh *localName) const =0DOMDocument [pure virtual]
    getFeature(const XMLCh *feature, const XMLCh *version) const =0DOMNode [pure virtual]
    getFirstChild() const =0DOMNode [pure virtual]
    getImplementation() const =0DOMDocument [pure virtual]
    getInputEncoding() const =0DOMDocument [pure virtual]
    getLastChild() const =0DOMNode [pure virtual]
    getLocalName() const =0DOMNode [pure virtual]
    getNamespaceURI() const =0DOMNode [pure virtual]
    getNextSibling() const =0DOMNode [pure virtual]
    getNodeName() const =0DOMNode [pure virtual]
    getNodeType() const =0DOMNode [pure virtual]
    getNodeValue() const =0DOMNode [pure virtual]
    getOwnerDocument() const =0DOMNode [pure virtual]
    getParentNode() const =0DOMNode [pure virtual]
    getPrefix() const =0DOMNode [pure virtual]
    getPreviousSibling() const =0DOMNode [pure virtual]
    getStrictErrorChecking() const =0DOMDocument [pure virtual]
    getTextContent() const =0DOMNode [pure virtual]
    getUserData(const XMLCh *key) const =0DOMNode [pure virtual]
    getXmlEncoding() const =0DOMDocument [pure virtual]
    getXmlStandalone() const =0DOMDocument [pure virtual]
    getXmlVersion() const =0DOMDocument [pure virtual]
    hasAttributes() const =0DOMNode [pure virtual]
    hasChildNodes() const =0DOMNode [pure virtual]
    importNode(const DOMNode *importedNode, bool deep)=0DOMDocument [pure virtual]
    insertBefore(DOMNode *newChild, DOMNode *refChild)=0DOMNode [pure virtual]
    isDefaultNamespace(const XMLCh *namespaceURI) const =0DOMNode [pure virtual]
    isEqualNode(const DOMNode *arg) const =0DOMNode [pure virtual]
    isSameNode(const DOMNode *other) const =0DOMNode [pure virtual]
    isSupported(const XMLCh *feature, const XMLCh *version) const =0DOMNode [pure virtual]
    lookupNamespaceURI(const XMLCh *prefix) const =0DOMNode [pure virtual]
    lookupPrefix(const XMLCh *namespaceURI) const =0DOMNode [pure virtual]
    NodeType enum nameDOMNode
    normalize()=0DOMNode [pure virtual]
    normalizeDocument()=0DOMDocument [pure virtual]
    NOTATION_NODE enum valueDOMNode
    PROCESSING_INSTRUCTION_NODE enum valueDOMNode
    release()=0DOMNode [pure virtual]
    removeChild(DOMNode *oldChild)=0DOMNode [pure virtual]
    renameNode(DOMNode *n, const XMLCh *namespaceURI, const XMLCh *qualifiedName)=0DOMDocument [pure virtual]
    replaceChild(DOMNode *newChild, DOMNode *oldChild)=0DOMNode [pure virtual]
    setDocumentURI(const XMLCh *documentURI)=0DOMDocument [pure virtual]
    setNodeValue(const XMLCh *nodeValue)=0DOMNode [pure virtual]
    setPrefix(const XMLCh *prefix)=0DOMNode [pure virtual]
    setStrictErrorChecking(bool strictErrorChecking)=0DOMDocument [pure virtual]
    setTextContent(const XMLCh *textContent)=0DOMNode [pure virtual]
    setUserData(const XMLCh *key, void *data, DOMUserDataHandler *handler)=0DOMNode [pure virtual]
    setXmlStandalone(bool standalone)=0DOMDocument [pure virtual]
    setXmlVersion(const XMLCh *version)=0DOMDocument [pure virtual]
    TEXT_NODE enum valueDOMNode
    ~DOMDocument()DOMDocument [virtual]
    ~DOMDocumentRange()DOMDocumentRange [virtual]
    ~DOMDocumentTraversal()DOMDocumentTraversal [virtual]
    ~DOMNode()DOMNode [virtual]
    ~DOMXPathEvaluator()DOMXPathEvaluator [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_eval_0x69.html0000644000175000017500000003731411363620005022175 0ustar borisboris Xerces-C++: Class Members - Enumerator
     

    - i -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XSAttributeGroupDefinition_8hpp-source.html0000644000175000017500000003271111363620005026065 0ustar borisboris Xerces-C++: XSAttributeGroupDefinition.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMDocumentType.html0000644000175000017500000004071011363620005022370 0ustar borisboris Xerces-C++: DOMDocumentType Class Reference

    DOMDocumentType Class Reference

    Each DOMDocument has a doctype attribute whose value is either null or a DOMDocumentType object. More...

    Inheritance diagram for DOMDocumentType:

    DOMNode

    List of all members.

    Public Member Functions

    Destructor
    virtual ~DOMDocumentType ()
     Destructor.
    Functions introduced in DOM Level 1
    virtual const XMLChgetName () const =0
     The name of DTD; i.e., the name immediately following the DOCTYPE keyword.
    virtual DOMNamedNodeMapgetEntities () const =0
     A DOMNamedNodeMap containing the general entities, both external and internal, declared in the DTD.
    virtual DOMNamedNodeMapgetNotations () const =0
     A DOMNamedNodeMap containing the notations declared in the DTD.
    Functions introduced in DOM Level 2.
    virtual const XMLChgetPublicId () const =0
     Get the public identifier of the external subset.
    virtual const XMLChgetSystemId () const =0
     Get the system identifier of the external subset.
    virtual const XMLChgetInternalSubset () const =0
     The internal subset as a string, or null if there is none.

    Protected Member Functions

    Hidden constructors
     DOMDocumentType ()


    Detailed Description

    Each DOMDocument has a doctype attribute whose value is either null or a DOMDocumentType object.

    The DOMDocumentType interface in the DOM Core provides an interface to the list of entities that are defined for the document, and little else because the effect of namespaces and the various XML schema efforts on DTD representation are not clearly understood as of this writing.

    The DOM Level 2 doesn't support editing DOMDocumentType nodes.

    See also the Document Object Model (DOM) Level 2 Core Specification.

    Since:
    DOM Level 1

    Constructor & Destructor Documentation

    DOMDocumentType::DOMDocumentType (  )  [protected]

    virtual DOMDocumentType::~DOMDocumentType (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual const XMLCh* DOMDocumentType::getName (  )  const [pure virtual]

    The name of DTD; i.e., the name immediately following the DOCTYPE keyword.

    Since:
    DOM Level 1

    virtual DOMNamedNodeMap* DOMDocumentType::getEntities (  )  const [pure virtual]

    A DOMNamedNodeMap containing the general entities, both external and internal, declared in the DTD.

    Parameter entities are not contained. Duplicates are discarded. For example in: <!DOCTYPE
    ex SYSTEM "ex.dtd" [ <!ENTITY foo "foo"> <!ENTITY bar
    "bar"> <!ENTITY bar "bar2"> <!ENTITY % baz "baz">
    ]> <ex/>
    the interface provides access to foo and the first declaration of bar but not the second declaration of bar or baz. Every node in this map also implements the DOMEntity interface.
    The DOM Level 2 does not support editing entities, therefore entities cannot be altered in any way.

    Since:
    DOM Level 1

    virtual DOMNamedNodeMap* DOMDocumentType::getNotations (  )  const [pure virtual]

    A DOMNamedNodeMap containing the notations declared in the DTD.

    Duplicates are discarded. Every node in this map also implements the DOMNotation interface.
    The DOM Level 2 does not support editing notations, therefore notations cannot be altered in any way.

    Since:
    DOM Level 1

    virtual const XMLCh* DOMDocumentType::getPublicId (  )  const [pure virtual]

    Get the public identifier of the external subset.

    Returns:
    The public identifier of the external subset.
    Since:
    DOM Level 2

    virtual const XMLCh* DOMDocumentType::getSystemId (  )  const [pure virtual]

    Get the system identifier of the external subset.

    Returns:
    The system identifier of the external subset.
    Since:
    DOM Level 2

    virtual const XMLCh* DOMDocumentType::getInternalSubset (  )  const [pure virtual]

    The internal subset as a string, or null if there is none.

    This is does not contain the delimiting square brackets.The actual content returned depends on how much information is available to the implementation. This may vary depending on various parameters, including the XML processor used to build the document.

    Returns:
    The internal subset as a string.
    Since:
    DOM Level 2


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLChar1__1.html0000644000175000017500000007712611363620006021322 0ustar borisboris Xerces-C++: XMLChar1_1 Class Reference

    XMLChar1_1 Class Reference

    List of all members.

    Static Public Member Functions

    static bool isAllSpaces (const XMLCh *const toCheck, const XMLSize_t count)
    static bool containsWhiteSpace (const XMLCh *const toCheck, const XMLSize_t count)
    static bool isValidNmtoken (const XMLCh *const toCheck, const XMLSize_t count)
    static bool isValidName (const XMLCh *const toCheck, const XMLSize_t count)
    static bool isValidName (const XMLCh *const toCheck)
    static bool isValidNCName (const XMLCh *const toCheck, const XMLSize_t count)
    static bool isValidQName (const XMLCh *const toCheck, const XMLSize_t count)
    static bool isXMLLetter (const XMLCh toCheck, const XMLCh toCheck2=0)
    static bool isFirstNameChar (const XMLCh toCheck, const XMLCh toCheck2=0)
    static bool isNameChar (const XMLCh toCheck, const XMLCh toCheck2=0)
    static bool isPlainContentChar (const XMLCh toCheck, const XMLCh toCheck2=0)
    static bool isSpecialStartTagChar (const XMLCh toCheck, const XMLCh toCheck2=0)
    static bool isXMLChar (const XMLCh toCheck, const XMLCh toCheck2=0)
    static bool isWhitespace (const XMLCh toCheck, const XMLCh toCheck2=0)
    static bool isControlChar (const XMLCh toCheck, const XMLCh toCheck2=0)
    static bool isPublicIdChar (const XMLCh toCheck, const XMLCh toCheck2=0)
    static bool isFirstNCNameChar (const XMLCh toCheck, const XMLCh toCheck2=0)
    static bool isNCNameChar (const XMLCh toCheck, const XMLCh toCheck2=0)

    Friends

    class XMLReader


    Member Function Documentation

    static bool XMLChar1_1::isAllSpaces ( const XMLCh *const   toCheck,
    const XMLSize_t  count 
    ) [static]

    static bool XMLChar1_1::containsWhiteSpace ( const XMLCh *const   toCheck,
    const XMLSize_t  count 
    ) [static]

    static bool XMLChar1_1::isValidNmtoken ( const XMLCh *const   toCheck,
    const XMLSize_t  count 
    ) [static]

    static bool XMLChar1_1::isValidName ( const XMLCh *const   toCheck,
    const XMLSize_t  count 
    ) [static]

    static bool XMLChar1_1::isValidName ( const XMLCh *const   toCheck  )  [static]

    static bool XMLChar1_1::isValidNCName ( const XMLCh *const   toCheck,
    const XMLSize_t  count 
    ) [static]

    static bool XMLChar1_1::isValidQName ( const XMLCh *const   toCheck,
    const XMLSize_t  count 
    ) [static]

    bool XMLChar1_1::isXMLLetter ( const XMLCh  toCheck,
    const XMLCh  toCheck2 = 0 
    ) [static]

    XML 1.1 does not define a letter, so we use the 1.0 definition

    References XMLChar1_0::isXMLLetter().

    bool XMLChar1_1::isFirstNameChar ( const XMLCh  toCheck,
    const XMLCh  toCheck2 = 0 
    ) [static]

    References gFirstNameCharMask.

    bool XMLChar1_1::isNameChar ( const XMLCh  toCheck,
    const XMLCh  toCheck2 = 0 
    ) [static]

    References gNameCharMask.

    bool XMLChar1_1::isPlainContentChar ( const XMLCh  toCheck,
    const XMLCh  toCheck2 = 0 
    ) [static]

    References gPlainContentCharMask.

    bool XMLChar1_1::isSpecialStartTagChar ( const XMLCh  toCheck,
    const XMLCh  toCheck2 = 0 
    ) [static]

    bool XMLChar1_1::isXMLChar ( const XMLCh  toCheck,
    const XMLCh  toCheck2 = 0 
    ) [static]

    References gXMLCharMask.

    bool XMLChar1_1::isWhitespace ( const XMLCh  toCheck,
    const XMLCh  toCheck2 = 0 
    ) [static]

    References gWhitespaceCharMask.

    bool XMLChar1_1::isControlChar ( const XMLCh  toCheck,
    const XMLCh  toCheck2 = 0 
    ) [static]

    References gControlCharMask.

    static bool XMLChar1_1::isPublicIdChar ( const XMLCh  toCheck,
    const XMLCh  toCheck2 = 0 
    ) [static]

    bool XMLChar1_1::isFirstNCNameChar ( const XMLCh  toCheck,
    const XMLCh  toCheck2 = 0 
    ) [static]

    References chColon, and gFirstNameCharMask.

    bool XMLChar1_1::isNCNameChar ( const XMLCh  toCheck,
    const XMLCh  toCheck2 = 0 
    ) [static]

    References gNCNameCharMask.


    Friends And Related Function Documentation

    friend class XMLReader [friend]


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DeclHandler_8hpp-source.html0000644000175000017500000002306111363620004022763 0ustar borisboris Xerces-C++: DeclHandler.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classURLInputSource.png0000644000175000017500000000100311363620006022064 0ustar borisboris‰PNG  IHDRgˆ}èPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf™IDATX…í—Q’ƒ †ÉKŸ 7ˆ'ØÙ½Ð>yÿ#l"+ 8­:[óI¬ó×ýôÛ—ûž»íþÉáùÄ÷¬ä¹!“'!äSÏ+sODCâËì«î4#…ž|’d"äõXÛÎJ$Έää DHVßÌÂkB¶OZC%µ×ÙV!*v Ê7û”/ôY?×B§^aU{Ô/=Z~/‚Ërtaõ4  è¦ÐÐåOR¥Å:û!j ú"–ãEªXCÓ¦,ƒuP„øþhòU%½iS\Em N¦¨1BÒæcP”T¦Ñªb¶œ0(êÕ•¤N‚a(É?¹^½@V¶&³÷A‡ìžÐÐå;6tù€4 }„ý6¹©?†ÛBÀ= JŸÝcâÒ¶¡ðÉ!pÅ@¶Ïɪ(N·…£ƒ"ÄÊ9HxrÔ å,…ÿ9™SèFÈ Xerces-C++: XMLErrorReporter Class Reference

    XMLErrorReporter Class Reference

    This abstract class defines a callback mechanism for the scanner. More...

    Inheritance diagram for XMLErrorReporter:

    AbstractDOMParser SAXParser XercesDOMParser

    List of all members.

    Public Types

    enum  ErrTypes { ErrType_Warning, ErrType_Error, ErrType_Fatal, ErrTypes_Unknown }

    Public Member Functions

    Destructor
    virtual ~XMLErrorReporter ()
     Default destructor.
    Error Handler interface
    virtual void error (const unsigned int errCode, const XMLCh *const errDomain, const ErrTypes type, const XMLCh *const errorText, const XMLCh *const systemId, const XMLCh *const publicId, const XMLFileLoc lineNum, const XMLFileLoc colNum)=0
     Called to report errors from the scanner or validator.
    virtual void resetErrors ()=0
     Called before a new parse event to allow the handler to reset.

    Protected Member Functions

    Constructor
     XMLErrorReporter ()
     Default constructor.


    Detailed Description

    This abstract class defines a callback mechanism for the scanner.

    By creating a class that implements this interface and plugging an instance of that class into the scanner, the scanner will call back on the object's virtual methods to report error events. This class is also used with the validator, to allow it to report errors.

    This class is primarily for use by those writing their own parser classes. If you use the standard parser classes, DOMParser and SAXParser, you won't use this API. You will instead use a similar mechanism defined by the SAX API, called ErrorHandler.


    Member Enumeration Documentation

    Enumerator:
    ErrType_Warning 
    ErrType_Error 
    ErrType_Fatal 
    ErrTypes_Unknown 


    Constructor & Destructor Documentation

    virtual XMLErrorReporter::~XMLErrorReporter (  )  [virtual]

    Default destructor.

    XMLErrorReporter::XMLErrorReporter (  )  [protected]

    Default constructor.


    Member Function Documentation

    virtual void XMLErrorReporter::error ( const unsigned int  errCode,
    const XMLCh *const   errDomain,
    const ErrTypes  type,
    const XMLCh *const   errorText,
    const XMLCh *const   systemId,
    const XMLCh *const   publicId,
    const XMLFileLoc  lineNum,
    const XMLFileLoc  colNum 
    ) [pure virtual]

    Called to report errors from the scanner or validator.

    This method is called back on by the scanner or validator (or any other internal parser component which might need to report an error in the future.) It contains all the information that the client code might need to report or log the error.

    Parameters:
    errCode The error code of the error being reported. What this means is dependent on the domain it is from.
    errDomain The domain from which the error occured. The domain is a means of providing a hierarchical layering to the error system, so that a single set of error id numbers don't have to be split up.
    type The error type, which is defined mostly by XML which categorizes errors into warning, errors and validity constraints.
    errorText The actual text of the error. This is translatable, so can possibly be in the local language if a translation has been provided.
    systemId The system id of the entity where the error occured, fully qualified.
    publicId The optional public id of the entity were the error occured. It can be an empty string if non was provided.
    lineNum The line number within the source XML of the error.
    colNum The column number within the source XML of the error. Because of the parsing style, this is usually just after the actual offending text.

    Implemented in SAXParser, and XercesDOMParser.

    virtual void XMLErrorReporter::resetErrors (  )  [pure virtual]

    Called before a new parse event to allow the handler to reset.

    This method is called by the scanner before a new parse event is about to start. It gives the error handler a chance to reset its internal state.

    Implemented in SAXParser, and XercesDOMParser.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLSchemaDescription.html0000644000175000017500000006275111363620006023407 0ustar borisboris Xerces-C++: XMLSchemaDescription Class Reference

    XMLSchemaDescription Class Reference

    Inheritance diagram for XMLSchemaDescription:

    XMLGrammarDescription XMemory

    List of all members.

    The SchemaDescription Interface

    enum  ContextType {
      CONTEXT_INCLUDE, CONTEXT_REDEFINE, CONTEXT_IMPORT, CONTEXT_PREPARSE,
      CONTEXT_INSTANCE, CONTEXT_ELEMENT, CONTEXT_ATTRIBUTE, CONTEXT_XSITYPE,
      CONTEXT_UNKNOWN
    }
    virtual ContextType getContextType () const =0
     getContextType
    virtual const XMLChgetTargetNamespace () const =0
     getTargetNamespace
    virtual const RefArrayVectorOf
    < XMLCh > * 
    getLocationHints () const =0
     getLocationHints
    virtual const QNamegetTriggeringComponent () const =0
     getTriggeringComponent
    virtual const QNamegetEnclosingElementName () const =0
     getenclosingElementName
    virtual const XMLAttDefgetAttributes () const =0
     getAttributes
    virtual void setContextType (ContextType)=0
     setContextType
    virtual void setTargetNamespace (const XMLCh *const)=0
     setTargetNamespace
    virtual void setLocationHints (const XMLCh *const)=0
     setLocationHints
    virtual void setTriggeringComponent (QName *const)=0
     setTriggeringComponent
    virtual void setEnclosingElementName (QName *const)=0
     getenclosingElementName
    virtual void setAttributes (XMLAttDef *const)=0
     setAttributes

    Public Member Functions

    Virtual destructor for derived classes
    virtual ~XMLSchemaDescription ()
     virtual destructor
    Implementation of Grammar Description Interface
    virtual Grammar::GrammarType getGrammarType () const
     getGrammarType

    Protected Member Functions

     XMLSchemaDescription (MemoryManager *const memMgr=XMLPlatformUtils::fgMemoryManager)
     Hidden Constructors.


    Member Enumeration Documentation

    Enumerator:
    CONTEXT_INCLUDE 
    CONTEXT_REDEFINE 
    CONTEXT_IMPORT 
    CONTEXT_PREPARSE 
    CONTEXT_INSTANCE 
    CONTEXT_ELEMENT 
    CONTEXT_ATTRIBUTE 
    CONTEXT_XSITYPE 
    CONTEXT_UNKNOWN 


    Constructor & Destructor Documentation

    virtual XMLSchemaDescription::~XMLSchemaDescription (  )  [virtual]

    virtual destructor

    XMLSchemaDescription::XMLSchemaDescription ( MemoryManager *const   memMgr = XMLPlatformUtils::fgMemoryManager  )  [protected]

    Hidden Constructors.


    Member Function Documentation

    virtual Grammar::GrammarType XMLSchemaDescription::getGrammarType (  )  const [virtual]

    getGrammarType

    Implements XMLGrammarDescription.

    virtual ContextType XMLSchemaDescription::getContextType (  )  const [pure virtual]

    getContextType

    virtual const XMLCh* XMLSchemaDescription::getTargetNamespace (  )  const [pure virtual]

    getTargetNamespace

    virtual const RefArrayVectorOf<XMLCh>* XMLSchemaDescription::getLocationHints (  )  const [pure virtual]

    getLocationHints

    virtual const QName* XMLSchemaDescription::getTriggeringComponent (  )  const [pure virtual]

    getTriggeringComponent

    virtual const QName* XMLSchemaDescription::getEnclosingElementName (  )  const [pure virtual]

    getenclosingElementName

    virtual const XMLAttDef* XMLSchemaDescription::getAttributes (  )  const [pure virtual]

    getAttributes

    virtual void XMLSchemaDescription::setContextType ( ContextType   )  [pure virtual]

    setContextType

    virtual void XMLSchemaDescription::setTargetNamespace ( const XMLCh const  )  [pure virtual]

    setTargetNamespace

    virtual void XMLSchemaDescription::setLocationHints ( const XMLCh const  )  [pure virtual]

    setLocationHints

    virtual void XMLSchemaDescription::setTriggeringComponent ( QName const  )  [pure virtual]

    setTriggeringComponent

    virtual void XMLSchemaDescription::setEnclosingElementName ( QName const  )  [pure virtual]

    getenclosingElementName

    virtual void XMLSchemaDescription::setAttributes ( XMLAttDef const  )  [pure virtual]

    setAttributes


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLGrammarPool_8hpp.html0000644000175000017500000000436511363620005022130 0ustar borisboris Xerces-C++: XMLGrammarPool.hpp File Reference

    XMLGrammarPool.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLGrammarPool

    Defines

    #define XERCESC_INCLUDE_GUARD_XMLGRAMMARPOOL_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XMLGRAMMARPOOL_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classSAXNotSupportedException.html0000644000175000017500000002404111363620006024311 0ustar borisboris Xerces-C++: SAXNotSupportedException Class Reference

    SAXNotSupportedException Class Reference

    Inheritance diagram for SAXNotSupportedException:

    SAXException XMemory

    List of all members.

    Public Member Functions

     SAXNotSupportedException (MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     SAXNotSupportedException (const XMLCh *const msg, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Create a new SAXException.
     SAXNotSupportedException (const char *const msg, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Create a new SAXException.
     SAXNotSupportedException (const SAXException &toCopy)
     Copy constructor.


    Constructor & Destructor Documentation

    SAXNotSupportedException::SAXNotSupportedException ( MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager  ) 

    SAXNotSupportedException::SAXNotSupportedException ( const XMLCh *const   msg,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    Create a new SAXException.

    Parameters:
    msg The error or warning message.
    manager Pointer to the memory manager to be used to allocate objects.

    SAXNotSupportedException::SAXNotSupportedException ( const char *const   msg,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    Create a new SAXException.

    Parameters:
    msg The error or warning message.
    manager Pointer to the memory manager to be used to allocate objects.

    SAXNotSupportedException::SAXNotSupportedException ( const SAXException toCopy  ) 

    Copy constructor.

    Parameters:
    toCopy The exception to be copy constructed


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMCDATASection-members.html0000644000175000017500000005261611363620005023551 0ustar borisboris Xerces-C++: Member List

    DOMCDATASection Member List

    This is the complete list of members for DOMCDATASection, including all inherited members.

    appendChild(DOMNode *newChild)=0DOMNode [pure virtual]
    appendData(const XMLCh *arg)=0DOMCharacterData [pure virtual]
    ATTRIBUTE_NODE enum valueDOMNode
    CDATA_SECTION_NODE enum valueDOMNode
    cloneNode(bool deep) const =0DOMNode [pure virtual]
    COMMENT_NODE enum valueDOMNode
    compareDocumentPosition(const DOMNode *other) const =0DOMNode [pure virtual]
    deleteData(XMLSize_t offset, XMLSize_t count)=0DOMCharacterData [pure virtual]
    DOCUMENT_FRAGMENT_NODE enum valueDOMNode
    DOCUMENT_NODE enum valueDOMNode
    DOCUMENT_POSITION_CONTAINED_BY enum valueDOMNode
    DOCUMENT_POSITION_CONTAINS enum valueDOMNode
    DOCUMENT_POSITION_DISCONNECTED enum valueDOMNode
    DOCUMENT_POSITION_FOLLOWING enum valueDOMNode
    DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC enum valueDOMNode
    DOCUMENT_POSITION_PRECEDING enum valueDOMNode
    DOCUMENT_TYPE_NODE enum valueDOMNode
    DocumentPosition enum nameDOMNode
    DOMCDATASection()DOMCDATASection [protected]
    DOMCDATASection(const DOMCDATASection &other)DOMCDATASection [protected]
    DOMCharacterData()DOMCharacterData [protected]
    DOMCharacterData(const DOMCharacterData &other)DOMCharacterData [protected]
    DOMNode()DOMNode [protected]
    DOMNode(const DOMNode &)DOMNode [protected]
    DOMText()DOMText [protected]
    DOMText(const DOMText &other)DOMText [protected]
    ELEMENT_NODE enum valueDOMNode
    ENTITY_NODE enum valueDOMNode
    ENTITY_REFERENCE_NODE enum valueDOMNode
    getAttributes() const =0DOMNode [pure virtual]
    getBaseURI() const =0DOMNode [pure virtual]
    getChildNodes() const =0DOMNode [pure virtual]
    getData() const =0DOMCharacterData [pure virtual]
    getFeature(const XMLCh *feature, const XMLCh *version) const =0DOMNode [pure virtual]
    getFirstChild() const =0DOMNode [pure virtual]
    getIsElementContentWhitespace() const =0DOMText [pure virtual]
    getLastChild() const =0DOMNode [pure virtual]
    getLength() const =0DOMCharacterData [pure virtual]
    getLocalName() const =0DOMNode [pure virtual]
    getNamespaceURI() const =0DOMNode [pure virtual]
    getNextSibling() const =0DOMNode [pure virtual]
    getNodeName() const =0DOMNode [pure virtual]
    getNodeType() const =0DOMNode [pure virtual]
    getNodeValue() const =0DOMNode [pure virtual]
    getOwnerDocument() const =0DOMNode [pure virtual]
    getParentNode() const =0DOMNode [pure virtual]
    getPrefix() const =0DOMNode [pure virtual]
    getPreviousSibling() const =0DOMNode [pure virtual]
    getTextContent() const =0DOMNode [pure virtual]
    getUserData(const XMLCh *key) const =0DOMNode [pure virtual]
    getWholeText() const =0DOMText [pure virtual]
    hasAttributes() const =0DOMNode [pure virtual]
    hasChildNodes() const =0DOMNode [pure virtual]
    insertBefore(DOMNode *newChild, DOMNode *refChild)=0DOMNode [pure virtual]
    insertData(XMLSize_t offset, const XMLCh *arg)=0DOMCharacterData [pure virtual]
    isDefaultNamespace(const XMLCh *namespaceURI) const =0DOMNode [pure virtual]
    isEqualNode(const DOMNode *arg) const =0DOMNode [pure virtual]
    isIgnorableWhitespace() const =0DOMText [pure virtual]
    isSameNode(const DOMNode *other) const =0DOMNode [pure virtual]
    isSupported(const XMLCh *feature, const XMLCh *version) const =0DOMNode [pure virtual]
    lookupNamespaceURI(const XMLCh *prefix) const =0DOMNode [pure virtual]
    lookupPrefix(const XMLCh *namespaceURI) const =0DOMNode [pure virtual]
    NodeType enum nameDOMNode
    normalize()=0DOMNode [pure virtual]
    NOTATION_NODE enum valueDOMNode
    PROCESSING_INSTRUCTION_NODE enum valueDOMNode
    release()=0DOMNode [pure virtual]
    removeChild(DOMNode *oldChild)=0DOMNode [pure virtual]
    replaceChild(DOMNode *newChild, DOMNode *oldChild)=0DOMNode [pure virtual]
    replaceData(XMLSize_t offset, XMLSize_t count, const XMLCh *arg)=0DOMCharacterData [pure virtual]
    replaceWholeText(const XMLCh *content)=0DOMText [pure virtual]
    setData(const XMLCh *data)=0DOMCharacterData [pure virtual]
    setNodeValue(const XMLCh *nodeValue)=0DOMNode [pure virtual]
    setPrefix(const XMLCh *prefix)=0DOMNode [pure virtual]
    setTextContent(const XMLCh *textContent)=0DOMNode [pure virtual]
    setUserData(const XMLCh *key, void *data, DOMUserDataHandler *handler)=0DOMNode [pure virtual]
    splitText(XMLSize_t offset)=0DOMText [pure virtual]
    substringData(XMLSize_t offset, XMLSize_t count) const =0DOMCharacterData [pure virtual]
    TEXT_NODE enum valueDOMNode
    ~DOMCDATASection()DOMCDATASection [virtual]
    ~DOMCharacterData()DOMCharacterData [virtual]
    ~DOMNode()DOMNode [virtual]
    ~DOMText()DOMText [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMXPathException-members.html0000644000175000017500000002325311363620006024307 0ustar borisboris Xerces-C++: Member List

    DOMXPathException Member List

    This is the complete list of members for DOMXPathException, including all inherited members.

    codeDOMException
    DOMException()DOMException
    DOMException(short code, short messageCode=0, MemoryManager *const memoryManager=XMLPlatformUtils::fgMemoryManager)DOMException
    DOMException(const DOMException &other)DOMException
    DOMSTRING_SIZE_ERR enum valueDOMException
    DOMXPathException()DOMXPathException
    DOMXPathException(short code, short messageCode=0, MemoryManager *const memoryManager=XMLPlatformUtils::fgMemoryManager)DOMXPathException
    DOMXPathException(const DOMXPathException &other)DOMXPathException
    ExceptionCode enum nameDOMXPathException
    fMemoryManagerDOMException [protected]
    getMessage() const DOMException
    HIERARCHY_REQUEST_ERR enum valueDOMException
    INDEX_SIZE_ERR enum valueDOMException
    INUSE_ATTRIBUTE_ERR enum valueDOMException
    INVALID_ACCESS_ERR enum valueDOMException
    INVALID_CHARACTER_ERR enum valueDOMException
    INVALID_EXPRESSION_ERR enum valueDOMXPathException
    INVALID_MODIFICATION_ERR enum valueDOMException
    INVALID_STATE_ERR enum valueDOMException
    msgDOMException
    NAMESPACE_ERR enum valueDOMException
    NO_DATA_ALLOWED_ERR enum valueDOMException
    NO_MODIFICATION_ALLOWED_ERR enum valueDOMException
    NO_RESULT_ERROR enum valueDOMXPathException
    NOT_FOUND_ERR enum valueDOMException
    NOT_SUPPORTED_ERR enum valueDOMException
    SYNTAX_ERR enum valueDOMException
    TYPE_ERR enum valueDOMXPathException
    TYPE_MISMATCH_ERR enum valueDOMException
    VALIDATION_ERR enum valueDOMException
    WRONG_DOCUMENT_ERR enum valueDOMException
    ~DOMException()DOMException [virtual]
    ~DOMXPathException()DOMXPathException [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMEntityReference-members.html0000644000175000017500000004127611363620005024503 0ustar borisboris Xerces-C++: Member List

    DOMEntityReference Member List

    This is the complete list of members for DOMEntityReference, including all inherited members.

    appendChild(DOMNode *newChild)=0DOMNode [pure virtual]
    ATTRIBUTE_NODE enum valueDOMNode
    CDATA_SECTION_NODE enum valueDOMNode
    cloneNode(bool deep) const =0DOMNode [pure virtual]
    COMMENT_NODE enum valueDOMNode
    compareDocumentPosition(const DOMNode *other) const =0DOMNode [pure virtual]
    DOCUMENT_FRAGMENT_NODE enum valueDOMNode
    DOCUMENT_NODE enum valueDOMNode
    DOCUMENT_POSITION_CONTAINED_BY enum valueDOMNode
    DOCUMENT_POSITION_CONTAINS enum valueDOMNode
    DOCUMENT_POSITION_DISCONNECTED enum valueDOMNode
    DOCUMENT_POSITION_FOLLOWING enum valueDOMNode
    DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC enum valueDOMNode
    DOCUMENT_POSITION_PRECEDING enum valueDOMNode
    DOCUMENT_TYPE_NODE enum valueDOMNode
    DocumentPosition enum nameDOMNode
    DOMEntityReference()DOMEntityReference [protected]
    DOMEntityReference(const DOMEntityReference &other)DOMEntityReference [protected]
    DOMNode()DOMNode [protected]
    DOMNode(const DOMNode &)DOMNode [protected]
    ELEMENT_NODE enum valueDOMNode
    ENTITY_NODE enum valueDOMNode
    ENTITY_REFERENCE_NODE enum valueDOMNode
    getAttributes() const =0DOMNode [pure virtual]
    getBaseURI() const =0DOMNode [pure virtual]
    getChildNodes() const =0DOMNode [pure virtual]
    getFeature(const XMLCh *feature, const XMLCh *version) const =0DOMNode [pure virtual]
    getFirstChild() const =0DOMNode [pure virtual]
    getLastChild() const =0DOMNode [pure virtual]
    getLocalName() const =0DOMNode [pure virtual]
    getNamespaceURI() const =0DOMNode [pure virtual]
    getNextSibling() const =0DOMNode [pure virtual]
    getNodeName() const =0DOMNode [pure virtual]
    getNodeType() const =0DOMNode [pure virtual]
    getNodeValue() const =0DOMNode [pure virtual]
    getOwnerDocument() const =0DOMNode [pure virtual]
    getParentNode() const =0DOMNode [pure virtual]
    getPrefix() const =0DOMNode [pure virtual]
    getPreviousSibling() const =0DOMNode [pure virtual]
    getTextContent() const =0DOMNode [pure virtual]
    getUserData(const XMLCh *key) const =0DOMNode [pure virtual]
    hasAttributes() const =0DOMNode [pure virtual]
    hasChildNodes() const =0DOMNode [pure virtual]
    insertBefore(DOMNode *newChild, DOMNode *refChild)=0DOMNode [pure virtual]
    isDefaultNamespace(const XMLCh *namespaceURI) const =0DOMNode [pure virtual]
    isEqualNode(const DOMNode *arg) const =0DOMNode [pure virtual]
    isSameNode(const DOMNode *other) const =0DOMNode [pure virtual]
    isSupported(const XMLCh *feature, const XMLCh *version) const =0DOMNode [pure virtual]
    lookupNamespaceURI(const XMLCh *prefix) const =0DOMNode [pure virtual]
    lookupPrefix(const XMLCh *namespaceURI) const =0DOMNode [pure virtual]
    NodeType enum nameDOMNode
    normalize()=0DOMNode [pure virtual]
    NOTATION_NODE enum valueDOMNode
    PROCESSING_INSTRUCTION_NODE enum valueDOMNode
    release()=0DOMNode [pure virtual]
    removeChild(DOMNode *oldChild)=0DOMNode [pure virtual]
    replaceChild(DOMNode *newChild, DOMNode *oldChild)=0DOMNode [pure virtual]
    setNodeValue(const XMLCh *nodeValue)=0DOMNode [pure virtual]
    setPrefix(const XMLCh *prefix)=0DOMNode [pure virtual]
    setTextContent(const XMLCh *textContent)=0DOMNode [pure virtual]
    setUserData(const XMLCh *key, void *data, DOMUserDataHandler *handler)=0DOMNode [pure virtual]
    TEXT_NODE enum valueDOMNode
    ~DOMEntityReference()DOMEntityReference [virtual]
    ~DOMNode()DOMNode [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSAttributeDeclaration.png0000644000175000017500000000111511363620006023611 0ustar borisboris‰PNG  IHDRˆ(½u%PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfãIDAThí˜]’ ÇÉË>n@O°³{!Ÿ¼ÿ6€ [-È8­:€´üü“¤Ó¦îwJùv?ËŒbœ1N #RŸäD®ÃiœHG$}Ô/!VÚÁ¡%¼\!”ž¨Ý2Ì…#G©Ýz¨‰ bÃY1ü]û'ð‰Ca5ûêåhüHEÕ#þZVÌÓÏ“8kñÝËY‘s˜ûýøœYÏ å´å¢×q¾ÎûâœÏ§]qöæ/ãÇ8Æ1ŽqöÇ™õµ·÷ÃÏâH¦…”rE ’ääe(Ô°Y;ÆQ)1JÒ-9<öçËü1A9š¡Æ|Yõcâ,…Ó»/Ñ“¾•$â'Û¹Ö³<ÁQÛ§ŸÊ_±Ó_ÿ€ï•Ws}ß:Êý~|άçάçàë8–¿?(“0Æ1ŽqŒcã¼/§ïüÉÆÙÀ>óˆÉô¼t€X-¸ áZ—JÓÞ'Žk8Õòšs­'qœp(¨ó2‰0ë¥Xã9jŸI¾0s€¯”mè!x䯥´<ôza±³À|áä57çÒ¿¹ ÇA£Gµã ‡b^8Ú³XÙ(ïþ†“íì]:Ùè)^uR®Û8<(FªØw8%~„ãQN³¹<“Pã§òƒ©Mþªô<_Œó©œIÏ?\|~9_ŸžIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/XSNamespaceItem_8hpp.html0000644000175000017500000000437711363620005022320 0ustar borisboris Xerces-C++: XSNamespaceItem.hpp File Reference

    XSNamespaceItem.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XSNamespaceItem

    Defines

    #define XERCESC_INCLUDE_GUARD_XSNAMESPACEITEM_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XSNAMESPACEITEM_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLUri-members.html0000644000175000017500000002163511363620006022166 0ustar borisboris Xerces-C++: Member List

    XMLUri Member List

    This is the complete list of members for XMLUri, including all inherited members.

    getFragment() const XMLUri
    getHost() const XMLUri
    getPath() const XMLUri
    getPort() const XMLUri
    getQueryString() const XMLUri
    getRegBasedAuthority() const XMLUri
    getScheme() const XMLUri
    getUriText() const XMLUri
    getUserInfo() const XMLUri
    isURIString(const XMLCh *const uric)XMLUri [static]
    isValidURI(const XMLUri *const baseURI, const XMLCh *const uriStr, bool bAllowSpaces=false)XMLUri [static]
    isValidURI(bool haveBaseURI, const XMLCh *const uriStr, bool bAllowSpaces=false)XMLUri [static]
    normalizeURI(const XMLCh *const systemURI, XMLBuffer &normalizedURI)XMLUri [static]
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    operator=(const XMLUri &toAssign)XMLUri
    setFragment(const XMLCh *const newFragment)XMLUri
    setHost(const XMLCh *const newHost)XMLUri
    setPath(const XMLCh *const newPath)XMLUri
    setPort(int newPort)XMLUri
    setQueryString(const XMLCh *const newQueryString)XMLUri
    setRegBasedAuthority(const XMLCh *const newRegAuth)XMLUri
    setScheme(const XMLCh *const newScheme)XMLUri
    setUserInfo(const XMLCh *const newUserInfo)XMLUri
    XMemory()XMemory [protected]
    XMLUri(const XMLCh *const uriSpec, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLUri
    XMLUri(const XMLUri *const baseURI, const XMLCh *const uriSpec, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLUri
    XMLUri(const XMLUri &toCopy)XMLUri
    XMLUri(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLUri
    ~XMLUri()XMLUri [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classHexBin.html0000644000175000017500000002534211363620006020572 0ustar borisboris Xerces-C++: HexBin Class Reference

    HexBin Class Reference

    List of all members.

    Static Public Member Functions

    static int getDataLength (const XMLCh *const hexData)
     return the length of hexData in terms of HexBinary.
    static bool isArrayByteHex (const XMLCh *const hexData)
     check an array of data against the Hex table.
    static XMLChgetCanonicalRepresentation (const XMLCh *const hexData, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     get canonical representation
    static XMLBytedecodeToXMLByte (const XMLCh *const hexData, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Decodes HexBinary data into XMLByte.


    Member Function Documentation

    static int HexBin::getDataLength ( const XMLCh *const   hexData  )  [static]

    return the length of hexData in terms of HexBinary.

    Parameters:
    hexData A string containing the HexBinary
    return: -1 if it contains any invalid HexBinary the length of the HexNumber otherwise.

    static bool HexBin::isArrayByteHex ( const XMLCh *const   hexData  )  [static]

    check an array of data against the Hex table.

    Parameters:
    hexData A string containing the HexBinary
    return: false if it contains any invalid HexBinary true otherwise.

    static XMLCh* HexBin::getCanonicalRepresentation ( const XMLCh *const   hexData,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    get canonical representation

    Caller is responsible for the proper deallocation of the string returned.

    Parameters:
    hexData A string containing the HexBinary
    manager The MemoryManager to use to allocate the string
    return: the canonical representation of the HexBinary if it is a valid HexBinary, 0 otherwise

    static XMLByte* HexBin::decodeToXMLByte ( const XMLCh *const   hexData,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Decodes HexBinary data into XMLByte.

    NOTE: The returned buffer is dynamically allocated and is the responsibility of the caller to delete it when not longer needed. Use the memory manager to release the returned buffer.

    Parameters:
    hexData HexBinary data in XMLCh stream.
    manager client provided memory manager
    Returns:
    Decoded binary data in XMLByte stream, or NULL if input data can not be decoded.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/ArrayIndexOutOfBoundsException_8hpp.html0000644000175000017500000000417611363620005025404 0ustar borisboris Xerces-C++: ArrayIndexOutOfBoundsException.hpp File Reference

    ArrayIndexOutOfBoundsException.hpp File Reference

    Go to the source code of this file.

    Defines

    #define XERCESC_INCLUDE_GUARD_ARRAYINDEXOUTOFBOUNDSEXCEPTION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_ARRAYINDEXOUTOFBOUNDSEXCEPTION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLURL_8hpp-source.html0000644000175000017500000010510711363620005021644 0ustar borisboris Xerces-C++: XMLURL.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_eval_0x6c.html0000644000175000017500000001067111363620005022244 0ustar borisboris Xerces-C++: Class Members - Enumerator
     

    - l -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_eval_0x70.html0000644000175000017500000002544011363620005022162 0ustar borisboris Xerces-C++: Class Members - Enumerator
     

    - p -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLDeleter.html0000644000175000017500000000664611363620006021370 0ustar borisboris Xerces-C++: XMLDeleter Class Reference

    XMLDeleter Class Reference

    List of all members.

    Public Member Functions

    virtual ~XMLDeleter ()

    Protected Member Functions

     XMLDeleter ()


    Constructor & Destructor Documentation

    XMLDeleter::~XMLDeleter (  )  [virtual]

    XMLDeleter::XMLDeleter (  )  [protected]


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMStringList_8hpp.html0000644000175000017500000000524611363620005021770 0ustar borisboris Xerces-C++: DOMStringList.hpp File Reference

    DOMStringList.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMStringList
     The DOMStringList interface provides the abstraction of an ordered collection of strings, without defining or constraining how this collection is implemented. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMSTRINGLIST_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMSTRINGLIST_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMXPathNSResolver_8hpp-source.html0000644000175000017500000002344711363620004024175 0ustar borisboris Xerces-C++: DOMXPathNSResolver.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLTranscoder-members.html0000644000175000017500000001377311363620006023537 0ustar borisboris Xerces-C++: Member List

    XMLTranscoder Member List

    This is the complete list of members for XMLTranscoder, including all inherited members.

    canTranscodeTo(const unsigned int toCheck)=0XMLTranscoder [pure virtual]
    getBlockSize() const XMLTranscoder
    getEncodingName() const XMLTranscoder
    getMemoryManager() const XMLTranscoder
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    transcodeFrom(const XMLByte *const srcData, const XMLSize_t srcCount, XMLCh *const toFill, const XMLSize_t maxChars, XMLSize_t &bytesEaten, unsigned char *const charSizes)=0XMLTranscoder [pure virtual]
    transcodeTo(const XMLCh *const srcData, const XMLSize_t srcCount, XMLByte *const toFill, const XMLSize_t maxBytes, XMLSize_t &charsEaten, const UnRepOpts options)=0XMLTranscoder [pure virtual]
    UnRep_RepChar enum valueXMLTranscoder
    UnRep_Throw enum valueXMLTranscoder
    UnRepOpts enum nameXMLTranscoder
    XMemory()XMemory [protected]
    XMLTranscoder(const XMLCh *const encodingName, const XMLSize_t blockSize, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLTranscoder [protected]
    ~XMLTranscoder()XMLTranscoder [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMNode.html0000644000175000017500000033564711363620005020655 0ustar borisboris Xerces-C++: DOMNode Class Reference

    DOMNode Class Reference

    The DOMNode interface is the primary datatype for the entire Document Object Model. More...

    Inheritance diagram for DOMNode:

    DOMAttr DOMCharacterData DOMDocument DOMDocumentFragment DOMDocumentType DOMElement DOMEntity DOMEntityReference DOMNotation DOMProcessingInstruction DOMXPathNamespace

    List of all members.

    Public Types

    Public Constants
    enum  NodeType {
      ELEMENT_NODE = 1, ATTRIBUTE_NODE = 2, TEXT_NODE = 3, CDATA_SECTION_NODE = 4,
      ENTITY_REFERENCE_NODE = 5, ENTITY_NODE = 6, PROCESSING_INSTRUCTION_NODE = 7, COMMENT_NODE = 8,
      DOCUMENT_NODE = 9, DOCUMENT_TYPE_NODE = 10, DOCUMENT_FRAGMENT_NODE = 11, NOTATION_NODE = 12
    }
     NodeType. More...
    enum  DocumentPosition {
      DOCUMENT_POSITION_DISCONNECTED = 0x01, DOCUMENT_POSITION_PRECEDING = 0x02, DOCUMENT_POSITION_FOLLOWING = 0x04, DOCUMENT_POSITION_CONTAINS = 0x08,
      DOCUMENT_POSITION_CONTAINED_BY = 0x10, DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20
    }
     DocumentPosition:. More...

    Public Member Functions

    Destructor
    virtual ~DOMNode ()
     Destructor.
    Functions introduced in DOM Level 1
    virtual const XMLChgetNodeName () const =0
     The name of this node, depending on its type; see the table above.
    virtual const XMLChgetNodeValue () const =0
     Gets the value of this node, depending on its type.
    virtual NodeType getNodeType () const =0
     An enum value representing the type of the underlying object.
    virtual DOMNodegetParentNode () const =0
     Gets the parent of this node.
    virtual DOMNodeListgetChildNodes () const =0
     Gets a DOMNodeList that contains all children of this node.
    virtual DOMNodegetFirstChild () const =0
     Gets the first child of this node.
    virtual DOMNodegetLastChild () const =0
     Gets the last child of this node.
    virtual DOMNodegetPreviousSibling () const =0
     Gets the node immediately preceding this node.
    virtual DOMNodegetNextSibling () const =0
     Gets the node immediately following this node.
    virtual DOMNamedNodeMapgetAttributes () const =0
     Gets a DOMNamedNodeMap containing the attributes of this node (if it is an DOMElement) or null otherwise.
    virtual DOMDocumentgetOwnerDocument () const =0
     Gets the DOMDocument object associated with this node.
    virtual DOMNodecloneNode (bool deep) const =0
     Returns a duplicate of this node.
    virtual DOMNodeinsertBefore (DOMNode *newChild, DOMNode *refChild)=0
     Inserts the node newChild before the existing child node refChild.
    virtual DOMNodereplaceChild (DOMNode *newChild, DOMNode *oldChild)=0
     Replaces the child node oldChild with newChild in the list of children, and returns the oldChild node.
    virtual DOMNoderemoveChild (DOMNode *oldChild)=0
     Removes the child node indicated by oldChild from the list of children, and returns it.
    virtual DOMNodeappendChild (DOMNode *newChild)=0
     Adds the node newChild to the end of the list of children of this node.
    virtual bool hasChildNodes () const =0
     This is a convenience method to allow easy determination of whether a node has any children.
    virtual void setNodeValue (const XMLCh *nodeValue)=0
     Sets the value of the node.
    Functions introduced in DOM Level 2.
    virtual void normalize ()=0
     Puts all DOMText nodes in the full depth of the sub-tree underneath this DOMNode, including attribute nodes, into a "normal" form where only markup (e.g., tags, comments, processing instructions, CDATA sections, and entity references) separates DOMText nodes, i.e., there are neither adjacent DOMText nodes nor empty DOMText nodes.
    virtual bool isSupported (const XMLCh *feature, const XMLCh *version) const =0
     Tests whether the DOM implementation implements a specific feature and that feature is supported by this node.
    virtual const XMLChgetNamespaceURI () const =0
     Get the namespace URI of this node, or null if it is unspecified.
    virtual const XMLChgetPrefix () const =0
     Get the namespace prefix of this node, or null if it is unspecified.
    virtual const XMLChgetLocalName () const =0
     Returns the local part of the qualified name of this node.
    virtual void setPrefix (const XMLCh *prefix)=0
     Set the namespace prefix of this node.
    virtual bool hasAttributes () const =0
     Returns whether this node (if it is an element) has any attributes.
    Functions introduced in DOM Level 3.
    virtual bool isSameNode (const DOMNode *other) const =0
     Returns whether this node is the same node as the given one.
    virtual bool isEqualNode (const DOMNode *arg) const =0
     Tests whether two nodes are equal.
    virtual void * setUserData (const XMLCh *key, void *data, DOMUserDataHandler *handler)=0
     Associate an object to a key on this node.
    virtual void * getUserData (const XMLCh *key) const =0
     Retrieves the object associated to a key on a this node.
    virtual const XMLChgetBaseURI () const =0
     The absolute base URI of this node or null if undefined.
    virtual short compareDocumentPosition (const DOMNode *other) const =0
     Compares the reference node, i.e.
    virtual const XMLChgetTextContent () const =0
     This attribute returns the text content of this node and its descendants.
    virtual void setTextContent (const XMLCh *textContent)=0
     This attribute removes any possible children this node may have and, if the new string is not empty or null, replaced by a single DOMText node containing the string this attribute is set to.
    virtual const XMLChlookupPrefix (const XMLCh *namespaceURI) const =0
     Look up the prefix associated to the given namespace URI, starting from this node.
    virtual bool isDefaultNamespace (const XMLCh *namespaceURI) const =0
     This method checks if the specified namespaceURI is the default namespace or not.
    virtual const XMLChlookupNamespaceURI (const XMLCh *prefix) const =0
     Look up the namespace URI associated to the given prefix, starting from this node.
    virtual void * getFeature (const XMLCh *feature, const XMLCh *version) const =0
     This method makes available a DOMNode's specialized interface.
    Non-standard Extension
    virtual void release ()=0
     Called to indicate that this Node (and its associated children) is no longer in use and that the implementation may relinquish any resources associated with it and its associated children.

    Protected Member Functions

    Hidden constructors
     DOMNode ()
     DOMNode (const DOMNode &)


    Detailed Description

    The DOMNode interface is the primary datatype for the entire Document Object Model.

    It represents a single node in the document tree. While all objects implementing the DOMNode interface expose methods for dealing with children, not all objects implementing the DOMNode interface may have children. For example, DOMText nodes may not have children, and adding children to such nodes results in a DOMException being raised.

    The attributes nodeName, nodeValue and attributes are included as a mechanism to get at node information without casting down to the specific derived interface. In cases where there is no obvious mapping of these attributes for a specific nodeType (e.g., nodeValue for an DOMElement or attributes for a DOMComment ), this returns null. Note that the specialized interfaces may contain additional and more convenient mechanisms to get and set the relevant information.

    The values of nodeName, nodeValue, and attributes vary according to the node type as follows:
    Interface nodeName nodeValue attributes
    DOMAttr name of attribute value of attribute null
    DOMCDATASection "#cdata-section" content of the CDATA Section null
    DOMComment "#comment" content of the comment null
    DOMDocument "#document" null null
    DOMDocumentFragment "#document-fragment" null null
    DOMDocumentType document type name null null
    DOMElement tag name null NamedNodeMap
    DOMEntity entity name null null
    DOMEntityReference name of entity referenced null null
    DOMNotation notation name null null
    DOMProcessingInstruction target entire content excluding the target null
    DOMText "#text" content of the text node null

    See also the Document Object Model (DOM) Level 2 Core Specification.

    Since:
    DOM Level 1

    Member Enumeration Documentation

    NodeType.

    Since:
    DOM Level 1
    Enumerator:
    ELEMENT_NODE 
    ATTRIBUTE_NODE 
    TEXT_NODE 
    CDATA_SECTION_NODE 
    ENTITY_REFERENCE_NODE 
    ENTITY_NODE 
    PROCESSING_INSTRUCTION_NODE 
    COMMENT_NODE 
    DOCUMENT_NODE 
    DOCUMENT_TYPE_NODE 
    DOCUMENT_FRAGMENT_NODE 
    NOTATION_NODE 

    DocumentPosition:.

    DOCUMENT_POSITION_CONTAINED_BY: The node is contained by the reference node. A node which is contained is always following, too.

    DOCUMENT_POSITION_CONTAINS: The node contains the reference node. A node which contains is always preceding, too.

    DOCUMENT_POSITION_DISCONNECTED: The two nodes are disconnected. Order between disconnected nodes is always implementation-specific.

    DOCUMENT_POSITION_FOLLOWING: The node follows the reference node.

    DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: The determination of preceding versus following is implementation-specific.

    DOCUMENT_POSITION_PRECEDING: The second node precedes the reference node.

    Since:
    DOM Level 3
    Enumerator:
    DOCUMENT_POSITION_DISCONNECTED 
    DOCUMENT_POSITION_PRECEDING 
    DOCUMENT_POSITION_FOLLOWING 
    DOCUMENT_POSITION_CONTAINS 
    DOCUMENT_POSITION_CONTAINED_BY 
    DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC 


    Constructor & Destructor Documentation

    DOMNode::DOMNode (  )  [protected]

    DOMNode::DOMNode ( const DOMNode  )  [protected]

    virtual DOMNode::~DOMNode (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual const XMLCh* DOMNode::getNodeName (  )  const [pure virtual]

    The name of this node, depending on its type; see the table above.

    Since:
    DOM Level 1

    virtual const XMLCh* DOMNode::getNodeValue (  )  const [pure virtual]

    Gets the value of this node, depending on its type.

    Exceptions:
    DOMException NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
    Since:
    DOM Level 1

    virtual NodeType DOMNode::getNodeType (  )  const [pure virtual]

    An enum value representing the type of the underlying object.

    Since:
    DOM Level 1

    virtual DOMNode* DOMNode::getParentNode (  )  const [pure virtual]

    Gets the parent of this node.

    All nodes, except DOMDocument, DOMDocumentFragment, and DOMAttr may have a parent. However, if a node has just been created and not yet added to the tree, or if it has been removed from the tree, a null DOMNode is returned.

    Since:
    DOM Level 1

    virtual DOMNodeList* DOMNode::getChildNodes (  )  const [pure virtual]

    Gets a DOMNodeList that contains all children of this node.

    If there are no children, this is a DOMNodeList containing no nodes. The content of the returned DOMNodeList is "live" in the sense that, for instance, changes to the children of the node object that it was created from are immediately reflected in the nodes returned by the DOMNodeList accessors; it is not a static snapshot of the content of the node. This is true for every DOMNodeList, including the ones returned by the getElementsByTagName method.

    Since:
    DOM Level 1

    virtual DOMNode* DOMNode::getFirstChild (  )  const [pure virtual]

    Gets the first child of this node.

    If there is no such node, this returns null.

    Since:
    DOM Level 1

    virtual DOMNode* DOMNode::getLastChild (  )  const [pure virtual]

    Gets the last child of this node.

    If there is no such node, this returns null.

    Since:
    DOM Level 1

    virtual DOMNode* DOMNode::getPreviousSibling (  )  const [pure virtual]

    Gets the node immediately preceding this node.

    If there is no such node, this returns null.

    Since:
    DOM Level 1

    virtual DOMNode* DOMNode::getNextSibling (  )  const [pure virtual]

    Gets the node immediately following this node.

    If there is no such node, this returns null.

    Since:
    DOM Level 1

    virtual DOMNamedNodeMap* DOMNode::getAttributes (  )  const [pure virtual]

    Gets a DOMNamedNodeMap containing the attributes of this node (if it is an DOMElement) or null otherwise.

    Since:
    DOM Level 1

    virtual DOMDocument* DOMNode::getOwnerDocument (  )  const [pure virtual]

    Gets the DOMDocument object associated with this node.

    This is also the DOMDocument object used to create new nodes. When this node is a DOMDocument or a DOMDocumentType which is not used with any DOMDocument yet, this is null.

    Since:
    DOM Level 1

    virtual DOMNode* DOMNode::cloneNode ( bool  deep  )  const [pure virtual]

    Returns a duplicate of this node.

    This function serves as a generic copy constructor for nodes.

    The duplicate node has no parent ( parentNode returns null.).
    Cloning an DOMElement copies all attributes and their values, including those generated by the XML processor to represent defaulted attributes, but this method does not copy any text it contains unless it is a deep clone, since the text is contained in a child DOMText node. Cloning any other type of node simply returns a copy of this node.

    Parameters:
    deep If true, recursively clone the subtree under the specified node; if false, clone only the node itself (and its attributes, if it is an DOMElement).
    Returns:
    The duplicate node.
    Since:
    DOM Level 1

    virtual DOMNode* DOMNode::insertBefore ( DOMNode newChild,
    DOMNode refChild 
    ) [pure virtual]

    Inserts the node newChild before the existing child node refChild.

    If refChild is null, insert newChild at the end of the list of children.
    If newChild is a DOMDocumentFragment object, all of its children are inserted, in the same order, before refChild. If the newChild is already in the tree, it is first removed. Note that a DOMNode that has never been assigned to refer to an actual node is == null.

    Parameters:
    newChild The node to insert.
    refChild The reference node, i.e., the node before which the new node must be inserted.
    Returns:
    The node being inserted.
    Exceptions:
    DOMException HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not allow children of the type of the newChild node, or if the node to insert is one of this node's ancestors.
    WRONG_DOCUMENT_ERR: Raised if newChild was created from a different document than the one that created this node.
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node or the node being inserted is readonly.
    NOT_FOUND_ERR: Raised if refChild is not a child of this node.
    Since:
    DOM Level 1

    virtual DOMNode* DOMNode::replaceChild ( DOMNode newChild,
    DOMNode oldChild 
    ) [pure virtual]

    Replaces the child node oldChild with newChild in the list of children, and returns the oldChild node.

    If newChild is a DOMDocumentFragment object, oldChild is replaced by all of the DOMDocumentFragment children, which are inserted in the same order.

    If the newChild is already in the tree, it is first removed.

    Parameters:
    newChild The new node to put in the child list.
    oldChild The node being replaced in the list.
    Returns:
    The node replaced.
    Exceptions:
    DOMException HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not allow children of the type of the newChild node, or it the node to put in is one of this node's ancestors.
    WRONG_DOCUMENT_ERR: Raised if newChild was created from a different document than the one that created this node.
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node or the new node is readonly.
    NOT_FOUND_ERR: Raised if oldChild is not a child of this node.
    Since:
    DOM Level 1

    virtual DOMNode* DOMNode::removeChild ( DOMNode oldChild  )  [pure virtual]

    Removes the child node indicated by oldChild from the list of children, and returns it.

    Parameters:
    oldChild The node being removed.
    Returns:
    The node removed.
    Exceptions:
    DOMException NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
    NOT_FOUND_ERR: Raised if oldChild is not a child of this node.
    Since:
    DOM Level 1

    virtual DOMNode* DOMNode::appendChild ( DOMNode newChild  )  [pure virtual]

    Adds the node newChild to the end of the list of children of this node.

    If the newChild is already in the tree, it is first removed.

    Parameters:
    newChild The node to add.If it is a DOMDocumentFragment object, the entire contents of the document fragment are moved into the child list of this node
    Returns:
    The node added.
    Exceptions:
    DOMException HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not allow children of the type of the newChild node, or if the node to append is one of this node's ancestors.
    WRONG_DOCUMENT_ERR: Raised if newChild was created from a different document than the one that created this node.
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node or the node being appended is readonly.
    Since:
    DOM Level 1

    virtual bool DOMNode::hasChildNodes (  )  const [pure virtual]

    This is a convenience method to allow easy determination of whether a node has any children.

    Returns:
    true if the node has any children, false if the node has no children.
    Since:
    DOM Level 1

    virtual void DOMNode::setNodeValue ( const XMLCh nodeValue  )  [pure virtual]

    Sets the value of the node.

    Any node which can have a nodeValue will also accept requests to set it to a string. The exact response to this varies from node to node -- Attribute, for example, stores its values in its children and has to replace them with a new Text holding the replacement value.

    For most types of Node, value is null and attempting to set it will throw DOMException(NO_MODIFICATION_ALLOWED_ERR). This will also be thrown if the node is read-only.

    See also:
    getNodeValue
    Since:
    DOM Level 1

    virtual void DOMNode::normalize (  )  [pure virtual]

    Puts all DOMText nodes in the full depth of the sub-tree underneath this DOMNode, including attribute nodes, into a "normal" form where only markup (e.g., tags, comments, processing instructions, CDATA sections, and entity references) separates DOMText nodes, i.e., there are neither adjacent DOMText nodes nor empty DOMText nodes.

    This can be used to ensure that the DOM view of a document is the same as if it were saved and re-loaded, and is useful when operations (such as XPointer lookups) that depend on a particular document tree structure are to be used.

    Note: In cases where the document contains DOMCDATASections, the normalize operation alone may not be sufficient, since XPointers do not differentiate between DOMText nodes and DOMCDATASection nodes.

    Since:
    DOM Level 2

    virtual bool DOMNode::isSupported ( const XMLCh feature,
    const XMLCh version 
    ) const [pure virtual]

    Tests whether the DOM implementation implements a specific feature and that feature is supported by this node.

    Parameters:
    feature The string of the feature to test. This is the same name as what can be passed to the method hasFeature on DOMImplementation.
    version This is the version number of the feature to test. In Level 2, version 1, this is the string "2.0". If the version is not specified, supporting any version of the feature will cause the method to return true.
    Returns:
    Returns true if the specified feature is supported on this node, false otherwise.
    Since:
    DOM Level 2

    virtual const XMLCh* DOMNode::getNamespaceURI (  )  const [pure virtual]

    Get the namespace URI of this node, or null if it is unspecified.

    This is not a computed value that is the result of a namespace lookup based on an examination of the namespace declarations in scope. It is merely the namespace URI given at creation time.

    For nodes of any type other than ELEMENT_NODE and ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, such as createElement from the DOMDocument interface, this is always null.

    Since:
    DOM Level 2

    virtual const XMLCh* DOMNode::getPrefix (  )  const [pure virtual]

    Get the namespace prefix of this node, or null if it is unspecified.

    Since:
    DOM Level 2

    virtual const XMLCh* DOMNode::getLocalName (  )  const [pure virtual]

    Returns the local part of the qualified name of this node.

    For nodes created with a DOM Level 1 method, such as createElement from the DOMDocument interface, it is null.

    Since:
    DOM Level 2

    virtual void DOMNode::setPrefix ( const XMLCh prefix  )  [pure virtual]

    Set the namespace prefix of this node.

    Note that setting this attribute, when permitted, changes the nodeName attribute, which holds the qualified name, as well as the tagName and name attributes of the DOMElement and DOMAttr interfaces, when applicable.

    Note also that changing the prefix of an attribute, that is known to have a default value, does not make a new attribute with the default value and the original prefix appear, since the namespaceURI and localName do not change.

    Parameters:
    prefix The prefix of this node.
    Exceptions:
    DOMException INVALID_CHARACTER_ERR: Raised if the specified prefix contains an illegal character.
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
    NAMESPACE_ERR: Raised if the specified prefix is malformed, if the namespaceURI of this node is null, if the specified prefix is "xml" and the namespaceURI of this node is different from "http://www.w3.org/XML/1998/namespace", if this node is an attribute and the specified prefix is "xmlns" and the namespaceURI of this node is different from "http://www.w3.org/2000/xmlns/", or if this node is an attribute and the qualifiedName of this node is "xmlns".
    Since:
    DOM Level 2

    virtual bool DOMNode::hasAttributes (  )  const [pure virtual]

    Returns whether this node (if it is an element) has any attributes.

    Returns:
    true if this node has any attributes, false otherwise.
    Since:
    DOM Level 2

    virtual bool DOMNode::isSameNode ( const DOMNode other  )  const [pure virtual]

    Returns whether this node is the same node as the given one.


    This method provides a way to determine whether two DOMNode references returned by the implementation reference the same object. When two DOMNode references are references to the same object, even if through a proxy, the references may be used completely interchangeably, such that all attributes have the same values and calling the same DOM method on either reference always has exactly the same effect.

    Parameters:
    other The node to test against.
    Returns:
    Returns true if the nodes are the same, false otherwise.
    Since:
    DOM Level 3

    virtual bool DOMNode::isEqualNode ( const DOMNode arg  )  const [pure virtual]

    Tests whether two nodes are equal.


    This method tests for equality of nodes, not sameness (i.e., whether the two nodes are pointers to the same object) which can be tested with DOMNode::isSameNode. All nodes that are the same will also be equal, though the reverse may not be true.
    Two nodes are equal if and only if the following conditions are satisfied: The two nodes are of the same type.The following string attributes are equal: nodeName, localName, namespaceURI, prefix, nodeValue , baseURI. This is: they are both null, or they have the same length and are character for character identical. The attributes DOMNamedNodeMaps are equal. This is: they are both null, or they have the same length and for each node that exists in one map there is a node that exists in the other map and is equal, although not necessarily at the same index.The childNodes DOMNodeLists are equal. This is: they are both null, or they have the same length and contain equal nodes at the same index. This is true for DOMAttr nodes as for any other type of node. Note that normalization can affect equality; to avoid this, nodes should be normalized before being compared.
    For two DOMDocumentType nodes to be equal, the following conditions must also be satisfied: The following string attributes are equal: publicId, systemId, internalSubset.The entities DOMNamedNodeMaps are equal.The notations DOMNamedNodeMaps are equal.
    On the other hand, the following do not affect equality: the ownerDocument attribute, the specified attribute for DOMAttr nodes, the isWhitespaceInElementContent attribute for DOMText nodes, as well as any user data or event listeners registered on the nodes.

    Parameters:
    arg The node to compare equality with.
    Returns:
    If the nodes, and possibly subtrees are equal, true otherwise false.
    Since:
    DOM Level 3

    virtual void* DOMNode::setUserData ( const XMLCh key,
    void *  data,
    DOMUserDataHandler handler 
    ) [pure virtual]

    Associate an object to a key on this node.

    The object can later be retrieved from this node by calling getUserData with the same key.

    Deletion of the user data remains the responsibility of the application program; it will not be automatically deleted when the nodes themselves are reclaimed.

    Both the parameter data and the returned object are void pointer, it is applications' responsibility to keep track of their original type. Casting them to the wrong type may result unexpected behavior.

    Parameters:
    key The key to associate the object to.
    data The object to associate to the given key, or null to remove any existing association to that key.
    handler The handler to associate to that key, or null.
    Returns:
    Returns the void* object previously associated to the given key on this node, or null if there was none.
    See also:
    getUserData
    Since:
    DOM Level 3

    virtual void* DOMNode::getUserData ( const XMLCh key  )  const [pure virtual]

    Retrieves the object associated to a key on a this node.

    The object must first have been set to this node by calling setUserData with the same key.

    Parameters:
    key The key the object is associated to.
    Returns:
    Returns the void* associated to the given key on this node, or null if there was none.
    See also:
    setUserData
    Since:
    DOM Level 3

    virtual const XMLCh* DOMNode::getBaseURI (  )  const [pure virtual]

    The absolute base URI of this node or null if undefined.

    This value is computed according to . However, when the DOMDocument supports the feature "HTML" , the base URI is computed using first the value of the href attribute of the HTML BASE element if any, and the value of the documentURI attribute from the DOMDocument interface otherwise.


    When the node is an DOMElement, a DOMDocument or a a DOMProcessingInstruction, this attribute represents the properties [base URI] defined in . When the node is a DOMNotation, an DOMEntity, or an DOMEntityReference, this attribute represents the properties [declaration base URI].

    Since:
    DOM Level 3

    virtual short DOMNode::compareDocumentPosition ( const DOMNode other  )  const [pure virtual]

    Compares the reference node, i.e.

    the node on which this method is being called, with a node, i.e. the one passed as a parameter, with regard to their position in the document and according to the document order.

    Parameters:
    other The node to compare against this node.
    Returns:
    Returns how the given node is positioned relatively to this node.
    Since:
    DOM Level 3

    virtual const XMLCh* DOMNode::getTextContent (  )  const [pure virtual]

    This attribute returns the text content of this node and its descendants.

    No serialization is performed, the returned string does not contain any markup. No whitespace normalization is performed and the returned string does not contain the white spaces in element content.


    The string returned is made of the text content of this node depending on its type, as defined below:
    Node type Content
    ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, DOCUMENT_FRAGMENT_NODE concatenation of the textContent attribute value of every child node, excluding COMMENT_NODE and PROCESSING_INSTRUCTION_NODE nodes
    ATTRIBUTE_NODE, TEXT_NODE, CDATA_SECTION_NODE, COMMENT_NODE, PROCESSING_INSTRUCTION_NODE nodeValue
    DOCUMENT_NODE, DOCUMENT_TYPE_NODE, NOTATION_NODE null

    Exceptions:
    DOMException DOMSTRING_SIZE_ERR: Raised when it would return more characters than fit in a DOMString variable on the implementation platform.
    See also:
    setTextContent
    Since:
    DOM Level 3

    virtual void DOMNode::setTextContent ( const XMLCh textContent  )  [pure virtual]

    This attribute removes any possible children this node may have and, if the new string is not empty or null, replaced by a single DOMText node containing the string this attribute is set to.

    No parsing is performed, the input string is taken as pure textual content.

    Exceptions:
    DOMException NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
    See also:
    getTextContent
    Since:
    DOM Level 3

    virtual const XMLCh* DOMNode::lookupPrefix ( const XMLCh namespaceURI  )  const [pure virtual]

    Look up the prefix associated to the given namespace URI, starting from this node.

    The default namespace declarations are ignored by this method.

    Parameters:
    namespaceURI The namespace URI to look for.
    Returns:
    Returns an associated namespace prefix if found, null if none is found. If more than one prefix are associated to the namespace prefix, the returned namespace prefix is implementation dependent.
    Since:
    DOM Level 3

    virtual bool DOMNode::isDefaultNamespace ( const XMLCh namespaceURI  )  const [pure virtual]

    This method checks if the specified namespaceURI is the default namespace or not.

    Parameters:
    namespaceURI The namespace URI to look for.
    Returns:
    true if the specified namespaceURI is the default namespace, false otherwise.
    Since:
    DOM Level 3

    virtual const XMLCh* DOMNode::lookupNamespaceURI ( const XMLCh prefix  )  const [pure virtual]

    Look up the namespace URI associated to the given prefix, starting from this node.

    Parameters:
    prefix The prefix to look for. If this parameter is null, the method will return the default namespace URI if any.
    Returns:
    Returns the associated namespace URI or null if none is found.
    Since:
    DOM Level 3

    virtual void* DOMNode::getFeature ( const XMLCh feature,
    const XMLCh version 
    ) const [pure virtual]

    This method makes available a DOMNode's specialized interface.

    Parameters:
    feature The name of the feature requested (case-insensitive).
    version The version of the feature requested.
    Returns:
    Returns an alternate DOMNode which implements the specialized APIs of the specified feature, if any, or null if there is no alternate DOMNode which implements interfaces associated with that feature. Any alternate DOMNode returned by this method must delegate to the primary core DOMNode and not return results inconsistent with the primary core DOMNode such as key, attributes, childNodes, etc.
    Since:
    DOM Level 3

    virtual void DOMNode::release (  )  [pure virtual]

    Called to indicate that this Node (and its associated children) is no longer in use and that the implementation may relinquish any resources associated with it and its associated children.

    If this is a document, any nodes it owns (created by DOMDocument::createXXXX()) are also released.

    Access to a released object will lead to unexpected result.

    Exceptions:
    DOMException INVALID_ACCESS_ERR: Raised if this Node has a parent and thus should not be released yet.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLFloat.html0000644000175000017500000002577111363620006021051 0ustar borisboris Xerces-C++: XMLFloat Class Reference

    XMLFloat Class Reference

    Inheritance diagram for XMLFloat:

    XMLAbstractDoubleFloat XMLNumber XMemory

    List of all members.

    Public Member Functions

     XMLFloat (const XMLCh *const strValue, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Constructs a newly allocated XMLFloat object that represents the value represented by the string.
     ~XMLFloat ()
     XMLFloat (MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)

    Static Public Member Functions

    static int compareValues (const XMLFloat *const lValue, const XMLFloat *const rValue)
     Compares the two specified XMLFloat objects.

    Protected Member Functions

    virtual void checkBoundary (char *const strValue)


    Constructor & Destructor Documentation

    XMLFloat::XMLFloat ( const XMLCh *const   strValue,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    Constructs a newly allocated XMLFloat object that represents the value represented by the string.

    Parameters:
    strValue the String to be converted to an XMLFloat.
    manager Pointer to the memory manager to be used to allocate objects.
    Exceptions:
    NumberFormatException if the String does not contain a parsable XMLFloat.

    XMLFloat::~XMLFloat (  ) 

    XMLFloat::XMLFloat ( MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager  ) 


    Member Function Documentation

    int XMLFloat::compareValues ( const XMLFloat *const   lValue,
    const XMLFloat *const   rValue 
    ) [static]

    Compares the two specified XMLFloat objects.

    The result is true if and only if the argument is not null and that contains the same int value.

    Parameters:
    lValue the object to compare with.
    rValue the object to compare against.
    Returns:
    true if the objects are the same; false otherwise.

    References XMLAbstractDoubleFloat::compareValues(), and XMLAbstractDoubleFloat::getMemoryManager().

    virtual void XMLFloat::checkBoundary ( char *const   strValue  )  [protected, virtual]


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLTransService.png0000644000175000017500000000065011363620006022221 0ustar borisboris‰PNG  IHDRsPØUWMPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf>IDATX…í”Mrà …Ñ&k‰tÚ uåû¡zBšü<{&OÀ Oz’‡ŸQû ßçAûh4ኺˆ¯g:DùM¨è2ª SJÐóU'% JgIyN±E‘v•Ñ•5Y¡mñ·kÍ(n* %]¨á+Á¨?Wë³ñ6ÛîÓ¬÷lzõŠt£WIòÏ9>ºácúÈNOß….¿; §eÙÝ©ÃèD':Ñ÷£2jxTÒÇ¡„ !+mÞÊ…ä_tj³âWý‰)ï5Ñ)ܲ;(3I R*;èî1da)\Q"œpTp€HðåÛÐÌ_ÚÄ ê…çXf”{Cë¬d9 ªÍÙqȯy0²F^jmТ‹¬MÙ©¢M›Ü»A¹ ìbšZ=86!Å“ Æs¥ºÝvxÈ&zhtücú*ÕcO‘hnIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classDOMNode-members.html0000644000175000017500000003756211363620005022300 0ustar borisboris Xerces-C++: Member List

    DOMNode Member List

    This is the complete list of members for DOMNode, including all inherited members.

    appendChild(DOMNode *newChild)=0DOMNode [pure virtual]
    ATTRIBUTE_NODE enum valueDOMNode
    CDATA_SECTION_NODE enum valueDOMNode
    cloneNode(bool deep) const =0DOMNode [pure virtual]
    COMMENT_NODE enum valueDOMNode
    compareDocumentPosition(const DOMNode *other) const =0DOMNode [pure virtual]
    DOCUMENT_FRAGMENT_NODE enum valueDOMNode
    DOCUMENT_NODE enum valueDOMNode
    DOCUMENT_POSITION_CONTAINED_BY enum valueDOMNode
    DOCUMENT_POSITION_CONTAINS enum valueDOMNode
    DOCUMENT_POSITION_DISCONNECTED enum valueDOMNode
    DOCUMENT_POSITION_FOLLOWING enum valueDOMNode
    DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC enum valueDOMNode
    DOCUMENT_POSITION_PRECEDING enum valueDOMNode
    DOCUMENT_TYPE_NODE enum valueDOMNode
    DocumentPosition enum nameDOMNode
    DOMNode()DOMNode [protected]
    DOMNode(const DOMNode &)DOMNode [protected]
    ELEMENT_NODE enum valueDOMNode
    ENTITY_NODE enum valueDOMNode
    ENTITY_REFERENCE_NODE enum valueDOMNode
    getAttributes() const =0DOMNode [pure virtual]
    getBaseURI() const =0DOMNode [pure virtual]
    getChildNodes() const =0DOMNode [pure virtual]
    getFeature(const XMLCh *feature, const XMLCh *version) const =0DOMNode [pure virtual]
    getFirstChild() const =0DOMNode [pure virtual]
    getLastChild() const =0DOMNode [pure virtual]
    getLocalName() const =0DOMNode [pure virtual]
    getNamespaceURI() const =0DOMNode [pure virtual]
    getNextSibling() const =0DOMNode [pure virtual]
    getNodeName() const =0DOMNode [pure virtual]
    getNodeType() const =0DOMNode [pure virtual]
    getNodeValue() const =0DOMNode [pure virtual]
    getOwnerDocument() const =0DOMNode [pure virtual]
    getParentNode() const =0DOMNode [pure virtual]
    getPrefix() const =0DOMNode [pure virtual]
    getPreviousSibling() const =0DOMNode [pure virtual]
    getTextContent() const =0DOMNode [pure virtual]
    getUserData(const XMLCh *key) const =0DOMNode [pure virtual]
    hasAttributes() const =0DOMNode [pure virtual]
    hasChildNodes() const =0DOMNode [pure virtual]
    insertBefore(DOMNode *newChild, DOMNode *refChild)=0DOMNode [pure virtual]
    isDefaultNamespace(const XMLCh *namespaceURI) const =0DOMNode [pure virtual]
    isEqualNode(const DOMNode *arg) const =0DOMNode [pure virtual]
    isSameNode(const DOMNode *other) const =0DOMNode [pure virtual]
    isSupported(const XMLCh *feature, const XMLCh *version) const =0DOMNode [pure virtual]
    lookupNamespaceURI(const XMLCh *prefix) const =0DOMNode [pure virtual]
    lookupPrefix(const XMLCh *namespaceURI) const =0DOMNode [pure virtual]
    NodeType enum nameDOMNode
    normalize()=0DOMNode [pure virtual]
    NOTATION_NODE enum valueDOMNode
    PROCESSING_INSTRUCTION_NODE enum valueDOMNode
    release()=0DOMNode [pure virtual]
    removeChild(DOMNode *oldChild)=0DOMNode [pure virtual]
    replaceChild(DOMNode *newChild, DOMNode *oldChild)=0DOMNode [pure virtual]
    setNodeValue(const XMLCh *nodeValue)=0DOMNode [pure virtual]
    setPrefix(const XMLCh *prefix)=0DOMNode [pure virtual]
    setTextContent(const XMLCh *textContent)=0DOMNode [pure virtual]
    setUserData(const XMLCh *key, void *data, DOMUserDataHandler *handler)=0DOMNode [pure virtual]
    TEXT_NODE enum valueDOMNode
    ~DOMNode()DOMNode [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSNotationDeclaration.html0000644000175000017500000004122211363620006023624 0ustar borisboris Xerces-C++: XSNotationDeclaration Class Reference

    XSNotationDeclaration Class Reference

    Inheritance diagram for XSNotationDeclaration:

    XSObject XMemory

    List of all members.

    Public Member Functions

    Constructors
     XSNotationDeclaration (XMLNotationDecl *const xmlNotationDecl, XSAnnotation *const annot, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     The default constructor.
    Destructor
     ~XSNotationDeclaration ()
    overridden XSXSObject methods
    const XMLChgetName () const
     The name of type NCName of this declaration as defined in XML Namespaces.
    const XMLChgetNamespace ()
     The [target namespace] of this object, or null if it is unspecified.
    XSNamespaceItemgetNamespaceItem ()
     A namespace schema information item corresponding to the target namespace of the component, if it's globally declared; or null otherwise.
    XSNotationDeclaration methods
    const XMLChgetSystemId ()
     The URI reference representing the system identifier for the notation declaration, if present, null otherwise.
    const XMLChgetPublicId ()
     The string representing the public identifier for this notation declaration, if present; null otherwise.
    XSAnnotationgetAnnotation () const
     Optional.

    Protected Attributes

    XMLNotationDeclfXMLNotationDecl
    XSAnnotationfAnnotation


    Constructor & Destructor Documentation

    XSNotationDeclaration::XSNotationDeclaration ( XMLNotationDecl *const   xmlNotationDecl,
    XSAnnotation *const   annot,
    XSModel *const   xsModel,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    The default constructor.

    Parameters:
    xmlNotationDecl 
    annot 
    xsModel 
    manager The configurable memory manager

    XSNotationDeclaration::~XSNotationDeclaration (  ) 


    Member Function Documentation

    const XMLCh* XSNotationDeclaration::getName (  )  const [virtual]

    The name of type NCName of this declaration as defined in XML Namespaces.

    Reimplemented from XSObject.

    const XMLCh* XSNotationDeclaration::getNamespace (  )  [virtual]

    The [target namespace] of this object, or null if it is unspecified.

    Reimplemented from XSObject.

    XSNamespaceItem* XSNotationDeclaration::getNamespaceItem (  )  [virtual]

    A namespace schema information item corresponding to the target namespace of the component, if it's globally declared; or null otherwise.

    Reimplemented from XSObject.

    const XMLCh* XSNotationDeclaration::getSystemId (  ) 

    The URI reference representing the system identifier for the notation declaration, if present, null otherwise.

    const XMLCh* XSNotationDeclaration::getPublicId (  ) 

    The string representing the public identifier for this notation declaration, if present; null otherwise.

    XSAnnotation * XSNotationDeclaration::getAnnotation (  )  const

    Optional.

    An [annotation].

    References fAnnotation.


    Member Data Documentation


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLResourceIdentifier.html0000644000175000017500000005125411363620006023571 0ustar borisboris Xerces-C++: XMLResourceIdentifier Class Reference

    XMLResourceIdentifier Class Reference

    List of all members.

    Public Types

    Public Constants
    enum  ResourceIdentifierType {
      SchemaGrammar = 0, SchemaImport, SchemaInclude, SchemaRedefine,
      ExternalEntity, UnKnown = 255
    }

    Public Member Functions

    Constructors and Destructor
     XMLResourceIdentifier (const ResourceIdentifierType resourceIdentitiferType, const XMLCh *const systemId, const XMLCh *const nameSpace=0, const XMLCh *const publicId=0, const XMLCh *const baseURI=0, const Locator *locator=0)
     Constructor.
     ~XMLResourceIdentifier ()
     Destructor.
    Public Methods
    ResourceIdentifierType getResourceIdentifierType () const
    const XMLChgetPublicId () const
    const XMLChgetSystemId () const
    const XMLChgetSchemaLocation () const
    const XMLChgetBaseURI () const
    const XMLChgetNameSpace () const
    const LocatorgetLocator () const


    Detailed Description

    This class is used along with XMLEntityResolver to resolve entities. Instead of passing publicId and systemId on the resolveEntity call, as is done with the SAX entity resolver, an object of type XMLResourceIdentifier is passed. By calling the getResourceIdentifierType() method the user can determine which data members are available for inspection:

    ResourceIdentifierType Available Data Members
    SchemaGrammar schemaLocation, nameSpace & baseURI (current document)
    SchemaImport schemaLocation, nameSpace & baseURI (current document)
    SchemaInclude schemaLocation & baseURI (current document)
    SchemaRedefine schemaLocation & baseURI (current document)
    ExternalEntity systemId, publicId & baseURI (some items may be NULL)

    The following resolver would provide the application with a special character stream for the entity with the system identifier "http://www.myhost.com/today":

    #include <xercesc/util/XMLEntityResolver.hpp>
    #include <xercesc/sax/InputSource.hpp>

     class MyResolver : public XMLEntityResolver {
      public:
       InputSource resolveEntity (XMLResourceIdentifier* xmlri);
       ...
      };

      MyResolver::resolveEntity(XMLResourceIdentifier* xmlri) {
       switch(xmlri->getResourceIdentifierType()) {
        case XMLResourceIdentifier::SystemId:
         if (XMLString::compareString(xmlri->getSystemId(), "http://www.myhost.com/today")) {
          MyReader* reader = new MyReader();
          return new InputSource(reader);
         } else {
          return null;
         }
         break;
        default:
         return null;
       }
      }

    See also:
    SAXParser::setXMLEntityResolver

    InputSource::InputSource


    Member Enumeration Documentation

    Enumerator:
    SchemaGrammar 
    SchemaImport 
    SchemaInclude 
    SchemaRedefine 
    ExternalEntity 
    UnKnown 


    Constructor & Destructor Documentation

    XMLResourceIdentifier::XMLResourceIdentifier ( const ResourceIdentifierType  resourceIdentitiferType,
    const XMLCh *const   systemId,
    const XMLCh *const   nameSpace = 0,
    const XMLCh *const   publicId = 0,
    const XMLCh *const   baseURI = 0,
    const Locator locator = 0 
    )

    Constructor.

    XMLResourceIdentifier::~XMLResourceIdentifier (  ) 

    Destructor.


    Member Function Documentation

    XMLResourceIdentifier::ResourceIdentifierType XMLResourceIdentifier::getResourceIdentifierType (  )  const

    const XMLCh * XMLResourceIdentifier::getPublicId (  )  const

    const XMLCh * XMLResourceIdentifier::getSystemId (  )  const

    const XMLCh * XMLResourceIdentifier::getSchemaLocation (  )  const

    const XMLCh * XMLResourceIdentifier::getBaseURI (  )  const

    const XMLCh * XMLResourceIdentifier::getNameSpace (  )  const

    const Locator * XMLResourceIdentifier::getLocator (  )  const


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/TransService_8hpp.html0000644000175000017500000000705511363620005021736 0ustar borisboris Xerces-C++: TransService.hpp File Reference

    TransService.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLTransService
    struct  XMLTransService::TransRec
    class  XMLTranscoder
     XMLTranscoder is for transcoding non-local code page encodings, i.e. More...
    class  XMLLCPTranscoder
    class  TranscodeToStr
    class  TranscodeFromStr

    Defines

    #define XERCESC_INCLUDE_GUARD_TRANSSERVICE_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_TRANSSERVICE_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/index.html0000644000175000017500000000207311363620004017470 0ustar borisboris Xerces-C++: Main Page

    Xerces-C++ Documentation

    3.1.1


    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLTranscoder.png0000644000175000017500000000061111363620006021712 0ustar borisboris‰PNG  IHDRhP-RPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfIDATX…í”Krà †¥M×7 ½Az¡¬|ÿ#T¿O 5®™Ô3ñ c#Ÿ^ئ¯¡ûí°|^ŠhÁ”pÄS°K„ÔÔ`ž­1"†MÈ–m¯o7©¡!™ Þʵã)b³j…„œ„Á Áûä`^Êçä5tÒ{ŸíbC† ú°ÿÕŽÞëÓø_hè¶-ÎÚK¡å,hY'AçUoBšÐ„. 逯 qªó«HÙ-d;múÞƒDX‰YÍVšx·†Íæd…p|hxp2¬”BHå9ëIKUžØíˆµ~‚¬D\åÔ@Ùp)oöD-T¦+ègNÍ9åJxœÃkªGïñîMÐÈ/ì?ÇKj¾IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/DOMComment_8hpp-source.html0000644000175000017500000001720311363620004022561 0ustar borisboris Xerces-C++: DOMComment.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/Attributes_8hpp-source.html0000644000175000017500000003337511363620004022755 0ustar borisboris Xerces-C++: Attributes.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMNodeFilter.html0000644000175000017500000006404111363620005022006 0ustar borisboris Xerces-C++: DOMNodeFilter Class Reference

    DOMNodeFilter Class Reference

    Filters are objects that know how to "filter out" nodes. More...

    Inheritance diagram for DOMNodeFilter:

    DOMLSSerializerFilter

    List of all members.

    Public Types

    Public Constants
    enum  FilterAction { FILTER_ACCEPT = 1, FILTER_REJECT = 2, FILTER_SKIP = 3 }
     Constants returned by acceptNode. More...
    enum  ShowTypeMasks {
      SHOW_ALL = 0x0000FFFF, SHOW_ELEMENT = 0x00000001, SHOW_ATTRIBUTE = 0x00000002, SHOW_TEXT = 0x00000004,
      SHOW_CDATA_SECTION = 0x00000008, SHOW_ENTITY_REFERENCE = 0x00000010, SHOW_ENTITY = 0x00000020, SHOW_PROCESSING_INSTRUCTION = 0x00000040,
      SHOW_COMMENT = 0x00000080, SHOW_DOCUMENT = 0x00000100, SHOW_DOCUMENT_TYPE = 0x00000200, SHOW_DOCUMENT_FRAGMENT = 0x00000400,
      SHOW_NOTATION = 0x00000800
    }
     Constants for whatToShow. More...
    typedef unsigned long ShowType

    Public Member Functions

    Destructor
    virtual ~DOMNodeFilter ()
     Destructor.
    Functions introduced in DOM Level 2
    virtual FilterAction acceptNode (const DOMNode *node) const =0
     Test whether a specified node is visible in the logical view of a DOMTreeWalker or DOMNodeIterator.

    Protected Member Functions

    Hidden constructors
     DOMNodeFilter ()


    Detailed Description

    Filters are objects that know how to "filter out" nodes.

    If a DOMNodeIterator or DOMTreeWalker is given a DOMNodeFilter, it applies the filter before it returns the next node. If the filter says to accept the node, the traversal logic returns it; otherwise, traversal looks for the next node and pretends that the node that was rejected was not there.

    The DOM does not provide any filters. DOMNodeFilter is just an interface that users can implement to provide their own filters.

    DOMNodeFilters do not need to know how to traverse from node to node, nor do they need to know anything about the data structure that is being traversed. This makes it very easy to write filters, since the only thing they have to know how to do is evaluate a single node. One filter may be used with a number of different kinds of traversals, encouraging code reuse.

    See also the Document Object Model (DOM) Level 2 Traversal and Range Specification.

    Since:
    DOM Level 2

    Member Typedef Documentation

    typedef unsigned long DOMNodeFilter::ShowType


    Member Enumeration Documentation

    Constants returned by acceptNode.

    FILTER_ACCEPT: Accept the node. Navigation methods defined for DOMNodeIterator or DOMTreeWalker will return this node.

    FILTER_REJECT: Reject the node. Navigation methods defined for DOMNodeIterator or DOMTreeWalker will not return this node. For DOMTreeWalker, the children of this node will also be rejected. DOMNodeIterators treat this as a synonym for FILTER_SKIP.

    FILTER_SKIP: Skip this single node. Navigation methods defined for DOMNodeIterator or DOMTreeWalker will not return this node. For both DOMNodeIterator and DOMTreeWalker, the children of this node will still be considered.

    Since:
    DOM Level 2
    Enumerator:
    FILTER_ACCEPT 
    FILTER_REJECT 
    FILTER_SKIP 

    Constants for whatToShow.

    SHOW_ALL: Show all DOMNode(s).

    SHOW_ELEMENT: Show DOMElement nodes.

    SHOW_ATTRIBUTE: Show DOMAttr nodes. This is meaningful only when creating an DOMNodeIterator or DOMTreeWalker with an attribute node as its root; in this case, it means that the attribute node will appear in the first position of the iteration or traversal. Since attributes are never children of other nodes, they do not appear when traversing over the document tree.

    SHOW_TEXT: Show DOMText nodes.

    SHOW_CDATA_SECTION: Show DOMCDATASection nodes.

    SHOW_ENTITY_REFERENCE: Show DOMEntityReference nodes.

    SHOW_ENTITY: Show DOMEntity nodes. This is meaningful only when creating an DOMNodeIterator or DOMTreeWalker with an DOMEntity node as its root; in this case, it means that the DOMEntity node will appear in the first position of the traversal. Since entities are not part of the document tree, they do not appear when traversing over the document tree.

    SHOW_PROCESSING_INSTRUCTION: Show DOMProcessingInstruction nodes.

    SHOW_COMMENT: Show DOMComment nodes.

    SHOW_DOCUMENT: Show DOMDocument nodes.

    SHOW_DOCUMENT_TYPE: Show DOMDocumentType nodes.

    SHOW_DOCUMENT_FRAGMENT: Show DOMDocumentFragment nodes.

    SHOW_NOTATION: Show DOMNotation nodes. This is meaningful only when creating an DOMNodeIterator or DOMTreeWalker with a DOMNotation node as its root; in this case, it means that the DOMNotation node will appear in the first position of the traversal. Since notations are not part of the document tree, they do not appear when traversing over the document tree.

    Since:
    DOM Level 2
    Enumerator:
    SHOW_ALL 
    SHOW_ELEMENT 
    SHOW_ATTRIBUTE 
    SHOW_TEXT 
    SHOW_CDATA_SECTION 
    SHOW_ENTITY_REFERENCE 
    SHOW_ENTITY 
    SHOW_PROCESSING_INSTRUCTION 
    SHOW_COMMENT 
    SHOW_DOCUMENT 
    SHOW_DOCUMENT_TYPE 
    SHOW_DOCUMENT_FRAGMENT 
    SHOW_NOTATION 


    Constructor & Destructor Documentation

    DOMNodeFilter::DOMNodeFilter (  )  [protected]

    virtual DOMNodeFilter::~DOMNodeFilter (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual FilterAction DOMNodeFilter::acceptNode ( const DOMNode node  )  const [pure virtual]

    Test whether a specified node is visible in the logical view of a DOMTreeWalker or DOMNodeIterator.

    This function will be called by the implementation of DOMTreeWalker and DOMNodeIterator; it is not normally called directly from user code. (Though you could do so if you wanted to use the same filter to guide your own application logic.)

    Parameters:
    node The node to check to see if it passes the filter or not.
    Returns:
    A constant to determine whether the node is accepted, rejected, or skipped, as defined above.
    Since:
    DOM Level 2

    Implemented in DOMLSSerializerFilter.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLValidator-members.html0000644000175000017500000002364711363620006023361 0ustar borisboris Xerces-C++: Member List

    XMLValidator Member List

    This is the complete list of members for XMLValidator, including all inherited members.

    checkContent(XMLElementDecl *const elemDecl, QName **const children, XMLSize_t childCount, XMLSize_t *indexFailingChild)=0XMLValidator [pure virtual]
    emitError(const XMLValid::Codes toEmit)XMLValidator
    emitError(const XMLValid::Codes toEmit, const XMLCh *const text1, const XMLCh *const text2=0, const XMLCh *const text3=0, const XMLCh *const text4=0)XMLValidator
    emitError(const XMLValid::Codes toEmit, const char *const text1, const char *const text2=0, const char *const text3=0, const char *const text4=0)XMLValidator
    emitError(const XMLValid::Codes toEmit, const XMLExcepts::Codes originalErrorCode, const XMLCh *const text1=0, const XMLCh *const text2=0, const XMLCh *const text3=0, const XMLCh *const text4=0)XMLValidator
    faultInAttr(XMLAttr &toFill, const XMLAttDef &attDef) const =0XMLValidator [pure virtual]
    getBufMgr() const XMLValidator [protected]
    getBufMgr()XMLValidator [protected]
    getGrammar() const =0XMLValidator [pure virtual]
    getReaderMgr() const XMLValidator [protected]
    getReaderMgr()XMLValidator [protected]
    getScanner() const XMLValidator [protected]
    getScanner()XMLValidator [protected]
    handlesDTD() const =0XMLValidator [pure virtual]
    handlesSchema() const =0XMLValidator [pure virtual]
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    postParseValidation()=0XMLValidator [pure virtual]
    preContentValidation(bool reuseGrammar, bool validateDefAttr=false)=0XMLValidator [pure virtual]
    requiresNamespaces() const =0XMLValidator [pure virtual]
    reset()=0XMLValidator [pure virtual]
    setErrorReporter(XMLErrorReporter *const errorReporter)XMLValidator
    setGrammar(Grammar *aGrammar)=0XMLValidator [pure virtual]
    setScannerInfo(XMLScanner *const owningScanner, ReaderMgr *const readerMgr, XMLBufferMgr *const bufMgr)XMLValidator
    validateAttrValue(const XMLAttDef *attDef, const XMLCh *const attrValue, bool preValidation=false, const XMLElementDecl *elemDecl=0)=0XMLValidator [pure virtual]
    validateElement(const XMLElementDecl *elemDef)=0XMLValidator [pure virtual]
    XMemory()XMemory [protected]
    XMLValidator(XMLErrorReporter *const errReporter=0)XMLValidator [protected]
    ~XMLValidator()XMLValidator [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_func_0x6e.html0000644000175000017500000001252411363620005022251 0ustar borisboris Xerces-C++: Class Members - Functions
     

    - n -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/HandlerBase_8hpp.html0000644000175000017500000000457011363620005021475 0ustar borisboris Xerces-C++: HandlerBase.hpp File Reference

    HandlerBase.hpp File Reference

    Go to the source code of this file.

    Classes

    class  HandlerBase
     Default base class for handlers. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_HANDLERBASE_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_HANDLERBASE_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDefaultPanicHandler.html0000644000175000017500000001502111363620005023242 0ustar borisboris Xerces-C++: DefaultPanicHandler Class Reference

    DefaultPanicHandler Class Reference

    Receive notification of panic. More...

    Inheritance diagram for DefaultPanicHandler:

    XMemory PanicHandler

    List of all members.

    Public Member Functions

    hidden Constructors
     DefaultPanicHandler ()
     Default constructor.
    virtual ~DefaultPanicHandler ()
     Destructor.
    Implement virtual panic handler interface
    virtual void panic (const PanicHandler::PanicReasons reason)
     Receive notification of panic.


    Detailed Description

    Receive notification of panic.

    This is Xerces' default implementation of the PanicHanlder interface, which will be instantiated and used in the absence of an application's panic handler.


    Constructor & Destructor Documentation

    DefaultPanicHandler::DefaultPanicHandler (  ) 

    Default constructor.

    virtual DefaultPanicHandler::~DefaultPanicHandler (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual void DefaultPanicHandler::panic ( const PanicHandler::PanicReasons  reason  )  [virtual]

    Receive notification of panic.

    Upon invocation, a corresponding error message will be output to the stderr, and program exit.

    Parameters:
    reason The reason of panic

    Implements PanicHandler.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMAttr_8hpp-source.html0000644000175000017500000002624611363620004022100 0ustar borisboris Xerces-C++: DOMAttr.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLGrammarDescription.html0000644000175000017500000002132211363620006023562 0ustar borisboris Xerces-C++: XMLGrammarDescription Class Reference

    XMLGrammarDescription Class Reference

    Inheritance diagram for XMLGrammarDescription:

    XMemory XMLDTDDescription XMLSchemaDescription

    List of all members.

    Public Member Functions

    MemoryManagergetMemoryManager () const
    Virtual destructor for derived classes
    virtual ~XMLGrammarDescription ()
     virtual destructor
    The Grammar Description Interface
    virtual Grammar::GrammarType getGrammarType () const =0
     getGrammarType
    virtual const XMLChgetGrammarKey () const =0
     getGrammarKey

    Protected Member Functions

     XMLGrammarDescription (MemoryManager *const memMgr=XMLPlatformUtils::fgMemoryManager)
     Hidden Constructors.


    Constructor & Destructor Documentation

    virtual XMLGrammarDescription::~XMLGrammarDescription (  )  [virtual]

    virtual destructor

    XMLGrammarDescription::XMLGrammarDescription ( MemoryManager *const   memMgr = XMLPlatformUtils::fgMemoryManager  )  [protected]

    Hidden Constructors.


    Member Function Documentation

    virtual Grammar::GrammarType XMLGrammarDescription::getGrammarType (  )  const [pure virtual]

    getGrammarType

    Implemented in XMLDTDDescription, and XMLSchemaDescription.

    virtual const XMLCh* XMLGrammarDescription::getGrammarKey (  )  const [pure virtual]

    getGrammarKey

    MemoryManager * XMLGrammarDescription::getMemoryManager (  )  const


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_eval_0x66.html0000644000175000017500000002256611363620005022175 0ustar borisboris Xerces-C++: Class Members - Enumerator
     

    - f -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classPSVIUni-members.html0000644000175000017500000012230411363620006022276 0ustar borisboris Xerces-C++: Member List

    PSVIUni Member List

    This is the complete list of members for PSVIUni, including all inherited members.

    fgAbstractPSVIUni [static]
    fgAgPSVIUni [static]
    fgAllPSVIUni [static]
    fgAllDeclarationsProcessedPSVIUni [static]
    fgAnnotPSVIUni [static]
    fgAnnotationPSVIUni [static]
    fgAnnotationsPSVIUni [static]
    fgAnyPSVIUni [static]
    fgAppinfoPSVIUni [static]
    fgApplicationInformationPSVIUni [static]
    fgAtomicPSVIUni [static]
    fgAttrPSVIUni [static]
    fgAttributePSVIUni [static]
    fgAttributeDeclarationPSVIUni [static]
    fgAttributeGroupDefinitionPSVIUni [static]
    fgAttributesPSVIUni [static]
    fgAttributeTypePSVIUni [static]
    fgAttributeUsePSVIUni [static]
    fgAttributeUsesPSVIUni [static]
    fgAttributeWildcardPSVIUni [static]
    fgAuPSVIUni [static]
    fgBaseTypeDefinitionPSVIUni [static]
    fgBaseURIPSVIUni [static]
    fgBoundedPSVIUni [static]
    fgCanonicalRepresentationPSVIUni [static]
    fgCardinalityPSVIUni [static]
    fgCharacterPSVIUni [static]
    fgCharacterEncodingSchemePSVIUni [static]
    fgChildrenPSVIUni [static]
    fgChoicePSVIUni [static]
    fgCommentPSVIUni [static]
    fgComplexTypeDefinitionPSVIUni [static]
    fgCompositorPSVIUni [static]
    fgContentPSVIUni [static]
    fgContentTypePSVIUni [static]
    fgDeclarationPSVIUni [static]
    fgDefaultPSVIUni [static]
    fgDerivationMethodPSVIUni [static]
    fgDisallowedSubstitutionsPSVIUni [static]
    fgDocTypeDeclarationPSVIUni [static]
    fgDocumentPSVIUni [static]
    fgDocumentationPSVIUni [static]
    fgDocumentElementPSVIUni [static]
    fgDocumentLocationPSVIUni [static]
    fgElementPSVIUni [static]
    fgElementDeclarationPSVIUni [static]
    fgElementOnlyPSVIUni [static]
    fgEltPSVIUni [static]
    fgEmptyPSVIUni [static]
    fgEnumerationPSVIUni [static]
    fgExtensionPSVIUni [static]
    fgFacetFixedPSVIUni [static]
    fgFacetsPSVIUni [static]
    fgFalsePSVIUni [static]
    fgFieldsPSVIUni [static]
    fgFinalPSVIUni [static]
    fgFractionDigitsPSVIUni [static]
    fgFullPSVIUni [static]
    fgFundamentalFacetsPSVIUni [static]
    fgGlobalPSVIUni [static]
    fgIdcPSVIUni [static]
    fgIdentityConstraintCategoryPSVIUni [static]
    fgIdentityConstraintDefinitionPSVIUni [static]
    fgIdentityConstraintDefinitionsPSVIUni [static]
    fgIdentityConstraintTablePSVIUni [static]
    fgIdIdrefTablePSVIUni [static]
    fgInfosetPSVIUni [static]
    fgInScopeNamespacesPSVIUni [static]
    fgInvalidPSVIUni [static]
    fgItemTypeDefinitionPSVIUni [static]
    fgKeyPSVIUni [static]
    fgKeyrefPSVIUni [static]
    fgLaxPSVIUni [static]
    fgLengthPSVIUni [static]
    fgListPSVIUni [static]
    fgLocalPSVIUni [static]
    fgLocalNamePSVIUni [static]
    fgMaxExclusivePSVIUni [static]
    fgMaxInclusivePSVIUni [static]
    fgMaxLengthPSVIUni [static]
    fgMaxOccursPSVIUni [static]
    fgMemberTypeDefinitionPSVIUni [static]
    fgMemberTypeDefinitionsPSVIUni [static]
    fgMgPSVIUni [static]
    fgMinExclusivePSVIUni [static]
    fgMinInclusivePSVIUni [static]
    fgMinLengthPSVIUni [static]
    fgMinOccursPSVIUni [static]
    fgMixedPSVIUni [static]
    fgModelGroupPSVIUni [static]
    fgModelGroupDefinitionPSVIUni [static]
    fgNamePSVIUni [static]
    fgNamespacePSVIUni [static]
    fgNamespaceAttributesPSVIUni [static]
    fgNamespaceConstraintPSVIUni [static]
    fgNamespaceInfosetPSVIUni [static]
    fgNamespaceInstancePSVIUni [static]
    fgNamespaceNamePSVIUni [static]
    fgNamespacePsviPSVIUni [static]
    fgNamespacesPSVIUni [static]
    fgNamespaceSchemaInformationPSVIUni [static]
    fgNamespaceXmlSchemaPSVIUni [static]
    fgNilPSVIUni [static]
    fgNillablePSVIUni [static]
    fgNonePSVIUni [static]
    fgNormalizedValuePSVIUni [static]
    fgNotPSVIUni [static]
    fgNotationPSVIUni [static]
    fgNotationDeclarationPSVIUni [static]
    fgNotationsPSVIUni [static]
    fgNotKnownPSVIUni [static]
    fgNsNamespacePSVIUni [static]
    fgNumericPSVIUni [static]
    fgOnePointZeroPSVIUni [static]
    fgOrderedPSVIUni [static]
    fgPartialPSVIUni [static]
    fgParticlePSVIUni [static]
    fgParticlesPSVIUni [static]
    fgPatternPSVIUni [static]
    fgPrefixPSVIUni [static]
    fgPrimitiveTypeDefinitionPSVIUni [static]
    fgProcessContentsPSVIUni [static]
    fgProcessingInstructionPSVIUni [static]
    fgProhibitedSubstitutionsPSVIUni [static]
    fgPsvPSVIUni [static]
    fgPsvColonPSVIUni [static]
    fgPsvDocumentPSVIUni [static]
    fgPublicIdentifierPSVIUni [static]
    fgReferencedKeyPSVIUni [static]
    fgReferencesPSVIUni [static]
    fgRequiredPSVIUni [static]
    fgRestrictPSVIUni [static]
    fgRestrictionPSVIUni [static]
    fgSchemaPSVIUni [static]
    fgSchemaAnnotationsPSVIUni [static]
    fgSchemaComponentsPSVIUni [static]
    fgSchemaDefaultPSVIUni [static]
    fgSchemaDocumentPSVIUni [static]
    fgSchemaDocumentsPSVIUni [static]
    fgSchemaErrorCodePSVIUni [static]
    fgSchemaInformationPSVIUni [static]
    fgSchemaNamespacePSVIUni [static]
    fgSchemaNormalizedValuePSVIUni [static]
    fgSchemaSpecifiedPSVIUni [static]
    fgScopePSVIUni [static]
    fgSelectorPSVIUni [static]
    fgSequencePSVIUni [static]
    fgSimplePSVIUni [static]
    fgSimpleTypeDefinitionPSVIUni [static]
    fgSkipPSVIUni [static]
    fgSpecifiedPSVIUni [static]
    fgStandalonePSVIUni [static]
    fgStrictPSVIUni [static]
    fgSubstitutionPSVIUni [static]
    fgSubstitutionGroupAffiliationPSVIUni [static]
    fgSubstitutionGroupExclusionsPSVIUni [static]
    fgSystemIdentifierPSVIUni [static]
    fgTargetPSVIUni [static]
    fgTargetNamespacePSVIUni [static]
    fgTermPSVIUni [static]
    fgTextPSVIUni [static]
    fgTextContentPSVIUni [static]
    fgTotalPSVIUni [static]
    fgTotalDigitsPSVIUni [static]
    fgTruePSVIUni [static]
    fgTypePSVIUni [static]
    fgTypeDefinitionPSVIUni [static]
    fgUnboundedPSVIUni [static]
    fgUnionPSVIUni [static]
    fgUniquePSVIUni [static]
    fgUnknownPSVIUni [static]
    fgUnparsedEntitiesPSVIUni [static]
    fgUserInformationPSVIUni [static]
    fgValidPSVIUni [static]
    fgValidationAttemptedPSVIUni [static]
    fgValidationContextPSVIUni [static]
    fgValidityPSVIUni [static]
    fgValuePSVIUni [static]
    fgValueConstraintPSVIUni [static]
    fgVarietyPSVIUni [static]
    fgVCFixedPSVIUni [static]
    fgVersionPSVIUni [static]
    fgWhiteSpacePSVIUni [static]
    fgWildcardPSVIUni [static]
    fgXmlPSVIUni [static]
    fgXMLChNullPSVIUni [static]
    fgXpathPSVIUni [static]
    fgXsiPSVIUni [static]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classSAXException.html0000644000175000017500000004345711363620006021736 0ustar borisboris Xerces-C++: SAXException Class Reference

    SAXException Class Reference

    Encapsulate a general SAX error or warning. More...

    Inheritance diagram for SAXException:

    XMemory SAXNotRecognizedException SAXNotSupportedException SAXParseException

    List of all members.

    Public Member Functions

    Constructors and Destructor
     SAXException (MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Default constructor.
     SAXException (const XMLCh *const msg, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Create a new SAXException.
     SAXException (const char *const msg, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Create a new SAXException.
     SAXException (const SAXException &toCopy)
     Copy constructor.
    virtual ~SAXException ()
     Destructor.
    Public Operators
    SAXExceptionoperator= (const SAXException &toCopy)
     Assignment operator.
    Getter Methods
    virtual const XMLChgetMessage () const
     Get the contents of the message.

    Protected Attributes

    XMLChfMsg
    MemoryManagerfMemoryManager


    Detailed Description

    Encapsulate a general SAX error or warning.

    This class can contain basic error or warning information from either the XML SAX parser or the application: a parser writer or application writer can subclass it to provide additional functionality. SAX handlers may throw this exception or any exception subclassed from it.

    If the application needs to pass through other types of exceptions, it must wrap those exceptions in a SAXException or an exception derived from a SAXException.

    If the parser or application needs to include information about a specific location in an XML document, it should use the SAXParseException subclass.

    See also:
    SAXParseException::SAXParseException

    Constructor & Destructor Documentation

    SAXException::SAXException ( MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager  ) 

    Default constructor.

    Parameters:
    manager Pointer to the memory manager to be used to allocate objects.

    SAXException::SAXException ( const XMLCh *const   msg,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    Create a new SAXException.

    Parameters:
    msg The error or warning message.
    manager Pointer to the memory manager to be used to allocate objects.

    SAXException::SAXException ( const char *const   msg,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    Create a new SAXException.

    Parameters:
    msg The error or warning message.
    manager Pointer to the memory manager to be used to allocate objects.

    SAXException::SAXException ( const SAXException toCopy  ) 

    Copy constructor.

    Parameters:
    toCopy The exception to be copy constructed

    virtual SAXException::~SAXException (  )  [virtual]

    Destructor.


    Member Function Documentation

    SAXException& SAXException::operator= ( const SAXException toCopy  ) 

    Assignment operator.

    Parameters:
    toCopy The object to be copied

    References fMemoryManager, fMsg, and XMLString::replicate().

    virtual const XMLCh* SAXException::getMessage (  )  const [virtual]

    Get the contents of the message.


    Member Data Documentation

    XMLCh* SAXException::fMsg [protected]

    Referenced by operator=().


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XSValue_8hpp-source.html0000644000175000017500000012550711363620005022156 0ustar borisboris Xerces-C++: XSValue.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/MemoryManager_8hpp-source.html0000644000175000017500000002073011363620004023361 0ustar borisboris Xerces-C++: MemoryManager.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLFileMgr-members.html0000644000175000017500000001536111363620006022753 0ustar borisboris Xerces-C++: Member List

    XMLFileMgr Member List

    This is the complete list of members for XMLFileMgr, including all inherited members.

    curPos(FileHandle f, MemoryManager *const manager)=0XMLFileMgr [pure virtual]
    fileClose(FileHandle f, MemoryManager *const manager)=0XMLFileMgr [pure virtual]
    fileOpen(const XMLCh *path, bool toWrite, MemoryManager *const manager)=0XMLFileMgr [pure virtual]
    fileOpen(const char *path, bool toWrite, MemoryManager *const manager)=0XMLFileMgr [pure virtual]
    fileRead(FileHandle f, XMLSize_t byteCount, XMLByte *buffer, MemoryManager *const manager)=0XMLFileMgr [pure virtual]
    fileReset(FileHandle f, MemoryManager *const manager)=0XMLFileMgr [pure virtual]
    fileSize(FileHandle f, MemoryManager *const manager)=0XMLFileMgr [pure virtual]
    fileWrite(FileHandle f, XMLSize_t byteCount, const XMLByte *buffer, MemoryManager *const manager)=0XMLFileMgr [pure virtual]
    getCurrentDirectory(MemoryManager *const manager)=0XMLFileMgr [pure virtual]
    getFullPath(const XMLCh *const srcPath, MemoryManager *const manager)=0XMLFileMgr [pure virtual]
    isRelative(const XMLCh *const toCheck, MemoryManager *const manager)=0XMLFileMgr [pure virtual]
    openStdIn(MemoryManager *const manager)=0XMLFileMgr [pure virtual]
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    XMemory()XMemory [protected]
    XMLFileMgr()XMLFileMgr
    ~XMLFileMgr()XMLFileMgr [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMEntity.html0000644000175000017500000004422411363620005021230 0ustar borisboris Xerces-C++: DOMEntity Class Reference

    DOMEntity Class Reference

    This interface represents an entity, either parsed or unparsed, in an XML document. More...

    Inheritance diagram for DOMEntity:

    DOMNode

    List of all members.

    Public Member Functions

    Destructor
    virtual ~DOMEntity ()
     Destructor.
    Functions introduced in DOM Level 1
    virtual const XMLChgetPublicId () const =0
     The public identifier associated with the entity, if specified.
    virtual const XMLChgetSystemId () const =0
     The system identifier associated with the entity, if specified.
    virtual const XMLChgetNotationName () const =0
     For unparsed entities, the name of the notation for the entity.
    Functions introduced in DOM Level 3.
    virtual const XMLChgetInputEncoding () const =0
     An attribute specifying the encoding used for this entity at the time of parsing, when it is an external parsed entity.
    virtual const XMLChgetXmlEncoding () const =0
     An attribute specifying, as part of the text declaration, the encoding of this entity, when it is an external parsed entity.
    virtual const XMLChgetXmlVersion () const =0
     An attribute specifying, as part of the text declaration, the version number of this entity, when it is an external parsed entity.

    Protected Member Functions

    Hidden constructors
     DOMEntity ()
     DOMEntity (const DOMEntity &other)


    Detailed Description

    This interface represents an entity, either parsed or unparsed, in an XML document.

    Note that this models the entity itself not the entity declaration. DOMEntity declaration modeling has been left for a later Level of the DOM specification.

    The nodeName attribute that is inherited from DOMNode contains the name of the entity.

    An XML processor may choose to completely expand entities before the structure model is passed to the DOM; in this case there will be no DOMEntityReference nodes in the document tree.

    XML does not mandate that a non-validating XML processor read and process entity declarations made in the external subset or declared in external parameter entities. This means that parsed entities declared in the external subset need not be expanded by some classes of applications, and that the replacement value of the entity may not be available. When the replacement value is available, the corresponding DOMEntity node's child list represents the structure of that replacement text. Otherwise, the child list is empty.

    The DOM Level 2 does not support editing DOMEntity nodes; if a user wants to make changes to the contents of an DOMEntity, every related DOMEntityReference node has to be replaced in the structure model by a clone of the DOMEntity's contents, and then the desired changes must be made to each of those clones instead. DOMEntity nodes and all their descendants are readonly.

    An DOMEntity node does not have any parent.If the entity contains an unbound namespace prefix, the namespaceURI of the corresponding node in the DOMEntity node subtree is null. The same is true for DOMEntityReference nodes that refer to this entity, when they are created using the createEntityReference method of the DOMDocument interface. The DOM Level 2 does not support any mechanism to resolve namespace prefixes.

    See also the Document Object Model (DOM) Level 2 Core Specification.

    Since:
    DOM Level 1

    Constructor & Destructor Documentation

    DOMEntity::DOMEntity (  )  [protected]

    DOMEntity::DOMEntity ( const DOMEntity other  )  [protected]

    virtual DOMEntity::~DOMEntity (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual const XMLCh* DOMEntity::getPublicId (  )  const [pure virtual]

    The public identifier associated with the entity, if specified.

    If the public identifier was not specified, this is null.

    Since:
    DOM Level 1

    virtual const XMLCh* DOMEntity::getSystemId (  )  const [pure virtual]

    The system identifier associated with the entity, if specified.

    If the system identifier was not specified, this is null.

    Since:
    DOM Level 1

    virtual const XMLCh* DOMEntity::getNotationName (  )  const [pure virtual]

    For unparsed entities, the name of the notation for the entity.

    For parsed entities, this is null.

    Since:
    DOM Level 1

    virtual const XMLCh* DOMEntity::getInputEncoding (  )  const [pure virtual]

    An attribute specifying the encoding used for this entity at the time of parsing, when it is an external parsed entity.

    This is null if it an entity from the internal subset or if it is not known.

    Since:
    DOM Level 3

    virtual const XMLCh* DOMEntity::getXmlEncoding (  )  const [pure virtual]

    An attribute specifying, as part of the text declaration, the encoding of this entity, when it is an external parsed entity.

    This is null otherwise.

    Since:
    DOM Level 3

    virtual const XMLCh* DOMEntity::getXmlVersion (  )  const [pure virtual]

    An attribute specifying, as part of the text declaration, the version number of this entity, when it is an external parsed entity.

    This is null otherwise.

    Since:
    DOM Level 3


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classSAXNotSupportedException-members.html0000644000175000017500000001502511363620006025743 0ustar borisboris Xerces-C++: Member List

    SAXNotSupportedException Member List

    This is the complete list of members for SAXNotSupportedException, including all inherited members.

    fMemoryManagerSAXException [protected]
    fMsgSAXException [protected]
    getMessage() const SAXException [virtual]
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    operator=(const SAXException &toCopy)SAXException
    SAXException(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)SAXException
    SAXException(const XMLCh *const msg, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)SAXException
    SAXException(const char *const msg, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)SAXException
    SAXException(const SAXException &toCopy)SAXException
    SAXNotSupportedException(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)SAXNotSupportedException
    SAXNotSupportedException(const XMLCh *const msg, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)SAXNotSupportedException
    SAXNotSupportedException(const char *const msg, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)SAXNotSupportedException
    SAXNotSupportedException(const SAXException &toCopy)SAXNotSupportedException
    XMemory()XMemory [protected]
    ~SAXException()SAXException [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMLSResourceResolver.html0000644000175000017500000003212111363620005023515 0ustar borisboris Xerces-C++: DOMLSResourceResolver Class Reference

    DOMLSResourceResolver Class Reference

    DOMLSResourceResolver provides a way for applications to redirect references to external entities. More...

    List of all members.

    Public Member Functions

    Destructor
    virtual ~DOMLSResourceResolver ()
     Destructor.
    Functions introduced in DOM Level 3
    virtual DOMLSInputresolveResource (const XMLCh *const resourceType, const XMLCh *const namespaceUri, const XMLCh *const publicId, const XMLCh *const systemId, const XMLCh *const baseURI)=0
     Allow the application to resolve external resources.

    Protected Member Functions

    Hidden constructors
     DOMLSResourceResolver ()


    Detailed Description

    DOMLSResourceResolver provides a way for applications to redirect references to external entities.

    Applications needing to implement customized handling for external entities must implement this interface and register their implementation by setting the entityResolver attribute of the DOMLSParser.

    The DOMLSParser will then allow the application to intercept any external entities (including the external DTD subset and external parameter entities) before including them.

    Many DOM applications will not need to implement this interface, but it will be especially useful for applications that build XML documents from databases or other specialized input sources, or for applications that use URNs.

    See also:
    DOMLSParser::getDomConfig

    DOMLSInput::DOMLSInput

    Since:
    DOM Level 3

    Constructor & Destructor Documentation

    DOMLSResourceResolver::DOMLSResourceResolver (  )  [protected]

    virtual DOMLSResourceResolver::~DOMLSResourceResolver (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual DOMLSInput* DOMLSResourceResolver::resolveResource ( const XMLCh *const   resourceType,
    const XMLCh *const   namespaceUri,
    const XMLCh *const   publicId,
    const XMLCh *const   systemId,
    const XMLCh *const   baseURI 
    ) [pure virtual]

    Allow the application to resolve external resources.

    The DOMLSParser will call this method before opening any external resource, including the external DTD subset, external entities referenced within the DTD, and external entities referenced within the document element (however, the top-level document entity is not passed to this method). The application may then request that the DOMLSParser resolve the external resource itself, that it use an alternative URI, or that it use an entirely different input source.

    Application writers can use this method to redirect external system identifiers to secure and/or local URI, to look up public identifiers in a catalogue, or to read an entity from a database or other input source (including, for example, a dialog box).

    The returned DOMLSInput is owned by the DOMLSParser which is responsible to clean up the memory.

    Parameters:
    resourceType The type of the resource being resolved. For XML [XML 1.0] resources (i.e. entities), applications must use the value "http://www.w3.org/TR/REC-xml". For XML Schema [XML Schema Part 1], applications must use the value "http://www.w3.org/2001/XMLSchema". Other types of resources are outside the scope of this specification and therefore should recommend an absolute URI in order to use this method.
    namespaceUri The namespace of the resource being resolved, e.g. the target namespace of the XML Schema [XML Schema Part 1] when resolving XML Schema resources.
    publicId The public identifier of the external entity being referenced, or null if no public identifier was supplied or if the resource is not an entity.
    systemId The system identifier, a URI reference [IETF RFC 2396], of the external resource being referenced, or null if no system identifier was supplied.
    baseURI The absolute base URI of the resource being parsed, or null if there is no base URI.
    Returns:
    A DOMLSInput object describing the new input source, or null to request that the parser open a regular URI connection to the resource. The returned DOMLSInput is owned by the DOMLSParser which is responsible to clean up the memory.
    See also:
    DOMLSInput::DOMLSInput
    Since:
    DOM Level 3


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classMemBufInputSource.png0000644000175000017500000000105411363620006022603 0ustar borisboris‰PNG  IHDR~ˆÓÆB¿PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfÂIDAThí—]r„ ÇÉKŸ 7ˆ½A{¡>íýÐ| ŠË*–ÙY»@‘l~@¢ëøßc%|M#åÓù;[âFÜÓy’Ê“à0O܈÷Ãý”R’uðì*˜’‰jϳuóøÂk+µ{}>Ñ„Xñ„>Œ_ù$ƒÂÓ)^ç¨ößËÛý׊¶¾æj„îùä[Ïã¾±ü%ÿÿ‹}”#‡'ó·Ÿ—ò·ÛKù—çßyçwÞù7å]ÿ]ŠOÕ5i¸}žÚÝ»<±ôK¢;ˆP¿ø1«§$*Ó!/ºËŒˆ¾Y™þ£­ˆhð³nRù……O¦ÆNòeœùmB÷yºã;ò7åøqÅSQ }û—LË h)'ÕÞ]ù·I¶v¹&ß_œwý÷LÞõŸóÎ;ï¼óïÉãX qh{༜찂hS"T~€­•Œç‹)Ú\`ã[¸æ› £#FîÄm$«‹‹T¼ÀÂC&!"̼8¢˜æQ ³ô-ôŠ—&ñgÇu ˜-´¢qÊÇ 8óËØxÍóŠ·‹‡|Üòquÿ¯ìXBÔøaÍãâ_ñšÜ?ă"䔣®^åÿ;øùâüAq~ðýý gÛµ­…^yIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/NoSuchElementException_8hpp.html0000644000175000017500000000407611363620005023716 0ustar borisboris Xerces-C++: NoSuchElementException.hpp File Reference

    NoSuchElementException.hpp File Reference

    Go to the source code of this file.

    Defines

    #define XERCESC_INCLUDE_GUARD_NOSUCHELEMENTEXCEPTION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_NOSUCHELEMENTEXCEPTION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMLSSerializerFilter-members.html0000644000175000017500000001737611363620005025132 0ustar borisboris Xerces-C++: Member List
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSAnnotation.html0000644000175000017500000006071011363620006022000 0ustar borisboris Xerces-C++: XSAnnotation Class Reference

    XSAnnotation Class Reference

    Inheritance diagram for XSAnnotation:

    XSObject XMemory

    List of all members.

    Public Types

    enum  ANNOTATION_TARGET { W3C_DOM_ELEMENT = 1, W3C_DOM_DOCUMENT = 2 }

    Public Member Functions

     XSAnnotation (MemoryManager *const manager)
    Constructors
     XSAnnotation (const XMLCh *const contents, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     The default constructor.
    Destructor
     ~XSAnnotation ()
    XSAnnotation methods
    void writeAnnotation (DOMNode *node, ANNOTATION_TARGET targetType)
     Write contents of the annotation to the specified DOM object.
    void writeAnnotation (ContentHandler *handler)
     Write contents of the annotation to the specified object.
    const XMLChgetAnnotationString () const
     A text representation of annotation.
    XMLChgetAnnotationString ()
    void setNext (XSAnnotation *const nextAnnotation)
     methods needed by implementation
    XSAnnotationgetNext ()
    void getLineCol (XMLFileLoc &line, XMLFileLoc &col) const
     Getter.
    const XMLChgetSystemId () const
    void setLineCol (XMLFileLoc line, XMLFileLoc col)
     Setter.
    void setSystemId (const XMLCh *const systemId)

    Protected Attributes

    XMLChfContents
    XSAnnotationfNext


    Member Enumeration Documentation

    Enumerator:
    W3C_DOM_ELEMENT  The object type is org.w3c.dom.Element.
    W3C_DOM_DOCUMENT  The object type is org.w3c.dom.Document.


    Constructor & Destructor Documentation

    XSAnnotation::XSAnnotation ( const XMLCh *const   contents,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    The default constructor.

    Parameters:
    contents The string that is to be the content of this XSAnnotation
    manager The configurable memory manager

    XSAnnotation::~XSAnnotation (  ) 

    XSAnnotation::XSAnnotation ( MemoryManager *const   manager  ) 


    Member Function Documentation

    void XSAnnotation::writeAnnotation ( DOMNode node,
    ANNOTATION_TARGET  targetType 
    )

    Write contents of the annotation to the specified DOM object.

    In-scope namespace declarations for annotation element are added as attribute nodes of the serialized annotation.

    Parameters:
    node A target pointer to the annotation target object, i.e. either DOMDocument or DOMElement cast as DOMNode.
    targetType A target type.

    void XSAnnotation::writeAnnotation ( ContentHandler handler  ) 

    Write contents of the annotation to the specified object.

    The corresponding events for all in-scope namespace declarations are sent via the specified document handler.

    Parameters:
    handler A target pointer to the annotation target object, i.e. ContentHandler.

    const XMLCh * XSAnnotation::getAnnotationString (  )  const

    A text representation of annotation.

    XMLCh * XSAnnotation::getAnnotationString (  ) 

    References fContents.

    void XSAnnotation::setNext ( XSAnnotation *const   nextAnnotation  ) 

    methods needed by implementation

    XSAnnotation* XSAnnotation::getNext (  ) 

    void XSAnnotation::getLineCol ( XMLFileLoc line,
    XMLFileLoc col 
    ) const

    Getter.

    const XMLCh * XSAnnotation::getSystemId (  )  const

    void XSAnnotation::setLineCol ( XMLFileLoc  line,
    XMLFileLoc  col 
    )

    Setter.

    void XSAnnotation::setSystemId ( const XMLCh *const   systemId  ) 


    Member Data Documentation


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMEntity-members.html0000644000175000017500000004371211363620005022661 0ustar borisboris Xerces-C++: Member List

    DOMEntity Member List

    This is the complete list of members for DOMEntity, including all inherited members.

    appendChild(DOMNode *newChild)=0DOMNode [pure virtual]
    ATTRIBUTE_NODE enum valueDOMNode
    CDATA_SECTION_NODE enum valueDOMNode
    cloneNode(bool deep) const =0DOMNode [pure virtual]
    COMMENT_NODE enum valueDOMNode
    compareDocumentPosition(const DOMNode *other) const =0DOMNode [pure virtual]
    DOCUMENT_FRAGMENT_NODE enum valueDOMNode
    DOCUMENT_NODE enum valueDOMNode
    DOCUMENT_POSITION_CONTAINED_BY enum valueDOMNode
    DOCUMENT_POSITION_CONTAINS enum valueDOMNode
    DOCUMENT_POSITION_DISCONNECTED enum valueDOMNode
    DOCUMENT_POSITION_FOLLOWING enum valueDOMNode
    DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC enum valueDOMNode
    DOCUMENT_POSITION_PRECEDING enum valueDOMNode
    DOCUMENT_TYPE_NODE enum valueDOMNode
    DocumentPosition enum nameDOMNode
    DOMEntity()DOMEntity [protected]
    DOMEntity(const DOMEntity &other)DOMEntity [protected]
    DOMNode()DOMNode [protected]
    DOMNode(const DOMNode &)DOMNode [protected]
    ELEMENT_NODE enum valueDOMNode
    ENTITY_NODE enum valueDOMNode
    ENTITY_REFERENCE_NODE enum valueDOMNode
    getAttributes() const =0DOMNode [pure virtual]
    getBaseURI() const =0DOMNode [pure virtual]
    getChildNodes() const =0DOMNode [pure virtual]
    getFeature(const XMLCh *feature, const XMLCh *version) const =0DOMNode [pure virtual]
    getFirstChild() const =0DOMNode [pure virtual]
    getInputEncoding() const =0DOMEntity [pure virtual]
    getLastChild() const =0DOMNode [pure virtual]
    getLocalName() const =0DOMNode [pure virtual]
    getNamespaceURI() const =0DOMNode [pure virtual]
    getNextSibling() const =0DOMNode [pure virtual]
    getNodeName() const =0DOMNode [pure virtual]
    getNodeType() const =0DOMNode [pure virtual]
    getNodeValue() const =0DOMNode [pure virtual]
    getNotationName() const =0DOMEntity [pure virtual]
    getOwnerDocument() const =0DOMNode [pure virtual]
    getParentNode() const =0DOMNode [pure virtual]
    getPrefix() const =0DOMNode [pure virtual]
    getPreviousSibling() const =0DOMNode [pure virtual]
    getPublicId() const =0DOMEntity [pure virtual]
    getSystemId() const =0DOMEntity [pure virtual]
    getTextContent() const =0DOMNode [pure virtual]
    getUserData(const XMLCh *key) const =0DOMNode [pure virtual]
    getXmlEncoding() const =0DOMEntity [pure virtual]
    getXmlVersion() const =0DOMEntity [pure virtual]
    hasAttributes() const =0DOMNode [pure virtual]
    hasChildNodes() const =0DOMNode [pure virtual]
    insertBefore(DOMNode *newChild, DOMNode *refChild)=0DOMNode [pure virtual]
    isDefaultNamespace(const XMLCh *namespaceURI) const =0DOMNode [pure virtual]
    isEqualNode(const DOMNode *arg) const =0DOMNode [pure virtual]
    isSameNode(const DOMNode *other) const =0DOMNode [pure virtual]
    isSupported(const XMLCh *feature, const XMLCh *version) const =0DOMNode [pure virtual]
    lookupNamespaceURI(const XMLCh *prefix) const =0DOMNode [pure virtual]
    lookupPrefix(const XMLCh *namespaceURI) const =0DOMNode [pure virtual]
    NodeType enum nameDOMNode
    normalize()=0DOMNode [pure virtual]
    NOTATION_NODE enum valueDOMNode
    PROCESSING_INSTRUCTION_NODE enum valueDOMNode
    release()=0DOMNode [pure virtual]
    removeChild(DOMNode *oldChild)=0DOMNode [pure virtual]
    replaceChild(DOMNode *newChild, DOMNode *oldChild)=0DOMNode [pure virtual]
    setNodeValue(const XMLCh *nodeValue)=0DOMNode [pure virtual]
    setPrefix(const XMLCh *prefix)=0DOMNode [pure virtual]
    setTextContent(const XMLCh *textContent)=0DOMNode [pure virtual]
    setUserData(const XMLCh *key, void *data, DOMUserDataHandler *handler)=0DOMNode [pure virtual]
    TEXT_NODE enum valueDOMNode
    ~DOMEntity()DOMEntity [virtual]
    ~DOMNode()DOMNode [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classMemBufInputSource.html0000644000175000017500000004745011363620006022775 0ustar borisboris Xerces-C++: MemBufInputSource Class Reference

    MemBufInputSource Class Reference

    This class is a derivative of the standard InputSource class. More...

    Inheritance diagram for MemBufInputSource:

    InputSource XMemory

    List of all members.

    Public Member Functions

    Constructors
     MemBufInputSource (const XMLByte *const srcDocBytes, const XMLSize_t byteCount, const XMLCh *const bufId, const bool adoptBuffer=false, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     A memory buffer input source is constructed from a buffer of byte data, and the count of bytes in that buffer.
     MemBufInputSource (const XMLByte *const srcDocBytes, const XMLSize_t byteCount, const char *const bufId, const bool adoptBuffer=false, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     This constructor is identical to the previous one, except that it takes the fake system id in local code page form and transcodes it internally.
    Destructor
     ~MemBufInputSource ()
     If the buffer was adopted, the copy made during construction is deleted at this point.
    Virtual methods
    BinInputStreammakeStream () const
     This method will return a binary input stream derivative that will parse from the memory buffer.
    Setter methods
    void setCopyBufToStream (const bool newState)
     By default, for safety's sake, each newly created stream from this input source will make its own copy of the buffer to stream from.
    void resetMemBufInputSource (const XMLByte *const srcDocBytes, const XMLSize_t byteCount)
     This methods allows the MemBufInputSource to be used for more than one input source, instead of destructing/constructing another MemBufInputSource.


    Detailed Description

    This class is a derivative of the standard InputSource class.

    It provides for the parser access to data stored in a memory buffer. The type of buffer and its host specific attributes are of little concern here. The only real requirement is that the memory be readable by the current process.

    Note that the memory buffer size is expressed in bytes, not in characters. If you pass it text data, you must account for the bytes per character when indicating the buffer size.

    As with all InputSource derivatives. The primary objective of an input source is to create an input stream via which the parser can spool in data from the referenced source. In this case, there are two options available.

    The passed buffer can be adopted or merely referenced. If it is adopted, then it must be dynamically allocated and will be destroyed when the input source is destroyed (no reference counting!.) If not adopted, the caller must insure that it remains valid until the input source object is destroyed.

    The other option indicates whether each stream created for this input source should get its own copy of the data, or whether it should just stream the data directly from this object's copy of the data. The same rules apply here, in that the buffer must either be copied by the stream or it must remain valid until the stream is destroyed.


    Constructor & Destructor Documentation

    MemBufInputSource::MemBufInputSource ( const XMLByte *const   srcDocBytes,
    const XMLSize_t  byteCount,
    const XMLCh *const   bufId,
    const bool  adoptBuffer = false,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    A memory buffer input source is constructed from a buffer of byte data, and the count of bytes in that buffer.

    The parser will parse from this memory buffer until it has eaten the indicated number of bytes.

    Note that the system id provided serves two purposes. Firstly it is going to be displayed in error messages as the source of the error. And secondly, any entities which are referred to from this entity via relative paths/URLs will be relative to this fake system id.

    Parameters:
    srcDocBytes The actual data buffer to be parsed from.
    byteCount The count of bytes (not characters, bytes!) in the buffer.
    bufId A fake system id for the buffer.
    adoptBuffer Indicates whether this object should adopt the buffer (i.e. become responsible for deletion) or just use it in place.
    manager Pointer to the memory manager to be used to allocate objects.

    MemBufInputSource::MemBufInputSource ( const XMLByte *const   srcDocBytes,
    const XMLSize_t  byteCount,
    const char *const   bufId,
    const bool  adoptBuffer = false,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    This constructor is identical to the previous one, except that it takes the fake system id in local code page form and transcodes it internally.

    MemBufInputSource::~MemBufInputSource (  ) 

    If the buffer was adopted, the copy made during construction is deleted at this point.


    Member Function Documentation

    BinInputStream* MemBufInputSource::makeStream (  )  const [virtual]

    This method will return a binary input stream derivative that will parse from the memory buffer.

    If setCopyBufToStream() has been set, then the stream will make its own copy. Otherwise, it will use the buffer as is (in which case it must remain valid until the stream is no longer in use, i.e. the parse completes.)

    Returns:
    A dynamically allocated binary input stream derivative that can parse from the memory buffer.

    Implements InputSource.

    void MemBufInputSource::setCopyBufToStream ( const bool  newState  ) 

    By default, for safety's sake, each newly created stream from this input source will make its own copy of the buffer to stream from.

    This avoids having to deal with aliasing of the buffer for simple work. But, for higher performance applications or for large buffers, this is obviously not optimal.

    In such cases, you can call this method to turn off that default action. Once turned off, the streams will just get a pointer to the buffer and parse directly from that. In this case, you must insure that the buffer remains valid for as long as any parse events are still using it.

    Parameters:
    newState The new boolean flag state to set.

    void MemBufInputSource::resetMemBufInputSource ( const XMLByte *const   srcDocBytes,
    const XMLSize_t  byteCount 
    )

    This methods allows the MemBufInputSource to be used for more than one input source, instead of destructing/constructing another MemBufInputSource.

    Parameters:
    srcDocBytes The actual data buffer to be parsed from.
    byteCount The count of bytes (not characters, bytes!) in the buffer.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSIDCDefinition.html0000644000175000017500000005723611363620006022307 0ustar borisboris Xerces-C++: XSIDCDefinition Class Reference

    XSIDCDefinition Class Reference

    Inheritance diagram for XSIDCDefinition:

    XSObject XMemory

    List of all members.

    Public Types

    enum  IC_CATEGORY { IC_KEY = 1, IC_KEYREF = 2, IC_UNIQUE = 3 }

    Public Member Functions

    Constructors
     XSIDCDefinition (IdentityConstraint *const identityConstraint, XSIDCDefinition *const keyIC, XSAnnotation *const headAnnot, StringList *const stringList, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     The default constructor.
    Destructor
     ~XSIDCDefinition ()
    overridden XSXSObject methods
    const XMLChgetName () const
     The name of type NCName of this declaration as defined in XML Namespaces.
    const XMLChgetNamespace ()
     The [target namespace] of this object, or null if it is unspecified.
    XSNamespaceItemgetNamespaceItem ()
     A namespace schema information item corresponding to the target namespace of the component, if it's globally declared; or null otherwise.
    XSIDCDefinition methods
    IC_CATEGORY getCategory () const
     [identity-constraint category]: one of IC_KEY, IC_KEYREF or IC_UNIQUE.
    const XMLChgetSelectorStr ()
     [selector]: a restricted XPath expression.
    StringListgetFieldStrs ()
     [fields]: a non-empty list of restricted XPath ([XPath]) expressions.
    XSIDCDefinitiongetRefKey () const
     [referenced key]: required if [identity-constraint category] is IC_KEYREF, forbidden otherwise (when an identity-constraint definition with [ identity-constraint category] equal to IC_KEY or IC_UNIQUE).
    XSAnnotationListgetAnnotations ()
     A set of [annotations].

    Protected Attributes

    IdentityConstraint * fIdentityConstraint
    XSIDCDefinitionfKey
    StringListfStringList
    XSAnnotationListfXSAnnotationList


    Member Enumeration Documentation

    Enumerator:
    IC_KEY 
    IC_KEYREF 
    IC_UNIQUE 


    Constructor & Destructor Documentation

    XSIDCDefinition::XSIDCDefinition ( IdentityConstraint *const   identityConstraint,
    XSIDCDefinition *const   keyIC,
    XSAnnotation *const   headAnnot,
    StringList *const   stringList,
    XSModel *const   xsModel,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    The default constructor.

    Parameters:
    identityConstraint 
    keyIC 
    headAnnot 
    stringList 
    xsModel 
    manager The configurable memory manager

    XSIDCDefinition::~XSIDCDefinition (  ) 


    Member Function Documentation

    const XMLCh* XSIDCDefinition::getName (  )  const [virtual]

    The name of type NCName of this declaration as defined in XML Namespaces.

    Reimplemented from XSObject.

    const XMLCh* XSIDCDefinition::getNamespace (  )  [virtual]

    The [target namespace] of this object, or null if it is unspecified.

    Reimplemented from XSObject.

    XSNamespaceItem* XSIDCDefinition::getNamespaceItem (  )  [virtual]

    A namespace schema information item corresponding to the target namespace of the component, if it's globally declared; or null otherwise.

    Reimplemented from XSObject.

    IC_CATEGORY XSIDCDefinition::getCategory (  )  const

    [identity-constraint category]: one of IC_KEY, IC_KEYREF or IC_UNIQUE.

    const XMLCh* XSIDCDefinition::getSelectorStr (  ) 

    [selector]: a restricted XPath expression.

    StringList * XSIDCDefinition::getFieldStrs (  ) 

    [fields]: a non-empty list of restricted XPath ([XPath]) expressions.

    References fStringList.

    XSIDCDefinition * XSIDCDefinition::getRefKey (  )  const

    [referenced key]: required if [identity-constraint category] is IC_KEYREF, forbidden otherwise (when an identity-constraint definition with [ identity-constraint category] equal to IC_KEY or IC_UNIQUE).

    References fKey.

    XSAnnotationList* XSIDCDefinition::getAnnotations (  ) 

    A set of [annotations].


    Member Data Documentation

    IdentityConstraint* XSIDCDefinition::fIdentityConstraint [protected]

    Referenced by getRefKey().


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLMutexMgr-members.html0000644000175000017500000001067611363620006023202 0ustar borisboris Xerces-C++: Member List

    XMLMutexMgr Member List

    This is the complete list of members for XMLMutexMgr, including all inherited members.

    create(MemoryManager *const manager)=0XMLMutexMgr [pure virtual]
    destroy(XMLMutexHandle mtx, MemoryManager *const manager)=0XMLMutexMgr [pure virtual]
    lock(XMLMutexHandle mtx)=0XMLMutexMgr [pure virtual]
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    unlock(XMLMutexHandle mtx)=0XMLMutexMgr [pure virtual]
    XMemory()XMemory [protected]
    XMLMutexMgr()XMLMutexMgr
    ~XMLMutexMgr()XMLMutexMgr [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLDocumentHandler_8hpp.html0000644000175000017500000000506511363620005022762 0ustar borisboris Xerces-C++: XMLDocumentHandler.hpp File Reference

    XMLDocumentHandler.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLDocumentHandler
     This abstract class provides the interface for the scanner to return XML document information up to the parser as it scans through the document. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_XMLDOCUMENTHANDLER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XMLDOCUMENTHANDLER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/PlatformUtils_8hpp.html0000644000175000017500000001003611363620005022124 0ustar borisboris Xerces-C++: PlatformUtils.hpp File Reference

    PlatformUtils.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLDeleter
    class  XMLPlatformUtils
     Utilities that must be implemented in a platform-specific way. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_PLATFORMUTILS_HPP

    Functions

     MakeXMLException (XMLPlatformUtilsException, XMLUTIL_EXPORT) inline XMLSize_t XMLPlatformUtils


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_PLATFORMUTILS_HPP


    Function Documentation

    MakeXMLException ( XMLPlatformUtilsException  ,
    XMLUTIL_EXPORT   
    )


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classQName.html0000644000175000017500000007342211363620006020420 0ustar borisboris Xerces-C++: QName Class Reference

    QName Class Reference

    Inheritance diagram for QName:

    XMemory

    List of all members.

    Public Member Functions

     QName (MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Default constructor.
     QName (const XMLCh *const prefix, const XMLCh *const localPart, const unsigned int uriId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Constructs a specified qname using prefix, and localpart.
     QName (const XMLCh *const rawName, const unsigned int uriId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Constructs a specified qname using rawName.
     QName (const QName &qname)
     Copy constructor.
     ~QName ()
    const XMLChgetPrefix () const
    XMLChgetPrefix ()
    const XMLChgetLocalPart () const
    XMLChgetLocalPart ()
    unsigned int getURI () const
    const XMLChgetRawName () const
    XMLChgetRawName ()
    MemoryManagergetMemoryManager () const
    void setName (const XMLCh *const prefix, const XMLCh *const localPart, const unsigned int uriId)
    void setName (const XMLCh *const rawName, const unsigned int uriId)
    void setPrefix (const XMLCh *)
    void setLocalPart (const XMLCh *)
    void setNPrefix (const XMLCh *, const XMLSize_t)
    void setNLocalPart (const XMLCh *, const XMLSize_t)
    void setURI (const unsigned int)
    void setValues (const QName &qname)
    bool operator== (const QName &) const
    void cleanUp ()


    Constructor & Destructor Documentation

    QName::QName ( MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager  ) 

    Default constructor.

    QName::QName ( const XMLCh *const   prefix,
    const XMLCh *const   localPart,
    const unsigned int  uriId,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    Constructs a specified qname using prefix, and localpart.

    QName::QName ( const XMLCh *const   rawName,
    const unsigned int  uriId,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    Constructs a specified qname using rawName.

    QName::QName ( const QName qname  ) 

    Copy constructor.

    QName::~QName (  ) 


    Member Function Documentation

    const XMLCh * QName::getPrefix (  )  const

    Referenced by XMLAttr::getPrefix().

    XMLCh * QName::getPrefix (  ) 

    const XMLCh * QName::getLocalPart (  )  const

    XMLCh * QName::getLocalPart (  ) 

    unsigned int QName::getURI (  )  const

    const XMLCh* QName::getRawName (  )  const

    XMLCh* QName::getRawName (  ) 

    MemoryManager * QName::getMemoryManager (  )  const

    void QName::setName ( const XMLCh *const   prefix,
    const XMLCh *const   localPart,
    const unsigned int  uriId 
    )

    Referenced by XMLAttr::set().

    void QName::setName ( const XMLCh *const   rawName,
    const unsigned int  uriId 
    )

    void QName::setPrefix ( const XMLCh prefix  ) 

    void QName::setLocalPart ( const XMLCh localPart  ) 

    void QName::setNPrefix ( const XMLCh ,
    const   XMLSize_t 
    )

    Referenced by setPrefix().

    void QName::setNLocalPart ( const XMLCh ,
    const   XMLSize_t 
    )

    Referenced by setLocalPart().

    void QName::setURI ( const unsigned int  uriId  ) 

    void QName::setValues ( const QName qname  ) 

    bool QName::operator== ( const QName  )  const

    void QName::cleanUp (  ) 


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_0x74.html0000644000175000017500000002077211363620005021162 0ustar borisboris Xerces-C++: Class Members
    Here is a list of all class members with links to the classes they belong to:

    - t -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLAbstractDoubleFloat-members.html0000644000175000017500000003254111363620006025311 0ustar borisboris Xerces-C++: Member List

    XMLAbstractDoubleFloat Member List

    This is the complete list of members for XMLAbstractDoubleFloat, including all inherited members.

    BigDecimal enum valueXMLNumber
    checkBoundary(char *const strValue)=0XMLAbstractDoubleFloat [protected, pure virtual]
    compareValues(const XMLAbstractDoubleFloat *const lValue, const XMLAbstractDoubleFloat *const rValue, MemoryManager *const manager)XMLAbstractDoubleFloat [protected, static]
    convert(char *const strValue)XMLAbstractDoubleFloat [protected]
    DateTime enum valueXMLNumber
    Double enum valueXMLNumber
    EQUAL enum valueXMLNumber
    fDataConvertedXMLAbstractDoubleFloat [protected]
    fDataOverflowedXMLAbstractDoubleFloat [protected]
    Float enum valueXMLNumber
    fTypeXMLAbstractDoubleFloat [protected]
    fValueXMLAbstractDoubleFloat [protected]
    getCanonicalRepresentation(const XMLCh *const rawData, MemoryManager *const memMgr=XMLPlatformUtils::fgMemoryManager)XMLAbstractDoubleFloat [static]
    getFormattedString() const XMLAbstractDoubleFloat [virtual]
    getMemoryManager() const XMLAbstractDoubleFloat
    getRawData() const XMLAbstractDoubleFloat [virtual]
    getSign() const XMLAbstractDoubleFloat [virtual]
    getType() const XMLAbstractDoubleFloat
    getValue() const XMLAbstractDoubleFloat
    GREATER_THAN enum valueXMLNumber
    INDETERMINATE enum valueXMLNumber
    init(const XMLCh *const strValue)XMLAbstractDoubleFloat [protected]
    isDataConverted() const XMLAbstractDoubleFloat
    isDataOverflowed() const XMLAbstractDoubleFloat
    LESS_THAN enum valueXMLNumber
    LiteralType enum nameXMLAbstractDoubleFloat
    loadNumber(XMLNumber::NumberType numType, XSerializeEngine &serEng)XMLNumber [static]
    NaN enum valueXMLAbstractDoubleFloat
    NegINF enum valueXMLAbstractDoubleFloat
    Normal enum valueXMLAbstractDoubleFloat
    normalizeDecimalPoint(char *const toNormal)XMLAbstractDoubleFloat [static]
    NumberType enum nameXMLNumber
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    PosINF enum valueXMLAbstractDoubleFloat
    SpecialTypeNum enum valueXMLAbstractDoubleFloat
    UnKnown enum valueXMLNumber
    XMemory()XMemory [protected]
    XMLAbstractDoubleFloat(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLAbstractDoubleFloat [protected]
    XMLNumber()XMLNumber [protected]
    XMLNumber(const XMLNumber &)XMLNumber [protected]
    ~XMLAbstractDoubleFloat()XMLAbstractDoubleFloat [virtual]
    ~XMLNumber()XMLNumber [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMConfiguration.html0000644000175000017500000006562411363620005022572 0ustar borisboris Xerces-C++: DOMConfiguration Class Reference

    DOMConfiguration Class Reference

    The DOMConfiguration interface represents the configuration of a document and maintains a table of recognized parameters. More...

    List of all members.

    Public Member Functions

    virtual void setParameter (const XMLCh *name, const void *value)=0
     Set the value of a parameter.
    virtual void setParameter (const XMLCh *name, bool value)=0
    virtual const void * getParameter (const XMLCh *name) const =0
     Return the value of a parameter if known.
    virtual bool canSetParameter (const XMLCh *name, const void *value) const =0
     Check if setting a parameter to a specific value is supported.
    virtual bool canSetParameter (const XMLCh *name, bool value) const =0
    virtual const DOMStringListgetParameterNames () const =0
     The list of the parameters supported by this DOMConfiguration object and for which at least one value can be set by the application.
    Destructor
    virtual ~DOMConfiguration ()
     Destructor.

    Protected Member Functions

    Hidden constructors
     DOMConfiguration ()


    Detailed Description

    The DOMConfiguration interface represents the configuration of a document and maintains a table of recognized parameters.

    Using the configuration, it is possible to change Document.normalizeDocument behavior, such as replacing CDATASection nodes with Text nodes or specifying the type of the schema that must be used when the validation of the Document is requested. DOMConfiguration objects are also used in [DOM Level 3 Load and Save] in the DOMLSParser and DOMLSSerializer interfaces.

    The DOMConfiguration distinguish two types of parameters: boolean (boolean parameters) and DOMUserData (parameters). The names used by the DOMConfiguration object are defined throughout the DOM Level 3 specifications. Names are case-insensitive. To avoid possible conflicts, as a convention, names referring to boolean parameters and parameters defined outside the DOM specification should be made unique. Names are recommended to follow the XML name production rule but it is not enforced by the DOM implementation. DOM Level 3 Core Implementations are required to recognize all boolean parameters and parameters defined in this specification. Each boolean parameter state or parameter value may then be supported or not by the implementation. Refer to their definition to know if a state or a value must be supported or not.

    Note: Parameters are similar to features and properties used in SAX2 [SAX].

    The following list of parameters defined in the DOM:

    "error-handler" [required] A DOMErrorHandler object. If an error is encountered in the document, the implementation will call back the DOMErrorHandler registered using this parameter. When called, DOMError.relatedData will contain the closest node to where the error occured. If the implementation is unable to determine the node where the error occurs, DOMError.relatedData will contain the Document node. Mutations to the document from within an error handler will result in implementation dependent behaviour.

    "schema-type" [optional] A DOMString object containing an absolute URI and representing the type of the schema language used to validate a document against. Note that no lexical checking is done on the absolute URI. If this parameter is not set, a default value may be provided by the implementation, based on the schema languages supported and on the schema language used at load time.

    Note: For XML Schema [XML Schema Part 1], applications must use the value "http://www.w3.org/2001/XMLSchema". For XML DTD [XML 1.0], applications must use the value "http://www.w3.org/TR/REC-xml". Other schema languages are outside the scope of the W3C and therefore should recommend an absolute URI in order to use this method.

    "schema-location" [optional] A DOMString object containing a list of URIs, separated by white spaces (characters matching the nonterminal production S defined in section 2.3 [XML 1.0]), that represents the schemas against which validation should occur. The types of schemas referenced in this list must match the type specified with schema-type, otherwise the behaviour of an implementation is undefined. If the schema type is XML Schema [XML Schema Part 1], only one of the XML Schemas in the list can be with no namespace. If validation occurs against a namespace aware schema, i.e. XML Schema, and the targetNamespace of a schema (specified using this property) matches the targetNamespace of a schema occurring in the instance document, i.e in schemaLocation attribute, the schema specified by the user using this property will be used (i.e., in XML Schema the schemaLocation attribute in the instance document or on the import element will be effectively ignored).

    Note: It is illegal to set the schema-location parameter if the schema-type parameter value is not set. It is strongly recommended that DOMInputSource.baseURI will be set, so that an implementation can successfully resolve any external entities referenced.

    The following list of boolean parameters (features) defined in the DOM:

    "canonical-form"

    true [optional] Canonicalize the document according to the rules specified in [Canonical XML]. Note that this is limited to what can be represented in the DOM. In particular, there is no way to specify the order of the attributes in the DOM.

    false [required] (default) Do not canonicalize the document.

    "cdata-sections"

    true [required] (default) Keep CDATASection nodes in the document.

    false [required] Transform CDATASection nodes in the document into Text nodes. The new Text node is then combined with any adjacent Text node.

    "comments"

    true [required] (default) Keep Comment nodes in the document.

    false [required] Discard Comment nodes in the Document.

    "datatype-normalization"

    true [required] Exposed normalized values in the tree.

    false [required] (default) Do not perform normalization on the tree.

    "discard-default-content"

    true [required] (default) Use whatever information available to the implementation (i.e. XML schema, DTD, the specified flag on Attr nodes, and so on) to decide what attributes and content should be discarded or not. Note that the specified flag on Attr nodes in itself is not always reliable, it is only reliable when it is set to false since the only case where it can be set to false is if the attribute was created by the implementation. The default content won't be removed if an implementation does not have any information available.

    false [required] Keep all attributes and all content.

    "entities"

    true [required] Keep EntityReference and Entity nodes in the document.

    false [required] (default) Remove all EntityReference and Entity nodes from the document, putting the entity expansions directly in their place. Text nodes are into "normal" form. Only EntityReference nodes to non-defined entities are kept in the document.

    "infoset"

    true [required] Only keep in the document the information defined in the XML Information Set [XML Information set]. This forces the following features to false: namespace-declarations, validate-if-schema, entities, datatype-normalization, cdata-sections. This forces the following features to true: whitespace-in-element-content, comments, namespaces. Other features are not changed unless explicitly specified in the description of the features. Note that querying this feature with getFeature returns true only if the individual features specified above are appropriately set.

    false Setting infoset to false has no effect.

    "namespaces"

    true [required] (default) Perform the namespace processing as defined in [XML Namespaces].

    false [optional] Do not perform the namespace processing.

    "namespace-declarations"

    true [required] (default) Include namespace declaration attributes, specified or defaulted from the schema or the DTD, in the document. See also the section Declaring Namespaces in [XML Namespaces].

    false [required] Discard all namespace declaration attributes. The Namespace prefixes are retained even if this feature is set to false.

    "normalize-characters"

    true [optional] Perform the W3C Text Normalization of the characters [CharModel] in the document.

    false [required] (default) Do not perform character normalization.

    "split-cdata-sections"

    true [required] (default) Split CDATA sections containing the CDATA section termination marker ']]>'. When a CDATA section is split a warning is issued.

    false [required] Signal an error if a CDATASection contains an unrepresentable character.

    "validate"

    true [optional] Require the validation against a schema (i.e. XML schema, DTD, any other type or representation of schema) of the document as it is being normalized as defined by [XML 1.0]. If validation errors are found, or no schema was found, the error handler is notified. Note also that normalized values will not be exposed to the schema in used unless the feature datatype-normalization is true.

    Note: validate-if-schema and validate are mutually exclusive, setting one of them to true will set the other one to false.

    false [required] (default) Only XML 1.0 non-validating processing must be done. Note that validation might still happen if validate-if-schema is true.

    "validate-if-schema"

    true [optional] Enable validation only if a declaration for the document element can be found (independently of where it is found, i.e. XML schema, DTD, or any other type or representation of schema). If validation errors are found, the error handler is notified. Note also that normalized values will not be exposed to the schema in used unless the feature datatype-normalization is true.

    Note: validate-if-schema and validate are mutually exclusive, setting one of them to true will set the other one to false.

    false [required] (default) No validation should be performed if the document has a schema. Note that validation must still happen if validate is true.

    "element-content-whitespace"

    true [required] (default) Keep all white spaces in the document.

    false [optional] Discard white space in element content while normalizing. The implementation is expected to use the isWhitespaceInElementContent flag on Text nodes to determine if a text node should be written out or not.

    The resolutions of entities is done using Document.baseURI. However, when the features "LS-Load" or "LS-Save" defined in [DOM Level 3 Load and Save] are supported by the DOM implementation, the parameter "entity-resolver" can also be used on DOMConfiguration objects attached to Document nodes. If this parameter is set, Document.normalizeDocument will invoke the entity resolver instead of using Document.baseURI.


    Constructor & Destructor Documentation

    DOMConfiguration::DOMConfiguration (  )  [protected]

    virtual DOMConfiguration::~DOMConfiguration (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual void DOMConfiguration::setParameter ( const XMLCh name,
    const void *  value 
    ) [pure virtual]

    Set the value of a parameter.

    Parameters:
    name The name of the parameter to set.
    value The new value or null if the user wishes to unset the parameter. While the type of the value parameter is defined as DOMUserData, the object type must match the type defined by the definition of the parameter. For example, if the parameter is "error-handler", the value must be of type DOMErrorHandler
    Exceptions:
    DOMException (NOT_SUPPORTED_ERR) Raised when the parameter name is recognized but the requested value cannot be set.
    DOMException (NOT_FOUND_ERR) Raised when the parameter name is not recognized.
    Since:
    DOM level 3

    virtual void DOMConfiguration::setParameter ( const XMLCh name,
    bool  value 
    ) [pure virtual]

    virtual const void* DOMConfiguration::getParameter ( const XMLCh name  )  const [pure virtual]

    Return the value of a parameter if known.

    Parameters:
    name The name of the parameter.
    Returns:
    The current object associated with the specified parameter or null if no object has been associated or if the parameter is not supported.
    Exceptions:
    DOMException (NOT_FOUND_ERR) Raised when the i boolean parameter name is not recognized.
    Since:
    DOM level 3

    virtual bool DOMConfiguration::canSetParameter ( const XMLCh name,
    const void *  value 
    ) const [pure virtual]

    Check if setting a parameter to a specific value is supported.

    Parameters:
    name The name of the parameter to check.
    value An object. if null, the returned value is true.
    Returns:
    true if the parameter could be successfully set to the specified value, or false if the parameter is not recognized or the requested value is not supported. This does not change the current value of the parameter itself.
    Since:
    DOM level 3

    virtual bool DOMConfiguration::canSetParameter ( const XMLCh name,
    bool  value 
    ) const [pure virtual]

    virtual const DOMStringList* DOMConfiguration::getParameterNames (  )  const [pure virtual]

    The list of the parameters supported by this DOMConfiguration object and for which at least one value can be set by the application.

    Note that this list can also contain parameter names defined outside this specification.

    Returns:
    The list of parameters that can be used with setParameter/getParameter
    Since:
    DOM level 3


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XSObject_8hpp-source.html0000644000175000017500000002650011363620005022301 0ustar borisboris Xerces-C++: XSObject.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/MemoryManager_8hpp.html0000644000175000017500000000461211363620005022065 0ustar borisboris Xerces-C++: MemoryManager.hpp File Reference

    MemoryManager.hpp File Reference

    Go to the source code of this file.

    Classes

    class  MemoryManager
     Configurable memory manager. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_MEMORYMANAGER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_MEMORYMANAGER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMLSOutput-members.html0000644000175000017500000000727111363620005023144 0ustar borisboris Xerces-C++: Member List

    DOMLSOutput Member List

    This is the complete list of members for DOMLSOutput, including all inherited members.

    DOMLSOutput()DOMLSOutput [protected]
    getByteStream() const =0DOMLSOutput [pure virtual]
    getEncoding() const =0DOMLSOutput [pure virtual]
    getSystemId() const =0DOMLSOutput [pure virtual]
    release()=0DOMLSOutput [pure virtual]
    setByteStream(XMLFormatTarget *stream)=0DOMLSOutput [pure virtual]
    setEncoding(const XMLCh *const encodingStr)=0DOMLSOutput [pure virtual]
    setSystemId(const XMLCh *const systemId)=0DOMLSOutput [pure virtual]
    ~DOMLSOutput()DOMLSOutput [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLNumber_8hpp-source.html0000644000175000017500000002170411363620005022432 0ustar borisboris Xerces-C++: XMLNumber.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/SAXParser_8hpp-source.html0000644000175000017500000023066211363620004022435 0ustar borisboris Xerces-C++: SAXParser.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLErrorReporter_8hpp.html0000644000175000017500000000472011363620005022517 0ustar borisboris Xerces-C++: XMLErrorReporter.hpp File Reference

    XMLErrorReporter.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLErrorReporter
     This abstract class defines a callback mechanism for the scanner. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_XMLERRORREPORTER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XMLERRORREPORTER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMLSInput_8hpp-source.html0000644000175000017500000003247111363620004022521 0ustar borisboris Xerces-C++: DOMLSInput.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLUri_8hpp-source.html0000644000175000017500000012605611363620005021747 0ustar borisboris Xerces-C++: XMLUri.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_0x73.html0000644000175000017500000012637011363620005021162 0ustar borisboris Xerces-C++: Class Members
    Here is a list of all class members with links to the classes they belong to:

    - s -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/doxygen.css0000644000175000017500000002161011363620004017660 0ustar borisborisBODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV { font-family: Geneva, Arial, Helvetica, sans-serif; } BODY,TD { font-size: 90%; } H1 { text-align: center; font-size: 160%; } H2 { font-size: 120%; } H3 { font-size: 100%; } CAPTION { font-weight: bold } DIV.qindex { width: 100%; background-color: #e8eef2; border: 1px solid #84b0c7; text-align: center; margin: 2px; padding: 2px; line-height: 140%; } DIV.navpath { width: 100%; background-color: #e8eef2; border: 1px solid #84b0c7; text-align: center; margin: 2px; padding: 2px; line-height: 140%; } DIV.navtab { background-color: #e8eef2; border: 1px solid #84b0c7; text-align: center; margin: 2px; margin-right: 15px; padding: 2px; } TD.navtab { font-size: 70%; } A.qindex { text-decoration: none; font-weight: bold; color: #1A419D; } A.qindex:visited { text-decoration: none; font-weight: bold; color: #1A419D } A.qindex:hover { text-decoration: none; background-color: #ddddff; } A.qindexHL { text-decoration: none; font-weight: bold; background-color: #6666cc; color: #ffffff; border: 1px double #9295C2; } A.qindexHL:hover { text-decoration: none; background-color: #6666cc; color: #ffffff; } A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff } A.el { text-decoration: none; font-weight: bold } A.elRef { font-weight: bold } A.code:link { text-decoration: none; font-weight: normal; color: #0000FF } A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF } A.codeRef:link { font-weight: normal; color: #0000FF } A.codeRef:visited { font-weight: normal; color: #0000FF } A:hover { text-decoration: none; background-color: #f2f2ff } DL.el { margin-left: -1cm } .fragment { font-family: monospace, fixed; font-size: 95%; } PRE.fragment { border: 1px solid #CCCCCC; background-color: #f5f5f5; margin-top: 4px; margin-bottom: 4px; margin-left: 2px; margin-right: 8px; padding-left: 6px; padding-right: 6px; padding-top: 4px; padding-bottom: 4px; } 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; font-size: 90% } BODY { background: white; color: black; margin-right: 20px; margin-left: 20px; } TD.indexkey { background-color: #e8eef2; font-weight: bold; padding-right : 10px; padding-top : 2px; padding-left : 10px; padding-bottom : 2px; margin-left : 0px; margin-right : 0px; margin-top : 2px; margin-bottom : 2px; border: 1px solid #CCCCCC; } TD.indexvalue { background-color: #e8eef2; font-style: italic; padding-right : 10px; padding-top : 2px; padding-left : 10px; padding-bottom : 2px; margin-left : 0px; margin-right : 0px; margin-top : 2px; margin-bottom : 2px; border: 1px solid #CCCCCC; } TR.memlist { background-color: #f0f0f0; } P.formulaDsp { text-align: center; } IMG.formulaDsp { } IMG.formulaInl { vertical-align: middle; } 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 } .mdescLeft { padding: 0px 8px 4px 8px; font-size: 80%; font-style: italic; background-color: #FAFAFA; border-top: 1px none #E0E0E0; border-right: 1px none #E0E0E0; border-bottom: 1px none #E0E0E0; border-left: 1px none #E0E0E0; margin: 0px; } .mdescRight { padding: 0px 8px 4px 8px; font-size: 80%; font-style: italic; background-color: #FAFAFA; border-top: 1px none #E0E0E0; border-right: 1px none #E0E0E0; border-bottom: 1px none #E0E0E0; border-left: 1px none #E0E0E0; margin: 0px; } .memItemLeft { padding: 1px 0px 0px 8px; margin: 4px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #E0E0E0; border-right-color: #E0E0E0; border-bottom-color: #E0E0E0; border-left-color: #E0E0E0; border-top-style: solid; border-right-style: none; border-bottom-style: none; border-left-style: none; background-color: #FAFAFA; font-size: 80%; } .memItemRight { padding: 1px 8px 0px 8px; margin: 4px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #E0E0E0; border-right-color: #E0E0E0; border-bottom-color: #E0E0E0; border-left-color: #E0E0E0; border-top-style: solid; border-right-style: none; border-bottom-style: none; border-left-style: none; background-color: #FAFAFA; font-size: 80%; } .memTemplItemLeft { padding: 1px 0px 0px 8px; margin: 4px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #E0E0E0; border-right-color: #E0E0E0; border-bottom-color: #E0E0E0; border-left-color: #E0E0E0; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; background-color: #FAFAFA; font-size: 80%; } .memTemplItemRight { padding: 1px 8px 0px 8px; margin: 4px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #E0E0E0; border-right-color: #E0E0E0; border-bottom-color: #E0E0E0; border-left-color: #E0E0E0; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; background-color: #FAFAFA; font-size: 80%; } .memTemplParams { padding: 1px 0px 0px 8px; margin: 4px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #E0E0E0; border-right-color: #E0E0E0; border-bottom-color: #E0E0E0; border-left-color: #E0E0E0; border-top-style: solid; border-right-style: none; border-bottom-style: none; border-left-style: none; color: #606060; background-color: #FAFAFA; font-size: 80%; } .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%; } a { color: #1A41A8; } a:visited { color: #2A3798; } .dirtab { padding: 4px; border-collapse: collapse; border: 1px solid #84b0c7; } TH.dirtab { background: #e8eef2; font-weight: bold; } HR { height: 1px; border: none; border-top: 1px solid black; } /* Style 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: 4px; background-color: #eef3f5; border-width: 1px; border-style: solid; border-color: #dedeee; -moz-border-radius: 8px 8px 8px 8px; } .memname { white-space: nowrap; font-weight: bold; } .memdoc{ padding-left: 10px; } .memproto { background-color: #d5e1e8; width: 100%; border-width: 1px; border-style: solid; border-color: #84b0c7; font-weight: bold; -moz-border-radius: 8px 8px 8px 8px; } .paramkey { text-align: right; } .paramtype { white-space: nowrap; } .paramname { color: #602020; font-style: italic; white-space: nowrap; } /* End Styling for detailed member documentation */ /* 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%; } xerces-c-3.1.1/doc/html/apiDocs-3/ValidationContext_8hpp-source.html0000644000175000017500000003360111363620004024256 0ustar borisboris Xerces-C++: ValidationContext.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_func_0x77.html0000644000175000017500000001333511363620005022175 0ustar borisboris Xerces-C++: Class Members - Functions
     

    - w -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classAttributeList-members.html0000644000175000017500000000743011363620005023641 0ustar borisboris Xerces-C++: Member List

    AttributeList Member List

    This is the complete list of members for AttributeList, including all inherited members.

    AttributeList()AttributeList
    getLength() const =0AttributeList [pure virtual]
    getName(const XMLSize_t index) const =0AttributeList [pure virtual]
    getType(const XMLSize_t index) const =0AttributeList [pure virtual]
    getType(const XMLCh *const name) const =0AttributeList [pure virtual]
    getValue(const XMLSize_t index) const =0AttributeList [pure virtual]
    getValue(const XMLCh *const name) const =0AttributeList [pure virtual]
    getValue(const char *const name) const =0AttributeList [pure virtual]
    ~AttributeList()AttributeList [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMNotation.png0000644000175000017500000000054211363620005021362 0ustar borisboris‰PNG  IHDRXPoè¯jPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØføIDATH‰íÔQ àöÅç¶7¨Þ@/äÓî[ dN`kÌ–@L!ðÙáo2x<ï‡ÇãÊX™­z›Em§´°«TÌ«¨ì`õ¦Z°ÚJmÉyêaû$,~öi»KXÇX“ÔŠ™XiHFù²;¯r–’s7#câ?pèUÐïÎþßø¶œ…—%p>/‰'žxâæÀ:þ8¼*Fû ¤oú6ÔBì*óHH_x۹Σ­)kA@ü‹í„2&¿N.˜ºPWS c>,9€©Ý¹¤Aåñ<À«œ©älAX.ŒXÒ¨ø¼¿{âŠ#¯‚¸ÖªN[p«ýIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/XMLStringTokenizer_8hpp-source.html0000644000175000017500000004146611363620005024352 0ustar borisboris Xerces-C++: XMLStringTokenizer.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classHash2KeysSetOfEnumerator-members.html0000644000175000017500000001153011363620006025643 0ustar borisboris Xerces-C++: Member List

    Hash2KeysSetOfEnumerator< THasher > Member List

    This is the complete list of members for Hash2KeysSetOfEnumerator< THasher >, including all inherited members.

    Hash2KeysSetOfEnumerator(Hash2KeysSetOf< THasher > *const toEnum, const bool adopt=false, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)Hash2KeysSetOfEnumerator< THasher >
    hasMoreElements() const Hash2KeysSetOfEnumerator< THasher >
    nextElementKey(const void *&, int &)Hash2KeysSetOfEnumerator< THasher >
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    Reset()Hash2KeysSetOfEnumerator< THasher >
    setPrimaryKey(const void *key)Hash2KeysSetOfEnumerator< THasher >
    XMemory()XMemory [protected]
    ~Hash2KeysSetOfEnumerator()Hash2KeysSetOfEnumerator< THasher > [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLValidityCodes_8hpp-source.html0000644000175000017500000010643411363620005023751 0ustar borisboris Xerces-C++: XMLValidityCodes.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLStringTokenizer-members.html0000644000175000017500000001111011363620006024553 0ustar borisboris Xerces-C++: Member List

    XMLStringTokenizer Member List

    This is the complete list of members for XMLStringTokenizer, including all inherited members.

    countTokens()XMLStringTokenizer
    hasMoreTokens()XMLStringTokenizer
    nextToken()XMLStringTokenizer
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    XMemory()XMemory [protected]
    XMLStringTokenizer(const XMLCh *const srcStr, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLStringTokenizer
    XMLStringTokenizer(const XMLCh *const srcStr, const XMLCh *const delim, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLStringTokenizer
    ~XMLStringTokenizer()XMLStringTokenizer


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSMultiValueFacet.html0000644000175000017500000004011411363620006022714 0ustar borisboris Xerces-C++: XSMultiValueFacet Class Reference

    XSMultiValueFacet Class Reference

    Inheritance diagram for XSMultiValueFacet:

    XSObject XMemory

    List of all members.

    Public Member Functions

    Constructors
     XSMultiValueFacet (XSSimpleTypeDefinition::FACET facetKind, StringList *lexicalValues, bool isFixed, XSAnnotation *const headAnnot, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     The default constructor.
    Destructor
     ~XSMultiValueFacet ()
    XSMultiValueFacet methods
    XSSimpleTypeDefinition::FACET getFacetKind () const
    StringListgetLexicalFacetValues ()
    bool isFixed () const
     Check whether a facet value is fixed.
    XSAnnotationListgetAnnotations ()

    Protected Attributes

    XSSimpleTypeDefinition::FACET fFacetKind
    bool fIsFixed
    StringListfLexicalValues
    XSAnnotationListfXSAnnotationList


    Constructor & Destructor Documentation

    XSMultiValueFacet::XSMultiValueFacet ( XSSimpleTypeDefinition::FACET  facetKind,
    StringList lexicalValues,
    bool  isFixed,
    XSAnnotation *const   headAnnot,
    XSModel *const   xsModel,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    The default constructor.

    Parameters:
    facetKind 
    lexicalValues 
    isFixed 
    headAnnot 
    xsModel 
    manager The configurable memory manager

    XSMultiValueFacet::~XSMultiValueFacet (  ) 


    Member Function Documentation

    XSSimpleTypeDefinition::FACET XSMultiValueFacet::getFacetKind (  )  const

    Returns:
    An indication as to the facet's type; see XSSimpleTypeDefinition::FACET

    References fFacetKind.

    StringList * XSMultiValueFacet::getLexicalFacetValues (  ) 

    Returns:
    Returns the values of a constraining facet.

    References fLexicalValues.

    bool XSMultiValueFacet::isFixed (  )  const

    Check whether a facet value is fixed.

    References fIsFixed.

    XSAnnotationList * XSMultiValueFacet::getAnnotations (  ) 

    Returns:
    the annotations belonging to this facet's values

    References fXSAnnotationList.


    Member Data Documentation

    bool XSMultiValueFacet::fIsFixed [protected]

    Referenced by isFixed().


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMErrorHandler-members.html0000644000175000017500000000444011363620005023767 0ustar borisboris Xerces-C++: Member List

    DOMErrorHandler Member List

    This is the complete list of members for DOMErrorHandler, including all inherited members.

    DOMErrorHandler()DOMErrorHandler [protected]
    handleError(const DOMError &domError)=0DOMErrorHandler [pure virtual]
    ~DOMErrorHandler()DOMErrorHandler [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMLSParserFilter.html0000644000175000017500000004046211363620005022615 0ustar borisboris Xerces-C++: DOMLSParserFilter Class Reference

    DOMLSParserFilter Class Reference

    List of all members.

    Public Types

    Public Contants
    enum  FilterAction { FILTER_ACCEPT = 1, FILTER_REJECT = 2, FILTER_SKIP = 3, FILTER_INTERRUPT = 4 }
     Constants returned by acceptNode. More...

    Public Member Functions

    Destructor
    virtual ~DOMLSParserFilter ()
     Destructor.
    Functions introduced in DOM Level 3
    virtual FilterAction acceptNode (DOMNode *node)=0
     This method will be called by the parser at the completion of the parsing of each node.
    virtual FilterAction startElement (DOMElement *node)=0
     The parser will call this method after each DOMElement start tag has been scanned, but before the remainder of the DOMElement is processed.
    virtual DOMNodeFilter::ShowType getWhatToShow () const =0
     Tells the DOMLSParser what types of nodes to show to the method DOMLSParserFilter::acceptNode.

    Protected Member Functions

    Hidden constructors
     DOMLSParserFilter ()


    Member Enumeration Documentation

    Constants returned by acceptNode.

    FILTER_ACCEPT: Accept the node.

    FILTER_REJECT: Reject the node and its children.

    FILTER_SKIP: Skip this single node. The children of this node will still be considered.

    FILTER_INTERRUPT: Interrupt the normal processing of the document.

    Since:
    DOM Level 3
    Enumerator:
    FILTER_ACCEPT 
    FILTER_REJECT 
    FILTER_SKIP 
    FILTER_INTERRUPT 


    Constructor & Destructor Documentation

    DOMLSParserFilter::DOMLSParserFilter (  )  [protected]

    virtual DOMLSParserFilter::~DOMLSParserFilter (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual FilterAction DOMLSParserFilter::acceptNode ( DOMNode node  )  [pure virtual]

    This method will be called by the parser at the completion of the parsing of each node.

    The node and all of its descendants will exist and be complete. The parent node will also exist, although it may be incomplete, i.e. it may have additional children that have not yet been parsed. Attribute nodes are never passed to this function. From within this method, the new node may be freely modified - children may be added or removed, text nodes modified, etc. The state of the rest of the document outside this node is not defined, and the affect of any attempt to navigate to, or to modify any other part of the document is undefined. For validating parsers, the checks are made on the original document, before any modification by the filter. No validity checks are made on any document modifications made by the filter. If this new node is rejected, the parser might reuse the new node and any of its descendants.

    Parameters:
    node The newly constructed element. At the time this method is called, the element is complete - it has all of its children (and their children, recursively) and attributes, and is attached as a child to its parent.
    Returns:
    One of the FilterAction enum

    virtual FilterAction DOMLSParserFilter::startElement ( DOMElement node  )  [pure virtual]

    The parser will call this method after each DOMElement start tag has been scanned, but before the remainder of the DOMElement is processed.

    The intent is to allow the element, including any children, to be efficiently skipped. Note that only element nodes are passed to the startElement function. The element node passed to startElement for filtering will include all of the attributes, but none of the children nodes. The DOMElement may not yet be in place in the document being constructed (it may not have a parent node.) A startElement filter function may access or change the attributes for the DOMElement. Changing namespace declarations will have no effect on namespace resolution by the parser.

    Parameters:
    node The newly encountered element. At the time this method is called, the element is incomplete - it will have its attributes, but no children.
    Returns:
    One of the FilterAction enum

    virtual DOMNodeFilter::ShowType DOMLSParserFilter::getWhatToShow (  )  const [pure virtual]

    Tells the DOMLSParser what types of nodes to show to the method DOMLSParserFilter::acceptNode.

    If a node is not shown to the filter using this attribute, it is automatically included in the DOM document being built. See DOMNodeFilter for definition of the constants. The constants SHOW_ATTRIBUTE, SHOW_DOCUMENT, SHOW_DOCUMENT_TYPE, SHOW_NOTATION, SHOW_ENTITY, and SHOW_DOCUMENT_FRAGMENT are meaningless here. Those nodes will never be passed to DOMLSParserFilter::acceptNode.

    Returns:
    The constants of what types of nodes to show.
    Since:
    DOM Level 3


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/UnexpectedEOFException_8hpp-source.html0000644000175000017500000001103211363620004025126 0ustar borisboris Xerces-C++: UnexpectedEOFException.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_eval_0x67.html0000644000175000017500000001104611363620005022165 0ustar borisboris Xerces-C++: Class Members - Enumerator
     

    - g -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSValue-members.html0000644000175000017500000005220411363620006022371 0ustar borisboris Xerces-C++: Member List

    XSValue Member List

    This is the complete list of members for XSValue, including all inherited members.

    DataGroup enum nameXSValue
    DataType enum nameXSValue
    dg_datetimes enum valueXSValue
    dg_numerics enum valueXSValue
    dg_strings enum valueXSValue
    DoubleFloatType enum nameXSValue
    DoubleFloatType_NaN enum valueXSValue
    DoubleFloatType_NegINF enum valueXSValue
    DoubleFloatType_Normal enum valueXSValue
    DoubleFloatType_PosINF enum valueXSValue
    DoubleFloatType_Zero enum valueXSValue
    dt_anyURI enum valueXSValue
    dt_base64Binary enum valueXSValue
    dt_boolean enum valueXSValue
    dt_byte enum valueXSValue
    dt_date enum valueXSValue
    dt_dateTime enum valueXSValue
    dt_decimal enum valueXSValue
    dt_double enum valueXSValue
    dt_duration enum valueXSValue
    dt_ENTITIES enum valueXSValue
    dt_ENTITY enum valueXSValue
    dt_float enum valueXSValue
    dt_gDay enum valueXSValue
    dt_gMonth enum valueXSValue
    dt_gMonthDay enum valueXSValue
    dt_gYear enum valueXSValue
    dt_gYearMonth enum valueXSValue
    dt_hexBinary enum valueXSValue
    dt_ID enum valueXSValue
    dt_IDREF enum valueXSValue
    dt_IDREFS enum valueXSValue
    dt_int enum valueXSValue
    dt_integer enum valueXSValue
    dt_language enum valueXSValue
    dt_long enum valueXSValue
    dt_MAXCOUNT enum valueXSValue
    dt_Name enum valueXSValue
    dt_NCName enum valueXSValue
    dt_negativeInteger enum valueXSValue
    dt_NMTOKEN enum valueXSValue
    dt_NMTOKENS enum valueXSValue
    dt_nonNegativeInteger enum valueXSValue
    dt_nonPositiveInteger enum valueXSValue
    dt_normalizedString enum valueXSValue
    dt_NOTATION enum valueXSValue
    dt_positiveInteger enum valueXSValue
    dt_QName enum valueXSValue
    dt_short enum valueXSValue
    dt_string enum valueXSValue
    dt_time enum valueXSValue
    dt_token enum valueXSValue
    dt_unsignedByte enum valueXSValue
    dt_unsignedInt enum valueXSValue
    dt_unsignedLong enum valueXSValue
    dt_unsignedShort enum valueXSValue
    fDataXSValue
    getActualValue(const XMLCh *const content, DataType datatype, Status &status, XMLVersion version=ver_10, bool toValidate=true, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSValue [static]
    getCanonicalRepresentation(const XMLCh *const content, DataType datatype, Status &status, XMLVersion version=ver_10, bool toValidate=true, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSValue [static]
    getDataType(const XMLCh *const dtString)XSValue [static]
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    st_CantCreateRegEx enum valueXSValue
    st_FOCA0001 enum valueXSValue
    st_FOCA0002 enum valueXSValue
    st_FOCA0003 enum valueXSValue
    st_FODT0003 enum valueXSValue
    st_Init enum valueXSValue
    st_NoActVal enum valueXSValue
    st_NoCanRep enum valueXSValue
    st_NoContent enum valueXSValue
    st_NotSupported enum valueXSValue
    st_UnknownType enum valueXSValue
    Status enum nameXSValue
    validate(const XMLCh *const content, DataType datatype, Status &status, XMLVersion version=ver_10, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSValue [static]
    ver_10 enum valueXSValue
    ver_11 enum valueXSValue
    XMemory()XMemory [protected]
    XMLInitializer classXSValue [friend]
    XMLVersion enum nameXSValue
    ~XSValue()XSValue


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_func_0x64.html0000644000175000017500000003425111363620005022171 0ustar borisboris Xerces-C++: Class Members - Functions
     

    - d -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMNodeFilter_8hpp-source.html0000644000175000017500000003042211363620004023210 0ustar borisboris Xerces-C++: DOMNodeFilter.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DefaultPanicHandler_8hpp.html0000644000175000017500000000472111363620005023160 0ustar borisboris Xerces-C++: DefaultPanicHandler.hpp File Reference

    DefaultPanicHandler.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DefaultPanicHandler
     Receive notification of panic. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DEFAULT_PANICHANDLER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DEFAULT_PANICHANDLER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMLSParser_8hpp.html0000644000175000017500000000511611363620005021355 0ustar borisboris Xerces-C++: DOMLSParser.hpp File Reference

    DOMLSParser.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMLSParser
     DOMLSParser provides an API for parsing XML documents and building the corresponding DOM document tree. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMLSPARSER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMLSPARSER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_eval_0x72.html0000644000175000017500000001443411363620005022165 0ustar borisboris Xerces-C++: Class Members - Enumerator
     

    - r -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_eval_0x62.html0000644000175000017500000001757311363620005022173 0ustar borisboris Xerces-C++: Class Members - Enumerator
     

    - b -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMDocument.html0000644000175000017500000032146511363620005021537 0ustar borisboris Xerces-C++: DOMDocument Class Reference

    DOMDocument Class Reference

    The DOMDocument interface represents the entire XML document. More...

    Inheritance diagram for DOMDocument:

    DOMDocumentRange DOMXPathEvaluator DOMDocumentTraversal DOMNode

    List of all members.

    Public Member Functions

    Destructor
    virtual ~DOMDocument ()
     Destructor.
    Functions introduced in DOM Level 1
    virtual DOMElementcreateElement (const XMLCh *tagName)=0
     Creates an element of the type specified.
    virtual DOMDocumentFragmentcreateDocumentFragment ()=0
     Creates an empty DOMDocumentFragment object.
    virtual DOMTextcreateTextNode (const XMLCh *data)=0
     Creates a DOMText node given the specified string.
    virtual DOMCommentcreateComment (const XMLCh *data)=0
     Creates a DOMComment node given the specified string.
    virtual DOMCDATASectioncreateCDATASection (const XMLCh *data)=0
     Creates a DOMCDATASection node whose value is the specified string.
    virtual DOMProcessingInstructioncreateProcessingInstruction (const XMLCh *target, const XMLCh *data)=0
     Creates a DOMProcessingInstruction node given the specified name and data strings.
    virtual DOMAttrcreateAttribute (const XMLCh *name)=0
     Creates an DOMAttr of the given name.
    virtual DOMEntityReferencecreateEntityReference (const XMLCh *name)=0
     Creates an DOMEntityReference object.
    virtual DOMDocumentTypegetDoctype () const =0
     The Document Type Declaration (see DOMDocumentType) associated with this document.
    virtual DOMImplementationgetImplementation () const =0
     The DOMImplementation object that handles this document.
    virtual DOMElementgetDocumentElement () const =0
     This is a convenience attribute that allows direct access to the child node that is the root element of the document.
    virtual DOMNodeListgetElementsByTagName (const XMLCh *tagname) const =0
     Returns a DOMNodeList of all the DOMElement(s) with a given tag name in the order in which they are encountered in a preorder traversal of the DOMDocument tree.
    Functions introduced in DOM Level 2.
    virtual DOMNodeimportNode (const DOMNode *importedNode, bool deep)=0
     Imports a node from another document to this document.
    virtual DOMElementcreateElementNS (const XMLCh *namespaceURI, const XMLCh *qualifiedName)=0
     Creates an element of the given qualified name and namespace URI.
    virtual DOMAttrcreateAttributeNS (const XMLCh *namespaceURI, const XMLCh *qualifiedName)=0
     Creates an attribute of the given qualified name and namespace URI.
    virtual DOMNodeListgetElementsByTagNameNS (const XMLCh *namespaceURI, const XMLCh *localName) const =0
     Returns a DOMNodeList of all the DOMElement(s) with a given local name and namespace URI in the order in which they are encountered in a preorder traversal of the DOMDocument tree.
    virtual DOMElementgetElementById (const XMLCh *elementId) const =0
     Returns the DOMElement whose ID is given by elementId.
    Functions introduced in DOM Level 3.
    virtual const XMLChgetInputEncoding () const =0
     An attribute specifying the encoding used for this document at the time of the parsing.
    virtual const XMLChgetXmlEncoding () const =0
     An attribute specifying, as part of the XML declaration, the encoding of this document.
    virtual bool getXmlStandalone () const =0
     An attribute specifying, as part of the XML declaration, whether this document is standalone.
    virtual void setXmlStandalone (bool standalone)=0
     An attribute specifying, as part of the XML declaration, whether this document is standalone.
    virtual const XMLChgetXmlVersion () const =0
     An attribute specifying, as part of the XML declaration, the version number of this document.
    virtual void setXmlVersion (const XMLCh *version)=0
     An attribute specifying, as part of the XML declaration, the version number of this document.
    virtual const XMLChgetDocumentURI () const =0
     The location of the document or null if undefined.
    virtual void setDocumentURI (const XMLCh *documentURI)=0
     The location of the document or null if undefined.
    virtual bool getStrictErrorChecking () const =0
     An attribute specifying whether errors checking is enforced or not.
    virtual void setStrictErrorChecking (bool strictErrorChecking)=0
     An attribute specifying whether errors checking is enforced or not.
    virtual DOMNoderenameNode (DOMNode *n, const XMLCh *namespaceURI, const XMLCh *qualifiedName)=0
     Rename an existing node.
    virtual DOMNodeadoptNode (DOMNode *source)=0
     Changes the ownerDocument of a node, its children, as well as the attached attribute nodes if there are any.
    virtual void normalizeDocument ()=0
     This method acts as if the document was going through a save and load cycle, putting the document in a "normal" form.
    virtual DOMConfigurationgetDOMConfig () const =0
     The configuration used when DOMDocument::normalizeDocument is invoked.
    Non-standard extension
    virtual DOMEntitycreateEntity (const XMLCh *name)=0
     Non-standard extension.
    virtual DOMDocumentTypecreateDocumentType (const XMLCh *name)=0
     Non-standard extension.
    virtual DOMDocumentTypecreateDocumentType (const XMLCh *qName, const XMLCh *, const XMLCh *)
    virtual DOMNotationcreateNotation (const XMLCh *name)=0
     Non-standard extension.
    virtual DOMElementcreateElementNS (const XMLCh *namespaceURI, const XMLCh *qualifiedName, const XMLFileLoc lineNum, const XMLFileLoc columnNum)=0
     Non-standard extension.

    Protected Member Functions

    Hidden constructors
     DOMDocument ()


    Detailed Description

    The DOMDocument interface represents the entire XML document.

    Conceptually, it is the root of the document tree, and provides the primary access to the document's data.

    Since elements, text nodes, comments, processing instructions, etc. cannot exist outside the context of a DOMDocument, the DOMDocument interface also contains the factory methods needed to create these objects. The DOMNode objects created have a ownerDocument attribute which associates them with the DOMDocument within whose context they were created.

    See also the Document Object Model (DOM) Level 2 Core Specification.


    Constructor & Destructor Documentation

    DOMDocument::DOMDocument (  )  [protected]

    virtual DOMDocument::~DOMDocument (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual DOMElement* DOMDocument::createElement ( const XMLCh tagName  )  [pure virtual]

    Creates an element of the type specified.

    Note that the instance returned implements the DOMElement interface, so attributes can be specified directly on the returned object.
    In addition, if there are known attributes with default values, DOMAttr nodes representing them are automatically created and attached to the element.
    To create an element with a qualified name and namespace URI, use the createElementNS method.

    Parameters:
    tagName The name of the element type to instantiate. For XML, this is case-sensitive.
    Returns:
    A new DOMElement object with the nodeName attribute set to tagName, and localName, prefix, and namespaceURI set to null.
    Exceptions:
    DOMException INVALID_CHARACTER_ERR: Raised if the specified name contains an illegal character.
    Since:
    DOM Level 1

    virtual DOMDocumentFragment* DOMDocument::createDocumentFragment (  )  [pure virtual]

    Creates an empty DOMDocumentFragment object.

    Returns:
    A new DOMDocumentFragment.
    Since:
    DOM Level 1

    virtual DOMText* DOMDocument::createTextNode ( const XMLCh data  )  [pure virtual]

    Creates a DOMText node given the specified string.

    Parameters:
    data The data for the node.
    Returns:
    The new DOMText object.
    Since:
    DOM Level 1

    virtual DOMComment* DOMDocument::createComment ( const XMLCh data  )  [pure virtual]

    Creates a DOMComment node given the specified string.

    Parameters:
    data The data for the node.
    Returns:
    The new DOMComment object.
    Since:
    DOM Level 1

    virtual DOMCDATASection* DOMDocument::createCDATASection ( const XMLCh data  )  [pure virtual]

    Creates a DOMCDATASection node whose value is the specified string.

    Parameters:
    data The data for the DOMCDATASection contents.
    Returns:
    The new DOMCDATASection object.
    Since:
    DOM Level 1

    virtual DOMProcessingInstruction* DOMDocument::createProcessingInstruction ( const XMLCh target,
    const XMLCh data 
    ) [pure virtual]

    Creates a DOMProcessingInstruction node given the specified name and data strings.

    Parameters:
    target The target part of the processing instruction.
    data The data for the node.
    Returns:
    The new DOMProcessingInstruction object.
    Exceptions:
    DOMException INVALID_CHARACTER_ERR: Raised if the specified target contains an illegal character.
    Since:
    DOM Level 1

    virtual DOMAttr* DOMDocument::createAttribute ( const XMLCh name  )  [pure virtual]

    Creates an DOMAttr of the given name.

    Note that the DOMAttr instance can then be set on an DOMElement using the setAttributeNode method.
    To create an attribute with a qualified name and namespace URI, use the createAttributeNS method.

    Parameters:
    name The name of the attribute.
    Returns:
    A new DOMAttr object with the nodeName attribute set to name, and localName, prefix, and namespaceURI set to null. The value of the attribute is the empty string.
    Exceptions:
    DOMException INVALID_CHARACTER_ERR: Raised if the specified name contains an illegal character.
    Since:
    DOM Level 1

    virtual DOMEntityReference* DOMDocument::createEntityReference ( const XMLCh name  )  [pure virtual]

    Creates an DOMEntityReference object.

    In addition, if the referenced entity is known, the child list of the DOMEntityReference node is made the same as that of the corresponding DOMEntity node.If any descendant of the DOMEntity node has an unbound namespace prefix, the corresponding descendant of the created DOMEntityReference node is also unbound; (its namespaceURI is null). The DOM Level 2 does not support any mechanism to resolve namespace prefixes.

    Parameters:
    name The name of the entity to reference.
    Returns:
    The new DOMEntityReference object.
    Exceptions:
    DOMException INVALID_CHARACTER_ERR: Raised if the specified name contains an illegal character.
    Since:
    DOM Level 1

    virtual DOMDocumentType* DOMDocument::getDoctype (  )  const [pure virtual]

    The Document Type Declaration (see DOMDocumentType) associated with this document.

    For XML documents without a document type declaration this returns null. The DOM Level 2 does not support editing the Document Type Declaration. docType cannot be altered in any way, including through the use of methods inherited from the DOMNode interface, such as insertNode or removeNode.

    Since:
    DOM Level 1

    virtual DOMImplementation* DOMDocument::getImplementation (  )  const [pure virtual]

    The DOMImplementation object that handles this document.

    A DOM application may use objects from multiple implementations.

    Since:
    DOM Level 1

    virtual DOMElement* DOMDocument::getDocumentElement (  )  const [pure virtual]

    This is a convenience attribute that allows direct access to the child node that is the root element of the document.

    Since:
    DOM Level 1

    virtual DOMNodeList* DOMDocument::getElementsByTagName ( const XMLCh tagname  )  const [pure virtual]

    Returns a DOMNodeList of all the DOMElement(s) with a given tag name in the order in which they are encountered in a preorder traversal of the DOMDocument tree.

    The returned node list is "live", in that changes to the document tree made after a nodelist was initially returned will be immediately reflected in the node list.

    Parameters:
    tagname The name of the tag to match on. The special value "*" matches all tags.
    Returns:
    A new DOMNodeList object containing all the matched DOMElement(s).
    Since:
    DOM Level 1

    virtual DOMNode* DOMDocument::importNode ( const DOMNode importedNode,
    bool  deep 
    ) [pure virtual]

    Imports a node from another document to this document.

    The returned node has no parent; (parentNode is null). The source node is not altered or removed from the original document; this method creates a new copy of the source node.
    For all nodes, importing a node creates a node object owned by the importing document, with attribute values identical to the source node's nodeName and nodeType, plus the attributes related to namespaces (prefix, localName, and namespaceURI). As in the cloneNode operation on a DOMNode, the source node is not altered.
    Additional information is copied as appropriate to the nodeType, attempting to mirror the behavior expected if a fragment of XML source was copied from one document to another, recognizing that the two documents may have different DTDs in the XML case. The following list describes the specifics for each type of node.

    ATTRIBUTE_NODE
    The ownerElement attribute is set to null and the specified flag is set to true on the generated DOMAttr. The descendants of the source DOMAttr are recursively imported and the resulting nodes reassembled to form the corresponding subtree. Note that the deep parameter has no effect on DOMAttr nodes; they always carry their children with them when imported.
    DOCUMENT_FRAGMENT_NODE
    If the deep option was set to true, the descendants of the source element are recursively imported and the resulting nodes reassembled to form the corresponding subtree. Otherwise, this simply generates an empty DOMDocumentFragment.
    DOCUMENT_NODE
    DOMDocument nodes cannot be imported.
    DOCUMENT_TYPE_NODE
    DOMDocumentType nodes cannot be imported.
    ELEMENT_NODE
    Specified attribute nodes of the source element are imported, and the generated DOMAttr nodes are attached to the generated DOMElement. Default attributes are not copied, though if the document being imported into defines default attributes for this element name, those are assigned. If the importNode deep parameter was set to true, the descendants of the source element are recursively imported and the resulting nodes reassembled to form the corresponding subtree.
    ENTITY_NODE
    DOMEntity nodes can be imported, however in the current release of the DOM the DOMDocumentType is readonly. Ability to add these imported nodes to a DOMDocumentType will be considered for addition to a future release of the DOM.On import, the publicId, systemId, and notationName attributes are copied. If a deep import is requested, the descendants of the the source DOMEntity are recursively imported and the resulting nodes reassembled to form the corresponding subtree.
    ENTITY_REFERENCE_NODE
    Only the DOMEntityReference itself is copied, even if a deep import is requested, since the source and destination documents might have defined the entity differently. If the document being imported into provides a definition for this entity name, its value is assigned.
    NOTATION_NODE
    DOMNotation nodes can be imported, however in the current release of the DOM the DOMDocumentType is readonly. Ability to add these imported nodes to a DOMDocumentType will be considered for addition to a future release of the DOM.On import, the publicId and systemId attributes are copied. Note that the deep parameter has no effect on DOMNotation nodes since they never have any children.
    PROCESSING_INSTRUCTION_NODE
    The imported node copies its target and data values from those of the source node.
    TEXT_NODE, CDATA_SECTION_NODE, COMMENT_NODE
    These three types of nodes inheriting from DOMCharacterData copy their data and length attributes from those of the source node.
    Parameters:
    importedNode The node to import.
    deep If true, recursively import the subtree under the specified node; if false, import only the node itself, as explained above. This has no effect on DOMAttr , DOMEntityReference, and DOMNotation nodes.
    Returns:
    The imported node that belongs to this DOMDocument.
    Exceptions:
    DOMException NOT_SUPPORTED_ERR: Raised if the type of node being imported is not supported.
    Since:
    DOM Level 2

    virtual DOMElement* DOMDocument::createElementNS ( const XMLCh namespaceURI,
    const XMLCh qualifiedName 
    ) [pure virtual]

    Creates an element of the given qualified name and namespace URI.

    Parameters:
    namespaceURI The namespace URI of the element to create.
    qualifiedName The qualified name of the element type to instantiate.
    Returns:
    A new DOMElement object with the following attributes:
    Attribute Value
    DOMNode.nodeName qualifiedName
    DOMNode.namespaceURI namespaceURI
    DOMNode.prefix prefix, extracted from qualifiedName, or null if there is no prefix
    DOMNode.localName local name, extracted from qualifiedName
    DOMElement.tagName qualifiedName
    Exceptions:
    DOMException INVALID_CHARACTER_ERR: Raised if the specified qualified name contains an illegal character, per the XML 1.0 specification .
    NAMESPACE_ERR: Raised if the qualifiedName is malformed per the Namespaces in XML specification, if the qualifiedName has a prefix and the namespaceURI is null, or if the qualifiedName has a prefix that is "xml" and the namespaceURI is different from " http://www.w3.org/XML/1998/namespace" .
    NOT_SUPPORTED_ERR: Always thrown if the current document does not support the "XML" feature, since namespaces were defined by XML.
    Since:
    DOM Level 2

    virtual DOMAttr* DOMDocument::createAttributeNS ( const XMLCh namespaceURI,
    const XMLCh qualifiedName 
    ) [pure virtual]

    Creates an attribute of the given qualified name and namespace URI.

    Parameters:
    namespaceURI The namespace URI of the attribute to create.
    qualifiedName The qualified name of the attribute to instantiate.
    Returns:
    A new DOMAttr object with the following attributes:
    Attribute Value
    DOMNode.nodeName qualifiedName
    DOMNode.namespaceURI namespaceURI
    DOMNode.prefix prefix, extracted from qualifiedName, or null if there is no prefix
    DOMNode.localName local name, extracted from qualifiedName
    DOMAttr.name qualifiedName
    DOMNode.nodeValue the empty string
    Exceptions:
    DOMException INVALID_CHARACTER_ERR: Raised if the specified qualified name contains an illegal character, per the XML 1.0 specification .
    NAMESPACE_ERR: Raised if the qualifiedName is malformed per the Namespaces in XML specification, if the qualifiedName has a prefix and the namespaceURI is null, if the qualifiedName has a prefix that is "xml" and the namespaceURI is different from " http://www.w3.org/XML/1998/namespace", or if the qualifiedName, or its prefix, is "xmlns" and the namespaceURI is different from " http://www.w3.org/2000/xmlns/".
    NOT_SUPPORTED_ERR: Always thrown if the current document does not support the "XML" feature, since namespaces were defined by XML.
    Since:
    DOM Level 2

    virtual DOMNodeList* DOMDocument::getElementsByTagNameNS ( const XMLCh namespaceURI,
    const XMLCh localName 
    ) const [pure virtual]

    Returns a DOMNodeList of all the DOMElement(s) with a given local name and namespace URI in the order in which they are encountered in a preorder traversal of the DOMDocument tree.

    Parameters:
    namespaceURI The namespace URI of the elements to match on. The special value "*" matches all namespaces.
    localName The local name of the elements to match on. The special value "*" matches all local names.
    Returns:
    A new DOMNodeList object containing all the matched DOMElement(s).
    Since:
    DOM Level 2

    virtual DOMElement* DOMDocument::getElementById ( const XMLCh elementId  )  const [pure virtual]

    Returns the DOMElement whose ID is given by elementId.

    If no such element exists, returns null. Behavior is not defined if more than one element has this ID. The DOM implementation must have information that says which attributes are of type ID. Attributes with the name "ID" are not of type ID unless so defined. Implementations that do not know whether attributes are of type ID or not are expected to return null.

    Parameters:
    elementId The unique id value for an element.
    Returns:
    The matching element.
    Since:
    DOM Level 2

    virtual const XMLCh* DOMDocument::getInputEncoding (  )  const [pure virtual]

    An attribute specifying the encoding used for this document at the time of the parsing.

    This is null when it is not known, such as when the DOMDocument was created in memory.

    Since:
    DOM Level 3

    virtual const XMLCh* DOMDocument::getXmlEncoding (  )  const [pure virtual]

    An attribute specifying, as part of the XML declaration, the encoding of this document.

    This is null when unspecified or when it is not known, such as when the DOMDocument was created in memory.

    Since:
    DOM Level 3

    virtual bool DOMDocument::getXmlStandalone (  )  const [pure virtual]

    An attribute specifying, as part of the XML declaration, whether this document is standalone.

    This is false when unspecified.

    Since:
    DOM Level 3

    virtual void DOMDocument::setXmlStandalone ( bool  standalone  )  [pure virtual]

    An attribute specifying, as part of the XML declaration, whether this document is standalone.


    This attribute represents the property [standalone] defined in .

    Since:
    DOM Level 3

    virtual const XMLCh* DOMDocument::getXmlVersion (  )  const [pure virtual]

    An attribute specifying, as part of the XML declaration, the version number of this document.

    This is null when unspecified.
    This attribute represents the property [version] defined in .

    Since:
    DOM Level 3

    virtual void DOMDocument::setXmlVersion ( const XMLCh version  )  [pure virtual]

    An attribute specifying, as part of the XML declaration, the version number of this document.

    This is null when unspecified.
    This attribute represents the property [version] defined in .

    Since:
    DOM Level 3

    virtual const XMLCh* DOMDocument::getDocumentURI (  )  const [pure virtual]

    The location of the document or null if undefined.


    Beware that when the DOMDocument supports the feature "HTML" , the href attribute of the HTML BASE element takes precedence over this attribute.

    Since:
    DOM Level 3

    virtual void DOMDocument::setDocumentURI ( const XMLCh documentURI  )  [pure virtual]

    The location of the document or null if undefined.


    Beware that when the DOMDocument supports the feature "HTML" , the href attribute of the HTML BASE element takes precedence over this attribute.

    Since:
    DOM Level 3

    virtual bool DOMDocument::getStrictErrorChecking (  )  const [pure virtual]

    An attribute specifying whether errors checking is enforced or not.

    When set to false, the implementation is free to not test every possible error case normally defined on DOM operations, and not raise any DOMException. In case of error, the behavior is undefined. This attribute is true by defaults.

    Since:
    DOM Level 3

    virtual void DOMDocument::setStrictErrorChecking ( bool  strictErrorChecking  )  [pure virtual]

    An attribute specifying whether errors checking is enforced or not.

    When set to false, the implementation is free to not test every possible error case normally defined on DOM operations, and not raise any DOMException. In case of error, the behavior is undefined. This attribute is true by defaults.

    Since:
    DOM Level 3

    virtual DOMNode* DOMDocument::renameNode ( DOMNode n,
    const XMLCh namespaceURI,
    const XMLCh qualifiedName 
    ) [pure virtual]

    Rename an existing node.

    When possible this simply changes the name of the given node, otherwise this creates a new node with the specified name and replaces the existing node with the new node as described below. This only applies to nodes of type ELEMENT_NODE and ATTRIBUTE_NODE.
    When a new node is created, the following operations are performed: the new node is created, any registered event listener is registered on the new node, any user data attached to the old node is removed from that node, the old node is removed from its parent if it has one, the children are moved to the new node, if the renamed node is an DOMElement its attributes are moved to the new node, the new node is inserted at the position the old node used to have in its parent's child nodes list if it has one, the user data that was attached to the old node is attach to the new node, the user data event NODE_RENAMED is fired.
    When the node being renamed is an DOMAttr that is attached to an DOMElement, the node is first removed from the DOMElement attributes map. Then, once renamed, either by modifying the existing node or creating a new one as described above, it is put back.

    Parameters:
    n The node to rename.
    namespaceURI The new namespaceURI.
    qualifiedName The new qualified name.
    Returns:
    The renamed node. This is either the specified node or the new node that was created to replace the specified node.
    Exceptions:
    DOMException NOT_SUPPORTED_ERR: Raised when the type of the specified node is neither ELEMENT_NODE nor ATTRIBUTE_NODE.
    WRONG_DOCUMENT_ERR: Raised when the specified node was created from a different document than this document.
    NAMESPACE_ERR: Raised if the qualifiedName is malformed per the Namespaces in XML specification, if the qualifiedName has a prefix and the namespaceURI is null, or if the qualifiedName has a prefix that is "xml" and the namespaceURI is different from " http://www.w3.org/XML/1998/namespace" . Also raised, when the node being renamed is an attribute, if the qualifiedName, or its prefix, is "xmlns" and the namespaceURI is different from "http://www.w3.org/2000/xmlns/".
    Since:
    DOM Level 3

    virtual DOMNode* DOMDocument::adoptNode ( DOMNode source  )  [pure virtual]

    Changes the ownerDocument of a node, its children, as well as the attached attribute nodes if there are any.

    If the node has a parent it is first removed from its parent child list. This effectively allows moving a subtree from one document to another. The following list describes the specifics for each type of node.

    ATTRIBUTE_NODE
    The ownerElement attribute is set to null and the specified flag is set to true on the adopted DOMAttr. The descendants of the source DOMAttr are recursively adopted.
    DOCUMENT_FRAGMENT_NODE
    The descendants of the source node are recursively adopted.
    DOCUMENT_NODE
    DOMDocument nodes cannot be adopted.
    DOCUMENT_TYPE_NODE
    DOMDocumentType nodes cannot be adopted.
    ELEMENT_NODE
    Specified attribute nodes of the source element are adopted, and the generated DOMAttr nodes. Default attributes are discarded, though if the document being adopted into defines default attributes for this element name, those are assigned. The descendants of the source element are recursively adopted.
    ENTITY_NODE
    DOMEntity nodes cannot be adopted.
    ENTITY_REFERENCE_NODE
    Only the DOMEntityReference node itself is adopted, the descendants are discarded, since the source and destination documents might have defined the entity differently. If the document being imported into provides a definition for this entity name, its value is assigned.
    NOTATION_NODE
    DOMNotation nodes cannot be adopted.
    PROCESSING_INSTRUCTION_NODE, TEXT_NODE, CDATA_SECTION_NODE, COMMENT_NODE
    These nodes can all be adopted. No specifics.
    Parameters:
    source The node to move into this document.
    Returns:
    The adopted node, or null if this operation fails, such as when the source node comes from a different implementation.
    Exceptions:
    DOMException NOT_SUPPORTED_ERR: Raised if the source node is of type DOCUMENT, DOCUMENT_TYPE.
    NO_MODIFICATION_ALLOWED_ERR: Raised when the source node is readonly.
    Since:
    DOM Level 3

    virtual void DOMDocument::normalizeDocument (  )  [pure virtual]

    This method acts as if the document was going through a save and load cycle, putting the document in a "normal" form.

    The actual result depends on the features being set. See DOMConfiguration for details.


    Noticeably this method normalizes DOMText nodes, makes the document "namespace wellformed", according to the algorithm described below in pseudo code, by adding missing namespace declaration attributes and adding or changing namespace prefixes, updates the replacement tree of DOMEntityReference nodes, normalizes attribute values, etc.
    Mutation events, when supported, are generated to reflect the changes occurring on the document. Note that this is a partial implementation. Not all the required features are implemented. Currently DOMAttr and DOMText nodes are normalized. Features to remove DOMComment and DOMCDATASection work.

    Since:
    DOM Level 3

    virtual DOMConfiguration* DOMDocument::getDOMConfig (  )  const [pure virtual]

    The configuration used when DOMDocument::normalizeDocument is invoked.

    Returns:
    The DOMConfiguration from this DOMDocument
    Since:
    DOM Level 3

    virtual DOMEntity* DOMDocument::createEntity ( const XMLCh name  )  [pure virtual]

    Non-standard extension.

    Create a new entity.

    Parameters:
    name The name of the entity to instantiate

    virtual DOMDocumentType* DOMDocument::createDocumentType ( const XMLCh name  )  [pure virtual]

    Non-standard extension.

    Create a DOMDocumentType node.

    Returns:
    A DOMDocumentType that references the newly created DOMDocumentType node.

    virtual DOMDocumentType* DOMDocument::createDocumentType ( const XMLCh qName,
    const XMLCh ,
    const XMLCh  
    ) [virtual]

    virtual DOMNotation* DOMDocument::createNotation ( const XMLCh name  )  [pure virtual]

    Non-standard extension.

    Create a Notation.

    Parameters:
    name The name of the notation to instantiate
    Returns:
    A DOMNotation that references the newly created DOMNotation node.

    virtual DOMElement* DOMDocument::createElementNS ( const XMLCh namespaceURI,
    const XMLCh qualifiedName,
    const XMLFileLoc  lineNum,
    const XMLFileLoc  columnNum 
    ) [pure virtual]

    Non-standard extension.

    Creates an element of the given qualified name and namespace URI, and also stores line/column number info. Used by internally XSDXercesDOMParser during schema traversal.

    See also:
    createElementNS(const XMLCh *namespaceURI, const XMLCh *qualifiedName)


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMDocumentTraversal_8hpp.html0000644000175000017500000000562511363620005023331 0ustar borisboris Xerces-C++: DOMDocumentTraversal.hpp File Reference

    DOMDocumentTraversal.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMDocumentTraversal
     DOMDocumentTraversal contains methods that create DOMNodeIterators and DOMTreeWalkers to traverse a node and its children in document order (depth first, pre-order traversal, which is equivalent to the order in which the start tags occur in the text representation of the document). More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMDOCUMENTTRAVERSAL_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMDOCUMENTTRAVERSAL_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSAttributeGroupDefinition.html0000644000175000017500000004707111363620006024664 0ustar borisboris Xerces-C++: XSAttributeGroupDefinition Class Reference

    XSAttributeGroupDefinition Class Reference

    Inheritance diagram for XSAttributeGroupDefinition:

    XSObject XMemory

    List of all members.

    Public Member Functions

    Constructors
     XSAttributeGroupDefinition (XercesAttGroupInfo *const xercesAttGroupInfo, XSAttributeUseList *const xsAttList, XSWildcard *const xsWildcard, XSAnnotation *const xsAnnot, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     The default constructor.
    Destructor
     ~XSAttributeGroupDefinition ()
    overridden XSObject methods
    const XMLChgetName () const
     The name of type NCName of this declaration as defined in XML Namespaces.
    const XMLChgetNamespace ()
     The [target namespace] of this object, or null if it is unspecified.
    XSNamespaceItemgetNamespaceItem ()
     A namespace schema information item corresponding to the target namespace of the component, if it's globally declared; or null otherwise.
    XSAttributeGroupDefinition methods
    XSAttributeUseListgetAttributeUses ()
     A set of [attribute uses].
    XSWildcardgetAttributeWildcard () const
     Optional.
    XSAnnotationgetAnnotation () const
     Optional.

    Protected Attributes

    XercesAttGroupInfo * fXercesAttGroupInfo
    XSAttributeUseListfXSAttributeUseList
    XSWildcardfXSWildcard
    XSAnnotationfAnnotation


    Constructor & Destructor Documentation

    XSAttributeGroupDefinition::XSAttributeGroupDefinition ( XercesAttGroupInfo *const   xercesAttGroupInfo,
    XSAttributeUseList *const   xsAttList,
    XSWildcard *const   xsWildcard,
    XSAnnotation *const   xsAnnot,
    XSModel *const   xsModel,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    The default constructor.

    Parameters:
    xercesAttGroupInfo 
    xsAttList 
    xsWildcard 
    xsAnnot 
    xsModel 
    manager The configurable memory manager

    XSAttributeGroupDefinition::~XSAttributeGroupDefinition (  ) 


    Member Function Documentation

    const XMLCh* XSAttributeGroupDefinition::getName (  )  const [virtual]

    The name of type NCName of this declaration as defined in XML Namespaces.

    Reimplemented from XSObject.

    const XMLCh* XSAttributeGroupDefinition::getNamespace (  )  [virtual]

    The [target namespace] of this object, or null if it is unspecified.

    Reimplemented from XSObject.

    XSNamespaceItem* XSAttributeGroupDefinition::getNamespaceItem (  )  [virtual]

    A namespace schema information item corresponding to the target namespace of the component, if it's globally declared; or null otherwise.

    Reimplemented from XSObject.

    XSAttributeUseList * XSAttributeGroupDefinition::getAttributeUses (  ) 

    A set of [attribute uses].

    References fXSAttributeUseList.

    XSWildcard * XSAttributeGroupDefinition::getAttributeWildcard (  )  const

    Optional.

    A [wildcard].

    References fXSWildcard.

    XSAnnotation * XSAttributeGroupDefinition::getAnnotation (  )  const

    Optional.

    An [annotation].

    References fAnnotation.


    Member Data Documentation

    XercesAttGroupInfo* XSAttributeGroupDefinition::fXercesAttGroupInfo [protected]


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/Locator_8hpp.html0000644000175000017500000000455311363620005020731 0ustar borisboris Xerces-C++: Locator.hpp File Reference

    Locator.hpp File Reference

    Go to the source code of this file.

    Classes

    class  Locator
     Interface for associating a SAX event with a document location. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_LOCATOR_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_LOCATOR_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classStdInInputSource-members.html0000644000175000017500000001737011363620006024271 0ustar borisboris Xerces-C++: Member List

    StdInInputSource Member List

    This is the complete list of members for StdInInputSource, including all inherited members.

    getEncoding() const InputSource [virtual]
    getIssueFatalErrorIfNotFound() const InputSource [virtual]
    getMemoryManager() const InputSource
    getPublicId() const InputSource [virtual]
    getSystemId() const InputSource [virtual]
    InputSource(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)InputSource [protected]
    InputSource(const XMLCh *const systemId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)InputSource [protected]
    InputSource(const XMLCh *const systemId, const XMLCh *const publicId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)InputSource [protected]
    InputSource(const char *const systemId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)InputSource [protected]
    InputSource(const char *const systemId, const char *const publicId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)InputSource [protected]
    makeStream() const StdInInputSource [virtual]
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    setEncoding(const XMLCh *const encodingStr)InputSource [virtual]
    setIssueFatalErrorIfNotFound(const bool flag)InputSource [virtual]
    setPublicId(const XMLCh *const publicId)InputSource [virtual]
    setSystemId(const XMLCh *const systemId)InputSource [virtual]
    StdInInputSource(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)StdInInputSource
    XMemory()XMemory [protected]
    ~InputSource()InputSource [virtual]
    ~StdInInputSource()StdInInputSource


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classValidationContext.html0000644000175000017500000005502211363620006023052 0ustar borisboris Xerces-C++: ValidationContext Class Reference

    ValidationContext Class Reference

    Inheritance diagram for ValidationContext:

    XMemory

    List of all members.

    Public Member Functions

    Virtual destructor for derived classes
    virtual ~ValidationContext ()
     virtual destructor
    The ValidationContext Interface
    virtual RefHashTableOf
    < XMLRefInfo > * 
    getIdRefList () const =0
     IDRefList.
    virtual void setIdRefList (RefHashTableOf< XMLRefInfo > *const)=0
    virtual void clearIdRefList ()=0
    virtual void addId (const XMLCh *const )=0
    virtual void addIdRef (const XMLCh *const )=0
    virtual void toCheckIdRefList (bool)=0
    virtual const NameIdPool
    < DTDEntityDecl > * 
    getEntityDeclPool () const =0
     EntityDeclPool.
    virtual const NameIdPool
    < DTDEntityDecl > * 
    setEntityDeclPool (const NameIdPool< DTDEntityDecl > *const)=0
    virtual void checkEntity (const XMLCh *const ) const =0
    virtual DatatypeValidator * getValidatingMemberType () const =0
     Union datatype handling.
    virtual void setValidatingMemberType (DatatypeValidator *validatingMemberType)=0
    virtual bool isPrefixUnknown (XMLCh *)
     QName datatype handling Create default implementations for source code compatibility.
    virtual void setElemStack (ElemStack *)
    virtual const XMLChgetURIForPrefix (XMLCh *)
    virtual void setScanner (XMLScanner *)
    virtual void setNamespaceScope (NamespaceScope *)

    Protected Member Functions

     ValidationContext (MemoryManager *const memMgr=XMLPlatformUtils::fgMemoryManager)
     Hidden Constructors.

    Protected Attributes

    MemoryManagerfMemoryManager


    Constructor & Destructor Documentation

    virtual ValidationContext::~ValidationContext (  )  [virtual]

    virtual destructor

    ValidationContext::ValidationContext ( MemoryManager *const   memMgr = XMLPlatformUtils::fgMemoryManager  )  [protected]

    Hidden Constructors.


    Member Function Documentation

    virtual RefHashTableOf<XMLRefInfo>* ValidationContext::getIdRefList (  )  const [pure virtual]

    IDRefList.

    virtual void ValidationContext::setIdRefList ( RefHashTableOf< XMLRefInfo > *  const  )  [pure virtual]

    virtual void ValidationContext::clearIdRefList (  )  [pure virtual]

    virtual void ValidationContext::addId ( const XMLCh const  )  [pure virtual]

    virtual void ValidationContext::addIdRef ( const XMLCh const  )  [pure virtual]

    virtual void ValidationContext::toCheckIdRefList ( bool   )  [pure virtual]

    virtual const NameIdPool<DTDEntityDecl>* ValidationContext::getEntityDeclPool (  )  const [pure virtual]

    EntityDeclPool.

    virtual const NameIdPool<DTDEntityDecl>* ValidationContext::setEntityDeclPool ( const NameIdPool< DTDEntityDecl > *  const  )  [pure virtual]

    virtual void ValidationContext::checkEntity ( const XMLCh const  )  const [pure virtual]

    virtual DatatypeValidator* ValidationContext::getValidatingMemberType (  )  const [pure virtual]

    Union datatype handling.

    virtual void ValidationContext::setValidatingMemberType ( DatatypeValidator *  validatingMemberType  )  [pure virtual]

    virtual bool ValidationContext::isPrefixUnknown ( XMLCh  )  [virtual]

    QName datatype handling Create default implementations for source code compatibility.

    virtual void ValidationContext::setElemStack ( ElemStack *   )  [virtual]

    virtual const XMLCh* ValidationContext::getURIForPrefix ( XMLCh  )  [virtual]

    virtual void ValidationContext::setScanner ( XMLScanner *   )  [virtual]

    virtual void ValidationContext::setNamespaceScope ( NamespaceScope *   )  [virtual]


    Member Data Documentation


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/StdInInputSource_8hpp.html0000644000175000017500000000505411363620005022545 0ustar borisboris Xerces-C++: StdInInputSource.hpp File Reference

    StdInInputSource.hpp File Reference

    Go to the source code of this file.

    Classes

    class  StdInInputSource
     This class is a derivative of the standard InputSource class. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_STDININPUTSOURCE_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_STDININPUTSOURCE_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classPSVIAttributeStorage-members.html0000644000175000017500000001030211363620006025025 0ustar borisboris Xerces-C++: Member List

    PSVIAttributeStorage Member List

    This is the complete list of members for PSVIAttributeStorage, including all inherited members.

    fAttributeNamePSVIAttributeStorage
    fAttributeNamespacePSVIAttributeStorage
    fPSVIAttributePSVIAttributeStorage
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    PSVIAttributeStorage()PSVIAttributeStorage
    XMemory()XMemory [protected]
    ~PSVIAttributeStorage()PSVIAttributeStorage


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/OutOfMemoryException_8hpp.html0000644000175000017500000000447211363620005023432 0ustar borisboris Xerces-C++: OutOfMemoryException.hpp File Reference

    OutOfMemoryException.hpp File Reference

    Go to the source code of this file.

    Classes

    class  OutOfMemoryException

    Defines

    #define XERCESC_INCLUDE_GUARD_OUT_OF_MEMORY_EXCEPTION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_OUT_OF_MEMORY_EXCEPTION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/EntityResolver_8hpp.html0000644000175000017500000000464011363620005022321 0ustar borisboris Xerces-C++: EntityResolver.hpp File Reference

    EntityResolver.hpp File Reference

    Go to the source code of this file.

    Classes

    class  EntityResolver
     Basic interface for resolving entities. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_ENTITYRESOLVER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_ENTITYRESOLVER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_eval_0x68.html0000644000175000017500000001100311363620005022157 0ustar borisboris Xerces-C++: Class Members - Enumerator
     

    - h -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/UTFDataFormatException_8hpp.html0000644000175000017500000000407611363620005023606 0ustar borisboris Xerces-C++: UTFDataFormatException.hpp File Reference

    UTFDataFormatException.hpp File Reference

    Go to the source code of this file.

    Defines

    #define XERCESC_INCLUDE_GUARD_UTFDATAFORMATEXCEPTION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_UTFDATAFORMATEXCEPTION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLContentModel.html0000644000175000017500000005227311363620006022374 0ustar borisboris Xerces-C++: XMLContentModel Class Reference

    XMLContentModel Class Reference

    This class defines the abstract interface for all content models. More...

    Inheritance diagram for XMLContentModel:

    XMemory

    List of all members.

    Public Member Functions

    virtual bool validateContent (QName **const children, XMLSize_t childCount, unsigned int emptyNamespaceId, XMLSize_t *indexFailingChild, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager) const =0
    virtual bool validateContentSpecial (QName **const children, XMLSize_t childCount, unsigned int emptyNamespaceId, GrammarResolver *const pGrammarResolver, XMLStringPool *const pStringPool, XMLSize_t *indexFailingChild, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager) const =0
    virtual void checkUniqueParticleAttribution (SchemaGrammar *const pGrammar, GrammarResolver *const pGrammarResolver, XMLStringPool *const pStringPool, XMLValidator *const pValidator, unsigned int *const pContentSpecOrgURI, const XMLCh *pComplexTypeName=0)=0
    virtual ContentLeafNameTypeVector * getContentLeafNameTypeVector () const =0
    virtual unsigned int getNextState (unsigned int currentState, XMLSize_t elementIndex) const =0
    virtual bool handleRepetitions (const QName *const curElem, unsigned int curState, unsigned int currentLoop, unsigned int &nextState, unsigned int &nextLoop, XMLSize_t elementIndex, SubstitutionGroupComparator *comparator) const =0
    Destructor
    virtual ~XMLContentModel ()

    Static Public Attributes

    static const unsigned int gInvalidTrans
    static const unsigned int gEOCFakeId
    static const unsigned int gEpsilonFakeId

    Protected Member Functions

     XMLContentModel ()


    Detailed Description

    This class defines the abstract interface for all content models.

    All elements have a content model against which (if validating) its content is checked. Each type of validator (DTD, Schema, etc...) can have different types of content models, and even with each type of validator there can be specialized content models. So this simple class provides the abstract API via which all the types of contents models are dealt with generically. Its pretty simple.


    Constructor & Destructor Documentation

    virtual XMLContentModel::~XMLContentModel (  )  [virtual]

    XMLContentModel::XMLContentModel (  )  [protected]


    Member Function Documentation

    virtual bool XMLContentModel::validateContent ( QName **const   children,
    XMLSize_t  childCount,
    unsigned int  emptyNamespaceId,
    XMLSize_t indexFailingChild,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) const [pure virtual]

    virtual bool XMLContentModel::validateContentSpecial ( QName **const   children,
    XMLSize_t  childCount,
    unsigned int  emptyNamespaceId,
    GrammarResolver *const   pGrammarResolver,
    XMLStringPool *const   pStringPool,
    XMLSize_t indexFailingChild,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) const [pure virtual]

    virtual void XMLContentModel::checkUniqueParticleAttribution ( SchemaGrammar *const   pGrammar,
    GrammarResolver *const   pGrammarResolver,
    XMLStringPool *const   pStringPool,
    XMLValidator *const   pValidator,
    unsigned int *const   pContentSpecOrgURI,
    const XMLCh pComplexTypeName = 0 
    ) [pure virtual]

    virtual ContentLeafNameTypeVector* XMLContentModel::getContentLeafNameTypeVector (  )  const [pure virtual]

    virtual unsigned int XMLContentModel::getNextState ( unsigned int  currentState,
    XMLSize_t  elementIndex 
    ) const [pure virtual]

    virtual bool XMLContentModel::handleRepetitions ( const QName *const   curElem,
    unsigned int  curState,
    unsigned int  currentLoop,
    unsigned int &  nextState,
    unsigned int &  nextLoop,
    XMLSize_t  elementIndex,
    SubstitutionGroupComparator *  comparator 
    ) const [pure virtual]


    Member Data Documentation

    const unsigned int XMLContentModel::gInvalidTrans [static]

    const unsigned int XMLContentModel::gEOCFakeId [static]

    const unsigned int XMLContentModel::gEpsilonFakeId [static]


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMNodeFilter.png0000644000175000017500000000074311363620005021625 0ustar borisboris‰PNG  IHDRŒP9€YPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfyIDATX…í–YnÄ †ñKŸÁ7 ½A{¡‘*åþG¨×„ìt„ÔŒGaù3Ê„ÔÄB :¦“u ð1Ž:JÙÝx%Êz.€äDÏýß`x;.#)ì[”*Ê$‘  <‘1Às@+Q â0¶Æh|r¦.(òD–O»ð‚¡ö³;bõ&\aÆ;aÆñq#̽2Õ1Ó1Ó1ó˜ïkû¹ž¾†öÙ1瘜5¹@ª1,¡¼jR‹nFa¹K O”‚HY¦s_´ÙpÝÞÁˆ”KŒ¾™]Dâ#ïN>¸ÀÞQ›Î £…ú¢¸HR– ² ¤è<íã ãݤÞ)f9êG)>é|Y§k&Á¼á0O0~ÄzFTöC›ƒËꚃ簆 Š{ƒæ©Ý›lbB,2åÍÔpËCǼ¦âSa¿tÓÿaö‚8fIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/DOMNode_8hpp-source.html0000644000175000017500000007617511363620004022061 0ustar borisboris Xerces-C++: DOMNode.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_func_0x75.html0000644000175000017500000001321511363620005022170 0ustar borisboris Xerces-C++: Class Members - Functions
     

    - u -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_func_0x6d.html0000644000175000017500000001423511363620005022251 0ustar borisboris Xerces-C++: Class Members - Functions
     

    - m -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMImplementationLS.html0000644000175000017500000005320611363620005023200 0ustar borisboris Xerces-C++: DOMImplementationLS Class Reference

    DOMImplementationLS Class Reference

    Inheritance diagram for DOMImplementationLS:

    DOMImplementation

    List of all members.

    Public Types

    Public constants
    enum  DOMImplementationLSMode { MODE_SYNCHRONOUS = 1, MODE_ASYNCHRONOUS = 2 }
     Create a synchronous or an asynchronous DOMLSParser. More...

    Public Member Functions

    Destructor
    virtual ~DOMImplementationLS ()
     Destructor.
    Functions introduced in DOM Level 3
    virtual DOMLSParsercreateLSParser (const DOMImplementationLSMode mode, const XMLCh *const schemaType, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager, XMLGrammarPool *const gramPool=0)=0
     Create a new DOMLSParser.
    virtual DOMLSSerializercreateLSSerializer (MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)=0
     Create a new DOMLSSerializer.
    virtual DOMLSInputcreateLSInput (MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)=0
     Create a new "empty" DOMLSInput.
    virtual DOMLSOutputcreateLSOutput (MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)=0
     Create a new "empty" LSOutput.

    Protected Member Functions

    Hidden constructors
     DOMImplementationLS ()


    Detailed Description

    DOMImplementationLS contains the factory methods for creating Load and Save objects.

    An object that implements DOMImplementationLS is obtained by doing a binding specific cast from DOMImplementation to DOMImplementationLS. Implementations supporting the Load and Save feature must implement the DOMImplementationLS interface on whatever object implements the DOMImplementation interface.

    Since:
    DOM Level 3

    Member Enumeration Documentation

    Create a synchronous or an asynchronous DOMLSParser.

    See also:
    createLSParser(const DOMImplementationLSMode mode, const XMLCh* const schemaType)
    Since:
    DOM Level 3
    Enumerator:
    MODE_SYNCHRONOUS 
    MODE_ASYNCHRONOUS 


    Constructor & Destructor Documentation

    DOMImplementationLS::DOMImplementationLS (  )  [protected]

    virtual DOMImplementationLS::~DOMImplementationLS (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual DOMLSParser* DOMImplementationLS::createLSParser ( const DOMImplementationLSMode  mode,
    const XMLCh *const   schemaType,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager,
    XMLGrammarPool *const   gramPool = 0 
    ) [pure virtual]

    Create a new DOMLSParser.

    The newly constructed parser may then be configured by means of its DOMConfiguration object, and used to parse documents by means of its parse method.

    Parameters:
    mode The mode argument is either MODE_SYNCHRONOUS or MODE_ASYNCHRONOUS, if mode is MODE_SYNCHRONOUS then the DOMLSParser that is created will operate in synchronous mode, if it's MODE_ASYNCHRONOUS then the DOMLSParser that is created will operate in asynchronous mode.
    schemaType An absolute URI representing the type of the schema language used during the load of a DOMDocument using the newly created DOMLSParser. Note that no lexical checking is done on the absolute URI. In order to create a DOMLSParser for any kind of schema types (i.e. the DOMLSParser will be free to use any schema found), use the value NULL. Note: For W3C XML Schema [XML Schema Part 1], applications must use the value "http://www.w3.org/2001/XMLSchema". For XML DTD [XML 1.0], applications must use the value "http://www.w3.org/TR/REC-xml". Other Schema languages are outside the scope of the W3C and therefore should recommend an absolute URI in order to use this method.
    manager Pointer to the memory manager to be used to allocate objects.
    gramPool The collection of cached grammars.
    Returns:
    The newly created DOMLSParser object. This DOMLSParser is either synchronous or asynchronous depending on the value of the mode argument.
    Exceptions:
    DOMException NOT_SUPPORTED_ERR: Raised if the requested mode or schema type is not supported.
    See also:
    DOMLSParser
    Since:
    DOM Level 3

    virtual DOMLSSerializer* DOMImplementationLS::createLSSerializer ( MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager  )  [pure virtual]

    Create a new DOMLSSerializer.

    DOMLSSerializer is used to serialize a DOM tree back into an XML document.

    Returns:
    The newly created DOMLSSerializer object.
    See also:
    DOMLSSerializer
    Since:
    DOM Level 3

    virtual DOMLSInput* DOMImplementationLS::createLSInput ( MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager  )  [pure virtual]

    Create a new "empty" DOMLSInput.

    Returns:
    The newly created DOMLSInput object.
    See also:
    DOMLSInput
    Since:
    DOM Level 3

    virtual DOMLSOutput* DOMImplementationLS::createLSOutput ( MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager  )  [pure virtual]

    Create a new "empty" LSOutput.

    Returns:
    The newly created LSOutput object.
    See also:
    LSOutput
    Since:
    DOM Level 3


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_0x6f.html0000644000175000017500000001756411363620005021250 0ustar borisboris Xerces-C++: Class Members
    Here is a list of all class members with links to the classes they belong to:

    - o -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classOutOfMemoryException-members.html0000644000175000017500000001231311363620006025143 0ustar borisboris Xerces-C++: Member List

    OutOfMemoryException Member List

    This is the complete list of members for OutOfMemoryException, including all inherited members.

    getCode() const OutOfMemoryException
    getMessage() const OutOfMemoryException
    getSrcFile() const OutOfMemoryException
    getSrcLine() const OutOfMemoryException
    getType() const OutOfMemoryException
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    operator=(const OutOfMemoryException &toAssign)OutOfMemoryException
    OutOfMemoryException()OutOfMemoryException
    OutOfMemoryException(const OutOfMemoryException &toCopy)OutOfMemoryException
    XMemory()XMemory [protected]
    ~OutOfMemoryException()OutOfMemoryException


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/NoSuchElementException_8hpp-source.html0000644000175000017500000001103211363620004025201 0ustar borisboris Xerces-C++: NoSuchElementException.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLInteger.html0000644000175000017500000001240411363620006021366 0ustar borisboris Xerces-C++: XMLInteger Class Reference

    XMLInteger Class Reference

    Inheritance diagram for XMLInteger:

    XMemory

    List of all members.

    Public Member Functions

     XMLInteger (const int intVal)
     Constructs a newly allocated XMLInteger object.
     ~XMLInteger ()
    int intValue () const
     Returns the built in integer value.


    Constructor & Destructor Documentation

    XMLInteger::XMLInteger ( const int  intVal  ) 

    Constructs a newly allocated XMLInteger object.

    Parameters:
    intVal the integer

    XMLInteger::~XMLInteger (  ) 


    Member Function Documentation

    int XMLInteger::intValue (  )  const

    Returns the built in integer value.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLErrorReporter_8hpp-source.html0000644000175000017500000002557411363620005024027 0ustar borisboris Xerces-C++: XMLErrorReporter.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMLSParser_8hpp-source.html0000644000175000017500000004521011363620004022651 0ustar borisboris Xerces-C++: DOMLSParser.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMDocumentTraversal-members.html0000644000175000017500000000545311363620005025047 0ustar borisboris Xerces-C++: Member List

    DOMDocumentTraversal Member List

    This is the complete list of members for DOMDocumentTraversal, including all inherited members.

    createNodeIterator(DOMNode *root, DOMNodeFilter::ShowType whatToShow, DOMNodeFilter *filter, bool entityReferenceExpansion)=0DOMDocumentTraversal [pure virtual]
    createTreeWalker(DOMNode *root, DOMNodeFilter::ShowType whatToShow, DOMNodeFilter *filter, bool entityReferenceExpansion)=0DOMDocumentTraversal [pure virtual]
    DOMDocumentTraversal()DOMDocumentTraversal [protected]
    ~DOMDocumentTraversal()DOMDocumentTraversal [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMImplementationList-members.html0000644000175000017500000000557411363620005025232 0ustar borisboris Xerces-C++: Member List

    DOMImplementationList Member List

    This is the complete list of members for DOMImplementationList, including all inherited members.

    DOMImplementationList()DOMImplementationList [protected]
    getLength() const =0DOMImplementationList [pure virtual]
    item(XMLSize_t index) const =0DOMImplementationList [pure virtual]
    release()=0DOMImplementationList [pure virtual]
    ~DOMImplementationList()DOMImplementationList [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMUserDataHandler_8hpp.html0000644000175000017500000000515711363620005022675 0ustar borisboris Xerces-C++: DOMUserDataHandler.hpp File Reference

    DOMUserDataHandler.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMUserDataHandler
     When associating an object to a key on a node using setUserData the application can provide a handler that gets called when the node the object is associated to is being cloned or imported. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMUSERDATAHANDLER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMUSERDATAHANDLER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMXPathNSResolver_8hpp.html0000644000175000017500000000530111363620005022665 0ustar borisboris Xerces-C++: DOMXPathNSResolver.hpp File Reference

    DOMXPathNSResolver.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMXPathNSResolver
     The DOMXPathNSResolver interface permit prefix strings in the expression to be properly bound to namespaceURI strings. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMXPATHNSRESOLVER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMXPATHNSRESOLVER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMMemoryManager_8hpp.html0000644000175000017500000000543011363620005022424 0ustar borisboris Xerces-C++: DOMMemoryManager.hpp File Reference

    DOMMemoryManager.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMMemoryManager
     The DOMMemoryManager interface exposes the memory allocation-related functionalities of a DOMDocument. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMMEMORYMANAGER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMMEMORYMANAGER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classHash2KeysSetOfEnumerator.html0000644000175000017500000002362011363620006024216 0ustar borisboris Xerces-C++: Hash2KeysSetOfEnumerator< THasher > Class Template Reference

    Hash2KeysSetOfEnumerator< THasher > Class Template Reference

    Inheritance diagram for Hash2KeysSetOfEnumerator< THasher >:

    XMemory

    List of all members.

    Public Member Functions

     Hash2KeysSetOfEnumerator (Hash2KeysSetOf< THasher > *const toEnum, const bool adopt=false, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
    virtual ~Hash2KeysSetOfEnumerator ()
    bool hasMoreElements () const
    void Reset ()
    void nextElementKey (const void *&, int &)
    void setPrimaryKey (const void *key)

    template<class THasher>
    class Hash2KeysSetOfEnumerator< THasher >


    Constructor & Destructor Documentation

    template<class THasher>
    Hash2KeysSetOfEnumerator< THasher >::Hash2KeysSetOfEnumerator ( Hash2KeysSetOf< THasher > *const   toEnum,
    const bool  adopt = false,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    template<class THasher>
    virtual Hash2KeysSetOfEnumerator< THasher >::~Hash2KeysSetOfEnumerator (  )  [virtual]


    Member Function Documentation

    template<class THasher>
    bool Hash2KeysSetOfEnumerator< THasher >::hasMoreElements (  )  const

    template<class THasher>
    void Hash2KeysSetOfEnumerator< THasher >::Reset (  ) 

    template<class THasher>
    void Hash2KeysSetOfEnumerator< THasher >::nextElementKey ( const void *&  ,
    int &   
    )

    template<class THasher>
    void Hash2KeysSetOfEnumerator< THasher >::setPrimaryKey ( const void *  key  ) 


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_func.html0000644000175000017500000001556611363620005021420 0ustar borisboris Xerces-C++: Class Members - Functions
     

    - a -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMProcessingInstruction.png0000644000175000017500000000071611363620005024150 0ustar borisboris‰PNG  IHDR£P‡DØPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfdIDATX…í•Yrƒ0 †­—<˾}‚N{¡>qÿ#T‹(4! ´eF caóûC‹3„k{ ïÅØù;ÈS)™†L“\h’ôA:Œ™‘~È’8À¤È”h…cNâN")Ð,ÈÌÈâL¹"‹’"TGÆhŽü¸·ãEQùt-gç2·sy²ãÍ‘Ž4@¾à£»×n»•‰œ>/€¼MÓé¸#éHG:Ò‘ŽüÈhmÐ:G#!ÆÀ­ÂG® Æž¥—=ß‘ìe  „û¡o!WQò%~ ‘‚¥ÈéUìø" {rȲH"ÞéXÇë+$ KãENÔéÛPWf"ÕIþ›H­*†¦€.iûEŽ3Q¸FÔRw5ÿÃZâ3$àq$Öòã©o¸‡¬ïšv·¨%ö‚¶©Ö6³s9玌Ĺ9€ÜñP;>O<<‹{$gi|lŽ´DÚt¿+bñ1ÖIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classDOMLSInput.html0000644000175000017500000010405111363620005021305 0ustar borisboris Xerces-C++: DOMLSInput Class Reference

    DOMLSInput Class Reference

    This interface represents a single input source for an XML entity. More...

    Inheritance diagram for DOMLSInput:

    Wrapper4InputSource

    List of all members.

    Public Member Functions

    Destructor
    virtual ~DOMLSInput ()
     Destructor.
    Functions introduced in DOM Level 3
    virtual const XMLChgetStringData () const =0
     String data to parse.
    virtual InputSourcegetByteStream () const =0
     Returns the byte stream for this input source.
    virtual const XMLChgetEncoding () const =0
     An input source can be set to force the parser to assume a particular encoding for the data that input source reprsents, via the setEncoding() method.
    virtual const XMLChgetPublicId () const =0
     Get the public identifier for this input source.
    virtual const XMLChgetSystemId () const =0
     Get the system identifier for this input source.
    virtual const XMLChgetBaseURI () const =0
     Get the base URI to be used for resolving relative URIs to absolute URIs.
    virtual void setStringData (const XMLCh *data)=0
     Sets the UTF-16 string for this input source.
    virtual void setByteStream (InputSource *stream)=0
     Sets the byte stream for this input source.
    virtual void setEncoding (const XMLCh *const encodingStr)=0
     Set the encoding which will be required for use with the XML text read via a stream opened by this input source.
    virtual void setPublicId (const XMLCh *const publicId)=0
     Set the public identifier for this input source.
    virtual void setSystemId (const XMLCh *const systemId)=0
     Set the system identifier for this input source.
    virtual void setBaseURI (const XMLCh *const baseURI)=0
     Set the base URI to be used for resolving relative URIs to absolute URIs.
    Non-standard Extension
    virtual void setIssueFatalErrorIfNotFound (bool flag)=0
     Indicates if the parser should issue fatal error if this input source is not found.
    virtual bool getIssueFatalErrorIfNotFound () const =0
     Get the flag that indicates if the parser should issue fatal error if this input source is not found.
    virtual void release ()=0
     Called to indicate that this DOMLSInput is no longer in use and that the implementation may relinquish any resources associated with it.

    Protected Member Functions

    Hidden constructors
     DOMLSInput ()


    Detailed Description

    This interface represents a single input source for an XML entity.

    This interface allows an application to encapsulate information about an input source in a single object, which may include a public identifier, a system identifier, a byte stream (possibly with a specified encoding), and/or a character stream.

    There are two places that the application will deliver this input source to the parser: as the argument to the parse method, or as the return value of the DOMLSResourceResolver.resolveResource method.

    The DOMLSParser will use the DOMLSInput object to determine how to read XML input. If there is a character stream available, the parser will read that stream directly; if not, the parser will use a byte stream, if available; if neither a character stream nor a byte stream is available, the parser will attempt to open a URI connection to the resource identified by the system identifier.

    A DOMLSInput object belongs to the application: the parser shall never modify it in any way (it may modify a copy if necessary).

    See also:
    DOMLSParser::parse

    DOMLSResourceResolver::resolveResource

    Since:
    DOM Level 3

    Constructor & Destructor Documentation

    DOMLSInput::DOMLSInput (  )  [protected]

    virtual DOMLSInput::~DOMLSInput (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual const XMLCh* DOMLSInput::getStringData (  )  const [pure virtual]

    String data to parse.

    If provided, this will always be treated as a sequence of 16-bit units (UTF-16 encoded characters). It is not a requirement to have an XML declaration when using stringData. If an XML declaration is present, the value of the encoding attribute will be ignored.

    Implemented in Wrapper4InputSource.

    virtual InputSource* DOMLSInput::getByteStream (  )  const [pure virtual]

    Returns the byte stream for this input source.

    See also:
    InputSource

    Implemented in Wrapper4InputSource.

    virtual const XMLCh* DOMLSInput::getEncoding (  )  const [pure virtual]

    An input source can be set to force the parser to assume a particular encoding for the data that input source reprsents, via the setEncoding() method.

    This method returns name of the encoding that is to be forced. If the encoding has never been forced, it returns a null pointer.

    Returns:
    The forced encoding, or null if none was supplied.
    See also:
    setEncoding
    Since:
    DOM Level 3

    Implemented in Wrapper4InputSource.

    virtual const XMLCh* DOMLSInput::getPublicId (  )  const [pure virtual]

    Get the public identifier for this input source.

    Returns:
    The public identifier, or null if none was supplied.
    See also:
    setPublicId
    Since:
    DOM Level 3

    Implemented in Wrapper4InputSource.

    virtual const XMLCh* DOMLSInput::getSystemId (  )  const [pure virtual]

    Get the system identifier for this input source.

    If the system ID is a URL, it will be fully resolved.

    Returns:
    The system identifier.
    See also:
    setSystemId
    Since:
    DOM Level 3

    Implemented in Wrapper4InputSource.

    virtual const XMLCh* DOMLSInput::getBaseURI (  )  const [pure virtual]

    Get the base URI to be used for resolving relative URIs to absolute URIs.

    If the baseURI is itself a relative URI, the behavior is implementation dependent.

    Returns:
    The base URI.
    See also:
    setBaseURI
    Since:
    DOM Level 3

    Implemented in Wrapper4InputSource.

    virtual void DOMLSInput::setStringData ( const XMLCh data  )  [pure virtual]

    Sets the UTF-16 string for this input source.

    Implemented in Wrapper4InputSource.

    virtual void DOMLSInput::setByteStream ( InputSource stream  )  [pure virtual]

    Sets the byte stream for this input source.

    See also:
    BinInputStream

    Implemented in Wrapper4InputSource.

    virtual void DOMLSInput::setEncoding ( const XMLCh *const   encodingStr  )  [pure virtual]

    Set the encoding which will be required for use with the XML text read via a stream opened by this input source.

    This is usually not set, allowing the encoding to be sensed in the usual XML way. However, in some cases, the encoding in the file is known to be incorrect because of intermediate transcoding, for instance encapsulation within a MIME document.

    Parameters:
    encodingStr The name of the encoding to force.
    Since:
    DOM Level 3

    Implemented in Wrapper4InputSource.

    virtual void DOMLSInput::setPublicId ( const XMLCh *const   publicId  )  [pure virtual]

    Set the public identifier for this input source.

    The public identifier is always optional: if the application writer includes one, it will be provided as part of the location information.

    Parameters:
    publicId The public identifier as a string.
    See also:
    getPublicId
    Since:
    DOM Level 3

    Implemented in Wrapper4InputSource.

    virtual void DOMLSInput::setSystemId ( const XMLCh *const   systemId  )  [pure virtual]

    Set the system identifier for this input source.

    The system id is always required. The public id may be used to map to another system id, but the system id must always be present as a fall back.

    If the system ID is a URL, it must be fully resolved.

    Parameters:
    systemId The system identifier as a string.
    See also:
    getSystemId
    Since:
    DOM Level 3

    Implemented in Wrapper4InputSource.

    virtual void DOMLSInput::setBaseURI ( const XMLCh *const   baseURI  )  [pure virtual]

    Set the base URI to be used for resolving relative URIs to absolute URIs.

    If the baseURI is itself a relative URI, the behavior is implementation dependent.

    Parameters:
    baseURI The base URI.
    See also:
    getBaseURI
    Since:
    DOM Level 3

    Implemented in Wrapper4InputSource.

    virtual void DOMLSInput::setIssueFatalErrorIfNotFound ( bool  flag  )  [pure virtual]

    Indicates if the parser should issue fatal error if this input source is not found.

    If set to false, the parser issue warning message instead.

    Parameters:
    flag True if the parser should issue fatal error if this input source is not found. If set to false, the parser issue warning message instead. (Default: true)
    See also:
    getIssueFatalErrorIfNotFound

    Implemented in Wrapper4InputSource.

    virtual bool DOMLSInput::getIssueFatalErrorIfNotFound (  )  const [pure virtual]

    Get the flag that indicates if the parser should issue fatal error if this input source is not found.

    Returns:
    True if the parser should issue fatal error if this input source is not found. False if the parser issue warning message instead.
    See also:
    setIssueFatalErrorIfNotFound

    Implemented in Wrapper4InputSource.

    virtual void DOMLSInput::release (  )  [pure virtual]

    Called to indicate that this DOMLSInput is no longer in use and that the implementation may relinquish any resources associated with it.

    Access to a released object will lead to unexpected result.

    Implemented in Wrapper4InputSource.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSFacet.png0000644000175000017500000000067111363620006020530 0ustar borisboris‰PNG  IHDRCˆNËK7PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfOIDATX…í•Arà Ea“5Ò Ä :í…ºòýPI€-ˆ=r3^x€ /ß3Î?^û ßÙi·CHò U;0w þŠ¬Ê‘ˆD¿"¼à=¤ T"¡E$‰A­w*$G‚].‘ÅŠˆr‡(Ö=È õ^´.å4ê®{»'tÊ.’oˆœxIÆöxÚyY~/@ËrrQE™ÈDþ¼¯O[Pfßû v<ºZ1²ÎÏG¤ ¨¦xµÌÆaÅê)[}2[Ÿ«IÖÉ>ˆ4?2À€´t­JÞG´¢Ý\†{Ù*Ê[Ec#»xAÉ÷E¦O‡Ûÿ‘Md"oŒ€×RHžì ‘$ D)ÀžnHÔRžýŠ Aæ-—ÄBÅ¢l—`òsÉE©‘ƒJË…1AJØM76•ãŠrYï¥T”JE¡«È¿ÝOCü—仨ðf1VIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classXMLAttDefList.png0000644000175000017500000000061311363620006021613 0ustar borisboris‰PNG  IHDR]P‰Ád.PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf!IDATH‰í”AnÄ Eñ¦k›Tí…f•û¡öw`H[F±4H£€ ‡ýó‰Hß¡ò™¾¶Hy'>k+:–‹|±ª›$ÌmEóé¸åœ-óúuE1¹dÁ¨»‡¼ ¿óh­ãkW6‘ßðG?øl//yì9éñî?ªx|ø³uò¯oïÏû ß…éÿy½Oå6Zxÿ±Ïå÷ý6•ŸíÏâ¿øÅÏç%T8q(í[ðdÍö1Ùœ¿’ˆ#Bà0Ä·^WÉyfðé#±ðê4²$açì©òD K„ʇHöøì3õ{ùßéA|:B؇V^¤òI~éo<·ìäæÝ'O¼'ïyè¯RÝtð,ðŸ&‰ëiþÏwñOäƒ÷Éå"·‚ Ží-IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classXMLNetAccessor-members.html0000644000175000017500000001001611363620006023627 0ustar borisboris Xerces-C++: Member List

    XMLNetAccessor Member List

    This is the complete list of members for XMLNetAccessor, including all inherited members.

    getId() const =0XMLNetAccessor [pure virtual]
    makeNew(const XMLURL &urlSrc, const XMLNetHTTPInfo *httpInfo=0)=0XMLNetAccessor [pure virtual]
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    XMemory()XMemory [protected]
    XMLNetAccessor()XMLNetAccessor [protected]
    ~XMLNetAccessor()XMLNetAccessor [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XSParticle_8hpp-source.html0000644000175000017500000003743511363620005022647 0ustar borisboris Xerces-C++: XSParticle.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMNode_8hpp.html0000644000175000017500000001542111363620005020547 0ustar borisboris Xerces-C++: DOMNode.hpp File Reference

    DOMNode.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMNode
     The DOMNode interface is the primary datatype for the entire Document Object Model. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMNODE_HPP
    #define GET_OWNER_DOCUMENT(ptr)   ((DOMDocumentImpl*)(ptr->getOwnerDocument()))
    #define GET_DIRECT_MM(ptr)   (ptr ? ((DOMDocumentImpl*)ptr)->getMemoryManager() : XMLPlatformUtils::fgMemoryManager)
    #define GET_INDIRECT_MM(ptr)
    #define GetDOMNodeMemoryManager   GET_INDIRECT_MM(this)


    Define Documentation

    #define GET_DIRECT_MM ( ptr   )     (ptr ? ((DOMDocumentImpl*)ptr)->getMemoryManager() : XMLPlatformUtils::fgMemoryManager)

    #define GET_INDIRECT_MM ( ptr   ) 

    #define GET_OWNER_DOCUMENT ( ptr   )     ((DOMDocumentImpl*)(ptr->getOwnerDocument()))

    #define GetDOMNodeMemoryManager   GET_INDIRECT_MM(this)

    #define XERCESC_INCLUDE_GUARD_DOMNODE_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLNotationDecl.png0000644000175000017500000000062511363620006022176 0ustar borisboris‰PNG  IHDRoPåÇ6+PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf+IDATX…í”I’à Eù›¬7 'Hu_¨W¾ÿ"‰Á1íG©$® ‚bõЀm÷k“‹û9›äÁ(=ð"<ê1p#¦Ÿ‰—#à9Æ(±l‚lÂöŠÄ3Å4ÇÐ%¹ í¥íð Z€¡JŽ ”M%Š Â‹P»`¾G­­Ò:«¶Wœ;bÛb/Ø:<À×qhÐü{ÜÓÖ×€Óß›ÁÓ4½ü@U8Àp€lâ·Eó5 ¤ËªJ‡¥ÅR ™Õ£ŒÄ 5£xãÐë΃t€ãàS ìU¶’}!±çA¶:eMI¨D4ƒ…q3ènÁÖ#PÏÊD-(š6Çÿ V<ºpŽë \›c¾G_cÑòIU}®*7½Ç¶ªÖ7g€Ç­¿Ç+¶÷Î÷˜þÙ÷IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/TranscodingException_8hpp.html0000644000175000017500000000405611363620005023456 0ustar borisboris Xerces-C++: TranscodingException.hpp File Reference

    TranscodingException.hpp File Reference

    Go to the source code of this file.

    Defines

    #define XERCESC_INCLUDE_GUARD_TRANSCODINGEXCEPTION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_TRANSCODINGEXCEPTION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLStringTokenizer.png0000644000175000017500000000071411363620006022753 0ustar borisboris‰PNG  IHDRPÂi·ÃPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfbIDATX…í”Mrà …Ñ&k‰dÚ uåû¡ÒCØ8q‚]ÚI:AxÌŸøxHØá³Ï.áãÜe° HöDmÄŸ*ˆZD)¿mFU¤uJÉ´í¨«®ÃÒt–”ë÷ìð3 â)倂d EV€ ÜAXg˜ª@VGØ ð{€\€‚£;ܳnÀÖÅ:Øð¢_ã¿tÿÖvj9ü9`úz2à4MO¼@``àÍÒg¸Oá8€ì1k+G¶j8¹Ñ oÑØiW V˘™HYÌ( š6k‰Øˆúzœ€aE S+‚sRÙ³‘+€PÈýÀÁr¿ï ˆr  Ò}<ˆÔvUoX7Jž*€«»,1˜‰HÒê´¨F|Âì_g/YX‚øðª5¦;47h9˜Ò¾Z6øì:ëß²ŠìüI.ˆIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/XSConstants_8hpp.html0000644000175000017500000002254511363620005021556 0ustar borisboris Xerces-C++: XSConstants.hpp File Reference

    XSConstants.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XSConstants

    Defines

    #define XERCESC_INCLUDE_GUARD_XSCONSTANTS_HPP

    Typedefs

    typedef RefVectorOf< XSAnnotationXSAnnotationList
    typedef RefVectorOf
    < XSAttributeUse
    XSAttributeUseList
    typedef RefVectorOf< XSFacetXSFacetList
    typedef RefVectorOf
    < XSMultiValueFacet
    XSMultiValueFacetList
    typedef RefVectorOf
    < XSNamespaceItem
    XSNamespaceItemList
    typedef RefVectorOf< XSParticleXSParticleList
    typedef RefVectorOf
    < XSSimpleTypeDefinition
    XSSimpleTypeDefinitionList
    typedef RefArrayVectorOf< XMLChStringList


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XSCONSTANTS_HPP


    Typedef Documentation

    typedef RefArrayVectorOf<XMLCh> StringList

    typedef RefVectorOf<XSAnnotation> XSAnnotationList

    typedef RefVectorOf<XSAttributeUse> XSAttributeUseList

    typedef RefVectorOf<XSFacet> XSFacetList

    typedef RefVectorOf<XSNamespaceItem> XSNamespaceItemList

    typedef RefVectorOf<XSParticle> XSParticleList


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLChar_8hpp-source.html0000644000175000017500000017501111363620005022060 0ustar borisboris Xerces-C++: XMLChar.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/SAXParseException_8hpp.html0000644000175000017500000000470411363620005022631 0ustar borisboris Xerces-C++: SAXParseException.hpp File Reference

    SAXParseException.hpp File Reference

    Go to the source code of this file.

    Classes

    class  SAXParseException
     Encapsulate an XML parse error or warning. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_SAXPARSEEXCEPTION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_SAXPARSEEXCEPTION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMUserDataHandler_8hpp-source.html0000644000175000017500000002514411363620004024170 0ustar borisboris Xerces-C++: DOMUserDataHandler.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLContentModel_8hpp.html0000644000175000017500000000470511363620005022301 0ustar borisboris Xerces-C++: XMLContentModel.hpp File Reference

    XMLContentModel.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLContentModel
     This class defines the abstract interface for all content models. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_XMLCONTENTMODEL_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XMLCONTENTMODEL_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLEntityResolver_8hpp-source.html0000644000175000017500000001663211363620005024204 0ustar borisboris Xerces-C++: XMLEntityResolver.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XSModel_8hpp.html0000644000175000017500000000425711363620005020642 0ustar borisboris Xerces-C++: XSModel.hpp File Reference

    XSModel.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XSModel

    Defines

    #define XERCESC_INCLUDE_GUARD_XSMODEL_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XSMODEL_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMCDATASection.png0000644000175000017500000000123711363620005021732 0ustar borisboris‰PNG  IHDRÀß¡€PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf5IDAThí™YŽÃ †ñKŸ˜Œf.4O½ÿÆiª„¢ª™ÖDb‹ý6Šô+ág¬|…ï2TФ”KAªXhõE>O®<=ý€’yñ¬€œi†÷“¥éÐ&PÈGAi J?€VÇ Ò `㾓…¢ŽØƒÙ=Àzº²ÐWð&€áÏúN¹ì<pý}1àr½¾p‚,8Àp€> àºñ,€•T¤ñVZ˜T¨²€•TÄÒ7`½5`)Ù€ºÈ¢3s¸æ’Œãu’Î4ªô zKp¦™d‡XªËbw ›T£*âô)8M5¦ôÀaåƒØ; ­!ëÛ@®Ï´¦GXHE,“Ú­œ!o+©Xl³˜DwR8šúžïMQ8–ó\e¼àºñé×p€à€Ï¸n<)`)#I!Ô?d†MÀJFÞüŽ2’Ç"¼ÿêö¢MM™{€ù€¨@^i`£Ã€…ŒÔ.·GkY³f¡§8àM®ŸpÝè8Àø<@+1ı:ÀRàt¡EÇÀñÕ¾ÍCš–Š°ˆ%Wd Q2Ô¹ZT§-´˜Q\x´Ñ ¸·€Hã j#-h lÒ‹Ðг©TÔf‰d Qà¶ ·ø‚E6ÜXê£ö À<3ÀìÄÙ=XxR³, 7ÀðMtÀÿŒ~Öÿªs’eÛ3( IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/XSWildcard_8hpp.html0000644000175000017500000000431511363620005021326 0ustar borisboris Xerces-C++: XSWildcard.hpp File Reference

    XSWildcard.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XSWildcard

    Defines

    #define XERCESC_INCLUDE_GUARD_XSWILDCARD_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XSWILDCARD_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMMemoryManager_8hpp-source.html0000644000175000017500000003316411363620004023726 0ustar borisboris Xerces-C++: DOMMemoryManager.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_type.html0000644000175000017500000000407311363620005021435 0ustar borisboris Xerces-C++: Class Members - Typedefs
     


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLBigInteger.png0000644000175000017500000000062411363620006021631 0ustar borisboris‰PNG  IHDR`PÌm¦PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf*IDATH‰í”MnÄ …ñ¦k›0½A{¡YåþGè³H‡t Xerces-C++: Locator Class Reference

    Locator Class Reference

    Interface for associating a SAX event with a document location. More...

    List of all members.

    Public Member Functions

    Constructors and Destructor
     Locator ()
     Default constructor.
    virtual ~Locator ()
     Destructor.
    The locator interface
    virtual const XMLChgetPublicId () const =0
     Return the public identifier for the current document event.
    virtual const XMLChgetSystemId () const =0
     Return the system identifier for the current document event.
    virtual XMLFileLoc getLineNumber () const =0
     Return the line number where the current document event ends.
    virtual XMLFileLoc getColumnNumber () const =0
     Return the column number where the current document event ends.


    Detailed Description

    Interface for associating a SAX event with a document location.

    If a SAX parser provides location information to the SAX application, it does so by implementing this interface and then passing an instance to the application using the document handler's setDocumentLocator method. The application can use the object to obtain the location of any other document handler event in the XML source document.

    Note that the results returned by the object will be valid only during the scope of each document handler method: the application will receive unpredictable results if it attempts to use the locator at any other time.

    SAX parsers are not required to supply a locator, but they are very strong encouraged to do so. If the parser supplies a locator, it must do so before reporting any other document events. If no locator has been set by the time the application receives the startDocument event, the application should assume that a locator is not available.

    See also:
    DocumentHandler::setDocumentLocator

    Constructor & Destructor Documentation

    Locator::Locator (  ) 

    Default constructor.

    virtual Locator::~Locator (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual const XMLCh* Locator::getPublicId (  )  const [pure virtual]

    Return the public identifier for the current document event.

    This will be the public identifier

    Returns:
    A string containing the public identifier, or null if none is available.
    See also:
    getSystemId

    virtual const XMLCh* Locator::getSystemId (  )  const [pure virtual]

    Return the system identifier for the current document event.

    If the system identifier is a URL, the parser must resolve it fully before passing it to the application.

    Returns:
    A string containing the system identifier, or null if none is available.
    See also:
    getPublicId

    virtual XMLFileLoc Locator::getLineNumber (  )  const [pure virtual]

    Return the line number where the current document event ends.

    Note that this is the line position of the first character after the text associated with the document event.

    Returns:
    The line number, or 0 if none is available.
    See also:
    getColumnNumber

    virtual XMLFileLoc Locator::getColumnNumber (  )  const [pure virtual]

    Return the column number where the current document event ends.

    Note that this is the column number of the first character after the text associated with the document event. The first column in a line is position 1.

    Returns:
    The column number, or 0 if none is available.
    See also:
    getLineNumber


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classLocalFileInputSource.png0000644000175000017500000000107011363620006023260 0ustar borisboris‰PNG  IHDR„ˆÔ¨^ïPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfÎIDAThí—Qnà †ñËž17pvƒíB}êý0Û „ ÒtS*Ù©ŠƒÌcS¥¿û>mîk9iŸ†øAò ì„ç³|!s^‚@vgÅ#I~“敺˜¤8R8‚"dDÐÏzÊ‚d)b…èg¿!7!™B(¦ÚÈD:Úå訳ÓYì٠ݣvÑMâÊ¿Ô÷D¼à%0´Û8äï÷+ î÷Û×èˆ! aC¿™éÔ«#¨ò ‡Bs„;ÿˆ€¬ïT¡*)Â(îHµÎ DªšI–U£E6º¦›Å²“*æð™Ë3ˆÇ}Dা#DhÛí!Tœ–Ìzy6 .¨ý@© ¨9Lv$qæíÒˆ#fˆa:õ_¦S aC†˜Càisþl–`ˆÍ”V¢_Îöž×Eø¼šù:²Aòñ2D„‡äóxžòè}Œ¹ E¯‹âêË–VŸQk¬Ñ-Âŵˆ>#J´‹é@Ì#.Ú"¸b9 Äá Fȳ6ˆz#š B›ÅL-|ª”ˆTÒr#|rG é{\ðIM@Í¡êÈÀz‡a{ŽÞ1|‚!ˆó/crÞ¨Ç ÏIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classXMLReaderFactory-members.html0000644000175000017500000000517511363620006024162 0ustar borisboris Xerces-C++: Member List

    XMLReaderFactory Member List

    This is the complete list of members for XMLReaderFactory, including all inherited members.

    createXMLReader(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager, XMLGrammarPool *const gramPool=0)XMLReaderFactory [static]
    createXMLReader(const XMLCh *className)XMLReaderFactory [static]
    XMLReaderFactory()XMLReaderFactory [protected]
    ~XMLReaderFactory()XMLReaderFactory [protected]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLUri.png0000644000175000017500000000051111363620006020344 0ustar borisboris‰PNG  IHDRCP°¦ÕuPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfßIDATH‰íÓQƒ `xñ™öåËv¡=yÿ#¬­ÎQœ+[x ™hÊ—_$1ܼv ×ì´áÉ<Ããä Ø5à!r*÷D$ù+á ¯è"e ¥',‰lb#¨÷ó2)$K† ÙËBd²I6D™yQAÖsÑïR§½VÝÓm èÊ.É’†Ÿ¤nÓ®ò ™ïÈ4ÏH§/:ÉINò=¯¥¼ØI”[†)j5.5“"àrAêíHŒuŠÏ^$ÕDzKv{Ñ~| 2h!ÊŽÈz.BB„ô&Å?Ý?#þOòua}Pã¨"IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classXMLGrammarDescription-members.html0000644000175000017500000001062611363620006025217 0ustar borisboris Xerces-C++: Member List

    XMLGrammarDescription Member List

    This is the complete list of members for XMLGrammarDescription, including all inherited members.

    getGrammarKey() const =0XMLGrammarDescription [pure virtual]
    getGrammarType() const =0XMLGrammarDescription [pure virtual]
    getMemoryManager() const XMLGrammarDescription
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    XMemory()XMemory [protected]
    XMLGrammarDescription(MemoryManager *const memMgr=XMLPlatformUtils::fgMemoryManager)XMLGrammarDescription [protected]
    ~XMLGrammarDescription()XMLGrammarDescription [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classOutOfMemoryException.png0000644000175000017500000000071711363620006023340 0ustar borisboris‰PNG  IHDR“Pï·Z<PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfeIDATX…íÕ]n„ àáeŸg¸ž i/Ô'ï„ΟVP[dIc7  ³:|Ž@VøèÕÞà}êÔÕJrFâÓq"öºRÄaä*¹O)I½)Ä‚"i¢d}Š-”LÒJE=—£©ª$QFMÞÏse”üX)©´‰R.{ÁÊ÷•®£zÚëÕËUµŽÔé–½Lõßþ^‡êøñªiª¬¿¦æÏRy¾!uÓÔ 5¨A êU)êÕ°W郺JBÿ¥¹¶ODŃq“eú@Ôˆñ¨ƒJ *˜‚–ƒ„F>ƒVÊ­y¡ÝC`QIy² †°IÚ3ìTðL¹§±G¿Sžl‡ÎóRüBü”Q6À)½WO!À† 6`I8¤|Ýè{a™åA>WjÙM¤ÑŠ‘O2i¨û*[AðÜPU­L,wY=µÛŸíÔ.¯ªxÖ ê©~¯/%µº}¥IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classWrapper4DOMLSInput-members.html0000644000175000017500000002006611363620006024366 0ustar borisboris Xerces-C++: Member List

    Wrapper4DOMLSInput Member List

    This is the complete list of members for Wrapper4DOMLSInput, including all inherited members.

    getEncoding() const Wrapper4DOMLSInput [virtual]
    getIssueFatalErrorIfNotFound() const Wrapper4DOMLSInput [virtual]
    getMemoryManager() const InputSource
    getPublicId() const Wrapper4DOMLSInput [virtual]
    getSystemId() const Wrapper4DOMLSInput [virtual]
    InputSource(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)InputSource [protected]
    InputSource(const XMLCh *const systemId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)InputSource [protected]
    InputSource(const XMLCh *const systemId, const XMLCh *const publicId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)InputSource [protected]
    InputSource(const char *const systemId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)InputSource [protected]
    InputSource(const char *const systemId, const char *const publicId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)InputSource [protected]
    makeStream() const Wrapper4DOMLSInput [virtual]
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    setEncoding(const XMLCh *const encodingStr)Wrapper4DOMLSInput [virtual]
    setIssueFatalErrorIfNotFound(const bool flag)Wrapper4DOMLSInput [virtual]
    setPublicId(const XMLCh *const publicId)Wrapper4DOMLSInput [virtual]
    setSystemId(const XMLCh *const systemId)Wrapper4DOMLSInput [virtual]
    Wrapper4DOMLSInput(DOMLSInput *const inputSource, DOMLSResourceResolver *entityResolver=0, const bool adoptFlag=true, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)Wrapper4DOMLSInput
    XMemory()XMemory [protected]
    ~InputSource()InputSource [virtual]
    ~Wrapper4DOMLSInput()Wrapper4DOMLSInput [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLDTDDescription.png0000644000175000017500000000123311363620006022426 0ustar borisboris‰PNG  IHDRšˆíÏï´PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf1IDAThí˜]~ƒ ÀÍËžInvƒíB{êý°$€¢×R~«ë¿ù ³Éô9R¦8NÞ6šFr²´<„ÆzÓXN]¥D¤ZßM“… 11¡µÂÚóÑ©›\8"®hí°üä7£‘vf?@3âÊÒ>ZÚov`ÒÍbÛnëú. ¥|7:hmÕþêÿ—£}Þ&o7Î{íòuZÚÛårZÚ©cê4§9ÍiNsšÓŽdì¯Á3ÿîýW4¶Ü8æú‡$Þûsy;À鲤qI·TLˆ\ª)ûiÞþ@`îÐl…¤ó¹¢‰}DMÀÍÍŸq¾A(ŸH{„3M'R^˜h8A)%ä”’rütçž.(Q  ©x±Tr¹ ÐbòHͦ…fº1Ç¢›•°¢!¢:å–Š&kUºq­[œk_G´R†±ZTƒFÕúì­+ZqˆÜG‹W²”+K-:XÅ4ZL9Ç´ŠB¯löß Ó6â´^ÚØ7àØ·ó3h^éÄ„9ÍiNsšÓœæ´_¤áH™Â@ ÀiÓäS€r$@ò‡ÚJÜ7Ï´®MnÒ@éZœ!ÑSkÍ•\[uDƒLƒÄýdDÕ@í„]šÌ’1=÷hú¬¦¨<BéAeðЦ+iɼP³ajÐT7¹4h–p;ÍüÖ¦-Óï e‹®bZù-¬üÖ ï€î/ÛgŠ™÷[ÓIc:嘶üv‡ìí¿×¤µžá´>ÚÐ7à7„ŽÙN‘ÛIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/XMLDocumentHandler_8hpp-source.html0000644000175000017500000003721611363620005024263 0ustar borisboris Xerces-C++: XMLDocumentHandler.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMStringList-members.html0000644000175000017500000000573711363620005023514 0ustar borisboris Xerces-C++: Member List

    DOMStringList Member List

    This is the complete list of members for DOMStringList, including all inherited members.

    contains(const XMLCh *) const =0DOMStringList [pure virtual]
    DOMStringList()DOMStringList [protected]
    getLength() const =0DOMStringList [pure virtual]
    item(XMLSize_t index) const =0DOMStringList [pure virtual]
    release()=0DOMStringList [pure virtual]
    ~DOMStringList()DOMStringList [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classPSVIAttributeStorage.png0000644000175000017500000000071311363620006023222 0ustar borisboris‰PNG  IHDRƒPÈÛÔPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfaIDATX…í•Krà †Ñ&k‰dÒ uåû¡zßu0žŽ;ƒ°-!×AÆá«Õ^áýl´Ž8@$¹"ñ¼ŠÈ˜s ‚8Œ¬Š}JIô}ˆàÁ±ɱôYBœ«ŠÇ•Rµ$þÆûæ506@Þš~4OþzÿF º·;Ü è ^šDÃùx¡äh¦?ƒ4¦`¼Ë$ÓÃNŒô J¢Ž1ÃþÙ ˜QQ`3Äx=¶\Æ8w#LÙ)wHÑúÞh¦“&Ç@Ø ÌìZÚ¿ óOœ£0Ëɼ«³ažsŸ¨šœŽ ÷`Lw~#Ì©ëÞóf“Ö0 Ó05é6ÉjÌyËÙÖ'Ú0 Ó0 Ó0ÆüTäRYÿ§ÊÃßZ4÷ÖI¬túl˜çÆ0b²ì8Ëÿ ”õCze'SúpSŒíæÂc¦\c8ž! ÉÌØ¯1S`"ÕÑ F\â3ä¤3³­Š'N1]"'…†55Hu-ê#.(7´âªš9Í`BÆ V˜2Ø|JLÜCÅ휩7œrb¢‹c™ cÆ ^cRÑ0c¢Î©7¢‘:M³ ³EËÙ„Y ² †á!èdÒroø Õ¢08­Ö)¦LU,Z*™«~Ò8uµŸ´Ù¢éxô“–Âi ñ¤­’§Ù4LÃÜSûä©ÉâTUþ<¬d, fg‹IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/ContentHandler_8hpp.html0000644000175000017500000000465111363620005022235 0ustar borisboris Xerces-C++: ContentHandler.hpp File Reference

    ContentHandler.hpp File Reference

    Go to the source code of this file.

    Classes

    class  ContentHandler
     Receive notification of general document events. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_CONTENTHANDLER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_CONTENTHANDLER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLAttDefList_8hpp.html0000644000175000017500000000467011363620005021712 0ustar borisboris Xerces-C++: XMLAttDefList.hpp File Reference

    XMLAttDefList.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLAttDefList
     This class defines an abstract interface that all validators must support. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_XMLATTDEFLIST_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XMLATTDEFLIST_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMNodeFilter_8hpp.html0000644000175000017500000000464611363620005021724 0ustar borisboris Xerces-C++: DOMNodeFilter.hpp File Reference

    DOMNodeFilter.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMNodeFilter
     Filters are objects that know how to "filter out" nodes. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMNODEFILTER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMNODEFILTER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSObject.html0000644000175000017500000005351611363620006021102 0ustar borisboris Xerces-C++: XSObject Class Reference

    XSObject Class Reference

    Inheritance diagram for XSObject:

    XMemory XSAnnotation XSAttributeDeclaration XSAttributeGroupDefinition XSAttributeUse XSElementDeclaration XSFacet XSIDCDefinition XSModelGroup XSModelGroupDefinition XSMultiValueFacet XSNotationDeclaration XSParticle XSTypeDefinition XSWildcard

    List of all members.

    Public Member Functions

    Constructors
     XSObject (XSConstants::COMPONENT_TYPE compType, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     The default constructor.
    Destructor
    virtual ~XSObject ()
    XSObject methods
    XSConstants::COMPONENT_TYPE getType () const
     The type of this object, i.e.
    virtual const XMLChgetName () const
     The name of type NCName of this declaration as defined in XML Namespaces.
    virtual const XMLChgetNamespace ()
     The [target namespace] of this object, or null if it is unspecified.
    virtual XSNamespaceItemgetNamespaceItem ()
     A namespace schema information item corresponding to the target namespace of the component, if it's globally declared; or null otherwise.
    virtual XMLSize_t getId () const
     Optional.
    void setId (XMLSize_t id)
     methods needed by implementation

    Protected Attributes

    XSConstants::COMPONENT_TYPE fComponentType
    XSModelfXSModel
    MemoryManagerfMemoryManager
    XMLSize_t fId


    Constructor & Destructor Documentation

    XSObject::XSObject ( XSConstants::COMPONENT_TYPE  compType,
    XSModel *const   xsModel,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    The default constructor.

    Parameters:
    compType 
    xsModel 
    manager The configurable memory manager

    virtual XSObject::~XSObject (  )  [virtual]


    Member Function Documentation

    XSConstants::COMPONENT_TYPE XSObject::getType (  )  const

    The type of this object, i.e.

    ELEMENT_DECLARATION.

    References fComponentType.

    virtual const XMLCh* XSObject::getName (  )  const [virtual]

    virtual const XMLCh* XSObject::getNamespace (  )  [virtual]

    virtual XSNamespaceItem* XSObject::getNamespaceItem (  )  [virtual]

    A namespace schema information item corresponding to the target namespace of the component, if it's globally declared; or null otherwise.

    Reimplemented in XSAttributeDeclaration, XSAttributeGroupDefinition, XSComplexTypeDefinition, XSElementDeclaration, XSIDCDefinition, XSModelGroupDefinition, XSNotationDeclaration, XSSimpleTypeDefinition, and XSTypeDefinition.

    virtual XMLSize_t XSObject::getId (  )  const [virtual]

    Optional.

    Return a unique identifier for a component within this XSModel, to optimize querying. May not be defined for all types of component.

    Returns:
    id unique for this type of component within this XSModel or 0 to indicate that this is not supported for this type of component.

    void XSObject::setId ( XMLSize_t  id  ) 

    methods needed by implementation

    Set the id to be returned on getId().


    Member Data Documentation

    XMLSize_t XSObject::fId [protected]


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLContentModel_8hpp-source.html0000644000175000017500000004110011363620005023565 0ustar borisboris Xerces-C++: XMLContentModel.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classSAXNotSupportedException.png0000644000175000017500000000122711363620006024132 0ustar borisboris‰PNG  IHDRªˆ…>Ê eÌB|âó@p´ÅB…ñŒúð@˜ø±ÄV¨rÀ€1Ê"Ðs"†üdŒÀn ´!jõª:žQ© ã¨Å!å:°+MšæåÊÚ‹W§‚F•xKgÆÚ(;\ÖlŒÝ,=ïQôh±r´J½3FTê6̨ò‚>R¡,=eµ×SjÎUÙ@ 8¢ÂD×0Ödn3]G °FæžEã|…8ɹ+9@ºNs,ƺ®˜ÎpÝfí£6˜S{Q»ürÿ+tNÝàAÛIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/StdInInputSource_8hpp-source.html0000644000175000017500000002220211363620004024034 0ustar borisboris Xerces-C++: StdInInputSource.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMNotation-members.html0000644000175000017500000004206411363620005023177 0ustar borisboris Xerces-C++: Member List

    DOMNotation Member List

    This is the complete list of members for DOMNotation, including all inherited members.

    appendChild(DOMNode *newChild)=0DOMNode [pure virtual]
    ATTRIBUTE_NODE enum valueDOMNode
    CDATA_SECTION_NODE enum valueDOMNode
    cloneNode(bool deep) const =0DOMNode [pure virtual]
    COMMENT_NODE enum valueDOMNode
    compareDocumentPosition(const DOMNode *other) const =0DOMNode [pure virtual]
    DOCUMENT_FRAGMENT_NODE enum valueDOMNode
    DOCUMENT_NODE enum valueDOMNode
    DOCUMENT_POSITION_CONTAINED_BY enum valueDOMNode
    DOCUMENT_POSITION_CONTAINS enum valueDOMNode
    DOCUMENT_POSITION_DISCONNECTED enum valueDOMNode
    DOCUMENT_POSITION_FOLLOWING enum valueDOMNode
    DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC enum valueDOMNode
    DOCUMENT_POSITION_PRECEDING enum valueDOMNode
    DOCUMENT_TYPE_NODE enum valueDOMNode
    DocumentPosition enum nameDOMNode
    DOMNode()DOMNode [protected]
    DOMNode(const DOMNode &)DOMNode [protected]
    DOMNotation()DOMNotation [protected]
    DOMNotation(const DOMNotation &other)DOMNotation [protected]
    ELEMENT_NODE enum valueDOMNode
    ENTITY_NODE enum valueDOMNode
    ENTITY_REFERENCE_NODE enum valueDOMNode
    getAttributes() const =0DOMNode [pure virtual]
    getBaseURI() const =0DOMNode [pure virtual]
    getChildNodes() const =0DOMNode [pure virtual]
    getFeature(const XMLCh *feature, const XMLCh *version) const =0DOMNode [pure virtual]
    getFirstChild() const =0DOMNode [pure virtual]
    getLastChild() const =0DOMNode [pure virtual]
    getLocalName() const =0DOMNode [pure virtual]
    getNamespaceURI() const =0DOMNode [pure virtual]
    getNextSibling() const =0DOMNode [pure virtual]
    getNodeName() const =0DOMNode [pure virtual]
    getNodeType() const =0DOMNode [pure virtual]
    getNodeValue() const =0DOMNode [pure virtual]
    getOwnerDocument() const =0DOMNode [pure virtual]
    getParentNode() const =0DOMNode [pure virtual]
    getPrefix() const =0DOMNode [pure virtual]
    getPreviousSibling() const =0DOMNode [pure virtual]
    getPublicId() const =0DOMNotation [pure virtual]
    getSystemId() const =0DOMNotation [pure virtual]
    getTextContent() const =0DOMNode [pure virtual]
    getUserData(const XMLCh *key) const =0DOMNode [pure virtual]
    hasAttributes() const =0DOMNode [pure virtual]
    hasChildNodes() const =0DOMNode [pure virtual]
    insertBefore(DOMNode *newChild, DOMNode *refChild)=0DOMNode [pure virtual]
    isDefaultNamespace(const XMLCh *namespaceURI) const =0DOMNode [pure virtual]
    isEqualNode(const DOMNode *arg) const =0DOMNode [pure virtual]
    isSameNode(const DOMNode *other) const =0DOMNode [pure virtual]
    isSupported(const XMLCh *feature, const XMLCh *version) const =0DOMNode [pure virtual]
    lookupNamespaceURI(const XMLCh *prefix) const =0DOMNode [pure virtual]
    lookupPrefix(const XMLCh *namespaceURI) const =0DOMNode [pure virtual]
    NodeType enum nameDOMNode
    normalize()=0DOMNode [pure virtual]
    NOTATION_NODE enum valueDOMNode
    PROCESSING_INSTRUCTION_NODE enum valueDOMNode
    release()=0DOMNode [pure virtual]
    removeChild(DOMNode *oldChild)=0DOMNode [pure virtual]
    replaceChild(DOMNode *newChild, DOMNode *oldChild)=0DOMNode [pure virtual]
    setNodeValue(const XMLCh *nodeValue)=0DOMNode [pure virtual]
    setPrefix(const XMLCh *prefix)=0DOMNode [pure virtual]
    setTextContent(const XMLCh *textContent)=0DOMNode [pure virtual]
    setUserData(const XMLCh *key, void *data, DOMUserDataHandler *handler)=0DOMNode [pure virtual]
    TEXT_NODE enum valueDOMNode
    ~DOMNode()DOMNode [virtual]
    ~DOMNotation()DOMNotation [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/structXMLTransService_1_1TransRec.html0000644000175000017500000000757611363620006024740 0ustar borisboris Xerces-C++: XMLTransService::TransRec Struct Reference

    XMLTransService::TransRec Struct Reference

    List of all members.

    Public Attributes

    XMLCh intCh
    XMLByte extCh


    Member Data Documentation


    The documentation for this struct was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLSynchronizedStringPool.html0000644000175000017500000002770711363620006024505 0ustar borisboris Xerces-C++: XMLSynchronizedStringPool Class Reference

    XMLSynchronizedStringPool Class Reference

    List of all members.

    Public Member Functions

     XMLSynchronizedStringPool (const XMLStringPool *constPool, const unsigned int modulus=109, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
    virtual ~XMLSynchronizedStringPool ()
    virtual unsigned int addOrFind (const XMLCh *const newString)
    virtual bool exists (const XMLCh *const newString) const
    virtual bool exists (const unsigned int id) const
    virtual void flushAll ()
    virtual unsigned int getId (const XMLCh *const toFind) const
    virtual const XMLChgetValueForId (const unsigned int id) const
    virtual unsigned int getStringCount () const


    Constructor & Destructor Documentation

    XMLSynchronizedStringPool::XMLSynchronizedStringPool ( const XMLStringPool *  constPool,
    const unsigned int  modulus = 109,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    virtual XMLSynchronizedStringPool::~XMLSynchronizedStringPool (  )  [virtual]


    Member Function Documentation

    virtual unsigned int XMLSynchronizedStringPool::addOrFind ( const XMLCh *const   newString  )  [virtual]

    virtual bool XMLSynchronizedStringPool::exists ( const XMLCh *const   newString  )  const [virtual]

    virtual bool XMLSynchronizedStringPool::exists ( const unsigned int  id  )  const [virtual]

    virtual void XMLSynchronizedStringPool::flushAll (  )  [virtual]

    virtual unsigned int XMLSynchronizedStringPool::getId ( const XMLCh *const   toFind  )  const [virtual]

    virtual const XMLCh* XMLSynchronizedStringPool::getValueForId ( const unsigned int  id  )  const [virtual]

    virtual unsigned int XMLSynchronizedStringPool::getStringCount (  )  const [virtual]


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classSAXParser.html0000644000175000017500000077771011363620006021242 0ustar borisboris Xerces-C++: SAXParser Class Reference

    SAXParser Class Reference

    This class implements the SAX 'Parser' interface and should be used by applications wishing to parse the XML files using SAX. More...

    Inheritance diagram for SAXParser:

    XMemory Parser XMLDocumentHandler XMLErrorReporter XMLEntityHandler

    List of all members.

    Public Types

    enum  ValSchemes { Val_Never, Val_Always, Val_Auto }
     ValScheme enum used in setValidationScheme Val_Never: Do not report validation errors. More...

    Public Member Functions

    Constructors and Destructor
     SAXParser (XMLValidator *const valToAdopt=0, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager, XMLGrammarPool *const gramPool=0)
     Constructor with an instance of validator class to use for validation.
     ~SAXParser ()
     Destructor.
    Getter methods
    DocumentHandlergetDocumentHandler ()
     This method returns the installed document handler.
    const DocumentHandlergetDocumentHandler () const
     This method returns the installed document handler.
    EntityResolvergetEntityResolver ()
     This method returns the installed entity resolver.
    const EntityResolvergetEntityResolver () const
     This method returns the installed entity resolver.
    XMLEntityResolvergetXMLEntityResolver ()
     This method returns the installed entity resolver.
    const XMLEntityResolvergetXMLEntityResolver () const
     This method returns the installed entity resolver.
    ErrorHandlergetErrorHandler ()
     This method returns the installed error handler.
    const ErrorHandlergetErrorHandler () const
     This method returns the installed error handler.
    PSVIHandlergetPSVIHandler ()
     This method returns the installed PSVI handler.
    const PSVIHandlergetPSVIHandler () const
     This method returns the installed PSVI handler.
    const XMLValidatorgetValidator () const
     This method returns a reference to the parser's installed validator.
    ValSchemes getValidationScheme () const
     This method returns an enumerated value that indicates the current validation scheme set on this parser.
    bool getDoSchema () const
     Get the 'do schema' flag.
    bool getValidationSchemaFullChecking () const
     Get the 'full schema constraint checking' flag.
    bool getIdentityConstraintChecking () const
     Get the 'identity constraint checking' flag.
    int getErrorCount () const
     Get error count from the last parse operation.
    bool getDoNamespaces () const
     This method returns the state of the parser's namespace handling capability.
    bool getExitOnFirstFatalError () const
     This method returns the state of the parser's exit-on-First-Fatal-Error flag.
    bool getValidationConstraintFatal () const
     This method returns the state of the parser's validation-constraint-fatal flag.
    XMLChgetExternalSchemaLocation () const
     Get the set of Namespace/SchemaLocation that is specified externally.
    XMLChgetExternalNoNamespaceSchemaLocation () const
     Get the noNamespace SchemaLocation that is specified externally.
    SecurityManagergetSecurityManager () const
     Get the SecurityManager instance attached to this parser.
    XMLSize_t getLowWaterMark () const
     Get the raw buffer low water mark for this parser.
    bool getLoadExternalDTD () const
     Get the 'Loading External DTD' flag.
    bool getLoadSchema () const
     Get the 'Loading Schema' flag.
    bool isCachingGrammarFromParse () const
     Get the 'Grammar caching' flag.
    bool isUsingCachedGrammarInParse () const
     Get the 'Use cached grammar' flag.
    bool getCalculateSrcOfs () const
     Get the 'calculate src offset flag'.
    bool getStandardUriConformant () const
     Get the 'force standard uri flag'.
    Grammar * getGrammar (const XMLCh *const nameSpaceKey)
     Retrieve the grammar that is associated with the specified namespace key.
    Grammar * getRootGrammar ()
     Retrieve the grammar where the root element is declared.
    const XMLChgetURIText (unsigned int uriId) const
     Returns the string corresponding to a URI id from the URI string pool.
    XMLFilePos getSrcOffset () const
     Returns the current src offset within the input source.
    bool getGenerateSyntheticAnnotations () const
     Get the 'generate synthetic annotations' flag.
    bool getValidateAnnotations () const
     Get the 'validate annotations' flag.
    bool getIgnoreCachedDTD () const
     Get the 'ignore cached DTD grammar' flag.
    bool getIgnoreAnnotations () const
     Get the 'ignore annotations' flag.
    bool getDisableDefaultEntityResolution () const
     Get the 'disable default entity resolution' flag.
    bool getSkipDTDValidation () const
     Get the 'skip DTD validation' flag.
    bool getHandleMultipleImports () const
     Get the 'handle multiple schema imports' flag.
    Setter methods
    void setGenerateSyntheticAnnotations (const bool newValue)
     set the 'generate synthetic annotations' flag
    void setValidateAnnotations (const bool newValue)
     set the 'validate annotations' flag
    void setDoNamespaces (const bool newState)
     This method allows users to enable or disable the parser's namespace processing.
    void setValidationScheme (const ValSchemes newScheme)
     This method allows users to set the validation scheme to be used by this parser.
    void setDoSchema (const bool newState)
     Set the 'schema support' flag.
    void setValidationSchemaFullChecking (const bool schemaFullChecking)
     This method allows the user to turn full Schema constraint checking on/off.
    void setIdentityConstraintChecking (const bool identityConstraintChecking)
     This method allows the user to turn identity constraint checking on/off.
    void setExitOnFirstFatalError (const bool newState)
     This method allows users to set the parser's behaviour when it encounters the first fatal error.
    void setValidationConstraintFatal (const bool newState)
     This method allows users to set the parser's behaviour when it encounters a validation constraint error.
    void setExternalSchemaLocation (const XMLCh *const schemaLocation)
     This method allows the user to specify a list of schemas to use.
    void setExternalSchemaLocation (const char *const schemaLocation)
     This method is same as setExternalSchemaLocation(const XMLCh* const).
    void setExternalNoNamespaceSchemaLocation (const XMLCh *const noNamespaceSchemaLocation)
     This method allows the user to specify the no target namespace XML Schema Location externally.
    void setExternalNoNamespaceSchemaLocation (const char *const noNamespaceSchemaLocation)
     This method is same as setExternalNoNamespaceSchemaLocation(const XMLCh* const).
    void setSecurityManager (SecurityManager *const securityManager)
     This allows an application to set a SecurityManager on the parser; this object stores information that various components use to limit their consumption of system resources while processing documents.
    void setLowWaterMark (XMLSize_t lwm)
     Set the raw buffer low water mark for this parser.
    void setLoadExternalDTD (const bool newState)
     Set the 'Loading External DTD' flag.
    void setLoadSchema (const bool newState)
     Set the 'Loading Schema' flag.
    void cacheGrammarFromParse (const bool newState)
     Set the 'Grammar caching' flag.
    void useCachedGrammarInParse (const bool newState)
     Set the 'Use cached grammar' flag.
    void setCalculateSrcOfs (const bool newState)
     Enable/disable src offset calculation.
    void setStandardUriConformant (const bool newState)
     Force standard uri.
    void useScanner (const XMLCh *const scannerName)
     Set the scanner to use when scanning the XML document.
    void setInputBufferSize (const XMLSize_t bufferSize)
     Set maximum input buffer size.
    void setIgnoreCachedDTD (const bool newValue)
     Set the 'ignore cached DTD grammar' flag.
    void setIgnoreAnnotations (const bool newValue)
     Set the 'ignore annotation' flag.
    void setDisableDefaultEntityResolution (const bool newValue)
     Set the 'disable default entity resolution' flag.
    void setSkipDTDValidation (const bool newValue)
     Set the 'skip DTD validation' flag.
    void setHandleMultipleImports (const bool newValue)
     Set the 'handle multiple schema imports' flag.
    Advanced document handler list maintenance methods
    void installAdvDocHandler (XMLDocumentHandler *const toInstall)
     This method installs the specified 'advanced' document callback handler, thereby allowing the user to customize the processing, if they choose to do so.
    bool removeAdvDocHandler (XMLDocumentHandler *const toRemove)
     This method removes the 'advanced' document handler callback from the underlying parser scanner.
    Progressive scan methods
    bool parseFirst (const XMLCh *const systemId, XMLPScanToken &toFill)
     Begin a progressive parse operation.
    bool parseFirst (const char *const systemId, XMLPScanToken &toFill)
     Begin a progressive parse operation.
    bool parseFirst (const InputSource &source, XMLPScanToken &toFill)
     Begin a progressive parse operation.
    bool parseNext (XMLPScanToken &token)
     Continue a progressive parse operation.
    void parseReset (XMLPScanToken &token)
     Reset the parser after a progressive parse.
    Implementation of Grammar preparsing interface's.
    Grammar * loadGrammar (const InputSource &source, const Grammar::GrammarType grammarType, const bool toCache=false)
     Preparse schema grammar (XML Schema, DTD, etc.
    Grammar * loadGrammar (const XMLCh *const systemId, const Grammar::GrammarType grammarType, const bool toCache=false)
     Preparse schema grammar (XML Schema, DTD, etc.
    Grammar * loadGrammar (const char *const systemId, const Grammar::GrammarType grammarType, const bool toCache=false)
     Preparse schema grammar (XML Schema, DTD, etc.
    void resetCachedGrammarPool ()
     This method allows the user to reset the pool of cached grammars.
    Implementation of SAX 1.0 Parser interface's.
    virtual void parse (const InputSource &source)
     This method invokes the parsing process on the XML file specified by the InputSource parameter.
    virtual void parse (const XMLCh *const systemId)
     This method invokes the parsing process on the XML file specified by the Unicode string parameter 'systemId'.
    virtual void parse (const char *const systemId)
     This method invokes the parsing process on the XML file specified by the native char* string parameter 'systemId'.
    virtual void setDocumentHandler (DocumentHandler *const handler)
     This method installs the user specified SAX Document Handler callback function on parser.
    virtual void setDTDHandler (DTDHandler *const handler)
     This method installs the user specified DTD handler on the parser.
    virtual void setErrorHandler (ErrorHandler *const handler)
     This method installs the user specified error handler on the parser.
    virtual void setPSVIHandler (PSVIHandler *const handler)
     This method installs the user specified PSVI handler on the parser.
    virtual void setEntityResolver (EntityResolver *const resolver)
     This method installs the user specified entity resolver on the parser.
    virtual void setXMLEntityResolver (XMLEntityResolver *const resolver)
     This method installs the user specified entity resolver on the parser.
    Implementation of the XMLDocumentHandler Interface.
    virtual void docCharacters (const XMLCh *const chars, const XMLSize_t length, const bool cdataSection)
     This method is used to report all the characters scanned by the parser.
    virtual void docComment (const XMLCh *const comment)
     This method is used to report any comments scanned by the parser.
    virtual void docPI (const XMLCh *const target, const XMLCh *const data)
     This method is used to report any PI scanned by the parser.
    virtual void endDocument ()
     This method is used to indicate the end of root element was just scanned by the parser.
    virtual void endElement (const XMLElementDecl &elemDecl, const unsigned int urlId, const bool isRoot, const XMLCh *const elemPrefix)
     This method is used to indicate the end tag of an element.
    virtual void endEntityReference (const XMLEntityDecl &entDecl)
     This method is used to indicate that an end of an entity reference was just scanned.
    virtual void ignorableWhitespace (const XMLCh *const chars, const XMLSize_t length, const bool cdataSection)
     This method is used to report all the whitespace characters, which are determined to be 'ignorable'.
    virtual void resetDocument ()
     This method allows the user installed Document Handler and any advanced callback handlers to 'reset' themselves.
    virtual void startDocument ()
     This method is used to report the start of the parsing process.
    virtual void startElement (const XMLElementDecl &elemDecl, const unsigned int urlId, const XMLCh *const elemPrefix, const RefVectorOf< XMLAttr > &attrList, const XMLSize_t attrCount, const bool isEmpty, const bool isRoot)
     This method is used to report the start of an element.
    virtual void startEntityReference (const XMLEntityDecl &entDecl)
     This method is used to indicate the start of an entity reference.
    virtual void XMLDecl (const XMLCh *const versionStr, const XMLCh *const encodingStr, const XMLCh *const standaloneStr, const XMLCh *const actualEncodingStr)
     This method is used to report the XML decl scanned by the parser.
    Implementation of the XMLErrorReporter Interface.
    virtual void error (const unsigned int errCode, const XMLCh *const msgDomain, const XMLErrorReporter::ErrTypes errType, const XMLCh *const errorText, const XMLCh *const systemId, const XMLCh *const publicId, const XMLFileLoc lineNum, const XMLFileLoc colNum)
     This method is used to report back errors found while parsing the XML file.
    virtual void resetErrors ()
     This method allows the user installed Error Handler callback to 'reset' itself.
    Implementation of the XMLEntityHandler Interface.
    virtual void endInputSource (const InputSource &inputSource)
     This method is used to indicate the end of parsing of an external entity file.
    virtual bool expandSystemId (const XMLCh *const systemId, XMLBuffer &toFill)
     This method allows an installed XMLEntityHandler to further process any system id's of external entities encountered in the XML file being parsed, such as redirection etc.
    virtual void resetEntities ()
     This method allows the installed XMLEntityHandler to reset itself.
    virtual InputSourceresolveEntity (XMLResourceIdentifier *resourceIdentifier)
     Resolve a public/system id.
    virtual void startInputSource (const InputSource &inputSource)
     This method is used to indicate the start of parsing an external entity file.
    Implementation of the deprecated DocTypeHandler Interface
    virtual void attDef (const DTDElementDecl &elemDecl, const DTDAttDef &attDef, const bool ignore)
     This method is used to report an attribute definition.
    virtual void doctypeComment (const XMLCh *const comment)
     This method is used to report a comment occurring within the DTD.
    virtual void doctypeDecl (const DTDElementDecl &elemDecl, const XMLCh *const publicId, const XMLCh *const systemId, const bool hasIntSubset, const bool hasExtSubset=false)
     This method is used to report the DOCTYPE declaration.
    virtual void doctypePI (const XMLCh *const target, const XMLCh *const data)
     This method is used to report any PI declarations occurring inside the DTD definition block.
    virtual void doctypeWhitespace (const XMLCh *const chars, const XMLSize_t length)
     This method is used to report any whitespaces occurring inside the DTD definition block.
    virtual void elementDecl (const DTDElementDecl &decl, const bool isIgnored)
     This method is used to report an element declarations successfully scanned by the parser.
    virtual void endAttList (const DTDElementDecl &elemDecl)
     This method is used to report the end of an attribute list declaration for an element.
    virtual void endIntSubset ()
     This method is used to report the end of the internal subset.
    virtual void endExtSubset ()
     This method is used to report the end of the external subset.
    virtual void entityDecl (const DTDEntityDecl &entityDecl, const bool isPEDecl, const bool isIgnored)
     This method is used to report any entity declarations.
    virtual void resetDocType ()
     This method allows the user installed DTD handler to reset itself.
    virtual void notationDecl (const XMLNotationDecl &notDecl, const bool isIgnored)
     This method is used to report any notation declarations.
    virtual void startAttList (const DTDElementDecl &elemDecl)
     This method is used to indicate the start of an element's attribute list declaration.
    virtual void startIntSubset ()
     This method is used indicate the start of the internal subset.
    virtual void startExtSubset ()
     This method is used indicate the start of the external subset.
    virtual void TextDecl (const XMLCh *const versionStr, const XMLCh *const encodingStr)
     This method is used to report the TextDecl.

    Protected Member Functions

    const XMLScanner & getScanner () const
     This method returns a reference to the underlying scanner object.
    GrammarResolver * getGrammarResolver () const
     Get the Grammar resolver.


    Detailed Description

    This class implements the SAX 'Parser' interface and should be used by applications wishing to parse the XML files using SAX.

    It allows the client program to install SAX handlers for event callbacks.

    It can be used to instantiate a validating or non-validating parser, by setting a member flag.

    Deprecated:
    This interface has been replaced by the SAX2 interface, which includes Namespace support. See SAX2XMLReader for more information.
    Note - XMLDocumentHandler calls, when used with SAXParser, will not provide correct namespace information. This is becaue the SAX parser does not support namespace aware processing.

    Member Enumeration Documentation

    ValScheme enum used in setValidationScheme Val_Never: Do not report validation errors.

    Val_Always: The parser will always report validation errors. Val_Auto: The parser will report validation errors only if a grammar is specified.

    See also:
    setValidationScheme
    Enumerator:
    Val_Never 
    Val_Always 
    Val_Auto 


    Constructor & Destructor Documentation

    SAXParser::SAXParser ( XMLValidator *const   valToAdopt = 0,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager,
    XMLGrammarPool *const   gramPool = 0 
    )

    Constructor with an instance of validator class to use for validation.

    Parameters:
    valToAdopt Pointer to the validator instance to use. The parser is responsible for freeing the memory.
    manager Pointer to the memory manager to be used to allocate objects.
    gramPool The collection of cached grammars.

    SAXParser::~SAXParser (  ) 

    Destructor.


    Member Function Documentation

    DocumentHandler * SAXParser::getDocumentHandler (  ) 

    This method returns the installed document handler.

    Suitable for 'lvalue' usages.

    Returns:
    The pointer to the installed document handler object.

    const DocumentHandler * SAXParser::getDocumentHandler (  )  const

    This method returns the installed document handler.

    Suitable only for 'rvalue' usages.

    Returns:
    A const pointer to the installed document handler object.

    EntityResolver * SAXParser::getEntityResolver (  ) 

    This method returns the installed entity resolver.

    Suitable for 'lvalue' usages.

    Returns:
    The pointer to the installed entity resolver object.

    const EntityResolver * SAXParser::getEntityResolver (  )  const

    This method returns the installed entity resolver.

    Suitable for 'rvalue' usages.

    Returns:
    A const pointer to the installed entity resolver object.

    XMLEntityResolver * SAXParser::getXMLEntityResolver (  ) 

    This method returns the installed entity resolver.

    Suitable for 'lvalue' usages.

    Returns:
    The pointer to the installed entity resolver object.

    const XMLEntityResolver * SAXParser::getXMLEntityResolver (  )  const

    This method returns the installed entity resolver.

    Suitable for 'rvalue' usages.

    Returns:
    A const pointer to the installed entity resolver object.

    ErrorHandler * SAXParser::getErrorHandler (  ) 

    This method returns the installed error handler.

    Suitable for 'lvalue' usages.

    Returns:
    The pointer to the installed error handler object.

    const ErrorHandler * SAXParser::getErrorHandler (  )  const

    This method returns the installed error handler.

    Suitable for 'rvalue' usages.

    Returns:
    A const pointer to the installed error handler object.

    PSVIHandler * SAXParser::getPSVIHandler (  ) 

    This method returns the installed PSVI handler.

    Suitable for 'lvalue' usages.

    Returns:
    The pointer to the installed PSVI handler object.

    const PSVIHandler * SAXParser::getPSVIHandler (  )  const

    This method returns the installed PSVI handler.

    Suitable for 'rvalue' usages.

    Returns:
    A const pointer to the installed PSVI handler object.

    const XMLValidator& SAXParser::getValidator (  )  const

    This method returns a reference to the parser's installed validator.

    Returns:
    A const reference to the installed validator object.

    ValSchemes SAXParser::getValidationScheme (  )  const

    This method returns an enumerated value that indicates the current validation scheme set on this parser.

    Returns:
    The ValSchemes value current set on this parser.
    See also:
    setValidationScheme

    bool SAXParser::getDoSchema (  )  const

    Get the 'do schema' flag.

    This method returns the state of the parser's schema processing flag.

    Returns:
    true, if the parser is currently configured to understand schema, false otherwise.
    See also:
    setDoSchema

    bool SAXParser::getValidationSchemaFullChecking (  )  const

    Get the 'full schema constraint checking' flag.

    This method returns the state of the parser's full schema constraint checking flag.

    Returns:
    true, if the parser is currently configured to have full schema constraint checking, false otherwise.
    See also:
    setValidationSchemaFullChecking

    bool SAXParser::getIdentityConstraintChecking (  )  const

    Get the 'identity constraint checking' flag.

    This method returns the state of the parser's identity constraint checking flag.

    Returns:
    true, if the parser is currently configured to have identity constraint checking, false otherwise.
    See also:
    setIdentityConstraintChecking

    int SAXParser::getErrorCount (  )  const

    Get error count from the last parse operation.

    This method returns the error count from the last parse operation. Note that this count is actually stored in the scanner, so this method simply returns what the scanner reports.

    Returns:
    number of errors encountered during the latest parse operation.

    bool SAXParser::getDoNamespaces (  )  const

    This method returns the state of the parser's namespace handling capability.

    Returns:
    true, if the parser is currently configured to understand namespaces, false otherwise.
    See also:
    setDoNamespaces

    bool SAXParser::getExitOnFirstFatalError (  )  const

    This method returns the state of the parser's exit-on-First-Fatal-Error flag.

    Returns:
    true, if the parser is currently configured to exit on the first fatal error, false otherwise.
    See also:
    setExitOnFirstFatalError

    bool SAXParser::getValidationConstraintFatal (  )  const

    This method returns the state of the parser's validation-constraint-fatal flag.

    Returns:
    true, if the parser is currently configured to set validation constraint errors as fatal, false otherwise.
    See also:
    setValidationConstraintFatal

    XMLCh* SAXParser::getExternalSchemaLocation (  )  const

    Get the set of Namespace/SchemaLocation that is specified externally.

    This method returns the list of Namespace/SchemaLocation that was specified using setExternalSchemaLocation.

    The parser owns the returned string, and the memory allocated for the returned string will be destroyed when the parser is deleted.

    To ensure accessibility of the returned information after the parser is deleted, callers need to copy and store the returned information somewhere else.

    Returns:
    a pointer to the list of Namespace/SchemaLocation that was specified externally. The pointer spans the same life-time as the parser. A null pointer is returned if nothing was specified externally.
    See also:
    setExternalSchemaLocation(const XMLCh* const)

    XMLCh* SAXParser::getExternalNoNamespaceSchemaLocation (  )  const

    Get the noNamespace SchemaLocation that is specified externally.

    This method returns the no target namespace XML Schema Location that was specified using setExternalNoNamespaceSchemaLocation.

    The parser owns the returned string, and the memory allocated for the returned string will be destroyed when the parser is deleted.

    To ensure accessibility of the returned information after the parser is deleted, callers need to copy and store the returned information somewhere else.

    Returns:
    a pointer to the no target namespace Schema Location that was specified externally. The pointer spans the same life-time as the parser. A null pointer is returned if nothing was specified externally.
    See also:
    setExternalNoNamespaceSchemaLocation(const XMLCh* const)

    SecurityManager* SAXParser::getSecurityManager (  )  const

    Get the SecurityManager instance attached to this parser.

    This method returns the security manager that was specified using setSecurityManager.

    The SecurityManager instance must have been specified by the application; this should not be deleted until after the parser has been deleted (or a new SecurityManager instance has been supplied to the parser).

    Returns:
    a pointer to the SecurityManager instance specified externally. A null pointer is returned if nothing was specified externally.
    See also:
    setSecurityManager(SecurityManager* const)

    XMLSize_t SAXParser::getLowWaterMark (  )  const

    Get the raw buffer low water mark for this parser.

    If the number of available bytes in the raw buffer is less than the low water mark the parser will attempt to read more data before continuing parsing. By default the value for this parameter is 100 bytes. You may want to set this parameter to 0 if you would like the parser to parse the available data immediately without potentially blocking while waiting for more date.

    Returns:
    current low water mark
    See also:
    setSecurityManager

    bool SAXParser::getLoadExternalDTD (  )  const

    Get the 'Loading External DTD' flag.

    This method returns the state of the parser's loading external DTD flag.

    Returns:
    false, if the parser is currently configured to ignore external DTD completely, true otherwise.
    See also:
    setLoadExternalDTD

    getValidationScheme

    bool SAXParser::getLoadSchema (  )  const

    Get the 'Loading Schema' flag.

    This method returns the state of the parser's loading schema flag.

    Returns:
    true, if the parser is currently configured to automatically load schemas that are not in the grammar pool, false otherwise.
    See also:
    setLoadSchema

    bool SAXParser::isCachingGrammarFromParse (  )  const

    Get the 'Grammar caching' flag.

    This method returns the state of the parser's grammar caching when parsing an XML document.

    Returns:
    true, if the parser is currently configured to cache grammars, false otherwise.
    See also:
    cacheGrammarFromParse

    bool SAXParser::isUsingCachedGrammarInParse (  )  const

    Get the 'Use cached grammar' flag.

    This method returns the state of the parser's use of cached grammar when parsing an XML document.

    Returns:
    true, if the parser is currently configured to use cached grammars, false otherwise.
    See also:
    useCachedGrammarInParse

    bool SAXParser::getCalculateSrcOfs (  )  const

    Get the 'calculate src offset flag'.

    This method returns the state of the parser's src offset calculation when parsing an XML document.

    Returns:
    true, if the parser is currently configured to calculate src offsets, false otherwise.
    See also:
    setCalculateSrcOfs

    bool SAXParser::getStandardUriConformant (  )  const

    Get the 'force standard uri flag'.

    This method returns the state if the parser forces standard uri

    Returns:
    true, if the parser is currently configured to force standard uri, i.e. malformed uri will be rejected.
    See also:
    setStandardUriConformant

    Grammar* SAXParser::getGrammar ( const XMLCh *const   nameSpaceKey  ) 

    Retrieve the grammar that is associated with the specified namespace key.

    Parameters:
    nameSpaceKey Namespace key
    Returns:
    Grammar associated with the Namespace key.

    Grammar* SAXParser::getRootGrammar (  ) 

    Retrieve the grammar where the root element is declared.

    Returns:
    Grammar where root element declared

    const XMLCh* SAXParser::getURIText ( unsigned int  uriId  )  const

    Returns the string corresponding to a URI id from the URI string pool.

    Parameters:
    uriId id of the string in the URI string pool.
    Returns:
    URI string corresponding to the URI id.

    XMLFilePos SAXParser::getSrcOffset (  )  const

    Returns the current src offset within the input source.

    To be used only while parsing is in progress.

    Returns:
    offset within the input source

    bool SAXParser::getGenerateSyntheticAnnotations (  )  const

    Get the 'generate synthetic annotations' flag.

    Returns:
    true, if the parser is currently configured to generate synthetic annotations, false otherwise. A synthetic XSAnnotation is created when a schema component has non-schema attributes but has no child annotations so that the non-schema attributes can be recovered under PSVI.
    See also:
    setGenerateSyntheticAnnotations

    bool SAXParser::getValidateAnnotations (  )  const

    Get the 'validate annotations' flag.

    Returns:
    true, if the parser is currently configured to validate annotations, false otherwise.
    See also:
    setValidateAnnotations

    bool SAXParser::getIgnoreCachedDTD (  )  const

    Get the 'ignore cached DTD grammar' flag.

    Returns:
    true, if the parser is currently configured to ignore cached DTD, false otherwise.
    See also:
    setIgnoreCachedDTD

    bool SAXParser::getIgnoreAnnotations (  )  const

    Get the 'ignore annotations' flag.

    Returns:
    true, if the parser is currently configured to ignore annotations, false otherwise.
    See also:
    setIgnoreAnnotations

    bool SAXParser::getDisableDefaultEntityResolution (  )  const

    Get the 'disable default entity resolution' flag.

    Returns:
    true, if the parser is currently configured to not perform default entity resolution, false otherwise.
    See also:
    setDisableDefaultEntityResolution

    bool SAXParser::getSkipDTDValidation (  )  const

    Get the 'skip DTD validation' flag.

    Returns:
    true, if the parser is currently configured to skip DTD validation, false otherwise.
    See also:
    setSkipDTDValidation

    bool SAXParser::getHandleMultipleImports (  )  const

    Get the 'handle multiple schema imports' flag.

    Returns:
    true, if the parser is currently configured to import multiple schemas with the same namespace, false otherwise.
    See also:
    setHandleMultipleImports

    void SAXParser::setGenerateSyntheticAnnotations ( const bool  newValue  ) 

    set the 'generate synthetic annotations' flag

    Parameters:
    newValue The value for specifying whether Synthetic Annotations should be generated or not. A synthetic XSAnnotation is created when a schema component has non-schema attributes but has no child annotations.
    See also:
    getGenerateSyntheticAnnotations

    void SAXParser::setValidateAnnotations ( const bool  newValue  ) 

    set the 'validate annotations' flag

    Parameters:
    newValue The value for specifying whether annotations should be validate or not.
    See also:
    getValidateAnnotations

    void SAXParser::setDoNamespaces ( const bool  newState  ) 

    This method allows users to enable or disable the parser's namespace processing.

    When set to true, parser starts enforcing all the constraints / rules specified by the NameSpace specification.

    The parser's default state is: false.

    Parameters:
    newState The value specifying whether NameSpace rules should be enforced or not.
    See also:
    getDoNamespaces

    void SAXParser::setValidationScheme ( const ValSchemes  newScheme  ) 

    This method allows users to set the validation scheme to be used by this parser.

    The value is one of the ValSchemes enumerated values defined by this class:


    Val_Never - turn off validation
    Val_Always - turn on validation
    Val_Auto - turn on validation if any internal/external DTD subset have been seen

    The parser's default state is: Val_Never.

    Parameters:
    newScheme The new validation scheme to use.
    See also:
    getValidationScheme

    void SAXParser::setDoSchema ( const bool  newState  ) 

    Set the 'schema support' flag.

    This method allows users to enable or disable the parser's schema processing. When set to false, parser will not process any schema found.

    The parser's default state is: false.

    Note: If set to true, namespace processing must also be turned on.

    Parameters:
    newState The value specifying whether schema support should be enforced or not.
    See also:
    getDoSchema

    void SAXParser::setValidationSchemaFullChecking ( const bool  schemaFullChecking  ) 

    This method allows the user to turn full Schema constraint checking on/off.

    Only takes effect if Schema validation is enabled. If turned off, partial constraint checking is done.

    Full schema constraint checking includes those checking that may be time-consuming or memory intensive. Currently, particle unique attribution constraint checking and particle derivation restriction checking are controlled by this option.

    The parser's default state is: false.

    Parameters:
    schemaFullChecking True to turn on full schema constraint checking.
    See also:
    getValidationSchemaFullChecking

    void SAXParser::setIdentityConstraintChecking ( const bool  identityConstraintChecking  ) 

    This method allows the user to turn identity constraint checking on/off.

    Only takes effect if Schema validation is enabled. If turned off, identity constraint checking is not done.

    The parser's default state is: true.

    Parameters:
    identityConstraintChecking True to turn on identity constraint checking.
    See also:
    getIdentityConstraintChecking

    void SAXParser::setExitOnFirstFatalError ( const bool  newState  ) 

    This method allows users to set the parser's behaviour when it encounters the first fatal error.

    If set to true, the parser will exit at the first fatal error. If false, then it will report the error and continue processing.

    The default value is 'true' and the parser exits on the first fatal error.

    Parameters:
    newState The value specifying whether the parser should continue or exit when it encounters the first fatal error.
    See also:
    getExitOnFirstFatalError

    void SAXParser::setValidationConstraintFatal ( const bool  newState  ) 

    This method allows users to set the parser's behaviour when it encounters a validation constraint error.

    If set to true, and the the parser will treat validation error as fatal and will exit depends on the state of "getExitOnFirstFatalError". If false, then it will report the error and continue processing.

    Note: setting this true does not mean the validation error will be printed with the word "Fatal Error". It is still printed as "Error", but the parser will exit if "setExitOnFirstFatalError" is set to true.

    The default value is 'false'.

    Parameters:
    newState If true, the parser will exit if "setExitOnFirstFatalError" is set to true.
    See also:
    getValidationConstraintFatal

    setExitOnFirstFatalError

    void SAXParser::setExternalSchemaLocation ( const XMLCh *const   schemaLocation  ) 

    This method allows the user to specify a list of schemas to use.

    If the targetNamespace of a schema specified using this method matches the targetNamespace of a schema occurring in the instance document in the schemaLocation attribute, or if the targetNamespace matches the namespace attribute of the "import" element, the schema specified by the user using this method will be used (i.e., the schemaLocation attribute in the instance document or on the "import" element will be effectively ignored).

    If this method is called more than once, only the last one takes effect.

    The syntax is the same as for schemaLocation attributes in instance documents: e.g, "http://www.example.com file_name.xsd". The user can specify more than one XML Schema in the list.

    Parameters:
    schemaLocation the list of schemas to use
    See also:
    getExternalSchemaLocation

    void SAXParser::setExternalSchemaLocation ( const char *const   schemaLocation  ) 

    This method is same as setExternalSchemaLocation(const XMLCh* const).

    It takes native char string as parameter

    Parameters:
    schemaLocation the list of schemas to use
    See also:
    setExternalSchemaLocation(const XMLCh* const)

    void SAXParser::setExternalNoNamespaceSchemaLocation ( const XMLCh *const   noNamespaceSchemaLocation  ) 

    This method allows the user to specify the no target namespace XML Schema Location externally.

    If specified, the instance document's noNamespaceSchemaLocation attribute will be effectively ignored.

    If this method is called more than once, only the last one takes effect.

    The syntax is the same as for the noNamespaceSchemaLocation attribute that may occur in an instance document: e.g."file_name.xsd".

    Parameters:
    noNamespaceSchemaLocation the XML Schema Location with no target namespace
    See also:
    getExternalNoNamespaceSchemaLocation

    void SAXParser::setExternalNoNamespaceSchemaLocation ( const char *const   noNamespaceSchemaLocation  ) 

    This method is same as setExternalNoNamespaceSchemaLocation(const XMLCh* const).

    It takes native char string as parameter

    Parameters:
    noNamespaceSchemaLocation the XML Schema Location with no target namespace
    See also:
    setExternalNoNamespaceSchemaLocation(const XMLCh* const)

    void SAXParser::setSecurityManager ( SecurityManager *const   securityManager  ) 

    This allows an application to set a SecurityManager on the parser; this object stores information that various components use to limit their consumption of system resources while processing documents.

    If this method is called more than once, only the last one takes effect. It may not be reset during a parse.

    Parameters:
    securityManager the SecurityManager instance to be used by this parser
    See also:
    getSecurityManager

    void SAXParser::setLowWaterMark ( XMLSize_t  lwm  ) 

    Set the raw buffer low water mark for this parser.

    If the number of available bytes in the raw buffer is less than the low water mark the parser will attempt to read more data before continuing parsing. By default the value for this parameter is 100 bytes. You may want to set this parameter to 0 if you would like the parser to parse the available data immediately without potentially blocking while waiting for more date.

    Parameters:
    lwm new low water mark
    See also:
    getSecurityManager

    void SAXParser::setLoadExternalDTD ( const bool  newState  ) 

    Set the 'Loading External DTD' flag.

    This method allows users to enable or disable the loading of external DTD. When set to false, the parser will ignore any external DTD completely if the validationScheme is set to Val_Never.

    The parser's default state is: true.

    This flag is ignored if the validationScheme is set to Val_Always or Val_Auto.

    Parameters:
    newState The value specifying whether external DTD should be loaded or not.
    See also:
    getLoadExternalDTD

    setValidationScheme

    void SAXParser::setLoadSchema ( const bool  newState  ) 

    Set the 'Loading Schema' flag.

    This method allows users to enable or disable the loading of schemas. When set to false, the parser not attempt to load schemas beyond querying the grammar pool for them.

    The parser's default state is: true.

    Parameters:
    newState The value specifying whether schemas should be loaded if they're not found in the grammar pool.
    See also:
    getLoadSchema

    setDoSchema

    void SAXParser::cacheGrammarFromParse ( const bool  newState  ) 

    Set the 'Grammar caching' flag.

    This method allows users to enable or disable caching of grammar when parsing XML documents. When set to true, the parser will cache the resulting grammar for use in subsequent parses.

    If the flag is set to true, the 'Use cached grammar' flag will also be set to true.

    The parser's default state is: false.

    Parameters:
    newState The value specifying whether we should cache grammars or not.
    See also:
    isCachingGrammarFromParse

    useCachedGrammarInParse

    void SAXParser::useCachedGrammarInParse ( const bool  newState  ) 

    Set the 'Use cached grammar' flag.

    This method allows users to enable or disable the use of cached grammars. When set to true, the parser will use the cached grammar, instead of building the grammar from scratch, to validate XML documents.

    If the 'Grammar caching' flag is set to true, this method ignores the value passed in.

    The parser's default state is: false.

    Parameters:
    newState The value specifying whether we should use the cached grammar or not.
    See also:
    isUsingCachedGrammarInParse

    cacheGrammarFromParse

    void SAXParser::setCalculateSrcOfs ( const bool  newState  ) 

    Enable/disable src offset calculation.

    This method allows users to enable/disable src offset calculation. Disabling the calculation will improve performance.

    The parser's default state is: false.

    Parameters:
    newState The value specifying whether we should enable or disable src offset calculation
    See also:
    getCalculateSrcOfs

    void SAXParser::setStandardUriConformant ( const bool  newState  ) 

    Force standard uri.

    This method allows users to tell the parser to force standard uri conformance.

    The parser's default state is: false.

    Parameters:
    newState The value specifying whether the parser should reject malformed URI.
    See also:
    getStandardUriConformant

    void SAXParser::useScanner ( const XMLCh *const   scannerName  ) 

    Set the scanner to use when scanning the XML document.

    This method allows users to set the scanner to use when scanning a given XML document.

    Parameters:
    scannerName The name of the desired scanner

    void SAXParser::setInputBufferSize ( const XMLSize_t  bufferSize  ) 

    Set maximum input buffer size.

    This method allows users to limit the size of buffers used in parsing XML character data. The effect of setting this size is to limit the size of a ContentHandler::characters() call.

    The parser's default input buffer size is 1 megabyte.

    Parameters:
    bufferSize The maximum input buffer size

    void SAXParser::setIgnoreCachedDTD ( const bool  newValue  ) 

    Set the 'ignore cached DTD grammar' flag.

    This method gives users the option to ignore a cached DTD grammar, when an XML document contains both an internal and external DTD, and the use cached grammar from parse option is enabled. Currently, we do not allow using cached DTD grammar when an internal subset is present in the document. This option will only affect the behavior of the parser when an internal and external DTD both exist in a document (i.e. no effect if document has no internal subset).

    The parser's default state is false

    Parameters:
    newValue The state to set

    void SAXParser::setIgnoreAnnotations ( const bool  newValue  ) 

    Set the 'ignore annotation' flag.

    This method gives users the option to not generate XSAnnotations when "traversing" a schema.

    The parser's default state is false

    Parameters:
    newValue The state to set

    void SAXParser::setDisableDefaultEntityResolution ( const bool  newValue  ) 

    Set the 'disable default entity resolution' flag.

    This method gives users the option to not perform default entity resolution. If the user's resolveEntity method returns NULL the parser will try to resolve the entity on its own. When this option is set to true, the parser will not attempt to resolve the entity when the resolveEntity method returns NULL.

    The parser's default state is false

    Parameters:
    newValue The state to set
    See also:
    EntityResolver

    void SAXParser::setSkipDTDValidation ( const bool  newValue  ) 

    Set the 'skip DTD validation' flag.

    This method gives users the option to skip DTD validation only when schema validation is on (i.e. when performing validation, we will ignore the DTD, except for entities, when schema validation is enabled).

    NOTE: This option is ignored if schema validation is disabled.

    The parser's default state is false

    Parameters:
    newValue The state to set

    void SAXParser::setHandleMultipleImports ( const bool  newValue  ) 

    Set the 'handle multiple schema imports' flag.

    This method gives users the ability to import multiple schemas that have the same namespace.

    NOTE: This option is ignored if schema validation is disabled.

    The parser's default state is false

    Parameters:
    newValue The state to set

    void SAXParser::installAdvDocHandler ( XMLDocumentHandler *const   toInstall  ) 

    This method installs the specified 'advanced' document callback handler, thereby allowing the user to customize the processing, if they choose to do so.

    Any number of advanced callback handlers maybe installed.

    The methods in the advanced callback interface represent Xerces-C extensions. There is no specification for this interface.

    Note - XMLDocumentHandler calls, when used with SAXParser, will not provide correct namespace information. This is becaue the SAX parser does not support namespace aware processing.

    Parameters:
    toInstall A pointer to the users advanced callback handler.
    See also:
    removeAdvDocHandler

    bool SAXParser::removeAdvDocHandler ( XMLDocumentHandler *const   toRemove  ) 

    This method removes the 'advanced' document handler callback from the underlying parser scanner.

    If no handler is installed, advanced callbacks are not invoked by the scanner.

    Parameters:
    toRemove A pointer to the advanced callback handler which should be removed.
    Note - XMLDocumentHandler calls, when used with SAXParser, will not provide correct namespace information. This is becaue the SAX parser does not support namespace aware processing.

    See also:
    installAdvDocHandler

    bool SAXParser::parseFirst ( const XMLCh *const   systemId,
    XMLPScanToken &  toFill 
    )

    Begin a progressive parse operation.

    This method is used to start a progressive parse on a XML file. To continue parsing, subsequent calls must be to the parseNext method.

    It scans through the prolog and returns a token to be used on subsequent scanNext() calls. If the return value is true, then the token is legal and ready for further use. If it returns false, then the scan of the prolog failed and the token is not going to work on subsequent scanNext() calls.

    Parameters:
    systemId A pointer to a Unicode string representing the path to the XML file to be parsed.
    toFill A token maintaing state information to maintain internal consistency between invocation of 'parseNext' calls.
    Returns:
    'true', if successful in parsing the prolog. It indicates the user can go ahead with parsing the rest of the file. It returns 'false' to indicate that the parser could parse the prolog (which means the token will not be valid.)
    See also:
    parseNext

    parseFirst(char*,...)

    parseFirst(InputSource&,...)

    bool SAXParser::parseFirst ( const char *const   systemId,
    XMLPScanToken &  toFill 
    )

    Begin a progressive parse operation.

    This method is used to start a progressive parse on a XML file. To continue parsing, subsequent calls must be to the parseNext method.

    It scans through the prolog and returns a token to be used on subsequent scanNext() calls. If the return value is true, then the token is legal and ready for further use. If it returns false, then the scan of the prolog failed and the token is not going to work on subsequent scanNext() calls.

    Parameters:
    systemId A pointer to a regular native string representing the path to the XML file to be parsed.
    toFill A token maintaing state information to maintain internal consistency between invocation of 'parseNext' calls.
    Returns:
    'true', if successful in parsing the prolog. It indicates the user can go ahead with parsing the rest of the file. It returns 'false' to indicate that the parser could not parse the prolog.
    See also:
    parseNext

    parseFirst(XMLCh*,...)

    parseFirst(InputSource&,...)

    bool SAXParser::parseFirst ( const InputSource source,
    XMLPScanToken &  toFill 
    )

    Begin a progressive parse operation.

    This method is used to start a progressive parse on a XML file. To continue parsing, subsequent calls must be to the parseNext method.

    It scans through the prolog and returns a token to be used on subsequent scanNext() calls. If the return value is true, then the token is legal and ready for further use. If it returns false, then the scan of the prolog failed and the token is not going to work on subsequent scanNext() calls.

    Parameters:
    source A const reference to the InputSource object which points to the XML file to be parsed.
    toFill A token maintaing state information to maintain internal consistency between invocation of 'parseNext' calls.
    Returns:
    'true', if successful in parsing the prolog. It indicates the user can go ahead with parsing the rest of the file. It returns 'false' to indicate that the parser could not parse the prolog.
    See also:
    parseNext

    parseFirst(XMLCh*,...)

    parseFirst(char*,...)

    bool SAXParser::parseNext ( XMLPScanToken &  token  ) 

    Continue a progressive parse operation.

    This method is used to continue with progressive parsing of XML files started by a call to 'parseFirst' method.

    It parses the XML file and stops as soon as it comes across a XML token (as defined in the XML specification). Relevant callback handlers are invoked as required by the SAX specification.

    Parameters:
    token A token maintaing state information to maintain internal consistency between invocation of 'parseNext' calls.
    Returns:
    'true', if successful in parsing the next XML token. It indicates the user can go ahead with parsing the rest of the file. It returns 'false' to indicate that the parser could not find next token as per the XML specification production rule.
    See also:
    parseFirst(XMLCh*,...)

    parseFirst(char*,...)

    parseFirst(InputSource&,...)

    void SAXParser::parseReset ( XMLPScanToken &  token  ) 

    Reset the parser after a progressive parse.

    If a progressive parse loop exits before the end of the document is reached, the parser has no way of knowing this. So it will leave open any files or sockets or memory buffers that were in use at the time that the parse loop exited.

    The next parse operation will cause these open files and such to be closed, but the next parse operation might occur at some unknown future point. To avoid this problem, you should reset the parser if you exit the loop early.

    If you exited because of an error, then this cleanup will be done for you. Its only when you exit the file prematurely of your own accord, because you've found what you wanted in the file most likely.

    Parameters:
    token A token maintaing state information to maintain internal consistency between invocation of 'parseNext' calls.

    Grammar* SAXParser::loadGrammar ( const InputSource source,
    const Grammar::GrammarType  grammarType,
    const bool  toCache = false 
    )

    Preparse schema grammar (XML Schema, DTD, etc.

    ) via an input source object.

    This method invokes the preparsing process on a schema grammar XML file specified by the SAX InputSource parameter. If the 'toCache' flag is enabled, the parser will cache the grammars for re-use. If a grammar key is found in the pool, no caching of any grammar will take place.

    Parameters:
    source A const reference to the SAX InputSource object which points to the schema grammar file to be preparsed.
    grammarType The grammar type (Schema or DTD).
    toCache If true, we cache the preparsed grammar, otherwise, no caching. Default is false.
    Returns:
    The preparsed schema grammar object (SchemaGrammar or DTDGrammar). That grammar object is owned by the parser.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    XMLException An exception from the parser or client handler code.
    DOMException A DOM exception as per DOM spec.
    See also:
    InputSource::InputSource

    Grammar* SAXParser::loadGrammar ( const XMLCh *const   systemId,
    const Grammar::GrammarType  grammarType,
    const bool  toCache = false 
    )

    Preparse schema grammar (XML Schema, DTD, etc.

    ) via a file path or URL

    This method invokes the preparsing process on a schema grammar XML file specified by the file path parameter. If the 'toCache' flag is enabled, the parser will cache the grammars for re-use. If a grammar key is found in the pool, no caching of any grammar will take place.

    Parameters:
    systemId A const XMLCh pointer to the Unicode string which contains the path to the XML grammar file to be preparsed.
    grammarType The grammar type (Schema or DTD).
    toCache If true, we cache the preparsed grammar, otherwise, no caching. Default is false.
    Returns:
    The preparsed schema grammar object (SchemaGrammar or DTDGrammar). That grammar object is owned by the parser.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    XMLException An exception from the parser or client handler code.
    DOMException A DOM exception as per DOM spec.

    Grammar* SAXParser::loadGrammar ( const char *const   systemId,
    const Grammar::GrammarType  grammarType,
    const bool  toCache = false 
    )

    Preparse schema grammar (XML Schema, DTD, etc.

    ) via a file path or URL

    This method invokes the preparsing process on a schema grammar XML file specified by the file path parameter. If the 'toCache' flag is enabled, the parser will cache the grammars for re-use. If a grammar key is found in the pool, no caching of any grammar will take place.

    Parameters:
    systemId A const char pointer to a native string which contains the path to the XML grammar file to be preparsed.
    grammarType The grammar type (Schema or DTD).
    toCache If true, we cache the preparsed grammar, otherwise, no caching. Default is false.
    Returns:
    The preparsed schema grammar object (SchemaGrammar or DTDGrammar). That grammar object is owned by the parser.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    XMLException An exception from the parser or client handler code.
    DOMException A DOM exception as per DOM spec.

    void SAXParser::resetCachedGrammarPool (  ) 

    This method allows the user to reset the pool of cached grammars.

    virtual void SAXParser::parse ( const InputSource source  )  [virtual]

    This method invokes the parsing process on the XML file specified by the InputSource parameter.

    Parameters:
    source A const reference to the InputSource object which points to the XML file to be parsed.
    See also:
    Parser::parse(InputSource)

    Implements Parser.

    virtual void SAXParser::parse ( const XMLCh *const   systemId  )  [virtual]

    This method invokes the parsing process on the XML file specified by the Unicode string parameter 'systemId'.

    Parameters:
    systemId A const XMLCh pointer to the Unicode string which contains the path to the XML file to be parsed.
    See also:
    Parser::parse(XMLCh*)

    Implements Parser.

    virtual void SAXParser::parse ( const char *const   systemId  )  [virtual]

    This method invokes the parsing process on the XML file specified by the native char* string parameter 'systemId'.

    Parameters:
    systemId A const char pointer to a native string which contains the path to the XML file to be parsed.

    Implements Parser.

    virtual void SAXParser::setDocumentHandler ( DocumentHandler *const   handler  )  [virtual]

    This method installs the user specified SAX Document Handler callback function on parser.

    Parameters:
    handler A pointer to the document handler to be called when the parser comes across 'document' events as per the SAX specification.
    See also:
    Parser::parse(char*)

    Implements Parser.

    virtual void SAXParser::setDTDHandler ( DTDHandler *const   handler  )  [virtual]

    This method installs the user specified DTD handler on the parser.

    Parameters:
    handler A pointer to the DTD handler to be called when the parser comes across 'DTD' events as per the SAX specification.
    See also:
    Parser::setDTDHandler

    Implements Parser.

    virtual void SAXParser::setErrorHandler ( ErrorHandler *const   handler  )  [virtual]

    This method installs the user specified error handler on the parser.

    Parameters:
    handler A pointer to the error handler to be called when the parser comes across 'error' events as per the SAX specification.
    See also:
    Parser::setErrorHandler

    Implements Parser.

    virtual void SAXParser::setPSVIHandler ( PSVIHandler *const   handler  )  [virtual]

    This method installs the user specified PSVI handler on the parser.

    Parameters:
    handler A pointer to the PSVI handler to be called when the parser comes across 'PSVI' events as per the schema specification.
    See also:
    Parser::setPSVIHandler

    virtual void SAXParser::setEntityResolver ( EntityResolver *const   resolver  )  [virtual]

    This method installs the user specified entity resolver on the parser.

    It allows applications to trap and redirect calls to external entities.

    Any previously set entity resolver is merely dropped, since the parser does not own them. If both setEntityResolver and setXMLEntityResolver are called, then the last one is used.

    Parameters:
    resolver A pointer to the entity resolver to be called when the parser comes across references to entities in the XML file.
    See also:
    Parser::setEntityResolver

    Implements Parser.

    virtual void SAXParser::setXMLEntityResolver ( XMLEntityResolver *const   resolver  )  [virtual]

    This method installs the user specified entity resolver on the parser.

    It allows applications to trap and redirect calls to external entities.

    Any previously set entity resolver is merely dropped, since the parser does not own them. If both setEntityResolver and setXMLEntityResolver are called, then the last one is used.

    Parameters:
    resolver A pointer to the entity resolver to be called when the parser comes across references to entities in the XML file.
    See also:
    Parser::setXMLEntityResolver

    virtual void SAXParser::docCharacters ( const XMLCh *const   chars,
    const XMLSize_t  length,
    const bool  cdataSection 
    ) [virtual]

    This method is used to report all the characters scanned by the parser.

    The driver will invoke the 'characters' method of the user installed SAX Document Handler.

    If any advanced callback handlers are installed, the corresponding 'docCharacters' method will also be invoked.

    Parameters:
    chars A const pointer to a Unicode string representing the character data.
    length The length of the Unicode string returned in 'chars'.
    cdataSection A flag indicating if the characters represent content from the CDATA section.
    See also:
    DocumentHandler::characters

    Implements XMLDocumentHandler.

    virtual void SAXParser::docComment ( const XMLCh *const   comment  )  [virtual]

    This method is used to report any comments scanned by the parser.

    This method is a no-op unless, unless an advanced callback handler is installed, in which case the corresponding 'docComment' method is invoked.

    Parameters:
    comment A const pointer to a null terminated Unicode string representing the comment text.

    Implements XMLDocumentHandler.

    virtual void SAXParser::docPI ( const XMLCh *const   target,
    const XMLCh *const   data 
    ) [virtual]

    This method is used to report any PI scanned by the parser.

    Any PI's occurring before any 'content' are not reported to any SAX handler as per the specification. However, all PI's within content are reported via the SAX Document Handler's 'processingInstruction' method.

    If any advanced callback handlers are installed, the corresponding 'docPI' method will be invoked.

    Parameters:
    target A const pointer to a Unicode string representing the target of the PI declaration.
    data A const pointer to a Unicode string representing the data of the PI declaration. See the PI production rule in the XML specification for details.
    See also:
    DocumentHandler::processingInstruction

    Implements XMLDocumentHandler.

    virtual void SAXParser::endDocument (  )  [virtual]

    This method is used to indicate the end of root element was just scanned by the parser.

    Corresponding 'endDocument' method of the user installed SAX Document Handler will also be invoked.

    In addition, if any advanced callback handlers are installed, the corresponding 'endDocument' method is invoked.

    See also:
    DocumentHandler::endDocument

    Implements XMLDocumentHandler.

    virtual void SAXParser::endElement ( const XMLElementDecl elemDecl,
    const unsigned int  urlId,
    const bool  isRoot,
    const XMLCh *const   elemPrefix 
    ) [virtual]

    This method is used to indicate the end tag of an element.

    The driver will invoke the corresponding 'endElement' method of the SAX Document Handler interface.

    If any advanced callback handlers are installed, the corresponding 'endElement' method is also invoked.

    Parameters:
    elemDecl A const reference to the object containing element declaration information.
    urlId An id referring to the namespace prefix, if namespaces setting is switched on.
    isRoot A flag indicating whether this element was the root element.
    elemPrefix A const pointer to a Unicode string containing the namespace prefix for this element. Applicable only when namespace processing is enabled.
    See also:
    DocumentHandler::endElement

    Implements XMLDocumentHandler.

    virtual void SAXParser::endEntityReference ( const XMLEntityDecl entDecl  )  [virtual]

    This method is used to indicate that an end of an entity reference was just scanned.

    If any advanced callback handlers are installed, the corresponding 'endEntityReference' method is invoked.

    Parameters:
    entDecl A const reference to the object containing the entity declaration information.

    Implements XMLDocumentHandler.

    virtual void SAXParser::ignorableWhitespace ( const XMLCh *const   chars,
    const XMLSize_t  length,
    const bool  cdataSection 
    ) [virtual]

    This method is used to report all the whitespace characters, which are determined to be 'ignorable'.

    This distinction between characters is only made, if validation is enabled. Corresponding 'ignorableWhitespace' method of the user installed SAX Document Handler interface is called.

    Any whitespace before content is not reported to the SAX Document Handler method, as per the SAX specification. However, if any advanced callback handlers are installed, the corresponding 'ignorableWhitespace' method is invoked.

    Parameters:
    chars A const pointer to a Unicode string representing the ignorable whitespace character data.
    length The length of the Unicode string 'chars'.
    cdataSection A flag indicating if the characters represent content from the CDATA section.
    See also:
    DocumentHandler::ignorableWhitespace

    Implements XMLDocumentHandler.

    virtual void SAXParser::resetDocument (  )  [virtual]

    This method allows the user installed Document Handler and any advanced callback handlers to 'reset' themselves.

    Implements XMLDocumentHandler.

    virtual void SAXParser::startDocument (  )  [virtual]

    This method is used to report the start of the parsing process.

    The corresponding user installed SAX Document Handler's method 'startDocument' is invoked.

    If any advanced callback handlers are installed, then the corresponding 'startDocument' method is also called.

    See also:
    DocumentHandler::startDocument

    Implements XMLDocumentHandler.

    virtual void SAXParser::startElement ( const XMLElementDecl elemDecl,
    const unsigned int  urlId,
    const XMLCh *const   elemPrefix,
    const RefVectorOf< XMLAttr > &  attrList,
    const XMLSize_t  attrCount,
    const bool  isEmpty,
    const bool  isRoot 
    ) [virtual]

    This method is used to report the start of an element.

    It is called at the end of the element, by which time all attributes specified are also parsed. The corresponding user installed SAX Document Handler's method 'startElement' is invoked.

    If any advanced callback handlers are installed, then the corresponding 'startElement' method is also called.

    Parameters:
    elemDecl A const reference to the object containing element declaration information.
    urlId An id referring to the namespace prefix, if namespaces setting is switched on.
    elemPrefix A const pointer to a Unicode string containing the namespace prefix for this element. Applicable only when namespace processing is enabled.
    attrList A const reference to the object containing the list of attributes just scanned for this element.
    attrCount A count of number of attributes in the list specified by the parameter 'attrList'.
    isEmpty A flag indicating whether this is an empty element or not.
    isRoot A flag indicating whether this element was the root element.
    See also:
    DocumentHandler::startElement

    Implements XMLDocumentHandler.

    virtual void SAXParser::startEntityReference ( const XMLEntityDecl entDecl  )  [virtual]

    This method is used to indicate the start of an entity reference.

    If any advanced callback handlers are installed, the corresponding 'endEntityReference' method is invoked.

    Parameters:
    entDecl A const reference to the object containing the entity declaration information.

    Implements XMLDocumentHandler.

    virtual void SAXParser::XMLDecl ( const XMLCh *const   versionStr,
    const XMLCh *const   encodingStr,
    const XMLCh *const   standaloneStr,
    const XMLCh *const   actualEncodingStr 
    ) [virtual]

    This method is used to report the XML decl scanned by the parser.

    Refer to the XML specification to see the meaning of parameters.

    This method is a no-op for this SAX driver implementation.

    Parameters:
    versionStr A const pointer to a Unicode string representing version string value.
    encodingStr A const pointer to a Unicode string representing the encoding string value.
    standaloneStr A const pointer to a Unicode string representing the standalone string value.
    actualEncodingStr A const pointer to a Unicode string representing the actual encoding string value.

    Implements XMLDocumentHandler.

    virtual void SAXParser::error ( const unsigned int  errCode,
    const XMLCh *const   msgDomain,
    const XMLErrorReporter::ErrTypes  errType,
    const XMLCh *const   errorText,
    const XMLCh *const   systemId,
    const XMLCh *const   publicId,
    const XMLFileLoc  lineNum,
    const XMLFileLoc  colNum 
    ) [virtual]

    This method is used to report back errors found while parsing the XML file.

    The driver will call the corresponding user installed SAX Error Handler methods: 'fatal', 'error', 'warning' depending on the severity of the error. This classification is defined by the XML specification.

    Parameters:
    errCode An integer code for the error.
    msgDomain A const pointer to an Unicode string representing the message domain to use.
    errType An enumeration classifying the severity of the error.
    errorText A const pointer to an Unicode string representing the text of the error message.
    systemId A const pointer to an Unicode string representing the system id of the XML file where this error was discovered.
    publicId A const pointer to an Unicode string representing the public id of the XML file where this error was discovered.
    lineNum The line number where the error occurred.
    colNum The column number where the error occurred.
    See also:
    ErrorHandler

    Implements XMLErrorReporter.

    virtual void SAXParser::resetErrors (  )  [virtual]

    This method allows the user installed Error Handler callback to 'reset' itself.

    This method is a no-op for this SAX driver implementation.

    Implements XMLErrorReporter.

    virtual void SAXParser::endInputSource ( const InputSource inputSource  )  [virtual]

    This method is used to indicate the end of parsing of an external entity file.

    This method is a no-op for this SAX driver implementation.

    Parameters:
    inputSource A const reference to the InputSource object which points to the XML file being parsed.
    See also:
    InputSource

    Implements XMLEntityHandler.

    virtual bool SAXParser::expandSystemId ( const XMLCh *const   systemId,
    XMLBuffer &  toFill 
    ) [virtual]

    This method allows an installed XMLEntityHandler to further process any system id's of external entities encountered in the XML file being parsed, such as redirection etc.

    This method always returns 'false' for this SAX driver implementation.

    Parameters:
    systemId A const pointer to an Unicode string representing the system id scanned by the parser.
    toFill A pointer to a buffer in which the application processed system id is stored.
    Returns:
    'true', if any processing is done, 'false' otherwise.

    Implements XMLEntityHandler.

    virtual void SAXParser::resetEntities (  )  [virtual]

    This method allows the installed XMLEntityHandler to reset itself.

    This method is a no-op for this SAX driver implementation.

    Implements XMLEntityHandler.

    virtual InputSource* SAXParser::resolveEntity ( XMLResourceIdentifier resourceIdentifier  )  [virtual]

    Resolve a public/system id.

    This method allows a user installed entity handler to further process any pointers to external entities. The applications can implement 'redirection' via this callback.

    Parameters:
    resourceIdentifier An object containing the type of resource to be resolved and the associated data members corresponding to this type.
    Returns:
    The value returned by the user installed resolveEntity method or NULL otherwise to indicate no processing was done. The returned InputSource is owned by the parser which is responsible to clean up the memory.
    See also:
    XMLEntityHandler

    XMLEntityResolver

    Implements XMLEntityHandler.

    virtual void SAXParser::startInputSource ( const InputSource inputSource  )  [virtual]

    This method is used to indicate the start of parsing an external entity file.

    This method is a no-op for this SAX driver implementation.

    Parameters:
    inputSource A const reference to the InputSource object which points to the external entity being parsed.

    Implements XMLEntityHandler.

    virtual void SAXParser::attDef ( const DTDElementDecl &  elemDecl,
    const DTDAttDef &  attDef,
    const bool  ignore 
    ) [virtual]

    This method is used to report an attribute definition.

    This method is a no-op for this SAX driver implementation.

    Parameters:
    elemDecl A const reference to the object containing information about the element whose attribute definition was just parsed.
    attDef A const reference to the object containing information attribute definition.
    ignore The flag indicating whether this attribute definition was ignored by the parser or not.

    virtual void SAXParser::doctypeComment ( const XMLCh *const   comment  )  [virtual]

    This method is used to report a comment occurring within the DTD.

    This method is a no-op for this SAX driver implementation.

    Parameters:
    comment A const pointer to a Unicode string representing the text of the comment just parsed.

    virtual void SAXParser::doctypeDecl ( const DTDElementDecl &  elemDecl,
    const XMLCh *const   publicId,
    const XMLCh *const   systemId,
    const bool  hasIntSubset,
    const bool  hasExtSubset = false 
    ) [virtual]

    This method is used to report the DOCTYPE declaration.

    This method is a no-op for this SAX driver implementation.

    Parameters:
    elemDecl A const reference to the object containing information about the root element definition declaration of the XML document being parsed.
    publicId A const pointer to a Unicode string representing the public id of the DTD file.
    systemId A const pointer to a Unicode string representing the system id of the DTD file.
    hasIntSubset A flag indicating if this XML file contains any internal subset.
    hasExtSubset A flag indicating if this XML file contains any external subset. Default is false.

    virtual void SAXParser::doctypePI ( const XMLCh *const   target,
    const XMLCh *const   data 
    ) [virtual]

    This method is used to report any PI declarations occurring inside the DTD definition block.

    This method is a no-op for this SAX driver implementation.

    Parameters:
    target A const pointer to a Unicode string representing the target of the PI declaration.
    data A const pointer to a Unicode string representing the data of the PI declaration. See the PI production rule in the XML specification for details.

    virtual void SAXParser::doctypeWhitespace ( const XMLCh *const   chars,
    const XMLSize_t  length 
    ) [virtual]

    This method is used to report any whitespaces occurring inside the DTD definition block.

    This method is a no-op for this SAX driver implementation.

    Parameters:
    chars A const pointer to a Unicode string representing the whitespace characters.
    length The length of the whitespace Unicode string.

    virtual void SAXParser::elementDecl ( const DTDElementDecl &  decl,
    const bool  isIgnored 
    ) [virtual]

    This method is used to report an element declarations successfully scanned by the parser.

    This method is a no-op for this SAX driver implementation.

    Parameters:
    decl A const reference to the object containing element declaration information.
    isIgnored The flag indicating whether this definition was ignored by the parser or not.

    virtual void SAXParser::endAttList ( const DTDElementDecl &  elemDecl  )  [virtual]

    This method is used to report the end of an attribute list declaration for an element.

    This method is a no-op for this SAX driver implementation.

    Parameters:
    elemDecl A const reference to the object containing element declaration information.

    virtual void SAXParser::endIntSubset (  )  [virtual]

    This method is used to report the end of the internal subset.

    This method is a no-op for this SAX driver implementation.

    virtual void SAXParser::endExtSubset (  )  [virtual]

    This method is used to report the end of the external subset.

    This method is a no-op for this SAX driver implementation.

    virtual void SAXParser::entityDecl ( const DTDEntityDecl &  entityDecl,
    const bool  isPEDecl,
    const bool  isIgnored 
    ) [virtual]

    This method is used to report any entity declarations.

    For unparsed entities, this driver will invoke the SAX DTDHandler::unparsedEntityDecl callback.

    Parameters:
    entityDecl A const reference to the object containing the entity declaration information.
    isPEDecl The flag indicating whether this was a parameter entity declaration or not.
    isIgnored The flag indicating whether this definition was ignored by the parser or not.
    See also:
    DTDHandler::unparsedEntityDecl

    virtual void SAXParser::resetDocType (  )  [virtual]

    This method allows the user installed DTD handler to reset itself.

    virtual void SAXParser::notationDecl ( const XMLNotationDecl notDecl,
    const bool  isIgnored 
    ) [virtual]

    This method is used to report any notation declarations.

    If there is a user installed DTDHandler, then the driver will invoke the SAX DTDHandler::notationDecl callback.

    Parameters:
    notDecl A const reference to the object containing the notation declaration information.
    isIgnored The flag indicating whether this definition was ignored by the parser or not.
    See also:
    DTDHandler::notationDecl

    virtual void SAXParser::startAttList ( const DTDElementDecl &  elemDecl  )  [virtual]

    This method is used to indicate the start of an element's attribute list declaration.

    This method is a no-op for this SAX driver implementation.

    Parameters:
    elemDecl A const reference to the object containing element declaration information.

    virtual void SAXParser::startIntSubset (  )  [virtual]

    This method is used indicate the start of the internal subset.

    This method is a no-op for this SAX driver implementation.

    virtual void SAXParser::startExtSubset (  )  [virtual]

    This method is used indicate the start of the external subset.

    This method is a no-op for this SAX driver implementation.

    virtual void SAXParser::TextDecl ( const XMLCh *const   versionStr,
    const XMLCh *const   encodingStr 
    ) [virtual]

    This method is used to report the TextDecl.

    Refer to the XML specification for the syntax of a TextDecl.

    This method is a no-op for this SAX driver implementation.

    Parameters:
    versionStr A const pointer to a Unicode string representing the version number of the 'version' clause.
    encodingStr A const pointer to a Unicode string representing the encoding name of the 'encoding' clause.

    const XMLScanner & SAXParser::getScanner (  )  const [protected]

    This method returns a reference to the underlying scanner object.

    It allows read only access to data maintained in the scanner.

    Returns:
    A const reference to the underlying scanner object.

    GrammarResolver * SAXParser::getGrammarResolver (  )  const [protected]

    Get the Grammar resolver.

    This provides derived classes with access to the grammar resolver.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/HandlerBase_8hpp-source.html0000644000175000017500000007414111363620004022773 0ustar borisboris Xerces-C++: HandlerBase.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/SAX2XMLFilter_8hpp.html0000644000175000017500000000435311363620005021570 0ustar borisboris Xerces-C++: SAX2XMLFilter.hpp File Reference

    SAX2XMLFilter.hpp File Reference

    Go to the source code of this file.

    Classes

    class  SAX2XMLFilter

    Defines

    #define XERCESC_INCLUDE_GUARD_SAX2XMLFILTER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_SAX2XMLFILTER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMImplementationRegistry_8hpp.html0000644000175000017500000000454311363620005024403 0ustar borisboris Xerces-C++: DOMImplementationRegistry.hpp File Reference

    DOMImplementationRegistry.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMImplementationRegistry

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONREGISTRY_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONREGISTRY_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSNotationDeclaration.png0000644000175000017500000000110611363620006023441 0ustar borisboris‰PNG  IHDRŒˆÇPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfÜIDAThí˜]’ƒ ÇÉË>n€{ƒÝ õÉûaó%JW±Lk§Aï:Ão—~†åÛ1­˜Ìg¢NzLM¢‰Õ ƒÔM¤ŽÚœ3ëlÀК-€<`Ö6§V ;¥`’œÓѬ&ótÄ ³î¬=ß(†/ †6cU-ªcûFâ%,ie´IÍVé„ÙØŽ˜ 1ïñwL§Ìr;bô,Ì×x%Ì8Þ.„¹V¤ãÇ8Æ1Žy¦ÓkÒµÞý>é怜ûjUR—Æ\Ó’¹!Ý¥©§0*$gKó2rÝ€‘¤'Ì”l&Ma0bކ ¦9ñiá„ü¬‹—j†óÔißÔûf©õO1‡wñþ‡œ'c¶ðV5Ž9éô€éô¸{ÆóðÒ‡âÇ8Æ1ŽqÌÛc°K ±‡^pÌ>øŒÜªV0!ÆÙ~Uö£°Â£8Ï®0÷HÅPË F@©Xa0‘¤ˆ/¹";1‘Áˆ¼¬¨à1«øR±±€ÖYA, Ö|Koؼ%FVbÊ‹m\ªÑ~´[¼½k ÚÏj(¨þ™\\0°¢&Lövìa`¡òÍ:¦Þ7È.¤0X¤Ø‹¼oæH )„©…‹-Žù8LŸÌýƒ²¯IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/annotated.html0000644000175000017500000012124711363620005020344 0ustar borisboris Xerces-C++: Class List

    Class List

    Here are the classes, structs, unions and interfaces with brief descriptions:
    AbstractDOMParserThis class implements the Document Object Model (DOM) interface
    AttributeListInterface for an element's attribute specifications
    AttributesInterface for an element's attribute specifications
    Base64
    BinFileInputStream
    BinInputStream
    BinMemInputStream
    BinOutputStream
    ContentHandlerReceive notification of general document events
    DeclHandlerReceive notification of DTD declaration events
    DefaultHandlerDefault base class for SAX2 handlers
    DefaultPanicHandlerReceive notification of panic
    DocumentHandlerReceive notification of general document events
    DOMAttrThe DOMAttr class refers to an attribute of an XML element
    DOMCDATASectionCDATA sections are used to escape blocks of text containing characters that would otherwise be regarded as markup
    DOMCharacterDataThe DOMCharacterData interface extends DOMNode with a set of attributes and methods for accessing character data in the DOM
    DOMCommentThis interface inherits from CharacterData and represents the content of a comment, i.e., all the characters between the starting ' <!--' and ending '-->'
    DOMConfigurationThe DOMConfiguration interface represents the configuration of a document and maintains a table of recognized parameters
    DOMDocumentThe DOMDocument interface represents the entire XML document
    DOMDocumentFragmentDOMDocumentFragment is a "lightweight" or "minimal" DOMDocument object
    DOMDocumentRange
    DOMDocumentTraversalDOMDocumentTraversal contains methods that create DOMNodeIterators and DOMTreeWalkers to traverse a node and its children in document order (depth first, pre-order traversal, which is equivalent to the order in which the start tags occur in the text representation of the document)
    DOMDocumentTypeEach DOMDocument has a doctype attribute whose value is either null or a DOMDocumentType object
    DOMElementBy far the vast majority of objects (apart from text) that authors encounter when traversing a document are DOMElement nodes
    DOMEntityThis interface represents an entity, either parsed or unparsed, in an XML document
    DOMEntityReferenceDOMEntityReference objects may be inserted into the structure model when an entity reference is in the source document, or when the user wishes to insert an entity reference
    DOMErrorDOMError is an interface that describes an error
    DOMErrorHandlerBasic interface for DOM error handlers
    DOMException
    DOMImplementationThe DOMImplementation interface provides a number of methods for performing operations that are independent of any particular instance of the document object model
    DOMImplementationListThe DOMImplementationList interface provides the abstraction of an ordered collection of DOM implementations, without defining or constraining how this collection is implemented
    DOMImplementationLS
    DOMImplementationRegistry
    DOMImplementationSource
    DOMLocatorDOMLocator is an interface that describes a location
    DOMLSException
    DOMLSInputThis interface represents a single input source for an XML entity
    DOMLSOutputThis interface represents an output destination for data
    DOMLSParserDOMLSParser provides an API for parsing XML documents and building the corresponding DOM document tree
    DOMLSParserFilter
    DOMLSResourceResolverDOMLSResourceResolver provides a way for applications to redirect references to external entities
    DOMLSSerializer
    DOMLSSerializerFilterDOMLSSerializerFilter.hpp: interface for the DOMLSSerializerFilter class
    DOMMemoryManagerThe DOMMemoryManager interface exposes the memory allocation-related functionalities of a DOMDocument
    DOMNamedNodeMapDOMNamedNodeMaps are used to represent collections of nodes that can be accessed by name
    DOMNodeThe DOMNode interface is the primary datatype for the entire Document Object Model
    DOMNodeFilterFilters are objects that know how to "filter out" nodes
    DOMNodeIteratorDOMNodeIterators are used to step through a set of nodes, e.g
    DOMNodeListThe DOMNodeList interface provides the abstraction of an ordered collection of nodes
    DOMNotationThis interface represents a notation declared in the DTD
    DOMProcessingInstructionThe DOMProcessingInstruction interface represents a "processing instruction", used in XML as a way to keep processor-specific information in the text of the document
    DOMPSVITypeInfoThe DOMPSVITypeInfo interface represent the PSVI info used by DOMElement or DOMAttr nodes, specified in the schemas associated with the document
    DOMRange
    DOMRangeExceptionRange operations may throw a DOMRangeException as specified in their method descriptions
    DOMStringListThe DOMStringList interface provides the abstraction of an ordered collection of strings, without defining or constraining how this collection is implemented
    DOMTextThe DOMText interface inherits from DOMCharacterData and represents the textual content (termed character data in XML) of an DOMElement or DOMAttr
    DOMTreeWalkerDOMTreeWalker objects are used to navigate a document tree or subtree using the view of the document defined by their whatToShow flags and filter (if any)
    DOMTypeInfoThe DOMTypeInfo interface represent a type used by DOMElement or DOMAttr nodes, specified in the schemas associated with the document
    DOMUserDataHandlerWhen associating an object to a key on a node using setUserData the application can provide a handler that gets called when the node the object is associated to is being cloned or imported
    DOMXPathEvaluatorThe evaluation of XPath expressions is provided by DOMXPathEvaluator
    DOMXPathException
    DOMXPathExpressionThe DOMXPathExpression interface represents a parsed and resolved XPath expression
    DOMXPathNamespaceThe DOMXPathNamespace interface is returned by DOMXPathResult interfaces to represent the XPath namespace node type that DOM lacks
    DOMXPathNSResolverThe DOMXPathNSResolver interface permit prefix strings in the expression to be properly bound to namespaceURI strings
    DOMXPathResultThe DOMXPathResult interface represents the result of the evaluation of an XPath 1.0 or XPath 2.0 expression within the context of a particular node
    DTDHandlerReceive notification of basic DTD-related events
    EntityResolverBasic interface for resolving entities
    ErrorHandlerBasic interface for SAX error handlers
    HandlerBaseDefault base class for handlers
    Hash2KeysSetBucketElem
    Hash2KeysSetOf< THasher >
    Hash2KeysSetOfEnumerator< THasher >
    HexBin
    InputSourceA single input source for an XML entity
    LexicalHandlerReceive notification of lexical events
    LocalFileFormatTarget
    LocalFileInputSourceThis class is a derivative of the standard InputSource class
    LocatorInterface for associating a SAX event with a document location
    MemBufFormatTarget
    MemBufInputSourceThis class is a derivative of the standard InputSource class
    MemoryManagerConfigurable memory manager
    OutOfMemoryException
    PanicHandlerReceive notification of panic
    ParserBasic interface for SAX (Simple API for XML) parsers
    PSVIAttribute
    PSVIAttributeList
    PSVIAttributeStorageA container for the PSVI contributions to attributes that occur on a particular element
    PSVIElement
    PSVIHandlerThis abstract class provides the interface for the scanner to return PSVI information to the application
    PSVIItem
    PSVIUni
    QName
    SAX2XMLFilter
    SAX2XMLReader
    SAXExceptionEncapsulate a general SAX error or warning
    SAXNotRecognizedException
    SAXNotSupportedException
    SAXParseExceptionEncapsulate an XML parse error or warning
    SAXParserThis class implements the SAX 'Parser' interface and should be used by applications wishing to parse the XML files using SAX
    SecurityManagerAllow application to force the parser to behave in a security-conscious way
    StdInInputSourceThis class is a derivative of the standard InputSource class
    StDOMNode< T >
    StdOutFormatTarget
    TranscodeFromStr
    TranscodeToStr
    URLInputSourceThis class is a derivative of the standard InputSource class
    ValidationContext
    Wrapper4DOMLSInputWrap a DOMLSInput object and make it behave like a SAX InputSource
    Wrapper4InputSourceWrap a SAX InputSource object and make it behave like DOMLSInput
    XercesDOMParserThis class implements the Document Object Model (DOM) interface
    XMemoryThis class makes it possible to override the C++ memory management by adding new/delete operators to this base class
    XMLAbstractDoubleFloat
    XMLAttDefRepresents the core information of an attribute definition
    XMLAttDefListThis class defines an abstract interface that all validators must support
    XMLAttrThis class defines the information about an attribute that will come out of the scanner during parsing
    XMLBigDecimal
    XMLBigInteger
    XMLChar1_0
    XMLChar1_1
    XMLContentModelThis class defines the abstract interface for all content models
    XMLDateTime
    XMLDeleter
    XMLDocumentHandlerThis abstract class provides the interface for the scanner to return XML document information up to the parser as it scans through the document
    XMLDOMMsg
    XMLDouble
    XMLDTDDescription
    XMLElementDeclThis class defines the core information of an element declaration
    XMLEntityDeclThis class defines that core information that defines an XML entity, no matter what validator is used
    XMLEntityHandlerThis abstract class is a callback mechanism for the scanner
    XMLEntityResolverRevised interface for resolving entities
    XMLErrorReporterThis abstract class defines a callback mechanism for the scanner
    XMLErrs
    XMLException
    XMLFileMgr
    XMLFloat
    XMLFormatTarget
    XMLFormatterThis class provides the basic formatting capabilities that are required to turn the Unicode based XML data from the parsers into a form that can be used on non-Unicode based systems, that is, into local or generic text encodings
    XMLGrammarDescription
    XMLGrammarPool
    XMLIBM1047Transcoder
    XMLInitializerUtilities that must be implemented in a class-specific way
    XMLInteger
    XMLLCPTranscoder
    XMLMutexMgr
    XMLNetAccessor
    XMLNetHTTPInfo
    XMLNotationDeclThis class represents the core information about a notation declaration that all validators must at least support
    XMLNumber
    XMLPlatformUtilsUtilities that must be implemented in a platform-specific way
    XMLReaderFactoryCreates a SAX2 parser (SAX2XMLReader)
    XMLResourceIdentifier
    XMLSchemaDescription
    XMLStringClass for representing native character strings and handling common string operations
    XMLStringTokenizerThe string tokenizer class breaks a string into tokens
    XMLSynchronizedStringPool
    XMLTranscoderXMLTranscoder is for transcoding non-local code page encodings, i.e
    XMLTransService
    XMLTransService::TransRec
    XMLUni
    XMLUri
    XMLURL
    XMLValid
    XMLValidatorThis abstract class provides the interface for all validators
    XSAnnotation
    XSAttributeDeclaration
    XSAttributeGroupDefinition
    XSAttributeUse
    XSComplexTypeDefinition
    XSConstants
    XSElementDeclaration
    XSFacet
    XSIDCDefinition
    XSModel
    XSModelGroup
    XSModelGroupDefinition
    XSMultiValueFacet
    XSNamedMap< TVal >
    XSNamespaceItem
    XSNotationDeclaration
    XSObject
    XSParticle
    XSSimpleTypeDefinition
    XSTypeDefinitionThis class represents a complexType or simpleType definition
    XSValue
    XSValue::XSValue_DataPublic data
    XSWildcard

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/LexicalHandler_8hpp.html0000644000175000017500000000464011363620005022202 0ustar borisboris Xerces-C++: LexicalHandler.hpp File Reference

    LexicalHandler.hpp File Reference

    Go to the source code of this file.

    Classes

    class  LexicalHandler
     Receive notification of lexical events. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_LEXICALHANDLER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_LEXICALHANDLER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/globals_vars.html0000644000175000017500000003607711363620007021055 0ustar borisboris Xerces-C++: Class Members
     

    - c -

    - f -

    - g -

    - l -

    - x -


    Generated on Wed Apr 21 17:55:51 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/ArrayIndexOutOfBoundsException_8hpp-source.html0000644000175000017500000001070011363620004026667 0ustar borisboris Xerces-C++: ArrayIndexOutOfBoundsException.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMDocumentFragment-members.html0000644000175000017500000004064311363620005024647 0ustar borisboris Xerces-C++: Member List

    DOMDocumentFragment Member List

    This is the complete list of members for DOMDocumentFragment, including all inherited members.

    appendChild(DOMNode *newChild)=0DOMNode [pure virtual]
    ATTRIBUTE_NODE enum valueDOMNode
    CDATA_SECTION_NODE enum valueDOMNode
    cloneNode(bool deep) const =0DOMNode [pure virtual]
    COMMENT_NODE enum valueDOMNode
    compareDocumentPosition(const DOMNode *other) const =0DOMNode [pure virtual]
    DOCUMENT_FRAGMENT_NODE enum valueDOMNode
    DOCUMENT_NODE enum valueDOMNode
    DOCUMENT_POSITION_CONTAINED_BY enum valueDOMNode
    DOCUMENT_POSITION_CONTAINS enum valueDOMNode
    DOCUMENT_POSITION_DISCONNECTED enum valueDOMNode
    DOCUMENT_POSITION_FOLLOWING enum valueDOMNode
    DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC enum valueDOMNode
    DOCUMENT_POSITION_PRECEDING enum valueDOMNode
    DOCUMENT_TYPE_NODE enum valueDOMNode
    DocumentPosition enum nameDOMNode
    DOMDocumentFragment()DOMDocumentFragment [protected]
    DOMNode()DOMNode [protected]
    DOMNode(const DOMNode &)DOMNode [protected]
    ELEMENT_NODE enum valueDOMNode
    ENTITY_NODE enum valueDOMNode
    ENTITY_REFERENCE_NODE enum valueDOMNode
    getAttributes() const =0DOMNode [pure virtual]
    getBaseURI() const =0DOMNode [pure virtual]
    getChildNodes() const =0DOMNode [pure virtual]
    getFeature(const XMLCh *feature, const XMLCh *version) const =0DOMNode [pure virtual]
    getFirstChild() const =0DOMNode [pure virtual]
    getLastChild() const =0DOMNode [pure virtual]
    getLocalName() const =0DOMNode [pure virtual]
    getNamespaceURI() const =0DOMNode [pure virtual]
    getNextSibling() const =0DOMNode [pure virtual]
    getNodeName() const =0DOMNode [pure virtual]
    getNodeType() const =0DOMNode [pure virtual]
    getNodeValue() const =0DOMNode [pure virtual]
    getOwnerDocument() const =0DOMNode [pure virtual]
    getParentNode() const =0DOMNode [pure virtual]
    getPrefix() const =0DOMNode [pure virtual]
    getPreviousSibling() const =0DOMNode [pure virtual]
    getTextContent() const =0DOMNode [pure virtual]
    getUserData(const XMLCh *key) const =0DOMNode [pure virtual]
    hasAttributes() const =0DOMNode [pure virtual]
    hasChildNodes() const =0DOMNode [pure virtual]
    insertBefore(DOMNode *newChild, DOMNode *refChild)=0DOMNode [pure virtual]
    isDefaultNamespace(const XMLCh *namespaceURI) const =0DOMNode [pure virtual]
    isEqualNode(const DOMNode *arg) const =0DOMNode [pure virtual]
    isSameNode(const DOMNode *other) const =0DOMNode [pure virtual]
    isSupported(const XMLCh *feature, const XMLCh *version) const =0DOMNode [pure virtual]
    lookupNamespaceURI(const XMLCh *prefix) const =0DOMNode [pure virtual]
    lookupPrefix(const XMLCh *namespaceURI) const =0DOMNode [pure virtual]
    NodeType enum nameDOMNode
    normalize()=0DOMNode [pure virtual]
    NOTATION_NODE enum valueDOMNode
    PROCESSING_INSTRUCTION_NODE enum valueDOMNode
    release()=0DOMNode [pure virtual]
    removeChild(DOMNode *oldChild)=0DOMNode [pure virtual]
    replaceChild(DOMNode *newChild, DOMNode *oldChild)=0DOMNode [pure virtual]
    setNodeValue(const XMLCh *nodeValue)=0DOMNode [pure virtual]
    setPrefix(const XMLCh *prefix)=0DOMNode [pure virtual]
    setTextContent(const XMLCh *textContent)=0DOMNode [pure virtual]
    setUserData(const XMLCh *key, void *data, DOMUserDataHandler *handler)=0DOMNode [pure virtual]
    TEXT_NODE enum valueDOMNode
    ~DOMDocumentFragment()DOMDocumentFragment [virtual]
    ~DOMNode()DOMNode [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLBigInteger_8hpp.html0000644000175000017500000000435611363620005021727 0ustar borisboris Xerces-C++: XMLBigInteger.hpp File Reference

    XMLBigInteger.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLBigInteger

    Defines

    #define XERCESC_INCLUDE_GUARD_XML_BIGINTEGER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XML_BIGINTEGER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSModelGroupDefinition.png0000644000175000017500000000113611363620006023571 0ustar borisboris‰PNG  IHDR˜ˆé:?‰PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfôIDAThíØMvƒ `fÓ5à  7h/”Uî„2?"$µä¥6⋊ø9€Æ€ûœ˜ÜGš–Þ ›ˆEZBÞ°Œ„„YœŒaÞ 9Ò¼Ž1RÌÝX>-ÌÄ„QÖ1ŒaÔX ¼,ŸÁÈ"!ˆ ¶Ùˆ;m&팢Älª9„é}Æ}Ê"¯9w ²­4Û¾‰û±íÀþ䝯‹aS_u¥ËƒåžŽ½]ÏŠ]¯—“bçíMà 3Ì0à 3ŒÓÔ?{çýOûß1¢'¤ùg–áÜÐ]¾)Ü ò`TŒ:$ŽHßÝÆqÁ–Az €nŒOBÅRÁ'I¸:¡Âh‚ãXÔ‘¥£˜ôæÁ6kﳪ77'Ázž€Ý‰´ßÂ~˜ÐèÇö“a#ØÔWÝÔ—ðó1›×H3-à 3Ì0à 3l>†“óóÂÃÆ0 Ð3¬¸—/Êmjx)QG ÐR¡£Ü&-¾7‘)æËצëR¤\€·óp1:¨»¨%±`R>à33AWR#Þ–LÏU[wAvQšË/AÓu æ,‡®Îª0·b~Ŵʰz:¤kî0~p¶°¥Lúê[LNÙÃÖ2¥H©&h›µöVÝg|úÚ›9—ŠjußgX_UKúÎ'v¿¶1Ãú±™¯º/úÛ&¦Äé &IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/StdOutFormatTarget_8hpp-source.html0000644000175000017500000001626411363620004024367 0ustar borisboris Xerces-C++: StdOutFormatTarget.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_0x65.html0000644000175000017500000006001111363620005021150 0ustar borisboris Xerces-C++: Class Members
    Here is a list of all class members with links to the classes they belong to:

    - e -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLLCPTranscoder.html0000644000175000017500000004062111363620006022436 0ustar borisboris Xerces-C++: XMLLCPTranscoder Class Reference

    XMLLCPTranscoder Class Reference

    Inheritance diagram for XMLLCPTranscoder:

    XMemory

    List of all members.

    Public Member Functions

    virtual ~XMLLCPTranscoder ()
    virtual char * transcode (const XMLCh *const toTranscode, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)=0
    virtual XMLChtranscode (const char *const toTranscode, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)=0
    virtual XMLSize_t calcRequiredSize (const char *const srcText, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)=0
    virtual XMLSize_t calcRequiredSize (const XMLCh *const srcText, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)=0
    virtual bool transcode (const char *const toTranscode, XMLCh *const toFill, const XMLSize_t maxChars, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)=0
    virtual bool transcode (const XMLCh *const toTranscode, char *const toFill, const XMLSize_t maxBytes, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)=0

    Protected Member Functions

     XMLLCPTranscoder ()


    Constructor & Destructor Documentation

    virtual XMLLCPTranscoder::~XMLLCPTranscoder (  )  [virtual]

    XMLLCPTranscoder::XMLLCPTranscoder (  )  [protected]


    Member Function Documentation

    virtual char* XMLLCPTranscoder::transcode ( const XMLCh *const   toTranscode,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [pure virtual]

    virtual XMLCh* XMLLCPTranscoder::transcode ( const char *const   toTranscode,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [pure virtual]

    virtual XMLSize_t XMLLCPTranscoder::calcRequiredSize ( const char *const   srcText,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [pure virtual]

    virtual XMLSize_t XMLLCPTranscoder::calcRequiredSize ( const XMLCh *const   srcText,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [pure virtual]

    virtual bool XMLLCPTranscoder::transcode ( const char *const   toTranscode,
    XMLCh *const   toFill,
    const XMLSize_t  maxChars,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [pure virtual]

    virtual bool XMLLCPTranscoder::transcode ( const XMLCh *const   toTranscode,
    char *const   toFill,
    const XMLSize_t  maxBytes,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [pure virtual]


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classLexicalHandler.png0000644000175000017500000000063711363620006022114 0ustar borisboris‰PNG  IHDRaPû˜PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf5IDATH‰í”KnÄ0†ñ¦kàø£™ T)÷?B?“Ô GJUL"Ç>óGš4„9û("T·Î0ôaw'`‚¤³ì Ös'Ô AÈébGx’Ý6„L˜ãáôö„Bj„%éñ&9yÌ]ª„!4·¨jDù>ºUÁ^U«G}ç§}@·F¨Œ}¯°¨²H׫ëg¾ˆÛˆù¿ÏÈÞ“µ/_Ûýͽo'þ¢W‹XÄ"ñïˆ×À¾ñ<ãœ}!DÉË(‘ÅÆj,BC)q‚-‰íÖK„JL„£0û<2÷„%ZRšp¹Ã>wÕ"6‚|sÜÖð«'ˆŒÐ´®†P#ˆŽ{ÊYU«wwû!'U&Ùú¢ª´-Ö™Ò+ñUj¯®Ÿù"n#FŸ‘=~F[¼œòSpIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/XercesDOMParser_8hpp-source.html0000644000175000017500000007614611363620004023600 0ustar borisboris Xerces-C++: XercesDOMParser.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_0x72.html0000644000175000017500000004122111363620005021150 0ustar borisboris Xerces-C++: Class Members
    Here is a list of all class members with links to the classes they belong to:

    - r -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/structXSValue_1_1XSValue__Data.html0000644000175000017500000006012511363620006024161 0ustar borisboris Xerces-C++: XSValue::XSValue_Data Struct Reference

    XSValue::XSValue_Data Struct Reference

    public data More...

    List of all members.

    Public Attributes

    DataType f_datatype
    union {
       bool   f_bool
       char   f_char
       unsigned char   f_uchar
       short   f_short
       unsigned short   f_ushort
       int   f_int
       unsigned int   f_uint
       long   f_long
       unsigned long   f_ulong
       float   f_float
       double   f_double
       XMLCh *   f_strVal
       XMLByte *   f_byteVal
       struct decimal {
          double   f_dvalue
       }   f_decimal
       struct datetime {
          int   f_year
          int   f_month
          int   f_day
          int   f_hour
          int   f_min
          int   f_second
          double   f_milisec
       }   f_datetime
       struct doubletype {
          double   f_double
          DoubleFloatType   f_doubleEnum
       }   f_doubleType
       struct floattype {
          float   f_float
          DoubleFloatType   f_floatEnum
       }   f_floatType
    fValue


    Detailed Description

    public data

    Member Data Documentation

    struct { ... } ::decimal XSValue::XSValue_Data::f_decimal

    struct { ... } ::datetime XSValue::XSValue_Data::f_datetime

    struct { ... } ::doubletype XSValue::XSValue_Data::f_doubleType

    struct { ... } ::floattype XSValue::XSValue_Data::f_floatType


    The documentation for this struct was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLEntityDecl.html0000644000175000017500000013537211363620006022047 0ustar borisboris Xerces-C++: XMLEntityDecl Class Reference

    XMLEntityDecl Class Reference

    This class defines that core information that defines an XML entity, no matter what validator is used. More...

    Inheritance diagram for XMLEntityDecl:

    XMemory

    List of all members.

    Public Member Functions

    void setId (const XMLSize_t newId)
    Constructors
     XMLEntityDecl (MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Default Constructor.
     XMLEntityDecl (const XMLCh *const entName, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Constructor with a const entity name.
     XMLEntityDecl (const XMLCh *const entName, const XMLCh *const value, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Constructor with a const entity name and value.
     XMLEntityDecl (const XMLCh *const entName, const XMLCh value, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Constructor with a const entity name and single XMLCh value.
    Destructor
    virtual ~XMLEntityDecl ()
     Default destructor.
    The pure virtual methods in this interface.
    virtual bool getDeclaredInIntSubset () const =0
     Get the 'declared in internal subset' flag.
    virtual bool getIsParameter () const =0
     Get the 'is parameter entity' flag.
    virtual bool getIsSpecialChar () const =0
     Get the 'is special char entity' flag.
    Getter methods
    XMLSize_t getId () const
     Gets the pool id of this entity.
    const XMLChgetName () const
     Returns a const pointer to the name of this entity decl.
    const XMLChgetNotationName () const
     Gets the notation name, if any, declared for this entity.
    const XMLChgetPublicId () const
     Gets the public id declared for this entity.
    const XMLChgetSystemId () const
     Gets the system id declared for this entity.
    const XMLChgetBaseURI () const
     Gets the base URI for this entity.
    const XMLChgetValue () const
     This method returns the value of an internal entity.
    XMLSize_t getValueLen () const
     This method returns the number of characters in the value returned by getValue().
    bool isExternal () const
     Indicates that this entity is an external entity.
    bool isUnparsed () const
     Indicates whether this entity is unparsed.
    MemoryManagergetMemoryManager () const
     Get the plugged-in memory manager.
    Setter methods
    void setName (const XMLCh *const entName)
     This method will set the entity name.
    void setIsExternal (bool value)
     This method will mark whether the entity is external.
    void setNotationName (const XMLCh *const newName)
     This method will set the notation name for this entity.
    void setPublicId (const XMLCh *const newId)
     This method will set a new public id on this entity.
    void setSystemId (const XMLCh *const newId)
     This method will set a new sysetm id on this entity.
    void setBaseURI (const XMLCh *const newId)
     This method will set a new baseURI on this entity.
    void setValue (const XMLCh *const newValue)
     This method will set a new value for this entity.
    Setter methods
    const XMLChgetKey () const
     This method allows objects of this class to be used within a standard keyed collection used commonly within the parser system.


    Detailed Description

    This class defines that core information that defines an XML entity, no matter what validator is used.

    Each validator will create a derivative of this class which adds any extra information it requires.

    This class supports keyed collection semantics via the getKey() method which extracts the key field, the entity name in this case. The name will have whatever form is deemed appropriate for the type of validator in use.

    When setting the fields of this class, you must make sure that you do not set conflicting values. For instance, an internal entity cannot have a notation name. And an external entity cannot have a value string. These rules are defined by the XML specification. In most cases, these objects are created by validator objects as they parse a DTD or Schema or whatever, at which time they confirm the correctness of the data before creating the entity decl object.


    Constructor & Destructor Documentation

    XMLEntityDecl::XMLEntityDecl ( MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager  ) 

    Default Constructor.

    XMLEntityDecl::XMLEntityDecl ( const XMLCh *const   entName,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    Constructor with a const entity name.

    Parameters:
    entName The new name to give to this entity.
    manager Pointer to the memory manager to be used to allocate objects.

    XMLEntityDecl::XMLEntityDecl ( const XMLCh *const   entName,
    const XMLCh *const   value,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    Constructor with a const entity name and value.

    Parameters:
    entName The new name to give to this entity.
    value The new value to give to this entity name.
    manager Pointer to the memory manager to be used to allocate objects.

    XMLEntityDecl::XMLEntityDecl ( const XMLCh *const   entName,
    const XMLCh  value,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    Constructor with a const entity name and single XMLCh value.

    Parameters:
    entName The new name to give to this entity.
    value The new value to give to this entity name.
    manager Pointer to the memory manager to be used to allocate objects.

    virtual XMLEntityDecl::~XMLEntityDecl (  )  [virtual]

    Default destructor.


    Member Function Documentation

    virtual bool XMLEntityDecl::getDeclaredInIntSubset (  )  const [pure virtual]

    Get the 'declared in internal subset' flag.

    Gets the state of the flag which indicates whether the entity was declared in the internal or external subset. Some structural description languages might not have an internal subset concept, in which case this will always return false.

    virtual bool XMLEntityDecl::getIsParameter (  )  const [pure virtual]

    Get the 'is parameter entity' flag.

    Gets the state of the flag which indicates whether this entity is a parameter entity. If not, then its a general entity.

    virtual bool XMLEntityDecl::getIsSpecialChar (  )  const [pure virtual]

    Get the 'is special char entity' flag.

    Gets the state of the flag that indicates whether this entity is one of the special, intrinsically supported character entities.

    XMLSize_t XMLEntityDecl::getId (  )  const

    Gets the pool id of this entity.

    Validators maintain all decls in pools, from which they can be quickly extracted via id.

    const XMLCh * XMLEntityDecl::getName (  )  const

    Returns a const pointer to the name of this entity decl.

    This name will be in whatever format is appropriate for the type of validator in use.

    const XMLCh * XMLEntityDecl::getNotationName (  )  const

    Gets the notation name, if any, declared for this entity.

    If this entity is not a notation type entity, it will be a null pointer.

    const XMLCh * XMLEntityDecl::getPublicId (  )  const

    Gets the public id declared for this entity.

    Public ids are optional so it can be a null pointer.

    const XMLCh * XMLEntityDecl::getSystemId (  )  const

    Gets the system id declared for this entity.

    The system id is required so this method should never return a null pointers.

    const XMLCh * XMLEntityDecl::getBaseURI (  )  const

    Gets the base URI for this entity.

    const XMLCh * XMLEntityDecl::getValue (  )  const

    This method returns the value of an internal entity.

    If this is not an internal entity (i.e. its external), then this will be a null pointer.

    XMLSize_t XMLEntityDecl::getValueLen (  )  const

    This method returns the number of characters in the value returned by getValue().

    If this entity is external, this will be zero since an external entity has no internal value.

    bool XMLEntityDecl::isExternal (  )  const

    Indicates that this entity is an external entity.

    If not, then it is assumed to be an internal entity, surprise.

    bool XMLEntityDecl::isUnparsed (  )  const

    Indicates whether this entity is unparsed.

    This is meaningless for internal entities. Some external entities are unparsed in that they refer to something other than XML source.

    MemoryManager * XMLEntityDecl::getMemoryManager (  )  const

    Get the plugged-in memory manager.

    This method returns the plugged-in memory manager user for dynamic memory allocation/deallocation.

    Returns:
    the plugged-in memory manager

    void XMLEntityDecl::setName ( const XMLCh *const   entName  ) 

    This method will set the entity name.

    The format of this name is defined by the particular validator in use, since it will be the one who creates entity definitions as it parses the DTD, Schema, ect...

    Parameters:
    entName The new name to give to this entity.

    void XMLEntityDecl::setIsExternal ( bool  value  ) 

    This method will mark whether the entity is external.

    Parameters:
    value The new value for the 'is external' flag.

    void XMLEntityDecl::setNotationName ( const XMLCh *const   newName  ) 

    This method will set the notation name for this entity.

    By setting this, you are indicating that this is an unparsed external entity.

    Parameters:
    newName The new notation name to give to this entity.

    References MemoryManager::deallocate(), and XMLString::replicate().

    void XMLEntityDecl::setPublicId ( const XMLCh *const   newId  ) 

    This method will set a new public id on this entity.

    The public id has no particular form and is purely for client consumption.

    Parameters:
    newId The new public id to give to this entity.

    References MemoryManager::deallocate(), and XMLString::replicate().

    void XMLEntityDecl::setSystemId ( const XMLCh *const   newId  ) 

    This method will set a new sysetm id on this entity.

    This will then control where the source for this entity lives. If it is an internal entity, then the system id is only for bookkeeping purposes, and to allow any external entities referenced from within the entity to be correctly resolved.

    Parameters:
    newId The new system id to give to the entity.

    References MemoryManager::deallocate(), and XMLString::replicate().

    void XMLEntityDecl::setBaseURI ( const XMLCh *const   newId  ) 

    This method will set a new baseURI on this entity.

    This will then control the URI used to resolve the relative system Id.

    Parameters:
    newId The new base URI to give to the entity.

    References MemoryManager::deallocate(), and XMLString::replicate().

    void XMLEntityDecl::setValue ( const XMLCh *const   newValue  ) 

    This method will set a new value for this entity.

    This is only valid if the entity is to be an internal entity. By setting this field, you are indicating that the entity is internal.

    Parameters:
    newValue The new value to give to this entity.

    References MemoryManager::deallocate(), XMLString::replicate(), and XMLString::stringLen().

    void XMLEntityDecl::setId ( const XMLSize_t  newId  ) 

    const XMLCh * XMLEntityDecl::getKey (  )  const

    This method allows objects of this class to be used within a standard keyed collection used commonly within the parser system.

    The collection calls this method to get the key (usually to hash it) by which the object is to be stored.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDTDHandler.html0000644000175000017500000003757611363620006021342 0ustar borisboris Xerces-C++: DTDHandler Class Reference

    DTDHandler Class Reference

    Receive notification of basic DTD-related events. More...

    Inheritance diagram for DTDHandler:

    DefaultHandler HandlerBase

    List of all members.

    Public Member Functions

    Constructors and Destructor
     DTDHandler ()
     Default Constructor.
    virtual ~DTDHandler ()
     Destructor.
    The DTD handler interface
    virtual void notationDecl (const XMLCh *const name, const XMLCh *const publicId, const XMLCh *const systemId)=0
     Receive notification of a notation declaration event.
    virtual void unparsedEntityDecl (const XMLCh *const name, const XMLCh *const publicId, const XMLCh *const systemId, const XMLCh *const notationName)=0
     Receive notification of an unparsed entity declaration event.
    virtual void resetDocType ()=0
     Reset the DocType object on its reuse.


    Detailed Description

    Receive notification of basic DTD-related events.

    If a SAX application needs information about notations and unparsed entities, then the application implements this interface and registers an instance with the SAX parser using the parser's setDTDHandler method. The parser uses the instance to report notation and unparsed entity declarations to the application.

    The SAX parser may report these events in any order, regardless of the order in which the notations and unparsed entities were declared; however, all DTD events must be reported after the document handler's startDocument event, and before the first startElement event.

    It is up to the application to store the information for future use (perhaps in a hash table or object tree). If the application encounters attributes of type "NOTATION", "ENTITY", or "ENTITIES", it can use the information that it obtained through this interface to find the entity and/or notation corresponding with the attribute value.

    The HandlerBase class provides a default implementation of this interface, which simply ignores the events.

    See also:
    Parser::setDTDHandler

    HandlerBase::HandlerBase


    Constructor & Destructor Documentation

    DTDHandler::DTDHandler (  ) 

    Default Constructor.

    virtual DTDHandler::~DTDHandler (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual void DTDHandler::notationDecl ( const XMLCh *const   name,
    const XMLCh *const   publicId,
    const XMLCh *const   systemId 
    ) [pure virtual]

    Receive notification of a notation declaration event.

    It is up to the application to record the notation for later reference, if necessary.

    If a system identifier is present, and it is a URL, the SAX parser must resolve it fully before passing it to the application.

    Parameters:
    name The notation name.
    publicId The notation's public identifier, or null if none was given.
    systemId The notation's system identifier, or null if none was given.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    See also:
    unparsedEntityDecl

    AttributeList::AttributeList

    Implemented in HandlerBase, and DefaultHandler.

    virtual void DTDHandler::unparsedEntityDecl ( const XMLCh *const   name,
    const XMLCh *const   publicId,
    const XMLCh *const   systemId,
    const XMLCh *const   notationName 
    ) [pure virtual]

    Receive notification of an unparsed entity declaration event.

    Note that the notation name corresponds to a notation reported by the notationDecl() event. It is up to the application to record the entity for later reference, if necessary.

    If the system identifier is a URL, the parser must resolve it fully before passing it to the application.

    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    Parameters:
    name The unparsed entity's name.
    publicId The entity's public identifier, or null if none was given.
    systemId The entity's system identifier (it must always have one).
    notationName The name of the associated notation.
    See also:
    notationDecl

    AttributeList::AttributeList

    Implemented in HandlerBase, and DefaultHandler.

    virtual void DTDHandler::resetDocType (  )  [pure virtual]

    Reset the DocType object on its reuse.

    This method helps in reseting the DTD object implementation defaults each time the DTD is begun.

    Implemented in HandlerBase, and DefaultHandler.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classBinOutputStream.png0000644000175000017500000000063311363620005022335 0ustar borisboris‰PNG  IHDRjPîýoPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf1IDATX…í”K EÉÄq¨;Ð 9êþ—àKÒ¢(¶•£õ¨ ”OÉ%hñE¡{^öÿAEÔ„>=E%-@¥‘J¨ ¶Ñw1Fõâ!U6ý˜¢X=f(t¡¬æ2c MêD ªLO-.£¢N2•PFNS~^VÄmY»2¬Åw£‰º¹+ ©ÒÔ÷})o¦Úþle7±öjª?­Fíú~5jÕnÔFmÔFý%-¸Á úeŠò©ø&œ—õÍÝÆNe5h¾Z®¸“) Ü FDB¤&XØ\ Ìh‚še*) 8ÞGÌEØ6ŸÛãœuÆfTùëö M…ñg`{„!IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/BinMemInputStream_8hpp-source.html0000644000175000017500000003746711363620004024200 0ustar borisboris Xerces-C++: BinMemInputStream.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/LexicalHandler_8hpp-source.html0000644000175000017500000002123011363620004023471 0ustar borisboris Xerces-C++: LexicalHandler.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMImplementationLS_8hpp.html0000644000175000017500000000444711363620005023114 0ustar borisboris Xerces-C++: DOMImplementationLS.hpp File Reference

    DOMImplementationLS.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMImplementationLS

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONLS_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONLS_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLDateTime.png0000644000175000017500000000076411363620006021313 0ustar borisboris‰PNG  IHDR[ˆz²Š+PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfŠIDATX…í–Qnà †ñKŸmnàž`Ú.´§Üÿ³ H¡*U"m“݈ÄðÙ§Šþðµbáó¾`ÿg½¢<ÄײGù‘Ä,ã$Qv“;3ë¾\„2ïÄéÎq†kÑ;í*¿ivVŒ¨Ãã×ڮΎëŽSÜBºb&xî»õÇbìn³ã£Nlo^Û x“ü×þ/Á?c»MæÏÁ·ï ñÛ¶]ˆ_ÜÇwÜñópבOñª!M)5*ƒGx…ºLkx,KG‘•LEa¼Ñ7-¹äj[œ{ù–ÚCö]¤'Ñï5䯲»Ã“†TG+ÎJ5Š©Ò­FPÎ^:Óõ5sü4Üu¤ëHÇwÜq1Z1 ¸²éŸÇA/ Cy zþ´$ÓÒ xÈ®#É¢á`ÇÃaó!®ÂŒ:O¸ã .bš6ÒÁpLN9*ðÐáXœ6;@hŠ!qd¨¸:Míž‹ möþ¨)$ð¬˜ÜwL[Zß ±é X¯Þ|«ŽŸ¯}8~ýC|I2‰­IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/DOMLSSerializer_8hpp-source.html0000644000175000017500000003205011363620004023524 0ustar borisboris Xerces-C++: DOMLSSerializer.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_enum.html0000644000175000017500000002710511363620005021421 0ustar borisboris Xerces-C++: Class Members - Enumerations
     

    - a -

    - b -

    - c -

    - d -

    - e -

    - f -

    - h -

    - i -

    - l -

    - n -

    - o -

    - p -

    - r -

    - s -

    - t -

    - u -

    - v -

    - x -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/LocalFileFormatTarget_8hpp.html0000644000175000017500000000447311363620005023501 0ustar borisboris Xerces-C++: LocalFileFormatTarget.hpp File Reference

    LocalFileFormatTarget.hpp File Reference

    Go to the source code of this file.

    Classes

    class  LocalFileFormatTarget

    Defines

    #define XERCESC_INCLUDE_GUARD_LOCALFILEFORMATTARGET_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_LOCALFILEFORMATTARGET_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XSIDCDefinition_8hpp-source.html0000644000175000017500000003301111363620005023476 0ustar borisboris Xerces-C++: XSIDCDefinition.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLPlatformUtils.html0000644000175000017500000031650611363620006022610 0ustar borisboris Xerces-C++: XMLPlatformUtils Class Reference

    XMLPlatformUtils Class Reference

    Utilities that must be implemented in a platform-specific way. More...

    List of all members.

    Static Public Member Functions

    static XMLSize_t alignPointerForNewBlockAllocation (XMLSize_t ptrSize)
     Aligns the specified pointer per platform block allocation requirements.
    Initialization and Panic methods
    static void Initialize (const char *const locale=XMLUni::fgXercescDefaultLocale, const char *const nlsHome=0, PanicHandler *const panicHandler=0, MemoryManager *const memoryManager=0)
     Perform per-process parser initialization.
    static void Initialize (XMLSize_t initialDOMHeapAllocSize, XMLSize_t maxDOMHeapAllocSize, XMLSize_t maxDOMSubAllocationSize, const char *const locale=XMLUni::fgXercescDefaultLocale, const char *const nlsHome=0, PanicHandler *const panicHandler=0, MemoryManager *const memoryManager=0)
     Perform per-process parser initialization.
    static void Terminate ()
     Perform per-process parser termination.
    static void panic (const PanicHandler::PanicReasons reason)
     The panic mechanism.
    File Methods
    static XMLFileMgrmakeFileMgr (MemoryManager *const manager)
     Make a new file object appropriate for the platform.
    static XMLFilePos curFilePos (FileHandle theFile, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Get the current file position.
    static void closeFile (FileHandle theFile, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Closes the file handle.
    static XMLFilePos fileSize (FileHandle theFile, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Returns the file size.
    static FileHandle openFile (const char *const fileName, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Opens the file.
    static FileHandle openFile (const XMLCh *const fileName, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Opens a named file.
    static FileHandle openFileToWrite (const char *const fileName, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Open a named file to write.
    static FileHandle openFileToWrite (const XMLCh *const fileName, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Open a named file to write.
    static FileHandle openStdInHandle (MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Opens the standard input as a file.
    static XMLSize_t readFileBuffer (FileHandle theFile, const XMLSize_t toRead, XMLByte *const toFill, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Reads the file buffer.
    static void writeBufferToFile (FileHandle const theFile, XMLSize_t toWrite, const XMLByte *const toFlush, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Writes the buffer to the file.
    static void resetFile (FileHandle theFile, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Resets the file handle.
    File System Methods
    static XMLChgetFullPath (const XMLCh *const srcPath, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Gets the full path from a relative path.
    static XMLChgetCurrentDirectory (MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Gets the current working directory.
    static bool isAnySlash (XMLCh c)
     Check if a character is a slash.
    static void removeDotSlash (XMLCh *const srcPath, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Remove occurrences of the pair of dot slash.
    static void removeDotDotSlash (XMLCh *const srcPath, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Remove occurrences of the dot dot slash.
    static bool isRelative (const XMLCh *const toCheck, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Determines if a path is relative or absolute.
    static XMLChweavePaths (const XMLCh *const basePath, const XMLCh *const relativePath, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Utility to join two paths.
    Timing Methods
    static unsigned long getCurrentMillis ()
     Gets the system time in milliseconds.
    Mutex Methods
    static XMLMutexMgrmakeMutexMgr (MemoryManager *const manager)
     Factory method for creating MutexMgr object.
    static void closeMutex (void *const mtxHandle, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Closes a mutex handle.
    static void lockMutex (void *const mtxHandle)
     Locks a mutex handle.
    static void * makeMutex (MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Make a new mutex.
    static void unlockMutex (void *const mtxHandle)
     Unlocks a mutex.
    External Message Support
    static XMLMsgLoader * loadMsgSet (const XMLCh *const msgDomain)
     Loads the message set from among the available domains.
    NEL Character Handling
    static void recognizeNEL (bool state, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     This function enables the recognition of NEL(0x85) char and LSEP (0x2028) as newline chars which is disabled by default.
    static bool isNELRecognized ()
     Return the value of fgNEL flag.
    Strict IANA Encoding Checking
    static void strictIANAEncoding (const bool state)
     This function enables/disables strict IANA encoding names checking.
    static bool isStrictIANAEncoding ()
     Returns whether a strict IANA encoding name check is enabled or disabled.

    Static Public Attributes

    Public Static Data
    static XMLNetAccessorfgNetAccessor
     The network accessor.
    static XMLTransServicefgTransService
     The transcoding service.
    static PanicHandlerfgUserPanicHandler
     The Panic Handler.
    static PanicHandlerfgDefaultPanicHandler
     The Panic Handler.
    static MemoryManagerfgMemoryManager
     The configurable memory manager.
    static XMLFileMgrfgFileMgr
    static XMLMutexMgrfgMutexMgr
    static XMLMutex * fgAtomicMutex
     Global mutex for fast or infrequent operations.
    static bool fgXMLChBigEndian
    static bool fgSSE2ok


    Detailed Description

    Utilities that must be implemented in a platform-specific way.

    This class contains methods that must be implemented in a platform specific manner. The actual implementations of these methods are available in the per-platform files inside src/util/Platforms .


    Member Function Documentation

    static void XMLPlatformUtils::Initialize ( const char *const   locale = XMLUni::fgXercescDefaultLocale,
    const char *const   nlsHome = 0,
    PanicHandler *const   panicHandler = 0,
    MemoryManager *const   memoryManager = 0 
    ) [static]

    Perform per-process parser initialization.

    Initialization must be called first in any client code.

    Parameters:
    locale The locale to use for messages.
    The locale is set iff the Initialize() is invoked for the very first time, to ensure that each and every message loader, in the process space, share the same locale.

    All subsequent invocations of Initialize(), with a different locale, have no effect on the message loaders, either instantiated, or to be instantiated.

    To set to a different locale, client application needs to Terminate() (or multiple Terminate() in the case where multiple Initialize() have been invoked before), followed by Initialize(new_locale).

    The default locale is "en_US".

    Parameters:
    nlsHome User specified location where MsgLoader retrieves error message files. the discussion above with regard to locale, applies to nlsHome as well.
    panicHandler Application's panic handler, application owns this handler. Application shall make sure that the plugged panic handler persists through the call to XMLPlatformUtils::Terminate().
    memoryManager Plugged-in memory manager which is owned by the application. Applications must make sure that the plugged-in memory manager persist through the call to XMLPlatformUtils::Terminate()

    static void XMLPlatformUtils::Initialize ( XMLSize_t  initialDOMHeapAllocSize,
    XMLSize_t  maxDOMHeapAllocSize,
    XMLSize_t  maxDOMSubAllocationSize,
    const char *const   locale = XMLUni::fgXercescDefaultLocale,
    const char *const   nlsHome = 0,
    PanicHandler *const   panicHandler = 0,
    MemoryManager *const   memoryManager = 0 
    ) [static]

    Perform per-process parser initialization.

    Initialization must be called first in any client code.

    Parameters:
    initialDOMHeapAllocSize The size of the first memory block allocated by the DOMDocument heap. Note that changing this parameter may result in poor performance and/or excessive memory usage. For the default value refer to dom/impl/DOMDocumentImpl.cpp.
    maxDOMHeapAllocSize The maximum size of the memory block allocated by the DOMDocument heap. As the document grows, the allocated by the heap memory blocks grow from initialDOMHeapAllocSize to maxDOMHeapAllocSize. Note that changing this parameter may result in poor performance and/or excessive memory usage. For the default value refer to dom/impl/DOMDocumentImpl.cpp.
    maxDOMSubAllocationSize The maximum size of the memory block requested that is handled by the DOMDocument heap. A request for a larger block is handled directly by the memory manager. Note that changing this parameter may result in poor performance and/or excessive memory usage. For the default value refer to dom/impl/DOMDocumentImpl.cpp.
    locale The locale to use for messages.
    The locale is set iff the Initialize() is invoked for the very first time, to ensure that each and every message loader, in the process space, share the same locale.

    All subsequent invocations of Initialize(), with a different locale, have no effect on the message loaders, either instantiated, or to be instantiated.

    To set to a different locale, client application needs to Terminate() (or multiple Terminate() in the case where multiple Initialize() have been invoked before), followed by Initialize(new_locale).

    The default locale is "en_US".

    Parameters:
    nlsHome User specified location where MsgLoader retrieves error message files. the discussion above with regard to locale, applies to nlsHome as well.
    panicHandler Application's panic handler, application owns this handler. Application shall make sure that the plugged panic handler persists through the call to XMLPlatformUtils::Terminate().
    memoryManager Plugged-in memory manager which is owned by the application. Applications must make sure that the plugged-in memory manager persist through the call to XMLPlatformUtils::Terminate()

    static void XMLPlatformUtils::Terminate (  )  [static]

    Perform per-process parser termination.

    The termination call is currently optional, to aid those dynamically loading the parser to clean up before exit, or to avoid spurious reports from leak detectors.

    static void XMLPlatformUtils::panic ( const PanicHandler::PanicReasons  reason  )  [static]

    The panic mechanism.

    If, during initialization, we cannot even get far enough along to get transcoding up or get message loading working, we call this method.

    Each platform can implement it however they want. This method will delegate the panic handling to a user specified panic handler or in the absence of it, the default panic handler.

    In case the default panic handler does not support a particular platform, the platform specific panic handling shall be implemented here .

    Parameters:
    reason The enumeration that defines the cause of the failure

    static XMLFileMgr* XMLPlatformUtils::makeFileMgr ( MemoryManager *const   manager  )  [static]

    Make a new file object appropriate for the platform.

    Parameters:
    manager The MemoryManager to use to allocate objects

    static XMLFilePos XMLPlatformUtils::curFilePos ( FileHandle  theFile,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Get the current file position.

    This must be implemented by the per-platform driver, which should use local file services to determine the current position within the passed file.

    Since the file API provided here only reads, if the host platform supports separate read/write positions, only the read position is of any interest, and hence should be the one returned.

    Parameters:
    theFile The file handle
    manager The MemoryManager to use to allocate objects

    static void XMLPlatformUtils::closeFile ( FileHandle  theFile,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Closes the file handle.

    This must be implemented by the per-platform driver, which should use local file services to close the passed file handle, and to destroy the passed file handle and any allocated data or system resources it contains.

    Parameters:
    theFile The file handle to close
    manager The MemoryManager to use to allocate objects

    static XMLFilePos XMLPlatformUtils::fileSize ( FileHandle  theFile,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Returns the file size.

    This must be implemented by the per-platform driver, which should use local file services to determine the current size of the file represented by the passed handle.

    Parameters:
    theFile The file handle whose size you want
    manager The MemoryManager to use to allocate objects
    Returns:
    Returns the size of the file in bytes

    static FileHandle XMLPlatformUtils::openFile ( const char *const   fileName,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Opens the file.

    This must be implemented by the per-platform driver, which should use local file services to open passed file. If it fails, a null handle pointer should be returned.

    Parameters:
    fileName The string containing the name of the file
    manager The MemoryManager to use to allocate objects
    Returns:
    The file handle of the opened file

    static FileHandle XMLPlatformUtils::openFile ( const XMLCh *const   fileName,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Opens a named file.

    This must be implemented by the per-platform driver, which should use local file services to open the passed file. If it fails, a null handle pointer should be returned.

    Parameters:
    fileName The string containing the name of the file
    manager The MemoryManager to use to allocate objects
    Returns:
    The file handle of the opened file

    static FileHandle XMLPlatformUtils::openFileToWrite ( const char *const   fileName,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Open a named file to write.

    This must be implemented by the per-platform driver, which should use local file services to open passed file. If it fails, a null handle pointer should be returned.

    Parameters:
    fileName The string containing the name of the file
    manager The MemoryManager to use to allocate objects
    Returns:
    The file handle of the opened file

    static FileHandle XMLPlatformUtils::openFileToWrite ( const XMLCh *const   fileName,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Open a named file to write.

    This must be implemented by the per-platform driver, which should use local file services to open the passed file. If it fails, a null handle pointer should be returned.

    Parameters:
    fileName The string containing the name of the file
    manager The MemoryManager to use to allocate objects
    Returns:
    The file handle of the opened file

    static FileHandle XMLPlatformUtils::openStdInHandle ( MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager  )  [static]

    Opens the standard input as a file.

    This must be implemented by the per-platform driver, which should use local file services to open a handle to the standard input. It should be a copy of the standard input handle, since it will be closed later!

    Parameters:
    manager The MemoryManager to use to allocate objects
    Returns:
    The file handle of the standard input stream

    static XMLSize_t XMLPlatformUtils::readFileBuffer ( FileHandle  theFile,
    const XMLSize_t  toRead,
    XMLByte *const   toFill,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Reads the file buffer.

    This must be implemented by the per-platform driver, which should use local file services to read up to 'toRead' bytes of data from the passed file, and return those bytes in the 'toFill' buffer. It is not an error not to read the requested number of bytes. When the end of file is reached, zero should be returned.

    Parameters:
    theFile The file handle to be read from.
    toRead The maximum number of byte to read from the current position
    toFill The byte buffer to fill
    manager The MemoryManager to use to allocate objects
    Returns:
    Returns the number of bytes read from the stream or file

    static void XMLPlatformUtils::writeBufferToFile ( FileHandle const   theFile,
    XMLSize_t  toWrite,
    const XMLByte *const   toFlush,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Writes the buffer to the file.

    This must be implemented by the per-platform driver, which should use local file services to write up to 'toWrite' bytes of data to the passed file. Unless exception raised by local file services, 'toWrite' bytes of data is to be written to the passed file.

    Parameters:
    theFile The file handle to be written to.
    toWrite The maximum number of byte to write from the current position
    toFlush The byte buffer to flush
    manager The MemoryManager to use to allocate objects
    Returns:
    void

    static void XMLPlatformUtils::resetFile ( FileHandle  theFile,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Resets the file handle.

    This must be implemented by the per-platform driver which will use local file services to reset the file position to the start of the the file.

    Parameters:
    theFile The file handle that you want to reset
    manager The MemoryManager to use to allocate objects

    static XMLCh* XMLPlatformUtils::getFullPath ( const XMLCh *const   srcPath,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Gets the full path from a relative path.

    This must be implemented by the per-platform driver. It should complete a relative path using the 'current directory', or whatever the local equivalent of a current directory is. If the passed source path is actually fully qualified, then a straight copy of it will be returned.

    Parameters:
    srcPath The path of the file for which you want the full path
    manager Pointer to the memory manager to be used to allocate objects.
    Returns:
    Returns the fully qualified path of the file name including the file name. This is dyanmically allocated and must be deleted by the caller when its no longer needed! The memory returned will beallocated using the static memory manager, if user do not supply a memory manager. Users then need to make sure to use either the default or user specific memory manager to deallocate the memory.

    static XMLCh* XMLPlatformUtils::getCurrentDirectory ( MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager  )  [static]

    Gets the current working directory.

    This must be implemented by the per-platform driver. It returns the current working directory is.

    Parameters:
    manager The MemoryManager to use to allocate objects
    Returns:
    Returns the current working directory. This is dyanmically allocated and must be deleted by the caller when its no longer needed! The memory returned will be allocated using the static memory manager, if users do not supply a memory manager. Users then need to make sure to use either the default or user specific memory manager to deallocate the memory.

    static bool XMLPlatformUtils::isAnySlash ( XMLCh  c  )  [static]

    Check if a character is a slash.

    This must be implemented by the per-platform driver.

    Parameters:
    c the character to be examined
    Returns:
    true if the character examined is a slash false otherwise

    static void XMLPlatformUtils::removeDotSlash ( XMLCh *const   srcPath,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Remove occurrences of the pair of dot slash.

    To remove the sequence, dot slash if it is part of the sequence, slash dot slash.

    Parameters:
    srcPath The path for which you want to remove the dot slash sequence.
    manager The MemoryManager to use to allocate objects
    Returns:

    static void XMLPlatformUtils::removeDotDotSlash ( XMLCh *const   srcPath,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Remove occurrences of the dot dot slash.

    To remove the sequence, slash dot dot slash and its preceding path segment if and only if the preceding path segment is not slash dot dot slash.

    Parameters:
    srcPath The path for which you want to remove the slash dot dot slash sequence and its preceding path segment.
    manager The MemoryManager to use to allocate objects
    Returns:

    static bool XMLPlatformUtils::isRelative ( const XMLCh *const   toCheck,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Determines if a path is relative or absolute.

    This must be implemented by the per-platform driver, which should determine whether the passed path is relative or not. The concept of relative and absolute might be... well relative on different platforms. But, as long as the determination is made consistently and in coordination with the weavePaths() method, it should work for any platform.

    Parameters:
    toCheck The file name which you want to check
    manager The MemoryManager to use to allocate objects
    Returns:
    Returns true if the filename appears to be relative

    static XMLCh* XMLPlatformUtils::weavePaths ( const XMLCh *const   basePath,
    const XMLCh *const   relativePath,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Utility to join two paths.

    This must be implemented by the per-platform driver, and should weave the relative path part together with the base part and return a new path that represents this combination.

    If the relative part turns out to be fully qualified, it will be returned as is. If it is not, then it will be woven onto the passed base path, by removing one path component for each leading "../" (or whatever is the equivalent in the local system) in the relative path.

    Parameters:
    basePath The string containing the base path
    relativePath The string containing the relative path
    manager The MemoryManager to use to allocate objects
    Returns:
    Returns a string containing the 'woven' path. It should be dynamically allocated and becomes the responsibility of the caller to delete.

    static unsigned long XMLPlatformUtils::getCurrentMillis (  )  [static]

    Gets the system time in milliseconds.

    This must be implemented by the per-platform driver, which should use local services to return the current value of a running millisecond timer. Note that the value returned is only as accurate as the millisecond time of the underlying host system.

    Returns:
    Returns the system time as an unsigned long

    static XMLMutexMgr* XMLPlatformUtils::makeMutexMgr ( MemoryManager *const   manager  )  [static]

    Factory method for creating MutexMgr object.

    This factory method creates a mutexmgr that will be used on the particular platform.

    Parameters:
    manager The MemoryManager to use to allocate objects

    static void XMLPlatformUtils::closeMutex ( void *const   mtxHandle,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Closes a mutex handle.

    Each per-platform driver must implement this. Only it knows what the actual content of the passed mutex handle is.

    Parameters:
    mtxHandle The mutex handle that you want to close
    manager The MemoryManager used to allocate the object

    static void XMLPlatformUtils::lockMutex ( void *const   mtxHandle  )  [static]

    Locks a mutex handle.

    Each per-platform driver must implement this. Only it knows what the actual content of the passed mutex handle is.

    Parameters:
    mtxHandle The mutex handle that you want to lock

    static void* XMLPlatformUtils::makeMutex ( MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager  )  [static]

    Make a new mutex.

    Each per-platform driver must implement this. Only it knows what the actual content of the passed mutex handle is. The returned handle pointer will be eventually passed to closeMutex() which is also implemented by the platform driver.

    Parameters:
    manager The MemoryManager to use to allocate objects

    static void XMLPlatformUtils::unlockMutex ( void *const   mtxHandle  )  [static]

    Unlocks a mutex.

    Each per-platform driver must implement this. Only it knows what the actual content of the passed mutex handle is.

    Note that, since the underlying system synchronization services are used, Xerces cannot guarantee that lock/unlock operations are correctly enforced on a per-thread basis or that incorrect nesting of lock/unlock operations will be caught.

    Parameters:
    mtxHandle The mutex handle that you want to unlock

    static XMLMsgLoader* XMLPlatformUtils::loadMsgSet ( const XMLCh *const   msgDomain  )  [static]

    Loads the message set from among the available domains.

    The returned object must be dynamically allocated and the caller becomes responsible for cleaning it up.

    Parameters:
    msgDomain The message domain which you want to load

    static void XMLPlatformUtils::recognizeNEL ( bool  state,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    This function enables the recognition of NEL(0x85) char and LSEP (0x2028) as newline chars which is disabled by default.

    It is only called once per process. Once it is set, any subsequent calls will result in exception being thrown.

    Note: 1. Turning this option on will make the parser non compliant to XML 1.0. 2. This option has no effect to document conforming to XML 1.1 compliant, which always recognize these two chars (0x85 and 0x2028) as newline characters.

    static bool XMLPlatformUtils::isNELRecognized (  )  [static]

    Return the value of fgNEL flag.

    static void XMLPlatformUtils::strictIANAEncoding ( const bool  state  )  [static]

    This function enables/disables strict IANA encoding names checking.

    The strict checking is disabled by default.

    Parameters:
    state If true, a strict IANA encoding name check is performed, otherwise, no checking.

    static bool XMLPlatformUtils::isStrictIANAEncoding (  )  [static]

    Returns whether a strict IANA encoding name check is enabled or disabled.

    static XMLSize_t XMLPlatformUtils::alignPointerForNewBlockAllocation ( XMLSize_t  ptrSize  )  [static]

    Aligns the specified pointer per platform block allocation requirements.

    The results of this function may be altered by defining XML_PLATFORM_NEW_BLOCK_ALIGNMENT.


    Member Data Documentation

    The network accessor.

    This is provided by the per-platform driver, so each platform can choose what actual implementation it wants to use. The object must be dynamically allocated.

    Note that you may optionally, if your platform driver does not install a network accessor, set it manually from your client code after calling Initialize(). This works because this object is not required during initialization, and only comes into play during actual XML parsing.

    The transcoding service.

    This is provided by the per platform driver, so each platform can choose what implementation it wants to use. When the platform independent initialization code needs to get a transcoding service object, it will call makeTransService() to ask the per-platform code to create one. Only one transcoding service object is requested per-process, so it is shared and synchronized among parser instances within that process.

    The Panic Handler.

    This is the application provided panic handler.

    The Panic Handler.

    This is the default panic handler.

    The configurable memory manager.

    This is the pluggable memory manager. If it is not provided by an application, a default implementation is used.

    XMLMutex* XMLPlatformUtils::fgAtomicMutex [static]

    Global mutex for fast or infrequent operations.

    Use this mutex only for fast (e.g., increment an integer, check flag, etc.) or infrequent (e.g., once-off initialization) operations.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_vars_0x65.html0000644000175000017500000000522111363620005022205 0ustar borisboris Xerces-C++: Class Members - Variables
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSAttributeUse-members.html0000644000175000017500000002042111363620006023731 0ustar borisboris Xerces-C++: Member List

    XSAttributeUse Member List

    This is the complete list of members for XSAttributeUse, including all inherited members.

    fComponentTypeXSObject [protected]
    fConstraintTypeXSAttributeUse [protected]
    fConstraintValueXSAttributeUse [protected]
    fIdXSObject [protected]
    fMemoryManagerXSObject [protected]
    fRequiredXSAttributeUse [protected]
    fXSAttributeDeclarationXSAttributeUse [protected]
    fXSModelXSObject [protected]
    getAttrDeclaration() const XSAttributeUse
    getConstraintType() const XSAttributeUse
    getConstraintValue()XSAttributeUse
    getId() const XSObject [virtual]
    getName() const XSObject [virtual]
    getNamespace()XSObject [virtual]
    getNamespaceItem()XSObject [virtual]
    getRequired() const XSAttributeUse
    getType() const XSObject
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    setId(XMLSize_t id)XSObject
    XMemory()XMemory [protected]
    XSAttributeUse(XSAttributeDeclaration *const xsAttDecl, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSAttributeUse
    XSObject(XSConstants::COMPONENT_TYPE compType, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSObject
    XSObjectFactory classXSAttributeUse [friend]
    ~XSAttributeUse()XSAttributeUse
    ~XSObject()XSObject [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMText_8hpp.html0000644000175000017500000000601611363620005020606 0ustar borisboris Xerces-C++: DOMText.hpp File Reference

    DOMText.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMText
     The DOMText interface inherits from DOMCharacterData and represents the textual content (termed character data in XML) of an DOMElement or DOMAttr. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMTEXT_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMTEXT_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLNetAccessor_8hpp-source.html0000644000175000017500000003615011363620005023414 0ustar borisboris Xerces-C++: XMLNetAccessor.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDefaultPanicHandler.png0000644000175000017500000000121711363620005023064 0ustar borisboris‰PNG  IHDR P™V˜PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf%IDAThí—[nã0 E%è·¨гÁ̆ò•ý/¡|È6•:µ]1mÐòZ°6©#QtôPéeÔKú7I1ü ŒÀ8ƒQ© ÕøI €j\©¿å!šöÇȽ ŸÄ¨7 Æ@*lGõTkÝòpC,ÙªbpM^µéöÙ¨òšT¬bI¶Ó ±D.¶ #{h7]æ‘®R–놞 %@éó@óÖÐú°Ýß º!;´[gvs7hRX14(°bPû†ÒV™~2x£N=v»q›…`,†ƒØcÀá ÌfzÞ¥ 7i·‹€:óš)’iK¦ìcÜÕAŒó:…±ùUýzŒ­Íøù?m‚ñ$ötÙ}ã€^‡=\Æ!0^¯×ËÏÀ¸{H¼–ÑÅ< Æ“ÑÀèt‡Œ^aVãW9,eOãKuQ`X†U`X†U`X†ÕïÂÈ0('Œo¶wržöNn1жK,yã^»cT¬½FiÎÖ‰ó2fXAJ†Ä…'ÂÜ£âgó;ôˆv/k;gw ™/iènp¯äù™Ö Ó6ñ!iÁг1÷øü@I -5´œü1è³L;ën$Ó›+ÀC0¤¶AI¦×nsÇÐ-nð#÷ð HØ%2%çA.”¬3¯™R$qæLñÅøN{'7áiïä&0<íÜxa|Á„7è$ÞÔ», IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/XMLValidator_8hpp-source.html0000644000175000017500000006645311363620005023141 0ustar borisboris Xerces-C++: XMLValidator.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSMultiValueFacet-members.html0000644000175000017500000002025611363620006024351 0ustar borisboris Xerces-C++: Member List

    XSMultiValueFacet Member List

    This is the complete list of members for XSMultiValueFacet, including all inherited members.

    fComponentTypeXSObject [protected]
    fFacetKindXSMultiValueFacet [protected]
    fIdXSObject [protected]
    fIsFixedXSMultiValueFacet [protected]
    fLexicalValuesXSMultiValueFacet [protected]
    fMemoryManagerXSObject [protected]
    fXSAnnotationListXSMultiValueFacet [protected]
    fXSModelXSObject [protected]
    getAnnotations()XSMultiValueFacet
    getFacetKind() const XSMultiValueFacet
    getId() const XSObject [virtual]
    getLexicalFacetValues()XSMultiValueFacet
    getName() const XSObject [virtual]
    getNamespace()XSObject [virtual]
    getNamespaceItem()XSObject [virtual]
    getType() const XSObject
    isFixed() const XSMultiValueFacet
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    setId(XMLSize_t id)XSObject
    XMemory()XMemory [protected]
    XSMultiValueFacet(XSSimpleTypeDefinition::FACET facetKind, StringList *lexicalValues, bool isFixed, XSAnnotation *const headAnnot, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSMultiValueFacet
    XSObject(XSConstants::COMPONENT_TYPE compType, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSObject
    ~XSMultiValueFacet()XSMultiValueFacet
    ~XSObject()XSObject [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classOutOfMemoryException.html0000644000175000017500000002524311363620006023521 0ustar borisboris Xerces-C++: OutOfMemoryException Class Reference

    OutOfMemoryException Class Reference

    Inheritance diagram for OutOfMemoryException:

    XMemory

    List of all members.

    Public Member Functions

     OutOfMemoryException ()
     ~OutOfMemoryException ()
    XMLExcepts::Codes getCode () const
    const XMLChgetMessage () const
    const XMLChgetType () const
    const char * getSrcFile () const
    XMLFileLoc getSrcLine () const
     OutOfMemoryException (const OutOfMemoryException &toCopy)
    OutOfMemoryExceptionoperator= (const OutOfMemoryException &toAssign)


    Constructor & Destructor Documentation

    OutOfMemoryException::OutOfMemoryException (  ) 

    OutOfMemoryException::~OutOfMemoryException (  ) 

    OutOfMemoryException::OutOfMemoryException ( const OutOfMemoryException toCopy  ) 


    Member Function Documentation

    XMLExcepts::Codes OutOfMemoryException::getCode (  )  const

    const XMLCh * OutOfMemoryException::getMessage (  )  const

    const XMLCh * OutOfMemoryException::getType (  )  const

    const char * OutOfMemoryException::getSrcFile (  )  const

    XMLFileLoc OutOfMemoryException::getSrcLine (  )  const

    OutOfMemoryException & OutOfMemoryException::operator= ( const OutOfMemoryException toAssign  ) 


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classValidationContext-members.html0000644000175000017500000002010111363620006024470 0ustar borisboris Xerces-C++: Member List

    ValidationContext Member List

    This is the complete list of members for ValidationContext, including all inherited members.

    addId(const XMLCh *const )=0ValidationContext [pure virtual]
    addIdRef(const XMLCh *const )=0ValidationContext [pure virtual]
    checkEntity(const XMLCh *const ) const =0ValidationContext [pure virtual]
    clearIdRefList()=0ValidationContext [pure virtual]
    fMemoryManagerValidationContext [protected]
    getEntityDeclPool() const =0ValidationContext [pure virtual]
    getIdRefList() const =0ValidationContext [pure virtual]
    getURIForPrefix(XMLCh *)ValidationContext [virtual]
    getValidatingMemberType() const =0ValidationContext [pure virtual]
    isPrefixUnknown(XMLCh *)ValidationContext [virtual]
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    setElemStack(ElemStack *)ValidationContext [virtual]
    setEntityDeclPool(const NameIdPool< DTDEntityDecl > *const)=0ValidationContext [pure virtual]
    setIdRefList(RefHashTableOf< XMLRefInfo > *const)=0ValidationContext [pure virtual]
    setNamespaceScope(NamespaceScope *)ValidationContext [virtual]
    setScanner(XMLScanner *)ValidationContext [virtual]
    setValidatingMemberType(DatatypeValidator *validatingMemberType)=0ValidationContext [pure virtual]
    toCheckIdRefList(bool)=0ValidationContext [pure virtual]
    ValidationContext(MemoryManager *const memMgr=XMLPlatformUtils::fgMemoryManager)ValidationContext [protected]
    XMemory()XMemory [protected]
    ~ValidationContext()ValidationContext [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/TranscodingException_8hpp-source.html0000644000175000017500000001101211363620004024741 0ustar borisboris Xerces-C++: TranscodingException.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classAttributes-members.html0000644000175000017500000001316711363620005023174 0ustar borisboris Xerces-C++: Member List

    Attributes Member List

    This is the complete list of members for Attributes, including all inherited members.

    Attributes()Attributes
    getIndex(const XMLCh *const uri, const XMLCh *const localPart, XMLSize_t &index) const =0Attributes [pure virtual]
    getIndex(const XMLCh *const uri, const XMLCh *const localPart) const =0Attributes [pure virtual]
    getIndex(const XMLCh *const qName, XMLSize_t &index) const =0Attributes [pure virtual]
    getIndex(const XMLCh *const qName) const =0Attributes [pure virtual]
    getLength() const =0Attributes [pure virtual]
    getLocalName(const XMLSize_t index) const =0Attributes [pure virtual]
    getQName(const XMLSize_t index) const =0Attributes [pure virtual]
    getType(const XMLSize_t index) const =0Attributes [pure virtual]
    getType(const XMLCh *const uri, const XMLCh *const localPart) const =0Attributes [pure virtual]
    getType(const XMLCh *const qName) const =0Attributes [pure virtual]
    getURI(const XMLSize_t index) const =0Attributes [pure virtual]
    getValue(const XMLSize_t index) const =0Attributes [pure virtual]
    getValue(const XMLCh *const uri, const XMLCh *const localPart) const =0Attributes [pure virtual]
    getValue(const XMLCh *const qName) const =0Attributes [pure virtual]
    ~Attributes()Attributes [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMProcessingInstruction_8hpp.html0000644000175000017500000000547011363620005024243 0ustar borisboris Xerces-C++: DOMProcessingInstruction.hpp File Reference

    DOMProcessingInstruction.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMProcessingInstruction
     The DOMProcessingInstruction interface represents a "processing instruction", used in XML as a way to keep processor-specific information in the text of the document. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMPROCESSINGINSTRUCTION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMPROCESSINGINSTRUCTION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XSNotationDeclaration_8hpp.html0000644000175000017500000000447311363620005023543 0ustar borisboris Xerces-C++: XSNotationDeclaration.hpp File Reference

    XSNotationDeclaration.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XSNotationDeclaration

    Defines

    #define XERCESC_INCLUDE_GUARD_XSNOTATIONDECLARATION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XSNOTATIONDECLARATION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMComment.png0000644000175000017500000000102311363620005021164 0ustar borisboris‰PNG  IHDR}ˆ8ñù¼PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf©IDAThí—AŽÃ EñfÖØ7pN0š¹PW½ÿÆ6&%MÒ–¢*Óʤ"±Éó©"ýô;Ô¾ÓÏ4Ò‚¿æQzíHîÄ’ñy­“)˜˜úyÖ¥Ùy–'–G,·žH~Æ“îõÖÏ+jøàƒÿT>üßáü•å“xíª{«†Z~iù,Øã«¼â–ÏÆÕršíQzu$žL—!ˬy·l“™sŽ4û?²úhr/ÅVÈ.O%ÁÓe̯mòŲ9/вéZö†3o)ýoõO|Y߫ڪ¿µ|®ÿ‚'nÆVüÒòùù«ÌfIÕæ¢9I©þôOþ¿Áȇÿ{%þ/øàƒ>øÏäq¨å”‡Ê ¾á1é$Kf‰7'‡]Þ íd È%èãAc(<”šh2k¨Ç©­j‡ÏØ QfMèÌùõ—üå%¾Ï¤ ^¤âk¼Ï»þõ‚¾ú›óÏ~þªåMÕs‡¢ÿîüà÷û¼³Æ.šõÓXIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classDOMXPathExpression.html0000644000175000017500000003150311363620006023055 0ustar borisboris Xerces-C++: DOMXPathExpression Class Reference

    DOMXPathExpression Class Reference

    The DOMXPathExpression interface represents a parsed and resolved XPath expression. More...

    List of all members.

    Public Member Functions

    Destructor
    virtual ~DOMXPathExpression ()
     Destructor.
    Functions introduced in DOM Level 3
    virtual DOMXPathResultevaluate (const DOMNode *contextNode, DOMXPathResult::ResultType type, DOMXPathResult *result) const =0
     Evaluates this XPath expression and returns a result.
    Non-standard Extension
    virtual void release ()=0
     Called to indicate that this DOMXPathExpression is no longer in use and that the implementation may relinquish any resources associated with it.

    Protected Member Functions

    Hidden constructors
     DOMXPathExpression ()


    Detailed Description

    The DOMXPathExpression interface represents a parsed and resolved XPath expression.

    Since:
    DOM Level 3

    Constructor & Destructor Documentation

    DOMXPathExpression::DOMXPathExpression (  )  [protected]

    virtual DOMXPathExpression::~DOMXPathExpression (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual DOMXPathResult* DOMXPathExpression::evaluate ( const DOMNode contextNode,
    DOMXPathResult::ResultType  type,
    DOMXPathResult result 
    ) const [pure virtual]

    Evaluates this XPath expression and returns a result.

    Parameters:
    contextNode of type DOMNode The context is context node for the evaluation of this XPath expression. If the XPathEvaluator was obtained by casting the Document then this must be owned by the same document and must be a DOMDocument, DOMElement, DOMAttribute, DOMText, DOMCDATASection, DOMComment, DOMProcessingInstruction, or XPathNamespace. If the context node is a DOMText or a DOMCDATASection, then the context is interpreted as the whole logical text node as seen by XPath, unless the node is empty in which case it may not serve as the XPath context.
    type If a specific type is specified, then the result will be coerced to return the specified type relying on XPath conversions and fail if the desired coercion is not possible. This must be one of the type codes of DOMXPathResult.
    result of type DOMXPathResult* The result specifies a specific result object which may be reused and returned by this method. If this is specified as nullor the implementation does not reuse the specified result, a new result object will be constructed and returned.
    Returns:
    DOMXPathResult* The result of the evaluation of the XPath expression.
    Exceptions:
    <code>DOMXPathException</code> TYPE_ERR: Raised if the result cannot be converted to return the specified type.
    <code>DOMException</code> WRONG_DOCUMENT_ERR: The DOMNode is from a document that is not supported by the XPathEvaluator that created this DOMXPathExpression. NOT_SUPPORTED_ERR: The DOMNode is not a type permitted as an XPath context node or the request type is not permitted by this DOMXPathExpression.

    virtual void DOMXPathExpression::release (  )  [pure virtual]

    Called to indicate that this DOMXPathExpression is no longer in use and that the implementation may relinquish any resources associated with it.

    Access to a released object will lead to unexpected result.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSModelGroupDefinition.html0000644000175000017500000004023011363620006023747 0ustar borisboris Xerces-C++: XSModelGroupDefinition Class Reference

    XSModelGroupDefinition Class Reference

    Inheritance diagram for XSModelGroupDefinition:

    XSObject XMemory

    List of all members.

    Public Member Functions

    Constructors
     XSModelGroupDefinition (XercesGroupInfo *const groupInfo, XSParticle *const groupParticle, XSAnnotation *const annot, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     The default constructor.
    Destructor
     ~XSModelGroupDefinition ()
    overridden XSXSObject methods
    const XMLChgetName () const
     The name of type NCName of this declaration as defined in XML Namespaces.
    const XMLChgetNamespace ()
     The [target namespace] of this object, or null if it is unspecified.
    XSNamespaceItemgetNamespaceItem ()
     A namespace schema information item corresponding to the target namespace of the component, if it's globally declared; or null otherwise.
    XSModelGroupDefinition methods
    XSModelGroupgetModelGroup ()
     A model group.
    XSAnnotationgetAnnotation () const
     Optional.

    Protected Attributes

    XercesGroupInfo * fGroupInfo
    XSParticlefModelGroupParticle
    XSAnnotationfAnnotation


    Constructor & Destructor Documentation

    XSModelGroupDefinition::XSModelGroupDefinition ( XercesGroupInfo *const   groupInfo,
    XSParticle *const   groupParticle,
    XSAnnotation *const   annot,
    XSModel *const   xsModel,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    The default constructor.

    Parameters:
    groupInfo 
    groupParticle 
    annot 
    xsModel 
    manager The configurable memory manager

    XSModelGroupDefinition::~XSModelGroupDefinition (  ) 


    Member Function Documentation

    const XMLCh* XSModelGroupDefinition::getName (  )  const [virtual]

    The name of type NCName of this declaration as defined in XML Namespaces.

    Reimplemented from XSObject.

    const XMLCh* XSModelGroupDefinition::getNamespace (  )  [virtual]

    The [target namespace] of this object, or null if it is unspecified.

    Reimplemented from XSObject.

    XSNamespaceItem* XSModelGroupDefinition::getNamespaceItem (  )  [virtual]

    A namespace schema information item corresponding to the target namespace of the component, if it's globally declared; or null otherwise.

    Reimplemented from XSObject.

    XSModelGroup* XSModelGroupDefinition::getModelGroup (  ) 

    A model group.

    XSAnnotation * XSModelGroupDefinition::getAnnotation (  )  const

    Optional.

    An [annotation].

    References fAnnotation.


    Member Data Documentation

    XercesGroupInfo* XSModelGroupDefinition::fGroupInfo [protected]


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/SAXException_8hpp.html0000644000175000017500000000550011363620005021631 0ustar borisboris Xerces-C++: SAXException.hpp File Reference

    SAXException.hpp File Reference

    Go to the source code of this file.

    Classes

    class  SAXException
     Encapsulate a general SAX error or warning. More...
    class  SAXNotSupportedException
    class  SAXNotRecognizedException

    Defines

    #define XERCESC_INCLUDE_GUARD_SAXEXCEPTION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_SAXEXCEPTION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classParser.html0000644000175000017500000005773711363620006020666 0ustar borisboris Xerces-C++: Parser Class Reference

    Parser Class Reference

    Basic interface for SAX (Simple API for XML) parsers. More...

    Inheritance diagram for Parser:

    SAXParser

    List of all members.

    Public Member Functions

    Constructors and Destructor
     Parser ()
     The default constructor.
    virtual ~Parser ()
     The destructor.
    The parser interfaces
    virtual void setEntityResolver (EntityResolver *const resolver)=0
     Allow an application to register a custom entity resolver.
    virtual void setDTDHandler (DTDHandler *const handler)=0
     Allow an application to register a DTD event handler.
    virtual void setDocumentHandler (DocumentHandler *const handler)=0
     Allow an application to register a document event handler.
    virtual void setErrorHandler (ErrorHandler *const handler)=0
     Allow an application to register an error event handler.
    virtual void parse (const InputSource &source)=0
     Parse an XML document.
    virtual void parse (const XMLCh *const systemId)=0
     Parse an XML document from a system identifier (URI).
    virtual void parse (const char *const systemId)=0
     Parse an XML document from a system identifier (URI).


    Detailed Description

    Basic interface for SAX (Simple API for XML) parsers.

    All SAX parsers must implement this basic interface: it allows applications to register handlers for different types of events and to initiate a parse from a URI, or a character stream.

    All SAX parsers must also implement a zero-argument constructor (though other constructors are also allowed).

    SAX parsers are reusable but not re-entrant: the application may reuse a parser object (possibly with a different input source) once the first parse has completed successfully, but it may not invoke the parse() methods recursively within a parse.

    See also:
    EntityResolver::EntityResolver

    DTDHandler::DTDHandler

    DocumentHandler::DocumentHandler

    ErrorHandler::ErrorHandler

    HandlerBase::HandlerBase

    InputSource::InputSource


    Constructor & Destructor Documentation

    Parser::Parser (  ) 

    The default constructor.

    virtual Parser::~Parser (  )  [virtual]

    The destructor.


    Member Function Documentation

    virtual void Parser::setEntityResolver ( EntityResolver *const   resolver  )  [pure virtual]

    Allow an application to register a custom entity resolver.

    If the application does not register an entity resolver, the SAX parser will resolve system identifiers and open connections to entities itself (this is the default behaviour implemented in HandlerBase).

    Applications may register a new or different entity resolver in the middle of a parse, and the SAX parser must begin using the new resolver immediately.

    Parameters:
    resolver The object for resolving entities.
    See also:
    EntityResolver::EntityResolver

    HandlerBase::HandlerBase

    Implemented in SAXParser.

    virtual void Parser::setDTDHandler ( DTDHandler *const   handler  )  [pure virtual]

    Allow an application to register a DTD event handler.

    If the application does not register a DTD handler, all DTD events reported by the SAX parser will be silently ignored (this is the default behaviour implemented by HandlerBase).

    Applications may register a new or different handler in the middle of a parse, and the SAX parser must begin using the new handler immediately.

    Parameters:
    handler The DTD handler.
    See also:
    DTDHandler::DTDHandler

    HandlerBase::HandlerBase

    Implemented in SAXParser.

    virtual void Parser::setDocumentHandler ( DocumentHandler *const   handler  )  [pure virtual]

    Allow an application to register a document event handler.

    If the application does not register a document handler, all document events reported by the SAX parser will be silently ignored (this is the default behaviour implemented by HandlerBase).

    Applications may register a new or different handler in the middle of a parse, and the SAX parser must begin using the new handler immediately.

    Parameters:
    handler The document handler.
    See also:
    DocumentHandler::DocumentHandler

    HandlerBase::HandlerBase

    Implemented in SAXParser.

    virtual void Parser::setErrorHandler ( ErrorHandler *const   handler  )  [pure virtual]

    Allow an application to register an error event handler.

    If the application does not register an error event handler, all error events reported by the SAX parser will be silently ignored, except for fatalError, which will throw a SAXException (this is the default behaviour implemented by HandlerBase).

    Applications may register a new or different handler in the middle of a parse, and the SAX parser must begin using the new handler immediately.

    Parameters:
    handler The error handler.
    See also:
    ErrorHandler::ErrorHandler

    SAXException::SAXException

    HandlerBase::HandlerBase

    Implemented in SAXParser.

    virtual void Parser::parse ( const InputSource source  )  [pure virtual]

    Parse an XML document.

    The application can use this method to instruct the SAX parser to begin parsing an XML document from any valid input source (a character stream, a byte stream, or a URI).

    Applications may not invoke this method while a parse is in progress (they should create a new Parser instead for each additional XML document). Once a parse is complete, an application may reuse the same Parser object, possibly with a different input source.

    Parameters:
    source The input source for the top-level of the XML document.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    XMLException An exception from the parser or client handler code.
    See also:
    InputSource::InputSource

    setEntityResolver

    setDTDHandler

    setDocumentHandler

    setErrorHandler

    Implemented in SAXParser.

    virtual void Parser::parse ( const XMLCh *const   systemId  )  [pure virtual]

    Parse an XML document from a system identifier (URI).

    This method is a shortcut for the common case of reading a document from a system identifier. It is the exact equivalent of the following:

    parse(new URLInputSource(systemId));

    If the system identifier is a URL, it must be fully resolved by the application before it is passed to the parser.

    Parameters:
    systemId The system identifier (URI).
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    XMLException An exception from the parser or client handler code.
    See also:
    parse(const InputSource&)

    Implemented in SAXParser.

    virtual void Parser::parse ( const char *const   systemId  )  [pure virtual]

    Parse an XML document from a system identifier (URI).

    This method is a shortcut for the common case of reading a document from a system identifier. It is the exact equivalent of the following:

    parse(new URLInputSource(systemId));

    If the system identifier is a URL, it must be fully resolved by the application before it is passed to the parser.

    Parameters:
    systemId The system identifier (URI).
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    XMLException An exception from the parser or client handler code.
    See also:
    parse(const InputSource&)

    Implemented in SAXParser.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMImplementationRegistry.html0000644000175000017500000002114611363620005024470 0ustar borisboris Xerces-C++: DOMImplementationRegistry Class Reference

    DOMImplementationRegistry Class Reference

    List of all members.

    Static Public Member Functions

    Functions introduced in DOM Level 3
    static DOMImplementationgetDOMImplementation (const XMLCh *features)
     Return the first registered implementation that has the desired features, or null if none is found.
    static DOMImplementationListgetDOMImplementationList (const XMLCh *features)
     Return the list of registered implementation that have the desired features.
    static void addSource (DOMImplementationSource *source)
     Register an implementation.


    Member Function Documentation

    static DOMImplementation* DOMImplementationRegistry::getDOMImplementation ( const XMLCh features  )  [static]

    Return the first registered implementation that has the desired features, or null if none is found.

    Parameters:
    features A string that specifies which features are required. This is a space separated list in which each feature is specified by its name optionally followed by a space and a version number. This is something like: "XML 1.0 Traversal 2.0"
    Returns:
    An implementation that has the desired features, or null if this source has none.
    Since:
    DOM Level 3

    static DOMImplementationList* DOMImplementationRegistry::getDOMImplementationList ( const XMLCh features  )  [static]

    Return the list of registered implementation that have the desired features.

    Parameters:
    features A string that specifies which features are required. This is a space separated list in which each feature is specified by its name optionally followed by a space and a version number. This is something like: "XML 1.0 Traversal 2.0"
    Returns:
    A DOMImplementationList object that contains the DOMImplementation that have the desired features
    Since:
    DOM Level 3

    static void DOMImplementationRegistry::addSource ( DOMImplementationSource source  )  [static]

    Register an implementation.

    Parameters:
    source A DOMImplementation Source object to be added to the registry. The registry does NOT adopt the source object. Users still own it.
    Since:
    DOM Level 3


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLDouble.png0000644000175000017500000000134711363620006021027 0ustar borisboris‰PNG  IHDRšÀÄgµPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf}IDAThíšKrƒ0 †ñ¦k¤ȽA{¡®rÿ#T’_8ƒIq5 me6|’‰Ñ?^Þ-ËòíʫӬiÈ+ñžLh$ #Á˜F¼ÛÊûˆˆbõiß(å !èžÙ“4vX£éZ—IÛxC £ÃòÈoJC9©4úM‰Ý“ÎÑRÓ’mÓ8vÛÔ»`J;x7&hcÓ~ëÈŸ£ÙŽ€_+/_¼î´ÛÇei/·Ûei—Ž©Óœæ4§9ÍiN;*¶_ƒWþîýç´¦…`Êï·-§iM½šÒJ6®[Οa”Žü¶ÑBM4Èéù®#ÚF ©zCÛÓ >²­©½ÂBçhwZÈ-Ž’ûCÕ"ÞJ4˜xÒ¦…¨ê£n϶嘞¡M§9íÍv´ŸAs=dg sšÓœæ4§9Íi?H³ý¼òwï¿¢Q>ò¤ƒ¦l¤Í¿ëI¾‚RöZ+“mirE¤Ô„¸KÛœVZÜää4QTØIí5Y&H4¤ôÊq®Ô+ M´™E’ŠT$(’fwè tzA¹¢Fïi©›7;vZfѤ³(ÿ@Q~tÊ h9yJ ô~«´¢7ÄnzÉžmqÿI±»/Vñ£ÖRŽi2êØoÍJcŠ©Æ@¢ |¨ýM÷S„_ðf9íÑlG@ÛÑù4×C&q–0§9ÍiNsšÓœöƒ4°,ËjøÁi¦4®]Ci¬MC8M ²päÛëU&4>­\!Ÿ¢-뺄 k¡­òèAðz|Ž&„=Ú:EÛx³O8G ÉIÚ¨WÓÂjL“Qs~KýMÝ«ö7‰#ÌÆtª8Íih¦#à' ª ~ƆS-IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classDOMException.html0000644000175000017500000006011011363620005021702 0ustar borisboris Xerces-C++: DOMException Class Reference

    DOMException Class Reference

    Inheritance diagram for DOMException:

    DOMLSException DOMRangeException DOMXPathException

    List of all members.

    Public Types

    Public Constants
    enum  ExceptionCode {
      INDEX_SIZE_ERR = 1, DOMSTRING_SIZE_ERR = 2, HIERARCHY_REQUEST_ERR = 3, WRONG_DOCUMENT_ERR = 4,
      INVALID_CHARACTER_ERR = 5, NO_DATA_ALLOWED_ERR = 6, NO_MODIFICATION_ALLOWED_ERR = 7, NOT_FOUND_ERR = 8,
      NOT_SUPPORTED_ERR = 9, INUSE_ATTRIBUTE_ERR = 10, INVALID_STATE_ERR = 11, SYNTAX_ERR = 12,
      INVALID_MODIFICATION_ERR = 13, NAMESPACE_ERR = 14, INVALID_ACCESS_ERR = 15, VALIDATION_ERR = 16,
      TYPE_MISMATCH_ERR = 17
    }
     ExceptionCode. More...

    Public Member Functions

    const XMLChgetMessage () const
    Constructors
     DOMException ()
     Default constructor for DOMException.
     DOMException (short code, short messageCode=0, MemoryManager *const memoryManager=XMLPlatformUtils::fgMemoryManager)
     Constructor which takes an error code and an optional message code.
     DOMException (const DOMException &other)
     Copy constructor.
    Destructor.
    virtual ~DOMException ()
     Destructor for DOMException.

    Public Attributes

    Public variables
    short code
     A code value, from the set defined by the ExceptionCode enum, indicating the type of error that occured.
    const XMLChmsg
     A string value.

    Protected Attributes

    MemoryManagerfMemoryManager


    Member Enumeration Documentation

    ExceptionCode.

    INDEX_SIZE_ERR: If index or size is negative, or greater than the allowed value.

    DOMSTRING_SIZE_ERR: If the specified range of text does not fit into a DOMString.

    HIERARCHY_REQUEST_ERR: If any node is inserted somewhere it doesn't belong.

    WRONG_DOCUMENT_ERR: If a node is used in a different document than the one that created it (that doesn't support it).

    INVALID_CHARACTER_ERR: If an invalid or illegal character is specified, such as in a name. See production 2 in the XML specification for the definition of a legal character, and production 5 for the definition of a legal name character.

    NO_DATA_ALLOWED_ERR: If data is specified for a node which does not support data.

    NO_MODIFICATION_ALLOWED_ERR: If an attempt is made to modify an object where modifications are not allowed.

    NOT_FOUND_ERR: If an attempt is made to reference a node in a context where it does not exist.

    NOT_SUPPORTED_ERR: If the implementation does not support the requested type of object or operation.

    INUSE_ATTRIBUTE_ERR: If an attempt is made to add an attribute that is already in use elsewhere.

    The above are since DOM Level 1

    Since:
    DOM Level 1

    INVALID_STATE_ERR: If an attempt is made to use an object that is not, or is no longer, usable.

    SYNTAX_ERR: If an invalid or illegal string is specified.

    INVALID_MODIFICATION_ERR: If an attempt is made to modify the type of the underlying object.

    NAMESPACE_ERR: If an attempt is made to create or change an object in a way which is incorrect with regard to namespaces.

    INVALID_ACCESS_ERR: If a parameter or an operation is not supported by the underlying object.

    The above are since DOM Level 2

    Since:
    DOM Level 2

    VALIDATION_ERR: If a call to a method such as insertBefore or removeChild would make the Node invalid with respect to "partial validity", this exception would be raised and the operation would not be done.

    TYPE_MISMATCH_ERR: If the type of an object is incompatible with the expected type of the parameter associated to the object, this exception would be raised.

    The above is since DOM Level 3

    Since:
    DOM Level 3
    Enumerator:
    INDEX_SIZE_ERR 
    DOMSTRING_SIZE_ERR 
    HIERARCHY_REQUEST_ERR 
    WRONG_DOCUMENT_ERR 
    INVALID_CHARACTER_ERR 
    NO_DATA_ALLOWED_ERR 
    NO_MODIFICATION_ALLOWED_ERR 
    NOT_FOUND_ERR 
    NOT_SUPPORTED_ERR 
    INUSE_ATTRIBUTE_ERR 
    INVALID_STATE_ERR 
    SYNTAX_ERR 
    INVALID_MODIFICATION_ERR 
    NAMESPACE_ERR 
    INVALID_ACCESS_ERR 
    VALIDATION_ERR 
    TYPE_MISMATCH_ERR 

    Reimplemented in DOMXPathException.


    Constructor & Destructor Documentation

    DOMException::DOMException (  ) 

    Default constructor for DOMException.

    DOMException::DOMException ( short  code,
    short  messageCode = 0,
    MemoryManager *const   memoryManager = XMLPlatformUtils::fgMemoryManager 
    )

    Constructor which takes an error code and an optional message code.

    Parameters:
    code The error code which indicates the exception
    messageCode The string containing the error message
    memoryManager The memory manager used to (de)allocate memory

    DOMException::DOMException ( const DOMException other  ) 

    Copy constructor.

    Parameters:
    other The object to be copied.

    virtual DOMException::~DOMException (  )  [virtual]

    Destructor for DOMException.


    Member Function Documentation

    const XMLCh * DOMException::getMessage (  )  const

    References msg.


    Member Data Documentation

    A code value, from the set defined by the ExceptionCode enum, indicating the type of error that occured.

    A string value.

    Applications may use this field to hold an error message. The field value is not set by the DOM implementation, meaning that the string will be empty when an exception is first thrown.

    Referenced by getMessage().


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMEntityReference_8hpp.html0000644000175000017500000000536411363620005022762 0ustar borisboris Xerces-C++: DOMEntityReference.hpp File Reference

    DOMEntityReference.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMEntityReference
     DOMEntityReference objects may be inserted into the structure model when an entity reference is in the source document, or when the user wishes to insert an entity reference. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMENTITYREFERENCE_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMENTITYREFERENCE_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLGrammarDescription_8hpp-source.html0000644000175000017500000002447711363620005025006 0ustar borisboris Xerces-C++: XMLGrammarDescription.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/NullPointerException_8hpp-source.html0000644000175000017500000001104611363620004024750 0ustar borisboris Xerces-C++: NullPointerException.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classHash2KeysSetOfEnumerator.png0000644000175000017500000000112411363620006024031 0ustar borisboris‰PNG  IHDRõP3N. PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfêIDAThí–Krƒ0 †­M×70'È´Ê*÷?Bõð3%Íž 2L Xè“~)NÂϰq ßó¨álgÿ?&>#Ïq;ÊÁÐPvä3²<ÏÓ4‰";³#H¥Nq"9’CØ\èÊÖ³»³%oþˆ3QÇ^Ý|/Ö[Ù“Üv<Œ­üNó#ØöýÖƒ,oíóyu¹·Üײ×ïsÛ±W§ýa¿%ÎþlöÈÿÈoë{¯*ûëvNöív=%û¬}îlg;ÛÙÎv¶³ílg;{[6 p^Î>!ôÔ!3LmLDɸ9ôèÒ€î†[ùÎós6?ƒÎ4G"Æ`ÁͲ¼÷üˆÍÙN„ÂlÉu™ì5B Œ/Äè*€ªÁyYmä²gWÏÝjÃÖlÐÌí3=ä7í,.e£­"AŠ0Ùš56ìê9­–e´Ê˜WÔ,ì a·l"¬‘™Ë"—sÞ½çlh­æ˜)X~O_Ò>Ã|Wònض=evBWͳ纊I§yrŒ¡t$ZÁ.²s yÿñ¼˜wv”Øv Yê¬q*äf`Ã^¬w£y[oSª2ú„TÑ\Šf‘ÒS½“S²Úr+Ûå}ŸgÏÝêÓ}mÏ]ï ûá.r{×Í~øo‰³OÄøùVÂÈÑLôIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/DOMDocumentType_8hpp.html0000644000175000017500000000544411363620005022306 0ustar borisboris Xerces-C++: DOMDocumentType.hpp File Reference

    DOMDocumentType.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMDocumentType
     Each DOMDocument has a doctype attribute whose value is either null or a DOMDocumentType object. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMDOCUMENTTYPE_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMDOCUMENTTYPE_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSValue.html0000644000175000017500000014437411363620006020753 0ustar borisboris Xerces-C++: XSValue Class Reference

    XSValue Class Reference

    Inheritance diagram for XSValue:

    XMemory

    List of all members.

    Public Types

    enum  DataType {
      dt_string = 0, dt_boolean = 1, dt_decimal = 2, dt_float = 3,
      dt_double = 4, dt_duration = 5, dt_dateTime = 6, dt_time = 7,
      dt_date = 8, dt_gYearMonth = 9, dt_gYear = 10, dt_gMonthDay = 11,
      dt_gDay = 12, dt_gMonth = 13, dt_hexBinary = 14, dt_base64Binary = 15,
      dt_anyURI = 16, dt_QName = 17, dt_NOTATION = 18, dt_normalizedString = 19,
      dt_token = 20, dt_language = 21, dt_NMTOKEN = 22, dt_NMTOKENS = 23,
      dt_Name = 24, dt_NCName = 25, dt_ID = 26, dt_IDREF = 27,
      dt_IDREFS = 28, dt_ENTITY = 29, dt_ENTITIES = 30, dt_integer = 31,
      dt_nonPositiveInteger = 32, dt_negativeInteger = 33, dt_long = 34, dt_int = 35,
      dt_short = 36, dt_byte = 37, dt_nonNegativeInteger = 38, dt_unsignedLong = 39,
      dt_unsignedInt = 40, dt_unsignedShort = 41, dt_unsignedByte = 42, dt_positiveInteger = 43,
      dt_MAXCOUNT = 44
    }
    enum  XMLVersion { ver_10, ver_11 }
    enum  Status {
      st_Init, st_NoContent, st_NoCanRep, st_NoActVal,
      st_NotSupported, st_CantCreateRegEx, st_FOCA0002, st_FOCA0001,
      st_FOCA0003, st_FODT0003, st_UnknownType
    }
    enum  DataGroup { dg_numerics, dg_datetimes, dg_strings }
    enum  DoubleFloatType {
      DoubleFloatType_NegINF, DoubleFloatType_PosINF, DoubleFloatType_NaN, DoubleFloatType_Zero,
      DoubleFloatType_Normal
    }

    Public Member Functions

    Destructor
     ~XSValue ()

    Static Public Member Functions

    Externalization methods
    static bool validate (const XMLCh *const content, DataType datatype, Status &status, XMLVersion version=ver_10, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Validate a given string of the data type specified.
    static XMLChgetCanonicalRepresentation (const XMLCh *const content, DataType datatype, Status &status, XMLVersion version=ver_10, bool toValidate=true, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Get the canonical representation for a given string of the data type specified.
    static XSValuegetActualValue (const XMLCh *const content, DataType datatype, Status &status, XMLVersion version=ver_10, bool toValidate=true, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Get the actual value, in the form of XSValue, for a given string of the data type specified.
    static DataType getDataType (const XMLCh *const dtString)

    Public Attributes

    struct XSValue::XSValue_Data fData
     public data

    Friends

    class XMLInitializer

    Classes

    union  t_value
    struct  XSValue_Data
     public data More...


    Member Enumeration Documentation

    Enumerator:
    dt_string 
    dt_boolean 
    dt_decimal 
    dt_float 
    dt_double 
    dt_duration 
    dt_dateTime 
    dt_time 
    dt_date 
    dt_gYearMonth 
    dt_gYear 
    dt_gMonthDay 
    dt_gDay 
    dt_gMonth 
    dt_hexBinary 
    dt_base64Binary 
    dt_anyURI 
    dt_QName 
    dt_NOTATION 
    dt_normalizedString 
    dt_token 
    dt_language 
    dt_NMTOKEN 
    dt_NMTOKENS 
    dt_Name 
    dt_NCName 
    dt_ID 
    dt_IDREF 
    dt_IDREFS 
    dt_ENTITY 
    dt_ENTITIES 
    dt_integer 
    dt_nonPositiveInteger 
    dt_negativeInteger 
    dt_long 
    dt_int 
    dt_short 
    dt_byte 
    dt_nonNegativeInteger 
    dt_unsignedLong 
    dt_unsignedInt 
    dt_unsignedShort 
    dt_unsignedByte 
    dt_positiveInteger 
    dt_MAXCOUNT 

    Enumerator:
    ver_10 
    ver_11 

    Enumerator:
    st_Init 
    st_NoContent 
    st_NoCanRep 
    st_NoActVal 
    st_NotSupported 
    st_CantCreateRegEx 
    st_FOCA0002 
    st_FOCA0001 
    st_FOCA0003 
    st_FODT0003 
    st_UnknownType 

    Enumerator:
    dg_numerics 
    dg_datetimes 
    dg_strings 

    Enumerator:
    DoubleFloatType_NegINF 
    DoubleFloatType_PosINF 
    DoubleFloatType_NaN 
    DoubleFloatType_Zero 
    DoubleFloatType_Normal 


    Constructor & Destructor Documentation

    XSValue::~XSValue (  ) 


    Member Function Documentation

    static bool XSValue::validate ( const XMLCh *const   content,
    DataType  datatype,
    Status status,
    XMLVersion  version = ver_10,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Validate a given string of the data type specified.

    Parameters:
    content data to be validated
    datatype schema datatype
    status validation status which is set upon validation fails
    version xml version
    manager memory manager provided

    static XMLCh* XSValue::getCanonicalRepresentation ( const XMLCh *const   content,
    DataType  datatype,
    Status status,
    XMLVersion  version = ver_10,
    bool  toValidate = true,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Get the canonical representation for a given string of the data type specified.

    Parameters:
    content raw data
    datatype schema datatype
    status validation status which is set upon validation fails
    version xml version
    toValidate to validate the content before generate canonical representation
    manager memory manager provided

    static XSValue* XSValue::getActualValue ( const XMLCh *const   content,
    DataType  datatype,
    Status status,
    XMLVersion  version = ver_10,
    bool  toValidate = true,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Get the actual value, in the form of XSValue, for a given string of the data type specified.

    Client application is responsible for the deletion of the XSValue returned.

    Parameters:
    content raw data
    datatype schema datatype
    status validation status which is set upon validation fails
    version xml version
    toValidate to validate the content before generate actual value
    manager memory manager provided

    static DataType XSValue::getDataType ( const XMLCh *const   dtString  )  [static]


    Friends And Related Function Documentation

    friend class XMLInitializer [friend]


    Member Data Documentation


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DTDHandler_8hpp-source.html0000644000175000017500000002061111363620004022525 0ustar borisboris Xerces-C++: DTDHandler.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMXPathEvaluator.png0000644000175000017500000000067711363620006022510 0ustar borisboris‰PNG  IHDR‚P'Û°êPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfUIDATX…í”]nÃ0€á¥ÏÀ èn°I;Ïžrÿ#Œ7sê´ŽæI&“ ‚1_ÁX œ„Ú¸r¡/3S§uÚ|!”A ¬ãÐ%»% q¤aú!¦bC ò–¢È;âh+á‡ÂTHþž­— s0*IVBÛ¡¿d ~‚·ÿôdZ}?ôç„| ª: mí,ê玀7÷Õ} r² D*ç…š¾ʵóÜêI8 aükß“Ë`AX¾^N¸,ËË §˜Å$LÂ$LÂ$L‚ËGG>{àý:&o“Дٴ+1+éîŠ<"x(”¥ªèfçQ‚zPW‚Z]V•ت¨ÇÌU‹p— –!Å5›F¸X=PÃášF*`— ±¿%0"ú”Pf!%SÖ²õXÕ}rÊ,T’à³ÈYí~%“ð¿½yW¾Xtê!†¤7IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/XMLBigInteger_8hpp-source.html0000644000175000017500000004445711363620004023232 0ustar borisboris Xerces-C++: XMLBigInteger.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLFileMgr_8hpp.html0000644000175000017500000000773311363620005021237 0ustar borisboris Xerces-C++: XMLFileMgr.hpp File Reference

    XMLFileMgr.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLFileMgr

    Defines

    #define XERCESC_INCLUDE_GUARD_XMLFILEMGR_HPP
    #define XERCES_Invalid_File_Handle   0

    Variables

    XERCES_CPP_NAMESPACE_BEGIN
    typedef void * 
    FileHandle


    Define Documentation

    #define XERCES_Invalid_File_Handle   0

    #define XERCESC_INCLUDE_GUARD_XMLFILEMGR_HPP


    Variable Documentation

    XERCES_CPP_NAMESPACE_BEGIN typedef void* FileHandle


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMDocumentTraversal.png0000644000175000017500000000072411363620005023233 0ustar borisboris‰PNG  IHDR˜PW¡ËPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfjIDATX…í•KnÄ0@ͦkð ìÞ ½ÐH•rÿ#”Ÿ#·IfœŒY@Ff0ðÆRM”„iš@À®Á€ç’,BF3wydoÇ“¿º0Òa¹öæºÁ€«åZ‘wÄÇ&°‡4Ü# 4Iíÿ0äMt“µ)$×`•Áê‘—Ê.¬ùO`Évluvok|šº…ñ¹÷0’®upb¨}¦Þ¦x‰iÓ¦O‚k_°×&´{þº{†~Ï|š€~À¤iÔÚDak±ÁfIÀv›ú©“ǼúçÂ>–»Â–åqSØ}§°€,` XÀT¾‡äg(*}Õiò°0¢\kᥰQÌÜ•2SŠ,…)dæ°š%.7ÿ¤N~Íâc3SÝ”üÆÉÅMѪ¨dÓtf••Ž}¦=íÁˆ&Â4jÖ¦iÙ«Î~RgÚìîYi÷̦ɧ¯0¦Mûìº,`‡°±Oݘü#[£XÚ,&IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classXMLSchemaDescription.png0000644000175000017500000000127711363620006023223 0ustar borisboris‰PNG  IHDRšˆíÏï´PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfUIDAThí˜[v£0 @ÑO¿-í@îf6Ô¯ì ÕÃ6†@Ò:>ÓL*ÃÁø¡=Hˆ´üÙ–?y^{ÚlÉÉÒóë!HœLc9Yt•>‘jýmš*Ä8Ä„Ö {&[iv¶cP7¹pFÜÐÎÃrÏoF#4?@3âÆÒ1š?ov ëf1Íçnú.L¥Ýøn ÐÎUû_C^Ž6÷ øµööÅ}?A»|<-ííryZÚSÇ4hA ZЂ´ Ýjsÿ >óÿÞ_EcËs©Hâ}¼—÷ ì—5sݼ˜¹VSŽÓ¼ã…>Á< ™„¤ó¥¢‰}FMÀÍÍŸ±MÊ鈰Ñt#A§a+‚ “'äTâ9¾O`©@mhHÕ‹µ:PÊ•–Ý#=›VšéÆœ«nVZÀކXiˆê”›4/šliÔ鯽n¹Õ¾nÑjÆjQ'4êä‹·®hÕ!2/·”;K-ºØÅ4[L¹Ä´‹ÂhÛ=/LÛµ Òæ¾ç¾‚õAÜLXЂ´ -hAû‡4œÙ–4ÑÚ#4¹$hC‰M™ìânÂ%ášzÈ…–ö[aX®ÛfÓ MîÒ’Ð;ýxíUTzÙ²’d è u4Y“=ÍRÇ£š!$ëÝ Eëjª#pƒ+M+Mv‚±J÷47¯_µ»nfSV¢ï÷/!Ý£™ß* :š“;K›Ì]Z‘fRÛïòÃý–6~ÛЪOÀž*,Áôº¥)ÙóÖÅtј.%¦[¿ µ«çïeiø Ñ¦¾?´$ÊJ‹ãkIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/XMLNotationDecl_8hpp-source.html0000644000175000017500000006713111363620005023571 0ustar borisboris Xerces-C++: XMLNotationDecl.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classBase64-members.html0000644000175000017500000000735511363620005022074 0ustar borisboris Xerces-C++: Member List

    Base64 Member List

    This is the complete list of members for Base64, including all inherited members.

    Conf_RFC2045 enum valueBase64
    Conf_Schema enum valueBase64
    Conformance enum nameBase64
    decode(const XMLByte *const inputData, XMLSize_t *decodedLength, MemoryManager *const memMgr=0, Conformance conform=Conf_RFC2045)Base64 [static]
    decodeToXMLByte(const XMLCh *const inputData, XMLSize_t *decodedLength, MemoryManager *const memMgr=0, Conformance conform=Conf_RFC2045)Base64 [static]
    encode(const XMLByte *const inputData, const XMLSize_t inputLength, XMLSize_t *outputLength, MemoryManager *const memMgr=0)Base64 [static]
    getCanonicalRepresentation(const XMLCh *const inputData, MemoryManager *const memMgr=0, Conformance conform=Conf_RFC2045)Base64 [static]
    getDataLength(const XMLCh *const inputData, MemoryManager *const memMgr=0, Conformance conform=Conf_RFC2045)Base64 [static]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLInitializer.html0000644000175000017500000001663611363620006022267 0ustar borisboris Xerces-C++: XMLInitializer Class Reference

    XMLInitializer Class Reference

    Utilities that must be implemented in a class-specific way. More...

    List of all members.

    Static Protected Member Functions

    Initialization methods
    static void initializeTransService ()
     Perform per-class allocationa and initialization of static data.
    static void initializeStaticData ()
    static void terminateStaticData ()
     Perform per-class release of static data.
    static void terminateTransService ()

    Friends

    class XMLPlatformUtils


    Detailed Description

    Utilities that must be implemented in a class-specific way.

    This class contains methods that must be implemented by different classes that have static data (class or local) that they need to initialize when XMLPlatformUtils::Initialize is invoked.


    Member Function Documentation

    static void XMLInitializer::initializeTransService (  )  [static, protected]

    Perform per-class allocationa and initialization of static data.

    These functions should be called from XMLPlatformUtils::Initialize.

    static void XMLInitializer::initializeStaticData (  )  [static, protected]

    static void XMLInitializer::terminateStaticData (  )  [static, protected]

    Perform per-class release of static data.

    These functions should be called from XMLPlatformUtils::Terminate.

    static void XMLInitializer::terminateTransService (  )  [static, protected]


    Friends And Related Function Documentation

    friend class XMLPlatformUtils [friend]


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/ParseException_8hpp.html0000644000175000017500000000377611363620005022265 0ustar borisboris Xerces-C++: ParseException.hpp File Reference

    ParseException.hpp File Reference

    Go to the source code of this file.

    Defines

    #define XERCESC_INCLUDE_GUARD_PARSEEXCEPTION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_PARSEEXCEPTION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMXPathEvaluator-members.html0000644000175000017500000000601111363620006024304 0ustar borisboris Xerces-C++: Member List

    DOMXPathEvaluator Member List

    This is the complete list of members for DOMXPathEvaluator, including all inherited members.

    createExpression(const XMLCh *expression, const DOMXPathNSResolver *resolver)=0DOMXPathEvaluator [pure virtual]
    createNSResolver(const DOMNode *nodeResolver)=0DOMXPathEvaluator [pure virtual]
    DOMXPathEvaluator()DOMXPathEvaluator [protected]
    evaluate(const XMLCh *expression, const DOMNode *contextNode, const DOMXPathNSResolver *resolver, DOMXPathResult::ResultType type, DOMXPathResult *result)=0DOMXPathEvaluator [pure virtual]
    ~DOMXPathEvaluator()DOMXPathEvaluator [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMEntityReference.html0000644000175000017500000002120411363620005023040 0ustar borisboris Xerces-C++: DOMEntityReference Class Reference

    DOMEntityReference Class Reference

    DOMEntityReference objects may be inserted into the structure model when an entity reference is in the source document, or when the user wishes to insert an entity reference. More...

    Inheritance diagram for DOMEntityReference:

    DOMNode

    List of all members.

    Public Member Functions

    Destructor
    virtual ~DOMEntityReference ()
     Destructor.

    Protected Member Functions

    Hidden constructors
     DOMEntityReference ()
     DOMEntityReference (const DOMEntityReference &other)


    Detailed Description

    DOMEntityReference objects may be inserted into the structure model when an entity reference is in the source document, or when the user wishes to insert an entity reference.

    Note that character references and references to predefined entities are considered to be expanded by the HTML or XML processor so that characters are represented by their Unicode equivalent rather than by an entity reference. Moreover, the XML processor may completely expand references to entities while building the structure model, instead of providing DOMEntityReference objects. If it does provide such objects, then for a given DOMEntityReference node, it may be that there is no DOMEntity node representing the referenced entity. If such an DOMEntity exists, then the subtree of the DOMEntityReference node is in general a copy of the DOMEntity node subtree. However, this may not be true when an entity contains an unbound namespace prefix. In such a case, because the namespace prefix resolution depends on where the entity reference is, the descendants of the DOMEntityReference node may be bound to different namespace URIs.

    As for DOMEntity nodes, DOMEntityReference nodes and all their descendants are readonly.

    See also the Document Object Model (DOM) Level 2 Core Specification.

    Since:
    DOM Level 1

    Constructor & Destructor Documentation

    DOMEntityReference::DOMEntityReference (  )  [protected]

    DOMEntityReference::DOMEntityReference ( const DOMEntityReference other  )  [protected]

    virtual DOMEntityReference::~DOMEntityReference (  )  [virtual]

    Destructor.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classInputSource.png0000644000175000017500000000270111363620006021507 0ustar borisboris‰PNG  IHDRäˆ]#ã^PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfWIDATxœíœo’›0 Å×~ƾè Ú i¦3{ÿ#Ô–ÍLC%6ÒË.!žŸãìdöõz¤~ß"é^|+ýnÐOé^|+rvrvrvrv‘CüñaÅòûU®r.p7äÿAgÈ]Xõ¡êÃ3Äú7äoªŒ<À ¤ 6 Ò3xC~‡*·O¿@îég|òwuPåQ;·B^Ü ùÕÇò„<¾˜ÇÊ7äïê9a_ ,†üÍËiÞBÜé™¶ò·uíÓ§!¿A×W>ò+º„¼Rä†ü’ìÏZì2äì2äì2äì2äì²/U¡t}Béú„Òô ¥èJÐ'” O(@ŸP:€>¡t}Béú„Òô ¥èJÐ'” O(@ŸP:€>¡t}Béú„Òô ¥èJÐ'” O(@ŸP:€>¡t€“»EÒ½øVêï0éî0Q#CÎ.CÎ.CÎ.Cή=ònµÞ¹†“bȯè yßÂÓ_Q yï^]ׇ·z×Ç÷;Ë=l{…’ï “pC~E%äîÕw},ð°èóÊ«£era˜ÎT¬ò×7°LåÞ¥:§ ù{:E>¿NÈ]á~jȯè y¿E^šÀò+ª!´»%ò| µåmÕ‡!¼ë#ô¡t}Béú„Òô ¥üO}™š…÷ ¿ÉƬØmÌŠÝÆ¬ØmÌŠÝÆ¬ØmÌŠÝÆ¬ØmÌŠÝÆ¬ØmÌŠÝÆ¬ØmÌŠÝÆ¬ØmÌŠÝÆ¬²~ŸëÏù.fuÁê×pƒ~R"³j³z^¢·z^¢·z^¢·z^¢·"Xm„Á97xؾ8žÈçßtLp¢g¿<Òyó‰)ìS\ÉS³‚h3úµåÙX=J‚Ü׸ðcÞpÝP ¹Ÿ6Âf{¹¹Uç\¼ìdjkÕ2¬»\³jÈky*V£—ß!¯çÙXÕ‘»ÔWZ‚Ô ‡°_8'àò^òzX@$æU*m È{ï:—ÇÓë!w ^5Ñ…G©©h·Ôt™ОÍ|kž&ämyŠÈSc9IÜ;C}%t°D¾ih…Ü›ô”‘Óz„5®ÇêÍûÁ¸÷®s~„íˆÓl›Íè•Ké=­fË 'Úu>º%Oò¦<[+j:56'‰%¾Dž¤Ë}ÝÐùLóòå©RyÁt}"§‘síB-O›“ÇòÁ Ë(-y‘Ï÷†–<;äAiTX$™NÒ9\7´Gü©ÊÛvq>8er®€2jB¾íÛØò*î|›-Î |y%Ïq•C y-O ¹›.†\Ÿ+äcÃ9òõÀ²å·], ÀS{Èa×Å*'8@^ËsŒ|J×’gk•ÉîΕç¹?G^Ëó(œ‡­i€ŸZÝ#_t$÷e®ˆq4»ËËò9\ÉÓŒü<ÏòÅX>EyÆâç†uC3ò8¾3ØÌXºåÆ[¡‡<)pä_™±¤óÝ€.P7ŸåôÊÑìÕ‘ëà‡Ã ÍËóŒeD~–§f•çøã°×’§‚<¼ï—3–í¼Ü盆Ûv¼ñÓçÑä·Ö¹²'¿ÍV§yš­ÎóXíÇŸ–† ùV†ü_¬‹üß™UÅêy‰>Þêy‰>Þêy‰>Þêy‰>ުዠ¢DfÕ¤¿¯ý&Ÿ!(IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/XMLMutexMgr_8hpp.html0000644000175000017500000000607711363620005021462 0ustar borisboris Xerces-C++: XMLMutexMgr.hpp File Reference

    XMLMutexMgr.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLMutexMgr

    Defines

    #define XERCESC_INCLUDE_GUARD_XMLMUTEXMGR_HPP

    Variables

    XERCES_CPP_NAMESPACE_BEGIN
    typedef void * 
    XMLMutexHandle


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XMLMUTEXMGR_HPP


    Variable Documentation

    XERCES_CPP_NAMESPACE_BEGIN typedef void* XMLMutexHandle


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLBigInteger-members.html0000644000175000017500000001544711363620006023452 0ustar borisboris Xerces-C++: Member List

    XMLBigInteger Member List

    This is the complete list of members for XMLBigInteger, including all inherited members.

    compareValues(const XMLBigInteger *const lValue, const XMLBigInteger *const rValue, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLBigInteger [static]
    compareValues(const XMLCh *const lString, const int &lSign, const XMLCh *const rString, const int &rSign, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLBigInteger [static]
    divide(const unsigned int byteToShift)XMLBigInteger
    getCanonicalRepresentation(const XMLCh *const rawData, MemoryManager *const memMgr=XMLPlatformUtils::fgMemoryManager, bool isNonPositiveInteger=false)XMLBigInteger [static]
    getRawData() const XMLBigInteger
    getSign() const XMLBigInteger
    getTotalDigit() const XMLBigInteger
    intValue() const XMLBigInteger
    multiply(const unsigned int byteToShift)XMLBigInteger
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    operator==(const XMLBigInteger &toCompare) const XMLBigInteger
    parseBigInteger(const XMLCh *const toConvert, XMLCh *const retBuffer, int &signValue, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLBigInteger [static]
    XMemory()XMemory [protected]
    XMLBigInteger(const XMLCh *const strValue, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLBigInteger
    XMLBigInteger(const XMLBigInteger &toCopy)XMLBigInteger
    ~XMLBigInteger()XMLBigInteger


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLNumber_8hpp.html0000644000175000017500000000430311363620005021130 0ustar borisboris Xerces-C++: XMLNumber.hpp File Reference

    XMLNumber.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLNumber

    Defines

    #define XERCESC_INCLUDE_GUARD_XMLNUMBER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XMLNUMBER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classSAXParser-members.html0000644000175000017500000011232311363620006022651 0ustar borisboris Xerces-C++: Member List

    SAXParser Member List

    This is the complete list of members for SAXParser, including all inherited members.

    attDef(const DTDElementDecl &elemDecl, const DTDAttDef &attDef, const bool ignore)SAXParser [virtual]
    cacheGrammarFromParse(const bool newState)SAXParser
    docCharacters(const XMLCh *const chars, const XMLSize_t length, const bool cdataSection)SAXParser [virtual]
    docComment(const XMLCh *const comment)SAXParser [virtual]
    docPI(const XMLCh *const target, const XMLCh *const data)SAXParser [virtual]
    doctypeComment(const XMLCh *const comment)SAXParser [virtual]
    doctypeDecl(const DTDElementDecl &elemDecl, const XMLCh *const publicId, const XMLCh *const systemId, const bool hasIntSubset, const bool hasExtSubset=false)SAXParser [virtual]
    doctypePI(const XMLCh *const target, const XMLCh *const data)SAXParser [virtual]
    doctypeWhitespace(const XMLCh *const chars, const XMLSize_t length)SAXParser [virtual]
    elementDecl(const DTDElementDecl &decl, const bool isIgnored)SAXParser [virtual]
    endAttList(const DTDElementDecl &elemDecl)SAXParser [virtual]
    endDocument()SAXParser [virtual]
    endElement(const XMLElementDecl &elemDecl, const unsigned int urlId, const bool isRoot, const XMLCh *const elemPrefix)SAXParser [virtual]
    endEntityReference(const XMLEntityDecl &entDecl)SAXParser [virtual]
    endExtSubset()SAXParser [virtual]
    endInputSource(const InputSource &inputSource)SAXParser [virtual]
    endIntSubset()SAXParser [virtual]
    entityDecl(const DTDEntityDecl &entityDecl, const bool isPEDecl, const bool isIgnored)SAXParser [virtual]
    error(const unsigned int errCode, const XMLCh *const msgDomain, const XMLErrorReporter::ErrTypes errType, const XMLCh *const errorText, const XMLCh *const systemId, const XMLCh *const publicId, const XMLFileLoc lineNum, const XMLFileLoc colNum)SAXParser [virtual]
    ErrType_Error enum valueXMLErrorReporter
    ErrType_Fatal enum valueXMLErrorReporter
    ErrType_Warning enum valueXMLErrorReporter
    ErrTypes enum nameXMLErrorReporter
    ErrTypes_Unknown enum valueXMLErrorReporter
    expandSystemId(const XMLCh *const systemId, XMLBuffer &toFill)SAXParser [virtual]
    getCalculateSrcOfs() const SAXParser
    getDisableDefaultEntityResolution() const SAXParser
    getDocumentHandler()SAXParser
    getDocumentHandler() const SAXParser
    getDoNamespaces() const SAXParser
    getDoSchema() const SAXParser
    getEntityResolver()SAXParser
    getEntityResolver() const SAXParser
    getErrorCount() const SAXParser
    getErrorHandler()SAXParser
    getErrorHandler() const SAXParser
    getExitOnFirstFatalError() const SAXParser
    getExternalNoNamespaceSchemaLocation() const SAXParser
    getExternalSchemaLocation() const SAXParser
    getGenerateSyntheticAnnotations() const SAXParser
    getGrammar(const XMLCh *const nameSpaceKey)SAXParser
    getGrammarResolver() const SAXParser [protected]
    getHandleMultipleImports() const SAXParser
    getIdentityConstraintChecking() const SAXParser
    getIgnoreAnnotations() const SAXParser
    getIgnoreCachedDTD() const SAXParser
    getLoadExternalDTD() const SAXParser
    getLoadSchema() const SAXParser
    getLowWaterMark() const SAXParser
    getPSVIHandler()SAXParser
    getPSVIHandler() const SAXParser
    getRootGrammar()SAXParser
    getScanner() const SAXParser [protected]
    getSecurityManager() const SAXParser
    getSkipDTDValidation() const SAXParser
    getSrcOffset() const SAXParser
    getStandardUriConformant() const SAXParser
    getURIText(unsigned int uriId) const SAXParser
    getValidateAnnotations() const SAXParser
    getValidationConstraintFatal() const SAXParser
    getValidationSchemaFullChecking() const SAXParser
    getValidationScheme() const SAXParser
    getValidator() const SAXParser
    getXMLEntityResolver()SAXParser
    getXMLEntityResolver() const SAXParser
    ignorableWhitespace(const XMLCh *const chars, const XMLSize_t length, const bool cdataSection)SAXParser [virtual]
    installAdvDocHandler(XMLDocumentHandler *const toInstall)SAXParser
    isCachingGrammarFromParse() const SAXParser
    isUsingCachedGrammarInParse() const SAXParser
    loadGrammar(const InputSource &source, const Grammar::GrammarType grammarType, const bool toCache=false)SAXParser
    loadGrammar(const XMLCh *const systemId, const Grammar::GrammarType grammarType, const bool toCache=false)SAXParser
    loadGrammar(const char *const systemId, const Grammar::GrammarType grammarType, const bool toCache=false)SAXParser
    notationDecl(const XMLNotationDecl &notDecl, const bool isIgnored)SAXParser [virtual]
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    parse(const InputSource &source)SAXParser [virtual]
    parse(const XMLCh *const systemId)SAXParser [virtual]
    parse(const char *const systemId)SAXParser [virtual]
    parseFirst(const XMLCh *const systemId, XMLPScanToken &toFill)SAXParser
    parseFirst(const char *const systemId, XMLPScanToken &toFill)SAXParser
    parseFirst(const InputSource &source, XMLPScanToken &toFill)SAXParser
    parseNext(XMLPScanToken &token)SAXParser
    Parser()Parser
    parseReset(XMLPScanToken &token)SAXParser
    removeAdvDocHandler(XMLDocumentHandler *const toRemove)SAXParser
    resetCachedGrammarPool()SAXParser
    resetDocType()SAXParser [virtual]
    resetDocument()SAXParser [virtual]
    resetEntities()SAXParser [virtual]
    resetErrors()SAXParser [virtual]
    resolveEntity(XMLResourceIdentifier *resourceIdentifier)SAXParser [virtual]
    SAXParser(XMLValidator *const valToAdopt=0, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager, XMLGrammarPool *const gramPool=0)SAXParser
    setCalculateSrcOfs(const bool newState)SAXParser
    setDisableDefaultEntityResolution(const bool newValue)SAXParser
    setDocumentHandler(DocumentHandler *const handler)SAXParser [virtual]
    setDoNamespaces(const bool newState)SAXParser
    setDoSchema(const bool newState)SAXParser
    setDTDHandler(DTDHandler *const handler)SAXParser [virtual]
    setEntityResolver(EntityResolver *const resolver)SAXParser [virtual]
    setErrorHandler(ErrorHandler *const handler)SAXParser [virtual]
    setExitOnFirstFatalError(const bool newState)SAXParser
    setExternalNoNamespaceSchemaLocation(const XMLCh *const noNamespaceSchemaLocation)SAXParser
    setExternalNoNamespaceSchemaLocation(const char *const noNamespaceSchemaLocation)SAXParser
    setExternalSchemaLocation(const XMLCh *const schemaLocation)SAXParser
    setExternalSchemaLocation(const char *const schemaLocation)SAXParser
    setGenerateSyntheticAnnotations(const bool newValue)SAXParser
    setHandleMultipleImports(const bool newValue)SAXParser
    setIdentityConstraintChecking(const bool identityConstraintChecking)SAXParser
    setIgnoreAnnotations(const bool newValue)SAXParser
    setIgnoreCachedDTD(const bool newValue)SAXParser
    setInputBufferSize(const XMLSize_t bufferSize)SAXParser
    setLoadExternalDTD(const bool newState)SAXParser
    setLoadSchema(const bool newState)SAXParser
    setLowWaterMark(XMLSize_t lwm)SAXParser
    setPSVIHandler(PSVIHandler *const handler)SAXParser [virtual]
    setSecurityManager(SecurityManager *const securityManager)SAXParser
    setSkipDTDValidation(const bool newValue)SAXParser
    setStandardUriConformant(const bool newState)SAXParser
    setValidateAnnotations(const bool newValue)SAXParser
    setValidationConstraintFatal(const bool newState)SAXParser
    setValidationSchemaFullChecking(const bool schemaFullChecking)SAXParser
    setValidationScheme(const ValSchemes newScheme)SAXParser
    setXMLEntityResolver(XMLEntityResolver *const resolver)SAXParser [virtual]
    startAttList(const DTDElementDecl &elemDecl)SAXParser [virtual]
    startDocument()SAXParser [virtual]
    startElement(const XMLElementDecl &elemDecl, const unsigned int urlId, const XMLCh *const elemPrefix, const RefVectorOf< XMLAttr > &attrList, const XMLSize_t attrCount, const bool isEmpty, const bool isRoot)SAXParser [virtual]
    startEntityReference(const XMLEntityDecl &entDecl)SAXParser [virtual]
    startExtSubset()SAXParser [virtual]
    startInputSource(const InputSource &inputSource)SAXParser [virtual]
    startIntSubset()SAXParser [virtual]
    TextDecl(const XMLCh *const versionStr, const XMLCh *const encodingStr)SAXParser [virtual]
    useCachedGrammarInParse(const bool newState)SAXParser
    useScanner(const XMLCh *const scannerName)SAXParser
    Val_Always enum valueSAXParser
    Val_Auto enum valueSAXParser
    Val_Never enum valueSAXParser
    ValSchemes enum nameSAXParser
    XMemory()XMemory [protected]
    XMLDecl(const XMLCh *const versionStr, const XMLCh *const encodingStr, const XMLCh *const standaloneStr, const XMLCh *const actualEncodingStr)SAXParser [virtual]
    XMLDocumentHandler()XMLDocumentHandler [protected]
    XMLEntityHandler()XMLEntityHandler [protected]
    XMLErrorReporter()XMLErrorReporter [protected]
    ~Parser()Parser [virtual]
    ~SAXParser()SAXParser
    ~XMLDocumentHandler()XMLDocumentHandler [virtual]
    ~XMLEntityHandler()XMLEntityHandler [virtual]
    ~XMLErrorReporter()XMLErrorReporter [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMMemoryManager-members.html0000644000175000017500000001647311363620005024154 0ustar borisboris Xerces-C++: Member List

    DOMMemoryManager Member List

    This is the complete list of members for DOMMemoryManager, including all inherited members.

    allocate(XMLSize_t amount)=0DOMMemoryManager [pure virtual]
    allocate(XMLSize_t amount, DOMMemoryManager::NodeObjectType type)=0DOMMemoryManager [pure virtual]
    ATTR_NS_OBJECT enum valueDOMMemoryManager
    ATTR_OBJECT enum valueDOMMemoryManager
    CDATA_SECTION_OBJECT enum valueDOMMemoryManager
    cloneString(const XMLCh *src)=0DOMMemoryManager [pure virtual]
    COMMENT_OBJECT enum valueDOMMemoryManager
    DOCUMENT_FRAGMENT_OBJECT enum valueDOMMemoryManager
    DOCUMENT_TYPE_OBJECT enum valueDOMMemoryManager
    DOMMemoryManager()DOMMemoryManager [protected]
    ELEMENT_NS_OBJECT enum valueDOMMemoryManager
    ELEMENT_OBJECT enum valueDOMMemoryManager
    ENTITY_OBJECT enum valueDOMMemoryManager
    ENTITY_REFERENCE_OBJECT enum valueDOMMemoryManager
    getMemoryAllocationBlockSize() const =0DOMMemoryManager [pure virtual]
    NodeObjectType enum nameDOMMemoryManager
    NOTATION_OBJECT enum valueDOMMemoryManager
    PROCESSING_INSTRUCTION_OBJECT enum valueDOMMemoryManager
    release(DOMNode *object, DOMMemoryManager::NodeObjectType type)=0DOMMemoryManager [pure virtual]
    setMemoryAllocationBlockSize(XMLSize_t size)=0DOMMemoryManager [pure virtual]
    TEXT_OBJECT enum valueDOMMemoryManager
    ~DOMMemoryManager()DOMMemoryManager [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSNotationDeclaration-members.html0000644000175000017500000001720011363620006025253 0ustar borisboris Xerces-C++: Member List

    XSNotationDeclaration Member List

    This is the complete list of members for XSNotationDeclaration, including all inherited members.

    fAnnotationXSNotationDeclaration [protected]
    fComponentTypeXSObject [protected]
    fIdXSObject [protected]
    fMemoryManagerXSObject [protected]
    fXMLNotationDeclXSNotationDeclaration [protected]
    fXSModelXSObject [protected]
    getAnnotation() const XSNotationDeclaration
    getId() const XSObject [virtual]
    getName() const XSNotationDeclaration [virtual]
    getNamespace()XSNotationDeclaration [virtual]
    getNamespaceItem()XSNotationDeclaration [virtual]
    getPublicId()XSNotationDeclaration
    getSystemId()XSNotationDeclaration
    getType() const XSObject
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    setId(XMLSize_t id)XSObject
    XMemory()XMemory [protected]
    XSNotationDeclaration(XMLNotationDecl *const xmlNotationDecl, XSAnnotation *const annot, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSNotationDeclaration
    XSObject(XSConstants::COMPONENT_TYPE compType, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSObject
    ~XSNotationDeclaration()XSNotationDeclaration
    ~XSObject()XSObject [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_eval_0x78.html0000644000175000017500000001562511363620005022176 0ustar borisboris Xerces-C++: Class Members - Enumerator
     

    - x -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMImplementationSource.html0000644000175000017500000002116311363620005024117 0ustar borisboris Xerces-C++: DOMImplementationSource Class Reference

    DOMImplementationSource Class Reference

    List of all members.

    Public Member Functions

    Destructor
    virtual ~DOMImplementationSource ()
     Destructor.
    Functions introduced in DOM Level 3
    virtual DOMImplementationgetDOMImplementation (const XMLCh *features) const =0
     A method to request the first DOM implementation that supports the specified features.
    virtual DOMImplementationListgetDOMImplementationList (const XMLCh *features) const =0
     A method to request a list of DOM implementations that support the specified features and versions,.

    Protected Member Functions

    Hidden constructors
     DOMImplementationSource ()


    Constructor & Destructor Documentation

    DOMImplementationSource::DOMImplementationSource (  )  [protected]

    virtual DOMImplementationSource::~DOMImplementationSource (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual DOMImplementation* DOMImplementationSource::getDOMImplementation ( const XMLCh features  )  const [pure virtual]

    A method to request the first DOM implementation that supports the specified features.

    Parameters:
    features A string that specifies which features are required. This is a space separated list in which each feature is specified by its name optionally followed by a space and a version number. This is something like: "XML 1.0 Traversal 2.0"
    Returns:
    An implementation that has the desired features, or null if this source has none.
    Since:
    DOM Level 3

    virtual DOMImplementationList* DOMImplementationSource::getDOMImplementationList ( const XMLCh features  )  const [pure virtual]

    A method to request a list of DOM implementations that support the specified features and versions,.

    Parameters:
    features A string that specifies which features are required. This is a space separated list in which each feature is specified by its name optionally followed by a space and a version number. This is something like: "XML 1.0 Traversal 2.0"
    Returns:
    A list of DOM implementations that support the desired features
    Since:
    DOM Level 3


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMImplementationList.html0000644000175000017500000002531311363620005023573 0ustar borisboris Xerces-C++: DOMImplementationList Class Reference

    DOMImplementationList Class Reference

    The DOMImplementationList interface provides the abstraction of an ordered collection of DOM implementations, without defining or constraining how this collection is implemented. More...

    List of all members.

    Public Member Functions

    Destructor
    virtual ~DOMImplementationList ()
     Destructor.
    Functions introduced in DOM Level 3
    virtual DOMImplementationitem (XMLSize_t index) const =0
     Returns the index item in the collection.
    virtual XMLSize_t getLength () const =0
     Returns the number of DOMImplementation in the list.
    Non-standard Extension
    virtual void release ()=0
     Called to indicate that this list is no longer in use and that the implementation may relinquish any resources associated with it and its associated children.

    Protected Member Functions

    Hidden constructors
     DOMImplementationList ()


    Detailed Description

    The DOMImplementationList interface provides the abstraction of an ordered collection of DOM implementations, without defining or constraining how this collection is implemented.

    The items in the DOMImplementationList are accessible via an integral index, starting from 0.


    Constructor & Destructor Documentation

    DOMImplementationList::DOMImplementationList (  )  [protected]

    virtual DOMImplementationList::~DOMImplementationList (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual DOMImplementation* DOMImplementationList::item ( XMLSize_t  index  )  const [pure virtual]

    Returns the index item in the collection.

    If index is greater than or equal to the number of DOMImplementation in the list, this returns null.

    Parameters:
    index Index into the collection.
    Returns:
    The DOMImplementation at the indexth position in the DOMImplementationList, or null if that is not a valid index.
    Since:
    DOM Level 3

    virtual XMLSize_t DOMImplementationList::getLength (  )  const [pure virtual]

    Returns the number of DOMImplementation in the list.

    The range of valid child node indices is 0 to length-1 inclusive.

    Since:
    DOM Level 3

    virtual void DOMImplementationList::release (  )  [pure virtual]

    Called to indicate that this list is no longer in use and that the implementation may relinquish any resources associated with it and its associated children.

    Access to a released object will lead to unexpected result.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_0x71.html0000644000175000017500000000762511363620005021161 0ustar borisboris Xerces-C++: Class Members
    Here is a list of all class members with links to the classes they belong to:

    - q -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classTranscodeFromStr-members.html0000644000175000017500000000610511363620006024300 0ustar borisboris Xerces-C++: Member List

    TranscodeFromStr Member List

    This is the complete list of members for TranscodeFromStr, including all inherited members.

    adopt()TranscodeFromStr
    length() const TranscodeFromStr
    str() const TranscodeFromStr
    TranscodeFromStr(const XMLByte *data, XMLSize_t length, const char *encoding, MemoryManager *manager=XMLPlatformUtils::fgMemoryManager)TranscodeFromStr
    TranscodeFromStr(const XMLByte *data, XMLSize_t length, XMLTranscoder *trans, MemoryManager *manager=XMLPlatformUtils::fgMemoryManager)TranscodeFromStr
    ~TranscodeFromStr()TranscodeFromStr


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classLexicalHandler-members.html0000644000175000017500000000747011363620006023726 0ustar borisboris Xerces-C++: Member List

    LexicalHandler Member List

    This is the complete list of members for LexicalHandler, including all inherited members.

    comment(const XMLCh *const chars, const XMLSize_t length)=0LexicalHandler [pure virtual]
    endCDATA()=0LexicalHandler [pure virtual]
    endDTD()=0LexicalHandler [pure virtual]
    endEntity(const XMLCh *const name)=0LexicalHandler [pure virtual]
    LexicalHandler()LexicalHandler
    startCDATA()=0LexicalHandler [pure virtual]
    startDTD(const XMLCh *const name, const XMLCh *const publicId, const XMLCh *const systemId)=0LexicalHandler [pure virtual]
    startEntity(const XMLCh *const name)=0LexicalHandler [pure virtual]
    ~LexicalHandler()LexicalHandler [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMLSSerializerFilter.html0000644000175000017500000002407011363620005023467 0ustar borisboris Xerces-C++: DOMLSSerializerFilter Class Reference

    DOMLSSerializerFilter Class Reference

    DOMLSSerializerFilter.hpp: interface for the DOMLSSerializerFilter class. More...

    Inheritance diagram for DOMLSSerializerFilter:

    DOMNodeFilter

    List of all members.

    Public Member Functions

    Destructor
    virtual ~DOMLSSerializerFilter ()
     Destructor.
    Functions introduced in DOM Level 3
    virtual FilterAction acceptNode (const DOMNode *node) const =0
     Interface from DOMNodeFilter, to be implemented by implementation (derived class).
    virtual ShowType getWhatToShow () const =0
     Tells the DOMLSSerializer what types of nodes to show to the filter.

    Protected Member Functions

    Hidden constructors
     DOMLSSerializerFilter ()


    Detailed Description

    DOMLSSerializerFilter.hpp: interface for the DOMLSSerializerFilter class.

    DOMLSSerializerFilter provide applications the ability to examine nodes as they are being serialized.

    DOMLSSerializerFilter lets the application decide what nodes should be serialized or not.

    The DOMDocument, DOMDocumentType, DOMNotation, and DOMEntity nodes are not passed to the filter.

    Since:
    DOM Level 3

    Constructor & Destructor Documentation

    DOMLSSerializerFilter::DOMLSSerializerFilter (  )  [protected]

    virtual DOMLSSerializerFilter::~DOMLSSerializerFilter (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual FilterAction DOMLSSerializerFilter::acceptNode ( const DOMNode node  )  const [pure virtual]

    Interface from DOMNodeFilter, to be implemented by implementation (derived class).

    Implements DOMNodeFilter.

    virtual ShowType DOMLSSerializerFilter::getWhatToShow (  )  const [pure virtual]

    Tells the DOMLSSerializer what types of nodes to show to the filter.

    See DOMNodeFilter for definition of the constants. The constant SHOW_ATTRIBUTE is meaningless here, attribute nodes will never be passed to a DOMLSSerializerFilter.

    Returns:
    The constants of what types of nodes to show.
    Since:
    DOM Level 3


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMXPathResult_8hpp-source.html0000644000175000017500000003616311363620004023410 0ustar borisboris Xerces-C++: DOMXPathResult.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSNamespaceItem-members.html0000644000175000017500000002114311363620006024026 0ustar borisboris Xerces-C++: Member List

    XSNamespaceItem Member List

    This is the complete list of members for XSNamespaceItem, including all inherited members.

    fComponentMapXSNamespaceItem [protected]
    fGrammarXSNamespaceItem [protected]
    fHashMapXSNamespaceItem [protected]
    fMemoryManagerXSNamespaceItem [protected]
    fSchemaNamespaceXSNamespaceItem [protected]
    fXSAnnotationListXSNamespaceItem [protected]
    fXSModelXSNamespaceItem [protected]
    getAnnotations()XSNamespaceItem
    getAnnotations() const XSNamespaceItem
    getAttributeDeclaration(const XMLCh *name)XSNamespaceItem
    getAttributeGroup(const XMLCh *name)XSNamespaceItem
    getComponents(XSConstants::COMPONENT_TYPE objectType)XSNamespaceItem
    getDocumentLocations()XSNamespaceItem
    getElementDeclaration(const XMLCh *name)XSNamespaceItem
    getModelGroupDefinition(const XMLCh *name)XSNamespaceItem
    getNotationDeclaration(const XMLCh *name)XSNamespaceItem
    getSchemaNamespace() const XSNamespaceItem
    getTypeDefinition(const XMLCh *name)XSNamespaceItem
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    XMemory()XMemory [protected]
    XSModel classXSNamespaceItem [friend]
    XSNamespaceItem(XSModel *const xsModel, SchemaGrammar *const grammar, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSNamespaceItem
    XSNamespaceItem(XSModel *const xsModel, const XMLCh *const schemaNamespace, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSNamespaceItem
    XSObjectFactory classXSNamespaceItem [friend]
    ~XSNamespaceItem()XSNamespaceItem


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/structHash2KeysSetBucketElem.html0000644000175000017500000001030211363620006024040 0ustar borisboris Xerces-C++: Hash2KeysSetBucketElem Struct Reference

    Hash2KeysSetBucketElem Struct Reference

    List of all members.

    Public Attributes

    Hash2KeysSetBucketElemfNext
    const void * fKey1
    int fKey2


    Member Data Documentation


    The documentation for this struct was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLUni_8hpp.html0000644000175000017500000000424511363620005020440 0ustar borisboris Xerces-C++: XMLUni.hpp File Reference

    XMLUni.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLUni

    Defines

    #define XERCESC_INCLUDE_GUARD_XMLUNI_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XMLUNI_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/globals_0x74.html0000644000175000017500000000741711363620007020600 0ustar borisboris Xerces-C++: Class Members
    Here is a list of all file members with links to the files they belong to:

    - t -


    Generated on Wed Apr 21 17:55:51 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMXPathException.png0000644000175000017500000000071611363620006022476 0ustar borisboris‰PNG  IHDRƒPÈÛÔPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfdIDATX…í•KŽÃ0†aÓ5øä£öB³Êý0`Hc'Í£ãÑ(•L*Œ]òå ­ö÷¡Ñ:b Áœ†AÔ‰nD·\gËŽù^s¢©¼Î—czO²´ôDRT‹*K¬>Et¡B\u²ERžÑY„ÕBõd1AJ@ )¹Š@0ÿáK><‰˜:Òó~U‹=D1âsQwD¢#;ˆ]{1UŸ‰Ø²Ž(ð8²ÛaÆ Æï nãxÄE:ÒÑѱgÜjÔ*³#dk d¡ž€U,ðÿ²œakvJA¿pF¼xò©5˜ˆ3ÂöªE #Z#ˆì‡!‹L0»j´Å(Çm ,ö×TÛLbœ„S´F ®ÂÊ8¥Zµs>ó9E¯ fB¨†-Dt¤¼jDÖ¶¬E(æ‚b.üE´æQ‹ª#™ïÙrJ>±´Ž(í"ïB~îæÎIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classXSAttributeGroupDefinition-members.html0000644000175000017500000002067611363620006026316 0ustar borisboris Xerces-C++: Member List

    XSAttributeGroupDefinition Member List

    This is the complete list of members for XSAttributeGroupDefinition, including all inherited members.

    fAnnotationXSAttributeGroupDefinition [protected]
    fComponentTypeXSObject [protected]
    fIdXSObject [protected]
    fMemoryManagerXSObject [protected]
    fXercesAttGroupInfoXSAttributeGroupDefinition [protected]
    fXSAttributeUseListXSAttributeGroupDefinition [protected]
    fXSModelXSObject [protected]
    fXSWildcardXSAttributeGroupDefinition [protected]
    getAnnotation() const XSAttributeGroupDefinition
    getAttributeUses()XSAttributeGroupDefinition
    getAttributeWildcard() const XSAttributeGroupDefinition
    getId() const XSObject [virtual]
    getName() const XSAttributeGroupDefinition [virtual]
    getNamespace()XSAttributeGroupDefinition [virtual]
    getNamespaceItem()XSAttributeGroupDefinition [virtual]
    getType() const XSObject
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    setId(XMLSize_t id)XSObject
    XMemory()XMemory [protected]
    XSAttributeGroupDefinition(XercesAttGroupInfo *const xercesAttGroupInfo, XSAttributeUseList *const xsAttList, XSWildcard *const xsWildcard, XSAnnotation *const xsAnnot, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSAttributeGroupDefinition
    XSObject(XSConstants::COMPONENT_TYPE compType, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSObject
    ~XSAttributeGroupDefinition()XSAttributeGroupDefinition
    ~XSObject()XSObject [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLFloat.png0000644000175000017500000000134111363620006020654 0ustar borisboris‰PNG  IHDRšÀÄgµPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfwIDAThíšKrä †íMÖ–n æ3šUßÿ#‰—é18&ª´“\vÓ¸¿ ë/–?–eùìÊ/§YÓâ+™ÐH*#Á˜F|ÛÊ×€ˆbõeÿP ÊABÐ+³'iì°JÓ£ÔIÛøD ¡õÃræ7¥¡4 >@Sb3Ò9ZœoZ!Ú¦1 }·M= ¦´Á³1Aë›öUÿ‡|;ší ø¾òöÎû^A{ü½-ííñ¸-íÖ1ušÓœæ4§9Íi£bû6xç÷ÞN«ZÆü~ßs™VÕ ¡¡)-gãzæüzéxÏo;-¤ÒD”žÚØ£í´¢7Ô+uè‘mU½h¸F{ÒBžh¡—ÜiTfˆx+Ò`b¤U QÕGÝžlK1½B›,NsÚÍv´]_As=dg sšÓœæ4§9ÍiŸH³}¼ó{ï¢Q>Ò¦ƒªì¤Í¿K#ÝA1{-_FÛâæŠ@± ñ¶kZØåäš(*lޤöš,Ä bzùsúRïÈ4ÑJdI(P– K˜Ü¡ hô‚|G‰>Ób/Vo64l´ L¢IcQúcYùÑ-С¥¤--Ðú­Ð²Þší%G¶…ã‘bó»PÄò-¥˜F£Æ~«vP´cL5Mà:ß4|Ç1EøO–Ó¾Ív´]_As=dg sšÓœæ4§9ÍiŸH˲l†#XfMãŽmÍ·¬ÚÈ=—i«TîÕ°G¬-mnnr¾L[¶mYW9 m“± èÓ˜Pi<Ï•v2œ±m|jm[FÏ™ßþ£ÍŽt-Õ‚ç›Ô4×rL·©˜^/NsÚÍtü{ç ™,ÏIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/tab_l.gif0000644000175000017500000000130211363620004017235 0ustar borisborisGIF89a ,Õö÷ùñô÷öøúüýþúûüùúûøùúêïóïóöÆÕßÒÞæØâéÞçíÝæìåìñèîòô÷ùóöø³ÈÕÁÒÝËÙâÏÜäÖá薴ŹɯÂÍ»ÎÙÃÔÞÂÓÝÈ×àÌÚâÕáèÙäê×âèåìðëðó„°ÇÑÞåÜæëãëïëñôîóõ÷úûûüüÿÿÿþþþ, ,ÿ@–P±É`H$!%CqVe2X­ŠÌJ(“Ä +€˜3 2$ÀÆ ¼kvŠä-Ëçõu*…"}ã|}|~q(" $f„ 'Žl(Œ&&$r‘™ › & ! )¢¤›{¨£¥r­ª°©¯„±¯¬´¦·»º³®«§¾¶ÃÂÀ¿²¹ÇÄËÆ²ÌÉεҽͼ„ÔÈÓ×иÙÝÕÏÙÊâÜßãçæê¾äÛÅëÇíáîÖìéïøñ÷õüÑðåùü¤Pß?‚ƒœÇÛBm åAœÎáÀ†%V܈î!Çk÷Ø/áÄ;^¤¨²$Æ–#Mf)f͇(WÎL‰“æKçÒ„° ’I)L:eD ¡Cµ´x*4 U¨h  %A«£^ÁNKb¬Ùe§X±‚´k»x!ÁÖí—2tÝÖ !¯š5tÛæé—À]$¬´%ƒXíâ.i[¬]Y­•ÊfžEëõkg`µ††:zëçÒž;£}ºµj×aa‹–Mš¶é׸cçž½»vïÛºƒóî›8ðáÈ‹'?®¼9óç©G_>Ýyuè¬_ßž]zwêß­‡Ç¾º¼mîæµG~½ûôÞთ/ž>ùööÙ«Ïÿ¿ÿýÿÅà|ÖWà}v;xerces-c-3.1.1/doc/html/apiDocs-3/classDefaultHandler.png0000644000175000017500000000204611363620005022112 0ustar borisboris‰PNG  IHDRŠPl`IßPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf¼IDATxœí™Yrë EÅO¾Õ½x;H6”/ï fH²\ý4P}프ÅÕ…c¹2ýÖä$¶Êömê%‰­²Ý¾°Ý¾°Ý¾°Ý¾°‘ÜAÔtôÅ ½•€Îº¨WlÚVuRæB(¶i²Ó·k5.Û²c?¬î[Iwúö]ĪºL٦ٹã›1×:H±nÈQŠÕÝß¡XÔz›"‚Dû¦:v„ÙÞÚ7PŒ/ê&É7Èçù$gp>D:7ˆ‹†Ñîji‚C¤-Ð9¯¡hï«ýÅ­¸š"Pü=!Rì„5ý=wû–(‚«Š„L’\B_ÔøEW—n„þòkö,b-[ôÁ¦(@Îk(ÚŽ„‹[qÅØmRúaŠ˜Hlö-­‹XPðѦ¦ØŽúš¢_^ËÖbš-ESv hÍÓÕ…åè uÑ/ôÚˆk(jŒÓp#lâ~ßòŒŽS)šÊ¡¸GÑúÍ.ÅôõÑ$ƒêBCÑ;Ÿšb芦ob#¬C PÜî[CQSûÂf)Æ^¼3£‹™³;M¦¨®.¼Cq%n1MèÛNXw,šLq½oëËU26»Cq±G§–­ÍhªÚÌèªcq©:@q·œÑ´»ì†uöèf]ì÷­ZmƱUìÑ®:`—bXaLz^Ô ý:÷±†¢Ž[¥ë`ö‘H‹vÜ6—ãºè/nÅe=Ж{´N{tÖy^\ìÑk}‹8²Ú'¬Jù5q®­±è^=ޤ‘meg(>¥_SüoI#ÛnßÀGØnßÀGØnßÀGØnßÀGØÎûoãè¶®~×/mIl% lûz}$¶‹’F¶½^¿Ÿ$‰í¢¤¡m‰í²¤‘mç%l;/idÛyI#ÛÎKÙv^Òȶó’F¶—4²í¼¤‘m/ÑR¿…¾®nÀŠŠŠŠŠŠŠŠŠŠŠŠŠŠ¤à¨æ«›|C©Ã¡ØJ(rH(rH(rH(rÈQ´û´/@úpV๨QIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classValidationContext.png0000644000175000017500000000062311363620006022667 0ustar borisboris‰PNG  IHDRnP ]PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf)IDATX…í”I’à EÑ&k‰àÜ }¡^ùþGÈ—°ÁPžBUœî ƒŒí~ÚÄ=†¹çQúð"´–f. ØG?xïÕ“[t»>x±§r,sVS9´‡& "W%j5>ã¼NqÆ~qñýY‘hÏò9Tá¿/\}Îr•¹—kýîÈmoñ Üø{)wÇK¹ËóÙ¹Îu®sÛiÇM®Ð7pd5ŠãH’ʹ¯¸¢™7ч«b!Õ„¡aV¦cÐÛ<é_r(¤U’f:ELóSiÏ¥ÝYãç¦9âÌYüóŠlrp±æ¸´²aÏ~j³_Œ›–~ª…‚#¡”O$/æÓò<åZ´|²ü³ûÙ¹®ñ?ø¿™Èl…¼EsIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classSAX2XMLReader-members.html0000644000175000017500000003416511363620006023271 0ustar borisboris Xerces-C++: Member List

    SAX2XMLReader Member List

    This is the complete list of members for SAX2XMLReader, including all inherited members.

    getContentHandler() const =0SAX2XMLReader [pure virtual]
    getDeclarationHandler() const =0SAX2XMLReader [pure virtual]
    getDTDHandler() const =0SAX2XMLReader [pure virtual]
    getEntityResolver() const =0SAX2XMLReader [pure virtual]
    getErrorCount() const =0SAX2XMLReader [pure virtual]
    getErrorHandler() const =0SAX2XMLReader [pure virtual]
    getExitOnFirstFatalError() const =0SAX2XMLReader [pure virtual]
    getFeature(const XMLCh *const name) const =0SAX2XMLReader [pure virtual]
    getGrammar(const XMLCh *const nameSpaceKey)=0SAX2XMLReader [pure virtual]
    getLexicalHandler() const =0SAX2XMLReader [pure virtual]
    getProperty(const XMLCh *const name) const =0SAX2XMLReader [pure virtual]
    getRootGrammar()=0SAX2XMLReader [pure virtual]
    getSrcOffset() const =0SAX2XMLReader [pure virtual]
    getURIText(unsigned int uriId) const =0SAX2XMLReader [pure virtual]
    getValidationConstraintFatal() const =0SAX2XMLReader [pure virtual]
    getValidator() const =0SAX2XMLReader [pure virtual]
    installAdvDocHandler(XMLDocumentHandler *const toInstall)=0SAX2XMLReader [pure virtual]
    loadGrammar(const InputSource &source, const Grammar::GrammarType grammarType, const bool toCache=false)=0SAX2XMLReader [pure virtual]
    loadGrammar(const XMLCh *const systemId, const Grammar::GrammarType grammarType, const bool toCache=false)=0SAX2XMLReader [pure virtual]
    loadGrammar(const char *const systemId, const Grammar::GrammarType grammarType, const bool toCache=false)=0SAX2XMLReader [pure virtual]
    parse(const InputSource &source)=0SAX2XMLReader [pure virtual]
    parse(const XMLCh *const systemId)=0SAX2XMLReader [pure virtual]
    parse(const char *const systemId)=0SAX2XMLReader [pure virtual]
    parseFirst(const XMLCh *const systemId, XMLPScanToken &toFill)=0SAX2XMLReader [pure virtual]
    parseFirst(const char *const systemId, XMLPScanToken &toFill)=0SAX2XMLReader [pure virtual]
    parseFirst(const InputSource &source, XMLPScanToken &toFill)=0SAX2XMLReader [pure virtual]
    parseNext(XMLPScanToken &token)=0SAX2XMLReader [pure virtual]
    parseReset(XMLPScanToken &token)=0SAX2XMLReader [pure virtual]
    removeAdvDocHandler(XMLDocumentHandler *const toRemove)=0SAX2XMLReader [pure virtual]
    resetCachedGrammarPool()=0SAX2XMLReader [pure virtual]
    SAX2XMLReader()SAX2XMLReader
    setContentHandler(ContentHandler *const handler)=0SAX2XMLReader [pure virtual]
    setDeclarationHandler(DeclHandler *const handler)=0SAX2XMLReader [pure virtual]
    setDTDHandler(DTDHandler *const handler)=0SAX2XMLReader [pure virtual]
    setEntityResolver(EntityResolver *const resolver)=0SAX2XMLReader [pure virtual]
    setErrorHandler(ErrorHandler *const handler)=0SAX2XMLReader [pure virtual]
    setExitOnFirstFatalError(const bool newState)=0SAX2XMLReader [pure virtual]
    setFeature(const XMLCh *const name, const bool value)=0SAX2XMLReader [pure virtual]
    setInputBufferSize(const XMLSize_t bufferSize)SAX2XMLReader [virtual]
    setLexicalHandler(LexicalHandler *const handler)=0SAX2XMLReader [pure virtual]
    setProperty(const XMLCh *const name, void *value)=0SAX2XMLReader [pure virtual]
    setValidationConstraintFatal(const bool newState)=0SAX2XMLReader [pure virtual]
    setValidator(XMLValidator *valueToAdopt)=0SAX2XMLReader [pure virtual]
    Val_Always enum valueSAX2XMLReader
    Val_Auto enum valueSAX2XMLReader
    Val_Never enum valueSAX2XMLReader
    ValSchemes enum nameSAX2XMLReader
    ~SAX2XMLReader()SAX2XMLReader [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMLSOutput.html0000644000175000017500000004102611363620005021510 0ustar borisboris Xerces-C++: DOMLSOutput Class Reference

    DOMLSOutput Class Reference

    This interface represents an output destination for data. More...

    List of all members.

    Public Member Functions

    Destructor
    virtual ~DOMLSOutput ()
     Destructor.
    Functions introduced in DOM Level 3
    virtual XMLFormatTargetgetByteStream () const =0
     Returns the byte stream for this input source.
    virtual const XMLChgetEncoding () const =0
     An input source can be set to force the parser to assume a particular encoding for the data that input source reprsents, via the setEncoding() method.
    virtual const XMLChgetSystemId () const =0
     Get the system identifier for this input source.
    virtual void setByteStream (XMLFormatTarget *stream)=0
     Sets the byte stream for this input source.
    virtual void setEncoding (const XMLCh *const encodingStr)=0
     Set the encoding which will be required for use with the XML text read via a stream opened by this input source.
    virtual void setSystemId (const XMLCh *const systemId)=0
     Set the system identifier for this input source.
    Non-standard Extension
    virtual void release ()=0
     Called to indicate that this DOMLSOutput is no longer in use and that the implementation may relinquish any resources associated with it.

    Protected Member Functions

    Hidden constructors
     DOMLSOutput ()


    Detailed Description

    This interface represents an output destination for data.

    See also:
    XMLFormatTarget
    Since:
    DOM Level 3

    Constructor & Destructor Documentation

    DOMLSOutput::DOMLSOutput (  )  [protected]

    virtual DOMLSOutput::~DOMLSOutput (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual XMLFormatTarget* DOMLSOutput::getByteStream (  )  const [pure virtual]

    Returns the byte stream for this input source.

    See also:
    InputSource

    virtual const XMLCh* DOMLSOutput::getEncoding (  )  const [pure virtual]

    An input source can be set to force the parser to assume a particular encoding for the data that input source reprsents, via the setEncoding() method.

    This method returns name of the encoding that is to be forced. If the encoding has never been forced, it returns a null pointer.

    Returns:
    The forced encoding, or null if none was supplied.
    See also:
    setEncoding
    Since:
    DOM Level 3

    virtual const XMLCh* DOMLSOutput::getSystemId (  )  const [pure virtual]

    Get the system identifier for this input source.

    If the system ID is a URL, it will be fully resolved.

    Returns:
    The system identifier.
    See also:
    setSystemId
    Since:
    DOM Level 3

    virtual void DOMLSOutput::setByteStream ( XMLFormatTarget stream  )  [pure virtual]

    Sets the byte stream for this input source.

    See also:
    BinInputStream

    virtual void DOMLSOutput::setEncoding ( const XMLCh *const   encodingStr  )  [pure virtual]

    Set the encoding which will be required for use with the XML text read via a stream opened by this input source.

    This is usually not set, allowing the encoding to be sensed in the usual XML way. However, in some cases, the encoding in the file is known to be incorrect because of intermediate transcoding, for instance encapsulation within a MIME document.

    Parameters:
    encodingStr The name of the encoding to force.
    Since:
    DOM Level 3

    virtual void DOMLSOutput::setSystemId ( const XMLCh *const   systemId  )  [pure virtual]

    Set the system identifier for this input source.

    The system id is always required. The public id may be used to map to another system id, but the system id must always be present as a fall back.

    If the system ID is a URL, it must be fully resolved.

    Parameters:
    systemId The system identifier as a string.
    See also:
    getSystemId
    Since:
    DOM Level 3

    virtual void DOMLSOutput::release (  )  [pure virtual]

    Called to indicate that this DOMLSOutput is no longer in use and that the implementation may relinquish any resources associated with it.

    Access to a released object will lead to unexpected result.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMImplementationSource_8hpp-source.html0000644000175000017500000002146011363620004025325 0ustar borisboris Xerces-C++: DOMImplementationSource.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/SAXException_8hpp-source.html0000644000175000017500000004431611363620004023136 0ustar borisboris Xerces-C++: SAXException.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_0x70.html0000644000175000017500000004176411363620005021162 0ustar borisboris Xerces-C++: Class Members
    Here is a list of all class members with links to the classes they belong to:

    - p -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMXPathNamespace_8hpp-source.html0000644000175000017500000002214011363620004024014 0ustar borisboris Xerces-C++: DOMXPathNamespace.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMText-members.html0000644000175000017500000005116211363620005022327 0ustar borisboris Xerces-C++: Member List

    DOMText Member List

    This is the complete list of members for DOMText, including all inherited members.

    appendChild(DOMNode *newChild)=0DOMNode [pure virtual]
    appendData(const XMLCh *arg)=0DOMCharacterData [pure virtual]
    ATTRIBUTE_NODE enum valueDOMNode
    CDATA_SECTION_NODE enum valueDOMNode
    cloneNode(bool deep) const =0DOMNode [pure virtual]
    COMMENT_NODE enum valueDOMNode
    compareDocumentPosition(const DOMNode *other) const =0DOMNode [pure virtual]
    deleteData(XMLSize_t offset, XMLSize_t count)=0DOMCharacterData [pure virtual]
    DOCUMENT_FRAGMENT_NODE enum valueDOMNode
    DOCUMENT_NODE enum valueDOMNode
    DOCUMENT_POSITION_CONTAINED_BY enum valueDOMNode
    DOCUMENT_POSITION_CONTAINS enum valueDOMNode
    DOCUMENT_POSITION_DISCONNECTED enum valueDOMNode
    DOCUMENT_POSITION_FOLLOWING enum valueDOMNode
    DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC enum valueDOMNode
    DOCUMENT_POSITION_PRECEDING enum valueDOMNode
    DOCUMENT_TYPE_NODE enum valueDOMNode
    DocumentPosition enum nameDOMNode
    DOMCharacterData()DOMCharacterData [protected]
    DOMCharacterData(const DOMCharacterData &other)DOMCharacterData [protected]
    DOMNode()DOMNode [protected]
    DOMNode(const DOMNode &)DOMNode [protected]
    DOMText()DOMText [protected]
    DOMText(const DOMText &other)DOMText [protected]
    ELEMENT_NODE enum valueDOMNode
    ENTITY_NODE enum valueDOMNode
    ENTITY_REFERENCE_NODE enum valueDOMNode
    getAttributes() const =0DOMNode [pure virtual]
    getBaseURI() const =0DOMNode [pure virtual]
    getChildNodes() const =0DOMNode [pure virtual]
    getData() const =0DOMCharacterData [pure virtual]
    getFeature(const XMLCh *feature, const XMLCh *version) const =0DOMNode [pure virtual]
    getFirstChild() const =0DOMNode [pure virtual]
    getIsElementContentWhitespace() const =0DOMText [pure virtual]
    getLastChild() const =0DOMNode [pure virtual]
    getLength() const =0DOMCharacterData [pure virtual]
    getLocalName() const =0DOMNode [pure virtual]
    getNamespaceURI() const =0DOMNode [pure virtual]
    getNextSibling() const =0DOMNode [pure virtual]
    getNodeName() const =0DOMNode [pure virtual]
    getNodeType() const =0DOMNode [pure virtual]
    getNodeValue() const =0DOMNode [pure virtual]
    getOwnerDocument() const =0DOMNode [pure virtual]
    getParentNode() const =0DOMNode [pure virtual]
    getPrefix() const =0DOMNode [pure virtual]
    getPreviousSibling() const =0DOMNode [pure virtual]
    getTextContent() const =0DOMNode [pure virtual]
    getUserData(const XMLCh *key) const =0DOMNode [pure virtual]
    getWholeText() const =0DOMText [pure virtual]
    hasAttributes() const =0DOMNode [pure virtual]
    hasChildNodes() const =0DOMNode [pure virtual]
    insertBefore(DOMNode *newChild, DOMNode *refChild)=0DOMNode [pure virtual]
    insertData(XMLSize_t offset, const XMLCh *arg)=0DOMCharacterData [pure virtual]
    isDefaultNamespace(const XMLCh *namespaceURI) const =0DOMNode [pure virtual]
    isEqualNode(const DOMNode *arg) const =0DOMNode [pure virtual]
    isIgnorableWhitespace() const =0DOMText [pure virtual]
    isSameNode(const DOMNode *other) const =0DOMNode [pure virtual]
    isSupported(const XMLCh *feature, const XMLCh *version) const =0DOMNode [pure virtual]
    lookupNamespaceURI(const XMLCh *prefix) const =0DOMNode [pure virtual]
    lookupPrefix(const XMLCh *namespaceURI) const =0DOMNode [pure virtual]
    NodeType enum nameDOMNode
    normalize()=0DOMNode [pure virtual]
    NOTATION_NODE enum valueDOMNode
    PROCESSING_INSTRUCTION_NODE enum valueDOMNode
    release()=0DOMNode [pure virtual]
    removeChild(DOMNode *oldChild)=0DOMNode [pure virtual]
    replaceChild(DOMNode *newChild, DOMNode *oldChild)=0DOMNode [pure virtual]
    replaceData(XMLSize_t offset, XMLSize_t count, const XMLCh *arg)=0DOMCharacterData [pure virtual]
    replaceWholeText(const XMLCh *content)=0DOMText [pure virtual]
    setData(const XMLCh *data)=0DOMCharacterData [pure virtual]
    setNodeValue(const XMLCh *nodeValue)=0DOMNode [pure virtual]
    setPrefix(const XMLCh *prefix)=0DOMNode [pure virtual]
    setTextContent(const XMLCh *textContent)=0DOMNode [pure virtual]
    setUserData(const XMLCh *key, void *data, DOMUserDataHandler *handler)=0DOMNode [pure virtual]
    splitText(XMLSize_t offset)=0DOMText [pure virtual]
    substringData(XMLSize_t offset, XMLSize_t count) const =0DOMCharacterData [pure virtual]
    TEXT_NODE enum valueDOMNode
    ~DOMCharacterData()DOMCharacterData [virtual]
    ~DOMNode()DOMNode [virtual]
    ~DOMText()DOMText [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSAnnotation.png0000644000175000017500000000075411363620006021622 0ustar borisboris‰PNG  IHDRYˆ~GZPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf‚IDATX…í—Krà †Ñ¦kÄ Ä :í…ºòýP=Œ168&‰g’`ÀÁ’ûûî(Ÿî+ž/€܈G:E“T^‚4q#öÅc !ˆ×}Ü<ÏrêÈk4œimKmØæŽ"bAçmoãV:È…¦ZW‘ÔiË·V4Ûš“˜Ã>u–]ôêlOÐÙôk>±Ð}oˆzùiÌ?þ˜®£§©'”>úÊœ zЃôôЃ´*dIBT8$9p }Lîòˆ6³D*ïTbK³‰Ð4Ú”55›yÄ™Ž ]DmÏÊw¦›tÚåÚv¼I[NnÅ]æ{•ªæd[ÂnæitåÁK>±ÐC^B¿Á·aЃôÿ¢±£xç;<¾5 Òíª¸)lhí½ Þïé]$>EÄ4_#ŸƒÔNÜêl¢AbÑ@¸²kÿ°t ä³;ðF;»­C¦¶m§XÒˆ:íÒ»„í"¹—^ò½¢9Nrâ眬lwå ¢»Þ¿oµQ |¨6IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classXSComplexTypeDefinition.html0000644000175000017500000012416411363620006024154 0ustar borisboris Xerces-C++: XSComplexTypeDefinition Class Reference

    XSComplexTypeDefinition Class Reference

    Inheritance diagram for XSComplexTypeDefinition:

    XSTypeDefinition XSObject XMemory

    List of all members.

    Public Types

    enum  CONTENT_TYPE { CONTENTTYPE_EMPTY = 0, CONTENTTYPE_SIMPLE = 1, CONTENTTYPE_ELEMENT = 2, CONTENTTYPE_MIXED = 3 }

    Public Member Functions

    Constructors
     XSComplexTypeDefinition (ComplexTypeInfo *const complexTypeInfo, XSWildcard *const xsWildcard, XSSimpleTypeDefinition *const xsSimpleType, XSAttributeUseList *const xsAttList, XSTypeDefinition *const xsBaseType, XSParticle *const xsParticle, XSAnnotation *const headAnnot, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     The default constructor.
    Destructor
     ~XSComplexTypeDefinition ()
    XSComplexTypeDefinition methods
    XSConstants::DERIVATION_TYPE getDerivationMethod () const
     [derivation method]: either DERIVATION_EXTENSION, DERIVATION_RESTRICTION, or DERIVATION_NONE (see XSObject).
    bool getAbstract () const
     [abstract]: a boolean.
    XSAttributeUseListgetAttributeUses ()
     A set of attribute uses.
    XSWildcardgetAttributeWildcard () const
     Optional.An attribute wildcard.
    CONTENT_TYPE getContentType () const
     [content type]: one of empty (CONTENTTYPE_EMPTY), a simple type definition (CONTENTTYPE_SIMPLE), mixed ( CONTENTTYPE_MIXED), or element-only ( CONTENTTYPE_ELEMENT).
    XSSimpleTypeDefinitiongetSimpleType () const
     A simple type definition corresponding to simple content model, otherwise null.
    XSParticlegetParticle () const
     A particle for mixed or element-only content model, otherwise null.
    bool isProhibitedSubstitution (XSConstants::DERIVATION_TYPE toTest)
     [prohibited substitutions]: a subset of {extension, restriction}
    short getProhibitedSubstitutions () const
     [prohibited substitutions]: A subset of {extension, restriction} or DERIVATION_NONE represented as a bit flag (see XSObject).
    XSAnnotationListgetAnnotations ()
     A set of [annotations].
    const XMLChgetName () const
     The name of type NCName of this declaration as defined in XML Namespaces.
    const XMLChgetNamespace ()
     The [target namespace] of this object, or null if it is unspecified.
    XSNamespaceItemgetNamespaceItem ()
     A namespace schema information item corresponding to the target namespace of the component, if it's globally declared; or null otherwise.
    bool getAnonymous () const
     A boolean that specifies if the type definition is anonymous.
    XSTypeDefinitiongetBaseType ()
     {base type definition}: either a simple type definition or a complex type definition.
    bool derivedFromType (const XSTypeDefinition *const ancestorType)
     Convenience method: check if this type is derived from the given ancestorType.

    Protected Attributes

    ComplexTypeInfo * fComplexTypeInfo
    XSWildcardfXSWildcard
    XSAttributeUseListfXSAttributeUseList
    XSSimpleTypeDefinitionfXSSimpleTypeDefinition
    XSAnnotationListfXSAnnotationList
    XSParticlefParticle
    short fProhibitedSubstitution

    Friends

    class XSObjectFactory


    Member Enumeration Documentation

    Enumerator:
    CONTENTTYPE_EMPTY  Represents an empty content type.

    A content type with the distinguished value empty validates elements with no character or element information item children.

    CONTENTTYPE_SIMPLE  Represents a simple content type.

    A content type which is a simple validates elements with character-only children.

    CONTENTTYPE_ELEMENT  Represents an element-only content type.

    An element-only content type validates elements with children that conform to the supplied content model.

    CONTENTTYPE_MIXED  Represents a mixed content type.


    Constructor & Destructor Documentation

    XSComplexTypeDefinition::XSComplexTypeDefinition ( ComplexTypeInfo *const   complexTypeInfo,
    XSWildcard *const   xsWildcard,
    XSSimpleTypeDefinition *const   xsSimpleType,
    XSAttributeUseList *const   xsAttList,
    XSTypeDefinition *const   xsBaseType,
    XSParticle *const   xsParticle,
    XSAnnotation *const   headAnnot,
    XSModel *const   xsModel,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    The default constructor.

    Parameters:
    complexTypeInfo 
    xsWildcard 
    xsSimpleType 
    xsAttList 
    xsBaseType 
    xsParticle 
    headAnnot 
    xsModel 
    manager The configurable memory manager

    XSComplexTypeDefinition::~XSComplexTypeDefinition (  ) 


    Member Function Documentation

    XSConstants::DERIVATION_TYPE XSComplexTypeDefinition::getDerivationMethod (  )  const

    [derivation method]: either DERIVATION_EXTENSION, DERIVATION_RESTRICTION, or DERIVATION_NONE (see XSObject).

    bool XSComplexTypeDefinition::getAbstract (  )  const

    [abstract]: a boolean.

    Complex types for which abstract is true must not be used as the type definition for the validation of element information items.

    XSAttributeUseList * XSComplexTypeDefinition::getAttributeUses (  ) 

    A set of attribute uses.

    References fXSAttributeUseList.

    XSWildcard * XSComplexTypeDefinition::getAttributeWildcard (  )  const

    Optional.An attribute wildcard.

    References fXSWildcard.

    CONTENT_TYPE XSComplexTypeDefinition::getContentType (  )  const

    [content type]: one of empty (CONTENTTYPE_EMPTY), a simple type definition (CONTENTTYPE_SIMPLE), mixed ( CONTENTTYPE_MIXED), or element-only ( CONTENTTYPE_ELEMENT).

    XSSimpleTypeDefinition * XSComplexTypeDefinition::getSimpleType (  )  const

    A simple type definition corresponding to simple content model, otherwise null.

    References fXSSimpleTypeDefinition.

    XSParticle * XSComplexTypeDefinition::getParticle (  )  const

    A particle for mixed or element-only content model, otherwise null.

    References fParticle.

    bool XSComplexTypeDefinition::isProhibitedSubstitution ( XSConstants::DERIVATION_TYPE  toTest  ) 

    [prohibited substitutions]: a subset of {extension, restriction}

    Parameters:
    toTest Extension or restriction constants (see XSObject).
    Returns:
    True if toTest is a prohibited substitution, otherwise false.

    short XSComplexTypeDefinition::getProhibitedSubstitutions (  )  const

    [prohibited substitutions]: A subset of {extension, restriction} or DERIVATION_NONE represented as a bit flag (see XSObject).

    References fProhibitedSubstitution.

    XSAnnotationList* XSComplexTypeDefinition::getAnnotations (  ) 

    A set of [annotations].

    const XMLCh* XSComplexTypeDefinition::getName (  )  const [virtual]

    The name of type NCName of this declaration as defined in XML Namespaces.

    Implements XSTypeDefinition.

    const XMLCh* XSComplexTypeDefinition::getNamespace (  )  [virtual]

    The [target namespace] of this object, or null if it is unspecified.

    Implements XSTypeDefinition.

    XSNamespaceItem* XSComplexTypeDefinition::getNamespaceItem (  )  [virtual]

    A namespace schema information item corresponding to the target namespace of the component, if it's globally declared; or null otherwise.

    Implements XSTypeDefinition.

    bool XSComplexTypeDefinition::getAnonymous (  )  const [virtual]

    A boolean that specifies if the type definition is anonymous.

    Convenience attribute.

    Implements XSTypeDefinition.

    XSTypeDefinition* XSComplexTypeDefinition::getBaseType (  )  [virtual]

    {base type definition}: either a simple type definition or a complex type definition.

    Implements XSTypeDefinition.

    bool XSComplexTypeDefinition::derivedFromType ( const XSTypeDefinition *const   ancestorType  )  [virtual]

    Convenience method: check if this type is derived from the given ancestorType.

    Parameters:
    ancestorType An ancestor type definition.
    Returns:
    Return true if this type is derived from ancestorType.

    Implements XSTypeDefinition.


    Friends And Related Function Documentation

    friend class XSObjectFactory [friend]


    Member Data Documentation

    ComplexTypeInfo* XSComplexTypeDefinition::fComplexTypeInfo [protected]


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classStdOutFormatTarget-members.html0000644000175000017500000001102511363620006024600 0ustar borisboris Xerces-C++: Member List

    StdOutFormatTarget Member List

    This is the complete list of members for StdOutFormatTarget, including all inherited members.

    flush()StdOutFormatTarget [virtual]
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    StdOutFormatTarget()StdOutFormatTarget
    writeChars(const XMLByte *const toWrite, const XMLSize_t count, XMLFormatter *const formatter)StdOutFormatTarget [virtual]
    XMemory()XMemory [protected]
    XMLFormatTarget()XMLFormatTarget [protected]
    ~StdOutFormatTarget()StdOutFormatTarget
    ~XMLFormatTarget()XMLFormatTarget [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLErrorCodes_8hpp.html0000644000175000017500000000433711363620005021756 0ustar borisboris Xerces-C++: XMLErrorCodes.hpp File Reference

    XMLErrorCodes.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLErrs

    Defines

    #define XERCESC_INCLUDE_GUARD_ERRHEADER_XMLErrs


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_ERRHEADER_XMLErrs


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMLSOutput_8hpp.html0000644000175000017500000000462111363620005021421 0ustar borisboris Xerces-C++: DOMLSOutput.hpp File Reference

    DOMLSOutput.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMLSOutput
     This interface represents an output destination for data. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMLSOUTPUT_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMLSOUTPUT_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_eval_0x6e.html0000644000175000017500000003601011363620005022241 0ustar borisboris Xerces-C++: Class Members - Enumerator
     

    - n -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/PanicHandler_8hpp.html0000644000175000017500000000460111363620005021650 0ustar borisboris Xerces-C++: PanicHandler.hpp File Reference

    PanicHandler.hpp File Reference

    Go to the source code of this file.

    Classes

    class  PanicHandler
     Receive notification of panic. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_PANICHANDLER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_PANICHANDLER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLValid.html0000644000175000017500000013363411363620006021041 0ustar borisboris Xerces-C++: XMLValid Class Reference

    XMLValid Class Reference

    List of all members.

    Public Types

    enum  Codes {
      NoError = 0, E_LowBounds = 1, ElementNotDefined = 2, AttNotDefined = 3,
      NotationNotDeclared = 4, RootElemNotLikeDocType = 5, RequiredAttrNotProvided = 6, ElementNotValidForContent = 7,
      BadIDAttrDefType = 8, InvalidEmptyAttValue = 9, ElementAlreadyExists = 10, MultipleIdAttrs = 11,
      ReusedIDValue = 12, IDNotDeclared = 13, UnknownNotRefAttr = 14, UndeclaredElemInDocType = 15,
      EmptyNotValidForContent = 16, AttNotDefinedForElement = 17, BadEntityRefAttr = 18, UnknownEntityRefAttr = 19,
      ColonNotValidWithNS = 20, NotEnoughElemsForCM = 21, NoCharDataInCM = 22, DoesNotMatchEnumList = 23,
      AttrValNotName = 24, NoMultipleValues = 25, NotSameAsFixedValue = 26, RepElemInMixed = 27,
      FeatureUnsupported = 28, GroupContentRestricted = 29, UnknownBaseDatatype = 30, NoContentForRef = 31,
      DatatypeError = 32, ProhibitedAttributePresent = 33, IllegalXMLSpace = 34, WrongTargetNamespace = 35,
      SimpleTypeHasChild = 36, NoDatatypeValidatorForSimpleType = 37, GrammarNotFound = 38, DisplayErrorMessage = 39,
      NillNotAllowed = 40, NilAttrNotEmpty = 41, FixedDifferentFromActual = 42, NoDatatypeValidatorForAttribute = 43,
      GenericError = 44, ElementNotQualified = 45, ElementNotUnQualified = 46, VC_IllegalRefInStandalone = 47,
      NoDefAttForStandalone = 48, NoAttNormForStandalone = 49, NoWSForStandalone = 50, VC_EntityNotFound = 51,
      PartialMarkupInPE = 52, DatatypeValidationFailure = 53, UniqueParticleAttributionFail = 54, NoAbstractInXsiType = 55,
      NoDirectUseAbstractElement = 56, NoUseAbstractType = 57, BadXsiType = 58, NonDerivedXsiType = 59,
      ElemNoSubforBlock = 60, TypeNoSubforBlock = 61, AttributeNotQualified = 62, AttributeNotUnQualified = 63,
      IC_FieldMultipleMatch = 64, IC_UnknownField = 65, IC_AbsentKeyValue = 66, IC_KeyNotEnoughValues = 67,
      IC_KeyMatchesNillable = 68, IC_DuplicateUnique = 69, IC_DuplicateKey = 70, IC_KeyRefOutOfScope = 71,
      IC_KeyNotFound = 72, NonWSContent = 73, EmptyElemNotationAttr = 74, EmptyElemHasContent = 75,
      ElemOneNotationAttr = 76, AttrDupToken = 77, ElemChildrenHasInvalidWS = 78, E_HighBounds = 79,
      W_LowBounds = 80, W_HighBounds = 81, F_LowBounds = 82, F_HighBounds = 83
    }

    Static Public Member Functions

    static bool isFatal (const XMLValid::Codes toCheck)
    static bool isWarning (const XMLValid::Codes toCheck)
    static bool isError (const XMLValid::Codes toCheck)
    static XMLErrorReporter::ErrTypes errorType (const XMLValid::Codes toCheck)
    static DOMError::ErrorSeverity DOMErrorType (const XMLValid::Codes toCheck)


    Member Enumeration Documentation

    Enumerator:
    NoError 
    E_LowBounds 
    ElementNotDefined 
    AttNotDefined 
    NotationNotDeclared 
    RootElemNotLikeDocType 
    RequiredAttrNotProvided 
    ElementNotValidForContent 
    BadIDAttrDefType 
    InvalidEmptyAttValue 
    ElementAlreadyExists 
    MultipleIdAttrs 
    ReusedIDValue 
    IDNotDeclared 
    UnknownNotRefAttr 
    UndeclaredElemInDocType 
    EmptyNotValidForContent 
    AttNotDefinedForElement 
    BadEntityRefAttr 
    UnknownEntityRefAttr 
    ColonNotValidWithNS 
    NotEnoughElemsForCM 
    NoCharDataInCM 
    DoesNotMatchEnumList 
    AttrValNotName 
    NoMultipleValues 
    NotSameAsFixedValue 
    RepElemInMixed 
    FeatureUnsupported 
    GroupContentRestricted 
    UnknownBaseDatatype 
    NoContentForRef 
    DatatypeError 
    ProhibitedAttributePresent 
    IllegalXMLSpace 
    WrongTargetNamespace 
    SimpleTypeHasChild 
    NoDatatypeValidatorForSimpleType 
    GrammarNotFound 
    DisplayErrorMessage 
    NillNotAllowed 
    NilAttrNotEmpty 
    FixedDifferentFromActual 
    NoDatatypeValidatorForAttribute 
    GenericError 
    ElementNotQualified 
    ElementNotUnQualified 
    VC_IllegalRefInStandalone 
    NoDefAttForStandalone 
    NoAttNormForStandalone 
    NoWSForStandalone 
    VC_EntityNotFound 
    PartialMarkupInPE 
    DatatypeValidationFailure 
    UniqueParticleAttributionFail 
    NoAbstractInXsiType 
    NoDirectUseAbstractElement 
    NoUseAbstractType 
    BadXsiType 
    NonDerivedXsiType 
    ElemNoSubforBlock 
    TypeNoSubforBlock 
    AttributeNotQualified 
    AttributeNotUnQualified 
    IC_FieldMultipleMatch 
    IC_UnknownField 
    IC_AbsentKeyValue 
    IC_KeyNotEnoughValues 
    IC_KeyMatchesNillable 
    IC_DuplicateUnique 
    IC_DuplicateKey 
    IC_KeyRefOutOfScope 
    IC_KeyNotFound 
    NonWSContent 
    EmptyElemNotationAttr 
    EmptyElemHasContent 
    ElemOneNotationAttr 
    AttrDupToken 
    ElemChildrenHasInvalidWS 
    E_HighBounds 
    W_LowBounds 
    W_HighBounds 
    F_LowBounds 
    F_HighBounds 


    Member Function Documentation

    static bool XMLValid::isFatal ( const XMLValid::Codes  toCheck  )  [static]

    References F_HighBounds, and F_LowBounds.

    static bool XMLValid::isWarning ( const XMLValid::Codes  toCheck  )  [static]

    References W_HighBounds, and W_LowBounds.

    static bool XMLValid::isError ( const XMLValid::Codes  toCheck  )  [static]

    References E_HighBounds, and E_LowBounds.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classSAXNotRecognizedException.png0000644000175000017500000000124411363620006024235 0ustar borisboris‰PNG  IHDR²ˆ±E¬PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf:IDAThí˜Krà †aÓ5âroÐ^¨«ÜÿÕ ü¨;¶Éİ'È>Äœ! ß­JøêÚ”O'¿9ÓTãédä‹ðÐŒt#­ê.çÌ«9D&…™1ƒÔ4Ï d¸'Ë]¯|¦ìFäµ-ݦ³3?T2žDúHãdg¹@}–ØèÖd>ð6#¯¾“»Ék.ÿÏߺ7#·;êýäÛÏåÈ·ÛåÈ—Œ ';ÙÉNv²“ìä=äv'ó+þOqò&2p"-[†`òþ@¶;˼hÞdZä 6$s¦ ²¦íhhÖãäNÅÈ–ý²ô”¥íJB —E¹·ƒ`dö›us]'Àbí s.zŸ,i»CdÔýǪ3j @Jj¥õñ´>ªSÖ'鵪"k‘”œX•T «h¤‰e<4Õ>òe±ê’ÀÈ:® åé…5š ¤Êb÷m\ñƬ^¬¤û¥ TŸ¥uJŽA[u¨‘åeþKŽ%$bQz F˜!W/M¾Ï}r€° ³5tŽ²Î‰Î5X/³m p&6TþòH:c#Zl uÞRîFw˜‚¶“c3r˜{×Ï!?Xœü,r³SÁ/I¶jçÅn^aIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classDOMXPathNSResolver.html0000644000175000017500000003176711363620006022774 0ustar borisboris Xerces-C++: DOMXPathNSResolver Class Reference

    DOMXPathNSResolver Class Reference

    The DOMXPathNSResolver interface permit prefix strings in the expression to be properly bound to namespaceURI strings. More...

    List of all members.

    Public Member Functions

    Destructor
    virtual ~DOMXPathNSResolver ()
     Destructor.
    Functions introduced in DOM Level 3
    virtual const XMLChlookupNamespaceURI (const XMLCh *prefix) const =0
     Look up the namespace URI associated to the given namespace prefix.
    Non-standard extension
    virtual const XMLChlookupPrefix (const XMLCh *URI) const =0
     Non-standard extension.
    virtual void addNamespaceBinding (const XMLCh *prefix, const XMLCh *uri)=0
     Non-standard extension.
    virtual void release ()=0
     Called to indicate that this object (and its associated children) is no longer in use and that the implementation may relinquish any resources associated with it and its associated children.

    Protected Member Functions

    Hidden constructors
     DOMXPathNSResolver ()


    Detailed Description

    The DOMXPathNSResolver interface permit prefix strings in the expression to be properly bound to namespaceURI strings.

    DOMXPathEvaluator can construct an implementation of DOMXPathNSResolver from a node, or the interface may be implemented by any application.

    Since:
    DOM Level 3

    Constructor & Destructor Documentation

    DOMXPathNSResolver::DOMXPathNSResolver (  )  [protected]

    virtual DOMXPathNSResolver::~DOMXPathNSResolver (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual const XMLCh* DOMXPathNSResolver::lookupNamespaceURI ( const XMLCh prefix  )  const [pure virtual]

    Look up the namespace URI associated to the given namespace prefix.

    Parameters:
    prefix of type XMLCh - The prefix to look for. An empty or null string denotes the default namespace.
    Returns:
    the associated namespace URI or null if none is found.

    virtual const XMLCh* DOMXPathNSResolver::lookupPrefix ( const XMLCh URI  )  const [pure virtual]

    Non-standard extension.

    XPath2 implementations require a reverse lookup in the static context. Look up the prefix associated with the namespace URI

    Parameters:
    URI of type XMLCh - The namespace to look for.
    Returns:
    the associated prefix which can be an empty string if this is a default namespace or null if none is found.

    virtual void DOMXPathNSResolver::addNamespaceBinding ( const XMLCh prefix,
    const XMLCh uri 
    ) [pure virtual]

    Non-standard extension.

    Associate the given namespace prefix to the namespace URI.

    Parameters:
    prefix of type XMLCh - The namespace prefix to bind. An empty or null string denotes the default namespace.
    uri of type XMLCh - The associated namespace URI. If this argument is null or an empty string then the existing binding for this prefix is removed.

    virtual void DOMXPathNSResolver::release (  )  [pure virtual]

    Called to indicate that this object (and its associated children) is no longer in use and that the implementation may relinquish any resources associated with it and its associated children.

    Access to a released object will lead to unexpected result.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/StDOMNode_8hpp.html0000644000175000017500000001106711363620005021060 0ustar borisboris Xerces-C++: StDOMNode.hpp File Reference

    StDOMNode.hpp File Reference

    Go to the source code of this file.

    Classes

    class  StDOMNode< T >

    Defines

    #define XERCESC_INCLUDE_GUARD_STDOMNODE_HPP

    Typedefs

    typedef DOMNodeDOMNodeSPtr
    typedef DOMAttrDOMAttrSPtr
    typedef DOMElementDOMElementSPtr


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_STDOMNODE_HPP


    Typedef Documentation

    typedef DOMAttr* DOMAttrSPtr

    typedef DOMNode* DOMNodeSPtr


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMemory_8hpp-source.html0000644000175000017500000002167711363620004022231 0ustar borisboris Xerces-C++: XMemory.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_rela.html0000644000175000017500000000761111363620005021400 0ustar borisboris Xerces-C++: Class Members - Related Functions
     


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/MemBufFormatTarget_8hpp-source.html0000644000175000017500000003214211363620004024311 0ustar borisboris Xerces-C++: MemBufFormatTarget.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMLSInput-members.html0000644000175000017500000001315411363620005022740 0ustar borisboris Xerces-C++: Member List

    DOMLSInput Member List

    This is the complete list of members for DOMLSInput, including all inherited members.

    DOMLSInput()DOMLSInput [protected]
    getBaseURI() const =0DOMLSInput [pure virtual]
    getByteStream() const =0DOMLSInput [pure virtual]
    getEncoding() const =0DOMLSInput [pure virtual]
    getIssueFatalErrorIfNotFound() const =0DOMLSInput [pure virtual]
    getPublicId() const =0DOMLSInput [pure virtual]
    getStringData() const =0DOMLSInput [pure virtual]
    getSystemId() const =0DOMLSInput [pure virtual]
    release()=0DOMLSInput [pure virtual]
    setBaseURI(const XMLCh *const baseURI)=0DOMLSInput [pure virtual]
    setByteStream(InputSource *stream)=0DOMLSInput [pure virtual]
    setEncoding(const XMLCh *const encodingStr)=0DOMLSInput [pure virtual]
    setIssueFatalErrorIfNotFound(bool flag)=0DOMLSInput [pure virtual]
    setPublicId(const XMLCh *const publicId)=0DOMLSInput [pure virtual]
    setStringData(const XMLCh *data)=0DOMLSInput [pure virtual]
    setSystemId(const XMLCh *const systemId)=0DOMLSInput [pure virtual]
    ~DOMLSInput()DOMLSInput [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMImplementationLS_8hpp-source.html0000644000175000017500000003102411363620004024400 0ustar borisboris Xerces-C++: DOMImplementationLS.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XSAttributeDeclaration_8hpp-source.html0000644000175000017500000004116011363620005025203 0ustar borisboris Xerces-C++: XSAttributeDeclaration.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLSchemaDescription_8hpp.html0000644000175000017500000000661511363620005023314 0ustar borisboris Xerces-C++: XMLSchemaDescription.hpp File Reference

    XMLSchemaDescription.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLSchemaDescription

    Defines

    #define XERCESC_INCLUDE_GUARD_XMLSCHEMADESCRIPTION_HPP

    Variables

    XERCES_CPP_NAMESPACE_BEGIN
    typedef const XMLCh *const 
    LocationHint


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XMLSCHEMADESCRIPTION_HPP


    Variable Documentation

    XERCES_CPP_NAMESPACE_BEGIN typedef const XMLCh* const LocationHint


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classErrorHandler.html0000644000175000017500000003737111363620006022011 0ustar borisboris Xerces-C++: ErrorHandler Class Reference

    ErrorHandler Class Reference

    Basic interface for SAX error handlers. More...

    Inheritance diagram for ErrorHandler:

    DefaultHandler HandlerBase

    List of all members.

    Public Member Functions

    Constructors and Destructor
     ErrorHandler ()
     Default constructor.
    virtual ~ErrorHandler ()
     Destructor.
    The error handler interface
    virtual void warning (const SAXParseException &exc)=0
     Receive notification of a warning.
    virtual void error (const SAXParseException &exc)=0
     Receive notification of a recoverable error.
    virtual void fatalError (const SAXParseException &exc)=0
     Receive notification of a non-recoverable error.
    virtual void resetErrors ()=0
     Reset the Error handler object on its reuse.


    Detailed Description

    Basic interface for SAX error handlers.

    If a SAX application needs to implement customized error handling, it must implement this interface and then register an instance with the SAX parser using the parser's setErrorHandler method. The parser will then report all errors and warnings through this interface.

    The parser shall use this interface instead of throwing an exception: it is up to the application whether to throw an exception for different types of errors and warnings. Note, however, that there is no requirement that the parser continue to provide useful information after a call to fatalError (in other words, a SAX driver class could catch an exception and report a fatalError).

    The HandlerBase class provides a default implementation of this interface, ignoring warnings and recoverable errors and throwing a SAXParseException for fatal errors. An application may extend that class rather than implementing the complete interface itself.

    See also:
    Parser::setErrorHandler

    SAXParseException::SAXParseException

    HandlerBase::HandlerBase


    Constructor & Destructor Documentation

    ErrorHandler::ErrorHandler (  ) 

    Default constructor.

    virtual ErrorHandler::~ErrorHandler (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual void ErrorHandler::warning ( const SAXParseException exc  )  [pure virtual]

    Receive notification of a warning.

    SAX parsers will use this method to report conditions that are not errors or fatal errors as defined by the XML 1.0 recommendation. The default behaviour is to take no action.

    The SAX parser must continue to provide normal parsing events after invoking this method: it should still be possible for the application to process the document through to the end.

    Parameters:
    exc The warning information encapsulated in a SAX parse exception.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    See also:
    SAXParseException::SAXParseException

    Implemented in HandlerBase, and DefaultHandler.

    virtual void ErrorHandler::error ( const SAXParseException exc  )  [pure virtual]

    Receive notification of a recoverable error.

    This corresponds to the definition of "error" in section 1.2 of the W3C XML 1.0 Recommendation. For example, a validating parser would use this callback to report the violation of a validity constraint. The default behaviour is to take no action.

    The SAX parser must continue to provide normal parsing events after invoking this method: it should still be possible for the application to process the document through to the end. If the application cannot do so, then the parser should report a fatal error even if the XML 1.0 recommendation does not require it to do so.

    Parameters:
    exc The error information encapsulated in a SAX parse exception.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    See also:
    SAXParseException::SAXParseException

    Implemented in HandlerBase, and DefaultHandler.

    virtual void ErrorHandler::fatalError ( const SAXParseException exc  )  [pure virtual]

    Receive notification of a non-recoverable error.

    This corresponds to the definition of "fatal error" in section 1.2 of the W3C XML 1.0 Recommendation. For example, a parser would use this callback to report the violation of a well-formedness constraint.

    The application must assume that the document is unusable after the parser has invoked this method, and should continue (if at all) only for the sake of collecting addition error messages: in fact, SAX parsers are free to stop reporting any other events once this method has been invoked.

    Parameters:
    exc The error information encapsulated in a SAX parse exception.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    See also:
    SAXParseException::SAXParseException

    Implemented in HandlerBase, and DefaultHandler.

    virtual void ErrorHandler::resetErrors (  )  [pure virtual]

    Reset the Error handler object on its reuse.

    This method helps in reseting the Error handler object implementation defaults each time the Error handler is begun.

    Implemented in HandlerBase, and DefaultHandler.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_func_0x73.html0000644000175000017500000010622711363620005022174 0ustar borisboris Xerces-C++: Class Members - Functions
     

    - s -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLUni_8hpp-source.html0000644000175000017500000025142411363620005021741 0ustar borisboris Xerces-C++: XMLUni.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/InputSource_8hpp.html0000644000175000017500000000460011363620005021577 0ustar borisboris Xerces-C++: InputSource.hpp File Reference

    InputSource.hpp File Reference

    Go to the source code of this file.

    Classes

    class  InputSource
     A single input source for an XML entity. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_INPUTSOURCE_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_INPUTSOURCE_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classPSVIItem-members.html0000644000175000017500000002457011363620006022447 0ustar borisboris Xerces-C++: Member List

    PSVIItem Member List

    This is the complete list of members for PSVIItem, including all inherited members.

    ASSESSMENT_TYPE enum namePSVIItem
    fAssessmentTypePSVIItem [protected]
    fCanonicalValuePSVIItem [protected]
    fDefaultValuePSVIItem [protected]
    fIsSpecifiedPSVIItem [protected]
    fMemberTypePSVIItem [protected]
    fMemoryManagerPSVIItem [protected]
    fNormalizedValuePSVIItem [protected]
    fTypePSVIItem [protected]
    fValidationContextPSVIItem [protected]
    fValidityStatePSVIItem [protected]
    getActualValue() const PSVIItem [virtual]
    getCanonicalRepresentation() const PSVIItem
    getIsSchemaSpecified() const PSVIItem
    getMemberTypeDefinition()=0PSVIItem [pure virtual]
    getSchemaDefault()PSVIItem
    getSchemaNormalizedValue()PSVIItem
    getTypeDefinition()=0PSVIItem [pure virtual]
    getValidationAttempted() const PSVIItem
    getValidationContext()PSVIItem
    getValidity() const PSVIItem
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    PSVIItem(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)PSVIItem
    reset(const XMLCh *const validationContext, const XMLCh *const normalizedValue, const VALIDITY_STATE validityState, const ASSESSMENT_TYPE assessmentType)PSVIItem
    setValidationAttempted(PSVIItem::ASSESSMENT_TYPE attemptType)PSVIItem
    setValidity(PSVIItem::VALIDITY_STATE validity)PSVIItem
    VALIDATION_FULL enum valuePSVIItem
    VALIDATION_NONE enum valuePSVIItem
    VALIDATION_PARTIAL enum valuePSVIItem
    VALIDITY_INVALID enum valuePSVIItem
    VALIDITY_NOTKNOWN enum valuePSVIItem
    VALIDITY_STATE enum namePSVIItem
    VALIDITY_VALID enum valuePSVIItem
    XMemory()XMemory [protected]
    ~PSVIItem()PSVIItem [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_0x77.html0000644000175000017500000001760011363620005021161 0ustar borisboris Xerces-C++: Class Members
    Here is a list of all class members with links to the classes they belong to:

    - w -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMTypeInfo_8hpp.html0000644000175000017500000000562311363620005021422 0ustar borisboris Xerces-C++: DOMTypeInfo.hpp File Reference

    DOMTypeInfo.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMTypeInfo
     The DOMTypeInfo interface represent a type used by DOMElement or DOMAttr nodes, specified in the schemas associated with the document. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMTYPEINFO_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMTYPEINFO_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classInputSource.html0000644000175000017500000011225211363620006021672 0ustar borisboris Xerces-C++: InputSource Class Reference

    InputSource Class Reference

    A single input source for an XML entity. More...

    Inheritance diagram for InputSource:

    XMemory LocalFileInputSource MemBufInputSource StdInInputSource URLInputSource Wrapper4DOMLSInput

    List of all members.

    Public Member Functions

    Destructor
    virtual ~InputSource ()
     Destructor.
    Virtual input source interface
    virtual BinInputStreammakeStream () const =0
     Makes the byte stream for this input source.
    Getter methods
    virtual const XMLChgetEncoding () const
     An input source can be set to force the parser to assume a particular encoding for the data that input source represents, via the setEncoding() method.
    virtual const XMLChgetPublicId () const
     Get the public identifier for this input source.
    virtual const XMLChgetSystemId () const
     Get the system identifier for this input source.
    virtual bool getIssueFatalErrorIfNotFound () const
     Get the flag that indicates if the parser should issue fatal error if this input source is not found.
    MemoryManagergetMemoryManager () const
    Setter methods
    virtual void setEncoding (const XMLCh *const encodingStr)
     Set the encoding which will be required for use with the XML text read via a stream opened by this input source.
    virtual void setPublicId (const XMLCh *const publicId)
     Set the public identifier for this input source.
    virtual void setSystemId (const XMLCh *const systemId)
     Set the system identifier for this input source.
    virtual void setIssueFatalErrorIfNotFound (const bool flag)
     Indicates if the parser should issue fatal error if this input source is not found.

    Protected Member Functions

    Constructors and Destructor
     InputSource (MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Default constructor.
     InputSource (const XMLCh *const systemId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Constructor with a system identifier as XMLCh type.
     InputSource (const XMLCh *const systemId, const XMLCh *const publicId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Constructor with a system and public identifiers.
     InputSource (const char *const systemId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Constructor witha system identifier as string.
     InputSource (const char *const systemId, const char *const publicId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Constructor witha system and public identifiers.


    Detailed Description

    A single input source for an XML entity.

    This class encapsulates information about an input source in a single object, which may include a public identifier or a system identifier

    There are two places that the application will deliver this input source to the parser: as the argument to the Parser::parse method, or as the return value of the EntityResolver::resolveEntity method.

    InputSource is never used directly, but is the base class for a number of derived classes for particular types of input sources. Derivatives are provided (in the framework/ directory) for URL input sources, memory buffer input sources, and so on.

    When it is time to parse the input described by an input source, it will be asked to create a binary stream for that source. That stream will be used to input the data of the source. The derived class provides the implementation of the makeStream() method, and provides a type of stream of the correct type for the input source it represents.

    An InputSource object belongs to the application: the parser never modifies them in any way. They are always passed by const reference so the parser will make a copy of any input sources that it must keep around beyond the call.

    See also:
    Parser::parse

    EntityResolver::resolveEntity


    Constructor & Destructor Documentation

    virtual InputSource::~InputSource (  )  [virtual]

    Destructor.

    InputSource::InputSource ( MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager  )  [protected]

    Default constructor.

    InputSource::InputSource ( const XMLCh *const   systemId,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [protected]

    Constructor with a system identifier as XMLCh type.

    Parameters:
    systemId The system identifier (URI).
    manager Pointer to the memory manager to be used to allocate objects.

    InputSource::InputSource ( const XMLCh *const   systemId,
    const XMLCh *const   publicId,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [protected]

    Constructor with a system and public identifiers.

    Parameters:
    systemId The system identifier (URI).
    publicId The public identifier as in the entity definition.
    manager Pointer to the memory manager to be used to allocate objects.

    InputSource::InputSource ( const char *const   systemId,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [protected]

    Constructor witha system identifier as string.

    Parameters:
    systemId The system identifier (URI).
    manager Pointer to the memory manager to be used to allocate objects.

    InputSource::InputSource ( const char *const   systemId,
    const char *const   publicId,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [protected]

    Constructor witha system and public identifiers.

    Both as string

    Parameters:
    systemId The system identifier (URI).
    publicId The public identifier as in the entity definition.
    manager Pointer to the memory manager to be used to allocate objects.


    Member Function Documentation

    virtual BinInputStream* InputSource::makeStream (  )  const [pure virtual]

    Makes the byte stream for this input source.

    The derived class must create and return a binary input stream of an appropriate type for its kind of data source. The returned stream must be dynamically allocated and becomes the parser's property.

    See also:
    BinInputStream

    Implemented in LocalFileInputSource, MemBufInputSource, StdInInputSource, URLInputSource, and Wrapper4DOMLSInput.

    const XMLCh * InputSource::getEncoding (  )  const [virtual]

    An input source can be set to force the parser to assume a particular encoding for the data that input source represents, via the setEncoding() method.

    This method returns name of the encoding that is to be forced. If the encoding has never been forced, it returns a null pointer.

    Returns:
    The forced encoding, or null if none was supplied.
    See also:
    setEncoding

    Reimplemented in Wrapper4DOMLSInput.

    const XMLCh * InputSource::getPublicId (  )  const [virtual]

    Get the public identifier for this input source.

    Returns:
    The public identifier, or null if none was supplied.
    See also:
    setPublicId

    Reimplemented in Wrapper4DOMLSInput.

    const XMLCh * InputSource::getSystemId (  )  const [virtual]

    Get the system identifier for this input source.

    If the system ID is a URL, it will be fully resolved.

    Returns:
    The system identifier.
    See also:
    setSystemId

    Reimplemented in Wrapper4DOMLSInput.

    bool InputSource::getIssueFatalErrorIfNotFound (  )  const [virtual]

    Get the flag that indicates if the parser should issue fatal error if this input source is not found.

    Returns:
    True if the parser should issue fatal error if this input source is not found. False if the parser issue warning message instead.
    See also:
    setIssueFatalErrorIfNotFound

    Reimplemented in Wrapper4DOMLSInput.

    MemoryManager * InputSource::getMemoryManager (  )  const

    virtual void InputSource::setEncoding ( const XMLCh *const   encodingStr  )  [virtual]

    Set the encoding which will be required for use with the XML text read via a stream opened by this input source.

    This is usually not set, allowing the encoding to be sensed in the usual XML way. However, in some cases, the encoding in the file is known to be incorrect because of intermediate transcoding, for instance encapsulation within a MIME document.

    Parameters:
    encodingStr The name of the encoding to force.

    Reimplemented in Wrapper4DOMLSInput.

    virtual void InputSource::setPublicId ( const XMLCh *const   publicId  )  [virtual]

    Set the public identifier for this input source.

    The public identifier is always optional: if the application writer includes one, it will be provided as part of the location information.

    Parameters:
    publicId The public identifier as a string.
    See also:
    Locator::getPublicId

    SAXParseException::getPublicId

    getPublicId

    Reimplemented in Wrapper4DOMLSInput.

    virtual void InputSource::setSystemId ( const XMLCh *const   systemId  )  [virtual]

    Set the system identifier for this input source.

    Set the system identifier for this input source.

    The system id is always required. The public id may be used to map to another system id, but the system id must always be present as a fall back.

    If the system ID is a URL, it must be fully resolved.

    Parameters:
    systemId The system identifier as a string.
    See also:
    getSystemId

    Locator::getSystemId

    SAXParseException::getSystemId

    Reimplemented in Wrapper4DOMLSInput.

    void InputSource::setIssueFatalErrorIfNotFound ( const bool  flag  )  [virtual]

    Indicates if the parser should issue fatal error if this input source is not found.

    If set to false, the parser issue warning message instead.

    Parameters:
    flag True if the parser should issue fatal error if this input source is not found. If set to false, the parser issue warning message instead. (Default: true)
    See also:
    getIssueFatalErrorIfNotFound

    Reimplemented in Wrapper4DOMLSInput.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classMemoryManager.html0000644000175000017500000002504711363620006022162 0ustar borisboris Xerces-C++: MemoryManager Class Reference

    MemoryManager Class Reference

    Configurable memory manager. More...

    List of all members.

    Public Member Functions

    virtual MemoryManagergetExceptionMemoryManager ()=0
     This method is called to obtain the memory manager that should be used to allocate memory used in exceptions.
    Destructor
    virtual ~MemoryManager ()
     Default destructor.
    The pure virtual methods in this interface.
    virtual void * allocate (XMLSize_t size)=0
     This method allocates requested memory.
    virtual void deallocate (void *p)=0
     This method deallocates memory.

    Protected Member Functions

    Constructor
     MemoryManager ()
     Protected default constructor.


    Detailed Description

    Configurable memory manager.

    This interface allows outside applications to plug in their own memory manager to be used by Xerces for memory allocation/deallocation.


    Constructor & Destructor Documentation

    virtual MemoryManager::~MemoryManager (  )  [virtual]

    Default destructor.

    MemoryManager::MemoryManager (  )  [protected]

    Protected default constructor.


    Member Function Documentation

    virtual MemoryManager* MemoryManager::getExceptionMemoryManager (  )  [pure virtual]

    This method is called to obtain the memory manager that should be used to allocate memory used in exceptions.

    If the same memory manager can be used, simply return 'this' from this function. Note, however, that if there is a possibility that an exception thrown can outlive the memory manager (for example, because the memory manager object is allocated on the stack or is managed by a stack-bound object), it is recommended that you return XMLPlatformUtils::fgMemoryManager.

    Returns:
    A pointer to the memory manager

    virtual void* MemoryManager::allocate ( XMLSize_t  size  )  [pure virtual]

    This method allocates requested memory.

    Parameters:
    size The requested memory size
    Returns:
    A pointer to the allocated memory

    Referenced by XMLString::replicate(), and XMLDateTime::setBuffer().


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMTypeInfo.html0000644000175000017500000005216111363620006021511 0ustar borisboris Xerces-C++: DOMTypeInfo Class Reference

    DOMTypeInfo Class Reference

    The DOMTypeInfo interface represent a type used by DOMElement or DOMAttr nodes, specified in the schemas associated with the document. More...

    List of all members.

    Public Types

    Public Contants
    enum  DerivationMethods { DERIVATION_RESTRICTION = 0x001, DERIVATION_EXTENSION = 0x002, DERIVATION_UNION = 0x004, DERIVATION_LIST = 0x008 }
     These are the available values for the derivationMethod parameter used by the method DOMTypeInfo::isDerivedFrom(). More...

    Public Member Functions

    Destructor
    virtual ~DOMTypeInfo ()
     Destructor.
    virtual const XMLChgetTypeName () const =0
     Returns The name of a type declared for the associated DOMElement or DOMAttr, or null if unknown.
    virtual const XMLChgetTypeNamespace () const =0
     The namespace of the type declared for the associated DOMElement or DOMAttr or null if the DOMElement does not have declaration or if no namespace information is available.
    virtual bool isDerivedFrom (const XMLCh *typeNamespaceArg, const XMLCh *typeNameArg, DerivationMethods derivationMethod) const =0
     This method returns if there is a derivation between the reference type definition, i.e.

    Protected Member Functions

    Hidden constructors
     DOMTypeInfo ()


    Detailed Description

    The DOMTypeInfo interface represent a type used by DOMElement or DOMAttr nodes, specified in the schemas associated with the document.

    The type is a pair of a namespace URI and name properties, and depends on the document's schema.


    Member Enumeration Documentation

    These are the available values for the derivationMethod parameter used by the method DOMTypeInfo::isDerivedFrom().

    It is a set of possible types of derivation, and the values represent bit positions. If a bit in the derivationMethod parameter is set to 1, the corresponding type of derivation will be taken into account when evaluating the derivation between the reference type definition and the other type definition. When using the isDerivedFrom method, combining all of them in the derivationMethod parameter is equivalent to invoking the method for each of them separately and combining the results with the OR boolean function. This specification only defines the type of derivation for XML Schema.

    In addition to the types of derivation listed below, please note that:

    • any type derives from xsd:anyType.
    • any simple type derives from xsd:anySimpleType by restriction.
    • any complex type does not derive from xsd:anySimpleType by restriction.

    DERIVATION_EXTENSION: If the document's schema is an XML Schema [XML Schema Part 1], this constant represents the derivation by extension. The reference type definition is derived by extension from the other type definition if the other type definition can be reached recursively following the {base type definition} property from the reference type definition, and at least one of the derivation methods involved is an extension.

    DERIVATION_LIST: If the document's schema is an XML Schema [XML Schema Part 1], this constant represents the list. The reference type definition is derived by list from the other type definition if there exists two type definitions T1 and T2 such as the reference type definition is derived from T1 by DERIVATION_RESTRICTION or DERIVATION_EXTENSION, T2 is derived from the other type definition by DERIVATION_RESTRICTION, T1 has {variety} list, and T2 is the {item type definition}. Note that T1 could be the same as the reference type definition, and T2 could be the same as the other type definition.

    DERIVATION_RESTRICTION: If the document's schema is an XML Schema [XML Schema Part 1], this constant represents the derivation by restriction if complex types are involved, or a restriction if simple types are involved. The reference type definition is derived by restriction from the other type definition if the other type definition is the same as the reference type definition, or if the other type definition can be reached recursively following the {base type definition} property from the reference type definition, and all the derivation methods involved are restriction.

    DERIVATION_UNION: If the document's schema is an XML Schema [XML Schema Part 1], this constant represents the union if simple types are involved. The reference type definition is derived by union from the other type definition if there exists two type definitions T1 and T2 such as the reference type definition is derived from T1 by DERIVATION_RESTRICTION or DERIVATION_EXTENSION, T2 is derived from the other type definition by DERIVATION_RESTRICTION, T1 has {variety} union, and one of the {member type definitions} is T2. Note that T1 could be the same as the reference type definition, and T2 could be the same as the other type definition.

    Since:
    DOM Level 3
    Enumerator:
    DERIVATION_RESTRICTION 
    DERIVATION_EXTENSION 
    DERIVATION_UNION 
    DERIVATION_LIST 


    Constructor & Destructor Documentation

    DOMTypeInfo::DOMTypeInfo (  )  [protected]

    virtual DOMTypeInfo::~DOMTypeInfo (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual const XMLCh* DOMTypeInfo::getTypeName (  )  const [pure virtual]

    Returns The name of a type declared for the associated DOMElement or DOMAttr, or null if unknown.

    Returns:
    The name of a type declared for the associated DOMElement or DOMAttribute, or null if unknown.
    Since:
    DOM level 3

    virtual const XMLCh* DOMTypeInfo::getTypeNamespace (  )  const [pure virtual]

    The namespace of the type declared for the associated DOMElement or DOMAttr or null if the DOMElement does not have declaration or if no namespace information is available.

    Returns:
    The namespace of the type declared for the associated DOMElement or DOMAttr or null if the DOMElement does not have declaration or if no namespace information is available.
    Since:
    DOM level 3

    virtual bool DOMTypeInfo::isDerivedFrom ( const XMLCh typeNamespaceArg,
    const XMLCh typeNameArg,
    DerivationMethods  derivationMethod 
    ) const [pure virtual]

    This method returns if there is a derivation between the reference type definition, i.e.

    the DOMTypeInfo on which the method is being called, and the other type definition, i.e. the one passed as parameters.

    Parameters:
    typeNamespaceArg The namespace of the other type definition.
    typeNameArg The name of the other type definition.
    derivationMethod The type of derivation and conditions applied between two types, as described in the list of constants provided in this interface.
    Returns:
    If the document's schema is a DTD or no schema is associated with the document, this method will always return false. If the document's schema is an XML Schema, the method will true if the reference type definition is derived from the other type definition according to the derivation parameter. If the value of the parameter is 0 (no bit is set to 1 for the derivationMethod parameter), the method will return true if the other type definition can be reached by recursing any combination of {base type definition}, {item type definition}, or {member type definitions} from the reference type definition.
    Since:
    DOM level 3


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XSFacet_8hpp.html0000644000175000017500000000425711363620005020624 0ustar borisboris Xerces-C++: XSFacet.hpp File Reference

    XSFacet.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XSFacet

    Defines

    #define XERCESC_INCLUDE_GUARD_XSFACET_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XSFACET_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classHash2KeysSetOf-members.html0000644000175000017500000001465111363620006023610 0ustar borisboris Xerces-C++: Member List

    Hash2KeysSetOf< THasher > Member List

    This is the complete list of members for Hash2KeysSetOf< THasher >, including all inherited members.

    containsKey(const void *const key1, const int key2) const Hash2KeysSetOf< THasher >
    getHashModulus() const Hash2KeysSetOf< THasher >
    getMemoryManager() const Hash2KeysSetOf< THasher >
    Hash2KeysSetOf(const XMLSize_t modulus, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)Hash2KeysSetOf< THasher >
    Hash2KeysSetOf(const XMLSize_t modulus, const THasher &hasher, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)Hash2KeysSetOf< THasher >
    Hash2KeysSetOfEnumerator< THasher > classHash2KeysSetOf< THasher > [friend]
    isEmpty() const Hash2KeysSetOf< THasher >
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    put(const void *key1, int key2)Hash2KeysSetOf< THasher >
    putIfNotPresent(const void *key1, int key2)Hash2KeysSetOf< THasher >
    removeAll()Hash2KeysSetOf< THasher >
    removeKey(const void *const key1, const int key2)Hash2KeysSetOf< THasher >
    removeKey(const void *const key1)Hash2KeysSetOf< THasher >
    XMemory()XMemory [protected]
    ~Hash2KeysSetOf()Hash2KeysSetOf< THasher >


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classAbstractDOMParser.html0000644000175000017500000076741011363620005022705 0ustar borisboris Xerces-C++: AbstractDOMParser Class Reference

    AbstractDOMParser Class Reference

    This class implements the Document Object Model (DOM) interface. More...

    Inheritance diagram for AbstractDOMParser:

    XMemory XMLDocumentHandler XMLErrorReporter XMLEntityHandler PSVIHandler XercesDOMParser

    List of all members.

    Public Types

    Public constants
    enum  ValSchemes { Val_Never, Val_Always, Val_Auto }
     ValScheme enum used in setValidationScheme Val_Never: Do not report validation errors. More...

    Public Member Functions

    Destructor
    virtual ~AbstractDOMParser ()
     Destructor.
    Utility methods
    void reset ()
     Reset the parser.
    DOMDocumentadoptDocument ()
     Adopt the DOM document.
    Getter methods
    DOMDocumentgetDocument ()
     Get the DOM document.
    const XMLValidatorgetValidator () const
     Get a const reference to the validator.
    ValSchemes getValidationScheme () const
     This method returns an enumerated value that indicates the current validation scheme set on this parser.
    bool getDoSchema () const
     Get the 'do schema' flag.
    bool getValidationSchemaFullChecking () const
     Get the 'full schema constraint checking' flag.
    bool getIdentityConstraintChecking () const
     Get the identity constraint checking' flag.
    XMLSize_t getErrorCount () const
     Get error count from the last parse operation.
    bool getDoNamespaces () const
     Get the 'do namespaces' flag.
    bool getExitOnFirstFatalError () const
     Get the 'exit on first error' flag.
    bool getValidationConstraintFatal () const
     This method returns the state of the parser's validation-constraint-fatal flag.
    bool getCreateEntityReferenceNodes () const
     Get the 'include entity references' flag.
    bool getIncludeIgnorableWhitespace () const
     Get the 'include ignorable whitespace' flag.
    XMLChgetExternalSchemaLocation () const
     Get the set of Namespace/SchemaLocation that is specified externally.
    XMLChgetExternalNoNamespaceSchemaLocation () const
     Get the noNamespace SchemaLocation that is specified externally.
    SecurityManagergetSecurityManager () const
     Get the SecurityManager instance attached to this parser.
    const XMLSize_tgetLowWaterMark () const
     Get the raw buffer low water mark for this parser.
    bool getLoadExternalDTD () const
     Get the 'Loading External DTD' flag.
    bool getLoadSchema () const
     Get the 'Loading Schema' flag.
    bool getCreateCommentNodes () const
     Get the 'create comment node' flag.
    bool getCalculateSrcOfs () const
     Get the 'calculate src offset flag'.
    bool getStandardUriConformant () const
     Get the 'force standard uri flag'.
    PSVIHandlergetPSVIHandler ()
     This method returns the installed PSVI handler.
    const PSVIHandlergetPSVIHandler () const
     This method returns the installed PSVI handler.
    bool getCreateSchemaInfo () const
     Get the 'associate schema info' flag.
    bool getDoXInclude () const
     Get the 'do XInclude' flag.
    bool getGenerateSyntheticAnnotations () const
     Get the 'generate synthetic annotations' flag.
    bool getValidateAnnotations () const
     Get the 'validate annotations' flag.
    bool getIgnoreAnnotations () const
     Get the 'ignore annotations' flag.
    bool getDisableDefaultEntityResolution () const
     Get the 'disable default entity resolution' flag.
    bool getSkipDTDValidation () const
     Get the 'skip DTD validation' flag.
    bool getHandleMultipleImports () const
     Get the 'handle multiple schema imports' flag.
    Setter methods
    void setGenerateSyntheticAnnotations (const bool newValue)
     set the 'generate synthetic annotations' flag
    void setValidateAnnotations (const bool newValue)
     set the 'validlate annotations' flag
    void setDoNamespaces (const bool newState)
     Set the 'do namespaces' flag.
    void setExitOnFirstFatalError (const bool newState)
     Set the 'exit on first error' flag.
    void setValidationConstraintFatal (const bool newState)
     This method allows users to set the parser's behaviour when it encounters a validation constraint error.
    void setCreateEntityReferenceNodes (const bool create)
     Set the 'include entity references' flag.
    void setIncludeIgnorableWhitespace (const bool include)
     Set the 'include ignorable whitespace' flag.
    void setValidationScheme (const ValSchemes newScheme)
     This method allows users to set the validation scheme to be used by this parser.
    void setDoSchema (const bool newState)
     Set the 'do schema' flag.
    void setValidationSchemaFullChecking (const bool schemaFullChecking)
     This method allows the user to turn full Schema constraint checking on/off.
    void setIdentityConstraintChecking (const bool newState)
     This method allows users to enable or disable the parser's identity constraint checks.
    void setExternalSchemaLocation (const XMLCh *const schemaLocation)
     This method allows the user to specify a list of schemas to use.
    void setExternalSchemaLocation (const char *const schemaLocation)
     This method is same as setExternalSchemaLocation(const XMLCh* const).
    void setExternalNoNamespaceSchemaLocation (const XMLCh *const noNamespaceSchemaLocation)
     This method allows the user to specify the no target namespace XML Schema Location externally.
    void setExternalNoNamespaceSchemaLocation (const char *const noNamespaceSchemaLocation)
     This method is same as setExternalNoNamespaceSchemaLocation(const XMLCh* const).
    void setSecurityManager (SecurityManager *const securityManager)
     This allows an application to set a SecurityManager on the parser; this object stores information that various components use to limit their consumption of system resources while processing documents.
    void setLowWaterMark (XMLSize_t lwm)
     Set the raw buffer low water mark for this parser.
    void setLoadExternalDTD (const bool newState)
     Set the 'Loading External DTD' flag.
    void setLoadSchema (const bool newState)
     Set the 'Loading Schema' flag.
    void setCreateCommentNodes (const bool create)
     Set the 'create comment nodes' flag.
    void setCalculateSrcOfs (const bool newState)
     Enable/disable src offset calculation.
    void setStandardUriConformant (const bool newState)
     Force standard uri.
    void useScanner (const XMLCh *const scannerName)
     Set the scanner to use when scanning the XML document.
    void useImplementation (const XMLCh *const implementationFeatures)
     Set the implementation to use when creating the document.
    virtual void setPSVIHandler (PSVIHandler *const handler)
     This method installs the user specified PSVI handler on the parser.
    void setCreateSchemaInfo (const bool newState)
     Set the 'associate schema info' flag.
    void setDoXInclude (const bool newState)
     Set the 'do XInclude' flag.
    void setIgnoreAnnotations (const bool newValue)
     Set the 'ignore annotation' flag.
    void setDisableDefaultEntityResolution (const bool newValue)
     Set the 'disable default entity resolution' flag.
    void setSkipDTDValidation (const bool newValue)
     Set the 'skip DTD validation' flag.
    void setHandleMultipleImports (const bool newValue)
     Set the 'handle multiple schema imports' flag.
    Parsing methods
    void parse (const InputSource &source)
     Parse via an input source object.
    void parse (const XMLCh *const systemId)
     Parse via a file path or URL.
    void parse (const char *const systemId)
     Parse via a file path or URL (in the local code page).
    bool parseFirst (const XMLCh *const systemId, XMLPScanToken &toFill)
     Begin a progressive parse operation.
    bool parseFirst (const char *const systemId, XMLPScanToken &toFill)
     Begin a progressive parse operation.
    bool parseFirst (const InputSource &source, XMLPScanToken &toFill)
     Begin a progressive parse operation.
    bool parseNext (XMLPScanToken &token)
     Continue a progressive parse operation.
    void parseReset (XMLPScanToken &token)
     Reset the parser after a progressive parse.
    Implementation of the PSVIHandler interface.
    virtual void handleElementPSVI (const XMLCh *const localName, const XMLCh *const uri, PSVIElement *elementInfo)
     Receive notification of the PSVI properties of an element.
    virtual void handlePartialElementPSVI (const XMLCh *const localName, const XMLCh *const uri, PSVIElement *elementInfo)
     Receive notification of partial PSVI properties of an element.
    virtual void handleAttributesPSVI (const XMLCh *const localName, const XMLCh *const uri, PSVIAttributeList *psviAttributes)
     Enables PSVI information about attributes to be passed back to the application.
    Implementation of the XMLDocumentHandler interface.
    virtual void docCharacters (const XMLCh *const chars, const XMLSize_t length, const bool cdataSection)
     Handle document character events.
    virtual void docComment (const XMLCh *const comment)
     Handle a document comment event.
    virtual void docPI (const XMLCh *const target, const XMLCh *const data)
     Handle a document PI event.
    virtual void endDocument ()
     Handle the end of document event.
    virtual void endElement (const XMLElementDecl &elemDecl, const unsigned int urlId, const bool isRoot, const XMLCh *const elemPrefix)
     Handle and end of element event.
    virtual void endEntityReference (const XMLEntityDecl &entDecl)
     Handle and end of entity reference event.
    virtual void ignorableWhitespace (const XMLCh *const chars, const XMLSize_t length, const bool cdataSection)
     Handle an ignorable whitespace vent.
    virtual void resetDocument ()
     Handle a document reset event.
    virtual void startDocument ()
     Handle a start document event.
    virtual void startElement (const XMLElementDecl &elemDecl, const unsigned int urlId, const XMLCh *const elemPrefix, const RefVectorOf< XMLAttr > &attrList, const XMLSize_t attrCount, const bool isEmpty, const bool isRoot)
     Handle a start element event.
    virtual void startEntityReference (const XMLEntityDecl &entDecl)
     Handle a start entity reference event.
    virtual void XMLDecl (const XMLCh *const versionStr, const XMLCh *const encodingStr, const XMLCh *const standaloneStr, const XMLCh *const actualEncStr)
     Handle an XMLDecl event.
    Deprecated DocTypeHandler Interfaces
    virtual void attDef (const DTDElementDecl &elemDecl, const DTDAttDef &attDef, const bool ignoring)
    virtual void doctypeComment (const XMLCh *const comment)
    virtual void doctypeDecl (const DTDElementDecl &elemDecl, const XMLCh *const publicId, const XMLCh *const systemId, const bool hasIntSubset, const bool hasExtSubset=false)
    virtual void doctypePI (const XMLCh *const target, const XMLCh *const data)
    virtual void doctypeWhitespace (const XMLCh *const chars, const XMLSize_t length)
    virtual void elementDecl (const DTDElementDecl &decl, const bool isIgnored)
    virtual void endAttList (const DTDElementDecl &elemDecl)
    virtual void endIntSubset ()
    virtual void endExtSubset ()
    virtual void entityDecl (const DTDEntityDecl &entityDecl, const bool isPEDecl, const bool isIgnored)
    virtual void resetDocType ()
    virtual void notationDecl (const XMLNotationDecl &notDecl, const bool isIgnored)
    virtual void startAttList (const DTDElementDecl &elemDecl)
    virtual void startIntSubset ()
    virtual void startExtSubset ()
    virtual void TextDecl (const XMLCh *const versionStr, const XMLCh *const encodingStr)

    Protected Member Functions

    virtual DOMCDATASectioncreateCDATASection (const XMLCh *, XMLSize_t)
    virtual DOMTextcreateText (const XMLCh *, XMLSize_t)
    virtual DOMElementcreateElement (const XMLCh *name)
    virtual DOMElementcreateElementNS (const XMLCh *namespaceURI, const XMLCh *elemPrefix, const XMLCh *localName, const XMLCh *qName)
    virtual DOMAttrcreateAttr (const XMLCh *name)
    virtual DOMAttrcreateAttrNS (const XMLCh *namespaceURI, const XMLCh *elemPrefix, const XMLCh *localName, const XMLCh *qName)
    Constructors
     AbstractDOMParser (XMLValidator *const valToAdopt=0, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager, XMLGrammarPool *const gramPool=0)
     Construct a AbstractDOMParser, with an optional validator.
    Protected getter methods
    DOMNodegetCurrentNode ()
     Get the current DOM node.
    XMLScanner * getScanner () const
     Get the XML scanner.
    GrammarResolver * getGrammarResolver () const
     Get the Grammar resolver.
    bool getParseInProgress () const
     Get the parse in progress flag.
    MemoryManagergetMemoryManager () const
    Protected setter methods
    void setCurrentNode (DOMNode *toSet)
     Set the current DOM node.
    void setDocument (DOMDocument *toSet)
     Set the document node.
    void setParseInProgress (const bool toSet)
     Set the parse in progress flag.
    Protected helper methods
    void resetPool ()
    bool isDocumentAdopted () const
     Returns true if the user has adopted the document.

    Protected Attributes

    bool fCreateEntityReferenceNodes
    bool fIncludeIgnorableWhitespace
    bool fWithinElement
    bool fParseInProgress
    bool fCreateCommentNodes
    bool fDocumentAdoptedByUser
    bool fCreateSchemaInfo
    bool fDoXInclude
    XMLScanner * fScanner
    XMLChfImplementationFeatures
    DOMNodefCurrentParent
    DOMNodefCurrentNode
    DOMEntityImpl * fCurrentEntity
    DOMDocumentImpl * fDocument
    DOMDocumentTypeImpl * fDocumentType
    RefVectorOf< DOMDocumentImpl > * fDocumentVector
    GrammarResolver * fGrammarResolver
    XMLStringPool * fURIStringPool
    XMLValidatorfValidator
    MemoryManagerfMemoryManager
    XMLGrammarPoolfGrammarPool
    XMLBufferMgr fBufMgr
    XMLBuffer & fInternalSubset
    PSVIHandlerfPSVIHandler


    Detailed Description

    This class implements the Document Object Model (DOM) interface.

    It is used as a base for DOM parsers (i.e. XercesDOMParser, DOMLSParser).


    Member Enumeration Documentation

    ValScheme enum used in setValidationScheme Val_Never: Do not report validation errors.

    Val_Always: The parser will always report validation errors. Val_Auto: The parser will report validation errors only if a grammar is specified.

    See also:
    setValidationScheme
    Enumerator:
    Val_Never 
    Val_Always 
    Val_Auto 


    Constructor & Destructor Documentation

    virtual AbstractDOMParser::~AbstractDOMParser (  )  [virtual]

    Destructor.

    AbstractDOMParser::AbstractDOMParser ( XMLValidator *const   valToAdopt = 0,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager,
    XMLGrammarPool *const   gramPool = 0 
    ) [protected]

    Construct a AbstractDOMParser, with an optional validator.

    Constructor with an instance of validator class to use for validation. If you don't provide a validator, a default one will be created for you in the scanner.

    Parameters:
    valToAdopt Pointer to the validator instance to use. The parser is responsible for freeing the memory.
    gramPool Pointer to the grammar pool instance from external application (through derivatives). The parser does NOT own it.
    manager Pointer to the memory manager to be used to allocate objects.


    Member Function Documentation

    void AbstractDOMParser::reset (  ) 

    Reset the parser.

    This method resets the state of the DOM driver and makes it ready for a fresh parse run.

    DOMDocument* AbstractDOMParser::adoptDocument (  ) 

    Adopt the DOM document.

    This method returns the DOMDocument object representing the root of the document tree.

    The caller will adopt the DOMDocument and thus is responsible to call DOMDocument::release() to release the associated memory. The parser will not delete it. The ownership is transferred from the parser to the caller.

    Returns:
    The adopted DOMDocument object which represents the entire XML document.

    DOMDocument* AbstractDOMParser::getDocument (  ) 

    Get the DOM document.

    This method returns the DOMDocument object representing the root of the document tree. This object provides the primary access to the document's data.

    The returned DOMDocument object is owned by the parser.

    Returns:
    The DOMDocument object which represents the entire XML document.

    const XMLValidator& AbstractDOMParser::getValidator (  )  const

    Get a const reference to the validator.

    This method returns a reference to the parser's installed validator.

    Returns:
    A const reference to the installed validator object.

    ValSchemes AbstractDOMParser::getValidationScheme (  )  const

    This method returns an enumerated value that indicates the current validation scheme set on this parser.

    Returns:
    The ValSchemes value current set on this parser.
    See also:
    setValidationScheme

    bool AbstractDOMParser::getDoSchema (  )  const

    Get the 'do schema' flag.

    This method returns the state of the parser's schema processing flag.

    Returns:
    true, if the parser is currently configured to understand schema, false otherwise.
    See also:
    setDoSchema

    bool AbstractDOMParser::getValidationSchemaFullChecking (  )  const

    Get the 'full schema constraint checking' flag.

    This method returns the state of the parser's full schema constraint checking flag.

    Returns:
    true, if the parser is currently configured to have full schema constraint checking, false otherwise.
    See also:
    setValidationSchemaFullChecking

    bool AbstractDOMParser::getIdentityConstraintChecking (  )  const

    Get the identity constraint checking' flag.

    This method returns the state of the parser's identity constraint checking flag.

    Returns:
    true, if the parser is currently configured to have identity constraint checking, false otherwise.
    See also:
    setIdentityConstraintChecking

    XMLSize_t AbstractDOMParser::getErrorCount (  )  const

    Get error count from the last parse operation.

    This method returns the error count from the last parse operation. Note that this count is actually stored in the scanner, so this method simply returns what the scanner reports.

    Returns:
    number of errors encountered during the latest parse operation.

    bool AbstractDOMParser::getDoNamespaces (  )  const

    Get the 'do namespaces' flag.

    This method returns the state of the parser's namespace processing flag.

    Returns:
    true, if the parser is currently configured to understand namespaces, false otherwise.
    See also:
    setDoNamespaces

    bool AbstractDOMParser::getExitOnFirstFatalError (  )  const

    Get the 'exit on first error' flag.

    This method returns the state of the parser's exit-on-First-Fatal-Error flag. If this flag is true, then the parse will exit the first time it sees any non-wellformed XML or any validity error. The default state is true.

    Returns:
    true, if the parser is currently configured to exit on the first fatal error, false otherwise.
    See also:
    setExitOnFirstFatalError

    bool AbstractDOMParser::getValidationConstraintFatal (  )  const

    This method returns the state of the parser's validation-constraint-fatal flag.

    Returns:
    true, if the parser is currently configured to set validation constraint errors as fatal, false otherwise.
    See also:
    setValidationConstraintFatal

    bool AbstractDOMParser::getCreateEntityReferenceNodes (  )  const

    Get the 'include entity references' flag.

    This method returns the flag that specifies whether the parser is creating entity reference nodes in the DOM tree being produced.

    Returns:
    The state of the create entity reference node flag.
    See also:
    setCreateEntityReferenceNodes

    References fCreateEntityReferenceNodes.

    bool AbstractDOMParser::getIncludeIgnorableWhitespace (  )  const

    Get the 'include ignorable whitespace' flag.

    This method returns the state of the parser's include ignorable whitespace flag.

    Returns:
    'true' if the include ignorable whitespace flag is set on the parser, 'false' otherwise.
    See also:
    setIncludeIgnorableWhitespace

    References fIncludeIgnorableWhitespace.

    XMLCh* AbstractDOMParser::getExternalSchemaLocation (  )  const

    Get the set of Namespace/SchemaLocation that is specified externally.

    This method returns the list of Namespace/SchemaLocation that was specified using setExternalSchemaLocation.

    The parser owns the returned string, and the memory allocated for the returned string will be destroyed when the parser is deleted.

    To ensure accessibility of the returned information after the parser is deleted, callers need to copy and store the returned information somewhere else.

    Returns:
    a pointer to the list of Namespace/SchemaLocation that was specified externally. The pointer spans the same life-time as the parser. A null pointer is returned if nothing was specified externally.
    See also:
    setExternalSchemaLocation(const XMLCh* const)

    XMLCh* AbstractDOMParser::getExternalNoNamespaceSchemaLocation (  )  const

    Get the noNamespace SchemaLocation that is specified externally.

    This method returns the no target namespace XML Schema Location that was specified using setExternalNoNamespaceSchemaLocation.

    The parser owns the returned string, and the memory allocated for the returned string will be destroyed when the parser is deleted.

    To ensure accessibility of the returned information after the parser is deleted, callers need to copy and store the returned information somewhere else.

    Returns:
    a pointer to the no target namespace Schema Location that was specified externally. The pointer spans the same life-time as the parser. A null pointer is returned if nothing was specified externally.
    See also:
    setExternalNoNamespaceSchemaLocation(const XMLCh* const)

    SecurityManager* AbstractDOMParser::getSecurityManager (  )  const

    Get the SecurityManager instance attached to this parser.

    This method returns the security manager that was specified using setSecurityManager.

    The SecurityManager instance must have been specified by the application; this should not be deleted until after the parser has been deleted (or a new SecurityManager instance has been supplied to the parser).

    Returns:
    a pointer to the SecurityManager instance specified externally. A null pointer is returned if nothing was specified externally.
    See also:
    setSecurityManager

    const XMLSize_t& AbstractDOMParser::getLowWaterMark (  )  const

    Get the raw buffer low water mark for this parser.

    If the number of available bytes in the raw buffer is less than the low water mark the parser will attempt to read more data before continuing parsing. By default the value for this parameter is 100 bytes. You may want to set this parameter to 0 if you would like the parser to parse the available data immediately without potentially blocking while waiting for more date.

    Returns:
    current low water mark
    See also:
    setSecurityManager

    bool AbstractDOMParser::getLoadExternalDTD (  )  const

    Get the 'Loading External DTD' flag.

    This method returns the state of the parser's loading external DTD flag.

    Returns:
    false, if the parser is currently configured to ignore external DTD completely, true otherwise.
    See also:
    setLoadExternalDTD

    getValidationScheme

    bool AbstractDOMParser::getLoadSchema (  )  const

    Get the 'Loading Schema' flag.

    This method returns the state of the parser's loading schema flag.

    Returns:
    true, if the parser is currently configured to automatically load schemas that are not in the grammar pool, false otherwise.
    See also:
    setLoadSchema

    bool AbstractDOMParser::getCreateCommentNodes (  )  const

    Get the 'create comment node' flag.

    This method returns the flag that specifies whether the parser is creating comment nodes in the DOM tree being produced.

    Returns:
    The state of the create comment node flag.
    See also:
    setCreateCommentNodes

    References fCreateCommentNodes.

    bool AbstractDOMParser::getCalculateSrcOfs (  )  const

    Get the 'calculate src offset flag'.

    This method returns the state of the parser's src offset calculation when parsing an XML document.

    Returns:
    true, if the parser is currently configured to calculate src offsets, false otherwise.
    See also:
    setCalculateSrcOfs

    bool AbstractDOMParser::getStandardUriConformant (  )  const

    Get the 'force standard uri flag'.

    This method returns the state if the parser forces standard uri

    Returns:
    true, if the parser is currently configured to force standard uri, i.e. malformed uri will be rejected.
    See also:
    setStandardUriConformant

    PSVIHandler * AbstractDOMParser::getPSVIHandler (  ) 

    This method returns the installed PSVI handler.

    Suitable for 'lvalue' usages.

    Returns:
    The pointer to the installed PSVI handler object.

    References fPSVIHandler.

    const PSVIHandler * AbstractDOMParser::getPSVIHandler (  )  const

    This method returns the installed PSVI handler.

    Suitable for 'rvalue' usages.

    Returns:
    A const pointer to the installed PSVI handler object.

    References fPSVIHandler.

    bool AbstractDOMParser::getCreateSchemaInfo (  )  const

    Get the 'associate schema info' flag.

    This method returns the flag that specifies whether the parser is storing schema informations in the element and attribute nodes in the DOM tree being produced.

    Returns:
    The state of the associate schema info flag.
    See also:
    setCreateSchemaInfo

    References fCreateSchemaInfo.

    bool AbstractDOMParser::getDoXInclude (  )  const

    Get the 'do XInclude' flag.

    This method returns the flag that specifies whether the parser will process XInclude nodes in the DOM tree being produced.

    Returns:
    The state of the 'do XInclude' flag.
    See also:
    setDoXInclude

    References fDoXInclude.

    bool AbstractDOMParser::getGenerateSyntheticAnnotations (  )  const

    Get the 'generate synthetic annotations' flag.

    Returns:
    true, if the parser is currently configured to generate synthetic annotations, false otherwise. A synthetic XSAnnotation is created when a schema component has non-schema attributes but has no child annotations so that the non-schema attributes can be recovered under PSVI.
    See also:
    setGenerateSyntheticAnnotations

    bool AbstractDOMParser::getValidateAnnotations (  )  const

    Get the 'validate annotations' flag.

    Returns:
    true, if the parser is currently configured to validate annotations, false otherwise.
    See also:
    setValidateAnnotations

    bool AbstractDOMParser::getIgnoreAnnotations (  )  const

    Get the 'ignore annotations' flag.

    Returns:
    true, if the parser is currently configured to ignore annotations, false otherwise.
    See also:
    setIgnoreAnnotations

    bool AbstractDOMParser::getDisableDefaultEntityResolution (  )  const

    Get the 'disable default entity resolution' flag.

    Returns:
    true, if the parser is currently configured to not perform default entity resolution, false otherwise.
    See also:
    setDisableDefaultEntityResolution

    bool AbstractDOMParser::getSkipDTDValidation (  )  const

    Get the 'skip DTD validation' flag.

    Returns:
    true, if the parser is currently configured to skip DTD validation, false otherwise.
    See also:
    setSkipDTDValidation

    bool AbstractDOMParser::getHandleMultipleImports (  )  const

    Get the 'handle multiple schema imports' flag.

    Returns:
    true, if the parser is currently configured to import multiple schemas with the same namespace, false otherwise.
    See also:
    setHandleMultipleImports

    void AbstractDOMParser::setGenerateSyntheticAnnotations ( const bool  newValue  ) 

    set the 'generate synthetic annotations' flag

    Parameters:
    newValue The value for specifying whether Synthetic Annotations should be generated or not. A synthetic XSAnnotation is created when a schema component has non-schema attributes but has no child annotations so that the non-schema attributes can be recovered under PSVI.
    See also:
    getGenerateSyntheticAnnotations

    void AbstractDOMParser::setValidateAnnotations ( const bool  newValue  ) 

    set the 'validlate annotations' flag

    Parameters:
    newValue The value for specifying whether Annotations should be validated or not.
    See also:
    getValidateAnnotations

    void AbstractDOMParser::setDoNamespaces ( const bool  newState  ) 

    Set the 'do namespaces' flag.

    This method allows users to enable or disable the parser's namespace processing. When set to true, parser starts enforcing all the constraints and rules specified by the NameSpace specification.

    The parser's default state is: false.

    Parameters:
    newState The value specifying whether NameSpace rules should be enforced or not.
    See also:
    getDoNamespaces

    void AbstractDOMParser::setExitOnFirstFatalError ( const bool  newState  ) 

    Set the 'exit on first error' flag.

    This method allows users to set the parser's behaviour when it encounters the first fatal error. If set to true, the parser will exit at the first fatal error. If false, then it will report the error and continue processing.

    The default value is 'true' and the parser exits on the first fatal error.

    Parameters:
    newState The value specifying whether the parser should continue or exit when it encounters the first fatal error.
    See also:
    getExitOnFirstFatalError

    void AbstractDOMParser::setValidationConstraintFatal ( const bool  newState  ) 

    This method allows users to set the parser's behaviour when it encounters a validation constraint error.

    If set to true, and the the parser will treat validation error as fatal and will exit depends on the state of "getExitOnFirstFatalError". If false, then it will report the error and continue processing.

    Note: setting this true does not mean the validation error will be printed with the word "Fatal Error". It is still printed as "Error", but the parser will exit if "setExitOnFirstFatalError" is set to true.

    The default value is 'false'.

    Parameters:
    newState If true, the parser will exit if "setExitOnFirstFatalError" is set to true.
    See also:
    getValidationConstraintFatal

    setExitOnFirstFatalError

    void AbstractDOMParser::setCreateEntityReferenceNodes ( const bool  create  ) 

    Set the 'include entity references' flag.

    This method allows the user to specify whether the parser should create entity reference nodes in the DOM tree being produced. When the 'create' flag is true, the parser will create EntityReference nodes in the DOM tree. The EntityReference nodes and their child nodes will be read-only. When the 'create' flag is false, no EntityReference nodes will be created.

    The replacement text of the entity is included in either case, either as a child of the Entity Reference node or in place at the location of the reference.

    The default value is 'true'.

    Parameters:
    create The new state of the create entity reference nodes flag.
    See also:
    getCreateEntityReferenceNodes

    References fCreateEntityReferenceNodes.

    void AbstractDOMParser::setIncludeIgnorableWhitespace ( const bool  include  ) 

    Set the 'include ignorable whitespace' flag.

    This method allows the user to specify whether a validating parser should include ignorable whitespaces as text nodes. It has no effect on non-validating parsers which always include non-markup text.

    When set to true (also the default), ignorable whitespaces will be added to the DOM tree as text nodes. The method DOMText::isIgnorableWhitespace() will return true for those text nodes only.

    When set to false, all ignorable whitespace will be discarded and no text node is added to the DOM tree. Note: applications intended to process the "xml:space" attribute should not set this flag to false. And this flag also overrides any schema datateye whitespace facets, that is, all ignorable whitespace will be discarded even though 'preserve' is set in schema datatype whitespace facets.

    Parameters:
    include The new state of the include ignorable whitespace flag.
    See also:
    getIncludeIgnorableWhitespace

    References fIncludeIgnorableWhitespace.

    void AbstractDOMParser::setValidationScheme ( const ValSchemes  newScheme  ) 

    This method allows users to set the validation scheme to be used by this parser.

    The value is one of the ValSchemes enumerated values defined by this class:


    Val_Never - turn off validation
    Val_Always - turn on validation
    Val_Auto - turn on validation if any internal/external DTD subset have been seen

    The parser's default state is: Val_Never.

    Parameters:
    newScheme The new validation scheme to use.
    See also:
    getValidationScheme

    void AbstractDOMParser::setDoSchema ( const bool  newState  ) 

    Set the 'do schema' flag.

    This method allows users to enable or disable the parser's schema processing. When set to false, parser will not process any schema found.

    The parser's default state is: false.

    Note: If set to true, namespace processing must also be turned on.

    Parameters:
    newState The value specifying whether schema support should be enforced or not.
    See also:
    getDoSchema

    void AbstractDOMParser::setValidationSchemaFullChecking ( const bool  schemaFullChecking  ) 

    This method allows the user to turn full Schema constraint checking on/off.

    Only takes effect if Schema validation is enabled. If turned off, partial constraint checking is done.

    Full schema constraint checking includes those checking that may be time-consuming or memory intensive. Currently, particle unique attribution constraint checking and particle derivation restriction checking are controlled by this option.

    The parser's default state is: false.

    Parameters:
    schemaFullChecking True to turn on full schema constraint checking.
    See also:
    getValidationSchemaFullChecking

    void AbstractDOMParser::setIdentityConstraintChecking ( const bool  newState  ) 

    This method allows users to enable or disable the parser's identity constraint checks.

    By default, the parser does identity constraint checks. The default value is true.

    Parameters:
    newState The value specifying whether the parser should do identity constraint checks or not in the input XML document.
    See also:
    getIdentityConstraintChecking

    void AbstractDOMParser::setExternalSchemaLocation ( const XMLCh *const   schemaLocation  ) 

    This method allows the user to specify a list of schemas to use.

    If the targetNamespace of a schema specified using this method matches the targetNamespace of a schema occurring in the instance document in the schemaLocation attribute, or if the targetNamespace matches the namespace attribute of the "import" element, the schema specified by the user using this method will be used (i.e., the schemaLocation attribute in the instance document or on the "import" element will be effectively ignored).

    If this method is called more than once, only the last one takes effect.

    The syntax is the same as for schemaLocation attributes in instance documents: e.g, "http://www.example.com file_name.xsd". The user can specify more than one XML Schema in the list.

    Parameters:
    schemaLocation the list of schemas to use
    See also:
    getExternalSchemaLocation

    void AbstractDOMParser::setExternalSchemaLocation ( const char *const   schemaLocation  ) 

    This method is same as setExternalSchemaLocation(const XMLCh* const).

    It takes native char string as parameter

    Parameters:
    schemaLocation the list of schemas to use
    See also:
    setExternalSchemaLocation(const XMLCh* const)

    void AbstractDOMParser::setExternalNoNamespaceSchemaLocation ( const XMLCh *const   noNamespaceSchemaLocation  ) 

    This method allows the user to specify the no target namespace XML Schema Location externally.

    If specified, the instance document's noNamespaceSchemaLocation attribute will be effectively ignored.

    If this method is called more than once, only the last one takes effect.

    The syntax is the same as for the noNamespaceSchemaLocation attribute that may occur in an instance document: e.g."file_name.xsd".

    Parameters:
    noNamespaceSchemaLocation the XML Schema Location with no target namespace
    See also:
    getExternalNoNamespaceSchemaLocation

    void AbstractDOMParser::setExternalNoNamespaceSchemaLocation ( const char *const   noNamespaceSchemaLocation  ) 

    This method is same as setExternalNoNamespaceSchemaLocation(const XMLCh* const).

    It takes native char string as parameter

    Parameters:
    noNamespaceSchemaLocation the XML Schema Location with no target namespace
    See also:
    setExternalNoNamespaceSchemaLocation(const XMLCh* const)

    void AbstractDOMParser::setSecurityManager ( SecurityManager *const   securityManager  ) 

    This allows an application to set a SecurityManager on the parser; this object stores information that various components use to limit their consumption of system resources while processing documents.

    If this method is called more than once, only the last one takes effect. It may not be reset during a parse.

    Parameters:
    securityManager the SecurityManager instance to be used by this parser
    See also:
    getSecurityManager

    void AbstractDOMParser::setLowWaterMark ( XMLSize_t  lwm  ) 

    Set the raw buffer low water mark for this parser.

    If the number of available bytes in the raw buffer is less than the low water mark the parser will attempt to read more data before continuing parsing. By default the value for this parameter is 100 bytes. You may want to set this parameter to 0 if you would like the parser to parse the available data immediately without potentially blocking while waiting for more date.

    Parameters:
    lwm new low water mark
    See also:
    getSecurityManager

    void AbstractDOMParser::setLoadExternalDTD ( const bool  newState  ) 

    Set the 'Loading External DTD' flag.

    This method allows users to enable or disable the loading of external DTD. When set to false, the parser will ignore any external DTD completely if the validationScheme is set to Val_Never.

    The parser's default state is: true.

    This flag is ignored if the validationScheme is set to Val_Always or Val_Auto.

    Parameters:
    newState The value specifying whether external DTD should be loaded or not.
    See also:
    getLoadExternalDTD

    setValidationScheme

    void AbstractDOMParser::setLoadSchema ( const bool  newState  ) 

    Set the 'Loading Schema' flag.

    This method allows users to enable or disable the loading of schemas. When set to false, the parser not attempt to load schemas beyond querying the grammar pool for them.

    The parser's default state is: true.

    Parameters:
    newState The value specifying whether schemas should be loaded if they're not found in the grammar pool.
    See also:
    getLoadSchema

    setDoSchema

    void AbstractDOMParser::setCreateCommentNodes ( const bool  create  ) 

    Set the 'create comment nodes' flag.

    This method allows the user to specify whether the parser should create comment nodes in the DOM tree being produced.

    The default value is 'true'.

    Parameters:
    create The new state of the create comment nodes flag.
    See also:
    getCreateCommentNodes

    References fCreateCommentNodes.

    void AbstractDOMParser::setCalculateSrcOfs ( const bool  newState  ) 

    Enable/disable src offset calculation.

    This method allows users to enable/disable src offset calculation. Disabling the calculation will improve performance.

    The parser's default state is: false.

    Parameters:
    newState The value specifying whether we should enable or disable src offset calculation
    See also:
    getCalculateSrcOfs

    void AbstractDOMParser::setStandardUriConformant ( const bool  newState  ) 

    Force standard uri.

    This method allows users to tell the parser to force standard uri conformance.

    The parser's default state is: false.

    Parameters:
    newState The value specifying whether the parser should reject malformed URI.
    See also:
    getStandardUriConformant

    void AbstractDOMParser::useScanner ( const XMLCh *const   scannerName  ) 

    Set the scanner to use when scanning the XML document.

    This method allows users to set the scanner to use when scanning a given XML document.

    Parameters:
    scannerName The name of the desired scanner

    void AbstractDOMParser::useImplementation ( const XMLCh *const   implementationFeatures  ) 

    Set the implementation to use when creating the document.

    This method allows users to set the implementation to use to create the document when parseing.

    Parameters:
    implementationFeatures The names of the desired features the implementation should have.

    References MemoryManager::deallocate(), fImplementationFeatures, fMemoryManager, and XMLString::replicate().

    virtual void AbstractDOMParser::setPSVIHandler ( PSVIHandler *const   handler  )  [virtual]

    This method installs the user specified PSVI handler on the parser.

    Parameters:
    handler A pointer to the PSVI handler to be called when the parser comes across 'PSVI' events as per the schema specification.

    void AbstractDOMParser::setCreateSchemaInfo ( const bool  newState  ) 

    Set the 'associate schema info' flag.

    This method allows users to specify whether the parser should store schema informations in the element and attribute nodes in the DOM tree being produced.

    Parameters:
    newState The state to set
    See also:
    getCreateSchemaInfo

    void AbstractDOMParser::setDoXInclude ( const bool  newState  ) 

    Set the 'do XInclude' flag.

    This method allows users to specify whether the parser should process XInclude nodes in the DOM tree being produced.

    Parameters:
    newState The state to set
    See also:
    getDoXInclude

    References fDoXInclude.

    void AbstractDOMParser::setIgnoreAnnotations ( const bool  newValue  ) 

    Set the 'ignore annotation' flag.

    This method gives users the option to not generate XSAnnotations when "traversing" a schema.

    The parser's default state is false

    Parameters:
    newValue The state to set

    void AbstractDOMParser::setDisableDefaultEntityResolution ( const bool  newValue  ) 

    Set the 'disable default entity resolution' flag.

    This method gives users the option to not perform default entity resolution. If the user's resolveEntity method returns NULL the parser will try to resolve the entity on its own. When this option is set to true, the parser will not attempt to resolve the entity when the resolveEntity method returns NULL.

    The parser's default state is false

    Parameters:
    newValue The state to set
    See also:
    EntityResolver

    void AbstractDOMParser::setSkipDTDValidation ( const bool  newValue  ) 

    Set the 'skip DTD validation' flag.

    This method gives users the option to skip DTD validation only when schema validation is on (i.e. when performing validation, we will ignore the DTD, except for entities, when schema validation is enabled).

    NOTE: This option is ignored if schema validation is disabled.

    The parser's default state is false

    Parameters:
    newValue The state to set

    void AbstractDOMParser::setHandleMultipleImports ( const bool  newValue  ) 

    Set the 'handle multiple schema imports' flag.

    This method gives users the ability to import multiple schemas that have the same namespace.

    NOTE: This option is ignored if schema validation is disabled.

    The parser's default state is false

    Parameters:
    newValue The state to set

    void AbstractDOMParser::parse ( const InputSource source  ) 

    Parse via an input source object.

    This method invokes the parsing process on the XML file specified by the InputSource parameter. This API is borrowed from the SAX Parser interface.

    Parameters:
    source A const reference to the InputSource object which points to the XML file to be parsed.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    XMLException An exception from the parser or client handler code.
    DOMException A DOM exception as per DOM spec.
    See also:
    InputSource::InputSource

    void AbstractDOMParser::parse ( const XMLCh *const   systemId  ) 

    Parse via a file path or URL.

    This method invokes the parsing process on the XML file specified by the Unicode string parameter 'systemId'. This method is borrowed from the SAX Parser interface.

    Parameters:
    systemId A const XMLCh pointer to the Unicode string which contains the path to the XML file to be parsed.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    XMLException An exception from the parser or client handler code.
    DOMException A DOM exception as per DOM spec.
    See also:
    parse(InputSource,...)

    void AbstractDOMParser::parse ( const char *const   systemId  ) 

    Parse via a file path or URL (in the local code page).

    This method invokes the parsing process on the XML file specified by the native char* string parameter 'systemId'.

    Parameters:
    systemId A const char pointer to a native string which contains the path to the XML file to be parsed.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    XMLException An exception from the parser or client handler code.
    DOMException A DOM exception as per DOM spec.
    See also:
    parse(InputSource,...)

    bool AbstractDOMParser::parseFirst ( const XMLCh *const   systemId,
    XMLPScanToken &  toFill 
    )

    Begin a progressive parse operation.

    This method is used to start a progressive parse on a XML file. To continue parsing, subsequent calls must be to the parseNext method.

    It scans through the prolog and returns a token to be used on subsequent scanNext() calls. If the return value is true, then the token is legal and ready for further use. If it returns false, then the scan of the prolog failed and the token is not going to work on subsequent scanNext() calls.

    Parameters:
    systemId A pointer to a Unicode string representing the path to the XML file to be parsed.
    toFill A token maintaing state information to maintain internal consistency between invocation of 'parseNext' calls.
    Returns:
    'true', if successful in parsing the prolog. It indicates the user can go ahead with parsing the rest of the file. It returns 'false' to indicate that the parser could not parse the prolog.
    See also:
    parseNext

    parseFirst(char*,...)

    parseFirst(InputSource&,...)

    bool AbstractDOMParser::parseFirst ( const char *const   systemId,
    XMLPScanToken &  toFill 
    )

    Begin a progressive parse operation.

    This method is used to start a progressive parse on a XML file. To continue parsing, subsequent calls must be to the parseNext method.

    It scans through the prolog and returns a token to be used on subsequent scanNext() calls. If the return value is true, then the token is legal and ready for further use. If it returns false, then the scan of the prolog failed and the token is not going to work on subsequent scanNext() calls.

    Parameters:
    systemId A pointer to a regular native string representing the path to the XML file to be parsed.
    toFill A token maintaing state information to maintain internal consistency between invocation of 'parseNext' calls.
    Returns:
    'true', if successful in parsing the prolog. It indicates the user can go ahead with parsing the rest of the file. It returns 'false' to indicate that the parser could not parse the prolog.
    See also:
    parseNext

    parseFirst(XMLCh*,...)

    parseFirst(InputSource&,...)

    bool AbstractDOMParser::parseFirst ( const InputSource source,
    XMLPScanToken &  toFill 
    )

    Begin a progressive parse operation.

    This method is used to start a progressive parse on a XML file. To continue parsing, subsequent calls must be to the parseNext method.

    It scans through the prolog and returns a token to be used on subsequent scanNext() calls. If the return value is true, then the token is legal and ready for further use. If it returns false, then the scan of the prolog failed and the token is not going to work on subsequent scanNext() calls.

    Parameters:
    source A const reference to the InputSource object which points to the XML file to be parsed.
    toFill A token maintaing state information to maintain internal consistency between invocation of 'parseNext' calls.
    Returns:
    'true', if successful in parsing the prolog. It indicates the user can go ahead with parsing the rest of the file. It returns 'false' to indicate that the parser could not parse the prolog.
    See also:
    parseNext

    parseFirst(XMLCh*,...)

    parseFirst(char*,...)

    bool AbstractDOMParser::parseNext ( XMLPScanToken &  token  ) 

    Continue a progressive parse operation.

    This method is used to continue with progressive parsing of XML files started by a call to 'parseFirst' method.

    It parses the XML file and stops as soon as it comes across a XML token (as defined in the XML specification).

    Parameters:
    token A token maintaing state information to maintain internal consistency between invocation of 'parseNext' calls.
    Returns:
    'true', if successful in parsing the next XML token. It indicates the user can go ahead with parsing the rest of the file. It returns 'false' to indicate that the parser could not find next token as per the XML specification production rule.
    See also:
    parseFirst(XMLCh*,...)

    parseFirst(char*,...)

    parseFirst(InputSource&,...)

    void AbstractDOMParser::parseReset ( XMLPScanToken &  token  ) 

    Reset the parser after a progressive parse.

    If a progressive parse loop exits before the end of the document is reached, the parser has no way of knowing this. So it will leave open any files or sockets or memory buffers that were in use at the time that the parse loop exited.

    The next parse operation will cause these open files and such to be closed, but the next parse operation might occur at some unknown future point. To avoid this problem, you should reset the parser if you exit the loop early.

    If you exited because of an error, then this cleanup will be done for you. Its only when you exit the file prematurely of your own accord, because you've found what you wanted in the file most likely.

    Parameters:
    token A token maintaing state information to maintain internal consistency between invocation of 'parseNext' calls.
    See also:
    parseFirst(XMLCh*,...)

    parseFirst(char*,...)

    parseFirst(InputSource&,...)

    virtual void AbstractDOMParser::handleElementPSVI ( const XMLCh *const   localName,
    const XMLCh *const   uri,
    PSVIElement elementInfo 
    ) [virtual]

    Receive notification of the PSVI properties of an element.

    The scanner will issue this call after the XMLDocumentHandler endElement call. Since the scanner will issue the psviAttributes call immediately after reading the start tag of an element, all element content will be effectively bracketed by these two calls.

    Parameters:
    localName The name of the element whose end tag was just parsed.
    uri The namespace to which the element is bound
    elementInfo Object containing the element's PSVI properties

    Implements PSVIHandler.

    virtual void AbstractDOMParser::handlePartialElementPSVI ( const XMLCh *const   localName,
    const XMLCh *const   uri,
    PSVIElement elementInfo 
    ) [virtual]

    Receive notification of partial PSVI properties of an element.

    This callback is made right after the psviAttributes call for non-empty element.

    The PSVIElement passed in has all fields properly set and it can be safely accessed the same way as the one passed in handleElementPSVI. However, fields listed below always have default values.

    getValidity() PSVIItem::VALIDITY_NOTKNOWN getValidationAttemped() PSVIItem::VALIDATION_NONE getMemberTypeDefinition() 0 getSchemaNormalizedValue() 0 getCanonicalRepresentation() 0 getNotationDeclaration() 0

    Parameters:
    localName The name of the element upon which start tag these attributes were encountered.
    uri The namespace to which the element is bound
    elementInfo Object containing the element's partial PSVI properties

    Reimplemented from PSVIHandler.

    virtual void AbstractDOMParser::handleAttributesPSVI ( const XMLCh *const   localName,
    const XMLCh *const   uri,
    PSVIAttributeList psviAttributes 
    ) [virtual]

    Enables PSVI information about attributes to be passed back to the application.

    This callback will be made on *all* elements; on elements with no attributes, the final parameter will be null.

    Parameters:
    localName The name of the element upon which start tag these attributes were encountered.
    uri The namespace to which the element is bound
    psviAttributes Object containing the attributes' PSVI properties with information to identify them.

    Implements PSVIHandler.

    virtual void AbstractDOMParser::docCharacters ( const XMLCh *const   chars,
    const XMLSize_t  length,
    const bool  cdataSection 
    ) [virtual]

    Handle document character events.

    This method is used to report all the characters scanned by the parser. This DOM implementation stores this data in the appropriate DOM node, creating one if necessary.

    Parameters:
    chars A const pointer to a Unicode string representing the character data.
    length The length of the Unicode string returned in 'chars'.
    cdataSection A flag indicating if the characters represent content from the CDATA section.

    Implements XMLDocumentHandler.

    virtual void AbstractDOMParser::docComment ( const XMLCh *const   comment  )  [virtual]

    Handle a document comment event.

    This method is used to report any comments scanned by the parser. A new comment node is created which stores this data.

    Parameters:
    comment A const pointer to a null terminated Unicode string representing the comment text.

    Implements XMLDocumentHandler.

    virtual void AbstractDOMParser::docPI ( const XMLCh *const   target,
    const XMLCh *const   data 
    ) [virtual]

    Handle a document PI event.

    This method is used to report any PI scanned by the parser. A new PI node is created and appended as a child of the current node in the tree.

    Parameters:
    target A const pointer to a Unicode string representing the target of the PI declaration.
    data A const pointer to a Unicode string representing the data of the PI declaration. See the PI production rule in the XML specification for details.

    Implements XMLDocumentHandler.

    virtual void AbstractDOMParser::endDocument (  )  [virtual]

    Handle the end of document event.

    This method is used to indicate the end of the current document.

    Implements XMLDocumentHandler.

    virtual void AbstractDOMParser::endElement ( const XMLElementDecl elemDecl,
    const unsigned int  urlId,
    const bool  isRoot,
    const XMLCh *const   elemPrefix 
    ) [virtual]

    Handle and end of element event.

    This method is used to indicate the end tag of an element. The DOM parser pops the current element off the top of the element stack, and make it the new current element.

    Parameters:
    elemDecl A const reference to the object containing element declaration information.
    urlId An id referring to the namespace prefix, if namespaces setting is switched on.
    isRoot A flag indicating whether this element was the root element.
    elemPrefix A const pointer to a Unicode string containing the namespace prefix for this element. Applicable only when namespace processing is enabled.

    Implements XMLDocumentHandler.

    virtual void AbstractDOMParser::endEntityReference ( const XMLEntityDecl entDecl  )  [virtual]

    Handle and end of entity reference event.

    This method is used to indicate that an end of an entity reference was just scanned.

    Parameters:
    entDecl A const reference to the object containing the entity declaration information.

    Implements XMLDocumentHandler.

    virtual void AbstractDOMParser::ignorableWhitespace ( const XMLCh *const   chars,
    const XMLSize_t  length,
    const bool  cdataSection 
    ) [virtual]

    Handle an ignorable whitespace vent.

    This method is used to report all the whitespace characters, which are determined to be 'ignorable'. This distinction between characters is only made, if validation is enabled.

    Any whitespace before content is ignored. If the current node is already of type DOMNode::TEXT_NODE, then these whitespaces are appended, otherwise a new Text node is created which stores this data. Essentially all contiguous ignorable characters are collected in one node.

    Parameters:
    chars A const pointer to a Unicode string representing the ignorable whitespace character data.
    length The length of the Unicode string 'chars'.
    cdataSection A flag indicating if the characters represent content from the CDATA section.

    Implements XMLDocumentHandler.

    virtual void AbstractDOMParser::resetDocument (  )  [virtual]

    Handle a document reset event.

    This method allows the user installed Document Handler to 'reset' itself, freeing all the memory resources. The scanner calls this method before starting a new parse event.

    Implements XMLDocumentHandler.

    virtual void AbstractDOMParser::startDocument (  )  [virtual]

    Handle a start document event.

    This method is used to report the start of the parsing process.

    Implements XMLDocumentHandler.

    virtual void AbstractDOMParser::startElement ( const XMLElementDecl elemDecl,
    const unsigned int  urlId,
    const XMLCh *const   elemPrefix,
    const RefVectorOf< XMLAttr > &  attrList,
    const XMLSize_t  attrCount,
    const bool  isEmpty,
    const bool  isRoot 
    ) [virtual]

    Handle a start element event.

    This method is used to report the start of an element. It is called at the end of the element, by which time all attributes specified are also parsed. A new DOM Element node is created along with as many attribute nodes as required. This new element is added appended as a child of the current node in the tree, and then replaces it as the current node (if the isEmpty flag is false.)

    Parameters:
    elemDecl A const reference to the object containing element declaration information.
    urlId An id referring to the namespace prefix, if namespaces setting is switched on.
    elemPrefix A const pointer to a Unicode string containing the namespace prefix for this element. Applicable only when namespace processing is enabled.
    attrList A const reference to the object containing the list of attributes just scanned for this element.
    attrCount A count of number of attributes in the list specified by the parameter 'attrList'.
    isEmpty A flag indicating whether this is an empty element or not. If empty, then no endElement() call will be made.
    isRoot A flag indicating whether this element was the root element.
    See also:
    DocumentHandler::startElement

    Implements XMLDocumentHandler.

    virtual void AbstractDOMParser::startEntityReference ( const XMLEntityDecl entDecl  )  [virtual]

    Handle a start entity reference event.

    This method is used to indicate the start of an entity reference. If the expand entity reference flag is true, then a new DOM Entity reference node is created.

    Parameters:
    entDecl A const reference to the object containing the entity declaration information.

    Implements XMLDocumentHandler.

    virtual void AbstractDOMParser::XMLDecl ( const XMLCh *const   versionStr,
    const XMLCh *const   encodingStr,
    const XMLCh *const   standaloneStr,
    const XMLCh *const   actualEncStr 
    ) [virtual]

    Handle an XMLDecl event.

    This method is used to report the XML decl scanned by the parser. Refer to the XML specification to see the meaning of parameters.

    This method is a no-op for this DOM implementation.

    Parameters:
    versionStr A const pointer to a Unicode string representing version string value.
    encodingStr A const pointer to a Unicode string representing the encoding string value.
    standaloneStr A const pointer to a Unicode string representing the standalone string value.
    actualEncStr A const pointer to a Unicode string representing the actual encoding string value.

    Implements XMLDocumentHandler.

    virtual void AbstractDOMParser::attDef ( const DTDElementDecl &  elemDecl,
    const DTDAttDef &  attDef,
    const bool  ignoring 
    ) [virtual]

    virtual void AbstractDOMParser::doctypeComment ( const XMLCh *const   comment  )  [virtual]

    virtual void AbstractDOMParser::doctypeDecl ( const DTDElementDecl &  elemDecl,
    const XMLCh *const   publicId,
    const XMLCh *const   systemId,
    const bool  hasIntSubset,
    const bool  hasExtSubset = false 
    ) [virtual]

    virtual void AbstractDOMParser::doctypePI ( const XMLCh *const   target,
    const XMLCh *const   data 
    ) [virtual]

    virtual void AbstractDOMParser::doctypeWhitespace ( const XMLCh *const   chars,
    const XMLSize_t  length 
    ) [virtual]

    virtual void AbstractDOMParser::elementDecl ( const DTDElementDecl &  decl,
    const bool  isIgnored 
    ) [virtual]

    virtual void AbstractDOMParser::endAttList ( const DTDElementDecl &  elemDecl  )  [virtual]

    virtual void AbstractDOMParser::endIntSubset (  )  [virtual]

    virtual void AbstractDOMParser::endExtSubset (  )  [virtual]

    virtual void AbstractDOMParser::entityDecl ( const DTDEntityDecl &  entityDecl,
    const bool  isPEDecl,
    const bool  isIgnored 
    ) [virtual]

    virtual void AbstractDOMParser::resetDocType (  )  [virtual]

    virtual void AbstractDOMParser::notationDecl ( const XMLNotationDecl notDecl,
    const bool  isIgnored 
    ) [virtual]

    virtual void AbstractDOMParser::startAttList ( const DTDElementDecl &  elemDecl  )  [virtual]

    virtual void AbstractDOMParser::startIntSubset (  )  [virtual]

    virtual void AbstractDOMParser::startExtSubset (  )  [virtual]

    virtual void AbstractDOMParser::TextDecl ( const XMLCh *const   versionStr,
    const XMLCh *const   encodingStr 
    ) [virtual]

    virtual DOMCDATASection* AbstractDOMParser::createCDATASection ( const XMLCh ,
    XMLSize_t   
    ) [protected, virtual]

    virtual DOMText* AbstractDOMParser::createText ( const XMLCh ,
    XMLSize_t   
    ) [protected, virtual]

    virtual DOMElement* AbstractDOMParser::createElement ( const XMLCh name  )  [protected, virtual]

    virtual DOMElement* AbstractDOMParser::createElementNS ( const XMLCh namespaceURI,
    const XMLCh elemPrefix,
    const XMLCh localName,
    const XMLCh qName 
    ) [protected, virtual]

    virtual DOMAttr* AbstractDOMParser::createAttr ( const XMLCh name  )  [protected, virtual]

    virtual DOMAttr* AbstractDOMParser::createAttrNS ( const XMLCh namespaceURI,
    const XMLCh elemPrefix,
    const XMLCh localName,
    const XMLCh qName 
    ) [protected, virtual]

    DOMNode * AbstractDOMParser::getCurrentNode (  )  [protected]

    Get the current DOM node.

    This provides derived classes with access to the current node, i.e. the node to which new nodes are being added.

    References fCurrentNode.

    XMLScanner * AbstractDOMParser::getScanner (  )  const [protected]

    Get the XML scanner.

    This provides derived classes with access to the XML scanner.

    References fScanner.

    GrammarResolver * AbstractDOMParser::getGrammarResolver (  )  const [protected]

    Get the Grammar resolver.

    This provides derived classes with access to the grammar resolver.

    References fGrammarResolver.

    bool AbstractDOMParser::getParseInProgress (  )  const [protected]

    Get the parse in progress flag.

    This provides derived classes with access to the parse in progress flag.

    References fParseInProgress.

    MemoryManager * AbstractDOMParser::getMemoryManager (  )  const [protected]

    References fMemoryManager.

    void AbstractDOMParser::setCurrentNode ( DOMNode toSet  )  [protected]

    Set the current DOM node.

    This method sets the current node maintained inside the parser to the one specified.

    Parameters:
    toSet The DOM node which will be the current node.

    References fCurrentNode.

    void AbstractDOMParser::setDocument ( DOMDocument toSet  )  [protected]

    Set the document node.

    This method sets the DOM Document node to the one specified.

    Parameters:
    toSet The new DOM Document node for this XML document.

    void AbstractDOMParser::setParseInProgress ( const bool  toSet  )  [protected]

    Set the parse in progress flag.

    This method sets the parse in progress flag to true or false.

    Parameters:
    toSet The value of the flag to be set.

    References fParseInProgress.

    void AbstractDOMParser::resetPool (  )  [protected]

    bool AbstractDOMParser::isDocumentAdopted (  )  const [protected]

    Returns true if the user has adopted the document.


    Member Data Documentation

    Referenced by getDoXInclude(), and setDoXInclude().

    XMLScanner* AbstractDOMParser::fScanner [protected]

    Referenced by getScanner().

    DOMEntityImpl* AbstractDOMParser::fCurrentEntity [protected]

    DOMDocumentImpl* AbstractDOMParser::fDocument [protected]

    DOMDocumentTypeImpl* AbstractDOMParser::fDocumentType [protected]

    RefVectorOf<DOMDocumentImpl>* AbstractDOMParser::fDocumentVector [protected]

    GrammarResolver* AbstractDOMParser::fGrammarResolver [protected]

    Referenced by getGrammarResolver().

    XMLStringPool* AbstractDOMParser::fURIStringPool [protected]

    XMLBufferMgr AbstractDOMParser::fBufMgr [protected]

    XMLBuffer& AbstractDOMParser::fInternalSubset [protected]


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_func_0x67.html0000644000175000017500000022564111363620005022201 0ustar borisboris Xerces-C++: Class Members - Functions
     

    - g -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSWildcard.html0000644000175000017500000005456211363620006021427 0ustar borisboris Xerces-C++: XSWildcard Class Reference

    XSWildcard Class Reference

    Inheritance diagram for XSWildcard:

    XSObject XMemory

    List of all members.

    Public Types

    enum  NAMESPACE_CONSTRAINT { NSCONSTRAINT_ANY = 1, NSCONSTRAINT_NOT = 2, NSCONSTRAINT_DERIVATION_LIST = 3 }
    enum  PROCESS_CONTENTS { PC_STRICT = 1, PC_SKIP = 2, PC_LAX = 3 }

    Public Member Functions

    Constructors
     XSWildcard (SchemaAttDef *const attWildCard, XSAnnotation *const annot, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     The default constructor.
     XSWildcard (const ContentSpecNode *const elmWildCard, XSAnnotation *const annot, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
    Destructor
     ~XSWildcard ()
    XSWildcard methods
    NAMESPACE_CONSTRAINT getConstraintType () const
     Namespace constraint: A constraint type: any, not, list.
    StringListgetNsConstraintList ()
     Namespace constraint.
    PROCESS_CONTENTS getProcessContents () const
     [process contents]: one of skip, lax or strict.
    XSAnnotationgetAnnotation () const
     Optional.

    Protected Attributes

    NAMESPACE_CONSTRAINT fConstraintType
    PROCESS_CONTENTS fProcessContents
    StringListfNsConstraintList
    XSAnnotationfAnnotation


    Member Enumeration Documentation

    Enumerator:
    NSCONSTRAINT_ANY  Namespace Constraint: any namespace is allowed.
    NSCONSTRAINT_NOT  Namespace Constraint: namespaces in the list are not allowed.
    NSCONSTRAINT_DERIVATION_LIST  Namespace Constraint: namespaces in the list are allowed.

    Enumerator:
    PC_STRICT  There must be a top-level declaration for the item available, or the item must have an xsi:type, and the item must be valid as appropriate.
    PC_SKIP  No constraints at all: the item must simply be well-formed XML.
    PC_LAX  If the item, or any items among its [children] is an element information item, has a uniquely determined declaration available, it must be valid with respect to that definition, that is, validate where you can, don't worry when you can't.


    Constructor & Destructor Documentation

    XSWildcard::XSWildcard ( SchemaAttDef *const   attWildCard,
    XSAnnotation *const   annot,
    XSModel *const   xsModel,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    The default constructor.

    Parameters:
    attWildCard 
    annot 
    xsModel 
    manager The configurable memory manager

    XSWildcard::XSWildcard ( const ContentSpecNode *const   elmWildCard,
    XSAnnotation *const   annot,
    XSModel *const   xsModel,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    XSWildcard::~XSWildcard (  ) 


    Member Function Documentation

    XSWildcard::NAMESPACE_CONSTRAINT XSWildcard::getConstraintType (  )  const

    Namespace constraint: A constraint type: any, not, list.

    References fConstraintType.

    StringList * XSWildcard::getNsConstraintList (  ) 

    Namespace constraint.

    For constraintType NSCONSTRAINT_DERIVATION_LIST, the list contains allowed namespaces. For constraintType NSCONSTRAINT_NOT, the list contains disallowed namespaces.

    References fNsConstraintList.

    XSWildcard::PROCESS_CONTENTS XSWildcard::getProcessContents (  )  const

    [process contents]: one of skip, lax or strict.

    Valid constants values are: PC_SKIP, PC_LAX, PC_STRICT.

    References fProcessContents.

    XSAnnotation * XSWildcard::getAnnotation (  )  const

    Optional.

    An [annotation].

    References fAnnotation.


    Member Data Documentation


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_func_0x66.html0000644000175000017500000001366711363620005022203 0ustar borisboris Xerces-C++: Class Members - Functions
     

    - f -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLException_8hpp-source.html0000644000175000017500000007663411363620005023154 0ustar borisboris Xerces-C++: XMLException.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classPSVIAttributeList.html0000644000175000017500000003645611363620006022726 0ustar borisboris Xerces-C++: PSVIAttributeList Class Reference

    PSVIAttributeList Class Reference

    Inheritance diagram for PSVIAttributeList:

    XMemory

    List of all members.

    Public Member Functions

    Constructors
     PSVIAttributeList (MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     The default constructor.
    Destructor
     ~PSVIAttributeList ()
    PSVIAttributeList methods
    XMLSize_t getLength () const
    PSVIAttributegetAttributePSVIAtIndex (const XMLSize_t index)
    const XMLChgetAttributeNameAtIndex (const XMLSize_t index)
    const XMLChgetAttributeNamespaceAtIndex (const XMLSize_t index)
    PSVIAttributegetAttributePSVIByName (const XMLCh *attrName, const XMLCh *attrNamespace)
    PSVIAttributegetPSVIAttributeToFill (const XMLCh *attrName, const XMLCh *attrNS)
     methods needed by implementation
    void reset ()
     reset the list


    Constructor & Destructor Documentation

    PSVIAttributeList::PSVIAttributeList ( MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager  ) 

    The default constructor.

    Parameters:
    manager The configurable memory manager

    PSVIAttributeList::~PSVIAttributeList (  ) 


    Member Function Documentation

    XMLSize_t PSVIAttributeList::getLength (  )  const

    PSVIAttribute* PSVIAttributeList::getAttributePSVIAtIndex ( const XMLSize_t  index  ) 

    const XMLCh* PSVIAttributeList::getAttributeNameAtIndex ( const XMLSize_t  index  ) 

    const XMLCh* PSVIAttributeList::getAttributeNamespaceAtIndex ( const XMLSize_t  index  ) 

    PSVIAttribute* PSVIAttributeList::getAttributePSVIByName ( const XMLCh attrName,
    const XMLCh attrNamespace 
    )

    PSVIAttribute * PSVIAttributeList::getPSVIAttributeToFill ( const XMLCh attrName,
    const XMLCh attrNS 
    )

    methods needed by implementation

    returns a PSVI attribute of undetermined state and given name/namespace and makes that object part of the internal list. Intended to be called during validation of an element.

    Parameters:
    attrName name of this attribute
    attrNS URI of the attribute
    Returns:
    new, uninitialized, PSVIAttribute object

    References PSVIAttributeStorage::fAttributeName, PSVIAttributeStorage::fAttributeNamespace, and PSVIAttributeStorage::fPSVIAttribute.

    void PSVIAttributeList::reset (  ) 

    reset the list


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/BinInputStream_8hpp-source.html0000644000175000017500000002030511363620004023520 0ustar borisboris Xerces-C++: BinInputStream.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSFacet.html0000644000175000017500000003670111363620006020713 0ustar borisboris Xerces-C++: XSFacet Class Reference

    XSFacet Class Reference

    Inheritance diagram for XSFacet:

    XSObject XMemory

    List of all members.

    Public Member Functions

    Constructors
     XSFacet (XSSimpleTypeDefinition::FACET facetKind, const XMLCh *const lexicalValue, bool isFixed, XSAnnotation *const annot, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     The default constructor.
    Destructor
     ~XSFacet ()
    XSFacet methods
    XSSimpleTypeDefinition::FACET getFacetKind () const
    const XMLChgetLexicalFacetValue () const
    bool isFixed () const
     Check whether a facet value is fixed.
    XSAnnotationgetAnnotation () const

    Protected Attributes

    XSSimpleTypeDefinition::FACET fFacetKind
    bool fIsFixed
    const XMLChfLexicalValue
    XSAnnotationfAnnotation


    Constructor & Destructor Documentation

    XSFacet::XSFacet ( XSSimpleTypeDefinition::FACET  facetKind,
    const XMLCh *const   lexicalValue,
    bool  isFixed,
    XSAnnotation *const   annot,
    XSModel *const   xsModel,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    The default constructor.

    Parameters:
    facetKind 
    lexicalValue 
    isFixed 
    annot 
    xsModel 
    manager The configurable memory manager

    XSFacet::~XSFacet (  ) 


    Member Function Documentation

    XSSimpleTypeDefinition::FACET XSFacet::getFacetKind (  )  const

    Returns:
    An indication as to the facet's type; see XSSimpleTypeDefinition::FACET

    References fFacetKind.

    const XMLCh * XSFacet::getLexicalFacetValue (  )  const

    Returns:
    Returns a value of a constraining facet.

    References fLexicalValue.

    bool XSFacet::isFixed (  )  const

    Check whether a facet value is fixed.

    References fIsFixed.

    XSAnnotation * XSFacet::getAnnotation (  )  const

    Returns:
    an annotation

    References fAnnotation.


    Member Data Documentation

    bool XSFacet::fIsFixed [protected]

    Referenced by isFixed().

    const XMLCh* XSFacet::fLexicalValue [protected]

    Referenced by getLexicalFacetValue().

    Referenced by getAnnotation().


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classStDOMNode.html0000644000175000017500000003026411363620006021150 0ustar borisboris Xerces-C++: StDOMNode< T > Class Template Reference

    StDOMNode< T > Class Template Reference

    List of all members.

    Public Member Functions

     StDOMNode (T *node=(T *) 0)
     StDOMNode (const StDOMNode &stNode)
     ~StDOMNode ()
    T * operator= (T *node)
    bool operator!= (T *node) const
    bool operator== (T *node) const
    T & operator* ()
    const T & operator* () const
    T * operator-> () const
     operator T * () const
    void ClearNode ()

    template<class T>
    class StDOMNode< T >


    Constructor & Destructor Documentation

    template<class T>
    StDOMNode< T >::StDOMNode ( T *  node = (T*)0  ) 

    template<class T>
    StDOMNode< T >::StDOMNode ( const StDOMNode< T > &  stNode  ) 

    template<class T>
    StDOMNode< T >::~StDOMNode (  ) 


    Member Function Documentation

    template<class T>
    T* StDOMNode< T >::operator= ( T *  node  ) 

    template<class T>
    bool StDOMNode< T >::operator!= ( T *  node  )  const

    template<class T>
    bool StDOMNode< T >::operator== ( T *  node  )  const

    template<class T>
    T& StDOMNode< T >::operator* (  ) 

    template<class T>
    const T& StDOMNode< T >::operator* (  )  const

    template<class T>
    T* StDOMNode< T >::operator-> (  )  const

    template<class T>
    StDOMNode< T >::operator T * (  )  const

    template<class T>
    void StDOMNode< T >::ClearNode (  ) 


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classPSVIAttribute.png0000644000175000017500000000072511363620006021700 0ustar borisboris‰PNG  IHDRWˆ`Žj¥PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfkIDATX…íÖ]n„ `xÙg† 'hºÚ'ï„Î"¨˜j²Û bû #n̸ç|ùrßiº|6F®‘:qfæHÐ'1P7ÒJÔ""¯Ù`ºLF&@m1ö1›q”ºƒ™‘@…csÌŠy1¯6ÀrCF¯û,{"wH+W{8(§ðþ’Žñ>ñûýD¯Ç§>Ýòè_¾/¯›ðcYnÂ7î†aÆ ÿ‚-¯ëbÎvšx`'¿+±$;rNãœ,AÎÀ-QÊùÝ0fÖ%®Â©gÖ 4ÁÛó»Æ §tŒ¥Î„ú„Œ çw|\ ÿ[^w)~÷/¿aÆÿ+†ù\˜_ïc±à]qžº<æJ}¨*°þ3¬Ø¯ýR5XG‚i­à© ¼œ÷à ”ØAÆr¡¤£ʘY×Xbjñ’×5 Å%ö®x4ßÎì¼mZÆ3´a¬ ­¼NÉ/€ù¾÷½nßùüƒ36ù‚ÂwnIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/XMLEntityDecl_8hpp.html0000644000175000017500000000472411363620005021753 0ustar borisboris Xerces-C++: XMLEntityDecl.hpp File Reference

    XMLEntityDecl.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLEntityDecl
     This class defines that core information that defines an XML entity, no matter what validator is used. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_XMLENTITYDECL_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XMLENTITYDECL_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_eval.html0000644000175000017500000002655111363620005021410 0ustar borisboris Xerces-C++: Class Members - Enumerator
     

    - a -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLValidator.png0000644000175000017500000000060011363620006021531 0ustar borisboris‰PNG  IHDRZPkWPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfIDATH‰í”]à €á¥Ïà ìn°]hO½ÿÒjíÏ¢ÛLÖD1*öáQÓà>–·Ûõi'ÝËì‹h¯"&\I{é^Î’ytÎé©û¸e_ À9ï8Ìb{BKÀ‰=ʉoüÈœÑ)ímÜvªDÚ¿¡ƒEÉ1mõÂæ;ÔdLaÝe½ºÛ:¹þÏ?¶]÷B·ádÿôôlFÓÔŒnZ“NwºÓ®§¹¦UœˆW¦q±"ÔÌâ@r8S",JNC z“úF’}BVcº’iÒNóJ-c–´¡a¦-+£!óh‰©è%m«5­»Ñ7î}Ó"h™ƽ©·ÒÌA•"P¬ YM>»ËNEW½/[©¤$[Ç!IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/XMLInitializer_8hpp.html0000644000175000017500000000466411363620005022175 0ustar borisboris Xerces-C++: XMLInitializer.hpp File Reference

    XMLInitializer.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLInitializer
     Utilities that must be implemented in a class-specific way. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_XMLINITIALIZER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XMLINITIALIZER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/globals_0x73.html0000644000175000017500000000612711363620007020574 0ustar borisboris Xerces-C++: Class Members
    Here is a list of all file members with links to the files they belong to:

    - s -


    Generated on Wed Apr 21 17:55:51 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/LocalFileInputSource_8hpp.html0000644000175000017500000000513011363620005023351 0ustar borisboris Xerces-C++: LocalFileInputSource.hpp File Reference

    LocalFileInputSource.hpp File Reference

    Go to the source code of this file.

    Classes

    class  LocalFileInputSource
     This class is a derivative of the standard InputSource class. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_LOCALFILEINPUTSOURCE_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_LOCALFILEINPUTSOURCE_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMAttr-members.html0000644000175000017500000004414411363620005022317 0ustar borisboris Xerces-C++: Member List

    DOMAttr Member List

    This is the complete list of members for DOMAttr, including all inherited members.

    appendChild(DOMNode *newChild)=0DOMNode [pure virtual]
    ATTRIBUTE_NODE enum valueDOMNode
    CDATA_SECTION_NODE enum valueDOMNode
    cloneNode(bool deep) const =0DOMNode [pure virtual]
    COMMENT_NODE enum valueDOMNode
    compareDocumentPosition(const DOMNode *other) const =0DOMNode [pure virtual]
    DOCUMENT_FRAGMENT_NODE enum valueDOMNode
    DOCUMENT_NODE enum valueDOMNode
    DOCUMENT_POSITION_CONTAINED_BY enum valueDOMNode
    DOCUMENT_POSITION_CONTAINS enum valueDOMNode
    DOCUMENT_POSITION_DISCONNECTED enum valueDOMNode
    DOCUMENT_POSITION_FOLLOWING enum valueDOMNode
    DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC enum valueDOMNode
    DOCUMENT_POSITION_PRECEDING enum valueDOMNode
    DOCUMENT_TYPE_NODE enum valueDOMNode
    DocumentPosition enum nameDOMNode
    DOMAttr()DOMAttr [protected]
    DOMAttr(const DOMAttr &other)DOMAttr [protected]
    DOMNode()DOMNode [protected]
    DOMNode(const DOMNode &)DOMNode [protected]
    ELEMENT_NODE enum valueDOMNode
    ENTITY_NODE enum valueDOMNode
    ENTITY_REFERENCE_NODE enum valueDOMNode
    getAttributes() const =0DOMNode [pure virtual]
    getBaseURI() const =0DOMNode [pure virtual]
    getChildNodes() const =0DOMNode [pure virtual]
    getFeature(const XMLCh *feature, const XMLCh *version) const =0DOMNode [pure virtual]
    getFirstChild() const =0DOMNode [pure virtual]
    getLastChild() const =0DOMNode [pure virtual]
    getLocalName() const =0DOMNode [pure virtual]
    getName() const =0DOMAttr [pure virtual]
    getNamespaceURI() const =0DOMNode [pure virtual]
    getNextSibling() const =0DOMNode [pure virtual]
    getNodeName() const =0DOMNode [pure virtual]
    getNodeType() const =0DOMNode [pure virtual]
    getNodeValue() const =0DOMNode [pure virtual]
    getOwnerDocument() const =0DOMNode [pure virtual]
    getOwnerElement() const =0DOMAttr [pure virtual]
    getParentNode() const =0DOMNode [pure virtual]
    getPrefix() const =0DOMNode [pure virtual]
    getPreviousSibling() const =0DOMNode [pure virtual]
    getSchemaTypeInfo() const =0DOMAttr [pure virtual]
    getSpecified() const =0DOMAttr [pure virtual]
    getTextContent() const =0DOMNode [pure virtual]
    getUserData(const XMLCh *key) const =0DOMNode [pure virtual]
    getValue() const =0DOMAttr [pure virtual]
    hasAttributes() const =0DOMNode [pure virtual]
    hasChildNodes() const =0DOMNode [pure virtual]
    insertBefore(DOMNode *newChild, DOMNode *refChild)=0DOMNode [pure virtual]
    isDefaultNamespace(const XMLCh *namespaceURI) const =0DOMNode [pure virtual]
    isEqualNode(const DOMNode *arg) const =0DOMNode [pure virtual]
    isId() const =0DOMAttr [pure virtual]
    isSameNode(const DOMNode *other) const =0DOMNode [pure virtual]
    isSupported(const XMLCh *feature, const XMLCh *version) const =0DOMNode [pure virtual]
    lookupNamespaceURI(const XMLCh *prefix) const =0DOMNode [pure virtual]
    lookupPrefix(const XMLCh *namespaceURI) const =0DOMNode [pure virtual]
    NodeType enum nameDOMNode
    normalize()=0DOMNode [pure virtual]
    NOTATION_NODE enum valueDOMNode
    PROCESSING_INSTRUCTION_NODE enum valueDOMNode
    release()=0DOMNode [pure virtual]
    removeChild(DOMNode *oldChild)=0DOMNode [pure virtual]
    replaceChild(DOMNode *newChild, DOMNode *oldChild)=0DOMNode [pure virtual]
    setNodeValue(const XMLCh *nodeValue)=0DOMNode [pure virtual]
    setPrefix(const XMLCh *prefix)=0DOMNode [pure virtual]
    setTextContent(const XMLCh *textContent)=0DOMNode [pure virtual]
    setUserData(const XMLCh *key, void *data, DOMUserDataHandler *handler)=0DOMNode [pure virtual]
    setValue(const XMLCh *value)=0DOMAttr [pure virtual]
    TEXT_NODE enum valueDOMNode
    ~DOMAttr()DOMAttr [virtual]
    ~DOMNode()DOMNode [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMLSParser-members.html0000644000175000017500000002107411363620005023075 0ustar borisboris Xerces-C++: Member List

    DOMLSParser Member List

    This is the complete list of members for DOMLSParser, including all inherited members.

    abort()=0DOMLSParser [pure virtual]
    ACTION_APPEND_AS_CHILDREN enum valueDOMLSParser
    ACTION_INSERT_AFTER enum valueDOMLSParser
    ACTION_INSERT_BEFORE enum valueDOMLSParser
    ACTION_REPLACE enum valueDOMLSParser
    ACTION_REPLACE_CHILDREN enum valueDOMLSParser
    ActionType enum nameDOMLSParser
    DOMLSParser()DOMLSParser [protected]
    getAsync() const =0DOMLSParser [pure virtual]
    getBusy() const =0DOMLSParser [pure virtual]
    getDomConfig()=0DOMLSParser [pure virtual]
    getFilter() const =0DOMLSParser [pure virtual]
    getGrammar(const XMLCh *const nameSpaceKey) const =0DOMLSParser [pure virtual]
    getRootGrammar() const =0DOMLSParser [pure virtual]
    getSrcOffset() const =0DOMLSParser [pure virtual]
    getURIText(unsigned int uriId) const =0DOMLSParser [pure virtual]
    loadGrammar(const DOMLSInput *source, const Grammar::GrammarType grammarType, const bool toCache=false)=0DOMLSParser [pure virtual]
    loadGrammar(const XMLCh *const systemId, const Grammar::GrammarType grammarType, const bool toCache=false)=0DOMLSParser [pure virtual]
    loadGrammar(const char *const systemId, const Grammar::GrammarType grammarType, const bool toCache=false)=0DOMLSParser [pure virtual]
    parse(const DOMLSInput *source)=0DOMLSParser [pure virtual]
    parseURI(const XMLCh *const uri)=0DOMLSParser [pure virtual]
    parseURI(const char *const uri)=0DOMLSParser [pure virtual]
    parseWithContext(const DOMLSInput *source, DOMNode *contextNode, const ActionType action)=0DOMLSParser [pure virtual]
    release()=0DOMLSParser [pure virtual]
    resetCachedGrammarPool()=0DOMLSParser [pure virtual]
    resetDocumentPool()=0DOMLSParser [pure virtual]
    setFilter(DOMLSParserFilter *const filter)=0DOMLSParser [pure virtual]
    ~DOMLSParser()DOMLSParser [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/Parser_8hpp-source.html0000644000175000017500000002450411363620004022055 0ustar borisboris Xerces-C++: Parser.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSNamedMap-members.html0000644000175000017500000001145711363620006023004 0ustar borisboris Xerces-C++: Member List

    XSNamedMap< TVal > Member List

    This is the complete list of members for XSNamedMap< TVal >, including all inherited members.

    addElement(TVal *const toAdd, const XMLCh *key1, const XMLCh *key2)XSNamedMap< TVal >
    getLength() const XSNamedMap< TVal >
    item(XMLSize_t index)XSNamedMap< TVal >
    item(XMLSize_t index) const XSNamedMap< TVal >
    itemByName(const XMLCh *compNamespace, const XMLCh *localName)XSNamedMap< TVal >
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    XMemory()XMemory [protected]
    XSNamedMap(const XMLSize_t maxElems, const XMLSize_t modulus, XMLStringPool *uriStringPool, const bool adoptElems, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSNamedMap< TVal >
    ~XSNamedMap()XSNamedMap< TVal >


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XSElementDeclaration_8hpp.html0000644000175000017500000000446111363620005023336 0ustar borisboris Xerces-C++: XSElementDeclaration.hpp File Reference

    XSElementDeclaration.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XSElementDeclaration

    Defines

    #define XERCESC_INCLUDE_GUARD_XSELEMENTDECLARATION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XSELEMENTDECLARATION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLResourceIdentifier_8hpp.html0000644000175000017500000000447311363620005023502 0ustar borisboris Xerces-C++: XMLResourceIdentifier.hpp File Reference

    XMLResourceIdentifier.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLResourceIdentifier

    Defines

    #define XERCESC_INCLUDE_GUARD_XMLRESOURCEIDENTIFIER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XMLRESOURCEIDENTIFIER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/AttributeList_8hpp.html0000644000175000017500000000464211363620005022124 0ustar borisboris Xerces-C++: AttributeList.hpp File Reference

    AttributeList.hpp File Reference

    Go to the source code of this file.

    Classes

    class  AttributeList
     Interface for an element's attribute specifications. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_ATTRIBUTELIST_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_ATTRIBUTELIST_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMDocumentRange_8hpp-source.html0000644000175000017500000001702011363620004023707 0ustar borisboris Xerces-C++: DOMDocumentRange.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMCDATASection_8hpp-source.html0000644000175000017500000002001111363620004023307 0ustar borisboris Xerces-C++: DOMCDATASection.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classLocalFileInputSource-members.html0000644000175000017500000002027311363620006025076 0ustar borisboris Xerces-C++: Member List

    LocalFileInputSource Member List

    This is the complete list of members for LocalFileInputSource, including all inherited members.

    getEncoding() const InputSource [virtual]
    getIssueFatalErrorIfNotFound() const InputSource [virtual]
    getMemoryManager() const InputSource
    getPublicId() const InputSource [virtual]
    getSystemId() const InputSource [virtual]
    InputSource(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)InputSource [protected]
    InputSource(const XMLCh *const systemId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)InputSource [protected]
    InputSource(const XMLCh *const systemId, const XMLCh *const publicId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)InputSource [protected]
    InputSource(const char *const systemId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)InputSource [protected]
    InputSource(const char *const systemId, const char *const publicId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)InputSource [protected]
    LocalFileInputSource(const XMLCh *const basePath, const XMLCh *const relativePath, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)LocalFileInputSource
    LocalFileInputSource(const XMLCh *const filePath, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)LocalFileInputSource
    makeStream() const LocalFileInputSource [virtual]
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    setEncoding(const XMLCh *const encodingStr)InputSource [virtual]
    setIssueFatalErrorIfNotFound(const bool flag)InputSource [virtual]
    setPublicId(const XMLCh *const publicId)InputSource [virtual]
    setSystemId(const XMLCh *const systemId)InputSource [virtual]
    XMemory()XMemory [protected]
    ~InputSource()InputSource [virtual]
    ~LocalFileInputSource()LocalFileInputSource


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classPanicHandler-members.html0000644000175000017500000001240711363620006023373 0ustar borisboris Xerces-C++: Member List

    PanicHandler Member List

    This is the complete list of members for PanicHandler, including all inherited members.

    getPanicReasonString(const PanicHandler::PanicReasons reason)PanicHandler [static]
    panic(const PanicHandler::PanicReasons reason)=0PanicHandler [pure virtual]
    Panic_AllStaticInitErr enum valuePanicHandler
    Panic_CantFindLib enum valuePanicHandler
    Panic_CantLoadMsgDomain enum valuePanicHandler
    Panic_MutexErr enum valuePanicHandler
    Panic_NoDefTranscoder enum valuePanicHandler
    Panic_NoTransService enum valuePanicHandler
    Panic_SynchronizationErr enum valuePanicHandler
    Panic_SystemInit enum valuePanicHandler
    Panic_UnknownMsgDomain enum valuePanicHandler
    PanicHandler()PanicHandler [protected]
    PanicReasons enum namePanicHandler
    PanicReasons_Count enum valuePanicHandler
    ~PanicHandler()PanicHandler [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLAbstractDoubleFloat_8hpp.html0000644000175000017500000000451611363620005023572 0ustar borisboris Xerces-C++: XMLAbstractDoubleFloat.hpp File Reference

    XMLAbstractDoubleFloat.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLAbstractDoubleFloat

    Defines

    #define XERCESC_INCLUDE_GUARD_XML_ABSTRACT_DOUBLE_FLOAT_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XML_ABSTRACT_DOUBLE_FLOAT_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLUniDefs_8hpp.html0000644000175000017500000030645311363620005021250 0ustar borisboris Xerces-C++: XMLUniDefs.hpp File Reference

    XMLUniDefs.hpp File Reference

    Go to the source code of this file.

    Defines

    #define XERCESC_INCLUDE_GUARD_XMLUNIDEFS_HPP

    Variables

    XERCES_CPP_NAMESPACE_BEGIN
    const XMLCh 
    chNull = 0x00
    const XMLCh chHTab = 0x09
    const XMLCh chLF = 0x0A
    const XMLCh chVTab = 0x0B
    const XMLCh chFF = 0x0C
    const XMLCh chCR = 0x0D
    const XMLCh chAmpersand = 0x26
    const XMLCh chAsterisk = 0x2A
    const XMLCh chAt = 0x40
    const XMLCh chBackSlash = 0x5C
    const XMLCh chBang = 0x21
    const XMLCh chCaret = 0x5E
    const XMLCh chCloseAngle = 0x3E
    const XMLCh chCloseCurly = 0x7D
    const XMLCh chCloseParen = 0x29
    const XMLCh chCloseSquare = 0x5D
    const XMLCh chColon = 0x3A
    const XMLCh chComma = 0x2C
    const XMLCh chDash = 0x2D
    const XMLCh chDollarSign = 0x24
    const XMLCh chDoubleQuote = 0x22
    const XMLCh chEqual = 0x3D
    const XMLCh chForwardSlash = 0x2F
    const XMLCh chGrave = 0x60
    const XMLCh chNEL = 0x85
    const XMLCh chOpenAngle = 0x3C
    const XMLCh chOpenCurly = 0x7B
    const XMLCh chOpenParen = 0x28
    const XMLCh chOpenSquare = 0x5B
    const XMLCh chPercent = 0x25
    const XMLCh chPeriod = 0x2E
    const XMLCh chPipe = 0x7C
    const XMLCh chPlus = 0x2B
    const XMLCh chPound = 0x23
    const XMLCh chQuestion = 0x3F
    const XMLCh chSingleQuote = 0x27
    const XMLCh chSpace = 0x20
    const XMLCh chSemiColon = 0x3B
    const XMLCh chTilde = 0x7E
    const XMLCh chUnderscore = 0x5F
    const XMLCh chSwappedUnicodeMarker = XMLCh(0xFFFE)
    const XMLCh chUnicodeMarker = XMLCh(0xFEFF)
    const XMLCh chDigit_0 = 0x30
    const XMLCh chDigit_1 = 0x31
    const XMLCh chDigit_2 = 0x32
    const XMLCh chDigit_3 = 0x33
    const XMLCh chDigit_4 = 0x34
    const XMLCh chDigit_5 = 0x35
    const XMLCh chDigit_6 = 0x36
    const XMLCh chDigit_7 = 0x37
    const XMLCh chDigit_8 = 0x38
    const XMLCh chDigit_9 = 0x39
    const XMLCh chLatin_A = 0x41
    const XMLCh chLatin_B = 0x42
    const XMLCh chLatin_C = 0x43
    const XMLCh chLatin_D = 0x44
    const XMLCh chLatin_E = 0x45
    const XMLCh chLatin_F = 0x46
    const XMLCh chLatin_G = 0x47
    const XMLCh chLatin_H = 0x48
    const XMLCh chLatin_I = 0x49
    const XMLCh chLatin_J = 0x4A
    const XMLCh chLatin_K = 0x4B
    const XMLCh chLatin_L = 0x4C
    const XMLCh chLatin_M = 0x4D
    const XMLCh chLatin_N = 0x4E
    const XMLCh chLatin_O = 0x4F
    const XMLCh chLatin_P = 0x50
    const XMLCh chLatin_Q = 0x51
    const XMLCh chLatin_R = 0x52
    const XMLCh chLatin_S = 0x53
    const XMLCh chLatin_T = 0x54
    const XMLCh chLatin_U = 0x55
    const XMLCh chLatin_V = 0x56
    const XMLCh chLatin_W = 0x57
    const XMLCh chLatin_X = 0x58
    const XMLCh chLatin_Y = 0x59
    const XMLCh chLatin_Z = 0x5A
    const XMLCh chLatin_a = 0x61
    const XMLCh chLatin_b = 0x62
    const XMLCh chLatin_c = 0x63
    const XMLCh chLatin_d = 0x64
    const XMLCh chLatin_e = 0x65
    const XMLCh chLatin_f = 0x66
    const XMLCh chLatin_g = 0x67
    const XMLCh chLatin_h = 0x68
    const XMLCh chLatin_i = 0x69
    const XMLCh chLatin_j = 0x6A
    const XMLCh chLatin_k = 0x6B
    const XMLCh chLatin_l = 0x6C
    const XMLCh chLatin_m = 0x6D
    const XMLCh chLatin_n = 0x6E
    const XMLCh chLatin_o = 0x6F
    const XMLCh chLatin_p = 0x70
    const XMLCh chLatin_q = 0x71
    const XMLCh chLatin_r = 0x72
    const XMLCh chLatin_s = 0x73
    const XMLCh chLatin_t = 0x74
    const XMLCh chLatin_u = 0x75
    const XMLCh chLatin_v = 0x76
    const XMLCh chLatin_w = 0x77
    const XMLCh chLatin_x = 0x78
    const XMLCh chLatin_y = 0x79
    const XMLCh chLatin_z = 0x7A
    const XMLCh chYenSign = 0xA5
    const XMLCh chWonSign = 0x20A9
    const XMLCh chLineSeparator = 0x2028
    const XMLCh chParagraphSeparator = 0x2029


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XMLUNIDEFS_HPP


    Variable Documentation

    const XMLCh chAmpersand = 0x26

    const XMLCh chAsterisk = 0x2A

    const XMLCh chAt = 0x40

    const XMLCh chBackSlash = 0x5C

    const XMLCh chBang = 0x21

    const XMLCh chCaret = 0x5E

    const XMLCh chCloseAngle = 0x3E

    const XMLCh chCloseCurly = 0x7D

    const XMLCh chCloseParen = 0x29

    const XMLCh chCloseSquare = 0x5D

    const XMLCh chComma = 0x2C

    const XMLCh chCR = 0x0D

    const XMLCh chDash = 0x2D

    const XMLCh chDigit_0 = 0x30

    const XMLCh chDigit_1 = 0x31

    const XMLCh chDigit_2 = 0x32

    const XMLCh chDigit_3 = 0x33

    const XMLCh chDigit_4 = 0x34

    const XMLCh chDigit_5 = 0x35

    const XMLCh chDigit_6 = 0x36

    const XMLCh chDigit_7 = 0x37

    const XMLCh chDigit_8 = 0x38

    const XMLCh chDigit_9 = 0x39

    const XMLCh chDollarSign = 0x24

    const XMLCh chDoubleQuote = 0x22

    const XMLCh chEqual = 0x3D

    const XMLCh chFF = 0x0C

    const XMLCh chForwardSlash = 0x2F

    const XMLCh chGrave = 0x60

    const XMLCh chHTab = 0x09

    const XMLCh chLatin_a = 0x61

    const XMLCh chLatin_A = 0x41

    const XMLCh chLatin_b = 0x62

    const XMLCh chLatin_B = 0x42

    const XMLCh chLatin_c = 0x63

    const XMLCh chLatin_C = 0x43

    const XMLCh chLatin_d = 0x64

    const XMLCh chLatin_D = 0x44

    const XMLCh chLatin_e = 0x65

    const XMLCh chLatin_E = 0x45

    const XMLCh chLatin_f = 0x66

    const XMLCh chLatin_F = 0x46

    const XMLCh chLatin_g = 0x67

    const XMLCh chLatin_G = 0x47

    const XMLCh chLatin_h = 0x68

    const XMLCh chLatin_H = 0x48

    const XMLCh chLatin_i = 0x69

    const XMLCh chLatin_I = 0x49

    const XMLCh chLatin_j = 0x6A

    const XMLCh chLatin_J = 0x4A

    const XMLCh chLatin_k = 0x6B

    const XMLCh chLatin_K = 0x4B

    const XMLCh chLatin_l = 0x6C

    const XMLCh chLatin_L = 0x4C

    const XMLCh chLatin_m = 0x6D

    const XMLCh chLatin_M = 0x4D

    const XMLCh chLatin_n = 0x6E

    const XMLCh chLatin_N = 0x4E

    const XMLCh chLatin_o = 0x6F

    const XMLCh chLatin_O = 0x4F

    const XMLCh chLatin_p = 0x70

    const XMLCh chLatin_P = 0x50

    const XMLCh chLatin_q = 0x71

    const XMLCh chLatin_Q = 0x51

    const XMLCh chLatin_r = 0x72

    const XMLCh chLatin_R = 0x52

    const XMLCh chLatin_s = 0x73

    const XMLCh chLatin_S = 0x53

    const XMLCh chLatin_t = 0x74

    const XMLCh chLatin_T = 0x54

    const XMLCh chLatin_u = 0x75

    const XMLCh chLatin_U = 0x55

    const XMLCh chLatin_v = 0x76

    const XMLCh chLatin_V = 0x56

    const XMLCh chLatin_w = 0x77

    const XMLCh chLatin_W = 0x57

    const XMLCh chLatin_x = 0x78

    const XMLCh chLatin_X = 0x58

    const XMLCh chLatin_y = 0x79

    const XMLCh chLatin_Y = 0x59

    const XMLCh chLatin_z = 0x7A

    const XMLCh chLatin_Z = 0x5A

    const XMLCh chLF = 0x0A

    const XMLCh chLineSeparator = 0x2028

    const XMLCh chNEL = 0x85

    XERCES_CPP_NAMESPACE_BEGIN const XMLCh chNull = 0x00

    const XMLCh chOpenAngle = 0x3C

    const XMLCh chOpenCurly = 0x7B

    const XMLCh chOpenParen = 0x28

    const XMLCh chOpenSquare = 0x5B

    const XMLCh chParagraphSeparator = 0x2029

    const XMLCh chPercent = 0x25

    const XMLCh chPeriod = 0x2E

    const XMLCh chPipe = 0x7C

    const XMLCh chPlus = 0x2B

    const XMLCh chPound = 0x23

    const XMLCh chQuestion = 0x3F

    const XMLCh chSemiColon = 0x3B

    const XMLCh chSingleQuote = 0x27

    const XMLCh chSpace = 0x20

    const XMLCh chTilde = 0x7E

    const XMLCh chUnderscore = 0x5F

    Referenced by XMLChar1_0::isXMLLetter().

    const XMLCh chUnicodeMarker = XMLCh(0xFEFF)

    const XMLCh chVTab = 0x0B

    const XMLCh chWonSign = 0x20A9

    const XMLCh chYenSign = 0xA5


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMLSSerializer.html0000644000175000017500000007422311363620005022326 0ustar borisboris Xerces-C++: DOMLSSerializer Class Reference

    DOMLSSerializer Class Reference

    List of all members.

    Public Member Functions

    Destructor
    virtual ~DOMLSSerializer ()
     Destructor.
    Functions introduced in DOM Level 3
    virtual DOMConfigurationgetDomConfig ()=0
     The DOMConfiguration object used by the LSSerializer when serializing a DOM node.
    virtual void setNewLine (const XMLCh *const newLine)=0
     The end-of-line sequence of characters to be used in the XML being written out.
    virtual void setFilter (DOMLSSerializerFilter *filter)=0
     When the application provides a filter, the serializer will call out to the filter before serializing each Node.
    virtual const XMLChgetNewLine () const =0
     Return the end-of-line sequence of characters to be used in the XML being written out.
    virtual DOMLSSerializerFiltergetFilter () const =0
     Return the WriterFilter used.
    virtual bool write (const DOMNode *nodeToWrite, DOMLSOutput *const destination)=0
     Write out the specified node as described above in the description of DOMLSSerializer.
    virtual bool writeToURI (const DOMNode *nodeToWrite, const XMLCh *uri)=0
     Write out the specified node as described above in the description of DOMLSSerializer.
    virtual XMLChwriteToString (const DOMNode *nodeToWrite, MemoryManager *manager=NULL)=0
     Serialize the specified node as described above in the description of DOMLSSerializer.
    Non-standard Extension
    virtual void release ()=0
     Called to indicate that this Writer is no longer in use and that the implementation may relinquish any resources associated with it.

    Protected Member Functions

    Hidden constructors
     DOMLSSerializer ()


    Constructor & Destructor Documentation

    DOMLSSerializer::DOMLSSerializer (  )  [protected]

    virtual DOMLSSerializer::~DOMLSSerializer (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual DOMConfiguration* DOMLSSerializer::getDomConfig (  )  [pure virtual]

    The DOMConfiguration object used by the LSSerializer when serializing a DOM node.

    In addition to the parameters recognized in on the DOMConfiguration interface defined in [DOM Level 3 Core], the DOMConfiguration objects for DOMLSSerializer add or modify the following parameters:

    "canonical-form" true [optional] Writes the document according to the rules specified in [Canonical XML]. In addition to the behavior described in "canonical-form" [DOM Level 3 Core], setting this parameter to true will set the parameters "format-pretty-print", "discard-default-content", and "xml-declaration", to false. Setting one of those parameters to true will set this parameter to false. Serializing an XML 1.1 document when "canonical-form" is true will generate a fatal error. false [required] (default) Do not canonicalize the output.

    "discard-default-content" true [required] (default) Use the DOMAttr::getSpecified attribute to decide what attributes should be discarded. Note that some implementations might use whatever information available to the implementation (i.e. XML schema, DTD, the DOMAttr::getSpecified attribute, and so on) to determine what attributes and content to discard if this parameter is set to true. false [required] Keep all attributes and all content.

    "format-pretty-print" true [optional] Formatting the output by adding whitespace to produce a pretty-printed, indented, human-readable form. The exact form of the transformations is not specified by this specification. Pretty-printing changes the content of the document and may affect the validity of the document, validating implementations should preserve validity. false [required] (default) Don't pretty-print the result.

    "ignore-unknown-character-denormalizations" true [required] (default) If, while verifying full normalization when [XML 1.1] is supported, a character is encountered for which the normalization properties cannot be determined, then raise a "unknown-character-denormalization" warning (instead of raising an error, if this parameter is not set) and ignore any possible denormalizations caused by these characters. false [optional] Report a fatal error if a character is encountered for which the processor cannot determine the normalization properties.

    "normalize-characters" This parameter is equivalent to the one defined by DOMConfiguration in [DOM Level 3 Core]. Unlike in the Core, the default value for this parameter is true. While DOM implementations are not required to support fully normalizing the characters in the document according to appendix E of [XML 1.1], this parameter must be activated by default if supported.

    "xml-declaration" true [required] (default) If a DOMDocument, DOMElement, or DOMEntity node is serialized, the XML declaration, or text declaration, should be included. The version (DOMDocument::xmlVersion if the document is a Level 3 document and the version is non-null, otherwise use the value "1.0"), and the output encoding (see DOMLSSerializer::write for details on how to find the output encoding) are specified in the serialized XML declaration. false [required] Do not serialize the XML and text declarations. Report a "xml-declaration-needed" warning if this will cause problems (i.e. the serialized data is of an XML version other than [XML 1.0], or an encoding would be needed to be able to re-parse the serialized data).

    "error-handler" Contains a DOMErrorHandler object. If an error is encountered in the document, the implementation will call back the DOMErrorHandler registered using this parameter. The implementation may provide a default DOMErrorHandler object. When called, DOMError::relatedData will contain the closest node to where the error occurred. If the implementation is unable to determine the node where the error occurs, DOMError::relatedData will contain the DOMDocument node. Mutations to the document from within an error handler will result in implementation dependent behavior.

    Returns:
    The pointer to the configuration object.
    Since:
    DOM Level 3

    virtual void DOMLSSerializer::setNewLine ( const XMLCh *const   newLine  )  [pure virtual]

    The end-of-line sequence of characters to be used in the XML being written out.

    The only permitted values are these:

    null
    Use a default end-of-line sequence. DOM implementations should choose the default to match the usual convention for text files in the environment being used. Implementations must choose a default sequence that matches one of those allowed by 2.11 "End-of-Line Handling". However, Xerces-C++ always uses LF when this property is set to null since otherwise automatic translation of LF to CR-LF on Windows for text files would result in such files containing CR-CR-LF. If you need Windows-style end of line sequences in your output, consider writing to a file opened in text mode or explicitly set this property to CR-LF.
    CR
    The carriage-return character (#xD).
    CR-LF
    The carriage-return and line-feed characters (#xD #xA).
    LF
    The line-feed character (#xA).

    The default value for this attribute is null.

    Parameters:
    newLine The end-of-line sequence of characters to be used.
    See also:
    getNewLine
    Since:
    DOM Level 3

    virtual void DOMLSSerializer::setFilter ( DOMLSSerializerFilter filter  )  [pure virtual]

    When the application provides a filter, the serializer will call out to the filter before serializing each Node.

    Attribute nodes are never passed to the filter. The filter implementation can choose to remove the node from the stream or to terminate the serialization early.

    Parameters:
    filter The writer filter to be used.
    See also:
    getFilter
    Since:
    DOM Level 3

    virtual const XMLCh* DOMLSSerializer::getNewLine (  )  const [pure virtual]

    Return the end-of-line sequence of characters to be used in the XML being written out.

    Returns:
    The end-of-line sequence of characters to be used.
    See also:
    setNewLine
    Since:
    DOM Level 3

    virtual DOMLSSerializerFilter* DOMLSSerializer::getFilter (  )  const [pure virtual]

    Return the WriterFilter used.

    Returns:
    The writer filter used.
    See also:
    setFilter
    Since:
    DOM Level 3

    virtual bool DOMLSSerializer::write ( const DOMNode nodeToWrite,
    DOMLSOutput *const   destination 
    ) [pure virtual]

    Write out the specified node as described above in the description of DOMLSSerializer.

    Writing a Document or Entity node produces a serialized form that is well formed XML. Writing other node types produces a fragment of text in a form that is not fully defined by this document, but that should be useful to a human for debugging or diagnostic purposes.

    Parameters:
    nodeToWrite The Document or Entity node to be written. For other node types, something sensible should be written, but the exact serialized form is not specified.
    destination The destination for the data to be written.
    Returns:
    Returns true if node was successfully serialized and false in case a failure occured and the failure wasn't canceled by the error handler.
    Since:
    DOM Level 3

    virtual bool DOMLSSerializer::writeToURI ( const DOMNode nodeToWrite,
    const XMLCh uri 
    ) [pure virtual]

    Write out the specified node as described above in the description of DOMLSSerializer.

    Writing a Document or Entity node produces a serialized form that is well formed XML. Writing other node types produces a fragment of text in a form that is not fully defined by this document, but that should be useful to a human for debugging or diagnostic purposes.

    Parameters:
    nodeToWrite The Document or Entity node to be written. For other node types, something sensible should be written, but the exact serialized form is not specified.
    uri The destination for the data to be written.
    Returns:
    Returns true if node was successfully serialized and false in case a failure occured and the failure wasn't canceled by the error handler.
    Since:
    DOM Level 3

    virtual XMLCh* DOMLSSerializer::writeToString ( const DOMNode nodeToWrite,
    MemoryManager manager = NULL 
    ) [pure virtual]

    Serialize the specified node as described above in the description of DOMLSSerializer.

    The result of serializing the node is returned as a string. Writing a Document or Entity node produces a serialized form that is well formed XML. Writing other node types produces a fragment of text in a form that is not fully defined by this document, but that should be useful to a human for debugging or diagnostic purposes.

    Parameters:
    nodeToWrite The node to be written.
    manager The memory manager to be used to allocate the result string. If NULL is used, the memory manager used to construct the serializer will be used.
    Returns:
    Returns the serialized data, or null in case a failure occured and the failure wasn't canceled by the error handler. The returned string is always in UTF-16. The encoding information available in DOMLSSerializer is ignored in writeToString().
    Since:
    DOM Level 3

    virtual void DOMLSSerializer::release (  )  [pure virtual]

    Called to indicate that this Writer is no longer in use and that the implementation may relinquish any resources associated with it.

    Access to a released object will lead to unexpected result.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/Wrapper4DOMLSInput_8hpp-source.html0000644000175000017500000003216311363620004024144 0ustar borisboris Xerces-C++: Wrapper4DOMLSInput.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLEntityResolver-members.html0000644000175000017500000000451311363620006024421 0ustar borisboris Xerces-C++: Member List

    XMLEntityResolver Member List

    This is the complete list of members for XMLEntityResolver, including all inherited members.

    resolveEntity(XMLResourceIdentifier *resourceIdentifier)=0XMLEntityResolver [pure virtual]
    XMLEntityResolver()XMLEntityResolver [protected]
    ~XMLEntityResolver()XMLEntityResolver [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/PSVIItem_8hpp.html0000644000175000017500000000427111363620005020723 0ustar borisboris Xerces-C++: PSVIItem.hpp File Reference

    PSVIItem.hpp File Reference

    Go to the source code of this file.

    Classes

    class  PSVIItem

    Defines

    #define XERCESC_INCLUDE_GUARD_PSVIITEM_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_PSVIITEM_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classBinOutputStream.html0000644000175000017500000001475111363620005022523 0ustar borisboris Xerces-C++: BinOutputStream Class Reference

    BinOutputStream Class Reference

    Inheritance diagram for BinOutputStream:

    XMemory

    List of all members.

    Public Member Functions

    virtual ~BinOutputStream ()
    virtual XMLFilePos curPos () const =0
    virtual void writeBytes (const XMLByte *const toGo, const XMLSize_t maxToWrite)=0

    Protected Member Functions

     BinOutputStream ()


    Constructor & Destructor Documentation

    virtual BinOutputStream::~BinOutputStream (  )  [virtual]

    BinOutputStream::BinOutputStream (  )  [protected]


    Member Function Documentation

    virtual XMLFilePos BinOutputStream::curPos (  )  const [pure virtual]

    virtual void BinOutputStream::writeBytes ( const XMLByte *const   toGo,
    const XMLSize_t  maxToWrite 
    ) [pure virtual]


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSComplexTypeDefinition-members.html0000644000175000017500000004070711363620006025604 0ustar borisboris Xerces-C++: Member List

    XSComplexTypeDefinition Member List

    This is the complete list of members for XSComplexTypeDefinition, including all inherited members.

    COMPLEX_TYPE enum valueXSTypeDefinition
    CONTENT_TYPE enum nameXSComplexTypeDefinition
    CONTENTTYPE_ELEMENT enum valueXSComplexTypeDefinition
    CONTENTTYPE_EMPTY enum valueXSComplexTypeDefinition
    CONTENTTYPE_MIXED enum valueXSComplexTypeDefinition
    CONTENTTYPE_SIMPLE enum valueXSComplexTypeDefinition
    derivedFrom(const XMLCh *typeNamespace, const XMLCh *name)XSTypeDefinition
    derivedFromType(const XSTypeDefinition *const ancestorType)XSComplexTypeDefinition [virtual]
    fBaseTypeXSTypeDefinition [protected]
    fComplexTypeInfoXSComplexTypeDefinition [protected]
    fComponentTypeXSObject [protected]
    fFinalXSTypeDefinition [protected]
    fIdXSObject [protected]
    fMemoryManagerXSObject [protected]
    fParticleXSComplexTypeDefinition [protected]
    fProhibitedSubstitutionXSComplexTypeDefinition [protected]
    fTypeCategoryXSTypeDefinition [protected]
    fXSAnnotationListXSComplexTypeDefinition [protected]
    fXSAttributeUseListXSComplexTypeDefinition [protected]
    fXSModelXSObject [protected]
    fXSSimpleTypeDefinitionXSComplexTypeDefinition [protected]
    fXSWildcardXSComplexTypeDefinition [protected]
    getAbstract() const XSComplexTypeDefinition
    getAnnotations()XSComplexTypeDefinition
    getAnonymous() const XSComplexTypeDefinition [virtual]
    getAttributeUses()XSComplexTypeDefinition
    getAttributeWildcard() const XSComplexTypeDefinition
    getBaseType()XSComplexTypeDefinition [virtual]
    getContentType() const XSComplexTypeDefinition
    getDerivationMethod() const XSComplexTypeDefinition
    getFinal() const XSTypeDefinition
    getId() const XSObject [virtual]
    getName() const XSComplexTypeDefinition [virtual]
    getNamespace()XSComplexTypeDefinition [virtual]
    getNamespaceItem()XSComplexTypeDefinition [virtual]
    getParticle() const XSComplexTypeDefinition
    getProhibitedSubstitutions() const XSComplexTypeDefinition
    getSimpleType() const XSComplexTypeDefinition
    getType() const XSObject
    getTypeCategory() const XSTypeDefinition
    isFinal(short toTest)XSTypeDefinition
    isProhibitedSubstitution(XSConstants::DERIVATION_TYPE toTest)XSComplexTypeDefinition
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    setId(XMLSize_t id)XSObject
    SIMPLE_TYPE enum valueXSTypeDefinition
    TYPE_CATEGORY enum nameXSTypeDefinition
    XMemory()XMemory [protected]
    XSComplexTypeDefinition(ComplexTypeInfo *const complexTypeInfo, XSWildcard *const xsWildcard, XSSimpleTypeDefinition *const xsSimpleType, XSAttributeUseList *const xsAttList, XSTypeDefinition *const xsBaseType, XSParticle *const xsParticle, XSAnnotation *const headAnnot, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSComplexTypeDefinition
    XSObject(XSConstants::COMPONENT_TYPE compType, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSObject
    XSObjectFactory classXSComplexTypeDefinition [friend]
    XSTypeDefinition(TYPE_CATEGORY typeCategory, XSTypeDefinition *const xsBaseType, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSTypeDefinition
    ~XSComplexTypeDefinition()XSComplexTypeDefinition
    ~XSObject()XSObject [virtual]
    ~XSTypeDefinition()XSTypeDefinition [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLUniDefs_8hpp-source.html0000644000175000017500000012770411363620005022546 0ustar borisboris Xerces-C++: XMLUniDefs.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLFormatter.png0000644000175000017500000000060111363620006021550 0ustar borisboris‰PNG  IHDR]P‰Ád.PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfIDATH‰í”Qƒ †éËž[n€'X¶ ùäý°¿ul’ŒÄ8 ƒK!ºg•ÝÝ£«±3ñ5 ;ù ›¤š¨þÐwÞ{õü.~¬3Ò/Öcw‘Gà3ou*E}4¡YðY6ñïu0ñá#o{ñ”ø˜+õ-?]þ¾û­äóûÞÃgò‡~ÏmøÚïIÁúÒÂoøÛЖ†¾)ß:?ññíy©2v\åö Xerces-C++: Class Members
    Here is a list of all class members with links to the classes they belong to:

    - n -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLEntityResolver_8hpp.html0000644000175000017500000000470311363620005022702 0ustar borisboris Xerces-C++: XMLEntityResolver.hpp File Reference

    XMLEntityResolver.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLEntityResolver
     Revised interface for resolving entities. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_XMLENTITYRESOLVER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XMLENTITYRESOLVER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XSWildcard_8hpp-source.html0000644000175000017500000003605411363620005022631 0ustar borisboris Xerces-C++: XSWildcard.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMDocumentType_8hpp-source.html0000644000175000017500000002440611363620004023602 0ustar borisboris Xerces-C++: DOMDocumentType.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/globals_defs_0x74.html0000644000175000017500000000704611363620007021577 0ustar borisboris Xerces-C++: Class Members
     

    - t -


    Generated on Wed Apr 21 17:55:51 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLElementDecl.png0000644000175000017500000000062711363620006021776 0ustar borisboris‰PNG  IHDRmPá2æPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf-IDATX…í”YŽÃ @íŸ~ÛÜ€œ`4s¡~åþG¨ÈB£$µªL¥ã/À_¨ýÀïi߯%Yd~‘ËÚæ0—edñ/rH)i$;œ˜¨¹)'6)o9ä$±™³1õC2åyÅ5…ÚÌϸ¤‹‰Ë§8cWqq~~ÖÙýY=‡&½ó÷%ȵ÷ç,׸û÷ïás¹èp§Ý÷6ßÏÝÆk¹q¼_Ê]]ÏÎu®sëÜÞ&‡…Bù u(Oò¤~z‚–pZT:³(ÈU°Á‘™szBºTÉ2SQ"/8”G*†5` É¥.©( hæL[9ËÏLpa:s­?DXøsØåÄyÅÖù5œO5¦ê6¸9tØŒ¡Í¯œy$~~\¬Ùõdç×Ö3x_:÷\ð?øêµÕvq=°IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/IOException_8hpp-source.html0000644000175000017500000001070211363620004023002 0ustar borisboris Xerces-C++: IOException.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLTranscoder.html0000644000175000017500000006141311363620006022101 0ustar borisboris Xerces-C++: XMLTranscoder Class Reference

    XMLTranscoder Class Reference

    XMLTranscoder is for transcoding non-local code page encodings, i.e. More...

    Inheritance diagram for XMLTranscoder:

    XMemory

    List of all members.

    Public Types

    enum  UnRepOpts { UnRep_Throw, UnRep_RepChar }
     This enum is used by the transcodeTo() method to indicate how to react to unrepresentable characters. More...

    Public Member Functions

    Destructor.
    virtual ~XMLTranscoder ()
     Destructor for XMLTranscoder.
    The virtual transcoding interface
    virtual XMLSize_t transcodeFrom (const XMLByte *const srcData, const XMLSize_t srcCount, XMLCh *const toFill, const XMLSize_t maxChars, XMLSize_t &bytesEaten, unsigned char *const charSizes)=0
     Converts from the encoding of the service to the internal XMLCh* encoding.
    virtual XMLSize_t transcodeTo (const XMLCh *const srcData, const XMLSize_t srcCount, XMLByte *const toFill, const XMLSize_t maxBytes, XMLSize_t &charsEaten, const UnRepOpts options)=0
     Converts from the internal XMLCh* encoding to the encoding of the service.
    virtual bool canTranscodeTo (const unsigned int toCheck)=0
     Query whether the transcoder can handle a given character.
    Getter methods
    XMLSize_t getBlockSize () const
     Get the internal block size.
    const XMLChgetEncodingName () const
     Get the encoding name.
    Getter methods
    MemoryManagergetMemoryManager () const
     Get the plugged-in memory manager.

    Protected Member Functions

     XMLTranscoder (const XMLCh *const encodingName, const XMLSize_t blockSize, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)


    Detailed Description

    XMLTranscoder is for transcoding non-local code page encodings, i.e.

    named encodings. These are used internally by the scanner to internalize raw XML into the internal Unicode format, and by writer classes to convert that internal Unicode format (which comes out of the parser) back out to a format that the receiving client code wants to use.


    Member Enumeration Documentation

    This enum is used by the transcodeTo() method to indicate how to react to unrepresentable characters.

    The transcodeFrom() method always works the same. It will consider any invalid data to be an error and throw.

    Enumerator:
    UnRep_Throw  Throw an exception.
    UnRep_RepChar  Use the replacement char.


    Constructor & Destructor Documentation

    virtual XMLTranscoder::~XMLTranscoder (  )  [virtual]

    Destructor for XMLTranscoder.

    XMLTranscoder::XMLTranscoder ( const XMLCh *const   encodingName,
    const XMLSize_t  blockSize,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [protected]


    Member Function Documentation

    virtual XMLSize_t XMLTranscoder::transcodeFrom ( const XMLByte *const   srcData,
    const XMLSize_t  srcCount,
    XMLCh *const   toFill,
    const XMLSize_t  maxChars,
    XMLSize_t bytesEaten,
    unsigned char *const   charSizes 
    ) [pure virtual]

    Converts from the encoding of the service to the internal XMLCh* encoding.

    Parameters:
    srcData the source buffer to be transcoded
    srcCount number of bytes in the source buffer
    toFill the destination buffer
    maxChars the max number of characters in the destination buffer
    bytesEaten after transcoding, this will hold the number of bytes that were processed from the source buffer
    charSizes an array which must be at least as big as maxChars into which will be inserted values that indicate how many bytes from the input went into each XMLCh that was created into toFill. Since many encodings use variable numbers of byte per character, this provides a means to find out what bytes in the input went into making a particular output UTF-16 character.
    Returns:
    Returns the number of chars put into the target buffer

    virtual XMLSize_t XMLTranscoder::transcodeTo ( const XMLCh *const   srcData,
    const XMLSize_t  srcCount,
    XMLByte *const   toFill,
    const XMLSize_t  maxBytes,
    XMLSize_t charsEaten,
    const UnRepOpts  options 
    ) [pure virtual]

    Converts from the internal XMLCh* encoding to the encoding of the service.

    Parameters:
    srcData the source buffer to be transcoded
    srcCount number of characters in the source buffer
    toFill the destination buffer
    maxBytes the max number of bytes in the destination buffer
    charsEaten after transcoding, this will hold the number of chars that were processed from the source buffer
    options options to pass to the transcoder that explain how to respond to an unrepresentable character
    Returns:
    Returns the number of chars put into the target buffer

    virtual bool XMLTranscoder::canTranscodeTo ( const unsigned int  toCheck  )  [pure virtual]

    Query whether the transcoder can handle a given character.

    Parameters:
    toCheck the character code point to check

    XMLSize_t XMLTranscoder::getBlockSize (  )  const

    Get the internal block size.

    Returns:
    The block size indicated in the constructor.

    const XMLCh * XMLTranscoder::getEncodingName (  )  const

    Get the encoding name.

    Returns:
    the name of the encoding that this XMLTranscoder object is for

    MemoryManager * XMLTranscoder::getMemoryManager (  )  const

    Get the plugged-in memory manager.

    This method returns the plugged-in memory manager user for dynamic memory allocation/deallocation.

    Returns:
    the plugged-in memory manager


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_eval_0x76.html0000644000175000017500000001717411363620005022175 0ustar borisboris Xerces-C++: Class Members - Enumerator
     

    - v -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMTreeWalker.html0000644000175000017500000010477011363620005022024 0ustar borisboris Xerces-C++: DOMTreeWalker Class Reference

    DOMTreeWalker Class Reference

    DOMTreeWalker objects are used to navigate a document tree or subtree using the view of the document defined by their whatToShow flags and filter (if any). More...

    List of all members.

    Public Member Functions

    Destructor
    virtual ~DOMTreeWalker ()
     Destructor.
    Functions introduced in DOM Level 2
    virtual DOMNodegetRoot ()=0
     The root node of the DOMTreeWalker, as specified when it was created.
    virtual DOMNodeFilter::ShowType getWhatToShow ()=0
     This attribute determines which node types are presented via the DOMTreeWalker.
    virtual DOMNodeFiltergetFilter ()=0
     Return The filter used to screen nodes.
    virtual bool getExpandEntityReferences ()=0
     The value of this flag determines whether the children of entity reference nodes are visible to the DOMTreeWalker.
    virtual DOMNodegetCurrentNode ()=0
     Return the node at which the DOMTreeWalker is currently positioned.
    virtual DOMNodeparentNode ()=0
     Moves to and returns the closest visible ancestor node of the current node.
    virtual DOMNodefirstChild ()=0
     Moves the DOMTreeWalker to the first visible child of the current node, and returns the new node.
    virtual DOMNodelastChild ()=0
     Moves the DOMTreeWalker to the last visible child of the current node, and returns the new node.
    virtual DOMNodepreviousSibling ()=0
     Moves the DOMTreeWalker to the previous sibling of the current node, and returns the new node.
    virtual DOMNodenextSibling ()=0
     Moves the DOMTreeWalker to the next sibling of the current node, and returns the new node.
    virtual DOMNodepreviousNode ()=0
     Moves the DOMTreeWalker to the previous visible node in document order relative to the current node, and returns the new node.
    virtual DOMNodenextNode ()=0
     Moves the DOMTreeWalker to the next visible node in document order relative to the current node, and returns the new node.
    virtual void setCurrentNode (DOMNode *currentNode)=0
     The node at which the DOMTreeWalker is currently positioned.
    Non-standard Extension
    virtual void release ()=0
     Called to indicate that this TreeWalker is no longer in use and that the implementation may relinquish any resources associated with it.

    Protected Member Functions

    Hidden constructors
     DOMTreeWalker ()
     DOMTreeWalker (const DOMTreeWalker &)


    Detailed Description

    DOMTreeWalker objects are used to navigate a document tree or subtree using the view of the document defined by their whatToShow flags and filter (if any).

    Any function which performs navigation using a DOMTreeWalker will automatically support any view defined by a DOMTreeWalker.

    Omitting nodes from the logical view of a subtree can result in a structure that is substantially different from the same subtree in the complete, unfiltered document. Nodes that are siblings in the DOMTreeWalker view may be children of different, widely separated nodes in the original view. For instance, consider a DOMNodeFilter that skips all nodes except for DOMText nodes and the root node of a document. In the logical view that results, all text nodes will be siblings and appear as direct children of the root node, no matter how deeply nested the structure of the original document.

    See also the Document Object Model (DOM) Level 2 Traversal and Range Specification.

    Since:
    DOM Level 2

    Constructor & Destructor Documentation

    DOMTreeWalker::DOMTreeWalker (  )  [protected]

    DOMTreeWalker::DOMTreeWalker ( const DOMTreeWalker  )  [protected]

    virtual DOMTreeWalker::~DOMTreeWalker (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual DOMNode* DOMTreeWalker::getRoot (  )  [pure virtual]

    The root node of the DOMTreeWalker, as specified when it was created.

    Since:
    DOM Level 2

    virtual DOMNodeFilter::ShowType DOMTreeWalker::getWhatToShow (  )  [pure virtual]

    This attribute determines which node types are presented via the DOMTreeWalker.

    The available set of constants is defined in the DOMNodeFilter interface. Nodes not accepted by whatToShow will be skipped, but their children may still be considered. Note that this skip takes precedence over the filter, if any.

    Since:
    DOM Level 2

    virtual DOMNodeFilter* DOMTreeWalker::getFilter (  )  [pure virtual]

    Return The filter used to screen nodes.

    Since:
    DOM Level 2

    virtual bool DOMTreeWalker::getExpandEntityReferences (  )  [pure virtual]

    The value of this flag determines whether the children of entity reference nodes are visible to the DOMTreeWalker.

    If false, these children and their descendants will be rejected. Note that this rejection takes precedence over whatToShow and the filter, if any.
    To produce a view of the document that has entity references expanded and does not expose the entity reference node itself, use the whatToShow flags to hide the entity reference node and set expandEntityReferences to true when creating the DOMTreeWalker. To produce a view of the document that has entity reference nodes but no entity expansion, use the whatToShow flags to show the entity reference node and set expandEntityReferences to false.

    Since:
    DOM Level 2

    virtual DOMNode* DOMTreeWalker::getCurrentNode (  )  [pure virtual]

    Return the node at which the DOMTreeWalker is currently positioned.

    Since:
    DOM Level 2

    virtual DOMNode* DOMTreeWalker::parentNode (  )  [pure virtual]

    Moves to and returns the closest visible ancestor node of the current node.

    If the search for parentNode attempts to step upward from the DOMTreeWalker's root node, or if it fails to find a visible ancestor node, this method retains the current position and returns null.

    Returns:
    The new parent node, or null if the current node has no parent in the DOMTreeWalker's logical view.
    Since:
    DOM Level 2

    virtual DOMNode* DOMTreeWalker::firstChild (  )  [pure virtual]

    Moves the DOMTreeWalker to the first visible child of the current node, and returns the new node.

    If the current node has no visible children, returns null, and retains the current node.

    Returns:
    The new node, or null if the current node has no visible children in the DOMTreeWalker's logical view.
    Since:
    DOM Level 2

    virtual DOMNode* DOMTreeWalker::lastChild (  )  [pure virtual]

    Moves the DOMTreeWalker to the last visible child of the current node, and returns the new node.

    If the current node has no visible children, returns null, and retains the current node.

    Returns:
    The new node, or null if the current node has no children in the DOMTreeWalker's logical view.
    Since:
    DOM Level 2

    virtual DOMNode* DOMTreeWalker::previousSibling (  )  [pure virtual]

    Moves the DOMTreeWalker to the previous sibling of the current node, and returns the new node.

    If the current node has no visible previous sibling, returns null, and retains the current node.

    Returns:
    The new node, or null if the current node has no previous sibling. in the DOMTreeWalker's logical view.
    Since:
    DOM Level 2

    virtual DOMNode* DOMTreeWalker::nextSibling (  )  [pure virtual]

    Moves the DOMTreeWalker to the next sibling of the current node, and returns the new node.

    If the current node has no visible next sibling, returns null, and retains the current node.

    Returns:
    The new node, or null if the current node has no next sibling. in the DOMTreeWalker's logical view.
    Since:
    DOM Level 2

    virtual DOMNode* DOMTreeWalker::previousNode (  )  [pure virtual]

    Moves the DOMTreeWalker to the previous visible node in document order relative to the current node, and returns the new node.

    If the current node has no previous node, or if the search for previousNode attempts to step upward from the DOMTreeWalker's root node, returns null, and retains the current node.

    Returns:
    The new node, or null if the current node has no previous node in the DOMTreeWalker's logical view.
    Since:
    DOM Level 2

    virtual DOMNode* DOMTreeWalker::nextNode (  )  [pure virtual]

    Moves the DOMTreeWalker to the next visible node in document order relative to the current node, and returns the new node.

    If the current node has no next node, or if the search for nextNode attempts to step upward from the DOMTreeWalker's root node, returns null, and retains the current node.

    Returns:
    The new node, or null if the current node has no next node in the DOMTreeWalker's logical view.
    Since:
    DOM Level 2

    virtual void DOMTreeWalker::setCurrentNode ( DOMNode currentNode  )  [pure virtual]

    The node at which the DOMTreeWalker is currently positioned.


    Alterations to the DOM tree may cause the current node to no longer be accepted by the DOMTreeWalker's associated filter. currentNode may also be explicitly set to any node, whether or not it is within the subtree specified by the root node or would be accepted by the filter and whatToShow flags. Further traversal occurs relative to currentNode even if it is not part of the current view, by applying the filters in the requested direction; if no traversal is possible, currentNode is not changed.

    Exceptions:
    DOMException NOT_SUPPORTED_ERR: Raised if an attempt is made to set currentNode to null.
    Since:
    DOM Level 2

    virtual void DOMTreeWalker::release (  )  [pure virtual]

    Called to indicate that this TreeWalker is no longer in use and that the implementation may relinquish any resources associated with it.

    Access to a released object will lead to unexpected result.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_0x64.html0000644000175000017500000007603311363620005021162 0ustar borisboris Xerces-C++: Class Members
    Here is a list of all class members with links to the classes they belong to:

    - d -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLBigInteger.html0000644000175000017500000006131111363620006022011 0ustar borisboris Xerces-C++: XMLBigInteger Class Reference

    XMLBigInteger Class Reference

    Inheritance diagram for XMLBigInteger:

    XMemory

    List of all members.

    Public Member Functions

     XMLBigInteger (const XMLCh *const strValue, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Constructs a newly allocated XMLBigInteger object that represents the value represented by the string.
     ~XMLBigInteger ()
     XMLBigInteger (const XMLBigInteger &toCopy)
    void multiply (const unsigned int byteToShift)
    void divide (const unsigned int byteToShift)
    unsigned int getTotalDigit () const
    XMLChgetRawData () const
     Return a copy of the fMagnitude.
    bool operator== (const XMLBigInteger &toCompare) const
     Compares this object to the specified object.
    int getSign () const
     Returns the signum function of this number (i.e., -1, 0 or 1 as the value of this number is negative, zero or positive).
    int intValue () const

    Static Public Member Functions

    static XMLChgetCanonicalRepresentation (const XMLCh *const rawData, MemoryManager *const memMgr=XMLPlatformUtils::fgMemoryManager, bool isNonPositiveInteger=false)
    static void parseBigInteger (const XMLCh *const toConvert, XMLCh *const retBuffer, int &signValue, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
    static int compareValues (const XMLBigInteger *const lValue, const XMLBigInteger *const rValue, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
    static int compareValues (const XMLCh *const lString, const int &lSign, const XMLCh *const rString, const int &rSign, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)


    Constructor & Destructor Documentation

    XMLBigInteger::XMLBigInteger ( const XMLCh *const   strValue,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    Constructs a newly allocated XMLBigInteger object that represents the value represented by the string.

    The string is converted to an int value as if by the valueOf method.

    Parameters:
    strValue the String to be converted to an XMLBigInteger.
    manager Pointer to the memory manager to be used to allocate objects.
    Exceptions:
    NumberFormatException if the String does not contain a parsable XMLBigInteger.

    XMLBigInteger::~XMLBigInteger (  ) 

    XMLBigInteger::XMLBigInteger ( const XMLBigInteger toCopy  ) 


    Member Function Documentation

    static XMLCh* XMLBigInteger::getCanonicalRepresentation ( const XMLCh *const   rawData,
    MemoryManager *const   memMgr = XMLPlatformUtils::fgMemoryManager,
    bool  isNonPositiveInteger = false 
    ) [static]

    static void XMLBigInteger::parseBigInteger ( const XMLCh *const   toConvert,
    XMLCh *const   retBuffer,
    int &  signValue,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    static int XMLBigInteger::compareValues ( const XMLBigInteger *const   lValue,
    const XMLBigInteger *const   rValue,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Referenced by operator==().

    static int XMLBigInteger::compareValues ( const XMLCh *const   lString,
    const int &  lSign,
    const XMLCh *const   rString,
    const int &  rSign,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    void XMLBigInteger::multiply ( const unsigned int  byteToShift  ) 

    void XMLBigInteger::divide ( const unsigned int  byteToShift  ) 

    unsigned int XMLBigInteger::getTotalDigit (  )  const

    XMLCh * XMLBigInteger::getRawData (  )  const

    Return a copy of the fMagnitude.

    This is similar to toString, except the internal buffer is returned directly Caller is not required to delete the returned memory.

    bool XMLBigInteger::operator== ( const XMLBigInteger toCompare  )  const

    Compares this object to the specified object.

    The result is true if and only if the argument is not null and is an XMLBigInteger object that contains the same int value as this object.

    Parameters:
    toCompare the object to compare with.
    Returns:
    true if the objects are the same; false otherwise.

    References compareValues().

    int XMLBigInteger::getSign (  )  const

    Returns the signum function of this number (i.e., -1, 0 or 1 as the value of this number is negative, zero or positive).

    Referenced by getTotalDigit().

    int XMLBigInteger::intValue (  )  const


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMDocumentRange_8hpp.html0000644000175000017500000000441111363620005022412 0ustar borisboris Xerces-C++: DOMDocumentRange.hpp File Reference

    DOMDocumentRange.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMDocumentRange

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMDOCUMENTRANGE_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMDOCUMENTRANGE_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMUserDataHandler.html0000644000175000017500000003023211363620006022755 0ustar borisboris Xerces-C++: DOMUserDataHandler Class Reference

    DOMUserDataHandler Class Reference

    When associating an object to a key on a node using setUserData the application can provide a handler that gets called when the node the object is associated to is being cloned or imported. More...

    List of all members.

    Public Types

    Public Constants
    enum  DOMOperationType {
      NODE_CLONED = 1, NODE_IMPORTED = 2, NODE_DELETED = 3, NODE_RENAMED = 4,
      NODE_ADOPTED = 5
    }
     Operation Type. More...

    Public Member Functions

    Destructor
    virtual ~DOMUserDataHandler ()
     Destructor.
    Functions introduced in DOM Level 3
    virtual void handle (DOMOperationType operation, const XMLCh *const key, void *data, const DOMNode *src, DOMNode *dst)=0
     This method is called whenever the node for which this handler is registered is imported or cloned.

    Protected Member Functions

    Hidden constructors
     DOMUserDataHandler ()


    Detailed Description

    When associating an object to a key on a node using setUserData the application can provide a handler that gets called when the node the object is associated to is being cloned or imported.

    This can be used by the application to implement various behaviors regarding the data it associates to the DOM nodes. This interface defines that handler.

    See also the Document Object Model (DOM) Level 3 Core Specification.

    Since:
    DOM Level 3

    Member Enumeration Documentation

    Operation Type.

    NODE_CLONED: The node is cloned.

    NODE_IMPORTED The node is imported.

    NODE_DELETED The node is deleted.

    NODE_RENAMED The node is renamed.

    NODE_ADOPTED The node is adopted.

    Since:
    DOM Level 3
    Enumerator:
    NODE_CLONED 
    NODE_IMPORTED 
    NODE_DELETED 
    NODE_RENAMED 
    NODE_ADOPTED 


    Constructor & Destructor Documentation

    DOMUserDataHandler::DOMUserDataHandler (  )  [protected]

    virtual DOMUserDataHandler::~DOMUserDataHandler (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual void DOMUserDataHandler::handle ( DOMOperationType  operation,
    const XMLCh *const   key,
    void *  data,
    const DOMNode src,
    DOMNode dst 
    ) [pure virtual]

    This method is called whenever the node for which this handler is registered is imported or cloned.

    Parameters:
    operation Specifies the type of operation that is being performed on the node.
    key Specifies the key for which this handler is being called.
    data Specifies the data for which this handler is being called.
    src Specifies the node being cloned, adopted, imported, or renamed. This is null when the node is being deleted.
    dst Specifies the node newly created if any, or null.
    Since:
    DOM Level 3


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/LocalFileInputSource_8hpp-source.html0000644000175000017500000002263311363620004024655 0ustar borisboris Xerces-C++: LocalFileInputSource.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMElement-members.html0000644000175000017500000005613011363620005022774 0ustar borisboris Xerces-C++: Member List

    DOMElement Member List

    This is the complete list of members for DOMElement, including all inherited members.

    appendChild(DOMNode *newChild)=0DOMNode [pure virtual]
    ATTRIBUTE_NODE enum valueDOMNode
    CDATA_SECTION_NODE enum valueDOMNode
    cloneNode(bool deep) const =0DOMNode [pure virtual]
    COMMENT_NODE enum valueDOMNode
    compareDocumentPosition(const DOMNode *other) const =0DOMNode [pure virtual]
    DOCUMENT_FRAGMENT_NODE enum valueDOMNode
    DOCUMENT_NODE enum valueDOMNode
    DOCUMENT_POSITION_CONTAINED_BY enum valueDOMNode
    DOCUMENT_POSITION_CONTAINS enum valueDOMNode
    DOCUMENT_POSITION_DISCONNECTED enum valueDOMNode
    DOCUMENT_POSITION_FOLLOWING enum valueDOMNode
    DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC enum valueDOMNode
    DOCUMENT_POSITION_PRECEDING enum valueDOMNode
    DOCUMENT_TYPE_NODE enum valueDOMNode
    DocumentPosition enum nameDOMNode
    DOMElement()DOMElement [protected]
    DOMElement(const DOMElement &other)DOMElement [protected]
    DOMNode()DOMNode [protected]
    DOMNode(const DOMNode &)DOMNode [protected]
    ELEMENT_NODE enum valueDOMNode
    ENTITY_NODE enum valueDOMNode
    ENTITY_REFERENCE_NODE enum valueDOMNode
    getAttribute(const XMLCh *name) const =0DOMElement [pure virtual]
    getAttributeNode(const XMLCh *name) const =0DOMElement [pure virtual]
    getAttributeNodeNS(const XMLCh *namespaceURI, const XMLCh *localName) const =0DOMElement [pure virtual]
    getAttributeNS(const XMLCh *namespaceURI, const XMLCh *localName) const =0DOMElement [pure virtual]
    getAttributes() const =0DOMNode [pure virtual]
    getBaseURI() const =0DOMNode [pure virtual]
    getChildElementCount() const =0DOMElement [pure virtual]
    getChildNodes() const =0DOMNode [pure virtual]
    getElementsByTagName(const XMLCh *name) const =0DOMElement [pure virtual]
    getElementsByTagNameNS(const XMLCh *namespaceURI, const XMLCh *localName) const =0DOMElement [pure virtual]
    getFeature(const XMLCh *feature, const XMLCh *version) const =0DOMNode [pure virtual]
    getFirstChild() const =0DOMNode [pure virtual]
    getFirstElementChild() const =0DOMElement [pure virtual]
    getLastChild() const =0DOMNode [pure virtual]
    getLastElementChild() const =0DOMElement [pure virtual]
    getLocalName() const =0DOMNode [pure virtual]
    getNamespaceURI() const =0DOMNode [pure virtual]
    getNextElementSibling() const =0DOMElement [pure virtual]
    getNextSibling() const =0DOMNode [pure virtual]
    getNodeName() const =0DOMNode [pure virtual]
    getNodeType() const =0DOMNode [pure virtual]
    getNodeValue() const =0DOMNode [pure virtual]
    getOwnerDocument() const =0DOMNode [pure virtual]
    getParentNode() const =0DOMNode [pure virtual]
    getPrefix() const =0DOMNode [pure virtual]
    getPreviousElementSibling() const =0DOMElement [pure virtual]
    getPreviousSibling() const =0DOMNode [pure virtual]
    getSchemaTypeInfo() const =0DOMElement [pure virtual]
    getTagName() const =0DOMElement [pure virtual]
    getTextContent() const =0DOMNode [pure virtual]
    getUserData(const XMLCh *key) const =0DOMNode [pure virtual]
    hasAttribute(const XMLCh *name) const =0DOMElement [pure virtual]
    hasAttributeNS(const XMLCh *namespaceURI, const XMLCh *localName) const =0DOMElement [pure virtual]
    hasAttributes() const =0DOMNode [pure virtual]
    hasChildNodes() const =0DOMNode [pure virtual]
    insertBefore(DOMNode *newChild, DOMNode *refChild)=0DOMNode [pure virtual]
    isDefaultNamespace(const XMLCh *namespaceURI) const =0DOMNode [pure virtual]
    isEqualNode(const DOMNode *arg) const =0DOMNode [pure virtual]
    isSameNode(const DOMNode *other) const =0DOMNode [pure virtual]
    isSupported(const XMLCh *feature, const XMLCh *version) const =0DOMNode [pure virtual]
    lookupNamespaceURI(const XMLCh *prefix) const =0DOMNode [pure virtual]
    lookupPrefix(const XMLCh *namespaceURI) const =0DOMNode [pure virtual]
    NodeType enum nameDOMNode
    normalize()=0DOMNode [pure virtual]
    NOTATION_NODE enum valueDOMNode
    PROCESSING_INSTRUCTION_NODE enum valueDOMNode
    release()=0DOMNode [pure virtual]
    removeAttribute(const XMLCh *name)=0DOMElement [pure virtual]
    removeAttributeNode(DOMAttr *oldAttr)=0DOMElement [pure virtual]
    removeAttributeNS(const XMLCh *namespaceURI, const XMLCh *localName)=0DOMElement [pure virtual]
    removeChild(DOMNode *oldChild)=0DOMNode [pure virtual]
    replaceChild(DOMNode *newChild, DOMNode *oldChild)=0DOMNode [pure virtual]
    setAttribute(const XMLCh *name, const XMLCh *value)=0DOMElement [pure virtual]
    setAttributeNode(DOMAttr *newAttr)=0DOMElement [pure virtual]
    setAttributeNodeNS(DOMAttr *newAttr)=0DOMElement [pure virtual]
    setAttributeNS(const XMLCh *namespaceURI, const XMLCh *qualifiedName, const XMLCh *value)=0DOMElement [pure virtual]
    setIdAttribute(const XMLCh *name, bool isId)=0DOMElement [pure virtual]
    setIdAttributeNode(const DOMAttr *idAttr, bool isId)=0DOMElement [pure virtual]
    setIdAttributeNS(const XMLCh *namespaceURI, const XMLCh *localName, bool isId)=0DOMElement [pure virtual]
    setNodeValue(const XMLCh *nodeValue)=0DOMNode [pure virtual]
    setPrefix(const XMLCh *prefix)=0DOMNode [pure virtual]
    setTextContent(const XMLCh *textContent)=0DOMNode [pure virtual]
    setUserData(const XMLCh *key, void *data, DOMUserDataHandler *handler)=0DOMNode [pure virtual]
    TEXT_NODE enum valueDOMNode
    ~DOMElement()DOMElement [virtual]
    ~DOMNode()DOMNode [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMemory.html0000644000175000017500000004272311363620006021017 0ustar borisboris Xerces-C++: XMemory Class Reference

    XMemory Class Reference

    This class makes it possible to override the C++ memory management by adding new/delete operators to this base class. More...

    Inheritance diagram for XMemory:

    AbstractDOMParser BinInputStream BinOutputStream DefaultPanicHandler Hash2KeysSetOf< THasher > Hash2KeysSetOfEnumerator< THasher > InputSource OutOfMemoryException PSVIAttributeList PSVIAttributeStorage PSVIItem QName SAXException SAXParser ValidationContext XMLAttDef XMLAttDefList XMLAttr XMLBigInteger XMLContentModel XMLElementDecl XMLEntityDecl XMLException XMLFileMgr XMLFormatTarget XMLFormatter XMLGrammarDescription XMLGrammarPool XMLInteger XMLLCPTranscoder XMLMutexMgr XMLNetAccessor XMLNotationDecl XMLNumber XMLStringTokenizer XMLTranscoder XMLTransService XMLUri XMLURL XMLValidator XSModel XSNamedMap< TVal > XSNamespaceItem XSObject XSValue

    List of all members.

    Public Member Functions

    The C++ memory management
    void * operator new (size_t size)
     This method overrides operator new.
    void * operator new (size_t size, MemoryManager *memMgr)
     This method defines a custom operator new, that will use the provided memory manager to perform the allocation.
    void * operator new (size_t size, void *ptr)
     This method overrides placement operator new.
    void operator delete (void *p)
     This method overrides operator delete.
    void operator delete (void *p, MemoryManager *memMgr)
     This method provides a matching delete for the custom operator new.
    void operator delete (void *p, void *ptr)
     This method provides a matching delete for the placement new.

    Protected Member Functions

    Constructor
     XMemory ()
     Protected default constructor.


    Detailed Description

    This class makes it possible to override the C++ memory management by adding new/delete operators to this base class.

    This class is used in conjunction with the pluggable memory manager. It allows applications to control Xerces memory management.


    Constructor & Destructor Documentation

    XMemory::XMemory (  )  [protected]

    Protected default constructor.


    Member Function Documentation

    void* XMemory::operator new ( size_t  size  ) 

    This method overrides operator new.

    Parameters:
    size The requested memory size

    void* XMemory::operator new ( size_t  size,
    MemoryManager memMgr 
    )

    This method defines a custom operator new, that will use the provided memory manager to perform the allocation.

    Parameters:
    size The requested memory size
    memMgr An application's memory manager

    void* XMemory::operator new ( size_t  size,
    void *  ptr 
    )

    This method overrides placement operator new.

    Parameters:
    size The requested memory size
    ptr The memory location where the object should be allocated

    void XMemory::operator delete ( void *  p  ) 

    This method overrides operator delete.

    Parameters:
    p The pointer to the allocated memory

    void XMemory::operator delete ( void *  p,
    MemoryManager memMgr 
    )

    This method provides a matching delete for the custom operator new.

    Parameters:
    p The pointer to the allocated memory
    memMgr An application's memory manager

    void XMemory::operator delete ( void *  p,
    void *  ptr 
    )

    This method provides a matching delete for the placement new.

    Parameters:
    p The pointer to the allocated memory
    ptr The memory location where the object had to be allocated


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSNamedMap.png0000644000175000017500000000072511363620006021170 0ustar borisboris‰PNG  IHDRPÒ%;ZPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfkIDATX…í•[r… †ÉËyNØgvC}rÿKh.(­,ÓÑN3A? ŽácŒ½…÷çsÐyP’y«(r#¦ #+dŸR­] ÞÂû‘ž”̧Ø’ä, ¨}n'%U ¤æÈ@ò°€Då ªкAùi픦^g;íÙ0ÐÞíí ºÑ×ÿ/@Ã~G öhyéOAÓçÅ@iºè‚Usƒä 9è6 cpŒj5‚@:XâW\ä5Y1àAž,+¦µA o@ Xerces-C++: URLInputSource.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/PSVIAttribute_8hpp-source.html0000644000175000017500000003523011363620004023264 0ustar borisboris Xerces-C++: PSVIAttribute.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMLSException-members.html0000644000175000017500000002277011363620005023603 0ustar borisboris Xerces-C++: Member List

    DOMLSException Member List

    This is the complete list of members for DOMLSException, including all inherited members.

    codeDOMException
    DOMException()DOMException
    DOMException(short code, short messageCode=0, MemoryManager *const memoryManager=XMLPlatformUtils::fgMemoryManager)DOMException
    DOMException(const DOMException &other)DOMException
    DOMLSException()DOMLSException
    DOMLSException(short code, short messageCode, MemoryManager *const memoryManager)DOMLSException
    DOMLSException(const DOMLSException &other)DOMLSException
    DOMSTRING_SIZE_ERR enum valueDOMException
    ExceptionCode enum nameDOMException
    fMemoryManagerDOMException [protected]
    getMessage() const DOMException
    HIERARCHY_REQUEST_ERR enum valueDOMException
    INDEX_SIZE_ERR enum valueDOMException
    INUSE_ATTRIBUTE_ERR enum valueDOMException
    INVALID_ACCESS_ERR enum valueDOMException
    INVALID_CHARACTER_ERR enum valueDOMException
    INVALID_MODIFICATION_ERR enum valueDOMException
    INVALID_STATE_ERR enum valueDOMException
    LSExceptionCode enum nameDOMLSException
    msgDOMException
    NAMESPACE_ERR enum valueDOMException
    NO_DATA_ALLOWED_ERR enum valueDOMException
    NO_MODIFICATION_ALLOWED_ERR enum valueDOMException
    NOT_FOUND_ERR enum valueDOMException
    NOT_SUPPORTED_ERR enum valueDOMException
    PARSE_ERR enum valueDOMLSException
    SERIALIZE_ERR enum valueDOMLSException
    SYNTAX_ERR enum valueDOMException
    TYPE_MISMATCH_ERR enum valueDOMException
    VALIDATION_ERR enum valueDOMException
    WRONG_DOCUMENT_ERR enum valueDOMException
    ~DOMException()DOMException [virtual]
    ~DOMLSException()DOMLSException [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/IOException_8hpp.html0000644000175000017500000000374611363620005021517 0ustar borisboris Xerces-C++: IOException.hpp File Reference

    IOException.hpp File Reference

    Go to the source code of this file.

    Defines

    #define XERCESC_INCLUDE_GUARD_IOEXCEPTION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_IOEXCEPTION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMAttr.png0000644000175000017500000000051211363620005020476 0ustar borisboris‰PNG  IHDRHPHF.‚PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfàIDATH‰íÓ]‚0 ðíÅç¶7¨Þ@/ä÷?‚ÿ¶ˆdŒl1hÐ0Ⱦú˺n%]ÏÍrÙ+Rft­´¢˜‰¨Î‘E½‚SQYAj‹èˆ=E—£)‘^GbiÙšdqGZGêB'Äܤr:‰`l¦ØÓìžd¼§Åé¾üí~uýRËr¯Ì½…NÃVh:òu¡íNw èãˆ;J¢öÒyLjmF•}2^*G­Ê3ºTE‰lz!¿ª#,–S Xerces-C++: Class Members
    Here is a list of all class members with links to the classes they belong to:

    - l -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_vars_0x67.html0000644000175000017500000000614211363620005022212 0ustar borisboris Xerces-C++: Class Members - Variables
     

    - g -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/PSVIAttribute_8hpp.html0000644000175000017500000000435311363620005021771 0ustar borisboris Xerces-C++: PSVIAttribute.hpp File Reference

    PSVIAttribute.hpp File Reference

    Go to the source code of this file.

    Classes

    class  PSVIAttribute

    Defines

    #define XERCESC_INCLUDE_GUARD_PSVIATTRIBUTE_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_PSVIATTRIBUTE_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLMutexMgr.png0000644000175000017500000000061311363620006021360 0ustar borisboris‰PNG  IHDR`PÌm¦PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf!IDATH‰í”]‚0 Çן×Ý`x½OÜÿöc+PBDCè•ÒßþífHÏ ¥Ç²ûÉ€ÊW!§ìU(4¨$·"͵VÖ^èåIj°ê\‹pñ¹úØP¨œˆ¸Šp ðƒ¬º´(ÉÚ9È^ %³D½¦ óƒÜÌþýï}þÌxörß| ¸Gãø:8~—.à.à~`ÐRŽ ÃYè`¾µŸ-•g~O¤ô €8sÀ[$LȬr¨ìe¢´$u õ[  è€•매…@klq”U-‹ÖÝ8Èh*9ƒ5§ZóY‹P9CwÉ“ÂÎ3žÎaWz ò‚€)ˆ~fÞLä¹”YË#|IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classWrapper4DOMLSInput.html0000644000175000017500000006530211363620006022740 0ustar borisboris Xerces-C++: Wrapper4DOMLSInput Class Reference

    Wrapper4DOMLSInput Class Reference

    Wrap a DOMLSInput object and make it behave like a SAX InputSource. More...

    Inheritance diagram for Wrapper4DOMLSInput:

    InputSource XMemory

    List of all members.

    Public Member Functions

    Constructors and Destructor
     Wrapper4DOMLSInput (DOMLSInput *const inputSource, DOMLSResourceResolver *entityResolver=0, const bool adoptFlag=true, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Constructor.
    virtual ~Wrapper4DOMLSInput ()
     Destructor.
    Virtual input source interface
    BinInputStreammakeStream () const
     Makes the byte stream for this input source.
    Getter methods
    const XMLChgetEncoding () const
     An input source can be set to force the parser to assume a particular encoding for the data that input source reprsents, via the setEncoding() method.
    const XMLChgetPublicId () const
     Get the public identifier for this input source.
    const XMLChgetSystemId () const
     Get the system identifier for this input source.
    bool getIssueFatalErrorIfNotFound () const
     Get the flag that indicates if the parser should issue fatal error if this input source is not found.
    Setter methods
    void setEncoding (const XMLCh *const encodingStr)
     Set the encoding which will be required for use with the XML text read via a stream opened by this input source.
    void setPublicId (const XMLCh *const publicId)
     Set the public identifier for this input source.
    void setSystemId (const XMLCh *const systemId)
     Set the system identifier for this input source.
    void setIssueFatalErrorIfNotFound (const bool flag)
     Indicates if the parser should issue fatal error if this input source is not found.


    Detailed Description

    Wrap a DOMLSInput object and make it behave like a SAX InputSource.

    Constructor & Destructor Documentation

    Wrapper4DOMLSInput::Wrapper4DOMLSInput ( DOMLSInput *const   inputSource,
    DOMLSResourceResolver entityResolver = 0,
    const bool  adoptFlag = true,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    Constructor.

    Wrap a DOMLSInput and make it behave like a SAX InputSource. By default, the wrapper will adopt the DOMLSInput that is wrapped.

    Parameters:
    inputSource The DOMLSInput to be wrapped
    entityResolver The DOMLSResourceResolver to be used when resolving publicID entries
    adoptFlag Indicates if the wrapper should adopt the wrapped DOMLSInput. Default is true.
    manager Pointer to the memory manager to be used to allocate objects.

    virtual Wrapper4DOMLSInput::~Wrapper4DOMLSInput (  )  [virtual]

    Destructor.


    Member Function Documentation

    BinInputStream* Wrapper4DOMLSInput::makeStream (  )  const [virtual]

    Makes the byte stream for this input source.

    The function will call the makeStream of the wrapped input source. The returned stream becomes the parser's property.

    See also:
    BinInputStream

    Implements InputSource.

    const XMLCh* Wrapper4DOMLSInput::getEncoding (  )  const [virtual]

    An input source can be set to force the parser to assume a particular encoding for the data that input source reprsents, via the setEncoding() method.

    This method will delegate to the wrapped input source to return name of the encoding that is to be forced. If the encoding has never been forced, it returns a null pointer.

    Returns:
    The forced encoding, or null if none was supplied.
    See also:
    setEncoding

    Reimplemented from InputSource.

    const XMLCh* Wrapper4DOMLSInput::getPublicId (  )  const [virtual]

    Get the public identifier for this input source.

    Delegated to the wrapped input source object.

    Returns:
    The public identifier, or null if none was supplied.
    See also:
    setPublicId

    Reimplemented from InputSource.

    const XMLCh* Wrapper4DOMLSInput::getSystemId (  )  const [virtual]

    Get the system identifier for this input source.

    Delegated to the wrapped input source object.

    If the system ID is a URL, it will be fully resolved.

    Returns:
    The system identifier.
    See also:
    setSystemId

    Reimplemented from InputSource.

    bool Wrapper4DOMLSInput::getIssueFatalErrorIfNotFound (  )  const [virtual]

    Get the flag that indicates if the parser should issue fatal error if this input source is not found.

    Delegated to the wrapped input source object.

    Returns:
    True if the parser should issue fatal error if this input source is not found. False if the parser issue warning message instead.
    See also:
    setIssueFatalErrorIfNotFound

    Reimplemented from InputSource.

    void Wrapper4DOMLSInput::setEncoding ( const XMLCh *const   encodingStr  )  [virtual]

    Set the encoding which will be required for use with the XML text read via a stream opened by this input source.

    This will update the wrapped input source object.

    This is usually not set, allowing the encoding to be sensed in the usual XML way. However, in some cases, the encoding in the file is known to be incorrect because of intermediate transcoding, for instance encapsulation within a MIME document.

    Parameters:
    encodingStr The name of the encoding to force.

    Reimplemented from InputSource.

    void Wrapper4DOMLSInput::setPublicId ( const XMLCh *const   publicId  )  [virtual]

    Set the public identifier for this input source.

    This will update the wrapped input source object.

    The public identifier is always optional: if the application writer includes one, it will be provided as part of the location information.

    Parameters:
    publicId The public identifier as a string.
    See also:
    Locator::getPublicId

    SAXParseException::getPublicId

    getPublicId

    Reimplemented from InputSource.

    void Wrapper4DOMLSInput::setSystemId ( const XMLCh *const   systemId  )  [virtual]

    Set the system identifier for this input source.

    This will update the wrapped input source object.

    The system id is always required. The public id may be used to map to another system id, but the system id must always be present as a fall back.

    If the system ID is a URL, it must be fully resolved.

    Parameters:
    systemId The system identifier as a string.
    See also:
    getSystemId

    Locator::getSystemId

    SAXParseException::getSystemId

    Reimplemented from InputSource.

    void Wrapper4DOMLSInput::setIssueFatalErrorIfNotFound ( const bool  flag  )  [virtual]

    Indicates if the parser should issue fatal error if this input source is not found.

    If set to false, the parser issue warning message instead. This will update the wrapped input source object.

    Parameters:
    flag True if the parser should issue fatal error if this input source is not found. If set to false, the parser issue warning message instead. (Default: true)
    See also:
    getIssueFatalErrorIfNotFound

    Reimplemented from InputSource.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDTDHandler.png0000644000175000017500000000105211363620006021136 0ustar borisboris‰PNG  IHDRÌP§¨‡ùPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfÀIDAThí–mjÃ0 †cýméò.06Øy ƒÜÿÓ‡cÇi\Hæ´]°jÕ±ôXòÛa¨šƒVOuÏÜÁë;æ¿`Xp*:¯WZàWÖïÅÄä:Šqã ŒãÊÀ™ï\±¾Æñ2€ùÎ7ÇðyÃ)Á0åúVÕ0+cDÇ`\QÍÐS*-a iÓôÑë‡ü¿ï˜”ÖsØúŽé˜SbóU³KÛtOÆŒ×a.ãx"ÌÉ”Ö1Ó15wÙfÌuÏÞ¶Ú1Ó1Ó1ÏÆ|Uì§2ÿ!Ao•›ßµlÃgØf†ÙôÞ1¯!û‡@I¾“aöçÔ+EgJ·ÄÄÕ4‹ø f>[bˆ÷åâLsDQý€¸‚‘¾d>ÅY‰„%F²Kfs0ÍéT_›ºÄHÈ1„ªƒV0!c@;Œcæ^ƒ³-Æ}ÚÙÕºÄpI༂Œ¸ÅXÓ cØ';ñPƒ–Õ„Õ¦åjÂ*†ŠjBÄPJºPZ>ºÁP¥iRÓjg#ÍUqÓXT¢«Iid§:)mµiˆ*Ii–N•JÛd/ÿ°é˜Žy¦öÊS³»/PUû=c1™òIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/functions_vars_0x69.html0000644000175000017500000000522111363620005022211 0ustar borisboris Xerces-C++: Class Members - Variables
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classStdOutFormatTarget.png0000644000175000017500000000112711363620006022772 0ustar borisboris‰PNG  IHDR}ˆ8ñù¼PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfíIDAThí—]’ƒ ÇáeŸ 7'èì^¨O½ÿ6 ßJ«–éÔvN-‘_":þÍßT»˜ß0Ó”_óž¤3>É#wrÓ<Ò”ƒ÷ž3ÛÁÓTÆ„ôèAÎäm7O ¯¼¥ïŽO?:~PлëÞó ðxˆ]þ{ùxÿ¥CŒ/õƒåÛ“üh?ááOùü}?ûþÞh×­ ¯ånïåo·ë[ùw×_yå•W^ùoåUÿ¯š5é–~’©—sØóU³ùч:®¾¾7y`Á’ÕˆöSL––o5_Àâ0«?‰ŸLQ .â·š×_%Oô)ÿNW­ãWÍZ!ñÅ­èÂõúïð]þ)þ°~íµühýUóåÜÀ×üSýùR¬?.ê µÛã8“|èööYž¿ÏåUÿ½’Wý§¼òÊ+¯üwò0ÕœqSé)Ï<€±2°Ý9 °plɽ%ó–4°‰_EâI+Ká 8ë¢Ë¡„§,5ÉËÄ[-&C—£%çÏ>ÈAæc|þC6ìÁIüd"ÀÕ”Å-–ÈKIbÏf™ZŒσžo§r¶‰/nÜ¢~ø.ÿYZiš›übýœ×?Þ§úçü­Mõg,Öߺ§÷_ÙOñv’7uoŸãùûd~òýýB"Ë3OPl=IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classXSObject.png0000644000175000017500000001024611363620006020713 0ustar borisboris‰PNG  IHDRR`ŒÖýSPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf¹º´K»ônÃôg¼|'ž]zÆ1\¸-IÃå»ñ²Æ—Ã0L«}.éÅt&ã0†!â ¥ÓºHcú³üq2iZÓa†°‘~wáb×i–N?X¤Ó:ŸQ𴛝þù¤óóizHÜô1}ödÒï~ H¿ý7Á™¤ß.驤ß×¥]úÖÒv^EÛ‰؉¸ýë/-pkGú÷¯h‚Y;Òvî¨.}A¢v¢v¢v¢v¢v¢v¢v¢v¢v¢v¢v¢v¢v¢v¢v¢v¢v¢v¢v¢v¢v¢v¢áé½Júùì¿ádzÿ†¥.}~]úü¾“~NN7óGøL‚òàï4ˆô#ýqyÈgþŽ¥!¥y9?>&ñ´¸aúö›¿èE}{~^~6éçÇå›Ë÷?§_ÇHÓ?5ÌÒ?‹ô|_ý´¦òÎÒËýuFi¹£ê5ýsji¾÷Ï|nŸO«{ÿãt÷þoÜ¥»¤âR«.íÒÔŽ´WÑv¢v¢níL!µ#mg ©i;wT—¾ Ñ;Ñ;Ñ;Ñ;Ñ;Ñ;Ñ;Ñ;Ñ;Ñ;Ñ;Ñ;Ñ;Ñ;Ñ;Ñ;Ñ;Ñ;Ñ;Ñ;Ñ;Ñ;Ñ;íz4ùÜî“’ÿs—vé»H§}€ÆÆ«í?†üͳ¶y†´ìQ“vº‘žiM—}”ÒÞEáòá‚cˆé›¼•M8…4íø“¿øÓ[qH[ì,ߤm¬¾¸Ž–¦ ãfç¢íVKñ$Ò¼‹ÒtWm¥Cx¢ôï®þûÅ’æ;ªì²´HãÙÖ´iy>­¥—Ûþrc…ËÓ@¾÷Ï!} .íÒ.íÒ7•¶ó*šL4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN»ÝÎ;½í¼{Þ¥]Ú”t3"•&N–Á¨ôašó˜«æn‡§^/ÝŒHÅa%Îâ ÜH_ÓzDj¸,àtœß4)uùqÈ3óQ_!ÏOL'ÕÝž:à:­G¤b>Î/,'§ ó5±Ž£¤©;ÃSH7#Rå¼{ÒôÈ<†rg|æ 5]F¤®¤!diþ˜Æ¦¦ ÷ÞðÔë祶ƒG×kº>#Äõ º»#IÇÝûµ4]§åb+=*ÝŒH…|<ætK‡ÉòEQÝû‰~oxªÿ;ªK»´K»ôäÒv^E“‰؉؉؉؉؉؉؉؉؉؉؉؉؉؉؉؉؉؉؉؉؉؉؉؉؉؉؉؉؉؉Øi×£Ûy§·wÏ»´K‘e^£l²L!ÍCFÃ:*•+³SÃ<ROM½tMó$ÁFQæèFZJ›O_ýÓHÇ$ ÓPLŒÓ†RÓTL#cš¢š7–Ù©!Ì?¬§¦^*¦Î†8.ƒ&7J¥/tB‰ÛÙ©<вNM½öŽŠ‰²ŽÄ\o)”gOê͆Ꜷs3/_Ó|W…é47WV{+ áQéþy©rGÅq™0ªÖtüBšÿÂc×ôž4ýӗɨå«?ÌŸ¼žü:F:¬óo%”;üòl9m(5¦é¨!Kåg…2;µH«©©óü;ê‡íúºôÿZúS]Ú¥o-mçU4™h€h€h€h€h€h€h€h€h€h€h€h€h€h€h€h€h€h€h€h€h€h€h€h€h€h€h€h€h€h€h€v=ºwzÛy÷¼K»´UéO[MÝL%aÒ[MCúÍVSØ裥?o55”ZúãVSyºæÒ·šJ_ýp=˜¸WúËý¥6KúÓVSCõt@®©³ÕÔ9®ÓŸ¶šÒäÔ)îýGêÒ.íÒ.}Si;¯¢ÉDìDìDìDìDìDìDìDìDìDìDìDìDìDìDìDìDìDìDìDìDìDìDìDìDìDìDìDìDìDìDì´ëÑí¼ÓÛλç]Ú¥mI—ßÕÏàlKSÕ#×ÏÒjRâv*°–kZ¦¤òÿ¦íò¹[—qÚe&2ÏK…˜7œJ»Ï¤G)-SRe:nÚ§ÞBêjiX¶ìÉ8R:OIåë´œ¶VÍô,ÛbÍ›fcýˆ£×t¹NÃ|Ö^úX¤ó½VÆiBxLúÛy©í—ë5M¤X¶›‚ÖôZzóÕÛ딓nŸOÓÖgëh!=ŸV÷~LNŰ<âÈëô9ui—vi—¾©´WÑd¢v¢v¢v¢v¢v¢v¢v¢v¢v¢v¢v¢v¢v¢v¢v¢v¢v¢v¢v¢v¢v¢v¢v¢v¢v¢v¢v¢v¢v¢v¢vÚõèvÞémçÝó.íÒæ¥õoùo?}6i=FÑ„tžú‰óÌÄý½eXév„ª>ítÒu„j\f{Î)­F¨ÒtÔ8æý¥ž#}|©jIëÁ¤u^ê|kz+=ëuZm4•¦£æy©3Þû¿¨K»´K»ôM¥í¼Š& ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° ° °Ó®G·óNo;ïžwi—¶)w=ŠeO©PæPÆt‚Ô8–£¹piÞKfÙWf¨6—Ö‡œH:®{õ”eÓ®CÓvR·ÛJ!ÒédÃ!ÞHç!”Pmèsï"8ôŽJ¸ø…ôjë!|MËmSIËNSÏ“>ZZŽåÚŽE ó°ÔòÉ/‡&—θ8m-•áJ£iO¡iéuã)LZŽä+Ò2{²žkæízæŸå¤ó‘|E:ÞHc%½;xMçët>C.Á7|¢ôÁy©úŽÊFMã°9Óðkz-]®Óx¶¯~y>w;+÷~úLX×tÝxŠ»N·ìï‡MïÄH‡ŸÆbO#ÍHS3ÿŸÿŸf¤Í¼Žú§é _›¶ó*šL4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN4ÀN»ÝÎ;½ Ï¡ti—6$­vCY÷–ÙþüI¤õaby:áäÒj¤<%‘ŽåæQ´sHËîRëg¡Lž é§‘–Ý¥†aXÏgK¿„uLíÒ²»Ôµ4„§IŸ´¿T¹£Êµ N=oM÷õ㽿J×ët|Îuúéò|º Xerces-C++: Hash2KeysSetOf.hpp File Reference

    Hash2KeysSetOf.hpp File Reference

    Go to the source code of this file.

    Classes

    struct  Hash2KeysSetBucketElem
    class  Hash2KeysSetOf< THasher >
    class  Hash2KeysSetOfEnumerator< THasher >

    Defines

    #define XERCESC_INCLUDE_GUARD_HASH2KEYSSETOF_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_HASH2KEYSSETOF_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMCDATASection.html0000644000175000017500000002141611363620005022113 0ustar borisboris Xerces-C++: DOMCDATASection Class Reference

    DOMCDATASection Class Reference

    CDATA sections are used to escape blocks of text containing characters that would otherwise be regarded as markup. More...

    Inheritance diagram for DOMCDATASection:

    DOMText DOMCharacterData DOMNode

    List of all members.

    Public Member Functions

    Destructor
    virtual ~DOMCDATASection ()
     Destructor.

    Protected Member Functions

    Hidden constructors
     DOMCDATASection ()
     DOMCDATASection (const DOMCDATASection &other)


    Detailed Description

    CDATA sections are used to escape blocks of text containing characters that would otherwise be regarded as markup.

    The only delimiter that is recognized in a CDATA section is the "]]&gt;" string that ends the CDATA section. CDATA sections cannot be nested. Their primary purpose is for including material such as XML fragments, without needing to escape all the delimiters.

    The data attribute of the DOMText node holds the text that is contained by the CDATA section. Note that this may contain characters that need to be escaped outside of CDATA sections and that, depending on the character encoding ("charset") chosen for serialization, it may be impossible to write out some characters as part of a CDATA section.

    The DOMCDATASection interface inherits from the DOMCharacterData interface through the DOMText interface. Adjacent DOMCDATASection nodes are not merged by use of the normalize method of the DOMNode interface. Because no markup is recognized within a DOMCDATASection, character numeric references cannot be used as an escape mechanism when serializing. Therefore, action needs to be taken when serializing a DOMCDATASection with a character encoding where some of the contained characters cannot be represented. Failure to do so would not produce well-formed XML.One potential solution in the serialization process is to end the CDATA section before the character, output the character using a character reference or entity reference, and open a new CDATA section for any further characters in the text node. Note, however, that some code conversion libraries at the time of writing do not return an error or exception when a character is missing from the encoding, making the task of ensuring that data is not corrupted on serialization more difficult.

    See also the Document Object Model (DOM) Level 2 Core Specification.

    Since:
    DOM Level 1

    Constructor & Destructor Documentation

    DOMCDATASection::DOMCDATASection (  )  [protected]

    DOMCDATASection::DOMCDATASection ( const DOMCDATASection other  )  [protected]

    virtual DOMCDATASection::~DOMCDATASection (  )  [virtual]

    Destructor.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLStringTokenizer_8hpp.html0000644000175000017500000000473411363620005023051 0ustar borisboris Xerces-C++: XMLStringTokenizer.hpp File Reference

    XMLStringTokenizer.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLStringTokenizer
     The string tokenizer class breaks a string into tokens. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_XMLSTRINGTOKENIZER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XMLSTRINGTOKENIZER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/IllegalArgumentException_8hpp-source.html0000644000175000017500000001105211363620004025546 0ustar borisboris Xerces-C++: IllegalArgumentException.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMError.html0000644000175000017500000004255511363620005021052 0ustar borisboris Xerces-C++: DOMError Class Reference

    DOMError Class Reference

    DOMError is an interface that describes an error. More...

    List of all members.

    Public Types

    Public constants
    enum  ErrorSeverity { DOM_SEVERITY_WARNING = 1, DOM_SEVERITY_ERROR = 2, DOM_SEVERITY_FATAL_ERROR = 3 }
     The severity of the error described by the DOMError. More...

    Public Member Functions

    Destructor
    virtual ~DOMError ()
     Destructor.
    Functions introduced in DOM Level 3
    virtual ErrorSeverity getSeverity () const =0
     Get the severity of the error.
    virtual const XMLChgetMessage () const =0
     Get the message describing the error that occured.
    virtual DOMLocatorgetLocation () const =0
     Get the location of the error.
    virtual void * getRelatedException () const =0
     The related platform dependent exception if any.
    virtual const XMLChgetType () const =0
     A XMLCh* indicating which related data is expected in relatedData.
    virtual void * getRelatedData () const =0
     The related DOMError::getType dependent data if any.

    Protected Member Functions

    Hidden constructors
     DOMError ()


    Detailed Description

    DOMError is an interface that describes an error.

    See also:
    DOMErrorHandler::handleError
    Since:
    DOM Level 3

    Member Enumeration Documentation

    The severity of the error described by the DOMError.

    DOM_SEVERITY_ERROR: The severity of the error described by the DOMError is error. A DOM_SEVERITY_ERROR may not cause the processing to stop if the error can be recovered, unless DOMErrorHandler::handleError() returns false.

    DOM_SEVERITY_FATAL_ERROR The severity of the error described by the DOMError is fatal error. A DOM_SEVERITY_FATAL_ERROR will cause the normal processing to stop. The return value of DOMErrorHandler::handleError() is ignored unless the implementation chooses to continue, in which case the behavior becomes undefined.

    DOM_SEVERITY_WARNING The severity of the error described by the DOMError is warning. A DOM_SEVERITY_WARNING will not cause the processing to stop, unless DOMErrorHandler::handleError() returns false.

    Since:
    DOM Level 3
    Enumerator:
    DOM_SEVERITY_WARNING 
    DOM_SEVERITY_ERROR 
    DOM_SEVERITY_FATAL_ERROR 


    Constructor & Destructor Documentation

    DOMError::DOMError (  )  [protected]

    virtual DOMError::~DOMError (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual ErrorSeverity DOMError::getSeverity (  )  const [pure virtual]

    Get the severity of the error.

    See also:
    setSeverity
    Since:
    DOM Level 3

    virtual const XMLCh* DOMError::getMessage (  )  const [pure virtual]

    Get the message describing the error that occured.

    Since:
    DOM Level 3

    virtual DOMLocator* DOMError::getLocation (  )  const [pure virtual]

    Get the location of the error.

    Since:
    DOM Level 3

    virtual void* DOMError::getRelatedException (  )  const [pure virtual]

    The related platform dependent exception if any.

    Since:
    DOM Level 3

    virtual const XMLCh* DOMError::getType (  )  const [pure virtual]

    A XMLCh* indicating which related data is expected in relatedData.

    Users should refer to the specification of the error in order to find its XMLCh* type and relatedData definitions if any.

    Note: As an example, DOMDocument::normalizeDocument() does generate warnings when the "split-cdata-sections" parameter is in use. Therefore, the method generates a DOM_SEVERITY_WARNING with type "cdata-sections-splitted" and the first DOMCDATASection node in document order resulting from the split is returned by the relatedData attribute.

    Since:
    DOM Level 3

    virtual void* DOMError::getRelatedData (  )  const [pure virtual]

    The related DOMError::getType dependent data if any.

    Since:
    DOM Level 3


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLNetHTTPInfo.html0000644000175000017500000002152711363620006022041 0ustar borisboris Xerces-C++: XMLNetHTTPInfo Class Reference

    XMLNetHTTPInfo Class Reference

    List of all members.

    Public Types

    enum  HTTPMethod { GET, PUT, POST }

    Public Member Functions

     XMLNetHTTPInfo ()

    Public Attributes

    HTTPMethod fHTTPMethod
    const char * fHeaders
    XMLSize_t fHeadersLen
    const char * fPayload
    XMLSize_t fPayloadLen


    Member Enumeration Documentation

    Enumerator:
    GET 
    PUT 
    POST 


    Constructor & Destructor Documentation

    XMLNetHTTPInfo::XMLNetHTTPInfo (  ) 


    Member Data Documentation


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XSAttributeDeclaration_8hpp.html0000644000175000017500000000450511363620005023707 0ustar borisboris Xerces-C++: XSAttributeDeclaration.hpp File Reference

    XSAttributeDeclaration.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XSAttributeDeclaration

    Defines

    #define XERCESC_INCLUDE_GUARD_XSATTRIBUTEDECLARATION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XSATTRIBUTEDECLARATION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLDateTime-members.html0000644000175000017500000003671411363620006023127 0ustar borisboris Xerces-C++: Member List

    XMLDateTime Member List

    This is the complete list of members for XMLDateTime, including all inherited members.

    BigDecimal enum valueXMLNumber
    CentYear enum valueXMLDateTime
    compare(const XMLDateTime *const , const XMLDateTime *const)XMLDateTime [static]
    compare(const XMLDateTime *const , const XMLDateTime *const , bool)XMLDateTime [static]
    compareOrder(const XMLDateTime *const , const XMLDateTime *const)XMLDateTime [static]
    DateTime enum valueXMLNumber
    Day enum valueXMLDateTime
    Double enum valueXMLNumber
    EQUAL enum valueXMLNumber
    Float enum valueXMLNumber
    getDateCanonicalRepresentation(MemoryManager *const memMgr) const XMLDateTime
    getDateTimeCanonicalRepresentation(MemoryManager *const memMgr) const XMLDateTime
    getFormattedString() const XMLDateTime [virtual]
    getRawData() const XMLDateTime [virtual]
    getSign() const XMLDateTime [virtual]
    getTimeCanonicalRepresentation(MemoryManager *const memMgr) const XMLDateTime
    GREATER_THAN enum valueXMLNumber
    Hour enum valueXMLDateTime
    INDETERMINATE enum valueXMLNumber
    LESS_THAN enum valueXMLNumber
    loadNumber(XMLNumber::NumberType numType, XSerializeEngine &serEng)XMLNumber [static]
    MiliSecond enum valueXMLDateTime
    Minute enum valueXMLDateTime
    Month enum valueXMLDateTime
    NumberType enum nameXMLNumber
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    operator=(const XMLDateTime &)XMLDateTime
    parseDate()XMLDateTime
    parseDateTime()XMLDateTime
    parseDay()XMLDateTime
    parseDuration()XMLDateTime
    parseMonth()XMLDateTime
    parseMonthDay()XMLDateTime
    parseTime()XMLDateTime
    parseYear()XMLDateTime
    parseYearMonth()XMLDateTime
    Second enum valueXMLDateTime
    setBuffer(const XMLCh *const)XMLDateTime
    TOTAL_SIZE enum valueXMLDateTime
    UnKnown enum valueXMLNumber
    utc enum valueXMLDateTime
    UTC_NEG enum valueXMLDateTime
    UTC_POS enum valueXMLDateTime
    UTC_STD enum valueXMLDateTime
    UTC_UNKNOWN enum valueXMLDateTime
    utcType enum nameXMLDateTime
    valueIndex enum nameXMLDateTime
    XMemory()XMemory [protected]
    XMLDateTime(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLDateTime
    XMLDateTime(const XMLCh *const, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLDateTime
    XMLDateTime(const XMLDateTime &)XMLDateTime
    XMLNumber()XMLNumber [protected]
    XMLNumber(const XMLNumber &)XMLNumber [protected]
    XSValue classXMLDateTime [friend]
    ~XMLDateTime()XMLDateTime
    ~XMLNumber()XMLNumber [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLLCPTranscoder-members.html0000644000175000017500000001315511363620006024070 0ustar borisboris Xerces-C++: Member List

    XMLLCPTranscoder Member List

    This is the complete list of members for XMLLCPTranscoder, including all inherited members.

    calcRequiredSize(const char *const srcText, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)=0XMLLCPTranscoder [pure virtual]
    calcRequiredSize(const XMLCh *const srcText, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)=0XMLLCPTranscoder [pure virtual]
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    transcode(const XMLCh *const toTranscode, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)=0XMLLCPTranscoder [pure virtual]
    transcode(const char *const toTranscode, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)=0XMLLCPTranscoder [pure virtual]
    transcode(const char *const toTranscode, XMLCh *const toFill, const XMLSize_t maxChars, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)=0XMLLCPTranscoder [pure virtual]
    transcode(const XMLCh *const toTranscode, char *const toFill, const XMLSize_t maxBytes, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)=0XMLLCPTranscoder [pure virtual]
    XMemory()XMemory [protected]
    XMLLCPTranscoder()XMLLCPTranscoder [protected]
    ~XMLLCPTranscoder()XMLLCPTranscoder [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSModel.png0000644000175000017500000000053011363620006020540 0ustar borisboris‰PNG  IHDRCP°¦ÕuPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfîIDATH‰íÓK ÐdÓu’„8z!W½ÿLB¥P«T§‹ŽS`>Ïp ·^¹À5uÊáˆzÉû,b•Ím"l]±¬UÕóOĶ‹šXsT©‰o¢‰ö¬Mõ%æ†H³—L|PˆgnH°æE™î%Î.bÌvow‘.ÑÔ%é€dÃG²,ÃËÌ/d¼ï@†qÜìt¢“œä$ßîê¥=!oÌ€ÖǼ€å‘ FBðG™ )FÊ?Gôfsh£3‰>×—„òÓæ©»úµíÖ„ÖOå ˽Ì÷uõD»üÿEúÉtÆ}éÎnÒIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/XSNamedMap_8hpp-source.html0000644000175000017500000003001111363620005022545 0ustar borisboris Xerces-C++: XSNamedMap.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DocumentHandler_8hpp-source.html0000644000175000017500000002436211363620004023677 0ustar borisboris Xerces-C++: DocumentHandler.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/SchemaDateTimeException_8hpp.html0000644000175000017500000000401211363620005024010 0ustar borisboris Xerces-C++: SchemaDateTimeException.hpp File Reference

    SchemaDateTimeException.hpp File Reference

    Go to the source code of this file.

    Defines

    #define SCHEMA_DATETIME_EXCEPTION_HPP


    Define Documentation

    #define SCHEMA_DATETIME_EXCEPTION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XSSimpleTypeDefinition_8hpp.html0000644000175000017500000000450511363620005023702 0ustar borisboris Xerces-C++: XSSimpleTypeDefinition.hpp File Reference

    XSSimpleTypeDefinition.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XSSimpleTypeDefinition

    Defines

    #define XERCESC_INCLUDE_GUARD_XSSIMPLETYPEDEFINITION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XSSIMPLETYPEDEFINITION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classWrapper4InputSource.png0000644000175000017500000000071311363620006023135 0ustar borisboris‰PNG  IHDRˆP0ù #PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfaIDATX…í•QnÃ0†ÍËžÁ7`½Áv¡>åþG`×!ž×$M4¥Dr þùL°¥¤ï,}}¶[@6@˜HF²¼3[(›ó°Ü¥ *²A8lõwC,…=DKb)‡$ÌL; Y²Êçd…dÅÊÀ»*i¥ÔìýæÒØâ„äW õtrIrë m¸{¢™Ù=±$Jvl+gÖ—ðæ?, #È)¿Œu»oÐü äcº dšî\çt€$ 9B'XÂã¥B@ưg¼ KF{®@¨ƒàPç IöAÉÑRJˆ ñÑ%Ô:€œ\uµ'h{ ®ÉÅsQËXFÄu™T9–" "f…>´¶8OÛ+A — vKAÔ´ Èìˆê*Ä]Š~¤H–ì!Øë!®'µåX#à!4ïÙA¤ÝèOg†hS„ Èýé8³Ìßá©]òŠd9ã—ñìþ·íˆQIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/globals_0x78.html0000644000175000017500000012116711363620007020603 0ustar borisboris Xerces-C++: Class Members
    Here is a list of all file members with links to the files they belong to:

    - x -


    Generated on Wed Apr 21 17:55:51 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLErrs-members.html0000644000175000017500000021717511363620006022350 0ustar borisboris Xerces-C++: Member List

    XMLErrs Member List

    This is the complete list of members for XMLErrs, including all inherited members.

    AllContentError enum valueXMLErrs
    AllContentLimited enum valueXMLErrs
    AnnotationError enum valueXMLErrs
    AnonComplexTypeWithName enum valueXMLErrs
    AnonSimpleTypeWithName enum valueXMLErrs
    AnyAttributeBeforeAttribute enum valueXMLErrs
    AnyAttributeContentError enum valueXMLErrs
    AtomicItemType enum valueXMLErrs
    AttDeclPropCorrect3 enum valueXMLErrs
    AttDeclPropCorrect5 enum valueXMLErrs
    AttGroupContentError enum valueXMLErrs
    AttGrpPropCorrect3 enum valueXMLErrs
    AttListAlreadyExists enum valueXMLErrs
    AttrAlreadyUsedInSTag enum valueXMLErrs
    AttributeDefaultFixedValue enum valueXMLErrs
    AttributeDisallowedGlobal enum valueXMLErrs
    AttributeDisallowedLocal enum valueXMLErrs
    AttributeRefContentError enum valueXMLErrs
    AttributeRequiredGlobal enum valueXMLErrs
    AttributeRequiredLocal enum valueXMLErrs
    AttributeSimpleTypeNotFound enum valueXMLErrs
    AttributeWithTypeAndSimpleType enum valueXMLErrs
    AttUseCorrect enum valueXMLErrs
    BadAttDerivation_1 enum valueXMLErrs
    BadAttDerivation_2 enum valueXMLErrs
    BadAttDerivation_3 enum valueXMLErrs
    BadAttDerivation_4 enum valueXMLErrs
    BadAttDerivation_5 enum valueXMLErrs
    BadAttDerivation_6 enum valueXMLErrs
    BadAttDerivation_7 enum valueXMLErrs
    BadAttDerivation_8 enum valueXMLErrs
    BadAttDerivation_9 enum valueXMLErrs
    BadDigitForRadix enum valueXMLErrs
    BadMinMaxAllCT enum valueXMLErrs
    BadMinMaxAllElem enum valueXMLErrs
    BadSchemaLocation enum valueXMLErrs
    BadSequenceInCharData enum valueXMLErrs
    BadStandalone enum valueXMLErrs
    BadXMLEncoding enum valueXMLErrs
    BadXMLVersion enum valueXMLErrs
    BaseNotComplexType enum valueXMLErrs
    BaseTypeNotFound enum valueXMLErrs
    BracketInAttrValue enum valueXMLErrs
    CDATAOutsideOfContent enum valueXMLErrs
    CircularSubsGroup enum valueXMLErrs
    Codes enum nameXMLErrs
    ColonNotLegalWithNS enum valueXMLErrs
    CommentsMustStartWith enum valueXMLErrs
    ConditionalSectInIntSubset enum valueXMLErrs
    ContentError enum valueXMLErrs
    ContradictoryEncoding enum valueXMLErrs
    CT_SimpleTypeChildRequired enum valueXMLErrs
    DatatypeValidatorCreationError enum valueXMLErrs
    DeclarationNoSchemaLocation enum valueXMLErrs
    DeclarationNotFound enum valueXMLErrs
    DeclStringRep enum valueXMLErrs
    DeclStringsInWrongOrder enum valueXMLErrs
    DisallowedBaseDerivation enum valueXMLErrs
    DisallowedSimpleTypeExtension enum valueXMLErrs
    DOMErrorType(const XMLErrs::Codes toCheck)XMLErrs [static]
    DOMLevel1Node enum valueXMLErrs
    DuplicateAnyAttribute enum valueXMLErrs
    DuplicateAttInDerivation enum valueXMLErrs
    DuplicateAttribute enum valueXMLErrs
    DuplicateDocTypeDecl enum valueXMLErrs
    DuplicateElementDeclaration enum valueXMLErrs
    DuplicateFacet enum valueXMLErrs
    DuplicateGlobalDeclaration enum valueXMLErrs
    DuplicateGlobalType enum valueXMLErrs
    DuplicateRefAttribute enum valueXMLErrs
    E_HighBounds enum valueXMLErrs
    E_LowBounds enum valueXMLErrs
    ElementWithFixedAndDefault enum valueXMLErrs
    ElementWithTypeAndAnonType enum valueXMLErrs
    ElemIDValueConstraint enum valueXMLErrs
    ELTSchemaNS enum valueXMLErrs
    EmptiableMixedContent enum valueXMLErrs
    EmptyComplexRestrictionDerivation enum valueXMLErrs
    EmptyMainEntity enum valueXMLErrs
    EmptySimpleTypeContent enum valueXMLErrs
    EncodingRequired enum valueXMLErrs
    EndedWithTagsOnStack enum valueXMLErrs
    EntityExpansionLimitExceeded enum valueXMLErrs
    EntityNotFound enum valueXMLErrs
    EntityPropogated enum valueXMLErrs
    errorType(const XMLErrs::Codes toCheck)XMLErrs [static]
    Expected2ndSurrogateChar enum valueXMLErrs
    ExpectedAsterisk enum valueXMLErrs
    ExpectedAttributeType enum valueXMLErrs
    ExpectedAttrName enum valueXMLErrs
    ExpectedAttrValue enum valueXMLErrs
    ExpectedChoiceOrCloseParen enum valueXMLErrs
    ExpectedComment enum valueXMLErrs
    ExpectedCommentOrCDATA enum valueXMLErrs
    ExpectedCommentOrPI enum valueXMLErrs
    ExpectedContentSpecExpr enum valueXMLErrs
    ExpectedDeclString enum valueXMLErrs
    ExpectedDefAttrDecl enum valueXMLErrs
    ExpectedElementName enum valueXMLErrs
    ExpectedEndOfConditional enum valueXMLErrs
    ExpectedEndOfTagX enum valueXMLErrs
    ExpectedEntityRefName enum valueXMLErrs
    ExpectedEntityValue enum valueXMLErrs
    ExpectedEnumSepOrParen enum valueXMLErrs
    ExpectedEnumValue enum valueXMLErrs
    ExpectedEqSign enum valueXMLErrs
    ExpectedINCLUDEBracket enum valueXMLErrs
    ExpectedIncOrIgn enum valueXMLErrs
    ExpectedMarkup enum valueXMLErrs
    ExpectedMarkupDecl enum valueXMLErrs
    ExpectedNDATA enum valueXMLErrs
    ExpectedNotationName enum valueXMLErrs
    ExpectedNumericalCharRef enum valueXMLErrs
    ExpectedOpenParen enum valueXMLErrs
    ExpectedOpenSquareBracket enum valueXMLErrs
    ExpectedPEName enum valueXMLErrs
    ExpectedPublicId enum valueXMLErrs
    ExpectedQuotedString enum valueXMLErrs
    ExpectedSeqChoiceLeaf enum valueXMLErrs
    ExpectedSeqOrCloseParen enum valueXMLErrs
    ExpectedSimpleTypeInList enum valueXMLErrs
    ExpectedSimpleTypeInRestriction enum valueXMLErrs
    ExpectedSimpleTypeInUnion enum valueXMLErrs
    ExpectedSystemOrPublicId enum valueXMLErrs
    ExpectedWhitespace enum valueXMLErrs
    ExtraCloseSquare enum valueXMLErrs
    F_HighBounds enum valueXMLErrs
    F_LowBounds enum valueXMLErrs
    FeatureUnsupported enum valueXMLErrs
    ForbiddenDerivation enum valueXMLErrs
    ForbiddenDerivationByExtension enum valueXMLErrs
    ForbiddenDerivationByRestriction enum valueXMLErrs
    GroupContentError enum valueXMLErrs
    HexRadixMustBeLowerCase enum valueXMLErrs
    IC_BadContent enum valueXMLErrs
    IC_DuplicateDecl enum valueXMLErrs
    IC_KeyRefCardinality enum valueXMLErrs
    IC_KeyRefReferNotFound enum valueXMLErrs
    IC_XPathExprMissing enum valueXMLErrs
    IllegalRefInStandalone enum valueXMLErrs
    IllegalSequenceInComment enum valueXMLErrs
    Import_1_1 enum valueXMLErrs
    Import_1_2 enum valueXMLErrs
    ImportNamespaceDifference enum valueXMLErrs
    IncludeNamespaceDifference enum valueXMLErrs
    InvalidAnnotationContent enum valueXMLErrs
    InvalidAttributeContent enum valueXMLErrs
    InvalidAttrName enum valueXMLErrs
    InvalidAttTNS enum valueXMLErrs
    InvalidAttValue enum valueXMLErrs
    InvalidBlockValue enum valueXMLErrs
    InvalidCharacter enum valueXMLErrs
    InvalidCharacterInAttrValue enum valueXMLErrs
    InvalidCharacterInIntSubset enum valueXMLErrs
    InvalidCharacterRef enum valueXMLErrs
    InvalidChildFollowingConplexContent enum valueXMLErrs
    InvalidChildFollowingSimpleContent enum valueXMLErrs
    InvalidChildInComplexContent enum valueXMLErrs
    InvalidChildInComplexType enum valueXMLErrs
    InvalidChildInSimpleContent enum valueXMLErrs
    InvalidComplexContent enum valueXMLErrs
    InvalidComplexTypeBase enum valueXMLErrs
    InvalidContentRestriction enum valueXMLErrs
    InvalidDeclarationName enum valueXMLErrs
    InvalidDocumentStructure enum valueXMLErrs
    InvalidElementContent enum valueXMLErrs
    InvalidElementName enum valueXMLErrs
    InvalidEntityRefName enum valueXMLErrs
    InvalidFacetName enum valueXMLErrs
    InvalidFinalValue enum valueXMLErrs
    InvalidMin2MaxOccurs enum valueXMLErrs
    InvalidNSReference enum valueXMLErrs
    InvalidPublicIdChar enum valueXMLErrs
    InvalidRedefine enum valueXMLErrs
    InvalidRootElemInDOCTYPE enum valueXMLErrs
    InvalidSimpleContent enum valueXMLErrs
    InvalidSimpleContentBase enum valueXMLErrs
    InvalidSubstitutionGroupElement enum valueXMLErrs
    InvalidTargetNSValue enum valueXMLErrs
    InvalidXMLSchemaRoot enum valueXMLErrs
    isError(const XMLErrs::Codes toCheck)XMLErrs [static]
    isFatal(const XMLErrs::Codes toCheck)XMLErrs [static]
    isWarning(const XMLErrs::Codes toCheck)XMLErrs [static]
    ListUnionRestrictionError enum valueXMLErrs
    MinMaxOnGroupChild enum valueXMLErrs
    MixedOrElementOnly enum valueXMLErrs
    MoreEndThanStartTags enum valueXMLErrs
    NDATANotValidForPE enum valueXMLErrs
    NestedCDATA enum valueXMLErrs
    NoCircularDefinition enum valueXMLErrs
    NoEmptyStrNamespace enum valueXMLErrs
    NoError enum valueXMLErrs
    NoExtRefsInAttValue enum valueXMLErrs
    NoNameGlobalElement enum valueXMLErrs
    NoNameRefAttGroup enum valueXMLErrs
    NoNameRefAttribute enum valueXMLErrs
    NoNameRefElement enum valueXMLErrs
    NoNameRefGroup enum valueXMLErrs
    NoNotationType enum valueXMLErrs
    NoPIStartsWithXML enum valueXMLErrs
    NoRepInMixed enum valueXMLErrs
    NoRootElemInDOCTYPE enum valueXMLErrs
    NotAllContent enum valueXMLErrs
    Notation_DeclNotFound enum valueXMLErrs
    NotationAlreadyExists enum valueXMLErrs
    NotExpressibleWildCardIntersection enum valueXMLErrs
    NotOptionalDefaultAttValue enum valueXMLErrs
    NotSimpleOrMixedElement enum valueXMLErrs
    NotValidAfterContent enum valueXMLErrs
    NoUnparsedEntityRefs enum valueXMLErrs
    NoUseOfxmlnsAsPrefix enum valueXMLErrs
    NoUseOfxmlnsURI enum valueXMLErrs
    NoXMLNSAsElementPrefix enum valueXMLErrs
    NSDeclInvalid enum valueXMLErrs
    OnlyAnnotationExpected enum valueXMLErrs
    PartialMarkupInEntity enum valueXMLErrs
    PartialTagMarkupError enum valueXMLErrs
    PEBetweenDecl enum valueXMLErrs
    PEPropogated enum valueXMLErrs
    PERefInMarkupInIntSubset enum valueXMLErrs
    PINameExpected enum valueXMLErrs
    PrefixXMLNotMatchXMLURI enum valueXMLErrs
    RecursiveEntity enum valueXMLErrs
    Redefine_AttGroupRefCount enum valueXMLErrs
    Redefine_DeclarationNotFound enum valueXMLErrs
    Redefine_GroupRefCount enum valueXMLErrs
    Redefine_InvalidChild enum valueXMLErrs
    Redefine_InvalidComplexType enum valueXMLErrs
    Redefine_InvalidComplexTypeBase enum valueXMLErrs
    Redefine_InvalidGroupMinMax enum valueXMLErrs
    Redefine_InvalidSimpleType enum valueXMLErrs
    Redefine_InvalidSimpleTypeBase enum valueXMLErrs
    RedefineNamespaceDifference enum valueXMLErrs
    RefElementNotFound enum valueXMLErrs
    SchemaElementContentError enum valueXMLErrs
    SchemaScanFatalError enum valueXMLErrs
    SimpleTypeContentError enum valueXMLErrs
    SimpleTypeDerivationByListError enum valueXMLErrs
    StandaloneNotLegal enum valueXMLErrs
    SubstitutionGroupTypeMismatch enum valueXMLErrs
    TextDeclNotLegalHere enum valueXMLErrs
    TopLevelAttributeNotFound enum valueXMLErrs
    TopLevelNoNameAttribute enum valueXMLErrs
    TopLevelNoNameComplexType enum valueXMLErrs
    TypeNotFound enum valueXMLErrs
    UndeclaredElemInAttList enum valueXMLErrs
    UndeclaredElemInCM enum valueXMLErrs
    Unexpected2ndSurrogateChar enum valueXMLErrs
    UnexpectedEOE enum valueXMLErrs
    UnexpectedWhitespace enum valueXMLErrs
    UnknownComplexType enum valueXMLErrs
    UnknownPrefix enum valueXMLErrs
    UnknownSimpleType enum valueXMLErrs
    UnresolvedPrefix enum valueXMLErrs
    UnspecifiedBase enum valueXMLErrs
    UnsupportedXMLVersion enum valueXMLErrs
    UnterminatedCDATASection enum valueXMLErrs
    UnterminatedCharRef enum valueXMLErrs
    UnterminatedComment enum valueXMLErrs
    UnterminatedContentModel enum valueXMLErrs
    UnterminatedDOCTYPE enum valueXMLErrs
    UnterminatedElementDecl enum valueXMLErrs
    UnterminatedEndTag enum valueXMLErrs
    UnterminatedEntityDecl enum valueXMLErrs
    UnterminatedEntityLiteral enum valueXMLErrs
    UnterminatedEntityRef enum valueXMLErrs
    UnterminatedNotationDecl enum valueXMLErrs
    UnterminatedPI enum valueXMLErrs
    UnterminatedStartTag enum valueXMLErrs
    UnterminatedXMLDecl enum valueXMLErrs
    W_HighBounds enum valueXMLErrs
    W_LowBounds enum valueXMLErrs
    WS_CollapseExpected enum valueXMLErrs
    XIncludeCannotOpenFile enum valueXMLErrs
    XIncludeCircularInclusionDocIncludesSelf enum valueXMLErrs
    XIncludeCircularInclusionLoop enum valueXMLErrs
    XIncludeConflictingEntity enum valueXMLErrs
    XIncludeConflictingNotation enum valueXMLErrs
    XIncludeDisallowedChild enum valueXMLErrs
    XIncludeIncludeFailedNoFallback enum valueXMLErrs
    XIncludeIncludeFailedResourceError enum valueXMLErrs
    XIncludeInvalidParseVal enum valueXMLErrs
    XIncludeMultipleFallbackElems enum valueXMLErrs
    XIncludeNoHref enum valueXMLErrs
    XIncludeOrphanFallback enum valueXMLErrs
    XIncludeResourceErrorWarning enum valueXMLErrs
    XIncludeXPointerNotSupported enum valueXMLErrs
    XMLDeclMustBeFirst enum valueXMLErrs
    XMLDeclMustBeLowerCase enum valueXMLErrs
    XMLException_Error enum valueXMLErrs
    XMLException_Fatal enum valueXMLErrs
    XMLException_Warning enum valueXMLErrs
    XMLURINotMatchXMLPrefix enum valueXMLErrs
    XMLVersionRequired enum valueXMLErrs


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSTypeDefinition.html0000644000175000017500000007077711363620006022636 0ustar borisboris Xerces-C++: XSTypeDefinition Class Reference

    XSTypeDefinition Class Reference

    This class represents a complexType or simpleType definition. More...

    Inheritance diagram for XSTypeDefinition:

    XSObject XMemory XSComplexTypeDefinition XSSimpleTypeDefinition

    List of all members.

    Public Types

    enum  TYPE_CATEGORY { COMPLEX_TYPE = 15, SIMPLE_TYPE = 16 }

    Public Member Functions

    Constructors
     XSTypeDefinition (TYPE_CATEGORY typeCategory, XSTypeDefinition *const xsBaseType, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     The default constructor.
    Destructor
    virtual ~XSTypeDefinition ()
    overloaded XSObject methods
    virtual const XMLChgetName () const =0
     The name of type NCName of this declaration as defined in XML Namespaces.
    virtual const XMLChgetNamespace ()=0
     The [target namespace] of this object, or null if it is unspecified.
    virtual XSNamespaceItemgetNamespaceItem ()=0
     A namespace schema information item corresponding to the target namespace of the component, if it's globally declared; or null otherwise.
    XSTypeDefinition methods
    TYPE_CATEGORY getTypeCategory () const
     Return whether this type definition is a simple type or complex type.
    virtual XSTypeDefinitiongetBaseType ()=0
     {base type definition}: either a simple type definition or a complex type definition.
    bool isFinal (short toTest)
     {final}.
    short getFinal () const
     For complex types the returned value is a bit combination of the subset of {DERIVATION_EXTENSION, DERIVATION_RESTRICTION} corresponding to final set of this type or DERIVATION_NONE.
    virtual bool getAnonymous () const =0
     A boolean that specifies if the type definition is anonymous.
    virtual bool derivedFromType (const XSTypeDefinition *const ancestorType)=0
     Convenience method: check if this type is derived from the given ancestorType.
    bool derivedFrom (const XMLCh *typeNamespace, const XMLCh *name)
     Convenience method: check if this type is derived from the given ancestor type.

    Protected Attributes

    TYPE_CATEGORY fTypeCategory
    short fFinal
    XSTypeDefinitionfBaseType


    Detailed Description

    This class represents a complexType or simpleType definition.

    This is *always* owned by the validator /parser object from which it is obtained.


    Member Enumeration Documentation

    Enumerator:
    COMPLEX_TYPE  This constant value signifies a complex type.
    SIMPLE_TYPE  This constant value signifies a simple type.


    Constructor & Destructor Documentation

    XSTypeDefinition::XSTypeDefinition ( TYPE_CATEGORY  typeCategory,
    XSTypeDefinition *const   xsBaseType,
    XSModel *const   xsModel,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    The default constructor.

    Parameters:
    typeCategory 
    xsBaseType 
    xsModel 
    manager The configurable memory manager

    virtual XSTypeDefinition::~XSTypeDefinition (  )  [virtual]


    Member Function Documentation

    virtual const XMLCh* XSTypeDefinition::getName (  )  const [pure virtual]

    The name of type NCName of this declaration as defined in XML Namespaces.

    Reimplemented from XSObject.

    Implemented in XSComplexTypeDefinition, and XSSimpleTypeDefinition.

    virtual const XMLCh* XSTypeDefinition::getNamespace (  )  [pure virtual]

    The [target namespace] of this object, or null if it is unspecified.

    Reimplemented from XSObject.

    Implemented in XSComplexTypeDefinition, and XSSimpleTypeDefinition.

    virtual XSNamespaceItem* XSTypeDefinition::getNamespaceItem (  )  [pure virtual]

    A namespace schema information item corresponding to the target namespace of the component, if it's globally declared; or null otherwise.

    Reimplemented from XSObject.

    Implemented in XSComplexTypeDefinition, and XSSimpleTypeDefinition.

    XSTypeDefinition::TYPE_CATEGORY XSTypeDefinition::getTypeCategory (  )  const

    Return whether this type definition is a simple type or complex type.

    References fTypeCategory.

    virtual XSTypeDefinition* XSTypeDefinition::getBaseType (  )  [pure virtual]

    {base type definition}: either a simple type definition or a complex type definition.

    Implemented in XSComplexTypeDefinition, and XSSimpleTypeDefinition.

    bool XSTypeDefinition::isFinal ( short  toTest  ) 

    {final}.

    For complex type definition it is a subset of {extension, restriction}. For simple type definition it is a subset of {extension, list, restriction, union}.

    Parameters:
    toTest Extension, restriction, list, union constants (defined in XSObject).
    Returns:
    True if toTest is in the final set, otherwise false.

    short XSTypeDefinition::getFinal (  )  const

    For complex types the returned value is a bit combination of the subset of {DERIVATION_EXTENSION, DERIVATION_RESTRICTION} corresponding to final set of this type or DERIVATION_NONE.

    For simple types the returned value is a bit combination of the subset of { DERIVATION_RESTRICTION, DERIVATION_EXTENSION, DERIVATION_UNION, DERIVATION_LIST } corresponding to final set of this type or DERIVATION_NONE.

    References fFinal.

    virtual bool XSTypeDefinition::getAnonymous (  )  const [pure virtual]

    A boolean that specifies if the type definition is anonymous.

    Convenience attribute.

    Implemented in XSComplexTypeDefinition, and XSSimpleTypeDefinition.

    virtual bool XSTypeDefinition::derivedFromType ( const XSTypeDefinition *const   ancestorType  )  [pure virtual]

    Convenience method: check if this type is derived from the given ancestorType.

    Parameters:
    ancestorType An ancestor type definition.
    Returns:
    Return true if this type is derived from ancestorType.

    Implemented in XSComplexTypeDefinition, and XSSimpleTypeDefinition.

    bool XSTypeDefinition::derivedFrom ( const XMLCh typeNamespace,
    const XMLCh name 
    )

    Convenience method: check if this type is derived from the given ancestor type.

    Parameters:
    typeNamespace An ancestor type namespace.
    name An ancestor type name.
    Returns:
    Return true if this type is derived from the ancestor defined by typeNamespace and name.


    Member Data Documentation

    short XSTypeDefinition::fFinal [protected]

    Referenced by getFinal().


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLChar1__1-members.html0000644000175000017500000001506111363620006022740 0ustar borisboris Xerces-C++: Member List

    XMLChar1_1 Member List

    This is the complete list of members for XMLChar1_1, including all inherited members.

    containsWhiteSpace(const XMLCh *const toCheck, const XMLSize_t count)XMLChar1_1 [static]
    isAllSpaces(const XMLCh *const toCheck, const XMLSize_t count)XMLChar1_1 [static]
    isControlChar(const XMLCh toCheck, const XMLCh toCheck2=0)XMLChar1_1 [static]
    isFirstNameChar(const XMLCh toCheck, const XMLCh toCheck2=0)XMLChar1_1 [static]
    isFirstNCNameChar(const XMLCh toCheck, const XMLCh toCheck2=0)XMLChar1_1 [static]
    isNameChar(const XMLCh toCheck, const XMLCh toCheck2=0)XMLChar1_1 [static]
    isNCNameChar(const XMLCh toCheck, const XMLCh toCheck2=0)XMLChar1_1 [static]
    isPlainContentChar(const XMLCh toCheck, const XMLCh toCheck2=0)XMLChar1_1 [static]
    isPublicIdChar(const XMLCh toCheck, const XMLCh toCheck2=0)XMLChar1_1 [static]
    isSpecialStartTagChar(const XMLCh toCheck, const XMLCh toCheck2=0)XMLChar1_1 [static]
    isValidName(const XMLCh *const toCheck, const XMLSize_t count)XMLChar1_1 [static]
    isValidName(const XMLCh *const toCheck)XMLChar1_1 [static]
    isValidNCName(const XMLCh *const toCheck, const XMLSize_t count)XMLChar1_1 [static]
    isValidNmtoken(const XMLCh *const toCheck, const XMLSize_t count)XMLChar1_1 [static]
    isValidQName(const XMLCh *const toCheck, const XMLSize_t count)XMLChar1_1 [static]
    isWhitespace(const XMLCh toCheck, const XMLCh toCheck2=0)XMLChar1_1 [static]
    isXMLChar(const XMLCh toCheck, const XMLCh toCheck2=0)XMLChar1_1 [static]
    isXMLLetter(const XMLCh toCheck, const XMLCh toCheck2=0)XMLChar1_1 [static]
    XMLReader classXMLChar1_1 [friend]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLDTDDescription_8hpp-source.html0000644000175000017500000002326611363620005024026 0ustar borisboris Xerces-C++: XMLDTDDescription.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLChar1__0-members.html0000644000175000017500000001636011363620006022742 0ustar borisboris Xerces-C++: Member List

    XMLChar1_0 Member List

    This is the complete list of members for XMLChar1_0, including all inherited members.

    containsWhiteSpace(const XMLCh *const toCheck, const XMLSize_t count)XMLChar1_0 [static]
    enableNELWS()XMLChar1_0 [static]
    isAllSpaces(const XMLCh *const toCheck, const XMLSize_t count)XMLChar1_0 [static]
    isControlChar(const XMLCh toCheck, const XMLCh toCheck2=0)XMLChar1_0 [static]
    isFirstNameChar(const XMLCh toCheck, const XMLCh toCheck2=0)XMLChar1_0 [static]
    isFirstNCNameChar(const XMLCh toCheck, const XMLCh toCheck2=0)XMLChar1_0 [static]
    isNameChar(const XMLCh toCheck, const XMLCh toCheck2=0)XMLChar1_0 [static]
    isNCNameChar(const XMLCh toCheck, const XMLCh toCheck2=0)XMLChar1_0 [static]
    isNELRecognized()XMLChar1_0 [static]
    isPlainContentChar(const XMLCh toCheck, const XMLCh toCheck2=0)XMLChar1_0 [static]
    isPublicIdChar(const XMLCh toCheck, const XMLCh toCheck2=0)XMLChar1_0 [static]
    isSpecialStartTagChar(const XMLCh toCheck, const XMLCh toCheck2=0)XMLChar1_0 [static]
    isValidName(const XMLCh *const toCheck, const XMLSize_t count)XMLChar1_0 [static]
    isValidName(const XMLCh *const toCheck)XMLChar1_0 [static]
    isValidNCName(const XMLCh *const toCheck, const XMLSize_t count)XMLChar1_0 [static]
    isValidNmtoken(const XMLCh *const toCheck, const XMLSize_t count)XMLChar1_0 [static]
    isValidQName(const XMLCh *const toCheck, const XMLSize_t count)XMLChar1_0 [static]
    isWhitespace(const XMLCh toCheck)XMLChar1_0 [static]
    isWhitespace(const XMLCh toCheck, const XMLCh toCheck2)XMLChar1_0 [static]
    isXMLChar(const XMLCh toCheck, const XMLCh toCheck2=0)XMLChar1_0 [static]
    isXMLLetter(const XMLCh toCheck, const XMLCh toCheck2=0)XMLChar1_0 [static]
    XMLReader classXMLChar1_0 [friend]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMAttr_8hpp.html0000644000175000017500000000474311363620005020601 0ustar borisboris Xerces-C++: DOMAttr.hpp File Reference

    DOMAttr.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMAttr
     The DOMAttr class refers to an attribute of an XML element. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMATTR_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMATTR_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classSecurityManager-members.html0000644000175000017500000000601711363620006024145 0ustar borisboris Xerces-C++: Member List

    SecurityManager Member List

    This is the complete list of members for SecurityManager, including all inherited members.

    ENTITY_EXPANSION_LIMIT enum valueSecurityManager
    fEntityExpansionLimitSecurityManager [protected]
    getEntityExpansionLimit() const SecurityManager [virtual]
    SecurityManager()SecurityManager
    setEntityExpansionLimit(XMLSize_t newLimit)SecurityManager [virtual]
    ~SecurityManager()SecurityManager [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/ErrorHandler_8hpp-source.html0000644000175000017500000001703211363620004023206 0ustar borisboris Xerces-C++: ErrorHandler.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLBigDecimal_8hpp-source.html0000644000175000017500000005415511363620004023167 0ustar borisboris Xerces-C++: XMLBigDecimal.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classPSVIHandler.png0000644000175000017500000000116111363620006021305 0ustar borisboris‰PNG  IHDRˆ<)PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfIDAThí—InÃ0 E¥M×¢n@ hž§«ÜÿÕ'5ÚnœÖb$d[²¨'F‚ïè˜Ü!3À€²z-mðrmK~ó¬% ˆŸ? €·/‡x(Çæuìý.À‡€;áF:öË ëÀG¤Sx OŸîD éºZ Ôy| L?Eàîx·ÐÝ)xM¼w!À«uá6à×f€'þYß±·cþàúõ`ÀÛõú`À º`Àx1ÀÇmûÜY¿¸÷tÈ ÐQ¾Ù¸/q"Ê9_¸O·̛ى çEÒé Á‰bãL öÄÈÏSÄ\ó‡àqËá˜5㌨ϋ§ F€lÁ%ú´h Ô·Þ KŠÑ€°ÅŸÅ3§ [ €S NRH¼Ž ÊÁu2Z ÒPƒÚ… íÉN)hÒ”õg ‡÷ ˜XS.¤½Êx0`çg{Ï.'øgÚ1Ógè‚ `àŦOhºq0&ˆ**º êô'oH¢VT‰ÙÐÒ¤ŠFÑ_U;u@q©¾ )ºf£ªKŒ€"5•*!g€Ô ¸pKzŒ€ŠlM8¦á)ú/‰ Öt0×€[1%¶¸h!êd˜EcïBÕÅÝa•B¬%NC†÷ Ö¤˜¥ S þlxÀQÝø ½»¶A|%@IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/MemBufInputSource_8hpp-source.html0000644000175000017500000003527511363620004024204 0ustar borisboris Xerces-C++: MemBufInputSource.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classSAXParseException.html0000644000175000017500000005661411363620006022730 0ustar borisboris Xerces-C++: SAXParseException Class Reference

    SAXParseException Class Reference

    Encapsulate an XML parse error or warning. More...

    Inheritance diagram for SAXParseException:

    SAXException XMemory

    List of all members.

    Public Member Functions

    Constructors and Destructor
     SAXParseException (const XMLCh *const message, const Locator &locator, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Create a new SAXParseException from a message and a Locator.
     SAXParseException (const XMLCh *const message, const XMLCh *const publicId, const XMLCh *const systemId, const XMLFileLoc lineNumber, const XMLFileLoc columnNumber, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Create a new SAXParseException.
     SAXParseException (const SAXParseException &toCopy)
     Copy constructor.
     ~SAXParseException ()
     Destructor.
    Assignment operator
    SAXParseExceptionoperator= (const SAXParseException &toAssign)
     Assignment operator.
    Getter methods
    XMLFileLoc getColumnNumber () const
     The column number of the end of the text where the exception occurred.
    XMLFileLoc getLineNumber () const
     The line number of the end of the text where the exception occurred.
    const XMLChgetPublicId () const
     Get the public identifier of the entity where the exception occurred.
    const XMLChgetSystemId () const
     Get the system identifier of the entity where the exception occurred.


    Detailed Description

    Encapsulate an XML parse error or warning.

    This exception will include information for locating the error in the original XML document. Note that although the application will receive a SAXParseException as the argument to the handlers in the ErrorHandler interface, the application is not actually required to throw the exception; instead, it can simply read the information in it and take a different action.

    Since this exception is a subclass of SAXException, it inherits the ability to wrap another exception.

    See also:
    SAXException::SAXException

    Locator::Locator

    ErrorHandler::ErrorHandler


    Constructor & Destructor Documentation

    SAXParseException::SAXParseException ( const XMLCh *const   message,
    const Locator locator,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    Create a new SAXParseException from a message and a Locator.

    This constructor is especially useful when an application is creating its own exception from within a DocumentHandler callback.

    Parameters:
    message The error or warning message.
    locator The locator object for the error or warning.
    manager Pointer to the memory manager to be used to allocate objects.
    See also:
    Locator::Locator

    Parser::setLocale

    SAXParseException::SAXParseException ( const XMLCh *const   message,
    const XMLCh *const   publicId,
    const XMLCh *const   systemId,
    const XMLFileLoc  lineNumber,
    const XMLFileLoc  columnNumber,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    Create a new SAXParseException.

    This constructor is most useful for parser writers.

    If the system identifier is a URL, the parser must resolve it fully before creating the exception.

    Parameters:
    message The error or warning message.
    publicId The public identifier of the entity that generated the error or warning.
    systemId The system identifier of the entity that generated the error or warning.
    lineNumber The line number of the end of the text that caused the error or warning.
    columnNumber The column number of the end of the text that caused the error or warning.
    manager Pointer to the memory manager to be used to allocate objects.
    See also:
    Parser::setLocale

    SAXParseException::SAXParseException ( const SAXParseException toCopy  ) 

    Copy constructor.

    Parameters:
    toCopy The object to be copied

    SAXParseException::~SAXParseException (  ) 

    Destructor.


    Member Function Documentation

    SAXParseException& SAXParseException::operator= ( const SAXParseException toAssign  ) 

    Assignment operator.

    Parameters:
    toAssign The object to be copied through assignment

    XMLFileLoc SAXParseException::getColumnNumber (  )  const

    The column number of the end of the text where the exception occurred.

    The first column in a line is position 1.

    Returns:
    An integer representing the column number, or 0 if none is available.
    See also:
    Locator::getColumnNumber

    XMLFileLoc SAXParseException::getLineNumber (  )  const

    The line number of the end of the text where the exception occurred.

    Returns:
    An integer representing the line number, or 0 if none is available.
    See also:
    Locator::getLineNumber

    const XMLCh* SAXParseException::getPublicId (  )  const

    Get the public identifier of the entity where the exception occurred.

    Returns:
    A string containing the public identifier, or null if none is available.
    See also:
    Locator::getPublicId

    const XMLCh* SAXParseException::getSystemId (  )  const

    Get the system identifier of the entity where the exception occurred.

    If the system identifier is a URL, it will be resolved fully.

    Returns:
    A string containing the system identifier, or null if none is available.
    See also:
    Locator::getSystemId


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classSAXException-members.html0000644000175000017500000001234211363620006023353 0ustar borisboris Xerces-C++: Member List

    SAXException Member List

    This is the complete list of members for SAXException, including all inherited members.

    fMemoryManagerSAXException [protected]
    fMsgSAXException [protected]
    getMessage() const SAXException [virtual]
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    operator=(const SAXException &toCopy)SAXException
    SAXException(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)SAXException
    SAXException(const XMLCh *const msg, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)SAXException
    SAXException(const char *const msg, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)SAXException
    SAXException(const SAXException &toCopy)SAXException
    XMemory()XMemory [protected]
    ~SAXException()SAXException [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classBinFileInputStream.png0000644000175000017500000000106311363620005022732 0ustar borisboris‰PNG  IHDRuˆ+&¹HPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfÉIDATX…í—[vƒ @™Ÿ~;³XAO»¡|eÿKè<@AB´öPÇ—&‡qߛ˧û [Ë`‰/ϽßÀz©,w±ž/ÏvpˆH,zÀò6A”"O¨=KêbÙÑ…Õk®]z¹ñ±`«àÝñWY’ÁÌúnVùÂæÖÞ¯V4½çP¹ûÌwµƒ­¿³~¶R{¢ßÑ`÷üÇ6Ë¥½üWìÇõöz½ÂçÁv°ƒìqìÈ^ËzD;«æV9<׉Bͦ£jÉjòÐÃò6=«Kb¤'}$IPÒ>¼‹ Yʱf15ó¯§}Œƒ€žè«þR˜¡˜×ø,=Š©Ç=›+6ÄÄ å~Ž¥à­z55*Xj°¥¿ì&‡…i´HYœé6[–Ç™óùØžò~ìÈ~‡ùÑ`;ØÁöU,n.“›6õ–, :?L`Ò¦bSÚpƒM[ÁÍXÁ‚Ý÷XVg²E¯¼:€É¦PæÙ"à9³-cÑdƒtÒ¤)&ó¼¤Ò2eÒ`nRçÔ­f#¬l^ô"®Y{PÙØfÓÞi¶!²F´ÙØà‡)Ù¼fgó8; ½C¡eƒ¬jœ!g_N«œ“m—÷cwüÇþE&®ÞÍê1“IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/XSAttributeUse_8hpp.html0000644000175000017500000000436511363620005022222 0ustar borisboris Xerces-C++: XSAttributeUse.hpp File Reference

    XSAttributeUse.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XSAttributeUse

    Defines

    #define XERCESC_INCLUDE_GUARD_XSATTRIBUTEUSE_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XSATTRIBUTEUSE_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/BinOutputStream_8hpp-source.html0000644000175000017500000001752211363620004023730 0ustar borisboris Xerces-C++: BinOutputStream.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLAbstractDoubleFloat.png0000644000175000017500000000176211363620006023502 0ustar borisboris‰PNG  IHDR>ÀoùÞPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfˆIDATxœíQòœ ÆååÿL¼öíLÏÓ§½ÿ EébÑ ¦Ýï[wuÂo"ÑQ³0 ­úÑS͵¶ëûÔOßÀ¾OáýäüÜ)åsáã!I=Ÿó“óþôóiÇàY|%`1ÙèFâ¹§UÃç^æãiù¨à þó?n"ÚðÕæþöÇ|c(,|N3nޝ¾xþãEÿqüNõæ§äú¡œoçz¢‚¯î>|;øþ7>í÷—múz¬æ6iç{ýzš`_Êù¾^¯§v¥O}|€O&ðÉ>™À'ødŸLà“ |2O&ðÉ>™À'Ós|ÚŸOj¾ >ð©ã˹/cÌCXoQÀ—sKߨœo~ÇÏ¿ä×Ö^òß×þV¹/™/äÀPzéÿÖ÷ñ­r_–ÜðýK|Úï/Û„ç2)Ï/ÑΧ=¿D;ŸúøŸLà“ |2O&ðÉ>™À'ødŸLà“ |2O¦çø¨§.à³m™Ž¶fO&ðÉdÙ¬aNkR-fÙ¶ìfVÑiÓ~5åÊþ|þk_»‰•Yû–oU\ø†Ó­|Ɔùeÿ3x/{ÕLð5ÍËi%ïqŸ1LemªIÃä©mXà7.PܘvŸ÷¸0>lÉë³¹UnøìÌGKõ|ì?c’Cˆ’¹fC¾‘èêö·ðÙ!B¤šmÝÃ]Ç×nHÌÜþìºý¥ÝÝþ²¯L™À'Ó'òi¿¿lžȤ<¿D;Ÿöüí|êã|2O&ðÉ>™âó×­ÞêË×ÕZ‹àÓd­¿Eði²Öß"ø4Yëo|š¬õ·¾šÚþO÷óÀßîúZìÿ·Å¾Á'³>™ÅJ·›~]ˆÖþ6ìHÃ@IÑhfg šZ·ë~SV$|¥Ñ©_…»…ˆã£ôásÜËDÍÞNûÛôë2MK)4/s‚¯4š­ö_ѯËÚ’€oc”;_S¿1‡ù¶ýº|¾iŸâ+Œ&>¢“í¯ÊW3×Òþþà;u|Ë~]ÒxP$j¥Qß¶_—pþãH“ÅoÙYÌ¿ãñø=%\ߤÖÀ'³>™µÏãk»ÍkÔûËFýBß6X4JŽ”IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classURLInputSource.html0000644000175000017500000005740211363620006022262 0ustar borisboris Xerces-C++: URLInputSource Class Reference

    URLInputSource Class Reference

    This class is a derivative of the standard InputSource class. More...

    Inheritance diagram for URLInputSource:

    InputSource XMemory

    List of all members.

    Public Member Functions

    Constructors
     URLInputSource (const XMLURL &urlId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     This constructor accepts an already built URL.
     URLInputSource (const XMLCh *const baseId, const XMLCh *const systemId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     This constructor takes a base system id URL and a possibly relative system id.
     URLInputSource (const XMLCh *const baseId, const XMLCh *const systemId, const XMLCh *const publicId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     This constructor is identical to the previous one, except that it also allows you to set a public id if you want to.
     URLInputSource (const XMLCh *const baseId, const char *const systemId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     This constructor is identical to the second constructor above, except that it accepts the relative system id part as a local code page string and just transcodes it internally, as a convenience.
     URLInputSource (const XMLCh *const baseId, const char *const systemId, const char *const publicId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     This constructor is identical to the third constructor above, except that it accepts the relative and public ids as local code page strings and just transcodes them internally, as a convenience.
    Destructor
     ~URLInputSource ()
    Virtual methods
    BinInputStreammakeStream () const
     This method will return a binary input stream derivative that will parse from the source referred to by the URL system id.
    Getter methods
    const XMLURLurlSrc () const
     This method will return a const reference to the URL member which contains the system id in pre-parsed URL form.


    Detailed Description

    This class is a derivative of the standard InputSource class.

    It provides for the parser access to data which is referenced via a URL, as apposed to a local file name. The URL can be provided via an XMLURL class, as a fully qualified system id, or a base system id and a system id which may be fully qualified or may be relative to the base.

    As with all InputSource derivatives. The primary objective of an input source is to create an input stream via which the parser can spool in data from the referenced source.

    Note that the parse system does not necessarily support URL based XML entities out of the box. Support for socket based access is optional and controlled by the per-platform support.


    Constructor & Destructor Documentation

    URLInputSource::URLInputSource ( const XMLURL urlId,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    This constructor accepts an already built URL.

    It is assumed that it is correct and it will be used as is. In this case, no public id accepted, but it can still be set via the parent class' setPublicId() method.

    Parameters:
    urlId The URL which holds the system id of the entity to parse.
    manager Pointer to the memory manager to be used to allocate objects.

    URLInputSource::URLInputSource ( const XMLCh *const   baseId,
    const XMLCh *const   systemId,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    This constructor takes a base system id URL and a possibly relative system id.

    The relative part is parsed and, if it is indeed relative, it will be made relative to the passed base id. Otherwise, it will be taken as is.

    Parameters:
    baseId The base system id URL which provides the base for any relative id part.
    systemId The possibly relative system id URL. If its relative its based on baseId, else its taken as is.
    manager Pointer to the memory manager to be used to allocate objects.

    URLInputSource::URLInputSource ( const XMLCh *const   baseId,
    const XMLCh *const   systemId,
    const XMLCh *const   publicId,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    This constructor is identical to the previous one, except that it also allows you to set a public id if you want to.

    Parameters:
    baseId The base system id URL which provides the base for any relative id part.
    systemId The possibly relative system id URL. If its relative its based on baseId, else its taken as is.
    publicId The optional public id to set. This is just passed on to the parent class for storage.
    manager Pointer to the memory manager to be used to allocate objects.

    URLInputSource::URLInputSource ( const XMLCh *const   baseId,
    const char *const   systemId,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    This constructor is identical to the second constructor above, except that it accepts the relative system id part as a local code page string and just transcodes it internally, as a convenience.

    Parameters:
    baseId The base system id URL which provides the base for any relative id part.
    systemId The possibly relative system id URL. If its relative its based on baseId, else its taken as is.
    manager Pointer to the memory manager to be used to allocate objects.

    URLInputSource::URLInputSource ( const XMLCh *const   baseId,
    const char *const   systemId,
    const char *const   publicId,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    This constructor is identical to the third constructor above, except that it accepts the relative and public ids as local code page strings and just transcodes them internally, as a convenience.

    Parameters:
    baseId The base system id URL which provides the base for any relative id part.
    systemId The possibly relative system id URL. If its relative its based on baseId, else its taken as is.
    publicId The optional public id to set. This is just passed on to the parent class for storage. on to the parent class for storage.
    manager Pointer to the memory manager to be used to allocate objects.

    URLInputSource::~URLInputSource (  ) 


    Member Function Documentation

    BinInputStream* URLInputSource::makeStream (  )  const [virtual]

    This method will return a binary input stream derivative that will parse from the source referred to by the URL system id.

    Implements InputSource.

    const XMLURL & URLInputSource::urlSrc (  )  const

    This method will return a const reference to the URL member which contains the system id in pre-parsed URL form.

    If you just want the string format, call getSystemId() on the parent class.

    Returns:
    A const reference to a URL object that contains the current system id set for this input source.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classBinInputStream.png0000644000175000017500000000141211363620005022130 0ustar borisboris‰PNG  IHDRˆúÈ(TPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf IDATxœí›áޤ Ç%›ìgÚ7€}Í]rϳÉ%óþpmN\¼(09[gÑa ýY«ãfü/KË~ž±Ï¦û¶ýð'L  €ãÒÎÊÒDñ@›H¡µsŽs3€BQ\ í<¸°v8€~@yÅe`ȾE¿ü&pVDv†¬×9„BÖÒ;(Ïl:@áÂ4 €ÿôËHn0ý¶¼nïÝ#¼:ÀãëæïÇÍæ¡(€(€(€(€(€(À8cö€S>@®ࢶ{·–º3ÀÆ@€ £¬1vmxÇÔCÍb¨Ïl£ö°k¼ã &YßÐG`J“¯81˜¬I…,r4l7›bçaÃp1ÂdÄ@©Ø˜Þ» âFàÔsP9 LO€cýÿ>HzúP¸`úmyÝîðŸQÝfÿl7`úÏvÓæ¡(€(@oºÔžµ¯sç÷A@@@Zõ“xnù­>æwýã žÜ~;ãáC †ÂU&YqÞÅO’ƒL‡xÀÇ €q,¦yùd,*Éþ$™ñ€ :Y¹ÜAt!°ˆ‹ú©I"Ã=€8Ètˆ|dè"€(¸ v±+VøqO"ÃÎuˆMÛÞ¨K³ÂÊ»¤pó«Âí{ Èè\‡Øô‘eÀ§ ¿ÝäU߯V‘a!á8luˆMOÐû|2&w¥ ì¼/}<XLµ'c ×!6}ìk ; B]s1!ŸÃ\>¡‚±R[â+aI@·µ#Wºx•/#¸5@ý¦¹aGnËö)óŒœeC—øIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/Attributes_8hpp.html0000644000175000017500000000460111363620005021446 0ustar borisboris Xerces-C++: Attributes.hpp File Reference

    Attributes.hpp File Reference

    Go to the source code of this file.

    Classes

    class  Attributes
     Interface for an element's attribute specifications. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_ATTRIBUTES_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_ATTRIBUTES_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLDOMMsg_8hpp-source.html0000644000175000017500000005563411363620005022301 0ustar borisboris Xerces-C++: XMLDOMMsg.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLFloat_8hpp-source.html0000644000175000017500000002326511363620005022253 0ustar borisboris Xerces-C++: XMLFloat.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLUni.html0000644000175000017500000073351711363620006020543 0ustar borisboris Xerces-C++: XMLUni Class Reference

    XMLUni Class Reference

    List of all members.

    Static Public Attributes

    static const XMLCh fgAnyString []
    static const XMLCh fgAttListString []
    static const XMLCh fgCommentString []
    static const XMLCh fgCDATAString []
    static const XMLCh fgDefaultString []
    static const XMLCh fgDocTypeString []
    static const XMLCh fgEBCDICEncodingString []
    static const XMLCh fgElemString []
    static const XMLCh fgEmptyString []
    static const XMLCh fgEncodingString []
    static const XMLCh fgEntitString []
    static const XMLCh fgEntityString []
    static const XMLCh fgEntitiesString []
    static const XMLCh fgEnumerationString []
    static const XMLCh fgExceptDomain []
    static const XMLCh fgFixedString []
    static const XMLCh fgIBM037EncodingString []
    static const XMLCh fgIBM037EncodingString2 []
    static const XMLCh fgIBM1047EncodingString []
    static const XMLCh fgIBM1047EncodingString2 []
    static const XMLCh fgIBM1140EncodingString []
    static const XMLCh fgIBM1140EncodingString2 []
    static const XMLCh fgIBM1140EncodingString3 []
    static const XMLCh fgIBM1140EncodingString4 []
    static const XMLCh fgIESString []
    static const XMLCh fgIDString []
    static const XMLCh fgIDRefString []
    static const XMLCh fgIDRefsString []
    static const XMLCh fgImpliedString []
    static const XMLCh fgIgnoreString []
    static const XMLCh fgIncludeString []
    static const XMLCh fgISO88591EncodingString []
    static const XMLCh fgISO88591EncodingString2 []
    static const XMLCh fgISO88591EncodingString3 []
    static const XMLCh fgISO88591EncodingString4 []
    static const XMLCh fgISO88591EncodingString5 []
    static const XMLCh fgISO88591EncodingString6 []
    static const XMLCh fgISO88591EncodingString7 []
    static const XMLCh fgISO88591EncodingString8 []
    static const XMLCh fgISO88591EncodingString9 []
    static const XMLCh fgISO88591EncodingString10 []
    static const XMLCh fgISO88591EncodingString11 []
    static const XMLCh fgISO88591EncodingString12 []
    static const XMLCh fgLocalHostString []
    static const XMLCh fgNoString []
    static const XMLCh fgNotationString []
    static const XMLCh fgNDATAString []
    static const XMLCh fgNmTokenString []
    static const XMLCh fgNmTokensString []
    static const XMLCh fgPCDATAString []
    static const XMLCh fgPIString []
    static const XMLCh fgPubIDString []
    static const XMLCh fgRefString []
    static const XMLCh fgRequiredString []
    static const XMLCh fgStandaloneString []
    static const XMLCh fgVersion1_0 []
    static const XMLCh fgVersion1_1 []
    static const XMLCh fgSysIDString []
    static const XMLCh fgUnknownURIName []
    static const XMLCh fgUCS4EncodingString []
    static const XMLCh fgUCS4EncodingString2 []
    static const XMLCh fgUCS4EncodingString3 []
    static const XMLCh fgUCS4EncodingString4 []
    static const XMLCh fgUCS4EncodingString5 []
    static const XMLCh fgUCS4BEncodingString []
    static const XMLCh fgUCS4BEncodingString2 []
    static const XMLCh fgUCS4LEncodingString []
    static const XMLCh fgUCS4LEncodingString2 []
    static const XMLCh fgUSASCIIEncodingString []
    static const XMLCh fgUSASCIIEncodingString2 []
    static const XMLCh fgUSASCIIEncodingString3 []
    static const XMLCh fgUSASCIIEncodingString4 []
    static const XMLCh fgUTF8EncodingString []
    static const XMLCh fgUTF8EncodingString2 []
    static const XMLCh fgUTF16EncodingString []
    static const XMLCh fgUTF16EncodingString2 []
    static const XMLCh fgUTF16EncodingString3 []
    static const XMLCh fgUTF16EncodingString4 []
    static const XMLCh fgUTF16EncodingString5 []
    static const XMLCh fgUTF16EncodingString6 []
    static const XMLCh fgUTF16EncodingString7 []
    static const XMLCh fgUTF16BEncodingString []
    static const XMLCh fgUTF16BEncodingString2 []
    static const XMLCh fgUTF16LEncodingString []
    static const XMLCh fgUTF16LEncodingString2 []
    static const XMLCh fgVersionString []
    static const XMLCh fgValidityDomain []
    static const XMLCh fgWin1252EncodingString []
    static const XMLCh fgXMLChEncodingString []
    static const XMLCh fgXMLDOMMsgDomain []
    static const XMLCh fgXMLString []
    static const XMLCh fgXMLStringSpace []
    static const XMLCh fgXMLStringHTab []
    static const XMLCh fgXMLStringCR []
    static const XMLCh fgXMLStringLF []
    static const XMLCh fgXMLStringSpaceU []
    static const XMLCh fgXMLStringHTabU []
    static const XMLCh fgXMLStringCRU []
    static const XMLCh fgXMLStringLFU []
    static const XMLCh fgXMLDeclString []
    static const XMLCh fgXMLDeclStringSpace []
    static const XMLCh fgXMLDeclStringHTab []
    static const XMLCh fgXMLDeclStringLF []
    static const XMLCh fgXMLDeclStringCR []
    static const XMLCh fgXMLDeclStringSpaceU []
    static const XMLCh fgXMLDeclStringHTabU []
    static const XMLCh fgXMLDeclStringLFU []
    static const XMLCh fgXMLDeclStringCRU []
    static const XMLCh fgXMLNSString []
    static const XMLCh fgXMLNSColonString []
    static const XMLCh fgXMLNSURIName []
    static const XMLCh fgXMLErrDomain []
    static const XMLCh fgXMLURIName []
    static const XMLCh fgInfosetURIName []
    static const XMLCh fgYesString []
    static const XMLCh fgZeroLenString []
    static const XMLCh fgDTDEntityString []
    static const XMLCh fgAmp []
    static const XMLCh fgLT []
    static const XMLCh fgGT []
    static const XMLCh fgQuot []
    static const XMLCh fgApos []
    static const XMLCh fgWFXMLScanner []
    static const XMLCh fgIGXMLScanner []
    static const XMLCh fgSGXMLScanner []
    static const XMLCh fgDGXMLScanner []
    static const XMLCh fgXSAXMLScanner []
    static const XMLCh fgCDataStart []
    static const XMLCh fgCDataEnd []
    static const XMLCh fgArrayIndexOutOfBoundsException_Name []
    static const XMLCh fgEmptyStackException_Name []
    static const XMLCh fgIllegalArgumentException_Name []
    static const XMLCh fgInvalidCastException_Name []
    static const XMLCh fgIOException_Name []
    static const XMLCh fgNoSuchElementException_Name []
    static const XMLCh fgNullPointerException_Name []
    static const XMLCh fgXMLPlatformUtilsException_Name []
    static const XMLCh fgRuntimeException_Name []
    static const XMLCh fgTranscodingException_Name []
    static const XMLCh fgUnexpectedEOFException_Name []
    static const XMLCh fgUnsupportedEncodingException_Name []
    static const XMLCh fgUTFDataFormatException_Name []
    static const XMLCh fgNetAccessorException_Name []
    static const XMLCh fgMalformedURLException_Name []
    static const XMLCh fgNumberFormatException_Name []
    static const XMLCh fgParseException_Name []
    static const XMLCh fgInvalidDatatypeFacetException_Name []
    static const XMLCh fgInvalidDatatypeValueException_Name []
    static const XMLCh fgSchemaDateTimeException_Name []
    static const XMLCh fgXPathException_Name []
    static const XMLCh fgXSerializationException_Name []
    static const XMLCh fgXMLXIncludeException_Name []
    static const XMLCh fgNegINFString []
    static const XMLCh fgNegZeroString []
    static const XMLCh fgPosZeroString []
    static const XMLCh fgPosINFString []
    static const XMLCh fgNaNString []
    static const XMLCh fgEString []
    static const XMLCh fgZeroString []
    static const XMLCh fgNullString []
    static const XMLCh fgXercesDynamic []
    static const XMLCh fgXercesSchema []
    static const XMLCh fgXercesSchemaFullChecking []
    static const XMLCh fgXercesLoadSchema []
    static const XMLCh fgXercesIdentityConstraintChecking []
    static const XMLCh fgXercesSchemaExternalSchemaLocation []
    static const XMLCh fgXercesSchemaExternalNoNameSpaceSchemaLocation []
    static const XMLCh fgXercesSecurityManager []
    static const XMLCh fgXercesLoadExternalDTD []
    static const XMLCh fgXercesContinueAfterFatalError []
    static const XMLCh fgXercesValidationErrorAsFatal []
    static const XMLCh fgXercesUserAdoptsDOMDocument []
    static const XMLCh fgXercesCacheGrammarFromParse []
    static const XMLCh fgXercesUseCachedGrammarInParse []
    static const XMLCh fgXercesScannerName []
    static const XMLCh fgXercesParserUseDocumentFromImplementation []
    static const XMLCh fgXercesCalculateSrcOfs []
    static const XMLCh fgXercesStandardUriConformant []
    static const XMLCh fgXercesDOMHasPSVIInfo []
    static const XMLCh fgXercesGenerateSyntheticAnnotations []
    static const XMLCh fgXercesValidateAnnotations []
    static const XMLCh fgXercesIgnoreCachedDTD []
    static const XMLCh fgXercesIgnoreAnnotations []
    static const XMLCh fgXercesDisableDefaultEntityResolution []
    static const XMLCh fgXercesSkipDTDValidation []
    static const XMLCh fgXercesEntityResolver []
    static const XMLCh fgXercesHandleMultipleImports []
    static const XMLCh fgXercesDoXInclude []
    static const XMLCh fgXercesLowWaterMark []
    static const XMLCh fgSAX2CoreValidation []
    static const XMLCh fgSAX2CoreNameSpaces []
    static const XMLCh fgSAX2CoreNameSpacePrefixes []
    static const XMLCh fgDOMCanonicalForm []
    static const XMLCh fgDOMCDATASections []
    static const XMLCh fgDOMComments []
    static const XMLCh fgDOMCharsetOverridesXMLEncoding []
    static const XMLCh fgDOMCheckCharacterNormalization []
    static const XMLCh fgDOMDatatypeNormalization []
    static const XMLCh fgDOMDisallowDoctype []
    static const XMLCh fgDOMElementContentWhitespace []
    static const XMLCh fgDOMErrorHandler []
    static const XMLCh fgDOMEntities []
    static const XMLCh fgDOMIgnoreUnknownCharacterDenormalization []
    static const XMLCh fgDOMInfoset []
    static const XMLCh fgDOMNamespaces []
    static const XMLCh fgDOMNamespaceDeclarations []
    static const XMLCh fgDOMNormalizeCharacters []
    static const XMLCh fgDOMResourceResolver []
    static const XMLCh fgDOMSchemaLocation []
    static const XMLCh fgDOMSchemaType []
    static const XMLCh fgDOMSplitCDATASections []
    static const XMLCh fgDOMSupportedMediatypesOnly []
    static const XMLCh fgDOMValidate []
    static const XMLCh fgDOMValidateIfSchema []
    static const XMLCh fgDOMWellFormed []
    static const XMLCh fgDOMXMLSchemaType []
    static const XMLCh fgDOMDTDType []
    static const XMLCh fgDOMWRTCanonicalForm []
    static const XMLCh fgDOMWRTDiscardDefaultContent []
    static const XMLCh fgDOMWRTEntities []
    static const XMLCh fgDOMWRTFormatPrettyPrint []
    static const XMLCh fgDOMWRTNormalizeCharacters []
    static const XMLCh fgDOMWRTSplitCdataSections []
    static const XMLCh fgDOMWRTValidation []
    static const XMLCh fgDOMWRTWhitespaceInElementContent []
    static const XMLCh fgDOMWRTBOM []
    static const XMLCh fgDOMXMLDeclaration []
    static const XMLCh fgDOMWRTXercesPrettyPrint []
    static const XMLCh fgXercescInterfacePSVITypeInfo []
    static const XMLCh fgXercescInterfaceDOMDocumentTypeImpl []
    static const XMLCh fgXercescInterfaceDOMDocumentImpl []
    static const XMLCh fgXercescInterfaceDOMMemoryManager []
    static const char fgXercescDefaultLocale []
    static const XMLCh fgDefErrMsg []
    static const XMLCh fgValueZero []
    static const XMLCh fgNegOne []
    static const XMLCh fgValueOne []
    static const XMLCh fgLongMaxInc []
    static const XMLCh fgLongMinInc []
    static const XMLCh fgIntMaxInc []
    static const XMLCh fgIntMinInc []
    static const XMLCh fgShortMaxInc []
    static const XMLCh fgShortMinInc []
    static const XMLCh fgByteMaxInc []
    static const XMLCh fgByteMinInc []
    static const XMLCh fgULongMaxInc []
    static const XMLCh fgUIntMaxInc []
    static const XMLCh fgUShortMaxInc []
    static const XMLCh fgUByteMaxInc []
    static const XMLCh fgLangPattern []
    static const XMLCh fgBooleanValueSpace [][8]
    static const XMLSize_t fgBooleanValueSpaceArraySize


    Member Data Documentation

    const XMLCh XMLUni::fgAnyString[] [static]

    const XMLCh XMLUni::fgAttListString[] [static]

    const XMLCh XMLUni::fgCommentString[] [static]

    const XMLCh XMLUni::fgCDATAString[] [static]

    const XMLCh XMLUni::fgDefaultString[] [static]

    const XMLCh XMLUni::fgDocTypeString[] [static]

    const XMLCh XMLUni::fgElemString[] [static]

    const XMLCh XMLUni::fgEmptyString[] [static]

    const XMLCh XMLUni::fgEncodingString[] [static]

    const XMLCh XMLUni::fgEntitString[] [static]

    const XMLCh XMLUni::fgEntityString[] [static]

    const XMLCh XMLUni::fgEntitiesString[] [static]

    const XMLCh XMLUni::fgExceptDomain[] [static]

    const XMLCh XMLUni::fgFixedString[] [static]

    const XMLCh XMLUni::fgIESString[] [static]

    const XMLCh XMLUni::fgIDString[] [static]

    const XMLCh XMLUni::fgIDRefString[] [static]

    const XMLCh XMLUni::fgIDRefsString[] [static]

    const XMLCh XMLUni::fgImpliedString[] [static]

    const XMLCh XMLUni::fgIgnoreString[] [static]

    const XMLCh XMLUni::fgIncludeString[] [static]

    const XMLCh XMLUni::fgLocalHostString[] [static]

    const XMLCh XMLUni::fgNoString[] [static]

    const XMLCh XMLUni::fgNotationString[] [static]

    const XMLCh XMLUni::fgNDATAString[] [static]

    const XMLCh XMLUni::fgNmTokenString[] [static]

    const XMLCh XMLUni::fgNmTokensString[] [static]

    const XMLCh XMLUni::fgPCDATAString[] [static]

    const XMLCh XMLUni::fgPIString[] [static]

    const XMLCh XMLUni::fgPubIDString[] [static]

    const XMLCh XMLUni::fgRefString[] [static]

    const XMLCh XMLUni::fgRequiredString[] [static]

    const XMLCh XMLUni::fgVersion1_0[] [static]

    const XMLCh XMLUni::fgVersion1_1[] [static]

    const XMLCh XMLUni::fgSysIDString[] [static]

    const XMLCh XMLUni::fgUnknownURIName[] [static]

    const XMLCh XMLUni::fgVersionString[] [static]

    const XMLCh XMLUni::fgValidityDomain[] [static]

    const XMLCh XMLUni::fgXMLDOMMsgDomain[] [static]

    const XMLCh XMLUni::fgXMLString[] [static]

    const XMLCh XMLUni::fgXMLStringSpace[] [static]

    const XMLCh XMLUni::fgXMLStringHTab[] [static]

    const XMLCh XMLUni::fgXMLStringCR[] [static]

    const XMLCh XMLUni::fgXMLStringLF[] [static]

    const XMLCh XMLUni::fgXMLStringSpaceU[] [static]

    const XMLCh XMLUni::fgXMLStringHTabU[] [static]

    const XMLCh XMLUni::fgXMLStringCRU[] [static]

    const XMLCh XMLUni::fgXMLStringLFU[] [static]

    const XMLCh XMLUni::fgXMLDeclString[] [static]

    const XMLCh XMLUni::fgXMLDeclStringLF[] [static]

    const XMLCh XMLUni::fgXMLDeclStringCR[] [static]

    const XMLCh XMLUni::fgXMLNSString[] [static]

    const XMLCh XMLUni::fgXMLNSURIName[] [static]

    const XMLCh XMLUni::fgXMLErrDomain[] [static]

    const XMLCh XMLUni::fgXMLURIName[] [static]

    const XMLCh XMLUni::fgInfosetURIName[] [static]

    const XMLCh XMLUni::fgYesString[] [static]

    const XMLCh XMLUni::fgZeroLenString[] [static]

    const XMLCh XMLUni::fgDTDEntityString[] [static]

    const XMLCh XMLUni::fgAmp[] [static]

    const XMLCh XMLUni::fgLT[] [static]

    const XMLCh XMLUni::fgGT[] [static]

    const XMLCh XMLUni::fgQuot[] [static]

    const XMLCh XMLUni::fgApos[] [static]

    const XMLCh XMLUni::fgWFXMLScanner[] [static]

    const XMLCh XMLUni::fgIGXMLScanner[] [static]

    const XMLCh XMLUni::fgSGXMLScanner[] [static]

    const XMLCh XMLUni::fgDGXMLScanner[] [static]

    const XMLCh XMLUni::fgXSAXMLScanner[] [static]

    const XMLCh XMLUni::fgCDataStart[] [static]

    const XMLCh XMLUni::fgCDataEnd[] [static]

    const XMLCh XMLUni::fgNegINFString[] [static]

    const XMLCh XMLUni::fgNegZeroString[] [static]

    const XMLCh XMLUni::fgPosZeroString[] [static]

    const XMLCh XMLUni::fgPosINFString[] [static]

    const XMLCh XMLUni::fgNaNString[] [static]

    const XMLCh XMLUni::fgEString[] [static]

    const XMLCh XMLUni::fgZeroString[] [static]

    const XMLCh XMLUni::fgNullString[] [static]

    const XMLCh XMLUni::fgXercesDynamic[] [static]

    const XMLCh XMLUni::fgXercesSchema[] [static]

    const XMLCh XMLUni::fgDOMComments[] [static]

    const XMLCh XMLUni::fgDOMErrorHandler[] [static]

    const XMLCh XMLUni::fgDOMEntities[] [static]

    const XMLCh XMLUni::fgDOMInfoset[] [static]

    const XMLCh XMLUni::fgDOMNamespaces[] [static]

    const XMLCh XMLUni::fgDOMSchemaType[] [static]

    const XMLCh XMLUni::fgDOMValidate[] [static]

    const XMLCh XMLUni::fgDOMWellFormed[] [static]

    const XMLCh XMLUni::fgDOMDTDType[] [static]

    const XMLCh XMLUni::fgDOMWRTEntities[] [static]

    const XMLCh XMLUni::fgDOMWRTBOM[] [static]

    const char XMLUni::fgXercescDefaultLocale[] [static]

    const XMLCh XMLUni::fgDefErrMsg[] [static]

    const XMLCh XMLUni::fgValueZero[] [static]

    const XMLCh XMLUni::fgNegOne[] [static]

    const XMLCh XMLUni::fgValueOne[] [static]

    const XMLCh XMLUni::fgLongMaxInc[] [static]

    const XMLCh XMLUni::fgLongMinInc[] [static]

    const XMLCh XMLUni::fgIntMaxInc[] [static]

    const XMLCh XMLUni::fgIntMinInc[] [static]

    const XMLCh XMLUni::fgShortMaxInc[] [static]

    const XMLCh XMLUni::fgShortMinInc[] [static]

    const XMLCh XMLUni::fgByteMaxInc[] [static]

    const XMLCh XMLUni::fgByteMinInc[] [static]

    const XMLCh XMLUni::fgULongMaxInc[] [static]

    const XMLCh XMLUni::fgUIntMaxInc[] [static]

    const XMLCh XMLUni::fgUShortMaxInc[] [static]

    const XMLCh XMLUni::fgUByteMaxInc[] [static]

    const XMLCh XMLUni::fgLangPattern[] [static]

    const XMLCh XMLUni::fgBooleanValueSpace[][8] [static]


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSSimpleTypeDefinition.png0000644000175000017500000000142411363620006023607 0ustar borisboris‰PNG  IHDR“ÀòÑLPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfªIDAThíšKrà †Í¦k¤àtÚ u•û¡H ®hR7IŒâ›ß[²§O­ö>}ÌJÍP ¨@_Œ+ø0*"p†ÈSEA\Ũ2ö!ÒÛ‰Šƒ"!a† }À9© ¿ù3¤* Aí9ïØW‚¢‚"¥C(Æ5'8€JóŠãÈ<îyo·ª½¦ˆÚ²Ý¨]QíŸáuPН{ÚÛ]VÏFݾ.ˆz»Ý.ˆºh e(CÊP†zU”â­Ú5ïEÿ+Š3¿SÀ9æ»”n•ŠJ‚X#ÕhÙ‰¢ŒžJŒ’œ>åÑÝ(0©*¨‘ ìçP¡QÙíµªù1Gð!_­æÕÁ¹?‚ìãö+¨ÓêÚûgx”âÅKñ’úd”Õ:Xj$CÊP†2”¡ uÞoÕ®y/ú¯P9 uÖ ¹RÇ׸^®TåÔ´µÅ”ÁåÛùÜ&*æò? 眗* (Ç”Gäp„ÊÅ…„‚’-§.ì¡Õ¾v{*.dU?QÕ³ Xerces-C++: MemBufInputSource.hpp File Reference

    MemBufInputSource.hpp File Reference

    Go to the source code of this file.

    Classes

    class  MemBufInputSource
     This class is a derivative of the standard InputSource class. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_MEMBUFINPUTSOURCE_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_MEMBUFINPUTSOURCE_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/SAXParser_8hpp.html0000644000175000017500000000467711363620005021145 0ustar borisboris Xerces-C++: SAXParser.hpp File Reference

    SAXParser.hpp File Reference

    Go to the source code of this file.

    Classes

    class  SAXParser
     This class implements the SAX 'Parser' interface and should be used by applications wishing to parse the XML files using SAX. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_SAXPARSER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_SAXPARSER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMComment-members.html0000644000175000017500000004635311363620005023013 0ustar borisboris Xerces-C++: Member List

    DOMComment Member List

    This is the complete list of members for DOMComment, including all inherited members.

    appendChild(DOMNode *newChild)=0DOMNode [pure virtual]
    appendData(const XMLCh *arg)=0DOMCharacterData [pure virtual]
    ATTRIBUTE_NODE enum valueDOMNode
    CDATA_SECTION_NODE enum valueDOMNode
    cloneNode(bool deep) const =0DOMNode [pure virtual]
    COMMENT_NODE enum valueDOMNode
    compareDocumentPosition(const DOMNode *other) const =0DOMNode [pure virtual]
    deleteData(XMLSize_t offset, XMLSize_t count)=0DOMCharacterData [pure virtual]
    DOCUMENT_FRAGMENT_NODE enum valueDOMNode
    DOCUMENT_NODE enum valueDOMNode
    DOCUMENT_POSITION_CONTAINED_BY enum valueDOMNode
    DOCUMENT_POSITION_CONTAINS enum valueDOMNode
    DOCUMENT_POSITION_DISCONNECTED enum valueDOMNode
    DOCUMENT_POSITION_FOLLOWING enum valueDOMNode
    DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC enum valueDOMNode
    DOCUMENT_POSITION_PRECEDING enum valueDOMNode
    DOCUMENT_TYPE_NODE enum valueDOMNode
    DocumentPosition enum nameDOMNode
    DOMCharacterData()DOMCharacterData [protected]
    DOMCharacterData(const DOMCharacterData &other)DOMCharacterData [protected]
    DOMComment()DOMComment [protected]
    DOMNode()DOMNode [protected]
    DOMNode(const DOMNode &)DOMNode [protected]
    ELEMENT_NODE enum valueDOMNode
    ENTITY_NODE enum valueDOMNode
    ENTITY_REFERENCE_NODE enum valueDOMNode
    getAttributes() const =0DOMNode [pure virtual]
    getBaseURI() const =0DOMNode [pure virtual]
    getChildNodes() const =0DOMNode [pure virtual]
    getData() const =0DOMCharacterData [pure virtual]
    getFeature(const XMLCh *feature, const XMLCh *version) const =0DOMNode [pure virtual]
    getFirstChild() const =0DOMNode [pure virtual]
    getLastChild() const =0DOMNode [pure virtual]
    getLength() const =0DOMCharacterData [pure virtual]
    getLocalName() const =0DOMNode [pure virtual]
    getNamespaceURI() const =0DOMNode [pure virtual]
    getNextSibling() const =0DOMNode [pure virtual]
    getNodeName() const =0DOMNode [pure virtual]
    getNodeType() const =0DOMNode [pure virtual]
    getNodeValue() const =0DOMNode [pure virtual]
    getOwnerDocument() const =0DOMNode [pure virtual]
    getParentNode() const =0DOMNode [pure virtual]
    getPrefix() const =0DOMNode [pure virtual]
    getPreviousSibling() const =0DOMNode [pure virtual]
    getTextContent() const =0DOMNode [pure virtual]
    getUserData(const XMLCh *key) const =0DOMNode [pure virtual]
    hasAttributes() const =0DOMNode [pure virtual]
    hasChildNodes() const =0DOMNode [pure virtual]
    insertBefore(DOMNode *newChild, DOMNode *refChild)=0DOMNode [pure virtual]
    insertData(XMLSize_t offset, const XMLCh *arg)=0DOMCharacterData [pure virtual]
    isDefaultNamespace(const XMLCh *namespaceURI) const =0DOMNode [pure virtual]
    isEqualNode(const DOMNode *arg) const =0DOMNode [pure virtual]
    isSameNode(const DOMNode *other) const =0DOMNode [pure virtual]
    isSupported(const XMLCh *feature, const XMLCh *version) const =0DOMNode [pure virtual]
    lookupNamespaceURI(const XMLCh *prefix) const =0DOMNode [pure virtual]
    lookupPrefix(const XMLCh *namespaceURI) const =0DOMNode [pure virtual]
    NodeType enum nameDOMNode
    normalize()=0DOMNode [pure virtual]
    NOTATION_NODE enum valueDOMNode
    PROCESSING_INSTRUCTION_NODE enum valueDOMNode
    release()=0DOMNode [pure virtual]
    removeChild(DOMNode *oldChild)=0DOMNode [pure virtual]
    replaceChild(DOMNode *newChild, DOMNode *oldChild)=0DOMNode [pure virtual]
    replaceData(XMLSize_t offset, XMLSize_t count, const XMLCh *arg)=0DOMCharacterData [pure virtual]
    setData(const XMLCh *data)=0DOMCharacterData [pure virtual]
    setNodeValue(const XMLCh *nodeValue)=0DOMNode [pure virtual]
    setPrefix(const XMLCh *prefix)=0DOMNode [pure virtual]
    setTextContent(const XMLCh *textContent)=0DOMNode [pure virtual]
    setUserData(const XMLCh *key, void *data, DOMUserDataHandler *handler)=0DOMNode [pure virtual]
    substringData(XMLSize_t offset, XMLSize_t count) const =0DOMCharacterData [pure virtual]
    TEXT_NODE enum valueDOMNode
    ~DOMCharacterData()DOMCharacterData [virtual]
    ~DOMComment()DOMComment [virtual]
    ~DOMNode()DOMNode [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLEntityDecl.png0000644000175000017500000000062011363620006021652 0ustar borisboris‰PNG  IHDR`PÌm¦PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf&IDATH‰í”[ EÉß ;@w êW÷¿oB¡Oª82:¦á‘ÓKB§îQiî~­²ÛÁ€ ÝcàßUðhê@0ôP„!¨ö&€-ÄYh¸Jˆ>ø2 ‡Ï€·žÚŽBÐ@‘à €æd@UwƒfG*Ã=X­Œ2o«¥¤ V L/ò`*ðïŸw+ ú7S²®¸ó%àÒ·ú¾k ´¯Ò œÀ œÀÏ©4ÇuÂt€ÈiÙ†2§fœѰLÂéUŽϯ'Ìè&C2ék0Ï€h ö0O#  ÄÛÜÜBÈGJÅ\Dæ[Ä@”K¸&º €—9¤cbçO9 #]³{XV©l«Ým¬ìëÍý¼µ¿™'½¹Úþ‚ÉIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/XSElementDeclaration_8hpp-source.html0000644000175000017500000005736111363620005024643 0ustar borisboris Xerces-C++: XSElementDeclaration.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/EmptyStackException_8hpp.html0000644000175000017500000000404611363620005023266 0ustar borisboris Xerces-C++: EmptyStackException.hpp File Reference

    EmptyStackException.hpp File Reference

    Go to the source code of this file.

    Defines

    #define XERCESC_INCLUDE_GUARD_EMPTYSTACKEXCEPTION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_EMPTYSTACKEXCEPTION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMDocument_8hpp.html0000644000175000017500000000502711363620005021441 0ustar borisboris Xerces-C++: DOMDocument.hpp File Reference

    DOMDocument.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMDocument
     The DOMDocument interface represents the entire XML document. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMDOCUMENT_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMDOCUMENT_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_func_0x7e.html0000644000175000017500000005727311363620005022264 0ustar borisboris Xerces-C++: Class Members - Functions
     

    - ~ -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classStdOutFormatTarget.html0000644000175000017500000001573511363620006023164 0ustar borisboris Xerces-C++: StdOutFormatTarget Class Reference

    StdOutFormatTarget Class Reference

    Inheritance diagram for StdOutFormatTarget:

    XMLFormatTarget XMemory

    List of all members.

    Public Member Functions

    virtual void writeChars (const XMLByte *const toWrite, const XMLSize_t count, XMLFormatter *const formatter)
    virtual void flush ()
    constructors and destructor
     StdOutFormatTarget ()
     ~StdOutFormatTarget ()


    Constructor & Destructor Documentation

    StdOutFormatTarget::StdOutFormatTarget (  ) 

    StdOutFormatTarget::~StdOutFormatTarget (  ) 


    Member Function Documentation

    virtual void StdOutFormatTarget::writeChars ( const XMLByte *const   toWrite,
    const XMLSize_t  count,
    XMLFormatter *const   formatter 
    ) [virtual]

    Implements XMLFormatTarget.

    virtual void StdOutFormatTarget::flush (  )  [virtual]

    Reimplemented from XMLFormatTarget.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLLCPTranscoder.png0000644000175000017500000000065711363620006022263 0ustar borisboris‰PNG  IHDR€P#.`×PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfEIDATX…í”Avà D¥MׂÜ ½PV¾ÿ:Ø ×vhŸ“Wdb†ïAR,&ï—.»@Ø<ÿ¨Ëò ×Cúµí`)öÅ­áâBêƒßàá€m¾(Üè\he5 ÀÁ ª€)ްë æ"Rbgw*X³n@«°ŽZžôßør€îÏú–Ý6Wü1àm:0M·“çga``þÀušXŸ@€Ðdʧ!=¦ŒrÓ¬à‡õ,‹TVõmT2„ƒQÅ «=‹Ý"æ¬ `©Ùl¼i*‰s­@ ÒƒÍ~ò@ ªR)Èd†4¿ð€ðjƒù…sʲ©óôW*À÷Tu…ñ쬃û#h>B•yšR€Ó½ŸõOš«òrTÛIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classDefaultHandler-members.html0000644000175000017500000003214511363620005023725 0ustar borisboris Xerces-C++: Member List

    DefaultHandler Member List

    This is the complete list of members for DefaultHandler, including all inherited members.

    attributeDecl(const XMLCh *const eName, const XMLCh *const aName, const XMLCh *const type, const XMLCh *const mode, const XMLCh *const value)DefaultHandler [virtual]
    characters(const XMLCh *const chars, const XMLSize_t length)DefaultHandler [virtual]
    comment(const XMLCh *const chars, const XMLSize_t length)DefaultHandler [virtual]
    ContentHandler()ContentHandler
    DeclHandler()DeclHandler
    DefaultHandler()DefaultHandler
    DTDHandler()DTDHandler
    elementDecl(const XMLCh *const name, const XMLCh *const model)DefaultHandler [virtual]
    endCDATA()DefaultHandler [virtual]
    endDocument()DefaultHandler [virtual]
    endDTD()DefaultHandler [virtual]
    endElement(const XMLCh *const uri, const XMLCh *const localname, const XMLCh *const qname)DefaultHandler [virtual]
    endEntity(const XMLCh *const name)DefaultHandler [virtual]
    endPrefixMapping(const XMLCh *const prefix)DefaultHandler [virtual]
    EntityResolver()EntityResolver
    error(const SAXParseException &exc)DefaultHandler [virtual]
    ErrorHandler()ErrorHandler
    externalEntityDecl(const XMLCh *const name, const XMLCh *const publicId, const XMLCh *const systemId)DefaultHandler [virtual]
    fatalError(const SAXParseException &exc)DefaultHandler [virtual]
    ignorableWhitespace(const XMLCh *const chars, const XMLSize_t length)DefaultHandler [virtual]
    internalEntityDecl(const XMLCh *const name, const XMLCh *const value)DefaultHandler [virtual]
    LexicalHandler()LexicalHandler
    notationDecl(const XMLCh *const name, const XMLCh *const publicId, const XMLCh *const systemId)DefaultHandler [virtual]
    processingInstruction(const XMLCh *const target, const XMLCh *const data)DefaultHandler [virtual]
    resetDocType()DefaultHandler [virtual]
    resetDocument()DefaultHandler [virtual]
    resetErrors()DefaultHandler [virtual]
    resolveEntity(const XMLCh *const publicId, const XMLCh *const systemId)DefaultHandler [virtual]
    setDocumentLocator(const Locator *const locator)DefaultHandler [virtual]
    skippedEntity(const XMLCh *const name)DefaultHandler [virtual]
    startCDATA()DefaultHandler [virtual]
    startDocument()DefaultHandler [virtual]
    startDTD(const XMLCh *const name, const XMLCh *const publicId, const XMLCh *const systemId)DefaultHandler [virtual]
    startElement(const XMLCh *const uri, const XMLCh *const localname, const XMLCh *const qname, const Attributes &attrs)DefaultHandler [virtual]
    startEntity(const XMLCh *const name)DefaultHandler [virtual]
    startPrefixMapping(const XMLCh *const prefix, const XMLCh *const uri)DefaultHandler [virtual]
    unparsedEntityDecl(const XMLCh *const name, const XMLCh *const publicId, const XMLCh *const systemId, const XMLCh *const notationName)DefaultHandler [virtual]
    warning(const SAXParseException &exc)DefaultHandler [virtual]
    ~ContentHandler()ContentHandler [virtual]
    ~DeclHandler()DeclHandler [virtual]
    ~DefaultHandler()DefaultHandler [virtual]
    ~DTDHandler()DTDHandler [virtual]
    ~EntityResolver()EntityResolver [virtual]
    ~ErrorHandler()ErrorHandler [virtual]
    ~LexicalHandler()LexicalHandler [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XSComplexTypeDefinition_8hpp.html0000644000175000017500000000451711363620005024063 0ustar borisboris Xerces-C++: XSComplexTypeDefinition.hpp File Reference

    XSComplexTypeDefinition.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XSComplexTypeDefinition

    Defines

    #define XERCESC_INCLUDE_GUARD_XSCOMPLEXTYPEDEFINITION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XSCOMPLEXTYPEDEFINITION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classBinOutputStream-members.html0000644000175000017500000001003611363620005024143 0ustar borisboris Xerces-C++: Member List

    BinOutputStream Member List

    This is the complete list of members for BinOutputStream, including all inherited members.

    BinOutputStream()BinOutputStream [protected]
    curPos() const =0BinOutputStream [pure virtual]
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    writeBytes(const XMLByte *const toGo, const XMLSize_t maxToWrite)=0BinOutputStream [pure virtual]
    XMemory()XMemory [protected]
    ~BinOutputStream()BinOutputStream [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classSAX2XMLFilter.html0000644000175000017500000001661311363620006021662 0ustar borisboris Xerces-C++: SAX2XMLFilter Class Reference

    SAX2XMLFilter Class Reference

    Inheritance diagram for SAX2XMLFilter:

    SAX2XMLReader

    List of all members.

    Public Member Functions

    Constructors and Destructor
     SAX2XMLFilter ()
     The default constructor.
    virtual ~SAX2XMLFilter ()
     The destructor.
    Implementation of SAX 2.0 XMLFilter interface's.
    virtual SAX2XMLReadergetParent () const =0
     This method returns the parent XMLReader object.
    virtual void setParent (SAX2XMLReader *parent)=0
     Sets the parent XMLReader object; parse requests will be forwarded to this object, and callback notifications coming from it will be postprocessed.


    Constructor & Destructor Documentation

    SAX2XMLFilter::SAX2XMLFilter (  ) 

    The default constructor.

    virtual SAX2XMLFilter::~SAX2XMLFilter (  )  [virtual]

    The destructor.


    Member Function Documentation

    virtual SAX2XMLReader* SAX2XMLFilter::getParent (  )  const [pure virtual]

    This method returns the parent XMLReader object.

    Returns:
    A pointer to the parent XMLReader object.

    virtual void SAX2XMLFilter::setParent ( SAX2XMLReader parent  )  [pure virtual]

    Sets the parent XMLReader object; parse requests will be forwarded to this object, and callback notifications coming from it will be postprocessed.

    Parameters:
    parent The new XMLReader parent.
    See also:
    SAX2XMLReader::SAX2XMLReader


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLInteger-members.html0000644000175000017500000000716011363620006023021 0ustar borisboris Xerces-C++: Member List

    XMLInteger Member List

    This is the complete list of members for XMLInteger, including all inherited members.

    intValue() const XMLInteger
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    XMemory()XMemory [protected]
    XMLInteger(const int intVal)XMLInteger
    ~XMLInteger()XMLInteger


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/UnexpectedEOFException_8hpp.html0000644000175000017500000000407611363620005023643 0ustar borisboris Xerces-C++: UnexpectedEOFException.hpp File Reference

    UnexpectedEOFException.hpp File Reference

    Go to the source code of this file.

    Defines

    #define XERCESC_INCLUDE_GUARD_UNEXPECTEDEOFEXCEPTION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_UNEXPECTEDEOFEXCEPTION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMDocumentTraversal.html0000644000175000017500000003612711363620005023421 0ustar borisboris Xerces-C++: DOMDocumentTraversal Class Reference

    DOMDocumentTraversal Class Reference

    DOMDocumentTraversal contains methods that create DOMNodeIterators and DOMTreeWalkers to traverse a node and its children in document order (depth first, pre-order traversal, which is equivalent to the order in which the start tags occur in the text representation of the document). More...

    Inheritance diagram for DOMDocumentTraversal:

    DOMDocument

    List of all members.

    Public Member Functions

    Destructor
    virtual ~DOMDocumentTraversal ()
     Destructor.
    Functions introduced in DOM Level 2
    virtual DOMNodeIteratorcreateNodeIterator (DOMNode *root, DOMNodeFilter::ShowType whatToShow, DOMNodeFilter *filter, bool entityReferenceExpansion)=0
     Creates a NodeIterator object.
    virtual DOMTreeWalkercreateTreeWalker (DOMNode *root, DOMNodeFilter::ShowType whatToShow, DOMNodeFilter *filter, bool entityReferenceExpansion)=0
     Creates a TreeWalker object.

    Protected Member Functions

    Hidden constructors
     DOMDocumentTraversal ()


    Detailed Description

    DOMDocumentTraversal contains methods that create DOMNodeIterators and DOMTreeWalkers to traverse a node and its children in document order (depth first, pre-order traversal, which is equivalent to the order in which the start tags occur in the text representation of the document).

    In DOMs which support the Traversal feature, DOMDocumentTraversal will be implemented by the same objects that implement the DOMDocument interface.

    See also the Document Object Model (DOM) Level 2 Traversal and Range Specification.

    Since:
    DOM Level 2

    Constructor & Destructor Documentation

    DOMDocumentTraversal::DOMDocumentTraversal (  )  [protected]

    virtual DOMDocumentTraversal::~DOMDocumentTraversal (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual DOMNodeIterator* DOMDocumentTraversal::createNodeIterator ( DOMNode root,
    DOMNodeFilter::ShowType  whatToShow,
    DOMNodeFilter filter,
    bool  entityReferenceExpansion 
    ) [pure virtual]

    Creates a NodeIterator object.

    (DOM2)

    NodeIterators are used to step through a set of nodes, e.g. the set of nodes in a NodeList, the document subtree governed by a particular node, the results of a query, or any other set of nodes. The set of nodes to be iterated is determined by the implementation of the NodeIterator. DOM Level 2 specifies a single NodeIterator implementation for document-order traversal of a document subtree. Instances of these iterators are created by calling DOMDocumentTraversal.createNodeIterator().

    To produce a view of the document that has entity references expanded and does not expose the entity reference node itself, use the whatToShow flags to hide the entity reference node and set expandEntityReferences to true when creating the iterator. To produce a view of the document that has entity reference nodes but no entity expansion, use the whatToShow flags to show the entity reference node and set expandEntityReferences to false.

    Parameters:
    root The root node of the DOM tree
    whatToShow This attribute determines which node types are presented via the iterator.
    filter The filter used to screen nodes
    entityReferenceExpansion The value of this flag determines whether the children of entity reference nodes are visible to the iterator. If false, they will be skipped over.
    Since:
    DOM Level 2

    virtual DOMTreeWalker* DOMDocumentTraversal::createTreeWalker ( DOMNode root,
    DOMNodeFilter::ShowType  whatToShow,
    DOMNodeFilter filter,
    bool  entityReferenceExpansion 
    ) [pure virtual]

    Creates a TreeWalker object.

    (DOM2)

    TreeWalker objects are used to navigate a document tree or subtree using the view of the document defined by its whatToShow flags and any filters that are defined for the TreeWalker. Any function which performs navigation using a TreeWalker will automatically support any view defined by a TreeWalker.

    Omitting nodes from the logical view of a subtree can result in a structure that is substantially different from the same subtree in the complete, unfiltered document. Nodes that are siblings in the TreeWalker view may be children of different, widely separated nodes in the original view. For instance, consider a Filter that skips all nodes except for DOMText nodes and the root node of a document. In the logical view that results, all text nodes will be siblings and appear as direct children of the root node, no matter how deeply nested the structure of the original document.

    To produce a view of the document that has entity references expanded and does not expose the entity reference node itself, use the whatToShow flags to hide the entity reference node and set expandEntityReferences to true when creating the TreeWalker. To produce a view of the document that has entity reference nodes but no entity expansion, use the whatToShow flags to show the entity reference node and set expandEntityReferences to false

    Parameters:
    root The root node of the DOM tree
    whatToShow This attribute determines which node types are presented via the tree-walker.
    filter The filter used to screen nodes
    entityReferenceExpansion The value of this flag determines whether the children of entity reference nodes are visible to the tree-walker. If false, they will be skipped over.
    Since:
    DOM Level 2


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMMemoryManager.html0000644000175000017500000005500111363620005022512 0ustar borisboris Xerces-C++: DOMMemoryManager Class Reference

    DOMMemoryManager Class Reference

    The DOMMemoryManager interface exposes the memory allocation-related functionalities of a DOMDocument. More...

    List of all members.

    Public Types

    enum  NodeObjectType {
      ATTR_OBJECT = 0, ATTR_NS_OBJECT = 1, CDATA_SECTION_OBJECT = 2, COMMENT_OBJECT = 3,
      DOCUMENT_FRAGMENT_OBJECT = 4, DOCUMENT_TYPE_OBJECT = 5, ELEMENT_OBJECT = 6, ELEMENT_NS_OBJECT = 7,
      ENTITY_OBJECT = 8, ENTITY_REFERENCE_OBJECT = 9, NOTATION_OBJECT = 10, PROCESSING_INSTRUCTION_OBJECT = 11,
      TEXT_OBJECT = 12
    }

    Public Member Functions

    Destructor
    virtual ~DOMMemoryManager ()
     Destructor.
    virtual XMLSize_t getMemoryAllocationBlockSize () const =0
     Returns the size of the chunks of memory allocated by the memory manager.
    virtual void setMemoryAllocationBlockSize (XMLSize_t size)=0
     Set the size of the chunks of memory allocated by the memory manager.
    virtual void * allocate (XMLSize_t amount)=0
     Allocate a memory block of the requested size from the managed pool.
    virtual void * allocate (XMLSize_t amount, DOMMemoryManager::NodeObjectType type)=0
     Allocate a memory block of the requested size from the managed pool of DOM objects.
    virtual void release (DOMNode *object, DOMMemoryManager::NodeObjectType type)=0
     Release a DOM object and place its memory back in the pool.
    virtual XMLChcloneString (const XMLCh *src)=0
     Allocate a memory block from the mnaged pool and copy the provided string.

    Protected Member Functions

    Hidden constructors
     DOMMemoryManager ()


    Detailed Description

    The DOMMemoryManager interface exposes the memory allocation-related functionalities of a DOMDocument.

    Member Enumeration Documentation

    Enumerator:
    ATTR_OBJECT 
    ATTR_NS_OBJECT 
    CDATA_SECTION_OBJECT 
    COMMENT_OBJECT 
    DOCUMENT_FRAGMENT_OBJECT 
    DOCUMENT_TYPE_OBJECT 
    ELEMENT_OBJECT 
    ELEMENT_NS_OBJECT 
    ENTITY_OBJECT 
    ENTITY_REFERENCE_OBJECT 
    NOTATION_OBJECT 
    PROCESSING_INSTRUCTION_OBJECT 
    TEXT_OBJECT 


    Constructor & Destructor Documentation

    DOMMemoryManager::DOMMemoryManager (  )  [protected]

    virtual DOMMemoryManager::~DOMMemoryManager (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual XMLSize_t DOMMemoryManager::getMemoryAllocationBlockSize (  )  const [pure virtual]

    Returns the size of the chunks of memory allocated by the memory manager.

    Returns:
    the dimension of the chunks of memory allocated by the memory manager

    virtual void DOMMemoryManager::setMemoryAllocationBlockSize ( XMLSize_t  size  )  [pure virtual]

    Set the size of the chunks of memory allocated by the memory manager.

    Parameters:
    size the new size of the chunks; it must be greater than 4KB

    virtual void* DOMMemoryManager::allocate ( XMLSize_t  amount  )  [pure virtual]

    Allocate a memory block of the requested size from the managed pool.

    Parameters:
    amount the size of the new memory block
    Returns:
    the pointer to the newly allocated block

    virtual void* DOMMemoryManager::allocate ( XMLSize_t  amount,
    DOMMemoryManager::NodeObjectType  type 
    ) [pure virtual]

    Allocate a memory block of the requested size from the managed pool of DOM objects.

    Parameters:
    amount the size of the new memory block
    type the type of the DOM object that will be stored in the block
    Returns:
    the pointer to the newly allocated block

    virtual void DOMMemoryManager::release ( DOMNode object,
    DOMMemoryManager::NodeObjectType  type 
    ) [pure virtual]

    Release a DOM object and place its memory back in the pool.

    Parameters:
    object the pointer to the DOM node
    type the type of the DOM object

    virtual XMLCh* DOMMemoryManager::cloneString ( const XMLCh src  )  [pure virtual]

    Allocate a memory block from the mnaged pool and copy the provided string.

    Parameters:
    src the string to be copied
    Returns:
    the pointer to the newly allocated block


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classPSVIElement-members.html0000644000175000017500000003013111363620006023130 0ustar borisboris Xerces-C++: Member List

    PSVIElement Member List

    This is the complete list of members for PSVIElement, including all inherited members.

    ASSESSMENT_TYPE enum namePSVIItem
    fAssessmentTypePSVIItem [protected]
    fCanonicalValuePSVIItem [protected]
    fDefaultValuePSVIItem [protected]
    fIsSpecifiedPSVIItem [protected]
    fMemberTypePSVIItem [protected]
    fMemoryManagerPSVIItem [protected]
    fNormalizedValuePSVIItem [protected]
    fTypePSVIItem [protected]
    fValidationContextPSVIItem [protected]
    fValidityStatePSVIItem [protected]
    getActualValue() const PSVIItem [virtual]
    getCanonicalRepresentation() const PSVIItem
    getElementDeclaration()PSVIElement
    getIsSchemaSpecified() const PSVIItem
    getMemberTypeDefinition()PSVIElement [virtual]
    getNotationDeclaration()PSVIElement
    getSchemaDefault()PSVIItem
    getSchemaInformation()PSVIElement
    getSchemaNormalizedValue()PSVIItem
    getTypeDefinition()PSVIElement [virtual]
    getValidationAttempted() const PSVIItem
    getValidationContext()PSVIItem
    getValidity() const PSVIItem
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    PSVIElement(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)PSVIElement
    PSVIItem(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)PSVIItem
    reset(const VALIDITY_STATE validityState, const ASSESSMENT_TYPE assessmentType, const XMLCh *const validationContext, bool isSpecified, XSElementDeclaration *const elemDecl, XSTypeDefinition *const typeDef, XSSimpleTypeDefinition *const memberType, XSModel *const schemaInfo, const XMLCh *const defaultValue, const XMLCh *const normalizedValue=0, XMLCh *const canonicalValue=0, XSNotationDeclaration *const notationDecl=0)PSVIElement
    PSVIItem::reset(const XMLCh *const validationContext, const XMLCh *const normalizedValue, const VALIDITY_STATE validityState, const ASSESSMENT_TYPE assessmentType)PSVIItem
    setValidationAttempted(PSVIItem::ASSESSMENT_TYPE attemptType)PSVIItem
    setValidity(PSVIItem::VALIDITY_STATE validity)PSVIItem
    VALIDATION_FULL enum valuePSVIItem
    VALIDATION_NONE enum valuePSVIItem
    VALIDATION_PARTIAL enum valuePSVIItem
    VALIDITY_INVALID enum valuePSVIItem
    VALIDITY_NOTKNOWN enum valuePSVIItem
    VALIDITY_STATE enum namePSVIItem
    VALIDITY_VALID enum valuePSVIItem
    XMemory()XMemory [protected]
    ~PSVIElement()PSVIElement
    ~PSVIItem()PSVIItem [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMLSException_8hpp-source.html0000644000175000017500000002027511363620004023357 0ustar borisboris Xerces-C++: DOMLSException.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLGrammarPool-members.html0000644000175000017500000002015511363620006023643 0ustar borisboris Xerces-C++: Member List

    XMLGrammarPool Member List

    This is the complete list of members for XMLGrammarPool, including all inherited members.

    cacheGrammar(Grammar *const gramToCache)=0XMLGrammarPool [pure virtual]
    clear()=0XMLGrammarPool [pure virtual]
    createDTDDescription(const XMLCh *const systemId)=0XMLGrammarPool [pure virtual]
    createDTDGrammar()=0XMLGrammarPool [pure virtual]
    createSchemaDescription(const XMLCh *const targetNamespace)=0XMLGrammarPool [pure virtual]
    createSchemaGrammar()=0XMLGrammarPool [pure virtual]
    deserializeGrammars(BinInputStream *const)=0XMLGrammarPool [pure virtual]
    getGrammarEnumerator() const =0XMLGrammarPool [pure virtual]
    getIgnoreSerializedAnnotations() const XMLGrammarPool
    getMemoryManager()XMLGrammarPool
    getURIStringPool()=0XMLGrammarPool [pure virtual]
    getXSModel(bool &XSModelWasChanged)=0XMLGrammarPool [pure virtual]
    lockPool()=0XMLGrammarPool [pure virtual]
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    orphanGrammar(const XMLCh *const nameSpaceKey)=0XMLGrammarPool [pure virtual]
    retrieveGrammar(XMLGrammarDescription *const gramDesc)=0XMLGrammarPool [pure virtual]
    serializeGrammars(BinOutputStream *const)=0XMLGrammarPool [pure virtual]
    setIgnoreSerializedAnnotations(const bool flag)XMLGrammarPool
    unlockPool()=0XMLGrammarPool [pure virtual]
    XMemory()XMemory [protected]
    XMLGrammarPool(MemoryManager *const memMgr=XMLPlatformUtils::fgMemoryManager)XMLGrammarPool [protected]
    ~XMLGrammarPool()XMLGrammarPool [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/RuntimeException_8hpp.html0000644000175000017500000000401611363620005022622 0ustar borisboris Xerces-C++: RuntimeException.hpp File Reference

    RuntimeException.hpp File Reference

    Go to the source code of this file.

    Defines

    #define XERCESC_INCLUDE_GUARD_RUNTIMEEXCEPTION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_RUNTIMEEXCEPTION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_func_0x62.html0000644000175000017500000001061511363620005022165 0ustar borisboris Xerces-C++: Class Members - Functions
     

    - b -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLErrorReporter-members.html0000644000175000017500000000774611363620006024252 0ustar borisboris Xerces-C++: Member List

    XMLErrorReporter Member List

    This is the complete list of members for XMLErrorReporter, including all inherited members.

    error(const unsigned int errCode, const XMLCh *const errDomain, const ErrTypes type, const XMLCh *const errorText, const XMLCh *const systemId, const XMLCh *const publicId, const XMLFileLoc lineNum, const XMLFileLoc colNum)=0XMLErrorReporter [pure virtual]
    ErrType_Error enum valueXMLErrorReporter
    ErrType_Fatal enum valueXMLErrorReporter
    ErrType_Warning enum valueXMLErrorReporter
    ErrTypes enum nameXMLErrorReporter
    ErrTypes_Unknown enum valueXMLErrorReporter
    resetErrors()=0XMLErrorReporter [pure virtual]
    XMLErrorReporter()XMLErrorReporter [protected]
    ~XMLErrorReporter()XMLErrorReporter [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLEntityDecl-members.html0000644000175000017500000002311011363620006023461 0ustar borisboris Xerces-C++: Member List

    XMLEntityDecl Member List

    This is the complete list of members for XMLEntityDecl, including all inherited members.

    getBaseURI() const XMLEntityDecl
    getDeclaredInIntSubset() const =0XMLEntityDecl [pure virtual]
    getId() const XMLEntityDecl
    getIsParameter() const =0XMLEntityDecl [pure virtual]
    getIsSpecialChar() const =0XMLEntityDecl [pure virtual]
    getKey() const XMLEntityDecl
    getMemoryManager() const XMLEntityDecl
    getName() const XMLEntityDecl
    getNotationName() const XMLEntityDecl
    getPublicId() const XMLEntityDecl
    getSystemId() const XMLEntityDecl
    getValue() const XMLEntityDecl
    getValueLen() const XMLEntityDecl
    isExternal() const XMLEntityDecl
    isUnparsed() const XMLEntityDecl
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    setBaseURI(const XMLCh *const newId)XMLEntityDecl
    setId(const XMLSize_t newId)XMLEntityDecl
    setIsExternal(bool value)XMLEntityDecl
    setName(const XMLCh *const entName)XMLEntityDecl
    setNotationName(const XMLCh *const newName)XMLEntityDecl
    setPublicId(const XMLCh *const newId)XMLEntityDecl
    setSystemId(const XMLCh *const newId)XMLEntityDecl
    setValue(const XMLCh *const newValue)XMLEntityDecl
    XMemory()XMemory [protected]
    XMLEntityDecl(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLEntityDecl
    XMLEntityDecl(const XMLCh *const entName, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLEntityDecl
    XMLEntityDecl(const XMLCh *const entName, const XMLCh *const value, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLEntityDecl
    XMLEntityDecl(const XMLCh *const entName, const XMLCh value, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLEntityDecl
    ~XMLEntityDecl()XMLEntityDecl [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/globals_defs_0x64.html0000644000175000017500000000543311363620007021574 0ustar borisboris Xerces-C++: Class Members
    Generated on Wed Apr 21 17:55:51 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSModelGroup-members.html0000644000175000017500000002102311363620006023365 0ustar borisboris Xerces-C++: Member List

    XSModelGroup Member List

    This is the complete list of members for XSModelGroup, including all inherited members.

    COMPOSITOR_ALL enum valueXSModelGroup
    COMPOSITOR_CHOICE enum valueXSModelGroup
    COMPOSITOR_SEQUENCE enum valueXSModelGroup
    COMPOSITOR_TYPE enum nameXSModelGroup
    fAnnotationXSModelGroup [protected]
    fComponentTypeXSObject [protected]
    fCompositorTypeXSModelGroup [protected]
    fIdXSObject [protected]
    fMemoryManagerXSObject [protected]
    fParticleListXSModelGroup [protected]
    fXSModelXSObject [protected]
    getAnnotation() const XSModelGroup
    getCompositor() const XSModelGroup
    getId() const XSObject [virtual]
    getName() const XSObject [virtual]
    getNamespace()XSObject [virtual]
    getNamespaceItem()XSObject [virtual]
    getParticles() const XSModelGroup
    getType() const XSObject
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    setId(XMLSize_t id)XSObject
    XMemory()XMemory [protected]
    XSModelGroup(COMPOSITOR_TYPE compositorType, XSParticleList *const particleList, XSAnnotation *const annot, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSModelGroup
    XSObject(XSConstants::COMPONENT_TYPE compType, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSObject
    ~XSModelGroup()XSModelGroup
    ~XSObject()XSObject [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/tab_r.gif0000644000175000017500000000503111363620004017246 0ustar borisborisGIF89a,Õö÷ùñô÷öøúüýþúûüùúûøùúêïóïóöÆÕßÒÞæØâéÞçíÝæìåìñèîòô÷ùóöø³ÈÕÁÒÝËÙâÏÜäÖá薴ŹɯÂÍ»ÎÙÃÔÞÂÓÝÈ×àÌÚâÕáèÙäê×âèåìðëðó„°ÇÑÞåÜæëãëïëñôîóõ÷úûûüüÿÿÿþþþ,,ÿ@’pH,ȤrÉl:ŸÐ¨tJ­Z¯Ø¬v •h<¬pkL.›Ïè´zÍn»ßð¸|N¯Ûïø¼~ÏwVa+‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ “*)^,*ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂö)'ÆÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæÚ¥(" ðñòóôõö÷øùúûüýþÿ H° ÁƒòK"ƒRHœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\éÅu&@€ Á²¦Í›8sêÜɳ§Oÿ–(±€DУH“*]Ê´©Ó§P£JJµªÕ«X³jÝʵ«×¯S84± ‰hÓª]˶­Û·pãÊK·®Ý»xóêÝË·¯ß¿€Ó} âDÌf(^̸±ãÇ#KžL¹²å˘3kÞ̹³çÏ C‹m¹ðCÄHœXͺµë×°cËžM»¶íÛ¸sëÞÍ»·ïßÀƒ N÷ÃJ” Á®¹óçУKŸN½ºõëØ³kßν»÷ïàËO¾úñ€ dÇ@€‚‚L¤"ÉÈF:ò‘Œ¤$9† (8…&ÉÉNzò“  ¥(G©FB^²!˨)WÉÊVºò•°l¤)1™ wÄò–¸Ì¥.wÊYºäƒà¥0‡IÌbó¾|ÉHpÌf:ó™Ðìe pJ±ˆ€}Ȧ6·ÉÍnzó›à §8û0Â%"¸æ8×ÉÎvºóðŒ§<ÉPÎQ`ò%×$€>÷ÉÏ~úóŸ ¨@JЂô M¨BÊІ:ô¡¨D'ZPKF Ö¼&16ÊÑŽzô£ ©HGJRb ÷Lç5ÏÁÒ–ºô¥ÿ0©LgJÓšš#(e>¯‰Óžúô§@ ªP‡JÔ¢õ¨HMªR—ÊÔ¦:õ©PªT§JÕª&5;%U·ÊÕ®zõ«` «XÇJV«ÂC§‹ÑjY×ÊÖ¶ºõ­p«\ŠU´À¦xÍ«^÷Ê×¾úõ¯ÐÀi)$‚”ô°ˆM¬bËØÆ:vˆ, ಘͬf7ËÙÎzö³  ­hGKÚÒšö´¨M­jWËÚÖºöµ°­*$ÛSPô¶¸Í­nwËÛÞúö·ÀÅm +„â¸ÈM®r—ËÜæ:÷¹ÐE®?±9ÏêZ÷ºØÍ®v¿9€î"‚ºÛ ¯xÇKÞòb—™ÑLÿ¯z×Ë^A¢·½ð¯|ç†÷Ò÷¾øÍ¯0í«ßþú÷¿¡ä/€Là»×ÀN°‚ï(à;øÁ n0„'LaýJ¸ÂÎ0{/¬á{ؘþ°ˆG|Ë“øÄ(¥‰SÌâCrÅ.ޱŒ ãÛøÆv¬1ŽwÌc6ê¸Ç@ÞñƒLd¹ÈHNñ‘“Ìd/¹ÉPÎð“£LeO¹ÊXŽp–·|â+sùËýõ2˜ÇL_1“ùÌí53š×M5³ùÍÇt3œç¼_:ÛÙÂwÎs™õÌgøÊ¹Ï€p ýÌ?úÐ/F´¢ë¼èFãÒÐŽŽt!-éJã‘Ò–Îô1­éN»‘ÓžuÿA-êP“ºÔ>5ª3­êUWºÕ®Ž4¬cÝèYÓZѶ¾õ¡s­ëAóº×€þ5°ù,ìaç¹ØÆ¶3²“=çe3ûÍÎ~öš£-í3S»Úc¾6¶¿¬ímo¹ÛÞÆ2¸ÃMåq“Êæ>7“Ó­n$³»ÝD~7¼,ïyó¸ÞöÆ1¾ómã}óÛÈÿvµ¿Þâ\É/µÁNâ…3ÜÉ÷´Ã#Þá‰S\ÊguÆ-mñO¸ã0ÈC¾à‘“\Ë'_´ÉS^à•³|À.ùc.ó0לÐ4¿9~s®ó=÷¼Ï<ÿy|ƒ.ô4]ÏD?ºz“®ô67]ÙO§3Ó£ÞÌ©SÄW‡vÖÙl>õ­3Úëdî:Øu)ö±?ÚìÙF;˜Ë®öW²½í­|;ÜW)÷¹²îvtÞ˽w¾÷Ý|à×=xÂÞÝA;xerces-c-3.1.1/doc/html/apiDocs-3/classDOMNodeIterator-members.html0000644000175000017500000001033511363620005023777 0ustar borisboris Xerces-C++: Member List

    DOMNodeIterator Member List

    This is the complete list of members for DOMNodeIterator, including all inherited members.

    detach()=0DOMNodeIterator [pure virtual]
    DOMNodeIterator()DOMNodeIterator [protected]
    DOMNodeIterator(const DOMNodeIterator &)DOMNodeIterator [protected]
    getExpandEntityReferences()=0DOMNodeIterator [pure virtual]
    getFilter()=0DOMNodeIterator [pure virtual]
    getRoot()=0DOMNodeIterator [pure virtual]
    getWhatToShow()=0DOMNodeIterator [pure virtual]
    nextNode()=0DOMNodeIterator [pure virtual]
    previousNode()=0DOMNodeIterator [pure virtual]
    release()=0DOMNodeIterator [pure virtual]
    ~DOMNodeIterator()DOMNodeIterator [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XSNamespaceItem_8hpp-source.html0000644000175000017500000004730311363620005023612 0ustar borisboris Xerces-C++: XSNamespaceItem.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMXPathExpression_8hpp.html0000644000175000017500000000523111363620005022764 0ustar borisboris Xerces-C++: DOMXPathExpression.hpp File Reference

    DOMXPathExpression.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMXPathExpression
     The DOMXPathExpression interface represents a parsed and resolved XPath expression. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMXPATHEXPRESSION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMXPATHEXPRESSION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/globals.html0000644000175000017500000003453211363620006020013 0ustar borisboris Xerces-C++: Class Members
    Here is a list of all file members with links to the files they belong to:

    - c -


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/Xerces__autoconf__config_8msvc_8hpp.html0000644000175000017500000005547511363620005025431 0ustar borisboris Xerces-C++: Xerces_autoconf_config.msvc.hpp File Reference

    Xerces_autoconf_config.msvc.hpp File Reference

    Go to the source code of this file.

    Defines

    #define XERCESC_INCLUDE_GUARD_XERCES_AUTOCONFIG_CONFIG_HPP
    #define XERCES_S16BIT_INT   signed short
    #define XERCES_U16BIT_INT   unsigned short
    #define XERCES_S32BIT_INT   INT32
    #define XERCES_U32BIT_INT   UINT32
    #define XERCES_S64BIT_INT   INT32
    #define XERCES_U64BIT_INT   UINT32
    #define XERCES_XMLCH_T   unsigned short
    #define XERCES_SIZE_T   SIZE_T
    #define XERCES_SSIZE_T   SSIZE_T
    #define XERCES_HAS_CPP_NAMESPACE   1
    #define XERCES_STD_NAMESPACE   1
    #define XERCES_NEW_IOSTREAMS   1
    #define XERCES_LSTRSUPPORT   1
    #define XERCES_PLATFORM_EXPORT   __declspec(dllexport)
    #define XERCES_PLATFORM_IMPORT   __declspec(dllimport)
    #define DLL_EXPORT
    #define XERCES_MFC_SUPPORT

    Typedefs

    typedef SIZE_T XMLSize_t
    typedef SSIZE_T XMLSSize_t
    typedef unsigned short XMLCh
    typedef unsigned short XMLUInt16
    typedef UINT32 XMLUInt32
    typedef UINT32 XMLUInt64
    typedef signed short XMLInt16
    typedef INT32 XMLInt32
    typedef INT32 XMLInt64
    typedef XMLUInt64 XMLFilePos
    typedef XMLUInt64 XMLFileLoc


    Define Documentation

    #define DLL_EXPORT

    #define XERCES_HAS_CPP_NAMESPACE   1

    #define XERCES_LSTRSUPPORT   1

    #define XERCES_MFC_SUPPORT

    #define XERCES_NEW_IOSTREAMS   1

    #define XERCES_PLATFORM_EXPORT   __declspec(dllexport)

    #define XERCES_PLATFORM_IMPORT   __declspec(dllimport)

    #define XERCES_S16BIT_INT   signed short

    #define XERCES_S32BIT_INT   INT32

    #define XERCES_S64BIT_INT   INT32

    #define XERCES_SIZE_T   SIZE_T

    #define XERCES_SSIZE_T   SSIZE_T

    #define XERCES_STD_NAMESPACE   1

    #define XERCES_U16BIT_INT   unsigned short

    #define XERCES_U32BIT_INT   UINT32

    #define XERCES_U64BIT_INT   UINT32

    #define XERCES_XMLCH_T   unsigned short

    #define XERCESC_INCLUDE_GUARD_XERCES_AUTOCONFIG_CONFIG_HPP


    Typedef Documentation

    typedef unsigned short XMLCh

    typedef signed short XMLInt16

    typedef INT32 XMLInt32

    typedef INT32 XMLInt64

    typedef SIZE_T XMLSize_t

    typedef SSIZE_T XMLSSize_t

    typedef unsigned short XMLUInt16

    typedef UINT32 XMLUInt32

    typedef UINT32 XMLUInt64


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classPanicHandler.png0000644000175000017500000000071111363620006021556 0ustar borisboris‰PNG  IHDRPÌì éPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf_IDATX…í”[ŽÃ EÍÏ|ÛÞYAÕn¨ÒHÙÿÛÈCaÚŒÔh„[®cNüˆtÒÎÙ ìQÙæKh‚lmM€~‡ #¦´ ä]B@´= v) H´‡úª2¸ŽÖ‡|Mdjö­{¿Í *¯¢¶oñ!´9”„ªï%.á÷U ú¡2‹ „:‹#Â6ÿ‹pþkß³çÉÿ€ð5}ž0MÏ®0‹A„A„A³GǾ;÷opçl‚¹ÊK”ÈŧÊ/R±¬ÉUBgBö5˜c‚¤D"±þÓO„Œ ŠüÞ#ÂQ˜m™[‚Ô ßXªÈ”i_í¦û¬ê!V‚õaVÖ+Š™š}luV‘RXÉ¡Q¥ÒJ Z,jQE£–•ξ›>ÈÙT¡%z¿)µY;M^³*³{J™E¼Ð[=!ô¾ö=»ýõ(ð7‹x¡åIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classDOMCharacterData.html0000644000175000017500000006675311363620005022455 0ustar borisboris Xerces-C++: DOMCharacterData Class Reference

    DOMCharacterData Class Reference

    The DOMCharacterData interface extends DOMNode with a set of attributes and methods for accessing character data in the DOM. More...

    Inheritance diagram for DOMCharacterData:

    DOMNode DOMComment DOMText DOMCDATASection

    List of all members.

    Public Member Functions

    Destructor
    virtual ~DOMCharacterData ()
     Destructor.
    Functions introduced in DOM Level 1
    virtual const XMLChgetData () const =0
     Returns the character data of the node that implements this interface.
    virtual XMLSize_t getLength () const =0
     Returns the number of characters that are available through data and the substringData method below.
    virtual const XMLChsubstringData (XMLSize_t offset, XMLSize_t count) const =0
     Extracts a range of data from the node.
    virtual void appendData (const XMLCh *arg)=0
     Append the string to the end of the character data of the node.
    virtual void insertData (XMLSize_t offset, const XMLCh *arg)=0
     Insert a string at the specified character offset.
    virtual void deleteData (XMLSize_t offset, XMLSize_t count)=0
     Remove a range of characters from the node.
    virtual void replaceData (XMLSize_t offset, XMLSize_t count, const XMLCh *arg)=0
     Replace the characters starting at the specified character offset with the specified string.
    virtual void setData (const XMLCh *data)=0
     Sets the character data of the node that implements this interface.

    Protected Member Functions

    Hidden constructors
     DOMCharacterData ()
     DOMCharacterData (const DOMCharacterData &other)


    Detailed Description

    The DOMCharacterData interface extends DOMNode with a set of attributes and methods for accessing character data in the DOM.

    For clarity this set is defined here rather than on each object that uses these attributes and methods. No DOM objects correspond directly to DOMCharacterData, though DOMText and others do inherit the interface from it. All offsets in this interface start from 0.

    As explained in the DOM spec, text strings in the DOM are represented in UTF-16, i.e. as a sequence of 16-bit units. In the following, the term 16-bit units is used whenever necessary to indicate that indexing on DOMCharacterData is done in 16-bit units.

    See also the Document Object Model (DOM) Level 2 Core Specification.

    Since:
    DOM Level 1

    Constructor & Destructor Documentation

    DOMCharacterData::DOMCharacterData (  )  [protected]

    DOMCharacterData::DOMCharacterData ( const DOMCharacterData other  )  [protected]

    virtual DOMCharacterData::~DOMCharacterData (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual const XMLCh* DOMCharacterData::getData (  )  const [pure virtual]

    Returns the character data of the node that implements this interface.

    The DOM implementation may not put arbitrary limits on the amount of data that may be stored in a DOMCharacterData node. However, implementation limits may mean that the entirety of a node's data may not fit into a single XMLCh* String. In such cases, the user may call substringData to retrieve the data in appropriately sized pieces.

    Exceptions:
    DOMException NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly.
    Since:
    DOM Level 1

    virtual XMLSize_t DOMCharacterData::getLength (  )  const [pure virtual]

    Returns the number of characters that are available through data and the substringData method below.

    This may have the value zero, i.e., CharacterData nodes may be empty.

    Since:
    DOM Level 1

    virtual const XMLCh* DOMCharacterData::substringData ( XMLSize_t  offset,
    XMLSize_t  count 
    ) const [pure virtual]

    Extracts a range of data from the node.

    Parameters:
    offset Start offset of substring to extract.
    count The number of characters to extract.
    Returns:
    The specified substring. If the sum of offset and count exceeds the length, then all characters to the end of the data are returned.
    Exceptions:
    DOMException INDEX_SIZE_ERR: Raised if the specified offset is negative or greater than the number of characters in data, or if the specified count is negative.
    Since:
    DOM Level 1

    virtual void DOMCharacterData::appendData ( const XMLCh arg  )  [pure virtual]

    Append the string to the end of the character data of the node.

    Upon success, data provides access to the concatenation of data and the XMLCh* String specified.

    Parameters:
    arg The XMLCh* String to append.
    Exceptions:
    DOMException NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
    Since:
    DOM Level 1

    virtual void DOMCharacterData::insertData ( XMLSize_t  offset,
    const XMLCh arg 
    ) [pure virtual]

    Insert a string at the specified character offset.

    Parameters:
    offset The character offset at which to insert.
    arg The XMLCh* String to insert.
    Exceptions:
    DOMException INDEX_SIZE_ERR: Raised if the specified offset is negative or greater than the number of characters in data.
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
    Since:
    DOM Level 1

    virtual void DOMCharacterData::deleteData ( XMLSize_t  offset,
    XMLSize_t  count 
    ) [pure virtual]

    Remove a range of characters from the node.

    Upon success, data and length reflect the change.

    Parameters:
    offset The offset from which to remove characters.
    count The number of characters to delete. If the sum of offset and count exceeds length then all characters from offset to the end of the data are deleted.
    Exceptions:
    DOMException INDEX_SIZE_ERR: Raised if the specified offset is negative or greater than the number of characters in data, or if the specified count is negative.
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
    Since:
    DOM Level 1

    virtual void DOMCharacterData::replaceData ( XMLSize_t  offset,
    XMLSize_t  count,
    const XMLCh arg 
    ) [pure virtual]

    Replace the characters starting at the specified character offset with the specified string.

    Parameters:
    offset The offset from which to start replacing.
    count The number of characters to replace. If the sum of offset and count exceeds length , then all characters to the end of the data are replaced (i.e., the effect is the same as a remove method call with the same range, followed by an append method invocation).
    arg The XMLCh* String with which the range must be replaced.
    Exceptions:
    DOMException INDEX_SIZE_ERR: Raised if the specified offset is negative or greater than the number of characters in data, or if the specified count is negative.
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
    Since:
    DOM Level 1

    virtual void DOMCharacterData::setData ( const XMLCh data  )  [pure virtual]

    Sets the character data of the node that implements this interface.

    Parameters:
    data The XMLCh* String to set.
    Since:
    DOM Level 1


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMRangeException.png0000644000175000017500000000072711363620005022507 0ustar borisboris‰PNG  IHDR…PÅ«“PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfmIDATX…í•MŽ…0€ËfÖ-7ÀLf.ôVÞÿßU[Ÿ6j^œ¤Ä”‚ô“‰á÷²|‡ŸáªtƃRâUdlâ:é˜!‡ua mÀʳЉ£™!LΆÒ@ìHä»"?¤.VâDabÞ53¤i°t EÓ®…Aä4ÓÎ3\©³•á}A‹U»®Ç.c1hó±êËà}ÙcìÊÖxýWÆ[錒qÇ¿áP^Ç!Ÿ`|Ï`Œã댧ô¥3:£3:£3:ã #]–âåD;cƒ)iPP`4s) Å_Ÿƒ’!Z> B™„Râjo 0=3¤ël%à$”!_a§Xâ~ˆ5#²­ P`ÔÅsŠuï»7 ­‡¹’zLé˜3¿®àŸ“ {Ÿ×zC­ÆœÀôÂïÌÚfx_¢ß~fäzpD]c1ÎàHm¦¾ð V}ÉýÊŒ=©G£r0àF(gü £E:£dÜðoøÜ8ýœ’f'IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/DOMTreeWalker_8hpp-source.html0000644000175000017500000003221611363620004023225 0ustar borisboris Xerces-C++: DOMTreeWalker.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/SynchronizedStringPool_8hpp-source.html0000644000175000017500000002632411363620004025323 0ustar borisboris Xerces-C++: SynchronizedStringPool.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/Xerces__autoconf__config_8borland_8hpp.html0000644000175000017500000005736011363620005026075 0ustar borisboris Xerces-C++: Xerces_autoconf_config.borland.hpp File Reference

    Xerces_autoconf_config.borland.hpp File Reference

    Go to the source code of this file.

    Defines

    #define XERCESC_INCLUDE_GUARD_XERCES_AUTOCONFIG_CONFIG_HPP
    #define XERCES_S16BIT_INT   signed short
    #define XERCES_U16BIT_INT   unsigned short
    #define XERCES_S32BIT_INT   INT32
    #define XERCES_U32BIT_INT   UINT32
    #define XERCES_S64BIT_INT   INT64
    #define XERCES_U64BIT_INT   UINT64
    #define XERCES_XMLCH_T   wchar_t
    #define XERCES_SIZE_T   SIZE_T
    #define XERCES_SSIZE_T   SSIZE_T
    #define XERCES_HAS_CPP_NAMESPACE   1
    #define XERCES_STD_NAMESPACE   1
    #define XERCES_NEW_IOSTREAMS   1
    #define XERCES_LSTRSUPPORT   1
    #define XERCES_PLATFORM_EXPORT   __declspec(dllexport)
    #define XERCES_PLATFORM_IMPORT   __declspec(dllimport)
    #define DLL_EXPORT
    #define XERCES_NO_MATCHING_DELETE_OPERATOR
    #define XERCES_NEED_XMEMORY_VIRTUAL_DESTRUCTOR

    Typedefs

    typedef SIZE_T XMLSize_t
    typedef SSIZE_T XMLSSize_t
    typedef wchar_t XMLCh
    typedef unsigned short XMLUInt16
    typedef UINT32 XMLUInt32
    typedef UINT64 XMLUInt64
    typedef signed short XMLInt16
    typedef INT32 XMLInt32
    typedef INT64 XMLInt64
    typedef XMLUInt64 XMLFilePos
    typedef XMLUInt64 XMLFileLoc


    Define Documentation

    #define DLL_EXPORT

    #define XERCES_HAS_CPP_NAMESPACE   1

    #define XERCES_LSTRSUPPORT   1

    #define XERCES_NEED_XMEMORY_VIRTUAL_DESTRUCTOR

    #define XERCES_NEW_IOSTREAMS   1

    #define XERCES_NO_MATCHING_DELETE_OPERATOR

    #define XERCES_PLATFORM_EXPORT   __declspec(dllexport)

    #define XERCES_PLATFORM_IMPORT   __declspec(dllimport)

    #define XERCES_S16BIT_INT   signed short

    #define XERCES_S32BIT_INT   INT32

    #define XERCES_S64BIT_INT   INT64

    #define XERCES_SIZE_T   SIZE_T

    #define XERCES_SSIZE_T   SSIZE_T

    #define XERCES_STD_NAMESPACE   1

    #define XERCES_U16BIT_INT   unsigned short

    #define XERCES_U32BIT_INT   UINT32

    #define XERCES_U64BIT_INT   UINT64

    #define XERCES_XMLCH_T   wchar_t

    #define XERCESC_INCLUDE_GUARD_XERCES_AUTOCONFIG_CONFIG_HPP


    Typedef Documentation

    typedef wchar_t XMLCh

    typedef signed short XMLInt16

    typedef INT32 XMLInt32

    typedef INT64 XMLInt64

    typedef SIZE_T XMLSize_t

    typedef SSIZE_T XMLSSize_t

    typedef unsigned short XMLUInt16

    typedef UINT32 XMLUInt32

    typedef UINT64 XMLUInt64


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/UnsupportedEncodingException_8hpp.html0000644000175000017500000000415611363620005025203 0ustar borisboris Xerces-C++: UnsupportedEncodingException.hpp File Reference

    UnsupportedEncodingException.hpp File Reference

    Go to the source code of this file.

    Defines

    #define XERCESC_INCLUDE_GUARD_UNSUPPORTEDENCODINGEXCEPTION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_UNSUPPORTEDENCODINGEXCEPTION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XSAttributeGroupDefinition_8hpp.html0000644000175000017500000000455511363620005024574 0ustar borisboris Xerces-C++: XSAttributeGroupDefinition.hpp File Reference

    XSAttributeGroupDefinition.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XSAttributeGroupDefinition

    Defines

    #define XERCESC_INCLUDE_GUARD_XSATTRIBUTEGROUPDEFINITION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XSATTRIBUTEGROUPDEFINITION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/BinFileInputStream_8hpp-source.html0000644000175000017500000003232011363620004024320 0ustar borisboris Xerces-C++: BinFileInputStream.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMCharacterData.png0000644000175000017500000000204011363620005022250 0ustar borisboris‰PNG  IHDRÀ à¡PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf¶IDATxœíÜQnã `£J}n{Õ®´ç©Rï„eÆqR§¸Æ0ìvþVŽí´á ÆVÚ Y–j~·åg½…ù›¢E B8çc iÒFˆiÃÓ~ "·Ž‹ZuéK=v‚'„÷iö‹Ï7é3BF<,!ß!BADDê…ÜøŠpnÄ€³#RãA`Ll®¯ÃÏŽ¯EŠPÄ7@Lñ’¿’×Ô2â¤Ëˆ×÷wiÂ$ˆ9¦"8Šà(‚£Ž"8Šà(‚£Ž"8Šà(‚£Î„k‹½Ñø(ŠPD?Dä&-LÚ0¸×öZ3é¾…~êbDn&me€}Š(k=Ôª%î2iÕ¤'m-..±§ŒÁöó†q½©C‹·6“Òª¡î] í²ü«¹ÃKCtßB_‹YwuB`÷¯ªxPÊ}y¸–ÃaéÞË_ës/ˆN‡ƒÏîrû€0›Ãaû 6× ³^'°ÃM>O :;è:‘v¥!êx\\ƒûuE(BÿbŠ—ü•|£¿À*™¡$9bŠ’äˆ9¦"8Šà(‚£ÎDº*·ZW<E(BŠP„"Ñ Qyë÷Ÿ#o ©üÐ[åþKÞ$ÿÒö?¡ˆOAãÎ$;Ìv®×3MÐse§wŽgˆíLš»G€¸ŸŠû\™ú—§ß%XðaÛ?Ÿ ò\¹pC—âãóz†(­Æ<ïÎ…ÄðŽ¦ úp´' §“–N¡Iç~ý扡gtŒ"ÊÌD]'t$iØ_€ð16 ÊVq74Dž|êp¬ÇÀ¯«rñ04ŸæÎßxvÐx¯#6׉‚ ³#ÔÎŽùO/ÛŠP„"¶ˆÊ«ñZ½ä¯åÄŸ2_ i¥,ø_aiÁ2 ¢ýŸÛd ÄSk@€i¤`@€i¤`@€i¤`@€i¤`@€i¤`@€iF4Ò\½Ñúï"E(¢b§¦J5¼^öß ­ÛÒÍuˆš*•œ¼§b(WãÑ£'vjªªPwˆ\J .-óÇŠz× ±)gr«¬åB-Ä«§J–ŽˆŽË‰·ÏÞíƒØ”3±Içheþ¨Ý῎Y©!Æžˆš*5ò€ØŽ‰‹;5ÕPÞ>±"¸ÐŠõÕrv\‹˜âŠ©E(b^Dc]ô/.‚ž/×RIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/DOMXPathExpression_8hpp-source.html0000644000175000017500000002325311363620004024265 0ustar borisboris Xerces-C++: DOMXPathExpression.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/SAX2XMLReader_8hpp.html0000644000175000017500000000435311363620005021545 0ustar borisboris Xerces-C++: SAX2XMLReader.hpp File Reference

    SAX2XMLReader.hpp File Reference

    Go to the source code of this file.

    Classes

    class  SAX2XMLReader

    Defines

    #define XERCESC_INCLUDE_GUARD_SAX2XMLREADER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_SAX2XMLREADER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DefaultHandler_8hpp-source.html0000644000175000017500000015320411363620004023503 0ustar borisboris Xerces-C++: DefaultHandler.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classMemBufInputSource-members.html0000644000175000017500000002146311363620006024421 0ustar borisboris Xerces-C++: Member List

    MemBufInputSource Member List

    This is the complete list of members for MemBufInputSource, including all inherited members.

    getEncoding() const InputSource [virtual]
    getIssueFatalErrorIfNotFound() const InputSource [virtual]
    getMemoryManager() const InputSource
    getPublicId() const InputSource [virtual]
    getSystemId() const InputSource [virtual]
    InputSource(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)InputSource [protected]
    InputSource(const XMLCh *const systemId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)InputSource [protected]
    InputSource(const XMLCh *const systemId, const XMLCh *const publicId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)InputSource [protected]
    InputSource(const char *const systemId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)InputSource [protected]
    InputSource(const char *const systemId, const char *const publicId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)InputSource [protected]
    makeStream() const MemBufInputSource [virtual]
    MemBufInputSource(const XMLByte *const srcDocBytes, const XMLSize_t byteCount, const XMLCh *const bufId, const bool adoptBuffer=false, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)MemBufInputSource
    MemBufInputSource(const XMLByte *const srcDocBytes, const XMLSize_t byteCount, const char *const bufId, const bool adoptBuffer=false, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)MemBufInputSource
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    resetMemBufInputSource(const XMLByte *const srcDocBytes, const XMLSize_t byteCount)MemBufInputSource
    setCopyBufToStream(const bool newState)MemBufInputSource
    setEncoding(const XMLCh *const encodingStr)InputSource [virtual]
    setIssueFatalErrorIfNotFound(const bool flag)InputSource [virtual]
    setPublicId(const XMLCh *const publicId)InputSource [virtual]
    setSystemId(const XMLCh *const systemId)InputSource [virtual]
    XMemory()XMemory [protected]
    ~InputSource()InputSource [virtual]
    ~MemBufInputSource()MemBufInputSource


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLFileMgr_8hpp-source.html0000644000175000017500000003113211363620005022523 0ustar borisboris Xerces-C++: XMLFileMgr.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMXPathResult-members.html0000644000175000017500000002145611363620006023632 0ustar borisboris Xerces-C++: Member List

    DOMXPathResult Member List

    This is the complete list of members for DOMXPathResult, including all inherited members.

    ANY_TYPE enum valueDOMXPathResult
    ANY_UNORDERED_NODE_TYPE enum valueDOMXPathResult
    BOOLEAN_TYPE enum valueDOMXPathResult
    DOMXPathResult()DOMXPathResult [protected]
    FIRST_ORDERED_NODE_TYPE enum valueDOMXPathResult
    FIRST_RESULT_TYPE enum valueDOMXPathResult
    getBooleanValue() const =0DOMXPathResult [pure virtual]
    getIntegerValue() const =0DOMXPathResult [pure virtual]
    getInvalidIteratorState() const =0DOMXPathResult [pure virtual]
    getNodeValue() const =0DOMXPathResult [pure virtual]
    getNumberValue() const =0DOMXPathResult [pure virtual]
    getResultType() const =0DOMXPathResult [pure virtual]
    getSnapshotLength() const =0DOMXPathResult [pure virtual]
    getStringValue() const =0DOMXPathResult [pure virtual]
    getTypeInfo() const =0DOMXPathResult [pure virtual]
    isNode() const =0DOMXPathResult [pure virtual]
    iterateNext()=0DOMXPathResult [pure virtual]
    ITERATOR_RESULT_TYPE enum valueDOMXPathResult
    NUMBER_TYPE enum valueDOMXPathResult
    ORDERED_NODE_ITERATOR_TYPE enum valueDOMXPathResult
    ORDERED_NODE_SNAPSHOT_TYPE enum valueDOMXPathResult
    release()=0DOMXPathResult [pure virtual]
    ResultType enum nameDOMXPathResult
    SNAPSHOT_RESULT_TYPE enum valueDOMXPathResult
    snapshotItem(XMLSize_t index)=0DOMXPathResult [pure virtual]
    STRING_TYPE enum valueDOMXPathResult
    UNORDERED_NODE_ITERATOR_TYPE enum valueDOMXPathResult
    UNORDERED_NODE_SNAPSHOT_TYPE enum valueDOMXPathResult
    ~DOMXPathResult()DOMXPathResult [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLValid-members.html0000644000175000017500000005601711363620006022470 0ustar borisboris Xerces-C++: Member List

    XMLValid Member List

    This is the complete list of members for XMLValid, including all inherited members.

    AttNotDefined enum valueXMLValid
    AttNotDefinedForElement enum valueXMLValid
    AttrDupToken enum valueXMLValid
    AttributeNotQualified enum valueXMLValid
    AttributeNotUnQualified enum valueXMLValid
    AttrValNotName enum valueXMLValid
    BadEntityRefAttr enum valueXMLValid
    BadIDAttrDefType enum valueXMLValid
    BadXsiType enum valueXMLValid
    Codes enum nameXMLValid
    ColonNotValidWithNS enum valueXMLValid
    DatatypeError enum valueXMLValid
    DatatypeValidationFailure enum valueXMLValid
    DisplayErrorMessage enum valueXMLValid
    DoesNotMatchEnumList enum valueXMLValid
    DOMErrorType(const XMLValid::Codes toCheck)XMLValid [static]
    E_HighBounds enum valueXMLValid
    E_LowBounds enum valueXMLValid
    ElemChildrenHasInvalidWS enum valueXMLValid
    ElementAlreadyExists enum valueXMLValid
    ElementNotDefined enum valueXMLValid
    ElementNotQualified enum valueXMLValid
    ElementNotUnQualified enum valueXMLValid
    ElementNotValidForContent enum valueXMLValid
    ElemNoSubforBlock enum valueXMLValid
    ElemOneNotationAttr enum valueXMLValid
    EmptyElemHasContent enum valueXMLValid
    EmptyElemNotationAttr enum valueXMLValid
    EmptyNotValidForContent enum valueXMLValid
    errorType(const XMLValid::Codes toCheck)XMLValid [static]
    F_HighBounds enum valueXMLValid
    F_LowBounds enum valueXMLValid
    FeatureUnsupported enum valueXMLValid
    FixedDifferentFromActual enum valueXMLValid
    GenericError enum valueXMLValid
    GrammarNotFound enum valueXMLValid
    GroupContentRestricted enum valueXMLValid
    IC_AbsentKeyValue enum valueXMLValid
    IC_DuplicateKey enum valueXMLValid
    IC_DuplicateUnique enum valueXMLValid
    IC_FieldMultipleMatch enum valueXMLValid
    IC_KeyMatchesNillable enum valueXMLValid
    IC_KeyNotEnoughValues enum valueXMLValid
    IC_KeyNotFound enum valueXMLValid
    IC_KeyRefOutOfScope enum valueXMLValid
    IC_UnknownField enum valueXMLValid
    IDNotDeclared enum valueXMLValid
    IllegalXMLSpace enum valueXMLValid
    InvalidEmptyAttValue enum valueXMLValid
    isError(const XMLValid::Codes toCheck)XMLValid [static]
    isFatal(const XMLValid::Codes toCheck)XMLValid [static]
    isWarning(const XMLValid::Codes toCheck)XMLValid [static]
    MultipleIdAttrs enum valueXMLValid
    NilAttrNotEmpty enum valueXMLValid
    NillNotAllowed enum valueXMLValid
    NoAbstractInXsiType enum valueXMLValid
    NoAttNormForStandalone enum valueXMLValid
    NoCharDataInCM enum valueXMLValid
    NoContentForRef enum valueXMLValid
    NoDatatypeValidatorForAttribute enum valueXMLValid
    NoDatatypeValidatorForSimpleType enum valueXMLValid
    NoDefAttForStandalone enum valueXMLValid
    NoDirectUseAbstractElement enum valueXMLValid
    NoError enum valueXMLValid
    NoMultipleValues enum valueXMLValid
    NonDerivedXsiType enum valueXMLValid
    NonWSContent enum valueXMLValid
    NotationNotDeclared enum valueXMLValid
    NotEnoughElemsForCM enum valueXMLValid
    NotSameAsFixedValue enum valueXMLValid
    NoUseAbstractType enum valueXMLValid
    NoWSForStandalone enum valueXMLValid
    PartialMarkupInPE enum valueXMLValid
    ProhibitedAttributePresent enum valueXMLValid
    RepElemInMixed enum valueXMLValid
    RequiredAttrNotProvided enum valueXMLValid
    ReusedIDValue enum valueXMLValid
    RootElemNotLikeDocType enum valueXMLValid
    SimpleTypeHasChild enum valueXMLValid
    TypeNoSubforBlock enum valueXMLValid
    UndeclaredElemInDocType enum valueXMLValid
    UniqueParticleAttributionFail enum valueXMLValid
    UnknownBaseDatatype enum valueXMLValid
    UnknownEntityRefAttr enum valueXMLValid
    UnknownNotRefAttr enum valueXMLValid
    VC_EntityNotFound enum valueXMLValid
    VC_IllegalRefInStandalone enum valueXMLValid
    W_HighBounds enum valueXMLValid
    W_LowBounds enum valueXMLValid
    WrongTargetNamespace enum valueXMLValid


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/Parser_8hpp.html0000644000175000017500000000452611363620005020562 0ustar borisboris Xerces-C++: Parser.hpp File Reference

    Parser.hpp File Reference

    Go to the source code of this file.

    Classes

    class  Parser
     Basic interface for SAX (Simple API for XML) parsers. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_PARSER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_PARSER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMLSParserFilter_8hpp-source.html0000644000175000017500000002323711363620004024024 0ustar borisboris Xerces-C++: DOMLSParserFilter.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classParser.png0000644000175000017500000000052211363620006020462 0ustar borisboris‰PNG  IHDRLPA­ŽøPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfèIDATH‰í“Qà †õeÏâ èn°]hÉ’ÞÿCDÛEt Xerces-C++: XSIDCDefinition.hpp File Reference

    XSIDCDefinition.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XSIDCDefinition

    Defines

    #define XERCESC_INCLUDE_GUARD_XSIDCDEFINITION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XSIDCDEFINITION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classPSVIAttributeList-members.html0000644000175000017500000001242411363620006024343 0ustar borisboris Xerces-C++: Member List

    PSVIAttributeList Member List

    This is the complete list of members for PSVIAttributeList, including all inherited members.

    getAttributeNameAtIndex(const XMLSize_t index)PSVIAttributeList
    getAttributeNamespaceAtIndex(const XMLSize_t index)PSVIAttributeList
    getAttributePSVIAtIndex(const XMLSize_t index)PSVIAttributeList
    getAttributePSVIByName(const XMLCh *attrName, const XMLCh *attrNamespace)PSVIAttributeList
    getLength() const PSVIAttributeList
    getPSVIAttributeToFill(const XMLCh *attrName, const XMLCh *attrNS)PSVIAttributeList
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    PSVIAttributeList(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)PSVIAttributeList
    reset()PSVIAttributeList
    XMemory()XMemory [protected]
    ~PSVIAttributeList()PSVIAttributeList


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLMutexMgr.html0000644000175000017500000002061511363620006021544 0ustar borisboris Xerces-C++: XMLMutexMgr Class Reference

    XMLMutexMgr Class Reference

    Inheritance diagram for XMLMutexMgr:

    XMemory

    List of all members.

    Public Member Functions

     XMLMutexMgr ()
    virtual ~XMLMutexMgr ()
    virtual XMLMutexHandle create (MemoryManager *const manager)=0
    virtual void destroy (XMLMutexHandle mtx, MemoryManager *const manager)=0
    virtual void lock (XMLMutexHandle mtx)=0
    virtual void unlock (XMLMutexHandle mtx)=0


    Constructor & Destructor Documentation

    XMLMutexMgr::XMLMutexMgr (  ) 

    virtual XMLMutexMgr::~XMLMutexMgr (  )  [virtual]


    Member Function Documentation

    virtual XMLMutexHandle XMLMutexMgr::create ( MemoryManager *const   manager  )  [pure virtual]

    virtual void XMLMutexMgr::destroy ( XMLMutexHandle  mtx,
    MemoryManager *const   manager 
    ) [pure virtual]

    virtual void XMLMutexMgr::lock ( XMLMutexHandle  mtx  )  [pure virtual]

    virtual void XMLMutexMgr::unlock ( XMLMutexHandle  mtx  )  [pure virtual]


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/ErrorHandler_8hpp.html0000644000175000017500000000461211363620005021711 0ustar borisboris Xerces-C++: ErrorHandler.hpp File Reference

    ErrorHandler.hpp File Reference

    Go to the source code of this file.

    Classes

    class  ErrorHandler
     Basic interface for SAX error handlers. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_ERRORHANDLER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_ERRORHANDLER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLUni-members.html0000644000175000017500000015720711363620006022167 0ustar borisboris Xerces-C++: Member List

    XMLUni Member List

    This is the complete list of members for XMLUni, including all inherited members.

    fgAmpXMLUni [static]
    fgAnyStringXMLUni [static]
    fgAposXMLUni [static]
    fgArrayIndexOutOfBoundsException_NameXMLUni [static]
    fgAttListStringXMLUni [static]
    fgBooleanValueSpaceXMLUni [static]
    fgBooleanValueSpaceArraySizeXMLUni [static]
    fgByteMaxIncXMLUni [static]
    fgByteMinIncXMLUni [static]
    fgCDataEndXMLUni [static]
    fgCDataStartXMLUni [static]
    fgCDATAStringXMLUni [static]
    fgCommentStringXMLUni [static]
    fgDefaultStringXMLUni [static]
    fgDefErrMsgXMLUni [static]
    fgDGXMLScannerXMLUni [static]
    fgDocTypeStringXMLUni [static]
    fgDOMCanonicalFormXMLUni [static]
    fgDOMCDATASectionsXMLUni [static]
    fgDOMCharsetOverridesXMLEncodingXMLUni [static]
    fgDOMCheckCharacterNormalizationXMLUni [static]
    fgDOMCommentsXMLUni [static]
    fgDOMDatatypeNormalizationXMLUni [static]
    fgDOMDisallowDoctypeXMLUni [static]
    fgDOMDTDTypeXMLUni [static]
    fgDOMElementContentWhitespaceXMLUni [static]
    fgDOMEntitiesXMLUni [static]
    fgDOMErrorHandlerXMLUni [static]
    fgDOMIgnoreUnknownCharacterDenormalizationXMLUni [static]
    fgDOMInfosetXMLUni [static]
    fgDOMNamespaceDeclarationsXMLUni [static]
    fgDOMNamespacesXMLUni [static]
    fgDOMNormalizeCharactersXMLUni [static]
    fgDOMResourceResolverXMLUni [static]
    fgDOMSchemaLocationXMLUni [static]
    fgDOMSchemaTypeXMLUni [static]
    fgDOMSplitCDATASectionsXMLUni [static]
    fgDOMSupportedMediatypesOnlyXMLUni [static]
    fgDOMValidateXMLUni [static]
    fgDOMValidateIfSchemaXMLUni [static]
    fgDOMWellFormedXMLUni [static]
    fgDOMWRTBOMXMLUni [static]
    fgDOMWRTCanonicalFormXMLUni [static]
    fgDOMWRTDiscardDefaultContentXMLUni [static]
    fgDOMWRTEntitiesXMLUni [static]
    fgDOMWRTFormatPrettyPrintXMLUni [static]
    fgDOMWRTNormalizeCharactersXMLUni [static]
    fgDOMWRTSplitCdataSectionsXMLUni [static]
    fgDOMWRTValidationXMLUni [static]
    fgDOMWRTWhitespaceInElementContentXMLUni [static]
    fgDOMWRTXercesPrettyPrintXMLUni [static]
    fgDOMXMLDeclarationXMLUni [static]
    fgDOMXMLSchemaTypeXMLUni [static]
    fgDTDEntityStringXMLUni [static]
    fgEBCDICEncodingStringXMLUni [static]
    fgElemStringXMLUni [static]
    fgEmptyStackException_NameXMLUni [static]
    fgEmptyStringXMLUni [static]
    fgEncodingStringXMLUni [static]
    fgEntitiesStringXMLUni [static]
    fgEntitStringXMLUni [static]
    fgEntityStringXMLUni [static]
    fgEnumerationStringXMLUni [static]
    fgEStringXMLUni [static]
    fgExceptDomainXMLUni [static]
    fgFixedStringXMLUni [static]
    fgGTXMLUni [static]
    fgIBM037EncodingStringXMLUni [static]
    fgIBM037EncodingString2XMLUni [static]
    fgIBM1047EncodingStringXMLUni [static]
    fgIBM1047EncodingString2XMLUni [static]
    fgIBM1140EncodingStringXMLUni [static]
    fgIBM1140EncodingString2XMLUni [static]
    fgIBM1140EncodingString3XMLUni [static]
    fgIBM1140EncodingString4XMLUni [static]
    fgIDRefsStringXMLUni [static]
    fgIDRefStringXMLUni [static]
    fgIDStringXMLUni [static]
    fgIESStringXMLUni [static]
    fgIgnoreStringXMLUni [static]
    fgIGXMLScannerXMLUni [static]
    fgIllegalArgumentException_NameXMLUni [static]
    fgImpliedStringXMLUni [static]
    fgIncludeStringXMLUni [static]
    fgInfosetURINameXMLUni [static]
    fgIntMaxIncXMLUni [static]
    fgIntMinIncXMLUni [static]
    fgInvalidCastException_NameXMLUni [static]
    fgInvalidDatatypeFacetException_NameXMLUni [static]
    fgInvalidDatatypeValueException_NameXMLUni [static]
    fgIOException_NameXMLUni [static]
    fgISO88591EncodingStringXMLUni [static]
    fgISO88591EncodingString10XMLUni [static]
    fgISO88591EncodingString11XMLUni [static]
    fgISO88591EncodingString12XMLUni [static]
    fgISO88591EncodingString2XMLUni [static]
    fgISO88591EncodingString3XMLUni [static]
    fgISO88591EncodingString4XMLUni [static]
    fgISO88591EncodingString5XMLUni [static]
    fgISO88591EncodingString6XMLUni [static]
    fgISO88591EncodingString7XMLUni [static]
    fgISO88591EncodingString8XMLUni [static]
    fgISO88591EncodingString9XMLUni [static]
    fgLangPatternXMLUni [static]
    fgLocalHostStringXMLUni [static]
    fgLongMaxIncXMLUni [static]
    fgLongMinIncXMLUni [static]
    fgLTXMLUni [static]
    fgMalformedURLException_NameXMLUni [static]
    fgNaNStringXMLUni [static]
    fgNDATAStringXMLUni [static]
    fgNegINFStringXMLUni [static]
    fgNegOneXMLUni [static]
    fgNegZeroStringXMLUni [static]
    fgNetAccessorException_NameXMLUni [static]
    fgNmTokensStringXMLUni [static]
    fgNmTokenStringXMLUni [static]
    fgNoStringXMLUni [static]
    fgNoSuchElementException_NameXMLUni [static]
    fgNotationStringXMLUni [static]
    fgNullPointerException_NameXMLUni [static]
    fgNullStringXMLUni [static]
    fgNumberFormatException_NameXMLUni [static]
    fgParseException_NameXMLUni [static]
    fgPCDATAStringXMLUni [static]
    fgPIStringXMLUni [static]
    fgPosINFStringXMLUni [static]
    fgPosZeroStringXMLUni [static]
    fgPubIDStringXMLUni [static]
    fgQuotXMLUni [static]
    fgRefStringXMLUni [static]
    fgRequiredStringXMLUni [static]
    fgRuntimeException_NameXMLUni [static]
    fgSAX2CoreNameSpacePrefixesXMLUni [static]
    fgSAX2CoreNameSpacesXMLUni [static]
    fgSAX2CoreValidationXMLUni [static]
    fgSchemaDateTimeException_NameXMLUni [static]
    fgSGXMLScannerXMLUni [static]
    fgShortMaxIncXMLUni [static]
    fgShortMinIncXMLUni [static]
    fgStandaloneStringXMLUni [static]
    fgSysIDStringXMLUni [static]
    fgTranscodingException_NameXMLUni [static]
    fgUByteMaxIncXMLUni [static]
    fgUCS4BEncodingStringXMLUni [static]
    fgUCS4BEncodingString2XMLUni [static]
    fgUCS4EncodingStringXMLUni [static]
    fgUCS4EncodingString2XMLUni [static]
    fgUCS4EncodingString3XMLUni [static]
    fgUCS4EncodingString4XMLUni [static]
    fgUCS4EncodingString5XMLUni [static]
    fgUCS4LEncodingStringXMLUni [static]
    fgUCS4LEncodingString2XMLUni [static]
    fgUIntMaxIncXMLUni [static]
    fgULongMaxIncXMLUni [static]
    fgUnexpectedEOFException_NameXMLUni [static]
    fgUnknownURINameXMLUni [static]
    fgUnsupportedEncodingException_NameXMLUni [static]
    fgUSASCIIEncodingStringXMLUni [static]
    fgUSASCIIEncodingString2XMLUni [static]
    fgUSASCIIEncodingString3XMLUni [static]
    fgUSASCIIEncodingString4XMLUni [static]
    fgUShortMaxIncXMLUni [static]
    fgUTF16BEncodingStringXMLUni [static]
    fgUTF16BEncodingString2XMLUni [static]
    fgUTF16EncodingStringXMLUni [static]
    fgUTF16EncodingString2XMLUni [static]
    fgUTF16EncodingString3XMLUni [static]
    fgUTF16EncodingString4XMLUni [static]
    fgUTF16EncodingString5XMLUni [static]
    fgUTF16EncodingString6XMLUni [static]
    fgUTF16EncodingString7XMLUni [static]
    fgUTF16LEncodingStringXMLUni [static]
    fgUTF16LEncodingString2XMLUni [static]
    fgUTF8EncodingStringXMLUni [static]
    fgUTF8EncodingString2XMLUni [static]
    fgUTFDataFormatException_NameXMLUni [static]
    fgValidityDomainXMLUni [static]
    fgValueOneXMLUni [static]
    fgValueZeroXMLUni [static]
    fgVersion1_0XMLUni [static]
    fgVersion1_1XMLUni [static]
    fgVersionStringXMLUni [static]
    fgWFXMLScannerXMLUni [static]
    fgWin1252EncodingStringXMLUni [static]
    fgXercesCacheGrammarFromParseXMLUni [static]
    fgXercesCalculateSrcOfsXMLUni [static]
    fgXercescDefaultLocaleXMLUni [static]
    fgXercescInterfaceDOMDocumentImplXMLUni [static]
    fgXercescInterfaceDOMDocumentTypeImplXMLUni [static]
    fgXercescInterfaceDOMMemoryManagerXMLUni [static]
    fgXercescInterfacePSVITypeInfoXMLUni [static]
    fgXercesContinueAfterFatalErrorXMLUni [static]
    fgXercesDisableDefaultEntityResolutionXMLUni [static]
    fgXercesDOMHasPSVIInfoXMLUni [static]
    fgXercesDoXIncludeXMLUni [static]
    fgXercesDynamicXMLUni [static]
    fgXercesEntityResolverXMLUni [static]
    fgXercesGenerateSyntheticAnnotationsXMLUni [static]
    fgXercesHandleMultipleImportsXMLUni [static]
    fgXercesIdentityConstraintCheckingXMLUni [static]
    fgXercesIgnoreAnnotationsXMLUni [static]
    fgXercesIgnoreCachedDTDXMLUni [static]
    fgXercesLoadExternalDTDXMLUni [static]
    fgXercesLoadSchemaXMLUni [static]
    fgXercesLowWaterMarkXMLUni [static]
    fgXercesParserUseDocumentFromImplementationXMLUni [static]
    fgXercesScannerNameXMLUni [static]
    fgXercesSchemaXMLUni [static]
    fgXercesSchemaExternalNoNameSpaceSchemaLocationXMLUni [static]
    fgXercesSchemaExternalSchemaLocationXMLUni [static]
    fgXercesSchemaFullCheckingXMLUni [static]
    fgXercesSecurityManagerXMLUni [static]
    fgXercesSkipDTDValidationXMLUni [static]
    fgXercesStandardUriConformantXMLUni [static]
    fgXercesUseCachedGrammarInParseXMLUni [static]
    fgXercesUserAdoptsDOMDocumentXMLUni [static]
    fgXercesValidateAnnotationsXMLUni [static]
    fgXercesValidationErrorAsFatalXMLUni [static]
    fgXMLChEncodingStringXMLUni [static]
    fgXMLDeclStringXMLUni [static]
    fgXMLDeclStringCRXMLUni [static]
    fgXMLDeclStringCRUXMLUni [static]
    fgXMLDeclStringHTabXMLUni [static]
    fgXMLDeclStringHTabUXMLUni [static]
    fgXMLDeclStringLFXMLUni [static]
    fgXMLDeclStringLFUXMLUni [static]
    fgXMLDeclStringSpaceXMLUni [static]
    fgXMLDeclStringSpaceUXMLUni [static]
    fgXMLDOMMsgDomainXMLUni [static]
    fgXMLErrDomainXMLUni [static]
    fgXMLNSColonStringXMLUni [static]
    fgXMLNSStringXMLUni [static]
    fgXMLNSURINameXMLUni [static]
    fgXMLPlatformUtilsException_NameXMLUni [static]
    fgXMLStringXMLUni [static]
    fgXMLStringCRXMLUni [static]
    fgXMLStringCRUXMLUni [static]
    fgXMLStringHTabXMLUni [static]
    fgXMLStringHTabUXMLUni [static]
    fgXMLStringLFXMLUni [static]
    fgXMLStringLFUXMLUni [static]
    fgXMLStringSpaceXMLUni [static]
    fgXMLStringSpaceUXMLUni [static]
    fgXMLURINameXMLUni [static]
    fgXMLXIncludeException_NameXMLUni [static]
    fgXPathException_NameXMLUni [static]
    fgXSAXMLScannerXMLUni [static]
    fgXSerializationException_NameXMLUni [static]
    fgYesStringXMLUni [static]
    fgZeroLenStringXMLUni [static]
    fgZeroStringXMLUni [static]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSConstants.html0000644000175000017500000004430011363620006021637 0ustar borisboris Xerces-C++: XSConstants Class Reference

    XSConstants Class Reference

    List of all members.

    Public Types

    enum  COMPONENT_TYPE {
      ATTRIBUTE_DECLARATION = 1, ELEMENT_DECLARATION = 2, TYPE_DEFINITION = 3, ATTRIBUTE_USE = 4,
      ATTRIBUTE_GROUP_DEFINITION = 5, MODEL_GROUP_DEFINITION = 6, MODEL_GROUP = 7, PARTICLE = 8,
      WILDCARD = 9, IDENTITY_CONSTRAINT = 10, NOTATION_DECLARATION = 11, ANNOTATION = 12,
      FACET = 13, MULTIVALUE_FACET = 14
    }
    enum  DERIVATION_TYPE {
      DERIVATION_NONE = 0, DERIVATION_EXTENSION = 1, DERIVATION_RESTRICTION = 2, DERIVATION_SUBSTITUTION = 4,
      DERIVATION_UNION = 8, DERIVATION_LIST = 16
    }
    enum  SCOPE { SCOPE_ABSENT = 0, SCOPE_GLOBAL = 1, SCOPE_LOCAL = 2 }
    enum  VALUE_CONSTRAINT { VALUE_CONSTRAINT_NONE = 0, VALUE_CONSTRAINT_DEFAULT = 1, VALUE_CONSTRAINT_FIXED = 2 }


    Member Enumeration Documentation

    Enumerator:
    ATTRIBUTE_DECLARATION  The object describes an attribute declaration.
    ELEMENT_DECLARATION  The object describes an element declaration.
    TYPE_DEFINITION  The object describes a complex type or simple type definition.
    ATTRIBUTE_USE  The object describes an attribute use definition.
    ATTRIBUTE_GROUP_DEFINITION  The object describes an attribute group definition.
    MODEL_GROUP_DEFINITION  The object describes a model group definition.
    MODEL_GROUP  A model group.
    PARTICLE  The object describes a particle.
    WILDCARD  The object describes a wildcard.
    IDENTITY_CONSTRAINT  The object describes an identity constraint definition.
    NOTATION_DECLARATION  The object describes a notation declaration.
    ANNOTATION  The object describes an annotation.
    FACET  The object describes a constraining facet.
    MULTIVALUE_FACET  The object describes enumeration/pattern facets.

    Enumerator:
    DERIVATION_NONE  No constraint is available.
    DERIVATION_EXTENSION  XSTypeDefinition final set or XSElementDeclaration disallowed substitution group.
    DERIVATION_RESTRICTION  XSTypeDefinition final set or XSElementDeclaration disallowed substitution group.
    DERIVATION_SUBSTITUTION  XSTypeDefinition final set.
    DERIVATION_UNION  XSTypeDefinition final set.
    DERIVATION_LIST  XSTypeDefinition final set.

    Enumerator:
    SCOPE_ABSENT  The scope of a declaration within named model groups or attribute groups is absent.

    The scope of such declaration is determined when it is used in the construction of complex type definitions.

    SCOPE_GLOBAL  A scope of global identifies top-level declarations.
    SCOPE_LOCAL  Locally scoped declarations are available for use only within the complex type.

    Enumerator:
    VALUE_CONSTRAINT_NONE  Indicates that the component does not have any value constraint.
    VALUE_CONSTRAINT_DEFAULT  Indicates that there is a default value constraint.
    VALUE_CONSTRAINT_FIXED  Indicates that there is a fixed value constraint for this attribute.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLDateTime.html0000644000175000017500000010734311363620006021474 0ustar borisboris Xerces-C++: XMLDateTime Class Reference

    XMLDateTime Class Reference

    Inheritance diagram for XMLDateTime:

    XMLNumber XMemory

    List of all members.

    Public Types

    enum  valueIndex {
      CentYear = 0, Month, Day, Hour,
      Minute, Second, MiliSecond, utc,
      TOTAL_SIZE
    }
    enum  utcType { UTC_UNKNOWN = 0, UTC_STD, UTC_POS, UTC_NEG }

    Public Member Functions

     XMLDateTime (MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     XMLDateTime (const XMLCh *const, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     ~XMLDateTime ()
    void setBuffer (const XMLCh *const)
     XMLDateTime (const XMLDateTime &)
    XMLDateTimeoperator= (const XMLDateTime &)
    virtual XMLChgetRawData () const
     Return string representation of the decimal value.
    virtual const XMLChgetFormattedString () const
     Return the original and converted value of the original data.
    virtual int getSign () const
     Returns the sign of this number.
    XMLChgetDateTimeCanonicalRepresentation (MemoryManager *const memMgr) const
    XMLChgetTimeCanonicalRepresentation (MemoryManager *const memMgr) const
    XMLChgetDateCanonicalRepresentation (MemoryManager *const memMgr) const
    void parseDateTime ()
    void parseDate ()
    void parseTime ()
    void parseDay ()
    void parseMonth ()
    void parseYear ()
    void parseMonthDay ()
    void parseYearMonth ()
    void parseDuration ()

    Static Public Member Functions

    static int compare (const XMLDateTime *const , const XMLDateTime *const)
    static int compare (const XMLDateTime *const , const XMLDateTime *const , bool)
    static int compareOrder (const XMLDateTime *const , const XMLDateTime *const)

    Friends

    class XSValue


    Member Enumeration Documentation

    Enumerator:
    CentYear 
    Month 
    Day 
    Hour 
    Minute 
    Second 
    MiliSecond 
    utc 
    TOTAL_SIZE 

    Enumerator:
    UTC_UNKNOWN 
    UTC_STD 
    UTC_POS 
    UTC_NEG 


    Constructor & Destructor Documentation

    XMLDateTime::XMLDateTime ( MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager  ) 

    XMLDateTime::XMLDateTime ( const XMLCh const,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    XMLDateTime::~XMLDateTime (  ) 

    XMLDateTime::XMLDateTime ( const XMLDateTime  ) 


    Member Function Documentation

    void XMLDateTime::setBuffer ( const XMLCh * const  aString  ) 

    XMLDateTime& XMLDateTime::operator= ( const XMLDateTime  ) 

    virtual XMLCh* XMLDateTime::getRawData (  )  const [virtual]

    Return string representation of the decimal value.

    A decimal point will be included as necessary. Similar to toString above, but the internal buffer is returned directly, user is not required to delete the returned buffer

    Implements XMLNumber.

    virtual const XMLCh* XMLDateTime::getFormattedString (  )  const [virtual]

    Return the original and converted value of the original data.

    (applicable to double/float)

    The internal buffer is returned directly, user is not required to delete the returned buffer

    Implements XMLNumber.

    virtual int XMLDateTime::getSign (  )  const [virtual]

    Returns the sign of this number.

    -1 negative 0 zero 1 positive

    Implements XMLNumber.

    XMLCh* XMLDateTime::getDateTimeCanonicalRepresentation ( MemoryManager *const   memMgr  )  const

    XMLCh* XMLDateTime::getTimeCanonicalRepresentation ( MemoryManager *const   memMgr  )  const

    XMLCh* XMLDateTime::getDateCanonicalRepresentation ( MemoryManager *const   memMgr  )  const

    void XMLDateTime::parseDateTime (  ) 

    void XMLDateTime::parseDate (  ) 

    void XMLDateTime::parseTime (  ) 

    void XMLDateTime::parseDay (  ) 

    void XMLDateTime::parseMonth (  ) 

    void XMLDateTime::parseYear (  ) 

    void XMLDateTime::parseMonthDay (  ) 

    void XMLDateTime::parseYearMonth (  ) 

    void XMLDateTime::parseDuration (  ) 

    static int XMLDateTime::compare ( const XMLDateTime const,
    const XMLDateTime const 
    ) [static]

    static int XMLDateTime::compare ( const XMLDateTime const,
    const XMLDateTime const,
    bool   
    ) [static]

    static int XMLDateTime::compareOrder ( const XMLDateTime const,
    const XMLDateTime const 
    ) [static]


    Friends And Related Function Documentation

    friend class XSValue [friend]


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/globals_0x64.html0000644000175000017500000000652111363620006020571 0ustar borisboris Xerces-C++: Class Members
    Here is a list of all file members with links to the files they belong to:

    - d -


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classParser-members.html0000644000175000017500000000713611363620006022302 0ustar borisboris Xerces-C++: Member List

    Parser Member List

    This is the complete list of members for Parser, including all inherited members.

    parse(const InputSource &source)=0Parser [pure virtual]
    parse(const XMLCh *const systemId)=0Parser [pure virtual]
    parse(const char *const systemId)=0Parser [pure virtual]
    Parser()Parser
    setDocumentHandler(DocumentHandler *const handler)=0Parser [pure virtual]
    setDTDHandler(DTDHandler *const handler)=0Parser [pure virtual]
    setEntityResolver(EntityResolver *const resolver)=0Parser [pure virtual]
    setErrorHandler(ErrorHandler *const handler)=0Parser [pure virtual]
    ~Parser()Parser [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_0x76.html0000644000175000017500000002225411363620005021161 0ustar borisboris Xerces-C++: Class Members
    Here is a list of all class members with links to the classes they belong to:

    - v -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/EntityResolver_8hpp-source.html0000644000175000017500000001643011363620004023616 0ustar borisboris Xerces-C++: EntityResolver.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DefaultHandler_8hpp.html0000644000175000017500000000463611363620005022212 0ustar borisboris Xerces-C++: DefaultHandler.hpp File Reference

    DefaultHandler.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DefaultHandler
     Default base class for SAX2 handlers. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DEFAULTHANDLER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DEFAULTHANDLER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLDTDDescription_8hpp.html0000644000175000017500000000442311363620005022522 0ustar borisboris Xerces-C++: XMLDTDDescription.hpp File Reference

    XMLDTDDescription.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLDTDDescription

    Defines

    #define XERCESC_INCLUDE_GUARD_XMLDTDDESCRIPTION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XMLDTDDESCRIPTION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMLSSerializerFilter_8hpp.html0000644000175000017500000000532311363620005023400 0ustar borisboris Xerces-C++: DOMLSSerializerFilter.hpp File Reference

    DOMLSSerializerFilter.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMLSSerializerFilter
     DOMLSSerializerFilter.hpp: interface for the DOMLSSerializerFilter class. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMLSSERIALIZERFILTER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMLSSERIALIZERFILTER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/tabs.css0000644000175000017500000000334211363620004017136 0ustar borisboris/* 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 : x-small; 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 : x-small; 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; } xerces-c-3.1.1/doc/html/apiDocs-3/XercesDOMParser_8hpp.html0000644000175000017500000000470411363620005022272 0ustar borisboris Xerces-C++: XercesDOMParser.hpp File Reference

    XercesDOMParser.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XercesDOMParser
     This class implements the Document Object Model (DOM) interface. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_XERCESDOMPARSER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XERCESDOMPARSER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/globals_defs.html0000644000175000017500000000476211363620007021017 0ustar borisboris Xerces-C++: Class Members
     

    - c -


    Generated on Wed Apr 21 17:55:51 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLAttDef_8hpp-source.html0000644000175000017500000012174011363620004022351 0ustar borisboris Xerces-C++: XMLAttDef.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMNodeList_8hpp.html0000644000175000017500000000511111363620005021376 0ustar borisboris Xerces-C++: DOMNodeList.hpp File Reference

    DOMNodeList.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMNodeList
     The DOMNodeList interface provides the abstraction of an ordered collection of nodes. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMNODELIST_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMNODELIST_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLIBM1047Transcoder-members.html0000644000175000017500000000466711363620006024405 0ustar borisboris Xerces-C++: Member List

    XMLIBM1047Transcoder Member List

    This is the complete list of members for XMLIBM1047Transcoder, including all inherited members.

    xlatThisOne(const XMLByte toXlat)XMLIBM1047Transcoder [static]
    XMLIBM1047Transcoder(const XMLCh *const encodingName, const XMLSize_t blockSize, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLIBM1047Transcoder
    ~XMLIBM1047Transcoder()XMLIBM1047Transcoder [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/LocalFileFormatTarget_8hpp-source.html0000644000175000017500000002740511363620004024776 0ustar borisboris Xerces-C++: LocalFileFormatTarget.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLErrs.html0000644000175000017500000041402511363620006020711 0ustar borisboris Xerces-C++: XMLErrs Class Reference

    XMLErrs Class Reference

    List of all members.

    Public Types

    enum  Codes {
      NoError = 0, W_LowBounds = 1, NotationAlreadyExists = 2, AttListAlreadyExists = 3,
      ContradictoryEncoding = 4, UndeclaredElemInCM = 5, UndeclaredElemInAttList = 6, XMLException_Warning = 7,
      XIncludeResourceErrorWarning = 8, XIncludeCannotOpenFile = 9, XIncludeIncludeFailedResourceError = 10, W_HighBounds = 11,
      E_LowBounds = 12, FeatureUnsupported = 13, TopLevelNoNameComplexType = 14, TopLevelNoNameAttribute = 15,
      NoNameRefAttribute = 16, NoNameRefElement = 17, NoNameRefGroup = 18, NoNameRefAttGroup = 19,
      AnonComplexTypeWithName = 20, AnonSimpleTypeWithName = 21, InvalidElementContent = 22, SimpleTypeContentError = 23,
      ExpectedSimpleTypeInList = 24, ListUnionRestrictionError = 25, SimpleTypeDerivationByListError = 26, ExpectedSimpleTypeInRestriction = 27,
      DuplicateFacet = 28, ExpectedSimpleTypeInUnion = 29, EmptySimpleTypeContent = 30, InvalidSimpleContent = 31,
      UnspecifiedBase = 32, InvalidComplexContent = 33, SchemaElementContentError = 34, ContentError = 35,
      UnknownSimpleType = 36, UnknownComplexType = 37, UnresolvedPrefix = 38, RefElementNotFound = 39,
      TypeNotFound = 40, TopLevelAttributeNotFound = 41, InvalidChildInComplexType = 42, BaseTypeNotFound = 43,
      DatatypeValidatorCreationError = 44, InvalidChildFollowingSimpleContent = 45, InvalidChildFollowingConplexContent = 46, AttributeDefaultFixedValue = 47,
      NotOptionalDefaultAttValue = 48, DuplicateAttribute = 49, AttributeWithTypeAndSimpleType = 50, AttributeSimpleTypeNotFound = 51,
      ElementWithFixedAndDefault = 52, InvalidDeclarationName = 53, ElementWithTypeAndAnonType = 54, NotSimpleOrMixedElement = 55,
      DisallowedSimpleTypeExtension = 56, InvalidSimpleContentBase = 57, InvalidComplexTypeBase = 58, InvalidChildInSimpleContent = 59,
      InvalidChildInComplexContent = 60, AnnotationError = 61, DisallowedBaseDerivation = 62, InvalidBlockValue = 63,
      InvalidFinalValue = 64, InvalidSubstitutionGroupElement = 65, SubstitutionGroupTypeMismatch = 66, DuplicateElementDeclaration = 67,
      InvalidAttValue = 68, AttributeRefContentError = 69, DuplicateRefAttribute = 70, ForbiddenDerivationByRestriction = 71,
      ForbiddenDerivationByExtension = 72, BaseNotComplexType = 73, ImportNamespaceDifference = 74, DeclarationNoSchemaLocation = 75,
      IncludeNamespaceDifference = 76, OnlyAnnotationExpected = 77, InvalidAttributeContent = 78, AttributeRequiredGlobal = 79,
      AttributeRequiredLocal = 80, AttributeDisallowedGlobal = 81, AttributeDisallowedLocal = 82, InvalidMin2MaxOccurs = 83,
      AnyAttributeContentError = 84, NoNameGlobalElement = 85, NoCircularDefinition = 86, DuplicateGlobalType = 87,
      DuplicateGlobalDeclaration = 88, WS_CollapseExpected = 89, Import_1_1 = 90, Import_1_2 = 91,
      ElemIDValueConstraint = 92, NoNotationType = 93, EmptiableMixedContent = 94, EmptyComplexRestrictionDerivation = 95,
      MixedOrElementOnly = 96, InvalidContentRestriction = 97, ForbiddenDerivation = 98, AtomicItemType = 99,
      GroupContentError = 100, AttGroupContentError = 101, MinMaxOnGroupChild = 102, DeclarationNotFound = 103,
      AllContentLimited = 104, BadMinMaxAllCT = 105, BadMinMaxAllElem = 106, DuplicateAttInDerivation = 107,
      NotExpressibleWildCardIntersection = 108, BadAttDerivation_1 = 109, BadAttDerivation_2 = 110, BadAttDerivation_3 = 111,
      BadAttDerivation_4 = 112, BadAttDerivation_5 = 113, BadAttDerivation_6 = 114, BadAttDerivation_7 = 115,
      BadAttDerivation_8 = 116, BadAttDerivation_9 = 117, AllContentError = 118, RedefineNamespaceDifference = 119,
      Redefine_InvalidSimpleType = 120, Redefine_InvalidSimpleTypeBase = 121, Redefine_InvalidComplexType = 122, Redefine_InvalidComplexTypeBase = 123,
      Redefine_InvalidGroupMinMax = 124, Redefine_DeclarationNotFound = 125, Redefine_GroupRefCount = 126, Redefine_AttGroupRefCount = 127,
      Redefine_InvalidChild = 128, Notation_DeclNotFound = 129, IC_DuplicateDecl = 130, IC_BadContent = 131,
      IC_KeyRefReferNotFound = 132, IC_KeyRefCardinality = 133, IC_XPathExprMissing = 134, AttUseCorrect = 135,
      AttDeclPropCorrect3 = 136, AttDeclPropCorrect5 = 137, AttGrpPropCorrect3 = 138, InvalidTargetNSValue = 139,
      XMLException_Error = 140, InvalidRedefine = 141, InvalidNSReference = 142, NotAllContent = 143,
      InvalidAnnotationContent = 144, InvalidFacetName = 145, InvalidXMLSchemaRoot = 146, CircularSubsGroup = 147,
      ELTSchemaNS = 148, InvalidAttTNS = 149, NSDeclInvalid = 150, DOMLevel1Node = 151,
      DuplicateAnyAttribute = 152, AnyAttributeBeforeAttribute = 153, E_HighBounds = 154, F_LowBounds = 155,
      EntityExpansionLimitExceeded = 156, ExpectedCommentOrCDATA = 157, ExpectedAttrName = 158, ExpectedNotationName = 159,
      NoRepInMixed = 160, ExpectedDefAttrDecl = 161, ExpectedEqSign = 162, ExpectedElementName = 163,
      CommentsMustStartWith = 164, InvalidDocumentStructure = 165, ExpectedDeclString = 166, BadXMLVersion = 167,
      UnsupportedXMLVersion = 168, UnterminatedXMLDecl = 169, BadXMLEncoding = 170, BadStandalone = 171,
      UnterminatedComment = 172, PINameExpected = 173, UnterminatedPI = 174, InvalidCharacter = 175,
      UnterminatedStartTag = 176, ExpectedAttrValue = 177, UnterminatedEndTag = 178, ExpectedAttributeType = 179,
      ExpectedEndOfTagX = 180, ExpectedMarkup = 181, NotValidAfterContent = 182, ExpectedComment = 183,
      ExpectedCommentOrPI = 184, ExpectedWhitespace = 185, NoRootElemInDOCTYPE = 186, ExpectedQuotedString = 187,
      ExpectedPublicId = 188, InvalidPublicIdChar = 189, UnterminatedDOCTYPE = 190, InvalidCharacterInIntSubset = 191,
      UnexpectedWhitespace = 192, InvalidCharacterInAttrValue = 193, ExpectedMarkupDecl = 194, TextDeclNotLegalHere = 195,
      ConditionalSectInIntSubset = 196, ExpectedPEName = 197, UnterminatedEntityDecl = 198, InvalidCharacterRef = 199,
      UnterminatedCharRef = 200, ExpectedEntityRefName = 201, EntityNotFound = 202, NoUnparsedEntityRefs = 203,
      UnterminatedEntityRef = 204, RecursiveEntity = 205, PartialMarkupInEntity = 206, UnterminatedElementDecl = 207,
      ExpectedContentSpecExpr = 208, ExpectedAsterisk = 209, UnterminatedContentModel = 210, ExpectedSystemOrPublicId = 211,
      UnterminatedNotationDecl = 212, ExpectedSeqChoiceLeaf = 213, ExpectedChoiceOrCloseParen = 214, ExpectedSeqOrCloseParen = 215,
      ExpectedEnumValue = 216, ExpectedEnumSepOrParen = 217, UnterminatedEntityLiteral = 218, MoreEndThanStartTags = 219,
      ExpectedOpenParen = 220, AttrAlreadyUsedInSTag = 221, BracketInAttrValue = 222, Expected2ndSurrogateChar = 223,
      ExpectedEndOfConditional = 224, ExpectedIncOrIgn = 225, ExpectedINCLUDEBracket = 226, UnexpectedEOE = 227,
      PEPropogated = 228, ExtraCloseSquare = 229, PERefInMarkupInIntSubset = 230, EntityPropogated = 231,
      ExpectedNumericalCharRef = 232, ExpectedOpenSquareBracket = 233, BadSequenceInCharData = 234, IllegalSequenceInComment = 235,
      UnterminatedCDATASection = 236, ExpectedNDATA = 237, NDATANotValidForPE = 238, HexRadixMustBeLowerCase = 239,
      DeclStringRep = 240, DeclStringsInWrongOrder = 241, NoExtRefsInAttValue = 242, XMLDeclMustBeLowerCase = 243,
      ExpectedEntityValue = 244, BadDigitForRadix = 245, EndedWithTagsOnStack = 246, NestedCDATA = 247,
      UnknownPrefix = 248, PartialTagMarkupError = 249, EmptyMainEntity = 250, CDATAOutsideOfContent = 251,
      Unexpected2ndSurrogateChar = 252, NoPIStartsWithXML = 253, XMLDeclMustBeFirst = 254, XMLVersionRequired = 255,
      StandaloneNotLegal = 256, EncodingRequired = 257, ColonNotLegalWithNS = 258, XMLException_Fatal = 259,
      BadSchemaLocation = 260, SchemaScanFatalError = 261, IllegalRefInStandalone = 262, PEBetweenDecl = 263,
      NoEmptyStrNamespace = 264, NoUseOfxmlnsAsPrefix = 265, NoUseOfxmlnsURI = 266, PrefixXMLNotMatchXMLURI = 267,
      XMLURINotMatchXMLPrefix = 268, NoXMLNSAsElementPrefix = 269, CT_SimpleTypeChildRequired = 270, InvalidRootElemInDOCTYPE = 271,
      InvalidElementName = 272, InvalidAttrName = 273, InvalidEntityRefName = 274, DuplicateDocTypeDecl = 275,
      XIncludeOrphanFallback = 276, XIncludeNoHref = 277, XIncludeXPointerNotSupported = 278, XIncludeInvalidParseVal = 279,
      XIncludeMultipleFallbackElems = 280, XIncludeIncludeFailedNoFallback = 281, XIncludeCircularInclusionLoop = 282, XIncludeCircularInclusionDocIncludesSelf = 283,
      XIncludeDisallowedChild = 284, XIncludeConflictingNotation = 285, XIncludeConflictingEntity = 286, F_HighBounds = 287
    }

    Static Public Member Functions

    static bool isFatal (const XMLErrs::Codes toCheck)
    static bool isWarning (const XMLErrs::Codes toCheck)
    static bool isError (const XMLErrs::Codes toCheck)
    static XMLErrorReporter::ErrTypes errorType (const XMLErrs::Codes toCheck)
    static DOMError::ErrorSeverity DOMErrorType (const XMLErrs::Codes toCheck)


    Member Enumeration Documentation

    Enumerator:
    NoError 
    W_LowBounds 
    NotationAlreadyExists 
    AttListAlreadyExists 
    ContradictoryEncoding 
    UndeclaredElemInCM 
    UndeclaredElemInAttList 
    XMLException_Warning 
    XIncludeResourceErrorWarning 
    XIncludeCannotOpenFile 
    XIncludeIncludeFailedResourceError 
    W_HighBounds 
    E_LowBounds 
    FeatureUnsupported 
    TopLevelNoNameComplexType 
    TopLevelNoNameAttribute 
    NoNameRefAttribute 
    NoNameRefElement 
    NoNameRefGroup 
    NoNameRefAttGroup 
    AnonComplexTypeWithName 
    AnonSimpleTypeWithName 
    InvalidElementContent 
    SimpleTypeContentError 
    ExpectedSimpleTypeInList 
    ListUnionRestrictionError 
    SimpleTypeDerivationByListError 
    ExpectedSimpleTypeInRestriction 
    DuplicateFacet 
    ExpectedSimpleTypeInUnion 
    EmptySimpleTypeContent 
    InvalidSimpleContent 
    UnspecifiedBase 
    InvalidComplexContent 
    SchemaElementContentError 
    ContentError 
    UnknownSimpleType 
    UnknownComplexType 
    UnresolvedPrefix 
    RefElementNotFound 
    TypeNotFound 
    TopLevelAttributeNotFound 
    InvalidChildInComplexType 
    BaseTypeNotFound 
    DatatypeValidatorCreationError 
    InvalidChildFollowingSimpleContent 
    InvalidChildFollowingConplexContent 
    AttributeDefaultFixedValue 
    NotOptionalDefaultAttValue 
    DuplicateAttribute 
    AttributeWithTypeAndSimpleType 
    AttributeSimpleTypeNotFound 
    ElementWithFixedAndDefault 
    InvalidDeclarationName 
    ElementWithTypeAndAnonType 
    NotSimpleOrMixedElement 
    DisallowedSimpleTypeExtension 
    InvalidSimpleContentBase 
    InvalidComplexTypeBase 
    InvalidChildInSimpleContent 
    InvalidChildInComplexContent 
    AnnotationError 
    DisallowedBaseDerivation 
    InvalidBlockValue 
    InvalidFinalValue 
    InvalidSubstitutionGroupElement 
    SubstitutionGroupTypeMismatch 
    DuplicateElementDeclaration 
    InvalidAttValue 
    AttributeRefContentError 
    DuplicateRefAttribute 
    ForbiddenDerivationByRestriction 
    ForbiddenDerivationByExtension 
    BaseNotComplexType 
    ImportNamespaceDifference 
    DeclarationNoSchemaLocation 
    IncludeNamespaceDifference 
    OnlyAnnotationExpected 
    InvalidAttributeContent 
    AttributeRequiredGlobal 
    AttributeRequiredLocal 
    AttributeDisallowedGlobal 
    AttributeDisallowedLocal 
    InvalidMin2MaxOccurs 
    AnyAttributeContentError 
    NoNameGlobalElement 
    NoCircularDefinition 
    DuplicateGlobalType 
    DuplicateGlobalDeclaration 
    WS_CollapseExpected 
    Import_1_1 
    Import_1_2 
    ElemIDValueConstraint 
    NoNotationType 
    EmptiableMixedContent 
    EmptyComplexRestrictionDerivation 
    MixedOrElementOnly 
    InvalidContentRestriction 
    ForbiddenDerivation 
    AtomicItemType 
    GroupContentError 
    AttGroupContentError 
    MinMaxOnGroupChild 
    DeclarationNotFound 
    AllContentLimited 
    BadMinMaxAllCT 
    BadMinMaxAllElem 
    DuplicateAttInDerivation 
    NotExpressibleWildCardIntersection 
    BadAttDerivation_1 
    BadAttDerivation_2 
    BadAttDerivation_3 
    BadAttDerivation_4 
    BadAttDerivation_5 
    BadAttDerivation_6 
    BadAttDerivation_7 
    BadAttDerivation_8 
    BadAttDerivation_9 
    AllContentError 
    RedefineNamespaceDifference 
    Redefine_InvalidSimpleType 
    Redefine_InvalidSimpleTypeBase 
    Redefine_InvalidComplexType 
    Redefine_InvalidComplexTypeBase 
    Redefine_InvalidGroupMinMax 
    Redefine_DeclarationNotFound 
    Redefine_GroupRefCount 
    Redefine_AttGroupRefCount 
    Redefine_InvalidChild 
    Notation_DeclNotFound 
    IC_DuplicateDecl 
    IC_BadContent 
    IC_KeyRefReferNotFound 
    IC_KeyRefCardinality 
    IC_XPathExprMissing 
    AttUseCorrect 
    AttDeclPropCorrect3 
    AttDeclPropCorrect5 
    AttGrpPropCorrect3 
    InvalidTargetNSValue 
    XMLException_Error 
    InvalidRedefine 
    InvalidNSReference 
    NotAllContent 
    InvalidAnnotationContent 
    InvalidFacetName 
    InvalidXMLSchemaRoot 
    CircularSubsGroup 
    ELTSchemaNS 
    InvalidAttTNS 
    NSDeclInvalid 
    DOMLevel1Node 
    DuplicateAnyAttribute 
    AnyAttributeBeforeAttribute 
    E_HighBounds 
    F_LowBounds 
    EntityExpansionLimitExceeded 
    ExpectedCommentOrCDATA 
    ExpectedAttrName 
    ExpectedNotationName 
    NoRepInMixed 
    ExpectedDefAttrDecl 
    ExpectedEqSign 
    ExpectedElementName 
    CommentsMustStartWith 
    InvalidDocumentStructure 
    ExpectedDeclString 
    BadXMLVersion 
    UnsupportedXMLVersion 
    UnterminatedXMLDecl 
    BadXMLEncoding 
    BadStandalone 
    UnterminatedComment 
    PINameExpected 
    UnterminatedPI 
    InvalidCharacter 
    UnterminatedStartTag 
    ExpectedAttrValue 
    UnterminatedEndTag 
    ExpectedAttributeType 
    ExpectedEndOfTagX 
    ExpectedMarkup 
    NotValidAfterContent 
    ExpectedComment 
    ExpectedCommentOrPI 
    ExpectedWhitespace 
    NoRootElemInDOCTYPE 
    ExpectedQuotedString 
    ExpectedPublicId 
    InvalidPublicIdChar 
    UnterminatedDOCTYPE 
    InvalidCharacterInIntSubset 
    UnexpectedWhitespace 
    InvalidCharacterInAttrValue 
    ExpectedMarkupDecl 
    TextDeclNotLegalHere 
    ConditionalSectInIntSubset 
    ExpectedPEName 
    UnterminatedEntityDecl 
    InvalidCharacterRef 
    UnterminatedCharRef 
    ExpectedEntityRefName 
    EntityNotFound 
    NoUnparsedEntityRefs 
    UnterminatedEntityRef 
    RecursiveEntity 
    PartialMarkupInEntity 
    UnterminatedElementDecl 
    ExpectedContentSpecExpr 
    ExpectedAsterisk 
    UnterminatedContentModel 
    ExpectedSystemOrPublicId 
    UnterminatedNotationDecl 
    ExpectedSeqChoiceLeaf 
    ExpectedChoiceOrCloseParen 
    ExpectedSeqOrCloseParen 
    ExpectedEnumValue 
    ExpectedEnumSepOrParen 
    UnterminatedEntityLiteral 
    MoreEndThanStartTags 
    ExpectedOpenParen 
    AttrAlreadyUsedInSTag 
    BracketInAttrValue 
    Expected2ndSurrogateChar 
    ExpectedEndOfConditional 
    ExpectedIncOrIgn 
    ExpectedINCLUDEBracket 
    UnexpectedEOE 
    PEPropogated 
    ExtraCloseSquare 
    PERefInMarkupInIntSubset 
    EntityPropogated 
    ExpectedNumericalCharRef 
    ExpectedOpenSquareBracket 
    BadSequenceInCharData 
    IllegalSequenceInComment 
    UnterminatedCDATASection 
    ExpectedNDATA 
    NDATANotValidForPE 
    HexRadixMustBeLowerCase 
    DeclStringRep 
    DeclStringsInWrongOrder 
    NoExtRefsInAttValue 
    XMLDeclMustBeLowerCase 
    ExpectedEntityValue 
    BadDigitForRadix 
    EndedWithTagsOnStack 
    NestedCDATA 
    UnknownPrefix 
    PartialTagMarkupError 
    EmptyMainEntity 
    CDATAOutsideOfContent 
    Unexpected2ndSurrogateChar 
    NoPIStartsWithXML 
    XMLDeclMustBeFirst 
    XMLVersionRequired 
    StandaloneNotLegal 
    EncodingRequired 
    ColonNotLegalWithNS 
    XMLException_Fatal 
    BadSchemaLocation 
    SchemaScanFatalError 
    IllegalRefInStandalone 
    PEBetweenDecl 
    NoEmptyStrNamespace 
    NoUseOfxmlnsAsPrefix 
    NoUseOfxmlnsURI 
    PrefixXMLNotMatchXMLURI 
    XMLURINotMatchXMLPrefix 
    NoXMLNSAsElementPrefix 
    CT_SimpleTypeChildRequired 
    InvalidRootElemInDOCTYPE 
    InvalidElementName 
    InvalidAttrName 
    InvalidEntityRefName 
    DuplicateDocTypeDecl 
    XIncludeOrphanFallback 
    XIncludeNoHref 
    XIncludeXPointerNotSupported 
    XIncludeInvalidParseVal 
    XIncludeMultipleFallbackElems 
    XIncludeIncludeFailedNoFallback 
    XIncludeCircularInclusionLoop 
    XIncludeCircularInclusionDocIncludesSelf 
    XIncludeDisallowedChild 
    XIncludeConflictingNotation 
    XIncludeConflictingEntity 
    F_HighBounds 


    Member Function Documentation

    static bool XMLErrs::isFatal ( const XMLErrs::Codes  toCheck  )  [static]

    References F_HighBounds, and F_LowBounds.

    static bool XMLErrs::isWarning ( const XMLErrs::Codes  toCheck  )  [static]

    References W_HighBounds, and W_LowBounds.

    static bool XMLErrs::isError ( const XMLErrs::Codes  toCheck  )  [static]

    References E_HighBounds, and E_LowBounds.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMLocator_8hpp.html0000644000175000017500000000475611363620005021276 0ustar borisboris Xerces-C++: DOMLocator.hpp File Reference

    DOMLocator.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMLocator
     DOMLocator is an interface that describes a location. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMLOCATOR_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMLOCATOR_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMNamedNodeMap_8hpp-source.html0000644000175000017500000003174111363620004023452 0ustar borisboris Xerces-C++: DOMNamedNodeMap.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/MemBufFormatTarget_8hpp.html0000644000175000017500000000443511363620005023020 0ustar borisboris Xerces-C++: MemBufFormatTarget.hpp File Reference

    MemBufFormatTarget.hpp File Reference

    Go to the source code of this file.

    Classes

    class  MemBufFormatTarget

    Defines

    #define XERCESC_INCLUDE_GUARD_MEMBUFFORMATTARGET_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_MEMBUFFORMATTARGET_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLMutexMgr_8hpp-source.html0000644000175000017500000001627011363620005022754 0ustar borisboris Xerces-C++: XMLMutexMgr.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/AttributeList_8hpp-source.html0000644000175000017500000002303511363620004023416 0ustar borisboris Xerces-C++: AttributeList.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLAttDef_8hpp.html0000644000175000017500000000457511363620005021062 0ustar borisboris Xerces-C++: XMLAttDef.hpp File Reference

    XMLAttDef.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLAttDef
     Represents the core information of an attribute definition. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_XMLATTDEF_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XMLATTDEF_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/globals_func.html0000644000175000017500000000335511363620007021026 0ustar borisboris Xerces-C++: Class Members
     


    Generated on Wed Apr 21 17:55:51 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDTDHandler-members.html0000644000175000017500000000550311363620006022753 0ustar borisboris Xerces-C++: Member List

    DTDHandler Member List

    This is the complete list of members for DTDHandler, including all inherited members.

    DTDHandler()DTDHandler
    notationDecl(const XMLCh *const name, const XMLCh *const publicId, const XMLCh *const systemId)=0DTDHandler [pure virtual]
    resetDocType()=0DTDHandler [pure virtual]
    unparsedEntityDecl(const XMLCh *const name, const XMLCh *const publicId, const XMLCh *const systemId, const XMLCh *const notationName)=0DTDHandler [pure virtual]
    ~DTDHandler()DTDHandler [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions.html0000644000175000017500000003571211363620005020400 0ustar borisboris Xerces-C++: Class Members
    Here is a list of all class members with links to the classes they belong to:

    - a -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classQName.png0000644000175000017500000000052211363620006020227 0ustar borisboris‰PNG  IHDRCP°¦ÕuPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfèIDATH‰íÓQƒ `ú²ç¶7('X¶ íÉûamQL­[|0™HÒ_~ÅôŒÚ==rÐNGÄ:ëˆ×SXR·‹þdMÕ*"–?èŠ/J&)U¸&¶‰™°÷éiRÄ–ˆÂÍ^ ±ÁL,¹!ΚUd¼?—;¯>ÞîÂ!‘’|B²ã#éÛícæ2¼ ·a8€t¢‹\ä"ߊ&ŒbOI@wÉú*1¸El ÌQÒŠV׈ÎÔù5±>Õâó–C…ØÍ÷)XÎ)‹'Ò?µ"]Šå£ß ”wö'ÚhJâä or}i"ÐIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classDocumentHandler.html0000644000175000017500000007613111363620005022472 0ustar borisboris Xerces-C++: DocumentHandler Class Reference

    DocumentHandler Class Reference

    Receive notification of general document events. More...

    Inheritance diagram for DocumentHandler:

    HandlerBase

    List of all members.

    Public Member Functions

    Constructors and Destructor
     DocumentHandler ()
     Default constructor.
    virtual ~DocumentHandler ()
     Destructor.
    The virtual document handler interface
    virtual void characters (const XMLCh *const chars, const XMLSize_t length)=0
     Receive notification of character data.
    virtual void endDocument ()=0
     Receive notification of the end of a document.
    virtual void endElement (const XMLCh *const name)=0
     Receive notification of the end of an element.
    virtual void ignorableWhitespace (const XMLCh *const chars, const XMLSize_t length)=0
     Receive notification of ignorable whitespace in element content.
    virtual void processingInstruction (const XMLCh *const target, const XMLCh *const data)=0
     Receive notification of a processing instruction.
    virtual void resetDocument ()=0
     Reset the Document object on its reuse.
    virtual void setDocumentLocator (const Locator *const locator)=0
     Receive an object for locating the origin of SAX document events.
    virtual void startDocument ()=0
     Receive notification of the beginning of a document.
    virtual void startElement (const XMLCh *const name, AttributeList &attrs)=0
     Receive notification of the beginning of an element.


    Detailed Description

    Receive notification of general document events.

    This is the main interface that most SAX applications implement: if the application needs to be informed of basic parsing events, it implements this interface and registers an instance with the SAX parser using the setDocumentHandler method. The parser uses the instance to report basic document-related events like the start and end of elements and character data.

    The order of events in this interface is very important, and mirrors the order of information in the document itself. For example, all of an element's content (character data, processing instructions, and/or subelements) will appear, in order, between the startElement event and the corresponding endElement event.

    Application writers who do not want to implement the entire interface while can derive a class from HandlerBase, which implements the default functionality; parser writers can instantiate HandlerBase to obtain a default handler. The application can find the location of any document event using the Locator interface supplied by the Parser through the setDocumentLocator method.

    See also:
    Parser::setDocumentHandler

    Locator::Locator

    HandlerBase::HandlerBase


    Constructor & Destructor Documentation

    DocumentHandler::DocumentHandler (  ) 

    Default constructor.

    virtual DocumentHandler::~DocumentHandler (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual void DocumentHandler::characters ( const XMLCh *const   chars,
    const XMLSize_t  length 
    ) [pure virtual]

    Receive notification of character data.

    The Parser will call this method to report each chunk of character data. SAX parsers may return all contiguous character data in a single chunk, or they may split it into several chunks; however, all of the characters in any single event must come from the same external entity, so that the Locator provides useful information.

    The application must not attempt to read from the array outside of the specified range.

    Note that some parsers will report whitespace using the ignorableWhitespace() method rather than this one (validating parsers must do so).

    Parameters:
    chars The characters from the XML document.
    length The number of characters to read from the array.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    See also:
    ignorableWhitespace

    Locator::Locator

    Implemented in HandlerBase.

    virtual void DocumentHandler::endDocument (  )  [pure virtual]

    Receive notification of the end of a document.

    The SAX parser will invoke this method only once, and it will be the last method invoked during the parse. The parser shall not invoke this method until it has either abandoned parsing (because of an unrecoverable error) or reached the end of input.

    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.

    Implemented in HandlerBase.

    virtual void DocumentHandler::endElement ( const XMLCh *const   name  )  [pure virtual]

    Receive notification of the end of an element.

    The SAX parser will invoke this method at the end of every element in the XML document; there will be a corresponding startElement() event for every endElement() event (even when the element is empty).

    If the element name has a namespace prefix, the prefix will still be attached to the name.

    Parameters:
    name The element type name
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.

    Implemented in HandlerBase.

    virtual void DocumentHandler::ignorableWhitespace ( const XMLCh *const   chars,
    const XMLSize_t  length 
    ) [pure virtual]

    Receive notification of ignorable whitespace in element content.

    Validating Parsers must use this method to report each chunk of ignorable whitespace (see the W3C XML 1.0 recommendation, section 2.10): non-validating parsers may also use this method if they are capable of parsing and using content models.

    SAX parsers may return all contiguous whitespace in a single chunk, or they may split it into several chunks; however, all of the characters in any single event must come from the same external entity, so that the Locator provides useful information.

    The application must not attempt to read from the array outside of the specified range.

    Parameters:
    chars The characters from the XML document.
    length The number of characters to read from the array.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    See also:
    characters

    Implemented in HandlerBase.

    virtual void DocumentHandler::processingInstruction ( const XMLCh *const   target,
    const XMLCh *const   data 
    ) [pure virtual]

    Receive notification of a processing instruction.

    The Parser will invoke this method once for each processing instruction found: note that processing instructions may occur before or after the main document element.

    A SAX parser should never report an XML declaration (XML 1.0, section 2.8) or a text declaration (XML 1.0, section 4.3.1) using this method.

    Parameters:
    target The processing instruction target.
    data The processing instruction data, or null if none was supplied.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.

    Implemented in HandlerBase.

    virtual void DocumentHandler::resetDocument (  )  [pure virtual]

    Reset the Document object on its reuse.

    This method helps in reseting the document implementation defaults each time the document is begun.

    Implemented in HandlerBase.

    virtual void DocumentHandler::setDocumentLocator ( const Locator *const   locator  )  [pure virtual]

    Receive an object for locating the origin of SAX document events.

    SAX parsers are strongly encouraged (though not absolutely required) to supply a locator: if it does so, it must supply the locator to the application by invoking this method before invoking any of the other methods in the DocumentHandler interface.

    The locator allows the application to determine the end position of any document-related event, even if the parser is not reporting an error. Typically, the application will use this information for reporting its own errors (such as character content that does not match an application's business rules). The information returned by the locator is probably not sufficient for use with a search engine.

    Note that the locator will return correct information only during the invocation of the events in this interface. The application should not attempt to use it at any other time.

    Parameters:
    locator An object that can return the location of any SAX document event. The object is only 'on loan' to the client code and they are not to attempt to delete or modify it in any way!
    See also:
    Locator::Locator

    Implemented in HandlerBase.

    virtual void DocumentHandler::startDocument (  )  [pure virtual]

    Receive notification of the beginning of a document.

    The SAX parser will invoke this method only once, before any other methods in this interface or in DTDHandler (except for setDocumentLocator).

    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.

    Implemented in HandlerBase.

    virtual void DocumentHandler::startElement ( const XMLCh *const   name,
    AttributeList attrs 
    ) [pure virtual]

    Receive notification of the beginning of an element.

    The Parser will invoke this method at the beginning of every element in the XML document; there will be a corresponding endElement() event for every startElement() event (even when the element is empty). All of the element's content will be reported, in order, before the corresponding endElement() event.

    If the element name has a namespace prefix, the prefix will still be attached. Note that the attribute list provided will contain only attributes with explicit values (specified or defaulted): #IMPLIED attributes will be omitted.

    Parameters:
    name The element type name.
    attrs The attributes attached to the element, if any.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    See also:
    endElement

    AttributeList::AttributeList

    Implemented in HandlerBase.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMXPathEvaluator_8hpp-source.html0000644000175000017500000002627711363620004024101 0ustar borisboris Xerces-C++: DOMXPathEvaluator.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMDocumentFragment_8hpp.html0000644000175000017500000000540211363620005023122 0ustar borisboris Xerces-C++: DOMDocumentFragment.hpp File Reference

    DOMDocumentFragment.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMDocumentFragment
     DOMDocumentFragment is a "lightweight" or "minimal" DOMDocument object. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMDOCUMENTFRAGMENT_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMDOCUMENTFRAGMENT_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDefaultPanicHandler-members.html0000644000175000017500000001641211363620005024677 0ustar borisboris Xerces-C++: Member List

    DefaultPanicHandler Member List

    This is the complete list of members for DefaultPanicHandler, including all inherited members.

    DefaultPanicHandler()DefaultPanicHandler
    getPanicReasonString(const PanicHandler::PanicReasons reason)PanicHandler [static]
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    panic(const PanicHandler::PanicReasons reason)DefaultPanicHandler [virtual]
    Panic_AllStaticInitErr enum valuePanicHandler
    Panic_CantFindLib enum valuePanicHandler
    Panic_CantLoadMsgDomain enum valuePanicHandler
    Panic_MutexErr enum valuePanicHandler
    Panic_NoDefTranscoder enum valuePanicHandler
    Panic_NoTransService enum valuePanicHandler
    Panic_SynchronizationErr enum valuePanicHandler
    Panic_SystemInit enum valuePanicHandler
    Panic_UnknownMsgDomain enum valuePanicHandler
    PanicHandler()PanicHandler [protected]
    PanicReasons enum namePanicHandler
    PanicReasons_Count enum valuePanicHandler
    XMemory()XMemory [protected]
    ~DefaultPanicHandler()DefaultPanicHandler [virtual]
    ~PanicHandler()PanicHandler [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLChar1__0.html0000644000175000017500000010616111363620006021311 0ustar borisboris Xerces-C++: XMLChar1_0 Class Reference

    XMLChar1_0 Class Reference

    List of all members.

    Static Public Member Functions

    static bool isAllSpaces (const XMLCh *const toCheck, const XMLSize_t count)
    static bool containsWhiteSpace (const XMLCh *const toCheck, const XMLSize_t count)
    static bool isValidNmtoken (const XMLCh *const toCheck, const XMLSize_t count)
    static bool isValidName (const XMLCh *const toCheck, const XMLSize_t count)
    static bool isValidName (const XMLCh *const toCheck)
    static bool isValidNCName (const XMLCh *const toCheck, const XMLSize_t count)
    static bool isValidQName (const XMLCh *const toCheck, const XMLSize_t count)
    static bool isXMLLetter (const XMLCh toCheck, const XMLCh toCheck2=0)
    static bool isFirstNameChar (const XMLCh toCheck, const XMLCh toCheck2=0)
    static bool isNameChar (const XMLCh toCheck, const XMLCh toCheck2=0)
    static bool isPlainContentChar (const XMLCh toCheck, const XMLCh toCheck2=0)
    static bool isSpecialStartTagChar (const XMLCh toCheck, const XMLCh toCheck2=0)
    static bool isXMLChar (const XMLCh toCheck, const XMLCh toCheck2=0)
    static bool isWhitespace (const XMLCh toCheck)
    static bool isWhitespace (const XMLCh toCheck, const XMLCh toCheck2)
    static bool isControlChar (const XMLCh toCheck, const XMLCh toCheck2=0)
    static bool isPublicIdChar (const XMLCh toCheck, const XMLCh toCheck2=0)
    static bool isFirstNCNameChar (const XMLCh toCheck, const XMLCh toCheck2=0)
    static bool isNCNameChar (const XMLCh toCheck, const XMLCh toCheck2=0)
    static bool isNELRecognized ()
     Return true if NEL (0x85) and LSEP (0x2028) to be treated as white space char.
    static void enableNELWS ()
     Method to enable NEL (0x85) and LSEP (0x2028) to be treated as white space char.

    Friends

    class XMLReader


    Member Function Documentation

    static bool XMLChar1_0::isAllSpaces ( const XMLCh *const   toCheck,
    const XMLSize_t  count 
    ) [static]

    static bool XMLChar1_0::containsWhiteSpace ( const XMLCh *const   toCheck,
    const XMLSize_t  count 
    ) [static]

    static bool XMLChar1_0::isValidNmtoken ( const XMLCh *const   toCheck,
    const XMLSize_t  count 
    ) [static]

    static bool XMLChar1_0::isValidName ( const XMLCh *const   toCheck,
    const XMLSize_t  count 
    ) [static]

    static bool XMLChar1_0::isValidName ( const XMLCh *const   toCheck  )  [static]

    static bool XMLChar1_0::isValidNCName ( const XMLCh *const   toCheck,
    const XMLSize_t  count 
    ) [static]

    static bool XMLChar1_0::isValidQName ( const XMLCh *const   toCheck,
    const XMLSize_t  count 
    ) [static]

    bool XMLChar1_0::isXMLLetter ( const XMLCh  toCheck,
    const XMLCh  toCheck2 = 0 
    ) [static]

    bool XMLChar1_0::isFirstNameChar ( const XMLCh  toCheck,
    const XMLCh  toCheck2 = 0 
    ) [static]

    References gFirstNameCharMask.

    bool XMLChar1_0::isNameChar ( const XMLCh  toCheck,
    const XMLCh  toCheck2 = 0 
    ) [static]

    References gNameCharMask.

    bool XMLChar1_0::isPlainContentChar ( const XMLCh  toCheck,
    const XMLCh  toCheck2 = 0 
    ) [static]

    References gPlainContentCharMask.

    bool XMLChar1_0::isSpecialStartTagChar ( const XMLCh  toCheck,
    const XMLCh  toCheck2 = 0 
    ) [static]

    bool XMLChar1_0::isXMLChar ( const XMLCh  toCheck,
    const XMLCh  toCheck2 = 0 
    ) [static]

    References gXMLCharMask.

    bool XMLChar1_0::isWhitespace ( const XMLCh  toCheck  )  [static]

    References gWhitespaceCharMask.

    Referenced by XMLDateTime::setBuffer().

    bool XMLChar1_0::isWhitespace ( const XMLCh  toCheck,
    const XMLCh  toCheck2 
    ) [static]

    References gWhitespaceCharMask.

    bool XMLChar1_0::isControlChar ( const XMLCh  toCheck,
    const XMLCh  toCheck2 = 0 
    ) [static]

    References gControlCharMask.

    static bool XMLChar1_0::isPublicIdChar ( const XMLCh  toCheck,
    const XMLCh  toCheck2 = 0 
    ) [static]

    bool XMLChar1_0::isFirstNCNameChar ( const XMLCh  toCheck,
    const XMLCh  toCheck2 = 0 
    ) [static]

    References chColon, and gFirstNameCharMask.

    bool XMLChar1_0::isNCNameChar ( const XMLCh  toCheck,
    const XMLCh  toCheck2 = 0 
    ) [static]

    References gNCNameCharMask.

    bool XMLChar1_0::isNELRecognized (  )  [static]

    Return true if NEL (0x85) and LSEP (0x2028) to be treated as white space char.

    static void XMLChar1_0::enableNELWS (  )  [static]

    Method to enable NEL (0x85) and LSEP (0x2028) to be treated as white space char.


    Friends And Related Function Documentation

    friend class XMLReader [friend]


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLAttr.png0000644000175000017500000000052011363620006020517 0ustar borisboris‰PNG  IHDRCP°¦ÕuPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfæIDATH‰íÓ]ƒ `xñ¹í Ê –íB{òþGX[œR¶ð@Œ@V±ß*` /¯=Â39m8Â:Hft^…¤£¸&‚rIRU"3ký…ÈD2–䄜#SIt+!ß^UaM!V„ªµd¢“•h劫Tå\l_æ,Ú]÷t¹„“KÒ€¤á#Ù¶iwç2¿;iž;N;ºÉMnò;A¯A¯ì€$êÐ+ˆÕ´¬¢%‘ @ ‘ÑP-F¢uûO¹\8 vUä'yÈžh\ ØÎ‰±3²„݉ÀM•./àRÄÿH>·c~›¥ÉÁIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/PSVIAttributeList_8hpp.html0000644000175000017500000000531011363620005022617 0ustar borisboris Xerces-C++: PSVIAttributeList.hpp File Reference

    PSVIAttributeList.hpp File Reference

    Go to the source code of this file.

    Classes

    class  PSVIAttributeStorage
     A container for the PSVI contributions to attributes that occur on a particular element. More...
    class  PSVIAttributeList

    Defines

    #define XERCESC_INCLUDE_GUARD_PSVIATTRIBUTE_LIST_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_PSVIATTRIBUTE_LIST_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMLSInput.png0000644000175000017500000000071511363620005021127 0ustar borisboris‰PNG  IHDRˆP0ù #PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfcIDATX…í•QŽ„ †éË>ÓÞö;šdï„m " #:úà$tF~þ~Ô¢Ñàa¬90 ; ÀÍ6FY± ’-l«”†Â’Ì…ØÊ¶ ¢"ä) ¸d@,g…Û±±‚å¡•²"”˜}&'!öH<’2ˆödýºm?'á+}N´VQ­ÙŠ7Þo…¼‰iA.ùdôãy¾Ök ?Ó] Óô¼ ä>§3 2 2 r!äÑW×aþüéø6Ä鯥Î3¤ã¬ Ôôeç<ïCœçØ‹Þ9Ñ£"K$u8Ììâ‹=!݃d y¢S’2J…gL Ñ.¾¡…Î^]\.ÓŸwIh@g bòe ⋪¹I¶”ª!”›C²žOXQ\ÁeÏ Âí¦ütˆ($˜x è‚=?,4sýÌmÆ!ŸÄ€´ ýOF?þøS0ÐIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/XMLReaderFactory_8hpp-source.html0000644000175000017500000002071311363620005023733 0ustar borisboris Xerces-C++: XMLReaderFactory.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMLSException.png0000644000175000017500000000064511363620005021770 0ustar borisboris‰PNG  IHDRpP3bìNPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf;IDATX…í”QŽÄ †ëË>7À½ÁÎ…æ©÷?¢ik5³&ÓLRy@T>ÁߦËcЖ¿8d¿w)FÇ2a™â>‘#ƒF¨cIÀC–Š’IºIÔƒXêJ„âÉ£&(ES_¤ƒ8Öƒ¸D}Pï(µ­°óäQŒD©¢ƒˆÿÓ`‹]0«êÍÙ¼ºc nÞ‘Ó;îUeWµ»V½ê÷‚'vpø÷سgw÷àÏz5¸®Ï‹ÁëUà'8Á €8h Œ5îÑHå]캎 z·«$P s’ „³^BU±ŒpÉGY”ú€âÁ£ ”H­BéÔé™{Ô•Ô;Ê`΃G5B'+á }aoYÈ -ÐU…´_@]¬î¸7ï¨iz·ôŽ{Uƒ«ZÀ·ì÷ÍàÁîŽþ_¶ÛÓÊy¶IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/DOMImplementationRegistry_8hpp-source.html0000644000175000017500000001566311363620004025705 0ustar borisboris Xerces-C++: DOMImplementationRegistry.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXercesDOMParser.png0000644000175000017500000000306611363620006022202 0ustar borisboris‰PNG  IHDRäˆ]#ã^PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfÌIDATxœíœQ–£8 EÃÏ|cïÀÌj6¤¯ÚÿË–1NLGJ!½t§*^ž/Žpú¤õøï=¢ÌjÌêk¹@ÿb"³³ú¼D··ú¼D··ú¼D··ú¼D··:´ ñ_ñ'm®¿-ÎõŽÇüþac•ä³îö†ëç؇©ÚA¥l.¿r(‹|ãÔCó„õoJÙRku|æ¢Ë)œE¾ðA}hyˆ·u£Cä­I3¬×ÈÛltÈ/{L.FÏaLÏg†]ä ‡èÈÇ»õž¶­ò~aùê(MeŸp~}¥Åû§TÍ y ³xDs®/bÐÓkä9åÒÒrN‚½Ž/eÀ¬ïWRUˆ/¾óq4%Ê·xbûÄ c‡P»œÉmé‰Lõ˜S›-ÉùrN|¦uz…<øùÑÆãá„<å¢ÛkäÕ5ò¥öÁ:¬Ëåtx2â´TÈÖÍ’ÅåwÏÏã­Ç©Îk¹¯§Ú¾åÛ9½ªå‘jzñÞÆã„ˆãŒÃª‘¨f–‡|Q:B^FŠïB·åC~dz)•²!ÏØ+äéœt8µÙ6äaÉ…¥žÈÓRv†4†ÏqI·1ÿùþÀ£Y¾lÈ«)š—%ǵ¼‹¼òÛfDy›­ a õôÌùÆûò£!@^{y.Ž…Ž/Åm7$¿ßvXX6¼=äÕÑo K“­œjù8rZ€i9ÈW`ºú´}¢íÀø®ÂÚ–V,x Ï>x•Ê—w¯±½Àñº<׌RËÓÎíŠ%^@]–·Ù\t}éúÒô ¤èHÐ' O @Ÿ@:ÀÍÄ÷åySÖ…ÿÛÄ4&CÎ.CÎ.CÎ.CÎ.Bî«fJ¤[Zån'¡ÛŽÑŸQFÂ!òÔ[iÙÚù½j²fS<öZuG¤‹©éWAžÚ_÷74ägôEuÅo=¹Ú¾\©\ ~œ´çRúò3ª—V u¾m‘§ZžûUmÈ ùeä©}Yœ¶ˆÜ¹9µóËÍ~cÃXgȤ/ºf†…ú&W­ûçɽëohÈϨBÞv#õõŠ¥êGéi›Íò©žåŽZ ǵJl¾ì«u9!ؘV,†ü¼ìÓ'» 9» 9» 9» 9» 9» 9» 9»ìKŸ( O @.ì´g“!g×Íÿ»ü'Êó ¤èHÐ' O @Ÿ@:€>t}éúÒô ¤èHÐ' O @Ÿ@:€>t}éúÒô ¤èHÐ' O @Ÿ@:€>t}éúÒô ¤èH¸™Ü%’ÅŸÒ|…Ét…‰rvrvrvrvÍÛÏ'ú.Eâ]Ü4OÝ•‰!?#â<p›âf¼[YOóÔ}Oò3Ú!w+á ïWÆ.>3Ŧ yÞ…ö¥ƒMã*óvž{$9¯?æ ùºqFä´Kþ%kÈϨ ŸÒLOfμ÷ȱ–ç]¦ºò3ÚÍrç2Hçæ]a™§4éñb:aÑI¿$ò3ªkùôx”Yþxì !/oƒô l×9ÝJ-Ï+–9—šm+,?Ön]îfZ·8*´.Ÿ©°àe4¯XÈÄŸ‘}úd—!g—!g—!g—!g—!g—!g—!g׿Tñ?ˈXö`k IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classSAX2XMLFilter.png0000644000175000017500000000070111363620006021471 0ustar borisboris‰PNG  IHDRqPÜ ‡pPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfWIDATX…í”[rà EÑO¿‘v VÐI6”/ï Õ Ll'm™4ÍLÀÀè «kÓy°}¦SkïE"ÊâD²žåëˆm5_“¬³ºC 4Òv¼I–F–CR„°¤F¶Ž¨©5±ä¢—˜+É&\:´8\ ¹´k%¥NS70õÕ[Ù#§¥%¡ÈÉN£‘ˆézš7uÔH7šjÎò-qu®j­#FlÚVo¹yû€oh’¯FŽÿ5ïµËÝÕ?!?–ç“Ëry:ùÞNr’“œä$Hâ`Ë)êy;Ñf~ºqäèÄJðùŽè ;d ôØ[djd:"%§$e9oÔÖ‰-x/;t$Xn˜@j×JŠ Ì;oe7Œœ–6kp¾ÎÙ}t½C?u´%£’öunÕZ%—µ,ŸzØ»tÒ½ÝÕùË6É×$‡ÿš_ý­ÖÞ0MIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classXMLFormatter.html0000644000175000017500000013030711363620006021737 0ustar borisboris Xerces-C++: XMLFormatter Class Reference

    XMLFormatter Class Reference

    This class provides the basic formatting capabilities that are required to turn the Unicode based XML data from the parsers into a form that can be used on non-Unicode based systems, that is, into local or generic text encodings. More...

    Inheritance diagram for XMLFormatter:

    XMemory

    List of all members.

    Public Types

    Public Constants
    enum  EscapeFlags {
      NoEscapes, StdEscapes, AttrEscapes, CharEscapes,
      EscapeFlags_Count, DefaultEscape = 999
    }
     EscapeFlags - Different styles of escape flags to control various formatting. More...
    enum  UnRepFlags { UnRep_Fail, UnRep_CharRef, UnRep_Replace, DefaultUnRep = 999 }
     UnRepFlags. More...

    Public Member Functions

    Constructor and Destructor
     XMLFormatter (const XMLCh *const outEncoding, const XMLCh *const docVersion, XMLFormatTarget *const target, const EscapeFlags escapeFlags=NoEscapes, const UnRepFlags unrepFlags=UnRep_Fail, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     XMLFormatter (const char *const outEncoding, const char *const docVersion, XMLFormatTarget *const target, const EscapeFlags escapeFlags=NoEscapes, const UnRepFlags unrepFlags=UnRep_Fail, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     XMLFormatter (const XMLCh *const outEncoding, XMLFormatTarget *const target, const EscapeFlags escapeFlags=NoEscapes, const UnRepFlags unrepFlags=UnRep_Fail, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     XMLFormatter (const char *const outEncoding, XMLFormatTarget *const target, const EscapeFlags escapeFlags=NoEscapes, const UnRepFlags unrepFlags=UnRep_Fail, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     ~XMLFormatter ()
    Formatting methods
    void formatBuf (const XMLCh *const toFormat, const XMLSize_t count, const EscapeFlags escapeFlags=DefaultEscape, const UnRepFlags unrepFlags=DefaultUnRep)
    XMLFormatteroperator<< (const XMLCh *const toFormat)
    XMLFormatteroperator<< (const XMLCh toFormat)
    void writeBOM (const XMLByte *const toFormat, const XMLSize_t count)
    Getter methods
    const XMLChgetEncodingName () const
    const XMLTranscodergetTranscoder () const
    XMLTranscodergetTranscoder ()
    Setter methods
    void setEscapeFlags (const EscapeFlags newFlags)
    void setUnRepFlags (const UnRepFlags newFlags)
    XMLFormatteroperator<< (const EscapeFlags newFlags)
    XMLFormatteroperator<< (const UnRepFlags newFlags)
    Setter methods
    EscapeFlags getEscapeFlags () const
    UnRepFlags getUnRepFlags () const


    Detailed Description

    This class provides the basic formatting capabilities that are required to turn the Unicode based XML data from the parsers into a form that can be used on non-Unicode based systems, that is, into local or generic text encodings.

    A number of flags are provided to control whether various optional formatting operations are performed.


    Member Enumeration Documentation

    EscapeFlags - Different styles of escape flags to control various formatting.

    NoEscapes: No character needs to be escaped. Just write them out as is.

    StdEscapes: The following characters need to be escaped:
    character should be escaped and written as
    & &amp;
    > &gt;
    " &quot;
    < &lt;
    ' &apos;

    AttrEscapes: The following characters need to be escaped:
    character should be escaped and written as
    & &amp;
    > &gt;
    " &quot;

    CharEscapes: The following characters need to be escaped:
    character should be escaped and written as
    & &amp;
    > &gt;

    EscapeFlags_Count: Special value, do not use directly.

    DefaultEscape: Special value, do not use directly.

    Enumerator:
    NoEscapes 
    StdEscapes 
    AttrEscapes 
    CharEscapes 
    EscapeFlags_Count 
    DefaultEscape 

    UnRepFlags.

    The unrepresentable flags that indicate how to react when a character cannot be represented in the target encoding.

    UnRep_Fail: Fail the operation.

    UnRep_CharRef: Display the unrepresented character as reference.

    UnRep_Replace: Replace the unrepresented character with the replacement character.

    DefaultUnRep: Special value, do not use directly.

    Enumerator:
    UnRep_Fail 
    UnRep_CharRef 
    UnRep_Replace 
    DefaultUnRep 


    Constructor & Destructor Documentation

    XMLFormatter::XMLFormatter ( const XMLCh *const   outEncoding,
    const XMLCh *const   docVersion,
    XMLFormatTarget *const   target,
    const EscapeFlags  escapeFlags = NoEscapes,
    const UnRepFlags  unrepFlags = UnRep_Fail,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    Parameters:
    outEncoding the encoding for the formatted content.
    docVersion the document version.
    target the formatTarget where the formatted content is written to.
    escapeFlags the escape style for certain character.
    unrepFlags the reaction to unrepresentable character.
    manager Pointer to the memory manager to be used to allocate objects.

    XMLFormatter::XMLFormatter ( const char *const   outEncoding,
    const char *const   docVersion,
    XMLFormatTarget *const   target,
    const EscapeFlags  escapeFlags = NoEscapes,
    const UnRepFlags  unrepFlags = UnRep_Fail,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    XMLFormatter::XMLFormatter ( const XMLCh *const   outEncoding,
    XMLFormatTarget *const   target,
    const EscapeFlags  escapeFlags = NoEscapes,
    const UnRepFlags  unrepFlags = UnRep_Fail,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    XMLFormatter::XMLFormatter ( const char *const   outEncoding,
    XMLFormatTarget *const   target,
    const EscapeFlags  escapeFlags = NoEscapes,
    const UnRepFlags  unrepFlags = UnRep_Fail,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    XMLFormatter::~XMLFormatter (  ) 


    Member Function Documentation

    void XMLFormatter::formatBuf ( const XMLCh *const   toFormat,
    const XMLSize_t  count,
    const EscapeFlags  escapeFlags = DefaultEscape,
    const UnRepFlags  unrepFlags = DefaultUnRep 
    )

    Parameters:
    toFormat the string to be formatted
    count length of the string
    escapeFlags the escape style for formatting toFormat
    unrepFlags the reaction for any unrepresentable character in toFormat

    XMLFormatter& XMLFormatter::operator<< ( const XMLCh *const   toFormat  ) 

    See also:
    formatBuf

    XMLFormatter& XMLFormatter::operator<< ( const XMLCh  toFormat  ) 

    void XMLFormatter::writeBOM ( const XMLByte *const   toFormat,
    const XMLSize_t  count 
    )

    const XMLCh * XMLFormatter::getEncodingName (  )  const

    Returns:
    return the encoding set for the formatted content

    const XMLTranscoder * XMLFormatter::getTranscoder (  )  const

    Returns:
    return constant transcoder used internally for transcoding the formatter conent

    XMLTranscoder * XMLFormatter::getTranscoder (  ) 

    Returns:
    return the transcoder used internally for transcoding the formatter content

    void XMLFormatter::setEscapeFlags ( const EscapeFlags  newFlags  ) 

    Parameters:
    newFlags set the escape style for the follow-on formatted content

    void XMLFormatter::setUnRepFlags ( const UnRepFlags  newFlags  ) 

    Parameters:
    newFlags set the reaction for unrepresentable character

    XMLFormatter & XMLFormatter::operator<< ( const EscapeFlags  newFlags  ) 

    Parameters:
    newFlags set the escape style for the follow-on formatted content
    See also:
    setEscapeFlags

    XMLFormatter & XMLFormatter::operator<< ( const UnRepFlags  newFlags  ) 

    Parameters:
    newFlags set the reaction for unrepresentable character
    See also:
    setUnRepFlags

    XMLFormatter::EscapeFlags XMLFormatter::getEscapeFlags (  )  const

    Returns:
    return the escape style for the formatted content

    XMLFormatter::UnRepFlags XMLFormatter::getUnRepFlags (  )  const

    Returns:
    return the reaction for unrepresentable character


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/BinFileInputStream_8hpp.html0000644000175000017500000000443511363620005023031 0ustar borisboris Xerces-C++: BinFileInputStream.hpp File Reference

    BinFileInputStream.hpp File Reference

    Go to the source code of this file.

    Classes

    class  BinFileInputStream

    Defines

    #define XERCESC_INCLUDE_GUARD_BINFILEINPUTSTREAM_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_BINFILEINPUTSTREAM_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classAbstractDOMParser.png0000644000175000017500000000310011363620005022500 0ustar borisboris‰PNG  IHDRäˆ]#ã^PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfÖIDATxœíœ[ŽÛ0 EíŸ~GÚÜ´"P`ö¿„ŠÔÓŽ5‘3†è˜¼™&~H7WÇ ­ÓNOÑ„R«>«?Ë úM‰ÔªÏêz‰nou½D··º^¢Û[]/Ñí­vmþX¿a&*ýÖbL«?5²ëÝUVÔ­ ýîSìÝTÛA…l&¾³Ë'³ìÆ©…ó8ÿ'¤l ikµåÐÅGrG‘—ŽŽv¶ÑWz;|ø“†oM6Ãúù6[êòä–’»“‘ã5Äx=k0l"_ÈÀB—|¬ñÏéœßYŒ‹í\rïâRšÊëßi±ö)ÕfP y‚Y,!ÇœþÍ]9}<¦\ZCêCNà °ýøBÊú yÕ1U|ó•IS"ï˜Å&¶Oœ(¶s¹‰9ˆ\±"Õ}NÛl1HÌsÒ‘­ÓwÈ­‘ï ©9uOÈC®ôøyÕ±F¾Ô>4BCu9_›ÌŸ8-rCu3g1ñÓSâYz´8ÕÙ°–Û y¨í%ßÊé»ZŽTÛ·†Ô‡œ&އU#ß/P›YîâMiy)} MÉGüög9QÊ…¥ Ø+äáš48m³än‰…¥žÈC—R6†Ô‡œ®qNW®˜}…|Ýqo–/y5Eã²d¿–7‘W~eF4‘o³eäÎ-®žž1_r»B¾7¤È«¾ÇÇâ˜éØ\ÜVC²ës»…¥àm!¯z¿(,›lmä©–÷#O ÐÝ!u!Oâ8Ý}÷.Ú:Q鈟*ªmaÅB·ðèCw©x{·ôå ö×å±fäZoW,x5íY¾Ífbg6g\¸å¥Kr x.,ÏCêBÞÔ+ä?×V­/ýV/¿~0~áo.ï?yë ÛRµ­Ù´²}8ò—“\ÿZëí®—èöV×Kt{«ë%º½ÕõÝÞê¤_@©U¿Õ AO£>©ÕPµêÖ¯¯SlÔj¸Zõëë NñQ«Ñ6ju@縨Õxµn£VÃmÔj¸Z ·Q«á6j5ÜF­†Û¨Õpµê×—ª['!¿¦€;€<wyîòÜä ¸Èp'à OÀ@ž€;€<wyîòÜä ¸Èp'àp3™SÄ=ŠÒã “ù 1RäåȇK‘—"®Gy ›¾Ù¯güÁÙ?ÍewGŠüˆ"ÃyÞEN¬ñiö'MØÝ‘"?¢¹A¬æá·q^ã&Î}äù(Èýñéûa#ôæËÿz¤—"ñgÆ?xdž ò¯Ê#-iƒ¤È¨BNqO¡¦LOÈC-mÓË4)òcŠÐf˜¶„ܘ-r,&Ôx¦–¾°„.$E~D¹ÏqîÎSx´ÇÉvRwU·*ä¹–OU-O+–tJ ÒÂò¦êYN+¼yâZeÆÍj]žÏf……V,Sê®ê–~û.E>\Š|¸ùp)òáRäåȇK‘—þRÅÜä ¸ˆÓ‰ÿÓžªOŠ|¸nþÏå¯(E>^À@ž€;€<wyîòÜä ¸Èp'à OÀ@ž€;€<wyîòÜä ¸Èp'à OÀ@ž€;€<wyîòÜä ¸Èp'à OÀ@ž€;ÀÍô÷µþ½nÂ=ŠÒŸåýæÅGI‘—".E>\Š|¸rK?k9cü3>á)vùO•;ÿxBެéɳvÖí\E~\+äÆvôì<ⲫÇ&©­"?®\Ë­%ìH9û[û“–§&qC‘¿¡ŒÜ…™ Œ¼×È©–Ç&®.EŠüˆV³Ü˜Ò»*,Ö…IO7SGE'l(òãªk¹Ë·Qªvyþ„Eþ†ÖÈÓ#×ò¸b±±Ô”ZXÞÖj]nlZ·˜T<ҺܦÂB·Ñ¸bQäïH¿}—".E>\Š|¸ùp)òáRäåȇ«ã—*:Ä=Š}ý^À®F††IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classSecurityManager.html0000644000175000017500000002523211363620006022515 0ustar borisboris Xerces-C++: SecurityManager Class Reference

    SecurityManager Class Reference

    Allow application to force the parser to behave in a security-conscious way. More...

    List of all members.

    Public Types

    enum  { ENTITY_EXPANSION_LIMIT = 50000 }

    Public Member Functions

    default Constructors
     SecurityManager ()
     Default constructor.
    virtual ~SecurityManager ()
     Destructor.
    The Security Manager
    virtual void setEntityExpansionLimit (XMLSize_t newLimit)
     An application should call this method when it wishes to specify a particular limit to the number of entity expansions the parser will permit in a particular document.
    virtual XMLSize_t getEntityExpansionLimit () const
     Permits the application or a parser component to query the current limit for entity expansions.

    Protected Attributes

    XMLSize_t fEntityExpansionLimit


    Detailed Description

    Allow application to force the parser to behave in a security-conscious way.

    There are cases in which an XML- or XmL-schema- conformant processor can be presented with documents the processing of which can involve the consumption of prohibitive amounts of system resources. Applications can attach instances of this class to parsers that they've created, via the http://apache.org/xml/properties/security-manager property.

    Defaults will be provided for all known security holes. Setter methods will be provided on this class to ensure that an application can customize each limit as it chooses. Components that are vulnerable to any given hole need to be written to act appropriately when an instance of this class has been set on the calling parser.


    Member Enumeration Documentation

    anonymous enum

    Enumerator:
    ENTITY_EXPANSION_LIMIT 


    Constructor & Destructor Documentation

    SecurityManager::SecurityManager (  ) 

    Default constructor.

    virtual SecurityManager::~SecurityManager (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual void SecurityManager::setEntityExpansionLimit ( XMLSize_t  newLimit  )  [virtual]

    An application should call this method when it wishes to specify a particular limit to the number of entity expansions the parser will permit in a particular document.

    The default behaviour should allow the parser to validate nearly all XML non-malicious XML documents; if an application knows that it is operating in a domain where entities are uncommon, for instance, it may wish to provide a limit lower than the parser's default.

    Parameters:
    newLimit the new entity expansion limit

    virtual XMLSize_t SecurityManager::getEntityExpansionLimit (  )  const [virtual]

    Permits the application or a parser component to query the current limit for entity expansions.

    Returns:
    the current setting of the entity expansion limit


    Member Data Documentation


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classPSVIUni.html0000644000175000017500000053602511363620006020657 0ustar borisboris Xerces-C++: PSVIUni Class Reference

    PSVIUni Class Reference

    List of all members.

    Static Public Attributes

    static const XMLCh fgPsvColon []
    static const XMLCh fgAllDeclarationsProcessed []
    static const XMLCh fgAttribute []
    static const XMLCh fgAttributes []
    static const XMLCh fgAttributeType []
    static const XMLCh fgBaseURI []
    static const XMLCh fgCharacter []
    static const XMLCh fgCharacterEncodingScheme []
    static const XMLCh fgChildren []
    static const XMLCh fgComment []
    static const XMLCh fgContent []
    static const XMLCh fgDocument []
    static const XMLCh fgDocTypeDeclaration []
    static const XMLCh fgDocumentElement []
    static const XMLCh fgElement []
    static const XMLCh fgInScopeNamespaces []
    static const XMLCh fgLocalName []
    static const XMLCh fgNamespace []
    static const XMLCh fgNamespaceAttributes []
    static const XMLCh fgNamespaceName []
    static const XMLCh fgNormalizedValue []
    static const XMLCh fgNotations []
    static const XMLCh fgPrefix []
    static const XMLCh fgProcessingInstruction []
    static const XMLCh fgReferences []
    static const XMLCh fgSpecified []
    static const XMLCh fgStandalone []
    static const XMLCh fgTarget []
    static const XMLCh fgText []
    static const XMLCh fgTextContent []
    static const XMLCh fgUnparsedEntities []
    static const XMLCh fgVersion []
    static const XMLCh fgAbstract []
    static const XMLCh fgAnnotation []
    static const XMLCh fgAnnotations []
    static const XMLCh fgApplicationInformation []
    static const XMLCh fgAttributeDeclaration []
    static const XMLCh fgAttributeGroupDefinition []
    static const XMLCh fgAttributeUse []
    static const XMLCh fgAttributeUses []
    static const XMLCh fgAttributeWildcard []
    static const XMLCh fgBaseTypeDefinition []
    static const XMLCh fgCanonicalRepresentation []
    static const XMLCh fgComplexTypeDefinition []
    static const XMLCh fgCompositor []
    static const XMLCh fgContentType []
    static const XMLCh fgDeclaration []
    static const XMLCh fgDerivationMethod []
    static const XMLCh fgDisallowedSubstitutions []
    static const XMLCh fgPsvDocument []
    static const XMLCh fgDocumentLocation []
    static const XMLCh fgElementDeclaration []
    static const XMLCh fgFacets []
    static const XMLCh fgFacetFixed []
    static const XMLCh fgFields []
    static const XMLCh fgFinal []
    static const XMLCh fgFundamentalFacets []
    static const XMLCh fgIdentityConstraintCategory []
    static const XMLCh fgIdentityConstraintDefinition []
    static const XMLCh fgIdentityConstraintDefinitions []
    static const XMLCh fgIdentityConstraintTable []
    static const XMLCh fgIdIdrefTable []
    static const XMLCh fgItemTypeDefinition []
    static const XMLCh fgMaxOccurs []
    static const XMLCh fgMemberTypeDefinition []
    static const XMLCh fgMemberTypeDefinitions []
    static const XMLCh fgMinOccurs []
    static const XMLCh fgModelGroup []
    static const XMLCh fgModelGroupDefinition []
    static const XMLCh fgName []
    static const XMLCh fgNamespaceConstraint []
    static const XMLCh fgNamespaces []
    static const XMLCh fgNamespaceSchemaInformation []
    static const XMLCh fgNil []
    static const XMLCh fgNillable []
    static const XMLCh fgNotation []
    static const XMLCh fgNotationDeclaration []
    static const XMLCh fgParticle []
    static const XMLCh fgParticles []
    static const XMLCh fgPrimitiveTypeDefinition []
    static const XMLCh fgProcessContents []
    static const XMLCh fgProhibitedSubstitutions []
    static const XMLCh fgPublicIdentifier []
    static const XMLCh fgReferencedKey []
    static const XMLCh fgRequired []
    static const XMLCh fgSchemaAnnotations []
    static const XMLCh fgSchemaComponents []
    static const XMLCh fgSchemaDefault []
    static const XMLCh fgSchemaDocument []
    static const XMLCh fgSchemaDocuments []
    static const XMLCh fgSchemaErrorCode []
    static const XMLCh fgSchemaInformation []
    static const XMLCh fgSchemaNamespace []
    static const XMLCh fgSchemaNormalizedValue []
    static const XMLCh fgSchemaSpecified []
    static const XMLCh fgScope []
    static const XMLCh fgSelector []
    static const XMLCh fgSimpleTypeDefinition []
    static const XMLCh fgSubstitutionGroupAffiliation []
    static const XMLCh fgSubstitutionGroupExclusions []
    static const XMLCh fgSystemIdentifier []
    static const XMLCh fgTargetNamespace []
    static const XMLCh fgTerm []
    static const XMLCh fgTypeDefinition []
    static const XMLCh fgUserInformation []
    static const XMLCh fgValidationAttempted []
    static const XMLCh fgValidationContext []
    static const XMLCh fgValidity []
    static const XMLCh fgValue []
    static const XMLCh fgValueConstraint []
    static const XMLCh fgVariety []
    static const XMLCh fgWildcard []
    static const XMLCh fgXpath []
    static const XMLCh fgAll []
    static const XMLCh fgAny []
    static const XMLCh fgAppinfo []
    static const XMLCh fgAtomic []
    static const XMLCh fgChoice []
    static const XMLCh fgDefault []
    static const XMLCh fgDocumentation []
    static const XMLCh fgElementOnly []
    static const XMLCh fgEmpty []
    static const XMLCh fgExtension []
    static const XMLCh fgFalse []
    static const XMLCh fgFull []
    static const XMLCh fgGlobal []
    static const XMLCh fgInfoset []
    static const XMLCh fgInvalid []
    static const XMLCh fgKey []
    static const XMLCh fgKeyref []
    static const XMLCh fgLax []
    static const XMLCh fgList []
    static const XMLCh fgLocal []
    static const XMLCh fgMixed []
    static const XMLCh fgNone []
    static const XMLCh fgNotKnown []
    static const XMLCh fgNsNamespace []
    static const XMLCh fgOnePointZero []
    static const XMLCh fgPartial []
    static const XMLCh fgRestrict []
    static const XMLCh fgRestriction []
    static const XMLCh fgSchema []
    static const XMLCh fgSequence []
    static const XMLCh fgSimple []
    static const XMLCh fgSkip []
    static const XMLCh fgStrict []
    static const XMLCh fgSubstitution []
    static const XMLCh fgTotal []
    static const XMLCh fgTrue []
    static const XMLCh fgUnbounded []
    static const XMLCh fgUnion []
    static const XMLCh fgUnique []
    static const XMLCh fgUnknown []
    static const XMLCh fgValid []
    static const XMLCh fgVCFixed []
    static const XMLCh fgXMLChNull []
    static const XMLCh fgAg []
    static const XMLCh fgAnnot []
    static const XMLCh fgAttr []
    static const XMLCh fgAu []
    static const XMLCh fgElt []
    static const XMLCh fgIdc []
    static const XMLCh fgMg []
    static const XMLCh fgNot []
    static const XMLCh fgType []
    static const XMLCh fgBounded []
    static const XMLCh fgCardinality []
    static const XMLCh fgEnumeration []
    static const XMLCh fgFractionDigits []
    static const XMLCh fgLength []
    static const XMLCh fgMaxExclusive []
    static const XMLCh fgMaxInclusive []
    static const XMLCh fgMaxLength []
    static const XMLCh fgMinExclusive []
    static const XMLCh fgMinInclusive []
    static const XMLCh fgMinLength []
    static const XMLCh fgNumeric []
    static const XMLCh fgOrdered []
    static const XMLCh fgPattern []
    static const XMLCh fgTotalDigits []
    static const XMLCh fgWhiteSpace []
    static const XMLCh fgNamespaceInfoset []
    static const XMLCh fgXsi []
    static const XMLCh fgNamespaceInstance []
    static const XMLCh fgPsv []
    static const XMLCh fgNamespacePsvi []
    static const XMLCh fgXml []
    static const XMLCh fgNamespaceXmlSchema []


    Member Data Documentation

    const XMLCh PSVIUni::fgPsvColon[] [static]

    const XMLCh PSVIUni::fgAttribute[] [static]

    const XMLCh PSVIUni::fgAttributes[] [static]

    const XMLCh PSVIUni::fgAttributeType[] [static]

    const XMLCh PSVIUni::fgBaseURI[] [static]

    const XMLCh PSVIUni::fgCharacter[] [static]

    const XMLCh PSVIUni::fgChildren[] [static]

    const XMLCh PSVIUni::fgComment[] [static]

    const XMLCh PSVIUni::fgContent[] [static]

    const XMLCh PSVIUni::fgDocument[] [static]

    const XMLCh PSVIUni::fgElement[] [static]

    const XMLCh PSVIUni::fgLocalName[] [static]

    const XMLCh PSVIUni::fgNamespace[] [static]

    const XMLCh PSVIUni::fgNamespaceName[] [static]

    const XMLCh PSVIUni::fgNotations[] [static]

    const XMLCh PSVIUni::fgPrefix[] [static]

    const XMLCh PSVIUni::fgReferences[] [static]

    const XMLCh PSVIUni::fgSpecified[] [static]

    const XMLCh PSVIUni::fgStandalone[] [static]

    const XMLCh PSVIUni::fgTarget[] [static]

    const XMLCh PSVIUni::fgText[] [static]

    const XMLCh PSVIUni::fgTextContent[] [static]

    const XMLCh PSVIUni::fgVersion[] [static]

    const XMLCh PSVIUni::fgAbstract[] [static]

    const XMLCh PSVIUni::fgAnnotation[] [static]

    const XMLCh PSVIUni::fgAnnotations[] [static]

    const XMLCh PSVIUni::fgAttributeUse[] [static]

    const XMLCh PSVIUni::fgAttributeUses[] [static]

    const XMLCh PSVIUni::fgCompositor[] [static]

    const XMLCh PSVIUni::fgContentType[] [static]

    const XMLCh PSVIUni::fgDeclaration[] [static]

    const XMLCh PSVIUni::fgPsvDocument[] [static]

    const XMLCh PSVIUni::fgFacets[] [static]

    const XMLCh PSVIUni::fgFacetFixed[] [static]

    const XMLCh PSVIUni::fgFields[] [static]

    const XMLCh PSVIUni::fgFinal[] [static]

    const XMLCh PSVIUni::fgIdIdrefTable[] [static]

    const XMLCh PSVIUni::fgMaxOccurs[] [static]

    const XMLCh PSVIUni::fgMinOccurs[] [static]

    const XMLCh PSVIUni::fgModelGroup[] [static]

    const XMLCh PSVIUni::fgName[] [static]

    const XMLCh PSVIUni::fgNamespaces[] [static]

    const XMLCh PSVIUni::fgNil[] [static]

    const XMLCh PSVIUni::fgNillable[] [static]

    const XMLCh PSVIUni::fgNotation[] [static]

    const XMLCh PSVIUni::fgParticle[] [static]

    const XMLCh PSVIUni::fgParticles[] [static]

    const XMLCh PSVIUni::fgReferencedKey[] [static]

    const XMLCh PSVIUni::fgRequired[] [static]

    const XMLCh PSVIUni::fgSchemaDefault[] [static]

    const XMLCh PSVIUni::fgSchemaDocument[] [static]

    const XMLCh PSVIUni::fgScope[] [static]

    const XMLCh PSVIUni::fgSelector[] [static]

    const XMLCh PSVIUni::fgTerm[] [static]

    const XMLCh PSVIUni::fgTypeDefinition[] [static]

    const XMLCh PSVIUni::fgValidity[] [static]

    const XMLCh PSVIUni::fgValue[] [static]

    const XMLCh PSVIUni::fgVariety[] [static]

    const XMLCh PSVIUni::fgWildcard[] [static]

    const XMLCh PSVIUni::fgXpath[] [static]

    const XMLCh PSVIUni::fgAll[] [static]

    const XMLCh PSVIUni::fgAny[] [static]

    const XMLCh PSVIUni::fgAppinfo[] [static]

    const XMLCh PSVIUni::fgAtomic[] [static]

    const XMLCh PSVIUni::fgChoice[] [static]

    const XMLCh PSVIUni::fgDefault[] [static]

    const XMLCh PSVIUni::fgDocumentation[] [static]

    const XMLCh PSVIUni::fgElementOnly[] [static]

    const XMLCh PSVIUni::fgEmpty[] [static]

    const XMLCh PSVIUni::fgExtension[] [static]

    const XMLCh PSVIUni::fgFalse[] [static]

    const XMLCh PSVIUni::fgFull[] [static]

    const XMLCh PSVIUni::fgGlobal[] [static]

    const XMLCh PSVIUni::fgInfoset[] [static]

    const XMLCh PSVIUni::fgInvalid[] [static]

    const XMLCh PSVIUni::fgKey[] [static]

    const XMLCh PSVIUni::fgKeyref[] [static]

    const XMLCh PSVIUni::fgLax[] [static]

    const XMLCh PSVIUni::fgList[] [static]

    const XMLCh PSVIUni::fgLocal[] [static]

    const XMLCh PSVIUni::fgMixed[] [static]

    const XMLCh PSVIUni::fgNone[] [static]

    const XMLCh PSVIUni::fgNotKnown[] [static]

    const XMLCh PSVIUni::fgNsNamespace[] [static]

    const XMLCh PSVIUni::fgOnePointZero[] [static]

    const XMLCh PSVIUni::fgPartial[] [static]

    const XMLCh PSVIUni::fgRestrict[] [static]

    const XMLCh PSVIUni::fgRestriction[] [static]

    const XMLCh PSVIUni::fgSchema[] [static]

    const XMLCh PSVIUni::fgSequence[] [static]

    const XMLCh PSVIUni::fgSimple[] [static]

    const XMLCh PSVIUni::fgSkip[] [static]

    const XMLCh PSVIUni::fgStrict[] [static]

    const XMLCh PSVIUni::fgSubstitution[] [static]

    const XMLCh PSVIUni::fgTotal[] [static]

    const XMLCh PSVIUni::fgTrue[] [static]

    const XMLCh PSVIUni::fgUnbounded[] [static]

    const XMLCh PSVIUni::fgUnion[] [static]

    const XMLCh PSVIUni::fgUnique[] [static]

    const XMLCh PSVIUni::fgUnknown[] [static]

    const XMLCh PSVIUni::fgValid[] [static]

    const XMLCh PSVIUni::fgVCFixed[] [static]

    const XMLCh PSVIUni::fgXMLChNull[] [static]

    const XMLCh PSVIUni::fgAg[] [static]

    const XMLCh PSVIUni::fgAnnot[] [static]

    const XMLCh PSVIUni::fgAttr[] [static]

    const XMLCh PSVIUni::fgAu[] [static]

    const XMLCh PSVIUni::fgElt[] [static]

    const XMLCh PSVIUni::fgIdc[] [static]

    const XMLCh PSVIUni::fgMg[] [static]

    const XMLCh PSVIUni::fgNot[] [static]

    const XMLCh PSVIUni::fgType[] [static]

    const XMLCh PSVIUni::fgBounded[] [static]

    const XMLCh PSVIUni::fgCardinality[] [static]

    const XMLCh PSVIUni::fgEnumeration[] [static]

    const XMLCh PSVIUni::fgFractionDigits[] [static]

    const XMLCh PSVIUni::fgLength[] [static]

    const XMLCh PSVIUni::fgMaxExclusive[] [static]

    const XMLCh PSVIUni::fgMaxInclusive[] [static]

    const XMLCh PSVIUni::fgMaxLength[] [static]

    const XMLCh PSVIUni::fgMinExclusive[] [static]

    const XMLCh PSVIUni::fgMinInclusive[] [static]

    const XMLCh PSVIUni::fgMinLength[] [static]

    const XMLCh PSVIUni::fgNumeric[] [static]

    const XMLCh PSVIUni::fgOrdered[] [static]

    const XMLCh PSVIUni::fgPattern[] [static]

    const XMLCh PSVIUni::fgTotalDigits[] [static]

    const XMLCh PSVIUni::fgWhiteSpace[] [static]

    const XMLCh PSVIUni::fgXsi[] [static]

    const XMLCh PSVIUni::fgPsv[] [static]

    const XMLCh PSVIUni::fgNamespacePsvi[] [static]

    const XMLCh PSVIUni::fgXml[] [static]


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classAttributeList.html0000644000175000017500000005473211363620005022220 0ustar borisboris Xerces-C++: AttributeList Class Reference

    AttributeList Class Reference

    Interface for an element's attribute specifications. More...

    List of all members.

    Public Member Functions

    Constructors and Destructor
     AttributeList ()
     Default constructor.
    virtual ~AttributeList ()
     Destructor.
    The virtual attribute list interface
    virtual XMLSize_t getLength () const =0
     Return the number of attributes in this list.
    virtual const XMLChgetName (const XMLSize_t index) const =0
     Return the name of an attribute in this list (by position).
    virtual const XMLChgetType (const XMLSize_t index) const =0
     Return the type of an attribute in the list (by position).
    virtual const XMLChgetValue (const XMLSize_t index) const =0
     Return the value of an attribute in the list (by position).
    virtual const XMLChgetType (const XMLCh *const name) const =0
     Return the type of an attribute in the list (by name).
    virtual const XMLChgetValue (const XMLCh *const name) const =0
     Return the value of an attribute in the list (by name).
    virtual const XMLChgetValue (const char *const name) const =0
     Return the value of an attribute in the list (by name).


    Detailed Description

    Interface for an element's attribute specifications.

    The SAX parser implements this interface and passes an instance to the SAX application as the second argument of each startElement event.

    The instance provided will return valid results only during the scope of the startElement invocation (to save it for future use, the application must make a copy: the AttributeListImpl helper class provides a convenient constructor for doing so).

    An AttributeList includes only attributes that have been specified or defaulted: #IMPLIED attributes will not be included.

    There are two ways for the SAX application to obtain information from the AttributeList. First, it can iterate through the entire list:

    public void startElement (String name, AttributeList atts) {
     for (XMLSize_t i = 0; i < atts.getLength(); i++) {
      String name = atts.getName(i);
      String type = atts.getType(i);
      String value = atts.getValue(i);
      [...]
     }
    }

    (Note that the result of getLength() will be zero if there are no attributes.)

    As an alternative, the application can request the value or type of specific attributes:

    public void startElement (String name, AttributeList atts) {
     String identifier = atts.getValue("id");
     String label = atts.getValue("label");
     [...]
    }

    The AttributeListImpl helper class provides a convenience implementation for use by parser or application writers.

    See also:
    DocumentHandler::startElement

    AttributeListImpl::AttributeListImpl


    Constructor & Destructor Documentation

    AttributeList::AttributeList (  ) 

    Default constructor.

    virtual AttributeList::~AttributeList (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual XMLSize_t AttributeList::getLength (  )  const [pure virtual]

    Return the number of attributes in this list.

    The SAX parser may provide attributes in any arbitrary order, regardless of the order in which they were declared or specified. The number of attributes may be zero.

    Returns:
    The number of attributes in the list.

    virtual const XMLCh* AttributeList::getName ( const XMLSize_t  index  )  const [pure virtual]

    Return the name of an attribute in this list (by position).

    The names must be unique: the SAX parser shall not include the same attribute twice. Attributes without values (those declared #IMPLIED without a value specified in the start tag) will be omitted from the list.

    If the attribute name has a namespace prefix, the prefix will still be attached.

    Parameters:
    index The index of the attribute in the list (starting at 0).
    Returns:
    The name of the indexed attribute, or null if the index is out of range.
    See also:
    getLength

    virtual const XMLCh* AttributeList::getType ( const XMLSize_t  index  )  const [pure virtual]

    Return the type of an attribute in the list (by position).

    The attribute type is one of the strings "CDATA", "ID", "IDREF", "IDREFS", "NMTOKEN", "NMTOKENS", "ENTITY", "ENTITIES", or "NOTATION" (always in upper case).

    If the parser has not read a declaration for the attribute, or if the parser does not report attribute types, then it must return the value "CDATA" as stated in the XML 1.0 Recommendation (clause 3.3.3, "Attribute-Value Normalization").

    For an enumerated attribute that is not a notation, the parser will report the type as "NMTOKEN".

    Parameters:
    index The index of the attribute in the list (starting at 0).
    Returns:
    The attribute type as a string, or null if the index is out of range.
    See also:
    getLength

    getType

    virtual const XMLCh* AttributeList::getValue ( const XMLSize_t  index  )  const [pure virtual]

    Return the value of an attribute in the list (by position).

    If the attribute value is a list of tokens (IDREFS, ENTITIES, or NMTOKENS), the tokens will be concatenated into a single string separated by whitespace.

    Parameters:
    index The index of the attribute in the list (starting at 0).
    Returns:
    The attribute value as a string, or null if the index is out of range.
    See also:
    getLength

    getValue

    virtual const XMLCh* AttributeList::getType ( const XMLCh *const   name  )  const [pure virtual]

    Return the type of an attribute in the list (by name).

    The return value is the same as the return value for getType(XMLSize_t).

    If the attribute name has a namespace prefix in the document, the application must include the prefix here.

    Parameters:
    name The name of the attribute.
    Returns:
    The attribute type as a string, or null if no such attribute exists.
    See also:
    getType

    virtual const XMLCh* AttributeList::getValue ( const XMLCh *const   name  )  const [pure virtual]

    Return the value of an attribute in the list (by name).

    The return value is the same as the return value for getValue(XMLSize_t).

    If the attribute name has a namespace prefix in the document, the application must include the prefix here.

    Parameters:
    name The name of the attribute in the list.
    Returns:
    The attribute value as a string, or null if no such attribute exists.
    See also:
    getValue

    virtual const XMLCh* AttributeList::getValue ( const char *const   name  )  const [pure virtual]

    Return the value of an attribute in the list (by name).

    The return value is the same as the return value for getValue(XMLSize_t).

    If the attribute name has a namespace prefix in the document, the application must include the prefix here.

    Parameters:
    name The name of the attribute in the list.
    Returns:
    The attribute value as a string, or null if no such attribute exists.
    See also:
    getValue


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLEntityHandler-members.html0000644000175000017500000000665411363620006024205 0ustar borisboris Xerces-C++: Member List

    XMLEntityHandler Member List

    This is the complete list of members for XMLEntityHandler, including all inherited members.

    endInputSource(const InputSource &inputSource)=0XMLEntityHandler [pure virtual]
    expandSystemId(const XMLCh *const systemId, XMLBuffer &toFill)=0XMLEntityHandler [pure virtual]
    resetEntities()=0XMLEntityHandler [pure virtual]
    resolveEntity(XMLResourceIdentifier *resourceIdentifier)=0XMLEntityHandler [pure virtual]
    startInputSource(const InputSource &inputSource)=0XMLEntityHandler [pure virtual]
    XMLEntityHandler()XMLEntityHandler [protected]
    ~XMLEntityHandler()XMLEntityHandler [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classBinMemInputStream.png0000644000175000017500000000106011363620005022566 0ustar borisboris‰PNG  IHDR{ˆ5ï‰ûPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfÆIDAThí—[rà Eá'ß¾ì@YA§ÝP¿²ÿ%TBŒ&ãd"lóÔA 8®û™I_îû<‘ oɸóøÏ1ƒ«WÃ%ɺp6dJA:ƒbIa—M<è¯aï$Ðàë`lí=âÒ(¸¬h×)šÅâéw×øëZjï÷­4‰w^£;ðŽó×ûǽ>ù¡ÞO§ãÏÅ/¿â§Ëå@üàÈn¸á†þî¸é¸ãqÈñ]*õÑ™ó螆WxÈf NñÃYÄ”‰S" ‘6") :)ìá!eHZFa’q2sõqà_þP‘BÜ_ɸ@ÍVÖÞ×x’RBÜÓ¹(±Ø7†ëÞQã´_íC™@e4hoÓ€z]|(}6n:î9¸é8à 7ÜpÃßÇLZÜ2³¸Ç=༴|zòXm—m:x6õ\ ûøláÞ-H¸çÛˈç¶ôr‚‚{8+ ±ÏàÂöœÇ^'};ŸÑ ÙûRãéN u¥ËÐË¥Ñvñš‰CtñXQWØÃµç÷Ð^ˆŒ#‡¥à~…—½ÇqÔÞ9d ÄF¼¯ñý÷jô¥ñ[“2>÷¡þd»±82ÙûIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classWrapper4DOMLSInput.png0000644000175000017500000000113411363620006022551 0ustar borisboris‰PNG  IHDRŒˆÇPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfòIDAThí˜Krà @ͦk‰ȽA{¡¬rÿ#TpŒƒ?¤LjO%{ñ,ß]dø;ȧcZ1$wäJü5‘/dV7 r5²u\‘ØÙ€á&®¦-»˜ˆœ³jr‡šZÂJšãáQŒ$»šJŠÇœsZ+¹ÙŠ5c@úe >èñUÌ£m¬ø|—˜ZàÖ1š|Ï18}h±†]"_8"¥à ÚÒ©Äj‘‹`ÚÄ1[˜NL§ãîmÏÃ7¤Å1ŽqŒcã˜Ëc°‹ ÐÃÞà˜mLЫÞ8 ÎAçQ Åä°‹Ayöä X¬¡Ä„0È4<2°¢LAñIg†³‚é²6f߀¢#Ê´)ÓË¢`0%ÑzâËÒñÖ¹ú„NVªbtS›Q˜*3LæbkT0I»ìâ Ã*8€™ù&9?G*­r†Qßà†#óH-÷ ¨¶oÔ ~ŠÂå.Ö±å1ôä˜×Ä1[˜>Ì^æúôì¦#LIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classMemBufFormatTarget.html0000644000175000017500000002463511363620006023114 0ustar borisboris Xerces-C++: MemBufFormatTarget Class Reference

    MemBufFormatTarget Class Reference

    Inheritance diagram for MemBufFormatTarget:

    XMLFormatTarget XMemory

    List of all members.

    Public Member Functions

    virtual void writeChars (const XMLByte *const toWrite, const XMLSize_t count, XMLFormatter *const formatter)
    const XMLBytegetRawBuffer () const
     Returned the internal raw buffer.
    XMLSize_t getLen () const
     Returned the length of the raw buffer.
    constructors and destructor
     MemBufFormatTarget (XMLSize_t initCapacity=1023, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     ~MemBufFormatTarget ()
    reset
    void reset ()
     Reset the internal string buffer.


    Constructor & Destructor Documentation

    MemBufFormatTarget::MemBufFormatTarget ( XMLSize_t  initCapacity = 1023,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    MemBufFormatTarget::~MemBufFormatTarget (  ) 


    Member Function Documentation

    virtual void MemBufFormatTarget::writeChars ( const XMLByte *const   toWrite,
    const XMLSize_t  count,
    XMLFormatter *const   formatter 
    ) [virtual]

    Implements XMLFormatTarget.

    const XMLByte* MemBufFormatTarget::getRawBuffer (  )  const

    Returned the internal raw buffer.

    XMLSize_t MemBufFormatTarget::getLen (  )  const

    Returned the length of the raw buffer.

    void MemBufFormatTarget::reset (  ) 

    Reset the internal string buffer.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLIBM1047Transcoder_8hpp.html0000644000175000017500000000446111363620005022655 0ustar borisboris Xerces-C++: XMLIBM1047Transcoder.hpp File Reference

    XMLIBM1047Transcoder.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLIBM1047Transcoder

    Defines

    #define XERCESC_INCLUDE_GUARD_XMLIBM1047TRANSCODER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XMLIBM1047TRANSCODER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLGrammarPool_8hpp-source.html0000644000175000017500000005661511363620005023433 0ustar borisboris Xerces-C++: XMLGrammarPool.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_eval_0x64.html0000644000175000017500000004710611363620005022170 0ustar borisboris Xerces-C++: Class Members - Enumerator
     

    - d -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_func_0x70.html0000644000175000017500000002401411363620005022162 0ustar borisboris Xerces-C++: Class Members - Functions
     

    - p -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLDateTime_8hpp-source.html0000644000175000017500000012301311363620005022672 0ustar borisboris Xerces-C++: XMLDateTime.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMErrorHandler.html0000644000175000017500000001567711363620005022355 0ustar borisboris Xerces-C++: DOMErrorHandler Class Reference

    DOMErrorHandler Class Reference

    Basic interface for DOM error handlers. More...

    List of all members.

    Public Member Functions

    Destructor
    virtual ~DOMErrorHandler ()
     Destructor.
    Functions introduced in DOM Level 3
    virtual bool handleError (const DOMError &domError)=0
     This method is called on the error handler when an error occurs.

    Protected Member Functions

    Hidden constructors
     DOMErrorHandler ()


    Detailed Description

    Basic interface for DOM error handlers.

    DOMErrorHandler is a callback interface that the DOM implementation can call when reporting errors that happens while processing XML data, or when doing some other processing (e.g. validating a document).

    The application that is using the DOM implementation is expected to implement this interface.

    See also:
    DOMLSParser::getDomConfig
    Since:
    DOM Level 3

    Constructor & Destructor Documentation

    DOMErrorHandler::DOMErrorHandler (  )  [protected]

    virtual DOMErrorHandler::~DOMErrorHandler (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual bool DOMErrorHandler::handleError ( const DOMError domError  )  [pure virtual]

    This method is called on the error handler when an error occurs.

    If an exception is thrown from this method, it is considered to be equivalent of returning true.

    Parameters:
    domError The error object that describes the error, this object may be reused by the DOM implementation across multiple calls to the handleError method.
    Returns:
    If the handleError method returns true the DOM implementation should continue as if the error didn't happen when possible, if the method returns false then the DOM implementation should stop the current processing when possible.
    Since:
    DOM Level 3


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMXPathResult_8hpp.html0000644000175000017500000000525111363620005022105 0ustar borisboris Xerces-C++: DOMXPathResult.hpp File Reference

    DOMXPathResult.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMXPathResult
     The DOMXPathResult interface represents the result of the evaluation of an XPath 1.0 or XPath 2.0 expression within the context of a particular node. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMXPATHRESULT_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMXPATHRESULT_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XSModelGroup_8hpp-source.html0000644000175000017500000003021511363620005023146 0ustar borisboris Xerces-C++: XSModelGroup.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLFloat-members.html0000644000175000017500000003442511363620006022475 0ustar borisboris Xerces-C++: Member List

    XMLFloat Member List

    This is the complete list of members for XMLFloat, including all inherited members.

    BigDecimal enum valueXMLNumber
    checkBoundary(char *const strValue)XMLFloat [protected, virtual]
    compareValues(const XMLFloat *const lValue, const XMLFloat *const rValue)XMLFloat [static]
    XMLAbstractDoubleFloat::compareValues(const XMLAbstractDoubleFloat *const lValue, const XMLAbstractDoubleFloat *const rValue, MemoryManager *const manager)XMLAbstractDoubleFloat [protected, static]
    convert(char *const strValue)XMLAbstractDoubleFloat [protected]
    DateTime enum valueXMLNumber
    Double enum valueXMLNumber
    EQUAL enum valueXMLNumber
    fDataConvertedXMLAbstractDoubleFloat [protected]
    fDataOverflowedXMLAbstractDoubleFloat [protected]
    Float enum valueXMLNumber
    fTypeXMLAbstractDoubleFloat [protected]
    fValueXMLAbstractDoubleFloat [protected]
    getCanonicalRepresentation(const XMLCh *const rawData, MemoryManager *const memMgr=XMLPlatformUtils::fgMemoryManager)XMLAbstractDoubleFloat [static]
    getFormattedString() const XMLAbstractDoubleFloat [virtual]
    getMemoryManager() const XMLAbstractDoubleFloat
    getRawData() const XMLAbstractDoubleFloat [virtual]
    getSign() const XMLAbstractDoubleFloat [virtual]
    getType() const XMLAbstractDoubleFloat
    getValue() const XMLAbstractDoubleFloat
    GREATER_THAN enum valueXMLNumber
    INDETERMINATE enum valueXMLNumber
    init(const XMLCh *const strValue)XMLAbstractDoubleFloat [protected]
    isDataConverted() const XMLAbstractDoubleFloat
    isDataOverflowed() const XMLAbstractDoubleFloat
    LESS_THAN enum valueXMLNumber
    LiteralType enum nameXMLAbstractDoubleFloat
    loadNumber(XMLNumber::NumberType numType, XSerializeEngine &serEng)XMLNumber [static]
    NaN enum valueXMLAbstractDoubleFloat
    NegINF enum valueXMLAbstractDoubleFloat
    Normal enum valueXMLAbstractDoubleFloat
    normalizeDecimalPoint(char *const toNormal)XMLAbstractDoubleFloat [static]
    NumberType enum nameXMLNumber
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    PosINF enum valueXMLAbstractDoubleFloat
    SpecialTypeNum enum valueXMLAbstractDoubleFloat
    UnKnown enum valueXMLNumber
    XMemory()XMemory [protected]
    XMLAbstractDoubleFloat(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLAbstractDoubleFloat [protected]
    XMLFloat(const XMLCh *const strValue, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLFloat
    XMLFloat(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLFloat
    XMLNumber()XMLNumber [protected]
    XMLNumber(const XMLNumber &)XMLNumber [protected]
    ~XMLAbstractDoubleFloat()XMLAbstractDoubleFloat [virtual]
    ~XMLFloat()XMLFloat
    ~XMLNumber()XMLNumber [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLString_8hpp.html0000644000175000017500000000463011363620005021151 0ustar borisboris Xerces-C++: XMLString.hpp File Reference

    XMLString.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLString
     Class for representing native character strings and handling common string operations. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_XMLSTRING_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XMLSTRING_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classHandlerBase-members.html0000644000175000017500000002016611363620006023214 0ustar borisboris Xerces-C++: Member List

    HandlerBase Member List

    This is the complete list of members for HandlerBase, including all inherited members.

    characters(const XMLCh *const chars, const XMLSize_t length)HandlerBase [virtual]
    DocumentHandler()DocumentHandler
    DTDHandler()DTDHandler
    endDocument()HandlerBase [virtual]
    endElement(const XMLCh *const name)HandlerBase [virtual]
    EntityResolver()EntityResolver
    error(const SAXParseException &exc)HandlerBase [virtual]
    ErrorHandler()ErrorHandler
    fatalError(const SAXParseException &exc)HandlerBase [virtual]
    HandlerBase()HandlerBase
    ignorableWhitespace(const XMLCh *const chars, const XMLSize_t length)HandlerBase [virtual]
    notationDecl(const XMLCh *const name, const XMLCh *const publicId, const XMLCh *const systemId)HandlerBase [virtual]
    processingInstruction(const XMLCh *const target, const XMLCh *const data)HandlerBase [virtual]
    resetDocType()HandlerBase [virtual]
    resetDocument()HandlerBase [virtual]
    resetErrors()HandlerBase [virtual]
    resolveEntity(const XMLCh *const publicId, const XMLCh *const systemId)HandlerBase [virtual]
    setDocumentLocator(const Locator *const locator)HandlerBase [virtual]
    startDocument()HandlerBase [virtual]
    startElement(const XMLCh *const name, AttributeList &attributes)HandlerBase [virtual]
    unparsedEntityDecl(const XMLCh *const name, const XMLCh *const publicId, const XMLCh *const systemId, const XMLCh *const notationName)HandlerBase [virtual]
    warning(const SAXParseException &exc)HandlerBase [virtual]
    ~DocumentHandler()DocumentHandler [virtual]
    ~DTDHandler()DTDHandler [virtual]
    ~EntityResolver()EntityResolver [virtual]
    ~ErrorHandler()ErrorHandler [virtual]
    ~HandlerBase()HandlerBase [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classHash2KeysSetOf.png0000644000175000017500000000101411363620006021765 0ustar borisboris‰PNG  IHDR´PB6B•PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf¢IDATX…í–[rà EÑO¿u½Ü´Ê—÷¿„ê…_ÉÄIl:q q8H7‚qú®VÒW_©|6ôû ³>4ºÃÑ‚ìz¿*Òì$ ©sÎÏN´@„hÐÜ#{»#Ð*òˆîì)ŸC¼ÎŠè-ñÓÚÑÚÑÉ!hÃ/9ymyb|«ÍºÛë;{ÖBo¡—Ñ›NÿÕ›ïÿ¡+¾,g†4tC7tC7tC7tC‰Fµ’¸N|)QCÿ.šì‰¾|¡Õ|Kù·µ° ‰ÅæiÞ•‹·Ðœ˜FCÙW |qóhñUü!Ò)lf°Áà00Á6¯ÐbU [At6_™Ø÷ñß0ªÖ#ß64 tŒÀ[æ&4LÌ º¦3´Í] Q¼V½2ºÓX ÂAˆ ˜8\zîàR˜ >'ôÀJ]*;¸rJœ´Xx]–LÞò:´-^Ñ!J†ÜÐz.ÈLk„BÑÏ,ðÔ‚çµë¥9°N>IoŠdšnžÆguM÷÷¡÷\0'¾ùzŽ®÷²ð$XNkñC–IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classDOMUserDataHandler-members.html0000644000175000017500000000767211363620006024421 0ustar borisboris Xerces-C++: Member List

    DOMUserDataHandler Member List

    This is the complete list of members for DOMUserDataHandler, including all inherited members.

    DOMOperationType enum nameDOMUserDataHandler
    DOMUserDataHandler()DOMUserDataHandler [protected]
    handle(DOMOperationType operation, const XMLCh *const key, void *data, const DOMNode *src, DOMNode *dst)=0DOMUserDataHandler [pure virtual]
    NODE_ADOPTED enum valueDOMUserDataHandler
    NODE_CLONED enum valueDOMUserDataHandler
    NODE_DELETED enum valueDOMUserDataHandler
    NODE_IMPORTED enum valueDOMUserDataHandler
    NODE_RENAMED enum valueDOMUserDataHandler
    ~DOMUserDataHandler()DOMUserDataHandler [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_eval_0x6d.html0000644000175000017500000001265711363620005022253 0ustar borisboris Xerces-C++: Class Members - Enumerator
     

    - m -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_func_0x74.html0000644000175000017500000001357611363620005022201 0ustar borisboris Xerces-C++: Class Members - Functions
     

    - t -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSIDCDefinition.png0000644000175000017500000000076311363620006022120 0ustar borisboris‰PNG  IHDRgˆ}èPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf‰IDATX…í—QŽ„ †áež)7¨'Øì^hŸ¼ÿ¶-È€+ d4Ñ ôË_Êhþ1?ÇÛ—ùž·çCȧ§?¢äé"! ¡'eê‘s¨B4M±Ž`èÑ·!^L‚¼œËÑQB( ߀xMâ›±z°H¯ Å}’ )½ Xerces-C++: PSVIAttributeStorage Class Reference

    PSVIAttributeStorage Class Reference

    A container for the PSVI contributions to attributes that occur on a particular element. More...

    Inheritance diagram for PSVIAttributeStorage:

    XMemory

    List of all members.

    Public Member Functions

     PSVIAttributeStorage ()
     ~PSVIAttributeStorage ()

    Public Attributes

    PSVIAttributefPSVIAttribute
    const XMLChfAttributeName
    const XMLChfAttributeNamespace


    Detailed Description

    A container for the PSVI contributions to attributes that occur on a particular element.

    This is always owned by the parser/validator from which it is obtained. The parser/validator will specify under what conditions it may be relied upon to have meaningful contents.


    Constructor & Destructor Documentation

    PSVIAttributeStorage::PSVIAttributeStorage (  ) 

    PSVIAttributeStorage::~PSVIAttributeStorage (  ) 


    Member Data Documentation


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/doxygen.png0000644000175000017500000000240111363620004017651 0ustar borisboris‰PNG  IHDRd-ok>ÂgAMAÖØÔOX2tEXtSoftwareAdobe ImageReadyqÉe<]PLTEǾÏ"&©ÈÎï¶»ÖÓÚú“¢Þ ¬à¶Âõ‡§ÕÙêÉÊÎáâæ{ŽÔ¡ëˆ™× ²ø§¬¹ÀÀ±ÝÝÎùùéõõçëëåED9×ÖËhg]_X<@:#mhUÿÿÿÝÀ1tRNSÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÍvÿIDATxÚbC£: d#„„………h` @¡X",***LKˆ.–], ºX@t± €èb @ÑÅ€BµD„6–š%""´° € ˜% ˆ™B:H¢ˆ²Áf@• ˆRPy"K`\PbC(!II!h©…ëƒ(ñ„Ä!ꈬC„Ä…àl!0[X\J\$TMˆ(’>a$S„ Ù@ Ш@R.$‚¬LJBR¢‰AÌG1 ¬ Â(FȃÔPhhÁTÀ¢„%!`€&q°%u P ¹¢ ¬ € ¹CT$B¢à|‚ºW„¤Àl £!B`R$( …Ĉ‘’ž@AÅ%ĤÄ%@,(—ʂڱ%$ÁââRPmB U`1IˆYB  99€\1 yCCCÿf"[N 'Ü=TGÈ’øl8˜^Kû5<êSæRɤ”%î@@ à›Ê b1 qÅAXHˆ¸&ØB’R y n˜P„Ìã–4A €€j¹€€>Ü ˜ t!˜+(.ÈÅWQ±A2ÜÜMUÜ‚’’‚‚â `1 %`19€F< 3cZÄ`óe!\ˆ DÈ+. 83‹³Àä¸!lYYA -6‚EJŠ¢V €@©žXXX 4„å Ê@86Ð`RdB´€4I "Ý "–@xrÊŒ‚H€AÊ`—f ÉȰCŒ"XV0ɲ³C b@2…¬H ¬È“ p)!(ì‚ 0Ž4ˆ)(%RÁÎ ¶$€TÊ€¥Àþb‡b,säÐ@7À üѰ‚Òî?f¥Ö—\PIx!I´¦"”Ȉ’3¨ QY˜ÿt^^ÛØgv- }>WJOAV`$&#”¦8ùøø8€\FF ›SFJ$ÂÆ€ÐƊС䈉ÀÀ 4ª…Èäå -Á§‡ €H²…—ŸŸŸf ?ðâ5„ €k1Âd‰,ŒÃ ³ƒ“€.€"­F™ËË€àñ‚½ÁIÈ€"±Ù4ÉH gx|‚f©m)))9´. aMDƒ& ºX@t± €èb @ÑÅ€¢‹%DKˆ.–], ºX@t± €èb @€d`‚ɽSµOIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/DOMXPathNamespace_8hpp.html0000644000175000017500000000553311363620005022526 0ustar borisboris Xerces-C++: DOMXPathNamespace.hpp File Reference

    DOMXPathNamespace.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMXPathNamespace
     The DOMXPathNamespace interface is returned by DOMXPathResult interfaces to represent the XPath namespace node type that DOM lacks. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMXPATHNAMESPACE_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMXPATHNAMESPACE_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XSModel_8hpp-source.html0000644000175000017500000006130511363620005022135 0ustar borisboris Xerces-C++: XSModel.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/EmptyStackException_8hpp-source.html0000644000175000017500000001100211363620004024551 0ustar borisboris Xerces-C++: EmptyStackException.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classSAX2XMLFilter-members.html0000644000175000017500000003606511363620006023315 0ustar borisboris Xerces-C++: Member List

    SAX2XMLFilter Member List

    This is the complete list of members for SAX2XMLFilter, including all inherited members.

    getContentHandler() const =0SAX2XMLReader [pure virtual]
    getDeclarationHandler() const =0SAX2XMLReader [pure virtual]
    getDTDHandler() const =0SAX2XMLReader [pure virtual]
    getEntityResolver() const =0SAX2XMLReader [pure virtual]
    getErrorCount() const =0SAX2XMLReader [pure virtual]
    getErrorHandler() const =0SAX2XMLReader [pure virtual]
    getExitOnFirstFatalError() const =0SAX2XMLReader [pure virtual]
    getFeature(const XMLCh *const name) const =0SAX2XMLReader [pure virtual]
    getGrammar(const XMLCh *const nameSpaceKey)=0SAX2XMLReader [pure virtual]
    getLexicalHandler() const =0SAX2XMLReader [pure virtual]
    getParent() const =0SAX2XMLFilter [pure virtual]
    getProperty(const XMLCh *const name) const =0SAX2XMLReader [pure virtual]
    getRootGrammar()=0SAX2XMLReader [pure virtual]
    getSrcOffset() const =0SAX2XMLReader [pure virtual]
    getURIText(unsigned int uriId) const =0SAX2XMLReader [pure virtual]
    getValidationConstraintFatal() const =0SAX2XMLReader [pure virtual]
    getValidator() const =0SAX2XMLReader [pure virtual]
    installAdvDocHandler(XMLDocumentHandler *const toInstall)=0SAX2XMLReader [pure virtual]
    loadGrammar(const InputSource &source, const Grammar::GrammarType grammarType, const bool toCache=false)=0SAX2XMLReader [pure virtual]
    loadGrammar(const XMLCh *const systemId, const Grammar::GrammarType grammarType, const bool toCache=false)=0SAX2XMLReader [pure virtual]
    loadGrammar(const char *const systemId, const Grammar::GrammarType grammarType, const bool toCache=false)=0SAX2XMLReader [pure virtual]
    parse(const InputSource &source)=0SAX2XMLReader [pure virtual]
    parse(const XMLCh *const systemId)=0SAX2XMLReader [pure virtual]
    parse(const char *const systemId)=0SAX2XMLReader [pure virtual]
    parseFirst(const XMLCh *const systemId, XMLPScanToken &toFill)=0SAX2XMLReader [pure virtual]
    parseFirst(const char *const systemId, XMLPScanToken &toFill)=0SAX2XMLReader [pure virtual]
    parseFirst(const InputSource &source, XMLPScanToken &toFill)=0SAX2XMLReader [pure virtual]
    parseNext(XMLPScanToken &token)=0SAX2XMLReader [pure virtual]
    parseReset(XMLPScanToken &token)=0SAX2XMLReader [pure virtual]
    removeAdvDocHandler(XMLDocumentHandler *const toRemove)=0SAX2XMLReader [pure virtual]
    resetCachedGrammarPool()=0SAX2XMLReader [pure virtual]
    SAX2XMLFilter()SAX2XMLFilter
    SAX2XMLReader()SAX2XMLReader
    setContentHandler(ContentHandler *const handler)=0SAX2XMLReader [pure virtual]
    setDeclarationHandler(DeclHandler *const handler)=0SAX2XMLReader [pure virtual]
    setDTDHandler(DTDHandler *const handler)=0SAX2XMLReader [pure virtual]
    setEntityResolver(EntityResolver *const resolver)=0SAX2XMLReader [pure virtual]
    setErrorHandler(ErrorHandler *const handler)=0SAX2XMLReader [pure virtual]
    setExitOnFirstFatalError(const bool newState)=0SAX2XMLReader [pure virtual]
    setFeature(const XMLCh *const name, const bool value)=0SAX2XMLReader [pure virtual]
    setInputBufferSize(const XMLSize_t bufferSize)SAX2XMLReader [virtual]
    setLexicalHandler(LexicalHandler *const handler)=0SAX2XMLReader [pure virtual]
    setParent(SAX2XMLReader *parent)=0SAX2XMLFilter [pure virtual]
    setProperty(const XMLCh *const name, void *value)=0SAX2XMLReader [pure virtual]
    setValidationConstraintFatal(const bool newState)=0SAX2XMLReader [pure virtual]
    setValidator(XMLValidator *valueToAdopt)=0SAX2XMLReader [pure virtual]
    Val_Always enum valueSAX2XMLReader
    Val_Auto enum valueSAX2XMLReader
    Val_Never enum valueSAX2XMLReader
    ValSchemes enum nameSAX2XMLReader
    ~SAX2XMLFilter()SAX2XMLFilter [virtual]
    ~SAX2XMLReader()SAX2XMLReader [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMImplementationList_8hpp.html0000644000175000017500000000543711363620005023511 0ustar borisboris Xerces-C++: DOMImplementationList.hpp File Reference

    DOMImplementationList.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMImplementationList
     The DOMImplementationList interface provides the abstraction of an ordered collection of DOM implementations, without defining or constraining how this collection is implemented. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONLIST_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONLIST_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMNodeIterator.html0000644000175000017500000005443411363620005022357 0ustar borisboris Xerces-C++: DOMNodeIterator Class Reference

    DOMNodeIterator Class Reference

    DOMNodeIterators are used to step through a set of nodes, e.g. More...

    List of all members.

    Public Member Functions

    Destructor
    virtual ~DOMNodeIterator ()
     Destructor.
    Functions introduced in DOM Level 2
    virtual DOMNodegetRoot ()=0
     The root node of the DOMNodeIterator, as specified when it was created.
    virtual DOMNodeFilter::ShowType getWhatToShow ()=0
     Return which node types are presented via the iterator.
    virtual DOMNodeFiltergetFilter ()=0
     The DOMNodeFilter used to screen nodes.
    virtual bool getExpandEntityReferences ()=0
     Return the expandEntityReferences flag.
    virtual DOMNodenextNode ()=0
     Returns the next node in the set and advances the position of the DOMNodeIterator in the set.
    virtual DOMNodepreviousNode ()=0
     Returns the previous node in the set and moves the position of the DOMNodeIterator backwards in the set.
    virtual void detach ()=0
     Detaches the DOMNodeIterator from the set which it iterated over, releasing any computational resources and placing the DOMNodeIterator in the INVALID state.
    Non-standard Extension
    virtual void release ()=0
     Called to indicate that this NodeIterator is no longer in use and that the implementation may relinquish any resources associated with it.

    Protected Member Functions

    Hidden constructors
     DOMNodeIterator ()
     DOMNodeIterator (const DOMNodeIterator &)


    Detailed Description

    DOMNodeIterators are used to step through a set of nodes, e.g.

    the set of nodes in a DOMNodeList, the document subtree governed by a particular DOMNode, the results of a query, or any other set of nodes. The set of nodes to be iterated is determined by the implementation of the DOMNodeIterator. DOM Level 2 specifies a single DOMNodeIterator implementation for document-order traversal of a document subtree. Instances of these DOMNodeIterators are created by calling DOMDocumentTraversal.createNodeIterator().

    See also the Document Object Model (DOM) Level 2 Traversal and Range Specification.

    Since:
    DOM Level 2

    Constructor & Destructor Documentation

    DOMNodeIterator::DOMNodeIterator (  )  [protected]

    DOMNodeIterator::DOMNodeIterator ( const DOMNodeIterator  )  [protected]

    virtual DOMNodeIterator::~DOMNodeIterator (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual DOMNode* DOMNodeIterator::getRoot (  )  [pure virtual]

    The root node of the DOMNodeIterator, as specified when it was created.

    Since:
    DOM Level 2

    virtual DOMNodeFilter::ShowType DOMNodeIterator::getWhatToShow (  )  [pure virtual]

    Return which node types are presented via the iterator.

    This attribute determines which node types are presented via the DOMNodeIterator. The available set of constants is defined in the DOMNodeFilter interface. Nodes not accepted by whatToShow will be skipped, but their children may still be considered. Note that this skip takes precedence over the filter, if any.

    Since:
    DOM Level 2

    virtual DOMNodeFilter* DOMNodeIterator::getFilter (  )  [pure virtual]

    The DOMNodeFilter used to screen nodes.

    Since:
    DOM Level 2

    virtual bool DOMNodeIterator::getExpandEntityReferences (  )  [pure virtual]

    Return the expandEntityReferences flag.

    The value of this flag determines whether the children of entity reference nodes are visible to the DOMNodeIterator. If false, these children and their descendants will be rejected. Note that this rejection takes precedence over whatToShow and the filter. Also note that this is currently the only situation where DOMNodeIterators may reject a complete subtree rather than skipping individual nodes.

    To produce a view of the document that has entity references expanded and does not expose the entity reference node itself, use the whatToShow flags to hide the entity reference node and set expandEntityReferences to true when creating the DOMNodeIterator. To produce a view of the document that has entity reference nodes but no entity expansion, use the whatToShow flags to show the entity reference node and set expandEntityReferences to false.

    Since:
    DOM Level 2

    virtual DOMNode* DOMNodeIterator::nextNode (  )  [pure virtual]

    Returns the next node in the set and advances the position of the DOMNodeIterator in the set.

    After a DOMNodeIterator is created, the first call to nextNode() returns the first node in the set.

    Returns:
    The next DOMNode in the set being iterated over, or null if there are no more members in that set.
    Exceptions:
    DOMException INVALID_STATE_ERR: Raised if this method is called after the detach method was invoked.
    Since:
    DOM Level 2

    virtual DOMNode* DOMNodeIterator::previousNode (  )  [pure virtual]

    Returns the previous node in the set and moves the position of the DOMNodeIterator backwards in the set.

    Returns:
    The previous DOMNode in the set being iterated over, or null if there are no more members in that set.
    Exceptions:
    DOMException INVALID_STATE_ERR: Raised if this method is called after the detach method was invoked.
    Since:
    DOM Level 2

    virtual void DOMNodeIterator::detach (  )  [pure virtual]

    Detaches the DOMNodeIterator from the set which it iterated over, releasing any computational resources and placing the DOMNodeIterator in the INVALID state.

    After detach has been invoked, calls to nextNode or previousNode will raise the exception INVALID_STATE_ERR.

    Since:
    DOM Level 2

    virtual void DOMNodeIterator::release (  )  [pure virtual]

    Called to indicate that this NodeIterator is no longer in use and that the implementation may relinquish any resources associated with it.

    (release() will call detach() where appropriate)

    Access to a released object will lead to unexpected result.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMStringList_8hpp-source.html0000644000175000017500000002305511363620004023263 0ustar borisboris Xerces-C++: DOMStringList.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classContentHandler.html0000644000175000017500000011730211363620005022322 0ustar borisboris Xerces-C++: ContentHandler Class Reference

    ContentHandler Class Reference

    Receive notification of general document events. More...

    Inheritance diagram for ContentHandler:

    DefaultHandler

    List of all members.

    Public Member Functions

    Constructors and Destructor
     ContentHandler ()
     Default constructor.
    virtual ~ContentHandler ()
     Destructor.
    The virtual document handler interface
    virtual void characters (const XMLCh *const chars, const XMLSize_t length)=0
     Receive notification of character data.
    virtual void endDocument ()=0
     Receive notification of the end of a document.
    virtual void endElement (const XMLCh *const uri, const XMLCh *const localname, const XMLCh *const qname)=0
     Receive notification of the end of an element.
    virtual void ignorableWhitespace (const XMLCh *const chars, const XMLSize_t length)=0
     Receive notification of ignorable whitespace in element content.
    virtual void processingInstruction (const XMLCh *const target, const XMLCh *const data)=0
     Receive notification of a processing instruction.
    virtual void setDocumentLocator (const Locator *const locator)=0
     Receive an object for locating the origin of SAX document events.
    virtual void startDocument ()=0
     Receive notification of the beginning of a document.
    virtual void startElement (const XMLCh *const uri, const XMLCh *const localname, const XMLCh *const qname, const Attributes &attrs)=0
     Receive notification of the beginning of an element.
    virtual void startPrefixMapping (const XMLCh *const prefix, const XMLCh *const uri)=0
     Receive notification of the start of an namespace prefix mapping.
    virtual void endPrefixMapping (const XMLCh *const prefix)=0
     Receive notification of the end of an namespace prefix mapping.
    virtual void skippedEntity (const XMLCh *const name)=0
     Receive notification of a skipped entity.


    Detailed Description

    Receive notification of general document events.

    This is the main interface that most SAX2 applications implement: if the application needs to be informed of basic parsing events, it implements this interface and registers an instance with the SAX2 parser using the setDocumentHandler method. The parser uses the instance to report basic document-related events like the start and end of elements and character data.

    The order of events in this interface is very important, and mirrors the order of information in the document itself. For example, all of an element's content (character data, processing instructions, and/or subelements) will appear, in order, between the startElement event and the corresponding endElement event.

    Application writers who do not want to implement the entire interface while can derive a class from Sax2HandlerBase, which implements the default functionality; parser writers can instantiate Sax2HandlerBase to obtain a default handler. The application can find the location of any document event using the Locator interface supplied by the Parser through the setDocumentLocator method.

    See also:
    Parser::setDocumentHandler

    Locator::Locator

    Sax2HandlerBase::Sax2HandlerBase


    Constructor & Destructor Documentation

    ContentHandler::ContentHandler (  ) 

    Default constructor.

    virtual ContentHandler::~ContentHandler (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual void ContentHandler::characters ( const XMLCh *const   chars,
    const XMLSize_t  length 
    ) [pure virtual]

    Receive notification of character data.

    The Parser will call this method to report each chunk of character data. SAX parsers may return all contiguous character data in a single chunk, or they may split it into several chunks; however, all of the characters in any single event must come from the same external entity, so that the Locator provides useful information.

    The application must not attempt to read from the array outside of the specified range.

    Note that some parsers will report whitespace using the ignorableWhitespace() method rather than this one (validating parsers must do so).

    Parameters:
    chars The characters from the XML document.
    length The number of characters to read from the array.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    See also:
    ignorableWhitespace

    Locator::Locator

    Implemented in DefaultHandler.

    virtual void ContentHandler::endDocument (  )  [pure virtual]

    Receive notification of the end of a document.

    The SAX parser will invoke this method only once, and it will be the last method invoked during the parse. The parser shall not invoke this method until it has either abandoned parsing (because of an unrecoverable error) or reached the end of input.

    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.

    Implemented in DefaultHandler.

    virtual void ContentHandler::endElement ( const XMLCh *const   uri,
    const XMLCh *const   localname,
    const XMLCh *const   qname 
    ) [pure virtual]

    Receive notification of the end of an element.

    The SAX parser will invoke this method at the end of every element in the XML document; there will be a corresponding startElement() event for every endElement() event (even when the element is empty).

    Parameters:
    uri The URI of the associated namespace for this element
    localname The local part of the element name
    qname The QName of this element
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.

    Implemented in DefaultHandler.

    virtual void ContentHandler::ignorableWhitespace ( const XMLCh *const   chars,
    const XMLSize_t  length 
    ) [pure virtual]

    Receive notification of ignorable whitespace in element content.

    Validating Parsers must use this method to report each chunk of ignorable whitespace (see the W3C XML 1.0 recommendation, section 2.10): non-validating parsers may also use this method if they are capable of parsing and using content models.

    SAX parsers may return all contiguous whitespace in a single chunk, or they may split it into several chunks; however, all of the characters in any single event must come from the same external entity, so that the Locator provides useful information.

    The application must not attempt to read from the array outside of the specified range.

    Parameters:
    chars The characters from the XML document.
    length The number of characters to read from the array.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    See also:
    characters

    Implemented in DefaultHandler.

    virtual void ContentHandler::processingInstruction ( const XMLCh *const   target,
    const XMLCh *const   data 
    ) [pure virtual]

    Receive notification of a processing instruction.

    The Parser will invoke this method once for each processing instruction found: note that processing instructions may occur before or after the main document element.

    A SAX parser should never report an XML declaration (XML 1.0, section 2.8) or a text declaration (XML 1.0, section 4.3.1) using this method.

    Parameters:
    target The processing instruction target.
    data The processing instruction data, or null if none was supplied.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.

    Implemented in DefaultHandler.

    virtual void ContentHandler::setDocumentLocator ( const Locator *const   locator  )  [pure virtual]

    Receive an object for locating the origin of SAX document events.

    SAX parsers are strongly encouraged (though not absolutely required) to supply a locator: if it does so, it must supply the locator to the application by invoking this method before invoking any of the other methods in the DocumentHandler interface.

    The locator allows the application to determine the end position of any document-related event, even if the parser is not reporting an error. Typically, the application will use this information for reporting its own errors (such as character content that does not match an application's business rules). The information returned by the locator is probably not sufficient for use with a search engine.

    Note that the locator will return correct information only during the invocation of the events in this interface. The application should not attempt to use it at any other time.

    Parameters:
    locator An object that can return the location of any SAX document event. The object is only 'on loan' to the client code and they are not to attempt to delete or modify it in any way!
    See also:
    Locator::Locator

    Implemented in DefaultHandler.

    virtual void ContentHandler::startDocument (  )  [pure virtual]

    Receive notification of the beginning of a document.

    The SAX parser will invoke this method only once, before any other methods in this interface or in DTDHandler (except for setDocumentLocator).

    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.

    Implemented in DefaultHandler.

    virtual void ContentHandler::startElement ( const XMLCh *const   uri,
    const XMLCh *const   localname,
    const XMLCh *const   qname,
    const Attributes attrs 
    ) [pure virtual]

    Receive notification of the beginning of an element.

    The Parser will invoke this method at the beginning of every element in the XML document; there will be a corresponding endElement() event for every startElement() event (even when the element is empty). All of the element's content will be reported, in order, before the corresponding endElement() event.

    Note that the attribute list provided will contain only attributes with explicit values (specified or defaulted): #IMPLIED attributes will be omitted.

    Parameters:
    uri The URI of the associated namespace for this element
    localname The local part of the element name
    qname The QName of this element
    attrs The attributes attached to the element, if any.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    See also:
    endElement

    Attributes::Attributes

    Implemented in DefaultHandler.

    virtual void ContentHandler::startPrefixMapping ( const XMLCh *const   prefix,
    const XMLCh *const   uri 
    ) [pure virtual]

    Receive notification of the start of an namespace prefix mapping.

    By default, do nothing. Application writers may override this method in a subclass to take specific actions at the start of each namespace prefix mapping.

    Parameters:
    prefix The namespace prefix used
    uri The namespace URI used.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.

    Implemented in DefaultHandler.

    virtual void ContentHandler::endPrefixMapping ( const XMLCh *const   prefix  )  [pure virtual]

    Receive notification of the end of an namespace prefix mapping.

    By default, do nothing. Application writers may override this method in a subclass to take specific actions at the end of each namespace prefix mapping.

    Parameters:
    prefix The namespace prefix used
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.

    Implemented in DefaultHandler.

    virtual void ContentHandler::skippedEntity ( const XMLCh *const   name  )  [pure virtual]

    Receive notification of a skipped entity.

    The parser will invoke this method once for each entity skipped. All processors may skip external entities, depending on the values of the features:
    http://xml.org/sax/features/external-general-entities
    http://xml.org/sax/features/external-parameter-entities

    Note: Xerces (specifically) never skips any entities, regardless of the above features. This function is never called in the Xerces implementation of SAX2.

    Introduced with SAX2

    Parameters:
    name The name of the skipped entity. If it is a parameter entity, the name will begin with %, and if it is the external DTD subset, it will be the string [dtd].
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.

    Implemented in DefaultHandler.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLValidityCodes_8hpp.html0000644000175000017500000000436311363620005022451 0ustar borisboris Xerces-C++: XMLValidityCodes.hpp File Reference

    XMLValidityCodes.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLValid

    Defines

    #define XERCESC_INCLUDE_GUARD_ERRHEADER_XMLValid


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_ERRHEADER_XMLValid


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/SecurityManager_8hpp-source.html0000644000175000017500000002021611363620004023717 0ustar borisboris Xerces-C++: SecurityManager.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMImplementation.html0000644000175000017500000006761111363620005022746 0ustar borisboris Xerces-C++: DOMImplementation Class Reference

    DOMImplementation Class Reference

    The DOMImplementation interface provides a number of methods for performing operations that are independent of any particular instance of the document object model. More...

    Inheritance diagram for DOMImplementation:

    DOMImplementationLS

    List of all members.

    Non-standard extension

    virtual DOMDocumentcreateDocument (MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)=0
     Non-standard extension.
    static DOMImplementationgetImplementation ()
     Non-standard extension.
    static bool loadDOMExceptionMsg (const short msgToLoad, XMLCh *const toFill, const XMLSize_t maxChars)
     Non-standard extension.

    Public Member Functions

    Destructor
    virtual ~DOMImplementation ()
     Destructor.
    Functions introduced in DOM Level 1
    virtual bool hasFeature (const XMLCh *feature, const XMLCh *version) const =0
     Test if the DOM implementation implements a specific feature.
    Functions introduced in DOM Level 2
    virtual DOMDocumentTypecreateDocumentType (const XMLCh *qualifiedName, const XMLCh *publicId, const XMLCh *systemId)=0
     Creates an empty DOMDocumentType node.
    virtual DOMDocumentcreateDocument (const XMLCh *namespaceURI, const XMLCh *qualifiedName, DOMDocumentType *doctype, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)=0
     Creates a DOMDocument object of the specified type with its document element.
    Functions introduced in DOM Level 3
    virtual void * getFeature (const XMLCh *feature, const XMLCh *version) const =0
     This method returns a specialized object which implements the specialized APIs of the specified feature and version, as specified in DOM Features.

    Protected Member Functions

    Hidden constructors
     DOMImplementation ()


    Detailed Description

    The DOMImplementation interface provides a number of methods for performing operations that are independent of any particular instance of the document object model.

    Constructor & Destructor Documentation

    DOMImplementation::DOMImplementation (  )  [protected]

    virtual DOMImplementation::~DOMImplementation (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual bool DOMImplementation::hasFeature ( const XMLCh feature,
    const XMLCh version 
    ) const [pure virtual]

    Test if the DOM implementation implements a specific feature.

    Parameters:
    feature The name of the feature to test (case-insensitive). The values used by DOM features are defined throughout the DOM Level 2 specifications and listed in the section. The name must be an XML name. To avoid possible conflicts, as a convention, names referring to features defined outside the DOM specification should be made unique.
    version This is the version number of the feature to test. In Level 2, the string can be either "2.0" or "1.0". If the version is not specified, supporting any version of the feature causes the method to return true.
    Returns:
    true if the feature is implemented in the specified version, false otherwise.
    Since:
    DOM Level 1

    virtual DOMDocumentType* DOMImplementation::createDocumentType ( const XMLCh qualifiedName,
    const XMLCh publicId,
    const XMLCh systemId 
    ) [pure virtual]

    Creates an empty DOMDocumentType node.

    Entity declarations and notations are not made available. Entity reference expansions and default attribute additions do not occur. It is expected that a future version of the DOM will provide a way for populating a DOMDocumentType.

    Parameters:
    qualifiedName The qualified name of the document type to be created.
    publicId The external subset public identifier.
    systemId The external subset system identifier.
    Returns:
    A new DOMDocumentType node with ownerDocument set to null.
    Exceptions:
    DOMException INVALID_CHARACTER_ERR: Raised if the specified qualified name contains an illegal character.
    NAMESPACE_ERR: Raised if the qualifiedName is malformed.
    NOT_SUPPORTED_ERR: May be raised by DOM implementations which do not support the "XML" feature, if they choose not to support this method. Other features introduced in the future, by the DOM WG or in extensions defined by other groups, may also demand support for this method; please consult the definition of the feature to see if it requires this method.
    Since:
    DOM Level 2

    virtual DOMDocument* DOMImplementation::createDocument ( const XMLCh namespaceURI,
    const XMLCh qualifiedName,
    DOMDocumentType doctype,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [pure virtual]

    Creates a DOMDocument object of the specified type with its document element.

    Parameters:
    namespaceURI The namespace URI of the document element to create.
    qualifiedName The qualified name of the document element to be created.
    doctype The type of document to be created or null. When doctype is not null, its ownerDocument attribute is set to the document being created.
    manager Pointer to the memory manager to be used to allocate objects.
    Returns:
    A new DOMDocument object.
    Exceptions:
    DOMException INVALID_CHARACTER_ERR: Raised if the specified qualified name contains an illegal character.
    NAMESPACE_ERR: Raised if the qualifiedName is malformed, if the qualifiedName has a prefix and the namespaceURI is null, or if the qualifiedName has a prefix that is "xml" and the namespaceURI is different from " http://www.w3.org/XML/1998/namespace" , or if the DOM implementation does not support the "XML" feature but a non-null namespace URI was provided, since namespaces were defined by XML.
    WRONG_DOCUMENT_ERR: Raised if doctype has already been used with a different document or was created from a different implementation.
    NOT_SUPPORTED_ERR: May be raised by DOM implementations which do not support the "XML" feature, if they choose not to support this method. Other features introduced in the future, by the DOM WG or in extensions defined by other groups, may also demand support for this method; please consult the definition of the feature to see if it requires this method.
    Since:
    DOM Level 2

    virtual void* DOMImplementation::getFeature ( const XMLCh feature,
    const XMLCh version 
    ) const [pure virtual]

    This method returns a specialized object which implements the specialized APIs of the specified feature and version, as specified in DOM Features.

    This method also allow the implementation to provide specialized objects which do not support the DOMImplementation interface.

    Parameters:
    feature The name of the feature requested (case-insensitive). Note that any plus sign "+" prepended to the name of the feature will be ignored since it is not significant in the context of this method.
    version This is the version number of the feature to test.
    Returns:
    Returns an object which implements the specialized APIs of the specified feature and version, if any, or null if there is no object which implements interfaces associated with that feature.
    Since:
    DOM Level 3

    virtual DOMDocument* DOMImplementation::createDocument ( MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager  )  [pure virtual]

    Non-standard extension.

    Create a completely empty document that has neither a root element or a doctype node.

    static DOMImplementation* DOMImplementation::getImplementation (  )  [static]

    Non-standard extension.

    Factory method for getting a DOMImplementation object. The DOM implementation retains ownership of the returned object. Application code should NOT delete it.

    static bool DOMImplementation::loadDOMExceptionMsg ( const short  msgToLoad,
    XMLCh *const   toFill,
    const XMLSize_t  maxChars 
    ) [static]

    Non-standard extension.

    Load the default error text message for DOMException.

    Parameters:
    msgToLoad The DOM ExceptionCode id to be processed
    toFill The buffer that will hold the output on return. The size of this buffer should at least be 'maxChars + 1'.
    maxChars The maximum number of output characters that can be accepted. If the result will not fit, it is an error.
    Returns:
    true if the message is successfully loaded


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSMultiValueFacet.png0000644000175000017500000000104011363620006022527 0ustar borisboris‰PNG  IHDRyˆ1YÆPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf¶IDAThí˜]’ƒ €ÉË>n€'ØÙ½PŸzÿ#lþD­¶…ÒŽ:›Àˆ¿$tHÃo‡|‡ŸáuqºH¢š©Í/Ñ™ ©ÀN:SÍä µCJ‰½zJÓƒ —rBiIW%Mžh©¥TÚ¦Kô:Œ÷æ-tâN¡s-ž×ѺÞRPmK̇õ´›öZ½±÷èµé£½c§¡û¾Èåòdüƒô×u?úz½ìFïs§vÚi§OC{>vZNâHGòŒIÆãñ¶!7Ðt`A´Ðj6gI§$'ÃÚœˆA¥53ÉÕ9‘zˆF…®ó\l[&k4b5=Fmn{h¦5æ­ó^®÷,æ¹*æêîÈÇéÿ ì; íùØÛiÏÇœvÚi§>8Cìðì_ÓÀ,‚¢-W° yFB±¥@ Qé°¢—^ÞÒAir#DŒ¦¹GÅ<£>ßRCW£Ô(#JƒiŒv+?ª½“mU7è0£yo…‚M4Ø#@˜hñ¦ˆ©ç‚!ÆuÔÖôäy˜<¶P·´Ž¢"ZeñÍ{¶Þ^y^i@ò€;%æ`1‡ø–½æô©è®/ò3ÁªÒ̾IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classXMLUri.html0000644000175000017500000012546311363620006020542 0ustar borisboris Xerces-C++: XMLUri Class Reference

    XMLUri Class Reference

    Inheritance diagram for XMLUri:

    XMemory

    List of all members.

    Public Member Functions

     XMLUri (const XMLCh *const uriSpec, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Construct a new URI from a URI specification string.
     XMLUri (const XMLUri *const baseURI, const XMLCh *const uriSpec, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Construct a new URI from a base URI and a URI specification string.
     XMLUri (const XMLUri &toCopy)
     Copy constructor.
    XMLUrioperator= (const XMLUri &toAssign)
    virtual ~XMLUri ()
    const XMLChgetUriText () const
     Get the URI as a string specification.
    const XMLChgetScheme () const
     Get the scheme for this URI.
    const XMLChgetUserInfo () const
     Get the userinfo for this URI.
    const XMLChgetHost () const
     Get the host for this URI.
    int getPort () const
     Get the port for this URI.
    const XMLChgetRegBasedAuthority () const
     Get the registry based authority for this URI.
    const XMLChgetPath () const
     Get the path for this URI.
    const XMLChgetQueryString () const
     Get the query string for this URI.
    const XMLChgetFragment () const
     Get the fragment for this URI.
    void setScheme (const XMLCh *const newScheme)
     Set the scheme for this URI.
    void setUserInfo (const XMLCh *const newUserInfo)
     Set the userinfo for this URI.
    void setHost (const XMLCh *const newHost)
     Set the host for this URI.
    void setPort (int newPort)
     Set the port for this URI.
    void setRegBasedAuthority (const XMLCh *const newRegAuth)
     Sets the registry based authority for this URI.
    void setPath (const XMLCh *const newPath)
     Set the path for this URI.
    void setQueryString (const XMLCh *const newQueryString)
     Set the query string for this URI.
    void setFragment (const XMLCh *const newFragment)
     Set the fragment for this URI.
     XMLUri (MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)

    Static Public Member Functions

    static bool isURIString (const XMLCh *const uric)
     Determine whether a given string contains only URI characters (also called "uric" in RFC 2396).
    static bool isValidURI (const XMLUri *const baseURI, const XMLCh *const uriStr, bool bAllowSpaces=false)
     Determine whether a given string is a valid URI.
    static bool isValidURI (bool haveBaseURI, const XMLCh *const uriStr, bool bAllowSpaces=false)
     Determine whether a given string is a valid URI.
    static void normalizeURI (const XMLCh *const systemURI, XMLBuffer &normalizedURI)


    Constructor & Destructor Documentation

    XMLUri::XMLUri ( const XMLCh *const   uriSpec,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    Construct a new URI from a URI specification string.

    If the specification follows the "generic URI" syntax, (two slashes following the first colon), the specification will be parsed accordingly - setting the scheme, userinfo, host, port, path, querystring and fragment fields as necessary.

    If the specification does not follow the "generic URI" syntax, the specification is parsed into a scheme and scheme-specific part (stored as the path) only.

    Parameters:
    uriSpec the URI specification string (cannot be null or empty)
    manager Pointer to the memory manager to be used to allocate objects.
    ctor# 2

    XMLUri::XMLUri ( const XMLUri *const   baseURI,
    const XMLCh *const   uriSpec,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    Construct a new URI from a base URI and a URI specification string.

    The URI specification string may be a relative URI.

    Parameters:
    baseURI the base URI (cannot be null if uriSpec is null or empty)
    uriSpec the URI specification string (cannot be null or empty if base is null)
    manager Pointer to the memory manager to be used to allocate objects.
    ctor# 7 relative ctor

    XMLUri::XMLUri ( const XMLUri toCopy  ) 

    Copy constructor.

    virtual XMLUri::~XMLUri (  )  [virtual]

    XMLUri::XMLUri ( MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager  ) 


    Member Function Documentation

    XMLUri& XMLUri::operator= ( const XMLUri toAssign  ) 

    const XMLCh * XMLUri::getUriText (  )  const

    Get the URI as a string specification.

    See RFC 2396 Section 5.2.

    Returns:
    the URI string specification

    const XMLCh * XMLUri::getScheme (  )  const

    Get the scheme for this URI.

    Returns:
    the scheme for this URI

    const XMLCh * XMLUri::getUserInfo (  )  const

    Get the userinfo for this URI.

    Returns:
    the userinfo for this URI (null if not specified).

    const XMLCh * XMLUri::getHost (  )  const

    Get the host for this URI.

    Returns:
    the host for this URI (null if not specified).

    int XMLUri::getPort (  )  const

    Get the port for this URI.

    Returns:
    the port for this URI (-1 if not specified).

    const XMLCh * XMLUri::getRegBasedAuthority (  )  const

    Get the registry based authority for this URI.

    Returns:
    the registry based authority (null if not specified).

    const XMLCh * XMLUri::getPath (  )  const

    Get the path for this URI.

    Note that the value returned is the path only and does not include the query string or fragment.

    Returns:
    the path for this URI.

    const XMLCh * XMLUri::getQueryString (  )  const

    Get the query string for this URI.

    Returns:
    the query string for this URI. Null is returned if there was no "?" in the URI spec, empty string if there was a "?" but no query string following it.

    const XMLCh * XMLUri::getFragment (  )  const

    Get the fragment for this URI.

    Returns:
    the fragment for this URI. Null is returned if there was no "#" in the URI spec, empty string if there was a "#" but no fragment following it.

    void XMLUri::setScheme ( const XMLCh *const   newScheme  ) 

    Set the scheme for this URI.

    The scheme is converted to lowercase before it is set.

    Parameters:
    newScheme the scheme for this URI (cannot be null)

    void XMLUri::setUserInfo ( const XMLCh *const   newUserInfo  ) 

    Set the userinfo for this URI.

    If a non-null value is passed in and the host value is null, then an exception is thrown.

    Parameters:
    newUserInfo the userinfo for this URI

    void XMLUri::setHost ( const XMLCh *const   newHost  ) 

    Set the host for this URI.

    If null is passed in, the userinfo field is also set to null and the port is set to -1.

    Note: This method overwrites registry based authority if it previously existed in this URI.

    Parameters:
    newHost the host for this URI

    void XMLUri::setPort ( int  newPort  ) 

    Set the port for this URI.

    -1 is used to indicate that the port is not specified, otherwise valid port numbers are between 0 and 65535. If a valid port number is passed in and the host field is null, an exception is thrown.

    Parameters:
    newPort the port number for this URI

    void XMLUri::setRegBasedAuthority ( const XMLCh *const   newRegAuth  ) 

    Sets the registry based authority for this URI.

    Note: This method overwrites server based authority if it previously existed in this URI.

    Parameters:
    newRegAuth the registry based authority for this URI

    void XMLUri::setPath ( const XMLCh *const   newPath  ) 

    Set the path for this URI.

    If the supplied path is null, then the query string and fragment are set to null as well.

    If the supplied path includes a query string and/or fragment, these fields will be parsed and set as well.

    Note:

    For URIs following the "generic URI" syntax, the path specified should start with a slash.

    For URIs that do not follow the generic URI syntax, this method sets the scheme-specific part.

    Parameters:
    newPath the path for this URI (may be null)

    void XMLUri::setQueryString ( const XMLCh *const   newQueryString  ) 

    Set the query string for this URI.

    A non-null value is valid only if this is an URI conforming to the generic URI syntax and the path value is not null.

    Parameters:
    newQueryString the query string for this URI

    void XMLUri::setFragment ( const XMLCh *const   newFragment  ) 

    Set the fragment for this URI.

    A non-null value is valid only if this is a URI conforming to the generic URI syntax and the path value is not null.

    Parameters:
    newFragment the fragment for this URI

    static bool XMLUri::isURIString ( const XMLCh *const   uric  )  [static]

    Determine whether a given string contains only URI characters (also called "uric" in RFC 2396).

    uric consist of all reserved characters, unreserved characters and escaped characters.

    Returns:
    true if the string is comprised of uric, false otherwise

    static bool XMLUri::isValidURI ( const XMLUri *const   baseURI,
    const XMLCh *const   uriStr,
    bool  bAllowSpaces = false 
    ) [static]

    Determine whether a given string is a valid URI.

    static bool XMLUri::isValidURI ( bool  haveBaseURI,
    const XMLCh *const   uriStr,
    bool  bAllowSpaces = false 
    ) [static]

    Determine whether a given string is a valid URI.

    static void XMLUri::normalizeURI ( const XMLCh *const   systemURI,
    XMLBuffer &  normalizedURI 
    ) [static]


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLNumber-members.html0000644000175000017500000001567311363620006022664 0ustar borisboris Xerces-C++: Member List

    XMLNumber Member List

    This is the complete list of members for XMLNumber, including all inherited members.

    BigDecimal enum valueXMLNumber
    DateTime enum valueXMLNumber
    Double enum valueXMLNumber
    EQUAL enum valueXMLNumber
    Float enum valueXMLNumber
    getFormattedString() const =0XMLNumber [pure virtual]
    getRawData() const =0XMLNumber [pure virtual]
    getSign() const =0XMLNumber [pure virtual]
    GREATER_THAN enum valueXMLNumber
    INDETERMINATE enum valueXMLNumber
    LESS_THAN enum valueXMLNumber
    loadNumber(XMLNumber::NumberType numType, XSerializeEngine &serEng)XMLNumber [static]
    NumberType enum nameXMLNumber
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    UnKnown enum valueXMLNumber
    XMemory()XMemory [protected]
    XMLNumber()XMLNumber [protected]
    XMLNumber(const XMLNumber &)XMLNumber [protected]
    ~XMLNumber()XMLNumber [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMXPathResult.html0000644000175000017500000011465711363620006022210 0ustar borisboris Xerces-C++: DOMXPathResult Class Reference

    DOMXPathResult Class Reference

    The DOMXPathResult interface represents the result of the evaluation of an XPath 1.0 or XPath 2.0 expression within the context of a particular node. More...

    List of all members.

    Public Types

    Public Constants
    enum  ResultType {
      ANY_TYPE = 0, NUMBER_TYPE = 1, STRING_TYPE = 2, BOOLEAN_TYPE = 3,
      UNORDERED_NODE_ITERATOR_TYPE = 4, ORDERED_NODE_ITERATOR_TYPE = 5, UNORDERED_NODE_SNAPSHOT_TYPE = 6, ORDERED_NODE_SNAPSHOT_TYPE = 7,
      ANY_UNORDERED_NODE_TYPE = 8, FIRST_ORDERED_NODE_TYPE = 9, FIRST_RESULT_TYPE = 100, ITERATOR_RESULT_TYPE = 101,
      SNAPSHOT_RESULT_TYPE = 102
    }

    Public Member Functions

    Destructor
    virtual ~DOMXPathResult ()
     Destructor.
    Functions introduced in DOM Level 3
    virtual ResultType getResultType () const =0
     Returns the result type of this result.
    virtual const DOMTypeInfogetTypeInfo () const =0
     Returns the DOM type info of the current result node or value (XPath 2 only).
    virtual bool isNode () const =0
     Returns true if the result has a current result and the value is a node (XPath 2 only).
    virtual bool getBooleanValue () const =0
     Returns the boolean value of this result.
    virtual int getIntegerValue () const =0
     Returns the integer value of this result (XPath 2 only).
    virtual double getNumberValue () const =0
     Returns the number value of this result.
    virtual const XMLChgetStringValue () const =0
     Returns the string value of this result.
    virtual DOMNodegetNodeValue () const =0
     Returns the node value of this result.
    virtual bool iterateNext ()=0
     Iterates and returns true if the current result is the next item from the sequence or false if there are no more items.
    virtual bool getInvalidIteratorState () const =0
     Signifies that the iterator has become invalid.
    virtual bool snapshotItem (XMLSize_t index)=0
     Sets the current result to the indexth item in the snapshot collection.
    virtual XMLSize_t getSnapshotLength () const =0
     The number of items in the result snapshot.
    Non-standard Extension
    virtual void release ()=0
     Called to indicate that this DOMXPathResult is no longer in use and that the implementation may relinquish any resources associated with it.

    Protected Member Functions

    Hidden constructors
     DOMXPathResult ()


    Detailed Description

    The DOMXPathResult interface represents the result of the evaluation of an XPath 1.0 or XPath 2.0 expression within the context of a particular node.

    Since evaluation of an XPath expression can result in various result types, this object makes it possible to discover and manipulate the type and value of the result.

    Note that some function signatures were changed compared to the DOM Level 3 in order to accommodate XPath 2.0.

    Since:
    DOM Level 3

    Member Enumeration Documentation

    ANY_TYPE
    [XPath 1.0] This code does not represent a specific type. An evaluation of an XPath expression will never produce this type. If this type is requested, then the evaluation returns whatever type naturally results from evaluation of the expression. If the natural result is a node set when ANY_TYPE was requested, then UNORDERED_NODE_ITERATOR_TYPE is always the resulting type. Any other representation of a node set must be explicitly requested.

    ANY_UNORDERED_NODE_TYPE
    [XPath 1.0] The result is a node set as defined by XPath 1.0 and will be accessed as a single node, which may be null if the node set is empty. Document modification does not invalidate the node, but may mean that the result node no longer corresponds to the current document. This is a convenience that permits optimization since the implementation can stop once any node in the resulting set has been found. If there is more than one node in the actual result, the single node returned might not be the first in document order.

    BOOLEAN_TYPE
    [XPath 1.0] The result is a boolean as defined by XPath 1.0. Document modification does not invalidate the boolean, but may mean that reevaluation would not yield the same boolean.

    FIRST_ORDERED_NODE_TYPE
    [XPath 1.0] The result is a node set as defined by XPath 1.0 and will be accessed as a single node, which may be null if the node set is empty. Document modification does not invalidate the node, but may mean that the result node no longer corresponds to the current document. This is a convenience that permits optimization since the implementation can stop once the first node in document order of the resulting set has been found. If there are more than one node in the actual result, the single node returned will be the first in document order.

    NUMBER_TYPE
    [XPath 1.0] The result is a number as defined by XPath 1.0. Document modification does not invalidate the number, but may mean that reevaluation would not yield the same number.

    ORDERED_NODE_ITERATOR_TYPE
    [XPath 1.0] The result is a node set as defined by XPath 1.0 that will be accessed iteratively, which will produce document-ordered nodes. Document modification invalidates the iteration.

    ORDERED_NODE_SNAPSHOT_TYPE
    [XPath 1.0] The result is a node set as defined by XPath 1.0 that will be accessed as a snapshot list of nodes that will be in original document order. Document modification does not invalidate the snapshot but may mean that reevaluation would not yield the same snapshot and nodes in the snapshot may have been altered, moved, or removed from the document.

    STRING_TYPE
    [XPath 1.0] The result is a string as defined by XPath 1.0. Document modification does not invalidate the string, but may mean that the string no longer corresponds to the current document.

    UNORDERED_NODE_ITERATOR_TYPE
    [XPath 1.0] The result is a node set as defined by XPath 1.0 that will be accessed iteratively, which may not produce nodes in a particular order. Document modification invalidates the iteration. This is the default type returned if the result is a node set and ANY_TYPE is requested.

    UNORDERED_NODE_SNAPSHOT_TYPE
    [XPath 1.0] The result is a node set as defined by XPath 1.0 that will be accessed as a snapshot list of nodes that may not be in a particular order. Document modification does not invalidate the snapshot but may mean that reevaluation would not yield the same snapshot and nodes in the snapshot may have been altered, moved, or removed from the document.

    FIRST_RESULT_TYPE
    [XPath 2.0] The result is a sequence as defined by XPath 2.0 and will be accessed as a single current value or there will be no current value if the sequence is empty. Document modification does not invalidate the value, but may mean that the result no longer corresponds to the current document. This is a convenience that permits optimization since the implementation can stop once the first item in the resulting sequence has been found. If there is more than one item in the actual result, the single item returned might not be the first in document order.

    ITERATOR_RESULT_TYPE
    [XPath 2.0] The result is a sequence as defined by XPath 2.0 that will be accessed iteratively. Document modification invalidates the iteration.

    SNAPSHOT_RESULT_TYPE
    [XPath 2.0] The result is a sequence as defined by XPath 2.0 that will be accessed as a snapshot list of values. Document modification does not invalidate the snapshot but may mean that reevaluation would not yield the same snapshot and any items in the snapshot may have been altered, moved, or removed from the document.

    Enumerator:
    ANY_TYPE 
    NUMBER_TYPE 
    STRING_TYPE 
    BOOLEAN_TYPE 
    UNORDERED_NODE_ITERATOR_TYPE 
    ORDERED_NODE_ITERATOR_TYPE 
    UNORDERED_NODE_SNAPSHOT_TYPE 
    ORDERED_NODE_SNAPSHOT_TYPE 
    ANY_UNORDERED_NODE_TYPE 
    FIRST_ORDERED_NODE_TYPE 
    FIRST_RESULT_TYPE 
    ITERATOR_RESULT_TYPE 
    SNAPSHOT_RESULT_TYPE 


    Constructor & Destructor Documentation

    DOMXPathResult::DOMXPathResult (  )  [protected]

    virtual DOMXPathResult::~DOMXPathResult (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual ResultType DOMXPathResult::getResultType (  )  const [pure virtual]

    Returns the result type of this result.

    Returns:
    ResultType A code representing the type of this result, as defined by the type constants.

    virtual const DOMTypeInfo* DOMXPathResult::getTypeInfo (  )  const [pure virtual]

    Returns the DOM type info of the current result node or value (XPath 2 only).

    Returns:
    typeInfo of type TypeInfo, readonly

    virtual bool DOMXPathResult::isNode (  )  const [pure virtual]

    Returns true if the result has a current result and the value is a node (XPath 2 only).

    This function is necessary to distinguish between a string value and a node of type string as returned by the getTypeInfo() function.

    Returns:
    isNode of type boolean, readonly

    virtual bool DOMXPathResult::getBooleanValue (  )  const [pure virtual]

    Returns the boolean value of this result.

    Returns:
    booleanValue of type boolean The value of this boolean result.
    Exceptions:
    DOMXPathException TYPE_ERR: raised if ResultType is not BOOLEAN_TYPE (XPath 1.0) or if current result cannot be properly converted to boolean (XPath 2.0).
    NO_RESULT_ERROR: raised if there is no current result in the result object (XPath 2.0).

    virtual int DOMXPathResult::getIntegerValue (  )  const [pure virtual]

    Returns the integer value of this result (XPath 2 only).

    Returns:
    integerValue of type int The value of this integer result.
    Exceptions:
    DOMXPathException TYPE_ERR: raised if current result cannot be properly converted to int (XPath 2.0).
    NO_RESULT_ERROR: raised if there is no current result in the result object (XPath 2.0).

    virtual double DOMXPathResult::getNumberValue (  )  const [pure virtual]

    Returns the number value of this result.

    Returns:
    numberValue The value of this number result. If the native double type of the DOM binding does not directly support the exact IEEE 754 result of the XPath expression, then it is up to the definition of the binding to specify how the XPath number is converted to the native binding number.
    Exceptions:
    DOMXPathException TYPE_ERR: raised if ResultType is not NUMBER_TYPE (XPath 1.0) or if current result cannot be properly converted to double (XPath 2.0).
    NO_RESULT_ERROR: raised if there is no current result in the result object (XPath 2.0).

    virtual const XMLCh* DOMXPathResult::getStringValue (  )  const [pure virtual]

    Returns the string value of this result.

    Returns:
    stringValue The value of this string result.
    Exceptions:
    DOMXPathException TYPE_ERR: raised if ResultType is not STRING_TYPE (XPath 1.0) or if current result cannot be properly converted to string (XPath 2.0).
    NO_RESULT_ERROR: raised if there is no current result in the result object (XPath 2.0).

    virtual DOMNode* DOMXPathResult::getNodeValue (  )  const [pure virtual]

    Returns the node value of this result.

    Returns:
    nodeValue The value of this node result, which may be null.
    Exceptions:
    DOMXPathException TYPE_ERR: raised if ResultType is not ANY_UNORDERED_NODE_TYPE, FIRST_ORDERED_NODE_TYPE, UNORDERED_NODE_ITERATOR_TYPE, ORDERED_NODE_ITERATOR_TYPE, UNORDERED_NODE_SNAPSHOT_TYPE, or ORDERED_NODE_SNAPSHOT_TYPE (XPath 1.0) or if current result is not a node (XPath 2.0).
    NO_RESULT_ERROR: raised if there is no current result in the result object.

    virtual bool DOMXPathResult::iterateNext (  )  [pure virtual]

    Iterates and returns true if the current result is the next item from the sequence or false if there are no more items.

    Returns:
    boolean True if the current result is the next item from the sequence or false if there are no more items.
    Exceptions:
    XPathException TYPE_ERR: raised if ResultType is not UNORDERED_NODE_ITERATOR_TYPE or ORDERED_NODE_ITERATOR_TYPE (XPath 1.0) or if ResultType is not ITERATOR_RESULT_TYPE (XPath 2.0).
    DOMException INVALID_STATE_ERR: The document has been mutated since the result was returned.

    virtual bool DOMXPathResult::getInvalidIteratorState (  )  const [pure virtual]

    Signifies that the iterator has become invalid.

    Returns:
    invalidIteratorState True if ResultType is UNORDERED_NODE_ITERATOR_TYPE or ORDERED_NODE_ITERATOR_TYPE (XPath 1.0) or ITERATOR_RESULT_TYPE (XPath 2.0) and the document has been modified since this result was returned.
    Exceptions:
    XPathException TYPE_ERR: raised if ResultType is not UNORDERED_NODE_ITERATOR_TYPE or ORDERED_NODE_ITERATOR_TYPE (XPath 1.0) or if ResultType is not ITERATOR_RESULT_TYPE (XPath 2.0).

    virtual bool DOMXPathResult::snapshotItem ( XMLSize_t  index  )  [pure virtual]

    Sets the current result to the indexth item in the snapshot collection.

    If index is greater than or equal to the number of items in the list, this method returns false. Unlike the iterator result, the snapshot does not become invalid, but may not correspond to the current document if it is mutated.

    Parameters:
    index of type XMLSize_t - Index into the snapshot collection.
    Returns:
    boolean True if the current result is the next item from the sequence or false if there are no more items.
    Exceptions:
    XPathException TYPE_ERR: raised if ResultType is not UNORDERED_NODE_SNAPSHOT_TYPE or ORDERED_NODE_SNAPSHOT_TYPE (XPath 1.0) or if ResultType is not SNAPSHOT_RESULT_TYPE (XPath 2.0).

    virtual XMLSize_t DOMXPathResult::getSnapshotLength (  )  const [pure virtual]

    The number of items in the result snapshot.

    Valid values for snapshotItem indices are 0 to snapshotLength-1 inclusive.

    Returns:
    snapshotLength of type XMLSize_t
    Exceptions:
    XPathException TYPE_ERR: raised if ResultType is not UNORDERED_NODE_SNAPSHOT_TYPE or ORDERED_NODE_SNAPSHOT_TYPE (XPath 1.0) or if ResultType is not SNAPSHOT_RESULT_TYPE (XPath 2.0).

    virtual void DOMXPathResult::release (  )  [pure virtual]

    Called to indicate that this DOMXPathResult is no longer in use and that the implementation may relinquish any resources associated with it.

    Access to a released object will lead to unexpected result.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XSSimpleTypeDefinition_8hpp-source.html0000644000175000017500000010016011363620005025172 0ustar borisboris Xerces-C++: XSSimpleTypeDefinition.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLBigDecimal_8hpp.html0000644000175000017500000000435611363620005021670 0ustar borisboris Xerces-C++: XMLBigDecimal.hpp File Reference

    XMLBigDecimal.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLBigDecimal

    Defines

    #define XERCESC_INCLUDE_GUARD_XML_BIGDECIMAL_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XML_BIGDECIMAL_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMTreeWalker_8hpp.html0000644000175000017500000000667211363620005021737 0ustar borisboris Xerces-C++: DOMTreeWalker.hpp File Reference

    DOMTreeWalker.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMTreeWalker
     DOMTreeWalker objects are used to navigate a document tree or subtree using the view of the document defined by their whatToShow flags and filter (if any). More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMTREEWALKER_HPP
    #define GetDOMTreeWalkerMemoryManager   GET_INDIRECT_MM(fCurrentNode)


    Define Documentation

    #define GetDOMTreeWalkerMemoryManager   GET_INDIRECT_MM(fCurrentNode)

    #define XERCESC_INCLUDE_GUARD_DOMTREEWALKER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMRange_8hpp.html0000644000175000017500000000427111363620005020717 0ustar borisboris Xerces-C++: DOMRange.hpp File Reference

    DOMRange.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMRange

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMRANGE_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMRANGE_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLElementDecl_8hpp-source.html0000644000175000017500000011263211363620005023364 0ustar borisboris Xerces-C++: XMLElementDecl.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMDocumentRange-members.html0000644000175000017500000000442211363620005024133 0ustar borisboris Xerces-C++: Member List

    DOMDocumentRange Member List

    This is the complete list of members for DOMDocumentRange, including all inherited members.

    createRange()=0DOMDocumentRange [pure virtual]
    DOMDocumentRange()DOMDocumentRange [protected]
    ~DOMDocumentRange()DOMDocumentRange [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classHash2KeysSetOf.html0000644000175000017500000004435311363620006022162 0ustar borisboris Xerces-C++: Hash2KeysSetOf< THasher > Class Template Reference

    Hash2KeysSetOf< THasher > Class Template Reference

    Inheritance diagram for Hash2KeysSetOf< THasher >:

    XMemory

    List of all members.

    Public Member Functions

     Hash2KeysSetOf (const XMLSize_t modulus, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Hash2KeysSetOf (const XMLSize_t modulus, const THasher &hasher, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     ~Hash2KeysSetOf ()
    bool isEmpty () const
    bool containsKey (const void *const key1, const int key2) const
    void removeKey (const void *const key1, const int key2)
    void removeKey (const void *const key1)
    void removeAll ()
    MemoryManagergetMemoryManager () const
    XMLSize_t getHashModulus () const
    void put (const void *key1, int key2)
    bool putIfNotPresent (const void *key1, int key2)

    Friends

    class Hash2KeysSetOfEnumerator< THasher >

    template<class THasher>
    class Hash2KeysSetOf< THasher >


    Constructor & Destructor Documentation

    template<class THasher>
    Hash2KeysSetOf< THasher >::Hash2KeysSetOf ( const XMLSize_t  modulus,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    template<class THasher>
    Hash2KeysSetOf< THasher >::Hash2KeysSetOf ( const XMLSize_t  modulus,
    const THasher &  hasher,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    template<class THasher>
    Hash2KeysSetOf< THasher >::~Hash2KeysSetOf (  ) 


    Member Function Documentation

    template<class THasher>
    bool Hash2KeysSetOf< THasher >::isEmpty (  )  const

    template<class THasher>
    bool Hash2KeysSetOf< THasher >::containsKey ( const void *const   key1,
    const int  key2 
    ) const

    template<class THasher>
    void Hash2KeysSetOf< THasher >::removeKey ( const void *const   key1,
    const int  key2 
    )

    template<class THasher>
    void Hash2KeysSetOf< THasher >::removeKey ( const void *const   key1  ) 

    template<class THasher>
    void Hash2KeysSetOf< THasher >::removeAll (  ) 

    template<class THasher>
    MemoryManager* Hash2KeysSetOf< THasher >::getMemoryManager (  )  const

    template<class THasher>
    XMLSize_t Hash2KeysSetOf< THasher >::getHashModulus (  )  const

    template<class THasher>
    void Hash2KeysSetOf< THasher >::put ( const void *  key1,
    int  key2 
    )

    template<class THasher>
    bool Hash2KeysSetOf< THasher >::putIfNotPresent ( const void *  key1,
    int  key2 
    )


    Friends And Related Function Documentation

    template<class THasher>
    friend class Hash2KeysSetOfEnumerator< THasher > [friend]


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMElement.html0000644000175000017500000023164511363620005021352 0ustar borisboris Xerces-C++: DOMElement Class Reference

    DOMElement Class Reference

    By far the vast majority of objects (apart from text) that authors encounter when traversing a document are DOMElement nodes. More...

    Inheritance diagram for DOMElement:

    DOMNode

    List of all members.

    Public Member Functions

    Destructor
    virtual ~DOMElement ()
     Destructor.
    Functions introduced in DOM Level 1
    virtual const XMLChgetTagName () const =0
     The name of the element.
    virtual const XMLChgetAttribute (const XMLCh *name) const =0
     Retrieves an attribute value by name.
    virtual DOMAttrgetAttributeNode (const XMLCh *name) const =0
     Retrieves an DOMAttr node by name.
    virtual DOMNodeListgetElementsByTagName (const XMLCh *name) const =0
     Returns a DOMNodeList of all descendant elements with a given tag name, in the order in which they would be encountered in a preorder traversal of the DOMElement tree.
    virtual void setAttribute (const XMLCh *name, const XMLCh *value)=0
     Adds a new attribute.
    virtual DOMAttrsetAttributeNode (DOMAttr *newAttr)=0
     Adds a new attribute.
    virtual DOMAttrremoveAttributeNode (DOMAttr *oldAttr)=0
     Removes the specified attribute node.
    virtual void removeAttribute (const XMLCh *name)=0
     Removes an attribute by name.
    Functions introduced in DOM Level 2.
    virtual const XMLChgetAttributeNS (const XMLCh *namespaceURI, const XMLCh *localName) const =0
     Retrieves an attribute value by local name and namespace URI.
    virtual void setAttributeNS (const XMLCh *namespaceURI, const XMLCh *qualifiedName, const XMLCh *value)=0
     Adds a new attribute.
    virtual void removeAttributeNS (const XMLCh *namespaceURI, const XMLCh *localName)=0
     Removes an attribute by local name and namespace URI.
    virtual DOMAttrgetAttributeNodeNS (const XMLCh *namespaceURI, const XMLCh *localName) const =0
     Retrieves an DOMAttr node by local name and namespace URI.
    virtual DOMAttrsetAttributeNodeNS (DOMAttr *newAttr)=0
     Adds a new attribute.
    virtual DOMNodeListgetElementsByTagNameNS (const XMLCh *namespaceURI, const XMLCh *localName) const =0
     Returns a DOMNodeList of all the DOMElements with a given local name and namespace URI in the order in which they would be encountered in a preorder traversal of the DOMDocument tree, starting from this node.
    virtual bool hasAttribute (const XMLCh *name) const =0
     Returns true when an attribute with a given name is specified on this element or has a default value, false otherwise.
    virtual bool hasAttributeNS (const XMLCh *namespaceURI, const XMLCh *localName) const =0
     Returns true when an attribute with a given local name and namespace URI is specified on this element or has a default value, false otherwise.
    Functions introduced in DOM Level 3
    virtual void setIdAttribute (const XMLCh *name, bool isId)=0
     If the parameter isId is true, this method declares the specified attribute to be a user-determined ID attribute.
    virtual void setIdAttributeNS (const XMLCh *namespaceURI, const XMLCh *localName, bool isId)=0
     If the parameter isId is true, this method declares the specified attribute to be a user-determined ID attribute.
    virtual void setIdAttributeNode (const DOMAttr *idAttr, bool isId)=0
     If the parameter isId is true, this method declares the specified attribute to be a user-determined ID attribute.
    virtual const DOMTypeInfogetSchemaTypeInfo () const =0
     Returns the type information associated with this element.
    Functions introduced in the ElementTraversal specification (http://www.w3.org/TR/2008/REC-ElementTraversal-20081222/)
    virtual DOMElementgetFirstElementChild () const =0
     The first child of type DOMElement.
    virtual DOMElementgetLastElementChild () const =0
     The last child of type DOMElement.
    virtual DOMElementgetPreviousElementSibling () const =0
     The previous sibling node of type DOMElement.
    virtual DOMElementgetNextElementSibling () const =0
     The next sibling node of type DOMElement.
    virtual XMLSize_t getChildElementCount () const =0
     The number of child nodes that are of type DOMElement.

    Protected Member Functions

    Hidden constructors
     DOMElement ()
     DOMElement (const DOMElement &other)


    Detailed Description

    By far the vast majority of objects (apart from text) that authors encounter when traversing a document are DOMElement nodes.

    Assume the following XML document:<elementExample id="demo"> <subelement1/> <subelement2><subsubelement/></subelement2> </elementExample>

    When represented using DOM, the top node is an DOMElement node for "elementExample", which contains two child DOMElement nodes, one for "subelement1" and one for "subelement2". "subelement1" contains no child nodes.

    Elements may have attributes associated with them; since the DOMElement interface inherits from DOMNode, the generic DOMNode interface method getAttributes may be used to retrieve the set of all attributes for an element. There are methods on the DOMElement interface to retrieve either an DOMAttr object by name or an attribute value by name. In XML, where an attribute value may contain entity references, an DOMAttr object should be retrieved to examine the possibly fairly complex sub-tree representing the attribute value. On the other hand, in HTML, where all attributes have simple string values, methods to directly access an attribute value can safely be used as a convenience.

    Since:
    DOM Level 1
    It also defines the ElementTraversal helper interface defined by http://www.w3.org/TR/2008/REC-ElementTraversal-20081222/

    Constructor & Destructor Documentation

    DOMElement::DOMElement (  )  [protected]

    DOMElement::DOMElement ( const DOMElement other  )  [protected]

    virtual DOMElement::~DOMElement (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual const XMLCh* DOMElement::getTagName (  )  const [pure virtual]

    The name of the element.

    For example, in: <elementExample id="demo"> ... </elementExample> , tagName has the value "elementExample". Note that this is case-preserving in XML, as are all of the operations of the DOM.

    Since:
    DOM Level 1

    virtual const XMLCh* DOMElement::getAttribute ( const XMLCh name  )  const [pure virtual]

    Retrieves an attribute value by name.

    Parameters:
    name The name of the attribute to retrieve.
    Returns:
    The DOMAttr value as a string, or the empty string if that attribute does not have a specified or default value.
    Since:
    DOM Level 1

    virtual DOMAttr* DOMElement::getAttributeNode ( const XMLCh name  )  const [pure virtual]

    Retrieves an DOMAttr node by name.

    Parameters:
    name The name (nodeName) of the attribute to retrieve.
    Returns:
    The DOMAttr node with the specified name (nodeName) or null if there is no such attribute.
    Since:
    DOM Level 1

    virtual DOMNodeList* DOMElement::getElementsByTagName ( const XMLCh name  )  const [pure virtual]

    Returns a DOMNodeList of all descendant elements with a given tag name, in the order in which they would be encountered in a preorder traversal of the DOMElement tree.

    Parameters:
    name The name of the tag to match on. The special value "*" matches all tags.
    Returns:
    A list of matching DOMElement nodes.
    Since:
    DOM Level 1

    virtual void DOMElement::setAttribute ( const XMLCh name,
    const XMLCh value 
    ) [pure virtual]

    Adds a new attribute.

    If an attribute with that name is already present in the element, its value is changed to be that of the value parameter. This value is a simple string, it is not parsed as it is being set. So any markup (such as syntax to be recognized as an entity reference) is treated as literal text, and needs to be appropriately escaped by the implementation when it is written out. In order to assign an attribute value that contains entity references, the user must create an DOMAttr node plus any DOMText and DOMEntityReference nodes, build the appropriate subtree, and use setAttributeNode to assign it as the value of an attribute.

    Parameters:
    name The name of the attribute to create or alter.
    value Value to set in string form.
    Exceptions:
    DOMException INVALID_CHARACTER_ERR: Raised if the specified name contains an illegal character.
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
    Since:
    DOM Level 1

    virtual DOMAttr* DOMElement::setAttributeNode ( DOMAttr newAttr  )  [pure virtual]

    Adds a new attribute.

    If an attribute with that name (nodeName) is already present in the element, it is replaced by the new one.

    Parameters:
    newAttr The DOMAttr node to add to the attribute list.
    Returns:
    If the newAttr attribute replaces an existing attribute, the replaced DOMAttr node is returned, otherwise null is returned.
    Exceptions:
    DOMException WRONG_DOCUMENT_ERR: Raised if newAttr was created from a different document than the one that created the element.
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
    INUSE_ATTRIBUTE_ERR: Raised if newAttr is already an attribute of another DOMElement object. The DOM user must explicitly clone DOMAttr nodes to re-use them in other elements.
    Since:
    DOM Level 1

    virtual DOMAttr* DOMElement::removeAttributeNode ( DOMAttr oldAttr  )  [pure virtual]

    Removes the specified attribute node.

    If the removed DOMAttr has a default value it is immediately replaced. The replacing attribute has the same namespace URI and local name, as well as the original prefix, when applicable.

    Parameters:
    oldAttr The DOMAttr node to remove from the attribute list.
    Returns:
    The DOMAttr node that was removed.
    Exceptions:
    DOMException NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
    NOT_FOUND_ERR: Raised if oldAttr is not an attribute of the element.
    Since:
    DOM Level 1

    virtual void DOMElement::removeAttribute ( const XMLCh name  )  [pure virtual]

    Removes an attribute by name.

    If the removed attribute is known to have a default value, an attribute immediately appears containing the default value as well as the corresponding namespace URI, local name, and prefix when applicable.
    To remove an attribute by local name and namespace URI, use the removeAttributeNS method.

    Parameters:
    name The name of the attribute to remove.
    Exceptions:
    DOMException NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
    Since:
    DOM Level 1

    virtual const XMLCh* DOMElement::getAttributeNS ( const XMLCh namespaceURI,
    const XMLCh localName 
    ) const [pure virtual]

    Retrieves an attribute value by local name and namespace URI.

    Parameters:
    namespaceURI The namespace URI of the attribute to retrieve.
    localName The local name of the attribute to retrieve.
    Returns:
    The DOMAttr value as a string, or an null if that attribute does not have a specified or default value.
    Since:
    DOM Level 2

    virtual void DOMElement::setAttributeNS ( const XMLCh namespaceURI,
    const XMLCh qualifiedName,
    const XMLCh value 
    ) [pure virtual]

    Adds a new attribute.

    If an attribute with the same local name and namespace URI is already present on the element, its prefix is changed to be the prefix part of the qualifiedName, and its value is changed to be the value parameter. This value is a simple string, it is not parsed as it is being set. So any markup (such as syntax to be recognized as an entity reference) is treated as literal text, and needs to be appropriately escaped by the implementation when it is written out. In order to assign an attribute value that contains entity references, the user must create an DOMAttr node plus any DOMText and DOMEntityReference nodes, build the appropriate subtree, and use setAttributeNodeNS or setAttributeNode to assign it as the value of an attribute.

    Parameters:
    namespaceURI The namespace URI of the attribute to create or alter.
    qualifiedName The qualified name of the attribute to create or alter.
    value The value to set in string form.
    Exceptions:
    DOMException INVALID_CHARACTER_ERR: Raised if the specified qualified name contains an illegal character.
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
    NAMESPACE_ERR: Raised if the qualifiedName is malformed, if the qualifiedName has a prefix and the namespaceURI is null or an empty string, if the qualifiedName has a prefix that is "xml" and the namespaceURI is different from "http://www.w3.org/XML/1998/namespace", if the qualifiedName has a prefix that is "xmlns" and the namespaceURI is different from "http://www.w3.org/2000/xmlns/", or if the qualifiedName is "xmlns" and the namespaceURI is different from "http://www.w3.org/2000/xmlns/".
    Since:
    DOM Level 2

    virtual void DOMElement::removeAttributeNS ( const XMLCh namespaceURI,
    const XMLCh localName 
    ) [pure virtual]

    Removes an attribute by local name and namespace URI.

    If the removed attribute has a default value it is immediately replaced. The replacing attribute has the same namespace URI and local name, as well as the original prefix.

    Parameters:
    namespaceURI The namespace URI of the attribute to remove.
    localName The local name of the attribute to remove.
    Exceptions:
    DOMException NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
    Since:
    DOM Level 2

    virtual DOMAttr* DOMElement::getAttributeNodeNS ( const XMLCh namespaceURI,
    const XMLCh localName 
    ) const [pure virtual]

    Retrieves an DOMAttr node by local name and namespace URI.

    Parameters:
    namespaceURI The namespace URI of the attribute to retrieve.
    localName The local name of the attribute to retrieve.
    Returns:
    The DOMAttr node with the specified attribute local name and namespace URI or null if there is no such attribute.
    Since:
    DOM Level 2

    virtual DOMAttr* DOMElement::setAttributeNodeNS ( DOMAttr newAttr  )  [pure virtual]

    Adds a new attribute.

    If an attribute with that local name and namespace URI is already present in the element, it is replaced by the new one.

    Parameters:
    newAttr The DOMAttr node to add to the attribute list.
    Returns:
    If the newAttr attribute replaces an existing attribute with the same local name and namespace URI, the replaced DOMAttr node is returned, otherwise null is returned.
    Exceptions:
    DOMException WRONG_DOCUMENT_ERR: Raised if newAttr was created from a different document than the one that created the element.
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
    INUSE_ATTRIBUTE_ERR: Raised if newAttr is already an attribute of another DOMElement object. The DOM user must explicitly clone DOMAttr nodes to re-use them in other elements.
    Since:
    DOM Level 2

    virtual DOMNodeList* DOMElement::getElementsByTagNameNS ( const XMLCh namespaceURI,
    const XMLCh localName 
    ) const [pure virtual]

    Returns a DOMNodeList of all the DOMElements with a given local name and namespace URI in the order in which they would be encountered in a preorder traversal of the DOMDocument tree, starting from this node.

    Parameters:
    namespaceURI The namespace URI of the elements to match on. The special value "*" matches all namespaces.
    localName The local name of the elements to match on. The special value "*" matches all local names.
    Returns:
    A new DOMNodeList object containing all the matched DOMElements.
    Since:
    DOM Level 2

    virtual bool DOMElement::hasAttribute ( const XMLCh name  )  const [pure virtual]

    Returns true when an attribute with a given name is specified on this element or has a default value, false otherwise.

    Parameters:
    name The name of the attribute to look for.
    Returns:
    true if an attribute with the given name is specified on this element or has a default value, false otherwise.
    Since:
    DOM Level 2

    virtual bool DOMElement::hasAttributeNS ( const XMLCh namespaceURI,
    const XMLCh localName 
    ) const [pure virtual]

    Returns true when an attribute with a given local name and namespace URI is specified on this element or has a default value, false otherwise.

    HTML-only DOM implementations do not need to implement this method.

    Parameters:
    namespaceURI The namespace URI of the attribute to look for.
    localName The local name of the attribute to look for.
    Returns:
    true if an attribute with the given local name and namespace URI is specified or has a default value on this element, false otherwise.
    Since:
    DOM Level 2

    virtual void DOMElement::setIdAttribute ( const XMLCh name,
    bool  isId 
    ) [pure virtual]

    If the parameter isId is true, this method declares the specified attribute to be a user-determined ID attribute.

    This affects the value of DOMAttr::isId and the behavior of DOMDocument::getElementById, but does not change any schema that may be in use, in particular this does not affect the DOMAttr::getSchemaTypeInfo of the specified DOMAttr node. Use the value false for the parameter isId to undeclare an attribute for being a user-determined ID attribute. To specify an DOMAttr by local name and namespace URI, use the setIdAttributeNS method.

    Parameters:
    name The name of the DOMAttr.
    isId Whether the attribute is of type ID.
    Exceptions:
    DOMException NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
    NOT_FOUND_ERR: Raised if the specified node is not an DOMAttr of this element.
    Since:
    DOM Level 3

    virtual void DOMElement::setIdAttributeNS ( const XMLCh namespaceURI,
    const XMLCh localName,
    bool  isId 
    ) [pure virtual]

    If the parameter isId is true, this method declares the specified attribute to be a user-determined ID attribute.

    This affects the value of DOMAttr::isId and the behavior of DOMDocument::getElementById, but does not change any schema that may be in use, in particular this does not affect the DOMAttr::getSchemaTypeInfo of the specified DOMAttr node. Use the value false for the parameter isId to undeclare an attribute for being a user-determined ID attribute.

    Parameters:
    namespaceURI The namespace URI of the DOMAttr.
    localName The local name of the DOMAttr.
    isId Whether the attribute is of type ID.
    Exceptions:
    DOMException NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
    NOT_FOUND_ERR: Raised if the specified node is not an DOMAttr of this element.
    Since:
    DOM Level 3

    virtual void DOMElement::setIdAttributeNode ( const DOMAttr idAttr,
    bool  isId 
    ) [pure virtual]

    If the parameter isId is true, this method declares the specified attribute to be a user-determined ID attribute.

    This affects the value of DOMAttr::isId and the behavior of DOMDocument::getElementById, but does not change any schema that may be in use, in particular this does not affect the DOMAttr::getSchemaTypeInfo of the specified DOMAttr node. Use the value false for the parameter isId to undeclare an attribute for being a user-determined ID attribute.

    Parameters:
    idAttr The DOMAttr node.
    isId Whether the attribute is of type ID.
    Exceptions:
    DOMException NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
    NOT_FOUND_ERR: Raised if the specified node is not an DOMAttr of this element.
    Since:
    DOM Level 3

    virtual const DOMTypeInfo* DOMElement::getSchemaTypeInfo (  )  const [pure virtual]

    Returns the type information associated with this element.

    Returns:
    the DOMTypeInfo associated with this element
    Since:
    DOM level 3

    virtual DOMElement* DOMElement::getFirstElementChild (  )  const [pure virtual]

    The first child of type DOMElement.

    Returns:
    The DOMElement object that is the first element node among the child nodes of this node, or null if there is none.

    virtual DOMElement* DOMElement::getLastElementChild (  )  const [pure virtual]

    The last child of type DOMElement.

    Returns:
    The DOMElement object that is the last element node among the child nodes of this node, or null if there is none.

    virtual DOMElement* DOMElement::getPreviousElementSibling (  )  const [pure virtual]

    The previous sibling node of type DOMElement.

    Returns:
    The DOMElement object that is the previous sibling element node in document order, or null if there is none.

    virtual DOMElement* DOMElement::getNextElementSibling (  )  const [pure virtual]

    The next sibling node of type DOMElement.

    Returns:
    The DOMElement object that is the next sibling element node in document order, or null if there is none.

    virtual XMLSize_t DOMElement::getChildElementCount (  )  const [pure virtual]

    The number of child nodes that are of type DOMElement.

    Note: the count is computed every time this function is invoked

    Returns:
    The number of DOMElement objects that are direct children of this object (nested elements are not counted), or 0 if there is none.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLDouble.html0000644000175000017500000002606711363620006021215 0ustar borisboris Xerces-C++: XMLDouble Class Reference

    XMLDouble Class Reference

    Inheritance diagram for XMLDouble:

    XMLAbstractDoubleFloat XMLNumber XMemory

    List of all members.

    Public Member Functions

     XMLDouble (const XMLCh *const strValue, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Constructs a newly allocated XMLDouble object that represents the value represented by the string.
     ~XMLDouble ()
     XMLDouble (MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)

    Static Public Member Functions

    static int compareValues (const XMLDouble *const lValue, const XMLDouble *const rValue)
     Compares this object to the specified object.

    Protected Member Functions

    virtual void checkBoundary (char *const strValue)


    Constructor & Destructor Documentation

    XMLDouble::XMLDouble ( const XMLCh *const   strValue,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    Constructs a newly allocated XMLDouble object that represents the value represented by the string.

    Parameters:
    strValue the String to be converted to an XMLDouble.
    manager Pointer to the memory manager to be used to allocate objects.
    Exceptions:
    NumberFormatException if the String does not contain a parsable XMLDouble.

    XMLDouble::~XMLDouble (  ) 

    XMLDouble::XMLDouble ( MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager  ) 


    Member Function Documentation

    int XMLDouble::compareValues ( const XMLDouble *const   lValue,
    const XMLDouble *const   rValue 
    ) [static]

    Compares this object to the specified object.

    The result is true if and only if the argument is not null and is an XMLDouble object that contains the same int value as this object.

    Parameters:
    lValue the object to compare with.
    rValue the object to compare against.
    Returns:
    true if the objects are the same; false otherwise.

    References XMLAbstractDoubleFloat::compareValues(), and XMLAbstractDoubleFloat::getMemoryManager().

    virtual void XMLDouble::checkBoundary ( char *const   strValue  )  [protected, virtual]


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLGrammarPool.png0000644000175000017500000000063311363620006022032 0ustar borisboris‰PNG  IHDRsPØUWMPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf1IDATX…í”Q’ƒ †ó¿ô9áô;»Ú'ï„MZ\jKq::S"#ð™? ÒO¯}Ñ÷µÓ>Ö‚ÂëYƒ^¢ü.TtT…ö1FÓóÕEJ8¯SC jE.hð6_MY£!"+ôñ÷kM¨MÔ”4¡Ž¯7 ù\}Ÿ÷Þ½O³nÙ´zEšÑ*éY¾œó£;~¦ìò0ú.tú=½LÓèA;<Ðt }?*½ÆÄ½’>…5{Ã|"÷×âÀ’Õîꆣ  %E`õ03„`ZØœzˆ€£6’uo^•P±X@s#=×GL|CíV ùEÑYn¦^k…zV`v¹R ¢eŸ®Q.²"eÝDg—•ÕŒæs5—pŒBpÚ*¢j‡»l §Fû¦ØåÕUËN`¥IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/InputSource_8hpp-source.html0000644000175000017500000005255211363620004023105 0ustar borisboris Xerces-C++: InputSource.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLDouble-members.html0000644000175000017500000003445411363620006022644 0ustar borisboris Xerces-C++: Member List

    XMLDouble Member List

    This is the complete list of members for XMLDouble, including all inherited members.

    BigDecimal enum valueXMLNumber
    checkBoundary(char *const strValue)XMLDouble [protected, virtual]
    compareValues(const XMLDouble *const lValue, const XMLDouble *const rValue)XMLDouble [static]
    XMLAbstractDoubleFloat::compareValues(const XMLAbstractDoubleFloat *const lValue, const XMLAbstractDoubleFloat *const rValue, MemoryManager *const manager)XMLAbstractDoubleFloat [protected, static]
    convert(char *const strValue)XMLAbstractDoubleFloat [protected]
    DateTime enum valueXMLNumber
    Double enum valueXMLNumber
    EQUAL enum valueXMLNumber
    fDataConvertedXMLAbstractDoubleFloat [protected]
    fDataOverflowedXMLAbstractDoubleFloat [protected]
    Float enum valueXMLNumber
    fTypeXMLAbstractDoubleFloat [protected]
    fValueXMLAbstractDoubleFloat [protected]
    getCanonicalRepresentation(const XMLCh *const rawData, MemoryManager *const memMgr=XMLPlatformUtils::fgMemoryManager)XMLAbstractDoubleFloat [static]
    getFormattedString() const XMLAbstractDoubleFloat [virtual]
    getMemoryManager() const XMLAbstractDoubleFloat
    getRawData() const XMLAbstractDoubleFloat [virtual]
    getSign() const XMLAbstractDoubleFloat [virtual]
    getType() const XMLAbstractDoubleFloat
    getValue() const XMLAbstractDoubleFloat
    GREATER_THAN enum valueXMLNumber
    INDETERMINATE enum valueXMLNumber
    init(const XMLCh *const strValue)XMLAbstractDoubleFloat [protected]
    isDataConverted() const XMLAbstractDoubleFloat
    isDataOverflowed() const XMLAbstractDoubleFloat
    LESS_THAN enum valueXMLNumber
    LiteralType enum nameXMLAbstractDoubleFloat
    loadNumber(XMLNumber::NumberType numType, XSerializeEngine &serEng)XMLNumber [static]
    NaN enum valueXMLAbstractDoubleFloat
    NegINF enum valueXMLAbstractDoubleFloat
    Normal enum valueXMLAbstractDoubleFloat
    normalizeDecimalPoint(char *const toNormal)XMLAbstractDoubleFloat [static]
    NumberType enum nameXMLNumber
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    PosINF enum valueXMLAbstractDoubleFloat
    SpecialTypeNum enum valueXMLAbstractDoubleFloat
    UnKnown enum valueXMLNumber
    XMemory()XMemory [protected]
    XMLAbstractDoubleFloat(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLAbstractDoubleFloat [protected]
    XMLDouble(const XMLCh *const strValue, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLDouble
    XMLDouble(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLDouble
    XMLNumber()XMLNumber [protected]
    XMLNumber(const XMLNumber &)XMLNumber [protected]
    ~XMLAbstractDoubleFloat()XMLAbstractDoubleFloat [virtual]
    ~XMLDouble()XMLDouble
    ~XMLNumber()XMLNumber [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XSModelGroupDefinition_8hpp.html0000644000175000017500000000450511363620005023664 0ustar borisboris Xerces-C++: XSModelGroupDefinition.hpp File Reference

    XSModelGroupDefinition.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XSModelGroupDefinition

    Defines

    #define XERCESC_INCLUDE_GUARD_XSMODELGROUPDEFINITION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XSMODELGROUPDEFINITION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classSAX2XMLReader.png0000644000175000017500000000070511363620006021452 0ustar borisboris‰PNG  IHDRqPÜ ‡pPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf[IDATX…í”mnƒ0 †ã?ûmçæU{¡J“¸ÿæ¯ ”m¬ê*5æ#&ñ¿6ˆB –cö^$‘¹~z×d Ô[ ƒ[tPgvÈåê}²$Y6I’šÀÄTÛöЩe'€F‚ —,.ã ÍìqM¤ÔébÚg½•}› Ï)·È N“‘í»ÃIOö¦yIz£±å,ß’·Qç¤Ö*ñ8TaÁ¦mê-doð uòÕÈãÍ=»Ôóòc|>9Ž×§“ÿÑÛNv²“ìäÉËŽ}î¬Êy8foGÉ­ÆIÕF–)V‰äÁžW$+À¬Î숌´˜»ää°EJNI,Êj]¨5±5|”˜g$[-;DAò×DJ’¬«ÞÊn9-mÕàz›“hE²7 õ¦yK2*ùÉúΥZ«Ä㪖åïS{—NzoWuþÒ:ùšäÞ_sÏN_0rØô ‡ÒIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/XMLAttr_8hpp-source.html0000644000175000017500000010360111363620004022110 0ustar borisboris Xerces-C++: XMLAttr.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLInitializer-members.html0000644000175000017500000000543011363620006023705 0ustar borisboris Xerces-C++: Member List

    XMLInitializer Member List

    This is the complete list of members for XMLInitializer, including all inherited members.

    initializeStaticData()XMLInitializer [protected, static]
    initializeTransService()XMLInitializer [protected, static]
    terminateStaticData()XMLInitializer [protected, static]
    terminateTransService()XMLInitializer [protected, static]
    XMLPlatformUtils classXMLInitializer [friend]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XSConstants_8hpp-source.html0000644000175000017500000003544211363620005023054 0ustar borisboris Xerces-C++: XSConstants.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLAttDefList_8hpp-source.html0000644000175000017500000004030211363620004023177 0ustar borisboris Xerces-C++: XMLAttDefList.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classPSVIHandler.html0000644000175000017500000003500611363620006021472 0ustar borisboris Xerces-C++: PSVIHandler Class Reference

    PSVIHandler Class Reference

    This abstract class provides the interface for the scanner to return PSVI information to the application. More...

    Inheritance diagram for PSVIHandler:

    AbstractDOMParser XercesDOMParser

    List of all members.

    Public Member Functions

    Destructor
    virtual ~PSVIHandler ()
    The PSVI handler interface
    virtual void handleElementPSVI (const XMLCh *const localName, const XMLCh *const uri, PSVIElement *elementInfo)=0
     Receive notification of the PSVI properties of an element.
    virtual void handlePartialElementPSVI (const XMLCh *const localName, const XMLCh *const uri, PSVIElement *elementInfo)
     Receive notification of partial PSVI properties of an element.
    virtual void handleAttributesPSVI (const XMLCh *const localName, const XMLCh *const uri, PSVIAttributeList *psviAttributes)=0
     Enables PSVI information about attributes to be passed back to the application.

    Protected Member Functions

     PSVIHandler ()


    Detailed Description

    This abstract class provides the interface for the scanner to return PSVI information to the application.

    Constructor & Destructor Documentation

    virtual PSVIHandler::~PSVIHandler (  )  [virtual]

    PSVIHandler::PSVIHandler (  )  [protected]


    Member Function Documentation

    virtual void PSVIHandler::handleElementPSVI ( const XMLCh *const   localName,
    const XMLCh *const   uri,
    PSVIElement elementInfo 
    ) [pure virtual]

    Receive notification of the PSVI properties of an element.

    The scanner will issue this call after the XMLDocumentHandler endElement call. Since the scanner will issue the psviAttributes call immediately after reading the start tag of an element, all element content will be effectively bracketed by these two calls.

    Parameters:
    localName The name of the element whose end tag was just parsed.
    uri The namespace to which the element is bound
    elementInfo Object containing the element's PSVI properties

    Implemented in AbstractDOMParser.

    void PSVIHandler::handlePartialElementPSVI ( const XMLCh *const  localName,
    const XMLCh *const  uri,
    PSVIElement elementInfo 
    ) [virtual]

    Receive notification of partial PSVI properties of an element.

    This callback is made right after the psviAttributes call for non-empty element.

    The PSVIElement passed in has all fields properly set and it can be safely accessed the same way as the one passed in handleElementPSVI. However, fields listed below always have default values.

    getValidity() PSVIItem::VALIDITY_NOTKNOWN getValidationAttemped() PSVIItem::VALIDATION_NONE getMemberTypeDefinition() 0 getSchemaNormalizedValue() 0 getCanonicalRepresentation() 0 getNotationDeclaration() 0

    Parameters:
    localName The name of the element upon which start tag these attributes were encountered.
    uri The namespace to which the element is bound
    elementInfo Object containing the element's partial PSVI properties

    Reimplemented in AbstractDOMParser.

    virtual void PSVIHandler::handleAttributesPSVI ( const XMLCh *const   localName,
    const XMLCh *const   uri,
    PSVIAttributeList psviAttributes 
    ) [pure virtual]

    Enables PSVI information about attributes to be passed back to the application.

    This callback will be made on *all* elements; on elements with no attributes, the final parameter will be null.

    Parameters:
    localName The name of the element upon which start tag these attributes were encountered.
    uri The namespace to which the element is bound
    psviAttributes Object containing the attributes' PSVI properties with information to identify them.

    Implemented in AbstractDOMParser.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMNodeList-members.html0000644000175000017500000000471411363620005023125 0ustar borisboris Xerces-C++: Member List

    DOMNodeList Member List

    This is the complete list of members for DOMNodeList, including all inherited members.

    DOMNodeList()DOMNodeList [protected]
    getLength() const =0DOMNodeList [pure virtual]
    item(XMLSize_t index) const =0DOMNodeList [pure virtual]
    ~DOMNodeList()DOMNodeList [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMImplementation-members.html0000644000175000017500000001560411363620005024371 0ustar borisboris Xerces-C++: Member List

    DOMImplementation Member List

    This is the complete list of members for DOMImplementation, including all inherited members.

    createDocument(const XMLCh *namespaceURI, const XMLCh *qualifiedName, DOMDocumentType *doctype, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)=0DOMImplementation [pure virtual]
    createDocument(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)=0DOMImplementation [pure virtual]
    createDocumentType(const XMLCh *qualifiedName, const XMLCh *publicId, const XMLCh *systemId)=0DOMImplementation [pure virtual]
    createLSInput(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)=0DOMImplementationLS [pure virtual]
    createLSOutput(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)=0DOMImplementationLS [pure virtual]
    createLSParser(const DOMImplementationLSMode mode, const XMLCh *const schemaType, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager, XMLGrammarPool *const gramPool=0)=0DOMImplementationLS [pure virtual]
    createLSSerializer(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)=0DOMImplementationLS [pure virtual]
    DOMImplementation()DOMImplementation [protected]
    DOMImplementationLS()DOMImplementationLS [protected]
    DOMImplementationLSMode enum nameDOMImplementationLS
    getFeature(const XMLCh *feature, const XMLCh *version) const =0DOMImplementation [pure virtual]
    getImplementation()DOMImplementation [static]
    hasFeature(const XMLCh *feature, const XMLCh *version) const =0DOMImplementation [pure virtual]
    loadDOMExceptionMsg(const short msgToLoad, XMLCh *const toFill, const XMLSize_t maxChars)DOMImplementation [static]
    MODE_ASYNCHRONOUS enum valueDOMImplementationLS
    MODE_SYNCHRONOUS enum valueDOMImplementationLS
    ~DOMImplementation()DOMImplementation [virtual]
    ~DOMImplementationLS()DOMImplementationLS [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMNotation.html0000644000175000017500000002244211363620005021545 0ustar borisboris Xerces-C++: DOMNotation Class Reference

    DOMNotation Class Reference

    This interface represents a notation declared in the DTD. More...

    Inheritance diagram for DOMNotation:

    DOMNode

    List of all members.

    Public Member Functions

    Destructor
    virtual ~DOMNotation ()
     Destructor.
    Functions introduced in DOM Level 1
    virtual const XMLChgetPublicId () const =0
     Get the public identifier of this notation.
    virtual const XMLChgetSystemId () const =0
     Get the system identifier of this notation.

    Protected Member Functions

    Hidden constructors
     DOMNotation ()
     DOMNotation (const DOMNotation &other)


    Detailed Description

    This interface represents a notation declared in the DTD.

    A notation either declares, by name, the format of an unparsed entity (see section 4.7 of the XML 1.0 specification), or is used for formal declaration of Processing Instruction targets (see section 2.6 of the XML 1.0 specification). The nodeName attribute inherited from DOMNode is set to the declared name of the notation.

    The DOM Level 1 does not support editing DOMNotation nodes; they are therefore readonly.

    A DOMNotation node does not have any parent.

    Since:
    DOM Level 1

    Constructor & Destructor Documentation

    DOMNotation::DOMNotation (  )  [protected]

    DOMNotation::DOMNotation ( const DOMNotation other  )  [protected]

    virtual DOMNotation::~DOMNotation (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual const XMLCh* DOMNotation::getPublicId (  )  const [pure virtual]

    Get the public identifier of this notation.

    If the public identifier was not specified, this is null.

    Returns:
    Returns the public identifier of the notation
    Since:
    DOM Level 1

    virtual const XMLCh* DOMNotation::getSystemId (  )  const [pure virtual]

    Get the system identifier of this notation.

    If the system identifier was not specified, this is null.

    Returns:
    Returns the system identifier of the notation
    Since:
    DOM Level 1


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSAttributeUse.png0000644000175000017500000000077311363620006022131 0ustar borisboris‰PNG  IHDRaˆc˜ÚPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf‘IDATX…í—Krà †Ñ¦k‰ˆtÚ eåû¡’c›Lè40Ûð¡Œçûî,Ÿî+ô•·$¼T–ž/¬—`ôÁRYlJ¼÷j}—Ahs={²^øBø%¬®× i8UD™Šû8Œðú°|BUyÕ&â~ØEцå*”a\Üón¢:—ˆÒÄ+œöaDÿ×§UnÍ‘§ËxbYnÉ¿ÈÕ$&1‰Iü;bê݇SR$’ŠÉ›àÉæDÃEÙVÍ:#âòÌ&]MóÒ‘UA‰¨ùP‹F딈°m¯ÌFRû‰ :$rä¥p‰ˆ¹ºG½E®¸™«mñ;ïžLìþ;zÓ>Œ˜zwS¦ÞÄ$&1‰AutØiû­Ð ”ït „8©Áš°má.ÎI¹t`/ "A²u¸ Þ˜S`6„Ô›ÜØ ˜Å¼¶3$‡k•$wèŽs‘¼ÒÑmäèÒª•yJ_›0Ï[q¬ûa’ÍÒ°PM’þª\uïù$†Ý_Ÿ4¦n;è'ÀIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/XMLString_8hpp-source.html0000644000175000017500000030362311363620005022453 0ustar borisboris Xerces-C++: XMLString.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_eval_0x73.html0000644000175000017500000002660011363620005022164 0ustar borisboris Xerces-C++: Class Members - Enumerator
     

    - s -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMLSResourceResolver_8hpp.html0000644000175000017500000000530511363620005023432 0ustar borisboris Xerces-C++: DOMLSResourceResolver.hpp File Reference

    DOMLSResourceResolver.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMLSResourceResolver
     DOMLSResourceResolver provides a way for applications to redirect references to external entities. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMLSRESOURCERESOLVER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMLSRESOURCERESOLVER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMAttr.html0000644000175000017500000004471211363620005020670 0ustar borisboris Xerces-C++: DOMAttr Class Reference

    DOMAttr Class Reference

    The DOMAttr class refers to an attribute of an XML element. More...

    Inheritance diagram for DOMAttr:

    DOMNode

    List of all members.

    Public Member Functions

    Destructor
    virtual ~DOMAttr ()
     Destructor.
    Functions introduced in DOM Level 1
    virtual const XMLChgetName () const =0
     Returns the name of this attribute.
    virtual bool getSpecified () const =0
     Returns true if the attribute received its value explicitly in the XML document, or if a value was assigned programatically with the setValue function.
    virtual const XMLChgetValue () const =0
     Returns the value of the attribute.
    virtual void setValue (const XMLCh *value)=0
     Sets the value of the attribute.
    Functions introduced in DOM Level 2.
    virtual DOMElementgetOwnerElement () const =0
     The DOMElement node this attribute is attached to or null if this attribute is not in use.
    Functions introduced in DOM Level 3.
    virtual bool isId () const =0
     Returns whether this attribute is known to be of type ID or not.
    virtual const DOMTypeInfogetSchemaTypeInfo () const =0
     Returns the type information associated with this attribute.

    Protected Member Functions

    Hidden constructors
     DOMAttr ()
     DOMAttr (const DOMAttr &other)


    Detailed Description

    The DOMAttr class refers to an attribute of an XML element.

    Typically the allowable values for the attribute are defined in a documenttype definition.

    DOMAttr objects inherit the DOMNode interface, but since attributes are not actually child nodes of the elements they are associated with, the DOM does not consider them part of the document tree. Thus, the DOMNode attributes parentNode, previousSibling, and nextSibling have a null value for DOMAttr objects. The DOM takes the view that attributes are properties of elements rather than having a separate identity from the elements they are associated with; this should make it more efficient to implement such features as default attributes associated with all elements of a given type. Furthermore, attribute nodes may not be immediate children of a DOMDocumentFragment. However, they can be associated with DOMElement nodes contained within a DOMDocumentFragment. In short, users of the DOM need to be aware that DOMAttr nodes have some things in common with other objects inheriting the DOMNode interface, but they also are quite distinct.

    Since:
    DOM Level 1

    Constructor & Destructor Documentation

    DOMAttr::DOMAttr (  )  [protected]

    DOMAttr::DOMAttr ( const DOMAttr other  )  [protected]

    virtual DOMAttr::~DOMAttr (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual const XMLCh* DOMAttr::getName (  )  const [pure virtual]

    Returns the name of this attribute.

    Since:
    DOM Level 1

    virtual bool DOMAttr::getSpecified (  )  const [pure virtual]

    Returns true if the attribute received its value explicitly in the XML document, or if a value was assigned programatically with the setValue function.

    Returns false if the attribute value came from the default value declared in the document's DTD.

    Since:
    DOM Level 1

    virtual const XMLCh* DOMAttr::getValue (  )  const [pure virtual]

    Returns the value of the attribute.

    The value of the attribute is returned as a string. Character and general entity references are replaced with their values.

    Since:
    DOM Level 1

    virtual void DOMAttr::setValue ( const XMLCh value  )  [pure virtual]

    Sets the value of the attribute.

    A text node with the unparsed contents of the string will be created.

    Parameters:
    value The value of the DOM attribute to be set
    Since:
    DOM Level 1

    virtual DOMElement* DOMAttr::getOwnerElement (  )  const [pure virtual]

    The DOMElement node this attribute is attached to or null if this attribute is not in use.

    Since:
    DOM Level 2

    virtual bool DOMAttr::isId (  )  const [pure virtual]

    Returns whether this attribute is known to be of type ID or not.

    When it is and its value is unique, the ownerElement of this attribute can be retrieved using getElementById on DOMDocument.

    Returns:
    bool stating if this DOMAttr is an ID
    Since:
    DOM level 3

    virtual const DOMTypeInfo* DOMAttr::getSchemaTypeInfo (  )  const [pure virtual]

    Returns the type information associated with this attribute.

    Returns:
    the DOMTypeInfo associated with this attribute
    Since:
    DOM level 3


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMException_8hpp.html0000644000175000017500000000434111363620005021617 0ustar borisboris Xerces-C++: DOMException.hpp File Reference

    DOMException.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMException

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMEXCEPTION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMEXCEPTION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/tab_b.gif0000644000175000017500000000004311363620004017224 0ustar borisborisGIF89a€„°Ç,D;xerces-c-3.1.1/doc/html/apiDocs-3/classDOMEntityReference.png0000644000175000017500000000066511363620005022670 0ustar borisboris‰PNG  IHDR„P*ÅÀ­PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfKIDATX…í•KnÄ0@aÓ5ø´7˜¹Ð¬rÿ#”_>#Oã&n¥hdda;˜ D{·Àí³S¾b!̪M‹è“4üa¾®”"EÊ)„X’Ñ•è’c:†(E‡#Š]ˆm:…0oGÈ„¸¿,ænD hU¤„k$áP.6}Q²/Vä  Ä["þà'ДGûÈÿ#>¦+ ¦éqÄ5*211±'Ü-@½Qâ@<#P³j¥ç‘nKÉÏ-ðÂ|]é)TÏ dØð5aAä¼ P'FnQÍ ±è@4MzÐ6\#H­°[øÅÝ`¯J ý€ÐËûDX.VàL„×Ä0®w‡ jÆC'ÂÝBx\³u6ÀE]š5¢¾ÈS.6}A°ä‚-m‰G_1¥ö»m+²ß{-i"ÚýßB´ƒ¸Ò—úˆþŸÀ7IÖù”lq1ëIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/DOMNamedNodeMap_8hpp.html0000644000175000017500000000660511363620005022156 0ustar borisboris Xerces-C++: DOMNamedNodeMap.hpp File Reference

    DOMNamedNodeMap.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMNamedNodeMap
     DOMNamedNodeMaps are used to represent collections of nodes that can be accessed by name. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMNAMEDNODEMAP_HPP
    #define GetDOMNamedNodeMapMemoryManager   GET_INDIRECT_MM(fOwnerNode)


    Define Documentation

    #define GetDOMNamedNodeMapMemoryManager   GET_INDIRECT_MM(fOwnerNode)

    #define XERCESC_INCLUDE_GUARD_DOMNAMEDNODEMAP_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/InvalidCastException_8hpp.html0000644000175000017500000000405611363620005023404 0ustar borisboris Xerces-C++: InvalidCastException.hpp File Reference

    InvalidCastException.hpp File Reference

    Go to the source code of this file.

    Defines

    #define XERCESC_INCLUDE_GUARD_INVALIDCASTEXCEPTION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_INVALIDCASTEXCEPTION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLDeleter-members.html0000644000175000017500000000372511363620006023013 0ustar borisboris Xerces-C++: Member List

    XMLDeleter Member List

    This is the complete list of members for XMLDeleter, including all inherited members.

    XMLDeleter()XMLDeleter [protected]
    ~XMLDeleter()XMLDeleter [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSWildcard.png0000644000175000017500000000073011363620006021233 0ustar borisboris‰PNG  IHDROˆT÷«¹PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfnIDATX…í–Krà †a“uÄ Ä :í…ºòýPI€0ÆdB§öÁC>$~l™¯1û0Ÿ~È®"WG7îÈ££D?Ý:Š@-"r¬¤!ú]ô€¡Eׂ¼8ÔT:‘€t5; r”(pºã>Šv¡¥•ÑZÌ/6 ¦p&‡gxÍf‚ßkÇn½Á—Àí{2xÛ¶Éà¨^àxqðíó¤#ÚS¦ÀGªž–ý úE–Ô£3âŸs¾ g)œF ò”˜_Ôbx]ô¨`1hÊ @Lböý#PT?XcµYµ¯U׆Uÿu°ÎLOðšÍWÞó$x¾Ü.pÿ ˜ÝÍ},Êe@ËÕŠ0*6e³ê1 6¶‡ É#ÐÓlËZ.~“ „)T¤£b„æéÖ*‚†²÷(£PILÒAÛxlÁ¼F³[£î£î’ª&x¯zú#|CpôsýÉ0&÷}ÚõIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classBinMemInputStream-members.html0000644000175000017500000001452411363620005024407 0ustar borisboris Xerces-C++: Member List

    BinMemInputStream Member List

    This is the complete list of members for BinMemInputStream, including all inherited members.

    BinInputStream()BinInputStream [protected]
    BinMemInputStream(const XMLByte *const initData, const XMLSize_t capacity, const BufOpts bufOpt=BufOpt_Copy, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)BinMemInputStream
    BufOpt_Adopt enum valueBinMemInputStream
    BufOpt_Copy enum valueBinMemInputStream
    BufOpt_Reference enum valueBinMemInputStream
    BufOpts enum nameBinMemInputStream
    curPos() const BinMemInputStream [virtual]
    getContentType() const BinMemInputStream [virtual]
    getSize() const BinMemInputStream
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    readBytes(XMLByte *const toFill, const XMLSize_t maxToRead)BinMemInputStream [virtual]
    reset()BinMemInputStream
    XMemory()XMemory [protected]
    ~BinInputStream()BinInputStream [virtual]
    ~BinMemInputStream()BinMemInputStream [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/PSVIUni_8hpp.html0000644000175000017500000000425711363620005020564 0ustar borisboris Xerces-C++: PSVIUni.hpp File Reference

    PSVIUni.hpp File Reference

    Go to the source code of this file.

    Classes

    class  PSVIUni

    Defines

    #define XERCESC_INCLUDE_GUARD_PSVIUNI_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_PSVIUNI_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classInputSource-members.html0000644000175000017500000001633611363620006023330 0ustar borisboris Xerces-C++: Member List

    InputSource Member List

    This is the complete list of members for InputSource, including all inherited members.

    getEncoding() const InputSource [virtual]
    getIssueFatalErrorIfNotFound() const InputSource [virtual]
    getMemoryManager() const InputSource
    getPublicId() const InputSource [virtual]
    getSystemId() const InputSource [virtual]
    InputSource(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)InputSource [protected]
    InputSource(const XMLCh *const systemId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)InputSource [protected]
    InputSource(const XMLCh *const systemId, const XMLCh *const publicId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)InputSource [protected]
    InputSource(const char *const systemId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)InputSource [protected]
    InputSource(const char *const systemId, const char *const publicId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)InputSource [protected]
    makeStream() const =0InputSource [pure virtual]
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    setEncoding(const XMLCh *const encodingStr)InputSource [virtual]
    setIssueFatalErrorIfNotFound(const bool flag)InputSource [virtual]
    setPublicId(const XMLCh *const publicId)InputSource [virtual]
    setSystemId(const XMLCh *const systemId)InputSource [virtual]
    XMemory()XMemory [protected]
    ~InputSource()InputSource [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMTypeInfo-members.html0000644000175000017500000000776011363620006023146 0ustar borisboris Xerces-C++: Member List

    DOMTypeInfo Member List

    This is the complete list of members for DOMTypeInfo, including all inherited members.

    DERIVATION_EXTENSION enum valueDOMTypeInfo
    DERIVATION_LIST enum valueDOMTypeInfo
    DERIVATION_RESTRICTION enum valueDOMTypeInfo
    DERIVATION_UNION enum valueDOMTypeInfo
    DerivationMethods enum nameDOMTypeInfo
    DOMTypeInfo()DOMTypeInfo [protected]
    getTypeName() const =0DOMTypeInfo [pure virtual]
    getTypeNamespace() const =0DOMTypeInfo [pure virtual]
    isDerivedFrom(const XMLCh *typeNamespaceArg, const XMLCh *typeNameArg, DerivationMethods derivationMethod) const =0DOMTypeInfo [pure virtual]
    ~DOMTypeInfo()DOMTypeInfo [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/SAX2XMLFilter_8hpp-source.html0000644000175000017500000001616111363620004023065 0ustar borisboris Xerces-C++: SAX2XMLFilter.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/QName_8hpp.html0000644000175000017500000000423311363620005020322 0ustar borisboris Xerces-C++: QName.hpp File Reference

    QName.hpp File Reference

    Go to the source code of this file.

    Classes

    class  QName

    Defines

    #define XERCESC_INCLUDE_GUARD_QNAME_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_QNAME_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLNotationDecl-members.html0000644000175000017500000001606311363620006024011 0ustar borisboris Xerces-C++: Member List

    XMLNotationDecl Member List

    This is the complete list of members for XMLNotationDecl, including all inherited members.

    getBaseURI() const XMLNotationDecl
    getId() const XMLNotationDecl
    getKey() const XMLNotationDecl
    getMemoryManager() const XMLNotationDecl
    getName() const XMLNotationDecl
    getNameSpaceId() const XMLNotationDecl
    getPublicId() const XMLNotationDecl
    getSystemId() const XMLNotationDecl
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    setBaseURI(const XMLCh *const newId)XMLNotationDecl
    setId(const XMLSize_t newId)XMLNotationDecl
    setName(const XMLCh *const notName)XMLNotationDecl
    setNameSpaceId(const unsigned int newId)XMLNotationDecl
    setPublicId(const XMLCh *const newId)XMLNotationDecl
    setSystemId(const XMLCh *const newId)XMLNotationDecl
    XMemory()XMemory [protected]
    XMLNotationDecl(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLNotationDecl
    XMLNotationDecl(const XMLCh *const notName, const XMLCh *const pubId, const XMLCh *const sysId, const XMLCh *const baseURI=0, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLNotationDecl
    ~XMLNotationDecl()XMLNotationDecl


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSAttributeGroupDefinition.png0000644000175000017500000000116311363620006024474 0ustar borisboris‰PNG  IHDR¤ˆ›õ]?PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf IDAThí˜]~ƒ0ÀÃËž!7ˆ»Áv¡>õþGX€$švµV±ÔŸ1ü!V%|›KøŒåÓ‘ÏA&>b¾ˆfÈŒŠeî.HÊ—1[˔ۿ™•3I`i ¤eŠ[¼ˆ 娿MV&FuȹŽ¿–ŠäJC²å›‚í߀,ûRâ.\)¥uµ•3sY#g·þ*䬑ïðOôÞȺ‹å´|èëç# ÏçÓLj¸#éHG:Ò‘Žü{È^Yñ®îÈ_„SqF¿ÃÛ'î†ÜFI ñ"E²©¦TÒ‰ø¼)I ªÈšÜˆš>Y‰U*È¡!7¥žÄÁ8ArÂÈ"-&#F$ŽHP;²&]!s$ Úß#åÖ»…¬áÁ¼ÞÊp©Š eX­…æ8”Æ~†+dÛ—‚DªqÍ»8ª¹8¦ {Aö%î@‰ø$<ÜíSäý)i‡´èþätP Xerces-C++: Member List

    SAXNotRecognizedException Member List

    This is the complete list of members for SAXNotRecognizedException, including all inherited members.

    fMemoryManagerSAXException [protected]
    fMsgSAXException [protected]
    getMessage() const SAXException [virtual]
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    operator=(const SAXException &toCopy)SAXException
    SAXException(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)SAXException
    SAXException(const XMLCh *const msg, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)SAXException
    SAXException(const char *const msg, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)SAXException
    SAXException(const SAXException &toCopy)SAXException
    SAXNotRecognizedException(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)SAXNotRecognizedException
    SAXNotRecognizedException(const XMLCh *const msg, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)SAXNotRecognizedException
    SAXNotRecognizedException(const char *const msg, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)SAXNotRecognizedException
    SAXNotRecognizedException(const SAXException &toCopy)SAXNotRecognizedException
    XMemory()XMemory [protected]
    ~SAXException()SAXException [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMConfiguration_8hpp-source.html0000644000175000017500000002630311363620004023767 0ustar borisboris Xerces-C++: DOMConfiguration.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSValue.png0000644000175000017500000000053111363620006020555 0ustar borisboris‰PNG  IHDRCP°¦ÕuPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfïIDATH‰í“Í Ã …Ã¥gÛ˜ ªv¡ž²ÿõ3II*§‡¨ŠD€/Ï?ˆáÙ}xäÀN‡(†ØJ>«ˆ9waûSµYU¡?!¶°?ÔÌZf•A ">foTGÌ "M.ÁbA Ü Ž5*dê‹×åœÏ¾v÷"!¢9Dò ‘dm·ÍÎ/Èøê€ÜƱÒ©¢ ¹ ùáÈh Hö|HÂH%w*ÛrO1âZÖ)ûN.[# ¡¨ pGªßgåDEeŠgM„+)z¿MHh¯¢©| ÜZúâ©0™¯+êrÿ…Ää °­~•‹ñÈIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/XMLFloat_8hpp.html0000644000175000017500000000427411363620005020754 0ustar borisboris Xerces-C++: XMLFloat.hpp File Reference

    XMLFloat.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLFloat

    Defines

    #define XERCESC_INCLUDE_GUARD_XML_FLOAT_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XML_FLOAT_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classPSVIHandler-members.html0000644000175000017500000000565411363620006023130 0ustar borisboris Xerces-C++: Member List

    PSVIHandler Member List

    This is the complete list of members for PSVIHandler, including all inherited members.

    handleAttributesPSVI(const XMLCh *const localName, const XMLCh *const uri, PSVIAttributeList *psviAttributes)=0PSVIHandler [pure virtual]
    handleElementPSVI(const XMLCh *const localName, const XMLCh *const uri, PSVIElement *elementInfo)=0PSVIHandler [pure virtual]
    handlePartialElementPSVI(const XMLCh *const localName, const XMLCh *const uri, PSVIElement *elementInfo)PSVIHandler [virtual]
    PSVIHandler()PSVIHandler [protected]
    ~PSVIHandler()PSVIHandler [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/StdOutFormatTarget_8hpp.html0000644000175000017500000000443511363620005023067 0ustar borisboris Xerces-C++: StdOutFormatTarget.hpp File Reference

    StdOutFormatTarget.hpp File Reference

    Go to the source code of this file.

    Classes

    class  StdOutFormatTarget

    Defines

    #define XERCESC_INCLUDE_GUARD_STDOUTFORMATTARGET_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_STDOUTFORMATTARGET_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDocumentHandler.png0000644000175000017500000000063611363620005022307 0ustar borisboris‰PNG  IHDRqPÜ ‡pPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf4IDATX…í–mnÂ0 †í?ûmûÉ Ðv!$¤Þÿ³ã„´ –M DÜ(ßOýömTx0Æâ­HdÞ]G]Þ7$ìf¾M¢&(/‰µÖ!"!·5ù>¢5iHmˆk‹5çy@¥ W$xCýFê»Ì:GÕÕ]R—“®¶“íÜ9¡“´É ’º¼ µk¯ÔÚ£To‹n¡mnÞ¢ º·ð’çv’!9þÕŒâ8¨çäÇòxrYŽ'ÿÃÛINr’“œä’_Aœ‚µ|æ±xG2•ÒBZŸYIYÏd✒n)ý,">›­H@Š&SÈ+½¸ä´Y+i‡Ô2—Ù¶:[2‰+ ÕvÒɮֲ§rçHmÏ™+iu÷,&ÓYí=Ïéj“mèÞÍ:yû³˜äs’ÑW3ŠÃ7ƒéÙówâñIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classWrapper4InputSource.html0000644000175000017500000010752611363620006023327 0ustar borisboris Xerces-C++: Wrapper4InputSource Class Reference

    Wrapper4InputSource Class Reference

    Wrap a SAX InputSource object and make it behave like DOMLSInput. More...

    Inheritance diagram for Wrapper4InputSource:

    DOMLSInput

    List of all members.

    Public Member Functions

    Constructors and Destructor
     Wrapper4InputSource (InputSource *const inputSource, const bool adoptFlag=true, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Constructor.
    virtual ~Wrapper4InputSource ()
     Destructor.
    Virtual input source interface
    virtual const XMLChgetStringData () const
     This wrapper doesn't support string data.
    virtual InputSourcegetByteStream () const
     Makes the byte stream for this input source.
    Getter methods
    virtual const XMLChgetEncoding () const
     An input source can be set to force the parser to assume a particular encoding for the data that input source represents, via the setEncoding() method.
    const XMLChgetPublicId () const
     Get the public identifier for this input source.
    const XMLChgetSystemId () const
     Get the system identifier for this input source.
    const XMLChgetBaseURI () const
     Get the base URI to be used for resolving relative URIs to absolute URIs.
    bool getIssueFatalErrorIfNotFound () const
     Get the flag that indicates if the parser should issue fatal error if this input source is not found.
    Setter methods
    virtual void setStringData (const XMLCh *data)
     This wrapper only exposes the given InputSource, no setting allowed.
    virtual void setByteStream (InputSource *stream)
     This wrapper only exposes the given InputSource, no setting allowed.
    void setEncoding (const XMLCh *const encodingStr)
     Set the encoding which will be required for use with the XML text read via a stream opened by this input source.
    void setPublicId (const XMLCh *const publicId)
     Set the public identifier for this input source.
    void setSystemId (const XMLCh *const systemId)
     Set the system identifier for this input source.
    void setBaseURI (const XMLCh *const baseURI)
     Set the base URI to be used for resolving relative URIs to absolute URIs.
    void setIssueFatalErrorIfNotFound (bool flag)
     Indicates if the parser should issue fatal error if this input source is not found.
    void release ()
     Called to indicate that this DOMInputSource is no longer in use and that the implementation may relinquish any resources associated with it.


    Detailed Description

    Wrap a SAX InputSource object and make it behave like DOMLSInput.

    Constructor & Destructor Documentation

    Wrapper4InputSource::Wrapper4InputSource ( InputSource *const   inputSource,
    const bool  adoptFlag = true,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    Constructor.

    Wrap a SAX InputSource and make it behave like a DOMLSInput. By default, the wrapper will adopt the SAX InputSource that is wrapped.

    Parameters:
    inputSource The SAX InputSource to be wrapped
    adoptFlag Indicates if the wrapper should adopt the wrapped SAX InputSource. Default is true.
    manager The MemoryManager to use to allocate objects

    virtual Wrapper4InputSource::~Wrapper4InputSource (  )  [virtual]

    Destructor.


    Member Function Documentation

    const XMLCh * Wrapper4InputSource::getStringData (  )  const [virtual]

    This wrapper doesn't support string data.

    Implements DOMLSInput.

    virtual InputSource* Wrapper4InputSource::getByteStream (  )  const [virtual]

    Makes the byte stream for this input source.

    The function will call the makeStream of the wrapped input source. The returned stream becomes the parser's property.

    See also:
    InputSource

    Implements DOMLSInput.

    virtual const XMLCh* Wrapper4InputSource::getEncoding (  )  const [virtual]

    An input source can be set to force the parser to assume a particular encoding for the data that input source represents, via the setEncoding() method.

    This method will delegate to the wrapped input source to return name of the encoding that is to be forced. If the encoding has never been forced, it returns a null pointer.

    Returns:
    The forced encoding, or null if none was supplied.
    See also:
    setEncoding

    Implements DOMLSInput.

    const XMLCh* Wrapper4InputSource::getPublicId (  )  const [virtual]

    Get the public identifier for this input source.

    Delegated to the wrapped input source object.

    Returns:
    The public identifier, or null if none was supplied.
    See also:
    setPublicId

    Implements DOMLSInput.

    const XMLCh* Wrapper4InputSource::getSystemId (  )  const [virtual]

    Get the system identifier for this input source.

    Delegated to the wrapped input source object.

    If the system ID is a URL, it will be fully resolved.

    Returns:
    The system identifier.
    See also:
    setSystemId

    Implements DOMLSInput.

    const XMLCh * Wrapper4InputSource::getBaseURI (  )  const [virtual]

    Get the base URI to be used for resolving relative URIs to absolute URIs.

    If the baseURI is itself a relative URI, the behavior is implementation dependent. Delegated to the wrapped intput source object.

    Returns:
    The base URI.
    See also:
    setBaseURI
    Since:
    DOM Level 3

    Implements DOMLSInput.

    bool Wrapper4InputSource::getIssueFatalErrorIfNotFound (  )  const [virtual]

    Get the flag that indicates if the parser should issue fatal error if this input source is not found.

    Delegated to the wrapped input source object.

    Returns:
    True if the parser should issue fatal error if this input source is not found. False if the parser issue warning message instead.
    See also:
    setIssueFatalErrorIfNotFound

    Implements DOMLSInput.

    void Wrapper4InputSource::setStringData ( const XMLCh data  )  [virtual]

    This wrapper only exposes the given InputSource, no setting allowed.

    Implements DOMLSInput.

    void Wrapper4InputSource::setByteStream ( InputSource stream  )  [virtual]

    This wrapper only exposes the given InputSource, no setting allowed.

    Implements DOMLSInput.

    void Wrapper4InputSource::setEncoding ( const XMLCh *const   encodingStr  )  [virtual]

    Set the encoding which will be required for use with the XML text read via a stream opened by this input source.

    This will update the wrapped input source object.

    This is usually not set, allowing the encoding to be sensed in the usual XML way. However, in some cases, the encoding in the file is known to be incorrect because of intermediate transcoding, for instance encapsulation within a MIME document.

    Parameters:
    encodingStr The name of the encoding to force.

    Implements DOMLSInput.

    void Wrapper4InputSource::setPublicId ( const XMLCh *const   publicId  )  [virtual]

    Set the public identifier for this input source.

    This will update the wrapped input source object.

    The public identifier is always optional: if the application writer includes one, it will be provided as part of the location information.

    Parameters:
    publicId The public identifier as a string.
    See also:
    Locator::getPublicId

    SAXParseException::getPublicId

    getPublicId

    Implements DOMLSInput.

    void Wrapper4InputSource::setSystemId ( const XMLCh *const   systemId  )  [virtual]

    Set the system identifier for this input source.

    This will update the wrapped input source object.

    The system id is always required. The public id may be used to map to another system id, but the system id must always be present as a fall back.

    If the system ID is a URL, it must be fully resolved.

    Parameters:
    systemId The system identifier as a string.
    See also:
    getSystemId

    Locator::getSystemId

    SAXParseException::getSystemId

    Implements DOMLSInput.

    void Wrapper4InputSource::setBaseURI ( const XMLCh *const  baseURI  )  [virtual]

    Set the base URI to be used for resolving relative URIs to absolute URIs.

    If the baseURI is itself a relative URI, the behavior is implementation dependent. This will update the wrapped input source object.

    Parameters:
    baseURI The base URI.
    See also:
    getBaseURI
    Since:
    DOM Level 3

    Implements DOMLSInput.

    void Wrapper4InputSource::setIssueFatalErrorIfNotFound ( bool  flag  )  [virtual]

    Indicates if the parser should issue fatal error if this input source is not found.

    If set to false, the parser issue warning message instead. This will update the wrapped input source object.

    Parameters:
    flag True if the parser should issue fatal error if this input source is not found. If set to false, the parser issue warning message instead. (Default: true)
    See also:
    getIssueFatalErrorIfNotFound

    Implements DOMLSInput.

    void Wrapper4InputSource::release (  )  [virtual]

    Called to indicate that this DOMInputSource is no longer in use and that the implementation may relinquish any resources associated with it.

    Access to a released object will lead to unexpected result.

    Implements DOMLSInput.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/RuntimeException_8hpp-source.html0000644000175000017500000001100611363620004024114 0ustar borisboris Xerces-C++: RuntimeException.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLFormatTarget-members.html0000644000175000017500000001005411363620006024017 0ustar borisboris Xerces-C++: Member List

    XMLFormatTarget Member List

    This is the complete list of members for XMLFormatTarget, including all inherited members.

    flush()XMLFormatTarget [virtual]
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    writeChars(const XMLByte *const toWrite, const XMLSize_t count, XMLFormatter *const formatter)=0XMLFormatTarget [pure virtual]
    XMemory()XMemory [protected]
    XMLFormatTarget()XMLFormatTarget [protected]
    ~XMLFormatTarget()XMLFormatTarget [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMNamedNodeMap-members.html0000644000175000017500000001023411363620005023666 0ustar borisboris Xerces-C++: Member List

    DOMNamedNodeMap Member List

    This is the complete list of members for DOMNamedNodeMap, including all inherited members.

    DOMNamedNodeMap()DOMNamedNodeMap [protected]
    getLength() const =0DOMNamedNodeMap [pure virtual]
    getNamedItem(const XMLCh *name) const =0DOMNamedNodeMap [pure virtual]
    getNamedItemNS(const XMLCh *namespaceURI, const XMLCh *localName) const =0DOMNamedNodeMap [pure virtual]
    item(XMLSize_t index) const =0DOMNamedNodeMap [pure virtual]
    removeNamedItem(const XMLCh *name)=0DOMNamedNodeMap [pure virtual]
    removeNamedItemNS(const XMLCh *namespaceURI, const XMLCh *localName)=0DOMNamedNodeMap [pure virtual]
    setNamedItem(DOMNode *arg)=0DOMNamedNodeMap [pure virtual]
    setNamedItemNS(DOMNode *arg)=0DOMNamedNodeMap [pure virtual]
    ~DOMNamedNodeMap()DOMNamedNodeMap [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMErrorHandler_8hpp-source.html0000644000175000017500000001772311363620004023555 0ustar borisboris Xerces-C++: DOMErrorHandler.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLDocumentHandler.png0000644000175000017500000000201311363620006022660 0ustar borisboris‰PNG  IHDR"ˆ±`û¹PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf¡IDATxœíš]Žã „ÍË<7€¹Áî…ZZ)÷?ÂÒÝØ8!6ŒÒ¤­ •Q 1)>óã(©Y–'!ÛÕWŸŒˆË$jkµ%M”ü¬¡²¥Íwد¹»[ÊÒDÉÔѱ¿Qª¥qJ7™ô08p©jŒ5n=—*é –ÛY;`%ÓÔ³1¢äƒuùhòmKå'Yœ{ª‰>؈7øe)´DdGá-Ö¥ &âY+DÎ!¢utFd¹}œÑf ‘YV"[¦éaÖöDfà¬Ù¼4xzp©ä½Fû‰·ͳfxs®{mÑëšDmM¢¶&Q[¿œèrߎ:ôõÞî:t=¢h<êrD_·›6ƒ®GtÁ•=‰ÚšDmM¢¶&Q[o%ºÉ dˆ„l­„l­„l­„l­„l­„l­„l­„l­„l­„l­„l­„l­„l­„l­„lz­þ¶õ¯ÝDÒêOÐ7 YM¢¶Õ$j[­6žþ’B9¢séÅžB©þˆÈ¹ÍÛªô…ð”ˆPð)¤“Ž«?!âw,„¸uÑOä°WçSG‹tix•…(½=Ö¹Ð$Š÷Dޱ'F=$òØ{÷8†kQÀ÷{~=·¤Â9QtÙÙ™±.4ˆˆ¯…zޝ#ŸûàÃ9"yöмŽòhåÃ1öÅM {$™"€@-Óåñ[ZD‘æ1"gô'¼3¢ó|äá¬Çh#òë5s圈'*†mHÖ£çJƒh[Gq·ŽÖ½¶R–ù홵¢­›ÖÑ^Ãu‡»,`qw?Z‰‚ ì/{mýŽƒ¼~Üýˆ3ø²×v÷#–×È={M¢IôiD/çóÒߎþZIøÚÙ|[aIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classXMLElementDecl.html0000644000175000017500000016420411363620006022160 0ustar borisboris Xerces-C++: XMLElementDecl Class Reference

    XMLElementDecl Class Reference

    This class defines the core information of an element declaration. More...

    Inheritance diagram for XMLElementDecl:

    XMemory

    List of all members.

    Public Types

    enum  CreateReasons {
      NoReason, Declared, AttList, InContentModel,
      AsRootElem, JustFaultIn
    }
    enum  CharDataOpts { NoCharData, SpacesOk, AllCharData }
    enum  objectType { Schema, DTD, UnKnown }

    Public Member Functions

    virtual XMLElementDecl::objectType getObjectType () const =0
    Destructor
    virtual ~XMLElementDecl ()
    Virual ElementDecl interface
    virtual XMLAttDefListgetAttDefList () const =0
     Get a list of attributes defined for this element.
    virtual CharDataOpts getCharDataOpts () const =0
     The character data options for this element type.
    virtual bool hasAttDefs () const =0
     Indicate whether this element type defined any attributes.
    virtual const ContentSpecNode * getContentSpec () const =0
     Get a pointer to the content spec node.
    virtual ContentSpecNode * getContentSpec ()=0
     Get a pointer to the content spec node.
    virtual void setContentSpec (ContentSpecNode *toAdopt)=0
     Set the content spec node object for this element type.
    virtual XMLContentModelgetContentModel ()=0
     Get a pointer to the abstract content model.
    virtual void setContentModel (XMLContentModel *const newModelToAdopt)=0
     Set the content model object for this element type.
    virtual const XMLChgetFormattedContentModel () const =0
     Geta formatted string of the content model.
    Getter methods
    const XMLChgetBaseName () const
     Get the base name of this element type.
    XMLChgetBaseName ()
    unsigned int getURI () const
     Get the URI id of this element type.
    const QNamegetElementName () const
     Get the QName of this element type.
    QNamegetElementName ()
    const XMLChgetFullName () const
     Get the full name of this element type.
    CreateReasons getCreateReason () const
     Get the create reason for this element type.
    XMLSize_t getId () const
     Get the element decl pool id for this element type.
    bool isDeclared () const
     Indicate whether this element type has been declared yet.
    bool isExternal () const
     Indicate whether this element type has been declared externally.
    MemoryManagergetMemoryManager () const
     Get the memory manager.
    Setter methods
    void setElementName (const XMLCh *const prefix, const XMLCh *const localPart, const int uriId)
     Set the element name object for this element type.
    void setElementName (const XMLCh *const rawName, const int uriId)
     Set the element name object for this element type.
    void setElementName (const QName *const elementName)
     Set the element name object for this element type.
    void setCreateReason (const CreateReasons newReason)
     Update the create reason for this element type.
    void setId (const XMLSize_t newId)
     Set the element decl pool id for this element type.
    void setExternalElemDeclaration (const bool aValue)
     Set the element decl to indicate external declaration.

    Static Public Member Functions

    static void storeElementDecl (XSerializeEngine &serEng, XMLElementDecl *const element)
    static XMLElementDeclloadElementDecl (XSerializeEngine &serEng)

    Static Public Attributes

    static const unsigned int fgInvalidElemId
    static const unsigned int fgPCDataElemId
    static const XMLCh fgPCDataElemName []

    Protected Member Functions

     XMLElementDecl (MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)


    Detailed Description

    This class defines the core information of an element declaration.

    Each validator (DTD, Schema, etc...) will have its own information that it associations with the declaration of an element, but they must all share at least this core information, i.e. they must all derive from this class. The set of info enforced at this level is driven by the needs of XML 1.0 spec validation and well formedness checks.

    This class defines some special element id values for invalid elements and PCDATA elements, as well as a string for the special PCDATA element name. All validators must honor these special values in order to allow content models to work generically (i.e. to let code know when its dealing with invalid or PCDATA element ids without having to know what type of validator its messing with.)


    Member Enumeration Documentation

    Enumerator:
    NoReason 
    Declared 
    AttList 
    InContentModel 
    AsRootElem 
    JustFaultIn 

    Enumerator:
    NoCharData 
    SpacesOk 
    AllCharData 

    Enumerator:
    Schema 
    DTD 
    UnKnown 


    Constructor & Destructor Documentation

    virtual XMLElementDecl::~XMLElementDecl (  )  [virtual]

    XMLElementDecl::XMLElementDecl ( MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager  )  [protected]


    Member Function Documentation

    virtual XMLAttDefList& XMLElementDecl::getAttDefList (  )  const [pure virtual]

    Get a list of attributes defined for this element.

    The derived class should return a reference to some member object which implements the XMLAttDefList interface. This object gives the scanner the ability to look through the attributes defined for this element.

    It is done this way for efficiency, though of course this is not thread safe. The scanner guarantees that it won't ever call this method in any nested way, but the outside world must be careful about when it calls this method, and optimally never would.

    virtual CharDataOpts XMLElementDecl::getCharDataOpts (  )  const [pure virtual]

    The character data options for this element type.

    The derived class should return an appropriate character data opts value which correctly represents its tolerance towards whitespace or character data inside of its instances. This allows the scanner to do all of the validation of character data.

    virtual bool XMLElementDecl::hasAttDefs (  )  const [pure virtual]

    Indicate whether this element type defined any attributes.

    The derived class should return a boolean that indicates whether this element has any attributes defined for it or not. This is an optimization that allows the scanner to skip some work if no attributes exist.

    virtual const ContentSpecNode* XMLElementDecl::getContentSpec (  )  const [pure virtual]

    Get a pointer to the content spec node.

    This method will return a const pointer to the content spec node object of this element.

    Returns:
    A const pointer to the element's content spec node

    virtual ContentSpecNode* XMLElementDecl::getContentSpec (  )  [pure virtual]

    Get a pointer to the content spec node.

    This method is identical to the previous one, except that it is non const.

    virtual void XMLElementDecl::setContentSpec ( ContentSpecNode *  toAdopt  )  [pure virtual]

    Set the content spec node object for this element type.

    This method will adopt the based content spec node object. This is called by the actual validator which is parsing its DTD or Schema or whatever and store it on the element decl object via this method.

    Parameters:
    toAdopt This method will adopt the passed content node spec object. Any previous object is destroyed.

    virtual XMLContentModel* XMLElementDecl::getContentModel (  )  [pure virtual]

    Get a pointer to the abstract content model.

    This method will return a const pointer to the content model object of this element. This class is a simple abstraction that allows an element to define and use multiple, specialized content model types internally but still allow the outside world to do simple stuff with them.

    Returns:
    A pointer to the element's content model, via the basic abstract content model type.

    virtual void XMLElementDecl::setContentModel ( XMLContentModel *const   newModelToAdopt  )  [pure virtual]

    Set the content model object for this element type.

    This method will adopt the based content model object. This is called by the actual validator which is parsing its DTD or Schema or whatever a creating an element decl. It will build what it feels is the correct content model type object and store it on the element decl object via this method.

    Parameters:
    newModelToAdopt This method will adopt the passed content model object. Any previous object is destroyed.

    virtual const XMLCh* XMLElementDecl::getFormattedContentModel (  )  const [pure virtual]

    Geta formatted string of the content model.

    This method is a convenience method which will create a formatted representation of the content model of the element. It will not always exactly recreate the original model, since some normalization or or reformatting may occur. But, it will be a technically accurate representation of the original content model.

    Returns:
    A pointer to an internal buffer which contains the formatted content model. The caller does not own this buffer and should copy it if it needs to be kept around.

    const XMLCh * XMLElementDecl::getBaseName (  )  const

    Get the base name of this element type.

    Return the base name part of the element's name. This is the same regardless of whether namespaces are enabled or not.

    Returns:
    A const pointer to the base name of the element decl.

    References QName::getLocalPart().

    XMLCh * XMLElementDecl::getBaseName (  ) 

    References QName::getLocalPart().

    unsigned int XMLElementDecl::getURI (  )  const

    Get the URI id of this element type.

    Return the URI Id of this element.

    Returns:
    The URI Id of the element decl, or the emptyNamespaceId if not applicable.

    References QName::getURI().

    const QName * XMLElementDecl::getElementName (  )  const

    Get the QName of this element type.

    Return the QName part of the element's name. This is the same regardless of whether namespaces are enabled or not.

    Returns:
    A const pointer to the QName of the element decl.

    QName * XMLElementDecl::getElementName (  ) 

    const XMLCh * XMLElementDecl::getFullName (  )  const

    Get the full name of this element type.

    Return the full name of the element. If namespaces are not enabled, then this is the qName. Else it is the {uri}baseName form. For those validators that always require namespace processing, it will always be in the latter form because namespace processing will always be on.

    References QName::getRawName().

    XMLElementDecl::CreateReasons XMLElementDecl::getCreateReason (  )  const

    Get the create reason for this element type.

    This method returns an enumeration which indicates why this element declaration exists. Elements can be used before they are actually declared, so they will often be faulted into the pool and marked as to why they are there.

    Returns:
    An enumerated value that indicates the reason why this element was added to the element decl pool.

    XMLSize_t XMLElementDecl::getId (  )  const

    Get the element decl pool id for this element type.

    This method will return the element decl pool id of this element declaration. This uniquely identifies this element type within the parse event that it is declared within. This value is assigned by the grammar whose decl pool this object belongs to.

    Returns:
    The element decl id of this element declaration.

    bool XMLElementDecl::isDeclared (  )  const

    Indicate whether this element type has been declared yet.

    This method returns a boolean that indicates whether this element has been declared yet. There are a number of reasons why an element declaration can be faulted in, but eventually it must be declared or its an error. See the CreateReasons enumeration.

    Returns:
    true if this element has been declared, else false.

    References Declared.

    bool XMLElementDecl::isExternal (  )  const

    Indicate whether this element type has been declared externally.

    This method returns a boolean that indicates whether this element has been declared externally.

    Returns:
    true if this element has been declared externally, else false.

    MemoryManager * XMLElementDecl::getMemoryManager (  )  const

    Get the memory manager.

    This method returns the configurable memory manager used by the element declaration for dynamic allocation/deallocation.

    Returns:
    the memory manager

    void XMLElementDecl::setElementName ( const XMLCh *const   prefix,
    const XMLCh *const   localPart,
    const int  uriId 
    )

    Set the element name object for this element type.

    This method will adopt the based content spec node object. This is called by the actual validator which is parsing its DTD or Schema or whatever and store it on the element decl object via this method.

    Parameters:
    prefix Prefix of the element
    localPart Base Name of the element
    uriId The uriId of the element

    void XMLElementDecl::setElementName ( const XMLCh *const   rawName,
    const int  uriId 
    )

    Set the element name object for this element type.

    This method will adopt the based content spec node object. This is called by the actual validator which is parsing its DTD or Schema or whatever and store it on the element decl object via this method.

    Parameters:
    rawName Full Name of the element
    uriId The uriId of the element

    void XMLElementDecl::setElementName ( const QName *const   elementName  ) 

    Set the element name object for this element type.

    This method will adopt the based content spec node object. This is called by the actual validator which is parsing its DTD or Schema or whatever and store it on the element decl object via this method.

    Parameters:
    elementName QName of the element

    void XMLElementDecl::setCreateReason ( const CreateReasons  newReason  ) 

    Update the create reason for this element type.

    This method will update the 'create reason' field for this element decl object. As the validator parses its DTD, Schema, etc... it will encounter various references to an element declaration, which will cause the element declaration to either be declared or to be faulted into the pool in preparation for some future declaration. As it does so,it will update this field to indicate the current status of the decl object.

    void XMLElementDecl::setId ( const XMLSize_t  newId  ) 

    Set the element decl pool id for this element type.

    This method will set the pool id of this element decl. This is called by the grammar which created this object, and will provide this decl object with a unique id within the parse event that created it.

    void XMLElementDecl::setExternalElemDeclaration ( const bool  aValue  ) 

    Set the element decl to indicate external declaration.

    virtual XMLElementDecl::objectType XMLElementDecl::getObjectType (  )  const [pure virtual]

    static void XMLElementDecl::storeElementDecl ( XSerializeEngine &  serEng,
    XMLElementDecl *const   element 
    ) [static]

    static XMLElementDecl* XMLElementDecl::loadElementDecl ( XSerializeEngine &  serEng  )  [static]


    Member Data Documentation

    const unsigned int XMLElementDecl::fgInvalidElemId [static]

    const unsigned int XMLElementDecl::fgPCDataElemId [static]


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_vars.html0000644000175000017500000000516311363620005021430 0ustar borisboris Xerces-C++: Class Members - Variables
     

    - c -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_eval_0x75.html0000644000175000017500000002446511363620005022175 0ustar borisboris Xerces-C++: Class Members - Enumerator
     

    - u -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMLSInput_8hpp.html0000644000175000017500000000461711363620005021225 0ustar borisboris Xerces-C++: DOMLSInput.hpp File Reference

    DOMLSInput.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMLSInput
     This interface represents a single input source for an XML entity. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMLSINPUT_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMLSINPUT_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XSNamedMap_8hpp.html0000644000175000017500000000433311363620005021257 0ustar borisboris Xerces-C++: XSNamedMap.hpp File Reference

    XSNamedMap.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XSNamedMap< TVal >

    Defines

    #define XERCESC_INCLUDE_GUARD_XSNAMEDMAP_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XSNAMEDMAP_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLResourceIdentifier-members.html0000644000175000017500000001344211363620006025216 0ustar borisboris Xerces-C++: Member List

    XMLResourceIdentifier Member List

    This is the complete list of members for XMLResourceIdentifier, including all inherited members.

    ExternalEntity enum valueXMLResourceIdentifier
    getBaseURI() const XMLResourceIdentifier
    getLocator() const XMLResourceIdentifier
    getNameSpace() const XMLResourceIdentifier
    getPublicId() const XMLResourceIdentifier
    getResourceIdentifierType() const XMLResourceIdentifier
    getSchemaLocation() const XMLResourceIdentifier
    getSystemId() const XMLResourceIdentifier
    ResourceIdentifierType enum nameXMLResourceIdentifier
    SchemaGrammar enum valueXMLResourceIdentifier
    SchemaImport enum valueXMLResourceIdentifier
    SchemaInclude enum valueXMLResourceIdentifier
    SchemaRedefine enum valueXMLResourceIdentifier
    UnKnown enum valueXMLResourceIdentifier
    XMLResourceIdentifier(const ResourceIdentifierType resourceIdentitiferType, const XMLCh *const systemId, const XMLCh *const nameSpace=0, const XMLCh *const publicId=0, const XMLCh *const baseURI=0, const Locator *locator=0)XMLResourceIdentifier
    ~XMLResourceIdentifier()XMLResourceIdentifier


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/deprecated.html0000644000175000017500000000256111363620005020464 0ustar borisboris Xerces-C++: Deprecated List

    Deprecated List

    Class SAXParser
    This interface has been replaced by the SAX2 interface, which includes Namespace support. See SAX2XMLReader for more information.


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/PSVIAttributeList_8hpp-source.html0000644000175000017500000005006211363620004024120 0ustar borisboris Xerces-C++: PSVIAttributeList.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/HexBin_8hpp-source.html0000644000175000017500000002334211363620004021775 0ustar borisboris Xerces-C++: HexBin.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMXPathEvaluator.html0000644000175000017500000005271411363620006022667 0ustar borisboris Xerces-C++: DOMXPathEvaluator Class Reference

    DOMXPathEvaluator Class Reference

    The evaluation of XPath expressions is provided by DOMXPathEvaluator. More...

    Inheritance diagram for DOMXPathEvaluator:

    DOMDocument

    List of all members.

    Public Member Functions

    Destructor
    virtual ~DOMXPathEvaluator ()
     Destructor.
    Functions introduced in DOM Level 3
    virtual DOMXPathExpressioncreateExpression (const XMLCh *expression, const DOMXPathNSResolver *resolver)=0
     Creates a parsed XPath expression with resolved namespaces.
    virtual DOMXPathNSResolvercreateNSResolver (const DOMNode *nodeResolver)=0
     Adapts any DOM node to resolve namespaces so that an XPath expression can be easily evaluated relative to the context of the node where it appeared within the document.
    virtual DOMXPathResultevaluate (const XMLCh *expression, const DOMNode *contextNode, const DOMXPathNSResolver *resolver, DOMXPathResult::ResultType type, DOMXPathResult *result)=0
     Evaluates an XPath expression string and returns a result of the specified type if possible.

    Protected Member Functions

    Hidden constructors
     DOMXPathEvaluator ()


    Detailed Description

    The evaluation of XPath expressions is provided by DOMXPathEvaluator.

    In a DOM implementation which supports the XPath feature, the DOMXPathEvaluator interface will be implemented on the same object which implements the Document interface permitting it to be obtained by casting or by using the DOM Level 3 getFeature method. In this case the implementation obtained from the Document supports the XPath DOM module and is compatible with the XPath 1.0 specification. Evaluation of expressions with specialized extension functions or variables may not work in all implementations and is, therefore, not portable. XPathEvaluator implementations may be available from other sources that could provide specific support for specialized extension functions or variables as would be defined by other specifications.

    Since:
    DOM Level 3

    Constructor & Destructor Documentation

    DOMXPathEvaluator::DOMXPathEvaluator (  )  [protected]

    virtual DOMXPathEvaluator::~DOMXPathEvaluator (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual DOMXPathExpression* DOMXPathEvaluator::createExpression ( const XMLCh expression,
    const DOMXPathNSResolver resolver 
    ) [pure virtual]

    Creates a parsed XPath expression with resolved namespaces.

    This is useful when an expression will be reused in an application since it makes it possible to compile the expression string into a more efficient internal form and preresolve all namespace prefixes which occur within the expression.

    Parameters:
    expression of type XMLCh - The XPath expression string to be parsed.
    resolver of type XPathNSResolver - The resolver permits translation of all prefixes, including the xml namespace prefix, within the XPath expression into appropriate namespace URIs. If this is specified as null, any namespace prefix within the expression will result in DOMException being thrown with the code NAMESPACE_ERR.
    Returns:
    DOMXPathExpression The compiled form of the XPath expression.
    Exceptions:
    <code>DOMXPathException</code> INVALID_EXPRESSION_ERR: Raised if the expression is not legal according to the rules of the DOMXPathEvaluator.
    DOMException NAMESPACE_ERR: Raised if the expression contains namespace prefixes which cannot be resolved by the specified XPathNSResolver.
    Since:
    DOM Level 3

    virtual DOMXPathNSResolver* DOMXPathEvaluator::createNSResolver ( const DOMNode nodeResolver  )  [pure virtual]

    Adapts any DOM node to resolve namespaces so that an XPath expression can be easily evaluated relative to the context of the node where it appeared within the document.

    This adapter works like the DOM Level 3 method lookupNamespaceURI on nodes in resolving the namespaceURI from a given prefix using the current information available in the node's hierarchy at the time lookupNamespaceURI is called. also correctly resolving the implicit xml prefix.

    Parameters:
    nodeResolver of type DOMNode The node to be used as a context for namespace resolution. If this parameter is null, an unpopulated DOMXPathNSResolver is returned, which can be populated using the Xerces-C extension DOMXPathNSResolver::addNamespaceBinding().
    Returns:
    DOMXPathNSResolver The object which resolves namespaces with respect to the definitions in scope for the specified node.

    virtual DOMXPathResult* DOMXPathEvaluator::evaluate ( const XMLCh expression,
    const DOMNode contextNode,
    const DOMXPathNSResolver resolver,
    DOMXPathResult::ResultType  type,
    DOMXPathResult result 
    ) [pure virtual]

    Evaluates an XPath expression string and returns a result of the specified type if possible.

    Parameters:
    expression of type XMLCh The XPath expression string to be parsed and evaluated.
    contextNode of type DOMNode The context is context node for the evaluation of this XPath expression. If the DOMXPathEvaluator was obtained by casting the DOMDocument then this must be owned by the same document and must be a DOMDocument, DOMElement, DOMAttribute, DOMText, DOMCDATASection, DOMComment, DOMProcessingInstruction, or XPathNamespace node. If the context node is a DOMText or a DOMCDATASection, then the context is interpreted as the whole logical text node as seen by XPath, unless the node is empty in which case it may not serve as the XPath context.
    resolver of type XPathNSResolver The resolver permits translation of all prefixes, including the xml namespace prefix, within the XPath expression into appropriate namespace URIs. If this is specified as null, any namespace prefix within the expression will result in DOMException being thrown with the code NAMESPACE_ERR.
    type - If a specific type is specified, then the result will be returned as the corresponding type. This must be one of the codes of the DOMXPathResult interface.
    result of type DOMXPathResult* - The result specifies a specific result object which may be reused and returned by this method. If this is specified as null or the implementation does not reuse the specified result, a new result object will be constructed and returned.
    Returns:
    DOMXPathResult* The result of the evaluation of the XPath expression.
    Exceptions:
    <code>DOMXPathException</code> INVALID_EXPRESSION_ERR: Raised if the expression is not legal according to the rules of the DOMXPathEvaluator TYPE_ERR: Raised if the result cannot be converted to return the specified type.
    <code>DOMException</code> NAMESPACE_ERR: Raised if the expression contains namespace prefixes which cannot be resolved by the specified XPathNSResolver. WRONG_DOCUMENT_ERR: The DOMNode is from a document that is not supported by this DOMXPathEvaluator. NOT_SUPPORTED_ERR: The DOMNode is not a type permitted as an XPath context node or the request type is not permitted by this DOMXPathEvaluator.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLPlatformUtils-members.html0000644000175000017500000003516111363620006024233 0ustar borisboris Xerces-C++: Member List

    XMLPlatformUtils Member List

    This is the complete list of members for XMLPlatformUtils, including all inherited members.

    alignPointerForNewBlockAllocation(XMLSize_t ptrSize)XMLPlatformUtils [static]
    closeFile(FileHandle theFile, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLPlatformUtils [static]
    closeMutex(void *const mtxHandle, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLPlatformUtils [static]
    curFilePos(FileHandle theFile, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLPlatformUtils [static]
    fgAtomicMutexXMLPlatformUtils [static]
    fgDefaultPanicHandlerXMLPlatformUtils [static]
    fgFileMgrXMLPlatformUtils [static]
    fgMemoryManagerXMLPlatformUtils [static]
    fgMutexMgrXMLPlatformUtils [static]
    fgNetAccessorXMLPlatformUtils [static]
    fgSSE2okXMLPlatformUtils [static]
    fgTransServiceXMLPlatformUtils [static]
    fgUserPanicHandlerXMLPlatformUtils [static]
    fgXMLChBigEndianXMLPlatformUtils [static]
    fileSize(FileHandle theFile, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLPlatformUtils [static]
    getCurrentDirectory(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLPlatformUtils [static]
    getCurrentMillis()XMLPlatformUtils [static]
    getFullPath(const XMLCh *const srcPath, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLPlatformUtils [static]
    Initialize(const char *const locale=XMLUni::fgXercescDefaultLocale, const char *const nlsHome=0, PanicHandler *const panicHandler=0, MemoryManager *const memoryManager=0)XMLPlatformUtils [static]
    Initialize(XMLSize_t initialDOMHeapAllocSize, XMLSize_t maxDOMHeapAllocSize, XMLSize_t maxDOMSubAllocationSize, const char *const locale=XMLUni::fgXercescDefaultLocale, const char *const nlsHome=0, PanicHandler *const panicHandler=0, MemoryManager *const memoryManager=0)XMLPlatformUtils [static]
    isAnySlash(XMLCh c)XMLPlatformUtils [static]
    isNELRecognized()XMLPlatformUtils [static]
    isRelative(const XMLCh *const toCheck, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLPlatformUtils [static]
    isStrictIANAEncoding()XMLPlatformUtils [static]
    loadMsgSet(const XMLCh *const msgDomain)XMLPlatformUtils [static]
    lockMutex(void *const mtxHandle)XMLPlatformUtils [static]
    makeFileMgr(MemoryManager *const manager)XMLPlatformUtils [static]
    makeMutex(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLPlatformUtils [static]
    makeMutexMgr(MemoryManager *const manager)XMLPlatformUtils [static]
    openFile(const char *const fileName, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLPlatformUtils [static]
    openFile(const XMLCh *const fileName, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLPlatformUtils [static]
    openFileToWrite(const char *const fileName, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLPlatformUtils [static]
    openFileToWrite(const XMLCh *const fileName, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLPlatformUtils [static]
    openStdInHandle(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLPlatformUtils [static]
    panic(const PanicHandler::PanicReasons reason)XMLPlatformUtils [static]
    readFileBuffer(FileHandle theFile, const XMLSize_t toRead, XMLByte *const toFill, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLPlatformUtils [static]
    recognizeNEL(bool state, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLPlatformUtils [static]
    removeDotDotSlash(XMLCh *const srcPath, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLPlatformUtils [static]
    removeDotSlash(XMLCh *const srcPath, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLPlatformUtils [static]
    resetFile(FileHandle theFile, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLPlatformUtils [static]
    strictIANAEncoding(const bool state)XMLPlatformUtils [static]
    Terminate()XMLPlatformUtils [static]
    unlockMutex(void *const mtxHandle)XMLPlatformUtils [static]
    weavePaths(const XMLCh *const basePath, const XMLCh *const relativePath, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLPlatformUtils [static]
    writeBufferToFile(FileHandle const theFile, XMLSize_t toWrite, const XMLByte *const toFlush, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLPlatformUtils [static]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/UnsupportedEncodingException_8hpp-source.html0000644000175000017500000001111211363620004026466 0ustar borisboris Xerces-C++: UnsupportedEncodingException.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_func_0x6f.html0000644000175000017500000001503011363620005022245 0ustar borisboris Xerces-C++: Class Members - Functions
     

    - o -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLStringTokenizer.html0000644000175000017500000003265411363620006023143 0ustar borisboris Xerces-C++: XMLStringTokenizer Class Reference

    XMLStringTokenizer Class Reference

    The string tokenizer class breaks a string into tokens. More...

    Inheritance diagram for XMLStringTokenizer:

    XMemory

    List of all members.

    Public Member Functions

    Constructors
     XMLStringTokenizer (const XMLCh *const srcStr, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Constructs a string tokenizer for the specified string.
     XMLStringTokenizer (const XMLCh *const srcStr, const XMLCh *const delim, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Constructs a string tokenizer for the specified string.
    Destructor.
     ~XMLStringTokenizer ()
    Management Function
    bool hasMoreTokens ()
     Tests if there are more tokens available from this tokenizer's string.
    unsigned int countTokens ()
     Calculates the number of times that this tokenizer's nextToken method can be called to return a valid token.
    XMLChnextToken ()
     Returns the next token from this string tokenizer.


    Detailed Description

    The string tokenizer class breaks a string into tokens.

    The XMLStringTokenizer methods do not distinguish among identifiers, numbers, and quoted strings, nor do they recognize and skip comments

    A XMLStringTokenizer object internally maintains a current position within the string to be tokenized. Some operations advance this current position past the characters processed.


    Constructor & Destructor Documentation

    XMLStringTokenizer::XMLStringTokenizer ( const XMLCh *const   srcStr,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    Constructs a string tokenizer for the specified string.

    The tokenizer uses the default delimiter set, which is "\t\n\r\f": the space character, the tab character, the newline character, the carriage-return character, and the form-feed character. Delimiter characters themselves will not be treated as tokens.

    Parameters:
    srcStr The string to be parsed.
    manager Pointer to the memory manager to be used to allocate objects.

    XMLStringTokenizer::XMLStringTokenizer ( const XMLCh *const   srcStr,
    const XMLCh *const   delim,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    Constructs a string tokenizer for the specified string.

    The characters in the delim argument are the delimiters for separating tokens. Delimiter characters themselves will not be treated as tokens.

    Parameters:
    srcStr The string to be parsed.
    delim The set of delimiters.
    manager Pointer to the memory manager to be used to allocate objects.

    XMLStringTokenizer::~XMLStringTokenizer (  ) 


    Member Function Documentation

    bool XMLStringTokenizer::hasMoreTokens (  ) 

    Tests if there are more tokens available from this tokenizer's string.

    Returns true if and only if there is at least one token in the string after the current position; false otherwise.

    unsigned int XMLStringTokenizer::countTokens (  ) 

    Calculates the number of times that this tokenizer's nextToken method can be called to return a valid token.

    The current position is not advanced.

    Returns the number of tokens remaining in the string using the current delimiter set.

    XMLCh* XMLStringTokenizer::nextToken (  ) 

    Returns the next token from this string tokenizer.

    Function allocated, function managed (fafm). The calling function does not need to worry about deleting the returned pointer.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMEntity_8hpp.html0000644000175000017500000000462511363620005021142 0ustar borisboris Xerces-C++: DOMEntity.hpp File Reference

    DOMEntity.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMEntity
     This interface represents an entity, either parsed or unparsed, in an XML document. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMENTITY_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMENTITY_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLUri_8hpp.html0000644000175000017500000000424511363620005020444 0ustar borisboris Xerces-C++: XMLUri.hpp File Reference

    XMLUri.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLUri

    Defines

    #define XERCESC_INCLUDE_GUARD_XMLURI_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XMLURI_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSParticle.png0000644000175000017500000000071011363620006021243 0ustar borisboris‰PNG  IHDRHˆ¶+°ÀPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf^IDATX…í–YNÄ0 @“¾cßÀæp!¾zÿ#`;K“Ð2©ŒâdšíÕKF•ÞÞø¡¼Þ"í(üNJ!ÈE³ŒD¤6$K9³cb <Ž:Ó ´^Û¤‰ô`€pò)CºhjŸ sTîÉb4ÒFÛuܸ BDì€øÎë“ú*{?‚^¶« msØsA×E· -èÏ¡ç¯ ,3h>Ïy®C.‰’±&çs(+!*)”@Ÿ]Ê—T¨&ả»A¶€qƒ¦âÁ<ÅÒáØñ^ŸA9ºŸÆ{ꢣ>ºY†Bê7±â­ºà@<Ì‚´ {@૎w…¢öI"­¯¤˜O;MÉZ´_  Š #€Mòª@Q ¦P´‰Y5—Ê£9ndõ)Õó0@1î¦5€²×fÇë|×tÝ >µ{Êætï ºËþ–'†<ŸÔ'C)͉°IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classXSIDCDefinition-members.html0000644000175000017500000002257011363620006023730 0ustar borisboris Xerces-C++: Member List

    XSIDCDefinition Member List

    This is the complete list of members for XSIDCDefinition, including all inherited members.

    fComponentTypeXSObject [protected]
    fIdXSObject [protected]
    fIdentityConstraintXSIDCDefinition [protected]
    fKeyXSIDCDefinition [protected]
    fMemoryManagerXSObject [protected]
    fStringListXSIDCDefinition [protected]
    fXSAnnotationListXSIDCDefinition [protected]
    fXSModelXSObject [protected]
    getAnnotations()XSIDCDefinition
    getCategory() const XSIDCDefinition
    getFieldStrs()XSIDCDefinition
    getId() const XSObject [virtual]
    getName() const XSIDCDefinition [virtual]
    getNamespace()XSIDCDefinition [virtual]
    getNamespaceItem()XSIDCDefinition [virtual]
    getRefKey() const XSIDCDefinition
    getSelectorStr()XSIDCDefinition
    getType() const XSObject
    IC_CATEGORY enum nameXSIDCDefinition
    IC_KEY enum valueXSIDCDefinition
    IC_KEYREF enum valueXSIDCDefinition
    IC_UNIQUE enum valueXSIDCDefinition
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    setId(XMLSize_t id)XSObject
    XMemory()XMemory [protected]
    XSIDCDefinition(IdentityConstraint *const identityConstraint, XSIDCDefinition *const keyIC, XSAnnotation *const headAnnot, StringList *const stringList, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSIDCDefinition
    XSObject(XSConstants::COMPONENT_TYPE compType, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSObject
    ~XSIDCDefinition()XSIDCDefinition
    ~XSObject()XSObject [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMLSResourceResolver-members.html0000644000175000017500000000476211363620005025157 0ustar borisboris Xerces-C++: Member List

    DOMLSResourceResolver Member List

    This is the complete list of members for DOMLSResourceResolver, including all inherited members.

    DOMLSResourceResolver()DOMLSResourceResolver [protected]
    resolveResource(const XMLCh *const resourceType, const XMLCh *const namespaceUri, const XMLCh *const publicId, const XMLCh *const systemId, const XMLCh *const baseURI)=0DOMLSResourceResolver [pure virtual]
    ~DOMLSResourceResolver()DOMLSResourceResolver [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/Wrapper4InputSource_8hpp-source.html0000644000175000017500000004547311363620004024536 0ustar borisboris Xerces-C++: Wrapper4InputSource.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLInitializer_8hpp-source.html0000644000175000017500000003456311363620005023474 0ustar borisboris Xerces-C++: XMLInitializer.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMCharacterData_8hpp.html0000644000175000017500000000546411363620005022356 0ustar borisboris Xerces-C++: DOMCharacterData.hpp File Reference

    DOMCharacterData.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMCharacterData
     The DOMCharacterData interface extends DOMNode with a set of attributes and methods for accessing character data in the DOM. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMCHARACTERDATA_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMCHARACTERDATA_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLException.png0000644000175000017500000000060511363620006021547 0ustar borisboris‰PNG  IHDR^Pböß-PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfIDATH‰í”]ƒ ÇíËž 7ÀÝ`»Ðž¼ÿöoA#ÉÈ6C!Pé¯ãð¬“á1ÖÈýB¼ÅtØÝIÞÉ€“©æ¦C>죵V2ïÕ 0%­³Fwxy¾ð:ã(ÆÇâFc2>iÀ¦~å­½ï3|þ§¿ç6|íÿ¤ ·’áCüôjÊߦ©)ß¼?ï|ç;ßœ7u2pUZºO³C“†•c)¿IHß5O’ ƒ•ƒ6ó$Nb|–s,„0¢-ÖÆ /õ{cpã eñ‰†?ðzý;<ëqÂóÜ·Þ›âûnê_øÐ!PêÏûC¡?Éû–eeþ:¿’ÿç+ÿ'oz¬f§›A÷IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/DOMEntity_8hpp-source.html0000644000175000017500000002455511363620004022443 0ustar borisboris Xerces-C++: DOMEntity.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSAttributeDeclaration.html0000644000175000017500000006533111363620006024003 0ustar borisboris Xerces-C++: XSAttributeDeclaration Class Reference

    XSAttributeDeclaration Class Reference

    Inheritance diagram for XSAttributeDeclaration:

    XSObject XMemory

    List of all members.

    Public Member Functions

    Constructors
     XSAttributeDeclaration (SchemaAttDef *const attDef, XSSimpleTypeDefinition *const typeDef, XSAnnotation *const annot, XSModel *const xsModel, XSConstants::SCOPE scope, XSComplexTypeDefinition *enclosingCTDefinition, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     The default constructor.
    Destructor
     ~XSAttributeDeclaration ()
    overridden XSObject methods
    const XMLChgetName () const
     The name of type NCName of this declaration as defined in XML Namespaces.
    const XMLChgetNamespace ()
     The [target namespace] of this object, or null if it is unspecified.
    XSNamespaceItemgetNamespaceItem ()
     A namespace schema information item corresponding to the target namespace of the component, if it's globally declared; or null otherwise.
    XSAttributeDeclaration methods
    XSSimpleTypeDefinitiongetTypeDefinition () const
     [type definition]: A simple type definition
    XSConstants::SCOPE getScope () const
     Optional.
    XSComplexTypeDefinitiongetEnclosingCTDefinition ()
     The complex type definition for locally scoped declarations (see scope).
    XSConstants::VALUE_CONSTRAINT getConstraintType () const
     Value constraint: one of VC_NONE, VC_DEFAULT, VC_FIXED.
    const XMLChgetConstraintValue ()
     Value constraint: The actual value with respect to the [type definition ].
    XSAnnotationgetAnnotation () const
     Optional.
    bool getRequired () const
     methods needed by implementation

    Protected Attributes

    SchemaAttDef * fAttDef
    XSSimpleTypeDefinitionfTypeDefinition
    XSAnnotationfAnnotation
    XSConstants::SCOPE fScope
    XSComplexTypeDefinitionfEnclosingCTDefinition

    Friends

    class XSObjectFactory


    Constructor & Destructor Documentation

    XSAttributeDeclaration::XSAttributeDeclaration ( SchemaAttDef *const   attDef,
    XSSimpleTypeDefinition *const   typeDef,
    XSAnnotation *const   annot,
    XSModel *const   xsModel,
    XSConstants::SCOPE  scope,
    XSComplexTypeDefinition enclosingCTDefinition,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    The default constructor.

    Parameters:
    attDef 
    typeDef 
    annot 
    xsModel 
    scope 
    enclosingCTDefinition 
    manager The configurable memory manager

    XSAttributeDeclaration::~XSAttributeDeclaration (  ) 


    Member Function Documentation

    const XMLCh* XSAttributeDeclaration::getName (  )  const [virtual]

    The name of type NCName of this declaration as defined in XML Namespaces.

    Reimplemented from XSObject.

    const XMLCh* XSAttributeDeclaration::getNamespace (  )  [virtual]

    The [target namespace] of this object, or null if it is unspecified.

    Reimplemented from XSObject.

    XSNamespaceItem* XSAttributeDeclaration::getNamespaceItem (  )  [virtual]

    A namespace schema information item corresponding to the target namespace of the component, if it's globally declared; or null otherwise.

    Reimplemented from XSObject.

    XSSimpleTypeDefinition * XSAttributeDeclaration::getTypeDefinition (  )  const

    [type definition]: A simple type definition

    References fTypeDefinition.

    XSConstants::SCOPE XSAttributeDeclaration::getScope (  )  const

    Optional.

    One of SCOPE_GLOBAL, SCOPE_LOCAL, or SCOPE_ABSENT. If the scope is local, then the enclosingCTDefinition is present.

    References fScope.

    XSComplexTypeDefinition * XSAttributeDeclaration::getEnclosingCTDefinition (  ) 

    The complex type definition for locally scoped declarations (see scope).

    References fEnclosingCTDefinition.

    XSConstants::VALUE_CONSTRAINT XSAttributeDeclaration::getConstraintType (  )  const

    Value constraint: one of VC_NONE, VC_DEFAULT, VC_FIXED.

    const XMLCh* XSAttributeDeclaration::getConstraintValue (  ) 

    Value constraint: The actual value with respect to the [type definition ].

    XSAnnotation * XSAttributeDeclaration::getAnnotation (  )  const

    Optional.

    Annotation.

    References fAnnotation.

    bool XSAttributeDeclaration::getRequired (  )  const

    methods needed by implementation


    Friends And Related Function Documentation

    friend class XSObjectFactory [friend]


    Member Data Documentation

    SchemaAttDef* XSAttributeDeclaration::fAttDef [protected]


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSNamedMap.html0000644000175000017500000003711311363620006021351 0ustar borisboris Xerces-C++: XSNamedMap< TVal > Class Template Reference

    XSNamedMap< TVal > Class Template Reference

    Inheritance diagram for XSNamedMap< TVal >:

    XMemory

    List of all members.

    Public Member Functions

    Constructors
     XSNamedMap (const XMLSize_t maxElems, const XMLSize_t modulus, XMLStringPool *uriStringPool, const bool adoptElems, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
    Destructor
     ~XSNamedMap ()
    XSNamedMap methods
    XMLSize_t getLength () const
     The number of XSObjects in the XSObjectList.
    TVal * item (XMLSize_t index)
     Returns the indexth item in the collection.
    const TVal * item (XMLSize_t index) const
    TVal * itemByName (const XMLCh *compNamespace, const XMLCh *localName)
     Retrieves a component specified by local name and namespace URI.
    void addElement (TVal *const toAdd, const XMLCh *key1, const XMLCh *key2)
     methods needed by implementation

    template<class TVal>
    class XSNamedMap< TVal >


    Constructor & Destructor Documentation

    template<class TVal>
    XSNamedMap< TVal >::XSNamedMap ( const XMLSize_t  maxElems,
    const XMLSize_t  modulus,
    XMLStringPool *  uriStringPool,
    const bool  adoptElems,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    template<class TVal>
    XSNamedMap< TVal >::~XSNamedMap (  ) 


    Member Function Documentation

    template<class TVal>
    XMLSize_t XSNamedMap< TVal >::getLength (  )  const

    The number of XSObjects in the XSObjectList.

    The range of valid child object indices is 0 to mapLength-1 inclusive.

    template<class TVal>
    TVal* XSNamedMap< TVal >::item ( XMLSize_t  index  ) 

    Returns the indexth item in the collection.

    The index starts at 0. If index is greater than or equal to the number of objects in the list, this returns null.

    Parameters:
    index index into the collection.
    Returns:
    The XSObject at the indexth position in the XSObjectList, or null if that is not a valid index.

    template<class TVal>
    const TVal* XSNamedMap< TVal >::item ( XMLSize_t  index  )  const

    template<class TVal>
    TVal* XSNamedMap< TVal >::itemByName ( const XMLCh compNamespace,
    const XMLCh localName 
    )

    Retrieves a component specified by local name and namespace URI.


    applications must use the value null as the compNamespace parameter for components whose targetNamespace property is absent.

    Parameters:
    compNamespace The namespace URI of the component to retrieve.
    localName The local name of the component to retrieve.
    Returns:
    A component (of any type) with the specified local name and namespace URI, or null if they do not identify any node in this map.

    template<class TVal>
    void XSNamedMap< TVal >::addElement ( TVal *const   toAdd,
    const XMLCh key1,
    const XMLCh key2 
    )

    methods needed by implementation


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSNamespaceItem.png0000644000175000017500000000064311363620006022220 0ustar borisboris‰PNG  IHDRuPÕK' PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf9IDATX…í”KŽÃ †ñfÖ67 'Í\¨«ÜÿýmO(*eˆª´*€bûó+$áwx|‡ŸetL6b%È4À&p ‡Ø„•äcÔŒ°0SĨ˜¢˜„§.…ÞX[yvÅÅ%-";¶jÞzz“ÙÔͿ˹‡õ÷kS<®õy©ÊýϹ:ÀÖ笟­Â¾Ðwôì‘ls\Úêg±_ë9ìº^NaÏêód';ÙÉNö Xerces-C++: Class Members - Variables
     

    - f -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLAttDefList.html0000644000175000017500000004434511363620006022005 0ustar borisboris Xerces-C++: XMLAttDefList Class Reference

    XMLAttDefList Class Reference

    This class defines an abstract interface that all validators must support. More...

    Inheritance diagram for XMLAttDefList:

    XMemory

    List of all members.

    Public Member Functions

    virtual bool isEmpty () const =0
    virtual XMLAttDeffindAttDef (const unsigned int uriID, const XMLCh *const attName)=0
    virtual const XMLAttDeffindAttDef (const unsigned int uriID, const XMLCh *const attName) const =0
    virtual XMLAttDeffindAttDef (const XMLCh *const attURI, const XMLCh *const attName)=0
    virtual const XMLAttDeffindAttDef (const XMLCh *const attURI, const XMLCh *const attName) const =0
    virtual XMLSize_t getAttDefCount () const =0
     return total number of attributes in this list
    virtual XMLAttDefgetAttDef (XMLSize_t index)=0
     return attribute at the index-th position in the list.
    virtual const XMLAttDefgetAttDef (XMLSize_t index) const =0
     return attribute at the index-th position in the list.
    Destructor
    virtual ~XMLAttDefList ()
    Getter methods
    MemoryManagergetMemoryManager () const
     Get the memory manager.

    Protected Member Functions

     XMLAttDefList (MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)


    Detailed Description

    This class defines an abstract interface that all validators must support.

    When the scanner scans the attributes in a start tag, it must have a list of the defined attributes for that element. This is used to fault in defaulted and fixed attributes, to know which ones are required, and to know the their types in order to do the correct normalization.

    Since each validator will have its own derivatives of XMLAttDef and will have its own specialized storage mechanisms for elements and the att defs that they own, there must be an abstracted way for the scanner to deal with this list.

    It does not derive from the generic Enumerator template class, because there are portability issues with deriving from a template class in a DLL. It does though provide a similar enumerator interface.


    Constructor & Destructor Documentation

    XMLAttDefList::~XMLAttDefList (  )  [virtual]

    XMLAttDefList::XMLAttDefList ( MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager  )  [protected]


    Member Function Documentation

    virtual bool XMLAttDefList::isEmpty (  )  const [pure virtual]

    virtual XMLAttDef* XMLAttDefList::findAttDef ( const unsigned int  uriID,
    const XMLCh *const   attName 
    ) [pure virtual]

    virtual const XMLAttDef* XMLAttDefList::findAttDef ( const unsigned int  uriID,
    const XMLCh *const   attName 
    ) const [pure virtual]

    virtual XMLAttDef* XMLAttDefList::findAttDef ( const XMLCh *const   attURI,
    const XMLCh *const   attName 
    ) [pure virtual]

    virtual const XMLAttDef* XMLAttDefList::findAttDef ( const XMLCh *const   attURI,
    const XMLCh *const   attName 
    ) const [pure virtual]

    virtual XMLSize_t XMLAttDefList::getAttDefCount (  )  const [pure virtual]

    return total number of attributes in this list

    virtual XMLAttDef& XMLAttDefList::getAttDef ( XMLSize_t  index  )  [pure virtual]

    return attribute at the index-th position in the list.

    virtual const XMLAttDef& XMLAttDefList::getAttDef ( XMLSize_t  index  )  const [pure virtual]

    return attribute at the index-th position in the list.

    MemoryManager * XMLAttDefList::getMemoryManager (  )  const

    Get the memory manager.

    This method returns the configurable memory manager used by the element declaration for dynamic allocation/deallocation.

    Returns:
    the memory manager


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLElementDecl-members.html0000644000175000017500000003550511363620006023611 0ustar borisboris Xerces-C++: Member List

    XMLElementDecl Member List

    This is the complete list of members for XMLElementDecl, including all inherited members.

    AllCharData enum valueXMLElementDecl
    AsRootElem enum valueXMLElementDecl
    AttList enum valueXMLElementDecl
    CharDataOpts enum nameXMLElementDecl
    CreateReasons enum nameXMLElementDecl
    Declared enum valueXMLElementDecl
    DTD enum valueXMLElementDecl
    fgInvalidElemIdXMLElementDecl [static]
    fgPCDataElemIdXMLElementDecl [static]
    fgPCDataElemNameXMLElementDecl [static]
    getAttDefList() const =0XMLElementDecl [pure virtual]
    getBaseName() const XMLElementDecl
    getBaseName()XMLElementDecl
    getCharDataOpts() const =0XMLElementDecl [pure virtual]
    getContentModel()=0XMLElementDecl [pure virtual]
    getContentSpec() const =0XMLElementDecl [pure virtual]
    getContentSpec()=0XMLElementDecl [pure virtual]
    getCreateReason() const XMLElementDecl
    getElementName() const XMLElementDecl
    getElementName()XMLElementDecl
    getFormattedContentModel() const =0XMLElementDecl [pure virtual]
    getFullName() const XMLElementDecl
    getId() const XMLElementDecl
    getMemoryManager() const XMLElementDecl
    getObjectType() const =0XMLElementDecl [pure virtual]
    getURI() const XMLElementDecl
    hasAttDefs() const =0XMLElementDecl [pure virtual]
    InContentModel enum valueXMLElementDecl
    isDeclared() const XMLElementDecl
    isExternal() const XMLElementDecl
    JustFaultIn enum valueXMLElementDecl
    loadElementDecl(XSerializeEngine &serEng)XMLElementDecl [static]
    NoCharData enum valueXMLElementDecl
    NoReason enum valueXMLElementDecl
    objectType enum nameXMLElementDecl
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    Schema enum valueXMLElementDecl
    setContentModel(XMLContentModel *const newModelToAdopt)=0XMLElementDecl [pure virtual]
    setContentSpec(ContentSpecNode *toAdopt)=0XMLElementDecl [pure virtual]
    setCreateReason(const CreateReasons newReason)XMLElementDecl
    setElementName(const XMLCh *const prefix, const XMLCh *const localPart, const int uriId)XMLElementDecl
    setElementName(const XMLCh *const rawName, const int uriId)XMLElementDecl
    setElementName(const QName *const elementName)XMLElementDecl
    setExternalElemDeclaration(const bool aValue)XMLElementDecl
    setId(const XMLSize_t newId)XMLElementDecl
    SpacesOk enum valueXMLElementDecl
    storeElementDecl(XSerializeEngine &serEng, XMLElementDecl *const element)XMLElementDecl [static]
    UnKnown enum valueXMLElementDecl
    XMemory()XMemory [protected]
    XMLElementDecl(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLElementDecl [protected]
    ~XMLElementDecl()XMLElementDecl [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classes.html0000644000175000017500000005721711363620005020031 0ustar borisboris Xerces-C++: Alphabetical List

    Class Index

    A | B | C | D | E | H | I | L | M | O | P | Q | S | T | U | V | W | X

      A  
      Q  
    AbstractDOMParser   QName   
    AttributeList   
      S  
    Attributes   SAX2XMLFilter   
      B  
    SAX2XMLReader   
    Base64   SAXException   
    BinFileInputStream   SAXNotRecognizedException   
    BinInputStream   SAXNotSupportedException   
    BinMemInputStream   SAXParseException   
    BinOutputStream   SAXParser   
      C  
    SecurityManager   
    ContentHandler   StdInInputSource   
      D  
    StDOMNode   
    DeclHandler   StdOutFormatTarget   
    DefaultHandler   
      T  
    DefaultPanicHandler   TranscodeFromStr   
    DocumentHandler   TranscodeToStr   
    DOMAttr   
      U  
    DOMCDATASection   URLInputSource   
    DOMCharacterData   
      V  
    DOMComment   ValidationContext   
    DOMConfiguration   
      W  
    DOMDocument   Wrapper4DOMLSInput   
    DOMDocumentFragment   Wrapper4InputSource   
    DOMDocumentRange   
      X  
    DOMDocumentTraversal   XercesDOMParser   
    DOMDocumentType   XMemory   
    DOMElement   XMLAbstractDoubleFloat   
    DOMEntity   XMLAttDef   
    DOMEntityReference   XMLAttDefList   
    DOMError   XMLAttr   
    DOMErrorHandler   XMLBigDecimal   
    DOMException   XMLBigInteger   
    DOMImplementation   XMLChar1_0   
    DOMImplementationList   XMLChar1_1   
    DOMImplementationLS   XMLContentModel   
    DOMImplementationRegistry   XMLDateTime   
    DOMImplementationSource   XMLDeleter   
    DOMLocator   XMLDocumentHandler   
    DOMLSException   XMLDOMMsg   
    DOMLSInput   XMLDouble   
    DOMLSOutput   XMLDTDDescription   
    DOMLSParser   XMLElementDecl   
    DOMLSParserFilter   XMLEntityDecl   
    DOMLSResourceResolver   XMLEntityHandler   
    DOMLSSerializer   XMLEntityResolver   
    DOMLSSerializerFilter   XMLErrorReporter   
    DOMMemoryManager   XMLErrs   
    DOMNamedNodeMap   XMLException   
    DOMNode   XMLFileMgr   
    DOMNodeFilter   XMLFloat   
    DOMNodeIterator   XMLFormatTarget   
    DOMNodeList   XMLFormatter   
    DOMNotation   XMLGrammarDescription   
    DOMProcessingInstruction   XMLGrammarPool   
    DOMPSVITypeInfo   XMLIBM1047Transcoder   
    DOMRange   XMLInitializer   
    DOMRangeException   XMLInteger   
    DOMStringList   XMLLCPTranscoder   
    DOMText   XMLMutexMgr   
    DOMTreeWalker   XMLNetAccessor   
    DOMTypeInfo   XMLNetHTTPInfo   
    DOMUserDataHandler   XMLNotationDecl   
    DOMXPathEvaluator   XMLNumber   
    DOMXPathException   XMLPlatformUtils   
    DOMXPathExpression   XMLReaderFactory   
    DOMXPathNamespace   XMLResourceIdentifier   
    DOMXPathNSResolver   XMLSchemaDescription   
    DOMXPathResult   XMLString   
    DTDHandler   XMLStringTokenizer   
      E  
    XMLSynchronizedStringPool   
    EntityResolver   XMLTranscoder   
    ErrorHandler   XMLTransService   
      H  
    XMLTransService::TransRec   
    HandlerBase   XMLUni   
    Hash2KeysSetBucketElem   XMLUri   
    Hash2KeysSetOf   XMLURL   
    Hash2KeysSetOfEnumerator   XMLValid   
    HexBin   XMLValidator   
      I  
    XSAnnotation   
    InputSource   XSAttributeDeclaration   
      L  
    XSAttributeGroupDefinition   
    LexicalHandler   XSAttributeUse   
    LocalFileFormatTarget   XSComplexTypeDefinition   
    LocalFileInputSource   XSConstants   
    Locator   XSElementDeclaration   
      M  
    XSFacet   
    MemBufFormatTarget   XSIDCDefinition   
    MemBufInputSource   XSModel   
    MemoryManager   XSModelGroup   
      O  
    XSModelGroupDefinition   
    OutOfMemoryException   XSMultiValueFacet   
      P  
    XSNamedMap   
    PanicHandler   XSNamespaceItem   
    Parser   XSNotationDeclaration   
    PSVIAttribute   XSObject   
    PSVIAttributeList   XSParticle   
    PSVIAttributeStorage   XSSimpleTypeDefinition   
    PSVIElement   XSTypeDefinition   
    PSVIHandler   XSValue   
    PSVIItem   XSValue::XSValue_Data   
    PSVIUni   XSWildcard   

    A | B | C | D | E | H | I | L | M | O | P | Q | S | T | U | V | W | X


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XSValue_8hpp.html0000644000175000017500000000527311363620005020655 0ustar borisboris Xerces-C++: XSValue.hpp File Reference

    XSValue.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XSValue
    struct  XSValue::XSValue_Data
     public data More...
    union  XSValue::t_value

    Defines

    #define XERCESC_INCLUDE_GUARD_XSVALUE_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XSVALUE_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSElementDeclaration.html0000644000175000017500000013163311363620006023430 0ustar borisboris Xerces-C++: XSElementDeclaration Class Reference

    XSElementDeclaration Class Reference

    Inheritance diagram for XSElementDeclaration:

    XSObject XMemory

    List of all members.

    Public Member Functions

    Constructors
     XSElementDeclaration (SchemaElementDecl *const schemaElementDecl, XSTypeDefinition *const typeDefinition, XSElementDeclaration *const substitutionGroupAffiliation, XSAnnotation *const annot, XSNamedMap< XSIDCDefinition > *const identityConstraints, XSModel *const xsModel, XSConstants::SCOPE elemScope=XSConstants::SCOPE_ABSENT, XSComplexTypeDefinition *const enclosingTypeDefinition=0, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     The default constructor.
    Destructor
     ~XSElementDeclaration ()
    overridden XSXSObject methods
    const XMLChgetName () const
     The name of type NCName of this declaration as defined in XML Namespaces.
    const XMLChgetNamespace ()
     The [target namespace] of this object, or null if it is unspecified.
    XSNamespaceItemgetNamespaceItem ()
     A namespace schema information item corresponding to the target namespace of the component, if it's globally declared; or null otherwise.
    XSElementDeclaration methods
    XSTypeDefinitiongetTypeDefinition () const
     [type definition]: either a simple type definition or a complex type definition.
    XSConstants::SCOPE getScope () const
     Optional.
    XSComplexTypeDefinitiongetEnclosingCTDefinition () const
     The complex type definition for locally scoped declarations (see scope).
    XSConstants::VALUE_CONSTRAINT getConstraintType () const
     [Value constraint]: one of VC_NONE, VC_DEFAULT, VC_FIXED.
    const XMLChgetConstraintValue ()
     [Value constraint]: the actual value with respect to the [type definition].
    bool getNillable () const
     If nillable is true, then an element may also be valid if it carries the namespace qualified attribute with local name nil from namespace http://www.w3.org/2001/XMLSchema-instance and value true (xsi:nil) even if it has no text or element content despite a content type which would otherwise require content.
    XSNamedMap< XSIDCDefinition > * getIdentityConstraints ()
     identity-constraint definitions: a set of constraint definitions.
    XSElementDeclarationgetSubstitutionGroupAffiliation () const
     [substitution group affiliation]: optional.
    bool isSubstitutionGroupExclusion (XSConstants::DERIVATION_TYPE exclusion)
     Convenience method.
    short getSubstitutionGroupExclusions () const
     [substitution group exclusions]: the returned value is a bit combination of the subset of { DERIVATION_EXTENSION, DERIVATION_RESTRICTION} or DERIVATION_NONE.
    bool isDisallowedSubstitution (XSConstants::DERIVATION_TYPE disallowed)
     Convenience method.
    short getDisallowedSubstitutions () const
     [disallowed substitutions]: the returned value is a bit combination of the subset of { DERIVATION_SUBSTITUTION, DERIVATION_EXTENSION, DERIVATION_RESTRICTION } corresponding to substitutions disallowed by this XSElementDeclaration or DERIVATION_NONE.
    bool getAbstract () const
     {abstract} A boolean.
    XSAnnotationgetAnnotation () const
     Optional.
    void setTypeDefinition (XSTypeDefinition *typeDefinition)
     methods needed by implementation

    Protected Attributes

    short fDisallowedSubstitutions
    short fSubstitutionGroupExclusions
    XSConstants::SCOPE fScope
    SchemaElementDecl * fSchemaElementDecl
    XSTypeDefinitionfTypeDefinition
    XSComplexTypeDefinitionfEnclosingTypeDefinition
    XSElementDeclarationfSubstitutionGroupAffiliation
    XSAnnotationfAnnotation
    XSNamedMap< XSIDCDefinition > * fIdentityConstraints

    Friends

    class XSObjectFactory


    Constructor & Destructor Documentation

    XSElementDeclaration::XSElementDeclaration ( SchemaElementDecl *const   schemaElementDecl,
    XSTypeDefinition *const   typeDefinition,
    XSElementDeclaration *const   substitutionGroupAffiliation,
    XSAnnotation *const   annot,
    XSNamedMap< XSIDCDefinition > *const   identityConstraints,
    XSModel *const   xsModel,
    XSConstants::SCOPE  elemScope = XSConstants::SCOPE_ABSENT,
    XSComplexTypeDefinition *const   enclosingTypeDefinition = 0,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    The default constructor.

    Parameters:
    schemaElementDecl 
    typeDefinition 
    substitutionGroupAffiliation 
    annot 
    identityConstraints 
    xsModel 
    elemScope 
    enclosingTypeDefinition 
    manager The configurable memory manager

    XSElementDeclaration::~XSElementDeclaration (  ) 


    Member Function Documentation

    const XMLCh* XSElementDeclaration::getName (  )  const [virtual]

    The name of type NCName of this declaration as defined in XML Namespaces.

    Reimplemented from XSObject.

    const XMLCh* XSElementDeclaration::getNamespace (  )  [virtual]

    The [target namespace] of this object, or null if it is unspecified.

    Reimplemented from XSObject.

    XSNamespaceItem* XSElementDeclaration::getNamespaceItem (  )  [virtual]

    A namespace schema information item corresponding to the target namespace of the component, if it's globally declared; or null otherwise.

    Reimplemented from XSObject.

    XSTypeDefinition * XSElementDeclaration::getTypeDefinition (  )  const

    [type definition]: either a simple type definition or a complex type definition.

    References fTypeDefinition.

    XSConstants::SCOPE XSElementDeclaration::getScope (  )  const

    Optional.

    One of SCOPE_GLOBAL, SCOPE_LOCAL, or SCOPE_ABSENT. If the scope is local, then the enclosingCTDefinition is present.

    References fScope.

    XSComplexTypeDefinition * XSElementDeclaration::getEnclosingCTDefinition (  )  const

    The complex type definition for locally scoped declarations (see scope).

    References fEnclosingTypeDefinition.

    XSConstants::VALUE_CONSTRAINT XSElementDeclaration::getConstraintType (  )  const

    [Value constraint]: one of VC_NONE, VC_DEFAULT, VC_FIXED.

    const XMLCh* XSElementDeclaration::getConstraintValue (  ) 

    [Value constraint]: the actual value with respect to the [type definition].

    bool XSElementDeclaration::getNillable (  )  const

    If nillable is true, then an element may also be valid if it carries the namespace qualified attribute with local name nil from namespace http://www.w3.org/2001/XMLSchema-instance and value true (xsi:nil) even if it has no text or element content despite a content type which would otherwise require content.

    XSNamedMap< XSIDCDefinition > * XSElementDeclaration::getIdentityConstraints (  ) 

    identity-constraint definitions: a set of constraint definitions.

    References fIdentityConstraints.

    XSElementDeclaration * XSElementDeclaration::getSubstitutionGroupAffiliation (  )  const

    [substitution group affiliation]: optional.

    A top-level element definition.

    References fSubstitutionGroupAffiliation.

    bool XSElementDeclaration::isSubstitutionGroupExclusion ( XSConstants::DERIVATION_TYPE  exclusion  ) 

    Convenience method.

    Check if exclusion is a substitution group exclusion for this element declaration.

    Parameters:
    exclusion DERIVATION_EXTENSION, DERIVATION_RESTRICTION or DERIVATION_NONE. Represents final set for the element.
    Returns:
    True if exclusion is a part of the substitution group exclusion subset.

    short XSElementDeclaration::getSubstitutionGroupExclusions (  )  const

    [substitution group exclusions]: the returned value is a bit combination of the subset of { DERIVATION_EXTENSION, DERIVATION_RESTRICTION} or DERIVATION_NONE.

    References fSubstitutionGroupExclusions.

    bool XSElementDeclaration::isDisallowedSubstitution ( XSConstants::DERIVATION_TYPE  disallowed  ) 

    Convenience method.

    Check if disallowed is a disallowed substitution for this element declaration.

    Parameters:
    disallowed { DERIVATION_SUBSTITUTION, DERIVATION_EXTENSION, DERIVATION_RESTRICTION } or DERIVATION_NONE. Represents a block set for the element.
    Returns:
    True if disallowed is a part of the substitution group exclusion subset.

    short XSElementDeclaration::getDisallowedSubstitutions (  )  const

    [disallowed substitutions]: the returned value is a bit combination of the subset of { DERIVATION_SUBSTITUTION, DERIVATION_EXTENSION, DERIVATION_RESTRICTION } corresponding to substitutions disallowed by this XSElementDeclaration or DERIVATION_NONE.

    References fDisallowedSubstitutions.

    bool XSElementDeclaration::getAbstract (  )  const

    {abstract} A boolean.

    XSAnnotation * XSElementDeclaration::getAnnotation (  )  const

    Optional.

    Annotation.

    References fAnnotation.

    void XSElementDeclaration::setTypeDefinition ( XSTypeDefinition typeDefinition  ) 

    methods needed by implementation

    References fTypeDefinition.


    Friends And Related Function Documentation

    friend class XSObjectFactory [friend]


    Member Data Documentation

    SchemaElementDecl* XSElementDeclaration::fSchemaElementDecl [protected]


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classHandlerBase.png0000644000175000017500000000163111363620006021400 0ustar borisboris‰PNG  IHDRâP7²kZPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØf/IDATxœí˜]’« …µnUžÀl`jî†xÊþ—pénнrÆè‰‰Ññäô-“Jów£¾› ?[Ýdn@Ñ?n›$v£ù‹‰AÑ7q¥Ø›¸bôu‰­Ö†öÆ:ÞÇÃ(36NbƒŸžšötyvØ©;óÕe…B‚upX޶ÃRgm]ôO¾°cò¾o q´ò~=qé£s­ëˆ‡¾·ˆ­5VÛ°q•á5Lm†Œrhº Ä6[!&¹­¼·¶›‰c “±œ«c!ñoáÀYcr~‰Ø—SfmEbji+x†ŸéHN—šð%194ít¯Þd‰MúxktÜÛ8ÇéÀäü±æâ-¿ÎØ&ÄánˆlRlu±LœÊ^$Ö|ke®eÐZb—Æ7™4ßäi4R~é>斔ǜ­8ljX®¢Ò.ZM„µs.￞8=ןKïò‹]‰çlKÄ„gºÇ$bãÜÄ)QŠgŽ]&6ƒÉrk‰K¶uÄý»úeW×ê<ÆË]mò¸Œºzp_,tõqß6!ŽÍ¤-7òx­æÒKs,wËÿµáKku‘˜®Žk5/¬²¶ÆB¸+ R·èˆ»ûXRfmcâÆÿÄ :ÿw®æ¾ü¿Ø_F¼bŠ?Œ¸BìM\1ú&®{WŒý„JFÏÉ/þõ…{̨hP,.úñÜûô;Ì èë?÷ýxî)}=âë­\7q­X`4( ŠFƒbÑ X`4( ŠFƒbÑϳjÏp&. º<º€êòèªË£ ¨.. º<º€êòèªË£ ¨.. º<º€êòèªË£ ¨.. º<º€êòè‘Þ(….|³¶V~ŸG7ñÑ>¼®LÜò–Îwïg–å&Vý³%ßÙ4"nuÓ¶R)~ß(¥älC›*ùΦ± “`å%<4Ï1¥­-ùΦqø&Õ4&ˆÂÌ3«¤J¾³iÒÕ™˜XU#]M³ÝòˆL|gS¡«ó7‘˜^óZ6òM3ÄmêêO¾¥«[Ëk5÷v8û‰ku^7ñÑ>¼nâ£}xÝÄGûðºñ¯üõöo(PÓZ‹kIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/DOMNodeIterator_8hpp.html0000644000175000017500000000632511363620005022264 0ustar borisboris Xerces-C++: DOMNodeIterator.hpp File Reference

    DOMNodeIterator.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMNodeIterator
     DOMNodeIterators are used to step through a set of nodes, e.g. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMNODEITERATOR_HPP
    #define GetDOMNodeIteratorMemoryManager   GET_DIRECT_MM(fDocument)


    Define Documentation

    #define GetDOMNodeIteratorMemoryManager   GET_DIRECT_MM(fDocument)

    #define XERCESC_INCLUDE_GUARD_DOMNODEITERATOR_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_0x6d.html0000644000175000017500000001775111363620005021244 0ustar borisboris Xerces-C++: Class Members
    Here is a list of all class members with links to the classes they belong to:

    - m -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMRange-members.html0000644000175000017500000002237511363620005022443 0ustar borisboris Xerces-C++: Member List

    DOMRange Member List

    This is the complete list of members for DOMRange, including all inherited members.

    cloneContents() const =0DOMRange [pure virtual]
    cloneRange() const =0DOMRange [pure virtual]
    collapse(bool toStart)=0DOMRange [pure virtual]
    compareBoundaryPoints(CompareHow how, const DOMRange *sourceRange) const =0DOMRange [pure virtual]
    CompareHow enum nameDOMRange
    deleteContents()=0DOMRange [pure virtual]
    detach()=0DOMRange [pure virtual]
    DOMRange()DOMRange [protected]
    DOMRange(const DOMRange &)DOMRange [protected]
    END_TO_END enum valueDOMRange
    END_TO_START enum valueDOMRange
    extractContents()=0DOMRange [pure virtual]
    getCollapsed() const =0DOMRange [pure virtual]
    getCommonAncestorContainer() const =0DOMRange [pure virtual]
    getEndContainer() const =0DOMRange [pure virtual]
    getEndOffset() const =0DOMRange [pure virtual]
    getStartContainer() const =0DOMRange [pure virtual]
    getStartOffset() const =0DOMRange [pure virtual]
    insertNode(DOMNode *newNode)=0DOMRange [pure virtual]
    release()=0DOMRange [pure virtual]
    selectNode(const DOMNode *refNode)=0DOMRange [pure virtual]
    selectNodeContents(const DOMNode *refNode)=0DOMRange [pure virtual]
    setEnd(const DOMNode *refNode, XMLSize_t offset)=0DOMRange [pure virtual]
    setEndAfter(const DOMNode *refNode)=0DOMRange [pure virtual]
    setEndBefore(const DOMNode *refNode)=0DOMRange [pure virtual]
    setStart(const DOMNode *refNode, XMLSize_t offset)=0DOMRange [pure virtual]
    setStartAfter(const DOMNode *refNode)=0DOMRange [pure virtual]
    setStartBefore(const DOMNode *refNode)=0DOMRange [pure virtual]
    START_TO_END enum valueDOMRange
    START_TO_START enum valueDOMRange
    surroundContents(DOMNode *newParent)=0DOMRange [pure virtual]
    toString() const =0DOMRange [pure virtual]
    ~DOMRange()DOMRange [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XSAttributeUse_8hpp-source.html0000644000175000017500000003262211363620005023515 0ustar borisboris Xerces-C++: XSAttributeUse.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMProcessingInstruction_8hpp-source.html0000644000175000017500000002447411363620004025545 0ustar borisboris Xerces-C++: DOMProcessingInstruction.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMImplementationLS-members.html0000644000175000017500000001032711363620005024625 0ustar borisboris Xerces-C++: Member List

    DOMImplementationLS Member List

    This is the complete list of members for DOMImplementationLS, including all inherited members.

    createLSInput(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)=0DOMImplementationLS [pure virtual]
    createLSOutput(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)=0DOMImplementationLS [pure virtual]
    createLSParser(const DOMImplementationLSMode mode, const XMLCh *const schemaType, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager, XMLGrammarPool *const gramPool=0)=0DOMImplementationLS [pure virtual]
    createLSSerializer(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)=0DOMImplementationLS [pure virtual]
    DOMImplementationLS()DOMImplementationLS [protected]
    DOMImplementationLSMode enum nameDOMImplementationLS
    MODE_ASYNCHRONOUS enum valueDOMImplementationLS
    MODE_SYNCHRONOUS enum valueDOMImplementationLS
    ~DOMImplementationLS()DOMImplementationLS [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLErrorCodes_8hpp-source.html0000644000175000017500000027403511363620005023260 0ustar borisboris Xerces-C++: XMLErrorCodes.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classPSVIElement.html0000644000175000017500000004364311363620006021514 0ustar borisboris Xerces-C++: PSVIElement Class Reference

    PSVIElement Class Reference

    Inheritance diagram for PSVIElement:

    PSVIItem XMemory

    List of all members.

    Public Member Functions

    Constructors
     PSVIElement (MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     The default constructor.
    Destructor
     ~PSVIElement ()
    PSVIElement methods
    XSElementDeclarationgetElementDeclaration ()
     An item isomorphic to the element declaration used to validate this element.
    XSNotationDeclarationgetNotationDeclaration ()
     [notation]
    XSModelgetSchemaInformation ()
     [schema information]
    XSTypeDefinitiongetTypeDefinition ()
     An item isomorphic to the type definition used to validate this element.
    XSSimpleTypeDefinitiongetMemberTypeDefinition ()
     If and only if that type definition is a simple type definition with {variety} union, or a complex type definition whose {content type} is a simple type definition with {variety} union, then an item isomorphic to that member of the union's {member type definitions} which actually validated the element item's normalized value.
    void reset (const VALIDITY_STATE validityState, const ASSESSMENT_TYPE assessmentType, const XMLCh *const validationContext, bool isSpecified, XSElementDeclaration *const elemDecl, XSTypeDefinition *const typeDef, XSSimpleTypeDefinition *const memberType, XSModel *const schemaInfo, const XMLCh *const defaultValue, const XMLCh *const normalizedValue=0, XMLCh *const canonicalValue=0, XSNotationDeclaration *const notationDecl=0)
     methods needed by implementation


    Constructor & Destructor Documentation

    PSVIElement::PSVIElement ( MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager  ) 

    The default constructor.

    Parameters:
    manager The configurable memory manager

    PSVIElement::~PSVIElement (  ) 


    Member Function Documentation

    XSElementDeclaration * PSVIElement::getElementDeclaration (  ) 

    An item isomorphic to the element declaration used to validate this element.

    Returns:
    an element declaration

    XSNotationDeclaration * PSVIElement::getNotationDeclaration (  ) 

    [notation]

    See also:
    XML Schema Part 1: Structures [notation]
    Returns:
    The notation declaration.

    XSModel * PSVIElement::getSchemaInformation (  ) 

    [schema information]

    See also:
    XML Schema Part 1: Structures [schema information]
    Returns:
    The schema information property if it's the validation root, null otherwise.

    XSTypeDefinition* PSVIElement::getTypeDefinition (  )  [virtual]

    An item isomorphic to the type definition used to validate this element.

    Returns:
    a type declaration

    Implements PSVIItem.

    XSSimpleTypeDefinition* PSVIElement::getMemberTypeDefinition (  )  [virtual]

    If and only if that type definition is a simple type definition with {variety} union, or a complex type definition whose {content type} is a simple type definition with {variety} union, then an item isomorphic to that member of the union's {member type definitions} which actually validated the element item's normalized value.

    Returns:
    a simple type declaration

    Implements PSVIItem.

    void PSVIElement::reset ( const VALIDITY_STATE  validityState,
    const ASSESSMENT_TYPE  assessmentType,
    const XMLCh *const   validationContext,
    bool  isSpecified,
    XSElementDeclaration *const   elemDecl,
    XSTypeDefinition *const   typeDef,
    XSSimpleTypeDefinition *const   memberType,
    XSModel *const   schemaInfo,
    const XMLCh *const   defaultValue,
    const XMLCh *const   normalizedValue = 0,
    XMLCh *const   canonicalValue = 0,
    XSNotationDeclaration *const   notationDecl = 0 
    )

    methods needed by implementation


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMConfiguration_8hpp.html0000644000175000017500000000523711363620005022475 0ustar borisboris Xerces-C++: DOMConfiguration.hpp File Reference

    DOMConfiguration.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMConfiguration
     The DOMConfiguration interface represents the configuration of a document and maintains a table of recognized parameters. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMCONFIGURATION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMCONFIGURATION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMImplementation.png0000644000175000017500000000073411363620005022557 0ustar borisboris‰PNG  IHDR‹PÛΛ PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfrIDATX…í•KnÄ0†ÍfÖàTí…ºšû¡€mâ8Ï©¬6#)?Àç§”ðÕÃ>ÂçÔÁæÃDòªÅGö¯±©æ$± ™¢c´ÁDH|Ž©CktŒ ÁåaŽÊ˜'QV‰9d©ÁÄÔE,ª8žr`ChfòtZ=Ç}L)-’|êkÂÄi1\Ú2ÒÌ[ŽZÌÖÞ¬0>ü”׳šÜ“O*zݼ7‹¾CLuofŒŸgoh’¼‡ÒRÝ›Mãü¦½ æ%˜#L§̹=.Ôüæù}#Ìãù¼æf'503030óêa°Ç„æFw;€H3Ö*Ð&±¼@böfƒyÌÐ!)WDó(J"9û°.@)Uœ–X`^¿ð4œbJi–ìm×êpÙ|p¯9¢ß`æáC^ÏálÊI•b¬ö¦^Ô!¦º73ÆOÊZ,zRH6˜M»|Ãß sÙæÓçóÇiùøkÁ÷IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/AbstractDOMParser_8hpp.html0000644000175000017500000000473211363620005022605 0ustar borisboris Xerces-C++: AbstractDOMParser.hpp File Reference

    AbstractDOMParser.hpp File Reference

    Go to the source code of this file.

    Classes

    class  AbstractDOMParser
     This class implements the Document Object Model (DOM) interface. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_ABSTRACTDOMPARSER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_ABSTRACTDOMPARSER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XSFacet_8hpp-source.html0000644000175000017500000003064111363620005022116 0ustar borisboris Xerces-C++: XSFacet.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/BinInputStream_8hpp.html0000644000175000017500000000436511363620005022233 0ustar borisboris Xerces-C++: BinInputStream.hpp File Reference

    BinInputStream.hpp File Reference

    Go to the source code of this file.

    Classes

    class  BinInputStream

    Defines

    #define XERCESC_INCLUDE_GUARD_BININPUTSTREAM_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_BININPUTSTREAM_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classQName-members.html0000644000175000017500000001746311363620006022053 0ustar borisboris Xerces-C++: Member List

    QName Member List

    This is the complete list of members for QName, including all inherited members.

    cleanUp()QName
    getLocalPart() const QName
    getLocalPart()QName
    getMemoryManager() const QName
    getPrefix() const QName
    getPrefix()QName
    getRawName() const QName
    getRawName()QName
    getURI() const QName
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    operator==(const QName &) const QName
    QName(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)QName
    QName(const XMLCh *const prefix, const XMLCh *const localPart, const unsigned int uriId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)QName
    QName(const XMLCh *const rawName, const unsigned int uriId, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)QName
    QName(const QName &qname)QName
    setLocalPart(const XMLCh *)QName
    setName(const XMLCh *const prefix, const XMLCh *const localPart, const unsigned int uriId)QName
    setName(const XMLCh *const rawName, const unsigned int uriId)QName
    setNLocalPart(const XMLCh *, const XMLSize_t)QName
    setNPrefix(const XMLCh *, const XMLSize_t)QName
    setPrefix(const XMLCh *)QName
    setURI(const unsigned int)QName
    setValues(const QName &qname)QName
    XMemory()XMemory [protected]
    ~QName()QName


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/PlatformUtils_8hpp-source.html0000644000175000017500000011656411363620004023436 0ustar borisboris Xerces-C++: PlatformUtils.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLEntityDecl_8hpp-source.html0000644000175000017500000011622311363620005023247 0ustar borisboris Xerces-C++: XMLEntityDecl.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLChar_8hpp.html0000644000175000017500000002645111363620005020565 0ustar borisboris Xerces-C++: XMLChar.hpp File Reference

    XMLChar.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLChar1_0
    class  XMLChar1_1

    Defines

    #define XERCESC_INCLUDE_GUARD_XMLCHAR_HPP

    Variables

    XERCES_CPP_NAMESPACE_BEGIN
    const XMLByte 
    gNCNameCharMask = 0x1
    const XMLByte gFirstNameCharMask = 0x2
    const XMLByte gNameCharMask = 0x4
    const XMLByte gPlainContentCharMask = 0x8
    const XMLByte gSpecialStartTagCharMask = 0x10
    const XMLByte gControlCharMask = 0x20
    const XMLByte gXMLCharMask = 0x40
    const XMLByte gWhitespaceCharMask = 0x80


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XMLCHAR_HPP


    Variable Documentation

    XERCES_CPP_NAMESPACE_BEGIN const XMLByte gNCNameCharMask = 0x1


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/globals_defs_0x70.html0000644000175000017500000000476511363620007021600 0ustar borisboris Xerces-C++: Class Members
     

    - p -


    Generated on Wed Apr 21 17:55:51 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/Locator_8hpp-source.html0000644000175000017500000001631411363620004022224 0ustar borisboris Xerces-C++: Locator.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLBigDecimal-members.html0000644000175000017500000002517511363620006023412 0ustar borisboris Xerces-C++: Member List

    XMLBigDecimal Member List

    This is the complete list of members for XMLBigDecimal, including all inherited members.

    BigDecimal enum valueXMLNumber
    compareValues(const XMLBigDecimal *const lValue, const XMLBigDecimal *const rValue, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLBigDecimal [static]
    DateTime enum valueXMLNumber
    Double enum valueXMLNumber
    EQUAL enum valueXMLNumber
    Float enum valueXMLNumber
    getCanonicalRepresentation(const XMLCh *const rawData, MemoryManager *const memMgr=XMLPlatformUtils::fgMemoryManager)XMLBigDecimal [static]
    getFormattedString() const XMLBigDecimal [virtual]
    getIntVal() const XMLBigDecimal
    getMemoryManager() const XMLBigDecimal
    getRawData() const XMLBigDecimal [virtual]
    getScale() const XMLBigDecimal
    getSign() const XMLBigDecimal [virtual]
    getTotalDigit() const XMLBigDecimal
    getValue() const XMLBigDecimal
    GREATER_THAN enum valueXMLNumber
    INDETERMINATE enum valueXMLNumber
    LESS_THAN enum valueXMLNumber
    loadNumber(XMLNumber::NumberType numType, XSerializeEngine &serEng)XMLNumber [static]
    NumberType enum nameXMLNumber
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    parseDecimal(const XMLCh *const toParse, XMLCh *const retBuffer, int &sign, int &totalDigits, int &fractDigits, MemoryManager *const manager)XMLBigDecimal [static]
    parseDecimal(const XMLCh *const toParse, MemoryManager *const manager)XMLBigDecimal [static]
    setDecimalValue(const XMLCh *const strValue)XMLBigDecimal
    toCompare(const XMLBigDecimal &other) const XMLBigDecimal
    UnKnown enum valueXMLNumber
    XMemory()XMemory [protected]
    XMLBigDecimal(const XMLCh *const strValue, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLBigDecimal
    XMLBigDecimal(MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLBigDecimal
    XMLNumber()XMLNumber [protected]
    XMLNumber(const XMLNumber &)XMLNumber [protected]
    ~XMLBigDecimal()XMLBigDecimal
    ~XMLNumber()XMLNumber [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classAttributes.html0000644000175000017500000011727211363620005021546 0ustar borisboris Xerces-C++: Attributes Class Reference

    Attributes Class Reference

    Interface for an element's attribute specifications. More...

    List of all members.

    Public Member Functions

    Constructors and Destructor
     Attributes ()
     Default constructor.
    virtual ~Attributes ()
     Destructor.
    The virtual attribute list interface
    virtual XMLSize_t getLength () const =0
     Return the number of attributes in this list.
    virtual const XMLChgetURI (const XMLSize_t index) const =0
     Return the namespace URI of an attribute in this list (by position).
    virtual const XMLChgetLocalName (const XMLSize_t index) const =0
     Return the local name of an attribute in this list (by position).
    virtual const XMLChgetQName (const XMLSize_t index) const =0
     Return the qName of an attribute in this list (by position).
    virtual const XMLChgetType (const XMLSize_t index) const =0
     Return the type of an attribute in the list (by position).
    virtual const XMLChgetValue (const XMLSize_t index) const =0
     Return the value of an attribute in the list (by position).
    virtual bool getIndex (const XMLCh *const uri, const XMLCh *const localPart, XMLSize_t &index) const =0
     Look up the index of an attribute by Namespace name.
    virtual int getIndex (const XMLCh *const uri, const XMLCh *const localPart) const =0
     Look up the index of an attribute by Namespace name.
    virtual bool getIndex (const XMLCh *const qName, XMLSize_t &index) const =0
     Look up the index of an attribute by XML 1.0 qualified name.
    virtual int getIndex (const XMLCh *const qName) const =0
     Look up the index of an attribute by XML 1.0 qualified name.
    virtual const XMLChgetType (const XMLCh *const uri, const XMLCh *const localPart) const =0
     Look up an attribute's type by Namespace name.
    virtual const XMLChgetType (const XMLCh *const qName) const =0
     Look up an attribute's type by XML 1.0 qualified name.
    virtual const XMLChgetValue (const XMLCh *const uri, const XMLCh *const localPart) const =0
     Look up an attribute's value by Namespace name.
    virtual const XMLChgetValue (const XMLCh *const qName) const =0
     Look up an attribute's value by XML 1.0 qualified name.


    Detailed Description

    Interface for an element's attribute specifications.

    The SAX2 parser implements this interface and passes an instance to the SAX2 application as the last argument of each startElement event.

    The instance provided will return valid results only during the scope of the startElement invocation (to save it for future use, the application must make a copy: the AttributesImpl helper class provides a convenient constructor for doing so).

    An Attributes includes only attributes that have been specified or defaulted: #IMPLIED attributes will not be included.

    There are two ways for the SAX application to obtain information from the Attributes. First, it can iterate through the entire list:

    public void startElement (String uri, String localpart, String qName, Attributes atts) {
     for (XMLSize_t i = 0; i < atts.getLength(); i++) {
      String Qname = atts.getQName(i);
      String URI = atts.getURI(i)
      String local = atts.GetLocalName(i)
      String type = atts.getType(i);
      String value = atts.getValue(i);
      [...]
     }
    }

    (Note that the result of getLength() will be zero if there are no attributes.)

    As an alternative, the application can request the value or type of specific attributes:

    public void startElement (String uri, String localpart, String qName, Attributes atts) {
     String identifier = atts.getValue("id");
     String label = atts.getValue("label");
     [...]
    }

    The AttributesImpl helper class provides a convenience implementation for use by parser or application writers.

    See also:
    Sax2DocumentHandler::startElement

    AttributesImpl::AttributesImpl


    Constructor & Destructor Documentation

    Attributes::Attributes (  ) 

    Default constructor.

    virtual Attributes::~Attributes (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual XMLSize_t Attributes::getLength (  )  const [pure virtual]

    Return the number of attributes in this list.

    The SAX parser may provide attributes in any arbitrary order, regardless of the order in which they were declared or specified. The number of attributes may be zero.

    Returns:
    The number of attributes in the list.

    virtual const XMLCh* Attributes::getURI ( const XMLSize_t  index  )  const [pure virtual]

    Return the namespace URI of an attribute in this list (by position).

    The QNames must be unique: the SAX parser shall not include the same attribute twice. Attributes without values (those declared #IMPLIED without a value specified in the start tag) will be omitted from the list.

    Parameters:
    index The index of the attribute in the list (starting at 0).
    Returns:
    The URI of the indexed attribute, or null if the index is out of range.
    See also:
    getLength

    virtual const XMLCh* Attributes::getLocalName ( const XMLSize_t  index  )  const [pure virtual]

    Return the local name of an attribute in this list (by position).

    The QNames must be unique: the SAX parser shall not include the same attribute twice. Attributes without values (those declared #IMPLIED without a value specified in the start tag) will be omitted from the list.

    Parameters:
    index The index of the attribute in the list (starting at 0).
    Returns:
    The local name of the indexed attribute, or null if the index is out of range.
    See also:
    getLength

    virtual const XMLCh* Attributes::getQName ( const XMLSize_t  index  )  const [pure virtual]

    Return the qName of an attribute in this list (by position).

    The QNames must be unique: the SAX parser shall not include the same attribute twice. Attributes without values (those declared #IMPLIED without a value specified in the start tag) will be omitted from the list.

    Parameters:
    index The index of the attribute in the list (starting at 0).
    Returns:
    The qName of the indexed attribute, or null if the index is out of range.
    See also:
    getLength

    virtual const XMLCh* Attributes::getType ( const XMLSize_t  index  )  const [pure virtual]

    Return the type of an attribute in the list (by position).

    The attribute type is one of the strings "CDATA", "ID", "IDREF", "IDREFS", "NMTOKEN", "NMTOKENS", "ENTITY", "ENTITIES", or "NOTATION" (always in upper case).

    If the parser has not read a declaration for the attribute, or if the parser does not report attribute types, then it must return the value "CDATA" as stated in the XML 1.0 Recommendation (clause 3.3.3, "Attribute-Value Normalization").

    For an enumerated attribute that is not a notation, the parser will report the type as "NMTOKEN".

    Parameters:
    index The index of the attribute in the list (starting at 0).
    Returns:
    The attribute type as a string, or null if the index is out of range.
    See also:
    getLength

    getType

    virtual const XMLCh* Attributes::getValue ( const XMLSize_t  index  )  const [pure virtual]

    Return the value of an attribute in the list (by position).

    If the attribute value is a list of tokens (IDREFS, ENTITIES, or NMTOKENS), the tokens will be concatenated into a single string separated by whitespace.

    Parameters:
    index The index of the attribute in the list (starting at 0).
    Returns:
    The attribute value as a string, or null if the index is out of range.
    See also:
    getLength

    getValue

    virtual bool Attributes::getIndex ( const XMLCh *const   uri,
    const XMLCh *const   localPart,
    XMLSize_t index 
    ) const [pure virtual]

    Look up the index of an attribute by Namespace name.

    Non-standard extension.

    Parameters:
    uri The Namespace URI, or the empty string if the name has no Namespace URI.
    localPart The attribute's local name.
    index Reference to the variable where the index will be stored.
    Returns:
    true if the attribute is found and false otherwise.

    virtual int Attributes::getIndex ( const XMLCh *const   uri,
    const XMLCh *const   localPart 
    ) const [pure virtual]

    Look up the index of an attribute by Namespace name.

    Parameters:
    uri The Namespace URI, or the empty string if the name has no Namespace URI.
    localPart The attribute's local name.
    Returns:
    The index of the attribute, or -1 if it does not appear in the list.

    virtual bool Attributes::getIndex ( const XMLCh *const   qName,
    XMLSize_t index 
    ) const [pure virtual]

    Look up the index of an attribute by XML 1.0 qualified name.

    Non-standard extension.

    Parameters:
    qName The qualified (prefixed) name.
    index Reference to the variable where the index will be stored.
    Returns:
    true if the attribute is found and false otherwise.

    virtual int Attributes::getIndex ( const XMLCh *const   qName  )  const [pure virtual]

    Look up the index of an attribute by XML 1.0 qualified name.

    Parameters:
    qName The qualified (prefixed) name.
    Returns:
    The index of the attribute, or -1 if it does not appear in the list.

    virtual const XMLCh* Attributes::getType ( const XMLCh *const   uri,
    const XMLCh *const   localPart 
    ) const [pure virtual]

    Look up an attribute's type by Namespace name.

    See getType for a description of the possible types.

    Parameters:
    uri The Namespace URI, or the empty String if the name has no Namespace URI.
    localPart The local name of the attribute.
    Returns:
    The attribute type as a string, or null if the attribute is not in the list or if Namespace processing is not being performed.

    virtual const XMLCh* Attributes::getType ( const XMLCh *const   qName  )  const [pure virtual]

    Look up an attribute's type by XML 1.0 qualified name.

    See getType for a description of the possible types.

    Parameters:
    qName The XML 1.0 qualified name.
    Returns:
    The attribute type as a string, or null if the attribute is not in the list or if qualified names are not available.

    virtual const XMLCh* Attributes::getValue ( const XMLCh *const   uri,
    const XMLCh *const   localPart 
    ) const [pure virtual]

    Look up an attribute's value by Namespace name.

    See getValue for a description of the possible values.

    Parameters:
    uri The Namespace URI, or the empty String if the name has no Namespace URI.
    localPart The local name of the attribute.
    Returns:
    The attribute value as a string, or null if the attribute is not in the list.

    virtual const XMLCh* Attributes::getValue ( const XMLCh *const   qName  )  const [pure virtual]

    Look up an attribute's value by XML 1.0 qualified name.

    See getValue for a description of the possible values.

    Parameters:
    qName The XML 1.0 qualified name.
    Returns:
    The attribute value as a string, or null if the attribute is not in the list or if qualified names are not available.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMEntity.png0000644000175000017500000000053311363620005021043 0ustar borisboris‰PNG  IHDRIP§„E¼PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfñIDATH‰íÓQ `úâ3í ê Œ^ȧÝÿö/ƒÌ1bc–¸˜!¡¸~Å,=í–î×ÏíÐJ™mŠA,ŠÚ“’Õ7…´UTFJ±ŒÎJm¦6å:%bÝ•`gF)W:PêD›bŽ(ÙªQJ¶h}®Å}É|_}{þC¯boZßžϾT—i?5M‘-cjÏOuªSýLq å”«ZsB±É’ Eù¤.Q¢É’5·VTbSdÉ:’k•í{QØÎûPÙ¹+ò ¦Uå€Âê]þ©Å}åÔÎŨ™BwS9¢(ET]ð¨*ô¦½[ГÐ?IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classDOMImplementationRegistry-members.html0000644000175000017500000000470411363620005026121 0ustar borisboris Xerces-C++: Member List

    DOMImplementationRegistry Member List

    This is the complete list of members for DOMImplementationRegistry, including all inherited members.

    addSource(DOMImplementationSource *source)DOMImplementationRegistry [static]
    getDOMImplementation(const XMLCh *features)DOMImplementationRegistry [static]
    getDOMImplementationList(const XMLCh *features)DOMImplementationRegistry [static]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSFacet-members.html0000644000175000017500000001752711363620006022350 0ustar borisboris Xerces-C++: Member List

    XSFacet Member List

    This is the complete list of members for XSFacet, including all inherited members.

    fAnnotationXSFacet [protected]
    fComponentTypeXSObject [protected]
    fFacetKindXSFacet [protected]
    fIdXSObject [protected]
    fIsFixedXSFacet [protected]
    fLexicalValueXSFacet [protected]
    fMemoryManagerXSObject [protected]
    fXSModelXSObject [protected]
    getAnnotation() const XSFacet
    getFacetKind() const XSFacet
    getId() const XSObject [virtual]
    getLexicalFacetValue() const XSFacet
    getName() const XSObject [virtual]
    getNamespace()XSObject [virtual]
    getNamespaceItem()XSObject [virtual]
    getType() const XSObject
    isFixed() const XSFacet
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    setId(XMLSize_t id)XSObject
    XMemory()XMemory [protected]
    XSFacet(XSSimpleTypeDefinition::FACET facetKind, const XMLCh *const lexicalValue, bool isFixed, XSAnnotation *const annot, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSFacet
    XSObject(XSConstants::COMPONENT_TYPE compType, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSObject
    ~XSFacet()XSFacet
    ~XSObject()XSObject [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DocumentHandler_8hpp.html0000644000175000017500000000466411363620005022405 0ustar borisboris Xerces-C++: DocumentHandler.hpp File Reference

    DocumentHandler.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DocumentHandler
     Receive notification of general document events. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DOCUMENTHANDLER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOCUMENTHANDLER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classPSVIElement.png0000644000175000017500000000072011363620006021321 0ustar borisboris‰PNG  IHDRTˆ‹¹Ñ¦PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØffIDATX…í–Arƒ0 E­M×–n zƒöB]qÿ#T’±ƒ‰fZf’‰‰lça}˜üô=ékŒÏWDYO’ÏJr ð§P”&IÉ̬õ6¨ aOÈ%3y¨Šl(ÙYwVV±CéU­ÕNCµ’‹Þ pÐe_mŒ·l£÷ËÚ‰h»%‡h›ô‰ÂFO¼ÜnüøÃC?æ+ÐyVp½f 4Ð÷BÃg5õÿ_½@5û(™wàqtªæÅï¨÷ñü™¯j¨Ù&ô\†jU¶CWBzKfåÕ"×>@iš˜Ç(O#ØôÔvÀG"ÐðY~„Ï 4Ð@ŸÅáHy´¼ ²:Ù éh_z¶\®¨4—Øw:Bu W¤ˆþhY*­Ð„=ªŒK†Û¬ªUÙ‚šV»¦fX (å¡JTø%÷(lм,ѲƒÚyÓº'˺ªV]yª^zcß¹t+9*ó‡OIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/XSNotationDeclaration_8hpp-source.html0000644000175000017500000002662711363620005025046 0ustar borisboris Xerces-C++: XSNotationDeclaration.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classSAXParseException.png0000644000175000017500000000110211363620006022526 0ustar borisboris‰PNG  IHDR~ˆÓÆB¿PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfØIDAThí˜Krƒ0 †Ñ&käˆÞ ½PW¹ÿª;L=BF‚Ûõ'ý4¥ûi³î{h±¯àÖŸÄwú'Or°læ‰Ob=|RJ¢¬‚ç­‚)™(¡ÞÙ[5ωϼžÓQŸ/4 füJA7óW>Édâé¯>2ýµ¼==Ðâký‡•ô½üÚûx„_ ÿ–ÿ×â[?¿wì¶·áÅüý÷Tþv¿ŸÊŸ^ÿàƒ>øà?”þï}x”–-yÀÍK¾w·¡Á» ëJÛýþ­È’—> “µ,ˆ|´­_™ä˜7OÞŽeiõCçEƒä.ÃÜÐ8Úä¥ÏÄ9¾óÚVðd5¦)²š'[;Î[\äÿD?ª^šžVÿÁëÿ4ÿ-Ûú-á*ü–ýß+ùèÿ‚>øàƒÿLÛ¬ë›äAð<¾ôv‚N†åÂ2¦ŽAH€M–ö J_ºñ¨þ8.<ø ùÚûhÒ¯aD}o{Å_u dl3ìÆu4Ï* h~U‰îãð¿º÷;ó"§øZP¯à/¨ó:{äM²Ç„9º®Îúm©žŸóUVä¿ÐorÁž¿êï{Õ/uæüóúƒ×™µÛ/Ç|ãç÷K¤µÅú IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classPSVIItem.html0000644000175000017500000012242511363620006021015 0ustar borisboris Xerces-C++: PSVIItem Class Reference

    PSVIItem Class Reference

    Inheritance diagram for PSVIItem:

    XMemory PSVIAttribute PSVIElement

    List of all members.

    Public Types

    enum  VALIDITY_STATE { VALIDITY_NOTKNOWN = 0, VALIDITY_INVALID = 1, VALIDITY_VALID = 2 }
    enum  ASSESSMENT_TYPE { VALIDATION_NONE = 0, VALIDATION_PARTIAL = 1, VALIDATION_FULL = 2 }

    Public Member Functions

    virtual XSValuegetActualValue () const
     Get actual value in the form of XSValue, caller needs to delete the object returned.
    Constructors
     PSVIItem (MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     The default constructor.
    Destructor
    virtual ~PSVIItem ()
    PSVIItem methods
    const XMLChgetValidationContext ()
     [validation context]
    VALIDITY_STATE getValidity () const
     Determine the validity of the node with respect to the validation being attempted.
    ASSESSMENT_TYPE getValidationAttempted () const
     Determines the extent to which the item has been validated.
    const XMLChgetSchemaNormalizedValue ()
     A list of error codes generated from validation attempts.
    virtual XSTypeDefinitiongetTypeDefinition ()=0
     An item isomorphic to the type definition used to validate this element.
    virtual XSSimpleTypeDefinitiongetMemberTypeDefinition ()=0
     If and only if that type definition is a simple type definition with {variety} union, or a complex type definition whose {content type} is a simple thype definition with {variety} union, then an item isomorphic to that member of the union's {member type definitions} which actually validated the element item's normalized value.
    const XMLChgetSchemaDefault ()
     [schema default]
    bool getIsSchemaSpecified () const
     [schema specified]
    const XMLChgetCanonicalRepresentation () const
     Return the canonical representation of this value.
    void setValidationAttempted (PSVIItem::ASSESSMENT_TYPE attemptType)
     methods needed by implementation
    void setValidity (PSVIItem::VALIDITY_STATE validity)
    void reset (const XMLCh *const validationContext, const XMLCh *const normalizedValue, const VALIDITY_STATE validityState, const ASSESSMENT_TYPE assessmentType)
     reset the object

    Protected Attributes

    MemoryManager *const fMemoryManager
    const XMLChfValidationContext
    const XMLChfNormalizedValue
    const XMLChfDefaultValue
    XMLChfCanonicalValue
    VALIDITY_STATE fValidityState
    ASSESSMENT_TYPE fAssessmentType
    bool fIsSpecified
    XSTypeDefinitionfType
    XSSimpleTypeDefinitionfMemberType


    Member Enumeration Documentation

    Enumerator:
    VALIDITY_NOTKNOWN  Validity value indicating that validation has either not been performed or that a strict assessment of validity could not be performed.
    VALIDITY_INVALID  Validity value indicating that validation has been strictly assessed and the element in question is invalid according to the rules of schema validation.
    VALIDITY_VALID  Validity value indicating that validation has been strictly assessed and the element in question is valid according to the rules of schema validation.

    Enumerator:
    VALIDATION_NONE  Validation status indicating that schema validation has been performed and the element in question has specifically been skipped.
    VALIDATION_PARTIAL  Validation status indicating that schema validation has been performed on the element in question under the rules of lax validation.
    VALIDATION_FULL  Validation status indicating that full schema validation has been performed on the element.


    Constructor & Destructor Documentation

    PSVIItem::PSVIItem ( MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager  ) 

    The default constructor.

    Parameters:
    manager The configurable memory manager

    PSVIItem::~PSVIItem (  )  [virtual]


    Member Function Documentation

    const XMLCh * PSVIItem::getValidationContext (  ) 

    [validation context]

    Returns:
    A string identifying the nearest ancestor element information item with a [schema information] property (or this element item itself if it has such a property) (form to be determined)
    See also:
    XML Schema Part 1: Structures [validation context]

    References fValidationContext.

    PSVIItem::VALIDITY_STATE PSVIItem::getValidity (  )  const

    Determine the validity of the node with respect to the validation being attempted.

    Returns:
    return the [validity] property. Possible values are: VALIDITY_UNKNOWN, VALIDITY_INVALID, VALIDITY_VALID

    References fValidityState.

    PSVIItem::ASSESSMENT_TYPE PSVIItem::getValidationAttempted (  )  const

    Determines the extent to which the item has been validated.

    Returns:
    return the [validation attempted] property. The possible values are VALIDATION_NONE, VALIDATION_ORDERED_PARTIAL and VALIDATION_FULL

    References fAssessmentType.

    const XMLCh * PSVIItem::getSchemaNormalizedValue (  ) 

    A list of error codes generated from validation attempts.

    Need to find all the possible sub-clause reports that need reporting

    Returns:
    list of error codes [schema normalized value]
    See also:
    XML Schema Part 1: Structures [schema normalized value]
    Returns:
    the normalized value of this item after validation

    References fNormalizedValue.

    virtual XSTypeDefinition* PSVIItem::getTypeDefinition (  )  [pure virtual]

    An item isomorphic to the type definition used to validate this element.

    Returns:
    a type declaration

    Implemented in PSVIAttribute, and PSVIElement.

    virtual XSSimpleTypeDefinition* PSVIItem::getMemberTypeDefinition (  )  [pure virtual]

    If and only if that type definition is a simple type definition with {variety} union, or a complex type definition whose {content type} is a simple thype definition with {variety} union, then an item isomorphic to that member of the union's {member type definitions} which actually validated the element item's normalized value.

    Returns:
    a simple type declaration

    Implemented in PSVIAttribute, and PSVIElement.

    const XMLCh * PSVIItem::getSchemaDefault (  ) 

    [schema default]

    Returns:
    The canonical lexical representation of the declaration's {value constraint} value.
    See also:
    XML Schema Part 1: Structures [schema default]

    References fDefaultValue.

    bool PSVIItem::getIsSchemaSpecified (  )  const

    [schema specified]

    See also:
    XML Schema Part 1: Structures [schema specified]
    Returns:
    true - value was specified in schema, false - value comes from the infoset

    References fIsSpecified.

    const XMLCh * PSVIItem::getCanonicalRepresentation (  )  const

    Return the canonical representation of this value.

    Note that, formally, this is not a PSVI property.

    Returns:
    string representing the canonical representation, if this item was validated by a simple type definition for which canonical representations of values are defined.

    References fCanonicalValue.

    virtual XSValue* PSVIItem::getActualValue (  )  const [virtual]

    Get actual value in the form of XSValue, caller needs to delete the object returned.

    Returns:
    an XSValue

    void PSVIItem::setValidationAttempted ( PSVIItem::ASSESSMENT_TYPE  attemptType  ) 

    methods needed by implementation

    void PSVIItem::setValidity ( PSVIItem::VALIDITY_STATE  validity  ) 

    void PSVIItem::reset ( const XMLCh *const   validationContext,
    const XMLCh *const   normalizedValue,
    const VALIDITY_STATE  validityState,
    const ASSESSMENT_TYPE  assessmentType 
    )

    reset the object

    Parameters:
    validationContext corresponds to schema validation context property
    normalizedValue corresponds to schema normalized value property
    validityState state of item's validity
    assessmentType type of assessment carried out on item


    Member Data Documentation

    const XMLCh* PSVIItem::fValidationContext [protected]

    Referenced by getValidationContext().

    const XMLCh* PSVIItem::fNormalizedValue [protected]

    const XMLCh* PSVIItem::fDefaultValue [protected]

    Referenced by getSchemaDefault().

    bool PSVIItem::fIsSpecified [protected]

    Referenced by getIsSchemaSpecified().


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMLSException_8hpp.html0000644000175000017500000000436511363620005022064 0ustar borisboris Xerces-C++: DOMLSException.hpp File Reference

    DOMLSException.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DOMLSException

    Defines

    #define XERCESC_INCLUDE_GUARD_DOMLSEXCEPTION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DOMLSEXCEPTION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMLAbstractDoubleFloat_8hpp-source.html0000644000175000017500000005620511363620004025071 0ustar borisboris Xerces-C++: XMLAbstractDoubleFloat.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLEntityResolver.html0000644000175000017500000003025211363620006022770 0ustar borisboris Xerces-C++: XMLEntityResolver Class Reference

    XMLEntityResolver Class Reference

    Revised interface for resolving entities. More...

    List of all members.

    Public Member Functions

    Constructors and Destructor
    virtual ~XMLEntityResolver ()
     Destructor.
    The XMLEntityResolver interface
    virtual InputSourceresolveEntity (XMLResourceIdentifier *resourceIdentifier)=0
     Allow the application to resolve external entities.

    Protected Member Functions

     XMLEntityResolver ()
     Default Constructor.


    Detailed Description

    Revised interface for resolving entities.

    If an application needs to implement customized handling for external entities, it can implement this interface and register an instance with the parser using the parser's setXMLEntityResolver method or it can use the basic SAX interface (EntityResolver). The difference between the two interfaces is the arguments to the resolveEntity() method. With the SAX EntityResolve the arguments are systemId and publicId. With this interface the argument is a XMLResourceIdentifier object. Only one EntityResolver can be set using setEntityResolver() or setXMLEntityResolver, if both are set the last one set is used.

    The parser will then allow the application to intercept any external entities (including the external DTD subset and external parameter entities, if any) before including them.

    Many applications will not need to implement this interface, but it will be especially useful for applications that build XML documents from databases or other specialised input sources, or for applications that use URI types other than URLs.

    The following resolver would provide the application with a special character stream for the entity with the system identifier "http://www.myhost.com/today":

    #include <xercesc/util/XMLEntityResolver.hpp>
    #include <xercesc/sax/InputSource.hpp>

     class MyResolver : public XMLEntityResolver {
      public:
       InputSource resolveEntity (XMLResourceIdentifier* xmlri);
       ...
      };

     MyResolver::resolveEntity(XMLResourceIdentifier* xmlri) {
      switch(xmlri->getResourceIdentifierType()) {
       case XMLResourceIdentifier::SystemId:
        if (XMLString::compareString(xmlri->getSystemId(), "http://www.myhost.com/today")) {
         MyReader* reader = new MyReader();
         return new InputSource(reader);
        } else {
         return null;
        }
        break;
       default:
        return null;
      }
     }

    The application can also use this interface to redirect system identifiers to local URIs or to look up replacements in a catalog (possibly by using the public identifier).

    The HandlerBase class implements the default behaviour for this interface, which is simply always to return null (to request that the parser use the default system identifier).

    See also:
    XMLResourceIdentifier

    Parser::setXMLEntityResolver

    InputSource::InputSource

    HandlerBase::HandlerBase


    Constructor & Destructor Documentation

    virtual XMLEntityResolver::~XMLEntityResolver (  )  [virtual]

    Destructor.

    XMLEntityResolver::XMLEntityResolver (  )  [protected]

    Default Constructor.


    Member Function Documentation

    virtual InputSource* XMLEntityResolver::resolveEntity ( XMLResourceIdentifier resourceIdentifier  )  [pure virtual]

    Allow the application to resolve external entities.

    The Parser will call this method before opening any external entity except the top-level document entity (including the external DTD subset, external entities referenced within the DTD, and external entities referenced within the document element): the application may request that the parser resolve the entity itself, that it use an alternative URI, or that it use an entirely different input source.

    Application writers can use this method to redirect external system identifiers to secure and/or local URIs, to look up public identifiers in a catalogue, or to read an entity from a database or other input source (including, for example, a dialog box).

    If the system identifier is a URL, the SAX parser must resolve it fully before reporting it to the application.

    Parameters:
    resourceIdentifier An object containing the type of resource to be resolved and the associated data members corresponding to this type.
    Returns:
    An InputSource object describing the new input source, or null to request that the parser open a regular URI connection to the system identifier. The returned InputSource is owned by the parser which is responsible to clean up the memory.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    IOException An IO exception, possibly the result of creating a new InputStream or Reader for the InputSource.
    See also:
    InputSource::InputSource

    XMLResourceIdentifier


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLString.html0000644000175000017500000077535511363620006021264 0ustar borisboris Xerces-C++: XMLString Class Reference

    XMLString Class Reference

    Class for representing native character strings and handling common string operations. More...

    List of all members.

    Static Public Member Functions

    String concatenation functions
    static void catString (char *const target, const char *const src)
     Concatenates two strings.
    static void catString (XMLCh *const target, const XMLCh *const src)
     Concatenates two strings.
    String comparison functions
    static int compareIString (const char *const str1, const char *const str2)
     Lexicographically compares lowercase versions of str1 and str2 and returns a value indicating their relationship.
    static int compareIString (const XMLCh *const str1, const XMLCh *const str2)
     Lexicographically compares lowercase versions of str1 and str2 and returns a value indicating their relationship.
    static int compareIStringASCII (const XMLCh *const str1, const XMLCh *const str2)
     Lexicographically compares lowercase versions of str1 and str2 and returns a value indicating their relationship.
    static int compareNString (const char *const str1, const char *const str2, const XMLSize_t count)
     Lexicographically compares, at most, the first count characters in str1 and str2 and returns a value indicating the relationship between the substrings.
    static int compareNString (const XMLCh *const str1, const XMLCh *const str2, const XMLSize_t count)
     Lexicographically compares, at most, the first count characters in str1 and str2 and returns a value indicating the relationship between the substrings.
    static int compareNIString (const char *const str1, const char *const str2, const XMLSize_t count)
     Lexicographically compares, at most, the first count characters in str1 and str2 without regard to case and returns a value indicating the relationship between the substrings.
    static int compareNIString (const XMLCh *const str1, const XMLCh *const str2, const XMLSize_t count)
     Lexicographically compares, at most, the first count characters in str1 and str2 without regard to case and returns a value indicating the relationship between the substrings.
    static int compareString (const char *const str1, const char *const str2)
     Lexicographically compares str1 and str2 and returns a value indicating their relationship.
    static int compareString (const XMLCh *const str1, const XMLCh *const str2)
     Lexicographically compares str1 and str2 and returns a value indicating their relationship.
    static bool equals (const XMLCh *str1, const XMLCh *str2)
     compares str1 and str2
    static bool equalsN (const XMLCh *str1, const XMLCh *str2, XMLSize_t n)
     compares str1 and str2
    static bool equals (const char *str1, const char *str2)
    static bool equalsN (const char *str1, const char *str2, XMLSize_t n)
     compares str1 and str2
    static bool regionMatches (const XMLCh *const str1, const int offset1, const XMLCh *const str2, const int offset2, const XMLSize_t charCount)
     Lexicographically compares str1 and str2 regions and returns true if they are equal, otherwise false.
    static bool regionIMatches (const XMLCh *const str1, const int offset1, const XMLCh *const str2, const int offset2, const XMLSize_t charCount)
     Lexicographically compares str1 and str2 regions without regard to case and returns true if they are equal, otherwise false.
    String copy functions
    static void copyString (char *const target, const char *const src)
     Copies src, including the terminating null character, to the location specified by target.
    static void copyString (XMLCh *const target, const XMLCh *const src)
     Copies src, including the terminating null character, to the location specified by target.
    static bool copyNString (XMLCh *const target, const XMLCh *const src, const XMLSize_t maxChars)
     Copies src, upto a fixed number of characters, to the location specified by target.
    Hash functions
    static XMLSize_t hash (const char *const toHash, const XMLSize_t hashModulus)
     Hashes a string given a modulus.
    static XMLSize_t hash (const XMLCh *const toHash, const XMLSize_t hashModulus)
     Hashes a string given a modulus.
    static XMLSize_t hashN (const XMLCh *const toHash, const XMLSize_t numChars, const XMLSize_t hashModulus)
     Hashes a string given a modulus taking a maximum number of characters as the limit.
    Search functions
    static int indexOf (const char *const toSearch, const char ch)
     Provides the index of the first occurrence of a character within a string.
    static int indexOf (const XMLCh *const toSearch, const XMLCh ch)
     Provides the index of the first occurrence of a character within a string.
    static int indexOf (const char *const toSearch, const char chToFind, const XMLSize_t fromIndex, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Provides the index of the first occurrence of a character within a string starting from a given index.
    static int indexOf (const XMLCh *const toSearch, const XMLCh chToFind, const XMLSize_t fromIndex, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Provides the index of the first occurrence of a character within a string starting from a given index.
    static int lastIndexOf (const char *const toSearch, const char ch)
     Provides the index of the last occurrence of a character within a string.
    static int lastIndexOf (const XMLCh *const toSearch, const XMLCh ch)
     Provides the index of the last occurrence of a character within a string.
    static int lastIndexOf (const XMLCh ch, const XMLCh *const toSearch, const XMLSize_t toSearchLen)
     Provides the index of the last occurrence of a character within a string.
    static int lastIndexOf (const char *const toSearch, const char chToFind, const XMLSize_t fromIndex, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Provides the index of the last occurrence of a character within a string starting backward from a given index.
    static int lastIndexOf (const XMLCh *const toSearch, const XMLCh ch, const XMLSize_t fromIndex, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Provides the index of the last occurrence of a character within a string starting backward from a given index.
    Fixed size string movement
    static void moveChars (XMLCh *const targetStr, const XMLCh *const srcStr, const XMLSize_t count)
     Moves X number of chars.
    Substring function
    static void subString (char *const targetStr, const char *const srcStr, const XMLSize_t startIndex, const XMLSize_t endIndex, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Create a substring of a given string.
    static void subString (XMLCh *const targetStr, const XMLCh *const srcStr, const XMLSize_t startIndex, const XMLSize_t endIndex, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Create a substring of a given string.
    static void subString (XMLCh *const targetStr, const XMLCh *const srcStr, const XMLSize_t startIndex, const XMLSize_t endIndex, const XMLSize_t srcStrLength, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Create a substring of a given string.
    Replication function
    static char * replicate (const char *const toRep, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Replicates a string NOTE: The returned buffer is allocated with the MemoryManager.
    static XMLChreplicate (const XMLCh *const toRep, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Replicates a string NOTE: The returned buffer is allocated with the MemoryManager.
    String query function
    static bool startsWith (const char *const toTest, const char *const prefix)
     Tells if the sub-string appears within a string at the beginning.
    static bool startsWith (const XMLCh *const toTest, const XMLCh *const prefix)
     Tells if the sub-string appears within a string at the beginning.
    static bool startsWithI (const char *const toTest, const char *const prefix)
     Tells if the sub-string appears within a string at the beginning without regard to case.
    static bool startsWithI (const XMLCh *const toTest, const XMLCh *const prefix)
     Tells if the sub-string appears within a string at the beginning without regard to case.
    static bool endsWith (const XMLCh *const toTest, const XMLCh *const suffix)
     Tells if the sub-string appears within a string at the end.
    static const XMLChfindAny (const XMLCh *const toSearch, const XMLCh *const searchList)
     Tells if a string has any occurrence of any character of another string within itself.
    static XMLChfindAny (XMLCh *const toSearch, const XMLCh *const searchList)
     Tells if a string has any occurrence of any character of another string within itself.
    static int patternMatch (const XMLCh *const toSearch, const XMLCh *const pattern)
     Tells if a string has pattern within itself.
    static XMLSize_t stringLen (const char *const src)
     Get the length of the string.
    static XMLSize_t stringLen (const XMLCh *const src)
     Get the length of the string.
    static bool isValidNOTATION (const XMLCh *const name, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Checks whether an name is a valid NOTATION according to XML 1.0.
    static bool isValidEncName (const XMLCh *const name)
     Checks whether an name is a valid EncName.
    static bool isAlpha (XMLCh const theChar)
     Checks whether a character is within [a-zA-Z].
    static bool isDigit (XMLCh const theChar)
     Checks whether a character is within [0-9].
    static bool isAlphaNum (XMLCh const theChar)
     Checks whether a character is within [0-9a-zA-Z].
    static bool isHex (XMLCh const theChar)
     Checks whether a character is within [0-9a-fA-F].
    static bool isInList (const XMLCh *const toFind, const XMLCh *const enumList)
     Find is the string appears in the enum list.
    Conversion functions
    static void sizeToText (const XMLSize_t toFormat, char *const toFill, const XMLSize_t maxChars, const unsigned int radix, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Converts size to a text string based a given radix.
    static void sizeToText (const XMLSize_t toFormat, XMLCh *const toFill, const XMLSize_t maxChars, const unsigned int radix, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Converts size to a text string based a given radix.
    static void binToText (const unsigned int toFormat, char *const toFill, const XMLSize_t maxChars, const unsigned int radix, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Converts binary data to a text string based a given radix.
    static void binToText (const unsigned int toFormat, XMLCh *const toFill, const XMLSize_t maxChars, const unsigned int radix, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Converts binary data to a text string based a given radix.
    static void binToText (const unsigned long toFormat, char *const toFill, const XMLSize_t maxChars, const unsigned int radix, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Converts binary data to a text string based a given radix.
    static void binToText (const unsigned long toFormat, XMLCh *const toFill, const XMLSize_t maxChars, const unsigned int radix, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Converts binary data to a text string based a given radix.
    static void binToText (const int toFormat, char *const toFill, const XMLSize_t maxChars, const unsigned int radix, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Converts binary data to a text string based a given radix.
    static void binToText (const int toFormat, XMLCh *const toFill, const XMLSize_t maxChars, const unsigned int radix, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Converts binary data to a text string based a given radix.
    static void binToText (const long toFormat, char *const toFill, const XMLSize_t maxChars, const unsigned int radix, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Converts binary data to a text string based a given radix.
    static void binToText (const long toFormat, XMLCh *const toFill, const XMLSize_t maxChars, const unsigned int radix, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Converts binary data to a text string based a given radix.
    static bool textToBin (const XMLCh *const toConvert, unsigned int &toFill, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Converts a string of decimal chars to a binary value.
    static int parseInt (const XMLCh *const toConvert, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Converts a string of decimal chars to a binary value.
    static void cut (XMLCh *const toCutFrom, const XMLSize_t count)
     Cut leading chars from a string.
    static char * transcode (const XMLCh *const toTranscode, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Transcodes a string to native code-page.
    static bool transcode (const XMLCh *const toTranscode, char *const toFill, const XMLSize_t maxChars, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Transcodes a string to native code-page (DEPRECATED).
    static XMLChtranscode (const char *const toTranscode, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Transcodes a string to native code-page.
    static bool transcode (const char *const toTranscode, XMLCh *const toFill, const XMLSize_t maxChars, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Transcodes a string to native code-page (DEPRECATED).
    static void trim (char *const toTrim)
     Trims off extra space characters from the start and end of the string, moving the non-space string content back to the start.
    static void trim (XMLCh *const toTrim)
     Trims off extra space characters from the start and end of the string, moving the non-space string content back to the start.
    static BaseRefVectorOf< XMLCh > * tokenizeString (const XMLCh *const tokenizeSrc, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Break a string into tokens with space as delimiter, and stored in a string vector.
    Formatting functions
    static XMLChmakeUName (const XMLCh *const pszURI, const XMLCh *const pszName)
     Creates a UName from a URI and base name.
    static XMLSize_t replaceTokens (XMLCh *const errText, const XMLSize_t maxChars, const XMLCh *const text1, const XMLCh *const text2, const XMLCh *const text3, const XMLCh *const text4, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Internal function to perform token replacement for strings.
    static void upperCase (XMLCh *const toUpperCase)
     Converts a string to uppercase.
    static void upperCaseASCII (XMLCh *const toUpperCase)
     Converts a string to uppercase The routine only uppercases A to Z (other characters not changed).
    static void lowerCase (XMLCh *const toLowerCase)
     Converts a string to lowercase.
    static void lowerCaseASCII (XMLCh *const toLowerCase)
     Converts a string to lowercase The routine only lowercases a to z (other characters not changed).
    static bool isWSReplaced (const XMLCh *const toCheck)
     Check if string is WhiteSpace:replace.
    static bool isWSCollapsed (const XMLCh *const toCheck)
     Check if string is WhiteSpace:collapse.
    static void replaceWS (XMLCh *toConvert, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Replace whitespace.
    static void collapseWS (XMLCh *toConvert, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Collapse whitespace.
    static void removeWS (XMLCh *toConvert, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Remove whitespace.
    static void removeChar (const XMLCh *const srcString, const XMLCh &toRemove, XMLBuffer &dstBuffer)
     Remove character.
    static void fixURI (const XMLCh *const str, XMLCh *const target)
     Fixes a platform dependent absolute path filename to standard URI form.
    String Memory Management functions
    static void release (char **buf, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Release the parameter string that was allocated by XMLString::transcode and XMLString::replicate.
    static void release (XMLCh **buf, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Release the parameter string that was allocated by XMLString::transcode and XMLString::replicate.

    Friends

    class XMLPlatformUtils


    Detailed Description

    Class for representing native character strings and handling common string operations.

    This class is Unicode compliant. This class is designed primarily for internal use, but due to popular demand, it is being made publicly available. Users of this class must understand that this is not an officially supported class. All public methods of this class are static functions.


    Member Function Documentation

    static void XMLString::catString ( char *const   target,
    const char *const   src 
    ) [static]

    Concatenates two strings.

    catString appends src to target and terminates the resulting string with a null character. The initial character of src overwrites the terminating character of target .

    No overflow checking is performed when strings are copied or appended. The behavior of catString is undefined if source and destination strings overlap.

    Parameters:
    target Null-terminated destination string
    src Null-terminated source string

    static void XMLString::catString ( XMLCh *const   target,
    const XMLCh *const   src 
    ) [static]

    Concatenates two strings.

    catString appends src to target and terminates the resulting string with a null character. The initial character of src overwrites the terminating character of target. No overflow checking is performed when strings are copied or appended. The behavior of catString is undefined if source and destination strings overlap.

    Parameters:
    target Null-terminated destination string
    src Null-terminated source string

    static int XMLString::compareIString ( const char *const   str1,
    const char *const   str2 
    ) [static]

    Lexicographically compares lowercase versions of str1 and str2 and returns a value indicating their relationship.

    Parameters:
    str1 Null-terminated string to compare
    str2 Null-terminated string to compare
    Returns:
    The return value indicates the relation of str1 to str2 as follows Less than 0 means str1 is less than str2 Equal to 0 means str1 is identical to str2 Greater than 0 means str1 is more than str2

    static int XMLString::compareIString ( const XMLCh *const   str1,
    const XMLCh *const   str2 
    ) [static]

    Lexicographically compares lowercase versions of str1 and str2 and returns a value indicating their relationship.

    Parameters:
    str1 Null-terminated string to compare
    str2 Null-terminated string to compare
    Returns:
    The return value indicates the relation of str1 to str2 as follows Less than 0 means str1 is less than str2 Equal to 0 means str1 is identical to str2 Greater than 0 means str1 is more than str2

    static int XMLString::compareIStringASCII ( const XMLCh *const   str1,
    const XMLCh *const   str2 
    ) [static]

    Lexicographically compares lowercase versions of str1 and str2 and returns a value indicating their relationship.

    The routine only lowercases A to Z.

    Parameters:
    str1 Null-terminated ASCII string to compare
    str2 Null-terminated ASCII string to compare
    Returns:
    The return value indicates the relation of str1 to str2 as follows Less than 0 means str1 is less than str2 Equal to 0 means str1 is identical to str2 Greater than 0 means str1 is more than str2

    static int XMLString::compareNString ( const char *const   str1,
    const char *const   str2,
    const XMLSize_t  count 
    ) [static]

    Lexicographically compares, at most, the first count characters in str1 and str2 and returns a value indicating the relationship between the substrings.

    Parameters:
    str1 Null-terminated string to compare
    str2 Null-terminated string to compare
    count The number of characters to compare
    Returns:
    The return value indicates the relation of str1 to str2 as follows Less than 0 means str1 is less than str2 Equal to 0 means str1 is identical to str2 Greater than 0 means str1 is more than str2

    Referenced by startsWith().

    static int XMLString::compareNString ( const XMLCh *const   str1,
    const XMLCh *const   str2,
    const XMLSize_t  count 
    ) [static]

    Lexicographically compares, at most, the first count characters in str1 and str2 and returns a value indicating the relationship between the substrings.

    Parameters:
    str1 Null-terminated string to compare
    str2 Null-terminated string to compare
    count The number of characters to compare
    Returns:
    The return value indicates the relation of str1 to str2 as follows Less than 0 means str1 is less than str2 Equal to 0 means str1 is identical to str2 Greater than 0 means str1 is more than str2

    static int XMLString::compareNIString ( const char *const   str1,
    const char *const   str2,
    const XMLSize_t  count 
    ) [static]

    Lexicographically compares, at most, the first count characters in str1 and str2 without regard to case and returns a value indicating the relationship between the substrings.

    Parameters:
    str1 Null-terminated string to compare
    str2 Null-terminated string to compare
    count The number of characters to compare
    Returns:
    The return value indicates the relation of str1 to str2 as follows Less than 0 means str1 is less than str2 Equal to 0 means str1 is identical to str2 Greater than 0 means str1 is more than str2

    Referenced by startsWithI().

    static int XMLString::compareNIString ( const XMLCh *const   str1,
    const XMLCh *const   str2,
    const XMLSize_t  count 
    ) [static]

    Lexicographically compares, at most, the first count characters in str1 and str2 without regard to case and returns a value indicating the relationship between the substrings.

    Parameters:
    str1 Null-terminated string to compare
    str2 Null-terminated string to compare
    count The number of characters to compare
    Returns:
    The return value indicates the relation of str1 to str2 as follows Less than 0 means str1 is less than str2 Equal to 0 means str1 is identical to str2 Greater than 0 means str1 is more than str2

    static int XMLString::compareString ( const char *const   str1,
    const char *const   str2 
    ) [static]

    Lexicographically compares str1 and str2 and returns a value indicating their relationship.

    Parameters:
    str1 Null-terminated string to compare
    str2 Null-terminated string to compare
    Returns:
    The return value indicates the relation of str1 to str2 as follows Less than 0 means str1 is less than str2 Equal to 0 means str1 is identical to str2 Greater than 0 means str1 is more than str2

    static int XMLString::compareString ( const XMLCh *const   str1,
    const XMLCh *const   str2 
    ) [static]

    Lexicographically compares str1 and str2 and returns a value indicating their relationship.

    Parameters:
    str1 Null-terminated string to compare
    str2 Null-terminated string to compare
    Returns:
    The return value indicates the relation of str1 to str2 as follows Less than 0 means str1 is less than str2 Equal to 0 means str1 is identical to str2 Greater than 0 means str1 is more than str2

    bool XMLString::equals ( const XMLCh str1,
    const XMLCh str2 
    ) [static]

    compares str1 and str2

    Parameters:
    str1 Null-terminated string to compare
    str2 Null-terminated string to compare
    Returns:
    true if two strings are equal, false if not If one string is null, while the other is zero-length string, it is considered as equal.

    bool XMLString::equalsN ( const XMLCh str1,
    const XMLCh str2,
    XMLSize_t  n 
    ) [static]

    compares str1 and str2

    Parameters:
    str1 string to compare
    str2 string to compare
    n number of characters to compare
    Returns:
    true if two strings are equal, false if not If one string is null, while the other is zero-length string, it is considered as equal.

    bool XMLString::equals ( const char *  str1,
    const char *  str2 
    ) [static]

    bool XMLString::equalsN ( const char *  str1,
    const char *  str2,
    XMLSize_t  n 
    ) [static]

    compares str1 and str2

    Parameters:
    str1 string to compare
    str2 string to compare
    n number of characters to compare
    Returns:
    true if two strings are equal, false if not If one string is null, while the other is zero-length string, it is considered as equal.

    static bool XMLString::regionMatches ( const XMLCh *const   str1,
    const int  offset1,
    const XMLCh *const   str2,
    const int  offset2,
    const XMLSize_t  charCount 
    ) [static]

    Lexicographically compares str1 and str2 regions and returns true if they are equal, otherwise false.

    A substring of str1 is compared to a substring of str2. The result is true if these substrings represent identical character sequences. The substring of str1 to be compared begins at offset1 and has length charCount. The substring of str2 to be compared begins at offset2 and has length charCount. The result is false if and only if at least one of the following is true: offset1 is negative. offset2 is negative. offset1+charCount is greater than the length of str1. offset2+charCount is greater than the length of str2. There is some nonnegative integer k less than charCount such that: str1.charAt(offset1+k) != str2.charAt(offset2+k)

    Parameters:
    str1 Null-terminated string to compare
    offset1 Starting offset of str1
    str2 Null-terminated string to compare
    offset2 Starting offset of str2
    charCount The number of characters to compare
    Returns:
    true if the specified subregion of str1 exactly matches the specified subregion of str2>; false otherwise.

    Referenced by endsWith().

    static bool XMLString::regionIMatches ( const XMLCh *const   str1,
    const int  offset1,
    const XMLCh *const   str2,
    const int  offset2,
    const XMLSize_t  charCount 
    ) [static]

    Lexicographically compares str1 and str2 regions without regard to case and returns true if they are equal, otherwise false.

    A substring of str1 is compared to a substring of str2. The result is true if these substrings represent identical character sequences. The substring of str1 to be compared begins at offset1 and has length charCount. The substring of str2 to be compared begins at offset2 and has length charCount. The result is false if and only if at least one of the following is true: offset1 is negative. offset2 is negative. offset1+charCount is greater than the length of str1. offset2+charCount is greater than the length of str2. There is some nonnegative integer k less than charCount such that: str1.charAt(offset1+k) != str2.charAt(offset2+k)

    Parameters:
    str1 Null-terminated string to compare
    offset1 Starting offset of str1
    str2 Null-terminated string to compare
    offset2 Starting offset of str2
    charCount The number of characters to compare
    Returns:
    true if the specified subregion of str1 exactly matches the specified subregion of str2>; false otherwise.

    static void XMLString::copyString ( char *const   target,
    const char *const   src 
    ) [static]

    Copies src, including the terminating null character, to the location specified by target.

    No overflow checking is performed when strings are copied or appended. The behavior of strcpy is undefined if the source and destination strings overlap.

    Parameters:
    target Destination string
    src Null-terminated source string

    static void XMLString::copyString ( XMLCh *const   target,
    const XMLCh *const   src 
    ) [static]

    Copies src, including the terminating null character, to the location specified by target.

    No overflow checking is performed when strings are copied or appended. The behavior of copyString is undefined if the source and destination strings overlap.

    Parameters:
    target Destination string
    src Null-terminated source string

    static bool XMLString::copyNString ( XMLCh *const   target,
    const XMLCh *const   src,
    const XMLSize_t  maxChars 
    ) [static]

    Copies src, upto a fixed number of characters, to the location specified by target.

    No overflow checking is performed when strings are copied or appended. The behavior of copyNString is undefined if the source and destination strings overlap.

    Parameters:
    target Destination string. The size of the buffer should atleast be 'maxChars + 1'.
    src Null-terminated source string
    maxChars The maximum number of characters to copy

    static XMLSize_t XMLString::hash ( const char *const   toHash,
    const XMLSize_t  hashModulus 
    ) [static]

    Hashes a string given a modulus.

    Parameters:
    toHash The string to hash
    hashModulus The divisor to be used for hashing
    Returns:
    Returns the hash value

    XMLSize_t XMLString::hash ( const XMLCh *const   toHash,
    const XMLSize_t  hashModulus 
    ) [static]

    Hashes a string given a modulus.

    Parameters:
    toHash The string to hash
    hashModulus The divisor to be used for hashing
    Returns:
    Returns the hash value

    XMLSize_t XMLString::hashN ( const XMLCh *const   toHash,
    const XMLSize_t  numChars,
    const XMLSize_t  hashModulus 
    ) [static]

    Hashes a string given a modulus taking a maximum number of characters as the limit.

    Parameters:
    toHash The string to hash
    numChars The maximum number of characters to consider for hashing
    hashModulus The divisor to be used for hashing
    Returns:
    Returns the hash value

    static int XMLString::indexOf ( const char *const   toSearch,
    const char  ch 
    ) [static]

    Provides the index of the first occurrence of a character within a string.

    Parameters:
    toSearch The string to search
    ch The character to search within the string
    Returns:
    If found, returns the index of the character within the string, else returns -1.

    static int XMLString::indexOf ( const XMLCh *const   toSearch,
    const XMLCh  ch 
    ) [static]

    Provides the index of the first occurrence of a character within a string.

    Parameters:
    toSearch The string to search
    ch The character to search within the string
    Returns:
    If found, returns the index of the character within the string, else returns -1.

    static int XMLString::indexOf ( const char *const   toSearch,
    const char  chToFind,
    const XMLSize_t  fromIndex,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Provides the index of the first occurrence of a character within a string starting from a given index.

    Parameters:
    toSearch The string to search
    chToFind The character to search within the string
    fromIndex The index to start searching from
    manager The MemoryManager to use to allocate objects
    Returns:
    If found, returns the index of the character within the string, else returns -1.

    static int XMLString::indexOf ( const XMLCh *const   toSearch,
    const XMLCh  chToFind,
    const XMLSize_t  fromIndex,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Provides the index of the first occurrence of a character within a string starting from a given index.

    Parameters:
    toSearch The string to search
    chToFind The character to search within the string
    fromIndex The index to start searching from
    manager The MemoryManager to use to allocate objects
    Returns:
    If found, returns the index of the character within the string, else returns -1.

    static int XMLString::lastIndexOf ( const char *const   toSearch,
    const char  ch 
    ) [static]

    Provides the index of the last occurrence of a character within a string.

    Parameters:
    toSearch The string to search
    ch The character to search within the string
    Returns:
    If found, returns the index of the character within the string, else returns -1.

    Referenced by lastIndexOf().

    int XMLString::lastIndexOf ( const XMLCh *const   toSearch,
    const XMLCh  ch 
    ) [static]

    Provides the index of the last occurrence of a character within a string.

    Parameters:
    toSearch The string to search
    ch The character to search within the string
    Returns:
    If found, returns the index of the character within the string, else returns -1.

    References lastIndexOf(), and stringLen().

    static int XMLString::lastIndexOf ( const XMLCh  ch,
    const XMLCh *const   toSearch,
    const XMLSize_t  toSearchLen 
    ) [static]

    Provides the index of the last occurrence of a character within a string.

    Parameters:
    ch The character to search within the string
    toSearch The string to search
    toSearchLen The length of the string to search
    Returns:
    If found, returns the index of the character within the string, else returns -1.

    static int XMLString::lastIndexOf ( const char *const   toSearch,
    const char  chToFind,
    const XMLSize_t  fromIndex,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Provides the index of the last occurrence of a character within a string starting backward from a given index.

    Parameters:
    toSearch The string to search
    chToFind The character to search within the string
    fromIndex The index to start backward search from
    manager The MemoryManager to use to allocate objects
    Returns:
    If found, returns the index of the character within the string, else returns -1.

    static int XMLString::lastIndexOf ( const XMLCh *const   toSearch,
    const XMLCh  ch,
    const XMLSize_t  fromIndex,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Provides the index of the last occurrence of a character within a string starting backward from a given index.

    Parameters:
    toSearch The string to search
    ch The character to search within the string
    fromIndex The index to start backward search from
    manager The MemoryManager to use to allocate objects
    Returns:
    If found, returns the index of the character within the string, else returns -1.

    void XMLString::moveChars ( XMLCh *const   targetStr,
    const XMLCh *const   srcStr,
    const XMLSize_t  count 
    ) [static]

    Moves X number of chars.

    Parameters:
    targetStr The string to copy the chars to
    srcStr The string to copy the chars from
    count The number of chars to move

    static void XMLString::subString ( char *const   targetStr,
    const char *const   srcStr,
    const XMLSize_t  startIndex,
    const XMLSize_t  endIndex,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Create a substring of a given string.

    The substring begins at the specified beginIndex and extends to the character at index endIndex - 1.

    Parameters:
    targetStr The string to copy the chars to
    srcStr The string to copy the chars from
    startIndex beginning index, inclusive.
    endIndex the ending index, exclusive.
    manager The MemoryManager to use to allocate objects

    static void XMLString::subString ( XMLCh *const   targetStr,
    const XMLCh *const   srcStr,
    const XMLSize_t  startIndex,
    const XMLSize_t  endIndex,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Create a substring of a given string.

    The substring begins at the specified beginIndex and extends to the character at index endIndex - 1.

    Parameters:
    targetStr The string to copy the chars to
    srcStr The string to copy the chars from
    startIndex beginning index, inclusive.
    endIndex the ending index, exclusive.
    manager The MemoryManager to use to allocate objects

    static void XMLString::subString ( XMLCh *const   targetStr,
    const XMLCh *const   srcStr,
    const XMLSize_t  startIndex,
    const XMLSize_t  endIndex,
    const XMLSize_t  srcStrLength,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Create a substring of a given string.

    The substring begins at the specified beginIndex and extends to the character at index endIndex - 1.

    Parameters:
    targetStr The string to copy the chars to
    srcStr The string to copy the chars from
    startIndex beginning index, inclusive.
    endIndex the ending index, exclusive.
    srcStrLength the length of srcStr
    manager The MemoryManager to use to allocate objects

    static char* XMLString::replicate ( const char *const   toRep,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Replicates a string NOTE: The returned buffer is allocated with the MemoryManager.

    It is the responsibility of the caller to delete it when not longer needed. You can call XMLString::release to release this returned buffer.

    Parameters:
    toRep The string to replicate
    manager The MemoryManager to use to allocate the string
    Returns:
    Returns a pointer to the replicated string
    See also:
    XMLString::release(char**, MemoryManager*)

    Referenced by SAXException::operator=(), XMLNotationDecl::setBaseURI(), XMLEntityDecl::setBaseURI(), XMLAttDef::setEnumeration(), XMLEntityDecl::setNotationName(), XMLNotationDecl::setPublicId(), XMLEntityDecl::setPublicId(), XMLNotationDecl::setSystemId(), XMLEntityDecl::setSystemId(), XMLEntityDecl::setValue(), XMLAttDef::setValue(), and AbstractDOMParser::useImplementation().

    XMLCh * XMLString::replicate ( const XMLCh *const   toRep,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Replicates a string NOTE: The returned buffer is allocated with the MemoryManager.

    It is the responsibility of the caller to delete it when not longer needed. You can call XMLString::release to release this returned buffer.

    Parameters:
    toRep The string to replicate
    manager The MemoryManager to use to allocate the string
    Returns:
    Returns a pointer to the replicated string
    See also:
    XMLString::release(XMLCh**, MemoryManager*)

    References MemoryManager::allocate(), and stringLen().

    static bool XMLString::startsWith ( const char *const   toTest,
    const char *const   prefix 
    ) [static]

    Tells if the sub-string appears within a string at the beginning.

    Parameters:
    toTest The string to test
    prefix The sub-string that needs to be checked
    Returns:
    Returns true if the sub-string was found at the beginning of toTest, else false

    bool XMLString::startsWith ( const XMLCh *const   toTest,
    const XMLCh *const   prefix 
    ) [static]

    Tells if the sub-string appears within a string at the beginning.

    Parameters:
    toTest The string to test
    prefix The sub-string that needs to be checked
    Returns:
    Returns true if the sub-string was found at the beginning of toTest, else false

    References compareNString(), and stringLen().

    static bool XMLString::startsWithI ( const char *const   toTest,
    const char *const   prefix 
    ) [static]

    Tells if the sub-string appears within a string at the beginning without regard to case.

    Parameters:
    toTest The string to test
    prefix The sub-string that needs to be checked
    Returns:
    Returns true if the sub-string was found at the beginning of toTest, else false

    bool XMLString::startsWithI ( const XMLCh *const   toTest,
    const XMLCh *const   prefix 
    ) [static]

    Tells if the sub-string appears within a string at the beginning without regard to case.

    Parameters:
    toTest The string to test
    prefix The sub-string that needs to be checked
    Returns:
    Returns true if the sub-string was found at the beginning of toTest, else false

    References compareNIString(), and stringLen().

    bool XMLString::endsWith ( const XMLCh *const   toTest,
    const XMLCh *const   suffix 
    ) [static]

    Tells if the sub-string appears within a string at the end.

    Parameters:
    toTest The string to test
    suffix The sub-string that needs to be checked
    Returns:
    Returns true if the sub-string was found at the end of toTest, else false

    References regionMatches(), and stringLen().

    static const XMLCh* XMLString::findAny ( const XMLCh *const   toSearch,
    const XMLCh *const   searchList 
    ) [static]

    Tells if a string has any occurrence of any character of another string within itself.

    Parameters:
    toSearch The string to be searched
    searchList The string from which characters to be searched for are drawn
    Returns:
    Returns the pointer to the location where the first occurrence of any character from searchList is found, else returns 0

    static XMLCh* XMLString::findAny ( XMLCh *const   toSearch,
    const XMLCh *const   searchList 
    ) [static]

    Tells if a string has any occurrence of any character of another string within itself.

    Parameters:
    toSearch The string to be searched
    searchList The string from which characters to be searched for are drawn
    Returns:
    Returns the pointer to the location where the first occurrence of any character from searchList is found, else returns 0

    static int XMLString::patternMatch ( const XMLCh *const   toSearch,
    const XMLCh *const   pattern 
    ) [static]

    Tells if a string has pattern within itself.

    Parameters:
    toSearch The string to be searched
    pattern The pattern to be located within the string
    Returns:
    Returns index to the location where the pattern was found, else returns -1

    static XMLSize_t XMLString::stringLen ( const char *const   src  )  [static]

    Get the length of the string.

    Parameters:
    src The string whose length is to be determined
    Returns:
    Returns the length of the string

    Referenced by endsWith(), XMLBigInteger::getTotalDigit(), lastIndexOf(), replicate(), XMLDateTime::setBuffer(), QName::setLocalPart(), QName::setPrefix(), XMLEntityDecl::setValue(), startsWith(), and startsWithI().

    XMLSize_t XMLString::stringLen ( const XMLCh *const   src  )  [static]

    Get the length of the string.

    Parameters:
    src The string whose length is to be determined
    Returns:
    Returns the length of the string

    static bool XMLString::isValidNOTATION ( const XMLCh *const   name,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Checks whether an name is a valid NOTATION according to XML 1.0.

    Parameters:
    name The string to check its NOTATION validity
    manager The memory manager
    Returns:
    Returns true if name is NOTATION valid, otherwise false

    static bool XMLString::isValidEncName ( const XMLCh *const   name  )  [static]

    Checks whether an name is a valid EncName.

    Parameters:
    name The string to check its EncName validity
    Returns:
    Returns true if name is EncName valid, otherwise false

    static bool XMLString::isAlpha ( XMLCh const   theChar  )  [static]

    Checks whether a character is within [a-zA-Z].

    Parameters:
    theChar the character to check
    Returns:
    Returns true if within the range, otherwise false

    static bool XMLString::isDigit ( XMLCh const   theChar  )  [static]

    Checks whether a character is within [0-9].

    Parameters:
    theChar the character to check
    Returns:
    Returns true if within the range, otherwise false

    static bool XMLString::isAlphaNum ( XMLCh const   theChar  )  [static]

    Checks whether a character is within [0-9a-zA-Z].

    Parameters:
    theChar the character to check
    Returns:
    Returns true if within the range, otherwise false

    static bool XMLString::isHex ( XMLCh const   theChar  )  [static]

    Checks whether a character is within [0-9a-fA-F].

    Parameters:
    theChar the character to check
    Returns:
    Returns true if within the range, otherwise false

    static bool XMLString::isInList ( const XMLCh *const   toFind,
    const XMLCh *const   enumList 
    ) [static]

    Find is the string appears in the enum list.

    Parameters:
    toFind the string to be found
    enumList the list return true if found

    static void XMLString::sizeToText ( const XMLSize_t  toFormat,
    char *const   toFill,
    const XMLSize_t  maxChars,
    const unsigned int  radix,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Converts size to a text string based a given radix.

    Parameters:
    toFormat The size to convert
    toFill The buffer that will hold the output on return. The size of this buffer should at least be 'maxChars + 1'.
    maxChars The maximum number of output characters that can be accepted. If the result will not fit, it is an error.
    radix The radix of the input data, based on which the conversion
    manager The MemoryManager to use to allocate objects will be done

    static void XMLString::sizeToText ( const XMLSize_t  toFormat,
    XMLCh *const   toFill,
    const XMLSize_t  maxChars,
    const unsigned int  radix,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Converts size to a text string based a given radix.

    Parameters:
    toFormat The size to convert
    toFill The buffer that will hold the output on return. The size of this buffer should at least be 'maxChars + 1'.
    maxChars The maximum number of output characters that can be accepted. If the result will not fit, it is an error.
    radix The radix of the input data, based on which the conversion
    manager The MemoryManager to use to allocate objects will be done

    static void XMLString::binToText ( const unsigned int  toFormat,
    char *const   toFill,
    const XMLSize_t  maxChars,
    const unsigned int  radix,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Converts binary data to a text string based a given radix.

    Parameters:
    toFormat The number to convert
    toFill The buffer that will hold the output on return. The size of this buffer should at least be 'maxChars + 1'.
    maxChars The maximum number of output characters that can be accepted. If the result will not fit, it is an error.
    radix The radix of the input data, based on which the conversion
    manager The MemoryManager to use to allocate objects will be done

    static void XMLString::binToText ( const unsigned int  toFormat,
    XMLCh *const   toFill,
    const XMLSize_t  maxChars,
    const unsigned int  radix,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Converts binary data to a text string based a given radix.

    Parameters:
    toFormat The number to convert
    toFill The buffer that will hold the output on return. The size of this buffer should at least be 'maxChars + 1'.
    maxChars The maximum number of output characters that can be accepted. If the result will not fit, it is an error.
    radix The radix of the input data, based on which the conversion
    manager The MemoryManager to use to allocate objects will be done

    static void XMLString::binToText ( const unsigned long  toFormat,
    char *const   toFill,
    const XMLSize_t  maxChars,
    const unsigned int  radix,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Converts binary data to a text string based a given radix.

    Parameters:
    toFormat The number to convert
    toFill The buffer that will hold the output on return. The size of this buffer should at least be 'maxChars + 1'.
    maxChars The maximum number of output characters that can be accepted. If the result will not fit, it is an error.
    radix The radix of the input data, based on which the conversion
    manager The MemoryManager to use to allocate objects will be done

    static void XMLString::binToText ( const unsigned long  toFormat,
    XMLCh *const   toFill,
    const XMLSize_t  maxChars,
    const unsigned int  radix,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Converts binary data to a text string based a given radix.

    Parameters:
    toFormat The number to convert
    toFill The buffer that will hold the output on return. The size of this buffer should at least be 'maxChars + 1'.
    maxChars The maximum number of output characters that can be accepted. If the result will not fit, it is an error.
    radix The radix of the input data, based on which the conversion
    manager The MemoryManager to use to allocate objects will be done

    static void XMLString::binToText ( const int  toFormat,
    char *const   toFill,
    const XMLSize_t  maxChars,
    const unsigned int  radix,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Converts binary data to a text string based a given radix.

    Parameters:
    toFormat The number to convert
    toFill The buffer that will hold the output on return. The size of this buffer should at least be 'maxChars + 1'.
    maxChars The maximum number of output characters that can be accepted. If the result will not fit, it is an error.
    radix The radix of the input data, based on which the conversion
    manager The MemoryManager to use to allocate objects will be done

    static void XMLString::binToText ( const int  toFormat,
    XMLCh *const   toFill,
    const XMLSize_t  maxChars,
    const unsigned int  radix,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Converts binary data to a text string based a given radix.

    Parameters:
    toFormat The number to convert
    toFill The buffer that will hold the output on return. The size of this buffer should at least be 'maxChars + 1'.
    maxChars The maximum number of output characters that can be accepted. If the result will not fit, it is an error.
    radix The radix of the input data, based on which the conversion
    manager The MemoryManager to use to allocate objects will be done

    static void XMLString::binToText ( const long  toFormat,
    char *const   toFill,
    const XMLSize_t  maxChars,
    const unsigned int  radix,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Converts binary data to a text string based a given radix.

    Parameters:
    toFormat The number to convert
    toFill The buffer that will hold the output on return. The size of this buffer should at least be 'maxChars + 1'.
    maxChars The maximum number of output characters that can be accepted. If the result will not fit, it is an error.
    radix The radix of the input data, based on which the conversion
    manager The MemoryManager to use to allocate objects will be done

    static void XMLString::binToText ( const long  toFormat,
    XMLCh *const   toFill,
    const XMLSize_t  maxChars,
    const unsigned int  radix,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Converts binary data to a text string based a given radix.

    Parameters:
    toFormat The number to convert
    toFill The buffer that will hold the output on return. The size of this buffer should at least be 'maxChars + 1'.
    maxChars The maximum number of output characters that can be accepted. If the result will not fit, it is an error.
    radix The radix of the input data, based on which the conversion
    manager The MemoryManager to use to allocate objects will be done

    static bool XMLString::textToBin ( const XMLCh *const   toConvert,
    unsigned int &  toFill,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Converts a string of decimal chars to a binary value.

    Note that leading and trailing whitespace is legal and will be ignored but the remainder must be all decimal digits.

    Parameters:
    toConvert The string of digits to convert
    toFill The unsigned int value to fill with the converted value.
    manager The MemoryManager to use to allocate objects

    static int XMLString::parseInt ( const XMLCh *const   toConvert,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Converts a string of decimal chars to a binary value.

    Note that leading and trailing whitespace is legal and will be ignored,

    Only one and either of (+,-) after the leading whitespace, before any other characters are allowed.

    but the remainder must be all decimal digits.

    Parameters:
    toConvert The string of digits to convert
    manager The MemoryManager to use to allocate objects

    static void XMLString::cut ( XMLCh *const   toCutFrom,
    const XMLSize_t  count 
    ) [static]

    Cut leading chars from a string.

    Parameters:
    toCutFrom The string to cut chars from
    count The count of leading chars to cut

    static char* XMLString::transcode ( const XMLCh *const   toTranscode,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Transcodes a string to native code-page.

    NOTE: The returned buffer is dynamically allocated and is the responsibility of the caller to delete it when not longer needed. You can call XMLString::release to release this returned buffer.

    Parameters:
    toTranscode The string to be transcoded
    manager The MemoryManager to use to allocate objects
    Returns:
    Returns the transcoded string
    See also:
    XMLString::release(XMLCh**, MemoryManager*)

    static bool XMLString::transcode ( const XMLCh *const   toTranscode,
    char *const   toFill,
    const XMLSize_t  maxChars,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Transcodes a string to native code-page (DEPRECATED).

    Be aware that when transcoding to an external encoding, that each Unicode char can create multiple output bytes. So you cannot assume a one to one correspondence of input chars to output bytes.

    Parameters:
    toTranscode The string tobe transcoded
    toFill The buffer that is filled with the transcoded value. The size of this buffer should atleast be 'maxChars + 1'.
    maxChars The maximum number of bytes that the output buffer can hold (not including the null, which is why toFill should be at least maxChars+1.).
    manager The MemoryManager to use to allocate objects
    Returns:
    Returns true if successful, false if there was an error

    static XMLCh* XMLString::transcode ( const char *const   toTranscode,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Transcodes a string to native code-page.

    NOTE: The returned buffer is dynamically allocated and is the responsibility of the caller to delete it when not longer needed. You can call XMLString::release to release this returned buffer.

    Parameters:
    toTranscode The string to be transcoded
    manager The MemoryManager to use to allocate objects
    Returns:
    Returns the transcoded string
    See also:
    XMLString::release(char**, MemoryManager*)

    static bool XMLString::transcode ( const char *const   toTranscode,
    XMLCh *const   toFill,
    const XMLSize_t  maxChars,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Transcodes a string to native code-page (DEPRECATED).

    Parameters:
    toTranscode The string tobe transcoded
    toFill The buffer that is filled with the transcoded value. The size of this buffer should atleast be 'maxChars + 1'.
    maxChars The maximum number of characters that the output buffer can hold (not including the null, which is why toFill should be at least maxChars+1.).
    manager The MemoryManager to use to allocate objects
    Returns:
    Returns true if successful, false if there was an error

    static void XMLString::trim ( char *const   toTrim  )  [static]

    Trims off extra space characters from the start and end of the string, moving the non-space string content back to the start.

    Parameters:
    toTrim The string to be trimmed. On return this contains the trimmed string

    static void XMLString::trim ( XMLCh *const   toTrim  )  [static]

    Trims off extra space characters from the start and end of the string, moving the non-space string content back to the start.

    Parameters:
    toTrim The string to be trimmed. On return this contains the trimmed string

    static BaseRefVectorOf<XMLCh>* XMLString::tokenizeString ( const XMLCh *const   tokenizeSrc,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Break a string into tokens with space as delimiter, and stored in a string vector.

    The caller owns the string vector that is returned, and is responsible for deleting it.

    Parameters:
    tokenizeSrc String to be tokenized
    manager The MemoryManager to use to allocate objects
    Returns:
    a vector of all the tokenized string

    static XMLCh* XMLString::makeUName ( const XMLCh *const   pszURI,
    const XMLCh *const   pszName 
    ) [static]

    Creates a UName from a URI and base name.

    It is in the form {url}name, and is commonly used internally to represent fully qualified names when namespaces are enabled.

    Parameters:
    pszURI The URI part of the name
    pszName The base part of the name
    Returns:
    Returns the complete formatted UName

    static XMLSize_t XMLString::replaceTokens ( XMLCh *const   errText,
    const XMLSize_t  maxChars,
    const XMLCh *const   text1,
    const XMLCh *const   text2,
    const XMLCh *const   text3,
    const XMLCh *const   text4,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Internal function to perform token replacement for strings.

    Parameters:
    errText The text (NULL terminated) where the replacement is to be done. The size of this buffer should be 'maxChars + 1' to account for the final NULL.
    maxChars The size of the output buffer, i.e. the maximum number of characters that it will hold. If the result is larger, it will be truncated.
    text1 Replacement text-one
    text2 Replacement text-two
    text3 Replacement text-three
    text4 Replacement text-four
    manager The MemoryManager to use to allocate objects
    Returns:
    Returns the count of characters that are outputted

    static void XMLString::upperCase ( XMLCh *const   toUpperCase  )  [static]

    Converts a string to uppercase.

    Parameters:
    toUpperCase The string which needs to be converted to uppercase. On return, this buffer also holds the converted uppercase string

    static void XMLString::upperCaseASCII ( XMLCh *const   toUpperCase  )  [static]

    Converts a string to uppercase The routine only uppercases A to Z (other characters not changed).

    Parameters:
    toUpperCase The string which needs to be converted to uppercase. On return, this buffer also holds the converted uppercase string

    static void XMLString::lowerCase ( XMLCh *const   toLowerCase  )  [static]

    Converts a string to lowercase.

    Parameters:
    toLowerCase The string which needs to be converted to lowercase. On return, this buffer also holds the converted lowercase string

    static void XMLString::lowerCaseASCII ( XMLCh *const   toLowerCase  )  [static]

    Converts a string to lowercase The routine only lowercases a to z (other characters not changed).

    Parameters:
    toLowerCase The string which needs to be converted to lowercase. On return, this buffer also holds the converted lowercase string

    static bool XMLString::isWSReplaced ( const XMLCh *const   toCheck  )  [static]

    Check if string is WhiteSpace:replace.

    Parameters:
    toCheck The string which needs to be checked.

    static bool XMLString::isWSCollapsed ( const XMLCh *const   toCheck  )  [static]

    Check if string is WhiteSpace:collapse.

    Parameters:
    toCheck The string which needs to be checked.

    static void XMLString::replaceWS ( XMLCh toConvert,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Replace whitespace.

    Parameters:
    toConvert The string which needs to be whitespace replaced. On return , this buffer also holds the converted string
    manager The MemoryManager to use to allocate objects

    static void XMLString::collapseWS ( XMLCh toConvert,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Collapse whitespace.

    Parameters:
    toConvert The string which needs to be whitespace collapsed. On return , this buffer also holds the converted string
    manager The MemoryManager to use to allocate objects

    static void XMLString::removeWS ( XMLCh toConvert,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Remove whitespace.

    Parameters:
    toConvert The string which needs to be whitespace removed. On return , this buffer also holds the converted string
    manager The MemoryManager to use to allocate objects

    static void XMLString::removeChar ( const XMLCh *const   srcString,
    const XMLCh toRemove,
    XMLBuffer &  dstBuffer 
    ) [static]

    Remove character.

    Parameters:
    srcString The string
    toRemove The character needs to be removed from the string
    dstBuffer The buffer containing the result

    static void XMLString::fixURI ( const XMLCh *const   str,
    XMLCh *const   target 
    ) [static]

    Fixes a platform dependent absolute path filename to standard URI form.

    1. Windows: fix 'x:' to 'file:///x:' and convert any backslash to forward slash 2. UNIX: fix '/blah/blahblah' to 'file:///blah/blahblah'

    Parameters:
    str The string that has the absolute path filename
    target The target string pre-allocated to store the fixed uri

    static void XMLString::release ( char **  buf,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Release the parameter string that was allocated by XMLString::transcode and XMLString::replicate.

    The implementation will call MemoryManager::deallocate and then turn the string to a null pointer.

    Parameters:
    buf The string to be deleted and become a null pointer.
    manager The MemoryManager used to allocate the string

    static void XMLString::release ( XMLCh **  buf,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Release the parameter string that was allocated by XMLString::transcode and XMLString::replicate.

    The implementation will call MemoryManager::deallocate and then turn the string to a null pointer.

    Parameters:
    buf The string to be deleted and become a null pointer.
    manager The MemoryManager used to allocate the string


    Friends And Related Function Documentation

    friend class XMLPlatformUtils [friend]


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLAttDef.html0000644000175000017500000016472111363620006021152 0ustar borisboris Xerces-C++: XMLAttDef Class Reference

    XMLAttDef Class Reference

    Represents the core information of an attribute definition. More...

    Inheritance diagram for XMLAttDef:

    XMemory

    List of all members.

    Public Types

    enum  AttTypes {
      CData = 0, ID = 1, IDRef = 2, IDRefs = 3,
      Entity = 4, Entities = 5, NmToken = 6, NmTokens = 7,
      Notation = 8, Enumeration = 9, Simple = 10, Any_Any = 11,
      Any_Other = 12, Any_List = 13, AttTypes_Count, AttTypes_Min = 0,
      AttTypes_Max = 13, AttTypes_Unknown = -1
    }
    enum  DefAttTypes {
      Default = 0, Fixed = 1, Required = 2, Required_And_Fixed = 3,
      Implied = 4, ProcessContents_Skip = 5, ProcessContents_Lax = 6, ProcessContents_Strict = 7,
      Prohibited = 8, DefAttTypes_Count, DefAttTypes_Min = 0, DefAttTypes_Max = 8,
      DefAttTypes_Unknown = -1
    }
    enum  CreateReasons { NoReason, JustFaultIn }

    Public Member Functions

    Destructor
    virtual ~XMLAttDef ()
     Destructor.
    Virtual interface
    virtual const XMLChgetFullName () const =0
     Get the full name of this attribute type.
    virtual void reset ()=0
     The derived class should implement any cleaning up required between each use of an instance of this class for validation.
    Getter methods
    DefAttTypes getDefaultType () const
     Get the default type of this attribute type.
    const XMLChgetEnumeration () const
     Get the enumeration value (if any) of this attribute type.
    XMLSize_t getId () const
     Get the pool id of this attribute type.
    AttTypes getType () const
     Get the type of this attribute.
    const XMLChgetValue () const
     Get the default/fixed value of this attribute (if any.
    CreateReasons getCreateReason () const
     Get the create reason for this attribute.
    bool isExternal () const
     Indicate whether this attribute has been declared externally.
    MemoryManagergetMemoryManager () const
     Get the plugged-in memory manager.
    Setter methods
    void setDefaultType (const XMLAttDef::DefAttTypes newValue)
     Set the default attribute type.
    void setId (const XMLSize_t newId)
     Set the pool id for this attribute type.
    void setType (const XMLAttDef::AttTypes newValue)
     Set the type of this attribute type.
    void setValue (const XMLCh *const newValue)
     Set the default/fixed value of this attribute type.
    void setEnumeration (const XMLCh *const newValue)
     Set the enumerated value of this attribute type.
    void setCreateReason (const CreateReasons newReason)
     Update the create reason for this attribute type.
    void setExternalAttDeclaration (const bool aValue)
     Set the attribute decl to indicate external declaration.

    Static Public Member Functions

    Public, static methods
    static const XMLChgetAttTypeString (const AttTypes attrType, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Get a string representation of the passed attribute type enum.
    static const XMLChgetDefAttTypeString (const DefAttTypes attrType, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Get a string representation of the passed def attribute type enum.

    Static Public Attributes

    static const unsigned int fgInvalidAttrId

    Protected Member Functions

     XMLAttDef (const AttTypes type=CData, const DefAttTypes defType=Implied, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     XMLAttDef (const XMLCh *const attValue, const AttTypes type, const DefAttTypes defType, const XMLCh *const enumValues=0, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)


    Detailed Description

    Represents the core information of an attribute definition.

    This class defines the basic characteristics of an attribute, no matter what type of validator is used. If a particular schema associates more information with an attribute it will create a derivative of this class. So this class provides an abstract way to get basic information on attributes from any type of validator.

    This class supports keyed collection semantics on the fully qualified attribute name, by providing a getKey() method to extract the key string. getKey(), in this case, just calls the virtual method getFullName() to get the fully qualified name, as defined by the derived class.

    Note that the 'value' of an attribute type definition is the default or of fixed value given to it in its definition. If the attribute is of the enumerated or notation type, it will have an 'enumeration value' as well which is a space separated list of its possible vlaues.


    Member Enumeration Documentation

    Enumerator:
    CData 
    ID 
    IDRef 
    IDRefs 
    Entity 
    Entities 
    NmToken 
    NmTokens 
    Notation 
    Enumeration 
    Simple 
    Any_Any 
    Any_Other 
    Any_List 
    AttTypes_Count 
    AttTypes_Min 
    AttTypes_Max 
    AttTypes_Unknown 

    Enumerator:
    Default 
    Fixed 
    Required 
    Required_And_Fixed 
    Implied 
    ProcessContents_Skip 
    ProcessContents_Lax 
    ProcessContents_Strict 
    Prohibited 
    DefAttTypes_Count 
    DefAttTypes_Min 
    DefAttTypes_Max 
    DefAttTypes_Unknown 

    Enumerator:
    NoReason 
    JustFaultIn 


    Constructor & Destructor Documentation

    virtual XMLAttDef::~XMLAttDef (  )  [virtual]

    Destructor.

    XMLAttDef::XMLAttDef ( const AttTypes  type = CData,
    const DefAttTypes  defType = Implied,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [protected]

    XMLAttDef::XMLAttDef ( const XMLCh *const   attValue,
    const AttTypes  type,
    const DefAttTypes  defType,
    const XMLCh *const   enumValues = 0,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [protected]


    Member Function Documentation

    static const XMLCh* XMLAttDef::getAttTypeString ( const AttTypes  attrType,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Get a string representation of the passed attribute type enum.

    This method allows you to get a textual representation of an attribute type, mostly for debug or display.

    Parameters:
    attrType The attribute type value to get the string for.
    manager The MemoryManager to use to allocate objects
    Returns:
    A const pointer to the static string that holds the text description of the passed type.

    static const XMLCh* XMLAttDef::getDefAttTypeString ( const DefAttTypes  attrType,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    Get a string representation of the passed def attribute type enum.

    This method allows you to get a textual representation of an default attributetype, mostly for debug or display.

    Parameters:
    attrType The default attribute type value to get the string for.
    manager The MemoryManager to use to allocate objects
    Returns:
    A const pointer to the static string that holds the text description of the passed default type.

    virtual const XMLCh* XMLAttDef::getFullName (  )  const [pure virtual]

    Get the full name of this attribute type.

    The derived class should return a const pointer to the full name of this attribute. This will vary depending on the type of validator in use.

    Returns:
    A const pointer to the full name of this attribute type.

    virtual void XMLAttDef::reset (  )  [pure virtual]

    The derived class should implement any cleaning up required between each use of an instance of this class for validation.

    XMLAttDef::DefAttTypes XMLAttDef::getDefaultType (  )  const

    Get the default type of this attribute type.

    This method returns the 'default type' of the attribute. Default type in this case refers to the XML concept of a default type for an attribute, i.e. #FIXED, #IMPLIED, etc...

    Returns:
    The default type enum for this attribute type.

    const XMLCh * XMLAttDef::getEnumeration (  )  const

    Get the enumeration value (if any) of this attribute type.

    If the attribute is of an enumeration or notation type, then this method will return a const reference to a string that contains the space separated values that can the attribute can have.

    Returns:
    A const pointer to a string that contains the space separated legal values for this attribute.

    XMLSize_t XMLAttDef::getId (  )  const

    Get the pool id of this attribute type.

    This method will return the id of this attribute in the validator's attribute pool. It was set by the validator when this attribute was created.

    Returns:
    The pool id of this attribute type.

    XMLAttDef::AttTypes XMLAttDef::getType (  )  const

    Get the type of this attribute.

    Gets the type of this attribute. This type is represented by an enum that converts the types of attributes allowed by XML, e.g. CDATA, NMTOKEN, NOTATION, etc...

    Returns:
    The attribute type enumeration value for this type of attribute.

    const XMLCh * XMLAttDef::getValue (  )  const

    Get the default/fixed value of this attribute (if any.

    )

    If the attribute defined a default/fixed value, then it is stored and this method will retrieve it. If it has non, then a null pointer is returned.

    Returns:
    A const pointer to the default/fixed value for this attribute type.

    XMLAttDef::CreateReasons XMLAttDef::getCreateReason (  )  const

    Get the create reason for this attribute.

    This method returns an enumeration which indicates why this attribute declaration exists.

    Returns:
    An enumerated value that indicates the reason why this attribute was added to the attribute table.

    bool XMLAttDef::isExternal (  )  const

    Indicate whether this attribute has been declared externally.

    This method returns a boolean that indicates whether this attribute has been declared externally.

    Returns:
    true if this attribute has been declared externally, else false.

    MemoryManager * XMLAttDef::getMemoryManager (  )  const

    Get the plugged-in memory manager.

    This method returns the plugged-in memory manager user for dynamic memory allocation/deallocation.

    Returns:
    the plugged-in memory manager

    void XMLAttDef::setDefaultType ( const XMLAttDef::DefAttTypes  newValue  ) 

    Set the default attribute type.

    This method sets the default attribute type for this attribute. This setting controls whether the attribute is required, fixed, implied, etc...

    Parameters:
    newValue The new default attribute to set

    void XMLAttDef::setId ( const XMLSize_t  newId  ) 

    Set the pool id for this attribute type.

    This method sets the pool id of this attribute type. This is usually called by the validator that creates the actual instance (which is of a derived type known only by the validator.)

    Parameters:
    newId The new pool id to set.

    void XMLAttDef::setType ( const XMLAttDef::AttTypes  newValue  ) 

    Set the type of this attribute type.

    This method will set the type of the attribute. The type of an attribute controls how it is normalized and what kinds of characters it can hold.

    Parameters:
    newValue The new attribute type to set

    void XMLAttDef::setValue ( const XMLCh *const   newValue  ) 

    Set the default/fixed value of this attribute type.

    This method set the fixed/default value for the attribute. This value will be used when instances of this attribute type are faulted in. It must be a valid value for the type set by setType(). If the type is enumeration or notation, this must be one of the valid values set in the setEnumeration() call.

    Parameters:
    newValue The new fixed/default value to set.

    References MemoryManager::deallocate(), and XMLString::replicate().

    void XMLAttDef::setEnumeration ( const XMLCh *const   newValue  ) 

    Set the enumerated value of this attribute type.

    This method sets the enumerated/notation value list for this attribute type. It is a space separated set of possible values. These values must meet the constrains of the XML spec for such values of this type of attribute. This should only be set if the setType() method is used to set the type to the enumeration or notation types.

    Parameters:
    newValue The new enumerated/notation value list to set.

    References MemoryManager::deallocate(), and XMLString::replicate().

    void XMLAttDef::setCreateReason ( const CreateReasons  newReason  ) 

    Update the create reason for this attribute type.

    This method will update the 'create reason' field for this attribute decl object.

    Parameters:
    newReason The new create reason.

    void XMLAttDef::setExternalAttDeclaration ( const bool  aValue  ) 

    Set the attribute decl to indicate external declaration.

    Parameters:
    aValue The new value to indicate external declaration.


    Member Data Documentation

    const unsigned int XMLAttDef::fgInvalidAttrId [static]


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMError_8hpp-source.html0000644000175000017500000002513711363620004022255 0ustar borisboris Xerces-C++: DOMError.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXercesDOMParser.html0000644000175000017500000021471511363620006022367 0ustar borisboris Xerces-C++: XercesDOMParser Class Reference

    XercesDOMParser Class Reference

    This class implements the Document Object Model (DOM) interface. More...

    Inheritance diagram for XercesDOMParser:

    AbstractDOMParser XMemory XMLDocumentHandler XMLErrorReporter XMLEntityHandler PSVIHandler

    List of all members.

    Public Member Functions

    Constructors and Destructor
     XercesDOMParser (XMLValidator *const valToAdopt=0, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager, XMLGrammarPool *const gramPool=0)
     Construct a XercesDOMParser, with an optional validator.
    virtual ~XercesDOMParser ()
     Destructor.
    Getter methods
    ErrorHandlergetErrorHandler ()
     Get a pointer to the error handler.
    const ErrorHandlergetErrorHandler () const
     Get a const pointer to the error handler.
    EntityResolvergetEntityResolver ()
     Get a pointer to the entity resolver.
    const EntityResolvergetEntityResolver () const
     Get a const pointer to the entity resolver.
    XMLEntityResolvergetXMLEntityResolver ()
     Get a pointer to the entity resolver.
    const XMLEntityResolvergetXMLEntityResolver () const
     Get a const pointer to the entity resolver.
    bool isCachingGrammarFromParse () const
     Get the 'Grammar caching' flag.
    bool isUsingCachedGrammarInParse () const
     Get the 'Use cached grammar' flag.
    Grammar * getGrammar (const XMLCh *const nameSpaceKey)
     Retrieve the grammar that is associated with the specified namespace key.
    Grammar * getRootGrammar ()
     Retrieve the grammar where the root element is declared.
    const XMLChgetURIText (unsigned int uriId) const
     Returns the string corresponding to a URI id from the URI string pool.
    XMLFilePos getSrcOffset () const
     Returns the current src offset within the input source.
    bool getIgnoreCachedDTD () const
     Get the 'ignore cached DTD grammar' flag.
    Setter methods
    void setErrorHandler (ErrorHandler *const handler)
     Set the error handler.
    void setEntityResolver (EntityResolver *const handler)
     Set the entity resolver.
    void setXMLEntityResolver (XMLEntityResolver *const handler)
     Set the entity resolver.
    void cacheGrammarFromParse (const bool newState)
     Set the 'Grammar caching' flag.
    void useCachedGrammarInParse (const bool newState)
     Set the 'Use cached grammar' flag.
    void setIgnoreCachedDTD (const bool newValue)
     Set the 'ignore cached DTD grammar' flag.
    Utility methods
    void resetDocumentPool ()
     Reset the documents vector pool and release all the associated memory back to the system.
    Implementation of the XMLErrorReporter interface.
    virtual void error (const unsigned int errCode, const XMLCh *const msgDomain, const XMLErrorReporter::ErrTypes errType, const XMLCh *const errorText, const XMLCh *const systemId, const XMLCh *const publicId, const XMLFileLoc lineNum, const XMLFileLoc colNum)
     Handle errors reported from the parser.
    virtual void resetErrors ()
     Reset any error data before a new parse.
    Implementation of the XMLEntityHandler interface.
    virtual void endInputSource (const InputSource &inputSource)
     Handle an end of input source event.
    virtual bool expandSystemId (const XMLCh *const systemId, XMLBuffer &toFill)
     Expand a system id.
    virtual void resetEntities ()
     Reset any entity handler information.
    virtual InputSourceresolveEntity (XMLResourceIdentifier *resourceIdentifier)
     Resolve a public/system id.
    virtual void startInputSource (const InputSource &inputSource)
     Handle a 'start input source' event.
    Implementation of Grammar preparsing interface's.
    Grammar * loadGrammar (const InputSource &source, const Grammar::GrammarType grammarType, const bool toCache=false)
     Preparse schema grammar (XML Schema, DTD, etc.
    Grammar * loadGrammar (const XMLCh *const systemId, const Grammar::GrammarType grammarType, const bool toCache=false)
     Preparse schema grammar (XML Schema, DTD, etc.
    Grammar * loadGrammar (const char *const systemId, const Grammar::GrammarType grammarType, const bool toCache=false)
     Preparse schema grammar (XML Schema, DTD, etc.
    void resetCachedGrammarPool ()
     This method allows the user to reset the pool of cached grammars.


    Detailed Description

    This class implements the Document Object Model (DOM) interface.

    It should be used by applications which choose to parse and process the XML document using the DOM api's. This implementation also allows the applications to install an error and an entity handler (useful extensions to the DOM specification).

    It can be used to instantiate a validating or non-validating parser, by setting a member flag.


    Constructor & Destructor Documentation

    XercesDOMParser::XercesDOMParser ( XMLValidator *const   valToAdopt = 0,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager,
    XMLGrammarPool *const   gramPool = 0 
    )

    Construct a XercesDOMParser, with an optional validator.

    Constructor with an instance of validator class to use for validation. If you don't provide a validator, a default one will be created for you in the scanner.

    Parameters:
    gramPool Pointer to the grammar pool instance from external application. The parser does NOT own it.
    valToAdopt Pointer to the validator instance to use. The parser is responsible for freeing the memory.
    manager Pointer to the memory manager to be used to allocate objects.

    virtual XercesDOMParser::~XercesDOMParser (  )  [virtual]

    Destructor.


    Member Function Documentation

    ErrorHandler * XercesDOMParser::getErrorHandler (  ) 

    Get a pointer to the error handler.

    This method returns the installed error handler. If no handler has been installed, then it will be a zero pointer.

    Returns:
    The pointer to the installed error handler object.

    const ErrorHandler * XercesDOMParser::getErrorHandler (  )  const

    Get a const pointer to the error handler.

    This method returns the installed error handler. If no handler has been installed, then it will be a zero pointer.

    Returns:
    A const pointer to the installed error handler object.

    EntityResolver * XercesDOMParser::getEntityResolver (  ) 

    Get a pointer to the entity resolver.

    This method returns the installed entity resolver. If no resolver has been installed, then it will be a zero pointer.

    Returns:
    The pointer to the installed entity resolver object.

    const EntityResolver * XercesDOMParser::getEntityResolver (  )  const

    Get a const pointer to the entity resolver.

    This method returns the installed entity resolver. If no resolver has been installed, then it will be a zero pointer.

    Returns:
    A const pointer to the installed entity resolver object.

    XMLEntityResolver * XercesDOMParser::getXMLEntityResolver (  ) 

    Get a pointer to the entity resolver.

    This method returns the installed entity resolver. If no resolver has been installed, then it will be a zero pointer.

    Returns:
    The pointer to the installed entity resolver object.

    const XMLEntityResolver * XercesDOMParser::getXMLEntityResolver (  )  const

    Get a const pointer to the entity resolver.

    This method returns the installed entity resolver. If no resolver has been installed, then it will be a zero pointer.

    Returns:
    A const pointer to the installed entity resolver object.

    bool XercesDOMParser::isCachingGrammarFromParse (  )  const

    Get the 'Grammar caching' flag.

    This method returns the state of the parser's grammar caching when parsing an XML document.

    Returns:
    true, if the parser is currently configured to cache grammars, false otherwise.
    See also:
    cacheGrammarFromParse

    bool XercesDOMParser::isUsingCachedGrammarInParse (  )  const

    Get the 'Use cached grammar' flag.

    This method returns the state of the parser's use of cached grammar when parsing an XML document.

    Returns:
    true, if the parser is currently configured to use cached grammars, false otherwise.
    See also:
    useCachedGrammarInParse

    Grammar* XercesDOMParser::getGrammar ( const XMLCh *const   nameSpaceKey  ) 

    Retrieve the grammar that is associated with the specified namespace key.

    Parameters:
    nameSpaceKey Namespace key
    Returns:
    Grammar associated with the Namespace key.

    Grammar* XercesDOMParser::getRootGrammar (  ) 

    Retrieve the grammar where the root element is declared.

    Returns:
    Grammar where root element declared

    const XMLCh* XercesDOMParser::getURIText ( unsigned int  uriId  )  const

    Returns the string corresponding to a URI id from the URI string pool.

    Parameters:
    uriId id of the string in the URI string pool.
    Returns:
    URI string corresponding to the URI id.

    XMLFilePos XercesDOMParser::getSrcOffset (  )  const

    Returns the current src offset within the input source.

    To be used only while parsing is in progress.

    Returns:
    offset within the input source

    bool XercesDOMParser::getIgnoreCachedDTD (  )  const

    Get the 'ignore cached DTD grammar' flag.

    Returns:
    true, if the parser is currently configured to ignore cached DTD, false otherwise.
    See also:
    setIgnoreCachedDTD

    void XercesDOMParser::setErrorHandler ( ErrorHandler *const   handler  ) 

    Set the error handler.

    This method allows applications to install their own error handler to trap error and warning messages.

    Any previously set handler is merely dropped, since the parser does not own them.

    Parameters:
    handler A const pointer to the user supplied error handler.
    See also:
    getErrorHandler

    void XercesDOMParser::setEntityResolver ( EntityResolver *const   handler  ) 

    Set the entity resolver.

    This method allows applications to install their own entity resolver. By installing an entity resolver, the applications can trap and potentially redirect references to external entities.

    Any previously set entity resolver is merely dropped, since the parser does not own them. If both setEntityResolver and setXMLEntityResolver are called, then the last one is used.

    Parameters:
    handler A const pointer to the user supplied entity resolver.
    See also:
    getEntityResolver

    void XercesDOMParser::setXMLEntityResolver ( XMLEntityResolver *const   handler  ) 

    Set the entity resolver.

    This method allows applications to install their own entity resolver. By installing an entity resolver, the applications can trap and potentially redirect references to external entities.

    Any previously set entity resolver is merely dropped, since the parser does not own them. If both setEntityResolver and setXMLEntityResolver are called, then the last one set is used.

    Parameters:
    handler A const pointer to the user supplied entity resolver.
    See also:
    getXMLEntityResolver

    void XercesDOMParser::cacheGrammarFromParse ( const bool  newState  ) 

    Set the 'Grammar caching' flag.

    This method allows users to enable or disable caching of grammar when parsing XML documents. When set to true, the parser will cache the resulting grammar for use in subsequent parses.

    If the flag is set to true, the 'Use cached grammar' flag will also be set to true.

    The parser's default state is: false.

    Parameters:
    newState The value specifying whether we should cache grammars or not.
    See also:
    isCachingGrammarFromParse

    useCachedGrammarInParse

    void XercesDOMParser::useCachedGrammarInParse ( const bool  newState  ) 

    Set the 'Use cached grammar' flag.

    This method allows users to enable or disable the use of cached grammars. When set to true, the parser will use the cached grammar, instead of building the grammar from scratch, to validate XML documents.

    If the 'Grammar caching' flag is set to true, this method ignore the value passed in.

    The parser's default state is: false.

    Parameters:
    newState The value specifying whether we should use the cached grammar or not.
    See also:
    isUsingCachedGrammarInParse

    cacheGrammarFromParse

    void XercesDOMParser::setIgnoreCachedDTD ( const bool  newValue  ) 

    Set the 'ignore cached DTD grammar' flag.

    This method gives users the option to ignore a cached DTD grammar, when an XML document contains both an internal and external DTD, and the use cached grammar from parse option is enabled. Currently, we do not allow using cached DTD grammar when an internal subset is present in the document. This option will only affect the behavior of the parser when an internal and external DTD both exist in a document (i.e. no effect if document has no internal subset).

    The parser's default state is false

    Parameters:
    newValue The state to set

    void XercesDOMParser::resetDocumentPool (  ) 

    Reset the documents vector pool and release all the associated memory back to the system.

    When parsing a document using a DOM parser, all memory allocated for a DOM tree is associated to the DOM document.

    If you do multiple parse using the same DOM parser instance, then multiple DOM documents will be generated and saved in a vector pool. All these documents (and thus all the allocated memory) won't be deleted until the parser instance is destroyed.

    If you don't need these DOM documents anymore and don't want to destroy the DOM parser instance at this moment, then you can call this method to reset the document vector pool and release all the allocated memory back to the system.

    It is an error to call this method if you are in the middle of a parse (e.g. in the mid of a progressive parse).

    Exceptions:
    IOException An exception from the parser if this function is called when a parse is in progress.

    virtual void XercesDOMParser::error ( const unsigned int  errCode,
    const XMLCh *const   msgDomain,
    const XMLErrorReporter::ErrTypes  errType,
    const XMLCh *const   errorText,
    const XMLCh *const   systemId,
    const XMLCh *const   publicId,
    const XMLFileLoc  lineNum,
    const XMLFileLoc  colNum 
    ) [virtual]

    Handle errors reported from the parser.

    This method is used to report back errors found while parsing the XML file. This method is also borrowed from the SAX specification. It calls the corresponding user installed Error Handler method: 'fatal', 'error', 'warning' depending on the severity of the error. This classification is defined by the XML specification.

    Parameters:
    errCode An integer code for the error.
    msgDomain A const pointer to an Unicode string representing the message domain to use.
    errType An enumeration classifying the severity of the error.
    errorText A const pointer to an Unicode string representing the text of the error message.
    systemId A const pointer to an Unicode string representing the system id of the XML file where this error was discovered.
    publicId A const pointer to an Unicode string representing the public id of the XML file where this error was discovered.
    lineNum The line number where the error occurred.
    colNum The column number where the error occurred.
    See also:
    ErrorHandler

    Implements XMLErrorReporter.

    virtual void XercesDOMParser::resetErrors (  )  [virtual]

    Reset any error data before a new parse.

    This method allows the user installed Error Handler callback to 'reset' itself.

    This method is a no-op for this DOM implementation.

    Implements XMLErrorReporter.

    void XercesDOMParser::endInputSource ( const InputSource inputSource  )  [virtual]

    Handle an end of input source event.

    This method is used to indicate the end of parsing of an external entity file.

    This method is a no-op for this DOM implementation.

    Parameters:
    inputSource A const reference to the InputSource object which points to the XML file being parsed.
    See also:
    InputSource

    Implements XMLEntityHandler.

    bool XercesDOMParser::expandSystemId ( const XMLCh *const  systemId,
    XMLBuffer &  toFill 
    ) [virtual]

    Expand a system id.

    This method allows an installed XMLEntityHandler to further process any system id's of external entities encountered in the XML file being parsed, such as redirection etc.

    This method always returns 'false' for this DOM implementation.

    Parameters:
    systemId A const pointer to an Unicode string representing the system id scanned by the parser.
    toFill A pointer to a buffer in which the application processed system id is stored.
    Returns:
    'true', if any processing is done, 'false' otherwise.

    Implements XMLEntityHandler.

    void XercesDOMParser::resetEntities (  )  [virtual]

    Reset any entity handler information.

    This method allows the installed XMLEntityHandler to reset itself.

    This method is a no-op for this DOM implementation.

    Implements XMLEntityHandler.

    virtual InputSource* XercesDOMParser::resolveEntity ( XMLResourceIdentifier resourceIdentifier  )  [virtual]

    Resolve a public/system id.

    This method allows a user installed entity handler to further process any pointers to external entities. The applications can implement 'redirection' via this callback.

    Parameters:
    resourceIdentifier An object containing the type of resource to be resolved and the associated data members corresponding to this type.
    Returns:
    The value returned by the user installed resolveEntity method or NULL otherwise to indicate no processing was done. The returned InputSource is owned by the parser which is responsible to clean up the memory.
    See also:
    XMLEntityHandler

    XMLEntityResolver

    Implements XMLEntityHandler.

    void XercesDOMParser::startInputSource ( const InputSource inputSource  )  [virtual]

    Handle a 'start input source' event.

    This method is used to indicate the start of parsing an external entity file.

    This method is a no-op for this DOM parse implementation.

    Parameters:
    inputSource A const reference to the InputSource object which points to the external entity being parsed.

    Implements XMLEntityHandler.

    Grammar* XercesDOMParser::loadGrammar ( const InputSource source,
    const Grammar::GrammarType  grammarType,
    const bool  toCache = false 
    )

    Preparse schema grammar (XML Schema, DTD, etc.

    ) via an input source object.

    This method invokes the preparsing process on a schema grammar XML file specified by the SAX InputSource parameter. If the 'toCache' flag is enabled, the parser will cache the grammars for re-use. If a grammar key is found in the pool, no caching of any grammar will take place.

    Parameters:
    source A const reference to the SAX InputSource object which points to the schema grammar file to be preparsed.
    grammarType The grammar type (Schema or DTD).
    toCache If true, we cache the preparsed grammar, otherwise, no caching. Default is false.
    Returns:
    The preparsed schema grammar object (SchemaGrammar or DTDGrammar). That grammar object is owned by the parser.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    XMLException An exception from the parser or client handler code.
    DOMException A DOM exception as per DOM spec.
    See also:
    InputSource::InputSource

    Grammar* XercesDOMParser::loadGrammar ( const XMLCh *const   systemId,
    const Grammar::GrammarType  grammarType,
    const bool  toCache = false 
    )

    Preparse schema grammar (XML Schema, DTD, etc.

    ) via a file path or URL

    This method invokes the preparsing process on a schema grammar XML file specified by the file path parameter. If the 'toCache' flag is enabled, the parser will cache the grammars for re-use. If a grammar key is found in the pool, no caching of any grammar will take place.

    Parameters:
    systemId A const XMLCh pointer to the Unicode string which contains the path to the XML grammar file to be preparsed.
    grammarType The grammar type (Schema or DTD).
    toCache If true, we cache the preparsed grammar, otherwise, no caching. Default is false.
    Returns:
    The preparsed schema grammar object (SchemaGrammar or DTDGrammar). That grammar object is owned by the parser.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    XMLException An exception from the parser or client handler code.
    DOMException A DOM exception as per DOM spec.

    Grammar* XercesDOMParser::loadGrammar ( const char *const   systemId,
    const Grammar::GrammarType  grammarType,
    const bool  toCache = false 
    )

    Preparse schema grammar (XML Schema, DTD, etc.

    ) via a file path or URL

    This method invokes the preparsing process on a schema grammar XML file specified by the file path parameter. If the 'toCache' flag is enabled, the parser will cache the grammars for re-use. If a grammar key is found in the pool, no caching of any grammar will take place.

    Parameters:
    systemId A const char pointer to a native string which contains the path to the XML grammar file to be preparsed.
    grammarType The grammar type (Schema or DTD).
    toCache If true, we cache the preparsed grammar, otherwise, no caching. Default is false.
    Returns:
    The preparsed schema grammar object (SchemaGrammar or DTDGrammar). That grammar object is owned by the parser.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    XMLException An exception from the parser or client handler code.
    DOMException A DOM exception as per DOM spec.

    void XercesDOMParser::resetCachedGrammarPool (  ) 

    This method allows the user to reset the pool of cached grammars.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMProcessingInstruction-members.html0000644000175000017500000004315411363620005025763 0ustar borisboris Xerces-C++: Member List

    DOMProcessingInstruction Member List

    This is the complete list of members for DOMProcessingInstruction, including all inherited members.

    appendChild(DOMNode *newChild)=0DOMNode [pure virtual]
    ATTRIBUTE_NODE enum valueDOMNode
    CDATA_SECTION_NODE enum valueDOMNode
    cloneNode(bool deep) const =0DOMNode [pure virtual]
    COMMENT_NODE enum valueDOMNode
    compareDocumentPosition(const DOMNode *other) const =0DOMNode [pure virtual]
    DOCUMENT_FRAGMENT_NODE enum valueDOMNode
    DOCUMENT_NODE enum valueDOMNode
    DOCUMENT_POSITION_CONTAINED_BY enum valueDOMNode
    DOCUMENT_POSITION_CONTAINS enum valueDOMNode
    DOCUMENT_POSITION_DISCONNECTED enum valueDOMNode
    DOCUMENT_POSITION_FOLLOWING enum valueDOMNode
    DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC enum valueDOMNode
    DOCUMENT_POSITION_PRECEDING enum valueDOMNode
    DOCUMENT_TYPE_NODE enum valueDOMNode
    DocumentPosition enum nameDOMNode
    DOMNode()DOMNode [protected]
    DOMNode(const DOMNode &)DOMNode [protected]
    DOMProcessingInstruction()DOMProcessingInstruction [protected]
    DOMProcessingInstruction(const DOMProcessingInstruction &other)DOMProcessingInstruction [protected]
    ELEMENT_NODE enum valueDOMNode
    ENTITY_NODE enum valueDOMNode
    ENTITY_REFERENCE_NODE enum valueDOMNode
    getAttributes() const =0DOMNode [pure virtual]
    getBaseURI() const =0DOMNode [pure virtual]
    getChildNodes() const =0DOMNode [pure virtual]
    getData() const =0DOMProcessingInstruction [pure virtual]
    getFeature(const XMLCh *feature, const XMLCh *version) const =0DOMNode [pure virtual]
    getFirstChild() const =0DOMNode [pure virtual]
    getLastChild() const =0DOMNode [pure virtual]
    getLocalName() const =0DOMNode [pure virtual]
    getNamespaceURI() const =0DOMNode [pure virtual]
    getNextSibling() const =0DOMNode [pure virtual]
    getNodeName() const =0DOMNode [pure virtual]
    getNodeType() const =0DOMNode [pure virtual]
    getNodeValue() const =0DOMNode [pure virtual]
    getOwnerDocument() const =0DOMNode [pure virtual]
    getParentNode() const =0DOMNode [pure virtual]
    getPrefix() const =0DOMNode [pure virtual]
    getPreviousSibling() const =0DOMNode [pure virtual]
    getTarget() const =0DOMProcessingInstruction [pure virtual]
    getTextContent() const =0DOMNode [pure virtual]
    getUserData(const XMLCh *key) const =0DOMNode [pure virtual]
    hasAttributes() const =0DOMNode [pure virtual]
    hasChildNodes() const =0DOMNode [pure virtual]
    insertBefore(DOMNode *newChild, DOMNode *refChild)=0DOMNode [pure virtual]
    isDefaultNamespace(const XMLCh *namespaceURI) const =0DOMNode [pure virtual]
    isEqualNode(const DOMNode *arg) const =0DOMNode [pure virtual]
    isSameNode(const DOMNode *other) const =0DOMNode [pure virtual]
    isSupported(const XMLCh *feature, const XMLCh *version) const =0DOMNode [pure virtual]
    lookupNamespaceURI(const XMLCh *prefix) const =0DOMNode [pure virtual]
    lookupPrefix(const XMLCh *namespaceURI) const =0DOMNode [pure virtual]
    NodeType enum nameDOMNode
    normalize()=0DOMNode [pure virtual]
    NOTATION_NODE enum valueDOMNode
    PROCESSING_INSTRUCTION_NODE enum valueDOMNode
    release()=0DOMNode [pure virtual]
    removeChild(DOMNode *oldChild)=0DOMNode [pure virtual]
    replaceChild(DOMNode *newChild, DOMNode *oldChild)=0DOMNode [pure virtual]
    setData(const XMLCh *data)=0DOMProcessingInstruction [pure virtual]
    setNodeValue(const XMLCh *nodeValue)=0DOMNode [pure virtual]
    setPrefix(const XMLCh *prefix)=0DOMNode [pure virtual]
    setTextContent(const XMLCh *textContent)=0DOMNode [pure virtual]
    setUserData(const XMLCh *key, void *data, DOMUserDataHandler *handler)=0DOMNode [pure virtual]
    TEXT_NODE enum valueDOMNode
    ~DOMNode()DOMNode [virtual]
    ~DOMProcessingInstruction()DOMProcessingInstruction [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classWrapper4InputSource-members.html0000644000175000017500000001504011363620006024744 0ustar borisboris Xerces-C++: Member List

    Wrapper4InputSource Member List

    This is the complete list of members for Wrapper4InputSource, including all inherited members.

    DOMLSInput()DOMLSInput [protected]
    getBaseURI() const Wrapper4InputSource [virtual]
    getByteStream() const Wrapper4InputSource [virtual]
    getEncoding() const Wrapper4InputSource [virtual]
    getIssueFatalErrorIfNotFound() const Wrapper4InputSource [virtual]
    getPublicId() const Wrapper4InputSource [virtual]
    getStringData() const Wrapper4InputSource [virtual]
    getSystemId() const Wrapper4InputSource [virtual]
    release()Wrapper4InputSource [virtual]
    setBaseURI(const XMLCh *const baseURI)Wrapper4InputSource [virtual]
    setByteStream(InputSource *stream)Wrapper4InputSource [virtual]
    setEncoding(const XMLCh *const encodingStr)Wrapper4InputSource [virtual]
    setIssueFatalErrorIfNotFound(bool flag)Wrapper4InputSource [virtual]
    setPublicId(const XMLCh *const publicId)Wrapper4InputSource [virtual]
    setStringData(const XMLCh *data)Wrapper4InputSource [virtual]
    setSystemId(const XMLCh *const systemId)Wrapper4InputSource [virtual]
    Wrapper4InputSource(InputSource *const inputSource, const bool adoptFlag=true, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)Wrapper4InputSource
    ~DOMLSInput()DOMLSInput [virtual]
    ~Wrapper4InputSource()Wrapper4InputSource [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_0x69.html0000644000175000017500000007253711363620005021174 0ustar borisboris Xerces-C++: Class Members
    Here is a list of all class members with links to the classes they belong to:

    - i -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLBigDecimal.html0000644000175000017500000006546611363620006021771 0ustar borisboris Xerces-C++: XMLBigDecimal Class Reference

    XMLBigDecimal Class Reference

    Inheritance diagram for XMLBigDecimal:

    XMLNumber XMemory

    List of all members.

    Public Member Functions

     XMLBigDecimal (const XMLCh *const strValue, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     Constructs a newly allocated XMLBigDecimal object that represents the value represented by the string.
     ~XMLBigDecimal ()
    virtual XMLChgetRawData () const
     Return string representation of the decimal value.
    virtual const XMLChgetFormattedString () const
     Return the original and converted value of the original data.
    virtual int getSign () const
     Returns the sign of this number.
    const XMLChgetValue () const
    unsigned int getScale () const
    unsigned int getTotalDigit () const
    XMLChgetIntVal () const
    int toCompare (const XMLBigDecimal &other) const
     Compares this object to the specified object.
    void setDecimalValue (const XMLCh *const strValue)
    MemoryManagergetMemoryManager () const
     XMLBigDecimal (MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)

    Static Public Member Functions

    static int compareValues (const XMLBigDecimal *const lValue, const XMLBigDecimal *const rValue, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
    static XMLChgetCanonicalRepresentation (const XMLCh *const rawData, MemoryManager *const memMgr=XMLPlatformUtils::fgMemoryManager)
    static void parseDecimal (const XMLCh *const toParse, XMLCh *const retBuffer, int &sign, int &totalDigits, int &fractDigits, MemoryManager *const manager)
    static void parseDecimal (const XMLCh *const toParse, MemoryManager *const manager)


    Constructor & Destructor Documentation

    XMLBigDecimal::XMLBigDecimal ( const XMLCh *const   strValue,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    Constructs a newly allocated XMLBigDecimal object that represents the value represented by the string.

    Parameters:
    strValue the String to be converted to an XMLBigDecimal.
    manager Pointer to the memory manager to be used to allocate objects.
    Exceptions:
    NumberFormatException if the String does not contain a parsable XMLBigDecimal.

    XMLBigDecimal::~XMLBigDecimal (  ) 

    XMLBigDecimal::XMLBigDecimal ( MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager  ) 


    Member Function Documentation

    static int XMLBigDecimal::compareValues ( const XMLBigDecimal *const   lValue,
    const XMLBigDecimal *const   rValue,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    static XMLCh* XMLBigDecimal::getCanonicalRepresentation ( const XMLCh *const   rawData,
    MemoryManager *const   memMgr = XMLPlatformUtils::fgMemoryManager 
    ) [static]

    static void XMLBigDecimal::parseDecimal ( const XMLCh *const   toParse,
    XMLCh *const   retBuffer,
    int &  sign,
    int &  totalDigits,
    int &  fractDigits,
    MemoryManager *const   manager 
    ) [static]

    static void XMLBigDecimal::parseDecimal ( const XMLCh *const   toParse,
    MemoryManager *const   manager 
    ) [static]

    XMLCh * XMLBigDecimal::getRawData (  )  const [virtual]

    Return string representation of the decimal value.

    A decimal point will be included as necessary. Similar to toString above, but the internal buffer is returned directly, user is not required to delete the returned buffer

    Implements XMLNumber.

    const XMLCh * XMLBigDecimal::getFormattedString (  )  const [virtual]

    Return the original and converted value of the original data.

    (applicable to double/float)

    The internal buffer is returned directly, user is not required to delete the returned buffer

    Implements XMLNumber.

    int XMLBigDecimal::getSign (  )  const [virtual]

    Returns the sign of this number.

    -1 negative 0 zero 1 positive

    Implements XMLNumber.

    const XMLCh * XMLBigDecimal::getValue (  )  const

    unsigned int XMLBigDecimal::getScale (  )  const

    unsigned int XMLBigDecimal::getTotalDigit (  )  const

    XMLCh * XMLBigDecimal::getIntVal (  )  const

    int XMLBigDecimal::toCompare ( const XMLBigDecimal other  )  const

    Compares this object to the specified object.

    Parameters:
    other the object to compare with.
    Returns:
    -1 value is less than other's 0 value equals to other's +1 value is greater than other's

    void XMLBigDecimal::setDecimalValue ( const XMLCh *const   strValue  ) 

    MemoryManager * XMLBigDecimal::getMemoryManager (  )  const


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classHexBin-members.html0000644000175000017500000000513011363620006022213 0ustar borisboris Xerces-C++: Member List

    HexBin Member List

    This is the complete list of members for HexBin, including all inherited members.

    decodeToXMLByte(const XMLCh *const hexData, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)HexBin [static]
    getCanonicalRepresentation(const XMLCh *const hexData, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)HexBin [static]
    getDataLength(const XMLCh *const hexData)HexBin [static]
    isArrayByteHex(const XMLCh *const hexData)HexBin [static]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLSynchronizedStringPool-members.html0000644000175000017500000001032611363620006026122 0ustar borisboris Xerces-C++: Member List

    XMLSynchronizedStringPool Member List

    This is the complete list of members for XMLSynchronizedStringPool, including all inherited members.

    addOrFind(const XMLCh *const newString)XMLSynchronizedStringPool [virtual]
    exists(const XMLCh *const newString) const XMLSynchronizedStringPool [virtual]
    exists(const unsigned int id) const XMLSynchronizedStringPool [virtual]
    flushAll()XMLSynchronizedStringPool [virtual]
    getId(const XMLCh *const toFind) const XMLSynchronizedStringPool [virtual]
    getStringCount() const XMLSynchronizedStringPool [virtual]
    getValueForId(const unsigned int id) const XMLSynchronizedStringPool [virtual]
    XMLSynchronizedStringPool(const XMLStringPool *constPool, const unsigned int modulus=109, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XMLSynchronizedStringPool
    ~XMLSynchronizedStringPool()XMLSynchronizedStringPool [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMXPathException.html0000644000175000017500000003030611363620006022654 0ustar borisboris Xerces-C++: DOMXPathException Class Reference

    DOMXPathException Class Reference

    Inheritance diagram for DOMXPathException:

    DOMException

    List of all members.

    Public Types

    enum  ExceptionCode { INVALID_EXPRESSION_ERR = 51, TYPE_ERR = 52, NO_RESULT_ERROR = 53 }
     ExceptionCode
    INVALID_EXPRESSION_ERR The expression has a syntax error or otherwise is not a legal expression according to the rules of the specific DOMXPathEvaluator or contains specialized extension functions or variables not supported by this implementation. More...

    Public Member Functions

    Constructors
     DOMXPathException ()
     Default constructor for DOMXPathException.
     DOMXPathException (short code, short messageCode=0, MemoryManager *const memoryManager=XMLPlatformUtils::fgMemoryManager)
     Constructor which takes an error code and a message.
     DOMXPathException (const DOMXPathException &other)
     Copy constructor.
    Destructor.
    virtual ~DOMXPathException ()
     Destructor for DOMXPathException.


    Detailed Description

    Since:
    DOM Level 3

    Member Enumeration Documentation

    ExceptionCode
    INVALID_EXPRESSION_ERR The expression has a syntax error or otherwise is not a legal expression according to the rules of the specific DOMXPathEvaluator or contains specialized extension functions or variables not supported by this implementation.


    TYPE_ERR The expression cannot be converted to return the specified type.
    NO_RESULT_ERROR There is no current result in the result object.

    Enumerator:
    INVALID_EXPRESSION_ERR 
    TYPE_ERR 
    NO_RESULT_ERROR 

    Reimplemented from DOMException.


    Constructor & Destructor Documentation

    DOMXPathException::DOMXPathException (  ) 

    Default constructor for DOMXPathException.

    DOMXPathException::DOMXPathException ( short  code,
    short  messageCode = 0,
    MemoryManager *const   memoryManager = XMLPlatformUtils::fgMemoryManager 
    )

    Constructor which takes an error code and a message.

    Parameters:
    code The error code which indicates the exception
    messageCode The string containing the error message
    memoryManager The memory manager used to (de)allocate memory

    DOMXPathException::DOMXPathException ( const DOMXPathException other  ) 

    Copy constructor.

    Parameters:
    other The object to be copied.

    virtual DOMXPathException::~DOMXPathException (  )  [virtual]

    Destructor for DOMXPathException.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMPSVITypeInfo-members.html0000644000175000017500000001437611363620005023650 0ustar borisboris Xerces-C++: Member List
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMXPathNamespace.png0000644000175000017500000000067311363620006022436 0ustar borisboris‰PNG  IHDRŽP=çPdPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfQIDATX…í•]nà Çí—>ÛÜzƒîB{Êý0…’.ÝR„ªhÃDCøåøcp+#ì:9=æTJ–.K‹ÉÒkh—e#Këæ”¤R’sR’U—ÌõpDR6NÖóesýœœÒÍ-¶¿r˜Çpö^?P¯âûs_~šû“×ûÓS¯—mrþ+gÔç€]޼ôFÎòy*ÎeYNÅ9]½&gr&gr&grNÇá14D2NÎï”tkáÀ „:ÍL÷u{p` ÀÞ×é0'ü–ƒ LÄ€èê[âA‡1r÷È!ÒC éå†G☔aŒÌ=áèØóCu_«¾Hå>Ç¥£g¹~#ð0øIc_Üåxƒªz\Ȫ 6uzµ­åh–Ús=ÉOsÖãû¹¤,5ŒÆië…ÛzuØã}ú+œïÜÉù™3è¿ó*jMU²X¨IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/structXMLTransService_1_1TransRec-members.html0000644000175000017500000000405411363620006026354 0ustar borisboris Xerces-C++: Member List

    XMLTransService::TransRec Member List

    This is the complete list of members for XMLTransService::TransRec, including all inherited members.

    extChXMLTransService::TransRec
    intChXMLTransService::TransRec


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_func_0x76.html0000644000175000017500000001077311363620005022177 0ustar borisboris Xerces-C++: Class Members - Functions
     

    - v -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XSAnnotation_8hpp-source.html0000644000175000017500000004031111363620005023201 0ustar borisboris Xerces-C++: XSAnnotation.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLIBM1047Transcoder.html0000644000175000017500000001453511363620006022750 0ustar borisboris Xerces-C++: XMLIBM1047Transcoder Class Reference

    XMLIBM1047Transcoder Class Reference

    List of all members.

    Public Member Functions

     XMLIBM1047Transcoder (const XMLCh *const encodingName, const XMLSize_t blockSize, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
    virtual ~XMLIBM1047Transcoder ()

    Static Public Member Functions

    static XMLCh xlatThisOne (const XMLByte toXlat)


    Constructor & Destructor Documentation

    XMLIBM1047Transcoder::XMLIBM1047Transcoder ( const XMLCh *const   encodingName,
    const XMLSize_t  blockSize,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    virtual XMLIBM1047Transcoder::~XMLIBM1047Transcoder (  )  [virtual]


    Member Function Documentation

    static XMLCh XMLIBM1047Transcoder::xlatThisOne ( const XMLByte  toXlat  )  [static]


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMLocator_8hpp-source.html0000644000175000017500000002322711363620004022565 0ustar borisboris Xerces-C++: DOMLocator.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMLSResourceResolver_8hpp-source.html0000644000175000017500000002325511363620004024733 0ustar borisboris Xerces-C++: DOMLSResourceResolver.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLURL.html0000644000175000017500000013063011363620006020435 0ustar borisboris Xerces-C++: XMLURL Class Reference

    XMLURL Class Reference

    Inheritance diagram for XMLURL:

    XMemory

    List of all members.

    Public Types

    enum  Protocols {
      File, HTTP, FTP, HTTPS,
      Protocols_Count, Unknown
    }

    Public Member Functions

     XMLURL (MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     XMLURL (const XMLCh *const baseURL, const XMLCh *const relativeURL, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     XMLURL (const XMLCh *const baseURL, const char *const relativeURL, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     XMLURL (const XMLURL &baseURL, const XMLCh *const relativeURL)
     XMLURL (const XMLURL &baseURL, const char *const relativeURL)
     XMLURL (const XMLCh *const urlText, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     XMLURL (const char *const urlText, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     XMLURL (const XMLURL &toCopy)
    virtual ~XMLURL ()
    XMLURLoperator= (const XMLURL &toAssign)
    bool operator== (const XMLURL &toCompare) const
    bool operator!= (const XMLURL &toCompare) const
    const XMLChgetFragment () const
    const XMLChgetHost () const
    const XMLChgetPassword () const
    const XMLChgetPath () const
    unsigned int getPortNum () const
    Protocols getProtocol () const
    const XMLChgetProtocolName () const
    const XMLChgetQuery () const
    const XMLChgetURLText () const
    const XMLChgetUser () const
    MemoryManagergetMemoryManager () const
    void setURL (const XMLCh *const urlText)
    void setURL (const XMLCh *const baseURL, const XMLCh *const relativeURL)
    void setURL (const XMLURL &baseURL, const XMLCh *const relativeURL)
    bool setURL (const XMLCh *const baseURL, const XMLCh *const relativeURL, XMLURL &xmlURL)
    bool isRelative () const
    bool hasInvalidChar () const
    BinInputStreammakeNewStream () const
    void makeRelativeTo (const XMLCh *const baseURLText)
    void makeRelativeTo (const XMLURL &baseURL)

    Static Public Member Functions

    static Protocols lookupByName (const XMLCh *const protoName)
    static bool parse (const XMLCh *const urlText, XMLURL &xmlURL)


    Member Enumeration Documentation

    Enumerator:
    File 
    HTTP 
    FTP 
    HTTPS 
    Protocols_Count 
    Unknown 


    Constructor & Destructor Documentation

    XMLURL::XMLURL ( MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager  ) 

    XMLURL::XMLURL ( const XMLCh *const   baseURL,
    const XMLCh *const   relativeURL,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    XMLURL::XMLURL ( const XMLCh *const   baseURL,
    const char *const   relativeURL,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    XMLURL::XMLURL ( const XMLURL baseURL,
    const XMLCh *const   relativeURL 
    )

    XMLURL::XMLURL ( const XMLURL baseURL,
    const char *const   relativeURL 
    )

    XMLURL::XMLURL ( const XMLCh *const   urlText,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    XMLURL::XMLURL ( const char *const   urlText,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    XMLURL::XMLURL ( const XMLURL toCopy  ) 

    virtual XMLURL::~XMLURL (  )  [virtual]


    Member Function Documentation

    static Protocols XMLURL::lookupByName ( const XMLCh *const   protoName  )  [static]

    static bool XMLURL::parse ( const XMLCh *const   urlText,
    XMLURL xmlURL 
    ) [static]

    XMLURL& XMLURL::operator= ( const XMLURL toAssign  ) 

    bool XMLURL::operator== ( const XMLURL toCompare  )  const

    Referenced by operator!=().

    bool XMLURL::operator!= ( const XMLURL toCompare  )  const

    References operator==().

    const XMLCh * XMLURL::getFragment (  )  const

    const XMLCh * XMLURL::getHost (  )  const

    const XMLCh * XMLURL::getPassword (  )  const

    const XMLCh * XMLURL::getPath (  )  const

    unsigned int XMLURL::getPortNum (  )  const

    XMLURL::Protocols XMLURL::getProtocol (  )  const

    const XMLCh* XMLURL::getProtocolName (  )  const

    const XMLCh * XMLURL::getQuery (  )  const

    const XMLCh * XMLURL::getURLText (  )  const

    const XMLCh * XMLURL::getUser (  )  const

    MemoryManager * XMLURL::getMemoryManager (  )  const

    void XMLURL::setURL ( const XMLCh *const   urlText  ) 

    void XMLURL::setURL ( const XMLCh *const   baseURL,
    const XMLCh *const   relativeURL 
    )

    void XMLURL::setURL ( const XMLURL baseURL,
    const XMLCh *const   relativeURL 
    )

    bool XMLURL::setURL ( const XMLCh *const   baseURL,
    const XMLCh *const   relativeURL,
    XMLURL xmlURL 
    )

    bool XMLURL::isRelative (  )  const

    bool XMLURL::hasInvalidChar (  )  const

    BinInputStream* XMLURL::makeNewStream (  )  const

    void XMLURL::makeRelativeTo ( const XMLCh *const   baseURLText  ) 

    void XMLURL::makeRelativeTo ( const XMLURL baseURL  ) 


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMException-members.html0000644000175000017500000001745711363620005023352 0ustar borisboris Xerces-C++: Member List

    DOMException Member List

    This is the complete list of members for DOMException, including all inherited members.

    codeDOMException
    DOMException()DOMException
    DOMException(short code, short messageCode=0, MemoryManager *const memoryManager=XMLPlatformUtils::fgMemoryManager)DOMException
    DOMException(const DOMException &other)DOMException
    DOMSTRING_SIZE_ERR enum valueDOMException
    ExceptionCode enum nameDOMException
    fMemoryManagerDOMException [protected]
    getMessage() const DOMException
    HIERARCHY_REQUEST_ERR enum valueDOMException
    INDEX_SIZE_ERR enum valueDOMException
    INUSE_ATTRIBUTE_ERR enum valueDOMException
    INVALID_ACCESS_ERR enum valueDOMException
    INVALID_CHARACTER_ERR enum valueDOMException
    INVALID_MODIFICATION_ERR enum valueDOMException
    INVALID_STATE_ERR enum valueDOMException
    msgDOMException
    NAMESPACE_ERR enum valueDOMException
    NO_DATA_ALLOWED_ERR enum valueDOMException
    NO_MODIFICATION_ALLOWED_ERR enum valueDOMException
    NOT_FOUND_ERR enum valueDOMException
    NOT_SUPPORTED_ERR enum valueDOMException
    SYNTAX_ERR enum valueDOMException
    TYPE_MISMATCH_ERR enum valueDOMException
    VALIDATION_ERR enum valueDOMException
    WRONG_DOCUMENT_ERR enum valueDOMException
    ~DOMException()DOMException [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XMemory_8hpp.html0000644000175000017500000000464111363620005020724 0ustar borisboris Xerces-C++: XMemory.hpp File Reference

    XMemory.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMemory
     This class makes it possible to override the C++ memory management by adding new/delete operators to this base class. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_XMEMORY_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_XMEMORY_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSNamespaceItem.html0000644000175000017500000010410711363620006022400 0ustar borisboris Xerces-C++: XSNamespaceItem Class Reference

    XSNamespaceItem Class Reference

    Inheritance diagram for XSNamespaceItem:

    XMemory

    List of all members.

    Public Member Functions

    Constructors
     XSNamespaceItem (XSModel *const xsModel, SchemaGrammar *const grammar, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     The default constructor.
     XSNamespaceItem (XSModel *const xsModel, const XMLCh *const schemaNamespace, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
    Destructor
     ~XSNamespaceItem ()
    XSNamespaceItem methods
    const XMLChgetSchemaNamespace () const
     [schema namespace]: A namespace name or null corresponding to the target namespace of the schema document.
    XSNamedMap< XSObject > * getComponents (XSConstants::COMPONENT_TYPE objectType)
     [schema components]: a list of top-level components, i.e.
    XSAnnotationListgetAnnotations ()
     [annotations]: a set of annotations.
    const XSAnnotationListgetAnnotations () const
    XSElementDeclarationgetElementDeclaration (const XMLCh *name)
     Convenience method.
    XSAttributeDeclarationgetAttributeDeclaration (const XMLCh *name)
     Convenience method.
    XSTypeDefinitiongetTypeDefinition (const XMLCh *name)
     Convenience method.
    XSAttributeGroupDefinitiongetAttributeGroup (const XMLCh *name)
     Convenience method.
    XSModelGroupDefinitiongetModelGroupDefinition (const XMLCh *name)
     Convenience method.
    XSNotationDeclarationgetNotationDeclaration (const XMLCh *name)
     Convenience method.
    const StringListgetDocumentLocations ()
     [document location] - a list of locations URI for the documents that contributed to the XSModel.

    Protected Attributes

    MemoryManager *const fMemoryManager
    SchemaGrammar * fGrammar
    XSModelfXSModel
    XSNamedMap< XSObject > * fComponentMap [XSConstants::MULTIVALUE_FACET]
    XSAnnotationListfXSAnnotationList
    RefHashTableOf< XSObject > * fHashMap [XSConstants::MULTIVALUE_FACET]
    const XMLChfSchemaNamespace

    Friends

    class XSModel
    class XSObjectFactory


    Constructor & Destructor Documentation

    XSNamespaceItem::XSNamespaceItem ( XSModel *const   xsModel,
    SchemaGrammar *const   grammar,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    The default constructor.

    Parameters:
    xsModel 
    grammar 
    manager The configurable memory manager

    XSNamespaceItem::XSNamespaceItem ( XSModel *const   xsModel,
    const XMLCh *const   schemaNamespace,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    XSNamespaceItem::~XSNamespaceItem (  ) 


    Member Function Documentation

    const XMLCh * XSNamespaceItem::getSchemaNamespace (  )  const

    [schema namespace]: A namespace name or null corresponding to the target namespace of the schema document.

    References fSchemaNamespace.

    XSNamedMap<XSObject>* XSNamespaceItem::getComponents ( XSConstants::COMPONENT_TYPE  objectType  ) 

    [schema components]: a list of top-level components, i.e.

    element declarations, attribute declarations, etc.

    Parameters:
    objectType The type of the declaration, i.e. ELEMENT_DECLARATION, TYPE_DEFINITION and any other component type that may be a property of a schema component.
    Returns:
    A list of top-level definition of the specified type in objectType or null.

    XSAnnotationList * XSNamespaceItem::getAnnotations (  ) 

    [annotations]: a set of annotations.

    References fXSAnnotationList.

    const XSAnnotationList * XSNamespaceItem::getAnnotations (  )  const

    References fXSAnnotationList.

    XSElementDeclaration* XSNamespaceItem::getElementDeclaration ( const XMLCh name  ) 

    Convenience method.

    Returns a top-level element declaration.

    Parameters:
    name The name of the declaration.
    Returns:
    A top-level element declaration or null if such declaration does not exist.

    XSAttributeDeclaration* XSNamespaceItem::getAttributeDeclaration ( const XMLCh name  ) 

    Convenience method.

    Returns a top-level attribute declaration.

    Parameters:
    name The name of the declaration.
    Returns:
    A top-level attribute declaration or null if such declaration does not exist.

    XSTypeDefinition* XSNamespaceItem::getTypeDefinition ( const XMLCh name  ) 

    Convenience method.

    Returns a top-level simple or complex type definition.

    Parameters:
    name The name of the definition.
    Returns:
    An XSTypeDefinition or null if such definition does not exist.

    XSAttributeGroupDefinition* XSNamespaceItem::getAttributeGroup ( const XMLCh name  ) 

    Convenience method.

    Returns a top-level attribute group definition.

    Parameters:
    name The name of the definition.
    Returns:
    A top-level attribute group definition or null if such definition does not exist.

    XSModelGroupDefinition* XSNamespaceItem::getModelGroupDefinition ( const XMLCh name  ) 

    Convenience method.

    Returns a top-level model group definition.

    Parameters:
    name The name of the definition.
    Returns:
    A top-level model group definition definition or null if such definition does not exist.

    XSNotationDeclaration* XSNamespaceItem::getNotationDeclaration ( const XMLCh name  ) 

    Convenience method.

    Returns a top-level notation declaration.

    Parameters:
    name The name of the declaration.
    Returns:
    A top-level notation declaration or null if such declaration does not exist.

    const StringList* XSNamespaceItem::getDocumentLocations (  ) 

    [document location] - a list of locations URI for the documents that contributed to the XSModel.


    Friends And Related Function Documentation

    friend class XSModel [friend]

    friend class XSObjectFactory [friend]


    Member Data Documentation

    SchemaGrammar* XSNamespaceItem::fGrammar [protected]

    XSNamedMap<XSObject>* XSNamespaceItem::fComponentMap[XSConstants::MULTIVALUE_FACET] [protected]

    RefHashTableOf<XSObject>* XSNamespaceItem::fHashMap[XSConstants::MULTIVALUE_FACET] [protected]


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/SynchronizedStringPool_8hpp.html0000644000175000017500000000451311363620005024022 0ustar borisboris Xerces-C++: SynchronizedStringPool.hpp File Reference

    SynchronizedStringPool.hpp File Reference

    Go to the source code of this file.

    Classes

    class  XMLSynchronizedStringPool

    Defines

    #define XERCESC_INCLUDE_GUARD_SYNCHRONIZEDSTRINGPOOL_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_SYNCHRONIZEDSTRINGPOOL_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/InvalidCastException_8hpp-source.html0000644000175000017500000001101211363620004024667 0ustar borisboris Xerces-C++: InvalidCastException.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/Hash2KeysSetOf_8hpp-source.html0000644000175000017500000006766711363620004023404 0ustar borisboris Xerces-C++: Hash2KeysSetOf.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSAnnotation-members.html0000644000175000017500000002347011363620006023432 0ustar borisboris Xerces-C++: Member List

    XSAnnotation Member List

    This is the complete list of members for XSAnnotation, including all inherited members.

    ANNOTATION_TARGET enum nameXSAnnotation
    fComponentTypeXSObject [protected]
    fContentsXSAnnotation [protected]
    fIdXSObject [protected]
    fMemoryManagerXSObject [protected]
    fNextXSAnnotation [protected]
    fXSModelXSObject [protected]
    getAnnotationString() const XSAnnotation
    getAnnotationString()XSAnnotation
    getId() const XSObject [virtual]
    getLineCol(XMLFileLoc &line, XMLFileLoc &col) const XSAnnotation
    getName() const XSObject [virtual]
    getNamespace()XSObject [virtual]
    getNamespaceItem()XSObject [virtual]
    getNext()XSAnnotation
    getSystemId() const XSAnnotation
    getType() const XSObject
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    setId(XMLSize_t id)XSObject
    setLineCol(XMLFileLoc line, XMLFileLoc col)XSAnnotation
    setNext(XSAnnotation *const nextAnnotation)XSAnnotation
    setSystemId(const XMLCh *const systemId)XSAnnotation
    W3C_DOM_DOCUMENT enum valueXSAnnotation
    W3C_DOM_ELEMENT enum valueXSAnnotation
    writeAnnotation(DOMNode *node, ANNOTATION_TARGET targetType)XSAnnotation
    writeAnnotation(ContentHandler *handler)XSAnnotation
    XMemory()XMemory [protected]
    XSAnnotation(const XMLCh *const contents, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSAnnotation
    XSAnnotation(MemoryManager *const manager)XSAnnotation
    XSObject(XSConstants::COMPONENT_TYPE compType, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSObject
    ~XSAnnotation()XSAnnotation
    ~XSObject()XSObject [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classMemBufFormatTarget.png0000644000175000017500000000114611363620006022724 0ustar borisboris‰PNG  IHDR…ˆ;j5ÑPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfüIDAThí—Krà †­M׈È'è´Ê*÷?B…$^NâØ“q3üˆ€/’€ñüÓïîò=ýÌ{‹3žaDnÄOÚÁ T„‡0ˆ±_üœcŒÉÃ'<„ÓÂ Í át±laèþŠê‡¬Ë/3àÆTÏÁ©ÎíÇ0ø6ü•uæìÓö»hIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classXSTypeDefinition-members.html0000644000175000017500000002302711363620006024250 0ustar borisboris Xerces-C++: Member List

    XSTypeDefinition Member List

    This is the complete list of members for XSTypeDefinition, including all inherited members.

    COMPLEX_TYPE enum valueXSTypeDefinition
    derivedFrom(const XMLCh *typeNamespace, const XMLCh *name)XSTypeDefinition
    derivedFromType(const XSTypeDefinition *const ancestorType)=0XSTypeDefinition [pure virtual]
    fBaseTypeXSTypeDefinition [protected]
    fComponentTypeXSObject [protected]
    fFinalXSTypeDefinition [protected]
    fIdXSObject [protected]
    fMemoryManagerXSObject [protected]
    fTypeCategoryXSTypeDefinition [protected]
    fXSModelXSObject [protected]
    getAnonymous() const =0XSTypeDefinition [pure virtual]
    getBaseType()=0XSTypeDefinition [pure virtual]
    getFinal() const XSTypeDefinition
    getId() const XSObject [virtual]
    getName() const =0XSTypeDefinition [pure virtual]
    getNamespace()=0XSTypeDefinition [pure virtual]
    getNamespaceItem()=0XSTypeDefinition [pure virtual]
    getType() const XSObject
    getTypeCategory() const XSTypeDefinition
    isFinal(short toTest)XSTypeDefinition
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    setId(XMLSize_t id)XSObject
    SIMPLE_TYPE enum valueXSTypeDefinition
    TYPE_CATEGORY enum nameXSTypeDefinition
    XMemory()XMemory [protected]
    XSObject(XSConstants::COMPONENT_TYPE compType, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSObject
    XSTypeDefinition(TYPE_CATEGORY typeCategory, XSTypeDefinition *const xsBaseType, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSTypeDefinition
    ~XSObject()XSObject [virtual]
    ~XSTypeDefinition()XSTypeDefinition [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/BinOutputStream_8hpp.html0000644000175000017500000000440511363620005022427 0ustar borisboris Xerces-C++: BinOutputStream.hpp File Reference

    BinOutputStream.hpp File Reference

    Go to the source code of this file.

    Classes

    class  BinOutputStream

    Defines

    #define XERCESC_INCLUDE_GUARD_BIN_OUTPUT_STREAM_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_BIN_OUTPUT_STREAM_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSModel.html0000644000175000017500000014660411363620006020735 0ustar borisboris Xerces-C++: XSModel Class Reference

    XSModel Class Reference

    Inheritance diagram for XSModel:

    XMemory

    List of all members.

    Public Member Functions

    Constructors
     XSModel (XMLGrammarPool *grammarPool, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     The constructor to be used when a grammar pool contains all needed info.
     XSModel (XSModel *baseModel, GrammarResolver *grammarResolver, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     The constructor to be used when the XSModel must represent all components in the union of an existing XSModel and a newly-created Grammar(s) from the GrammarResolver.
    Destructor
     ~XSModel ()
    XSModel methods
    StringListgetNamespaces ()
     Convenience method.
    XSNamespaceItemListgetNamespaceItems ()
     A set of namespace schema information information items ( of type XSNamespaceItem), one for each namespace name which appears as the target namespace of any schema component in the schema used for that assessment, and one for absent if any schema component in the schema had no target namespace.
    XSNamedMap< XSObject > * getComponents (XSConstants::COMPONENT_TYPE objectType)
     [schema components]: a list of top-level components, i.e.
    XSNamedMap< XSObject > * getComponentsByNamespace (XSConstants::COMPONENT_TYPE objectType, const XMLCh *compNamespace)
     Convenience method.
    XSAnnotationListgetAnnotations ()
     [annotations]: a set of annotations.
    XSElementDeclarationgetElementDeclaration (const XMLCh *name, const XMLCh *compNamespace)
     Convenience method.
    XSAttributeDeclarationgetAttributeDeclaration (const XMLCh *name, const XMLCh *compNamespace)
     Convenience method.
    XSTypeDefinitiongetTypeDefinition (const XMLCh *name, const XMLCh *compNamespace)
     Convenience method.
    XSAttributeGroupDefinitiongetAttributeGroup (const XMLCh *name, const XMLCh *compNamespace)
     Convenience method.
    XSModelGroupDefinitiongetModelGroupDefinition (const XMLCh *name, const XMLCh *compNamespace)
     Convenience method.
    XSNotationDeclarationgetNotationDeclaration (const XMLCh *name, const XMLCh *compNamespace)
     Convenience method.
    XSObjectgetXSObjectById (XMLSize_t compId, XSConstants::COMPONENT_TYPE compType)
     Optional.
    XMLStringPool * getURIStringPool ()
     methods needed by implementation
    XSNamespaceItemgetNamespaceItem (const XMLCh *const key)
    XSObjectgetXSObject (void *key)
     Get the XSObject (i.e.

    Protected Attributes

    MemoryManager *const fMemoryManager
    StringListfNamespaceStringList
    XSNamespaceItemListfXSNamespaceItemList
    RefVectorOf< XSObject > * fIdVector [XSConstants::MULTIVALUE_FACET]
    XSNamedMap< XSObject > * fComponentMap [XSConstants::MULTIVALUE_FACET]
    XMLStringPool * fURIStringPool
    XSAnnotationListfXSAnnotationList
    RefHashTableOf< XSNamespaceItem > * fHashNamespace
    XSObjectFactory * fObjFactory
    RefVectorOf< XSNamespaceItem > * fDeleteNamespace
    XSModelfParent
    bool fDeleteParent
    bool fAddedS4SGrammar

    Friends

    class XSObjectFactory
    class XSObject


    Constructor & Destructor Documentation

    XSModel::XSModel ( XMLGrammarPool grammarPool,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    The constructor to be used when a grammar pool contains all needed info.

    Parameters:
    grammarPool the grammar pool containing the underlying data structures
    manager The configurable memory manager

    XSModel::XSModel ( XSModel baseModel,
    GrammarResolver *  grammarResolver,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    The constructor to be used when the XSModel must represent all components in the union of an existing XSModel and a newly-created Grammar(s) from the GrammarResolver.

    Parameters:
    baseModel the XSModel upon which this one is based
    grammarResolver the grammar(s) whose components are to be merged
    manager The configurable memory manager

    XSModel::~XSModel (  ) 


    Member Function Documentation

    StringList * XSModel::getNamespaces (  ) 

    Convenience method.

    Returns a list of all namespaces that belong to this schema. The value null is not a valid namespace name, but if there are components that don't have a target namespace, null is included in this list.

    References fNamespaceStringList.

    XSNamespaceItemList * XSModel::getNamespaceItems (  ) 

    A set of namespace schema information information items ( of type XSNamespaceItem), one for each namespace name which appears as the target namespace of any schema component in the schema used for that assessment, and one for absent if any schema component in the schema had no target namespace.

    For more information see schema information.

    References fXSNamespaceItemList.

    XSNamedMap<XSObject>* XSModel::getComponents ( XSConstants::COMPONENT_TYPE  objectType  ) 

    [schema components]: a list of top-level components, i.e.

    element declarations, attribute declarations, etc.

    Parameters:
    objectType The type of the declaration, i.e. ELEMENT_DECLARATION, TYPE_DEFINITION and any other component type that may be a property of a schema component.
    Returns:
    A list of top-level definition of the specified type in objectType or null.

    XSNamedMap<XSObject>* XSModel::getComponentsByNamespace ( XSConstants::COMPONENT_TYPE  objectType,
    const XMLCh compNamespace 
    )

    Convenience method.

    Returns a list of top-level component declarations that are defined within the specified namespace, i.e. element declarations, attribute declarations, etc.

    Parameters:
    objectType The type of the declaration, i.e. ELEMENT_DECLARATION.
    compNamespace The namespace to which declaration belongs or null (for components with no target namespace).
    Returns:
    A list of top-level definitions of the specified type in objectType and defined in the specified namespace or null.

    XSAnnotationList* XSModel::getAnnotations (  ) 

    [annotations]: a set of annotations.

    XSElementDeclaration* XSModel::getElementDeclaration ( const XMLCh name,
    const XMLCh compNamespace 
    )

    Convenience method.

    Returns a top-level element declaration.

    Parameters:
    name The name of the declaration.
    compNamespace The namespace of the declaration, null if absent.
    Returns:
    A top-level element declaration or null if such declaration does not exist.

    XSAttributeDeclaration* XSModel::getAttributeDeclaration ( const XMLCh name,
    const XMLCh compNamespace 
    )

    Convenience method.

    Returns a top-level attribute declaration.

    Parameters:
    name The name of the declaration.
    compNamespace The namespace of the declaration, null if absent.
    Returns:
    A top-level attribute declaration or null if such declaration does not exist.

    XSTypeDefinition* XSModel::getTypeDefinition ( const XMLCh name,
    const XMLCh compNamespace 
    )

    Convenience method.

    Returns a top-level simple or complex type definition.

    Parameters:
    name The name of the definition.
    compNamespace The namespace of the declaration, null if absent.
    Returns:
    An XSTypeDefinition or null if such definition does not exist.

    XSAttributeGroupDefinition* XSModel::getAttributeGroup ( const XMLCh name,
    const XMLCh compNamespace 
    )

    Convenience method.

    Returns a top-level attribute group definition.

    Parameters:
    name The name of the definition.
    compNamespace The namespace of the declaration, null if absent.
    Returns:
    A top-level attribute group definition or null if such definition does not exist.

    XSModelGroupDefinition* XSModel::getModelGroupDefinition ( const XMLCh name,
    const XMLCh compNamespace 
    )

    Convenience method.

    Returns a top-level model group definition.

    Parameters:
    name The name of the definition.
    compNamespace The namespace of the declaration, null if absent.
    Returns:
    A top-level model group definition definition or null if such definition does not exist.

    XSNotationDeclaration* XSModel::getNotationDeclaration ( const XMLCh name,
    const XMLCh compNamespace 
    )

    Convenience method.

    Returns a top-level notation declaration.

    Parameters:
    name The name of the declaration.
    compNamespace The namespace of the declaration, null if absent.
    Returns:
    A top-level notation declaration or null if such declaration does not exist.

    XSObject* XSModel::getXSObjectById ( XMLSize_t  compId,
    XSConstants::COMPONENT_TYPE  compType 
    )

    Optional.

    Return a component given a component type and a unique Id. May not be supported for all component types.

    Parameters:
    compId unique Id of the component within its type
    compType type of the component
    Returns:
    the component of the given type with the given Id, or 0 if no such component exists or this is unsupported for this type of component.

    XMLStringPool * XSModel::getURIStringPool (  ) 

    methods needed by implementation

    References fURIStringPool.

    XSNamespaceItem* XSModel::getNamespaceItem ( const XMLCh *const   key  ) 

    XSObject* XSModel::getXSObject ( void *  key  ) 

    Get the XSObject (i.e.

    XSElementDeclaration) that corresponds to to a schema grammar component (i.e. SchemaElementDecl)

    Parameters:
    key schema component object
    Returns:
    the corresponding XSObject


    Friends And Related Function Documentation

    friend class XSObjectFactory [friend]

    friend class XSObject [friend]


    Member Data Documentation

    RefVectorOf<XSObject>* XSModel::fIdVector[XSConstants::MULTIVALUE_FACET] [protected]

    XSNamedMap<XSObject>* XSModel::fComponentMap[XSConstants::MULTIVALUE_FACET] [protected]

    XMLStringPool* XSModel::fURIStringPool [protected]

    Referenced by getURIStringPool().

    RefHashTableOf<XSNamespaceItem>* XSModel::fHashNamespace [protected]

    XSObjectFactory* XSModel::fObjFactory [protected]

    RefVectorOf<XSNamespaceItem>* XSModel::fDeleteNamespace [protected]

    XSModel* XSModel::fParent [protected]

    bool XSModel::fDeleteParent [protected]

    bool XSModel::fAddedS4SGrammar [protected]


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLEntityHandler.png0000644000175000017500000000160111363620006022360 0ustar borisboris‰PNG  IHDRˆéh PLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfIDATxœí™mnÜ †A•ò¸îªVêy"EÚû¡ÌØ]0V½h;o¬ƒ=<Ààlö5¦+N®ßÃŒ¢ q%„…Š.•`ÇP%^QcyÀ>?>"œI=[ì‚ë¤ó×A8o¼séÀ^­±ÞXëÒ ËÆ¹ñÖb\—!¯Ï³#F¢ ¡ ¡ ¡—AüÚ×ïNûˆñ­sÓW§Ýü\N‰ ÎÅø® Q‡x$ÅÒïSeL¿b¹<á}"^ô!b¬B`ïð+¦FO—‡ è±…¸äØG Ù¤+æ¢òÆcœ&•[1}I± _1RÞPÃÏÏb¼Ä¦¦þ†‰NU §»µÙÃ4ç†âÜ\wªZ§ö0ÏÚļfЦÃÎ=›þ ó± ³,çaŽÕ©‰™˜‰™˜‰™˜×aòK8B/LÌ>¸ÒÒ²¤LñgÔÛLgõ»io †‘:0 t;êJ˜6²ñ*“ÀøÜ`쑈ÌGù:k‡¨ãg 7^GK íF•È.Ф –¤úïc‚—câ5›:ÃÜ&ÅB£”¶ªû5ÎbV‡«‘4w0Qb«Q$Q´KRiƒñN¡Å´l0xI+ýTsnЕú¹wfĦS±Nm{ÿ›˜·ÃŒùÁ|óˆkε‡IEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classXSParticle-members.html0000644000175000017500000002361111363620006023060 0ustar borisboris Xerces-C++: Member List

    XSParticle Member List

    This is the complete list of members for XSParticle, including all inherited members.

    fComponentTypeXSObject [protected]
    fIdXSObject [protected]
    fMaxOccursXSParticle [protected]
    fMemoryManagerXSObject [protected]
    fMinOccursXSParticle [protected]
    fTermXSParticle [protected]
    fTermTypeXSParticle [protected]
    fUnboundedXSParticle [protected]
    fXSModelXSObject [protected]
    getElementTerm()XSParticle
    getId() const XSObject [virtual]
    getMaxOccurs() const XSParticle
    getMaxOccursUnbounded() const XSParticle
    getMinOccurs() const XSParticle
    getModelGroupTerm()XSParticle
    getName() const XSObject [virtual]
    getNamespace()XSObject [virtual]
    getNamespaceItem()XSObject [virtual]
    getTermType() const XSParticle
    getType() const XSObject
    getWildcardTerm()XSParticle
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    setId(XMLSize_t id)XSObject
    TERM_ELEMENT enum valueXSParticle
    TERM_EMPTY enum valueXSParticle
    TERM_MODELGROUP enum valueXSParticle
    TERM_TYPE enum nameXSParticle
    TERM_WILDCARD enum valueXSParticle
    XMemory()XMemory [protected]
    XSObject(XSConstants::COMPONENT_TYPE compType, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSObject
    XSParticle(TERM_TYPE termType, XSModel *const xsModel, XSObject *const particleTerm, XMLSize_t minOccurs, XMLSize_t maxOccurs, bool unbounded, MemoryManager *const manager)XSParticle
    ~XSObject()XSObject [virtual]
    ~XSParticle()XSParticle


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/globals_0x66.html0000644000175000017500000000533211363620006020572 0ustar borisboris Xerces-C++: Class Members
    Here is a list of all file members with links to the files they belong to:

    - f -


    Generated on Wed Apr 21 17:55:51 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/NullPointerException_8hpp.html0000644000175000017500000000405611363620005023456 0ustar borisboris Xerces-C++: NullPointerException.hpp File Reference

    NullPointerException.hpp File Reference

    Go to the source code of this file.

    Defines

    #define XERCESC_INCLUDE_GUARD_NULLPOINTEREXCEPTION_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_NULLPOINTEREXCEPTION_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMElement_8hpp-source.html0000644000175000017500000005267211363620004022561 0ustar borisboris Xerces-C++: DOMElement.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_0x6a.html0000644000175000017500000001010511363620005021223 0ustar borisboris Xerces-C++: Class Members
    Here is a list of all class members with links to the classes they belong to:

    - j -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_0x62.html0000644000175000017500000002126311363620005021153 0ustar borisboris Xerces-C++: Class Members
    Here is a list of all class members with links to the classes they belong to:

    - b -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/functions_eval_0x63.html0000644000175000017500000002166311363620005022167 0ustar borisboris Xerces-C++: Class Members - Enumerator
     

    - c -


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSElementDeclaration-members.html0000644000175000017500000003173511363620006025062 0ustar borisboris Xerces-C++: Member List

    XSElementDeclaration Member List

    This is the complete list of members for XSElementDeclaration, including all inherited members.

    fAnnotationXSElementDeclaration [protected]
    fComponentTypeXSObject [protected]
    fDisallowedSubstitutionsXSElementDeclaration [protected]
    fEnclosingTypeDefinitionXSElementDeclaration [protected]
    fIdXSObject [protected]
    fIdentityConstraintsXSElementDeclaration [protected]
    fMemoryManagerXSObject [protected]
    fSchemaElementDeclXSElementDeclaration [protected]
    fScopeXSElementDeclaration [protected]
    fSubstitutionGroupAffiliationXSElementDeclaration [protected]
    fSubstitutionGroupExclusionsXSElementDeclaration [protected]
    fTypeDefinitionXSElementDeclaration [protected]
    fXSModelXSObject [protected]
    getAbstract() const XSElementDeclaration
    getAnnotation() const XSElementDeclaration
    getConstraintType() const XSElementDeclaration
    getConstraintValue()XSElementDeclaration
    getDisallowedSubstitutions() const XSElementDeclaration
    getEnclosingCTDefinition() const XSElementDeclaration
    getId() const XSObject [virtual]
    getIdentityConstraints()XSElementDeclaration
    getName() const XSElementDeclaration [virtual]
    getNamespace()XSElementDeclaration [virtual]
    getNamespaceItem()XSElementDeclaration [virtual]
    getNillable() const XSElementDeclaration
    getScope() const XSElementDeclaration
    getSubstitutionGroupAffiliation() const XSElementDeclaration
    getSubstitutionGroupExclusions() const XSElementDeclaration
    getType() const XSObject
    getTypeDefinition() const XSElementDeclaration
    isDisallowedSubstitution(XSConstants::DERIVATION_TYPE disallowed)XSElementDeclaration
    isSubstitutionGroupExclusion(XSConstants::DERIVATION_TYPE exclusion)XSElementDeclaration
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    setId(XMLSize_t id)XSObject
    setTypeDefinition(XSTypeDefinition *typeDefinition)XSElementDeclaration
    XMemory()XMemory [protected]
    XSElementDeclaration(SchemaElementDecl *const schemaElementDecl, XSTypeDefinition *const typeDefinition, XSElementDeclaration *const substitutionGroupAffiliation, XSAnnotation *const annot, XSNamedMap< XSIDCDefinition > *const identityConstraints, XSModel *const xsModel, XSConstants::SCOPE elemScope=XSConstants::SCOPE_ABSENT, XSComplexTypeDefinition *const enclosingTypeDefinition=0, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSElementDeclaration
    XSObject(XSConstants::COMPONENT_TYPE compType, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSObject
    XSObjectFactory classXSElementDeclaration [friend]
    ~XSElementDeclaration()XSElementDeclaration
    ~XSObject()XSObject [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classAbstractDOMParser-members.html0000644000175000017500000013555311363620005024332 0ustar borisboris Xerces-C++: Member List

    AbstractDOMParser Member List

    This is the complete list of members for AbstractDOMParser, including all inherited members.

    AbstractDOMParser(XMLValidator *const valToAdopt=0, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager, XMLGrammarPool *const gramPool=0)AbstractDOMParser [protected]
    adoptDocument()AbstractDOMParser
    attDef(const DTDElementDecl &elemDecl, const DTDAttDef &attDef, const bool ignoring)AbstractDOMParser [virtual]
    createAttr(const XMLCh *name)AbstractDOMParser [protected, virtual]
    createAttrNS(const XMLCh *namespaceURI, const XMLCh *elemPrefix, const XMLCh *localName, const XMLCh *qName)AbstractDOMParser [protected, virtual]
    createCDATASection(const XMLCh *, XMLSize_t)AbstractDOMParser [protected, virtual]
    createElement(const XMLCh *name)AbstractDOMParser [protected, virtual]
    createElementNS(const XMLCh *namespaceURI, const XMLCh *elemPrefix, const XMLCh *localName, const XMLCh *qName)AbstractDOMParser [protected, virtual]
    createText(const XMLCh *, XMLSize_t)AbstractDOMParser [protected, virtual]
    docCharacters(const XMLCh *const chars, const XMLSize_t length, const bool cdataSection)AbstractDOMParser [virtual]
    docComment(const XMLCh *const comment)AbstractDOMParser [virtual]
    docPI(const XMLCh *const target, const XMLCh *const data)AbstractDOMParser [virtual]
    doctypeComment(const XMLCh *const comment)AbstractDOMParser [virtual]
    doctypeDecl(const DTDElementDecl &elemDecl, const XMLCh *const publicId, const XMLCh *const systemId, const bool hasIntSubset, const bool hasExtSubset=false)AbstractDOMParser [virtual]
    doctypePI(const XMLCh *const target, const XMLCh *const data)AbstractDOMParser [virtual]
    doctypeWhitespace(const XMLCh *const chars, const XMLSize_t length)AbstractDOMParser [virtual]
    elementDecl(const DTDElementDecl &decl, const bool isIgnored)AbstractDOMParser [virtual]
    endAttList(const DTDElementDecl &elemDecl)AbstractDOMParser [virtual]
    endDocument()AbstractDOMParser [virtual]
    endElement(const XMLElementDecl &elemDecl, const unsigned int urlId, const bool isRoot, const XMLCh *const elemPrefix)AbstractDOMParser [virtual]
    endEntityReference(const XMLEntityDecl &entDecl)AbstractDOMParser [virtual]
    endExtSubset()AbstractDOMParser [virtual]
    endInputSource(const InputSource &inputSource)=0XMLEntityHandler [pure virtual]
    endIntSubset()AbstractDOMParser [virtual]
    entityDecl(const DTDEntityDecl &entityDecl, const bool isPEDecl, const bool isIgnored)AbstractDOMParser [virtual]
    error(const unsigned int errCode, const XMLCh *const errDomain, const ErrTypes type, const XMLCh *const errorText, const XMLCh *const systemId, const XMLCh *const publicId, const XMLFileLoc lineNum, const XMLFileLoc colNum)=0XMLErrorReporter [pure virtual]
    ErrType_Error enum valueXMLErrorReporter
    ErrType_Fatal enum valueXMLErrorReporter
    ErrType_Warning enum valueXMLErrorReporter
    ErrTypes enum nameXMLErrorReporter
    ErrTypes_Unknown enum valueXMLErrorReporter
    expandSystemId(const XMLCh *const systemId, XMLBuffer &toFill)=0XMLEntityHandler [pure virtual]
    fBufMgrAbstractDOMParser [protected]
    fCreateCommentNodesAbstractDOMParser [protected]
    fCreateEntityReferenceNodesAbstractDOMParser [protected]
    fCreateSchemaInfoAbstractDOMParser [protected]
    fCurrentEntityAbstractDOMParser [protected]
    fCurrentNodeAbstractDOMParser [protected]
    fCurrentParentAbstractDOMParser [protected]
    fDocumentAbstractDOMParser [protected]
    fDocumentAdoptedByUserAbstractDOMParser [protected]
    fDocumentTypeAbstractDOMParser [protected]
    fDocumentVectorAbstractDOMParser [protected]
    fDoXIncludeAbstractDOMParser [protected]
    fGrammarPoolAbstractDOMParser [protected]
    fGrammarResolverAbstractDOMParser [protected]
    fImplementationFeaturesAbstractDOMParser [protected]
    fIncludeIgnorableWhitespaceAbstractDOMParser [protected]
    fInternalSubsetAbstractDOMParser [protected]
    fMemoryManagerAbstractDOMParser [protected]
    fParseInProgressAbstractDOMParser [protected]
    fPSVIHandlerAbstractDOMParser [protected]
    fScannerAbstractDOMParser [protected]
    fURIStringPoolAbstractDOMParser [protected]
    fValidatorAbstractDOMParser [protected]
    fWithinElementAbstractDOMParser [protected]
    getCalculateSrcOfs() const AbstractDOMParser
    getCreateCommentNodes() const AbstractDOMParser
    getCreateEntityReferenceNodes() const AbstractDOMParser
    getCreateSchemaInfo() const AbstractDOMParser
    getCurrentNode()AbstractDOMParser [protected]
    getDisableDefaultEntityResolution() const AbstractDOMParser
    getDocument()AbstractDOMParser
    getDoNamespaces() const AbstractDOMParser
    getDoSchema() const AbstractDOMParser
    getDoXInclude() const AbstractDOMParser
    getErrorCount() const AbstractDOMParser
    getExitOnFirstFatalError() const AbstractDOMParser
    getExternalNoNamespaceSchemaLocation() const AbstractDOMParser
    getExternalSchemaLocation() const AbstractDOMParser
    getGenerateSyntheticAnnotations() const AbstractDOMParser
    getGrammarResolver() const AbstractDOMParser [protected]
    getHandleMultipleImports() const AbstractDOMParser
    getIdentityConstraintChecking() const AbstractDOMParser
    getIgnoreAnnotations() const AbstractDOMParser
    getIncludeIgnorableWhitespace() const AbstractDOMParser
    getLoadExternalDTD() const AbstractDOMParser
    getLoadSchema() const AbstractDOMParser
    getLowWaterMark() const AbstractDOMParser
    getMemoryManager() const AbstractDOMParser [protected]
    getParseInProgress() const AbstractDOMParser [protected]
    getPSVIHandler()AbstractDOMParser
    getPSVIHandler() const AbstractDOMParser
    getScanner() const AbstractDOMParser [protected]
    getSecurityManager() const AbstractDOMParser
    getSkipDTDValidation() const AbstractDOMParser
    getStandardUriConformant() const AbstractDOMParser
    getValidateAnnotations() const AbstractDOMParser
    getValidationConstraintFatal() const AbstractDOMParser
    getValidationSchemaFullChecking() const AbstractDOMParser
    getValidationScheme() const AbstractDOMParser
    getValidator() const AbstractDOMParser
    handleAttributesPSVI(const XMLCh *const localName, const XMLCh *const uri, PSVIAttributeList *psviAttributes)AbstractDOMParser [virtual]
    handleElementPSVI(const XMLCh *const localName, const XMLCh *const uri, PSVIElement *elementInfo)AbstractDOMParser [virtual]
    handlePartialElementPSVI(const XMLCh *const localName, const XMLCh *const uri, PSVIElement *elementInfo)AbstractDOMParser [virtual]
    ignorableWhitespace(const XMLCh *const chars, const XMLSize_t length, const bool cdataSection)AbstractDOMParser [virtual]
    isDocumentAdopted() const AbstractDOMParser [protected]
    notationDecl(const XMLNotationDecl &notDecl, const bool isIgnored)AbstractDOMParser [virtual]
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    parse(const InputSource &source)AbstractDOMParser
    parse(const XMLCh *const systemId)AbstractDOMParser
    parse(const char *const systemId)AbstractDOMParser
    parseFirst(const XMLCh *const systemId, XMLPScanToken &toFill)AbstractDOMParser
    parseFirst(const char *const systemId, XMLPScanToken &toFill)AbstractDOMParser
    parseFirst(const InputSource &source, XMLPScanToken &toFill)AbstractDOMParser
    parseNext(XMLPScanToken &token)AbstractDOMParser
    parseReset(XMLPScanToken &token)AbstractDOMParser
    PSVIHandler()PSVIHandler [protected]
    reset()AbstractDOMParser
    resetDocType()AbstractDOMParser [virtual]
    resetDocument()AbstractDOMParser [virtual]
    resetEntities()=0XMLEntityHandler [pure virtual]
    resetErrors()=0XMLErrorReporter [pure virtual]
    resetPool()AbstractDOMParser [protected]
    resolveEntity(XMLResourceIdentifier *resourceIdentifier)=0XMLEntityHandler [pure virtual]
    setCalculateSrcOfs(const bool newState)AbstractDOMParser
    setCreateCommentNodes(const bool create)AbstractDOMParser
    setCreateEntityReferenceNodes(const bool create)AbstractDOMParser
    setCreateSchemaInfo(const bool newState)AbstractDOMParser
    setCurrentNode(DOMNode *toSet)AbstractDOMParser [protected]
    setDisableDefaultEntityResolution(const bool newValue)AbstractDOMParser
    setDocument(DOMDocument *toSet)AbstractDOMParser [protected]
    setDoNamespaces(const bool newState)AbstractDOMParser
    setDoSchema(const bool newState)AbstractDOMParser
    setDoXInclude(const bool newState)AbstractDOMParser
    setExitOnFirstFatalError(const bool newState)AbstractDOMParser
    setExternalNoNamespaceSchemaLocation(const XMLCh *const noNamespaceSchemaLocation)AbstractDOMParser
    setExternalNoNamespaceSchemaLocation(const char *const noNamespaceSchemaLocation)AbstractDOMParser
    setExternalSchemaLocation(const XMLCh *const schemaLocation)AbstractDOMParser
    setExternalSchemaLocation(const char *const schemaLocation)AbstractDOMParser
    setGenerateSyntheticAnnotations(const bool newValue)AbstractDOMParser
    setHandleMultipleImports(const bool newValue)AbstractDOMParser
    setIdentityConstraintChecking(const bool newState)AbstractDOMParser
    setIgnoreAnnotations(const bool newValue)AbstractDOMParser
    setIncludeIgnorableWhitespace(const bool include)AbstractDOMParser
    setLoadExternalDTD(const bool newState)AbstractDOMParser
    setLoadSchema(const bool newState)AbstractDOMParser
    setLowWaterMark(XMLSize_t lwm)AbstractDOMParser
    setParseInProgress(const bool toSet)AbstractDOMParser [protected]
    setPSVIHandler(PSVIHandler *const handler)AbstractDOMParser [virtual]
    setSecurityManager(SecurityManager *const securityManager)AbstractDOMParser
    setSkipDTDValidation(const bool newValue)AbstractDOMParser
    setStandardUriConformant(const bool newState)AbstractDOMParser
    setValidateAnnotations(const bool newValue)AbstractDOMParser
    setValidationConstraintFatal(const bool newState)AbstractDOMParser
    setValidationSchemaFullChecking(const bool schemaFullChecking)AbstractDOMParser
    setValidationScheme(const ValSchemes newScheme)AbstractDOMParser
    startAttList(const DTDElementDecl &elemDecl)AbstractDOMParser [virtual]
    startDocument()AbstractDOMParser [virtual]
    startElement(const XMLElementDecl &elemDecl, const unsigned int urlId, const XMLCh *const elemPrefix, const RefVectorOf< XMLAttr > &attrList, const XMLSize_t attrCount, const bool isEmpty, const bool isRoot)AbstractDOMParser [virtual]
    startEntityReference(const XMLEntityDecl &entDecl)AbstractDOMParser [virtual]
    startExtSubset()AbstractDOMParser [virtual]
    startInputSource(const InputSource &inputSource)=0XMLEntityHandler [pure virtual]
    startIntSubset()AbstractDOMParser [virtual]
    TextDecl(const XMLCh *const versionStr, const XMLCh *const encodingStr)AbstractDOMParser [virtual]
    useImplementation(const XMLCh *const implementationFeatures)AbstractDOMParser
    useScanner(const XMLCh *const scannerName)AbstractDOMParser
    Val_Always enum valueAbstractDOMParser
    Val_Auto enum valueAbstractDOMParser
    Val_Never enum valueAbstractDOMParser
    ValSchemes enum nameAbstractDOMParser
    XMemory()XMemory [protected]
    XMLDecl(const XMLCh *const versionStr, const XMLCh *const encodingStr, const XMLCh *const standaloneStr, const XMLCh *const actualEncStr)AbstractDOMParser [virtual]
    XMLDocumentHandler()XMLDocumentHandler [protected]
    XMLEntityHandler()XMLEntityHandler [protected]
    XMLErrorReporter()XMLErrorReporter [protected]
    ~AbstractDOMParser()AbstractDOMParser [virtual]
    ~PSVIHandler()PSVIHandler [virtual]
    ~XMLDocumentHandler()XMLDocumentHandler [virtual]
    ~XMLEntityHandler()XMLEntityHandler [virtual]
    ~XMLErrorReporter()XMLErrorReporter [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSModelGroupDefinition-members.html0000644000175000017500000001733111363620006025405 0ustar borisboris Xerces-C++: Member List

    XSModelGroupDefinition Member List

    This is the complete list of members for XSModelGroupDefinition, including all inherited members.

    fAnnotationXSModelGroupDefinition [protected]
    fComponentTypeXSObject [protected]
    fGroupInfoXSModelGroupDefinition [protected]
    fIdXSObject [protected]
    fMemoryManagerXSObject [protected]
    fModelGroupParticleXSModelGroupDefinition [protected]
    fXSModelXSObject [protected]
    getAnnotation() const XSModelGroupDefinition
    getId() const XSObject [virtual]
    getModelGroup()XSModelGroupDefinition
    getName() const XSModelGroupDefinition [virtual]
    getNamespace()XSModelGroupDefinition [virtual]
    getNamespaceItem()XSModelGroupDefinition [virtual]
    getType() const XSObject
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    setId(XMLSize_t id)XSObject
    XMemory()XMemory [protected]
    XSModelGroupDefinition(XercesGroupInfo *const groupInfo, XSParticle *const groupParticle, XSAnnotation *const annot, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSModelGroupDefinition
    XSObject(XSConstants::COMPONENT_TYPE compType, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSObject
    ~XSModelGroupDefinition()XSModelGroupDefinition
    ~XSObject()XSObject [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLFormatTarget.html0000644000175000017500000001676711363620006022410 0ustar borisboris Xerces-C++: XMLFormatTarget Class Reference

    XMLFormatTarget Class Reference

    Inheritance diagram for XMLFormatTarget:

    XMemory LocalFileFormatTarget MemBufFormatTarget StdOutFormatTarget

    List of all members.

    Public Member Functions

    virtual ~XMLFormatTarget ()
    virtual void writeChars (const XMLByte *const toWrite, const XMLSize_t count, XMLFormatter *const formatter)=0
    virtual void flush ()

    Protected Member Functions

     XMLFormatTarget ()


    Constructor & Destructor Documentation

    virtual XMLFormatTarget::~XMLFormatTarget (  )  [virtual]

    XMLFormatTarget::XMLFormatTarget (  )  [protected]


    Member Function Documentation

    virtual void XMLFormatTarget::writeChars ( const XMLByte *const   toWrite,
    const XMLSize_t  count,
    XMLFormatter *const   formatter 
    ) [pure virtual]

    virtual void XMLFormatTarget::flush (  )  [virtual]

    Reimplemented in LocalFileFormatTarget, and StdOutFormatTarget.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XSComplexTypeDefinition_8hpp-source.html0000644000175000017500000005221411363620005025356 0ustar borisboris Xerces-C++: XSComplexTypeDefinition.hpp Source File
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/pages.html0000644000175000017500000000221111363620004017452 0ustar borisboris Xerces-C++: Page Index

    Related Pages

    Here is a list of all related documentation pages:

    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/globals_defs_0x73.html0000644000175000017500000000537511363620007021601 0ustar borisboris Xerces-C++: Class Members
     

    - s -


    Generated on Wed Apr 21 17:55:51 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/files.html0000644000175000017500000011051411363620006017465 0ustar borisboris Xerces-C++: File Index

    File List

    Here is a list of all files with brief descriptions:
    AbstractDOMParser.hpp [code]
    ArrayIndexOutOfBoundsException.hpp [code]
    AttributeList.hpp [code]
    Attributes.hpp [code]
    Base64.hpp [code]
    BinFileInputStream.hpp [code]
    BinInputStream.hpp [code]
    BinMemInputStream.hpp [code]
    BinOutputStream.hpp [code]
    ContentHandler.hpp [code]
    DeclHandler.hpp [code]
    DefaultHandler.hpp [code]
    DefaultPanicHandler.hpp [code]
    DocumentHandler.hpp [code]
    DOMAttr.hpp [code]
    DOMCDATASection.hpp [code]
    DOMCharacterData.hpp [code]
    DOMComment.hpp [code]
    DOMConfiguration.hpp [code]
    DOMDocument.hpp [code]
    DOMDocumentFragment.hpp [code]
    DOMDocumentRange.hpp [code]
    DOMDocumentTraversal.hpp [code]
    DOMDocumentType.hpp [code]
    DOMElement.hpp [code]
    DOMEntity.hpp [code]
    DOMEntityReference.hpp [code]
    DOMError.hpp [code]
    DOMErrorHandler.hpp [code]
    DOMException.hpp [code]
    DOMImplementation.hpp [code]
    DOMImplementationList.hpp [code]
    DOMImplementationLS.hpp [code]
    DOMImplementationRegistry.hpp [code]
    DOMImplementationSource.hpp [code]
    DOMLocator.hpp [code]
    DOMLSException.hpp [code]
    DOMLSInput.hpp [code]
    DOMLSOutput.hpp [code]
    DOMLSParser.hpp [code]
    DOMLSParserFilter.hpp [code]
    DOMLSResourceResolver.hpp [code]
    DOMLSSerializer.hpp [code]
    DOMLSSerializerFilter.hpp [code]
    DOMMemoryManager.hpp [code]
    DOMNamedNodeMap.hpp [code]
    DOMNode.hpp [code]
    DOMNodeFilter.hpp [code]
    DOMNodeIterator.hpp [code]
    DOMNodeList.hpp [code]
    DOMNotation.hpp [code]
    DOMProcessingInstruction.hpp [code]
    DOMPSVITypeInfo.hpp [code]
    DOMRange.hpp [code]
    DOMRangeException.hpp [code]
    DOMStringList.hpp [code]
    DOMText.hpp [code]
    DOMTreeWalker.hpp [code]
    DOMTypeInfo.hpp [code]
    DOMUserDataHandler.hpp [code]
    DOMXPathEvaluator.hpp [code]
    DOMXPathException.hpp [code]
    DOMXPathExpression.hpp [code]
    DOMXPathNamespace.hpp [code]
    DOMXPathNSResolver.hpp [code]
    DOMXPathResult.hpp [code]
    DTDHandler.hpp [code]
    EmptyStackException.hpp [code]
    EntityResolver.hpp [code]
    ErrorHandler.hpp [code]
    HandlerBase.hpp [code]
    Hash2KeysSetOf.hpp [code]
    HexBin.hpp [code]
    IllegalArgumentException.hpp [code]
    InputSource.hpp [code]
    InvalidCastException.hpp [code]
    IOException.hpp [code]
    LexicalHandler.hpp [code]
    LocalFileFormatTarget.hpp [code]
    LocalFileInputSource.hpp [code]
    Locator.hpp [code]
    MemBufFormatTarget.hpp [code]
    MemBufInputSource.hpp [code]
    MemoryManager.hpp [code]
    NoSuchElementException.hpp [code]
    NullPointerException.hpp [code]
    NumberFormatException.hpp [code]
    OutOfMemoryException.hpp [code]
    PanicHandler.hpp [code]
    ParseException.hpp [code]
    Parser.hpp [code]
    PlatformUtils.hpp [code]
    PSVIAttribute.hpp [code]
    PSVIAttributeList.hpp [code]
    PSVIElement.hpp [code]
    PSVIHandler.hpp [code]
    PSVIItem.hpp [code]
    PSVIUni.hpp [code]
    QName.hpp [code]
    RuntimeException.hpp [code]
    SAX2XMLFilter.hpp [code]
    SAX2XMLReader.hpp [code]
    SAXException.hpp [code]
    SAXParseException.hpp [code]
    SAXParser.hpp [code]
    SchemaDateTimeException.hpp [code]
    SecurityManager.hpp [code]
    StdInInputSource.hpp [code]
    StDOMNode.hpp [code]
    StdOutFormatTarget.hpp [code]
    SynchronizedStringPool.hpp [code]
    TranscodingException.hpp [code]
    TransService.hpp [code]
    UnexpectedEOFException.hpp [code]
    UnsupportedEncodingException.hpp [code]
    URLInputSource.hpp [code]
    UTFDataFormatException.hpp [code]
    ValidationContext.hpp [code]
    Wrapper4DOMLSInput.hpp [code]
    Wrapper4InputSource.hpp [code]
    Xerces_autoconf_config.borland.hpp [code]
    Xerces_autoconf_config.msvc.hpp [code]
    XercesDefs.hpp [code]
    XercesDOMParser.hpp [code]
    XMemory.hpp [code]
    XMLAbstractDoubleFloat.hpp [code]
    XMLAttDef.hpp [code]
    XMLAttDefList.hpp [code]
    XMLAttr.hpp [code]
    XMLBigDecimal.hpp [code]
    XMLBigInteger.hpp [code]
    XMLChar.hpp [code]
    XMLContentModel.hpp [code]
    XMLDateTime.hpp [code]
    XMLDocumentHandler.hpp [code]
    XMLDOMMsg.hpp [code]
    XMLDouble.hpp [code]
    XMLDTDDescription.hpp [code]
    XMLElementDecl.hpp [code]
    XMLEntityDecl.hpp [code]
    XMLEntityHandler.hpp [code]
    XMLEntityResolver.hpp [code]
    XMLErrorCodes.hpp [code]
    XMLErrorReporter.hpp [code]
    XMLException.hpp [code]
    XMLFileMgr.hpp [code]
    XMLFloat.hpp [code]
    XMLFormatter.hpp [code]
    XMLGrammarDescription.hpp [code]
    XMLGrammarPool.hpp [code]
    XMLIBM1047Transcoder.hpp [code]
    XMLInitializer.hpp [code]
    XMLInteger.hpp [code]
    XMLMutexMgr.hpp [code]
    XMLNetAccessor.hpp [code]
    XMLNotationDecl.hpp [code]
    XMLNumber.hpp [code]
    XMLReaderFactory.hpp [code]
    XMLResourceIdentifier.hpp [code]
    XMLSchemaDescription.hpp [code]
    XMLString.hpp [code]
    XMLStringTokenizer.hpp [code]
    XMLUni.hpp [code]
    XMLUniDefs.hpp [code]
    XMLUri.hpp [code]
    XMLURL.hpp [code]
    XMLValidator.hpp [code]
    XMLValidityCodes.hpp [code]
    XSAnnotation.hpp [code]
    XSAttributeDeclaration.hpp [code]
    XSAttributeGroupDefinition.hpp [code]
    XSAttributeUse.hpp [code]
    XSComplexTypeDefinition.hpp [code]
    XSConstants.hpp [code]
    XSElementDeclaration.hpp [code]
    XSFacet.hpp [code]
    XSIDCDefinition.hpp [code]
    XSModel.hpp [code]
    XSModelGroup.hpp [code]
    XSModelGroupDefinition.hpp [code]
    XSMultiValueFacet.hpp [code]
    XSNamedMap.hpp [code]
    XSNamespaceItem.hpp [code]
    XSNotationDeclaration.hpp [code]
    XSObject.hpp [code]
    XSParticle.hpp [code]
    XSSimpleTypeDefinition.hpp [code]
    XSTypeDefinition.hpp [code]
    XSValue.hpp [code]
    XSWildcard.hpp [code]

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLGrammarPool.html0000644000175000017500000006625611363620006022227 0ustar borisboris Xerces-C++: XMLGrammarPool Class Reference

    XMLGrammarPool Class Reference

    Inheritance diagram for XMLGrammarPool:

    XMemory

    List of all members.

    Public Member Functions

    virtual void serializeGrammars (BinOutputStream *const)=0
     serialization and deserialization support
    virtual void deserializeGrammars (BinInputStream *const)=0
    void setIgnoreSerializedAnnotations (const bool flag)
    bool getIgnoreSerializedAnnotations () const
    Virtual destructor for derived classes
    virtual ~XMLGrammarPool ()
     virtual destructor
    The Grammar Pool Interface
    virtual bool cacheGrammar (Grammar *const gramToCache)=0
     cacheGrammar
    virtual Grammar * retrieveGrammar (XMLGrammarDescription *const gramDesc)=0
     retrieveGrammar
    virtual Grammar * orphanGrammar (const XMLCh *const nameSpaceKey)=0
     orphanGrammar
    virtual
    RefHashTableOfEnumerator
    < Grammar > 
    getGrammarEnumerator () const =0
     Get an enumeration of the cached Grammars in the Grammar pool.
    virtual bool clear ()=0
     clear
    virtual void lockPool ()=0
     lockPool
    virtual void unlockPool ()=0
     unlockPool
    Factory interface
    virtual DTDGrammar * createDTDGrammar ()=0
     createDTDGrammar
    virtual SchemaGrammar * createSchemaGrammar ()=0
     createSchemaGrammar
    virtual XMLDTDDescriptioncreateDTDDescription (const XMLCh *const systemId)=0
     createDTDDescription
    virtual XMLSchemaDescriptioncreateSchemaDescription (const XMLCh *const targetNamespace)=0
     createSchemaDescription
    schema component model support
    virtual XSModelgetXSModel (bool &XSModelWasChanged)=0
    Getter
    MemoryManagergetMemoryManager ()
     getMemoryManager
    virtual XMLStringPool * getURIStringPool ()=0
     Return an XMLStringPool for use by validation routines.

    Protected Member Functions

     XMLGrammarPool (MemoryManager *const memMgr=XMLPlatformUtils::fgMemoryManager)
     Hidden Constructors.


    Constructor & Destructor Documentation

    virtual XMLGrammarPool::~XMLGrammarPool (  )  [virtual]

    virtual destructor

    XMLGrammarPool::XMLGrammarPool ( MemoryManager *const   memMgr = XMLPlatformUtils::fgMemoryManager  )  [protected]

    Hidden Constructors.


    Member Function Documentation

    virtual bool XMLGrammarPool::cacheGrammar ( Grammar *const   gramToCache  )  [pure virtual]

    cacheGrammar

    Provide the grammar pool with an opportunity to cache the given grammar. If the pool does not choose to do so, it should return false; otherwise, it should return true, so that the caller knows whether the grammar has been adopted.

    Parameters:
    gramToCache the Grammar to be cached in the grammar pool
    Returns:
    true if the grammar pool has elected to cache the grammar (in which case it is assumed to have adopted it); false if it does not cache it

    virtual Grammar* XMLGrammarPool::retrieveGrammar ( XMLGrammarDescription *const   gramDesc  )  [pure virtual]

    retrieveGrammar

    Parameters:
    gramDesc the Grammar Description used to search for grammar cached in the grammar pool

    virtual Grammar* XMLGrammarPool::orphanGrammar ( const XMLCh *const   nameSpaceKey  )  [pure virtual]

    orphanGrammar

    grammar removed from the grammar pool and owned by the caller

    Parameters:
    nameSpaceKey Key used to search for grammar in the grammar pool
    Returns:
    the grammar that was removed from the pool (0 if none)

    virtual RefHashTableOfEnumerator<Grammar> XMLGrammarPool::getGrammarEnumerator (  )  const [pure virtual]

    Get an enumeration of the cached Grammars in the Grammar pool.

    Returns:
    enumeration of the cached Grammars in Grammar pool

    virtual bool XMLGrammarPool::clear (  )  [pure virtual]

    clear

    all grammars are removed from the grammar pool and deleted.

    Returns:
    true if the grammar pool was cleared. false if it did not.

    virtual void XMLGrammarPool::lockPool (  )  [pure virtual]

    lockPool

    When this method is called by the application, the grammar pool should stop adding new grammars to the cache. This should result in the grammar pool being sharable among parsers operating in different threads.

    virtual void XMLGrammarPool::unlockPool (  )  [pure virtual]

    unlockPool

    After this method has been called, the grammar pool implementation should return to its default behaviour when cacheGrammars(...) is called. One effect, depending on the underlying implementation, is that the grammar pool may no longer be thread-safe (even on read operations).

    For PSVI support any previous XSModel that was produced will be deleted.

    virtual DTDGrammar* XMLGrammarPool::createDTDGrammar (  )  [pure virtual]

    createDTDGrammar

    virtual SchemaGrammar* XMLGrammarPool::createSchemaGrammar (  )  [pure virtual]

    createSchemaGrammar

    virtual XMLDTDDescription* XMLGrammarPool::createDTDDescription ( const XMLCh *const   systemId  )  [pure virtual]

    createDTDDescription

    virtual XMLSchemaDescription* XMLGrammarPool::createSchemaDescription ( const XMLCh *const   targetNamespace  )  [pure virtual]

    createSchemaDescription

    virtual XSModel* XMLGrammarPool::getXSModel ( bool &  XSModelWasChanged  )  [pure virtual]

    MemoryManager* XMLGrammarPool::getMemoryManager (  ) 

    getMemoryManager

    virtual XMLStringPool* XMLGrammarPool::getURIStringPool (  )  [pure virtual]

    Return an XMLStringPool for use by validation routines.

    Implementations should not create a string pool on each call to this method, but should maintain one string pool for all grammars for which this pool is responsible.

    virtual void XMLGrammarPool::serializeGrammars ( BinOutputStream const  )  [pure virtual]

    serialization and deserialization support

    virtual void XMLGrammarPool::deserializeGrammars ( BinInputStream const  )  [pure virtual]

    void XMLGrammarPool::setIgnoreSerializedAnnotations ( const bool  flag  ) 

    bool XMLGrammarPool::getIgnoreSerializedAnnotations (  )  const


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXSAttributeDeclaration-members.html0000644000175000017500000002343511363620006025432 0ustar borisboris Xerces-C++: Member List

    XSAttributeDeclaration Member List

    This is the complete list of members for XSAttributeDeclaration, including all inherited members.

    fAnnotationXSAttributeDeclaration [protected]
    fAttDefXSAttributeDeclaration [protected]
    fComponentTypeXSObject [protected]
    fEnclosingCTDefinitionXSAttributeDeclaration [protected]
    fIdXSObject [protected]
    fMemoryManagerXSObject [protected]
    fScopeXSAttributeDeclaration [protected]
    fTypeDefinitionXSAttributeDeclaration [protected]
    fXSModelXSObject [protected]
    getAnnotation() const XSAttributeDeclaration
    getConstraintType() const XSAttributeDeclaration
    getConstraintValue()XSAttributeDeclaration
    getEnclosingCTDefinition()XSAttributeDeclaration
    getId() const XSObject [virtual]
    getName() const XSAttributeDeclaration [virtual]
    getNamespace()XSAttributeDeclaration [virtual]
    getNamespaceItem()XSAttributeDeclaration [virtual]
    getRequired() const XSAttributeDeclaration
    getScope() const XSAttributeDeclaration
    getType() const XSObject
    getTypeDefinition() const XSAttributeDeclaration
    operator delete(void *p)XMemory
    operator delete(void *p, MemoryManager *memMgr)XMemory
    operator delete(void *p, void *ptr)XMemory
    operator new(size_t size)XMemory
    operator new(size_t size, MemoryManager *memMgr)XMemory
    operator new(size_t size, void *ptr)XMemory
    setId(XMLSize_t id)XSObject
    XMemory()XMemory [protected]
    XSAttributeDeclaration(SchemaAttDef *const attDef, XSSimpleTypeDefinition *const typeDef, XSAnnotation *const annot, XSModel *const xsModel, XSConstants::SCOPE scope, XSComplexTypeDefinition *enclosingCTDefinition, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSAttributeDeclaration
    XSObject(XSConstants::COMPONENT_TYPE compType, XSModel *const xsModel, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)XSObject
    XSObjectFactory classXSAttributeDeclaration [friend]
    ~XSAttributeDeclaration()XSAttributeDeclaration
    ~XSObject()XSObject [virtual]


    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMImplementationList_8hpp-source.html0000644000175000017500000002341211363620004024777 0ustar borisboris Xerces-C++: DOMImplementationList.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classSAX2XMLReader.html0000644000175000017500000031532511363620006021641 0ustar borisboris Xerces-C++: SAX2XMLReader Class Reference

    SAX2XMLReader Class Reference

    Inheritance diagram for SAX2XMLReader:

    SAX2XMLFilter

    List of all members.

    Public Types

    Public constants
    enum  ValSchemes { Val_Never, Val_Always, Val_Auto }
     ValScheme enum used in setValidationScheme Val_Never: Do not report validation errors. More...

    Public Member Functions

    Constructors and Destructor
     SAX2XMLReader ()
     The default constructor.
    virtual ~SAX2XMLReader ()
     The destructor.
    Implementation of SAX 2.0 XMLReader interface's.
    virtual ContentHandlergetContentHandler () const =0
     This method returns the installed content handler.
    virtual DTDHandlergetDTDHandler () const =0
     This method returns the installed DTD handler.
    virtual EntityResolvergetEntityResolver () const =0
     This method returns the installed entity resolver.
    virtual ErrorHandlergetErrorHandler () const =0
     This method returns the installed error handler.
    virtual bool getFeature (const XMLCh *const name) const =0
     Query the current state of any feature in a SAX2 XMLReader.
    virtual void * getProperty (const XMLCh *const name) const =0
     Query the current value of a property in a SAX2 XMLReader.
    virtual void setContentHandler (ContentHandler *const handler)=0
     Allow an application to register a document event handler.
    virtual void setDTDHandler (DTDHandler *const handler)=0
     Allow an application to register a DTD event handler.
    virtual void setEntityResolver (EntityResolver *const resolver)=0
     Allow an application to register a custom entity resolver.
    virtual void setErrorHandler (ErrorHandler *const handler)=0
     Allow an application to register an error event handler.
    virtual void setFeature (const XMLCh *const name, const bool value)=0
     Set the state of any feature in a SAX2 XMLReader.
    virtual void setProperty (const XMLCh *const name, void *value)=0
     Set the value of any property in a SAX2 XMLReader.
    virtual void parse (const InputSource &source)=0
     Parse an XML document.
    virtual void parse (const XMLCh *const systemId)=0
     Parse an XML document from a system identifier (URI).
    virtual void parse (const char *const systemId)=0
     Parse an XML document from a system identifier (URI).
    SAX 2.0-ext
    virtual DeclHandlergetDeclarationHandler () const =0
     This method returns the installed declaration handler.
    virtual LexicalHandlergetLexicalHandler () const =0
     This method returns the installed lexical handler.
    virtual void setDeclarationHandler (DeclHandler *const handler)=0
     Allow an application to register a declaration event handler.
    virtual void setLexicalHandler (LexicalHandler *const handler)=0
     Allow an application to register a lexical event handler.
    Getter Methods (Xerces-C specific)
    virtual XMLValidatorgetValidator () const =0
     This method is used to get the current validator.
    virtual XMLSize_t getErrorCount () const =0
     Get error count from the last parse operation.
    virtual bool getExitOnFirstFatalError () const =0
     This method returns the state of the parser's exit-on-First-Fatal-Error flag.
    virtual bool getValidationConstraintFatal () const =0
     This method returns the state of the parser's validation-constraint-fatal flag.
    virtual Grammar * getGrammar (const XMLCh *const nameSpaceKey)=0
     Retrieve the grammar that is associated with the specified namespace key.
    virtual Grammar * getRootGrammar ()=0
     Retrieve the grammar where the root element is declared.
    virtual const XMLChgetURIText (unsigned int uriId) const =0
     Returns the string corresponding to a URI id from the URI string pool.
    virtual XMLFilePos getSrcOffset () const =0
     Returns the current src offset within the input source.
    Setter Methods (Xerces-C specific)
    virtual void setValidator (XMLValidator *valueToAdopt)=0
     This method is used to set a validator.
    virtual void setExitOnFirstFatalError (const bool newState)=0
     This method allows users to set the parser's behaviour when it encounters the first fatal error.
    virtual void setValidationConstraintFatal (const bool newState)=0
     This method allows users to set the parser's behaviour when it encounters a validation constraint error.
    Progressive scan methods
    virtual bool parseFirst (const XMLCh *const systemId, XMLPScanToken &toFill)=0
     Begin a progressive parse operation.
    virtual bool parseFirst (const char *const systemId, XMLPScanToken &toFill)=0
     Begin a progressive parse operation.
    virtual bool parseFirst (const InputSource &source, XMLPScanToken &toFill)=0
     Begin a progressive parse operation.
    virtual bool parseNext (XMLPScanToken &token)=0
     Continue a progressive parse operation.
    virtual void parseReset (XMLPScanToken &token)=0
     Reset the parser after a progressive parse.
    Grammar preparsing interface's.
    virtual Grammar * loadGrammar (const InputSource &source, const Grammar::GrammarType grammarType, const bool toCache=false)=0
     Preparse schema grammar (XML Schema, DTD, etc.
    virtual Grammar * loadGrammar (const XMLCh *const systemId, const Grammar::GrammarType grammarType, const bool toCache=false)=0
     Preparse schema grammar (XML Schema, DTD, etc.
    virtual Grammar * loadGrammar (const char *const systemId, const Grammar::GrammarType grammarType, const bool toCache=false)=0
     Preparse schema grammar (XML Schema, DTD, etc.
    virtual void resetCachedGrammarPool ()=0
     Clear the cached grammar pool.
    virtual void setInputBufferSize (const XMLSize_t bufferSize)
     Set maximum input buffer size.
    Advanced document handler list maintenance methods
    virtual void installAdvDocHandler (XMLDocumentHandler *const toInstall)=0
     This method installs the specified 'advanced' document callback handler, thereby allowing the user to customize the processing, if they choose to do so.
    virtual bool removeAdvDocHandler (XMLDocumentHandler *const toRemove)=0
     This method removes the 'advanced' document handler callback from the underlying parser scanner.


    Member Enumeration Documentation

    ValScheme enum used in setValidationScheme Val_Never: Do not report validation errors.

    Val_Always: The parser will always report validation errors. Val_Auto: The parser will report validation errors only if a grammar is specified.

    The schemes map to these feature values: Val_Never: parser->setFeature(XMLUni::fgSAX2CoreValidation, false);

    Val_Always: parser->setFeature(XMLUni::fgSAX2CoreValidation, true); parser->setFeature(XMLUni::fgXercesDynamic, false);

    Val_Auto: parser->setFeature(XMLUni::fgSAX2CoreValidation, true); parser->setFeature(XMLUni::fgXercesDynamic, true);

    See also:
    setFeature
    Enumerator:
    Val_Never 
    Val_Always 
    Val_Auto 


    Constructor & Destructor Documentation

    SAX2XMLReader::SAX2XMLReader (  ) 

    The default constructor.

    virtual SAX2XMLReader::~SAX2XMLReader (  )  [virtual]

    The destructor.


    Member Function Documentation

    virtual ContentHandler* SAX2XMLReader::getContentHandler (  )  const [pure virtual]

    This method returns the installed content handler.

    Returns:
    A pointer to the installed content handler object.

    virtual DTDHandler* SAX2XMLReader::getDTDHandler (  )  const [pure virtual]

    This method returns the installed DTD handler.

    Returns:
    A pointer to the installed DTD handler object.

    virtual EntityResolver* SAX2XMLReader::getEntityResolver (  )  const [pure virtual]

    This method returns the installed entity resolver.

    Returns:
    A pointer to the installed entity resolver object.

    virtual ErrorHandler* SAX2XMLReader::getErrorHandler (  )  const [pure virtual]

    This method returns the installed error handler.

    Returns:
    A pointer to the installed error handler object.

    virtual bool SAX2XMLReader::getFeature ( const XMLCh *const   name  )  const [pure virtual]

    Query the current state of any feature in a SAX2 XMLReader.

    Parameters:
    name The unique identifier (URI) of the feature being set.
    Returns:
    The current state of the feature.
    Exceptions:
    SAXNotRecognizedException If the requested feature is not known.

    virtual void* SAX2XMLReader::getProperty ( const XMLCh *const   name  )  const [pure virtual]

    Query the current value of a property in a SAX2 XMLReader.

    The parser owns the returned pointer. The memory allocated for the returned pointer will be destroyed when the parser is deleted.

    To ensure accessibility of the returned information after the parser is deleted, callers need to copy and store the returned information somewhere else; otherwise you may get unexpected result. Since the returned pointer is a generic void pointer, see the SAX2 Programming Guide to learn exactly what type of property value each property returns for replication.

    Parameters:
    name The unique identifier (URI) of the property being set.
    Returns:
    The current value of the property. The pointer spans the same life-time as the parser. A null pointer is returned if nothing was specified externally.
    Exceptions:
    SAXNotRecognizedException If the requested property is not known.

    virtual void SAX2XMLReader::setContentHandler ( ContentHandler *const   handler  )  [pure virtual]

    Allow an application to register a document event handler.

    If the application does not register a document handler, all document events reported by the SAX parser will be silently ignored (this is the default behaviour implemented by HandlerBase).

    Applications may register a new or different handler in the middle of a parse, and the SAX parser must begin using the new handler immediately.

    Parameters:
    handler The document handler.
    See also:
    ContentHandler::ContentHandler

    HandlerBase::HandlerBase

    virtual void SAX2XMLReader::setDTDHandler ( DTDHandler *const   handler  )  [pure virtual]

    Allow an application to register a DTD event handler.

    If the application does not register a DTD handler, all DTD events reported by the SAX parser will be silently ignored (this is the default behaviour implemented by HandlerBase).

    Applications may register a new or different handler in the middle of a parse, and the SAX parser must begin using the new handler immediately.

    Parameters:
    handler The DTD handler.
    See also:
    DTDHandler::DTDHandler

    HandlerBase::HandlerBase

    virtual void SAX2XMLReader::setEntityResolver ( EntityResolver *const   resolver  )  [pure virtual]

    Allow an application to register a custom entity resolver.

    If the application does not register an entity resolver, the SAX parser will resolve system identifiers and open connections to entities itself (this is the default behaviour implemented in DefaultHandler).

    Applications may register a new or different entity resolver in the middle of a parse, and the SAX parser must begin using the new resolver immediately.

    Parameters:
    resolver The object for resolving entities.
    See also:
    EntityResolver::EntityResolver

    DefaultHandler::DefaultHandler

    virtual void SAX2XMLReader::setErrorHandler ( ErrorHandler *const   handler  )  [pure virtual]

    Allow an application to register an error event handler.

    If the application does not register an error event handler, all error events reported by the SAX parser will be silently ignored, except for fatalError, which will throw a SAXException (this is the default behaviour implemented by HandlerBase).

    Applications may register a new or different handler in the middle of a parse, and the SAX parser must begin using the new handler immediately.

    Parameters:
    handler The error handler.
    See also:
    ErrorHandler::ErrorHandler

    SAXException::SAXException

    HandlerBase::HandlerBase

    virtual void SAX2XMLReader::setFeature ( const XMLCh *const   name,
    const bool  value 
    ) [pure virtual]

    Set the state of any feature in a SAX2 XMLReader.

    Supported features in SAX2 for xerces-c are:
    (See the SAX2 Programming Guide for detail description).


    http://xml.org/sax/features/validation (default: true)
    http://xml.org/sax/features/namespaces (default: true)
    http://xml.org/sax/features/namespace-prefixes (default: false)
    http://apache.org/xml/features/validation/dynamic (default: false)
    http://apache.org/xml/features/validation/reuse-grammar (default: false)
    http://apache.org/xml/features/validation/schema (default: true)
    http://apache.org/xml/features/validation/schema-full-checking (default: false)
    http://apache.org/xml/features/validating/load-schema (default: true)
    http://apache.org/xml/features/nonvalidating/load-external-dtd (default: true)
    http://apache.org/xml/features/continue-after-fatal-error (default: false)
    http://apache.org/xml/features/validation-error-as-fatal (default: false)

    Parameters:
    name The unique identifier (URI) of the feature.
    value The requested state of the feature (true or false).
    Exceptions:
    SAXNotRecognizedException If the requested feature is not known.
    SAXNotSupportedException Feature modification is not supported during parse

    virtual void SAX2XMLReader::setProperty ( const XMLCh *const   name,
    void *  value 
    ) [pure virtual]

    Set the value of any property in a SAX2 XMLReader.

    Supported properties in SAX2 for xerces-c are:
    (See the SAX2 Programming Guide for detail description).


    http://apache.org/xml/properties/schema/external-schemaLocation
    http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation.

    It takes a void pointer as the property value. Application is required to initialize this void pointer to a correct type. See the SAX2 Programming Guide to learn exactly what type of property value each property expects for processing. Passing a void pointer that was initialized with a wrong type will lead to unexpected result. If the same property is set more than once, the last one takes effect.

    Parameters:
    name The unique identifier (URI) of the property being set.
    value The requested value for the property. See the SAX2 Programming Guide to learn exactly what type of property value each property expects for processing. Passing a void pointer that was initialized with a wrong type will lead to unexpected result.
    Exceptions:
    SAXNotRecognizedException If the requested property is not known.
    SAXNotSupportedException Property modification is not supported during parse

    virtual void SAX2XMLReader::parse ( const InputSource source  )  [pure virtual]

    Parse an XML document.

    The application can use this method to instruct the SAX parser to begin parsing an XML document from any valid input source (a character stream, a byte stream, or a URI).

    Applications may not invoke this method while a parse is in progress (they should create a new Parser instead for each additional XML document). Once a parse is complete, an application may reuse the same Parser object, possibly with a different input source.

    Parameters:
    source The input source for the top-level of the XML document.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    XMLException An exception from the parser or client handler code.
    See also:
    InputSource::InputSource

    setEntityResolver

    setDTDHandler

    setContentHandler

    setErrorHandler

    virtual void SAX2XMLReader::parse ( const XMLCh *const   systemId  )  [pure virtual]

    Parse an XML document from a system identifier (URI).

    This method is a shortcut for the common case of reading a document from a system identifier. It is the exact equivalent of the following:

    parse(new URLInputSource(systemId));

    If the system identifier is a URL, it must be fully resolved by the application before it is passed to the parser.

    Parameters:
    systemId The system identifier (URI).
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    XMLException An exception from the parser or client handler code.
    See also:
    parse(const InputSource&)

    virtual void SAX2XMLReader::parse ( const char *const   systemId  )  [pure virtual]

    Parse an XML document from a system identifier (URI).

    This method is a shortcut for the common case of reading a document from a system identifier. It is the exact equivalent of the following:

    parse(new URLInputSource(systemId));

    If the system identifier is a URL, it must be fully resolved by the application before it is passed to the parser.

    Parameters:
    systemId The system identifier (URI).
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    XMLException An exception from the parser or client handler code.
    See also:
    parse(const InputSource&)

    virtual DeclHandler* SAX2XMLReader::getDeclarationHandler (  )  const [pure virtual]

    This method returns the installed declaration handler.

    Returns:
    A pointer to the installed declaration handler object.

    virtual LexicalHandler* SAX2XMLReader::getLexicalHandler (  )  const [pure virtual]

    This method returns the installed lexical handler.

    Returns:
    A pointer to the installed lexical handler object.

    virtual void SAX2XMLReader::setDeclarationHandler ( DeclHandler *const   handler  )  [pure virtual]

    Allow an application to register a declaration event handler.

    If the application does not register a declaration handler, all events reported by the SAX parser will be silently ignored. (this is the default behaviour implemented by DefaultHandler).

    Applications may register a new or different handler in the middle of a parse, and the SAX parser must begin using the new handler immediately.

    Parameters:
    handler The DTD declaration handler.
    See also:
    DeclHandler::DeclHandler

    SAXException::SAXException

    DefaultHandler::DefaultHandler

    virtual void SAX2XMLReader::setLexicalHandler ( LexicalHandler *const   handler  )  [pure virtual]

    Allow an application to register a lexical event handler.

    If the application does not register a lexical handler, all events reported by the SAX parser will be silently ignored. (this is the default behaviour implemented by HandlerBase).

    Applications may register a new or different handler in the middle of a parse, and the SAX parser must begin using the new handler immediately.

    Parameters:
    handler The error handler.
    See also:
    LexicalHandler::LexicalHandler

    SAXException::SAXException

    HandlerBase::HandlerBase

    virtual XMLValidator* SAX2XMLReader::getValidator (  )  const [pure virtual]

    This method is used to get the current validator.

    SAX2XMLReader assumes responsibility for the validator. It will be deleted when the XMLReader is destroyed.

    Returns:
    A pointer to the validator. An application should not deleted the object returned.

    virtual XMLSize_t SAX2XMLReader::getErrorCount (  )  const [pure virtual]

    Get error count from the last parse operation.

    This method returns the error count from the last parse operation. Note that this count is actually stored in the scanner, so this method simply returns what the scanner reports.

    Returns:
    number of errors encountered during the latest parse operation.

    virtual bool SAX2XMLReader::getExitOnFirstFatalError (  )  const [pure virtual]

    This method returns the state of the parser's exit-on-First-Fatal-Error flag.

    Or you can query the feature "http://apache.org/xml/features/continue-after-fatal-error" which indicates the opposite state.

    Returns:
    true, if the parser is currently configured to exit on the first fatal error, false otherwise.
    See also:
    setExitOnFirstFatalError

    getFeature

    virtual bool SAX2XMLReader::getValidationConstraintFatal (  )  const [pure virtual]

    This method returns the state of the parser's validation-constraint-fatal flag.

    Or you can query the feature "http://apache.org/xml/features/validation-error-as-fatal" which means the same thing.

    Returns:
    true, if the parser is currently configured to set validation constraint errors as fatal, false otherwise.
    See also:
    setValidationConstraintFatal

    getFeature

    virtual Grammar* SAX2XMLReader::getGrammar ( const XMLCh *const   nameSpaceKey  )  [pure virtual]

    Retrieve the grammar that is associated with the specified namespace key.

    Parameters:
    nameSpaceKey Namespace key
    Returns:
    Grammar associated with the Namespace key.

    virtual Grammar* SAX2XMLReader::getRootGrammar (  )  [pure virtual]

    Retrieve the grammar where the root element is declared.

    Returns:
    Grammar where root element declared

    virtual const XMLCh* SAX2XMLReader::getURIText ( unsigned int  uriId  )  const [pure virtual]

    Returns the string corresponding to a URI id from the URI string pool.

    Parameters:
    uriId id of the string in the URI string pool.
    Returns:
    URI string corresponding to the URI id.

    virtual XMLFilePos SAX2XMLReader::getSrcOffset (  )  const [pure virtual]

    Returns the current src offset within the input source.

    To be used only while parsing is in progress.

    Returns:
    offset within the input source

    virtual void SAX2XMLReader::setValidator ( XMLValidator valueToAdopt  )  [pure virtual]

    This method is used to set a validator.

    SAX2XMLReader assumes responsibility for the validator. It will be deleted when the XMLReader is destroyed.

    Parameters:
    valueToAdopt A pointer to the validator that the reader should use.

    virtual void SAX2XMLReader::setExitOnFirstFatalError ( const bool  newState  )  [pure virtual]

    This method allows users to set the parser's behaviour when it encounters the first fatal error.

    If set to true, the parser will exit at the first fatal error. If false, then it will report the error and continue processing.

    The default value is 'true' and the parser exits on the first fatal error.

    Or you can set the feature "http://apache.org/xml/features/continue-after-fatal-error" which has the opposite behaviour.

    If both the feature above and this function are used, the latter takes effect.

    Parameters:
    newState The value specifying whether the parser should continue or exit when it encounters the first fatal error.
    See also:
    getExitOnFirstFatalError

    setFeature

    virtual void SAX2XMLReader::setValidationConstraintFatal ( const bool  newState  )  [pure virtual]

    This method allows users to set the parser's behaviour when it encounters a validation constraint error.

    If set to true, and the the parser will treat validation error as fatal and will exit depends on the state of "getExitOnFirstFatalError". If false, then it will report the error and continue processing.

    Note: setting this true does not mean the validation error will be printed with the word "Fatal Error". It is still printed as "Error", but the parser will exit if "setExitOnFirstFatalError" is set to true.

    The default value is 'false'.

    Or you can set the feature "http://apache.org/xml/features/validation-error-as-fatal" which means the same thing.

    If both the feature above and this function are used, the latter takes effect.

    Parameters:
    newState If true, the parser will exit if "setExitOnFirstFatalError" is set to true.
    See also:
    getValidationConstraintFatal

    setExitOnFirstFatalError

    setFeature

    virtual bool SAX2XMLReader::parseFirst ( const XMLCh *const   systemId,
    XMLPScanToken &  toFill 
    ) [pure virtual]

    Begin a progressive parse operation.

    This method is used to start a progressive parse on a XML file. To continue parsing, subsequent calls must be to the parseNext method.

    It scans through the prolog and returns a token to be used on subsequent scanNext() calls. If the return value is true, then the token is legal and ready for further use. If it returns false, then the scan of the prolog failed and the token is not going to work on subsequent scanNext() calls.

    Parameters:
    systemId A pointer to a Unicode string representing the path to the XML file to be parsed.
    toFill A token maintaing state information to maintain internal consistency between invocation of 'parseNext' calls.
    Returns:
    'true', if successful in parsing the prolog. It indicates the user can go ahead with parsing the rest of the file. It returns 'false' to indicate that the parser could parse the prolog (which means the token will not be valid.)
    See also:
    parseNext

    parseFirst(char*,...)

    parseFirst(InputSource&,...)

    virtual bool SAX2XMLReader::parseFirst ( const char *const   systemId,
    XMLPScanToken &  toFill 
    ) [pure virtual]

    Begin a progressive parse operation.

    This method is used to start a progressive parse on a XML file. To continue parsing, subsequent calls must be to the parseNext method.

    It scans through the prolog and returns a token to be used on subsequent scanNext() calls. If the return value is true, then the token is legal and ready for further use. If it returns false, then the scan of the prolog failed and the token is not going to work on subsequent scanNext() calls.

    Parameters:
    systemId A pointer to a regular native string representing the path to the XML file to be parsed.
    toFill A token maintaing state information to maintain internal consistency between invocation of 'parseNext' calls.
    Returns:
    'true', if successful in parsing the prolog. It indicates the user can go ahead with parsing the rest of the file. It returns 'false' to indicate that the parser could not parse the prolog.
    See also:
    parseNext

    parseFirst(XMLCh*,...)

    parseFirst(InputSource&,...)

    virtual bool SAX2XMLReader::parseFirst ( const InputSource source,
    XMLPScanToken &  toFill 
    ) [pure virtual]

    Begin a progressive parse operation.

    This method is used to start a progressive parse on a XML file. To continue parsing, subsequent calls must be to the parseNext method.

    It scans through the prolog and returns a token to be used on subsequent scanNext() calls. If the return value is true, then the token is legal and ready for further use. If it returns false, then the scan of the prolog failed and the token is not going to work on subsequent scanNext() calls.

    Parameters:
    source A const reference to the InputSource object which points to the XML file to be parsed.
    toFill A token maintaing state information to maintain internal consistency between invocation of 'parseNext' calls.
    Returns:
    'true', if successful in parsing the prolog. It indicates the user can go ahead with parsing the rest of the file. It returns 'false' to indicate that the parser could not parse the prolog.
    See also:
    parseNext

    parseFirst(XMLCh*,...)

    parseFirst(char*,...)

    virtual bool SAX2XMLReader::parseNext ( XMLPScanToken &  token  )  [pure virtual]

    Continue a progressive parse operation.

    This method is used to continue with progressive parsing of XML files started by a call to 'parseFirst' method.

    It parses the XML file and stops as soon as it comes across a XML token (as defined in the XML specification). Relevant callback handlers are invoked as required by the SAX specification.

    Parameters:
    token A token maintaing state information to maintain internal consistency between invocation of 'parseNext' calls.
    Returns:
    'true', if successful in parsing the next XML token. It indicates the user can go ahead with parsing the rest of the file. It returns 'false' to indicate that the parser could not find next token as per the XML specification production rule.
    See also:
    parseFirst(XMLCh*,...)

    parseFirst(char*,...)

    parseFirst(InputSource&,...)

    virtual void SAX2XMLReader::parseReset ( XMLPScanToken &  token  )  [pure virtual]

    Reset the parser after a progressive parse.

    If a progressive parse loop exits before the end of the document is reached, the parser has no way of knowing this. So it will leave open any files or sockets or memory buffers that were in use at the time that the parse loop exited.

    The next parse operation will cause these open files and such to be closed, but the next parse operation might occur at some unknown future point. To avoid this problem, you should reset the parser if you exit the loop early.

    If you exited because of an error, then this cleanup will be done for you. Its only when you exit the file prematurely of your own accord, because you've found what you wanted in the file most likely.

    Parameters:
    token A token maintaing state information to maintain internal consistency between invocation of 'parseNext' calls.

    virtual Grammar* SAX2XMLReader::loadGrammar ( const InputSource source,
    const Grammar::GrammarType  grammarType,
    const bool  toCache = false 
    ) [pure virtual]

    Preparse schema grammar (XML Schema, DTD, etc.

    ) via an input source object.

    This method invokes the preparsing process on a schema grammar XML file specified by the SAX InputSource parameter. If the 'toCache' flag is enabled, the parser will cache the grammars for re-use. If a grammar key is found in the pool, no caching of any grammar will take place.

    Parameters:
    source A const reference to the SAX InputSource object which points to the schema grammar file to be preparsed.
    grammarType The grammar type (Schema or DTD).
    toCache If true, we cache the preparsed grammar, otherwise, no caching. Default is false.
    Returns:
    The preparsed schema grammar object (SchemaGrammar or DTDGrammar). That grammar object is owned by the parser.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    XMLException An exception from the parser or client handler code.
    DOMException A DOM exception as per DOM spec.
    See also:
    InputSource::InputSource

    virtual Grammar* SAX2XMLReader::loadGrammar ( const XMLCh *const   systemId,
    const Grammar::GrammarType  grammarType,
    const bool  toCache = false 
    ) [pure virtual]

    Preparse schema grammar (XML Schema, DTD, etc.

    ) via a file path or URL

    This method invokes the preparsing process on a schema grammar XML file specified by the file path parameter. If the 'toCache' flag is enabled, the parser will cache the grammars for re-use. If a grammar key is found in the pool, no caching of any grammar will take place.

    Parameters:
    systemId A const XMLCh pointer to the Unicode string which contains the path to the XML grammar file to be preparsed.
    grammarType The grammar type (Schema or DTD).
    toCache If true, we cache the preparsed grammar, otherwise, no caching. Default is false.
    Returns:
    The preparsed schema grammar object (SchemaGrammar or DTDGrammar). That grammar object is owned by the parser.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    XMLException An exception from the parser or client handler code.
    DOMException A DOM exception as per DOM spec.

    virtual Grammar* SAX2XMLReader::loadGrammar ( const char *const   systemId,
    const Grammar::GrammarType  grammarType,
    const bool  toCache = false 
    ) [pure virtual]

    Preparse schema grammar (XML Schema, DTD, etc.

    ) via a file path or URL

    This method invokes the preparsing process on a schema grammar XML file specified by the file path parameter. If the 'toCache' flag is enabled, the parser will cache the grammars for re-use. If a grammar key is found in the pool, no caching of any grammar will take place.

    Parameters:
    systemId A const char pointer to a native string which contains the path to the XML grammar file to be preparsed.
    grammarType The grammar type (Schema or DTD).
    toCache If true, we cache the preparsed grammar, otherwise, no caching. Default is false.
    Returns:
    The preparsed schema grammar object (SchemaGrammar or DTDGrammar). That grammar object is owned by the parser.
    Exceptions:
    SAXException Any SAX exception, possibly wrapping another exception.
    XMLException An exception from the parser or client handler code.
    DOMException A DOM exception as per DOM spec.

    virtual void SAX2XMLReader::resetCachedGrammarPool (  )  [pure virtual]

    Clear the cached grammar pool.

    void SAX2XMLReader::setInputBufferSize ( const XMLSize_t  bufferSize  )  [virtual]

    Set maximum input buffer size.

    This method allows users to limit the size of buffers used in parsing XML character data. The effect of setting this size is to limit the size of a ContentHandler::characters() call.

    The parser's default input buffer size is 1 megabyte.

    Parameters:
    bufferSize The maximum input buffer size

    virtual void SAX2XMLReader::installAdvDocHandler ( XMLDocumentHandler *const   toInstall  )  [pure virtual]

    This method installs the specified 'advanced' document callback handler, thereby allowing the user to customize the processing, if they choose to do so.

    Any number of advanced callback handlers maybe installed.

    The methods in the advanced callback interface represent Xerces-C extensions. There is no specification for this interface.

    Parameters:
    toInstall A pointer to the users advanced callback handler.
    See also:
    removeAdvDocHandler

    virtual bool SAX2XMLReader::removeAdvDocHandler ( XMLDocumentHandler *const   toRemove  )  [pure virtual]

    This method removes the 'advanced' document handler callback from the underlying parser scanner.

    If no handler is installed, advanced callbacks are not invoked by the scanner.

    Parameters:
    toRemove A pointer to the advanced callback handler which should be removed.
    See also:
    installAdvDocHandler


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/globals_defs_0x67.html0000644000175000017500000000634711363620007021604 0ustar borisboris Xerces-C++: Class Members
     

    - g -


    Generated on Wed Apr 21 17:55:51 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMText.html0000644000175000017500000005162111363620005020677 0ustar borisboris Xerces-C++: DOMText Class Reference

    DOMText Class Reference

    The DOMText interface inherits from DOMCharacterData and represents the textual content (termed character data in XML) of an DOMElement or DOMAttr. More...

    Inheritance diagram for DOMText:

    DOMCharacterData DOMNode DOMCDATASection

    List of all members.

    Public Member Functions

    Destructor
    virtual ~DOMText ()
     Destructor.
    Functions introduced in DOM Level 1
    virtual DOMTextsplitText (XMLSize_t offset)=0
     Breaks this node into two nodes at the specified offset, keeping both in the tree as siblings.
    Functions introduced in DOM Level 3
    virtual bool getIsElementContentWhitespace () const =0
     Returns whether this text node contains element content whitespace, often abusively called "ignorable whitespace".
    virtual const XMLChgetWholeText () const =0
     Returns all text of DOMText nodes logically-adjacent text nodes to this node, concatenated in document order.
    virtual DOMTextreplaceWholeText (const XMLCh *content)=0
     Substitutes the a specified text for the text of the current node and all logically-adjacent text nodes.
    Non-standard extension
    virtual bool isIgnorableWhitespace () const =0
     Non-standard extension.

    Protected Member Functions

    Hidden constructors
     DOMText ()
     DOMText (const DOMText &other)


    Detailed Description

    The DOMText interface inherits from DOMCharacterData and represents the textual content (termed character data in XML) of an DOMElement or DOMAttr.

    If there is no markup inside an element's content, the text is contained in a single object implementing the DOMText interface that is the only child of the element. If there is markup, it is parsed into the information items (elements, comments, etc.) and DOMText nodes that form the list of children of the element.

    When a document is first made available via the DOM, there is only one DOMText node for each block of text. Users may create adjacent DOMText nodes that represent the contents of a given element without any intervening markup, but should be aware that there is no way to represent the separations between these nodes in XML or HTML, so they will not (in general) persist between DOM editing sessions. The normalize() method on DOMNode merges any such adjacent DOMText objects into a single node for each block of text.

    See also the Document Object Model (DOM) Level 2 Core Specification.


    Constructor & Destructor Documentation

    DOMText::DOMText (  )  [protected]

    DOMText::DOMText ( const DOMText other  )  [protected]

    virtual DOMText::~DOMText (  )  [virtual]

    Destructor.


    Member Function Documentation

    virtual DOMText* DOMText::splitText ( XMLSize_t  offset  )  [pure virtual]

    Breaks this node into two nodes at the specified offset, keeping both in the tree as siblings.

    After being split, this node will contain all the content up to the offset point. A new node of the same type, which contains all the content at and after the offset point, is returned. If the original node had a parent node, the new node is inserted as the next sibling of the original node. When the offset is equal to the length of this node, the new node has no data.

    Parameters:
    offset The 16-bit unit offset at which to split, starting from 0.
    Returns:
    The new node, of the same type as this node.
    Exceptions:
    DOMException INDEX_SIZE_ERR: Raised if the specified offset is negative or greater than the number of 16-bit units in data.
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
    Since:
    DOM Level 1

    virtual bool DOMText::getIsElementContentWhitespace (  )  const [pure virtual]

    Returns whether this text node contains element content whitespace, often abusively called "ignorable whitespace".

    The text node is determined to contain whitespace in element content during the load of the document or if validation occurs while using DOMDocument::normalizeDocument().

    Since:
    DOM Level 3

    virtual const XMLCh* DOMText::getWholeText (  )  const [pure virtual]

    Returns all text of DOMText nodes logically-adjacent text nodes to this node, concatenated in document order.

    Since:
    DOM Level 3

    virtual DOMText* DOMText::replaceWholeText ( const XMLCh content  )  [pure virtual]

    Substitutes the a specified text for the text of the current node and all logically-adjacent text nodes.


    This method returns the node in the hierarchy which received the replacement text, which is null if the text was empty or is the current node if the current node is not read-only or otherwise is a new node of the same type as the current node inserted at the site of the replacement. All logically-adjacent text nodes are removed including the current node unless it was the recipient of the replacement text.
    Where the nodes to be removed are read-only descendants of an DOMEntityReference, the DOMEntityReference must be removed instead of the read-only nodes. If any DOMEntityReference to be removed has descendants that are not DOMEntityReference, DOMText, or DOMCDATASection nodes, the replaceWholeText method must fail before performing any modification of the document, raising a DOMException with the code NO_MODIFICATION_ALLOWED_ERR.

    Parameters:
    content The content of the replacing DOMText node.
    Returns:
    The DOMText node created with the specified content.
    Exceptions:
    DOMException NO_MODIFICATION_ALLOWED_ERR: Raised if one of the DOMText nodes being replaced is readonly.
    Since:
    DOM Level 3

    virtual bool DOMText::isIgnorableWhitespace (  )  const [pure virtual]

    Non-standard extension.

    Return true if this node contains ignorable whitespaces only.

    Returns:
    True if this node contains ignorable whitespaces only.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/XercesDefs_8hpp-source.html0000644000175000017500000005316011363620004022654 0ustar borisboris Xerces-C++: XercesDefs.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DTDHandler_8hpp.html0000644000175000017500000000457611363620005021244 0ustar borisboris Xerces-C++: DTDHandler.hpp File Reference

    DTDHandler.hpp File Reference

    Go to the source code of this file.

    Classes

    class  DTDHandler
     Receive notification of basic DTD-related events. More...

    Defines

    #define XERCESC_INCLUDE_GUARD_DTDHANDLER_HPP


    Define Documentation

    #define XERCESC_INCLUDE_GUARD_DTDHANDLER_HPP


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLException.html0000644000175000017500000005274611363620006021744 0ustar borisboris Xerces-C++: XMLException Class Reference

    XMLException Class Reference

    Inheritance diagram for XMLException:

    XMemory

    List of all members.

    Public Member Functions

    virtual ~XMLException ()
    virtual const XMLChgetType () const =0
    XMLExcepts::Codes getCode () const
    const XMLChgetMessage () const
    const char * getSrcFile () const
    XMLFileLoc getSrcLine () const
    XMLErrorReporter::ErrTypes getErrorType () const
    void setPosition (const char *const file, const XMLFileLoc line)
     XMLException ()
     XMLException (const char *const srcFile, const XMLFileLoc srcLine, MemoryManager *const memoryManager=0)
     XMLException (const XMLException &toCopy)
    XMLExceptionoperator= (const XMLException &toAssign)

    Protected Member Functions

    void loadExceptText (const XMLExcepts::Codes toLoad)
    void loadExceptText (const XMLExcepts::Codes toLoad, const XMLCh *const text1, const XMLCh *const text2=0, const XMLCh *const text3=0, const XMLCh *const text4=0)
    void loadExceptText (const XMLExcepts::Codes toLoad, const char *const text1, const char *const text2=0, const char *const text3=0, const char *const text4=0)

    Protected Attributes

    MemoryManagerfMemoryManager


    Constructor & Destructor Documentation

    virtual XMLException::~XMLException (  )  [virtual]

    XMLException::XMLException (  ) 

    XMLException::XMLException ( const char *const   srcFile,
    const XMLFileLoc  srcLine,
    MemoryManager *const   memoryManager = 0 
    )

    XMLException::XMLException ( const XMLException toCopy  ) 


    Member Function Documentation

    virtual const XMLCh* XMLException::getType (  )  const [pure virtual]

    XMLExcepts::Codes XMLException::getCode (  )  const

    const XMLCh * XMLException::getMessage (  )  const

    const char * XMLException::getSrcFile (  )  const

    XMLFileLoc XMLException::getSrcLine (  )  const

    void XMLException::setPosition ( const char *const   file,
    const XMLFileLoc  line 
    )

    XMLException& XMLException::operator= ( const XMLException toAssign  ) 

    void XMLException::loadExceptText ( const XMLExcepts::Codes  toLoad  )  [protected]

    void XMLException::loadExceptText ( const XMLExcepts::Codes  toLoad,
    const XMLCh *const   text1,
    const XMLCh *const   text2 = 0,
    const XMLCh *const   text3 = 0,
    const XMLCh *const   text4 = 0 
    ) [protected]

    void XMLException::loadExceptText ( const XMLExcepts::Codes  toLoad,
    const char *const   text1,
    const char *const   text2 = 0,
    const char *const   text3 = 0,
    const char *const   text4 = 0 
    ) [protected]


    Member Data Documentation


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/DOMImplementation_8hpp-source.html0000644000175000017500000003632211363620004024147 0ustar borisboris Xerces-C++: DOMImplementation.hpp Source File
    Generated on Wed Apr 21 17:55:48 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classLocalFileFormatTarget.html0000644000175000017500000002317611363620006023572 0ustar borisboris Xerces-C++: LocalFileFormatTarget Class Reference

    LocalFileFormatTarget Class Reference

    Inheritance diagram for LocalFileFormatTarget:

    XMLFormatTarget XMemory

    List of all members.

    Public Member Functions

    virtual void writeChars (const XMLByte *const toWrite, const XMLSize_t count, XMLFormatter *const formatter)
    virtual void flush ()
    constructors and destructor
     LocalFileFormatTarget (const XMLCh *const , MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     LocalFileFormatTarget (const char *const , MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
     ~LocalFileFormatTarget ()


    Constructor & Destructor Documentation

    LocalFileFormatTarget::LocalFileFormatTarget ( const XMLCh const,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    LocalFileFormatTarget::LocalFileFormatTarget ( const char *  const,
    MemoryManager *const   manager = XMLPlatformUtils::fgMemoryManager 
    )

    LocalFileFormatTarget::~LocalFileFormatTarget (  ) 


    Member Function Documentation

    virtual void LocalFileFormatTarget::writeChars ( const XMLByte *const   toWrite,
    const XMLSize_t  count,
    XMLFormatter *const   formatter 
    ) [virtual]

    Implements XMLFormatTarget.

    virtual void LocalFileFormatTarget::flush (  )  [virtual]

    Reimplemented from XMLFormatTarget.


    The documentation for this class was generated from the following file:

    Generated on Wed Apr 21 17:55:50 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classXMLURL.png0000644000175000017500000000051211363620006020250 0ustar borisboris‰PNG  IHDRCP°¦ÕuPLTEÿÿÿÿÿÀŸŸ`ÀÀÀ{ÂÿätRNS@æØfàIDATH‰íÓKƒ Pظ&¹A8A§½PWÜÿMeÀO£ §#2ò{Æ€£{YåážÑ(—#$y„ÛQ/`·‹w‘£rKD¿ðŠ.RÊ-aK$‰JPë÷ê¢,t»\2‘A%¹#ʺ5¤œ‹îK¶:kžî‚&¡h’xA²ã'™—i1s†¤÷2¥4€ ÚÑMnr“ã¬\°Â^x©Ò ^ç¼k6R:Ò»JByæñ¼¸ÿƒÈ½#Ë\4 ßš(kéÎÈZº™m‘r.Bœ×ƒ?Àû'ù)Õ~Ì ŠƒIEND®B`‚xerces-c-3.1.1/doc/html/apiDocs-3/classDOMTreeWalker-members.html0000644000175000017500000001313011363620005023441 0ustar borisboris Xerces-C++: Member List

    DOMTreeWalker Member List

    This is the complete list of members for DOMTreeWalker, including all inherited members.

    DOMTreeWalker()DOMTreeWalker [protected]
    DOMTreeWalker(const DOMTreeWalker &)DOMTreeWalker [protected]
    firstChild()=0DOMTreeWalker [pure virtual]
    getCurrentNode()=0DOMTreeWalker [pure virtual]
    getExpandEntityReferences()=0DOMTreeWalker [pure virtual]
    getFilter()=0DOMTreeWalker [pure virtual]
    getRoot()=0DOMTreeWalker [pure virtual]
    getWhatToShow()=0DOMTreeWalker [pure virtual]
    lastChild()=0DOMTreeWalker [pure virtual]
    nextNode()=0DOMTreeWalker [pure virtual]
    nextSibling()=0DOMTreeWalker [pure virtual]
    parentNode()=0DOMTreeWalker [pure virtual]
    previousNode()=0DOMTreeWalker [pure virtual]
    previousSibling()=0DOMTreeWalker [pure virtual]
    release()=0DOMTreeWalker [pure virtual]
    setCurrentNode(DOMNode *currentNode)=0DOMTreeWalker [pure virtual]
    ~DOMTreeWalker()DOMTreeWalker [virtual]


    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/apiDocs-3/classDOMNodeFilter-members.html0000644000175000017500000001563611363620005023444 0ustar borisboris Xerces-C++: Member List
    Generated on Wed Apr 21 17:55:49 2010 for Xerces-C++ by  doxygen 1.5.6
    xerces-c-3.1.1/doc/html/enumval-3.html0000644000175000017500000003300311363617745016465 0ustar borisborisSample: EnumVal
    http://xml.apache.org/http://www.apache.org/http://www.w3.org/

    Xerces-C++ 3.1.1
    Readme
    Installation
    Build Instructions

    Programming
    Samples
    FAQs

    API Reference
    DOM C++ Binding
    Migration Guide

    EnumVal
     

    EnumVal shows how to enumerate the markup declarations in a DTD Grammar.

    Running EnumVal
     

    This program parses the specified XML file, then shows how to enumerate the contents of the DTD Grammar.

    Usage:
        EnumVal <XML file>
    
    This program parses the specified XML file, then shows how to
    enumerate the contents of the DTD Grammar. Essentially,
    shows how one can access the DTD information stored in internal
    data structures.
    

    Here is a sample output from EnumVal

    cd xerces-c-3.1.1/samples/data
    EnumVal personal.xml
    
    ELEMENTS:
    ----------------------------
      Name: personnel
      Content Model: (person)+
    
      Name: person
      Content Model: (name,email*,url*,link?)
      Attributes:
        Name:id, Type: ID
    
      Name: name
      Content Model: (#PCDATA|family|given)*
    
      Name: email
      Content Model: (#PCDATA)*
    
      Name: url
      Content Model: EMPTY
      Attributes:
        Name:href, Type: CDATA
    
      Name: link
      Content Model: EMPTY
      Attributes:
        Name:subordinates, Type: IDREF(S)
        Name:manager, Type: IDREF(S)
    
      Name: family
      Content Model: (#PCDATA)*
    
      Name: given
      Content Model: (#PCDATA)*



    Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.
    xerces-c-3.1.1/doc/html/faq-contributing-3.html0000644000175000017500000005273711363617745020311 0ustar borisborisContributing to Xerces-C++
    http://xml.apache.org/http://www.apache.org/http://www.w3.org/

    Xerces-C++ 3.1.1
    Readme
    Installation
    Build Instructions

    Programming
    Samples
    FAQs

    API Reference
    DOM C++ Binding
    Migration Guide

    Questions
     


    I have a problem and I think I know how to fix it. How can I communicate my ideas to the Xerces-C++ team?
     

    To maximize the probability that your ideas will grab the attention of one of the Xerces-C++ developers who knows about the area of the parser you're concerned with, you should follow these steps:

    1. Check out and build the most recent Xerces-C++ code. For instructions on how to do this, see Xerces-C++ Repository Information. If you do this, you can confirm that your bug still exists and has not been fixed since the last release.
    2. Write up your bug report as per the instructions described in the Bug-Reporting page.
    3. Describe why your solution works.
    4. Prepare a patch to fix Xerces-C++ code. To do this, when you have applied your changes to a local copy of the most recent Xerces-C++ source code, do svn diff file for each file you have changed. Keep in mind the coding guidelines for Xerces-C++ as described below.
    5. Zip (or tar) up your patches. If you send them in the body of a message or bug report they are very difficult to apply.
    6. Submit a bug report to the Xerces-C++ bug database as described on the Bug-Reporting page. Pick the product "Xerces-C++" (remembering to attach your patches and test code) or, if you think your patch might need some discussion, post it to the developer mailing list.
    7. If you are submitting a substantial amount of code, provide the information required in the Contributors section of the Project Charter.

    What are the release policies for Xerces-C++?
     

    The informal release policies for Xerces-C++ are (using a versioning of version.release.modification):

    • We don't try to enforce binary compatibility between new versions and releases.
    • New versions and releases will be delivered when a certain number of bug fixes/new features have been added (as decided by the committers).
    • New modification levels will almost never be issued, the only exception is a showstopper bug encountered within a release.
    • Any normal bug is fixed only in the HEAD branch (latest development code).

    The specific source and binary compatibility objectives for these release policies and the corresponding allowed source changes are:

    • x.x.x to x.x.y: the API is the same to ensure binary compatibility.
      • To maintain binary compatibility the allowed source code changes are:
        • Add new non-virtual functions.
        • Add new classes.
        • Add new STATIC data members.
      • To maintain binary compatibility you cannot:
        • Add new virtual functions as this will change the layout of the virtual function table.
        • Change the order of virtual functions in the class declaration.
        • Change the signature of a function (including adding additional parameters with defaults).
        • Change the access specifier (private/public/protected) on functions or data members as this may be part of the signature with some compilers.
        • Add new data members to a class (other than STATIC members).
        • Change the order of data members in the class declaration (other than STATIC members).
        • Change the class hierarchy (other than adding new classes).
      • Methods that are deprecated should be marked with the Doxygen tag @deprecated in the header file.
    • x.x.x to x.y.z: the API is source code compatible but not binary compatible (a recompilation of an application that uses the public headers of Xerces-C++ should work).
      • This means that to maintain release to release source code compatibility the signature of public methods can only be changed by adding default parameters.
      • Signatures of private and protected methods can be changed and/or removed.
      • Methods that are deprecated should be marked with the Doxygen tag @deprecated in the header file.
    • x.x.x to a.b.c: the API may not be source code compatible and is not binary compatible (a recompilation of an application using Xerces-C++ may fail).
      • In this situation, a separate branch of the code will be created so that bug fixes may be applied to the last version.
      • Deprecated methods may be removed. Deprecated methods that are removed should be documented in the migration information (migration.xml).

    What are the coding conventions for Xerces-C++?
     

    As with any coding effort, there are always arguments over what coding conventions to use. Everyone thinks that they have the best style which leads to the entire source tree looking different. This causes consternation as well as eye fatigue on subsequent developers that need to maintain the code. Therefore, we are going to make an attempt at defining some basic coding conventions for Xerces-C++. When committing files or providing patches please keep them in mind:

    1. All classes should have a constructor, destructor, assignment operator and copy constructor to avoid compiler generated default versions of these.
      • If a class contains only static methods, only a private constructor is required.
      • If a class contains any virtual methods, the destructor should be virtual.
      • If a class has a public or protected constructor, it should declare private assignment operator and copy constructor which are not implemented (unless of course you need either of these).
    2. If you add a catch(...) block be sure to add the following block catch(const OutOfMemoryException&) { throw; } so the OutOfMemory condition does not get absorbed.
    3. If you change the serialization format (by adding something to be serialized or removing something that was serialized) increment the XERCES_GRAMMAR_SERIALIZATION_LEVEL constant in XercesVersion.hpp.
    4. If a class allocates memory or is instantiated with new then it should inherit from XMemory.
    5. Use a tab size of 4 and insert them as spaces instead of keeping tabs.
    6. The code is written to be platform independent. Platform specific code should only be in the util/FileManagers, util/MutexManagers, util/Transcoders, util/MsgLoaders, and util/NetAccessors directories.
    7. The header file name and the source file name should both be named corresponding to the primary class they contain. For example class StringPool should be in the header file StringPool.hpp and in the source file StringPool.cpp.
    8. In general, code should be documented with comments. Use Doxygen tags to describe methods.
    9. The naming convention for enumerations should be chosen to be unique and descriptive (i.e. INVALID or UNKNOWN) to avoid colliding with predefined macros in other products. The current style of using ALL CAP enums should be phased out with Mixed Case instead, except for names specified in standards (for example, TEXT_NODE should not be converted to mixed case for standards compliance).


    Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.
    xerces-c-3.1.1/doc/html/program-others-3.html0000644000175000017500000024707611363617746020011 0ustar borisborisProgramming Guide
    http://xml.apache.org/http://www.apache.org/http://www.w3.org/

    Xerces-C++ 3.1.1
    Readme
    Installation
    Build Instructions

    Programming
    Samples
    FAQs

    API Reference
    DOM C++ Binding
    Migration Guide

    Version Macro
     

    Xerces-C++ defines a numeric preprocessor macro, _XERCES_VERSION, for users to introduce into their code to perform conditional compilation where the version of Xerces-C++ is detected in order to enable or disable version specific capabilities. For example,

    #if _XERCES_VERSION >= 30102
      // Code specific to Xerces-C++ version 3.1.2 and later.
    #else
      // Old code.
    #endif
    

    The minor and revision (patch level) numbers have two digits of resolution which means that '1' becomes '01' and '2' becomes '02' in this example.

    There are also other string macros or constants to represent the Xerces-C++ version. Please refer to the xercesc/util/XercesVersion.hpp header for details.


    Schema Support
     

    Xerces-C++ contains an implementation of the W3C XML Schema Language. See the XML Schema Support page for details.


    Progressive Parsing
     

    In addition to using the parse() method to parse an XML File. You can use the other two parsing methods, parseFirst() and parseNext() to do the so called progressive parsing. This way you don't have to depend on throwing an exception to terminate the parsing operation.

    Calling parseFirst() will cause the DTD (both internal and external subsets), and any pre-content, i.e. everything up to but not including the root element, to be parsed. Subsequent calls to parseNext() will cause one more pieces of markup to be parsed, and propagated from the core scanning code to the parser (and hence either on to you if using SAX/SAX2 or into the DOM tree if using DOM).

    You can quit the parse any time by just not calling parseNext() anymore and breaking out of the loop. When you call parseNext() and the end of the root element is the next piece of markup, the parser will continue on to the end of the file and return false, to let you know that the parse is done. So a typical progressive parse loop will look like this:

    // Create a progressive scan token
    XMLPScanToken token;
    
    if (!parser.parseFirst(xmlFile, token))
    {
      cerr << "scanFirst() failed\n" << endl;
      return 1;
    }
    
    //
    // We started ok, so lets call scanNext()
    // until we find what we want or hit the end.
    //
    bool gotMore = true;
    while (gotMore && !handler.getDone())
      gotMore = parser.parseNext(token);

    In this case, our event handler object (named 'handler') is watching for some criteria and will return a status from its getDone() method. Since the handler sees the SAX events coming out of the SAXParser, it can tell when it finds what it wants. So we loop until we get no more data or our handler indicates that it saw what it wanted to see.

    When doing non-progressive parses, the parser can easily know when the parse is complete and insure that any used resources are cleaned up. Even in the case of a fatal parsing error, it can clean up all per-parse resources. However, when progressive parsing is done, the client code doing the parse loop might choose to stop the parse before the end of the primary file is reached. In such cases, the parser will not know that the parse has ended, so any resources will not be reclaimed until the parser is destroyed or another parse is started.

    This might not seem like such a bad thing; however, in this case, the files and sockets which were opened in order to parse the referenced XML entities will remain open. This could cause serious problems. Therefore, you should destroy the parser instance in such cases, or restart another parse immediately. In a future release, a reset method will be provided to do this more cleanly.

    Also note that you must create a scan token and pass it back in on each call. This insures that things don't get done out of sequence. When you call parseFirst() or parse(), any previous scan tokens are invalidated and will cause an error if used again. This prevents incorrect mixed use of the two different parsing schemes or incorrect calls to parseNext().


    Pre-parsing Grammar and Grammar Caching
     

    Xerces-C++ provides a function to pre-parse the grammar so that users can check for any syntax error before using the grammar. Users can also optionally cache these pre-parsed grammars for later use during actual parsing.

    Here is an example:

    XercesDOMParser parser;
    
    // Enable schema processing.
    parser.setDoSchema(true);
    parser.setDONamespaces(true);
    
    // Let's preparse the schema grammar (.xsd) and cache it.
    Grammar* grammar = parser.loadGrammar(xmlFile, Grammar::SchemaGrammarType, true);
    

    Besides caching pre-parsed schema grammars, users can also cache any grammars encountered during an xml document parse.

    Here is an example:

    SAXParser parser;
    
    // Enable grammar caching by setting cacheGrammarFromParse to true.
    // The parser will cache any encountered grammars if it does not
    // exist in the pool.
    // If the grammar is DTD, no internal subset is allowed.
    parser.cacheGrammarFromParse(true);
    
    // Let's parse our xml file (DTD grammar)
    parser.parse(xmlFile);
    
    // We can get the grammar where the root element was declared
    // by calling the parser's method getRootGrammar;
    // Note: The parser owns the grammar, and the user should not delete it.
    Grammar* grammar = parser.getRootGrammar();
    

    We can use any previously cached grammars when parsing new xml documents. Here are some examples on how to use those cached grammars:

    /**
      * Caching and reusing XML Schema (.xsd) grammar
      * Parse an XML document and cache its grammar set. Then,  use the cached
      * grammar set in subsequent parses.
      */
    
    XercesDOMParser parser;
    
    // Enable schema processing
    parser.setDoSchema(true);
    parser.setDoNamespaces(true);
    
    // Enable grammar caching
    parser.cacheGrammarFromParse(true);
    
    // Let's parse the XML document. The parser will cache any grammars encountered.
    parser.parse(xmlFile);
    
    // No need to enable re-use by setting useCachedGrammarInParse to true. It is
    // automatically enabled with grammar caching.
    for (int i=0; i< 3; i++)
        parser.parse(xmlFile);
    
    // This will flush the grammar pool
    parser.resetCachedGrammarPool();
    
    /**
      * Caching and reusing DTD grammar
      * Preparse a grammar and cache it in the pool. Then, we use the cached grammar
      * when parsing XML documents.
      */
    
    SAX2XMLReader* parser = XMLReaderFactory::createXMLReader();
    
    // Load grammar and cache it
    parser->loadGrammar(dtdFile, Grammar::DTDGrammarType, true);
    
    // enable grammar reuse
    parser->setFeature(XMLUni::fgXercesUseCachedGrammarInParse, true);
    
    // Parse xml files
    parser->parse(xmlFile1);
    parser->parse(xmlFile2);
    

    There are some limitations about caching and using cached grammars:

    • When caching/reusing DTD grammars, no internal subset is allowed.
    • When preparsing grammars with caching option enabled, if a grammar, in the result set, already exists in the pool (same namespace for schema or same system id for DTD), the entire set will not be cached. This behavior is the default but can be overridden for XML Schema caching. See the SAX/SAX2/DOM parser features for details.
    • When parsing an XML document with the grammar caching option enabled, the reuse option is also automatically enabled. We will only parse a grammar if it does not exist in the pool.

    Loadable Message Text
     

    The Xerces-C++ supports loadable message text. Although the current distribution only supports English, it is capable of supporting other languages. Anyone interested in contributing any translations should contact us. This would be an extremely useful service.

    In order to support the local message loading services, all the error messages are captured in an XML file in the src/xercesc/NLS/ directory. There is a simple program, in the tools/NLS/Xlat/ directory, which can translate that text in various formats. It currently supports a simple 'in memory' format (i.e. an array of strings), the Win32 resource format, and the message catalog format. The 'in memory' format is intended for very simple installations or for use when porting to a new platform (since you can use it until you can get your own local message loading support done.)

    In the src/xercesc/util/ directory, there is an XMLMsgLoader class. This is an abstraction from which any number of message loading services can be derived. Your platform driver file can create whichever type of message loader it wants to use on that platform. Xerces-C++ currently has versions for the in memory format, the Win32 resource format, the message catalog format, and ICU message loader. Some of the platforms can support multiple message loaders, in which case a #define token is used to control which one is used. You can set this in your build projects to control the message loader type used.


    Pluggable Transcoders
     

    Xerces-C++ also supports pluggable transcoding services. The XMLTransService class is an abstract API that can be derived from, to support any desired transcoding service. XMLTranscoder is the abstract API for a particular instance of a transcoder for a particular encoding. The platform driver file decides what specific type of transcoder to use, which allows each platform to use its native transcoding services, or the ICU service if desired.

    Implementations are provided for Win32 native services, ICU services, and the iconv services available on many Unix platforms. The Win32 version only provides native code page services, so it can only handle XML code in the intrinsic encodings ASCII, UTF-8, UTF-16 (Big/Small Endian), UCS4 (Big/Small Endian), EBCDIC code pages IBM037, IBM1047 and IBM1140 encodings, ISO-8859-1 (aka Latin1) and Windows-1252. The ICU version provides all of the encodings that ICU supports. The iconv version will support the encodings supported by the local system. You can use transcoders we provide or create your own if you feel ours are insufficient in some way, or if your platform requires an implementation that Xerces-C++ does not provide.


    Porting Guidelines
     

    All platform dependent code in Xerces-C++ has been isolated to a couple of files, which should ease the porting effort. The src/xercesc/util directory contains all such files. In particular:

    • The src/xercesc/util/FileManagers directory contains implementations of file managers for various platforms.
    • The src/xercesc/util/MutexManagers directory contains implementations of mutex managers for various platforms.
    • The src/xercesc/util/Xerces_autoconf_const* files provide base definitions for various platforms.

    Other concerns are:

    • Does ICU compile on your platform? If not, then you'll need to create a transcoder implementation that uses your local transcoding services. The iconv transcoder should work for you, though perhaps with some modifications.
    • What message loader will you use? To get started, you can use the "in memory" one, which is very simple and easy. Then, once you get going, you may want to adapt the message catalog message loader, or write one of your own that uses local services.
    • What should I define XMLCh to be? Please refer to What should I define XMLCh to be? for further details.

    Finally, you need to decide about how to define XMLCh. Generally, XMLCh should be defined to be a type suitable for holding a utf-16 encoded (16 bit) value, usually an unsigned short.

    All XML data is handled within Xerces-C++ as strings of XMLCh characters. Regardless of the size of the type chosen, the data stored in variables of type XMLCh will always be utf-16 encoded values.

    Unlike XMLCh, the encoding of wchar_t is platform dependent. Sometimes it is utf-16 (AIX, Windows), sometimes ucs-4 (Solaris, Linux), sometimes it is not based on Unicode at all (HP/UX, AS/400, system 390).

    Some earlier releases of Xerces-C++ defined XMLCh to be the same type as wchar_t on most platforms, with the goal of making it possible to pass XMLCh strings to library or system functions that were expecting wchar_t parameters. This approach has been abandoned because of

    • Portability problems with any code that assumes that the types of XMLCh and wchar_t are compatible
    • Excessive memory usage, especially in the DOM, on platforms with 32 bit wchar_t.
    • utf-16 encoded XMLCh is not always compatible with ucs-4 encoded wchar_t on Solaris and Linux. The problem occurs with Unicode characters with values greater than 64k; in ucs-4 the value is stored as a single 32 bit quantity. With utf-16, the value will be stored as a "surrogate pair" of two 16 bit values. Even with XMLCh equated to wchar_t, xerces will still create the utf-16 encoded surrogate pairs, which are illegal in ucs-4 encoded wchar_t strings.

    Using C++ Namespace
     

    Xerces-C++ makes use of C++ namespace to make sure its definitions do not conflict with other libraries and applications. As a result applications must namespace-qualify all Xerces-C++ classes, data and variables using the xercesc name. Alternatively, applications can use using xercesc::<Name>; declarations to make individual Xerces-C++ names visible in the current scope or using namespace xercesc; definition to make all Xerces-C++ names visible in the current scope.

    While the above information should be sufficient for the majority of applications, for cases where several versions of the Xerces-C++ library must be used in the same application, namespace versioning is provided. The following convenience macros can be used to access the Xerces-C++ namespace names with versions embedded (see src/xercesc/util/XercesDefs.hpp):

        #define XERCES_CPP_NAMESPACE_BEGIN    namespace xercesc_3_1 {
        #define XERCES_CPP_NAMESPACE_END    }
        #define XERCES_CPP_NAMESPACE_USE    using namespace xercesc_3_1;
        #define XERCES_CPP_NAMESPACE_QUALIFIER    xercesc_3_1::
    
        namespace xercesc_3_1 { }
        namespace xercesc = xercesc_3_1;
    

    Specify Locale for Message Loader
     

    Xerces-C++ provides mechanisms for Native Language Support (NLS). Even though the current distribution has only English message file, it is capable of supporting other languages once the translated version of the target language is available.

    An application can specify the locale for the message loader in their very first invocation to XMLPlatformUtils::Initialize() by supplying a parameter for the target locale intended. The default locale is "en_US".

        // Initialize the parser system
        try
        {
             XMLPlatformUtils::Initialize("fr_FR");
        }
        catch ()
        {
        }
    

    Specify Location for Message Loader
     

    Xerces-C++ searches for message files at the location specified in the XERCESC_NLS_HOME environment variable and, if that is not set, at the default message directory, $XERCESCROOT/msg.

    Application can specify an alternative location for the message files in their very first invocation to XMLPlatformUtils::Initialize() by supplying a parameter for the alternative location.

        // Initialize the parser system
        try
        {
             XMLPlatformUtils::Initialize("en_US", "/usr/nls");
        }
        catch ()
        {
        }
    

    Pluggable Panic Handler
     

    Xerces-C++ reports panic conditions encountered to the panic handler installed. The panic handler can take whatever action appropriate to handle the panic condition.

    Xerces-C++ allows application to provide a customized panic handler (class implementing the interface PanicHandler), in its very first invocation of XMLPlatformUtils::Initialize().

    In the absence of an application-specific panic handler, Xerces-C++ default panic handler is installed and used, which aborts program whenever a panic condition is encountered.

        // Initialize the parser system
        try
        {
             PanicHandler* ph = new MyPanicHandler();
    
             XMLPlatformUtils::Initialize("en_US",
                                          "/usr/nls",
                                          ph);
        }
        catch ()
        {
        }
    

    Pluggable Memory Manager
     

    Certain applications wish to maintain precise control over memory allocation. This enables them to recover more easily from crashes of individual components, as well as to allocate memory more efficiently than a general-purpose OS-level procedure with no knowledge of the characteristics of the program making the requests for memory. In Xerces-C++ this is supported via the Pluggable Memory Handler.

    Users who wish to implement their own MemoryManager, an interface found in xercesc/framework/MemoryManager.hpp, need to implement only two methods:

    // This method allocates requested memory.
    // the parameter is the requested memory size
    // A pointer to the allocated memory is returned.
    virtual void* allocate(XMLSize_t size) = 0;
    
    // This method deallocates memory
    // The parameter is a pointer to the allocated memory to be deleted
    virtual void deallocate(void* p) = 0;
    

    To maximize the amount of flexibility that applications have in terms of controlling memory allocation, a MemoryManager instance may be set as part of the call to XMLPlatformUtils::Initialize() to allow for static initialization to be done with the given MemoryHandler; a (possibly different) MemoryManager may be passed in to the constructors of all Xerces parser objects as well, and all dynamic allocations within the parsers will make use of this object. Assuming that MyMemoryHandler is a class that implements the MemoryManager interface, here is a bit of pseudocode which illustrates these ideas:

    MyMemoryHandler *mm_for_statics = new MyMemoryHandler();
    MyMemoryHandler *mm_for_particular_parser = new MyMemoryManager();
    
    // initialize the parser information; try/catch
    // removed for brevity
    XMLPlatformUtils::Initialize(XMLUni::fgXercescDefaultLocale, 0,0,
            mm_for_statics);
    
    // create a parser object
    XercesDOMParser *parser = new
            XercesDomParser(mm_for_particular_parser);
    
    // ...
    delete parser;
    XMLPlatformUtils::Terminate();
    

    If a user provides a MemoryManager object to the parser, then the user owns that object. It is also important to note that Xerces-C++ default implementation simply uses the global new and delete operators.


    Managing Security Vulnerabilities
     

    The purpose of the SecurityManager class is to permit applications a means to have the parser reject documents whose processing would otherwise consume large amounts of system resources. Malicious use of such documents could be used to launch a denial-of-service attack against a system running the parser. Initially, the SecurityManager only knows about attacks that can result from exponential entity expansion; this is the only known attack that involves processing a single XML document. Other, similar attacks can be launched if arbitrary schemas may be parsed; there already exist means (via use of the EntityResolver interface) by which applications can deny processing of untrusted schemas. In future, the SecurityManager will be expanded to take these other exploits into account.

    The SecurityManager class is very simple: It will contain getters and setters corresponding to each known variety of exploit. These will reflect limits that the application may impose on the parser with respect to the processing of various XML constructs. When an instance of SecurityManager is instantiated, default values for these limits will be provided that should suit most applications.

    By default, Xerces-C++ is a wholly conformant XML parser; that is, no security-related considerations will be observed by default. An application must provide an instance of the SecurityManager class to a parser in order to make that parser behave in a security-conscious manner. For example:

    SAXParser *myParser = new SAXParser();
    SecurityManager *myManager = new SecurityManager();
    myManager->setEntityExpansionLimit(100000); // larger than default
    myParser->setSecurityManager(myManager);
    // ... use the parser
    

    Note that SecurityManager instances may be set on all kinds of Xerces-C++ parsers; please see the documentation for the individual parsers for details.

    Note also that the application always owns the SecurityManager instance. The default SecurityManager that Xerces-C++ provides is not thread-safe; although it only uses primitive operations at the moment, users may need to extend the class with a thread-safe implementation on some platforms.


    Use Specific Scanner
     

    For performance and modularity Xerces-C++ provides a mechanism for specifying the scanner to be used when scanning an XML document. Such mechanism will enable the creation of special purpose scanners that can be easily plugged in.

    Xerces-C++ supports the following scanners:

    WFXMLScanner
     

    The WFXMLScanner is a non-validating scanner which performs well-formedness check only. It does not do any DTD/XMLSchema processing. If the XML document contains a DOCTYPE, it will be silently ignored (i.e. no warning message is issued). Similarly, any schema specific attributes (e.g. schemaLocation), will be treated as normal element attributes. Setting grammar specific features/properties will have no effect on its behavior (e.g. setLoadExternalDTD(true) is ignored).

    // Create a DOM parser
    XercesDOMParser parser;
    
    // Specify scanner name
    parser.useScanner(XMLUni::fgWFXMLScanner);
    
    // Specify other parser features, e.g.
    parser.setDoNamespaces(true);
    

    DGXMLScanner
     

    The DGXMLScanner handles XML documents with DOCTYPE information. It does not do any XMLSchema processing, which means that any schema specific attributes (e.g. schemaLocation), will be treated as normal element attributes. Setting schema grammar specific features/properties will have no effect on its behavior (e.g. setDoSchema(true) and setLoadSchema(true) are ignored).

    // Create a SAX parser
    SAXParser parser;
    
    // Specify scanner name
    parser.useScanner(XMLUni::fgDGXMLScanner);
    
    // Specify other parser features, e.g.
    parser.setLoadExternalDTD(true);
    

    SGXMLScanner
     

    The SGXMLScanner handles XML documents with XML schema grammar information. If the XML document contains a DOCTYPE, it will be ignored. Namespace and schema processing features are on by default, and setting them to off has not effect.

    // Create a SAX2 parser
    SAX2XMLReader* parser = XMLReaderFactory::createXMLReader();
    
    // Specify scanner name
    parser->setProperty(XMLUni::fgXercesScannerName, (void *)XMLUni::fgSGXMLScanner);
    
    // Specify other parser features, e.g.
    parser->setFeature(XMLUni::fgXercesSchemaFullChecking, false);
    

    IGXMLScanner
     

    The IGXMLScanner is an integrated scanner and handles XML documents with DTD and/or XML schema grammar. This is the default scanner used by the various parsers if no scanner is specified.

    // Create a DOMLSParser parser
    DOMLSParser *parser = ((DOMImplementationLS*)impl)->createLSParser(
      DOMImplementationLS::MODE_SYNCHRONOUS, 0);
    
    // Specify scanner name - This is optional as IGXMLScanner is the default
    parser->getDomConfig()->setParameter(
      XMLUni::fgXercesScannerName, (void *)XMLUni::fgIGXMLScanner);
    
    // Specify other parser features, e.g.
    parser->getDomConfig()->setParameter(XMLUni::fgDOMNamespaces, doNamespaces);
    parser->getDomConfig()->setParameter(XMLUni::fgXercesSchema, doSchema);
    



    Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.
    xerces-c-3.1.1/doc/html/install-3.html0000644000175000017500000011514211363617747016473 0ustar borisborisInstallation
    http://xml.apache.org/http://www.apache.org/http://www.w3.org/

    Xerces-C++ 3.1.1
    Readme
    Installation
    Build Instructions

    Programming
    Samples
    FAQs

    API Reference
    DOM C++ Binding
    Migration Guide

    Source and binary distributions installation instructions are available for the following platforms:

    Windows
     

    This section contains installation instructions for the Windows platform.

    Source distribution
     

    The Xerces-C++ source is available in the source distribution: xerces-c-3.1.1.zip.

    Install the Xerces-C++ source distribution by using unzip on the xerces-c-3.1.1.zip archive in the Windows environment. You can use WinZip, or any other UnZip utility:

    unzip xerces-c-3.1.1.zip
    

    This creates the 'xerces-c-3.1.1' sub-directory containing the Xerces-C++ source distribution.

    If you need to build the Xerces-C++ source after installation, please follow the Build Instructions.


    Binary distribution
     

    Install the Xerces-C++ binary distribution by using unzip on the xerces-c-3.1.1-{arch}-windows-{compiler}.zip archive in the Windows environment. Here {arch} denotes the CPU architecture and {compiler} denotes the C++ compiler of your choice. You can use WinZip, or any other UnZip utility. For example:

    unzip xerces-c-3.1.1-x86-windows-vc-8.0.zip
    

    This creates a 'xerces-c-3.1.1-x86-windows-vc-8.0' sub-directory containing the Xerces-C++ binary distribution.

    You need to add the 'xerces-c-3.1.1-{arch}-windows-{compiler}\bin' directory to your path. To do this go to the start menu, click the settings menu and select control panel. When the control panel opens, double click on System and select the 'Environment' tab. Locate the PATH variable under system variables and add <full-path-to-xerces-c-3.1.1-{arch}-windows-{compiler}>\bin to the PATH variable.

    Additionally, if you don't have the corresponding version of Microsoft Visual C++ installed, you may need to download and install the C/C++ runtime libraries from the Microsoft website. For example, for Visual Studio 2008 (9.0) the package is called "Microsoft Visual C++ 2008 Redistributable Package".

    The binary distribution contains the pre-built parser libraries and sample executables. Please refer to the Samples for how to run the samples.



    UNIX
     

    This section contains installation instructions for the UNIX, Linux, and Mac OS X platforms.

    Source distribution
     

    The Xerces-C++ source is available in the source distribution: xerces-c-3.1.1.tar.gz.

    Install the Xerces-C++ source distribution xerces-c-3.1.1.tar.gz by extracting the files from the compressed archive:

    gzip -d xerces-c-3.1.1.tar.gz
    tar -xf xerces-c-3.1.1.tar
    

    This creates the 'xerces-c-3.1.1' sub-directory containing the Xerces-C++ source distribution.

    If you need to build the Xerces-C++ source after installation, please follow the Build Instructions.


    Binary distribution
     

    Install the binary distribution xerces-c-3.1.1-{arch}-{os}-{compiler}.tar.gz by extracting the files from the compressed archive. Here {arch} denotes the CPU architecture, {os} denotes the operating system, and {compiler} denotes the C++ compiler of your choice. For example:

    gzip -d xerces-c-3.1.1-x86-linux-gcc-3.4.tar.gz
    tar -xf xerces-c-3.1.1-x86-linux-gcc-3.4.tar
    

    This will create an 'xerces-c-3.1.1-x86-linux-gcc-3.4' sub-directory containing the Xerces-C++ binary distribution.

    You will need to add the xerces-c-3.1.1-{arch}-{os}-{compiler}/bin directory to your PATH environment variable:

    For Bourne Shell, K Shell or Bash, type:

    export PATH="$PATH:<full-path-to-xerces-c-3.1.1-{arch}-{os}-{compiler}>/bin"
    

    For C Shell, type:

    setenv PATH "$PATH:<full-path-to-xerces-c-3.1.1-{arch}-{os}-{compiler}>/bin"
    

    If you wish to make this setting permanent, you need to change your profile by changing your setup files which can be either .profile or .kshrc.

    In addition, you will also need to set the library search path. (LIBPATH on AIX, LD_LIBRARY_PATH on Solaris and Linux, SHLIB_PATH on HP-UX, and DYLD_LIBRARY_PATH on Mac OS X).

    In the following shell commands, the <xerces-path> denotes the full path to the xerces-c-3.1.1-{arch}-{os}-{compiler} directory. For Bourne Shell, K Shell or Bash, type:

    export LIBPATH=<xerces-path>/lib:$LIBPATH (AIX)
    export LD_LIBRARY_PATH=<xerces-path>/lib:$LD_LIBRARY_PATH (Solaris, Linux)
    export SHLIB_PATH=<xerces-path>/lib:$SHLIB_PATH (HP-UX)
    export DYLD_LIBRARY_PATH=<xerces-path>/lib:$DYLD_LIBRARY_PATH (Mac OS X)
    

    For C Shell, type:

    setenv LIBPATH "<xerces-path>/lib:$LIBPATH" (AIX)
    setenv LD_LIBRARY_PATH "<xerces-path>/lib:$LD_LIBRARY_PATH" (Solaris, Linux)
    setenv SHLIB_PATH "<xerces-path>/lib:$SHLIB_PATH" (HP-UX)
    setenv DYLD_LIBRARY_PATH "<xerces-path>/lib:$DYLD_LIBRARY_PATH" (Mac OS X)
    

    The binary distribution contains the pre-built parser libraries and sample executables. Please refer to the Samples for how to run the samples.



    Cygwin
     

    This section contains installation instructions for the Cygwin platform.

    Source distribution
     

    The Xerces-C++ source is available in the source distribution: xerces-c-3.1.1.tar.gz.

    Install the Xerces-C++ source distribution xerces-c-3.1.1.tar.gz by extracting the files from the compressed archive:

    tar -xfz xerces-c-3.1.1.tar.gz
    

    This creates the 'xerces-c-3.1.1' sub-directory containing the Xerces-C++ source distribution.

    If you need to build the Xerces-C++ source after installation, please follow the Build Instructions.


    Binary distribution
     

    Precompiled Xerces-C++ libraries for Cygwin are provide as part of the Cygwin package repository. To install the binary distribution run Cygwin setup.exe. When you reach the Packages step of the Cygwin Setup wizard, expand the Devel category, then click in the New column next to "xerces-c-devel" until it reads "3.1.1-X".




    Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.
    xerces-c-3.1.1/doc/html/saxcount-3.html0000644000175000017500000004217411363617747016675 0ustar borisborisSample: SAXCount
    http://xml.apache.org/http://www.apache.org/http://www.w3.org/

    Xerces-C++ 3.1.1
    Readme
    Installation
    Build Instructions

    Programming
    Samples
    FAQs

    API Reference
    DOM C++ Binding
    Migration Guide

    SAXCount
     

    SAXCount is the simplest application that counts the elements and characters of a given XML file using the (event based) SAX API.

    Running SAXCount
     

    The SAXCount sample parses an XML file and prints out the number of elements in the file. To run SAXCount, enter the following

    SAXCount <XML File>

    The following parameters may be set from the command line

    Usage:
        SAXCount [options] <XML file | List file>
    
    This program invokes the SAX Parser, and then prints the
    number of elements, attributes, spaces and characters found
    in each XML file, using SAX API.
    
    Options:
        -l          Indicate the input file is a List File that has a list of xml files.
                    Default to off (Input file is an XML file).
        -v=xxx      Validation scheme [always | never | auto*].
        -n          Enable namespace processing. Defaults to off.
        -s          Enable schema processing. Defaults to off.
        -f          Enable full schema constraint checking. Defaults to off.
        -locale=ll_CC specify the locale, default: en_US
        -?          Show this help.
    
      * = Default if not provided explicitly.
    

    -v=always will force validation
    -v=never will not use any validation
    -v=auto will validate if a DOCTYPE declaration or a schema declaration is present in the XML document

    Here is a sample output from SAXCount

    cd xerces-c-3.1.1/samples/data
    SAXCount -v=always personal.xml
    personal.xml: 60 ms (37 elems, 12 attrs, 134 spaces, 134 chars)

    Running SAXCount with the validating parser gives a different result because ignorable white-space is counted separately from regular characters.

    SAXCount -v=never personal.xml
    personal.xml: 10 ms (37 elems, 12 attrs, 0 spaces, 268 chars)

    Note that the sum of spaces and characters in both versions is the same.

    NoteThe time reported by the program may be different depending on your processor speed.



    Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.
    xerces-c-3.1.1/doc/html/program-sax-3.html0000644000175000017500000024665311363617747017301 0ustar borisborisSAX Programming Guide
    http://xml.apache.org/http://www.apache.org/http://www.w3.org/

    Xerces-C++ 3.1.1
    Readme
    Installation
    Build Instructions

    Programming
    Samples
    FAQs

    API Reference
    DOM C++ Binding
    Migration Guide

    Using the SAX API
     

    The SAX API for XML parsers was originally developed for Java. Please be aware that there is no standard SAX API for C++, and that use of the Xerces-C++ SAX API does not guarantee client code compatibility with other C++ XML parsers.

    The SAX API presents a callback based API to the parser. An application that uses SAX provides an instance of a handler class to the parser. When the parser detects XML constructs, it calls the methods of the handler class, passing them information about the construct that was detected. The most commonly used handler classes are DocumentHandler which is called when XML constructs are recognized, and ErrorHandler which is called when an error occurs. The header files for the various SAX handler classes are in the xercesc/sax/ directory.

    As a convenience, Xerces-C++ provides HandlerBase, a single class which is publicly derived from all the Handler classes. HandlerBase's default implementation of the handler callback methods is to do nothing. A convenient way to get started with Xerces-C++ is to derive your own handler class from HandlerBase and override just those methods in HandlerBase which you are interested in customizing. This simple example shows how to create a handler which will print element names, and print fatal error messages. The source code for the sample applications show additional examples of how to write handler classes.

    This is the header file MySAXHandler.hpp:

    #include <xercesc/sax/HandlerBase.hpp>
    
    class MySAXHandler : public HandlerBase {
    public:
        void startElement(const XMLCh* const, AttributeList&);
        void fatalError(const SAXParseException&);
    };

    This is the implementation file MySAXHandler.cpp:

    #include "MySAXHandler.hpp"
    #include <iostream>
    
    using namespace std;
    
    MySAXHandler::MySAXHandler()
    {
    }
    
    void MySAXHandler::startElement(const XMLCh* const name,
                               AttributeList& attributes)
    {
        char* message = XMLString::transcode(name);
        cout << "I saw element: "<< message << endl;
        XMLString::release(&message);
    }
    
    void MySAXHandler::fatalError(const SAXParseException& exception)
    {
        char* message = XMLString::transcode(exception.getMessage());
        cout << "Fatal Error: " << message
             << " at line: " << exception.getLineNumber()
             << endl;
        XMLString::release(&message);
    }

    The XMLCh and AttributeList types are supplied by Xerces-C++ and are documented in the API reference. Examples of their usage appear in the source code for the sample applications.


    SAXParser
     
    Constructing a SAXParser
     

    In order to use Xerces-C++ SAX to parse XML files, you will need to create an instance of the SAXParser class. The example below shows the code you need in order to create an instance of SAXParser. The DocumentHandler and ErrorHandler instances required by the SAX API are provided using the HandlerBase class supplied with Xerces-C++.

        #include <xercesc/parsers/SAXParser.hpp>
        #include <xercesc/sax/HandlerBase.hpp>
        #include <xercesc/util/XMLString.hpp>
    
        #include <iostream>
    
        using namespace std;
        using namespace xercesc;
    
        int main (int argc, char* args[]) {
    
            try {
                XMLPlatformUtils::Initialize();
            }
            catch (const XMLException& toCatch) {
                char* message = XMLString::transcode(toCatch.getMessage());
                cout << "Error during initialization! :\n"
                     << message << "\n";
                XMLString::release(&message);
                return 1;
            }
    
            char* xmlFile = "x1.xml";
            SAXParser* parser = new SAXParser();
            parser->setDoValidation(true);
            parser->setDoNamespaces(true);    // optional
    
            DocumentHandler* docHandler = new HandlerBase();
            ErrorHandler* errHandler = (ErrorHandler*) docHandler;
            parser->setDocumentHandler(docHandler);
            parser->setErrorHandler(errHandler);
    
            try {
                parser->parse(xmlFile);
            }
            catch (const XMLException& toCatch) {
                char* message = XMLString::transcode(toCatch.getMessage());
                cout << "Exception message is: \n"
                     << message << "\n";
                XMLString::release(&message);
                return -1;
            }
            catch (const SAXParseException& toCatch) {
                char* message = XMLString::transcode(toCatch.getMessage());
                cout << "Exception message is: \n"
                     << message << "\n";
                XMLString::release(&message);
                return -1;
            }
            catch (...) {
                cout << "Unexpected Exception \n" ;
                return -1;
            }
    
            delete parser;
            delete docHandler;
            return 0;
        }

    SAXParser Supported Features
     

    The behavior of the SAXParser is dependant on the values of the following features. All of the features below are set using the "setter" methods (e.g. setDoNamespaces), and are queried using the corresponding "getter" methods (e.g. getDoNamespaces). The following only gives you a quick summary of supported features. Please refer to API Documentation for complete detail.

    None of these features can be modified in the middle of a parse, or an exception will be thrown.

    void setDoNamespaces(const bool) 
    true:  Perform Namespace processing.  
    false:  Do not perform Namespace processing.  
    default:  false  
    note:  If the validation scheme is set to Val_Always or Val_Auto, then the document must contain a grammar that supports the use of namespaces.  
    see:  setValidationScheme  

    void setValidationScheme(const ValSchemes) 
    Val_Auto:  The parser will report validation errors only if a grammar is specified.  
    Val_Always:  The parser will always report validation errors.  
    Val_Never:  Do not report validation errors.  
    default:  Val_Never  
    note:  If set to Val_Always, the document must specify a grammar. If this feature is set to Val_Never and document specifies a grammar, that grammar might be parsed but no validation of the document contents will be performed.  
    see:  setLoadExternalDTD  

    void setDoSchema(const bool) 
    true:  Enable the parser's schema support.  
    false:  Disable the parser's schema support.  
    default:  false  
    note  If set to true, namespace processing must also be turned on.  
    see:  setDoNamespaces  

    void setValidationSchemaFullChecking(const bool) 
    true:  Enable full schema constraint checking, including checking which may be time-consuming or memory intensive. Currently, particle unique attribution constraint checking and particle derivation restriction checking are controlled by this option.  
    false:  Disable full schema constraint checking.  
    default:  false  
    note:  This feature checks the Schema grammar itself for additional errors that are time-consuming or memory intensive. It does not affect the level of checking performed on document instances that use Schema grammars.  
    see:  setDoSchema  

    void setLoadSchema(const bool) 
    true:  Load the schema.  
    false:  Don't load the schema if it wasn't found in the grammar pool.  
    default:  true  
    note:  This feature is ignored and no schemas are loaded if schema processing is disabled.  
    see:  setDoSchema  

    void setLoadExternalDTD(const bool) 
    true:  Load the External DTD.  
    false:  Ignore the external DTD completely.  
    default:  true  
    note  This feature is ignored and DTD is always loaded if the validation scheme is set to Val_Always or Val_Auto.  
    see:  setValidationScheme  

    void setExitOnFirstFatalError(const bool) 
    true:  Stops parse on first fatal error.  
    false:  Attempt to continue parsing after a fatal error.  
    default:  true  
    note:  The behavior of the parser when this feature is set to false is undetermined! Therefore use this feature with extreme caution because the parser may get stuck in an infinite loop or worse.  

    void setValidationConstraintFatal(const bool) 
    true:  The parser will treat validation error as fatal and will exit depends on the state of setExitOnFirstFatalError.  
    false:  The parser will report the error and continue processing.  
    default:  false  
    note:  Setting this true does not mean the validation error will be printed with the word "Fatal Error". It is still printed as "Error", but the parser will exit if setExitOnFirstFatalError is set to true.  
    see:  setExitOnFirstFatalError  

    void useCachedGrammarInParse(const bool) 
    true:  Use cached grammar if it exists in the pool. 
    false:  Parse the schema grammar. 
    default:  false  
    note:  The getter function for this method is called isUsingCachedGrammarInParse. 
    note:  If the grammar caching option is enabled, this option is set to true automatically and any setting to this option by the user is a no-op. 
    see:  cacheGrammarFromParse  

    void cacheGrammarFromParse(const bool) 
    true:  Cache the grammar in the pool for re-use in subsequent parses. 
    false:  Do not cache the grammar in the pool 
    default:  false  
    note:  The getter function for this method is called isCachingGrammarFromParse 
    note:  If set to true, the useCachedGrammarInParse is also set to true automatically. 
    see:  useCachedGrammarInParse  

    void setStandardUriConformant(const bool) 
    true:  Force standard uri conformance.  
    false:  Do not force standard uri conformance.  
    default:  false  
    note:  If set to true, malformed uri will be rejected and fatal error will be issued.  

    void setCalculateSrcOfs(const bool) 
    true:  Enable src offset calculation.  
    false:  Disable src offset calculation.  
    default:  false  
    note:  If set to true, the user can inquire about the current src offset within the input source. Setting it to false (default) improves the performance. 

    void setIdentityConstraintChecking(const bool); 
    true:  Enable identity constraint checking.  
    false:  Disable identity constraint checking.  
    default:  true  

    void setGenerateSyntheticAnnotations(const bool); 
    true:  Enable generation of synthetic annotations. A synthetic annotation will be generated when a schema component has non-schema attributes but no child annotation.  
    false:  Disable generation of synthetic annotations.  
    default:  false  

    setValidateAnnotation 
    true:  Enable validation of annotations.  
    false:  Disable validation of annotations.  
    default:  false  
    note:  Each annotation is validated independently.  

    setIgnoreAnnotations 
    true:  Do not generate XSAnnotations when traversing a schema. 
    false:  Generate XSAnnotations when traversing a schema. 
    default:  false  

    setDisableDefaultEntityResolution 
    true:  The parser will not attempt to resolve the entity when the resolveEntity method returns NULL. 
    false:  The parser will attempt to resolve the entity when the resolveEntity method returns NULL. 
    default:  false  

    setSkipDTDValidation 
    true:  When schema validation is on the parser will ignore the DTD, except for entities. 
    false:  The parser will not ignore DTDs when validating. 
    default:  false  
    see:  DoSchema 

    setIgnoreCachedDTD 
    true:  Ignore a cached DTD when an XML document contains both an internal and external DTD, and the use cached grammar from parse option is enabled. Currently, we do not allow using cached DTD grammar when an internal subset is present in the document. This option will only affect the behavior of the parser when an internal and external DTD both exist in a document (i.e. no effect if document has no internal subset). 
    false:  Don't ignore cached DTD.  
    default:  false  
    see:  useCachedGrammarInParse 

    setHandleMultipleImports 
    true:  During schema validation allow multiple schemas with the same namespace to be imported. 
    false:  Don't import multiple schemas with the same namespace.  
    default:  false  

    void setExternalSchemaLocation(const XMLCh* const) 
    Description  The XML Schema Recommendation explicitly states that the inclusion of schemaLocation/ noNamespaceSchemaLocation attributes in the instance document is only a hint; it does not mandate that these attributes must be used to locate schemas. Similar situation happens to <import> element in schema documents. This property allows the user to specify a list of schemas to use. If the targetNamespace of a schema specified using this method matches the targetNamespace of a schema occurring in the instance document in schemaLocation attribute, or if the targetNamespace matches the namespace attribute of <import> element, the schema specified by the user using this property will be used (i.e., the schemaLocation attribute in the instance document or on the <import> element will be effectively ignored).  
    Value  The syntax is the same as for schemaLocation attributes in instance documents: e.g, "http://www.example.com file_name.xsd". The user can specify more than one XML Schema in the list.  
    Value Type  XMLCh*  

    void setExternalNoNamespaceSchemaLocation(const XMLCh* const) 
    Description  The XML Schema Recommendation explicitly states that the inclusion of schemaLocation/ noNamespaceSchemaLocation attributes in the instance document is only a hint; it does not mandate that these attributes must be used to locate schemas. This property allows the user to specify the no target namespace XML Schema Location externally. If specified, the instance document's noNamespaceSchemaLocation attribute will be effectively ignored.  
    Value  The syntax is the same as for the noNamespaceSchemaLocation attribute that may occur in an instance document: e.g."file_name.xsd".  
    Value Type  XMLCh*  

    void useScanner(const XMLCh* const) 
    Description  This property allows the user to specify the name of the XMLScanner to use for scanning XML documents. If not specified, the default scanner "IGXMLScanner" is used. 
    Value  The recognized scanner names are:
    1."WFXMLScanner" - scanner that performs well-formedness checking only.
    2. "DGXMLScanner" - scanner that handles XML documents with DTD grammar information.
    3. "SGXMLScanner" - scanner that handles XML documents with XML schema grammar information.
    4. "IGXMLScanner" - scanner that handles XML documents with DTD or/and XML schema grammar information.
    Users can use the predefined constants defined in XMLUni directly (fgWFXMLScanner, fgDGXMLScanner, fgSGXMLScanner, or fgIGXMLScanner) or a string that matches the value of one of those constants. 
    Value Type  XMLCh*  
    note:   See Use Specific Scanner for more programming details.  

    setSecurityManager(Security Manager * const) 
    Description  Certain valid XML and XML Schema constructs can force a processor to consume more system resources than an application may wish. In fact, certain features could be exploited by malicious document writers to produce a denial-of-service attack. This property allows applications to impose limits on the amount of resources the processor will consume while processing these constructs.  
    Value  An instance of the SecurityManager class (see xercesc/util/SecurityManager). This class's documentation describes the particular limits that may be set. Note that, when instantiated, default values for limits that should be appropriate in most settings are provided. The default implementation is not thread-safe; if thread-safety is required, the application should extend this class, overriding methods appropriately. The parser will not adopt the SecurityManager instance; the application is responsible for deleting it when it is finished with it. If no SecurityManager instance has been provided to the parser (the default) then processing strictly conforming to the relevant specifications will be performed.  
    Value Type  SecurityManager*  

    setLowWaterMark(XMLSize_t) 
    Description  If the number of available bytes in the raw buffer is less than the low water mark the parser will attempt to read more data before continuing parsing. By default the value for this parameter is 100 bytes. You may want to set this parameter to 0 if you would like the parser to parse the available data immediately without potentially blocking while waiting for more date.  
    Value  New low water mark.  
    Value Type  XMLSize_t  

    setInputBufferSize(const size_t bufferSize) 
    Description  Set maximum input buffer size. This method allows users to limit the size of buffers used in parsing XML character data. The effect of setting this size is to limit the size of a ContentHandler::characters() call. The parser's default input buffer size is 1 megabyte.  
    Value  The maximum input buffer size  
    Value Type  XMLCh*  




    Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.
    xerces-c-3.1.1/doc/html/sax2count-3.html0000644000175000017500000004244411363617746016756 0ustar borisborisSample: SAX2Count
    http://xml.apache.org/http://www.apache.org/http://www.w3.org/

    Xerces-C++ 3.1.1
    Readme
    Installation
    Build Instructions

    Programming
    Samples
    FAQs

    API Reference
    DOM C++ Binding
    Migration Guide

    SAX2Count
     

    SAX2Count is a simple application that counts the elements and characters of a given XML file using the (event based) SAX2 API.

    Running SAX2Count
     

    The SAX2Count sample parses an XML file and prints out the number of elements and characters in the file. To run SAX2Count, enter the following

    SAX2Count <XML File>

    The following parameters may be set from the command line

    Usage:
        SAX2Count [options] <XML file | List file>
    
    This program invokes the SAX2XMLReader, and then prints the
    number of elements, attributes, spaces and characters found
    in each XML file, using SAX2 API.
    
    Options:
        -l          Indicate the input file is a List File that has a list of xml files.
                    Default to off (Input file is an XML file).
        -v=xxx      Validation scheme [always | never | auto*].
        -f          Enable full schema constraint checking processing. Defaults to off.
        -n          Disable namespace processing. Defaults to on.
                    NOTE: THIS IS OPPOSITE FROM OTHER SAMPLES.
        -s          Disable schema processing. Defaults to on.
                    NOTE: THIS IS OPPOSITE FROM OTHER SAMPLES.
        -locale=ll_CC specify the locale, default: en_US
        -?          Show this help.
    
      * = Default if not provided explicitly.
    

    -v=always will force validation
    -v=never will not use any validation
    -v=auto will validate if a DOCTYPE declaration or a schema declaration is present in the XML document

    Here is a sample output from SAX2Count

    cd xerces-c-3.1.1/samples/data
    SAX2Count -v=always personal.xml
    personal.xml: 60 ms (37 elems, 12 attrs, 134 spaces, 134 chars)

    Running SAX2Count with the validating parser gives a different result because ignorable white-space is counted separately from regular characters.

    SAX2Count -v=never personal.xml
    personal.xml: 10 ms (37 elems, 12 attrs, 0 spaces, 268 chars)

    Note that the sum of spaces and characters in both versions is the same.

    NoteThe time reported by the program may be different depending on your processor speed.



    Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.
    xerces-c-3.1.1/doc/html/build-3.html0000644000175000017500000012532511363617747016130 0ustar borisborisBuild Instructions
    http://xml.apache.org/http://www.apache.org/http://www.w3.org/

    Xerces-C++ 3.1.1
    Readme
    Installation
    Build Instructions

    Programming
    Samples
    FAQs

    API Reference
    DOM C++ Binding
    Migration Guide

    Build Instructions
     

    Build instructions are provided for the following platforms and compilers:

    Building on UNIX/Linux/Mac OS X/Cygwin/MinGW platforms
     

    For building on UNIX and UNIX-like (GNU/Linux, Max OS X, Cygwin, MinGW-MSYS) platforms Xerces-C++ uses the GNU automake-based build systems and requires that you have GNU make installed. On some platforms GNU make is called gmake instead of make.

    As with all automake-based projects the build process is divided into two parts: configuration and building. The configuration part is performed using the configure script that can be found in the xerces-c-3.1.1 directory. The build part is performed by invoking make.

    Besides the standard configure options which you can view by running configure --help, Xerces-C++ provides a number of project-specific options that are worth mentioning. You can specify one option for each category outlined below. If you do not specify anything for a particular category then configure will select the most appropriate default. At the end of its execution configure prints the selected values for each category.

    Net Accessor (used to access network resources):

    Option  Description 
    --enable-netaccessor-curl  use the libcurl library 
    --enable-netaccessor-socket  use plain sockets 
    --enable-netaccessor-cfurl  use the CFURL API (only on Mac OS X) 
    --enable-netaccessor-winsock  use WinSock (only on Windows, Cygwin, MinGW) 
    --disable-network  disable network support 

    Transcoder (used to convert between internal UTF-16 and other encodings):

    Option  Description 
    --enable-transcoder-gnuiconv  use the GNU iconv library 
    --enable-transcoder-iconv  use the iconv library 
    --enable-transcoder-icu  use the ICU library 
    --enable-transcoder-macosunicodeconverter  use Mac OS X APIs (only on Mac OS X) 
    --enable-transcoder-windows  use Windows APIs (only on Windows, Cygwin, MinGW) 

    Message Loader (used to access diagnostics messages):

    Option  Description 
    --enable-msgloader-inmemory  store the messages in memory 
    --enable-msgloader-icu  store the messages using the ICU resource bundles 
    --enable-msgloader-iconv  store the messages in the iconv message catalog 

    Thread support is enabled by default and can be disabled with the --disable-threads option.

    By default configure selects both shared and static libraries. You can use the --disable-shared and --disable-static options to avoid building the version you don't need.

    Finally, to make the build process cleaner the Xerces-C++ build system hides actual compiler commands being executed by make. If you would like to see those then you can specify the --disable-pretty-make option.

    If you need to specify compiler executables that should be used to build Xerces-C++, you can set the CC and CXX variables when invoking configure. Similarly, if you need to specify additional compiler or linker options, you can set the CFLAGS, CXXFLAGS, and LDFLAGS variables. For example:

    ./configure --disable-static CC=gcc-4.3 CXX=g++-4.3 CFLAGS=-O3 CXXFLAGS=-O3

    Once the configuration part is complete you can run make (or gmake). Running make from the xerces-c-3.1.1 directory builds Xerces-C++ library and examples. The library is placed into the src/.libs directory. If you like to build only the library, you can run make from xerces-c-3.1.1/src.

    If you would like to build the tests and run the automated test suite, run make check from the xerces-c-3.1.1 directory. The automated test suite required Perl and the diff command.

    Finally, to install the library and examples you can run make install (or gmake install). To change the installation directory, use the --prefix configure option.

    Some platforms and configurations require extra configure and make options which are shown in the following table.

    Platform  Compiler  Options 
    Solaris x86  Sun CC  ./configure CXX=CC CC=cc 
    Solaris x86-64  Sun CC  ./configure CXX=CC CC=cc CFLAGS=-xarch=amd64 CXXFLAGS=-xarch=amd64
    (for newer Sun CC versions use -m64 instead of -xarch=amd64) 
    Solaris SPARC  Sun CC  ./configure CXX=CC CC=cc 
    Solaris SPARCv9  Sun CC  ./configure CXX=CC CC=cc CFLAGS=-xarch=v9 CXXFLAGS=-xarch=v9
    (for newer Sun CC versions use -m64 instead of -xarch=v9) 
    AIX PowerPC  IBM XL C++  ./configure CXX=xlC_r CC=xlc_r
    gmake libxerces_c_la_LDFLAGS=-qmkshrobj 
    AIX PowerPC-64  IBM XL C++  export OBJECT_MODE=64
    ./configure CXX=xlC_r CC=xlc_r CXXFLAGS=-q64 CFLAGS=-q64
    gmake libxerces_c_la_LDFLAGS=-qmkshrobj 
    HP-UX IA-64-32  HP aCC  ./configure CXX=aCC CC=aCC CFLAGS=-mt CXXFLAGS=-mt LDFLAGS=-mt 
    HP-UX IA-64  HP aCC  ./configure CXX=aCC CC=aCC CFLAGS="-mt +DD64" CXXFLAGS="-mt +DD64" LDFLAGS="-mt +DD64" 
    Mac OS X x86-64  GCC  ./configure CFLAGS="-arch x86_64" CXXFLAGS="-arch x86_64"  
    Mac OS X PowerPC-64  GCC  ./configure CFLAGS="-arch ppc64" CXXFLAGS="-arch ppc64" 
    Mac OS X x86/PowerPC  GCC  ./configure --disable-dependency-tracking CFLAGS="-arch i386 -arch ppc" CXXFLAGS="-arch i386 -arch ppc" 
    Mingw x86  GCC  ./configure LDFLAGS=-no-undefined 
    Cygwin x86  GCC  ./configure LDFLAGS=-no-undefined 

    Note Note that different UNIX platforms use different system environment variable for finding shared libraries. On Linux and Solaris, the environment variable name is LD_LIBRARY_PATH, on AIX it is LIBPATH, on Mac OS X it is DYLD_LIBRARY_PATH, and on HP-UX it is SHLIB_PATH.
    Note Note that Cygwin and MinGW are different from the UNIX platforms in the way they find shared libraries at run time. While UNIX platforms may use the LD_LIBRARY_PATH environment variable, Cygwin and MinGW use the PATH environment variable.

    Building on Windows using Microsoft Visual C++
     

    Xerces-C++ source distribution comes with Microsoft Visual C++ projects and solutions. The following describes the steps you need to build with this compiler.

    To build Xerces-C++ from the source distribution you will need to open the solution containing the project. The solutions containing the Xerces-C++ project files are in the following sub-directories in the xerces-c-3.1.1 directory:

    (For VC7.1)  projects\Win32\VC7.1\xerces-all\xerces-all.sln
    (For VC8.0)  projects\Win32\VC8\xerces-all\xerces-all.sln
    (For VC9.0)  projects\Win32\VC9\xerces-all\xerces-all.sln
    (For VC10.0) projects\Win32\VC10\xerces-all\xerces-all.sln
    

    Once you have the solution open, you need to build the project named XercesLib. You can select Debug/Release, Static/DLL, and, for VC8, VC9, and VC10, 32/64 bit builds using the Configuration Manager dialog. You can also select whether the Xerces-C++ library should use ICU for transcoding.

    When building your own applications you need to make sure that you are linking your application with the xerces-c_3.lib (Release) and/or xerces-c_3D.lib (Debug) libraries (or the static versions of them) and also that the associated DLLs are somewhere in the executable/DLL search path (PATH).

    NoteIf you are linking your application to the static Xerces-C++ library, then you will need to compile your application with the XERCES_STATIC_LIBRARY preprocessor macro defined in order to turn off the DLL import/export mechanism.

    If you would also like to build tests and/or samples, inside the solution files mentioned above, you'll find several other projects which are for the tests and samples. Select all the tests/samples that you would like to build and then right click on the selection. Choose "Build (selection only)" to build all the selected projects in one shot.


    Building on Windows using Borland C++
     

    Xerces-C++ source distribution comes with the Borland C++ makefiles. The following describes the steps you need to build Xerces-C++ with this compiler.

    1. Change to the xerces-c-3.1.1\projects\Win32\BCC5\Xerces-all directory
    2. Run MakeBuildDirs.bat
    3. make -f Xerces-all.mak to build the library, examples, and tests.



    Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.
    xerces-c-3.1.1/doc/html/faq-distrib-3.html0000644000175000017500000004371111363617750017226 0ustar borisborisDistributing Xerces-C++
    http://xml.apache.org/http://www.apache.org/http://www.w3.org/

    Xerces-C++ 3.1.1
    Readme
    Installation
    Build Instructions

    Programming
    Samples
    FAQs

    API Reference
    DOM C++ Binding
    Migration Guide

    Questions
     


    Can I use Xerces-C++ in my product?
     

    Most likely yes. Xerces-C++ is distributed under the terms of the Apache Software License version 2.0 which is a fairly permissive license. In particular, it allows you to distribute your application in binary form without requiring you to also release the source code. Read the license agreement for more information and if you still have further questions, then please address them to the Xerces-C++ user mailing list.


    Which files do I need to distribute with my application?
     

    You only need to distribute one file:
    xerces-c_3_1.dll for Windows
    libxerces-c-3.1.a for AIX
    libxerces-c-3.1so. for Solaris/Linux
    libxerces-c-3.1.sl for HP-UX on PA-RISC
    libxerces-c-3.1.so for HP-UX on IA64
    libxerces-c-3.1.dylib for Mac OS X

    Note, however, that if you built Xerces-C++ with dependencies on other libraries (e.g., ICU for transcoder support or libcurl for net accessor support) then you will need to ship those libraries as well.

    You can also link your application to a static version of the Xerces-C++ library in which case you won't need to distribute any extra libraries.


    I do not see a binary for my platform. When will it be available?
     

    The reason why you see binaries only for some specific platforms is that we have had the maximum requests for them. Moreover, we have limited resources and hence cannot publish binaries for every platform. If you wish to contribute your time and effort in building binaries for a specific platform/environment then please send a mail to the Xerces-C++ developer mailing list.


    When will a port to my platform be available?
     

    We would like to see Xerces-C++ ported to as many platforms as practical. However, due to limited resources we cannot do all the ports. Here are the Porting Guidelines.

    We encourage you to submit the changes that are required to make it work on another platform. We will incorporate these changes in the source code base and make them available in the future releases.

    All porting changes may be sent to the Xerces-C++ developer mailing list .



    Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.
    xerces-c-3.1.1/doc/html/redirect-3.html0000644000175000017500000003754511363617747016640 0ustar borisborisSample: Redirect
    http://xml.apache.org/http://www.apache.org/http://www.w3.org/

    Xerces-C++ 3.1.1
    Readme
    Installation
    Build Instructions

    Programming
    Samples
    FAQs

    API Reference
    DOM C++ Binding
    Migration Guide

    Redirect
     

    Redirect uses the SAX EntityResolver handler to redirect the input stream for external entities. It installs an entity resolver, traps the call to the external DTD file and redirects it to another file which contains the actual DTD.

    Running Redirect
     

    This program illustrates how an application can use the SAX EntityResolver handler to redirect the input stream for external entities. It installs an entity resolver, traps the call to the external DTD file and redirects it to another file which contains the actual DTD.

    The program then counts and reports the number of elements and attributes in the given XML file.

    Redirect <XML file>

    Redirect is invoked as follows:

    cd xerces-c-3.1.1/samples/data
    Redirect personal.xml

    The output is the following:

    cd xerces-c-3.1.1/samples/data
    Redirect personal.xml
    personal.xml: 30 ms (37 elems, 12 attrs, 0 spaces, 268 chars)

    External files required to run this sample are 'personal.xml', 'personal.dtd' and 'redirect.dtd', which are all present in the 'samples/data' directory. Make sure that you run redirect in the samples/data directory.

    The 'resolveEntity' callback in this sample looks for an external entity with system id as 'personal.dtd'. When it is asked to resolve this particular external entity, it creates and returns a new InputSource for the file 'redirect.dtd'.

    A real-world XML application can similarly do application specific processing when encountering external entities. For example, an application might want to redirect all references to entities outside of its domain to local cached copies.

    NoteThe time reported by the program may be different depending on your processor speed.



    Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.
    xerces-c-3.1.1/doc/html/graphics/0000755000175000017500000000000011363617750015565 5ustar borisborisxerces-c-3.1.1/doc/html/graphics/api-3-label-2.jpg0000644000175000017500000000535011363617747020425 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ x"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ýø×…ÏLj‘ꚤ.žž Ö..õ;„Ci ¥›Ý³¼fXw—òDH‹ vyF²9XÛ´ËË]n8î4oµ]ÚÝÝ\[éæKS ÝÚÅy5œ.,ã’ᣒ墸’Y˜¨rùìßä³|Fÿ±š÷ùG^g¤jú†ƒ©ZjúMÇÙ5+ ÖWb&’Örމsn."™"»·/çYÝ¢ ‹+¤†òÒX.à†hù±’ÅÇ Š–_K _5y`hã+ÕÂá+bÕ)<5,V&†[†©YBëÑÂbªÑ¤åRž¼â©J£ËÍw%eÌ┤£yÆ-Å9%v“”Sz6–§ÒÚ×Á/é^Õ4þx’ÃÄ~½ð¦¹}ãMOÚ͆¥s®ßÿÂ9ªøKJÕ'²ŽÆîÇHº×|0𵤓›ËÝ3Å:¥¬·ÚCØËi±­Kà}Sâ=¯¡ÀZöÅ-ô»¿ ø&ÏòhðÝÖ´ž'Ó¼G¨·„¼/{âMORÒÓOžá®î|I¤‰4ëû…Õ¿} Ä¿0ø_Åšÿƒ5˜|AáËå±ÕmÖTK‰lì5(™&]²,öZ¥­í…Ê“¶E6ÒˆæH®#ÙñáÔe¶Õm$»xṔíéךV¤AºŽ`³Ïet‰v ]ZÍ"ÝÚMä0ÏòÔü ñ1­ŸÖâopYÞ2†YŸæ<še˜|LJ§Cx£‘C_0Áæx¿0È2Œ«6á\&a•Ë…x–„1wq? b²:9a3ifxH*JŽT¢çJ8ˆMµðô%UÅBQXxU©8W”'íè·УZ5]WÍOÑ~[éÚ¿nõ]Y|=a¥éš'Š×~Ôt}SIÕŸÂ^}ynôÖ!u¶†uÍjÊÎ(á‰t½kPÔ4Éc¶´Ií%[KaÎá|0ñ‹-Åà3|ä•óz¹†Q‰â ÙŽqÅx§ŠËr.áJYg帺ô±häðâ /PÇáñ´1ŸÛ9G‰sWŠâêTñ=¥ËçÓ–¢¦¡QRP§B<³«Z³©Vi5zŽ‹Ã8Ê.>Ît}Œ9píÆ^¡Ãë>(ñ–™á¹µ©4OOªÉ¨ê>&ñ×|%ÿ T_ðÙhZ.›¤êZæg øjày÷W·®¥¨k‹ªZÚe¢XÞIŸ,|<ðyâ ®¯ÓÄ—ri’Kw—m§E¦ýŽ3£ééi¢µ£h–Å-½ŽmÝäsú¼7ñ‚ž3ƒÂøˆñ\;ý•àp•±Yçá8—ŒÃC)Ìójù–:†‡ÂË7ÏòÜ˱Ù$0컆ø³3Á`%F `°P±™{Œd𜵽¥IIF•)QQ|ð¦¡âß%)ÂN5ã*Ô!9]Õ­)v 🃼#o­\j ¯xo|Mãox8麶™¢,ž¸·³´ñ.»çèž œ…Íê ÑtöÒ—O½a¬Â'¶eÛñWÂÝ Âž ¸½¾Ö,á*µÓü+ª¢AãÏ_EüGÕç‡ÓÀV3Íã]&ó@¶ÔRK­kS˜YÞ5à‹M··žÊîo.ÿ„Ã^>ºð¼×WšEÝ캉]CEÑ5-JÎöâ[)®çÒuëý:ç]Ñ üš}§öŠhú•ŒzŠDÑ_%ÄRÌ’;VñŽ»®iVzF¨t‹˜,ZÌÃ~<5á«È–m§ÙÁ{â»m"êV–öl–ñÙê:½Õ H- „µ•£AëPàÏcŒáyVã,è`8®¾7ŠñsÍsº¸¾!áì7+«ÃßQËh`2ü›$ÇK)¡šä|C’ÓÃⲌÒXïõ†®2¶w \²#Ë],<ï*ÉI*U¥ªÜórJ‘çp«J¥ãR¾ÉERrSå袊ýèòÏ<ø² øsâÜÐ,ÿéDS¾+É:ñwý‚›ÿJ-è ÿÙxerces-c-3.1.1/doc/html/graphics/program-others-3-header.jpg0000644000175000017500000003244211363617746022640 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ#È"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ø^Š(¯õ ÿœp¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢¿£Oø-7ü'öäý™ÿnï‡?ÿf¿v¿ >j²¯„>-ë¾¾øIð£âž¹â«¿Œ_<'©KuãO j>&´ƒQÑ4 Î[m/ÄV6–香쭭¯ïnïdùŸþ I«øSâoüïöý¸¼EðÿÀ^øóñ“âÕßÁ/‰r|?ðì~Óül†ж0xÎ].ne}šÏÂÝ6úÌÝÍ©\Xiž6“MmbâÎËJZü¯"ñ1Ìpü'˜æ|9†Ë²ž1Ĭ[ŠÁg³Í18leL.3BŽa‚­’å~Ê©àk¯m…Äc!NJ>ÑEI3úŒ¾ŽùfC‹ãl‹‡¼A©Ä|YÀY4¸‹9ÈqÜ#W ¥‰É)bp8\N+,Í©çùÞ^Œó <–  %jÉÉSnQå?è¯Óøu'í6þøãØu„GÀßþÿÂßOê6Ô<7áO…> mÀšÅ½×Åïø³ÃZáûûÕø…£Xéúo‡o|Yu}e®}‘f²Ò体å[?Ù¯Æ>/ý£¯f‚^,ø]ûJøþÒçF·‹\ýŸ¼y¦øûáåòêÞ±ñ,÷–þ3hô› ]7@·º¹ÓüI©êÑi¶:N¯£kVR\8±3IöxN-á¬Ö>©eõ£ƒÃâñXÉÆ¼U,&ˆ–SV|´ðÊ…hJ3UçNNub%Î~1˜xiÇùT0³Çð–w‡Xì^YÀEàªT«Åç8ZxÌ®Ž/iWñ´*Óö3ÃB­7^qÂÊqÅ5DùæŠý)×à—?­á*Ñ<ñoöXøÓñSÀšeæ¯ã_€_þ:èÞ1øçá{-7Ú‡Sø.›¥]9•5…ÝåõÅÎË=>Þöòkx%üß·²¼»¼ƒNµ´¹¹Ô.nc²¶±·‚Y¯./&•`†Ò Xѧ–æYÙaŽÑ¥yYcT.@®¬«?ÉsÈWžS™aqË áõ…F§¿EU‹)Ô§5¥Z”¨Õ”U:ÑŒ¥JsQ“^ðWp…L.%È3,žYŒ*Oñ˜yF–3ØÊ0¯ =h9Ñ­W9Ó†&„*:ØyÔ§ôéÊqNµúI¯ÿÁ-¿hO éz —‰|sû9è|U¢¦½áÙsYøÛá½3ö’ñ%”‘<ñÅáÿ‡—±Ai­êRE‚='KñÞ¥-Ê6Ÿ«êJlÇÏÿ¶'ì—ãߨ“âæ…ðS⯊¾øƒÆ¾ øs¦|R³‡áö¹¬ê¶±x[Uñ7‰ü'o%Ô~#ðß„õd¸M[ÂzŠÌñiSiËÖJš„—2OmmÇ€âþÍ1”pvw€Æã1ÄÔÃÐÃÖU'Z–“Û֥ʹjP´Šx·F«çTgQÓ©Ëéçx…Ãù^':ÎøC<Êò¬ÔÖ/ŒÁN5L{«5î^õ,L¥F¢«†œcˆÂ¾O­R£íisü·E~˜é?i·ðŸÀ¿ì|">øçð¿þúxÏPñ¶¡á¿ |)ðShþÖ-î¾/xÅžÐ4ßÞ¯Ä-ÇOÓ|;{âË«ûë-sì‹5–—%ìŸ9xöWÕ¼iñÛâ'À¯‡ÿÿfIð¯Ã2ñ·Åß ütð™ø¥xjú×ÂÏ.¦¿µ–ÑíîF›ªx»NðÞ¥gœú„Zý¦³k¥Í®‘{{Ãq bÖ"Xlï^8Z8Šø©S«xáéá±Q­íåkRœq_¹)¸ÕªÚ•(N I¼g…þ åë ñœ#aÖ7Ã`ý¦ßW2À¬ËðéIºÔjàš¬ñ4Ô°Ô]éW«N´eM|¹E~‚|Gÿ‚qüYðgÁ_þÐ^ø±û5~Ñß | t¶ž=ñìÛñ‚×ât~ }Ö‹3kûtm6_n³—P·Ón5Í>Êáu+ËXtÈ缋ʿc¿Øïâgí·ñ3]øUð«]ð'‡üCáÿjo/> ê~ Ò´Yt]+ÄðåÅ­­Ç‡<1âËçÕûÅšt°Ã. £ZCzï{ÑÁÍÒâ¾­–c³šy¾YnY9ÓÌq\òQÀÔ¦¡)SÅS”UjQ«N\•)ÆN!4œd›Çá¿`¸ƒ)ál_ f´3üú*¹.]RŒULÖ•gQS«€«ÎðتR•°u(Öœ#R•Jr”jBQ_(Q_¥ÿà•_´·ÄmÍì¼Cð3Ã_5ŸŸˆýžº»°×-¾x*-+Zñ6¸ºn¡a}§Ïy.›c`×vw‰ Ü«irðóÏøF<]YqWÉ8bZÄÂN¬kNœ£óJµ)C ‰š­ET¥É†ÄÍÏ—YöŸ„¾%Õ­–ЇñµÍéV«—Æy}Zj´hTÃQ­ Χ$0ÕéÖÆ`èË Š•G¶Æ`é*N¦*„j~~Q]·Ä‡~0øGãï|1ø£É x×Àºíð‡¼sû=øKšWƒ<=ã?üoñ_ÄËß|ðÄ^*×¼SáýÚ·‹üoá_ ê3ø²êãÂ¥ëèú'‡µm¦K§]\ÝDo£ˆvcø›‡òÈàeÍð8hæxz¸¬ºs­ u ?Uç©…”9£^ÿ]Â*q¦å:ÏJ4cRSHò²Žã<úyµ,£†³|u\‡†Àgt©a&ªå8¼\±Ñ£G1§S’x7|³0u§^0§†Ž,LéFœšü²¢¿A<_ÿÍý§|ñŽ„:ͯ€Ò/Äãñþ‹ /VŸ >Ò–3øïSø‹¬ÛévúN‡m¨K ‹Ã©éÖšÜóÜØ›"î KNšïÏ?jØ—â×ì©£|<ñ‡‹5ï†_>|U¶¸ŸÀ_> øÈxãá÷ˆ¦´….®,lµ™4Ýåym7öwöv¥l·2iw÷¦ÃP[L°¼[Ã8ìF ƒÏ2ÜN#3¤ë`)QÄÓœ±PPW|­¯l©Ó«7‡“~ZUeìíN|½9‡†Ü}•`³ŒÇ2áû‚áüBÃg8ŒN_Z”2úŽ­**uÔâ¥õwV½ [„g„ç¯F>Úõ©ó|}E~’~ѳþ×ÐÁ'bÏ·ëß³>ƒû%MûLjx[˛ǰþÑZÏ‹dñíöYþØ´ºøi.‰¨¸ø›öX|?öoºÃà_"î).ùðÜY–ýSÍ19~Y‡Âñ7‡a_ëëB¦'Ž–«Öx|°¼µð¶¯`Aâ*arœ× ŽÄÒÃSÆU¡BmÕ¥†«Rt©U«NQŒ©ª“ƒäSQ” áQEÓ©Nrëâ/øß„°Tó.$áœ×'ÀVÆO/£ŒÆPäÃVÆCK:4kFR…^ZU¡ÍRœ¥ITö”9ý½´áÈQ^»ð àö¿û@ühøgð[ÃGi¬üHñ~‘á˜uâi­ô‹KÛ€Ú®¹u:I=®…¤Å}«ÝA ¦·²’8s+ ?¢ŸµÿíÙ?ì5ñ·^ý‡¿à˜¿þx Uøi¦èÿ?jïx+ÿþ&ø“â Λέ¥é—Þ"Óu68ôin¦ÓµkÝ"îÇþ8õ½/Ãú7‡4 \ê¼9×ÖÀæ¸,ƒ)˵óÌn¶cõz¸Å—`pYu °Ã¼faŽú¶6­(VÄÔŽ K Å×­R5_³…:SšúðËýiÈó¾/Ï3ê<+ÁÙ+—bóyà^iŒÅæxšOY–¼f[GV†F¾*xœËJ’¯„¥JUñªT_äuõ§‹à£?ðPˆþ ñ§ƒ~2üVø#ñöËÆ^×ü0²|Qý—þYê~mwI¼Ó"×üâ/‡Úw„5Mľ’öMWÃZ¼ë¨ÿfjé éµa[sŸûþÇ_ÿm¯ßü)ø}¯|:Ð|iáï‡7_uëïê^%Ò<1=¦“­xWÃz¥¾“>‡ájs&­â»)¬mîôøa:|7O=ôw1CÏU<ç€Ë±Ùa²ì‹Š«W†Íjæ˜/«Ù)U•zÙ^W^›„ä¡(K Õ8Íê—˜ðfSŽÎrŒ—Ã~"Åñö/8«,- ¸z¿æ‘Æ«Ê#¯˜æT+B­8ÊP­K$¥BpºåòÝí?²×Àß~ן| ðWáWˆ|ˆ~!ÂOýƒ¯xV¿Â ÿŸ…üCâÍSíš§‡4_.ë ê6VÿcÒ¯sª-î>Í žæßëØgÁß>ÁItO…_u‚ZßÇÿ„¿¾=ü-KÏê.Ô¾ÿÂSà?üJðçŽãÕ®<#kaã_³ÿcXkÒø}¦ê?Úrèo¬éöv’^@šfÜAË(æñUðµ3«!ÄqðŒKÂEàiG©WÄb}u…ÂÕ¯ƒ­FxŸcYÑP©SØÔPQ—ŸÃ¼瘮Li†É3Î1ÁpSͰ¹sÌ*PÎ1²õˆÁÐÀ3\þÔ?´ÏXü¾¡à‹/MãíF ÂÞ ¶Õì ñSé¶Þ*—S‡Ã¶^"K϶‘s¥G«Ü\jO(skÿðKÚÂö&™¯øçörÒ>4ø—A#ðïì·¨ümðíí%â ;ìÒ]•Ð~]Á¦·|!†`4ý'Ä·’\E%”0Ëz¿g¨Äq>K—á²Êù¶cËgšáá_ J¶*2Œãì©U­:u9aυêÐö¸É•FtçUÒö‘GbðÓ‹±ÙÏe9“f|KÆUÂcñyf_ˆp‹U+ÃÒšç†3=gC/ŒªâªÊxáãˆÔ>Ký ÿfŸŸ²ÇŒôχß|ÿ'‹õ YxËMÒ?á#ð—‰þÓá½CUÖ´K=Kíþ ×¼C¥ÃçjžÖ-~Ç=ìWñýΖÕ-î-eŸÂ«õÛþ ÿ”£ü3ÿ³ðgþ´?ÆŠùƒà÷ì!ñc⯀4ß‹^#ñ·ÀÿÙçáWˆoît¯|Dý¥¾)i? |7ã­VÉÚ+»}¾ÛQÕõÖ‚á~Êomô¥Ò¤»ÚÁ¨K=­ìvÞ' ñ wäþÛWÐ,ƒÄPê·ºÜ:DZÞKCý¥-û/á·íûbüAý»üiðkI³øKcû6þÊ_³=„–?>Zjmªjn1YÛÿÂKâ«ï"ѯõ¹!ÓtôI.,ãM.Ú;¸-fÕ5k_×oýoþ {û_ø öäý¼tŒŸ ¼ñKÂþ ðì¯áÏ„W—ü9£h²j^)Ó~)xÏÇwh³øsÄÞ-Òo4¿ìŸéÖ©$º¥®£ý©¦ëp>™µœ—×ä¾pM<·‡¸[ÒÌ¥eX† 2ÆV«‡É«ÖU)b>§€çú¥ Õ(ÉÓ•g øû;ÃáëVÞ .¦Ótïø³L²š@e³´ñ.®-š9.K‹¿ðHíFøMû7ÿÁV>1|/Ñôßübøgûx†ïáÆ££X[Ç­Åw€þ1x¡f·kxÆ¥{,'ðgƒdV;‹dž3_Á@ÿkÿ~ÓÞÿ‚`|*ø}࿊Zv§û"|ñ§‚~'ø›Å>Ñ­<¨kZ÷ľ²ÿ„OYÑXJw©V®G˜Õ†>T#NXˆÔÁÎxZn½HûO-ÿ‚ShàïÚÛö/ñ‡mš_øƒãGÂÙuÞë]ŸHñÿˆ4í+ÆP6 Û®â³ºð†½¬éú¢Ç"C=Œ—z'YnOÕøm7üQñ á&Ÿo§Íà üvƒâNŸn<†±´ñ–³û?Mñ¶÷M†21ÿe|e¶Õ~Éh  )<>Þ4KX"_—ü ûnÁ<ÿdOÿÂØý˜c/ÛÄŸô?T‡áo„>0x“áî±û<ü/Ö¯ì®ô» CDñ7…5MCÇ^$Ót;ǃLOÀú¡¶HÛízFµ:Å—çÿÀ/‹~ür“ö±×µôÕ¿h{âäÿüM«^5ÿ‰/µ›bûIÔ!³’¤Òu}©ØêV6ÛÚ¦©Üév¬6ò×~/*Îx£2Ïó._ŽÈ(â82áL2Í >'›f5jW¥ˆt°µñ<¸|ªIS§ˆœãíjã1/ §J¬ù%Ä7ÀÜ7—RâŽ!ÉøßSÆŽãü ,“S7Ã`¸w(ÅàÖ*•˜ŠXuN¦o–ÓÅR«ƒ¡OØa¨ÐÀañS§ˆ¨°Ô:oÚî}CâGüCöïø“ã§}kÄþý®~.|=ð½íÿ$ú‡¾øºëÂþ þÉóÙšÊm?ÃÚN…å³$–ÿaŠk¶Kþ˜ÿÁÁò”†ö`¾ ÿÖ‡øÑ\GÅoÚÛöø‰ñÏUøßàŸØwö«ñ¿íeñÄš6ª¿ Uø}¬þÊÿÆ^×Kðö›âmBM2é~#kí¨kÚEî»á{í?ÂÚ‹u®£Ôlb‡VÔ/®íÿÁy<]¤ø£þ ¹“¥Ü%Å×ÃØãáß‚¼F‰"Hl5­Kâ?>!ZŲ̀ìÐK/‡¼k£_,Rˆäh®’`†)c‘ü¬®¶*§xc¯‘ã²zÙ7 q.K°ŠÕ)a¸o R4#†ÄW”ð”+S…:8©*t1Ù,?7%U¬â:p©áßÒ7ˆèq^YĹ?g‹È%–âqµéa°^׉+ÓUá‰ÃÐ¥ƒÇâa_›—Bø¼=L<§ŽŒ'V—?qÿ¡ÕüG¨~ÉðDo…ø£Ä:W€üsû>x‡]ñ†ôRêÃMñ£àŸ€ÿ³¼>¸Õmà‘êm7Nñ_‹4Ë)¤[;OêâÙ£’䏸+ö8ýüCûYø‹Åþøk§øÀž ðï…e×>-ü@ñTË xKÂÞXï-ÚëÄ:¤/}uqnuOìëbûÌpjW·WÚf›g¨êV½Ïüö¿ðí=á¿ø&¯‡Þ ø¥§j²'Á/x'≼SáÍÓÁz†µ¯|1øKàû/øDõÄÚýÅÝºêŸ 5¹gÿ„‡NðÕØ³Õ¼9$V“\_]ÚéÝïì3ûdøödÒ?hφþx—â‡ÀÚáußÃOŠš/ôí;Ç«¥6â½·†fÕõ=L¸’÷Añ¿Š4©ìîuï¿Ú/¬5(5›gÓ>Ïwéäx'áÿ q”òœ¯“‰á˜çØŠ8JÔhÊ´©ã8«UâcJ¥ZT±8˜äÕ¾µ‚¥Zª†"pÃP›ä—!ñuŸpWxÉáþ?⪰ðî¿p,Ç—cñp”ñØ‚¥T15°ð©WGû{„Áãñ*—µËðóÄãhÊ”ãíÏПÙáwì‡ð¯þ ÷ÿœð·ì»ûSø3ö˜¼µýü`~&[øáоxkÀº¥—Á/Ú=|7q§ø§\º»Ñ¾$'‰d‹\kžDÓ“ÂðË{#.­§íòø6úê{ïÚc^½º•纼ý5K«™¤;¤š{ü –i]%ä‘ÙØ÷bMxOìû{~³—…ÿhOÙŸÀ?²ígmû(|yø=â߇_|qãMáôÿ´Ÿû@ñ‡t¨ôíÇWðoÃ=>Ù4xÊÂ(ôy§Ô×UÕàÖï|K©Ãig¢GÄÿÁ,?mï?±Æß‰ßu¿‡?´=ÏÂH~øëáoÿ Áš×Æ[øÄ^¹ñψ¼ á«íRë¾k-bëEšÒÞãÅr˜4­%t¹Ì)‹áþ%Ää^,a§—ç¸ì_`òŒ^SˆÌpùE fcìrÜ­ÑÉÕ F®je‡¥Z8O«Ïå‹fÿPÄñ?à8ƒèý_ ›pÖ_à..Ïp9ýušæ´²zY–a˜ãð¸·Ï±Ìß„Ìcˆ¥ZuåŠÅa¡Œ•Z:’˨àêK3þ}âO|dÿ‚œ|ý¡¾,øŸUñçÅO‰º÷í ®ë^%×'yç‚Kÿ„ÿZúÚÂýžÆÖkÁpðÚÙÇ¥…³Òtû{]>Ê*[øÇã7ü'Zñ‡Äïê>,›á¯ü*×áGý6ýÂéžðŸÃŸÚ/Hð·‡,´«Dv°­‡ì´ëHJÄícTÕ¦3jšÍýÜ¿>ÿÁ'>9xoöCøÑð ãWÅ_xÎ|=ÿ…§ý½ øsI°“Åíÿ g…>#øOKû—â=_Ã6-¶ûÄÚuíÇÛ5[,i‚{‹´Ì ¶¸§ð{ã÷†ÿá¼&ÛXI£M¬ÿaÿÂOý‡¿O{X¼K.‡ý¹Ö±ø‚KHÍý}¦?‡±/‹óœn+¶^PÈòúÔ¨Ó%ŽcœÔ–_BÖp’£WÝ4£GE}”£ùÜ|AÃ.̰xž&§ý©„úGb3¬U)bœ±xrt2%Ê ]ýV¯ÔóZSÄP“©VøçUËëu]o{ÿ‚¯\Mÿlý»lw·Ù ¹ýš/!ƒ?»Žæÿöbøb·“*ôp--üÖêÆ%'¥}[ÿø§Æ^7ýºþ|Õ¼W¬ƒ¾ý•´ß‹ÇÀV×2[hÚ§Œ¼Qñ{â„õ}KSŠŒÞË>™à¯ ÛD×Fcci§ß[éÿdÖ¨÷?šÿ¶Çï þÕŸ·×íiûGxž?ð§€¾$Þ|³ð½¯Äm ÃBñÏü+Ï„žøq­Ý4>³â-k;gÂ×wú\ú~¹çh·Ú]ÕÚÙ]ÜËcoì?ðSßÚÿÀ_·'íã |døU࿊^ðWƒÿe|"¼»ø—áÍE“RñN›ñKÆ~;¸›EŸÃž&ñn“y¥ÿdøçNµI%Õ-uíM7[ôÈí¬à¼»áÊ82†'Áš˜¼¶¥¸wƒóLg:´á/ìÌÆ®OÃxZ4ª¶ß³¯9a±”bááÕ5ž¾ŸqÆGGô°–OÄ*xž)͸'4áÉakÆ/7ÀágžVÆbð2IF§Õç™`+ÉÝV§Zµ*Њ«MÊiÿÁcüoã»دþ¿ð3Ã^-Õ7…ì®î"U¸z}·Œ^Y?¯?à˜~Ó<=ÿåÿ‚ÙÙÛÄ·þÇ:­î§©Ü({ý_U‹à§íM;jš…Ãn–k¦¹A%ð„n%kvWi¢·ôyùÇölý±þ~Ͳüsá/‹¼%ñ3Å^+ý«~]|*øp¿t \³Ó|C©xã‚#¼ñ`ÔüQ êVz5¾¥ñ3C¾º¸Ðtß_E¤XkwK§I=­¥¥ÿÁ8ÿkkߨãS´½ñ7‡Ä?†_¾[|.øÑð³Q›û2_xcSÑ­!¹Š&»†Hmµ­.o´[‹}BÜÁw§_kZ,ï`ÚÔlz³ÞÎñëÅzXL I<ß1ávWNR§FžoC(Ër ™†J’4ñ/ŠË¤ëJÝYµRJ Èùîñ…2Ì£èÝšçù¾S†ñ¾#åÜKU©âqy n"Ì8žžYÅP§ WT0pͲ¼Ý,5:Ž8z4Ö«N—oÿð®— þÞ?²Æ±on‡\ñ‡ñSPÖu–,úŽ¢šÇÀˆÚÃÚ]]·ï¥³IÖÎShÌmÚêÊÞñã{¸–zùoãçüžgüþÏëö¯ÿÕ«¬×íoüâgì\?n…_ ¿c_Ùcö¬Šy4Ÿˆ×¾3ø·ûP\xP³ø3ð÷Eøm⨬ô†ð|>Ôµ=9—[ñUǃ<Þ3ñ¯¬xèú•Æ„%™©®Ë6W^(ñ7†`y™³ãO‡ž0ðw‡bÊ6kÚd0(;Úy#XÃ9U?/þ׿|Cðßöôý¾tÙOe®k_µ¿ÅŸZ‹”‘%¹ðwÄY~#øò#'2YÝxgÅÖSZº×t ¯Žéšž£¢êZ~³¤_]éš¶“}i©éz•…Ķ—Úv£aqÕ•õ•Ô “[]Ú\ÅŽÄ.’Ã4i$l® Ô¿ˆ_ðP¿Ù£ö™Ð¼57íëû+üMñwÅ x~×Ã'öý“õïhßµÝÁnžÊ׿qq¢xWRx/.f¾ŽàjzÕ•µî£ªI¡è²žæÇQö3œ&g”ñŽ‹pyf'9Ëñ<>¸{5Âåò óÕ³ ÙŽ0Ãáñ5ððÆP”ñxœ>2«M{ ԩ׌gù·fù7øSÄcsÜ·†3ªœ[CŒ¸w1Ï*ÕÃdy´êà0fi’cs 4kÿgbÕ,·ŒË+bi<"ª¯†«[RT§?ý˜c«OÚ'àWí›ñÂÿâ‡ü ?²ÂY>+^è¿ð…Kâ¯øMí ðwÅ\éÚ0øŸD›Ã^L? Óí±i>&–Oí>=8¶ž-¯þêÿƒy/í5_Ú÷ÇÚ¥„¾}Ž¥û+øªþÊ.X¼ëKωß.-¥ò¦HæÌ†D.Xã•7m‘ÁQò¼ðQØçàoìÉû^~Ï¿±çì¿ûqx›^ý­þx‡á/ˆ<[ûJß|-𕟇WYðoü¥ë–‘ø jÒæ?EñWÕdÒ„¯Imm§Í¬iN£‹Á3k=Oöø¯ào‰º—…gñ>”~'Ãoˆ~²½´µÕ®4BÛ@¼¼5ü†m—à3 X *téå˜9c©IR©*‘–#4¥Št^a[›÷Q•*)FwÃøü(â_³Ì^u”ÔÏòÌ÷1—ˆØì—3Æfø tªæùƒÊqþÊpk““bp±3ÊhG%B³•,N3š­^þ öþ'öIã§ü/¢}‡ü*ÏŒã'ñ }M}9ÿëÿ”ö|yÿ³úÿ‚†ÿê9ñ¢¹Ø»öôý„bÚÃðÎ_²‡íbŸ ÿÆ–ßþ%üt¸ø[âo‰º„µÝÅúgƒ>èZˆü7à?JOÝøb]gÄwþ0ñ'‹µé—Zr_Nó^A«|ýûþ×þøeÿ$ø¥ûnø·Á´ÿ…þ-ýª?jÏ‹º_…%ðæiñ5<-ñ·CñÍ¿„á¹Ðµ?XxyuK)¼g§&½¿‹.tëf²ÕWMÔõf¶n¸3œ{Ÿf×þ Kûhøžî?í¯j¿¼i᩸*e‡Äz•4„ñÆP‡ Gççíus©|Fÿ‚‰þÝßünï«x§ÃµÇŇþ¿¼iÞçÃúÂoÜø[Áo¤<ÎÒX\iþÑü=Ÿ{jñËjlb›OkUoš×ÃïÚWÄ:'íñ«öÅøg¢x—ÂW$ý´>.þПô?ˆ:?ö>¶Þñ·¦ñf™¢ø³J±Ô/mÐj:&©/‡üMm£ëWÖ™—T´Óµ›…HïOÛ??mø'†µñ_Æ?´¶‰û~Ô>"ý¤¾ _Ãã-cáÖ£¬|>Õ?dk¿Š'I±Ó‡õ™ô«Áñ _‰ï4Ý?Uñ†u è>+½·½¦­ýå߯C›äüA‘çÉ1ù¦¯à8wØ`þ¨ê`3\.1âêÓÅLjÆN­8O¥:Tç€Q­kÒrð3<ó%âL‹Å ʸ³(áÌú¯‹Ž/†aÅbpÔón¯–à0ryf/F¼ñX¬¶¶ ½o¨Sp¯ˆ¡™MÐç‚Å{?Lÿƒ‚ÿå(ÿ ÿìÁ|ÿ­ñ¢¾„ÿ‚ÃêŸðLÝã‡ìíðcöšð‡ü;ÄÿÿgÝ|#ð§ì·¢üÕ>^|>Öµ kFÓ¼Gqañí5ûï¼6º6¥q6z'Ùt=m¦µËsù‹ÿ4ý±| ûuþÝ>ø×ð»À_|àß ~Ê^øM~~*xwÃÚ5å׊ì>(xËÇ·CL¸ð—‹|o ^ØG¥xëN²ó\Këišäa–v÷מç«~Û²×Ư‚_ < ûw|ý¢ømñËöX¼ðßÄÝGáýÇöw‘àßøoâV¥¥hÚÆŸbºF˜"Ömß]Ö öQÝ[YéWz—Š5|¾_ÂÙæ†¼0Äbpyå)pÖ5Áç šµ*Îy¥*4èciR©% DpÒÃK‰£NnºÃãêU¥ ÆD}ÎsâO Uñ?ÆL™…N9ÊøO™®}VêÖaS%xÚ¸Œ§™á¯S.žgC0†'ЍéPúæ[B…Z´ªÖ ß†þÞ¿¶§ÀÚ’÷ö"ð_ìËð—ö™ð7‡?g/ƒž-øâÝ{ö‚ð?„<7}®ø3DÐüÂE[ßø³ÄÚ=íþ‘7…¼X5)fÓ¼/kowâXãÑ­%‡P¸µ±+Â~1|Yý›Ð4–ñ4ž6ø‰ûCø³Ãž'ñZÞÚéOáÈG…|1aa¡hi¡Ü隤Ñ…ÌÚ«x—ξx Ñ­–R¿_á<» •d8<™á0ôêcjB†qR•\ÆŽÄâªO:5«ÓýõJÓ¯J §5*5)Ò© 5a:4ÿ’üeÏ3!ã|FašÇ‡>¼²Ì§V· b*âršñÀàᆢã*¿šQEôgåAEPEPEPEPEPEPEPEPEPEPEPEP]ý{Tð¯Äø£Cš mkÃ~1ðÆ½¤\\ØØj–Ðjš>·c¨éó\iš­­î—¨Áݼ/-Ž¥ewawµ½å­Å¼’DåŽ"1 ðœc8NXÎJQ”e )FQi©FI´ÓM4ÚjÇN¥JX¼-ZS*´±4*S©NR…Ju!V„á8µ(NJQ”Z”d“M4hÚÆ‡àÏþÊš÷í;ெü-ñþÃÁþ ×m>+è¾éÞ.‡V‰5–ô_Ûx5¤1Ar«ÂÑÌ‹²d‘Yþ>üFñÏÆ¿ˆþ2|Vñ6©ã‰Þ9ñT:мa­Ì²êz­ÌËtv”…!³³³·Ž{K ;Oµ´ÓôÝ>ÒËMÓím´û+KhJ+ùçÀHB´¸¿Z1«‰¡œ}FŽ"¤TëÑÀÓö³§ƒ¥ZIÔ§…„Òœ0ð’£%(Á5sý úT·„àì» …o „ÄðÏf8Œ.º8zù†+3ÃC­BŸ-*¸ÌL!â1SŒ«ÖŒ#“’ŠKÛ(¢ŠþŒ?Π¢Š(¢Š(¢Š(¢Š(¢Š(¯»ÿàœž'Ôü;ûMh¶6Ph7ºŒ|5¯xKĺg‰<)áoiz¯‡îŸOÕç°—Lñn­ØBÒ_èºt¿l¶¶‚ýc†KTº[K»È. +縶©ÃüjB3öN:\³Š”y¡‡œá+I5xÎ1”]¯%%f“>ãÃ:•)x‡ÁS¥Rtçþ³äÐæ§9B\•qÔiU‡4Z|µ)ÎtêFöœ%(I8ɧûgÿ©ñmÿìGûx£PýôŸ~Οė°ð§uoƒÿ þø#WÖ´=fOìëûs«h¾¶Ôtë§³¹ž+mWJº±Õôó#K§ßZ͉òðJÒÚÓá…þÏÅö›k«¹Ê–&[™¯®|É\±$³U;UQBª¨ù€QN Xê‰TÆã3 gÖñ“JX¬W°•*t>³ˆ•ê×ö4Û§KÚÎ^ΖއõwÓ ¼69e˜vðùn 6ÊáƒËèþë„…\“‰« 6Ÿ- «ˆ©:õ#JœëNudœääýVŠ(¯ÜOᢊ(¢Š(¢Š(¢Š(¢Š(ÿÙxerces-c-3.1.1/doc/html/graphics/program-3-label-1.jpg0000644000175000017500000000521011363617750021307 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ x"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?û«âÞ£áÝÇ5¿xIð…´+ïë¾"ñN»ukc¢è.‰m}ªêZ®«}{siie§ÙZZK5ÝÝÍÌ0ÛB¯4Ž>uûüOø_ûYj_~"øâûRøC㉥¢êž$ÑdÒäÕ¼ðûâ>¹áøŠ} V¾»µÑõ]7Âι¦ÙjpÁªb\Ù®·¥é:‹^é–~“ñOþJ?¿ìdÕô©ëšÐÿö¶ÞÖY.ôs«i:ÛYÇ<ðË=—™¨èšsÍqa%­ÔÖÑO§Ë3é××ö·=&—ñ;ÆÚ7….¼¦ë[ègWÊCŸV³‡Ä–Ö>!²Ò"ø)ð«Âךþ³¯\øÊÇÃ?Â? ø×û Bñ¿ÃÿêƒÆÞ*ñÊhz7…!øƒáÍ?ë:>³á[MCÄi®éÚLsèéq7\:=Å–©—⟃?"ÿ„ûFðŒ¾9øn†—zhÖµ çLƒYø‡}á‹#ðÞúØ^êúÖŒšÖ­s/Œ-dÐຸðõÞœžŠ7:¤^'âo‹=ñ†.“â jÞîÂâßÃ6—[h^Ò¤¸µðjø†? [Os¤i67SA¤CâZÚÞ)fxÞÍt›9Ök_øz-ñü\øƒ¹ªø5äþØ×€×þü²»×‡æø³¯Xè_£øY¥FúÏ„ì®þ!Ë|š®é´™£ðô>Ãi§‹Jâ?‰“UÓÚ-¦íÖÊ´_< f.´Ý_^×%ð®âOÚ?XºÖô½+Âã\¸ð­MÒ<ªÙOs`ooxÞ{½3SÑçñ ø~Hãtæ³Õšm@|ç¦|Añ~‘ÿ÷Øu}Ÿð‹xΈ:7Ú,4Ëï+Å÷Ø~n¯}öë+ŸíœÿÂ9¤ì°Ö´4ȼ»Ï*É?µu_¶ÈßühúS诮HÚtž¾ð|‘5–šf}Tññö¥j׆Ïí­uâ•[ÛÍ\ÜbæÈ [÷ÐÒèæ¥¯îÒÓK++§g®±vq~Zï)êøÄ’X©5{9NnR³ŒáÏÝÙT‹j¬zsÉÂê*Hõýká§Ã?ìž/Š/Ãà›o†>ñÖ³áKßh-â鵟øÂóÂúO†tßÅàø´«q¨é0ÃãtÔ.|rlô”»Ó>ɨJ¶º¥Ï›|_𯇼ãÝKÃ~}iô«/— ¾!¸±ºÕíµM[Âz±®é÷siÖZ}¡:^·¨jda-cEfžxó̘û—ö5ø}Æ |lñŸ‹|O¯Ç}à?xÃ:v™§éþ›AÔ4F¿5–£¦k¾×ÞïJ_i aâ ]Å÷mª¦·ý³q¨¿çŒ|Q«xÛÅž$ñ†»$rë>(×5M{Sh¢·š¥ìדÇk <†ÞΘÃil–ÚÙ"È։ƊJ)sK²ONdöÛ›Ý÷Wº¬í»ºÂÔ®ñUiN¤¤¨C–W›qn¢£:i&¯/gj«ÚMóÍN*IÛNnŠ(¬ycÙ_ðߟvz|Òîÿ¯øoÏ»<“ã¸'áŽÿ \?úq²¢ñ×þI'Žìþœlh¯W’£+ÏÇÿ¤@ø~%mãé__öJúz¹ÿÙxerces-c-3.1.1/doc/html/graphics/senumval-3-header.jpg0000644000175000017500000003025411363617747021521 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ#È"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ø^Š(¯õ ÿœp¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢½3௄¼=ã | âÝ_þÿ x×âg€ü%âm{ÌŠìOxÅ:V­jþtàÃön›ys{æL Iäî¿a¿à¥_µ/íÁû þÒrþÌ_±ÿ…üû#~Êžð?ï<â낞ñÑøèÚ¦iuâ»ÝSXñ÷‡|Aiªj/‰eÖ¼-®ÚÅwmâ4m¿ˆuÍBæOXÌÿ!žq6'/β®Êòì6a›æ˜ÓS4ëÛÛkËËnð¡Æ<-‰©—Ò¡žåµjæ“t°ãˆ=zª¥j*+³¥^UðØŠèÖöujWÃ×£N«J¤#ÛŒð¿Ä<ëŒàìûC‡©*ùÅZ˜ ª<;£…ļS’MWÂÓÃcpxªØ¬7¶ÃÐÂâðØšÕ!B½*’øjŠûöeý‰>0~Ö>øùã…Wž0~Ï^Ó¼Wâëw~%Oøª[Hñ¶¯§h¾Ó4 x‚ßYñâxT±·°Õ/´(fÔo´‹x®Ý.nf³öé¿à•_´lþñ†­á~Ï_þ ü;Ñ[_ø…ðáÇÆMÆ|a»]§ˆ|£ÙÏ¥Cjb–ìÛO^_ßÝÆtý"ßQÔ+Y3Œx_.ÆWËñÙæ_„Æákaðøœ=zêœðõ1T°õðþÝÉ(Ò§R–/ %Z¤£F.½(J¤g8Ŭ«Ãs̯ dü#æY^; Æà±¸<«ÒÆP˱8¼&3ê¾Í¹â+PÄ`1°xZQž*K ˆ©NŒéÒœ×Èß³çìÓñ³ö§ñž§ðûà7‚¿á;ñ~á‹ßjZGü$~ðÇÙ¼7§êº.‰y©}¿ÆZ÷‡´¹¼SÄ:=¯Øà½–þO¶yÑZ½½½Ô°xU~éÿÁ¾„Û/âYf/AÈ üTø.ApA =³†0ø;B»ñ‹f_ümð׉¿h¿it1Ï©O¨ü?ÒãšÕæ°IQe²°×ïon.+=>ÞòòâÖÞ“¿fŸÙ÷ƵGÆÏ|ø{©øcGñŽÿá#þÈÔ¼e{ªéþ·ÿ„cÂZ÷Œ¯ÿ´o4MÄ:œ>v—áëØ,þË£Þy—òÚÅ7ÙíÞ[¨= 7ðî3˜ãð¹ÆƒÊ(O™W¥YNL,(Oõª©.o«N…*•¨â#Q¯NœåBu%ošÇøyÆù^e‘dù— føˉ±T°9…•™ž:¶*Ž`°Ò›TÞ2ž3C ‰ÂÎpÄa+V§ U:2œSðª+¯øà믆Ÿ>'ü*Õ5}[ñÂ_ˆÞ5ø[â»Ï jjZ/ü%>ñ÷‡5Øì®.-l/¾Ïöë %¶MKNÓu²Kn÷š}œÒ4 ô¯üÿá'Ãߎ¿¶7À…_&Xüâ¯Þ.½l÷OdšÐÑ|9­ø‡Lð»ÝC,§‹u'OðÛI¡½eÕÊYMÓC"öc³\&'Æg“s­Á希ÖRÃÇÚT«„ÃágŒ“¡ ÇÚN¥7J7<œUÕÏ3,á¬Ó3⌷„(`³œË=Ápì)fxjx\Ç¥—SŽ2n2tiRÄU·©Ë% jSJI+üwE~»þÚ?·ïü‹à7íUñ—àÃ{†Ÿ²Oìïð·ÆÚ—…¾ü+µýþø—ß~i²¼)ãÙgñ_…îeÔ4ßèÉa­É7†5m2ËJ¾º»ðß”ºŽ…¨ù#ögø•ñãügö|ø•ñIøO ^x£öœý˜¤ƒEø=à—øyáK[#ƾÐu+ȼ*š†§e§Üë¥ÚëÚ£Ù^:_x‹S×µ´wpÛCó™Wçì¦yæ/#Àa²Ê™5\ãWŸ¼ÆµhÆ„qp¸ªk(ÂQÃT«IÍÊ®˜Ð§:nõ/ÿLâÏ ¸c‡³Ú<+‚ãú¹—Qâ,AeXÎÄe ñ˜¨`êã2ü_öÎaG3†­ZSú®%e8¹ÐœªN• Ó5ñýû[ÿ1ÿ‚˜ÿÁF~ÿÁFj€ÿÿjøU? >ÿÂÿ„W¿ð£þxçìŸðœü ðŒµÏøžxËÀZ—‰'óüI©k—üLµGÊþÑûŸÙ,--mcüŒø·ñßö¢ý¤þ!Y|Jý§~:ÿÂæñ•àËoé±øyðïì5޹©köy´} Æëì·Úî¾ûî¬$ºŸûSl×o ”0ß g¼CÄ,«6ÅäY>]”æÙf3¡W ÄxÌÇ0§ n–' J¶ ¯ å¸u.Jª5å Âjœ“öj¼lÃÄÏ ¸€1¹öA…ñ1資ó `196/+dØ*ò¥;Už9Ãñ.yMÉÓ”+aáWN#.Jõ°µ"â¸Z+ôóâüƒöø1ñ|Mø“û8xÿð‰è~*¿øËã?Š—>ø;¥Éâ-_ÅšN™áI|Kã øoYÕ|fëàÝcVºÐ¼3á­u¬4F²Ô¯®-âºUO•¿iïÙSâŸì™ã-ÂÂú­¿‹¼3eã?x×Àšêø›ÀÞ9ð­ûƒ\ðÆ·ö[ î­<Àã½Óì.Ö)m/±°Ô4û«¯C-âîÎ+á°Ùfu€ÆWÆÐž' J[ËJœc:Ž•ÒR©NœáV¥ýµ:2YÓ9)?ŒÏ<5ãÞÁãñù÷ g9^+ÅÒÁf8ŒVQ¥ƒÄWœ©ÐX‡/gF½hN… S_U­‰„ðÔëJ¼eM|ÙE}Iã¯Ù/Ç¿?do„Ÿ¶wˆüUðæ…ÿ>#]|-ð~ƒ¹¬ÇãåñMµïÄ{QÒïü7eááou7Âÿµši~)Õuã¹ÒˆÓÕ¦¾M<Ð?d¿ëß±çÅoÛwþ¯‡:7ƒ¾;Òþx«N×µÍgNñœúÖ¯©|7Ҭ?øFæðĺ[^|Qðê4Ú—‹4»³ö}Qb²–X¬cÔ:Ö“Ù{oí,7²þÙÿW¹ù¥Ëýµõ¿¨g|?ï\ÿgåø}¦œÖÔãq„±°±áìÊXšü3þ¹Q£*S­ÃPY§öÍ$¤ý¦û>Kx^§³k÷|Ï”ùnŠúóökýо.~Õ^ý |ðÂÿÁéeû9øFÇÆ,ÐuÛ¿§Š×ü|á€Þ5ø©¦è_<]àÉ-’îÇÄšWÃä°¾›MÒ5H&·–ÂûÅz‡‡-Ú «[«™-­.aùø'—ÇkïÙ;öÔøc⿼ú&Š/Äï†L–ÐÚ[Kð·â˜¸ñ'‡l¬"‚(¬ü­ü9Iš3,òx.Içšâi^â_DoßþÊðK?Œ?´†_?nωZ/ìÅðzFHí·Âÿ^k⿈4õš7‚ãJ×µdÿ„Y‚h®—ív¹I Kаµr<‡:Ëè¼jâ:ù=³ íU)Ty£…Z²EN·+˰Æc±0Tå>L jIFv·­†ð£:\{ÄÜšâ¨å˜ž¡žb3œÉÑ©_ F–UK—V0œðÓx|ç1ÄeY~¼åN4Þk‡ÄTN”_çíö_Á¿ØƒÅŸ¾ø7â‹?hÙ'àw‡|io¨'…5Úãï„þêþ/}\¿ð¦«}§øbÖÛXÖm£é¤bïJÓ£™ óm#k9ìåŸý©¿dŒ_±÷Ž4¯|^±Ð̾#ÑÄžñ7…5”×ü'âÝÎÖ²j:§ö{+–[{•\Új:~¨@³Z\Éf,ïìn.{¨q.C‰Ìå“PÍp•3H¼L~¤ªZ¬çƒ—&2+¥ õ0“N8šteRteícY[æñ¼ÆYÇŠ±\;™Óá¹ýQÇ9ú¼Þ SÌ!™uzÏø¸j…9Ó©­Š¥Fž*5i:2›©.gâ¿ìÓñ³àƒ>üAø£à¯øF”«7VQ•gRP88Ó‡ÑøÁÀyw‡œW…É2œf7Æp¿ çô嘺ÅÑ­œäøl^3:¸j8j5©CñÃJ8j2§†©GWÛÕ£~Ø_ ´ÛörtµÓî4ÏÁa/ÅØ@‚/|1â]]†âÉô˜L¯¥Øø¦ãGñF4•¦œ¿—ž ñ ·„|gá/^øsBñ…Ÿ†(¶’óÃ>)¶Ñu[MJxŠÒ`šëBÖâ¶}3W¶ŠxdŸOº¸‰%˜8û[Xøùÿ¦žñøóá§Ä?ƒz°Y7ˆÅ>4¼Òþ+h¶7˜>}¤6VÓéË#[Ø_ܤ1\·Äq¦ ,̨að™· f¹å¹WÂcòu‡úöWŽ‹JœðÕÖ;˜àqJ2§ŠÃ_î8bêS,j~Ïàî3‰²ÜÇá>8á^ÇÔ„0™–AÅÕëRÊx—'©yV£ŠÂ×˱¹Fo†¤Üã_Z¤38F§¶ËiUn´èôŸðS?Ù_á'ìÅã¯~3øâ GQøûY|;Ôþ(üÓõÙ.fÕ´›="×ÂZ¶³¢-Ýðæ™‹ãïjú$ºÈâÚjºv¥%ýÖ‹sª^Ðñ‡üà?À¯ |7ø½ÿý­>~Ê^%øáûMoáÿï¾ø»ã—ÅtÐ o¬o¯¼á íu íîu–{»µôë¹cÓïõ }V ­:ÃäßÚëö·ø‰ûw|søsãíCá¬>~Ͼ—á§ì÷ð^+ñ©]øwÃóÙæÞ_ê÷Fv“UÔtû=*Î𭵕®Ÿáÿé¶V·g}ªß}·ûbþÝ¿°çíI¯üý hÙö™ø‰ûWü5øacðËû/áï‰<§~Ξ1³°ÕµmvÒãÅ׿i»ø“¥Acâ{Ä:µ®á­'·Ëaâ;ÝoßM?SÓ¾V/Ä<&EÁ¸ SÍ'V«Ìéqa—RÉ3,û7>ÃÔ–jªå2©W5‡Íó9PÄÒX¬:š©x‰bOØéež×ñ Ä,f]ŠÊ`¨äù.;†ræüAÃÜ'‹Ìªºßë…./!«C:¥‡ÃÎŽ“d´±t«ÓÃã±4>¥Z¶]¾Ÿ ÿÁÀóËüûáåœnÉmyûøúæ8I®ìÿhö¶ÓȽXmîf…ò#r½+kþ 9ã_?ìUÿ_ø£øÇZð÷ï‹?çñ/ÄMH¹k4ñEÏß×Ã0j3BRi­l¬¼sâÈⳑÞËíº®©5´×ÚN›5·ÊðQ?ÛàíµâOÙëãRüý <ûYÙü3Ñ>|Q»I<©~϶~·ÖüMâ©•%†µ«ø´ëÖ~7×dÔ-.õì;M?ÞEâBÏL¿·ç¿à µÿ€¿iï ÿÁ0>|>ð_Å-;Sý‘> xÓÁ?üMâŸhÖž Ô5­{áÂ_ÙÂ'¬èž&×î.í×TøY­Ë?ü$:w†®Åž­áÉ"´šâúî×Nò8w†óŠx/0™†Mˆ§.Çç´³˜â)Ò<$éäÙ• /š3©Ñ«–X*ð»stª%“_eżqÃëWÒ=Éx“+”xÏÜ«Âøœ&*œ§™b0¸Ê1¸EYã0Øz5)bðµ—¿J’U Ò—Ú¿´ÿŽ~Õ|]ñ‡ŠÏ‡4i¾CáhµÏŽW ¾»aâkßǪ~0xyÖ=SÂzfœWIñ+L-…‹jg‰¿kÿx_þ ûN~ßð…üRñÅÿŽ_|ão êþðæ«xJÑt_|ñ%çü$×ÿð“[øžÆàÙü ñ¬_Ù¾Õí þ§áØe»Š+ÛéôË\1›SËq†SZŠž6Lj¦£NœòeÅpÅG3“MsPX¢“njŒc[%Ê|DáúüIáÔ±\Qƒ«—Ôú9O†1s¯Šæ§S‰á”²ú™N6U/)báš}v”a‰nœq5q5!+â*N§ÞßðLM\ð§ì'ÿ›ñO†5KÃÞ%ð×ì—s¯ø{_ѯn4ÝcC×4ƒßµ£¤ëN£i$Wv–™mo{c{k,W·PE<2$‘«‘¿à€ºcøoöéýž5=n¥ÔðÞû.E­x‡Àº¶£«i_t=+á?í=}«xKRÕ´«-sKÓüGaÆy¨è׶𵕽ä—:uÕ½äPÊŸü)ÿ‚†~Ç?±ç€õ_~ß²‡í['í=ã…QxOáþ­ñ»Äücðo൧‰4«u ø‡ÂÒÛëþ)—MŽ+Oùü5¤jz‚Ùµ”úž¦ê:¤Wܹ¬qxÌãÆ|“’c3"çxúø,¾:N–>x׆†®xŠTãíiâ1j8J¯Kï/ø"Tº<_ðUø(‡¼3öaáë_µç„<¶lgƒ´ŸÚ‹á«xjÚÍÓ(llô››kKŸ»K(-ãˆÑø×þ ºÒü5qñæÇÄšî•.µªxà/Æox/M³†ÖçW»ñD5Òt mô+{¹má›Y¹ð¯ˆÚM;ÆÔuÙ®´ zÚîÒÓZѵM_[µÖ<9®Ù0‚èiÚö‰}4ÀK›S=®«§Éí­Ì~®/ƒó¼düIË©*yÏp¦Q–f¤éÑÌ1y~ 9£‹£*ªNpŒåZLš|Å^ÓWOÆ«âweÙg†™õ:¸\N‡||â~$Ír¬…\V+Ì*Ó¯†Ì¨aЍ“§[ŒmÔ¡N Ò”£oПكöÈÿ‚D~Í¿´Ÿíƒà¿†ðW‰‰ X_|wøÍâOƒRµÎ¥ð÷âO„~xßÄ:Þ£á&K¿ëϤ^ZøGÄÒøWT·Ñ3ñ^µãø¯ÆúÔž"ñOˆ¼Sâ)"¸×u½o]¸‰/µ}SW¾I5-KRÔ¤ºÔoõ«»Ë˹æ˜uv£¨hú…Ž­¤ß^iz®—yk¨éšžu=–¡§jS¥Í•õí³Åsiyisw·VòG=¼ñ¤±:HŠÂ|IÒþ.|WøëñÂÞ¼øcðóÄÿ~'k ¼¨xZßÁwþø[­x’ç[ð6‘}á­:ÿRÐô›Í'CÔ­ô‹›^ÜxvÂk°Ñå–ÒÕ%“»ø7㯠ü6ø‘á¿xÏᧆ¾0øSK:½·ˆ>ø¶ëP°Ñ|M¥ëz© ]Bu=)ÓRÑõ]>=PëÖì¼ËÄZ~•ª¤&Ïìòþ³þÌU©à*:ŸQUa•§BW?aÏ•YÓÃB£•°üÕ*S¡k9Æšr_ÍYÖ¸¿„Î3ì=ZÿÛKâU,F/ âñ§<á¼*øºôaI¬\£…£[(Å•:•¹c/ÕŸƒðTíâæáÿ€ðRO„þý¢~]Oo£iÿ᲋JøÃðÐ_ì?á!Ô'±6GÄ6Ö´/©x‹ÂwþñÜ]ÍÍÜ_µ{¦µ›ñßì³£~ÅŸðWŸÙ›àF‰âÍ@Ô¾3þÌŸü>¯änŸø§ã]·‡í­õ‡µŽKGFñ'„üC¢Ü]ÛÁl·ÖÖš~ªöVTK8|6Ûöÿ‚Qø'_Ò|}qûþßZçŒ4˨5x¾ Câÿ„Þ-ýŸî5+YEÍ®›qãèn£ø¨x|Ü$qÊu&ÖææÐ2j:TÈó[Kâ6ÿ¶gÄ¿ðRÁAh¿Oá­+ŸþÏáß…¾’ÛWÔ<#ð‹á‡t?Â5¤>¥w¥ÛêÝÂéÚŽ¤eÕoô¨µOëš½ÔÃ@Ón-mm?#Áä˜Ê9¦i.ȳžáüogÎ2\ÅáèåøŒó QËe‘å”q¸¸a1)Ë-Ãþ8øçâo~1|Hñ—Ä|>øð³þ?øG¿²üû8xSYð?Ã} û#A´Ð¯²ü/«ßêŸÙÚŸÙvšÍ÷Ùï§ûn½¨ëšŒ¾WÚâ†?ÑŸÚSö¬ÿ‚EþÐ´çÆŸÚ;Ç? à­öþ=ø±yà»?ZøÁ³,^OøV^ Ò>h—^ƒXñµ¬­ž¥£x~Òþî}C\Ô¾Ù{<×V‹ai,V0ü9ñ¿â/ìg¯jÞÒ¿do~Üz7Ú¿á(ÿ…ƒ©~ÕžøW§i6ÞE¶“sáOøF/>_MäùÞO‰mõ¯í¸Û̹—ñi¸ß~ÿÜ (Àðþ |3Änu‡—fxÜV° ‡ÀáçŒR«<]Z…\VFŒéÑŠ•NHC’hÇé ˆâ.)Åñ†i‚â?ó¾ Y¼sÌš–•K‰å†néÖ§t(ãªÊ…V#ÛR«Zn8Õn38[ô§þ3ÔµÏÿÁCþü1ÖõÍJïáÏ…¿c½7Çö> yö¾$ñ_ÆÏˆšˆo®-WoœÚŧ‚|/ÒV’+ˆü+¦[¼^I¸Ybÿ‚Â9°ø ÿ&†Ì-´Wß²¯Äm6ê8bIllþ ~Ê—Ö¶¬¨|‹{¨cš±²7@2käÏø)ïíà/Û“öñÐ>2|*ð_Å/ ø+Áÿ²¿‡>^]üKðæ¢É©x§Mø¥ã?ÜM¢ÏáÏx·I¼Òÿ²|s§Z¤’ê–ºö¦›­ÀúdvÖp^]ŸðP?ÚÿÀ_´÷†ÿà˜ ¾x/â–©þÈŸ¼iàŸ‰þ&ñO‡4kOêÖ½ðÇá/ƒì¿áÖtOk÷vëª|,ÖåŸþ;ÃWbÏVðä‘ZMq}wk§xÜ-ÃY¾àÕ:¹U|4ò¹ì³¸8B/,fEšQ„±*/G_^œn¹¹ªÔR–­³ë¸û¸o:â¤o°âL;ľeáh¬O= Ò®…ÆÍàã$£,M-Í{Eð¥F•(ÙR§N?X~Úÿò?ø&ÇýŸÕ·þ¤¶U üCyÿã¯í9ðàqÿ #ö0ˆ#ê xæûa~Í~'ý†<%ûþØ? ÿh¿x[à·Æ{o¿üAû0êžµñ}¿ˆaŸÅ—Ñè¾'±ø†[O:ÞøëÆPß_麈µ ¬|AZèÖzƒâ­*ÃÀ>ñ牮»ñoÅâËê~;ÖµŸüA›TÕ¡ðÓÖ·àíOŠÃF×EåÄdÜEIO(†Aª¿â1Ð⺹„e†úŒrþÓ~!ðö©1Ím;éú¾gv°ÜE,4!%ãfSæ_ðmNŠçö¯øƒã sSÔ|Kã~Ê>$×Òl$ñ{ÂYáOˆþÒþÇ¥øWðÍ‹m¾ñ6{qöÍVË`žâßí3-® Ž¡…á±ðxø{ZMº•£ˆ«U¹Ö”ê~ÖþÚ>Öÿm_Ø»ö ý°üa7ˆþ-ø+ÄzoìEñº 0&Õ5kÿkn…ðËXÖfbËö‰þ §‡Î4’0·f>FÌ%¿ÂßðT?è·Ÿµ§ÂßÙ'Á7Ñj? ÿàž?¼;ð¾K‹Cÿýsã_‰ìmõω^%’ (‹T¿ÕîDZ–c‡ËÕü=uå@ˆC¿Ñ?ðOø)…ÿa¿üyð÷ÄŸ‡~-ø³á_YøÇÿ|#á}+BÖÞÇã®E¯,uÝ@Ž×N¾»µðýýö³¥¶«¯éw¾Ю´M"æò1ÇŸÞx¿ÄÒø»âgÄi®®¾#üZñ§‰>"xÞòú-ï§ÖüGª\ß\}¢‚Ë y&–ì[È7@÷’FzW‰Â¼7›eÜIŒÀc0îŸ pÎ35Æð¥^déâ?ÖyÓÅÊœ#~x¾„³<®“¯C1qŠ”a/c<@á¬ÓÂü7`1Ôªx‹ÆyEÁ|kAJؼ5NŽ+Íou‹t(õ=CÅI¦êZ†‡'‡ ?ã¸Ã…óŒë›NŽMÅý F…Éa“åùna—æYfSŽÀ×§?íœ}9Ñ«„­™bq5¥Jƒ©8C J¥%÷m_ 2Ÿ x»‡xW:É«b¸»Ã Àbó<û:–q˜q. ®5Îr,NS¨¸{&ÄQÌcžYG…ÂÖ­hNxÌU:ßY~ýÿÿ’ÿÿ³cøÿªöY¢¾Oÿ‚þ×þý§¼7ÿÀøUðûÁ´íOöDø%ãOüOñ7Š|9£Zx/PÖµï†? |eÿž³¢x›_¸»·]Sáf·,ÿðéÞ»z·‡$ŠÒk‹ë»]8¯¼ðã.Çe\)†Áf8j˜L]<Ó‰+N…T”ãOÄy¶/ 6“k–¶½ÐwÖ"Ýž‡àÿH|ë)â4É3,—†Ì°2à Ã,N¢©Oë,ª8LU=jPÄQ©J¤$“RìâÓÑE÷'àáEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPìÏü²Y#ÿ‚}ÁkOØãZWS‘ÿ Sö¤ÉŽŒŒ~•øoðûþDØ¡á¯ý2ÙQE~wÂßò[øŸÿcNÿÖK*?¢¼@oþ%ÿÀ=vÿ_måÿ¯}Q_¢ΡEPEPEPEPEPEPEPEPEPEPEPÿÙxerces-c-3.1.1/doc/html/graphics/install-3-header.jpg0000644000175000017500000001716411363617747021342 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ#È"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ø^Š(¯õ ÿœp¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Šý8ÿ‚7ÿÊH?g/û«ßú¡þ(W“ŸæŸØywû­cå–iõokì>±ýŸƒ­‹öÛÙÖö>ÛØû?kìªû>ng;r¿£àîÿ[x»…xWëÙÿë7d|?õÿ«ýoê_Û9ž-úßÕ}¶ë?Vú϶ú¿Ö0þÛ“Ùûj\ÞÒ?˜ôWÒ¼9âÿðQÚ·áUŽ©¥§ˆ|iÿøéðƒÁ÷šØm?EÒäñÇKßx|j÷>™y|º]•ö°’ßÞŧjš ´ºA}2E}=âø%§Ç|Qñ?É?f?„é jú‡ôŸüSø¾|àoˆzþ·áŸ ø i ‡ˆ<7gãoÍ¥AâíIÖom|‘eâ¥Ñ×Qšæ?›Î|_‘aðù}Lˆ˱9†SO8§‚­RS¬ð²TWIFš–#ØÕÄB›TéûI+ÔöJ›Óâü'ãHæùî[“äøÌÿ ‘qøgšà(5‚þÑ”+Ö´ªÎ+ñ8z©ˆš£ Ž4yÔ/iù£E{?íð â_ìÉñWÄ>-iúGŒ¼5ö9§[ص-+SÒõ;u¼Òu½Qˆ"ÞéZ«‰måhๆDžÊþÖÏQ´¼³ƒë ;þ ŸñvÃÀžñïÆOŒŸ²¯ì¹mñNƒVð†ÿiŸŽš?ÂßxÂÆí#’ÎM#F¸Ó5EK‹”žÐ?R»Óõ+g¼¶ŠþÎÒf’8ú±\OÃø,‰Íð4ð™¤c<¶´k*« RUÔðp¥í*b!-UœéBQ§M©Ôq‹¹ãe~ñ¾s›f¹[ÂùÆ'6ȪJ–u‚úJ5rš±®ðÞÇ1•eOVxˆÊ…*UçN¥j©Ó£É4~tQ_IZþÌž#‡öŽ?³O‹þ%ü øqâHvI}ñÆÿtko‚úm•ï€âO‡õ+ÿˆú ^ Óc±ñW‡nt¨¼=$VóKu¬kšN“u •Üó­·èüËöøû)x²ÓÄ_ ¾)þÍ_ü¡|ð^«¨üñ÷í ¬IûLü@ñf¹ñCÄ^ºñ¯‚þøº×U—ZðSi3i¦ó[Óü[¥iö­àŸo,º]ÝÍ矋ãlƒœpþKâ-BÆy´Ø¬µ[/>ãI»¾K+ãmèÿ¬¹ö¤2_í\"Í*N­*x7S–¥ZÔ`êÖ¡JM*u1©ÆU*aá9V„#)J FM|÷úƒÆêå^-\7šË‡(Âjù´pÎXj1#G‰®¢ÝZ8Jõg t±uià Rs„aU¹Å?4×ÿfŸžø àŸÚ{\ðWØ~üEñ=߃|ãøHü%sý±âKŸZ]i¿ðYë×/Óü«xª?¶jºƒÿeoŽéÒûMkÃ_ýš~6xcà'‚iísÁ_aøñÄ÷~ ðoÿá#ð•Ïölj,n|]iu¦ÿÂ5g¯\x¿Oò®< â¨þÙªè6ý•¾;§Kí5¯?@mù@ŸücþÏêÛÿR?Û*Û_þP'ÿØÿ³ú¶ÿÔöʯ„¥Çy´þ£|6]þÓâ®mÀÕ-K­”à¶ýŽ"Å»f2þÍ¡íkK› .z¼˜HsCÙþñOÀ~­n\ã;‡·ú=e~,Ðæxû#Äÿª¿ZÁU¶Ÿ·É%ý·Œú¾WÇQöxoi™b9*ûoÈš+êßÿ²G‰þ5ø:÷â5ßÅïÙÃàÃÛ/_x0xËö†øÕá…º]ï‰tÍ'G×5 7M³½û~¿|m4ÝGžK¸4f°f½òbº’[kÔ¶Óý¨?bOŒ²–•àøÏSøw㯇­dºøñWá‹ãñ·Ã߈­a¿1iºËXiWlÓi÷j3ͦÅeªÙy÷MÝòY_o»ÿYríHd¿Ú¸EšTZTðn§-Jµ¨ÁÕ­B”šTêb)SŒªTÃÂr­FR”ŒšüýAã?õr¯®ÍeÔaFµ|Ú8g,5 Š‘£‡Ä×Qn­%z³…:Xº´á†©9Â0ªÜâŸÇôWîçÂø&ïÁÿÁ2þ%üq×¾/~ʶõmÀ¯ƒ>4ø×öŽñƒ> üðÿ‰.> ÞÝü6øÛ­ÙéžðwÅXí¼Eâo ê^Õü'â©­¼Gâ¿iVº„¶º…†Á*¬iöµøñáØ—Æ¿²7ÄO‰¾øWñCÂ7~3ø“âOx»àˆô?|Køw§Ï­x?Ä_ R/jðêþ ‹Âš¯‡õ-ílõß_ß=´·:j›Ÿˆ¹5l¿Šñym«b8O_ ‹£™U–U…­R„p²•hcý†5R¹b•(Ô©‡öþÖ•Ká•)R«Sô?_G3ðçÂX\«ÄzXZÙ~e’aãĬ֪bá&'+X¬²U3SÂÇèÓÆ,ðøŠ~Ë0ž&–+ ‡ü–¢©|ðÇ>#Çà¿èíÄ߈,Õ[DÒ#ðJEª'‰5[íbê×M²ÒSO´²†icŒÁgpRÖášÞáîK9ýI¼ÿ‚Qüv±Õâðÿ¿dqñö}4êVß³ü4?…Óö€º foÍ¥¯ƒ¦µ‹J¸¹û*™„‘x‘¬!ç-éƒ÷µô¹§d9$èÓͳ\_V½9Ö§OZ1©ì)µ¸™Å]ÒÂÒ”£¸ªŠzr’S«Ñð¹?‡\iÄu³J|5ÃÙ—ÓÊ1•08¬^U„ÄVÂËWÙÐÃέ*­‰ÄÂJØl i¬}Z1sXUË%Ì:+cÄ>×<%¯k^ñ>“¨h>#ðæ«¡ëÚ&«k-–§¤jú]Ô¶ZŽ›¨ZN©5µå•Ü2ÛÜA*«Ç,l¬úIñGþ Aû@üø‰‚>&üIýœ<áßøDô?_üeñŸÅKŸüÒäñ¯âÍ'Lð¤¾%ñÇ…ü7¬ê¾3uðn±«]h^ðÖºÖ#YjW×ñ]*¥fE’eRÂC1Ìð˜Yfqð1©S\],/Õý´°Üª^ÙÇëxeSæG^œiFnIy'ñgÃ2©‘ä–e ›ƒÂfÒÃÐoû7˜&7…õ[xfËÆ~ñ¯5Õñ7¼sá[ö)¹áoì¶ÝZy€+Ç{§Ø]¬RÚ^ ca¨i÷WEw`1ø,ÓC—âhã0X¨{L>&„ÕJUawã%Ö2Œ¡8»JŒ¡5E¥äg6kÃùž3&ÎòüVWšà*ûfFt18zœ±œTéÍ'Ë:s…ZSW…ZS…Zr9ÆOæÊ(¢ºÏ4(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š+ôãþßÿ) ýœ¿î¯ê‡ø¡_˜õöì ûAø3öXý­>üyøƒ¦xŸXð‡?á;þ×Ó|e¥j$¹ÿ„Ÿá§Œ¼aý›g­ë^ÒæòuOÙOyö­bÏ˰ŠêX~Ñp‘ZÏó|g„ÄæÅx â1˜ÞÏp˜L=;:•ñ8œ¯F…&Òs«Vp„nÒæ’»GÝx_™`r<;Íó‹ éÚ¿Á xéâµ² BVßÅ^+ñ†¹ ΓmÔ¼M¨]$ŽÛÉð_ƒß¼7ÿ áãÚêÿž?Ñ>kðP¯þÓÖ^×4+ 7âü+ÝKã™ñ6ÚÂMmgûþì=ú{ÚÅâYt?íȦµÄZFoèý°~?xoö¬ý¾¿kOÚ;ÀÞñÿ…<ñ&óàÍŸ…í~#hVˆ.á^|$ðÿÃné ÑõŸhÓYÜë>»¿ÒçÓõËÿ;E¾Òî®ÖÊîæ[“Ë2\t8¿…1øŒÖáÎ',­ˆ©¸a³IãòI¬3m· òÃÑÅ|*ΜjÅÊÒiÿCqGåt¸Ç|¿-ÏpðÍó/2LÛ‡ÃbRÄc2og[ [‡pv«B5+R‹”$çNn"¢à§Ñø8y!ÿ‚žü>³‰Œv×ß°€µ ¸—„žòËã÷Æû;k‰@áå†ÖæXÎXDÛÚ®¿âßÄoø'ü{]ø#ªþÕ~/ñWìÁûch¾ Ó¾ xÆZ‡ŸÅÿ³‡ŒÝµ[ý[H]nßËO…RãÄ:Þ·u¦?‰uA¦Mâ ã_ñtvZö? ÁOkÿ~ÜŸ·Žñ“áW‚þ)x_Á^ý•ü9ðŠòïâ_‡4mMKÅ:oÅ/øîâmx›ÅºMæ—ý“ã:Õ$—TµÔµ4ÝnÓ#¶³‚òïÑ%øëÿÑüGkâþÊ¿ðP»[>îÓPá¿ÃŸü%ø‰ð“Z)wm¤_øŸ^Õ¼;ñN)®YôÛ¹TØj o \C12'Ìe¼?ŠÁp7C–qV‰2¿ ;‡é`+ãrŒMeN5°xì>¿Õñ8lÁF‡=¸zøi}S÷¸Œ½”ê}Ž}ÆTs/|E«ÃyïfœÆ8>žq”ñ>o™d¸>%ÀS¥Yaó£:Êðß[Àæy4+UŠ] ÅQÌ%>0Œq óí%ûkÿ°÷Çüñv“á«ÿfè~ ¶Õ|&dBño„u 5h¼9â]2ÒXm%µµžêß]Ó&Žk i`Õô½[Ogº[¾øÿƒ‡´m#[ÿ‚Ÿü0´Ö´­7Wµö ðUÄvÚ¥®¡n— ûB|l'Hnâ–5™c–XÖUPê’È‚»ù÷û[~×_¿o¯ÚóÆ?´÷‹< sð³ÁÐx BøMð»À:•è¾×4ïø{XÔuûKŸ\$6‰>±w­ëž$Ö®Ùlííì_Ä'F²{ø4ÆÔ®þ³ý¿n?ÙcöµðǾ/øãàŸíKgûqx3à÷‡¾Xøáµ¯ÃßþϾ(Ñm Äæù…Xâ³7 oTÅåsZ‹–®e‡ÃæxJuEJñ©º3䯇­ñ¿àžºWÆo€Ú·í?ûG|]ø_û8þËžñ(Ómþ"üP¶¿×§ñ‰mžm.Kø#M–ÖãÄò[Ësy¦Çl×Ñ\j:œw6zE†¥.Ÿ©K¦ý™ÿ °øCáø"7ü²ÇöwøµƯ…:í×a¤x?⥇Ãÿ|+·ñ}'í{iâ[+oø¡›]Ðlô}eõ ywgÊÕ"Ñ—V² §ßÚónûaþÊþ4ýü=û~Ú_¿hø7áOÅø«ð£Ä³5ÿ¢ñ…¶»%÷‹uAcâ=;Ç×¶úkéÒÍã¯hº…õ¾âÉ'мH‘ÛøvÇQÑ­uª©ñGþ û*üiÿ‚{¯ì«â¿Ù#öŽøm¦|ø©ÄßÙJøi®øWÄWv~'Óôÿ\èú‡Æ«¯ji¬Í§Ýø—Ç>1“Æqø_Â>V¥§ø…!ð¾•ࣥi÷qø™Îs>"˱8üoWxG†Áàð¹*ÊWÇ Àà³JX—'cs¬djãi,D0xJo¸8Ô£…œ¾¯Ãªþä\_ ”çy?ö§øWšdÙ†/8Ïs¸fTøÏ_.Çf\5,–­HpÞ.|Jy~2X(fÅKR†;‡Æf‡³~Úÿò?ø&ÇýŸÕ·þ¤¶U¶¿ü Oþ ±ÿgõmÿ©í•_#~Ò¶G€þ&ÿÁ3¿aÿػþø¸Ÿ~þÓö_¼câ ï hŸð¯ôÿ ¾¯ñÂõ¬_WÓ¼S¨ëöÚì1|cðòÍo©x^ÃLGÑüQY“O±}RÏíCû_ø âüoö*ýˆ¼9࿊W?>~Õ|]ñ‡ŠÏ‡4i¾CáhµÏŽW ¾»aâkßǪ~0xyÖ=SÂzfœWIñ+L-…‹juG‡s¸ÿg_-įcã~wÄU=Øû™&+ýbú¾dýï÷z¿[Ãrµy~úŠÖׄã.RË óìµJ·ÑC ÁÔ×Ö#ïqFZø=cr[ím”f\ГQŸÕ*{9Í8smü!ÿ‚zé_¾jß´ÿíñwáìãû.xSÄ£M·ø‹ñBÚÿ^ŸÄ>%¶y´¹-ü#à6[[Éo-Íæ›³_Eq¨êqÜÙ锺~¥.›ögü6Ãá…ÿàˆßðNËÙßâÔ¾éÿ·]†‘àÿŠ–üAð®ßÄzuôŸµí§‰l­¼ â†mwA³Ñõ—Õü)åÝŸ+T‹F]ZÈ.Ÿhͺwí‡û+øÓöð÷ìQûi|ý |{àß…?_â¯ÂþÌ×þ‹ÆÚì—Þ-Õˆôï^Û鯧K7޼i¢êÖúw‹$ŸBñ"GoáÛGFµÖª§Åø(ì«ñ§þ ¯ŠÿdÚ;á¶™ðKâ¤dM+ᦻá_]ÙøŸOÓüas£ê®¼U©¦³6Ÿwâ_øÆOÇáùZ–Ÿâ‡ÂúW‚Ž•§ÝÇ9Îs>"˱8üoWxG†Áàð¹*ÊWÇ Àà³JX—'cs¬djãi,D0xJo¸8Ô£…œ£Ãªþä\_ ”çy?ö§øWšdÙ†/8Ïs¸fTøÏ_.Çf\5,–­HpÞ.|Jy~2X(fÅKR†;‡Æf‡³/ü«yÿÿ³œøqÿ«ö/¯Lÿƒxtm#Dý±>'ÚhºV›¤ZÉû4øÖâKm.Æ×O·{‡ø£ðN7á´Š(ÚfŽ(£iYK²E*ŠÈ³7í•ð/ñ×í û~Ö >2xãö~øýq£xÚuø'/„-¾0øGÅv§Âw‹>Ÿ¥ø×VÒ¼7w§ê ðf±iöVx´íOÓÛÍ¢ø’ÛS{Hu¿àšÿ·—ÀØïö”øãñÎÿáßí!{ðnóÀ¿>ü7ðÍß„¼sñ®óE¸ñ÷&~ÈÚßÂ‹Þ ¶m;Æ> ¼×Úï@ñ ¥å½–µ¢êÚ¶µk«øw^°&Öïû;[Ò/¡ŠæÕä´Õtùa½µ³¸ô6OÛþ à/Š—?´EìGûb^ü_ßüN°ø1áïü4Öÿe¡ñQÕ¤ñLšœ  ø‘§è’xºiõ—Ðnü3‡­^Y, ðËh" (}F;™dÜWçØXÞ!Ág¼9”eØ(`–¤ðxÌ®¦fê娍bñ cý¡J²Å.l4*S¬±>ͪn§ÏPͲÎ-áge\a•p^}’xµÅ\C™c1øÌVžmÙ½|5³<·¡^XìvY[.£å´ÿګЧ„©…Uâê*=ü*þÿ‚›ëÚ†ÝgñÿìëðÏ⯌à¶(ÓÇQø‹Åþ½i"@êžðßuãÀ3NÒê.}Bydë?àã=K\ñü?àoÃo\Ô®þø[ö;Ó|cà·˜ÿaKâOülø‰¡x†úâÕvùͬZx'Áý%i"¸Âºe»Åä›…—òÇ¿þ,~Ò¿¾/þÕŸ>Ïmñ㯰ø~ÉËiþðŽ—mk¦øsÂÚz™%1Ùé.›¤i–ñÉ$—Oš·ÚŒÒê·÷í_`ÿÁOkÿ~ÜŸ·Žñ“áW‚þ)x_Á^ý•ü9ðŠòïâ_‡4mMKÅ:oÅ/øîâmx›ÅºMæ—ý“ã:Õ$—TµÔµ4ÝnÓ#¶³‚òïÊÊ8W6Ë1þÐÆÒ–9p×q&2Ç$ªQÁâñXLŠŽ”jNÒå”hâ°Øi¨§:dš‚—!îñˆœ'˜ÑúPâøw1Ãe˜Ž+Åð6a”a©Õ…*Ùœ²ÚüEý±‹Âû'*3­CÀÖÄÎI?®ÖúÖ¥Y%ˆ>³ÿ‚Â9°ø ÿ&†Ì-´Wß²¯Äm6ê8bIllþ ~Ê—Ö¶¬¨|‹{¨cš±²7@2h¯“?à µÿ€¿iï ÿÁ0>|>ð_Å-;Sý‘> xÓÁ?üMâŸhÖž Ô5­{áÂ_ÙÂ'¬èž&×î.í×TøY­Ë?ü$:w†®Åž­áÉ"´šâúî×N+ê|8˱ÙW ap9ަO3â:²¡U%8ÒÅqkŠÃNɵËW ^XYüŽÛ/ÇþùÖSÄo”f¹6? ™a+ðR©ŒÃTU#SƒÊ!‚Ŭ´›¯F¾tjª‹:kxò·ñÍQ_r~QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÿÙxerces-c-3.1.1/doc/html/graphics/sect-2-label.jpg0000644000175000017500000000535711363617747020461 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀx"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ý†°ðÿÿ~ÓŸ>ü@Ó%Y¾#jº†|ã;Kkí^ñÝÃFÞÕî4½:ò+gA¿½ ¥x‚×S±»6ÖWK¨Ú]i¦ÎâwÇÐÿfßü[ñÀý2ßSÒµŸ„>ñ_‰¾'øŠÓBÖ|Gâ/ÝxxZ=ý¿‚|ot¦Ö-ä¾ÔtÀv¾—¨x¥/á#½½†-ZÃEÑüóâ÷е |[øÉ• œ7ž Ôõ mi£µ};I»5{"u¸[{×­[û7W¹û,—Óé-u¤Áum§êš½¶¡©oûU|G‹Ä^ñUÖ™àýS[Ó>^|#ñMÞ§¦j—'â—€¯-¾Ât‰Jºä_ÛC§¥½‚jÚIÐu‰­ììíýÜö°Ì ö·û GàëÚi|oñ´›?Ù³Rø] üú?ƒ›^¸ñ~•ñGPxt«Ë I|O£¦•¨Å¦Éau™uusgq¨_ >óZÒ¬íæÖ ©~ÎñhÖ¿´ GÅz‰ø¯ñ×Bð7‰üàë Ú\øY4Oˆ~'>ðÔ¾(ñÕÏ‹l/´›ëËhnµ?±é~ ñ p²ÚÙÜÝÛ‹©.­xûÚ¦—àïŒ^ð׃|á |jÿ…{ý¿¤écÆ7ߨð®5FÖ´¯øE¯üKãS‡ûSS’{oû~÷Ä>gÚ$‡JþÉ·H"†{Ï~'Ô´?ÙjZ†/¼[ðÃMðþ‹ðïâ|‡ÅVþ:ð–‹á_xJ±KZx+Q¶Ò®¥º´³—Ä Öomôû¹bŠí'†ÎæÔèþÂúׄ~+üømuãû;‹Ú¯Ž4 /ø¯Ã~þÌÖ>jךV²‰¢Üê×òêšv¼bÓnü©-ý’ø¾Ó_ÑfŽßNŽö7> ã?€þ-Ó>#j? <áŒ^2ñ…¤ÿhëú&©ð¢]ÅZxKï²M{‡|'⯉ yá‚—Z;Ùøœj°ZÞϪ$Ú¤BÎëP¡ã_ŒvÞ?ñ´>ñ†M­ÜêƱâèt÷ø—¥é¾?Õõ˜£óµ?ÚY|H‰´ë¨/–}^/øAçðt:åÔš¤:»Çm_ÅïŒ>+øÕâ-'Ä>+‹LµøWDðV¦é ©}‹JðׇÖãû6Ánõ½O[×µ9–[Ë»‹O]Öµ]Vò{‰$¹¾—¨êŸþC­|Eø‡¤ücð;/ƒŸ |iñž½¶¾ðŸŠµ‹? iZn£aáÖ]JÎ;ýûhk:eá¹kXç“Hw–ÊXZæÞî?&Ô?ŠZæ¢|2ø¨‘øcáÜÞ;ñ{ë–Öö« Yè¾ Õ<_â?í 2ÊÏT»Õnm5IlnlÂÜ&•¥G§ÜKuŸðËâoŠþx²ÛƸ´QŽÏPÒïlµ;(µ=[Ñ5kg³Õ´=oLŸ÷7úV¥jíÍ»u";‹y º‚ ã«ã?Øx®kFÓ<àŸZÚÉ{9°ðd$òn®oÍ·Ÿ5Ýï‹|MâÍfHã‘-–žš¤ZNšäéÚ}«Þ]´À§Å¿€¿~I§\x›Â>5±ðþ£¢xî?k¾ ×|7£ø¿ÀšOŒu/¥î¡ÙK­ø^öïYðíõªÞ-ô·^Ôç¸Ó´é¡º°²Û×føu§øÿSøeñBËv·ã›Oi7ÿ |WaÿŸ‡<¡x/ZƒÆÕýŘû‰­ÂI®ÛEu}eacmÿv­2j7»o"Ó<‹Åþ,Ô|i«Zk¤V÷6~ðG„âOŽx m;À> Ð< £Ï"ÜÜÝHontXÜjR,«ÚŒ·SZÛYÛ<6p~,Ôo< xX,—HðçŠ<_âˈãœj2ê>4Ò|£ê]L×-löVöÞÑäÓã†Î âžçRk››¨æµŠÌž/â}CGÓµû{«Ô³M'Yñ~Ñnï/Qí4ïí¯M{¦C£è°j3ZÜê÷“jÚ4)§Cr²ëZ4lÚ¥§¾þÑ>ð¯ƒ|?ðwVÒ|ƒüOã/xWñuŸ†Mý½æŸ}c©X],Úuí¥õµ½Ä~ëªþÒºþ­¤Yøbãá×Â_øCt/‡^4øwà¿Oá[XѼ¾=Ô,µ]{ÆþºñˆõÛ|DþбŠêÃÅ®¹«=”²\4v„ÜI¸¥Ö|ðÒçö8Òþ/è>Õ´Ÿ[ü~Ó~êÚ¦£â‹jJÂ…·^*Õn­4ètýMÓ-õrxeµ³{MFÿM³²·´mnù¤»¸¹?bï|4ø±ñ׿ þ%xcVñŠßW6³Øx¢ã@´Ó£ðÿ„¼QâK´½³°ÓÛRÕQ›JÓ­mäµ×´UÓ¡[×’=Eî û#ÿ 7ü)øQðª~ÿÂ%ý·ÿ öñSþ?øOÿáÿ„?þßµÿÂÐþÌþÛþÌýÿöGöGü!nýïü"_gÿE­¯þÔZ§~1j?ü5ð‡à®•âÙ¾Éý¦izŒtx'Ëðµ×„u_øE¼+á¯èº`ÿ„“L¼žã[þßM:¤’j:WöUÄÓ™@>ø°HøsâÒ?èô¢ +wãÆ«c­øKÇZž›á­ÂW:T>G‡|;?ˆîtm;É[y>Ç?‹5ÿxþ×4R_\hk·Ûn®gK_³Y-µ¹@B|}ÿ’ÍñþÆkßåy PEPEPEPEPEPEPŸ|Vÿ’uâïû7þ”[ÑEÿÙxerces-c-3.1.1/doc/html/graphics/psviwriter-3-header.jpg0000644000175000017500000003060011363617747022100 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ#È"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ø^Š(¯õ ÿœp¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠôÏ‚¾ð÷¾2|%ð/‹uøGü)ã_‰ž𗉵ï2(±<=â?éZ>µ«ùÓƒ _ÙºmåÍï™01'“º@PËZj±9½ U+T䋜ù)BSŸ,#yJ\±|±I¹;%«:pxZ¸ìfC‘WÆbhahº³*j®"¬hÓö•&ÔiÞkžrj0äÝ“<ΊýÒÿ‚•~Ô¿·ì7ûIËû1~Çþðìû*xWÀþ¼ðO‹¬> xÇGã£jš¥×ŠïuMcÇÞñ¦©¨h¾%—Zð¶»kÝ·ˆÐi¶þ!×5 ™¹O’p­†úî[•UÅá§ ð¥Ô¦§çÔWè7Ãø'gŽ|{§x}cöŒýŒ~x‹â†‹ámáÿÿŠÿ´g‡4/‰^)Óüoai©øI4ÿhZ‰µTÔuë;û±Ò/×U3]Çi5œW‰4|Áû@|øû2|R×þ|]ÑaÐüeáøì®¥ŽÎú OLÔ´­Ru¥kZ>¥lLWÚ^£- »bž ¢¹±¾¶´Ô-.í õð\Kæ8ú™^5Âbs T§^XZu?{*4ªF•ZÔT’UéR©(Ó©Rƒ© s”c9'%†Í¸Œò,— ÄY¿ æ¸ “^žŽe_ ÖbkR•j8zó‹“Â×­F©FŽ*4jU„'*q’„­ãWéL¿ðJÏÚ]<)ð'Çqjÿ Á?~Mñ‘1èlµGá×Ńž9´ñWÂVÇC±¯ˆ5 ßjVz¦¤è:6íkP×uX-4)4¸nîtíNÿìÉmÅKøFµHR‡eNsXÆ”±Té¤ò÷ˆXÈÎuaN¦aq5'N¤£QÑ¡R¼c*1s=Jþx•‡¡SW‚8‹ØÒyZ”éåÕ«ÝgQÂK+©J4UIÖ£Œxü*UèÆ¥‰ÄÒÂÎpÄËÙŸTWÜ¿¿`‹ß¾hŸäñ·ÁŒµ}|xNïÇ¿¾$CñÃÞñ;<°&‡¯_.•¤Ä—myoq§I6”u]>ÓS4ëÛÛkËËnù¯Ù—ö$øÁûXø#ãçŽ>^xDÁû=xWNñ_‰ü;­Ýø•¹›þ UûFÏá?jÞñ—ìõñâýµÿˆ_>|dÑ|gñ×Á+µÚx‡Áú=œúT7ö¦)aþÍ´ñ%åýýÜgOÒ-õAⵓê_ø7ЃûeüK ‚ìÅã"9ŠŸÈ Ž#¡¯â>;ÀáxK‰³îÇe™®3 ª²£9T¯BZŽ¡õšTkaëºéJU(U§VëÆ.tjÎ1‘ö¼áqñ€¸C2Œÿ‡2Î2Ì>¯O t°˜ºØjj¤qOˆÅa±¸Hâð•£ Xº°õk`êMSÅaéÎqGáeçß³†_9â\Û Äx>ɲ\gŠÄäxÌöu±ùÝl¢”(`±ØL ðô•—7ukÔ©Œ§8{G‡¤£©T‹QæýCü1áî"àlÿx£qœ)”ä\C–põHà¸Qñ-J•³\-\E MU ÉêÑ£ÒöʜӄùTÜ?(¯èãöøû9ü]ý·¿à‘ú¿‰¼ á†Wííð»Å;øÃà? ľÑ¥ñ_~ø3↥Igg%¤¶²üAÔ|[sðÿP¾·ŽÃSÔ%Ó-ç[™µË‹»¡ñ÷í£û~ÿÁH¾~Õ_~ü7±øiû$þÎÿ |m©x[á_»_Ùßá‰|9ñ'áÆ› ‹Âž=–ø^æ]CMñžŒ–Ü“xcVÓ,´«ë«¿ ùK¨èZ¯-ñ¾W*ÀäY*™ž;)ÅæØ¼.oœ,®†–7Åd˜Œ= N-Íjfˆãð8«:XZT4+Ö­GëéŸgš}ið®?Ï8Ûée/–fÙvU–g9?×ÏëæßÚÙF;Àckåus\š¶W…«‚Ì0´å VÆc>º±t(ákRÁÔÄ?ÈŠ+诇µoÅÏþ×Úígâ=#án‰®h>4ð‰×Ã?<ÿ<-we i>ñ–œ¾]GQ±Óǚ̚ì¶WÛou¯xPÛh—pAÖŸðX?…ö~ý´n>(xRx¯þ~Öÿ ¼1ûAü4Õm-á‡N›Q¹´±Ñ¾#éö²ÇR]Íq¨Kៈ—sÎ×çâlq,ë 1ÛÁõ/ˆ«aóì“#Ì2å„–y”bñ¸lLqj¼#šeïµCªÅb)ÐÄ%‡§ì¹¥ùŸüCºÎãN*ÈxÓàœó+Âc°t²úøYb¸o;UieœK‡©Z»«õê_RÌrº¸HË.JS–:¿:ùƒE~~Ê~"‹ö\ý”¿mOÛÖÿÞ ðOÃæýœ¿gùäÂI7ÆÏp¦›{¬hò«øÂ2®¯*32¾•¬Þþâw£Õ?imoÆÿƒ|?àšBûUf×uÏÛN=Ä󵎚¦æÛWñí‹6¥§y+f¶öë,v«qi ½È[pë*<’ó36X,ß—RË^'[вΖ;늒†;“cs¬UHPú­EV 4pTUhûlF+M΄°.8§á1œIÂÕ¸†\C†Ëqk‚¸“ð¹E|¾­iârì‹=ʲ,=9b¡‹‡ÕÞaWÄÎrÂÎxL=ª¥:Ú9϶Ëÿ$h¯Ùïø*ί¨|fý—¿à™¶T7&îø+]ýž~*ß´PJ—?´M"}_A”]˜ÍÝ»Ÿø ã4FÖK©R_í+}ÉæÛI4ŸsÿÁ;¾ xgÄðMoˆŸ³´÷¶ÚÆÛ“áÏíGñᕽìv¾yÓþGà„þÕ6Þ©µ áïë~ñ6•o-ô7Úübm:Òf‹ÇÇxŸ‡Ë¸S Ƽ¦p¯>!Äpö;*†3žx F_ÇPÍ+Kõ8º´ð8»™5,5iF1„çAIÕ»•ý3,çÄ9ð>_ĸj˜Oa8ï$âJ™eJx|Ó.Ípx d˜z˜%ŸÕ+f¶gƒÊg*xÜkÃÊ£ÄÒ§‹j8i/TWß_ðH« +_ý¢<1ñ»Çp|û5|&ø‡ûKüHK¨…©Ó“ág…nHóšdT±ŸJñÅöpÂXC!°–!r|ñyìû4þÒ_ðPÏþÔ´Ž“­øKP×<q⌞5ÐuÆ×­|UâH|mqñÄö€4¯ øG^‡_ׯŸÁÜv–úÞ£¥Iw«èðNà\\Meõ˜®)Ëð9†g‡ÇNŽ/Êp96#šÖ¯ËB¬ï‰Áá0.š¤ÒéaêN¯µ²Xì4y”¦¿=ÂxSÄyŽA€ÌòÚUqùÆcÄœCa8k †”ñØŠ\5•C4Ì3*}­ªÒ„if”B?ÙÉ{YMÒ£/˜h¯Ò öKø­û-ülý•uSãì“cû@ë¿´ïÀï x7à±ñšÏÄü/ñVñe¾¥á;ߊÞðtsjZ€íþÒñ‹ãx/ö~𠆛ðEñ†ÿ·|GãûÆz-çŠ|¥ø^ÈmÇ©C¨üB½¼±ÐþÇ¡ÝX2cGŒr¼Ve6‚Äåߨ™Žu<ÂŽ.sª©å¸¼.·±ÀÇ '‰Áòb]G£‰”yãJ*•uVU𓉰œ7‹Íó,e•æô8— áì>GË 8¹çô1Rïíybý–4§ˆ¡ sʱØL:†ëUëã°õðÐÁâ~¢¿hÿà®_°ßÀÙKÅ–ž"øMñOöjøGàÍ àï‚õ]Gà‡¿hmbOÚgâ‹5ÏŠ"ð¥×|ðÇÅÖº¬º×‚›I›M7šÞŸâÝ+OµoøÈÛxqeÒîîo?:¿gÏÙ[âßí)uâY¼gáíÁÞ²ƒSø‡ñGâ‰4ïü/ø}§]3¥­×‹Þ;´°Ô¾Á=Ûiz’Úuß¿àŸ?´íû>ø³ö‡øM„üG¢xSâ~‘ð”ø 5n/‰÷Š5›Ï‡–p\hšxðäž] Ð|IÑïuM[\ñމ™¦iž ÔocŠ×OŠK¾éqGG.£›Ï8ÀÃ,Äbéà)ãgZ1ìmZÏ 5YÊÞ´k§J¬+ªnŒÔ•ogÊíâ¯xÞYî/†#ÂùÄøƒ—ÖͱD0“ž;û6†c'Ž£F7x¬<°²z50¾Ú8šrŒ°þך7øvŠú#öýž[öfÔ¼áÏürý›~ ø×Æð’%÷€¾ ü_Ò>!øÇÀ^‹EžêÃâ“cijº Þ¡±#èéksªE~š&¿ –(ôÒóéà1ø<Ï K€¯N¿?±¯% ŠIÒ›jUjÂpÎôQEužPQEQEQEQEQEQEQEQEQEQEQEtþ ñ ·„|gá/^øsBñ…Ÿ†(¶’óÃ>)¶Ñu[MJxŠÒ`šëBÖâ¶}3W¶ŠxdŸOº¸‰%˜8Š’”iÎPƒ«8ÂR…5(ÅÔ’‹q‚”ÚŒ\ÚQR“QW»i&iFêV¥N­UB”êÓ…Jò„êF9MFueNš•Iªqnn‹œ’åŠri¨ÿà¬>:вñ‡üà?À¯ |7ø½ÿý­>~Ê^%øáûMoáÿï¾ø»ã—ÅtÐ o¬o¯¼á íu íîu–{»µôë¹cÓïõ }V ­:ÃÚ¿ààyå‹þ }ðòÎ7d¶¼ýƒü}s œ$×v´Æû[iä^,6÷3BŒy¹^•çß¶/íÛû~ÔšÿÁßÚö€ý‘ÿiŸˆŸµÃ_†? ¿²þø“Áºwìéã; [V×m.<]{ö›¿‰:T>!×¼C«ZéÞÒ|+|¶#½Ñfñ½ñ´Óõ=;ÊÿࢶÿÁÛkÄŸ³×Æ¥øû@x/ö³³øg¢| ø£v’x3RýŸlüo­ø›ÅR *K kWñi׬üo®É¨Z]ê?Øvš†5]OM¼‹Å…ž™oãäØ~4Æño ç¼G€Íý¦ÎqyßC#xê¸êy†5©ý“æ˜ ¸ÉT¥–dø\ºªæÄÓÆP”pÙmlGÕÿðYÏøñÿb¯ø"ÿÀÍÆ:ׇ¾|Yø?‰~"hšEËY§Š.~| ø¾ƒQš“MkeeãŸGœŽö_mÔmuI­¦¾ÒtÙ­¥ý§üqã…?ðo7ìCá/…>$»ð §ÅÚžóàï‰æÑUk¯êÿ?j_^h~k:Y^kžðýƧRÆÚ¥­Î—|óéú…õ½ÇÅ_ðP?ÚÿÀ_´÷†ÿà˜ ¾x/â–©þÈŸ¼iàŸ‰þ&ñO‡4kOêÖ½ðÇá/ƒì¿áÖtOk÷vëª|,ÖåŸþ;ÃWbÏVðä‘ZMq}wk§µíà/ˆðM¿Ø«ö"ðç‚þ)\üPøAûTEñwÆ+>Ѧøe…¢×>9\46ú퇉¯|C¨aøÁáçXõO éšq]'Ĭu0¶-©å—ðžeO‡8 [&œq8ó ó6¥*4œé`åŒâÉa³ N¯š>Ë•ºU/)Æ2ÃZÊåïÅx“’Tã¾(•)ÁÏ)Ì~¸L—$ÿiRÂb³è®X̲šp–!QËsU,5x¨rÇ£öªŠ·Ó¾Ò,¼ÿÚ~Þ0högJý©¾ê×&G–ñµ!ñ+ö0‘õ)f¾šRÒÍpçs»m\(õŸø&&¿®xSöÿ‚Íø§ÃÆ¥áïøköK¹×ü=¯è×·n±¡ëš?ÁïÚ‹QÒu'Q´’+» KL¿¶·½±½µ–+‹[¨"žHÕ‡Á>&ý¯üáø$7í9ûÂñKÄ?þ9|mð¼+«ø_Ú6­àm+EÑ|MðÄ—Ÿð“_ÿÂMoâ{ƒgðƒÄV±føKW´7úŸ‡a–î(¯o§Ó?Aÿà•šÖ‡á¯Ø«þ â?xKOñ÷†ôÙr-kÄ>Õµ[HÒük¡é_ ÿiëí[ÂZ–­ ÝYkš^Ÿâ;.4{ÍGF½´Õ¬­ï$¹Ó®­ï"†TÉòìn_Â&K‚«y‡ˆùa¥5M,v ®kÁ!R—´œi¸V­‡¯E:²„\¡.v£ïx}ÄvÇŸF)á3zìÃ-ðãÄL³;®«N®'™RáŽ-ÄJŽ6IKªÒ§‰…ee6ã6ésJèø×þ ¦?†ÿnŸÙãSÑ–ê]CǼyeã]bc%Õõî'Á¯øŽÛK»»l´:5§ˆ4/ ›[L¥·Útí1¤Yo&?~Á¥Ñâÿ‚¬Á@ü=៳x/Zý¯§§iºŽ©÷ÿƒýªü ÿîø™ã¿‹¿´o‰ŸÅ|q¤ëß tÝÅ^0Ôükâ?øÆ2Lðø§Å~¶Ô<Û^ØËv5yï¯u‰¬Ê[¼7S\ZíÅY&yĘn?Í09cƒXþʸw/Ëq0ÃÓÇf˜ÜcŽÇâ1^†"´# 1ÆSÂaêT©zþδéþåSEÂ|IÃ|SÃ\Ÿ‰øÃ#Î1ô¼eÍ8Êy–W‚áü“•árœ>ë5hÒ5€•\N•PÂÔÆáðò_Y¥‰¥†õø6ëKðÕÇÇ›kºTºÖ©à€¿¼eà½6Î[^ïÅx×IÐ%·Ð­îå·†mfç¾ ñE­œfêÔ1ü˘aó\Sý˜?lø$GìÛûIÙþØ> øgÿxø‘ñ€x“Çž)›Ä¿|û0øžËXÔþ h^#ðωòx›ÃZ‘´xU–4ýbÈ­úB/d»·íóÛöøáñ'öI×>ü_ð}´šwŒ< ¨ë³]hõµÝ¥¦µ£jš¾·k¬xs]²aÐÓµíúh €—6¦{]WO’+Û[;˜þèø«ûDÁ(uïë¿.?e_ø(ã?k:Ÿ‹õï…¿ õŸ‚×WÄÚýíί¯&âûçÔ¼u¥èº®µ{u{%—ü#þ‡L’êhtMIÒ-¬ìÖân¯ˆâl×Ãq.;%âËò†¸wB2¤ð’Ì)âòÜÇZ¥9,.6–aí°ø˜J4aUâሕ9J”åäpWˆx6E™d¹ N£Å¼3âŸñ4#Ʊ8<6;/Çcpxœy“æ:u+—c2œ=^[(Õ©_ 'N¼iT…?‡t/zúükø¿ñ›à¼ß> X_|wøÍâOƒRµÎ¥ð÷âO„~xßÄ:Þ£á&K¿ëϤ^ZøGÄÒøWT·ÑͰUñù^2®rÅÖÎ2ª°ÀO‡”qU°ôëVµ)SèÆq« A_ô_ xç&áo¸÷ _ ÃÙÖtøÛ†3<7çøj8êXŒ,-l,³à±0©BºÁbêP|µiÖ¦ÝãVŒéJvÊý£¿kŽÿ¶×í=¤~Ó¿t[_ƒzWÃmËÂ?³ï¿ês"|,ðæ›s5ÕŦ¥fš|‹â´\Myy®Ci¥^Ïx,¡²°ÑôF°‡õ_àßü;Fø¹£øàü“á?†?hŸ„—SÛèÚÆxl¢Ò¾0ü4Æ;øHu ìM‘ñ µ„- ê^"ðÿ„¼w—gsswÄm^é­fü¦ø7㯠ü6ø‘á¿xÏᧆ¾0øSK:½·ˆ>ø¶ëP°Ñ|M¥ëz© ]Bu=)ÓRÑõ]>=PëÖì¼ËÄZ~•ª¤&ÏìòýkmûHÁ(ü¯é>>¸ýŽo­sÆeÔ¼_!ñÂoþÏ÷•¬¢æ×M¸ñô7QüNÔ<>n8å:Æ“kssh5*dy­¥Ï‰8w"£—åù->Îq8|³åæ|9,-vS樽–,Ç ˜`±p£^¦&¿>9§­V¤*EôpGqïqqÅ+¸'_5«C/âŽãW‹©’g\=AB­*¸Œ¦¶]ŽÀç8JS­Ž¥õ|í¼ •Eƒ¡C Š¢ŽSþ )û,èß±gí[¯|ÑoÚóö—³BSñGâz´þð߈-ÀPÚ‡ƒ|8bðþv,o¥êº|žeÌ~“ýµÿåðMû?«oýHÿlªü“øñsÆ?´ßíûB~Õ4­OD×¾3|CÔ¯ô-Z¶–ÛPðÏ€´¶[øyâ™ÑtŸÁ¥èîÂIc¸þÈŠå$u1úóö¡ý¯üñþ ·û~Ä^ð_Å+ŸŠ?jˆ¾.øÃÅgÚ4ß ¡ð´ZçÇ+††ß]°ñ5ïˆcÕ ?<<ë©á=3N+¤ø•ަÂŵÀ¿Ÿ~&øÅâ¿ß´¿íûUê^$ð®¹ñs㦽㟠Yx†Óû;Ä~ð–›©4¿´û˜L—1ÅuáÍ ´Ý..­¼Í$n.# #yÕ8'0Çñweؼ3‡ æx,ß4Àâ%iAç|O•eÙ>=CwácƒÌ±Ñ‹RÌã4ù®ç¾KâæK’ø7Á|E‚ÆÐŸˆÜ%ɸ[„SQÅχ2#Åçyd% YÏ ‰Áâ°˜~~iCŸ(•)G–kÙ~»þ×ÿ ï¿`_Ù«þ sm¥É£ß~ÑŸµ§†ÿf_€YC>üa·Ó?i¯iúa%»Ñƒ~ Éà鮢ym Õ|8Ú}ÅÃê–W°'GÿœÕ5ß…_°'üï\ð>µ¨xkÄÿ¿d]gÂ^#Ñ®e±Õ´/øOàÏí9¡ëºeäEfµÔôíNÂÛQ´»„ÐÝÃêÞbæ¾Wÿ‚¶ÁD´ßø(_?e/øÀŸüàƒÑx‡âÅ ¯hZ5†â?Šš®‘ Ùix~÷Dñ‰SPÓ<3‘©iúeƬú.­$^!½éF8mÝr?fÏÛá×ì×û!ÿÁG>ø»Â_“¦Z@Þ!}7Àºÿ†uýkOÓìu;½.Õµ–µÒîm­-5 ý:|c†îîÎ3$Ñõ¿¶Çï þÕŸ·×íiûGxž?ð§€¾$Þ|³ð½¯Äm ÃBñÏü+Ï„žøq­Ý4>³â-k;gÂ×wú\ú~¹çh·Ú]ÕÚÙ]ÜËcoúL·ÿ,Ía…Ÿöm. Ͳú˜µ¨Ç[:Éñ°òw¿´ ªEZÜ´å­ìŸâ ŠpxÏ|UÉ1¹Ô1ݸw2Àåõñ.x‰å8gˆÂξœ›‚ÂP©R% 68¸òÁSW_ÿÁÃÚ6‘­ÿÁOþZkZV›«ÚÇûø*â;mRÆ×P·K„ý¡>6F“¤7qḴË,k*¨uId@Á]öýsRý‘| ÿBø¢~ÒV?µ€øuñóö‘ñD><¸ý­¾Ëã½_â‡õïˆ)á øÞO‰“Ŧ7†5OøE½[;+{­^æû@Ñü©­¬–hçøÿöýý¸ÿeÚ×Ãø¿ã‚µ-ŸíÅàσÞøEcâ?†Ö¿|Cû>ø£E´ñå‰5Ù|eö³Äá‚÷ÆÚÏ…m4mOOÖ|I™ªjÞ"Ó­ÕžOìÝûaü<ð7À߈ÿ²ŸíCð¯ÄÿÿfkºoŽmtÏjú^‘ñOá‡Ä{ «Oü2½×îôý}AæÒ´é›DÕµ}J¸º¶”]]M¥ë&ѼAùþ†³ÙxuÂyU\·6Ãf<Ÿà+æx -l>Ãåß[¥R¾M‰u^ ±Ô³Jj½\ ¹+r±æ~#ðó¾.YÎGḖðÞk˜:ø¬£%Íó å•£Cˆ°p‡×2™N®V²œÝ¬;ž†e MW,=:Ò§—ñ‡öÖý‚¼3ÿåø§û~Ç¿?okxŸã~6xÄþ|$ƒFÐxC\Ñ` àýjúûS×'ƒS¾M:ñ§Óþ±ðŒ|UàOø7Sþ âx‡Wð¾ºß´‡¼ñßí!â…¾ÐüÖzæ—ªOkáÿ‡p\išûêú5ž©áå:¾±%µ€Õ¿¶ sgio^‹âoÚÿÀ^ÿ‚C~ÓŸ°çü!¼Cñã—ÆßøÛº¿…ü9£jÞÒ´]Äß|Iyÿ 5ÿü$Öþ'±¸6Ì៺±•¨QÆåŸÚ8ùSjžÏ>Õ(Ö*¼ô«ÔxwN­:•y²>:ö&eRâœoe+ágpÞQ‰á\Ò¶'øÜ6"YfQˆÅb!N¤±‹Vuð¸šs¯ƒ« r§K,FC ð/‡~ø_Ão å¶™my®#K5lj5c¼×®¯.’D½»“R^â).ÄÓ,±Û<0ˆåxV1+Ev”Wí $¬•‘ü9‹Æâñõž#‰¯Š¯%oi^¤ªIFîJro’œ\¥ÉN°…ÚŒRÐ(¢Šg0QEQEQEQEQEQEQEQEQEQEQEQEQEQEWìÏü²Y#ÿ‚}ÁkOØãZWS‘ÿ Sö¤ÉŽŒŒ~”Q_žx©ÿ$N?þƼ)ÿ­nF~óôemxÕ¶vÿ„î7ÛþÈ(? þȃàû<5ÿ¦[*ë袿BŽËÑ~GâùÇü³Oûãõ&¨QEÏ8(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠÿÙxerces-c-3.1.1/doc/html/graphics/memparse-3-header.jpg0000644000175000017500000003051211363617746021474 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ#È"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ø^Š(¯õ ÿœp¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢¿z¾6ø—ãWü÷þ çû|Mÿ‚|>ðbø·ö‰Ó$׿h¿ÚÏQð‡ñÄ? õ{ïèšÆ‘á)N»¥ëšN¤\jz—‹|)húžŸ&‡a©ø=(Ú/‰¼_%Ý×ä_ÇÛö¹ý£ü#ᯠüoñÀ߈wÚGtŸ_üN‹à?„þü[º°µÓõ/Rðßü%?ÿ²t«­P‹\—V¸Ó'ðä+u¯é:ì—QEbðMðùæ\GZ¶'.Ép"£šãò©ãkgn´*åØš¸ü=²ñE÷ƒŒ¿ho^ø[¥Þø—LÒt}sPÓtÛ;ß·ë÷ÆÓM×ôy仃Fkkß&+©%¶½Km?Úƒö$øÁû)i^ñ_Œõ?‡~:øqñJÖK¯‡ÿ~x¾?|=ñHŠÖ󛬵†•vÍ6Ÿq¡c<ÚlVZ­—Ÿq¤Ýß%•ñ¶÷?Ö\‡ûR/ö®f•'V•<©ËR­j0ukP¥&•:˜ŠTã*•0ðœ«B”¥£&¿>ÿPxÏý\«Å«†óYpåQ­_6ŽË B†"¤háñ5Ô[«G ^¬áN–.­8aªNpŒ*·8§ñýö÷Á?ø'÷ÇßÚöyñoíðª? xBðŸÅ áð Z†º¿¼Aâ½vÿáÞŸi&ƒ¦'†åð±Ñ¡‰z%Ρ©ë^/ÑSOÓôízúî(­¬!’ó°øÿÏø÷à„Þ'ø¿£xÃà_Æ=áþ±e üPðçÀߊ6Ÿ¼eð¿W¾žÖÖ=;ÆšN—¦CgoÕíœ7š~ªkZ…¤wþ{TÒá¹¾‡ž§p½d²ú¹æ]K zÊêaªWP©OãAÇ UI%Nu&„)Jn4ëU©4§:·‚í¡áˆ8¬²Ö„3ÌFUW'ÿX)c¨`§V…lO ã¨JŸ3¯NÕ13ÄB’l=RÄW§NƒGùãE~”ø%oí+7€ƒöY/šøN²¸°Ñ/–Êç]ûÄPëS˺m®Ÿ>®£O?%þÌÿ³÷Œ¿j¯~ øðóTð¾‘âß6©øÂûU°ðÌ áŸ kÞ3¾:…ø‹SˆO¥øzö #k£Þ o¥µŽo³ÛÉ-Ôa¸£‡±xLÏ…Î08Œ&MJuóJô«)ÃBžX§^·-ß°–¯J´T©V¥NŒê(»rã¼>ãl·0È2¬Ã†s|cÅ5èáx ‰ÂÊL×_ ¾L3›PúÜ1ÕiáqZ’†# ^¤)â©Ñ”’~]?‚|âOˆ¾3ðÃïé¿Û/ñ߉ôøWHûe†Ÿý«âOê¶š&‡¦ý¿Uº±Òì~ݪ_ZÚý³R½³°¶ó|ëË«{t’TýÑà“¿´ÿе?xƒâgìÏðçÇ âÿx;À^ øñ†/ x×ã%σuý_ÃwZ×ÂÏÍ \x§Xðöµ¨è—Òxjÿ^Ò<76¯¦ýŸUKH´ûˆ®Åÿg?†ž8ø9ÿ ýœ¾üIðýß…¼sà¯ÚËàNâ=õ¡’kØþ(ø>xÚ;‹ig´¼²½³žÛPÓu)î,5=6îÓP±¸¸³¹‚gãÿ[²Lf5y.k—æì»+ÄæKN¯´½:Tª8VpŒ¡*¸u^*…iÑ›TêÞŒçN·º½?ø†|[•f9*áÌï$ÊsÎ Àä^¯†t­ˆÄPl4jÔ…Zx|kÂUx¬5,M5*ÔÅR¥[œŸÎÿ> üHýŸþ$xáÅÏÂ%ñÂ_ÙðøûcA׿³ÿ·´/ÄÚOüM¼3ªkZßÚô=kM¾ÿAÔ®|´ýšçÉ»†âÞ/1¯¶¿à«ßò—ÛÏþíwÿYáÍu_¿à›Ÿ¼káx—Åž<ýŸ~Mñ>ÖÚóá„h/‹ú?ÃoüY·¿‘!Ò¤ð'ƒ¦³Ôõ›ñ¬Ï$qhÿÚvúHÔ„¶÷6†[+«K™ðÊø»þªpßq3–UÎòl³RÒ§JX¬^_G‰§ƒ£9ÖÄJ•z•9y«JŽuª8ÂUkŒ<'Î0>&ñ§ðV_œq-Î18Z•TÅSÀJ´#y•z0£ƒŽ&^ÞŽÛ(á)ãñ–X\-×§…‡çÝß|Røaã¿‚ÿ|Uð·âg‡®ü+ã¯êm¤ø‹B½h%–ÎëȆîÞX®mežÒöÆþÆæ×QÓ5)ç±Ô´Û»Kû)çµ¹†WöoÛöKñïìIñsBø)ñWÅ_|Aã_|9Ó>)YÃðû\Öu[X¼-ªø›Äþ·’ê?øoÂz²\&­á=Efx´©´åŽk%MBK™'¶¶ú›å޾[†Ž; :ÙÆ¾3+…:Š¢ÇápÐÃÕ¯ˆÃNÔêÒ§O†ŸO SOðbŠú;ö|ý•¾-þÒ—^%›Àv~Ñ|à[(5?ˆ~!x“Nð?Âÿ‡ÚuÓ:ZÝx³Æ:Ã¥•“]3üñõį…ú·ˆtøî&¾ðâxŠÒ×OšÛY·†ÒòU¶¼Óíã»K Kìݶ—©-§·>!É)æÉgš`£šT’„pN¼=»«*_X¯ËLð÷ÄSÃJJ½J Ö…9RNgÅRà®-¯Ãõ¸®æÕ8wiW7Ž«ÁÆŠÄ}RX¥;sO gû\l#,%,_û5Jѯû³äº+íï‚ðOï¿´'ìóâßÚ3áT~ñ…á?Š7Â3ൠu~%xƒÅzíÿý>ÒMLO Ëác£BÿôKCSÖ¼_¢¦Ÿ§éÚõõÜQ[XC%çañþ ŸñïÀ? ¼OñFñ‡À¿Œz7ÃýbËAø¡áÏ¿m>%xËá~¯}=­¬zw4/L†ÎÞþ «Û8o4ýTÖµ Hîüö©¥Ãs}N0áz8Éeõs̺–6õ•ÔÃT®¡Rž=ƃŽª’Jœêë>7ømá‘âÿˆ_³æ‡ñWLÖ~?øAû,—Í?Š| §Y\Xh—Ëe ó®‹}â(u©å‚]6×OŸWQ§Ÿªÿàß6Vý²¾%²Êß³Œ™YH*Ê~*| ‚8 ŽAȯ/9ãÌŸÜCÄM|&|øz„kb°xllh¹J|’£WTq•:ôçíhb#B­*ð‹•'8¦×»Ã>ñFkÆüÁÜIƒÌ¸>hϯx÷Á?³ïÇm7âGŽ|/¦Emuy4šž—g¢Ùi‰p¶Ö7Ïoc³-î¨ösÛèÖúÈH_äßÙ£ö~ñ—íSñ¯Á?>jžÒ<]ãÁâ3£ê~1½Õl<5ðÏ„µïßF÷CÑ|E©Ä'Òü={™µÑï—òÚÅ7ÙíÞ[¨=Œ7ðö3™ãðÙ¶®&§R¶kQJQ–_J• b§SJqjTþ¯ Ö„åMF¥8JTÜÔ]¾1ðïòœÏ!ÉóÌð™VÃáøv…JQqÎqœU,9~"–UâëQÃÔ§ ÎTjU§ÊŸ&‹Å:Ÿ‡/¬¼ý¹¦ø^oÉ6Ÿ-¼PZÞÅqTþÿÁ>~*|Cø7áïÚÆ_?g/ÙÃàÏŒþo|Aý¥þ0é_ ´ÂÁŒ^™¬5©n-/R9§Ón¯¡°‡T³…µ 9î´ùm®§ÁñŸ ,,±¿Û˜…Xˆa#Z5\á[R©6’2xªê©)ÒÃ*µ){:ª¤`éÔQ$TÇRË#Á™ïתá«c~­<©ÎŽ…ZT'ŠÅºŽ0ÁaÝZøxR­Œ• uÞ#èJ¤q\þ¢½›ã¯ÀïþÏþ0Òüâoü8ñyñ…,|sá|+ñîñÁÞ%𖥫ëšž·¤ëº ̨måÖ<7­Ø›{ø,o’K‘íV ­¥›Ü~~Â>*øMøµâ?|ýž~x†þçJðwÄOÚ[â–“ð—Ã~:Õl¢»°ðgÛíµ_]h.ì¦ößJ]*K±-¬„³ÚÞÇmÛ_ˆrL6]C6¯™á)åø§áq.ªpÄÎjn4°ñêV­ju£N«N£”§7 Àü_ϱ|1…áÌÖ®}€æxü³êµ!ˆÀÂ¥[ê(SÂáÜëЄqêS¡9â0ñ…IJ½%?Š(¯ký ?gÏŠ?³/Äkß…ÿ´H4Á§XkºuÖŸm«è%ðÖ¯ç#ÄþÖ¬™íu} Sû5Ê[ÝÄRH®mo,/`´Ôl¯- +ÑÂbð¸ü5 n G„ÅR…l>'R5hÖ¥Q)B¥:n3„“ºi´xYŽ[˜døü^Wšà±Yve€¯S ÀãhTÃbð¸ŠRq©F½ ±JU!%gÅ>»4Ï¢Š+ â (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€>ñý’ÿà£_´Wìƒi?„ü)q |Jø9ªMtÞ$øñ6µ/ê–Ú‹7öºèWñ¤ú—‚õN9.R{›5O]Ïu-爼âY£·X~©ý±þ~ÊbËÏø)7ìÃàíCà=Ÿ…> è>?ü¼kI<3áÏx]ð¿†`Ô<0l$}:Î(µ¯ø*x†…Žƒ©x_ÄVڥLJü!®é:æ“7ÉÚWÇø'îµàŸ é?´/ì¥ûCxcÅ>ð‡ü9¨üLý<_àBÿâ߇ôø4˜õ¯|0ø½uk¡èúö«keö¿­øRïP}{[»Ôµ;?O’dFóÚ¿öÞÑ>8þÎ>ý„¿cÿ€ÿgßÙ`xêËâÅŸüfÕ4ë¿‹?5ý:{[›#®ØéM&‘§ÛÅw¦è÷ïm¥Ï|·7ÞðÄVóhZF•5•÷äì¯WвÜÓ‡8w:áìéçXgĸùTÁaò<Û"§)ýyã©á±õðù®'K•eÕ¡…þÒÃל*b¥…TjF×¼%ˆÀUðû3È|Eã~ â¿éðÞ6|!IUÅb8Ë„ø’¤)ÏG)–3/Áæ9,eSûK.Äâ*exêTþ­•ÓÇÓÄÓöÞð‡þ ë¥|fø «~Óÿ´wÅß…ÿ³ì¹áO6ßâ/Å kýzø–ÙæÒä·ð‚4Ùmnÿ‚#Á;,g‹P|jøS§þÝvGƒþ*X|?ñ»é×Ò~×¶ž%²¶ð/еÝÏGÖ_Wð§—v|­R-uk º}ý 6éß¶ì¯ãOØÃß±Gí¥ð[öñïƒ~üQŠ¿ #Ó¼}{o¦¾,Þ:ñ¦‹¨_[éÞ,’} ĉ¿‡lu×ZªŸà ?²¯ÆŸø'ºþʾ+ý’?hï†ÚgÁ/Š|Mý‘4¯†šï…|Ewgâ}?Oñ…Ψ|jºñV¦šÌÚ}߉|sãÁ½ðP|5ñ&£áCñëO𵯈4‰M¶©c£üEÔ?e‡~,ŽÂí15Ýÿ„¼U®iÐj öŸ%ؽ°¸¶½‚ ã§ÿw½Ö>þÃÿðXˆÕ%³ø‡àÙš×â6™â눡¾¾xWáWí9âÄÅz—óµ–³amumgq¶©IÇ"™ Ÿ k?¶G€ôOø#Ïí#ûŸ|\Õ~0|}øÉàøVïEðÆ‰¨xK@Ñ´ÏüñM忌n—Å1ø—LÔa´øGâ+Lð¶µf𦣠[I|Þ_\齟ìÙûcü:ýšÿd?ø(çÂ_xKâgмWûVüºøUðá~è:¹g¦ø‡RðÆ?GyâÁ©ø£AÔ¬ôk}Kâf‡}uq é¾"¾‹H°Öî—N’{[KKøÍ¸W2Åd>%PY<ëb³¿2lv9TÌ2l>;„ªÔ¬®ïS Jž3Ÿ$Ý¢£‰åï%ÌøCÄ<—,Ï>0—ap™vIÀœi“çÊ8· 9wUÉxÁâÜ5¥^¶70Ë¡Mÿ¥iá*Êrxzs¥õük§Üêµ§Ä_x›TÔÊþÚk;¸|ß„ÿf‹Í¶¸HæÌ†Håz.ø¤I*ÊOå˜Ì*ñ£0©…©G/Ì<=ÁÑÀâR£ˆ©€È¸š8¸R³¿6ëÓJÞÒºÛÄáž#ËsŒ¿èÿ–¬Ó ŒÎ²Ÿ¤:˜¼jEâ09v?ˆr‡—rÒIF–µ<+T!A{ÆŒ"”mþhý /5ýwþ 3ûgüLÔumsÄÞ=ð7íëñÓMø}«_^k>|RšÃÀñè\I3ÛO Xh¾Ñtƒ'MÐ4m?I[8mí‡ü2]Lÿƒ‚¿d-#Cû2Éâ]ö6ñŒRBçÆ:oí+®xVÞæíW”¾ŸÁ6ž·rãÌ“O°Ò÷pcå?þÓðM¯…Ÿ¶?íSñ;Çß²íQ®|dø_ûm~Ðk{áo„^2ð‡ŠþüSø‹à¿ŠZªZøóÆZ5 Oˆþ ›Ä×6f¿â/øvOø4k’j©k¥Eáû¨|7Ä> ýªßiÿtï ý°èz—¼5ñöÐèͳj¡/|9¢kÇw=¼ÚŠhö^ðö‘Œ8o7Âàü6Ì1n T²Ž ¥Ãùž"­J–k•fpÙ5Om*$–#Rx ¸,lh9U¥R8Z–•VPºÞ!pÎ#Œ|uÉ2ìGbó(âü“‰¸gÄÕªÑáî ËðÙ~' ‰À¬Û ”°XÚ8\ÊXܵU”)â£W„nçTù—þ ûf|8ý¸¿l§øÓðcá—ÆŸ‡>¿ø àÏ x®/Ñü+­êÿüâ¿Àú½¬^ñ_4‰ínü ­øOKŽåõ{]Jáü;sÚZZØZÝÜüÃã{Ç¿¾'Oñwâ¯ÅOŠ_|jþµðEž£ñ/ÇÏŽdѼ-g|5[}E¼ñÚ†­§iqjÒê:²i±jgNMS[ÖïÒÑnu)ä=OʼnŸ¾!xêÁg¿?þü1ÑüŸsyñ›ÅÚ_ˆüeâÿÁ­ê72ø‡P³Ó-,lô95 RÓ´ïì}"ÜéV?ð›¿>[Íbu‹ÞÿoÏÚWà/íûUi7ß²§À Ï<9ð;BÑ5›;Ÿ…^ øc»ñJÛÆž&Õõ_O·øq¯k~Õ,î<'âéotðxŠ[ÿ_YOéºMŒ· ä˜\>M‡á\›æKG/ÇÒÃãqï [‘ÒÃ,/±Âc*Ó«]©æ1¨ãIaëJ<¸NJÉJ1Œãœ~wÅ9ÇŠMŠâŽËsIÃ#–q‘äxÌOÔ¸Ã^U©b±¸Õ¥‡Ie0ØW‰¥‹ÃÒÅ9c¡<4eN¥Z•>P¯è Â4ïƒßðSÏø&NâÃoqð×ãÇüköbøñ JÔvˤjwügã{-ê6Ó±µ´~-C·¾¹¹]¶ú%HṸüþ×»þÖßôOŽŸ?e_øEñÎ…mð#þ áð;öuñ¹¯iÖze¼ÿþøÃÄ—Úµï…õ-XÕã—J–=^ÎïE¸¾›H×äHf¸¹ÐôõŽ'—›Œøv\KˆÊ°iNX ø."Áã10IýNXìºp•ïtÕHbjP’Ú­8»«"¼ãš\ƒãœê–.…ß …áœÇ)ÁU©É,ÑåYý<^;¦§N¶žŽ&ã¡ZqJWhûWø]­Á3> ÁJ|W¬%ä~5ð‡‹ï¿`OÙŸQ¼YP×lþ-ÙØøåüej]EÌZ¬³ž«àiN§c$Íkªø»P³7±º‡Ÿ ÿ‚µéÓèÿ³Güù¤\ËçÜé²OŽ´ë‰$M=ìñû)[K.I$ù’DÏ’I9É$×Ê¿ðPïÛ«âßüÇ?³ÍŠ|cà/‡|4úÆ»ýâ›=q>$|`¼³ÓôýOÇÖ1è>»ÑƒÃ¢è±i: Ðø‚ßF²µ»Ž/ܵ÷‘m©ÿý¯üûOxoþ ð«á÷‚þ)iÚŸì‰ðKÆž øŸâoøsF´ð^¡­kß ~ø>Ëþ=gDñ6¿qwnº§ÂÍnYÿá!Ó¼5v,õoI¤××vºwÇåœ?Å3Îx<Ïð-æñͳj¼C:)b(eô(ð–+#Ë×·§9EÐÆW¦±Š0sTñ™ž"ÝŸ¸f\sáµ.ñ‡…8+8Áÿ`æ|‰Ìxz5y°Ø¬Ëšñ³üv xzÔéÎŽc•ÇŠÁJ„ã ’Ë0Y\”é$~†ëš—ì‹à_ø"ÀÍö’±ý¬Š!ñåÇìmmð¾_êÿü?¯|AO xoÆò|Lž-1¼1ªxGÀº-êÙÙ[Ýj÷7ÚåMmd³G?¿moØ+Ã?ðN_бWì{ðöö°ñ'‰þ0xãgüAñßá·ÂH4mÆ:/ˆ¾Ùx¥®µ†ž1[Ë{=Sá·„5;֯¯µ=rx5;äÓ¯}?Söný°þxàoÄÙOö¡øWâ³?µÝ7Ç6ºg5}/Hø§ðÃâ‹=…Õ§Œ~^ë÷z~‹> óiZtÍ¢jÚ¾¥\][J.®¦ÒõhÞ ð?Œ`¨ü â ~ÌŸ³Wí×â/‰:Çö\>ñßí!â…¾ÐüÖzæ—ªOkáÿ‡p\išûêú5ž©áå:¾±%µ€Õ¿¶ sgioOµpüA˜ÑÍð|UŠn7—嘜»†–CVñ´q˜JøÈT¯J­™U¾§ŒÂÍ:•ð¸X<%3Ãޭ±ðíÏ(ðÙðGeÜIˆÅeÜEG…Êå–cpøJP¥S Âq-8¬f2›Ž ŒÆâ!˜â²ÿeˆ«Ó?†_üyð{þ èÿ‚€xëᯉ5øºZ…­|A¤JmµKâ.¡û(ü;ñdvi‰¬nïü%â­sNƒP´xo´ù.Åí…ŵìO?ø#½î±ðöÿ‚Àü@ð©-ŸÄ?~ÌÖ¿´Ï\E õóøó¿ ¿iÏèþ ž+Ô¸·¬µ› k«k;ˆ¥µHâH9ÈdøwÄßµÿ€¼/ÿ†ý§?aÏøBþ)x‡âÿÇ/¾ñ·…u øsFÕ¼ ¥hº/‰¾ø’óþkÿøI­üOcplþxŠÖ/ìß jö†ÿSðì2ÝÅíôúgUû6~Øÿ¿f¿Ùþ 9ð—ÅÞø™â¯þÕ¿.¾|8_‡º…®Yé¾!Ô¼ñÁÞx°j~(Ðu+=ßRø™¡ß]\h:oˆ¯¢Ò,5»¥Ó¤žÖÒÒÿ“6á\Ëø•Adó­ŠÎ¼AɱØX:4åS0ɰØî«Rªmþó Fž3Ÿ,Ý¢£‰åï%Ï×ÁÞ"äy~sôgÿŒ§ „Ë2nã<§<¶*Téeùý|—ˆð™~d¥F½lfc–µ*•§„©)7†§:_PÁ¶º}ΡûZ|Eñ·‰µMCÅ>3ñßì¡â]kľ&×.f¿Õ5&Õ>&|¾\\ܼ²Híî¥vioïžæþéäžáˆÍÿƒan®/><ø‚k™^iWö\ø‹l®ä³,¾7ü)²µ‹'øaµ·†’5_8ÿÁ$?l‡_°Oޝ~-|`ð—ÄÏi?³MÏ€Sÿ ´ Xñˆñ ÚÇÃo¬¤x£Åµ -|©Ø´CRkáªOaj,ÌrÜOkÊÿÁÿkÿÁ?üI¬|UøÓ࿊Zæ™wðKâ‚aðÏÃÏhÚŸµ¨üNð·Œ,³£x³ÄÞ ·û=ΗáKءۨµÜ×·ºdqZ=½Ä·VÚñwgXßø‹1À嘊ÑÎøc„ð™B¥ÛˆÀÿj¬U:æIÏ«QSO–Êp³}9¸Žøn†ÁJÙ¿åôëð×\YŠÍÝzÑO(ÊqøYC.©(F6£€¬¨F#B> œ#Ë Ž—öýº?àœ_±ž•§x×öý‘ÿm/Žÿô;]m>øÇöÁÔþèÞ ðn±«O©Aq®F¿åŸLÖeÓ§½ºc¸°´¿ŒyðYkÚ%â.¥Î?²÷ìýûJþÜß´‡‹ÚîûOñ_íû@ø¯]ø—ñÄ:­ßö†<5d'šóQÔµ[»H/Ÿ h_Ú?c´±Ò,îÖÝn4¯h7l¶1Oò‡Ám>ÿJøgá« RÆóM¾ƒûgϲ¿¶šÎî7ĬÑy¶× ÑùɱïE߉"åYIý3ÿ‚|þØÒ~Ä´®<)7<9«øGZðŒ´«{-fo ëZ†‹¬µÖwx ”z¾Ÿ¬øsF½ŠÓ¶¡mÞ™%ÞŸöѨÚ}¶+‡ñYžg9Oœñul¦tp8œïW^¬¨Fu0¸OV>5§:±ÂÐú­ ø‰sW—4½¬,Í8[+ÈŘAeð‹ã•¬y<í†ÚÞP F£µzÿìmû}~Â?°í>¹û'~ǵTñŸü$z7Å?ümñ€›Æº‚uëëm}|'ð¯Eð/´Íĺ7†¤·ºñŒ|[â-cFÒ-ôå×´I%ÔuKïý†?iÙ—öZý¹ü?ñ‡áÇÃoÚGÃÿ³'ÂÍwÇíáO üGÓü©üa¸Ó<}ðÓÆº¶_±kú'„u´Ÿx¢äA·Ä½¯„#ÓZãZñ¸·S^~w‡É¸–µ/%ŠÁgøÚÜUÀ4(ex¬Ï “a+âqø<³=ÁTËe…ÉÝ:JÒ­˜aþ§B¼%^T9¥_7Ê_·q&À˜?ƒ4rÌÛ†°˜üqÊó|úžˆ3œíḚe˜¨ñÆçøŒf?ƒ­§Ž–S Jºƒ¡B7%OçÚò ¯‹·ŸíÝ⯉ڮ©ãÛï~Ù´€¼9oâ«Ùµ?CðÇ‚|w}ᯠivW%ºZiÒôOiÖÍAc¥hÖ6ֱƅÿN§øïÿþý´?foÙ—öpý¼§ñçÀþÊ:jxàŸÆOø~ëÄß Ç‡/ôøNÊËâƒô7TšÇLM/¾‹[–ïL´Òá¹ðì:ÒxÛú~©­èsþJx›Ç¶¿þ8~Õ?4¿x¯ÂþøÑûT|qø»áMÆúLz'Šm<-ñÅ÷*СÖôë{ÍJÆ RÞÇRŽÓRMÕ5]:-FÞî =Nú–âO·tŠßðKû/ x)>/~Ï¿·žã ¾µñ]ÿìéℾ9ð‡¼Q§XÁeâ^ïMø“u¤xŸÃ)â+ë9u·Ò´F’ËKM]´Ý6ô¥”r'ÙæÙ-Ã\+N¶]Ä4±ù6<7†!ƒY–IŒ§–¬%_Üâj*UhW£R®¶X\ftäãZœ"¡5ù†_Æ™ûñÄ8å|EÂx¼›:Äc°XÜ“3lv"â,¢¶6¥O˜`éµ€Ì0ÕãO1Ãc°øÜ:8ŽjØyâªN½ð_µÿüúãöø—áki.üâÏ |Pð…߈¾üRø}6¼Α-üÑi¶ÓÍkí‹^øröùlìµ½êÃ]½·ÔÁ?ªÿðX}Sþ ›£|pý¾ ~Ó^ÿ‚‡x‚ßàßìãàû¯„~ý–ô_€z§ÀËχÚÖ¡­hÚwˆî,> ]¦¿}âC7†×FÔ®"†ÏDû.‡£Á ´Ïö¹n#ÿmßÛcTýº>-ü‡À|Eðöcý“¾ê_ ¾ø;Æ—ÂïÆšŒÖ• èº•ö»²YÖÚo„¼ag¦¥Þ±¤[ûzþûXh,þ©Õ¿mÙkãWÁ/„žý»¾ þÑ0ñÇìÿáûŸ|6øåû,^xïân£ðþãû;ÈðoŽü7ñ+RÒ´mcO±]#Lk6ï®ë{(î­¬ô«½Kň>•ñnc‚à,û>¡š¼~Qý¹G;¡ÃÕ0˜\ÚœsENŽ]šG N¬ð•+SÃa)ÒÍ0˜:³öRÌqO Q£(/±ÉóÿøC‹¼TáͲ<ʇe+‰álGcñØì‹ŽÉêcêæœ#W?­cðô+Ïoû|RøcûWÞü!ø“àWÔµ„~-ø‹«ÛÅ}â i7:çƒ>|E×|1â}uô;¹®f´Òõ;ÂƵ¥ÙëÓP-Õ×ôýüßiÖ^™ñOþJ?¿ìdÕô©ëšÐ¹ð¯‡á¹ñÿ„ü+â†z8ÓlΗà}âW‰¼¯Âú ‰„Zi’˧êÞ(Ð|75ŠÃ¨hVÞ×´ñÙu<|F«ð»Âšnµ ^#Ä­•‰øGðâÏDðÍÇ…¼1¯Þøïž³ñŠ®ä½Â:…­þŸàïM>—$Ž‘/ˆõÔÔtkkÿÚÜÃuv¿=?ŒZ±Äá)9º¾ÓšQ‚´§k -8%+IÓJ4k)J7oÚs[žr”~Fñ¿ÃŸ…~ ±Ôä~!x£TÖ¾$|ZðÃË ?WðýŒ7>ðî‹¡ø?ÅÍÀðΫs©_^k³ë_èz=…­¾¹ ¢ÛØk^¸¶y/=SDýŸ¾Zê?n|M¢øÆÚÒïâ¾àßh·>jÚž«áØt g]ñF­{¤ø7I¿Õþj^M;OŸVð‰o5]KQÓõ9mm|C Ü@5ˆþ<›ÆÞ*žO M&³sçø H|/q[Ãs¦K/ˆµÉwöˆ¡I¯u×õKËæÔu.ïÊ›k3qö [nöçöø©uqeru­Õ´ÿ?‹m ÒüðûG±_¸Ó.´mJíôÝ'ÂÖZtðkÚeäÖ¾'Ón-eÒüT¢ñ–©-­¬Ì]îéíËd”ZÒÎW»»»Zk¶ú]=jPǸFÄ&íYT©*Õ£7Į́ò(G–6‹\íŵ&Ü4a8öšWÃï øÃú¯z¯†ü7¬k¿¼y{¥–Ð5½{Køqðë@Ð.t-2ÃÄïáÝ+UÔugV›Ä>k«¡†–úÛOÖÛÃðM¦¦ÍÏÂß…ö1kÞ/Ô_Ƕ^ µøSà¯é~‹XðõïŠáñ?‹ü]¦è¶>ÔüC'†ôÝ*âÏQЭ¼C¯ÚëPxfÆêÓO“KÔCÕÒÎâÏSñâw´ü7>›«[¢øSDÖ¼7£ÙÝèš©¤ÿaxŽ÷YÔ5Ý/VÑuM.óHñ®©s¯êlOYj¦[y-l‹}LÓ-ìêë¼a¯Câ+}[Y{¨|W¨ø{T×#ûn·3øNÃRÒ¼5mmök8N—¤hºn«uc§èQ²ÐോM…tíš6Ž,fô­ð]Ùn•® ’k]5Û­g}ì–žÇÏ¥~Z|ÚZrçqx‡'^òt9cíœù£Ê­)Ë{âo‚ôŸ üJ½ðw…¤Ô¾ÀÃÂÂÎ]ÙÝjze÷ˆ|?¢j—Ú6©¨ØØi–—“h:¶§u£O¨Ã¥i‚ìX·Ó,W³‡Ó¼I­jú‰¾!|8øaà߇çÃ?¡ñ>Ÿ©ê~#øsð×Å'Ô´¿ O.‘­xÃRñ?ô-oXÓ5M^åMí¾—áÍKO‡L¸½³Òü?eö˜`’ož¼GâcÅšö±âo^}¿[×µ½WT¼ò-m{ÛÙžyÞ+;m¬làå`²±¶¶²´…c¶´·‚Þ(âNóXøÙñ^Ñõ=TÕtiÓ[²N×µ¨|à{/x‚Ê;Ë;ómâØxrÛÆúôsÞiöWƒWñá¾’Ú#xg Š‚si8ÝÞ<©^ÚÚ7ºqOKÛšöÙõ©ÒÄJ8e'J·³¦£UV”œOÝ^²‡$•Y%ò)ºvro™sJݽïÁ*-OÇúMƵ5ï…<ðŠ>7žÌ‹¯Šÿ.>Zë>¼òôÝßÙjþ>]:ÖWØ:wÚ§˜¦¢cÄŸþØx¿RmR?x‡NñwÅü>øwiá+¿øZúßI𞯦è-Öí,üy¡êªÍ©[C‡´=?Ã_o»Óµ{™µ»/>ÖK<—ãïʼn¡Ó “ŘôÏøOÅÑíðß…Kÿø!oÃzî¿2hk7‰õ+T¾™/®|Hú«ë©‚kÇS]/M”¼'ñ³âO‚!²‹Ãºå„2izûøŸI¿Õ<+áë6·4öW—z.¹â=VÖ4xµ9´ëFÖ,tÛë]?Y²j¶·‘Ï:ÊÿsÒ.Ïû©ÛÞmYsYû®×}®·fjž>ÉÊ­9I%*µ#̽•5+ÔTyázÔÕKF/š3œ¶ÿKßüøyâOøãÅZ–­ xcÁz¯ÄŸ‰ðbÚüHøSðÚ? è^6–zwŒ/<3âÛíOYêRÝÛ[ËáßÛYßÉseª\Í­Åq{¦[Þ|']Þñ'ÅšnƒªxhM¡êzN¬Ú¼³Gâ_ø;Å·¶:õ´Vº½÷‡õè:ƱámJþ;{i&Ôü5¤êj´´¾K”½´¶¸‹„©Ÿ³•œcg»ÛwkÚÝ.›Wïm´7ÂÓÄÑçU«*‘\‘¥nk¨A4œ“ÑMÇ•IÇIró?zRoÉ>;‚~øàúÃÿ§*)ßä’xçþÁPÿ鯯Šôp)*2·üüúD’âVÞ>•õÿd§ÿ§«ŸÿÙxerces-c-3.1.1/doc/html/graphics/index-label-1.jpg0000644000175000017500000000403511363617747020621 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ x"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?û«âÞ£áÝÇ5¿xIð…´+ïë¾"ñN»ukc¢è.‰m}ªêZ®«}{siie§ÙZZK5ÝÝÍÌ0ÛB¯4Ž>uûüOø_ûYj_~"øâûRøC㉥¢êž$ÑdÒäÕ¼ðûâ>¹áøŠ} V¾»µÑõ]7Âι¦ÙjpÁªb\Ù®·¥é:‹^é–~“ñOþJ?¿ìdÕô©ëšÐ ø>øNðÑÔu«Øø¦ëžðÿÅŸƒÿu-.×ÃQÇ5¦½uãoξ ðf¯Ç:µÔ~${çðœw÷³Þx†!iÇi5ñFƒk¦Yé´¶Ph¾$ÅÚG—£Ï¦x†;xmP°º–ÞK«_µÛÚÙE©ÚC2Xê«§i‡S¶»m2ÀÛtð|añ½§ˆG‰ìGƒ4ÝE¼??…®¬ô¯…ÿ t¿ jšÌÒ\\Yëž Ó¼má }æšE’[ÝoC¿¿vµÓ÷]¦éâÙ·NVr‹nêïG¢ånÎM¶ô•®ö•ÒFk‹¤ùhU§j5-å Ô’”c'PŒ"¹}œ¤¡ûÈJq³«Rþ·ãƒ>ðž­.¯#k±xKGøgáŸøƒÃVž?ð?Œµ·ÕüQâ¹ü5¤x[Bø•á=oj0ê6cñhñ ¹‡OÒšúÁ´Ûûûhó¢Õ¼ ðmü3¥ë7ö0Ðü-áƒ67šßOŸÃ2øßZñ¿~,^XøsÂÚ߈ÛAµÓï¬-Þ{=q´kK‹+hWY¶ðýÌ)6‡yá‡ãÄ—Õ?µîu]P¹>°ðtÖÚ¯ü «è×¾үΥ¤Yj>Ôü5w jsh×B/ìmKPÓ.uM"ÖÖÂÃM½µ°Óìm­ñ|KñOǾ0‹WƒÄ~ “R] ]P5†•l×1øE¾ðÿ„àYXÛIom¦éšÚMmjÐÛê·«¬G¨j¶ö×°—¤¹­ ú8¯TîŸuÅ$·i-• t½’©]' E¹Ó­Vî>äg A§î:ܵg9T»„dݜ׶ø¿àïÛH¾!éž›Ç-âO Z|7Ô,?¶õ-m*ßWñýç†máÅú[h:mΫ¬è±ë:½ÌÞ2†}Öæ]éãÁ0DçU‹+ã_ÁÏü1ÐÄZw‰4ÝGÅZ?Œï<%©Çcñ?៎"ñ=•­¥ãÍâÍ?Âþ ¸¹ñûmFÀض‰ã;½KSu 6–m>öÞûMÇu_ˆ¾3Öäñ\ºŽ´òËãoé¾.ñ,Ùi¶R_ëÚCkM¦\Âö6vͦZY7ˆ56ƒHÒMŽŽ¬ÖDؤé?ao‹üâ?ìô9¥Ýÿ_ðߟvQE±ì¿¯øoÏ»iw×ü7çÝ…QG,{/ëþóîÚ]ßõÿ ù÷g’|wü#ñÀô ‡ÿN6TS¾:ÿÉ$ñÏý‚¡ÿÓêàRTeoùøÿôˆÄ­¼}+ëþÉOÿOW?ÿÙxerces-c-3.1.1/doc/html/graphics/faqs-3-label-3.jpg0000644000175000017500000000262711363617747020613 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ x"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ýø×…ÏLj‘ꚤ.žž Ö..õ;„Ci ¥›Ý³¼fXw—òDH‹ vyF²9XÛ—ø cáÿ|VøkepÂãÂ‡Ž´£­O©ÙìŽOéߟâ;ÛËûv þÁÓõ¹m›Ï@1ÍüxÙøûÿ%›â7ýŒ×¿Ê:ó­Ä:Ç…õ«hWŸ`ÔN­iBè[ÚÜ:Yx‡EÔü<Öµj7’XèZV¥©xkV‚ɵ85 ­Eô3Y’˧ñçÃX|%â/|Pñ–ðm·Á¿ ü@Ò>ëÚ³¢išwŒµ/èÿ ï-5]U[]WûÃĶÞ!ñµû°Õ­á²ÔÛPÒõ¹çºøñ|A«§‡åð´wž^ƒq«Ã¯]XÅ´_lÕmlæ°³º½ºŽ½¼}¥ÕìzmµÕÄÖºqÔu9l`·›SÔ$¹ë<3ñcÇž´±ÓôMbÕtÝ> ~Ò=+Tðÿ†üC¤ÝØxžmç[Òõ+Ä:F©§kÚEÕ}F-#[¶Ô4ËRÉuM>Ò×P–âæPn?„þ$ÅðORñðð§€u_·Å$Õ¯ü9¦øOáŽâ-ÃvÇáô×éº=—‚¼+yâoÛxŸÀø½¼>4›¬­µjAô½@?|FÑm<7ãoø~ÓÃ^ ð‚è—Í¥\øwÅ$Ò¼]­iº…Œio¨Çsâ-þÒu8¥¾ŽââÊk  qe-¼qÜj ‚þçÞ>'xÏWÓ‡Âß‹vV~>#ø‡ðòòÓWÒµx;ž Òaðïˆgðõ¢øGÂ4мG¢xMßE·ºXt;kK}*æçP·ðì:.“y&™_1ëÆ©â [R×u»ëOXÖ/®µ-OQ»Ëu{}y3Ü]\Ï!多iØà œ( ´QEQEQEQEyçÅOßãþgÿJ ¢ñ[þI׋¿ìßúQoEÿÙxerces-c-3.1.1/doc/html/graphics/migrate-archive-3-header.jpg0000644000175000017500000002662211363617746022741 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ#È"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ø^Š(¯õ ÿœp¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢¿§oÛcBÑþ8ÿÁ*¾|<ð¨i~2~ÈŸ±GìUûeI§¬òÜë_üIáOøÇö6Aá–ñ¡Ó¼!ð×Ç~"¾*íý³£ø>ÞàÀ—‘;þ~É¿›öŽý¡þü"Žqã/Y7‰õHæXÓKð Þ"ñθ.w,Q/ÁÚ^³¨C,’ÅK JÓÄH> †8óŸäùîm‹ÂË(ÿWqxú9Ž¥u‰”0¸: G žÇåG‚”kÓ^É(ÍT¢§QÓs´ø…à®uÀù÷dØ<}>"‡eùN# ÆQÂKí3­ '(­Eâq‘†#¯O*‘ÄOÚÑ©G*tGF>Q_¼ÿð_gŒ4Ÿø$ïˆ~´zwÃoŠÿ?h?húTVv‰xZûÀ³§‰|oës-”v6:…°H¬žÙJªñ* øóöŸö¾ƒþ ;û}¿^ý™ôÙ*oÚcTƒÂÞ\Þ=‡öŠÖ|['ˆh?´h:ÏöÅ¥×ÃItMEÇÄß²Ãáÿ³x•Öùp‘â=Øä|w<ç á|î¦UG-©ÄYþ'#©—âóDªàç†Äg8yJ_¨Åcñmå.RöXKF­gõ—õk×õø«À©ð×qg Sâu›Páî¡Çxï‘Wú¶a…­ ¥ªŽ9…j™6ÔÌkR§™S«š©Îzž”³‘À~mÑ_UþÌ¿±ÇÆ/Ú®_ßx øCÂÞøy§¦§ñ â·ÄÿÅ࿆~ ´š9å€ëÞ#šÚúT–Xm®. }ü¶¶°½åòZÙâsïÑÁ.>8_|0øáñ·@ø§û4øËà×À߇šßÄ«ÿоø¶Þ:ð´_ è>,ñŠ´ï‡¾%ð—‡5:çÄ^²ð”ɯi>0—Á§Ë­ørif:~¤÷ÖßAŽâþË1up8üï/Ãc(Ï J¶¥eí)ÖÆN”0´&¢¥Ëˆ¯í©NöÎŒÖ!ÁPN¢üë&ðÃÄ Ëhg/g™ŽWŠŽ2¦‡ÁNXzÔrúxŠ˜ÌM9Ë—› ‡ú®"”ñi}[ëT¥ƒYbíEþkQ_U~ƲÄ_Û›â.­ðÓàÿˆþé:¾“ðþûâSê¾9Ö5Û^øzÃ]ð¶€É§ßx_Ã^.º¹¾¹ºñv™sh¦Â;¬c»˜ß¤‰o ·Å/ØÛÆß> Ëñ—ãgÅÙóá6¢ú_†õÍ#à_޾.èš?íâ-ÅZ¶¦éº†ðÀA=ÈX,õ»ê–Z®§¥êšW‡mu Ûën-Ìï_‰r6eý_4ÂSÍ9ðTÖͼS–bæ°n4c)B«§;ÔIÓ¤’•iSR‹|¸/¸×2É—àxk4Ä䎬ÿµ)aïƒ_ر¥,Μª¹(ƾV§l<­ˆÄ7(á©Ö•:Š?"Ñ_ ß?àž9ñîà9õÚ3ö1øMâ/Š/…µÿ‡ÿþ+þÑžо%x§Oñ½…¦§á$Óü¡iþ&ÕSQ׬ïì^ÇH¼K]TÍw¤Öq^$ÐEàÿ¿e¯‰ßh[Ù³âìÞømã+ßøOC—ÄÞ+ñŸt½+ÆWÖ–šW޵o[CwŸ- »:ž±­ýŽIô{ Mo´øµ :îÂ(ÃqOc1xŒ6ÂWÆa¨VÅUÃS›u^„”+×£_öŠTfã “ÃûXÂrŒdÔ¥ë0ðóò¬¯f<3šàòœËC„Ì+Ðä¼n*.xl-zœÖÁ×ÄAJtic=„êBœŒ&ãóû¡û{ÿÁ;~ü ý›ÿeÿxãgì“ðÓÄgà—üqñsÄi}oM»ý¦|AáÏ|:ñ ­Çì³¢kÚ^«¢üG‚÷Wº×WIµÐÇ€¡–×Ç~7ñµ[(¬>MÐ/ÿkfÿ‚0þÔÂOþÌ:ìÁ7Ç¿Ü|Iñ/®üt>2C®\ë_³³i³ü<¼°¶Ô>?‡¯õ9>[´¾'·žò]6ëÆŸbe¿ ʾ Ä,£7ʰY¶QVŽ+ˆ°œ?R–e[û2­˜œÖyc«NÔqtñ5fé¼F Áâ£:TkVÁÖ•HÒýà/d¼O_†8–qËêÿ©ù‡às<« <÷-ÄSÁdtóŸ«â¥J®€ÃáåU`³ll°¸Š˜Ò­ŠÁàsl+ÃTÄþpÑ^÷û:þÌÿÿj¼ø3ácâ fÛO—YÖõ ËËm#ÞЭÝ#¹×5ñW¼áO‰¿ 𧊾1j>ñ³áY5O…¾ “C»ñž¯áýWÐu$𞫯x{ÃIâ h~×g·Üë9ŸpþOˆž4Ͱ˜,U<%<|ðõ¦ÕUƒ«V½bTe)RçÂâyåýœhU©S–œ%%y‡¼kÅ8*YpÞg›`+æU²zxÌ%<;Í(PÂbj`§VSŒ)×öXü§Ž µLU 4]JÕ#MþkÑ]ŸÄO‡þ.øQã¿ü4ñö6ãOë·þñ.<°Nö®›1Šx–âÖY­n­ä.-/m&šÒöÎh/-&šÚx¥~2½ª5©b)R¯B¥:Ô+Ó…j5©N5)U¥R*têSœ[ŒéÎR„âÜešm4Ï“Äá±µ²a S\½õ¶¡à_ˆw2Ü=ÄÆãâ%Šb‚/’—áaÆtxAájÞ¶½XfžÑ}Yæ¸zxle\“Ù{;ýn9N*Ži)º©}^¤"¡&å(~¥…ð—7ÅøS˜x£KCØåÙž•\†T*,løˆ¯•É©bÝ9`Ö}…Åe씣<&&¼ëB0¥N·åÍõìwûüLý¶þ&k¿ ¾k¾ðÿˆ|?àMOâ åçÄOÄV‹.‹¥xƒÃ¸µµ¸ð熭~%ÈpÙ—ö=|Ó O5çÁSþÏsoå˜9¬Tc9B«§;ÔIÓ¤•ëJš”[ù|qži’LjòþÌñy©æ•#šÑ¡Í‚¶MSÌ ëó(Ƶצ㇕«â”p´ëJ~E¢¾àø9û|`ø­ðµ~:xÆ??gŸ‚WZƒiZ7ÅŸÚWâfŸð£Á~#Ô£–{ymtË»-NþùVæÚ{T¾:t:mÕݽݭíÍÅ…üv¾ ñÓàž¹ðÆW„uÏü/ñä~!ð‡Ž|/âÿ„?4/ˆþñ?„µ-_]Ð-5­_Ðæ``“XðÖ·``¿µ±½I,Fµó[Í5ḋ#Æf5²œ.i„Äf%VpÔj©ÊpöúÅx§JUð÷^Þ„fëQ×ÚÂvÏÀœc—d8~(ÇðæmƒÈ1QÃÔ¡™â0³¥Btq‰¼!ÆV« .1+àñU)Ç ŠM<=ZœÑ¾‡íû4ülý–øóà¯øA<_¬xbËÆZn‘ÿ „¼OöŸ ꮵ¢Yê_oðn½â.;Tðö±kö9ïb¿ì~t¶©oqk,þ_Ðçü?öBø£ñûþ Iáˆ:~¯ðãágÁï~Ãÿ|3âŸÿ|u¥ü2øO£ø«TøóñÃTÓ¼+ÿ .ª³Ï«x’çL´›Q}Ãún¯{abmnµ8¬aԴǼüvý§¿eOвgŒ´?|Lo ê¶þ.ðÍ—Œü ã_k«âoxç·ìR sÃßÙl'º´óWŽ÷O°»X¥´¼ÆÃPÓ_xïÅ>G>Ì(R©*KÇb0”pôd§ˆ…\5,lp˜\-|D^šöð”Í”Wé÷íï¦þ׺ÿ€ÿà“øÛãOÙC¼Kðb}àyð…çÄ{?Ïá«ÿ|´ŸVøÔÞ'Ò5{/†4;‡Z¾¥7Ã^;i“ÇsOg¨ÙÚ7É¿µgìÃñö<øË}ð;âÿ…5ÚxkÃÞ0·¾ðv¥¨êZ­áÏ­äz~«¦K­hÞÖÑu=/ZÐçšïE³Œêú&«ol÷0Û­ÄžÖEÅ,â– 5*àðøü{Îg†Ááñ¯ ø|—4©–âkPÅ<65¥NJ„±TU(Ï V´¨·V4½¼þG<5ÎxN®.½ xüÏ%Àà¸_Í+esËje¸ž)Ê´ð8,Ïñ8ϪºÞË&8šøl~• G>^¦ óî)ðÄÐ~Ìþ$ý«õïøÂ_ ô/‰š7Â-6/ë7ú_ˆükã[NMbm7Á¶ƒGŸG¿EÑÜêZÄúž¹¤àŠh¬P¼†KUöoƒß°‡ÅоÓ~-xÆßÿgŸ…^!¿¹Ò¼ñö–ø¥¤ü%ðߎµ['h®ì<öûmGW×Z …û)½·Ò—J’ìKk¡,ö·±Ûv⸋#ÁQÄb1Yž…66YmiÎm?¯ÆœkKN)9×ÄFœ¹åJ„jN*5.“¥UCÂËøŒ3\N_ƒË¸w3Åâ3<µg(Q÷™T± Â¥VÕ,6XŽJQ¯ŠJU°Ü­¬VÕø¢Šö¿Úö|ø£û2üF½ø_ñkDƒGñu†»§]i÷öÚ¾â_ jþqÒ+Öò?øCÅ÷ß°'ìϨÞ,¨k¶ìì|rþ2µ.¢æ-VÙÏUð4§S±’fµÕ|]¨Y›ØÝCÏñ×ímñïDøéñÓöUñ€t_èVß?àž¿g_ëšög¦[Ïñ/ጱðÂ>}c]þÎñMž¸Ÿ>0^Yéú~§ã‹ëôÝèÁáÑtX´h|Ao£YZÝLjîZûȶü;-àìö–+$tð¾Ã,Î0«ÆTªÔ¥ ”°³ºÙ¾MSØ9¹bVgF¾#)Æ*q’ެ]I%§ýÛx¥À˜Ìm‡ÌóL631á SľU‹œ¨ãkg\#⌮–)SpÃbrê”pÙÆWF¤á:™ÌJq’§Q¯ª¿à­ztú?ìÑÿþi2ù÷:_ì“ã­:â`IOcû<~ÊVÒË’I>d‘3ä’NrI5µûkÿÊÿà›öVßú‘þÙUòüö¿ðí=á¿ø&¯‡Þ ø¥§j²'Á/x'≼SáÍÓÁz†µ¯|1øKàû/øDõÄÚýÅÝºêŸ 5¹gÿ„‡NðÕØ³Õ¼9$V“\_]ÚéÇíCû_ø âüoö*ýˆ¼9࿊W?>~Õ|]ñ‡ŠÏ‡4i¾CáhµÏŽW ¾»aâkßǪ~0xyÖ=SÂzfœWIñ+L-…‹jk-áÜî ø}„©–âaˆÊ¼KÌól‹Œyð™mloÔ¥Œª¹Ÿîg Ã(¸¹;b)»jíÑšq× ãüJã\ÙgùeJCôlÁä™v&£8Üú^­‰Ë(è”1TÖY˜ËØÏ“L,Ôoxs}=ûTA7ƒ¿àß¿ÙÇEðUÛéKûJ~ÛöøÃ&žÍÚ¦Ÿ­ñ©l­u)-È&4„fT»Y#d²µO(ù‘ë?à™:&“áÏø''üÇHÐì-ô½6/Øç]¸[;Dòàk©>þÔ6ó^J€þúúâ KHnoeßus­²O4‹oOž¾þØ_ôÏÙcÇ?±×í}ð³âÅ?€ú´ŸŠžÖ> ê>´øÅð¿Çz=Ý¥òßø:ÛÆ×ºo…õe¼³[´·¿Ô-ÒÔ±¶ðܾ,øo¦hžðôCLÓgñ]íý¼·š—Š/"Éâ|6e”äþÁþ7ºøÁñgÂÿüW ß~ÌÓx×Dø_¢è÷Š¥×.u†¾(…SMñ'Š|!c$eàýJÑDZ£Ý¾¥s§À– ÓÜ[~`|Óïô¯†~°Õ,o4Ûè?¶|û+ûi¬îáó|AªÍ›mp‘Í™ ‘Ëô]ñH’.U”ŸÒò|«G¸Ë5Ä`å &;)á,>_Œœ"ã^XHg^¥FzÉ{)UºÑÑ6é?yÅ5ø?ñVðÞI•gjžm‚ñ3jæØ &&T±t0y‚\ ZуŒ•,GÕê{:oÝS§&£QƬž0ÿ‚oüøá/†ÿ¿à µ§ÂoÙKÄ¿¼?i­ü?ð=÷Ã_|rø®š­õõ÷‚¼!=®¡¡=½Î ÒÏwa¡w,z}þ¡oªÁu§X{Wü<±ÁO¾YÆì–ן°€ï®aS„šîÏö€øßkm<‹Ñ¥†ÞæhQ"7+Ò¼ûöÅý»aÏÚ“_ø;û@þв?í3ñö¯økðÂÇá—ö_Ãßx7NýjšÿÁ? êP4–»/ ²üMø—NdEÅôØQ Á>?ÿ,𥧀ÿooƒÞðÞ“j¶^)ðOÅ_ üC¸[$üCáŸøV%׿³×çd-u¥]x·@ðÝÙ³¼ß`/ ±Ž;te· æ²wíyìû¡|aøQñá½§ÆÿÙÇö…ðœ¾øÅð’÷ZŸÃ×Z•£[^YÚëþñ 1Nú‰ôÛ}Bémîc޵0³u¾Òõ-3FÖôž÷Fÿ‚ƒþË_²G‡þ ÞÿÁ?foÚîãöšñ烵?hÿjKß…òøgà垺°®§©ø(|<¾Ô4ŸêòÛ[Ka{â%µ¹y-¢k»ù4¹µMUîÎ2|î/2Jy/4«ÇšÕr|Úœ°‡§˜d˜ £“2«V¼+àÖG[ <];Q©í¨ºRUqTaòœÅ&s—ø™`ø¿,áŒ?„Õùøß Åc+à3 Ê9o×Ïp•òº¤°ùµ þ†+‚Äʦ"•+ˆyœ¨am‰©é?ðK<=£ÿÁcÀþ•n|ð¿öý³~ø6íf7 wàßø#ãVá…Á,nðÐÒ¡ûK3=É„ÜHÍ$ŒÇÁ¼+}¬|Eÿ‚äøçÇ<ÖoüY­x{þ Æ<á©5™Ô~ð÷€?hox7údLP/Â'‡<5e*Æ'¶Òô+H£—t·-/•Á0>+øOö'ý£~üfø¡oâ¯i¸ø‰«xÑ|!o§jþ'Õu|8ñ„£—O‹Ä:߇ìoM¾§â ;í—ÚÍœ²ØZ]^(šìÇg75ð{ã÷†ÿá¼&ÛXI£M¬ÿaÿÂOý‡¿O{X¼K.‡ý¹Ö±ø‚KHÍýzX®ÌÿÖœ×,-\e)xY…Èhæ2„[Äætó æ¥|2“nJµXÕÂשîÉΛr“Šk‡ Ç\3KÃìÇ“f¸\ª?ñ1râYå”*ºÃpÞ/Ã4©ãéRŒa(eóž2£IÒŒe =:Ô%R©*s÷¿ø*ìò/ü«öìÓ•ŠÙÛÝþÍwÐÛ¯Gw©þÌŸ Müêƒ%ÓZ@Ó0‘3dó_ײþØ?¼7ûV~ß_µ§íào xÿžø“yðfÏÂö¿´+ Ä?ð¯>xáÆ·tÐhúψ´i¬îuŸ ]ßéséúåÿ¢ßiwWkews-½z¿Âßübøoâšgˆõ¿…:‹toÇ„ôí+U×µýH¸]FOÚXkzׇ´É`×g¶ƒIÔžçX³6Ú]åí͹šæm¦ú®¥ŠÊ8‡(bð˜®åœ-•RÄà!,WÖ°YUVÂF´±Öœ¨Æ<Öu,¯gsò/+åœEãgb2¼Ë/þÊÏ8¢p™¿µK-X\Ê8Y,­h'ˆŒkчkk¥F)9-÷üwöŸø[û|Køyãÿ‡¾'ø!ñ“á_‰>üYð7€qŒÊ=”èÒÆÓÌ2ü¿1ÌñÛt1ï2ÄS•HÕ«*ÿuÿÁ¾l­ûe|Ke!•¿f/2²U”üTø.ApA‚8#‘_Í÷€¬â®?ÅŸŠ·×ß<ã­_ÄšÞ¿â/Ü?ˆïnµ ßjój Ú™¸G¸Ô5»Ôï.dF¸–îòoÞ–8Óõ‹þ Aûn|"ý‡þ0|Hø¿ã¿|vñÃáð¯âÃ/èÚ_ƒ|6~,jZt_<â?_ë¾Öüi hi©êðzE«Ç¤x›V…oˆ5Y¢óm®9£ó!’9cÞ‹¾)Eʲ“ö9.[Šq†s_R–1ÉøF–_Š­N1ö²ÃSÍÞ:„¼ã*2­…öðj+Òm7׿дem\M­jO6™iyo¥Øj> Õu¿ÏïŠ_¾xûÇZt?³Á_ ¾è¾ ‚Â÷Røï¯hš¯ü_âè5ÍJ{~úÇB‚×KÑÍþ¨éÚzéZ4 ¥ZÑ#Ýkˆù¼>£˜dYN…s,Ÿ1¥ŒÊ玅lß— S+̱˜ŒE,Æ–)b}½J™‚¬«U¥,:ÄQÄδq„cí%Ñã~eOŽqu7K õ×Jþ¡ÿÁÆSê¾/ÿ‚Š|øs®ëºåßÃýö1Ðükg࣪]§†ÛÄZÿÇ/‰º>¹¨É¥¬¢Ü\k6~ð”z¬ÑªK¨ÅámÖíæ´²H ¿à°ntÿ€¿ðBh,•m¢¾ý•~"é—QÀ«KagðGöT¾´´e@ÁourÃ6Fã(M|™ÿ=ý¯üûr~Þ:ÆO…^ ø¥áx?öWðçÂ+Ë¿‰~Ñ´Y5/鿼g㻉´Yü9âoé7š_öOŽtëT’]R×QþÔÓu¸LŽÚΠ˳þ û_ø öžðßüáWÃïüRÓµ?Ùà—<ñ?ÄÞ)ðæià½CZ×¾ü%ð}—ü"zΉâm~âîÝuO…šÜ³ÿÂC§xjìYêÞ’+I®/®ítï’á~Î08©ÖÊëá§ÔÏ^wEà%‹ÈsJÞ%EèëâëÓ…×75ZŠRÕ¶~»Ç¼}ÃyÏý#•$Àã²þ%ð÷(©ÂÐX§<>i_ŒÂc*K Z2ÄÒÂÑŒýõñ§F(ÿœ#õ‡ü?þHWüoþÍâwþ¨oÙfºÏÛ·KÔkOØwöý´¼9esâ‰>Õìcñ¾šóZÕ.õÛ»m3áö¯«m âèz<º|0º;^|t°0Çmñüö¿ðí=á¿ø&¯‡Þ ø¥§j²'Á/x'≼SáÍÓÁz†µ¯|1øKàû/øDõÄÚýÅÝºêŸ 5¹gÿ„‡NðÕØ³Õ¼9$V“\_]ÚéßHÿÁ>¿à£ßb¿†_|ñ—áw~3øC^Õ¼ñOῃcQ%ÍN_›àkåª2ŠQ–a7RÔ[šð?ø*.§§x_âì½ÿçðí­ï„?bχ–Þ<øÛs§8’ÃÄŸ´‡ÄÈm¼MâFžhËE¨G¢}¾ÂßLŽéîfÓlï5}4BÒH—ôþ ªÁ3to޳·ÁÚkÂðPï[üýœ|uðŸ²Þ‹ðTøyðûZÔ5­NñÅ‡Ä ´×ï¼HfðÚèÚ•ÄPÙèŸeÐôx!¶™þ×-Ïó± k~8øâˆ¾)Ë=ÇÅ~9ñÄ/ÏuÖ× ­jwwihmî Omqq5­¬¬Ïkos»bãõƒVý¶?e¯_¾xöîø3ûDxÃdzÿ‡î|ðÛã—ì±yà ¿‰ºÃûìï#Á¾;ðßÄ­KJѵ>Åt0E¬Û¾»¬죺¶³Ò®õ/j> ô³n̰4¸#›ã±¥Ïˆ*d©ÑÍjæ\EN|Vu‡§YÅb)ÿhà øxIâ)ás)Ê”g3G x«ÃõøƒÄÞ¥ÂÃ1Êøo'àXq<çX~©ŒÃÿ«ØœÏ w‚ž#‰ÃPËó'(a±2 jV¥R¾ðßÛ×öÔøûR^þÄ^ ý™~þÓ>ðçìåðsÅ¿ü[¯~Ð^ð‡†ïµßhš€#øH«{à_x›G½¿Ò&ð·‹¥,Úw…ímîüKz5¤°ê¶%xOÆ/‹?³gŒõøwö]ýŸ?hŸ‡Ú’Þ&“Æß?hxbóÄþ+[Û])ü9ð¯†,,4- 4;3Tƒ:0¹›Uoù×Ï5²ÊWè|'—a²¬‡Ááó<&LmHPÎ*R«˜ÁâqØœUIâ'Fµz¾©ZuéATæ¥F¥:U!F¬'FŸóÏŒ¹æcÄ|Cøk/ŠGŠ›Âþ>økà@5ë¿ Yñ7†õM^0øwGÙèGc–¯<±Ïy{%ÏÊßðq—ÅxÄ¿ ¿dꚀ?f{é“Åÿ<á ø'ÂúΙ©ÚgÏ}…ô]&òòÖÎk©/­ô»›Ét¨õD¶Õ–ÈjvVwpWótiS«ãý|-Zp©†¥–ÿhÒÃÔ„gBž`°p¶:d8cݱQŠ®®í3ýà •)}xkJs§­žc²šØÚr”1urªu±õ)å•q1jµL¾Jtç æðÑ8J4Ô£¿+á†+x¢‚X¡‚4†(ÐacŠ5 (쨊G`©(¢¿¤Oó¶Ûm¶Ûm¶îÛz¶ÛÕ¶õmîQE (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€?ÿÙxerces-c-3.1.1/doc/html/graphics/program-3-label-3.jpg0000644000175000017500000000434011363617747021322 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ x"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ýø×…ÏLj‘ꚤ.žž Ö..õ;„Ci ¥›Ý³¼fXw—òDH‹ vyF²9XÛ—ø cáÿ|VøkepÂãÂ‡Ž´£­O©ÙìŽOéߟâ;ÛËûv þÁÓõ¹m›Ï@1ÍüxÙøûÿ%›â7ýŒ×¿Ê:ó­Ä:Ç…õ«hWŸ`ÔN­iBè[ÚÜ:Yx‡EÔÔ¦ð”> ðî™{¬øÓÆ:€ðFŸˆ´{½bþàÅáÝ.ËÂ×:V¥ê2Þx–í⵸½ùÏIñ±¡Ûköz]çÙ ñ>ÿö¶¢ÞÖY.ôím'\k8çžg²ó5M’k‹ -n¦¶Š}>YŸN¾¾µ¹ét¿‰Þ7Ѽ'wà7XŠßÃ÷gW¡Üjöpø‚ÖÚÇÄ6Z?‰®tÙ¼M¡iž!²´‚ÏÄV‹«Øiºå²¼­¥ÜSN²zŸ…~ø MHüZþ,“Ä·Ÿ|añfÖû@Ö´K-ÃðéVž"·ð—‡µí"ÿÚî¡?‰5];C½ŸS´×´±g¦x‚ËO‡Lº¾‘¯ µ¨ü0ømãáÖ‘£|Jñ‰í4? ë¾7¾ƒÄ>Òt.wøg¯x¿Dµ‹TÐãµÓ4í?Ä×bÞOxÄ66žÒ`»†ÿÃÝå¼W—S~Ñžƒà§ìµðŽ÷Ã> ÖõFø¹à hZðñŸ„žçLÑ/âÒþ%ϤiÞƒá}Ä—:|~"³Hlm¼Q­x•4ÍkÝ/Lû:…鏸 Çâ·Ž¬›,Éi¢ÿgØ5µ§ö}µ¨³µ€}â?‚ |-y¯ë:õÏŒ¬|1£ü"𯆅¡xãá÷µAãoxê= Fð¤?¼7£GàÝkGÖ|)i¨x5Ý;IŽ}.#c¦ë£ÜYj™~*ø1ðî/øO´oMã§ñ?†àøiw¦ oPÐîtÈuŸˆ—Þ²? ðý…諭ê×x¾ÖM»]éÉàh£íHüKÄÿ|}ã :]+ÄÕ½ÝÅ¿†-."¶Ð¼;¥IqkàÅñ ~¶žçHÒl.¦ƒHƒÅµ­¼RÌÈöcI³fµðÒÝÅψ1kš¯ˆÓ^OíoÇø‹ª\¶ Éß‹|-yªßè7¦ÊM-¬"Ó´û­kP‘|9´^¸V´ŠïHž3LŽÐèáWÀ½pø~o‹ZõŽ…ñ’?…zTo­xJÊïâ—É«f}&hü'}„ãðä–šp¹Ô® ñƒø™5]=¢Ð|(׎¶U¢ø7àk1w¦êúö¹7…tïþÒÅÖ·¥i^Ýǃ¾èZn‘à VÆ{«zÒø£Æ÷šf©£Ïâðô±Ç éÍg«4Ú€ùËLøƒâýþß°jû?áñœÿt_>ÃL¾ò|_qý…æê÷¿n²¹þØÏü#šNË gûCL‹Ê»ò¬“ûWUûlñÆ¥>ŠúܧIá›ï¼-e¦™_ÃúŸŒ‡õV¼6mk«ïªÞÝêÆàë@hRß¾€—@Á­|4øs§ý“ÆEã8|mðÃÃ>:Ö|){âm¼_6³â^ø_IðÎ›âØ¼•n5&|pš…Ïî–—zgÙ5 V×U¹ó_Œð}©xoÂÏ­>•c¥xNá—Ä77Z½¶««xKCÖuÝ>î]:ËO´'JÖõ CLˆ%¬ry6q™ÿ~dî¯ØËáÜ_|1ñ»Æž.ñGˆ"¿ðƒü á;LÓôÿÍ ê:‰£_ ËRÓ5ïë‹Þ”¾ÒÃÄ:ºŠ-îÚÿUMoûfþãQÎÏø£Vñ·‹$ðL3èþñ…ÿŽZÌø¶+ß|AMOÔ<4Úà𥽿‰eÑôýL6düçâïˆþ-ñ¼6Vzåæ™—¦Í=Õ†ƒá¯ øcÁ>´½ºH£»Ô ðÇ‚ômÃñêWqÁWZŠé¢úæ(aŽ{‰$UÔñgÆ/ˆž7Ó¦ÒüG®[][^Okw¬Kcáÿ hz—‰ïlU–ÏPñ–³ èúf¯ã]Fؼ’C¨ø²ûY½Žye¸YÄòÉ#}¯¥|.ø'Ä€Z¶­ám/ øÃÁþø‹¦&g0ñþ‘áÿø÷Ä’x‚‰cÕ.m¢ñÞ¿}ª¶®¾N¯á_‡Zô¶²â?‡¾·ø™ñ[¾ºQ¥XxÇÆz}¦ º=´Q7KÔµE“R]ÍP@$³°{¦Yª,-,vöà"*ËñGÇÓøƒUñD¾$¼mcY»ñ^¡}'“d¶ÿÆú-߇¼K{c¢­¨Ñt«»Ýö]>ÞçJÓì¦ÒaŠÄèï§É¦iÏkÈé:¶§ êºn¹¢ß]izÆgªéZ•”Ïoy§ê:}ÄwvW¶“ÆCÃsksSÁ*ÑÈŠÊA€=CXñΫñ x¼¡xgáoƒü?¨jЦƒc†~xfïH$ackªü`ñŸ§ø²[xÑ€Ôu?xäÛ]¾éoäXDQE»ñGàf£ðãÃ ÖæÕüww©øRßWñ]žñká?‰¯-õmWÅ>#¶Ñ£ðîá_øƒTÐæð¿†59õ‹;M[Mû}þ¤WRK[mùß~"xâ–søŽ ­Í”—Ó ¯ ü>ð‚//§ÔšÝîî5»ÏxgÃ÷>!¸y-’H®5Ùu­¥–îKW…ïïšãŸ×$ÓåÁØxlÜZk«©ª}«F•àÉà~ ho‰þ/|6Ñ5µ¼?wã=_ýª#=ªxbÇPƒPñ,×0ˆ§ómàÐmu ¦ŒÄèñFÊë°±<¾!Ö&ðõ…$¼Î§k:§ˆm,ÞÕ6ëÍŽ¦ê’ÝG ÞÝo²ÐtØmíî®&µ°òîd°†Ú]GR’îïƒüa¯xÄV>*ðÍÅ•¶µ§G¨Cm.£¢èž!±0jºeæ¨Au¢ø‹NÕ´]B­6þîÙá¿ÓîcQ7šŠ“Gˆö‰ì´_GákÛÈ~j‡Mð_Ç/‰MñáOÃ_x/Âú®•¥èO‚ü7†5‡ÞƒS}â’,µM_Äþ³ÕžÏİG¢j3[Yjsp"ø=ðúÏFñv¡Éã‰üáü!¹»¼Ôµ/§†.™£ønÖ}~ÆFðøzÇKšöIµ¯%žßUÔἡ©üHñ®¯7Šn/µÙZãÆž'Ó¥6· 5éZÝõåÔšÆÄÛqð|Gñ¥´Ú%Ä:ä‹?‡txkG™¬´Ùe´Ò|hÞ$©ylÝ®uEü[®°ÖîÌúÝ‹\Z;Q´:Fö‹Ä? ¾]ü"ñ¤5“Åí⯀>/Ú_øs\Ь4mhZo‰‚ü7¯i:—†µ[»ù|Q®i>¹ºÔí5Í,Ùé>"´Óí´ËBC{nWÕ·!ø'û xFûÃ!×57ø¹ðËÂú¾5ûO 5Ö›¡ê-¢üI¹ÑôoAð¾âK9|AjYZø£Zñ"iš4÷ºV›öH5 ãpPÿÙxerces-c-3.1.1/doc/html/graphics/build-3-header.jpg0000644000175000017500000002611411363617746020765 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ#È"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ø^Š(¯õ ÿœp¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢¿w?g¿Ú â÷ì±ÿýµ~<|ñwü Ÿü ûNx[þ_`xcÄÿÙ_ð“øƒöIðn¹ÿ?h¾!ðÝ÷Û¼7âcMÿ‰–yöo¶}²Ïì÷öö·P;À_|uûZÿÁ0¿oÿ‰ÿ·´¿~#x›örðm¾»ð3ö‡—á…¾ø¢ÿâMþ…â À }àû};FšY|_§ø B¸¶Ð¬ô·Ôì>!ǧjÖ—déó¯åø±ølNqV\=‡©’d¼Y„á,V2Žw)fÓÅce•ÂŽ+“O(§F½i›a£*TóybR…iªNùŸô¾Wô}Ëól“ƒêaøòTx·ø35ã,‡ñ\)ZDèdÔs F;ŠâŠæ'êUaG.©(bqy- -IÖ¡J3ö“qá ôçìAû'|Iý½|g7€þëðλmðÆOŠ·üEÕ5ý/I:¯„ôi¬`ºðß…üU{&­öÏé¯Ré°Z=µ½ôy±ÁosÆ~Ë_|Iû^|að/Á_…^!ðd!ø…ÿ ?ö½â=Zþ?/ü"~ñ‹5O¶jžÒ$xsáÂ?Â[ñÅ¿ÛðxûcAд?°tSÄÚ·üM¼Mªhº§Ù4=R¾ÿNÔ­¼ÿ³}šÛλšÞÞ_²ÿaŸ|pøiÿ%Ñ>|Õþ kþüFø÷ðµ/<{¨x»Rø;ÿ O€ü ñ+Þ;V¸ð­‡~Ïýa¯Káôv›¨ÿiË¡¾³§ÙÚIyzÏüN‹ÿÁjµø^:÷Ã]{â¼?´Çí—?áQM©Íð÷Fñl~øÇÿ FƒáíÛK_E¢iÞ$:¿ö$>(ûO‰SD›LþÛ»šüÍ·æ³þ/ž]†â)eÔðŠ™W⸿Z®.u%^q§™<5 ÿ„Åúdž,¼e¦éð‘øKÄÿiðÞ¡ªëZ%ž¥öÿëÞ!ÒáóµOk¿cžö+øþÇçKj–÷²ÏáUúíÿÿÊQþÿÙ‚ø3ÿZãE~DÖ|žâø›„ò,ûOG™à¡‰ÄSÂB¬0Щ)Î-Q…jµêÆвj’½ýæmãOå¾øÄ!”c1¸ì·-«EàëæN„±ÞƵ(ÔPÄÕÂÑÃaëTƒm:´°ØhÉ5û˜´Û(¯Øïø,½«iÿ³§üÓC³»òt¿þÌ~=þصò-¤ûgöOÀÿÙróOýü°½Å¿Ùî¤ÿEš7;'ó#GÍ>ÿ‚q~Ð~5ý¾þÓ½øq¨ø â÷‹µï éöW>)½ÐµÛxZãâ,>"ñŸÄOÄzà? xGá–½s{¯Oã[¢‘ÞèP-›ßê-eoË“ñÆWŽÈ09ökS‘RÌ3\Ó(¡O‹U)Ë–æ®1X™QÃÇ›C*¯Œå•8*Qç¥ÏSÙª“ëâ߸›!âªÜ/ÓÅq…j<#‘q•J™f_R–&ŽUœárÉTuð ¾*qx<Ë2¥—©P¯‰xˆK‰ä¡*õ0Øo诵þ:þÂ_~|&Ѿ:Ããßß¾êž%> ¾ñÿÀ‰üGð÷†<^cgO ø’ñt­#캋4o=Šj6]{K«Ø.oôè¯9¯Ù£ö/øÑûSÛxÇ^ð*ø;Ÿ>ÛÅqãÿ‹?|Sià†¾IãiÑu]Cw;H–‘É{w›§j §Y,w:Ù#º²7>Ä8Ÿ‡ç–VÎVoYf´°ØŒdëF:8¨Ô…ªªrÔ§ŠugNœpÒ‚¯9Ô§S“©/«áÿÒâ / O†swÄì-Ó~"Ù|pý˜~;xRñmŸ?á.ý>8xgâ–›aâíCI×u»-S³µM3\´¹¸Ó¼3¯L³%ì£}6h&ºŽym£ŸôËáGüw࿉à™þ8ëß¿e[?z¶¿à WÁŸ|kûGx‡ÁŸþøÄ—onþ|mÖìô‹Ïx;â¬vÞ"ñ7†õ/jþñTÖÞ#ñ_„4«]B ‹Û]BÇÊÍ8÷†²¬¿/Í*ã'‰ÁfY¶&¡SFU¥O‰¯ 2xŠrtçFžUÄÅÅâU/àáëTp§/§áï Íx^†L²ìï(È1œE[ œWŽë8,.¦"<fªÑÄVÌeMáðTã€uÚúÞ; B5+ÃðŽŠú+à_ìß®~Ñß´¼²ÿÂO‰üYâ[¯üDðŽ™ñGñ…æ»ðƒZ¸øo¢x—ÄZ–µ£x»Ã:¹©x{]Ñü3q}á}FßÃìú¶¥£\ÏmckxóÛûÄ?ø'oŃžø¡ã/?fÿ‚Ú_량ÖÚ—Å_‹ö> ñ'ƃð¶ÿ_Òµ¾ x[UÒcñ‰¢ñN§áËë/ÿni¾›ÄòM§Ëo·±\W§ŠâŽÁb¨`qy®†7‡ÂâðØJ’’Ä×ÃãjÖ£†«F+©QU©‡Ä+B.P³©B’ùì†üwša1xü¿…ólV ˜c²¬v.•ðø<Ç-¡…Äãp¸šÎJ*Q£ŽÁÉ:’Œ+KB• T«VQ_OxÇöSñ¯ÿcÿƒ¿¶Î±ã†r|%øåñ_†¾Ò¬üC«7§ñ ]|Fµ·{«¯ÚxfKA¾ëóiÍ£ø¯W¾»·ºÒdKg½]>möKñî½û|Vý·á*øs£| ø;ã½/á÷Š´í{\ÖtïÏ­jú—Ã}*ÎëI³ÿ„no K¥µçÅ£M©x³K»?gÕ+)eŠÆ=Coõ‹$ö^ßûK ì¿¶ÕïiÍ._í¯­ýGû:ü¿ï\ÿgåø}¦œÖÔæÿPøÅâià׿oW†ŸR ¨^­NX™¼âœT¯<*À5‰|·ª ÒtùýÓåº+Ü¿gÏÙÃãíEñßá¯Á Mâ5œÚ®§<—6Úf‡áÍÚH¢¼×¼I­ßI †“¥[<ðÄežC=ÝÌÐXiÖ׺…͵¤ÞÁñ“ö'×>øž>³ý£c?eÑáø‡áÿß´†üuã?¾»âM/Áúxñ…f´ÑuUÝâmkKÑæ]6-Iíîn„“"ÛCqÁ7~ ø—þ —ñ/㎽ñ{öU³ø×«kþÕ|ñ§Æ¿´wˆ|ð_à‡üIqðföïá·ÆÝnÏH¼ð÷ƒ¾*Çmâ/xoRðö¯á?Mmâ?øCJµÔ ¸½µÔ,|3þ UcûH迵¯Ç ~ľ5ý‘¾"|Mðw¿Š»ñŸÄŸxóÅß¼G¡ø{â_ý>}kÁþ"øJ‘xƒW‡Wñ^Õ|?¨Éokg¨x.úþùí ½¹ÓP|ÄüEÉ«eüW‹Ëm[ÂxŠøl]ʬ²¬-j”#…”«Cì1ª–Ë©F¥L?·ö´ª_ ©J•ZŸ¡áüâú9Ÿ‡8|îÂå^#ÒÂÖËó,“ Å`~µSá19ZÅe’©˜Bž8§Fž1`ç‡ÄSöY„ñ4±Xl?äµK৆)þÉž2Ðü!ñ1¼/ªÛø»Ã6^3ð7| ®¯‰¼ 㟠߱H5Ï ke°žêÓÌ^;Ý>Âíb–Òð[ COººö/†ðO‹ž7øE¢üyñïÄŸÙãöføG♤‡Á¾8ý§þ.i¿ ô˜ÝÐ>ƒçéÚ½ËÅ9†âK)u}95 kw¾°76/os6U¸£‡¨e¸Lâ®oŽ[”aÅ*ÊpÆT’›Tp°‡5Zõ’¥UÎ(J­?eWžösåéÂx{Æøìÿ0ál/ ç8ƒ)„ªf™cÂN|ºŒeF?XÇJ¯%.rÄaãGZ¤(Wxœ:£R~Þ?ÁTW³|uøâ_ÙÿÆ_ƒüMâ_‡/>!ð¥Ž|1â…~=Ð>"x;ľÔµ}s@³ÖôwA¹• ¼ºÇ†õ»oòIbÒ=ªÁ5´³ëa1x\~Ž3^ž' ˆ‚©F½))Ó©Ú¼ZìÓŒ“³Œ“Œ’’i|æi•fY&aŠÊ³|'.̰U]^ JTq*$¥ËRœÒkš.3„•ã8J3ƒ”$›ñš(¢º¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(÷oö|øÇÿ þ3ûk|[ > |k>ý¦ü.Ã/ÚÀÃâOÂ/ÿoxƒöJðÆ|[೩èãZ:/ö×ü$:uq§xŸIÑub'?g—Á¯'ü¿ö~ñoìÑãÏØþÍÿgï Üü_øwðóöf×u-öVø¿a¢êöi>&øI¯ÛKqá=f×Z×t­*ÇWÒõÛë›câõ…Ôž>ïB¼ù¯áíûø_þ Éñ»öýª¼û\x‡Cøåñ·Mñ¶£«þʾø_«x—JÑtQðÄšÙïþ#øšÞÎÆàøŸáÙuŸ?ÂZ½¡Ñõ;xlîâÔ/|ý2 þ cû,þÊ_ þ*èÿðNÙoö¾“öƒø·à­Cáì?jÔðƒ'ÃíVròꇀ5MKD¾¹°»KZÊÎx4 {gLÑï5›íBÇI:eïó¶?‡³Hf<]‰Àpîpøª¿ÿjð¶we8|,ð™>â1µ+âá„©„壘ÃFXZøŠ”§ËBÕÒ•?ôOƒø·-Äpw„¸J¼_¸#À¸Ü—Ä\§Š>"†*ž+ˆÂPÉ]* ƒÌ©â*`ñ|l1x\&½ Uñ}•)ÆMÿÁ»WÚ^¥ûZøêûD’t‹ŸÙ[ÅriÏ”‹ìŸð´> ¬(‘•V‹ÊE4.¨ð²4NˆèÊ>ÿƒ}ÿ†Éý’xéÿ èŸaÿ ³ã8ÉüHS\_üëöÔàž|#ãëýOèíàí{Àß46òMF÷@ñ>«eâ;¿ìë´û(¾ÑüA¥h÷¶ixÛêVútš|·x½ûu§Ô?±wíéûþÄ?´†?᜿eÚÅ>=ÿ-¾!üKøéqð·Äßt kº7Š/ôÏ|#д?øoÁ:~”ž?»ðĺψïüaâOjÓ.´ä¾æ¼ƒV÷¸§,Ï©ã¼Kú–EÌ×ðN-Ë*á%†T!ŠÁà3ì2Ž&U«Ó©N´?´(TÃQ…*²Å¹*tÚj¬©~}ÀÏâ8gÂì¾§eYe? )~Û¾-ð_Å-?á‹jÚ³âî—áI|9£Z|MO |mÐüsoá8nt-OÄÖ]RÊoéɯGoâË:Ù¬µUÓu=Y­ [¬3.Îë¬Ë-ÄÏë~Ráì5£ÞçqþÞæË£y/ö…õ¬>ŽÑýì}ííïQã^Â{?¬gùm/ìߥŽSÅøë×OØpÌ¿ÔÛgO•KŸÿ xûÔ§ÎãõZœÑ^ï7П±…´?ÿÁtþ7i"† >×þ Kûhøžî?í¯j¿¼i᩸*e‡Äz•4„ñÆP‡ Gççíus©|Fÿ‚‰þÝßünï«x§ÃµÇŇþ¿¼iÞçÃúÂoÜø[Áo¤<ÎÒX\iþÑü=Ÿ{jñËjlb›OkUoš×ÃïÚWÄ:'íñ«öÅøg¢x—ÂW$ý´>.þПô?ˆ:?ö>¶Þñ·¦ñf™¢ø³J±Ô/mÐj:&©/‡üMm£ëWÖ™—T´Óµ›…HïOÛ??mø'†µñ_Æ?´¶‰û~Ô>"ý¤¾ _Ãã-cáÖ£¬|>Õ?dk¿Š'I±Ó‡õ™ô«Áñ _‰ï4Ý?Uñ†u è>+½·½¦­ýåß±C›äüA‘çÉ1ù¦¯à8wØ`þ¨ê`3\.1âêÓÅLjÆN­8O¥:Tç€Q­kÒrùüÏ<Éx“"ñGƒr®,Ê8s>«âÆ#‹á˜cqXœ5<Û†kå¸ žY‹ÀѯÂ-,íï¯>?¯¡ð×/Æå< ÃYvc†©ƒÇ`òèQÄá«$ªÑªªTnI´šM=Üü§é-œå\Câ÷g&a…Í2¼}<|;V5°øŠRÃEÆtçk£³]R?]¿à±ÿòB¿àƒöl¿õC~Ë5³ûexŸÅš/üãû økÃ>&Õ¼5eñ7öÈ‹À~0m&aêþ?¿jo[é×GÉoiâïøWÄQF¬™Ô4+vhÕã¿à µÿ€¿iï ÿÁ0>|>ð_Å-;Sý‘> xÓÁ?üMâŸhÖž Ô5­{áÂ_ÙÂ'¬èž&×î.í×TøY­Ë?ü$:w†®Åž­áÉ"´šâúî×N?jÚÿÀ_?à›±WìEáÏüR¹ø¡ðƒö¨‹âïŒ:¢riS^ÀÕ§8ÞQuéI$Õ×ïuøë†?â#ñng„â¿êùÇÑ£/áü§ñöXÌïøjXŒ®K•âcO+ÌUJ”c8aêÁ©)ÅOê/ é¶ÿƒn¿näðý¤:`Ñ¿j†wús[.Ù`¿â?ìb>Üf9–[Ù79žîW{‰ÌŽe‘˱<'ì•ûWüпf¿_°×í‡ájß³GÇýRÓÄú¯‹þI³â‚|S§Ÿ \AªCd«,úÍ…µ÷¼#¬XAimªËg¨hÓÚÝx[Åšn½{§Aã&ý¯üáø$7í9ûÂñKÄ?þ9|mð¼+«ø_Ú6­àm+EÑ|MðÄ—Ÿð“_ÿÂMoâ{ƒgðƒÄV±føKW´7úŸ‡a–î(¯o§Ó9;ý‰|?à CEý§~ þÒ¾*ñ,ž.º¿°ø‰û6xÃÁ â[ ÝhÚ\6ÚÇ€¾%_ ß.™¬iºïö½µÿö­Úø”ZËmö}" ©O‡œð\yG8Ê3ª´1Ü~óœ®Y4©RÌéFŽ_‘<u—JXŠ <.7RQpöµ©N/ Z›œ_ÇVãšð—€Ÿ ñO ÓÏrÏóœƒ=—׫<§V¶a]c¸k?¨°ø‰Af8,l¡âg†£UT¥Ã×Tæ½öÿ‚gü ðÀ_ þÙ_²Ä|~ý—fñ>‘¤'ŠÿáŸÁ_¾øŽ]Z×MÑtÏiWXê"ý;¾ð׆´» +Ç’Ý-4 éz'‡´ëf ±Ò´kkXãBÿI~µ/Á¯ÙûöØðßíƒþ8Û|ø}ã?‹Ö~Ð|Wáÿ ÅñšûÁž#ð'|'à{­_KOh¾¹×ÛÅ:#øžm?[²ÒVöÓ]::ÜGogosñ牼{kñoã‡íSñ“Kð÷Šü/áïµGÇ‹¾Ѽo¤Ç¢x¦ÓÂß|_qâ­ oN·¼Ô¬`Õ-ìu(í5(ôÝSUÓ¢Ômîà³Ôn$úÚv*¯‰³Ù`jÃ/«Ày^Ž.­8Ç“ó6Å×Á=\¡Z+aªV§ðë [Š·å+ˆOàyÂÿÛЧÅ8_qØüv sÅÔËq<9ÃÙ} ÂxKš¶[ŽÃÓ¯JnR§ ÔçËN¬£?ÖßÛ>ÞÞÓþÿÒ´´‚[[_ÛÒÆÞÚÚÞ$†ÞÞÞ~ÙÃÆ«PŬqEªFЍŠ&PâÏø(iχ{øY±€ÈüAPkÇ4Û ökñ?ì1á/Ø÷öÁøWûEøËÂß¾3Û|mø7âÙ‡Tð¯‹íüC þ,¾Eñ=Ä2ÚyО÷Ç^2†úÿMÓüE¨Mcâ×F°»ÑâÕ>=ÁL>|Kÿ‚Q~б_‚¿eÿ‹ µüDð¿Á GÑôiVðÏ>üHÕuß‹~,o[ø×SñÞµ¬øâ Ú¦­€Žœnµ¿hú|V4nº/ÀWɏВžQ ƒUÄc¡ÅusË °1ÈñMO4§‰£%^UëÔ… ŸíÕG ©Wöµ#QQ¥_÷N⎠Çã8Šêq–I‡†À:ÞÔË15«C5—á¸f†Q_ˆ§Z:8zS¯‡œð؉W©S«áªa¨TÃ<^+îÿµ­Ká?ü¿þ ]ñ‡á„óé¿5xCá~±¬i^bëv u½_àÿ…µ# ö»o,­ÓÃß~&Ì/"’5¶+=æôû‘? t„°ðõž‹}áQ-"ŽûR¹³‰õ+«²Šn®¤o¡ó&.Ѥ¤(U" ª~•þÇÿ¶ ³…ŸÅ¯†ß~Z|mýœ¿hÏௌ߯µI4iu:KKû}kÃZ«ÿcøŽÆÓS¿‚9—ìÂò9¡"ÿKÔ´ý[Ò<ÓãwÆø'ݯ‚üUáïÙ—öný¼µOŠZÒiø{Ä5ï…_¼%¦¿¦ßêÍ¥‡÷Z©ñJêZ®¡áÈ.OоñV7…gMCC±ñƧ£xwP–ÛPð?ƒ5Ý6K½EÒÆûÃÒÃ>…â+}Qìá¹ÿ×ý¼¾~Ç´§ÇŽwÿÿi ߃wžø™ð÷ῆnü%૟wš-Ǽ ã]x“F›Æð­Æ©qá_ =†³6ƒ«½¤¾-w´Ò¬›M&êÎò,ò|?âþIK(ÆÖÅg¹¦#9ɪх)á³ 63/É0Ñ£Bª«Ì±t«`kªÔ*›ŒcÅÎ2Lý…øÃ‡*c~‹¹úâ<¿ –pU:œ;Æ8jø©áñ9>>Ž?_ ˆÆàåíp8ŠX˜O ¥í©sT•6éÕXC¬ÿƒh|9áÍwöŒÐµriu|ø³â?™ü¢ðøŽˆ…§šÐH¥È𷉼LŸ¹Û*Û½Ãîò–P >j^.ñÄøh¯‹½cãÿ‰þ/jŸ¤ñ¡÷>#Ó¾!ZxââúÚm;íï4ýN×Ķmqnmš;èg1@’¨·…"õŸØ ã§ÄÏÙ[øOñ{Á–ͧxÇÁ7šû]è!´¼·²Ö´][VÖ­uëÖÚÝÿgkzEã t1\Ú¼–š®Ÿ,7¶¶wþ†ÉûbÿÁ1¼ñRçöˆ±ýˆÿlKß‹ïãÿ‰Ö<=⿆šßì´>#j:´ž)“SƒÄ´4ýOM>²ú ߆cðõ«Ë%”mA¥¨Çaó,›Šó¼ïû Ä8,÷‡2Œ» ÂTž•ÔÌÝ\» ^"‚¡ƒÌ´)VX¥Í†…Ju–'ÙµMÔùú¶Yż#Œàl«Œ2® ϲO¸«ˆs,f?ŠÀÓ͸s7¯†¶g–âð4+ËŽË+eÔc<¶ŸûUzð•0ª¼]EG£ÿ‚åXxWÂðS}{CðÂÛ¬þ?ý~üUñœÅÚxê?x¿ÀW­$H‚}SÁþð.£2|*ð_Å/ ø+Áÿ²¿‡>^]üKðæ¢É©x§Mø¥ã?ÜM¢ÏáÏx·I¼Òÿ²|s§Z¤’ê–ºö¦›­ÀúdvÖp^]ùYG æÙf?ÂZÚRÇ.áÎ$ÀæXä•J8<^+ ‘QÂÒIÚ\²V 5çBŒ“PRä=Þ!ñ„ó?J_æ8l³Åx¾Ì2Œ5:°¥[3–[_ˆ¿¶1x_dåFu¨b1øؙѩ'õÚßZÃÔ«$±ÖðXG6¿à„ÐÙ…¶ŠûöUø¦ÝG¬I-ŸÁ/ÙRúÖÕ•¯‘ou sC6Fã(MEû@~Àß¶çìÛû6~Ï·í÷Ä/‚>5ý–ìσ~|mðN‰{â߆×&«¥h‚‰^Ótý^êÚÉôÿ xHx‚êûN¶Ó–óÃñë¿ðœxzÇUÖôIþQÿ‚þ×þý§¼7ÿÀøUðûÁ´íOöDø%ãOüOñ7Š|9£Zx/PÖµï†? |eÿž³¢x›_¸»·]Sáf·,ÿðéÞ»z·‡$ŠÒk‹ë»];kHø­ÿ¿²ðׂ“â÷ìûûyéÞ0Ѽ+á»_ßþΞ(øKãŸxÛÅuŒ^!Õîô߉7ZG‰ü2ž"¾³—[}+Di,´´ÕÛMÓoJYG"qeÜ;WÁ™% ×+âl6m•ñcðÎŽæ¹=LfwœÎ…e‰¬éÖÃfv1Sa±˜z´+%ˆ§MrÍtg|k,OŠ‘ÆðŸp>;)â ¸3)ϲÞ+Ìqx §‰¨áp4(ã0‘Ìð”lo•ãpq¯CnB­Ë ,Jç£> ö¿ÿ‚\~Ÿü-m%߀üYኻñ¿Š_¢†ÃAñ÷ƒ£¹Ò%¿š-6Úy­`½±kß^ß-Öµa–·¡ÝXk·¶ú˜$¬oÛwöØÕ?n‹áðÁß|ý˜ÿdï†:—Ãoƒ¾ñ¥ð»ñ¦£µ¥h:.¥}®ì–u€6›á/ØYé©w¬Gi…Öþç^¿¾Ö 2¿Ká¹õnËjq58RÎåN¯×#P¤ä–"ªÂÔ­K R®–*® aêbéaêJ…,T«B©Æ)9xË—p¾YÇ™–ƒ³j¹¶@ðø*¸WW‰Í?³ªÔ¢¾·•ÑÌ1‘†/ƒÂbUW«‹¥K,L?Ö¡õ…VRùÖŠ(¯¤?, (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€?ÿÙxerces-c-3.1.1/doc/html/graphics/faqs-3-label-2.jpg0000644000175000017500000000323211363617747020603 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ x"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ýø×…ÏLj‘ꚤ.žž Ö..õ;„Ci ¥›Ý³¼fXw—òDH‹ vyF²9XÛøE‰ã/x&"æ Þø²ÏûB}BÐF%ðæ™«3kwVJ×›"m&ÆòåíÙ¦Ä_»—øñ×ü}ÿ’ÍñþÆkßåyž“¬j:áÔ4«²^=NÀN"‚f[]cL»Ò5n"•#–[ 똢¹VæÎWK«9­îá‚xþ‹rìÏ7á^&ÊrLd2üç4áüç.Ê1õ*T£O™ãrÜNŒjTq5iC Š«J´ªSÃשÁÊjÉ(KZ…:ôjT‹•8U§:‘I7(FjRŠM¤ÛŠjͤï«[žã…õ_Š>86ºxðÿŒ´oé3ëúÃüøw/‡¶éÝt[M.Óáÿƒõ=G]¼¹{]+O¾½Ñ/â¶kè¯./N²ÔžÛsÅ~ ÃÚίã­gÀ'ÃVÐü7ðÿ‹ôïêÚF¥¦XÙø’÷\Ó¾ÜÛßé—â ÿì›MncÄöÖ·lÃP·þƵ¾7–:œ³\|亾¢ºDš \lÒfÔcÕ§µH O´_Ám%¥´÷3¤Ksr--ç¹K(gšH,åô–±C%õÛÍÐhŸâÓ\“MŸS°Ô¬5:þÏVÓ§¹ÑôÛØôíR ËKûagooy$ÓÉøFká7ˆølnZøSŠr 7 dø\/‡á*”³Y‡ V­†Í¸†¦+8áZ|›-â>*Íp\»˜å< F¿äÓ«ˆÉ±Ï<ÆžqéÄqŸ·¡UÖœgˆ¼+rWIÓ¢£N»u'F„%)¨TÅIU¨’©EgéÿÙÚSáï‹Fá-CÄMã´Ô.ôk-ÀÚn±¤èVÐÂ!$Ée¦Ûxg@¹×=X—G·_xwĺV³¦x}Z2Ö=. xl&šî=3O¹{ðíGQ¾Õõ ÝWSºšûQÔn§½¾¼¸s$÷Ww24ÓÏ+Ÿ¼òHììx8 õ<˸»‰]|.ƒ1|?žárΣ›æÕã‘æØ¾>ϳj˜<¿.†’ÿde~& åØÜM,N2yVE“¼Ÿ/á Éñ‘˜Î”\èÚRÄF­':Î5íiÇ Jš”¦Üê{J“‹­8¦£ÏV§´y(T*(¢¿ Ï((¢Š(¢Š(¢ŠóÏ‹ Ÿ‡>-ÇýÏþ”AE;â·ü“¯Ø)¿ô¢ÞŠÿÙxerces-c-3.1.1/doc/html/graphics/migrate-3-label-3.jpg0000644000175000017500000000461011363617747021303 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ x"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ýø×…ÏLj‘ꚤ.žž Ö..õ;„Ci ¥›Ý³¼fXw—òDH‹ vyF²9XÛ”øg øçâÛi‘¯¼'{ãm6M\ßZE¹ðž¬›Ü\ÙI%Ä)èZv¡pÖóÊÑŽË™<Æ]Ï¿òY¾#ØÍ{ü£¯:Ð+éÞ ñn‹qñWá®­©ê¾‡@Öußj÷ºGƒtCXøW©xU4Ý>m_Â>%½Õu-GOÔ¥µµñqöÄ_ÍãoO'…&“Y¹óü$ÿ„^â4·†çL–_j>,’ïí“Þß¾¿ªÞ_6£¨Éw~A¶³ûOØl,-­»ë¯Ú â­ÝÅ•ËkZ«iÞ$“Ŷižø{£ØÇ¯Üé—Z>¥vún“ák->x5í6òk_é·²é~*QøŽËT–ÖÖH@;]+á÷„üIáíWŽ=WÃ~Ö5ß^<½Ò™ü?®kÚ_Ç>Ð.t2ÃÄïáÍ+VÔukWŸÄ>7w^O†Eõ¶Ÿ­·‡ášMM›Ÿ…Ÿ ¬b×ü_¨¿l¼kð£Á^;Òü=±áëßÃâø¿MÑl|'©ø†O éºTözŽƒmâ~ÓZƒÃ67Vš|º^ º&®–wZ—Œhß¼m \xn}3V·AáMZðÖgw¢h¦“ýƒâ;íkQ×t­_EÕ4»Í#Ävš¥×ˆ5CyˆìµS-¼–¶dýLÓ-ìêk¼a¯Ãâ+}[Y{¸|W©x{T×#ûn·3øOOÔ´¯ [[}–Î¥é&›«]Xéú”lt8-bÓ`];ËÑ´u±ßø›à­#Ãï|ái5°8ð¯Øáñå¥Þ§¦_x‡ÃÚ&©}£jš…†—iy6ƒªê—Z4úŒ:N˜.Å»}.ÂIZÎOñ&·«è>&ø…ðßáƒ~ ü=‡Åv§ªxáÇÃOø£SÒü)<ºFµãKÄÿ4oXÓ5M^åMí¾—á½KO‡K¸½³Ò¼=cö˜`’ož§£jš®‹:k–QéÚöµ‚| cã/YGyg¨øúÃÃvÞ8×£ž÷N±¸¼þ×ñ ë_Ik½3…Åv÷ßô˜µ?é6wÔ×¾ð_´èÞ{2.¾,|@¸øwk­x~óf›»û#O›Xñòéö¬z¸þÀÓ¾Õ<Å5Û>%øðúÃÅú“ê‘ø§Ä:w‹¾)xÓá÷ëO ]øCÂ×¶úO„µ}7@°ñv·ieàëÍUmVmJÚ<;¡éÞû}Þ«ÜÏ®Yyö²ÜùÔ¿~,M›ž(„Ç¥øÂ~/‹o†ü(’_øŸÁ xž×uù“CY¼O©Ú¥ôÉ}uâGÕd×R+׎¦º^š-)øKãgįCc‡uËdÒõ÷ñ>‘ªxWÂ#Ö4mnyì®/.ô]sÄz­¬èÑjréö¬Xé—Öš~²±¼z­­äsÎ’€}3ð;á߉|MãŸjZ·‡ü1à­WâWÄŸø,ZüIøQðÖ? h>6–zoŒo|1âÙΩãÛ=J[»[y|9à›k;ùnlµK™µÈî/´È/>®óNø•âÍ7AÕ<4³hZž‘«6¯,Ñø—ÁÞñmí…νm®¯}áí_Å:±¬x[R¿ŽÞÚIµ? ßé:‡Ú­,ï’å/m-®"àèÏ>,‚~ø·ô ?úQïŠßòN¼]ÿ`¦ÿÒ‹z(ÿÙxerces-c-3.1.1/doc/html/graphics/createdoc-3-header.jpg0000644000175000017500000004617611363617747021632 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ#È"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ø^Š(¯õ ÿœp¢Šûþ ÿð“áïÇ_Ûà?Â¯Š“,~ñWŠï^¶{§²Mhh¾ÖüC¦x]î¡– ˆSźΓ§øaͤÐÞ²êå,¦Šé¡‘xs<†S–æ9®&5e†Ë08¼Ã0ö•¥C‡©‰«Tî¹êºtä©ÂëšvÕîzÙMŠâ<÷$áì èSÇgÙ¾[“`犩ìpÐÅf˜Ê8<ñ¹eì¨Fµx:Õ9eÉMJ\®Ö>;¢¿]ÿmÛ÷þ EðöªøËðá½ÃOÙ'öwø[ãmKÂß þÚþÎÿ |Káω?4Ù^ñì³ø¯Â÷2êoŒôd°Öä›Ã¶™e¥_]]øoÊ]GBÔ ~V|@ø•ñãÄßüJøƒ¤ü'Ð/—k¯jexé}â-O^Ô vñÝÃm‡ÃyÞqžPÂãñy>–fxì'ž¼Ö´£YR8º *ÁQ£RTªNr–¡ Òtý¬¹£#ô?|?Ꭽʰ\uW:âl›0X ë#Æp¶##TZæ…ZÙ~aý­šÑÇB_eûœM,·ì*J´ðôçJtNnŠý8ð¯üÃ⿊|GÃÈÿh¿Ø›JøÏqö¨í¾^þÒžÔþ0\ßYZ=íÞ—oá_ i~$‚]BÚ¦{ˆ—Tò­ã†Yçš;d3×ççćž0øKãÏü3ø£Máïø\½ðï‰tYå·¸{ RÅöʉsi,ö—vÓ#Gse{i<öwÖsÛÞZM5´ñJýÙgä9Î&¶+Íp˜ÜU 0ÄÔ¡F¥ê}Z¤ù!Ч(ºØiOÜŽ"´¢äÔ}¥åþSˆ8 ŒøWƒÌø‡†ó\§/ÇW©„Ãc1xw<±”¡í*`ªT‹”pøØSNrÁâ=–%B3—²å§7*ŠýMø‡ÿ‰ý¥~øúëÂ>ñÏì÷á/ i^ ð÷ŒüGñ¿Å/|ðKÃx«^ñO‡ôOjÞ/ñ¿…|7¨ÏâË«j—¯£èžÖ¶™.usu¾Ž!æÞ/ÿ‚fþÓ¾ øÇÂf×À i?‚âqøÇÿ Å…—À«O†ŸiKüw©üEÖmô»}'C¶Ô%†ÅáÔôëMnyîlMŽ‘w¥§Mwçáøïƒ±|ŸWâ<ª¢©…ž2ëPŠ• q„ê8¹ò§VêÒ©,:ÿhTêS¨érN2~Æ7²ïiõÎâ:ÇG,«|º¬Ý°â>‘¨ëÖ½ã-'IÒ¼C©^¤VštR^v¾)áÕ–aó—œ`c•b±TðTqò¬£†xº•Þ8yÔ••«Q©ÞÍÑœdªòrÊÞZðóŽŒáhð¾q."Àeõs\NM $çŽ]G tñ”¨FòÄЖpÄQžÛ,E9Ááý¯4Sør½×áGìÓñ³ã‡ƒ>0|Aø]à¯øIü!ðà ã/‹¿ü$~ÑáðÛé^'Ö×Rûˆuí'T×s¥ø7Ä—_cðÕ–±~?³|“j./,"ºúWâ/ü_ãoþø¿ãG†> ~ÏŸ|)ðÕ€ø­iðâՇĭá`X„×Mã{ =2ÆÚÓû6=Ój‘éWÚ¼Ú}”7:­ÔQèöwz„MÿÁ8ÿåßð[_û3MoÿTíS^q¾Ãü÷‡1yviWšd™uXTöµiQžeåy}zxŠ4êá«Ò¬°xùWÃóÊ ÉѬãV‹pŸÝpƒù–mâOð?eùç Ðâ Ÿˆ³\5zp¡G^ŽWÃîo‚Äà«â(bðxœ+Ì2ªx|b¦§/gNUÃbR«KñjŠÔýš~üDøÞ>|1øUáMSÆž9ñ?†|9k£è:JEçLbÐmgººº¹¹–ÞÇMÓl-£–ïRÕu+«M7M³†[»ë«{xžEû¯âü—ã'‚~xãâ'‡~#þΟ¡øQgý£ñ¾2h¿üyð‡NF™.¯¼áËKFÓ­¬ÞåµÓnõceok{}p©§Ø_]Û}.;ˆrL·†Àæ¦ ŒÅû/a‡¯^©/oWØP”Óº…zÿ¸¡:®œ+×N)N¢q>À\[›QÎ1¹&A›fùfI[K˜`ð5gA,½{\[‡/3«S †pÅã(áÝz˜<-Hâ1 $ª?€(¯«ÿc¿Øïâgí·ñ3]øUð«]ð'‡üCáÿjo/> ê~ Ò´Yt]+ÄðåÅ­­Ç‡<1âËçÕûÅšt°Ã. £ZCzï{ÑÁÏÈ–…†«iþ—}g©XÏæy¶0ÞZMåJðËå\Û¼ÉåÍ‘I±Ûd±¼m†V²Žc¯Æe´q4ªc²úxJØÜ,[ö¸jXå]á'QZÊ8…†®éÙ»û9^Ú_ÅÄdYÆ'Ëxƒ—âid¹Æ'ƒË3)A}WŠÊþ¯õú¦›ýæëX~xÍEµQ8s(ÉÆåõ÷ì)û.Ü~Ø´Ç€~ =ýÞá½FKÿøï[±Ý+Á>¶:†´öhçŠ=OTakáý"âkk«{M[X±º»¶žÒãonøëÿXø›ðûâï~Á.<'ðöbøðcÄZ—ÿø\±ü4ðĉ_u¿ Þ6›¬x–çWñÖ•âK]GKÔnímê–—ºÝÎŒ,um_\†ãQ¶Ñ4ÏžÍ8—G:‡äyT3|Ý`a™ã>³yf[–à«V©‡ÃK†2¯õŒeZ5þ­†Ãà1%N…ZÕ]J2Ÿè¼á} ó…ñÜuÅ:ü.ñ'ËÞ&ýþ.^ø„hÄoþΞð‡ÄïÜèºþ“®Ÿ x·áÓèpé3êñi+ kRénü9©é±Ån×Ks¦|ÿ‚|þÐ?´_ìûâÏÚá4^ñ‰áO‰úGÂSà$Ôu¸¾$kÞ(Öo>YÁq¢iãÃ’xMt+Añ'G½Õ5msÆ:$Zf™¦xƒQ½Ž+]>).û{,»õÎ+§—pó–>Žœ£š<~¬ñ.”0ÒŽ6®.”=µiΗ-|5OÙóÎJMyî¡™gË|5Íq¾"ÓyV75ª°¼?ŠÉól-,¹N¦:5òj¸¬ÂrT°Þʵ9áqx§]Ît©Óö”­?‡h¯£?hÙÊãöoÖ| áM{ãoìåñ'Ǿ8—Ä6³|:ø)ñoKø‘ãê>MåÒü{¢i¶VçFÔ5Q­7öSê˨ÿbëÌ’Fšv龜Ðà–´V­•¢jÞ4ýü ñ—ÄZ:k¾ý™ü{ñ³Ã^ý¢|Qa5”š•±Ó>ÉÀµº¸°®M–»«è÷vH58le‚æ8JÜ[ÃXl0Äg8&é¿¢Ñ%°ø‹ªxîÏá¤~×.-tì¼k{âü,º&±u¬Oee¢Ëm®È,5 õK›K]5Òi/§‚(e‘?@|)ÿ¬ø»ñ MgAøgûB~ÅŸþ(hMüøyûGh>*ø¯mm§È]¬ú.›¤É¢Ú.e†Ök›ÿZiÐ]O Ñ<€VÙ§d*£,Ó5Áà¡^œkSj¿»ö’Œq©(RÃ94–"¬¡FÿòóFrp÷q§KO‡8k5Íê`ªNŽ&– )U†"œ\êacJn+báÍ,%ÔÄ¥oÝj¯ù‰E}•û~ÍzgÇÿÚ‹Á¿~!x·á÷ÃÝ#Jñ‡ßÇ:'ÄÿÜøRñžŸ§üE𯅼Qð£À3Áeuy©|]ñ ¾±}eá BúuÕÝÍŽ¢É¨ÙÍd {Wü#öRøAû+|wñÚ|5ø¹û2hž —Å ¼!àïÙ¿Eøù¨x¿ö›ð…ψ~éÞ!Õµ¿ˆ |Qe.¹áïêúýÖ©¢j/ã5ý¼mm4Û]VÒÆ×Ž·d´8› •*×þÓÆåǪ́N4\ðr¥ô(B‹¯7íë{uV•©ºÊOi^GJOc/ð«ŒsNͼBÁ`¨VÈòLÞFaCë ­)¼>&µ|dp3‚æÁàç‡X|JöËÕéJ–®¬Fó.ŠúËà'ìiñ_ãç†5¿ˆÖšÇÃ_„¿|7©E¢k¿¾øƒ¡¿‰¾|KøqâkO|5ø‹áøZÝ.5_ø¢É MBW»³7P\ÚÙ_A öxö¢ËRÓîn½qIS4y,3LóXº‘x׃­í)SUªÑI>Wˆ¥FJ½\2“¯NƒU§N4½óÀ©Á<[G‡£Å•xw6§Ã’ö-gÁÕŽ SÄV–ˆ”Üy£„Äbc,6(¬%|L^•i×N™ó}ý ÁDÿm¯ÚóöJý—ÿàŽ>ý•~5™ÿ…Íû1ê¿ðž_¸øcñû[þßÁÙËPð¿ú7Äo x“ì`ÿ„“ÄPÿÄšãKûWö§™¨ý»ì6)Ìÿ³ü—â—Æ?ˆþø1ÿ±ø1ûT|ø—©Xø/Xñ¶µðsÂ_~&|8¼×nÿ³ô¯èZÿ€aÓ4ÔÓô»»àÚºYiOˆ-,ZMWC×í¯,¤Óµ‰Ë¸Û‰s,š¯axC‰Êib3ZNމjUÏ'G(Ìq™~&¥,»ÃØLJ³– ­Z8e›©TŒ©ÁOÚÉÅ~Ùžø%À|=›e|1šø»<·‰ó|§"̰t3NÅPȸƒ‡Åà©b³üfup´#R¿Õ«âêå Ù:u+N„hòÊ_´Wè_Ç?ØO\ð7üRØoÁzŒ×ð•x»Á³ü<×õd/Ã?ˆk%þŸâ]Y íyÿmµ—‰´¯IVÏ}àÝVîÎÖ/l‘½—ö»ý¼µØoãF¿û ÿÁ0¼ðãá½çÀûM3DøéûUxÇÁ>øñ7Åÿ&Óíîu6Êïĺ^©¤¬:D÷é·ö·Ú=Ý ñZÖáí7Ú‘ú—«W¨ã%’a¸g³Üv}•,÷ N¶-å˜,&NÝ(G™bþ«Ž¯‡öµëG GCŠÄT¯ ñ•:p¡RkæòŸsZSã Oæ´ø#%à|ÝdÎ>x%œbñÔ¡*ÑÁeŽË0ØèG©ã'Š­™àè:¬ ÃË_BŒ¿#è¯Ú¿Øïö¬×o/Y~ÉðQ¨~üf›â½µþ‰ð·ö‹Ð~xSáoÆO†ß¾Ãqs¡ÛKÁ–¶º©£k[E§ØÚA¡éHÚÁÓí|CoâúxtÞ?þ ŸðßZø/ÿðOÁ¯ZH98x;…Í3¯Âœ_Kˆø3Œ¸Û)à:¼K–æ<9žfXÌ C9áÌN:rŒ¾©ŽŽ?,>mW ˜S£Z‡×0Õ¢Ñù E~ÿÁY´m^øÿð›ö²ø|ÞoÁ¯Û»à‚¾7ø"Q ´K§xÓEÑ´=3â‡&kh‘N¢š&µðóÄ:”w2}¼x‡XñL3[Åö¯·?àƒÞð߆~!ê¼c®¥ñŇì×ð]$Íuâ‹o‡*øãñ3RŠ90èto|?ÑôÕ½\âk»9e„MåÜÆ7Ä.€¬¾¥YGíe“}aB¼sU%C–Ëì'g€ÄQÅGˆXWËG [ì‹‚¼7™µ_!á#7¡‡ö™„!'Ž uprÉ1T!ŠË³¨àg‰ ÛÌ(WÂR¡‚xèÅæ8ºXã*sF¼ÿžŠ+ï/‡Zö­¯Áf¼ÿ‚—ÿÁL¿à¢ÿ ?ࣵ/À_µ >ü(?…ü/Àÿ¾9ŽñÏÀ¿xË]G×<]à[ïη>#ÔµA¾ß­ß4CRû“YXÙÚÛGu¸Ã6­šä¹FM‘eøÌVoÃâyÏ2Ïq] 5 xŒxXO æóÄVö˜úrŒåOTo–\±—¡€ðS#Ãåužqbr »‚8Ç Áõëe\#."–6¶2zØls¥>"Éjá©IÑT§FÆNJ±|ò¥Ô_Š4Wïoì—ñ+Eÿ‚­i~>ý˜k¯|#µý¥×Áú狾þÓ¿< mðïĺ–±¤F'½Ð¼{£hòÞZêën÷'Wº¶²š Xðì:Ò¦‹£x—LÓuëïïxÆ~,ñÔ? ž·ðæm’QÇJ­<-\~t©U¯‡QxŒ+©¬)ãpÊpxœYC‡æ¶£e|z+ôÂðNO‹ÚŸÃO üZø«ñGömý–¼ãøßû¯Úã.•ð’ûÇ–o W÷^Ón´ýV顼‚hn,ƪš\·Vs[j0ÆÚuåÝÇÏ—³Ž-i/þËrë^Ÿâ‰|wðßÀZf·£xºËÅ{Ï‹ ᛟë£Å>\[jW‹ô-j[­>Ê÷Q·Ó®][KmB,a¸Ÿ‡ñ•±˜|&m‚ÄÕÀQÄ×ÅÆ_iTpsT±uH§N¬pµeX—Fu=…YF•^IÉEïŽðóŽ2ÌW™f;üBýüsâxƒÇ¿ ¿áÿ„¢_ê×ú®ü&~мq¢yO¬iÖcó4oZ+ÿhh–îởj´Ž+¹»¿ÛöKñïìIñsBø)ñWÅ_|Aã_|9Ó>)YÃðû\Öu[X¼-ªø›Äþ·’ê?øoÂz²\&­á=Efx´©´åŽk%MBK™'¶¶è£že‰e£¡RYö ®a“Æ.WÌ0Tia«ÕÄaïzp£ŒÂÔ—7+å­ /t¸q\Å(q$ñy>„x?0Ãe|NêQ·ö.aŒ­ŒÃápØÕvá:õ²üd)Ê*Tåì'%>WKåº+ô¦_ø%gí.žø㸵„àŸŽ¿ &øÈž1¾ñ­ÿ†ü)ðŸÀpè¾Öÿ´¾1x—ÅÞðö‡á«‰¢ø‡¢YZYh7þ*žöú×Y[1=®žnææþ!ÿÁ3ÿioø£á…áÿøWôŽ6ZŽ£ðëâ‡ÁÏÚx«áN«c¡ØWÄ…ï5+=ÓFÒtvµ¨kº¬šš\7w:v§ö ä¶òéq¿Ö© Pâ,©ÎkÒ–*4ž^ñ ΣŒ)Ôì.&¤éÔ”j:4*WŒeF.g»_Âo°ô*bjðG{O+R<ºµ{¬ê8Ieu)FŠ©:Ôqƒ¥J½Ô¢±8šXYΙ{#óêŠû—ã÷ìñ{àÂM㼞6ø#ñᯯ Ýø÷à7Ĉ~"ø{þ'g–ÐõëåÒ´˜’í¯-î4é&ÒŽ«§Újq¦{{myya ß‚|ýž¾,~Ò~5>øIá–×µ[M6ë^×µËÛ=Ã^ðÖŸ´ê^&ñoˆõI­´C°W_:òöåyZ+;nïç·µ—ÐÃqGŒËkæø|×<³ :ÔñXÙW…:Z˜f•zx©Upxz”›<+(M)AÚÓ‹~.aÁ<]•ç˜>ÇpîmG>ÌiákeÙZÁÕ­‹Ìhã¢ç„­€…Uch×J^ήUi¹B¤y”©TQñZ+í?°—Ńÿ gøÑ¤üAøñëáV“®Yø_Æ:ýœþ*i¿ô/x›Px!±Ð|m-–›q£ÞÜÜÜÛY$Éow§Ç}ucg=ôW:–›Þ'ìÕûü]ýªü û@xûá}÷„Ïötð•‹üW k—~%Ox¢ÛSѼo­XhþÓ4 ø† g_»‹Àz­•½†§{¡E6£{¤[Åtéss5žQ⎖W[:Y¶ åx|M<#í§‡ÅVÄPÂÓÃâJ¥ Ò¯ŠÃCÙÕ„$•zSiSœdújx{ÆÔ¸ƒ ³á¬Ö#|ðOÆmÅß<¡é†A«Üx‡Â: ½îgu¤¼3Ûßi‹âyu1¨A&“mgq«˜ì_oþ eû%|:ý¬¿h+Fø­â¯‡ ðûÃo<šÿÂÍâ§àÓUðOÄ ý2?…f‹:Ÿ‰¢ð~¯á½;^ñûYkZ<º/†¤ŽëͺK¦„qb¸×†ðÙ>wÓÌiã°|?BU³à-_ÝûZ§I¸)o„Ÿ Äï©èþ ð—ÃOiþ+ðLJïgÌW7±É¬XIªk3Ìmî5-c[ñÜvzEœöZ}¿äùUŽÀq%lW äY¯äUr¬Î¦m“fó¡†ÊkçÓ©‡–W,§/¡ŒÆGU5ŠY–'¨åõhÊ‚¤«VNQþ±âüVW›øs8x©Åü%Å\Y€Í2\Åœ+Yæ\O[‡#*´3Œ>™O ‚–u†ú¼°Õ2œ>>³lz8ºØê˜xNœ+~—üÿ‚|þÎ?²'í“û)ËûQ~ØŸ~~ÖzçÆŸ€Þ'ð—ÀO |9ñwÅïjÞ!ºñ·‡-|àýwÆ>š ‡x¦æÞÇËâ-NÁ|3º¸Õc¾Õ´ˆúëäOø*ôòø+gíÛ`…¥½×ìÓ{ ¸8Š;­CöcøcöÙÕz .M¬Vêæ5'‘^·ûDþß_°î¿ûWØ~Ý^ ý¿i¿~Ù—¯ð×W¸³ñGм¿³F‘ãO†:~…§xOÆVwþ¾oë:Ž™eá½M–ÆúïáÖzt :ÿSЯõHu¯¿à ´¿ìóûR~ÕW¿¾ |%ý¢< ñâÿ…|,ßî¾$Ÿ_|4Ä~ðW‡ü+àåøyyá}KT¿X£Ð4˽Ä7ÚÝå£j×ö:ÖŸá}§Õ®.üîÃqu^2Ésþ#Áç2©Šá<×(Ì'‰Áä¸\U›Ï0Ë3 a0´òÙ¼[Êä°¸ŠXLnaW[UAƤ)Ô’Öø_Ã\/ƒ¼iÁ¼ ›dXˆQÎø[‰2!ÎóL×>áü'‚ž6¬3º²Âá3<´#ŒÊòš9u,=V—ÔcR”iËíÏø8÷Å>2ñ¿í×ð+à.­â½`|ð×ì­¦ü^>¶¹’ÛFÕúßOû ÖµG¹¹ÿñ¿Žìb¿ø"ÿÀÏ x·Tð¿Ã¯‹³ÝÆ«ñDÑ],×ÄkðÃàìøÞ²»¸‰VàYéöÞ0ñ(µµY>É¡yeªµ¼—ÚF›5·ÅŸðSßÚÿÀ_·'íã |døU࿊^ðWƒÿe|"¼»ø—áÍE“RñN›ñKÆ~;¸›EŸÃž&ñn“y¥ÿdøçNµI%Õ-uíM7[ôÈí¬à¼»?à µÿ€¿iï ÿÁ0>|>ð_Å-;Sý‘> xÓÁ?üMâŸhÖž Ô5­{áÂ_ÙÂ'¬èž&×î.í×TøY­Ë?ü$:w†®Åž­áÉ"´šâúî×Nåáž̰™wƒT19,輋b3ºs£M}C_&Ì£‡­‰Šm*³Ì*P”*.i}bP©u+I{\kâfKŽâ¤=|¿Šð˜œ.{áîS>”1*T3*´qX\Ue„„×%Z±ÀÒJtëÇÚ<58aœ]8F’ú§ö½µ·ðïü/þ Ÿk¢Bšm½ŸíÖt»h­E†Â÷Zý³m.í”䱎æÞGŽmÅš]Åœ³OAáÿkþÿƒrÿà ú¯†µ­S@Ôåý¡ü-¡Ë¨h÷÷:mìš7Š|Uû øcĺSÜÚKͧëþÖ5] X´/äj:F¥}§Ý¤¶·SDÿ~Ô?µÿ€¾ Á6ÿb¯Ø‹Ãž ø¥sñCáíQÅßx¬øsF›á”>‹\øåpÐÛë¶&½ñ z¡‡ã‡cÕ<'¦iÅtŸ±ÔÂØX¶§ú ð;Å_ ¼ÿý¶øÛöUñ”ß'Õ?}ˆ¾ËâÿibóÄ÷ó —2 Å^6­ÉÁm¨j¢Ö(`iÒ¼ÿþ ­^xƒþ cÿÕ5 kÉ?bZÏ<ŒZIÛLøAûYé‹<®I/,Éf²ÊìK<ŽÎı5âþ:ý¾¾üýŸ¾8|ÿ‚zþϵ‡ñkö•ðë|=øñÃöŽÔ~<>ð£í–¹¢ü9Ô~j:eÊÝXjz•½†³y‡u›I® ÖoF£©hú=¥—#û~Ô¿ cïØsþ ðÅ>ø—ãþÓ³”ßþÉðïÃúµciâ½WÀ¿¼q©ø©5Oè:ކ5ߊZV§q6‡¦øPƒF²Ö®?³å¹´´µÔ;³Ì‹;Îp¼w›a²|vg¹‡Ôrü· 0Ì+Qá¼ë/¯˜f5°ô«U…ºs­F¥Oo,6_²„a:Q~WqG pž+Á,ƒˆ¸¿$ͳŒ—âvc˜ç˜L|ñùn‡ð—`2Ì®ŽaR9N|ml«Þ(a>»©FŒæ°µç°ÿà‰¯ÃŸ‡ÿ³íÕñ«Çþ?y~þÈK‹ï„0øv‹ú7ýoÂ~7Ô~#ë? —ÅS[hIâ]? øoY°ŸW¸]* Ý:ÎMB ¸T[É埱‡í—ÿzýŠ5ßø»áoÀø*Ç/>)ü*ñ_ÂËñOáßìßâ[_x;Ç:ž‡¬ëwsáø>þîâáô+8-Üê/¦‹+‹²l%¹š;¸~Pÿ‚}þÕ~.ýŒüIá/[xbÓÆ×>Øü>ø³ð³Ä…¬ô¿ø3UÒtøõê+sgzš~¥ksmÖWw:m൸Š{ëÍ.ÿTÓîýSÄ_ÿà’~ÕÞÿÁß²oüoÄ÷Vòy¶ õoü"оXÆ ˜'|hø}àÛ-cÁ¿¾*üñÞ¯á=SÁÚω<âßü:ñÇö4š€ˆÛÍ«è·zfªæM#GÖ–¦–ÞmBËNÔ¤†imíä>ðŇƒ<=§øoKšò{7í~D·òC-Ûý²úæþ_6K{{X[l×R,{ *+n`ÎßvÁ;¿hßÙÓàÄ?üOý¯gÝOâï‚/>x«EÒ¾ÁðÿáÇŽbÇÅÿð–øSWѵ‹}ǺދáÄ¿—Ã~×,­îì¯ßV¶Ÿ_M"8ÚÞóQš/ü«ëú÷…4­WÄú_ö6¹uöï·i¿b½Ó¾ÍäjW–Ößèz„³^CçYÃoqûéÌó|Øñ¢Õp•ÜólÏòª¸hÐÃe²†o8RTó_mS• rï¥,µÓЍ«i‹²ÑÌþ]â Ép¶3åõ08þ-Ï>µÁ˜<[¬øoJóÂâá:˜jØLÇ[O ‰ÁJTÜ0‰Õ”Ýj2?vÿà‚ž&Ñ´Û‡TÒõIbŽ÷Æ¿ü}áŸ$ŒŠóë6¾ ð7ŒfŠÌ JñµÚH—x§Ã2Ö´U.–_Þ™Dšr|òi#òä ÊÊÇØ~üDñ—Â_øSâWÃírëÃ~4ðVµg¯øwZ³ØÒÙj6RoBðʲ[ÝÚ\Fdµ¿°»Šk-BÆ{›Ø'µ¸š'ýø½ûr~¿´¾¤Þ?ý®¿d/ÚÂ_¯­,“Å¿¿bmáþ¢¿¯´ëK;mGÄ~ø©¥ÛiZ€°µ[µÄ`rß üGÄC8âîļÇÃî1ÁRÅå9…j¸l6uË«PÁår¯ˆÃ`ê}j¬½Œ¨âiÓú•iÔ”0¸ºÞ¬ÕÏø$GÁφ3ÁAÿf+ohÚn§-¿‹üGâC¯ë°[_j÷ž-ðï€|_âo^ɨ^G4±ÜÜx³LÒš8mÚ(Ì®Bˆ@ú7âÇíÿ£ð—üGâí+ñá¿ü£ÆŸ´gÃ?Úvë]Õãý™µï‡ñ÷Á¯„ƒÂÞ·—^²ñ—´ËÿZéZ}µÎ³‰á‚Ú95[[Ùe¸?š?|{⯅¾:ð‡Äê’è¾/ð7ˆ´ŸøsTˆ+›M_E½†úÍå…ÁŠêÙå„Eyep¯m{i$Ö—QËo4±·èÇÚßþ ¯ñËÆ:‡ÆïŸ³'íµáŽ~7];Rø‘§~Ê÷ßµŸƒþ7ñe†™a¤Üø¢âoÝÏâï jZÅž™h𥽇†ã·”CÔ÷ú߈.u_^ñqwâkq]Þ¥ ÄäøÎžAYpÝzPÅa1Ì+bç^¬á*¸,Ά"4§Z3£WIWQ…HN>§ƒ¾"Q| œðÔ±/[Œèq•+ÀËŽ±¬6 3Ë_Áº~gG›Øc²eø‡ã Ÿø(gü'ãNµû6|,ø•á­ö‚øƒà+ÿ† ø¥¡ižñ@ñ£ð÷BÓ~#_jðØkÞ$ðö§¿Œ<;âO_ÞZxŽúÚ×HÔ[WÔ>Ãs=Õœ?®?ðOØÇöQý¿à¤ÿ |­~ÙŸ â]7K»¼þŇJ‡Mµ¿Ô,ã‹òkàí}ᯃ_¶G‡?i‚_¼Uðãá¯Ãí_Ko ü5ø‘ã8|Gâ]cDÔü uà_Ç⬖K-__†÷]×m.ŸL{ Rñ µ•…•柢*Ü}3¦þß°ÇÀ¯ÛwWý¯?fÏØÓö£×¾4üKø¥®üBø—¬|bñG´ß‡ž›â#ê6Ÿ®>Çá-[R¹¾½ñ^â/Þi—>ñMÞ™£jÝ×Ù|m6ÛEò¸³-âªÙEȰY·ëp |» 4² ~Õž ý¨þ-j? to‹Òê|;ñìå7‡|àíOÂqkz>µ¤êòøñ|Sb#ðn‘5ø{E›ÃZý䞃Sò®u[,Áæx~%àœâ®S˜,àlGc?wIÖÊó)ã2l]5˜ÑöÜÔ¨J*ðöÔ½´cR1Œùy¢ß‹ÄYÎM‹áO¸[+â ª9ÎcÇÙ?dJŽ9R¡Ä )b!Œ©“ã •ø¥Oµpu'F½Z5¦ã ¨ÖPýý¹uØ#¿°üëáíI þ܇üKðª‹ÞÑÿc{ƒw^ñoäÐ<ªüH‡âln¡¼¿Ô´MwÆW÷:u¾‡&üA­I©ÞÍ3[‹oÏÚïö×ý‘¾#~Ȳìû"|ý±¼0ß³ÿÇ[ÿÙx¯ö…ø{ðãE´‹á‡Ä¾$]øÿD—VøiâÝJÌÏ/‹ü_á}RÒ×þý+LKðàº¼ÔÆ¥cê>‡ðëöÍø®~Ìšì·ûl|"ø¯ñOá×ÂÏßøËàŸÄO€º—…-þ8ü-»ÕaÔaÖ4"ÃÇwúO†~Âßÿh†ÿðQÛŸ~Ç_¢ðN™ª~Îø 7‚õkľø}àoÿj^øãÅzÖ©¨ÛÛÜ|2²½ð×Ùì¼1wž¢×:µ¤ïw¥‡”xCþ ûþË3Üø»öýŠ?iŸ~Ð ea࿊߶µÿƒ4}áÕΧi5¤ÚÖ™á/‡wrh­ôpÍ%ªÉ%΃¨¥£Kzä0]ßZÞtð–;>áþ–GK…sÊùå,Ï ªÐÃa²·<Ã>Í1Ø*õó F*œ#„TqT*×t©ÖÄrsÂŽµT üxO ñ‹øg‹Wp†ƒ©ð‡à3\KÍ]LæšÊrÊ3<>*¥BSxÇ(Ô¡†ž.¶«rÏŒÃPRª¿O¾=|lðOüDÇû<[I¨Ú_†¿³Ç…¾ ø°™ch­>!|Dµø·«x:Æä«ì°|gð‘‚2ÌÊo!9Ááíuà{á×íçû}é*´šÏ\Õ¿k¯‹~6nD–oüGÕ“â?n“ÍšÖëÃ.±¹´uÌM§Ê;ç_]üF¾ñÇŒ¾4üJñž§âÿ¼_?|aãe»’@xŠ{éu8eÓ®­…±±k Éš[1¦Çei§,v–Z]½µŽ›d«ú»ã¿Û¿ögý¤ô ê·—ìÛñwÅ?<3áý;ÂÓþÑß²V»à}'â‹t$NÚmŸŽ~|B“Lð~³wm4ÓJ5»Kûé•õ+èô½ÃÖQ´¯(álËq<7˜aðxŒû ƒàü? ç4²ïdñØzøLe\Ë™á0Øš¸­a*b1xêŒ=:Ÿ[¥NXZ´éVP«ßø—Þ0á¼DàÚ9¾[ÃX¼Óð¼a¹–uZ¦%Î9rÜ¿(ÌòlvcF…hàqQ¡•à±V+M`q•(×¥R¾upî§‚ÿÁ=¼%®øÓöáý•4Ÿ[Ms}añÏáç‹n’vhô/xŠËƾ%¹,°Ûx{@Ôç•›±ÆÛÈL×èïÀÏhŸàæÏÚφ.¢»ÐtÿˆŸƒÚKvG|Sðïö0ñOÃB2S϶ñG„5 [¡ë4 ² `>,Ó?ॳ÷ì¿á/é¿ðM?Ù'ö„°øñã ó‰ûJ~Ørx. áþ¨ªýª øOÂW:ƒæ¿IT\à ›J‚K«;×,üMez8ùóþ •ñkÃ?±—íCðÓãïÅÇñ‡Žbѵ_‰>#ø‰á¸ìµßx‡Ä<øsã/ »Sâ}sA·Ô]5Ú]jZž·i=Ä+©jX–úqg6yæSq<¸Ç=†QÀB^çü)‘eØÏ`³<Ó™Ò«Š¯ˆ©‡£^´0”ç^Ž ‚£ZªÄÔX­ZN’”ðŽiÂÞdœÂ9¯dy®k™xÍÀœiÄܧS”ðîUÃÙ¾VãÍ‹©F”ñ£ƒ§˜bqøºTªô0ø*˜Ï«âjÃé/Ù¶;ÚÏþ[¯ø6—Wø¹ÿêø}ñÓÁ"½Æ«}ð;ÄzÿŒÇÄ1-åŦá½Câf¬ÖPG=¼wð5™ŽK'‹îÙçQ¸øsÿOÿ‚^~ÂÚ$Âe_ƒß>'|o†•Ÿã÷Ç¿ÙÛâv»âm6òxJÇ}/†t­cEÐ4çº qik¥\Û¬V¤Iüuÿ‚Wþמ/ý‚õ-;âü+É|wi«øÇ> ñ‡Âís[›Á â;Xñ Ö«¥­Ö¥wá¿2[MRÃK¾Žyü7¨ôÉo¬QbƒS’qÙ~Á_µN¥ðŸöø“öìý¨tßk> ñwÄ‹6ñæ“à¨ôo^‚/xÇ^Ð4 C_Ðô'±Òu/ÂË kvQÚèq•†'º¶ŽÊnLïƒsÙÇŽ°Xl*¯ârŽ&Ïx~:´åˆ­ÅEUË18(PçS„iV–k‰‹©S«Wˆ#ìêJXjª?K–x¯ÀðÍxG?ÌsL.Œ²^8É8ˆ«â9ý‹ðû$ãøg9vhª{9S¯‡£–ÓÁF¦#Z­L$øfŒkQ„3,,¥Ö|#ÿ”Ì|Nÿ´ËxÓÿZ§M£þ ½ÿ)wý¼ÿî×õ˜þ×…|øýá¿øoþ×Wþñþ‰ðó[ÿ‚…x—öž²ðι¡Xi¿¿á^ê_ôω¶ÖhÓk?Øð“ÿaïÓÞÖ/Ë¡ÿnE5¬~ ’Ò3_i~ÒŸµoü3ö‚ý¦þ4þÑþ8øYÿn‡Çÿï<iâ{?ø+öfƒáúŸ†^ Ò>h—>‹Vñ·­¥–¥£x~Òúò{ýoR7w³Íuf–²Åc§Y–KÄÜ+›VÉs|f áíl“òì"ÅTÃæ5qù."4*ÓöqýÞ»”®âœRûHðñ³ÊxÃ…(x·Åw@oe¢ßü>ñ­¥º”•Ž8ß_ñŽ‹y„‚ì_ºzWü[ð'Ç/ø*×íñ‚Ùìõ Wøû_|_øEvÍ ‘ºxßâׇ ÓïtÆ‘7;Kàÿx•‘¡ /Ùæ¸“ˆ„Š~$ø•ÿÑt‚>?ýšà›ß³g ã&š|?ñƒöŽøëâ [ߎ#ð¼ð\ØÞhZM¦’óéþ‚k »Û´h×ÂÞ KPºÑô½Y¸}z¾zý>.x¿ö(ø‰ðãâ_‰í¤×<5ÇŸiªÇ+i~+Óõhn-|M£ë¶öòÇ+iúõ­åÜGʘ\i²5¥ÞŸ9ͦIˆÎøV‡ d,mZ ,6¦?S™<%lM 2Ìqxùa¡J5êÕ¡„‡>&0©RT)ðd|eÁÞe>p®/4Àñ]|ŸÅ ~ qf'&U1x• ».Tòlj¥†ÄW­–`òÜ6&.¶ õÌt«}OŸ NŽ3óÏÁíKÅÞ"øÿ â1w¬|ñ?ÅíSâTž#Ô žçÄzwÄ+O\_[M§}£}æŸ©Úø–Í®-ͳG} æ(Uð¤_¾ðS|2›þ ƒðƒá­ÔV-áý˜QÂùÞQ‰ž.8Zu«c³ŸìÈÑÂa£„Ä×Uð™KË牎+š4'Z¥…sýì©eæü?Ã\!â ³ž(Èøõq‡ð¾ÂYv_ŽÄciá2®Æfuaˆ«O‡¢òÜ^eÌéàqX(Su°ø\"Žd¨ºØJ8¯¸?àµóëŸ?à«ÿ¼=ãä—Sð?ÀŸ‡¿<#ð¯ÃwðÈt =Å¿ ¼?ã½NîËN”}‚áÅÚï‹a¸–8Z)fŠi·¾— Câ°o…|9áßÛOöV¸Ðt]?G“Sý¦¿g¥¾]:Ý- œY|UðçÙÙ` mGö»š(cgó?x_jmû#ãíÅûþÓV^ø‡ûk~Ï_µÇí á¯é>Ö~+~Ç÷ß g‹â¦“áÙ¯ît9~ øWâ-ͬZ%ý­Æ©¨È—ÞÒuÉÁÔ/¢Kë="-@Ó> °øëá{/ÚËãì÷ð—Æÿ<ðïÅÿ |cð·ÃŸµ»øšMgÁ)£_Üßø‚âÔ[“TñFƒ'ˆ¯-bK{;5׎‹¦i¦G+m¸|—QàüVEËs·‡*å5±uc…yN'G °Q¯…ÅÒÄÔ«Z9Œ§,tgõhºqu£‹öŽJU|/³j9¯ÿÄTʸË.Íø+4â\‹4ÃäxlÇO=À`V+™c0™–CV•*4kå˜ú2£R‹ÄU©V¬ðؼq*u±X_¢ÿà«ÀŸø+ÇíäÉ?ðË ÔŸøfO‡ñWŒô;Ý=4¯iÖ^oöÌW§UÓ5È>À,ìíï¯~{†²ü÷ûKÂÊx¼ƒ1Ëðü+ÂY¶M™âño ȳeùÓ„0øŠòú¼ªeõ>­‰›ŠÅ'7N 4ùçúGç<%S&úHf™ä9­_sÏøs¯Yâ*åkÍUZÕ"ެ\*f§ŠÀƦ ÆœjÍÖ©VŽí?ø,ç|xÿ±WüàfãkÃß¾,üŸÄ¿4M"å¬ÓÅ? >|_ Á¨Í I¦µ²²ñÏ‹#ŠÎG{/¶ê6º¤ÖÓ_i:lÖÒþÓþ8ñ¿ÂŸø7›ö!ð—Ÿ]øÓâíOyðwÄóhª‰5×uˆµ/‰¯4?5,¯5Ïx~ãSŽ)cmRÎÖçK¾yôýBúÞãâ¯ø(íà/Ú{ÃðL…_¼ñKNÔÿdO‚^4ðOÄÿx§Ãš5§‚õ k^øcð—Áö_ð‰ë:'‰µû‹»uÕ>krÏÿ ᫱g«xrH­&¸¾»µÓÚ‡ö¿ðÄø&ßìUûxsÁ®~(| ýª"ø»ãŸhÓ|2‡ÂÑkŸ®}vÃÄ×¾!T0ü`ðó¬z§„ôÍ8®“âV:˜[ Ôù2þÌ©ðçakdÓŽ'â~ažfÔ¥F“,±œY,6a‰ÕóGÙb2·J¥å8ÆXkYB<¾ž+Äœ’§ñD¨qNyNcômÂd¹'ûJ–ŸEpÚÆe„Ó„± Ž[š©a«ÅC–8ÅÿµTU¾ð®‘eàïø6Óöñƒ@G³:WíMð×P¶¹2<·©‰_±„©OtäË5ôÒ––k‡;ØãjáG²~ȺÇìÿðÛþ ûrü@øÛǘ<'ãO‹~øOñ_Zý—¢ð+|oÓ>ê|7±ð¸Ñføƒ=¿†ítmKÄ~7ñƒ¬Ë¨}¨¾—®j‘iö«|ésç÷‰¿kÿx_þ ûN~ßð…üRñÅÿŽ_|ão êþðæ«xJÑt_|ñ%çü$×ÿð“[øžÆàÙü ñ¬_Ù¾Õí þ§áØe»Š+ÛéôÍ_Øÿö»Ó¿g‹/‹ ~(ü9ã_ìÛûAxJO|døO.¨Ú=î¡j°ÝÁaâ? jùQ¤x§IŠþñmgŽ}<Ü—µ•5M#TÒôMsHéÇp¶w‹Êxæ.5*ø“ƒâ\jxZù¾W€¥Ã•ªG^¬•uª¼%àç]Æ“Æá©*®0nkç²øG-̼ͳ|Ó§CÃ.,á û2ÅS©˜ÿ`ç9³ÇáhÕÍèF2ÅTÃRy…:xõMJ¢Ë±˜º”=¤¢é˱ðoíÿÁýÿd/Û3övýš~ÿÁJoÏiA¼F7.È¡œeÙ…:°ÃÓ‹›ÃTÂåõe‡£†‹¦ýŒ)Â~Î.ÚFÒ&ý·¿oÝjm+M—X´ý½?k {MZ[Y5;[vø§âh-ïÞ#u ,·W*ÑG*¡‚¤K&â½öÇøÉû!üUøí¯øóöbøSûUxÅ_¾"|Iø¥ñÝ~0éŸføYiãoàê‘ßü/Õü¯ëš¼Zwˆu{ojšô~,ºiÿµµ]*ÏJ·–çM±+ïx^ugÃÙ2Ä`ñX E,¿ †¯„ÆÓ,M ØZqÃTHBu!g:NtçÊ5)JNÒ²ü?ÆNYø‘Äøš–7Ëó tó§1Ëñ‹Äå˜ÿöœ4°ÕttãR¥:´% r£ˆ…hJ\ÒùŠ(¯xüÀ(¢Š(¢Š(¢Š(¢Š+õ¨Ë"ÿÁ¹·äA±þÓ?K.’>"þƧ9ÆáʯB:{œ”Wç~$¸p¿ýœ ÿÕæþŠú1¶¸ÿ<³·ükž<_/ìZš’´QE~ˆ:…Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@ÿÙxerces-c-3.1.1/doc/html/graphics/faq-distrib-3-header.jpg0000644000175000017500000003607111363617747022077 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ#È"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ø^Š(¯õ ÿœp¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠýÜýžÿh/‹ß²ÇüköÕøñðÅßð‚|Wð'í9áoøE|UýáÿeÂOâÙ'ÁºçüHüe¢ø‡Ãwßnð߈u7þ&Z=çÙ¾ÙöË?³ßÛÚÝAòüYÄ5øsÄáp³,NcåˆÇO.¡ùÆ2:5«b©às¥J¥HÊ¢†¬Ü9¹bä’¥øSáõ¸›â3ª¹ÃùßWÇÑÊáœÖö9&ã*áé`jfyD'V¼#(Ó”ñÔ¡Ûšé¶¿è¯ÐßÁ[¿à¢–Õ›|pø«ð‹ö«ð ]Áÿ Ë¿³—ÂE×4†Ý£cm¬ü=Ñ<={¥_\ÙK <ßð³áñµ¤ÚúÞ“¡Ÿ‡7‡þíÕ„z›øÕ¯þѦ1È|3ÿ‚xü\ñ¿Â-ãÏ~$þϳ7Â?Í$> ñÇí?ñsMøO¤xÄÆîô?NÕî^)Ì7YK¨Ûéɨ[[½õ¹±{{™º0|a•Ë$ÃçY®+/Ë)bqøü¾Œiãþ½J½|?ƒ,-XáðõqX‰Ã:Õpô°Îxyƽ&êÃ*óó3Ÿ ø“Å?ê¿`³^%Å.ɸ†²ŽQW,Å`p™¶_‚ÅIæxz¸œNF–#N†,¦F¶²–Œx ?ÁTWѾ?ýš ðç€>x†ÖãöYÑ5í/UÑ~#Á{«Ýk«¤ÚècÀPËkã¿›xÚ­”Vã®Ëñ|;…«Šoõžuá–âp´ž# £‡ÃÕ®êb*EóB•'†‚§NµHâ%Z*Q©V›Èüãþ Âq¦#”,>#€èáëgyVa[êY¤åˆÄÑ¢è`pµaËZ½5ž>jµ\5:ØJSX:˜¬UL>¿á}õÏì¿û|Xý®¾üvø‹ð‡Tð]Ö™ðÁÚ_uýS¿ñž"ñ•Ž·¢x×]Òt߇V>ð¿ˆí5ýkQ·ð6¥kei¨j%½Õö¡£Ãoy$WWÙû>û%üVý–þ6~ʺƩñ‡öI±ý ußÚwàw…<ðXøÍgâ?ˆþøƒ«x²ßRðïÅox:9µ-?Àvž"Ñìt_]øs\¿Ö-î5K-7M‚KûØž.Ìod83‚óVð`ð½æ¯ý·uy ž$O6‡ö} XF^ÿà±_±§ÅÚ þ 5ቖž%øQð‡àß„?bo‡žñÆ¿Ÿô¯…ß í|iªüuøá¬Øx>Ó^Ô£»»Ößóx®=ŽÀ³ÅË,Áå\U‘f¹¶6´«ÕÅû Ø\6G[C.ÆCêðÅR­S4«MMà]\b Q¥‡“”%úf[àT³,L+6Ìø‹ÃLܚŽKK3¡šâ8ЇöÆ[ŠUkeøÊrœ3©y£Âe•Ö:1žQÅ/çVŠúoö ý’~0~É*Ð<7ñNÓ@¼Óüe¢ø Ç^ ֓ľñîþŽ$Õ<-¯-½œ—Q[ý®Í®m¯¬týB {ý6úK1aªé—Wv|uû%ø÷áçìð“öÎñоÃð¿ãGÄk¯…¾Ðc×5˜ü|¾)¶½ø`±ê:]ÿ†ì¼<-î¦ø_â³M/Å:®£ É*ár¼m,Ï W ⡂ʱªª”±Øº”ñc‡¡8s'[“ ‰æ„¹e P« ¨Î+ñéðGR̳üž¯f”³NÀVÍ8ƒW :X¼«.¡[B®7F§,ÖTÌ0<• §´ñT+Rs¥53åº+êMöKñî½û|Vý·á*øs£| ø;ã½/á÷Š´í{\ÖtïÏ­jú—Ã}*ÎëI³ÿ„no K¥µçÅ£M©x³K»?gÕ+)eŠÆ=Côsöÿ‚|üøåû%þÔ?~(xïà>§â«?„~"Ôþ&±ñ·Ä>_ٿĺ6ñ{N9ý¥í4;h-¼ á ÍKÃñžªkpxÃLŸÀš6»®\h“CúuÇ“žq¿d9n;4Åbjb(e¹¾"ÆSÀÒöõèæx™ám†œ'*PŒ¨ÑÅÒÅVr¨’¡gí+:tgôœ#áq–{’äv[ +ˆ8{Å9F#6­õ<3$ÀSÆ9bèׄ+΢¯‰ÁÏB¥),UJRÄ,>Úâ©~Ñ_£°×…~'ü=ÿ‚Œü9øuû5üXý‘¾3|hð¤>%mÆÚÄ_üRý™ïî5ÿ€ž*×µèŒ|§hÞ+Õ¡Ó¼9}â-Ö{MMxüs¤=•å¿Ø,¯˜ü³©øã—Æ/Û[â÷¯‰Þ(øC¨|xøûiøÿá¾½yðöó]O„~øâÿ‹2xsTÒ´ë‹ýãÆV^Ñüe©êÙÿméÚÇ‹íü2öO©.¡ª‡º©q&®iSa~¥ÂñƼ\£‰ú®+‹¤¥S.ž5)aU,7µ†.X‡9ÔuhK MÑsžX s|' VÎ1ÆPÎ0ÜwˆàJÙ\¹û)æpx ñX<â–*®ŒöøÕJ¾êô©SÃK¡ÅÇ©Qðª+ô»ÄðKOŽø£â†?þ,~Ì Ó@Õô?é>?ø§ñ|øÀßõýoÃ>ñ@Ò>xnÏÆÞ-›JƒÅÚ.“¬ÞÚø."ËÄ3K£®£5Ì7Ç´À/‰³'Å_üøµ¤[é2ðרælobÔ´­OKÔíÖóIÖômF ‹{¥jv®%·•£‚æ{+û[=FÒòÎ ²Þ(áìâ½,6W›à±µë`ã˜Q¥Bª”«`ä©7^•ÒU#M×£êSÃά!^4ç%äg¾ñ· `ëæAþS‚Ãfu2lN'…•:xlΟµÿdÄ4Û£:Ê…iáeUFž2*•p“¯N.kÆ(¯»~Á>~.|Dø=cñïÅŸ¾þÎÿ 5ûétÏx¿ö•ø¯§|'Ó¼}¨E,Öæ×ÂR_éú€¹3][Ímg>¦t«]BH¤{ î ŠI’§íÿþøÝû,üðí ñ‡Yøe¢øcâ/ĸþxsÃV-ºÔü]q®ÞÁã«í S‰àÑÁz·‡|S£ø û^ðÆ¥á¿ë’ë:&³áëûk2—·k§ä¸¿†aª9æ_,Âxç–Óº•Z˜øÆ¤ªaiò§•hû)ÇJ_Vª•*îYF±x]âÉŸÿ©ùêÉc•¼îyŒ°U#‡†U|:†:£•§Nxâ¨UÂ9Æ2Æaæñ8XÖÃÂ¥Xü;Eû[û4ë¶_ðPÿÙRûöñέamûH|ÓõþÆ~1×'·…¼I¤i6FoüÕu[¼M”Ú]¹·Ó.,tXta¬f±ød¶:¥ñ{.ÁÑÌêॊË)bèÓÎ14ë8Õʲú·„³_«ª/ „ªéKÔ£<> ÖÆEÕXyR—?p|8ç6Äpõ ÚŽ[ŸbpŠœ1ƒÅaÔ°¼CPp©O‡åxš1Ë1™Ž8ˆeUªPÅQÅæqÂåµã!‰§ø¥E}éû:ü-ðoÁ¿ üIý±¿k Ïcðörñï†4o†>'¶—LÔ¾2~ÑÚKÏý—ðzãNºŒNš_„5FÖ>*Å,Ég§Ø¾Ÿ¨O©]ÚAñ¤3øûûY|Y×¾"xïûoÆÿþ;xÖ;íÂ^–·:”êòÅcáï év6p=ô“ Qeec¤‰$µÑì ±Ò,-ì­¬Œ#L6wGÇaðЧS/ËhEã3gˆ„pÑÆÊ0¯õ:+•²Ãá'F7í¡K *¸zUê¼ZÁià\Ã,áÌq™Tž 5Í3„Êøn®·ö–+ •0²ÅÎ*^Ö…jØêu(à°2ÃJ¥z8lV+W Ù,3®ZŠý&¾ÿ‚Z~Ðöúoˆìt¿~ξ,øÃàí ïÄ~-ý™|ñ·Ã^&ý¢ü9¤iÐÇ>¥>£ðÿKŽkWšÁ%E–ÊÃ_½½¸¸x¬ôû{ËË‹[yþNýšgßþÕ<ðáî§áÅþ;ÿ„û#Rñ•î«§ønßþ kÞ2¿þѼÑ4_êpùÚ_‡¯`³û.yæ_Ëkßg·yn œ7ðî3˜ãð¹ÆƒÊ(O™W¥YNL,(Oõª©.o«N…*•¨â#Q¯NœåBu%l1þq¾W™dY>eþ2âlU,C„ÄáeF¦gŽ­Š£X,4¦Õ7Œ§ŒÄPÃbp³œ1JÕ©ÃNŒ§ü*Šûïâü·â¿ÁÏ üPñ—Æ¿ŠŸ³Ám/áÕÏÄëm Ëâ¯Åûø“ãAø[¯éZŒß<-ªé1ø‡ÄÑx§Sðåõ—€ÿ·4ß Íây&Óå·Š [Ø®+Ï?gسâ÷í1àß|TðÖ¥ðçáïÁ/ “Ä~1øãOðÂM2âx­§ŽØø¢æ+ç¿“ì÷–—Ë¥Ø_ZYGwcöû›WÔ4ôºÎ<[ÃSÁWÌc`%€ÃU¥‡«‹U—°úÅv£KN¥¹kâ*Mû(РêUö×£ÉíS‚Þ§†|K2Ádõ8G;†i˜ÒÄ×Âà%‚¨±2ÃàãÏŠÄÕ¥ñapÔ)[SŠö4#…qÅ{O«J5_ÈôWÐßgM[àü!wÓ|Vø ñ¿‰ãðŽ¿gÿ‹>ø§á-VëÁ§@&±7z`´Ô¬.ô•ñF‚óG©iV‰*ê)öY'hn–Qø=û|Xø«à 7â׈ümð?öyøUâû+Áß?ioŠZOÂ_ øëU²vŠîÃÁŸo¶Ôu}u ¸_²›Û})t©.ͰjÏk{¶Õ8—!¥–ÑÍêf¸HeØš’£‡ÄÊ£J½xN­9áèÓ·¶©ˆ„èVL<)ºÔÝÜð²Ÿ/5?øÒ¯bxVŸ fÒâ (b1™bÃIVÂáªÂ„èâñT(àëG…tq•*Ç [ëXeJ¬ÝzJQ^×û@~ÏŸf_ˆ×¿ þ-hhþ#ƒN°×të­>þÛWÐÒ2åT=ÍÝÄ0¡f ÁbM~ÃþØß¼?ÿ–Ö¾~ƱÅÞ3ý±oü¢ü@øýûPüLðµŒîü .·æ=Žà­7W†Xt3*Àš½½œ¶Òi–¹ð±¼ÒüOânûTÓ¾{>â9eX̳(À`%›g™ÂÅTÁàV"<=,& RxÌ~a•,CÂa(ʽ Q•<6&½zõ©Ò¡‡¨ùÜ?DðûÃZÜk„â óœá¸k…8Z–yÖyˆÃ R¥|U9ÏJ¿ã ÷ŸüGþ ?¨)O‹?~~Ñ:T„‰¼ñ«öTøK©xRKw æéîþ Ó|«Ée!D/›•Ê.eP WÀº k±é6‰âY´Ûi|ñy6‘ÄZ| \ÍöW†;¬ÌŽÖg7 ß ºó¼¯Ýl®ü«×öñβ¬[8{'BY~oW7¡ˆRöžÑ9×ʲŠÔeK–ž“ÃJ3U=ÙÞG‘ÅÙeTðuøCêñm*Õ*ÒÆQÆðÖ#†qØ)F•‹<Ï7ÃâèU~Ú«G)Ó§xJ5ã(ìQ^Óá¾$ñ‡ÀÚöˆƒÄ> Ðüû5¦ÿ„ú/j×úf³}ÿ “Æ7>ð¯ü#HšEÖuö]fÕ›YþÚÖô&Öhý©w!´_®ú¼6&®2 ЫW/ÄC „[æÃâg„ÂãáF¥Ò´åƒÆáq ×^μït¾_•æ8 .WÆ`ëáð™Þ¶?)ÄT…©cð˜|ÕW¯‡žªq£˜åØÜ%E¤£V„¯W H¢Šö›Ï¾$Óÿfk_Ú®ÿÄ> ±øy}û@Áû6Yhךµý·Œï>!\ø¾#ÛKk§M¤&‡q¢\hhö°IˆŸ\—UF‚= ­ßˆÅá°žÃë5¡Gë8ŠXJí¯k‰­Íì¨ÆÉÞså—*vZ=G—åYŽk,T2Ü|dðX,Fe‹sʆ¢ñ8™Å;û:*qsi6“½ž§‹QEÐyáEPEPEPEPEPEP_®Ëÿ*ÞÁ@ÿìç>êÇý‹ëò&¿K>þ×ÿ±ï…ÿàœŸ¿aÏÚ«ÁµÇˆt?Ž_tßj:¿ì«áÏ…ú·‰t­EüI¡ýžÿâ?‰­ììn‰þ}—Yóü%«ÚS·†Îî-B÷ÏÓ>Ä<&7•ä•08,V>yp¾kˆÃà骸©e¹­V.¥:nQçtèÓ“QRNNÉn~ýôoͲœ§Ä sÎ3LSG2à¾.Ép¸¬Æ²Ãá^ašerÃ`¨T¬Ó?kVVæ’QI6Þ‡æ~·ÁE/äøeÿ†ÿ‚Qüñ5—Ä?~Ñ7ßt}.rcÔáüMñsV¹½û;æEµþÇøëà­ÌÅ0—‘" $¬?hÿ´÷üWá¥ô^)ðGìƒÿø÷â]5ÒóFðGíÿüðÞïRµ>mšëÚ‡Ã[‹ýNãNyÂÛ;í7UÓ®¡Œ[]é×–³Ü[ÉòíûAüwý¸h3ûGþбiˆžøEð‹ÃÇ¿ ü \5¾›a™,r]Éö»›­GQ™äÔ5=BàK0ÓìtÍHÓùq°Ìx¿:á™G'Ìrœ›‡³YçØ¬^mO…Äc1ÔpÌ‚ÂSÄWĨAæ±¼F&ž“t¨:Ó©7Kéx[”x9þ æ9çðîqÄŸá ]_iÖÚrÞx~=wþXêºÞ‰?Ê?ðP?ÚÿÀ_´÷†ÿà˜ ¾x/â–©þÈŸ¼iàŸ‰þ&ñO‡4kOêÖ½ðÇá/ƒì¿áÖtOk÷vëª|,ÖåŸþ;ÃWbÏVðä‘ZMq}wk§mi¿à—ö^ðR|^ýŸo=;Æ7…|7kâ»ÿÙÓÅ |sáx£N±‚ËÄ:½Þ›ñ&ëHñ?†SÄWÖrëo¥h%––š»iºméK(äO˜Ë¸v®ƒ2J®WÄØlß+â'Ì0ÎŽæ¹ELnyœÔ£]ÒÄÖtëa³ ¿©ÎŒðØÊhÖ¶"5Ë5÷ÙßOâO qã²lï¾ Ésœ¯Šó^'â,.F–/G1ÁÐUrìÓ*ÇáV#ˆ§ËñÔ+RçÂKJ3à¿kÿø'õÇì)ñ/ÂÖÒ]øÅžø¡á ¿|+ø¥ðú(l4x:;"[ù¢Óm§šÖ Û½ðåíòÙÝkVÙkzÕ†»{o©‚~Çÿ‚Ïiö¯ìÿÿ °Õ,lõ+ÿf?‰~}•ý´7–“y_ÿei¢óm®HdòæŽ9cÞ²XÒEÃ*‘ðÿí»ûljŸ·GÅ¿€pøàþ̲wÃKá·ÁßxÒø]øÓQƒZÒ´R¾×vK:ÀMð—ƒì,ôÔ»Ö#´ƒÂës¯_ßk ŸÒ¿¿mÙcã¯ìƒû?ü2ý¤>þÓ:—Ç¿Ù#ÀÞ:ð—ìóã¿Ùú?‡º¿ƒï®uOZxOÃZwÅ]+ÅÚ½Ž¿eá+Äð÷¡ñT~Ò5]fOøE[TÒµÍ6[÷ÑfíX~-ÄSðÇ>ÏrÚØ¬Ç&ÍswŸQÀÒÂ,U,>g•æy^W Gðêj°u3:X:µ!‡«R·°ƒ£NÑࡉà<ˆ¼náâÊ+Åþàpü%_4Íqxœ- ëŒÃæ8®¡žâáKTêRÄK$¯˜SÃV­‡t)bel¿{ôÿüÇÄ:ßÿØ[þ â¿jw~ñ'dÕñƒuŸÊtËÿ k~ø?ûOj^ÔôI­|³§]è·ö6wZl¶Û ¤Öм;LkÇÿø'ü<ßµ_ìGâRÍ%ø»OÖdÒ>øãà—Ž|O¤é–7ˆ_Mð.¿áZÓôûNïKµme­t»›kKMBÿN€ßá»»³ŒÉ4~¦&ÇG9ñ[,Ôs¸e‘Êë8Gý¾8G‚”hËyF–65¨ZVQ«Ïd¹›#Šã,Ã?£î]‡ÏãGüIÄ0â¬5\á[/Uxï›Û ÔÝ*Ø ø\d¹\éVƒ£)¹N”T>¢ÿ‚¯Ê]ÿo?ûµßýf?‡5ô¿üb/<_ÿø5à={WÖo¼ ¡þÅžñ…ŸƒßT¼þßÖ~;|QÒõAô‘/ÙÆ­máÏ ®«4qÇ6¤žÐ-爛×N‚üóý°~?xoö¬ý¾¿kOÚ;ÀÞñÿ…<ñ&óàÍŸ…í~#hVˆ.á^|$ðÿÃné ÑõŸhÓYÜë>»¿ÒçÓõËÿ;E¾Òî®ÖÊîæ[ÑoÛ3þ ÿ÷ý³jñ¯ÅÏÙCö½ƒÃÿþø{ÁþøÓð§Qøy¡|V×­ŸÄš·Šµ¿êžñg‰uï†~"ð}þ·k jºO‰tÿiš”Þ3‚hn­otø­> –æùZð{[!̱°áÎÌðÅ%,=\N]ŒÄe\5…§ R­ˆ£ÏUÕÂ⩺t%:®4ërBqM?Ó1ÜEçyßÒ“-ÊøÇ"ʱ¼gð6?…qøìÊxe†Á¼ò¥lE }:UaB4´p V«ìÕ*Õè7*s\ÐÏýµµKkOø"çüç[ÔIãÚsÄŸ<0%‚â?…ww?ô ý&ÖHÒ=Â|7†ÚÕ`Hô} HÕ¼˜\[ýµÿåðMû?«oýHÿlªüøý³¿kyÿmüð¿ÃŸ„ž$ø û#~É~»ðÿÁ‡~0¸Wñ–µ­ji§¦«âïn."—[¿m#Jv?jÕc³[KÙWW¿Ôjþ7ø‰à ‚£è>*Ò¬<áŸ|!ø‘ªë¿üXÞ,·ñ®§ã½kYð?ĵMZ8Ýk~Ñôø¬4hÝtZ°§í“àoÙ‚Çö†øuñ›áω~(|ý¦~ß|6ø©á¯ÝéVž6}5´Ÿh©'‡ÿ·5I½’ïBñ—Š´y¬o5ÝL𥮠š´-§}šï ùc¸SÄh¼‡Çæœ{â ¿,©W ,N+.Àâ8O'J¤+<4ëΆWŠ„i¼©¼U9P¥Z¬y*ÌÂñop¿}]~+Êñ™o p?p®{œa]g‚Ëó|×*ÎòºkMâèa)ã3Œ$¥_‡£V97Õ.çó,µ{‡Âm¦ÜKö]å´“Ä~|~ðßü7‡ÿk«ÿ xÿDøy­ÿÁB¼KûOYxg\Ь4߈_ð¯u/ŒzgÄÛk 4iµŸì?øIÿ°÷éïk‰eÐÿ·"šÖ?Ii¿¯¦ÅåÙŽ;гœÚŽ]‹§ƒÌ|/ÂåØwZ’§SûJY†y‰–_RŸ3tñt©âè:´Ûj2¨—;³>†w•e>×È3<ó/«›åH˜g¸ÈSÆÇ¥Ãõ0<-C œÐ­/¬eµ¡–â~¯Z›mR¡iS§hÄ÷¯ø,ö±ñ þ áûTéž2ÖoüAáß„ºìéáÏøkRO¢è:v¯ðGž:x­lˆ•·ñWŠüa®B³¤Ûu/j@‰#¶ò~ÿƒ§’ø)ïÃë8˜Çm}ûø P»‰xIï,¾?|o³¶¸”Xmneå„M°  üèý°~?xoö¬ý¾¿kOÚ;ÀÞñÿ…<ñ&óàÍŸ…í~#hVˆ.á^|$ðÿÃné ÑõŸhÓYÜë>»¿ÒçÓõËÿ;E¾Òî®ÖÊîæ[aÿ‚žþ×þý¹?oã'¯üRð¿‚¼û+øsáåßÄ¿hÚ,š—Štߊ^3ñÝÄÚ,þñ7‹t›Í/û'Ç:uªI.©k¨ÿjiºÜ¦Gmgåߟäžàô§–Õ¡ “ƒs|rÔ#àqøœ³†ážW¥jØœ.2íssU§VNWwMÇðPuTùá°…fimæ7CûiEð@ßø&´(±[Ú~ÞZu¬6Åmgg®þØÖÖv–ñ’ [Kh¢¶´¶ˆ,6ÖÑEoG h‹Å|Iý¸?cÏŸ þÜ~Û??j?ünýŸüqðËÿ?eÝOáÔ’|GðJɧ\Xè,¼}w¡§ÂÓéV7SjÓu»øõy5í^ÊÿE‹\ŸG“Õ¿à§¿4ÿÁ#ÿà˜ÚU—ÂOøPñö²›â7ÃÿƒÉ#j>øUà[ŸšF…©ê]Ì÷úÞ§«ø[ÇþñN¿â[„óõÝ[ÅWåòZ\êâÞ¾^†2Êðžð¶a”cpøü£ŽÓÄæ5^XL{¥€âZòÅà§O½GB 7*X§ ó„%ú3Ëx¯;ñgÄ,‹‰2ÜO ç bp™aëbÖ7%ÅKÂñÄasL °ôð™~#/­‡–[Gš´êciJ5p.® ›¨¿ëëØ“áŽ~!|}ð¶µáMð¯IøI ø»ñ ã9;,~øÀóEªë~0»gŽXn®‚G—¢è³E4Zþ±¨YéWP¶Ÿq},?#×¾|bý ô¨?f_þÇŸ³¦ã_ Cñ:æßÇŸ¶ÅÏiVE]êUðßï \éZ¶·ð„av“A¶¿¾ƒS×xãÇ_¾3ü ºÓôû1àÏj0–ãBøÏ¨išl{o¬ü_sw¦j°]ëwiyà˦tŽ'±Àÿ‚i~¸ý´5ÏkºTºÖ©à€¿|eà½6Î[^ïÅj>Ð%·Ð­îå·†mfç¾ ñE­œfêÔ1ü˘aó\|oûþÔöŸ±¿Ä‹mcÃ'ƳßÄ/ ÏðÓãÂe¶²¿³ñ‡ÃÍBÒêÆ_³ézµÍ¶“®éÞÞMbº¥Í´:¥¥öµ Þê6ž ½¾‹Îþ þÔ6³ßíWyñ¯ö[Ò¾&hžø{ã½E¼ ¢üpÐlô_xƒáþ¯o-µ÷„|[ÿY¢kvͦÞj>›^Ò$[Éü=âo jFÐAâ=VX Óõ‹"·é½’îÞ´{ÿðHOiÿà¬ú<1áø3À>'øïû\x“ᆼi¤¦‰â]ᧉþ|`ñ7‚´WN‚÷S³¶¼Ñô]bßG¸·Óµm[Mµ¸Óå³±Ôïm­£¸ÿŠ¿´Gü‡^ñŽ»ñãöUÿ‚è3ñv³©ø¿^ø[ðŸYø-qð|M¯ÞÜêúòh/¾}KÇZ^‹ªëW·W²YÂ?áètÉ.¦‡DÑô"ÚÎÁ|ûöýªþü ýµ¼1ûMøƒáO|ð‹Âþ0øµy |4Òµ-#ÆÞ:Ѽã?øÓÃ>Òc¿×5 Zj÷Þ*ÓôÍBÿXÕ4ëëÛ="óWhZêæ 9ÿ°gŠáî2©†Ê¸¾æeÀ¹ŽF¨çõð•£*‹xL¯ì1 V•<^2²£ˆ§OêÓirW÷ÔªÏx枊<9XÜw†ŸêV]ã ñu Û†qØÙc)àhfÙU:ùæ; Š ž L£‡†7/…O¬àåC–¦1¤ê¯›?kÈ.¾,~Þ·wо'jº§o¼9ûd~Ð~ð忊¯fÖ4ýà ñÝ÷†¼5¥ØY^<–éi¤xgKÑ<=§[4mŽ•£XÛZÇý*ÿ‚¯é­á¯ø'¯ü³öyø|[Fø+ñ;Â~+ø™ñKЕìtSÇðÃÁ§ê`!· ý«ñâ_‘c7)qn&ºLoå'‰¼{kñoã‡íSñ“Kð÷Šü/áïµGÇ‹¾Ѽo¤Ç¢x¦ÓÂß|_qâ­ oN·¼Ô¬`Õ-ìu(í5(ôÝSUÓ¢Ômîà³Ôn$ýøqûiüÖ?f]öTýµ¾|Kø½ð»á—Šî|mðkÇŸ5Ÿiß~ê7ÐêÐjZnkãKÝ3Ã>&Ñná×µ˜Ÿ¬j±Ãoa¨ÏfÚVµö ®ƒìæ™6aC-ðï‡Ë*ãið¦' ˆÌòL4hÇ:52NUíðÔjÔ£F®')¯‰Ž"žž3•8UXvêÆçó¹_åÿñ¼kÉñÜGC/©Æ™Nk“ðã±5e”e¹¤sloƒ¥_J5–›Ë É_09B8µB®-òT«^ŸåÅ€ü¦_Øjšg†4]7PÓ<ï±Þiö0XÏŸk5”ÞkÚ¬Fë̶žXÛí^w/æ JÇôOÿ‡Õ?à™º7ÇÙÛàÇí5áø(wˆ-þ þÎ>ºøGáOÙoEøª| ¼ø}­jÖ§xŽâÃâÚk÷Þ$3xmtmJâ(lôO²èz<ÛLÿk–çñSãGÅ_Ù{ÅÚ§‚|5û)ü ý§|¡éSø®_|Dý¥uŸø•/mô©<3koá¯E‡t˜49´íRÜ6”÷W:£øI}qåhÐ~äÕ¿mÙkãWÁ/„žý»¾ þÑ0ñÇìÿáûŸ|6øåû,^xïân£ðþãû;ÈðoŽü7ñ+RÒ´mcO±]#Lk6ï®ë{(î­¬ô«½Kň#ŠðüãÂE‡Àñ •UÎèãðuL6>ÃG3¥C…Ìa‡UêÒ­ StêáéÖx¸`ó'7F5)W¡O ³Ê<‰ñ‚8ƒ7á,ã>â,§‡'Ù¶w™b±Ü-Š«”bs^3‡êç”ñ9]L\³Jµ0øŠ´ðøIæY\]*ó£ŒÀâñ>ûzþÚŸjKߨ‹Á³/Â_ÚgÀÞýœ¾x·à‹uïÚ ÀþðÝö»àÍCð o| âÏh÷·úDÞñ`Ô¥›N𽭽߉cF´–BâÖÇ¿àÿðUíwàŽ«ûUø¿Å_³í¢ø3Nø%áÿj>þÎ3vÕoõm!u»,i>KëzÝÖ˜þ%Õü ™7ˆ.t{ÅÑÙhsØþOübø³û6xÏPð?‡eßÙóö‰ø} i-âi)øKñá&´R8îÛH¿ñ>½«xwâœ:S\³é·r©°ÔÞ¸†bdN?²Ìfs–VÌq2¯‰¡™áñ8ʸuƒÁR̲üë‡hÔžµHVÃãªÆ´±v9ÀÕúÔ<#âçìIìwûQÙûã«á¯†Ö:Æ«àKÏ|M𞉩x“B‹áoˆ5›½>‰úgƒôõÓµb×DµOÉ7‡ìíluKý_@Õ´ YçžÞ £êz‡€ÿà’zUýö—ÿxò/´ÛË› Ø?á?iy|›»9žÞæ/6É!“Ëš7O2)$‰öîÙcóÏímû]|Fý¾¿kÏþÓÞ,ð%ÏÂÏAà- á7ÂïêW¢û\Ó¼áícQ×í.|ApÚ$úÅÞ·®x“Z»e³··±ÉïàÓR»ñúúÌ¿.âŒÓ$É+æ¹öeÃyÊ˨¬Û ’aør¶¦6QR«)ÿkd™Ë…H¿vQÂW†IÏ‘T$ÏÊxŸ5ðÏ„xë‹p8~Àx§ÃÕ1Ô§‘f™ïq~3ÀácF†XÌ‹;ÀQÇQ¡MF”3,e8Ó§N¥js§RŠû'Á¾.ý…~~Õ¿±Þ­ðö΋ö ³‹ã§ƒ-ð¾Ÿã8o?ᗌͳ|ˆðùÖCN¶•ãslt1ù¾ `êÆ¾¾:®;‡ÌV.18l# †Ã~[×´ü ð‡Àx“Ä0~Ñ´'ü3W€´?jÞ$‹Çßð©¼cñ“íÚΙ¤"xkþ_ÜÚë6¿jÑ®µ½kûeškX°³Œ]ê–…}ÄþÕ?ðM…Ï.­ðOö#ýµ¿hAûÍNý¯µÏ‡ž øc¥êŠH·ºÕ´ï„w2¯ŠôËiV9fÑu{¨¬uHÞXngН_è3ëW:M¥Çˆlm4Í^o=î¬,®Må½¢µÌÆÖµ¢âd³û8º–5µ×œ`NÊú¼.;žá±´©á3Þ\”á†Ìq42ªx¹T››©<&óZpta<Ë¡SÛ?eJ¢ƒšüÇ9á*\‹É±Ù®;ƒxÒ3ÅÔxî˳ŒÒ¾áéœéSÇc2Ù䨷KV寓ftiLj…JÑÃË÷á—Ã/ø'7ŒàœßðRßø7þ [ÿ ÂÃÂæøÍÿ mñ×Jÿ…#ý•ñÖÿUøwÿïU¿µñ'įøY^$µºð¯üR·PÿÂäÿnkže„‘Æß˜›þ ÿàÿ øzÙßöùÿ†•ñî¹ã='ÃrøþgãWÁ¿°èÚ†®ïâ_øJ¼qö­ëìºÍ®‰¢ÿc*Ãu7ö÷öˆž;M.ì0ß¼7àïø'ÿíóû;Ïáïëž=ý¥á–á—ÃzM†§£Xÿ›øÕÿ ÇŠ¿á%wÕíu›_µh×Jº7ö.‰¯y×pÎ5ì»HÅÛxu|Ç ðÞwÏ8›Šân ©‡©ÄLM:xœ' ÇžaãÂü;†–',7ÐÄSöxŠòïøN¯—Ó/¦Ý7ˆxŒF'õ^>ãï3o<;À`<;Èé×§‘ñV… ql±Ü Ž—æxéR¥,vg¡™iPÆàó¨Ç:Áã•%Ž«B…UER¥„úà‡‚¿eŸé><×?iïÚÓþcKð¿ü"ÿð݇ø‹ñÃþí»ZÏXýÇÃÛ¸.<=ÿõÄý>íoøHwÚùQé7¬ß¥>.øeÿæñWü»Ãðòß°|ðßüÇEñ·ü/ßøcoŽ·_mø½£þΗ0ÿ‘ÿ…YöûÛý£Á—ðšÂÊß?†!ÙÿçÙ%Õ[+ø¥^ãñGã—†õØá×ì©aáïß|C±ÿ‚ŠøGö“½Ölô› ŸYü=¶ø+¨|8¹ŠëQ‡W}rß[·×.§Ž_¦‡”ë<šêݰ±:qç9–'+Ä`x‡>£EgùMyeøL7 O –Ò£ B®:…LfA‰ÇJp’öÒŽ3Œ£íkM*ÅR£KƒÁ8àŒ‰f¹~yÁ<;<Ö|/ÄØz|M‹Ïx· ‰Îc‰§´²<^žÓÊ!S|,f]…ËkGGýìdq¬^ÆûØ»ÃZ·€ô?Ù‡öÉÿ†§Õ'0Åæµ©ûN|~:ž–*¿=IÎ>Ön/Á/e*0ö:7§N§´¬êU©øæY.m›VÇd9K…2úÔè(ä˜lÓ0Íð˜ZÔ©F•Yáqy´ëæ^Ïà±)c1˜ÉCR»£ZžX|&¢Š+°ðBŠ( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ëçþ ƒàÿ‡¿ÿfO ë_þ|ø‘­ü=ð†‡ x;\ñgÁ…z®·¢é^QÓ4˜cÖ'ðԮ絳ÑôÕkýBêïPºšØ]Þ]\]Ë<òÿ)?ðPï?>=ÿÁH¼S¡üZñ­ÿ‹ôƒk>øY Ki¤é‚t´èï ¦‹¢xOÒt¨§¸¹hä¾Ô¦´›TÔE¦ýíÌz^œ–¥üÛáÅ*ucýãúµhý8½•)WÍø[6­Jr§W4­„Ê(C [1©§«†…J‘ÃÔÄʬèÆs7)'ç”QEIçQEQEQEQEQEQEQEQEQEQEQEÿÙxerces-c-3.1.1/doc/html/graphics/program-3-label-2.jpg0000644000175000017500000000531511363617747021324 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ x"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ýø×…ÏLj‘ꚤ.žž Ö..õ;„Ci ¥›Ý³¼fXw—òDH‹ vyF²9XÛøE‰ã/x&"æ Þø²ÏûB}BÐF%ðæ™«3kwVJ×›"m&ÆòåíÙ¦Ä_»—øñ×ü}ÿ’ÍñþÆkßåyž“¬j:áÔ4«²^=NÀN"‚f[]cL»Ò5n"•#–[ 똢¹VæÎWK«9­îá‚xþ‹rìÏ7á^&ÊrLd2üç4áüç.Ê1õ*T£O™ãrÜNŒjTq5iC Š«J´ªSÃשÁÊjÉ(KZ…:ôjT‹•8U§:‘I7(FjRŠM¤ÛŠjͤï«[žùvþñÍôzn±qá¹ÓÖ?¼U­ø¯áƒ´ßÙÙÉá]ÓL›Â¾ :Ì&µh®îõ­ ‰mµxm,õa!g‹#ÃÞð&¼tižéÖþ5¾×´¿ BuíöOGáÆçRñ7ˆîÇ…ìâÖtÛJîcam Ï§éÖ¯s­Ü4pMuãZ~±¨épjÖög‹\Ó±õ@"‚G¸Ó¿´4ýQ­ÒYbymwÞévO$¶òörJÖwWVóíXøçÅo‡î<1e¨Ç‘puéÚ\º…´z¼Zëºv·5”šÞ•c¬ZÛÅm«Øi𥖩xoíî#–Uű^ñžM–ÕÊx‹q^‹†[”á±Ö'+Ãà2ìV?Ísñ`r,†ŽW òñU§‰5Gk6µ¯ Au—¾Ñ´=OMÔ¡Õ$^ÚÝè:Ž›u Ëdò,o‹iŸc´0Ûý’¼_Æp5oüH¥Æ¼W”ñ°´0øþ8áü“#̸—=Âå“â.'&«Ã9Î2Në9fW†Àã3L.3#ËqxŠ0xªµZ¹¾+™ã#щX,ÃP©K™¸ajÕ« 4¥5JQŸ¶§Rvœå(ÂQ©8ÅûÕTãDõýká€t_RÕ¦ñ%®‡§|<Ð|Oý“¥x§Â-¿'×¼TšV› Eã MO êzv¥ [ÝëKªÙiÉ.œ“#}‡T:tÖ·ô5 OøKtßËâ¦×4X¼qb5;Í.{µ/ÝhVÇÁwQÚé—Zާ¦.§¨M'ˆ }*)æÑî,—ÂÑ£}½<Ç\øâßÙÉa«êpÜZ͇o4piZ6žóAá¥ÖC†Yôí>ÒybÓ¢×u!ådka§ÛJ$ƒFÑã°Tø‡âøõKýeueþÑÕ:a0øáÞÁÒ_]À>fðq‹²”cNšŒ•Ju=œíUJT§Ê„®Ü½œ#Q/mV´Ÿ¢ê~ ðeŸÙüF‘ø–/ ÃàmÅZ–s®i'ÄRêZçˆît-?C±ñ xq,!ûfŸ~(K¹ü-9¶Ó–æÇì÷’,óñ_´Ã>-½Ñt'ÔÞÂÖÃÃó0Ö&µŸP†ÿPðö—©j¶sÉekgn~Áª]ÝØÆ.Ù ¿½.Õ_³Wƒcø™¡|Pñ7ˆuÝ].ü'áÏ hvV6v~“I¼Òt½2ëû2ÖöÇVðÞ¨"¸ÓLJ4ãi¬i2izì7ïP]SûJîkÆøßÄzî¡âk^#Õ]$ÔµÝRûV¾h”¤"æþæK™RÞ6g1[ÆÒíáÞÂ8”íAKà Njªx­Äü-žgxÜÃÀ¼<°XØUÎqØÜ"·áø?7ȨÐÃâ°Ôç˜UáÙQâ̸—3ª³ÜÛ ›`)æ1ÄK Nxc:ÀѯJœ`ñ5y£jqŒ’¢ñê·%'È«^„½Œ²„©É×™©bÑEý2xÇž|Yü9ñn?èô¢ )ß¿äx»þÁMÿ¥ôPÿÙxerces-c-3.1.1/doc/html/graphics/api-3-header.jpg0000644000175000017500000003030711363617747020437 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ#È"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ø^Š(¯õ ÿœp¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠÞð·†uÏøŸÃžðÆŸ6­âOkºG†¼?¥[n5-o]Ô-ô½*ÂHkËû¨-ã¾A’53œ)Âu*J0§ÊsœÚŒ!§)JRm(Æ1Mɶ’I¶ì]*U+Õ§F9Õ­Z¤)R¥N.u*T©% téÂ)ÊsœšŒcܤÒI¶ze¿ìëñ¢ëàU÷í-€õø!¦øÂ?Þxìßh©k‰åŽÕÒÑti55ñ$ÖKÛ[#¯A£IáõÕ%Kꋪ#Ú/Š×ôõðïÅŸ ¾9ëµwü§Ãí¢ |0ý’´? xWâ,qƶ÷µ—†õMKÆ_ü@ùG¹¸¼°ø“­x{ÅÖz|‘!Ó[ៈLd‹´#ùz³¢BÖºö›q¢ø‡L¹½Ñ¼I¢]§—w¢x—D¼ŸHñ‹wæòî´jÊûN¸MͶkg\œf¾‚ø¿ʬó ÁSÀVÁÖÂfM8ª‘ž3†3Œ?·É±õãVr”qu,M,m8FÃÖ¦¨¸FQn_·ø³áÃÜ—ƒ³¬¯5­›Pͨc2n&öŸW<£òiAæùv¶F3ËkPÄPÄå3«Ï_ƒ_\ugON¿P_þãÿE,g&!FHO‹¿O‰Ìì}•Iö¯Š>3üøÏûüÿƒ‰ü;¤øþ …ð–Z‰™û øXÓ¥´Ôu-*êËT³ý¡>7Gk{m{¥]Ù]Å< q)‰’pÙdÌŽ7^ÿþ Qãøcþ Oÿ³Ð~0êšÍÿí â_ŒW«¦ßßê~7Ô>>™ñÂIµ[Ífiõ»èáðþ¹ðæêÿR7ÓÜZéS_^½Á•î>_‡¸çŠqXNÍ3eÃø¬b¥‚ú†W—æ8 Ç-ŸÔ±ØÏ­F®+9Í)cð” —/«à¥IV§$ÝìÿSãü;Áfž%p¯ bøç Ä^püx–yã²,ˆól"Æ`0¿ÙŽYvG“c2ÜÓ±²žNXº5^º—» J?›_´ìÓñ³öXñž™ðûãÏ‚¿áñ~±á‹/iºGü$~ñ?Ú|7¨jºÖ‰g©}¿Áº÷ˆt¸|íSÃÚůØç½Šþ?±ùÒÚ¥½Å¬³øU~»ÁÁò”†ö`¾ ÿÖ‡øÑ_‘5÷|žâø›„ò,ûOG™à¡‰ÄSÂB¬0Щ)Î-Q…jµêÆвj’½ýæ~ãOå¾øÄ!”c1¸ì·-«EàëæN„±ÞƵ(ÔPÄÕÂÑÃaëTƒm:´°ØhÉ5û˜´ÛýðOü‡öüø‹àÏüAðoÀOíxïÃŒ¼+«ÿÂÒø-§ÿjøoÄúU¦·¡ê_`Õ~#Xê–?nÒï­n¾Ç©YYßÛy¾Må­½ÂIq¿àœ¶çÀÿßø¯â?ìñã=7ÃZU³ÞêÚÞuá¯éÚEŒBFšÿW¹ð»âxô» tÞêöüÛÚÚǶK‰bI›è_ø-nƒ¤øŸötÿ‚hzå§Û´»ïÙâ?Ú­|û›o7ìßÿe;È?g5½Âl¸·†OÝÌ›¶l}ѳ+|ƒû~Ò>2ý‡þ4øÅ>ñŒ´ß…òkšnñ7á„þ.ñ±à/ø*úö8uո𮵨jzE®»§ØÍsáýO³¶Õ´ÝF0‹s.›yªi×ÿ'‘çÜ}žpüø.Ä%‹Î©RÈ^S›a18ŠyFmË£FËÏñ”a‰ÅC§ “Éý”*ÕP”9"æÿRã¼ àÌû(á,ëâf0ÍrÍeÄ´³Í2\¾\A—añN¾'%þÀÊó ápXе}­9¬«K N3…yU›„~^¢¿Fÿà«¿ô?€ŸðPŸ|+ø¡¥Ž…ñC øßà hÖÊRÊë ðž½áý*ÂÐ ñÂ^ ¹Ñ´ëh ŽÏMÖ´ÝÊØ[éðÉ7[ñ§öyý?aIþü0ý¸>+þÒ¾-ý¥¼yá]3ƯÂÙ3Â~×`øW¥kO*˜ŠXz8šØšthá15)~[Ñ_b~×_²Õ‡ìóqð§ÆÞñÃ|RøûBx1üðOâ4ú%׆µMSK¶û×<1âŸÞâïBñ„¤ÕtË}sO |ÞÂe´Óµµ]Iõ?‡ß²ŸÀo†²­¯í¹ûv|Qñ×Ã?‚Þ*ñ3x?áÃß„Ú&‹«ücø¹¬DúŠ\\ø}|LÍ¡i:zY6²j–Õ®›w©Ýßé6/£>»ÝW‹ò*yN 9Ž&­|6e‰Ž/¡‡ÂâjãñyƒZrËéà5І6L>"ª©Ò– áñèÆIGÀÁøSÇÎ+Ì869DhgNY–gé>ñ7„äЭ´kÝ òø6[Ÿø’ÓÅv—^ {x4ÖŠïH>í6±§FßSþÝ¿³Â?Ùcáü«Æ>Õþ#k0ý²þøƒâ‹ ñ-ÿ†u è:ׇ¾üñͯ‡"Òôjš^—-ÇÄ]b!Ôî¼QvðÚé±I{Áuu}¬xŸ.öÙ­<~Äuñøl¿ ŒÁVÃW|· ‰Æb¡Š§UFT°ÂÕJž!:s£9Ò«N¤Šþq]ñ}HSËq´x'*Àgy¾'/Ìð¸ì5l«1ÆPÀÐÆe¸Œ<§K U«µŒ„' Ø7CKNž' Z„??¨¯Ðÿ³Â?„¿ðL¿Ùkö΋Wø{ñCãßí ?Ám_A’ÿÃ7>ÓmdÕ¾=Xi÷úv–º›â;­¯.®|S¬Çæ^j¦ (­Å¢iÞéû&Á=>~ѰŸÆ¯ÚcÅ?õo…Þ1ø]ñbã×>$×õÓàÿ…¾øoMøMâøËźLþ—ĺ¦¥ x7Å~7Ôìl´¯èéªê:f¦Cn%’àÞðbxy~'4ÄWÄSÁa8ޝ b*,-YÊžiG,ºªöTÔªODeûèFNT×4!&Ô_£ð_s,ß)Èð9~¾cžpM>Ê©,~œ1™ |®–mIBµgN”1ÒÃV§…«:j5åìçV)9¯Èª+öá_ì?û"þÚß>7ø‹öø±ñÃÅŸÿgMoÃzoŒ­¾9è^ ðwÃßXkòj¡uÏêZjÂÚ‘öOx—QŠçÄö©lÚiº¶‘§.©aªgÏØ³öý¬ï¾1þÏß³Ÿí ñ“ÇßµWÁŸ%ñkøKÃìÕãÙ´ûÍ/K¸Ó<rRI§Ë­ëz.—±¯kš5ÔÖ½§Štý TÓ¢º³‹†§‰\3Bž:x‡šáå•b)QÎ(ÖÊ1ð¯“Ò¯4ðøÜΟ²TÁb)bèÕ¡Zmʵ?léÓ“ÂâÕf—ÑëĪøŒ ‚ɱ+8Ëëc²,E Êç…Ϫa別‰ËrŠÏ¾·™akájá±X~XSÃWžjÐyŽ\ñŽ´W°~Ë?ü_û_üQøð¯áÙ/u_ˆ¼ÖÚ½ùž CЬífÔ5¯ë²Ç ³Úiú.Ÿms5Ô+ÞÏuZU´ú¥Ý­¤¿ ? f_ø'ÇÿŒþ&ý‹¾~П´7ˆÿj½|k¥hÿõý–|kãohÚ¦µ®x_KºÑnµOhQ\ÛhZËÚkzΨö?g²–K­^¶Ÿ¦j~ÎuÅÙ6EZt1µ1S©C³,wÔ°XœlrÜ­Î¥?í,ÂXzsXl'5íJMÔœ0øš”©Nž¼éü¿ xQƼe‡­‰Éòü5:PÌjd¸oíLÕO2ÏiFŒ§’e°ÇU£,Vc‰ÂÓ;B•*øÌµjxœn•oÉê+ì¿ØKöqð¯í-ûbü;ýœ>(^ø«Ãºˆ5oŠ‹¥ð•î“§x¯FÖ~øÇzåΛos­hÞ#ÒínìüMáÒµx®´‹Â!Kûh¾Ïrbºƒêý™àþ ý±µ/اâoÆ¿Ú+ÅüQñÂóáO‚ ø3¡xWð§Ã8¼Iâhô߆6¿ •,¿_žSS‰Ã¼R((Sž¬ª9Ê+•ÒŒêÖ¥N}œ3àçqVUë‡Ë°™úщàêÕs|ʆW<.†Â`qrÁb(â¹*ÂU!˜áéÖ”jG*УC ˆ­OòNŠúóÆÿ>þÍŸ¶¯ÄÙßö–Öþ#ëß~ø¢óFñ¾§ðZÛÂÖ_µ'_ð~2øe¬h>7šçÂöo­Ãâêz审uwž—q®ØY]OªZBõúgÿx×öQðOÇoxkZÐjmSö¢_Ù“áåÿÃ|.ð÷ÂkßÙ¶ÓáùøÝñÊïPñ¼7bÓâÌ/†Þ×Çvv©áéÇ„ã3x$Mnf}^DãÅqÖ–wÂYV/ÆæX>-˱ž7ÂÅýZ–šÁJOe*|õiºxØWÆNS£, F¤¡YÖä§ìdžçù¯ ø“œbó<·$μ5Ìðy^eÂù”Ô1øœEhæ2ÄCë«ìpÓsËå‡Ê}ÌE ãõŠpÄaiáãV¿à…ô§Â›ŸØ[ÓÅßµw?i«^øÒëÃZÂïÙ³á÷„5­v}- OÔì|M}â¿êh‰ý§¨I®é±èÖšmÅÝ’èk»bÕì„DþØ¿²À¿†³ìáûd~Íÿ>$ëÿ?h¿Ýø KÐþ4èzV‹ñ¾9·³ñeÜz&²t;=3M–áåðŽ4«ØcÓ"´³Ô¼?ö~¯®ÚkV3§«ˆâ¬· ›a2|]Ë W0ÅÏ/Àã1v*–[ŠÇÂ…\OÕ(ãgMÕ©F…iÑ””h×öSTjÔ’IüÎÂî)Í8WÅù_öFe€Êð5Ìpç‰ÎðyTqpµ³ ÙU*²Ä}_ [B8ØÃŸ‚Uc,] 1Rqüâ¯uýŸ?fŸŸµ?Œõ?‡ß¼ÿ ß‹ô ^øËRÒ?á#ð—†>Íá½?UÑtKÍKíþ2×¼=¥Íäêž!Ñí~Çì·ò}³ÎŠÕíí÷áF§ûx_þwûFx¯ÅCöª²øMiñáu¯í«x*ÇàÇÆ…ø»&µû2Ûê6ÿ›Äöóø*_…IâýGÂçM‡â ¿‰¢ðåÏ‹åt]eô¦?ÿÁ%¾ø3ö·ý«~=x7áÇÄïÛ/ödøyiðÇâ•ÿ€üUàŸi_ÿh[ŸAñ#ᾕá{/ëš›âMo;Cñ%Ž¥¯[hÖ«¥Iã}ÒóNqi¥Cÿ%_ÄYTÊ8çK.­”Tá n'fi…Äcp5凥€«íkað•0x…VO®•w8ÑTqYj³¥OôÌ€©fÞ,Vs…â«Ä¼6_ fL¯7ÀO_NX|6'1£˜àëaãO JPÍg…px©bpu0½…,N'ò¢Šì¿`ßÙç\ý©üSð«àÁU¾¼_{®u_ qÿ懦êZ¾£âox…ô•{qc¤Ão=¼6£Ï¿oìý2Ü>¥{ oúqðãþ (ÿ.d='öŽý¬5_Œ–>+ÿ…g©|}Ó¾øRý—toˆßÚ'A6Z½¬ëãÛm?ƒ¥Ük‘êSxb×d·Óø±thfÕ“ë3n-ʲ|ZÀ׎?ŒŽ ûK‡Êòü^cS—sΚÆâÖœý•)Ô§V4aïb1g‡¡UR¨ãð9„]ıͱYM< ¯-Îñ|?G1â Ç/áèf®Q¾OŠåXÈÓ«†–)J³ÁàjbðÔ18èTÄPö¿˜W¯|}ø)ã?ÙËã/Ä‚a·‹Å¿5±¥j2Ù<’XjVwvVº¾…®é’J‘K&•âQÓu­9¦Š+…µ¾Ž¸-ï"¸·‹õ3öôý‰ÿ`Oø'ÿÅŸZ|^øÑû@Ý|:ñŸ€mµ_ ü8ð5·ÃÏ|~ñoŠ­ÓŸa1˜Ü‘e¸Z¸ï¯ÐÁRÁרèûß¿GB­9IFš¤ªÕ«R•*SšæÈ¼%ã\þa–eœSO8ÅÒË*å8œÖ¾c†¡íá‰ån4ëåxªU£Ož³ªèQ¡J½lE*rüU¢¾óý½ÿe?þÌìéâÿ…ž1ñW‰þþÕÿ Gů„oñ OÓôßYXZi¾Ö5Ä‘é0Zi³êzv‘ãÏjO,[nÕo,‹âöà¯[%Î0þ[†Í²Ú’«ƒÅ*¾ÍÔ§:5aR…j˜lEÔª(Îl>"Za%îÔ§$›Voæ8³„óÎ Ïqœ9ÄXE„ÌðJ…IFZxŒ=|6*…?.½Á¯ÙÃVwöiá½?HÔüIâ/‹'—Âþ Ѽ%¥øŠ÷MÑ5­wH³¸Ö|E ½ÝôVú^¥káýKQhlKK_˜ÕÝ|Nø·ñÇÿ³ŸÃ¯Ù:ÒÏÁ¾ø9ῌÆ_K¦[kvþ-øâYôètÍ0ø®æãRÔtNN‚=H‡OÓü9ŽœK¯í{æ[ˆþwŠ2ìfq”ÔÉð²t©f•¨à³ã g³\œ?K›åT'A×¥‰Ï°pRÉÕdœR¥‚ÆJ«§6£‹–_½JÅÆqû§öqý­ÿà“_³ÇM#öð'ƒಚ×Ĩ¼}©üE¾ñŒüû/ëž#ÔüK ݦ½mâ¢êúMýî¬ézž£§ß[é×v·²Xje¼K™VpÏø+_Á]/áíÁã/x=b›ágí[áöœøw©ÙÆË¦]j^,XôïŠ6¶²²ÆÒÜÜx¾Þßâ ☎‰šxf.Ì©ù¾`ô¯vøýûUüqøùðÃö[ø/âmáMÏ„?fõ­/ÂÞ6};ÅöŸe𶷦ã\øNïX>"Ôü'¨xy4û y60øSC¼I¼ábÚ´‰£öÏš§ÁøÜ£Š²<ÿ,Çãó_TÆdyí<× Õ#”Ô‡Öòú˜OÝSWÁftUé'Íìq¸‰S²RŒ¿WÅx»Ã¼sÀ|mÁYÿä¼)_W ż-ŒÊ(â½…n)ËcO ‰ÃcÝJ•Uf™$~¥K¡ jxZjY:.·ßðZoÛŸâoìÑûwü9ðÂ?ÙÇö!ñ×%ý”ü)ñËã_íðF÷Ç?|/×ÅÿŠÞ>𗎬|Ec.™á{ Û\Òô4‰à¶×5êotò_Å ?ÎÏÅ߈¿j/Œð¿?j¿Š—_þ!YØ+Ã6Ö6ú7ƒ¼¤ '’=3Âú”z~gÜO*Çmam$÷rÍ©jsjz¤ŸmO[ý®ÿiß¶ßíAgûDüaÒ>ø~_üÒ~ xwKøiaâÍ*9t]+ÆÏŽc¿Ö¬¼Q¯ø±ŸT}kÅž#·{«nFÒáÑ!]*;¸ïîî|Z—‡|„á|‡&Xì³Oˆð˜ªã1°kV-ÍÊ¥<>&|Ζƒœ({:uSœŠk_|sÌøË‰sÌ/ gõåÁ9¼0¸šxhaã„­SÛaTjÑÆÃ•Oë£)Д¦å^•9ÖÃÆ·±©Rývÿƒ‚ÿå(ÿ ÿìÁ|ÿ­ñ¢¿"kÚk¿Úwã_í·ûPYþÑ?t…¾—ÃÿtŸ‚ÞÒþXx³JŽ]Jñ†³ã˜ïõ«/kþ,gÕZñgˆíÞêÇ[†Ñ´¸tHWJŽî;û»Ÿ¯c€2lwpvA’æQ§ v]ŽUZj¤g9>J‰%8ÚJÒHø¸»#㯳¾(áÜLñYNkG_ R­)Q­öhóÒ¯FWt«R—¹V›o–I«»®ßðXÿù!_ðA¿û6?‰ßú¡¿ešø3öYýŸ¼aûNüvøyðwÁúUö¡/‰¼C¦¯ˆï­mæ–×Ã>‚öÝüQâZxÆË=;GÒŒó™exÍÍÛZi¶žn£}go7Ð^#ÿ‚¦þÑZ‡ƒ~ü9¾ý”ÿàœ_<1û?|9Ѿ|7Öhÿž9ø‹ãOZéÚá]JëKÔfø„ú~“qâ]Ãÿ„–mÇEY½°_>É,íl-íüÃÇ?ðRÏÛëÅÞÖþ|9OÙOö8ðWŠ¡{?Øçàõ×ÃwW±š9cž¬ê—ú¶±¦»‰¥ay¡k>¢ Ò¢ß$2Iü§à8ã!áÙðæ%Ëéâþ¹ŸTÃçXœâB®q˜f1O‡ÂÖÅV©†¥ƒXW*1­V“„ñ4!/iÔøëáñ?q®iÇÒ¡•à8g„òÜÏ…èd¸§œâêd8 8lVbêV† GRœéKN–6¾ŒjX ]EúƒöÝý¨þü_ÿ‚ñxcÇ–š®¬|'ý–5_Ùïொ²„[‹H|âí3\ðþ½g˜´¶ŽÞ=kþ6ÖVÖÒÛÙXYÚEÓCƒ±ü/ˆáLoÑ£›G‡øoÂø¬+õ Øœ>&¶_‹Žc†­ìq!‰XÌxš!:8‰:Uy¨Æ•^|ÓÆ>ñ^)ðïãëp¦Žó܇?ÉxŠž®aC_#|5|»4ÂQ«Gõ,É©%znrÃN§‹¦á^¥j?@ÁAµË†ðI¯ø%¨µø¿â(øŸ Ø\þÖ‹á¥?Å™õk‡IT\[é—úWÅ߇Ʈ޳ÂÖþjØŠÿüGE—â‡ì/ÿ`øá sðÀ^ñÇÃÏÍeºM*ÃâÅ·ÃχöZ,Z¬P£ZÇ/‰>üJŠ).Ú9ÓÜDä½Éÿ‹ÿ~<þÔ¿&ý¡j/Øøç⾇<)¤xNþÆðO€ü;n×-o¢øSGT†; ¶Þ¢ 帻»Ô5­GR¹k´úƒàOíÃûB~ÍÞ ñGÿ†>ø¶éu=wàÏÇï/Äÿ„Ƭ‚5 ¿.©¡ê¶r}’Ѧ›F×,a»šÎÂ}NËR}>Íaå¥ÁyÞ‘æ´~¥‹ÏòÎ,Ïx¯–)x‹ÄÓêÞ?Ô"Ó.u[¿kž½Ñl­¾)ø³N³²·ð·‡^ÞÇJð}•­Í´v£ý£—âÚwãXý…¾-þÁ¾ Ò>ÿ´øÙñ@øƒã/ø¢ÃÅŸðœé÷Z©ðç^‚×Ã:Æ“¯ÿ`Z[ɪ|(ðœrêø?V‘ì/|D‰{ ÅÆ›6óX~ â7’à ‹¥‚Xùx«KŒq¡ˆoý˜ø’9­iÑ•H©¹ûgN…DªÞГR¹ú•<;Áñ·ãpyÆ&y&Wà†/ï¬âp³Ž"†oG‡éäxe„# UkaÔ劧c*rU¡ $~˜ÿÁ2ìm´ø'Wü–ÃGŒiöÚWì_ªE`–Å¢kaoðGö§1~Õÿ>è¿ õÚßá›ü*ñÖ¡ñ NñM忉áë¿øçÂ7מ»ð߈ôxtÝetˆþ#žÖãXÒ|Ib5{]Y´æ³‚þÚøýˆÿkŒŸ°N¯qãσú/Ã?xþçàÜ¿ žÛâVâcÁÁ&ºðž²×‰…üGàíh0Ö¼¦F·ñ€Òç¿S§¹måµèâ γ/Šôp´°Î|]dÜõã5‚É2ÌeˆvW¶# YAJüÐåšÒGÍðg‹\+•eßGe™fxÅS€8—‰±\]OØÖ«VÌøƒ;Ͱ˜Êqæÿm„°ùµ':·æ…wˆƒÖoêïø6ïŇþ=iúc\höÞ+ñ¯ÀoŒ¾øq&¼.œ|qŒô¯Ù¤ñÃ=µä° ÂÚ÷Ú¡°¸‚ök»† c.Xq^ÿ‚¢~Öß|o¨ÝøOþ ÿÿ˜ø#ñCÀÞ*ñ†ƒªÉáßÙǾñÇ…<_§^jÞñ¤º—†>%[^Øê’¼Z®‘ªOk¨¿²žx&škk—Güäøþ3ø)§x÷CñÚŽ< «I®è¾$ðÍíÔV¯¿w­i—úeëÁisÅ£Mnhy¨èD‘rÿ¢^;ÿ‚¦~Ö>*Õ#×®~ÿÁ;üiãÓoiÏLj¿³êŸn’Ò×QÔu„ׯ<'}¨ZAik=¯„ô{ha‚ X¬c…ÌéÏø.x®$Æg2Ȱ|GÎ2Œ]‹ÁâsJÙel#/–*1á ”±y~7‹tñ4¥V¡V‚•:u¡ˆ©uð§Œx.G›p¾‹hpna”øƒÄ\S’çµò YþYœåy¶*Õ*pJUrüë‹ÂÑÅ娷:T18jîŒëaêáéJ§sÿw×|uãOø*·ƒ¾&|G–Þ.ø½ñƒö¢ø»¬iÞM^ éÄ„ÿüW«iZ®»-Ö­g¤Ùëz–¦še¥ö£«][éæÕ.µ[û‘4íä?lí“þ GñRýaAyqÿñ]œ×ýì–¶µu¼ÖÐ3Ï8e¾»t4îNxÇ“þϵ?ÇO¿´tµž¡wà/|g>0ø‡ãK„Õ|)s¥ø}Sâo‡üA¡xŽ9<=áM_Ã¥º·ŠµÍSO‹L¿Ò-l¯&³·ŽÓû2ÈXËæŸ ~-üRðÇíâ?گĖ^›â¿ˆjM_öª—FÐí¼E'ÃØ¼g«xæÃâ<š4zuþ¥oâDðÂx’Þ{TÓ›ÄSê«¡˜`oI~^ù{ëðÆc>!Ìó8|=+ì/ á©GÏìsÜÞ³ œá ¼5:XÚ§ˆ” 支N.+æ¨ø™‘ÿ¨xœ§0Î3=ŽT¸çW‚«…¥™ä•°œ7JxÊyœ^!â2lM\N žj•GFp«Z5!Uý[ÿ^'þíûy œû/;f?‡Ÿ©gè+éïø8&9þ }ð¶ñcsisûxB;{ Œmç’Úã ³GØòäx¢º¶’DF,‰q° ,e¿->4ü[ø¥ûIþÓŸ?iß‹–^Ò¼SñšóÀ;´‡6Þ"±ðý…‡Ã¿Øü>ÑvØx›R×u[˯èZ%Ö©T†}jMRkO°Ø½¥”?Bü|ý¿¿jŽü?ðCÅý•þ ·†|5£øKÃ_>%|0Öîh¯èZ6½áíkû7Â_t¥¦Ÿk®Cá/Dñ3Â*º‡ˆ4Ÿ¶gQÔoïõ¿…óÜ¿þ!N&8|6"|'ÕÈ3Ì:Å*s¤³ ·%ÂVÆáféÊž**Ù\ÜèóS©^HºM´Ñïg~%ðVy›ý#²ÈfÒÂa|O¯g\)›ÖÂÔ–®' ¥™â#–f<’öØ ¸ÿíeF8™S©C _ V5Ú¼¾œð7ÀÏÙCöný´?ø(7í៉m>&|N—á_Á µÇ𕞹®Ûßx¾Ä7ŒÃN³‚-wW׬m¬½wþ 3ã|Gÿ‚!Á;ümðëàÏìçàÍoööÑ$Ñ~ ÝxÿZø£sàøm/k½.íçñψ,ìu}e¼I¨Z]x¬¥å¬'Hþßíôèd†>~ß´OÁ?ºßÀ x[öyøÅðÇR׉4´ÿÂé~*x3ÚÿÚc¿χl!Ö´c¨[êð[k–QêÖþ!Ѭõ˜æÔ­th/ï¯næÏñüköÞñ¯ìïñ/à/ijû5ü\Ò¾"ë+«évÿ>Ϩiÿ¦HE…ÏÁôÝSNÑ|á¿*ÛQðl‰àû»_ê1Ésá«M&æââæ_+1áN2Æñ4Å?íe\qO;À¹ñ2– ðï±Äá0ø .B¨,¶†?Gêbqõã,eyÑ«Oˆ©KR4ýÞñÁì‚!”à^ Ìsÿ ±¼'ŸÔ«ÃzÙââú³Àâq–7‰ã:™¥^Í1X9O€£9åØhUÂÏC_*§ WØ–ñÉsÿàÿÁA ·çž?ÚWáåÔÂ,©mÄ/ØÚy®3,1Amq4²8 šG`‘¹·ÿúÉæ|Lÿ³cñŸþ­_‚õù£û6þÛ¿eÏü@ð?ƒ4ƒ<)ñWG³´ø‡ðŸã—/¾!üñF¡™³ºšûÃPk¾Õ͵լ×:|Ñ `Úê_b]sNÕÿ³¬£…e¯Û«öŠý–~0ü^ý¡üà?Ù¾ËâOÄÝ3Çú%‚-<-ã›o‚žÑ|iâŸxâÛGð߆´x{^д½ ^ðõ¦‘£éðëz…®™á$KŠîõc¼‡|߃ø‡“x¡’a°ØZ±âÌu\ã'Æ üC°ñEÁ['Rã=ÇÆü;×4¹ìëGâ\/¼5½ÎèÆ o—S³IcûOÊ& +?àSøÓছà‹Ý ÄWŽ<ªM­hÞ%ðµýå­Ö•ªÇ®Þêúuþ—~a²»ŠâÛÏ„—0ÇûÅ’%5žÆEø‡oâox¾Æ;©#ù^þ|@ðݤÙf–$¶ŽÎR¯iåEÙÿÁÂVv×_ðT¿„òÜB’Éaûx:òÍœdÛÝ7Çߎ6Fxý$6·—0矒gÇ8#ñ§DѵѭøÃÇ8ñF¥ã¯‰_|Aâ¯xÓY–Iõ-w\Ô®®/®ç–Y¤–Wwws;É#ïžiÊÅÁoÒ_µßí;ñ¯öÛý¨,ÿhŸŒ:GÂßËáÿ‚ºOÁoé ,ñ®‘ð·Gøwû|9ñÃïÏákiþ4×­|Càÿø2æëÅ’êÚÿˆt=Râ-?áׄ§‚m×Âñ¥í׈å’Êx'Ó-lJúÉqÜ?Ãx|¯18âéf9ö&J•EVŸ²Ì3ìË0Ã54’má±TœÕ¯ ¹Aë~_ãŸä|kÅ™>sbe‰ÁC‚xO,ªêR•´qÙVZ°8ÊiËXʨ·v¥Jt柽eâÔQE}øÀQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEÿÙxerces-c-3.1.1/doc/html/graphics/install-3-label-1.jpg0000644000175000017500000000452211363617747021321 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ x"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?û«âÞ£áÝÇ5¿xIð…´+ïë¾"ñN»ukc¢è.‰m}ªêZ®«}{siie§ÙZZK5ÝÝÍÌ0ÛB¯4Ž>oû|RøaûWÞü!ø“àWÔµ„~.ø‹«ÛÇ}â i7:߃>|E×|1âuô;¹®&´Òõ;ÂƵ¥ÙëÓP-Õ’ëú~~×Úu—¦|Sÿ’ãoû5_ý*zæ´ëÔN­¡^}ƒQ:vµ¥ ¡okpéeâPðþª‘-Ü3Ç óiZì^ĉ{§Í$wúuŦ¡mmuÍ5Q¹FíU»×NU&ä­m[Ó[¤¬ÕŸ5×ítUyá(*uc¼`¢âù½¬©STê{U/v0JJPTää䤤¹\gôˆømðÖÿCŽïT/³ñ¾¹ðwÆo†“wáí;Á>ºµÕ¼Ysá!4wЧԵ=?ÄÚe§…tÿ²G©xû ãYP²½×­î Ñmw|'ð‹ákjßQÑüUã øóSÐäñoŒ´O‰~³Ñ 6¾µÖþ!ø2ZøûľÖüq¨Eö›kÅ1·‰t-.âÿGM&ß_³Ö´šçøƒâûí?7WÏöǃ4?‡×û,4È·øCßðdéþU’}‡Ëÿ„[Eû]ýÙµ=WʽþÕ½½þÙÖ´:Ÿ?çÕ¼;¬Ã¨è:Lþº¾½Ñ,<7àoøWÃ]ê–°Øj×7~ð׆´¯ jÓk}µ¾›¬É«è÷Í«éŦê&êÅÜ4é&›‚vqû1wJJ÷»¶±M·¿3µÔUžr¡i¨â¤ªÝ{Z±är§.OfáÉ(T”cß"§wNueÍ^øEðÁ_u›íGÞ1ðï…|AâMz×Ãú„¿¾x~/ øN¶MBk›Xüa£Ûk?uOZÉ+kš7„t¿ Ü5µ”s-ìƒÛéïº.Ÿð¾9φô»ÝzwË)Ñínµ+¯üOøètßbC]O{» o4IëÛ[‰dm¤iëÈ|/ñ·âGƒtÍ#HÐ5}& =ãSŸG{ÿø+\Ô4øµ¥™u. _]ðëâãû[ÃMzÞÔšâá¯tÉÚyKã·Å/˜ã‰|A, Ÿå­l´ËI`…ºUÎào³Ïke ð.ey<’¤2"k“&µ®®§¬Áübt’V‹æi©;En¢ô³é%¥ÖÍù • lêɺ°TcRŒéCÚÖrjœçF|É¥í(É)r¶œâœ“nSWhŸ³÷ÃK]GáÍω´_ÛZ]üWÓ¼âÍãâ§Ãm[SÕ|;¬ë¾(Õ¯tŸé7ú¿ÂÍKÂɧióêÞñ-æ«©j:~§-­¯ˆtˆ±–é_¼'â?èz¼qê¾ðÞ±®üjñåî–[@Öõí/áÇí@¹Ð´Ë¿‡t­WQÖuZoø]®®„>[ëm?[oÁ4:šž.çöø©uqeru­Õ´ÿ?‹m ÒüðûG±_¸Ó.´mJíôÝ'ÂÖZtðkÚeäÖ¾'Ón-eÒüT¢ñ–©-­¬òº7Äïh3øn}7V·E𦉭xoG³»Ñ4 SIþÂñkº^­¢êš]æ‘â;]Rç_ÔþØž"²ÕL¶òZÙû™¦[Ù¶èh”º»EJׇTõÒ2MhŸ6º·"aC0´¥:ðu-î¥V´©Åòâ6U!+>yÑ’›R”TZŠPŒi¿g¹ø[ð¾Æ-{Åú‹øöËÁV¿ |ã½/ÃÑk½ñ\>'ñ‹´ÝÇÂzŸˆdðÞ›¥\Yê:·ˆuû]j ØÝZiòiz‚èzºYÜYê~EñkÂÚ'‚ü}¬xwïª&ÒÓ÷pÁ®\Ú^êúmαáZÔ´]BúÂÇK´¿¹Ðµ=BóF’ú/K¦ÃíM¦iòJöpåë¼a¯Câ+}[Y{¨|W¨ø{T×#ûn·3øNÃRÒ¼5mmök8N—¤hºn«uc§èQ²ÐോM…tíš6Ž,q¼GâcÅšö±âo^}¿[×µ½WT¼ò-m{ÛÙžyÞ+;m¬làå`²±¶¶²´…c¶´·‚Þ(âH—³jÊ ;§{[ù¯×Dý݉¦–›ôЧ‰…E*•ÜãÉ(òsJI7?-¯~YB²s“r”gõ”’Å¢Š+>Xö_×ü7çÝœÒîÿ¯øoÏ» (¢ŽXö_×ü7ç݇4»¿ëþóîÏ$øî øGã€?èþœl¨§|uÿ’IãŸûCÿ§+ÕÀ¤¨Êßóñÿé>‰[xúW×ý’Ÿþž®ÿÙxerces-c-3.1.1/doc/html/graphics/index-label-2.jpg0000644000175000017500000000401011363617747020613 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ x"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ýø×…ÏLj‘ꚤ.žž Ö..õ;„Ci ¥›Ý³¼fXw—òDH‹ vyF²9XÛøE‰ã/x&"æ Þø²ÏûB}BÐF%ðæ™«3kwVJ×›"m&ÆòåíÙ¦Ä_»—øñ×ü}ÿ’ÍñþÆkßåyž“¬j:áÔ4«²^=NÀN"‚f[]cL»Ò5n"•#–[ 똢¹VæÎWK«9­îá‚xþ‹rìÏ7á^&ÊrLd2üç4áüç.Ê1õ*T£O™ãrÜNŒjTq5iC Š«J´ªSÃשÁÊjÉ(KZ…:ôjT‹•8U§:‘I7(FjRŠM¤ÛŠjͤï«[ŸEë1øÒO ø1¤øk¨xëÅzuχ¼sàŸé¾ м=¡A>­¥kÚ}ô°øcÀº–©4½­õÕ–»¤G&e¦ÚÞÛ^ÜÇ®Á4|Þ±ðÓÑë^²Ñ æ¤5]zhÚ?ć>3½°·Ñ$·Õ®¶‡a©]ZxKÐt?†–ž)’ 9´9X~)øÙïÿ´gÔ4»ÉÛC´ðܰj𞣦]hú}ßÛtë[ÝûD¸Ò/¤Óg6öòÆ{ý:-m,®`´´µ‚ÍoÇž,ñz„ZÖ®÷©ªÿÂ6/ÃZXBÓ§„tË­#Ãñ¶µ…á†ÊÆòád‚Šû–KýI.ïá†ê>l/†ž5ã¿ÕªšmcÁ¶^ZS¦x–âöúQylÒIgu Õ’y¾¡ã/êo¯É{©´ânËÄZÛÇmej÷z¶œu6±š6µ¶„ØÛÛbøÅ§iæ×NRÖÇì„éúÙSÄ~/Ö¼Vm_Z4“ڽܦóNðdžt-Bú{æ…î®u­KBÒ4Ûý~êY!Y~Õ®\ê1Ë%̱ʒ^]´þÿp'Œ™fsÁ²Í8û ˜ðþY‰–7Š)×Ì3|fq˜b?ÔÎËiàpx<^_WŠ2î-«,gGÙP˳ê9½³ì>9^u±Y|éâ0ŽgZ-FœiÁ}b¼ï%Í)Fj„è.h;¹Òtß§3EWô!ä…Q@Q@yñdðçŸÿ YÿÒˆ(§|Vÿ’uâïû7þ”[Ñ@ÿÙxerces-c-3.1.1/doc/html/graphics/stdinparse-3-header.jpg0000644000175000017500000003137111363617747022044 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ#È"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ø^Š(¯õ ÿœp¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Šûþ ÿð“áïÇ_Ûà?Â¯Š“,~ñWŠï^¶{§²Mhh¾ÖüC¦x]î¡– ˆSźΓ§øaͤÐÞ²êå,¦Šé¡‘xs<†S–æ9®&5e†Ë08¼Ã0ö•¥C‡©‰«Tî¹êºtä©ÂëšvÕîzÙMŠâ<÷$áì èSÇgÙ¾[“`犩ìpÐÅf˜Ê8<ñ¹eì¨Fµx:Õ9eÉMJ\®Ö>;¢¿]ÿmÛ÷þ EðöªøËðá½ÃOÙ'öwø[ãmKÂß þÚþÎÿ |Káω?4Ù^ñì³ø¯Â÷2êoŒôd°Öä›Ã¶™e¥_]]øoÊ]GBÔ ~V|@ø•ñãÄßüJøƒ¤ü'Ð/—k¯jexé}â-O^Ô vñÝÃm‡ÃyÞqžPÂãñy>–fxì'ž¼Ö´£YR8º *ÁQ£RTªNr–¡ Òtý¬¹£#ô?|?Ꭽʰ\uW:âl›0X ë#Æp¶##TZæ…ZÙ~aý­šÑÇB_eûœM,·ì*J´ðôçJtNnŠý8ð¯üÃ⿊|GÃÈÿh¿Ø›JøÏqö¨í¾^þÒžÔþ0\ßYZ=íÞ—oá_ i~$‚]BÚ¦{ˆ—Tò­ã†Yçš;d3×ççćž0øKãÏü3ø£Máïø\½ðï‰tYå·¸{ RÅöʉsi,ö—vÓ#Gse{i<öwÖsÛÞZM5´ñJýÙgä9Î&¶+Íp˜ÜU 0ÄÔ¡F¥ê}Z¤ù!Ч(ºØiOÜŽ"´¢äÔ}¥åþSˆ8 ŒøWƒÌø‡†ó\§/ÇW©„Ãc1xw<±”¡í*`ªT‹”pøØSNrÁâ=–%B3—²å§7*ŠýMø‡ÿ‰ý¥~øúëÂ>ñÏì÷á/ i^ ð÷ŒüGñ¿Å/|ðKÃx«^ñO‡ôOjÞ/ñ¿…|7¨ÏâË«j—¯£èžÖ¶™.usu¾Ž!æÞ/ÿ‚fþÓ¾ øÇÂf×À i?‚âqøÇÿ Å…—À«O†ŸiKüw©üEÖmô»}'C¶Ô%†ÅáÔôëMnyîlMŽ‘w¥§Mwçáøïƒ±|ŸWâ<ª¢©…ž2ëPŠ• q„ê8¹ò§VêÒ©,:ÿhTêS¨érN2~Æ7²ïiõÎâ:ÇG,«|º¬Ý°â>‘¨ëÖ½ã-'IÒ¼C©^¤VštR^v¾)áÕ–aó—œ`c•b±TðTqò¬£†xº•Þ8yÔ••«Q©ÞÍÑœdªòrÊÞZðóŽŒáhð¾q."Àeõs\NM $çŽ]G tñ”¨FòÄЖpÄQžÛ,E9Ááý¯4Sør½×áGìÓñ³ã‡ƒ>0|Aø]à¯øIü!ðà ã/‹¿ü$~ÑáðÛé^'Ö×Rûˆuí'T×s¥ø7Ä—_cðÕ–±~?³|“j./,"ºúWâ/ü_ãoþø¿ãG†> ~ÏŸ|)ðÕ€ø­iðâՇĭá`X„×Mã{ =2ÆÚÓû6=Ój‘éWÚ¼Ú}”7:­ÔQèöwz„MÿÁ8ÿåßð[_û3MoÿTíS^q¾Ãü÷‡1yviWšd™uXTöµiQžeåy}zxŠ4êá«Ò¬°xùWÃóÊ ÉѬãV‹pŸÝpƒù–mâOð?eùç Ðâ Ÿˆ³\5zp¡G^ŽWÃîo‚Äà«â(bðxœ+Ì2ªx|b¦§/gNUÃbR«KñjŠÔýš~üDøÞ>|1øUáMSÆž9ñ?†|9k£è:JEçLbÐmgººº¹¹–ÞÇMÓl-£–ïRÕu+«M7M³†[»ë«{xžEû¯âü—ã'‚~xãâ'‡~#þΟ¡øQgý£ñ¾2h¿üyð‡NF™.¯¼áËKFÓ­¬ÞåµÓnõceok{}p©§Ø_]Û}.;ˆrL·†Àæ¦ ŒÅû/a‡¯^©/oWØP”Óº…zÿ¸¡:®œ+×N)N¢q>À\[›QÎ1¹&A›fùfI[K˜`ð5gA,½{\[‡/3«S †pÅã(áÝz˜<-Hâ1 $ª?€(¯«ÿc¿Øïâgí·ñ3]øUð«]ð'‡üCáÿjo/> ê~ Ò´Yt]+ÄðåÅ­­Ç‡<1âËçÕûÅšt°Ã. £ZCzï{ÑÁÏÈ–…†«iþ—}g©XÏæy¶0ÞZMåJðËå\Û¼ÉåÍ‘I±Ûd±¼m†V²Žc¯Æe´q4ªc²úxJØÜ,[ö¸jXå]á'QZÊ8…†®éÙ»û9^Ú_ÅÄdYÆ'Ëxƒ—âid¹Æ'ƒË3)A}WŠÊþ¯õú¦›ýæëX~xÍEµQ8s(ÉÆåú—ÿ|øðö‚ý±ô¿ |e°ÓÑü­,si5ñF…¨xzÇNÐõ;MVÆÊËXÔüQs¤È%µÔ"ðë[êV÷Z[ß[MÁ|Bÿ‚ ÿÁU4߉ž6ð¯Â€¾𿊵ÝÙ/Ä_³WÃ?x;Ãzn™¨ÜÙ[è÷ó뺟‹¯¬$µB–šÖŸât²ñ™_Å8÷ÄX®ÈòŒ&c˲ÜižeœK'¦¨cªâ)aစ<³4­Ž¨žo9SÃapîtiÏíj¨/ÓøsÂÜŸÀ”|5Ñü_ñZøƒÃkÿ¼%âOø‡âo…`Õþ |Ò•u›”ñæ©oâSJømà› Bý‘¦Ç ÜwsO/¸ÁR?e/„²·Ç§Ã_‹Ÿ³&‰à™|WðËÂý›ô_š‡‹ÿi¿\ø‡áNâ[[ø‡ð×ÅRëžðþ¯¯ØÝjš&¢þ0ñ_ØøÛÁÆÖÓMµÕm,mzçÆM#Áp¦+ë3œnXó(ÁRup´ÔkP¡õYb`îñ•w:rT½ƒ§J£©Z•GJ•O&—„¼SŽàÜ÷²¨æü1‘gQÊ+b0¸‰Cˆ¥*œCÍh`+S„ÞŠ¡N–"ª±ôëbi:x:Øjx¬Nó.½×@ýš~6xŸà'¿iíÁ_nøðëÄöž ñ—ÿá#ð•·ö?‰/®|#ik¦ÿÂ5y¯[ø¿Pón'þÇÖšO‹üâ­yôýo@¿¼Òõ;8nÃ4WšuíÕµ½Í´±/ÄÜy€Ê±9n[•ãò¼^k_Šx#ÇàªÎujPÃæyŽ ŽTÕÔ’Ça¨b#QAΫÃJtç‰ÃJQ—Öx[à~uƳÅãxƒ*â,Ÿ†êðwg¹>‡ÂÂj¹†Y–â19Lë¬M ¾×+ÅbhN/—êo0§Fµ,aJ¤]X~Ñ_±Þ×µo Áº_·Æ¹¡Ýý‡T±ý§>ý–ëȶ¹ò¾ÓãïØÖÎÜ^Cqnûíî&÷¾ÝûÓlЬ¿~Í_±OÅßÚ¯ÀŸ´¾ßxAlÿgO Xø¿Åz¹wâTñGŠ-µ=ÆúÕ†à-3@ð¯ˆ`Öuû¸¼ªÙ[ØjwºSj7ºE¼WN—73YúX1ÀU§ÄøœÍRÊp|5ćjâëâ}¥,DçG)–&¨Rú»ÄbsjXXÐn²Œ£ºíTq§ó™Ï„yîáÄò9Õâ\oˆ¼%‹âŒWƒÁJŽ;òÙæU3,#ÄW†6–/ËÞ:8ÈN…J©â(¼ /«Ó©Šù Šýþ •ñâûÀÞ:ñ7‡üwû AG ެ3®:Ê09Ä8|Eð÷Ã?|1ñßìýð†Á,4ïøª_K®i:Ï|1áb÷ZS].·s¹¥k:UΟmw§Mgµ¼söýœìnÿà§?´ìðÓÃZ]—…¼a¤j^‹[ñ6“á xÃþ&ø;¥üi×lï¼EâF7HÓ< o/ŠtÌ]ßµÁ²Ðmm"Š]Nd³sŸºyÖ'#âL¯“W£‘Vâ:XÜq,×,©–a1ðØÙVÄbr¼›„«†jS”já)ÒsœkþîQ=¾&ðs …È*ññF'°Ø-¡ÁÎ__†kðös€â m〡‡ÁÇ5ÎðÙ¥ ]xK ¸ ñ'ƃð¶ÿ_Òµ¾ x[UÒcñ‰¢ñN§áËë/ÿni¾›ÄòM§Ëo·±\U?…ðOŸŠŸþ ø{öƒñ—ÅÙËöpø3ã?›ÀŸiŒ:WÂíÇ0°c׆¦k j[‹KÔŽiôÛ«èl!Õ,ámCN{­>[k©ð|gÂË ,oöæáV"HÖW8VÅT„ªG †äŒž*º„*Jt°Ê­J^Ϊ©:u{ááG‰1Ô²Èðf{õê¸jØß«O*s£ƒ¡V• â±n£Œ0XwV¾«c%BwˆÃº©E?„(¯føëð;Ä¿³ÿŒ4¿ø›Ä¿<^|CáKøcÅ ü{ |Dðw‰|%©júæg­é:îƒs*yu ëv&Þþ ä’Ť{U‚kif÷ƒß°‡ÅоÓ~-xÆßÿgŸ…^!¿¹Ò¼ñö–ø¥¤ü%ðߎµ['h®ì<öûmGW×Z …û)½·Ò—J’ìKk¡,ö·±Ûv×â“ —PÍ«æxJy~)Æ8\Kªœ13š›,?•æ¸,V]™`+ÔÂãp8Ú0ؼ."”œjQ¯B¬cR•HIYÆqO®Í3Å(¢Šè8‚Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ®iÚŽ¡£ê:¶“}y¥êº]宣¦jzuÔöZ†¨YN—6WÖ7¶ÏÍ¥å¥ÌQÜZÝ[ÉöóÆ’Äé"+ uéßüuំß<7ã/ü4ðׯ igW¶ñÃÝj/‰´½oBÕ4 ¨N§¥:jZ>«§Çªcúݗ™q¢x‹OÒµT‚äÙýž\q3<6"tðòÅÔ… ³§„„©Bx™ÆœœpñyÓ¡ V’Tã*Õ!J.IÔœ`¥%Õ§J¶;J¾6m¸¬=:ÙXbjÓÀRhF¦6¥<*øºÂÁºó†lLãMÆ…*•\`ÿV~ ÿÁS´o‹š?‡þÁI>øcö‰øIu=¾§üg†Ê-+ãÃA|c°ÿ„‡PžÄÙÛXBо¥â/ ßøKÇpivw77q|FÕîšÖo‘?oØý?eÛÙ›ÀÚ–«ãDñ‡¼ãß…6WQÃ7Šu? øûÄZï„t]õlã†Ö÷Z²ñ‡†µ¿™í¡¶Œpéš›YXU,á×¶ý¤?à”~ ×ôŸ\~Ç?·Ö¹ã 2ê ^/ƒø¿á7‹gûJÖQsk¦Üxú¨þ'j7 rcIµ¹¹´ šŽ•2<ÖÒüÏã?ÛãçíûtÛÿâF‡¤xSÅ^Ö|ß >‰ßSÑüá/†ž&ÓüWáÞϘ®oc“X°“TÖg˜ÛÜjZÆ·â ¸ìô‹9ì´ûÉò«€âJØ®ȳ^ȪåYLÛ&ÍçC ”×ϧS,®YN_CŒŽªk³,N QËêÑ•IV¬œ£ýcÅø¬¯7ðæpñS‹øKЏ³šd4¸?‹8V³Ì¸ž·FUhg|ÿ2ž,ë õyaªe8||+fØ:ôqu±Õ0ð8Vý/ø=ÿùýœdOÛ'öS—ö¢ý±>ü<ý¬õÏ?¼Oá/€žøsâï‹Þ4Õ¼CuãoZø7ÁúïŒ|?4$ñMͽ‡ÄZ‚øfuqªÇ}«i5õ×ÈŸðUéåðVÏÛ¶À; K{¯Ù¦öpqwZ‡ìÇðÇí³ªô\›X ­ÕÌjO"½oö‰ý¾¿aÝö¯°ýº¼û~Ó~(ý³/_ᮯqgâx5f#ÆŸ tý N🌬ïü;|Þ?Öu2ËÃz›-õßíôèuþ§¡^+êë_;Á@?iÙçö¤ýª¯~;|øKûDxâÅÿ øY¾=Ý|I> ¾øiˆüà¯øWÁËðòóÂú–©~±G i—z7ˆoµ»ËFÕ¯ìt+­?Âú+O«\]ùÜ'†âê¼e’çüGƒÎeSÂy®Q˜OƒÉp¸«7ža–fÂaiå³x·•Éaq°˜Ü®2¶&ªƒHS©%­ñ¿†¸_xÓƒx6ȱ£ð·d.Ñ­<¨kZ÷ľ²ÿ„OYÑ×D…4Û{?Û¬évÑ[‹ …îµûfÚ]Û)ÉcͼÛ‹4»‹9f$žƒÃþ"×ü-ÿåÿÁAõ_ kZ¦©ËûCø[C—PÑïîtÛÙ4oø«öAðljt§¹´–)›O×ü9¬jº±h_ÈÔtJûO»Imn¦‰þ6ý¨kÿ|@ÿ‚mþÅ_±‡<ñJçâ‡ÂÚ¢/‹¾0ñYðæ7Ã(|-¹ñÊá¡·×l%c©…°±mOôàwоx+þûlxã7Ã>1|/´ý¨¼iã?‡–þ*Õ¼¨kzN±âÏÙ E7š'Š´mך7ˆü7s¨Ûø§ÃwA}¥I¯èºu¾½¦jºÚŽ›uÉ›`1ÙVAR8ܺ»–#Ç*9–j*¦;ŒãˆÂ: µZxwmGØûz´©>xûYÓ4—Wçy_qï‡Øœ¿8ÂâêaþŒ¸¬£4ÌZµgƒÍrÞÃàó*xéÓ…\_¶Àãa‰Uùiժ瓥²’æäÿà€ÞðÞ›ñŸö›ð&¯l’|7ñ·ì«ã)¾*Oª~ú}—ÅþÒÅç‰ïæ.dмl#[’!‚ÛPÕE¬PÀÓ¥yÿü'Z¼ñüÇþ ªj<×’~Äþ"µžy´“¶™ðƒö³Óy\’^Y’Íe•Ø–y‰bkÅüuû}|øû?|pø ÿõýžÿj â×í+áÖø{ñã‡í¨ü>x|àF Û-sEøs¨ü8Ô.tË•º°Ôõ+{ fòë6“]A¬ÞGRÑô{K.Gö:ý©~þÇß°çüàŠ|+ñ/Æ+ý¦?g)¾ü=“á߇ô=jÆÓÅz¯~3x>ãSñRjž'Ðu; k¿´­NâmMñ¡e­\gËsiik¨wg™wœáxï6Ãdøì2Ïs¨åùn&a˜V£ÃyÖ__0ÌkaéV« 1tçZ0JžÞXl¾5eÂt¢ü® âŽá¯pºTºuœš„p¨·“Ë?cÛ/þõûk¾9ñwÂ߀ÿðU^|SøUâ¿„þ1—âŸÃ¿Ù¿Ä¶¾$ðwŽu=YÖîçÂþ5ð}ýÝÅÃèVp[¹Ô_MWdØKs4wpü¡ÿûýªü]ûø“Â^4¶ðŧŒ<5®|5±ø}ñgág‰ Yé~7ðf«¤éñëÔVæÎõ4ýJÖæÚ9¬®îtÛÁkqö7Ö7š]þ©§Ýú§ˆ¾7ÿÁ$ü'«½ÿƒ¿dßø(߉î­äólþêÞ+øE¡|±Œ0xLø‹ ^x¿â%LJ-M…þ£zž!)ê ×ÎÂ.¬û…ª×âN(©™àø«”q>&–pæ/ þÎÀÒÁÖË3 xŠøg†œ+ÐXì.&U!†šÆVNµ:´¦Ÿ›À~$á¨pgåÜ7W€pÜOÁIÅus%Æuq¸:²ÃfÙÞ;4ÀñS_CóJ †-åxü (â1t~£…ª°³£Z„Ï„þ|NøÑðûÁ¶Zǃ~#|Uø3ã½_Âz§ƒµŸxž'øuãìi5·›WÑnôÍT%ÌšF­,7M-¼Ú…–©I ÒÛÛÈ2|%á‹x{OðÞ—5äö:oÚü‰oä†[·ûeõÍü¾l–öö°¶Ù®¤XöA"TVÜÁ¾ìÿ‚w~Ñ¿³§Àˆ~+øŸû^þϺŸÅß^|&ñV‹¥|3ƒáÿËzÅ‹ÿá-𦯣kúu½É/†ü?®Y[ÝÙ_¾­m>¾šDqµ½æ£4_øW×õï iZ¯‰ô¿ìmrëíßnÓ~Å{§}›ÈÔ¯-­¿Ðõ f¼‡Î³†Þã÷Ò7™æù±â'Eªá+¹æÙžåUpÑ¡†Ëe Þp¤©æ¾Ú8§*åßJYk§QVÒ/e£™ü»Ä1’ál>g!Ëê`qü[ž}kƒ0x·YðÞ:•ç…ÅÂ*u0Õ°™Ž¶2ž‚”©¸a«)ºÔdz·‚ükâï‡>*Ðüqà?ëñ†¯ãÔôè÷n¯¥_D¬‚{KËgISÌŠImî"$Ãsk4Ö·1Ëo4±?îOÀÛ¯áwü^ð'ì±ÿø/áÏø¿ÆÚ†à…ŸµÃ{;O xûEñV½p–±ñ>k ®&±®Ímê¾’^ëWÚ}¾½ð²ÇC‹PÖ¡ü~ø ñ3á¿Âÿk:ŸÅÚíàŸxORð¾§à­_ĺ¿‚õK nµV³ñ/ƒ|e¢Gq{áé×2Y[ê&ÊþÚ}TÖ´««S¢ÒÃõo‚ÿlßø&—ìÝã­ãÂØûöôøñ›ÂW1ëþð_Åí{á _|1ãK1çhÚ½¿‹<u«ø“U‹CÔwÚuƵavË=½½ÛYAy2ÛüGåÔ3;¨ðÎ}ˆÏ0˜Z’á¾#Ȫàð¸œ&:p—³¢³˜á±:P®ã,M,}/ìêÔ¤åo58CôϱٶZ¦¨q¯Óá,ÇBŸð'=ÁHgÏÿÁ,?i?Ø›áì«ñÏá>¡ñâgÃù~Eq¢øwÄÉ©xsÃ^5ø7ãÍoÆ?|Lž/ƒÅ·:×.¾øÂ åÒ¼uáý.Ò÷áÿ…4«¿ì« ‹/ãÞMŸÐË2ŽŸf5ñywŠ\ÿœÇê’Àbrºœ]W7ŽgN¯Öe‰«Qà±Q…z^ÁTì=uˆ”£ ß­ð÷pÆgÄ™gáxÛ"˸n·‚µ86 ÖÆbpÙ– ‹)pÅ,š¶WˆËåBž•(UÁPXL\«¸ã!,<ðP«Ab+Ὡå[Ïø(ýœçÃýXÿ±}z—üÏÅÞ%øûÿÁcÓ}wowñà„iÒO)y>Ácm$vvöªË HŒÏžY]âÿƒaîî/~=x‚{©^iWö[ø‰jF, ß lmcÉçl6¶ðƒ²"À¯œ?à’¶?ïØ'ÇW¿¾0xKâg‰4‹ŸÙ¦çÀ)á߆Ú…¬xÄx†mcá·‰VÒ*üið_Å-sL»ø%ñ Á0øgáç‡4mOƇZÔ~'x[ÆYѼYâo[ýžçKð¥ìPíÔZîkÛÝ28­Þâ[«c‹¸s:ÆÿÄZX,·]gœ1Âx\¥SŒmÄ࿵~·J…ä¯R‚­GÚsrüq³}+øë†°økçC€†#†ükâìfsøÇöÁÔþèÞ ðn±«O©Aq®F¿åŸLÖeÓ§½ºc¸°´¿ŒyðYkÚ%â.¥Î?²÷ìýûJþÜß´‡‹ÚîûOñ_íû@ø¯]ø—ñÄ:­ßö†<5d'šóQÔµ[»H/Ÿ h_Ú?c´±Ò,îÖÝn4¯h7l¶1Oò‡Ám>ÿJøgá« RÆóM¾ƒûgϲ¿¶šÎî7ĬÑy¶× ÑùɱïE߉"åYIý3ÿ‚|þØÒ~Ä´®<)7<9«øGZðŒ´«{-fo ëZ†‹¬µÖwx ”z¾Ÿ¬øsF½ŠÓ¶¡mÞ™%ÞŸöѨÚ}¶+‡ñYžg9Oœñul¦tp8œïW^¬¨Fu0¸OV>5§:±ÂÐú­ ø‰sW—4½¬-Í8[+ÈŘAeð‹ã•¬y<í†ÚÞP F£µzÿìmû}~Â?°í>¹û'~ǵTñŸü$z7Å?ümñ€›Æº‚uëëm}|'ð¯Eð/´Íĺ7†¤·ºñŒ|[â-cFÒ-ôå×´I%ÔuKïý†?iÙ—öZý¹ü?ñ‡áÇÃoÚGÃÿ³'ÂÍwÇíáO üGÓü©üa¸Ó<}ðÓÆº¶_±kú'„u´Ÿx¢äA·Ä½¯„#ÓZãZñ¸·S^~w‡É¸–µ/%ŠÁgøÚÜUÀ4(ex¬Ï “a+âqø<³=ÁTËe…ÉÝ:JÒ­˜aþ§B¼%^T9¥_7Ê_·q&À˜?ƒ4rÌÛ†°˜üqÊó|úžˆ3œíḚe˜¨ñÆçøŒf?ƒ­§Ž–S Jºƒ¡B7%OçÚò ¯‹·ŸíÝ⯉ڮ©ãÛï~Ù´€¼9oâ«Ùµ?CðÇ‚|w}ᯠivW%ºZiÒôOiÖÍAc¥hÖ6ֱƅÿN§øïÿþý´?foÙ—öpý¼§ñçÀþÊ:jxàŸÆOø~ëÄß Ç‡/ôøNÊËâƒô7TšÇLM/¾‹[–ïL´Òá¹ðì:ÒxÛú~©­èsþJx›Ç¶¿þ8~Õ?4¿x¯ÂþøÑûT|qø»áMÆúLz'Šm<-ñÅ÷*СÖôë{ÍJÆ RÞÇRŽÓRMÕ5]:-FÞî =Nú–âO·tŠßðKû/ x)>/~Ï¿·žã ¾µñ]ÿìéℾ9ð‡¼Q§XÁeâ^ïMø“u¤xŸÃ)â+ë9u·Ò´F’ËKM]´Ý6ô¥”r'ÙæÙ-Ã\+N¶]Ä4±ù6<7†!ƒY–IŒ§–¬%_Üâj*UhW£R®¶X\ftäãZœ"¡5ù†_Æ™ûñÄ8å|EÂx¼›:Äc°XÜ“3lv"â,¢¶6¥O˜`éµ€Ì0ÕãO1Ãc°øÜ:8ŽjØyâªN½ð_µÿüúãöø—áki.üâÏ |Pð…߈¾üRø}6¼Α-üÑi¶ÓÍkí‹^øröùlìµ½êÃ]½·ÔÁ?ªÿðX}Sþ ›£|pý¾ ~Ó^ÿ‚‡x‚ßàßìãàû¯„~ý–ô_€z§ÀËχÚÖ¡­hÚwˆî,> ]¦¿}âC7†×FÔ®"†ÏDû.‡£Á ´Ïö¹n#ÿmßÛcTýº>-ü‡À|Eðöcý“¾ê_ ¾ø;Æ—ÂïÆšŒÖ• èº•ö»²YÖÚo„¼ag¦¥Þ±¤[ûzþûXh,þ©Õ¿mÙkãWÁ/„žý»¾ þÑ0ñÇìÿáûŸ|6øåû,^xïân£ðþãû;ÈðoŽü7ñ+RÒ´mcO±]#Lk6ï®ë{(î­¬ô«½Kň>•ñnc‚à,û>¡š¼~Qý¹G;¡ÃÕ0˜\ÚœsENŽ]šG N¬ð•+SÃa)ÒÍ0˜:³öRÌqO Q£(/±ÉóÿøC‹¼TáͲ<ʇe+‰álGcñØì‹ŽÉêcêæœ#W?­cðô+Ïj²¯„>-ë¾¾øIð£âž¹â«¿Œ_<'©KuãO j>&´ƒQÑ4 Î[m/ÄV6–香쭭¯ïnïdùŸþ I«øSâoüïöý¸¼EðÿÀ^øóñ“âÕßÁ/‰r|?ðì~Óül†ж0xÎ].ne}šÏÂÝ6úÌÝÍ©\Xiž6“MmbâÎËJZü¯"ñ1Ìpü'˜æ|9†Ë²ž1Ĭ[ŠÁg³Í18leL.3BŽa‚­’å~Ê©àk¯m…Äc!NJ>ÑEI3úŒ¾ŽùfC‹ãl‹‡¼A©Ä|YÀY4¸‹9ÈqÜ#W ¥‰É)bp8\N+,Í©çùÞ^Œó <–  %jÉÉSnQå?è¯Óøu'í6þøãØu„GÀßþÿÂßOê6Ô<7áO…> mÀšÅ½×Åïø³ÃZáûûÕø…£Xéúo‡o|Yu}e®}‘f²Ò体å[?Ù¯Æ>/ý£¯f‚^,ø]ûJøþÒçF·‹\ýŸ¼y¦øûáåòêÞ±ñ,÷–þ3hô› ]7@·º¹ÓüI©êÑi¶:N¯£kVR\8±3IöxN-á¬Ö>©eõ£ƒÃâñXÉÆ¼U,&ˆ–SV|´ðÊ…hJ3UçNNub%Î~1˜xiÇùT0³Çð–w‡Xì^YÀEàªT«Åç8ZxÌ®Ž/iWñ´*Óö3ÃB­7^qÂÊqÅ5DùæŠý)×à—?­á*Ñ<ñoöXøÓñSÀšeæ¯ã_€_þ:èÞ1øçá{-7Ú‡Sø.›¥]9•5…ÝåõÅÎË=>Þöòkx%üß·²¼»¼ƒNµ´¹¹Ô.nc²¶±·‚Y¯./&•`†Ò Xѧ–æYÙaŽÑ¥yYcT.@®¬«?ÉsÈWžS™aqË áõ…F§¿EU‹)Ô§5¥Z”¨Õ”U:ÑŒ¥JsQ“^ðWp…L.%È3,žYŒ*Oñ˜yF–3ØÊ0¯ =h9Ñ­W9Ó†&„*:ØyÔ§ôéÊqNµúI¯ÿÁ-¿hO éz —‰|sû9è|U¢¦½áÙsYøÛá½3ö’ñ%”‘<ñÅáÿ‡—±Ai­êRE‚='KñÞ¥-Ê6Ÿ«êJlÇÏÿ¶'ì—ãߨ“âæ…ðS⯊¾øƒÆ¾ øs¦|R³‡áö¹¬ê¶±x[Uñ7‰ü'o%Ô~#ðß„õd¸M[ÂzŠÌñiSiËÖJš„—2OmmÇ€âþÍ1”pvw€Æã1ÄÔÃÐÃÖU'Z–“Û֥ʹjP´Šx·F«çTgQÓ©Ëéçx…Ãù^':ÎøC<Êò¬ÔÖ/ŒÁN5L{«5î^õ,L¥F¢«†œcˆÂ¾O­R£íisü·E~˜é?i·ðŸÀ¿ì|">øçð¿þúxÏPñ¶¡á¿ |)ðShþÖ-î¾/xÅžÐ4ßÞ¯Ä-ÇOÓ|;{âË«ûë-sì‹5–—%ìŸ9xöWÕ¼iñÛâ'À¯‡ÿÿfIð¯Ã2ñ·Åß ütð™ø¥xjú×ÂÏ.¦¿µ–ÑíîF›ªx»NðÞ¥gœú„Zý¦³k¥Í®‘{{Ãq bÖ"Xlï^8Z8Šø©S«xáéá±Q­íåkRœq_¹)¸ÕªÚ•(N I¼g…þ åë ñœ#aÖ7Ã`ý¦ßW2À¬ËðéIºÔjàš¬ñ4Ô°Ô]éW«N´eM|¹E~‚|Gÿ‚qüYðgÁ_þÐ^ø±û5~Ñß | t¶ž=ñìÛñ‚×ât~ }Ö‹3kûtm6_n³—P·Ón5Í>Êáu+ËXtÈ缋ʿc¿Øïâgí·ñ3]øUð«]ð'‡üCáÿjo/> ê~ Ò´Yt]+ÄðåÅ­­Ç‡<1âËçÕûÅšt°Ã. £ZCzï{ÑÁÍÒâ¾­–c³šy¾YnY9ÓÌq\òQÀÔ¦¡)SÅS”UjQ«N\•)ÆN!4œd›Çá¿`¸ƒ)ál_ f´3üú*¹.]RŒULÖ•gQS«€«ÎðتR•°u(Öœ#R•Jr”jBQ_(Q_¥ÿà•_´·ÄmÍì¼Cð3Ã_5ŸŸˆýžº»°×-¾x*-+Zñ6¸ºn¡a}§Ïy.›c`×vw‰ Ü«irðóÏøF<]YqWÉ8bZÄÂN¬kNœ£óJµ)C ‰š­ET¥É†ÄÍÏ—YöŸ„¾%Õ­–ЇñµÍéV«—Æy}Zj´hTÃQ­ Χ$0ÕéÖÆ`èË Š•G¶Æ`é*N¦*„j~~Q]·Ä‡~0øGãï|1ø£É x×Àºíð‡¼sû=øKšWƒ<=ã?üoñ_ÄËß|ðÄ^*×¼SáýÚ·‹üoá_ ê3ø²êãÂ¥ëèú'‡µm¦K§]\ÝDo£ˆvcø›‡òÈàeÍð8hæxz¸¬ºs­ u ?Uç©…”9£^ÿ]Â*q¦å:ÏJ4cRSHò²Žã<úyµ,£†³|u\‡†Àgt©a&ªå8¼\±Ñ£G1§S’x7|³0u§^0§†Ž,LéFœšü²¢¿A<_ÿÍý§|ñŽ„:ͯ€Ò/Äãñþ‹ /VŸ >Ò–3øïSø‹¬ÛévúN‡m¨K ‹Ã©éÖšÜóÜØ›"î KNšïÏ?jØ—â×ì©£|<ñ‡‹5ï†_>|U¶¸ŸÀ_> øÈxãá÷ˆ¦´….®,lµ™4Ýåym7öwöv¥l·2iw÷¦ÃP[L°¼[Ã8ìF ƒÏ2ÜN#3¤ë`)QÄÓœ±PPW|­¯l©Ó«7‡“~ZUeìíN|½9‡†Ü}•`³ŒÇ2áû‚áüBÃg8ŒN_Z”2úŽ­**uÔâ¥õwV½ [„g„ç¯F>Úõ©ó|}E~’~ѳþ×ÐÁ'bÏ·ëß³>ƒû%MûLjx[˛ǰþÑZÏ‹dñíöYþØ´ºøi.‰¨¸ø›öX|?öoºÃà_"î).ùðÜY–ýSÍ19~Y‡Âñ7‡a_ëëB¦'Ž–«Öx|°¼µð¶¯`Aâ*arœ× ŽÄÒÃSÆU¡BmÕ¥†«Rt©U«NQŒ©ª“ƒäSQ” áQEÓ©Nrëâ/øß„°Tó.$áœ×'ÀVÆO/£ŒÆPäÃVÆCK:4kFR…^ZU¡ÍRœ¥ITö”9ý½´áÈQ^»ð àö¿û@ühøgð[ÃGi¬üHñ~‘á˜uâi­ô‹KÛ€Ú®¹u:I=®…¤Å}«ÝA ¦·²’8s+ ?¢ŸµÿíÙ?ì5ñ·^ý‡¿à˜¿þx Uøi¦èÿ?jïx+ÿþ&ø“â Λέ¥é—Þ"Óu68ôin¦ÓµkÝ"îÇþ8õ½/Ãú7‡4 \ê¼9×ÖÀæ¸,ƒ)˵óÌn¶cõz¸Å—`pYu °Ã¼faŽú¶6­(VÄÔŽ K Å×­R5_³…:SšúðËýiÈó¾/Ï3ê<+ÁÙ+—bóyà^iŒÅæxšOY–¼f[GV†F¾*xœËJ’¯„¥JUñªT_äuõ§‹à£?ðPˆþ ñ§ƒ~2üVø#ñöËÆ^×ü0²|Qý—þYê~mwI¼Ó"×üâ/‡Úw„5Mľ’öMWÃZ¼ë¨ÿfjé éµa[sŸûþÇ_ÿm¯ßü)ø}¯|:Ð|iáï‡7_uëïê^%Ò<1=¦“­xWÃz¥¾“>‡ájs&­â»)¬mîôøa:|7O=ôw1CÏU<ç€Ë±Ùa²ì‹Š«W†Íjæ˜/«Ù)U•zÙ^W^›„ä¡(K Õ8Íê—˜ðfSŽÎrŒ—Ã~"Åñö/8«,- ¸z¿æ‘Æ«Ê#¯˜æT+B­8ÊP­K$¥BpºåòÝí?²×Àß~ן| ðWáWˆ|ˆ~!ÂOýƒ¯xV¿Â ÿŸ…üCâÍSíš§‡4_.ë ê6VÿcÒ¯sª-î>Í žæßëØgÁß>ÁItO…_u‚ZßÇÿ„¿¾=ü-KÏê.Ô¾ÿÂSà?üJðçŽãÕ®<#kaã_³ÿcXkÒø}¦ê?Úrèo¬éöv’^@šfÜAË(æñUðµ3«!ÄqðŒKÂEàiG©WÄb}u…ÂÕ¯ƒ­FxŸcYÑP©SØÔPQ—ŸÃ¼瘮Li†É3Î1ÁpSͰ¹sÌ*PÎ1²õˆÁÐÀ3\þÔ?´ÏXü¾¡à‹/MãíF ÂÞ ¶Õì ñSé¶Þ*—S‡Ã¶^"K϶‘s¥G«Ü\jO(skÿðKÚÂö&™¯øçörÒ>4ø—A#ðïì·¨ümðíí%â ;ìÒ]•Ð~]Á¦·|!†`4ý'Ä·’\E%”0Ëz¿g¨Äq>K—á²Êù¶cËgšáá_ J¶*2Œãì©U­:u9aυêÐö¸É•FtçUÒö‘GbðÓ‹±ÙÏe9“f|KÆUÂcñyf_ˆp‹U+ÃÒšç†3=gC/ŒªâªÊxáãˆÔ>Ký ÿfŸŸ²ÇŒôχß|ÿ'‹õ YxËMÒ?á#ð—‰þÓá½CUÖ´K=Kíþ ×¼C¥ÃçjžÖ-~Ç=ìWñýΖÕ-î-eŸÂ«õÛþ ÿ”£ü3ÿ³ðgþ´?ÆŠùƒà÷ì!ñc⯀4ß‹^#ñ·ÀÿÙçáWˆoît¯|Dý¥¾)i? |7ã­VÉÚ+»}¾ÛQÕõÖ‚á~Êomô¥Ò¤»ÚÁ¨K=­ìvÞ' ñ wäþÛWÐ,ƒÄPê·ºÜ:DZÞKCý¥-û/á·íûbüAý»üiðkI³øKcû6þÊ_³=„–?>Zjmªjn1YÛÿÂKâ«ï"ѯõ¹!ÓtôI.,ãM.Ú;¸-fÕ5k_×oýoþ {û_ø öäý¼tŒŸ ¼ñKÂþ ðì¯áÏ„W—ü9£h²j^)Ó~)xÏÇwh³øsÄÞ-Òo4¿ìŸéÖ©$º¥®£ý©¦ëp>™µœ—×ä¾pM<·‡¸[ÒÌ¥eX† 2ÆV«‡É«ÖU)b>§€çú¥ Õ(ÉÓ•g øû;ÃáëVÞ .¦Ótïø³L²š@e³´ñ.®-š9.K‹¿ðHíFøMû7ÿÁV>1|/Ñôßübøgûx†ïáÆ££X[Ç­Åw€þ1x¡f·kxÆ¥{,'ðgƒdV;‹dž3_Á@ÿkÿ~ÓÞÿ‚`|*ø}࿊Zv§û"|ñ§‚~'ø›Å>Ñ­<¨kZ÷ľ²ÿ„OYÑXJw©V®G˜Õ†>T#NXˆÔÁÎxZn½HûO-ÿ‚ShàïÚÛö/ñ‡mš_øƒãGÂÙuÞë]ŸHñÿˆ4í+ÆP6 Û®â³ºð†½¬éú¢Ç"C=Œ—z'YnOÕøm7üQñ á&Ÿo§Íà üvƒâNŸn<†±´ñ–³û?Mñ¶÷M†21ÿe|e¶Õ~Éh  )<>Þ4KX"_—ü ûnÁ<ÿdOÿÂØý˜c/ÛÄŸô?T‡áo„>0x“áî±û<ü/Ö¯ì®ô» CDñ7…5MCÇ^$Ót;ǃLOÀú¡¶HÛízFµ:Å—çÿÀ/‹~ür“ö±×µôÕ¿h{âäÿüM«^5ÿ‰/µ›bûIÔ!³’¤Òu}©ØêV6ÛÚ¦©Üév¬6ò×~/*Îx£2Ïó._ŽÈ(â82áL2Í >'›f5jW¥ˆt°µñ<¸|ªIS§ˆœãíjã1/ §J¬ù%Ä7ÀÜ7—RâŽ!ÉøßSÆŽãü ,“S7Ã`¸w(ÅàÖ*•˜ŠXuN¦o–ÓÅR«ƒ¡OØa¨ÐÀañS§ˆ¨°Ô:oÚî}CâGüCöïø“ã§}kÄþý®~.|=ð½íÿ$ú‡¾øºëÂþ þÉóÙšÊm?ÃÚN…å³$–ÿaŠk¶Kþ˜ÿÁÁò”†ö`¾ ÿÖ‡øÑ\GÅoÚÛöø‰ñÏUøßàŸØwö«ñ¿íeñÄš6ª¿ Uø}¬þÊÿÆ^×Kðö›âmBM2é~#kí¨kÚEî»á{í?ÂÚ‹u®£Ôlb‡VÔ/®íÿÁy<]¤ø£þ ¹“¥Ü%Å×ÃØãáß‚¼F‰"Hl5­Kâ?>!ZŲ̀ìÐK/‡¼k£_,Rˆäh®’`†)c‘ü¬®¶*§xc¯‘ã²zÙ7 q.K°ŠÕ)a¸o R4#†ÄW”ð”+S…:8©*t1Ù,?7%U¬â:p©áßÒ7ˆèq^YĹ?g‹È%–âqµéa°^׉+ÓUá‰ÃÐ¥ƒÇâa_›—Bø¼=L<§ŽŒ'V—?qÿ¡ÕüG¨~ÉðDo…ø£Ä:W€üsû>x‡]ñ†ôRêÃMñ£àŸ€ÿ³¼>¸Õmà‘êm7Nñ_‹4Ë)¤[;OêâÙ£’䏸+ö8ýüCûYø‹Åþøk§øÀž ðï…e×>-ü@ñTË xKÂÞXï-ÚëÄ:¤/}uqnuOìëbûÌpjW·WÚf›g¨êV½Ïüö¿ðí=á¿ø&¯‡Þ ø¥§j²'Á/x'≼SáÍÓÁz†µ¯|1øKàû/øDõÄÚýÅÝºêŸ 5¹gÿ„‡NðÕØ³Õ¼9$V“\_]ÚéÝïì3ûdøödÒ?hφþx—â‡ÀÚáußÃOŠš/ôí;Ç«¥6â½·†fÕõ=L¸’÷Añ¿Š4©ìîuï¿Ú/¬5(5›gÓ>Ïwéäx'áÿ q”òœ¯“‰á˜çØŠ8JÔhÊ´©ã8«UâcJ¥ZT±8˜äÕ¾µ‚¥Zª†"pÃP›ä—!ñuŸpWxÉáþ?⪰ðî¿p,Ç—cñp”ñØ‚¥T15°ð©WGû{„Áãñ*—µËðóÄãhÊ”ãíÏПÙáwì‡ð¯þ ÷ÿœð·ì»ûSø3ö˜¼µýü`~&[øáоxkÀº¥—Á/Ú=|7q§ø§\º»Ñ¾$'‰d‹\kžDÓ“ÂðË{#.­§íòø6úê{ïÚc^½º•纼ý5K«™¤;¤š{ü –i]%ä‘ÙØ÷bMxOìû{~³—…ÿhOÙŸÀ?²ígmû(|yø=â߇_|qãMáôÿ´Ÿû@ñ‡t¨ôíÇWðoÃ=>Ù4xÊÂ(ôy§Ô×UÕàÖï|K©Ãig¢GÄÿÁ,?mï?±Æß‰ßu¿‡?´=ÏÂH~øëáoÿ Áš×Æ[øÄ^¹ñψ¼ á«íRë¾k-bëEšÒÞãÅr˜4­%t¹Ì)‹áþ%Ää^,a§—ç¸ì_`òŒ^SˆÌpùE fcìrÜ­ÑÉÕ F®je‡¥Z8O«Ïå‹fÿPÄñ?à8ƒèý_ ›pÖ_à..Ïp9ýušæ´²zY–a˜ãð¸·Ï±Ìß„Ìcˆ¥ZuåŠÅa¡Œ•Z:’˨àêK3þ}âO|dÿ‚œ|ý¡¾,øŸUñçÅO‰º÷í ®ë^%×'yç‚Kÿ„ÿZúÚÂýžÆÖkÁpðÚÙÇ¥…³Òtû{]>Ê*[øÇã7ü'Zñ‡Äïê>,›á¯ü*×áGý6ýÂéžðŸÃŸÚ/Hð·‡,´«Dv°­‡ì´ëHJÄícTÕ¦3jšÍýÜ¿>ÿÁ'>9xoöCøÑð ãWÅ_xÎ|=ÿ…§ý½ øsI°“Åíÿ g…>#øOKû—â=_Ã6-¶ûÄÚuíÇÛ5[,i‚{‹´Ì ¶¸§ð{ã÷†ÿá¼&ÛXI£M¬ÿaÿÂOý‡¿O{X¼K.‡ý¹Ö±ø‚KHÍý}¦?‡±/‹óœn+¶^PÈòúÔ¨Ó%ŽcœÔ–_BÖp’£WÝ4£GE}”£ùÜ|AÃ.̰xž&§ý©„úGb3¬U)bœ±xrt2%Ê ]ýV¯ÔóZSÄP“©VøçUËëu]o{ÿ‚¯\Mÿlý»lw·Ù ¹ýš/!ƒ?»Žæÿöbøb·“*ôp--üÖêÆ%'¥}[ÿø§Æ^7ýºþ|Õ¼W¬ƒ¾ý•´ß‹ÇÀV×2[hÚ§Œ¼Qñ{â„õ}KSŠŒÞË>™à¯ ÛD×Fcci§ß[éÿdÖ¨÷?šÿ¶Çï þÕŸ·×íiûGxž?ð§€¾$Þ|³ð½¯Äm ÃBñÏü+Ï„žøq­Ý4>³â-k;gÂ×wú\ú~¹çh·Ú]ÕÚÙ]ÜËcoì?ðSßÚÿÀ_·'íã |døU࿊^ðWƒÿe|"¼»ø—áÍE“RñN›ñKÆ~;¸›EŸÃž&ñn“y¥ÿdøçNµI%Õ-uíM7[ôÈí¬à¼»áÊ82†'Áš˜¼¶¥¸wƒóLg:´á/ìÌÆ®OÃxZ4ª¶ß³¯9a±”bááÕ5ž¾ŸqÆGGô°–OÄ*xž)͸'4áÉakÆ/7ÀágžVÆbð2IF§Õç™`+ÉÝV§Zµ*Њ«MÊiÿÁcüoã»دþ¿ð3Ã^-Õ7…ì®î"U¸z}·Œ^Y?¯?à˜~Ó<=ÿåÿ‚ÙÙÛÄ·þÇ:­î§©Ü({ý_U‹à§íM;jš…Ãn–k¦¹A%ð„n%kvWi¢·ôyùÇölý±þ~Ͳüsá/‹¼%ñ3Å^+ý«~]|*øp¿t \³Ó|C©xã‚#¼ñ`ÔüQ êVz5¾¥ñ3C¾º¸Ðtß_E¤XkwK§I=­¥¥ÿÁ8ÿkkߨãS´½ñ7‡Ä?†_¾[|.øÑð³Q›û2_xcSÑ­!¹Š&»†Hmµ­.o´[‹}BÜÁw§_kZ,ï`ÚÔlz³ÞÎñëÅzXL I<ß1ávWNR§FžoC(Ër ™†J’4ñ/ŠË¤ëJÝYµRJ Èùîñ…2Ì£èÝšçù¾S†ñ¾#åÜKU©âqy n"Ì8žžYÅP§ WT0pͲ¼Ý,5:Ž8z4Ö«N—oÿð®— þÞ?²Æ±on‡\ñ‡ñSPÖu–,úŽ¢šÇÀˆÚÃÚ]]·ï¥³IÖÎShÌmÚêÊÞñã{¸–zùoãçüžgüþÏëö¯ÿÕ«¬×íoüâgì\?n…_ ¿c_Ùcö¬Šy4Ÿˆ×¾3ø·ûP\xP³ø3ð÷Eøm⨬ô†ð|>Ôµ=9—[ñUǃ<Þ3ñ¯¬xèú•Æ„%™©®Ë6W^(ñ7†`y™³ãO‡ž0ðw‡bÊ6kÚd0(;Úy#XÃ9U?/þ׿|Cðßöôý¾tÙOe®k_µ¿ÅŸZ‹”‘%¹ðwÄY~#øò#'2YÝxgÅÖSZº×t ¯Žéšž£¢êZ~³¤_]éš¶“}i©éz•…Ķ—Úv£aqÕ•õ•Ô “[]Ú\ÅŽÄ.’Ã4i$l® Ô¿ˆ_ðP¿Ù£ö™Ð¼57íëû+üMñwÅ x~×Ã'öý“õïhßµÝÁnžÊ׿qq¢xWRx/.f¾ŽàjzÕ•µî£ªI¡è²žæÇQö3œ&g”ñŽ‹pyf'9Ëñ<>¸{5Âåò óÕ³ ÙŽ0Ãáñ5ððÆP”ñxœ>2«M{ ԩ׌gù·fù7øSÄcsÜ·†3ªœ[CŒ¸w1Ï*ÕÃdy´êà0fi’cs 4kÿgbÕ,·ŒË+bi<"ª¯†«[RT§?ý˜c«OÚ'àWí›ñÂÿâ‡ü ?²ÂY>+^è¿ð…Kâ¯øMí ðwÅ\éÚ0øŸD›Ã^L? Óí±i>&–Oí>=8¶ž-¯þêÿƒy/í5_Ú÷ÇÚ¥„¾}Ž¥û+øªþÊ.X¼ëKωß.-¥ò¦HæÌ†D.Xã•7m‘ÁQò¼ðQØçàoìÉû^~Ï¿±çì¿ûqx›^ý­þx‡á/ˆ<[ûJß|-𕟇WYðoü¥ë–‘ø jÒæ?EñWÕdÒ„¯Imm§Í¬iN£‹Á3k=Oöø¯ào‰º—…gñ>”~'Ãoˆ~²½´µÕ®4BÛ@¼¼5ü†m—à3 X *téå˜9c©IR©*‘–#4¥Št^a[›÷Q•*)FwÃøü(â_³Ì^u”ÔÏòÌ÷1—ˆØì—3Æfø tªæùƒÊqþÊpk““bp±3ÊhG%B³•,N3š­^þ öþ'öIã§ü/¢}‡ü*ÏŒã'ñ }M}9ÿëÿ”ö|yÿ³úÿ‚†ÿê9ñ¢¹Ø»öôý„bÚÃðÎ_²‡íbŸ ÿÆ–ßþ%üt¸ø[âo‰º„µÝÅúgƒ>èZˆü7à?JOÝøb]gÄwþ0ñ'‹µé—Zr_Nó^A«|ýûþ×þøeÿ$ø¥ûnø·Á´ÿ…þ-ýª?jÏ‹º_…%ðæiñ5<-ñ·CñÍ¿„á¹Ðµ?XxyuK)¼g§&½¿‹.tëf²ÕWMÔõf¶n¸3œ{Ÿf×þ Kûhøžî?í¯j¿¼i᩸*e‡Äz•4„ñÆP‡ Gççíus©|Fÿ‚‰þÝßünï«x§ÃµÇŇþ¿¼iÞçÃúÂoÜø[Áo¤<ÎÒX\iþÑü=Ÿ{jñËjlb›OkUoš×ÃïÚWÄ:'íñ«öÅøg¢x—ÂW$ý´>.þПô?ˆ:?ö>¶Þñ·¦ñf™¢ø³J±Ô/mÐj:&©/‡üMm£ëWÖ™—T´Óµ›…HïOÛ??mø'†µñ_Æ?´¶‰û~Ô>"ý¤¾ _Ãã-cáÖ£¬|>Õ?dk¿Š'I±Ó‡õ™ô«Áñ _‰ï4Ý?Uñ†u è>+½·½¦­ýå߯C›äüA‘çÉ1ù¦¯à8wØ`þ¨ê`3\.1âêÓÅLjÆN­8O¥:Tç€Q­kÒrð3<ó%âL‹Å ʸ³(áÌú¯‹Ž/†aÅbpÔón¯–à0ryf/F¼ñX¬¶¶ ½o¨Sp¯ˆ¡™MÐç‚Å{?Lÿƒ‚ÿå(ÿ ÿìÁ|ÿ­ñ¢¾„ÿ‚ÃêŸðLÝã‡ìíðcöšð‡ü;ÄÿÿgÝ|#ð§ì·¢üÕ>^|>Öµ kFÓ¼Gqañí5ûï¼6º6¥q6z'Ùt=m¦µËsù‹ÿ4ý±| ûuþÝ>ø×ð»À_|àß ~Ê^øM~~*xwÃÚ5å׊ì>(xËÇ·CL¸ð—‹|o ^ØG¥xëN²ó\Këišäa–v÷מç«~Û²×Ư‚_ < ûw|ý¢ømñËöX¼ðßÄÝGáýÇöw‘àßøoâV¥¥hÚÆŸbºF˜"Ömß]Ö öQÝ[YéWz—Š5|¾_ÂÙæ†¼0Äbpyå)pÖ5Áç šµ*Îy¥*4èciR©% DpÒÃK‰£NnºÃãêU¥ ÆD}ÎsâO Uñ?ÆL™…N9ÊøO™®}VêÖaS%xÚ¸Œ§™á¯S.žgC0†'ЍéPúæ[B…Z´ªÖ ß†þÞ¿¶§ÀÚ’÷ö"ð_ìËð—ö™ð7‡?g/ƒž-øâÝ{ö‚ð?„<7}®ø3DÐüÂE[ßø³ÄÚ=íþ‘7…¼X5)fÓ¼/kowâXãÑ­%‡P¸µ±+Â~1|Yý›Ð4–ñ4ž6ø‰ûCø³Ãž'ñZÞÚéOáÈG…|1aa¡hi¡Ü隤Ñ…ÌÚ«x—ξx Ñ­–R¿_á<» •d8<™á0ôêcjB†qR•\ÆŽÄâªO:5«ÓýõJÓ¯J §5*5)Ò© 5a:4ÿ’üeÏ3!ã|FašÇ‡>¼²Ì§V· b*âršñÀàᆢã*¿šQEôgåAEPEPEPEPEPEPEPEPEPEPEPEP]ý{Tð¯Äø£Cš mkÃ~1ðÆ½¤\\ØØj–Ðjš>·c¨éó\iš­­î—¨Áݼ/-Ž¥ewawµ½å­Å¼’DåŽ"1 ðœc8NXÎJQ”e )FQi©FI´ÓM4ÚjÇN¥JX¼-ZS*´±4*S©NR…Ju!V„á8µ(NJQ”Z”d“M4hÚÆ‡àÏþÊš÷í;ெü-ñþÃÁþ ×m>+è¾éÞ.‡V‰5–ô_Ûx5¤1Ar«ÂÑÌ‹²d‘Yþ>üFñÏÆ¿ˆþ2|Vñ6©ã‰Þ9ñT:мa­Ì²êz­ÌËtv”…!³³³·Ž{K ;Oµ´ÓôÝ>ÒËMÓím´û+KhJ+ùçÀHB´¸¿Z1«‰¡œ}FŽ"¤TëÑÀÓö³§ƒ¥ZIÔ§…„Òœ0ð’£%(Á5sý úT·„àì» …o „ÄðÏf8Œ.º8zù†+3ÃC­BŸ-*¸ÌL!â1SŒ«ÖŒ#“’ŠKÛ(¢ŠþŒ?Π¢Š(¢Š(¢Š(¢Š(¢Š(¯»ÿàœž'Ôü;ûMh¶6Ph7ºŒ|5¯xKĺg‰<)áoiz¯‡îŸOÕç°—Lñn­ØBÒ_èºt¿l¶¶‚ýc†KTº[K»È. +縶©ÃüjB3öN:\³Š”y¡‡œá+I5xÎ1”]¯%%f“>ãÃ:•)x‡ÁS¥Rtçþ³äÐæ§9B\•qÔiU‡4Z|µ)ÎtêFöœ%(I8ɧûgÿ©ñmÿìGûx£PýôŸ~Οė°ð§uoƒÿ þø#WÖ´=fOìëûs«h¾¶Ôtë§³¹ž+mWJº±Õôó#K§ßZ͉òðJÒÚÓá…þÏÅö›k«¹Ê–&[™¯®|É\±$³U;UQBª¨ù€QN Xê‰TÆã3 gÖñ“JX¬W°•*t>³ˆ•ê×ö4Û§KÚÎ^ΖއõwÓ ¼69e˜vðùn 6ÊáƒËèþë„…\“‰« 6Ÿ- «ˆ©:õ#JœëNudœääýVŠ(¯ÜOᢊ(¢Š(¢Š(¢Š(¢Š(ÿÙxerces-c-3.1.1/doc/html/graphics/build-3-label-2.jpg0000644000175000017500000000610411363617750020743 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ x"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ýø×…ÏLj‘ꚤ.žž Ö..õ;„Ci ¥›Ý³¼fXw—òDH‹ vyF²9XÛøE‰ã/x&"æ Þø²ÏûB}BÐF%ðæ™«3kwVJ×›"m&ÆòåíÙ¦Ä_»—øñ×ü}ÿ’ÍñþÆkßåyï‡0ÄahPÆÔ¡V®&†Z…8Ê­,&&pí‡:xŠªœ©Bµ)ÕŒb¥)SŒâæ”\ ¤ÜSJ.QMèåªúÅ^âkMíëàû¸íü5ñCƲxÇᯅ¬ü¥_XiºkÙø_ÃGNo øZk†Ó¼a¦-¦£¨jþ³Ô&³×ßO»¹ÙÜÜ…‡ÃûH¼?öÈêMgRøy¡_}–â *îÛþ|IþÁÐôûd¼Òîn- ›Àð¶¶—6’G¬®¢KÙÞ&œÎſĿɫíBÁn-ô©´84øü;á¨|7‹q4·3é+á´„ð¨Ó¦¼š[él¿±¾Îúƒÿh4fô,áÓ|PñÕ΢5[u§¿[ÿê~|Úv“.ë¿ZMeáVxžÁ ’ : ä3ÙIYj×o5›}Bò8ç_çܯÃr,«-Èrlë…0™>]ŠÂæÐÁO:Ì*a«W£Æžq‰áÜN Á,½e8ü—<ÅRÆæY^'£õü›#Ãeœ-”`•ZÔ=Yãrú³•Z”ëʤ¢àä©Á4¾¯ q­е–[¹ZÖ!öCæè:|×7 þâY^W–MŽòWáÿ‰Þ5ð¼v±èÚ¥¤oa«¶»§]ßh>Öu-7T–[i®n4ÍWZÒu KMKé,íÎ¥kcwog©d¿·¹IfY9m7\ÕtBMWO¼xumµ[I.Þ8ne0ëzuæ•©n£˜,óÙ_Ý"]¨V³H·v“Ay 3Çïdþø‰‚ÀñÄxz¸œ?‡™ÿðvf¸›=ÅF¾'2”hå¾o”VÉh`øw“å¹?a«bòŠÙÞ+4ÆTÎsÎ÷W»ìÃÁ^ »Ò’âøxŠßůÃüFº}ÆeáÏo¨x†i˧6•-íõž·co Ùý/tƒ¥M©%åµÎ­ ±ikxáç€ÛQøPotí{Äš‹/´§ñ‰t¿è–Ú\F  SÆ>›Ã°xVë[ðþ«áy¯#óæÔõä:Þ•a5Þšº|:½¾§¤xœ¾/ñßnó5ÿhøkJð…ÞÛK÷øwEþÇþÏÓ¢òí—ì»?°tÏ´]Úù7×þ]ÏÛîn¿´µ/µìOñ3Æj6¥æ“§Ë Ous¥Úh¾ð¦¢ÃqVš„×Ñ4M?AÔ%Ô¬à†ËR}GMºmFÆ(ì¯Löª!niá§Œxœ&/ ‚ãzT©æT8¢u©>/⼺F73á¬Î–@òFM•à³,5“ˆ1ø· Jxå”áxs$†u‰áüë‹óO®eW f^¥K Ûƒ “ú½ º‘…jn¯µJ’„JP”äù9åZ«§´¨C–}'ü#~ ›BÒõtÒüWý¯ãx¯Lð‡‡-µí/ìºf—ntK?]꺴þžïV–ßY¾Ô¬¯mí4­=u¸,A·¼Ð®"O¤Ÿ ô-GVñ†•ªßÃf¿­<áNùí'‰ü9 xžç^×u8à··wšm…‡®Ò+ m au©2Yµy3ø‡Ztðú}¾X‡…¢ht¶X­eÓCêךé–)­£ŠY.¿µ/î.Vòáæ»Eû=²N¶¶vpAÓßüSñÖ£>‰q>µ/áÝjëÄZ4zn¡i¶:Íêéë{|¶ZN™eg3Ý2ÖK˜® š ç{ë‰biõMNK¿o2àŸ¨~¿ Eb*qS©Î8<ÇUË(¬þ¾kÀÔ°™~3"ÍpÙ—°Ë0&AŸTÅâpx……Ì8“[Ä•çK8bpZÔ$ì¨Z4èÒŠ›öJž%Êq«NP¼åR­.XÉsBŠQ¢¹ïÓi6 ït/ˆºÌ~ñ‰ƒB𦙃&£ã}-Üx·Uñ ¾¡4V °ŒÚ:YµôWší¢M'R´}Bñµ;mSÃûóxÃVÚœC_]vþÆÎ†~‡Kðëh:.¯uâ¿xZßXñ²^¯‡¯m¥¶ðö£öË$ŠóL¹Öõ†ŸN·ºÕ!’»¨ü†÷Æ:í÷ü$ #év¶þ(LY°Ò¼;áÝK›ûH%Ó¦³Òt}*ÇMÒ. {š÷G´°»¸[E.§™5]Mnõí¾(xæÒó^Ô Ö£¾#Õ·¨Üɤh“Ë´¢íbÕô6ŸM“þRÙ/na³Ô<44›»+w[{I¡‚cÏ̼8ñEK6Ää\CG<Æ4ÕiâfrË©K-ðÇ [ –gøì›ŽÊZÄd¾"ªÙŽU—à±yûˆœ0†/ë9PÅà½ÅV“jΞ%)ÒHF¦•0–…IÊ1t¤¯(FÕ½+CøcàU½Ñ4Ÿj&¾¾ñüqáÛ+Í ïH±Óm<5ღ[Cã{§js],wc]š}&‚ FÒÍU5Í"KYd»â§ðŸ‡mþYø¶ÚO]Õnç6Z­îŸâÎÃÁ:¬š¾¥Ÿ¥kÞ—@¾×õµ K:–®Á­é[ÜÞµ€]i7^r¾/ñŸöGÙu'ûFÖô 'm¥‰û™â/íŸíˆ×u±ón®¿á Õ6jSùº•§›mö+Ëìí7ì’j>2×µ=ÏÓɥÛhöFÉ…®‘áßè2_M§[Micw­ÞhšVŸ}âëh.n–+ýzçR½W»»—Ï3]\I/£„à_pùÆ_ˆÅñ½,Û/\Q“æ¹²ÄçyÖÛåYfǵk`°¹^S–á)ÒXîÎ8*U2êY¶,«ðíZ9´3¬‹ë,ê%ŠÀºrŒpΜýJtíJ”í9ÒÂ¥)N¤äß-Zx‹MÓ”Õ:׃§VÒ§âA?|[úŸý(‚ŠwÅoù'^.ÿ°SéE½ûñåŸÿÙxerces-c-3.1.1/doc/html/graphics/samples-3-header.jpg0000644000175000017500000003213211363617747021330 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ#È"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ø^Š(¯õ ÿœp¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Šý€ý€¾*ø?ã÷ÂßÿÁ4¾?ëÑi>ø«s.·û4xÿPŠ+ÇøIñÙZ{­&ÆØ\¼et_j2È«¦[^ií¨_ë¾·š;Ÿˆ_Yx\EœVÈrÊ™­<¾¦c†ÁÕ¥S2§B«†' •óÛÃQT+}v¦“x™àÔ¨Jµ u:ÞÖ0¥Wëø†0¼cÄ~­áò,niF¾#Äcpê¦_ŒÏÜ?á+(Çâ¾³Aåt3\E°Tó5K6.®Vº*â(~?Ñ_||ýŽï4‹_öµ¶½øiðgö@¸—Tý¥µA3G%ä–’«ø_áÏ‚u~š¦¹ñ†Cd¾ Ôá’ÒÞçš—ü%ðO¿Øë䊟´gÄoÛãˆþ2kV1øoÀú„Wþü(Ñ,aM#Á_ <53ÁºƒmœWPX[YyvÚm¤VP_Í-îµ>ž×ú»ÌË ŸaóÇê™liãpTpT±xÌÒ–"/ BxÊt±~‹Œ' UlF£ÆÖQ«Ma0µ0Ufª,}wc¸4ɸwœçóžI§›Tʰ7 R8ü|ðXœN4­5Ïá!†Çáêàp|ØzÐÌqX,êœ*ÐþÇÄ9ðÔWéFƒÿ°ý¢µh´­Vñ§ìïà_Œ¾"ÑÓ]ð§ìÏãßžðçíâ‹ ¬¤Ô­Ž™ðîHî­ÕÅ„mrlµÝ_G»²@é©Ãc,1Ãñ?‚þøËÆ<)ð[Aáˆ^+ø¡¡| ~-Úe·‡|g®x²×ÁŸeñ0µ±Ô5-> #\ºòu¡o¦__Z%½ÈŠÆæâ5·zÁq.A˜¬kÀføZËèýcèWEK iµ‰\·ö˜Y{*ªš^Ò„åN¤!RR„’àÍx Œò?ìŸíŽÍòÏíÌGÔò¯®àêPúÞ7ž”%^Ñ/cŽ„«Ðö¸,G²ÅRjS©Jœdü¾Šý;ñOü“ãÇïxçAø·ñ[öaø+á/êšF†~1|cøÃÿ ßáW‹uWžñ|º‚5_xnÃĺóhÖ'ÓtýjôøRÏK¶×÷K·¿»šÊr¿*~ËŸ²¯Å¯Ûë^—àݯ‡.|á 9õüPñ/‰tïü1ðV–†ìÏø¾wšÒ,› â,ôøµHCcvÖBËO¿¹¶ÃÅü1ŠÁbs,>w—ÔËðtp˜ŒN5WQÂѧŽ6J¼¹iºµ´‚¡:ñ«(Q8Õœ`ûqžx…—æ8£ÁùíÓ3Ææ~/x²ÆbqY[ÿo„0ôÔêªxx)Wx™Æ8iá©ÕÅR­<5*•aó}õWÇoÙKRøá ;Çö_?e¿ŽÞ ¿ñm—€î»¯iú·§A•­ØÜÝé^×n£˜isY/öt‘Íu³Z¤ö>~ÆŸþ>xc[øi¬|5øKðwÃz”Z&»ñ»ãÇ4Ï…ÿ ¬5éÑ%‹BOj©q>§ªù.“Ok£iº‘±I þÐ{G¼²[Ž…Ä™Ë^nóL$råWêï9ºkëJÃ{9¨ÖúÔæãa½Ÿ·©)EBœœ£~:¼Æ”søð¼øk5Yôðëº8wR«Á{7UãÕJnX¨Bœe:˜ïkõJQŒÝJÑP•¾M¢¾ý£ÿeŠ?³¯á[OIá/øgâ†þ&ømñ/álj­ƒçéÚ½ËÅ9†âK)u}95 kw¾°76/os4V⎡–ász¹Æ9v:¢£ƒÅ*Ñœ1u¿x 4)óU­ˆƒ¥YTÃÓ„«Rtk*‹¥S–ðžqÆ7?Çð¾…³š™þWOÛæYcÁÔ¥_/ÿcɉÆÊ¯%,.¯ÖpÞÃZ¤0ø¬á½JŸX£ÏðUìß~x—öñ†—àÿx—áNjψ|)c㟠x£á_tˆžñ/„µ-_\Ð,õ½']ÐneCo.±á½nÄÛßÁc|’X´j°Mm,Þ3^¶…Çá¨ã0uéâp¸ˆ*”kÒ’:m«Å®Í8É;8É8É)&—Îf™Ve’f¬«7ÀârìËUÑÅà±t¥GB¢J\µ)Í&¹¢ã8I^3„£89BI²Š+ök㇋| ÿ‚ýžg]7Á_¾üfÿ‚ˆþÕž><^ø­¢Áâ |ðKÛÙÌ¥ønéâ‚ZÙïÛE¶¼·žÔõÆz®±«Ïáí'GðÍç‡Ä"Ïq”刧¡Z·Õð˜|>(¼^?YOêôjb0˜xÑÃⱜf Ìüe¢¾ß´ÿ‚­ÿÁP5wø…ñóàÿÄ­S¹þxßö_ø5«ø$mÁìcŸHðç…üG-£ÂïjÏ6 × nHóŒÎ~&Ô¼GâÏxŸÆþ1ñŽ™àSñw¼Kâ˜4†Z׆|áûêjÑè>ðõÝÕóhš6sww§hºTW·péú%¾›h.g–e~œ«Ÿ×©VÎO—eÑPŒ¨Õ˳ºÙµ:’nÒ§5ˆÉ²z´¥guN¤eªRV»æâÎàŒ¯ KÂ\{[ŠªªÞË‚Ì8Z¿ b°ñkÝ­‡k7Îð˜Ú|÷ŒÝx¯ã­¿Æ‹¿ k^Ðí~üøûEøÎçÅÚŽ¥¦[Üxá‚iRxŠÏE›OÑõxåñ ±êöòiÖú«hú;¤7/}®ië|*ÞâÞîÞ »Iẵº†+‹k›yRk{‹y‘d†x&š9aš6Y"–6d‘]©úT±xjØŒN•hOƒö?Z£ïÑúÄJ<êÚ{H'(Ù½;!_+ÌpØ i_Z–]™Ë 2QýÆ*x*‘¥Š…)¦Ó• ’Œgf›M&µ&¢ŠöŸ| ñ'Œ>~П´D!ðf‡à/Ù«þ7ü'Ñx“V¿Ó5›ïø\ž1¹ð?…áDÒ.´k¯²ë6¬ÚÏöÖ· ù6³@tïíK¹ ¢˜¬^J5±u¡B”ñ<$g6Ôe‰Çâè`0tU“÷ñÌM =>Ž¥X¦Ò»FY•æ9Î)಼|v-a3{ÃááÏWê™N_ŠÍsê YG —`±Xºª7—²¡>XÊV‹ñj(¢ºN¢¿m¿`?Ià/Ø+öËý³> |ð×í û`ü%Ôí|;ð›À#ÐGŒ„tAiàûÝ_Çš'„ÐI>¥­Á¤x‡Åúõ¤6°6¯¬/ù<7£OÕõH/??¼Wÿ%ÿ‚ˆüSðG|#ñÏâ/ÀŸ‹¶Þ6ð·ˆ<5ý‡ãÿÙ«ážÿI¯i7šZjžñGƒtÏëúW‰.SÁe°Êñ¾ß 8˜¨WÅc0ÄÕ§Z9ãJUÛâdY_pÏqw«Øž3ËñÙ— eønÄgxô0xºø/e™fô3\-L&Uè)W§†Êó(`¨b0ÒÄÕ…z¿W_%Q^»û=üñïÇýjçÂÚ>·ðßÃz‡†ü'Œüqâ¿øãDøwðÿú6Ÿ}¡èš®±uâÝÛ"X®¹â 2ÖÖμÕ^+µ›ìµäð}Oñþ ÇñgÁŸ|OûAxâÇìÕûG|-ð-ÒÚx÷ijoÆ _‰Ñø)÷Z,ͯíÑ´xTÙ}ºÎ]BßM¸Ôo4û+…Ô¯-aÓ#žò/sĹ]Ž¡–ã³\&‰©B*ªr7[ÔpÔg6½•*¸‰4¨S«8N³”U8ÉÉ_à²ÏøÏ:ʱùæOùži”e´±UñXüUèÇ æúæ*œ«×ÂácO^)ÓÃÂ3•iSPŸ/çÝõìwûüLý¶þ&k¿ ¾k¾ðÿˆ|?àMOâ åçÄOÄV‹.‹¥xƒÃ¸µµ¸ðç†øÃá¼]ðÇâ&ã_ë·¾ñ6,Ö÷-cªX8YQ.­%žÒîÚhÚ+«+ÛIæ´¾²žÞòÖimçŠFìÁgù.cŽÅe¸ Ó‹Ç`¡í18j¡R­:j¬¨J¢Qv© uã*gMÎ4k§B«…UÈy¹¯ñfG”à3Üã‡ó\·(Ìêº,~/ R޵a T(ÊRJTkVÂÔ†/J¼iO…’ÄáãR‡ï&ŠýRø‰ÿˆý¢þxæO üJø™û4ø ¶¾Ð|O¨ühñÏÅkÏüÓî|I¬x£GÒ¼ Þ%ñ§„ü?¬j>2‘¼%¨ê7ZN‡á½ZÛNÒ®´‹­CP¶}RÚù'ö¡ý‘þ0þÈÞ+Ð|3ñVËAº°ñ†‹ÿ ü*°×§D–- ~«Ü¼S˜n$²—Q·Ó“P¶·{ësbö÷3{u¸£‡¨e¸\Þ®qŽ]ލ¨àñJ´g ]oÞ'C |Õkb éVU0ôá*Ôʤ"éTåøŒ'‡œqÏñü/†ál榕Óöù–Xðu)WËðïØòbq²«ÉK …«õœ7°ÅV© >#ë8ocR§Ö(óüE{7Ç_Þ%ýŸüa¥ø?ÄÞ%øqâóâ XøçÃ(øWãÝâ'ƒ¼Ká-KW×4 =oI×t™PÛˬxo[±6÷ðXß$–-#Ú¬[K1^¶…Çá¨ã0uéâp¸ˆ*”kÒ’:m«Å®Í8É;8É8É)&—Îf™Ve’f¬«7ÀârìËUÑÅà±t¥GB¢J\µ)Í&¹¢ã8I^3„£89BI¿¢Š+ à (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ ö€Ÿ¾ ütø¹à†? âqãë-Sí2ØYøbÓNΣªx¿WÕ!ýæ“£xWNµ¹×u=N<Íikc#Ú¤×fÞ<~¾Œÿ†“Ó> ~Ë>*øOðÃþ/ö”ý¤5ïü[ø»ªiÞø}ð>Ù¢œø+Àº¥†­©j¾1™Rñæ§«Úxj]I-4ïØi:í”sjkäçUó 8)C+ìF?RL<ªCŸ „•k©ã±«š.Xl%:ò£Fxº‘§ƒ§(TÄFqú¾ Êò¬×>ÃÓÏ1ñÀe:us{UÖŒ£„åšË°\**8¬mG /*u)åØgˆÌêѯO:?`ÿoOø;þ ‘û"xïÃÿ³OÆ/ü@ñìñK›ö‘ðä:N™¤ÜþÔ¾Ñ|¤è—ÇK]&}ZãM—DÕ5 :ÚÎð_Xøa|_¢K£¦§«ø6ÂãóÏþ Iá x—öÿý˜ô_[YI¡Zø§[Ö¬­§HšëžðмOà±nè|U¢èMg®|ôaÚûù¿ö(øïâØ{âÇ>&ü5i.WÃ’½‡‹tK«†ŽˆÕ扼[¢k²íI.¶©öÛkÉ¢¸V¹k¥j¶ð<š]´CgâwÇï…z?퉮|YýŒ<1ñsá7…|;âÍâw,~"øGú·„¼Zš—ö®«áï ËáOxÓÚ¿-54ŠëAÓ®îô‰m¼?«Ëໟ ‹É{©~u—p¦eå¼GÀ¸jò\ã$Í*pþváN3Êó~x\v_˜<4)òÛ^9žY^ÃØÏ‚"Áá¡/è.%ñ!ã¬×ƒ|SÄÎ:à,ÈÿÖÞ«QÿÆIùveÄeüK”ÐÅÕ©*•êa0qÈóÜ \^+ESËqµkU…|f ûOâÇíÿ£ð—üGâí+ñá¿ü£ÆŸ´gÃ?Úvë]Õãý™µï‡ñ÷Á¯„ƒÂÞ·—^²ñ—´ËÿZéZ}µÎ³‰á‚Ú95[[Ùe¸>#àÚÂ?µü;@øáðËÀŸ>ü+ø‘ûaþÊ,ð†ñOÖ>ñ\:µÞ§ðÓHøƒ5æ¤kž'Ñ£þÓñÞ‡®xMñ¢²A­Á{v¶W··PúÇÚßþ ¯ñËÆ:‡ÆïŸ³'íµáŽ~7];Rø‘§~Ê÷ßµŸƒþ7ñe†™a¤Üø¢âoÝÏâï jZÅž™h𥽇†ã·”CÔ÷ú߈.u_^ü™ð³ã÷ÂÍöÁøsñÇÁ¿þ#|!øðËâÿÁi~ñ‰4ß|B¼Ñ|¬xgSñ‹¥ÝÔڭν®^x{Q×mlïn4"Ú÷Ä1h–·vúf˜/+‡x~tðX‰Ôʸ³áø3Jžm‰Âb2º¥†_ÙÙl¨âÄB¦"„gÄS¥*+ ‘«V…Z°£?±ñ#)ã] á1žbø33ñ†¸Ÿ ™d¸¬m."•663Y¶a–âèF8 F V®7Ëý¥ø;Å÷–ö:[Éöhmω|Câ}lÛ*}žmOÄz¥äñË4¨Éôí k'Ãø7¯à‡†~ ¤~ƒö‘ý²­¼ñÁü3l–!´[ü[– ]DéѶ¶w3ü0øcÄSâÞò;‘k2È5FŽ_ÏÿÛã÷†ÿjÏÛëö´ý£¼ áOøSÀ_o> Ùø^×â6…a¡x‚çþçÂOü8Öîš Yñ5γák»ý.}?\¿ó´[í.êíl®îe±·ú_öný²| à¿e/Úgá>¹ñÏöbø‹­i¾2:„uË-âgßh×Zeý—Œ>jzµÅ–”ú’]èšMêhÚ–©¢éòê6K,ºŠØj^"ÒõíçÃÙ­>ðæ•²¥\g Öá×5É)û X¬RËr÷C0ÃRZ”°õ1¸lM¯ÂZÔÕ|V F5iÂO’·‰Y%¤ŠU±¼EB9dÜCpÎZµlFI”csªY^3,Í+{V•*z¹V+ '…ÂfU=¼V•XÃó&Ïៀ´ôÓ§…thgÒ.,îìo£³Š=I.¬%Ž{k‰uÂ^ÜȳD’?Ú'•% ‰UЕ?Ðÿí˨þÁý„à—_?jMöàÔ<â_…Sü^ðÆûØ|ºðß‹|&àíWâD?cø“u åþ¥¢k¾2¿¹Ó­ô8!0Gâ jMNöišÜ[~Cüqø¿ûêš.•àÿÙ;àí™gâkéÚ÷ÄïÚkWøq¦[éžOÕ¬u_éøx$Ю£ŸP¾Ó5³«Ï{©ªhN³=^sÕŸ¿lßzçìÉ þ˶ÇÂ/Šÿþ|,ñ=ÿŒ¾ üDø ©xRßãÂÛ½VFcAÒ,/~Ï¿·žã ¾µñ]ÿìéℾ9ð‡¼Q§XÁeâ^ïMø“u¤xŸÃ)â+ë9u·Ò´F’ËKM]´Ý6ô¥”r'%~ËidX'C,ãš8Œ>y™g8Ç <^!˳,ÁU–3:UqUiÏ ™ýgN¶¶ ªµ>µ…¡B£÷!ÇWWåEã¼%¡ Ü—ð®k‘×Îs*9Ä_RšÁåÍiá)b°y¶H¨Ð¯‚Ì(ãpµ×$%—bñü•è. ö¿ÿ‚\~Ÿü-m%߀üYኻñ¿Š_¢†ÃAñ÷ƒ£¹Ò%¿š-6Úy­`½±kß^ß-Öµa–·¡ÝXk·¶ú˜'ÓõðIï j×z¹ÿsû©cä}ª×þö’¹ò¾Óm 俳¿¸·}ö÷Éû¹Ÿný¶Ee_ý·mSöèø·ð|ñÀÙöNøc©|6ø;àï_ ¿j0kZVƒ¢êWÚîÉgXi¾ð}…žš—zÄvx]oîuëûía ³ùÖ¾&Áq^mù-Lë;Ìøw;§Oý¡§ ÃrxÈλX:˜ÚYŽSža¨b£„§F¥jYuJ4!ŠÄb©¿kNÎ8ßáŸø…ŸÐÁpÖ[âw â°yeL²¿qÜ;‹9¼n]€Í²œÛ*Äf|kNª¥ý±ƒ«xHåÓSÂWŽ=c½Çã“Á?üá¿Oû;þß?ðÒ¾=×Õ£]}—YµÑ4_ìeXn¦þÞþÑÇi¥Ý†ýÿ‚ôhw>*ý²¿dïÚK·iþ|OýˆtÝ/áî¯/¦\k:ÄmÆ´“!{o?|/ÿ„¿ËÔt]V¸ÿ„»ÄÒêý—¡Ë©x—ʾ[Ÿ¶ÿeÿcÛHnïmæ7ìóñûiÚxŸEñn¹uñÛöý£gO[xGNÓu;‹üOÒtHü;y­C¨kD‘xz)4‹ˆõ)uakd±Ðõ‘Ä_xÞâÓÁ>´»‚k[«_ x~ÞæÚâ'†âÞâ&Ò9 ždŠhdVŽX¤UxÝYCËäü3žáx—;ÆWâ®#žUrZ°| ªYÅ<6û|>'ØpÕ•6¾­9eòÀb=I5[ÛrWë¼Iâ†Xÿ øg/ÃxgÓœqüQ‡ŽSƒâî2ú÷ b±ŠÇ8Âbq™¶28ªø„Ö*… ß ™eð­F xj”%SSé/¾øãx†Ú#ö„ÿ†jð‡àÍ[Ä‘xûþ7Œ~2}»YÓ/ô„O Â+à{›]f×íZ5Ö·­l³Mkööq‚K½RЯê'Ã/†_ðNoÿÁ9¿à¥¾ ðoü·þ… ÿ†6ÿ…Íñ›þÛ㮕ÿ Gû+ã­þ«ðïþ-Þ«kâO‰_ð²¼Ikuá_ø¥n¡ÿ„;ÉþÜ×<Ë #¿«Ü[ã—†üÿÿý¾gyü=ã=sÇ¿´¯ü2Ïü 2øoI°ÔôkøS¿á8ñWü$®ú½®³kö­éWFþÅÑ5ï:îÆ£ý—i»nž8È3|× F¦_žç”`³¾«,«‡áê˜ZTðœO”b19ŒjcrïÅ—^$Ó~+|ñ½¯ƒ>8xBÓPÑô2÷D°°ñ$‘øÇz2èjN…âk$i:†«¯ÞÚß\I¨ Uõ8¿à£?³÷ìÏðçâß„?à›ÿ³OíOañ¿ã„5‡WŸ´'ícyà /Søwám\©Ôƒt‡—^º½Šâ;}NÂææâÑXÓ4}CR]rßN‡JÌ8Ó,ÄãñòÅä;eÜi†­…¥•qFx,>]ˆÂƽ7›â)cÿÛr¸PU!_.Ìpu1o•ÓÁáä§ “þ‹ðgO’ÓÊø³Œ¸<ð— m~&à¬ò¶*¦w’ãªa«Âr&/F¾OœÔÅ:50ÙÞS˜Ã)qœ±Ì\1ªÓ£â?±×ì‰ã/ÛÛS×t?j^Ñ~i¸ñGįˆ¾8ÔfѼàï\Çqos>³s ov/nb‡QŠßO‰auû£s}y¦iÚv¡¨Ùþ»~Èß ¿d?…ðO¿ø,ç…¿eßÚŸÁŸ´Åå¯ìãñ2ßÀŸ¼UðóÃ^Õ,¾ ~Ñëá»?Å:åÕÞñ!&ëß´&»­x—\çž /þüakëksö{Y¯ÃÃkg–ÏIÓíítû(`­?ø%‡í½ð'ö øÛñ;âî·ðçö‡¹øIŸ|-øwáS x3ZøËs£Áã_ø‹Á×>#±¹ñ|5}ª]xW e¬]h³Z[Üx®S•¤®— ¹ƒæÿø$çÇ/ þÈ>|jø«áïÏáð´ÿ·´i6x½¿á,ð§Ä écÒüG«øfŶßx›N½¸ûf«e0Oqoö™„×¹ÇæXÜo‹8ÊyUiÏ<à¿-ÈêN•?mŠÅ<£?§‰ÀГ“q¨±°­Oš1u]ܹ#(ù9å7Ãerâ,pïÒ¾aÅT(b¢éàržeØÊXêþÇ™< ðx\LãZ2xomFV§^tª}câ¿üfÿ‚äë^0øâ}GÅ“|5ÿ‚¥Zü(øw¦ß¸]3Â>øsûEéðå–•cŽÖ±ðý–i Xƒ}¬jš´ÆmSY¿»—3þ ½q7ü=³öí±Þßd‚çöh¼† þî;›ÿÙ‹áŠÞL«Ð=À´·ó[«”ž•àŸ¾?xoþÃÆÿµÕÿ…<¢|<Öÿà¡^%ý§¬¼3®hVoÄ/øWº—Æ=3âmµ„š4ÚÏöü$ÿØ{ô÷µ‹Ä²èÛ‘Mkˆ$´ŒßÑû`ü~ðßíYû}~ÖŸ´w¼)ãÿ x âMçÁ›? ÚüFЬ4/\ÿ¼øIáÿ‡ÝÓA£ë>"Ѧ³¹Ö|-w¥Ï§ë—þv‹}¥Ý]­•Ý̶6þ®K’c°\W¸¥€ž‚ðÚ¾O^¤aQÃãÞc‘U§‚q‹J5=–¼ãUR³Z'æqçe9¯xã•TÎð˜ÌËâ¾Ge87^5*VÊ’ÄRÄf8¯rtçˆÅ_V›ujÕ¯RµniN¤ßègüb/<_ÿø5à={WÖo¼ ¡þÅžñ…ŸƒßT¼þßÖ~;|QÒõAô‘/ÙÆ­máÏ ®«4qÇ6¤žÐ-爛×N‚±ûpjPÛÁ¿à–¾!ÔÖ(¼g§þÒšÇÃ?Ç"-½Ì? /ã÷‡fÒ¬­ˆRº¦áO†^DQ(´‰t½âUXíqõüƒâ'ìK¢~ßÞ ðÇíMð7ãÿ‰|Agûø;Å:ÅoÙŸÆ>‡Çïá‹¿Ÿtûχz÷Ãÿ‰·0xXÐìõ]*=wI×tkÍŶÒë¾"²¹“Xµ:4ZOâWí§û_]~Ûž7ø àÿ‡?üGðöCý’ü5q¢|øyã•“ÆZî¹{Ÿ ÷‹¼^°Ïs ºÍÂéPˆYlßT¸]jûQñ&§5|/áqÙ× øS„Âå܃³ÜnqZ8Zx:˜heù¶8|èâjW¯S1Äfu©ºTåJ ÓÄÆ-ÒUañg—p×øågüO”âòÜÿ‚jpž]ÂpÇW«þÕÆb²|sÅã2ê´iÑü6+ö8LJj˜‰âèC )QÃâg†ýÿ‚ÇÿÉ ÿ‚ ÿÙ±üNÿÕ û,×·þܺìá_ØGþ uðƒö¤Ðn CÀþ%øU?Åï hÿ±½‡Á»¯ ø·ÇòhÕ~$Cñ6?‰7PÞ_êZ&»ã+û:ßC‚~ Ö¤Ôïf™­Å·çüö¿ðí=á¿ø&¯‡Þ ø¥§j²'Á/x'≼SáÍÓÁz†µ¯|1øKàû/øDõÄÚýÅÝºêŸ 5¹gÿ„‡NðÕØ³Õ¼9$V“\_]ÚéÞ§ðëöÍø®~Ìšì·ûl|"ø¯ñOá×ÂÏßøËàŸÄO€º—…-þ8ü-»ÕaÔaÖ4"ÃÇwúO†6ø'D½ñoÃkUÒ´ Áį éº~¯umdú†<$,þÓ%ð&—skáìõ{-OA²ðGìâÐ1qw¨i:ãjm{ªB—ጶgˆ<9áxŸÇÚ?ƒu¥Žm#ƾ(еXéÚ§c! ªØÙYkŸŠ.t™¶º„^k}JÞëK{ëi¸/ˆ_ðTø*¦›ñ3ÆÞññøQðÂ~ñV» Aû%ø‹öjøgâOxoMÓ5›+}þ}w@³ñuõ„–¨RÓZÓüN–^!Ó'[Ò–-;Q³ÇÅcx§ø‹ÃYQ„Ìq¹v[ƒÍ1ó̳‰dôÕ u\E,<0§–f•±ÕÃMâ'*xl.Î9â}­Uû/x[“ã8‡ˆ\_ÆSá\‹0Ïq¼=•¼TâZÕs ˆ­ý£ y¶TòúUcˆÿe˜bëCН,%,=(Õ©ùãEuž´ø‘ñÃâÅݥΑðöÏÇ>-O…ü5à |à.ÿâ/‰a]ÃZE†·©>›á-NÖu‡ÒôÈnµs¥èš :z]j%-n.Oè…?à•Ÿ~!I¬è? ÿhOسâÅ I½Ö5?‚_?híÅ_í­´ù µŸEÓt™4[C̰ÚÍsâ+M: ©á‚âú' õó.%ÉrHPyÞa…ʪV¥ ²§ˆ«xÑŒš„§V¬báN„*·Mâjû*.IÞJÍ/Éü=â¾'Åæ8C(ÆñU z”V/)ÃT”1Juaõj5½z¸Š”9jýJœ*b ¤“¤ôoóŠô‡ÿ |Qñâ÷‚¾ Ø = ƾ7ø“áß…ViâV½°°Ñ|UâOYøBüBÖv:Ž£ei¦ëŠš¹µÓo¯mb‚ãɱ¹¸mßïÝOþ -ûExkâ?мãψ_³ŸÃ-7Þ%ðß‚´¿‰Ÿ>)Ïà‡|gâ øsŶ^økq¯øbÓÅþ/Öm¬üU¤é·ÑÙø:+T×ZãJ¶ººžÝÉy—ðþOZ Ï6ÁàëUÂOF•ZŸ¼­„§V• V¡©:ÉU­N<””ê5'5ÊQÇ"à4âjqY 湦™ÓÉñ5°¸w*x\ʵ Øšx\\äâ°²•=i{LG³¥ES•EVtá/˺+ïÿÞý£tÏŠß¾øþO†,~¼sñsâ×Ä+Á?t›B÷>¹‹Ç—ÑK¦Þ)¶Žiô7LÓ®õ¤×±jzfq§ßÃmäµ?ì“ñoö@ñ¾‹à¯Š©á«åñW‡¡ñ_ƒ<]àlø‹Áž2ðôÒy ©øU–ÏM¼’;{‚±\A¨iš}äi5¥Ø¶k CO»ºXN(áÜ~3—೬»ŒÅá–/ B†&Yb0î,O=A¸TV­KéÂNªÃÔ…wJJmæ>qÆQ•ãs¬Ó…sÌ¿+ËqÏ-Ì1˜Ì¾¾ž ±5°^Ë‘JxÜ6#õ!<ñ´*á#Uâ)Ê’ùŽŠýðü?öŒø—ðáíàÛφÚ~/ø¯Ä°´»ñN£¡êþ ³ð­ÏÄ;øÏâ=þ½áí7Á^ðV”>ërO«¯‹õ ©Qðõ•¶›>©ª‹9ϰƿ ,>;[xÏà§Ç/ƒ7ÒøoSø›û<üGƒâg„¼3â.VÊÄWñézD–—_¼zqºµ‚ûL·Ôç³Ó//­µ GN¶»ÆaÂõ1Ë,†y—¼|±õòµ…öê5Vc‡­WS%$”1.½Ô©R“R¯R•HÐU%nª¾xƒG'žS„sµ“C(Âgï0ŽSü—†Ãã(f”¥S°¸¬6#ˆ„eOJ½)âÝÎ-ø~û4ülñ?ÀO~ÓÚ‚¾Ýð7á׉í<ã/ÿÂGá+oì_\øFÒ×Mÿ„jó^·ñ~¡æÜxï±ý³JÐ/¬ûW|—H–:“YøU~»/ü«yÿÿ³œøqÿ«ö/¯Ï?€ÿ³×ÅÚOƧÀŸ <2Úö«i¦ÝkÚö£y{g¢økÂ^ÓöKÄÞ-ñ©5¶“ hv ëç^^Ü£O+Egc Ýüöö²ðd|PñŒªæõ0 ñ.3(§Šr–’ÀaòÌ«øÚ¸Šó§í½®:´gR'J1£©J§Òñ—†QÊ2¿ 1\6³|ã4ñ„Öm[)TaŒÄG8Ži‹ÂNŽW •iákPŽÙájÓÄb(Õ¥ˆ«$ÆcøF®Q™pÞo_ˆ¯‡­±çøì&qƒ©,5Z«…Îhºu?vTçÏæŠýSÿ‚xÁUÿo/ÚãoÀo~Óß|ûJü øáñÃß üYðÇdz÷°ӼSâ©|.¹¤ë>ðÇ…‹ÝiMtºÝÌ敬éW:}µÞ5œ"vÔbñÏÚwös±»ÿ‚œþÑÿ±ÿÀKO iv^ñ†‘©x^-oÄÚO…ü%áÿø›àî—ñ§]³¾ñˆutÝ#Lð5¼¾)Ó1w~×ËAµ´Š)u9’ÍýÜâéçXœ‰2¼M^ŽE[ˆécpYij\²¦Y„ÄSÃce[‰ÊòlF®u©NQ«„t§IÎq¯û¹Dù.&ðs …È*ññF'°Ø-¡ÁÎ__†kðös€â m〡‡ÁÇ5ÎðÙ¥ ]xK ¸ ñ'ƃð¶ÿ_Òµ¾ x[UÒcñ‰¢ñN§áËë/ÿni¾›ÄòM§Ëo·±\U?…ðOŸŠŸþ ø{öƒñ—ÅÙËöpø3ã?›ÀŸiŒ:WÂíÇ0°c׆¦k j[‹KÔŽiôÛ«èl!Õ,ámCN{­>[k©ð|gÂË ,oöæáV"HÖW8VÅT„ªG †äŒž*º„*Jt°Ê­J^Ϊ©:u{ááG‰1Ô²Èðf{õê¸jØß«O*s£ƒ¡V• â±n£Œ0XwV¾«c%BwˆÃº©E?„(¯føëð;Ä¿³ÿŒ4¿ø›Ä¿<^|CáKøcÅ ü{ |Dðw‰|%©júæg­é:îƒs*yu ëv&Þþ ä’Ť{U‚kif÷ƒß°‡ÅоÓ~-xÆßÿgŸ…^!¿¹Ò¼ñö–ø¥¤ü%ðߎµ['h®ì<öûmGW×Z …û)½·Ò—J’ìKk¡,ö·±Ûv×â“ —PÍ«æxJy~)Æ8\Kªœ13š›,?•æ¸,V]™`+ÔÂãp8Ú0ؼ."”œjQ¯B¬cR•HIYÆqO®Í3Å(¢Šè8‚Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ŸÁ~5ñwßh~8ðˆõø¿ÃWñêzˆô û7WÒ¯¢VA=¥å³¤©æE$¶÷a¹µšk[˜å·šXŸ÷'àGí×ð»þ ¯xöXÿ‚ˆ|ðçŠü_ãmCNðÂÏÚá½§…<}¢ø«^¸KØøŸNµ…WN“X×f¶u_ É?ƒ/u«í>ß^øYc¡Å¨kPþ?|ø™ðßá‹5OâÇÀíö€ðOˆ<'©x_SðV¯â]_Áz¥„·ZŽ«Yø—Á¾2Ñ#¸½ðÇŠôë,­õem>ªkZUÕ©‡Qiaú·Á¶oüKönñÖñ‡áì}ûz|GøÍá+˜õÿø/âö½ð†/‚¾ñ¥˜ó´m^ßÅžºÕüIªÅ¡ê;í:ãZ°»ežÞÞí¬ ¼Šmÿ1ãܺ†guϱæ R\7Äy\„ÇNötVb³6#JÜe‰¥¥ýZ”œ£íæ§GøŽÍ²Õ5CxŸ f8úøï8Ñâ±8LvSJ¥5W–¶YˆÃæ5å„玓b´ðØšp¥ŠŽ‡±©WÆ~&þÈÞ8ð·í½ã¯ØwÀR/¾$xoâàÝ `ƒLmWMño†txK\ÔüÙžÓI‚_kÚ~·¯L×2Ùhío«Æ÷2G§K!ýRÿ‚|~Æ?²ì…ÿ'øKàíköÌøIâoÛ.ÂoŠm©~Ïÿ >xÓÅš®­ðwÇwþ+Òu¿H´? ÞèZ%Æ«â™ôoéº]Ýçö,:T:m­þ¡g_Žÿ³gí{ñ¯À¿·&­ÿ ø³¦é^&ø­ã?‰7ž3ñ?ƒ­î>Ç¥Aá}CÃzÇÛÁÚMâD鉤ø]¸ð熮&:¼šU¾›¢Ü_¾©sÚKõæ›û}þÿmÝ_ö¼ý›?cOÚ^øÓñ/â–»ñ â^±ñ‹ÅÓ~xFoˆ¨Ú|Z¸øG„µmJæú÷Åzwˆ¼Sy¦\xûÅ7zf¨kw_eðU¶4ÛmÁâì/ˆŽUO‡å ]jxþÄaqج› “NVÂÔÂâð™|Ö2YvQR5¡SCŒ¬«W†KF'ú_†qðG‡ø¯ˆ8›/Í0¼Ù‰¹N7(Àg9î{¡–ð6€ÇÑÍ2ÈäµéGˆs,·1–; *|Ë-T°X˜êÁc±8åä_ §–Oø,ÄVv0i¿ðXÏXØÅŸ’ÚÐ~Ö6·BW¢D'º¸(à4¬GZ¿ÿ¦ñ'‹¾,ÿÁWhøëÄú®¹à€:Àm ᯂ.'uðþ‡ŠþxKâ&¡r–”·šê_xŸÄš•ÍÔñÉwxך}µÍÄ–:.›k#«þÒ?³<ðRˆ¿iO‚ß ÿi |0¹ý¤|-ûQ|P¶ø«càyõWÇòüV²ñ¯Ä놱øÄè©¡jöö–×þÑõ¯^ÜNãXMCYÑô±§ØXy'íƒñûõgíõûZ~ÑÞð§ü)à/‰7Ÿlü/kñB°Ð¼Asÿ óá'‡þkwM¬ø‹FšÎçYðµÝþ—>Ÿ®_ùÚ-ö—uv¶Ww2ØÛú¹6S­Å\!šb²¬E6ìV]V¦25<m,~L–kš~Ë<-,b¼$Ô¨:°r圢üÞ+✳-à_²Ü£ˆ°ÚyωÙ}–,³ ¼Ï ÅR«™–tìªÑu±¤ä­^†!º:”ãR?¥ßðq¿‹ümâÿÛ£à¯ÀGÅZ¤4ÙWFø¹uà[Y>Í¥ë1×þ/|J𖥨êMŽk¹%Ò¼'á«(Ä’‹K ]NÎÈ[G®j¦çþ íaðþGmg‹h.¿eoˆútñBG%¯ÀÿÙNîÞÕ•p<˜nm –4ÆÔhÔ€1_&ÿÁOkÿ~ÜŸ·Žñ“áW‚þ)x_Á^ý•ü9ðŠòïâ_‡4mMKÅ:oÅ/øîâmx›ÅºMæ—ý“ã:Õ$—TµÔµ4ÝnÓ#¶³‚òìÿ‚þ×þý§¼7ÿÀøUðûÁ´íOöDø%ãOüOñ7Š|9£Zx/PÖµï†? |eÿž³¢x›_¸»·]Sáf·,ÿðéÞ»z·‡$ŠÒk‹ë»];Áá^ͲüƒtªeU°³È«gÕ3È{8Aà*cr,Ò„gŠQzK‹¯NK™Ê­Däõ¹ö<}Çü7qÒ648“ŽËø—ÃÜ¢|.£ˆR¡š×Ãb°x¹ËšJ¦*ŽMÇÚ¥^pôhÂÑ¥Nœ~¾ý´µ~Ëþ úýt-Ä:ç‡ì|qûkÇá?.‡©\éͬèxãö´×ãÓu¬wÖvÞ!ðþâ kKÈçµZÐôDBnl-¤¿ðOBÓ?à–_ðX¯ÝÚA¦xÿ"ñ¿†­Ø46‘|M¶øwñkPÒu˜®¥$Üxˆx‡Á_ Þ;·’KöºÓ´Pe,¶¡}¯â§Œ~ø?þƒÿöÚ/áˆþ.ü<ñí‹©xqlüãI|ãÏxŽçÅ¿µ¶¥¡ü@ðN£:ÏáÝO\Ò&Ò¥Ò&ðÿŒ¬¯|1«èzö± ÂØêi¥koæ‡í1ûoü.ÕÿeM{ö ý‚>|~øeðóâ׌4¯þпi9|!ÄéÚ%Ö›{gá}5>êz—†WEZ>˜.$Ò/íc½Óm.ôµÑ3â-{Pºò°8\vu–ñ?à2Œk­‹ño7ÇO;QÂÂÃåœgO1Åâ]¬ýebáCð´h}]U­:ô•6èF¥J~úÅa80ð{ŒsŽ*ÊpGôÈðøîÄc«Ãšâ3O¤ò÷Aañ8WÌ^6¦"u§Gõj´Ô>»ˆ¡Côç…µ)uŸø6_öâÖ'gÕh„Z”Ê ßxãö(º(VàW¶þȺÇìÿðÛþ ûrü@øÛǘ<'ãO‹~øOñ_Zý—¢ð+|oÓ>ê|7±ð¸Ñføƒ=¿†ítmKÄ~7ñƒ¬Ë¨}¨¾—®j‘iö«|ésçž­ûXü;ð'üÛöŽý‚­|ñO_ø«ñ‹ã|QàÍSÃÑuoé>ð׈>k³ßÛxšÊçû?àïˆ-":o„ukC¨j~†K¨b½¾ŸLè?cÿÚïNýž,¾-ü1ø£ðæ?³oíá)<ñ“á<º£h÷º…ªÃw‡ˆü)«åF‘â&+ûŵž9ôór^ÖTÕ4SKÑ5Í#ÚÇp¶y‹Êxæ•<&-U­âN ‰p˜ZUéákæù^_G‡*ÔŽ VJ:Õ^ðR®ãIãpÔ£W– Í|VYâOå§€¸üF;-žW„ðߌ¸C1¯VŒñ´xg2Îjcð¸if˜:q–!á¨Ã‡£˜FŠ•E–â±S£íeN]ƒloø&ìïû!~ÙŸ³·ìÓðþ Syâ/Ú‹àÜÞ²Õ¾4ü8øu¥iŸü)áï…ž)Ôu_øÏCÕíbÒüeâ›}k[Ô†•â;ëx´ëit],Inl¯?><3ãÏŠPü)ñ7‚4?‰_~h¿¼¤è¿ôxÇ_ð\^/ÒåÓnb¿ð׌´­>â J’ÓZ×ô;íÄ:uõ£iz滦Il°êW‰'Õ_¾7ÿÁ44MÆ6??fø(ŸŽ|{ªxwÄO…ãf»ðoÂ>ð‰u-2öÏCñ/Úþ6·{âx<1©ÜYêÑé·ºÔV:âØ‹ùR ®g{¿³í!û?|ý™l­/ãOìý}ñGãÅ¿ƒV~ýžîm>ø âUϯ‰w^ø‘¢®«6±â oH×¼/keâŸx+SԵχðê:»XøZëT‚ÜÞé<7?K•apù^[æXl‡Š3Zùža”VÆ`ó÷„©ÇÕ„°tqt¨Ê­HÓ†Y„¥F½WZ•)J%*¤¡¯Šã\×;âN!àÄ>pŒòˆñÈøƒ…3ln+ —OK›ÇŠÅºp©(gÙ“x|=JUq8Zu³gŒt)Nt¥ñŽ¥ÛèšF•¢Ú<ÒZémŽ—m%Ã#Ü=¾Ÿk¤/;ÇQ´Í*Ò´qDŒåŠFŠBÞoø7ÓþO3âgý›Œÿõjü¯Á?^_ꇪÚý‡T¾ÑôËÍJËÈšÛìw÷6PMykök–{‹³Ü<‘yóE³Ë•šEbLà™?¶Ã?ØSã‡~2|UðÏÄoø{Rø%âŸÙèß t_ëÞ)ŸZ¼ñ€|UoåéÞ#ñO„,e·–Ç¢yZ¤—o¨Üéð%£C4÷ÞŸ‰v76àN%˲Ü5L^;–N– I'VµGR”” ›IÊÑoV¶?1ðS7Àä3ðNoĆ‚Ëøž5³,ƽDðô´ÄS©^ubšp•Y«M&Ÿ2kFr?³ÿíÑÿâýŒô­;Æ¿°ÿìûi|wø¿¡Úëið¿Æ?¶§ð·FðOƒuZ}J r5ø?,úf³.=íÔkÅ…¥ücÏ‚Ë^Ñ/u(¾Êÿƒzµ/ˆþ6ÿ‚€~Ó¾2kƒÄ?þ4|ø‰ã¯j1ìë¨ê?~]%…¬p“ooi`o'·²²²ÆŸ¦X­®—§±ÙBïüü|Óïô¯†~°Õ,o4Ûè?¶|û+ûi¬îáó|AªÍ›mp‘Í™ ‘Ëô]ñH’.U”ŸÖ¿ø&OíŸðÏöøáãߌŸ|3ñžÔ¾ x§Á6z7ÂÝÃú÷ŠgÖ¯<_à[ùzwˆüSá må±ð†£hžV©%Ûê7:| hÐÍ=Å·ÎñCýOâßìºY–uÄ9¶K1ìel~aZ*ЫK‡•yªx|li?bڋכƞÕü#­xÆZ Õ½–³7†õ­CEÖZë@»¼Ê=_OÖ|9£^Å éŠÛP¶‚ïL’ïOûhÔm=ìWâ2³<Î8rž#9âêÙLèàq9Þ:®6½YPŒêap0ž"­:8|4kNuc…¡õZñæ¯.i{Xü†iâN_Å|[ƒà>&ŽYžËŽê×âJœ1‚§…xº_Ú|˜¼ã<5*²Äb11¡F­luJXÜ]0‚ÃMáèà /Øoø#gìÝû~Íÿ¶'ů‡¿l†~9èÿ¼aáïˆÿ þ|*ñ]ž… hšwÄφ6úλ/Æ‹«ëÿ xº]Ä ¤øvm N®óx†{µXàÒµoǯø ÕÅçíû#Ís+Í*ÁñÂÙ^F, /„_¬­cÉçl6ÖðƒøR5«×ÿcoÛëöýƒÿhéõÏÙ;ö8ýª ð/Œÿá#Ѿ)ø×ãoˆ|Þ5Ð<¯_[këá?…z/‡uè~Ò>ý™>k¾?o xoâ>ŸàOã Æ™ã5Ð ²ý‹_Ñ<#¨E¤øËÅ" ¾ •í|!š×׈µÅºšóó¼>Mĵ©x¡,V ?ÆÖ⮡C+ÅfxL› _Áå™î ¦[,.NéÐÂV•lÃõ:á*ò¡Í*ø‰¸ÆRý»‰3þÀáü£–fÜ5„ÃøãŽW›çÔðx¯öQÓSÀŸþ2xÃ÷^&ø^<9£øÂvV_ü¤iº¤Ö:bi~ð„ZÜ·ze¦— χaÖ“ÆÞÓõMoCŸòSÄÞ=µø·ñÃö©øÉ¥ø{Å~ð÷ÆÚ£ãÅß hÞ7ÒcÑÏ6Éh>áZu²î!¥É°ø9àq¼1 ̲Le<µa*þçQR«B½•pu°òÂã0ó§'Ôá ¯Ì2þ4Ïß‹þ!Ç+â.ÅäÙÖ#‚Æäœi›c°ye±°Å*x ÃM¬a†¯yއÆà1ÑÄsVÃÏRuèÏ‚ý¯ÿàŸ×°§Ä¿ [Iwà?xc⇄.üEð¯â—Ãè¡°Ð|}àèît‰oæ‹M¶žkX/lZ÷×·Ëgu­XGe­èwVíí¾¦ ýWÿ‚ÃêŸðLÝã‡ìíðcöšð‡ü;ÄÿÿgÝ|#ð§ì·¢üÕ>^|>Öµ kFÓ¼Gqañí5ûï¼6º6¥q6z'Ùt=m¦µËsùûnþÛ§íÑñoà>ø;â/€ÿ³ìðÇRømðwÁÞ4¾~4Ô`Ö´­EÔ¯µÝ’ΰÓ|%àû =5.õˆí ðºßÜë×÷ÚÃAgõN­ûl~Ë_¾ |$ð7íÝðgöˆñ‡Ž?gÿÜø#á·Ç/ÙbóÀu‡÷ÙÞGƒ|wΈZ–•£k}Šé`‹Y·}wX3ÙGumg¥]ê^(Ô|AóøÌ¯‹sgÙõ ÕãòíÊ9Ý©„ÂæÔãš*trìÒ8jug„©Zž N–i„ÁÕŸ²–cŠxXJA}ŽOŸøÂ]â§ðÖm‘æT8³(á\O b8ÃŽÇdX|vOSW4á¹ýhÇ¡^xùârLÃO ),†:Tñµc9øoíëûj|ý©/b/þÌ¿ iŸxsörø9âßþ-׿h/øCÃwÚïƒ4MÀü$U½ð/‹¼ßu][âŽô‹Ï |OøiðËFøká xZÖë_мU¤êsÛø+á~³®\[]Ic©ßiÞ(ðü3ine©YêWø¢Öâ;Ä?<ˆü¦øhê:ÀÕì|Suâßxâ×ÁïˆÚ–—ká¨ãšÓ^ºñ·ƒ§_x/F×ãZê?I|þ‚ËP½žóÄ1 H®<Hñ·Št]2ËHÕæ²ƒEñ$^/Ò<¸-m3ÄQÛÃhú……ÔÖò]Zý®ÞÖÊ-NÒ’ÇV];L:µÛišy¶éáøÅã{_Øiº‹x~ ]Yé_ þé^Õ4+™¤¸¸³×|§x>×ÂûÍ4‹$·ºÞ‡~æ×OÝtF›§‹P\ñÇÁøKW—X‘µØ¼#£ü3ðÏŽüCá«Oˆñ¦¶úÇŠ ?†4½fþÃÆ…¼/ðbÃÇ[ióøf_ë^8ñïÅ«Ëx[[ñh6º}ý‡ü vïqg®6‹gqemë6Þ¹…&Ðï|0ürø”ú§ö½Î­¢j-á‹Ok«xÀz¾‹{áÝ&üêZE–¥áÝSÃ7~ÔæÑ®„_ØÚ–£¦]jšE­­…†›{kc§ØÛ[âx—âŸ|a¯ˆüA&¥»ÿhÕCXiVÍtžÑo¼?á8D–v6ò[Ûéº^£v“[Z´6ú­ãǪëê­½µì ßâÿƒ¿-"ø‡¦xR·‰<+iðßPÓι©èiPjß/<1hÿ ïÒÛBÓnu]kDZÕîfñ”3è·3øzóO ‚&:´Y?> ø?ᆆ"Ó¼I¦ê>+ÑügyáN;Š ¼sŠ,­m/oiþðMÅψ~XÛj6Å´OÝêZ¤ë¨Ù4³i÷¶÷Úl~9ªüEñž·'ŠåÔµ§–_ø—Nñw‰¤†ËM²’ÿ^Ò2æ±³¶m2ÒɼCª4F’ltug²&À'Iû xÃâ‰ ðÆ¯©Üêoo%íçˆõ xGÕ|U}4¶Ë?Û¼My«^E<׳ÃuûüOø_ûYj_~"øâûRøC㉥¢êž$ÑdÒäÕ¼ðûâ>¹áøŠ} V¾»µÑõ]7Âι¦ÙjpÁªb\Ù®·¥é:‹^é–~“ñOþJ?¿ìdÕô©ëÁþ/×¼â+øfâÊÛZÓ£Ô!¶—QÑ´_ؘu]2óGÔ!ºÑ¼E§jº-ü7:uýݳŧܯ¢_65IãŠDù¦©ªÊ-þöí¦¾&ä¹t»zYó%£V÷›_µRX‰`èªUc𠃋OÛJ•5J§µN\‚RRŠ¥6Ü”“\®3úÓÆú‡üi§øsûU>ßÅiàÏ¿eø‡ðkÀúwÃ] SÒ´}M;Á> :Cø'Á¤|CÑ’ÃWÕõÿiÚµÆâd´Òµ ß.ÚþãÏô¿„Ö0xOûBÚKé|E¬ü#ð¾¤,¯-4;û?øM~#|d>ðΕg¡¡Þ]ØZÜü2¶oEya,>!Md´šv£òÂþm/ÆoˆrëöÞ#m[JK»MãÃÚTðm·ƒ¡ðåÝÄ÷·Z xßÃñxi…Ìú¤Úwü#¦Ò]YΪñ6¢«t²Üüoø¡y«®»wâ—ºÕWTøy¬ýªçHÐ' ðªÂ}7À¦[yt§¶šÓHµ¹˜Üé²Âún½vSQñ¦­¨EÒStäùšmµkÙ^Ü©'~fÛN+G}¼ìg ØB4áR’„Zš<¬Ú­)ºn*ŒcÉ(M§(Æ šQ¥ÞÞ¹ã_|8<Öïnô­rçFñ¯Åoø á¶…àýÃÙz?…5m3@ÓüO©AuáßZjéªM¨ÛEoáý?ûmBóOÖ.nøÏã ðÒnü=§x'Â7Vº·‹.|#¤&Žúú–§§ø›L´ð®ŸöHõ/ÿa\k1êWºõ½Ä-®ï„þ|-m[àCj:?мcájzž-ñ–‰ñ/Ã6z$×ÖºßÄ?Oá _ßx—Âzß‚.5¾Óq­x¦6ñ.…¥Ü_èé¤ÛëözÖó\ÿ|_qý§æêùþØðf‡ðúÿe†™ÿxsþïì"ßʲO°ùð‹h¿k¿±û6§ªùW¿Ú··¿Û:Ïö‡Csñ§âú·‡u˜uIŸÂ·W׺%‡†ü à? ør ½RÖ ZæïÂ^ðÖ•ámZmcO¶·Óu™5}ùµ}2´ÝDÝX¢Û:I¦àœ~Ì]Ò’½îí¬SmïÌíug¡i¨â¤ªÝ{Z±är§.OfáÉ(T”cß"§wNueÍÇþÐõø´OüLñ§Žô_‡¾³ñF‰öCµo iÞ¿×5ûŸÜßë×¾#Ôõ7QµÓô=)Ú×¶Ôþ9|PÕ®|7wsâH­ŸÂ$¾ñ‡!Ñü?áØéž#ÔÓIMGSM7AÑ´Ý:âKÿì[)o`»µ¸µº¹“S»žºÖõ©µû§¼6åÑ%®‰I¶šÝݯD´W4•,ž}I<#¨ÙÏeá-cûGNŠGD¼ñ/ˆZëH´¾× šÞþúÔ~"x§Sÿ„±%—C²´ñ¼:,>#Òô/xCÃz%Çü#ÓZϤ\iÚ‡´-/Fðýõ´–¹}GÃÖ:]ýÚ^jñ^ÜÜE®k)½gñ»âu†¡âZÛÄq.¥ãlx›W¼—Ãþ¹ž×Äq‹õ·ñ†ZëF›þnÊ-NòßOÕ|4 í:ÒT³°žÞÖÞÞ„ééxí½¡}fÕÒi=á»ÒÍj•¥¡‹÷:¶rµ£*õ§Ê¹pɨԔe(ë MåÆRU"ýÙ;Óö üø^š†ôêÞ4ÔõOüKø™á 7Qð½÷‡ô½ÃÁ~ mÊßâØÔ´}nâõb¿(¸¸Ðm¥¶µÕì4åHüMáù¬g—PókŸøF×à–ãû;mkÅíýÑÓuÝKJñ¿†ôý/á®».¿¬Á¤è~(ø7…µ?ëø‹Âú!ÖtÛx“Ãú#ÞêO¦(¹¼Ðníµ>²øƒâý;þÿ±jÿgÿ„[þ%ð®²ÃL?ÙÚ/‹ÿá#ÿ„†$ßdÞuõ÷ü%zß—¬ÜùúÖŸçÙÿfêØú7Ø%Õþ"x§ZðÎàû™t;?iÇMqc xC—T¸Ò,î,tËïj>дOÅÚ•µÝêÁªø¦óXÔ–Këûƒtn/®å˜~ÊÚSIò´´OV¡«½õº–¶nÒÒÏUj–1N-â9ãí!)Þsã•ÛŠ„"­ÍNto5zv’;Æ6|wü#ñÀô ‡ÿN6TS¾:ÿÉ$ñÏý‚¡ÿÓè`RTeoùøÿôˆ-Ä­¼}+ëþÉOÿOW?ÿÙxerces-c-3.1.1/doc/html/graphics/saxprint-3-header.jpg0000644000175000017500000002652011363617746021537 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ#È"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ø^Š(¯õ ÿœp¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠýêøÛâ__ðOßø'ŸìYñ7þ ýðûÁ‹âßÚ'L“^ý¢ÿk=GÀzÄ?ü3Õï¼;¢kG„¥:î—®i:>‘q©ê^-ð¥£êz|š†§àxô£h¾&ñ|—w_-ÄÜK,†y.‚§ŽÌ¸ƒ2yf[GYnW†¾.¤ñ™ƒÃc%B>Ê„¡F&+‰¯:thPœ¤ÜLð××Çõx“‰Î#‘dœ#‘OˆsÜ}<ö¶:ž8¬>ý‡*úî]T¡:þßR¾a‚Ãap´ªÖ«ˆRöTªþ Ñ^íñÇöÆý®hÿøkÂüGð7âö‘ã]'ÅWÿ¢øá?‡î¬-týgKÔ¼7ÿ OÃÿì*ëAÔ"×%Õ®4Éü9 ÝkúN…{%ÔQX¼vÿÿdükðuïÄk¿‹ß³‡Àÿ‡¶^(¾ð`ñ—í ñ«Ã t»ßéšN®jn›g{öý~øÚiºþ<—phÍ`Í{äÅu$¶×©mÛÞx»ë¼IK’ÔWFTè㧘áå)?Ý}^»Á`«×•T›/©Sª¹eî4›<ÌoPÇgô²nÍ1sG‡úÅ E,ž¾KŒ‚ƒQ¯v_ŠÄâ©àãFR‚öï[58Zª”¹”¨¯°?jØ“ã쥥xÅ~3ÔþøëáÇÅ+Y.¾üUøEâøümð÷Å"+XoÌZn²ÖUÛ4Ú}ÄZ…Œói±Yj¶^}Æ“w|–WÆÛ{àŸüûãïí û<ø·öŒøU…jžÒ<[ãÑâ&ѵ?_j¶|3á-{ÆwÇP½Ðô_jq ô¿^Ádmt{Á-ô¶±Íö{y%ºƒì­þ ;ûA_ø«Sð'ˆ>&~Ìÿ|pÞ/ñ‡ƒ¼àŸˆÿbð·~2\ø7_Õü7u­|,ðlÚÇŠukZމ}'†¯õí#ÃsjúoÙõT´‹O¸Šáº³N*áÜ—,k›àð8¨áiãž½G¿T«SJˆÁEÊT¹ð¸žyE?g jTå§ Iyü=áÏñ^ pÆkœ`'˜×ÊV/AT ³,= "® u£uý–aöp¨ãíªb¨Q£í+T7ùÑàŸø“â/Œü#ðûÁºoöÇ‹üwâ}Á¾Ò>Ùa§ÿjø“Äú­¦‰¡é¿oÕn¬t»·j—Ö¶¿lÔ¯lì-¼ß:òêÞÝ$•:ŒŸþ$~ÏÿGÚ~ÍsäÝÃqoѳŸÃO|ÿ‚…~Î_ þ$ø~ïÂÞ9ðWíeð'FñƒzÐÉ5ì|"ЯZ e³ºò!»·–+›Yg´½±¿±¹µÔtÍFÊyìu-6îÒþÊyína•ý|䙞3€ËóL3…Œç_‡¯ “Œ)ÕöjG•Ú­:5íBµJNp£]ª5e ­DøÌß‚¸· Êð9Öuù¶Y•f3…,;ƒ«F…JµpëFŒå8§‡­ˆÂ5‹ÃQÄ*Uq8KâhB¥ê.Šú“öÄý’ü{û|\о |UñWßx×ÄtÏŠVpü>×5VÖ/ j¾&ñ?„íäºÄ~𞬗 «xOQYž-*m9cšÉSP’æIí­¾[®¼»1ÀæØ,6e–âiã08ºj®E·Nµ6ÚSƒi;6šÕ'¦Ç›ždYÇ f¸Ì>Ëñ9Vm—Õö8Ì.•ðõ9T¹f“”uŒ“N2”Zz0¢¿ ?ø(·ÅÚgþ «§þÍÿàÞðWÂ_þ4ø?iâ¿~שð¿ÂuÔnmõ WÖ|a¡xA[ë/x¿M·¿·óµk\ZxrK-ÁóZÁø±ñÏö›ý¢ÿi=GáåÇÆIþë^ _Ç«øãÁôo…Ÿ|jž!¶ÑþȾ/¹ð•Ððþº¾¼Ð :®‘¥®›m¬øâ[ø¾Ïòœ/Åy—ÒÃf¸L— K‡qµ1p¡Ž–vêæ°Žu©Bx¼¢9\haåV­(ÆT!›W¯‡U­N2„à¿ZñÂl‹Ãºxœ§6ãØÔ㬭Ñá¬D2ŒDqP£ZT²î'§šâ>°áB¥Yaêb²l,lè¥B^ʵ*òò:+ì¯Ø;à·‡¾3þÐúü,Š×à×Â}[øáñÃT»@úu‡Â߆˯ë¶úŽì/Ù|Cy™áYe pÉ GØßðW­CÂß4ÏØÓþ 'ðžO„ßµ_Âé¼â V¥¼;ñ[ÁoÕô3U¾Š7zÝÖ‡kã¿Ýì™­ü$„ÙÛÆ'’Y·Çñ–ŹO Ï VÚtj{LÍTQÃ`ó ÑÄbr첤\ž#…Àf5Òö´åF40ÉÒ¨±´å‡ü%Íø‡Ãn)ñ Ž¡N7Z)äs¡VxÌÓ(ÃN…ï8¡Z3壇Êq8ü¶Œc:§çÌœ1g•U§[ñ¾Šý8ÿ‚sþÓ^ ðF«ãÙSöˆ›í¿²§íAiÿŸVêh£‹áßoc†Ëô«‹¸®-tyôûÈ´èu}SÉQ§ý‹Bñ<ï/ü"Ö“òÒÿÁ:¾(xkö½ñwìÍñU·ðÇ„¾XÞ|Gñ÷ÆëË7¶ðŽ™û;Xy×Ãã$aÞhL:®—é–:$Ww‚­çƒ%¿–m'R¾‡Z¼Y…ÀfÙ®WQYZÁ`o—båZXŠ9ÆW xʸxÆ…9ÃÆN8lF[ˆ®ã_Z„ê¬Z…>/†¹ŽuÃ9p¦)ñ Ì3…ÃyöY *Áã8_>ÄN­L²ž:SÅW¥W%Ͳø<^?©,°Ù–K ,µÄ~xQ_ _ÿjûLÿÁHÿc/á%Ç?d?Ùûöƒø!ð¯àZ+i%Õ4Ë_‹þ}kÆZÌï7‰‰ð£Å~xßú·Ž¾øÆ!Óµ}~ëÃÚgÄ9¬¯üCªk7ÓlñªÝÆš‘²°º°°´¶µO&¿gï6Ë2L `§˜æ7ˆjÐ̸†®_õL.0Âà¡„”ðÙg˜ùLJ©V›t°Ô*ªôc‹¯ tñ¾÷/ð_…°8§‰óï«e¹/ gù7ÖÆe|W<öØÜÛSšæ8ªYLÚ9’£ÇÖƒ­õŒŸ²ìÊ…”Ó†%ÑÆJ:.’çĪÔ]*\Õ=œ~g‰<㬛‰3œ‡(Ë1ÿ‚K~Û>ø1ñKö/Öÿf/þÕö¾ø±ñ5|QãOxÏTño‡ü_û?ivúÇÁ¯év7 u?kú¤ ®t­CźlZž£áWÄ÷–Ö¶·÷^1øìÕûü]ýªü û@xûá}÷„Ïötð•‹üW k—~%Ox¢ÛSѼo­XhþÓ4 ø† g_»‹Àz­•½†§{¡E6£{¤[Åtéss5Ÿv‹rÙás¼~?Àåù>sO)xÅxŠruéå B¢¿E#ÿ‚e|x¾ð7޼MáÿþÏ1ñ¿Ã Þx³â7À?üfÐ|]ñÓÁ:˜d½Çˆ|# ÛÞèÖwZKÃ=½ö˜¾'—S„i6Öw¹ŽÅöÿà–_²WïÚËö‰Ò´oŠÞ*øp¿¼6óɯü,×þ ê~ø›ñ]5_ü@¿Ó#øQ¦h±Ã©øš/êþӵﵖµ£Ë¢øjHî¼Û¤ºhBÅq¯ á²|ï;§˜ÓÇ`ø~„«f1ÀZ¾"»ö´!N“pRxÄâ°•e8aks{EˆTc:ãÀxUÇXÞ%áN¯‘â2ŒËŒñtð¹Lâ3Á`ª¿oì1Uªâ*¸G-’œ³=:uqønGIàå‰*?4(¯°n€¾ýœ>)üGøEá_x¢(´o|kÐõ]+N×<ã?KÔÿ±o4;ÍGÅWiªxOÅ1Þkדé—2•íe®;Ëpy®sžIV¢êBTª%wBp–±9ÆP•œ Ü\¡9ÁÆrùÞ+á\낳üdž¸ƒ °™¦YYR¯T…j5!8Æ¥F¼…l=zR…JsV’Rtê•hT¥¨¢ŠôO (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ ûÇöKÿ‚~Ñ_² ¤þð¥Æñ+àæ©5Óx“àwÄØfÔ¼ª[j,ßÚë¡_Æ“ê^ Ôu8ä¹Iîl Õ<=w=Ô·ž"ð‰fŽÝaø:¾éÒ¾;ÿÁ?u¯øOIý¡e/ÚÃ)ð—„|?áÍGâgìiâÿjÿ.ü?§Á¤Ç­x»á‡Åë«]G×µ[[(/µýo—zƒëÚÝÞ¥©Üéú|“"7ËñfŒË>¥šðæ+‰2ÜED±8|%,5zØYE^Ž.4«b°¸•(I¸Â¾_*˜Ì<ÜgFŸ=Z¤ø[ˆÏ°\K Ã…¸×)àž!ÁÑrËñ9Î.¾šB¤”1Y]LJÁcré*Ôùe<r¨à1°Œ©ª’Ījýcûcüý”þ6þÅ—ŸðRoÙ‡ÁÚ‡À{? |AÐþ|ø/xÖ’xgÞ$ñ»á Á¨x`ØHúuœQk^9ðTñ ;R𿈭µKøC]ÒuÍ&o‘¾ÿÁ=t¯ŒßµoÚöŽø»ð¿öqý—<)âQ¦ÛüEø¡m¯OâÛ<Ú\–þðF›-­Ç‰ä·–æóMŽÙ¯¢¸Ôu8îlô‹ J]?R—MóŸÚ¿öÞÑ>8þÎ>ý„¿cÿ€ÿgßÙ`xêËâÅŸüfÕ4ë¿‹?5ý:{[›#®ØéM&‘§ÛÅw¦è÷ïm¥Ï|·7ÞðÄVóhZF•5•÷Ðwí‡û+øÓöð÷ìQûi|ý |{àß…?_â¯ÂþÌ×þ‹ÆÚì—Þ-Õˆôï^Û鯧K7޼i¢êÖúw‹$ŸBñ"GoáÛGFµÖ«àp”øë(áocƒ§›ÊâÏg„X·€Íø›(àŠªÐn8ªõð˜ÌÊ…x%Jª˜ú˜l"*´+VÂÊ”?¡±Ø³2LFq˜ðî6¯ÀجF{‡á¼VaÃü™ø™‡–4)Ãú¦7&˳<-l{¯õZ¹Lqy–ŒèÎ… Î5±?IÁCl>ø_þÿì±ýþ-Añ«áNŸûuØiø©aðÿÄ íüG§_Iû^Úx–ÊÛÀ¾(f×t=Y}_ž]ÙòµH´eÕ¬‚é÷ö€OðËâ>Á½ðP|5ñ&£áCñëO𵯈4‰M¶©c£üEÔ?e‡~,ŽÂí15Ýÿ„¼U®iÐj öŸ%ؽ°¸¶½‚ ãùoâüöUøÓÿ÷_ÙWŲGíðÛLø%ñR‰¿²&•ðÓ]𯈮ìüO§éþ0¹ÑõW^*ÔÓY›O»ñ/Ž|c'Œãð¿„|­KOñ Cá}+ÁGJÓîãòÍgöÈð‰ÿyý¤bsà/‹š¯Æ¿<ãÿ Ýè¾Ñ5 h6™â€^)¼·ñÒø¦?隌6ŸüEbÑéžÖ¬ÓTÔt i/’Ëë7ÃÃpÖy>y^;)ÌkÖ^-àsìJÌ)eÓž3$Åqʾ;½¬¶j8J’y<%*xZuÕz4(ûÆ'èRã.¥âWg¸ û"Áàiø#œðe9`sþÃÿðXˆÕ%³ø‡àÙš×â6™â눡¾¾xWáWí9âÄÅz—óµ–³amumgq¶©IÇ"™ ˜ÿðm®Ÿs¨~ÖŸ|mâmSPñOŒüwû(x—Zñ/‰µË™¯õMIµO‰Ÿ/„7/,’ûA{©]š[û繿ºy'¸b>_ý›?l‡_³_ì‡ÿøKâï |LñWŠÿj߀_ ¾/ÃÝB×,ôßê^øÇàˆïa¢øsEÐVt7@Ñ´ý%lá´D?KÿÁ´ûý+öÔý“l5KÍ6úø^þ}•ý´Öwpù¿ þ2Í›mp‘Í™ ‘Ëô]ñH’.U”ŸmñÏí7ÿÚøYûcþÕ?¼}û!~ÕçÆO…ÿ¶×í·¾øEã/x¯à_Å?ˆ¾ ø¥ª¥¯0ꇄþü.ñW†oì¿áKOF¼ÒµûÉI¼Òon>Á{q%•·7 ð†w”ãø[‰U`°>fy'2¥/iG ›bs<¢µ<=:ŠIÊT!J´¨8¥Sé'¤uxâ?gYŒX¼¯€ÅTÆø©À¼EK(”鯮o—e´£C‰ä\ôêBu=ž(:‰U•Fý¤©/ÓŸø*—?à—^#ÿ‚üX_Ú—ÀÿðT_üaø_¥xÀÓhü9û8k¼9¤/ƒô/xv÷áöŸã çñ,6úÖŸ¬&¿qu®2¼ÚƧ©ÜYÚZÛ­¤vÿÿÁA?lχ·í”ÿ~ |2øÓðçÀ×ÿ¼á¯Åñ£Â?…u½_â_ƒüWâ¸Wµ‹Ãž+ñ¦‘=­ßµ¿ éqܾ¯k©\?‡nb›KK[ [»Ÿ¦¾3~Û_±í1gቶwÀOÚÁh½ÁÚ7hZ&³gsð«ÁŸ a×~)[xÓÄÚ¾£«éöÿ5íoÂz¥Ç„üOáÝ-ïîžKáëë)â]7I±–ãå ý3"®ñ9F¼²š™ªÑR–SZ4¡S.gz QM|V¦”}íü¹Çø<^_ĸ¬+‰ðÜe|0|G„¯WC2Ëþ¯ƒ« â/ˆ©5 GïâãûÏyŸ¥Ÿ²ïüãwìùá8> ü@ðÏ…?iŸÙ®{dÒuOƒbŠæM;AfK/x¦îÃXm¬ #’ x—Fñ7…€¶Ž×H³ð´÷WZÅvðQOÙÏöpð×Á_Ùïöæý–S\ðÁÚkÅW>†ž(;®¼ ñ(Xø·Q:.›!¿Õš G¹ðŽ´mGN][XÒ4íoB„xkZ¾Ðµ½.ÚÃÉ,øiâMA£Y/¦ÿ„WâåÝ·ˆ~ØÜÝ™RÃCWÓ´ûO)lõ-û¢OýªlÈl{ßÙ‹àGþ ø³ödý„f/Úx‹IðõÝ—‰>+ø³Yšõ›Vñž¯my§é×'ŠÎÿÄé:\š”sj^%ñ%Æ­âK×Õ-F™ù¥<·+Ës~áÌï†+ÔÆ×­Æ­,<“3ÀýOwõ<;†Ì3Š˜Ùa§„Ì0£S“ëÇV¼Õ7ý†«Æxmä~#qÏñžG‚Èa 3\|Mn0ȳxbp³Âá#ŒÇåø Ç.Èéà–'˜äË©QV–Ž_‡<ëÑûïÀß³ƒèßðLoh~Ó¿²/ì±ñ‡öê×ô¨ÎµûV|r°ø54ÿ³€5[Ȧµð\2éÞ·âÿÃ=æ¡-¥¥–—ás¤¥åô‚X#¯¥þþ˾øƒÿ¾ý£a? ~ÔŸ±Çí7ñ+á…«~ÑŸ³g‡ÿfOZ'ÆøsUø~tb}'SÑmt½#PÑ´ŸxŠÕ¼$u˜ì¯í§Ÿâνm}sg5Μ—„ß¶WÆ=öÅý«|Mñ ÏÁ‡>ü*ðO„~~Î|c¥Zì‡^ Ó-í­e}5¦Õ4业ánog6†«§-î©w–¡w´w ê?°ÇO ~Äÿµ'ÃïŽÖ>·AÒÿµ<;ãý7Â&‰k®kžñ-“ØëvBIt{{»Ë)ÆŸâ.ÆóUÓì®u­LK»Ëx7ʼ™§ñ^e‘㳚yŠ£×Ì©qž%ž_†•ZÆ_52¼©æ*«©ÍC„ÃäµgìjGÚÿ˪ŽOÜÈ|U𷃸‡†¸:¾UŒÇäYnI>Ìø› ›ÕŽQ‹É8’Ös‰Ê%Bõ¨ÕÄãq*øV-®­®R;˜/!•.âº.’äJ.TOæ ý/ÿ‚Œ|Zÿ‚a|ÿ‚–~Ó¾%ø·ð/öçý ?h¸¤øsñÀ¾ºøW¦þÌ×·V</€à°Õ´ÛË?Šö7~—EÄãX70Üx5ñak>¬R|“ñwöÆýš|OÿøûP|7øMñ£À–ëãÏ…Ÿh Ëá? ÍàÖø‰àïxoÄÞ5¾øOâ /Æ×j³xÒ ?UžîÓÆš_ÃÉ.|[e'ˆ®î%ŸÇ7I£|·û`ü~ðßíYû}~ÖŸ´w¼)ãÿ x âMçÁ›? ÚüFЬ4/\ÿ¼øIáÿ‡ÝÓA£ë>"Ѧ³¹Ö|-w¥Ï§ë—þv‹}¥Ý]­•Ý̶6üu2ŒËŠ8³!ͱ¸<ó‡ð²àŒÏ˜Ç Œž…Ìêg\ç”ÔÆafªÊ•Jtq5iUÃNŸ¶¥F–"Jo•æQÄ?ádž¾'äôsãÜDø÷†s솥yŽˆ2ØjÐÃgÒÀc!8ýk ˆ¯Ac°xºU¥…ÇÃ…ÄЩN3›ç¿iÿÚã?íåûG[þÐÿü/¤ü/𯂼&žø!ðc@ºZgÃßF×E`’d‚Ò;Rïí·rjº“XiÓßÊö¶išN‹£it_¦¿ðqµÞµãOø(gÁo…º÷ˆµûŸ†Úìq¡øþ×À˪]Åá¹ÕDú5Ö§¡ëÓø£Ãþ ÒÌ·²Ë¦]jž×µ´ûùl®RÖ{›[ãkuyRzù—fØÜÇÅšx|Ô8‚²¬«'­7 t1xèåÉ–#ŠÀb)eøl5|&6œibhVÂÓŽ¤jB© 9Òs§8ÎQ©JPšv•—áþ2rÏÄŽ'ÄÐ̰y¾_˜c§˜å9Ž_ŒXÜ',Çÿ´á¥†«£§:•)Õ¡(S•D+BPºæ—ÎQE{ÇæEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPéüåÚ?ø(ÏììèpËÿ sã?¾'Át$t¯þ;1Ûþ ìrÍû{~ÕlÇd·Å-`“€2O@ô¢Šüî—üŒ{ëÿ÷&ÿÖ>?¢°ßòŠø¥Óþ#Faÿ¬§ ÿ’8j(¢¿D?BŠ( Š( Š( Š( Š( Š( Š( Š( Š( Š( ÿÙxerces-c-3.1.1/doc/html/graphics/faq-other-3-header.jpg0000644000175000017500000004307611363617746021562 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ#È"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ø^Š(¯õ ÿœp¢Š(¢Šý–øÏão Á ?g¿ÙÛNðÂo|Xÿ‚Š~Õ¾oˆø›â†‰‰tÙûÀrAi$+¤hO6úÔ&õô˜ï ™¡¬hþ2ÔuFë@Ò´O]|ßñÉe–`ðØ*™¦qbjar¬¶ha£YáèË‹Äâ±U#R8\„yñÕõ9§F•ªÕ„èÞøu‹ãÚùÍyæxl‡‡¸g/†gÄYö*Œ±0ÀáëÖú¾† ¸u‹Çãksý^…\V 8|V'ŒÃÐÃÎgãMúIð›þ Áûeê~)Ó´ÿÛS]ø?û\|Öï!²ñ×Âüøi¡I¦h’,z…çÃïxKCðÕÕŸˆ´Èˆ»Ò§ñ™­[Ï-²[Ÿìë™aÖ,öóýŽ|ð3ö¹øsðãá‹|=¡|ý¦t_üAø-ãokÓé¾ ð§…üe¯ÚèÄ^-ñUݽÍ姆þÞj:f»«k×V—×>×ô ËÙµM^W8^(Æaój9/å4rl^7‹Æå˜œe<ã-ÇÓËãN¦?EL»+ÅÑÇa¨Õ†!áêà+PU'B½IRœµœøa–VÈq¼Káç.:Ë2lv]—ñ‘Váœç%©›Õž+ÆTÀÖÌs\3)Åâ©Oó &iQañ’ÄP§F¬k/ͪ÷_…³OÆÏŽ øÁñáw‚¿á'ð‡À_ 'Œ¾,jÿð‘øKEÿ„SÃo¥xŸ[]Kì!×´S]Ηàß]}ÃVZÅøþÍòM¨¸¼°Šëõoö÷ÿ‚vüøû7þËþ>ð?ÆÏÙ'ᧈÏÁ/øãâçˆ>"þÒúÞ›wûLøƒÃžøuâ[ÙgD×´½WEøî¯u®®“k¡C-¯Žü nãj¶QX`ÿÁ04ÝGư?ücGð߉õoþÈ3é¾Ó|?o.±âG[ø1ûQZèÖ:%¦ž—ê—zµÍÕµ¾›ob“Ë}5Ä1Û$¯*ðqÞ$à±<â®Q¨ðy¶]—T£›aêÒ8â8› ‘âjT…E4ã,=Zج,á‰j¡,M8Î5°«ë2£îu†ñW‡<<ã¿kƒÂñIœfØ\χ±T11«,/f™á«àéΪ†)`kJ…\&e?ÄÚ+ï Á,hÝ3àÕíü>-ø¯üKøEðÇIñ7ÅÙ×Âô||ð‘¤ié¬MâOhV÷Ú=•ΖðOΞž(›P–ê1ackw¨Koi7Ä~ðψ|mâÂ~Ñu/ø›ÄÚ•–áý D´›QÕ5SQ™-ìl4ë;d’k«›©¤HâŽ%bų‚GÜe¼A’æôñurÜÏ‹§qXÉÒ­2/m •¹R£VêÑÄkBµ5)Ò©8ŵùp?ð¦7 ‚βLÏ,Ê¥xe¯„©íE‡Å<$Ö0uy±¯ÉJ¾ JXœ5Z¥Zœg8)aÑ_¤×ßðKOÚßMñŽ—ãoÙ×ÅŸ|¡]øÅ¿³/ƒ~6økÄß´_‡4:çÔ§Ô~éqÍjóX$¨²ÙXk÷··žŸoyyqko?Éß³Oìûã?Ú£ãg‚¾ü=Ôü1£ø¿Çð‘ÿdj^2½Õtÿ ÛÿÂ1á-{ÆWÿÚ7š&‹âN;KðõìeÑï<Ëùmb›ìöï-Ôḧ‡q˜<Ç…Î08ŒQBx¬Ê½*ÊpÂaaBxŸ­UIs}Zt)T­GÊztç*¨¡+kðóò¼Ë"Éó.Íð9—b©`r&' *53&‹Å:Ÿ‡/¬¼ý¹¦ø^oÉ6Ÿ-¼PZÞÅq_Ÿö×0]Aoygq͵ÌQ\ÚÝ[J“A<"Ëżñ3G,RÆË$RÆÌŽŒ®ŒTƒ]yfu•g0«S*Çañô¨MS©W 'R”f×7"¨—$åc5 IÓš•:œ³Œ¢¼üÿ„¸—…e†‡ä¸üšxÈÔ–ž>‹¡V¤iIFMÒ“öMJ3§í#mFp¯KžŒáRRÑ_··ÒÜÿÁR?c˜¦€_öêý‹ü2ò\Z,kqâÚö}€…˜ÁµSÖmZžL²hfu´s^SG ‹åͰó_ŸôWeðgáçÇÿÚ?Ǻ†-lõï‹?¾(øƒU×o,­E´×³êÚÄ÷Æ­%ö«;[À¶zj½Íî¹âoj&(öÞêzž¨–ÃÌO³~!Á9~2x'áçŽ>"xwâ?ìéñª…Ú?ü!ð+ã&‹ñÇŸtäi’êûÇþ±´´m:ÚÁ­î[Q}6ïV6Vö··× š}…õÝ·½Œâ›-ÄapYžeÀã±j³ÂÕÄEOš½OaFí¨òS­ˆ¾V´hÇY{*w«zkã°|Å9½ßÃù.eŸå5Ldq9¶[‚¯W :x*ø™Ñ|·¯,6PÅâéa½¼°¸YÇZØiB´¾¢¾¯ýŽÿc¿‰Ÿ¶ßÄÍwáW­wÀžñ‡ü ©üA¼¼øƒ©øƒJÑeÑt¯xc×¶·ðÇ‹/ŸT{ïiÒà ºt6i ë½ìsG6þ)~ÆÞ6øðN_Œ¿>(þÏŸ µÒü7®iüuñwDÑÿhhÞ*Õ´m7MÔ4† îBÁg­ÛøT²Õu=/TÒ¼;k¨^ßXCqhöfkñ.C†Ì¿±ëæ˜Jy¯> Ÿö{›x§,ÁÍ`Ú£¹Ê]9Þ¢N$¯ZTÔ¢ÚÀpæ™,x/á¼Ï‘JžiR9­Ø+dÑ¥<Ê¿2ŒkPzn8yZ¾!¹G N´¡QGäZ+°'ÆŠß W㧈ücðSöyø%u¨6•£|Yý¥~&iÿ <â=J9g·–×A¼»²Ôïï•nm§µKã§C¦Ý]ÛÝÚÙÞÜÜX_ÇkàŸ> ëŸøGö‚ø¿£ü6ñïÅ›{ù*Ox:k=OY¿ÌòGý§o¤HKoshe²º´¹Ÿä_ˆ?þ$ü-ø¡®|ñÇ„u]âw‡µø<1¨xEb[ýIõ›ß³6™o§ 9î¢Õ£Öa¾°»Ñ.tÙ.­µ‹;û½:[‹{¸$sÄYeŠÄàp®‹ÁÂu1hâ!9B*¾ÂµTÓå©J…ÜW©JS… ö£VP¨ÔHÍx#‹ò,·/ÍóŽÍòì·4«N†ŠÁV¥JµzÔ+‡w5F' %ŠÂЯUqXWõœ<*ÐN¡æ´Wév³ÿ¹ø·à¨´M3âÏÇߨÏàÄ¿éöÚŽ‡ðKâïíáŸüZÕ"¼Mö±YhØ]éÎÂXPEâˆMo Üé°\êÚ^™}â-7QÓcM[©týFÚ÷I»±>#ZÒü?£xs@хΫòOŒà¤_·ïÄŸxÃÁþ þÏÿ ñ‡…|CávÔþ(~Ì_4ý{Ã-¯iWºd ð޽ðö Ï£ø›ÃozÚŸ†5w³ºn­µô¶—†# ünWÄœIœá𙦅°´òlr¥_ S0Ïå„Î*`krÊ–.Y],—„¥íhJ5ᇩœFºŒ£ ±£Sš1ý·ˆ|(àžÄbr.&ñR–‹ðtåNY€áVk‘ÑÇF›<þ–wG ©Ò–*§”ãûü2ÄaåN¤þC¢©éâüXXTÚ6¦,톤ÖQb×âûa³þüZ0Û‰¿z!Ø$ùó^ëyð7ÄšìÍkûUßø‡Á–?/¿h?fË-óV¿¶ñçÄ+Ÿ7Ä{imté´„Ðî4K Ö "ñë’ê¨ÐG¡5¢›áöŒ^ ì>³Z~³ˆ¥„¡ÎÚö¸šüÞÊŒlŸ¿>Yr§e£Ôüg”f9\m,· W<¿ ŠÌ1_U‹¨©àp|¿XÅô“£MJ2”’¿,“åÞÞ-EWIæ…í?>ø“áÁïÙÏãWˆüCàÇð÷íAÿ {þ¾ƒc«_·‹áÿ…)â‹ øÃû{K¿Ò4ûüËíB Ý/ûUñý0=Æ©ý•6ËgñjçÂâðØÚS­„­ ô¡‰Æa':m¸Ç€Å×Àã(»¥ïáñxjøz‹eR”’mY¾üÇ*ÌrŠÔ0ùž¾ ¶'/Ës\=:ñåu²ìã‡ÌòÌe7v§C€Åañ4d›¼*%%©F%WëÞ‚ß ?àš_°‡€mü(ð·ÇOÚ»ö›ñDÞý–>|@°¿‚ü¥[}­‡õ}™SU¹H-mµÃu¿ÚCûÀú.sáÙ/¼E«ˆ¸‚–A‡Á¸ákf†iŽ¥–e9np§WŽ­ µ¹eZ¯îðØl>…lN/5(ÐÃÒœ”*TtéTúÿü?̱B´ðòÃJu©þ^Ñ_RxëöKñïÃÏÙá'íâ?|9‡áƈ×_ | Ç®k1øù|Sm{ñÁcÔt»ÿ Ùxx[ÝMð¿Ä-fš_Šu]Fxît¢4õi¯“O4Ù/Ǻ÷ìyñ[öÝÿ„«áÎðƒàïŽô¿‡Þ*ÓµísYÓ¼g>µ«ê_ ô«;­&Ïþ¹¼1.–ן|:6¥âÍ.ìýŸTX¬¥–+õoýaÉ=—¶þÒÃ{/íŸõ{Ÿš\¿Û_[ú‡öwÃþñõÏö~_‡ÚiÍmO‡q„±°±áìÊXšü3þ¹Q£*S­ÃPY§öÍ$¤ý¦û>Kx^§³k÷|Ï”ùnŠö¯€ÿ³×ÅÚOƧÀŸ <2Úö«i¦ÝkÚö£y{g¢økÂ^ÓöKÄÞ-ñ©5¶“ hv ëç^^Ü£O+Egc Ýüöö²ûwÆŸØKâÁÿ†3ühÒ~ üøõð«I×,ü/ã~Î4ߊz€6–ÎËM¸Ñïnnnm¬’d·»Ó㾺±³žú+KMŽíâx‡$Áæ42œVi‚¡™beJpu+Â5¥|;·ŠãÇÿ~(ø¦ÓÁ |“ÆÓ¢ë º†îv‘-#’öî=7NÔN²Xîu²Gudnkütý”5Ÿ‚>Ó~"Ù|pý˜~;xRñmŸ?á.ý>8xgâ–›aâíCI×u»-S³µM3\´¹¸Ó¼3¯L³%ì£}6h&ºŽym£ž%Ä™ 3OìYf¸?íNxR– UR« Õiª´¨UqN,EZN5)aêNªS”gJ2‹{Ñà4¯Ã²âÚ<3›Ï‡#J®#ûYa&°ÒÃP­,=|]+Ú¥l D'B¶2•9áhÖ§RJÑ9Æ?*Ñ_»Ÿ ?à›¿üKÿËø—ñÇ^ø½û*ÙükÕµÿj¾ øÓã_Ú;Ä> ø/ð?Ãþ$¸ø3{wðÛãn·g¤^x{Áßc¶ñ‰¼7©x{W🊦¶ñŠü!¥Zê\^Úê>ÿª±ý¤t_Ú×ãdž?b_þÈß>&ø;á_ÅÝøÏâO‰µàÿ|%H¼A«Ã«ø‚/ j¾Ôd·µ³Ô<}|öÐ^Üé¨>j~"äÕ²þ+Åå¶­ˆáw ar¯éakeù–I‡b°?Z©‹„p˜œ­b²ÉTÌ!O S£O°sÃâ)û,ÂxšX¬6òZŠ¥ðSÃ<ø‚ü#£´_~ x³UmHÁ)¨ž$Õoµ‹«]6ËIM>ÒÊ¥Ž3ÁKX#†k{‡¸|E,çõ&óþ GñÚÇW‹Àübý‘ÇÇÙôÓ©[~ÌðÐþOÚè-™¿6–¾šÖ-*âçìªfEâF°h‡œ·¦Þ×ÒæœIä“£O6Ípy}ZôçZø›ñ'öpð?‡áÐüUñ—Æ.|ðwK“ÄZ¿‹43Â’ø—ÇðÞ³ªøÍ×ÁºÆ­u¡xgÃZëXhe©_\[Åtª•˜qI•K Ç3Âae˜QÄWÀÆ¥Mqt°¿WöÒÃr©{g­á”aOšuzq¥¹$qäœÅœG ʦGfY”2lN ›KA¿ìÜF`ñ‹ r›ƒÃ*ŸÙøç:•”)PŽ´«Î”`Ùù‡E}'ûO~ÊŸÿdÏh~ø˜ÞÕmü]á›/øƾ×WÄÞñÏ…oؤç†5¿²ØOuiæ¯îŸav±Kix-†¡§Ý]{Ã?ø'ÅÏü"Ñ~<ø÷âOìñû3|#ñLÒCàß~Óÿ4ß„úGŒLnèAóôí^åâœÃq%”º¾œš…µ»ßX›·¹›*ÜQÃÔ2Ü&qW7ÀÇ-ÇÊ0Àâ•e8c*IMª8XCš­zÉRªçF”%VŸ²«Ïû9òôá<=ã|v˜p¶…óŠœA”ÂU3L±á'N¾]F2£¬c¥W’Ž 9b0ñ£‰­R+¼NQ©?oGŸàª+Ù¾:üñ/ìÿã /Áþ&ñ/ßøRÇÇ>ñG¿è<â_ jZ¾¹ YëzN» ÜʆÞ]cÃz݉·¿‚Æù$±iÕ`šÚYŠõ°˜¼.? Gƒ¯O…ÄAT£^””éÔƒm^-viÆIÙÆIÆII4¾s4ʳ,“0ÅeY¾—fX*®Ž/‹¥*8ŠRå©Ni5ÍÂJñœ%ÁÊMøÍQ]QEWëÇü‹Lo~Ù_²_í ¤Eö…ß?a­*ÇáÞ­fÓ®µ]âGˆ<_«Cg*æÜÍ„þ,øRgHØÈ-®£. #ò¿C~þÝ>ƒà>—û0þÖŸ®i_‚Õn5¿†·¾ñD>øÓð{P¹Ží'‡Þ%ÔTéz¶Ÿ²ööÞ kwÚ-ŸÙu›;ZïEµ±ðòü7e¹öÇ ñF[ƒ©™Ï‡jf¸|nYB¥x¼N[aðÔ±ð/Vަ/[…­=ZÔV"‡Ö)Ó¨«:pŸíÞñ6O‡áÿ<=γ<>AOÄ,«)§•ñ9Wyf<È1ê¸ 6o<5*øŒ.W™ÑÌñ¸Jøêt+Ç[êÕkÑxomR—çš«;*"–f!UTff8  d’I $àWëoüÃP“þ û?ê® ø™ðŸöKñL¿ô¶8½°±×< ðŸÂZH¾ŸI⯄Þ,†!:®g³˜.]dÈÃUýŸÿà„¥ž¥c?ìÇñ/ϲ¿¶†òÒo+à_ì­4^mµÂI ž\ÑÇ,{ѶKH¸eR=Cþ k®ë>ý„¿à±Þ&ðF§yá/x+öI:ï„5ÎúF¡ágßiýC@Ôô;›# šeæ‹{giu¦OhÑ=”öÐInQ¢B>døåûkþËdÙÿá—í!ðwö™Ô¾=þÉñׄ¿gŸþÏÑü=Õü}sªxÓÂ~Ó¾*é^.Õìuû/ ^'‡¼ Š£ð®‘ªë2Â*Ú¦•®i²ß¾‹7 û-þÚ¿g¿ØÓþ ðÓÅÞø±®ø¯öºý?áZü8°ðw†´-NM Ä:ßÃߌüuk©ø«EÔ´» Kↇsª6ƒaâ[ë]?Mצ[ g³´µÔ>>Yrü3Í8Z¦O‹–gƒâšu}Œ©Ò©G0À×ñŽzñX9Ƥã_ ²««YMS7 ´çOš6¦QãN­ã¯…<{G‰²õÂØ¯ç”λÅΕL£ˆhxuðôòüÏ %˜tóJøL-¼²¥]T£Rž"T9jPÁ´ÞÒìÿißjÒ¤šŽ¯âOØûY¸Ö5MJF¼½»†çâÀù#ÓÚY‹°´†E¶‚ÙÆcd˜KpÒJþsÿâ[hz·Çí?Å^'°¸ñ³ðûö}øµâX[Emu¬Ýø‡JñV‡á8¬ô(/%‚)µwð^±â+ Õ¨Úì¯s Fcÿý±þ~Á>:½øµñƒÂ_Oü6Ðt-cÆ#Ä3k ¼J°>‘âx:Ô(µðv§bÑ I¯†©=…¨³1Ëq=¯Åÿ°'lj?²N¹ðâÿƒí¤Ó¼aà]G]šë@×­®í-5­TÕõ»]cÚí“.†¯h—Ó@\¹µ3Úêº|‘^ÚÙÜÇëç-œf¹‡Š˜|5á©ñ pÞ)ÅT—²ÃâñX\6w VÚŹB ס‡ÄÍÇݧˆNÓI£çr¿¸s&áólßK6ÄpoœEšçX(J8¬Ã.Éñ3£<*†zJ*xgŠÀѤÕWF”]/ݵúû0~ÙðHÙ·ö“³ý°|ðÏþ ññ#ãñ'0x›ÁZN«§A{©ÙÛ^hú.±o£Ü[éÚ¶­¦ÚÜiòÙØêw¶ÖÑÎÜÅ_Ú#þ C¯xÇ]ø‰qû*ÿÁ@ôø»YÔü_¯|-øO¬ü¸ø ¾&×ïnu}y4ß>¥ã­/EÕu«Û«Ù,¿áðô:d—SC¢húN‘mg`¾}û ~Õ~~ÚÞý¦üAð§Ç¾øEá|Z¼Ð>iZ–‘ãohÞñŸ€|iáŸi1ßëšÇ†­5{ oiúf¡¬jšuõíž‘y«´-us „œŸØ3Åp÷TÃe\_ ó2à\Ç#TsúøJÑ•EǼ&W‚ö†«Jž/YQÄS§õiÆ´¹+û걞ñÍ&ñí¯Å¿ŽµOÆM/ÃÞ+𿇾4~Õ~.øSFñ¾“‰â›O |Eñ}ÇŠ´(u½:ÞóR±ƒT·±Ô£´Ô£ÓuMWN‹Q·»‚ÏS¾†%¸‘ƒÈä’| ŒŸlŒúŠýS‡ðÏ‘äØYÑXz˜l¯BtTT=”éaiBTùc¤y%-¬´Hþhñs8­œx‡Åµ–cS0À¼÷S5ˆ•l7±«UÎ5(.gI*¼î¤êE)TœçR£”å)?Ñ_ø'¾µðçâÖ¥û]ë>3¿øcðKöWÒäñ·Å¿ÛˆIñž£ Ƥ|Òmï YjÞ ø¯pÒh1YÜ$ƒDÕµÝ/ʈ'ö‡ôË-]_ x>Í4ó«ÇyªÜéößE~Ƶç‚~øCãÀÚ ÁÞ)ø™û(|pðõ—Œ¼à˜´9¼_áßi¶qIáO|9ƒÄš¾ ØxžÆòÃL‰.&Õôƒmy§xoÄÞ5ç„ôë;ϳ£<©šÒñ œó\ú….tèGŒá/k?¬P”åiG>©RrÍð‰Ö„(8RÉ¥*˜ºÕÿ_áî&á›…¥à®?=…,³Šðõ3\gÑÄÖ©€áî6Åa!K‹Œ"§õn­C‡³?eJ«åõkñÄN–'„Ë~Áÿ‚Ej¿~ü ÿ‚üjñÅ¿Þo†¿³}º\_|!‡Ã³ü_ѾëzoÄMGâ>³ðÙ|S5¶„ž%Ñ£ð¯†õ› õ{…Ò ½Ó¬¤Ô º…E¼Ÿ>þƶ_üëö(×|sâï…¿ÿà«<¼ø§ð«Å üc/Å?‡³‰m|Iàïêz³¬=ÝÏ…ükàûû»‹‡Ð¬à·s¨¾š,®.ɰ–æhîáù£ö#ý³u?ÙoâÞ©ñ'Â^Öü_ðã_¶ñGï|5ø§ Åà뿉 µ+݉ˆ4Xî|Y¤èZÍí”v¯ ±¿ñn—¤ê{¡I}¯éê‘j爾7ÿÁ$ü'«½ÿƒ¿dßø(߉î­äólþêÞ+øE¡|±Œ0xLø‹ ^x¿â%LJ-M…þ£zž!)ê ×ÎÂ/+=ኸ®#âzù– ‹1Ù?a²j˜Xðö'F›X ,%l³2¡Š¯…ž­:ôV; ^¤éáåõÊñ•ju©N/í¼:ãÈäüÂ|?’Ôðû Åþç|GO8‡b1T©f®/0ÂqKŒËhâãœá}–&Yf/ Bž+à°˜ˆaªáëáê\ÿÁ´÷:Ý×í!≰oŠºtÿ~*ß_|Lñÿ޵kzÿˆ¼spþ#½ºÔ/|I«Í¨\3jfáãPÔ^ïS¼¹‘â[»É¿x"XãO×ø%oí½àØŸâç>9|gðÄíGIÖ¾ xÃÁVÞøo¦ø_Å1]ZçÆþñ.žZÓYñ_„ô©c½Ò<vVú´×qêZ†Ÿcöi®®m¿*¾ i÷úWÃ? Xj–7šmôÛ>}•ý´Öwpù¾ Õf‹Í¶¸HæÌ†Håz.ø¤I*ÊOØdÙV*ñ–k_(á1ÙG aòümHG–¼°pÎ>½J”õ’öR«…u¢ÔS“¤Ún)¯Ì¸£‹°óð/†2œ³4Ãàsœ?‰\i‰Î2|¯œ°LÎ0¯‚ŒgBn50stjÓÃb(T:” Ò¨éÕ´ÿkÿ࿺_›ûQ~ÆŸ³v’d³—ÂOØëCñß<9mæÅá½C[Ô¼oâoÝÎV–WóÁá¿x Øíybµž@å`ÕåþtþÊ¿ ~ê_´ÿÀ+XðÞ…¦øÅ?>x?Å­mgm§ÙÜxC_øƒá›_[^à idðKbÍ,ð;,hÀ·–Ò+}Ý©~Ûß³Ư‚¾þÞ_¾>xëÅ_³î…{àï†?ÿeÝSÀÍñ^OÞÇ¥Ä<ã üH¾Ót wO…4-[WkZ“ͦZ^[év…ψ5]oào‰~ øÃâ&‹?ìÉðwãŸÁÿ‡¾ð¥”G]øÛâM"÷â‰|qaâ B÷þ‰¡ðìVvÍÆ™}¥ÙÛØh1G§X?††¡Íy«Iåù¼ƒÌò¾ã²ÌËÁQÍpÓÏa5L·*øŒUZµ Tq^Þ¥lg·Ž&tâhâ¥V8ˆSQö²õ¼]ÎðÜYžaÓüa|þ%†ßZÓõ„×î.µÆW›XÔõ;‹;K[u´ŽßãÚ÷þ áÚKþ à_Ú×övø]ñsáöàŸ‡_õ[ë_^ Ñü=u­ücøCñ\Ö4ýR[ ø»ÆN¡¤ßxNïÁºLÌÚÝ–§}‡¯-¦Ó¡¶²´¼¸öoŒß¶×ìGûLYøGâGíðö°_Ú/CðvàO|NýdøS}§üYÓ¼7öáê^>ð×ÄkÛC k6ͨ^„½ð扬Üöój)£ÙxÃÚGÂÚçÅßÙÓÅ<ªü/ý™¾0ø7à„í¼4|máß‹¿­Ç%Òüa>¥â5¸Ôô >ÜxëÅž½‡ÃqÂ=c5—‡ŸE¼ q¨ê2G‰Á|3õy= Û)â©æ™GŽÉªSÄâ°UòJµ 5 m<¶oGÛá³o©aªac(¹P½8ãTêI}Ï‹>#K=Ë8—ÂÙ‡‡‹…ø·5É3œ>cO˜ax¿ ŠÁâçÂ×Í2µ…ÄG™ðþ7úÜhÚ¦6õ+à!öô©ËõgâWÃÿø&ÿüÓãô~?±ñ߉fïÛ³ã‡<=£\ü>øÁáé¼iðW∼áÛ?i–ñBÚG£Xk×Ú&•¥höˆšÆ—®êÖºe¥ÖŸðÎçZ—T›VüÊÐÿe¯|ý¥|Eû4þÐ^7Ó?fí'Âþ*×ôï‰>:Ñü¯|QÓ|5©CáÖü9©Øx7ÃØëšÎ›ãh£ð”:CY =­ôXxŠòÎ+x®¡o«¼ûZÁ*¾|Nð߯_þËðQo|Eø{â;_ø3À—:§ÁŸ|Å¿ŠÿÃ:·ü%š>±aãé-l5^Ìj–Sââ(¢Ôô‹Ø„¶‡ó«âGƯ‰ÿµí ñ÷ö¥ø­¡[xC_øãâý+W±ð]­ÓÞGáox_Bµð—…t‡¹’8î}3šVƒ¢ÜjZØÜj“i ©K§Ø-Üv±z\!ÎðxüfK\G–ð},‰Ð˧ŸQÊåšäY¯¶Tpø\–¼Ö9ã2ü&ò‚Íhfj5¨áiS«‰ÃÊ­æÊ0Õòµ“fXŒG5LD¸•âêQž>­Z9n2¦¼>Ãÿ„Kþ ÿI}ÿÍý¦ÿù&½Ãþ õãOÙáÿü7öZÑgÿÚ~/Úg¶šòê4›à×Ä‚I¤øËÆÞø…ðëLð¨Ð>"¼Ô%¶Ôõ¯_A«ÚÝ}žòGakn×:]Û7å­]Ó5-CFÔ´ýcH¾»Ó5m&öÓRÓ5+ ‰m/´ýBÆx¬® dšÚîÒæ(§·¸…ÒXf$•ÔôxÎ̱¹no—c8Ã>̨f¹Fg•N†? ÃððþÑÁÕÂ}c›)áì¯í({W8F8¸ÁµiÂjÖüË âgå™·çYƒùOæ|?Äyá³ »Œ8ÇZSÉ3<6cõJ˜\û2Í0(bþ¯ìjß ÑMJ•zM>ocý¯¾ø‹á¿íéû|é>-²¸²×5¯ÚÛâÇŽmEÒH²Üø7âFªŸ¼w“™,î|1âÛ)m ˆ#2G´!EðúýXø‡ÿ ýš?i½Ã3~Þ¿²×Å|Pð¿‡í<0?hÿÙ;]ðf‘ñ;^ÑlÔ–v~)ø}㻺“Ãyq5ìw+©ëV–׺ž­.‡ ø^Î{›-KåŸþÔŸ°o…¼ã þË¿±íIñ'â‹<7¯xcGø•ûcø›Â²øzÞ!Ò®ô¹CñäÖu€Ër¼—3áLéfØ6/¯WýW'¯õhCý¡†ÌjãèÅ`ê èÕ¥ Â’r °•jÆ*§ÐqçäükÄÜAÇ|7â>Ï+ÕÎ(RÎ3 ^ ˆ²éW£%Ìòu€­:9†²x(bUw”UŒib¥™PÃNS¥ÈüðWì³â]'Çšçí=ûZÃ,i~ÿ„_þ»¯øPÿ~8Âcý·s«Yë¸ø{wLJ¿á¸ƒÃñÿ§Ãqý­ÿ û_*=&õ›ô§Åß ¿àœÞ*ÿ‚WxbÃþ[ö€žÿ‚˜è¾6ÿ…ûÿ mñÖëí¿´ÙÒæøR?ð«>ßoã;´x2ãþOøY[çðÄ;?áû$º«e´ö¾k Õ#¶‹Sk;fÔb³g{HïŒ(nãµyq#Û%Á‘`iöˆ)˜š÷ߊ?¼7¨~À¿eKxÎûâüWÂ?´î³g¤Ø\ø2Ïáí·Á]CáÅÌWZŒ:»ë–úݾ¸éu5ÿkèˡ麇‰á ø}yŽŸý¡}&¿¥ÿc][«_øGþÛ4þN«eù~Šú™exùepÀ.$Î!‹„Ü¥ÃÃÿÚubê΢§RŒò9äÊ ée4ª{*pnn»©Z§å2â^\Wý·GÃŒ«ý^S«Áxž"âªÙm:±£3Ä`³|>kƒâ2œ¡J§ŒÌó PÅUÄÚ/ <6 û[ûQ|2ÿ‚sk¿±çüÓ]ñ—ü·þO…ÿ†Ýÿ…3ñ+þÛ㯉ÿá|ÂOñGÃö?âÒ¯áñ'ÂÿøUþ$†×@ÿŠªÏøM¾Ùý«¡ýžÂÞF?‘ŸïeÝ3â—„?f/ÚkþƒÃÏàËojþ0ÿ…1ñà§öF²Ú楦_økþÿˆ)%ö¡ýŸcªlÚÜ‹[¯øH>Å v•{!íÿi?Ž^øð_þ ¥ðWÞñšx‡ö_ÿ†Éÿ…‘¯_é6 á ¿áuø¯Bñgƒÿ°uK _P¾“˱Óç²Õ?·´¯ìÕ [éÚ°ï¹O¯™àœƒ8ʨbg˜gÙÝx¼÷‹jeãpÜ= -zx¾&ͱlÉÔÀä˜Lz­¡V–dã t0Ц.q£„¡†Tp´Uñ«¸ ˆpÜ3C&ଢž2^ð%,eœGÄ•±9˲Z,G UÁfüv]Ž¥’â°Øœ²¦+„§šW§FJ¸ÉÖSÅb ýzÿ‚¬i2|EýŠ?àŠ?|=ÚþøÁ>=øMâ[è=•ŸÄ9¾|;Ó4ÛK—Œ´Þ>·ðOljÊDÆâÊá­~B×Þ¿³wíÆ>ü'ñ‡ìÝñ»á•ûIþÌ>6Ôá×õ†¶»7…üIá/A4 ⟆ž0Š §Ðuˆ®ím5D²‘-­æÕlãšÇXðÜÚ†³¨_tñ†U˜×ÄpÖ•ažaŒá|Þ®:¦Y”iUÌ2üv]‹Êó XIâ'K±Ô¨âÖ' Ej4jÊŒ¨Ê¬%R2_1àçdÙ7úõœAŽM–ø‡Â8Ž¥ŸÔ§Z®$Íéâðøü£˜G N¶)es¯Bxlm\5 õ°ê½,O²*5QðU~¸ÿÁC/áÇüßþ OðÄDÙ|AñŸí'{ñgBÓåoføy#|gÕo/R96ÏöFÑ~5ø åeSŽþß-´Ã»/öxø¥ÿM¼øÕá«oü0ý½¼%gstnÌŸ´—ðûYýŸtMbYì4ÿk/5¿ÝøyïÛ6¡ªÁw¡›U2ø«ÉÒžòUæà¢ÿ³'ííñÏâõ×í«ñwþOÅÙ§Á^}à'ˆ¿eŸYxëào¾Gq,v—P"=¦µg;‹¤“Äõî%ö´ñÛÚjãHдK ?•ÎsÚÿp~YŒÃc8o •f«?XŽ"§O,–m§Çe¸§'r­R–3˜úµñ°Uc8Ó§F4aY×S‡ë¼ÀXß8#Å.ž?)ã,FoÂΣàŒTø–ž[—ãq™~gŒÎ3ç…¡`0U³0Ø|yRã«âëaVñÿí¯ÿ(ÿ‚lÙý[êGûeP ÿÄ7ŸðP.:þÓŸ÷ð²?c‘ø‚> ×Žhÿ¶ì×âØcÂ_±ïíƒð¯ö‹ñ—…¾ |g¶øÛðoij©à _Ûø†üY}‹â{ˆe´ó¡=e õþ›§ø‹PšÇÄ%®aw£Å«:|zÿ‚˜|$ø—ÿ¢ý ÿb¿~Ëÿ>jþ7ø‰à ‚£è>*Ò¬<áŸ|!ø‘ªë¿üXÞ,·ñ®§ã½kYð?ĵMZ8Ýk~Ñôø¬4hÝt_ “q%<¢>ªÿˆÇCŠêæ–ê1ÈñMO4§‰£%^UëÔ… —ÄST!2¥_ÚÔEF•¾á>&àÌn+x¦\c‘áieÞUðòy^"­ZY§ú×…áš=l zUiR£†£*ØyO ^UêOØiá¨TÃ<^+õ¯ì‹¬~Ïÿ ¿à·/İüyƒÂ~4ø·áO„ÿõ¯Ùz/·Æý3áþ¡Ã{ oˆ3Ûøn×FÔ¼Gãh:̺‡Ú‹éz機j·Î—0ü‰àßÛþ ƒû;þÈ_¶gìíû4üÿ‚”Þx‹ö¢ø77ƒìµo?>]iZgÄ? x{ƃágŠuWÀ>3Ðõ{X´¿x¦ßZÖõ!¥xŽúÞ-:Ú]K[›+Î;ö?ý®ôïÙâËâßÊ?cø×û6þÐ^“Áß>˪6{¨Z¬7pXxš¾Ti)Òb¿¼[YãŸO7%íeMSHÕ4½\Ò9?ˆ_ÿàš&‡ãƒ³GüOÇ>=Õ<;â 'Âñ³]ø7áx?ĺ–™{g¡ø—í ›[½ñ<Ôî,õhôÛÝj+qlEü©×3¿§ŠáZ¿ëSͰœUŽÁgyöYžåõ²\^eµ–ŽUì(f0­^„𸜫•Âp”ç5°‹ èÊUcV’ùžñ.‚ðï£Â¯Ãü>uÁÙyq‹+c09ž똌ÙÇ”¬5 ô³lw€Î±”ë¯cV¦0«‹Ž"4éÖ§ˆ—³~Å?µÏÀÛÙ3â÷ìMûjø'Ç·Ÿ³Ï회|Kâ_…áí~$øÆÖö~½’÷û-¢k­NÖÃVðG…uKK;{=J}?SÑ.l¯<)â­;\¾Ó å?hßø&Àßüð¿í•û(üHðgÇïÙvoéBx¯þ¹üñ+ῈåÕ­tÝLñö•yŽ¢/ÓÄéz5àÖ-|?­®±«èÖ÷žKMVÖö/øñ ö.Ò>>ûTü ý¥õ¯ÞxŒêÑøÓönñ¿&ñF‡áÛýHEð¥ß‚¾"_ê¿Øzî«NuÛÿí@x‹È6ßeÒ­¤=_íMûyü-ñ·ìsÿøý…>üøoð£ÇŸôOˆŸþ,þÒòønËÇ>"¹ðþ¥á½jÊ+='Âú—‡m§m_Á¾¹›PÓ/¬£ŽÇÂVZ}Ÿ‡$ºÖou8}f6˸¶ž'…ðþûS=ÁÕâ|>2ž_S…±øF ~s‡«8üs¿øwûH^ü¼ð/Äχ¿ ü3wá/\ük¼Ñn<}àOx:ëÄš4Þ0ð¿…n5K øaì5™´]í%ñk½¦•dÚi7Px™ÞEžO‡ü_É)eÚØ¬÷4Äg95Z0¥<6a†Æeù&4hUUy–.•l uZ…XSqŒc8¹ÆIžÏ ñ‡TÆýsõÄy~,àªu8wŒpÕñSÃâr|}~6¾ÁÊ+Úàq±0žKÛRæ©*mÓ«°‡YÿÐøsÚïí¡j:ä6Òê>ø#ñgÄ~3ùEáñÿ4/ O5 ‘K‘áox™?s¶U·{‡Ýå, þ@|Ô¼]â/ˆðÑ^#zÇÇÿü^Õ>%Iâ=B î|G§|B´ñÅÅõ´ÚwÚ7Þiú¯‰lÚâÜÛ4wÐÎb%Qo Eë?°ÇO‰Ÿ²6·ðŸâ÷ƒ-›Nñ‚o5ö»ÐXomlî#ý “öÅÿ‚cx â¥ÏícûþØ—¿߯7ÿ¬> x{Å 5¿Ùh|FÔui$iú$ž.š}eô¿ ÇáëW–K(<2ÚƒJQŽÃæY7çyßö7ˆpYïev %„©<3+©™º¹v*¼EC˜ÿhR¬±K› ”ë,O³j›©óô3l³‹xGÀÙWe\Ÿdž-qWæXÌ~3§›pæo_ lÏ-ÅàhW–;–V˨Æym?öªô)á*aUxºŠGÿʰð¯„ÿà¦úö‡á…·Yüû:ü3ø«ã8-Š´ñÔ~"ñ€¯ZHú§ƒü7à]Fxð Ó´º‹†ŸPžY:Ïø8ÏR×<_ÿøðÇ[×5+¿‡>ýŽôߨø-æ?ØRø“Å>"h^!¾¸µ]¾skž ð@¿IZH®#ð®™nñy&áeü†ñïÄÿ‹´¯Çï‹ÿµgÇO³Û|FøÁ«Á,>²rÚƒ¼#¥ÛZé¾𶞦ILvzF‹¦ée¼rI%ÓŦ­ö£4º­ýûWØ?ðSßÚÿÀ_·'íã |døU࿊^ðWƒÿe|"¼»ø—áÍE“RñN›ñKÆ~;¸›EŸÃž&ñn“y¥ÿdøçNµI%Õ-uíM7[ôÈí¬à¼»ò²ŽͲÌ„´1´¥Ž\5ÜI̱É*”px¼V"£…¥“´¹e8¬6j)Î…& ¥È{¼Câ' æ4~”8¾ÌpÙf#Šñ| ˜ejuaJ¶g,¶¿lbð¾ÉÊŒëPÄcð5±3£ROëµ¾µ‡©VIb¬ÿà°Žl>Á ¡³ m÷ì«ñMºŽX’[?‚_²¥õ­«*_"Þêæ†,lÆP šŠÿö€ý¿mÏÙ·ölýžÿoÛïˆ_|kû-ÙŸüøÛà÷Å¿ ®4MWJÐËþ=gDñ6¿qwnº§ÂÍnYÿá!Ó¼5v,õoI¤××vºvÖ‘ñ[þ eá¯'ÅïÙ÷öóÓ¼a£xWÃv¾+¿ýñ·Š4ë,¼C«Ýé¿n´øe à|vSÄpfSŸe¼W˜âðOQÂàhQÆa#™á(*Øß+Æàã^†*8Ü>…Z–X•ÏF|íÿþ¸ý…>%øZÚK¿ø³Ãæ´§Æž;ÍiðFKÀùºÈ3œ|ðK8Åâ3©BU£‚Ê0+–a±ÐŽSÆO[3ÁÐt1X‡–"¾6…~GÑ_µ±ßíY®þÞ^:²ý’ÿà£Pü9øÍ7Å{kýáoí ü0ð§ÂߌŸ ¾!}†âçC·—ƒ-mtSFÖ&¶‹O±´ƒCÒ‘µƒ§Úø†ßÄ:5ôðé¼ü?á¾µð_þ àŸ‚þ&x¤ñ/Â_üð·4 ÑÛÞË£|øžtíjÎ7&TÓ9xÆ5]KâŠ5Ù¯àºHšëÅß9Y}J²Ž ÚË&úÂ…xæ4ªJ†;-–'ØNψ£ŠŽ'°¯–޶#Ø%xo3j¾4C FoCí3Bj²¯„>-ë¾¾øIð£âž¹â«¿Œ_<'©KuãO j>&´ƒQÑ4 Î[m/ÄV6–香쭭¯ïnïdùŸþ I«øSâoüïöý¸¼EðÿÀ^øóñ“âÕßÁ/‰r|?ðì~Óül†ж0xÎ].ne}šÏÂÝ6úÌÝÍ©\Xiž6“MmbâÎËJZüß"ñ1Ìpü'˜æ|9†Ë²ž1Ĭ[ŠÁg³Í18leL.3BŽa‚­’å~Ê©àk¯m…Äc!NJ>ÑEI3úŒ¾ŽùfC‹ãl‹‡¼A©Ä|YÀY4¸‹9ÈqÜ#W ¥‰É)bp8\N+,Í©çùÞ^Œó <–  %jÉÉSnQå?è¯Óøu'í6þøãØu„GÀßþÿÂßOê6Ô<7áO…> mÀšÅ½×Åïø³ÃZáûûÕø…£Xéúo‡o|Yu}e®}‘f²Ò体å[?Ù¯Æ>/ý£¯f‚^,ø]ûJøþÒçF·‹\ýŸ¼y¦øûáåòêÞ±ñ,÷–þ3hô› ]7@·º¹ÓüI©êÑi¶:N¯£kVR\8±3IöxN-á¬Ö>©eõ£ƒÃâñXÉÆ¼U,&ˆ–SV|´ðÊ…hJ3UçNNub%Î~1˜xiÇùT0³Çð–w‡Xì^YÀEàªT«Åç8ZxÌ®Ž/iWñ´*Óö3ÃB­7^qÂÊqÅ5DùæŠý)×à—?­á*Ñ<ñoöXøÓñSÀšeæ¯ã_€_þ:èÞ1øçá{-7Ú‡Sø.›¥]9•5…ÝåõÅÎË=>Þöòkx%üß·²¼»¼ƒNµ´¹¹Ô.nc²¶±·‚Y¯./&•`†Ò Xѧ–æYÙaŽÑ¥yYcT.@®¬«?ÉsÈWžS™aqË áõ…F§¿EU‹)Ô§5¥Z”¨Õ”U:ÑŒ¥JsQ“^ðWp…L.%È3,žYŒ*Oñ˜yF–3ØÊ0¯ =h9Ñ­W9Ó†&„*:ØyÔ§ôéÊqNµúI¯ÿÁ-¿hO éz —‰|sû9è|U¢¦½áÙsYøÛá½3ö’ñ%”‘<ñÅáÿ‡—±Ai­êRE‚='KñÞ¥-Ê6Ÿ«êJlÇÏÿ¶'ì—ãߨ“âæ…ðS⯊¾øƒÆ¾ øs¦|R³‡áö¹¬ê¶±x[Uñ7‰ü'o%Ô~#ðß„õd¸M[ÂzŠÌñiSiËÖJš„—2OmmÇ€âþÍ1”pvw€Æã1ÄÔÃÐÃÖU'Z–“Û֥ʹjP´Šx·F«çTgQÓ©Ëéçx…Ãù^':ÎøC<Êò¬ÔÖ/ŒÁN5L{«5î^õ,L¥F¢«†œcˆÂ¾O­R£íisü·E~˜é?i·ðŸÀ¿ì|">øçð¿þúxÏPñ¶¡á¿ |)ðShþÖ-î¾/xÅžÐ4ßÞ¯Ä-ÇOÓ|;{âË«ûë-sì‹5–—%ìŸ9xöWÕ¼iñÛâ'À¯‡ÿÿfIð¯Ã2ñ·Åß ütð™ø¥xjú×ÂÏ.¦¿µ–ÑíîF›ªx»NðÞ¥gœú„Zý¦³k¥Í®‘{{Ãq bÖ"Xlï^8Z8Šø©S«xáéá±Q­íåkRœq_¹)¸ÕªÚ•(N I¼g…þ åë ñœ#aÖ7Ã`ý¦ßW2À¬ËðéIºÔjàš¬ñ4Ô°Ô]éW«N´eM|¹E~‚|Gÿ‚qüYðgÁ_þÐ^ø±û5~Ñß | t¶ž=ñìÛñ‚×ât~ }Ö‹3kûtm6_n³—P·Ón5Í>Êáu+ËXtÈ缋ʿc¿Øïâgí·ñ3]øUð«]ð'‡üCáÿjo/> ê~ Ò´Yt]+ÄðåÅ­­Ç‡<1âËçÕûÅšt°Ã. £ZCzï{ÑÁÍÒâ¾­–c³šy¾YnY9ÓÌq\òQÀÔ¦¡)SÅS”UjQ«N\•)ÆN!4œd›Çá¿`¸ƒ)ál_ f´3üú*¹.]RŒULÖ•gQS«€«ÎðتR•°u(Öœ#R•Jr”jBQ_(Q_¥ÿà•_´·ÄmÍì¼Cð3Ã_5ŸŸˆýžº»°×-¾x*-+Zñ6¸ºn¡a}§Ïy.›c`×vw‰ Ü«irðóÏøF<]YqWÉ8bZÄÂN¬kNœ£óJµ)C ‰š­ET¥É†ÄÍÏ—YöŸ„¾%Õ­–ЇñµÍéV«—Æy}Zj´hTÃQ­ Χ$0ÕéÖÆ`èË Š•G¶Æ`é*N¦*„j~~Q]·Ä‡~0øGãï|1ø£É x×Àºíð‡¼sû=øKšWƒ<=ã?üoñ_ÄËß|ðÄ^*×¼SáýÚ·‹üoá_ ê3ø²êãÂ¥ëèú'‡µm¦K§]\ÝDo£ˆvcø›‡òÈàeÍð8hæxz¸¬ºs­ u ?Uç©…”9£^ÿ]Â*q¦å:ÏJ4cRSHò²Žã<úyµ,£†³|u\‡†Àgt©a&ªå8¼\±Ñ£G1§S’x7|³0u§^0§†Ž,LéFœšü²¢¿A<_ÿÍý§|ñŽ„:ͯ€Ò/Äãñþ‹ /VŸ >Ò–3øïSø‹¬ÛévúN‡m¨K ‹Ã©éÖšÜóÜØ›"î KNšïÏ?jØ—â×ì©£|<ñ‡‹5ï†_>|U¶¸ŸÀ_> øÈxãá÷ˆ¦´….®,lµ™4Ýåym7öwöv¥l·2iw÷¦ÃP[L°¼[Ã8ìF ƒÏ2ÜN#3¤ë`)QÄÓœ±PPW|­¯l©Ó«7‡“~ZUeìíN|½9‡†Ü}•`³ŒÇ2áû‚áüBÃg8ŒN_Z”2úŽ­**uÔâ¥õwV½ [„g„ç¯F>Úõ©ó|}E~’~ѳþ×ÐÁ'bÏ·ëß³>ƒû%MûLjx[˛ǰþÑZÏ‹dñíöYþØ´ºøi.‰¨¸ø›öX|?öoºÃà_"î).ùðÜY–ýSÍ19~Y‡Âñ7‡a_ëëB¦'Ž–«Öx|°¼µð¶¯`Aâ*arœ× ŽÄÒÃSÆU¡BmÕ¥†«Rt©U«NQŒ©ª“ƒäSQ” áQEÓ©Nrëâ/øß„°Tó.$áœ×'ÀVÆO/£ŒÆPäÃVÆCK:4kFR…^ZU¡ÍRœ¥ITö”9ý½´áÈQ^»ð àö¿û@ühøgð[ÃGi¬üHñ~‘á˜uâi­ô‹KÛ€Ú®¹u:I=®…¤Å}«ÝA ¦·²’8s+ ?¢ŸµÿíÙ?ì5ñ·^ý‡¿à˜¿þx Uøi¦èÿ?jïx+ÿþ&ø“â Λέ¥é—Þ"Óu68ôin¦ÓµkÝ"îÇþ8õ½/Ãú7‡4 \ê¼9×ÖÀæ¸,ƒ)˵óÌn¶cõz¸Å—`pYu °Ã¼faŽú¶6­(VÄÔŽ K Å×­R5_³…:SšúðËýiÈó¾/Ï3ê<+ÁÙ+—bóyà^iŒÅæxšOY–¼f[GV†F¾*xœËJ’¯„¥JUñªT_äuõ§‹à£?ðPˆþ ñ§ƒ~2üVø#ñöËÆ^×ü0²|Qý—þYê~mwI¼Ó"×üâ/‡Úw„5Mľ’öMWÃZ¼ë¨ÿfjé éµa[sŸûþÇ_ÿm¯ßü)ø}¯|:Ð|iáï‡7_uëïê^%Ò<1=¦“­xWÃz¥¾“>‡ájs&­â»)¬mîôøa:|7O=ôw1CÏU<ç€Ë±Ùa²ì‹Š«W†Íjæ˜/«Ù)U•zÙ^W^›„ä¡(K Õ8Íê—˜ðfSŽÎrŒ—Ã~"Åñö/8«,- ¸z¿æ‘Æ«Ê#¯˜æT+B­8ÊP­K$¥BpºåòÝí?²×Àß~ן| ðWáWˆ|ˆ~!ÂOýƒ¯xV¿Â ÿŸ…üCâÍSíš§‡4_.ë ê6VÿcÒ¯sª-î>Í žæßëØgÁß>ÁItO…_u‚ZßÇÿ„¿¾=ü-KÏê.Ô¾ÿÂSà?üJðçŽãÕ®<#kaã_³ÿcXkÒø}¦ê?Úrèo¬éöv’^@šfÜAË(æñUðµ3«!ÄqðŒKÂEàiG©WÄb}u…ÂÕ¯ƒ­FxŸcYÑP©SØÔPQ—ŸÃ¼瘮Li†É3Î1ÁpSͰ¹sÌ*PÎ1²õˆÁÐÀ3\þÔ?´ÏXü¾¡à‹/MãíF ÂÞ ¶Õì ñSé¶Þ*—S‡Ã¶^"K϶‘s¥G«Ü\jO(skÿðKÚÂö&™¯øçörÒ>4ø—A#ðïì·¨ümðíí%â ;ìÒ]•Ð~]Á¦·|!†`4ý'Ä·’\E%”0Ëz¿g¨Äq>K—á²Êù¶cËgšáá_ J¶*2Œãì©U­:u9aυêÐö¸É•FtçUÒö‘GbðÓ‹±ÙÏe9“f|KÆUÂcñyf_ˆp‹U+ÃÒšç†3=gC/ŒªâªÊxáãˆÔ>Ký ÿfŸŸ²ÇŒôχß|ÿ'‹õ YxËMÒ?á#ð—‰þÓá½CUÖ´K=Kíþ ×¼C¥ÃçjžÖ-~Ç=ìWñýΖÕ-î-eŸÂ«õÛþ ÿ”£ü3ÿ³ðgþ´?ÆŠùƒà÷ì!ñc⯀4ß‹^#ñ·ÀÿÙçáWˆoît¯|Dý¥¾)i? |7ã­VÉÚ+»}¾ÛQÕõÖ‚á~Êomô¥Ò¤»ÚÁ¨K=­ìvÞ' ñ wäþÛWзJœ°µiÒ¬¡V1¾5ñ/‡¶šæúÃãŸÃÏÝ$*ìÑè^ñ—|KrþX%a¶ðö©Ï+6c·™¯Ñßž:Ñ> ÿÁÍŸµŸ ]Ew éÿ5?´–ìø§áßìa⟇8„4d§Ÿmâj·C;Öhd@À|Y¦ÁJÿgïÙÂ^/Óàš²Oí añãÇç…ö”ý°äð\ÿÃýQUûTþ🄮uÍ~’¨¹†A6•—Vv®YøšÊ(ôqóçü+â׆c/Ú‡á§Çß‹ãÅ£j¿|GñÿÃqÙk¾0ñˆÉæÁA¿ìþ¿jÿýZºÍp4ÿxö×âßÇÚ§ã&—áïø_Ãß?jŽ?|)£xßIDñM§…¾"ø¾ãÅZ:Þoy©XÁª[ØêQÚjQ麦«§E¨ÛÝÁg©ßCÜHÊýs"£W’åzЕ:Ô2Ì *´ä­*u)áiBp’ï'æä¿ñ8|gˆÜe‹ÂÖ§ˆÃb3üujèÎ5)U¥R§4*Sœ[Œ£(´ÓLþ?à´Þ5ÿ‚søöïøsâ/Ú“á÷í½ñ?ãt?²Ÿ…"Ñ|û?¨àö§ð¹¾/üV›NOÝkךÄËAâ(u[Ýî"-o%¡þÒ–ý—ðÛöÇý±~ þÝþ4ø5¤Ùü%±ý›e/ÙžÂK‚-56Õ5?·¬íÿá%ñU÷‘h×úÜéºz$—q¦—mܳjšŽµ¯ë·þ·ÿ=ý¯üûr~Þ:ÆO…^ ø¥áx?öWðçÂ+Ë¿‰~Ñ´Y5/鿼g㻉´Yü9âoé7š_öOŽtëT’]R×QþÔÓu¸LŽÚÎ Ë¿Žkó¯ ¸&ž[ÃÜ-‹ÎéfRβ¬ áC™c+UÃäÕë*”±SÀsýR…j”déÊ¿³ž!RœéB´iÔ©BøýãTªñweœy?á0+ÄùV—ö–w—T¡´(âs–&¥*-¹SÃTšÃ«†"XE‹£F½/Ø/ø-¯â=CöHÿ‚#|,‡Å!Ò¼ãŸÙóÄ:ïŒ|7¤ê—VoˆõüýáðõÆ«oˆ—SiºwŠüY¦YM 2ÙÚx—WÍ—%Åßø$v‡£|&ý›ÿ૾èúo‡þ1|3ý޼CwðãQѬ-ãÖâ»À¼P³[µ¼cR½–ø3Á²+ ÅÀ 2O¯¿à µÿ€¿iï ÿÁ0>|>ð_Å-;Sý‘> xÓÁ?üMâŸhÖž Ô5­{áÂ_ÙÂ'¬èž&×î.í×TøY­Ë?ü$:w†®Åž­áÉ"´šâúî×NÌýŽ?kþÇ¿®üu¢xIñ×…x†fƒAñ÷‚uƒ_è÷Sýšý,/c’æÓµFÓµ¶cqkwa¨iwú–yça8K8¯áV?!†aóªÙ®mú–!Ó¡,l)q–#7¥†­U¿f–i–Ñ¥†…J²TÕE5VQ¥Ëèçþ)ðöUã·‡U$©ÓÄNqöµq˜—†S¥V|’âànË©qGäüo©ãGñþ–I©›á°\;”bðkJLE,:§S7Ëiâ©UÁЧì0Ôh`0ø©ÓÄTXj7íw>¡ñ#þ !ûwüIñÓ¾µâ~×?>ø^öÿÎ’}Ãß |]uáÿdùìÍe6Ÿáí'@ŠÂòÙ’K°Å5‹[%ÿLàà¿ùJ?Ã?û0_ëCüh®#â·ímû|DøçªüoðOì;ûUøßö²øÇâMU_„‹ªü>Öe ãN¯k¥ø{Mñ6¡&™t¿µöÔ5‹m"÷]ð½öŸám źŒWQê61C«j×vÿ༞.Ò|Qÿ\ƒIÒîâëáÇìqðïÁ^#D‘$6Ö¥ñÆŸ­læTvh%—ÃÞ5ѯ–)Dr4WI0C±ÈþVW[S‹¼1À×ÈñÙ=l›…8— Š¥ŒXEj”°Ü7„©Ãb+ÊxJ©ÂT•:l–›’ªÖq8TðïéÄt8¯,â\ŸŠ³Ž ÅäËq8Úô°Ø/kÄ•éªðÄáèRÁãñ0¯Í‹Ë¡|^¦SÇF«KŸ¸ÿ‚Ðêþ#Ô?dø"7ÂÈ|Qâ+À~9ýŸ<üñoï‹>8ñ¦¿ðúÚOÆ} x‹ÃºTzv‹c«ø7សlšŒ¼eaz<Óêkªêðkw¾%Ôá´³Ñ#âà–¶÷ÀŸØƒãoÄßßÚçá$? |uð·áß…NàÍkã-Î|â/\øŽÆçÄ^ðÕö©uá_5–±u¢Íioqâ¹LV’º\‚æ”Åðÿâr/0ÓËóÜv/‰0yF/)Äf8|¢†31ö9n VŒèäꆉ£W 5 2ÃÒ­'ÕçŠrÅγ¨bxŸpAô~¯…͸k/Àðg¸þŽ:ÍsZY=,Ë0Ìqø\[ÆçØŒfo‰Âf1ÄR­:òÅb°ÐÆJ­ IeÔpu%™ÿ>ñ'‹¾2ÁN>þÐß|Oªøóâ§ÄÝ{ö„×u¯듼óÁ%ÿÂŒ-}ma~Ïck5à¸xmlã‚ÒÂÀÙé:}½®Ÿe -Šücñ›þ “­xÃâw‰õMð×þ •kð£áÞ›~átÏøOáÏí¤x[ÖZUŒ";XVÇÃöZu¤%b ö±ªjÓµMfþî_Ÿà“Ÿ¼7û!ühøñ«â¯‡¼g?‡¾ÿÂÓþÞÐ|9¤ØIâöÿ„³ÂŸü'¥ýKñ¯á›Û}âm:öãíš­–4Á=Å¿Úf[\Sø=ñûÃðÞ7ý®¯ü)ãýáæ·ÿ ñ/í=eásB°Ó~!½Ծ1éŸm¬$ѦÖ°ÿá'þÃß§½¬^%—CþÜŠkXüA%¤fþ¾ÓÃØ—ÅùÎ7 •Û/ (dy}jTiÆ’ÆÇ1ÎjK/¡k8IQ«ƒnšQ‡#¢¾ÊQüî> á—fX Ùø^×â6…a¡x‚çþçÂOü8Öîš Yñ5γák»ý.}?\¿ó´[í.êíl®îe±·öø)ïíà/Û“öñÐ>2|*ð_Å/ ø+Áÿ²¿‡>^]üKðæ¢É©x§Mø¥ã?ÜM¢ÏáÏx·I¼Òÿ²|s§Z¤’ê–ºö¦›­ÀúdvÖp^]ðå?™CàÍL^[RÜ;Áù¦3Zp—öfcW'á¼-U[oÙל°ØÊ1p¿ðêÇšÏ_O‰8ã#£ˆúXK'â ÛÆ%¶«'Ù#Ô/,µV·’ûHÓf¶åkÛ[ÿÁÿà™öº$)¦ÛÙþÝgK¶ŠØXl/u¯Û6ÒîÙNKîmäxæÜY¥ÜYË1$ü­ÿý¯üûOxoþ ð«á÷‚þ)iÚŸì‰ðKÆž øŸâoøsF´ð^¡­kß ~ø>Ëþ=gDñ6¿qwnº§ÂÍnYÿá!Ó¼5v,õoI¤××vºqûPþ×þøÿÛýŠ¿b/x/â•ÏÅ„µD_|aâ³áÍo†PøZ-sã•ÃCo®Øxš÷Ä1ꆌuTðž™§Ò|JÇS abÚŸ™•ðÆo…áî òšÔqx³,ç5‚§Õ¡€«‰âØÑÇb_½Nx|V]Îò—²©B6åŠQ÷s/x{Ç<]~%ÀârŒëèۃɲ·~Õ|]ñ‡ŠÏ‡4i¾CáhµÏŽW ¾»aâkßǪ~0xyÖ=SÂzfœWIñ+L-…‹jg‰¿kÿx_þ ûN~ßð…üRñÅÿŽ_|ão êþðæ«xJÑt_|ñ%çü$×ÿð“[øžÆàÙü ñ¬_Ù¾Õí þ§áØe»Š+ÛéôÊ©ÃyÅL£…©•×›©ãSÏ¥Fp„”ò)ño×e”[q–X&ëJ÷n“w‡C ƒøZ—xgŽ\C—Ò£Gèßþª¼JÄû5C‰¨p–,–U9èèãa˜Ð©†J\‹ÚÂñŸ/,Ÿ×ŸðL? éžÿ‚rÿÁlìíâ[‹‰cV÷SÔî=þ¯ªÅðSö¦µMBá·K5Ó\ ž"ÎV× °Ž(ãEþù©Þx[ö;ÿ‚–~Ðz ɇãÃØBûWð¶¹}RËQÔ>üUñíí›FËuæøÂ7µ»+´Ñ[‚áÚ<üãû6~Øÿ¿f¿Ùþ 9ð—ÅÞø™â¯þÕ¿.¾|8_‡º…®Yé¾!Ô¼ñÁÞx°j~(Ðu+=ßRø™¡ß]\h:oˆ¯¢Ò,5»¥Ó¤žÖÒÒÿοàœµµïìq©Ú^ø›ÀÃâÃ/ˆß-¾|høY¨Íý™/ˆ<1©èÖÜÅ]Ã$6ÚÖ—7Ú-ž¡n`»Ó¯µ­w°mHj6=Yï çxõâ½,&¤žo˜ðŽ;+§)S£O7¡”e¹Là F¥IFšx—€ÅeÒu¥ n¬Ú©%ä|÷x™fQônÍsü߈©Ãxßòî%ªÔñ8¼†·fOO,Æâ¨S„«ª8fÙ^n–G=k U§ K·ÿ‚øWKÐoÙcX··C®xCø©¨k:Ë}GQMcàGÄmaí.®Û÷ÒÙ¤ëg)´f6íueoxñ½ÜK=|·ñóþO3þ ÿgõûWÿêÕÖkö·þ Gñ3ö.·?¯†_±¯ì±ûVE<šOÄkßü[ý¨.< ¨Yüø{¢ü6ñTVz?Ãx>jZžœË­øªãÁž oø‡WÖÇRý•üUe?—,^u¥çÄï‚—ÒùS$sGæC"?—,qÊ›¶ÈŠà¨ù^?ø(Çìsð7ödý¯?gߨóö_ý¸¼M¯~Öÿ¼Cð—Ä-ý¥o¾øJÏë¬ø7Çþ ÒõËHü µis‡¢ø‹«ê²iB Gפ¶¶ÓæÖ4„'QÅ¿à™¿µž§ûüWð7ÄÝK³øŸJ? á·Ä? Ù^ÚZêסm ^^ þC6ž5M+Ä>Ñõgû£„Ú{^YÇz5ožÏpüYż7âVåøÊ8\~ K„p…,:tò̱Ԥ©T•HËšRÅ:/0­ÍûÈ(Ê•£»áü‡~q/€Ùæ/:Êjgùf{˜ËÄlvK™ã3|:Us|Áå8ÿe85ɂɱ8 X™å4#‡’¡YÊ–'ÍV¯Gÿûÿ “û$ñÓþÑ>ÃþgÆq“ø>¦¾œÿ‚uÿÊ{><ÿÙýÁCõøÑ\‡ì]ûz~Â?±íáøg/ÙCö±O†ãKoˆþ:\|-ñ7ÄÝÂZîâ‹ý3ÁŸô-Ä~ðNŸ¥'îü1.³â;ÿx“ÅÚ‡ƒôË­9/§y¯ Õ¾~ýŠÿkÿ|2ÿ‚’|Rý·|[࿊ZÂÿþÕµgÅÝ/Â’øsF´øšžøÛ¡øæßÂpÜèZŸ‰¬<<º¥”Þ3Ó“^ŽßÅ—:u³Yj«¦êz³[@·\Î=ϳ8ÇÒáüÏC2ð›åpŬ:Äc3TÏjÇ éQ¯V41ž6œ#B¥N~GN¤ù_g¶Ëóná<Ÿ‡p˜®1áì}l/Ò{*ãìÚY~*u°ùoâó•,{«:tç‰ÂÇ •W¯WF—³ŒãZ•?k Q¯[èO؃ÂڌິCÆŸkÿ%ý´|O w öׂ5_ˆÞ4ðÔ\2Ãâ=JšÂxã(C…#óóöº¹Ô¾#ÁDÿnï‰~7wÕ¼Sá¿ÚãâÇÃÿ _Þ4ïsáýá7‹n|-à·Ògi,.4ÿhþO½µxåµ61M§µª·Íká÷í+âöÇøÕûbü3ÑjŸ²5ߍØéÃÆúÌúUàø…¯Ä÷šnŸªø‹Ã:‡„ôÞÛÞSNŠ VþòïסÍò~ Èó‰ä˜üÓ W€p;ì0Tu0®ñuiâãŠÄaáCާVœ'ŠR*sÀ(Öµé9xžy’ñ&Eâå\Y”pæ}WÅŒGÃ0Æâ±8jy· ×Ëp9<³£^x¬V[[^·Ô)¸WÄP̦èsÁb½Ÿ¦ÁÁò”†ö`¾ ÿÖ‡øÑ_BÁaõOø&nñÃövø1ûMxCþ â ƒ³ƒî¾øSö[Ñ~êŸ/>kZ†µ£iÞ#¸°øvšý÷‰ Þ]R¸Š=ìº6Ó?Úå¹üÅÿ‚š~ؾýºÿnŸ ükø]à/‹> ðo…?e/ ü&¿?<;áíòëÅv_/áló Ã^b18<ò”¸kšàóŒMZ• ç<Ò•t1´©T’†"8ia¥‡Äѧ7]añõ*Ò„ãN¢>ç9ñ'„ªøŸã&áL§å|'ŠáL×>«?õk0©’¼m\FSˆÌðש—O3¡˜CƒÅTt¨}s-¡B­ZUkPoÃo_ÛSàíI{ûx/öeøKûLøß³—ÁÏüñn½ûAx¾×|¢h~á"­ï|YâmöÿH›ÂÞ,”³iÞµ·»ñ,qè֒è\ZØ•á?¾,þÍž3Ô<áßÙwö|ý¢~hKxšO|Dý¡üYá‹Ïø­omt§ðä#¾°°Ð´4ÐîtÍR èÂæmU¼Kç_+x›TñÇÄïøªGÅ^0ÖæYu=Væeº;JBÙÙÙÛÇ ½¥†§ÚÚiúnŸie¦éö¶Ú}•¥´%üóà$!Z\_Š­ÕÄÐÎ>£GR*uèàiûYÓÁÒ­$êSÂÂiNxIQŒ’”`š¹þ†}*[Âpv]„·†Âbxg‡³FÝ=|ÙᡊÇÖ¡O–•\f&„q©ÆUëFIÉE%í”QEFçPQEQEQEQEQEWÝÿðNOê~ý¦´[(4Ý?Æ>×¼%â]3Äžð·Œ4½WÃ÷O§êóØK¦x·FÖì!i/ô]:_¶[[A~±Ã%ª]-¥ÝäóÜ[TáŒþ5!Çû'.YÅJ<ÐÃÎp•¤š¼gÊ.׌’’³IŸqáJ”¼Cà©Ò©:sÿYòhsSœ¡.J¸ê4ªÃš->Z”ç:u#{N”$œdÓý³ÿ‚Ôø¶ÿö#ý‹d®X’Y‚ªªŠ¨¡UTŠü¿À(Ƨ,uDªcq™†3ëxÉ¥,V+ØJ•:YÄJõkûmÓ¥íg/gË GCú»é†Þ²Ì;x|·›epÁåôu‚ÂB®I‰ÄÕ† O–…ÕÄTz‘¥N u§:²Nrr~«EWî'ðÈQEQEQEQEQEÿÙxerces-c-3.1.1/doc/html/graphics/faq-contributing-3-header.jpg0000644000175000017500000004172711363617747023152 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ#È"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ø^Š(¯õ ÿœp¢Š(¢Š(¢Šý€Ñaø9ÿÕý‚üûk|FøIá_ŸµWí5âi|5û/|2ø…d5ø7LíŽuŸ±jòCigm¯Íw¶§¿ÄÐ4[ M}âq~wˆø†—áðmakf9†i¥–e9ntéÕÆãj­f¥Z«T°Øl>lN/Rð¡B”¤£R£§Já߇وy¾3…Æar¬»(Ë+çYöuIá²¼¯V†Ôö4¿yŠÅâqXœ>ƒ„ ëâ+GÚU¡‡§_GñþŠûnÓþ ÍÿRÕœOâ?ÚáM·‡¦U+ð”~Í?µ¿éð˜“Oá‹O4V$Äe6·WRCòþ!|Løßñ[ž?ñ§†¾hZ¿Œçð¼:g…~øïÀÞR°Ðì<7xö[íZ[ÿ\i¶zÕúé÷SKÄÚ®¹|!omíb¼³ÄU«ÊÎK–eØa*´ñ9~}[5ýâ•4¨W¥ˆÉ2yRn©?i^œ]'ýø³£Š¸c2Ì·áOëñFaKN†'+Æðn©ì§Ï b0ÊYÞ{‚Ì#Nª¥Ö£)Ò©*ÐrTœeÊQ_¦1ÿÁ+þ9ipxSNø•ñwöRø!ñ/Ç––—~øñ“ãÖ…àߌÞ+:‰Ù¦Ùè¾þÏÔ!¸Ô¯æ"Ú-:]VÈ/7XßEiyðEðoÅ…¾?ø-ãïü0ø¡áCÁþ:ð÷ö~½ jBžÖg†+«y¡¸µ–{+û ë9íïôÝNÂæçOÔ¬.mï¬ngµž)^òÎ%È3ªõp¹VoÇ×£MÕ•,5xÔ”¨F¢¥,EiˆÃF«T¥ˆ êPIF¢”¢ŸÄÆœ+‚Âæ'þÌZ/ÿx‹Ä >%ü2ø¯m}?Ãÿ‹?üf¾;øsâK,¯ö–c®6¤\}¶Ñ[ï4ä³»X®Æwxúv¤¶˜àø»†±øœ6`1œ]\U 5u“jø)Ö†'¤¾±IáëÉáÛU¥J”ëB£3«2ð×rŒ;4̸S9Áåùn/Åã±up²ö8liK Wœ¢äÞ ^ÆEK õ¡†©V–é/’h¯ÝÏ…ðMß‚þ%ÿ‚eüKøã¯|^ý•lþ5êÚÿ€5_|iñ¯íâ|øáÿ\|½»ømñ·[³Ò/<=àÛx‹ÄÞÔ¼=«øOÅS[xÅ~Ò­u./mu Êß³~¹ûG~ÒñþËÿ >$|ñg‰n¼[ñÂ:gÄ]Æšï jãᾉâ_jZÖâï èZåþ¥áíwGðÍÅ÷…õ³êvÚ–s=µ­ãÏoÅ–qÏæŸë£‰«BŸ b1”sjغ£J°8j8¬N6”Óš–œ*Ê-ÍR¯ÍF«xuKÙT«íg¾ ñîA‡àŒN#+¥‡ˆ42ùpô2ÌL1ugŽÍ1µp8,Ÿ©:•iÂH(:Ø)ÓÅÐ…0x—öa‡àV£ûáü» Ns¥S‡Ë³,F /öªµjË븺xyr®z1ÅÕ…E… ”\#ô\{à¦mdœ+ļ3—gÙÎIšøsÂüeŸbêP¥ˆ†S‹Ír|?5tç…£BRʰ•±Š\ò¡VYvT¾¿ŒªåíåðåõWÀOÙâ/íð¯ö–øÁáü?Ð<)û*ü??¾#§5wJÔ¯ü<¾ñçŠ$O .™á­oMº¾‡Møy® —^Ôü;c÷hkÿ"[»‹#ö3ýþ"þÜßuo†ŸüGðÿIÕôŸ‡÷ߟUñα®Øxz÷ÃÖï…´M>ûÂþñuÕÍõÍ׋´Ë›E6ØÍcÜÆý$Kxn~«ÄY&ÅLNe†£ ƒØlÊr’YÖpô±T>±î»{\=z5cËÍîÔìô?2ÀðGæsá˜`2~*\e,T8_ÙÓ‹YÔð8¼F œÔe*Ì."„ã7§JvM$ßÊ´Wé'ü“öYøYûbþÐ5§Ä?ü-¿øc ÉvúÏÃ}GâUï†>!ü[]CÁßî,bøIgáзÞ)ÁZ÷…¬õˆfÃ]Ò%м?‰š[>HÇ?n€¾ýœ>)üGøEá_x¢(´o|kÐõ]+N×<ã?KÔÿ±o4;ÍGÅWiªxOÅ1Þkדé—2ð®/É¥ÅU8;ÚbqO/£˜»Ð—Õe þÞQ¡é·õˆÑ¡,D¯N4=œáו~z0÷W…\bü<Ÿ‰±ÁP— QÎqy6&1Ä/í<-LÂÒ«ŒÄ`eá‚úÞ*8+Ƥ±tëÑ­R¾Ž SÅTøúŠý$ÿ‚¿Ïû_ÃnøZÛö·×¿fíïøf Oá ~Îsx÷ì?ð‰ÂÊøž½â;‰–Ÿð’mÿÂIÿ ¦Ÿu6™}ÿ×ö?ü"é§öÏö´ÕWWÿ‚`þК/ƒ~|DÔ|Oð^ÃÀ?þÅñVׯúç®|#á…Þ¸Ò¼ªYIñoÄþ4ð÷‡4=UÔÛâ.‡¦i?‡/ü[«ê–ÚÄd7pØ ™¹òþ2Ê+dùkšc2ì®Yí*³ÂRŽ=c0ÕªP¥R½ZXLkÃáV+–)N/ØQ•Gû¸Suc.Î"ð—‰rÞ(â^È09¯Æ!€¯˜â#”T˱Ø,6cR… <ó\ªXœd²ú±Äâ!Gc1”0Ö•Z˜¥J'Oó–ŠúÛö–ý>'þÌZ/ÿx‹Ä >%ü2ø¯m}?Ãÿ‹?üf¾;øsâK,¯ö–c®6¤\}¶Ñ[ï4ä³»X®Æwxúv¤¶•?f_ØããíW/‹ï¼|!áo|<ÓÓSø…ñ[â‰bð_Ã?ÚMòÀuïÍm}*K,6× >þ[[X^òù-lñ9õWäO)–z³\öD\£,{­ÐH×ú¬¨ÉÊÒŽ!b—ÕžÅWúÇî=ŸµjËÏxŸGƒåÙ²âi¨N2ÂT–2tja~½ L#á,Àÿ¶ýv3xEƒOë*uÊ”WéL_ðKŽß >8|mÐ>)þÍ>2ø5ð7áæ·ñ*ÿ⯀þ-·Ž¼ãíÂú‹É³ÇŠYNc†Ç¼éRŬ<ÜÞ­j1¯N•[¥ÉQÒšr¦ýúræ§QB¤eIÁ\Y .'È3,‘fqÄÏ/y†ÑXºxLDðµêPmµ:q­ (T^åj|µ¨Ê¥¤¦¢¿L?à–²GÿÚÃöŠÒô_Šþ)ørŸü3$ïâ…~ øƒªx7âwÅUÕ<ñûM‹áN—¢Å©âXü¬xkO×|~lµ­]ÃRGsæÜ¥ËB™qs/ž¸»&|USƒ½¦!gòú9‹½ }VP¯íå®›XÄMJœh{9¯*üôaîSð·‹êørüQ£„ÃVáhæøœ¦³§ŠŒ³ÂýRÇÕÁò«eòÄâㄌáVx˜U¥Z­l-,§Š©ñõ÷GÂOø'çÆ‰Ÿ m~;x³Çÿg‚ú­ãéþøûM|RÓ¾xWÅ7‘I,/‡ç»±Õ/®â3A<6÷³ØÚé÷ÒÁrš}ÝÓZÝ|›ö‰ý•¾,þÌz—†"øƒmáÝ_Âþ=Ò[_øsñ/À#°ñŸÃOˆš~G©øCÅšaû6¡êÕç¶¹†ËQ† ËÉ,–ËP±¹¹ëÃñ7â³)äølß[2§Rµ)a)ׄª:ØdÞ&…6½Ê¸Œ2Mâpô§:Øu:ЂŒ­åcéúŽc?ë“ÛÂÞ$Ò4›#7ˆ~jº­Þ&ŠÊm.ÜÛéΗ –:,:N°Ö3Xü2[S>#Ïeø:9\±Ye,]yÆ&g¹V_Vð–kõuB£Åá°•])c¡”g‡ÁºØÈº«*RÛ8>s›b8z†mG-ϱ8 ENÁâ°êX^!Ψ8T§ÃòǼMå˜ÌÇD2ªÕ(b¨âó8árÚ‹ñÄÓüR¢¾ôý~ø7à߆~$þØßµ†ç±øGû9x‚÷Ã7ÃÛK¦j_?hí%çþËø=q§]F'M/£kb– ä³ÓìG‡ßOÔ'Ô®í øÒü}ý¬¾,ëß?¥™`²zœ#Ã4ÌibkápÁTX™aðqçÅbjÒø°¸j­ˆ©‰Å{¸⽧ե¯äz+èo¿³¦­ð þ»é¾+|øÇá_ˆGÄñøGÇ_³ÿÅŸüSð–«uàÓ X›½0ZjVzJø£Ay£Ô´«D•uû,“´7K¨üý„>,|Uð›ñkÄ~6øû<ü*ñ ýΕà´·Å-'á/†üuªÙ;EwaàÏ·Ûj:¾ºÐ\/ÙMí¾”ºT—b[X5 gµ½ŽÛjœKÒËhæõ3\$2ìMIQÃâeQ¥^¼'VœðôiÛÛTÄBt+F¦ÝjnnxGÙO—šŸ‡üiWˆ1<+O†³iq”1̱a¤«apÕaBtqxŠªpu£ŠÂº8Ê•c†­õ¬2¥Vn½%?Š(¯ký ?gÏŠ?³/Äkß…ÿ´H4Á§XkºuÖŸm«è%ðÖ¯ç#ÄþÖ¬™íu} Sû5Ê[ÝÄRH®mo,/`´Ôl¯- ú³Nÿ‚gü]°ð'ƒü{ñ“ã'ì«û.[|CÓ Õ¼á¿Úgã¦ð·ÅÞ0±»H䳓HÑ®4ÍQRâå'´#OÔ®ôýJÙï-¢¿³´™¤Ž9ÅqG`°x~'8Àà ™¥,º´kƪÇÇÙûW,$hûIâ! _¼©:Q”iCÞ¨ãJË<=ãŒã6Í2<»…³œFm‘ÉÓÎpOV…\ª§µö§˜¼B¥OV¥tèѧˆ9רœ(Ƥ´?:(¯DøµðÃÄþ"ø“á‹î¼7yâO ÿbÉ}sá/hÞ/ðýÝ—‰<=¤ø³Ãú–•¯è7wšmýޝáÝsJÕ-dŠa*Cx°ÝCowöñyÝ{|E ] ¬5ZuðØš4ñzô¤§Jµ ÐJUiÎ-ÆtêS”g &Ô¢ÓNÌù|v–cqyvc…¯Çà15ðxÜ*”èbp¸¬5IQÄañj(Εj5a*u)Î*Pœ\ZM¯áý UñN½¢xgB´{ýoÄZ¾›¡hÖ1^꺽ì:~ŸirªæîâP³ à±&¿aÿlo^ÿ‚Kk_?c?ØÇá¿ÂïþØ·þÑ~ |~ý¨~&xZÇÆw~—[óÇFðV›«Ã,:•`M^ÞÎ[i4Ë\øXÞi~'ñF·}ªiß=Ÿq²¬fY”`0ͳÌábª`ð+ –©P.fû+ÃÖfGk?³›…o]yÞWî¶W~U‰ÎëûxçYV-œ=“¡,¿7«›ÐÄ){OhœëåYEj2¥ËOIᥪžìï #Èâ쇃²ªx:ü!Æõx¶•j•ic(ãxkÃ8ì£JE‡žg›áñt*¿m U£ŒN”éÓ¼%ñ”v(¯ið‡ÀßxÃàGí ûDAâh~ýš¿áSÂ}‰5ký3Y¾ÿ…ÉãŸøWþ¤M"ëFºû.³jͬÿmkz“k4NþÔ»Ú/‹W} ^WF…hU«—â!„ÆÂ-óañ3Âaqð£RéZrÁãp¸…k¯g^÷º_/‹Êó+Æã0uðøLï [”â*BÔ±øL>aÊ«×ÃÏU8ÑÌrìn¢ÒQ«BW+„¤QE{MçÀßiÿ³5¯íWâXü<¾ý `ý›,´kÍZþÛÆwŸ®|ßí¥µÓ¦ÒC¸Ñ.44{X$‹ÄO®Kª£A„ÖŠoƒÄbðØOaõšÐ£õœE,%v×µÄÖæöTcdï9òË•;-£Ëò¬Ç5–*n¾2x,#2ÅÆ„9åC„QxœLâý8¹´›IÞÏSŨ¢Šè<ð¢Š(¢Š(¢Š(¯Øø*Ƈsñö%ÿ‚*|_ðí»^|:ð‚|oð§Å7öàÉccñ çáoý3I·»h‹CÛëŸ|w F\H.­gˆ•ñþ¿Af?ÛÞçà¯ÂoþÍß>蟴×ìÁãkõÕõ?…zî¹7†µß k?i·»}{áïŠÒÞóûQŽúÒÓ[·±xì‚x‚ÆÛSÑõÿ êZ¦«wðüe•æuñ3Ÿå_ío æõqÓËZTjãòüv]‹Êñô°•1§‡XêTqK…Ž"­U'JT¥V©/Úü⼓'—p§fÉ2Ï8GÃt¸‚t«VÃäyÅ<^”c3a©ÖĬ®uèÏ ©†¡Z­Z–#ÙÊ•¶üú¯Ð¯ø%7‡<9â¯ø(7ìÑ¥x¦iô¸ iŸ MÉ@ÇMÿ„óÂZ®¯ãìµ ºêg½6²=Ó*Ê#ˆ|×eûIx®ïö…oÚ#áÂ/þËÖÞñ‚uß„¿¼1«ÝxŠ? Ÿiº~ê×:‰yµiõq£Ú_ø–MOtÞ$ÕõO]jVñÛêKj·ŒÆcx§(Ï2|.QdÓÌ2,Ó G2Íiap”¨cqxYápôãJŽ3Œ”á*Ò¯*ð¡õxÆ,+Τáa8J—†™ç ñŽqÄ\ÄxL—‹¸w3¯’pöo,Ó˜åX Ά7Z”ªá0Ø”ªÂ„0ë ±3ÆZ¼«WÂÑÃÑ©P¡ûgAñSþ ûyxçâ”ð’ëš/íSñkᧇcñw•࿇%ºðςಲ¾ÃºxJË@ŽÊUB†âÓË[©_Óø,}ÕªZÁ+¼{¬Hó|Xøãû5ŸÅwº,5K»ŸxCáoм5­jÑÊMÁ¿›Vñ§Ä>k«’×Bíç‘Æ™n±p_?lOø&ÿʼn:§íñÿö@ý­ øÑâ»#]ø…áOÙÃÄÿõo_<[¥iV:5Æ·â¼K¨éü.¹e¥i±kþŒy‰¼ŸVÖ5¹5=cPøö˜ý¤þ(~Ý´î¥ûK|Kð¤ <5áÿ éÿ ~ü#´¸Ií¾|=ÒZí¬ìã‚Ñ^úiµVóQº{+7»¾Õn#·²°Ò4ý"Î/™Éð¾73à<‘Sàܳ‡Íªbþ§ëWÊheTòܶx\N!ã0ެ=â9iáãO„WúÄý•/Ù8³:áÜ>EãnqŒã,ŸŠrÏV[þ¤å¸^*¾' <.>¦iG2Ì2üU ;Ês-j”ð³Á¥|>ð_Å-;Sý‘> xÓÁ?üMâŸhÖž Ô5­{áÂ_ÙÂ'¬èž&×î.í×TøY­Ë?ü$:w†®Åž­áÉ"´šâúî×N?jÚÿÀ_?à›±WìEáÏüR¹ø¡ðƒö¨‹âïŒ6·‚^ÒåXÔ§›kÈ.¾,~Þ·wо'jº§o¼9ûd~Ð~ð忊¯fÖ4ýà ñÝ÷†¼5¥ØY^<–éi¤xgKÑ<=§[4mŽ•£XÛZÇý<ÿ‚ÃÛÛÚ|ÿ‚ ZZA ­­¯ì»ñ*ÞÚÚÞ$†ÞÞÞ€²ÄpÁ1ªÇ1F«QFª‘¢ª"…É/xö×âßÇÚ§ã&—áïø_Ãß?jŽ?|)£xßIDñM§…¾"ø¾ãÅZ:Þoy©XÁª[ØêQÚjQ麦«§E¨ÛÝÁg©ßCÜIöüö¿ðí=á¿ø&¯‡Þ ø¥§j²'Á/x'≼SáÍÓÁz†µ¯|1øKàû/øDõÄÚýÅÝºêŸ 5¹gÿ„‡NðÕØ³Õ¼9$V“\_]ÚéÞ•\—„³£€©×–fáÆ|jp–/EUŠk’2ÅNx¨¦”ä–‹SeÆy}lwÒŽâ U·xwK†èVÆ9ÒÌ%G:§Ž­¾.NŒªé“iÖ¾$øsàÁö>µñ”£x;ûN}gÅ:ž‰y©Ý]A¼ºQÆY7NŸŠØ,A˜fSâÚ9|«†–ꮞ&˲ìdjÎuãYb©×ÁUTð´èT©YT£6éáåV½#Ã&àœfYà7Åy6CGÃ>'âéçø Æuéc¨Ç8â ï5É–²ö50uð¹ž51³ÄÓ£FTqT!íñСƒÄü¯ÿûÿÉå~É÷^¿õUüh¯”hH›öÞý¿u©´­6]bÓöôý¬-í5ilmdÔímÛ⟈ ·¿xÔ0²Ý\«Eª„\N ‘,›¦ÿ‚tüoñ/ìãŸ_âðÜ׺ÇÃmwÄWš…µQ>u©èzôþ(ðÿˆ4³-Ŭ²é—Z§…õíB->þ[+”µžæÖøÚÝDžTž»ûcüdýþ*üv×üyû1|)ýª¼ â¯_>$üRøî¿tχ³|,´ñ·‰áÐuHïþêþ ×õÍ^-;Ä:½·‹µMz?]4ÿÚÚ®•g¥[Ës¦ØýãÁcðþ$ÓÍeÄÕË3 ÂdðÇQ9ÐÂãòü×4ÌjRƯhªÐjºK WÙÎ+sR¼dÍsó,Ì|ñ#†p9Ζ–øÃÄ[S,ž)áñŸ æx\§*–#,ž”sF®_ˆž; N«© #…gNp©/¹ÿàà¿ùJ?Ã?û0_ëCüh«ÿðZ oÄ—ß²?ü á\>#Õôïx×à6·âx~Âéíìõí[À¿gû/\_yE&i,´oøÓGÒT1ZxŸS* ­Çòü÷ö¿ðíÉûxè>x/â—…üàÿÙ_߯.þ%øsFÑdÔ¼S¦üRñŸŽî&Ñgð牼[¤ÞiÙ>9Ó­RIuK]GûSMÖà}2;k8/.Ïø(íà/Ú{ÃðL…_¼ñKNÔÿdO‚^4ðOÄÿx§Ãš5§‚õ k^øcð—Áö_ð‰ë:'‰µû‹»uÕ>krÏÿ ᫱g«xrH­&¸¾»µÓ¾/‡8k8¡—ø1G•׃áú¹Ä³šu©ÁÿgJ®E™PÂË›j2xº”#JQæq«(I4Òkõn0ãÞ¯ÅßHüÇ)â<×ø{”Ë…ñ8|BK5©C‡ÆU† ´”ç ,gRtj(ÊPæ„¡&ÜÕŸ¶ 0h_ðAø&’höði±Û~ÝRéVÑÙC´piÚ–µûfZ_Y‘*,p\ÀÛ&@Y0 FjíQÞÿƒ~ÿgÁWo¥/í)ûoØxoã š{4sjš|:·Æ¥²µÔ¤· ˜Ñþü9™Ríd’ÊÕ<£æDkæÚ‡ö¿ðÄø&ßìUûxsÁ®~(| ýª"ø»ãŸhÓ|2‡ÂÑkŸ®}vÃÄ×¾!T0ü`ðó¬z§„ôÍ8®“âV:˜[ Ôýàí…ð_Lý–'üSø¨øÛIø©àmcàž£á‹OŒ_ üw£ÝÚ_-ÿƒ­¼m{¦ø_Q†[Ë5»K{ýBÝ!MCÄö—:wˆ­¼BÚ}µ«Ùå¶­u•â«føÃ›qTòê^ÉbqùóLÉѯƒ§R­:U¥ãhft(ºO«%M{ogŃãîYÿT­Ÿå”ëgŸFü·€©gت“ž'ã Y~GÑÎ1*ZØUõ¼·”b±5)Îc§V´–Uj¯¡à™:&“áÏø''üÇHÐì-ô½6/Øç]¸[;Dòàk©>þÔ6ó^J€þúúâ KHnoeßus­²O4‹oOćßò ø#þÅ é–Ê¿¢Ùûã×À9ÿà—ßðW]Oà—À/Š>è_³ÍÏÃ}â?Ç™´Y>,|eøñ3À¿<s‰/t9!ðÝ·†åñgÃ}3D𗇢f›?Šïoíå¼Ô¼QyÏ€£h¼ à¸J¼~ðän¬0ÊÉ£Ù«)ˆ ‚=E}מ3Š|IÆË_ ùÎEÐÄ{k Pá|ªU‡«Z”+8ºujÑU%Rƒ¬©VQ­Å|™~#'ðÀü§šÐÎqøjw‡¥‰pT±¢ªáܰó¥9~²Áÿå$³—ýÕïýPÿ+óÏöÑ´‰¿mïÛ÷Z›JÓeÖ-?oOÚÂÞÓV–ÆÖMNÖݾ)øZ {÷ˆÝC -ÕÊ´QʨEÄà©É»Ö?e?ú·ì·ûBü/øõ£ië÷_uۛ˭ kŸ± gCÖ´}OÃ>%Òâ¾ò.E…Õÿ‡u­RÖÊý­n’ÊîX.žÖå!h$·ûcüdýþ*üv×üyû1|)ýª¼ â¯_>$üRøî¿tχ³|,´ñ·‰áÐuHïþêþ ×õÍ^-;Ä:½·‹µMz?]4ÿÚÚ®•g¥[Ës¦ØúSÁcðþ%Ç5xM\¯2àü6O }Ó©C ËólÓ1øëû-ëÞ‹â­ï€nÓMòüã üLšÏÃ^#²·}G+®G{«¬ö‚ò×O°½¾ñ¡¯ü«ûb~ØVµOÃï‚¿²_ìñðWÆÿ³çì[ðKÄ·=½Ó¾&ßZ\üNø·ãù…ø_xÔXË5´sFš¾µ®aw¦Û6­suö¥ƒOðÞ¤üVUçÔòžá™F3 Œá®(Ãf¹†7…þÍÄ`²ìn7,VOðŒ.Òh6×÷Ðjzçˆo¯†ežfÁeù/í¹QŽ&®™âpUiÔÂeøZØyC‡U+ò×ÇbèT¥‰ÃeÔ1O/•\Þynúmÿ?Ô|#ÿ0ø ð§öñýœ|QâM_àgÀoxëáׯ7Z~Ÿf<ã CÆÜh_õ 3MmõŸ‹înôÃâ­V ½bÎí/<t΃@ñÄö8ðC-/ÃW¶†¹âMwJ—ZÕ<ðâOŒ¼¦ÙÃks«Ýø¢ GÂ:¶ú½Ü¶ðÍ¬ÜøWÄ(µ³ŒÝZ†3¿™s >kÿ`_ÚžÓö7øƒqm¬xdøÏö{ø…áyþ|qøL¶ÖWö~0øy¨Z]XËö}/V¹¶ÒoõÝ";ÛɬWT¹¶‡T´¾Ö´ÝBÆÓÄ·ÑyßÁŸÚ†Ãö{ýªï>5þËzWÄÍÂ?|w¨·t_Ž ž‹â|?Õíå¶¾ð‹áñ7‹4MnÙ´ÛÍGÃkÚG‰ïnu²Óüg:«yic§~qþ©æø>â¿p4ê<¶¶SŒ©Â™´ä¡NT1ò«,FC™V…§N:”㊔dñyn.&å_ˆRýÿâO ñxyã†6ªX̃‰²Ü/ðĽ”±t¾¥Z”rî6ɰiF–"–? \ÂQiåùÖYG \#:Q~̶Gü#ömý¤ìÿlü3ÿ‚¼|HøÀ ý˜|Oe¬j4/øgÄ‹y?‡¼Má­HÚ‹¬[è÷úv­«i¶·|¶v:íµ´s·ñWöˆÿ‚PëÞ1×~"\~Ê¿ðP=Æ~.Öu?ëß ~ë?®>¯‰µûÛ_^MÅ÷Ï©xëKÑu]jöêöK/øGü=™%ÔÐèš>“¤[YØ/Ÿ~Ÿµ_ß_¶·†?i¿|)ñï€þx_Ư4†šV¥¤xÛÇZ7ƒügàxgÂLwúæ±á«M^ãB›ÅZ~™¨_ë¦}{g¤^jí ]\Ãa'?ö ñ\=ÆU0ÙWÃ≮1ÈÕþ¾´eQ`qï •à½†!ªÒ§‹ÆVTqéýZq­.JþúõYïÓÃñG‡+ŽðÓýJ˼`áž.¡›pÎ;,e< Û*§_<ÇaqTÁS©”`pðÆåð©õœ¨rÔÁÆ4Uógíy×ÅÛÏöîñWÄíWTñí÷‡?lÚÀ^·ñUìÚÆŸ¡øcÁ>;¾ð׆´» +Ç’Ý-4 éz'‡´ëf ±Ò´kkXãBÿ¥_ðUý5¼5ÿõÿ‚6~Ï?‹hß~'xOÅ>#éz½Ž“ªxãÃøqâ˜4ýAì6῵~"|Kò,få.-ÄÐ —Iáü¤ñ7m~-üpýª~2i~ñ_…ü=ñ£ö¨øãñwš7ô˜ôOÚx[â/‹îÄá1žI†â'F¦C‰Ê½¾Z”hÕÄå5ñ1ÄSÃóÆr§ «ÝXœþw+ãÜ¿þ"7y>;ˆèeõ8Ó)Ír~â\v&¬²Œ·4Žm‚Íðt«âiF²Ààsyay+æ§(G¨UžJ•kÓü¸±ðƒ4Ëû SLðÆ‹¦êgö;Í>Æ ãóíf²›Í{UˆÝy–ÓË}«ÎåüÁ‰B¸þ‰ÿà°ú§ü7Føáû;|ý¦¼!ÿñ¿Á¿ÙÇÁ÷_ü)û-è¿õO—Ÿµ­CZÑ´ïÜX|@»M~ûĆo ®©\E ž‰ö]G‚iŸírÜþ*|hø«û/x»TðO†¿e?´ï‚ô=*Ë㈟´®³àñâ?¥í¾•'†mmü5àÈ¢ð6ª[†ÒžêçT /®<­/Üš·í±û-|jø%ð“Àß·wÁŸÚ#Æ8ýŸü?sà†ß¿e‹Ï]üMÔ~Ügy ñ߆þ%jZV¬iö+¤i‚-fÝõÝ`ÏeÕµž•w©x£Qñq^œb¸Cˆ°ø"Ãá2ª¹Ý~.©†ÂçØhæt¨að¹Œ0ê½ZU¡Oên\=:Ï dæèÆ¥*ô!ÉávyG‚±>#pGfü%œgÜE”ðäøs6Îó,V;…±UrŒNc‹Æpý\ã’ž'+©‹–iV¦Vž <Ë+‹¥^tq˜^'Ão_ÛSàíI{ûx/öeøKûLøß³—ÁÏüñn½ûAx¾×|¢h~á"­ï|YâmöÿH›ÂÞ,”³iÞµ·»ñ,qè֒è\ZØýÕñoâ7ü¿þ ½®üÕj¿ø«ö`ý±´_iß¼?ã-GÃÏâÿÙÃÆnÚ­þ­¤.·oå'©qâo[ºÓĺ¿ Ó&ñÎq¯øº;-{ÉÿŒ_fÏêðïì»û>~Ñ?´ %¼M'¾"~Ðþ,ðÅç‰üV·¶ºSørá_ XXhZhw:f©tas6ªÞ%ó¯ž(4ke—ëù~:ÿÁ#tÚøŸÄ¿²¯ü.ÖçO»´Ô#øoðçÅ? ~"|$ÖŠGÛiþ'×µoüS‡Jk–}6îU6ƒ[Â×ÌL€ÉÇŒáì"áïìì·Ž0x즦y_'ÇàYŒÎrÊÙŽ&Uñ43<>'WŠÂfõg ñÃU¥ZŒ(ЧKS-­Áûx5â<ËÄ>*£ÇxQ,y‘ð¾YÄù+=Î2¼“ˆ°YUøl&;'ΰx*Y–_pí“ÀV© Ø|uXÖ–#.Âg8¿Z‡„|\ý‰"ýŽÿj1û?|`Õ|5ðÚÇXÕ| yâ/‰¾Ñ5/hQ|-ñ³w§Áñ?Lð~žºv³¬Zè–©ây&ðý­Ž©«è¶k<óÛÁt}OPðüOJ¿¾Òïÿà¯Eö›ysa{ü0'í//“wg3ÛÜÅæÃy$2ysFéæE$‘>ÝÑ»! ~yý­¿k¯ˆß·×íyãÚ{Åž¹øYàè<¡|&ø]àJô_kšw‚|=¬j:ý¥Ïˆ.DŸX»ÖõÏkWl¶vöö/â£Y=ücjW~?_Y—åÜQšd™%|×≯o9Yu›a2L?VÂÔÆÊ*Ue?íl“9p©îÊ8JðÃ)9ò*‘ä™ùOæ¾ðqn˜øz¦:”ò,Ó=âN/Àfx,hÂ0ÀË‘gx 8ê4)¨ÒƒÆ`匧téÔ­NtêQ_dø7Åß°¯ÂoÚ·ö;Õ¾þÙÑ~Ôq|tðg‰¾ ¤ÿ³×ÅO°x#Fð7¼â¥šçâ/›g¯Å®é)âiäk9íSHO2ÞV³Uô?ø,oÃßxOþ ÁûMø¯Äwiÿüû=øÃÀ7s$‚ï iÿ ô¯‡ZËØÈùG†|=Öà¸XHT¸‹2(y7ç~¤EÿøUñgàÿ€þþÞŸ³—Šþ>Ûü,ÓÛEøñÏàïŠ4 þÐ>Ðl­æÓg³ñDúw‡ün’ÙØÙGtÚˆ¬ Ô¤Ò4›­_@Öõä>#·òs<Ÿ:ɳÞâl?ö,Y›d9Ôf²ª9ÕLcÂf8l~††O–WžƒŽ¶…,5j˜9BpŽ# ®·»Ã|_Á\Qž!xq‡Âå¾Óâ¼g çü2ñ™¶o™pÞ:ÈiÖÂc²¼nmކ?7ÀᳬX×Ã×ÇUÇaðùŠÅ¦' ƒÄa0ØoËzöŸ¾øãx†Ú#ö„ÿ†jð‡àÍ[Ä‘xûþ7Œ~2}»YÓ/ô„O Â+à{›]f×íZ5Ö·­l³Mkööq‚K½RЯ¸ŸÚ§þ ¡ð¹åÕ¾ þĶ·íã¨?y éßµö¹ðóÁŸ t½QI÷Z¶ðŽæUñ^™m*Ç,Ú.¯uŽ©Ë ÌñBëàÝ}jçI´¸ñ ¦™«Íç½Õ…•ɼ·´V¹˜ÚÁö¢\L–gRÆ¢ºóŒÉÙ_W…Çb³Ü66•<&{Ë’œ0ÙŽ&†UO*“su'„Âb^kN‚Œ#'™`T*{gì©TPs_˜ç<%K€qy6;5ÇpoFxºÃÙvqšWü=8S*xìf[<›éc#*ܵòl¢ÃN8â1©Z8y~âü2øeÿæñü›þ [àßÿÁKá øQâøcoø\ß¿á¾:é_𤲾:ßê¿ÿâÝê·ö¾$ø•ÿ +Ä–·^ÿŠVêøC¼ŸíÍs̰’8Ûóã“Á?üá¿Oû;þß?ðÒ¾=×Õ£]}—YµÑ4_ìeXn¦þÞþÑÇi¥Ý†ã—†üÿÿý¾gyü=ã=sÇ¿´¯ü2Ïü 2øoI°ÔôkøS¿á8ñWü$®ú½®³kö­éWFþÅÑ5ï:îÆ£ý—i»o¯˜á¾Îð9çbñ\MÄ0õ8ƒ ‰§O„áxáóÌ*ÀP¡€â®-–;qÒâÜÏ*T¥ŽÌñ´3/í*ÜuçXßoã;´x2ãþOøY[çðÄ;?áû$º«e«Ü~(ürðÞ¡û|:ý•,<=ã;ïˆv?ðQ_þÒwºÍž“asàË?‡¶ßu‡1]j0êï®[ëvúã¥ÔñËáÔÐâÒg“][¶'N/áÜç2ÄåxŒçÔh¬ÿ)¯,¿ †á©árÚTa(UÇP©ŒÈ18éN^ÚQÆc1”}­i¥CتTipx!Ç‘,×/Ï8'‡gšÏ…ø›O‰±yïá19Ìq4ãV–G‹ÀaóÚyD*baσ¥ŒË°¹mháèáß½ŒŽ#‹ÃøßqûxkVð‡û0þÙ?ðÔú§Š?á(ÿ„’×þãâ¿ÀÿøC¿±-´›Í÷ÿ–{ÿÂCo?ˆ$ÿ@šßû'þí—^lšµ’©^UE}¾ _„¥‡Äæ¼Öµ?iÏÇSÀÒÅWç©9ÇÚÃ-Áåø%ì£%FÃFôéÁÔö•Jµ?â\Ë%ͳjØìƒ‡)p¦_Z“ šf¾ Z•(Ò«<./6|ËÙâ\"¥,f3(bjWtkSÂË„ÃQEvQEQEQEQEQEQEQEQEQEQEQEQEWï¯üVÛCøqã?ƒŸ|ðëâÃY|R;¢¿]ÿmÛ÷þ EðöªøËðá½ÃOÙ'öwø[ãmKÂß þÚþÎÿ |Káω?4Ù^ñì³ø¯Â÷2êoŒôd°Öä›Ã¶™e¥_]]øoÊ]GBÔ ~V|@ø•ñãÄßüJøƒ¤ü'Ð/—k¯jexé}â-O^Ô vñÝÃm‡ÃyÞqžPÂãñy>–fxì'ž¼Ö´£YR8º *ÁQ£RTªNr–¡ Òtý¬¹£#ô?|?Ꭽʰ\uW:âl›0X ë#Æp¶##TZæ…ZÙ~aý­šÑÇB_eûœM,·ì*J´ðôçJtNnŠýŠÿ‚Zë ÿeÁâÛÛö‚‘tÿøkâ/ÃÿÙ³áuÍÇ•ˆÿµ;Mñ·Š-$•KøkðÆ÷QÕõxâ×:6·¨AK 'ÈŸðQ¯×ß³íÏûBü2–ßìþÖ'5Ž’F…EŒÊòÌl«ÐÉ3ŒE~yAÒͱ˜Ê”0Ó£Ftpôòìdjâ)f”ãCã +ö·öi×l¿à¡ÿ²¥÷ì#ãZÂÛöø#§ê>9ýŒüc®Oo x“HÒlŒÞ!ø!ªê·xš+)´»so§:\2Xè°é:ÃXÍcðÉluO‘¿g_…¾ ø7៉?¶7ícá¹ì~þÎ^ ½ðÆðÇÄöÒéš—ÆOÚ;Iyÿ²þ\i×Q‰ÓKð†£hÚÇÅX¥‚y,ôûá÷Óõ õ+»H3‡ТóÌ&e©ƒÎ2l],=,¦•xâkfôs Ê++«:XU^žk$èËš†_‹£Œ£‹©8Yâe_ñ ó t8?1áìΖqÃ|Y„«R®<L%.Çå4©Ô✳ˆ0´«cç…Ädq—ÖpÊ•ZÕsܾ¾_ˆË(OކŸÁtW­|;ý¦<}âßÚVý«ÿhÏøgãˆ<_â/xÉþ|Bµx)d¿ðþ¥¥ø2ÃÄ:i·¿Ô4_ ÞÍ¡ë'ÂR_G¥É¦h6>EÓ´¦¸Dý"ýŒ?ॶ§ÆŸÚcáÁïÚ×à?Ž?gO‹þ?ðÏÃ[ögÓ~ø ?xWAñ¾«‡—RÐ5?H³Ö¡»ð±Ô—X»W¹ñ.wck©[4âxu .œë:â³ñ˜nÂc©arǘæn¦|°jœéB¥LN-o+ÄK^Œ)9¦6F´'JÕcQÖ§@ážà¼ë6Ædù§ˆÿظ™g´ò,‘RálFlñÕ1S¥KŠÌU ã°zØŠ¯ ˆyTø‰a1zòœ§ƒ©€Æc¿ 诧?n‡¾ø!ûrþÔ¾…O ü-ñŸ†¥Ð`ŽêKØ´ýâ<9ñ ËA[‰¤šáÛ· ¿ð£›©î.Øhi5ÜÍu,ÊŸ1×»•f8|ã,˳l':Âæx&a†UcÉUPÆP§ˆ¤ªA9(ÔTêEN*MFWWv¹ðœSÃyŸñuÂùÄiC3ȳN[Œö=­ ÕÃTpö´*8ÁÔ¡Z<µ¨ÎP„¥Jps„$ÜQEFŸðZoø(OíÉû3þÝß~ þÍí~|:Ô?e_|[×|5}ð“áGÄ;=sÅW¾*xOR–êÿÆžÔ|Mi£¢hœ¶Ú_ˆ¬m-ÓM3Ù[[_ÞÝÞÉó?ü“Wð§Äßø'ßì#ûqx‹áÿ€¼ñçã'Å«¿‚_äøáØü#§øÙ l`ñœº*\ÜÊû5Ÿ…ºmõ™»›R¸°Ó,6.¦.¬ùiᕠДf«Îœœ"êÅ:Kœüc0ðÓò¨agá,ï±Ø¼³€‹ÁT©W‹Îp´ñ™] ^Ò®1ãhU§ìg†…Zn¼ã…”ãŠj‰óÍúS®ÿÁ.~7ZÿÂU¢xâßì±ñ§â§4ËÍ_Æ¿¾ üuѼcñÏÂöZn?µ§ðþ]7Jº7:s*k »Ëë‹–z}½íäÖðKù¿oeywykiss¨\ÜÇemco³^\^M*Á ¤±£O-̳²Ã£Jò²Æ¨\]YV’ç¯<§2Âã–Ãë O~Š«:S©Nj5!J´#)Q«(ªu£J”æ£&¼þ#à®,á ˜:\KfY<³Tžã0ò,g±”a^zÐs£Z®s§ MTu°ó©N5éÓ”âj+ô“_ÿ‚[~ОÒô/øçösÐ>2ø«EM{òæ³ñ·Ãzgí%âK)"yã‹Ãÿ/b‚Ó[Ô¤Š9zN—â ½J[”m>;WÔ”ÙŸÿlOÙ/Ç¿±'ÅÍ à§Å_|9ñ|AðçLø¥gÃísYÕmbð¶«âoøNÞK¨üGá¿ êÉpš·„õ™âÒ¦Ó–9¬•5 .džÚÛÅü3šc(à2ìïÆb#‰©‡¡‡¬ªNµ,''·­K•rÔ¡iñnWΨΣ§S—ÓÎ<0ñ ‡ò¼Nuð†y•åX?©¬^;‚8j˜÷V8j5ܽêX™JEW 8Ç…|ŸZ¥GÚÒçùnŠý0ÿ‡R~Óoá?~=‡XøD| ñÏáü-ôñž¡ãmCÃ~øSà¦Ñü ¬[Ý|^ñ‹<5 hþ¿½_ˆZ5ŽŸ¦øv÷Å—W÷ÖZçÙk-.KÙ>rðÿ쯫xÓã·ÄO_þ7þÌ>>“á_†, ?<3û}¥,gñÞ§ñY·ÒíôÛP–‡SÓ­5¹ç¹±6:EÜ–5ßž~Ô±/ůÙSFøyãkß ¾"|6ø«mq?€¾*|ññÇÃïMi ]\XÙk2iº5ËÜ 9òÚoìïìíJÙndÒïïM† ¶™ax·†qØŒže¸œFgIÖÀR£‰§9b ¡:®4ù[^ÙS§Vo'ü´ªËÙÚœùzs ¸û*ÁgŽeÂ9öÃø…†Îqœ¾µ(eõZTTë©ÅKêî­zþ·Ï Ï^Œ}µëSæøúŠý$ý£gý¯ ÿ‚NþÅŸo׿f}öJ›ö˜Õ ð·—7aý¢µŸÉâÚí³ý±iuðÒ]Qqñ7ì°øìÞ%u‡À¾EÜ$xwšüý€þ<ü~ý%é_ gð?ö–·Ä]kĺ½çÃË8ntkáÉ<&º  ø“£^êš¶¹ã-3LÓ|A¨Þ¤6º|R]óḳ-ú¦7šbrü³…⮡Bp®åUB.„áZ-Ó”dþo2à®-Ê3<¯&Ìx{5Ãæ™å<5\—õZ•«æÐÆV– òèÐUV6Uq1žCêN8˜O8Æ´%å”Wêo‡ÿà’_¼iñ.ÏáWÃß?²WÄ¿ÚÝê6£øwñÂ?KðZòÃGÕuHáø»áýÃW>5ð´zæ–|7aykám^Àx›QÒtË뫾Žà~püFðu×ÃO‰Ÿþjš¾­ø‡á/Äoü-ñ]ç†5 5-þŸø‚ûÚìvW¶ßgûu„’Û&¥§iºÙ%·{Í>ÎiË*â|ƒ;ÄTÂå9®‰¥†§Œ«B„Û«K V¤éR«Vœ£SU'Ȧ£)A¢‹§Rœå×Ä^ñ¿ `©æ\IÃ9®O€­Œž_GŒ¡É†­Œ†–&thÖŒ¥ ¼´«Cš¥9J’©í(sûz5iâ½wàÁíöøÑðÏà·†&ŽÓYø‘âý#Ã0ê3ÄÓ[é—·µ]rêt’{] IŠûWº‚&Moe$pæV@E?kÿÛ²Økãn½ûÁ1~ü0ð«ð>ÓMÑþ8~ÕÞ:ðW‡~!üMñ'Ä6 [KÓ/¼E¦ê:lqèÒÝM§j6׺EÝü$qëz_‡ôoh0¹Õxs®%­ÍpYS–ÿkç˜Ü%lÇêõq‹.Àà²êa‡xÌÃõlmZP­‰©>–‹¯Z¤j¿g t§5ô< á—úÓ‘ç|_žgÔxWƒ²V.ÅæóÀ¼Ó‹Ìñ4ž"8 ³-x̶Ž"­ 2|Tñ9–•%_ J”«â1T¨¿Èê+ëOÿÁFà ?üãOüeø­ðGãí—Œ¼-¯øadø£û/ü(³Ôü*Úî“y¦E¯ø;Ä_´ïjš?‰|=%욯†µy×QþÌÕÒÓk:¶ç?ö+ý޾-þÛ^=¿øSðû^øu øÓÃßn¾ ë×Þ3Ô¼K¤xb{M'Zð¯†õK}&}Ã,ÕæM[ÅvSXÛÝéðÂtønž{èîb† žªyÎ+—c³*ÃeÙV®# šÕÍ0_W²R«*õ²¼®½7 ÉBP–ªq›Õ/;1à̧œå/†üE‹ãì^qVXZ9põ~Í#W”(G_1̨V…Zq”¡Z–>IJ2„áuËåº+Úe¯¾$ý¯>0øà¯Â¯ø2üBÿ„Ÿû^ñ­„þ? ø‡Åš§Û5Oi&¾]Ö>Ôl­þÇ¥^çT0[Ü}š=Ϳְσ¾8|4ÿ‚’èŸ ¾êÿµ¿ÿ ~#|{øZ—ž=Ô<]©|ÿ„§À~ø•áÏÇ«\xFÖÃÆ¿gþưץðú ;MÔ´åÐßYÓìí$¼4͸ƒ–QÍâ«ájf9VCˆâ à1—„‹ÀÒŽ)R¯ˆÄûë …«_ZŒñ>Ƴ¢¡R§±¨ £/?‡x;Ï1\?:˜ Ó ’gœc‚à§›arç˜T¡œb+e냡€xœñyŽ ™a«ÓÀO„X™Ô¥‡Xš2›œ?9¨¯Cø±ÆMcö•ý¦tÿŒ:§Ãï|f¹ý¨~3iž.±ø*5}CÁ^8›ÇÚŒÿ…¼m«ÙAâ§Óm¼U.§‡l¼D—ž)m"çJW¸¸ÔžP>æ×ÿà–´7…ì4M3_ñÏìå¤|iñ.‚(þÌ¿¯~üZÑ ÑüGa®é×Z}ý¶¯ x—ÃZ¿œtøgZ²gµÕô-Oì×)owI"¹µ¼°½‚ÓQ²¼´€¯³Âbð¸ü5 n G„ÅR…l>'R5hÖ¥Q)B¥:n3„“ºi´~;˜å¹†OÅåy® —fX õ0¸Ü6…L6/ ˆ¥'”kЫÔ¥RVqœSë³LñJ(¢º ¢Š(¢Š(¢Š(¢Š(«šv£¨hú…Ž­¤ß^iz®—yk¨éšžu=–¡§jS¥Í•õí³Åsiyisw·VòG=¼ñ¤±:HŠÂzwÁ¿xgá·Ä øËÆ <5ñ‡ÂšYÕí¼AðßÅ·Z…†‹âm/[еMê©éNš–ªéñê‡Xðî·eæ\hž"Óô­U ¹6g—LçO ˆ<<±u!B¬éá!*Pž&q§'"|/¶»Š)üQá?kÚ÷…t­*ù,bŠÞûYÓüYásÃÍ5¥½¿öŒpiº‘±±mU,¡Ý¶ý¤?à”~ ×ôŸ\~Ç?·Ö¹ã 2ê ^/ƒø¿á7‹gûJÖQsk¦Üxú¨þ'j7 rcIµ¹¹´ šŽ•2<ÖÒñ~ýºµ?ŠŸðQ=þ =û^øZ‘|àëË?|m§ø†ß@¿ðuŒ÷ß ôvëRÕôkÈ´}/ÅÒÂk­ëV ¨ë÷^*’úãOð´Vw¶ú]§ä^“g˜ÌË…8o;ÉòE“fµóNÆË Câ<<ò¨dy},n*–9G Æx|®tgAÅÕœe8ÿ_g°Ê¸£ðÙoмuÁßÓÎøsÂs‘b'˜gt¸jU*a³¯õŸ3X,%|ïK <5|³ Š£‰ÎðÕ¨b犕kF¹mïØÏÃç…ÿd¯ÙFÓöôÿ‚q|ðwìµáëïüaøyñ§ö«Ñ¼ ñ;]ý¥ |ñìïucû,~Ðÿÿg¯ˆÚ_Å_jº_Š­´h<-«ê^/ÓaµQ«èþ6ƒÁ’^éW¶:]ÖŸ¨|gÔäKitû›‰ÿ[; ÿ‰úÏŒþ.ücÒl¼Iñ+â׌üEñÅWž&Ò­/µ/üE¨Ïzmœ_Û4¶í‰ óBR9YÚ)W0¨_ÒÏÙ+ö¢ø/ðöhý³?f_Œžñƹðwöøos•¦ü𯄵Ox[â•…ÆŸ£øÇNÐu¿øL¹»´ß£k‹tºÎ 5oøf k £y™2ÆpwdønÎèf<Ì8w9þÕ¯—áòÚ|F:ž{Štø¢4±*««UÖ¥ŽÅccN²|ÓÃѲö”àŸ«‚ñKÂüû5âoñYF+†òž)á‰ðL3¼VxñyYW Âsð¦"X5OÙÇêXì+£˜RŸ/Õ¦¥&°ÎRû|1ñÏÄ/¾Ö¼!ã)¾é? $~!|g'eÂ?xhµ]oÆlñË ÕÐHãÒô]h¦‹_Ö5 =*êÓî/¥‡ï¯ø)þ£áø)‡ÀO…?·ìãâjÿ>xãÇ_¾3ü ºÓôû1àÏj0–ãBøÏ¨išl{o¬ü_sw¦j°]ëwiyà˦tŽ'±ü«ñÏí+m¨þÈ ?d߀Þøà‹¿‹0iÞ?ý´>'x·@¶ðÞ­âŸè“IðÛÃBÇSÕÊxÂ/çÍá«}JîÛSñµ?Œoü5áÏ&Õ&öߨö§´ýþ Ü[k>3ýžþ!x^†Ÿ~-µ•ýŸŒ>j—V2ýŸKÕ®m´›ýwHŽöòkÕ.m¡Õ-/µ­÷P±´ñíô^®{’çyžc5Àáy3n­V–A“Ö…u3l¥{ZY½]iFR£ŠÎ©Î¤²Žiòà ê*3Çæt£ñ\!ÄÜ)À™ O 3¬ÚU0 Óæâî!Ëq14xK7åöyg€£á^c!N£¡ xŒÍË7«FXœ.]ÂøÊÿ iú}þ­c¥iV7šž©©Þ[iún›§ÛM{¨_ÞÌ–Öv66vÉ-ÅÝåÝıÁmmrM<Ò$Q#»ªŸÕ(|WðÃþ÷§éþ:ø§é¿à¤^+ðÌð‹ö|Óä]KÃ_³ºx£L’üXÔ4ùŸí~5—I¼w‹ÃZ|±;Kžè5ì_Úzv»~Ä_µwìwû5þØ~:kÿ ¿iüøqaã+€ÞÖü àÛŸ‹^!¼¸ÑäðåÝ|KøŠëþoxsN×tÏj—º¦·†üZšfy¨¥¾Êêß¿à޾%øãï‹~0ðoüÃÆ_¾%x‡Sñ'Š|Yâ_ ~É÷º¥Åî­w%õݽ«Ãskžžn%fŽÚ(øEŠ&‘â·"Ó‰qøìßG)Åd|H¸Z¶]†ÅæÙø9ø…¯Ü¼o%Þ·ªÝÝ_M0,vÊÜ_]˜à²Š:Î9RÃM‚; K`zšßñÏ‹¾ ø«âGŒ¿áŸ<1ñ÷ßl?áÿ„Gþ?Eð®ñ"óíZ §öÿö§ü!77¸û?‰íõ¯±flòtô?¶îÔ%»Û_£à]'‚Â:yá(¼5K V’¡S MÓ‹†¥û´jQ‹TçJ>í9EÁh‘üõÆ5szÜQžTϱX|nnó ËŒÂb#ŠÂbg Bl&&2’¯„©B4¥†ªäå:œ¦ùÜèÓþ Mã_ø'?€nÿ‡>"ý©>~Ûßþ7Cû)øR-Áß³÷ü*ˆþj ›âÿÅi´äñmÖ½y§üL°ñAñd"‡U½Ð.áÒ"ÐæðâZí)oÙ ¿lÛâíßãOƒZMŸÂ[Ù·öRý™ì$±ø!ðBÓSmSSûqŠÎßþ__y­É›§¢IqgivÑÝÁk6©¨ëZþ»ëðSßÚÿÀ_·'íã |døU࿊^ðWƒÿe|"¼»ø—áÍE“RñN›ñKÆ~;¸›EŸÃž&ñn“y¥ÿdøçNµI%Õ-uíM7[ôÈí¬à¼»øæ¿/ðÛ‚iå¼=ÂØ¼î–e,ë*ÀÎ0Y–2µ\>M^²©Kõ<?Õ(V©FNœ«û9â)Δ+FJ‘—ô÷Þ5J¯q†YÁ1áדñ>±|O•a)igyuJ«BŽ'0IbjR¢Û•<5I¬<*¸b%„Xº4kÒý‚ÿ‚Ðêþ#Ô?dø"7ÂÈ|Qâ+À~9ýŸÔ¼ñ3ᧈfh4x'X15þu?Ù¯ÒÂö9!Žm;Tm;PKf7·v†—©iמv„³Šþcò`:­šæØÿ©b:ÆÂ—b3zXjÕ[öif™mXhT«%MQÄSUeQ|¾ŽâŸe^;xsÄÕs©cø3Á|;ƒÆVÀN®/ ‚ÄâxOÃõñòÂS½Jµr<Ƭ1ò¡rÄF¦sÂÓuêGÚyoü›D~Öß±‹ü;lÒøßÄ>Ë«øF÷ZìúGüA§i^2µÝwׄ5ígOÕ9ìd¼{Ñ:ËpÒ~¯|<ð7Ãi¿àâˆ_ 4û}>oøOã´tûqä5§ŒµŸÙúo·ºl1!û+ã-¶«öKEYIäéöñ¢ZÁü¿àOÛsþ çû"x—þÇìÃû~ؾ$ø÷ éú¤? |!ñƒÄŸuÙçá~µew¥Øj'‰¼)ªj:ñ&›¡ØÞ<bxÎÕ ²FßkÒ5¨áÖ,¿?þ|XøËðÇ㔟µŽ½¯¦­û@ëß'ø×âmZô ¬ïüI}¬ÜkÚN¡ œÅ&“¨›íNÇR±°–ÞÕ4íNçK°x­a·–»ñyVsÅ–˜árüvAGÀ— a–h¨añ8¬Û1«R½,C¥…¯‰åÃåRJ+~Öß°GÄOŽz¯Æÿþÿµ_ÿk/Œ~$ѵUøHº¯ÃígöP×þ4êöº_‡´ßji—Kñ_mCX¶Ò/uß ßiþм[¨Åu£c:¶¡}woþ Éâí'ÅðUÈ4.á..¾~Çüâ4ICa­j_üiñ ÖÎeGf‚Y|=ã]ùb”G#Et“1Kåeu±U8»Ã |“ÖɸS‰pتXÅ„V©K ÃxJ‘¡6"¼§„¡Zœ)ÑÅIS¡ˆöÉaù¹*¨ýgÓ…Oþ‘¼GCŠòÎ%Éø«8à¬^A,·¯K ‚ö¼I^š¯ N…,? üؼºÅáêaå|>ð_Å-;Sý‘> xÓÁ?üMâŸhÖž Ô5­{áÂ_ÙÂ'¬èž&×î.í×TøY­Ë?ü$:w†®Åž­áÉ"´šâúî×NïaŸÛ'À³&‘ûF|3øÏðÛÄ¿>þÓÿ ®þ|TÐ< §iÞ=])´èE¼36¯©èzeÄ—ºüQ¥Ogs¯x}þÑ}a©A¬Û>™ö{¿O#Àñ?økŒ§”å|œO Ç>ÄQÂV£FU¥OÅXÚ¯U*Ò¥‰ÄÇ&­õ¬*ÕT1†„ß$¹ˆã¬û‚¸»ÆOðÙÿU‡‡uøC„if8Ì»ˆ£„§ŽÀä(Ò¡‰­‡…J¸:?ÛØ<&‰T½®_‡ž'FT§n~„þÈß ¿d?…ðO¿ø,ç…¿eßÚŸÁŸ´Åå¯ìãñ2ßÀŸ¼UðóÃ^Õ,¾ ~Ñëá»?Å:åÕÞñ!¦º®¯·{â]NK=>'þ aûo| ýˆ>6üNø»­ü9ý¡î~Cð§Ç_ ~øTè Ö¾2Üèðx×À>"ðuψìn|Eà_ _j—^ðƒYkZ,Ö–÷+”Á¥i+¥È.`ùL_ñ.'"ñc <¿=Çbø“”bòœFc‡Ê(c3c–à°hÎŽN¨`pøš5p“PÃ,=*ÑÂ}^x§,\ë7ú†'‰øÄGêø\Û†²üqv{Ïèàs¬×5¥“Ò̳ Ç…żn}ˆÆføœ&cE*Ó¯,V+ dªÐÁÔ–]GRYŸðCïx»ã'üãàí ñgÄú¯>*|M׿hMwZñ.¹;Ï<_ü'øÂ×ÖÖçìö6³^ ‡†ÖÎ8-,, ž“§ÛÚéöPÁRØø¯Æ?¿à¹:׌>'xŸQñdß à©V¿ >é·îLð„þþÑzG…¼9e¥XÂ#µ…l|?e§ZBV ßk¦­1›TÖoîåù÷þ 9ñËòƀ_¾*ø{Æsø{áïü-?ííÚM„ž/oøK<)ñÂz_Øô¿êþ±m·Þ&Ó¯n>ÙªÙcLÜ[ý¦aµÅ?ƒß¼7ÿ áãÚêÿž?Ñ>kðP¯þÓÖ^×4+ 7âü+ÝKã™ñ6ÚÂMmgûþì=ú{ÚÅâYt?íȦµÄZFoëí1ü=‰|_œãpÙ]°2ð†G—Ö¥Fœi,ls椲ú³„•¸6é¥r:+ì¥ÎãâpeƒÄñ5?íL'Ò;b©K刣Ó¡á(æPjïêµ~§šÒž"„J·Ç:®_[ªë{ßüzâoø{gíÛc½¾ÉÏìÑy ýÜw7ÿ³Ã¼™W {ioæ·V1)=+êßø8÷Å>2ñ¿í×ð+à.­â½`|ð×ì­¦ü^>¶¹’ÛFÕúßOû ÖµG¹ü×ý°~?xoö¬ý¾¿kOÚ;ÀÞñÿ…<ñ&óàÍŸ…í~#hVˆ.á^|$ðÿÃné ÑõŸhÓYÜë>»¿ÒçÓõËÿ;E¾Òî®ÖÊîæ[aÿ‚žþ×þý¹?oã'¯üRð¿‚¼û+øsáåßÄ¿hÚ,š—Štߊ^3ñÝÄÚ,þñ7‹t›Í/û'Ç:uªI.©k¨ÿjiºÜ¦GmgåßQÃù”1> ÔÅåµ-üš`ó9Õ§ ff5r~ÂÑ¥U¶ýyË Œ£ ÿ¬y¬õôø“Ž2:8¥„²~ ÁSÄñNmÁ9§K ^1y¾ <ò¶3’J5>¯<Ë^Nêµ:Õ©V„UZnPûOþ ãØþÅðEÿžñn©á‡_?g»W≢ºY¯ˆ×á‡ÀÿÙñ¼/ewq­À³Óí¼aâQkj²}’=BòËUky/´6knWö½µ·ðïü/þ Ÿk¢Bšm½ŸíÖt»h­E†Â÷Zý³m.í”䱎æÞGŽmÅš]Åœ³OÊßðP?ÚÿÀ_´÷†ÿà˜ ¾x/â–©þÈŸ¼iàŸ‰þ&ñO‡4kOêÖ½ðÇá/ƒì¿áÖtOk÷vëª|,ÖåŸþ;ÃWbÏVðä‘ZMq}wk§µíà/ˆðM¿Ø«ö"ðç‚þ)\üPøAûTEñwÆ+>Ѧøe…¢×>9\46ú퇉¯|C¨aøÁáçXõO éšq]'Ĭu0¶-©ù™_ fø^à*)­G€ñ;2ÎsX*pZ ¸ž-v!ÅûÔç‡ÅeÑŒï){*”#nX¥w2ñ‡±üsÅ×â\'(ξ¸<›+sÄ©a±üCMðÓÅeéÍZxÊpË3F©W·/³Åºv–&~ÛëÛ_þP'ÿØÿ³ú¶ÿÔöÊ®›Â2ñG?àÝ/ø(N½àýrÿÃÚÅÇÇͳj:l¾EÓø{Ǻßì•à_i>f [_xGÄzæƒ~ö•Ê#Æì®¿þÔ?µÿ€¾ Á6ÿb¯Ø‹Ãž ø¥sñCáíQÅßx¬øsF›á”>‹\øåpÐÛë¶&½ñ z¡‡ã‡cÕ<'¦iÅtŸ±ÔÂØX¶¦x›ö¿ð…ÿàß´çì9ÿ_Å/ü_øåñ·Áþ6ð®¯áhÚ·´­Eñ7À_^ÂMÿ 5¿‰ìn ŸÂZÅý›á-^Ðßê~†[¸¢½¾ŸLªœ7œTÊ1Z™]yºž5<úTgIO"ŸývXùE·ae‚n´¯vé7xt0È8ß…©qw†xåÄ9}*4~ÿê«Ä¬O³T8š‡ arÉeSžŽŽ6 ˜d¥È½¬/òòÉýyÿÃð¾™áïø'/üÎÎÞ%¸¸—ö9Õou=NáCßêú¬_?jiÛTÔ.t³]5Ê â,åmp‘[âŽ4Xÿàšç…¿c¿ø)gí Ü˜~0ü0ý„/µëk—Õ,µCá_Å_ÞÞÙ´l·^añ/€|#q+[²»M¸.£ÏÎ?³gíðëökýÿࣟ |]á/‰ž*ñ_í[ðëáWÃ…ø{ èZåž›âKÀüç‹§âR³Ñ­õ/‰šõÕÆƒ¦øŠú-"Ã[º]:Iím-/üëþ Çû[^þǥ >!ü2øð‚ÛáwÆ…šŒßÙ’øƒÃži ÌQ5Ü2Cm­is}¢Ü[êæ ½:ûZÑg{Ô†£cÕžðÎw^+ÒÂ`jIæù㲺r•:4ózF[TÌ0”jT”i§‰x V]'ZP¦êͪ’PnGÏp‡ˆÜ)–eFì×?ÍðøŠœ7ñ.âZ­O‹ÈkqaÄôòÌn*…8Jº¡ƒ†m•æéa©ÔqÃѦ°ð•Zp¤»ø …t½öñý–5‹{t:çˆô?Šš†³¬±gÔuÖ>|FÖÒêí¿}-šN¶r›Fcn×VV÷Ýij×Ë?äó?à ßö_µþ­]f¿kà”?báûsü*øeûþ˵dSɤüF½ñŸÅ¿Ú‚ãÀš…ŸÁŸ‡º/ÃoEg£ü7ƒáö¥©é̺ߊ®<àÖñŸˆu}cćGÔ®4!,Éâ-Rñ |{âí'âíûdüBÐ.÷ÃÞ?ý±ÿh¯ø~ú9h¯´_xþÿVÓo!š'’)¢žÖæ7Ic’Här;)ú96yŸ‰Ù®/û7–—dxwK =.²šÕИ¶»¤xØU|wLÔõRÓõ"úïLÕ´›ëMOKÔ¬.%´¾Óµ ˆî¬¯¬® dšÚîÒæ(®-î!t–£I#eu~¥üBÿ‚…þÍ´Î…á©¿o_Ù_âo‹¾(xkÃö¾?´쟯x;Fø®èÖ töV¾(ø}㋺“Áys5ôwSÖ¬­¯uRM@ðÅ”÷6:±œá3<§ŒpÜ[ƒË19Î_‰áõÃÙ®/•˜à¾­˜VÌp9†‰¯‡†2„§‹Äáñ”hÕXškØV¥N¼c8/͸7ɸ—ž ð›žå¼1TâÚeùŽyV®#ͧW€Ë3L“˜Q£_û;©e¸ÉñZ÷Eÿ„*_Âoiƒ¾(øºçKþчÄú$ÞòaøhöŸm‹Iñ4²kùñéÅ´ñm÷WüÉiªþ×¾>Õ,%óìu/Ù_ÅWöSùrÅçZ^|Nø)qm/•2G4~d2#ùrÇ©»lˆ® •ãÿ‚Œ~Ç?fOÚóö}ý?eÿÛ‹ÄÚ÷íoð{Ä? |AâßÚVûáo„¬ü:ºÏƒ|à½/\´ÀkV—1øz/ˆº¾«&” ´}zKkm>mcHBuü[þ ›ûYê°Å|MÔ¼+?‰ô£ðÑ>|Cð½•í¥®­q êÚåàѯä3iãTÒ¼CáÍQ&±j1ØM§µåœw£Q¶ùì÷Åœ[Ã~%`^_Œ£…Çáð´¸G˜RÀ`ñS§O,ÁËJJ•ITŒ±¥,S¢ó Üß¼‚Œ©QJ0û¾ÀøwáGø žb󬦦–g¹Œ¼FÇd¹ž37ÀS¥W7ÌSöSƒ\˜,›€¥‰žSB8y*œ©bqœÕjôðo°?ðÙ?²O?á}ì?áV|g?‰êkéÏø'_ü§³ãÏýŸ×ü7ÿQÏÈ~Åß·§ì#ûþÐ>ÿ†rý”?køh÷þ4¶ø‡ñ/ã¥ÇÂß|MÐ<%®èÞ(¿Ó<ðBÐüGá¿éúRxþïÃë>#¿ñ‡‰<]¨x?LºÓ’úwšò [çïØ¯ö¿ðÃ/ø)'Å/Ûwž ø¥§ü/ñoíQûV|]Òü)/‡4kO‰©áoºŽmü' Î…©øšÃÃ˪YMã=95èíüYs§[5–ªºn§«5´ uÁœàsÜû1ãŒ}.Ìðt3/ ±W ZìF31•Lö¬pΕõcC)ãiÂ4*TçätêO‘Õöpûl¿6á>Éøw ŠãÇÖÂý'²®>Í¥—â§[–ðî/0á¹RǺ³§Nxœ,p™Uzõq4i{8Î5©Sö°¥õ¾„ýˆ<-¡øÇþ §ñ»Hñ0\iö¿ðR_ÛGÄðÇp¨ñÿmx#UøãO HÁS,>#Ð4© 8Ü'Ž2„8R???k«Kâ7üOöîø—ãw}[Å>ý®>,|?ðµýãN÷>Ð~x¶çÂÞ }!æv’ÂãOðöáèôûÛWŽ[ScÚ{Z«|Ö¾~Ò¾!Ñ?l_¶/Ã=ľ¸ñ'í¡ñwö„ø¡üAÑÿ±õ¶ðϼm7‹4ÍÅšUŽ¡{nƒQÑ5I|?âkmZ¾´Ìº¥¦¬Ü*Gz~ÙøñûkÿÁ<5¯Šþ1ý¥´OØ«ö¡ñí%ñþkµcáö©û#]üQ:MŽœëá…?e½à©ð2óáöµ¨kZ6â;‹ˆi¯ßxÍáµÑµ+ˆ¡³Ñ>Ë¡èðCm3ý®[ŸÌ_ø)§í‹à_Û¯öéðÏÆ¿…Þø³àÏøSöRðÏÂkóñSþѯ.¼WañCÆ^=ºeÇ„¼[ã}öÂ=+ÇZu—˜ºâ^[L× û´³·¾¼÷=[öØý–¾5|øIàoÛ»àÏíã~Ïþ¹ðGÃoŽ_²Åç€.þ&ê?î?³¼øïõ-+FÖ4ûÒ4Á³núî°g²ŽêÚÏJ»Ô¼Q¨øƒåòþÏ0¼5á†#ƒÏ)K†°y®8ÀdÕ©PÎpsÍ)Q§CJ•I(b#†–X|MsuÖR­(N4ê#îsŸxJ¯‰þ2`ðþÌ*qÎWÂx®Ísê³ÿV³ ™+ÆÕÄe8ŒÏ z™tó:„18þÔ—¿±‚ÿf_„¿´Ï¼9û9|ñoÀÿëß´ü!á»íwÁš&‡àþ*ÞøÅž&Ñïoô‰¼-âÁ©K6á{[{¿Çi,:…Å­‰^ñ‹âÏìÙã=CÀþý—gÏÚ'áö¤·‰¤ñ·ÄOÚÅž¼ñ?ŠÖö×JB<+á‹ CMçLÕ ÎŒ.fÕ[ľuóÅl²•úÿ åØl«!Áàpx|Ï ‡§SR3Š”ªæ0xœv'Rx‰Ñ­^ŸïªVzPU9©Q©N•HQ« ѧü—ã.y˜ñâ3 Ö<9õå–e8:µ¸[W”׎ 5â)PÄG†£Nží¨ÃÚÏõŠÄa+añUüÒŠ(¯£?* (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ ì~ëÚ§…~ xÅÐ[k^ñ†5í"âæÆÃT¶ƒTÑõ»GOšãLÕmot½F®íáylu++» ¸Õ­ï-n-ä’'(¬qŒèW„ãÂtjÆp’RŒ£(IJ2‹MJ2M¦ši¦ÓV:pu*RÅájÒœéU¥‰¡RJr”*S© °”' Å©Bp’RŒ¢Ô£$ši£ûFÖ4?xöT׿iß|0ø7áoöñ»iñ_Cø-ðŸNñt:´I¨D·¢þÛÁ¨!Š£•^Žd]“$ŠÌð9ðçâ7Ž~5üCøÏñ“â·‰µO|NñÏŠ¡Ô|Uã ne—SÕnf[£´¤) ¼pÛÚXiÚ}­¦Ÿ¦éö–ZnŸkm§ÙZ[BQ_Ï>B¥ÅøªÑ\M ãê4q"§^ŽŸµ<*ÒN¥<,&”ᇄ•É)F «ŸègÒ¥¼'eØL+xl&'†x{1ÄapíÑÃ×Ì1Yž¬}jùiUÆbaGŠœe^´aÔœ”R^ÙEWôaþuQ@Q@Q@Q@Q@}ßÿäñ>§áßÚkE±²ƒA½Óücá­{Â^%Ó *“§?õŸ&‡59Ê䫎£J¬9¢Óå©Ns§R7´á)BIÆM?Û?ø-O‹oÿb?سŇ쇤ø#öpÔþ$½‡…úÖlH?‚V–ÖŸ |/öx–/´Û]]ÎT±2ÜÍ}sæJå‰%˜*¨Ú¨ªŠU@(¯ËüŒjpRÇTJ¦7˜c>·ŒšRÅb½„©S¡õœD¯V¿±¦Ý:^Öröp|°´t?«¾˜má±Ë,÷‡ËpY¶W _G÷X,$*䘜MXa°”ùhP\EIשTà§Zs«$ç''ê´QE~â …Q@Q@Q@Q@Q@ÿÙxerces-c-3.1.1/doc/html/graphics/xinclude-3-header.jpg0000644000175000017500000002643311363617747021506 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ#È"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ø^Š(¯õ ÿœp¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠýêøÛâ__ðOßø'ŸìYñ7þ ýðûÁ‹âßÚ'L“^ý¢ÿk=GÀzÄ?ü3Õï¼;¢kG„¥:î—®i:>‘q©ê^-ð¥£êz|š†§àxô£h¾&ñ|—w_-ÄÜK,†y.‚§ŽÌ¸ƒ2yf[GYnW†¾.¤ñ™ƒÃc%B>Ê„¡F&+‰¯:thPœ¤ÜLð××Çõx“‰Î#‘dœ#‘OˆsÜ}<ö¶:ž8¬>ý‡*úî]T¡:þßR¾a‚Ãap´ªÖ«ˆRöTªþ Ñ^íñÇöÆý®hÿøkÂüGð7âö‘ã]'ÅWÿ¢øá?‡î¬-týgKÔ¼7ÿ OÃÿì*ëAÔ"×%Õ®4Éü9 ÝkúN…{%ÔQX¼vÿÿdükðuïÄk¿‹ß³‡Àÿ‡¶^(¾ð`ñ—í ñ«Ã t»ßéšN®jn›g{öý~øÚiºþ<—phÍ`Í{äÅu$¶×©mÛÞx»ë¼IK’ÔWFTè㧘áå)?Ý}^»Á`«×•T›/©Sª¹eî4›<ÌoPÇgô²nÍ1sG‡úÅ E,ž¾KŒ‚ƒQ¯v_ŠÄâ©àãFR‚öï[58Zª”¹”¨¯°?jØ“ã쥥xÅ~3ÔþøëáÇÅ+Y.¾üUøEâøümð÷Å"+XoÌZn²ÖUÛ4Ú}ÄZ…Œói±Yj¶^}Æ“w|–WÆÛ{àŸüûãïí û<ø·öŒøU…jžÒ<[ãÑâ&ѵ?_j¶|3á-{ÆwÇP½Ðô_jq ô¿^Ádmt{Á-ô¶±Íö{y%ºƒì­þ ;ûA_ø«Sð'ˆ>&~Ìÿ|pÞ/ñ‡ƒ¼àŸˆÿbð·~2\ø7_Õü7u­|,ðlÚÇŠukZމ}'†¯õí#ÃsjúoÙõT´‹O¸Šáº³N*áÜ—,k›àð8¨áiãž½G¿T«SJˆÁEÊT¹ð¸žyE?g jTå§ Iyü=áÏñ^ pÆkœ`'˜×ÊV/AT ³,= "® u£uý–aöp¨ãíªb¨Q£í+T7ùÑàŸø“â/Œü#ðûÁºoöÇ‹üwâ}Á¾Ò>Ùa§ÿjø“Äú­¦‰¡é¿oÕn¬t»·j—Ö¶¿lÔ¯lì-¼ß:òêÞÝ$•:ŒŸþ$~ÏÿGÚ~ÍsäÝÃqoѳŸÃO|ÿ‚…~Î_ þ$ø~ïÂÞ9ðWíeð'FñƒzÐÉ5ì|"ЯZ e³ºò!»·–+›Yg´½±¿±¹µÔtÍFÊyìu-6îÒþÊyína•ý|䙞3€ËóL3…Œç_‡¯ “Œ)ÕöjG•Ú­:5íBµJNp£]ª5e ­DøÌß‚¸· Êð9Öuù¶Y•f3…,;ƒ«F…JµpëFŒå8§‡­ˆÂ5‹ÃQÄ*Uq8KâhB¥ê.Šú“öÄý’ü{û|\о |UñWßx×ÄtÏŠVpü>×5VÖ/ j¾&ñ?„íäºÄ~𞬗 «xOQYž-*m9cšÉSP’æIí­¾pеÍcÃÞâOêwº.¿áýRÃ[Ðõ6âKMGJÕô«¸¯´ÝJÂê&Ym¯,o †æÚxÙ^)¢I†Pk«˜àól Ë*ÄQÆá1t}¶NrTkÅÝFJ|’”`ä¬åìäâ®Ô%k??9ÈsNÎ19àqyFe€¯†½¼V¾YK÷N¤!Rjœ¹¡mMÚ.¬SrYTWí7í_¦i¿ðP_ÙLý½¾ØXÅñïà~‘¥xöÕð.k3j:-…©ÃŸ4ËXÖàéÐY[ÊÚÛI ÐZxa5Mý½Â«Éu—ï|HßðNŸÙÃMøªÉûr~Öž»Ñ>ørCåë~x–Þ}?Vø¹v™?Œ>$X½?ÂW±ýšëÃþ MSZS²¼ÔΟ'ÊàøÖ¼K.•.$Žg<ÃsÅ'[ šÑJ­iŒŽß*§k4Žk#…|ºtgF„ñUèàçúf+Áìm ö…*Å<_ã2:|S—ñÕ, †Ãõ¤èQ¶®21£Ÿ¬ÅK&ÅäU³(¼iKñ¸ú9VšÒüù¢¿^¼ ªø§Á¿ðmïíÕª&¼×~)Ói_‡žv¸Öh]]øûö6¶¼xì —Ø Ôöð+Ú³¬;Ù®A˜ü…û5~Å?j¿~Ð>ø_}á³ý<%câÿèå߉SÅ(¶ÔôoëV?€´Í¾!ƒY×îâð«eoa©ÞèQM¨Þéñ]:\ÜÍgÑã,Z\M‰ÌÕ,£Ã\Iþ®ÕÅWÄûZUç:Lðø™5B—ÕÝ|NmK 7¬£(Æn»UióçÞg™|<<ŽA]ñ^/Ä.Çq.—`ªÐÄáÿ²ªærÌpô¡Z¬åŒÃÑ˲ïíX·%z°•z52êÃÂxŸ¨¯ÑHÿà™_/¼ ã¯xdznj|oðÃÃwž,øðÁ?´|tðN‡¦¯qâè6÷º5Ö’ðÏo}¦/‰åÔÆ¡šMµÆ®c±¼/á¯xÛÄ:„ü#£j>$ñ7‰µ;Ãúk-þ§¬jºœñÚØXiö–êòÜÜÝO,qÃjK3Âäg/Ïò\Ö8ÉåÙž ¾J8ÙR­a”©ûhTªåËËF­êÒ¯üÔÔ§J¤ã×Äg\Å\9<²žyf™mLæžU N¤ep¬°ÕiaÔT¹ñ41418M1XjÒ…*ôiÎq‹Ä¯uøQû4üløáàÏŒ~x+þ|ðÂxËâÆ¯ÿ „´_øE<6úW‰õµÔ¾Áâ{IÕ5Üé~ ñ%רü5e¬_ìß$Ú‹‹Ë®¾¸Õÿà—|7}eàïüuýü#ñ·Q´³¹°ýœ|QûJx?Eøãw6¡Ïc§[øfîÑ&¾»WU¶x­g$?á®ãܧˆ8cÄx.-­‡ÄªTpØ·ŠáÞͳ¥B/CJl67 ‚§™àkѧŒ¥‡¯*RXJÕiW‡âýôüëö;ø™ûmßèŸ ¾k¾ðÿˆ|?ðWMøƒyyñSñ•¢Ë¢éSx/×¶·ðÇ‹/ŸT{ïiÒà ºt6i ë½ìsG9²×Àß~ן| ðWáWˆ|ˆ~!ÂOýƒ¯xV¿Â ÿŸ…üCâÍSíš§‡4_.ë ê6VÿcÒ¯sª-î>Í žæßë*ç™M fЭ¡Ny –cœFRwËðU¨âq±8wݧ:8LMDãÌùhÏM›Ë‚8šurxá2Œn.‡çø¾áÌM:Q<ë8Áã0ؘ/ï$£‰úÆ7 eRq÷«ÅFsQœ£âÔWqãŸjÞø±ñàÔ—ºOŠ|aðÏ⋾ë£Á—7:åç<â[¿ êv8k;=RàÜj–„iö·š]†­,7¿hÓ-n&û:ýã¯ÿÁ,?ho Øhšf¿ãŸÙËHøÓâ]xÿ²Þ£ñ·Ã¶?´—ˆ4ï³IvWAøywšÝð†€ÓôŸ^ÞIq–PÃ-êýž±Çq.A–CS0ͰX8fPup2¯Z0úÅ u'ˆ‚zÇJiJ¶"j4hªujCž7Ó)ðÿ³ÜFo…Éø_9̱ OcœQÂ`ªÕžåZÂÕQZã+K]a°”Üñ8ŸaYáéUTæãò_íû4ülý–øóà¯øA<_¬xbËÆZn‘ÿ „¼OöŸ ꮵ¢Yê_oðn½â.;Tðö±kö9ïb¿ì~t¶©oqk,þ_®ßðp_ü¥áŸý˜/ƒ?õ¡þ4WÌ¿a‹|¦üZñ¾þÏ? ¼Cs¥x;â'í-ñKIøKá¿j¶NÑ]Øx3íöÚŽ¯®´ öS{o¥.•%Ø–Ö BYíoc¶ð8gŒèc¸/!â~"Ä`2ʹ®œêF—´¥‡–*£«j:5jâq5$áJSTc:õy!R$ã÷þ%x?Œáß8ƒÃîÃg\IG+öxŒ;­Jlu HÑN¦e‰ÃQÂà¡W­N‹ÆNŽ „êÖ¡EB5jB3ø¢Šö¿Úö|ø£û2üF½ø_ñkDƒGñu†»§]i÷öÚ¾â_ jþqÒ?•æ¸,V]™`+ÔÂãp8Ú0ؼ."”œjQ¯B¬cR•HIYÆqO®Í3Å(¢Šè8‚Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ¾ñý’ÿà£_´Wìƒi?„ü)q |Jø9ªMtÞ$øñ6µ/ê–Ú‹7öºèWñ¤ú—‚õN9.R{›5O]Ïu-爼âY£·X~¯ºt¯ŽÿðOÝkÁ>Òh_ÙKö†ðÇŠ|%áøsQø™ûx¿Á…ÿÄ ¿éði1ë^.øañzê×CÑõíVÖÊ í[ð¥Þ úö·w©jw:~Ÿ$ÈòüY‡Àc2Ï©f¼9ŠâL·Q,N K ^¶QW£‹*ج.%Jn0¯—ʦ37ƧÏVŸé>â3ìÃ0án5Êx'ˆpt\²üNs‹¯€Áf©% VWS°XܺJµ>YOœª8 l#*j¤±*…¿XþØÿ¿e?¿±eçü›öaðv¡ðÏŸt?‡Ÿþ Þ5¤žðç‰gZ׎|¦ˆŠ­ Õ°²¥èlvÁìßÄÌ“œf<;€Í«ð6+žáøo˜pÿf~&aå‡ pÄà~©É²ìÏ [ëýV®S^e£:3¡C3lOÒ_ðPÛ„>ÿ‚#Á;,g‹P|jøS§þÝvGƒþ*X|?ñ»é×Ò~×¶ž%²¶ð/еÝÏGÖ_Wð§—v|­R-uk º}ý ü2øŸãσßðoGüÇ_ |I¨øGÅÐüzÓü-kâ "SmªXèÿuÙGáß‹#°»LMcwá/kšt…£Ã}§Év/l.-¯`‚xþ[ø£ÿý•~4ÿÁ=×öUñ_ì‘ûG|6Ó> |Tƒâo쉥|4×|+â+»?éúŒ.t}CãU׊µ4ÖfÓîüKãŸÉã8ü/á+RÓüBø_JðQÒ´û¸ü³Yý²<¢ÁiØœø âæ«ñƒãïÆOøÿ·z/†4MCÂZ¦x‡àŠo-üct¾)ĺf£ §Â?X´zg…µ«4Õ5ÚKä†òúçMððÜ5žO‡ÞWŽÊsõ—‹xû³ YtçŒÉ1\AG2¯ŽÄG/k-šŽ¤žcO Jžu^ >Æ1‰ú¸Ëƒéx•Âî>Ȱx~ç<NXÏ^g`2(à0Ù"Åf²yË”qK.Åf“xÌES¯‹ª±U*ŸuÿÁïu€¿°ÿüâ€õIlþ!ø#öfµø¦xºâ(o¯ŸÇžøUûNx‡Gññ^¥Å¼íe¬Ø[][YÜE-ªG@ñȦC&?ük§Üêµ§Ä_x›TÔø»Â_|RšÃÀñè\I3ÛO Xh¾Ñtƒ'MÐ4m?I[8mÒÿð@m>ÿJýµ?dÛ RÆóM¾ƒþ¿Ÿem5Ü>oÂŒ³EæÛ\$sGæC$rǽ|R$‹•e'Û|sûMÿÁ6¾~ØÿµOÄï~È_µF¹ñ“áíµûA­ï…¾xËÂ+øñOâ/‚þ)j©kãÏiþ4Ô->#ø6o\Øišÿˆ¼?áÙ–kŽž_ân:µ<—N^åTc†ÀSÂÔ©Í<ÿ>å§Ybq8~J‰Æ4§R<ôé¾Y×ä§uŽM•UÏ<â\]ÅO ƯÒ+‰ç ÓŽÄ`pÑÂG%á‡Rx:ø:ÝJôðÎu(aé8UÅÓæÃá}¬êû)ýYÿ —GÓ?àà¯Ù HÐþ̲x—Eý¼_ã¹ñŽ›ûJëž·¹»Uå/§ðM§„­Ü¸ó$Óì4½ÄÅùöÇð÷†ü[ÿüs𯌣·—Â&øÛûx{ÅQ]ùbÖO ë_¾ éºäw&Uh¾ÎúeÍÒÍæ+Gå–Þ¥r+âßþÕ;ø­ÿÓÿà¡´V‹}¦]\üpøKãUð†Ì:†¡á?… ¼Uá›ûhj—ºeœÚŒðÕ•²ß^hÑêÚäWzÆ­%„úÅÌÖý­¿höžÿ‚þÕŸ´ßßüFðGƒ¼{©ü ><Ò-<5â‘uðÓáG‡~êz”BÖüA¥yO¯øRçSѯ4­~òFÒo4›Û°^ÜIemÍÃð×ÄkÛC k6ͨ^„½ð扬Üöój)£ÙxÃÚGç‡Å‰Ÿ¾!xêÁg¿?þü1ÑüŸsyñ›ÅÚ_ˆüeâÿÁ­ê72ø‡P³Ó-,lô95 RÓ´ïì}"ÜéV?ð›¿>[Íbu‹£€¸nymL‚že—ñM߇rœNRêâ±xZü=B5)á(⥗NãR¾1– _ Ò©V‚T㊅”æÏ?Æ¡Ä|?Æ8ž­áö7„xË–f©C‹ÃqŒêá«UÆÐ†e•Ö¤ðø×&ÅãñÔ±QU¨¬k©R¶ã!^å¼q¯x÷â—Äéþ.üUø©ñKâ¯_–¾³Ô~%øãYñÌš7…¬ï†«o¢h·ž#›PÕ´í.-Z]GVM6-LéɪkzÝúZ-Î¥<†¥}_û~~Ò¿hŸÚ«I¾ý•>^| ø)áÏÚ‰¬ÙÜü*ðgÃuߊVÞ4ñ6¯¨êú}¿Ã{[ðž©gqá?øwK{û§ƒÄRßøzúÊx—MÒle¸ù“CE—ZÒ"ñ%Þ©aáÙ5;õëíO´Õµ«=î¢]NëHÒ¯õ=ÇRÔíìŒòØX^kU­ÝÒEoq©YE#ÜÅú^I‰uò|&yMl’S êO(©Nš­iɼ;§†^ÍÍZê4£i9%Û?—¸óŒÁñE|'Š0œ`©ÑÀÒÁq&:˜\Ç*Ö·¶ÅÉV¥Ój3X¹*´Ô\«5«?Qÿàœþ?³ýŽ´OŠ_·wÆ}{Tðÿìáá­PøE{à‹[[ Û¯Ú7Æž+¶GáÞ‘¤jå4ûûYmñ§ˆ59&³k]7E¶7‹­j–UæðTŸ€Z¾“ûU\þ×ÖÞ<Õ¾1|ý®|;§üDýŸ¾!_D>ÃáÏ Üéšlš¯ÂÕ‰-­“¨x9gÓ­t«Û+;ø¼&ƒ¥L×Ö‰âȬ¾Jý­¾:ÛþÔk? ôO ø§âÁϋֲÌñêZâÏø"Î÷Ó^Þ]ëz=‡‰l/om/|W¡[Ap¾;Ô®,ÿ>©”g˜\çâ, êæ¹C-Î8z•:K…«T£/±œ.«çyUZtó,mªÊ8˜ÔÆe´*Õ¥„Ëf~ï…â.— Wð¦{Oƒ©…«œdÜk[Z9e.9•/oS ŠU"å‚á¾$¡*Ù4%te—Q–[˜cð¸|v?ˆèCÝþU¼ÿ‚ÿÙÎ|8ÿÕûשÁ,ü]â_‡ÿ±ü3Çž Öo<;ãþÊãÅÞñœë¡¡x—à ?iýgBÖl$euŽóLÕ,­om]‘Õ'«ƒùÓwûixÇþáûFþÅíðóãïÆ/ß¼㿠ͦxGL¹ð¯‡´½Äß¼E¨Ûø¾{Ùø¯O»Žƒþ$³…ôßêö3Þj^ÅêZê7wZw}û6~Øÿ¿f¿Ùþ 9ð—ÅÞø™â¯þÕ¿.¾|8_‡º…®Yé¾!Ô¼ñÁÞx°j~(Ðu+=ßRø™¡ß]\h:oˆ¯¢Ò,5»¥Ó¤žÖÒÒÿÆÍxs8Åpç‰%•×­S8ñ)Í0XwN2xÜ®ž7ƒg_IÚT#KsR³åÃÔN/Dþë…øÇ†²Î*ú3bq9ö à:áìê³Ä(ÿdgØŒŸ‰08\&p»£^®70ÀÑ£4ý›ž"œ£S•JQúSþ £ðÖŸeûLxÃQ?´µ_~È:íέª_´ß]ÛÝüDø!$t“Ê^O°XÛI½ª²ÂR#3Æg–W~þ ±Ð´~Ò~Ö/x6ÝôÏxP×f¸Ðµû[Ëk=gGÕ5mnÓWðî½`ÆÚèéºî‹}, Êb¹¶óíµM>XomlîcôsžÎslŠ˜l%9á#Ä\+Ù~SŒ¨ýžŠÃas¸b¨{H¶ãâ(añ2q÷iâ´ÕÑàå~#pÖMÂþæÙÆ2Žo_ƒ|nâ,ß;ÀSqÄcð>&­¸LU <¬:pÃ<^.®8º_»kÃ4˜µŒšÿþ6üh²OüPø­ãïø§Æ~)³û}ݦ¯wâ=F=FÁ-µD™¬ ®¡ÜI¤rZ[¬(#‚Ò“÷Ÿþ —£išü—þ _¤èöqXiÖß±·ˆÞÞÒþT&ëà×í_y8Œ;;*½ÍÄÒd{öF©ª/ÏŸ¿iŸø%fµãMsâž¡û~Üö¿<_âSÆ~%øGðÏÅß Gìï©x§ÄW×:Lje°ñ–ë‰:™­ë——zå­Žƒá¨,./.F‘¥ØX¥½¹âdÿÛ_Àÿ³ÿì_ÿøiã¼kûZüÔ~|:Ò|£xsÄCD×oüñ§À–WÞ47~)Ñ/,t£sñ'ÃÚÅãøOñ%ýž“m­¹°–îÆÚ×PéâG˜ñb²ì æÙn7Šá'õ M$ú§å8œu,°Øºêµ¿ƒ©Ru’… ”}œ°óªÕXÒž¯C†ÞŽ`°j¾X¯³?àÛ?ù8ýWþÌÒûÿS¿Uñ§üìü6Oì“ÇOø_DûøUŸÆOâ@úšå¿à˜¿µÎ¡û |OðÅ[ï Þø—F¸ø_ÃßøV)“K×fðö«gáëû¥Óe¾O"×YÒ5ÿhÚ‚Úߤ1]‹ ô©î4ÿµ›ë_¥¿bïÛÓöýˆh Ã9~ʵŠ|4{ÿ[|Cø—ñÒãáo‰¾&è×to_éž øG¡h~#ðß‚tý)<wá‰uŸßøÃÄž.Ô<¦]iÉ};Íy­æqNYžÒÇx—õšG‹ø'–åu°’Ã*Äàðö G*ÕéÔ§Z+0ÃÔÃQ…*’ŹªtÚj¬©wp&ÂY‡øc‡ÇqfM‘ÖðßÇl_q Î¥hWžM[4Ëñ¸#Ð4© 8Ü'Ž2„8R???k«Kâ7üOöîø—ãw}[Å>ý®>,|?ðµýãN÷>Ð~x¶çÂÞ }!æv’ÂãOðöáèôûÛWŽ[ScÚ{Z«|Ö¾~Ò¾!Ñ?l_¶/Ã=ľ¸ñ'í¡ñwö„ø¡üAÑÿ±õ¶ðϼm7‹4ÍÅšUŽ¡{nƒQÑ5I|?âkmZ¾´Ìº¥¦¬Ü*Gz~ÙøñûkÿÁ<5¯Šþ1ý¥´OØ«ö¡ñí%ñþkµcáö©û#]üQ:MŽœkZ†µ£iÞ#¸°øvšý÷‰ Þ]R¸Š=ìº6Ó?Úå¹üÅÿ‚š~ؾýºÿnŸ ükø]à/‹> ðo…?e/ ü&¿?<;áíòëÅv_/áló Ã^b18<ò”¸kšàóŒMZ• ç<Ò•t1´©T’†"8ia¥‡Äѧ7]añõ*Ò„ãN¢>ç9ñ'„ªøŸã&áL§å|'ŠáL×>«?õk0©’¼m\FSˆÌðש—O3¡˜CƒÅTt¨}s-¡B­ZUkPoÃo_ÛSàíI{ûx/öeøKûLøß³—ÁÏüñn½ûAx¾×|¢h~á"­ï|YâmöÿH›ÂÞ,”³iÞµ·»ñ,qè֒è\ZØ•á?¾,þÍž3Ô<áßÙwö|ý¢~hKxšO|Dý¡üYá‹Ïø­omt§ðä#¾°°Ð´4ÐîtÍR èÂæmU¼Kç_°áB¥Yaêb²l,lè¥B^ʵ*òò:+ì¯Ø;à·‡¾3þÐúü,Š×à×Â}[øáñÃT»@úu‡Â߆˯ë¶úŽì/Ù|Cy™áYe pÉ GØßðW­CÂß4ÏØÓþ 'ðžO„ßµ_Âé¼â V¥¼;ñ[ÁoÕô3U¾Š7zÝÖ‡kã¿Ýì™­ü$„ÙÛÆ'’Y·Çñ–ŹO Ï VÚtj{LÍTQÃ`ó ÑÄbr첤\ž#…Àf5Òö´åF40ÉÒ¨±´å‡ü%Íø‡Ãn)ñ Ž¡N7Z)äs¡VxÌÓ(ÃN…ï8¡Z3壇Êq8ü¶Œc:§çÌœ1g•U§[ñ¾Šý8ÿ‚sþÓ^ ðF«ãÙSöˆ›í¿²§íAiÿŸVêh£‹áßoc†Ëô«‹¸®-tyôûÈ´èu}SÉQ§ý‹Bñ<ï/ü"Ö“òÒÿÁ:¾(xkö½ñwìÍñU·ðÇ„¾XÞ|Gñ÷ÆëË7¶ðŽ™û;Xy×Ãã$aÞhL:®—é–:$Ww‚­çƒ%¿–m'R¾‡Z¼Y…ÀfÙ®WQYZÁ`o—båZXŠ9ÆW xʸxÆ…9ÃÆN8lF[ˆ®ã_Z„ê¬Z…>/†¹ŽuÃ9p¦)ñ Ì3…ÃyöY *Áã8_>ÄN­L²ž:SÅW¥W%Ͳø<^?©,°Ù–K ,µÄ~xQ^ÍûJ~Ôö™ø¯a¥ü$±¸ð'ì‡û?hן þx¢¶’]SLµºß­xËX⑦ñ'ŠõXäñ‹u«i>׫ë—Igsªj¶z4|f½ì·‰Æ`°ø¬^ Y}zðu%ƒhשB”(Vœ!,G²äxŠtý¥:5ÝJ4«âiÂ8Š¿-Å9&‡³¬NS…Íhç4ð±¥ãhaêá¡*Μ]xFYNjœjó¼4§(W©„• ˜Ì.]Žž'-Á”Wôiÿ¦ÿ‚„þÜŸ³?íÝðçàŸì×ñî×ágíCöUð‡Å½wÃWß >|C³×,à,š\Eœä8î«RÄä”±8.'–fÔóüï ˆ¯Fy†Kˆ†µdä©·(òŸŒtWé‡ü:“ö› ü ñì:ÇÂ#àoŽ ÿáo§Œõjð§ÂŸ6àMbÞëâ÷ˆüYá­GðýýêüBѬtý7÷¾,º¿¾²×>ȳYir^Éò­Ÿì×ãþÑ׿³Á/|.ý¥|is£[Å®~ÏÞ<Ó|}ðòùuoXø–{Ë´zM…®› [Ý\éþ$Ôõh´Û'Wѵ«).X™¤û<'ðÖ?ëTβúÑÁáñx¬dã^*–ÄK ‹©‹«>ZxeB´%ªó§'º±N’ç?Ì<4ãüªYãøK;ìv/,Àà"ðU*UÇâóœ-)YÃðû\Öu[X¼-ªø›Äþ·’ê?øoÂz²\&­á=Efx´©´åŽk%MBK™'¶¶ãÀq æ˜Ê8 »;Àcq˜ˆâjaèaë*“­K ÉíëRå\µ(GÚEF¼[£Uóª3¨éÔåôó |sø_ÿ }ø)´k÷_¼GâÏ h?‡ïïWâc§é¾½ñeÕýõ–¹öEšËK’öOœ¼?û+êÞ4øíñàWÃÿÿ³¤øWá‹xÛâï†~:xLü Ò¼5}kág—S_ˆÚËhö÷#MÕ<]§xoR³ƒN}B-~ÓYµ‚Òæ×H½½a¸¿†1k,6w€¯-E|T©Õ¼pôðØ¿¨Ööòµ©N8¯ÜÆ”ÜjÕmJ”'¤Þ3Âÿrõ†xÎΰëˆÀá°~Ó ïŠ«™`Veƒxt¤Ýj5pMVxšjXj.ô«Õ§Z2¦¾\¢¿A>#ÿÁ8þ,ø3௉ÿh/|Xýš¿hï…¾º[OøƒömøÁkñ:?>ëE™µýº6 ›/·Y˨[é·æŸepº•å¬:dsÞEå_±ßìwñ3öÛø™®ü*øU®øÃþ!ðÿ5?ˆ7—Ÿu?iZ,º.•â xrâÖÖãÞñeóê}âÍ:Xa—N†Ñ­!½w½Žhà‚æéq_VË1ÙÍ<ß,·,œéæ8®y(àjSP”©â©Ê*µ ¨Õ§.J”ã' šN2MãŠðߎ°\A”ð¶/†3Zþ}N•\—.©F*¦kJ³¨©ÕÀUçxlU)JX:”kN©J¥9J5!(¯”(¯Ò¿‡ðJ¯Ú[â6‡fö^!øᯉšÏƒOÄ þÏ1ø¯¥h¿´‰|"ÖñÝÚkv?#²½m*ÎöÞ{Yb“ÅZ§‡VØ][®¦l$“bòÿ?à›_~8iú%ãxŸàÇÁíCÆZ†µ¥|5ð§Ç?ˆÑx Ç?uÝ]Øk–ß<•­x›\]7P°¾Óç¼—M±°k»;ĆîU´¹xyçÆü#Nž.¬¸‡+äÀΜ1-ba'V5§NQŒy¥Z”¡†ÄÍV¢ªRäÃbf硬áÛOÂ_êÖËhC‚x‡Úæô«UËã<¾­5Z4*a¨Ö„çS’jôëc0te†ÅJŽ#Ûc0t•'SB5??(®ÛâGÿ|#ñ÷‹¾ü@ÑäÐV×¶TéÕ›ÃÉÆ¿-*²öv§>^œÃÃn>ʰYÆc™pŽ}Ápþ!a³œF'/­J}GV•:êqRú»«^…?­Â3Âs×£mzÔù¾>¢¿I?hÙÿkè?à“¿±gÛõïÙŸAý’¦ý¦5H<-åÍãØh­gŲx‡öƒûFƒ¬ÿlZ]|4—DÔ\|Mû,>û7‰]að/‘w #Ýæ¿?`??¿gO~Ò_ á×|9àωzW™üý¥­ÃñZñ.¯yðòÎÀxrO ®ƒh>$è׺¦­®xÇD‹LÓ4ßj7© ®Ÿ—|øn,Ë~©Ææ˜œ¿,Ãáxð¯õõˆ¡S‡ÇK‡Uë<>8LMz‰*øY©ÃSšœ±UcUú¹Ÿ…Ùõ,Oàò 6gÄXÌóðq<,¢¶0ÁàkåÐÌ1ªUˆÅý‡§.|; SÚæXWK°J•V|KE}ëãïø'—Å¿üñgÇOüKý¾4xKáÄÚl?4ïô¿‰^"ø]ý¨é¬ž3¶Òì!Ò¡ˆI"yÍ¢ë:ÛGn&ÔJ*Òòúßåß‚ÿ¾%~Ðü;ðŸá/†n¼WãÏ,Zv›o$ÐAok Üßêz¦¡w$6:^“¦ÚG%Õþ¡{(þËÿ ,õ? ¶»¤Þi‘kþñÃí;¦â_I{&«á­^uÔ³5t†ôÚΰ­¹ÏýŠÿc¯‹¶×oþü>×¾h>4ð÷Û¯ˆ:õ÷Œõ/éžÓIÖ¼+á½RßIŸCðÇ‹5F¹“Vñ]”Ö6÷z|0>§žú;˜¡‚窞sŠÀeØìÇŠ°ÙvE‡ÀÅU«ˆÃfµsLÕ씪ʽl¯+¯MÂrP”%„êœfõKÎÌx3)Çg9FKá¿bøûœU–†\=_‡sHãUå À×Ìs*¡Vœe(V¥’RŒ¡8GÝrùnŠöŸÙkào‰?kÏŒ>ø+ð«Ä> ƒÄ?¿á'þÁ×¼G«_Çáÿ„OÂþ!ñf©öÍSÚG‰¯—u†u+±éW¹Õ ÷f„Ïsoõ‡ì3àïŽ ?ऺ'¯‚:¿Á-oãÿÂ_ˆßþ¥çuj_á)ð~%xsÇqê×µ°ñ¯Ùÿ±¬5é|>ƒNÓuí9t7Ötû;I/ M3n Àå”sxªøZ™ŽUâ8‚x F%á"ð4£ŠT«â1>ƺÂáj×ÁÖ£% c*á1ø¼³/Ä8Eª•ᇌéMsÃ‹Ž³¡—ÆUqUeF¼pñÄFŒê%þгOÆÏÙcÆzgÃï> ÿ„Åúdž,¼e¦éð‘øKÄÿiðÞ¡ªëZ%ž¥öÿëÞ!ÒáóµOk¿cžö+øþÇçKj–÷²ÏáUúíÿÿÊQþÿÙ‚ø3ÿZãE|Áð{öø±ñWÀoůøÛàìóð«Ä7÷:Wƒ¾"~Òß´Ÿ„¾ñÖ«dí݇ƒ>ßm¨êúëAp¿e7¶úRéR]‰m`Ô%žÖö;o†xΆ;‚ò'â,F,«šá©Î¤i{JXybª:¶¡ƒ£V®'RN¥5F3¯W’'ðBN?aâWƒøÎñSˆ<>à|6uÄ”r¿gˆÃºÔ¨ÖÇPÁTêfXœ5. …zÔè¼dèà¨N­jT#V¤#?Š(¯ký ?gÏŠ?³/Äkß…ÿ´H4Á§XkºuÖŸm«è%ðÖ¯ç#ÄþÖ¬™íu} Sû5Ê[ÝÄRH®mo,/`´Ôl¯- +ìð˜¼.? C‚ÄQÅa1T¡[‰ÃÔZ5©TJP©N¤Œá$îšmŽæ9na“ãñy^k‚ÅeÙ–½L.7¡S ‹Ââ)IÆ¥ô*Æ5)T„•œgúìÓ¾§ÚyKg©oÝx‡íSûfCûcÞþÌ_<ðoÅŸ³'ì#û1xžÓÄZO„o®ì¼Iñ_ÅšÌ׬ڷŒõ{kûÍ?N¸ñ0x¯Ãš¯Ãó¤ëé:ž‹k¥é†¤ø£ÄV­á#¬Çem<ÿuëkë›9®tä¸ü&ý²¾1èÿ¶/í[âoˆV~Ô|9ðáW‚|#ð;ösø{ã*Ô`ü:ðn™omk+é­6©§%Ä× s{9°Ô5]9ouK¸ìµ ¸í£¸oQý€>:xkö'ý©>|v±ð•¼z—ý©áßé¾Ñ4K]s\ð‰lžÇ[°²K£ÛÝÞYN4ÿév7š®Ÿes­hšb]Þ[Á¾UäÍ8?Šó,œÓÌUî¾eKŒð™,òü4ªÐÎ2øÑ©•åO1U]Nj,&%«8¿cR>×þ]Tr~æC⯅¼Ä<5ÁÕò¬f?"ËrIð.gÄØLÞ¬rŒ^IÄpγœNQ*­F®'‰âE‡ib0XŒEJQ‚ÄÑ”οôwâ¾±àß|?Ò/¼OâÞèÚo„ôM6!5þ¯©kòA™en&š[ˆÑÚY>y'’(£‘×ú>ø­s¦~زÅïø%7¯ÚXñ'í¡û0ü.øu«øÏÄzBé1韬| ©kw~,ýŸôOM wÍ—ÃÇÔ`ðÖ6¯w£ß^ø·Jð׊îÌÚ4+Ôã.…ûc|ø«þÙ¿ÿe߄߬>2üCøâÏ~ÊoñÀÞðîð+áŸÅw»Õ|kâ-:óÃÞ3ñZŸiŽ­âø.ÿO‘4 ü>†ËÄ2x¦MgZo Û|¿û9ø¿Ç³Wü#ñ_Àž!šÛâ—†¼KŒî…9T­ÄžÏŒ“ÇFÓ© « —öUJPqž#S‹ä¾,¯Sâ¸K?áŸ1Å F:Ÿaø»ŽáÌö†OS£Ž&¥WÂ;¼5\㇩O<§Z¬'J‚YVWKãâ|.šÓô‹mÊßD´°“KƒIŒié§Mo5¥Å“Z –×V×)ÌÊŽ—q]F—Ir%*'ó\¯©ÿn_ÚàíûCCñ+àŸÂÿŠ¿ õŸ‰~ƒÅ´xk@O†–¿Z+gñ±ðûÅñN·s{câÉÚúóZ‹Äþð]üž"°ºñ+Ũ^øâ{]+åŠûüŸˆÌ2Ì3€¯•âëP‹ÅeØžWW‰¹^ƒœ…Zp«*5 ù+Ñä«”Ò_€ñžKC!â<Ë‚ΰÜG–ʳÅåyþr<ã.ÅÞ¾R3ýí ]JsQÇák¥[ ކ#SšTù¥ýÁi¼kÿçðíßðçÄ_µ'ÃïÛ{âÆèe? E¢ø;ö~ÿ…QÁíOás|_ø­6œž-º×¯4ÿ‰–(>,ƒÄPê·ºÜ:DZÞKCý¥-û/á·íûbüAý»üiðkI³øKcû6þÊ_³=„–?>Zjmªjn1YÛÿÂKâ«ï"ѯõ¹!ÓtôI.,ãM.Ú;¸-fÕ5k_×oýoþ {û_ø öäý¼tŒŸ ¼ñKÂþ ðì¯áÏ„W—ü9£h²j^)Ó~)xÏÇwh³øsÄÞ-Òo4¿ìŸéÖ©$º¥®£ý©¦ëp>™µœ—׿þpM<·‡¸[ÒÌ¥eX† 2ÆV«‡É«ÖU)b>§€çú¥ Õ(ÉÓ•g øû;ÃáëVÞ .¦Ótïø³L²š@e³´ñ.®-š9.K‹¿ðHíFøMû7ÿÁV>1|/Ñôßübøgûx†ïáÆ££X[Ç­Åw€þ1x¡f·kxÆ¥{,'ðgƒdV;‹dž3_Á@ÿkÿ~ÓÞÿ‚`|*ø}࿊Zv§û"|ñ§‚~'ø›Å>Ñ­<¨kZ÷ľ²ÿ„OYÑXJw©V®G˜Õ†>T#NXˆÔÁÎxZn½HûO-ÿ‚ShàïÚÛö/ñ‡mš_øƒãGÂÙuÞë]ŸHñÿˆ4í+ÆP6 Û®â³ºð†½¬éú¢Ç"C=Œ—z'YnOÕøm7üQñ á&Ÿo§Íà üvƒâNŸn<†±´ñ–³û?Mñ¶÷M†21ÿe|e¶Õ~Éh  )<>Þ4KX"_—ü ûnÁ<ÿdOÿÂØý˜c/ÛÄŸô?T‡áo„>0x“áî±û<ü/Ö¯ì®ô» CDñ7…5MCÇ^$Ót;ǃLOÀú¡¶HÛízFµ:Å—çÿÀ/‹~ür“ö±×µôÕ¿h{âäÿüM«^5ÿ‰/µ›bûIÔ!³’¤Òu}©ØêV6ÛÚ¦©Üév¬6ò×~/*Îx£2Ïó._ŽÈ(â82áL2Í >'›f5jW¥ˆt°µñ<¸|ªIS§ˆœãíjã1/ §J¬ù%Ä7ÀÜ7—RâŽ!ÉøßSÆŽãü ,“S7Ã`¸w(ÅàÖ*•˜ŠXuN¦o–ÓÅR«ƒ¡OØa¨ÐÀañS§ˆ¨°Ô:oÚî}CâGüCöïø“ã§}kÄþý®~.|=ð½íÿ$ú‡¾øºëÂþ þÉóÙšÊm?ÃÚN…å³$–ÿaŠk¶Kþ˜ÿÁÁò”†ö`¾ ÿÖ‡øÑ\GÅoÚÛöø‰ñÏUøßàŸØwö«ñ¿íeñÄš6ª¿ Uø}¬þÊÿÆ^×Kðö›âmBM2é~#kí¨kÚEî»á{í?ÂÚ‹u®£Ôlb‡VÔ/®íÿÁy<]¤ø£þ ¹“¥Ü%Å×ÃØãáß‚¼F‰"Hl5­Kâ?>!ZŲ̀ìÐK/‡¼k£_,Rˆäh®’`†)c‘ü¬®¶*§xc¯‘ã²zÙ7 q.K°ŠÕ)a¸o R4#†ÄW”ð”+S…:8©*t1Ù,?7%U¬â:p©áßÒ7ˆèq^YĹ?g‹È%–âqµéa°^׉+ÓUá‰ÃÐ¥ƒÇâa_›—Bø¼=L<§ŽŒ'V—?qÿ¡ÕüG¨~ÉðDo…ø£Ä:W€üsû>x‡]ñ†ôRêÃMñ£àŸ€ÿ³¼>¸Õmà‘êm7Nñ_‹4Ë)¤[;OêâÙ£’䏸+ö8ýüCûYø‹Åþøk§øÀž ðï…e×>-ü@ñTË xKÂÞXï-ÚëÄ:¤/}uqnuOìëbûÌpjW·WÚf›g¨êV½Ïüö¿ðí=á¿ø&¯‡Þ ø¥§j²'Á/x'≼SáÍÓÁz†µ¯|1øKàû/øDõÄÚýÅÝºêŸ 5¹gÿ„‡NðÕØ³Õ¼9$V“\_]ÚéÝïì3ûdøödÒ?hφþx—â‡ÀÚáußÃOŠš/ôí;Ç«¥6â½·†fÕõ=L¸’÷Añ¿Š4©ìîuï¿Ú/¬5(5›gÓ>Ïwéäx'áÿ q”òœ¯“‰á˜çØŠ8JÔhÊ´©ã8«UâcJ¥ZT±8˜äÕ¾µ‚¥Zª†"pÃP›ä—!ñuŸpWxÉáþ?⪰ðî¿p,Ç—cñp”ñØ‚¥T15°ð©WGû{„Áãñ*—µËðóÄãhÊ”ãíÏПÙáwì‡ð¯þ ÷ÿœð·ì»ûSø3ö˜¼µýü`~&[øáоxkÀº¥—Á/Ú=|7q§ø§\º»Ñ¾$'‰d‹\kžDÓ“ÂðË{#.­§íòø6úê{ïÚc^½º•纼ý5K«™¤;¤š{ü –i]%ä‘ÙØ÷bMxOìû{~³—…ÿhOÙŸÀ?²ígmû(|yø=â߇_|qãMáôÿ´Ÿû@ñ‡t¨ôíÇWðoÃ=>Ù4xÊÂ(ôy§Ô×UÕàÖï|K©Ãig¢GÄÿÁ,?mï?±Æß‰ßu¿‡?´=ÏÂH~øëáoÿ Áš×Æ[øÄ^¹ñψ¼ á«íRë¾k-bëEšÒÞãÅr˜4­%t¹Ì)‹áþ%Ää^,a§—ç¸ì_`òŒ^SˆÌpùE fcìrÜ­ÑÉÕ F®je‡¥Z8O«Ïå‹fÿPÄñ?à8ƒèý_ ›pÖ_à..Ïp9ýušæ´²zY–a˜ãð¸·Ï±Ìß„Ìcˆ¥ZuåŠÅa¡Œ•Z:’˨àêK3þ}âO|dÿ‚œ|ý¡¾,øŸUñçÅO‰º÷í ®ë^%×'yç‚Kÿ„ÿZúÚÂýžÆÖkÁpðÚÙÇ¥…³Òtû{]>Ê*[øÇã7ü'Zñ‡Äïê>,›á¯ü*×áGý6ýÂéžðŸÃŸÚ/Hð·‡,´«Dv°­‡ì´ëHJÄícTÕ¦3jšÍýÜ¿>ÿÁ'>9xoöCøÑð ãWÅ_xÎ|=ÿ…§ý½ øsI°“Åíÿ g…>#øOKû—â=_Ã6-¶ûÄÚuíÇÛ5[,i‚{‹´Ì ¶¸§ð{ã÷†ÿá¼&ÛXI£M¬ÿaÿÂOý‡¿O{X¼K.‡ý¹Ö±ø‚KHÍý}¦?‡±/‹óœn+¶^PÈòúÔ¨Ó%ŽcœÔ–_BÖp’£WÝ4£GE}”£ùÜ|AÃ.̰xž&§ý©„úGb3¬U)bœ±xrt2%Ê ]ýV¯ÔóZSÄP“©VøçUËëu]o{ÿ‚¯\Mÿlý»lw·Ù ¹ýš/!ƒ?»Žæÿöbøb·“*ôp--üÖêÆ%'¥}[ÿø§Æ^7ýºþ|Õ¼W¬ƒ¾ý•´ß‹ÇÀV×2[hÚ§Œ¼Qñ{â„õ}KSŠŒÞË>™à¯ ÛD×Fcci§ß[éÿdÖ¨÷?šÿ¶Çï þÕŸ·×íiûGxž?ð§€¾$Þ|³ð½¯Äm ÃBñÏü+Ï„žøq­Ý4>³â-k;gÂ×wú\ú~¹çh·Ú]ÕÚÙ]ÜËcoì?ðSßÚÿÀ_·'íã |døU࿊^ðWƒÿe|"¼»ø—áÍE“RñN›ñKÆ~;¸›EŸÃž&ñn“y¥ÿdøçNµI%Õ-uíM7[ôÈí¬à¼»áÊ82†'Áš˜¼¶¥¸wƒóLg:´á/ìÌÆ®OÃxZ4ª¶ß³¯9a±”bááÕ5ž¾ŸqÆGGô°–OÄ*xž)͸'4áÉakÆ/7ÀágžVÆbð2IF§Õç™`+ÉÝV§Zµ*Њ«MÊiÿÁcüoã»دþ¿ð3Ã^-Õ7…ì®î"U¸z}·Œ^Y?¯?à˜~Ó<=ÿåÿ‚ÙÙÛÄ·þÇ:­î§©Ü({ý_U‹à§íM;jš…Ãn–k¦¹A%ð„n%kvWi¢·ôyùÇölý±þ~Ͳüsá/‹¼%ñ3Å^+ý«~]|*øp¿t \³Ó|C©xã‚#¼ñ`ÔüQ êVz5¾¥ñ3C¾º¸Ðtß_E¤XkwK§I=­¥¥ÿÁ8ÿkkߨãS´½ñ7‡Ä?†_¾[|.øÑð³Q›û2_xcSÑ­!¹Š&»†Hmµ­.o´[‹}BÜÁw§_kZ,ï`ÚÔlz³ÞÎñëÅzXL I<ß1ávWNR§FžoC(Ër ™†J’4ñ/ŠË¤ëJÝYµRJ Èùîñ…2Ì£èÝšçù¾S†ñ¾#åÜKU©âqy n"Ì8žžYÅP§ WT0pͲ¼Ý,5:Ž8z4Ö«N—oÿð®— þÞ?²Æ±on‡\ñ‡ñSPÖu–,úŽ¢šÇÀˆÚÃÚ]]·ï¥³IÖÎShÌmÚêÊÞñã{¸–zùoãçüžgüþÏëö¯ÿÕ«¬×íoüâgì\?n…_ ¿c_Ùcö¬Šy4Ÿˆ×¾3ø·ûP\xP³ø3ð÷Eøm⨬ô†ð|>Ôµ=9—[ñUǃ<Þ3ñ¯¬xèú•Æ„%™©®Ë6W^(ñ7†`y™³ãO‡ž0ðw‡bÊ6kÚd0(;Úy#XÃ9U?/þ׿|Cðßöôý¾tÙOe®k_µ¿ÅŸZ‹”‘%¹ðwÄY~#øò#'2YÝxgÅÖSZº×t ¯Žéšž£¢êZ~³¤_]éš¶“}i©éz•…Ķ—Úv£aqÕ•õ•Ô “[]Ú\ÅŽÄ.’Ã4i$l® Ô¿ˆ_ðP¿Ù£ö™Ð¼57íëû+üMñwÅ x~×Ã'öý“õïhßµÝÁnžÊ׿qq¢xWRx/.f¾ŽàjzÕ•µî£ªI¡è²žæÇQö3œ&g”ñŽ‹pyf'9Ëñ<>¸{5Âåò óÕ³ ÙŽ0Ãáñ5ððÆP”ñxœ>2«M{ ԩ׌gù·fù7øSÄcsÜ·†3ªœ[CŒ¸w1Ï*ÕÃdy´êà0fi’cs 4kÿgbÕ,·ŒË+bi<"ª¯†«[RT§?ý˜c«OÚ'àWí›ñÂÿâ‡ü ?²ÂY>+^è¿ð…Kâ¯øMí ðwÅ\éÚ0øŸD›Ã^L? Óí±i>&–Oí>=8¶ž-¯þêÿƒy/í5_Ú÷ÇÚ¥„¾}Ž¥û+øªþÊ.X¼ëKωß.-¥ò¦HæÌ†D.Xã•7m‘ÁQò¼ðQØçàoìÉû^~Ï¿±çì¿ûqx›^ý­þx‡á/ˆ<[ûJß|-𕟇WYðoü¥ë–‘ø jÒæ?EñWÕdÒ„¯Imm§Í¬iN£‹Á3k=Oöø¯ào‰º—…gñ>”~'Ãoˆ~²½´µÕ®4BÛ@¼¼5ü†m—à3 X *téå˜9c©IR©*‘–#4¥Št^a[›÷Q•*)FwÃøü(â_³Ì^u”ÔÏòÌ÷1—ˆØì—3Æfø tªæùƒÊqþÊpk““bp±3ÊhG%B³•,N3š­^þ öþ'öIã§ü/¢}‡ü*ÏŒã'ñ }M}9ÿëÿ”ö|yÿ³úÿ‚†ÿê9ñ¢¹Ø»öôý„bÚÃðÎ_²‡íbŸ ÿÆ–ßþ%üt¸ø[âo‰º„µÝÅúgƒ>èZˆü7à?JOÝøb]gÄwþ0ñ'‹µé—Zr_Nó^A«|ýûþ×þøeÿ$ø¥ûnø·Á´ÿ…þ-ýª?jÏ‹º_…%ðæiñ5<-ñ·CñÍ¿„á¹Ðµ?XxyuK)¼g§&½¿‹.tëf²ÕWMÔõf¶n¸3œ{Ÿf×þ Kûhøžî?í¯j¿¼i᩸*e‡Äz•4„ñÆP‡ Gççíus©|Fÿ‚‰þÝßünï«x§ÃµÇŇþ¿¼iÞçÃúÂoÜø[Áo¤<ÎÒX\iþÑü=Ÿ{jñËjlb›OkUoš×ÃïÚWÄ:'íñ«öÅøg¢x—ÂW$ý´>.þПô?ˆ:?ö>¶Þñ·¦ñf™¢ø³J±Ô/mÐj:&©/‡üMm£ëWÖ™—T´Óµ›…HïOÛ??mø'†µñ_Æ?´¶‰û~Ô>"ý¤¾ _Ãã-cáÖ£¬|>Õ?dk¿Š'I±Ó‡õ™ô«Áñ _‰ï4Ý?Uñ†u è>+½·½¦­ýå߯C›äüA‘çÉ1ù¦¯à8wØ`þ¨ê`3\.1âêÓÅLjÆN­8O¥:Tç€Q­kÒrð3<ó%âL‹Å ʸ³(áÌú¯‹Ž/†aÅbpÔón¯–à0ryf/F¼ñX¬¶¶ ½o¨Sp¯ˆ¡™MÐç‚Å{?Lÿƒ‚ÿå(ÿ ÿìÁ|ÿ­ñ¢¾„ÿ‚ÃêŸðLÝã‡ìíðcöšð‡ü;ÄÿÿgÝ|#ð§ì·¢üÕ>^|>Öµ kFÓ¼Gqañí5ûï¼6º6¥q6z'Ùt=m¦µËsù‹ÿ4ý±| ûuþÝ>ø×ð»À_|àß ~Ê^øM~~*xwÃÚ5å׊ì>(xËÇ·CL¸ð—‹|o ^ØG¥xëN²ó\Këišäa–v÷מç«~Û²×Ư‚_ < ûw|ý¢ømñËöX¼ðßÄÝGáýÇöw‘àßøoâV¥¥hÚÆŸbºF˜"Ömß]Ö öQÝ[YéWz—Š5|¾_ÂÙæ†¼0Äbpyå)pÖ5Áç šµ*Îy¥*4èciR©% DpÒÃK‰£NnºÃãêU¥ ÆD}ÎsâO Uñ?ÆL™…N9ÊøO™®}VêÖaS%xÚ¸Œ§™á¯S.žgC0†'ЍéPúæ[B…Z´ªÖ ß†þÞ¿¶§ÀÚ’÷ö"ð_ìËð—ö™ð7‡?g/ƒž-øâÝ{ö‚ð?„<7}®ø3DÐüÂE[ßø³ÄÚ=íþ‘7…¼X5)fÓ¼/kowâXãÑ­%‡P¸µ±+Â~1|Yý›Ð4–ñ4ž6ø‰ûCø³Ãž'ñZÞÚéOáÈG…|1aa¡hi¡Ü隤Ñ…ÌÚ«x—ξx Ñ­–R¿_á<» •d8<™á0ôêcjB†qR•\ÆŽÄâªO:5«ÓýõJÓ¯J §5*5)Ò© 5a:4ÿ’üeÏ3!ã|FašÇ‡>¼²Ì§V· b*âršñÀàᆢã*¿šQEôgåAEPEPEPEPEPEPEPEPEPEPEPEP]ý{Tð¯Äø£Cš mkÃ~1ðÆ½¤\\ØØj–Ðjš>·c¨éó\iš­­î—¨Áݼ/-Ž¥ewawµ½å­Å¼’DåŽ"1 ðœc8NXÎJQ”e )FQi©FI´ÓM4ÚjÇN¥JX¼-ZS*´±4*S©NR…Ju!V„á8µ(NJQ”Z”d“M4hÚÆ‡àÏþÊš÷í;ெü-ñþÃÁþ ×m>+è¾éÞ.‡V‰5–ô_Ûx5¤1Ar«ÂÑÌ‹²d‘Yþ>üFñÏÆ¿ˆþ2|Vñ6©ã‰Þ9ñT:мa­Ì²êz­ÌËtv”…!³³³·Ž{K ;Oµ´ÓôÝ>ÒËMÓím´û+KhJ+ùçÀHB´¸¿Z1«‰¡œ}FŽ"¤TëÑÀÓö³§ƒ¥ZIÔ§…„Òœ0ð’£%(Á5sý úT·„àì» …o „ÄðÏf8Œ.º8zù†+3ÃC­BŸ-*¸ÌL!â1SŒ«ÖŒ#“’ŠKÛ(¢ŠþŒ?Π¢Š(¢Š(¢Š(¢Š(¢Š(¯»ÿàœž'Ôü;ûMh¶6Ph7ºŒ|5¯xKĺg‰<)áoiz¯‡îŸOÕç°—Lñn­ØBÒ_èºt¿l¶¶‚ýc†KTº[K»È. +縶©ÃüjB3öN:\³Š”y¡‡œá+I5xÎ1”]¯%%f“>ãÃ:•)x‡ÁS¥Rtçþ³äÐæ§9B\•qÔiU‡4Z|µ)ÎtêFöœ%(I8ɧûgÿ©ñmÿìGûx£PýôŸ~Οė°ð§uoƒÿ þø#WÖ´=fOìëûs«h¾¶Ôtë§³¹ž+mWJº±Õôó#K§ßZ͉òðJÒÚÓá…þÏÅö›k«¹Ê–&[™¯®|É\±$³U;UQBª¨ù€QN Xê‰TÆã3 gÖñ“JX¬W°•*t>³ˆ•ê×ö4Û§KÚÎ^ΖއõwÓ ¼69e˜vðùn 6ÊáƒËèþë„…\“‰« 6Ÿ- «ˆ©:õ#JœëNudœääýVŠ(¯ÜOᢊ(¢Š(¢Š(¢Š(¢Š(ÿÙxerces-c-3.1.1/doc/html/graphics/enumval-3-header.jpg0000644000175000017500000002652211363617747021341 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ#È"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ø^Š(¯õ ÿœp¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢½3௄¼=ã | âÝ_þÿ x×âg€ü%âm{ÌŠìOxÅ:V­jþtàÃön›ys{æL Iäî¿a¿à¥_µ/íÁû þÒrþÌ_±ÿ…üû#~Êžð?ï<â낞ñÑøèÚ¦iuâ»ÝSXñ÷‡|Aiªj/‰eÖ¼-®ÚÅwmâ4m¿ˆuÍBæOXÌÿ!žq6'/β®Êòì6a›æ˜ÓS4ëÛÛkËËnð¡Æ<-‰©—Ò¡žåµjæ“t°ãˆ=zª¥j*+³¥^UðØŠèÖöujWÃ×£N«J¤#ÛŒð¿Ä<ëŒàìûC‡©*ùÅZ˜ ª<;£…ļS’MWÂÓÃcpxªØ¬7¶ÃÐÂâðØšÕ!B½*’øjŠûöeý‰>0~Ö>øùã…Wž0~Ï^Ó¼Wâëw~%Oøª[Hñ¶¯§h¾Ó4 x‚ßYñâxT±·°Õ/´(fÔo´‹x®Ý.nf³öé¿à•_´lþñ†­á~Ï_þ ü;Ñ[_ø…ðáÇÆMÆ|a»]§ˆ|£ÙÏ¥Cjb–ìÛO^_ßÝÆtý"ßQÔ+Y3Œx_.ÆWËñÙæ_„Æákaðøœ=zêœðõ1T°õðþÝÉ(Ò§R–/ %Z¤£F.½(J¤g8Ŭ«Ãs̯ dü#æY^; Æà±¸<«ÒÆP˱8¼&3ê¾Í¹â+PÄ`1°xZQž*K ˆ©NŒéÒœ×Èß³çìÓñ³ö§ñž§ðûà7‚¿á;ñ~á‹ßjZGü$~ðÇÙ¼7§êº.‰y©}¿ÆZ÷‡´¹¼SÄ:=¯Øà½–þO¶yÑZ½½½Ô°xU~éÿÁ¾„Û/âYf/AÈ üTø.ApA =³†0ø;B»ñ‹f_ümð׉¿h¿it1Ï©O¨ü?ÒãšÕæ°IQe²°×ïon.+=>ÞòòâÖÞ“¿fŸÙ÷ƵGÆÏ|ø{©øcGñŽÿá#þÈÔ¼e{ªéþ·ÿ„cÂZ÷Œ¯ÿ´o4MÄ:œ>v—áëØ,þË£Þy—òÚÅ7ÙíÞ[¨= 7ðî3˜ãð¹ÆƒÊ(O™W¥YNL,(Oõª©.o«N…*•¨â#Q¯NœåBu%ošÇøyÆù^e‘dù— føˉ±T°9…•™ž:¶*Ž`°Ò›TÞ2ž3C ‰ÂÎpÄa+V§ U:2œSðª+¯øà믆Ÿ>'ü*Õ5}[ñÂ_ˆÞ5ø[â»Ï jjZ/ü%>ñ÷‡5Øì®.-l/¾Ïöë %¶MKNÓu²Kn÷š}œÒ4 í¿±7üžgìÿg9ðÿV¯…+¿˜R£•â3J*8š4°s J3äŽ"•<<±ÔjrË–5b•§É.U.nWk?#‘â«ñ†ñ±©–ã1Î&Å*Ô\êà«×ÆÓÁÕu(9Òç• ÍÉÓö”ÔùyUH¦¤¾c¢¿kà¦?ðSø(ÏÂ_ø(ÏíOðà?íOÿ §áGŸøQÿðŠøWþÀ¯ý“þŸ^ñ–¹ÿÏx Rñ$þ‰5-cRÿ‰–±¨ù_Ú?c³û%…¥­¬‘Ÿþ;þÔ_´ŸÄ+/‰_´ïÇ_ø\Þ!Ò¼mà}"oøV?>ýƒF±×5-~Â//áö¡XÝ}–û]×ß}Õ„—Sÿjmšíá±²†œál÷ˆxƒ•fؼ‹'˲œÛ,Âæt*ḘæáÃRÄá©VÁU᜷¥ÉUF¼¡˜MS’~ÍW™ú‡‰žp7csìƒ â>cqgæÀbrl_VɰUåJv«<>s‡â\ò›“§(Vîœ*F\•ëajEÅp´WéçÅø%íðcâ$>ø›ñ'öpð?‡áÐüUñ—Æ.|ðwK“ÄZ¿‹43Â’ø—ÇðÞ³ªøÍ×ÁºÆ­u¡xgÃZëXhe©_\[ÅtªŸ+~Óß²§Å?Ù3ÆZ„>&7…õ[xfËÆ~ñ¯5Õñ7¼sá[ö)¹áoì¶ÝZy€+Ç{§Ø]¬RÚ^ ca¨i÷W^†[ÅÜ5œWÃa²Ì댯¡ñV¯kšÎã9õ­_Røo¥YÝi6ðÍá‰t¶¼ø£áÔiµ/iwgìú¢Åe,±XǨtÿ¬9'²ößÚXoeý³þ¯sóK—ûkëPþÎøÞ>¹þÏËðûM9­©Çã b)acÃÙ”±5øgýr£F4T§[†> ³OíšIIûL'ö|–*ð½Of×îùŸ)òÝõçì×û|\ýª¼û@øÿá…ÿƒÒËösðŒ†¯]S©B®*–µj¤’§Ntñ˜Y{y5BF©ÔŒ_vWá—ˆÖY„βŽÎó«„ÆãpXìuèbðùv#…Ƽ<¡wZµù~>U¦¥Š¨°xš”¨Î“æ­úCð£þ mûG|]ðæŸ£x—ào‡<}¯ø<øÿÂ?¼kñSMо%¹·$H·žH™X†¢·åõðYíL‚¶?Ìò<lML«ŒTªV© U§B‚­8ŽHâ§B­ 8ˆQ­FU¡(]¸O—L7‡¹Ö3á\c…Ìø; âÌÏ £ÄXì®uðøZká©b±o ³Ñ]/Ú,ì?s4’—ajäyu—ÑxÕÄuòz9fÚªR¨óG µe:ŠnW—`#ŒÇb`©Ê|˜Ô’Œío[ áFt¸÷‰¸5ÅQË1<%C<Äg9“£R¾,ª—. ¬a9á¦ðùÎcˆÊ²ü%yÊœi¼×ˆ¨œ#(¿ÏÚ+쿃±‹>#|9ðoÄ?~ѲOÀïøÒßPO j?´?Çß ü5Õü^ú¹áMVûOðÅ­¶±¬ÛFþ!Ò5;HÅÞ•§G3AæÚFÖsÙË?ûS~É¿cïi^ø½c¡™|G¢/‰<%âo k)¯øOź­dÔt=OìöW,¶÷*"¹´Ôtý;Pf´¹’ÌYߨÜ\÷Pâ\‡™Ë&¡šá*f‘x˜ýITµYÏ.Le:WJêa&œq4èʤè8ËÚÆ²·ÍãxŒ²þb¸w3§Ãsú£Žsõy¼§˜B52êõŸñpÔ3 s§S[JŸuqK0qö¶±ñóþ M=âx¯Æ²íÛàí}oåþ| ñçÃOˆõ`²o?Š|iy¥üVÑlo0|ûHl­§Ó–F·°¿¹Hb¹oˆãLY™PÃá3nÍsÊr¯„Çäëõ쯕9᫬v 1Àâ&”eO†¾ÜpÅÔ§XÔýŸÁÜge¹Ž;Â|q¼9©a3,ƒ‹«Ö¥”ñ.ORò­G…¯—crŒß I¹Æ¾µHfpOm–ÒªÝiÑé?ল¿ÂOÙ‹Ç_ügð3ÄŽ£ð7ö²øw©üQø=§ë²\Í«i6zE¯„µmgD[»à5Í2ÇÞÕôIu5Å´Ô/tíJKû­çT½¡ãø&ÿÀ^øoñ{þ ûZ|&ý”¼KñÃöšßÃÿß|5ñwÇ/Šé A:ßXß_x+ÂÚêÛÜê ,÷vjé×rǧßêú¬Zu‡É¿µ×íoñöîøçðçÇÚ‡ÃX>|ýŸ|/ÃOÙïà¼WãR»ðï‡ç³‡M¼¿ÕîŒ6í&«¨éözUá[k+;]?ÃþÓl­nÎûU¾ûoöÅý»aÏÚ“_ø;û@þв?í3ñö¯økðÂÇá—ö_Ãßx7Ný¯†`Ôf„¤ÓZÙYxçÅ‘Åg#½—Ûu]Rki¯´6ko”?ࢶÿÁÛkÄŸ³×Æ¥øû@x/ö³³øg¢| ø£v’x3RýŸlüo­ø›ÅR *K kWñi׬üo®É¨Z]ê?Øvš†5]OM¼‹Å…ž™oÏÁ@ÿkÿ~ÓÞÿ‚`|*ø}࿊Zv§û"|ñ§‚~'ø›Å>Ñ­<¨kZ÷ľ²ÿ„OYÑ?øSÿ ýŽcÏê¾<ý‡?eÚ¶OÚ{Ç ¢ðŸÃý[ãwˆ>øÇàßÁkOiVêñ…¥·×üS.›VŸò;økHÔõ³k)õ=;MÔuH¯¹sXâñ™ÇŒù&$ÆfxÌþ96S†ÄÑŽ`ðµñœ–á©ÔÇÖ­ˆ§WK íåŒU‘jœáE¼D£Jyp\#‡ðçèÞâ8«-áܳ…ó¾&âß‹Çb0˜ÌÓ.Ê|EÎñõðY}t,|ñ¯ \4ñ©ÇÚÓÄbÔp”'^—Þ_ðD©tx¿à«ðP?xgìàֿkÏx-lÙÎ/i?µÃVðÕµ›¦PØÙé76Ö–?v–P[Ç¢ñ¯üu¥øjãã͉5Ý*]kTðÀ_ŒÞ2ð^›g ­Î¯w∠7Š>øãIÖ-¾éºмa©ø×Ä~5ðŒd™áñOŠü'm¨y¶½±–ìjóß^ëY”·xn¦¸µù öøáñ'öI×>ü_ð}´šwŒ< ¨ë³]hõµÝ¥¦µ£jš¾·k¬xs]²aÐÓµíúh €—6¦{]WO’+Û[;˜ý\_çxÉø“—RU óž áL£,Ì+IÓ£˜bòüsGFUTœáʵ8™4ù!н¦®ŸWÄîË²Ï 3êup¸œøùÄüIšåX5 ¸¬W˜U§_ ™PÂ5Q'N¶?Ú3©Bœ¥)Fß¡?³í‘ÿˆý›i;?ÛÁ ÿà¯>0xóÅ3x—âO‚¿fÙkŸÄ Ä~ñ"ÞOáïxkR6‚ê²ÁŸ¬Y¿HEì—vð=£þ~h_õõø×ñã7Áy¾(|°¾øïñ›ÄŸ¥kKáïÄŸü4ñ¿ˆu½GÃ:L—~Ö%ŸH¼µð‰¥ð®©o¢xƒQÓDßèöúž¡§y~âø«ûDÁ(uïë¿.?e_ø(ã?k:Ÿ‹õï…¿ õŸ‚×WÄÚýíί¯&âûçÔ¼u¥èº®µ{u{%—ü#þ‡L’êhtMIÒ-¬ìÅÿdoŽ¿¼ûYi?~0þÏz°ýœìòßàN»eá?‹Ú¬~ñ„Õ|‡£è÷Zu׉õMSÄÞ+ñŸˆ|gâ½kÆþ+ñ_õ©êÕð¥|íâï‰:_ÅÏŠÿ~ ø[À7Ÿ ~xŸãÄíoáW‚5 [ø.ÿÃß u¯\ë~Ò/¼5§_êZ“y¤èz•¾‘saáËÛØM`ö<²ÚZ¤²zwìññEøIñÿàgÅ_Úê—¾øeñ‹á—ÄzÏD†ÒçZ»Ñ|ã]Äz¥®‘o{¦ØÜj—:lñXCy¨ØZKvñ%Åí¬,óÇ÷XèTÅðî2,èÖÄäØˆRÁZ*¥*µ°3Œ0¼±´á9*V£Ì´ÒÇóï´­–x‘…­æÔ3˜,ËêæÔ*ûl>*–2ÃΦ`ªÅ>js¡låg%§y&~¦ÁLoßü)ÿ‚ŒþÔÿüûÿÁ3¾$ÿÂÿ ?ûSâwíû8k>1ø½ã/øJ>x ÄÖ_ð—xÓHñ–ÿ ü#¿Ú7~Ð>ѦÙÿdxbÃEÒbûGÙe¸ÇüMñïÆ/‰2øã‡ß¾ÂGÿ÷ö_€ÿg k>øo¡dh6šïö_…õ{ýSû/ûSû.ÓY¾û=ôÿm×µsQ—Êû\PÇú3ûJ~ÕŸðH¿ÚöœøÓûGxçáoü¾ßÇ¿/<gâ‹_ø#öe‹À)ÿ ËÁzGÃëÂpk"Öµ•³Ô´oÚ_ÝϨkš—Û/gšêÑl-%ŠÆ‡>7üEýŒõí[ÀzWìàOÛFûWü%ð°u/ڳà ôí&ÛȶÒn|)ÿÅçÃ+鼟;Éñ-¾µý·y—2øv-7ïØ~}áΔ`x>â ·:ŽC‚˳î?ád~Æ#ñ}A¯Ñÿl/Ù¯Äÿ°Ç„¿cßÛá_íã/ |øÏmñ·à߈?fSÀ¾/·ñ 3ø²ú=Äö?ËiçB{ßxÊëý7Oñ¡5ˆ K]ÂïG‹Vtøõÿ0øIñ/þ EûAþÅ~ ý—þ,|&ÕüoñÀÿ4 GÐ|U¥XxÃ><øCñ#U×~-ø±¼Yoã]OÇzÖ³àˆ3jš´>:qºÖü£éñXhѺ輸Œ›ˆ©)åÈ1õWüF:WW0Œ°ßQŽGˆâjy¥‡ão‡³%§<­G i*ð‡Â¿ÚoÄ>Õ#‚æ9­§}?WÓ¬îÖˆ¥‚F„$±¼lÊ|Ëþ ©Ñ\þÕÿ|a®jz‰|aãoÙGĚ爼M®Þ\êz¾¤ú—ÄÏ‚w±Ás{{,÷ˆ–`'–idšöëμ¹‘å—åùŸölý±þ~Ͳüsá/‹¼%ñ3Å^+ý«~]|*øp¿t \³Ó|C©xã‚#¼ñ`ÔüQ êVz5¾¥ñ3C¾º¸Ðtß_E¤XkwK§I=­¥¥ùÿý±þ~Á>:½øµñƒÂ_Oü6Ðt-cÆ#Ä3k ¼J°>‘âx:Ô(µðv§bÑ I¯†©=…¨³1Ëq=¯WðÆkŒ¡ãD°ÙMZØ® ¥SÉç pusx<ƒ+¡Ry¶œ£COY8¨ÔUZÝü¿‡~ äYNEô_ÃVâ\. ÜKŰâº2ÄJšË>¹Ä¹æa†Ž>)sB–+ ŒËñ•J•XË êsNŒU9?àˆ~,ñ—Ưø)ŸÀÚâߊ5/üPøƒ«|Ôõ/ëKE¹øEñz;›M>Þ0–¶Vï<.°Ãk 0Yi‘éú=”Vúvoù?ö€¸š_Ûöù·wfƒNý¼?jû+(‰ù-­ánø†ïȈtXþÑuq(QÀi\÷®·þ 9ñËòƀ_¾*ø{Æsø{áïü-?ííÚM„ž/oøK<)ñÂz_Øô¿êþ±m·Þ&Ó¯n>ÙªÙcLÜ[ý¦aµÇˆø›Ç¶¿þ8~Õ?4¿x¯ÂþøÑûT|qø»áMÆúLz'Šm<-ñÅ÷*СÖôë{ÍJÆ RÞÇRŽÓRMÕ5]:-FÞî =Nú–âO¶Áå8¬7ˆuó X)QÊ?Ô<£+¡^œ# 2Åas¼Þ´°pŒmË*8jøy((¨Æœà£µ—Áñweù¯ƒœ]“×ÍðøÌó ã¦}šÑÁJ´jbi丬«'Á`±Ô#ð¼6"¾kI·R´qj·:ÒOÚßÛGÃZßí«û~Á_¶ƒ¬&ñÅ¿xMýˆ¾7AfÚ¦­â­cMоkÌÌY~Ñ?ÄðãÙÆ’FïãÌÇÈÙ„·ø[þ ‡â=óö´ø[û$ø&ú-GáüÇà·‡~Éqhâ_®|kñ=¾¹ñ+IJA…j—ú½È‹RÌpùz¿‡®¼¨wú'þ ãÿ"ð¿ì7à>ø“ðïÅ¿|+â‹?øÿáï„|/¥hZÛØücð5Ƚðõõ去¯èÚé××v¾¿¾Öt¶Õuý.÷ÂÖ‰¤\ÞF1øóàÛÏøš_|Lø5Õ×Ä‹^4ñ'ÄOÞ_C%½ôú߈õK›ë´C0Ya/$ÒÝ‹yèòHÏJñ8W†ól»‰1˜ fÓá®Æf¸Þ«ÌçRúþ \|+§|,ÿ‚#Úü8ñ‘ñç€ngO‹Úg…|{©xHxÿÀö?eË¿ x¢O k%µÅâ };Äø{VfÔ´Y.Å…é7Vò“âÿmOØÇãçìÇû+ü:ý°ÿg/ÚgâÄŸØóJ½ðßÂmCövÖücá_è2èÞÐñþÿí-[C±Ôô¯x?ûFï@ð‰5Õ¼4º¦Ÿ¬éê—šDÜoí•û|þÏŸµwì­û0è^"ý™?h‡¿´ìÃ/ˆ|ð7Køw{áwàî‡ð¿_‹ÁþºÓ|xúïˆõŸˆw«ðãÂ:¶›Ù­î¢ñn…§¨x©4ÝKPÐäðá‡ã\wp¾q`3iÑɸ£?¡ˆÂáð¹,2|¿-Ì2üË,ÊqØôçý³§:5p•³,N&´©Pu'a)T¤ þã-«áfSáOpï çY5lWxa‚X ^gŸgRÎ3%ÁUÃæ¹ÎE‰ÊqµdØŠ9Œq³Ë(àð¸ZÕ­ ÏЧ[ë/ß¿à±ÿòB¿àƒöl¿õC~Ë4WÉÿðP?ÚÿÀ_´÷†ÿà˜ ¾x/â–©þÈŸ¼iàŸ‰þ&ñO‡4kOêÖ½ðÇá/ƒì¿áÖtOk÷vëª|,ÖåŸþ;ÃWbÏVðä‘ZMq}wk§÷žeØì«…0Ø,Ç S ‹§šq%iЪ’œiâø6Åá¦ÒmrÖÃW£Zú¤[³Ðüée;¢¿]ÿmÛ÷þ EðöªøËðá½ÃOÙ'öwø[ãmKÂß þÚþÎÿ |Káω?4Ù^ñì³ø¯Â÷2êoŒôd°Öä›Ã¶™e¥_]]øoÊ]GBÔ ~V|@ø•ñãÄßüJøƒ¤ü'Ð/—k¯jexé}â-O^Ô vñÝÃm‡ÃyÞqžPÂãñy>–fxì'ž¼Ö´£YR8º *ÁQ£RTªNr–¡ Òtý¬¹£#ô?|?Ꭽʰ\uW:âl›0X ë#Æp¶##TZæ…ZÙ~aý­šÑÇB_eûœM,·ì*J´ðôçJtNnŠý8ð¯üÃ⿊|GÃÈÿh¿Ø›JøÏqö¨í¾^þÒžÔþ0\ßYZ=íÞ—oá_ i~$‚]BÚ¦{ˆ—Tò­ã†Yçš;d3×ççćž0øKãÏü3ø£Máïø\½ðï‰tYå·¸{ RÅöʉsi,ö—vÓ#Gse{i<öwÖsÛÞZM5´ñJýÙgä9Î&¶+Íp˜ÜU 0ÄÔ¡F¥ê}Z¤ù!Ч(ºØiOÜŽ"´¢äÔ}¥åþSˆ8 ŒøWƒÌø‡†ó\§/ÇW©„Ãc1xw<±”¡í*`ªT‹”pøØSNrÁâ=–%B3—²å§7*ŠýMø‡ÿ‰ý¥~øúëÂ>ñÏì÷á/ i^ ð÷ŒüGñ¿Å/|ðKÃx«^ñO‡ôOjÞ/ñ¿…|7¨ÏâË«j—¯£èžÖ¶™.usu¾Ž!æÞ/ÿ‚fþÓ¾ øÇÂf×À i?‚âqøÇÿ Å…—À«O†ŸiKüw©üEÖmô»}'C¶Ô%†ÅáÔôëMnyîlMŽ‘w¥§Mwçáøïƒ±|ŸWâ<ª¢©…ž2ëPŠ• q„ê8¹ò§VêÒ©,:ÿhTêS¨érN2~Æ7²ïiõÎâ:ÇG,«|º¬Ý°â>‘¨ëÖ½ã-'IÒ¼C©^¤VštR^v¾)áÕ–aó—œ`c•b±TðTqò¬£†xº•Þ8yÔ••«Q©ÞÍÑœdªòrÊÞZðóŽŒáhð¾q."Àeõs\NM $çŽ]G tñ”¨FòÄЖpÄQžÛ,E9Ááý¯4Sør½×áGìÓñ³ã‡ƒ>0|Aø]à¯øIü!ðà ã/‹¿ü$~ÑáðÛé^'Ö×Rûˆuí'T×s¥ø7Ä—_cðÕ–±~?³|“j./,"ºúWâ/ü_ãoþø¿ãG†> ~ÏŸ|)ðÕ€ø­iðâՇĭá`X„×Mã{ =2ÆÚÓû6=Ój‘éWÚ¼Ú}”7:­ÔQèöwz„MÿÁ8ÿåßð[_û3MoÿTíS^q¾Ãü÷‡1yviWšd™uXTöµiQžeåy}zxŠ4êá«Ò¬°xùWÃóÊ ÉѬãV‹pŸÝpƒù–mâOð?eùç Ðâ Ÿˆ³\5zp¡G^ŽWÃîo‚Äà«â(bðxœ+Ì2ªx|b¦§/gNUÃbR«KñjŠÔýš~üDøÞ>|1øUáMSÆž9ñ?†|9k£è:JEçLbÐmgººº¹¹–ÞÇMÓl-£–ïRÕu+«M7M³†[»ë«{xžEû¯âü—ã'‚~xãâ'‡~#þΟ¡øQgý£ñ¾2h¿üyð‡NF™.¯¼áËKFÓ­¬ÞåµÓnõceok{}p©§Ø_]Û}.;ˆrL·†Àæ¦ ŒÅû/a‡¯^©/oWØP”Óº…zÿ¸¡:®œ+×N)N¢q>À\[›QÎ1¹&A›fùfI[K˜`ð5gA,½{\[‡/3«S †pÅã(áÝz˜<-Hâ1 $ª?€(¯«ÿc¿Øïâgí·ñ3]øUð«]ð'‡üCáÿjo/> ê~ Ò´Yt]+ÄðåÅ­­Ç‡<1âËçÕûÅšt°Ã. £ZCzï{ÑÁÏÈ–…†«iþ—}g©XÏæy¶0ÞZMåJðËå\Û¼ÉåÍ‘I±Ûd±¼m†V²Žc¯Æe´q4ªc²úxJØÜ,[ö¸jXå]á'QZÊ8…†®éÙ»û9^Ú_ÅÄdYÆ'Ëxƒ—âid¹Æ'ƒË3)A}WŠÊþ¯õú¦›ýæëX~xÍEµQ8s(ÉÆåúqÿoÿ”~Î_÷W¿õCüP¯¡~ÿÁFn¿ˆ¿ðU/ˆŸ³¿¾-è?fk?Ûûâ‡ìÍsðÅ~jš,ß í¾/ê ±Y|I¥øCKñ|³ø;Ã7pj0jZ¦©©Ïtú¸ñ5Ʊis¨E/ÆgÜcše™î;&Ër,e³…éñN3‹Ï*åuXÌË <.„2\ÆjñYtªFXŒ^”ÝU Nšƒ¨ÿ`à?r*àšežñÆ/†cŽã©p_‚Ãð”ø‚\ÆY~IŒÂâqXª9þ]ˆÃPÄUÎa‡”håØÉQTkÔöŠ”?¨¯©ÿo¿ |?ø_û~þÖ¿~XØéþ ømão Ï¡ÙiŒN¥Åã߇Þñ¶©áÛH÷È¶ÐøWÄÚ·ˆ<9ohŽÒÏLµµòãx]k°ø=û|Xø«à 7â׈ümð?öyøUâû+Áß?ioŠZOÂ_ øëU²vŠîÃÁŸo¶Ôu}u ¸_²›Û})t©.ͰjÏk{·¿KŠ2w‘e|CŠÅC/Àfø</±S¯/¯á£‹£‡Tbç:˜¥JRs£ET’TêI'JKá±þñv3ÞÂeu³Œ÷‡ñ¸¬.6\eˆÃ*XZТ±ï%N w[éb1N„y±8z3ä¯V4ßÅWµþгçÅÙ—â5ïÂÿ‹Z$?ˆàÓ¬5Ý:ëO¿¶ÕôøkWóŽ‘â ëVLöº¾…©ýšå-îâ)$W6·–°Zj6W–} ð¿þ ëñwâÁÝ3ã׋¾!þÏÿ³·ÂÏßK¦øÅ´§Å}?á=§Ä èÞXRßÂFûNÔäÝÜA<|š£éPêFžÂ[›0.Nøž#Èpy~5ÄfØ*yv=ÒŽ«Æ¥,l«ÂU)G ìù剔éÆuhÆrTáR¤’…9Ê>v]Àœe›g˜þËøk8ÄgÙR¯,Ó+úZX¬¶8j°¡^Y„+*kW«J‡6&T£*õ¨Ñƒ•JÔã/×ÿfŸžø àŸÚ{\ðWØ~üEñ=߃|ãøHü%sý±âKŸZ]i¿ðYë×/Óü«xª?¶jºƒÿeoŽéÒûMkÏ ¯Ûø)_Âïüÿ‚)Á>þ|CÒãÑü[áø(•¥iocªÙMm©ê?µî·£jšf«¦\]iÚ¦®hz–›­èÚÌÖº†•¨YÞA#G2×ÍŸ´lÿµôðIߨ³íú÷ìÏ þÉS~Ó¤òæñì?´V³âÙ&ý–ý›Ä®°øÈ»„îøüŽêæxhbg ª½_æü'¯C,-*Ùv®bð8Ü;šÇG1ÆÖÃà¡9Q¥S C •q§F•*Ÿ±q?Tr|N Cà1Ÿñò¯ólg•}n¦;• –9¾QŽ–à+el1™jqðXüVK —â©âªbgŒ¡ù·E}Åð;þ óû@þѳï‹?h„ÑxOÄz'…>'é O€“QÖâø‘¯x£Y¼øygƉ§Iá5ЭÄ÷TÕµÏè‘išf™â Fö8­tø¤»òŸÚ#ör¸ý›õŸxS^øÛû9|IñïŽ%ñ ¬ß¾ |[Òþ$xãÀú‡SDyt¿èšm•¹Ñµ TkMý‡”ú²ê?غó$‘¦ºo®£Ä¹#1©”PÍ0•s:8šøJØ*srÄQ¯†ÃÃ^ £zQ… š«S–”Ûötç*ŠP_Öðÿpù%>$¯ÃY¥,†¶_†Íhf³ÃÛ_‹ÅÏCB¯5«óbiÎ)Rç­B V¯N F£ùΊý(Ðà–´V­•¢jÞ4ýü ñ—ÄZ:k¾ý™ü{ñ³Ã^ý¢|Qa5”š•±Ó>ÉÀµº¸°®M–»«è÷vH58le‚æ8<5ëÞñ«á-oGÔtÏèšÕ÷‡5}òÖhum;_Ó/¥Ó5 êÅ—íj6zŒYOhÉçGuÂSx"´Ëxƒ$Î*b(åy¦ S N¼0ÕáQÆ•G(Ó¯;TÃÔ”*Fž&“ ΜáŽP’\ù÷qo áð®!áÜÛ'Ãær« \~­Ö­ABUð¯™^Ž2„jÒluOJiÎ¥ÆpoŠý “þ ‹ñ‹Ãš'†®þ1üfý“¿gxÓM‡Uð‡ÂÚ ãï‡þüRñ¥Ó쳆nloàŽêæM°ý‡PÕ,¯m.˜Øê6öWÑOmcÿâýˆ|!ñçöºÖþüuñO¸´„>.ñOƒ¾!ü%¾ø§&‹ñâf¿¤è?,.tÿ„'Â2Jþ5¶ð/Šü¯ãËÝÄztZo†<«ø.¯­ïBW‘Šã¾ÃeyÆmO4£Âä˜:¸Üdrö±5jR¥'M}Rα*¥t°ð«N¯Õ£ZQU«Ò‡4ãôØ|DÆg|/âxo“b¸»3Ãå9U|îœðZxªñY,|œ*WÁ<>Ë[ Wõùa©ÎX|%zœ”çù]E}ƒûsüðìáñãÆžð—Æ¿Ù‹Æ:F»ñ{ãfà¿…?þ8ÉñOâ?Â/ ø#ÅE£xCã^‡ªéZv¹à¿éú^§ý‹y¡Þj>*»MSÂ~)Žó^¼ŸL¸¹”¯{(ÍpyÞ[ƒÍpœð˜ÚJµR¥Q+¸Ê„µŒéÎ2„¬åâå Î3—Éñ_ ç\Ÿæ<5ÄU„Í2ÊÊ•xB¤+Q© Æ5(â0õàÜ+aëÒ”*Sš´’“§V«B¥(|}EW¢|èQEQEQEQEQEQEQEQEQEQEQEQEUÍ;QÔ4}BÇVÒo¯4½WK¼µÔtÍONºžËPÓµ )ÒæÊúÆöÙâ¹´¼´¹Š;‹[«y#žÞxÒX$EaN½;àߎ¼3ðÛâG†üeã?†žøÃáM,êöÞ øoâÛ­BÃEñ6—­èZ¦u Ôô§MKGÕtøõC¬xw[²ó.4OiúVª\›?³ËŽ&s§†ÄNžXº¡Vtð•(O8Ó“Ž3¯:t!*ÒJœeZ¤)EÉ:“Œ¤º°4éVÇ`éWÆÃ-£W‡§[1« MZx S­ÔÆÔ§ƒ¥_RX7^pÂÑ­‰œi¸Ð¥R«ŒêÏÁ¿ø*vñsGðÿÀø)' ~Ñ? .§·Ñ´ÿŒðÙE¥|aøh/ŒvðêØ›#âkZÔ¼Eá;ÿ xî .Îææî/ˆÚ½ÓZÍò'íñû§ì£ûcÏû3xRÕ|hž1ð÷ƒü{ð¦Êê8fñN§áŸx‹]ðŽ‹£Þ­œpÚÞëV^0ðÖ·áÓ=´6ÃQŽ3Sk+ª¥œ:öß´‡üÁ:þ“ãëØçöú×C•c°I[¹kù\«3©›dÙ¼èa²šùôêaå•Ë)Ëèc1‘ÀÕMb–e‰Á*9}Z2 ©*Õ“”¬x¿•æþÎ*q qW`3L†—ñg Öy—ÖáÈÊ­ ãŸæSÂ`¥a¾¯,5L§…lÛ^Ž.¶:¦§ ߥÿ¿àŸ?³ì‰ûdþÊrþÔ_¶'Á߇Ÿµž¹ñ§à7‰ü%ðÂ_|]ñ{Æš·ˆn¼máË_ø?]ñ‡æ‚ÃáÄž)¹·±ðâø‹S°_ À.®5Xïµm"¾ºùþ ½<£þ ÙûvØaiouû4ÞÃn"ŽëPý˜þý¶u^‚K“k•º¹IäW­þÑ?·×ì;¯þÕö·W‚coÚoŶeëü5Õî,üQ⯯ìѤxÓ᎟¡iÞñ•ÿ‡o›ÇúΣ¦Yxo@Óe±¾»øu ^N¿Ôô+Å}Rkçoø(í/û<þÔŸµUïÇoƒ_ hüAø¿á_ 7Ç»¯‰'ÁWß #ñ€|áÿ ø9~^x_RÕ/Ö(ô 2ïFñ ö·yhÚµýŽ…u§ø_Eiõk‹¿;„ðÜ]WŒ²\ÿˆðy̪b¸O5Ê3 âpy.•fóÌ2ÌÂXL-<¶oò¹,."–˜UÆVÄÕPq© u$£õ¾#×ð× àïpoæÙ"s¾âL…Ljs¼Ó5ϸIà§« ¸Lφ­ã2¼¦Ž]KEU¥õÔ¥rûsþ=ñOŒ¼oûuü ø «x¯X|5û+i¿€­®d¶ÑµOx£â÷Ä? êú–§ ½–}3Á^¶‰®ŒÆÆÓO¾·ÓþÈ5­QînÁcüoã»دþ¿ð3Ã^-Õ7…ì®î"U¸z}·Œx/â—…üàÿÙ_߯.þ%øsFÑdÔ¼S¦üRñŸŽî&Ñgð牼[¤ÞiÙ>9Ó­RIuK]GûSMÖà}2;k8/.Ïø(íà/Ú{ÃðL…_¼ñKNÔÿdO‚^4ðOÄÿx§Ãš5§‚õ k^øcð—Áö_ð‰ë:'‰µû‹»uÕ>krÏÿ ᫱g«xrH­&¸¾»µÓ¹xg„ó,&]àÕ NK:/"ÄçXŒîœèÓ_PÄWɳ(áëbb›J¬ó ”% ‹š_X”*]JÒ^×ø™’㸟é_/â¼&' žø{”Ï„e J• Ê­VYa!5ÉV¬p4’:ñö NgN¤¾©ý¯mmü;ÿ ÿ‚gÚ覛ogûu.Ú+`Qa°½Ö¿lÛK»e9,c¹·‘ã›qf—qg,Ä“ÐxÄZÿ…¿àÜ¿ø(>«á­kTÐ59h hrê=ýΛ{&âŸ~È>ñ.”÷6’Å3iúÿ‡5WBÖ- ùŽ‘©_i÷i-­ÔÑ?Æßµíà/ˆðM¿Ø«ö"ðç‚þ)\üPøAûTEñwÆ+>Ѧøe…¢×>9\46ú퇉¯|C¨aøÁáçXõO éšq]'Ĭu0¶-©þƒ|ñWÃ/Á¿müføc'Æ/…öŸµ‚í~ÖzbÏ+’KË2Y¬²»Ï#³±,Mx¿Ž¿o¯€?¿gïŽ?àž¿³ßíA¡üZý¥|:ß~#|pý£µ‡Ï‚<¨Á{e®h¿u‡…Ιr·Vž¥oa¬ÞAáÝfÒk¨5›Ñ¨êZ>ieÈþÇ_µ/Ã_Øûöÿ‚€üñO…~%øÃÅ´Çìå7Â?‡²|;ðþ‡­XÚx¯Uð/ÆoÜj~*MSÄú§c¡wâ–•©ÜM¡é¾#Ô Ñ¬µ«ìùnm--uìó"Îóœ/æØlŸ†Yîcáõ¿-ÄÂŒ3 Ôxo:Ëëæl=*ÕaF.œëF©SÛË —Ƭ¡N”_•ÁœQÃ\'ŠðK â./É3lã%Æø˜æ9æ<~[ƒ¡Åü%Ä ³+£˜T§NS§_[*÷£JO®ãjQ£9¬-yÇì?ø"F«ðçáÿìÅûu|jñÅ¿Þ_†¿²„’âûá >Ÿâþðï[ðŸõˆúÏÃeñTÖÚx—F¾Öl'ÕîJ‚÷N³“P‚îòygìaûeÿÁ¿bwÇ>.ø[ðþ ±ãËÏŠ ¼WðŸÆ2üSøwû7ø–×ÄžñΧ¡ë:ÃÝÜø_ƾ¿»¸¸} Î w:‹é¢Êâì› nfŽî”?àŸµ_‹¿c?xKÆ–Þ´ñ‡†µÏ†¶?¾,ü,ñ!k=/Æþ Õt>=cÃúŠÜÙÞ¦Ÿ©ZÜÛG5•ÝΛx-n"žÆúÆóK¿Õ4û¿TñÆÿø$Ÿ„õw¿ðwì›ÿñ=Õ¼žmŸÂ}[Å´/ƒÖ1‚¦éŸt ÏüD¸ðå¢)³°¿ÔoSÄ"Å"}AšùØEÕŸpµZüIÅ3<còŽ'ÃäÒÃ.Åá¡B_ÙØX:ÙfaO_ ðÓ…z …Äʤ0ÓXÊÉÖ§V”ÓóxÄœ5 áÜ»†êð‰ø#‰8®®d¸Î®7VXlÛ;Çf˜ Êkà(b^iAPż¯…F.ÔpµVtkP™ðŸÀ‰ß>x6ËXðoÄoŠ¿|w«øOTðv³âOø·Äÿ¼qý& "6ójú-Þ™ª„¹“HÑõ¥†é¥·›P²Óµ)!š[{yO„¼1aàÏiþÒæ¼žÇMû_‘-üËvÿl¾¹¿—Í’ÞÞÖÛ5Ô‹È#ÄJŠÛ˜3·ÝŸðNïÚ7ötøñÅÿkßÙ÷Sø»à‹Ï„Þ*Ñt¯†p|?øqñoX±ñü%¾Õômbß@ñî·¢øq/åð߇õË+{»+÷Õ­§×ÓHŽ6·¼Ôf‹àêúþ½áM+Uñ>—ý®]}»íÚoدtï³y•åµ·ú¡,×ùÖpÛÜ~úFó<ß6ÇR¼ð¸¸EN¦¶1ÃÖÆSÃbpR•7 "ue7ZŒÖø#ü¤ƒörÿº½ÿªâ…}íû;~Ðÿ³ŸŠoOÛïàÇìåû"ø öiý±ÏÅ¿ÚÏDøKûW|Hø¯â?ŽøûOèž0ñŸ®^]|>ñ}¦š>]|EŠ;ÝrÖ×ÁÓjÚŸou¨x^Ú KýEñä§ì ûAø3öXý­>üyøƒ¦xŸXð‡?á;þ×Ó|e¥j$¹ÿ„Ÿá§Œ¼aý›g­ë^ÒæòuOÙOyö­bÏ˰ŠêX~Ñp‘ZÏò­ÇÅ«ÿ~ÑŸ´‡íà‹|=¿kߌ?~X xçÃÚwŒ/UÍqù;‡«šSȱÜ=Ãx(æy6.¤>µ“æ^Ó§–æù}juðxÌ^|>Öµ kFÓ¼Gqañí5ûï¼6º6¥q6z'Ùt=m¦µËsù£ûx~Ö?j|øŸ¡ü6ø™áOÚ+Äþ²Ð?i]RËÂ^‚þ,ñ?‡,"Ó4Ohzæ‘â«ßéZõí•”V¯§ë¾±Ó$ÒO‡ µÕÕü/y¯û>­ûl~Ë_¾ |$ð7íÝðgöˆñ‡Ž?gÿÜø#á·Ç/ÙbóÀu‡÷ÙÞGƒ|wΈZ–•£k}Šé`‹Y·}wX3ÙGumg¥]ê^(Ô|AÖ_œæ°à|ö¶UœåÏ"þØÀçYFAZ•Ã_C „†;-S”iã²ê5pS§MQ—·ž[™*Ð¥ÍNµ(úÜÄùñ‹;ϸo‰*x…„È3ž âN)r¡“æ¸l¿ŽÄ`gXŒ2UrÞxl|0õcZ4(PͲ8áý¤a_R§†þÞ¿¶§ÀÚ’÷ö"ð_ìËð—ö™ð7‡?g/ƒž-øâÝ{ö‚ð?„<7}®ø3DÐüÂE[ßø³ÄÚ=íþ‘7…¼X5)fÓ¼/kowâXãÑ­%‡P¸µ±úSþЭ‡í•û"þÏP¬süø1ûxsÄþ ðÈb GSø‰ã?ÝʶÊ~Å0m Àž VbRÐØCæKyùëñ‹âÏìÙã=CÀþý—gÏÚ'áö¤·‰¤ñ·ÄOÚÅž¼ñ?ŠÖö×JB<+á‹ CMçLÕ ÎŒ.fÕ[ľuóÅl²ýóñGöæýŽ¿h†ßïmo€Ÿµ‹~9üð<ß ôˆß²þ©ðí×âOƒÒM6â×FøŸiã»Èµ=2 ‹&ÎöâûÚN·yo¬O¯êºv¡¢Ã­É¢”²JÙ5^̛̲>Åe^+§ŒË±2ÂbsÌ=^ ’©‡ÌjRúß±«m Liâ=¶ ™AU¥OÙâ)RêG>Çø»Ã¹ÆqÁœ=Æ<]ÄÈ3¼¯ЧÃx™p¿×©b²ïí9á+˜K ‹ÂSƒÄaéC‰È£S [ùv#Ø~Úh±Áàš6ñZ~Þ:e•¤ Ÿ*ÖÊÇ[ý±m,l­“;`³±³† K+X‚Aii6ÖñÇQÆ®ýµÿåðMû?«oýHÿlªùóöÞÿ‚‡|'ý¨`ÿÙ/ö]øgû7üPø-â_†?µv•ñ2_§‡ô[߆^øaá‡øÃ¢è–ïâ›_êþ1Ô|_{£üKð®¥âmkÅ>Ј|Meãízææ lUä¿jÚÿÀ_?à›±WìEáÏüR¹ø¡ðƒö¨‹âïŒ*ð'ü©ÿñƒ¨Æ~"ý‘¼â½-níž9’Ï_𮽬èœJê.´ÍNòÕóÌÆÿðHƒŸ fÿ‚ƒþÌVÞ$Ñ´ÝN[øÄ‡_×`¶¾Õï<[áßø¿ÄÞ½“P¼Žic¹¸ñf™¥4pÛ´Q™] …2OÄßµÿ€¼/ÿ†ý§?aÏøBþ)x‡âÿÇ/¾ñ·…u øsFÕ¼ ¥hº/‰¾ø’óþkÿøI­üOcplþxŠÖ/ìß jö†ÿSðì2ÝÅíôúgÍ_|{⯅¾:ð‡Äê’è¾/ð7ˆ´ŸøsTˆ+›M_E½†úÍå…ÁŠêÙå„Eyep¯m{i$Ö—QËo4±·Ôe|9˜ÖÀø«‚•)eØ®$Ï3ÈåxÚ‘åsÃc¸s-Àá1œ/QÑ¥‹X‡µ «ŒS“oòn#ñ +Ër¿£F7 ˜ÿjeÜ'•åõ8«&Áâ/Ï[&âŠYŽ3*ÆP”¡;~ÊŸ¶?‡þ=x¾=ûâ—ìµ®|/Ô~üGñ6‘¤éú#x‡X>8¸—Æ>¿ÔôÝ.ÆÓPEÐ2ÖöÖó\ëæ´oµ«Ÿ•?f/Ú¥>~Õí9ðÿáF¯àï x?âwеoü,ñWˆQÖbøeâK]WE“Â÷ž#ò.fþÓ‡Áþ#Ô|9¹{g=Ãêqëw62¬ßeon• Ç4ðÿ4áXðöa”æàÌnG xµ‚§–a,ž®]N†GV5ðóªã*X•N}ƒ‹©*U/I|'ft2ß8sÄùñÆUŸp>#ÄŽâXC,Ìqµñø|—à3ZÕqù\=áq¸hS¬±8§ŽXåV¢£8Iâ‘~Ð:6‘7í½û~ëSiZlºÅ§íéûX[ÚjÒØÚÉ©ÚÛ·Å?+Ao~ñ¨aeº¹VŠ9U¸œ"Y7ì¶?ÆOÙâ¯ÇmÇŸ³ŸګÀ¾*øÕñâOÅ/Žëñ‡Lø{7ÂËOxžTŽÿá~¯àÍ\ÕâÓ¼C«Ûx»T×£ñeÓOý­ªèðéVzU¼·:m‰_eÂó«>É–#ŠÀb)eøl5|&6œibhVÂÓŽ¤jB© 9Òs§8ÎQ©JPšv•—ä¾2rÏÄŽ'ÄÐ̰y¾_˜c§˜å9Ž_ŒXÜ',Çÿ´á¥†«£§:•)Õ¡(S•D+BPºæ—ÎQE{ÇæEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP_­FYþ Èý¿" ˆßö™ørYp¼‘ñö59Î7UzÓÜ䢿;ñ#ýÃ…ÿìàpOþ¯0çôWѵÇùå¿ã\ñâùbÔÐü•¢Š+ôCùÔ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠÿÙxerces-c-3.1.1/doc/html/graphics/faq-parse-3-header.jpg0000644000175000017500000004073211363617750021542 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ#È"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ø^Š(¯õ ÿœp¢Š(¢Š(¢Š(¢Š(éÏÙËö7ý¤?k_øL¿áŸ>ÿÂÀÿ…ÿ÷ü%ßñWøŸÙ?ð•ÿn`Èíâ ý¿íÿðë_ò ûoÙ~Åþ›öo´Úyþ½ñþ wû{|+ðæ£âÏþÎ>)MIµ¸¿Ôîü1¯xÇóØØÚGç]^Üé¾ñW‰µHí-`Ý=ÍËYy6öñÍ<ÎÁ3§ÕðN?ùG·ü×þÌÓ[ÿÕ#ûT׉ÿÁ¼^ñÆûYü7»øsqâÍ;ÀZŸÂ¿ëÿì,üAâ9<}¥]ü?¹:©âãPŸÃqj ñ_ &üÙ[ßÛÿ¤ÛXÏ”—Öò~Cñ`±~ â0U8n_ÇY`ñù~bñ¹)Ìò./“âò7¯—ÑÃa(ã3)C;XBª´ý5CóŠý;ÿ‚x~Í¿?ࢷgíà=gÄ^0Ñþ xwÇ´—޾j¿ 5?éw—^Ó¾9xSMð¬w~ ð׋ôéü=„ð¯Å__´ís¤¦›ÍßÁøFûögðæ½gâ‹+èúö­sŒüYm£é–¾&Ót/øa£Ñ|E­ÙéšÅ¬_ðŽ^+ÉõÔ8×+¯™Ã%Ž4y²Ãdø¼N–_ˆ­ â3•*¸¬L#ì(ÒÃ:rŽ*ugMÁÙS…I^1üãàoà°üæ52JÙ&3âLªŽe<Û …úö/†Ý?kC „¯(âg_1§V3ËéÂ3„¹jGV‚Œe?™(¯ÓO~Ìß²ìðKàßÅoø(GÄÏŽ–>8ý¡ô¶ñ'ÂÏÙçöhðׄ5_‰ÑøKʱžßÄ^&Ô'xÊßþé­t/x;ÇÞñ‡ü!Úgü#‡€.×~|/ð ‡Âÿ†Z·‰aŠ-jË[»ñ+øÅúÖ‘àícíÚv£­hÚ ¾©m¥Ëªi:lÐ^[B0¿oÿÙNßö&ý¦õ_€qx¶OØÝøß<«_Yŧj÷¾ ñ>§â ÙõKKif´úoˆü)âê[Y;¤²µÔþǧǩÃgáx¯-Äç0È¥G3ÁcëáñX¬ÌrÜV –aC:4ñrÁÕ¯ª’üE T¥5N¯³« ‘„ ù—6eáwå¼&øÑcæY Ø>cW&Îp®#(©™Â¬²éfx|%Z“¡CèV¥GMÖºôåBU£UÆøÖŠý²øËÿùýþþÌß²‡í[ñ‡ãçÄ/‡_ ~'|мiñ[OšOx¯Æþ+øâÏøÆ^øuðÃ1h^KV¼·»øªjz§‹u_Zèš7‡4¸ï'3Ý=ÝÇ9ã_ø'ÇìÛâ/ÿ?moƒ¼sà¿Ø¯â™®êüMñÿFðü¾I k7ÞƒJÓ|=áÔÐí|câoø³KÔ|áßiVžDZâiú‡öþ« jÚ~¸RºÃÍVÌaCÆeTqSÊ±Ï <Û,RyT*Ó£QUÌ11ÁÕ©ƒÂÐUjbS¥JšúÅjTeõxŸ£Ç‰ØzXªŸÙÙUiá2¼³=«†¥žåkýšSÁN9ë¥[EÑÊp3ÇR¥šc1.…<¥Š¯ZØ<5lT(¯Ó?‹³/ì“â¯Ø?Xý½ÿc߈ÿµ/‡_>)é¿ þ)è?´? išÄ:ž±¬øGÖÿ‡®µ*ÅRÅO /n~hüø7ñ#ö€ø‘áÏ„ü9ÿ oÄ?ÿlÂ=áÿíAþÐþÁÐuOjßñ6ñ6©¢èvŸdÐô]Jûý;R¶óþÍöko:îk{yyx7ÄŸ¼gâï‡Þ2Ó±ü_àOëþ ñV‘öË Cû+ÄžÕnôMsMû~•u}¥ß}‡T±ºµûf›{yasåyÖwWï¯÷/ìð>ëÅðQo þÎzŸÄˆß õï |DøÿðÃÅ;ø#âãை^ñOÂüN±ñ¿†­ÿ ø‰û4ËãO‹Þ-ðö¥ÿñoÀÏ|Dø‡â=#^ø¹âio>7Yøľ4Ô|ZÚD–:׋õ«¹yâ=_A‘µ\ÞêwúCC1³>“âj1Ïñx¬áªeønÂñ*,6"X¹Q¯ŒÌ(¼Lq^ÛêµpÕ(a¥…†8ˆÔŒêμéÕ§NM/ ñu89å\iƒââUnMl$rÕˆŽ)ªðxŒ#¡ ~_ŽÂbó ÖÆÕÄâ0xš5©aèáhVÂׯ[çº+õËö¨ý™ÿàœÿ±7í;â/ƒŸ>3~Ò Ó51à‹Ïx àΓð÷Åßô øÃšc]ø·â¿‰µM+GÐlÖçÅvÞ3}'žð5æ·gའN×õ©á_h/«|­ûþʶÿ±Oí=­|ƒÅ3ø¯M¸ðg‡~&ø/UÔma²Ö/ü âG^Ñ-$Õ-íY¬Íþ™â? x‹C¼šÓÊŠïû:ßSZtZœQNMÇ{ˆËpø)ca,ã,žk•TÆ`qJ8ü5†x¸áªÕŠJØ7‹ ±Ó·¾çFU©ÆSYñ_ƒ Ö|g¢ø=’ÊK/øÐøé£°–+ˆuM2æm*+ÝQŠ[™t›ªê:~¬ºtÿµ×ì•û2üý€g/ÚûáGʼnßu¿´ ‡Â}3QÔ´;¾M ^ãMÖößkÒücáoøtü:Ò¼;ãnüWâ |Giâc£Û_iw:MÍ®0ãþ©‹ÁaiÿiN–o,“.ÌY‹Y^;Ib½¼pÙ„©Ç R•˜xïÄß > iöZG<©>â]&ÃÄñ<^­ qÉs¦É¬øSVÖô)ï¬ZO²êVÖšœóiš„WZeú[j6wv°þ‹x›ÁÏü7Á3ø¿ñOѵÛ#Å:ç‹>~È~±¹µÕâÑR ›Ï ëߴѶ}ì¶7Ð4¶"ÖmíoD×WÞ"Ôt9ŽšÐéßžŸ²'ìÃñCö‘øÁáÿ…ž¸_ø·ñs]¼ÖügâýnâêK #¦¿¯ëz‰K«´Ð¼7¦ÅrÑ€³]_L©mco>©ª[ÚKÍâŒ6`³ âŽ#˰u*<棟&6µû|f+ [RŽY—ÒŒðõ*ÊIⱫr¡O|o»›øcŽÈ°y^M™PÌ—ˆùÞuK‚á:¥V®•Z‘Âá°xÊ*.·ö®aVµ,e/g^4p˜¹d],u\ß<‹Îè¯Ö†¿³/üÇãÿÆ~Åß¿hOÚĵ^‚¾5Ò´‰z÷à [þË>5ñ·€4mSZ×.—ÂWºNâ½Yøwà_ë—:m½Îµ£xKµ»³ñ7„SJÕâºÒ/…/í¢û=ÉŠêKrJ˜<ë?í 4r,ªYæ7˱X[T…j3£^¶‹Ë0ðw²ìË…rʸl¶¼¸Ã>Ãp¾SÀfØ,Ã-‡â1,?öN?ƒ©Z– Iæ8,D½¥éWÁ׎3W†R¨¾4¢¿BjO‡ŸðNÙ#ľx³ãGíñŸö‚ðö½ñWBøkðëà‡¼â=ÀÚTÚ˜ø]¥|tñ~»“¿ª½”Þ½ø¡oðóNÒ¦ðõõþµá‹[Xuíò w|-ý—¾xöEÑÿn¿Û³â?Äo„¿¼q­Aᯄ ~øwE¾øåñGX‘/¤¸m¯‰¤—BÐb´:F³]RÞh%J¾Ô.õ.ÄèÒkиã$yuÑÃ3މÂá2¸Ï+ÆCœb1”¥Z…<« *j¾.2§ •=º§:£Nx¯lð‘öçdüñÔr©åsÌ)áqØÜËÙg9}L6I„˫ɯœâãYÐÁÚµZ4iÐ穊©Š­O/™Ià×ç¥ë_&𜚶{¡^CâßËsàŸZx®ÒëÄošÑ]éÃOý£†Ö4èÛì=cörý”?dï†ü}ÿø‡ñÓLñí¢7Š~üýš¼+á-sâN—à·KvÓüaã›ß\ :ÊH^C$~°ÓdÔí‘$¶–æMR=GNÒ;1S—a°x Ujœ+æukÐÀå/-Ålb+a•Yâ!¿“ÚÆiRiâ&ã…ö.•X×”+Ðu|¼/„ü]ŒÏ³,‹ ª§öF Ìs¸çpæ©NŽý³²ÃUXŒEOªÇ GÚca‰£‹£W NxjÃþqQ__~Ù¿³.‘û3xÛá·ü!¾3¼ñÿÂO? ü=ñÃà§‹õ}ãÃZö±à_Ãm?Ø£ý¢?fŸØöŸáoÂïÛOâíqãOÚ+â‡ÃÝ7â3ø?öYð?ÃÝCÞÑuMOWÑõk¿È’øŽ -gCÖld—CÔ¡Õ.“F¹½} N·¿Ó<þZ¼o‘C “bpóÆæÏ㊞WƒÀ`1XŒuxà´ðÞÎÃgÊq¥‹Ž%Ò*òT9]f uåÞ qî?7â\ž¦–Táyþ;5Íp8<¯³_i,¦tñþÖ¥e,Ö•*¸œ|Äaëa)ÏêÇ U~OQ]'Ä SàÔ¿&…JuèT©J¤&Êúàoì£ûFþÒ“ÝÃð;áŒ> Ûé÷ i¨ëe”6>Óo$T’;-GÅzÕÆ™á>õâ‘f[KÍZ“7/%YÇ›|-ð%÷ʼn¿¾i“-¶¥ñÇ~ð&ŸpÉæ,Þ.ñŸáûIš2Èb¸Ô#r›Óp]»—9¢ðYOž4ð·Çmþ û6øŸÄfOÙŸáŸåø›¥xR›@Ö¾"øÏÆÚ Œ ÅZÖ–mnµ‹i<7¯èŒö·Ûíõ_ê^'ñ&½­ztdÓþW?Ïó >o”ðÖGCW8ÍpøÜ¦'0U§Êò¼¾xj5±uðøz”kã*ÖÄâèa°¸ZxŒ4e9T©WJ’©ú‡‡dÜAñWñ†gË8C„ç—àëC+T#šg¶g Ul>_„Äâhc0ø(QÃ`ë×Äâª`qÕ9ç…ÃPÁÖž"U(yÇ‹¿à•?ðPoØ>¥¬þ̾1½·Ž'•£ð޵àß•M¹ ¥xÅ>$Õ$”îaŽÍ¦|6ÈÛcíüø®kÀÞ—áuêêß |cñ3á¾¾²­Àñ€¾'xóÂ:áºQto´X‘qŽ<ÕXt\*Eáý&ÓH†÷RÔ"³óÄwz½ã_ê“\Írk·TiRßÎû=¸eÌvÑC[fãìeTóú~Þ9æ/(Æÿ áªåYv7,·ñ=´q|^i›ßþ]:S§Š_òñN >[‹¿âΞ¯GŒp³U*ÓÌ0\Y‰Éó(8AÐÄ`qÙF+‚Œg±­G‚S’©FPœy*F[WÔøIð÷SýŠ¿nOÚwÅ÷¾3OþËÿðÌÿð‡i¹Ð×FÕÿáuüX¼ø}âøIl5=6KíCû>Æ;k­û/_ðÿÙnÌó^ÿjÃåÙ—ë« ˜á±¸ŒÓ AÍÕÉñÔòüj”Tq5rÜ¿6‚¦Ûýä3·5dª:µàÛñ3>ÍrŒ¯†óœmÃ/⼿™dÕáR3öÔ2ìë1Èq©­*ôqùe{Ò•Û¡SY;UIQ_Pxá'Ãß ~ÀíW{ã9¾!ø‡öæÒÿe[-ÎçC“Á‘xoVø+?Ä{mfëN›M·×[MrÝígÔbñö ¥‚?ÉvMò˜ìÇ —}Qâe8¬n;—På‹•ñ8®eIJß #æ›Ò:wCÙ¯ÖÌ0ùMW­–å8ìëNU#NO—FÅJ—6•*Æ3R4Ó’NÏCåú(¢»(¢Š(¢Š(¢Š(¢Š(¢ŠýØÿ‚NøËþ×ìqÿzøƒÿ¯ƒ#èð“ü=ñ—ü# i½oþ_xkíV?ðø3Ä?aþÈñF‡öÛ?ímòúÃíVÿhóSòÓÆ¿ðR/ÛãÁ)¾øËöZý޾ |BÐ-ÄÞý¾Oðºë\ðæ­¦"É¢ÞÏu©ëºl}ËY_EáíoK76³\éÓ\Üi“Mm4 ÿkŒŸ>~Õÿ>è¿ õÚßá›ü*ñÖ¡ñ NñM忉áë¿øçÂ7מ»ð߈ôxtÝetˆþ#žÖãXÒ|Ib5{]Y´æ³‚þÚûåÏ iw'†|9¢Ý¼2]i‘¥ÜÉnÎöïq§éöö“<$qHд³DÒE²/1*?8Áð>¿ñn}å˜ðþ޶–_³s,Ìâêâ_Šÿ$¸º¹uUVšy³mUD]±D‰h‹üóü³µ·ø] \AoSßͬÜ^ʈ«%ÔÑkš•¤rNàfGŽÖÚ±;c‰` ý ý’ÿlO‹Ÿ±'|UñWঅðçÄ5ñÃsáô6´Ïj¾Š×UÖ|7â8ðŸ‰ü'«%ÂjÞÒ¢y—Qš5Ó¦Ôl¤¹’Ú{oˆ>xbÿÁž Ñ|7ªMg=ö›ý¥çËa$ÒÚ?Û5{ûø¼©.-ífm°ÝF²o‚Ͷý¢rµ¹YòÜCÇfqà— p¿ö…zÜM–q×çÍѨ¥_ P¥V†%Uo—_Ýu§²¬éhÛN?µð^(x¿öÌý’~8h0}£àa­/…š­¸'E›YÒ>#øŸ]Ö`Ó<µkî ðgÄ¿I2ZHfû%Ͱ‘DÂZŸÄrßáüÛñÓ •†­®üw°³‹§Ùå“ÇŸ -£ʨg¿ÑˆRÆÔ¿¥Á:t}V×þ ½ÿ¦×î4Ëë} Uý‘<]¤išÄ¶³E¦j¦‰ð+ö’¹Ö4ë+×E¶¹½ÒíõýkûXdy­"Õô×omÌŸ7þÇ^,ÿ‚€xàÿÄíGöføeûD|ñ–¿ÿ¯Ä†~<øC©|xøO®xÃLÓ4}CË×~øsQ±ñR^E¤jº,—wú\Ö¶qd]uUÑìí­~ÙñoÆÚËà_ü×þ ñ7öððßÂï€Iñûᮇû4þÊ?³GÃßÉð“IÐÓĺ_ÄOx¾ãÃ_ /ç‹VÓeÕ ø›s¯êo«ÄÞ!þÊðþ£©Is¤ÛhQ•âzX¼»Ä<1‡«’ãÖâ]ša'G7§<×ÚfÒá’UÔ&4éµÅŒ—R[Omò/ÃO _ø3Á:/†õI¬ç¾Ó´¼ùl$š[Gûf¯•%Ž¬Í¶¨ÖMðG‰UÕw(WoÖòœ—„ã.,ÎëFšÀgo áðRE*Ž®UO6Ž-T§kÓIãhû6Ûö‰ÊÖågóWñ–G˜x=Ãü!ƒÆMçy?ˆœ]šfW ÂËsu˜*Ôª'Ɉ§í0ËÚ¯ùwSØ»6Ó_·ÿµ‡?a¿ø&çÁÏ‚?f¿Š·íSñ3ᦟñCÄš-¯Å½sà§Âÿ húž¯«xz(´ÂWš•ÎÍwÃ~ Óà‚öÛU–H,WÔot”Öt­.*_ðp^áè¿ úí?°7ƒ9ìJþÐÿ;ô$çÐ0õ¯œ¾šÊBÆÚk­+àì­{a,ÐçË”ÛÜ&å+,då‘ZOÛŽÚ+ÿø ü«K¹ÞÖ:·íغn£É$kucuâ/Û$Mo)”´lU~Y#ŽEÃÆŒ?>iÿÚwã_íOìsàïé t‡±§ÃŸü>ð,þ°ñfŸãMz×Ä>ðƒ.n¼Y.­¯ø‡CÕ."ÓþxJx&Ñí|/^ÝxŽY,§‚}2ÖÄø×ûNükøµû+~Ο±‰Ò>Ù|ø ñ©>4ÚkÂÃÅ–ßu-j=SâúX\jŸÛú—…o4²Ÿ|`­k…´k½Ö~UßT}G«ÁyÞ!àœ¾¥,7Ör/3"̯–âq|SZ”éO–Õjòfø7*JÎ-ÔWýÛ¿>#Æ­Çÿ´øÙñ@øƒã/ø¢ÃÅŸðœé÷Z©ðç^‚×Ã:Æ“¯ÿ`Z[ɪ|(ðœrêø?V‘ì/|D‰{ ÅÆ›6»ðÏö°øÉð#à7í_ðCáN‹ðÏQ°ý­þ¿Â¯j´ïÞ^hž»ðÿŽ|#}yá;¿ øG‡MÖWAøâ9ín5'Ä–#WµÑ%›Nk8/í¯«0àÜï‘ñÞ,;¯ŸñÞWÄt]x¨O-Âã8VµiU“V§USÊ1œ´]Üš¦¯ûÅo;†üYàÌ}ôzÌñY…xaø'øÃ†8‘ýZ¤ªà³<ß)ÏrüG Þ®¦#7ÂÊX˜¶£JŠŽ?ºiþˆÿÁ´šeŽ—ûEk‘X[Çn—_²¹©Üìiïµ/ˆ¿ï/.%o¼òK<ÎrÄí@‘.#~8ÿƒ|¬­¢ý¶?eíMcݨk—¯µ[ɤ¹½¹‹áÆ (äžg-#ì·¶ŒX¨s,¸ó&•ŸÍb?ÚÃã'ì«Üxóàþ‹ðÏÄž?¹ø7/§¶ø•§x§XðpI®¼'¬µâCáø;Z 5¯i‘­Á¼`4¹ïÔéÆî[ym|Ïöø·ñ ö%ñ·ÃŠž²ðgˆ<{ðËþ_ìû?Ûkš¯„.ÿá3Ò|[áË¿¶[éš—…5™üÅw2Ûù‡•ªCÉö«Hä‚ç»5áLÛŠñB­t8¯ƒ°.NåZ1rÇaò¼û VÓWÃÓöÙŽ*ŽêQs•½Æ')ñO†p<=áF™â§Šàÿ+ñÓ…*Õ*Váê¹Ö_šÇ‡÷—×­ ½ÍÒmIb|M8þžÁ; ÿ‡ö|yç§íõÿ ØÂ9ñ¤à~$Ÿ©5óÂ?ùLÇÄïûL·?õªtÚðïÙÃöø×ð3ö©ñŸí6‘ð·QøËã?_~4Þh1Xx²ïá”×Ç /_°ñ=…¶–úþ‘⨴½=üY­¶ƒk/Šn®í(ꮬc»Kžá¯Å¿Š^ý¢¼GûUø’ËÀ|WñíI«þÕRèÚ·ˆ¤ø{ŒõoØ|G“FN¿Ô­üHžO[ÏjšsxŠ}Ut3 â)/Ëß)C…3xf¸Œ\©ÐTjøc—p´·7ö¶šÕ« FÚPäÆQå­´›’²ågV{âw×áüë.¡˜Ê¶&>?.=¦©Ð›†'‡1. ±i»*µéÔÊ1j¶Ýœ¢îýª·ÔðV;i?à°_·]ûÂykoû3ÚÛÜ™!·½ý™þËuË<–6ŒýÉ9Æsõ7üOü=á ÉÁý¼HìHý¡þ4€~ ©õ¯Ëo?þ)~Ò´çÇÚwâå—€4¯üf¼ðí#áÍ·ˆ¬|?aaðïÁv?´]¶&ÔµÝFÖòëú‰uªg_Õ!ŸZ“TšÓì6/iewû]þÓ¿ÿm¿Ú‚Ïö‰øÃ¤|-ðü¾ø+¤üðî—ðÒÃÅšTrèºWŒ5ŸÇ­Yx£_ñc>¨ú׋FíÏÛ·GÕ´ø ÿüWOÖôÛí"þ_Û«@Õâ²Ô­g²º“Kׯ¿kÍwDÔR „ŽV²Õ´]ONÕ´ë¦Í:þÎòÝä·¸ŠGg„cŒÂÓÀeõ8Úʆ? ¾ÏƒËÜdñ2Á[ßúö!%„ÃÕ\«ëÏÍ*˜jt+ ð-nÁgÍx’J­ § S—e³Ãýcšf´eƒ¡Œ¿u<ÍŒ«„¨¥Ò¥ U_«á1جÃúÝã?ÚÿÁifK¯Ú,|>Ѽ9ûyþÉ–þ-Õ‡‚´iÚóâÏ컯kwºƒøoI->¡/ˆü!ovÓi:TRëw±êOªivê/þ,ik¦cÿÁ ´ ú\¾5[ï xºÇÌ[yíî§·“Að¾¼×é×0Þ\iâê+y“Ì.?6?g¿Ÿ¿f?‹>øËð«Q·ÓüYá+©mB+‹ \Ó.¡k]SÞ#Óí.ì&Ô4^ÍÞÖúÖË;¨óæ{a©ÚY_[q²ücø¥ª|lñOÇHôï‡ÿ |]}ñüCðœ£ñg†ü?á=iî£Ô¤»ðþ•â}kÄÚ§‡šMj9µÄÓàñ>«¥Ø\êWZ^‘o¦è6Zv›ÃTàld2Ž)à¼Jtx[8ËëÕÈjÊnu2,v%ÉⲩÐož¶Tñ*ì'$“£N¶/+Bi?ÙeâþS™ñø³˜Ò—úýÁ™î Ä™S”ý—ðÞ³–]›àñ“æ…"Âaj×Ë3Ok±•!΢O®Ò_døKþ ‰û[| ñ¾£wá?ø'ÿücàÅx«Æ«'‡eÿøÇñ~y«x?Æ6’ê^ø•m{cªJñjºF©=® ZþÊyàši­®]°ÿ‚;ë¾:ñ§ü[Áß>#ÇáKo|^øÁûQ|]Ö4羚„ôGâGŠþ+Õ´­×]–ëV³Òlõ½KSM2ÒûQÕ®­ôój—Z­ýÈšvá¼wÿLý¬|UªG¯\üÿ‚wøÓǦÞÒ;ŸŽf5Õ>4ÝÝY[%¥®£¨ë ¯^xNûP´‚8ÒÖ{_ èöÐñXÇ ?™à_³ÇíOñÓàoííg¨]ø Ç_ÏŒ>!øÒá5_ \é~ŸTø›áÿh^#ŽOxSWðÄén­â­sTÓâÓ/ô‹[+ɬíã´þ̲2óSá,U^â¬.Ëò\ç7á<Ë$Ž*–y[0†/ˆÀâhÑ£ W ¥C.Xšî­9Ö©Ðç|ødÜæ}F{âÎñ?fµüJŠ).Ú9ÓÜDä½È õ¯xÓÇ¿>*üH–þ5øÝñ«â/ÆŸÙø!5x¼-§ë_u–ñ±a¢[ëÒÝjÖš]¦­u}›k¨ê×piËh—Z­ýÈšvúÿàOíÃûB~ÍÞ ñGÿ†>ø¶éu=wàÏÇï/Äÿ„Ƭ‚5 ¿.©¡ê¶r}’Ѧ›F×,a»šÎÂ}NËR}>Íaös>Í^ ‚1Ø xjù¯Õ£^yv#èañô«dÕòŒÂ„1J•hÒÄž&Uðu§NTZ^Χ$jº´þc,ñ+†ðÜ{ã0Ìq8oÄÜ»0ÉpÜM‚ÃÏ_$­õì6a“ærÂ*”«â2úupëÃPœq¥8U£’ê5>L¯ècþ ×ûbüFøañ»özñWïØïþ ãñ×áÅOÙ£Ã^1ø;ñ‡ö™ýŸõ‰^1´³‹R»ü;мe¥ø¿M‚ÏIÐl¼MáàØiÖ¶ÐAã7™¦¹ž{¡á·ÆÚ_öý£µOÁñŸ³Âü>ŸÅw>øsû5|#‹áLJçÆúTz½ÅÀ’kFyî'Ð4Œ·ú†¤ñ&ša¶hEõóÏôÃø(?íðá ·Á; þÎ~hú”º¿…¾~Ö? .~*ø;Â:Ä—ÏwáI4ÏxoZÑ&i®î厮õ}.Ù¯u±Òí&Ôo.&åâ~̸†§ g˜Œ› ˆÅäµ3jXΩ›U¤ªàóXЦ«asJ4hÁcðσ®éT¥<¡S…Ž"MR­TðÓ² qœ{ÁøN/¡<·Œ2ì†Yoà xÜ7É%©.m‘b*W©S)ƬÏ1Âζ¶"´Ë1•°Ôœ±xLþÔÿ¶/í5ûjk¿³Ã|bð?ìÃðÛÂ?³~‡ãÿ ø#ÿ³·†|àûð÷Ž´ŸiÿØ“é+ñ7‹4¸ôŸ7€¼9‡týû×K´mF&ŠõZÆO½~ÁK4/ˆ^ø_ðKöêý™üûTü=ðù¶ðVŸñrÞêo~Ñ|#ö+9.ô-jÖºñt¶«e§5õŽŸâ?ëôzu¥Æ¯©ø“W†'“ó›ãí'ûDþÑš‡áø™¥þÎß¼ ðñ¼M/†~þÏt¿‡>´›Å–ºT¼¦H#MJw¸—ÃÞ¸ó5½I ]3ìÖeŽòõ®>»ºÿ‚¬~Õöü>-ÓþÿÁ<|uãË;‹{í+â·Ä¿Ù‘àø¯¤j‡ûZÓÅñ6¦ÿi%ø—R¶¹‹ÃÖ¦¥ìt/žcÂêyS—áx7 àjæ8œ%b2ÌvAŒÄÖJX¬·7§‚§ˆ”ñnµZù„¡8F•{Rö9+T£–ø‰R·ˆYÖgšx³•ºÌ›&ÊqµóŽiÂÜ]”á9ãŠÊ3܆Y„°Ñ«—K’<Ú« V\óÌ2+ü1o|<øê>ë^!¸Ðu½k᦭ã=sCñí[Æz¬wº]åÝ׃u½&/iÚtZ¦›¢kº«WZšÊíÊê¶ìWm}oaÿSþÒ±‚òæ-Gþ=ñbÏíö‘Lém{öI¼*ÓZýªIþÍ+4°yžT„º“_xãÆß~;|lñçíûFxú?ü\ñô6šmÕΟfšg‡´éÉm›áßé‘Cmo§èÚtv–öVvömòf¾½—PÕµGP¸e{˜Äã2\’f™¾':ÀåÔpøìfOÄ\A’QÅbWµ©RžO˜e´ñSæVXœEm4œÚ§Ï(/‡â¸o†x׊êøqÂü˜ðŽkŽ/.Àñ‡dOýšåêQË1Æ ŽÁác9J+ K,]Õ(ÕŒ)W—Ô§ö·øY/ÇïÙ—â7Áߨ ÿdíáÅ #ÇÞ<¿‹ö£ñÇùŒ{áŸøH| à;/^øjmB51YßjÑ|+âÝ";“ ë:~©~Úq¹›A×#°ü¢¯°þ Á@?kÙ÷Á3|5ð‹¼ã?…“;É?ÁŸŽþ²ø©ðªäKuöÙ­âÒ®o4ŸhV·7M4÷~ñ&›¥Ïsus¨]éwZ“CycÂù†]™dY÷ Éã±Y>2Êqy~y›æšÙ¦SšbhcªB9Þa,Ïf†¥[ õ·ZŒ¨¹a=¦•:Ÿ£øŸñOÇƸ,³„2Ž7©fx\Ûƒ8zŽ,Èx‹‡J8\]nÁb0¸W—昑ÂfÙ_V© Ô)æ ‰Åb1Õ«|£èÚ¿ˆuK @Òµ-sZÕn¡±Òô}ÆëSÕ5+Û‡ †Ÿe÷w—S¹ ½¼2K#¨ŒN+ÕþüDø=ðÇÄž!ñƯÙÏþƒÃÏàÍZÃAøoÿ {Å<Ÿµþ‘¥ëßð˜xNÇP¾“˱Óõ]û.ö¦?ü$Ú—çiVÈþ¿¬ÿÁN¿nA§jš?Áß~Âÿ²3kv³Xjž2ý–gÇðOާ³¸SÇ‘«øƒQñ,Ú}ÌЕkÓ.ìomÚ(¥Ü¦Sðþƒ§^i:M¥†¡«Ýë·°ùïu«^¤Q\]Íqs5Ë·“A Fo"ÖÞ<­½¬P¶n?E…þÔÍðØÜ>w–ÿcá«B:ËóÜ_ö”®æëÎx̺–_SÓTU `±µjI{WR¥/vø<çÃ<‹É³âܳ36.¥l^´*䊜aNXh¼ró<&iFOÛÓÆQ̰˜YFS¡õ|5U â!û‹ðËö¢ý5ßø'7ü·ÆZïüÓþO…ÿ†6ÿ…•ðgþwâ‰ÿá|ÂOñÖÿJðoü\K?ÃâO…ÿð«üI >*ÿ‰­çü&ßlþÃÕ~ÏanÒÌ?Ž_´ŸÁ‰Þð÷‡> ÿÁ4¿á—üBž3Òoõï‰ðÙ>+ø×çxAl5{ SAÿ„?ÅšŸc™}¨iZ÷ö¥”çSOøGÿ²íÓÉÕn]8‹ß‹´ÏÙwöšý˜¼!eàÇð÷íAÿ cþ_Ä–Úãk:Gü)OˆiñÃÿð_éš”v:ö…ô—6ºÏö¦âµZˆ!²þʛ̽<-|öAÁ42¬ã>Ì*bsçùÞ•ûN-âl]:øZ|=’`ªK2Ãb3j´1õV? ާ™RÅÔXHahÆk G JémãNˆx ‚²Z1áì±”²Ž#Ë8ƒK2\¹dXšÜIÌpU¸[¡†Åd´±Ùv; ˆÅTË14i×Í)c*Ô§í§Šž#èO‚þü$Ò|yyñŸö<ÿ†ºÕ5_øEÿáÑÿá ¼gð þ_°ÜêÑx—þ&Ó5+}sûrßRÒ®¿ân±ÿfÂ5äXo“Y¹1þ”ø»ö¢ý?áÕÞøâ¿ø%§ü[ßøyŽ‹àŸ þÍÿðÛ¿ä¯Ã:\ëº?Æïø\o‡ÿ¶ÿä öÿµ¿±ÿ„cþf‹«¿µùp×â•w^:ø·ñ Äÿ³7ƒ¿eK /CðóÃßµ‡‡¿j«ÝfòÛ\Ærø“IðßË×Q‡R¸ÐßD}á. Ó¥ðìíª†žOGh‹iÅ<G;Å`1”«çJ´sœ·Œ§GŠx„§ƒÂÁÒ«< šÑÁa1*¦ãW‡Ã×u]Jþ×ÛU«R|x¹Gƒicò|Ó)àǃžAÄl¿7Æp?ã³Éã±ÑU°Ù~eTËÞ?”Ö®ëB­Φ21¡Rž N8:J}¿ÿ>|[Õ¼gðcö ÿ†EÒô¯øJ?á8Ö?á©êË,7'UøañÆ_õ)eH§µ_´_ø7[Ñ.î¢ò.fŒÁs4°0|´e• ü­áOˆßh¿ˆ0k¾%|HøÙ¬hVòɤj~ xÃÇ×ÖeÃuâkS›È2FŽöÎío#"™"m£çO„XèbÖ±Mr'þÓ?´¯Âéö? hïÚán˜öÿe“Føqñ«âoô) ŽæYdм1â/G‘÷^\æg²i™e(ÒTUòÏ‚òÝøÒã[ø™ã-OYñÄZñ—Sñ—е­[Ä^!¿3F²ÝêzÅííÌ÷2¢,r]Hírñ%¥1„¢¼úX<%ejôp¸jUëkZµ*©ÕªìêÔ„Tê;ëy·®§îøÌ×3«à¶ \ÇR,{ÁÒ…Lf"p§„–#–XZq•Ga¥¢èE*N)'$}EW ~QEQEQEQEQEQEQEQEQEQEQEÿÙxerces-c-3.1.1/doc/html/graphics/domprint-3-header.jpg0000644000175000017500000002753411363617746021531 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ#È"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ø^Š(¯õ ÿœp¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠýêøÛâ__ðOßø'ŸìYñ7þ ýðûÁ‹âßÚ'L“^ý¢ÿk=GÀzÄ?ü3Õï¼;¢kG„¥:î—®i:>‘q©ê^-ð¥£êz|š†§àxô£h¾&ñ|—w_-ÄÜK,†y.‚§ŽÌ¸ƒ2yf[GYnW†¾.¤ñ™ƒÃc%B>Ê„¡F&+‰¯:thPœ¤ÜLð××Çõx“‰Î#‘dœ#‘OˆsÜ}<ö¶:ž8¬>ý‡*úî]T¡:þßR¾a‚Ãap´ªÖ«ˆRöTªþ Ñ^íñÇöÆý®hÿøkÂüGð7âö‘ã]'ÅWÿ¢øá?‡î¬-týgKÔ¼7ÿ OÃÿì*ëAÔ"×%Õ®4Éü9 ÝkúN…{%ÔQX¼vÿÿdükðuïÄk¿‹ß³‡Àÿ‡¶^(¾ð`ñ—í ñ«Ã t»ßéšN®jn›g{öý~øÚiºþ<—phÍ`Í{äÅu$¶×©mÛÞx»ë¼IK’ÔWFTè㧘áå)?Ý}^»Á`«×•T›/©Sª¹eî4›<ÌoPÇgô²nÍ1sG‡úÅ E,ž¾KŒ‚ƒQ¯v_ŠÄâ©àãFR‚öï[58Zª”¹”¨¯°?jØ“ã쥥xÅ~3ÔþøëáÇÅ+Y.¾üUøEâøümð÷Å"+XoÌZn²ÖUÛ4Ú}ÄZ…Œói±Yj¶^}Æ“w|–WÆÛ{àŸüûãïí û<ø·öŒøU…jžÒ<[ãÑâ&ѵ?_j¶|3á-{ÆwÇP½Ðô_jq ô¿^Ádmt{Á-ô¶±Íö{y%ºƒì­þ ;ûA_ø«Sð'ˆ>&~Ìÿ|pÞ/ñ‡ƒ¼àŸˆÿbð·~2\ø7_Õü7u­|,ðlÚÇŠukZމ}'†¯õí#ÃsjúoÙõT´‹O¸Šáº³N*áÜ—,k›àð8¨áiãž½G¿T«SJˆÁEÊT¹ð¸žyE?g jTå§ Iyü=áÏñ^ pÆkœ`'˜×ÊV/AT ³,= "® u£uý–aöp¨ãíªb¨Q£í+T7ùÑàŸø“â/Œü#ðûÁºoöÇ‹üwâ}Á¾Ò>Ùa§ÿjø“Äú­¦‰¡é¿oÕn¬t»·j—Ö¶¿lÔ¯lì-¼ß:òêÞÝ$•:ŒŸþ$~ÏÿGÚ~ÍsäÝÃqoѳŸÃO|ÿ‚…~Î_ þ$ø~ïÂÞ9ðWíeð'FñƒzÐÉ5ì|"ЯZ e³ºò!»·–+›Yg´½±¿±¹µÔtÍFÊyìu-6îÒþÊyína•ý|䙞3€ËóL3…Œç_‡¯ “Œ)ÕöjG•Ú­:5íBµJNp£]ª5e ­DøÌß‚¸· Êð9Öuù¶Y•f3…,;ƒ«F…JµpëFŒå8§‡­ˆÂ5‹ÃQÄ*Uq8KâhB¥ê.Šú“öÄý’ü{û|\о |UñWßx×ÄtÏŠVpü>×5VÖ/ j¾&ñ?„íäºÄ~𞬗 «xOQYž-*m9cšÉSP’æIí­¾[®¼»1ÀæØ,6e–âiã08ºj®E·Nµ6ÚSƒi;6šÕ'¦Ç›ždYÇ f¸Ì>Ëñ9Vm—Õö8Ì.•ðõ9T¹f“”uŒ“N2”Zz0¢¿¡/ø(Ÿíµû^~É_²ÿüÇò¯Æ¯øS?ð¹¿f=WþËïøW ~"k»ø1û9jÿFøáO}ƒìð’xŠø“\ijþÔó5·}†Å ùŸöbÿ‚’üRøÇñÃ?ࣶ??j‚ÿõ+ë6Ö¾xKáÏÄχšíßö~•âÝ _ð :fšš~—w|WK-#Iñ¥‹Iªèzýµå”šv±ùö]ÆÜK™dÕx‹ Â,NSKšÒtpœKR®y:9FcŒËñ5)eØŽÂ`ªUœ°UjÑÃ,ÝJ¤eN ~ÖN+÷ì÷Á.áìÛ+áŒ×ÅÙå¼O›å9eƒ¡šp*†@¥Ä>/KŸàx“3«…¡•þ­_W(^ÉÓ©Zt#G–Rü…¢¿Bþ9þÂzç¿à¢“þÃ~ Ôf¸ÿ„«ÅÞ Ÿáæ¿« ¸™~üCY/ôÿêÉ·kÏøCm¬¼M¥xŠH"¶{ûïê·vv°Á{d쿵ßíå«þÃ5ÿØgþ …àÿ‡ ï>Úiš'ÇOÚ«Æ> ð×ĉ¾/ø‰6Ÿos¬i¶W~%ÒõM%aÒ'¸ŸM¿µ¾Ñîíˆ"Ö´ïi¾ÐtˆçÔ½Z¼mG,“ Ã8%žã³ì©g¸ju±o,Áa2véB8ÜËõ\u|?µ¯Z8j8zV"¥xWŒ©Ó… “_7”ø#šÒŸbxï5§Á/æë ÎqóÁ,ãˆÎ¥ VŽ (À¬vY†ÇB8EOÆÒ JFÖŸkâè×ÓæñÿðLÿ†ú×Áø,‚~ ø™â“Ä¿ |ñÿÀZÜÐ+Go{.ðGâyÓµ«8Ü™SLñ.‡q¥x›Gì¹þÉÖ,¾Õ>tá_ëåøn'§œd«žpßc8–9uÉbð9¾[†¡‰©Ù~hðXzªYÃK‰Xœ²|-IÒ©õzÔêAÉÃÁÜ.i˜ðE~âú\GÁœeÆÙOÕâXäxŒ·1áÌó2Æ`hºÏbqÓ”eõLtqø aój¸LÂÔ>¹†­ÈJ+ôïþ Í£hš÷Çÿ„ßµ—Ãæó~ ~Ýß¼ñ¿Áˆm¢];Æš.¡éŸ¼93[DŠuÑ5¯‡ž!Ô£¹“íãÄ:ÇŠašÞ/°=}¹ÿð†ü3ñPøåãÕu/ˆ>(Ô?f¿‚é Fk¯[|8ñWljš”QɇC£x3áþ¦­ì à]ÙË,"o.æ1¾ ápœøåeõ*Ê8/k,›ë ã˜Ò©*ì¶XŸa;<"Ž*8œB¾Z8JØ`”\ἠͪøÑ1½ ?´Ì!ñ‰ð£Å~xßú·Ž¾øÆ!Óµ}~ëÃÚgÄ9¬¯üCªk7ÓlñªÝÆš‘²°º°°´¶µJÄqŽmW4ɲœ›!Àã±Y· Tây¼Ã=­–SÃÐ¥ˆÀá§„¥*9hñÝL}7 ÔXJRŒ&å(>Tý ¿Á<ކSÇYßñæ#‡²î ã,7V¯–ð”ø‹ë•±”kÕÃãçMñQ_ Eº*J4¨ãªSH´çN2¨¿(¯×Oø,n‡ð×GÖ?`žøំž(ý²þkž=ø‡àߨE£éZW‹<=ᯆ>/‹R:L4ŠãT·ø‡­h÷ׯim=ôÞ¶ºº{½FmFsÏ|Aÿ‚A~Ó |Rý‹õ¿Ù‹Á?µ}¯ƒþ,|M_xÓÄž3Õ<[áÿþÏÚ]¾±ðkÄú]ÇÂÝOÀšþ©Ã++Pñn›§¨øcUñ=åµ­­ý׆Œ~û5~Å?j¿~Ð>ø_}á³ý<%câÿèå߉SÅ(¶ÔôoëV?€´Í¾!ƒY×îâð«eoa©ÞèQM¨Þéñ]:\ÜÍgÝ…âܶx\ïÄ`p9~OœÓÊ^1c^"œzycÂÏž„°8šÕó:4^^ßÙ©Q«,Cöμìß®!Áb87-Ë0¹žkžqoc³Å‘Ë*ž„žUW4y,2xœMÓG•×ÅQÌiTÃÔ®èã(Ë/£= ØÏ¨¯ÑHÿà™_/¼ ã¯xdznj|oðÃÃwž,øðÁ?´|tðN‡¦¯qâè6÷º5Ö’ðÏo}¦/‰åÔÆ¡šMµÆ®c±}¿ø%—ì•ðëö²ý¢t­â·Š¾/Ãï ¼òkÿ 5ÿˆ:Ÿƒ¾&üWMWÁ?/ôÈþiš,pê~&‹Áú¿†ôí{Çíe­hòè¾’;¯6é.š±\kÃxlŸ;Îéæ4ñØ>¡*ÙŒp¯ˆ‡îý­S¤Üž18¬%YNZÜÞÑbΤ8ðqÖ7‰xS…käxŒ£2ã<]<.GS8ŒðX*¯Ûû Uj¸… ®Ëd§,ÇN\~‘Òx9bgJ…OÍ +ìÛŸà/€ÿg4𯄾5þÌ^1Ò5ß‹ß4ü)ø/ñÆOŠþxWÁ(Š-Âô=WJÓµÏøçOÒõ?ì[ÍóQñUÚjžñLwšõäúeÅÌ¥{YFkƒÎòÜk€œç„ÆÒU¨º•*‰]ÆPœ%¬gNq”%g(7(Npqœ¾wŠøW:à¬ÿ1ᮠ¬&i–VT«Â!ZHN1©G‡¯á[^”¡RœÕ¤”:°¥Z)Cãê(¢½çBŠ( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ¾ñý’ÿà£_´Wìƒi?„ü)q |Jø9ªMtÞ$øñ6µ/ê–Ú‹7öºèWñ¤ú—‚õN9.R{›5O]Ïu-爼âY£·X~¯ºt¯ŽÿðOÝkÁ>Òh_ÙKö†ðÇŠ|%áøsQø™ûx¿Á…ÿÄ ¿éði1ë^.øañzê×CÑõíVÖÊ í[ð¥Þ úö·w©jw:~Ÿ$ÈòüY‡Àc2Ï©f¼9ŠâL·Q,N K ^¶QW£‹*ج.%Jn0¯—ʦ37ƧÏVŸé>â3ìÃ0án5Êx'ˆpt\²üNs‹¯€Áf©% VWS°XܺJµ>YOœª8 l#*j¤±*…¿XþØÿ¿e?¿±eçü›öaðv¡ðÏŸt?‡Ÿþ Þ5¤žðç‰gZ׎|¦ˆŠ­ Õ°²¥èlvÁìßÄÌ“œf<;€Í«ð6+žáøo˜pÿf~&aå‡ pÄà~©É²ìÏ [ëýV®S^e£:3¡C3lOÒ_ðPÛ„>ÿ‚#Á;,g‹P|jøS§þÝvGƒþ*X|?ñ»é×Ò~×¶ž%²¶ð/еÝÏGÖ_Wð§—v|­R-uk º}ý ü2øŸãσßðoGüÇ_ |I¨øGÅÐüzÓü-kâ "SmªXèÿuÙGáß‹#°»LMcwá/kšt…£Ã}§Év/l.-¯`‚xþ[ø£ÿý•~4ÿÁ=×öUñ_ì‘ûG|6Ó> |Tƒâo쉥|4×|+â+»?éúŒ.t}CãU׊µ4ÖfÓîüKãŸÉã8ü/á+RÓüBø_JðQÒ´û¸ü³Yý²<¢ÁiØœø âæ«ñƒãïÆOøÿ·z/†4MCÂZ¦x‡àŠo-üct¾)ĺf£ §Â?X´zg…µ«4Õ5ÚKä†òúçMððÜ5žO‡ÞWŽÊsõ—‹xû³ YtçŒÉ1\AG2¯ŽÄG/k-šŽ¤žcO Jžu^ >Æ1‰ú¸Ëƒéx•Âî>Ȱx~ç<NXÏ^g`2(à0Ù"Åf²yË”qK.Åf“xÌES¯‹ª±U*ŸuÿÁïu€¿°ÿüâ€õIlþ!ø#öfµø¦xºâ(o¯ŸÇžøUûNx‡Gññ^¥Å¼íe¬Ø[][YÜE-ªG@ñȦC&?ük§Üêµ§Ä_x›TÔø»Â_|RšÃÀñè\I3ÛO Xh¾Ñtƒ'MÐ4m?I[8mÒÿð@m>ÿJýµ?dÛ RÆóM¾ƒþ¿Ÿem5Ü>oÂŒ³EæÛ\$sGæC$rǽ|R$‹•e'Û|sûMÿÁ6¾~ØÿµOÄï~È_µF¹ñ“áíµûA­ï…¾xËÂ+øñOâ/‚þ)j©kãÏiþ4Ô->#ø6o\Øišÿˆ¼?áÙ–kŽž_ân:µ<—N^åTc†ÀSÂÔ©Í<ÿ>å§Ybq8~J‰Æ4§R<ôé¾Y×ä§uŽM•UÏ<â\]ÅO ƯÒ+‰ç ÓŽÄ`pÑÂG%á‡Rx:ø:ÝJôðÎu(aé8UÅÓæÃá}¬êû)ýYÿ —GÓ?àà¯Ù HÐþ̲x—Eý¼_ã¹ñŽ›ûJëž·¹»Uå/§ðM§„­Ü¸ó$Óì4½ÄÅùöÇð÷†ü[ÿüs𯌣·—Â&øÛûx{ÅQ]ùbÖO ë_¾ éºäw&Uh¾ÎúeÍÒÍæ+Gå–Þ¥r+âßþÕ;ø­ÿÓÿà¡´V‹}¦]\üpøKãUð†Ì:†¡á?… ¼Uá›ûhj—ºeœÚŒðÕ•²ß^hÑêÚäWzÆ­%„úÅÌÖý­¿höžÿ‚þÕŸ´ßßüFðGƒ¼{©ü ><Ò-<5â‘uðÓáG‡~êz”BÖüA¥yO¯øRçSѯ4­~òFÒo4›Û°^ÜIemÍÃð×ÄkÛC k6ͨ^„½ð扬Üöój)£ÙxÃÚGç‡Å‰Ÿ¾!xêÁg¿?þü1ÑüŸsyñ›ÅÚ_ˆüeâÿÁ­ê72ø‡P³Ó-,lô95 RÓ´ïì}"ÜéV?ð›¿>[Íbu‹£€¸nymL‚že—ñM߇rœNRêâ±xZü=B5)á(⥗NãR¾1– _ Ò©V‚T㊅”æÏ?Æ¡Ä|?Æ8ž­áö7„xË–f©C‹ÃqŒêá«UÆÐ†e•Ö¤ðø×&ÅãñÔ±QU¨¬k©R¶ã!^å¼q¯x÷â—Äéþ.üUø©ñKâ¯_–¾³Ô~%øãYñÌš7…¬ï†«o¢h·ž#›PÕ´í.-Z]GVM6-LéɪkzÝúZ-Î¥<†¥}_û~~Ò¿hŸÚ«I¾ý•>^| ø)áÏÚ‰¬ÙÜü*ðgÃuߊVÞ4ñ6¯¨êú}¿Ã{[ðž©gqá?øwK{û§ƒÄRßøzúÊx—MÒle¸ùB¿LÈ«¼NQ¯,¦¦G*´T¥”Ö(TÀK™Þ„ãBÔS_©¥{D.qþ—ñ.+Šâ|7F† á+ÕÄP̲ÿ«ÁàêÂx‹â#jMAÃûø¸þóÞgë·ü?þHWüoþÍâwþ¨oÙf¿-þø7^ø‰ã¿xÂÖÓÞx—ƾ)Ð<) Û[#<ójúþ©k¥éé¡ »íWQ†P ,¡KÓ_ÚöÖÿ‚kþÐ ?ao‡ÿ´GÃø(íÏŒ?c¯‚Qx'LÕ?gü›Ázεâ_ü>ð7µ/|qâ½kTÔmíî>Y^økìö^»ŠÏQkZÒw»ŠÒÃÊðêçS´šÒmkLð—û¹4 Vú8f’Õd’çAÔRÑ¥Š=r.ï­o?3á,v}Ãü-,Ž— ç•óÊXþ#žU¡†Ãeny†}šc°UëæŒU8G¨â¨U®éS­ˆäç…=j©AÿLx›Âyˆœ_ìŸü tžh Ö·^ñuÍ£®bhå>QØ:øzïâ5÷޹gâk(£ÑÇÏŸðL¯‹^ýŒ¿j†Ÿ~.?Œ ñçßxP]ÚŸëš ¾¢é¬xŽÒëPºÔõ»Iî!]KRÄ·Ó‹9³Ï2œë‰åÆ9ì2Œnðï?áL‹.Æ{™æ˜¬Î•\U|EL=õ¡„§:ôpXLÕV&£úÅjÔèBt”§„sNð£$à®Íx£#Ís\ËÆnãN Æå8Š˜¬§‡r®Íò·l]J4§ˆ•<ÃÅÒ °­W¡‡ÁTÆ}_VI~ͱÜ~ÖðBÝÁ°¤º¿ÅÏø'WÄ{ î5[ïÞ#×üf> èÐɉo.-4ï ê5f²‚9íã¸ð¿¬Ìp*Y<_t~Ï:Çßø*üóöÑ&Cû*üøÑñ;ã|0œ¬ÿ¾=þÎßµßi·“ÂV;é|3¥k.§=Ðk‹K]*æÝbµ"H‡ã¯ü¿ö¼ñì©iß¿á^Kã»M_Àþ9ðOŒ>kšÜÞOéÚLjnµ]-nµ+¿ øœi’Új–]ôsÏá½@ϦK}b‹œ“ŽËö ýªu/„ÿ·ÄŸ·gíC¦ø›Yñ‹¾ üXñ·4ŸG ëzôxÛÀ>:ð®¤èPjþ‡¡=Ž“©x®X[[²Ž×CŒ¬1=Õ´vSrg|žÎx_Áa«i·–ì,nü#.‹‰Æ°na¸ñkâÂÖ}+X¤ü¥ø=ñûÃðÞ7ý®¯ü)ãýáæ·ÿ ñ/í=eásB°Ó~!½Ծ1éŸm¬$ѦÖ°ÿá'þÃß§½¬^%—CþÜŠkXüA%¤fþÛã÷†ÿjÏÛëö´ý£¼ áOøSÀ_o> Ùø^×â6…a¡x‚çþçÂOü8Öîš Yñ5γák»ý.}?\¿ó´[í.êíl®îe±·ô— có$áiâµòüúùn3—bêåõc–?&Ÿöm\NQÄCÚQ¥ˆ¨ÕÓštãV2‚¿Šñ ‡ò.ñ¿ÙƸ‹1Åx«“g9vIœÐ¡™aqÙj¥[ÖŽ¼ja±0ÂbªÐœ}¥:ôÛnhΔ§n{öŸý§þ3þÞ_´u¿íñoÂúOÂÿ ø+Âià‚4 ¡u¦|=ðdmtV &H-#¹Õ.þÛw&«©5†=ü¯ki™¤èº6‘§Eúkÿ]ë^4ÿ‚†|ø[¯x‹_¹øm ~Çí| º¥Ü^“ÅÿÆÿ‰º·©Í¦Å*Bnµk øJFuk¸|1¤[Jío¿!«ìoø)ïíà/Û“öñÐ>2|*ð_Å/ ø+Áÿ²¿‡>^]üKðæ¢É©x§Mø¥ã?ÜM¢ÏáÏx·I¼Òÿ²|s§Z¤’ê–ºö¦›­ÀúdvÖp^]úØ®§â¿U•ªy&A•ñvR§*8 ˜ÚY$0js›•OkŠö8µídçR¬•iUœ¥9J_!x­Žâ.ñïÄõ,7ñ«”ááVT+â0™6/‰ž1`o&ÚÀṴuZSR£SJxhS8FÓºF‹£è_ðmŸüÏDÒôý"Ñ¿j‡3½¶›goe “·Ä?Ø®&žHíãdã†(Þg +¤Q«1 {/üÏÅÞ%øûÿÁcÓ}wowñà„iÒO)y>Ácm$vvöªË HŒÏžY]þ^ÿ‚ÝÜ^þÙÿ²<÷R¼Ò­¿ÆûPò1fXü!øÃckO;aµ·†‘]ÿ‚H~Øÿ¿`Ÿ^üZøÁá/‰ž$Ò.f›Ÿ§‡~h:±ãⵆÞ%XHñGŠ<jZø;S±h†¤×ÃTžÂÔY˜å¸ž×äø'OÆÿþÈÞ9øñ®/ Í{¬|6×|Ey¨ø[Uè×Zž‡¯OâøƒK2ÜZË.™uªx_^Ô"Óïå²¹KYîmo­ÔIåIëæ\=›csiáðsPâ> ʲ¬ž´Ü)ÐÅ㣔ñ­(Ô”’‹¥[…YO•EU‹m¤Úù|/ðþ…|ÇæyÅF'ƒ|~ÆçÙí(7ˆÆåÙ3Œ»0§Vzqsxj˜\¾¬°ôpÑtß±…8B/ÙÅÃû@èÚDß¶÷íû­M¥i²ëŸ·§íaoi«Kck&§knßü@­½ûÄn¡…–êåZ(åT"âpT‰dÜW±þØÿ?d?Š¿µÿ~Ì_ j¯ø«ãWÄO‰?¾;¯Æ3áìß -Ζ"¾[˜ÑÂB51U°8ºXjrÌ19Ljb*aêBŒ%šà°ø¼fYÔq‹Ì0˜LV'ŸÖhaëU§ r¨4§-"¥'É–I¦ýÉ8Æz}‰J1–ͤî{~¿¥Üø£^ðÝ•µž…«x#UµÕðÃxm4K™žæãHÂ-£Ÿ ŦËw$—ÏeŒ¶ÇPw¿òÅãÍ}sâ‹|Gg%†¯©Ãqk4:¼ÑÁ¥hÚ{͆—XMgÓ´ûIå‹N‹]Ô †7•‘­†Ÿm(’ GŽÃù³៌X\W e¹oð· ðžY‚Áas˜ðÞiœàs¼ÃÚqTs ø^Àð¶'2Æpíèâ8‚–E”æÙ‡FxÜ4ò ³Ëk{ÆeòiΕzÕç)JŸ¶§NT£j´ÕÝiWP]U'V¥8Ñ|­Uœa5éÚ÷Ã_§ü%ºo‡eñSkš,^¸±æ—=ŒZ—Œn´+c໨ít‹K­GSÓSÔ&“ÄP>•óh÷KáhѾޕ5ïø&æé^ _5÷ƒüOg¢Yêšþ§¤ÜYxˆê~&Yiðév…i>³uò]ÿmj+}o§Þ:éV&M–”þx³_Öþ(èMª_-âø‹â'†¼Y®ÄÖvE©êú íýöž%K{X¾Í§$º…äriVÏNxe…²µŽœöœßÄÿ^Ýiw×µ»]é¾™ân"Ðü?o.¡¯hìï¦ë^#{}.#âÍVØËpPñGöÅÔ‹w|“K"_]¬ü9_ xчâ%ËŒhfX¾Èø7‰ªã³.+Ïa‡Äãsš.]˜á1˜[€ãHgqÂ㳌= .[S­—:>Ûêî­WEFióF4ÝIÂQ“­û¹¨bðÒn*NrúW…6Üýºïáoƒµ­oÅ:õî¡£è~¿ñ¯<7á¡|à¥Ðô¯ {k?\è~!›íþ,¶½’â_FðÄ6×rOm<š¤s]XÅsäóøOöÿ ,ü[m§®ê·s›-V÷OñFgaàVM_R‹OÒµïK _kúŒZÎ…¥KN×`Öô-îoZÀ ®´›ˆ/9k?ø‚ËI¾ÑºUö¨EäMoÃ~ñ Õ¤Ú´1Ûê7Z>£¯i:Ž£ Þݤ0<·Ú%ÞŸyö‹{{¥nmáš6ê>2×µ=ÏÓɥÛhöFÉ…®‘áßè2_M§[Micw­ÞhšVŸ}âëh.n–+ýzçR½W»»—Ï3]\I/Ðpï‡~0dõòÌ&?rìÓ$Êø§…êQ„s~%ÀW¯Áœ7†Î0ŽÃa¨§ˆÎqø|nMõÊL×-É3o à±Ùí âžcÄ ß*ؼE9G 8Té¿gFIb+:ræ‹“Òœ%œ®PHF´¡MÓä¥(rÔQEGž@QEQEçŸA?|[úŸý(‚ŠwÅoù'^.ÿ°SéE½ÿÙxerces-c-3.1.1/doc/html/graphics/sax2count-3-header.jpg0000644000175000017500000003132411363617747021614 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ#È"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ø^Š(¯õ ÿœp¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢¿m¿`?Ià/Ø+öËý³> |ð×í û`ü%Ôí|;ð›À#ÐGŒ„tAiàûÝ_Çš'„ÐI>¥­Á¤x‡Åúõ¤6°6¯¬/ù<7£OÕõH/??¼Wÿ%ÿ‚ˆüSðG|#ñÏâ/ÀŸ‹¶Þ6ð·ˆ<5ý‡ãÿÙ«ážÿI¯i7šZjžñGƒtÏëúW‰.SÁe°Êñ¾ß 8˜¨WÅc0ÄÕ§Z9ãJUÛâdY_pÏqw«Øž3ËñÙ— eønÄgxô0xºø/e™fô3\-L&Uè)W§†Êó(`¨b0ÒÄÕ…z¿W_%Q^»û=üñïÇýjçÂÚ>·ðßÃz‡†ü'Œüqâ¿øãDøwðÿú6Ÿ}¡èš®±uâÝÛ"X®¹â 2ÖÖμÕ^+µ›ìµäð}Oñþ ÇñgÁŸ|OûAxâÇìÕûG|-ð-ÒÚx÷ijoÆ _‰Ñø)÷Z,ͯíÑ´xTÙ}ºÎ]BßM¸Ôo4û+…Ô¯-aÓ#žò/sĹ]Ž¡–ã³\&‰©B*ªr7[ÔpÔg6½•*¸‰4¨S«8N³”U8ÉÉ_à²ÏøÏ:ʱùæOùži”e´±UñXüUèÇ æúæ*œ«×ÂácO^)ÓÃÂ3•iSPŸ/çÝõìwûüLý¶þ&k¿ ¾k¾ðÿˆ|?àMOâ åçÄOÄV‹.‹¥xƒÃ¸µµ¸ðç†øÃá¼]ðÇâ&ã_ë·¾ñ6,Ö÷-cªX8YQ.­%žÒîÚhÚ+«+ÛIæ´¾²žÞòÖimçŠFìÁgù.cŽÅe¸ Ó‹Ç`¡í18j¡R­:j¬¨J¢Qv© uã*gMÎ4k§B«…UÈy¹¯ñfG”à3Üã‡ó\·(Ìêº,~/ R޵a T(ÊRJTkVÂÔ†/J¼iO…’ÄáãR‡ï&ŠýRø‰ÿˆý¢þxæO üJø™û4ø ¶¾Ð|O¨ühñÏÅkÏüÓî|I¬x£GÒ¼ Þ%ñ§„ü?¬j>2‘¼%¨ê7ZN‡á½ZÛNÒ®´‹­CP¶}RÚù'ö¡ý‘þ0þÈÞ+Ð|3ñVËAº°ñ†‹ÿ ü*°×§D–- [øçöPÿ‚JZ~Ù_±×Â_üSýªüoñ‚ãÂ^<ø‰¯øRÏÇš§ìïðêË_ñN‡/ˆ´êÞú;M9´O_ë½™·‚Óâñ?‰RûCðÍœvœ0ßx‘´i­ügâ¯ÙÛÀ~ñÑõý+^Áž5øsiái´Ñ¨Ç¥/‡µY®ô;éo|7}©iø†K¯´Åâ¾ ð‡ˆ> x¿ÂÞðžŸ.­âø‹Fð¯‡tÈ2êÞ¿¨ÛéZ]š`‹Û¨bÜFÔ Y° šô²ü^a,%jÙÞ •V¡9¹Ç ™K1Â<<)B£Ä¬]lYR1MÔŒáW IÃÙ9¶ã$×ÄÙA̰X^âj¼c„ÇF4éÕžEˆÈ³xçYÒX*¹\ñ™œfê)Q–¾‰§ˆ”çN*2¥yóTWômûixOà·Ä¿ø'gÆ_ÿ³­ÔÏ¿à‘?<gñ*âÊÞÒi¼W¡]ø^Òóã߉a"NŸ§_jšÏÄojiÃs'ˆ>Þ4v o'â×ì•ûMø×öJøãàï^Ý"°x£ÃÍpaÓükàNHÄ^Ô,‘ù:¬QÜi÷RCpº^·i¥k1A,út(~k‡xʧäÙÎ?-Ê'O3Êñ8œ=,›‹ú¥\RxjXü¢­\CÂÔ–¶_‰Âbcí0ÕV¥iМªû ÔoǾ¿8‡„rî"â*Sáþ'Àà±u¸—*Ë'§–Îìþ#ÃÒÀ¼mæ’È3xš1 }™áiÐÆQXwŠŽ7Q_©·Oì…hÿ~|mý“tkÏ~ÏŸ¶®©mðgMðý„bãŸuÙœø‡à­å•©6šUý¦ªºç†ôéžÐÙØÚxÃB)áö§«]ø'íñ#Oøá­#þ Áûòý¡ü_íAÿ„ñ7íÅñëÞƒö”ýŸþ8xsá¾­ñOÁÞÓ¾^üið·ˆ|OðßÃ÷“jú6™#é÷—Ö6ß¿´Ý-¼ÛXuOjÒè°è6ZÖ­§Å†eÅ9žO˜`!™d4¨ä¹–y†È0¹,Þñ뎭,>_*XQ†YA)ÒÍkâ¨S©â0tœjŸw øW’ñ†G‹Ÿ qÍ<Ã0\7ŒâŠÜ'S‡±8lLYJ5³Lˆ^cU¬×MÎÃãrlZŸû7…«CWñNŠýgý—þ|ý˜¿b¿‹_ðS_ÚƒÀVí<)âH¾~οµ×‰|7㿈×¶ê¾!¶ž«-WMU¹ºˆÛ_ÛÞÙéZ/…|i¬I¡ë:œ~H>o·ÿ‚¼ÁRüL鍨ü_øGðcÁ7¥±ø)àÿÙÃá³à½;Jœ»E£Ý'м=ªx–(„2–øJgœ²Ç1š%?ÖŒÓ1ÌsL äx\ÎŽK‹yva˜æyÄò|$³téÕÄ`° ”ç8ŒUL$kS§‰«ZŽ ò•V©*uvÁøM’e¼1ñ?ˆ|pø:—á^cå¹O‰ó*¹d§:xl~>‡öÖH°´qžÎU°ÐÂK2¬°³¡ˆÄÓÃGF3ø¢Šô/ŒŸ~1~Ð߬~Ïÿfˆ ¾/øløÄ+ai­i—×–š¶…âOê-0Ó¾'ƒJV«J¯R¢º¨£†Ÿ¹¬9¾B¢¿E#ÿ‚e|x¾ð7޼MáÿþÏ1ñ¿Ã Þx³â7À?üfÐ|]ñÓÁ:˜d½Çˆ|# ÛÞèÖwZKÃ=½ö˜¾'—S„i6Öw¹ŽÅöÿà–_²WïÚËö‰Ò´oŠÞ*øp¿¼6óɯü,×þ ê~ø›ñ]5_ü@¿Ó#øQ¦h±Ã©øš/êþӵﵖµ£Ë¢øjHî¼Û¤ºhGŠã^ÃdùÞwO1§ŽÁðý VÌc€µ|D?wíhB&à¤ñ‰Åa*ÊpÂÖæö‹¨Æu!ì`<*ã¬oð§ ×ÈñFeÆxºx\ަqà°U_·öªÕq \#–ÉNYŽ:¸ü7#¤ðrÄΕ ŸšWØ?·?À_þÎ5èz®•§kž ñΟ¥êØ·šæ£â«´Õ<'â˜ï5ëÉôË‹™Jö²Œ×å¸<×9Ï ¤«Qu!*U»Œ¡8KXΜã(JÎPn.Pœàã9|ïð®uÁYþcÃ\A…XLÓ,¬©W„*BµœcRŽ#^ ¶½)B¥9«I):uaJ´*R‡ÇÔQEz'Î…Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@ýû;~Ô?¿e?Â}ð3Ç^ÖgŽ mgNžÞ=[¾*Ó­åiSIñg†îȱÖl3$뙵ÕôÏ´Ïu êÚ>¤ÑßÅûEà_øg¿ø,Ç„þ(i7_4Ùëööðoþ Úø»áäª~|b‚ÆæÏKžëY¶›È¼ouÝGDÓ5‹A}âo .¹£^hž;ñ¦Ÿe®é©ù!ðGãìÁáê_iÙ—Ä¿´û¿]x“Mø­ðwÆö¾ øáá MCGÒtËÝÂÃÄ’GàOèPË¢A¨i:‰®t‘¤ê®¿{k}q& -WÔâÿ‚ŒþÏß³?ß‹~ÿ‚oþÍ?µ=‡ÆÿŒ~Ô>^~Пµç€4½Oáß…µr§P> Ñþ\]xfêö+ˆíõ; ››‹DMcLÑõ IuË}:)ÿ!ãL³ÇËpîu—q¦¶–UÅ9à°ùv# ô\Þoˆ¥ÿmÊáAT…|»1ÁÔžWO‡’œ*OúÃÁœ]<>KO+âÎ2à|óÂ\t1µø›‚³Êت™ÞKŽ©†¯UÈp˜¼ù>sSèÔÃgyNc ¥ÆrÄc1pÄR«NˆþÇ_²'Œ¿omO]Ðü©x[Eø}¤x:ãž"øãQ›Fðwƒ¼sŽÌúÍÌ1½Ø½¹ŠF+}>%…×ìÍõæ™§iÚ†£gúíû#|.ýþÿÁ>ÿೞý—j~Ó–¿±ÿŒÄË|"ñWÃÏ xT²ø%ûG¯†î4ÿë—Wz7Ä„ñ,‘k‚ cÓȚrx^odeÕ´ý¿˜¿ðM¯Ú‹Àß±—Ãÿþ6|=ñÅŸ¿´wÂMCá§ÅÝÀ7öwŽ~É}cã; ³á9µKAÓ®VëJøâÝÚÝëž•žóMÔâÕìåÓM­×²þÉß··ì'û9x_ö„ý™üû ~Övß²‡ÇŸƒÞ-øuñgÇ4×þOûIøÑï´xwJNÑluü3Óí“Añ—Œ¬"Gš}Mu]^ n÷ĺœ6–z$~_ˆ^5ÎkçyuiW)ÂÔáŒ~M†Ë0Ù4ðy¥,?/̳yfXÌl¥™Ã†¯†­K€Ëja%UÓÂίÖ0õ±<¿qà^#¡“gðÏòç›K6ã\«;Æg¹Öy€¯’RÇ`󌟆qvK‚• —‚ÌòÌF y†cœaq´èUÅc¡‡­…Ç`°8z¾íÿß]O}ûLk×·R¼÷WŸ±æ©us4‡t“Oqãÿ’Í+±ä¼’;;ìI¯?à‡Þ$ñwÆOø)ÇÁÚâωõ_|Tø›¯~Кîµâ]rwžx$¿øOñ…¯­¬!ÏÙìmf¼ ­œpZXX='O·µÓì¡‚´ÿà–¶÷ÀŸØƒãoÄßßÚçá$? |uð·áß…NàÍkã-Î|â/\øŽÆçÄ^ðÕö©uá_5–±u¢Íioqâ¹LV’º\‚æ›ÿà“Ÿ¼7û!ühøñ«â¯‡¼g?‡¾ÿÂÓþÞÐ|9¤ØIâöÿ„³ÂŸü'¥ýKñ¯á›Û}âm:öãíš­–4Á=Å¿Úf[\vç?™cq¾,ã)åU§<ó€rü·#©:Tý¶+òŒþž'BNMÆ¢ÄVÀBµ>hÅÕtr䌣ä䟮_ùÚ-ö—uv¶Ww2ØÛú¹.IŽÁq_ â–x| Ãjù=z‘„aGyŽEVž Æ-(ÔöXjóŒTyTiJÍhŸ™Çœ]”æ¼ãŽUS;Âc3,OŠùu”àÝxÔ©[*KK˜`â½ÉÓž#|MZmÕ«V½JÕ¹¥:“¡Ÿðqˆ¼ñüsà×€õí_Y¾ð6‡ûxÆ~}RðxoûYøíñGKÖ5ÒD¿dµ·‡<.º¬ÑÇÚ’x_@·¾’{]:ÇíÁ©CmÿZÿ‚Zø‡SX¢ñžŸûJk ü;ˆ¶÷0ü,¼oÞ›J²¶!JèVšw…>yD¢Ò%Òô‰UcµÇÖ?ðZˆŸ±.‰ûx'õ7Àßþ%ñŸìwàïè_¿føZ¿†.þ6|YÓï>ëßþ&ÜÁà]cC³Õt¨õÝ']ѯ4ÛK®øŠÊæMbÔèÑi?‰_¶Ÿí}uûnxßà'ƒþü#ñÀ?ÙöKðÕÆ‰ðsáçŒnVOkºåìZ|7Þ.ñzÃ=Ì2ë7 ¤iB nue°[}Ráu«íGÄšœÕð¼…Çg\7áN ”cptr bÏq¹Åháiàêa¡—æØHáðs£‰©^½LǘAÖ¦éS•*t+O·IUý‡Åœn]Ã\sã–uŸñ>S‹Ësþ ©Âyw Ã^®?ûWŠÉñό˪ѧGðØ|¯Øá1*uªb'‹¡ ,¥G‰žôþ ÿ$+þ7ÿfÇñ;ÿT7ì³^ßûrê?°G…aø%×ÂÚ“Aý¸5ø—áTÿ¼1£þÆöî¼7âßÉ x;Uø‘ÄØþ$ÝCy©hšïŒ¯îtë}LøƒZ“S½šf·ßœðP?ÚÿÀ_´÷†ÿà˜ ¾x/â–©þÈŸ¼iàŸ‰þ&ñO‡4kOêÖ½ðÇá/ƒì¿áÖtOk÷vëª|,ÖåŸþ;ÃWbÏVðä‘ZMq}wk§zŸÃ¯Û7à^¹û2h?²ßí±ð‹â¿Å?‡_ ê^·øãð¶ïU‡Q‡XÐt‹ßé>ñ/‡5Ö5HÞÇVÕ-lï<ˆômZãIð¬¾îÃð®yO…xBu°y¼*ðÿq>c˜åÙejX|ßêY¦eÄT°¸üµš¥Z¶–aC¨s{JØ*ø…AûwKæ+ø•Â|GÍýŽcø˜ñ_‚ü‘dYÆnêTÈ!Ÿdë/ÅË(Íñ4#íòì67–ÔÂÏhÇÃàªÖµ Ö‡ž~×¶¿ìñöCý“ÿdoÙà§íá†ýŸþ:ßø†ËÅ´/Ã߇-¤_ > Åñ"ïÇú$º·ÃOêVfy|_âÿ ê––¿ð‡éZdz_‡Õæ¦5+ŸQøÓƺ÷|ᇿ|GñSâ•×Âÿ†+ÿ„ßÁÿ Ž5™þiž)w׋­ÛøþkßYj‹6±âº–—c§ê!|Oâ\]îÖ¯ž_ZøÏñ“ö;Öü?£x?öSýœÿk½;^›ÆZUþ¹ñgö˜ñ/4»›_Çg«Ùjz —‚<g‹‹½CI×SkûÝRáÿì›1"j—W é_ÿi_€²~óìïðçàäµñÆç[øÁñÍ>x1l5_…·ZÇÅV}"çân…¯ˆw×–öž9øz¶6(Ñ"ðì0ø?PV‹Ãú!»ûì— ‡Éòܺ†"Ï1t±üMˆÄVyÃÂÖÇeõóŒÆb³êëÚÖt¨KÍMÆÏ˜ÖÝBræüwŒó ÷Š8·:ÜIÁœ-šä>Ï‚|7™bêeùî*ú¦ *õiÒ•LdrÚ•kS–&5°UèåïØâ+Ö§MÃå úßöUý¸h¿Ø×]»Õ> x²Ñ4-bæ+Ÿ|9ñuŒÚÿÿ´q¬;õm;Í>öÃRò(cñ†õM^Hà‚ÒmBëJe×ÉöwÃoŸ±t? |3ðÿö–ý—>*êú—…W^~9þ˾4ðö—ñcV°ÔõÍC^²²ñWÃïˆ÷ÞñeΙ&«q¤Ùx†=BÓX¶ÐtíHeäVmq^÷RÂâ2ª¸l~A_‰0™ÆŽ7/ÃÒÂb*FƒŒæ±K‹Äa½·±­ VXiËNsl=9J“qü‹Ãš™®Špx̃ŒpŸ`¡S“ç9–/—á*ã#*pytñØl&2Žë˜j˜„ÿ´áO+ÄœðXº«ë4áSô3â§„?eŸø(_ì‰ûC~Ø_þÙ›öŠý—<3qñãÇÃï\Zê|cá{][ñF­â ¬,ô«I¦½Ðü3âýOIÕmü=áŸÜëš§¢ø›AÕ!Ô4/7…ÿÁ)þéjß?kßx÷àçÃ=àO¯´ß„~?ø÷ã3áçÂý þ$hzž—ðâãÄ^)Õ­ïl›Kðý‹jZÝݽµ†£¨¥íׇ&²³{‰ eùãíùðÛLý—¾(þÆÿðO?Ù×ãŸÃöƒkM+ã¯ÇßÚwPðÌ»â{-ûSUþÚ¶ñ¼/âÙoö;ý†þè>3²ø}ðæ÷XøÁûHx›ÄºFŸ¦Ø|Eøº`ƒDÑ-í—«kv—ú'‡¼7ikáÍãP—I×/,{«ÝÌE“~k€Éx–®G›påfØ,‹;Ρ‚ÉÞuV†g‘p¿ö}:¹œ1“xšóž‰¡ˆË2¼#W‡Ããéüý‚¾,x?öCøSðËö^ý¤¾.øáßÄ/ÛçSÖõ_€šN›i¥Ü꿳%§‰¼¯øSÂn®õK{©¼)âŠZ¥í¿ü#@ÛO¤èöº~•®kï¤Ûë:îÿçÿâ‡ìÓã¿Ù/â§Äo‚Ÿ–{¯ˆþñMìž(ñ,ÑÈ!ñ¨Ô¾Ñ|c£Í)f›Ã~"Ñ.,u= =þm¥ÁÓõm5«]RÎÅ¿þ%~ÐÿüwûLüm»žïâGÄJ{»[ ˆÚÞ/xsrE¥è:}ƒ;--ì-ìí!±F?Ùz]¥†‘Š;i!¯¼?kÛgáÇíû5ü¶ø«ào‹Ïí‰ðŠê‡6ÿøe¦i8ømû,x[à4^ø¡ñoQÓ£ƒÅš¯ŒuŸø§ZÖµÛKmu5éü5²ðÝõ–ƒ¬ÙÁu­¶•i¤|mñkâ—üÇáv¹gû8|)ÿ‚¡ZüTµ‹DƒÁ6ß<û?EðÂb×4¤Öâ×£ð6¢¾$DO eteÒ€]X¼Ùÿk¬°¸¼VqÄ4ñ¼Eq#—æµhpöû9K)Ë ªËO>ÇWgF?Fu+ªòS£•à«{-%‰X¬V#ÚÁðúஜ¼9â^ Çg9ÿCÄùäøƒC:ÄFxjY…nɰ5á Ô°Ø\JŽŽ{湞ûC1«^„²Ì»+ûïö”Ðî~+Áf“áKvÔ,gÿÛ{GÕ>0­¨2®›£jþ.ø¿¥E>¨‘Ù›ãgÃÂír¡;ËYXòä¯Çúûsö@ý¸|eû'Åãï]øÃ?þ|[ҤѾ*ü ñÕÃ[xoŶrÚKa-ÅŽ¥ýŸ¬¦¬\iÓÍ¥Ý^É¢kZ~¡§Èêz=ìÖ:EΙ³â?ŽßðHƒ¨Éâ ÿeÏø)‡‡õ‡‘îÃOk_¼Mð¶9<×"Æ×Ç޽¬xýôÓ¡[›†PPŠŒ–W~œ§ûSƒ±üGƒÄdy¦k–æüA˜ñU™dðÃbµÎ*,V/.Çáªâ¨WÂ×Ãc%UPÄ8Ï_ :w­F¥9Ó>g>§–xÉÂþUÊx§†ò,ÿ‚øKÁ¹ÿñ>>¶U9ÓÉ(ÐÁåÙîMˆŽ‡Ì°˜Ü¾…¯aéÊü&2”¢°ÕéU¥Uüóû2x{ÃÞ.ý¤¿gÏ øº8%ð§‰þ7ü'ð÷‰âº1‹Y|=­xó@Óu¨îLÁ¡>›sr³TÆ#,\ȯtÿ‚Ó.§ñ/þ ÓûEiž>I5¯ üð7À ü3ÐõH¤—F°Ð|OðŸÃ^7Ô¤²±Ÿuœñ7‹õ¿¼¬‘˜êyDyìÑ¢ùƒâÇ}âßÄý#ÄßfÛ?ÙOá‚ü-§è^Ðâñ–«âjúÖ•â ýn߯ž+×ï™oî¼SrÚ¬ñ]j.-Å¥ž—áÍ/LÈÒÚâo¾¾,~Û±oí)¨xWâ¯í¯û:~Ó—_tè^ñ/ÄÙ Xøm.ŸñMð¬÷—Ÿ<ñ ãK}þí=N&Ôüu Ö†òke¾³Ó-´FÓ4†i%áÞ/–G™bpTr,ã)ÅåT^™å8œÃ–bðøÏa d°õý­< ðx§‚ÄâR“N¥iVÁ•rÜ»ƒüIð§ ÅÜ;—q>oœðÖq‘ñ?×±8<‹9Ãe”±øLË+Y¬°±Ä`kØVÄ`)cðØJµÕLM”ð¸Ç5NÇöá}>ø$?üÇâGˆ¯ÄKŒ~,ø¡E*ùS|Õnþ/XØÙE ï¤øv?‡? †´}ŸO±•`±X-µ9RIÿmù@ŸücþÏêÛÿR?Û*¿:¿l/ÚÇÄ_·ÄƒÚ«ï€²§ìµáY<+ð àþ«~oµñqq„7Þ*ñ]Ãbk¯ꉤh¯w4íp–±épÁ 橨jö³}õ–ûa~Í~'ý†<%ûþØ? ÿh¿x[à·Æ{o¿üAû0êžµñ}¿ˆaŸÅ—Ñè¾'±ø†[O:ÞøëÆPß_麈µ ¬|AZèÖzÂd\7‹©–âjUÁø•ŒãVM…–¾++ÊsJ¼A(`¨F5£BµLö¶XŠxz²§¼K£*´é©ÏôÚgÁñ3\q]õ¼€8o ªqN.¥ZY~yÅYdxf4qxüd©J­cèäX¥K„kòÔÀaqjŽ)Ë GØÔø†óþ Ç_ÚsáÁãþGì`2?GÔõ/ø%Ÿ‹¼Kðÿö#ÿ‚ÆxóÁšÍç‡|aàŸÙ\x»Âž ÓcÔ4/øoá'í?¬èZÍ„Œ®±Þiš¥•­í«²:¤ð#`0~Iøõÿ0øIñ/þ EûAþÅ~ ý—þ,|&ÕüoñÀÿ4 GÐ|U¥XxÃ><øCñ#U×~-ø±¼Yoã]OÇzÖ³àˆ3jš´>:qºÖü£éñXhѺè¼ïìÙûcü:ýšÿd?ø(çÂ_xKâgмWûVüºøUðá~è:¹g¦ø‡RðÆ?GyâÁ©ø£AÔ¬ôk}Kâf‡}uq é¾"¾‹H°Öî—N’{[KKþ”ÿƒhü5§Ù~Ó0ÔgOí-WÄ_²»s«j—ãí7×v÷>I$ò—“ì6ÒGgoj¬°”ˆÌñ™å•ßåïø ÝÅïíŸû#Ïu+Í*Ûüoµ#aÂŒ66±äó¶aAÙ@àUßø$‡íðëö ñÕïůŒø™âM"çöi¹ð xwᶃ¡k1!›XømâUôx£ÁÖ¡E¯ƒµ;ˆjM|5Iì-E™Ž[‰í~Aÿ‚tüoñ/ìãŸ_âðÜ׺ÇÃmwÄWš…µQ>u©èzôþ(ðÿˆ4³-Ŭ²é—Z§…õíB->þ[+”µžæÖøÚÝDžTŸA™pömÌ|Y§‡ÁÍCˆø+*ʲzÓp§CŽŽSÄXZ´£RRJ.•lf5e>UV-¶“kâ0¼wÃøNðc™çqž ñûŸg´ Þ#—dPÎ2ìÂXaéÅÍáªarú²ÃÑÃEÓ~Æá¿gí£i~Ûß·îµ6•¦Ë¬Z~ÞŸµ…½¦­-¬š­»|Sñ´÷ﺆ[«•h£•P‹‰ÁR%“q^Çûcüdýþ*üv×üyû1|)ýª¼ â¯_>$üRøî¿tχ³|,´ñ·‰áÐuHïþêþ ×õÍ^-;Ä:½·‹µMz?]4ÿÚÚ®•g¥[Ës¦Ø•÷¼/:³áì™b0x¬"–_†ÃWÂciÆ–&…l-8áªF¤!:³':sŒå”¥ §iY~ã',üHâ|M Ë›åù†:yŽS˜åøÅÀârÌûNXjº:qƒ©RZ…9QÄB´% ®i|áEW¼~`QEQEQEQEQEQEQEQEQEQEQEQEQEQE~µÁe’oø*Ãf‘·ûø5AÂŒøhOŒ§PV'=y¯ÉZ(¯Îü&ÿ“sÂö+‡þªE}*Û~6ñcnïý‹Wÿ`Ñ (¢¿D?BŠ( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ÿÙxerces-c-3.1.1/doc/html/graphics/ext-64-label-2.jpg0000644000175000017500000000634311363617747020546 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ x"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ýø×…ÏLj‘ꚤ.žž Ö..õ;„Ci ¥›Ý³¼fXw—òDH‹ vyF²9XÛÏþÇ¢ø¿Ç> @$¼ðÝߊmZù¯mc‰®|=¥j¬ú¼óÙ´·F’iV7“˜&™‘c!'ta^Çãïü–oˆßö3^ÿ(ëÏ|9â-[ÂzÅ®½¡Ím§f—‘@÷ºf™¬Z˜¯ì®tëÈ®4ÍfÏPÓ.âžÊîâŽîÎtMè«*#¯ÎqŽ8ÍxGŠr¾¯‡Âçù—g˜ ŠÄ×ÁapùÆ3,ÅaòÊøœf ŽÄá0ôqµ(T­‰ÃౕèSŒªÑÂâ*B4g¶téâ(Nªr¥ Ô§QF*Rtã8¹¨ÆRŒdÜSJ.QMè䓺õ¨u–øàÿÉ­øoÁ¶é÷^_ êþð†|5Ÿˆu¯[Y§‡î%ð¶‘£CªX^ølxŠüǪE}u º76înKlÎtuÖ¾&|?_ øz?x'ÃÞ4†=bOé©â¸õ¯ G.¡xŽëÅ-l|Aψ|^ºMæˆÚ¨Ð!ƒZ“N³ÓŽØŸñ#øÇÅRXkZ¬3Ás-½Æ¥%®¢iWºåÕ¨amyâ]KIÓluÞÀ]Þ+Ï]jwI,’L³ dwoÂÿâñG´£C‡ál$Åæ™Žcƒ*â ÷êbªÐàL :àªqáÜ4ΰô8gˆ3Œ$ë`xN†UžñNeSþ–?5Äã}/¯ÐÕÉ׫R0„Z”©sââž&S¥ˆ~ÚR…&ëR§$¥]Ô¥B ÷nÔ~›°ð/„_Æ 5 CAÒãðÿ…m<9áOY-²Eâ?iÚG‡<[­I«Â¨©<1ø¯Vº¿mDyZŽƒàÉô«§ø_˜<£Cãè$àXZx“Ķv÷‹§C+ÛåkÕÓ­•DAííaclc.‘B©â ÛKÓ­Ò+h¡ˆy6V¤’”3ÝÍæÞ^K=åÅÅÄ¿W”ðŸ帎 †Kþ¤ðOåøŒÇ2ãNË0ù×csìÆt§—aœ8«S…*æ3Ì05å™f™¾wVÍcŸ`0ëÏ:¤ë·…Jøy¬G´úÎ&¬£aªÍÓ¡PMNW •u .HS¥UCÙNI*nÇ«Z|ÔåðÿЧÕ<—ͬè–Ú4ð´þCk6™.‘­êZù½Žo ˆõ«9ÃQÚh†k}T%ý÷Ÿ¦»Dž_%ðÃI²×>"x+LÕ'H¸ñ.ú×Ú#2Àº­äWšÜ“Ä#—̆-*ÞòIPÆÊÈŒ¬6“\³ëŒš=®€÷Òlõ+ýbÞÐEmÔu+]:ÊîâIÒ%¹Ÿu¶•e1O4°Zlí"‚KÛ׸µáÏjÞÖ-uíkh5;4¼Š½Ó4ÍbÔÅes§^Eq¦k6z†™wöWw4wvs oEYQuŸxˆáO09ðî;ˆx“ Ät¸"yf_›pî_òÄdõ²œ†ž/ˆÌ8ŸJ¥ k­„ËjË/̱9´ðÔsZSÂÓ‚UpJ¾P£Z¨Ê‹ÄóÎiÕµER«ŒT(Æös„¦”à©©85&þŒ×m´Íet«˜ü |l¼3ñOƧÅþðVá þÂÇI›Oðφ¤Ðõx~+çÓ|]§ý–ûQ×<#m¨5¶·éw“Ë­ôœ–³ðçÂÚoˆ´í-üQ/‹|;£|;žâæò÷H] oø°xzÛVð´:zi‘ßiu©j÷Vz´Ú´Å”úmÎ9I5†ó}Oâ‹5g½k½FÚ8ïô%ðÌ–zv¢húm¶‚5{my´Í+KÒtÛ;E·—VµŽöàèö¶2]<—‘ÜI,7÷ÑÜT¾ñ§‰õ5鮵Y_k–>#Öe†ÞÎÒKcMmM¬.!{KxÂFÕïš 8ÚiÊÍj~É?O6¿šðׄž'pü2šx*ÊòŒWVœ¡”幞2X*ôiø…–ñLicÞ†²J8Ê?êþgƹ l»€É2YÎy=LW”ÐÅâiå]•±ø*¼ît'RSM9ÎæOê“¡xÞµGía†ª§)T©oh§R£IÏ×l|+àËk/‰zF—aªê¾'ðí½ŸƒìµRçK¿Ð5Ÿë>4Ñt·èºJ趺Ž,vPësiM.©®]ÜAþßÙòG$'i¾ü;¼ñ-½–¥u≿á&ø…ãßh³hÏá}ÊÃÁÞ}2ÇOñ~¡om 9çŽHõ™õ /N³Ó¬õXìÝÓXÑç‚yo|ªçâﮞm[OƒÉñâ¶K øOL†ïÄz ·“éºÆ§›¡Úë^‰¯îe½“TŽðjÎamX^›KO#‹Æ~&‚M2hõGèÚN»¢i²5µ“½¾ŸâVÖ›[ÞÙš{ËÖñªÃT¸2ê–¦ksgyntí;윴ü+ñžºÌ±UxÓ ”æ8¸æu)ÖÁqv}›bg‰Çø„Ê⥛c8S.Äeùur\·‰©eYfŽ—æ¹ÆB0YnY:úö]H¬4ªB. ©áéB6Ž*SþkÍJo Rt]IÉÎR§NMÞS™gÅžðeׯÃâ‰þÓ~#ðÖ¯ý—­ÙjZ6¥ý›¬é¶WŸ`Õôëý2óÉû=ý•Õ¤’Á'ú‡ÅÜAS…ò ^uK Æ®•á©àêbå§V¦i›`r¨9⣅ÆÊ”)K«IÇ ZR7åÍðÂÞ‡‰s“ðmLÚY%<Ò†wˆ©šC/Y¤ðÐɲ Ó=’†Xì²8‰b#–<4SÇaÕ7YUrš§ìçøOE~ÿÁ3?j/ŒŸðP?þÐþÿ‚xƒÀ?>øöoÔ>.]ü_×~øÀ^ ø-©Çý™"%Ÿ‰ü ¤øF·xzÿľ#Óõ/ì‹ rÚoO=½ëÙMj?ÿbÏ„ž4ý¶¼}ð¿á_€.¼-á¿|M·ñIÓî|_}«Øx^ÊçÁ¾ñ7‰5¶^èÚ/ˆµha¸³ð¦£š Ò/]î§²†å¡…漇ÏʸºU«ñ6?ÀáòLG að˜Üξ1–i•¼/_E,lð9mu*0ÕgŠ¡_F¥(ºU#í)Ö„ŸÔqƒõ2¬'朞Uãl«³œ_ ey%^Î?Ö<:sË*åUñù)Ê›¥‚ÆásF½ZXŠsteIsùÍí6|I¨~Ó7_²¥‡ˆ|}ñÇöŸöl½ÖlõkûŸYüB¶ñúü8¹–ëQ‡H}rßD·×.§’_¦¹”ë<šݰ±>ë¦| ø¯û0ÁD>þÎö>!øKâÚá—Ç_Ùßû.UÕ¼Iªü3ƒÆ~3¾ðŽ>ÂRðéñ¬~‘¼A£/ˆ¾Ï¢Xj¯i¬4?µí.æ÷+çÙm;Ò¥‹ÃUÆO&Äg¸l4ªº_XËpþÊ2Å{_g5OíkЧ:®2pöª^ÎI4|‚¸Š«u±9Ne†Ë°ÜMá<Ï 'Ö_œã¥QÓÀÏíiJ¦.T¨b*Q¢êR…iRTÕxJqoäø7ÄŸ|gá‡Þ Ó¶<_ã¿è ð®‘öË ?ûWÄž'Õm4MMû~«uc¥Øý»T¾µµûf¥{gamæù×—Vöé$©Óüdø7ñ#öø‘â?„<9ÿ—Ä? dÂCáÿí^þÏþÞÐt¿i?ñ6ðΩ­hwkÐõ­6ûýR¹ò>ÓökŸ&î‹x¾ýñlÿ´\Ÿð\Úƒ^ø¨|R·ýª?bÏí-à Þ(xzÂ[„Ïá¿&ÚCã8/5o ÞjÿÛwWÉâDñhgÐÅ„gÿà«ßò—ÛÏþíwÿYáÍ|æYŸ¼Ëˆx{.T00Àç\ WЧ*jbêRŬnQB69:q8c˜Uj«ÀÒ«]Æhû¹Q¦çþeùø‘žÔͳ FqÀ^#e|#J3ÂC„Çå˜ì.2UgËjÆ®3.Î)WŽU©Ã2Æa0²¥‹ÁCëÊts(üK^ëñ_öiøÙð?ÁŸþ üQðWü#øõá‡ñ—Â}_þ? k_ð•øm4¯ km©}ƒÃÚö­ªhXÒüeữ±ø–ËG¿?Ú^Hµ7wñZýA¢ÿÁ2¾9Ü|>ð7Ž|sñöqø#©üU´†÷á?ÃŽ_4?†¿~'Gz±>™„<9¬Ú‹ýQ.-ZÓLÕ5­+POµÛ ÛkC*Š÷ïø-¿†uÿ|0ÿ‚ø7ÅZ]Ö‡â |øËáŸh—Ê©{£ëúÁoÙ‡JÖ4»ÄFuK­?Q´¹´¸UvU– Ì' Wà*ñ? dY&?+ÌiæÙŽsƒÍ}œç[‡†[“ãñ´ê`çN´)5õÜ'ÕëÖtñTm´"é×\Ð|?à~w_‚|Câž+ʸ‹‡gÜ)€â.«_ 8Æ­lÏ F0£^ƒ®l¯êá©GÄÑ•|>:tñXX¼=oÆÊ+ô“þ 9?í}Âø%¼õïÙŸOø)qû?kŸð£´?†3xõ>,x‡Ãq|4ø,óÂχÆÖ“hsëzN†~ÞøW·VvêoãV¿ûFštÇ'áoø'íã_ÙÛá/í1á‹ß‡€¾/x»^ð®Ÿesâ›Ý Xð]·…®>"Ãâ/üHÔüG¡hþð—´xþk×7ºôþ5º)î…Ù½þ¢ÖVþ¾ ‹ò¹äø,ß5ÅeÙ],veÊðòY‚Åa*b°X¼Æ„iÃ,>2«R†[^½Zr¥MaêB¶ž¯²Uj|®yáW`øü=ƒÍx›„áŒŸŠ±T©dõ°9ž.Í0Ù\ç,VWõŒd”hc3\6…L6+±xlF㇩ˆ­ƒÂ|E}¯ñ×öø£ð;á6ñÖüøÕð‡Tñ)ðe÷þüH‡â?‡¼1âó:xoÄ—‹¥ieÔY£xìSQ°‚èÛÚ]^Ás§Ey埳gì¿ñö®ñóü=øA¡Zê…Ž™>½â=wZÔ"Ñ|'àÿZÉW:÷Š5Ë…x´ûå–8ãŽnõÉÇacté"§¥Gˆ²,FY‰Îif¸'•àåZÌl«F%L;Q­KêòJ…ZmÅJ•X§¿ EóÛæq|ÅøÿÂøžÍaÄœ0•rܪ8J•±Yt\ð•ð1¢ªG‡¯7Fu(¯gUJiѪ¡óÝú¯ðÓþ ñëã7Œ5? |#øÓû%|QÐ4]'R»Öþ'|7ø×/þh~ Ó5ÂOë÷Þðž¹âMÇqjÒjzv—­ø_O°¿Ót]~[}Uî4ǵ“òrÃP°Õm"¿Òï¬õ+üÏ"öÂæËI¼©^|«›w’<¹£’)6;l–7°ÊÀOdyåLU£3Ãcêࡆž2• 7S _·ú²¯ F2¥:¿V¯jsJ¤}œ¹£/|IÀ|cÁô08®'áÜÏ%ÃfU±t2üF6‡% m\pÓĬ5XÊP­ pÅáç°“¥V59¨Î¢ŒÜnQE~“Á=uko‚:7íwûnê‚8­ÿdŸÙ³Æ:Ÿƒoe"4‹ã7Å‹[¿‡Ÿ -ÍÂN[¿iàGºs%ÄB%bv›Ï³e’e8¼ÉPúÝZ*.ÚûŒÇc1pY~Û{:ÞËëXÜFíU®Ÿ´çTª5Èó஫Æ\Q”ðå€.ð×µOÚG¾E¶‡Â¾&Õ¼AáË{Dp¶–ze­¯—Âë_9qv72ͰÙ>k“á²ÌV?‡¡Ä¸ ˜ Ú¦m†©€xŠj”q3¯•epØÊu14Z¦¨W£V£†!Ê”¢~“Çþ à¸[!Íø†øº§àxkŠ# ü0Ѽ5®k7>$·Ñtÿ øÅW¶¾#Óµ¿ èðê–Ú_Ä=χÃ×Þ#´†k}KͽKx­./O~É~=øyû#|$ý³¼G⯇0ü/øÑñëáoƒôõÍf?/Šm¯~#Ø,zŽ—á»/ {©¾ø…¬ÓKñN«¨ÏΔFž­5òiÿCOˆ²JØ|*–e†ž4Ìjå9}hÊ\˜¼ÊŒñ”êàé>[ºÐž_ŒŒ“I_S]ÿ6«ÀœaCšåÕx{1†;$Ȩq6k†tS«ƒÈ10ËêPÍj%&¥„© ×/jtÜÚúÔŠ’šËtWÛ_?`??¿gO~Ò_ á×|9àωzW™üý¥­ÃñZñ.¯yðòÎÀxrO ®ƒh>$è׺¦­®xÇD‹LÓ4ßj7© ®Ÿ—{~>ÿ‚y|[ðoÁ|tðïÄ¿ÙÛãG„¾M¦ÃñSNøñKø•â/…ßÚŽ‘ÚÉã;m.Â*„’'œÚ.³­´vâmD©Ò­//­ù§ÅÜ5O<Lë e<Æ9M\<êòΖc5EÓÂÕºJ•JÏF]GV«QQ¥)Õ¼e/ x÷–ÓÎ(p¦s[,­’ψ¨c)aeRŽ#%§ð&§ñòóâ§â +E—EÒ¼Aá\ZÚÜxsÃ,¾}Qï¼Y§K 2éÐÚ5¤7®÷±Í\û7ÃOø&GÇ¿Š6Xé>8ýŸ4/‹7Þ—Åz/ìá⯌Z&—ûBëZ*i‘kPÜGðêÚ×P}k"{mIlü_ªxnîÎÊêÞãT‡OŽMÁãø³†ò¼F+ ˜ç8'O WF½^J˜z8µQЯV6÷(IR©)׺£óV5(·97†üwÄX,c‘ð¶oš`sJØü>_ŠÁájXÌNYì~¹„¡%/Oë•<*ÿhĹIaiÖtê(þuQ_zÿÁ8¬~9i·?Â=/àu¯Ã‹úeçÅ;A²øÛ‹!ð•ýÂ߈¾+³ñd> ÅPÜZè1kðiñià<^#NKð,VðŸõ?ürøÅûk|^øUñ;Åuÿm?ü7ׯ>Þk©ðü_ñfOjšVq£ÜxÊËÂ?Œµ=B[?í½;Xñ}¿†^Éõ%Ô5Pð5K>£O;ÅeU>©> ¡žÔÅýuK5qxÌ<¹ð+îa# #© jÅOÚÍÔ¢°ðö^Ò¦¸~Æbø.—P«‹xº¼g>†QS,©N•|WÔ2üU'…Í>±(UǪØõC–VÁáž“Ââ#Œ¯,SÃÐðª+ô»ÄðKOŽø£â†?þ,~Ì Ó@Õô?é>?ø§ñ|øÀßõýoÃ>ñ@Ò>xnÏÆÞ-›JƒÅÚ.“¬ÞÚø."ËÄ3K£®£5Ì7Ç´À/‰³'Å_üøµ¤[é2ðרælobÔ´­OKÔíÖóIÖômF ‹{¥jv®%·•£‚æ{+û[=FÒòΖñGgéa²¼ß¯[Â*T¥[%Iºô®’©n½×Pržua ñ§9(¾\÷ÃÞ6áŒ|È8c7ÊpXlΦM‰Äã0²§O ™Óö¿ì˜†›tgYP­<,ª¨ÓÆS¥R®uéÅÍxÅ÷oÂÏø'ÏÅψŸ¬~=ø³âÀÙßáF¿}.™à¯þÒ¿ôï„úwµ¥šÜÚøJKý?P&k«y­¬çÔΕk¨Ia=ÔI2Tý¢¿àŸß¿eŸ€^ý¡¾0ë? ´_ |Eø—ÂÏxjÃÅ·ZŸ‹®5ÛØTãR­e8â# KêÕR¥]Ó«(Áö/ ¼Cy3âõ?=Y,r·Ï1– ¤pðʯ‡PÇTr´éѯU ¸G8ÆXÌ<Þ' ØxT«‡h¢¿kfvËþ û*_~Â>9Õ¬-¿i‚:~£ãŸØÏÆ:äöð·‰4&ÈÍâ‚®«w‰¢²›K·6ús¥Ã%Ž‹“¬5ŒÖ? –ÇT¾#Ïeø:9\±Ye,]yÆ&g¹V_Vð–kõuB£Åá°•])c¡”g‡ÁºØÈº«*RçàN‡æØŽ¡›QËsìNS†0x¬:–ˆsª)ðü±ïF9f31ÃÇ ªµJª8¼Î8\¶¢Ã¼d14ÿ¨¯½?g_…¾ ø7៉?¶7ícá¹ì~þÎ^ ½ðÆðÇÄöÒéš—ÆOÚ;Iyÿ²þ\i×Q‰ÓKð†£hÚÇÅX¥‚y,ôûá÷Óõ õ+»H>4ƒÆk/‹:÷ÄOÿmøßâßÇoÇ}¢øCKÒÖçR‚]^X¬|=á½.ÆÎ¾’aj,¬¬t‘$–º=„:E…½•µ‘„i†Îèã1øì>êeùm¼flñŽ8ÙFþ§Er¸VX|$ãˆÆâ}´)a¥WB ½W‹X-1¼ ˜eœ9‚Î3*“Áf¹¦bð™_ ÕÁÖþÒÅa!R¦X¹ÅKÚЭ[N¥XiT¯G ŠÅb*àá[%†uËQ_¤×ßðKOÚßMñŽ—ãoÙ×ÅŸ|¡]øÅ¿³/ƒ~6økÄß´_‡4:çÔ§Ô~éqÍjóX$¨²ÙXk÷··žŸoyyqko?Éß³Oìûã?Ú£ãg‚¾ü=Ôü1£ø¿Çð‘ÿdj^2½Õtÿ ÛÿÂ1á-{ÆWÿÚ7š&‹âN;KðõìeÑï<Ëùmb›ìöï-Ô†âžÆ`ó~8Àâ0yE â³*ô«)à …… â~µU%ÍõiÐ¥RµDc*5éÓœ¨N¢„­†?ÃÎ7Êó,‹'̸c7Àæ\MŠ¥Èp˜œ,¨ÔÌñÕ±Tp+†”Ú¦ñ”ñ˜ŠlNs†# Zµ8b©Ñ”⟅Q_}üCÿ‚vüWø9á?Š2ø×ñSöoø-¥ü:¹øm¡Y|Uø¿cà¿|h? oõý+Q›àÇ…µ]&?øš/ê~¾²ðöæ›áy¼O$Ú|¶ñAk{Åyçìáû|^ý¦<â/ŠžÔ¾ü=ø%á#xã¯Æ?iþøI¦\O´ñÛ\Å|÷ò}žòÒâyt» ëK(îì~ßsjú†ž—YÇ‹xjx*ùŒs¬°j´°õqj²öX®ÔiaéÔ·-|EI¿eJ¾Úôy=ªp[ÔðÏéfX,ž§çpÍ3Xšø\°U&X|yñXš´¾,.…+b*bq^Æ„p®8¯iõiF«ùŠúãïìé«|ÿ„.úoŠß>1øWâñ<~ñ×ìÿñgÃÿü%ªÝx4èÄÖ&ïLš•…Þ’¾(Ð^hõ-*Ñ%]E>Ë$í ÒÁê?¿a‹|¦üZñ¾þÏ? ¼Cs¥x;â'í-ñKIøKá¿j¶NÑ]Øx3íöÚŽ¯®´ öS{o¥.•%Ø–Ö BYíoc¶Ú§ä4²Ú9½L× »RTpø™TiW¯ Õ§<=vöÕ1 Ñ©‡…7Z›£[žöSåæ§áÿUâ O Óá¬Ú\Aƒ¥ F3,Xi*Ø\5XP^"£j…hâ°®Ž2¥Xá«}k ©U›¯IOâŠ+ÚÿhÙóâìËñ÷áÅ­ ÄpiÖîu§ßÛjú‰|5«ùÇHñ?†u«&{]_BÔþÍr–÷q’+›[Ë Ø-5+ËH>¬Ó¿à™ÿl< àÿüdøÉû*þË–ßôè5oøoö™øé£ü-ñwŒ,nÒ9,äÒ4k3TT¸¹IíÓõ+½?R¶{Ëh¯ìí&i#Žq\QÃØ,‰Î00ÂfiK.­ñª±ñö~ÕË >ÒxˆB—ï*N”eP÷ª8ÇR²Ïxã8ͳL.álç›drtóœÁU¡W*©í}„iæ/©SÁÕ©]:4iâ'Nuê' 1©-Ί+Ñ>-|0ñÁˆ¾$ø_âû¯ Þx“Âÿز_\øKÄÚ7‹ü?weâOi>,ðþ¥¥kú Ýæ›c«øw\ÒµKY"˜JÞ,7PÛÝÅ=¼^w^ÆCB†+ V|6&_Æe˜Ü^]˜ákàqø M|7Š¥:œ.+ RTq|EŠ3¥ZXJJsŠ”'“AEkøBÕ|S¯hžЭÿ[ñ¯¦èZ5ŒED—º®¯{Ÿ§ÚF\ª‡¹»¸†,ÁC8,@ɯØÛãׇÿà’Ú×ÃØÏö1øoð»Æ¶-ÿ€ô_ˆ¿j‰ž±ñߥÖüDZѼ¦êðˆeXW·³–ÚM2Ã×>7š_‰üQ­ßjšwÏgÜG,«–e ³ló8Xª˜< ÄC‡¥„Á*OÌ1²¥ˆxL%W¡J2§†Äׯ^µ:T0õ;‡èžxk[pœAžcóœ7 p§ RÂÏ:Ï1g¨±ïnðx »õŒ1¸ÚÔ°˜¬LÕ|v ‡ÃaªT¯Š§9áéWüa¢¾â³ÿ‚¨ÿÁGõ)ñgâ¯À/Ú'J‘7‚þ5~ÊŸ u/ Iná|Ý=ßÁZo‚5y,¤(…ór³¹E̪ øAMv=&Ñ;ÂVÇå8е,~˜crªõðóÕN4s»„¨´”jЕãÊá)Q^Óyð7ÄšìÍkûUßø‡Á–?/¿h?fË-óV¿¶ñçÄ+Ÿ7Ä{imté´„Ðî4K Ö "ñë’ê¨ÐG¡5¢›àñ¼6Ø}f´(ýgK Cµíq5¹½•Ù;Î|²åNËG¨òü«1ÍeІ[ƒ¯Œž ˆÌ±q¡yPÀá^'8§gEN.m&Òw³Ôñj(¢º<+÷cþ ;ã/øW_±Çüëâü"¾ ñßü Ÿ³=—Œ¿áø¡ÿÂOð÷Æ_ðŒ|-ý¦õ¿øE|y᯵XÿÂCàÏý‡û#ÅÛlÿµ´KËëµ[ý£ÍOÂzý"ý‰lÙãökø ûp|%ý¢¼%ñÿÅ^ý«~è? §_ÙßAð>¹ã}7ÃÚ—‡þ*ø#ÆšxñÏŠ46ÏY·Ó~&[_h7¦øŠÆ)l/nµM:H-c´¿ø/rì^mÁyžƒ¯˜W©Œáú¿SÃGš½j^#ÊqxµN<Ðmà BµGiEòÁÙÞÇí¿G<ë,áÿøK4Íó.S‚¥G‰ðÏš§…¡ŠÌ¸C?Ë2õV£Œ£_0Æapñ”âà§V<öÚúöPøñeÿ^øZßðO‹ÿ¼ûÛüRð¾¡âÏ„ú÷ì%¡ð³á®±} øpø°x#âßÁMgûkG×tQ hÓj/-ˆ¤óNŒúeŠè“Ki«GäðH_§Âÿø*Â/…-µ¾¡ð›ÆŸ´gÂí~ÊÒGš+ü?øSñ‡Â¾"²2ÈIšcK¼ÿIq›µe¼Vt$lŸðPø'ì;øëö;ý’?o?Šß´ßxSá¾¹ûYAðÇÃ~ð¤·Ú(ÐN©q?½FãÎitöžßSB·½¼Óîu .ÇXÑSR’îßâïØ·ö‚ø£û8þÑí_ã‹Æ_/~-xÏâßìnn¢µ ½ø™§aãë}m Žþ¹¥kºÑ[Ø-®í´íOPó£·½†ØG7Ça2 Ïñ-Èò|Ã(áüó…ñx\¯œÊ3j 5|:_ø¾ÃUø×ðÃZµcg«ø‹]Цñø3Pøã˜O‡uMQgµÓti£³:Gƒxçö¿ðÅ/ø+ÏÄ/ÛIð_Å-ádÏZé+ðæ¥øçTÑ~øgÀžñöU…·‰µ _\j7žÔ®¼9åø´Z]Øj:,ÚÞ-ÝÄsƒÀg¸ìã ˆŸæX &¬ۇ£W°ñ©[7©ˆÊeõUFzΚ’ÃÔT%VpogVjœ(ª5kõg¹· å\3ÇœœeÃù¦'>ñ£‚¸Î… ·:Ñ£Ãt1ÔcõùU«NŒ«8ªžÓ =*”°ð•8}b®&8Ì> ëÚþVCñßýœçü‹ÿUÇÀêå?l/ èž8ÿƒ‚¾7x/ÄÑC?†ü_ñÇö𿈠¸ Öóhž øCðkIÕ¢\hd°»¸IC¥ f¾zñÏíà/Š_ðWŸˆ_·“࿊ZÂþ6þÉž6µÒ~ËO$ÓÏ3<³M+³<²Êï$ŽÌîÌÌIä?h¯Û¯öø÷ã ö‹ý ÿdÚ£Ä_´ÐðW†<1ãMà_ˆ¼ cðâå׃Rò=çÇ:¦¡{/ÄÏ …Kë«0þÑ¢¾µÐ[OÑäñºÚUµÍ·†ÿÁG¿o~ÜÿÁ84Oüø‰ðÇXý~üPÓþ(ØêžðÞ…ðÏGÖ|sà_† Ž…ðâãÃ1ñkCáÍ+Røk­A§Xx†Û×öZ¡á8“^Ý_YiœY[Çá.· f9zàèf8,ïY`þ§ë…ñ™b­†©CZ¥|>3¡Ub:tå,E§:¾Ú4=Ž'â.Æáþ¼G‡ãÜ“4ÊüDá:U¸+%¡Å,z§O‡Ìñ”1x M°8ü,犥<•\Z•:ò¯žâþÿ‚ÇÿÉ ÿ‚ ÿÙ±üNÿÕ û,ÖÏí•âh¿ðoì3ᯠø›VðÕ—ÄßÛ"/øÁ´™„«øhüFý©¼eo§]%½§‹¼á_E²gPЬYÙ£Wþ6ÿ‚þ×þý§¼7ÿÀøUðûÁ´íOöDø%ãOüOñ7Š|9£Zx/PÖµï†? |eÿž³¢x›_¸»·]Sáf·,ÿðéÞ»z·‡$ŠÒk‹ë»]8ý¨kÿ|@ÿ‚mþÅ_±‡<ñJçâ‡ÂÚ¢/‹¾0ñYðæ7Ã(|-¹ñÊá¡·×l%c©…°±mMà8k9 x‚Äeuý¾Wâncœf*B–/ž?Œ+áñÕ“J›úö­9Æò‹¯JI&®°¯Ç\1ÿ‹s<'åÿWÎ>å8¨×²ÆgxwÃRÄepr\¯y^bªP¬£ÃV IN*QxoM°ð§üuûw'‡í!ÓûSü3¿ÓšÙvËüÿcöã1̲ÞɹÌ÷r»ÜNds,Ž]‰Ñøm{sð×þ-ÿ.ø¯à{–Ó>!x—‾ëz‘dÔ¿á_êÞ&øá{û#-»%Ìv—ZÅŸˆ6Å‹BÝÝ3T•käÏ~×þð¿üöœý‡?á ø¥â‹ÿ¾6ø?ÆÞÕü/áÍVð6•¢è¾&ø âKÏøI¯ÿá&·ñ=Á³øAâ+X¿³|%«ÚýOðËwW·ÓéWì‘û]ø#à¿ÃÏŸ³ßÇÿ†šïÆ?Ù‹öð°Ñ~"x3ÂšŽ•ãmT²†hì;6Îðråð«Œx/6ÎkN¦&|;ŸæðÌp˜JÙ¤£ ˜šTéK1§N½uª8lmjíºp­o®¿àÜ?hÞ ý¬þ#i:5œ›ÿeÏRâÛ6¯yeñCàêGy¨ÈkÉ¢{»ãhÓîi{u¢ÁòÆßÏ¿Àoù%ÿ¸çþ¤šÅS_ðHÚöSÑ~(þÑwß³—ì÷ûBø#áGÂOÙ›Ç~-~ÑŸµ4ž .îôoøKPð÷€ô±àYãðW†<7&…¤ø÷Ä×ÇO’{\xvÆ÷V»·ÃZx›ùhøGð«ÂŠêT”Ö$Œ²øƒV•èÈêÊ{‚ {\Š©Žãïq’Àb²øO.àº1¡T!н>u.jô¨U¯3:Ԫƌê{hÑ©FUaJst¡ò~-e¸ÜŸÀ/ °žwƒÏó qçckcðœF7QbhÃÝÂbñ4¨ËF•ZuiN½K ñ0¯ 4ëÒ„kÕõºû‡öš‘¾Á*?g¯‚¶Ìm | þÒì/#]¬ºu׊L>+Òž^n‘î^hw*üwá êþ2ñ7‡|!áûV¾×¼U®éÑ,“;ï5}sP·ÒôÛUÚº‚%±ˌx¯©à¨~"ѵÏÛâßà—„®…ïïØ?àÃ?Ù§ÃEò[Ëâ›- =KÅú£F¬Éý©>£ªêÚN³pû¯.n´´k©œÇIŸÛ0ϸ[$MºpÅb¸“´°Ù-:t0tçü®Y¾g—âèßY¼¾¯*´'(þiáWü ðÿˆ¼y;FyNG‡áÌ¢£ÒPÎ8޼êûj}g—åX¼³m)Ç:£ÌùªÒŒþ;DHÑcUQ@UDPUT`*¨úuÿoÿ”~Î_÷W¿õCüP¯Ìzûöý üû,~ÖŸ þ<üAÓ;ÂüË“ø™áÞqšb©àòܝޏK2ÌqµÛT°¸eø¬^*´’”•:)T«Q¤ÚŒ[I½Ö¿ÙÛö‡ýœüSûz~ß?g/ÙÀ_³OíŽ~-þÖz'Â_Ú»âGÅüpð¿ÄÚDñ‡ˆtýròëá÷‹í4Ñð‚ëâ,QÞë–¶¾›VÐ4û{­CÂöÐj_èš/ˆ?›÷ð_Ä xãâïÆëýsTøíâOˆ^(Ô¾2Þø”8×GÄ(õ­E]˜Ñƒ£N l½ôŠÜw‡ñ'㎡˜äùFaÂ|S‹Î²ÜW‡Âe™_ðö*¤.«¥„…<n)Ê+ÒÃã劄h×Ï2¯ÝÕ|^SCÚ}Uÿÿ’ÿÿ³cøÿªöY£ö×Áÿà›ÿŒúµ<úþÙDÄr=«Ì>'~Û?²GÆOÙãöLð‡íkð#ö¤ñ÷ÄïØËJñ'„¾Ý~Î~#ø¤øKÆ^×ôOxnMâdž+·Ô¼I¡ZKáÿøVÂK¿ øVÔóC—SƒYÒãÔåÒ›–ýº?à£>ý¬?aÙöjðïÀ/ü*ø…ð×ö¥Ð~#ê&á ¾x?áOƒ#ø¹áèÖZý‡uïϯCá?ˆ^ :­ÿ‰ü7¦Ë¬kGµ}KP­¬º·Êà2n"Ãàø+!©cãþ¯ø‘™æùŽbå…x?¨âq|QˆÂb0¼•ç^¾­ Ú„ªÖ•*J…WR«)Æ—éân ̳Ž&ã\?dn‡}ð<•e2«Vžhóܾ9\Ï¥Z•*x\VYEhÑ ªVxº|øšr‡ž+éïxËÅÿƒt¿à¡:÷ƒõËÿk4o ͨé²ùOáïë²W|a¤ù˜%m|Aáëš ø\;ØjW(²ºâÿÁ0ü/¦x{þ Ëÿ³³·‰n.%ýŽu[ÝOS¸P÷ú¾«ÁOÚšvÕ5 †Ý,×Mr‚x‹9[\$VÂ8£ä?~×þð¿üöœý‡?á ø¥â‹ÿ¾6ø?ÆÞÕü/áÍVð6•¢è¾&ø âKÏøI¯ÿá&·ñ=Á³øAâ+X¿³|%«ÚýOðËwW·ÓéWìÙûcü:ýšÿd?ø(çÂ_xKâgмWûVüºøUðá~è:¹g¦ø‡RðÆ?GyâÁ©ø£AÔ¬ôk}Kâf‡}uq é¾"¾‹H°Öî—N’{[KKþ¼Ï†óz¹ˆÔ©eu§ŒÍ|Eɳ<8{lfW…Çð…iâiJ÷• 0ÁæÕ§J»Œo'Íãp—ðö:ú4û^%ÁÐÊòŸø×$Ïã,KŽâ²N$Á`pXè[÷u«â³<*|ËÙN¥j”Ÿ²R§õïüwqûLë÷×r´×WŸ±æ©ws3’Ï-ÅÇÄ“M+±ä´’;;É$šøÇþC}¬xûþ /ðãu›ÿüGøƒ¯þÑ~#ñеéÞ«6£¬ü0øÑ{­KÌ6ÀÚ¾³6¡¬j n}¦êþDa·Hôà’¶?ïØ'ÇW¿¾0xKâg‰4‹ŸÙ¦çÀ)á߆Ú…¬xÄx†mcá·‰VÒ|jø«áïÏáð´ÿ·´i6x½¿á,ð§Ä écÒüG«øfŶßx›N½¸ûf«e0Oqoö™„×–uÃùž+âízYmZÏ;àL¿-Éj¨A¼n2GQ¯„ÃI»ó¬F#ŸÅÎt[¿*qùîãl‹'á?°«ˆ0˜pÿÒ¾iÄÔ!]Áeù ³Ì·O‹§©<.QNššö0©Mûµ'úÿîžGÿ‚ò|j´,~Í¥þÝßðPÍ>ÂÄv¶k¢|q»[xTp‘,÷sȨ (265òïÂ?ùLÇÄïûL·?õªtÚËýŠÿkÿ|2ÿ‚’|Rý·|[࿊ZÂÿþÕµgÅÝ/Â’øsF´øšžøÛ¡øæßÂpÜèZŸ‰¬<<º¥”Þ3Ó“^ŽßÅ—:u³Yj«¦êz³[@·^=ð{ã÷†ÿá¼&ÛXI£M¬ÿaÿÂOý‡¿O{X¼K.‡ý¹Ö±ø‚KHÍýU 7YÎ+,!Q©áY’B£JÒͨⳙÕÀßšþÞÄQ”“÷mR6“ÖÝ9ÿpÄxg=ÁSÎ2ï¬aþ’²âŠÔ)Ö‹”r^…£O7J ©ájÖËñéÔ§ÌùèTsI´åï_ðYícâüÃö©Ó"Ѧ³¹Ö|-w¥Ï§ë—þv‹}¥Ý]­•Ý̶6þÃÿ=ý¯üûr~Þ:ÆO…^ ø¥áx?öWðçÂ+Ë¿‰~Ñ´Y5/鿼g㻉´Yü9âoé7š_öOŽtëT’]R×QþÔÓu¸LŽÚΠ˸Èr ψðzSËjІIÁ¹¾9jŒp8üNYÃp O+ÒµlNv¹¹ªÓ«'+»¾ž9ã\‡6Ò£þ°`ñÑϳ^̸N‹Äª°Ìrì Lò¾+—){“Xw˜åòš­V„yh¨Óú3þ ù ÙÛ#öEýží‚OðSàßìGá¯øà »û ûKSø‹ãOÝÜ­¼mö+7Að7‚ƒª§Ï „+3Ko0‰ºÛJ(àÿ‚ÿÁ4m¡EŠÞÓöòÓ¬í`A¶+k;=wöƶ³´·Œ|ZÚ[Eµ¥´Aa¶¶Š+x8cD^+âOíÁû||øgð.ãöÙøûQø·ãwìÿà›†^ø‘û.ꤓâ?‚VM:âÇCø¡eã븵 >ŸJ±º›Pðæ›­ßǫɯjöWú,Zäú<ž­ÿ=ø± ø¿þ ÿÆÒ¬¾€ˆ¿µ”ß¾ü–IQðÿ¯ÜülÒ4-OPšîg¿Öõ=_ÂÞ?ðŠuÿÜ'Ÿ®êÞ*¸×/’ÒçWõòô0ù–W„ð¿…³ £‡Çåvž'1ªð’ÂcÝ,×–/:x‰âq0ÆÑ¬ñõê:XY¹RÅ8Wœ!/Ð0ùž[Åyß‹>!d\I–âxW8ðS„Ëø{[±¹.*XþŽ# š`e‡§„Ëñ}l<²Ú<Õ§SJQ«upTÝEø×_\~ÄŸ |sñ ãï…µ¯xÊo…zOÂIÅ߈_ÉÙcðÀžš-W[ñ…Û.xƒJ°Ò/|eªè×R¯†þxbçJÕµ¸€ü# ´š µýôž¹âëÏj>ðã[[$ß·qÇÕÀýC. §ˆÍ&ð3ÄÔ¥N¶.ÂÖ§?­ã±ª§N»§AJž 8T†+WJ¼âjÒþðÿ ”UÏ¡™g™„0Y~AKûnTc‰«…ÅæxœZu0™~¶PÄaÕJüµñغ)bpÙu SËåW7ž[„Å~›ÁOõÿÁL>|)ý¼gx“WøðÇ:øuñŸàMÖŸ§ÙxÃPñ„·Æ}CLÓcÛ}gâû›½0ø«U‚ïX³»KÏ]3 ÐñŠ-lã7V¡Œïæ\ÚããØö§´ýþ Ü[k>3ýžþ!x^†Ÿ~-µ•ýŸŒ>j—V2ýŸKÕ®m´›ýwHŽöòkÕ.m¡Õ-/µ­÷P±´ñíô^wðgö¡°ýžÿj»Ï²Þ•ñ3DðÃßê-à]ㆃg¢øƒÄõ{ym¯¼#âßøG|MâÍ[¶m6óQðÄÚö‘â{ÛEl´ÿÅ…ªÞZXéßœªy¾…ø¯Ãœ :-­”ã*p¦m9(S• |ªËæU¡iLJÅÎ¥8â¥<^[‹…I¹WÃâ¿Æx“Ã|CÇx᪖3 âl· Çü1/e,]/©V¥»²lQ¥ˆ¥ÁB‡×0”Zy~u–QÃC—ˆÀΟÔ_³í‘ÿˆý›i;?ÛÁ ÿà¯>0xóÅ3x—âO‚¿fÙkŸÄ Ä~ñ"ÞOáïxkR6‚ê²ÁŸ¬Y¿HEì—vð=£ßÿ‚BxÓKø‡ÿgÐüiá ø§Ážñ?ÇÚãÄŸ |5ãM%4Oè¿ 8ü]ð¦ã}&=Å6žø‹âûhPëzu½æ¥c©oc©Gi©G¦êš®£owž§} Kq'è¿ÃÛOà®±û2è?²§í­ðsâ_Åï…ß ¼Wsãoƒ^<ø!¬øsNøãð§Q¾‡VƒRÓt _^éžñ6‹w½¬À4ýcUŽ{ F{6Òµ¯°ømtg4ɳ o‡xü>YWO…18LFg’a£F8‰Ñ©âr¯o†£V¥5q9M|Lqðüñœ©ÂªÃ·V0§?Êø÷/ÿˆã^OŽâ:}N4Ês\Ÿƒø—‰«,£-Í#›`³|*øšQ¬°8ÞX^Jù„iÊŪqo’¥Zôÿ.,|àÍ2þÃTÓ<1¢éº†™ç}ŽóO±‚ÆxüûY¬¦ó^Õb7^e´òÆßjó¹0bP®?¢ø,>©ÿÍѾ8~Îß?i¯ÁC¼Aoðoöqð}×Â? ~Ëz/À=SàeçÃíkPÖ´m;Äw.Ó_¾ñ!›Ãk£jWCg¢}—CÑà†Úgû\·?ŠŸ>*þËÞ.Õ<á¯ÙOà_í;à½JŸÅrøãâ'í+¬øˆ°øLª®wG€Ëªa°¹ö9*|.c :¯V•hSú›§WN³ÅÙ9º1©J½rx]žQà¬OˆÜÄ¿ g÷e<9>ͳ¼ËŽálU\£˜âñœ?W8䧉ÊêbåšU©‡ÄU§‡ÂO2ÊâéWf‰ðßÛ×öÔøûR^þÄ^ ý™~þÓ>ðçìåðsÅ¿ü[¯~Ð^ð‡†ïµßhš€#øH«{à_x›G½¿Ò&ð·‹¥,Úw…ímîüKz5¤°ê¶?u|[øÿïÿ‚¯k¿u_Ú¯Åþ*ý˜?lmÁšwÁ/øËQðóø¿öpñ›¶««i ­ÛùcIðª\x‡[Öî´Çñ.¯àH4ɼAs£Ükþ.ŽËCžÇòãÅŸÙ³Æz‡ü;û.þÏŸ´OÃíIoIãoˆŸ´?‹<1yâ­í®”þ„xWÆšΙªA\ͪ·‰|ëçŠ Ùeúþ_Ž¿ðHÝÄv¾'ñ/ì«ÿ µ¹Óîí5þü9ñOÂ_ˆŸ 5¢‘ÇvÚEÿ‰õí[ÿáÒšåŸM»•M† ÖðµÄ3 2qã8{ƒÈ¸{û;-ãŒ;)©žWÉñø–c3œ²¶c‰•|M ωÆUÁâ°™½Y¼pÕiV£ 4)ÒÅTËkB0~Þx2ñЍãñÞKžd|/–q>CŠÏsŒ¯$â,UF¾ ŽÉó¬ –e—ç\;F¤ðªB¶V5¥ˆË°™Î¯Ö¡á?bH¿c¿ÚŒ~Ïß5_ |6±Ö5_^x‹âo„ôMKÄš_ |A¬Ýéð|OÓ<§®¬ëº%ªxžI¼?gkcª_êú­ ZÏ<öð]SÔ<ÿ“үﴻÿø+Ç‘}¦Þ\Ø^Áÿ ûKËäÝÙÌö÷1y°ÞI ž\Ѻy‘I$O·tnÈCžkoÚëâ7íõû^xÇöžñg.~x:h_ ¾xR½ÚæàŸkŽ¿isâ „†Ñ'Ö.õ½sÄšÕÛ-½½‹ø„èÖO˜Ú•ß×Öeùwf™&I_5ϳ.ÎV]EfØL“Õ°µ1²Š•YOû[$Î\*Eû²Ž¼0ÊN|Фy&~SÄù¯†|#Ç\[Ãð¦Å>©Ž¥<‹4Ïx“‹ðž 0Œ02ÆdYÞŽ: j4 ñ˜9c)Æ:u+S:”WÙ> ñwì+ð›ö­ýŽõo€¶t_µœ_<âoˆ)?ìõñSàlѼ ãoø‚)f¹ø‹æÙëñkºJxšyÎ{TÒÃŒ·†FÕ¬Õ}þ ð÷Ä^ÿ‚°~Ó~+ñÄÄÿþÏ~0ð ÜÉ †ûÂÚÂý+áÖ²ö2>Qá‡Æ_u¸.."ÌŠ@Íùç_©ÁD¾|Yø?à?„?·§ìåâ¿¶ÿ 4öÑ~üsø;â#ô„ô[+y´ÙìüQ>áÿ¤¶v6QÝ6£â+5)4&ëWÐ5½yˆíüœÏ'βl÷‡ø›ý£Å‹–fÙu¬ªŽuS˜ãp™Ž…¡†¡“å•çÄ`ㆭ‡¡K Z¦Pœ#ˆÄB«­îðßðWp§ˆ^að¹o…ôø¯Ãyÿ ¼fm›æ\7‡Î²u°˜ì¯›c¡Íð8lëV5ðõñÕqØ|>b±p©‰Ã`ñL6òÞ½§ào„>xÃÄž!ƒöˆý¡?áš¼¡ø3Vñ$^>ÿ…M㌟nÖtËý!Ã_ðŠøæ×YµûVu­ë_Û,ÓZÃýƒýœ`’ïT´+î'ö©ÿ‚h|.yuo‚±í­û@øêÞh:wí}®|<ðgÃ/TRE½Ö­§|#¹•|W¦[J±Ë6‹«ÝEcªFòÃsxƒþÛþ7ÆoøcoŽºWü)쯎·ú¯Ã¿ø·z­ý¯‰>%ÂÊñ%­×…╺‡þï'ûs\ó,$Ž6üÃøäßðOÿøoÃÓþÎÿ·Ïü4¯uÏé>—À?ðË?¾ ý‡FÔì5wÿÂUãµh×_eÖmtMûV©¿·¿´DñÚiwa†øåá¿Á?ÿoŸÙÞxÏ\ñïí+ÿ ³ÿ ¾Òl5=Çþ߯¯øNÝÁqáïøG® ðüéðÜkÂC¾×ÊI½fý)ñwÃ/ø'7Š¿à•Þ°ÿ‡–ýƒà'†ÿà¦:/¿á~ÿÃ|uºûoÅíöt¹‡þü*Ï·ÛøÎßí ¸ÿ„ÓþVùü1ÏøG>É.ªÙ_Å*÷Š?¼7¨~À¿eKxÎûâüWÂ?´î³g¤Ø\ø2Ïáí·Á]CáÅÌWZŒ:»ë–úݾ¸éu©âøJ?á$µÿ†xø¯ð?þïìKm&óGýÿÄ%žßÄ?ðÛÏâ ?Ð&·þÉÿ„{e×›&­dªW•Q_o€ÃWÁá)añ9†/5­OÚsãñÔð4±UùêNqö°Ëpy~ {(ÉQ‡°Áѽ:pu=¥gR­OÃø—2ÉslÚ¶; áÊ\)—Ö§AG$Ãf™†o„ÂÖ¥J4ªÏ ‹Í§_2öx—ˆ©KŒÆJš•ÝÔð²Ãá0ÅQ]‡‚QEQEQEQEQEúáÿ‚ÔRøÝâ†:î‡àïx⟅Æñ¯<ãm3X][¸µÓ×g‹t j[ŠßÄ:´r®—-¼ûLmx.ÎÅ­Š+â|GIð7¶“p˧V ¤Ü*Ñ«J­‘¿ÃR•XB­9«JHFqjQM~±à\¤¼^à¦Ôkq Z)µ¸l]:¸lV¢Út18jµpøŠR½:Ô*Ô¥R2§9EýÿüDñ7ìÅû>xgà7ìæ<7ð7áÆ]Zm7â‚~xÁ>Ó¼a§ýŠK©ì5;Ÿø{OÕÎýí¢‡V¶²¿µ‡Y°ó4ÍU/4é絓ùæð]¥µ„<1kiÁoƒ¥lK ÙC#’X³3<Žîìij;31$“Eó> S‡ú…•b¹!õœl±XŒn#•{|^#ë5){|Uk{LEoeJ?kVSŸ³§srÂ)~Ýôº©8q'Ô!9ÀÎqX\2qÂ`°Ôò¼¶­<>𣇡N¦'RhÂã:õ§©U›—u¡ëšß†5­'Ä~Ö5_x‡AÔlµ^Ðõ ½'ZÑu}:â;½?TÒuK ­ï´íFÂ¯¬ç†æÖâ(æ‚XäEaã¿u­cÅ:çÅÿx›VÔ¼Câ¯|`ñž£âëw÷Z¦·®jOosq¨jÚô³Þj÷77W77W—sKssqq4óË$²;’ŠýVTáíéÕ䇵p7S•{Of½å{srs{Ü·åæÖ×Ôþ`Ë+V\3ÄÔZª‡´Éª{i/eí%Œ’söwäçjœ—/3P‚nÑVôê(¢·>`(¢Š(¢Š(¢Š(¢Š(¢Š(¢Šþ¾à˜>ø{ñßödðžµñáGÁŸ‰ßÃßhzƒµÏ|øWªëz.•áøõ3I†=bJî{[=MV¿Ô.®õ ©­…ÝåÕÅܳÏ/ò“ÿøóñsãßü‹Å:ůßø¿Aø1&³á/…š¶šN‘ x'A‹NŽðÚhº'‡ôý'JŠ{‹–ŽKíJkIµMDZiÑßÞÜÇ¥éÉjQ_;R§SÅn?JpœrÊÓŽ[Â2Ž_N*  ’k± Jʇ³UV“æ?Ñþ?«VÑãëÑ©R•|߀ñõ³jÔ§*usJØL¢„0µ³jxÚ¸hT©=LLªÎŒg8ÓqR’~yEWô‘þpQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@ÿÙxerces-c-3.1.1/doc/html/graphics/install-3-label-2.jpg0000644000175000017500000000455011363617746021322 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ x"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ýø×…ÏLj‘ꚤ.žž Ö..õ;„Ci ¥›Ý³¼fXw—òDH‹ vyF²9XÛÏþÇ¢ø¿Ç> @$¼ðÝߊmZù¯mc‰®|=¥j¬ú¼óÙ´·F’iV7“˜&™‘c!'ta^Çãïü–oˆßö3^ÿ(ëÌôcQЯ¡¥\}’ðÙêvq2ÚëeÞ‘¨,kq©²Ø_\ÅÌj·6rº]YÍow Çàq^_™æÜ-ĹVKЧÎ3<ƒ9ËòœmZµhÒÁæxÜ»†ÀbªV¡J½zTðøª”ªÎ­ªÓŒéÒ©4 õ¡8S¯F¥H¹S…ZsœRMÊšrŠM¤ÛŠi&ÒwÕ¥©í#Á^ »Ò’âøxŠßůÃüFº}ÆeáÏo¨x†i˧6•-íõž·co Ùý/tƒ¥M©%åµÎ­ ±ikxáç€ÛQøPotí{Äš‹/´§ñ‰t¿è–Ú\F  SÆ>›Ã°xVë[ðþ«áy¯#óæÔõä:Þ•a5Þšº|:½¾§¤xœ¾/ñßnó5ÿhøkJð…ÞÛK÷øwEþÇþÏÓ¢òí—ì»?°tÏ´]Úù7×þ]ÏÛîn¿´µ/µìOñ3Æj6¥æ“§Ë Ous¥Úh¾ð¦¢ÃqVš„×Ñ4M?AÔ%Ô¬à†ËR}GMºmFÆ(ì¯Löª!‚fžxljÂbð¸.7¥JžeCŠ'Z“âþ+Ë¡”cs>Ìéd!ÄdÙ^ 2ÃQÉ8ƒËp”§ŽYN‡2HgXžθ¿4úæUêC—©FRÃ6àè$þ¯Bn¤aZ›«ícR¤¡'R”%9>NyVªéÆ­*埢ü;øsá^Owy£x“FÐ5}kVƒG¼“Ç> ÑãÐô‹8VîIà_é°ê_¯´[wêšg‡l49Œ6É(ºŠ[¶†Ñé i–žIN‹as«Gð¢Úé\éÖ÷³ø³Ç?¾Å£aÌMq-Ô>´’ãKq›«y]Å¢˜¦¯9Ð~'ø×ÃV:v¤j:|VÚL·ÒiÍwá¿ j·vqêbEÔìaÔ5]÷PF¤&›ûCD7'H½3J×V2´²Î>;ñaDu‰"XßÂDÐ[XÛÉxOŸLð©†X-c–!¦ZÜJαº®£zSSÕEö¥Wi8﹦x’ {ÙøoÄdÞ>ðN¡}¨hÑéž«®ê:w†ôû½GÀWº ÙYɨx{[º¿½¼´½x Ö4‰£Œ|‡„ ÕµsW¹û^©«^Üj÷>Të-ÕÔ­,¬–ö±Akmæ"+kXa¶·ˆ$6ðÅ $kú_p‡ˆ9&{O1â~,–q–ÿdc°ÙK6ÌqÔ0Õ*`8û/‘crü4ñÕòìÃ,ãŠUs¼ugšfX<Ë,Åâã,^/C/âÄâ0µ)8Q¡ìçí!.g¹%,W=ùg%8O Õ8®HJŒmÅÏ2Š(¯Ø¢Š(Ï>,‚~ø·ô ?úQïŠßòN¼]ÿ`¦ÿÒ‹z(ÿÙxerces-c-3.1.1/doc/html/graphics/ext-64-label-1.jpg0000644000175000017500000000606011363617747020541 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ x"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?û«âÞ£áÝÇ5¿xIð…´+ïë¾"ñN»ukc¢è.‰m}ªêZ®«}{siie§ÙZZK5ÝÝÍÌ0ÛB¯4Ž>oû|RøaûWÞü!ø“àWÔµ„~.ø‹«ÛÇ}â i7:߃>|E×|1âuô;¹®&´Òõ;ÂƵ¥ÙëÓP-Õ’ëú~~×Úu—¦|Sÿ’ãoû5_ý*zÇð‹õïøŠÇÅ>¸²¶Ö´èõm¥ÔtmÄ6&WL¼Ñõn´oiÚ®‹ Îwlñ_é÷1¨—ÍRxâ‘>iªj£r‹½»i¯…I¹.].Þ–|ÉhÕ½æ×íT–"X:*•HÅ<„`âÓöÒ¥MRŸµM¸B IJ*”ÛæRMr¸Ïß-üDÿ>|M›Ä¾øw¥Ýi¾ ÀZÿ„~x+áÝŇ‹|Iâû=:? ÝÏà}ÃÖúÞ—¨ø9|_ª˜µ¸u;ëiü5oyk,j·…ú“áÕñ'Æ…)àï Cðóá·„~#ÛÃâ ¼)£'Ž¢ñ'‚¡ŸGð¿Œ/üpÖ‡Åq^ø»âzŸ¨xmµÏøE-­¼I.‘§è¡¡³có¯‹~#ø·ÆÐÙYë—šd:^›4÷V†¼3áxjÒòé"ŽëPƒÃ> Ñ´Ç©]G 1]j+¦‹ë˜¡Š9®"E]?|aø‡ãm:m/Äzå½Õµìö·zĶ>ðÖ‡©xžöÅYlïüe¬èZ>›«øÓQ¶/$ê,¾ÖocžInq<#>hë{·d®Ò¼×¼Ú–·Jí-åuµ‘?U­t£ìáMÊRöp©5<Ÿ°Q©E*qRšTªM7J*ÉûüÓrû[Kø_ðþOˆõmWÂÚ$^ð%‡„< ñLM:Î8ðå¿ÄÏŠÞðÕÒ*ÇÆ>3Óí5ÑíâC¦é𖍝©.f¨ ÙØ=ÀÓ,Â,-,p[€ˆx«/ÅMâ WÅø’ñµfïÅz…ôžM’Ø ÿh·~ñ%펌¶£EÒ®ït[Ùtûk+O²›H†+£>Ÿ&™§=¯#¤êÚžƒªéºæ‹}u¥ë5ýž©¥jVS=½æŸ¨é÷ÝY^ÚO Í­ÌQO¨CG"+) %*rq÷4Sæz-U ’û¢ô½µ}ÙT0øšPª¥_š¤èF9sM¨Tæ­9JÒ½ÓH¾{sIEE¤£z~±ãSâ ñx+BðÏÂïøPÕ¡MÆ/ ü5ðÍÞ“HËckªü_ñŸaâÉmãFÚ:ŸŠ¼rmnßt·Ò,"(¢Ýø¡ð7Qøqáësjþ»»Ôü)o«x®ÏNø³ð£Ä×–ú¶«âÛhÑøw@ðÏŠ/¼Aªh“xFßÜúÅž­¦‹ûýH®¤––Û ó¿|Cñ䳟ÄpxMnl¤¾˜]xsá÷€|y}>¤Öïwq­Þx+Ã>¹ñ ÃÉl’Gq®Ë¨Ím,·rZ¼/|×çˆu\ÙÝëWŸlžÃFÐü=fE½­¬vú?†ô›=G³Ž 8màfÓ¬mÒkƒº¿¹óõ Bk­Fîîêy|šêRnÊ-Ú)-ÃïZÍY$ífö5…:ðtTâå*Ôâ§VS•¹Wï[¤çÍzs©MÏÚF-óÝžëcû'±Ñ|E…¯¯!øcª6࿎?[⯆Þðg…µ]+LÐn4Ÿx6o jÿü)¦ú7ô‘e©êþ&𠞬Ö~$†=P¹žÚËS—ñÁï‡Öz7‹´OOãïxwáÍ忣©h á‹øñ|%g¯xÛI‹E‹S"Â÷WñöŸ®ÜkÖ³Á…&yáÛ£¾ Ö~,xó^“Rký^Î(uO ¯‚¦ÓôøgÃÚ=Ÿ…†¿gâ—Ñ´=@ÑôÍÃv·ýŒZáðõŽ—5ì“j^K=¶«©ÃyCSøã]boÜ_k’´þ4ñ6™ãÏmg§XM{â µ§Ò®íä°³¶}*ÚÅüA©½¾“¤5†ŒÖ-öt$ØÜ¥NWn<Í­ÚëÉËÝõŒ]ÝÞ÷¿^zXl]>NZÑ‚‹^ädÜZXˆU´­Nš’ör­O–1§ cË©5 4¿ü:´Ó~3xCÒuÍwÆÞ´Ó¾éÞ ÖïtMWž!ñwˆþ#øsÂÿÚ¾ЗÃvZ¿…n"Óm¼Kq¡<Ú߉oîí?Òœé3C-±éáÂCÆvzvµ}㋃ã?‹êê)bñΫ¡é~‘§ë‘iòIˆ<=sks>£áWŸ´Åkç·w×´‹_³ø³Ã¾;hô¯xE·¿ñ…§Ôn´kVº?†lmµíEnu[Éõ)u¸µ×¥kw×—RkmÈAñÆ–Óh—ë’,þÐ|Qá½f³Óe–ÓJñ£x‘üJ Ëfís¨ê/âÝu†¹vgÖìZâÐéÚ¡Ò4°Ô´÷.••œRÑNû)=\[Þº'{¶Ä°ø×ÌÝu K™§³“¼°ñÆéEÆ+ÔQŒTTg$’QŒ]ï|(øsð?⿎&ñ‰×îgÿˆlïü7®h6>‚þ°ñ ø#ÃZö•©økV»¿“Å:þáÙï5;MoK6šGˆítë]6çQ—í¶å}=û~ø?‚Ÿ°‡/¼1âoR‹ ü# kÿÛÖžk­7BÔn|?ñ"çGÒ5½ É.tå×íVÞÎÛÄúωMÑg¾Ò´ß²A¨_‚½,,T)Z:^W~®1¿]vßOE±ñÙÅYׯ*“oø\±¼›÷cZ³ZmíÊ›I+¹JR“ÿÙxerces-c-3.1.1/doc/html/graphics/schema-3-header.jpg0000644000175000017500000003273211363617747021132 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ#È"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ø^Š(¯õ ÿœp¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠÕеÍcÃÞâOêwº.¿áýRÃ[Ðõ6âKMGJÕô«¸¯´ÝJÂê&Ym¯,o †æÚxÙ^)¢I†PiK™FN 2š‹åŒ¤á+{ªRQ›Œ[²rP“KU5gTÔàªÊp¦çRtàªN0msÊåR”jN1»Œ%Vš“J.¤æYTWí7í_¦i¿ðP_ÙLý½¾ØXÅñïà~‘¥xöÕð.k3j:-…©ÃŸ4ËXÖàéÐY[ÊÚÛI ÐZxa5Mý½Â«Éu—ï|HßðNŸÙÃMøªÉûr~Öž»Ñ>ørCåë~x–Þ}?Vø¹v™?Œ>$X½?ÂW±ýšëÃþ MSZS²¼ÔΟ'Ä`øÖ¼K.•.$Žg<ÃsÅ'[ šÑJ­iŒŽß*§k4Žk#…|ºtgF„ñUèàçû+Áìm ö…*Å<_ã2:|S—ñÕ, †Ãõ¤èQ¶®21£Ÿ¬ÅK&ÅäU³(¼iKñ¸ú9VšÒüù¢¿¥ø$T~Ö¿à›þ(ýœþ/ø‚Ink_Ú¯âïìå¦x¤Ùi‘­ŸµßÙMøi«ÁhÖðiéuaiðÛU C$i$ÚìZ$缘yßͅ߇|WáMo_𬠗Äx§Ä_üq¥Ä¬M§ü®_x[ĶGåDí Ö´Ë·±"óí%¶š4Ù*¯ñ…,ï>â~©–øš0§9âhæX*®­/®Ò°£ì•,U ØjÔT«ªr9:¿½ŒV.øÚÅÄW6÷ضì|3ÜÄÒÁ• ;i-R>Fÿ‚ißÝé_°/ü£T°—ȾÓd JþÊ.)|›»?ƒµ-Å´¾TÉ$2ysFåË‘>ݲ#)*~{ â},g ñPÉæðù/àø{ FXõ™a1øÜ‹…ÍÕO©¿ªÆ¶;§Œ†ÓÄ7 QƒÄ§YÎÝbþÙ†Œü;àÜOáaŠãÎÎø†¾"9UI¾Î8(Îóχ«áÖ`£Ž†”G,–iO†—¶«‰ªòÎ\%8c¨®sÁ×÷z¯„|-ª_Ëçßj^Ðïïgòâ‹Î»¼Ó-n.eò¡HáÌšG.(ã‰7mQÑ×ê‹TŸsù·Bx\F# QÅÔÃÖ«Bn ¸9Ñ©*rprQ“‹”[‹q‹j×IèWí·ìài<û~Ù¶gÁƒ^ý¡¿l„º¯‡~xÄzñðŽˆ-<{«øóDðš 'Ôµ¸4ø¿^´†ÖÕõ…øw'†ôi⾩çç÷ŠÿिðQŠ~ñ¯„~9üEøñvÛÆÞñ†¿°üû5|3ßà 5í&óKMSÁ(ðn™àýJñ'…ä½}CÚÅïö«iºÅµ½ìÞˆ¼·øz*øùà#HÒ-ÓX›ÄžЭï´{+-àž+=hŸ~* ëÿu?‡ºö¯áÍkQøAáY|?uâïè7z†‡¨I£jz®áñ¨XFº“ ›y£Ÿ4â®ÉqÂæ¹Æ ‰†ž9ЯQÆ«ÂU©ˆ§ D`“”éóa1NN NÃÖ«5tå5ÙÃþqÇàéæ<9îq©˜×Êc‹Áaý¦9–Ž ½\J®QÊžc€PU\j¸Ì= .uê›üÁ¢¾õøuÿæøÿãOø¯@ñŽ­ð›ö‡Â_.þÏâ/Ú â6™ð÷þ ø›g$)/üu¶·}ãmmÖêÊhÃ:v§¦Ï¡§I ßo´|ëûBþÏß?fŠÞ!ø7ñoIµÒ¼cáÔ²º“û:ú-OHÕ´R´é:D±‹Í+S·Üð<°Û]Á4W:…¥–£iwgØ>#Ès t²Üo€Å㣇úßÕðøŠug<7îïZ›ƒp«{j>ÑÒ”Ý/kKÚ(ûHssf| Æ96Qÿ6á¬ç-Ê%ysÇcp5ðô©ã—¶åÃb#V1«†«Sêøb±¤«º•QÒ©Ëâ”Wè7Ãø'gŽ|{§x}cöŒýŒ~x‹â†‹ámáÿÿŠÿ´g‡4/‰^)Óüoai©øI4ÿhZ‰µTÔuë;û±Ò/×U3]Çi5œW‰4|Áû@|øû2|R×þ|]ÑaÐüeáøì®¥ŽÎú OLÔ´­Ru¥kZ>¥lLWÚ^£- »bž ¢¹±¾¶´Ô-.í œä9Ž>¦WÍp˜œÂ•)×–OÞÊ*‘¥Vµ$•zTªJ4êT êBœåÎIÉ^ónã<‹%ÃqoÃy®$Å×§†£™WÃ5…XšÔ¥Z޼âäðµëQ„êQ£Š•a Êœd¡+xÅWôÿø¡ûLÿÁ5tÿÙ£àÿü»Ã^ øKð?ÆŸíøCâ.½ñ/âšÍ¾¡ júÏŒ4/è+}s Åáïé¶÷öþv­aâk‹OIe¢x>kX<þ"âj¹>a‘dØ ~mÄ51ñÀÓÆfÙXC-¡J¾*XŒlpyeUƽ(áðô08е›©+B“_Ká׆ÔxÛ.âìÿ5ÏÿÕÞàœ&[ŠÎñØ|¯ûs1_Úõñ40UÊža”Ó«Bˆ–/S1 ¨~â•8W¯‰£J_ÏåëŸÿi¿Ú/ö“Ô~\|dŸà~±uàÅñLz¿Ž<ðoFøYñÆ©âmì‹âûŸ ]ë«áûÍ ¡*éZé¶Úψð.%¿‹ìþ‘ã¯Ù/Ç¿?do„Ÿ¶wˆüUðæ…ÿ>#]|-ð~ƒ¹¬ÇãåñMµïÄ{QÒïü7eááou7Âÿµši~)Õuã¹ÒˆÓÕ¦¾M?Ô§›,6-yì0ÙN;2Ƭ¶†Ç¥W8âjÑÃá±_Vºò­†ÂÔÄEÏ BQŒg AJüþ;„^'3ÎhpV6¿e6Oý¿‰ÍpÙe|²µ ¢L&ŠÇåxšÕªàÞŒ¡…«WÅFJ­Щ(U´>[¢¾¤Ð?d¿ëß±çÅoÛwþ¯‡:7ƒ¾;Òþx«N×µÍgNñœúÖ¯©|7Ҭ?øFæðĺ[^|Qðê4Ú—‹4»³ö}Qb²–X¬cÔ7?f_Ø“ãícàž8øUyáìõá];Å~'ðî·wâTñOСմjúv‹à3Að·ˆ-õŸ^'5K{ RûB†mFûH·ŠíÒææk8­Äy ˜ã+æxZX\£0§•æuç7x,´ðp§…¯'v¤§Á¥¼WÖ!y%v°Ãp'c1¹]…áìËâl§žðþ•*™¶S„¥¯‰Æà’•ªÒ£K+ÇÔœSUpÓ÷=ès|E~—Mÿªý£gðŸŒ5o øËözø‡ñáÞŠÚÿÄ/€>2h¾3øëà‹•ÚíøËö©ø×ீÿuO é.ñàñÑõ?Þ꺆­Ç†<%¯xÎüê7š‹â-N!6—áëØ,Í®yæ_Ëkßg·yn Ï Å<;Áæxü&qÄa2jS¯šV¥UJ8*¡Ñà“¿´ÿе?xƒâgìÏðçÇ âÿx;À^ øñ†/ x×ã%σuý_ÃwZ×ÂÏÍ \x§Xðöµ¨è—Òxjÿ^Ò<76¯¦ýŸUKH´ûˆ®óïâoÃO|ñÿоüIðýß…¼sà­Z]Äz ëC$Ö7±Çñ´wÒÏiye{g=¶¡¦ê6SÜXjzmݦ¡cqqgsÏygäÎ"®*ͰXìM1ÄÔ£‡­Ôú¼§ìý¼žÒŒjþæ¥J|ð¥[÷5*û†yÿqŸ à°Ù—pÖo“à1xª˜*¼nt¨ñ ØZkZeŵ妭¡x“ú‹L4Ïxg\ÓåŸOÖtM@Á:Cwm.øn ¹±¾†ÓP´»´€Àñ7æxÚ™v_›àqxÚ^ÙËB¼g)¬5EKèµîb¬•,K¡*‹Q¨Vä›Hy¿q®A”aóìë…ó¬³'ÅKXü^µ*–2Ö0qÄ9GŸ ,f÷ø8âãFXº7«‡U)§#Å(¯ÐŸÿÁ3?iOŠ?~þÐÞ>ñ„>3x¿_ðž‘£§ˆµ=3Ä>ƒÂ÷!ñŒ>!]k~Ó<áŸé)ðÏ]žçX0¾œ­öƒk „º–§ö>ˆý‹àÿ |qûfx{àßÅÚ[ö9øÇáÝÂéâßü5øAûGË­xׯK­èì­|-àÈ|9¦éƧâ_‡~ ð.™âŠze–£¦Â5àÍsÃúö…è־˓™q÷ e¸\ßS5¥‰žGK0©˜`ðIâ1´§–Õ©‡ÄáÝËuž*œðÔ½½J4gV3ýê§N­H}CàljAá܆±˜:=ñ|vÏ-Ž©âkgˆ¼Sª[Kwg¨kÚØA¨ë6:4WÓ}QðöÆøq¤~È¿¿dڃ¿|{ðºå_âÀmgá~‰á¿üAø9ñzÖYž=KAÑüYâÿYÞøcRkÛ˽oG°ñ-…íí¥ïŠô+h.Çz•ÅŸäõ2Œó œáüC¥\Ã(e¹ÇR§Aâipµj”c…ö3…Õ|ï*«NžeµYG˜Ì¶…Z´°™lÏê¼/p”¸J¿€õ3Úx|L-\ã&ãZØšÑË)qÌ©{z˜lR©, ñ% VÉ¡(Ó£,ºŒ²ÜÃ…Ãã±üGBwŸ½ñ³öðÒþ%L®dŵ®¹ñWö,‚ÆÒæ+Xml#û©6mqF‘ª¨îÿàœòoø-¯ý™¦·ÿªGö©¯„õOÚ¿áÇ€¿àŽ¿´oìeàŠZçÅ?Œ?| âê~ðæ‹«xGð÷†¼Að ]™|O¨ÛxžÊçì|AkÓ|#«Z¶¡©øz)n¢Šöú}3Úb_Ûöxýšþ~Ü h¯ |ñW…?j߆z©×öwÐ|®xßMðö¥áÿоñ…æžd¥J·£â퇒¶ŠþÖ]â/ æœôtϱ\C—ÑÃà¸+²lã‹Ä(¬¯5ÌòŽ$Àåø,Χ-éb+V̲êR«(òN¦!Ts·;åwÃïù|ÿb‡†¿ôËe]}}‘£|Iÿ‚0hšF•¢Ú|4ÿ‚ÎIk¤i¶:]´— ý”ÞáíôûX­!yÞ;è£iš8U¥hâ‰Ë…è:¿öö“iªÿeë7Ú¼ÿø–ëÖ_ÙÚµ·‘s5·ú]Ÿ›7“çy?hƒ÷æ[K ¼oÚ?`ÊsušªÉe¹¶\ðê—ü0Oí½ªŸð?ySÚ{>OÞü<œô÷æÓù'ø0álWö†'5áÌ× šæ÷Fys‡Íe‡j¢¯McaIBxw^Y:RSt+Ÿ¸.o¥¿goÚ‡ã—ì§ãoøO¾xâëÂZÌñÁm¬éÓÛÇ«xWÅZu¼­*i>,ðÝÙ:͆db“6º¾™ö™î´[GÔš;ø¿h¼ ÿ ÷ÿ˜ðŸÅ &ëàÆû=~ÞÞð-ÿÄ_|<•OïŒPXÜÙésÝk6Óy‘­î»¨èšf±oâh/¼Má…×4kÍÇ~4ÓìµÝ5?$>ücý˜¡©.¹o§C¥?çyá.:ÚüMÁYålULï%ÇTÃW„*ä8L^|Ÿ9©Štja³¼§1†Rã9b1˜¸b)U§Géø$'‰m´/ÙÛþ eûGü7’;Ÿ‹¿ ?c¿kÿoà·7¥µÜ¾ ø­â©ÚÂÐ#\›•ñW€ü Ä(˜\$vŽ¥äÚŸo‡Ÿ¼1}àí/Xñ.“câ}ÅV‘øZÖõèVÕ/.õÕþÑiþøMt’„¹A,±Ê’Í8’æWyäw?xÿÁ=?iþÀÞ,ÐüC¢éZ_t ß jž ø£à ff‡Ãþ>🈯N¥­hÒM%­êÙÏo~V}T›M½Z Ý>÷L¿Ôô˾óâÆ¯ø%ö‡¡ø²ƒ?²‡íî¾>Õ|3â=/Á¾ñ‰þ¯ÀŸ‡>"Ôô««_jz/‰tG]ñï‰4j3[_éšW‰u95K=> 7XX’âd‡×ÃÑÌr.3â\¾O˜fx>'†CSËㆭ²ÜÔ19v68ŒVxZpª§˜P«iaê,f&>Ò5âá>ã²Î+ð§‡xC„x·*È3ϸº¦e‡ÍñØœ£ŸeŽkŠÌòŒï[ …«õùÊ…J~7 LM ¸Z”~­ìjÓûÛþ _«êß`Ïø,N½àMSQð¦»àOÙ5ëZ%íÍŽ­á­[Âÿ¿iëßjšF¥¢òÏQѯ,lîì/c˜\ÛÜÛE:J%@õÆÿÁ´ÞÒìÿißjÒ¤šŽ¯âOØûY¸Ö5MJF¼½»†çâÀù#ÓÚY‹°´†E¶‚ÙÆcd˜KpÒJÿ/þËŸ¶w€¿g_Ø×þ ð¿Ç^øŸ­xÛöµýOÃé¾Ѽ?âKø«Xø{ñƒÁŒ|_5÷Š4Øt;Vø£\^ßxwMñÐÒ´Írò-:Im¬­/îÁ$?l‡_°Oޝ~-|`ð—ÄÏi?³MÏ€Sÿ ´ Xñˆñ ÚÇÃo¬¤x£Åµ -|©Ø´CRkáªOaj,ÌrÜOkòœMÃyÆ3 ã:ÂåuëWÏᬙœ9óá2 « QaäÚrT14±í'Z‘©Ê½æßÝðäyVWôb¥Œâl.<7ÄücK‹Ô±­¬¾XÞ'Ïs ?Úƒ—´£‹Ãã08®xÊ­ ê¥ ÊR•8òzwü‰m¡êß´ÿxžÂãÄÏÃïÙ÷â׊<amµÖ³wâ+ÅZ„â³Ð ¼–¦ÕßÁzLj¬,"7V£k²½Ì0 e~̶Gü#ömý¤ìÿlü3ÿ‚¼|HøÀ ý˜|Oe¬j4/øgÄ‹y?‡¼Má­HÚÚM;ÆÔuÙ®´ zÚîÒÓZѵM_[µÖ<9®Ù0‚èiÚö‰}4ÀK›S=®«§Éí­Ìt|Uý¢?à”:÷Œu߈—²¯ü@ñŸ‹µOÅú÷Âß„úÏÁk€«âm~öçWד@ñ}óê^:Òô]WZ½º½’ËþÿC¦Iu4:&¤éÖv ÝÄÜ5_ÄÙ®/†â\vKÄ<9—å pî"„eIá%˜SÅ幎µJrX\m,ÃÛañ0”h«ÅÃ*r•)ËNñ/Áä†EÃÒà|?p·Š\KÄ”iñu\N ŒËq˜Ì#d¸ü:‘Äc2Ì^Q†¡ŠË*ζž‡§^4ªBŸaÿ„ñ¦—ñþ Ï¡øÓÃñOƒ<âŽÿµÇ‰>økÆšJhž%Ñ~xŸáÇÆx+IÕtè/u;;kÍEÖ-ô{‹};VÕ´Û[>[;NöÚÚ9ÛÍl|IâïŒßð]?x÷⇉õ_j¿à© ¼e©Îï¦øKÂ? ÿh] ÁÞ±Ñì­¥ªXøgJÑì#òa}ÌúµÏŸªê··’s°§íWðçàWí­áÚoÄ |{à?„^ñ‡Å«Íᦕ©i6ñÖàÿøÆžð†“þ¹¬xjÓW¸Ð¦ñVŸ¦júÆ©§_^Ùéš»B×W0ØI㿾?xoþÃÆÿµÕÿ…<¢|<Öÿà¡^%ý§¬¼3®hVoÄ/øWº—Æ=3âmµ„š4ÚÏöü$ÿØ{ô÷µ‹Ä²èÛ‘Mkˆ$´Œß×f+‡ñsâ¬ÏO-ÄO ü,ÂäxF"4ªVúôqùÍJ™{­Í Ùø^×â6…a¡x‚çþçÂOü8Öîš Yñ5γák»ý.}?\¿ó´[í.êíl®îe±·öø)ïíà/Û“öñÐ>2|*ð_Å/ ø+Áÿ²¿‡>^]üKðæ¢É©x§Mø¥ã?ÜM¢ÏáÏx·I¼Òÿ²|s§Z¤’ê–ºö¦›­ÀúdvÖp^]òd=˜àqJYeL=<“ƒ³ŒrÕ8B8Ç–ðÜ}Ž!EÙVÄb°Ø×&¹¹ëB´å')9KÛãž7ȳh})ðKˆ0XØg¹¯æ|'Cë tó,¿S;¯‹Åeé®Jއö†[í$Ú¯O M.L(ݤž Ô¿gÛ?Ûë~&ñTƒJ’ÃZÕüZuë?ë²j—zö¦ŸáWSÓo"ñF¡g¦_ÛùÙ61¼[Âyïà3i„eÙªä´rœž¶cõ7ƒYdðrþÓÆeõ)à-[0Ìkâã)¼/Õ•ÔÅS«žÕð¯,ðŸÄà|ë&ÅSÏ2NÍrN3>ÎqyßC#xê¸êy†5©ý“æ˜ ¸ÉT¥–dø\ºªæÄÓÆP”pÙmlGÃúYû.ÿÁQ>7~ÏžƒàßÄ øSö™ýšç¶M'Tø1ñV(®dÓ´`$²ðWŠnì5¦ÚÀ¢9 ð׉toxX hít‹? Ouu¬Wæ~‚x‹ö†ÿ‚fxÅäñ?ÅßÙö²øUâ§hn/tïØËÅ¿|YðÓÄšƒF²_Mÿ¯ÅË»oü=±¹»2¤:††¯§iöžRÙê[÷DŸ¢qŽ-Çà¨à³~Çñ­IÔ”òêxz˜œ³KÙý[JøÌaB´ý¥UK—9TúrU¥JU'üËá+ˆòü÷˜p—ä+ÕWVñßOšpæI>8ðwØÙ媾 ƒiqþ+øìÂZ©JUr|Ÿ1Äe8ùàpøªt½„燧*Xw‰§BÆ ÿÄ7ŸðP.:þÓŸ÷ð²?c‘ø‚> ×£Á15ýsŸ°ŸüoÅ>Ö5/x—Ã_²]οáíF½¸Óu\Ñþ~ÔZŽ“¬i:¤‘]ØjZeýµ½íí¬±\ZÝAðÈ’F¬>Uøõÿ0øIñ/þ EûAþÅ~ ý—þ,|&ÕüoñÀÿ4 GÐ|U¥XxÃ><øCñ#U×~-ø±¼Yoã]OÇzÖ³àˆ3jš´>:qºÖü£éñXhѺè¿]ÿÁ+5­Ã_±WüÄ~&ð–Ÿãï è²äZ׈| «j:¶‘¥ø×CÒ¾þÓ×Ú·„µ-[Aº²×4½?Äv\h÷šŽ{i«Y[ÞIs§][ÞE ©áç˜L·x‰Í2ŒFY¯ˆ¹g„Àמ¥LF¶oÁT(¾xU–R«,=ZU­*­UêRŠ­?­á^K/>9>MÄ9vuS†¼;ñ$Íq¹|ªû.gG…8¦½x:r‚ÅÓ…5^5(º´(â§G–Up¸lOµÂÑø×þ ¦?†ÿnŸÙãSÑ–ê]CǼyeã]bc%Õõî'Á¯øŽÛK»»l´:5§ˆ4/ ›[L¥·Útí1¤Yo&>ÁÿÅ—G‹þ Yâ¯xgìàý­¿nx-lÙÎ/i>øÜÞ¶³tÊ=&æÚÒÀ'îÒÊ xâ4@<§áOü3ö9ý<ªøóöý”?jÙ?iï|*‹ÂõoÞ øwロ–ß_ñLºlqZÈïá­#SÔͬ§Ôôí7QÕ"¾Ïÿ‚økRðÇíùû8A®ßK©øV¿øÛâj3ÜIw=湫üø¡qy4÷r³Ëwqwr¼u:Ip\‰ÏaqØì/‰ÜMS,Ædø žã2*||hRÅcq8,Äã'G_Ò¢±Ô°t*T›•ogZtÿr©Î§Îä¸Ü»(Ÿ„âL«Š8ôÈø³ W+ÆÔÌ(äùN37á¼·€¥^µ*3¤<º¥|F•(PÂÏC×Ö©biaþQý /5ýwþ 3ûgüLÔumsÄÞ=ð7íëñÓMø}«_^k>|RšÃÀñè\I3ÛO Xh¾Ñtƒ'MÐ4m?I[8mì'ü+Cð6·ÿÏýþêQéòxcâgßÙfûâÅ»¼DÚ…ÏÇßxR—TŠ9®¾ ÚܵÂú]Ž›æ†‚8€ùÿÇ?´ßükágíûTüNñ÷ì…ûTkŸ>þÛ_´Þø[ጼ!â¿þ"ø/â–ª–¾<ñ–ŸãMBÓâ?ƒfñ5͆™¯ø‹Ãþ“Ä> 䚪ZéQx~ê Ãù“ñãŸÆÚöø±ûc|W¼#㯈úÆ•ÿ—†tËËø·¾ðÄ66^ÐôëŒÇ4i6N¦åÎê÷Vµ¿×îíá¿ÕeTêÉòüÇ>Çp®/–ã²,&GÁ9žWSŠŽ“Åâó¬6QK O.&»­…ÁÓÀÔÆ{fáN3«Bœµö±¥I5¯ üð7À ü3ÐõH¤—F°Ð|OðŸÃ^7Ô¤²±Ÿuœñ7‹õ¿¼¬‘˜êyDyìÑ¢ú3öá}>ø$?üÇâGˆ¯ÄKŒ~,ø¡E*ùS|Õnþ/XØÙE ï¤øv?‡? †´}ŸO±•`±X-µ9RN;âÇí·ûþÒš‡…~*þÚÿ³§í9uñç@ð^…àüHýµ†Òéÿôß Ïyq¡IñÁ?®4·Ð/áþÓÔâmOÁçP½ho&¶[ë=2ÛAÑtoˆ¿l/ÚÇÄ_·ÄƒÚ«ï€²§ìµáY<+ð àþ«~oµñqq„7Þ*ñ]Ãbk¯ꉤh¯w4íp–±épÁ 橨jö³}.OÔÃxs‘TÉ1yM~ Äѯœfµà«Ã’c²wG-­CR®2Ý\d1uoJš£B>¸©â} .$âžÄæ2ñî#Œ2¼û„üDá:ùW p´1X‡™á1ù†a”g3–i”×£N–Y˜d˜Ü¿‡Ã¸Ô«^®+ VSÀCŒ£ú[ûdø›Åš/üëû øÃ*×ü+gñ#öÊÿ„Æ  jéòk~¸ñïí]âa¤jQwa‰|1á½}-'nÚž‡¦ÜIuà?ðDïxW¿ðQÿÙÄè:ap-þ/ÚɨGoê—7À¯‰rH—Zœ¡ï®VYaŠiiÝ^XÑÊîEÇšþÔ?µÿ€¾ Á6ÿb¯Ø‹Ãž ø¥sñCáíQÅßx¬øsF›á”>‹\øåpÐÛë¶&½ñ z¡‡ã‡cÕ<'¦iÅtŸ±ÔÂØX¶§ç¿²ŸÇý[ö[ý¡~üzÑ´ˆuû¯‡ºíÍåÖ…5ÏØ†³¡ëZ>§áŸéq_y"Âêÿú֩ke~Ö·Iew,Okr´và8o3Ÿø•}EÐÌ8‡9ñyt+{:_[†sÿ‘Áö(xkÿL¶UúÁÿyvþ 3û;:2ÿÂÜÁÀ8ÏÀ¯‰ÀðA (¢½n<ÿ’Œÿì’â/ýSãœðÛOx­ÿâ+p·þµøàŽÌ_öÆÿ‚€;³~Þßµ[1À-ñKX$à` “Ð=+†¢Šõx{þD'ýŠrïýD¢yÞ.ÉÍãŸû(óý<Š(¯`üè(¢Š(¢ŠÿÙxerces-c-3.1.1/doc/html/graphics/domcount-3-header.jpg0000644000175000017500000003074511363617747021524 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ#È"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ø^Š(¯õ ÿœp¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢¿RÿàŸþþÐ_¶>—ጶgˆ<9áxŸÇÚ?ƒu¥Žm#ƾ(еXéÚ§c! ªØÙYkŸŠ.t™¶º„^k}JÞëK{ëi¸/ˆ_ðTø*¦›ñ3ÆÞññøQðÂ~ñV» Aû%ø‹öjøgâOxoMÓ5›+}þ}w@³ñuõ„–¨RÓZÓüN–^!Ó'[Ò–-;Q³ÇÅcx§ø‹ÃYQ„Ìq¹v[ƒÍ1ó̳‰dôÕ u\E,<0§–f•±ÕÃMâ'*xl.Î9â}­Uû/x[“ã8‡ˆ\_ÆSá\‹0Ïq¼=•¼TâZÕs ˆ­ý£ y¶TòúUcˆÿe˜bëCН,%,=(Õ©ùãEuž´ø‘ñÃâÅݥΑðöÏÇ>-O…ü5à |à.ÿâ/‰a]ÃZE†·©>›á-NÖu‡ÒôÈnµs¥èš :z]j%-n.Oè…?à•Ÿ~!I¬è? ÿhOسâÅ I½Ö5?‚_?híÅ_í­´ù µŸEÓt™4[C̰ÚÍsâ+M: ©á‚âú' õó.%ÉrHPyÞa…ʪV¥ ²§ˆ«xÑŒš„§V¬báN„*·Mâjû*.IÞJÍ/Éü=â¾'Åæ8C(ÆñU z”V/)ÃT”1Juaõj5½z¸Š”9jýJœ*b ¤“¤ôoóŠô‡ÿ |Qñâ÷‚¾ Ø = ƾ7ø“áß…ViâV½°°Ñ|UâOYøBüBÖv:Ž£ei¦ëŠš¹µÓo¯mb‚ãɱ¹¸mßïÝOþ -ûExkâ?мãψ_³ŸÃ-7Þ%ðß‚´¿‰Ÿ>)Ïà‡|gâ øsŶ^økq¯øbÓÅþ/Öm¬üU¤é·ÑÙø:+T×ZãJ¶ººžÝÉy—ðþOZ Ï6ÁàëUÂOF•ZŸ¼­„§V• V¡©:ÉU­N<””ê5'5ÊQÇ"à4âjqY 湦™ÓÉñ5°¸w*x\ʵ Øšx\\äâ°²•=i{LG³¥ES•EVtá/˺+ïÿÞý£tÏŠß¾øþO†,~¼sñsâ×Ä+Á?t›B÷>¹‹Ç—ÑK¦Þ)¶Žiô7LÓ®õ¤×±jzfq§ßÃmäµ?ì“ñoö@ñ¾‹à¯Š©á«åñW‡¡ñ_ƒ<]àlø‹Áž2ðôÒy ©øU–ÏM¼’;{‚±\A¨iš}äi5¥Ø¶k CO»ºXN(áÜ~3—೬»ŒÅá–/ B†&Yb0î,O=A¸TV­KéÂNªÃÔ…wJJmæ>qÆQ•ãs¬Ó…sÌ¿+ËqÏ-Ì1˜Ì¾¾ž ±5°^Ë‘JxÜ6#õ!<ñ´*á#Uâ)Ê’ùŽŠýðü?öŒø—ðáíàÛφÚ~/ø¯Ä°´»ñN£¡êþ ³ð­ÏÄ;øÏâ=þ½áí7Á^ðV”>ërO«¯‹õ ©Qðõ•¶›>©ª‹9ϰƿ ,>;[xÏà§Ç/ƒ7ÒøoSø›û<üGƒâg„¼3â.VÊÄWñézD–—_¼zqºµ‚ûL·Ôç³Ó//­µ GN¶»ÆaÂõ1Ë,†y—¼|±õòµ…öê5Vc‡­WS%$”1.½Ô©R“R¯R•HÐU%nª¾xƒG'žS„sµ“C(Âgï0ŽSü—†Ãã(f”¥S°¸¬6#ˆ„eOJ½)âÝÎ-ø~û4ülñ?ÀO~ÓÚ‚¾Ýð7á׉í<ã/ÿÂGá+oì_\øFÒ×Mÿ„jó^·ñ~¡æÜxï±ý³JÐ/¬ûW|—H–:“YøU~»/ü«yÿÿ³œøqÿ«ö/¯Ï?€ÿ³×ÅÚOƧÀŸ <2Úö«i¦ÝkÚö£y{g¢økÂ^ÓöKÄÞ-ñ©5¶“ hv ëç^^Ü£O+Egc Ýüöö²ðd|PñŒªæõ0 ñ.3(§Šr–’ÀaòÌ«øÚ¸Šó§í½®:´gR'J1£©J§Òñ—†QÊ2¿ 1\6³|ã4ñ„Öm[)TaŒÄG8Ži‹ÂNŽW •iákPŽÙájÓÄb(Õ¥ˆ«7Ȥæö)ÁXô—f¹†aš`¸g"Ãf´2\T°†?1Îg“á§™S¥N®#—*9VmWW ´éâj׆ C•V©*u90^dyw äa˜ÒŽq“ËGÉ*ô!ƒŽi^8IPÄâiaÖ&„*|-E~·~Ü? >üRý”¾ÁE~xEøMkã_Eð›öŠøQáL'ƒ¼ñBåîí4ßxjÌAko£è:æ¯ik¦=•œpÇ(ñw®“Kµ¾›Ä×mú+ðsºWíÿsøQûé.‘ükø»ð7ö¿øËð,M«Ç{ãOÙ·ö”´Ô-t8MÔr¹ñ±ñÚ%Ù¶W¼Ã7¾%º†ÚVÆÌüNÁåÙ.UœK*ÄÛÅ?ê¶y‚¯ˆ§GÃÕðØ|ÛbkºTñ4±Ë¨eõ1*4ªR§ŠÂT†"Ši¨?k‡>ŽÙßñvu”¸ƒ.‡²ðþ§ˆ!á°µñyGàq8ÜŸ’a°ó©WŠÊÞgˆÍᇯR¾ŠËq´*ajåõù£Tþ_(­ß…žÖ~0ø›á÷ƒüf÷~!ø•®øgÃ^Óå­x«P³Òôû; ¤â¾½Ž ÀÑï¶d›Ì@ceÑü“Vð—ƒ?à–ÿ±ç„~ ê+ÿ?‚ÿn/þÏ‹~¶ö3ÿnAð—Ãß´ÇÂ_^;¥Å8W˜ä9n_Óâ|Ê®Y)Ξ¡ýµ’,-g³•l40’Ì«,,èb14ðÑÄÑŒþ(¢½ ã'Ç_Œ_´7ÄküQÑ~h³Øø&×ÃRüøj>?‰õkwTÕ£ñgŠ´{-GPÑõ_Ûkw:f©«Z‹/:ÃHðåœV1­ŒÓOöW…¿à›¯>xCâgÅoгGì»áÿˆ¶ñ]ü9µý§¾4i_ uïZÜÇ–sxwF¸Óu[’×É=¼––Ú§öeìÐ\ÚÝ-°´»¶ž_cÄ,«ƒÄñ l.MˆÅ7IagŠX—,DbçRŽP¥N®1S§VS§†‹…$êT…8ÆVøªšç¹æc”ð$1|m„Àž!f™v__ Oêu§ Tkc¨â¥Ë–T©^qÃFŽ#ùñ4hT­)C›óΊö¿Ÿ³ßÅÙŸâÇÃo‹þ>ñ ØZkZeŵ妭¡x“ú‹L4Ïxg\ÓåŸOÖtM@Á:Cwm.øn ¹±¾†ÓP´»´ƒ¹ñ×ì—ã߇Ÿ²7ÂOÛ;Ä~*øsÂÿ®¾ø?A\Öcñòø¦Ú÷â=‚Ǩéwþ²ð𷺛áˆZÍ4¿꺌ñÜéDiêÓ_&ŸÔó¼¡PÊñ+1ÂO b(á2šôêÆ­~#F¶&,5J|Щ*”0õêE§ÊãJZÝXòið‡UÆçÙlrÎ9‡ à±Yà*ájQÆe,' ƒÅâ1¸jÊj1¡‰ÆáhÔ‹ƒš•x>^VÚùnŠú“@ý’ü{¯~ÇŸ¿mßøJ¾èß>øïKø}â­;^×5;ÆsëZ¾¥ðßJ³ºÒlÿá›ÃémyñGèÓj^,ÒîÏÙõEŠÊYb±PÙýš¿bŸ‹¿µ_?h|/¾ð‚ÙþΞ±ñŠô rïÄ©â[jz7õ« ÀZfá_Á¬ë÷qxU²·°Ôït(¦Ôot‹x®.nf³Æ·äx|6cŒ­™áiarœÂžU™Wœœiàó ÓÁž¼œ}Ú“žaƒŠµã|D/$¯nœ7ñ†3‘eø^Ì«ãx›)Äg¹*™¶Q„¥¯‰Ç`Ò•ªÒ£G+ÇÔ¨®ª(á§îko¨¯ÑHÿà™_/¼ ã¯xdznj|oðÃÃwž,øðÁ?´|tðN‡¦¯qâè6÷º5Ö’ðÏo}¦/‰åÔÆ¡šMµÆ®c±}¿ø%—ì•ðëö²ý¢t­â·Š¾/Ãï ¼òkÿ 5ÿˆ:Ÿƒ¾&üWMWÁ?/ôÈþiš,pê~&‹Áú¿†ôí{Çíe­hòè¾’;¯6é.šçb¸×†ðÙ>wÓÌiã°|?BU³à-_ÝûZ§I¸) øsÅ~/ñ¶¡§xágíGðÞÎÓž>Ñ|U¯\%‡‡l|O§Z«§I¬k³[@º¯…dŸÁ—ºÕöŸo¯|,±ÐâÔ5¨¾|Løoð¿ÅšÎ§ñcàvƒû@x'ÄÔ¼/©ø+Wñ.¯à½RÂ[­GGÕ¬üKàßh‘Ü^øcÅzuÆŒ–Vú‰²¿¶ŸGÕ5­*êÔè´°ý[à¿Û7þ ¥û7xëGøÃðƒö>ý½>#üfð•Ìzÿüñ{^øCÁ_ xÒÌyÚ6¯oâÏ]jþ$ÕbÐõöq­X]²ÏoovÖP^E ¶ÿ˜ñî]C3º çØŒó …©.â<Š® ‰Âc§ {:+1YŽƒ¥ î2ÄÒÇÒþέJNQöóS„?£üÇfÙj𡯼O„³} |wÀœhñXœ&;)¥Rš«ŽK[,ÄaóòÂsNjɱ?ÚxlM8RÅGCØÔ«ã?dox[öÞñ×ì;à)Çß<7ñ Gðn…°A¦6«¦ø·Ã:G<%®j~lÏi¤Á/µí?[צk™l´v·Õã{™#Ó¥þ©Á>?cÙGöBÿ‚“ü%ðvµûf|$ñ7í—a7Å6Ô¿gÿ†Ÿ -\|#ÂZ¶¥s}{â½;Ä^)¼Ó.<}⛽3FÔ5»¯²ø*Ûm¶‹àñvÄ Ç*§Ãò†.µ<â0¸ìVM†É§ Ç‹+ajaqxLƾk,»(©Щ¡‡ÆVU«Ã ‰¥ˆ£F“ý/Ã8ø#ÃüWÄM—æ˜^l‡Äܧ”`3œ÷=ÀÐËx ˆÀcèæ™drZô£Ä9–[˜Ë…• ξe–ªX, Lu `±Øœrò/„ÓË'üGâ «;4ßø,g,lbÏÉmh?k[¡+Ñ"Ý\HpV#­_ÿ‚Óx“Åßà«¿´Gƒüuâ}W\ðÀà6…ð×ÁºøCÅ<%ñP¹KÊ[Íu/мOâMJæêx仼kÍ>ÚæâKMµƒ‘ÕÿiÙž?ø)D_´§Áo†´…¾\þÒ>ý¨¾([|U±ð<úΫãù~+Yx×âu¿ÃXü?â ôTе{{Kkÿ èú׋/nF§q¬&¡¬èúXÓì,<“öÁøýá¿Ú³öúý­?hïxSÇþðěσ6~µø¡Xh^ ¹ÿ…yð“Ãÿ5»¦ƒGÖ|E£Mgs¬øZîÿKŸO×/üíûKº»[+»™lmý\›)ÆÖâ®Í1YV"ŽáÖ+.«SFšž6–?&K 5Í?e‰ž–1^jTX9rÎQ~oñNY–ð/ŽÙnQÄXí<çÄì‡>ËYŒ„Þgb©ULË :vUhºØŠRrV¯Cá]FJq©Òïø8ßÅþ6ñíÑðWà£â­R?ƒš?ì«£|\ºð-¬ŸfÒõëÿ¾%xKRÔu&€G5Ü’é^ðÕ”FâIE¥…®§gd-£×5Ss‰ÿ„v°øÿ#¶³Å´_²·Ä}:x¡#’Æ×àì§wojʸL76ÐKcj4j@¯“à§¿µÿ€¿nOÛÇ@øÉð«Á¼/à¯þÊþøEywñ/Ú6‹&¥â7â—Œüwq6‹?‡Ñ­<¨kZ÷ľ²ÿ„OYÑãþθƒéI€ÇeüKáîQ>QÄ)PÍká±X<\å„M%SG‡¦ãíR¯ 8z4ahÒ§N?_~ÚZÆ¿eÿý~ÀºâsÃö>8ýµãðŸŠCÔ®tæÖt ®ªÖzJ›t#R¥?}b°œ?˜x=Æ9Çe8 ‹#ú?äx|wâ1ÕáÍqLJ'ÀÒy{ °øœ +æ/S:Ó£‡úµZj]ÄP¡ˆúsÂÚ”ºÏü/ûqk€³ê¿´Â-JeP‰o¼qû]H+p+Ûd]cöømÿ€ý¹~ |m‡ãÌñ§Å¿ |'ø¯­~ËÑx¾7éŸõ>Øø\h³|AžßÃvº6¥â?ø‹AÖeÔ>Ô_K×5H´ûU¾t¹‡óÏVý¬~øþíûG~ÁV¾ ø§¯üUøÅñ‹À¾(ðf©áhº·ôŸxkĵه‰ïljm¼MesýŸðwÄ‘7Â:µ¡Ô5?Ã%Ô1^ßO¦t±ÿíw§~Ï_þüQøsƿٷö‚ð”žøÉðž]Q´{ÝBÕa»‚ÃÄ~Õò£HñN“ýâÚÏúy¹/k*jšF©¥èšæ‘íc¸[<Åå=Õ<;â 'Âñ³]ø7áx?ĺ–™{g¡ø—í ›[½ñ<Ôî,õhôÛÝj+qlEü©×3½ßÙ¿öýŸ¾ þÌ¿¶V—ñ§ö~¾ø£ñ‹âßÁ«?þÏw6Ÿ üñ*çáWÄ»¯üHÑWU›Xñ·¤kÞµ²ñO‹¼©êZçÃøu]¬|-uªAnotŸ¥Ê°¸|¯-Îó,6CÅ­|Ï0Ê+c0yûÂTÆãêÂX º8ºTeV¤iÃ,ÂR£^«­J”¥ •RPŒ×Åq®kñ'ðGŠâ8FyDxä|A™¶7„˧‹¥ÍãƒÅbÝ8T”3ìɼ>¥*¸œ-:Ù³Æ:§:RøÇFÒíôM#JÑmi-t6ÇK¶’á‘îßOµŠÒãŽ(ÚfŽiZ8¢FrÅ#E!Gï7üéÿ'™ñ3þÍÆúµ~ ×àŸ‡¯/õ C¿Õm~ê_húeæ¥eäMmö;û›(&¼µû5Ë=Å¿ÙîH¼‹‡y¢ÙåÊÍ"±?¦?ðLŸÛ?áŸì)ñÃÇ¿>*øgâ7‹|=©|ñO‚lôo…º/‡õïÏ­^x¿À>*·òôïø§Â2ÛËcá FÑ<­RK·ÔntøÑ¡š{‹oOÄŒ»›p'åÙn¦/ŒË'K …¤“«Z£©JJM¤åh·«[˜ø)›àrø'7â ÂÁeüOÙ–c^¢xzZb)Ô¯:±M8J¬Õ¦“O™5£?">É(ð¯ýÇ?õ$Ö+÷Ëö;¾á7üoþ ÷ñ{Æì ñ÷ÁØ~ øfòì˜mï¼s®x/âíl­²&¹}oãG‚mÂF™in#Bÿ+¾%ðoÄOø"ÿÃKÒt/ƒðX[hu%®ã-öjÓl5Sw{s%¶«ªxVòËT··3]È¢]28.4w3ovó¿ÚÿöÐñ×í™à¿‡³wÂö²Oì?ð§Y]HøEi®\k~0ø¯À÷Fâ»"Ayªj¯o¯Þê/&ßRÔï5}CQñ>±m¦_Xùüó3Â`² &E›åø*¹¦OÍó<Þ *§1Âæ¯„£õš¸¼F7_GMǰÔiέZ؈Ê0¥SöÊ2o 8ûˆ|Nâ.0á|U:ã œ9”dY›Íqù†/‰0™žWJ®)B…,- 6šW¯<øµð#ÆóËiáoéb mcšÃQ†ÏR ëðÙÏ=”ÔV§·–3y¤ßÍa¤Ë§ö×?àzF¯ÿ &§û+ÁKfÕctß tMoà׈~3,™T^>±ñ,_Hxðä×Pk;X¬›%RËyR̸7ÄXJÙk›åù¶}˜ñWÉ©áq-¼Þk‹Ëq´+bðÕpØŒ61Öö‰'ƒ¯…©Iʽ´ê@ù¾$ž]ãvKÀXœ¯‰¸g†óÎá¼7 çÙãëåj2¥O –gy=zx,M,ËŠË©PŽ; A,Ë ¡8,z5¨V—ºøþøü,ÿƒt¾9'‰É°Ôh/ÚÏÁIðgýÜÚ­æ‡ãoƒš•Ëé«.Ö•£ƒà‡Ä'Ýll°¹')eøûuû1øWþ äøÊ·Á£øgÅ¿ðQ»_Å‘ç5ÿŠ^Ð"­zO‰Ÿ±s¤£V_£KÄ®áÌEL£†xƒ _áÿ8Žȳ½iSθ›.âþâ{`àÛ”_´Ê³l~ Rjµ<8Q­ìñŠ®¬Þ2ø¥~Á?¶¿íûûRÞXZ§Â/ÙïᦣûS~Ï·+ Rèz§Ž¿k×ô…žÓ­Ê=”úo†~,‹‡K†ÆK“c¤ø'A¼Š¢uû7Íß´ÓësÿÁ½?ðLmGÄ·3Þkúçíÿuâ]^ææIe¹’ûÅ:ý¶?ÿ‚m~Å?±†üñFãâÁÿÚž‹ž/ñWü#š,¿ `ð¬ZçÇ+ƒ ¶¹aâkßÅ©˜~0xyÖ=SÂzf·Iñ+i°±mOÍÃð·ª|‰Î°¯šåœg‘a1¨T§]C†¸w$ϲì&e^P©(¯¯cq،ʤSö”ÞkJ…Zp©Bi{xü5ž7ð|-™à°YWxmÆ|CõlK• ´øßˆónÇf4#V•)RÄQÂeÕ°^ÆkÙb(ä±øjÕ¨c¨7õ×í)¡ÜüVÿ‚þÍ'–í¨XþÏÿ¶öª|a[Pe]7FÕü]ñJŠ}Q"-²7ÆÏ‡…ÚåB$w–²° åÉ_õöçìûpøËöO‹ÇÞ»ð?†~5ü ø·¥I£|Uø㫆¶ðß‹lå´–Â[‹Kû?YMX¸Ó§›Kº½“DÖ´ýCO‘!Ôô{Ù¬t‹3gÄ¿à‘Q“ÄþËŸðSë#܆ž Ö¾ x›álry®E¯Ž5{Xñûé¦7B·7  ¡,®ÿW”ÿjpv?ˆðxŒ4ÍrÜ߈3 ʳ,žlV¹ÅEŠÅåØü5\U øZøldªª‡àëá§Nõ¨Ô§:gã9õ<³ÆNðê®SÅ<7‘güÂX Ïø‰ñõ²©ÎžIF†.ÏrlDp¸Œ>e„Æåô(ý{NPÇá1”¥†¯J­*¯çŸÙ“ÃÞñwí%û>xOÅÑÁ/…"ý¸þ#ü¶Ð~_|ý•?e¯ Éá_€_õ[ó}¯‹‹ˆì!¾ñWŠî]x‡TM#E{¹§k„µK†o5MCP×µ›ï¬´Û ökñ?ì1á/Ø÷öÁøWûEøËÂß¾3Û|mø7âÙ‡Tð¯‹íüC þ,¾Eñ=Ä2ÚyО÷Ç^2†úÿMÓüE¨Mcâ×F°»ÑâÕŸæeùö"á¼]L·R®Ĭgâ²l,°õñY^SšUâ CB1­ª`¿µ°òÄSÃÕ•8Íâ]U§MN¦Ðã>ÿˆšäëˆrï­ãüÃxeSŠqu*ÒËóÎ*Ë#Ã1£‹Çã%JUhËG"Å*Xœl#_–¦ ‹TqNXj>Æ ÿÄ7ŸðP.:þÓŸ÷ð²?c‘ø‚> ×©Á,ü]â_‡ÿ±ü3Çž Öo<;ãþÊãÅÞñœë¡¡x—à ?iýgBÖl$euŽóLÕ,­om]‘Õ'«ƒòOǯø)‡ÂO‰ðJ/Úö+ðWì¿ñcá6¯ãˆž·ø! hú>ƒâ­*ÃÀ>ñ牮»ñoÅâËê~;ÖµŸüA›TÕ¡ðÓÖ·àíOŠÃF×EçfÏÛá×ì×û!ÿÁG>ø»Â_Ëö˜ñ†£:ij¾"ýuÛ[T¿i¾»·»ø‰ðBH4é'”¼Ÿ`±¶’;;{Ue„¤FgŒÏ,®ÿ/Ánî/lÿÙ{©^iVßã}¨y³,~üa±µ'°ÚÛà ÈŠ®ÿÁ$?l‡_°Oޝ~-|`ð—ÄÏi?³MÏ€Sÿ ´ Xñˆñ ÚÇÃo¬¤x£Åµ -|©Ø´CRkáªOaj,ÌrÜOkòü§ã‰doü ø×†æ½Ö>k¾"¼Ô|-ª‰ôk­OC×§ñG‡üA¥™n-e—LºÕjGÁYVU“Ö›…:¼trž"ÂÕ¥’’Qt«c0±«)ò¨ª±m´›_…ã¾Âp¯ƒüÏ8£ˆÄðoØÜû=¥ñÜ»"†q—fêÃN.o S —Õ–Ž.›ö0§Eû8¸hH›öÞý¿u©´­6]bÓöôý¬-í5ilmdÔímÛ⟈ ·¿xÔ0²Ý\«Eª„\N ‘,›Šö?Ûã'ì‡ñWã¶¿ãÏÙ‹áOíUà_|jø‰ñ'â—ÇuøÃ¦|=›áe§¼OƒªGð¿Wðf¿®jñiÞ!Õí¼]ªkÑø²é§þÖÕtxt«=*Þ[6į½áyÕŸd˃Å`1²ü6¾N4±4+aiÇ R5! Ô…œé9Óœg(Ô¥(M;JËðÿ9gâGâhfX<ß/Ì1ÓÌrœÇ/Æ,n–cÿÚpÒÃUÑÓŒJ”êД)ÊŽ"¡(]sKç (¢½ãó¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(õ«öÔ–Cÿ ÿ‚nÂ[÷kû{[2®ƒÿ í‰Îq¸ýæàœsì1ù+Eù߇?î¼[ÿg ¿õy‰?¢¼ÿrð[þÌ¿þ?—[î (¢¿D?BŠ( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ÿÙxerces-c-3.1.1/doc/html/graphics/api-3-label-1.jpg0000644000175000017500000000527211363617747020427 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ x"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?û«âÞ£áÝÇ5¿xIð…´+ïë¾"ñN»ukc¢è.‰m}ªêZ®«}{siie§ÙZZK5ÝÝÍÌ0ÛB¯4Ž?7üøÑàoÚSáÎñcá,ºÖ¯àk^/Ò|%{ªhò馿oá/ø‡ÀcWƒDi®o­-úlÖˆçøg®|a²øcoÂÏøzß㇆åÑoüð×OðŒÞøUàÛïÇãMƼžðN£ã-kXÐãÒ®nÞþóÆ:›HÕ.ã×±sÔÿx#Çž*øuâ;ox?SM3]´IãŠêãNÒµ˜;•Û*\éºåŽ¥¥Þ)!eE¼²œEs7P칂S;Fñ6» jókÚV¡%¾±=–»a.¡$V÷“µ¿‰tGBÖXØnU.®´ÝVú8¯ÑVúÆâdÔ4û›]BÞÚêé®[S²¼T“iÞ1½¬ÒÛ»¿2vq‹NíÛŸêx™9º˜…6£9QœT©µZª§Ìä¤ëJœ#:JQöUq­V“‚‚´ýwà]¦“⊗ú溞Ò´MÃ_ügvÞ$Ð[YðV‘{gáMvO [Öšˆ¾Ý ÛxÂïöòéx{Uó-X[Á¦^IåZKêÚ¿…-~'ø“Á¾ÔÃhõ'BñwÄM{âw¼5࿃Þñ?$ð¶â?hºcϤü<ðÒηn¡¥x¿Aðüú6»â tvÚ8<3z×#é>!Ö4;m~ÓJ¼û$'Ñ¿áÖÂÛÚË%ÞŽum'[k8çžg²ó5Ny®,$µºšÚ)ôùf}:úþÖçsIø‡âíøìœ;²±¸Ò®çùóXñÿ‰µ¸|Eis.‹acâ­Cú¦¹¦øsÂ~ðŽ•s{áM?RÓ47¶Ò¼+¢hÚv— ½¶¯¨Kwg¥ZÙYêÚ„ë«jð_ê¶ö×°ì‹Þ9#ÂÎ×>{ÿêþ×4vOx O¥ÿ…bH4Õ¼Zþox“MÓàŠÞÑ–å^éœpøØÊ3UàæÜG)Õw:t¹iŵ/sÚ*é©'ϾÖw¬®½ºƒ¿ '|1ð ñÌ?ð–é¾ðæ¡k>&Ò4ÿ x2ì}ªûQ»×5WÄË­ÙX1Ó|3¦j3[é3W—áÂ#Qñ]Åî¡âÏéüKð<§ø'ž º}vOøwUÖ|Mc{ãk=Äž¼¹ðÜÞÓ½áÍS°Õ/ê%Ò-aÕ-ot¯žü3ãŸøKQÔ5=&êÂyõxZßWµñƒ x¿GÖ"kÈ5º¾âÝ/[ÐõFP¶·¿‚Ký:âK{ØcºãAz‰~1µ¼Ò/lïôëÐ|y{ñ/GµÓü7á› &ÃÆ7òè²Í‰g£Á£gÄ|?¥G§øqìÃ:U´Úiš=­þ¡ Ò½-³JWmèœm²Ii²{;ÝÅ7¼™NŽ57‰nŸ$b›EQµÉ)¹JÒKž¤d¹¡Ë(Ó­(ÇJtâ½ Åžøyà?]êâŸ&£ã_‰^øvt}wEðÒÛiþ»µÓì @óÃw~)µkæ½µŽ¹ðö•ª³êóÏfÒÜEI¥XÞN`šWEŒìÔo+Ù|}ÿ’ÍñþÆkßåyž“¬j:áÔ4«²^=NÀN"‚f[]cL»Ò5n"•#–[ 똢¹VæÎWK«9­îá‚xü+Ëó<Û…¸—*ÉqTð9Ægg9~S«V­X<Ï—bpØ UJÔ)W¯JžR•YÕ£BµZqƒ:U&”´' uèÔ©*p«NsŠI¹B3NQI´›qM$ÚNú´µ>’Öôi:?ÆÏ hñOâßè:ï‚4Ñell|-¦øÛ\ð¶­i6¦1obïg¨ëºN‹-¨ŽóJ‡Âš­§—ä^S—¿ð'‡ìµ(ÓYM^þÖ×þïƒ-´ÍmBÕî¼Yâ [kýÃܧ‡o »³ðÖ¯,¶Cy§É­j«{¦Cw­Aµ ÚXj6‚ÚKá×Õ4‰<íVêÞâ/ k½Îœ!Ò¥„éÈÖ¯üÆy/x9ÂØÌî¯Lj~½™`²j¹¾m–ã\jäžðþKF†:XLv# £†Áð‡SÌ1y]JøÌTóå™%ý±œc3 ŸÞÃTÂæ5ãIQö<°•I~1•ª·hª®R¯†åŒÒŒU.OáÓŒj|íâŸx Ã6·ÍøÃ]¾Ôükñ þ´³Ôt{D›CðýΙ¥xo]Ô¦¡5íÕέ6¤—zVio«¸‚ÏTÒ&Þç½Òþø" ÏÏ®iž$‚ÞãÇö~ñ™7¼¨_j4zF§ªëº…Îá½>ïQðî‚¶VrjÖî¯ïo-/^5"hÆ£ÎxŸ^•ô _RŸÍð¸ì)‘aŽk$Öo<@÷tq¤·7m«ßÜÝÛǸ» Ámç}–ÒÒ:Ùþ/xöâkYާ¥Àlõ§ñ ¼V>ð~jš´Ö3é·· e§è6ÖrÅ«Y\K»e4XëÊ"mjÚþKx?³â? ER8HÂ2‹U©ýiJnŠ„`á77yF(kxãÃ:~‹ãkŸh/{öFÙ¢Ö.-î/¬nµK¿ºÓoï--,mîeÒoï§Óe¼O±ÐÜ5£»[EÝkZ¦£¤ëž0ð_|5á¡ø>-vÎöûYðg‚uívúÇÃòɧj~$½×|]¤êš•þ£2›¨l4[Û8¬fº·°ÑíLÑDòøî³¬j> ÕµsW¹û^©«^Üj÷>Të-ÕÔ­,¬–ö±Akmæ"+kXa¶·ˆ$6ðÅ $kÖj_üg«é×Úmýþ›*ê–Ég«jqøcÂÖ¾%Ö-RæÚììx¶ÓEƒÅ²Ksgk5ÏöޱrnžÍÉ” W±™pGcòÿ°™•.ã ™arÎ*£ÅÙ†i_*­Äá¨bøº†Y“G‰ó,5¿­Äáá<\ ëáÕZÒB0U/ß8Ðsu"èÁ¹RöŽÕ5 r¾UÍÔ]|4Óã½ñvŸm6§%χü3ðî;4ym¿ñÅÓx: KH¸ÙeŸìë95‹;x•5ý“gçË![Ðtµ¿øBÓÄW­~ºö±eâø›Â ·ðõLJt¨tÿê6ZM§ˆµ8-¼9s¥_›ù/aŽ-J³Ñ>×qg¨Í.©kæÀóñ²|[ø,vQ>»KgÃþ"Lh¾G»×<..WEÕuyJY5ÛØêE»ŸZ{÷ÕV;EÕòØX‹zÞøã_ ÇkªZFö»kºuÝöƒáÝgRÓuIe¶šæãLÕu­'PÔ´Ô¾’ÎÜêV¶7vözFKû{”–e“åWøïS ¸ìÿ†1˜ì&––qYý¥F¯ dx,}züEƒà¿íL–¥N3áÜ/,>YÄG„ͳ|§ˆt=‹žÿYÊÔš*Ñ„¤ääèRŸ#UêJ)Q–'’¢Xz²£yÉZP§R1½Ïo»ø[àík[ñV½{¨i†oümã_ ødAã_x)t='†ÞÚËÄ—:ˆfû‹-¯^â_FðÄ6×rOm<š¤s]XÅsò•uv~5ñ–“}¢ t«í;P:‹Èšß†ü7â«Iµhc·Ôn´}G^ÒuGA½»H`yo´K½>óíö÷K:ÜÛÃ4|¥}ß…¼!Ç\#ý·…âþ(Ãq_eo ÇS1•\6Q“Ç¡ˆÌ©c¯FŽo‰ÀÖË0y„òé,&:yT3*ðyž70Äâ¹q¸Œ5fðôޤ붡iT©ÈÚƒŽ®œf§(sÞQUäŒ#<ø² øsâÜÐ,ÿéDS¾+É:ñwý‚›ÿJ-è¯ÖÎÿÙxerces-c-3.1.1/doc/html/graphics/index-header.jpg0000644000175000017500000003543711363617750020640 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ#È"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ø^Š(¯õ ÿœp¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¯tÙ«ãXø í7‚þÝð<ø˜ø>ëÆúWˆü'«Äh6‹¦ø“Ú^½yâß ™n ´v÷^"Ðt»+í= ¹‘5í¯ü.¿Dÿàž¿µ„þ øÇÅŸ>;Ú§ˆ¿eÚSJ¾4x~þIŸ‡Î e¢üHÓZ[3RðÄ÷!¯õ-.H5;},^ÀÍ®ø{ímáq/8Ëòº˜ü— G0Ä`ªRÄârê©*øìº”¹±ØlºtëRTó7‡æ©ua^Zôã‡ߪ´¾Ã²Îθ‡ “q^gŠÈð­*ø yBt'ÎqPʱÙÍØz²ÄäpÅòRÍ!‡­‚ÄPÃV–6ž),,¨Wüì“€2O¤úW¦|Vø;ñà‡ˆ´ÿüRðïü"^)Ô<3 x¸xzãWеgMѼQbºžˆ¾"Ó´mSRºð¶³u§I ìÞñ,ZO‰´û[›Iµ-"Ò;»f—ôûÅŸ²§†ÿà—Þ%ø±ûN~ÒSè¿< ð^ŠÏö9Ð.n4û´ý¦> kÚ÷€<[¨é:|ÈÃÂ_ ì/´ÝWÇö¡,4íGÆö¶þÑo¯ôÉmέùðïÃ?ÿiÿŽSx§ÄçQñçíûGxâÚK¹‘®b¿ñFª¢ ÜEi¦ÙZÍuö½^uK=/NŽ9^D·ÓôÕtó²®)ÃçµeÊ«agÃ8\·ÅfÕ”áøª´©âU,å:p¥K,Ã9<Ö¥zsPÅVŽ .–#?«â q¼–VÁñD1¸^7Åçk+Éxs©bgREL$«biF«^YÅiB®MõZ°”phf¨×ÃgùëdQ_¬‰û1ÿÁ;ü%ûEé°gÄ?Úö„×?k½g^ð߀µ/ü,øoá_önø}ñ;ÅÆÎ×Gð‡Š ýÄž>Ô’oRÓô+½bÐl"»›ÎÕäðì)zºwÈ>ýœ¥Óÿm¿ þÈ¿ïn­n!ý¥|ð'Ç·þ¸‚Þþ+xçAðýÖµáÛWO½†Ýõ?ëVÞ"ðÝΩ¤ÝDmu 2îóMš7{V¼ä™Ö½„±´þ¯–<îšÅà1X7ŽÊmf8ˆ§Mâpí¥nZ°u(º”á ôeS‹=ð‡øv9\óÃ4Îipä§‚Í0Y„2¼ú´£yNq,ZÑÀ⦤çJRsÃb!Kõjõ¥†ÄFŸË4Wë·ísû7ÿÁ3¿a?Ž^9ø}ñóãßíã á þüø ¥ü<ñ—Ç;-\ð~“¨Ï¯üJñ&¿¤øoÀš]έâeñ@ðÿ…,ôK=fß¿©K,#ÒçºùÃöKý–¼ñ3öwø—ûl~Ô~<ñGì÷û)|(»:6©{ÿÜ7? ý¤~øZÞ×SÐ57Y”x×Añ÷ÃY®<1 ž·g¡è­¢j±Çª]ÿÂG¡[='P}áÙ¯à'Â/ٻµÿí×ñâO>üNñMׄ¾ ü1ø+áý\øÕñNãN{˜õ_i£Å÷VÞÐ|=c-œÑ[Ëo{>¦ê‹+;­MkЫÅ9v‡Çb¨æXYâñÙøLº¾]‰†iŠÆ¸T«>¡)×r£J­mMË =*µêW…*5eñ}n"­Ã˜Zy^6¶/y®+4ÁæØ:Ù-j8j˜¬Vfª*XwKˆÃॄ«æÆâ0øJXJ˜ŒE u>¢¾Ýý«?f߆ ~~Ï¿´§ÀxßÅÿ³Ÿí3oâ«oŠ~‡ÂŸ|âÿßÞéþ"ð?´ûHàÒîuD}/XŸNÔ4«{{MF= \–Î ôË; cWöþ̱·ìû7þÎßÿnÏþÑú§ˆjÍ"óÄŸ¾þË>ðN¥¯Çáëm7ÚÚ^ë:çÄ&mêì_øföêÄ\h—QÜk±ØiÑjÃKÔ¯–§äPÀåøÚsÆâ'šc±yf .Ãà1U3Z™Ž_õŸí𫇭—ýSõLjöT¨ª-ºN“©×„ð_1|A›p÷Ô08j¹&U‚Ïs Óš`©d0É3Iac•f¸|Ú5g†Æàó9cpË,ÄTªêMJœì?.¨¯@øÃ­~ÍMñ MÒ?fü\ñW„u?Zø¦òÛã?ÃYþxÓÂzÑ×uM+Qðާä<þñ ú}„^ÖF»áùÿ³.cñØBu¤ê ¾_KƒÅC†£Š§OF5 ¦©bðõp¸š{§ Øzñ…ZS‹M8Ê*êÒ‹”dÿ?Ï2Lwfxœ§0ú³Äᤓ«‚Åáñø,E9.juð˜Ü%J¸lM ‘w…ZU$¯Í (Ô„á_ø9ðãWí¯OáŸ‚ß ¼_ñ#X³Š)õ¼3¤Ïwg¤[ÎÎ\ëš³ˆ´Úy#x ¸ÕﬠžU1E#Éò××÷ü[þ áÍ9µMCöiñ Ų£9‹Añ‡Ã?ê8Ti]#Ã5ÕõfrªBƶEÙÊĪdtF÷Ïø*·Ä¿ˆ?°÷ÂÙ;þ û1øRø?«üAøMÇÚ›âGƒî$ѼmãÕï¯<8ÖcÄZt¶ú½¦Ÿªø—Ã2‚ú¯EÄú6›àï ¥ü^±ÔìõÃ_ øÇÁš™ñ†0ÐüO=ÒÉæ‹¹uMXÓ®DÙ˜H#”—75ðy6wÅ|W„yÞKS‡ò¼—_ª–g—f9¦;0ÁáëÔÃÃ^¾8ÊèeëéJµð·Ã*¸ãü_fÜ]W-Áãsj|)Ȳì¿$Äã(³À¼6k“fU³ƒs–¶)f8 ×ÄP®éà©ÐtjÕôÍ{BÖü-®k>ñ.“©h#ðèZþ…¬Ù\iº¾‹­é“iú®“ªé×qÅwa©i·ÖóÙßY]EÅ­Ô2Á4i$l£*¨ZZêÝëÚž¯âox¿Yñ/ˆ5Oëzÿ|Câj:ε*Üê·—ºÞ«$ú•ô÷÷Þ~¥yssuyw¨ÞÞÞ\ÜË5˵}û,|ð'Æ]#ö·Ö¼{¨x¶Â×ö{ýо=~ÒÞÂ7z=­Æ§â¿„ö¾»Òti5'TŽ÷Ãױꗋ¨ØXË¢êW.–ÂÛ^ÓUei>Ó˜ÒÊréæ“å†>²ðð”Ò©V¥:ºƒ|î­Ek¶Ô5mÙŸ‹eœ=W‰8–—ðħž?^–TñªJµéÓ¥W]':tëº4¥(ÊP•Uh>Y&|EfèÚ¥¾·¤iZÕ¢M®¯¦Øê–ÑÜ*%Â[ê±]“¤rḴ̫*Ç,¨®$Ž 1Ò¯GsçªS•)U‹…JS:—Å ÂN3‹óŒ“OÍõ~|=Ôÿb¯Û“öñ}ïŒÓÄ?²ÿü3?ü!ÚG†ît5ѵø]/>xƒþ[ OM’ûPþϱŽÚëFþË×ü?ö[³<׿ڰùvCåúáÂf8ln#4ÂÐsur|u<¿¥M\·/Í ©¶ÿy„Ìð­ÍY*ޤ-x6ýœÏ‡3\£+á¼çF0Ëø¯/ÇfY5xTŒýµ »:Ìrd*EkJ½~Y^ô¥vèTÃÖNÕRE{£þÍ_ÇÀhÿi¸|öïçÄÇÁ÷^7Ò¼Gá=\hþ#ûA´]7ÄžÒõëÏø\Ëpm£·ºñƒ¥Ù\iè̉¯h­áuú'ÿõý¨ü'ðoÆ>,ø)ñÞÕu{-âFšÐ²Üéš—†'¹ ©irA©ÛédêömwÃÞkn#Åç~WS’á(æŒJXœN]R%_—R—6; —NjJžfðüÕ0.¬+Ñ«^œpó£ûõV—©ÀÙg g\C†É¸¯3Ådx Ö•| <¡: “ç8ˆ¨eXìæl=Ybr8bù)fÃÖÁb(a«KO–T+þvIÀ'€R}+髨çöÔ~5x3öuµøuŸ~=ðÍ¿‹¼;ðöãÅþ²ÖWFºðž¥ã˜—ÄRÞøžßMð^²<'¥^ksxcÆWÚ‰­­~È—:DWŽ ×Þ,ý•<7ÿ¾ñ/ÅÚsö’ŸEøàO„zôV±Îsq§Ý§í1ñX°¶×¼âÝGIÓæFøoa}¦ê¾?µ a§j>7µ·ðî‹}¦Knuoÿ‚8k^<ø•ÿWøOñÏã­yâ‹_5^ ñ.£¨È&¸ÓáÔ>üS½‡F‡ ‘[¬-/›w¬6ö©q¶Ú xà³€WËcxÞ¦+#Ïø‡†–”d¼1™æ´ñتx‰ÒÇæÔrÙf\Ó­‡š¡„svÚ›ÄbJ¬9RýG)ðbŽ[Ä/Âþ!WÌr|ÿ‰|Báþ§”åÕpXÃdؼö†Q˜æ*WÃâ©ûlž"X¼Ž´TéPÁaðùž/ ‹Ág¹/Ö>$ø­ð§âÁˆ^&øUñOÓøKÇÞ¼‚ÃÄ~¸¼Ó54û‹«MN×n¡£^êZMôZuõí­Þwisms ÐO"85Óüýþ2~Óž9†ß|?Žüg‰¨x’m"cú vÚ—5µö¥uªø§WÐô[X!¹Ôl-”\j1I=Íå½½ºK4¨‡íø)5þ—ûBø/ö$ÿ‚•øNÒÚ-'öÂø%§|8øÆ4Ø‚iÚGíðrßP‚úÚWÀÝwªYYøûÂvŒ šG 9¾Ë ³ýíÿY]àn£ðwĚ彿ü'_·Åÿˆÿ þÅvŠ.¢øIû>|ø“ñGÇž"Ò¤Ècoª|JÓ<+áËÕ!³'‡r­Æùù‡ˆ8Ü/‡x¦–øŠ… f¶UQVxZYîQõ¥Ð•5^«`©å¹–9RxˆÖž ¿}Í%Qû8_poÇšâó,Íðv&®6£ŸÑXhf58S;––I^5%†¯ƒXÜVa™å¹ñ+,*Ì+ʳÂS¦ž‚ßð¦þ$Âæÿ†|ÿ„sþ.÷ü,ïøSðˆÿlh?òR?á*ÿ„'þÏíÿíOøF?ägÿ‰göÇö×öü¾ÿjgÿ¥Ññ“àßÄÙÿâGˆþü\ðçü"_ü%ý‘ÿ ‡ÿ¶4{û?û{AÒüM¤ÿÄÛÃ:¦µ¡Ýý¯CÖ´ÛïôJçÈûOÙ®|›¸n-âú3áü¦câwý¦[ÆŸúÕ:mðUïùK¿íçÿv»ÿ¬Çðæ½Ì¿Š1ø¾$Èrz”p‘Ãf¼[‰kά«ÃO”a£JŒ¥^TÖÓÇÖnœéN·lsŸˆÅøài!^âóWÁ°H¿5áþ/âZøžYËÈqxn:Ê*æ4éåX ~]‹ÉêSÉèæÿ¾X¼ß6§Á¯h°RÄF8)*õhKÙÚ§³?¦8ëÁnÁÐñg Á¸ž4Âçb0’Ìêq>3$Ìò\÷‰ÄβÀb2Ì›%Äà35‡ŒñÐÃâ)báRžF2jX_Ž4WêÁÏÁ&¾'|qð§ìÁgñ[öê×þ#øÛÅ:?€´‹ºoÂχ^øÞ-ñ2ÚÁáˆïôûãâ¯iÖ:æ£}aejoc·û=Åüj×Z\ÜßCñwí=ð^ãöjý£þ2~κ–½oâ-cá‰tý"ëT†Ôض£¤øÃz7<%«K`gºrëñ¨OiÝäVW“]X ¹ä³‘ëìòÎ+Ë3<Ò¦M 9– 1†ûNž3ËqY|ñ9z¯ 4ñXuˆ„\£J½JTëR¨©â)J¬=¥ßOŸ‹Âî)á®Ãq^'û#1Èkãieµ³ ‹9Àç4°üFâð¸|sÁU¨©,f3­ƒÅSu°8¨Eº©¹SSðú+öóöèýˆ¿à?°ÄÍ ~7~Ñm<¯ü:ÓuÏ ü'ð}¿¼wûFøãÄãÅ>!ÒÄ~Æå4óº+5þÍ®ðt°•ç”ã#õün?&.ÀCÙ¹cq³ÄN4e 2©FœùãR´eF²§õ˜ß£Ç‰x óý]­‚Éå›B¦9âpԳܺQÀåØ9cñy®>n¬cƒË¡…ƒ«WpÅUŒ¨Ê–qÅàÞ#ó¦Š÷?¾6ÿ‚jð爿e¿~×:w‰5oiŸáïí)ð«Ã¶RÝh¶Ÿ¬¸ñ¦“ñáµÅ߃Ŷµg¡i?ط˧s‰¡Ô#1Ûi:‰áð/ö]ø{{ðâí‘ûT|E×~þË õû/­ß„tK-{â_Å/_]žøs¥ê÷VZ ‚Tå[W9EQxuV”£ÏQÔTéUœ>J^qkâhp¶Ž]™cg‚¯™}w.Íp8¬šž[…¦êcqØŒÒ5– K¸â©âU:ΖêòÄb0ôªü9E}ïñ³özýžõÙg@ý¶dücÕþÉñQ~ øïÁÿ´…to üOð®ôë OB¾º½ðÌpø_[ðçˆaÕô[[KÍ-{ýwC²ŽÿQ½ºÔí4Omý˜`ÿŸ¿`OßµwÄŸŒZ¯ÁÍ{áGÅÔð¥çŠõýKGÿ…Oá߇š\õkúï‡Ã^/ñ/Šbмk⨼/áÿø«L¹ñG‰¢ðŸ‡tû7½½‘oø+q×áò¨gêc)a¿¶(d8Š3Àâ~½‚Ík׆aqX%ˆ„¡:›táUT£:upþÚ)¹úT<ãÜOO„pØ |Ú\=‹âœ Jyž å™¶K„ÃÏ<^Y™º‹_S©B0©VŒ¨âéÕÃbþ­ZXÃònŠõÏ7ý‰î5ÿxOö<¿ý¨<%¤þ-Óþ&üGøµá/h¿ oîôè4™<7uðùü3rÚÍÔ¶þ'ƒT‹Å <Í<ž‡Oï¿’ŠúL29†–.8|^5¹íC‡ž “¦\=O~—´QU!¥'Np”£ÜWÃqc¸_4©”fpUñèáëûl»Kƒ© E(Õ^ËKÜ›¥'*l­Ôª(¹ÁF¤üŽŠ(®Ã (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ ú“öQýŸl¾:xßXÔ|s®¿¾ü%Ðäø‰ñóâK¦!ð§€4É€};MwŽHî|gã;µ_ ø'HŽ+«ËýbìÝC§ß[i·Ñ–ëÐ<{ñ“â_Š?gM öSðÜ>ð?‹ß]xû⾯áØ5Ë?|U½H¾‰câÝRçRÔ¬u ;ÃÖžf™ ize¿†´]. ‹­VóK×5ùÿ´£ò³˜fu°O ”Î418ª°ÃÏ)C›/ÂÔ¿Öq´iÍJ5±té)CNQ•%‹©F®"2ÃS­õ\¸ug´1ýœ øiá…Ÿ?g zÿÆÿðMáqyäÁâ†~ ðîŸáíCá6±{}pâKëÍ#@µiõF¿kkÛË}ƇKK‡7–Ú—ÈÿðK½gKøqÿýžâ¬šÓ¼}â¯êZoˆ-Ž{£xÓ]ð‡Œ<£éZ­– ±M¦ëoŽ5M;O¸³ºŽË R‘Åw Eø[ᯌ¼IðƒÅž ñÇÃR x›À®•¬øORÓ6ÄÚUî,rYˆƒ Ö›c×V3¤¶—¶RMew ÖÓÍõßh‰ÿ´íãOŽ>5ðÂê*]"òTø9§øÓÃI¨xKA¾*Ö4ŸxŸÆÁâMRÙ,£Õµ-ZÒì/ï4˜u¶ÐãÖõ}oPºøšˆË¨ñ `&áÂI“cèÁJ¼ªâòÛ†– è*Òu18,Ξ`ïUÔ¡™Ã9^îj²æ~,å¼Q[„øï2…: ømÄÙF7†«KÆ<)—fx|Ç.Ãâ'BšÂasì’½ƒ©ì°Ø|6;&¯Fžš–WK/ÐÚ3þ ûQ|ý±¿hM/Ø/þ Q¤|DøwñïÄ—v¿üMû0øÒ×⯊g´Ö—Åþ-jž/Ò¾!Å©j^$ñ>©è6´ñRÜ[ê2_jFþ!gt Gó/ìûñãí!ÿOø]ûHün²øi£ø×ãíKû$Þj:Â{oXx;O¹ðV·ðóáúK§éþ.ÔµÝfÕõÃz%Ýñ¸×õO´j­¨ÏØm^ÚÊßÅ_ðTÚ¿ÄW‡­|Sðƒöý üKáÍ&×DÓ>*~Ó?³ìÞ9ø·a§X±{+eñ^â+=#SŽÚFyã“Rð«ßÉ{5Σ¨jýÌ—5òî…ûF|z¼ý£´oÚ§â6¡ðç^ø™áÏ|0ñÖƒ¡øsÀÖþø{a}ðôEðÎ’þðÔúØxgÃÚMÕž.“vöZ|³ CûNúçQ<\?Â8Œ F· e¹vj¸k’<ß œâ1ÆÔ«J„0¸jô°¸ ]Z1ÅTUjS«†©NF¼\ëSúÿ¹’ûdF-. €ZDåÏÆŸ‹¿i?ÚsãÇí;ñrËÀWŠ~3^xv‘ðæÛÄV>°°øw໇Ú.ÛjZî£kyuáÝ DºÕ3¯êÏ­IªMiö´²‡Ùÿg_Úïã·ì­u♾kÚèþ7ÓWJñ·ÃÆÿ ð݆£aá›í/Å4>½ñÄþ ñœ×ž]Œ÷ú÷‚Y®îá0ZÇ'ãÇÚûöŽý¡4]+ÀZÏÃØÏà_Ã+é9¿ðçìËð3þåLjuOÕ´xn5{ëýCWÕd‘ô{Y³¶µ=¤O¨¿³KqgdðúGÀ¿Û‹ã÷ìãàO|3ðM—ÂO‰Ÿ <_vš¶³ðcöˆð üOøE©kq‹pš´¾·Ö|=«é÷çìvnóiZݽ­ÅÅ•…Ö£§jRéö~N¼OfœO…ÈsFO…XÜ6«Œ–E_5š¥ŽÀâpUð5é¬ËB’Ãc©ÆºÄáÚL;aV·&"r§äxoÅü7á_ñ>S…âúyŽUÆ0²š|_ƒÈ§ZqG‡Ì0¬^MŒ«Vy†O*´e…Ì(©CéWxˆáaS N~SöýºÿjŸÚÏá7Âo€^2øOûüøGðŸãñ{AÑ¿fïüEø}qi©Yé¾4Ñõm.ÏMÕü]â_ A¤ëvßÕ¿h¿Ùº/ø¿CÓ<%c“ ‹OøKĺ¹{-"ÇK²KRÂÿQ‘ìòçP¹ºžI+X®Ír®t±5d‹S_(T£ `U\-xJpµJ]JT+KÒà§³7ÀïٳĿ³?޾j%ÓþþØ 5‰Þð'Œå7~%ðjèšo‚uëí&îêY­Æ‡ñBšÂ×T¼ÕukÝ3Ä–·:Þ ¶¶Ò7æµu_~7þÒ_¶Ç ŸµŽ´xÃ>o øÁÞÒeÐ|à]Srn,¼?¥LÑ ™//'¼º¾“QÖ5 §…oµyí4Í.Òו¯ªáw—ðîYƒâg×ózªÇ‰ueˆœ£,EYá©TÄΕ â«a°²£†­‹sÅT£,DãÍQßòOq\ŽãœÏá±Tp•~­‡Ã< –cìT3—àÝZëÄWƒÅÑÁSÄb(àž"xJeF4¿kà±>Öh{ßÙþ QðöÒoü.ñÏìÍgðW⣣F÷Ðü7ñ¦“ã-KÇm—‰–4é‰{­ø«Ç>žöSö+?xjîê;ÍgC‹PüVŠ)n%Š"’iæ‘"†‘¤–Yd`‘Åhä’G`ˆˆ 3ª WÓß¿m_Ú{ö]Óµ­à§ÄK];ÂÞ"iäñïxoMøðÃÄr\Û­­ËjþÖv}škËxà‚÷PðÞ¥áý^úÞÚÚÎûPºÓâ6RwWÿðTÛ:Âk»Ï„ÿ¿àœ?³ç‰îÖu?~ ~̳è? y÷½·¼ñ>·ã6;àÒLÉ)·r¯4’†ó62|ÇåÜUÁøØ,£.ÎòÌlJÉ3fòËjRËëW©^†6ÃË/ÅÎ5pJ£Ã¬Nb£‰£NœÞ^xËô~0ͼ<ñ‡4ÃñÆuƘž âù^_…⼊¿ÔÍ¡‰Ìð#‡¯špæ6že‚ÃVÃæqŒqÙÙ\l!Ö§õŒE)R™óÿÂí[Á? þ-i—¿¾ _|Vð§…¯¼E¦xÛàÞ§âïü'Ôµ=I4cEƒOÔÂÓVÕ´Wѵm.K/ÙI¥Ù¶}µ¦Û#Ü›Rf‰côxÃ…eu{™SÍF40|Gžå¹d,]$ñˆþ5~ÎðÔjÖÃø[Þ(ø)äø½¯ô‹ý/^ÿ„ÃÂv:…ôž]ŽŸªè?Ùw° 1ÿá þÔ¸;J¶GùçÂÚ]ƉáŸh·o —ZF…¤iw2[³½»Üiú}½¤ÏÉR4-$,Ñ4‘Dì…KÆŒJÚ÷ðÙ —b2ÊxŒêxl\¥:µ1GĬœ§ pk ›bs:¹® Rƒ<&68IÔœ#Ö­*ŸÄÜ}ˆÎ8§ ĸðXŒ¦½hP†WÁù&'ͨCZµ™Ï¼-L‹4­?kUÔÄâ2߬â!V4ñjC Žö·á—íEûk¿ðNoø)oŒµßø%§ü Ÿ < ÿ mÿ +àÏü6ïÅÿÂøÿ„Ÿã­þ•àßø¸–~‡ÄŸ ÿáWø’|Uÿ [ÏøM¾Ùý‡ªýžÂݤ?˜¿i?‚ÿ¼7áï|ÿ‚iÃ/ø…Æ?2ûPÒµïíK)ΦŸðÿeÛ§“ªÜºq¿þ!iŸ²ïí5û1xBËÁáïÚƒþÇü&:¿‰-µÆÖtøRŸÓâ‡ÿá¿Ó5(ìtÿí é.muŸíMÄjµCeý•7™zxZùœƒ‚heYÆ}˜TÄçÎ5ó¼67+öœ[ÄØºuð´ø{$ÁT–e†ÄfÕhcê¬~N/2¥‹¨°Âь֎•Ó8ÛÆœ7ðd´8cÃÙc)eG–q —d¹rȱ5¸“˜à«p¶#C ŠÉic²ìvŠ©–bhÓ¯šRÆU©OÛO>|ItÄ>ð™0§i®ñÉÏŒügv«áŸéÅuy¬]›¨tûëm6ú!òÝz~2|KñGìé¡~Ê~‡Â>øQ{ãë¯|WÕü;¹gã©·Ñ,|[ª\êZ•Ž¡§xzÓÌÓ4 /L·ðÖ‹¥ÁquªÞizæ¿?ö”YœÃ3­‚xl¦q¡‰ÅU†xÙJÙ~¥þ³£NjQ­‹§IJ*rŒ©,]J5q–h¿Æx5pêÏhbx¢wÊð4ªã^ ¬©æ¸¬:RÂ帉Ñ:”°UªµSéT§‰­‚£ˆÂ`jSÇâpÕ#ûáo‹¿ ÿàµß |}û9AðÓÂÿ >(~Îõÿÿà›ÂâóɃÄÿ üáÝ?ÃÚ‡ÂmböúáėךFjÓê~Ö×·–ú?––o-µ/ž¿àú~¡¤ÿÁL>龟}¤êúF¡ñ³HÖ4RÒ{ SHÕô¿‚_l5M'T°ºHî¬5=2þÞâÇP±ºŠ+›+Ëyí®"Žhóᯌ¼IðƒÅž ñÇÃR x›À®•¬øORÓ6ÄÚUî,rYˆƒ Ö›c×V3¤¶—¶RMew ÖÓÍý=¤þߟ,?ninþ~Κí Ô&µÐü+áÿˆú„µýwYðf½à=gľ/ðÍÿõ×ñ§áÿ7Û¯¼7ã N¾Ö4[ zïB—RÕ|C.£ùî'ƒ3<³*âîÈ!N¯ñ gòü>#/k“ñ//«ƒ©IT®çR¦[œN¬qµj9Îx\Â8º³Œ¡½?Ýèø­Ã|[Ÿx{ÇWZ¦WÅ^qÇ b±3¥†ç§ÄÜ€ÏpXø5K xhq/Â…J£FŽ™eU0ô0Ñ„²ÚT·ÿÁ/|;©~ÚðJßÚ3öÓRSâ×ÃÙÛö©ý˜ì®na†æøSÆwI¯xkO¸»t´Ó­uë›{K,ä[GÅ]~êym@7ê߀ž&Ñõ?ø.Çì‘û8ø#R‹Pøaûü"ñÿÀ>êÁÊYk.ÿgߊ×|I=ºâ!©ê^.¿ñ)¿Õ~ 隭Γâ=kÇþ×ü+­^kv:/ˆ´ViNñõݹ¶ñ²X%Ü«%»Oe6ÇfxšÜm<&# <¿<ȳ©äùdå8KÅYæI ŸŒ­9Söt¨Ô¥„¤éN&ý¦i›J­8'NSú¼³ÇžÁÔáj¸èâÿ·¸cÄ<žÐÃñ%†‡e‰áøKxoP¿²×5-V/k:««ëV÷zÝݾµu¦ê:²]G4öO‡lÖÝ#°’IO…ßu¯„Ÿ>|Uðå®—{â†^;ðÄÏ[†îçE»Ö¼â ?Äz]®¯oa{¦ß\iwÚl_Ãg¨Ø]Ëhò¥½í¬Ì“Ç÷X˜c3,‹F¦`ñØÜ·Aá'^hѯ_V”)ËM*s4£z‘\©7¦‡ó*yg ñ®Y:9Æ<Êrœï*ÆÿkeôkBž+ †Æañ5jSÃVµju#M{¾nd•ýä~¿ÿÁHࣟ~ÁI?j_‡³ßìûû h^/øxŸþѾ1ø u«þÒ:³ø¯àO€üKes«üD‹^šÏ]ŸÃ-¨Üèž]CÃñC¥øsLÐt‘ÚZÏ,¿ž ð—Æ/Ú›öŸÑüUñ‹â~¡ñGöøýã¿ø¼kâP–ún—sâÍsKðÆ‘eaakš^‡¦½Ý¥½½–™g§iÚn—³Ó4Û(|Ñ=?þ)~Ò´çÇÚwâå—€4¯üf¼ðí#áÍ·ˆ¬|?aaðïÁv?´]¶&ÔµÝFÖòëú‰uªg_Õ!ŸZ“TšÓì6/ie«êžÕô½{CÔ.ôkDÔlu}T°í¯´ÝSM¹Š÷OÔ,®b+%½ÝÜÜ[Ï+Å4i"Ê |Ïðv‡8{+…, ÄÔ¸w—c3O­TXÚTêÇër©<q°u½…9B„ì¥qv·ëÞ1øÑ˜ñ‡gø<s‰ÇxuŒÏ¡˜PÀa! Ln[ˆXzÕéU’‚”1Ž‹©ƒ©ZKÛÆ4ÖµJ´aÊÿuw~Àÿ±Gü_özýˆ¼û2|\ý¥¿hŸ|_ý›`ñ¿ÇßüZÖþøWá_о ëþ ñ‡|_áÿxbÊ}ƶÞÓüG¢x­ü1«Åv ¸ñ«w­v¿žŸðUüø+·í㜀á—™sÐçödør¤^WŽãª×Æ/ø*?íÉñ+SÓõÏöYðOÄô+ ê´—†þ G¤þÓºŽƒb$1éSüF¦¢¶–I5ÅäñÚø>×ÀöÛ/¯,ŒÒîñ.¼Sö¨ý­¾=þØ?|#㯊þý´›¯øXxw^ñ§Ão‡:ƒ~&|Gxl4ø4ûÌÚÞ»ˆfÑn¬%·ŽçNÑ<=§ë:妠Ù÷qó%ÂÜY—q>OŸg‘ž.·ú·™dYÞ+Äx¼Ö¤±õqy~:9– ˆÃÒÂ`²üU\éR˲øÐXxT…JñsƒçýÄ_<'Í|0ã. àšùVQGšðÿðÖ]…áZIa2ûÓÅä¹Îa…•lFažá(Ö“§ŽÍ*bg‹•)Ó£‹©N¬jGïOø8JÎÖëþ •ð¦K‹x§{Ø7Á—–m*+›k¯øhö¿h„°;%÷W‡`“H«åßÙGöäø«û%ÛxÛÃ:‡< ñ_á'Ä»6³øð?⾘5Ÿ‡Þ3ŒÚIbÏ9ŽÿZ²ñF¿âÆ}Qõ¯xŽÝî¬u¸mK‡D…t¨îã¿»¹ï>þÙŸ~xPøqàÿ~Í_<¨øºëÆ·> ý¤þ i¿ü4úÞ¡£iz&£qoso¨øÄÚ{]ZxÃÿ»ƒ[’ÂÓ Å§¬÷—sÉëdÜ-‹Áxo”p¾m‘às¼NC ŽË*ãÖŒ¥N¼ªûl664*¥ˆ¡%N®¤^Q©8bhÎoã¸ëÄŒ§>ñî·p¿ã¸S^–¾UÄTòª¹„°Uja9'Í2¿¬R’ÁbZØlγÇSp©Rl&•Jœ¿mþÒ¿ ¿eðO}oþ =ðcáv©û-k¿~%h¾3|"+øq«ø‡Ä~ ðÃj¯å†ÎF±´¹øƒáM^7Oð4~"²¸ð}–©¥}¢a¸øñâ‡_ðDï^'øYû>~Êÿ´µÃOÚ_^ðwÇ?þÔŸ ®þ.x+Á7ž.ñOõ/üDþÁÓüA¡+V²øÂÑë׋sŸŒ ¶´†;y§™? ÿj_Ûö¸ý³< àß‚?ÛàÁ¯ÙÓÁšý¿‰mþ ~ËþÔ¾x'UÕl¾ÐlæÔ¬u[ýZù£µ{Ëë‹[Ö‹¡}&¬úEƧi§]Zv³Ÿí{ñËöVŸÅÇá>¥á]C@ñî”4ü6ø™áˆüuð¯Ç–1Gq~0ðŒ—Ú\÷$WwvÍq¤ë.ªÖ7—–Ú?a¼º¶›ÇŸq?†h`ó' n#*âøñK“æY¾+ã“R£W O ÆgÎ’ÅT¯ >/W œqW¯,- Ö­Fƒª}e?<7áð¹çÖÃa×ð;„xÛ?ᮣ€Ê°ùþ+€ÇPâ̯…§ZxhÑ–7/ÃG4Ë0õ¨¼N ŒE<=n&Xi]øùÿý®><~ÌÿdȾÁ?>|+ø™®xOÄÞ ³çÂï‰ µ˜|Càïø;ÆZ~·§§ü&ÚφF­yuàmHÕ5 GÃ:•ÕÎØE-´±Ù]Yý¢¿ò­çüþÎsáÇþ¬ؾ¾ øÁûnþÔ¿¼ â…šÂߨSövð/²âñRþÍÿ³¬×5Ëm\ÒüG¥Çu«k·úÞ³ [ëZ&—~ÐÙë°,æÛìW6œòÚËâÚwãXý…¾-þÁ¾ Ò>ÿ´øÙñ@øƒã/ø¢ÃÅŸðœé÷Z©ðç^‚×Ã:Æ“¯ÿ`Z[ɪ|(ðœrêø?V‘ì/|D‰{ ÅÆ›6èbxGW'ËpÙfC„ÈçGŽøsˆñ˜Hæ’ÇJ¶-Æ`*ã1•±¥ñ²¡…öQÃÓxÎ XŽz“¥K,£Å|·â Äüu€â|¶‡‡¼aÂø Ë,áédØ|»á*SÂ`¾¯NuÊÝIS« T㇭B½\u:Ø TáGŒðÛ;;]>ÖÞÆÊÞ+[;Hc·¶¶8`†% q¢€ªˆ ýh«4WêçñÌ¥)ÊSœ¥9ÊNR”›”¥);ÊR“»rm¶Ûm¶îõ (¢Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@ÿÙxerces-c-3.1.1/doc/html/graphics/scmprint-3-header.jpg0000644000175000017500000002657111363617750021527 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ#È"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ø^Š(¯õ ÿœp¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢¿t>[øçöPÿ‚JZ~Ù_±×Â_üSýªüoñ‚ãÂ^<ø‰¯øRÏÇš§ìïðêË_ñN‡/ˆ´êÞú;M9´O_ë½™·‚Óâñ?‰RûCðÍœvŸ—ßo?Û¯ãÇÂß|<øÙãÏo¼HÚ4Öþ3ñWìíà? ø÷ÁÓhúþ•¯àÏü9´ð´ÚhÔcÒ—ÃÚ¬×zô·¾¾Ô´üC%×Úbø|·Šóë3ÌèeY.¶W“g•²Ã‰Îž2Ž# R,n"†Q ¯NxjNSˆÌðµñt ªÒ¢¡Rœ¥û†ká.EÜ/ù·ñärŒû‹¸f‡pöMO†±†S‰Áã¨:ù~Ä4sXUÁbªFTiâä²þÀŸþ|%Ð>=Åã‚?þø‡XÃöß¿gωüHð]®µ4×6°XÞjÙZ,ç^ÙÝiÿm±¶¾Ómõ8—L¼¼¶¿¹´¶¸÷+ñ.C†ÌédØŒ× G3­Zž–¥NYÏZ”kÑ©µì–&µB­,;š­Vœá(S’œ[ü÷ À\gáìGà¸o5Åpö…l^#4¡‡u(RÁáñÂâ1®1n³Áa±4ªÐÄc#JXj)UZ°tªrü;E}yû5þÅ_?j¯þÐ>?øaàô²ýœü#cãh:í߉SÅ'µÔ´oëV:G€ô;!ƒY×®¢ð«gŽ©}¡E6¡{¤ÛÅvéss5Ÿ·_Á+?iKOøïÄöž$øâü-ðØñoįÙÿÂß´|{ð&‚-¥¼šëÄÞ Ò,î´Í:â[{©WL6§}-´ÖZ]þ¢ÑùñœaÂù~2¾_ŽÏ2ü.7 _†Äa«×TêP«Š¥†­CÚ©$©Ó]ˆÆaq¯(]Ö­F¾_‡Õi©bª,&¥*3§F¤ãù«E~ü(ÿ‚[~Ñß|9§ßèÞ%øáÏkþ>?ðÀoüTÓt/.ðd–ÉwcâM+áòX_M¦é¤[Ëa}â½CÖíÕ­ÕÌ–Ö—0Îÿü?ø[∼ðOOZ|oñ'ÿ ­Äyc§èÞ+ñŠlü! ~ {+-KP²´Ó5‹ÅM\Úé·÷¶±AqäØÜÜF¶ïÕ„â<‹,Æ<׉žSi˜ÆhÍáiZ«U¦£~j/ØÖQ­Ož”¥J¬#7:rŠàÌxŒ2Šy%lÓ‡3\.#ª¨d•1XYцaˆr¡«R”죉O‡rÃUöuá ôjJš§R~qE~£k_ðIÞø…â_üGø¯û0|(‡E×t? øÆÿ¾/Ëà_üNñ.¹á¯x4O…鮸^ׯ+ºÓ¡ñN™¤j7 á-8x‰o´kë뛟~П³ÏÅ_Ù{â~¯ð㇇‡¼]¥[Új1 {¨u '[Ðõ0ÓþÛWÐ*øs}¦~Ö^¼øƒðÃFðÖ¹¬Üø’ßEÓü7à?^ÚøNÖü7 [ê[iôO>_xŽÒ­õ/6õ-â´¸½úhg™EG”ªYޝöê¨òyR«ÌU,ñµ^pæ…E -*•ÛæK’®‡æsá(§þ²*¹eF|!RâzU°Õ(×É#[O.¦ó T+QæÆÖ§AÞ›å”Ô¥Ë É|·EûÕñ·Ä¿¿àŸ¿ðO?سâoüûá÷ƒÅ¿´N™&½ûEþÖz€ô?ˆ~!øg«ßxwDÖ4 JuÝ/\Òt}"ãSÔ¼[áKGÔôù4; OÀñéFÑ|Mâù.î¼¾&âYd3Épx|ørøþ¯b19Är,“„r)ñ{§€þÖÇSÀG‡Â°å_]Ë£Š”'_ÛâjWÌ0Xl.•ZÕq ^Ê•_ÁZ+ݾ8þØßµÏíá xOãˆþüC¾ÒË2j¹ösÅYŽOŒÉÞS—aêÑÃUŽ+'ž#VxêØ¼N €ÂáñÕaŒ«^2–#‡§ˆ­CñþŠûnÓþ ÍÿRÕœOâ?ÚáM·‡¦U+ð”~Í?µ¿éð˜“Oá‹O4V$Äe6·WRCôü¿â_Ä?Œ_ðVß„ÿþ h_|/wâøNÞß@ø-໇þ²¹Ò?fˆz§w…ŸPÕ-tûqô»]T{;ÉûÄZž½¨´vÑÝÁmX¾ â,§)Ï3|ç‡rÚ2Œ‹3Î),¿ˆ«ãþ³W.ÂË gˆáü¶xIW„*/¬Bž.œu„ÛŠ{Ñðç€óŒÿ…¸w…|O­›ãóþ-áþÅÒÇpe\¦x9ægC+ži•."Í0YÄ05qª¼,qØb)9Êé¨6~QÑ_§ðVmD×¾?ü&ý¬¾7›ðköîøà¯þ”CméÞ4ÑtmLø…áÉšÚ$S¨¦‰­|<ñ¥ÌŸo!ÖtŸ¿¸óndÝûÙŸ ³à£?ðSÏø(Áø)oí7ðKá'Ç¿h~Mð9ôO…+ø#ð£ÆþÔí¼uð'Àž0ñ«ë÷^Ó>!ÍeâSY¾›gVî4Ô•…Õ……¥µªV#Œsj¹¦M”äي͸b§Íæíl²ž…,F <%)QÈóGˆ®êcé¸N¢ÂR”a7)Aò§èeþ ät2ž:Îø¿1=—pOa¸:µ|·„§Ä_\­Œ£^®:oˆ2Šøj-ÑTêQ¥GRœêE§:q•EøE~ºÁct?†º>±ûülðÃÿ ü4ñGí—ð \ñïÄ?øFÂ-JÒ¼Yáï |1ñ|Z‘Ò`¤W¥¿Ä=kG¾½{Kiï¦ð­µÕÓÝê3j3ž{âü ö˜øY㋯ øÿÇ_³Ï„<#¥x7Bñˆ>7ø·âu øy|G¬ø§FÒü5¨ø³Æ¾ðæ§sâ·>Õ5;½+Dðö­Ÿ¤M¦^_^ÛBNYââò|§5ÌqT²:™´s%G­[ë>5eÙ• 5)§ K£Œ•:t]%ωU¨ºT¹ª{8üçxÇY7g9Q–bx¯”ÓÈñÚù>¯Õjå¼KƒÄcòê~×õHþ\éZ‡‹tص=Gï‰ï-­moî¼4cðÙ«ö)ø»ûUøö€ñ÷Âûï-Ÿìéá+ø¯@×.üJž(ñE¶§£xßZ°Ñü¦hñ οw€õ[+{ N÷BŠmF÷H·ŠéÒææk>ì/å³Âçxü~#Ëò|æžRñ‹ñäëÓËx¤ðÔ%ÄÖ¯™Ñ¢ðröþÍJYb¶p¥çfþq Á¹nY…Ìó\ó‹x{ž,ŽYTð8ü$òª¹£Ìia“Äâhæ˜ 8<®¾*ŽcJ¦¥wGFY}áèVÆ|…E~ŠGÿÊøñ}àox›Ãþ;ýžøºÆmáß‹Z8Öú¶‰æŸ{a©y 1øƒÃz¦‰¯$pAi6¡u¥ 2ëôâ§„?eŸø(_ì‰ûC~Ø_þÙ›öŠý—<3qñãÇÃï\Zê|cá{][ñF­â ¬,ô«I¦½Ðü3âýOIÕmü=áŸÜëš§¢ø›AÕ!Ô4/7çŸÃoŸ±t? |3ðÿö–ý—>*êú—…W^~9þ˾4ðö—ñcV°ÔõÍC^²²ñWÃïˆ÷ÞñeΙ&«q¤Ùx†=BÓX¶ÐtíHeäVmqQübý¿>iŸ²÷ÅØßþ çû:üsøc þÐmi¥|uøûûNêƒâGˆ<j&·›ÂÚ~‰á¸ðÍ•…î›w©é3ØM(G×|Coe£jj¿ÛVßqYŠÅgÔ3áÜë%âºY¶•lú”ðX|—3É(ã©,dó—C:y¦¶Y ‹ †¯„y¶ðð„(Bœ¤¿®<1Äá?Õ äœyƼÄžâ2\ϸ_WŠøSˆñY}ia¡Ã‘Æåø|_ãðÙË¥SŠ£‹—ãðQÅÕ¡,ele:uk~Ì¿°–­û_øâOÄxãá×ÂoÙ«ám•–§ñ3ãÄýF[oéË[ë––Z}µ³DúÕüq-†¡=¼·šu‚Aua÷¯yªéšv¡ú ñ'Ã_³‡Ãïø7ŸöêÓ?eÚIý¢<¡~Ñß /n|uáï„þ)ø;¦øoÇ‘ü[ý‘Ž£á}7AñT’Ýj«e¦]*ÒÜé‘ñ#ÙÀZëN½føÓö^ý«~|5ý‰þ:~ÁßµWË?g¿‹Rø{Ä©ü½ðµ§ÅÍÄÞÁ_d¿Ò­çÁ|O„|7Ùv# Ÿe+3â>ã<‡=Çquž`ñyOæ”qx, 9 )LJéå9ŽlVgŒÁâ±j9(c)N”°´¾ªÿ‚PøóÅ_ ÿcOø+ïÄÿê¡øÛáÇìÉiãÏkQÃÄšGм!ð¯ö›ñ‡µH๎kißOÕôë;µ†â)`‘¡ ,o2Ÿ2ÿƒjtW?µÄkšž£â_xÛöQñ&¹â/k·—:ž¯©>¥ñ3àìp\ÞÞË=Äâ%˜ åšY&½ºó¯.dyeù~Oý“mχÿ¿bÏø(wï|=ø¿¨xÇö¸ýžï>ü<Ò|+á S—Bñ%ÿ‚>3ø .|io©ø«DÔì4Xµ?‰:&§%·¦øƒQ]ÏV½m)n­ítûÝø$‡íðëö ñÕïůŒø™âM"çöi¹ð xwᶃ¡k1!›XømâUôx£ÁÖ¡E¯ƒµ;ˆjM|5Iì-E™Ž[‰íN'áœ×‡ñžX\¦­|ORÈ)äó…8:¹•<&A•Щ <ÛNQ¡Š§‰‡,œTj*–ZÝùÜÇy6E”}2ü_a0¸[ŠxÃÅô)(åSÄq>{£ s§Ì½Ž#ŠÀb9©Êxzñ–R”Ý(rIÿCñgŒ¾5ÁLþ~ÐüQ©xïâ‡Ä[ãþ§©x‡XpÒZ-ÏÂ/‹ÑÜÚiöñ„µ²·yáu†Xa‚ËLOÑ좷Ӵëx_Âk‰¥ÿ‚ÈüB·wfƒNÿ‚ÆxÖÊÊ"~Kk_øk[¿"!ÑcûEÕÄ¡G¥sÞ¼Cþ 9ñËòƀ_¾*ø{Æsø{áïü-?ííÚM„ž/oøK<)ñÂz_Øô¿êþ±m·Þ&Ó¯n>ÙªÙcLÜ[ý¦aµÇ]û&øö×âßüòÇã&—áïø_Ãß?ਖ¿|)£xßIDñM§…¾"þÐ~ñV…·§[ÞjV6ú¥½Ž¥®¥›ªjºtZ½Üzô1-ÄŸA™å8¬7ñaK*9GüBÚ9] ôáa–+ ÏkKÆÜ²£†­‡’‚ŠŒiÎ ;Yxtø£/Í8.y=|ߌÏ0¿I‰f´°R­˜šy.)pî Ž¡…á±ðxø{ZMº•£ˆ«U¹Ö”êvðXëi|ÿpý¯ôÿꟉt?‡ºgìߤxCÃzÍýΡáíÃTýŸüâK‹["æI,à´]{]ñ&²–QƶGUñ&¹©Ko%õü—õ‡ügZiü+ÿ|ñ©)›â7ÄŸÙĶ¿'º$j×¶ÚO€þx«Ã÷¬r´ƒÄºÏM«Ï–Iõe†’ã=¯üGâçüÃAÿ‚–~×ß´—ì×ûOk¿|}û>¶³âÙ«Æ~ԴmïÀk¾²øà¯ˆZ®“{ቴk[ÛÜjÿ õ»µéú-Ìú]¾¹¥«ê_“_µ‡íMãÿÛÓö¢?´Š< 'ÂO†Ÿüað«àÂY¦sáévé.¢‘ÅmöÆ¡.£©\jwÙZ‚—:vjeÓ4 )$ð83 ŽÍèxK^†QËð|/ÃkÌ1QÂSÃãžeÃxl¿ Gðøšõ1ÅJ¬³ Ò:*Õ©C¡‹š£¸ñc—pî3é%,ï‰òœÎëá…?e½à©ð2óáöµ¨kZ6â;‹ˆi¯ßxÍáµÑµ+ˆ¡³Ñ>Ë¡èðCm3ý®[ŸÌ¿ø)ïíà/Û“öñÐ>2|*ð_Å/ ø+Áÿ²¿‡>^]üKðæ¢É©x§Mø¥ã?ÜM¢ÏáÏx·I¼Òÿ²|s§Z¤’ê–ºö¦›­ÀúdvÖp^]ûn­ûl~Ë_¾ |$ð7íÝðgöˆñ‡Ž?gÿÜø#á·Ç/ÙbóÀu‡÷ÙÞGƒ|wΈZ–•£k}Šé`‹Y·}wX3ÙGumg¥]ê^(Ô|AÁ—ð¶y…ᯠ1œyJ\5ƒÍpyÆ&­J†sƒžiJ:ÚTªIC4°ÒÃâhÓ›®°øú•iBq§Q™¿‰|#_Äïð¹~?…qó㼫„±œ'šñJ‘á¼Ây7×kWÊ19ªå•3:Œ18LE_cIc2Ú8zÕ)U«BþûzþÚŸjKߨ‹Á³/Â_ÚgÀÞýœ¾x·à‹uïÚ ÀþðÝö»àÍCð o| âÏh÷·úDÞñ`Ô¥›N𽭽߉cF´–BâÖÇäŸëÞ=ø«ü2Ô> üTø¥ã=3àÞ{á†ñOŽ5Ÿx/Àº.£¦Á£ÞÙxOÃúÜÚ…¿†-ît» OžÛÃÏ¥ÚMgá¿ZËnöú=¤Iè¾,þÍž3Ô<áßÙwö|ý¢~hKxšO|Dý¡üYá‹Ïø­omt§ðä#¾°°Ð´4ÐîtÍR èÂæmU¼Kç_x›áÂ]gDý§¾$¿Â¯xRÃâŒÇ‚~éº.¯mãë×ú‡‹/‰üãkûëÿˆZvŸªù>,Óî­"þÐ×uhíIÈp¸|›ÃYf!Íç…©ŒÎ$±Y¬°•±¹ªý,V6¤*×pŽeZ¤°øxáê{Jtñt¨â!EÆ­~Ç™†yÅðæ£ñ3ö4ñ‚5 ÿˆ~ÓàÒcÖ¼]ðÃâõÕ®‡£ëÚ­­”Úþ·áK½AõínïRÔîtý>I‘ÑâÌ>–}K5áÌWe¸Š‰bpøJXjõ°²Š½\iVÅaq*P“q…|¾U1˜y¸Î0>z´ÿ?ð·Ÿ`¸–‡ q®SÁ øîŒ¸]ZÏ)+:7Ã_µí½¢|qýœ|5û ~Çÿþ!þÏ¿²ÀñÕ—Ä?‹>/øÍªi×~.kútö·6G]±ÒšM#O·ŠïMÑïÞÛKžùno¼9ርæÐ´*k+ïjý˜ÿo{Ÿ‚¿ ¼_û7|hø?¢~Ó_³¯×WÔþëºäÞ×|5¬ý¦Þíõ+K{Ïì]F;ëKMnÞÅã² â mOG×ü'¨]jš­ßæø>âÊ “7XlÃW…x»2Ì2L—6ÇaªçuxC—VÊž¶6¦"xz™®šø¼ 1xÙ5B4pXŒT+ÆÔÿ¥³.+ðã-Ïs¬†y—dxÏü2ÿW8×<á|&&Ÿä܆Æa±Ø,ꎊÁäøêÔç„Í~©‚‡-x¬Ö– êµ¥Z·çÕ~œÁÿå$³—ýÕïýPÿ+˵?ðHÍùµÍ7öYÿ‚›ø«[N>kºÇÁM3ቹ(é¿ðžxKUÕüoý–³¡·]@L÷¦ÖGºeYDq¿cïÛOÁŸ¿oÏ þÖ¾+ýžÛàÁ jÓÃÿþÞÛx»Ä:N—{ð_Äÿ ,ÝeñN· [j:•æ¡}£ëÞ#ÔumjÊÿSÔîüO­x_Áa«i·–ì,nü#.‹‰Æ°na¸ñkâÂÖ}+X¤ü¥ø=ñûÃðÞ7ý®¯ü)ãýáæ·ÿ ñ/í=eásB°Ó~!½Ծ1éŸm¬$ѦÖ°ÿá'þÃß§½¬^%—CþÜŠkXüA%¤fþÛã÷†ÿjÏÛëö´ý£¼ áOøSÀ_o> Ùø^×â6…a¡x‚çþçÂOü8Öîš Yñ5γák»ý.}?\¿ó´[í.êíl®îe±·ô— có$áiâµòüúùn3—bêåõc–?&Ÿöm\NQÄCÚQ¥ˆ¨ÕÓštãV2‚¿Šñ ‡ò.ñ¿ÙƸ‹1Åx«“g9vIœÐ¡™aqÙj¥[ÖŽ¼ja±0ÂbªÐœ}¥:ôÛnhΔ§n{öŸý§þ3þÞ_´u¿íñoÂúOÂÿ ø+Âià‚4 ¡u¦|=ðdmtV &H-#¹Õ.þÛw&«©5†=ü¯ki™¤èº6‘§Eúkÿ]ë^4ÿ‚†|ø[¯x‹_¹øm ~Çí| º¥Ü^“ÅÿÆÿ‰º·©Í¦Å*Bnµk øJFuk¸|1¤[Jío¿!«ìoø)ïíà/Û“öñÐ>2|*ð_Å/ ø+Áÿ²¿‡>^]üKðæ¢É©x§Mø¥ã?ÜM¢ÏáÏx·I¼Òÿ²|s§Z¤’ê–ºö¦›­ÀúdvÖp^]úØ®§â¿U•ªy&A•ñvR§*8 ˜ÚY$0js›•OkŠö8µídçR¬•iUœ¥9J_!x­Žâ.ñïÄõ,7ñ«”ááVT+â0™6/‰ž1`o&ÚÀṴuZSR£SJxhS8FÓºF‹£è_ðmŸüÏDÒôý"Ñ¿j‡3½¶›goe “·Ä?Ø®&žHíãdã†(Þg +¤Q«1 {/üÏÅÞ%øûÿÁcÓ}wowñà„iÒO)y>Ácm$vvöªË HŒÏžY]þ^ÿ‚ÝÜ^þÙÿ²<÷R¼Ò­¿ÆûPò1fXü!øÃckO;aµ·†‘]ÿ‚H~Øÿ¿`Ÿ^üZøÁá/‰ž$Ò.f›Ÿ§‡~h:±ãⵆÞ%XHñGŠ<jZø;S±h†¤×ÃTžÂÔY˜å¸ž×äø'OÆÿþÈÞ9øñ®/ Í{¬|6×|Ey¨ø[Uè×Zž‡¯OâøƒK2ÜZË.™uªx_^Ô"Óïå²¹KYîmo­ÔIåIëæ\=›csiáðsPâ> ʲ¬ž´Ü)ÐÅ㣔ñ­(Ô”’‹¥[…YO•EU‹m¤Úù|/ðþ…|ÇæyÅF'ƒ|~ÆçÙí(7ˆÆåÙ3Œ»0§Vzqsxj˜\¾¬°ôpÑtß±…8B/ÙÅÃû@èÚDß¶÷íû­M¥i²ëŸ·§íaoi«Kck&§knßü@­½ûÄn¡…–êåZ(åT"âpT‰dÜW±þØÿ?d?Š¿µÿ~Ì_ j¯ø«ãWÄO‰?¾;¯Æ3áìß -°<ñO¤ƒÏ¯Q^Nÿ",ëþÅ9þ¡Ö>ƒ¿ä®áoû(ò?ýYáNëþ ©#Ëÿpý»ÝÎæ'ö`ÉÀÇìÏðñGÀtýkâÚ(¯Ãÿù!83þÉ^ÿÕVý鯾$7¿úÇ_ÿLaŠ(¯®? (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€?ÿÙxerces-c-3.1.1/doc/html/graphics/samples-3-label-3.jpg0000644000175000017500000000332211363617746021315 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ x"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ýø×…ÏLj‘ꚤ.žž Ö..õ;„Ci ¥›Ý³¼fXw—òDH‹ vyF²9XÛÆü)¬xnóSѵ{Ë[íkÂi­Ã%ýš·öN¡¬hv:±†þ¤I.›q©YÛÌH$•ítvË¡ê¿ä³|Fÿ±š÷ùG^wáízûÃÅž¹¦Á¢ÜÞØ™Ìx‡Ã~ñvŽæâÚkI>ÙáïézÖ¨…Šwx¡¦] k•†öØEyoo<@Lø¯C½ñ¿Š¼¦Yiþ×þëÖZß‹|/qðËáïÆ~!¶Ðt侂÷Gñˆn4-.ïL¸ðÝÕœzWˆõŸø‡Åš–úõŽ­â€ÑÏ©â?‚ |-y¯ë:õÏŒ¬|1£ü"𯆅¡xãá÷µAãoxê= Fð¤?¼7£GàÝkGÖ|)i¨x5Ý;IŽ}.#c¦ë£ÜYjžÆˆpø‹þhõMoF…uáuÒƒ<þÃw³Éyw Cðýü:ÞƒFžþiu94Ø|8–gV–MWÉ‹µÑ§â‹>>ñ†.•â jÞîÆâß×[h^Ò¤¸µðbø†? [Os¤i6SA¤AâZÖÞ)fd{1¤ÙγZøwÃÐé`Ù⯃¢ÿ„ÿFð„Þ:øn†—zoöÞ¡¡Üépk?/¼/d~ßCcáû Ý_ZÑW[Õ®&ñ…´šW»Ó“ÀÑFÿÚ‘çø«ágÃ[Û¯‰úÃTñëêŸ|m§øgNÖüW­èzw‹¿¶¼k/„´Ý&ßÃú?…¬.tWfýR+ÿøHõuÔí4­FEдÃ0ŽÃ?à¿ñD§ipA­xƒÂº–©ªihí,­þǤG>­¨Å6…¥?H’ÞkxÅš6™¤I§ðwÿ~%êWÚ§w¯Y¶¡ xƒEñe½Üðœú·Š|<òI£øÆg¡À|y®Ù4÷auoÿÂA}2_êQÜO4zž · L_|øwâOøçÅZ–­áÿ x/Uø“ñ#Á¾ ¿~|6à ¥žãß ø¶sªøöÏS–êÖÞ_ø&ÚÎþ[›-Rêmr;‹í2 Ϲð„->éÞ?³¶Ö¼Q¯_Ýf뺖“ã éú_ÃMvmYƒIмQðú ê~+Ö!ñ…ô6Öt[x—@ÐÞ÷R}-EÅîƒwk¨pÚwįiº©á¥›BÔôYµyfľðw‹ol.uëh­u{ïjþ)ÐucÂÚ•üvöÒM©øfÿIÔ>Õig|—){imqz¿Ä_ë^Ó¼s.‡eáÝ8é®,txCÂÒê—EÅŽ™}âmGÃ:“©ø»S²¶¼½H5_Þë’Éqö£q}w,À=Q@Q@Q@yñdðçŸÿ YÿÒˆ(§|Vÿ’uâïû7þ”[Ñ@ÿÙxerces-c-3.1.1/doc/html/graphics/samples-3-label-1.jpg0000644000175000017500000000407611363617747021323 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ x"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?û«âÞ£áÝÇ5¿xIð…´+ïë¾"ñN»ukc¢è.‰m}ªêZ®«}{siie§ÙZZK5ÝÝÍÌ0ÛB¯4Ž??þÎ~~Ð^ðwÆŸÇ®øá½â¯ÛY6¡g'…õøoÁµßj·Ö¶’Mq{¢ÛxœxfþÿB:ŠÛkºf¡§Ë«éšVª·z]§ÐŸÿ䣸ÛþÆMWÿJž¹¿k×ÞÖ,õÍ6 æöÄÎ`ƒÄ>ð÷‹twûE´Ö’}³ÃÞ+Òõ­Q îð CLº·+ í°ŠòÚÞx¾fJÒº×Ú7Í£I]ßÝv»nÍ{ÉhÓ^óköÜ7¶xl3Œãìþ¥û;8ÊU:\’U£&éÆ1R‹J”¤Ü”Ô—+Œþ˜ñV‡{ãox;M²Óü1¯ü4×lµ¿ø^ãáŸÃï‡ üCo éÉ{îâïÜèZ]Þ™qá»»H´¯ë>3ñ‹4M/ë¶:¯‰ÃG5þŸˆ¾ |*ðµæ¿¬ë×>2±ðÆð¾5þÂмoðÿǺ ñ·Š¼ršáH~ øsFÁºÎ¬øVÓPñkºv“ú:\FÇM×qeªxd?¾!Aâ/øI¢Ôôu¼þºðºéGÁž Gá»Û‰/.ô|þoÁ£Ï,ºœšt>KCªÉ&ª"‹µÉ¥âo‹=ñ†.“â jÞîÂâßÃ6—[h^Ò¤¸µðjø†? [Os¤i67SA¤CâZÚÞ)fxÞÍt›9Ök_øz.›¤ù›‹rnêé4½Ô’Õ¹$ô»VÒÍê`¨cS§U¥JŒTTÕ9N3—ïT¦íq¤å*z:Šœ%*žò䌥íž*ø3ðî/øO´oÍã—ñ?†àøiw¦kPÑ.tÈ5ŸˆwÞ²? ðý…î±­hÉ­j×2øÂÖM«]éÑø(ä:¤Yþ)øYðÚöçâv…ðÙü6O è^6–zwŒo<3âÛíOYêRÝ[[ËáÏÛYßÉseª\Í®Eq{¦[Þx=Ï€ü#kðKNñý¶µâvþèéºî¥¥xßÃz~—ð×]—_Ö`Òt?|?›ÂÚŸŠõˆ|Eá}ë:G‰í¼Iáýïu'Ó\Þh7vÚ‡ §|Iñf› êžhzž“«6¯,Ñø—Áþñmí…νm®¯}áý_Å:±¬x[R¿ŽÞÚIµ? _é:‡Ú­-/’å/m-®"f¯ñÅ:׆tïÜË¡Ùø{N:k‹Â𴺥Ƒgqc¦_x›QðÖ…¤ê~.Ôì­®ïV WÅ7瓊__Ü£q}w,ɺNíBÍÅôVR|·kÉYÚéµÌík&´§Gʼeդ׿R-Ѧ¤¹d’ÖrN´ã Jš”ÔÔêF|=QXòDzþ¿á¿>ìôy¥Ýÿ_ðߟvQE±ì¿¯øoÏ»iw×ü7çÝ…QG,{/ëþóîÚ]ßõÿ ù÷g’|wü#ñÀô ‡ÿN6TS¾:ÿÉ$ñÏý‚¡ÿÓêàRTeoùøÿôˆÄ­¼}+ëþÉOÿOW?ÿÙxerces-c-3.1.1/doc/html/graphics/saxcount-3-header.jpg0000644000175000017500000003013111363617747021525 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ#È"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ø^Š(¯õ ÿœp¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢¿RÿàŸþþÐ_¶>—ጶgˆ<9áxŸÇÚ?ƒu¥Žm#ƾ(еXéÚ§c! ªØÙYkŸŠ.t™¶º„^k}JÞëK{ëi¸/ˆ_ðTø*¦›ñ3ÆÞññøQðÂ~ñV» Aû%ø‹öjøgâOxoMÓ5›+}þ}w@³ñuõ„–¨RÓZÓüN–^!Ó'[Ò–-;Q³ÇÅcx§ø‹ÃYQ„Ìq¹v[ƒÍ1ó̳‰dôÕ u\E,<0§–f•±ÕÃMâ'*xl.Î9â}­Uû/x[“ã8‡ˆ\_ÆSá\‹0Ïq¼=•¼TâZÕs ˆ­ý£ y¶TòúUcˆÿe˜bëCН,%,=(Õ©ùãEuž´ø‘ñÃâÅݥΑðöÏÇ>-O…ü5à |à.ÿâ/‰a]ÃZE†·©>›á-NÖu‡ÒôÈnµs¥èš :z]j%-n.Oè…?à•Ÿ~!I¬è? ÿhOسâÅ I½Ö5?‚_?híÅ_í­´ù µŸEÓt™4[C̰ÚÍsâ+M: ©á‚âú' õó.%ÉrHPyÞa…ʪV¥ ²§ˆ«xÑŒš„§V¬báN„*·Mâjû*.IÞJÍ/Éü=â¾'Åæ8C(ÆñU z”V/)ÃT”1Juaõj5½z¸Š”9jýJœ*b ¤“¤ôoóŠô‡ÿ |Qñâ÷‚¾ Ø = ƾ7ø“áß…ViâV½°°Ñ|UâOYøBüBÖv:Ž£ei¦ëŠš¹µÓo¯mb‚ãɱ¹¸mßïÝOþ -ûExkâ?мãψ_³ŸÃ-7Þ%ðß‚´¿‰Ÿ>)Ïà‡|gâ øsŶ^økq¯øbÓÅþ/Öm¬üU¤é·ÑÙø:+T×ZãJ¶ººžÝÉy—ðþOZ Ï6ÁàëUÂOF•ZŸ¼­„§V• V¡©:ÉU­N<””ê5'5ÊQÇ"à4âjqY 湦™ÓÉñ5°¸w*x\ʵ Øšx\\äâ°²•=i{LG³¥ES•EVtá/˺+ïÿÞý£tÏŠß¾øþO†,~¼sñsâ×Ä+Á?t›B÷>¹‹Ç—ÑK¦Þ)¶Žiô7LÓ®õ¤×±jzfq§ßÃmäµ?ì“ñoö@ñ¾‹à¯Š©á«åñW‡¡ñ_ƒ<]àlø‹Áž2ðôÒy ©øU–ÏM¼’;{‚±\A¨iš}äi5¥Ø¶k CO»ºXN(áÜ~3—೬»ŒÅá–/ B†&Yb0î,O=A¸TV­KéÂNªÃÔ…wJJmæ>qÆQ•ãs¬Ó…sÌ¿+ËqÏ-Ì1˜Ì¾¾ž ±5°^Ë‘JxÜ6#õ!<ñ´*á#Uâ)Ê’ùŽŠýðü?öŒø—ðáíàÛφÚ~/ø¯Ä°´»ñN£¡êþ ³ð­ÏÄ;øÏâ=þ½áí7Á^ðV”>ërO«¯‹õ ©Qðõ•¶›>©ª‹9ϰƿ ,>;[xÏà§Ç/ƒ7ÒøoSø›û<üGƒâg„¼3â.VÊÄWñézD–—_¼zqºµ‚ûL·Ôç³Ó//­µ GN¶»ÆaÂõ1Ë,†y—¼|±õòµ…öê5Vc‡­WS%$”1.½Ô©R“R¯R•HÐU%nª¾xƒG'žS„sµ“C(Âgï0ŽSü—†Ãã(f”¥S°¸¬6#ˆ„eOJ½)âÝÎ-ø~û4ülñ?ÀO~ÓÚ‚¾Ýð7á׉í<ã/ÿÂGá+oì_\øFÒ×Mÿ„jó^·ñ~¡æÜxï±ý³JÐ/¬ûW|—H–:“YøU~»/ü«yÿÿ³œøqÿ«ö/¯Ï?€ÿ³×ÅÚOƧÀŸ <2Úö«i¦ÝkÚö£y{g¢økÂ^ÓöKÄÞ-ñ©5¶“ hv ëç^^Ü£O+Egc Ýüöö²ðd|PñŒªæõ0 ñ.3(§Šr–’ÀaòÌ«øÚ¸Šó§í½®:´gR'J1£©J§Òñ—†QÊ2¿ 1\6³|ã4ñ„Öm[)TaŒÄG8Ži‹ÂNŽW •iákPŽÙájÓÄb(Õ¥ˆ« x­m®4?|D»Òüew¥=Õ…Ñ6÷A¯øsÃ>´º»Š{]"ëÆpꈑj–º]Ý´ñGaø_!Ç縚51p1¡ûšS…9U«ŠÅPÁáá*µ§B“Äb){lEGÉB´­4ãøÁ8ÿxË%àÌ"†›×ÅSúÎ.5% 5,˜ã'ìi¯k_& ºÃa!ËSŠöXhʪ¥Æš+îÿિðS­júèühñ/ÀísGÍosû8üXý”~ßø/Ã$…Âú’é^ø¦Ëd;KÝ3RñΡe-¸¶¹›íÊ+à}5Èô›HüI>s­'ž·“é1O „ \ÍöW†+’fÚÏìÿhRJ Ÿ;ÊýÖÊÛ'ÅçX¨Õ–o•à2ïvL,òìâ¦oG Šn|Ó«•e3£:ISÑQ«N§´nZƒ¿Wp× põJT¸kŒëqEZxœN 5Âãxr¯ã2ìEUG5Îð˜ì<æ«Ó•jäéN”©5Y8kÑ_ÒïìðÛে>Ú~Áÿï"пh¯ø)gìùñcã6“{qok=ß…|ákm7à¤Oe<3›áa?‹þ3xoí=¼'FÕ`»Š}öÑæÓA¼ñÏÃïDoŸPðoÅ?†>.¼Ò5¡cpöš¯„~%|;ñ úNµ­Ì%µ¿Ð|W¢] i£òäŠ[hå@§n<^ã,?æ¼E•að“ÃÕÉjÓx:Õë~ï9ÀÔž' ý£‡å£ÍO ³<?¥‰ŒéQ£‹Œœq0¥{<$Í8'„ø#‹±Ù…,V ŠéΞe†Ãaf±<5š*Ts yN)Ô­X¬UL“‚ÇI:˜9QÆK–V§ àgˆ«›E~Ó~Õúf›ÿý—ôÏÛÛáí…Œ_þéWm_èö°C6£¢ØZ˜ü9ñÓL±µn•¼­­´Í§†P„ßÛØü*¼—Wù~÷Äÿéýœ4߈ÑÚ¬Ÿ·'íiá{½à‡$>^±ð7à‡‰mçÓõo‹—i‘q£øÃâE»Óü%{Ù®¼?à´Õ5¨õ;+ÍLéòeƒãXbð ,ºT¸’9œò³Fø¢Šô/ŒŸ~1~Ð߬~Ïÿfˆ ¾/øløÄ+ai­i—×–š¶…âOê-0Ó¾'ƒJV«J¯R¢º¨£†Ÿ¹¬9¾B¢¿E#ÿ‚e|x¾ð7޼MáÿþÏ1ñ¿Ã Þx³â7À?üfÐ|]ñÓÁ:˜d½Çˆ|# ÛÞèÖwZKÃ=½ö˜¾'—S„i6Öw¹ŽÅöÿà–_²WïÚËö‰Ò´oŠÞ*øp¿¼6óɯü,×þ ê~ø›ñ]5_ü@¿Ó#øQ¦h±Ã©øš/êþӵﵖµ£Ë¢øjHî¼Û¤ºhGŠã^ÃdùÞwO1§ŽÁðý VÌc€µ|D?wíhB&à¤ñ‰Åa*ÊpÂÖæö‹¨Æu!ì`<*ã¬oð§ ×ÈñFeÆxºx\ަqà°U_·öªÕq \#–ÉNYŽ:¸ü7#¤ðrÄΕ ŸšWØ?·?À_þÎ5èz®•§kž ñΟ¥êØ·šæ£â«´Õ<'â˜ï5ëÉôË‹™Jö²Œ×å¸<×9Ï ¤«Qu!*U»Œ¡8KXΜã(JÎPn.Pœàã9|ïð®uÁYþcÃ\A…XLÓ,¬©W„*BµœcRŽ#^ ¶½)B¥9«I):uaJ´*R‡ÇÔQEz'Î…Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@?‚ükâï‡>*Ðüqà?ëñ†¯ãÔôè÷n¯¥_D¬‚{KËgISÌŠImî"$Ãsk4Ö·1Ëo4±?îOÀÛ¯áwü^ð'ì±ÿø/áÏø¿ÆÚ†à…ŸµÃ{;O xûEñV½p–±ñ>k ®&±®Ímê¾’^ëWÚ}¾½ð²ÇC‹PÖ¡ü~ø ñ3á¿Âÿk:ŸÅÚíàŸxORð¾§à­_ĺ¿‚õK nµV³ñ/ƒ|e¢Gq{áé×2Y[ê&ÊþÚ}TÖ´««S¢ÒÃõo‚ÿlßø&—ìÝã­ãÂØûöôøñ›ÂW1ëþð_Åí{á _|1ãK1çhÚ½¿‹<u«ø“U‹CÔwÚuƵavË=½½ÛYAy2Ûþcǹu Îê<3Ÿb3Ì&¤¸oˆò*¸<.' Žœ%ìè¬Åf8lF”+¸ËKKû:µ)9GÛÍNþð;›eªj‡ð=>Ìqô)ñßq£Åbp˜ì¦•Jj®>9-l³‡ÌkË Ï/&Äÿiá±4áK=cR¯ŒüMý‘¼qáoÛ{Ç_°ï€¤_|HðßÄ-ÁºÁ˜Ú®›âß é<𖹩ù³=¦“¾×´ýo^™®e²ÑÚßWîdN–Cú¥ÿøýŒeÙ þ Oð—ÁÚ×í™ð“Äß¶]„ßÛRýŸþ|0ñ§Š./5][àïŽïüW¤ë‘h~½Ð´KWÅ3èÞ%Ót»»ÏìXt¨tÛ[ýBÎ8¿ÿfÏÚ÷ã_nM[þ ñgMÒ¼Mñ[Æo~Ûº¿íyû6~ÆŸµ½ñ§â_Å-wâĽcãŠ< ¦ü<ðŒßQ´øµqðŽ? jÚ•ÍõïŠôïx¦óL¸ñ÷ŠnôÍPÖî¾Ëà«li¶Ú/ƒÅØ_3ªŸÊºÔñüˆÂã±Y6&œ3,­…©…Åá3ù¬d²ì¢¤kB¦†YV¯ .&–"Oô¿ ãàñ_q6_šay²rœnQ€ÎsÜ÷C-àl6#£še‘ÉkÒæYnc,vT3:ù–Z©`°51Ô%‚ÇbqËȾO,ŸðYˆ6¬ì`Ó౞4±±‹?%µ ý¬mn„¯DˆOuq QÀiX޵þ MâO|Yÿ‚®þÑñ׉õ]sÀ?t€ÚÃ_\Nëáý?üð—ÄMBå,#)o5Ô¾*ñ?‰5+›©ã’îñ¯4ûk›‰,t]6ÖGWý¤fxÿà¥~ÒŸ¾þÒ>øasûHø[ö¢ø¡mñVÇÀóë:¯åø­eã_‰Öÿ cðÿˆ'ÑSBÕíí-¯ü'£ë^,½¹Æ°š†³£écO°°òOÛã÷†ÿjÏÛëö´ý£¼ áOøSÀ_o> Ùø^×â6…a¡x‚çþçÂOü8Öîš Yñ5γák»ý.}?\¿ó´[í.êíl®îe±·õrl§[ЏC4ÅeXŠ8l‡X¬º­LejxÚXü™,4×4ý–&xZXÅxI©Pu`åË9Eù¼WÅ9f[À¾;e¹G`?´óŸ²û,Yf2yžAŠ¥V53,$éÙU¢ëb)IÉZ½ C…uu)ƤK¿àãøÛÅÿ·GÁ_€:еHþhÿ²®ñrëÀ¶²}›KÖËþ=gDñ6¿qwnº§ÂÍnYÿá!Ó¼5v,õoI¤××vºwƒÂ¼3›eøéTÊ«ag‘VϪgöpƒÀTÆäY¥Ï¢ô–#^œ—3•Z‰Éësìxûøo:â¤lhq&—ñ/‡¹Dø]G¥C5¯†Å`ñs–4•LU›µJ¼(áèÑ…£J8ý}ûiký—üõûèZ7ˆuÏØøãö×Â~(]R¹Ó›YÐ$ñÇíi¯Ç¦ê"Xï¬í¼CáýÄÖ—‘Ïkµ¡é:ˆ„ÜØ[IàŸ:6…¦Á,¿à±^»´ƒLð/‡~Eã [°hm"ø›mðïâÖ¡¤ë1]JI¸ññ‚¾¼wo$—íu§h ÊYmBû_ÅOüðüþ ìÿ´_Â?ü]øyâÛRðâÙø'Æ’øÇžñÏ‹kmKCøàFuŸÃºž¹¤M¥K¤MáÿY^øcWÐõíb…±ÔÓJÖ4ßÍÚcößø]«þÊš÷ìû|øýðËáçůi^#ý¡~4þÒrøBˆ-Ó´K­6öÏÂúj|?Ôõ/ ®Š.´}0\I¤_ÚÇ{¦Ú]ék¢gÄZö¡uå`p¸ìë-â~Àe×[âÞoŽžv£…†‡Ë8Ξc‹ÄºÿYúÊņáhÐúº«Zué*mÐJ”ýõŠÂpþaà÷çU”à2,èÿ‘áñÜ;ˆÇW†?5Äg<ŸIåî‚Ãâp0¯˜¼mLDëNŽêÕi¨}wB†#éÏ jRë?ðl¿íŬNϪþе)•@ %¾ñÇìQu P8<¬À¯mý‘uÙÿá·üöåøñ¶0xOÆŸü)ðŸâ¾µû/EàVøß¦|?Ô øocáq¢Íñ{ ÚèÚ—ˆüoâ-Y—PûQ}/\Õ"ÓíVùÒæÏ=[ö±øwàOø#·íûZø'âž¿ñWãÆ/ø£Áš§†<9¢êÞÒ|=á¯|×f'¿%¶ñ5•ÏöÁßZDtßêÖ‡PÔü; —PÅ{}>™Ð~ÇÿµÞû!øSÃÞ4 .ðV§©kŸáÔuv±ðµÖ©¹½Ò4xn~—*Âáò¼·;̰Ùfµó<Ã(­ŒÁçï S« `2èâéQ•Z‘§ ³ Jz®µ*R”0JTIB3_ƹ®wÄœCÀ9+ˆ|<áåâ‘ñ fØÜV.ž.–77Ž‹táRPϳ&ðøz”ªâp´ëf>ÏèRœéKãK·Ñ4+E´y¤µÒ4Û.ÚK†G¸{}>Ö+H^wŽ8£iš8U¥hâ‰Ë…¿ð‡ã7Å€~:Ò¾%üñ®³à/hÂD³Öôi c-¬Í\iÚ¦}Þ“®h÷m &÷EÖì5 &ôÃÚì¦òÓoxzòÿPÐ4;ýV×ì:¥ö¦^jV^DÖßc¿¹²‚kË_³\³Ü[ýžáä‹È¸wš-ž\¬Ò+õGÀ‹?þÚxßAøóû:Gñçž2{kíÆwþ(|?½Ð%ÖRMOÀ#E›H¹¦»3kñ1èºýæáãw¨iɧ™_îsgìÌRžUS;¥:Jlªœpsž3VQ§ˆ¦©ãëað•”hN¥IQ­Z ´`éCš¤á;ä0ÅKаKýdÃpÆc Æ¥Zø¯êÖŸo¦Õæh"Óm–ÓÚ–“ª]I»]êZDÆEK”'×üÿýˆÿcÝk[øû~ɶOÄÚ5´-kDðˆÿjë߆:oÿ†×úý„ú]ö«¦…z…èבl®g±•u ›KËÝ2âòÎ-oKŽòæY>;øGûCêÿÿdŸÛ&Ý­üoãÛ_öÐ×›ÃÇÄ ]7L—þðÄMeuߌ’ë¶:˜Õ?á!ñÍôVöºôðŒÇá»k+_µÃ®$ϤŸ”ev}•GˆèðÆ_œå=Âe¸,ƒ-ÍêF­LŸ9Æâ«aó,×.Ãˉ­€Érì%zÙ`kV‚«ŠÃVŽ „)Ô¦§ýUÄtøK‰)ð63Ĭ÷‚³O0yþ7Ä9¯ T£GÅœ-‚ÀÒÆå¹_âpØl6Ÿf˜ü-\¹gx\2£†ÁfeŽÄT©CõÖx×Xÿ‚•^þÝöðSø$Γ¦ø;Æ~Óþx /ÛSCµ›Âÿüöú=·u8|4Í2ó\ð¡Ñµètiæµêz»Å{!¹ó«Á?à±ô†Ÿ¶ÏÅŸ‡÷º>³ð‡öÉð‹û@ø ľ¾²Õ|)­øš ='ÿ&ðÞ¯§Mq§ë:Ü2øâ_ö¦Ÿuwg©Kñ"{ëiš PŸÇáw´­'MÓf𧆵¬¬­í§¿¾Ðt»«»Ùâ‰Vk«‰çµ’Y$ž@Ò¶ç;wl\"¨¥¿lƒ?¿`¿Ùköiøà¿Œmñ[öqø×`<ãð§‹47à6µ5Ö‘âÿ ß[ÝøëÃ:½½Ý‡ƒµ©‡´k= h·ºÇï‡ö:‡ˆtˆ/¯õ º|-ð¾yÂyÆ<ç‚ÂË…3.,¡…­†ÈkÐö¸\T½…IË¿1Âaœ¹”ªÆž'(ssÔ9ñ~$pŠ9â?ýGÙ¦y(q–A™gyßÖ2ìodµ)Òx<4kÓ§ ®¾–WÆ{INq£V¥(Ƭ•UOŸÜ¿àœþ?³ýŽ´OŠ_·wÆ}{Tðÿìáá­PøE{à‹[[ Û¯Ú7Æž+¶GáÞ‘¤jå4ûûYmñ§ˆ59&³k]7E¶7‹­j–UæðTŸ€Z¾“ûU\þ×ÖÞ<Õ¾1|ý®|;§üDýŸ¾!_D>ÃáÏ Üéšlš¯ÂÕ‰-­“¨x9gÓ­t«Û+;ø¼&ƒ¥L×Ö‰âȬ¾Jý­¾:ÛþÔk? ôO ø§âÁϋֲÌñêZâÏø"Î÷Ó^Þ]ëz=‡‰l/om/|W¡[Ap¾;Ô®,õ©”g˜\çâ, êæ¹C-Î8z•:K…«T£/±œ.«çyUZtó,mªÊ8˜ÔÆe´*Õ¥„Ëfx˜^"á)p•êg´ðø:˜Z¹ÆMƵ±5£–Rã™Röõ0Ø¥R.X.âJ­“BQ§FYue¹†? ‡ÇcøŽ„=ûö”Ðî~+Áf“áKvÔ,gÿÛ{GÕ>0­¨2®›£jþ.ø¿¥E>¨‘Ù›ãgÃÂír¡;ËYXòä¯Çúûö%ý½|NK'Jñ2ÚM§]y77f¨|=­=”·:MΡ&…­iz¶˜ñ}·IÔ ¦‹y§uÞ#øíÿˆ:Œž Ÿö\ÿ‚˜xXyàü4ðVµðKÄß c“Ír,m|q¨ëÚÇßM1º¹¸hõ¨ÈewìÊgÁøî#Áâ2<Ó5Ë3~ Ìx‡*̲xa±Zç5#ŠÅåØü5lV…Äa±’ª¨Wpž¾tïZJs¦yÜI†Àx»ÃžG.â~áþ$à^ÁðGðïærɵӣ€Àçy6&\N3Âc08jKBŒãŽÂã(Ê1Ãâ(Ö¥Yüóû2x{ÃÞ.ý¤¿gÏ øº8%ð§‰þ7ü'ð÷‰âº1‹Y|=­xó@Óu¨îLÁ¡>›sr³TÆ#,\ȯtÿ‚Ó.§ñ/þ ÓûEiž>I5¯ üð7À ü3ÐõH¤—F°Ð|OðŸÃ^7Ô¤²±Ÿuœñ7‹õ¿¼¬‘˜êyDyìÑ¢ùƒâÇ}âßÄý#ÄßfÛ?ÙOá‚ü-§è^Ðâñ–«âjúÖ•â ýn߯ž+×ï™oî¼SrÚ¬ñ]j.-Å¥ž—áÍ/LÈÒÚâo¾¾,~Û±oí)¨xWâ¯í¯û:~Ó—_tè^ñ/ÄÙ Xøm.ŸñMð¬÷—Ÿ<ñ ãK}þí=N&Ôüu Ö†òke¾³Ó-´FÓ4†i%áÞ/–G™bpTr,ã)ÅåT^™å8œÃ–bðøÏa d°õý­< ðx§‚ÄâR“N¥iV ƒ*å¹wø“áN‹¸w.â|ß9á¬ã#â¯bpys†Ë)cð™–V³YacˆÀ׆0­ˆÀRÇá°•kª˜š5)áqŽ8jíÂú|?ðHø%Ä_ˆ–?üYð/BŠUò.¦ø?ªÝü^±±²ŠßIðì~ hû>Ÿc*Áb°[jr¤“þÚÿò?ø&ÇýŸÕ·þ¤¶U~u~Ø_µˆ¿n?ˆÿ-´…Wß?eOÙk²xWàÁýVüßkâââ;o¼U⻆Ä×^!ÕHÑ^îiÚá-cÒá‚ÍSPÔ5ífûë-öÂýšüOû xKö=ý°~þÑ~2ð·ÁoŒöß~ øƒöaÕ<kâûÃ?‹/£Ñ|Ocñ ¶žt'½ñ׌¡¾¿ÓtÿjXø‚µÑ¬.ôxµgù™pî}„ȸoS-ÄÔ«ƒñ+Æ8¬› ,=|VW”æ•x‚PÁPŒkF…j˜/íl<±ðõeN3x—FUiÓSŸé´8Ï‚?â f¹:â»ëxÿpÞTâœ]J´²üóвÈðÌhâñøÉR•Z2ÇÑȱJ–'×å©€ÂâÕS–±¨?ñ çü Ž¿´çÂ=Çü,ØÀd~ ¨5ê_ðK?x—áÿìGÿŒñçƒ5›ÏøÃÁ?²¸ñw… ø«J°ð†|yð‡âF«®ü[ñcx²ßƺŸŽõ­gÀÿfÕ5h|tãu­ø;GÓâ°Ñ£uÑyßÙ³öÇøuû5þÈðQÏ„¾.ð—ÄÏx¯ö­øuð«áÂü=Ðt-rÏMñ¥à?Œ~ŽóŃSñFƒ©YèÖú—ÄÍúêãAÓ|E}‘a­Ý.$ö¶–—üx¬‡>ÌxOÄ:ò,UVyâU›a2Ú®…zµò¨cø>ukIÒL<ã >,DiÔ«N2¡^êV„cR§vUÄü%ÃüqômQâܧ…á>ãnͳ|5j”°¸<÷‘q †n¤a‰¡í±ùž†xšXjÒUèÏC[Ûaè})ÿÑøkO²ý¦ƒ2áìÛ˜ø³Oƒš‡ðVU•dõ¦áN†/§ˆ°µiF¤¤”]*ØÌ,jÊ|ª*¬[m&×Äaxï‡ðœ+àÆ?3Î(â1<ãö7>ÏiA¼F7.È¡œeÙ…:°ÃÓ‹›ÃTÂåõe‡£†‹¦ýŒ)Â~Î.ÚFÒ&ý·¿oÝjm+M—X´ý½?k {MZ[Y5;[vø§âh-ïÞ#u ,·W*ÑG*¡‚¤K&â½öÇøÉû!üUøí¯øóöbøSûUxÅ_¾"|Iø¥ñÝ~0éŸføYiãoàê‘ßü/Õü¯ëš¼Zwˆu{ojšô~,ºiÿµµ]*ÏJ·–çM±+ïx^ugÃÙ2Ä`ñX E,¿ †¯„ÆÓ,M ØZqÃTHBu!g:NtçÊ5)JNÒ²ü?ÆNYø‘Äøš–7Ëó tó§1Ëñ‹Äå˜ÿöœ4°ÕttãR¥:´% r£ˆ…hJ\ÒùŠ(¯xüÀ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Šýjýµ%ÿÁ?à›°–ýÚþÞÖÌ«…àÿÂGûbsœn?y¸'û ~JÑE~wáÏû¯ÿÙÂãoý^bOè¯ÿܼÿ³/À?‡åÖû‚Š(¯ÑçP¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(ÿÙxerces-c-3.1.1/doc/html/graphics/api-3-label-3.jpg0000644000175000017500000000436411363617746020431 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ x"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?ýø×…ÏLj‘ꚤ.žž Ö..õ;„Ci ¥›Ý³¼fXw—òDH‹ vyF²9XÛÂô»»}ya›Dw¶÷·sÚé¡­Lw—¾]ì¶P2ÙE%ˤ·oh­–IeDŒæL­{/Çßù,ß¿ìf½þQלø_Õ¼-¬XxƒA»Η+\i×âÞÖæ[£‘E{h·p\Eý¡“í}üq­æ›}¾£§ÏmkmsÚ$ýš|_¡|-×<+sðƒÆ:WŒ<'©xÄÚŸÄgÁþ#Óô­j÷ůü!Úï€t-rëNL¿Ó·øãá©4Kÿ|5Óü!7…>ø6ûÄqø×GñްþðF¥ã-kXÐãÒ®nÞþóÆZ—HÕ.Ó^?i‚ãßü9ñ·‹<ª&—®Ú$ñÅu>¥k0[ù"·¼­üK¤j:´A½†áRêëLÕo¢Šýo¬n&MCO¹µÔ-í®¡õïVšGˆ>*ßëºòxKIÐô_ |GñÛx—AmcÁ:=ퟅ5Ù|.uoZh>"ûvƒmã¿ÛË¥ÁáíW̵aoo¥ÞÈb³—Õõ ÚüOñ/ƒ>êá¬zÆ‘ ø»â.¿ñ;ÀÞðWÁß xŸÀ’x[Nñ‡t]1çÒ>xenÆ›¨iCÅ^/Ð|=>®ø‚M#^µŠ ß5ÏȺOˆuÛ_³Òï>ɉôoøGµµö²Éw£ÿki:ãYÇ<ðË=—™¨èšl“\XIku5´SéòÌúuõõ­Îæ“ñÅú!ð÷ö~©Ï Ûkv47ÚF‹ªÛG¥x‘¦}oC¾µÕtëÛ}gÃúŒ—WÓMáýj-CEYõ-Zx¬#—UÔ^èê<#ð£áœŸüW“‹§ðÿÂï jþ°“âÂ¯Šºƒþ#x¯Å á¶ÑüI¨é ñÃïˆe§G{â»kq§iðG¦ÚÍ£^iGS»‡Ä~ÃñwÀ=Gð™’ç\ÑŸân ¿µ++M7âO»›]kQøˆt›‹¿YüðóIñÂ÷~^…®5Ëÿ+Hº]ô6>²°¸Ò®çùëYøâmrZÜÉ¢ØXø«Qðî«®ižðŸ„ü#¤ÜÞøSOÔ´Í í´Ÿ èš6›¥Ãom«ê]ÚiV¶Vz¶¡:êÚ¼ú¬װ쟋þ:#ÂÎ×>{ÿjþ×4yüà-Ó|/áÍBÖ|M¤iþðeØûUö£y®ë¯‰Ó[±°c¦økLÔf·Òg­/Â/…>£âË‹ÝCÅž.Ò#ø™à/x OðG‹|vÚìž%ðæ«¬øžÂ÷Æöz'‰ñ`Ö­µkÝJ$_i-áù]4­M‡ˆ­ÖæÉ—¥ñ×Àï øáÅÞ¥©ø‡Lÿ„êËIð.»[|Røcª.°þ0µÓ/µ Eð«K¹¸ø“ ê>³Õã–÷ÄšÝÊéÚ‹éz€ƒF´´ºÓ/îð×BÔô­F“NðG‚Îþð=ÅãéôT°Õõx'OÕ®tïGi¥jž]µýÏŸi ¬ ðŸö´—ÒøYøEá}LXÞZèwöð›|FøÊ|+á&Î-CC¼»°µ¹øelþ%ŠòÂX|DšÁi4íF=!å‰üÚ_Œÿ&ñ·‰VÒ–îÓB¸ðŶ•„<oàè|7uq=í΂ž·ðü^=Æ¡s6©6ÿé´—Vígˆê*·K%ÏÆÿŠ7šºë×~){­Uu_‡š×Ú®t}×ÿ ¬.4ß´°K¥=´Öº=­ÌÆçN–Óµë¶MCÄVš¶¡WHëÞ6ðOÃuñæ·}w¥k—Z7~+x×À_ t/ßè>^á=_LðþŸâJ ¯ø‚ÓWMRmFÚ+éãD›P¼Óõ‹›Ù‰ìä¸ÃMÂ~"ý¬›@±Ótè~[üc–Åìm,làÓÏÃÿ ø‰×P™ì¡_°;ºEÍíè?èÓÏ$òO/—$“WžøKãgįCc‡uËdÒõ÷ñ>‘ªxWÂ#Ö4mnyì®/.ô]sÄz­¬èÑjréö¬Xé—Öš~²±¼z­­äsÎ’ðú7‰µßêÓkºN¡%¶¯=–½§Ë$V÷“µ¿‰tGBÖˆ7°Ü*]]iš­ôQ_¢­õÄɨi÷6º…½µÔ F†ß /ô8îõAâû?ëŸÒG} }KSÓ¼M¥ÚxWO‘ê^þ¹ÖcÔ,¯uÛ{ˆ4[]ß |"øXÚ¿Às¨èþ*ñ…üyªhRx»ÆzÄ¿ Ùèp_ZëŸ<?„-| }â_ 랸Ôb77׊coèZ]ÅþŒšM¾¿g­è5OñÅ÷Ú~n¯Ÿíh_¯öXi‘oð‡‡?áþÉÒ ò¬“ì>Wü"º/Úïì~Í©ê¾Mïö­íïöƳöþŠçãOÄ;[úÌ:Žƒ¤ÏáK›ëÝOðß|á_[Ýê–°Xj×7~ð׆´Ÿ jÓëuµ¾™¬É«è÷Ï«éE¦êFêÆ5·ü!ß .<-¡ëñèž<ÿ„‡âo|y¢ü=ð…ŸŠtO°èº£xkNð}þ¹¯Üø:ëP×®-·e­øSª¹øOàË=nñZx£UÓ4ûŸ‚ß í´??…|7â ïø×ÀÖž"ñlójIáFÎ{/ëÚ:lPê:%B×Z=¥ö¹Ö×÷Ðüý¨üEñN§ÿ jK.‡eiãxtX|G¥è^ð†´KøG¦µŸH¸Ó´hZ^áûëi-rú‡¬4»û´¼Õã½¹¸‹\ÖRÿ~ÏãÄû CÅ:µ·‰"]KÆ:àñ6¯y7‡ü3u=¯‰_¬ ðÃ]hÓ®YÅ©ÞÛéú·‚ƦÚJ––ö¶öðÄìþø'ð¹5 h>-Õ¼k©jž.ø™ñ7Ân£á{ÿéz-‡‚¼Ú-•¿Ä;±©èúÝÅòÃ~–¢â÷A»µÔ<öËâ‹ôïøGþÅ«ýŸþoø—šË 0ÿgèž/ÿ„þS}“y×·ßð–kž^³sçë6}Ÿön¡gý‘£ý‚]_â/Šu¯ iÞ¹—C²ðîœt×:„ÒG} }KSÓ¼M¥ÚxWO‘ê^þ¹ÖcÔ,¯uÛ{ˆ4[]ß |"øXÚ¿Às¨èþ*ñ…üyªhRx»ÆzÄ¿ Ùèp_ZëŸ<?„-| }â_ 랸Ôb77׊coèZ]ÅþŒšM¾¿g­è5OñÅ÷Ú~n¯Ÿíh_¯öXi‘oð‡‡?áþÉÒ ò¬“ì>Wü"º/Úïì~Í©ê¾Mïö­íïöƳöþŠçãOÄ;[úÌ:Žƒ¤ÏáK›ëÝOðß|á_[Ýê–°Xj×7~ð׆´Ÿ jÓëuµ¾™¬É«è÷Ï«éE¦êFêÆ5·¿ð‡à÷‚~'j7Wú‡ðþnš„×6Éã ßYøËªxrÒI[\Ñ|!¥xfá­¬ão`¸ÔßO|~Ñ4ÿ…ÑÎ|7¥^ëÐü³¾YNiu©]xóâÇS¦øsêâú…VÞhŽ7^Ú\K'ØÛH×Çü/ñ»âGƒtÍ#Hðþ±¤ÛÙè7œÚ;_ø7ÁZåþŸ¶²®µ¥ÛêÚï‡u-Y|?¬ î?µ¼4×­áýI®.÷L§”¾;|RñãEKâ aXdø,-ke¦YÍü-Ònt_›yíl¡žÑl¯'y5I“Z×WSÖ`‚þ0¬4OÙ÷ᮣðâçÄÚ'Œm­/>+éÞ ñn‹qñWá®­©ê¾‡@Öußj÷ºGƒtCXøW©xU4Ý>m_Â>%½Õu-GOÔ¥µµñqöÄ^Y¥|>ðŸ‰<=¡êñǪøoÃzÆ»ñ«Ç—ºS?‡õÍ{KøoðçÃú΃¦Xxü9¥jÚŽ³­jóø‡ÂÆîëÉðȾ¶Óõ¶ðü3C©©â®¿h/Š·wW-­hv­§x’OÚA¦xáîc¿s¦]hú•ÛéºO…¬´ùà×´ÛÉ­|O¦ÜZË¥ø©Dâ;-R[[Y!å´o‰Þ6Ð.<7>™«[ ð¦‡­xkG³»Ñ4 SIþÁñöµ¨ëºV¯¢êš]æ‘â;MRëÄ¡¼ÄvZ©–ÞK[2~Ǧi–ö`Ïsð³áuŒZÿ‹õñí—‚­~x+Çz_‡¢Ö<={â¸|Oâÿéº-„õ?Éá½7JžÏQÐm¼C¯ÚkPxfÆêÓO—KÔDÕÒÎâËRò/‹~Ñ<ãícþ}Té6–ž»† ræÒûWÓnu èúÖ¥¢êÖU¥ýÖ…©êš4—ÐéZX½6jm3O’V³‡+Xø…ã ~[êÚËÝÃâ½KÃÚ¦¹Ø´ëu¹ŸÂz~¥¥xjÚÛì¶p/HÑ4ÝZêÇOÐ4£c¡Ák›éÞ^£­Ž7ˆüC¬x³^Ö-ÇýÏþ”AE;â·ü“¯Ø)¿ô¢ÞŠÿÙxerces-c-3.1.1/doc/html/graphics/faqs-3-label-1.jpg0000644000175000017500000000333211363617747020603 0ustar borisborisÿØÿàJFIFÿÛCÿÛCÿÀ x"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?û«âÞ£áÝÇ5¿xIð…´+ïë¾"ñN»ukc¢è.‰m}ªêZ®«}{siie§ÙZZK5ÝÝÍÌ0ÛB¯4Ž>uûüOø_ûYj_~"øâûRøC㉥¢êž$ÑdÒäÕ¼ðûâ>¹áøŠ} V¾»µÑõ]7Âι¦ÙjpÁªb\Ù®·¥é:‹^é–~“ñOþJ?¿ìdÕô©ëšÐèÞ"Ð|3gl~K&øÏWÓ‡Âï‹VV~>"ø…ðöòÓVÒux?ž Òað÷ˆgÐ-Â>ñ¦‡â=Âhöú-½ÒáÛZ[éW:…¿‡aÑt›É4Êù“XÕõ?jº–¹­_\jz¾¯}s©jz…܆[›ÛëÉžâêæyÞ’i¤wbœ( E ­y^-ÊÉ]rE+êÝÛ\Í'k·~mX?lùjs(Ñtæ£INo’n¼çhÆÑ‡$"Õ(¶›ä§HÑNp–mQXòDzþ¿á¿>ìô9¥Ýÿ_ðߟvQE±ì¿¯øoÏ»iw×ü7çÝ…QG,{/ëþóîÚ]ßõÿ ù÷aEQËËúÿ†üû°æ—wýÃ~}ÙäŸÁ?üpýáÿÓ•òIý¢¼ðæ|øay­ØxëÅÖþ$ðu¬šdžôMÄzîï j!³ñn¡™¡ëúV§uw¤è7ö‰m<Ì'f±¿[o›ëú?ÿ‚^ünðwÂoØ¿á×~$éún¥ð×ö¯ÿ‚•x“öHñͶ¨›í®4ÿ‹ß²Óx{MeÜ™Ä^;ðÏ„¼-xÂXŠiÚå옧–ÿ‚Þ/ýŸü]¹ø/¡$¨Pñd7:­¿Ã mSd_¼ñ߃õ¯xŠ Å'\Q°b¿=áÞ1Äæ…ñJÂÇáçÇ_^xWâ®s£j–þ7ðÅÝ¿„$ÐeÐî.tÈn4x·K–é[ií¼ §ÄLË1áŽ&Ïñ4rü·û/‹°y>ZªàñÕâòœÆ¿}JY†ž2å™VÃgN'Jxz|D©J¦Ó¡Z~ë?ú>d™7ø[ÂØ\~{›®2àÌó4Ï¡‡Åexzø|ÿ‡²Üï™×É1u°ÃUÉ!‰Ë£[ ƒÄañ¼n Z3G[2ÃUÁþgÑ_NÿÁ=¿d‹ÏÛÆð.‰â3àO†^øooã߈?|Eoop|ðßCÓtõkëØc¸³Ó®uÛ±qii °¼¶´IZûS‘Æ™¥Þ2ý­û+ü ÿ‚U~Úß´·‡>|øãû]ZÇouâèµKðn¥|^¶ðï„|E«Ésð_ÇZG‡5k?_iךmž¿y¡üPð]…Þ¯àë]ut¹íõˆ-VO³Î¸Û$Ȫã¨âÖa^YV_ý§šË.ËqxúYfTëU ñÕpôåN„ñ0ÃÖ•*r—4iAâ1à Õgù/ ø-ÆÜa‡¡ŒÉèe´pxüö\?”Tγ\K[7ÇSÅÐÂb ‹®ªVަ&ŒqJUL ã1´ªa×äeõ‡>|=ñ?íÿ®þÊ–¾3‡á燿nmSöU½Öo.t8üg/†ôŸP|8¹ÖmutÛ õ·Ðîê F_Á`Ú¨iäðìv€X·ÚßµÏìßÿÎý„þ9xçá÷ÇÏ´WŒ6?„'ø{ðKà.—ðóÆ_ì´sÁúN£>¿ñ+Äšþ“á¿iw:·‰—ÅÃþ³Ñ,õ›XhZþ¥,°xKžèÆq®M„ÅeØg™b±¹¶Róœ¿ Ëñº¸Œ«‡¤ô¢¤©TÖa9{iS¥ q¨åV2QŒ–Uà·fôsÜM*V Ã&Öuÿë#D¶Íúë¶–š5¥Õݵ¦‹¡w2E­Ù$_P~Ø¿²À¿†³ìáûd~Íÿ>$ëÿ?h¿Ýø KÐþ4èzV‹ñ¾9·³ñeÜz&²t;=3M–áåðŽ4«ØcÓ"´³Ô¼?ö~¯®ÚkV3§M~+Ë0™¶(ÅÑ̰µs \°f#-ÅQËqxèЫ‰XJ8ÙÁSujQ£Zte%5ý”ãF­I$ŸÂŽ-ÆðÖiÄøåü.K…©˜fÙv:ËñyÞ.£Š¥‚Äã«e”+N¬°øLEj0ƪR©[ªFxš4¡Í%ùÅ^ëû>~Í??jê¾x+þ¿èþ½ñ–¥¤ÂGá/ }›Ãz~«¢è—š—Ûüe¯x{K›ÉÕ4Ò¾ þз> ƒâGÃ}+Âö^-×4-7ÄšÞv‡âKK^¶Ñ­WJ“Æú¥æœâÓJ†9þJ¿ˆ²©”qÎ6–][(©ÂÜN8ÌÓ ˆÆàkËKWÚÖÃá*`ñ ¬ž3\ *îq¢¨â>²ÕgJŸèø/+Rͼ"X¬ç Ä9W‰xl&¾ Ì0™^o€ž*¾>œ°ølNcG1ÁÖÃÆž”¡šÏ àñRÄàê`){ XœOåEÙ~Á¿³Î¹ûSø§áWÁ‚«}x¾÷\ê¾.ãþÍMÔµ}GÄÞ"ñ é*öâÇI†Þþ{xmGŸ~ßÙúe¸}Jößô6ãáÇüQþ:\þÈzOíûXj¿,|Wÿ ÏRøû§|1ð6¥û.èß¿´N‚lµ{;Y×ǶÚ$~#K¸×#Ô¦ðÅ®Éo§ñbèÐÍ«'ÖfÜ[•døµ¯~/ö–'•åø¼Æ¦ .ç5Ŭ-9û*S©N¬hÃÞÄbÏBª¥QÇàr?8»‰c›b²šx ^[âø~ŽcÄŽ_ÃÐÌ3\,£|ž?ʱ‘§W ,R•gƒÀÔÅá¨bqЩˆ¡í0(¯^øûðSƳ—Æ_ˆ?> Ão‹~kcJÔe²y$°Ô¬îì­u} ]Ó$•"–M+Ä:£¦ëZsMW k}7p[ÞEqoêgíéûþÀŸðOÿ‹> ´ø½ñ£öºøuã?Ûj¾øqàko‡ž8øýâßZxŸYÒüS¨[Ý]hÞ ð‡…<¥XÜxËFþÐÑ5ÿx§ÄZ¾½‘ šw†õ¹ô¬ñüe’`*ät}¦'>$Âc1¹"Ëpµqß_¡‚¥ƒ¯QÑö)¿~Ž:…Zr’5IU«V¥*T§5Í‘xKƹüx±áð0à|Ã,Ë8¦žq‹¥–UÊq9­|Ç CÛÃÊÜi×ÊñT«FŸ=gUУB•zØŠTåø«E}çû{þÊ~ý˜5ÙÓÅÿ êzf¡k!ŠêÇP°ý—¯®¬¯-¥_š9í®bŠhd^RDVŠý}øµ¤x7Yñ§Â¯ø-Üöú"|?ðÿìWâüPÓKa§Mû]ü#šÇá·Â}[y]Mu«x·Æ÷zEµå¿îm`ø'£ ¨á’öoO|[ø…âÙ›Áß²¥…—ƒ!øyáïÚÃÃßµUî³ym®Gã9|I¤øïáÅÎk¨Ã©\ho¢>‡p—PiÒøv öÕCO'ˆ£´Ū|Aø­ñ»ÇŸ³¾Ÿû(?ÅmWIýŸ ø‡oñ#Søy‡áû›m[\…(Þ û·‹-lšV7©¤G¯IáÅÕêÒè3êkÜ’fœšf8‰b°øŒ6 µN%ξ»)T¨Þ7ƒ¸‡ ‡ÃæøJŒ%(cjý[ [ ÎãN…j<îi»?ëÞñ«„2|£‡ò<Ùb±¹\8'øà ížGâ'æõs^ÍêáçR.¾„ëâ©Wö©Ï®jÿðm7üOÆ~)»¹¿ñOÄÚóÂ?üGyy+Íqq©ø§â‡ìa{æK$˜s#Y‹O7pR%ó2£¥{7üþQíÿµÿ³4ÖÿõHþÕ5ùƒâOÚkãD_°§ÅŸØ'Àú7´øcñ§â'‡ü}âïx—NñZøÛLŸÃúŸÃrÚÏÂú¶‘¯ÙÚ¶¥ðŸÂPÉoªx;UvÓï~Õÿ>è¿ õÚßá›ü*ñÖ¡ñ NñM忉áë¿øçÂ7מ»ð߈ôxtÝetˆþ#žÖãXÒ|Ib5{]Y´æ³‚þÚûoç5r9ËhRÃ*ÙçeYþ[oÓ–[ƒÅð¥j®£·-±§”c9hÛWqMs«zYwŒüS‹üâ,~>½*<)ÂmÃÜG«Õ©S-Ì3¬¯>ÀeÑI¾j¸ÔÍðpúÒmF…*õ%ìZ—ÞðG¨'ñì1ÿ7øáXf¼ø­ãØX>ØiÅ¿·/gOƒÿôY¡ÒDí~tž$ñ/ƒ!SlŒÂò{VSoÿ‚ xnúoÛOöW¹Ñ4›Û½7AðWÄx†êÆÒYítkM_à‡Ž4÷ÔõYࢱµºñ/ˆtý1.®š8äÔõK+0ísuIáŸðOÄý®< ñÃz§ì…¥ëž"øÁðÛá¹¼Öô¿ X[ëÐjžÓ£Ð|?â;}KÃúÙÿá$Ð.µ;ý"3¦­«ê_k“MÔ´øm5; kË?ÛÿØWÆ¿ðPËÚ6ßâÿí%ðö|ý„ÿcƒZ_ÄŠ_5_þÏ~!ý™Wâv¨ÿ.—¼tsÏiC€þÆ©‰ÅC:x·)aòÚt«áýµYÎ/Ç¿„Dø,¿ÄÒ ÿÁe|hA ƒûTi„GÈ#­Wÿ‚°ÙÚÉÿýºï¤·‰ï-aý™­í®YÍ7Ÿ³7úŽ'#r%ÃZ[B‘¿È<-|¡ð¯ö„Õ®?i?þØ>Ól_S׿lþÓ^ÓKßÚïK»yüsâ ;_Yoj—^+)yk Ò?·Æ‡û}:ᆷßíðOàn·ðÃýž~1|1ÔµÁâM;áçí?ðº_Šž ðæ¿ö˜ïƳáÛu­ Xêú¼Úå”zµ¿ˆtk=f9µ+] ûëÛ¹³üAÿý·¼kû;üKø ñ,þÍ4¯ˆºÊêú]¿ÄO„³êÁ©£Ò‘asðB=7TÓ´_ßøoʶÔ|"x>î×ÁúŒr\øjÓI¹¸¸¹—åóã,oaóLSþІUÇó¼ Ÿã)`ŸûN€Âä*‚Ëhcð4qn¦'^2ÆW´ðøŠ”±µ#Oìx#IJ>†Sx ƒ1Ïü6ÆðžR¯ aëg‹‹êωÄfXÞ'Œêf•x{4Å`å<>Œç—a¡W |Dð§Å]ÎÓâÂŽ^¾ø‡ðgÅ„VfÎêkï A®øW6×V³\éóD5ƒk¨Y}‰uÍ;WþβŽý–¿n¯Ú+öYøÃñ{ö‡ðG€ÿfû/‰?tÏè–>´ð·Žm¾ xSEñ§Š|=ã‹mÃ~Ñü]áí{BÒô-{ÃÖšF§Ã­êºg„‘,+»ÕŽòó~âFMâ†I†ÃajÇ‹1ÕsŒŸñ‘¦¥W‚Êp•pª¦¥‡ eõ&«©Ô¥VÁ$â¼ñ7‚©c~ŽÙö75©„­á[ÄdQ–K R¥ia~»ŠÄas¬®´$éãp•¡^«EÆŽ# 8Ïž¦¡R§Ôðm‰|9 þÑš®Ím£ã‚_|5áqå›Äpü@мS46†B\·…ü3âVýÎekt¸LÚL~V| ø7ñÃÅ?ntJ?Œ÷8ð>©6µ£x—Â×÷–·ZV«»{«é×ú]ù†Êî+‹o>\ÃïHñ$G/ú;¬ÿÁXÿn }BçÅðOìM'ÅÛË,ö–׿gK;_Ú*Ýe°]5®O‹ôM¼+w¢,Q4¾ ¶´0ª[Mg$1€ßEŒÊxƒ+âLÛ?ȰXÑgÙ.W—VÃãqÒÀË.ÇåǬ&'™aq*¾_Zža5Š¥M,M:”#*P¬ªµK‡ð7pÎ+€x—ˆq<3‡É|Lâ>.Àg<ºY–ˆ2ê´^/.ŠŽ+ð¹µ:˜zxŒ¾¾*QÀ×¥V«WSmÜÿÁqþ#x[Å¿ðU?ø_ÁóÛO'€?f_…Þø”Ö{⿉¼Yâûî¤å{ø< ñÃv“ešX’Ú;9J½§•gÿ YÛ]ÁRþËq K%‡ìàëË6q“otß~8ÙãôÚÞ\Þ~IŸàÆF×F·ãxãÅ—޾%|EñÿмyãMfY'ÔµÝsRº¸¾»žYf’Y\=ÝÝÌï$¾y¦w+K¼I~×´ïÆ¿Ûoö ³ý¢~0é |?/‡þ é?¼;¥ü4°ñf•º.•ã gÇ1ßëV^(×üXϪ>µâÏÛ½ÕŽ· £ip讕Üw÷w<Wcrlo†ÔèÔ†+ÂYe™†&sP© Äd4áJ¢¥†@óÜ>c •ùiÉV•,Ó *­*rÅЧV¤¡G–T—èwü8‘ð+þ8 Ù‹âp>ãþ?ì²p}F@?P(¯ÏÚöø×ûSÁûø;ƺGÂÝáßìiðçÄ?¼ ?…¬?ñßí#ûGümñ·Ã´WÇï‹>þÕ·¿¾5üNñƆ R#Dë§ø›Å:œ ,M†ŽUQ,l#©ÑEpbpxJ¸Œ>&® SEµKR…)Ö¤®©Õ”]H+·ðÉnÏÝÓS4ëÛÛkËËnð¡Æ<-‰©—Ò¡žåµjæ“t°ãˆ=zª¥j*+³¥^UðØŠèÖöujWÃ×£N«J¤#ÛŒð¿Ä<ëŒàìûC‡©*ùÅZ˜ ª<;£…ļS’MWÂÓÃcpxªØ¬7¶ÃÐÂâðØšÕ!B½*’øjŠûöeý‰>0~Ö>øùã…Wž0~Ï^Ó¼Wâëw~%Oøª[Hñ¶¯§h¾Ó4 x‚ßYñâxT±·°Õ/´(fÔo´‹x®Ý.nf³öé¿à•_´lþñ†­á~Ï_þ ü;Ñ[_ø…ðáÇÆMÆ|a»]§ˆ|£ÙÏ¥Cjb–ìÛO^_ßÝÆtý"ßQÔ+Y3Œx_.ÆWËñÙæ_„Æákaðøœ=zêœðõ1T°õðþÝÉ(Ò§R–/ %Z¤£F.½(J¤g8Ŭ«Ãs̯ dü#æY^; Æà±¸<«ÒÆP˱8¼&3ê¾Í¹â+PÄ`1°xZQž*K ˆ©NŒéÒœ×Èß³çìÓñ³ö§ñž§ðûà7‚¿á;ñ~á‹ßjZGü$~ðÇÙ¼7§êº.‰y©}¿ÆZ÷‡´¹¼SÄ:=¯Øà½–þO¶yÑZ½½½Ô°xU~éÿÁ¾„Û/âYf/AÈ üTø.ApA =³†0ø;B»ñ‹f_ümð׉¿h¿it1Ï©O¨ü?ÒãšÕæ°IQe²°×ïon.+=>ÞòòâÖÞ“¿fŸÙ÷ƵGÆÏ|ø{©øcGñŽÿá#þÈÔ¼e{ªéþ·ÿ„cÂZ÷Œ¯ÿ´o4MÄ:œ>v—áëØ,þË£Þy—òÚÅ7ÙíÞ[¨= 7ðî3˜ãð¹ÆƒÊ(O™W¥YNL,(Oõª©.o«N…*•¨â#Q¯NœåBu%ošÇøyÆù^e‘dù— føˉ±T°9…•™ž:¶*Ž`°Ò›TÞ2ž3C ‰ÂÎpÄa+V§ U:2œSðª+¯øà믆Ÿ>'ü*Õ5}[ñÂ_ˆÞ5ø[â»Ï jjZ/ü%>ñ÷‡5Øì®.-l/¾Ïöë %¶MKNÓu²Kn÷š}œÒ4 ô¯üÿá'Ãߎ¿¶7À…_&Xüâ¯Þ.½l÷OdšÐÑ|9­ø‡Lð»ÝC,§‹u'OðÛI¡½eÕÊYMÓC"öc³\&'Æg“s­Á希ÖRÃÇÚT«„ÃágŒ“¡ ÇÚN¥7J7<œUÕÏ3,á¬Ó3⌷„(`³œË=Ápì)fxjx\Ç¥—SŽ2n2tiRÄU·©Ë% jSJI+üwE~»þÚ?·ïü‹à7íUñ—àÃ{†Ÿ²Oìïð·ÆÚ—…¾ü+µýþø—ß~i²¼)ãÙgñ_…îeÔ4ßèÉa­É7†5m2ËJ¾º»ðß”ºŽ…¨ü¬øñ+âÆ‰¾5ø•ñIøO ^x£þÉ Ñ~x%þxRÖçHðý–ƒ©^EáTÔ5;>ç\}.×^ÕÊñÒûÄZž½¨í㻆Ú†ó¼ã<¡…Çâò|,Ì04ñØN=y­iF²¥:4qtU‚£F¤©Tœå,./B¤éûYsFGÝx‹áÿ p=l~U‚㪹×dÙ‚ÀgY3…±¢×4*ÖËóílÖŽ:êû/Üâie¸¿aRU§‡§:S¢stWìWü×XøOû.þÞß´‹§øÃ_~þÍŸ ®n<¨ÃüGøÅ¬iÚo¼Qi$ªX§Ã_†7ºŽ¯«Çv¹Ñµ½B@ºXY>Dÿ‚|¾ýœnÚá”¶ÿgðÞ±â8>/ü1+o ­¼Ÿ ~*ý«Z°±°†¡ÇÂ>.µñŸ€-äe’Y"ðœRÜO<ò¼¯†Œp¸®0Æð’ÂÕ§,6XŒ>e*‹êøü^áešeøxr.j™mÇ-Z‘«Sš¥|EN”°u%5ð—7ÁøU€ñGëÔ*áñ9¬pxì’4*,fW–ce^†Iœb+óÊ–mŒÀæT¡†3£‡§—c#WK4§Q_µ¿³N»eÿý•/¿aêÖß´‡Á?QñÏìgãr{x[ÄšF“dfñÁ WU»ÄÑYM¥Û›}9Òá’ÇE‡IÖÆk†Kcª|û:ü-ðoÁ¿ üIý±¿k Ïcðörñï†4o†>'¶—LÔ¾2~ÑÚKÏý—ðzãNºŒNš_„5FÖ>*Å,Ég§Ø¾Ÿ¨O©]ÚAœ8Î…ža3, Lq“béaée4«Ç[7£˜NPȱY]YÒªôóY'F\Є2ü]e]HÑÂÏ*ÿˆO˜c¡Áùft³ŽâÌ%Z•sùàêa)pÖ?)¥N§åœA…¥[<.##Œ¾³†TªÖ«žåõòüFYBx¬t0þ ¢½káßí1ãïþзí_ûFxGÃ?üAâÿxƒÆOð»â¬ƒÁK%ÿ‡õ-/Á– ±ÓM½þ¡¢øfömY>’ú=.M3A±ðz.¥5Â'éìaÿ+ýµ>4þÓ~~Ðv¿üqû:|_ñÿ†~êß³>›ð'ÀQøCºõX<<º–¬éúEžµ ߅ޤºÅÜz½Ï‰tk»]JÙ ·èYtçY×å˜GŒÃpîK –<Ç3u3åƒTçJ*bpyky^"XêôaIÎ1°Ê0õ¡:V«޵: ðçY¶3'Í/‹R:L4ŠãT·ø‡­h÷ׯim=ôÞ¶ºº{½FmFsÏ|Aÿ‚A~Ó |Rý‹õ¿Ù‹Á?µ}¯ƒþ,|M_xÓÄž3Õ<[áÿþÏÚ]¾±ðkÄú]ÇÂÝOÀšþ©Ã++Pñn›§¨øcUñ=åµ­­ý׆Œ~û5~Å?j¿~Ð>ø_}á³ý<%câÿèå߉SÅ(¶ÔôoëV?€´Í¾!ƒY×îâð«eoa©ÞèQM¨Þéñ]:\ÜÍgÝ…âܶx\ïÄ`p9~OœÓÊ^1c^"œzycÂÏž„°8šÕó:4^^ßÙ©Q«,Cöμìß®!Áb87-Ë0¹žkžqoc³Å‘Ë*ž„žUW4y,2xœMÓG•×ÅQÌiTÃÔ®èã(Ë/£= ØÏ¨¯ÑHÿà™_/¼ ã¯xdznj|oðÃÃwž,øðÁ?´|tðN‡¦¯qâè6÷º5Ö’ðÏo}¦/‰åÔÆ¡šMµÆ®c±}¿ø%—ì•ðëö²ý¢t­â·Š¾/Ãï ¼òkÿ 5ÿˆ:Ÿƒ¾&üWMWÁ?/ôÈþiš,pê~&‹Áú¿†ôí{Çíe­hòè¾’;¯6é.š±\kÃxlŸ;Îéæ4ñØ>¡*ÙŒp¯ˆ‡îý­S¤Üž18¬%YNZÜÞÑbΤ8ðqÖ7‰xS…käxŒ£2ã<]<.GS8ŒðX*¯Ûû Uj¸… ®Ëd§,ÇN\~‘Òx9bgJ…OÍ +ìÛŸà/€ÿg4𯄾5þÌ^1Ò5ß‹ß4ü)ø/ñÆOŠþxWÁ(Š-Âô=WJÓµÏøçOÒõ?ì[ÍóQñUÚjžñLwšõäúeÅÌ¥{YFkƒÎòÜk€œç„ÆÒU¨º•*‰]ÆPœ%¬gNq”%g(7(Npqœ¾wŠøW:à¬ÿ1ᮠ¬&i–VT«Â!ZHN1©G‡¯á[^”¡RœÕ¤”:°¥Z)Cãê(¢½çBŠ( Š( Š( Š( Š( Š( Š( Š( Š( Š( Š( ¿Z¾ÿÁX|u xBÃàWí…ðÛ@ý°g'K]>ãLñ|üXð„ ‚÷Ã%ÕØiÞ,ŸI„Êú]Šn4Áq$cNø™¡ØÙZiËùyàŸÛxGÆ~ñeï‡4/YøcÄúˆnü#â‹i/<3â›mU´Ô§ð爭!– ®´-n+gÓ5{h§†Iôû«ˆ’XÙƒµµŸðJiïÅ~3ý¿nßkëx÷/ðÓàO>|Cø7«“xüSãKÍ/â¶‹cyƒçÚCem>œ²5½…ýÊCË|G`²Ìʆ ›pÆkžP‹•|&?'X¯exè´©Ï ]c°YŽ4£*x¬5ðþã†.¥8òƧìþã8›-ÌqØÞãŽáÌ}HC ™d]^µ,§‰rz—•j8¬-|»”føjMÎ5ðªC3„j{l¶•VëNIÿ3ý•þ~Ì^:øã?ž Ôu¿µ—ýOâÁí?]’æm[I³Ò-|%«k:"ÝߨÞiè¾>ð†¯¢K¬®-¦¡{§jR_Ýh·:¥íÁ7þü ð—ËßðP?ÚÓá7ì¥â_ˆÞ´Öþøûᯋ¾9|WM ÖúÆúûÁ^ž×PОÞçPig»°‹PN»–=>ÿP·Õ`ºÓ¬>Mý®¿kˆŸ·wÇ?‡>>Ô>Áð#à7ìûà~~Ïâ¿•߇|?=œ:måþ¯ta·i5]GO³Ò¬ï ÛYYÚéþðî›ekpöwÚ­÷Û¶/íÛû~ÔšÿÁßÚö€ý‘ÿiŸˆŸµÃ_†? ¿²þø“Áºwìéã; [V×m.<]{ö›¿‰:T>!×¼C«ZéÞÒ|+|¶#½Ñfñ½ñ´Óõ=;åbüCÂd\€Å<Òuj¼Î—æu,“2ϰðƒsáü=Ifª®S*•póX|ß3• M%ŠÃ©ª‘§ˆ–$ýŽ–Yàm¼BÆeج¦ ŽO’ã¸g!žoÄ=Âx¼Ê«­þ¸QÂâò´3ªX|<èá1™6KKJ½<>;CêU«eÑËéúü<±ÁO¾YÆì–ן°€ï®aS„šîÏö€øßkm<‹Ñ¥†ÞæhQ"7+Ò¶¿à³ž5ñãþÅ_ðEÿš?Œu¯|:ø³ðüDÑ4‹–³O\ü0øð |3£4%&šÖÊËÇ>,Ž+9ì¾Û¨Úê“[M}¤é³[|¡ÿý·þþÛ^$ýž¾5/ÀïÚÁµŸÃ=áÅ´“Áš—ìûgà{}oÄÞ*iRXkZ¿‹N½gã}vMBÒïQþôÓü1ªêzmä^(Ô,ôËû~{þ û_ø öžðßüáWÃïüRÓµ?Ùà—<ñ?ÄÞ)ðæià½CZ×¾ü%ð}—ü"zΉâm~âîÝuO…šÜ³ÿÂC§xjìYêÞ’+I®/®ítï#‡xo8§‚ðƒ ˜dØŠrá|~{K9Ž")ÓÂNžM™PÁbù£:‘¸Ùa¥‚¯ ·7J¢Pi5ö\[Ç7þµ}!sÜ—‰2¹GŒü9ʱ%~Æ>¥=Ó“,×ÓJZY®îwc«…1~Ô?µÿ€¾ Á6ÿb¯Ø‹Ãž ø¥sñCáíQÅßx¬øsF›á”>‹\øåpÐÛë¶&½ñ z¡‡ã‡cÕ<'¦iÅtŸ±ÔÂØX¶¦x›ö¿ð…ÿàß´çì9ÿ_Å/ü_øåñ·Áþ6ð®¯áhÚ·´­Eñ7À_^ÂMÿ 5¿‰ìn ŸÂZÅý›á-^Ðßê~†[¸¢½¾ŸLµÃµ<·e5¡ˆ©ãlxŠj4áÏ&\W Ts94×5€Œ*)6æ¨Æ1å²Q §ÄN¯ÄžKÅ:¹}O£”øc:ø®ju8ž)K/©”ãeRò–.§×iF–éÇWR¾"¤ê}íÿÄ×õÏ ~ÂðY¿øcXÔ¼=â_ ~Éw:ÿ‡µýöãMÖ4=sGø=ûQj:N±¤ê6’Ewa©i—öÖ÷¶7¶²ÅqkuSÃ"I°ùþ ¦?†ÿnŸÙãSÑ–ê]CǼyeã]bc%Õõî'Á¯øŽÛK»»l´:5§ˆ4/ ›[L¥·Útí1¤Yo&?eÁ+5­Ã_±WüÄ~&ð–Ÿãï è²äZ׈| «j:¶‘¥ø×CÒ¾þÓ×Ú·„µ-[Aº²×4½?Äv\h÷šŽ{i«Y[ÞIs§][ÞE ©ñÿŸø(gìsûxUñçì9û(~Õ²~ÓÞ8øU„þêß¼AðïÆ?þ Zx“J°'Pð¿ˆ|--¾¿â™tØâ´ÿ‘ßÃZF§¨-›YO©éÚn£ªE}˚njεlE:¸zXOo,b¨¨Ô‹Tç -â%SË‚á?‡?F÷ÅYoåœ/ñ7æø|^;„Æf™vSâ.w¯‚ËèÓ¤écçxh`êᧈ¥N>Öž#£„¡:ô¾òÿ‚%K£ÅÿXÿ‚ø{Ã?fð^µû^xCÁkfÈöqx;Iý¨¾·†­¬Ý2†ÆÏI¹¶´° û´²‚Þ8€àÛ­/ÃWl|I®éRëZ§€>üfñ—‚ôÛ8mnu{¿Aã]'@–ßB·»–Þµ›Ÿ øƒÅ¶q›«PÆwó.a‡ÍqäÿðH?Ú¯À¿ðN;ø»ñËFø™ñ¼Qð‡ÇN±mð×MÐüUã Oƾ#ñ¯€|c$ÏŠ|Wá;mCͰð…팷cWžú÷XšÌ¥»Ãu5ůÈ_°'lj?²N¹ðâÿƒí¤Ó¼aà]G]šë@×­®í-5­TÕõ»]cÚí“.†¯h—Ó@\¹µ3Úêº|‘^ÚÙÜÇêâø?;ÆOÄœº’©œðg efaZN×೚8º2ª¤çÎU¨ÑÄÉ§É Uí5tüj¾'pF]–xiŸS«…ÄàøwÇÎ'âL×*Á¨UÅ`r¼Â­:ølʆ¨ª‰:u±øÆÑJàÝ)J6ý ý˜?lø$GìÛûIÙþØ> øgÿxø‘ñ€x“Çž)›Ä¿|û0øžËXÔþ h^#ðωòx›ÃZ‘´xU–4ýbÈ­úB/d»·íóóBø×¯¯Æ¿‹ÿ¾ ÍñCà•…÷ÇŒÞ$ø5+\ê_~$øGá§üC­ê>Òd»ðî±,úE寄|M/…uK}ÄŽš ŽÿG·Ôõ 83Ë÷Å_Ú#þ C¯xÇ]ø‰qû*ÿÁ@ôø»YÔü_¯|-øO¬ü¸ø ¾&×ïnu}y4ß>¥ã­/EÕu«Û«Ù,¿áðô:d—SC¢húN‘mg`¾/û#|uø àÿÚËIøÓñ‡ö{Õ‡ìçaã‰÷–ÿuÛ/ ü^Õcðˆ¼!â­;À:Mí—ïtÄ·ÖµÍKâ«;éÃâ8á‘´µ>¶A§ƒ§›ç/"âüNgþ®,#/Ï«`kÇO±8šY F¼éW”«â1¨×öOR8‰~û–|‡ÏøÄŒê†EÃÔó¿ rÎÆñæ5ʸ£†qù×2Èce„Ë£Å8Ü5JP¯€§C.¡„«Àa«G‚–ßU‡±ö«ä=GºÓ®¼Oªjž&ñ_ŒüCã?ë^7ñ_Šüo­Iâ/ø‹Å>"’+w[ÖõÛˆ’ûWÕ5{ä“RÔµ-JK­FÿQº»¼¼»žiÙ‡Q§j:†¨XêÚMõæ—ªéw–ºŽ™©é×SÙjv¡e:\Ù_XÞÛÃÕ¯ý´°øÞ%RÄbðÎ/ sÎÁR¯‹¯FšÅÊ8Z5±RŒ\)S©[–2ýYø7ÿNѾ.hþøÿ$øOáÚ'á%Ôöú6Ÿñž(´¯Œ? ñŽÃþB{d|Cma Bú—ˆ¼'á/Á¥ÙÜÜÝÅñWºkY¾>ÿ‚€~ÈÖß²7í}û8x;UÕâúX~úÿ‚Ÿê>ÿ‚˜|øSûxþÎ>(ñ&¯ð3à7Žn.â·SG„³~_g‘æx 0nèðæ2áš:§ˆÌܳz´e‰ÂåÜ/Œ¯òŸ§ßê×ö:V•cy©êšå¶Ÿ¦éº}´×·ú…ýìÉmgccgl’Ü]Þ]ÜKÖÐG$ÓÍ"E;º©ýR‡Å ?àz~Ÿã¯ˆ~›ñ—þ Eâ¿ Èÿ¿gÍ>EÔ¼5û;§Š4É!·ñoÅCO™þ×ãYt›Çx¼5§ËÓ´¹îƒ^Åý§§k°ø×ìEûW~dz_í‡ñ㦿ð›ö‘ñ_Á‡2¸ø áÝoÀ¾ ¹ø±eâËO^ê:]×Ä·ðoˆ®¼;áæñ—‡4íwLñ¶©{ªkqøoÅ©¦h÷šŠ[èÜ®­ñ[þëâ_ˆÞ>ø·ãÿÁl-Á0¾ÿÁK?ißü[øûsþд\R| ¹ø‡à_ Ý|+ÓfkÛ«ž—ÀpXjÚmåŸÅ{ ¿Ë¢Çâq¬˜n<@šø°µŸGŠÖ)?0>üoøàïÛá÷Å_„ý¤tŸ€þ1|øƒ§Ùütð÷‚¬>1k/…u øÆv©oá}Z×ÁZ†¨5Ä1hPÁ¨é¶ƒLºðêj·¶÷sßO'íƒñûõgíõûZ~ÑÞð§ü)à/‰7Ÿlü/kñB°Ð¼Asÿ óá'‡þkwM¬ø‹FšÎçYðµÝþ—>Ÿ®_ùÚ-ö—uv¶Ww2ØÛçŽáÚÙÏdXÊt³Œ£%‡ãðr«€¯S)¯‡¯_4Ê+QÊkÏ (ÖÃIáaZS£BtÝ9á×%Xºq¿«“qôxoïhñ+á~(ã øÃ¹”òŒÒ8|ã/Ìp´0Õ0PÍðTë*Ø|v VxIájVŽ!T¢à±4gÔ·=ûOþÓÿÿo/Ú:ßö‡ø·á}'á…|á4ðÁƒкÓ>ø26º+“$‘Üê—m»“UÔšÃNžþWµ´ƒLÒt]HÓ¢ý5ÿƒ®õ¯ÁC> |-×¼E¯Üü6Ð?cÇö¾]Rî/ ÉâãÄÝ[ÔæÓb•!7Zµ…|%£:5Ü>Ò-¥v·€ÆßÕö7ü÷ö¿ðíÉûxè>x/â—…üàÿÙ_߯.þ%øsFÑdÔ¼S¦üRñŸŽî&Ñgð牼[¤ÞiÙ>9Ó­RIuK]GûSMÖà}2;k8/.û1\3OÅ~,«+TòLƒ+âì4¥N Tp1´²H`Ôç7*ž×ìqkÚÉÎ¥Y*Ò«9Jr”¼¬ƒÅlwp7xþ Ï©a¸¯ˆ(p \§ ²¡_„ɱ|Lñ‹y6Ö®eƒªÒš•˜ŠSÃBœiÂ4~Ò4]Bÿƒlÿà –z&—§éûPü9í´Û;{(d¾!þÅq4òGok$ï1Fó8i]"YˆEÙà–~.ñ/ÃÿØþ ãÏk7žñ‡‚eqâï xƒNuPмKá¿„Ÿ´þ³¡k62ºÇy¦j–V·¶®Èê“ÀŒU€Áüýñ7íà/ ÿÁ!¿iÏØsþ¿Š^!ø¿ñËãoƒümá]_ÂþѵoiZ.‹âo€¾$¼ÿ„šÿþkØÜ?„"µ‹û7ÂZ½¡¿Ôü; ·qE{}>™Õ~ÍŸ¶?ïٯöCÿ‚Ž|%ñw„¾&x«ÅµoÀ ¯…_ák–zoˆu/ücðDwž,ŸŠ4JÏF·Ô¾&hw×W›â+è´‹ nété'µ´´¿ùl׆ó|Ox‘ŽW^µLßÄL§3Áa½œ%õÜ®–7ƒ§_N ò΄i`1®jVn8zžëÑ?½án;áº\SôdÍq\IƒŒr/¸ß$αµqSs˳ÌnKÄxLVW©K_˜à)RœŸ+ž"›ö‰)J?JÁ´~Óì¿ij3§ö–«â/Ù]¹ÕµKñö›ë»{¿ˆŸ$ƒN’yKÉö i#³·µVXJDfxÌòÊïò÷üîâ÷öÏý‘纕æ•mþ7Ú‡‘‹0‚ÇáÆXòyÛ ­¼0 ìˆ p*ïüCöÇøuûøê÷âׯ |Lñ&‘sû4Üø<;ðÛAеͬ|6ñ*ÀúGŠÏiA¼F7.È¡œeÙ…:°ÃÓ‹›ÃTÂåõe‡£†‹¦ýŒ)Â~Î.ÚFÒ&ý·¿oÝjm+M—X´ý½?k {MZ[Y5;[vø§âh-ïÞ#u ,·W*ÑG*¡‚¤K&â½öÇøÉû!üUøí¯øóöbøSûUxÅ_¾"|Iø¥ñÝ~0éŸføYiãoàê‘ßü/Õü¯ëš¼Zwˆu{ojšô~,ºiÿµµ]*ÏJ·–çM±+ïx^ugÃÙ2Ä`ñX E,¿ †¯„ÆÓ,M ØZqÃTHBu!g:NtçÊ5)JNÒ²ü?ÆNYø‘Äøš–7Ëó tó§1Ëñ‹Äå˜ÿöœ4°ÕttãR¥:´% r£ˆ…hJ\ÒùŠ(¯xüÀ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Šý™ÿ‚vK$ðO¯ø-b£`IûkJã r?áJ~Ôƒ ‘уÏÒ¿ þȃàû<5ÿ¦[*(¯Îø[þKÿìiÃ?úÉeGôWˆ ÿÄ¿ø®ßëí¼¿ã5⯢Š+ôCùÔ(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢ŠÿÙxerces-c-3.1.1/doc/html/scmprint-3.html0000644000175000017500000003506411363617747016670 0ustar borisborisSample: SCMPrint
    http://xml.apache.org/http://www.apache.org/http://www.w3.org/

    Xerces-C++ 3.1.1
    Readme
    Installation
    Build Instructions

    Programming
    Samples
    FAQs

    API Reference
    DOM C++ Binding
    Migration Guide

    SCMPrint
     

    SCMPrint shows how to access the Schema Content Model information.

    Running SCMPrint
     

    This program parses the specified XSD file, then shows how to access the Schema Content Model information.

    Usage:
        SCMPrint [options] <XSD file | List file>
    
    This program loads XML Schema file(s), to show how one can
    access the Schema Content Model information.
    
    Options:
        -f     Enable full schema constraint checking processing. Defaults to off.
        -l     Indicate the input file is a List File that has a list of XSD files.
               Default to off (Input file is a XSD file).
        -?     Show this help.
    

    Here is some sample output from SCMPrint (as the output is verbose it has been truncated)

    cd xerces-c-3.1.1/samples/data
    SCMPrint personal.xsd
    
    ********** Printing out information from Schema **********
    
    Processing Namespace:   
    ============================================
    
    Name:			personnel
    Component Type:	Element
    Content Model
    	Type:	Complex
    	Name:	C0
    
    --------------------------------------------
    Name:			person
    Component Type:	Element
    Content Model
    	Type:	Complex
    	Name:	C1
    
    --------------------------------------------
    Name:			name
    Component Type:	Element
    Content Model
    	Type:	Complex
    	Name:	C2
    
    --------------------------------------------
    Name:			family
    Component Type:	Element
    Content Model
    	Type:	Complex
    	Name:	C3
    
    --------------------------------------------
    Name:			given
    Component Type:	Element
    Content Model
    	Type:	Complex
    	Name:	C4
    
    --------------------------------------------
    Name:			email
    Component Type:	Element
    Content Model
    	Type:	Simple
    	Name:	string
    
    --------------------------------------------
    Name:			url
    Component Type:	Element
    Content Model
    	Type:	Complex
    	Name:	C5
    
    --------------------------------------------
    Name:			link
    Component Type:	Element
    Content Model
    	Type:	Complex
    	Name:	C6
    
    --------------------------------------------
    Processing Namespace:   http://www.w3.org/2001/XMLSchema
    ============================================
    
    no elements
    
    
    Name:			http://www.w3.org/2001/XMLSchema, anyType
    Component Type:	Type Definition
    Category:		Complex
    Base:			anyType
    Content Model:	(* (wildcard))
    
    ...
    



    Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.
    xerces-c-3.1.1/doc/html/xinclude-3.html0000644000175000017500000003175211363617747016644 0ustar borisborisSample: XInclude
    http://xml.apache.org/http://www.apache.org/http://www.w3.org/

    Xerces-C++ 3.1.1
    Readme
    Installation
    Build Instructions

    Programming
    Samples
    FAQs

    API Reference
    DOM C++ Binding
    Migration Guide

    XInclude
     

    The XInclude example uses the provided DOM API to parse an XML file while expanding the xi:include elements. It then writes the resulting DOM tree in the expanded form.

    Running XInclude
     

    The XInclude sample converts an input XML file into an expanded output XML file. To run XInclude, enter the following

    XInclude <Input XML file> <Output XML file>

    The following parameters may be set from the command line

    Usage:
        XInclude [-h] InputFile OutputFile
      -h :             Prints this help message and exits.
    



    Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.
    xerces-c-3.1.1/doc/html/resources/0000755000175000017500000000000011363617750015777 5ustar borisborisxerces-c-3.1.1/doc/html/resources/bottom.gif0000644000175000017500000000206311363617747020001 0ustar borisborisGIF89a¨÷ÓÔÕIF|M‚ÌÏÑR†[ŽV‰c•`’_‘ÔØÚ¥§¨mk›išh™g˜e–Îäîíöúw¦v¥u¤t£s¢r¡q pŸožn ˆ±»×⟮´ñøû®€­¬~«}ª|©{¨x¦x¥iŽk‘•Èf‰b…^€ ¨á«å¬æ«á n“Џ q˜±çl‹ nŒD¾ë;œvÐñZ”©u¸Ðu·Ïo›¬£Óä²Úè¸ÝꢽÇÓêòÙíôØìóÚíôÞïõžÓ‰µ‡³…²†²…±ƒ°„¯‚¯~¨{¤vgЍâ’Ây¢vžsšr™‡´šÌ™Ë–Çm’£Ù‡³€«ˆ³›Í‰´ ‹¶¥Ø Œ¶ i‰Ž·¸‘¹’º”» •¼!–¼#—½$—½&˜½*š¿3³Ý-›À0À/•·3žÁ4ŸÂ6 Â8¡Ã;¢Ä3ˆ¥>£Å;š»?¤ÅB¥ÆD¦ÇF§ÇH¨ÈJªÉN«ÊQ¬ÊT®ËV¯ÌY°Í]²Î`´ÏcµÐdµÐe¶Ðg·Ñi¸Òl¹Óo»Ôr¼Ôt½Õu¾Õw¾Öy¿×†Ðé|Á×~ÂØ€ÃÙ‚ÄÙ†ÅÙt¨ºŠÇ܉ÇÛÉÝ‘ËÞ”Ìß“ÌÞ˜Îà™Ïà™ÍßžÑâ¨Öå«×æª×å®Ù献¹°Úç´Ûè¶Üé¹Þêk€‡ºÞê¾âî½àëš´½ÄãíÇäîÊæïÌçðÎèðÐéñÖìóÕëò·ÉÏÛîôÜîôåôùâñöËÔ×î÷úmpqæìî’º¹¶ÁâìÒêñßðõåó÷ëöùšÀ™¿–½éõøöûüúýýijjýþþÙÚÚ¾¿¿ÿÿÿòòò×××ÕÕÕÐÐÐÏÏÏÊÊÊÅÅÅ»»»···µµµ²²²±±±­­­©©©§§§¥¥¥   ™™™–––•••‘‘‘ŠŠŠ†††~~~}}}yyyrrrnnnjjjiii,¨ÿ¡H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£ÇÁˆI²¤É“(Sª\ɲ¥Ë—0c¶襦͛8sêÜɳ§ÏŸ@ƒ J(/ “*]š)O¡D µªT«T¯jÍʫ׭_»‚+¶lسdÑŠ=J³-Û·HáºKw®]¹xëæ½«·/ß¿{û x0ÓÈ?tª¶qÚÇf!;ŽLy²eɘ£Þ<¸sáÏœA{Mz´é»ŠS«VÍ8óåÊ®cÞýº¶ì§K‹Þ­»wîß¼ã]M¼xÓÛÈi'·­¼9sǾƒKN]¸õé¹kߎ±¨÷ïàË>†ùóèÓ«_Ͼ½û÷ðãËŸO¿þü€;xerces-c-3.1.1/doc/html/resources/logo.gif0000644000175000017500000000622711363617746017442 0ustar borisborisGIF89a‡<÷ÓÔÕIF|M‚ÌÏÑR†[ŽV‰c•`’_‘ÔØÚ¥§¨mk›išh™g˜e–Îäîíöúw¦v¥u¤t£s¢r¡q pŸožn ˆ±»×⟮´ñøû®€­¬~«}ª|©{¨x¦x¥iŽk‘•Èf‰b…^€ ¨á«å¬æ«á n“Џ q˜±çl‹ nŒD¾ë;œvÐñZ”©u¸Ðu·Ïo›¬£Óä²Úè¸ÝꢽÇÓêòÙíôØìóÚíôÞïõžÓ‰µ‡³…²†²…±ƒ°„¯‚¯~¨{¤vgЍâ’Ây¢vžsšr™‡´šÌ™Ë–Çm’£Ù‡³€«ˆ³›Í‰´ ‹¶¥Ø Œ¶ i‰Ž·¸‘¹’º”» •¼!–¼#—½$—½&˜½*š¿3³Ý-›À0À/•·3žÁ4ŸÂ6 Â8¡Ã;¢Ä3ˆ¥>£Å;š»?¤ÅB¥ÆD¦ÇF§ÇH¨ÈJªÉN«ÊQ¬ÊT®ËV¯ÌY°Í]²Î`´ÏcµÐdµÐe¶Ðg·Ñi¸Òl¹Óo»Ôr¼Ôt½Õu¾Õw¾Öy¿×†Ðé|Á×~ÂØ€ÃÙ‚ÄÙ†ÅÙt¨ºŠÇ܉ÇÛÉÝ‘ËÞ”Ìß“ÌÞ˜Îà™Ïà™ÍßžÑâ¨Öå«×æª×å®Ù献¹°Úç´Ûè¶Üé¹Þêk€‡ºÞê¾âî½àëš´½ÄãíÇäîÊæïÌçðÎèðÐéñÖìóÕëò·ÉÏÛîôÜîôåôùâñöËÔ×î÷úmpqæìî’º¹¶ÁâìÒêñßðõåó÷ëöùšÀ™¿–½éõøöûüúýýijjýþþÙÚÚ¾¿¿ÿÿÿòòò×××ÕÕÕÐÐÐÏÏÏÊÊÊÅÅÅ»»»···µµµ²²²±±±­­­©©©§§§¥¥¥   ™™™–––•••‘‘‘ŠŠŠ†††~~~}}}yyyrrrnnnjjjiii,‡<ÿÁ §Ë4*\Ȱ¡Ã‡#JœH±¢E‡‘ù¨A† 0 CŠI²¤É“(Sª\ɲeIp³€Ñrã ”›8sêÜɳ§ÏŸ@ƒ J”'8Y\¨)Ê´©Ó§Pu‚ñòsª®`–FÝʵkÔ©PÀÜv¬d´x]˶mO°P¨Æ½Iu*&7ÜêÝÛî[/9ÐØäK¸0Q°d›¥AÖ°ãÇ;áÊÖ cž›X±Út“3Ϲ6m¢¹4S¿<§^æyèNϰMË.Šx¬íÊ«w¶ÆzS®›½]Ïþ—®ñ¹ªëÜݹùgâЋûLÞ“ùóë½IGß^»¬wêÛÃCÿ•|¼®eå@çˆÞ$¼óúÑ9Õ‹nÓï\¬Ú‹ÖNIôë÷þéÔˆhn¸çÙg¢5ÅëÍážvB¡ÙyD™2P09 4Ðo7Y(†8¹Œ†àh'‡¹„‰*ê4Ç2àÄ%)xÓ†Ÿ $܉‡Õu[bµ8C‚ãàDn#8{Ü4d‘GBÁŠ@¦4²d™Áp€<Ð@x°Atp*¨PAçN”ÀÁ擾›eß¼S `ð€¨=À Dà@8{¡7¯B ¨`B%$9 $¿Voœõ¶ï‚¦lbJ“Íe·àf¦|¢ÙÌ8 Ü¿ò9! Jgìî ˆž¦W½È-·kÀT° ¤ HÁøF¤Àâ»@ Ô•Øxæ}ïƒB 93³¯¬5&û­l†8û8'‰4£ }hÛ 'Q°Â^ „b,ÀçøF~ÀJùÔTÉô¦;ýéPºÔ92TÍiOƒZÔ¤6µ¬iÍê[¿Z×M¦K ­Ð‚ÃèPG:Ò¡tœc|h ±le3ÛÙЖv±ìe7ûÙÑfÊ´¹míogÛÍbiLÆÐe|ƒðpÇ<æáŽx»#|ƒ£iügv»Þò¦·½ñ­oCÏð&ën÷»ã=ïz»ãÞùÞ7û­p€7|à7øŽ/=.¼  ¯‡ÈG.r{ÌB bÿh°¡Ðñ‡œä#79ÊUŽê›´äð†yÌOžrœùæ/×¹Ì{¾rLU¡B0GÎ×!r¦×ƒéöøÇÈðŒ =éKoºÖ£>õªåêJ‡ÇÓµ>v®SÝêHûØ×u©Ÿ=(ÞÚÂÇÑ!v‘çÃîvÇ?p±µÜ r/ÝG~÷z>zç»ß ø¹×Ýðx7|âûÞçÆ þñ‡ÏûÞ)ÿhoq P‡;tNr{äƒ2(xÍ¡ðùОô%?}ê}ÞâÖ‹ö±G½êlû×ÃÞôº§=ª½Õ…x#ó »ÓŽnÌ A)þñ“Ïv²7ÿùÑ7>ò•o}çC(Òß~|õ×®ï % q±ÄÁ’gòz_ƒ`þŽƒŒ£ý„üÝã?Æ×ÿþî§õÀ6áö‡yúð4~'vvÆ~¸7r÷À„€Áf6ðäÐ(r˜yQsè ‚#¨&Ø‚õ°€(4(;xerces-c-3.1.1/doc/html/resources/dot.gif0000644000175000017500000000006111363617747017257 0ustar borisborisGIF89a‘ÿÿÿÿÀÀÀ!ù,”U;xerces-c-3.1.1/doc/html/resources/button-asf-lo.gif0000644000175000017500000000275711363617747021201 0ustar borisborisGIF89a`÷ÓÔÕIF|M‚ÌÏÑR†[ŽV‰c•`’_‘ÔØÚ¥§¨mk›išh™g˜e–Îäîíöúw¦v¥u¤t£s¢r¡q pŸožn ˆ±»×⟮´ñøû®€­¬~«}ª|©{¨x¦x¥iŽk‘•Èf‰b…^€ ¨á«å¬æ«á n“Џ q˜±çl‹ nŒD¾ë;œvÐñZ”©u¸Ðu·Ïo›¬£Óä²Úè¸ÝꢽÇÓêòÙíôØìóÚíôÞïõžÓ‰µ‡³…²†²…±ƒ°„¯‚¯~¨{¤vgЍâ’Ây¢vžsšr™‡´šÌ™Ë–Çm’£Ù‡³€«ˆ³›Í‰´ ‹¶¥Ø Œ¶ i‰Ž·¸‘¹’º”» •¼!–¼#—½$—½&˜½*š¿3³Ý-›À0À/•·3žÁ4ŸÂ6 Â8¡Ã;¢Ä3ˆ¥>£Å;š»?¤ÅB¥ÆD¦ÇF§ÇH¨ÈJªÉN«ÊQ¬ÊT®ËV¯ÌY°Í]²Î`´ÏcµÐdµÐe¶Ðg·Ñi¸Òl¹Óo»Ôr¼Ôt½Õu¾Õw¾Öy¿×†Ðé|Á×~ÂØ€ÃÙ‚ÄÙ†ÅÙt¨ºŠÇ܉ÇÛÉÝ‘ËÞ”Ìß“ÌÞ˜Îà™Ïà™ÍßžÑâ¨Öå«×æª×å®Ù献¹°Úç´Ûè¶Üé¹Þêk€‡ºÞê¾âî½àëš´½ÄãíÇäîÊæïÌçðÎèðÐéñÖìóÕëò·ÉÏÛîôÜîôåôùâñöËÔ×î÷úmpqæìî’º¹¶ÁâìÒêñßðõåó÷ëöùšÀ™¿–½éõøöûüúýýijjýþþÙÚÚ¾¿¿ÿÿÿòòò×××ÕÕÕÐÐÐÏÏÏÊÊÊÅÅÅ»»»···µµµ²²²±±±­­­©©©§§§¥¥¥   ™™™–––•••‘‘‘ŠŠŠ†††~~~}}}yyyrrrnnnjjjiii,`ÿ¡H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜhÐ‹Ç CŠI²¤É“(S†,Æ‹À–/]B9S&Í›6sÆÜY“'NŸ:{ ¥‰ðçРF“"] ´éQ§,ÁHõ"µeUªS¯jÍÊÕjW¬^»UlY²`X:Uº–éÓ·lẕù’£Ý»éÎÈ LC ‚µhˆ5°üŠ e)°"X{Ô¼BDð‘,FPʘ‚%«”(n†¸RåË#[Ñ\É1Å ÊWwþÀšmiàJ¹¢ŠóEÕìW{ ÈI-—©¼Ó U+ ‘`x2E‹ã둟`DÞøº”(ØQÁ ÿ‚>ðL¬`¿Ô:e¨+(Š‚;?'?˜ôÄZõ¥O0=ˆ„—ˆ1 »°’Æ.«Â`Cñ‡› 7rP †Ñd (P¬RÊ%»ìÒ0ƒÀL$CØRÊ'¹œ1PÑPâËPÊ B¡ +©¤Å(¾¤!ÐCD3,ÀàaH0®°B™@¥Ð"P&ÁÈQË*…ä² Á$Ç XX—@qäBK*œØÒ e‘øBÄ$CвËPD‹"¹! A›øbI0•@ñJ/[Þñ0«¨L )P¯ÄÒ&Mž"t d Wf) jѰ&"€Èâ‹™{9D0”üÔ 0q@±‡|rh *QL*jD fŽhÂF°¤B-jØ Aòk*+>ÉI—ô‹*Pàñ_€‹ü1‡¥Ì$¤–F4¡ Œ_±HˆI0¬b$Cô¡†+¢|…©œÅ®L©‡+˜eâÊPXbJCà1pÄ£<2'­A! (¦½’¬ dâš+tôáÊC@"‡aPPÂY)rôFɽ Ïq ,C„R/^£Å;š»?¤ÅB¥ÆD¦ÇF§ÇH¨ÈJªÉN«ÊQ¬ÊT®ËV¯ÌY°Í]²Î`´ÏcµÐdµÐe¶Ðg·Ñi¸Òl¹Óo»Ôr¼Ôt½Õu¾Õw¾Öy¿×†Ðé|Á×~ÂØ€ÃÙ‚ÄÙ†ÅÙt¨ºŠÇ܉ÇÛÉÝ‘ËÞ”Ìß“ÌÞ˜Îà™Ïà™ÍßžÑâ¨Öå«×æª×å®Ù献¹°Úç´Ûè¶Üé¹Þêk€‡ºÞê¾âî½àëš´½ÄãíÇäîÊæïÌçðÎèðÐéñÖìóÕëò·ÉÏÛîôÜîôåôùâñöËÔ×î÷úmpqæìî’º¹¶ÁâìÒêñßðõåó÷ëöùšÀ™¿–½éõøöûüúýýijjýþþÙÚÚ¾¿¿ÿÿÿòòò×××ÕÕÕÐÐÐÏÏÏÊÊÊÅÅÅ»»»···µµµ²²²±±±­­­©©©§§§¥¥¥   ™™™–––•••‘‘‘ŠŠŠ†††~~~}}}yyyrrrnnnjjjiii,`ÿ¡H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜhÐ‹Ç CŠI²¤É“(S†,Æ‹À–/]B9S&Í›6sÆÜY“'NŸ:{ ¥‰ðçРF“"] ´éQ§,ÁHõ"µeUªS¯jÍÊÕjW¬^»UlY²`X:Uº–éÓ·lẕù’£Ý»éÎ4hJI¥ :•(Õ8©A EÉ&(ŒR¥Á“jŽ@E©ØèI¨L*D…†Ð2gà—F¯`eR“¦Ô*Vœä@¹S ÖH_ž‰ã&¡Þ´MÕr³+Q¶îkt(Ø*8ÁUê•ÆU0<|±h(˜ŸJÁ4éÿñŽÈQ¢`•> f‰Ñ¯Oi‚bì“›"´ -¥aI¢èE¹ô›A‰D£ˆ/½@ (P '½Ðˆ/qøáK ¶ôÉ)ª äÆ/–”Í*“ä’z|R„€­b‹@ÂñK'zøRI!ÁôÇwøÇˆôчi¼A }dIAG.±¸ò ,¾,Å'»Q ± ¶ 1Ä&XBB+²ÔâH²Æb&¹42+´t †Ñá ,i(Ì’ìËŠP”w %”¼E$™ÌÁ‰ŽHp}1D0—L0²ñø «É@©Êx×AQ "PP¼ iÈŒ#P r‡Ñ„ò†&qÈjÈ»¤¢{Ž“HÀTvJ4ˆþ‘Ê!¬4RÆ€Ÿ<òdy]z%Dô¡†,§ä¦Æ+§@FD!=BD"šºrƱl2™@q v@I»¸RG»ø¡F'EܲŠgñ¥ ñ"°ØBË'×B±&­½ñÇ%™Ç'”ÀØí@˜â¥2FQ®ìrEzA¡ÒÌ4×lóIÅ óÎ<÷ìóÏ@-ôÐDÝs@;xerces-c-3.1.1/doc/html/resources/separator.gif0000644000175000017500000000015611363617750020470 0ustar borisborisGIF89ax¢××ײ²²±±±•••~~~}}}iii,x;2Üþ0ÊI«½¸£²ÿ`(jÜœhª®lë¾p,Ïî°uD®ï|ïÿÀ pH,m¥‘rÉl";ΨtúØ$;xerces-c-3.1.1/doc/html/resources/button-w3c-hi.gif0000644000175000017500000000273711363617747021110 0ustar borisborisGIF89a`÷ÓÔÕIF|M‚ÌÏÑR†[ŽV‰c•`’_‘ÔØÚ¥§¨mk›išh™g˜e–Îäîíöúw¦v¥u¤t£s¢r¡q pŸožn ˆ±»×⟮´ñøû®€­¬~«}ª|©{¨x¦x¥iŽk‘•Èf‰b…^€ ¨á«å¬æ«á n“Џ q˜±çl‹ nŒD¾ë;œvÐñZ”©u¸Ðu·Ïo›¬£Óä²Úè¸ÝꢽÇÓêòÙíôØìóÚíôÞïõžÓ‰µ‡³…²†²…±ƒ°„¯‚¯~¨{¤vgЍâ’Ây¢vžsšr™‡´šÌ™Ë–Çm’£Ù‡³€«ˆ³›Í‰´ ‹¶¥Ø Œ¶ i‰Ž·¸‘¹’º”» •¼!–¼#—½$—½&˜½*š¿3³Ý-›À0À/•·3žÁ4ŸÂ6 Â8¡Ã;¢Ä3ˆ¥>£Å;š»?¤ÅB¥ÆD¦ÇF§ÇH¨ÈJªÉN«ÊQ¬ÊT®ËV¯ÌY°Í]²Î`´ÏcµÐdµÐe¶Ðg·Ñi¸Òl¹Óo»Ôr¼Ôt½Õu¾Õw¾Öy¿×†Ðé|Á×~ÂØ€ÃÙ‚ÄÙ†ÅÙt¨ºŠÇ܉ÇÛÉÝ‘ËÞ”Ìß“ÌÞ˜Îà™Ïà™ÍßžÑâ¨Öå«×æª×å®Ù献¹°Úç´Ûè¶Üé¹Þêk€‡ºÞê¾âî½àëš´½ÄãíÇäîÊæïÌçðÎèðÐéñÖìóÕëò·ÉÏÛîôÜîôåôùâñöËÔ×î÷úmpqæìî’º¹¶ÁâìÒêñßðõåó÷ëöùšÀ™¿–½éõøöûüúýýijjýþþÙÚÚ¾¿¿ÿÿÿòòò×××ÕÕÕÐÐÐÏÏÏÊÊÊÅÅÅ»»»···µµµ²²²±±±­­­©©©§§§¥¥¥   ™™™–––•••‘‘‘ŠŠŠ†††~~~}}}yyyrrrnnnjjjiii,`ÿ¡H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜhÐ‹Ç CŠI²¤É“(S†,Æ‹À–/]B9S&Í›6sÆÜY“'NŸ:{ ¥‰ðçРF“"] ´éQ§,ÁHõ"µeUªS¯jÍÊÕjW¬^»UlY²`X:Uº–éÓ·lẕù’£Ý»éÎ4øª”N² 0"ò¨Èž8E$AqõI”)(“l¥éSäŽ@HEÜ*‚茭G‹€!y5g`JÁˆb“V®]¨è@ًدL_ž™'¡Þ´_-yS žWÉö€³ÔÜ®8à0‘¦8?™¶¹Èœ!PàNýÿWè‘¥Gà@ ¼N¥m¬Ô€£E «7Ô”0Š4D ÂA i”QÐo=² $ڈɮ@aŒ+©ˆ „$ÚÈaˆ6ˆ$#'´Ø2Û„‹»|’°B̀풌@¨ˆÇ6©¢M(‹€3ˆ{ìa †èáH!ƒ’ŸôQÈ)œHpÍŒ4Ѱr„6‘@±J6Æ€rŒ4À@áF2¿ø‚ 1ÚdBP4Ã,aI2ÃÀ" §PSÉ@Ñ(!Ð(.C6Ĥ 8ztR4iäÈ%´|òIPpRʨ¼ÑAôÅ/àŒ‚8àXÖã6qä*a ¤öÄE(@Þ1j Î%P(¢G˸Ç)t|#{Tc í±÷ˆÝTFBqHDSÉP¨±Ê%Q™×”}bL!l$!‹lC dÆ,"Ð%Æ£Å;š»?¤ÅB¥ÆD¦ÇF§ÇH¨ÈJªÉN«ÊQ¬ÊT®ËV¯ÌY°Í]²Î`´ÏcµÐdµÐe¶Ðg·Ñi¸Òl¹Óo»Ôr¼Ôt½Õu¾Õw¾Öy¿×†Ðé|Á×~ÂØ€ÃÙ‚ÄÙ†ÅÙt¨ºŠÇ܉ÇÛÉÝ‘ËÞ”Ìß“ÌÞ˜Îà™Ïà™ÍßžÑâ¨Öå«×æª×å®Ù献¹°Úç´Ûè¶Üé¹Þêk€‡ºÞê¾âî½àëš´½ÄãíÇäîÊæïÌçðÎèðÐéñÖìóÕëò·ÉÏÛîôÜîôåôùâñöËÔ×î÷úmpqæìî’º¹¶ÁâìÒêñßðõåó÷ëöùšÀ™¿–½éõøöûüúýýijjýþþÙÚÚ¾¿¿ÿÿÿòòò×××ÕÕÕÐÐÐÏÏÏÊÊÊÅÅÅ»»»···µµµ²²²±±±­­­©©©§§§¥¥¥   ™™™–––•••‘‘‘ŠŠŠ†††~~~}}}yyyrrrnnnjjjiii,`ÿ¡H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜhÐ‹Ç CŠI²¤É“(S†,Æ‹À–/]B9S&Í›6sÆÜY“'NŸ:{ ¥‰ðçРF“"] ´éQ§,ÁHõ"µeUªS¯jÍÊÕjW¬^»UlY²`X:Uº–éÓ·lẕù’£Ý»éέ”R¾ ,: Ø6Güºr%êHıöˆ ¦a“ œyEl,=PÞüêÅJ™KÉ–ùªó*=Âô"F[ÔÀ2Ÿ¨U“Eç‹­#Ä‚‚RÇj¯òL+pÈ5KÀù9µLŽ6L…Àƒ£mÔ#p{†€ÿÓ¤\Ÿi¤s\fF"¢=®Ñ|T†L’–«Ì p€8N&ü1$"RM4jT³‹‚»¤Œ1‡üŠr1Å#"8B¥Dà ¹È2J5ÙT²"q€ÃÉ/ÉIJ 2i 4H5Ÿhš1®Üá ¶ìRDP ¡M¦ý"‚/ÄtãG#àø²‹#Á¢„@¥€cÇ4¹,B *x€óHŠ‚a]É E ’Œ6öq¢Í1Ÿü¢D5p@ñ‹1G<‚ 5C„Š6¢€ Áˆ°D.zıM.¶€C‡+Ú¨!ÐÁHC‰)NB© $x ôŠ1¢eÉP°Œa:‚È0ڜ乗@_üb¨!àt#ÐG‡©µô 8E¨A8”@qÉ)n$CÌ-Ç ÁF2®¸!P&àØr 8›@‰J!£ r„-Pôàw‘r±ÜÉ€†,à®”g Ò,aH–²jE&¾ ÂF4®|·È…!¾P ž${Š/w@Ê+…ørÃ~ É@¨¸…+¬”‰0ÄØR‡+~é ûâ‹&wÅ'G ‹¾}…&½ÜqÄãJ¿x%½‘^þ*íôDzA¡ÒÔTWmõIÅ õÖ\wíõ×`‡-öØd—Ýu@;xerces-c-3.1.1/doc/html/resources/join.gif0000644000175000017500000000236411363617747017440 0ustar borisborisGIF89ax÷ÓÔÕIF|M‚ÌÏÑR†[ŽV‰c•`’_‘ÔØÚ¥§¨mk›išh™g˜e–Îäîíöúw¦v¥u¤t£s¢r¡q pŸožn ˆ±»×⟮´ñøû®€­¬~«}ª|©{¨x¦x¥iŽk‘•Èf‰b…^€ ¨á«å¬æ«á n“Џ q˜±çl‹ nŒD¾ë;œvÐñZ”©u¸Ðu·Ïo›¬£Óä²Úè¸ÝꢽÇÓêòÙíôØìóÚíôÞïõžÓ‰µ‡³…²†²…±ƒ°„¯‚¯~¨{¤vgЍâ’Ây¢vžsšr™‡´šÌ™Ë–Çm’£Ù‡³€«ˆ³›Í‰´ ‹¶¥Ø Œ¶ i‰Ž·¸‘¹’º”» •¼!–¼#—½$—½&˜½*š¿3³Ý-›À0À/•·3žÁ4ŸÂ6 Â8¡Ã;¢Ä3ˆ¥>£Å;š»?¤ÅB¥ÆD¦ÇF§ÇH¨ÈJªÉN«ÊQ¬ÊT®ËV¯ÌY°Í]²Î`´ÏcµÐdµÐe¶Ðg·Ñi¸Òl¹Óo»Ôr¼Ôt½Õu¾Õw¾Öy¿×†Ðé|Á×~ÂØ€ÃÙ‚ÄÙ†ÅÙt¨ºŠÇ܉ÇÛÉÝ‘ËÞ”Ìß“ÌÞ˜Îà™Ïà™ÍßžÑâ¨Öå«×æª×å®Ù献¹°Úç´Ûè¶Üé¹Þêk€‡ºÞê¾âî½àëš´½ÄãíÇäîÊæïÌçðÎèðÐéñÖìóÕëò·ÉÏÛîôÜîôåôùâñöËÔ×î÷úmpqæìî’º¹¶ÁâìÒêñßðõåó÷ëöùšÀ™¿–½éõøöûüúýýijjýþþÙÚÚ¾¿¿ÿÿÿòòò×××ÕÕÕÐÐÐÏÏÏÊÊÊÅÅÅ»»»···µµµ²²²±±±­­­©©©§§§¥¥¥   ™™™–––•••‘‘‘ŠŠŠ†††~~~}}}yyyrrrnnnjjjiii,xÿÅ 8]½ƒë*¬goŸ2Z HœHÑ #æÞ¬—ã†#Ri£Æ…;‚„8’äÅŒS.Ô÷O»›8qn¬—ï`Ož>ó­¹Ñr¢/:”}‹·ó§Ó C‹J<štiSŸXy %*•ªR¦Ÿ¥is§Ù³gïݛŵ¥™+X0¶›‡6íÚ¶#߯57·®Yµl»Â•K×ïA²=*–¹xã¼{ H™1cÅÌT+^°Ì€Ž)cÆõGž\ùræÍ« Y2eËP(ŸæìåÌš‰ê+6´<³t°°‡ :Œø/lÖÞó~^üxòåÍŸk?¸pâÆ‘+Ùgî|7VĆÓ×£7O:¼~èØñÈ2sèàÑS¿“½{øòÑg~úñ·‘ïÅ7_}÷å·è©ö™mܵsN9âx39æ|ÓXNXá…nØá‡;‰Ú<b¨!‡‚(ámemÇÛvëÉO;é°ÓÎ;ñv•yDæ¸c?yÖEÒ£#>)dy7Fhà•Xf©å–WZÉå—`†)æFè­cæ™h¦©æšl¶éæ›pÆ)g›õ —Ïxæ©çž|öé矀*è ~Ö‰Û˜ˆ&ª¨a^.êè£`Ò;xerces-c-3.1.1/doc/html/resources/note.gif0000644000175000017500000000044711363617750017440 0ustar borisborisGIF89a³„„;¼¼Xww8¨¨PPP(ÏÏikk6ÙÙsÃÃgää~^^5í퇵µgõõüü—ÿÿÿ,ÜPÉI¥‘/gźïH^ÚÃ} #"œ¢ß2Fçš±\ D=0.˜JÚ†dRZí ‚€0 ެ(¤ÈV±-ì€Â”šHdæ‚p= ‰ƒ›\D˜£tbmmHEqjx„ †ˆ^ WjŽnˆ<t„m  Hq  ž  ¢fvh“ެ™vXz¶­ ½¤=]¾   ËÁ½ŠS –ɶÌÁ€hÓÊÌÂU=–ÔÝÞbQåæç„ŠíÞôßGøùøèüþþ;xerces-c-3.1.1/doc/html/resources/close.gif0000644000175000017500000000076211363617747017606 0ustar borisborisGIF89axÕÿÿÿòòòìììÛÛÛ×××ÅÅÅÃÃû»»¶¶¶²²²±±±­­­©©©£££™™™–––•••’’’‘‘‘‹‹‹ˆˆˆ‡‡‡‚‚‚~~~}}}rrrqqqnnnjjjiii,xÿ@‚B,ȤrÉl:ŸÐ¦æ#ŒZ¯Ø¬VJ&¾à°xL.›Ïè´zm†L«™¸|N¯Ûïø¼~ÏïãÝ][‚ƒ„…€U†‰Š‹F D —™˜šœŸ›¡ž¢ £¦¥¨¤ª§«¨”˜ D¶¸·º°½Ž¾À¿ÄÁÅÃÆÉÈËÇÍÊŽ¶ G˜ÙÚÛÜÝÞßàáâãäÙ µE¬ð©ñ­ôóöòøªÜyFYAg"\x°a¯:, À ,H8W®£GsŒ¶d‹P¡_+øÀƒ?0cÊœ9³Â… Q¦¤X`Â@ƒ J´¨Ñ£H“*]Êt…ÿR;xerces-c-3.1.1/doc/html/resources/right.gif0000644000175000017500000000226211363617747017613 0ustar borisborisGIF89a<÷ÓÔÕIF|M‚ÌÏÑR†[ŽV‰c•`’_‘ÔØÚ¥§¨mk›išh™g˜e–Îäîíöúw¦v¥u¤t£s¢r¡q pŸožn ˆ±»×⟮´ñøû®€­¬~«}ª|©{¨x¦x¥iŽk‘•Èf‰b…^€ ¨á«å¬æ«á n“Џ q˜±çl‹ nŒD¾ë;œvÐñZ”©u¸Ðu·Ïo›¬£Óä²Úè¸ÝꢽÇÓêòÙíôØìóÚíôÞïõžÓ‰µ‡³…²†²…±ƒ°„¯‚¯~¨{¤vgЍâ’Ây¢vžsšr™‡´šÌ™Ë–Çm’£Ù‡³€«ˆ³›Í‰´ ‹¶¥Ø Œ¶ i‰Ž·¸‘¹’º”» •¼!–¼#—½$—½&˜½*š¿3³Ý-›À0À/•·3žÁ4ŸÂ6 Â8¡Ã;¢Ä3ˆ¥>£Å;š»?¤ÅB¥ÆD¦ÇF§ÇH¨ÈJªÉN«ÊQ¬ÊT®ËV¯ÌY°Í]²Î`´ÏcµÐdµÐe¶Ðg·Ñi¸Òl¹Óo»Ôr¼Ôt½Õu¾Õw¾Öy¿×†Ðé|Á×~ÂØ€ÃÙ‚ÄÙ†ÅÙt¨ºŠÇ܉ÇÛÉÝ‘ËÞ”Ìß“ÌÞ˜Îà™Ïà™ÍßžÑâ¨Öå«×æª×å®Ù献¹°Úç´Ûè¶Üé¹Þêk€‡ºÞê¾âî½àëš´½ÄãíÇäîÊæïÌçðÎèðÐéñÖìóÕëò·ÉÏÛîôÜîôåôùâñöËÔ×î÷úmpqæìî’º¹¶ÁâìÒêñßðõåó÷ëöùšÀ™¿–½éõøöûüúýýijjýþþÙÚÚ¾¿¿ÿÿÿòòò×××ÕÕÕÐÐÐÏÏÏÊÊÊÅÅÅ»»»···µµµ²²²±±±­­­©©©§§§¥¥¥   ™™™–––•••‘‘‘ŠŠŠ†††~~~}}}yyyrrrnnnjjjiii,<ÿiH° Á,2òxǘ‡#Jœˆ† ™,š¦1„±£Ç ¿ÜÐrã$ÁxÉ’¥MàR®Ñ&›8AšÁ2J&Ç•P€ ýùÑ A>[*åhƆ Ÿ9oÖœ*µ#I‡%ºµkÐI—*õ¶£ÊªQƒzY˶mÙšZã.}{èØ¹P©Ú :1"ݳ]ã¶L6lK»,ÿÎÔÛ1HÅ\ãö…y)áÁ£îuü±²\¯‰ ³ô2ùafÆ?/³õ™kËÊw•žFÛ¸4ÖS«.l–óGßg§Î·äÒ°ïæ —vU㶆ÞY4HÒÈó:W»Ûøô×Öã—íí|³mï—'=¾¹æÆíëNz>¼ÇåÌå¿wš|îÿ¯íØXç ¸ØvøÅ`à|ü=¶ es-¸_M“A¡ ŸYvasbµ¡~¨M:<øÙgMõð`‡ EŠ„!RÕ‘^´‚‰ zeÆXâ‹-™a…XüÐŒCøí†ƒ ,´AÊ‘àÄ å”TVi¥=BCà;xerces-c-3.1.1/doc/html/resources/button-xml-hi.gif0000644000175000017500000000267011363617747021210 0ustar borisborisGIF89a`÷ÓÔÕIF|M‚ÌÏÑR†[ŽV‰c•`’_‘ÔØÚ¥§¨mk›išh™g˜e–Îäîíöúw¦v¥u¤t£s¢r¡q pŸožn ˆ±»×⟮´ñøû®€­¬~«}ª|©{¨x¦x¥iŽk‘•Èf‰b…^€ ¨á«å¬æ«á n“Џ q˜±çl‹ nŒD¾ë;œvÐñZ”©u¸Ðu·Ïo›¬£Óä²Úè¸ÝꢽÇÓêòÙíôØìóÚíôÞïõžÓ‰µ‡³…²†²…±ƒ°„¯‚¯~¨{¤vgЍâ’Ây¢vžsšr™‡´šÌ™Ë–Çm’£Ù‡³€«ˆ³›Í‰´ ‹¶¥Ø Œ¶ i‰Ž·¸‘¹’º”» •¼!–¼#—½$—½&˜½*š¿3³Ý-›À0À/•·3žÁ4ŸÂ6 Â8¡Ã;¢Ä3ˆ¥>£Å;š»?¤ÅB¥ÆD¦ÇF§ÇH¨ÈJªÉN«ÊQ¬ÊT®ËV¯ÌY°Í]²Î`´ÏcµÐdµÐe¶Ðg·Ñi¸Òl¹Óo»Ôr¼Ôt½Õu¾Õw¾Öy¿×†Ðé|Á×~ÂØ€ÃÙ‚ÄÙ†ÅÙt¨ºŠÇ܉ÇÛÉÝ‘ËÞ”Ìß“ÌÞ˜Îà™Ïà™ÍßžÑâ¨Öå«×æª×å®Ù献¹°Úç´Ûè¶Üé¹Þêk€‡ºÞê¾âî½àëš´½ÄãíÇäîÊæïÌçðÎèðÐéñÖìóÕëò·ÉÏÛîôÜîôåôùâñöËÔ×î÷úmpqæìî’º¹¶ÁâìÒêñßðõåó÷ëöùšÀ™¿–½éõøöûüúýýijjýþþÙÚÚ¾¿¿ÿÿÿòòò×××ÕÕÕÐÐÐÏÏÏÊÊÊÅÅÅ»»»···µµµ²²²±±±­­­©©©§§§¥¥¥   ™™™–––•••‘‘‘ŠŠŠ†††~~~}}}yyyrrrnnnjjjiii,`ÿ¡H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜhÐ‹Ç CŠI²¤É“(S†,Æ‹À–/]B9S&Í›6sÆÜY“'NŸ:{ ¥‰ðçРF“"] ´éQ§,ÁHõ"µeUªS¯jÍÊÕjW¬^»UlY²`X:Uº–éÓ·lẕù’£Ý»éÎ<Èé›9¶ )ІJ¤]úкc0Q4I?ÙåJ@S²à4m :JA‘#ËŸZE¢"øè—±Uo Œ*’Ëã8¬Ý‘`Zƒ{D¨’E Ê&p¹Ü ÇH¸@k–J´c—ý‚¢G8ȃºÿqä*­ízÀ)Z•¦FSõ(,(ÁzAªË:µGŒ q^¿ 8"XöÉ6K¼b sÎAG" B#ÖùB‡4Â@±Ê±#8u TË6»N"ìE“K$½² P,0¹ BÍ)v€IŠ$2 o5Ž6–…"Ì)à˜¢M#” 8œP E H"gP“Ë*àè! 8r dK5 €¹Þ|2,Õ¨'ÝÄÑ‹6ÚPãFz‹8²CT AwT“J4"‚’™”à„â ‹ ñ†/Ó¼"uäÌr:Î.´4é耄bH-Ûá¡{˜ ²GCè •³KG°â(eCL ªlh]BK{ürÈ#CœÅÑ òG/½ü2J$¾ô‘‹›{ô²ˆ)¨ ÄɲP˜òÊ£Ä.xŒ² sìH Øj‹0…ir„²Ì…+œ@‰/wÜa À°rì^xE¬W|‘^P¨¤ñÆw|’@1„,òÈ$—lòÉ(§¬òÊ,“;xerces-c-3.1.1/doc/html/resources/separator-space.gif0000644000175000017500000000013111363617747021560 0ustar borisborisGIF87axÂ××ײ²²±±±•••~~~}}}iiiÿÿÿ,x&2Üþ0ÊI«½¸£²ÿ`(jÜ2žhªnê¾ðÄšqm§ó­ïß–;xerces-c-3.1.1/doc/html/resources/button-xml-lo.gif0000644000175000017500000000266211363617745021221 0ustar borisborisGIF89a`÷ÓÔÕIF|M‚ÌÏÑR†[ŽV‰c•`’_‘ÔØÚ¥§¨mk›išh™g˜e–Îäîíöúw¦v¥u¤t£s¢r¡q pŸožn ˆ±»×⟮´ñøû®€­¬~«}ª|©{¨x¦x¥iŽk‘•Èf‰b…^€ ¨á«å¬æ«á n“Џ q˜±çl‹ nŒD¾ë;œvÐñZ”©u¸Ðu·Ïo›¬£Óä²Úè¸ÝꢽÇÓêòÙíôØìóÚíôÞïõžÓ‰µ‡³…²†²…±ƒ°„¯‚¯~¨{¤vgЍâ’Ây¢vžsšr™‡´šÌ™Ë–Çm’£Ù‡³€«ˆ³›Í‰´ ‹¶¥Ø Œ¶ i‰Ž·¸‘¹’º”» •¼!–¼#—½$—½&˜½*š¿3³Ý-›À0À/•·3žÁ4ŸÂ6 Â8¡Ã;¢Ä3ˆ¥>£Å;š»?¤ÅB¥ÆD¦ÇF§ÇH¨ÈJªÉN«ÊQ¬ÊT®ËV¯ÌY°Í]²Î`´ÏcµÐdµÐe¶Ðg·Ñi¸Òl¹Óo»Ôr¼Ôt½Õu¾Õw¾Öy¿×†Ðé|Á×~ÂØ€ÃÙ‚ÄÙ†ÅÙt¨ºŠÇ܉ÇÛÉÝ‘ËÞ”Ìß“ÌÞ˜Îà™Ïà™ÍßžÑâ¨Öå«×æª×å®Ù献¹°Úç´Ûè¶Üé¹Þêk€‡ºÞê¾âî½àëš´½ÄãíÇäîÊæïÌçðÎèðÐéñÖìóÕëò·ÉÏÛîôÜîôåôùâñöËÔ×î÷úmpqæìî’º¹¶ÁâìÒêñßðõåó÷ëöùšÀ™¿–½éõøöûüúýýijjýþþÙÚÚ¾¿¿ÿÿÿòòò×××ÕÕÕÐÐÐÏÏÏÊÊÊÅÅÅ»»»···µµµ²²²±±±­­­©©©§§§¥¥¥   ™™™–––•••‘‘‘ŠŠŠ†††~~~}}}yyyrrrnnnjjjiii,`ÿ¡H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜhÐ‹Ç CŠI²¤É“(S†,Æ‹À–/]B9S&Í›6sÆÜY“'NŸ:{ ¥‰ðçРF“"] ´éQ§,ÁHõ"µeUªS¯jÍÊÕjW¬^»UlY²`X:Uº–éÓ·lẕù’£Ý»éÎ<É”š8ªþ bÊ¢Uzðœšc0+F)¥ZêŽ@L§ÞüãŠÈ©8’0A‰S T©X]"ˆh‘On \šJ”7ŸhÁÝ‘`Zƒwzq: J¤`«ØÈ fhP°=Q{• +"Žr rÇW0È}€¥ÿB*Щív‚ *Œ¤CµO”«”W®í²Ï*—"C£¤×oÉ׋e“øB„)D0çtÑÑË&Ñ …+CÄK,P|K)¯ÈŒm¡ +C{®¬²È@¦D£”üòÆ«RD&r£Èƒ" oŒ/–U‹&Á`ÒKsÏI0‘Ds ©ÓK.ƒœ‘Ë*Ÿs‡%ÁÄ1P*»TæŠíIâÇ@¥ìR]$ÀÀáŠ/¾ÁFz… âK/CD Asì +!R"KüÁ\ ÁX‚ˆ…ˆâ†+µ˜K/r¬’auˆ wJ“ŽŠ¢G% ²]ê±÷ wÈ—1Ê‹P¹«|Ë'ÎU¢+,{pòK uDÉ)iÜ1ĈŒRs¸Ò‡®`xÉ"®à±ÊܹR&œ  ²P`bJмBË*t\òÉh¬è±GµC\BÇ…A -ŸA!J$P<âÊr¤BËïö&(^ o4`Ã_¤*UlñÅŸ$P wìñÇ ‡,òÈ$—lòÉ;xerces-c-3.1.1/doc/html/resources/line.gif0000644000175000017500000000163411363617746017426 0ustar borisborisGIF89aÈ÷ÓÔÕIF|M‚ÌÏÑR†[ŽV‰c•`’_‘ÔØÚ¥§¨mk›išh™g˜e–Îäîíöúw¦v¥u¤t£s¢r¡q pŸožn ˆ±»×⟮´ñøû®€­¬~«}ª|©{¨x¦x¥iŽk‘•Èf‰b…^€ ¨á«å¬æ«á n“Џ q˜±çl‹ nŒD¾ë;œvÐñZ”©u¸Ðu·Ïo›¬£Óä²Úè¸ÝꢽÇÓêòÙíôØìóÚíôÞïõžÓ‰µ‡³…²†²…±ƒ°„¯‚¯~¨{¤vgЍâ’Ây¢vžsšr™‡´šÌ™Ë–Çm’£Ù‡³€«ˆ³›Í‰´ ‹¶¥Ø Œ¶ i‰Ž·¸‘¹’º”» •¼!–¼#—½$—½&˜½*š¿3³Ý-›À0À/•·3žÁ4ŸÂ6 Â8¡Ã;¢Ä3ˆ¥>£Å;š»?¤ÅB¥ÆD¦ÇF§ÇH¨ÈJªÉN«ÊQ¬ÊT®ËV¯ÌY°Í]²Î`´ÏcµÐdµÐe¶Ðg·Ñi¸Òl¹Óo»Ôr¼Ôt½Õu¾Õw¾Öy¿×†Ðé|Á×~ÂØ€ÃÙ‚ÄÙ†ÅÙt¨ºŠÇ܉ÇÛÉÝ‘ËÞ”Ìß“ÌÞ˜Îà™Ïà™ÍßžÑâ¨Öå«×æª×å®Ù献¹°Úç´Ûè¶Üé¹Þêk€‡ºÞê¾âî½àëš´½ÄãíÇäîÊæïÌçðÎèðÐéñÖìóÕëò·ÉÏÛîôÜîôåôùâñöËÔ×î÷úmpqæìî’º¹¶ÁâìÒêñßðõåó÷ëöùšÀ™¿–½éõøöûüúýýijjýþþÙÚÚ¾¿¿ÿÿÿòòò×××ÕÕÕÐÐÐÏÏÏÊÊÊÅÅÅ»»»···µµµ²²²±±±­­­©©©§§§¥¥¥   ™™™–––•••‘‘‘ŠŠŠ†††~~~}}}yyyrrrnnnjjjiii,ÈiH° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱcE0 CŠI²¤É“(Sª\ɲ¥Ë—0cÊœI³¦Í›8sêÜ9ŠÏŸ@ƒ J´¨Ñ£H“*]Ê´©Ó§P£JJµªÕ«X³jÝʵ«×¯`ÊK¶¬Ù³hÓª]˶­Û·f;xerces-c-3.1.1/doc/html/resources/script.js0000644000175000017500000000076111363617747017653 0ustar borisborisrolloverImagesOn=new Array(); rolloverImagesOff=new Array(); function rolloverOn(name) { if(rolloverImagesOn[name]){ document.images[name].src=rolloverImagesOn[name].src; } } function rolloverOff(name) { if(rolloverImagesOff[name]){ document.images[name].src=rolloverImagesOff[name].src; } } function rolloverLoad(name,on,off) { rolloverImagesOn[name]=new Image(); rolloverImagesOn[name].src=on; rolloverImagesOff[name]=new Image(); rolloverImagesOff[name].src=off; } xerces-c-3.1.1/doc/html/resources/void.gif0000644000175000017500000000006111363617746017431 0ustar borisborisGIF89a‘ÿÿÿÿÀÀÀ!ù,T;xerces-c-3.1.1/doc/html/domprint-3.html0000644000175000017500000004637511363617747016674 0ustar borisborisSample: DOMPrint
    http://xml.apache.org/http://www.apache.org/http://www.w3.org/

    Xerces-C++ 3.1.1
    Readme
    Installation
    Build Instructions

    Programming
    Samples
    FAQs

    API Reference
    DOM C++ Binding
    Migration Guide

    DOMPrint
     

    DOMPrint parses an XML file, constructs the DOM tree, and invokes DOMLSSerializer::write() to serialize the resultant DOM tree back to XML stream.

    Running DOMPrint
     

    The DOMPrint sample parses an XML file, using either a validating or non-validating DOM parser configuration, builds a DOM tree, and then invokes DOMLSSerializer::write() to serialize the resultant DOM tree. To run DOMPrint, enter the following:

    DOMPrint <XML file>

    The following parameters may be set from the command line

    Usage:
     DOMPrint [options] <XML file>
    
    This program invokes the DOM parser, and builds the DOM tree
    It then asks the DOMLSSerializer to serialize the DOM tree.
    
    Options:
        -e          create entity reference nodes. Default is no expansion.
        -v=xxx      Validation scheme [always | never | auto*].
        -n          Enable namespace processing. Default is off.
        -s          Enable schema processing. Default is off.
        -f          Enable full schema constraint checking. Defaults is off.
        -wenc=XXX   Use a particular encoding for output. Default is
                    the same encoding as the input XML file. UTF-8 if
                    input XML file has not XML declaration.
        -wfile=xxx  Write to a file instead of stdout.
        -wscs=xxx   Enable/Disable split-cdata-sections.      Default on.
        -wddc=xxx   Enable/Disable discard-default-content.   Default on.
        -wflt=xxx   Enable/Disable filtering.                 Default off.
        -wfpp=xxx   Enable/Disable format-pretty-print.       Default off.
        -wbom=xxx   Enable/Disable write Byte-Order-Mark      Default off.
        -?          Show this help
      * = Default if not provided explicitly.
    
    The parser has intrinsic support for the following encodings:\n"
        UTF-8, US-ASCII, ISO8859-1, UTF-16[BL]E, UCS-4[BL]E,\n"
        WINDOWS-1252, IBM1140, IBM037, IBM1047.\n"
    

    -v=always will force validation
    -v=never will not use any validation
    -v=auto will validate if a DOCTYPE declaration or a schema declaration is present in the XML document

    Here is a sample output from DOMPrint

    cd xerces-c-3.1.1/samples/data
    DOMPrint -v=always personal.xml
    
    <?xml version="1.0" encoding="iso-8859-1"?>
    
    <!DOCTYPE personnel SYSTEM "personal.dtd">
    <!-- @version: -->
    <personnel>
    
    <person id="Big.Boss">
      <name><family>Boss</family> <given>Big</given></name>
      <email>chief@foo.com</email>
      <link subordinates="one.worker two.worker three.worker
                             four.worker five.worker"></link>
    </person>
    
    <person id="one.worker">
      <name><family>Worker</family> <given>One</given></name>
      <email>one@foo.com</email>
      <link manager="Big.Boss"></link>
    </person>
    
    <person id="two.worker">
      <name><family>Worker</family> <given>Two</given></name>
      <email>two@foo.com</email>
      <link manager="Big.Boss"></link>
    </person>
    
    <person id="three.worker">
      <name><family>Worker</family> <given>Three</given></name>
      <email>three@foo.com</email>
      <link manager="Big.Boss"></link>
    </person>
    
    <person id="four.worker">
      <name><family>Worker</family> <given>Four</given></name>
      <email>four@foo.com</email>
      <link manager="Big.Boss"></link>
    </person>
    
    <person id="five.worker">
      <name><family>Worker</family> <given>Five</given></name>
      <email>five@foo.com</email>
      <link manager="Big.Boss"></link>
    </person>
    
    </personnel>

    Note that DOMPrint does not reproduce the original XML file. DOMPrint and SAXPrint produce different results because of the way the two APIs store data and capture events.

    Application needs to provide its own implementation of DOMErrorHandler (in this sample, the DOMPrintErrorHandler), if it would like to receive notification from the serializer in the case any error occurs during the serialization.

    Application needs to provide its own implementation of DOMLSSerializerFilter (in this sample, the DOMPrintFilter), if it would like to filter out certain part of the DOM representation, but must be aware that thus may render the resultant XML stream invalid.

    Application may choose any combination of characters as the end of line sequence to be used in the resultant XML stream, but must be aware that this may render the resultant XML stream ill formed.

    Application may choose a particular encoding name in which the output XML stream should be, but must be aware that if unrepresentable in the encoding specified characters appear in the markup, it may force the serializer to terminate serialization prematurely, and thus no complete serialization would be done.

    Application shall query the serializer first, before set any feature/mode(true, false), or be ready to catch exception if this feature/mode is not supported by the serializer.

    Application needs to release the filter, error handler and format target objects created for the serialization.




    Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.
    xerces-c-3.1.1/doc/html/samples-3.html0000644000175000017500000003640311363617746016472 0ustar borisborisXerces-C++ Samples
    http://xml.apache.org/http://www.apache.org/http://www.w3.org/

    Xerces-C++ 3.1.1
    Readme
    Installation
    Build Instructions

    Programming
    Samples
    FAQs

    API Reference
    DOM C++ Binding
    Migration Guide

    Introduction
     

    Xerces-C++ comes with sample applications that demonstrate salient features of the parser. They are simple applications written on top of the SAX and DOM APIs provided by the parser. Sample XML data files are provided in the samples/data directory.


    Running the Samples
     

    The sample applications are dependent on the Xerces-C++ shared library (and could also depend on the ICU library if you built Xerces-C++ with ICU). Therefore, on Windows platforms you must make sure that your PATH environment variable is set properly to pick up these shared libraries at runtime.

    On UNIX platforms you must ensure that LD_LIBRARY_PATH environment variable is set properly to pick up the shared libraries at runtime. (UNIX gurus will understand here that LD_LIBRARY_PATH actually translates to LD_LIBRARY_PATH on Solaris and Linux, SHLIB_PATH on HP-UX, DYLD_LIBRARY_PATH on Mac OS X, and LIBPATH on AIX).

    On both Windows and UNIX platforms, if the parser is built with the ICU message loader or message catalog loader, then you may need to set another environment variable, XERCESC_NLS_HOME, to point to the xerces-c-3.1.1/msg directory, which is where the message files reside.

    Once you have set up the environment variables, you can run the samples by opening a command window (or your shell prompt for UNIX environments).

    Xerces-C++ Samples
     
    • SAXCount
      SAXCount counts the elements, attributes, spaces and characters in an XML file.
    • SAXPrint
      SAXPrint parses an XML file and prints it out.
    • SAX2Count
      SAX2Count counts the elements, attributes, spaces and characters in an XML file.
    • SAX2Print
      SAX2Print parses an XML file and prints it out.
    • DOMCount
      DOMCount counts the elements in a XML file.
    • DOMPrint
      DOMPrint parses an XML file and prints it out.
    • CreateDOMDocument
      CreateDOMDocument creates a DOM tree in memory from scratch.
    • MemParse
      MemParse parses XML in a memory buffer, printing the number of elements and attributes.
    • Redirect
      Redirect redirects the input stream for external entities.
    • PParse
      PParse demonstrates progressive parsing.
    • StdInParse
      StdInParse demonstrates streaming XML data from standard input.
    • EnumVal
      EnumVal shows how to enumerate the markup declarations in a DTD Grammar.
    • SEnumVal
      SEnumVal shows how to enumerate the markup declarations in a Schema Grammar.
    • PSVIWriter
      PSVIWriter exposes the underlying PSVI of the parsed XML file.
    • SCMPrint
      SCMPrint parses an XSD file and prints information about the Schema Component Model.
    • XInclude
      XInclude parses an XML file and writes a new XML file with the xi:include elements expanded.



    Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.
    xerces-c-3.1.1/doc/html/stdinparse-3.html0000644000175000017500000004203011363617747017174 0ustar borisborisSample: StdInParse
    http://xml.apache.org/http://www.apache.org/http://www.w3.org/

    Xerces-C++ 3.1.1
    Readme
    Installation
    Build Instructions

    Programming
    Samples
    FAQs

    API Reference
    DOM C++ Binding
    Migration Guide

    StdInParse
     

    StdInParse demonstrates streaming XML data from standard input.

    Running StdInParse
     

    The StdInParse sample parses an XML file from standard input and prints out the number of elements in the file. To run StdInParse, enter the following:

    StdInParse < <XML file>

    The following parameters may be set from the command line

    Usage:
        StdInParse [options] < <XML file>
    
    This program demonstrates streaming XML data from standard
    input.  It then uses the SAX Parser, and prints the
    number of elements, attributes, spaces and characters found
    in the input, using SAX API.
    
    Options:
        -v=xxx      Validation scheme [always | never | auto*].
        -n          Enable namespace processing. Defaults to off.
        -s          Enable schema processing. Defaults to off.
        -f          Enable full schema constraint checking. Defaults to off.
        -?          Show this help.
    
      * = Default if not provided explicitly.
    

    -v=always will force validation
    -v=never will not use any validation
    -v=auto will validate if a DOCTYPE declaration or a schema declaration is present in the XML document

    Make sure that you run StdInParse in the samples/data directory.

    Here is a sample output from StdInParse:

    cd xerces-c-3.1.1/samples/data
    StdInParse -v=always < personal.xml
    stdin: 10 ms (37 elems, 12 attrs, 0 spaces, 268 chars)

    Running StdInParse with the validating parser gives a different result because ignorable white-space is counted separately from regular characters.

    StdInParse -v=never < personal.xml
    stdin: 10 ms (37 elems, 12 attrs, 0 spaces, 268 chars)

    Note that the sum of spaces and characters in both versions is the same.

    NoteThe time reported by the program may be different depending on your processor speed.



    Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.
    xerces-c-3.1.1/doc/html/createdoc-3.html0000644000175000017500000003171011363617747016754 0ustar borisborisSample: CreateDOMDocument
    http://xml.apache.org/http://www.apache.org/http://www.w3.org/

    Xerces-C++ 3.1.1
    Readme
    Installation
    Build Instructions

    Programming
    Samples
    FAQs

    API Reference
    DOM C++ Binding
    Migration Guide

    CreateDOMDocument
     

    The CreateDOMDocument example illustrates how you can create a DOM tree in memory from scratch. It then reports the number of elements in the tree that was just created.

    Running CreateDOMDocument
     

    The CreateDOMDocument sample illustrates how you can create a DOM tree in memory from scratch. To run CreateDOMDocument, enter the following

    CreateDOMDocument

    Here is a sample output from CreateDOMDocument

    CreateDOMDocument
    The tree just created contains: 4 elements.



    Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.
    xerces-c-3.1.1/doc/html/migrate-3.html0000644000175000017500000002405211363617747016454 0ustar borisborisMigration
    http://xml.apache.org/http://www.apache.org/http://www.w3.org/

    Xerces-C++ 3.1.1
    Readme
    Installation
    Build Instructions

    Programming
    Samples
    FAQs

    API Reference
    DOM C++ Binding
    Migration Guide

    Migration Archive
     

    For migration information on earlier versions of Xerces-C++ please refer to Migration Archive.


    Migrating from Xerces-C++ 3.1.0 to Xerces-C++ 3.1.1
     

    Xerces-C++ 3.1.1 is a bugfix-only release and is binary-compatible with Xerces-C++ 3.1.0.



    Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.
    xerces-c-3.1.1/doc/html/migrate-archive-3.html0000644000175000017500000071573411363617747020111 0ustar borisborisMigration Archive
    http://xml.apache.org/http://www.apache.org/http://www.w3.org/

    Xerces-C++ 3.1.1
    Readme
    Installation
    Build Instructions

    Programming
    Samples
    FAQs

    API Reference
    DOM C++ Binding
    Migration Guide

    Migrating to earlier Releases
     

    Migrating from Xerces-C++ 3.0.1 to Xerces-C++ 3.1.0
     

    The following section is a discussion of the technical differences between Xerces-C++ 3.0.1 and Xerces-C++ 3.1.0.

    Topics discussed are:

    New features in Xerces-C++ 3.1.0
     
    • Working multi-import support. The support for handling multiple import declarations with the same target namespaces has been improved and thoroughly tested. Furthermore, the same logic was extended to loadGrammar and the schemaLocation attributes so that you can load several schemas with the same namespace and/or "add" more declarations with the schemaLocation attributes. To enable this feature, set the XMLUni::fgXercesHandleMultipleImports feature/parameter to true. Starting with this release all the tests and examples have multi-import support enabled by default.
    • New property, XMLUni::fgXercesLowWaterMark, allows to configure the parser buffer low water mark. In particular, setting this value to 0 disables data caching in the parser which can be useful if you want the SAX events to be dispatched as soon as the data is available.
    • DOMLSParser::parseWithContext implementation. In particular, this functionality allows one to parse a document fragment with missing namespace declarations as long as the context document provides them.
    • Improved performance and reduced memory footprint when validating with large maxOccurs values. If available, the SSE2 instructions are used to further speedup this case.
    • Improved scalability of the XML Schema identity checking (key, keyref, and unique).
    • Multiple XML Schema conformance fixes.
    • More robust external library detection (libcurl and ICU). In particular, the build system no longer tries to inject any additional paths such as /usr or /usr/local.
    • Compilation of the ICU message loader resources no longer depends on the ICU implementation details.

    Public API Changes
     

    Xerces-C++ 3.1.0 is a minor release and does not include any public API changes that would preclude applications using the previous version of Xerces-C++ from building successfully with this version.



    Migrating from Xerces-C++ 3.0.0 to Xerces-C++ 3.0.1
     

    Xerces-C++ 3.0.1 is a bugfix-only release and is binary-compatible with Xerces-C++ 3.0.0.


    Migrating from Xerces-C++ 2.8.0 to Xerces-C++ 3.0.0
     

    The following section is a discussion of the technical differences between Xerces-C++ 2.8.0 and Xerces-C++ 3.0.0.

    Topics discussed are:

    New features in Xerces-C++ 3.0.0
     
    • Autotools-based build system for the UNIX/Linux/Mac OS X platforms
    • Project files for VC++ 9
    • Support for the ICU transcoder in VC++ 7.1, 8, and 9 project files
    • libcurl-based net accessor
    • Support for XInclude in DOM
    • Support for both XPath 1 and XPath 2 models in the DOM XPath interface
    • Support for the XML Schema subset of XPath 1 in DOM
    • Conformance to the final DOM Level 3 interface specification
    • Ability to provide custom DOM memory manager as well as tune the global DOM heap parameters
    • All public and widely used interfaces as well as a large portion of the implementation were converted to be 64-bit safe.
    • Various XML Schema fixes including the fix for the large maxOccurs and minOccurs bug as well as for the changed ##other interpretation
    • Reviewed and cleaned up diagnostics messages
    • Optimizations for SAX/SAX2 and DOM parsing as well as XML Schema validation

    Public API Changes
     

    Xerces-C++ 3.0.0 is a major release and includes a number of application-breaking interface changes compared to Xerces-C++ 2 series. The following sub-sections provide an overview of the public API changes between Xerces-C++ 2 series and this release.

    New Public APIs
     
    • XMLGrammarPoolImpl implementation has been moved to framework/ and is now publicly accessible
    • DOM XPath interfaces now support XPath 2 model
    • A number of DOM interfaces (DOMLSInput, DOMLSOuput, DOMLSParser, DOMLSSerializer, DOMConfiguration, etc.) were added as part of the the final DOM Level 3 specification conformance work

    Modified Public APIs
     

    A large number of public APIs have been modified. Consult individual interface documentation for details. The following list gives an overview of major changes:

    • Several DOM interfaces have been adjusted to conform to the final DOM Level 3 specification
    • DOM XPath interfaces have been adjusted to support both XPath 1 and XPath 2
    • Many public interfaces that used int/long types to represent memory-related sizes, counts, indexes, etc., have been modified to use the 64-bit safe XMLSize_t type instead

    Deprecated/Removed Public APIs
     

    All APIs marked as deprecated in Xerces-C++ 2 series have been removed in this release. In particular deprecated DOM (depdom) as well as COM support have been removed.

    Furthermore, a number of DOM interfaces (DOMBuilder, DOMWriter, DOMInputSource, etc.) were replaced as part of the the final DOM Level 3 specification conformance work.




    Migrating from Xerces-C++ 2.7.0 to Xerces-C++ 2.8.0
     

    The following section is a discussion of the technical differences between Xerces-C++ 2.7.0 code base and the Xerces-C++ 2.8.0.

    Topics discussed are:

    New features in Xerces-C++ 2.8.0
     
    • Exponential growth of memory block (from 16KB to 128KB) that are allocated by the DOM heap.
    • The NODE_CLONED notification is now sent to each node's user data handler when cloning the entire DOMDocument.
    • On Windows extract the registry code page from MIME\Database\Charset\<encoding>\@InternetEncoding instead of MIME\Database\Charset\<encoding>\@Codepage.
    • Allow whitespace-only nodes to be added as children of a DOMDocument.
    • When a node is cloned or imported the type information (PSVI) is also copied.
    • When using SAX2, including XMLReaderFactory to use createXMLReader doesn't include xercesc/parsers/SAX2XMLReaderImpl.hpp anymore. If you need to cast the SAX2XMLReader to SAX2XMLReaderImpl, you need to include this header yourself.


    Migrating from Xerces-C++ 2.6.0 to Xerces-C++ 2.7.0
     

    The following section is a discussion of the technical differences between Xerces-C++ 2.6.0 code base and the Xerces-C++ 2.7.0.

    Topics discussed are:

    New features in Xerces-C++ 2.7.0
     
    • Feature to not generate XML Schema annotations. That is, not to add them to the grammar. If you don't need annotations you may want to turn on this feature to avoid memory bloat for XML Schemas that use annotations heavily.
    • Option to skip regenerating the XML Schema annotations when deserializing a grammar. If you don't need annotations you may want to turn on this option to avoid memory bloat for XML Schemas that use annotations heavily.
    • Feature to not perform default entity resolution. When the entityResolver returns NULL, the parser doesn't try to resolve the entity externally.
    • Feature to do schema-only validation even if there is a DTD.

    Public API Changes
     

    The following lists the public API changes between the Xerces-C++ 2.6.0; and the Xerces-C++ 2.7.0 releases of the parser.

    New Public API
     
    • XMLString: subString, compareIStringASCII, lowercaseASCII, uppercaseASCII
    • RefHash2KeysTableOf: rehashing support
    • XMemory: placement new and delete
    • SAX2XMLFilter

    Modified Public API
     

    Deprecated/Removed Public API
     



    Migrating from Xerces-C++ 2.5.0 to Xerces-C++ 2.6.0
     

    The following section is a discussion of the technical differences between Xerces-C++ 2.5.0 code base and the Xerces-C++ 2.6.0.

    Topics discussed are:

    • New features in Xerces-C++ 2.6.0
    • Public API Changes
      • New Public API
      • Modified Public API
      • Deprecated/Removed Public API
      • Please note the following source code incompatibility: Rename VALUE_CONSTRAINT enumeration values in XSConstants.hpp due to conflict with system header. New values are VALUE_CONSTRAINT_NONE, VALUE_CONSTRAINT_DEFAULT and VALUE_CONSTRAINT_FIXED. Old values are VC_NONE, VC_DEFAULT and VC_FIXED.
      • Also note that if you have implemented your own XMLGrammarPool implementation, that the original getXSModel has been marked deprecated and a new method, of the same name, that takes a bool parameter has been added. This new getXSModel needs to always return an XSModel.
    New features in Xerces-C++ 2.6.0
     
    • Reduce footprint of DLL by building the deprecated DOM as a separate library
    • Improve packaging scripts
    • Enable ID's to work on all kinds of schema components
    • Add messages to DOMExceptions along with the error code
    • Improve annotation error-reporting capabilities
    • Make grammar caching work with DTD internal subsets
    • Bring parser up to the XML 1.0 3rd Edition
    • Update to the XML 1.1 recommendation
    • Add new method to DOMDocument so that DOM level-2 style DOMDocumentTypes (which have a DOMDocument to own them) can be created
    • Feature for disabling identity constraints
    • Update schema errata
    • Provide means to get actual values out of PSVI/schema component model
    • Synthesize annotation components for non-schema attributes
    • Expose partial PSVIElement information at the start element call
    • Externalize validation, actual/canonical value production for arbitrary strings
    • Laxly validate schema annotations
    • Upgrade to ICU 3.0
    • Handle elements with a large number of attributes more efficiently

    Public API Changes
     

    The following lists the public API changes between the Xerces-C++ 2.5.0; and the Xerces-C++ 2.6.0 releases of the parser.

    New Public API
     
    • XSValue
    • IdentityConstraintHandler
    • XMLBufferFullHandler
    • XMLString: removeChar, isValidNOTATION
    • XMLUri: normalizeUri
    • PSVIHandler: handlePartialElementPSVI
    • RefHash family of classes: getHashModulus
    • XSAnnotation: setline/col and systemid
    • XMLReader: handeEOL
    • XMLChar: isValidNmToken
    • XMLBigDecimal: parseDecimal, getIntVal
    • HexBin: getCanonicalRepresentation, decode
    • Base64: getCanonicalRepresentation, decode
    • XMLBigInteger: compareValues
    • XMLAbstractDoubleFloat: isDataConverted, getValue, isDataOverFlowed
    • PSVIItem: getActualValue
    • XSSimpleTypeDefinition: getDatatypeValidator
    • RefHash2KeysTableOf: transferElement
    • XMLGrammarPool: getXSModel

    Modified Public API
     
    • XSerializeEngine constructor
    • MACUnicodeConverters

    Deprecated/Removed Public API
     
    • XSerializeEngine constructor
    • DTDAttDef: getDOMTypeInfoName, getDOMTypeInfoUri
    • DTDElementDecl: getDOMTypeInfoName, getDOMTypeInfoUri
    • SchemaAttDef: setAnyDatatypeValidator
    • UnionDatatypeValidator: getMemberTypeName, getMemberTypeUri, getMemberTypeAnonymous, getMemberTypeValidator
    • XMLAttr: getValidatingTypeURI, getValidatingTypeName, setDatatypeValidator, setSchemaValidated
    • ComplexTypeInfo: setContentModel
    • XMLGrammarPool: getXSModel
    • SAXParser, mark this class deprecated



    Migrating from Xerces-C++ 2.4.0 to Xerces-C++ 2.5.0
     

    The following section is a discussion of the technical differences between Xerces-C++ 2.4.0 code base and the Xerces-C++ 2.5.0.

    Topics discussed are:

    New features in Xerces-C++ 2.5.0
     
    • Fix duplicate attribute detection when namespaces are disabled
    • Stricter use of static memory manager for static data only
    • PSVI bug fix and enhencement
    • ThreadTest with grammar caching
    • Re-pluggable Panic Handler
    • Enhenced mutex creation to impove thread safety
    • Intrinsic transcoding support for 390.
    • Canonical Representation Support
    • New sample SCMPrint
    • New sample PSVIWriter
    • New test XSerializerTest

    Public API Changes
     

    The following lists the public API changes between the Xerces-C++ 2.4.0; and the Xerces-C++ 2.5.0 releases of the parser.

    New Public API
     

    Modified Public API
     

    Deprecated/Removed Public API
     



    Migrating from Xerces-C++ 2.3.0 to Xerces-C++ 2.4.0
     

    The following section is a discussion of the technical differences between Xerces-C++ 2.3.0 code base and the Xerces-C++ 2.4.0.

    Topics discussed are:

    New features in Xerces-C++ 2.4.0
     
    • PSVI
    • Performance enhancement
    • Stateless Grammar
    • Grammar Serialization/Deserialiation

    Public API Changes
     

    The following lists the public API changes between the Xerces-C++ 2.3.0; and the Xerces-C++ 2.4.0 releases of the parser.

    New Public API
     
    • PSVI related
    • Grammar serialization/deserialization related

    Modified Public API
     

    Deprecated/Removed Public API
     
    • XMLAttDef: getProvided, getDOMTypeInfoUri, getDOMTypeInfoName, setProvided
    • XMLAttDefList: hasMoreElements, nextElement, Reset
    • DTDAttDefList: hasMoreElements, nextElement, Reset
    • SchemaAttDefList: hasMoreElements, nextElement, Reset
    • XMLElementDecl: LookupOpts
    • XMLNumber family: toString
    • ENTITYDatatypeValidator: setEntityDeclPool
    • IDDatatypeValidator: setIDRefList
    • IDREFDatatypeValidator: setIDRefList
    • GeneralAttributeCheck: setIDRefList
    • SchemaGrammar: getIDRefList
    • SchemaElementDecl: all non thread safe methods
    • SchemaAttDef: getters
    • DTDGrammar: getRootElemId



    Migrating from Xerces-C++ 2.2.0 to Xerces-C++ 2.3.0
     

    The following section is a discussion of the technical differences between Xerces-C++ 2.2.0 code base and the Xerces-C++ 2.3.0.

    Topics discussed are:

    New features in Xerces-C++ 2.3.0
     
    • Experimental Implementation of Namespaces in XML 1.1
    • Experimental Implementation of XML 1.1: in DOMWriter
    • More Schema 1.0 Errata Implementation
    • More DOM L3 Core Support
      • DOMConfiguration
      • Document Normalization
    • Plugable Memory Manager
    • Plugable Security Manager
    • Plugable Panic Handler
    • Logical Path Resolution

    Public API Changes
     

    The following lists the public API changes between the Xerces-C++ 2.2.0; and the Xerces-C++ 2.3.0 releases of the parser.

    New Public API
     
    • To support additional DOM L3 functions, the following are added:
    • DOMDocument: getDOMConfiguration
    • DOMConfiguration class for document normalization.

    Modified Public API
     

    Deprecated/Removed Public API
     
    • DOMDocument canSetNormalizationFeature, setNormalizationFeature, getNormalizationFeature, getErrorHandler, setErrorHandler removed



    Migrating from Xerces-C++ 2.1.0 to Xerces-C++ 2.2.0
     

    The following section is a discussion of the technical differences between Xerces-C++ 2.1.0 code base and the Xerces-C++ 2.2.0.

    Topics discussed are:

    New features in Xerces-C++ 2.2.0
     
    • C++ Namespace Support
    • Schema 1.0 Errata Implementation
    • Experimental Implementation of XML 1.1
    • More DOM L3 Core Support:
      • DOMNode: baseURI
      • DOMAttr: isId, getTypeInfo
      • DOMElement: setIdAttribute, setIdAttributeNS, setIdAttributeNode, getTypeInfo
    • DOM Message: make use of the non-standard extension DOMImplementation::loadDOMExceptionMsg to load the default error text message for the correspond Exception Code.
    • New feature XMLPlatformUtils::Initialize(const char* const locale) to set the locale for message loader. See Specify locale for Message Loader for details
    • Support Build with ICU Message Loader, or Message Catalog Message Loader
    • RPM for Linux
    • 390: Uniconv390 support
    • 390: support record-oriented MVS datasets with the DOM Level 3 serialization APIs
    • Support for Linux/390
    • Performance: Break Scanner for different functionalities and many other performance improvement
    • New feature, "http://apache.org/xml/features/dom/byte-order-mark", allows user to enable DOMWriter to write Byte-Order-Mark in the output XML stream, See Xercesc Feature: Byte Order Mark for details

    Using C++ Namespace
     

    Xerces-C++ 2.2.0 now supports C++ Namespace. All Xerces-C++ classes, data and variables are defined in the xercesc namespace if C++ Namespace support is ENABLED.

    All the binary distributions of Xerces-C++ 2.2.0 are now built with C++ Namespace enabled. Therefore users' applications that links with the distributed binary packages must namespace qualify all the Xerces-C++ classes, data and variables.

    See the Programming Guide Using C++ Namespace for details.


    Public API Changes
     

    The following lists the public API changes between the Xerces-C++ 2.1.0; and the Xerces-C++ 2.2.0 releases of the parser.

    New Public API
     
    • To support additional DOM L3 functions, the following are added:
      • DOMAttr: isId, getTypeInfo
      • DOMElement: setIdAttribute, setIdAttributeNS, setIdAttributeNode, getTypeInfo
      • Added DOMTypeInfo class for getTypeInfo class in DOMElement and DOMAttr
      • Added getDOMTypeInfoUri, getDOMTypeInfoName to XMLAttDef and XMLElementDecl for use in building DOMTypeInfo
    • Added a non-standard extension DOMImplementation::loadDOMExceptionMsg to load the default error message for the corresponding DOMException code.
    • XMLAttr: Added a constructor and a set method to allow creating/setting of XMLAttr using a rawname.
    • Added XMLUri::getUriText to return the URI as a string specification.
    • Add XMLString::fixURI to transform an absolute path filename to standard URI form.
    • Added XMLString::equals for faster string comparison.
    • To allow users to tell the parser to force standard uri conformance, the following are added:
      • XercesDOMParser/DOMParser/SAXParser: get/setStandardUriConformant
      • and DOMBuilder/SAX2XMLReader will recognize the feature http://apache.org/xml/features/standard-uri-conformant
    • Add XMLURL::hasInvalidChar() to indicate if the URL has invalid char as per RFC standard
    • To allow users to enable/disable src offset calculation, the following are added:
      • XercesDOMParser/DOMParser/SAXParser: get/setCalculateSrcOfs
      • and DOMBuilder/SAX2XMLReader will recognize the feature http://apache.org/xml/features/calculate-src-ofst
    • To allow users to select the scanner when scanning XML documents, the following are added:
      • XercesDOMParser/DOMParser/SAXParser: useScanner
      • and DOMBuilder/SAX2XMLReader will recognize the property http://apache.org/xml/properties/scannerName
    • Added getSrcOffset to XercesDOMParser/DOMParser/SAXParser/DOMBuilder/SAX2XMLReader to allow users to get the current src offset within the input source.

    Modified Public API
     
    • The following DOM functions are being added a const modifier.
      • DOMImplementation::hasFeature
      • DOMNode: isSameNode, isEqualNode, compareTreePosition
    • XMLPlatformUtils::Initialize() takes a parameter specifying locale for message loader, with default value "en_US".
    • To fix [Bug 13641], the QName copy constructor is corrected to take a reference as parameter, i.e. QName(const QName& qname).
    • To fix [Bug 12232], the QName operator== has been added a const modified.
    • Move XMLUri copy constructor and operator = as public.
    • Move XMLUri::isURIString as public.
    • For validation purpose, added two more default parameters to XMLValidator::validateAttrValue.
    • To fix [Bug 15802], the getURIText of DOMParser/XercesDOMParser/SAXParser/SAX2XMLReader are being added a const modifier.

    Deprecated/Removed Public API
     
    • No Deprecated Public API in this release.



    Migrating from Xerces-C++ 2.0.0 to Xerces-C++ 2.1.0
     

    The following section is a discussion of the technical differences between Xerces-C++ 2.0.0 code base and the Xerces-C++ 2.1.0.

    Topics discussed are:

    New features in Xerces-C++ 2.1.0
     
    • 64 bit binaries distribution on Windows IA64 and Linux IA64
    • Support for Cygwin environment
    • DOM Level 3 DOMNode: compareTreePosition, lookupNamespaceURI, lookupNamespacePrefix and isDefaultNamespace
    • plus many more bug fixes

    Public API Changes
     

    The following lists the public API changes between the Xerces-C++ 2.0.0; and the Xerces-C++ 2.1.0 releases of the parser.

    New Public API
     
    • To fix bug 7087, XMLEnumerator is added a virtual destructor.
    • To fix bug 11448, XMLNotationDecl::get/setBaseURI, and XMLEntityDecl::get/setBaseURI are added.

    Modified Public API
     
    • DOMNodeList: item, and getLength have been added a const modifier.
    • DOMNode: lookupNamespacePrefix, isDefaultNamespace, and lookupNamespaceURI have been added a const modifier.

    Deprecated/Removed Public API
     
    • No Deprecated Public API in this release.



    Migrating from Xerces-C++ 1.7.0 to Xerces-C++ 2.0.0
     

    The following section is a discussion of the technical differences between Xerces-C++ 1.7.0 code base and the Xerces-C++ 2.0.0.

    Topics discussed are:

    New features in Xerces-C++ 2.0.0
     
    • 64 bit binaries distribution
    • Follow Unix Shared Library Naming Convention
    • Apache Recommended DOM C++ Binding
    • Experimental DOM Level 3 subset support, including DOMWriter and DOMBuilder
    • Grammar preparsing and Grammar caching
    • Optionally ignore loading of external DTD
    • Project files for Microsoft Visual C++ .Net
    • Codewarrior 8 support
    • Option to enable/disable strict IANA encoding name checking
    • plus many more bug fixes and performance enhancement

    Unix Library Name Change
     

    The Xerces-C++ UNIX Library now follows the Unix Shared Library Naming Convention (libname.so.soname).


    DOM Reorganization
     

    1. The old Java-like DOM is now deprecated, and all the associated files, including the headers and DOMParser files are moved to src/xercesc/dom/deprecated. Users of the old Java-like DOM are required to change all their #include lines to pick up the headers. For example

    //old code
    #include <xercesc/dom/DOM.hpp>
    #include <xercesc/dom/DOM_Document.hpp>
    #include <xercesc/parsers/DOMParser.hpp>
    
    void test(char* xmlFile) {
        DOMParser parser;
        parser.parse(xmlFile);
        DOM_Document doc = parser.getDocument();
        :
        return;
    }
    

    should now change to

    //new code
    #include <xercesc/dom/deprecated/DOM.hpp>          //<==== change this include line
    #include <xercesc/dom/deprecated/DOM_Document.hpp> //<==== change this include line
    #include <xercesc/dom/deprecated/DOMParser.hpp>    //<==== change this include line
    
    // the rest is the same
    void test(char* xmlFile) {
        DOMParser parser;
        parser.parse(xmlFile);
        DOM_Document doc = parser.getDocument();
        :
        return;
    }
    

    2. The Experimental IDOM is now renamed, and becomes the Apache Recommended DOM C++ Binding. The following changes are made:

    • class names are renamed from IDOM_XXXX to DOMXXXX, e.g. IDOM_Document to DOMDocument
    • and thus header files are renamed from IDOM_XXXX.hpp to DOMXXXX.hpp and are moved to src/xercesc/dom
    • the IDOMParser is renamed to XercesDOMParser. And thus the header file is renamed as well
    • the rest is the same, see Apache Recommended DOM C++ binding and DOM Programming Guide for more programming information

    Users of IDOM are required to change all their #include lines and do a global rename of IDOMParser to XercesDOMParesr, and IDOM_XXXX to DOMXXXX. For example

    //old code
    #include <xercesc/idom/IDOM.hpp>
    #include <xercesc/idom/IDOM_Document.hpp>
    #include <xercesc/parsers/IDOMParser.hpp>
    
    void test(char* xmlFile) {
        IDOMParser parser;
        parser.parse(xmlFile);
        IDOM_Document* doc = parser.getDocument();
        :
        return;
    }
    

    should now change to

    //new code
    #include <xercesc/dom/DOM.hpp>                  //<==== change this include line
    #include <xercesc/dom/DOMDocument.hpp>          //<==== change this include line
    #include <xercesc/parsers/XercesDOMParser.hpp>  //<==== change this include line
    
    void test(char* xmlFile) {
        XercesDOMParser parser;                           //<==== rename the IDOMParser
        parser.parse(xmlFile);
        DOMDocument* doc = parser.getDocument();          //<==== rename the IDOM_XXXX
        :
        return;
    }
    

    Reuse Grammar becomes Grammar Caching
     

    The Xerces-C++ 2.0.0 extends the "Reuse Grammar" support by replacing it with a new feature called "Grammar Caching" which provides more flexibility in reusing grammars. Users who used to do the following:

    
          XercesDOMParser parser;
    
          // this is the first parse, just usual code as you do normal parse
          // "firstXmlFile" has a grammar (schema or DTD) specified.
          parser.parse(firstXmlFile);
    
          // this is the second parse, by setting second parameter to true,
          // the parser will reuse the grammar in the last parse
          // (i.e. the one in  "firstXmlFile")
          // to validate the second "anotherXmlFile".  Any grammar that is
          // specified in anotherXmlFile is IGNORED.
          //
          // Note: The anotherXmlFile cannot have any DTD internal subset.
          parser.parse(anotherXmlFile, true);
    
    

    should now use the features cacheGrammarFromParse and useCachedGrammarFromParse:

          XercesDOMParser parser;
    
          // By setting cacheGrammarFromParse to true,
          // the parser will cache any grammars encountered in the
          // follow-on xml files, if not cached already
          parser.cacheGrammarFromParse(true);
    
          parser.parse(firstXmlFile);
    
          // By setting useCachedGrammarFromParse to true,
          // the parser will use all the previous cached grammars
          // to validate the follow-on xml files if the cached
          // grammar matches the one specified in anotherXmlFile.
          //
          // Note: The follow-on xml files cannot have any DTD internal subset.
          parser.useCachedGrammarFromParse(true);
    
          parser.parse(anotherXmlFile);
    
          // This will flush the cached grammar pool
          parser.resetCachedGrammarPool();
    

    Note there are a number of differences between "Reuse Grammar" and "Grammar Caching"

    1. "Reuse Grammar" ignores any grammar that is specified in anotherXmlFile and simply reuse whatever stored in previous parse; while "Grammar Caching" will use the cached grammar only if it matches the one specified in the anotherXmlFile. If not match, then the new grammar is parsed.
    2. "Reuse Grammar" can only reuse the grammar from previous parse; while "Grammar Caching" can selectively cache many grammars from different parses and collect them all in a pool indexed by targetNamespace (for Schema) or system id (for DTD).
    3. Plus "Grammar Caching" has much more functionalities other than above (like "Pre-parsing Grammar"). Please refer to Preparsing Grammar and Grammar Caching for more programming details.

    Public API Changes
     

    The following lists the public API changes between the Xerces-C++ 1.7.0; and the Xerces-C++ 2.0.0 releases of the parser.

    New Public API
     
    • To support DOM Level 3, the following are added (see the API documentation page for details).
      • DOMNode functions set/getUserData, isSameNode isEqualNode.
      • DOMDocument functions renameNode, get/setActualEncoding, get/setEncoding, get/setVersion, get/setStandalone, get/setDocumentURI.
      • DOMEntity functions get/setActualEncoding, get/setEncoding, get/setVersion.
      • classes AbstractDOMParser, DOMError, DOMErrorHandler, and DOMLocator.
      • classes DOMUserDataHandler, DOMImplementationRegistry and DOMImplementationSource.
      • classes DOMBuilder, DOMEntityResolver, DOMImplementationLS, DOMInputSource, Wrapper4DOMInputSource and Wrapper4InputSource.
      • classes DOMWriter, DOMWriterFilter, LocalFileFormatTarget, StdOutFormatTarget, and MemBufFormatTarget
    • To support DOMWriter, the following PlatformUtils functions are added
      • openFileToWrite, writeBufferToFile
    • To have Apache Recommended DOM C++ Binding, the following are added (see Apache Recommended DOM C++ binding).
      • function release() to fix Memory Management problem
      • classes DOMDocumentRange and DOMDocumentTraversal
      • XMLSize_t is used to represent unsigned integral type in DOM
      • IDOM_XXXX classes are renamed to DOMXXXX, and IDOMParser is renamed to XercesDOMParser as described in DOM Reorganization
      • XercesDOMParser::adoptDocument is added so that document can optionally live outside the parser.
    • To support optionally load external DTD, the following are added:
      • XercesDOMParser::set/getLoadExternalDTD
      • DOMParser::set/getLoadExternalDTD
      • SAXParser::set/getLoadExternalDTD
      • and SAX2XMLReader will recognize the feature http://apache.org/xml/features/nonvalidating/load-external-dtd
    • To support Preparsing Grammar and Grammar Caching, the following are added:
      • XercesDOMParser/DOMParser/SAXParser functions loadGrammar, resetCachedGrammarPool, cacheGrammarFromParse, isCachingGrammarFromParse, useCachedGrammarInParse, isUsingCachedGrammarInParse.
      • SAX2XMLReader functions loadGrammar, resetCachedGrammarPool, and will recognize the features http://apache.org/xml/features/validation/cache-grammarFromParse and http://apache.org/xml/features/validation/use-cachedGrammarInParse.
    • To support access to Grammar info, the following are added:
      • XercesDOMParser/DOMParser/SAXParser/SAX2XMLReader functions getRootGrammar, getGrammar, getURIText.
    • To support strict IANA encoding name checking, the following are added:
      • class EncodingValidator.
      • PlatformUtils functions strictIANAEncoding, isStrictIANAEncoding.
      • XMLTransService functions strictIANAEncoding, isStrictIANAEncoding.

    Modified Public API
     
    • SAXParser::getScanner() is moved from public to protected.
    • Grammar::getGrammarType has been added a const modifier.
    • Xerces features are renamed from XMLUni::fgSAX2XercesXXXX to XMLUni::fgXercesXXXX so that they can be shared with DOM parser.
    • With the new Grammar Caching introduced, the the last parameter "reuseGrammar" in the following API is dropped. Users should now use the "Grammar Caching" feature as described in Reuse Grammar becomes Grammar Caching.
      • (in Parser, SAXParser, DOMParser, and XercesDOMParser)
      • parse(const InputSource& source, const bool reuseGrammar = false);
      • parse(const XMLCh* const systemId, const bool reuseGrammar = false);
      • parse(const char* const systemId, const bool reuseGrammar = false);
      • (in SAXParser, DOMParser, and XercesDOMParser)
      • parseFirst(const InputSource& source, XMLPScanToken& toFill, const bool reuseGrammar = false);
      • parseFirst(const XMLCh* const systemId, XMLPScanToken& toFill, const bool reuseGrammar = false);
      • parseFirst(const char* const systemId, XMLPScanToken& toFill, const bool reuseGrammar = false);

    Deprecated/Removed Public API
     
    • The old Java-like DOM is now deprecated as described in DOM Reorganization
    • SAX2XMLReader::setValidationConstraint. For consistency, SAX2XMLReader users should set the feature "http://apache.org/xml/features/validation-error-as-fatal" instead.
    • SAX2XMLReader::setExitOnFirstFatalError. For consistency, SAX2XMLReader users should set the feature "http://apache.org/xml/features/continue-after-fatal-error" instead.
    • With the new Grammar Caching introduced, the following features will not be recognized by the SAX2XMLReader:
      • http://apache.org/xml/features/validation/reuse-grammar
      • http://apache.org/xml/features/validation/reuse-validator



    Migrating from Xerces-C++ 1.6.0 to 1.7.0
     

    The following section is a discussion of the technical differences between Xerces-C++ 1.6.0 code base and the Xerces-C++ 1.7.0 code base.

    New features in Xerces-C++ 1.7.0
     
    • Support SAX2-ext's DeclHandler.
    • Directory sane_include reorganization: add sub-directory 'xercesc' to src / include folder. See "Directory change in Xerces-C++ 1.7.0" below for detail.
    • More IDOM test cases - port IDOMMemTest, and merge ThreadTest and IThreadTest.
    • Support IconvFBSD in multi-threading environment.
    • Use IDOM in schema processing for faster performance.
    • Add Project files for BCB6.
    • Port to Caldera (SCO) OpenServer.
    • Support building with new MacOSURLAccessCF NetAccessor that doesn't require Carbon but can allow Xerces to live solely within CoreServices layer.

    Directory change in Xerces-C++ 1.7.0
     
    • A new directory, src/xercesc is created to be the new parent directory of all src's direct subdirectories.
    • And in the binary package, all the headers are distributed in include/xercesc directory.
    • Migration considerations:
      • Windows application,
        either change the include directories setting to "..\..\..\..\..\src\xercesc" (Projects->settings->C/C++->Preprocessor),
        or
        change the relevant #include instances in the source/header files, accordingly, eg
        #include <util/XMLString.hpp> be changed to
        #include <xercesc/util/XMLString.hpp>
      • Unix application,
        either change the include search path in the Makefile to " -I <installroot>/include/xercesc",
        or
        change the relevant #include instances in the source/header files as shown above.

    Public API Changes in Xerces-C++ 1.7.0
     

    The following lists the public API changes between the Xerces-C++ 1.7.0 and the Xerces-C++ 1.7.0 releases of the parser.

    New Public API
     
    • Added SAX2-ext's DeclHandler class. See the API documentation page for details.
    • To support SAX2-ext's DeclHandler, the following new methods are added in classes DefaultHandler and SAX2XMLReader:
      • void DefaultHandler::elementDecl(const XMLCh* const name, const XMLCh* const model)
      • void DefaultHandler::attributeDecl(const XMLCh* const eName, const XMLCh* const aName, const XMLCh* const type, const XMLCh* const mode, const XMLCh* const value)
      • void DefaultHandler::internalEntityDecl(const XMLCh* const name, const XMLCh* const value)
      • void DefaultHandler::externalEntityDecl(const XMLCh* const name, const XMLCh* const publicId, const XMLCh* const systemId)
      • DeclHandler* SAX2XMLReader::getDeclarationHandler() const
      • void SAX2XMLReader::setDeclarationHandler(DeclHandler* const handler)
    • To conform to DOM Level 2 specification, the following methods are added:
      • DOM_Node DOM_NodeIterator::getRoot()
      • DOM_Node DOM_TreeWalker::getRoot()
      • bool DOM_Node::hasAttributes() const
      • bool DOM_Element::hasAttribute(const DOMString &name) const
      • bool DOM_Element::hasAttributeNS(const DOMString &namespaceURI, const DOMString &localName) const
      • IDOM_Node* IDOM_NodeIterator::getRoot()
      • IDOM_Node* IDOM_TreeWalker::getRoot()
      • bool IDOM_Node::hasAttributes() const
      • bool IDOM_Element::hasAttribute(const XMLCh* name) const
      • bool IDOM_Element::hasAttributeNS(const XMLCh* namespaceURI, const XMLCh* localName) const
    • To fix [Bug 5570], a copy constructor is added to DOM_Range

    Modified Public API
     
    • To conform to the SAX2 specification, the namespace-prefixes feature in SAX2 is set to off as default.
    • To fix [Bug 6330], the Base64::encode and Base64::decode have been modified as follows
      • static XMLByte* Base64::encode(const XMLByte* const inputData, const unsigned int inputLength, unsigned int* outputLength);
      • static XMLByte* Base64::decode(const XMLByte* const inputData, unsigned int* outputLength);
      • static XMLCh* decode(const XMLCh* const inputData, unsigned int* outputLength);
    • To conform to DOM Level 2 specification, the DOM_Node::supports and IDOM_Node::supports are modified to
      • bool DOM_Node::isSupported(const DOMString &feature, const DOMString &version) const
      • bool IDOM_Node::isSupported(const XMLCh* feature, const XMLCh* version) const

    Deprecated Public API
     
    • No Deprecated Public API in this release.



    Migrating from Xerces-C++ 1.5.2 to 1.6.0
     

    The following section is a discussion of the technical differences between Xerces-C++ 1.5.2 code base and the Xerces-C++ 1.6.0 code base.

    New features in Xerces-C++ 1.6.0
     
    • Full Schema support is available in this release. See the Schema page for details.
    • New sample SEnumVal to show how to enumerate the markup decls in a Schema Grammar is added.

    Public API Changes in Xerces-C++ 1.6.0
     

    The following lists the public API changes between the Xerces-C++ 1.5.2 and the Xerces-C++ 1.6.0 releases of the parser.

    New Public API
     
    • It should not be a fatal error if a schema InputSource is not found. Add the following new methods:
      • const bool InputSource::getIssueFatalErrorIfNotFound() const
      • void InputSource::setIssueFatalErrorIfNotFound(const bool flag
    • Allow code to take advantage of the fact that the length of the prefix and local name are known when constructing the QName. Add the following new methods:
      • void QName::setNPrefix(const XMLCh*, const unsigned int)
      • void QName::setNLocalPart(const XMLCh*, const unsigned int)
    • To support schemaLocation and noNamespaceSchemaLocation to be specified outside the instance document, the following new methods are added:
      • XMLCh* DOMParser::getExternalSchemaLocation() const
      • XMLCh* DOMParser::getExternalNoNamespaceSchemaLocation() const
      • void DOMParser::setExternalSchemaLocation(const XMLCh* const schemaLocation)
      • void DOMParser::setExternalNoNamespaceSchemaLocation(const char* const noNamespaceSchemaLocation)
      • XMLCh* IDOMParser::getExternalSchemaLocation() const
      • XMLCh* IDOMParser::getExternalNoNamespaceSchemaLocation() const
      • void IDOMParser::setExternalSchemaLocation(const XMLCh* const schemaLocation)
      • void IDOMParser::setExternalNoNamespaceSchemaLocation(const char* const noNamespaceSchemaLocation)
      • XMLCh* SAXParser::getExternalSchemaLocation() const
      • XMLCh* SAXParser::getExternalNoNamespaceSchemaLocation() const
      • void SAXParser::setExternalSchemaLocation(const XMLCh* const schemaLocation)
      • void SAXParser::setExternalNoNamespaceSchemaLocation(const char* const noNamespaceSchemaLocation)
      • and the following properties are recognized by SAX2XMLReader:
        • http://apache.org/xml/properties/schema/external-schemaLocation
        • http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation
    • To support identity constraints, the following new method is added:
      • QName* XMLAttr::getAttName() const

    Modified Public API
     
    • To support attribute constraint checking, the constant values in XMLAttDef::DefAttTypes have been re-ordered.

    Deprecated Public API
     
    • Root Element check is moved from XMLValidator to XMLScanner. Thus XMLValidator::checkRootElement() is deprecated.



    Migrating from Xerces-C++ 1.4.0 to 1.5.2
     

    The following section is a discussion of the technical differences between Xerces-C++ 1.4.0 code base and the Xerces-C++ 1.5.2 code base.

    New features in Xerces-C++ 1.5.2
     

    Schema subset support and an experimental IDOM are available in this release.

    Schema Subset Support
     
    • New function "setDoSchema" is added to DOM/SAX parser.
    • New feature "http://apache.org/xml/features/validation/schema" is recognized by SAX2XMLReader.
    • New classes such as SchemaValidator, TraverseSchema ... are added.
    • The Scanner is enhanced to process schema.
    • New sample data files personal-schema.xml and personal.xsd.
    • New command line option "-s" for samples.

    See the Schema page for details.


    Experimental IDOM
     

    The experimental IDOM API is a new design of the C++ DOM API. Please note that this experimental IDOM API is only a prototype and is subject to change.



    Changes required to migrate to Xerces-C++ 1.5.2
     

    There are some architectural changes between the Xerces-C++ 1.4.0 and the Xerces-C++ 1.5.2 releases of the parser, and as a result, some code has undergone restructuring as shown below.

    Validator directory Reorganization
     
    • common content model files such as DFAContentModel ... are moved to a new directory called src/validators/common
    • DTD related files are moved to a new directory called src/validators/DTD
    • new directory src/validators/Datatype is created to store all datatype validators
    • new directory src/validators/schema is created to store Schema related files

    DTDValidator
     

    DTDValidator was design to scan, validate and store the DTD in Xerces-C++ 1.4.0 or earlier. In Xerces-C++ 1.5.2, this process is broken down into three components:

    • new class DTDScanner - to scan the DTD
    • new class DTDGrammar - to store the DTD Grammar
    • DTDValidator - to validate the DTD only



    Migrating from XML4C 2.x to Xerces-C++ 1.4.0
     

    The following section is a discussion of the technical differences between XML4C 2.x code base and the new Xerces-C++ 1.4.0 code base.

    Summary of changes required to migrate from XML4C 2.x to Xerces-C++ 1.4.0
     

    There are some major architectural changes between the 2.3.x and Xerces-C++ 1.4.0 releases of the parser, and as a result the code has undergone significant restructuring. The list below mentions the public api's which existed in 2.3.x and no longer exist in Xerces-C++ 1.4.0. It also mentions the Xerces-C++ 1.4.0 api which will give you the same functionality. Note: This list is not exhaustive. The API docs (and ultimately the header files) supplement this information.

    • parsers/[Non]Validating[DOM/SAX]parser.hpp
      These files/classes have all been consolidated in the new version to just two files/classes: [DOM/SAX]Parser.hpp. Validation is now a property which may be set before invoking the parse. Now, the setDoValidation() method controls the validation processing.
    • The framework/XMLDocumentTypeHandler.hpp been replaced with validators/DTD/DocTypeHandler.hpp.
    • The following methods now have different set of parameters because the underlying base class methods have changed in the 3.x release. These methods belong to one of XMLDocumentHandler, XMLErrorReporter or DocTypeHandler interfaces.
      • [Non]Validating[DOM/SAX]Parser::docComment
      • [Non]Validating[DOM/SAX]Parser::doctypePI
      • [Non]ValidatingSAXParser::elementDecl
      • [Non]ValidatingSAXParser::endAttList
      • [Non]ValidatingSAXParser::entityDecl
      • [Non]ValidatingSAXParser::notationDecl
      • [Non]ValidatingSAXParser::startAttList
      • [Non]ValidatingSAXParser::TextDecl
      • [Non]ValidatingSAXParser::docComment
      • [Non]ValidatingSAXParser::docPI
      • [Non]Validating[DOM/SAX]Parser::endElement
      • [Non]Validating[DOM/SAX]Parser::startElement
      • [Non]Validating[DOM/SAX]Parser::XMLDecl
      • [Non]Validating[DOM/SAX]Parser::error
    • The following methods/data members changed visibility from protected in 2.3.x to private (with public setters and getters, as appropriate).
      • [Non]ValidatingDOMParser::fDocument
      • [Non]ValidatingDOMParser::fCurrentParent
      • [Non]ValidatingDOMParser::fCurrentNode
      • [Non]ValidatingDOMParser::fNodeStack
    • The following files have moved, possibly requiring changes in the #include statements.
      • MemBufInputSource.hpp
      • StdInInputSource.hpp
      • URLInputSource.hpp
    • All the DTD validator code was moved from internal to separate validators/DTD directory.
    • The error code definitions which were earlier in internal/ErrorCodes.hpp are now split up into the following files:
      • framework/XMLErrorCodes.hpp - Core XML errors
      • framework/XMLValidityCodes.hpp - DTD validity errors
      • util/XMLExceptMsgs.hpp - C++ specific exception codes.

    The Samples
     

    The sample programs no longer use any of the unsupported util/xxx classes. They only existed to allow us to write portable samples. But, since we feel that the wide character APIs are supported on a lot of platforms these days, it was decided to go ahead and just write the samples in terms of these. If your system does not support these APIs, you will not be able to build and run the samples. On some platforms, these APIs might perhaps be optional packages or require runtime updates or some such action.

    More samples have been added as well. These highlight some of the new functionality introduced in the new code base. And the existing ones have been cleaned up as well.

    The new samples are:

    1. PParse - Demonstrates 'progressive parse' (see below)
    2. StdInParse - Demonstrates use of the standard in input source
    3. EnumVal - Shows how to enumerate the markup decls in a DTD Validator

    Parser Classes
     

    In the XML4C 2.x code base, there were the following parser classes (in the src/parsers/ source directory): NonValidatingSAXParser, ValidatingSAXParser, NonValidatingDOMParser, ValidatingDOMParser. The non-validating ones were the base classes and the validating ones just derived from them and turned on the validation. This was deemed a little bit overblown, considering the tiny amount of code required to turn on validation and the fact that it makes people use a pointer to the parser in most cases (if they needed to support either validating or non-validating versions.)

    The new code base just has SAXParer and DOMParser classes. These are capable of handling both validating and non-validating modes, according to the state of a flag that you can set on them. For instance, here is a code snippet that shows this in action.

    void ParseThis(const  XMLCh* const fileToParse,
                   const bool validate)
    {
      //
      // Create a SAXParser. It can now just be
      // created by value on the stack if we want
      // to parse something within this scope.
      //
      SAXParser myParser;
    
      // Tell it whether to validate or not
      myParser.setDoValidation(validate);
    
      // Parse and catch exceptions...
      try
      {
        myParser.parse(fileToParse);
      }
        ...
    };

    We feel that this is a simpler architecture, and that it makes things easier for you. In the above example, for instance, the parser will be cleaned up for you automatically upon exit since you don't have to allocate it anymore.


    Moved Classes to src/framework
     

    Some of the classes previously in the src/internal/ directory have been moved to their more correct location in the src/framework/ directory. These are classes used by the outside world and should have been framework classes to begin with. Also, to avoid name classes in the absence of C++ namespace support, some of these clashes have been renamed to make them more XML specific and less likely to clash. More classes might end up being moved to framework as well.

    So you might have to change a few include statements to find these classes in their new locations. And you might have to rename some of the names of the classes, if you used any of the ones whose names were changed.


    Util directory Reorganization
     

    The src/util directory was becoming somewhat of a dumping ground of platform and compiler stuff. So we reworked that directory to better spread things out. The new scheme is:

    util - The platform independent utility stuff
     
    • MsgLoaders - Holds the msg loader implementations
      1. ICU
      2. InMemory
      3. MsgCatalog
      4. Win32
    • Compilers - All the compiler specific files
    • Transcoders - Holds the transcoder implementations
      1. Iconv
      2. ICU
      3. Win32
    • Platforms
      1. AIX
      2. HP-UX
      3. Linux
      4. Solaris
      5. ....
      6. Win32

    This organization makes things much easier to understand. And it makes it easier to find which files you need and which are optional. Note that only per-platform files have any hard coded references to specific message loaders or transcoders. So if you don't include the ICU implementations of these services, you don't need to link in ICU or use any ICU headers. The rest of the system works only in terms of the abstraction APIs.




    Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.
    xerces-c-3.1.1/doc/html/sax2print-3.html0000644000175000017500000004402611363617750016753 0ustar borisborisSample: SAX2Print
    http://xml.apache.org/http://www.apache.org/http://www.w3.org/

    Xerces-C++ 3.1.1
    Readme
    Installation
    Build Instructions

    Programming
    Samples
    FAQs

    API Reference
    DOM C++ Binding
    Migration Guide

    SAX2Print
     

    SAX2Print uses the SAX2 APIs to parse an XML file and print it back. Do note that the output of this sample is not exactly the same as the input (in terms of whitespaces, first line), but the output has the same information content as the input.

    Running SAX2Print
     

    The SAX2Print sample parses an XML file and prints out the contents again in XML (some loss occurs). To run SAX2Print, enter the following

    SAX2Print <XML file>

    The following parameters may be set from the command line

    Usage:
        SAX2Print [options] <XML file>
    
    This program invokes the SAX2XMLReader, and then prints the
    data returned by the various SAX2 handlers for the specified
    XML file.
    
    Options:
        -u=xxx      Handle unrepresentable chars [fail | rep | ref*].
        -v=xxx      Validation scheme [always | never | auto*].
        -e          Expand Namespace Alias with URI's.
        -x=XXX      Use a particular encoding for output (LATIN1*).
        -f          Enable full schema constraint checking processing. Defaults to off.
        -p          Enable namespace-prefixes feature. Defaults to off.\n"
        -n          Disable namespace processing. Defaults to on.\n"
                    NOTE: THIS IS OPPOSITE FROM OTHER SAMPLES.\n"    
        -s          Disable schema processing. Defaults to on.
                    NOTE: THIS IS OPPOSITE FROM OTHER SAMPLES.
        -?          Show this help.
    
      * = Default if not provided explicitly.
    
    The parser has intrinsic support for the following encodings:
        UTF-8, US-ASCII, ISO8859-1, UTF-16[BL]E, UCS-4[BL]E,
        WINDOWS-1252, IBM1140, IBM037, IBM1047.
    

    -u=fail will fail when unrepresentable characters are encountered
    -u=rep will replace with the substitution character for that codepage
    -u=ref will report the character as a reference

    -v=always will force validation
    -v=never will not use any validation
    -v=auto will validate if a DOCTYPE declaration or a schema declaration is present in the XML document

    Here is a sample output from SAX2Print

    cd xerces-c-3.1.1/samples/data
    SAX2Print -v=always personal.xml
    
    <?xml version="1.0" encoding="LATIN1"?>
    <personnel>
    
      <person id="Big.Boss">
        <name><family>Boss</family> <given>Big</given></name>
        <email>chief@foo.com</email>
        <link subordinates="one.worker two.worker three.worker
    	                       four.worker five.worker"></link>
      </person>
    
      <person id="one.worker">
        <name><family>Worker</family> <given>One</given></name>
        <email>one@foo.com</email>
        <link manager="Big.Boss"></link>
      </person>
    
      <person id="two.worker">
        <name><family>Worker</family> <given>Two</given></name>
        <email>two@foo.com</email>
        <link manager="Big.Boss"></link>
      </person>
    
      <person id="three.worker">
        <name><family>Worker</family> <given>Three</given></name>
        <email>three@foo.com</email>
        <link manager="Big.Boss"></link>
      </person>
    
      <person id="four.worker">
        <name><family>Worker</family> <given>Four</given></name>
        <email>four@foo.com</email>
        <link manager="Big.Boss"></link>
      </person>
    
      <person id="five.worker">
        <name><family>Worker</family> <given>Five</given></name>
        <email>five@foo.com</email>
        <link manager="Big.Boss"></link>
      </person>
    
    </personnel>
    NoteSAX2Print does not reproduce the original XML file. SAX2Print and DOMPrint produce different results because of the way the two APIs store data and capture events.



    Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.
    xerces-c-3.1.1/doc/html/pparse-3.html0000644000175000017500000004105311363617747016316 0ustar borisborisSample: PParse
    http://xml.apache.org/http://www.apache.org/http://www.w3.org/

    Xerces-C++ 3.1.1
    Readme
    Installation
    Build Instructions

    Programming
    Samples
    FAQs

    API Reference
    DOM C++ Binding
    Migration Guide

    PParse
     

    PParse demonstrates progressive parsing.

    In this example, the application doesn't have to depend upon throwing an exception to terminate the parsing operation. Calling parseFirst() will cause the DTD to be parsed (both internal and external subsets) and any pre-content, i.e. everything up to but not including the root element. Subsequent calls to parseNext() will cause one more piece of markup to be parsed, and propagated from the core scanning code to the parser. You can quit the parse any time by just not calling parseNext() anymore and breaking out of the loop. When you call parseNext() and the end of the root element is the next piece of markup, the parser will continue on to the end of the file and return false, to let you know that the parse is done.

    Running PParse
     

    PParse parses an XML file and prints out the number of elements in the file.

    Usage:
        PParse [options] <XML file>
    
    This program demonstrates the progressive parse capabilities of
    the parser system. It allows you to do a scanFirst() call followed by
    a loop which calls scanNext(). You can drop out when you've found what
    ever it is you want. In our little test, our event handler looks for
    16 new elements then sets a flag to indicate its found what it wants.
    At that point, our progressive parse loop exits.
    
    Options:
          -v=xxx        - Validation scheme [always | never | auto*].
          -n            - Enable namespace processing [default is off].
          -s            - Enable schema processing [default is off].
          -f            - Enable full schema constraint checking [default is off].
          -?            - Show this help.
    
      * = Default if not provided explicitly.
    

    -v=always will force validation
    -v=never will not use any validation
    -v=auto will validate if a DOCTYPE declaration or a schema declaration is present in the XML document

    Here is a sample output from PParse

    cd xerces-c-3.1.1/samples/data
    PParse -v=always personal.xml
    personal.xml: 60 ms (37 elems, 12 attrs, 134 spaces, 134 chars)

    Running PParse with the validating parser gives a different result because ignorable white-space is counted separately from regular characters.

    PParse -v=never personal.xml
    personal.xml: 10 ms (37 elems, 12 attrs, 0 spaces, 268 chars)

    Note that the sum of spaces and characters in both versions is the same.

    NoteThe time reported by the program may be different depending on your processor speed.



    Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.
    xerces-c-3.1.1/doc/html/api-3.html0000644000175000017500000002453411363617747015602 0ustar borisborisAPI Documentation
    http://xml.apache.org/http://www.apache.org/http://www.w3.org/

    Xerces-C++ 3.1.1
    Readme
    Installation
    Build Instructions

    Programming
    Samples
    FAQs

    API Reference
    DOM C++ Binding
    Migration Guide

    API Docs for Xerces-C++
     

    Xerces-C++ is packaged with the API documentation for SAX and DOM, the two most common programming interfaces for XML. The most common framework classes have also been documented.

    Xerces-C++ SAX is an implementation of the SAX 1.0/2.0 specification.

    Xerces-C++ DOM is an implementation of the following specifications:

    For a complete understanding of how the Xerces-C++ APIs work, we recommend that you read these specifications.

    See the Xerces-C++ API Reference for the detailed documentation of Xerces-C++ interfaces.

    NoteThe API Reference is automatically generated using Doxygen.


    Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.
    xerces-c-3.1.1/doc/html/faqs-3.html0000644000175000017500000004552511363617747015766 0ustar borisborisFAQs
    http://xml.apache.org/http://www.apache.org/http://www.w3.org/

    Xerces-C++ 3.1.1
    Readme
    Installation
    Build Instructions

    Programming
    Samples
    FAQs

    API Reference
    DOM C++ Binding
    Migration Guide

    Distributing Xerces-C++
     

    Read the Distributing Xerces-C++ document or jump directly to:


    Building / Running Xerces-C++
     

    Read the Building / Running Xerces-C++ document or jump directly to:


    Programming Xerces-C++
     

    Read the Programming Xerces-C++ document or jump directly to:


    Other Xerces-C++ Questions
     

    Read the Other Xerces-C++ Questions document or jump directly to:


    Contributing to Xerces-C++
     

    Read the Contributing to Xerces-C++ document or jump directly to:



    Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.
    xerces-c-3.1.1/doc/html/senumval-3.html0000644000175000017500000003746011363617747016665 0ustar borisborisSample: SEnumVal
    http://xml.apache.org/http://www.apache.org/http://www.w3.org/

    Xerces-C++ 3.1.1
    Readme
    Installation
    Build Instructions

    Programming
    Samples
    FAQs

    API Reference
    DOM C++ Binding
    Migration Guide

    SEnumVal
     

    SEnumVal shows how to enumerate the markup declarations in a Schema Grammar.

    Running SEnumVal
     

    This program parses the specified XML file, then shows how to enumerate the contents of the Schema Grammar.

    Usage:
        SEnumVal <XML file>
    
    This program parses a file, then shows how to enumerate the
    contents of the Schema Grammar. Essentially, shows how one can
    access the Schema information stored in internal data structures.
    

    Here is a sample output from SEnumVal

    cd xerces-c-3.1.1/samples/data
    SEnumVal personal-schema.xml
    
    Name:                   personnel
    Model Type:             Children
    Create Reason:  Declared
    ContentType:    OneOrMore
    Content Model:  (person)+
    ComplexType:
            TypeName:       ,C0
            ContentType:    OneOrMore
    --------------------------------------------
    Name:                   person
    Model Type:             Children
    Create Reason:  Declared
    ContentType:    Sequence
    Content Model:  (name,email*,url*,link?)
    ComplexType:
            TypeName:       ,C1
            ContentType:    Sequence
    Attributes:
            Name:                   salary
            Type:                   CDATA
            Default Type:   #IMPLIED
            Base Datatype:          Decimal
    Facets:
            fractionDigits=0
    
            Name:                   id
            Type:                   ID
            Default Type:   #REQUIRED
            Base Datatype:          ID
    
            Name:                   contr
            Type:                   CDATA
            Default Type:   #DEFAULT
            Value:                  false
            Base Datatype:          string
    Enumeration:
    	    true
    	    false
    
            Name:                   note
            Type:                   CDATA
            Default Type:   #IMPLIED
            Base Datatype:          string
    
    --------------------------------------------
    Name:                   name
    Model Type:             Children
    Create Reason:  Declared
    ContentType:    All
    Content Model:	All(family,given)
    ComplexType:
            TypeName:       ,C3
            ContentType:    All
    --------------------------------------------
    Name:                   family
    Model Type:             Simple
    Create Reason:  Declared
    Base Datatype:          string
    --------------------------------------------
    Name:                   given
    Model Type:             Simple
    Create Reason:  Declared
    Base Datatype:          string
    --------------------------------------------
    Name:                   email
    Model Type:             Simple
    Create Reason:  Declared
    Base Datatype:          string
    --------------------------------------------
    Name:                   url
    Model Type:             Empty
    Create Reason:  Declared
    Content Model:  EMPTY
    ComplexType:
            TypeName:       ,C4
    Attributes:
            Name:                   href
            Type:                   CDATA
            Default Type:   #DEFAULT
            Value:                  http://
            Base Datatype:          string
    
    --------------------------------------------
    Name:                   link
    Model Type:             Empty
    Create Reason:  Declared
    Content Model:  EMPTY
    ComplexType:
            TypeName:       ,C5
    Attributes:
            Name:                   subordinates
            Type:                   IDREFS
            Default Type:   #IMPLIED
            Base Datatype:          List
    
            Name:                   manager
            Type:                   IDREF
            Default Type:   #IMPLIED
            Base Datatype:          IDREF
    
    --------------------------------------------
                  



    Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.
    xerces-c-3.1.1/doc/html/saxprint-3.html0000644000175000017500000004327511363617747016704 0ustar borisborisSample: SAXPrint
    http://xml.apache.org/http://www.apache.org/http://www.w3.org/

    Xerces-C++ 3.1.1
    Readme
    Installation
    Build Instructions

    Programming
    Samples
    FAQs

    API Reference
    DOM C++ Binding
    Migration Guide

    SAXPrint
     

    SAXPrint uses the SAX APIs to parse an XML file and print it back. Do note that the output of this sample is not exactly the same as the input (in terms of whitespaces, first line), but the output has the same information content as the input.

    Running SAXPrint
     

    The SAXPrint sample parses an XML file and prints out the contents again in XML (some loss occurs). To run SAXPrint, enter the following

    SAXPrint <XML file>

    The following parameters may be set from the command line

    Usage:
        SAXPrint [options] <XML file>
    
    This program invokes the SAX Parser, and then prints the
    data returned by the various SAX handlers for the specified
    XML file.
    
    Options:
        -u=xxx      Handle unrepresentable chars [fail | rep | ref*].
        -v=xxx      Validation scheme [always | never | auto*].
        -n          Enable namespace processing.
        -s          Enable schema processing.
        -f          Enable full schema constraint checking.
        -x=XXX      Use a particular encoding for output (LATIN1*).
        -?          Show this help.
    
      * = Default if not provided explicitly.
    
    The parser has intrinsic support for the following encodings:
        UTF-8, US-ASCII, ISO8859-1, UTF-16[BL]E, UCS-4[BL]E,
        WINDOWS-1252, IBM1140, IBM037, IBM1047.
    

    -u=fail will fail when unrepresentable characters are encountered
    -u=rep will replace with the substitution character for that codepage
    -u=ref will report the character as a reference

    -v=always will force validation
    -v=never will not use any validation
    -v=auto will validate if a DOCTYPE declaration or a schema declaration is present in the XML document

    Here is a sample output from SAXPrint

    cd xerces-c-3.1.1/samples/data
    SAXPrint -v=always personal.xml
    
    <?xml version="1.0" encoding="LATIN1"?>
    <personnel>
    
      <person id="Big.Boss">
        <name><family>Boss</family> <given>Big</given></name>
        <email>chief@foo.com</email>
        <link subordinates="one.worker two.worker three.worker
    	                       four.worker five.worker"></link>
      </person>
    
      <person id="one.worker">
        <name><family>Worker</family> <given>One</given></name>
        <email>one@foo.com</email>
        <link manager="Big.Boss"></link>
      </person>
    
      <person id="two.worker">
        <name><family>Worker</family> <given>Two</given></name>
        <email>two@foo.com</email>
        <link manager="Big.Boss"></link>
      </person>
    
      <person id="three.worker">
        <name><family>Worker</family> <given>Three</given></name>
        <email>three@foo.com</email>
        <link manager="Big.Boss"></link>
      </person>
    
      <person id="four.worker">
        <name><family>Worker</family> <given>Four</given></name>
        <email>four@foo.com</email>
        <link manager="Big.Boss"></link>
      </person>
    
      <person id="five.worker">
        <name><family>Worker</family> <given>Five</given></name>
        <email>five@foo.com</email>
        <link manager="Big.Boss"></link>
      </person>
    
    </personnel>
    NoteSAXPrint does not reproduce the original XML file. SAXPrint and DOMPrint produce different results because of the way the two APIs store data and capture events.



    Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.
    xerces-c-3.1.1/doc/faq-parse.xml0000644000175000017500000006470511065665171015435 0ustar borisboris Does &XercesCName; support Schema?

    Yes, &XercesCName; &XercesC3Version; contains an implementation of the W3C XML Schema Language, a recommendation of the Worldwide Web Consortium available in three parts: XML Schema: Primer and XML Schema: Structures and XML Schema: Datatypes. We consider this implementation complete. See the XML Schema Support page for limitations.

    Does &XercesCName; support XPath?

    &XercesCName; &XercesC3Version; provides partial XPath 1 implementation for the purposes of handling XML Schema identity constraints. The same engine is made available through the DOMDocument::evaluate API to let the user perform simple XPath queries involving DOMElement nodes only, with no predicate testing and allowing the "//" operator only as the initial step. For full XPath 1 and 2 support refer to the XQilla and Apache Xalan C++ open source projects.

    Why does my application crash when instantiating the parser?

    In order to work with the &XercesCName; parser, you have to first initialize the XML subsystem. The most common mistake is to forget this initialization. Before you make any calls to &XercesCName; APIs, you must call XMLPlatformUtils::Initialize():

    try { XMLPlatformUtils::Initialize(); } catch (const XMLException& toCatch) { // Do your failure processing here }

    This initializes the &XercesCProjectName; system and sets its internal variables. Note that you must include the xercesc/util/PlatformUtils.hpp file for this to work.

    Is it OK to call the XMLPlatformUtils::Initialize/Terminate pair of routines multiple times in one program?

    Yes. Note, however, that the application needs to guarantee that the XMLPlatformUtils::Initialize() and XMLPlatformUtils::Terminate() methods are called from the same thread (usually the initial thread executing main()) or proper synchronization is performed by the application if multiple threads call XMLPlatformUtils::Initialize() and XMLPlatformUtils::Terminate() concurrently.

    If you are calling XMLPlatformUtils::Initialize() a number of times, and then follow with XMLPlatformUtils::Terminate() the same number of times, only the first XMLPlatformUtils::Initialize() will do the initialization, and only the last XMLPlatformUtils::Terminate() will clean up the memory. The other calls are ignored.

    Why does my application crash after calling XMLPlatformUtils::Terminate()?

    Please make sure the XMLPlatformUtils::Terminate() is the last &XercesCName; function to be called in your program. NO explicit nor implicit &XercesCName; destructor (those local data that are destructed when going out of scope) should be called after XMLPlatformUtils::Terminate().

    For example consider the following code snippet which is incorrect:

    1: { 2: XMLPlatformUtils::Initialize(); 3: XercesDOMParser parser; 4: XMLPlatformUtils::Terminate(); 5: }

    The XercesDOMParser object "parser" is destructed when going out of scope at line 5 before the closing brace. As a result, XercesDOMParser destructor is called at line 5 after XMLPlatformUtils::Terminate() which is incorrect. Correct code should be:

    1: { 2: XMLPlatformUtils::Initialize(); 2a: { 3: XercesDOMParser parser; 3a: } 4: XMLPlatformUtils::Terminate(); 5: }

    The extra pair of braces (line 2a and 3a) ensures that all implicit destructors are called before terminating &XercesCName;.

    Note also that the application needs to guarantee that the XMLPlatformUtils::Initialize() and XMLPlatformUtils::Terminate() methods are called from the same thread (usually the initial thread executing main()) or proper synchronization is performed by the application if multiple threads call XMLPlatformUtils::Initialize() and XMLPlatformUtils::Terminate() concurrently.

    Is &XercesCName; thread-safe?

    The answer is yes if you observe the following rules for using &XercesCName; in a multi-threaded environment:

    Within an address space, an instance of the parser may be used without restriction from a single thread, or an instance of the parser can be accessed from multiple threads, provided the application guarantees that only one thread has entered a method of the parser at any one time.

    When two or more parser instances exist in a process, the instances can be used concurrently, without external synchronization. That is, in an application containing two parsers and two threads, one parser can be running within the first thread concurrently with the second parser running within the second thread.

    The same rules apply to &XercesCName; DOM documents. Multiple document instances may be concurrently accessed from different threads, but any given document instance can only be accessed by one thread at a time.

    The application also needs to guarantee that the XMLPlatformUtils::Initialize() and XMLPlatformUtils::Terminate() methods are called from the same thread (usually the initial thread executing main()) or proper synchronization is performed by the application if multiple threads call XMLPlatformUtils::Initialize() and XMLPlatformUtils::Terminate() concurrently.

    I am seeing memory leaks in &XercesCName;. Are they real?

    The &XercesCName; library allocates and caches some commonly reused items. The storage for these may be reported as memory leaks by some heap analysis tools; to avoid the problem, call the function XMLPlatformUtils::Terminate() before your application exits. This will free all memory that was being held by the library.

    For most applications, the use of Terminate() is optional. The system will recover all memory when the application process shuts down. The exception to this is the use of &XercesCName; from DLLs that will be repeatedly loaded and unloaded from within the same process. To avoid memory leaks with this kind of use, Terminate() must be called before unloading the &XercesCName; library

    To ensure all the memory held by the parser are freed, the number of XMLPlatformUtils::Terminate() calls should match the number of XMLPlatformUtils::Initialize() calls.

    If you have built &XercesCName; with dependency on ICU then you may want to call the u_cleanup() ICU function to clean up ICU static data. Refer to the ICU documentation for details.

    Is there a function that creates an XML file from a DTD (obviously with the values missing, a skeleton)?

    No, there is no such functionality.

    Can I use &XercesCName; to perform "write validation"? That is, having an appropriate Grammar and being able to add elements to the DOM whilst validating against the grammar?

    No, there is no such functionality.

    The best you can do for now is to create the DOM document, write it back as XML and re-parse it with validation turned on.

    Is there a facility in &XercesCName; to validate the data contained in a DOM tree? That is, without saving and re-parsing the source document?

    No, there is no such functionality. The best you can do for now is to create the DOM document, write it back as XML and re-parse it with validation turned on.

    How to write out a DOM tree into a string or an XML file?

    You can use the DOMLSSerializer::writeToString, or DOMLSSerializer::writeNode to serialize a DOM tree. Please refer to the sample DOMPrint or the API documentation for more details of DOMLSSerializer.

    Why doesn't DOMNode::cloneNode() clone the pointer assigned to a DOMNode via DOMNode::setUserData()?

    &XercesCName; supports the DOMNode::userData specified in the DOM level 3 Node interface. As is made clear in the description of the behavior of cloneNode(), userData that has been set on the Node is not cloned. Thus, if the userData is to be copied to the new Node, this copy must be effected manually. Note further that the operation of importNode() is specified similarly.

    How are entity reference nodes handled in DOM?

    If you are using the native DOM classes, the function setCreateEntityReferenceNodes controls how entities appear in the DOM tree. When setCreateEntityReferenceNodes is set to true (the default), an occurrence of an entity reference in the XML document will be represented by a subtree with an EntityReference node at the root whose children represent the entity expansion. Entity expansion will be a DOM tree representing the structure of the entity expansion, not a text node containing the entity expansion as text.

    If setCreateEntityReferenceNodes is false, an entity reference in the XML document is represented by only the nodes that represent the entity expansion. The DOM tree will not contain any entityReference nodes.

    Can I use &XercesCName; to parse HTML?

    Yes, but only if the HTML follows the rules given in the XML specification. Most HTML, however, does not follow the XML rules, and will generate XML well-formedness errors.

    I keep getting an error: "invalid UTF-8 character". What's wrong?

    Most commonly, the XML encoding = declaration is either incorrect or missing. Without a declaration, XML defaults to the use utf-8 character encoding, which is not compatible with the default text file encoding on most systems.

    The XML declaration should look something like this:

    <?xml version="1.0" encoding="iso-8859-1"?>

    Make sure to specify the encoding that is actually used by file. The encoding for "plain" text files depends both on the operating system and the locale (country and language) in use.

    Another common source of problems is characters that are not allowed in XML documents, according to the XML spec. Typical disallowed characters are control characters, even if you escape them using the Character Reference form. See the XML specification, sections 2.2 and 4.1 for details. If the parser is generating an Invalid character (Unicode: 0x???) error, it is very likely that there's a character in there that you can't see. You can generally use a UNIX command like "od -hc" to find it.

    What encodings are supported by &XercesCName;?

    &XercesCName; has intrinsic support for ASCII, UTF-8, UTF-16 (Big/Small Endian), UCS4 (Big/Small Endian), EBCDIC code pages IBM037, IBM1047 and IBM1140 encodings, ISO-8859-1 (aka Latin1) and Windows-1252. This means that it can always parse input XML files in these above mentioned encodings.

    Furthermore, if you build &XercesCName; with the International Components for Unicode (ICU) as a transcoder then the list of supported encodings extends to over 100 different encodings that are supported by ICU. In particular, all the encodings registered with the Internet Assigned Numbers Authority (IANA) are supported in this configuration.

    What character encoding should I use when creating XML documents?

    The best choice in most cases is either utf-8 or utf-16. Advantages of these encodings include:

    • The best portability. These encodings are more widely supported by XML processors than any others, meaning that your documents will have the best possible chance of being read correctly, no matter where they end up.
    • Full international character support. Both utf-8 and utf-16 cover the full Unicode character set, which includes all of the characters from all major national, international and industry character sets.
    • Efficient. utf-8 has the smaller storage requirements for documents that are primarily composed of characters from the Latin alphabet. utf-16 is more efficient for encoding Asian languages. But both encodings cover all languages without loss.

    The only drawback of utf-8 or utf-16 is that they are not the native text file format for most systems, meaning that some text file editors and viewers can not be directly used.

    A second choice of encoding would be any of the others listed in the table above. This works best when the xml encoding is the same as the default system encoding on the machine where the XML document is being prepared, because the document will then display correctly as a plain text file. For UNIX systems in countries speaking Western European languages, the encoding will usually be iso-8859-1.

    A word of caution for Windows users: The default character set on Windows systems is windows-1252, not iso-8859-1. While &XercesCName; does recognize this Windows encoding, it is a poor choice for portable XML data because it is not widely recognized by other XML processing tools. If you are using a Windows-based editing tool to generate XML, check which character set it generates, and make sure that the resulting XML specifies the correct name in the encoding="..." declaration.

    Why does deleting a transcoded string result in assertion on windows?

    Both your application program and the &XercesCName; DLL must use the same DLL version of the runtime library. If either statically links to the runtime library, this problem will still occur.

    For a Visual Studio build the runtime library setting MUST be "Multithreaded DLL" for release builds and "Debug Multithreaded DLL" for debug builds.

    To bypass such problem, instead of calling operator delete[] directly, you can use the provided function XMLString::release to delete any string that was allocated by the parser. This will ensure the string is allocated and deleted by the same DLL and such assertion problem should be resolved.

    How do I transcode to/from something besides the local code page?

    XMLString::transcode() will transcode from XMLCh to the local code page, and other APIs which take a char* assume that the source text is in the local code page. If this is not true, you must transcode the text yourself. You can do this using local transcoding support on your OS, such as Iconv on Unix or IBM's ICU package. However, if your transcoding needs are simple, you can achieve better portability by using the &XercesCName; parser's transcoder wrappers. You get a transcoder like this:

    • Call XMLPlatformUtils::fgTransServer->MakeNewTranscoderFor() and provide the name of the encoding you wish to create a transcoder for. This will return a transcoder to you, which you own and must delete when you are through with it. NOTE: You must provide a maximum block size that you will pass to the transcoder at one time, and you must pass blocks of characters of this count or smaller when you do your transcoding. The reason for this is that this is really an internal API and is used by the parser itself to do transcoding. The parser always does transcoding in known block sizes, and this allows transcoders to be much more efficient for internal use since it knows the max size it will ever have to deal with and can set itself up for that internally. In general, you should stick to block sizes in the 4 to 64K range.
    • The returned transcoder is something derived from XMLTranscoder, so they are all returned to you via that interface.
    • This object is really just a wrapper around the underlying transcoding system actually in use by your version of &XercesCName;, and does whatever is necessary to handle differences between the XMLCh representation and the representation used by that underlying transcoding system.
    • The transcoder object has two primary APIs, transcodeFrom() and transcodeTo(). These transcode between the XMLCh format and the encoding you indicated.
    • These APIs will transcode as much of the source data as will fit into the outgoing buffer you provide. They will tell you how much of the source they ate and how much of the target they filled. You can use this information to continue the process until all source is consumed.
    • char* data is always dealt with in terms of bytes, and XMLCh data is always dealt with in terms of characters. Don't mix up which you are dealing with or you will not get the correct results, since many encodings don't have a one to one relationship of characters to bytes.
    • When transcoding from XMLCh to the target encoding, the transcodeTo() method provides an 'unrepresentable flag' parameter, which tells the transcoder how to deal with an XMLCh code point that cannot be converted legally to the target encoding, which can easily happen since XMLCh is Unicode and can represent thousands of code points. The options are to use a default replacement character (which the underlying transcoding service will choose, and which is guaranteed to be legal for the target encoding), or to throw an exception.

    Here is an example:

    // Create an XMLTranscoder that is able to transcode between // Unicode and UTF-8. // XMLTranscoder* t = XMLPlatformUtils::fgTransService->makeNewTranscoderFor( "UTF-8", failReason, 16*1024); // Source string is in Unicode, want to transcode to UTF-8 t->transcodeTo(source_unicode, length, result_utf8, length, charsEaten, XMLTranscoder::UnRep_Throw); // Source string in UTF-8, want to transcode to Unicode. t->transcodeFrom(source_utf8, length, result_unicode, length, bytesEaten, (unsigned char*)charSz);

    An even simpler way to transcode to a different encoding is to use the TranscodeToStr and TranscodeFromStr wrapper classes which represent a one-time transcoding and encapsulate all the memory management. Refer to the API Reference for more information.

    Why does the parser still try to locate the DTD even validation is turned off and how to ignore external DTD reference?

    When DTD is referenced, the parser will try to read it, because DTDs can provide a lot more information than just validation. It defines entities and notations, external unparsed entities, default attributes, character entities, etc. Therefore the parser will always try to read it if present, even if validation is turned off.

    To ignore external DTDs completely you can call setLoadExternalDTD(false) (or setFeature(XMLUni::fgXercesLoadExternalDTD, false) to disable the loading of external DTD. The parser will then ignore any external DTD completely if the validationScheme is set to Val_Never.

    Note: This flag is ignored if the validationScheme is set to Val_Always or Val_Auto.

    Why does the XML data generated by the DOMLSSerializer does not match my original XML input?

    If you parse an xml document using XercesDOMParser or DOMLSParser and pass such DOMNode to DOMLSSerializer for serialization, you may not get something that is exactly the same as the original XML data. The parser may have done normalization, end of line conversion, or has expanded the entity reference as per the XML 1.0 specification, 4.4 XML Processor Treatment of Entities and References. From DOMLSSerializer perspective, it does not know what the original string was, all it sees is a processed DOMNode generated by the parser. But since the DOMLSSerializer is supposed to generate something that is parsable if sent back to the parser, it will not print the DOMNode node value as is. The DOMLSSerializer may do some "touch up" to the output data for it to be parsable.

    See How does DOMLSSerializer handle built-in entity Reference in node value? to understand further how DOMLSSerializer touches up the entity reference.

    Why does my application crash when deleting the parser after releasing a document?

    In most cases, the parser handles deleting documents when the parser gets deleted. However, if an application needs to release a document, it shall adopt the document before releasing it, so that the parser knows that the ownership of this particular document is transfered to the application and will not try to delete it once the parser gets deleted.

    XercesDOMParser *parser = new XercesDOMParser; ... try { parser->parse(xml_file); } catch () { ... } DOMNode *doc = parser->getDocument(); ... parser->adoptDocument(); doc->release(); ... delete parser;

    The alternative to release document is to call parser's resetDocumentPool(), which releases all the documents parsed.

    xerces-c-3.1.1/doc/xerces-c_book.xml0000644000175000017500000000753711362616055016276 0ustar borisboris
    xerces-c-3.1.1/doc/install.xml0000644000175000017500000002112011144750267015203 0ustar borisboris

    Source and binary distributions installation instructions are available for the following platforms:

    • Windows
    • UNIX/Linux/Mac OS X
    • Cygwin

    This section contains installation instructions for the Windows platform.

    The &XercesCName; source is available in the source distribution: &XercesC3SrcInstallDir;.zip.

    Install the &XercesCName; source distribution by using unzip on the &XercesC3SrcInstallDir;.zip archive in the Windows environment. You can use WinZip, or any other UnZip utility:

    unzip &XercesC3SrcInstallDir;.zip

    This creates the '&XercesC3SrcInstallDir;' sub-directory containing the &XercesCName; source distribution.

    If you need to build the &XercesCName; source after installation, please follow the Build Instructions.

    Install the &XercesCName; binary distribution by using unzip on the &XercesC3InstallDir;-{arch}-windows-{compiler}.zip archive in the Windows environment. Here {arch} denotes the CPU architecture and {compiler} denotes the C++ compiler of your choice. You can use WinZip, or any other UnZip utility. For example:

    unzip &XercesC3InstallDir;-x86-windows-vc-8.0.zip

    This creates a '&XercesC3InstallDir;-x86-windows-vc-8.0' sub-directory containing the &XercesCName; binary distribution.

    You need to add the '&XercesC3InstallDir;-{arch}-windows-{compiler}\bin' directory to your path. To do this go to the start menu, click the settings menu and select control panel. When the control panel opens, double click on System and select the 'Environment' tab. Locate the PATH variable under system variables and add <full-path-to-&XercesC3InstallDir;-{arch}-windows-{compiler}>\bin to the PATH variable.

    Additionally, if you don't have the corresponding version of Microsoft Visual C++ installed, you may need to download and install the C/C++ runtime libraries from the Microsoft website. For example, for Visual Studio 2008 (9.0) the package is called "Microsoft Visual C++ 2008 Redistributable Package".

    The binary distribution contains the pre-built parser libraries and sample executables. Please refer to the Samples for how to run the samples.

    This section contains installation instructions for the UNIX, Linux, and Mac OS X platforms.

    The &XercesCName; source is available in the source distribution: &XercesC3SrcInstallDir;.tar.gz.

    Install the &XercesCName; source distribution &XercesC3SrcInstallDir;.tar.gz by extracting the files from the compressed archive:

    gzip -d &XercesC3SrcInstallDir;.tar.gz tar -xf &XercesC3SrcInstallDir;.tar

    This creates the '&XercesC3SrcInstallDir;' sub-directory containing the &XercesCName; source distribution.

    If you need to build the &XercesCName; source after installation, please follow the Build Instructions.

    Install the binary distribution &XercesC3InstallDir;-{arch}-{os}-{compiler}.tar.gz by extracting the files from the compressed archive. Here {arch} denotes the CPU architecture, {os} denotes the operating system, and {compiler} denotes the C++ compiler of your choice. For example:

    gzip -d &XercesC3InstallDir;-x86-linux-gcc-3.4.tar.gz tar -xf &XercesC3InstallDir;-x86-linux-gcc-3.4.tar

    This will create an '&XercesC3InstallDir;-x86-linux-gcc-3.4' sub-directory containing the &XercesCName; binary distribution.

    You will need to add the &XercesC3InstallDir;-{arch}-{os}-{compiler}/bin directory to your PATH environment variable:

    For Bourne Shell, K Shell or Bash, type:

    export PATH="$PATH:<full-path-to-&XercesC3InstallDir;-{arch}-{os}-{compiler}>/bin"

    For C Shell, type:

    setenv PATH "$PATH:<full-path-to-&XercesC3InstallDir;-{arch}-{os}-{compiler}>/bin"

    If you wish to make this setting permanent, you need to change your profile by changing your setup files which can be either .profile or .kshrc.

    In addition, you will also need to set the library search path. (LIBPATH on AIX, LD_LIBRARY_PATH on Solaris and Linux, SHLIB_PATH on HP-UX, and DYLD_LIBRARY_PATH on Mac OS X).

    In the following shell commands, the <xerces-path> denotes the full path to the &XercesC3InstallDir;-{arch}-{os}-{compiler} directory. For Bourne Shell, K Shell or Bash, type:

    export LIBPATH=<xerces-path>/lib:$LIBPATH (AIX) export LD_LIBRARY_PATH=<xerces-path>/lib:$LD_LIBRARY_PATH (Solaris, Linux) export SHLIB_PATH=<xerces-path>/lib:$SHLIB_PATH (HP-UX) export DYLD_LIBRARY_PATH=<xerces-path>/lib:$DYLD_LIBRARY_PATH (Mac OS X)

    For C Shell, type:

    setenv LIBPATH "<xerces-path>/lib:$LIBPATH" (AIX) setenv LD_LIBRARY_PATH "<xerces-path>/lib:$LD_LIBRARY_PATH" (Solaris, Linux) setenv SHLIB_PATH "<xerces-path>/lib:$SHLIB_PATH" (HP-UX) setenv DYLD_LIBRARY_PATH "<xerces-path>/lib:$DYLD_LIBRARY_PATH" (Mac OS X)

    The binary distribution contains the pre-built parser libraries and sample executables. Please refer to the Samples for how to run the samples.

    This section contains installation instructions for the Cygwin platform.

    The &XercesCName; source is available in the source distribution: &XercesC3SrcInstallDir;.tar.gz.

    Install the &XercesCName; source distribution &XercesC3SrcInstallDir;.tar.gz by extracting the files from the compressed archive:

    tar -xfz &XercesC3SrcInstallDir;.tar.gz

    This creates the '&XercesC3SrcInstallDir;' sub-directory containing the &XercesCName; source distribution.

    If you need to build the &XercesCName; source after installation, please follow the Build Instructions.

    Precompiled Xerces-C++ libraries for Cygwin are provide as part of the Cygwin package repository. To install the binary distribution run Cygwin setup.exe. When you reach the Packages step of the Cygwin Setup wizard, expand the Devel category, then click in the New column next to "xerces-c-devel" until it reads "&XercesC3Version;-X".

    xerces-c-3.1.1/doc/scmprint.xml0000644000175000017500000000627311065665171015411 0ustar borisboris

    SCMPrint shows how to access the Schema Content Model information.

    This program parses the specified XSD file, then shows how to access the Schema Content Model information.

    Usage: SCMPrint [options] <XSD file | List file> This program loads XML Schema file(s), to show how one can access the Schema Content Model information. Options: -f Enable full schema constraint checking processing. Defaults to off. -l Indicate the input file is a List File that has a list of XSD files. Default to off (Input file is a XSD file). -? Show this help.

    Here is some sample output from SCMPrint (as the output is verbose it has been truncated)

    cd &XercesC3InstallDir;/samples/data SCMPrint personal.xsd ********** Printing out information from Schema ********** Processing Namespace: ============================================ Name: personnel Component Type: Element Content Model Type: Complex Name: C0 -------------------------------------------- Name: person Component Type: Element Content Model Type: Complex Name: C1 -------------------------------------------- Name: name Component Type: Element Content Model Type: Complex Name: C2 -------------------------------------------- Name: family Component Type: Element Content Model Type: Complex Name: C3 -------------------------------------------- Name: given Component Type: Element Content Model Type: Complex Name: C4 -------------------------------------------- Name: email Component Type: Element Content Model Type: Simple Name: string -------------------------------------------- Name: url Component Type: Element Content Model Type: Complex Name: C5 -------------------------------------------- Name: link Component Type: Element Content Model Type: Complex Name: C6 -------------------------------------------- Processing Namespace: http://www.w3.org/2001/XMLSchema ============================================ no elements Name: http://www.w3.org/2001/XMLSchema, anyType Component Type: Type Definition Category: Complex Base: anyType Content Model: (* (wildcard)) ...
    xerces-c-3.1.1/doc/program.xml0000644000175000017500000002002211065665171015205 0ustar borisboris

    This Programming Guide is for &XercesCName; version &XercesC3Version;.

    Independent of the API you want to use, DOM, SAX, or SAX2, your application must initialize the &XercesCProjectName; system before using the API, and terminate it after you are done. This is achieved by the following code:

    #include <xercesc/util/PlatformUtils.hpp> // Other include files, declarations, and non-&XercesCName; initializations. using namespace xercesc; int main(int argc, char* argv[]) { try { XMLPlatformUtils::Initialize(); } catch (const XMLException& toCatch) { // Do your failure processing here return 1; } // Do your actual work with &XercesCName; here. XMLPlatformUtils::Terminate(); // Other terminations and cleanup. return 0; }

    XMLPlatformUtils::Initialize() and XMLPlatformUtils::Terminate must be called at least once in each process. You are allowed to call XMLPlatformUtils::Initialize() and XMLPlatformUtils::Terminate multiple times, but each call to XMLPlatformUtils::Initialize() must be matched with a call to XMLPlatformUtils::Terminate.

    The DOM API is based on the Apache Recommended DOM C++ binding.

    Read the DOM Programming Guide document or jump directly to:

    • Design Objectives
    • DOM Level 3 Support in &XercesCName;
    • Using DOM API
      • Accessing API from application code
      • Class Names
      • Objects Management
      • Memory Management
      • String Type
    • XercesDOMParser
      • Constructing a XercesDOMParser
      • Supported Features
      • Supported Properties
    • DOMLSParser
      • Constructing a DOMLSParser
      • How to interchange DOMLSInput and SAX InputSource?
      • Supported Features
      • Supported Properties
    • DOMLSSerializer
      • Constructing a DOMLSSerializer
      • How does DOMLSSerializer handle built-in entity Reference in node value?
      • Supported Features

    Read the SAX2 Programming Guide document or jump directly to:

    • Using the SAX2 API
    • SAX2XMLReader
      • Constructing an XML Reader
      • Supported Features
      • Supported Properties

    Read the SAX Programming Guide document or jump directly to:

    • Using the SAX API
    • SAXParser
      • Constructing a SAXParser
      • Supported Features

    Read the &XercesCName; Programming Guide document or jump directly to:

    • Version Macros
    • Schema Support
    • Progressive Parsing
    • Pre-parsing Grammar and Grammar Caching
    • Loadable Message Text
    • Pluggable Transcoders
    • Porting Guidelines
    • Using C++ Namespace
    • Specify Locale for Message Loader
    • Specify Location for Message Loader
    • Use Specific Scanner
    • Pluggable Panic Handler
    • Pluggable Memory Manager
    • Managing Security Vulnerabilities
    xerces-c-3.1.1/doc/program-others.xml0000644000175000017500000007135611065665171016527 0ustar borisboris

    &XercesCName; defines a numeric preprocessor macro, _XERCES_VERSION, for users to introduce into their code to perform conditional compilation where the version of &XercesCName; is detected in order to enable or disable version specific capabilities. For example,

    #if _XERCES_VERSION >= 30102 // Code specific to Xerces-C++ version 3.1.2 and later. #else // Old code. #endif

    The minor and revision (patch level) numbers have two digits of resolution which means that '1' becomes '01' and '2' becomes '02' in this example.

    There are also other string macros or constants to represent the Xerces-C++ version. Please refer to the xercesc/util/XercesVersion.hpp header for details.

    &XercesCName; contains an implementation of the W3C XML Schema Language. See the XML Schema Support page for details.

    In addition to using the parse() method to parse an XML File. You can use the other two parsing methods, parseFirst() and parseNext() to do the so called progressive parsing. This way you don't have to depend on throwing an exception to terminate the parsing operation.

    Calling parseFirst() will cause the DTD (both internal and external subsets), and any pre-content, i.e. everything up to but not including the root element, to be parsed. Subsequent calls to parseNext() will cause one more pieces of markup to be parsed, and propagated from the core scanning code to the parser (and hence either on to you if using SAX/SAX2 or into the DOM tree if using DOM).

    You can quit the parse any time by just not calling parseNext() anymore and breaking out of the loop. When you call parseNext() and the end of the root element is the next piece of markup, the parser will continue on to the end of the file and return false, to let you know that the parse is done. So a typical progressive parse loop will look like this:

    // Create a progressive scan token XMLPScanToken token; if (!parser.parseFirst(xmlFile, token)) { cerr << "scanFirst() failed\n" << endl; return 1; } // // We started ok, so lets call scanNext() // until we find what we want or hit the end. // bool gotMore = true; while (gotMore && !handler.getDone()) gotMore = parser.parseNext(token);

    In this case, our event handler object (named 'handler') is watching for some criteria and will return a status from its getDone() method. Since the handler sees the SAX events coming out of the SAXParser, it can tell when it finds what it wants. So we loop until we get no more data or our handler indicates that it saw what it wanted to see.

    When doing non-progressive parses, the parser can easily know when the parse is complete and insure that any used resources are cleaned up. Even in the case of a fatal parsing error, it can clean up all per-parse resources. However, when progressive parsing is done, the client code doing the parse loop might choose to stop the parse before the end of the primary file is reached. In such cases, the parser will not know that the parse has ended, so any resources will not be reclaimed until the parser is destroyed or another parse is started.

    This might not seem like such a bad thing; however, in this case, the files and sockets which were opened in order to parse the referenced XML entities will remain open. This could cause serious problems. Therefore, you should destroy the parser instance in such cases, or restart another parse immediately. In a future release, a reset method will be provided to do this more cleanly.

    Also note that you must create a scan token and pass it back in on each call. This insures that things don't get done out of sequence. When you call parseFirst() or parse(), any previous scan tokens are invalidated and will cause an error if used again. This prevents incorrect mixed use of the two different parsing schemes or incorrect calls to parseNext().

    &XercesCName; provides a function to pre-parse the grammar so that users can check for any syntax error before using the grammar. Users can also optionally cache these pre-parsed grammars for later use during actual parsing.

    Here is an example:

    XercesDOMParser parser; // Enable schema processing. parser.setDoSchema(true); parser.setDONamespaces(true); // Let's preparse the schema grammar (.xsd) and cache it. Grammar* grammar = parser.loadGrammar(xmlFile, Grammar::SchemaGrammarType, true);

    Besides caching pre-parsed schema grammars, users can also cache any grammars encountered during an xml document parse.

    Here is an example:

    SAXParser parser; // Enable grammar caching by setting cacheGrammarFromParse to true. // The parser will cache any encountered grammars if it does not // exist in the pool. // If the grammar is DTD, no internal subset is allowed. parser.cacheGrammarFromParse(true); // Let's parse our xml file (DTD grammar) parser.parse(xmlFile); // We can get the grammar where the root element was declared // by calling the parser's method getRootGrammar; // Note: The parser owns the grammar, and the user should not delete it. Grammar* grammar = parser.getRootGrammar();

    We can use any previously cached grammars when parsing new xml documents. Here are some examples on how to use those cached grammars:

    /** * Caching and reusing XML Schema (.xsd) grammar * Parse an XML document and cache its grammar set. Then, use the cached * grammar set in subsequent parses. */ XercesDOMParser parser; // Enable schema processing parser.setDoSchema(true); parser.setDoNamespaces(true); // Enable grammar caching parser.cacheGrammarFromParse(true); // Let's parse the XML document. The parser will cache any grammars encountered. parser.parse(xmlFile); // No need to enable re-use by setting useCachedGrammarInParse to true. It is // automatically enabled with grammar caching. for (int i=0; i< 3; i++) parser.parse(xmlFile); // This will flush the grammar pool parser.resetCachedGrammarPool(); /** * Caching and reusing DTD grammar * Preparse a grammar and cache it in the pool. Then, we use the cached grammar * when parsing XML documents. */ SAX2XMLReader* parser = XMLReaderFactory::createXMLReader(); // Load grammar and cache it parser->loadGrammar(dtdFile, Grammar::DTDGrammarType, true); // enable grammar reuse parser->setFeature(XMLUni::fgXercesUseCachedGrammarInParse, true); // Parse xml files parser->parse(xmlFile1); parser->parse(xmlFile2);

    There are some limitations about caching and using cached grammars:

    • When caching/reusing DTD grammars, no internal subset is allowed.
    • When preparsing grammars with caching option enabled, if a grammar, in the result set, already exists in the pool (same namespace for schema or same system id for DTD), the entire set will not be cached. This behavior is the default but can be overridden for XML Schema caching. See the SAX/SAX2/DOM parser features for details.
    • When parsing an XML document with the grammar caching option enabled, the reuse option is also automatically enabled. We will only parse a grammar if it does not exist in the pool.

    The &XercesCName; supports loadable message text. Although the current distribution only supports English, it is capable of supporting other languages. Anyone interested in contributing any translations should contact us. This would be an extremely useful service.

    In order to support the local message loading services, all the error messages are captured in an XML file in the src/xercesc/NLS/ directory. There is a simple program, in the tools/NLS/Xlat/ directory, which can translate that text in various formats. It currently supports a simple 'in memory' format (i.e. an array of strings), the Win32 resource format, and the message catalog format. The 'in memory' format is intended for very simple installations or for use when porting to a new platform (since you can use it until you can get your own local message loading support done.)

    In the src/xercesc/util/ directory, there is an XMLMsgLoader class. This is an abstraction from which any number of message loading services can be derived. Your platform driver file can create whichever type of message loader it wants to use on that platform. &XercesCName; currently has versions for the in memory format, the Win32 resource format, the message catalog format, and ICU message loader. Some of the platforms can support multiple message loaders, in which case a #define token is used to control which one is used. You can set this in your build projects to control the message loader type used.

    &XercesCName; also supports pluggable transcoding services. The XMLTransService class is an abstract API that can be derived from, to support any desired transcoding service. XMLTranscoder is the abstract API for a particular instance of a transcoder for a particular encoding. The platform driver file decides what specific type of transcoder to use, which allows each platform to use its native transcoding services, or the ICU service if desired.

    Implementations are provided for Win32 native services, ICU services, and the iconv services available on many Unix platforms. The Win32 version only provides native code page services, so it can only handle XML code in the intrinsic encodings ASCII, UTF-8, UTF-16 (Big/Small Endian), UCS4 (Big/Small Endian), EBCDIC code pages IBM037, IBM1047 and IBM1140 encodings, ISO-8859-1 (aka Latin1) and Windows-1252. The ICU version provides all of the encodings that ICU supports. The iconv version will support the encodings supported by the local system. You can use transcoders we provide or create your own if you feel ours are insufficient in some way, or if your platform requires an implementation that &XercesCName; does not provide.

    All platform dependent code in &XercesCName; has been isolated to a couple of files, which should ease the porting effort. The src/xercesc/util directory contains all such files. In particular:

    • The src/xercesc/util/FileManagers directory contains implementations of file managers for various platforms.
    • The src/xercesc/util/MutexManagers directory contains implementations of mutex managers for various platforms.
    • The src/xercesc/util/Xerces_autoconf_const* files provide base definitions for various platforms.

    Other concerns are:

    • Does ICU compile on your platform? If not, then you'll need to create a transcoder implementation that uses your local transcoding services. The iconv transcoder should work for you, though perhaps with some modifications.
    • What message loader will you use? To get started, you can use the "in memory" one, which is very simple and easy. Then, once you get going, you may want to adapt the message catalog message loader, or write one of your own that uses local services.
    • What should I define XMLCh to be? Please refer to What should I define XMLCh to be? for further details.

    Finally, you need to decide about how to define XMLCh. Generally, XMLCh should be defined to be a type suitable for holding a utf-16 encoded (16 bit) value, usually an unsigned short.

    All XML data is handled within &XercesCName; as strings of XMLCh characters. Regardless of the size of the type chosen, the data stored in variables of type XMLCh will always be utf-16 encoded values.

    Unlike XMLCh, the encoding of wchar_t is platform dependent. Sometimes it is utf-16 (AIX, Windows), sometimes ucs-4 (Solaris, Linux), sometimes it is not based on Unicode at all (HP/UX, AS/400, system 390).

    Some earlier releases of &XercesCName; defined XMLCh to be the same type as wchar_t on most platforms, with the goal of making it possible to pass XMLCh strings to library or system functions that were expecting wchar_t parameters. This approach has been abandoned because of

    • Portability problems with any code that assumes that the types of XMLCh and wchar_t are compatible
    • Excessive memory usage, especially in the DOM, on platforms with 32 bit wchar_t.
    • utf-16 encoded XMLCh is not always compatible with ucs-4 encoded wchar_t on Solaris and Linux. The problem occurs with Unicode characters with values greater than 64k; in ucs-4 the value is stored as a single 32 bit quantity. With utf-16, the value will be stored as a "surrogate pair" of two 16 bit values. Even with XMLCh equated to wchar_t, xerces will still create the utf-16 encoded surrogate pairs, which are illegal in ucs-4 encoded wchar_t strings.

    &XercesCName; makes use of C++ namespace to make sure its definitions do not conflict with other libraries and applications. As a result applications must namespace-qualify all &XercesCName; classes, data and variables using the xercesc name. Alternatively, applications can use using xercesc::<Name>; declarations to make individual &XercesCName; names visible in the current scope or using namespace xercesc; definition to make all &XercesCName; names visible in the current scope.

    While the above information should be sufficient for the majority of applications, for cases where several versions of the &XercesCName; library must be used in the same application, namespace versioning is provided. The following convenience macros can be used to access the &XercesCName; namespace names with versions embedded (see src/xercesc/util/XercesDefs.hpp):

    #define XERCES_CPP_NAMESPACE_BEGIN namespace &XercesC3NSVersion; { #define XERCES_CPP_NAMESPACE_END } #define XERCES_CPP_NAMESPACE_USE using namespace &XercesC3NSVersion;; #define XERCES_CPP_NAMESPACE_QUALIFIER &XercesC3NSVersion;:: namespace &XercesC3NSVersion; { } namespace &XercesC3Namespace; = &XercesC3NSVersion;;

    &XercesCName; provides mechanisms for Native Language Support (NLS). Even though the current distribution has only English message file, it is capable of supporting other languages once the translated version of the target language is available.

    An application can specify the locale for the message loader in their very first invocation to XMLPlatformUtils::Initialize() by supplying a parameter for the target locale intended. The default locale is "en_US".

    // Initialize the parser system try { XMLPlatformUtils::Initialize("fr_FR"); } catch () { }

    &XercesCName; searches for message files at the location specified in the XERCESC_NLS_HOME environment variable and, if that is not set, at the default message directory, $XERCESCROOT/msg.

    Application can specify an alternative location for the message files in their very first invocation to XMLPlatformUtils::Initialize() by supplying a parameter for the alternative location.

    // Initialize the parser system try { XMLPlatformUtils::Initialize("en_US", "/usr/nls"); } catch () { }

    &XercesCName; reports panic conditions encountered to the panic handler installed. The panic handler can take whatever action appropriate to handle the panic condition.

    &XercesCName; allows application to provide a customized panic handler (class implementing the interface PanicHandler), in its very first invocation of XMLPlatformUtils::Initialize().

    In the absence of an application-specific panic handler, &XercesCName; default panic handler is installed and used, which aborts program whenever a panic condition is encountered.

    // Initialize the parser system try { PanicHandler* ph = new MyPanicHandler(); XMLPlatformUtils::Initialize("en_US", "/usr/nls", ph); } catch () { }

    Certain applications wish to maintain precise control over memory allocation. This enables them to recover more easily from crashes of individual components, as well as to allocate memory more efficiently than a general-purpose OS-level procedure with no knowledge of the characteristics of the program making the requests for memory. In &XercesCName; this is supported via the Pluggable Memory Handler.

    Users who wish to implement their own MemoryManager, an interface found in xercesc/framework/MemoryManager.hpp, need to implement only two methods:

    // This method allocates requested memory. // the parameter is the requested memory size // A pointer to the allocated memory is returned. virtual void* allocate(XMLSize_t size) = 0; // This method deallocates memory // The parameter is a pointer to the allocated memory to be deleted virtual void deallocate(void* p) = 0;

    To maximize the amount of flexibility that applications have in terms of controlling memory allocation, a MemoryManager instance may be set as part of the call to XMLPlatformUtils::Initialize() to allow for static initialization to be done with the given MemoryHandler; a (possibly different) MemoryManager may be passed in to the constructors of all Xerces parser objects as well, and all dynamic allocations within the parsers will make use of this object. Assuming that MyMemoryHandler is a class that implements the MemoryManager interface, here is a bit of pseudocode which illustrates these ideas:

    MyMemoryHandler *mm_for_statics = new MyMemoryHandler(); MyMemoryHandler *mm_for_particular_parser = new MyMemoryManager(); // initialize the parser information; try/catch // removed for brevity XMLPlatformUtils::Initialize(XMLUni::fgXercescDefaultLocale, 0,0, mm_for_statics); // create a parser object XercesDOMParser *parser = new XercesDomParser(mm_for_particular_parser); // ... delete parser; XMLPlatformUtils::Terminate();

    If a user provides a MemoryManager object to the parser, then the user owns that object. It is also important to note that &XercesCName; default implementation simply uses the global new and delete operators.

    The purpose of the SecurityManager class is to permit applications a means to have the parser reject documents whose processing would otherwise consume large amounts of system resources. Malicious use of such documents could be used to launch a denial-of-service attack against a system running the parser. Initially, the SecurityManager only knows about attacks that can result from exponential entity expansion; this is the only known attack that involves processing a single XML document. Other, similar attacks can be launched if arbitrary schemas may be parsed; there already exist means (via use of the EntityResolver interface) by which applications can deny processing of untrusted schemas. In future, the SecurityManager will be expanded to take these other exploits into account.

    The SecurityManager class is very simple: It will contain getters and setters corresponding to each known variety of exploit. These will reflect limits that the application may impose on the parser with respect to the processing of various XML constructs. When an instance of SecurityManager is instantiated, default values for these limits will be provided that should suit most applications.

    By default, &XercesCName; is a wholly conformant XML parser; that is, no security-related considerations will be observed by default. An application must provide an instance of the SecurityManager class to a parser in order to make that parser behave in a security-conscious manner. For example:

    SAXParser *myParser = new SAXParser(); SecurityManager *myManager = new SecurityManager(); myManager->setEntityExpansionLimit(100000); // larger than default myParser->setSecurityManager(myManager); // ... use the parser

    Note that SecurityManager instances may be set on all kinds of &XercesCName; parsers; please see the documentation for the individual parsers for details.

    Note also that the application always owns the SecurityManager instance. The default SecurityManager that &XercesCName; provides is not thread-safe; although it only uses primitive operations at the moment, users may need to extend the class with a thread-safe implementation on some platforms.

    For performance and modularity &XercesCName; provides a mechanism for specifying the scanner to be used when scanning an XML document. Such mechanism will enable the creation of special purpose scanners that can be easily plugged in.

    &XercesCName; supports the following scanners:

    The WFXMLScanner is a non-validating scanner which performs well-formedness check only. It does not do any DTD/XMLSchema processing. If the XML document contains a DOCTYPE, it will be silently ignored (i.e. no warning message is issued). Similarly, any schema specific attributes (e.g. schemaLocation), will be treated as normal element attributes. Setting grammar specific features/properties will have no effect on its behavior (e.g. setLoadExternalDTD(true) is ignored).

    // Create a DOM parser XercesDOMParser parser; // Specify scanner name parser.useScanner(XMLUni::fgWFXMLScanner); // Specify other parser features, e.g. parser.setDoNamespaces(true);

    The DGXMLScanner handles XML documents with DOCTYPE information. It does not do any XMLSchema processing, which means that any schema specific attributes (e.g. schemaLocation), will be treated as normal element attributes. Setting schema grammar specific features/properties will have no effect on its behavior (e.g. setDoSchema(true) and setLoadSchema(true) are ignored).

    // Create a SAX parser SAXParser parser; // Specify scanner name parser.useScanner(XMLUni::fgDGXMLScanner); // Specify other parser features, e.g. parser.setLoadExternalDTD(true);

    The SGXMLScanner handles XML documents with XML schema grammar information. If the XML document contains a DOCTYPE, it will be ignored. Namespace and schema processing features are on by default, and setting them to off has not effect.

    // Create a SAX2 parser SAX2XMLReader* parser = XMLReaderFactory::createXMLReader(); // Specify scanner name parser->setProperty(XMLUni::fgXercesScannerName, (void *)XMLUni::fgSGXMLScanner); // Specify other parser features, e.g. parser->setFeature(XMLUni::fgXercesSchemaFullChecking, false);

    The IGXMLScanner is an integrated scanner and handles XML documents with DTD and/or XML schema grammar. This is the default scanner used by the various parsers if no scanner is specified.

    // Create a DOMLSParser parser DOMLSParser *parser = ((DOMImplementationLS*)impl)->createLSParser( DOMImplementationLS::MODE_SYNCHRONOUS, 0); // Specify scanner name - This is optional as IGXMLScanner is the default parser->getDomConfig()->setParameter( XMLUni::fgXercesScannerName, (void *)XMLUni::fgIGXMLScanner); // Specify other parser features, e.g. parser->getDomConfig()->setParameter(XMLUni::fgDOMNamespaces, doNamespaces); parser->getDomConfig()->setParameter(XMLUni::fgXercesSchema, doSchema);
    xerces-c-3.1.1/doc/sax2count.xml0000644000175000017500000000640311065665171015473 0ustar borisboris

    SAX2Count is a simple application that counts the elements and characters of a given XML file using the (event based) SAX2 API.

    The SAX2Count sample parses an XML file and prints out the number of elements and characters in the file. To run SAX2Count, enter the following

    SAX2Count <XML File>

    The following parameters may be set from the command line

    Usage: SAX2Count [options] <XML file | List file> This program invokes the SAX2XMLReader, and then prints the number of elements, attributes, spaces and characters found in each XML file, using SAX2 API. Options: -l Indicate the input file is a List File that has a list of xml files. Default to off (Input file is an XML file). -v=xxx Validation scheme [always | never | auto*]. -f Enable full schema constraint checking processing. Defaults to off. -n Disable namespace processing. Defaults to on. NOTE: THIS IS OPPOSITE FROM OTHER SAMPLES. -s Disable schema processing. Defaults to on. NOTE: THIS IS OPPOSITE FROM OTHER SAMPLES. -locale=ll_CC specify the locale, default: en_US -? Show this help. * = Default if not provided explicitly.

    -v=always will force validation
    -v=never will not use any validation
    -v=auto will validate if a DOCTYPE declaration or a schema declaration is present in the XML document

    Here is a sample output from SAX2Count

    cd &XercesC3InstallDir;/samples/data SAX2Count -v=always personal.xml personal.xml: 60 ms (37 elems, 12 attrs, 134 spaces, 134 chars)

    Running SAX2Count with the validating parser gives a different result because ignorable white-space is counted separately from regular characters.

    SAX2Count -v=never personal.xml personal.xml: 10 ms (37 elems, 12 attrs, 0 spaces, 268 chars)

    Note that the sum of spaces and characters in both versions is the same.

    The time reported by the program may be different depending on your processor speed.
    xerces-c-3.1.1/doc/redirect.xml0000644000175000017500000000600611065665171015345 0ustar borisboris

    Redirect uses the SAX EntityResolver handler to redirect the input stream for external entities. It installs an entity resolver, traps the call to the external DTD file and redirects it to another file which contains the actual DTD.

    This program illustrates how an application can use the SAX EntityResolver handler to redirect the input stream for external entities. It installs an entity resolver, traps the call to the external DTD file and redirects it to another file which contains the actual DTD.

    The program then counts and reports the number of elements and attributes in the given XML file.

    Redirect <XML file>

    Redirect is invoked as follows:

    cd &XercesC3InstallDir;/samples/data Redirect personal.xml

    The output is the following:

    cd &XercesC3InstallDir;/samples/data Redirect personal.xml personal.xml: 30 ms (37 elems, 12 attrs, 0 spaces, 268 chars)

    External files required to run this sample are 'personal.xml', 'personal.dtd' and 'redirect.dtd', which are all present in the 'samples/data' directory. Make sure that you run redirect in the samples/data directory.

    The 'resolveEntity' callback in this sample looks for an external entity with system id as 'personal.dtd'. When it is asked to resolve this particular external entity, it creates and returns a new InputSource for the file 'redirect.dtd'.

    A real-world XML application can similarly do application specific processing when encountering external entities. For example, an application might want to redirect all references to entities outside of its domain to local cached copies.

    The time reported by the program may be different depending on your processor speed.
    xerces-c-3.1.1/doc/faq-contributing.xml0000644000175000017500000002217311065665171017023 0ustar borisboris I have a problem and I think I know how to fix it. How can I communicate my ideas to the &XercesCName; team?

    To maximize the probability that your ideas will grab the attention of one of the &XercesCName; developers who knows about the area of the parser you're concerned with, you should follow these steps:

    1. Check out and build the most recent &XercesCName; code. For instructions on how to do this, see &XercesCName; Repository Information. If you do this, you can confirm that your bug still exists and has not been fixed since the last release.
    2. Write up your bug report as per the instructions described in the Bug-Reporting page.
    3. Describe why your solution works.
    4. Prepare a patch to fix &XercesCName; code. To do this, when you have applied your changes to a local copy of the most recent &XercesCName; source code, do svn diff file for each file you have changed. Keep in mind the coding guidelines for &XercesCName; as described below.
    5. Zip (or tar) up your patches. If you send them in the body of a message or bug report they are very difficult to apply.
    6. Submit a bug report to the &XercesCName; bug database as described on the Bug-Reporting page. Pick the product "&XercesCName;" (remembering to attach your patches and test code) or, if you think your patch might need some discussion, post it to the developer mailing list.
    7. If you are submitting a substantial amount of code, provide the information required in the Contributors section of the Project Charter.
    What are the release policies for &XercesCName;?

    The informal release policies for &XercesCName; are (using a versioning of version.release.modification):

    • We don't try to enforce binary compatibility between new versions and releases.
    • New versions and releases will be delivered when a certain number of bug fixes/new features have been added (as decided by the committers).
    • New modification levels will almost never be issued, the only exception is a showstopper bug encountered within a release.
    • Any normal bug is fixed only in the HEAD branch (latest development code).

    The specific source and binary compatibility objectives for these release policies and the corresponding allowed source changes are:

    • x.x.x to x.x.y: the API is the same to ensure binary compatibility.
      • To maintain binary compatibility the allowed source code changes are:
        • Add new non-virtual functions.
        • Add new classes.
        • Add new STATIC data members.
      • To maintain binary compatibility you cannot:
        • Add new virtual functions as this will change the layout of the virtual function table.
        • Change the order of virtual functions in the class declaration.
        • Change the signature of a function (including adding additional parameters with defaults).
        • Change the access specifier (private/public/protected) on functions or data members as this may be part of the signature with some compilers.
        • Add new data members to a class (other than STATIC members).
        • Change the order of data members in the class declaration (other than STATIC members).
        • Change the class hierarchy (other than adding new classes).
      • Methods that are deprecated should be marked with the Doxygen tag @deprecated in the header file.
    • x.x.x to x.y.z: the API is source code compatible but not binary compatible (a recompilation of an application that uses the public headers of &XercesCName; should work).
      • This means that to maintain release to release source code compatibility the signature of public methods can only be changed by adding default parameters.
      • Signatures of private and protected methods can be changed and/or removed.
      • Methods that are deprecated should be marked with the Doxygen tag @deprecated in the header file.
    • x.x.x to a.b.c: the API may not be source code compatible and is not binary compatible (a recompilation of an application using &XercesCName; may fail).
      • In this situation, a separate branch of the code will be created so that bug fixes may be applied to the last version.
      • Deprecated methods may be removed. Deprecated methods that are removed should be documented in the migration information (migration.xml).
    What are the coding conventions for &XercesCName;?

    As with any coding effort, there are always arguments over what coding conventions to use. Everyone thinks that they have the best style which leads to the entire source tree looking different. This causes consternation as well as eye fatigue on subsequent developers that need to maintain the code. Therefore, we are going to make an attempt at defining some basic coding conventions for &XercesCName;. When committing files or providing patches please keep them in mind:

    1. All classes should have a constructor, destructor, assignment operator and copy constructor to avoid compiler generated default versions of these.
      • If a class contains only static methods, only a private constructor is required.
      • If a class contains any virtual methods, the destructor should be virtual.
      • If a class has a public or protected constructor, it should declare private assignment operator and copy constructor which are not implemented (unless of course you need either of these).
    2. If you add a catch(...) block be sure to add the following block catch(const OutOfMemoryException&) { throw; } so the OutOfMemory condition does not get absorbed.
    3. If you change the serialization format (by adding something to be serialized or removing something that was serialized) increment the XERCES_GRAMMAR_SERIALIZATION_LEVEL constant in XercesVersion.hpp.
    4. If a class allocates memory or is instantiated with new then it should inherit from XMemory.
    5. Use a tab size of 4 and insert them as spaces instead of keeping tabs.
    6. The code is written to be platform independent. Platform specific code should only be in the util/FileManagers, util/MutexManagers, util/Transcoders, util/MsgLoaders, and util/NetAccessors directories.
    7. The header file name and the source file name should both be named corresponding to the primary class they contain. For example class StringPool should be in the header file StringPool.hpp and in the source file StringPool.cpp.
    8. In general, code should be documented with comments. Use Doxygen tags to describe methods.
    9. The naming convention for enumerations should be chosen to be unique and descriptive (i.e. INVALID or UNKNOWN) to avoid colliding with predefined macros in other products. The current style of using ALL CAP enums should be phased out with Mixed Case instead, except for names specified in standards (for example, TEXT_NODE should not be converted to mixed case for standards compliance).
    xerces-c-3.1.1/doc/program-sax2.xml0000644000175000017500000011200311274550527016061 0ustar borisboris

    The SAX2 API for XML parsers was originally developed for Java. Please be aware that there is no standard SAX2 API for C++, and that use of the &XercesCName; SAX2 API does not guarantee client code compatibility with other C++ XML parsers.

    The SAX2 API presents a callback based API to the parser. An application that uses SAX2 provides an instance of a handler class to the parser. When the parser detects XML constructs, it calls the methods of the handler class, passing them information about the construct that was detected. The most commonly used handler classes are ContentHandler which is called when XML constructs are recognized, and ErrorHandler which is called when an error occurs. The header files for the various SAX2 handler classes are in the xercesc/sax2/ directory.

    As a convenience, &XercesCName; provides DefaultHandler, a single class which is publicly derived from all the Handler classes. DefaultHandler's default implementation of the handler callback methods is to do nothing. A convenient way to get started with &XercesCName; is to derive your own handler class from DefaultHandler and override just those methods in HandlerBase which you are interested in customizing. This simple example shows how to create a handler which will print element names, and print fatal error messages. The source code for the sample applications show additional examples of how to write handler classes.

    This is the header file MySAX2Handler.hpp:

    #include <xercesc/sax2/DefaultHandler.hpp> class MySAX2Handler : public DefaultHandler { public: void startElement( const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname, const Attributes& attrs ); void fatalError(const SAXParseException&); };

    This is the implementation file MySAX2Handler.cpp:

    #include "MySAX2Handler.hpp" #include <iostream> using namespace std; MySAX2Handler::MySAX2Handler() { } void MySAX2Handler::startElement(const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname, const Attributes& attrs) { char* message = XMLString::transcode(localname); cout << "I saw element: "<< message << endl; XMLString::release(&message); } void MySAX2Handler::fatalError(const SAXParseException& exception) { char* message = XMLString::transcode(exception.getMessage()); cout << "Fatal Error: " << message << " at line: " << exception.getLineNumber() << endl; XMLString::release(&message); }

    The XMLCh and Attributes types are supplied by &XercesCName; and are documented in the API Reference. Examples of their usage appear in the source code to the sample applications.

    In order to use &XercesCName; SAX2 to parse XML files, you will need to create an instance of the SAX2XMLReader class. The example below shows the code you need in order to create an instance of SAX2XMLReader. The ContentHandler and ErrorHandler instances required by the SAX2 API are provided using the DefaultHandler class supplied with &XercesCName;.

    #include <xercesc/sax2/SAX2XMLReader.hpp> #include <xercesc/sax2/XMLReaderFactory.hpp> #include <xercesc/sax2/DefaultHandler.hpp> #include <xercesc/util/XMLString.hpp> #include <iostream> using namespace std; using namespace xercesc; int main (int argc, char* args[]) { try { XMLPlatformUtils::Initialize(); } catch (const XMLException& toCatch) { char* message = XMLString::transcode(toCatch.getMessage()); cout << "Error during initialization! :\n"; cout << "Exception message is: \n" << message << "\n"; XMLString::release(&message); return 1; } char* xmlFile = "x1.xml"; SAX2XMLReader* parser = XMLReaderFactory::createXMLReader(); parser->setFeature(XMLUni::fgSAX2CoreValidation, true); parser->setFeature(XMLUni::fgSAX2CoreNameSpaces, true); // optional DefaultHandler* defaultHandler = new DefaultHandler(); parser->setContentHandler(defaultHandler); parser->setErrorHandler(defaultHandler); try { parser->parse(xmlFile); } catch (const XMLException& toCatch) { char* message = XMLString::transcode(toCatch.getMessage()); cout << "Exception message is: \n" << message << "\n"; XMLString::release(&message); return -1; } catch (const SAXParseException& toCatch) { char* message = XMLString::transcode(toCatch.getMessage()); cout << "Exception message is: \n" << message << "\n"; XMLString::release(&message); return -1; } catch (...) { cout << "Unexpected Exception \n" ; return -1; } delete parser; delete defaultHandler; return 0; }

    The behavior of the SAX2XMLReader is dependant on the values of the following features. All of the features below can be set using the function SAX2XMLReader::setFeature(cons XMLCh* const, const bool). And can be queried using the function bool SAX2XMLReader::getFeature(const XMLCh* const).

    None of these features can be modified in the middle of a parse, or an exception will be thrown.

    http://xml.org/sax/features/namespaces
    true: Perform Namespace processing.
    false: Do not perform Namespace processing.
    default: true
    XMLUni Predefined Constant: fgSAX2CoreNameSpaces
    note: If the validation feature is set to true, then the document must contain a grammar that supports the use of namespaces.
    see: http://xml.org/sax/features/namespace-prefixes
    see: http://xml.org/sax/features/validation

    http://xml.org/sax/features/namespace-prefixes
    true: Report the original prefixed names and attributes used for Namespace declarations.
    false: Do not report attributes used for Namespace declarations, and optionally do not report original prefixed names.
    default: false
    XMLUni Predefined Constant: fgSAX2CoreNameSpacePrefixes

    http://xml.org/sax/features/validation
    true: Report all validation errors.
    false: Do not report validation errors.
    default: false
    XMLUni Predefined Constant: fgSAX2CoreValidation
    note: If this feature is set to true, the document must specify a grammar. If this feature is set to false and document specifies a grammar, that grammar might be parsed but no validation of the document contents will be performed.
    see: http://apache.org/xml/features/validation/dynamic
    see: http://apache.org/xml/features/nonvalidating/load-external-dtd
    http://apache.org/xml/features/validation/dynamic
    true: The parser will validate the document only if a grammar is specified. (http://xml.org/sax/features/validation must be true).
    false: Validation is determined by the state of the http://xml.org/sax/features/validation feature.
    default: false
    XMLUni Predefined Constant: fgXercesDynamic
    see: http://xml.org/sax/features/validation

    http://apache.org/xml/features/validation/schema
    true: Enable the parser's schema support.
    false: Disable the parser's schema support.
    default: true
    XMLUni Predefined Constant: fgXercesSchema
    note If set to true, namespace processing must also be turned on.
    see: http://xml.org/sax/features/namespaces

    http://apache.org/xml/features/validation/schema-full-checking
    true: Enable full schema constraint checking, including checking which may be time-consuming or memory intensive. Currently, particle unique attribution constraint checking and particle derivation restriction checking are controlled by this option.
    false: Disable full schema constraint checking.
    default: false
    XMLUni Predefined Constant: fgXercesSchemaFullChecking
    note: This feature checks the schema grammar itself for additional errors that are time-consuming or memory intensive. It does not affect the level of checking performed on document instances that use schema grammars.
    see: http://apache.org/xml/features/validation/schema

    http://apache.org/xml/features/validating/load-schema
    true: Load the schema.
    false: Don't load the schema if it wasn't found in the grammar pool.
    default: true
    XMLUni Predefined Constant: fgXercesLoadSchema
    note: This feature is ignored and no schemas are loaded if schema processing is disabled.
    see: http://apache.org/xml/features/validation/schema

    http://apache.org/xml/features/nonvalidating/load-external-dtd
    true: Load the external DTD.
    false: Ignore the external DTD completely.
    default: true
    XMLUni Predefined Constant: fgXercesLoadExternalDTD
    note This feature is ignored and DTD is always loaded when validation is on.
    see: http://xml.org/sax/features/validation

    http://apache.org/xml/features/continue-after-fatal-error
    true: Attempt to continue parsing after a fatal error.
    false: Stops parse on first fatal error.
    default: false
    XMLUni Predefined Constant: fgXercesContinueAfterFatalError
    note: The behavior of the parser when this feature is set to true is undetermined! Therefore use this feature with extreme caution because the parser may get stuck in an infinite loop or worse.

    http://apache.org/xml/features/validation-error-as-fatal
    true: The parser will treat validation error as fatal and will exit depends on the state of http://apache.org/xml/features/continue-after-fatal-error.
    false: The parser will report the error and continue processing.
    default: false
    XMLUni Predefined Constant: fgXercesValidationErrorAsFatal
    note: Setting this true does not mean the validation error will be printed with the word "Fatal Error". It is still printed as "Error", but the parser will exit if http://apache.org/xml/features/continue-after-fatal-error is set to false.
    see: http://apache.org/xml/features/continue-after-fatal-error

    http://apache.org/xml/features/validation/use-cachedGrammarInParse
    true:Use cached grammar if it exists in the pool.
    false:Parse the schema grammar.
    default: false
    XMLUni Predefined Constant: fgXercesUseCachedGrammarInParse
    note:If http://apache.org/xml/features/validation/cache-grammarFromParse is enabled, this feature is set to true automatically and any setting to this feature by the user is a no-op.
    see: http://apache.org/xml/features/validation/cache-grammarFromParse

    http://apache.org/xml/features/validation/cache-grammarFromParse
    true:Cache the grammar in the pool for re-use in subsequent parses.
    false:Do not cache the grammar in the pool
    default: false
    XMLUni Predefined Constant: fgXercesCacheGrammarFromParse
    note: If set to true, the http://apache.org/xml/features/validation/use-cachedGrammarInParse is also set to true automatically.
    see: http://apache.org/xml/features/validation/use-cachedGrammarInParse

    http://apache.org/xml/features/standard-uri-conformant
    true: Force standard uri conformance.
    false: Do not force standard uri conformance.
    default: false
    XMLUni Predefined Constant: fgXercesStandardUriConformant
    note: If set to true, malformed uri will be rejected and fatal error will be issued.

    http://apache.org/xml/features/calculate-src-ofs
    true: Enable src offset calculation.
    false: Disable src offset calculation.
    default: false
    XMLUni Predefined Constant: fgXercesCalculateSrcOfs
    note: If set to true, the user can inquire about the current src offset within the input source. Setting it to false (default) improves the performance.

    http://apache.org/xml/features/validation/identity-constraint-checking
    true: Enable identity constraint checking.
    false: Disable identity constraint checking.
    default: true
    XMLUni Predefined Constant: fgXercesIdentityConstraintChecking

    http://apache.org/xml/features/generate-synthetic-annotations
    true: Enable generation of synthetic annotations. A synthetic annotation will be generated when a schema component has non-schema attributes but no child annotation.
    false: Disable generation of synthetic annotations.
    default: false
    XMLUni Predefined Constant: fgXercesGenerateSyntheticAnnotations

    http://apache.org/xml/features/validate-annotations
    true: Enable validation of annotations.
    false: Disable validation of annotations.
    default: false
    XMLUni Predefined Constant: fgXercesValidateAnnotations
    note: Each annotation is validated independently.

    http://apache.org/xml/features/schema/ignore-annotations
    true: Do not generate XSAnnotations when traversing a schema.
    false: Generate XSAnnotations when traversing a schema.
    default: false
    XMLUni Predefined Constant: fgXercesIgnoreAnnotations

    http://apache.org/xml/features/disable-default-entity-resolution
    true: The parser will not attempt to resolve the entity when the resolveEntity method returns NULL.
    false: The parser will attempt to resolve the entity when the resolveEntity method returns NULL.
    default: false
    XMLUni Predefined Constant: fgXercesDisableDefaultEntityResolution

    http://apache.org/xml/features/validation/schema/skip-dtd-validation
    true: When schema validation is on the parser will ignore the DTD, except for entities.
    false: The parser will not ignore DTDs when validating.
    default: false
    XMLUni Predefined Constant: fgXercesSkipDTDValidation
    see: Schema Validation

    http://apache.org/xml/features/validation/ignoreCachedDTD
    true: Ignore a cached DTD when an XML document contains both an internal and external DTD, and the use cached grammar from parse option is enabled. Currently, we do not allow using cached DTD grammar when an internal subset is present in the document. This option will only affect the behavior of the parser when an internal and external DTD both exist in a document (i.e. no effect if document has no internal subset).
    false: Don't ignore cached DTD.
    default: false
    XMLUni Predefined Constant: fgXercesIgnoreCachedDTD
    see: http://apache.org/xml/features/validation/use-cachedGrammarInParse

    http://apache.org/xml/features/validation/schema/handle-multiple-imports
    true: During schema validation allow multiple schemas with the same namespace to be imported.
    false: Don't import multiple schemas with the same namespace.
    default: false
    XMLUni Predefined Constant: fgXercesHandleMultipleImports

    The behavior of the SAX2XMLReader is dependant on the values of the following properties. All of the properties below can be set using the function SAX2XMLReader::setProperty(const XMLCh* const, void*). It takes a void pointer as the property value. Application is required to initialize this void pointer to a correct type. Please check the column "Value Type" below to learn exactly what type of property value each property expects for processing. Passing a void pointer that was initialized with a wrong type will lead to unexpected result. If the same property is set more than once, the last one takes effect.

    Property values can be queried using the function void* SAX2XMLReader::getProperty(const XMLCh* const). The parser owns the returned pointer, and the memory allocated for the returned pointer will be destroyed when the parser is deleted. To ensure accessibility of the returned information after the parser is deleted, callers need to copy and store the returned information somewhere else. Since the returned pointer is a generic void pointer, check the column "Value Type" below to learn exactly what type of object each property returns for replication.

    None of these properties can be modified in the middle of a parse, or an exception will be thrown.

    http://apache.org/xml/properties/schema/external-schemaLocation
    Description The XML Schema Recommendation explicitly states that the inclusion of schemaLocation/ noNamespaceSchemaLocation attributes in the instance document is only a hint; it does not mandate that these attributes must be used to locate schemas. Similar situation happens to <import> element in schema documents. This property allows the user to specify a list of schemas to use. If the targetNamespace of a schema specified using this method matches the targetNamespace of a schema occurring in the instance document in schemaLocation attribute, or if the targetNamespace matches the namespace attribute of <import> element, the schema specified by the user using this property will be used (i.e., the schemaLocation attribute in the instance document or on the <import> element will be effectively ignored).
    Value The syntax is the same as for schemaLocation attributes in instance documents: e.g, "http://www.example.com file_name.xsd". The user can specify more than one XML Schema in the list.
    Value Type XMLCh*
    XMLUni Predefined Constant: fgXercesSchemaExternalSchemaLocation

    http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation
    Description The XML Schema Recommendation explicitly states that the inclusion of schemaLocation/ noNamespaceSchemaLocation attributes in the instance document is only a hint; it does not mandate that these attributes must be used to locate schemas. This property allows the user to specify the no target namespace XML Schema Location externally. If specified, the instance document's noNamespaceSchemaLocation attribute will be effectively ignored.
    Value The syntax is the same as for the noNamespaceSchemaLocation attribute that may occur in an instance document: e.g."file_name.xsd".
    Value Type XMLCh*
    XMLUni Predefined Constant: fgXercesSchemaExternalNoNameSpaceSchemaLocation

    http://apache.org/xml/properties/scannerName
    Description This property allows the user to specify the name of the XMLScanner to use for scanning XML documents. If not specified, the default scanner "IGXMLScanner" is used.
    Value The recognized scanner names are:
    1."WFXMLScanner" - scanner that performs well-formedness checking only.
    2. "DGXMLScanner" - scanner that handles XML documents with DTD grammar information.
    3. "SGXMLScanner" - scanner that handles XML documents with XML schema grammar information.
    4. "IGXMLScanner" - scanner that handles XML documents with DTD or/and XML schema grammar information.
    Users can use the predefined constants defined in XMLUni directly (fgWFXMLScanner, fgDGXMLScanner, fgSGXMLScanner, or fgIGXMLScanner) or a string that matches the value of one of those constants.
    Value Type XMLCh*
    XMLUni Predefined Constant: fgXercesScannerName
    note: See Use Specific Scanner for more programming details.

    http://apache.org/xml/properties/security-manager
    Description Certain valid XML and XML Schema constructs can force a processor to consume more system resources than an application may wish. In fact, certain features could be exploited by malicious document writers to produce a denial-of-service attack. This property allows applications to impose limits on the amount of resources the processor will consume while processing these constructs.
    Value An instance of the SecurityManager class (see xercesc/util/SecurityManager). This class's documentation describes the particular limits that may be set. Note that, when instantiated, default values for limits that should be appropriate in most settings are provided. The default implementation is not thread-safe; if thread-safety is required, the application should extend this class, overriding methods appropriately. The parser will not adopt the SecurityManager instance; the application is responsible for deleting it when it is finished with it. If no SecurityManager instance has been provided to the parser (the default) then processing strictly conforming to the relevant specifications will be performed.
    Value Type SecurityManager*
    XMLUni Predefined Constant: fgXercesSecurityManager

    http://apache.org/xml/properties/low-water-mark
    Description If the number of available bytes in the raw buffer is less than the low water mark the parser will attempt to read more data before continuing parsing. By default the value for this parameter is 100 bytes. You may want to set this parameter to 0 if you would like the parser to parse the available data immediately without potentially blocking while waiting for more date.
    Value New low water mark.
    Value Type XMLSize_t*
    XMLUni Predefined Constant: fgXercesLowWaterMark

    setInputBufferSize(const size_t bufferSize)
    Description Set maximum input buffer size. This method allows users to limit the size of buffers used in parsing XML character data. The effect of setting this size is to limit the size of a ContentHandler::characters() call. The parser's default input buffer size is 1 megabyte.
    Value The maximum input buffer size
    Value Type XMLCh*

    xerces-c-3.1.1/doc/schema.xml0000644000175000017500000002526511244775400015010 0ustar borisboris

    &XercesCName; includes an implementation of the W3C XML Schema specification, a recommendation of the Worldwide Web Consortium available in three parts: XML Schema: Primer, XML Schema: Structures and XML Schema: Datatypes. We consider this implementation complete except for the limitations outlined below.

    • In certain complex content models specifying large values for the minOccurs or maxOccurs attributes may result in poor performance and/or large amount of memory being allocated by the parser. In such situations large values for minOccurs should be avoided, and unbounded should be used instead.
    • The parser treats local elements in the same scope with the same name and namespace as one element declaration and does not differentiate between them.

    We have interpreted the specs as requiring <keyref> Identity Constraints to refer to <key> or <unique> identity constraints within the scope of the elements to which the <keyref> is attached. This interpretation is at variance with the Schema Primer, which contains an example with a <keyref> declared on an element used inside the element of its corresponding <key>.

    For float data, the specification does not explicitly prescribe how to deal with out-of-bound data. &XercesCName; converts these values as shown below:

    Values in range Values converted
    less than -224 * 2104 (approx -3.402823669e+38) -INF
    greater than -1 * 2-149 (approx -1.401298464e-45) and less than -0 -0
    greater than +0 and less than +1 * 2-149 (approx +1.401298464e-45) +0
    greater than +224 * 2104 (approx 3.402823669e+38) +INF

    The effect of this conversion would invalidate an instance data, for example, "1.1e-46", of a data type derived from float, with minExclusive value '+0', since "1.1e-46" is converted to "+0", which is the same as the minExclusive.

    Similarly, &XercesCName; converts double values as shown below (the values depend on the system specific values of DBL_MAX and DBL_MIN):

    Values in range Values converted
    less than -DBL_MAX (approx -1.7976931348623158e+308) -INF
    greater than -DBL_MIN (approx -2.2250738585072014e-308) and less than -0 -0
    greater than +0 and less than +DBL_MIN (approx +2.2250738585072014e-308) +0
    greater than +DBL_MAX (approx +1.7976931348623158e+308) +INF

    Below is an example that shows how to turn on schema processing in DOMParser (default is off). Note that you must also turn on namespace support (default is off) for schema processing.

    // Instantiate the DOM parser. XercesDOMParser parser; parser.setDoNamespaces(true); parser.setDoSchema(true); parser.parse(xmlFile);

    Usage in SAXParser is similar, please refer to the SAXCount sample program for further reference.

    Below is an example that shows how to turn on schema processing in SAX2XMLReader (default is on). Note that namespace must be on (default is on) as well.

    SAX2XMLReader* parser = XMLReaderFactory::createXMLReader(); parser->setFeature(XMLUni::fgSAX2CoreNameSpaces, true); parser->setFeature(XMLUni::fgXercesSchema, true); parser->parse(xmlFile);

    Schema grammars can be associated with instance documents in three ways.

    If schema grammar was not specified externally through methods, then each instance document that uses XML Schema grammars must specify the location of the grammars it uses by using an xsi:schemaLocation attribute if they use namespaces, and xsi:noNamespaceSchemaLocation attribute otherwise.

    Here is an example with no target namespace:

    <?xml version="1.0" encoding="UTF-8"?> <personnel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation='personal.xsd'> ... </personnel>

    Here is an example with a target namespace. Note that it is an error to specify a different namespace in xsi:schemaLocation attribute than the target namespace defined in the Schema.

    <?xml version="1.0" encoding="UTF-8"?> <personnel xmlns="http://my.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://my.com personal.xsd http://my2.com test2.xsd"> ... </personnel>

    An application developer may associate schemas with instance documents through methods setExternalSchemaLocation if they use namespaces, and setExternalNoNamespaceSchemaLocation otherwise. (For SAX2XMLReader, use the properties: "http://apache.org/xml/properties/schema/external-schemaLocation" and "http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation")

    Here is an example with no target namespace:

    // Instantiate the DOM parser. XercesDOMParser parser; parser.setDoNamespaces(true); parser.setDoSchema(true); parser.setExternalNoNamespaceSchemaLocation("personal.xsd"); parser.parse("test.xml"); // Instantiate the SAX2 XMLReader. SAX2XMLReader* parser = XMLReaderFactory::createXMLReader(); XMLCh* propertyValue = XMLString::transcode("personal.xsd"); ArrayJanitor<XMLCh> janValue(propertyValue); parser->setProperty( XMLUni::fgXercesSchemaExternalNoNameSpaceSchemaLocation, propertyValue); parser.parse("test.xml");

    Here is an example with a target namespace. Note that it is an error to specify a different namespace in setExternalSchemaLocation than the target namespace defined in the Schema.

    // Instantiate the DOM parser. XercesDOMParser parser; parser.setDoNamespaces(true); parser.setDoSchema(true); parser.setExternalSchemaLocation( "http://my.com personal.xsd http://my2.com test2.xsd"); parser.parse("test.xml"); // Instantiate the SAX2 XMLReader. SAX2XMLReader* parser = XMLReaderFactory::createXMLReader(); XMLCh* propertyValue = XMLString::transcode( "http://my.com personal.xsd http://my2.com test2.xsd"); ArrayJanitor<XMLCh> janValue(propertyValue); parser->setProperty( XMLUni::fgXercesSchemaExternalSchemaLocation, propertyValue); parser.parse("test.xml");

    An application developer may also pre-parse and cache the grammar corresponding to the XML document namespace as described in the Pre-parsing Grammar and Grammar Caching section of the &XercesCName; Programming Guide.

    xerces-c-3.1.1/doc/faq-other.xml0000644000175000017500000000531111065665171015430 0ustar borisboris How do I determine the version of &XercesCName; I am using?

    The version string for &XercesCName; is in one of the header files. Look inside the file src/xercesc/util/XercesVersion.hpp or, in the binary distribution, look in include/xercesc/utils/XercesVersion.hpp.

    If you don't have the header files, you have to find the version information from the shared library name. On Windows right click on the DLL name in the bin directory and look up properties. The version information can be found in the Version tab.

    On UNIX/Linux/Mac OS X platforms the version is embedded into the library name.

    Is there any kind of support available for &XercesCName;?

    &XercesCName; comes with no formal support.

    Every volunteer project obtains its strength from the people involved in it. Mailing lists provide a simple and effective communication mechanism. You are welcome to join any of these mailing lists (or all of them if you wish). You can choose to lurk, or to actively participate. It is up to you.

    Instructions for subscribing as well as archives are available at the &XercesCName; mailing lists page.

    I found a defect -- how do I report it?

    See Bug Reporting.

    xerces-c-3.1.1/doc/saxcount.xml0000644000175000017500000000613411065665171015412 0ustar borisboris

    SAXCount is the simplest application that counts the elements and characters of a given XML file using the (event based) SAX API.

    The SAXCount sample parses an XML file and prints out the number of elements in the file. To run SAXCount, enter the following

    SAXCount <XML File>

    The following parameters may be set from the command line

    Usage: SAXCount [options] <XML file | List file> This program invokes the SAX Parser, and then prints the number of elements, attributes, spaces and characters found in each XML file, using SAX API. Options: -l Indicate the input file is a List File that has a list of xml files. Default to off (Input file is an XML file). -v=xxx Validation scheme [always | never | auto*]. -n Enable namespace processing. Defaults to off. -s Enable schema processing. Defaults to off. -f Enable full schema constraint checking. Defaults to off. -locale=ll_CC specify the locale, default: en_US -? Show this help. * = Default if not provided explicitly.

    -v=always will force validation
    -v=never will not use any validation
    -v=auto will validate if a DOCTYPE declaration or a schema declaration is present in the XML document

    Here is a sample output from SAXCount

    cd &XercesC3InstallDir;/samples/data SAXCount -v=always personal.xml personal.xml: 60 ms (37 elems, 12 attrs, 134 spaces, 134 chars)

    Running SAXCount with the validating parser gives a different result because ignorable white-space is counted separately from regular characters.

    SAXCount -v=never personal.xml personal.xml: 10 ms (37 elems, 12 attrs, 0 spaces, 268 chars)

    Note that the sum of spaces and characters in both versions is the same.

    The time reported by the program may be different depending on your processor speed.
    xerces-c-3.1.1/doc/faq-distrib.xml0000644000175000017500000001051611065665171015752 0ustar borisboris Can I use &XercesCName; in my product?

    Most likely yes. &XercesCName; is distributed under the terms of the Apache Software License version 2.0 which is a fairly permissive license. In particular, it allows you to distribute your application in binary form without requiring you to also release the source code. Read the license agreement for more information and if you still have further questions, then please address them to the &XercesCName; user mailing list.

    Which files do I need to distribute with my application?

    You only need to distribute one file:

    &XercesC3WindowsDLL;.dll for Windows
    &XercesC3UnixLib;-&XercesC3UnixSoVersion;.a for AIX
    &XercesC3UnixLib;-&XercesC3UnixSoVersion;so. for Solaris/Linux
    &XercesC3UnixLib;-&XercesC3UnixSoVersion;.sl for HP-UX on PA-RISC
    &XercesC3UnixLib;-&XercesC3UnixSoVersion;.so for HP-UX on IA64
    &XercesC3UnixLib;-&XercesC3UnixSoVersion;.dylib for Mac OS X

    Note, however, that if you built &XercesCName; with dependencies on other libraries (e.g., ICU for transcoder support or libcurl for net accessor support) then you will need to ship those libraries as well.

    You can also link your application to a static version of the &XercesCName; library in which case you won't need to distribute any extra libraries.

    I do not see a binary for my platform. When will it be available?

    The reason why you see binaries only for some specific platforms is that we have had the maximum requests for them. Moreover, we have limited resources and hence cannot publish binaries for every platform. If you wish to contribute your time and effort in building binaries for a specific platform/environment then please send a mail to the &XercesCName; developer mailing list.

    When will a port to my platform be available?

    We would like to see &XercesCName; ported to as many platforms as practical. However, due to limited resources we cannot do all the ports. Here are the Porting Guidelines.

    We encourage you to submit the changes that are required to make it work on another platform. We will incorporate these changes in the source code base and make them available in the future releases.

    All porting changes may be sent to the &XercesCName; developer mailing list .

    xerces-c-3.1.1/INSTALL0000644000175000017500000000013010766505252013276 0ustar borisborisSee doc/html/index.html for installation instructions and other relevant documentation. xerces-c-3.1.1/m4/0000755000175000017500000000000011363617717012577 5ustar borisborisxerces-c-3.1.1/m4/xerces_msgloader_selection.m40000644000175000017500000001020311276721713020423 0ustar borisborisdnl @synopsis XERCES_MSGLOADER_SELECTION dnl dnl Determine which msgloader to use. dnl dnl @category C dnl @author James Berry dnl @version 2005-05-23 dnl @license AllPermissive dnl dnl $Id: xerces_msgloader_selection.m4 835245 2009-11-12 05:57:31Z borisk $ AC_DEFUN([XERCES_MSGLOADER_SELECTION], [ ###################################################### # Test for availability of each msgloader on this host. # For each msgloader that's available, and hasn't been disabled, add it to our list. # If the msgloader has been explicitly "enable"d, then vote for it strongly, # in upper case. ###################################################### ml_list= # Check for inmemory msgloader AC_MSG_CHECKING([whether we support the InMemory MsgLoader]) list_add= AS_IF([true], [ AC_ARG_ENABLE([msgloader-inmemory], AS_HELP_STRING([--enable-msgloader-inmemory], [Enable InMemory MsgLoader support]), [AS_IF([test x"$enableval" = xyes], [list_add=INMEMORY])], [list_add=inmemory]) ]) AS_IF([test x"$list_add" != x], [ml_list="$ml_list -$list_add-"; AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)] ) # Check for ICU AC_REQUIRE([XERCES_ICU_PREFIX]) AC_MSG_CHECKING([whether we support the ICU MsgLoader]) list_add= AS_IF([test x"$xerces_cv_icu_present" != x"no"], [ AC_ARG_ENABLE([msgloader-icu], AS_HELP_STRING([--enable-msgloader-icu], [Enable ICU-based MsgLoader support]), [AS_IF([test x"$enableval" = xyes], [list_add=ICU])], [list_add=icu]) ]) AS_IF([test x"$list_add" != x], [ml_list="$ml_list -$list_add-"; AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)] ) # Check for iconv support no_iconv=false AC_CHECK_HEADERS([nl_types.h], [], [no_iconv=true]) AC_CHECK_FUNCS([catopen catclose catgets], [], [no_iconv=true]) AC_MSG_CHECKING([whether we can support the iconv MsgLoader]) list_add= AS_IF([! $no_iconv], [ AC_ARG_ENABLE([msgloader-iconv], AS_HELP_STRING([--enable-msgloader-iconv], [Enable Iconv-based MsgLoader support]), [AS_IF([test x"$enableval" = xyes], [list_add=ICONV])], [list_add=iconv]) ]) AS_IF([test x"$list_add" != x], [ml_list="$ml_list -$list_add-"; AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)] ) # TODO: Add test for additional msgloaders ###################################################### # Determine which msgloader to use. # # We do this in two passes. MsgLoaders that have been enabled with "yes", # and which start out in upper case, get the top priority on the first pass. # On the second pass, we consider those which are simply available, but # which were not "disable"d (these won't even be in our list). ###################################################### msgloader= az_lower=abcdefghijklmnopqrstuvwxyz az_upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ AC_MSG_CHECKING([for which MsgLoader to use (choices:$ml_list)]) for i in 1 2; do # Swap upper/lower case in the ml_list. Cannot use tr ranges # because of the portability issues. # ml_list=`echo $ml_list | tr "$az_lower$az_upper" "$az_upper$az_lower"` # Check for each msgloader, in implicit rank order case $ml_list in *-inmemory-*) AC_DEFINE([XERCES_USE_MSGLOADER_INMEMORY], 1, [Define to use the InMemory MsgLoader]) msgloader=inmemory break ;; *-icu-*) AC_DEFINE([XERCES_USE_MSGLOADER_ICU], 1, [Define to use the ICU-based MsgLoader]) msgloader=icu LIBS="${LIBS} ${xerces_cv_icu_libs}" break ;; *-iconv-*) AC_DEFINE([XERCES_USE_MSGLOADER_ICONV], 1, [Define to use the iconv-based MsgLoader]) msgloader=iconv break ;; *) AS_IF([test $i -eq 2], [ AC_MSG_RESULT([none]) AC_MSG_ERROR([Xerces cannot function without a MsgLoader]) ] ) ;; esac done if test x"$msgloader" != x; then AC_MSG_RESULT($msgloader) fi # Define the auto-make conditionals which determine what actually gets compiled # Note that these macros can't be executed conditionally, which is why they're here, not above. AM_CONDITIONAL([XERCES_USE_MSGLOADER_ICU], [test x"$msgloader" = xicu]) AM_CONDITIONAL([XERCES_USE_MSGLOADER_ICONV], [test x"$msgloader" = xiconv]) AM_CONDITIONAL([XERCES_USE_MSGLOADER_INMEMORY], [test x"$msgloader" = xinmemory]) ] ) xerces-c-3.1.1/m4/xerces_link_darwin_framework.m40000644000175000017500000000115610254305044020754 0ustar borisborisdnl @synopsis XERCES_LINK_DARWIN_FRAMEWORK dnl dnl Adds the specified framework to LIBS if it's not already there. dnl dnl @category C dnl @author James Berry dnl @version 2005-02-20 dnl @license AllPermissive dnl dnl $Id: xerces_link_darwin_framework.m4 190921 2005-06-16 14:18:12Z jberry $ AC_DEFUN([XERCES_LINK_DARWIN_FRAMEWORK], [ case $host_os in darwin*) test -z "${xerces_darwin_frameworks}" && xerces_darwin_frameworks="-" case ${xerces_darwin_frameworks} in *-$1-*) ;; *) xerces_darwin_frameworks="-$1${xerces_darwin_frameworks}" LIBS="-Wl,-framework -Wl,$1 $LIBS" ;; esac ;; esac ]) xerces-c-3.1.1/m4/cxx_have_std_libs.m40000644000175000017500000000161510254305044016515 0ustar borisborisdnl @synopsis AC_CXX_HAVE_STD_LIBS dnl dnl If the compiler supports ISO C++ standard library (i.e., can dnl include the files iostream, map, iomanip and cmath}), define dnl HAVE_STD_LIBS. dnl dnl @category Cxx dnl @author Todd Veldhuizen dnl @author Luc Maisonobe dnl @version 2004-02-04 dnl @license AllPermissive AC_DEFUN([AC_CXX_HAVE_STD_LIBS], [AC_CACHE_CHECK(whether the compiler supports ISO C++ standard library, ac_cv_cxx_have_std_libs, [AC_REQUIRE([AC_CXX_HAVE_NAMESPACES]) AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_COMPILE([#include #include #include #include #ifdef HAVE_NAMESPACES using namespace std; #endif],[return 0;], ac_cv_cxx_have_std_libs=yes, ac_cv_cxx_have_std_libs=no) AC_LANG_RESTORE ]) if test "$ac_cv_cxx_have_std_libs" = yes; then AC_DEFINE(HAVE_STD_LIBS,,[define if the compiler supports ISO C++ standard library]) fi ]) xerces-c-3.1.1/m4/xerces_curl_prefix.m40000644000175000017500000000600111302442455016715 0ustar borisborisdnl @synopsis XERCES_CURL_PREFIX dnl dnl Determines the prefix for libcurl dnl dnl @category C dnl @author James Berry dnl @version 2005-05-23 dnl @license AllPermissive dnl dnl $Id: xerces_curl_prefix.m4 883272 2009-11-23 08:17:49Z borisk $ AC_DEFUN([XERCES_CURL_PREFIX], [ AC_ARG_WITH([curl], [AS_HELP_STRING([--with-curl[[[[=DIR]]]]],[Specify location of libcurl])], [ if test x"$with_curl" = x"yes"; then with_curl= fi ], [with_curl=]) # Determine if curl is available AC_CACHE_VAL([xerces_cv_curl_present], [ xerces_cv_curl_present=no if test x"$with_curl" != x"no"; then # See if we were given a prefix. # if test -n "$with_curl"; then AC_PATH_PROG([curl_config], [curl-config],[],[$with_curl/bin]) else AC_PATH_PROG([curl_config], [curl-config],[]) fi if test -n "$curl_config"; then curl_flags=`$curl_config --cflags` curl_libs=`$curl_config --libs` else if test -n "$with_curl"; then curl_flags="-I$with_curl/include" curl_libs="-L$with_curl/lib -lcurl" else # Default compiler paths. # curl_flags= curl_libs=-lcurl fi fi # Check that the headers exist and can be compiled. # orig_cppflags=$CPPFLAGS if test -n "$curl_flags"; then CPPFLAGS="$curl_flags $CPPFLAGS" fi AC_CHECK_HEADER([curl/curl.h], [xerces_cv_curl_present=yes]) CPPFLAGS=$orig_cppflags if test x"$xerces_cv_curl_present" != x"no"; then # Check that the library can be linked. # AC_MSG_CHECKING([for curl_multi_init in -lcurl]) orig_ldflags=$LDFLAGS LDFLAGS="$curl_libs $LDFLAGS" AC_LINK_IFELSE( AC_LANG_SOURCE[[ #include #include #include int main () { curl_multi_init(); return 0; } ]], [], [xerces_cv_curl_present=no]) LDFLAGS=$orig_ldflags if test x"$xerces_cv_curl_present" != x"no"; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi fi fi ]) AC_CACHE_VAL([xerces_cv_curl_flags], [xerces_cv_curl_flags=$curl_flags]) AC_CACHE_VAL([xerces_cv_curl_libs], [xerces_cv_curl_libs=$curl_libs]) AC_SUBST([CURL_PRESENT], [$xerces_cv_curl_present]) AC_SUBST([CURL_FLAGS], [$xerces_cv_curl_flags]) AC_SUBST([CURL_LIBS], [$xerces_cv_curl_libs]) ] ) xerces-c-3.1.1/m4/xerces_pretty_make.m40000644000175000017500000000171611040354703016724 0ustar borisborisdnl @synopsis XERCES_PRETTY_MAKE dnl dnl Determines the whether we're doing a pretty make dnl --enable-pretty-make=yes is the default dnl dnl @category Xerces dnl @author Axel Weiss and James Berry dnl @version 2005-05-27 dnl @license AllPermissive dnl dnl $Id: xerces_pretty_make.m4 678145 2008-07-19 12:10:43Z borisk $ AC_DEFUN([XERCES_PRETTY_MAKE], [ AC_MSG_CHECKING([whether we'll generate prettier make output]) AC_ARG_ENABLE([pretty-make], AS_HELP_STRING([--disable-pretty-make], [Disable prettier make output (enabled by default)]), [AS_IF([test x"$enableval" = xyes], [xerces_pretty_make=yes], [xerces_pretty_make=no])], [xerces_pretty_make=yes]) AC_MSG_RESULT([$xerces_pretty_make]) # Define the auto-make conditionals which determine what actually gets compiled # Note that these macros can't be executed conditionally, which is why they're here, not above. AM_CONDITIONAL([XERCES_PRETTY_MAKE], [test x"$xerces_pretty_make" = xyes]) ] ) xerces-c-3.1.1/m4/cxx_have_bool.m40000644000175000017500000000155710254305044015652 0ustar borisborisdnl @synopsis AC_CXX_HAVE_BOOL dnl dnl If the compiler recognizes bool as a separate built-in type, define dnl HAVE_BOOL. Note that a typedef is not a separate type since you dnl cannot overload a function such that it accepts either the basic dnl type or the typedef. dnl dnl @category Cxx dnl @author Todd Veldhuizen dnl @author Luc Maisonobe dnl @version 2004-02-04 dnl @license AllPermissive AC_DEFUN([AC_CXX_HAVE_BOOL], [AC_CACHE_CHECK(whether the compiler recognizes bool as a built-in type, ac_cv_cxx_have_bool, [AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_COMPILE([ int f(int x){return 1;} int f(char x){return 1;} int f(bool x){return 1;} ],[bool b = true; return f(b);], ac_cv_cxx_have_bool=yes, ac_cv_cxx_have_bool=no) AC_LANG_RESTORE ]) if test "$ac_cv_cxx_have_bool" = yes; then AC_DEFINE(HAVE_BOOL,,[define if bool is a built-in type]) fi ]) xerces-c-3.1.1/m4/xerces_netaccessor_selection.m40000644000175000017500000001405011276721713020763 0ustar borisborisdnl @synopsis XERCES_NETACCESSOR_SELECTION dnl dnl Determines the which netaccessor to use dnl dnl @category C dnl @author James Berry dnl @version 2005-05-23 dnl @license AllPermissive dnl dnl $Id: xerces_netaccessor_selection.m4 835245 2009-11-12 05:57:31Z borisk $ AC_DEFUN([XERCES_NETACCESSOR_SELECTION], [ network=yes AC_ARG_ENABLE( [network], AS_HELP_STRING([--disable-network], [Disable network support (enabled by default)]), [AS_IF([test x"$enableval" = xno], [network=no])]) # If network is disabled we don't need to check any of the # netaccessors. # na_list= if test x"$network" = xyes; then # Checks for libraries. AC_CHECK_LIB([socket], [socket]) AC_CHECK_LIB([nsl], [gethostbyname]) ###################################################### # Test for availability of each netaccessor on this host. # For each netaccessor that's available, and hasn't been disabled, add it to our list. # If the netaccessor has been explicitly "enable"d, then vote for it strongly, # in upper case. ###################################################### AC_REQUIRE([XERCES_CURL_PREFIX]) AC_MSG_CHECKING([whether we can support the libcurl-based NetAccessor]) list_add= AS_IF([test x"$xerces_cv_curl_present" != x"no"], [ AC_ARG_ENABLE([netaccessor-curl], AS_HELP_STRING([--enable-netaccessor-curl], [Enable libcurl-based NetAccessor support]), [AS_IF([test x"$enableval" = xyes], [list_add=CURL])], [list_add=curl]) ]) AS_IF([test x"$list_add" != x], [na_list="$na_list -$list_add-"; AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)] ) AC_MSG_CHECKING([whether we can support the sockets-based NetAccessor]) list_add= AS_IF([test x"$ac_cv_header_sys_socket_h" = xyes], [AC_ARG_ENABLE([netaccessor-socket], AS_HELP_STRING([--enable-netaccessor-socket], [Enable sockets-based NetAccessor support]), [AS_IF([test x"$enableval" = xyes], [list_add=SOCKET])], [list_add=socket]) ]) AS_IF([test x"$list_add" != x], [na_list="$na_list -$list_add-"; AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)] ) # Check for OS-specific netaccessors case $host_os in darwin*) list_add= AC_MSG_CHECKING([whether we can support the CFURL NetAccessor (Mac OS X)]) AS_IF([test x"$ac_cv_header_CoreServices_CoreServices_h" = xyes], [ AC_ARG_ENABLE([netaccessor-cfurl], AS_HELP_STRING([--enable-netaccessor-cfurl], [Enable cfurl-based NetAccessor support]), [AS_IF([test x"$enableval" = xyes], [list_add=CFURL])], [list_add=cfurl]) ] ) AS_IF([test x"$list_add" != x], [na_list="$na_list -$list_add-"; AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)] ) ;; windows* | mingw*) list_add= no_winsock=false AC_CHECK_HEADERS([winsock2.h], [], [no_winsock=true]) AC_MSG_CHECKING([whether we can support the WinSock NetAccessor (Windows)]) AS_IF([! $no_winsock], [ AC_ARG_ENABLE([netaccessor-winsock], AS_HELP_STRING([--enable-netaccessor-winsock], [Enable winsock-based NetAccessor support]), [AS_IF([test x"$enableval" = xyes], [list_add=WINSOCK])], [list_add=winsock]) ]) AS_IF([test x"$list_add" != x], [na_list="$na_list -$list_add-"; AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)] ) ;; cygwin*) # Only add it to the list if the user explicitly asked # for it. # list_add= no_winsock=false AC_CHECK_HEADERS([winsock2.h], [], [no_winsock=true]) AC_MSG_CHECKING([whether to use the WinSock NetAccessor (Windows)]) AS_IF([! $no_winsock], [ AC_ARG_ENABLE([netaccessor-winsock], AS_HELP_STRING([--enable-netaccessor-winsock], [Enable winsock-based NetAccessor support]), [AS_IF([test x"$enableval" = xyes], [list_add=WINSOCK])]) ]) AS_IF([test x"$list_add" != x], [na_list="$na_list -$list_add-"; AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)] ) ;; esac ###################################################### # Determine which netaccessor to use. # # We do this in two passes. Accessors that have been enabled with "yes", # and which start out in upper case, get the top priority on the first pass. # On the second pass, we consider those which are simply available, but # which were not "disable"d (these won't even be in our list). ###################################################### netaccessor= az_lower=abcdefghijklmnopqrstuvwxyz az_upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ AC_MSG_CHECKING([for which NetAccessor to use (choices:$na_list)]) for i in 1 2; do # Swap upper/lower case in the na_list. Cannot use tr ranges # because of the portability issues. # na_list=`echo $na_list | tr "$az_lower$az_upper" "$az_upper$az_lower"` # Check for each netaccessor, in implicit rank order case $na_list in *-curl-*) netaccessor=curl AC_DEFINE([XERCES_USE_NETACCESSOR_CURL], 1, [Define to use the CURL NetAccessor]) LIBS="${LIBS} ${xerces_cv_curl_libs}" break ;; *-winsock-*) netaccessor=winsock AC_DEFINE([XERCES_USE_NETACCESSOR_WINSOCK], 1, [Define to use the WinSock NetAccessor]) break ;; *-socket-*) netaccessor=socket AC_DEFINE([XERCES_USE_NETACCESSOR_SOCKET], 1, [Define to use the Sockets-based NetAccessor]) break ;; *-cfurl-*) netaccessor=cfurl AC_DEFINE([XERCES_USE_NETACCESSOR_CFURL], 1, [Define to use the Mac OS X CFURL NetAccessor]) XERCES_LINK_DARWIN_FRAMEWORK([CoreServices]) break ;; *) AS_IF([test $i -eq 2], [ AC_MSG_RESULT([none available; there will be no network access!!!]) ] ) ;; esac done if test x"$netaccessor" != x; then AC_MSG_RESULT($netaccessor) fi else # network netaccessor=disabled # for the report fi # Define the auto-make conditionals which determine what actually gets compiled # Note that these macros can't be executed conditionally, which is why they're here, not above. AM_CONDITIONAL([XERCES_USE_NETACCESSOR_CURL], [test x"$netaccessor" = xcurl]) AM_CONDITIONAL([XERCES_USE_NETACCESSOR_CFURL], [test x"$netaccessor" = xcfurl]) AM_CONDITIONAL([XERCES_USE_NETACCESSOR_WINSOCK], [test x"$netaccessor" = xwinsock]) AM_CONDITIONAL([XERCES_USE_NETACCESSOR_SOCKET], [test x"$netaccessor" = xsocket]) ] ) xerces-c-3.1.1/m4/xerces_no_threads.m40000644000175000017500000000126711040354703016527 0ustar borisborisdnl @synopsis XERCES_NO_THREADS dnl dnl Determines the whether we've been configured for no threads, dnl or whether threads are not used for some other reason. dnl dnl @category C dnl @author James Berry dnl @version 2005-05-23 dnl @license AllPermissive dnl dnl $Id: xerces_no_threads.m4 678145 2008-07-19 12:10:43Z borisk $ AC_DEFUN([XERCES_NO_THREADS], [ AC_ARG_ENABLE([threads], AS_HELP_STRING([--disable-threads], [Disable threads (enabled by default)]), [AS_IF([test x"$enableval" = xno], [xerces_cv_no_threads=yes])], [xerces_cv_no_threads=no]) AS_IF([test x$xerces_cv_no_threads = xyes], [AC_DEFINE([APP_NO_THREADS], 1, [Define to specify no threading is used])]) ] ) xerces-c-3.1.1/m4/xerces_path_delimiters.m40000644000175000017500000000123311037066156017557 0ustar borisborisdnl @synopsis XERCES_PATH_DELIMITERS dnl dnl Configures the path delimiter characters. dnl dnl @category C dnl @author James Berry dnl @version 2005-06-07 dnl @license AllPermissive dnl dnl $Id: xerces_path_delimiters.m4 676848 2008-07-15 09:22:54Z borisk $ AC_DEFUN([XERCES_PATH_DELIMITERS], [ AC_MSG_CHECKING([for which path delimiter characters to accept]) dnl We accept / in all cases. path_delims=/ case $host_os in msdos* | windows* | mingw*) AC_DEFINE([XERCES_PATH_DELIMITER_BACKSLASH], 1, [Define to use backslash as an extra path delimiter character]) path_delims="${path_delims}\\" ;; esac AC_MSG_RESULT($path_delims) ] ) xerces-c-3.1.1/m4/xerces_int_types.m40000644000175000017500000001313411276506011016415 0ustar borisborisdnl @synopsis XERCES_INT_TYPES dnl dnl Determines what int types to use for various dnl Xerces standard integer types. dnl dnl @category C dnl @author James Berry dnl @version 2005-06-07 dnl @license AllPermissive dnl dnl $Id: xerces_int_types.m4 834826 2009-11-11 10:03:53Z borisk $ AC_DEFUN([XERCES_INT_TYPES], [ AC_CHECK_HEADERS([inttypes.h]) AC_CHECK_SIZEOF(short) AC_CHECK_SIZEOF(int) AC_CHECK_SIZEOF(long) AC_CHECK_SIZEOF(long long) AC_CHECK_SIZEOF(__int64) AC_CHECK_TYPE(int16_t) AC_CHECK_TYPE(int32_t) AC_CHECK_TYPE(int64_t) AC_CHECK_TYPE(uint16_t) AC_CHECK_TYPE(uint32_t) AC_CHECK_TYPE(uint64_t) # # Select a signed 16 bit integer type # AC_CACHE_CHECK([for an appropriate signed 16 bit integer type], [xerces_cv_type_s16bit_int], [ AS_IF([test x$ac_cv_header_inttypes_h = xyes && test x$ac_cv_type_int16_t = xyes], [xerces_cv_type_s16bit_int=int16_t], [ case $ac_cv_sizeof_int in 2*) xerces_cv_type_s16bit_int=int;; *) case $ac_cv_sizeof_short in 2*) xerces_cv_type_s16bit_int=short;; *) AC_MSG_ERROR([Couldn't find a signed 16 bit int type]);; esac ;; esac ]) ]) # # Select an unsigned 16 bit integer type # AC_CACHE_CHECK([for an appropriate unsigned 16 bit integer type], [xerces_cv_type_u16bit_int], [ AS_IF([test x$ac_cv_header_inttypes_h = xyes && test x$ac_cv_type_uint16_t = xyes], [xerces_cv_type_u16bit_int=uint16_t], [ case $ac_cv_sizeof_int in 2*) xerces_cv_type_u16bit_int="unsigned int";; *) case $ac_cv_sizeof_short in 2*) xerces_cv_type_u16bit_int="unsigned short";; *) AC_MSG_ERROR([Couldn't find an unsigned 16 bit int type]);; esac ;; esac ]) ]) # # Select a signed 32 bit integer type # AC_CACHE_CHECK([for an appropriate signed 32 bit integer type], [xerces_cv_type_s32bit_int], [ AS_IF([test x$ac_cv_header_inttypes_h = xyes && test x$ac_cv_type_int32_t = xyes], [xerces_cv_type_s32bit_int=int32_t], [ case $ac_cv_sizeof_int in 4*) xerces_cv_type_s32bit_int=int;; *) case $ac_cv_sizeof_long in 4*) xerces_cv_type_s32bit_int=long;; *) AC_MSG_ERROR([Couldn't find a signed 32 bit int type]);; esac ;; esac ]) ]) # # Select an unsigned 32 bit integer type # AC_CACHE_CHECK([for an appropriate unsigned 32 bit integer type], [xerces_cv_type_u32bit_int], [ AS_IF([test x$ac_cv_header_inttypes_h = xyes && test x$ac_cv_type_uint32_t = xyes], [xerces_cv_type_u32bit_int=uint32_t], [ case $ac_cv_sizeof_int in 4*) xerces_cv_type_u32bit_int="unsigned int";; *) case $ac_cv_sizeof_long in 4*) xerces_cv_type_u32bit_int="unsigned long";; *) AC_MSG_ERROR([Couldn't find an unsigned 32 bit int type]);; esac ;; esac ]) ]) # # Select an signed 64 bit integer type # AC_CACHE_CHECK([for an appropriate signed 64 bit integer type], [xerces_cv_type_s64bit_int], [ AS_IF([test x$ac_cv_header_inttypes_h = xyes && test x$ac_cv_type_int64_t = xyes], [ xerces_cv_type_s64bit_int=int64_t xerces_cv_sizeof_int64=8 ], [ case $ac_cv_sizeof_int in 8*) xerces_cv_type_s64bit_int="int" xerces_cv_sizeof_int64=8 ;; *) case $ac_cv_sizeof_long in 8*) xerces_cv_type_s64bit_int="long" xerces_cv_sizeof_int64=8 ;; *) case $ac_cv_sizeof_long_long in 8*) xerces_cv_type_s64bit_int="long long" xerces_cv_sizeof_int64=8 ;; *) case $ac_cv_sizeof___int64 in 8*) xerces_cv_type_s64bit_int="__int64" xerces_cv_sizeof_int64=8 ;; *) xerces_cv_type_s64bit_int=$xerces_cv_type_s32bit_int xerces_cv_sizeof_int64=4 ;; esac ;; esac ;; esac ;; esac ]) ]) # # Select an unsigned 64 bit integer type # AC_CACHE_CHECK([for an appropriate unsigned 64 bit integer type], [xerces_cv_type_u64bit_int], [ AS_IF([test x$ac_cv_header_inttypes_h = xyes && test x$ac_cv_type_uint64_t = xyes], [xerces_cv_type_u64bit_int=uint64_t], [ case $ac_cv_sizeof_int in 8*) xerces_cv_type_u64bit_int="unsigned int";; *) case $ac_cv_sizeof_long in 8*) xerces_cv_type_u64bit_int="unsigned long";; *) case $ac_cv_sizeof_long_long in 8*) xerces_cv_type_u64bit_int="unsigned long long";; *) case $ac_cv_sizeof___int64 in 8*) xerces_cv_type_u64bit_int="unsigned __int64";; *) xerces_cv_type_u64bit_int=$xerces_cv_type_u32bit_int;; esac ;; esac ;; esac ;; esac ]) ]) AC_DEFINE_UNQUOTED([XERCES_S16BIT_INT], $xerces_cv_type_s16bit_int, [An appropriate signed 16 bit integer type]) AC_DEFINE_UNQUOTED([XERCES_U16BIT_INT], $xerces_cv_type_u16bit_int, [An appropriate unsigned 16 bit integer type]) AC_DEFINE_UNQUOTED([XERCES_S32BIT_INT], $xerces_cv_type_s32bit_int, [An appropriate signed 32 bit integer type]) AC_DEFINE_UNQUOTED([XERCES_U32BIT_INT], $xerces_cv_type_u32bit_int, [An appropriate unsigned 32 bit integer type]) AC_DEFINE_UNQUOTED([XERCES_S64BIT_INT], $xerces_cv_type_s64bit_int, [An appropriate signed 64 bit integer type]) AC_DEFINE_UNQUOTED([XERCES_U64BIT_INT], $xerces_cv_type_u64bit_int, [An appropriate unsigned 64 bit integer type]) ] ) xerces-c-3.1.1/m4/ltoptions.m40000644000175000017500000002724211363617717015103 0ustar borisboris# 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 ## --------------------------------- ## ## Macros to handle LT_INIT 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], []) ## ----------------- ## ## LTDL_INIT Options ## ## ----------------- ## 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])]) xerces-c-3.1.1/m4/xerces_icu_prefix.m40000644000175000017500000000727011276721713016550 0ustar borisborisdnl @synopsis XERCES_ICU_PREFIX dnl dnl Determines the prefix for icu dnl dnl @category C dnl @author James Berry dnl @version 2005-05-23 dnl @license AllPermissive dnl dnl $Id: xerces_icu_prefix.m4 835245 2009-11-12 05:57:31Z borisk $ AC_DEFUN([XERCES_ICU_PREFIX], [ AC_ARG_WITH([icu], [AS_HELP_STRING([--with-icu[[[[=DIR]]]]],[Specify location of icu])], [ if test x"$with_icu" = x"yes"; then with_icu= fi ], [with_icu=]) # Determine if icu is available AC_CACHE_VAL([xerces_cv_icu_present], [ xerces_cv_icu_present=no if test x"$with_icu" != x"no"; then # See if we were given a prefix. # if test -n "$with_icu"; then AC_PATH_PROG([icu_config], [icu-config],[],[$with_icu/bin]) else AC_PATH_PROG([icu_config], [icu-config],[]) fi # Add trailing slash to bin and sbin vars so that we # can use them uniformly whether they are empty or not. # if test -n "$icu_config"; then icu_flags=`$icu_config --cppflags-searchpath` icu_libs=`$icu_config --ldflags` icu_bin=`$icu_config --bindir` icu_sbin=`$icu_config --sbindir` if test -n "$icu_bin"; then icu_bin="$icu_bin/" fi if test -n "$icu_sbin"; then icu_sbin="$icu_sbin/" fi else if test -n "$with_icu"; then icu_flags="-I$with_icu/include" icu_libs="-L$with_icu/lib -licuuc -licudata" icu_bin="$with_icu/bin/" icu_sbin="$with_icu/sbin/" else # Default compiler paths. # icu_flags= icu_libs="-licuuc -licudata" icu_bin= icu_sbin= fi fi # Check that the headers exist and can be compiled. # orig_cppflags=$CPPFLAGS if test -n "$icu_flags"; then CPPFLAGS="$icu_flags $CPPFLAGS" fi AC_CHECK_HEADER([unicode/ucnv.h], [xerces_cv_icu_present=yes]) if test x"$xerces_cv_icu_present" != x"no"; then # Check that the library can be linked. # AC_MSG_CHECKING([for ucnv_open in -licuuc]) orig_ldflags=$LDFLAGS LDFLAGS="$icu_libs $LDFLAGS" AC_LINK_IFELSE( AC_LANG_SOURCE[[ #include int main () { ucnv_open (0, 0); return 0; } ]], [], [xerces_cv_icu_present=no]) LDFLAGS=$orig_ldflags if test x"$xerces_cv_icu_present" != x"no"; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi fi CPPFLAGS=$orig_cppflags fi ]) AC_CACHE_VAL([xerces_cv_icu_flags], [xerces_cv_icu_flags=$icu_flags]) AC_CACHE_VAL([xerces_cv_icu_libs], [xerces_cv_icu_libs=$icu_libs]) AC_CACHE_VAL([xerces_cv_icu_bin], [xerces_cv_icu_bin=$icu_bin]) AC_CACHE_VAL([xerces_cv_icu_sbin], [xerces_cv_icu_sbin=$icu_sbin]) AC_SUBST([ICU_PRESENT], [$xerces_cv_icu_present]) AC_SUBST([ICU_FLAGS], [$xerces_cv_icu_flags]) AC_SUBST([ICU_LIBS], [$xerces_cv_icu_libs]) AC_SUBST([ICU_BIN], [$xerces_cv_icu_bin]) AC_SUBST([ICU_SBIN], [$xerces_cv_icu_sbin]) ] ) xerces-c-3.1.1/m4/acx_pthread.m40000644000175000017500000002344010763757324015330 0ustar borisborisdnl dnl NOTE: This file was modified for Xerces-C++. See the comments dnl starting with 'XERCES' for more information. dnl dnl @synopsis ACX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) dnl dnl @summary figure out how to build C programs using POSIX threads dnl dnl This macro figures out how to build C programs using POSIX threads. dnl It sets the PTHREAD_LIBS output variable to the threads library and dnl linker flags, and the PTHREAD_CFLAGS output variable to any special dnl C compiler flags that are needed. (The user can also force certain dnl compiler flags/libs to be tested by setting these environment dnl variables.) dnl dnl Also sets PTHREAD_CC to any special C compiler that is needed for dnl multi-threaded programs (defaults to the value of CC otherwise). dnl (This is necessary on AIX to use the special cc_r compiler alias.) dnl dnl NOTE: You are assumed to not only compile your program with these dnl flags, but also link it with them as well. e.g. you should link dnl with $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS dnl $LIBS dnl dnl If you are only building threads programs, you may wish to use dnl these variables in your default LIBS, CFLAGS, and CC: dnl dnl LIBS="$PTHREAD_LIBS $LIBS" dnl CFLAGS="$CFLAGS $PTHREAD_CFLAGS" dnl CC="$PTHREAD_CC" dnl dnl In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute dnl constant has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to dnl that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX). dnl dnl ACTION-IF-FOUND is a list of shell commands to run if a threads dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands to dnl run it if it is not found. If ACTION-IF-FOUND is not specified, the dnl default action will define HAVE_PTHREAD. dnl dnl Please let the authors know if this macro fails on any platform, or dnl if you have any other suggestions or comments. This macro was based dnl on work by SGJ on autoconf scripts for FFTW (www.fftw.org) (with dnl help from M. Frigo), as well as ac_pthread and hb_pthread macros dnl posted by Alejandro Forero Cuervo to the autoconf macro repository. dnl We are also grateful for the helpful feedback of numerous users. dnl dnl @category InstalledPackages dnl @author Steven G. Johnson dnl @version 2006-05-29 dnl @license GPLWithACException AC_DEFUN([ACX_PTHREAD], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_LANG_SAVE AC_LANG_C acx_pthread_ok=no # We used to check for pthread.h first, but this fails if pthread.h # requires special compiler flags (e.g. on True64 or Sequent). # It gets checked for in the link test anyway. # First of all, check if the user has set any of the PTHREAD_LIBS, # etcetera environment variables, and if threads linking works using # them: if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS]) AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes) AC_MSG_RESULT($acx_pthread_ok) if test x"$acx_pthread_ok" = xno; then PTHREAD_LIBS="" PTHREAD_CFLAGS="" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" fi # We must check for the threads library under a number of different # names; the ordering is very important because some systems # (e.g. DEC) have both -lpthread and -lpthreads, where one of the # libraries is broken (non-POSIX). # Create a list of thread flags to try. Items starting with a "-" are # C compiler flags, and other items are library names, except for "none" # which indicates that we try without any flags at all, and "pthread-config" # which is a program returning the flags for the Pth emulation library. # XERCES: On GNU/Linux with gcc both -pthread and -lpthread are valid. # However, libtool links libraries with -nostdlib which results in # -pthread being stripped from the linker command line. To resolve # this we move pthread from after -mthreads to after pthreads. # acx_pthread_flags="pthreads pthread none -Kthread -kthread lthread -pthread -pthreads -mthreads --thread-safe -mt pthread-config" # The ordering *is* (sometimes) important. Some notes on the # individual items follow: # pthreads: AIX (must check this before -lpthread) # none: in case threads are in libc; should be tried before -Kthread and # other compiler flags to prevent continual compiler warnings # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) # -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) # -pthreads: Solaris/gcc # -mthreads: Mingw32/gcc, Lynx/gcc # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it # doesn't hurt to check since this sometimes defines pthreads too; # also defines -D_REENTRANT) # ... -mt is also the pthreads flag for HP/aCC # pthread: Linux, etcetera # --thread-safe: KAI C++ # pthread-config: use pthread-config program (for GNU Pth library) case "${host_cpu}-${host_os}" in *solaris*) # On Solaris (at least, for some versions), libc contains stubbed # (non-functional) versions of the pthreads routines, so link-based # tests will erroneously succeed. (We need to link with -pthreads/-mt/ # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather # a function called by this macro, so we could check for that, but # who knows whether they'll stub that too in a future libc.) So, # we'll just look for -pthreads and -lpthread first: acx_pthread_flags="-pthreads pthread -mt -pthread $acx_pthread_flags" ;; esac if test x"$acx_pthread_ok" = xno; then for flag in $acx_pthread_flags; do case $flag in none) AC_MSG_CHECKING([whether pthreads work without any flags]) ;; -*) AC_MSG_CHECKING([whether pthreads work with $flag]) PTHREAD_CFLAGS="$flag" ;; pthread-config) AC_CHECK_PROG(acx_pthread_config, pthread-config, yes, no) if test x"$acx_pthread_config" = xno; then continue; fi PTHREAD_CFLAGS="`pthread-config --cflags`" PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" ;; *) AC_MSG_CHECKING([for the pthreads library -l$flag]) PTHREAD_LIBS="-l$flag" ;; esac save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Check for various functions. We must include pthread.h, # since some functions may be macros. (On the Sequent, we # need a special flag -Kthread to make this header compile.) # We check for pthread_join because it is in -lpthread on IRIX # while pthread_create is in libc. We check for pthread_attr_init # due to DEC craziness with -lpthreads. We check for # pthread_cleanup_push because it is one of the few pthread # functions on Solaris that doesn't have a non-functional libc stub. # We try pthread_create on general principles. # XERCES: Add tests for pthread_mutexattr_init and # pthread_mutexattr_destroy. # AC_TRY_LINK([#include ], [pthread_t th; pthread_join(th, 0); pthread_attr_init(0); pthread_cleanup_push(0, 0); pthread_create(0,0,0,0); pthread_cleanup_pop(0); pthread_mutexattr_init(0); pthread_mutexattr_destroy(0);], [acx_pthread_ok=yes]) LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" AC_MSG_RESULT($acx_pthread_ok) if test "x$acx_pthread_ok" = xyes; then break; fi PTHREAD_LIBS="" PTHREAD_CFLAGS="" done fi # Various other checks: if test "x$acx_pthread_ok" = xyes; then save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. AC_MSG_CHECKING([for joinable pthread attribute]) attr_name=unknown for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do AC_TRY_LINK([#include ], [int attr=$attr; return attr;], [attr_name=$attr; break]) done AC_MSG_RESULT($attr_name) if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name, [Define to necessary symbol if this constant uses a non-standard name on your system.]) fi AC_MSG_CHECKING([if more special flags are required for pthreads]) flag=no case "${host_cpu}-${host_os}" in *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";; *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; esac AC_MSG_RESULT(${flag}) if test "x$flag" != xno; then PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" # More AIX lossage: must compile with xlc_r or cc_r if test x"$GCC" != xyes; then AC_CHECK_PROGS(PTHREAD_CC, xlc_r cc_r, ${CC}) else PTHREAD_CC=$CC fi else PTHREAD_CC="$CC" fi AC_SUBST(PTHREAD_LIBS) AC_SUBST(PTHREAD_CFLAGS) AC_SUBST(PTHREAD_CC) # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test x"$acx_pthread_ok" = xyes; then ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1]) : else acx_pthread_ok=no $2 fi AC_LANG_RESTORE ])dnl ACX_PTHREAD xerces-c-3.1.1/m4/cxx_have_std_namespace.m40000644000175000017500000000136010254305044017515 0ustar borisborisdnl @synopsis AC_CXX_HAVE_STD_NAMESPACE dnl dnl If the compiler supports the std namespace, define dnl HAVE_STD_NAMESPACE. dnl dnl @category Cxx dnl @author Todd Veldhuizen dnl @author Luc Maisonobe dnl @version 2004-02-04 dnl @license AllPermissive AC_DEFUN([AC_CXX_HAVE_STD_NAMESPACE], [AC_CACHE_CHECK(whether the compiler supports the std namespace, ac_cv_cxx_have_std_namespace, [AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_COMPILE([#include std::istream& is = std::cin; ],[return 0;], ac_cv_cxx_have_std_namespace=yes, ac_cv_cxx_have_std_namespace=no) AC_LANG_RESTORE ]) if test "$ac_cv_cxx_have_std_namespace" = yes; then AC_DEFINE(HAVE_STD_NAMESPACE,,[define if the compiler supports the std namespace]) fi ]) xerces-c-3.1.1/m4/libtool.m40000644000175000017500000077437411363617717014533 0ustar borisboris# 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 ## ------------------------------------- ## ## Accumulate code for creating libtool. ## ## ------------------------------------- ## # 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], [[!?.]$], [], [.]) )]) ## ------------------------ ## ## FIXME: Eliminate VARNAME ## ## ------------------------ ## # _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: # # ='`$ECHO "X$" | $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 ." 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 #endif #include #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.so # instead of lib.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 &1 /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 ;; linux* | k*bsd*-gnu) _LT_TAGVAR(link_all_deplibs, $1)=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 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 ## 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... 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 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 ## 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... 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 ]) xerces-c-3.1.1/m4/cxx_have_lstring.m40000644000175000017500000000122710254305044016373 0ustar borisborisdnl @synopsis AC_CXX_HAVE_LSTRING dnl dnl If the compiler can prevent names clashes using namespaces, define dnl HAVE_LSTRING. dnl dnl @category Cxx dnl @author James Berry dnl @version 2005-02-21 dnl @license AllPermissive AC_DEFUN([AC_CXX_HAVE_LSTRING], [AC_CACHE_CHECK([whether the compiler implements L"widestring"], ac_cv_cxx_have_lstring, [AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_COMPILE_IFELSE( AC_LANG_SOURCE( [[const wchar_t* s=L"wide string";]]), ac_cv_cxx_have_lstring=yes, ac_cv_cxx_have_lstring=no) AC_LANG_RESTORE ]) if test "$ac_cv_cxx_have_lstring" = yes; then AC_DEFINE(HAVE_LSTRING,,[define if the compiler implements L"widestring"]) fi ]) xerces-c-3.1.1/m4/cxx_have_namespaces.m40000644000175000017500000000141310254305044017025 0ustar borisborisdnl @synopsis AC_CXX_HAVE_NAMESPACES dnl dnl If the compiler can prevent names clashes using namespaces, define dnl HAVE_NAMESPACES. dnl dnl @category Cxx dnl @author Todd Veldhuizen dnl @author Luc Maisonobe dnl @version 2004-02-04 dnl @license AllPermissive AC_DEFUN([AC_CXX_HAVE_NAMESPACES], [AC_CACHE_CHECK(whether the compiler implements namespaces, ac_cv_cxx_have_namespaces, [AC_LANG_SAVE AC_LANG_CPLUSPLUS AC_TRY_COMPILE([namespace Outer { namespace Inner { int i = 0; }}], [using namespace Outer::Inner; return i;], ac_cv_cxx_have_namespaces=yes, ac_cv_cxx_have_namespaces=no) AC_LANG_RESTORE ]) if test "$ac_cv_cxx_have_namespaces" = yes; then AC_DEFINE(HAVE_NAMESPACES,,[define if the compiler implements namespaces]) fi ]) xerces-c-3.1.1/m4/xerces_mutexmgr_selection.m40000644000175000017500000000367410517367317020337 0ustar borisborisdnl @synopsis XERCES_MUTEXMGR_SELECTION dnl dnl Determines the which XMLMutexMgr to use dnl dnl @category C dnl @author James Berry dnl @version 2005-05-25 dnl @license AllPermissive dnl dnl $Id: xerces_mutexmgr_selection.m4 467302 2006-10-24 10:45:35Z amassari $ AC_DEFUN([XERCES_MUTEXMGR_SELECTION], [ AC_REQUIRE([XERCES_NO_THREADS]) AC_REQUIRE([ACX_PTHREAD]) AC_MSG_CHECKING([for which Mutex Manager to use]) mutexmgr= # If no threads is specified, use the NoThread Mutex Mgr AS_IF([test x$xerces_cv_no_threads = xyes], [ mutexmgr=NoThreads AC_DEFINE([XERCES_USE_MUTEXMGR_NOTHREAD], 1, [Define to use the NoThread mutex mgr]) ]) # Platform specific checks AS_IF([test -z "$mutexmgr"], [ case $host_os in windows* | cygwin* | mingw*) mutexmgr=Windows; AC_DEFINE([XERCES_USE_MUTEXMGR_WINDOWS], 1, [Define to use the Windows mutex mgr]) case $host_os in mingw*) CXXFLAGS="${CXXFLAGS} -mthreads" ;; esac ;; esac ]) # Fall back to using posix mutex id we can AS_IF([test -z "$mutexmgr" && test x$acx_pthread_ok = xyes], [ mutexmgr=POSIX; AC_DEFINE([XERCES_USE_MUTEXMGR_POSIX], 1, [Define to use the POSIX mutex mgr]) # Set additional flags for link and compile LIBS="${LIBS} ${PTHREAD_LIBS}" CXXFLAGS="${CXXFLAGS} ${PTHREAD_CFLAGS}" ]) # If we still didn't find a mutex package, bail AS_IF([test -z "$mutexmgr"], [AC_MSG_ERROR([Xerces cannot function without mutex support. You may want to --disable-threads.])]) AC_MSG_RESULT($mutexmgr) # Define the auto-make conditionals which determine what actually gets compiled # Note that these macros can't be executed conditionally, which is why they're here, not above. AM_CONDITIONAL([XERCES_USE_MUTEXMGR_NOTHREAD], [test x"$mutexmgr" = xNoThreads]) AM_CONDITIONAL([XERCES_USE_MUTEXMGR_POSIX], [test x"$mutexmgr" = xPOSIX]) AM_CONDITIONAL([XERCES_USE_MUTEXMGR_WINDOWS], [test x"$mutexmgr" = xWindows]) ] ) xerces-c-3.1.1/m4/ltversion.m40000644000175000017500000000127511363617717015073 0ustar borisboris# 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) ]) xerces-c-3.1.1/m4/xerces_transcoder_selection.m40000644000175000017500000001613711276721713020626 0ustar borisborisdnl @synopsis XERCES_TRANSCODER_SELECTION dnl dnl Determines the which transcoder to use dnl dnl @category C dnl @author James Berry dnl @version 2005-05-23 dnl @license AllPermissive dnl dnl $Id: xerces_transcoder_selection.m4 835245 2009-11-12 05:57:31Z borisk $ AC_DEFUN([XERCES_TRANSCODER_SELECTION], [ ###################################################### # Test for availability of each transcoder on this host. # For each transcoder that's available, and hasn't been disabled, add it to our list. # If the transcoder has been explicitly "enable"d, then vote for it strongly, # in upper case. ###################################################### tc_list= # Check for GNU iconv support no_GNUiconv=false AC_CHECK_HEADERS([iconv.h wchar.h string.h stdlib.h stdio.h ctype.h locale.h errno.h], [], [no_GNUiconv=true]) # The code in iconv needs just on of these include files AC_CHECK_HEADER([endian.h], [], [ AC_CHECK_HEADER([machine/endian.h], [], [ AC_CHECK_HEADER([arpa/nameser_compat.h], [], [no_GNUiconv=true]) ]) ]) AC_CHECK_FUNCS([iconv_open iconv_close iconv], [], [no_GNUiconv=true]) AC_MSG_CHECKING([whether we can support the GNU iconv Transcoder]) list_add= AS_IF([! $no_GNUiconv], [ AC_ARG_ENABLE([transcoder-gnuiconv], AS_HELP_STRING([--enable-transcoder-gnuiconv], [Enable GNU iconv-based transcoder support]), [AS_IF([test x"$enableval" = xyes], [list_add=GNUICONV])], [list_add=gnuiconv]) ]) AS_IF([test x"$list_add" != x], [tc_list="$tc_list -$list_add-"; AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)] ) # Check for iconv support no_iconv=false AC_CHECK_HEADERS([wchar.h], [], [no_iconv=true]) AC_CHECK_FUNCS([mblen wcstombs mbstowcs], [], [no_iconv=true]) AC_MSG_CHECKING([whether we can support the iconv Transcoder]) list_add= AS_IF([! $no_iconv], [ AC_ARG_ENABLE([transcoder-iconv], AS_HELP_STRING([--enable-transcoder-iconv], [Enable iconv-based transcoder support]), [AS_IF([test x"$enableval" = xyes], [list_add=ICONV])], [list_add=iconv]) ]) AS_IF([test x"$list_add" != x], [tc_list="$tc_list -$list_add-"; AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)] ) # Check for ICU AC_REQUIRE([XERCES_ICU_PREFIX]) AC_MSG_CHECKING([whether we can support the ICU Transcoder]) list_add= AS_IF([test x"$xerces_cv_icu_present" != x"no"], [ AC_ARG_ENABLE([transcoder-icu], AS_HELP_STRING([--enable-transcoder-icu], [Enable icu-based transcoder support]), [AS_IF([test x"$enableval" = xyes], [list_add=ICU])], [list_add=icu]) ]) AS_IF([test x"$list_add" != x], [tc_list="$tc_list -$list_add-"; AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)] ) # Check for platform-specific transcoders list_add= case $host_os in darwin*) AC_MSG_CHECKING([whether we can support the MacOSUnicodeConverter Transcoder]) AS_IF([test x"$ac_cv_header_CoreServices_CoreServices_h" = xyes], [ AC_ARG_ENABLE([transcoder-macosunicodeconverter], AS_HELP_STRING([--enable-transcoder-macosunicodeconverter], [Enable MacOSUnicodeConverter-based transcoder support]), [AS_IF([test x"$enableval" = xyes], [list_add=MACOSUNICODECONVERTER])], [list_add=macosunicodeconverter]) ]) AS_IF([test x"$list_add" != x], [tc_list="$tc_list -$list_add-"; AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)] ) ;; windows* | mingw*) AC_MSG_CHECKING([whether we can support the Windows Transcoder]) AC_ARG_ENABLE([transcoder-windows], AS_HELP_STRING([--enable-transcoder-windows], [Enable Windows-based transcoder support]), [AS_IF([test x"$enableval" = xyes], [list_add=WINDOWS])], [list_add=windows]) AS_IF([test x"$list_add" != x], [tc_list="$tc_list -$list_add-"; AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)] ) ;; cygwin*) # Only add it to the list if the user explicitly asked # for it. # AC_MSG_CHECKING([whether to use the Windows Transcoder]) AC_ARG_ENABLE([transcoder-windows], AS_HELP_STRING([--enable-transcoder-windows], [Enable Windows-based transcoder support]), [AS_IF([test x"$enableval" = xyes], [list_add=WINDOWS])]) AS_IF([test x"$list_add" != x], [tc_list="$tc_list -$list_add-"; AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)] ) ;; esac # TODO: Tests for additional transcoders ###################################################### # Determine which transcoder to use. # # We do this in two passes. Transcoders that have been enabled with "yes", # and which start out in upper case, get the top priority on the first pass. # On the second pass, we consider those which are simply available, but # which were not "disable"d (these won't even be in our list). ###################################################### transcoder= az_lower=abcdefghijklmnopqrstuvwxyz az_upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ AC_MSG_CHECKING([for which Transcoder to use (choices:$tc_list)]) for i in 1 2; do # Swap upper/lower case in the tc_list. Cannot use tr ranges # because of the portability issues. # tc_list=`echo $tc_list | tr "$az_lower$az_upper" "$az_upper$az_lower"` # Check for each transcoder, in implicit rank order case $tc_list in *-icu-*) transcoder=icu AC_DEFINE([XERCES_USE_TRANSCODER_ICU], 1, [Define to use the ICU-based transcoder]) LIBS="${LIBS} ${xerces_cv_icu_libs}" break ;; *-macosunicodeconverter-*) transcoder=macosunicodeconverter AC_DEFINE([XERCES_USE_TRANSCODER_MACOSUNICODECONVERTER], 1, [Define to use the Mac OS UnicodeConverter-based transcoder]) XERCES_LINK_DARWIN_FRAMEWORK([CoreServices]) break ;; *-gnuiconv-*) transcoder=gnuiconv AC_DEFINE([XERCES_USE_TRANSCODER_GNUICONV], 1, [Define to use the GNU iconv transcoder]) break ;; *-windows-*) transcoder=windows AC_DEFINE([XERCES_USE_TRANSCODER_WINDOWS], 1, [Define to use the Windows transcoder]) break ;; *-iconv-*) transcoder=iconv AC_DEFINE([XERCES_USE_TRANSCODER_ICONV], 1, [Define to use the iconv transcoder]) break ;; *) AS_IF([test $i -eq 2], [ AC_MSG_RESULT([none]) AC_MSG_ERROR([Xerces cannot function without a transcoder]) ] ) ;; esac done if test x"$transcoder" != x; then AC_MSG_RESULT($transcoder) fi # Define the auto-make conditionals which determine what actually gets compiled # Note that these macros can't be executed conditionally, which is why they're here, not above. AM_CONDITIONAL([XERCES_USE_TRANSCODER_ICU], [test x"$transcoder" = xicu]) AM_CONDITIONAL([XERCES_USE_TRANSCODER_MACOSUNICODECONVERTER], [test x"$transcoder" = xmacosunicodeconverter]) AM_CONDITIONAL([XERCES_USE_TRANSCODER_GNUICONV], [test x"$transcoder" = xgnuiconv]) AM_CONDITIONAL([XERCES_USE_TRANSCODER_ICONV], [test x"$transcoder" = xiconv]) AM_CONDITIONAL([XERCES_USE_TRANSCODER_WINDOWS], [test x"$transcoder" = xwindows]) ] ) xerces-c-3.1.1/m4/lt~obsolete.m40000644000175000017500000001311311363617717015412 0ustar borisboris# 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])]) xerces-c-3.1.1/m4/ltsugar.m40000644000175000017500000001042411363617717014523 0ustar borisboris# 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 ]) xerces-c-3.1.1/m4/xerces_filemgr_selection.m40000644000175000017500000000205711037066156020101 0ustar borisborisdnl @synopsis XERCES_FILEMGR_SELECTION dnl dnl Determines the which filemgr to use dnl dnl @category C dnl @author James Berry dnl @version 2005-05-25 dnl @license AllPermissive dnl dnl $Id: xerces_filemgr_selection.m4 676848 2008-07-15 09:22:54Z borisk $ AC_DEFUN([XERCES_FILEMGR_SELECTION], [ AC_MSG_CHECKING([for which File Manager to use]) filemgr= # Platform specific checks case $host_os in windows* | mingw*) filemgr=Windows; AC_DEFINE([XERCES_USE_FILEMGR_WINDOWS], 1, [Define to use the Windows file mgr]) ;; esac # Fall back to using posix files AS_IF([test -z "$filemgr"], [filemgr=POSIX; AC_DEFINE([XERCES_USE_FILEMGR_POSIX], 1, [Define to use the POSIX file mgr]) ]) AC_MSG_RESULT($filemgr) # Define the auto-make conditionals which determine what actually gets compiled # Note that these macros can't be executed conditionally, which is why they're here, not above. AM_CONDITIONAL([XERCES_USE_FILEMGR_POSIX], [test x"$filemgr" = xPOSIX]) AM_CONDITIONAL([XERCES_USE_FILEMGR_WINDOWS],[test x"$filemgr" = xWindows]) ] ) xerces-c-3.1.1/configure0000755000175000017500000241675011363617724014203 0ustar borisboris#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.64 for xerces-c 3.1.1. # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software # Foundation, Inc. # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do 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 as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do 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 " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV export CONFIG_SHELL exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error ERROR [LINENO LOG_FD] # --------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with status $?, using 1 if that was 0. as_fn_error () { as_status=$?; test $as_status -eq 0 && as_status=1 if test "$3"; then as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3 fi $as_echo "$as_me: error: $1" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in #( -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" # 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 exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='xerces-c' PACKAGE_TARNAME='xerces-c' PACKAGE_VERSION='3.1.1' PACKAGE_STRING='xerces-c 3.1.1' PACKAGE_BUGREPORT='' PACKAGE_URL='' ac_unique_file="src/Makefile.am" ac_config_libobj_dir=src # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS pkgconfigdir XERCES_USE_FILEMGR_WINDOWS_FALSE XERCES_USE_FILEMGR_WINDOWS_TRUE XERCES_USE_FILEMGR_POSIX_FALSE XERCES_USE_FILEMGR_POSIX_TRUE XERCES_USE_MSGLOADER_INMEMORY_FALSE XERCES_USE_MSGLOADER_INMEMORY_TRUE XERCES_USE_MSGLOADER_ICONV_FALSE XERCES_USE_MSGLOADER_ICONV_TRUE XERCES_USE_MSGLOADER_ICU_FALSE XERCES_USE_MSGLOADER_ICU_TRUE XERCES_USE_TRANSCODER_WINDOWS_FALSE XERCES_USE_TRANSCODER_WINDOWS_TRUE XERCES_USE_TRANSCODER_ICONV_FALSE XERCES_USE_TRANSCODER_ICONV_TRUE XERCES_USE_TRANSCODER_GNUICONV_FALSE XERCES_USE_TRANSCODER_GNUICONV_TRUE XERCES_USE_TRANSCODER_MACOSUNICODECONVERTER_FALSE XERCES_USE_TRANSCODER_MACOSUNICODECONVERTER_TRUE XERCES_USE_TRANSCODER_ICU_FALSE XERCES_USE_TRANSCODER_ICU_TRUE ICU_SBIN ICU_BIN ICU_LIBS ICU_FLAGS ICU_PRESENT icu_config XERCES_USE_NETACCESSOR_SOCKET_FALSE XERCES_USE_NETACCESSOR_SOCKET_TRUE XERCES_USE_NETACCESSOR_WINSOCK_FALSE XERCES_USE_NETACCESSOR_WINSOCK_TRUE XERCES_USE_NETACCESSOR_CFURL_FALSE XERCES_USE_NETACCESSOR_CFURL_TRUE XERCES_USE_NETACCESSOR_CURL_FALSE XERCES_USE_NETACCESSOR_CURL_TRUE CURL_LIBS CURL_FLAGS CURL_PRESENT curl_config XERCES_USE_MUTEXMGR_WINDOWS_FALSE XERCES_USE_MUTEXMGR_WINDOWS_TRUE XERCES_USE_MUTEXMGR_POSIX_FALSE XERCES_USE_MUTEXMGR_POSIX_TRUE XERCES_USE_MUTEXMGR_NOTHREAD_FALSE XERCES_USE_MUTEXMGR_NOTHREAD_TRUE XERCES_PRETTY_MAKE_FALSE XERCES_PRETTY_MAKE_TRUE abs_top_builddir abs_top_srcdir LIBOBJS SHREXT PTHREAD_CFLAGS PTHREAD_LIBS PTHREAD_CC acx_pthread_config BUILD_STATIC BUILD_SHARED CXXCPP CPP OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL lt_ECHO RANLIB AR NM ac_ct_DUMPBIN DUMPBIN LD FGREP EGREP GREP am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE ac_ct_CC CFLAGS CC LIBTOOL OBJDUMP DLLTOOL AS LN_S SED am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CXX CPPFLAGS LDFLAGS CXXFLAGS CXX MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM host_os host_vendor host_cpu host build_os build_vendor build_cpu build target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_maintainer_mode enable_rpath enable_dependency_tracking enable_shared enable_static with_pic enable_fast_install with_gnu_ld enable_libtool_lock enable_pretty_make enable_threads enable_network with_curl enable_netaccessor_curl enable_netaccessor_socket enable_netaccessor_cfurl enable_netaccessor_winsock enable_transcoder_gnuiconv enable_transcoder_iconv with_icu enable_transcoder_icu enable_transcoder_macosunicodeconverter enable_transcoder_windows enable_msgloader_inmemory enable_msgloader_icu enable_msgloader_iconv with_pkgconfigdir enable_sse2 ' ac_precious_vars='build_alias host_alias target_alias CXX CXXFLAGS LDFLAGS LIBS CPPFLAGS CCC CC CFLAGS CPP CXXCPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error "unrecognized option: \`$ac_option' Try \`$0 --help' for more information." ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures xerces-c 3.1.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/xerces-c] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of xerces-c 3.1.1:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer --disable-rpath Patches libtool to not use rpath in the libraries produced. --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --disable-pretty-make Disable prettier make output (enabled by default) --disable-threads Disable threads (enabled by default) --disable-network Disable network support (enabled by default) --enable-netaccessor-curl Enable libcurl-based NetAccessor support --enable-netaccessor-socket Enable sockets-based NetAccessor support --enable-netaccessor-cfurl Enable cfurl-based NetAccessor support --enable-netaccessor-winsock Enable winsock-based NetAccessor support --enable-transcoder-gnuiconv Enable GNU iconv-based transcoder support --enable-transcoder-iconv Enable iconv-based transcoder support --enable-transcoder-icu Enable icu-based transcoder support --enable-transcoder-macosunicodeconverter Enable MacOSUnicodeConverter-based transcoder support --enable-transcoder-windows Enable Windows-based transcoder support --enable-msgloader-inmemory Enable InMemory MsgLoader support --enable-msgloader-icu Enable ICU-based MsgLoader support --enable-msgloader-iconv Enable Iconv-based MsgLoader support --disable-sse2 disable SSE2 optimizations Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic try to use only PIC/non-PIC objects [default=use both] --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-curl[[[=DIR]]] Specify location of libcurl --with-icu[[[=DIR]]] Specify location of icu --with-pkgconfigdir=DIR Specify location of pkgconfig dir (default is libdir/pkgconfig) Some influential environment variables: CXX C++ compiler command CXXFLAGS C++ compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if you have headers in a nonstandard directory CC C compiler command CFLAGS C compiler flags CPP C preprocessor CXXCPP C++ preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF xerces-c configure 3.1.1 generated by GNU Autoconf 2.64 Copyright (C) 2009 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} return $ac_retval } # ac_fn_cxx_try_compile # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} return $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} return $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} } # ac_fn_c_check_header_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} return $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} return $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} } # ac_fn_c_check_func # ac_fn_cxx_try_cpp LINENO # ------------------------ # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} return $ac_retval } # ac_fn_cxx_try_cpp # ac_fn_cxx_try_link LINENO # ------------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} return $ac_retval } # ac_fn_cxx_try_link # ac_fn_cxx_try_run LINENO # ------------------------ # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_cxx_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} return $ac_retval } # ac_fn_cxx_try_run # ac_fn_cxx_check_header_mongrel LINENO HEADER VAR INCLUDES # --------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_cxx_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} } # ac_fn_cxx_check_header_mongrel # ac_fn_cxx_check_type LINENO TYPE VAR INCLUDES # --------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_cxx_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} } # ac_fn_cxx_check_type # ac_fn_cxx_compute_int LINENO EXPR VAR INCLUDES # ---------------------------------------------- # Tries to find the compile-time value of EXPR in a program that includes # INCLUDES, setting VAR accordingly. Returns whether the value could be # computed ac_fn_cxx_compute_int () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) >= 0)]; test_array [0] = 0 ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_lo=0 ac_mid=0 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_hi=$ac_mid; break else as_fn_arith $ac_mid + 1 && ac_lo=$as_val if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= break fi as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) < 0)]; test_array [0] = 0 ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_hi=-1 ac_mid=-1 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) >= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_lo=$ac_mid; break else as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= break fi as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else ac_lo= ac_hi= fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0 ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_hi=$ac_mid else as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in #(( ?*) eval "$3=\$ac_lo"; ac_retval=0 ;; '') ac_retval=1 ;; esac else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 static long int longval () { return $2; } static unsigned long int ulongval () { return $2; } #include #include int main () { FILE *f = fopen ("conftest.val", "w"); if (! f) return 1; if (($2) < 0) { long int i = longval (); if (i != ($2)) return 1; fprintf (f, "%ld", i); } else { unsigned long int i = ulongval (); if (i != ($2)) return 1; fprintf (f, "%lu", i); } /* Do not output a trailing newline, as this causes \r\n confusion on some platforms. */ return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF if ac_fn_cxx_try_run "$LINENO"; then : echo >>conftest.val; read $3 &5 $as_echo_n "checking for $2... " >&6; } if { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} } # ac_fn_cxx_check_func cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by xerces-c $as_me 3.1.1, which was generated by GNU Autoconf 2.64. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` 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 || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX ## ---------------- ## ## Cache variables. ## ## ---------------- ## _ASBOX echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo cat <<\_ASBOX ## ----------------- ## ## Output variables. ## ## ----------------- ## _ASBOX echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX ## ------------------- ## ## File substitutions. ## ## ------------------- ## _ASBOX echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then cat <<\_ASBOX ## ----------- ## ## confdefs.h. ## ## ----------- ## _ASBOX echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then ac_site_file1=$CONFIG_SITE elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_aux_dir= for ac_dir in config "$srcdir"/config; do for ac_t in install-sh install.sh shtool; do if test -f "$ac_dir/$ac_t"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/$ac_t -c" break 2 fi done done if test -z "$ac_aux_dir"; then as_fn_error "cannot find install-sh, install.sh, or shtool in config \"$srcdir\"/config" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. ac_config_headers="$ac_config_headers config.h src/xercesc/util/Xerces_autoconf_config.hpp" ac_config_files="$ac_config_files Makefile src/Makefile src/xercesc/util/MsgLoaders/MsgCatalog/Makefile tests/Makefile samples/Makefile xerces-c.pc" # Check the target system # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if test "${ac_cv_build+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if test "${ac_cv_host+set}" = set; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac # Initialize automake am__api_version='1.11' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; esac # 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". as_fn_error "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi test "$2" = conftest.file ) then # Ok. : else as_fn_error "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # 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. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_STRIP+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if test "${ac_cv_path_mkdir+set}" = set; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. test -d ./--version && rmdir ./--version MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" case $mkdir_p in [\\/$]* | ?:[\\/]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AWK+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi 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 if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 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 # Define the identity of the package. PACKAGE='xerces-c' VERSION='3.1.1' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. AMTAR=${AMTAR-"${am_missing_run}tar"} { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5 $as_echo_n "checking how to create a ustar tar archive... " >&6; } # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar plaintar pax cpio none' _am_tools=${am_cv_prog_tar_ustar-$_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 { echo "$as_me:$LINENO: $_am_tar --version" >&5 ($_am_tar --version) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && break done am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"' am__tar_="$_am_tar --format=ustar -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 ustar -w "$$tardir"' am__tar_='pax -L -x ustar -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H ustar -L' am__tar_='find "$tardir" -print | cpio -o -H ustar -L' am__untar='cpio -i -H ustar -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_ustar}" && break # tar/untar a dummy directory, and stop if the command works rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5 (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } rm -rf conftest.dir if test -s conftest.tar; then { echo "$as_me:$LINENO: $am__untar &5 ($am__untar &5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } grep GrepMe conftest.dir/file >/dev/null 2>&1 && break fi done rm -rf conftest.dir if test "${am_cv_prog_tar_ustar+set}" = set; then : $as_echo_n "(cached) " >&6 else am_cv_prog_tar_ustar=$_am_tool fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5 $as_echo "$am_cv_prog_tar_ustar" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 $as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } # Check whether --enable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then : enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else USE_MAINTAINER_MODE=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 $as_echo "$USE_MAINTAINER_MODE" >&6; } if test $USE_MAINTAINER_MODE = yes; then MAINTAINER_MODE_TRUE= MAINTAINER_MODE_FALSE='#' else MAINTAINER_MODE_TRUE='#' MAINTAINER_MODE_FALSE= fi MAINT=$MAINTAINER_MODE_TRUE # Check if rpath is disabled { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use rpath" >&5 $as_echo_n "checking whether to use rpath... " >&6; } # Check whether --enable-rpath was given. if test "${enable_rpath+set}" = set; then : enableval=$enable_rpath; xerces_cv_rpath="$enable_rpath" else xerces_cv_rpath="yes" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $xerces_cv_rpath" >&5 $as_echo "$xerces_cv_rpath" >&6; } # Checks for programs. ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CXX+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 rm -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out conftest.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 $as_echo_n "checking for C++ compiler default output file name... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } if test -z "$ac_file"; then : $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { as_fn_set_status 77 as_fn_error "C++ compiler cannot create executables See \`config.log' for more details." "$LINENO" 5; }; } fi ac_exeext=$ac_cv_exeext # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 $as_echo_n "checking whether the C++ compiler works... " >&6; } # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "cannot run C++ compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out conftest.out ac_clean_files=$ac_clean_files_save # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." "$LINENO" 5; } fi rm -f conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if test "${ac_cv_objext+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "cannot compute suffix of object files: cannot compile See \`config.log' for more details." "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if test "${ac_cv_cxx_compiler_gnu+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if test "${ac_cv_prog_cxx_g+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CXX" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then : $as_echo_n "(cached) " >&6 else 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_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac 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 # 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. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; 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 ;; msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj 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 $am__obj 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_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi # Use the C++ compiler for the compile tests ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu # used by "make check" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if test "${ac_cv_path_SED+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed #it would be nice to also check for PERL... #AC_PROG_PERL #skip detection of Fortran { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. set dummy ${ac_tool_prefix}as; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AS+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$AS"; then ac_cv_prog_AS="$AS" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AS="${ac_tool_prefix}as" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AS=$ac_cv_prog_AS if test -n "$AS"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 $as_echo "$AS" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_AS"; then ac_ct_AS=$AS # Extract the first word of "as", so it can be a program name with args. set dummy as; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_AS+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AS"; then ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_AS="as" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AS=$ac_cv_prog_ac_ct_AS if test -n "$ac_ct_AS"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 $as_echo "$ac_ct_AS" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_AS" = x; then AS="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AS=$ac_ct_AS fi else AS="$ac_cv_prog_AS" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_DLLTOOL+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_DLLTOOL+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 $as_echo "$ac_ct_DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_OBJDUMP+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi ;; esac test -z "$AS" && AS=as test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$OBJDUMP" && OBJDUMP=objdump case `pwd` in *\ * | *\ *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.2.6' macro_revision='1.3012' ltmain="$ac_aux_dir/ltmain.sh" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "no acceptable C compiler found in \$PATH See \`config.log' for more details." "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 rm -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if test "${ac_cv_c_compiler_gnu+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if test "${ac_cv_prog_cc_g+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if test "${ac_cv_prog_cc_c89+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then : $as_echo_n "(cached) " >&6 else 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_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac 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 # 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. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; 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 ;; msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj 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 $am__obj 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_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if test "${ac_cv_path_SED+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if test "${ac_cv_path_GREP+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if test "${ac_cv_path_EGREP+set}" = set; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 $as_echo_n "checking for fgrep... " >&6; } if test "${ac_cv_path_FGREP+set}" = set; then : $as_echo_n "(cached) " >&6 else if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in fgrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 $as_echo "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if test "${lt_cv_path_LD+set}" = set; then : $as_echo_n "(cached) " >&6 else 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 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if test "${lt_cv_prog_gnu_ld+set}" = set; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if test "${lt_cv_path_NM+set}" = set; then : $as_echo_n "(cached) " >&6 else 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 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } 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. if test -n "$ac_tool_prefix"; then for ac_prog in "dumpbin -symbols" "link -dump -symbols" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_DUMPBIN+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 $as_echo "$DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in "dumpbin -symbols" "link -dump -symbols" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 $as_echo "$ac_ct_DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 $as_echo_n "checking the name lister ($NM) interface... " >&6; } if test "${lt_cv_nm_interface+set}" = set; then : $as_echo_n "(cached) " >&6 else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:5934: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:5937: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:5940: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 $as_echo "$lt_cv_nm_interface" >&6; } # find the maximum length of command line arguments { $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if test "${lt_cv_sys_max_cmd_len+set}" = set; then : $as_echo_n "(cached) " >&6 else 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 fi if test -n $lt_cv_sys_max_cmd_len ; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 $as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } # 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 $as_echo "$xsi_shell" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 $as_echo_n "checking whether the shell understands \"+=\"... " >&6; } lt_shell_append=no ( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 $as_echo "$lt_shell_append" >&6; } if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if test "${lt_cv_ld_reload_flag+set}" = set; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 $as_echo "$lt_cv_ld_reload_flag" >&6; } 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 if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_OBJDUMP+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if test "${lt_cv_deplibs_check_method+set}" = set; then : $as_echo_n "(cached) " >&6 else 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 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } 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 if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AR+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AR="${ac_tool_prefix}ar" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_AR"; then ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_AR+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_AR="ar" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi else AR="$ac_cv_prog_AR" fi test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_STRIP+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_RANLIB+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # 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 # 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 # Check for command to grab the raw symbol name followed by C symbol from nm. { $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then : $as_echo_n "(cached) " >&6 else # 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 { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\""; } >&5 (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && 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_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && 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" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 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 fi 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } fi # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi 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 { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; 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 7132 "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; 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 { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; 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" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if test "${lt_cv_cc_needs_belf+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_cc_needs_belf=yes else lt_cv_cc_needs_belf=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } 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 { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; 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" case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_DSYMUTIL+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_NMEDIT+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_LIPO+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 $as_echo "$LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_LIPO="lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 $as_echo "$ac_ct_LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_OTOOL+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 $as_echo "$OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OTOOL="otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 $as_echo "$ac_ct_OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_OTOOL64+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 $as_echo "$OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OTOOL64="otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 $as_echo "$ac_ct_OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if test "${lt_cv_apple_cc_single_mod+set}" = set; then : $as_echo_n "(cached) " >&6 else 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" >&5 $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 >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if test "${lt_cv_ld_exported_symbols_list+set}" = set; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_ld_exported_symbols_list=yes else lt_cv_ld_exported_symbols_list=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } 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 ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if test "${ac_cv_header_stdc+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " eval as_val=\$$as_ac_Header if test "x$as_val" = x""yes; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in dlfcn.h do : ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DLFCN_H 1 _ACEOF fi done ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CXX+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 rm -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if test "${ac_cv_cxx_compiler_gnu+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if test "${ac_cv_prog_cxx_g+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu depcc="$CXX" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then : $as_echo_n "(cached) " >&6 else 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_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac 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 # 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. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; 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 ;; msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj 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 $am__obj 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_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 $as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if test "${ac_cv_prog_CXXCPP+set}" = set; then : $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 $as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} _lt_caught_CXX_error=yes; } fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu else _lt_caught_CXX_error=yes fi # Set options enable_dlopen=no # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then : enableval=$enable_shared; 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 else enable_shared=yes fi # Check whether --enable-static was given. if test "${enable_static+set}" = set; then : enableval=$enable_static; 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 else enable_static=yes fi # Check whether --with-pic was given. if test "${with_pic+set}" = set; then : withval=$with_pic; pic_mode="$withval" else pic_mode=default fi test -z "$pic_mode" && pic_mode=default # Check whether --enable-fast-install was given. if test "${enable_fast_install+set}" = set; then : enableval=$enable_fast_install; 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 else enable_fast_install=yes fi # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if test "${lt_cv_objdir+set}" = set; then : $as_echo_n "(cached) " >&6 else 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 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 $as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir cat >>confdefs.h <<_ACEOF #define LT_OBJDIR "$lt_cv_objdir/" _ACEOF 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 for cc_temp in $compiler""; 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-%%"` # 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if test "${lt_cv_path_MAGIC_CMD+set}" = set; then : $as_echo_n "(cached) " >&6 else 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 ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" 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 fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if test "${lt_cv_path_MAGIC_CMD+set}" = set; then : $as_echo_n "(cached) " >&6 else 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 ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" 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 fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC="$CC" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$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);}' # 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 # 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 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* 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* ## 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... if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag=' -fno-builtin' { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # 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:9187: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:9191: \$? = $ac_status" >&5 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 lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-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_prog_compiler_pic='-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 lt_prog_compiler_pic='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-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_prog_compiler_pic='-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_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-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). lt_prog_compiler_pic='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-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_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl*) # IBM XL C 8.0/Fortran 10.1 on PPC lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Sun\ F*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5 $as_echo "$lt_prog_compiler_pic" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if test "${lt_cv_prog_compiler_pic_works+set}" = set; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" # 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:9526: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:9530: \$? = $ac_status" >&5 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 lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test x"$lt_cv_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test "${lt_cv_prog_compiler_static_works+set}" = set; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" 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>&5 $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 lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test x"$lt_cv_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test "${lt_cv_prog_compiler_c_o+set}" = set; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=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:9631: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:9635: \$? = $ac_status" >&5 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_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $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* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test "${lt_cv_prog_compiler_c_o+set}" = set; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=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:9686: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:9690: \$? = $ac_status" >&5 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_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $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* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_flag_spec_ld= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # 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'. exclude_expsyms='_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. 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 ;; linux* | k*bsd*-gnu) link_all_deplibs=no ;; esac ld_shlibs=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 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec='${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 whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= 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 ld_shlibs=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 archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$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)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$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 archive_cmds='$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... archive_expsym_cmds='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 ld_shlibs=no fi ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${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. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='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 whole_archive_flag_spec='${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 whole_archive_flag_spec='${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 whole_archive_flag_spec= 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 whole_archive_flag_spec='${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' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='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 whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec= hardcode_libdir_flag_spec_ld='-rpath $libdir' archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='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 ld_shlibs=no fi ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$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 ld_shlibs=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 archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=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 hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$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. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=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 export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$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. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='${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 hardcode_direct=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 hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi link_all_deplibs=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 export_dynamic_flag_spec='${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. always_export_symbols=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. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : 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 fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$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 hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$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. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : 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 fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${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. no_undefined_flag=' ${wl}-bernotok' allow_undefined_flag=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="\$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 archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$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)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-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. hardcode_libdir_flag_spec=' ' allow_undefined_flag=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. archive_cmds='$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. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes=yes ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported whole_archive_flag_spec='' link_all_deplibs=yes allow_undefined_flag="$_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 archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds="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}" module_expsym_cmds="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}" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; freebsd1*) ld_shlibs=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*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds='$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 archive_cmds='$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 hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='${wl}-E' ;; hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_flag_spec_ld='+b $libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$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*) archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$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 hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$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" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo(void) {} _ACEOF if ac_fn_c_try_link "$LINENO"; then : archive_expsym_cmds='$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' fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" else archive_cmds='$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' archive_expsym_cmds='$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 archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; netbsd* | netbsdelf*-gnu) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$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' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$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 allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$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 archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$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' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$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' archive_expsym_cmds='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 hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='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='' archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='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}' archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='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 hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=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 whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=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. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='${wl}-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$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. no_undefined_flag='${wl}-z,text' allow_undefined_flag='${wl}-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='${wl}-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test "$ld_shlibs" = no && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds 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. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then archive_cmds_need_lc=no else archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc" >&5 $as_echo "$archive_cmds_need_lc" >&6; } ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } 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.so # instead of lib.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`' 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_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test "X$hardcode_automatic" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct" != 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, )" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test "$hardcode_action" = relink || test "$inherit_rpath" = 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 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if test "${ac_cv_lib_dl_dlopen+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = x""yes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = x""yes; then : lt_cv_dlopen="shl_load" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if test "${ac_cv_lib_dld_shl_load+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_shl_load=yes else ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = x""yes; then : lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = x""yes; then : lt_cv_dlopen="dlopen" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if test "${ac_cv_lib_dl_dlopen+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = x""yes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if test "${ac_cv_lib_svld_dlopen+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_svld_dlopen=yes else ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = x""yes; then : lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if test "${ac_cv_lib_dld_dld_link+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_dld_link=yes else ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = x""yes; then : lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi fi fi fi fi fi ;; 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" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if test "${lt_cv_dlopen_self+set}" = set; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line 12069 "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #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 { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if test "${lt_cv_dlopen_self_static+set}" = set; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line 12165 "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #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 { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 $as_echo "$lt_cv_dlopen_self_static" >&6; } 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 striplib= old_striplib= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&6; } 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" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } 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" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ;; esac fi # Report which library types will actually be built { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu CC="$lt_save_CC" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu archive_cmds_need_lc_CXX=no allow_undefined_flag_CXX= always_export_symbols_CXX=no archive_expsym_cmds_CXX= compiler_needs_object_CXX=no export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no hardcode_libdir_flag_spec_CXX= hardcode_libdir_flag_spec_ld_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_shlibpath_var_CXX=unsupported hardcode_automatic_CXX=no inherit_rpath_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o objext_CXX=$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. # 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 # save warnings/boilerplate of simple test code 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* 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* # 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 compiler_CXX=$CC for cc_temp in $compiler""; 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-%%"` 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_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if test "${lt_cv_path_LD+set}" = set; then : $as_echo_n "(cached) " >&6 else 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 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if test "${lt_cv_prog_gnu_ld+set}" = set; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_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 archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${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 whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_CXX= 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. archive_cmds_CXX='$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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ld_shlibs_CXX=yes case $host_os in aix3*) # FIXME: insert proper C++ library support ld_shlibs_CXX=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. archive_cmds_CXX='' hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes file_list_spec_CXX='${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 hardcode_direct_CXX=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 hardcode_minus_L_CXX=yes hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_libdir_separator_CXX= 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 export_dynamic_flag_spec_CXX='${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. always_export_symbols_CXX=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. allow_undefined_flag_CXX='-berok' # Determine the default libpath from the value encoded in an empty # executable. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : 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 fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_CXX='$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 hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" archive_expsym_cmds_CXX="\$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. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : 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 fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${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. no_undefined_flag_CXX=' ${wl}-bernotok' allow_undefined_flag_CXX=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX='$convenience' archive_cmds_need_lc_CXX=yes # This is similar to how AIX traditionally builds its shared # libraries. archive_expsym_cmds_CXX="\$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 allow_undefined_flag_CXX=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_CXX=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=no enable_shared_with_static_runtimes_CXX=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds_CXX='$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... archive_expsym_cmds_CXX='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 ld_shlibs_CXX=no fi ;; darwin* | rhapsody*) archive_cmds_need_lc_CXX=no hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported whole_archive_flag_spec_CXX='' link_all_deplibs_CXX=yes allow_undefined_flag_CXX="$_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 archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds_CXX="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}" module_expsym_cmds_CXX="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}" if test "$lt_cv_apple_cc_single_mod" != "yes"; then archive_cmds_CXX="\$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}" archive_expsym_cmds_CXX="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 ld_shlibs_CXX=no fi ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; freebsd[12]*) # C++ shared libraries reported to be fairly broken before # switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; gnu*) ;; hpux9*) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='${wl}-E' hardcode_direct_CXX=yes hardcode_minus_L_CXX=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 ld_shlibs_CXX=no ;; aCC*) archive_cmds_CXX='$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 archive_cmds_CXX='$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 ld_shlibs_CXX=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: case $host_cpu in hppa*64*|ia64*) ;; *) export_dynamic_flag_spec_CXX='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no ;; *) hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_minus_L_CXX=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 ld_shlibs_CXX=no ;; aCC*) case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$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*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$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 ld_shlibs_CXX=no fi ;; esac ;; interix[3-9]*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${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. archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_CXX='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++ archive_cmds_CXX='$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. old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then archive_cmds_CXX='$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 archive_cmds_CXX='$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 link_all_deplibs_CXX=yes ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: inherit_rpath_CXX=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. archive_cmds_CXX='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' archive_expsym_cmds_CXX='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' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$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."*) archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$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 archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac archive_cmds_need_lc_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [1-5]* | *pgcpp\ [1-5]*) prelink_cmds_CXX='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`"' old_archive_cmds_CXX='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' archive_cmds_CXX='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' archive_expsym_cmds_CXX='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 archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='$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 hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${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++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$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 hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # 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 hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds_CXX='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 no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' hardcode_libdir_flag_spec_CXX='-R$libdir' whole_archive_flag_spec_CXX='${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' compiler_needs_object_CXX=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. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; m88k*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=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*) ld_shlibs_CXX=yes ;; openbsd2*) # C++ shared libraries are fairly broken ld_shlibs_CXX=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no hardcode_direct_absolute_CXX=yes archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' export_dynamic_flag_spec_CXX='${wl}-E' whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd=echo else ld_shlibs_CXX=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. archive_cmds_CXX='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' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) case $host in osf3*) allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$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' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' ;; *) allow_undefined_flag_CXX=' -expect_unresolved \*' archive_cmds_CXX='$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' archive_expsym_cmds_CXX='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' hardcode_libdir_flag_spec_CXX='-rpath $libdir' ;; esac hardcode_libdir_separator_CXX=: # 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 allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) archive_cmds_CXX='$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' ;; *) archive_cmds_CXX='$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 hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # 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 ld_shlibs_CXX=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ archive_cmds_need_lc_CXX=yes no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='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' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=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?) whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_CXX=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. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler archive_cmds_CXX='$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. old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then no_undefined_flag_CXX=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='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. archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='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 hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_CXX='${wl}-z,text' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$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. no_undefined_flag_CXX='${wl}-z,text' allow_undefined_flag_CXX='${wl}-z,nodefs' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir' hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes export_dynamic_flag_spec_CXX='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$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 ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no GCC_CXX="$GXX" LD_CXX="$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... # Dependencies to place before and after the object being linked: predep_objects_CXX= postdep_objects_CXX= predeps_CXX= postdeps_CXX= compiler_lib_search_path_CXX= cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; 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 "$compiler_lib_search_path_CXX"; then compiler_lib_search_path_CXX="${prev}${p}" else compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${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 "$postdeps_CXX"; then postdeps_CXX="${prev}${p}" else postdeps_CXX="${postdeps_CXX} ${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 "$predep_objects_CXX"; then predep_objects_CXX="$p" else predep_objects_CXX="$predep_objects_CXX $p" fi else if test -z "$postdep_objects_CXX"; then postdep_objects_CXX="$p" else postdep_objects_CXX="$postdep_objects_CXX $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling CXX test program" fi $RM -f confest.$objext # PORTME: override above test on systems where it is broken 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. predep_objects_CXX= postdep_objects_CXX= postdeps_CXX= ;; 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 postdeps_CXX='-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 postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; esac case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac compiler_lib_search_dirs_CXX= if test -n "${compiler_lib_search_path_CXX}"; then compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic_CXX='-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_prog_compiler_pic_CXX='-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 lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_CXX='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; 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_prog_compiler_pic_CXX=-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_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; *) lt_prog_compiler_pic_CXX='-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_prog_compiler_static_CXX='-Bstatic' else lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--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_prog_compiler_pic_CXX='-KPIC' ;; ghcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_CXX='+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_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64 which still supported -KPIC. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fPIC' lt_prog_compiler_static_CXX='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fpic' lt_prog_compiler_static_CXX='-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_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; xlc* | xlC*) # IBM XL 8.0 on PPC lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-qpic' lt_prog_compiler_static_CXX='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) lt_prog_compiler_pic_CXX='-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_prog_compiler_pic_CXX='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; cxx*) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; lcc*) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; *) lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic_CXX" >&5 $as_echo "$lt_prog_compiler_pic_CXX" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } if test "${lt_cv_prog_compiler_pic_works_CXX+set}" = set; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" # 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:14121: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:14125: \$? = $ac_status" >&5 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 lt_cv_prog_compiler_pic_works_CXX=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; esac else lt_prog_compiler_pic_CXX= lt_prog_compiler_can_build_shared_CXX=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test "${lt_cv_prog_compiler_static_works_CXX+set}" = set; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_CXX=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" 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>&5 $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 lt_cv_prog_compiler_static_works_CXX=yes fi else lt_cv_prog_compiler_static_works_CXX=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then : else lt_prog_compiler_static_CXX= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=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:14220: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:14224: \$? = $ac_status" >&5 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_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $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* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=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:14272: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:14276: \$? = $ac_status" >&5 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_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $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* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } export_symbols_cmds_CXX='$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 export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) export_symbols_cmds_CXX='$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) link_all_deplibs_CXX=no ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no with_gnu_ld_CXX=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_CXX" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_CXX=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_CXX 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. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX pic_flag=$lt_prog_compiler_pic_CXX compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_CXX allow_undefined_flag_CXX= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then archive_cmds_need_lc_CXX=no else archive_cmds_need_lc_CXX=yes fi allow_undefined_flag_CXX=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* { $as_echo "$as_me:${as_lineno-$LINENO}: result: $archive_cmds_need_lc_CXX" >&5 $as_echo "$archive_cmds_need_lc_CXX" >&6; } ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } 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.so # instead of lib.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`' 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_prog_compiler_wl_CXX\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext 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 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } 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 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || test -n "$runpath_var_CXX" || test "X$hardcode_automatic_CXX" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct_CXX" != 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, CXX)" != no && test "$hardcode_minus_L_CXX" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_CXX=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_CXX=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_CXX=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 $as_echo "$hardcode_action_CXX" >&6; } if test "$hardcode_action_CXX" = relink || test "$inherit_rpath_CXX" = 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 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_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_config_commands="$ac_config_commands libtool" # Only expand once: if test "x$CC" != xcc; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5 $as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5 $as_echo_n "checking whether cc understands -c and -o together... " >&6; } fi set dummy $CC; ac_cc=`$as_echo "$2" | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` if { as_var=ac_cv_prog_cc_${ac_cc}_c_o; eval "test \"\${$as_var+set}\" = set"; }; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # We do the test twice because some compilers refuse to overwrite an # existing .o file with -o, though they will create one. ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5' rm -f conftest2.* if { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -f conftest2.$ac_objext && { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then eval ac_cv_prog_cc_${ac_cc}_c_o=yes if test "x$CC" != xcc; then # Test first that cc exists at all. if { ac_try='cc -c conftest.$ac_ext >&5' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5' rm -f conftest2.* if { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -f conftest2.$ac_objext && { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # cc works too. : else # cc exists but doesn't like -o. eval ac_cv_prog_cc_${ac_cc}_c_o=no fi fi fi else eval ac_cv_prog_cc_${ac_cc}_c_o=no fi rm -f core conftest* fi if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h fi # FIXME: we rely on the cache variable name because # there is no other way. set dummy $CC am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o if test "$am_t" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi if test x$AR = xfalse; then : as_fn_error "Cannot find a valid 'ar' tool" "$LINENO" 5 fi # Patch libtool to not use rpath if requested. # ac_config_commands="$ac_config_commands libtool-rpath-patch" # Export information on whether we are building static/shared libraries. # enable_shared and enable_static are defined by AC_PROG_LIBTOOL. # BUILD_SHARED=$enable_shared BUILD_STATIC=$enable_static # Checks for header files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if test "${ac_cv_header_stdc+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_cxx_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 $as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } if test "${ac_cv_header_time+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { if ((struct tm *) 0) return 0; ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_header_time=yes else ac_cv_header_time=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 $as_echo "$ac_cv_header_time" >&6; } if test $ac_cv_header_time = yes; then $as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h fi for ac_header in arpa/inet.h fcntl.h float.h inttypes.h langinfo.h limits.h locale.h \ memory.h netdb.h netinet/in.h nl_types.h stddef.h stdint.h stdlib.h \ string.h strings.h \ sys/param.h sys/socket.h sys/time.h sys/timeb.h \ unistd.h wchar.h wctype.h \ CoreServices/CoreServices.h \ endian.h machine/endian.h arpa/nameser_compat.h \ do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_cxx_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" eval as_val=\$$as_ac_Header if test "x$as_val" = x""yes; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Checks for typedefs, structures, and compiler characteristics. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5 $as_echo_n "checking for stdbool.h that conforms to C99... " >&6; } if test "${ac_cv_header_stdbool_h+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifndef bool "error: bool is not defined" #endif #ifndef false "error: false is not defined" #endif #if false "error: false is not 0" #endif #ifndef true "error: true is not defined" #endif #if true != 1 "error: true is not 1" #endif #ifndef __bool_true_false_are_defined "error: __bool_true_false_are_defined is not defined" #endif struct s { _Bool s: 1; _Bool t; } s; char a[true == 1 ? 1 : -1]; char b[false == 0 ? 1 : -1]; char c[__bool_true_false_are_defined == 1 ? 1 : -1]; char d[(bool) 0.5 == true ? 1 : -1]; bool e = &s; char f[(_Bool) 0.0 == false ? 1 : -1]; char g[true]; char h[sizeof (_Bool)]; char i[sizeof s.t]; enum { j = false, k = true, l = false * true, m = true * 256 }; /* The following fails for HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ _Bool n[m]; char o[sizeof n == m * sizeof n[0] ? 1 : -1]; char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1]; # if defined __xlc__ || defined __GNUC__ /* Catch a bug in IBM AIX xlc compiler version 6.0.0.0 reported by James Lemley on 2005-10-05; see http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html This test is not quite right, since xlc is allowed to reject this program, as the initializer for xlcbug is not one of the forms that C requires support for. However, doing the test right would require a runtime test, and that would make cross-compilation harder. Let us hope that IBM fixes the xlc bug, and also adds support for this kind of constant expression. In the meantime, this test will reject xlc, which is OK, since our stdbool.h substitute should suffice. We also test this with GCC, where it should work, to detect more quickly whether someone messes up the test in the future. */ char digs[] = "0123456789"; int xlcbug = 1 / (&(digs + 5)[-2 + (bool) 1] == &digs[4] ? 1 : -1); # endif /* Catch a bug in an HP-UX C compiler. See http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html */ _Bool q = true; _Bool *pq = &q; int main () { *pq |= q; *pq |= ! q; /* Refer to every declared value, to avoid compiler optimizations. */ return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l + !m + !n + !o + !p + !q + !pq); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_header_stdbool_h=yes else ac_cv_header_stdbool_h=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 $as_echo "$ac_cv_header_stdbool_h" >&6; } ac_fn_cxx_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" if test "x$ac_cv_type__Bool" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE__BOOL 1 _ACEOF fi if test $ac_cv_header_stdbool_h = yes; then $as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if test "${ac_cv_c_const+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { /* FIXME: Include the comments suggested by Paul. */ #ifndef __cplusplus /* Ultrix mips cc rejects this. */ typedef int charset[2]; const charset cs; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this. */ char *t; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; }; struct s *b; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_c_const=yes else ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 $as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then $as_echo "#define const /**/" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 $as_echo_n "checking for inline... " >&6; } if test "${ac_cv_c_inline+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __cplusplus typedef int foo_t; static $ac_kw foo_t static_foo () {return 0; } $ac_kw foo_t foo () {return 0; } #endif _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_c_inline=$ac_kw fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext test "$ac_cv_c_inline" != no && break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 $as_echo "$ac_cv_c_inline" >&6; } case $ac_cv_c_inline in inline | yes) ;; *) case $ac_cv_c_inline in no) ac_val=;; *) ac_val=$ac_cv_c_inline;; esac cat >>confdefs.h <<_ACEOF #ifndef __cplusplus #define inline $ac_val #endif _ACEOF ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working volatile" >&5 $as_echo_n "checking for working volatile... " >&6; } if test "${ac_cv_c_volatile+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { volatile int x; int * volatile y = (int *) 0; return !x && !y; ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_c_volatile=yes else ac_cv_c_volatile=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_volatile" >&5 $as_echo "$ac_cv_c_volatile" >&6; } if test $ac_cv_c_volatile = no; then $as_echo "#define volatile /**/" >>confdefs.h fi # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of wchar_t" >&5 $as_echo_n "checking size of wchar_t... " >&6; } if test "${ac_cv_sizeof_wchar_t+set}" = set; then : $as_echo_n "(cached) " >&6 else if ac_fn_cxx_compute_int "$LINENO" "(long int) (sizeof (wchar_t))" "ac_cv_sizeof_wchar_t" "$ac_includes_default"; then : else if test "$ac_cv_type_wchar_t" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { as_fn_set_status 77 as_fn_error "cannot compute sizeof (wchar_t) See \`config.log' for more details." "$LINENO" 5; }; } else ac_cv_sizeof_wchar_t=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_wchar_t" >&5 $as_echo "$ac_cv_sizeof_wchar_t" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_WCHAR_T $ac_cv_sizeof_wchar_t _ACEOF ac_fn_cxx_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = x""yes; then : fi ac_fn_cxx_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" if test "x$ac_cv_type_ssize_t" = x""yes; then : fi ac_fn_cxx_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" if test "x$ac_cv_type_off_t" = x""yes; then : else cat >>confdefs.h <<_ACEOF #define off_t long int _ACEOF fi ac_fn_cxx_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = x""yes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned int _ACEOF fi for ac_header in inttypes.h do : ac_fn_cxx_check_header_mongrel "$LINENO" "inttypes.h" "ac_cv_header_inttypes_h" "$ac_includes_default" if test "x$ac_cv_header_inttypes_h" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_INTTYPES_H 1 _ACEOF fi done # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of short" >&5 $as_echo_n "checking size of short... " >&6; } if test "${ac_cv_sizeof_short+set}" = set; then : $as_echo_n "(cached) " >&6 else if ac_fn_cxx_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short" "$ac_includes_default"; then : else if test "$ac_cv_type_short" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { as_fn_set_status 77 as_fn_error "cannot compute sizeof (short) See \`config.log' for more details." "$LINENO" 5; }; } else ac_cv_sizeof_short=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5 $as_echo "$ac_cv_sizeof_short" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_SHORT $ac_cv_sizeof_short _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5 $as_echo_n "checking size of int... " >&6; } if test "${ac_cv_sizeof_int+set}" = set; then : $as_echo_n "(cached) " >&6 else if ac_fn_cxx_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default"; then : else if test "$ac_cv_type_int" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { as_fn_set_status 77 as_fn_error "cannot compute sizeof (int) See \`config.log' for more details." "$LINENO" 5; }; } else ac_cv_sizeof_int=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5 $as_echo "$ac_cv_sizeof_int" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_INT $ac_cv_sizeof_int _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 $as_echo_n "checking size of long... " >&6; } if test "${ac_cv_sizeof_long+set}" = set; then : $as_echo_n "(cached) " >&6 else if ac_fn_cxx_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"; then : else if test "$ac_cv_type_long" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { as_fn_set_status 77 as_fn_error "cannot compute sizeof (long) See \`config.log' for more details." "$LINENO" 5; }; } else ac_cv_sizeof_long=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 $as_echo "$ac_cv_sizeof_long" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_LONG $ac_cv_sizeof_long _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5 $as_echo_n "checking size of long long... " >&6; } if test "${ac_cv_sizeof_long_long+set}" = set; then : $as_echo_n "(cached) " >&6 else if ac_fn_cxx_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long" "$ac_includes_default"; then : else if test "$ac_cv_type_long_long" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { as_fn_set_status 77 as_fn_error "cannot compute sizeof (long long) See \`config.log' for more details." "$LINENO" 5; }; } else ac_cv_sizeof_long_long=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5 $as_echo "$ac_cv_sizeof_long_long" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long _ACEOF # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { $as_echo "$as_me:${as_lineno-$LINENO}: checking size of __int64" >&5 $as_echo_n "checking size of __int64... " >&6; } if test "${ac_cv_sizeof___int64+set}" = set; then : $as_echo_n "(cached) " >&6 else if ac_fn_cxx_compute_int "$LINENO" "(long int) (sizeof (__int64))" "ac_cv_sizeof___int64" "$ac_includes_default"; then : else if test "$ac_cv_type___int64" = yes; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { as_fn_set_status 77 as_fn_error "cannot compute sizeof (__int64) See \`config.log' for more details." "$LINENO" 5; }; } else ac_cv_sizeof___int64=0 fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof___int64" >&5 $as_echo "$ac_cv_sizeof___int64" >&6; } cat >>confdefs.h <<_ACEOF #define SIZEOF___INT64 $ac_cv_sizeof___int64 _ACEOF ac_fn_cxx_check_type "$LINENO" "int16_t" "ac_cv_type_int16_t" "$ac_includes_default" if test "x$ac_cv_type_int16_t" = x""yes; then : fi ac_fn_cxx_check_type "$LINENO" "int32_t" "ac_cv_type_int32_t" "$ac_includes_default" if test "x$ac_cv_type_int32_t" = x""yes; then : fi ac_fn_cxx_check_type "$LINENO" "int64_t" "ac_cv_type_int64_t" "$ac_includes_default" if test "x$ac_cv_type_int64_t" = x""yes; then : fi ac_fn_cxx_check_type "$LINENO" "uint16_t" "ac_cv_type_uint16_t" "$ac_includes_default" if test "x$ac_cv_type_uint16_t" = x""yes; then : fi ac_fn_cxx_check_type "$LINENO" "uint32_t" "ac_cv_type_uint32_t" "$ac_includes_default" if test "x$ac_cv_type_uint32_t" = x""yes; then : fi ac_fn_cxx_check_type "$LINENO" "uint64_t" "ac_cv_type_uint64_t" "$ac_includes_default" if test "x$ac_cv_type_uint64_t" = x""yes; then : fi # # Select a signed 16 bit integer type # { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an appropriate signed 16 bit integer type" >&5 $as_echo_n "checking for an appropriate signed 16 bit integer type... " >&6; } if test "${xerces_cv_type_s16bit_int+set}" = set; then : $as_echo_n "(cached) " >&6 else if test x$ac_cv_header_inttypes_h = xyes && test x$ac_cv_type_int16_t = xyes; then : xerces_cv_type_s16bit_int=int16_t else case $ac_cv_sizeof_int in 2*) xerces_cv_type_s16bit_int=int;; *) case $ac_cv_sizeof_short in 2*) xerces_cv_type_s16bit_int=short;; *) as_fn_error "Couldn't find a signed 16 bit int type" "$LINENO" 5;; esac ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $xerces_cv_type_s16bit_int" >&5 $as_echo "$xerces_cv_type_s16bit_int" >&6; } # # Select an unsigned 16 bit integer type # { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an appropriate unsigned 16 bit integer type" >&5 $as_echo_n "checking for an appropriate unsigned 16 bit integer type... " >&6; } if test "${xerces_cv_type_u16bit_int+set}" = set; then : $as_echo_n "(cached) " >&6 else if test x$ac_cv_header_inttypes_h = xyes && test x$ac_cv_type_uint16_t = xyes; then : xerces_cv_type_u16bit_int=uint16_t else case $ac_cv_sizeof_int in 2*) xerces_cv_type_u16bit_int="unsigned int";; *) case $ac_cv_sizeof_short in 2*) xerces_cv_type_u16bit_int="unsigned short";; *) as_fn_error "Couldn't find an unsigned 16 bit int type" "$LINENO" 5;; esac ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $xerces_cv_type_u16bit_int" >&5 $as_echo "$xerces_cv_type_u16bit_int" >&6; } # # Select a signed 32 bit integer type # { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an appropriate signed 32 bit integer type" >&5 $as_echo_n "checking for an appropriate signed 32 bit integer type... " >&6; } if test "${xerces_cv_type_s32bit_int+set}" = set; then : $as_echo_n "(cached) " >&6 else if test x$ac_cv_header_inttypes_h = xyes && test x$ac_cv_type_int32_t = xyes; then : xerces_cv_type_s32bit_int=int32_t else case $ac_cv_sizeof_int in 4*) xerces_cv_type_s32bit_int=int;; *) case $ac_cv_sizeof_long in 4*) xerces_cv_type_s32bit_int=long;; *) as_fn_error "Couldn't find a signed 32 bit int type" "$LINENO" 5;; esac ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $xerces_cv_type_s32bit_int" >&5 $as_echo "$xerces_cv_type_s32bit_int" >&6; } # # Select an unsigned 32 bit integer type # { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an appropriate unsigned 32 bit integer type" >&5 $as_echo_n "checking for an appropriate unsigned 32 bit integer type... " >&6; } if test "${xerces_cv_type_u32bit_int+set}" = set; then : $as_echo_n "(cached) " >&6 else if test x$ac_cv_header_inttypes_h = xyes && test x$ac_cv_type_uint32_t = xyes; then : xerces_cv_type_u32bit_int=uint32_t else case $ac_cv_sizeof_int in 4*) xerces_cv_type_u32bit_int="unsigned int";; *) case $ac_cv_sizeof_long in 4*) xerces_cv_type_u32bit_int="unsigned long";; *) as_fn_error "Couldn't find an unsigned 32 bit int type" "$LINENO" 5;; esac ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $xerces_cv_type_u32bit_int" >&5 $as_echo "$xerces_cv_type_u32bit_int" >&6; } # # Select an signed 64 bit integer type # { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an appropriate signed 64 bit integer type" >&5 $as_echo_n "checking for an appropriate signed 64 bit integer type... " >&6; } if test "${xerces_cv_type_s64bit_int+set}" = set; then : $as_echo_n "(cached) " >&6 else if test x$ac_cv_header_inttypes_h = xyes && test x$ac_cv_type_int64_t = xyes; then : xerces_cv_type_s64bit_int=int64_t xerces_cv_sizeof_int64=8 else case $ac_cv_sizeof_int in 8*) xerces_cv_type_s64bit_int="int" xerces_cv_sizeof_int64=8 ;; *) case $ac_cv_sizeof_long in 8*) xerces_cv_type_s64bit_int="long" xerces_cv_sizeof_int64=8 ;; *) case $ac_cv_sizeof_long_long in 8*) xerces_cv_type_s64bit_int="long long" xerces_cv_sizeof_int64=8 ;; *) case $ac_cv_sizeof___int64 in 8*) xerces_cv_type_s64bit_int="__int64" xerces_cv_sizeof_int64=8 ;; *) xerces_cv_type_s64bit_int=$xerces_cv_type_s32bit_int xerces_cv_sizeof_int64=4 ;; esac ;; esac ;; esac ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $xerces_cv_type_s64bit_int" >&5 $as_echo "$xerces_cv_type_s64bit_int" >&6; } # # Select an unsigned 64 bit integer type # { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an appropriate unsigned 64 bit integer type" >&5 $as_echo_n "checking for an appropriate unsigned 64 bit integer type... " >&6; } if test "${xerces_cv_type_u64bit_int+set}" = set; then : $as_echo_n "(cached) " >&6 else if test x$ac_cv_header_inttypes_h = xyes && test x$ac_cv_type_uint64_t = xyes; then : xerces_cv_type_u64bit_int=uint64_t else case $ac_cv_sizeof_int in 8*) xerces_cv_type_u64bit_int="unsigned int";; *) case $ac_cv_sizeof_long in 8*) xerces_cv_type_u64bit_int="unsigned long";; *) case $ac_cv_sizeof_long_long in 8*) xerces_cv_type_u64bit_int="unsigned long long";; *) case $ac_cv_sizeof___int64 in 8*) xerces_cv_type_u64bit_int="unsigned __int64";; *) xerces_cv_type_u64bit_int=$xerces_cv_type_u32bit_int;; esac ;; esac ;; esac ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $xerces_cv_type_u64bit_int" >&5 $as_echo "$xerces_cv_type_u64bit_int" >&6; } cat >>confdefs.h <<_ACEOF #define XERCES_S16BIT_INT $xerces_cv_type_s16bit_int _ACEOF cat >>confdefs.h <<_ACEOF #define XERCES_U16BIT_INT $xerces_cv_type_u16bit_int _ACEOF cat >>confdefs.h <<_ACEOF #define XERCES_S32BIT_INT $xerces_cv_type_s32bit_int _ACEOF cat >>confdefs.h <<_ACEOF #define XERCES_U32BIT_INT $xerces_cv_type_u32bit_int _ACEOF cat >>confdefs.h <<_ACEOF #define XERCES_S64BIT_INT $xerces_cv_type_s64bit_int _ACEOF cat >>confdefs.h <<_ACEOF #define XERCES_U64BIT_INT $xerces_cv_type_u64bit_int _ACEOF { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler recognizes bool as a built-in type" >&5 $as_echo_n "checking whether the compiler recognizes bool as a built-in type... " >&6; } if test "${ac_cv_cxx_have_bool+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int f(int x){return 1;} int f(char x){return 1;} int f(bool x){return 1;} int main () { bool b = true; return f(b); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_cxx_have_bool=yes else ac_cv_cxx_have_bool=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_have_bool" >&5 $as_echo "$ac_cv_cxx_have_bool" >&6; } if test "$ac_cv_cxx_have_bool" = yes; then $as_echo "#define HAVE_BOOL /**/" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler implements namespaces" >&5 $as_echo_n "checking whether the compiler implements namespaces... " >&6; } if test "${ac_cv_cxx_have_namespaces+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ namespace Outer { namespace Inner { int i = 0; }} int main () { using namespace Outer::Inner; return i; ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_cxx_have_namespaces=yes else ac_cv_cxx_have_namespaces=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_have_namespaces" >&5 $as_echo "$ac_cv_cxx_have_namespaces" >&6; } if test "$ac_cv_cxx_have_namespaces" = yes; then $as_echo "#define HAVE_NAMESPACES /**/" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports the std namespace" >&5 $as_echo_n "checking whether the compiler supports the std namespace... " >&6; } if test "${ac_cv_cxx_have_std_namespace+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include std::istream& is = std::cin; int main () { return 0; ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_cxx_have_std_namespace=yes else ac_cv_cxx_have_std_namespace=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_have_std_namespace" >&5 $as_echo "$ac_cv_cxx_have_std_namespace" >&6; } if test "$ac_cv_cxx_have_std_namespace" = yes; then $as_echo "#define HAVE_STD_NAMESPACE /**/" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports ISO C++ standard library" >&5 $as_echo_n "checking whether the compiler supports ISO C++ standard library... " >&6; } if test "${ac_cv_cxx_have_std_libs+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include #ifdef HAVE_NAMESPACES using namespace std; #endif int main () { return 0; ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_cxx_have_std_libs=yes else ac_cv_cxx_have_std_libs=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_have_std_libs" >&5 $as_echo "$ac_cv_cxx_have_std_libs" >&6; } if test "$ac_cv_cxx_have_std_libs" = yes; then $as_echo "#define HAVE_STD_LIBS /**/" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler implements L\"widestring\"" >&5 $as_echo_n "checking whether the compiler implements L\"widestring\"... " >&6; } if test "${ac_cv_cxx_have_lstring+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ const wchar_t* s=L"wide string"; _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_cxx_have_lstring=yes else ac_cv_cxx_have_lstring=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_have_lstring" >&5 $as_echo "$ac_cv_cxx_have_lstring" >&6; } if test "$ac_cv_cxx_have_lstring" = yes; then $as_echo "#define HAVE_LSTRING /**/" >>confdefs.h fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu acx_pthread_ok=no # We used to check for pthread.h first, but this fails if pthread.h # requires special compiler flags (e.g. on True64 or Sequent). # It gets checked for in the link test anyway. # First of all, check if the user has set any of the PTHREAD_LIBS, # etcetera environment variables, and if threads linking works using # them: if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5 $as_echo_n "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char pthread_join (); int main () { return pthread_join (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : acx_pthread_ok=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_ok" >&5 $as_echo "$acx_pthread_ok" >&6; } if test x"$acx_pthread_ok" = xno; then PTHREAD_LIBS="" PTHREAD_CFLAGS="" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" fi # We must check for the threads library under a number of different # names; the ordering is very important because some systems # (e.g. DEC) have both -lpthread and -lpthreads, where one of the # libraries is broken (non-POSIX). # Create a list of thread flags to try. Items starting with a "-" are # C compiler flags, and other items are library names, except for "none" # which indicates that we try without any flags at all, and "pthread-config" # which is a program returning the flags for the Pth emulation library. # XERCES: On GNU/Linux with gcc both -pthread and -lpthread are valid. # However, libtool links libraries with -nostdlib which results in # -pthread being stripped from the linker command line. To resolve # this we move pthread from after -mthreads to after pthreads. # acx_pthread_flags="pthreads pthread none -Kthread -kthread lthread -pthread -pthreads -mthreads --thread-safe -mt pthread-config" # The ordering *is* (sometimes) important. Some notes on the # individual items follow: # pthreads: AIX (must check this before -lpthread) # none: in case threads are in libc; should be tried before -Kthread and # other compiler flags to prevent continual compiler warnings # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) # -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) # -pthreads: Solaris/gcc # -mthreads: Mingw32/gcc, Lynx/gcc # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it # doesn't hurt to check since this sometimes defines pthreads too; # also defines -D_REENTRANT) # ... -mt is also the pthreads flag for HP/aCC # pthread: Linux, etcetera # --thread-safe: KAI C++ # pthread-config: use pthread-config program (for GNU Pth library) case "${host_cpu}-${host_os}" in *solaris*) # On Solaris (at least, for some versions), libc contains stubbed # (non-functional) versions of the pthreads routines, so link-based # tests will erroneously succeed. (We need to link with -pthreads/-mt/ # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather # a function called by this macro, so we could check for that, but # who knows whether they'll stub that too in a future libc.) So, # we'll just look for -pthreads and -lpthread first: acx_pthread_flags="-pthreads pthread -mt -pthread $acx_pthread_flags" ;; esac if test x"$acx_pthread_ok" = xno; then for flag in $acx_pthread_flags; do case $flag in none) { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5 $as_echo_n "checking whether pthreads work without any flags... " >&6; } ;; -*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $flag" >&5 $as_echo_n "checking whether pthreads work with $flag... " >&6; } PTHREAD_CFLAGS="$flag" ;; pthread-config) # Extract the first word of "pthread-config", so it can be a program name with args. set dummy pthread-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_acx_pthread_config+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$acx_pthread_config"; then ac_cv_prog_acx_pthread_config="$acx_pthread_config" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_acx_pthread_config="yes" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_acx_pthread_config" && ac_cv_prog_acx_pthread_config="no" fi fi acx_pthread_config=$ac_cv_prog_acx_pthread_config if test -n "$acx_pthread_config"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_config" >&5 $as_echo "$acx_pthread_config" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test x"$acx_pthread_config" = xno; then continue; fi PTHREAD_CFLAGS="`pthread-config --cflags`" PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$flag" >&5 $as_echo_n "checking for the pthreads library -l$flag... " >&6; } PTHREAD_LIBS="-l$flag" ;; esac save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Check for various functions. We must include pthread.h, # since some functions may be macros. (On the Sequent, we # need a special flag -Kthread to make this header compile.) # We check for pthread_join because it is in -lpthread on IRIX # while pthread_create is in libc. We check for pthread_attr_init # due to DEC craziness with -lpthreads. We check for # pthread_cleanup_push because it is one of the few pthread # functions on Solaris that doesn't have a non-functional libc stub. # We try pthread_create on general principles. # XERCES: Add tests for pthread_mutexattr_init and # pthread_mutexattr_destroy. # cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { pthread_t th; pthread_join(th, 0); pthread_attr_init(0); pthread_cleanup_push(0, 0); pthread_create(0,0,0,0); pthread_cleanup_pop(0); pthread_mutexattr_init(0); pthread_mutexattr_destroy(0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : acx_pthread_ok=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_ok" >&5 $as_echo "$acx_pthread_ok" >&6; } if test "x$acx_pthread_ok" = xyes; then break; fi PTHREAD_LIBS="" PTHREAD_CFLAGS="" done fi # Various other checks: if test "x$acx_pthread_ok" = xyes; then save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5 $as_echo_n "checking for joinable pthread attribute... " >&6; } attr_name=unknown for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int attr=$attr; return attr; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : attr_name=$attr; break fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext done { $as_echo "$as_me:${as_lineno-$LINENO}: result: $attr_name" >&5 $as_echo "$attr_name" >&6; } if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then cat >>confdefs.h <<_ACEOF #define PTHREAD_CREATE_JOINABLE $attr_name _ACEOF fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if more special flags are required for pthreads" >&5 $as_echo_n "checking if more special flags are required for pthreads... " >&6; } flag=no case "${host_cpu}-${host_os}" in *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";; *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${flag}" >&5 $as_echo "${flag}" >&6; } if test "x$flag" != xno; then PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" # More AIX lossage: must compile with xlc_r or cc_r if test x"$GCC" != xyes; then for ac_prog in xlc_r cc_r do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_PTHREAD_CC+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -n "$PTHREAD_CC"; then ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_PTHREAD_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi PTHREAD_CC=$ac_cv_prog_PTHREAD_CC if test -n "$PTHREAD_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5 $as_echo "$PTHREAD_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$PTHREAD_CC" && break done test -n "$PTHREAD_CC" || PTHREAD_CC="${CC}" else PTHREAD_CC=$CC fi else PTHREAD_CC="$CC" fi # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test x"$acx_pthread_ok" = xyes; then $as_echo "#define HAVE_PTHREAD 1" >>confdefs.h : else acx_pthread_ok=no fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu # Checks for library functions. #AC_FUNC_ERROR_AT_LINE #AC_FUNC_MALLOC #AC_FUNC_MEMCMP #AC_FUNC_STRCOLL #AC_FUNC_STRTOD for ac_func in getcwd pathconf realpath \ getaddrinfo gethostbyaddr gethostbyname socket \ clock_gettime ftime gettimeofday \ memmove memset nl_langinfo setlocale localeconv \ strcasecmp strncasecmp stricmp strnicmp strchr strdup \ strrchr strstr strtol strtoul \ towupper towlower mblen \ wcsupr wcslwr wcsnicmp wcsicmp \ do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_cxx_check_func "$LINENO" "$ac_func" "$as_ac_var" eval as_val=\$$as_ac_var if test "x$as_val" = x""yes; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done # The check for mbrlen, wcsrtombs and mbsrtowcs gives a false # positive on HP-UX, so we use a different snippet to set the # corresponding macro { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mbrlen" >&5 $as_echo_n "checking for mbrlen... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { mbstate_t st; mbrlen( "t", 5, &st ); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<_ACEOF #define HAVE_MBRLEN 1 _ACEOF else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } cat >>confdefs.h <<_ACEOF #define HAVE_MBRLEN 0 _ACEOF fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wcsrtombs" >&5 $as_echo_n "checking for wcsrtombs... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { mbstate_t st; char buffer[2]; const wchar_t* src=0; wcsrtombs(buffer, &src, 2, &st); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<_ACEOF #define HAVE_WCSRTOMBS 1 _ACEOF else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } cat >>confdefs.h <<_ACEOF #define HAVE_WCSRTOMBS 0 _ACEOF fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: checking for mbsrtowcs" >&5 $as_echo_n "checking for mbsrtowcs... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { mbstate_t st; wchar_t buffer[2]; const char* src=0; mbsrtowcs(buffer, &src, 2, &st); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<_ACEOF #define HAVE_MBSRTOWCS 1 _ACEOF else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } cat >>confdefs.h <<_ACEOF #define HAVE_MBSRTOWCS 0 _ACEOF fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: checking if iconv uses const pointers" >&5 $as_echo_n "checking if iconv uses const pointers... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { const char *fromPtr=0; size_t fromLen=0; char *toPtr=0; size_t toLen=0; iconv_t cv=0; iconv(cv, &fromPtr, &fromLen, &toPtr, &toLen); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<_ACEOF #define ICONV_USES_CONST_POINTER 1 _ACEOF else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } cat >>confdefs.h <<_ACEOF #define ICONV_USES_CONST_POINTER 0 _ACEOF fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext SHREXT=$shrext_cmds # # Orchestrate the replacement of missing functions # for ac_func in stricmp strnicmp towlower towupper do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_cxx_check_func "$LINENO" "$ac_func" "$as_ac_var" eval as_val=\$$as_ac_var if test "x$as_val" = x""yes; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF else case " $LIBOBJS " in *" $ac_func.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS $ac_func.$ac_objext" ;; esac fi done abs_top_srcdir=`cd $srcdir; pwd` abs_top_builddir=`pwd` ###################################################### # Look for availability of available packages ###################################################### { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we'll generate prettier make output" >&5 $as_echo_n "checking whether we'll generate prettier make output... " >&6; } # Check whether --enable-pretty-make was given. if test "${enable_pretty_make+set}" = set; then : enableval=$enable_pretty_make; if test x"$enableval" = xyes; then : xerces_pretty_make=yes else xerces_pretty_make=no fi else xerces_pretty_make=yes fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $xerces_pretty_make" >&5 $as_echo "$xerces_pretty_make" >&6; } # Define the auto-make conditionals which determine what actually gets compiled # Note that these macros can't be executed conditionally, which is why they're here, not above. if test x"$xerces_pretty_make" = xyes; then XERCES_PRETTY_MAKE_TRUE= XERCES_PRETTY_MAKE_FALSE='#' else XERCES_PRETTY_MAKE_TRUE='#' XERCES_PRETTY_MAKE_FALSE= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for which path delimiter characters to accept" >&5 $as_echo_n "checking for which path delimiter characters to accept... " >&6; } path_delims=/ case $host_os in msdos* | windows* | mingw*) $as_echo "#define XERCES_PATH_DELIMITER_BACKSLASH 1" >>confdefs.h path_delims="${path_delims}\\" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $path_delims" >&5 $as_echo "$path_delims" >&6; } # Check whether --enable-threads was given. if test "${enable_threads+set}" = set; then : enableval=$enable_threads; if test x"$enableval" = xno; then : xerces_cv_no_threads=yes fi else xerces_cv_no_threads=no fi if test x$xerces_cv_no_threads = xyes; then : $as_echo "#define APP_NO_THREADS 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for which Mutex Manager to use" >&5 $as_echo_n "checking for which Mutex Manager to use... " >&6; } mutexmgr= # If no threads is specified, use the NoThread Mutex Mgr if test x$xerces_cv_no_threads = xyes; then : mutexmgr=NoThreads $as_echo "#define XERCES_USE_MUTEXMGR_NOTHREAD 1" >>confdefs.h fi # Platform specific checks if test -z "$mutexmgr"; then : case $host_os in windows* | cygwin* | mingw*) mutexmgr=Windows; $as_echo "#define XERCES_USE_MUTEXMGR_WINDOWS 1" >>confdefs.h case $host_os in mingw*) CXXFLAGS="${CXXFLAGS} -mthreads" ;; esac ;; esac fi # Fall back to using posix mutex id we can if test -z "$mutexmgr" && test x$acx_pthread_ok = xyes; then : mutexmgr=POSIX; $as_echo "#define XERCES_USE_MUTEXMGR_POSIX 1" >>confdefs.h # Set additional flags for link and compile LIBS="${LIBS} ${PTHREAD_LIBS}" CXXFLAGS="${CXXFLAGS} ${PTHREAD_CFLAGS}" fi # If we still didn't find a mutex package, bail if test -z "$mutexmgr"; then : as_fn_error "Xerces cannot function without mutex support. You may want to --disable-threads." "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $mutexmgr" >&5 $as_echo "$mutexmgr" >&6; } # Define the auto-make conditionals which determine what actually gets compiled # Note that these macros can't be executed conditionally, which is why they're here, not above. if test x"$mutexmgr" = xNoThreads; then XERCES_USE_MUTEXMGR_NOTHREAD_TRUE= XERCES_USE_MUTEXMGR_NOTHREAD_FALSE='#' else XERCES_USE_MUTEXMGR_NOTHREAD_TRUE='#' XERCES_USE_MUTEXMGR_NOTHREAD_FALSE= fi if test x"$mutexmgr" = xPOSIX; then XERCES_USE_MUTEXMGR_POSIX_TRUE= XERCES_USE_MUTEXMGR_POSIX_FALSE='#' else XERCES_USE_MUTEXMGR_POSIX_TRUE='#' XERCES_USE_MUTEXMGR_POSIX_FALSE= fi if test x"$mutexmgr" = xWindows; then XERCES_USE_MUTEXMGR_WINDOWS_TRUE= XERCES_USE_MUTEXMGR_WINDOWS_FALSE='#' else XERCES_USE_MUTEXMGR_WINDOWS_TRUE='#' XERCES_USE_MUTEXMGR_WINDOWS_FALSE= fi # Check whether --with-curl was given. if test "${with_curl+set}" = set; then : withval=$with_curl; if test x"$with_curl" = x"yes"; then with_curl= fi else with_curl= fi # Determine if curl is available if test "${xerces_cv_curl_present+set}" = set; then : $as_echo_n "(cached) " >&6 else xerces_cv_curl_present=no if test x"$with_curl" != x"no"; then # See if we were given a prefix. # if test -n "$with_curl"; then # Extract the first word of "curl-config", so it can be a program name with args. set dummy curl-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_curl_config+set}" = set; then : $as_echo_n "(cached) " >&6 else case $curl_config in [\\/]* | ?:[\\/]*) ac_cv_path_curl_config="$curl_config" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $with_curl/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_curl_config="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi curl_config=$ac_cv_path_curl_config if test -n "$curl_config"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $curl_config" >&5 $as_echo "$curl_config" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else # Extract the first word of "curl-config", so it can be a program name with args. set dummy curl-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_curl_config+set}" = set; then : $as_echo_n "(cached) " >&6 else case $curl_config in [\\/]* | ?:[\\/]*) ac_cv_path_curl_config="$curl_config" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_curl_config="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi curl_config=$ac_cv_path_curl_config if test -n "$curl_config"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $curl_config" >&5 $as_echo "$curl_config" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -n "$curl_config"; then curl_flags=`$curl_config --cflags` curl_libs=`$curl_config --libs` else if test -n "$with_curl"; then curl_flags="-I$with_curl/include" curl_libs="-L$with_curl/lib -lcurl" else # Default compiler paths. # curl_flags= curl_libs=-lcurl fi fi # Check that the headers exist and can be compiled. # orig_cppflags=$CPPFLAGS if test -n "$curl_flags"; then CPPFLAGS="$curl_flags $CPPFLAGS" fi ac_fn_cxx_check_header_mongrel "$LINENO" "curl/curl.h" "ac_cv_header_curl_curl_h" "$ac_includes_default" if test "x$ac_cv_header_curl_curl_h" = x""yes; then : xerces_cv_curl_present=yes fi CPPFLAGS=$orig_cppflags if test x"$xerces_cv_curl_present" != x"no"; then # Check that the library can be linked. # { $as_echo "$as_me:${as_lineno-$LINENO}: checking for curl_multi_init in -lcurl" >&5 $as_echo_n "checking for curl_multi_init in -lcurl... " >&6; } orig_ldflags=$LDFLAGS LDFLAGS="$curl_libs $LDFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include int main () { curl_multi_init(); return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : else xerces_cv_curl_present=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$orig_ldflags if test x"$xerces_cv_curl_present" != x"no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi fi if test "${xerces_cv_curl_flags+set}" = set; then : $as_echo_n "(cached) " >&6 else xerces_cv_curl_flags=$curl_flags fi if test "${xerces_cv_curl_libs+set}" = set; then : $as_echo_n "(cached) " >&6 else xerces_cv_curl_libs=$curl_libs fi CURL_PRESENT=$xerces_cv_curl_present CURL_FLAGS=$xerces_cv_curl_flags CURL_LIBS=$xerces_cv_curl_libs network=yes # Check whether --enable-network was given. if test "${enable_network+set}" = set; then : enableval=$enable_network; if test x"$enableval" = xno; then : network=no fi fi # If network is disabled we don't need to check any of the # netaccessors. # na_list= if test x"$network" = xyes; then # Checks for libraries. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5 $as_echo_n "checking for socket in -lsocket... " >&6; } if test "${ac_cv_lib_socket_socket+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char socket (); int main () { return socket (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_socket_socket=yes else ac_cv_lib_socket_socket=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5 $as_echo "$ac_cv_lib_socket_socket" >&6; } if test "x$ac_cv_lib_socket_socket" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBSOCKET 1 _ACEOF LIBS="-lsocket $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5 $as_echo_n "checking for gethostbyname in -lnsl... " >&6; } if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char gethostbyname (); int main () { return gethostbyname (); ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : ac_cv_lib_nsl_gethostbyname=yes else ac_cv_lib_nsl_gethostbyname=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 $as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; } if test "x$ac_cv_lib_nsl_gethostbyname" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBNSL 1 _ACEOF LIBS="-lnsl $LIBS" fi ###################################################### # Test for availability of each netaccessor on this host. # For each netaccessor that's available, and hasn't been disabled, add it to our list. # If the netaccessor has been explicitly "enable"d, then vote for it strongly, # in upper case. ###################################################### { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we can support the libcurl-based NetAccessor" >&5 $as_echo_n "checking whether we can support the libcurl-based NetAccessor... " >&6; } list_add= if test x"$xerces_cv_curl_present" != x"no"; then : # Check whether --enable-netaccessor-curl was given. if test "${enable_netaccessor_curl+set}" = set; then : enableval=$enable_netaccessor_curl; if test x"$enableval" = xyes; then : list_add=CURL fi else list_add=curl fi fi if test x"$list_add" != x; then : na_list="$na_list -$list_add-"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we can support the sockets-based NetAccessor" >&5 $as_echo_n "checking whether we can support the sockets-based NetAccessor... " >&6; } list_add= if test x"$ac_cv_header_sys_socket_h" = xyes; then : # Check whether --enable-netaccessor-socket was given. if test "${enable_netaccessor_socket+set}" = set; then : enableval=$enable_netaccessor_socket; if test x"$enableval" = xyes; then : list_add=SOCKET fi else list_add=socket fi fi if test x"$list_add" != x; then : na_list="$na_list -$list_add-"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Check for OS-specific netaccessors case $host_os in darwin*) list_add= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we can support the CFURL NetAccessor (Mac OS X)" >&5 $as_echo_n "checking whether we can support the CFURL NetAccessor (Mac OS X)... " >&6; } if test x"$ac_cv_header_CoreServices_CoreServices_h" = xyes; then : # Check whether --enable-netaccessor-cfurl was given. if test "${enable_netaccessor_cfurl+set}" = set; then : enableval=$enable_netaccessor_cfurl; if test x"$enableval" = xyes; then : list_add=CFURL fi else list_add=cfurl fi fi if test x"$list_add" != x; then : na_list="$na_list -$list_add-"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ;; windows* | mingw*) list_add= no_winsock=false for ac_header in winsock2.h do : ac_fn_cxx_check_header_mongrel "$LINENO" "winsock2.h" "ac_cv_header_winsock2_h" "$ac_includes_default" if test "x$ac_cv_header_winsock2_h" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_WINSOCK2_H 1 _ACEOF else no_winsock=true fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we can support the WinSock NetAccessor (Windows)" >&5 $as_echo_n "checking whether we can support the WinSock NetAccessor (Windows)... " >&6; } if ! $no_winsock; then : # Check whether --enable-netaccessor-winsock was given. if test "${enable_netaccessor_winsock+set}" = set; then : enableval=$enable_netaccessor_winsock; if test x"$enableval" = xyes; then : list_add=WINSOCK fi else list_add=winsock fi fi if test x"$list_add" != x; then : na_list="$na_list -$list_add-"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ;; cygwin*) # Only add it to the list if the user explicitly asked # for it. # list_add= no_winsock=false for ac_header in winsock2.h do : ac_fn_cxx_check_header_mongrel "$LINENO" "winsock2.h" "ac_cv_header_winsock2_h" "$ac_includes_default" if test "x$ac_cv_header_winsock2_h" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_WINSOCK2_H 1 _ACEOF else no_winsock=true fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use the WinSock NetAccessor (Windows)" >&5 $as_echo_n "checking whether to use the WinSock NetAccessor (Windows)... " >&6; } if ! $no_winsock; then : # Check whether --enable-netaccessor-winsock was given. if test "${enable_netaccessor_winsock+set}" = set; then : enableval=$enable_netaccessor_winsock; if test x"$enableval" = xyes; then : list_add=WINSOCK fi fi fi if test x"$list_add" != x; then : na_list="$na_list -$list_add-"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ;; esac ###################################################### # Determine which netaccessor to use. # # We do this in two passes. Accessors that have been enabled with "yes", # and which start out in upper case, get the top priority on the first pass. # On the second pass, we consider those which are simply available, but # which were not "disable"d (these won't even be in our list). ###################################################### netaccessor= az_lower=abcdefghijklmnopqrstuvwxyz az_upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for which NetAccessor to use (choices:$na_list)" >&5 $as_echo_n "checking for which NetAccessor to use (choices:$na_list)... " >&6; } for i in 1 2; do # Swap upper/lower case in the na_list. Cannot use tr ranges # because of the portability issues. # na_list=`echo $na_list | tr "$az_lower$az_upper" "$az_upper$az_lower"` # Check for each netaccessor, in implicit rank order case $na_list in *-curl-*) netaccessor=curl $as_echo "#define XERCES_USE_NETACCESSOR_CURL 1" >>confdefs.h LIBS="${LIBS} ${xerces_cv_curl_libs}" break ;; *-winsock-*) netaccessor=winsock $as_echo "#define XERCES_USE_NETACCESSOR_WINSOCK 1" >>confdefs.h break ;; *-socket-*) netaccessor=socket $as_echo "#define XERCES_USE_NETACCESSOR_SOCKET 1" >>confdefs.h break ;; *-cfurl-*) netaccessor=cfurl $as_echo "#define XERCES_USE_NETACCESSOR_CFURL 1" >>confdefs.h case $host_os in darwin*) test -z "${xerces_darwin_frameworks}" && xerces_darwin_frameworks="-" case ${xerces_darwin_frameworks} in *-CoreServices-*) ;; *) xerces_darwin_frameworks="-CoreServices${xerces_darwin_frameworks}" LIBS="-Wl,-framework -Wl,CoreServices $LIBS" ;; esac ;; esac break ;; *) if test $i -eq 2; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: none available; there will be no network access!!!" >&5 $as_echo "none available; there will be no network access!!!" >&6; } fi ;; esac done if test x"$netaccessor" != x; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $netaccessor" >&5 $as_echo "$netaccessor" >&6; } fi else # network netaccessor=disabled # for the report fi # Define the auto-make conditionals which determine what actually gets compiled # Note that these macros can't be executed conditionally, which is why they're here, not above. if test x"$netaccessor" = xcurl; then XERCES_USE_NETACCESSOR_CURL_TRUE= XERCES_USE_NETACCESSOR_CURL_FALSE='#' else XERCES_USE_NETACCESSOR_CURL_TRUE='#' XERCES_USE_NETACCESSOR_CURL_FALSE= fi if test x"$netaccessor" = xcfurl; then XERCES_USE_NETACCESSOR_CFURL_TRUE= XERCES_USE_NETACCESSOR_CFURL_FALSE='#' else XERCES_USE_NETACCESSOR_CFURL_TRUE='#' XERCES_USE_NETACCESSOR_CFURL_FALSE= fi if test x"$netaccessor" = xwinsock; then XERCES_USE_NETACCESSOR_WINSOCK_TRUE= XERCES_USE_NETACCESSOR_WINSOCK_FALSE='#' else XERCES_USE_NETACCESSOR_WINSOCK_TRUE='#' XERCES_USE_NETACCESSOR_WINSOCK_FALSE= fi if test x"$netaccessor" = xsocket; then XERCES_USE_NETACCESSOR_SOCKET_TRUE= XERCES_USE_NETACCESSOR_SOCKET_FALSE='#' else XERCES_USE_NETACCESSOR_SOCKET_TRUE='#' XERCES_USE_NETACCESSOR_SOCKET_FALSE= fi # Check whether --with-icu was given. if test "${with_icu+set}" = set; then : withval=$with_icu; if test x"$with_icu" = x"yes"; then with_icu= fi else with_icu= fi # Determine if icu is available if test "${xerces_cv_icu_present+set}" = set; then : $as_echo_n "(cached) " >&6 else xerces_cv_icu_present=no if test x"$with_icu" != x"no"; then # See if we were given a prefix. # if test -n "$with_icu"; then # Extract the first word of "icu-config", so it can be a program name with args. set dummy icu-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_icu_config+set}" = set; then : $as_echo_n "(cached) " >&6 else case $icu_config in [\\/]* | ?:[\\/]*) ac_cv_path_icu_config="$icu_config" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $with_icu/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_icu_config="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi icu_config=$ac_cv_path_icu_config if test -n "$icu_config"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $icu_config" >&5 $as_echo "$icu_config" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else # Extract the first word of "icu-config", so it can be a program name with args. set dummy icu-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_icu_config+set}" = set; then : $as_echo_n "(cached) " >&6 else case $icu_config in [\\/]* | ?:[\\/]*) ac_cv_path_icu_config="$icu_config" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_icu_config="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi icu_config=$ac_cv_path_icu_config if test -n "$icu_config"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $icu_config" >&5 $as_echo "$icu_config" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi # Add trailing slash to bin and sbin vars so that we # can use them uniformly whether they are empty or not. # if test -n "$icu_config"; then icu_flags=`$icu_config --cppflags-searchpath` icu_libs=`$icu_config --ldflags` icu_bin=`$icu_config --bindir` icu_sbin=`$icu_config --sbindir` if test -n "$icu_bin"; then icu_bin="$icu_bin/" fi if test -n "$icu_sbin"; then icu_sbin="$icu_sbin/" fi else if test -n "$with_icu"; then icu_flags="-I$with_icu/include" icu_libs="-L$with_icu/lib -licuuc -licudata" icu_bin="$with_icu/bin/" icu_sbin="$with_icu/sbin/" else # Default compiler paths. # icu_flags= icu_libs="-licuuc -licudata" icu_bin= icu_sbin= fi fi # Check that the headers exist and can be compiled. # orig_cppflags=$CPPFLAGS if test -n "$icu_flags"; then CPPFLAGS="$icu_flags $CPPFLAGS" fi ac_fn_cxx_check_header_mongrel "$LINENO" "unicode/ucnv.h" "ac_cv_header_unicode_ucnv_h" "$ac_includes_default" if test "x$ac_cv_header_unicode_ucnv_h" = x""yes; then : xerces_cv_icu_present=yes fi if test x"$xerces_cv_icu_present" != x"no"; then # Check that the library can be linked. # { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ucnv_open in -licuuc" >&5 $as_echo_n "checking for ucnv_open in -licuuc... " >&6; } orig_ldflags=$LDFLAGS LDFLAGS="$icu_libs $LDFLAGS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { ucnv_open (0, 0); return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : else xerces_cv_icu_present=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$orig_ldflags if test x"$xerces_cv_icu_present" != x"no"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi CPPFLAGS=$orig_cppflags fi fi if test "${xerces_cv_icu_flags+set}" = set; then : $as_echo_n "(cached) " >&6 else xerces_cv_icu_flags=$icu_flags fi if test "${xerces_cv_icu_libs+set}" = set; then : $as_echo_n "(cached) " >&6 else xerces_cv_icu_libs=$icu_libs fi if test "${xerces_cv_icu_bin+set}" = set; then : $as_echo_n "(cached) " >&6 else xerces_cv_icu_bin=$icu_bin fi if test "${xerces_cv_icu_sbin+set}" = set; then : $as_echo_n "(cached) " >&6 else xerces_cv_icu_sbin=$icu_sbin fi ICU_PRESENT=$xerces_cv_icu_present ICU_FLAGS=$xerces_cv_icu_flags ICU_LIBS=$xerces_cv_icu_libs ICU_BIN=$xerces_cv_icu_bin ICU_SBIN=$xerces_cv_icu_sbin ###################################################### # Test for availability of each transcoder on this host. # For each transcoder that's available, and hasn't been disabled, add it to our list. # If the transcoder has been explicitly "enable"d, then vote for it strongly, # in upper case. ###################################################### tc_list= # Check for GNU iconv support no_GNUiconv=false for ac_header in iconv.h wchar.h string.h stdlib.h stdio.h ctype.h locale.h errno.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_cxx_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" eval as_val=\$$as_ac_Header if test "x$as_val" = x""yes; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF else no_GNUiconv=true fi done # The code in iconv needs just on of these include files ac_fn_cxx_check_header_mongrel "$LINENO" "endian.h" "ac_cv_header_endian_h" "$ac_includes_default" if test "x$ac_cv_header_endian_h" = x""yes; then : else ac_fn_cxx_check_header_mongrel "$LINENO" "machine/endian.h" "ac_cv_header_machine_endian_h" "$ac_includes_default" if test "x$ac_cv_header_machine_endian_h" = x""yes; then : else ac_fn_cxx_check_header_mongrel "$LINENO" "arpa/nameser_compat.h" "ac_cv_header_arpa_nameser_compat_h" "$ac_includes_default" if test "x$ac_cv_header_arpa_nameser_compat_h" = x""yes; then : else no_GNUiconv=true fi fi fi for ac_func in iconv_open iconv_close iconv do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_cxx_check_func "$LINENO" "$ac_func" "$as_ac_var" eval as_val=\$$as_ac_var if test "x$as_val" = x""yes; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF else no_GNUiconv=true fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we can support the GNU iconv Transcoder" >&5 $as_echo_n "checking whether we can support the GNU iconv Transcoder... " >&6; } list_add= if ! $no_GNUiconv; then : # Check whether --enable-transcoder-gnuiconv was given. if test "${enable_transcoder_gnuiconv+set}" = set; then : enableval=$enable_transcoder_gnuiconv; if test x"$enableval" = xyes; then : list_add=GNUICONV fi else list_add=gnuiconv fi fi if test x"$list_add" != x; then : tc_list="$tc_list -$list_add-"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Check for iconv support no_iconv=false for ac_header in wchar.h do : ac_fn_cxx_check_header_mongrel "$LINENO" "wchar.h" "ac_cv_header_wchar_h" "$ac_includes_default" if test "x$ac_cv_header_wchar_h" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_WCHAR_H 1 _ACEOF else no_iconv=true fi done for ac_func in mblen wcstombs mbstowcs do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_cxx_check_func "$LINENO" "$ac_func" "$as_ac_var" eval as_val=\$$as_ac_var if test "x$as_val" = x""yes; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF else no_iconv=true fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we can support the iconv Transcoder" >&5 $as_echo_n "checking whether we can support the iconv Transcoder... " >&6; } list_add= if ! $no_iconv; then : # Check whether --enable-transcoder-iconv was given. if test "${enable_transcoder_iconv+set}" = set; then : enableval=$enable_transcoder_iconv; if test x"$enableval" = xyes; then : list_add=ICONV fi else list_add=iconv fi fi if test x"$list_add" != x; then : tc_list="$tc_list -$list_add-"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Check for ICU { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we can support the ICU Transcoder" >&5 $as_echo_n "checking whether we can support the ICU Transcoder... " >&6; } list_add= if test x"$xerces_cv_icu_present" != x"no"; then : # Check whether --enable-transcoder-icu was given. if test "${enable_transcoder_icu+set}" = set; then : enableval=$enable_transcoder_icu; if test x"$enableval" = xyes; then : list_add=ICU fi else list_add=icu fi fi if test x"$list_add" != x; then : tc_list="$tc_list -$list_add-"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Check for platform-specific transcoders list_add= case $host_os in darwin*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we can support the MacOSUnicodeConverter Transcoder" >&5 $as_echo_n "checking whether we can support the MacOSUnicodeConverter Transcoder... " >&6; } if test x"$ac_cv_header_CoreServices_CoreServices_h" = xyes; then : # Check whether --enable-transcoder-macosunicodeconverter was given. if test "${enable_transcoder_macosunicodeconverter+set}" = set; then : enableval=$enable_transcoder_macosunicodeconverter; if test x"$enableval" = xyes; then : list_add=MACOSUNICODECONVERTER fi else list_add=macosunicodeconverter fi fi if test x"$list_add" != x; then : tc_list="$tc_list -$list_add-"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ;; windows* | mingw*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we can support the Windows Transcoder" >&5 $as_echo_n "checking whether we can support the Windows Transcoder... " >&6; } # Check whether --enable-transcoder-windows was given. if test "${enable_transcoder_windows+set}" = set; then : enableval=$enable_transcoder_windows; if test x"$enableval" = xyes; then : list_add=WINDOWS fi else list_add=windows fi if test x"$list_add" != x; then : tc_list="$tc_list -$list_add-"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ;; cygwin*) # Only add it to the list if the user explicitly asked # for it. # { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use the Windows Transcoder" >&5 $as_echo_n "checking whether to use the Windows Transcoder... " >&6; } # Check whether --enable-transcoder-windows was given. if test "${enable_transcoder_windows+set}" = set; then : enableval=$enable_transcoder_windows; if test x"$enableval" = xyes; then : list_add=WINDOWS fi fi if test x"$list_add" != x; then : tc_list="$tc_list -$list_add-"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ;; esac # TODO: Tests for additional transcoders ###################################################### # Determine which transcoder to use. # # We do this in two passes. Transcoders that have been enabled with "yes", # and which start out in upper case, get the top priority on the first pass. # On the second pass, we consider those which are simply available, but # which were not "disable"d (these won't even be in our list). ###################################################### transcoder= az_lower=abcdefghijklmnopqrstuvwxyz az_upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for which Transcoder to use (choices:$tc_list)" >&5 $as_echo_n "checking for which Transcoder to use (choices:$tc_list)... " >&6; } for i in 1 2; do # Swap upper/lower case in the tc_list. Cannot use tr ranges # because of the portability issues. # tc_list=`echo $tc_list | tr "$az_lower$az_upper" "$az_upper$az_lower"` # Check for each transcoder, in implicit rank order case $tc_list in *-icu-*) transcoder=icu $as_echo "#define XERCES_USE_TRANSCODER_ICU 1" >>confdefs.h LIBS="${LIBS} ${xerces_cv_icu_libs}" break ;; *-macosunicodeconverter-*) transcoder=macosunicodeconverter $as_echo "#define XERCES_USE_TRANSCODER_MACOSUNICODECONVERTER 1" >>confdefs.h case $host_os in darwin*) test -z "${xerces_darwin_frameworks}" && xerces_darwin_frameworks="-" case ${xerces_darwin_frameworks} in *-CoreServices-*) ;; *) xerces_darwin_frameworks="-CoreServices${xerces_darwin_frameworks}" LIBS="-Wl,-framework -Wl,CoreServices $LIBS" ;; esac ;; esac break ;; *-gnuiconv-*) transcoder=gnuiconv $as_echo "#define XERCES_USE_TRANSCODER_GNUICONV 1" >>confdefs.h break ;; *-windows-*) transcoder=windows $as_echo "#define XERCES_USE_TRANSCODER_WINDOWS 1" >>confdefs.h break ;; *-iconv-*) transcoder=iconv $as_echo "#define XERCES_USE_TRANSCODER_ICONV 1" >>confdefs.h break ;; *) if test $i -eq 2; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } as_fn_error "Xerces cannot function without a transcoder" "$LINENO" 5 fi ;; esac done if test x"$transcoder" != x; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $transcoder" >&5 $as_echo "$transcoder" >&6; } fi # Define the auto-make conditionals which determine what actually gets compiled # Note that these macros can't be executed conditionally, which is why they're here, not above. if test x"$transcoder" = xicu; then XERCES_USE_TRANSCODER_ICU_TRUE= XERCES_USE_TRANSCODER_ICU_FALSE='#' else XERCES_USE_TRANSCODER_ICU_TRUE='#' XERCES_USE_TRANSCODER_ICU_FALSE= fi if test x"$transcoder" = xmacosunicodeconverter; then XERCES_USE_TRANSCODER_MACOSUNICODECONVERTER_TRUE= XERCES_USE_TRANSCODER_MACOSUNICODECONVERTER_FALSE='#' else XERCES_USE_TRANSCODER_MACOSUNICODECONVERTER_TRUE='#' XERCES_USE_TRANSCODER_MACOSUNICODECONVERTER_FALSE= fi if test x"$transcoder" = xgnuiconv; then XERCES_USE_TRANSCODER_GNUICONV_TRUE= XERCES_USE_TRANSCODER_GNUICONV_FALSE='#' else XERCES_USE_TRANSCODER_GNUICONV_TRUE='#' XERCES_USE_TRANSCODER_GNUICONV_FALSE= fi if test x"$transcoder" = xiconv; then XERCES_USE_TRANSCODER_ICONV_TRUE= XERCES_USE_TRANSCODER_ICONV_FALSE='#' else XERCES_USE_TRANSCODER_ICONV_TRUE='#' XERCES_USE_TRANSCODER_ICONV_FALSE= fi if test x"$transcoder" = xwindows; then XERCES_USE_TRANSCODER_WINDOWS_TRUE= XERCES_USE_TRANSCODER_WINDOWS_FALSE='#' else XERCES_USE_TRANSCODER_WINDOWS_TRUE='#' XERCES_USE_TRANSCODER_WINDOWS_FALSE= fi ###################################################### # Test for availability of each msgloader on this host. # For each msgloader that's available, and hasn't been disabled, add it to our list. # If the msgloader has been explicitly "enable"d, then vote for it strongly, # in upper case. ###################################################### ml_list= # Check for inmemory msgloader { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we support the InMemory MsgLoader" >&5 $as_echo_n "checking whether we support the InMemory MsgLoader... " >&6; } list_add= if true; then : # Check whether --enable-msgloader-inmemory was given. if test "${enable_msgloader_inmemory+set}" = set; then : enableval=$enable_msgloader_inmemory; if test x"$enableval" = xyes; then : list_add=INMEMORY fi else list_add=inmemory fi fi if test x"$list_add" != x; then : ml_list="$ml_list -$list_add-"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Check for ICU { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we support the ICU MsgLoader" >&5 $as_echo_n "checking whether we support the ICU MsgLoader... " >&6; } list_add= if test x"$xerces_cv_icu_present" != x"no"; then : # Check whether --enable-msgloader-icu was given. if test "${enable_msgloader_icu+set}" = set; then : enableval=$enable_msgloader_icu; if test x"$enableval" = xyes; then : list_add=ICU fi else list_add=icu fi fi if test x"$list_add" != x; then : ml_list="$ml_list -$list_add-"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Check for iconv support no_iconv=false for ac_header in nl_types.h do : ac_fn_cxx_check_header_mongrel "$LINENO" "nl_types.h" "ac_cv_header_nl_types_h" "$ac_includes_default" if test "x$ac_cv_header_nl_types_h" = x""yes; then : cat >>confdefs.h <<_ACEOF #define HAVE_NL_TYPES_H 1 _ACEOF else no_iconv=true fi done for ac_func in catopen catclose catgets do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_cxx_check_func "$LINENO" "$ac_func" "$as_ac_var" eval as_val=\$$as_ac_var if test "x$as_val" = x""yes; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF else no_iconv=true fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we can support the iconv MsgLoader" >&5 $as_echo_n "checking whether we can support the iconv MsgLoader... " >&6; } list_add= if ! $no_iconv; then : # Check whether --enable-msgloader-iconv was given. if test "${enable_msgloader_iconv+set}" = set; then : enableval=$enable_msgloader_iconv; if test x"$enableval" = xyes; then : list_add=ICONV fi else list_add=iconv fi fi if test x"$list_add" != x; then : ml_list="$ml_list -$list_add-"; { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # TODO: Add test for additional msgloaders ###################################################### # Determine which msgloader to use. # # We do this in two passes. MsgLoaders that have been enabled with "yes", # and which start out in upper case, get the top priority on the first pass. # On the second pass, we consider those which are simply available, but # which were not "disable"d (these won't even be in our list). ###################################################### msgloader= az_lower=abcdefghijklmnopqrstuvwxyz az_upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for which MsgLoader to use (choices:$ml_list)" >&5 $as_echo_n "checking for which MsgLoader to use (choices:$ml_list)... " >&6; } for i in 1 2; do # Swap upper/lower case in the ml_list. Cannot use tr ranges # because of the portability issues. # ml_list=`echo $ml_list | tr "$az_lower$az_upper" "$az_upper$az_lower"` # Check for each msgloader, in implicit rank order case $ml_list in *-inmemory-*) $as_echo "#define XERCES_USE_MSGLOADER_INMEMORY 1" >>confdefs.h msgloader=inmemory break ;; *-icu-*) $as_echo "#define XERCES_USE_MSGLOADER_ICU 1" >>confdefs.h msgloader=icu LIBS="${LIBS} ${xerces_cv_icu_libs}" break ;; *-iconv-*) $as_echo "#define XERCES_USE_MSGLOADER_ICONV 1" >>confdefs.h msgloader=iconv break ;; *) if test $i -eq 2; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } as_fn_error "Xerces cannot function without a MsgLoader" "$LINENO" 5 fi ;; esac done if test x"$msgloader" != x; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $msgloader" >&5 $as_echo "$msgloader" >&6; } fi # Define the auto-make conditionals which determine what actually gets compiled # Note that these macros can't be executed conditionally, which is why they're here, not above. if test x"$msgloader" = xicu; then XERCES_USE_MSGLOADER_ICU_TRUE= XERCES_USE_MSGLOADER_ICU_FALSE='#' else XERCES_USE_MSGLOADER_ICU_TRUE='#' XERCES_USE_MSGLOADER_ICU_FALSE= fi if test x"$msgloader" = xiconv; then XERCES_USE_MSGLOADER_ICONV_TRUE= XERCES_USE_MSGLOADER_ICONV_FALSE='#' else XERCES_USE_MSGLOADER_ICONV_TRUE='#' XERCES_USE_MSGLOADER_ICONV_FALSE= fi if test x"$msgloader" = xinmemory; then XERCES_USE_MSGLOADER_INMEMORY_TRUE= XERCES_USE_MSGLOADER_INMEMORY_FALSE='#' else XERCES_USE_MSGLOADER_INMEMORY_TRUE='#' XERCES_USE_MSGLOADER_INMEMORY_FALSE= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for which File Manager to use" >&5 $as_echo_n "checking for which File Manager to use... " >&6; } filemgr= # Platform specific checks case $host_os in windows* | mingw*) filemgr=Windows; $as_echo "#define XERCES_USE_FILEMGR_WINDOWS 1" >>confdefs.h ;; esac # Fall back to using posix files if test -z "$filemgr"; then : filemgr=POSIX; $as_echo "#define XERCES_USE_FILEMGR_POSIX 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $filemgr" >&5 $as_echo "$filemgr" >&6; } # Define the auto-make conditionals which determine what actually gets compiled # Note that these macros can't be executed conditionally, which is why they're here, not above. if test x"$filemgr" = xPOSIX; then XERCES_USE_FILEMGR_POSIX_TRUE= XERCES_USE_FILEMGR_POSIX_FALSE='#' else XERCES_USE_FILEMGR_POSIX_TRUE='#' XERCES_USE_FILEMGR_POSIX_FALSE= fi if test x"$filemgr" = xWindows; then XERCES_USE_FILEMGR_WINDOWS_TRUE= XERCES_USE_FILEMGR_WINDOWS_FALSE='#' else XERCES_USE_FILEMGR_WINDOWS_TRUE='#' XERCES_USE_FILEMGR_WINDOWS_FALSE= fi # Allow the user to specify the pkgconfig directory. # # Check whether --with-pkgconfigdir was given. if test "${with_pkgconfigdir+set}" = set; then : withval=$with_pkgconfigdir; pkgconfigdir=${withval} else pkgconfigdir='${libdir}/pkgconfig' fi # Allow the user to disable the SSE2 support # # Check whether --enable-sse2 was given. if test "${enable_sse2+set}" = set; then : enableval=$enable_sse2; have_sse2=${enableval} else have_sse2=yes fi ###################################################### # Define some namespace-protected macros for use in the # publicly visible Xerces_autoconf_config.h file. ###################################################### $as_echo "#define XERCES_AUTOCONF 1" >>confdefs.h if test x$ac_cv_header_sys_types_h = xyes; then : $as_echo "#define XERCES_HAVE_SYS_TYPES_H 1" >>confdefs.h fi if test x$ac_cv_header_inttypes_h = xyes; then : $as_echo "#define XERCES_HAVE_INTTYPES_H 1" >>confdefs.h fi case $host in *-*-msdos* | *-*-mingw32* | *-*-cygwin* | *-*-windows* ) platform_export="__declspec(dllexport)" platform_import="__declspec(dllimport)" ;; * ) platform_export="" platform_import="" ;; esac cat >>confdefs.h <<_ACEOF #define XERCES_PLATFORM_EXPORT $platform_export _ACEOF cat >>confdefs.h <<_ACEOF #define XERCES_PLATFORM_IMPORT $platform_import _ACEOF if test ! $ac_cv_cxx_have_bool; then : $as_echo "#define XERCES_NO_NATIVE_BOOL 1" >>confdefs.h fi if test $ac_cv_cxx_have_lstring; then : $as_echo "#define XERCES_LSTRSUPPORT 1" >>confdefs.h fi # check if the Windows API is defined as using wchar_t or unsigned short; if it's wchar_t, we need to map XMLCh to be wchar_t # (this is safe because on Windows wchar_t is used to store UTF-16 codepoints, while it is not true on Unix) { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the Windows SDK is available and using wchar_t as wide string" >&5 $as_echo_n "checking whether the Windows SDK is available and using wchar_t as wide string... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include wchar_t file[] = L"dummy.file"; int main () { DeleteFileW(file); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : xerces_cv_type_xmlch=wchar_t { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<_ACEOF #define XERCES_INCLUDE_WCHAR_H 1 _ACEOF else xerces_cv_type_xmlch=$xerces_cv_type_u16bit_int { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext cat >>confdefs.h <<_ACEOF #define XERCES_XMLCH_T $xerces_cv_type_xmlch _ACEOF { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler chokes on a placement operator delete" >&5 $as_echo_n "checking whether the compiler chokes on a placement operator delete... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include class XMemory { public : void* operator new(size_t s) { return 0; } void* operator new(size_t s, void* ptr) { return 0; } void operator delete(void* p) {} void operator delete(void* p, void* ptr) {} }; int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<_ACEOF #define XERCES_NO_MATCHING_DELETE_OPERATOR 1 _ACEOF fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test "$have_sse2" = "yes"; then no_sse2_CXXFLAGS="$CXXFLAGS" save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -msse2" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we need to add -msse2" >&5 $as_echo_n "checking whether we need to add -msse2... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { __m128i one; ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : msse2_ok=yes else msse2_ok=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $msse2_ok" >&5 $as_echo "$msse2_ok" >&6; } if test x"$msse2_ok" = xno; then CXXFLAGS="$save_CXXFLAGS" fi # Sun CC option test. Currently disabled since it doesn't work. Also note # that Sun CC will accept -msse2 (i.e., it won't fail) but will keep issuing # warnings. So if enabled this test needs to be moved before -msse2 and if # it passes, then -msse2 should be skipped. # # save_CXXFLAGS="$CXXFLAGS" # CXXFLAGS="$CXXFLAGS -xarch=sse2" # AC_MSG_CHECKING([whether we need to add -xarch=sse2]) # AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[#include ]], [[__m128i one;]])], # [xarchsse2_ok=yes], # [xarchsse2_ok=no] # ) # AC_MSG_RESULT($xarchsse2_ok) # if test x"$xarchsse2_ok" = xno; then # CXXFLAGS="$save_CXXFLAGS" # fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for intrin.h usability" >&5 $as_echo_n "checking for intrin.h usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<_ACEOF #define XERCES_HAVE_INTRIN_H 1 _ACEOF else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: checking for emmintrin.h usability" >&5 $as_echo_n "checking for emmintrin.h usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<_ACEOF #define XERCES_HAVE_EMMINTRIN_H 1 _ACEOF else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: checking for cpuid.h usability" >&5 $as_echo_n "checking for cpuid.h usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<_ACEOF #define HAVE_CPUID_H 1 _ACEOF else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler has the CPUID intrinsic" >&5 $as_echo_n "checking whether the compiler has the CPUID intrinsic... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int CPUInfo[4]; __cpuid(CPUInfo, 1); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<_ACEOF #define XERCES_HAVE_CPUID_INTRINSIC 1 _ACEOF else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler has the _get_cpuid intrinsic" >&5 $as_echo_n "checking whether the compiler has the _get_cpuid intrinsic... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { unsigned int eax, ebx, ecx, edx; __get_cpuid (1, &eax, &ebx, &ecx, &edx); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } cat >>confdefs.h <<_ACEOF #define XERCES_HAVE_GETCPUID 1 _ACEOF else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler has the SSE2 intrinsic" >&5 $as_echo_n "checking whether the compiler has the SSE2 intrinsic... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { __m128i* one=(__m128i*)_mm_malloc(4, 16); __m128i* two=(__m128i*)_mm_malloc(4, 16); __m128i xmm1 = _mm_load_si128(one); __m128i xmm2 = _mm_load_si128(two); __m128i xmm3 = _mm_or_si128(xmm1, xmm2); _mm_store_si128(one, xmm3); _mm_free(one); _mm_free(two); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } sse2_usable=yes cat >>confdefs.h <<_ACEOF #define XERCES_HAVE_SSE2_INTRINSIC 1 _ACEOF else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } sse2_usable=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Restore original CXXFLAGS if SSE2 is not usable. # if test "$sse2_usable" = "no"; then CXXFLAGS="$no_sse2_CXXFLAGS" fi fi if test x$ac_cv_type_size_t = xyes; then : $as_echo "#define XERCES_SIZE_T size_t" >>confdefs.h else $as_echo "#define XERCES_SIZE_T long" >>confdefs.h fi if test x$ac_cv_type_ssize_t = xyes; then : $as_echo "#define XERCES_SSIZE_T ssize_t" >>confdefs.h else $as_echo "#define XERCES_SSIZE_T unsigned long" >>confdefs.h fi if test x$ac_cv_cxx_have_namespaces = xyes; then : $as_echo "#define XERCES_HAS_CPP_NAMESPACE 1" >>confdefs.h fi if test x$ac_cv_cxx_have_std_namespace = xyes; then : $as_echo "#define XERCES_STD_NAMESPACE 1" >>confdefs.h fi if test x$ac_cv_cxx_have_std_libs = xyes; then : $as_echo "#define XERCES_NEW_IOSTREAMS 1" >>confdefs.h fi cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then test "x$cache_file" != "x/dev/null" && { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then as_fn_error "conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${XERCES_PRETTY_MAKE_TRUE}" && test -z "${XERCES_PRETTY_MAKE_FALSE}"; then as_fn_error "conditional \"XERCES_PRETTY_MAKE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${XERCES_USE_MUTEXMGR_NOTHREAD_TRUE}" && test -z "${XERCES_USE_MUTEXMGR_NOTHREAD_FALSE}"; then as_fn_error "conditional \"XERCES_USE_MUTEXMGR_NOTHREAD\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${XERCES_USE_MUTEXMGR_POSIX_TRUE}" && test -z "${XERCES_USE_MUTEXMGR_POSIX_FALSE}"; then as_fn_error "conditional \"XERCES_USE_MUTEXMGR_POSIX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${XERCES_USE_MUTEXMGR_WINDOWS_TRUE}" && test -z "${XERCES_USE_MUTEXMGR_WINDOWS_FALSE}"; then as_fn_error "conditional \"XERCES_USE_MUTEXMGR_WINDOWS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${XERCES_USE_NETACCESSOR_CURL_TRUE}" && test -z "${XERCES_USE_NETACCESSOR_CURL_FALSE}"; then as_fn_error "conditional \"XERCES_USE_NETACCESSOR_CURL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${XERCES_USE_NETACCESSOR_CFURL_TRUE}" && test -z "${XERCES_USE_NETACCESSOR_CFURL_FALSE}"; then as_fn_error "conditional \"XERCES_USE_NETACCESSOR_CFURL\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${XERCES_USE_NETACCESSOR_WINSOCK_TRUE}" && test -z "${XERCES_USE_NETACCESSOR_WINSOCK_FALSE}"; then as_fn_error "conditional \"XERCES_USE_NETACCESSOR_WINSOCK\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${XERCES_USE_NETACCESSOR_SOCKET_TRUE}" && test -z "${XERCES_USE_NETACCESSOR_SOCKET_FALSE}"; then as_fn_error "conditional \"XERCES_USE_NETACCESSOR_SOCKET\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${XERCES_USE_TRANSCODER_ICU_TRUE}" && test -z "${XERCES_USE_TRANSCODER_ICU_FALSE}"; then as_fn_error "conditional \"XERCES_USE_TRANSCODER_ICU\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${XERCES_USE_TRANSCODER_MACOSUNICODECONVERTER_TRUE}" && test -z "${XERCES_USE_TRANSCODER_MACOSUNICODECONVERTER_FALSE}"; then as_fn_error "conditional \"XERCES_USE_TRANSCODER_MACOSUNICODECONVERTER\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${XERCES_USE_TRANSCODER_GNUICONV_TRUE}" && test -z "${XERCES_USE_TRANSCODER_GNUICONV_FALSE}"; then as_fn_error "conditional \"XERCES_USE_TRANSCODER_GNUICONV\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${XERCES_USE_TRANSCODER_ICONV_TRUE}" && test -z "${XERCES_USE_TRANSCODER_ICONV_FALSE}"; then as_fn_error "conditional \"XERCES_USE_TRANSCODER_ICONV\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${XERCES_USE_TRANSCODER_WINDOWS_TRUE}" && test -z "${XERCES_USE_TRANSCODER_WINDOWS_FALSE}"; then as_fn_error "conditional \"XERCES_USE_TRANSCODER_WINDOWS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${XERCES_USE_MSGLOADER_ICU_TRUE}" && test -z "${XERCES_USE_MSGLOADER_ICU_FALSE}"; then as_fn_error "conditional \"XERCES_USE_MSGLOADER_ICU\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${XERCES_USE_MSGLOADER_ICONV_TRUE}" && test -z "${XERCES_USE_MSGLOADER_ICONV_FALSE}"; then as_fn_error "conditional \"XERCES_USE_MSGLOADER_ICONV\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${XERCES_USE_MSGLOADER_INMEMORY_TRUE}" && test -z "${XERCES_USE_MSGLOADER_INMEMORY_FALSE}"; then as_fn_error "conditional \"XERCES_USE_MSGLOADER_INMEMORY\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${XERCES_USE_FILEMGR_POSIX_TRUE}" && test -z "${XERCES_USE_FILEMGR_POSIX_FALSE}"; then as_fn_error "conditional \"XERCES_USE_FILEMGR_POSIX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${XERCES_USE_FILEMGR_WINDOWS_TRUE}" && test -z "${XERCES_USE_FILEMGR_WINDOWS_FALSE}"; then as_fn_error "conditional \"XERCES_USE_FILEMGR_WINDOWS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : ${CONFIG_STATUS=./config.status} ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do 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 as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error ERROR [LINENO LOG_FD] # --------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with status $?, using 1 if that was 0. as_fn_error () { as_status=$?; test $as_status -eq 0 && as_status=1 if test "$3"; then as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3 fi $as_echo "$as_me: error: $1" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in #( -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by xerces-c $as_me 3.1.1, which was generated by GNU Autoconf 2.64. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ xerces-c config.status 3.1.1 configured by $0, generated by GNU Autoconf 2.64, with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2009 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" # 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' AS='`$ECHO "X$AS" | $Xsed -e "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "X$DLLTOOL" | $Xsed -e "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "X$OBJDUMP" | $Xsed -e "$delay_single_quote_subst"`' macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`' macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`' enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`' enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`' pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`' host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`' host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`' host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`' build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`' build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`' build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`' SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`' Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`' GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`' EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`' FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`' LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`' NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`' LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`' ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`' exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`' lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`' reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`' reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`' AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`' STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`' RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`' CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`' compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`' GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`' SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`' ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`' need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`' NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`' LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`' OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`' OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`' libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`' fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`' include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`' file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`' version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`' runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`' libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`' library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`' soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`' finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`' sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`' hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`' old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`' striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`' compiler_lib_search_dirs='`$ECHO "X$compiler_lib_search_dirs" | $Xsed -e "$delay_single_quote_subst"`' predep_objects='`$ECHO "X$predep_objects" | $Xsed -e "$delay_single_quote_subst"`' postdep_objects='`$ECHO "X$postdep_objects" | $Xsed -e "$delay_single_quote_subst"`' predeps='`$ECHO "X$predeps" | $Xsed -e "$delay_single_quote_subst"`' postdeps='`$ECHO "X$postdeps" | $Xsed -e "$delay_single_quote_subst"`' compiler_lib_search_path='`$ECHO "X$compiler_lib_search_path" | $Xsed -e "$delay_single_quote_subst"`' LD_CXX='`$ECHO "X$LD_CXX" | $Xsed -e "$delay_single_quote_subst"`' old_archive_cmds_CXX='`$ECHO "X$old_archive_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' compiler_CXX='`$ECHO "X$compiler_CXX" | $Xsed -e "$delay_single_quote_subst"`' GCC_CXX='`$ECHO "X$GCC_CXX" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "X$lt_prog_compiler_no_builtin_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_wl_CXX='`$ECHO "X$lt_prog_compiler_wl_CXX" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_pic_CXX='`$ECHO "X$lt_prog_compiler_pic_CXX" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_static_CXX='`$ECHO "X$lt_prog_compiler_static_CXX" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o_CXX='`$ECHO "X$lt_cv_prog_compiler_c_o_CXX" | $Xsed -e "$delay_single_quote_subst"`' archive_cmds_need_lc_CXX='`$ECHO "X$archive_cmds_need_lc_CXX" | $Xsed -e "$delay_single_quote_subst"`' enable_shared_with_static_runtimes_CXX='`$ECHO "X$enable_shared_with_static_runtimes_CXX" | $Xsed -e "$delay_single_quote_subst"`' export_dynamic_flag_spec_CXX='`$ECHO "X$export_dynamic_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' whole_archive_flag_spec_CXX='`$ECHO "X$whole_archive_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' compiler_needs_object_CXX='`$ECHO "X$compiler_needs_object_CXX" | $Xsed -e "$delay_single_quote_subst"`' old_archive_from_new_cmds_CXX='`$ECHO "X$old_archive_from_new_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds_CXX='`$ECHO "X$old_archive_from_expsyms_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' archive_cmds_CXX='`$ECHO "X$archive_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' archive_expsym_cmds_CXX='`$ECHO "X$archive_expsym_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' module_cmds_CXX='`$ECHO "X$module_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' module_expsym_cmds_CXX='`$ECHO "X$module_expsym_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' with_gnu_ld_CXX='`$ECHO "X$with_gnu_ld_CXX" | $Xsed -e "$delay_single_quote_subst"`' allow_undefined_flag_CXX='`$ECHO "X$allow_undefined_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`' no_undefined_flag_CXX='`$ECHO "X$no_undefined_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_CXX='`$ECHO "X$hardcode_libdir_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_ld_CXX='`$ECHO "X$hardcode_libdir_flag_spec_ld_CXX" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_separator_CXX='`$ECHO "X$hardcode_libdir_separator_CXX" | $Xsed -e "$delay_single_quote_subst"`' hardcode_direct_CXX='`$ECHO "X$hardcode_direct_CXX" | $Xsed -e "$delay_single_quote_subst"`' hardcode_direct_absolute_CXX='`$ECHO "X$hardcode_direct_absolute_CXX" | $Xsed -e "$delay_single_quote_subst"`' hardcode_minus_L_CXX='`$ECHO "X$hardcode_minus_L_CXX" | $Xsed -e "$delay_single_quote_subst"`' hardcode_shlibpath_var_CXX='`$ECHO "X$hardcode_shlibpath_var_CXX" | $Xsed -e "$delay_single_quote_subst"`' hardcode_automatic_CXX='`$ECHO "X$hardcode_automatic_CXX" | $Xsed -e "$delay_single_quote_subst"`' inherit_rpath_CXX='`$ECHO "X$inherit_rpath_CXX" | $Xsed -e "$delay_single_quote_subst"`' link_all_deplibs_CXX='`$ECHO "X$link_all_deplibs_CXX" | $Xsed -e "$delay_single_quote_subst"`' fix_srcfile_path_CXX='`$ECHO "X$fix_srcfile_path_CXX" | $Xsed -e "$delay_single_quote_subst"`' always_export_symbols_CXX='`$ECHO "X$always_export_symbols_CXX" | $Xsed -e "$delay_single_quote_subst"`' export_symbols_cmds_CXX='`$ECHO "X$export_symbols_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' exclude_expsyms_CXX='`$ECHO "X$exclude_expsyms_CXX" | $Xsed -e "$delay_single_quote_subst"`' include_expsyms_CXX='`$ECHO "X$include_expsyms_CXX" | $Xsed -e "$delay_single_quote_subst"`' prelink_cmds_CXX='`$ECHO "X$prelink_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' file_list_spec_CXX='`$ECHO "X$file_list_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' hardcode_action_CXX='`$ECHO "X$hardcode_action_CXX" | $Xsed -e "$delay_single_quote_subst"`' compiler_lib_search_dirs_CXX='`$ECHO "X$compiler_lib_search_dirs_CXX" | $Xsed -e "$delay_single_quote_subst"`' predep_objects_CXX='`$ECHO "X$predep_objects_CXX" | $Xsed -e "$delay_single_quote_subst"`' postdep_objects_CXX='`$ECHO "X$postdep_objects_CXX" | $Xsed -e "$delay_single_quote_subst"`' predeps_CXX='`$ECHO "X$predeps_CXX" | $Xsed -e "$delay_single_quote_subst"`' postdeps_CXX='`$ECHO "X$postdeps_CXX" | $Xsed -e "$delay_single_quote_subst"`' compiler_lib_search_path_CXX='`$ECHO "X$compiler_lib_search_path_CXX" | $Xsed -e "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # Quote evaled strings. for var in SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ deplibs_check_method \ file_magic_cmd \ AR \ AR_FLAGS \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ SHELL \ ECHO \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_wl \ lt_prog_compiler_pic \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_flag_spec_ld \ hardcode_libdir_separator \ fix_srcfile_path \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ finish_eval \ old_striplib \ striplib \ compiler_lib_search_dirs \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ LD_CXX \ compiler_CXX \ lt_prog_compiler_no_builtin_flag_CXX \ lt_prog_compiler_wl_CXX \ lt_prog_compiler_pic_CXX \ lt_prog_compiler_static_CXX \ lt_cv_prog_compiler_c_o_CXX \ export_dynamic_flag_spec_CXX \ whole_archive_flag_spec_CXX \ compiler_needs_object_CXX \ with_gnu_ld_CXX \ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ hardcode_libdir_flag_spec_CXX \ hardcode_libdir_flag_spec_ld_CXX \ hardcode_libdir_separator_CXX \ fix_srcfile_path_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX \ file_list_spec_CXX \ compiler_lib_search_dirs_CXX \ predep_objects_CXX \ postdep_objects_CXX \ predeps_CXX \ postdeps_CXX \ compiler_lib_search_path_CXX; 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 reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ sys_lib_dlsearch_path_spec \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ old_archive_from_expsyms_cmds_CXX \ archive_cmds_CXX \ archive_expsym_cmds_CXX \ module_cmds_CXX \ module_expsym_cmds_CXX \ export_symbols_cmds_CXX \ prelink_cmds_CXX; 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"') lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\` ;; esac ac_aux_dir='$ac_aux_dir' xsi_shell='$xsi_shell' lt_shell_append='$lt_shell_append' # 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 PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile' libtool_patch_use_rpath=$xerces_cv_rpath _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "src/xercesc/util/Xerces_autoconf_config.hpp") CONFIG_HEADERS="$CONFIG_HEADERS src/xercesc/util/Xerces_autoconf_config.hpp" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "src/xercesc/util/MsgLoaders/MsgCatalog/Makefile") CONFIG_FILES="$CONFIG_FILES src/xercesc/util/MsgLoaders/MsgCatalog/Makefile" ;; "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; "samples/Makefile") CONFIG_FILES="$CONFIG_FILES samples/Makefile" ;; "xerces-c.pc") CONFIG_FILES="$CONFIG_FILES xerces-c.pc" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "libtool-rpath-patch") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool-rpath-patch" ;; *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= trap 'exit_status=$? { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5 # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\).*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\).*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ || as_fn_error "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/ s/:*\${srcdir}:*/:/ s/:*@srcdir@:*/:/ s/^\([^=]*=[ ]*\):*/\1/ s/:*$// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_t=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_t"; then break elif $ac_last_try; then as_fn_error "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$tmp/stdin" \ || as_fn_error "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ || as_fn_error "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&2;} rm -f "$tmp/stdin" case $ac_file in -) cat "$tmp/out" && rm -f "$tmp/out";; *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; esac \ || as_fn_error "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" } >"$tmp/config.h" \ || as_fn_error "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$tmp/config.h" "$ac_file" \ || as_fn_error "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _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" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # 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" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` 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_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; "libtool":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. # # 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. # The names of the tagged configurations supported by this script. available_tags="CXX " # ### BEGIN LIBTOOL CONFIG # Assembler program. AS=$AS # DLL creation program. DLLTOOL=$DLLTOOL # Object dumper program. OBJDUMP=$OBJDUMP # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == "file_magic". file_magic_cmd=$lt_file_magic_cmd # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # The name of the directory that contains temporary libtool files. objdir=$objdir # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that does not interpret backslashes. ECHO=$lt_ECHO # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # 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 library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # If ld is used when linking, flag to hardcode \$libdir into a binary # during linking. This must work even if \$libdir does not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # 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. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects postdep_objects=$lt_postdep_objects predeps=$lt_predeps postdeps=$lt_postdeps # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path # ### 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 ltmain="$ac_aux_dir/ltmain.sh" # 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) 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"` } # 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 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" # ### BEGIN LIBTOOL TAG CONFIG: CXX # The linker used to build libraries. LD=$lt_LD_CXX # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds_CXX # A language specific compiler. CC=$lt_compiler_CXX # Is the compiler the GNU compiler? with_gcc=$GCC_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_CXX # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_CXX # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object_CXX # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds_CXX archive_expsym_cmds=$lt_archive_expsym_cmds_CXX # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds_CXX module_expsym_cmds=$lt_module_expsym_cmds_CXX # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld_CXX # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_CXX # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_CXX # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX # If ld is used when linking, flag to hardcode \$libdir into a binary # during linking. This must work even if \$libdir does not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct_CXX # 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. hardcode_direct_absolute=$hardcode_direct_absolute_CXX # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L_CXX # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic_CXX # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath_CXX # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path_CXX # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols_CXX # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_CXX # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_CXX # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_CXX # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds_CXX # Specify filename containing input files. file_list_spec=$lt_file_list_spec_CXX # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_CXX # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects_CXX postdep_objects=$lt_postdep_objects_CXX predeps=$lt_predeps_CXX postdeps=$lt_postdeps_CXX # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_CXX # ### END LIBTOOL TAG CONFIG: CXX _LT_EOF ;; "libtool-rpath-patch":C) if test "$libtool_patch_use_rpath" = "no"; then echo config.status: patching libtool to not use rpath sed < libtool > libtool-2 's/^hardcode_libdir_flag_spec.*$'/'hardcode_libdir_flag_spec=" -D__LIBTOOL_NO_RPATH__ "/' mv libtool-2 libtool chmod 755 libtool fi ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit $? fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi { $as_echo "$as_me:${as_lineno-$LINENO}: " >&5 $as_echo "$as_me: " >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: Report:" >&5 $as_echo "$as_me: Report:" >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: File Manager: $filemgr" >&5 $as_echo "$as_me: File Manager: $filemgr" >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: Mutex Manager: $mutexmgr" >&5 $as_echo "$as_me: Mutex Manager: $mutexmgr" >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: Transcoder: $transcoder" >&5 $as_echo "$as_me: Transcoder: $transcoder" >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: NetAccessor: $netaccessor" >&5 $as_echo "$as_me: NetAccessor: $netaccessor" >&6;} { $as_echo "$as_me:${as_lineno-$LINENO}: Message Loader: $msgloader" >&5 $as_echo "$as_me: Message Loader: $msgloader" >&6;} xerces-c-3.1.1/configure.ac0000644000175000017500000004214711362617414014546 0ustar borisboris# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. # # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # # $Id: configure.ac 935350 2010-04-18 15:02:36Z borisk $ # AC_PREREQ(2.60) AC_INIT([xerces-c],[3.1.1]) AC_CONFIG_SRCDIR([src/Makefile.am]) AC_CONFIG_LIBOBJ_DIR([src]) AC_CONFIG_AUX_DIR([config]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_HEADERS([config.h src/xercesc/util/Xerces_autoconf_config.hpp]) AC_CONFIG_FILES([Makefile \ src/Makefile \ src/xercesc/util/MsgLoaders/MsgCatalog/Makefile \ tests/Makefile \ samples/Makefile \ xerces-c.pc]) # Check the target system AC_CANONICAL_HOST # Initialize automake AM_INIT_AUTOMAKE([foreign subdir-objects dist-bzip2 tar-ustar]) AM_MAINTAINER_MODE # Check if rpath is disabled AC_MSG_CHECKING(whether to use rpath) AC_ARG_ENABLE(rpath, [AC_HELP_STRING([--disable-rpath], [Patches libtool to not use rpath in the libraries produced.])], [xerces_cv_rpath="$enable_rpath"], [xerces_cv_rpath="yes"]) AC_MSG_RESULT($xerces_cv_rpath) # Checks for programs. AC_PROG_CXX # Use the C++ compiler for the compile tests AC_LANG(C++) # used by "make check" AC_PROG_SED #it would be nice to also check for PERL... #AC_PROG_PERL #skip detection of Fortran m4_undefine([AC_PROG_F77]) m4_defun([AC_PROG_F77],[]) AC_PROG_LN_S AC_LIBTOOL_WIN32_DLL AC_PROG_LIBTOOL AM_PROG_CC_C_O AS_IF([test x$AR = xfalse], AC_MSG_ERROR([Cannot find a valid 'ar' tool])) # Patch libtool to not use rpath if requested. # AC_CONFIG_COMMANDS([libtool-rpath-patch], [if test "$libtool_patch_use_rpath" = "no"; then echo config.status: patching libtool to not use rpath sed < libtool > libtool-2 's/^hardcode_libdir_flag_spec.*$'/'hardcode_libdir_flag_spec=" -D__LIBTOOL_NO_RPATH__ "/' mv libtool-2 libtool chmod 755 libtool fi], [libtool_patch_use_rpath=$xerces_cv_rpath]) # Export information on whether we are building static/shared libraries. # enable_shared and enable_static are defined by AC_PROG_LIBTOOL. # AC_SUBST([BUILD_SHARED], [$enable_shared]) AC_SUBST([BUILD_STATIC], [$enable_static]) # Checks for header files. AC_HEADER_STDC AC_HEADER_TIME AC_CHECK_HEADERS([arpa/inet.h fcntl.h float.h inttypes.h langinfo.h limits.h locale.h \ memory.h netdb.h netinet/in.h nl_types.h stddef.h stdint.h stdlib.h \ string.h strings.h \ sys/param.h sys/socket.h sys/time.h sys/timeb.h \ unistd.h wchar.h wctype.h \ CoreServices/CoreServices.h \ endian.h machine/endian.h arpa/nameser_compat.h \ ]) # Checks for typedefs, structures, and compiler characteristics. AC_HEADER_STDBOOL AC_C_CONST AC_C_INLINE AC_C_VOLATILE AC_CHECK_SIZEOF(wchar_t) AC_CHECK_TYPE(size_t) AC_CHECK_TYPE(ssize_t) AC_TYPE_OFF_T AC_TYPE_SIZE_T XERCES_INT_TYPES AC_CXX_HAVE_BOOL AC_CXX_HAVE_NAMESPACES AC_CXX_HAVE_STD_NAMESPACE AC_CXX_HAVE_STD_LIBS AC_CXX_HAVE_LSTRING ACX_PTHREAD # Checks for library functions. #AC_FUNC_ERROR_AT_LINE #AC_FUNC_MALLOC #AC_FUNC_MEMCMP #AC_FUNC_STRCOLL #AC_FUNC_STRTOD AC_CHECK_FUNCS([getcwd pathconf realpath \ getaddrinfo gethostbyaddr gethostbyname socket \ clock_gettime ftime gettimeofday \ memmove memset nl_langinfo setlocale localeconv \ strcasecmp strncasecmp stricmp strnicmp strchr strdup \ strrchr strstr strtol strtoul \ towupper towlower mblen \ wcsupr wcslwr wcsnicmp wcsicmp \ ]) # The check for mbrlen, wcsrtombs and mbsrtowcs gives a false # positive on HP-UX, so we use a different snippet to set the # corresponding macro AC_MSG_CHECKING([for mbrlen]) AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[#include ]], [[mbstate_t st; mbrlen( "t", 5, &st );]])], [ AC_MSG_RESULT([yes]) AC_DEFINE_UNQUOTED([HAVE_MBRLEN], 1, [Define to 1 if you have the `mbrlen' function.]) ], [ AC_MSG_RESULT([no]) AC_DEFINE_UNQUOTED([HAVE_MBRLEN], 0, [Define to 1 if you have the `mbrlen' function.]) ] ) AC_MSG_CHECKING([for wcsrtombs]) AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[#include ]], [[mbstate_t st; char buffer[2]; const wchar_t* src=0; wcsrtombs(buffer, &src, 2, &st);]])], [ AC_MSG_RESULT([yes]) AC_DEFINE_UNQUOTED([HAVE_WCSRTOMBS], 1, [Define to 1 if you have the `wcsrtombs' function.]) ], [ AC_MSG_RESULT([no]) AC_DEFINE_UNQUOTED([HAVE_WCSRTOMBS], 0, [Define to 1 if you have the `wcsrtombs' function.]) ] ) AC_MSG_CHECKING([for mbsrtowcs]) AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[#include ]], [[mbstate_t st; wchar_t buffer[2]; const char* src=0; mbsrtowcs(buffer, &src, 2, &st);]])], [ AC_MSG_RESULT([yes]) AC_DEFINE_UNQUOTED([HAVE_MBSRTOWCS], 1, [Define to 1 if you have the `mbsrtowcs' function.]) ], [ AC_MSG_RESULT([no]) AC_DEFINE_UNQUOTED([HAVE_MBSRTOWCS], 0, [Define to 1 if you have the `mbsrtowcs' function.]) ] ) AC_MSG_CHECKING([if iconv uses const pointers]) AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[#include ]], [[ const char *fromPtr=0; size_t fromLen=0; char *toPtr=0; size_t toLen=0; iconv_t cv=0; iconv(cv, &fromPtr, &fromLen, &toPtr, &toLen); ]])], [ AC_MSG_RESULT([yes]) AC_DEFINE_UNQUOTED([ICONV_USES_CONST_POINTER], 1, [Define to 1 if you have to use const char* with iconv, to 0 if you must use char*.]) ], [ AC_MSG_RESULT([no]) AC_DEFINE_UNQUOTED([ICONV_USES_CONST_POINTER], 0, [Define to 1 if you have to use const char* with iconv, to 0 if you must use char*.]) ] ) AC_SUBST([SHREXT], [$shrext_cmds]) # # Orchestrate the replacement of missing functions # AC_REPLACE_FUNCS([stricmp strnicmp towlower towupper]) abs_top_srcdir=`cd $srcdir; pwd` AC_SUBST(abs_top_srcdir) abs_top_builddir=`pwd` AC_SUBST(abs_top_builddir) ###################################################### # Look for availability of available packages ###################################################### XERCES_PRETTY_MAKE XERCES_PATH_DELIMITERS XERCES_MUTEXMGR_SELECTION XERCES_NETACCESSOR_SELECTION XERCES_TRANSCODER_SELECTION XERCES_MSGLOADER_SELECTION XERCES_FILEMGR_SELECTION # Allow the user to specify the pkgconfig directory. # AC_ARG_WITH(pkgconfigdir, AC_HELP_STRING([--with-pkgconfigdir=DIR],[Specify location of pkgconfig dir (default is libdir/pkgconfig)]), [pkgconfigdir=${withval}], [pkgconfigdir='${libdir}/pkgconfig']) AC_SUBST([pkgconfigdir]) # Allow the user to disable the SSE2 support # AC_ARG_ENABLE(sse2, AC_HELP_STRING([--disable-sse2],[disable SSE2 optimizations]), [have_sse2=${enableval}], [have_sse2=yes]) ###################################################### # Define some namespace-protected macros for use in the # publicly visible Xerces_autoconf_config.h file. ###################################################### AC_DEFINE([XERCES_AUTOCONF], 1, [Define to true if autoconf is used in this configuration]) AS_IF([test x$ac_cv_header_sys_types_h = xyes], AC_DEFINE([XERCES_HAVE_SYS_TYPES_H], 1, [Define to 1 if we have sys/types.h])) AS_IF([test x$ac_cv_header_inttypes_h = xyes], AC_DEFINE([XERCES_HAVE_INTTYPES_H], 1, [Define to 1 if we have inttypes.h])) case $host in *-*-msdos* | *-*-mingw32* | *-*-cygwin* | *-*-windows* ) platform_export="__declspec(dllexport)" platform_import="__declspec(dllimport)" ;; * ) platform_export="" platform_import="" ;; esac AC_DEFINE_UNQUOTED([XERCES_PLATFORM_EXPORT], [$platform_export], [Define as the platform's export attribute]) AC_DEFINE_UNQUOTED([XERCES_PLATFORM_IMPORT], [$platform_import], [Define as the platform's import attribute]) AS_IF([test ! $ac_cv_cxx_have_bool], AC_DEFINE([XERCES_NO_NATIVE_BOOL], 1, [Define if there is no native bool support in this environment])) AS_IF([test $ac_cv_cxx_have_lstring], AC_DEFINE([XERCES_LSTRSUPPORT], 1, [Define if there is support for L"widestring"])) # check if the Windows API is defined as using wchar_t or unsigned short; if it's wchar_t, we need to map XMLCh to be wchar_t # (this is safe because on Windows wchar_t is used to store UTF-16 codepoints, while it is not true on Unix) AC_MSG_CHECKING([whether the Windows SDK is available and using wchar_t as wide string]) AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[#include wchar_t file[] = L"dummy.file";]], [[DeleteFileW(file);]])], [ xerces_cv_type_xmlch=wchar_t AC_MSG_RESULT([yes]) AC_DEFINE_UNQUOTED([XERCES_INCLUDE_WCHAR_H], 1, [Define to have Xerces_autoconf_config.hpp include wchar.h]) ], [ xerces_cv_type_xmlch=$xerces_cv_type_u16bit_int AC_MSG_RESULT([no]) ] ) AC_DEFINE_UNQUOTED([XERCES_XMLCH_T], [$xerces_cv_type_xmlch], [Define to the 16 bit type used to represent Xerces UTF-16 characters]) AC_MSG_CHECKING([whether the compiler chokes on a placement operator delete]) AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[#include class XMemory { public : void* operator new(size_t s) { return 0; } void* operator new(size_t s, void* ptr) { return 0; } void operator delete(void* p) {} void operator delete(void* p, void* ptr) {} };]], [[ ]])], [ AC_MSG_RESULT([no]) ], [ AC_MSG_RESULT([yes]) AC_DEFINE_UNQUOTED([XERCES_NO_MATCHING_DELETE_OPERATOR], 1, [Define to have XMemory.hpp avoid declaring a matching operator delete for the placement operator new]) ] ) if test "$have_sse2" = "yes"; then no_sse2_CXXFLAGS="$CXXFLAGS" save_CXXFLAGS="$CXXFLAGS" CXXFLAGS="$CXXFLAGS -msse2" AC_MSG_CHECKING([whether we need to add -msse2]) AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[#include ]], [[__m128i one;]])], [msse2_ok=yes], [msse2_ok=no] ) AC_MSG_RESULT($msse2_ok) if test x"$msse2_ok" = xno; then CXXFLAGS="$save_CXXFLAGS" fi # Sun CC option test. Currently disabled since it doesn't work. Also note # that Sun CC will accept -msse2 (i.e., it won't fail) but will keep issuing # warnings. So if enabled this test needs to be moved before -msse2 and if # it passes, then -msse2 should be skipped. # # save_CXXFLAGS="$CXXFLAGS" # CXXFLAGS="$CXXFLAGS -xarch=sse2" # AC_MSG_CHECKING([whether we need to add -xarch=sse2]) # AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[#include ]], [[__m128i one;]])], # [xarchsse2_ok=yes], # [xarchsse2_ok=no] # ) # AC_MSG_RESULT($xarchsse2_ok) # if test x"$xarchsse2_ok" = xno; then # CXXFLAGS="$save_CXXFLAGS" # fi AC_MSG_CHECKING([for intrin.h usability]) AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[#include ]], [[]])], [ AC_MSG_RESULT([yes]) AC_DEFINE_UNQUOTED([XERCES_HAVE_INTRIN_H], 1, [Define to 1 if you have intrin.h]) ], [ AC_MSG_RESULT([no]) ] ) AC_MSG_CHECKING([for emmintrin.h usability]) AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[#include ]], [[]])], [ AC_MSG_RESULT([yes]) AC_DEFINE_UNQUOTED([XERCES_HAVE_EMMINTRIN_H], 1, [Define to 1 if you have emmintrin.h]) ], [ AC_MSG_RESULT([no]) ] ) AC_MSG_CHECKING([for cpuid.h usability]) AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[#include ]], [[]])], [ AC_MSG_RESULT([yes]) AC_DEFINE_UNQUOTED([HAVE_CPUID_H], 1, [Define to 1 if you have cpuid.h]) ], [ AC_MSG_RESULT([no]) ] ) AC_MSG_CHECKING([whether the compiler has the CPUID intrinsic]) AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[#include ]], [[int CPUInfo[4]; __cpuid(CPUInfo, 1); ]])], [ AC_MSG_RESULT([yes]) AC_DEFINE_UNQUOTED([XERCES_HAVE_CPUID_INTRINSIC], 1, [Define to have SSE2 instruction support detected at runtime using __cpuid]) ], [ AC_MSG_RESULT([no]) ] ) AC_MSG_CHECKING([whether the compiler has the _get_cpuid intrinsic]) AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[#include ]], [[unsigned int eax, ebx, ecx, edx; __get_cpuid (1, &eax, &ebx, &ecx, &edx); ]])], [ AC_MSG_RESULT([yes]) AC_DEFINE_UNQUOTED([XERCES_HAVE_GETCPUID], 1, [Define to have SSE2 instruction support detected at runtime using __get_cpuid]) ], [ AC_MSG_RESULT([no]) ] ) AC_MSG_CHECKING([whether the compiler has the SSE2 intrinsic]) AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[#include ]], [[__m128i* one=(__m128i*)_mm_malloc(4, 16); __m128i* two=(__m128i*)_mm_malloc(4, 16); __m128i xmm1 = _mm_load_si128(one); __m128i xmm2 = _mm_load_si128(two); __m128i xmm3 = _mm_or_si128(xmm1, xmm2); _mm_store_si128(one, xmm3); _mm_free(one); _mm_free(two); ]])], [ AC_MSG_RESULT([yes]) sse2_usable=yes AC_DEFINE_UNQUOTED([XERCES_HAVE_SSE2_INTRINSIC], 1, [Define to have SSE2 instruction used at runtime]) ], [ AC_MSG_RESULT([no]) sse2_usable=no ] ) # Restore original CXXFLAGS if SSE2 is not usable. # if test "$sse2_usable" = "no"; then CXXFLAGS="$no_sse2_CXXFLAGS" fi fi AS_IF([test x$ac_cv_type_size_t = xyes], AC_DEFINE([XERCES_SIZE_T], [size_t], [Define as the appropriate size_t type]), AC_DEFINE([XERCES_SIZE_T], [long], [Define as the appropriate size_t type])) AS_IF([test x$ac_cv_type_ssize_t = xyes], AC_DEFINE([XERCES_SSIZE_T], [ssize_t], [Define as the appropriate ssize_t type]), AC_DEFINE([XERCES_SSIZE_T], [unsigned long], [Define as the appropriate ssize_t type])) AS_IF([test x$ac_cv_cxx_have_namespaces = xyes], AC_DEFINE([XERCES_HAS_CPP_NAMESPACE], 1, [Define if namespaces is supported by the compiler])) AS_IF([test x$ac_cv_cxx_have_std_namespace = xyes], AC_DEFINE([XERCES_STD_NAMESPACE], 1, [Define if the std namespace is supported])) AS_IF([test x$ac_cv_cxx_have_std_libs = xyes], AC_DEFINE([XERCES_NEW_IOSTREAMS], 1, [Define if the isstream library can be included as ])) AC_OUTPUT AC_MSG_NOTICE AC_MSG_NOTICE([Report:]) AC_MSG_NOTICE([ File Manager: $filemgr]) AC_MSG_NOTICE([ Mutex Manager: $mutexmgr]) AC_MSG_NOTICE([ Transcoder: $transcoder]) AC_MSG_NOTICE([ NetAccessor: $netaccessor]) AC_MSG_NOTICE([ Message Loader: $msgloader]) xerces-c-3.1.1/xerces-c.spec0000644000175000017500000000534411362617414014643 0ustar borisborisSummary: Xerces-C++ validating XML parser Name: xerces-c Version: 3.1.1 Release: 1 URL: http://xerces.apache.org/xerces-c/ Source0: %{name}-%{version}.tar.gz License: Apache Group: Libraries BuildRoot: %{_tmppath}/%{name}-root Prefix: /usr %{!?_without_curl:BuildRequires: curl-devel} %{?_with_icu:BuildRequires: libicu-devel} %description Xerces-C++ is a validating XML parser written in a portable subset of C++. Xerces-C++ makes it easy to give your application the ability to read and write XML data. A shared library is provided for parsing, generating, manipulating, and validating XML documents. The parser provides high performance, modularity, and scalability. Source code, samples and API documentation are provided with the parser. For portability, care has been taken to make minimal use of templates, no RTTI, and minimal use of #ifdefs. %package devel Requires: %{name} = %{version} Group: Development/Libraries Summary: Header files for Xerces-C++ validating XML parser %description devel Header files you can use to develop XML applications with Xerces-C++. Xerces-C++ is a validating XML parser written in a portable subset of C++. Xerces-C++ makes it easy to give your application the ability to read and write XML data. A shared library is provided for parsing, generating, manipulating, and validating XML documents. %prep %setup -q %build %configure %{!?_without_curl:--enable-netaccessor-curl} %{?_with_icu:--enable-transcoder-icu --enable-msgloader-icu} %{?xerces_options} %{__make} %install [ "$RPM_BUILD_ROOT" != "/" ] && %{__rm} -rf $RPM_BUILD_ROOT %{__make} install DESTDIR=$RPM_BUILD_ROOT %clean [ "$RPM_BUILD_ROOT" != "/" ] && %{__rm} -rf $RPM_BUILD_ROOT %ifnos solaris2.8 solaris2.9 solaris2.10 %post -p /sbin/ldconfig %endif %ifnos solaris2.8 solaris2.9 solaris2.10 %postun -p /sbin/ldconfig %endif %files %defattr(755,root,root) %{_bindir}/* %{_libdir}/lib%{name}-*.so %exclude %{_libdir}/lib%{name}.la %files devel %defattr(-,root,root) %{_includedir} %{_libdir}/lib%{name}.so %{_libdir}/lib%{name}.a %{_libdir}/pkgconfig/%{name}.pc %changelog * Fri Mar 7 2008 Boris Kolpackov - Integrated updates for 3.0.0 from Scott Cantor. * Fri Jun 6 2003 Tuan Hoang - updated for new Xerces-C filename and directory format - fixed date format in changelog section * Fri Mar 14 2003 Tinny Ng - changed to 2.3 * Wed Dec 18 2002 Albert Strasheim - added symlink to libxerces-c.so in lib directory * Fri Dec 13 2002 Albert Strasheim - added seperate doc package - major cleanups * Tue Sep 03 2002 - fixed missing DESTDIR in Makefile.util.submodule * Mon Sep 02 2002 - Initial build. xerces-c-3.1.1/NOTICE0000644000175000017500000000106010117652604013146 0ustar borisboris ========================================================================= == NOTICE file corresponding to section 4(d) of the Apache License, == == Version 2.0, in this case for the Apache Xerces distribution. == ========================================================================= This product includes software developed by The Apache Software Foundation (http://www.apache.org/). Portions of this software were originally based on the following: - software copyright (c) 1999, IBM Corporation., http://www.ibm.com. xerces-c-3.1.1/projects/0000755000175000017500000000000011363617261014102 5ustar borisborisxerces-c-3.1.1/projects/Win32/0000755000175000017500000000000011363617270015004 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC9/0000755000175000017500000000000011363617261015405 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC9/xerces-all/0000755000175000017500000000000011363617263017446 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC9/xerces-all/DOMNormalizerTest/0000755000175000017500000000000011363617262022767 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC9/xerces-all/DOMNormalizerTest/DOMNormalizerTest.vcproj0000644000175000017500000006476711362100754027552 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC9/xerces-all/SAXPrint/0000755000175000017500000000000011363617262021115 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC9/xerces-all/SAXPrint/SAXPrint.vcproj0000644000175000017500000006377211362100754024021 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC9/xerces-all/XSTSHarness/0000755000175000017500000000000011363617262021572 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC9/xerces-all/XSTSHarness/XSTSHarness.vcproj0000644000175000017500000005601311211526053025136 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC9/xerces-all/SCMPrint/0000755000175000017500000000000011363617263021105 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC9/xerces-all/SCMPrint/SCMPrint.vcproj0000644000175000017500000006275411362100754023776 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC9/xerces-all/SAXCount/0000755000175000017500000000000011363617263021112 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC9/xerces-all/SAXCount/SAXCount.vcproj0000644000175000017500000006444611362100754024010 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC9/xerces-all/DOMTraversalTest/0000755000175000017500000000000011363617262022610 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC9/xerces-all/DOMTraversalTest/DOMTraversalTest.vcproj0000644000175000017500000006514411362100754027202 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC9/xerces-all/MemParse/0000755000175000017500000000000011363617262021156 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC9/xerces-all/MemParse/MemParse.vcproj0000644000175000017500000006377211362100754024123 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC9/xerces-all/DOMMemTest/0000755000175000017500000000000011363617263021364 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC9/xerces-all/DOMMemTest/DOMMemTest.vcproj0000644000175000017500000006453511362100754024533 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC9/xerces-all/XSValueTest/0000755000175000017500000000000011363617262021634 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC9/xerces-all/XSValueTest/XSValueTest.vcproj0000644000175000017500000006400511362100754025245 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC9/xerces-all/RangeTest/0000755000175000017500000000000011363617263021342 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC9/xerces-all/RangeTest/RangeTest.vcproj0000644000175000017500000006342111362100754024460 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC9/xerces-all/Redirect/0000755000175000017500000000000011363617262021206 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC9/xerces-all/Redirect/Redirect.vcproj0000644000175000017500000006377211362100754024203 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC9/xerces-all/PSVIWriter/0000755000175000017500000000000011363617262021423 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC9/xerces-all/PSVIWriter/PSVIWriter.vcproj0000644000175000017500000006455611362100754024636 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC9/xerces-all/PParse/0000755000175000017500000000000011363617262020637 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC9/xerces-all/PParse/PParse.vcproj0000644000175000017500000006453011362100754023256 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC9/xerces-all/MemHandlerTest/0000755000175000017500000000000011363617262022321 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC9/xerces-all/MemHandlerTest/MemHandlerTest.vcproj0000644000175000017500000006517611362100754026431 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC9/xerces-all/InitTermTest/0000755000175000017500000000000011363617263022041 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC9/xerces-all/InitTermTest/InitTermTest.vcproj0000644000175000017500000006445211362100754025663 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC9/xerces-all/CreateDOMDocument/0000755000175000017500000000000011363617262022707 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC9/xerces-all/CreateDOMDocument/CreateDOMDocument.vcproj0000644000175000017500000006540711362100754027402 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC9/xerces-all/ThreadTest/0000755000175000017500000000000011363617263021515 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC9/xerces-all/ThreadTest/ThreadTest.vcproj0000644000175000017500000006421411362100754025007 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC9/xerces-all/XSerializerTest/0000755000175000017500000000000011363617263022547 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC9/xerces-all/XSerializerTest/XSerializerTest.vcproj0000644000175000017500000006543111362100754027075 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC9/xerces-all/SEnumVal/0000755000175000017500000000000011363617263021140 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC9/xerces-all/SEnumVal/SEnumVal.vcproj0000644000175000017500000006356211362100754024062 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC9/xerces-all/StdInParse/0000755000175000017500000000000011363617263021462 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC9/xerces-all/StdInParse/StdInParse.vcproj0000644000175000017500000006515411362100754024725 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC9/xerces-all/XInclude/0000755000175000017500000000000011363617262021160 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC9/xerces-all/XInclude/XInclude.vcproj0000644000175000017500000006335411362100754024123 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC9/xerces-all/SAX2Count/0000755000175000017500000000000011363617262021173 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC9/xerces-all/SAX2Count/SAX2Count.vcproj0000644000175000017500000006455311362100754024153 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC9/xerces-all/EncodingTest/0000755000175000017500000000000011363617262022033 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC9/xerces-all/EncodingTest/EncodingTest.vcproj0000644000175000017500000006421611362100754025647 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC9/xerces-all/DOMTest/0000755000175000017500000000000011363617261020723 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC9/xerces-all/DOMTest/DOMTest.vcproj0000644000175000017500000006366311362100754023436 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC9/xerces-all/XercesLib/0000755000175000017500000000000011363617262021325 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC9/xerces-all/XercesLib/XercesLib.vcproj0000644000175000017500000040212211360346021024420 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC9/xerces-all/DOMTypeInfoTest/0000755000175000017500000000000011363617262022402 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC9/xerces-all/DOMTypeInfoTest/DOMTypeInfoTest.vcproj0000644000175000017500000006521111362100754026561 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC9/xerces-all/SAX2Print/0000755000175000017500000000000011363617262021177 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC9/xerces-all/SAX2Print/SAX2Print.vcproj0000644000175000017500000006442111362100754024155 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC9/xerces-all/DOMCount/0000755000175000017500000000000011363617262021075 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC9/xerces-all/DOMCount/DOMCount.vcproj0000644000175000017500000006350211362100754023750 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC9/xerces-all/xerces-all.sln0000644000175000017500000022315610766501116022227 0ustar borisborisMicrosoft Visual Studio Solution File, Format Version 10.00 # Visual Studio 2008 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "all", "all\all.vcproj", "{E305E46C-9D74-4755-BF57-29DEAEF4DCDD}" ProjectSection(ProjectDependencies) = postProject {895EDBF3-6A97-4641-8D96-7282005F8DD7} = {895EDBF3-6A97-4641-8D96-7282005F8DD7} {15A10DF2-F551-4306-A4CC-690F58C58081} = {15A10DF2-F551-4306-A4CC-690F58C58081} {B8B50FE7-B620-4D19-A147-B167D087DD53} = {B8B50FE7-B620-4D19-A147-B167D087DD53} {FB7E86DB-9557-4044-8FF7-A9131BB021E6} = {FB7E86DB-9557-4044-8FF7-A9131BB021E6} {7259B5D2-54FE-4142-9321-0572C615F0A2} = {7259B5D2-54FE-4142-9321-0572C615F0A2} {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2} = {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2} {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD} = {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD} {D3552FBC-8618-43C5-86C0-237536D8E700} = {D3552FBC-8618-43C5-86C0-237536D8E700} {DFC196B9-2146-4CDA-AC0A-632BD38FA41D} = {DFC196B9-2146-4CDA-AC0A-632BD38FA41D} {3C777DB7-42D1-4AA6-A051-24213E411891} = {3C777DB7-42D1-4AA6-A051-24213E411891} {959445AC-9081-4590-B457-C96164CF4BFA} = {959445AC-9081-4590-B457-C96164CF4BFA} {2682B2AB-E341-4528-85AB-BE95DE77A9BC} = {2682B2AB-E341-4528-85AB-BE95DE77A9BC} {2AB767A9-6A3B-4993-8FDB-3E6A30560739} = {2AB767A9-6A3B-4993-8FDB-3E6A30560739} {056463A8-AEDD-4B92-BC24-C0C154C0379C} = {056463A8-AEDD-4B92-BC24-C0C154C0379C} {FB794093-CA26-4DBF-A7DF-1A62B7C872D5} = {FB794093-CA26-4DBF-A7DF-1A62B7C872D5} {60E3008A-0D78-4B25-A12E-9D7A3921F67C} = {60E3008A-0D78-4B25-A12E-9D7A3921F67C} {6F412978-851F-494D-8C3D-DF97A515EDF5} = {6F412978-851F-494D-8C3D-DF97A515EDF5} {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284} = {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284} {4D8FEA60-A74F-4267-852F-C421AF12198D} = {4D8FEA60-A74F-4267-852F-C421AF12198D} {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D} = {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D} {BE9C14B1-2301-4C62-85E2-B583D22AE29C} = {BE9C14B1-2301-4C62-85E2-B583D22AE29C} {2230D938-8908-4C12-9E96-9C6C4048A52D} = {2230D938-8908-4C12-9E96-9C6C4048A52D} {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2} = {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2} {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F} = {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F} {792C0625-DE93-4756-AAFA-23CCED2157B0} = {792C0625-DE93-4756-AAFA-23CCED2157B0} {117D4C21-4C54-478F-83AE-D6179A8D7EF1} = {117D4C21-4C54-478F-83AE-D6179A8D7EF1} {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75} = {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75} {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27} = {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CreateDOMDocument", "CreateDOMDocument\CreateDOMDocument.vcproj", "{8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DOMCount", "DOMCount\DOMCount.vcproj", "{60E3008A-0D78-4B25-A12E-9D7A3921F67C}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DOMMemTest", "DOMMemTest\DOMMemTest.vcproj", "{0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DOMNormalizerTest", "DOMNormalizerTest\DOMNormalizerTest.vcproj", "{BE9C14B1-2301-4C62-85E2-B583D22AE29C}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DOMPrint", "DOMPrint\DOMPrint.vcproj", "{056463A8-AEDD-4B92-BC24-C0C154C0379C}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DOMTest", "DOMTest\DOMTest.vcproj", "{3C777DB7-42D1-4AA6-A051-24213E411891}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DOMTraversalTest", "DOMTraversalTest\DOMTraversalTest.vcproj", "{DFC196B9-2146-4CDA-AC0A-632BD38FA41D}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DOMTypeInfoTest", "DOMTypeInfoTest\DOMTypeInfoTest.vcproj", "{15A10DF2-F551-4306-A4CC-690F58C58081}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EncodingTest", "EncodingTest\EncodingTest.vcproj", "{B8B50FE7-B620-4D19-A147-B167D087DD53}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EnumVal", "EnumVal\EnumVal.vcproj", "{26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "InitTermTest", "InitTermTest\InitTermTest.vcproj", "{2682B2AB-E341-4528-85AB-BE95DE77A9BC}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MemHandlerTest", "MemHandlerTest\MemHandlerTest.vcproj", "{160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MemParse", "MemParse\MemParse.vcproj", "{6F412978-851F-494D-8C3D-DF97A515EDF5}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PParse", "PParse\PParse.vcproj", "{65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RangeTest", "RangeTest\RangeTest.vcproj", "{BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Redirect", "Redirect\Redirect.vcproj", "{569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SAX2Count", "SAX2Count\SAX2Count.vcproj", "{FB794093-CA26-4DBF-A7DF-1A62B7C872D5}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SAX2Print", "SAX2Print\SAX2Print.vcproj", "{7259B5D2-54FE-4142-9321-0572C615F0A2}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SAXCount", "SAXCount\SAXCount.vcproj", "{2AB767A9-6A3B-4993-8FDB-3E6A30560739}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SAXPrint", "SAXPrint\SAXPrint.vcproj", "{959445AC-9081-4590-B457-C96164CF4BFA}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SEnumVal", "SEnumVal\SEnumVal.vcproj", "{2230D938-8908-4C12-9E96-9C6C4048A52D}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StdInParse", "StdInParse\StdInParse.vcproj", "{D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ThreadTest", "ThreadTest\ThreadTest.vcproj", "{792C0625-DE93-4756-AAFA-23CCED2157B0}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XercesLib", "XercesLib\XercesLib.vcproj", "{152CE948-F659-4206-A50A-1D2B9658EF96}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XSerializerTest", "XSerializerTest\XSerializerTest.vcproj", "{4D8FEA60-A74F-4267-852F-C421AF12198D}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PSVIWriter", "PSVIWriter\PSVIWriter.vcproj", "{FB7E86DB-9557-4044-8FF7-A9131BB021E6}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SCMPrint", "SCMPrint\SCMPrint.vcproj", "{895EDBF3-6A97-4641-8D96-7282005F8DD7}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XSValueTest", "XSValueTest\XSValueTest.vcproj", "{D3552FBC-8618-43C5-86C0-237536D8E700}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XInclude", "XInclude\XInclude.vcproj", "{117D4C21-4C54-478F-83AE-D6179A8D7EF1}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XSTSHarness", "XSTSHarness\XSTSHarness.vcproj", "{D92806DD-C591-4782-BCF2-8A0D0338D67A}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 ICU Debug|Win32 = ICU Debug|Win32 ICU Debug|x64 = ICU Debug|x64 ICU Release|Win32 = ICU Release|Win32 ICU Release|x64 = ICU Release|x64 Release|Win32 = Release|Win32 Release|x64 = Release|x64 Static Debug|Win32 = Static Debug|Win32 Static Debug|x64 = Static Debug|x64 Static Release|Win32 = Static Release|Win32 Static Release|x64 = Static Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Debug|Win32.ActiveCfg = Debug|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Debug|Win32.Build.0 = Debug|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Debug|x64.ActiveCfg = Debug|x64 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Debug|x64.Build.0 = Debug|x64 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.ICU Debug|x64.Build.0 = ICU Debug|x64 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.ICU Release|Win32.Build.0 = ICU Release|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.ICU Release|x64.ActiveCfg = ICU Release|x64 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.ICU Release|x64.Build.0 = ICU Release|x64 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Release|Win32.ActiveCfg = Release|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Release|Win32.Build.0 = Release|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Release|x64.ActiveCfg = Release|x64 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Release|x64.Build.0 = Release|x64 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Static Debug|Win32.Build.0 = Static Debug|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Static Debug|x64.ActiveCfg = Static Debug|x64 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Static Debug|x64.Build.0 = Static Debug|x64 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Static Release|Win32.ActiveCfg = Static Release|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Static Release|Win32.Build.0 = Static Release|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Static Release|x64.ActiveCfg = Static Release|x64 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Static Release|x64.Build.0 = Static Release|x64 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Debug|Win32.ActiveCfg = Debug|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Debug|Win32.Build.0 = Debug|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Debug|x64.ActiveCfg = Debug|x64 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Debug|x64.Build.0 = Debug|x64 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.ICU Debug|x64.Build.0 = ICU Debug|x64 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.ICU Release|Win32.Build.0 = ICU Release|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.ICU Release|x64.ActiveCfg = ICU Release|x64 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.ICU Release|x64.Build.0 = ICU Release|x64 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Release|Win32.ActiveCfg = Release|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Release|Win32.Build.0 = Release|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Release|x64.ActiveCfg = Release|x64 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Release|x64.Build.0 = Release|x64 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Static Debug|Win32.Build.0 = Static Debug|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Static Debug|x64.ActiveCfg = Static Debug|x64 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Static Debug|x64.Build.0 = Static Debug|x64 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Static Release|Win32.ActiveCfg = Static Release|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Static Release|Win32.Build.0 = Static Release|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Static Release|x64.ActiveCfg = Static Release|x64 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Static Release|x64.Build.0 = Static Release|x64 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Debug|Win32.ActiveCfg = Debug|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Debug|Win32.Build.0 = Debug|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Debug|x64.ActiveCfg = Debug|x64 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Debug|x64.Build.0 = Debug|x64 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.ICU Debug|x64.Build.0 = ICU Debug|x64 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.ICU Release|Win32.Build.0 = ICU Release|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.ICU Release|x64.ActiveCfg = ICU Release|x64 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.ICU Release|x64.Build.0 = ICU Release|x64 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Release|Win32.ActiveCfg = Release|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Release|Win32.Build.0 = Release|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Release|x64.ActiveCfg = Release|x64 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Release|x64.Build.0 = Release|x64 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Static Debug|Win32.Build.0 = Static Debug|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Static Debug|x64.ActiveCfg = Static Debug|x64 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Static Debug|x64.Build.0 = Static Debug|x64 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Static Release|Win32.ActiveCfg = Static Release|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Static Release|Win32.Build.0 = Static Release|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Static Release|x64.ActiveCfg = Static Release|x64 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Static Release|x64.Build.0 = Static Release|x64 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Debug|Win32.ActiveCfg = Debug|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Debug|Win32.Build.0 = Debug|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Debug|x64.ActiveCfg = Debug|x64 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Debug|x64.Build.0 = Debug|x64 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.ICU Debug|x64.Build.0 = ICU Debug|x64 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.ICU Release|Win32.Build.0 = ICU Release|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.ICU Release|x64.ActiveCfg = ICU Release|x64 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.ICU Release|x64.Build.0 = ICU Release|x64 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Release|Win32.ActiveCfg = Release|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Release|Win32.Build.0 = Release|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Release|x64.ActiveCfg = Release|x64 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Release|x64.Build.0 = Release|x64 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Static Debug|Win32.Build.0 = Static Debug|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Static Debug|x64.ActiveCfg = Static Debug|x64 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Static Debug|x64.Build.0 = Static Debug|x64 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Static Release|Win32.ActiveCfg = Static Release|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Static Release|Win32.Build.0 = Static Release|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Static Release|x64.ActiveCfg = Static Release|x64 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Static Release|x64.Build.0 = Static Release|x64 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Debug|Win32.ActiveCfg = Debug|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Debug|Win32.Build.0 = Debug|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Debug|x64.ActiveCfg = Debug|x64 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Debug|x64.Build.0 = Debug|x64 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.ICU Debug|x64.Build.0 = ICU Debug|x64 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.ICU Release|Win32.Build.0 = ICU Release|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.ICU Release|x64.ActiveCfg = ICU Release|x64 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.ICU Release|x64.Build.0 = ICU Release|x64 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Release|Win32.ActiveCfg = Release|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Release|Win32.Build.0 = Release|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Release|x64.ActiveCfg = Release|x64 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Release|x64.Build.0 = Release|x64 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Static Debug|Win32.Build.0 = Static Debug|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Static Debug|x64.ActiveCfg = Static Debug|x64 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Static Debug|x64.Build.0 = Static Debug|x64 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Static Release|Win32.ActiveCfg = Static Release|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Static Release|Win32.Build.0 = Static Release|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Static Release|x64.ActiveCfg = Static Release|x64 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Static Release|x64.Build.0 = Static Release|x64 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Debug|Win32.ActiveCfg = Debug|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Debug|Win32.Build.0 = Debug|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Debug|x64.ActiveCfg = Debug|x64 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Debug|x64.Build.0 = Debug|x64 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.ICU Debug|x64.Build.0 = ICU Debug|x64 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.ICU Release|Win32.Build.0 = ICU Release|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.ICU Release|x64.ActiveCfg = ICU Release|x64 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.ICU Release|x64.Build.0 = ICU Release|x64 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Release|Win32.ActiveCfg = Release|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Release|Win32.Build.0 = Release|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Release|x64.ActiveCfg = Release|x64 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Release|x64.Build.0 = Release|x64 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Static Debug|Win32.Build.0 = Static Debug|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Static Debug|x64.ActiveCfg = Static Debug|x64 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Static Debug|x64.Build.0 = Static Debug|x64 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Static Release|Win32.ActiveCfg = Static Release|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Static Release|Win32.Build.0 = Static Release|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Static Release|x64.ActiveCfg = Static Release|x64 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Static Release|x64.Build.0 = Static Release|x64 {3C777DB7-42D1-4AA6-A051-24213E411891}.Debug|Win32.ActiveCfg = Debug|Win32 {3C777DB7-42D1-4AA6-A051-24213E411891}.Debug|Win32.Build.0 = Debug|Win32 {3C777DB7-42D1-4AA6-A051-24213E411891}.Debug|x64.ActiveCfg = Debug|x64 {3C777DB7-42D1-4AA6-A051-24213E411891}.Debug|x64.Build.0 = Debug|x64 {3C777DB7-42D1-4AA6-A051-24213E411891}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {3C777DB7-42D1-4AA6-A051-24213E411891}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {3C777DB7-42D1-4AA6-A051-24213E411891}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {3C777DB7-42D1-4AA6-A051-24213E411891}.ICU Debug|x64.Build.0 = ICU Debug|x64 {3C777DB7-42D1-4AA6-A051-24213E411891}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {3C777DB7-42D1-4AA6-A051-24213E411891}.ICU Release|Win32.Build.0 = ICU Release|Win32 {3C777DB7-42D1-4AA6-A051-24213E411891}.ICU Release|x64.ActiveCfg = ICU Release|x64 {3C777DB7-42D1-4AA6-A051-24213E411891}.ICU Release|x64.Build.0 = ICU Release|x64 {3C777DB7-42D1-4AA6-A051-24213E411891}.Release|Win32.ActiveCfg = Release|Win32 {3C777DB7-42D1-4AA6-A051-24213E411891}.Release|Win32.Build.0 = Release|Win32 {3C777DB7-42D1-4AA6-A051-24213E411891}.Release|x64.ActiveCfg = Release|x64 {3C777DB7-42D1-4AA6-A051-24213E411891}.Release|x64.Build.0 = Release|x64 {3C777DB7-42D1-4AA6-A051-24213E411891}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {3C777DB7-42D1-4AA6-A051-24213E411891}.Static Debug|Win32.Build.0 = Static Debug|Win32 {3C777DB7-42D1-4AA6-A051-24213E411891}.Static Debug|x64.ActiveCfg = Static Debug|x64 {3C777DB7-42D1-4AA6-A051-24213E411891}.Static Debug|x64.Build.0 = Static Debug|x64 {3C777DB7-42D1-4AA6-A051-24213E411891}.Static Release|Win32.ActiveCfg = Static Release|Win32 {3C777DB7-42D1-4AA6-A051-24213E411891}.Static Release|Win32.Build.0 = Static Release|Win32 {3C777DB7-42D1-4AA6-A051-24213E411891}.Static Release|x64.ActiveCfg = Static Release|x64 {3C777DB7-42D1-4AA6-A051-24213E411891}.Static Release|x64.Build.0 = Static Release|x64 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Debug|Win32.ActiveCfg = Debug|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Debug|Win32.Build.0 = Debug|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Debug|x64.ActiveCfg = Debug|x64 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Debug|x64.Build.0 = Debug|x64 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.ICU Debug|x64.Build.0 = ICU Debug|x64 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.ICU Release|Win32.Build.0 = ICU Release|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.ICU Release|x64.ActiveCfg = ICU Release|x64 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.ICU Release|x64.Build.0 = ICU Release|x64 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Release|Win32.ActiveCfg = Release|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Release|Win32.Build.0 = Release|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Release|x64.ActiveCfg = Release|x64 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Release|x64.Build.0 = Release|x64 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Static Debug|Win32.Build.0 = Static Debug|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Static Debug|x64.ActiveCfg = Static Debug|x64 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Static Debug|x64.Build.0 = Static Debug|x64 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Static Release|Win32.ActiveCfg = Static Release|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Static Release|Win32.Build.0 = Static Release|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Static Release|x64.ActiveCfg = Static Release|x64 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Static Release|x64.Build.0 = Static Release|x64 {15A10DF2-F551-4306-A4CC-690F58C58081}.Debug|Win32.ActiveCfg = Debug|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.Debug|Win32.Build.0 = Debug|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.Debug|x64.ActiveCfg = Debug|x64 {15A10DF2-F551-4306-A4CC-690F58C58081}.Debug|x64.Build.0 = Debug|x64 {15A10DF2-F551-4306-A4CC-690F58C58081}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {15A10DF2-F551-4306-A4CC-690F58C58081}.ICU Debug|x64.Build.0 = ICU Debug|x64 {15A10DF2-F551-4306-A4CC-690F58C58081}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.ICU Release|Win32.Build.0 = ICU Release|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.ICU Release|x64.ActiveCfg = ICU Release|x64 {15A10DF2-F551-4306-A4CC-690F58C58081}.ICU Release|x64.Build.0 = ICU Release|x64 {15A10DF2-F551-4306-A4CC-690F58C58081}.Release|Win32.ActiveCfg = Release|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.Release|Win32.Build.0 = Release|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.Release|x64.ActiveCfg = Release|x64 {15A10DF2-F551-4306-A4CC-690F58C58081}.Release|x64.Build.0 = Release|x64 {15A10DF2-F551-4306-A4CC-690F58C58081}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.Static Debug|Win32.Build.0 = Static Debug|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.Static Debug|x64.ActiveCfg = Static Debug|x64 {15A10DF2-F551-4306-A4CC-690F58C58081}.Static Debug|x64.Build.0 = Static Debug|x64 {15A10DF2-F551-4306-A4CC-690F58C58081}.Static Release|Win32.ActiveCfg = Static Release|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.Static Release|Win32.Build.0 = Static Release|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.Static Release|x64.ActiveCfg = Static Release|x64 {15A10DF2-F551-4306-A4CC-690F58C58081}.Static Release|x64.Build.0 = Static Release|x64 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Debug|Win32.ActiveCfg = Debug|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Debug|Win32.Build.0 = Debug|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Debug|x64.ActiveCfg = Debug|x64 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Debug|x64.Build.0 = Debug|x64 {B8B50FE7-B620-4D19-A147-B167D087DD53}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {B8B50FE7-B620-4D19-A147-B167D087DD53}.ICU Debug|x64.Build.0 = ICU Debug|x64 {B8B50FE7-B620-4D19-A147-B167D087DD53}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.ICU Release|Win32.Build.0 = ICU Release|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.ICU Release|x64.ActiveCfg = ICU Release|x64 {B8B50FE7-B620-4D19-A147-B167D087DD53}.ICU Release|x64.Build.0 = ICU Release|x64 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Release|Win32.ActiveCfg = Release|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Release|Win32.Build.0 = Release|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Release|x64.ActiveCfg = Release|x64 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Release|x64.Build.0 = Release|x64 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Static Debug|Win32.Build.0 = Static Debug|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Static Debug|x64.ActiveCfg = Static Debug|x64 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Static Debug|x64.Build.0 = Static Debug|x64 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Static Release|Win32.ActiveCfg = Static Release|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Static Release|Win32.Build.0 = Static Release|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Static Release|x64.ActiveCfg = Static Release|x64 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Static Release|x64.Build.0 = Static Release|x64 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Debug|Win32.ActiveCfg = Debug|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Debug|Win32.Build.0 = Debug|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Debug|x64.ActiveCfg = Debug|x64 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Debug|x64.Build.0 = Debug|x64 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.ICU Debug|x64.Build.0 = ICU Debug|x64 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.ICU Release|Win32.Build.0 = ICU Release|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.ICU Release|x64.ActiveCfg = ICU Release|x64 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.ICU Release|x64.Build.0 = ICU Release|x64 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Release|Win32.ActiveCfg = Release|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Release|Win32.Build.0 = Release|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Release|x64.ActiveCfg = Release|x64 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Release|x64.Build.0 = Release|x64 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Static Debug|Win32.Build.0 = Static Debug|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Static Debug|x64.ActiveCfg = Static Debug|x64 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Static Debug|x64.Build.0 = Static Debug|x64 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Static Release|Win32.ActiveCfg = Static Release|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Static Release|Win32.Build.0 = Static Release|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Static Release|x64.ActiveCfg = Static Release|x64 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Static Release|x64.Build.0 = Static Release|x64 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Debug|Win32.ActiveCfg = Debug|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Debug|Win32.Build.0 = Debug|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Debug|x64.ActiveCfg = Debug|x64 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Debug|x64.Build.0 = Debug|x64 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.ICU Debug|x64.Build.0 = ICU Debug|x64 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.ICU Release|Win32.Build.0 = ICU Release|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.ICU Release|x64.ActiveCfg = ICU Release|x64 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.ICU Release|x64.Build.0 = ICU Release|x64 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Release|Win32.ActiveCfg = Release|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Release|Win32.Build.0 = Release|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Release|x64.ActiveCfg = Release|x64 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Release|x64.Build.0 = Release|x64 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Static Debug|Win32.Build.0 = Static Debug|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Static Debug|x64.ActiveCfg = Static Debug|x64 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Static Debug|x64.Build.0 = Static Debug|x64 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Static Release|Win32.ActiveCfg = Static Release|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Static Release|Win32.Build.0 = Static Release|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Static Release|x64.ActiveCfg = Static Release|x64 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Static Release|x64.Build.0 = Static Release|x64 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Debug|Win32.ActiveCfg = Debug|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Debug|Win32.Build.0 = Debug|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Debug|x64.ActiveCfg = Debug|x64 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Debug|x64.Build.0 = Debug|x64 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.ICU Debug|x64.Build.0 = ICU Debug|x64 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.ICU Release|Win32.Build.0 = ICU Release|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.ICU Release|x64.ActiveCfg = ICU Release|x64 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.ICU Release|x64.Build.0 = ICU Release|x64 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Release|Win32.ActiveCfg = Release|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Release|Win32.Build.0 = Release|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Release|x64.ActiveCfg = Release|x64 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Release|x64.Build.0 = Release|x64 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Static Debug|Win32.Build.0 = Static Debug|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Static Debug|x64.ActiveCfg = Static Debug|x64 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Static Debug|x64.Build.0 = Static Debug|x64 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Static Release|Win32.ActiveCfg = Static Release|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Static Release|Win32.Build.0 = Static Release|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Static Release|x64.ActiveCfg = Static Release|x64 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Static Release|x64.Build.0 = Static Release|x64 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Debug|Win32.ActiveCfg = Debug|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Debug|Win32.Build.0 = Debug|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Debug|x64.ActiveCfg = Debug|x64 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Debug|x64.Build.0 = Debug|x64 {6F412978-851F-494D-8C3D-DF97A515EDF5}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {6F412978-851F-494D-8C3D-DF97A515EDF5}.ICU Debug|x64.Build.0 = ICU Debug|x64 {6F412978-851F-494D-8C3D-DF97A515EDF5}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.ICU Release|Win32.Build.0 = ICU Release|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.ICU Release|x64.ActiveCfg = ICU Release|x64 {6F412978-851F-494D-8C3D-DF97A515EDF5}.ICU Release|x64.Build.0 = ICU Release|x64 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Release|Win32.ActiveCfg = Release|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Release|Win32.Build.0 = Release|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Release|x64.ActiveCfg = Release|x64 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Release|x64.Build.0 = Release|x64 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Static Debug|Win32.Build.0 = Static Debug|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Static Debug|x64.ActiveCfg = Static Debug|x64 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Static Debug|x64.Build.0 = Static Debug|x64 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Static Release|Win32.ActiveCfg = Static Release|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Static Release|Win32.Build.0 = Static Release|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Static Release|x64.ActiveCfg = Static Release|x64 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Static Release|x64.Build.0 = Static Release|x64 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Debug|Win32.ActiveCfg = Debug|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Debug|Win32.Build.0 = Debug|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Debug|x64.ActiveCfg = Debug|x64 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Debug|x64.Build.0 = Debug|x64 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.ICU Debug|x64.Build.0 = ICU Debug|x64 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.ICU Release|Win32.Build.0 = ICU Release|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.ICU Release|x64.ActiveCfg = ICU Release|x64 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.ICU Release|x64.Build.0 = ICU Release|x64 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Release|Win32.ActiveCfg = Release|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Release|Win32.Build.0 = Release|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Release|x64.ActiveCfg = Release|x64 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Release|x64.Build.0 = Release|x64 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Static Debug|Win32.Build.0 = Static Debug|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Static Debug|x64.ActiveCfg = Static Debug|x64 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Static Debug|x64.Build.0 = Static Debug|x64 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Static Release|Win32.ActiveCfg = Static Release|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Static Release|Win32.Build.0 = Static Release|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Static Release|x64.ActiveCfg = Static Release|x64 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Static Release|x64.Build.0 = Static Release|x64 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Debug|Win32.ActiveCfg = Debug|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Debug|Win32.Build.0 = Debug|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Debug|x64.ActiveCfg = Debug|x64 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Debug|x64.Build.0 = Debug|x64 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.ICU Debug|x64.Build.0 = ICU Debug|x64 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.ICU Release|Win32.Build.0 = ICU Release|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.ICU Release|x64.ActiveCfg = ICU Release|x64 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.ICU Release|x64.Build.0 = ICU Release|x64 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Release|Win32.ActiveCfg = Release|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Release|Win32.Build.0 = Release|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Release|x64.ActiveCfg = Release|x64 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Release|x64.Build.0 = Release|x64 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Static Debug|Win32.Build.0 = Static Debug|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Static Debug|x64.ActiveCfg = Static Debug|x64 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Static Debug|x64.Build.0 = Static Debug|x64 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Static Release|Win32.ActiveCfg = Static Release|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Static Release|Win32.Build.0 = Static Release|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Static Release|x64.ActiveCfg = Static Release|x64 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Static Release|x64.Build.0 = Static Release|x64 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Debug|Win32.ActiveCfg = Debug|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Debug|Win32.Build.0 = Debug|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Debug|x64.ActiveCfg = Debug|x64 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Debug|x64.Build.0 = Debug|x64 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.ICU Debug|x64.Build.0 = ICU Debug|x64 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.ICU Release|Win32.Build.0 = ICU Release|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.ICU Release|x64.ActiveCfg = ICU Release|x64 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.ICU Release|x64.Build.0 = ICU Release|x64 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Release|Win32.ActiveCfg = Release|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Release|Win32.Build.0 = Release|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Release|x64.ActiveCfg = Release|x64 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Release|x64.Build.0 = Release|x64 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Static Debug|Win32.Build.0 = Static Debug|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Static Debug|x64.ActiveCfg = Static Debug|x64 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Static Debug|x64.Build.0 = Static Debug|x64 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Static Release|Win32.ActiveCfg = Static Release|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Static Release|Win32.Build.0 = Static Release|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Static Release|x64.ActiveCfg = Static Release|x64 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Static Release|x64.Build.0 = Static Release|x64 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Debug|Win32.ActiveCfg = Debug|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Debug|Win32.Build.0 = Debug|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Debug|x64.ActiveCfg = Debug|x64 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Debug|x64.Build.0 = Debug|x64 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.ICU Debug|x64.Build.0 = ICU Debug|x64 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.ICU Release|Win32.Build.0 = ICU Release|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.ICU Release|x64.ActiveCfg = ICU Release|x64 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.ICU Release|x64.Build.0 = ICU Release|x64 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Release|Win32.ActiveCfg = Release|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Release|Win32.Build.0 = Release|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Release|x64.ActiveCfg = Release|x64 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Release|x64.Build.0 = Release|x64 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Static Debug|Win32.Build.0 = Static Debug|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Static Debug|x64.ActiveCfg = Static Debug|x64 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Static Debug|x64.Build.0 = Static Debug|x64 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Static Release|Win32.ActiveCfg = Static Release|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Static Release|Win32.Build.0 = Static Release|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Static Release|x64.ActiveCfg = Static Release|x64 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Static Release|x64.Build.0 = Static Release|x64 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Debug|Win32.ActiveCfg = Debug|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Debug|Win32.Build.0 = Debug|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Debug|x64.ActiveCfg = Debug|x64 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Debug|x64.Build.0 = Debug|x64 {7259B5D2-54FE-4142-9321-0572C615F0A2}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {7259B5D2-54FE-4142-9321-0572C615F0A2}.ICU Debug|x64.Build.0 = ICU Debug|x64 {7259B5D2-54FE-4142-9321-0572C615F0A2}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.ICU Release|Win32.Build.0 = ICU Release|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.ICU Release|x64.ActiveCfg = ICU Release|x64 {7259B5D2-54FE-4142-9321-0572C615F0A2}.ICU Release|x64.Build.0 = ICU Release|x64 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Release|Win32.ActiveCfg = Release|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Release|Win32.Build.0 = Release|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Release|x64.ActiveCfg = Release|x64 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Release|x64.Build.0 = Release|x64 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Static Debug|Win32.Build.0 = Static Debug|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Static Debug|x64.ActiveCfg = Static Debug|x64 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Static Debug|x64.Build.0 = Static Debug|x64 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Static Release|Win32.ActiveCfg = Static Release|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Static Release|Win32.Build.0 = Static Release|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Static Release|x64.ActiveCfg = Static Release|x64 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Static Release|x64.Build.0 = Static Release|x64 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Debug|Win32.ActiveCfg = Debug|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Debug|Win32.Build.0 = Debug|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Debug|x64.ActiveCfg = Debug|x64 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Debug|x64.Build.0 = Debug|x64 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.ICU Debug|x64.Build.0 = ICU Debug|x64 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.ICU Release|Win32.Build.0 = ICU Release|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.ICU Release|x64.ActiveCfg = ICU Release|x64 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.ICU Release|x64.Build.0 = ICU Release|x64 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Release|Win32.ActiveCfg = Release|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Release|Win32.Build.0 = Release|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Release|x64.ActiveCfg = Release|x64 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Release|x64.Build.0 = Release|x64 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Static Debug|Win32.Build.0 = Static Debug|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Static Debug|x64.ActiveCfg = Static Debug|x64 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Static Debug|x64.Build.0 = Static Debug|x64 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Static Release|Win32.ActiveCfg = Static Release|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Static Release|Win32.Build.0 = Static Release|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Static Release|x64.ActiveCfg = Static Release|x64 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Static Release|x64.Build.0 = Static Release|x64 {959445AC-9081-4590-B457-C96164CF4BFA}.Debug|Win32.ActiveCfg = Debug|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.Debug|Win32.Build.0 = Debug|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.Debug|x64.ActiveCfg = Debug|x64 {959445AC-9081-4590-B457-C96164CF4BFA}.Debug|x64.Build.0 = Debug|x64 {959445AC-9081-4590-B457-C96164CF4BFA}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {959445AC-9081-4590-B457-C96164CF4BFA}.ICU Debug|x64.Build.0 = ICU Debug|x64 {959445AC-9081-4590-B457-C96164CF4BFA}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.ICU Release|Win32.Build.0 = ICU Release|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.ICU Release|x64.ActiveCfg = ICU Release|x64 {959445AC-9081-4590-B457-C96164CF4BFA}.ICU Release|x64.Build.0 = ICU Release|x64 {959445AC-9081-4590-B457-C96164CF4BFA}.Release|Win32.ActiveCfg = Release|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.Release|Win32.Build.0 = Release|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.Release|x64.ActiveCfg = Release|x64 {959445AC-9081-4590-B457-C96164CF4BFA}.Release|x64.Build.0 = Release|x64 {959445AC-9081-4590-B457-C96164CF4BFA}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.Static Debug|Win32.Build.0 = Static Debug|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.Static Debug|x64.ActiveCfg = Static Debug|x64 {959445AC-9081-4590-B457-C96164CF4BFA}.Static Debug|x64.Build.0 = Static Debug|x64 {959445AC-9081-4590-B457-C96164CF4BFA}.Static Release|Win32.ActiveCfg = Static Release|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.Static Release|Win32.Build.0 = Static Release|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.Static Release|x64.ActiveCfg = Static Release|x64 {959445AC-9081-4590-B457-C96164CF4BFA}.Static Release|x64.Build.0 = Static Release|x64 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Debug|Win32.ActiveCfg = Debug|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Debug|Win32.Build.0 = Debug|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Debug|x64.ActiveCfg = Debug|x64 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Debug|x64.Build.0 = Debug|x64 {2230D938-8908-4C12-9E96-9C6C4048A52D}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {2230D938-8908-4C12-9E96-9C6C4048A52D}.ICU Debug|x64.Build.0 = ICU Debug|x64 {2230D938-8908-4C12-9E96-9C6C4048A52D}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.ICU Release|Win32.Build.0 = ICU Release|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.ICU Release|x64.ActiveCfg = ICU Release|x64 {2230D938-8908-4C12-9E96-9C6C4048A52D}.ICU Release|x64.Build.0 = ICU Release|x64 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Release|Win32.ActiveCfg = Release|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Release|Win32.Build.0 = Release|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Release|x64.ActiveCfg = Release|x64 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Release|x64.Build.0 = Release|x64 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Static Debug|Win32.Build.0 = Static Debug|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Static Debug|x64.ActiveCfg = Static Debug|x64 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Static Debug|x64.Build.0 = Static Debug|x64 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Static Release|Win32.ActiveCfg = Static Release|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Static Release|Win32.Build.0 = Static Release|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Static Release|x64.ActiveCfg = Static Release|x64 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Static Release|x64.Build.0 = Static Release|x64 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Debug|Win32.ActiveCfg = Debug|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Debug|Win32.Build.0 = Debug|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Debug|x64.ActiveCfg = Debug|x64 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Debug|x64.Build.0 = Debug|x64 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.ICU Debug|x64.Build.0 = ICU Debug|x64 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.ICU Release|Win32.Build.0 = ICU Release|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.ICU Release|x64.ActiveCfg = ICU Release|x64 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.ICU Release|x64.Build.0 = ICU Release|x64 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Release|Win32.ActiveCfg = Release|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Release|Win32.Build.0 = Release|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Release|x64.ActiveCfg = Release|x64 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Release|x64.Build.0 = Release|x64 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Static Debug|Win32.Build.0 = Static Debug|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Static Debug|x64.ActiveCfg = Static Debug|x64 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Static Debug|x64.Build.0 = Static Debug|x64 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Static Release|Win32.ActiveCfg = Static Release|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Static Release|Win32.Build.0 = Static Release|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Static Release|x64.ActiveCfg = Static Release|x64 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Static Release|x64.Build.0 = Static Release|x64 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Debug|Win32.ActiveCfg = Debug|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Debug|Win32.Build.0 = Debug|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Debug|x64.ActiveCfg = Debug|x64 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Debug|x64.Build.0 = Debug|x64 {792C0625-DE93-4756-AAFA-23CCED2157B0}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {792C0625-DE93-4756-AAFA-23CCED2157B0}.ICU Debug|x64.Build.0 = ICU Debug|x64 {792C0625-DE93-4756-AAFA-23CCED2157B0}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.ICU Release|Win32.Build.0 = ICU Release|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.ICU Release|x64.ActiveCfg = ICU Release|x64 {792C0625-DE93-4756-AAFA-23CCED2157B0}.ICU Release|x64.Build.0 = ICU Release|x64 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Release|Win32.ActiveCfg = Release|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Release|Win32.Build.0 = Release|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Release|x64.ActiveCfg = Release|x64 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Release|x64.Build.0 = Release|x64 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Static Debug|Win32.Build.0 = Static Debug|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Static Debug|x64.ActiveCfg = Static Debug|x64 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Static Debug|x64.Build.0 = Static Debug|x64 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Static Release|Win32.ActiveCfg = Static Release|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Static Release|Win32.Build.0 = Static Release|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Static Release|x64.ActiveCfg = Static Release|x64 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Static Release|x64.Build.0 = Static Release|x64 {152CE948-F659-4206-A50A-1D2B9658EF96}.Debug|Win32.ActiveCfg = Debug|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.Debug|Win32.Build.0 = Debug|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.Debug|x64.ActiveCfg = Debug|x64 {152CE948-F659-4206-A50A-1D2B9658EF96}.Debug|x64.Build.0 = Debug|x64 {152CE948-F659-4206-A50A-1D2B9658EF96}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {152CE948-F659-4206-A50A-1D2B9658EF96}.ICU Debug|x64.Build.0 = ICU Debug|x64 {152CE948-F659-4206-A50A-1D2B9658EF96}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.ICU Release|Win32.Build.0 = ICU Release|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.ICU Release|x64.ActiveCfg = ICU Release|x64 {152CE948-F659-4206-A50A-1D2B9658EF96}.ICU Release|x64.Build.0 = ICU Release|x64 {152CE948-F659-4206-A50A-1D2B9658EF96}.Release|Win32.ActiveCfg = Release|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.Release|Win32.Build.0 = Release|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.Release|x64.ActiveCfg = Release|x64 {152CE948-F659-4206-A50A-1D2B9658EF96}.Release|x64.Build.0 = Release|x64 {152CE948-F659-4206-A50A-1D2B9658EF96}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.Static Debug|Win32.Build.0 = Static Debug|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.Static Debug|x64.ActiveCfg = Static Debug|x64 {152CE948-F659-4206-A50A-1D2B9658EF96}.Static Debug|x64.Build.0 = Static Debug|x64 {152CE948-F659-4206-A50A-1D2B9658EF96}.Static Release|Win32.ActiveCfg = Static Release|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.Static Release|Win32.Build.0 = Static Release|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.Static Release|x64.ActiveCfg = Static Release|x64 {152CE948-F659-4206-A50A-1D2B9658EF96}.Static Release|x64.Build.0 = Static Release|x64 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Debug|Win32.ActiveCfg = Debug|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Debug|Win32.Build.0 = Debug|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Debug|x64.ActiveCfg = Debug|x64 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Debug|x64.Build.0 = Debug|x64 {4D8FEA60-A74F-4267-852F-C421AF12198D}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {4D8FEA60-A74F-4267-852F-C421AF12198D}.ICU Debug|x64.Build.0 = ICU Debug|x64 {4D8FEA60-A74F-4267-852F-C421AF12198D}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.ICU Release|Win32.Build.0 = ICU Release|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.ICU Release|x64.ActiveCfg = ICU Release|x64 {4D8FEA60-A74F-4267-852F-C421AF12198D}.ICU Release|x64.Build.0 = ICU Release|x64 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Release|Win32.ActiveCfg = Release|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Release|Win32.Build.0 = Release|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Release|x64.ActiveCfg = Release|x64 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Release|x64.Build.0 = Release|x64 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Static Debug|Win32.Build.0 = Static Debug|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Static Debug|x64.ActiveCfg = Static Debug|x64 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Static Debug|x64.Build.0 = Static Debug|x64 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Static Release|Win32.ActiveCfg = Static Release|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Static Release|Win32.Build.0 = Static Release|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Static Release|x64.ActiveCfg = Static Release|x64 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Static Release|x64.Build.0 = Static Release|x64 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Debug|Win32.ActiveCfg = Debug|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Debug|Win32.Build.0 = Debug|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Debug|x64.ActiveCfg = Debug|x64 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Debug|x64.Build.0 = Debug|x64 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.ICU Debug|x64.Build.0 = ICU Debug|x64 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.ICU Release|Win32.Build.0 = ICU Release|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.ICU Release|x64.ActiveCfg = ICU Release|x64 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.ICU Release|x64.Build.0 = ICU Release|x64 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Release|Win32.ActiveCfg = Release|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Release|Win32.Build.0 = Release|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Release|x64.ActiveCfg = Release|x64 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Release|x64.Build.0 = Release|x64 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Static Debug|Win32.Build.0 = Static Debug|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Static Debug|x64.ActiveCfg = Static Debug|x64 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Static Debug|x64.Build.0 = Static Debug|x64 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Static Release|Win32.ActiveCfg = Static Release|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Static Release|Win32.Build.0 = Static Release|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Static Release|x64.ActiveCfg = Static Release|x64 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Static Release|x64.Build.0 = Static Release|x64 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Debug|Win32.ActiveCfg = Debug|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Debug|Win32.Build.0 = Debug|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Debug|x64.ActiveCfg = Debug|x64 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Debug|x64.Build.0 = Debug|x64 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.ICU Debug|x64.Build.0 = ICU Debug|x64 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.ICU Release|Win32.Build.0 = ICU Release|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.ICU Release|x64.ActiveCfg = ICU Release|x64 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.ICU Release|x64.Build.0 = ICU Release|x64 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Release|Win32.ActiveCfg = Release|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Release|Win32.Build.0 = Release|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Release|x64.ActiveCfg = Release|x64 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Release|x64.Build.0 = Release|x64 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Static Debug|Win32.Build.0 = Static Debug|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Static Debug|x64.ActiveCfg = Static Debug|x64 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Static Debug|x64.Build.0 = Static Debug|x64 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Static Release|Win32.ActiveCfg = Static Release|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Static Release|Win32.Build.0 = Static Release|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Static Release|x64.ActiveCfg = Static Release|x64 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Static Release|x64.Build.0 = Static Release|x64 {D3552FBC-8618-43C5-86C0-237536D8E700}.Debug|Win32.ActiveCfg = Debug|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.Debug|Win32.Build.0 = Debug|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.Debug|x64.ActiveCfg = Debug|x64 {D3552FBC-8618-43C5-86C0-237536D8E700}.Debug|x64.Build.0 = Debug|x64 {D3552FBC-8618-43C5-86C0-237536D8E700}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {D3552FBC-8618-43C5-86C0-237536D8E700}.ICU Debug|x64.Build.0 = ICU Debug|x64 {D3552FBC-8618-43C5-86C0-237536D8E700}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.ICU Release|Win32.Build.0 = ICU Release|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.ICU Release|x64.ActiveCfg = ICU Release|x64 {D3552FBC-8618-43C5-86C0-237536D8E700}.ICU Release|x64.Build.0 = ICU Release|x64 {D3552FBC-8618-43C5-86C0-237536D8E700}.Release|Win32.ActiveCfg = Release|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.Release|Win32.Build.0 = Release|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.Release|x64.ActiveCfg = Release|x64 {D3552FBC-8618-43C5-86C0-237536D8E700}.Release|x64.Build.0 = Release|x64 {D3552FBC-8618-43C5-86C0-237536D8E700}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.Static Debug|Win32.Build.0 = Static Debug|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.Static Debug|x64.ActiveCfg = Static Debug|x64 {D3552FBC-8618-43C5-86C0-237536D8E700}.Static Debug|x64.Build.0 = Static Debug|x64 {D3552FBC-8618-43C5-86C0-237536D8E700}.Static Release|Win32.ActiveCfg = Static Release|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.Static Release|Win32.Build.0 = Static Release|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.Static Release|x64.ActiveCfg = Static Release|x64 {D3552FBC-8618-43C5-86C0-237536D8E700}.Static Release|x64.Build.0 = Static Release|x64 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Debug|Win32.ActiveCfg = Debug|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Debug|Win32.Build.0 = Debug|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Debug|x64.ActiveCfg = Debug|x64 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Debug|x64.Build.0 = Debug|x64 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.ICU Debug|x64.Build.0 = ICU Debug|x64 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.ICU Release|Win32.Build.0 = ICU Release|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.ICU Release|x64.ActiveCfg = ICU Release|x64 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.ICU Release|x64.Build.0 = ICU Release|x64 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Release|Win32.ActiveCfg = Release|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Release|Win32.Build.0 = Release|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Release|x64.ActiveCfg = Release|x64 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Release|x64.Build.0 = Release|x64 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Static Debug|Win32.Build.0 = Static Debug|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Static Debug|x64.ActiveCfg = Static Debug|x64 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Static Debug|x64.Build.0 = Static Debug|x64 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Static Release|Win32.ActiveCfg = Static Release|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Static Release|Win32.Build.0 = Static Release|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Static Release|x64.ActiveCfg = Static Release|x64 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Static Release|x64.Build.0 = Static Release|x64 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Debug|Win32.ActiveCfg = Debug|Win32 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Debug|Win32.Build.0 = Debug|Win32 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Debug|x64.ActiveCfg = Debug|x64 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Debug|x64.Build.0 = Debug|x64 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.ICU Debug|x64.Build.0 = ICU Debug|x64 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.ICU Release|Win32.Build.0 = ICU Release|Win32 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.ICU Release|x64.ActiveCfg = ICU Release|x64 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.ICU Release|x64.Build.0 = ICU Release|x64 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Release|Win32.ActiveCfg = Release|Win32 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Release|Win32.Build.0 = Release|Win32 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Release|x64.ActiveCfg = Release|x64 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Release|x64.Build.0 = Release|x64 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Static Debug|Win32.Build.0 = Static Debug|Win32 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Static Debug|x64.ActiveCfg = Static Debug|x64 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Static Debug|x64.Build.0 = Static Debug|x64 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Static Release|Win32.ActiveCfg = Static Release|Win32 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Static Release|Win32.Build.0 = Static Release|Win32 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Static Release|x64.ActiveCfg = Static Release|x64 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Static Release|x64.Build.0 = Static Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(DPCodeReviewSolutionGUID) = preSolution DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000} EndGlobalSection EndGlobal xerces-c-3.1.1/projects/Win32/VC9/xerces-all/all/0000755000175000017500000000000011363617263020216 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC9/xerces-all/all/all.vcproj0000644000175000017500000001520210757343070022211 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC9/xerces-all/EnumVal/0000755000175000017500000000000011363617263021015 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC9/xerces-all/EnumVal/EnumVal.vcproj0000644000175000017500000006322111362100754023604 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC9/xerces-all/DOMPrint/0000755000175000017500000000000011363617262021101 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC9/xerces-all/DOMPrint/DOMPrint.vcproj0000644000175000017500000006431211362100754023760 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC7.1/0000755000175000017500000000000011363617270015542 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/0000755000175000017500000000000011363617271017602 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/DOMNormalizerTest/0000755000175000017500000000000011363617270023123 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/DOMNormalizerTest/DOMNormalizerTest.vcproj0000644000175000017500000002731510757340164027703 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/SAXPrint/0000755000175000017500000000000011363617271021252 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/SAXPrint/SAXPrint.vcproj0000644000175000017500000002657310757340164024164 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/SCMPrint/0000755000175000017500000000000011363617271021241 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/SCMPrint/SCMPrint.vcproj0000644000175000017500000002575010757340164024136 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/SAXCount/0000755000175000017500000000000011363617271021246 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/SAXCount/SAXCount.vcproj0000644000175000017500000002657310757340164024154 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/DOMTraversalTest/0000755000175000017500000000000011363617271022745 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/DOMTraversalTest/DOMTraversalTest.vcproj0000644000175000017500000002731610757340164027346 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/MemParse/0000755000175000017500000000000011363617271021313 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/MemParse/MemParse.vcproj0000644000175000017500000002657310757340164024266 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/DOMMemTest/0000755000175000017500000000000011363617271021520 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/DOMMemTest/DOMMemTest.vcproj0000644000175000017500000002662510757340164024676 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/XSValueTest/0000755000175000017500000000000011363617270021770 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/XSValueTest/XSValueTest.vcproj0000644000175000017500000002661610757340164025420 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/RangeTest/0000755000175000017500000000000011363617271021476 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/RangeTest/RangeTest.vcproj0000644000175000017500000002621410757340164024624 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/Redirect/0000755000175000017500000000000011363617271021343 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/Redirect/Redirect.vcproj0000644000175000017500000002657310757340164024346 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/PSVIWriter/0000755000175000017500000000000011363617271021560 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/PSVIWriter/PSVIWriter.vcproj0000644000175000017500000002662610757340164024777 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/PParse/0000755000175000017500000000000011363617270020773 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/PParse/PParse.vcproj0000644000175000017500000002723710757340164023426 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/MemHandlerTest/0000755000175000017500000000000011363617271022456 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/MemHandlerTest/MemHandlerTest.vcproj0000644000175000017500000002742711042054515026561 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/InitTermTest/0000755000175000017500000000000011363617271022175 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/InitTermTest/InitTermTest.vcproj0000644000175000017500000002706210757340164026024 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/CreateDOMDocument/0000755000175000017500000000000011363617271023044 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/CreateDOMDocument/CreateDOMDocument.vcproj0000644000175000017500000002666510757340164027552 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/ThreadTest/0000755000175000017500000000000011363617271021651 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/ThreadTest/ThreadTest.vcproj0000644000175000017500000002642010757340164025151 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/XSerializerTest/0000755000175000017500000000000011363617271022703 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/XSerializerTest/XSerializerTest.vcproj0000644000175000017500000002735410757340164027244 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/SEnumVal/0000755000175000017500000000000011363617270021273 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/SEnumVal/SEnumVal.vcproj0000644000175000017500000002626710757340164024230 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/StdInParse/0000755000175000017500000000000011363617271021616 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/StdInParse/StdInParse.vcproj0000644000175000017500000002747310757340164025074 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/XInclude/0000755000175000017500000000000011363617271021315 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/XInclude/XInclude.vcproj0000644000175000017500000002701310757340164024260 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/SAX2Count/0000755000175000017500000000000011363617270021327 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/SAX2Count/SAX2Count.vcproj0000644000175000017500000002664210757340164024315 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/EncodingTest/0000755000175000017500000000000011363617270022167 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/EncodingTest/EncodingTest.vcproj0000644000175000017500000002672310757340164026015 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/DOMTest/0000755000175000017500000000000011363617270021060 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/DOMTest/DOMTest.vcproj0000644000175000017500000002660510757340164023576 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/XercesLib/0000755000175000017500000000000011363617270021461 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/XercesLib/XercesLib.vcproj0000644000175000017500000027434211325541140024570 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/DOMTypeInfoTest/0000755000175000017500000000000011363617271022537 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/DOMTypeInfoTest/DOMTypeInfoTest.vcproj0000644000175000017500000002741010757340164026725 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/SAX2Print/0000755000175000017500000000000011363617270021333 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/SAX2Print/SAX2Print.vcproj0000644000175000017500000002714410757340164024323 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/DOMCount/0000755000175000017500000000000011363617270021231 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/DOMCount/DOMCount.vcproj0000644000175000017500000002607610757340164024122 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/xerces-all.sln0000644000175000017500000011714710766501116022366 0ustar borisborisMicrosoft Visual Studio Solution File, Format Version 8.00 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "all", "all\all.vcproj", "{E305E46C-9D74-4755-BF57-29DEAEF4DCDD}" ProjectSection(ProjectDependencies) = postProject {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27} = {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27} {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75} = {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75} {117D4C21-4C54-478F-83AE-D6179A8D7EF1} = {117D4C21-4C54-478F-83AE-D6179A8D7EF1} {792C0625-DE93-4756-AAFA-23CCED2157B0} = {792C0625-DE93-4756-AAFA-23CCED2157B0} {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F} = {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F} {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2} = {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2} {2230D938-8908-4C12-9E96-9C6C4048A52D} = {2230D938-8908-4C12-9E96-9C6C4048A52D} {69220042-712E-41B5-A658-4CCF9D5B5FDF} = {69220042-712E-41B5-A658-4CCF9D5B5FDF} {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D} = {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D} {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} {4D8FEA60-A74F-4267-852F-C421AF12198D} = {4D8FEA60-A74F-4267-852F-C421AF12198D} {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284} = {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284} {6F412978-851F-494D-8C3D-DF97A515EDF5} = {6F412978-851F-494D-8C3D-DF97A515EDF5} {60E3008A-0D78-4B25-A12E-9D7A3921F67C} = {60E3008A-0D78-4B25-A12E-9D7A3921F67C} {FB794093-CA26-4DBF-A7DF-1A62B7C872D5} = {FB794093-CA26-4DBF-A7DF-1A62B7C872D5} {056463A8-AEDD-4B92-BC24-C0C154C0379C} = {056463A8-AEDD-4B92-BC24-C0C154C0379C} {2AB767A9-6A3B-4993-8FDB-3E6A30560739} = {2AB767A9-6A3B-4993-8FDB-3E6A30560739} {2682B2AB-E341-4528-85AB-BE95DE77A9BC} = {2682B2AB-E341-4528-85AB-BE95DE77A9BC} {959445AC-9081-4590-B457-C96164CF4BFA} = {959445AC-9081-4590-B457-C96164CF4BFA} {BE9C14B1-2301-4C62-85E2-B583D22AE29C} = {BE9C14B1-2301-4C62-85E2-B583D22AE29C} {DFC196B9-2146-4CDA-AC0A-632BD38FA41D} = {DFC196B9-2146-4CDA-AC0A-632BD38FA41D} {D3552FBC-8618-43C5-86C0-237536D8E700} = {D3552FBC-8618-43C5-86C0-237536D8E700} {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD} = {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD} {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2} = {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2} {7259B5D2-54FE-4142-9321-0572C615F0A2} = {7259B5D2-54FE-4142-9321-0572C615F0A2} {FB7E86DB-9557-4044-8FF7-A9131BB021E6} = {FB7E86DB-9557-4044-8FF7-A9131BB021E6} {B8B50FE7-B620-4D19-A147-B167D087DD53} = {B8B50FE7-B620-4D19-A147-B167D087DD53} {15A10DF2-F551-4306-A4CC-690F58C58081} = {15A10DF2-F551-4306-A4CC-690F58C58081} {895EDBF3-6A97-4641-8D96-7282005F8DD7} = {895EDBF3-6A97-4641-8D96-7282005F8DD7} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CreateDOMDocument", "CreateDOMDocument\CreateDOMDocument.vcproj", "{8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DOMCount", "DOMCount\DOMCount.vcproj", "{60E3008A-0D78-4B25-A12E-9D7A3921F67C}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DOMMemTest", "DOMMemTest\DOMMemTest.vcproj", "{0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DOMNormalizerTest", "DOMNormalizerTest\DOMNormalizerTest.vcproj", "{BE9C14B1-2301-4C62-85E2-B583D22AE29C}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DOMPrint", "DOMPrint\DOMPrint.vcproj", "{056463A8-AEDD-4B92-BC24-C0C154C0379C}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DOMTest", "DOMTest\DOMTest.vcproj", "{69220042-712E-41B5-A658-4CCF9D5B5FDF}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DOMTraversalTest", "DOMTraversalTest\DOMTraversalTest.vcproj", "{DFC196B9-2146-4CDA-AC0A-632BD38FA41D}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DOMTypeInfoTest", "DOMTypeInfoTest\DOMTypeInfoTest.vcproj", "{15A10DF2-F551-4306-A4CC-690F58C58081}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EncodingTest", "EncodingTest\EncodingTest.vcproj", "{B8B50FE7-B620-4D19-A147-B167D087DD53}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EnumVal", "EnumVal\EnumVal.vcproj", "{26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "InitTermTest", "InitTermTest\InitTermTest.vcproj", "{2682B2AB-E341-4528-85AB-BE95DE77A9BC}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MemHandlerTest", "MemHandlerTest\MemHandlerTest.vcproj", "{160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MemParse", "MemParse\MemParse.vcproj", "{6F412978-851F-494D-8C3D-DF97A515EDF5}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PParse", "PParse\PParse.vcproj", "{65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RangeTest", "RangeTest\RangeTest.vcproj", "{BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Redirect", "Redirect\Redirect.vcproj", "{569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SAX2Count", "SAX2Count\SAX2Count.vcproj", "{FB794093-CA26-4DBF-A7DF-1A62B7C872D5}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SAX2Print", "SAX2Print\SAX2Print.vcproj", "{7259B5D2-54FE-4142-9321-0572C615F0A2}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SAXCount", "SAXCount\SAXCount.vcproj", "{2AB767A9-6A3B-4993-8FDB-3E6A30560739}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SAXPrint", "SAXPrint\SAXPrint.vcproj", "{959445AC-9081-4590-B457-C96164CF4BFA}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SEnumVal", "SEnumVal\SEnumVal.vcproj", "{2230D938-8908-4C12-9E96-9C6C4048A52D}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StdInParse", "StdInParse\StdInParse.vcproj", "{D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ThreadTest", "ThreadTest\ThreadTest.vcproj", "{792C0625-DE93-4756-AAFA-23CCED2157B0}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XercesLib", "XercesLib\XercesLib.vcproj", "{152CE948-F659-4206-A50A-1D2B9658EF96}" ProjectSection(ProjectDependencies) = postProject EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XSerializerTest", "XSerializerTest\XSerializerTest.vcproj", "{4D8FEA60-A74F-4267-852F-C421AF12198D}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PSVIWriter", "PSVIWriter\PSVIWriter.vcproj", "{FB7E86DB-9557-4044-8FF7-A9131BB021E6}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SCMPrint", "SCMPrint\SCMPrint.vcproj", "{895EDBF3-6A97-4641-8D96-7282005F8DD7}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XSValueTest", "XSValueTest\XSValueTest.vcproj", "{D3552FBC-8618-43C5-86C0-237536D8E700}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XInclude", "XInclude\XInclude.vcproj", "{117D4C21-4C54-478F-83AE-D6179A8D7EF1}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Global GlobalSection(DPCodeReviewSolutionGUID) = preSolution DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000} EndGlobalSection GlobalSection(SolutionConfiguration) = preSolution Debug = Debug ICU Debug = ICU Debug ICU Release = ICU Release Release = Release Static Debug = Static Debug Static Release = Static Release EndGlobalSection GlobalSection(ProjectDependencies) = postSolution EndGlobalSection GlobalSection(ProjectConfiguration) = postSolution {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Debug.ActiveCfg = Debug|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Debug.Build.0 = Debug|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.ICU Debug.ActiveCfg = ICU Debug|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.ICU Debug.Build.0 = ICU Debug|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.ICU Release.ActiveCfg = ICU Release|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.ICU Release.Build.0 = ICU Release|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Release.ActiveCfg = Release|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Release.Build.0 = Release|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Static Debug.ActiveCfg = Static Debug|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Static Debug.Build.0 = Static Debug|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Static Release.ActiveCfg = Static Release|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Static Release.Build.0 = Static Release|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Debug.ActiveCfg = Debug|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Debug.Build.0 = Debug|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.ICU Debug.ActiveCfg = ICU Debug|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.ICU Debug.Build.0 = ICU Debug|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.ICU Release.ActiveCfg = ICU Release|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.ICU Release.Build.0 = ICU Release|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Release.ActiveCfg = Release|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Release.Build.0 = Release|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Static Debug.ActiveCfg = Static Debug|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Static Debug.Build.0 = Static Debug|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Static Release.ActiveCfg = Static Release|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Static Release.Build.0 = Static Release|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Debug.ActiveCfg = Debug|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Debug.Build.0 = Debug|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.ICU Debug.ActiveCfg = ICU Debug|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.ICU Debug.Build.0 = ICU Debug|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.ICU Release.ActiveCfg = ICU Release|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.ICU Release.Build.0 = ICU Release|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Release.ActiveCfg = Release|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Release.Build.0 = Release|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Static Debug.ActiveCfg = Static Debug|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Static Debug.Build.0 = Static Debug|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Static Release.ActiveCfg = Static Release|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Static Release.Build.0 = Static Release|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Debug.ActiveCfg = Debug|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Debug.Build.0 = Debug|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.ICU Debug.ActiveCfg = ICU Debug|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.ICU Debug.Build.0 = ICU Debug|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.ICU Release.ActiveCfg = ICU Release|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.ICU Release.Build.0 = ICU Release|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Release.ActiveCfg = Release|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Release.Build.0 = Release|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Static Debug.ActiveCfg = Static Debug|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Static Debug.Build.0 = Static Debug|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Static Release.ActiveCfg = Static Release|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Static Release.Build.0 = Static Release|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Debug.ActiveCfg = Debug|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Debug.Build.0 = Debug|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.ICU Debug.ActiveCfg = ICU Debug|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.ICU Debug.Build.0 = ICU Debug|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.ICU Release.ActiveCfg = ICU Release|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.ICU Release.Build.0 = ICU Release|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Release.ActiveCfg = Release|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Release.Build.0 = Release|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Static Debug.ActiveCfg = Static Debug|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Static Debug.Build.0 = Static Debug|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Static Release.ActiveCfg = Static Release|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Static Release.Build.0 = Static Release|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Debug.ActiveCfg = Debug|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Debug.Build.0 = Debug|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.ICU Debug.ActiveCfg = ICU Debug|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.ICU Debug.Build.0 = ICU Debug|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.ICU Release.ActiveCfg = ICU Release|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.ICU Release.Build.0 = ICU Release|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Release.ActiveCfg = Release|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Release.Build.0 = Release|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Static Debug.ActiveCfg = Static Debug|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Static Debug.Build.0 = Static Debug|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Static Release.ActiveCfg = Static Release|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Static Release.Build.0 = Static Release|Win32 {69220042-712E-41B5-A658-4CCF9D5B5FDF}.Debug.ActiveCfg = Debug|Win32 {69220042-712E-41B5-A658-4CCF9D5B5FDF}.Debug.Build.0 = Debug|Win32 {69220042-712E-41B5-A658-4CCF9D5B5FDF}.ICU Debug.ActiveCfg = ICU Debug|Win32 {69220042-712E-41B5-A658-4CCF9D5B5FDF}.ICU Debug.Build.0 = ICU Debug|Win32 {69220042-712E-41B5-A658-4CCF9D5B5FDF}.ICU Release.ActiveCfg = ICU Release|Win32 {69220042-712E-41B5-A658-4CCF9D5B5FDF}.ICU Release.Build.0 = ICU Release|Win32 {69220042-712E-41B5-A658-4CCF9D5B5FDF}.Release.ActiveCfg = Release|Win32 {69220042-712E-41B5-A658-4CCF9D5B5FDF}.Release.Build.0 = Release|Win32 {69220042-712E-41B5-A658-4CCF9D5B5FDF}.Static Debug.ActiveCfg = Static Debug|Win32 {69220042-712E-41B5-A658-4CCF9D5B5FDF}.Static Debug.Build.0 = Static Debug|Win32 {69220042-712E-41B5-A658-4CCF9D5B5FDF}.Static Release.ActiveCfg = Static Release|Win32 {69220042-712E-41B5-A658-4CCF9D5B5FDF}.Static Release.Build.0 = Static Release|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Debug.ActiveCfg = Debug|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Debug.Build.0 = Debug|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.ICU Debug.ActiveCfg = ICU Debug|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.ICU Debug.Build.0 = ICU Debug|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.ICU Release.ActiveCfg = ICU Release|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.ICU Release.Build.0 = ICU Release|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Release.ActiveCfg = Release|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Release.Build.0 = Release|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Static Debug.ActiveCfg = Static Debug|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Static Debug.Build.0 = Static Debug|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Static Release.ActiveCfg = Static Release|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Static Release.Build.0 = Static Release|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.Debug.ActiveCfg = Debug|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.Debug.Build.0 = Debug|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.ICU Debug.ActiveCfg = ICU Debug|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.ICU Debug.Build.0 = ICU Debug|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.ICU Release.ActiveCfg = ICU Release|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.ICU Release.Build.0 = ICU Release|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.Release.ActiveCfg = Release|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.Release.Build.0 = Release|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.Static Debug.ActiveCfg = Static Debug|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.Static Debug.Build.0 = Static Debug|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.Static Release.ActiveCfg = Static Release|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.Static Release.Build.0 = Static Release|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Debug.ActiveCfg = Debug|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Debug.Build.0 = Debug|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.ICU Debug.ActiveCfg = ICU Debug|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.ICU Debug.Build.0 = ICU Debug|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.ICU Release.ActiveCfg = ICU Release|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.ICU Release.Build.0 = ICU Release|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Release.ActiveCfg = Release|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Release.Build.0 = Release|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Static Debug.ActiveCfg = Static Debug|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Static Debug.Build.0 = Static Debug|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Static Release.ActiveCfg = Static Release|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Static Release.Build.0 = Static Release|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Debug.ActiveCfg = Debug|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Debug.Build.0 = Debug|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.ICU Debug.ActiveCfg = ICU Debug|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.ICU Debug.Build.0 = ICU Debug|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.ICU Release.ActiveCfg = ICU Release|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.ICU Release.Build.0 = ICU Release|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Release.ActiveCfg = Release|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Release.Build.0 = Release|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Static Debug.ActiveCfg = Static Debug|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Static Debug.Build.0 = Static Debug|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Static Release.ActiveCfg = Static Release|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Static Release.Build.0 = Static Release|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Debug.ActiveCfg = Debug|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Debug.Build.0 = Debug|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.ICU Debug.ActiveCfg = ICU Debug|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.ICU Debug.Build.0 = ICU Debug|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.ICU Release.ActiveCfg = ICU Release|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.ICU Release.Build.0 = ICU Release|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Release.ActiveCfg = Release|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Release.Build.0 = Release|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Static Debug.ActiveCfg = Static Debug|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Static Debug.Build.0 = Static Debug|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Static Release.ActiveCfg = Static Release|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Static Release.Build.0 = Static Release|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Debug.ActiveCfg = Debug|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Debug.Build.0 = Debug|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.ICU Debug.ActiveCfg = ICU Debug|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.ICU Debug.Build.0 = ICU Debug|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.ICU Release.ActiveCfg = ICU Release|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.ICU Release.Build.0 = ICU Release|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Release.ActiveCfg = Release|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Release.Build.0 = Release|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Static Debug.ActiveCfg = Static Debug|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Static Debug.Build.0 = Static Debug|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Static Release.ActiveCfg = Static Release|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Static Release.Build.0 = Static Release|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Debug.ActiveCfg = Debug|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Debug.Build.0 = Debug|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.ICU Debug.ActiveCfg = ICU Debug|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.ICU Debug.Build.0 = ICU Debug|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.ICU Release.ActiveCfg = ICU Release|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.ICU Release.Build.0 = ICU Release|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Release.ActiveCfg = Release|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Release.Build.0 = Release|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Static Debug.ActiveCfg = Static Debug|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Static Debug.Build.0 = Static Debug|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Static Release.ActiveCfg = Static Release|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Static Release.Build.0 = Static Release|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Debug.ActiveCfg = Debug|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Debug.Build.0 = Debug|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.ICU Debug.ActiveCfg = ICU Debug|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.ICU Debug.Build.0 = ICU Debug|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.ICU Release.ActiveCfg = ICU Release|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.ICU Release.Build.0 = ICU Release|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Release.ActiveCfg = Release|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Release.Build.0 = Release|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Static Debug.ActiveCfg = Static Debug|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Static Debug.Build.0 = Static Debug|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Static Release.ActiveCfg = Static Release|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Static Release.Build.0 = Static Release|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Debug.ActiveCfg = Debug|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Debug.Build.0 = Debug|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.ICU Debug.ActiveCfg = ICU Debug|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.ICU Debug.Build.0 = ICU Debug|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.ICU Release.ActiveCfg = ICU Release|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.ICU Release.Build.0 = ICU Release|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Release.ActiveCfg = Release|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Release.Build.0 = Release|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Static Debug.ActiveCfg = Static Debug|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Static Debug.Build.0 = Static Debug|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Static Release.ActiveCfg = Static Release|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Static Release.Build.0 = Static Release|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Debug.ActiveCfg = Debug|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Debug.Build.0 = Debug|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.ICU Debug.ActiveCfg = ICU Debug|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.ICU Debug.Build.0 = ICU Debug|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.ICU Release.ActiveCfg = ICU Release|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.ICU Release.Build.0 = ICU Release|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Release.ActiveCfg = Release|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Release.Build.0 = Release|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Static Debug.ActiveCfg = Static Debug|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Static Debug.Build.0 = Static Debug|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Static Release.ActiveCfg = Static Release|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Static Release.Build.0 = Static Release|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Debug.ActiveCfg = Debug|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Debug.Build.0 = Debug|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.ICU Debug.ActiveCfg = ICU Debug|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.ICU Debug.Build.0 = ICU Debug|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.ICU Release.ActiveCfg = ICU Release|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.ICU Release.Build.0 = ICU Release|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Release.ActiveCfg = Release|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Release.Build.0 = Release|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Static Debug.ActiveCfg = Static Debug|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Static Debug.Build.0 = Static Debug|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Static Release.ActiveCfg = Static Release|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Static Release.Build.0 = Static Release|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Debug.ActiveCfg = Debug|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Debug.Build.0 = Debug|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.ICU Debug.ActiveCfg = ICU Debug|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.ICU Debug.Build.0 = ICU Debug|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.ICU Release.ActiveCfg = ICU Release|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.ICU Release.Build.0 = ICU Release|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Release.ActiveCfg = Release|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Release.Build.0 = Release|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Static Debug.ActiveCfg = Static Debug|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Static Debug.Build.0 = Static Debug|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Static Release.ActiveCfg = Static Release|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Static Release.Build.0 = Static Release|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Debug.ActiveCfg = Debug|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Debug.Build.0 = Debug|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.ICU Debug.ActiveCfg = ICU Debug|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.ICU Debug.Build.0 = ICU Debug|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.ICU Release.ActiveCfg = ICU Release|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.ICU Release.Build.0 = ICU Release|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Release.ActiveCfg = Release|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Release.Build.0 = Release|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Static Debug.ActiveCfg = Static Debug|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Static Debug.Build.0 = Static Debug|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Static Release.ActiveCfg = Static Release|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Static Release.Build.0 = Static Release|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.Debug.ActiveCfg = Debug|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.Debug.Build.0 = Debug|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.ICU Debug.ActiveCfg = ICU Debug|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.ICU Debug.Build.0 = ICU Debug|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.ICU Release.ActiveCfg = ICU Release|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.ICU Release.Build.0 = ICU Release|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.Release.ActiveCfg = Release|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.Release.Build.0 = Release|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.Static Debug.ActiveCfg = Static Debug|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.Static Debug.Build.0 = Static Debug|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.Static Release.ActiveCfg = Static Release|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.Static Release.Build.0 = Static Release|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Debug.ActiveCfg = Debug|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Debug.Build.0 = Debug|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.ICU Debug.ActiveCfg = ICU Debug|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.ICU Debug.Build.0 = ICU Debug|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.ICU Release.ActiveCfg = ICU Release|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.ICU Release.Build.0 = ICU Release|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Release.ActiveCfg = Release|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Release.Build.0 = Release|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Static Debug.ActiveCfg = Static Debug|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Static Debug.Build.0 = Static Debug|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Static Release.ActiveCfg = Static Release|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Static Release.Build.0 = Static Release|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Debug.ActiveCfg = Debug|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Debug.Build.0 = Debug|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.ICU Debug.ActiveCfg = ICU Debug|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.ICU Debug.Build.0 = ICU Debug|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.ICU Release.ActiveCfg = ICU Release|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.ICU Release.Build.0 = ICU Release|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Release.ActiveCfg = Release|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Release.Build.0 = Release|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Static Debug.ActiveCfg = Static Debug|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Static Debug.Build.0 = Static Debug|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Static Release.ActiveCfg = Static Release|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Static Release.Build.0 = Static Release|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Debug.ActiveCfg = Debug|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Debug.Build.0 = Debug|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.ICU Debug.ActiveCfg = ICU Debug|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.ICU Debug.Build.0 = ICU Debug|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.ICU Release.ActiveCfg = ICU Release|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.ICU Release.Build.0 = ICU Release|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Release.ActiveCfg = Release|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Release.Build.0 = Release|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Static Debug.ActiveCfg = Static Debug|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Static Debug.Build.0 = Static Debug|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Static Release.ActiveCfg = Static Release|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Static Release.Build.0 = Static Release|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.Debug.ActiveCfg = Debug|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.Debug.Build.0 = Debug|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.ICU Debug.ActiveCfg = ICU Debug|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.ICU Debug.Build.0 = ICU Debug|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.ICU Release.ActiveCfg = ICU Release|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.ICU Release.Build.0 = ICU Release|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.Release.ActiveCfg = Release|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.Release.Build.0 = Release|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.Static Debug.ActiveCfg = Static Debug|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.Static Debug.Build.0 = Static Debug|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.Static Release.ActiveCfg = Static Release|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.Static Release.Build.0 = Static Release|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Debug.ActiveCfg = Debug|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Debug.Build.0 = Debug|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.ICU Debug.ActiveCfg = ICU Debug|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.ICU Debug.Build.0 = ICU Debug|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.ICU Release.ActiveCfg = ICU Release|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.ICU Release.Build.0 = ICU Release|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Release.ActiveCfg = Release|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Release.Build.0 = Release|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Static Debug.ActiveCfg = Static Debug|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Static Debug.Build.0 = Static Debug|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Static Release.ActiveCfg = Static Release|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Static Release.Build.0 = Static Release|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Debug.ActiveCfg = Debug|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Debug.Build.0 = Debug|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.ICU Debug.ActiveCfg = ICU Debug|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.ICU Debug.Build.0 = ICU Debug|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.ICU Release.ActiveCfg = ICU Release|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.ICU Release.Build.0 = ICU Release|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Release.ActiveCfg = Release|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Release.Build.0 = Release|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Static Debug.ActiveCfg = Static Debug|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Static Debug.Build.0 = Static Debug|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Static Release.ActiveCfg = Static Release|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Static Release.Build.0 = Static Release|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Debug.ActiveCfg = Debug|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Debug.Build.0 = Debug|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.ICU Debug.ActiveCfg = ICU Debug|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.ICU Debug.Build.0 = ICU Debug|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.ICU Release.ActiveCfg = ICU Release|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.ICU Release.Build.0 = ICU Release|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Release.ActiveCfg = Release|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Release.Build.0 = Release|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Static Debug.ActiveCfg = Static Debug|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Static Debug.Build.0 = Static Debug|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Static Release.ActiveCfg = Static Release|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Static Release.Build.0 = Static Release|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.Debug.ActiveCfg = Debug|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.Debug.Build.0 = Debug|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.ICU Debug.ActiveCfg = ICU Debug|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.ICU Debug.Build.0 = ICU Debug|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.ICU Release.ActiveCfg = ICU Release|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.ICU Release.Build.0 = ICU Release|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.Release.ActiveCfg = Release|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.Release.Build.0 = Release|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.Static Debug.ActiveCfg = Static Debug|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.Static Debug.Build.0 = Static Debug|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.Static Release.ActiveCfg = Static Release|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.Static Release.Build.0 = Static Release|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Debug.ActiveCfg = Debug|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Debug.Build.0 = Debug|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.ICU Debug.ActiveCfg = ICU Debug|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.ICU Debug.Build.0 = ICU Debug|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.ICU Release.ActiveCfg = ICU Release|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.ICU Release.Build.0 = ICU Release|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Release.ActiveCfg = Release|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Release.Build.0 = Release|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Static Debug.ActiveCfg = Static Debug|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Static Debug.Build.0 = Static Debug|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Static Release.ActiveCfg = Static Release|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Static Release.Build.0 = Static Release|Win32 EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution EndGlobalSection GlobalSection(ExtensibilityAddIns) = postSolution EndGlobalSection EndGlobal xerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/all/0000755000175000017500000000000011363617271020352 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/all/all.vcproj0000644000175000017500000000536410757340164022357 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/EnumVal/0000755000175000017500000000000011363617271021151 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/EnumVal/EnumVal.vcproj0000644000175000017500000002611010757340164023745 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/DOMPrint/0000755000175000017500000000000011363617271021236 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC7.1/xerces-all/DOMPrint/DOMPrint.vcproj0000644000175000017500000002716610757340164024133 0ustar borisboris xerces-c-3.1.1/projects/Win32/BCC5/0000755000175000017500000000000011363617267015466 5ustar borisborisxerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/0000755000175000017500000000000011363617270017457 5ustar borisborisxerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/SAXPrint/0000755000175000017500000000000011363617270021127 5ustar borisborisxerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/SAXPrint/SAXPrint.mak0000644000175000017500000000762511300476775023307 0ustar borisboris# --------------------------------------------------------------------------- !if !$d(BCB) BCB = $(MAKEDIR)\.. !endif # --------------------------------------------------------------------------- TARGETPATH=..\..\..\..\..\Build\Win32\BCC5 PROJECT = $(TARGETPATH)\SAXPrint.exe OBJFILES = $(TARGETPATH)\obj\SAXPrint.obj \ $(TARGETPATH)\obj\SAXPrintHandlers.obj RESFILES = MAINSOURCE = SAXPrint.cpp RESDEPEN = $(RESFILES) LIBFILES = $(TARGETPATH)\xerces-bor_$(XERCESVER).lib IDLFILES = IDLGENFILES = LIBRARIES = SPARELIBS = DEFFILE = # --------------------------------------------------------------------------- PATHCPP = ..\..\..\..\..\samples\src\SAXPrint PATHASM = .; PATHPAS = .; PATHRC = .; USERDEFINES = _DEBUG;XERCES_NO_CONFIGURE_SUPPORT SYSDEFINES = _NO_VCL;_VIS_NOLIB;_RTLDLL INCLUDEPATH = ..\..\..\..\..\samples\src\SAXPrint;..\..\..\..\..\src LIBPATH = ..\..\..\..\..\samples\src\SAXPrint WARNINGS= # --------------------------------------------------------------------------- CFLAG1 = -Od -w -Tkh30000 -X- -r- -a8 -5 -b -k -y -v -vi- -c -tWM -tWC IDLCFLAGS = -src_suffix cpp -boa PFLAGS = -N2$(TARGETPATH)\obj \ -N0$(TARGETPATH)\obj -$YD -$W -$O- -v -JPHN -M RFLAGS = AFLAGS = /mx /w2 /zd LFLAGS = -I$(TARGETPATH)\obj -D"" -ap -Tpe -x -Gn -v # --------------------------------------------------------------------------- ALLOBJ = c0x32.obj $(OBJFILES) ALLRES = $(RESFILES) ALLLIB = $(LIBFILES) import32.lib cw32mti.lib # --------------------------------------------------------------------------- # --------------------------------------------------------------------------- # MAKE SECTION # --------------------------------------------------------------------------- # This section of the project file is not used by the BCB IDE. It is for # the benefit of building from the command-line using the MAKE utility. # --------------------------------------------------------------------------- .autodepend # --------------------------------------------------------------------------- !if "$(USERDEFINES)" != "" AUSERDEFINES = -d$(USERDEFINES:;= -d) !else AUSERDEFINES = !endif !if !$d(BCC32) BCC32 = bcc32 !endif !if !$d(CPP32) CPP32 = cpp32 !endif !if !$d(DCC32) DCC32 = dcc32 !endif !if !$d(TASM32) TASM32 = tasm32 !endif !if !$d(LINKER) LINKER = ilink32 !endif !if !$d(BRCC32) BRCC32 = brcc32 !endif # --------------------------------------------------------------------------- !if $d(PATHCPP) .PATH.CPP = $(PATHCPP) .PATH.C = $(PATHCPP) !endif !if $d(PATHPAS) .PATH.PAS = $(PATHPAS) !endif !if $d(PATHASM) .PATH.ASM = $(PATHASM) !endif !if $d(PATHRC) .PATH.RC = $(PATHRC) !endif # --------------------------------------------------------------------------- $(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) $(BCB)\BIN\$(LINKER) @&&! $(LFLAGS) -L$(LIBPATH) + $(ALLOBJ), + $(PROJECT),, + $(ALLLIB), + $(DEFFILE), + $(ALLRES) ! # --------------------------------------------------------------------------- .pas.hpp: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .pas.obj: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .cpp.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .cpp.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .asm.obj: $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ .rc.res: $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< # --------------------------------------------------------------------------- xerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/SCMPrint/0000755000175000017500000000000011363617267021124 5ustar borisborisxerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/SCMPrint/SCMPrint.mak0000644000175000017500000000753311300476775023263 0ustar borisboris# --------------------------------------------------------------------------- !if !$d(BCB) BCB = $(MAKEDIR)\.. !endif # --------------------------------------------------------------------------- TARGETPATH=..\..\..\..\..\Build\Win32\BCC5 PROJECT = $(TARGETPATH)\SCMPrint.exe OBJFILES = $(TARGETPATH)\obj\SCMPrint.obj RESFILES = MAINSOURCE = SCMPrint.cpp RESDEPEN = $(RESFILES) LIBFILES = $(TARGETPATH)\xerces-bor_$(XERCESVER).lib IDLFILES = IDLGENFILES = LIBRARIES = PACKAGES = SPARELIBS = DEFFILE = # --------------------------------------------------------------------------- PATHCPP = ..\..\..\..\..\samples\src\SCMPrint PATHASM = .; PATHPAS = .; PATHRC = .; USERDEFINES = _DEBUG;XERCES_NO_CONFIGURE_SUPPORT SYSDEFINES = _NO_VCL;NO_STRICT;_VIS_NOLIB;_RTLDLL INCLUDEPATH = ..\..\..\..\..\samples\src\SCMPrint;..\..\..\..\..\src LIBPATH = WARNINGS= # --------------------------------------------------------------------------- CFLAG1 = -Od -w -g0 -Tkh30000 -X- -r- -a8 -4 -b -k -y -v -vi- -c -tWM -tWC IDLCFLAGS = -src_suffix cpp -boa PFLAGS = -N2$(TARGETPATH)\obj \ -N0$(TARGETPATH)\obj -$YD -$W -$O- -v -JPHN -M RFLAGS = AFLAGS = /mx /w2 /zd LFLAGS = -I$(TARGETPATH)\obj -ap -Tpe -x -Gn -v # --------------------------------------------------------------------------- ALLOBJ = c0x32.obj $(OBJFILES) ALLRES = $(RESFILES) ALLLIB = $(LIBFILES) import32.lib cw32mti.lib # --------------------------------------------------------------------------- # --------------------------------------------------------------------------- # MAKE SECTION # --------------------------------------------------------------------------- # This section of the project file is not used by the BCB IDE. It is for # the benefit of building from the command-line using the MAKE utility. # --------------------------------------------------------------------------- .autodepend # --------------------------------------------------------------------------- !if "$(USERDEFINES)" != "" AUSERDEFINES = -d$(USERDEFINES:;= -d) !else AUSERDEFINES = !endif !if !$d(BCC32) BCC32 = bcc32 !endif !if !$d(CPP32) CPP32 = cpp32 !endif !if !$d(DCC32) DCC32 = dcc32 !endif !if !$d(TASM32) TASM32 = tasm32 !endif !if !$d(LINKER) LINKER = ilink32 !endif !if !$d(BRCC32) BRCC32 = brcc32 !endif # --------------------------------------------------------------------------- !if $d(PATHCPP) .PATH.CPP = $(PATHCPP) .PATH.C = $(PATHCPP) !endif !if $d(PATHPAS) .PATH.PAS = $(PATHPAS) !endif !if $d(PATHASM) .PATH.ASM = $(PATHASM) !endif !if $d(PATHRC) .PATH.RC = $(PATHRC) !endif # --------------------------------------------------------------------------- $(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) $(BCB)\BIN\$(LINKER) @&&! $(LFLAGS) -L$(LIBPATH) + $(ALLOBJ), + $(PROJECT),, + $(ALLLIB), + $(DEFFILE), + $(ALLRES) ! # --------------------------------------------------------------------------- .pas.hpp: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .pas.obj: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .cpp.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .cpp.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .asm.obj: $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ .rc.res: $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< # --------------------------------------------------------------------------- xerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/SAXCount/0000755000175000017500000000000011363617267021131 5ustar borisborisxerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/SAXCount/SAXCount.mak0000644000175000017500000000762511300476775023277 0ustar borisboris# --------------------------------------------------------------------------- !if !$d(BCB) BCB = $(MAKEDIR)\.. !endif # --------------------------------------------------------------------------- TARGETPATH=..\..\..\..\..\Build\Win32\BCC5 PROJECT = $(TARGETPATH)\SAXCount.exe OBJFILES = $(TARGETPATH)\obj\SAXCount.obj \ $(TARGETPATH)\obj\SAXCountHandlers.obj RESFILES = MAINSOURCE = SAXCount.cpp RESDEPEN = $(RESFILES) LIBFILES = $(TARGETPATH)\xerces-bor_$(XERCESVER).lib IDLFILES = IDLGENFILES = LIBRARIES = SPARELIBS = DEFFILE = # --------------------------------------------------------------------------- PATHCPP = ..\..\..\..\..\samples\src\SAXCount PATHASM = .; PATHPAS = .; PATHRC = .; USERDEFINES = _DEBUG;XERCES_NO_CONFIGURE_SUPPORT SYSDEFINES = _NO_VCL;_VIS_NOLIB;_RTLDLL INCLUDEPATH = ..\..\..\..\..\samples\src\SAXCount;..\..\..\..\..\src LIBPATH = ..\..\..\..\..\samples\src\SAXCount WARNINGS= # --------------------------------------------------------------------------- CFLAG1 = -Od -w -Tkh30000 -X- -r- -a8 -5 -b -k -y -v -vi- -c -tWM -tWC IDLCFLAGS = -src_suffix cpp -boa PFLAGS = -N2$(TARGETPATH)\obj \ -N0$(TARGETPATH)\obj -$YD -$W -$O- -v -JPHN -M RFLAGS = AFLAGS = /mx /w2 /zd LFLAGS = -I$(TARGETPATH)\obj -D"" -ap -Tpe -x -Gn -v # --------------------------------------------------------------------------- ALLOBJ = c0x32.obj $(OBJFILES) ALLRES = $(RESFILES) ALLLIB = $(LIBFILES) import32.lib cw32mti.lib # --------------------------------------------------------------------------- # --------------------------------------------------------------------------- # MAKE SECTION # --------------------------------------------------------------------------- # This section of the project file is not used by the BCB IDE. It is for # the benefit of building from the command-line using the MAKE utility. # --------------------------------------------------------------------------- .autodepend # --------------------------------------------------------------------------- !if "$(USERDEFINES)" != "" AUSERDEFINES = -d$(USERDEFINES:;= -d) !else AUSERDEFINES = !endif !if !$d(BCC32) BCC32 = bcc32 !endif !if !$d(CPP32) CPP32 = cpp32 !endif !if !$d(DCC32) DCC32 = dcc32 !endif !if !$d(TASM32) TASM32 = tasm32 !endif !if !$d(LINKER) LINKER = ilink32 !endif !if !$d(BRCC32) BRCC32 = brcc32 !endif # --------------------------------------------------------------------------- !if $d(PATHCPP) .PATH.CPP = $(PATHCPP) .PATH.C = $(PATHCPP) !endif !if $d(PATHPAS) .PATH.PAS = $(PATHPAS) !endif !if $d(PATHASM) .PATH.ASM = $(PATHASM) !endif !if $d(PATHRC) .PATH.RC = $(PATHRC) !endif # --------------------------------------------------------------------------- $(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) $(BCB)\BIN\$(LINKER) @&&! $(LFLAGS) -L$(LIBPATH) + $(ALLOBJ), + $(PROJECT),, + $(ALLLIB), + $(DEFFILE), + $(ALLRES) ! # --------------------------------------------------------------------------- .pas.hpp: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .pas.obj: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .cpp.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .cpp.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .asm.obj: $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ .rc.res: $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< # --------------------------------------------------------------------------- xerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/Xerces-all.mak0000644000175000017500000000770111300476775022161 0ustar borisboris#------------------------------------------------------------------------------ !ifndef ROOT ROOT = $(MAKEDIR)\.. !endif #------------------------------------------------------------------------------ DCC = $(ROOT)\bin\dcc32.exe $** BRCC = $(ROOT)\bin\brcc32.exe $** #------------------------------------------------------------------------------ default: all #------------------------------------------------------------------------------ # Rules for building from command prompt MakeBuildDirs: MakeBuildDirs.bat call $** MAKEN = $(ROOT)\bin\$(MAKE) -$(MAKEFLAGS) -f PROJECTNAMES = XercesLib DOMCount DOMPrint SAXCount SAXPrint SAX2Count SAX2Print \ DOMTest DOMMemTest DOMRangeTest DOMTraversal EncodingTest InitTermTest \ ThreadTest MemHandlerTest XSerializerTest PSVIWriter SCMPrint MemParse Redirect \ StdInParse PParse EnumVal SEnumVal CreateDOMDocument XSValueTest \ DOMTypeInfoTest NetAccessorTest !include ..\..\..\..\version.incl XERCESVER=$(VER) buildall: clearall $(PROJECTNAMES) all: $(PROJECTNAMES) clearall: del /q ..\..\..\..\Build\Win32\BCC5\*.* ..\..\..\..\Build\Win32\BCC5\obj\*.* XercesLib: XercesLib\XercesLib.mak cd $< copy ..\..\..\..\..\src\xercesc\util\Xerces_autoconf_config.borland.hpp ..\..\..\..\..\src\xercesc\util\Xerces_autoconf_config.hpp $(MAKEN) $<.mak -DXERCESVER=$(XERCESVER) -DWITHASM=$(WITHASM) cd .. DOMPrint: DOMPrint\DOMPrint.mak cd $< $(MAKEN) $<.mak -DXERCESVER=$(XERCESVER) cd .. DOMCount: DOMCount\DOMCount.mak cd $< $(MAKEN) $<.mak -DXERCESVER=$(XERCESVER) cd .. SAXCount: SAXCount\SAXCount.mak cd $< $(MAKEN) $<.mak -DXERCESVER=$(XERCESVER) cd .. SAXPrint: SAXPrint\SAXPrint.mak cd $< $(MAKEN) $<.mak -DXERCESVER=$(XERCESVER) cd .. SAX2Count: SAX2Count\SAX2Count.mak cd $< $(MAKEN) $<.mak -DXERCESVER=$(XERCESVER) cd .. SAX2Print: SAX2Print\SAX2Print.mak cd $< $(MAKEN) $<.mak -DXERCESVER=$(XERCESVER) cd .. DOMTest: DOMTest\DOMTest.mak cd $< $(MAKEN) $<.mak -DXERCESVER=$(XERCESVER) cd .. DOMMemTest: DOMMemTest\DOMMemTest.mak cd $< $(MAKEN) $<.mak -DXERCESVER=$(XERCESVER) cd .. DOMRangeTest: DOMRangeTest\DOMRangeTest.mak cd $< $(MAKEN) $<.mak -DXERCESVER=$(XERCESVER) cd .. DOMTraversal: DOMTraversal\DOMTraversal.mak cd $< $(MAKEN) $<.mak -DXERCESVER=$(XERCESVER) cd .. EncodingTest: EncodingTest\EncodingTest.mak cd $< $(MAKEN) $<.mak -DXERCESVER=$(XERCESVER) cd .. InitTermTest: InitTermTest\InitTermTest.mak cd $< $(MAKEN) $<.mak -DXERCESVER=$(XERCESVER) cd .. ThreadTest: ThreadTest\ThreadTest.mak cd $< $(MAKEN) $<.mak -DXERCESVER=$(XERCESVER) cd .. MemHandlerTest: MemHandlerTest\MemHandlerTest.mak cd $< $(MAKEN) $<.mak -DXERCESVER=$(XERCESVER) cd .. XSerializerTest: XSerializerTest\XSerializerTest.mak cd $< $(MAKEN) $<.mak -DXERCESVER=$(XERCESVER) cd .. PSVIWriter: PSVIWriter\PSVIWriter.mak cd $< $(MAKEN) $<.mak -DXERCESVER=$(XERCESVER) cd .. SCMPrint: SCMPrint\SCMPrint.mak cd $< $(MAKEN) $<.mak -DXERCESVER=$(XERCESVER) cd .. MemParse: MemParse\MemParse.mak cd $< $(MAKEN) $<.mak -DXERCESVER=$(XERCESVER) cd .. Redirect: Redirect\Redirect.mak cd $< $(MAKEN) $<.mak -DXERCESVER=$(XERCESVER) cd .. StdInParse: StdInParse\StdInParse.mak cd $< $(MAKEN) $<.mak -DXERCESVER=$(XERCESVER) cd .. PParse: PParse\PParse.mak cd $< $(MAKEN) $<.mak -DXERCESVER=$(XERCESVER) cd .. EnumVal: EnumVal\EnumVal.mak cd $< $(MAKEN) $<.mak -DXERCESVER=$(XERCESVER) cd .. SEnumVal: SEnumVal\SEnumVal.mak cd $< $(MAKEN) $<.mak -DXERCESVER=$(XERCESVER) cd .. CreateDOMDocument: CreateDOMDocument\CreateDOMDocument.mak cd $< $(MAKEN) $<.mak -DXERCESVER=$(XERCESVER) cd .. XSValueTest: XSValueTest\XSValueTest.mak cd $< $(MAKEN) $<.mak -DXERCESVER=$(XERCESVER) cd .. DOMTypeInfoTest: DOMTypeInfoTest\DOMTypeInfoTest.mak cd $< $(MAKEN) $<.mak -DXERCESVER=$(XERCESVER) cd .. NetAccessorTest: NetAccessorTest\NetAccessorTest.mak cd $< $(MAKEN) $<.mak -DXERCESVER=$(XERCESVER) cd .. xerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/MemParse/0000755000175000017500000000000011363617270021170 5ustar borisborisxerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/MemParse/MemParse.mak0000644000175000017500000000757211300476775023412 0ustar borisboris# --------------------------------------------------------------------------- !if !$d(BCB) BCB = $(MAKEDIR)\.. !endif # --------------------------------------------------------------------------- TARGETPATH=..\..\..\..\..\Build\Win32\BCC5 PROJECT = $(TARGETPATH)\MemParse.exe OBJFILES = $(TARGETPATH)\obj\MemParse.obj \ $(TARGETPATH)\obj\MemParseHandlers.obj RESFILES = MAINSOURCE = MemParse.cpp RESDEPEN = $(RESFILES) LIBFILES = $(TARGETPATH)\xerces-bor_$(XERCESVER).lib IDLFILES = IDLGENFILES = LIBRARIES = SPARELIBS = DEFFILE = # --------------------------------------------------------------------------- PATHCPP = ..\..\..\..\..\samples\src\MemParse PATHASM = .; PATHPAS = .; PATHRC = .; USERDEFINES = _DEBUG;XERCES_NO_CONFIGURE_SUPPORT SYSDEFINES = _NO_VCL;_VIS_NOLIB;_RTLDLL INCLUDEPATH = ..\..\..\..\..\samples\src\MemParse;..\..\..\..\..\src LIBPATH = WARNINGS= # --------------------------------------------------------------------------- CFLAG1 = -Od -w -Tkh30000 -X- -r- -a8 -5 -b -k -y -v -vi- -c -tWM -tWC IDLCFLAGS = -src_suffix cpp -boa PFLAGS = -N2$(TARGETPATH)\obj \ -N0$(TARGETPATH)\obj -$YD -$W -$O- -v -JPHN -M RFLAGS = AFLAGS = /mx /w2 /zd LFLAGS = -I$(TARGETPATH)\obj -D"" -ap -Tpe -x -Gn -v # --------------------------------------------------------------------------- ALLOBJ = c0x32.obj $(OBJFILES) ALLRES = $(RESFILES) ALLLIB = $(LIBFILES) import32.lib cw32mti.lib # --------------------------------------------------------------------------- # --------------------------------------------------------------------------- # MAKE SECTION # --------------------------------------------------------------------------- # This section of the project file is not used by the BCB IDE. It is for # the benefit of building from the command-line using the MAKE utility. # --------------------------------------------------------------------------- .autodepend # --------------------------------------------------------------------------- !if "$(USERDEFINES)" != "" AUSERDEFINES = -d$(USERDEFINES:;= -d) !else AUSERDEFINES = !endif !if !$d(BCC32) BCC32 = bcc32 !endif !if !$d(CPP32) CPP32 = cpp32 !endif !if !$d(DCC32) DCC32 = dcc32 !endif !if !$d(TASM32) TASM32 = tasm32 !endif !if !$d(LINKER) LINKER = ilink32 !endif !if !$d(BRCC32) BRCC32 = brcc32 !endif # --------------------------------------------------------------------------- !if $d(PATHCPP) .PATH.CPP = $(PATHCPP) .PATH.C = $(PATHCPP) !endif !if $d(PATHPAS) .PATH.PAS = $(PATHPAS) !endif !if $d(PATHASM) .PATH.ASM = $(PATHASM) !endif !if $d(PATHRC) .PATH.RC = $(PATHRC) !endif # --------------------------------------------------------------------------- $(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) $(BCB)\BIN\$(LINKER) @&&! $(LFLAGS) -L$(LIBPATH) + $(ALLOBJ), + $(PROJECT),, + $(ALLLIB), + $(DEFFILE), + $(ALLRES) ! # --------------------------------------------------------------------------- .pas.hpp: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .pas.obj: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .cpp.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .cpp.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .asm.obj: $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ .rc.res: $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< # --------------------------------------------------------------------------- xerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/DOMMemTest/0000755000175000017500000000000011363617270021375 5ustar borisborisxerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/DOMMemTest/DOMMemTest.mak0000644000175000017500000000754611300476775024025 0ustar borisboris# --------------------------------------------------------------------------- !if !$d(BCB) BCB = $(MAKEDIR)\.. !endif # --------------------------------------------------------------------------- TARGETPATH=..\..\..\..\..\Build\Win32\BCC5 PROJECT = $(TARGETPATH)\DOMMemTest.exe OBJFILES = $(TARGETPATH)\obj\DOMMemTest.obj RESFILES = MAINSOURCE = DOMMemTest.cpp RESDEPEN = $(RESFILES) LIBFILES = $(TARGETPATH)\xerces-bor_$(XERCESVER).lib IDLFILES = IDLGENFILES = LIBRARIES = PACKAGES = SPARELIBS = DEFFILE = # --------------------------------------------------------------------------- PATHCPP = ..\..\..\..\..\tests\src\DOM\DOMMemTest; PATHASM = .; PATHPAS = .; PATHRC = .; USERDEFINES = _DEBUG;XERCES_NO_CONFIGURE_SUPPORT SYSDEFINES = _NO_VCL;NO_STRICT;_VIS_NOLIB;_RTLDLL INCLUDEPATH = ..\..\..\..\..\tests\src\DOM\DOMMemTest;..\..\..\..\..\src LIBPATH = WARNINGS= # --------------------------------------------------------------------------- CFLAG1 = -Od -w -Tkh30000 -X- -r- -a8 -4 -b -k -y -v -vi- -c -tWM -tWC IDLCFLAGS = -src_suffix cpp -boa PFLAGS = -N2$(TARGETPATH)\obj \ -N0$(TARGETPATH)\obj -$YD -$W -$O- -v -JPHN -M RFLAGS = AFLAGS = /mx /w2 /zd LFLAGS = -I$(TARGETPATH)\obj -ap -Tpe -x -Gn -v # --------------------------------------------------------------------------- ALLOBJ = c0x32.obj $(OBJFILES) ALLRES = $(RESFILES) ALLLIB = $(LIBFILES) import32.lib cw32mti.lib # --------------------------------------------------------------------------- # --------------------------------------------------------------------------- # MAKE SECTION # --------------------------------------------------------------------------- # This section of the project file is not used by the BCB IDE. It is for # the benefit of building from the command-line using the MAKE utility. # --------------------------------------------------------------------------- .autodepend # --------------------------------------------------------------------------- !if "$(USERDEFINES)" != "" AUSERDEFINES = -d$(USERDEFINES:;= -d) !else AUSERDEFINES = !endif !if !$d(BCC32) BCC32 = bcc32 !endif !if !$d(CPP32) CPP32 = cpp32 !endif !if !$d(DCC32) DCC32 = dcc32 !endif !if !$d(TASM32) TASM32 = tasm32 !endif !if !$d(LINKER) LINKER = ilink32 !endif !if !$d(BRCC32) BRCC32 = brcc32 !endif # --------------------------------------------------------------------------- !if $d(PATHCPP) .PATH.CPP = $(PATHCPP) .PATH.C = $(PATHCPP) !endif !if $d(PATHPAS) .PATH.PAS = $(PATHPAS) !endif !if $d(PATHASM) .PATH.ASM = $(PATHASM) !endif !if $d(PATHRC) .PATH.RC = $(PATHRC) !endif # --------------------------------------------------------------------------- $(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) $(BCB)\BIN\$(LINKER) @&&! $(LFLAGS) -L$(LIBPATH) + $(ALLOBJ), + $(PROJECT),, + $(ALLLIB), + $(DEFFILE), + $(ALLRES) ! # --------------------------------------------------------------------------- .pas.hpp: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .pas.obj: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .cpp.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .cpp.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .asm.obj: $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ .rc.res: $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< # --------------------------------------------------------------------------- xerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/NetAccessorTest/0000755000175000017500000000000011363617270022530 5ustar borisborisxerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/NetAccessorTest/NetAccessorTest.mak0000644000175000017500000000775511300476775026315 0ustar borisboris# --------------------------------------------------------------------------- !if !$d(BCB) BCB = $(MAKEDIR)\.. !endif # --------------------------------------------------------------------------- TARGETPATH=..\..\..\..\..\Build\Win32\BCC5 PROJECT = $(TARGETPATH)\NetAccessorTest.exe OBJFILES = $(TARGETPATH)\obj\NetAccessorTest.obj RESFILES = MAINSOURCE = NetAccessorTest.cpp RESDEPEN = $(RESFILES) LIBFILES = $(TARGETPATH)\xerces-bor_$(XERCESVER).lib IDLFILES = IDLGENFILES = LIBRARIES = SPARELIBS = DEFFILE = # --------------------------------------------------------------------------- PATHCPP = ..\..\..\..\..\tests\src\NetAccessorTest PATHASM = .; PATHPAS = .; PATHRC = .; USERDEFINES = _DEBUG;XERCES_NO_CONFIGURE_SUPPORT SYSDEFINES = _NO_VCL;_VIS_NOLIB;_RTLDLL INCLUDEPATH = ..\..\..\..\..\tests\src\NetAccessorTest;..\..\..\..\..\src LIBPATH = WARNINGS= # --------------------------------------------------------------------------- CFLAG1 = -Od -w -Tkh30000 -X- -r- -a8 -5 -b -k -y -v -vi- -c -tWM -tWC IDLCFLAGS = -src_suffix cpp -boa PFLAGS = -N2$(TARGETPATH)\obj \ -N0$(TARGETPATH)\obj -$YD -$W -$O- -v -JPHN -M RFLAGS = AFLAGS = /mx /w2 /zd LFLAGS = -I$(TARGETPATH)\obj -ap -Tpe -x -Gn -v # --------------------------------------------------------------------------- ALLOBJ = c0x32.obj $(OBJFILES) ALLRES = $(RESFILES) ALLLIB = $(LIBFILES) import32.lib cw32mti.lib # --------------------------------------------------------------------------- # --------------------------------------------------------------------------- # MAKE SECTION # --------------------------------------------------------------------------- # This section of the project file is not used by the BCB IDE. It is for # the benefit of building from the command-line using the MAKE utility. # --------------------------------------------------------------------------- .autodepend # --------------------------------------------------------------------------- !if "$(USERDEFINES)" != "" AUSERDEFINES = -d$(USERDEFINES:;= -d) !else AUSERDEFINES = !endif !if !$d(BCC32) BCC32 = bcc32 !endif !if !$d(CPP32) CPP32 = cpp32 !endif !if !$d(DCC32) DCC32 = dcc32 !endif !if !$d(TASM32) TASM32 = tasm32 !endif !if !$d(LINKER) LINKER = ilink32 !endif !if !$d(BRCC32) BRCC32 = brcc32 !endif # --------------------------------------------------------------------------- !if $d(PATHCPP) .PATH.CPP = $(PATHCPP) .PATH.C = $(PATHCPP) !endif !if $d(PATHPAS) .PATH.PAS = $(PATHPAS) !endif !if $d(PATHASM) .PATH.ASM = $(PATHASM) !endif !if $d(PATHRC) .PATH.RC = $(PATHRC) !endif # --------------------------------------------------------------------------- $(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) $(BCB)\BIN\$(LINKER) @&&! $(LFLAGS) -L$(LIBPATH) + $(ALLOBJ), + $(PROJECT),, + $(ALLLIB), + $(DEFFILE), + $(ALLRES) ! # --------------------------------------------------------------------------- .pas.hpp: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .pas.obj: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .cpp.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .cpp.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .asm.obj: $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ .rc.res: $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< # --------------------------------------------------------------------------- xerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/readme.txt0000644000175000017500000000152310650211532021443 0ustar borisborisSep 30, 2004 - Xerces C and Borland C++ Compiler v 5.6.2 (CBuilderX 1.0 Update 1) ======================================================== The Update 1 for CBuilderX 1.0 renames the make.exe found in the bin directory to bmake.exe, and adds make.exe (from GNU). To be able to compile Xerces rename bmake.exe back to make.exe Feb 27, 2003 - Xerces C and Borland C++ Compiler v 5.5.1 ======================================================== - changes for Xerces C 2.2.0 How to build dll with Win95 support (tasm32 required, so only for BCB5): make -f Xerces-all.mak -DWITHASM=Y Aug 23, 2002 - Xerces C and Borland C++ Compiler v 5.5.1 ======================================================== Before build: MakeBuildDirs.bat How to build dll (without deprecated DOM API) and tests: make -f Xerces-all.mak Vitaly Prapirny (marl@mebius.net) xerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/XSValueTest/0000755000175000017500000000000011363617267021654 5ustar borisborisxerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/XSValueTest/XSValueTest.mak0000644000175000017500000000754611300476775024547 0ustar borisboris# --------------------------------------------------------------------------- !if !$d(BCB) BCB = $(MAKEDIR)\.. !endif # --------------------------------------------------------------------------- TARGETPATH=..\..\..\..\..\Build\Win32\BCC5 PROJECT = $(TARGETPATH)\XSValueTest.exe OBJFILES = $(TARGETPATH)\obj\XSValueTest.obj RESFILES = MAINSOURCE = XSValueTest.cpp RESDEPEN = $(RESFILES) LIBFILES = $(TARGETPATH)\xerces-bor_$(XERCESVER).lib IDLFILES = IDLGENFILES = LIBRARIES = PACKAGES = SPARELIBS = DEFFILE = # --------------------------------------------------------------------------- PATHCPP = ..\..\..\..\..\tests\src\XSValueTest PATHASM = .; PATHPAS = .; PATHRC = .; USERDEFINES = _DEBUG;XERCES_NO_CONFIGURE_SUPPORT SYSDEFINES = _NO_VCL;NO_STRICT;_VIS_NOLIB;_RTLDLL INCLUDEPATH = ..\..\..\..\..\tests\src\XSValueTest;..\..\..\..\..\src LIBPATH = WARNINGS= # --------------------------------------------------------------------------- CFLAG1 = -Od -w -g0 -Tkh30000 -X- -r- -a8 -4 -b -k -y -v -vi- -c -tWM -tWC IDLCFLAGS = -src_suffix cpp -boa PFLAGS = -N2$(TARGETPATH)\obj \ -N0$(TARGETPATH)\obj -$YD -$W -$O- -v -JPHN -M RFLAGS = AFLAGS = /mx /w2 /zd LFLAGS = -I$(TARGETPATH)\obj -ap -Tpe -x -Gn -v # --------------------------------------------------------------------------- ALLOBJ = c0x32.obj $(OBJFILES) ALLRES = $(RESFILES) ALLLIB = $(LIBFILES) import32.lib cw32mti.lib # --------------------------------------------------------------------------- # --------------------------------------------------------------------------- # MAKE SECTION # --------------------------------------------------------------------------- # This section of the project file is not used by the BCB IDE. It is for # the benefit of building from the command-line using the MAKE utility. # --------------------------------------------------------------------------- .autodepend # --------------------------------------------------------------------------- !if "$(USERDEFINES)" != "" AUSERDEFINES = -d$(USERDEFINES:;= -d) !else AUSERDEFINES = !endif !if !$d(BCC32) BCC32 = bcc32 !endif !if !$d(CPP32) CPP32 = cpp32 !endif !if !$d(DCC32) DCC32 = dcc32 !endif !if !$d(TASM32) TASM32 = tasm32 !endif !if !$d(LINKER) LINKER = ilink32 !endif !if !$d(BRCC32) BRCC32 = brcc32 !endif # --------------------------------------------------------------------------- !if $d(PATHCPP) .PATH.CPP = $(PATHCPP) .PATH.C = $(PATHCPP) !endif !if $d(PATHPAS) .PATH.PAS = $(PATHPAS) !endif !if $d(PATHASM) .PATH.ASM = $(PATHASM) !endif !if $d(PATHRC) .PATH.RC = $(PATHRC) !endif # --------------------------------------------------------------------------- $(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) $(BCB)\BIN\$(LINKER) @&&! $(LFLAGS) -L$(LIBPATH) + $(ALLOBJ), + $(PROJECT),, + $(ALLLIB), + $(DEFFILE), + $(ALLRES) ! # --------------------------------------------------------------------------- .pas.hpp: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .pas.obj: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .cpp.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .cpp.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .asm.obj: $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ .rc.res: $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< # --------------------------------------------------------------------------- xerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/Redirect/0000755000175000017500000000000011363617267021226 5ustar borisborisxerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/Redirect/Redirect.mak0000644000175000017500000000757211300476775023472 0ustar borisboris# --------------------------------------------------------------------------- !if !$d(BCB) BCB = $(MAKEDIR)\.. !endif # --------------------------------------------------------------------------- TARGETPATH=..\..\..\..\..\Build\Win32\BCC5 PROJECT = $(TARGETPATH)\Redirect.exe OBJFILES = $(TARGETPATH)\obj\Redirect.obj \ $(TARGETPATH)\obj\RedirectHandlers.obj RESFILES = MAINSOURCE = Redirect.cpp RESDEPEN = $(RESFILES) LIBFILES = $(TARGETPATH)\xerces-bor_$(XERCESVER).lib IDLFILES = IDLGENFILES = LIBRARIES = SPARELIBS = DEFFILE = # --------------------------------------------------------------------------- PATHCPP = ..\..\..\..\..\samples\src\Redirect PATHASM = .; PATHPAS = .; PATHRC = .; USERDEFINES = _DEBUG;XERCES_NO_CONFIGURE_SUPPORT SYSDEFINES = _NO_VCL;_VIS_NOLIB;_RTLDLL INCLUDEPATH = ..\..\..\..\..\samples\src\Redirect;..\..\..\..\..\src LIBPATH = WARNINGS= # --------------------------------------------------------------------------- CFLAG1 = -Od -w -Tkh30000 -X- -r- -a8 -5 -b -k -y -v -vi- -c -tWM -tWC IDLCFLAGS = -src_suffix cpp -boa PFLAGS = -N2$(TARGETPATH)\obj \ -N0$(TARGETPATH)\obj -$YD -$W -$O- -v -JPHN -M RFLAGS = AFLAGS = /mx /w2 /zd LFLAGS = -I$(TARGETPATH)\obj -D"" -ap -Tpe -x -Gn -v # --------------------------------------------------------------------------- ALLOBJ = c0x32.obj $(OBJFILES) ALLRES = $(RESFILES) ALLLIB = $(LIBFILES) import32.lib cw32mti.lib # --------------------------------------------------------------------------- # --------------------------------------------------------------------------- # MAKE SECTION # --------------------------------------------------------------------------- # This section of the project file is not used by the BCB IDE. It is for # the benefit of building from the command-line using the MAKE utility. # --------------------------------------------------------------------------- .autodepend # --------------------------------------------------------------------------- !if "$(USERDEFINES)" != "" AUSERDEFINES = -d$(USERDEFINES:;= -d) !else AUSERDEFINES = !endif !if !$d(BCC32) BCC32 = bcc32 !endif !if !$d(CPP32) CPP32 = cpp32 !endif !if !$d(DCC32) DCC32 = dcc32 !endif !if !$d(TASM32) TASM32 = tasm32 !endif !if !$d(LINKER) LINKER = ilink32 !endif !if !$d(BRCC32) BRCC32 = brcc32 !endif # --------------------------------------------------------------------------- !if $d(PATHCPP) .PATH.CPP = $(PATHCPP) .PATH.C = $(PATHCPP) !endif !if $d(PATHPAS) .PATH.PAS = $(PATHPAS) !endif !if $d(PATHASM) .PATH.ASM = $(PATHASM) !endif !if $d(PATHRC) .PATH.RC = $(PATHRC) !endif # --------------------------------------------------------------------------- $(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) $(BCB)\BIN\$(LINKER) @&&! $(LFLAGS) -L$(LIBPATH) + $(ALLOBJ), + $(PROJECT),, + $(ALLLIB), + $(DEFFILE), + $(ALLRES) ! # --------------------------------------------------------------------------- .pas.hpp: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .pas.obj: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .cpp.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .cpp.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .asm.obj: $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ .rc.res: $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< # --------------------------------------------------------------------------- xerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/PSVIWriter/0000755000175000017500000000000011363617270021435 5ustar borisborisxerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/PSVIWriter/PSVIWriter.mak0000644000175000017500000000771511300476775024123 0ustar borisboris# --------------------------------------------------------------------------- !if !$d(BCB) BCB = $(MAKEDIR)\.. !endif # --------------------------------------------------------------------------- TARGETPATH=..\..\..\..\..\Build\Win32\BCC5 PROJECT = $(TARGETPATH)\PSVIWriter.exe OBJFILES = $(TARGETPATH)\obj\PSVIWriter.obj \ $(TARGETPATH)\obj\PSVIWriterHandlers.obj RESFILES = MAINSOURCE = PSVIWriter.cpp RESDEPEN = $(RESFILES) LIBFILES = $(TARGETPATH)\xerces-bor_$(XERCESVER).lib IDLFILES = IDLGENFILES = LIBRARIES = PACKAGES = SPARELIBS = DEFFILE = # --------------------------------------------------------------------------- PATHCPP = ..\..\..\..\..\samples\src\PSVIWriter PATHASM = .; PATHPAS = .; PATHRC = .; USERDEFINES = _DEBUG;XERCES_NO_CONFIGURE_SUPPORT SYSDEFINES = _NO_VCL;NO_STRICT;_VIS_NOLIB;_RTLDLL;WIN32_LEAN_AND_MEAN INCLUDEPATH = ..\..\..\..\..\samples\src\PSVIWriter;..\..\..\..\..\src LIBPATH = ..\..\..\..\..\samples\src\PSVIWriter WARNINGS= # --------------------------------------------------------------------------- CFLAG1 = -Od -w -g0 -Tkh30000 -X- -r- -a8 -4 -b -k -y -v -vi- -c -tWM -tWC IDLCFLAGS = -src_suffix cpp -boa PFLAGS = -N2$(TARGETPATH)\obj \ -N0$(TARGETPATH)\obj -$YD -$W -$O- -v -JPHN -M RFLAGS = AFLAGS = /mx /w2 /zd LFLAGS = -I$(TARGETPATH)\obj -ap -Tpe -x -Gn -v # --------------------------------------------------------------------------- ALLOBJ = c0x32.obj $(OBJFILES) ALLRES = $(RESFILES) ALLLIB = $(LIBFILES) import32.lib cw32mti.lib # --------------------------------------------------------------------------- # --------------------------------------------------------------------------- # MAKE SECTION # --------------------------------------------------------------------------- # This section of the project file is not used by the BCB IDE. It is for # the benefit of building from the command-line using the MAKE utility. # --------------------------------------------------------------------------- .autodepend # --------------------------------------------------------------------------- !if "$(USERDEFINES)" != "" AUSERDEFINES = -d$(USERDEFINES:;= -d) !else AUSERDEFINES = !endif !if !$d(BCC32) BCC32 = bcc32 !endif !if !$d(CPP32) CPP32 = cpp32 !endif !if !$d(DCC32) DCC32 = dcc32 !endif !if !$d(TASM32) TASM32 = tasm32 !endif !if !$d(LINKER) LINKER = ilink32 !endif !if !$d(BRCC32) BRCC32 = brcc32 !endif # --------------------------------------------------------------------------- !if $d(PATHCPP) .PATH.CPP = $(PATHCPP) .PATH.C = $(PATHCPP) !endif !if $d(PATHPAS) .PATH.PAS = $(PATHPAS) !endif !if $d(PATHASM) .PATH.ASM = $(PATHASM) !endif !if $d(PATHRC) .PATH.RC = $(PATHRC) !endif # --------------------------------------------------------------------------- $(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) $(BCB)\BIN\$(LINKER) @&&! $(LFLAGS) -L$(LIBPATH) + $(ALLOBJ), + $(PROJECT),, + $(ALLLIB), + $(DEFFILE), + $(ALLRES) ! # --------------------------------------------------------------------------- .pas.hpp: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .pas.obj: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .cpp.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .cpp.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .asm.obj: $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ .rc.res: $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< # --------------------------------------------------------------------------- xerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/PParse/0000755000175000017500000000000011363617267020657 5ustar borisborisxerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/PParse/PParse.mak0000644000175000017500000000760311300476775022547 0ustar borisboris# --------------------------------------------------------------------------- !if !$d(BCB) BCB = $(MAKEDIR)\.. !endif # --------------------------------------------------------------------------- TARGETPATH=..\..\..\..\..\Build\Win32\BCC5 PROJECT = $(TARGETPATH)\PParse.exe OBJFILES = $(TARGETPATH)\obj\PParse.obj \ $(TARGETPATH)\obj\PParseHandlers.obj RESFILES = MAINSOURCE = PParse.cpp RESDEPEN = $(RESFILES) LIBFILES = $(TARGETPATH)\xerces-bor_$(XERCESVER).lib IDLFILES = IDLGENFILES = LIBRARIES = PACKAGES = SPARELIBS = DEFFILE = # --------------------------------------------------------------------------- PATHCPP = ..\..\..\..\..\samples\src\PParse PATHASM = .; PATHPAS = .; PATHRC = .; USERDEFINES = _DEBUG;XERCES_NO_CONFIGURE_SUPPORT SYSDEFINES = _NO_VCL;NO_STRICT;_VIS_NOLIB;_RTLDLL INCLUDEPATH = ..\..\..\..\..\samples\src\PParse;..\..\..\..\..\src LIBPATH = WARNINGS= # --------------------------------------------------------------------------- CFLAG1 = -Od -w -g0 -Tkh30000 -X- -r- -a8 -4 -b -k -y -v -vi- -c -tWM -tWC IDLCFLAGS = -src_suffix cpp -boa PFLAGS = -N2$(TARGETPATH)\obj \ -N0$(TARGETPATH)\obj -$YD -$W -$O- -v -JPHN -M RFLAGS = AFLAGS = /mx /w2 /zd LFLAGS = -I$(TARGETPATH)\obj -ap -Tpe -x -Gn -v # --------------------------------------------------------------------------- ALLOBJ = c0x32.obj $(OBJFILES) ALLRES = $(RESFILES) ALLLIB = $(LIBFILES) import32.lib cw32mti.lib # --------------------------------------------------------------------------- # --------------------------------------------------------------------------- # MAKE SECTION # --------------------------------------------------------------------------- # This section of the project file is not used by the BCB IDE. It is for # the benefit of building from the command-line using the MAKE utility. # --------------------------------------------------------------------------- .autodepend # --------------------------------------------------------------------------- !if "$(USERDEFINES)" != "" AUSERDEFINES = -d$(USERDEFINES:;= -d) !else AUSERDEFINES = !endif !if !$d(BCC32) BCC32 = bcc32 !endif !if !$d(CPP32) CPP32 = cpp32 !endif !if !$d(DCC32) DCC32 = dcc32 !endif !if !$d(TASM32) TASM32 = tasm32 !endif !if !$d(LINKER) LINKER = ilink32 !endif !if !$d(BRCC32) BRCC32 = brcc32 !endif # --------------------------------------------------------------------------- !if $d(PATHCPP) .PATH.CPP = $(PATHCPP) .PATH.C = $(PATHCPP) !endif !if $d(PATHPAS) .PATH.PAS = $(PATHPAS) !endif !if $d(PATHASM) .PATH.ASM = $(PATHASM) !endif !if $d(PATHRC) .PATH.RC = $(PATHRC) !endif # --------------------------------------------------------------------------- $(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) $(BCB)\BIN\$(LINKER) @&&! $(LFLAGS) -L$(LIBPATH) + $(ALLOBJ), + $(PROJECT),, + $(ALLLIB), + $(DEFFILE), + $(ALLRES) ! # --------------------------------------------------------------------------- .pas.hpp: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .pas.obj: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .cpp.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .cpp.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .asm.obj: $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ .rc.res: $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< # --------------------------------------------------------------------------- xerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/MemHandlerTest/0000755000175000017500000000000011363617270022333 5ustar borisborisxerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/MemHandlerTest/MemHandlerTest.cpp0000755000175000017500000000073507705572250025726 0ustar borisboris #pragma hdrstop //--------------------------------------------------------------------------- //--------------------------------------------------------------------------- #ifdef NEVER_COMPILE #include // Dummy entry point to satisfy the BCB IDE int main(int argc, char* argv[]) { printf("*** Compile XercesC Library with Deprecated DOM API for this test\n"); return 0; } #endif // The real entry point is in the Samples folder //#include xerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/MemHandlerTest/MemHandlerTest.mak0000755000175000017500000000763711300476775025725 0ustar borisboris# --------------------------------------------------------------------------- !if !$d(BCB) BCB = $(MAKEDIR)\.. !endif # --------------------------------------------------------------------------- TARGETPATH=..\..\..\..\..\Build\Win32\BCC5 PROJECT = $(TARGETPATH)\MemHandlerTest.exe OBJFILES = $(TARGETPATH)\obj\MemoryMonitor.obj $(TARGETPATH)\obj\MemHandlerTest.obj RESFILES = MAINSOURCE = MemHandlerTest.cpp RESDEPEN = $(RESFILES) LIBFILES = $(TARGETPATH)\xerces-bor_$(XERCESVER).lib IDLFILES = IDLGENFILES = LIBRARIES = SPARELIBS = DEFFILE = # --------------------------------------------------------------------------- PATHCPP = .;..\..\..\..\..\tests\src\MemHandlerTest PATHASM = .; PATHPAS = .; PATHRC = .; USERDEFINES = _DEBUG;XERCES_NO_CONFIGURE_SUPPORT;WIN32_LEAN_AND_MEAN; SYSDEFINES = _NO_VCL;NO_STRICT;_VIS_NOLIB;_RTLDLL INCLUDEPATH = ..\..\..\..\..\tests\src\MemHandlerTest;..\..\..\..\..\src LIBPATH = WARNINGS= # --------------------------------------------------------------------------- CFLAG1 = -Od -w -Tkh30000 -X- -r- -a8 -4 -b -k -y -v -vi- -c -tWM -tWC IDLCFLAGS = -src_suffix cpp -boa PFLAGS = -N2$(TARGETPATH)\obj \ -N0$(TARGETPATH)\obj -$YD -$W -$O- -v -JPHN -M RFLAGS = AFLAGS = /mx /w2 /zd LFLAGS = -I$(TARGETPATH)\obj -ap -Tpe -x -Gn -v # --------------------------------------------------------------------------- ALLOBJ = c0x32.obj $(OBJFILES) ALLRES = $(RESFILES) ALLLIB = $(LIBFILES) import32.lib cw32mti.lib # --------------------------------------------------------------------------- # --------------------------------------------------------------------------- # MAKE SECTION # --------------------------------------------------------------------------- # This section of the project file is not used by the BCB IDE. It is for # the benefit of building from the command-line using the MAKE utility. # --------------------------------------------------------------------------- .autodepend # --------------------------------------------------------------------------- !if "$(USERDEFINES)" != "" AUSERDEFINES = -d$(USERDEFINES:;= -d) !else AUSERDEFINES = !endif !if !$d(BCC32) BCC32 = bcc32 !endif !if !$d(CPP32) CPP32 = cpp32 !endif !if !$d(DCC32) DCC32 = dcc32 !endif !if !$d(TASM32) TASM32 = tasm32 !endif !if !$d(LINKER) LINKER = ilink32 !endif !if !$d(BRCC32) BRCC32 = brcc32 !endif # --------------------------------------------------------------------------- !if $d(PATHCPP) .PATH.CPP = $(PATHCPP) .PATH.C = $(PATHCPP) !endif !if $d(PATHPAS) .PATH.PAS = $(PATHPAS) !endif !if $d(PATHASM) .PATH.ASM = $(PATHASM) !endif !if $d(PATHRC) .PATH.RC = $(PATHRC) !endif # --------------------------------------------------------------------------- $(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) $(BCB)\BIN\$(LINKER) @&&! $(LFLAGS) -L$(LIBPATH) + $(ALLOBJ), + $(PROJECT),, + $(ALLLIB), + $(DEFFILE), + $(ALLRES) ! # --------------------------------------------------------------------------- .pas.hpp: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .pas.obj: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .cpp.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .cpp.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .asm.obj: $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ .rc.res: $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< # --------------------------------------------------------------------------- xerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/InitTermTest/0000755000175000017500000000000011363617267022060 5ustar borisborisxerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/InitTermTest/InitTermTest.mak0000644000175000017500000000755011300476775025152 0ustar borisboris# --------------------------------------------------------------------------- !if !$d(BCB) BCB = $(MAKEDIR)\.. !endif # --------------------------------------------------------------------------- TARGETPATH=..\..\..\..\..\Build\Win32\BCC5 PROJECT = $(TARGETPATH)\InitTermTest.exe OBJFILES = $(TARGETPATH)\obj\InitTermTest.obj RESFILES = MAINSOURCE = InitTermTest.cpp RESDEPEN = $(RESFILES) LIBFILES = $(TARGETPATH)\xerces-bor_$(XERCESVER).lib IDLFILES = IDLGENFILES = LIBRARIES = PACKAGES = SPARELIBS = DEFFILE = # --------------------------------------------------------------------------- PATHCPP = ..\..\..\..\..\tests\src\InitTermTest; PATHASM = .; PATHPAS = .; PATHRC = .; USERDEFINES = _DEBUG;XERCES_NO_CONFIGURE_SUPPORT SYSDEFINES = _NO_VCL;NO_STRICT;_VIS_NOLIB;_RTLDLL INCLUDEPATH = ..\..\..\..\..\tests\src\InitTermTest;..\..\..\..\..\src LIBPATH = WARNINGS= # --------------------------------------------------------------------------- CFLAG1 = -Od -w -Tkh30000 -X- -r- -a8 -4 -b -k -y -v -vi- -c -tWM -tWC IDLCFLAGS = -src_suffix cpp -boa PFLAGS = -N2$(TARGETPATH)\obj \ -N0$(TARGETPATH)\obj -$YD -$W -$O- -v -JPHN -M RFLAGS = AFLAGS = /mx /w2 /zd LFLAGS = -I$(TARGETPATH)\obj -ap -Tpe -x -Gn -v # --------------------------------------------------------------------------- ALLOBJ = c0x32.obj $(OBJFILES) ALLRES = $(RESFILES) ALLLIB = $(LIBFILES) import32.lib cw32mti.lib # --------------------------------------------------------------------------- # --------------------------------------------------------------------------- # MAKE SECTION # --------------------------------------------------------------------------- # This section of the project file is not used by the BCB IDE. It is for # the benefit of building from the command-line using the MAKE utility. # --------------------------------------------------------------------------- .autodepend # --------------------------------------------------------------------------- !if "$(USERDEFINES)" != "" AUSERDEFINES = -d$(USERDEFINES:;= -d) !else AUSERDEFINES = !endif !if !$d(BCC32) BCC32 = bcc32 !endif !if !$d(CPP32) CPP32 = cpp32 !endif !if !$d(DCC32) DCC32 = dcc32 !endif !if !$d(TASM32) TASM32 = tasm32 !endif !if !$d(LINKER) LINKER = ilink32 !endif !if !$d(BRCC32) BRCC32 = brcc32 !endif # --------------------------------------------------------------------------- !if $d(PATHCPP) .PATH.CPP = $(PATHCPP) .PATH.C = $(PATHCPP) !endif !if $d(PATHPAS) .PATH.PAS = $(PATHPAS) !endif !if $d(PATHASM) .PATH.ASM = $(PATHASM) !endif !if $d(PATHRC) .PATH.RC = $(PATHRC) !endif # --------------------------------------------------------------------------- $(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) $(BCB)\BIN\$(LINKER) @&&! $(LFLAGS) -L$(LIBPATH) + $(ALLOBJ), + $(PROJECT),, + $(ALLLIB), + $(DEFFILE), + $(ALLRES) ! # --------------------------------------------------------------------------- .pas.hpp: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .pas.obj: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .cpp.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .cpp.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .asm.obj: $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ .rc.res: $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< # --------------------------------------------------------------------------- xerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/MakeBuildDirs.bat0000755000175000017500000000044511300476775022640 0ustar borisborisREM CommandInterpreter: %COMSPEC% REM -- Create the Xerces-C target directories for the Borland C++Builder 5 or Borland C++ 5.5.1 projects mkdir %0\..\..\..\..\..\Build mkdir %0\..\..\..\..\..\Build\Win32 mkdir %0\..\..\..\..\..\Build\Win32\BCC5 mkdir %0\..\..\..\..\..\Build\Win32\BCC5\obj xerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/CreateDOMDocument/0000755000175000017500000000000011363617267022727 5ustar borisborisxerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/CreateDOMDocument/CreateDOMDocument.mak0000644000175000017500000000763511300476775026674 0ustar borisboris# --------------------------------------------------------------------------- !if !$d(BCB) BCB = $(MAKEDIR)\.. !endif # --------------------------------------------------------------------------- TARGETPATH=..\..\..\..\..\Build\Win32\BCC5 PROJECT = $(TARGETPATH)\CreateDOMDocument.exe OBJFILES = $(TARGETPATH)\obj\CreateDOMDocument.obj RESFILES = MAINSOURCE = CreateDOMDocument.cpp RESDEPEN = $(RESFILES) LIBFILES = $(TARGETPATH)\xerces-bor_$(XERCESVER).lib IDLFILES = IDLGENFILES = LIBRARIES = PACKAGES = SPARELIBS = DEFFILE = # --------------------------------------------------------------------------- PATHCPP = ..\..\..\..\..\samples\src\CreateDOMDocument; PATHASM = .; PATHPAS = .; PATHRC = .; USERDEFINES = _DEBUG;WIN32_LEAN_AND_MEAN;XERCES_NO_CONFIGURE_SUPPORT SYSDEFINES = _NO_VCL;NO_STRICT;_VIS_NOLIB;_RTLDLL INCLUDEPATH = ..\..\..\..\..\samples\src\CreateDOMDocument;..\..\..\..\..\src LIBPATH = WARNINGS= # --------------------------------------------------------------------------- CFLAG1 = -Od -w -g0 -Tkh30000 -X- -r- -a8 -4 -b -k -y -v -vi- -c -tWM -tWC IDLCFLAGS = -src_suffix cpp -boa PFLAGS = -N2$(TARGETPATH)\obj \ -N0$(TARGETPATH)\obj -$YD -$W -$O- -v -JPHN -M RFLAGS = AFLAGS = /mx /w2 /zd LFLAGS = -I$(TARGETPATH)\obj -ap -Tpe -x -Gn -v # --------------------------------------------------------------------------- ALLOBJ = c0x32.obj $(OBJFILES) ALLRES = $(RESFILES) ALLLIB = $(LIBFILES) import32.lib cw32mti.lib # --------------------------------------------------------------------------- # --------------------------------------------------------------------------- # MAKE SECTION # --------------------------------------------------------------------------- # This section of the project file is not used by the BCB IDE. It is for # the benefit of building from the command-line using the MAKE utility. # --------------------------------------------------------------------------- .autodepend # --------------------------------------------------------------------------- !if "$(USERDEFINES)" != "" AUSERDEFINES = -d$(USERDEFINES:;= -d) !else AUSERDEFINES = !endif !if !$d(BCC32) BCC32 = bcc32 !endif !if !$d(CPP32) CPP32 = cpp32 !endif !if !$d(DCC32) DCC32 = dcc32 !endif !if !$d(TASM32) TASM32 = tasm32 !endif !if !$d(LINKER) LINKER = ilink32 !endif !if !$d(BRCC32) BRCC32 = brcc32 !endif # --------------------------------------------------------------------------- !if $d(PATHCPP) .PATH.CPP = $(PATHCPP) .PATH.C = $(PATHCPP) !endif !if $d(PATHPAS) .PATH.PAS = $(PATHPAS) !endif !if $d(PATHASM) .PATH.ASM = $(PATHASM) !endif !if $d(PATHRC) .PATH.RC = $(PATHRC) !endif # --------------------------------------------------------------------------- $(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) $(BCB)\BIN\$(LINKER) @&&! $(LFLAGS) -L$(LIBPATH) + $(ALLOBJ), + $(PROJECT),, + $(ALLLIB), + $(DEFFILE), + $(ALLRES) ! # --------------------------------------------------------------------------- .pas.hpp: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .pas.obj: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .cpp.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .cpp.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .asm.obj: $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ .rc.res: $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< # --------------------------------------------------------------------------- xerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/ThreadTest/0000755000175000017500000000000011363617267021534 5ustar borisborisxerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/ThreadTest/ThreadTest.mak0000644000175000017500000000752111300476775024300 0ustar borisboris# --------------------------------------------------------------------------- !if !$d(BCB) BCB = $(MAKEDIR)\.. !endif # --------------------------------------------------------------------------- TARGETPATH=..\..\..\..\..\Build\Win32\BCC5 PROJECT = $(TARGETPATH)\ThreadTest.exe OBJFILES = $(TARGETPATH)\obj\ThreadTest.obj RESFILES = MAINSOURCE = ThreadTest.cpp RESDEPEN = $(RESFILES) LIBFILES = $(TARGETPATH)\xerces-bor_$(XERCESVER).lib IDLFILES = IDLGENFILES = LIBRARIES = SPARELIBS = DEFFILE = # --------------------------------------------------------------------------- PATHCPP = ..\..\..\..\..\tests\src\ThreadTest PATHASM = .; PATHPAS = .; PATHRC = .; USERDEFINES = _DEBUG;;XERCES_NO_CONFIGURE_SUPPORT SYSDEFINES = _NO_VCL;NO_STRICT;_VIS_NOLIB;_RTLDLL INCLUDEPATH = ..\..\..\..\..\tests\src\ThreadTest;..\..\..\..\..\src LIBPATH = WARNINGS= # --------------------------------------------------------------------------- CFLAG1 = -Od -w -Tkh30000 -X- -r- -a8 -4 -b -k -y -v -vi- -c -tWM -tWC IDLCFLAGS = -src_suffix cpp -boa PFLAGS = -N2$(TARGETPATH)\obj \ -N0$(TARGETPATH)\obj -$YD -$W -$O- -v -JPHN -M RFLAGS = AFLAGS = /mx /w2 /zd LFLAGS = -I$(TARGETPATH)\obj -ap -Tpe -x -Gn -v # --------------------------------------------------------------------------- ALLOBJ = c0x32.obj $(OBJFILES) ALLRES = $(RESFILES) ALLLIB = $(LIBFILES) import32.lib cw32mti.lib # --------------------------------------------------------------------------- # --------------------------------------------------------------------------- # MAKE SECTION # --------------------------------------------------------------------------- # This section of the project file is not used by the BCB IDE. It is for # the benefit of building from the command-line using the MAKE utility. # --------------------------------------------------------------------------- .autodepend # --------------------------------------------------------------------------- !if "$(USERDEFINES)" != "" AUSERDEFINES = -d$(USERDEFINES:;= -d) !else AUSERDEFINES = !endif !if !$d(BCC32) BCC32 = bcc32 !endif !if !$d(CPP32) CPP32 = cpp32 !endif !if !$d(DCC32) DCC32 = dcc32 !endif !if !$d(TASM32) TASM32 = tasm32 !endif !if !$d(LINKER) LINKER = ilink32 !endif !if !$d(BRCC32) BRCC32 = brcc32 !endif # --------------------------------------------------------------------------- !if $d(PATHCPP) .PATH.CPP = $(PATHCPP) .PATH.C = $(PATHCPP) !endif !if $d(PATHPAS) .PATH.PAS = $(PATHPAS) !endif !if $d(PATHASM) .PATH.ASM = $(PATHASM) !endif !if $d(PATHRC) .PATH.RC = $(PATHRC) !endif # --------------------------------------------------------------------------- $(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) $(BCB)\BIN\$(LINKER) @&&! $(LFLAGS) -L$(LIBPATH) + $(ALLOBJ), + $(PROJECT),, + $(ALLLIB), + $(DEFFILE), + $(ALLRES) ! # --------------------------------------------------------------------------- .pas.hpp: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .pas.obj: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .cpp.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .cpp.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .asm.obj: $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ .rc.res: $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< # --------------------------------------------------------------------------- xerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/XSerializerTest/0000755000175000017500000000000011363617267022566 5ustar borisborisxerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/XSerializerTest/XSerializerTest.mak0000644000175000017500000000772211300476775026367 0ustar borisboris# --------------------------------------------------------------------------- !if !$d(BCB) BCB = $(MAKEDIR)\.. !endif # --------------------------------------------------------------------------- TARGETPATH=..\..\..\..\..\Build\Win32\BCC5 PROJECT = $(TARGETPATH)\XSerializerTest.exe OBJFILES = $(TARGETPATH)\obj\XSerializerTest.obj \ $(TARGETPATH)\obj\XSerializerHandlers.obj RESFILES = MAINSOURCE = XSerializerTest.cpp RESDEPEN = $(RESFILES) LIBFILES = $(TARGETPATH)\xerces-bor_$(XERCESVER).lib IDLFILES = IDLGENFILES = LIBRARIES = PACKAGES = SPARELIBS = DEFFILE = # --------------------------------------------------------------------------- PATHCPP = ..\..\..\..\..\tests\src\XSerializerTest PATHASM = .; PATHPAS = .; PATHRC = .; USERDEFINES = _DEBUG;XERCES_NO_CONFIGURE_SUPPORT SYSDEFINES = _NO_VCL;NO_STRICT;_VIS_NOLIB;_RTLDLL INCLUDEPATH = ..\..\..\..\..\tests\src\XSerializerTest;..\..\..\..\..\src LIBPATH = ..\..\..\..\..\tests\src\XSerializerTest WARNINGS= # --------------------------------------------------------------------------- CFLAG1 = -Od -w -g0 -Tkh30000 -X- -r- -a8 -4 -b -k -y -v -vi- -c -tWM -tWC IDLCFLAGS = -src_suffix cpp -boa PFLAGS = -N2$(TARGETPATH)\obj \ -N0$(TARGETPATH)\obj -$YD -$W -$O- -v -JPHN -M RFLAGS = AFLAGS = /mx /w2 /zd LFLAGS = -I$(TARGETPATH)\obj -ap -Tpe -x -Gn -v # --------------------------------------------------------------------------- ALLOBJ = c0x32.obj $(OBJFILES) ALLRES = $(RESFILES) ALLLIB = $(LIBFILES) import32.lib cw32mti.lib # --------------------------------------------------------------------------- # --------------------------------------------------------------------------- # MAKE SECTION # --------------------------------------------------------------------------- # This section of the project file is not used by the BCB IDE. It is for # the benefit of building from the command-line using the MAKE utility. # --------------------------------------------------------------------------- .autodepend # --------------------------------------------------------------------------- !if "$(USERDEFINES)" != "" AUSERDEFINES = -d$(USERDEFINES:;= -d) !else AUSERDEFINES = !endif !if !$d(BCC32) BCC32 = bcc32 !endif !if !$d(CPP32) CPP32 = cpp32 !endif !if !$d(DCC32) DCC32 = dcc32 !endif !if !$d(TASM32) TASM32 = tasm32 !endif !if !$d(LINKER) LINKER = ilink32 !endif !if !$d(BRCC32) BRCC32 = brcc32 !endif # --------------------------------------------------------------------------- !if $d(PATHCPP) .PATH.CPP = $(PATHCPP) .PATH.C = $(PATHCPP) !endif !if $d(PATHPAS) .PATH.PAS = $(PATHPAS) !endif !if $d(PATHASM) .PATH.ASM = $(PATHASM) !endif !if $d(PATHRC) .PATH.RC = $(PATHRC) !endif # --------------------------------------------------------------------------- $(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) $(BCB)\BIN\$(LINKER) @&&! $(LFLAGS) -L$(LIBPATH) + $(ALLOBJ), + $(PROJECT),, + $(ALLLIB), + $(DEFFILE), + $(ALLRES) ! # --------------------------------------------------------------------------- .pas.hpp: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .pas.obj: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .cpp.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .cpp.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .asm.obj: $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ .rc.res: $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< # --------------------------------------------------------------------------- xerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/SEnumVal/0000755000175000017500000000000011363617267021157 5ustar borisborisxerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/SEnumVal/SEnumVal.mak0000644000175000017500000000753311300476775023351 0ustar borisboris# --------------------------------------------------------------------------- !if !$d(BCB) BCB = $(MAKEDIR)\.. !endif # --------------------------------------------------------------------------- TARGETPATH=..\..\..\..\..\Build\Win32\BCC5 PROJECT = $(TARGETPATH)\SEnumVal.exe OBJFILES = $(TARGETPATH)\obj\SEnumVal.obj RESFILES = MAINSOURCE = SEnumVal.cpp RESDEPEN = $(RESFILES) LIBFILES = $(TARGETPATH)\xerces-bor_$(XERCESVER).lib IDLFILES = IDLGENFILES = LIBRARIES = PACKAGES = SPARELIBS = DEFFILE = # --------------------------------------------------------------------------- PATHCPP = ..\..\..\..\..\samples\src\SEnumVal PATHASM = .; PATHPAS = .; PATHRC = .; USERDEFINES = _DEBUG;XERCES_NO_CONFIGURE_SUPPORT SYSDEFINES = _NO_VCL;NO_STRICT;_VIS_NOLIB;_RTLDLL INCLUDEPATH = ..\..\..\..\..\samples\src\SEnumVal;..\..\..\..\..\src LIBPATH = WARNINGS= # --------------------------------------------------------------------------- CFLAG1 = -Od -w -g0 -Tkh30000 -X- -r- -a8 -4 -b -k -y -v -vi- -c -tWM -tWC IDLCFLAGS = -src_suffix cpp -boa PFLAGS = -N2$(TARGETPATH)\obj \ -N0$(TARGETPATH)\obj -$YD -$W -$O- -v -JPHN -M RFLAGS = AFLAGS = /mx /w2 /zd LFLAGS = -I$(TARGETPATH)\obj -ap -Tpe -x -Gn -v # --------------------------------------------------------------------------- ALLOBJ = c0x32.obj $(OBJFILES) ALLRES = $(RESFILES) ALLLIB = $(LIBFILES) import32.lib cw32mti.lib # --------------------------------------------------------------------------- # --------------------------------------------------------------------------- # MAKE SECTION # --------------------------------------------------------------------------- # This section of the project file is not used by the BCB IDE. It is for # the benefit of building from the command-line using the MAKE utility. # --------------------------------------------------------------------------- .autodepend # --------------------------------------------------------------------------- !if "$(USERDEFINES)" != "" AUSERDEFINES = -d$(USERDEFINES:;= -d) !else AUSERDEFINES = !endif !if !$d(BCC32) BCC32 = bcc32 !endif !if !$d(CPP32) CPP32 = cpp32 !endif !if !$d(DCC32) DCC32 = dcc32 !endif !if !$d(TASM32) TASM32 = tasm32 !endif !if !$d(LINKER) LINKER = ilink32 !endif !if !$d(BRCC32) BRCC32 = brcc32 !endif # --------------------------------------------------------------------------- !if $d(PATHCPP) .PATH.CPP = $(PATHCPP) .PATH.C = $(PATHCPP) !endif !if $d(PATHPAS) .PATH.PAS = $(PATHPAS) !endif !if $d(PATHASM) .PATH.ASM = $(PATHASM) !endif !if $d(PATHRC) .PATH.RC = $(PATHRC) !endif # --------------------------------------------------------------------------- $(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) $(BCB)\BIN\$(LINKER) @&&! $(LFLAGS) -L$(LIBPATH) + $(ALLOBJ), + $(PROJECT),, + $(ALLLIB), + $(DEFFILE), + $(ALLRES) ! # --------------------------------------------------------------------------- .pas.hpp: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .pas.obj: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .cpp.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .cpp.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .asm.obj: $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ .rc.res: $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< # --------------------------------------------------------------------------- xerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/StdInParse/0000755000175000017500000000000011363617270021473 5ustar borisborisxerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/StdInParse/StdInParse.mak0000644000175000017500000000763311300476775024216 0ustar borisboris# --------------------------------------------------------------------------- !if !$d(BCB) BCB = $(MAKEDIR)\.. !endif # --------------------------------------------------------------------------- TARGETPATH=..\..\..\..\..\Build\Win32\BCC5 PROJECT = $(TARGETPATH)\StdInParse.exe OBJFILES = $(TARGETPATH)\obj\StdInParse.obj \ $(TARGETPATH)\obj\StdInParseHandlers.obj RESFILES = MAINSOURCE = StdInParse.cpp RESDEPEN = $(RESFILES) LIBFILES = $(TARGETPATH)\xerces-bor_$(XERCESVER).lib IDLFILES = IDLGENFILES = LIBRARIES = PACKAGES = SPARELIBS = DEFFILE = # --------------------------------------------------------------------------- PATHCPP = ..\..\..\..\..\samples\src\StdInParse PATHASM = .; PATHPAS = .; PATHRC = .; USERDEFINES = _DEBUG;XERCES_NO_CONFIGURE_SUPPORT SYSDEFINES = _NO_VCL;NO_STRICT;_VIS_NOLIB;_RTLDLL INCLUDEPATH = ..\..\..\..\..\samples\src\StdInParse;..\..\..\..\..\src LIBPATH = WARNINGS= # --------------------------------------------------------------------------- CFLAG1 = -Od -w -g0 -Tkh30000 -X- -r- -a8 -4 -b -k -y -v -vi- -c -tWM -tWC IDLCFLAGS = -src_suffix cpp -boa PFLAGS = -N2$(TARGETPATH)\obj \ -N0$(TARGETPATH)\obj -$YD -$W -$O- -v -JPHN -M RFLAGS = AFLAGS = /mx /w2 /zd LFLAGS = -I$(TARGETPATH)\obj -ap -Tpe -x -Gn -v # --------------------------------------------------------------------------- ALLOBJ = c0x32.obj $(OBJFILES) ALLRES = $(RESFILES) ALLLIB = $(LIBFILES) import32.lib cw32mti.lib # --------------------------------------------------------------------------- # --------------------------------------------------------------------------- # MAKE SECTION # --------------------------------------------------------------------------- # This section of the project file is not used by the BCB IDE. It is for # the benefit of building from the command-line using the MAKE utility. # --------------------------------------------------------------------------- .autodepend # --------------------------------------------------------------------------- !if "$(USERDEFINES)" != "" AUSERDEFINES = -d$(USERDEFINES:;= -d) !else AUSERDEFINES = !endif !if !$d(BCC32) BCC32 = bcc32 !endif !if !$d(CPP32) CPP32 = cpp32 !endif !if !$d(DCC32) DCC32 = dcc32 !endif !if !$d(TASM32) TASM32 = tasm32 !endif !if !$d(LINKER) LINKER = ilink32 !endif !if !$d(BRCC32) BRCC32 = brcc32 !endif # --------------------------------------------------------------------------- !if $d(PATHCPP) .PATH.CPP = $(PATHCPP) .PATH.C = $(PATHCPP) !endif !if $d(PATHPAS) .PATH.PAS = $(PATHPAS) !endif !if $d(PATHASM) .PATH.ASM = $(PATHASM) !endif !if $d(PATHRC) .PATH.RC = $(PATHRC) !endif # --------------------------------------------------------------------------- $(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) $(BCB)\BIN\$(LINKER) @&&! $(LFLAGS) -L$(LIBPATH) + $(ALLOBJ), + $(PROJECT),, + $(ALLLIB), + $(DEFFILE), + $(ALLRES) ! # --------------------------------------------------------------------------- .pas.hpp: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .pas.obj: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .cpp.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .cpp.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .asm.obj: $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ .rc.res: $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< # --------------------------------------------------------------------------- xerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/DOMTraversal/0000755000175000017500000000000011363617267021770 5ustar borisborisxerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/DOMTraversal/DOMTraversal.mak0000644000175000017500000000755011300476775024772 0ustar borisboris# --------------------------------------------------------------------------- !if !$d(BCB) BCB = $(MAKEDIR)\.. !endif # --------------------------------------------------------------------------- TARGETPATH=..\..\..\..\..\Build\Win32\BCC5 PROJECT = $(TARGETPATH)\DOMTraversalTest.exe OBJFILES = $(TARGETPATH)\obj\Traversal.obj RESFILES = MAINSOURCE = Traversal.cpp RESDEPEN = $(RESFILES) LIBFILES = $(TARGETPATH)\xerces-bor_$(XERCESVER).lib IDLFILES = IDLGENFILES = LIBRARIES = PACKAGES = SPARELIBS = DEFFILE = # --------------------------------------------------------------------------- PATHCPP = ..\..\..\..\..\tests\src\DOM\Traversal; PATHASM = .; PATHPAS = .; PATHRC = .; USERDEFINES = _DEBUG;XERCES_NO_CONFIGURE_SUPPORT SYSDEFINES = _NO_VCL;NO_STRICT;_VIS_NOLIB;_RTLDLL INCLUDEPATH = ..\..\..\..\..\tests\src\DOM\Traversal;..\..\..\..\..\src LIBPATH = WARNINGS= # --------------------------------------------------------------------------- CFLAG1 = -Od -w -Tkh30000 -X- -r- -a8 -4 -b -k -y -v -vi- -c -tWM -tWC IDLCFLAGS = -src_suffix cpp -boa PFLAGS = -N2$(TARGETPATH)\obj \ -N0$(TARGETPATH)\obj -$YD -$W -$O- -v -JPHN -M RFLAGS = AFLAGS = /mx /w2 /zd LFLAGS = -I$(TARGETPATH)\obj -ap -Tpe -x -Gn -v # --------------------------------------------------------------------------- ALLOBJ = c0x32.obj $(OBJFILES) ALLRES = $(RESFILES) ALLLIB = $(LIBFILES) import32.lib cw32mti.lib # --------------------------------------------------------------------------- # --------------------------------------------------------------------------- # MAKE SECTION # --------------------------------------------------------------------------- # This section of the project file is not used by the BCB IDE. It is for # the benefit of building from the command-line using the MAKE utility. # --------------------------------------------------------------------------- .autodepend # --------------------------------------------------------------------------- !if "$(USERDEFINES)" != "" AUSERDEFINES = -d$(USERDEFINES:;= -d) !else AUSERDEFINES = !endif !if !$d(BCC32) BCC32 = bcc32 !endif !if !$d(CPP32) CPP32 = cpp32 !endif !if !$d(DCC32) DCC32 = dcc32 !endif !if !$d(TASM32) TASM32 = tasm32 !endif !if !$d(LINKER) LINKER = ilink32 !endif !if !$d(BRCC32) BRCC32 = brcc32 !endif # --------------------------------------------------------------------------- !if $d(PATHCPP) .PATH.CPP = $(PATHCPP) .PATH.C = $(PATHCPP) !endif !if $d(PATHPAS) .PATH.PAS = $(PATHPAS) !endif !if $d(PATHASM) .PATH.ASM = $(PATHASM) !endif !if $d(PATHRC) .PATH.RC = $(PATHRC) !endif # --------------------------------------------------------------------------- $(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) $(BCB)\BIN\$(LINKER) @&&! $(LFLAGS) -L$(LIBPATH) + $(ALLOBJ), + $(PROJECT),, + $(ALLLIB), + $(DEFFILE), + $(ALLRES) ! # --------------------------------------------------------------------------- .pas.hpp: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .pas.obj: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .cpp.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .cpp.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .asm.obj: $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ .rc.res: $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< # --------------------------------------------------------------------------- xerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/DOMRangeTest/0000755000175000017500000000000011363617267021721 5ustar borisborisxerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/DOMRangeTest/DOMRangeTest.mak0000644000175000017500000000754111300476775024654 0ustar borisboris# --------------------------------------------------------------------------- !if !$d(BCB) BCB = $(MAKEDIR)\.. !endif # --------------------------------------------------------------------------- TARGETPATH=..\..\..\..\..\Build\Win32\BCC5 PROJECT = $(TARGETPATH)\RangeTest.exe OBJFILES = $(TARGETPATH)\obj\RangeTest.obj RESFILES = MAINSOURCE = RangeTest.cpp RESDEPEN = $(RESFILES) LIBFILES = $(TARGETPATH)\xerces-bor_$(XERCESVER).lib IDLFILES = IDLGENFILES = LIBRARIES = PACKAGES = SPARELIBS = DEFFILE = # --------------------------------------------------------------------------- PATHCPP = ..\..\..\..\..\tests\src\DOM\RangeTest; PATHASM = .; PATHPAS = .; PATHRC = .; USERDEFINES = _DEBUG;XERCES_NO_CONFIGURE_SUPPORT SYSDEFINES = _NO_VCL;NO_STRICT;_VIS_NOLIB;_RTLDLL INCLUDEPATH = ..\..\..\..\..\tests\src\DOM\RangeTest;..\..\..\..\..\src LIBPATH = WARNINGS= # --------------------------------------------------------------------------- CFLAG1 = -Od -w -Tkh30000 -X- -r- -a8 -4 -b -k -y -v -vi- -c -tWM -tWC IDLCFLAGS = -src_suffix cpp -boa PFLAGS = -N2$(TARGETPATH)\obj \ -N0$(TARGETPATH)\obj -$YD -$W -$O- -v -JPHN -M RFLAGS = AFLAGS = /mx /w2 /zd LFLAGS = -I$(TARGETPATH)\obj -ap -Tpe -x -Gn -v # --------------------------------------------------------------------------- ALLOBJ = c0x32.obj $(OBJFILES) ALLRES = $(RESFILES) ALLLIB = $(LIBFILES) import32.lib cw32mti.lib # --------------------------------------------------------------------------- # --------------------------------------------------------------------------- # MAKE SECTION # --------------------------------------------------------------------------- # This section of the project file is not used by the BCB IDE. It is for # the benefit of building from the command-line using the MAKE utility. # --------------------------------------------------------------------------- .autodepend # --------------------------------------------------------------------------- !if "$(USERDEFINES)" != "" AUSERDEFINES = -d$(USERDEFINES:;= -d) !else AUSERDEFINES = !endif !if !$d(BCC32) BCC32 = bcc32 !endif !if !$d(CPP32) CPP32 = cpp32 !endif !if !$d(DCC32) DCC32 = dcc32 !endif !if !$d(TASM32) TASM32 = tasm32 !endif !if !$d(LINKER) LINKER = ilink32 !endif !if !$d(BRCC32) BRCC32 = brcc32 !endif # --------------------------------------------------------------------------- !if $d(PATHCPP) .PATH.CPP = $(PATHCPP) .PATH.C = $(PATHCPP) !endif !if $d(PATHPAS) .PATH.PAS = $(PATHPAS) !endif !if $d(PATHASM) .PATH.ASM = $(PATHASM) !endif !if $d(PATHRC) .PATH.RC = $(PATHRC) !endif # --------------------------------------------------------------------------- $(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) $(BCB)\BIN\$(LINKER) @&&! $(LFLAGS) -L$(LIBPATH) + $(ALLOBJ), + $(PROJECT),, + $(ALLLIB), + $(DEFFILE), + $(ALLRES) ! # --------------------------------------------------------------------------- .pas.hpp: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .pas.obj: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .cpp.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .cpp.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .asm.obj: $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ .rc.res: $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< # --------------------------------------------------------------------------- xerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/SAX2Count/0000755000175000017500000000000011363617267021213 5ustar borisborisxerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/SAX2Count/SAX2Count.mak0000644000175000017500000000763511300476775023444 0ustar borisboris# --------------------------------------------------------------------------- !if !$d(BCB) BCB = $(MAKEDIR)\.. !endif # --------------------------------------------------------------------------- TARGETPATH=..\..\..\..\..\Build\Win32\BCC5 PROJECT = $(TARGETPATH)\SAX2Count.exe OBJFILES = $(TARGETPATH)\obj\SAX2Count.obj \ $(TARGETPATH)\obj\SAX2CountHandlers.obj RESFILES = MAINSOURCE = SAX2Count.cpp RESDEPEN = $(RESFILES) LIBFILES = $(TARGETPATH)\xerces-bor_$(XERCESVER).lib IDLFILES = IDLGENFILES = LIBRARIES = SPARELIBS = DEFFILE = # --------------------------------------------------------------------------- PATHCPP = ..\..\..\..\..\samples\src\SAX2Count PATHASM = .; PATHPAS = .; PATHRC = .; USERDEFINES = _DEBUG;XERCES_NO_CONFIGURE_SUPPORT SYSDEFINES = _NO_VCL;_VIS_NOLIB;_RTLDLL INCLUDEPATH = ..\..\..\..\..\samples\src\SAX2Count;..\..\..\..\..\src LIBPATH = ..\..\..\..\..\samples\src\SAX2Count WARNINGS= # --------------------------------------------------------------------------- CFLAG1 = -Od -w -Tkh30000 -X- -r- -a8 -5 -b -k -y -v -vi- -c -tWM -tWC IDLCFLAGS = -src_suffix cpp -boa PFLAGS = -N2$(TARGETPATH)\obj \ -N0$(TARGETPATH)\obj -$YD -$W -$O- -v -JPHN -M RFLAGS = AFLAGS = /mx /w2 /zi LFLAGS = -I$(TARGETPATH)\obj -D"" -ap -Tpe -x -Gn -v # --------------------------------------------------------------------------- ALLOBJ = c0x32.obj $(OBJFILES) ALLRES = $(RESFILES) ALLLIB = $(LIBFILES) import32.lib cw32mti.lib # --------------------------------------------------------------------------- # --------------------------------------------------------------------------- # MAKE SECTION # --------------------------------------------------------------------------- # This section of the project file is not used by the BCB IDE. It is for # the benefit of building from the command-line using the MAKE utility. # --------------------------------------------------------------------------- .autodepend # --------------------------------------------------------------------------- !if "$(USERDEFINES)" != "" AUSERDEFINES = -d$(USERDEFINES:;= -d) !else AUSERDEFINES = !endif !if !$d(BCC32) BCC32 = bcc32 !endif !if !$d(CPP32) CPP32 = cpp32 !endif !if !$d(DCC32) DCC32 = dcc32 !endif !if !$d(TASM32) TASM32 = tasm32 !endif !if !$d(LINKER) LINKER = ilink32 !endif !if !$d(BRCC32) BRCC32 = brcc32 !endif # --------------------------------------------------------------------------- !if $d(PATHCPP) .PATH.CPP = $(PATHCPP) .PATH.C = $(PATHCPP) !endif !if $d(PATHPAS) .PATH.PAS = $(PATHPAS) !endif !if $d(PATHASM) .PATH.ASM = $(PATHASM) !endif !if $d(PATHRC) .PATH.RC = $(PATHRC) !endif # --------------------------------------------------------------------------- $(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) $(BCB)\BIN\$(LINKER) @&&! $(LFLAGS) -L$(LIBPATH) + $(ALLOBJ), + $(PROJECT),, + $(ALLLIB), + $(DEFFILE), + $(ALLRES) ! # --------------------------------------------------------------------------- .pas.hpp: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .pas.obj: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .cpp.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .cpp.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .asm.obj: $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ .rc.res: $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< # --------------------------------------------------------------------------- xerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/EncodingTest/0000755000175000017500000000000011363617267022053 5ustar borisborisxerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/EncodingTest/EncodingTest.mak0000644000175000017500000000752711300476775025144 0ustar borisboris# --------------------------------------------------------------------------- !if !$d(BCB) BCB = $(MAKEDIR)\.. !endif # --------------------------------------------------------------------------- TARGETPATH=..\..\..\..\..\Build\Win32\BCC5 PROJECT = $(TARGETPATH)\EncodingTest.exe OBJFILES = $(TARGETPATH)\obj\EncodingTest.obj RESFILES = MAINSOURCE = EncodingTest.cpp RESDEPEN = $(RESFILES) LIBFILES = $(TARGETPATH)\xerces-bor_$(XERCESVER).lib IDLFILES = IDLGENFILES = LIBRARIES = SPARELIBS = DEFFILE = # --------------------------------------------------------------------------- PATHCPP = ..\..\..\..\..\tests\src\EncodingTest; PATHASM = .; PATHPAS = .; PATHRC = .; USERDEFINES = _DEBUG;XERCES_NO_CONFIGURE_SUPPORT SYSDEFINES = _NO_VCL;_VIS_NOLIB;_RTLDLL INCLUDEPATH = ..\..\..\..\..\tests\src\EncodingTest;..\..\..\..\..\src LIBPATH = WARNINGS= # --------------------------------------------------------------------------- CFLAG1 = -Od -w -Tkh30000 -X- -r- -a8 -5 -b -k -y -v -vi- -c -tWM -tWC IDLCFLAGS = -src_suffix cpp -boa PFLAGS = -N2$(TARGETPATH)\obj \ -N0$(TARGETPATH)\obj -$YD -$W -$O- -v -JPHN -M RFLAGS = AFLAGS = /mx /w2 /zd LFLAGS = -I$(TARGETPATH)\obj -D"" -ap -Tpe -x -Gn -v # --------------------------------------------------------------------------- ALLOBJ = c0x32.obj $(OBJFILES) ALLRES = $(RESFILES) ALLLIB = $(LIBFILES) import32.lib cw32mti.lib # --------------------------------------------------------------------------- # --------------------------------------------------------------------------- # MAKE SECTION # --------------------------------------------------------------------------- # This section of the project file is not used by the BCB IDE. It is for # the benefit of building from the command-line using the MAKE utility. # --------------------------------------------------------------------------- .autodepend # --------------------------------------------------------------------------- !if "$(USERDEFINES)" != "" AUSERDEFINES = -d$(USERDEFINES:;= -d) !else AUSERDEFINES = !endif !if !$d(BCC32) BCC32 = bcc32 !endif !if !$d(CPP32) CPP32 = cpp32 !endif !if !$d(DCC32) DCC32 = dcc32 !endif !if !$d(TASM32) TASM32 = tasm32 !endif !if !$d(LINKER) LINKER = ilink32 !endif !if !$d(BRCC32) BRCC32 = brcc32 !endif # --------------------------------------------------------------------------- !if $d(PATHCPP) .PATH.CPP = $(PATHCPP) .PATH.C = $(PATHCPP) !endif !if $d(PATHPAS) .PATH.PAS = $(PATHPAS) !endif !if $d(PATHASM) .PATH.ASM = $(PATHASM) !endif !if $d(PATHRC) .PATH.RC = $(PATHRC) !endif # --------------------------------------------------------------------------- $(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) $(BCB)\BIN\$(LINKER) @&&! $(LFLAGS) -L$(LIBPATH) + $(ALLOBJ), + $(PROJECT),, + $(ALLLIB), + $(DEFFILE), + $(ALLRES) ! # --------------------------------------------------------------------------- .pas.hpp: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .pas.obj: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .cpp.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .cpp.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .asm.obj: $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ .rc.res: $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< # --------------------------------------------------------------------------- xerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/DOMTest/0000755000175000017500000000000011363617267020744 5ustar borisborisxerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/DOMTest/DOMTest.mak0000644000175000017500000000752711300476775022726 0ustar borisboris# --------------------------------------------------------------------------- !if !$d(BCB) BCB = $(MAKEDIR)\.. !endif # --------------------------------------------------------------------------- TARGETPATH=..\..\..\..\..\Build\Win32\BCC5 PROJECT = $(TARGETPATH)\DOMTest.exe OBJFILES = $(TARGETPATH)\obj\DTest.obj RESFILES = MAINSOURCE = DTest.cpp RESDEPEN = $(RESFILES) LIBFILES = $(TARGETPATH)\xerces-bor_$(XERCESVER).lib IDLFILES = IDLGENFILES = LIBRARIES = PACKAGES = SPARELIBS = DEFFILE = # --------------------------------------------------------------------------- PATHCPP = ..\..\..\..\..\tests\src\DOM\DOMTest; PATHASM = .; PATHPAS = .; PATHRC = .; USERDEFINES = _DEBUG;XERCES_NO_CONFIGURE_SUPPORT SYSDEFINES = _NO_VCL;NO_STRICT;_VIS_NOLIB;_RTLDLL INCLUDEPATH = ..\..\..\..\..\tests\src\DOM\DOMTest;..\..\..\..\..\src LIBPATH = WARNINGS= # --------------------------------------------------------------------------- CFLAG1 = -Od -w -g0 -Tkh30000 -X- -r- -a8 -4 -b -k -y -v -vi- -c -tWM -tWC IDLCFLAGS = -src_suffix cpp -boa PFLAGS = -N2$(TARGETPATH)\obj \ -N0$(TARGETPATH)\obj -$YD -$W -$O- -v -JPHN -M RFLAGS = AFLAGS = /mx /w2 /zd LFLAGS = -I$(TARGETPATH)\obj -ap -Tpe -x -Gn -v # --------------------------------------------------------------------------- ALLOBJ = c0x32.obj $(OBJFILES) ALLRES = $(RESFILES) ALLLIB = $(LIBFILES) import32.lib cw32mti.lib # --------------------------------------------------------------------------- # --------------------------------------------------------------------------- # MAKE SECTION # --------------------------------------------------------------------------- # This section of the project file is not used by the BCB IDE. It is for # the benefit of building from the command-line using the MAKE utility. # --------------------------------------------------------------------------- .autodepend # --------------------------------------------------------------------------- !if "$(USERDEFINES)" != "" AUSERDEFINES = -d$(USERDEFINES:;= -d) !else AUSERDEFINES = !endif !if !$d(BCC32) BCC32 = bcc32 !endif !if !$d(CPP32) CPP32 = cpp32 !endif !if !$d(DCC32) DCC32 = dcc32 !endif !if !$d(TASM32) TASM32 = tasm32 !endif !if !$d(LINKER) LINKER = ilink32 !endif !if !$d(BRCC32) BRCC32 = brcc32 !endif # --------------------------------------------------------------------------- !if $d(PATHCPP) .PATH.CPP = $(PATHCPP) .PATH.C = $(PATHCPP) !endif !if $d(PATHPAS) .PATH.PAS = $(PATHPAS) !endif !if $d(PATHASM) .PATH.ASM = $(PATHASM) !endif !if $d(PATHRC) .PATH.RC = $(PATHRC) !endif # --------------------------------------------------------------------------- $(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) $(BCB)\BIN\$(LINKER) @&&! $(LFLAGS) -L$(LIBPATH) + $(ALLOBJ), + $(PROJECT),, + $(ALLLIB), + $(DEFFILE), + $(ALLRES) ! # --------------------------------------------------------------------------- .pas.hpp: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .pas.obj: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .cpp.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .cpp.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .asm.obj: $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ .rc.res: $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< # --------------------------------------------------------------------------- xerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/XercesLib/0000755000175000017500000000000011363617267021345 5ustar borisborisxerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/XercesLib/XercesLib.mak0000644000175000017500000004675011300476775023731 0ustar borisboris# --------------------------------------------------------------------------- !if !$d(BCB) BCB = $(MAKEDIR)\.. !endif # --------------------------------------------------------------------------- TARGETPATH=..\..\..\..\..\Build\Win32\BCC5 PROJECT = $(TARGETPATH)\xerces-bor_$(XERCESVER).dll OBJFILES = $(TARGETPATH)\obj\XercesLib.obj \ $(TARGETPATH)\obj\InMemMsgLoader.obj \ $(TARGETPATH)\obj\Win32TransService.obj \ $(TARGETPATH)\obj\BinHTTPURLInputStream.obj \ $(TARGETPATH)\obj\WinSockNetAccessor.obj \ $(TARGETPATH)\obj\BinHTTPInputStreamCommon.obj \ $(TARGETPATH)\obj\ASCIIRangeFactory.obj \ $(TARGETPATH)\obj\BlockRangeFactory.obj \ $(TARGETPATH)\obj\BMPattern.obj \ $(TARGETPATH)\obj\CharToken.obj \ $(TARGETPATH)\obj\ClosureToken.obj \ $(TARGETPATH)\obj\ConcatToken.obj \ $(TARGETPATH)\obj\Match.obj \ $(TARGETPATH)\obj\Op.obj \ $(TARGETPATH)\obj\OpFactory.obj \ $(TARGETPATH)\obj\ParenToken.obj \ $(TARGETPATH)\obj\ParserForXMLSchema.obj \ $(TARGETPATH)\obj\RangeFactory.obj \ $(TARGETPATH)\obj\RangeToken.obj \ $(TARGETPATH)\obj\RangeTokenMap.obj \ $(TARGETPATH)\obj\RegularExpression.obj \ $(TARGETPATH)\obj\RegxParser.obj \ $(TARGETPATH)\obj\RegxUtil.obj \ $(TARGETPATH)\obj\StringToken.obj \ $(TARGETPATH)\obj\Token.obj \ $(TARGETPATH)\obj\TokenFactory.obj \ $(TARGETPATH)\obj\UnicodeRangeFactory.obj \ $(TARGETPATH)\obj\UnionToken.obj \ $(TARGETPATH)\obj\XMLRangeFactory.obj \ $(TARGETPATH)\obj\XMLUniCharacter.obj \ $(TARGETPATH)\obj\Base64.obj \ $(TARGETPATH)\obj\BinFileInputStream.obj \ $(TARGETPATH)\obj\BinInputStream.obj \ $(TARGETPATH)\obj\BinMemInputStream.obj \ $(TARGETPATH)\obj\BitSet.obj \ $(TARGETPATH)\obj\HeaderDummy.obj \ $(TARGETPATH)\obj\HexBin.obj \ $(TARGETPATH)\obj\KVStringPair.obj \ $(TARGETPATH)\obj\Mutexes.obj \ $(TARGETPATH)\obj\PlatformUtils.obj \ $(TARGETPATH)\obj\PSVIUni.obj \ $(TARGETPATH)\obj\QName.obj \ $(TARGETPATH)\obj\StringPool.obj \ $(TARGETPATH)\obj\TransService.obj \ $(TARGETPATH)\obj\XML256TableTranscoder.obj \ $(TARGETPATH)\obj\XML88591Transcoder.obj \ $(TARGETPATH)\obj\XMLAbstractDoubleFloat.obj \ $(TARGETPATH)\obj\XMLASCIITranscoder.obj \ $(TARGETPATH)\obj\XMLBigDecimal.obj \ $(TARGETPATH)\obj\XMLBigInteger.obj \ $(TARGETPATH)\obj\XMLChTranscoder.obj \ $(TARGETPATH)\obj\XMLDateTime.obj \ $(TARGETPATH)\obj\XMLDouble.obj \ $(TARGETPATH)\obj\XMLEBCDICTranscoder.obj \ $(TARGETPATH)\obj\XMLException.obj \ $(TARGETPATH)\obj\XMLFloat.obj \ $(TARGETPATH)\obj\XMLIBM1140Transcoder.obj \ $(TARGETPATH)\obj\XMLNumber.obj \ $(TARGETPATH)\obj\XMLString.obj \ $(TARGETPATH)\obj\XMLStringTokenizer.obj \ $(TARGETPATH)\obj\XMLUCS4Transcoder.obj \ $(TARGETPATH)\obj\XMLUni.obj \ $(TARGETPATH)\obj\XMLUri.obj \ $(TARGETPATH)\obj\XMLURL.obj \ $(TARGETPATH)\obj\XMLUTF16Transcoder.obj \ $(TARGETPATH)\obj\XMLUTF8Transcoder.obj \ $(TARGETPATH)\obj\XMLWin1252Transcoder.obj \ $(TARGETPATH)\obj\LocalFileInputSource.obj \ $(TARGETPATH)\obj\MemBufInputSource.obj \ $(TARGETPATH)\obj\StdInInputSource.obj \ $(TARGETPATH)\obj\URLInputSource.obj \ $(TARGETPATH)\obj\XMLAttDef.obj \ $(TARGETPATH)\obj\XMLAttr.obj \ $(TARGETPATH)\obj\XMLBuffer.obj \ $(TARGETPATH)\obj\XMLBufferMgr.obj \ $(TARGETPATH)\obj\XMLContentModel.obj \ $(TARGETPATH)\obj\XMLElementDecl.obj \ $(TARGETPATH)\obj\XMLEntityDecl.obj \ $(TARGETPATH)\obj\XMLFormatter.obj \ $(TARGETPATH)\obj\XMLNotationDecl.obj \ $(TARGETPATH)\obj\XMLRecognizer.obj \ $(TARGETPATH)\obj\XMLValidator.obj \ $(TARGETPATH)\obj\ElemStack.obj \ $(TARGETPATH)\obj\ReaderMgr.obj \ $(TARGETPATH)\obj\VecAttributesImpl.obj \ $(TARGETPATH)\obj\VecAttrListImpl.obj \ $(TARGETPATH)\obj\XMLReader.obj \ $(TARGETPATH)\obj\XMLScanner.obj \ $(TARGETPATH)\obj\SAX2XMLReaderImpl.obj \ $(TARGETPATH)\obj\SAX2XMLFilterImpl.obj \ $(TARGETPATH)\obj\SAXParser.obj \ $(TARGETPATH)\obj\DOMAttrImpl.obj \ $(TARGETPATH)\obj\DOMAttrMapImpl.obj \ $(TARGETPATH)\obj\DOMAttrNSImpl.obj \ $(TARGETPATH)\obj\DOMCDATASectionImpl.obj \ $(TARGETPATH)\obj\DOMCharacterDataImpl.obj \ $(TARGETPATH)\obj\DOMChildNode.obj \ $(TARGETPATH)\obj\DOMCommentImpl.obj \ $(TARGETPATH)\obj\DOMDeepNodeListImpl.obj \ $(TARGETPATH)\obj\DOMDocumentFragmentImpl.obj \ $(TARGETPATH)\obj\DOMDocumentImpl.obj \ $(TARGETPATH)\obj\DOMDocumentTypeImpl.obj \ $(TARGETPATH)\obj\DOMStringPool.obj \ $(TARGETPATH)\obj\DOMElementImpl.obj \ $(TARGETPATH)\obj\DOMElementNSImpl.obj \ $(TARGETPATH)\obj\DOMEntityImpl.obj \ $(TARGETPATH)\obj\DOMEntityReferenceImpl.obj \ $(TARGETPATH)\obj\DOMNamedNodeMapImpl.obj \ $(TARGETPATH)\obj\DOMNodeIDMap.obj \ $(TARGETPATH)\obj\DOMNodeImpl.obj \ $(TARGETPATH)\obj\DOMNodeIteratorImpl.obj \ $(TARGETPATH)\obj\DOMNodeListImpl.obj \ $(TARGETPATH)\obj\DOMNodeVector.obj \ $(TARGETPATH)\obj\DOMNotationImpl.obj \ $(TARGETPATH)\obj\DOMParentNode.obj \ $(TARGETPATH)\obj\DOMProcessingInstructionImpl.obj \ $(TARGETPATH)\obj\DOMRangeImpl.obj \ $(TARGETPATH)\obj\DOMTextImpl.obj \ $(TARGETPATH)\obj\DOMTreeWalkerImpl.obj \ $(TARGETPATH)\obj\Dummy.obj \ $(TARGETPATH)\obj\InputSource.obj \ $(TARGETPATH)\obj\SAXException.obj \ $(TARGETPATH)\obj\SAXParseException.obj \ $(TARGETPATH)\obj\sax2Dummy.obj \ $(TARGETPATH)\obj\AllContentModel.obj \ $(TARGETPATH)\obj\CMAny.obj \ $(TARGETPATH)\obj\CMBinaryOp.obj \ $(TARGETPATH)\obj\CMUnaryOp.obj \ $(TARGETPATH)\obj\ContentLeafNameTypeVector.obj \ $(TARGETPATH)\obj\ContentSpecNode.obj \ $(TARGETPATH)\obj\DFAContentModel.obj \ $(TARGETPATH)\obj\GrammarResolver.obj \ $(TARGETPATH)\obj\MixedContentModel.obj \ $(TARGETPATH)\obj\SimpleContentModel.obj \ $(TARGETPATH)\obj\AbstractNumericFacetValidator.obj \ $(TARGETPATH)\obj\AbstractNumericValidator.obj \ $(TARGETPATH)\obj\AbstractStringValidator.obj \ $(TARGETPATH)\obj\AnySimpleTypeDatatypeValidator.obj \ $(TARGETPATH)\obj\AnyURIDatatypeValidator.obj \ $(TARGETPATH)\obj\Base64BinaryDatatypeValidator.obj \ $(TARGETPATH)\obj\BooleanDatatypeValidator.obj \ $(TARGETPATH)\obj\DateDatatypeValidator.obj \ $(TARGETPATH)\obj\DateTimeValidator.obj \ $(TARGETPATH)\obj\DateTimeDatatypeValidator.obj \ $(TARGETPATH)\obj\DatatypeValidator.obj \ $(TARGETPATH)\obj\DatatypeValidatorFactory.obj \ $(TARGETPATH)\obj\DayDatatypeValidator.obj \ $(TARGETPATH)\obj\DecimalDatatypeValidator.obj \ $(TARGETPATH)\obj\DoubleDatatypeValidator.obj \ $(TARGETPATH)\obj\DurationDatatypeValidator.obj \ $(TARGETPATH)\obj\ENTITYDatatypeValidator.obj \ $(TARGETPATH)\obj\FloatDatatypeValidator.obj \ $(TARGETPATH)\obj\HexBinaryDatatypeValidator.obj \ $(TARGETPATH)\obj\IDDatatypeValidator.obj \ $(TARGETPATH)\obj\IDREFDatatypeValidator.obj \ $(TARGETPATH)\obj\ListDatatypeValidator.obj \ $(TARGETPATH)\obj\MonthDatatypeValidator.obj \ $(TARGETPATH)\obj\MonthDayDatatypeValidator.obj \ $(TARGETPATH)\obj\NameDatatypeValidator.obj \ $(TARGETPATH)\obj\NCNameDatatypeValidator.obj \ $(TARGETPATH)\obj\NOTATIONDatatypeValidator.obj \ $(TARGETPATH)\obj\QNameDatatypeValidator.obj \ $(TARGETPATH)\obj\StringDatatypeValidator.obj \ $(TARGETPATH)\obj\TimeDatatypeValidator.obj \ $(TARGETPATH)\obj\UnionDatatypeValidator.obj \ $(TARGETPATH)\obj\YearDatatypeValidator.obj \ $(TARGETPATH)\obj\YearMonthDatatypeValidator.obj \ $(TARGETPATH)\obj\DTDAttDef.obj \ $(TARGETPATH)\obj\DTDAttDefList.obj \ $(TARGETPATH)\obj\DTDElementDecl.obj \ $(TARGETPATH)\obj\DTDGrammar.obj \ $(TARGETPATH)\obj\DTDScanner.obj \ $(TARGETPATH)\obj\DTDValidator.obj \ $(TARGETPATH)\obj\ComplexTypeInfo.obj \ $(TARGETPATH)\obj\GeneralAttributeCheck.obj \ $(TARGETPATH)\obj\NamespaceScope.obj \ $(TARGETPATH)\obj\SchemaAttDef.obj \ $(TARGETPATH)\obj\SchemaAttDefList.obj \ $(TARGETPATH)\obj\SchemaElementDecl.obj \ $(TARGETPATH)\obj\SchemaGrammar.obj \ $(TARGETPATH)\obj\SchemaInfo.obj \ $(TARGETPATH)\obj\SchemaSymbols.obj \ $(TARGETPATH)\obj\SchemaValidator.obj \ $(TARGETPATH)\obj\SubstitutionGroupComparator.obj \ $(TARGETPATH)\obj\TraverseSchema.obj \ $(TARGETPATH)\obj\XercesAttGroupInfo.obj \ $(TARGETPATH)\obj\XercesElementWildcard.obj \ $(TARGETPATH)\obj\XercesGroupInfo.obj \ $(TARGETPATH)\obj\XUtil.obj \ $(TARGETPATH)\obj\FieldActivator.obj \ $(TARGETPATH)\obj\FieldValueMap.obj \ $(TARGETPATH)\obj\IC_Field.obj \ $(TARGETPATH)\obj\IC_Key.obj \ $(TARGETPATH)\obj\IC_KeyRef.obj \ $(TARGETPATH)\obj\IC_Selector.obj \ $(TARGETPATH)\obj\IC_Unique.obj \ $(TARGETPATH)\obj\IdentityConstraint.obj \ $(TARGETPATH)\obj\ValueStore.obj \ $(TARGETPATH)\obj\ValueStoreCache.obj \ $(TARGETPATH)\obj\XercesXPath.obj \ $(TARGETPATH)\obj\XPathMatcher.obj \ $(TARGETPATH)\obj\XPathMatcherStack.obj \ $(TARGETPATH)\obj\XPathSymbols.obj \ $(TARGETPATH)\obj\AbstractDOMParser.obj \ $(TARGETPATH)\obj\XercesDOMParser.obj \ $(TARGETPATH)\obj\DOMException.obj \ $(TARGETPATH)\obj\DefaultPanicHandler.obj \ $(TARGETPATH)\obj\PanicHandler.obj \ $(TARGETPATH)\obj\EncodingValidator.obj \ $(TARGETPATH)\obj\XSDErrorReporter.obj \ $(TARGETPATH)\obj\XSDDOMParser.obj \ $(TARGETPATH)\obj\XSDElementNSImpl.obj \ $(TARGETPATH)\obj\XSDLocator.obj \ $(TARGETPATH)\obj\DOMRangeException.obj \ $(TARGETPATH)\obj\DOMImplementationImpl.obj \ $(TARGETPATH)\obj\DOMImplementationListImpl.obj \ $(TARGETPATH)\obj\DOMImplementationRegistry.obj \ $(TARGETPATH)\obj\DOMStringListImpl.obj \ $(TARGETPATH)\obj\DOMLSParserImpl.obj \ $(TARGETPATH)\obj\DOMLSSerializerImpl.obj \ $(TARGETPATH)\obj\DOMLSInputImpl.obj \ $(TARGETPATH)\obj\DOMLSOutputImpl.obj \ $(TARGETPATH)\obj\DOMLSException.obj \ $(TARGETPATH)\obj\Wrapper4InputSource.obj \ $(TARGETPATH)\obj\Wrapper4DOMLSInput.obj \ $(TARGETPATH)\obj\DOMLocatorImpl.obj \ $(TARGETPATH)\obj\DOMErrorImpl.obj \ $(TARGETPATH)\obj\MemBufFormatTarget.obj \ $(TARGETPATH)\obj\StdOutFormatTarget.obj \ $(TARGETPATH)\obj\LocalFileFormatTarget.obj \ $(TARGETPATH)\obj\XMLChar.obj \ $(TARGETPATH)\obj\XMLMsgLoader.obj \ $(TARGETPATH)\obj\DGXMLScanner.obj \ $(TARGETPATH)\obj\IGXMLScanner.obj \ $(TARGETPATH)\obj\IGXMLScanner2.obj \ $(TARGETPATH)\obj\SGXMLScanner.obj \ $(TARGETPATH)\obj\WFXMLScanner.obj \ $(TARGETPATH)\obj\XMLScannerResolver.obj \ $(TARGETPATH)\obj\DOMTypeInfoImpl.obj \ $(TARGETPATH)\obj\DOMConfigurationImpl.obj \ $(TARGETPATH)\obj\XMemory.obj \ $(TARGETPATH)\obj\DOMNormalizer.obj \ $(TARGETPATH)\obj\MemoryManagerImpl.obj \ $(TARGETPATH)\obj\XMLGrammarPoolImpl.obj \ $(TARGETPATH)\obj\XMLDTDDescriptionImpl.obj \ $(TARGETPATH)\obj\XMLSchemaDescriptionImpl.obj \ $(TARGETPATH)\obj\PSVIAttribute.obj \ $(TARGETPATH)\obj\PSVIAttributeList.obj \ $(TARGETPATH)\obj\PSVIElement.obj \ $(TARGETPATH)\obj\PSVIItem.obj \ $(TARGETPATH)\obj\XSAnnotation.obj \ $(TARGETPATH)\obj\XSAttributeDeclaration.obj \ $(TARGETPATH)\obj\XSAttributeGroupDefinition.obj \ $(TARGETPATH)\obj\XSAttributeUse.obj \ $(TARGETPATH)\obj\XSComplexTypeDefinition.obj \ $(TARGETPATH)\obj\XSElementDeclaration.obj \ $(TARGETPATH)\obj\XSFacet.obj \ $(TARGETPATH)\obj\XSIDCDefinition.obj \ $(TARGETPATH)\obj\XSModel.obj \ $(TARGETPATH)\obj\XSModelGroup.obj \ $(TARGETPATH)\obj\XSModelGroupDefinition.obj \ $(TARGETPATH)\obj\XSMultiValueFacet.obj \ $(TARGETPATH)\obj\XSNamespaceItem.obj \ $(TARGETPATH)\obj\XSNotationDeclaration.obj \ $(TARGETPATH)\obj\XSObject.obj \ $(TARGETPATH)\obj\XSParticle.obj \ $(TARGETPATH)\obj\XSSimpleTypeDefinition.obj \ $(TARGETPATH)\obj\XSTypeDefinition.obj \ $(TARGETPATH)\obj\XSWildcard.obj \ $(TARGETPATH)\obj\XProtoType.obj \ $(TARGETPATH)\obj\XSerializeEngine.obj \ $(TARGETPATH)\obj\XTemplateSerializer.obj \ $(TARGETPATH)\obj\ValidationContextImpl.obj \ $(TARGETPATH)\obj\XMLRefInfo.obj \ $(TARGETPATH)\obj\XMLAttDefList.obj \ $(TARGETPATH)\obj\XMLGrammarDescription.obj \ $(TARGETPATH)\obj\Grammar.obj \ $(TARGETPATH)\obj\SynchronizedStringPool.obj \ $(TARGETPATH)\obj\DTDEntityDecl.obj \ $(TARGETPATH)\obj\XMLDTDDescription.obj \ $(TARGETPATH)\obj\XMLSchemaDescription.obj \ $(TARGETPATH)\obj\BinFileOutputStream.obj \ $(TARGETPATH)\obj\BinOutputStream.obj \ $(TARGETPATH)\obj\DOMXPathException.obj \ $(TARGETPATH)\obj\XSObjectFactory.obj \ $(TARGETPATH)\obj\XMLIBM1047Transcoder.obj \ $(TARGETPATH)\obj\XMLCanRepGroup.obj \ $(TARGETPATH)\obj\BinMemOutputStream.obj \ $(TARGETPATH)\obj\XSValue.obj \ $(TARGETPATH)\obj\IdentityConstraintHandler.obj \ $(TARGETPATH)\obj\XSAXMLScanner.obj \ $(TARGETPATH)\obj\XMLInitializer.obj \ $(TARGETPATH)\obj\WindowsFileMgr.obj \ $(TARGETPATH)\obj\WindowsMutexMgr.obj \ $(TARGETPATH)\obj\DOMXPathExpressionImpl.obj \ $(TARGETPATH)\obj\DOMXPathNSResolverImpl.obj \ $(TARGETPATH)\obj\DOMXPathResultImpl.obj \ $(TARGETPATH)\obj\XIncludeDOMDocumentProcessor.obj \ $(TARGETPATH)\obj\XIncludeLocation.obj \ $(TARGETPATH)\obj\XIncludeUtils.obj RESFILES = MAINSOURCE = XercesLib.cpp RESDEPEN = $(RESFILES) LIBFILES = IDLFILES = IDLGENFILES = LIBRARIES = SPARELIBS = DEFFILE = # --------------------------------------------------------------------------- PATHCPP = .;..\..\..\..\..\src\xercesc\dom;..\..\..\..\..\src\xercesc\dom\impl;..\..\..\..\..\src\xercesc\framework;..\..\..\..\..\src\xercesc\framework\psvi;..\..\..\..\..\src\xercesc\internal;..\..\..\..\..\src\xercesc\parsers;..\..\..\..\..\src\xercesc\sax;..\..\..\..\..\src\xercesc\sax2;..\..\..\..\..\src\xercesc\util;..\..\..\..\..\src\xercesc\util\MsgLoaders\InMemory;..\..\..\..\..\src\xercesc\util\NetAccessors;..\..\..\..\..\src\xercesc\util\NetAccessors\WinSock;..\..\..\..\..\src\xercesc\util\FileManagers;..\..\..\..\..\src\xercesc\util\MutexManagers;..\..\..\..\..\src\xercesc\util\regx;..\..\..\..\..\src\xercesc\util\Transcoders\Win32;..\..\..\..\..\src\xercesc\validators\common;..\..\..\..\..\src\xercesc\validators\datatype;..\..\..\..\..\src\xercesc\validators\DTD;..\..\..\..\..\src\xercesc\validators\schema;..\..\..\..\..\src\xercesc\validators\schema\identity;..\..\..\..\..\src\xercesc\xinclude; PATHASM = .; PATHPAS = .; PATHRC = .;..\..\..\..\..\src\xercesc\util\Platforms\Win32 !if !$d(WITHASM) XERCES_NO_ASM=;XERCES_NO_ASM !endif USERDEFINES = _DEBUG;XERCES_BUILDING_LIBRARY;XERCES_USE_FILEMGR_WINDOWS=1;XERCES_USE_MUTEXMGR_WINDOWS=1;XERCES_USE_NETACCESSOR_WINSOCK=1;XERCES_USE_MSGLOADER_INMEMORY=1;XERCES_USE_TRANSCODER_WINDOWS=1;XERCES_PATH_DELIMITER_BACKSLASH=1;HAVE_LIMITS_H=1;HAVE_SYS_TIMEB_H=1;HAVE_FTIME=1;HAVE_STRICMP=1;HAVE_STRNICMP=1;HAVE_WCSUPR=0;HAVE_WCSLWR=0;HAVE_WCSICMP=0;HAVE_WCSNICMP=0;$(XERCES_NO_ASM) SYSDEFINES = NO_STRICT;_NO_VCL;_RTLDLL INCLUDEPATH = ..\..\..\..\..\src;..\..\..\..\..\src\xercesc\dom;..\..\..\..\..\src\xercesc\framework;..\..\..\..\..\src\xercesc\framework\psvi;..\..\..\..\..\src\xercesc\internal;..\..\..\..\..\src\xercesc\parsers;..\..\..\..\..\src\xercesc\sax;..\..\..\..\..\src\xercesc\sax2;..\..\..\..\..\src\xercesc\util;..\..\..\..\..\src\xercesc\util\MsgLoaders\Win32;..\..\..\..\..\src\xercesc\util\NetAccessors;..\..\..\..\..\src\xercesc\util\NetAccessors\WinSock;..\..\..\..\..\src\xercesc\util\regx;..\..\..\..\..\src\xercesc\util\Transcoders\Win32;..\..\..\..\..\src\xercesc\validators\common;..\..\..\..\..\src\xercesc\validators\datatype;..\..\..\..\..\src\xercesc\validators\DTD;..\..\..\..\..\src\xercesc\validators\schema;..\..\..\..\..\src\xercesc\validators\schema\identity;..\..\..\..\..\src\xercesc\xinclude; LIBPATH = ..\..\..\..\..\src\xercesc\dom;..\..\..\..\..\src\xercesc\framework;..\..\..\..\..\src\xercesc\internal;..\..\..\..\..\src\xercesc\parsers;..\..\..\..\..\src\xercesc\sax;..\..\..\..\..\src\xercesc\sax2;..\..\..\..\..\src\xercesc\util;..\..\..\..\..\src\xercesc\util\MsgLoaders\Win32;..\..\..\..\..\src\xercesc\util\NetAccessors;..\..\..\..\..\src\xercesc\util\NetAccessors\WinSock;..\..\..\..\..\src\xercesc\util\regx;..\..\..\..\..\src\xercesc\util\Transcoders\Win32;..\..\..\..\..\src\xercesc\validators\common;..\..\..\..\..\src\xercesc\validators\datatype;..\..\..\..\..\src\xercesc\validators\DTD;..\..\..\..\..\src\xercesc\validators\schema;..\..\..\..\..\src\xercesc\validators\schema\identity;..\..\..\..\..\src\xercesc\xinclude; WARNINGS= -w-par # --------------------------------------------------------------------------- CFLAG1 = -tWD -Od -Vx -Ve -X- -r- -a8 -4 -b -k -y -v -vi- -c -tWM IDLCFLAGS = PFLAGS = -N2$(TARGETPATH)\obj \ -N0$(TARGETPATH)\obj -$YD -$W -$O- -v -JPHNE -M RFLAGS = AFLAGS = /mx /w2 /zd LFLAGS = -l"$(TARGETPATH)\" -I$(TARGETPATH)\obj \ -D"" -aa -Tpd -x -Gn -Gi -v # --------------------------------------------------------------------------- ALLOBJ = c0d32.obj $(OBJFILES) ALLRES = $(RESFILES) ALLLIB = $(LIBFILES) $(LIBRARIES) import32.lib cw32mti.lib # --------------------------------------------------------------------------- # --------------------------------------------------------------------------- # MAKE SECTION # --------------------------------------------------------------------------- # This section of the project file is not used by the BCB IDE. It is for # the benefit of building from the command-line using the MAKE utility. # --------------------------------------------------------------------------- .autodepend # --------------------------------------------------------------------------- !if "$(USERDEFINES)" != "" AUSERDEFINES = -d$(USERDEFINES:;= -d) !else AUSERDEFINES = !endif !if !$d(BCC32) BCC32 = bcc32 !endif !if !$d(CPP32) CPP32 = cpp32 !endif !if !$d(DCC32) DCC32 = dcc32 !endif !if !$d(TASM32) TASM32 = tasm32 !endif !if !$d(LINKER) LINKER = ilink32 !endif !if !$d(BRCC32) BRCC32 = brcc32 !endif # --------------------------------------------------------------------------- !if $d(PATHCPP) .PATH.CPP = $(PATHCPP) .PATH.C = $(PATHCPP) !endif !if $d(PATHPAS) .PATH.PAS = $(PATHPAS) !endif !if $d(PATHASM) .PATH.ASM = $(PATHASM) !endif !if $d(PATHRC) .PATH.RC = $(PATHRC) !endif # --------------------------------------------------------------------------- $(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) $(BCB)\BIN\$(LINKER) @&&! $(LFLAGS) -L$(LIBPATH) + $(ALLOBJ), + $(PROJECT),, + $(ALLLIB), + $(DEFFILE), + $(ALLRES) ! # --------------------------------------------------------------------------- .pas.hpp: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .pas.obj: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .cpp.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .cpp.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .asm.obj: $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ .rc.res: $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< # --------------------------------------------------------------------------- xerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/XercesLib/XercesLib.cpp0000644000175000017500000000273107634167412023732 0ustar borisboris//--------------------------------------------------------------------------- #pragma hdrstop #include //--------------------------------------------------------------------------- // Important note about DLL memory management when your DLL uses the // static version of the RunTime Library: // // If your DLL exports any functions that pass String objects (or structs/ // classes containing nested Strings) as parameter or function results, // you will need to add the library MEMMGR.LIB to both the DLL project and // any other projects that use the DLL. You will also need to use MEMMGR.LIB // if any other projects which use the DLL will be perfomring new or delete // operations on any non-TObject-derived classes which are exported from the // DLL. Adding MEMMGR.LIB to your project will change the DLL and its calling // EXE's to use the BORLNDMM.DLL as their memory manager. In these cases, // the file BORLNDMM.DLL should be deployed along with your DLL. // // To avoid using BORLNDMM.DLL, pass string information using "char *" or // ShortString parameters. // // If your DLL uses the dynamic version of the RTL, you do not need to // explicitly add MEMMGR.LIB as this will be done implicitly for you //--------------------------------------------------------------------------- int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) { return 1; } //--------------------------------------------------------------------------- xerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/DOMTypeInfoTest/0000755000175000017500000000000011363617267022422 5ustar borisborisxerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/DOMTypeInfoTest/DOMTypeInfoTest.mak0000644000175000017500000000757311300476775026063 0ustar borisboris# --------------------------------------------------------------------------- !if !$d(BCB) BCB = $(MAKEDIR)\.. !endif # --------------------------------------------------------------------------- TARGETPATH=..\..\..\..\..\Build\Win32\BCC5 PROJECT = $(TARGETPATH)\DOMTypeInfoTest.exe OBJFILES = $(TARGETPATH)\obj\TypeInfo.obj RESFILES = MAINSOURCE = TypeInfo.cpp RESDEPEN = $(RESFILES) LIBFILES = $(TARGETPATH)\xerces-bor_$(XERCESVER).lib IDLFILES = IDLGENFILES = LIBRARIES = PACKAGES = SPARELIBS = DEFFILE = # --------------------------------------------------------------------------- PATHCPP = ..\..\..\..\..\tests\src\DOM\TypeInfo; PATHASM = .; PATHPAS = .; PATHRC = .; USERDEFINES = _DEBUG;WIN32_LEAN_AND_MEAN;XERCES_NO_CONFIGURE_SUPPORT SYSDEFINES = _NO_VCL;NO_STRICT;_VIS_NOLIB;_RTLDLL INCLUDEPATH = ..\..\..\..\..\tests\src\DOM\TypeInfo;..\..\..\..\..\src LIBPATH = WARNINGS= # --------------------------------------------------------------------------- CFLAG1 = -Od -w -g0 -Tkh30000 -X- -r- -a8 -4 -b -k -y -v -vi- -c -tWM -tWC IDLCFLAGS = -src_suffix cpp -boa PFLAGS = -N2$(TARGETPATH)\obj \ -N0$(TARGETPATH)\obj -$YD -$W -$O- -v -JPHN -M RFLAGS = AFLAGS = /mx /w2 /zd LFLAGS = -I$(TARGETPATH)\obj -ap -Tpe -x -Gn -v # --------------------------------------------------------------------------- ALLOBJ = c0x32.obj $(OBJFILES) ALLRES = $(RESFILES) ALLLIB = $(LIBFILES) import32.lib cw32mti.lib # --------------------------------------------------------------------------- # --------------------------------------------------------------------------- # MAKE SECTION # --------------------------------------------------------------------------- # This section of the project file is not used by the BCB IDE. It is for # the benefit of building from the command-line using the MAKE utility. # --------------------------------------------------------------------------- .autodepend # --------------------------------------------------------------------------- !if "$(USERDEFINES)" != "" AUSERDEFINES = -d$(USERDEFINES:;= -d) !else AUSERDEFINES = !endif !if !$d(BCC32) BCC32 = bcc32 !endif !if !$d(CPP32) CPP32 = cpp32 !endif !if !$d(DCC32) DCC32 = dcc32 !endif !if !$d(TASM32) TASM32 = tasm32 !endif !if !$d(LINKER) LINKER = ilink32 !endif !if !$d(BRCC32) BRCC32 = brcc32 !endif # --------------------------------------------------------------------------- !if $d(PATHCPP) .PATH.CPP = $(PATHCPP) .PATH.C = $(PATHCPP) !endif !if $d(PATHPAS) .PATH.PAS = $(PATHPAS) !endif !if $d(PATHASM) .PATH.ASM = $(PATHASM) !endif !if $d(PATHRC) .PATH.RC = $(PATHRC) !endif # --------------------------------------------------------------------------- $(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) $(BCB)\BIN\$(LINKER) @&&! $(LFLAGS) -L$(LIBPATH) + $(ALLOBJ), + $(PROJECT),, + $(ALLLIB), + $(DEFFILE), + $(ALLRES) ! # --------------------------------------------------------------------------- .pas.hpp: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .pas.obj: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .cpp.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .cpp.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .asm.obj: $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ .rc.res: $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< # --------------------------------------------------------------------------- xerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/SAX2Print/0000755000175000017500000000000011363617267021217 5ustar borisborisxerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/SAX2Print/SAX2Print.mak0000644000175000017500000000771111300476775023447 0ustar borisboris# --------------------------------------------------------------------------- !if !$d(BCB) BCB = $(MAKEDIR)\.. !endif # --------------------------------------------------------------------------- TARGETPATH=..\..\..\..\..\Build\Win32\BCC5 PROJECT = $(TARGETPATH)\SAX2Print.exe OBJFILES = $(TARGETPATH)\obj\SAX2Print.obj \ $(TARGETPATH)\obj\SAX2PrintHandlers.obj \ $(TARGETPATH)\obj\SAX2FilterHandlers.obj RESFILES = MAINSOURCE = SAX2Print.cpp RESDEPEN = $(RESFILES) LIBFILES = $(TARGETPATH)\xerces-bor_$(XERCESVER).lib IDLFILES = IDLGENFILES = LIBRARIES = SPARELIBS = DEFFILE = # --------------------------------------------------------------------------- PATHCPP = ..\..\..\..\..\samples\src\SAX2Print PATHASM = .; PATHPAS = .; PATHRC = .; USERDEFINES = _DEBUG;XERCES_NO_CONFIGURE_SUPPORT SYSDEFINES = _NO_VCL;_VIS_NOLIB;_RTLDLL INCLUDEPATH = ..\..\..\..\..\samples\src\SAX2Print;..\..\..\..\..\src LIBPATH = ..\..\..\..\..\samples\src\SAX2Print WARNINGS= # --------------------------------------------------------------------------- CFLAG1 = -Od -w -Tkh30000 -X- -r- -a8 -5 -b -k -y -v -vi- -c -tWM -tWC IDLCFLAGS = -src_suffix cpp -boa PFLAGS = -N2$(TARGETPATH)\obj \ -N0$(TARGETPATH)\obj -$YD -$W -$O- -v -JPHN -M RFLAGS = AFLAGS = /mx /w2 /zd LFLAGS = -I$(TARGETPATH)\obj -D"" -ap -Tpe -x -Gn -v # --------------------------------------------------------------------------- ALLOBJ = c0x32.obj $(OBJFILES) ALLRES = $(RESFILES) ALLLIB = $(LIBFILES) import32.lib cw32mti.lib # --------------------------------------------------------------------------- # --------------------------------------------------------------------------- # MAKE SECTION # --------------------------------------------------------------------------- # This section of the project file is not used by the BCB IDE. It is for # the benefit of building from the command-line using the MAKE utility. # --------------------------------------------------------------------------- .autodepend # --------------------------------------------------------------------------- !if "$(USERDEFINES)" != "" AUSERDEFINES = -d$(USERDEFINES:;= -d) !else AUSERDEFINES = !endif !if !$d(BCC32) BCC32 = bcc32 !endif !if !$d(CPP32) CPP32 = cpp32 !endif !if !$d(DCC32) DCC32 = dcc32 !endif !if !$d(TASM32) TASM32 = tasm32 !endif !if !$d(LINKER) LINKER = ilink32 !endif !if !$d(BRCC32) BRCC32 = brcc32 !endif # --------------------------------------------------------------------------- !if $d(PATHCPP) .PATH.CPP = $(PATHCPP) .PATH.C = $(PATHCPP) !endif !if $d(PATHPAS) .PATH.PAS = $(PATHPAS) !endif !if $d(PATHASM) .PATH.ASM = $(PATHASM) !endif !if $d(PATHRC) .PATH.RC = $(PATHRC) !endif # --------------------------------------------------------------------------- $(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) $(BCB)\BIN\$(LINKER) @&&! $(LFLAGS) -L$(LIBPATH) + $(ALLOBJ), + $(PROJECT),, + $(ALLLIB), + $(DEFFILE), + $(ALLRES) ! # --------------------------------------------------------------------------- .pas.hpp: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .pas.obj: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .cpp.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .cpp.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .asm.obj: $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ .rc.res: $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< # --------------------------------------------------------------------------- xerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/DOMCount/0000755000175000017500000000000011363617267021115 5ustar borisborisxerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/DOMCount/DOMCount.mak0000644000175000017500000000750711300476775023246 0ustar borisboris# --------------------------------------------------------------------------- !if !$d(BCB) BCB = $(MAKEDIR)\.. !endif # --------------------------------------------------------------------------- TARGETPATH=..\..\..\..\..\Build\Win32\BCC5 PROJECT = $(TARGETPATH)\DOMCount.exe OBJFILES = $(TARGETPATH)\obj\DOMCount.obj RESFILES = MAINSOURCE = DOMCount.cpp RESDEPEN = $(RESFILES) LIBFILES = $(TARGETPATH)\xerces-bor_$(XERCESVER).lib IDLFILES = IDLGENFILES = LIBRARIES = SPARELIBS = DEFFILE = # --------------------------------------------------------------------------- PATHCPP = ..\..\..\..\..\samples\src\DOMCount; PATHASM = .; PATHPAS = .; PATHRC = .; USERDEFINES = _DEBUG;XERCES_NO_CONFIGURE_SUPPORT SYSDEFINES = _NO_VCL;_VIS_NOLIB;_RTLDLL INCLUDEPATH = ..\..\..\..\..\samples\src\DOMCount;..\..\..\..\..\src LIBPATH = WARNINGS= # --------------------------------------------------------------------------- CFLAG1 = -Od -w -Tkh30000 -X- -r- -a8 -5 -b -k -y -v -vi- -c -tWM -tWC IDLCFLAGS = -src_suffix cpp -boa PFLAGS = -N2$(TARGETPATH)\obj \ -N0$(TARGETPATH)\obj -$YD -$W -$O- -v -JPHN -M RFLAGS = AFLAGS = /mx /w2 /zd LFLAGS = -I$(TARGETPATH)\obj -D"" -ap -Tpe -x -Gn -v # --------------------------------------------------------------------------- ALLOBJ = c0x32.obj $(OBJFILES) ALLRES = $(RESFILES) ALLLIB = $(LIBFILES) import32.lib cw32mti.lib # --------------------------------------------------------------------------- # --------------------------------------------------------------------------- # MAKE SECTION # --------------------------------------------------------------------------- # This section of the project file is not used by the BCB IDE. It is for # the benefit of building from the command-line using the MAKE utility. # --------------------------------------------------------------------------- .autodepend # --------------------------------------------------------------------------- !if "$(USERDEFINES)" != "" AUSERDEFINES = -d$(USERDEFINES:;= -d) !else AUSERDEFINES = !endif !if !$d(BCC32) BCC32 = bcc32 !endif !if !$d(CPP32) CPP32 = cpp32 !endif !if !$d(DCC32) DCC32 = dcc32 !endif !if !$d(TASM32) TASM32 = tasm32 !endif !if !$d(LINKER) LINKER = ilink32 !endif !if !$d(BRCC32) BRCC32 = brcc32 !endif # --------------------------------------------------------------------------- !if $d(PATHCPP) .PATH.CPP = $(PATHCPP) .PATH.C = $(PATHCPP) !endif !if $d(PATHPAS) .PATH.PAS = $(PATHPAS) !endif !if $d(PATHASM) .PATH.ASM = $(PATHASM) !endif !if $d(PATHRC) .PATH.RC = $(PATHRC) !endif # --------------------------------------------------------------------------- $(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) $(BCB)\BIN\$(LINKER) @&&! $(LFLAGS) -L$(LIBPATH) + $(ALLOBJ), + $(PROJECT),, + $(ALLLIB), + $(DEFFILE), + $(ALLRES) ! # --------------------------------------------------------------------------- .pas.hpp: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .pas.obj: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .cpp.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .cpp.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .asm.obj: $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ .rc.res: $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< # --------------------------------------------------------------------------- xerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/EnumVal/0000755000175000017500000000000011363617267021034 5ustar borisborisxerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/EnumVal/EnumVal.mak0000644000175000017500000000752711300476775023106 0ustar borisboris# --------------------------------------------------------------------------- !if !$d(BCB) BCB = $(MAKEDIR)\.. !endif # --------------------------------------------------------------------------- TARGETPATH=..\..\..\..\..\Build\Win32\BCC5 PROJECT = $(TARGETPATH)\EnumVal.exe OBJFILES = $(TARGETPATH)\obj\EnumVal.obj RESFILES = MAINSOURCE = EnumVal.cpp RESDEPEN = $(RESFILES) LIBFILES = $(TARGETPATH)\xerces-bor_$(XERCESVER).lib IDLFILES = IDLGENFILES = LIBRARIES = PACKAGES = SPARELIBS = DEFFILE = # --------------------------------------------------------------------------- PATHCPP = ..\..\..\..\..\samples\src\EnumVal; PATHASM = .; PATHPAS = .; PATHRC = .; USERDEFINES = _DEBUG;XERCES_NO_CONFIGURE_SUPPORT SYSDEFINES = _NO_VCL;NO_STRICT;_VIS_NOLIB;_RTLDLL INCLUDEPATH = ..\..\..\..\..\samples\src\EnumVal;..\..\..\..\..\src LIBPATH = WARNINGS= # --------------------------------------------------------------------------- CFLAG1 = -Od -w -g0 -Tkh30000 -X- -r- -a8 -4 -b -k -y -v -vi- -c -tWM -tWC IDLCFLAGS = -src_suffix cpp -boa PFLAGS = -N2$(TARGETPATH)\obj \ -N0$(TARGETPATH)\obj -$YD -$W -$O- -v -JPHN -M RFLAGS = AFLAGS = /mx /w2 /zd LFLAGS = -I$(TARGETPATH)\obj -ap -Tpe -x -Gn -v # --------------------------------------------------------------------------- ALLOBJ = c0x32.obj $(OBJFILES) ALLRES = $(RESFILES) ALLLIB = $(LIBFILES) import32.lib cw32mti.lib # --------------------------------------------------------------------------- # --------------------------------------------------------------------------- # MAKE SECTION # --------------------------------------------------------------------------- # This section of the project file is not used by the BCB IDE. It is for # the benefit of building from the command-line using the MAKE utility. # --------------------------------------------------------------------------- .autodepend # --------------------------------------------------------------------------- !if "$(USERDEFINES)" != "" AUSERDEFINES = -d$(USERDEFINES:;= -d) !else AUSERDEFINES = !endif !if !$d(BCC32) BCC32 = bcc32 !endif !if !$d(CPP32) CPP32 = cpp32 !endif !if !$d(DCC32) DCC32 = dcc32 !endif !if !$d(TASM32) TASM32 = tasm32 !endif !if !$d(LINKER) LINKER = ilink32 !endif !if !$d(BRCC32) BRCC32 = brcc32 !endif # --------------------------------------------------------------------------- !if $d(PATHCPP) .PATH.CPP = $(PATHCPP) .PATH.C = $(PATHCPP) !endif !if $d(PATHPAS) .PATH.PAS = $(PATHPAS) !endif !if $d(PATHASM) .PATH.ASM = $(PATHASM) !endif !if $d(PATHRC) .PATH.RC = $(PATHRC) !endif # --------------------------------------------------------------------------- $(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) $(BCB)\BIN\$(LINKER) @&&! $(LFLAGS) -L$(LIBPATH) + $(ALLOBJ), + $(PROJECT),, + $(ALLLIB), + $(DEFFILE), + $(ALLRES) ! # --------------------------------------------------------------------------- .pas.hpp: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .pas.obj: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .cpp.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .cpp.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .asm.obj: $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ .rc.res: $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< # --------------------------------------------------------------------------- xerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/DOMPrint/0000755000175000017500000000000011363617267021121 5ustar borisborisxerces-c-3.1.1/projects/Win32/BCC5/Xerces-all/DOMPrint/DOMPrint.mak0000644000175000017500000001001211300476775023237 0ustar borisboris# --------------------------------------------------------------------------- !if !$d(BCB) BCB = $(MAKEDIR)\.. !endif # --------------------------------------------------------------------------- TARGETPATH=..\..\..\..\..\Build\Win32\BCC5 PROJECT = $(TARGETPATH)\DOMPrint.exe OBJFILES = $(TARGETPATH)\obj\DOMPrint.obj \ $(TARGETPATH)\obj\DOMTreeErrorReporter.obj \ $(TARGETPATH)\obj\DOMPrintFilter.obj \ $(TARGETPATH)\obj\DOMPrintErrorHandler.obj RESFILES = MAINSOURCE = DOMPrint.cpp RESDEPEN = $(RESFILES) LIBFILES = $(TARGETPATH)\xerces-bor_$(XERCESVER).lib IDLFILES = IDLGENFILES = LIBRARIES = SPARELIBS = DEFFILE = # --------------------------------------------------------------------------- PATHCPP = ..\..\..\..\..\samples\src\DOMPrint PATHASM = .; PATHPAS = .; PATHRC = .; USERDEFINES = _DEBUG;WIN32_LEAN_AND_MEAN;XERCES_NO_CONFIGURE_SUPPORT SYSDEFINES = _NO_VCL;_VIS_NOLIB;_RTLDLL INCLUDEPATH = ..\..\..\..\..\samples\src\DOMPrint;..\..\..\..\..\src LIBPATH = ..\..\..\..\..\samples\src\DOMPrint WARNINGS= # --------------------------------------------------------------------------- CFLAG1 = -Od -w -Tkh30000 -X- -r- -a8 -5 -b -k -y -v -vi- -c -tWM -tWC IDLCFLAGS = -src_suffix cpp -boa PFLAGS = -N2$(TARGETPATH)\obj \ -N0$(TARGETPATH)\obj -$YD -$W -$O- -v -JPHN -M RFLAGS = AFLAGS = /mx /w2 /zd LFLAGS = -I$(TARGETPATH)\obj -D"" -ap -Tpe -x -Gn -v # --------------------------------------------------------------------------- ALLOBJ = c0x32.obj $(OBJFILES) ALLRES = $(RESFILES) ALLLIB = $(LIBFILES) import32.lib cw32mti.lib # --------------------------------------------------------------------------- # --------------------------------------------------------------------------- # MAKE SECTION # --------------------------------------------------------------------------- # This section of the project file is not used by the BCB IDE. It is for # the benefit of building from the command-line using the MAKE utility. # --------------------------------------------------------------------------- .autodepend # --------------------------------------------------------------------------- !if "$(USERDEFINES)" != "" AUSERDEFINES = -d$(USERDEFINES:;= -d) !else AUSERDEFINES = !endif !if !$d(BCC32) BCC32 = bcc32 !endif !if !$d(CPP32) CPP32 = cpp32 !endif !if !$d(DCC32) DCC32 = dcc32 !endif !if !$d(TASM32) TASM32 = tasm32 !endif !if !$d(LINKER) LINKER = ilink32 !endif !if !$d(BRCC32) BRCC32 = brcc32 !endif # --------------------------------------------------------------------------- !if $d(PATHCPP) .PATH.CPP = $(PATHCPP) .PATH.C = $(PATHCPP) !endif !if $d(PATHPAS) .PATH.PAS = $(PATHPAS) !endif !if $d(PATHASM) .PATH.ASM = $(PATHASM) !endif !if $d(PATHRC) .PATH.RC = $(PATHRC) !endif # --------------------------------------------------------------------------- $(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) $(BCB)\BIN\$(LINKER) @&&! $(LFLAGS) -L$(LIBPATH) + $(ALLOBJ), + $(PROJECT),, + $(ALLLIB), + $(DEFFILE), + $(ALLRES) ! # --------------------------------------------------------------------------- .pas.hpp: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .pas.obj: $(BCB)\BIN\$(DCC32) $(PFLAGS) -U$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -O$(INCLUDEPATH) --BCB {$< } .cpp.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.obj: $(BCB)\BIN\$(BCC32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n$(@D) {$< } .c.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .cpp.i: $(BCB)\BIN\$(CPP32) $(CFLAG1) $(WARNINGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -n. {$< } .asm.obj: $(BCB)\BIN\$(TASM32) $(AFLAGS) -i$(INCLUDEPATH:;= -i) $(AUSERDEFINES) -d$(SYSDEFINES:;= -d) $<, $@ .rc.res: $(BCB)\BIN\$(BRCC32) $(RFLAGS) -I$(INCLUDEPATH) -D$(USERDEFINES);$(SYSDEFINES) -fo$@ $< # --------------------------------------------------------------------------- xerces-c-3.1.1/projects/Win32/VC10/0000755000175000017500000000000011363617263015457 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC10/xerces-all/0000755000175000017500000000000011363617267017522 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC10/xerces-all/DOMNormalizerTest/0000755000175000017500000000000011363617264023041 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC10/xerces-all/DOMNormalizerTest/DOMNormalizerTest.vcxproj0000644000175000017500000011151511363050663027776 0ustar borisboris Debug Win32 Debug x64 ICU Debug Win32 ICU Debug x64 ICU Release Win32 ICU Release x64 Release Win32 Release x64 Static Debug Win32 Static Debug x64 Static Release Win32 Static Release x64 {BE9C14B1-2301-4C62-85E2-B583D22AE29C} Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false <_ProjectFileVersion>10.0.30319.1 .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false $(OutDir)DOMNormalizerTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)DOMNormalizerTest.pch $(IntDir) $(IntDir) $(IntDir)DOMNormalizer_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMNormalizerTest.pdb Console false X64 $(OutDir)DOMNormalizerTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)DOMNormalizerTest.pch $(IntDir) $(IntDir) $(IntDir)DOMNormalizer_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMNormalizerTest.pdb Console false MachineX64 $(OutDir)DOMNormalizerTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)DOMNormalizerTest.pch $(IntDir) $(IntDir) $(IntDir)DOMNormalizer_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMNormalizerTest.pdb Console false X64 $(OutDir)DOMNormalizerTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)DOMNormalizerTest.pch $(IntDir) $(IntDir) $(IntDir)DOMNormalizer_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMNormalizerTest.pdb Console false MachineX64 $(OutDir)DOMNormalizerTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true $(IntDir)DOMNormalizerTest.pch $(IntDir) $(IntDir) $(IntDir)DOMNormalizer_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMNormalizerTest.pdb Console false X64 $(OutDir)DOMNormalizerTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true $(IntDir)DOMNormalizerTest.pch $(IntDir) $(IntDir) $(IntDir)DOMNormalizer_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMNormalizerTest.pdb Console false MachineX64 $(OutDir)DOMNormalizerTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug true $(IntDir)DOMNormalizerTest.pch $(IntDir) $(IntDir) $(IntDir)DOMNormalizer_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMNormalizerTest.pdb Console false X64 $(OutDir)DOMNormalizerTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug true $(IntDir)DOMNormalizerTest.pch $(IntDir) $(IntDir) $(IntDir)DOMNormalizer_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMNormalizerTest.pdb Console false MachineX64 $(OutDir)DOMNormalizerTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)DOMNormalizerTest.pch $(IntDir) $(IntDir) $(IntDir)DOMNormalizer_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMNormalizerTest.pdb Console false X64 $(OutDir)DOMNormalizerTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)DOMNormalizerTest.pch $(IntDir) $(IntDir) $(IntDir)DOMNormalizer_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMNormalizerTest.pdb Console false MachineX64 $(OutDir)DOMNormalizerTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)DOMNormalizerTest.pch $(IntDir) $(IntDir) $(IntDir)DOMNormalizer_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMNormalizerTest.pdb Console false X64 $(OutDir)DOMNormalizerTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)DOMNormalizerTest.pch $(IntDir) $(IntDir) $(IntDir)DOMNormalizer_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMNormalizerTest.pdb Console false MachineX64 {152ce948-f659-4206-a50a-1d2b9658ef96} false xerces-c-3.1.1/projects/Win32/VC10/xerces-all/DOMNormalizerTest/DOMNormalizerTest.vcxproj.filters0000644000175000017500000000213211362112176031434 0ustar borisboris {c5bff148-f49c-4a22-bcc2-2942e7ab7c4d} cpp;c;cxx;rc;def;r;odl;idl;hpj;bat {8570f7a5-5ed5-45ea-8f4d-c1adb252494d} h;hpp;hxx;hm;inl {aec3e9be-20f9-4cec-ba9d-6ecf35b10d2d} ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe Source Files Header Files xerces-c-3.1.1/projects/Win32/VC10/xerces-all/SAXPrint/0000755000175000017500000000000011363617265021170 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC10/xerces-all/SAXPrint/SAXPrint.vcxproj0000644000175000017500000011137711363050663024260 0ustar borisboris Debug Win32 Debug x64 ICU Debug Win32 ICU Debug x64 ICU Release Win32 ICU Release x64 Release Win32 Release x64 Static Debug Win32 Static Debug x64 Static Release Win32 Static Release x64 {959445AC-9081-4590-B457-C96164CF4BFA} Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false <_ProjectFileVersion>10.0.30319.1 .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false $(OutDir)SAXPrint.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)SAXPrint.pch $(IntDir) $(IntDir) $(IntDir)SAXPrint_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)SAXPrint.pdb Console false X64 $(OutDir)SAXPrint.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)SAXPrint.pch $(IntDir) $(IntDir) $(IntDir)SAXPrint_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)SAXPrint.pdb Console false MachineX64 $(OutDir)SAXPrint.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)SAXPrint.pch $(IntDir) $(IntDir) $(IntDir)SAXPrint_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)SAXPrint.pdb Console false X64 $(OutDir)SAXPrint.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)SAXPrint.pch $(IntDir) $(IntDir) $(IntDir)SAXPrint_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)SAXPrint.pdb Console false MachineX64 $(OutDir)SAXPrint.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true true $(IntDir)SAXPrint.pch $(IntDir) $(IntDir) $(IntDir)SAXPrint_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)SAXPrint.pdb Console false X64 $(OutDir)SAXPrint.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true true $(IntDir)SAXPrint.pch $(IntDir) $(IntDir) $(IntDir)SAXPrint_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)SAXPrint.pdb Console false MachineX64 $(OutDir)SAXPrint.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) MultiThreadedDebug true $(IntDir)SAXPrint.pch $(IntDir) $(IntDir) $(IntDir)SAXPrint_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)SAXPrint.pdb Console false X64 $(OutDir)SAXPrint.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) MultiThreadedDebug true $(IntDir)SAXPrint.pch $(IntDir) $(IntDir) $(IntDir)SAXPrint_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)SAXPrint.pdb Console false MachineX64 $(OutDir)SAXPrint.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)SAXPrint.pch $(IntDir) $(IntDir) $(IntDir)SAXPrint_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)SAXPrint.pdb Console false X64 $(OutDir)SAXPrint.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)SAXPrint.pch $(IntDir) $(IntDir) $(IntDir)SAXPrint_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)SAXPrint.pdb Console false MachineX64 $(OutDir)SAXPrint.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)SAXPrint.pch $(IntDir) $(IntDir) $(IntDir)SAXPrint_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)SAXPrint.pdb Console false X64 $(OutDir)SAXPrint.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)SAXPrint.pch $(IntDir) $(IntDir) $(IntDir)SAXPrint_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)SAXPrint.pdb Console false MachineX64 {152ce948-f659-4206-a50a-1d2b9658ef96} false xerces-c-3.1.1/projects/Win32/VC10/xerces-all/XSTSHarness/0000755000175000017500000000000011363617265021645 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC10/xerces-all/XSTSHarness/XSTSHarness.vcxproj.filters0000644000175000017500000000327011362112176027046 0ustar borisboris {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files Source Files Source Files Header Files Header Files Header Files xerces-c-3.1.1/projects/Win32/VC10/xerces-all/XSTSHarness/XSTSHarness.vcxproj0000644000175000017500000007732311363050663025414 0ustar borisboris Debug Win32 Debug x64 ICU Debug Win32 ICU Debug x64 ICU Release Win32 ICU Release x64 Release Win32 Release x64 Static Debug Win32 Static Debug x64 Static Release Win32 Static Release x64 {D92806DD-C591-4782-BCF2-8A0D0338D67A} XSTSHarness Win32Proj Application Unicode true Application Unicode Application Unicode Application Unicode true Application Unicode true Application Unicode Application Unicode true Application Unicode Application Unicode Application Unicode true Application Unicode true Application Unicode <_ProjectFileVersion>10.0.30319.1 .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true EnableFastChecks MultiThreadedDebugDLL $(IntDir) $(IntDir)XSTSHarness_vc100.pdb.pdb Level3 EditAndContinue xerces-c_3D.lib;%(AdditionalDependencies) $(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 X64 Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true EnableFastChecks MultiThreadedDebugDLL $(IntDir) $(IntDir)XSTSHarness_vc100.pdb.pdb Level3 ProgramDatabase xerces-c_3D.lib;%(AdditionalDependencies) $(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDLL $(IntDir) $(IntDir)XSTSHarness_vc100.pdb.pdb Level3 ProgramDatabase xerces-c_3.lib;%(AdditionalDependencies) $(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 X64 ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDLL $(IntDir) $(IntDir)XSTSHarness_vc100.pdb.pdb Level3 ProgramDatabase xerces-c_3.lib;%(AdditionalDependencies) $(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) MultiThreaded $(IntDir) $(IntDir)XSTSHarness_vc100.pdb.pdb Level3 ProgramDatabase xerces-c_static_3.lib;%(AdditionalDependencies) $(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 X64 ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) MultiThreaded $(IntDir) $(IntDir)XSTSHarness_vc100.pdb.pdb Level3 ProgramDatabase xerces-c_static_3.lib;%(AdditionalDependencies) $(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true EnableFastChecks MultiThreadedDebug $(IntDir) $(IntDir)XSTSHarness_vc100.pdb.pdb Level3 EditAndContinue xerces-c_static_3D.lib;%(AdditionalDependencies) $(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 X64 Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true EnableFastChecks MultiThreadedDebug $(IntDir) $(IntDir)XSTSHarness_vc100.pdb.pdb Level3 ProgramDatabase xerces-c_static_3D.lib;%(AdditionalDependencies) $(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true EnableFastChecks MultiThreadedDebugDLL $(IntDir) $(IntDir)XSTSHarness_vc100.pdb.pdb Level3 EditAndContinue xerces-c_3D.lib;%(AdditionalDependencies) $(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX86 X64 Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true EnableFastChecks MultiThreadedDebugDLL $(IntDir) $(IntDir)XSTSHarness_vc100.pdb.pdb Level3 ProgramDatabase xerces-c_3D.lib;%(AdditionalDependencies) $(OutDir);%(AdditionalLibraryDirectories) true Console false MachineX64 ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDLL $(IntDir) $(IntDir)XSTSHarness_vc100.pdb.pdb Level3 ProgramDatabase xerces-c_3.lib;%(AdditionalDependencies) $(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX86 X64 ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDLL $(IntDir) $(IntDir)XSTSHarness_vc100.pdb.pdb Level3 ProgramDatabase xerces-c_3.lib;%(AdditionalDependencies) $(OutDir);%(AdditionalLibraryDirectories) true Console true true false MachineX64 {152ce948-f659-4206-a50a-1d2b9658ef96} false xerces-c-3.1.1/projects/Win32/VC10/xerces-all/SCMPrint/0000755000175000017500000000000011363617266021160 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC10/xerces-all/SCMPrint/SCMPrint.vcxproj0000644000175000017500000011012411363050663024223 0ustar borisboris Debug Win32 Debug x64 ICU Debug Win32 ICU Debug x64 ICU Release Win32 ICU Release x64 Release Win32 Release x64 Static Debug Win32 Static Debug x64 Static Release Win32 Static Release x64 {895EDBF3-6A97-4641-8D96-7282005F8DD7} Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false <_ProjectFileVersion>10.0.30319.1 .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false $(OutDir)SCMPrint.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)SCMPrint.pch $(IntDir) $(IntDir) $(IntDir)SCMPrint_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)SCMPrint.pdb Console false X64 $(OutDir)SCMPrint.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)SCMPrint.pch $(IntDir) $(IntDir) $(IntDir)SCMPrint_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)SCMPrint.pdb Console false MachineX64 $(OutDir)SCMPrint.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CONSOLE;_DEBUG;WIN32;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)SCMPrint.pch $(IntDir) $(IntDir) $(IntDir)SCMPrint_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)SCMPrint.pdb Console false X64 $(OutDir)SCMPrint.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CONSOLE;_DEBUG;WIN64;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)SCMPrint.pch $(IntDir) $(IntDir) $(IntDir)SCMPrint_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)SCMPrint.pdb Console false MachineX64 $(OutDir)SCMPrint.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true $(IntDir)SCMPrint.pch $(IntDir) $(IntDir) $(IntDir)SCMPrint_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)SCMPrint.pdb Console false X64 $(OutDir)SCMPrint.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true $(IntDir)SCMPrint.pch $(IntDir) $(IntDir) $(IntDir)SCMPrint_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)SCMPrint.pdb Console false MachineX64 $(OutDir)SCMPrint.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CONSOLE;_DEBUG;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) MultiThreadedDebug true $(IntDir)SCMPrint.pch $(IntDir) $(IntDir) $(IntDir)SCMPrint_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)SCMPrint.pdb Console false X64 $(OutDir)SCMPrint.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CONSOLE;_DEBUG;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) MultiThreadedDebug true $(IntDir)SCMPrint.pch $(IntDir) $(IntDir) $(IntDir)SCMPrint_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)SCMPrint.pdb Console false MachineX64 $(OutDir)SCMPrint.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CONSOLE;_DEBUG;WIN32;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)SCMPrint.pch $(IntDir) $(IntDir) $(IntDir)SCMPrint_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)SCMPrint.pdb Console false X64 $(OutDir)SCMPrint.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CONSOLE;_DEBUG;WIN64;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)SCMPrint.pch $(IntDir) $(IntDir) $(IntDir)SCMPrint_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)SCMPrint.pdb Console false MachineX64 $(OutDir)SCMPrint.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)SCMPrint.pch $(IntDir) $(IntDir) $(IntDir)SCMPrint_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)SCMPrint.pdb Console false X64 $(OutDir)SCMPrint.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)SCMPrint.pch $(IntDir) $(IntDir) $(IntDir)SCMPrint_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)SCMPrint.pdb Console false MachineX64 {152ce948-f659-4206-a50a-1d2b9658ef96} false xerces-c-3.1.1/projects/Win32/VC10/xerces-all/SAXCount/0000755000175000017500000000000011363617266021165 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC10/xerces-all/SAXCount/SAXCount.vcxproj0000644000175000017500000011205311363050663024240 0ustar borisboris Debug Win32 Debug x64 ICU Debug Win32 ICU Debug x64 ICU Release Win32 ICU Release x64 Release Win32 Release x64 Static Debug Win32 Static Debug x64 Static Release Win32 Static Release x64 {2AB767A9-6A3B-4993-8FDB-3E6A30560739} Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false <_ProjectFileVersion>10.0.30319.1 .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false $(OutDir)SAXCount.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)SAXCount.pch $(IntDir) $(IntDir) $(IntDir)SAXCount_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)SAXCount.pdb Console false X64 $(OutDir)SAXCount.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)SAXCount.pch $(IntDir) $(IntDir) $(IntDir)SAXCount_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)SAXCount.pdb Console false MachineX64 $(OutDir)SAXCount.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)SAXCount.pch $(IntDir) $(IntDir) $(IntDir)SAXCount_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)SAXCount.pdb Console false X64 $(OutDir)SAXCount.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)SAXCount.pch $(IntDir) $(IntDir) $(IntDir)SAXCount_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)SAXCount.pdb Console false MachineX64 $(OutDir)SAXCount.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true true $(IntDir)SAXCount.pch $(IntDir) $(IntDir) $(IntDir)SAXCount_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)SAXCount.pdb Console false X64 $(OutDir)SAXCount.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true true $(IntDir)SAXCount.pch $(IntDir) $(IntDir) $(IntDir)SAXCount_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)SAXCount.pdb Console false MachineX64 $(OutDir)SAXCount.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) MultiThreadedDebug true $(IntDir)SAXCount.pch $(IntDir) $(IntDir) $(IntDir)SAXCount_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)SAXCount.pdb Console false X64 $(OutDir)SAXCount.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) MultiThreadedDebug true $(IntDir)SAXCount.pch $(IntDir) $(IntDir) $(IntDir)SAXCount_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)SAXCount.pdb Console false MachineX64 $(OutDir)SAXCount.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)SAXCount.pch $(IntDir) $(IntDir) $(IntDir)SAXCount_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)SAXCount.pdb Console false X64 $(OutDir)SAXCount.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)SAXCount.pch $(IntDir) $(IntDir) $(IntDir)SAXCount_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)SAXCount.pdb Console false MachineX64 $(OutDir)SAXCount.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)SAXCount.pch $(IntDir) $(IntDir) $(IntDir)SAXCount_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)SAXCount.pdb Console false X64 $(OutDir)SAXCount.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)SAXCount.pch $(IntDir) $(IntDir) $(IntDir)SAXCount_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)SAXCount.pdb Console false MachineX64 {152ce948-f659-4206-a50a-1d2b9658ef96} false xerces-c-3.1.1/projects/Win32/VC10/xerces-all/DOMTraversalTest/0000755000175000017500000000000011363617265022663 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC10/xerces-all/DOMTraversalTest/DOMTraversalTest.vcxproj0000644000175000017500000011215211363050663027436 0ustar borisboris Debug Win32 Debug x64 ICU Debug Win32 ICU Debug x64 ICU Release Win32 ICU Release x64 Release Win32 Release x64 Static Debug Win32 Static Debug x64 Static Release Win32 Static Release x64 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D} Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false <_ProjectFileVersion>10.0.30319.1 .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false $(OutDir)DOMTraversalTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)DOMTraversalTest.pch $(IntDir) $(IntDir) $(IntDir)DOMTraversalTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMTraversalTest.pdb Console false X64 $(OutDir)DOMTraversalTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)DOMTraversalTest.pch $(IntDir) $(IntDir) $(IntDir)DOMTraversalTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMTraversalTest.pdb Console false MachineX64 $(OutDir)DOMTraversalTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)DOMTraversalTest.pch $(IntDir) $(IntDir) $(IntDir)DOMTraversalTest_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMTraversalTest.pdb Console false X64 $(OutDir)DOMTraversalTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)DOMTraversalTest.pch $(IntDir) $(IntDir) $(IntDir)DOMTraversalTest_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMTraversalTest.pdb Console false MachineX64 $(OutDir)DOMTraversalTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true true $(IntDir)DOMTraversalTest.pch $(IntDir) $(IntDir) $(IntDir)DOMTraversalTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMTraversalTest.pdb Console false X64 $(OutDir)DOMTraversalTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true true $(IntDir)DOMTraversalTest.pch $(IntDir) $(IntDir) $(IntDir)DOMTraversalTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMTraversalTest.pdb Console false MachineX64 $(OutDir)DOMTraversalTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug true $(IntDir)DOMTraversalTest.pch $(IntDir) $(IntDir) $(IntDir)DOMTraversalTest_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMTraversalTest.pdb Console false X64 $(OutDir)DOMTraversalTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug true $(IntDir)DOMTraversalTest.pch $(IntDir) $(IntDir) $(IntDir)DOMTraversalTest_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMTraversalTest.pdb Console false MachineX64 $(OutDir)DOMTraversalTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)DOMTraversalTest.pch $(IntDir) $(IntDir) $(IntDir)DOMTraversalTest_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMTraversalTest.pdb Console false X64 $(OutDir)DOMTraversalTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)DOMTraversalTest.pch $(IntDir) $(IntDir) $(IntDir)DOMTraversalTest_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMTraversalTest.pdb Console false MachineX64 $(OutDir)DOMTraversalTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)DOMTraversalTest.pch $(IntDir) $(IntDir) $(IntDir)DOMTraversalTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMTraversalTest.pdb Console false X64 $(OutDir)DOMTraversalTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)DOMTraversalTest.pch $(IntDir) $(IntDir) $(IntDir)DOMTraversalTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMTraversalTest.pdb Console false MachineX64 {152ce948-f659-4206-a50a-1d2b9658ef96} false xerces-c-3.1.1/projects/Win32/VC10/xerces-all/DOMTraversalTest/DOMTraversalTest.vcxproj.filters0000644000175000017500000000166011362112176031103 0ustar borisboris {b02a1aee-e37c-4499-a833-6857288f1336} cpp;c;cxx;rc;def;r;odl;idl;hpj;bat {ec84002f-0e6c-4593-a8e4-0d2753e502b5} h;hpp;hxx;hm;inl {947ffe70-0641-479b-9abc-c354f42fd24c} ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe Source Files xerces-c-3.1.1/projects/Win32/VC10/xerces-all/MemParse/0000755000175000017500000000000011363617265021231 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC10/xerces-all/MemParse/MemParse.vcxproj0000644000175000017500000011137711363050663024362 0ustar borisboris Debug Win32 Debug x64 ICU Debug Win32 ICU Debug x64 ICU Release Win32 ICU Release x64 Release Win32 Release x64 Static Debug Win32 Static Debug x64 Static Release Win32 Static Release x64 {6F412978-851F-494D-8C3D-DF97A515EDF5} Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false <_ProjectFileVersion>10.0.30319.1 .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false $(OutDir)MemParse.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)MemParse.pch $(IntDir) $(IntDir) $(IntDir)MemParse_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)MemParse.pdb Console false X64 $(OutDir)MemParse.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)MemParse.pch $(IntDir) $(IntDir) $(IntDir)MemParse_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)MemParse.pdb Console false MachineX64 $(OutDir)MemParse.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)MemParse.pch $(IntDir) $(IntDir) $(IntDir)MemParse_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)MemParse.pdb Console false X64 $(OutDir)MemParse.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)MemParse.pch $(IntDir) $(IntDir) $(IntDir)MemParse_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)MemParse.pdb Console false MachineX64 $(OutDir)MemParse.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true true $(IntDir)MemParse.pch $(IntDir) $(IntDir) $(IntDir)MemParse_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)MemParse.pdb Console false X64 $(OutDir)MemParse.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true true $(IntDir)MemParse.pch $(IntDir) $(IntDir) $(IntDir)MemParse_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)MemParse.pdb Console false MachineX64 $(OutDir)MemParse.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) MultiThreadedDebug true $(IntDir)MemParse.pch $(IntDir) $(IntDir) $(IntDir)MemParse_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)MemParse.pdb Console false X64 $(OutDir)MemParse.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) MultiThreadedDebug true $(IntDir)MemParse.pch $(IntDir) $(IntDir) $(IntDir)MemParse_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)MemParse.pdb Console false MachineX64 $(OutDir)MemParse.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)MemParse.pch $(IntDir) $(IntDir) $(IntDir)MemParse_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)MemParse.pdb Console false X64 $(OutDir)MemParse.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)MemParse.pch $(IntDir) $(IntDir) $(IntDir)MemParse_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)MemParse.pdb Console false MachineX64 $(OutDir)MemParse.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)MemParse.pch $(IntDir) $(IntDir) $(IntDir)MemParse_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)MemParse.pdb Console false X64 $(OutDir)MemParse.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)MemParse.pch $(IntDir) $(IntDir) $(IntDir)MemParse_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)MemParse.pdb Console false MachineX64 {152ce948-f659-4206-a50a-1d2b9658ef96} false xerces-c-3.1.1/projects/Win32/VC10/xerces-all/DOMMemTest/0000755000175000017500000000000011363617267021440 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC10/xerces-all/DOMMemTest/DOMMemTest.vcxproj0000644000175000017500000011142511363050663024766 0ustar borisboris Debug Win32 Debug x64 ICU Debug Win32 ICU Debug x64 ICU Release Win32 ICU Release x64 Release Win32 Release x64 Static Debug Win32 Static Debug x64 Static Release Win32 Static Release x64 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2} DOMMemTest Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false <_ProjectFileVersion>10.0.30319.1 .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false $(OutDir)DOMMemTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)DOMMemTest.pch $(IntDir) $(IntDir) $(IntDir)DOMMemTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMMemTest.pdb Console false X64 $(OutDir)DOMMemTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)DOMMemTest.pch $(IntDir) $(IntDir) $(IntDir)DOMMemTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMMemTest.pdb Console false MachineX64 $(OutDir)DOMMemTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)DOMMemTest.pch $(IntDir) $(IntDir) $(IntDir)DOMMemTest_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMMemTest.pdb Console false X64 $(OutDir)DOMMemTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)DOMMemTest.pch $(IntDir) $(IntDir) $(IntDir)DOMMemTest_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMMemTest.pdb Console false MachineX64 $(OutDir)DOMMemTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true $(IntDir)DOMMemTest.pch $(IntDir) $(IntDir) $(IntDir)DOMMemTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMMemTest.pdb Console false X64 $(OutDir)DOMMemTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true $(IntDir)DOMMemTest.pch $(IntDir) $(IntDir) $(IntDir)DOMMemTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMMemTest.pdb Console false MachineX64 $(OutDir)DOMMemTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug true $(IntDir)DOMMemTest.pch $(IntDir) $(IntDir) $(IntDir)DOMMemTest_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMMemTest.pdb Console false X64 $(OutDir)DOMMemTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug true $(IntDir)DOMMemTest.pch $(IntDir) $(IntDir) $(IntDir)DOMMemTest_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMMemTest.pdb Console false MachineX64 $(OutDir)DOMMemTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)DOMMemTest.pch $(IntDir) $(IntDir) $(IntDir)DOMMemTest_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMMemTest.pdb Console false X64 $(OutDir)DOMMemTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)DOMMemTest.pch $(IntDir) $(IntDir) $(IntDir)DOMMemTest_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMMemTest.pdb Console false MachineX64 $(OutDir)DOMMemTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)DOMMemTest.pch $(IntDir) $(IntDir) $(IntDir)DOMMemTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMMemTest.pdb Console false X64 $(OutDir)DOMMemTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)DOMMemTest.pch $(IntDir) $(IntDir) $(IntDir)DOMMemTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMMemTest.pdb Console false MachineX64 {152ce948-f659-4206-a50a-1d2b9658ef96} false xerces-c-3.1.1/projects/Win32/VC10/xerces-all/DOMMemTest/DOMMemTest.vcxproj.filters0000644000175000017500000000166211362112176026433 0ustar borisboris {06680edb-41d3-4426-b99c-2a6b36aa4202} cpp;c;cxx;rc;def;r;odl;idl;hpj;bat {18f2987b-7238-4500-a6ab-9fa37f881420} h;hpp;hxx;hm;inl {aa86de01-131a-4743-9cba-c7cf56cf9ab2} ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe Source Files xerces-c-3.1.1/projects/Win32/VC10/xerces-all/XSValueTest/0000755000175000017500000000000011363617264021706 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC10/xerces-all/XSValueTest/XSValueTest.vcxproj.filters0000644000175000017500000000212611362112176027151 0ustar borisboris {f0f628c6-d476-4229-b563-5f24ee74dbeb} cpp;c;cxx;rc;def;r;odl;idl;hpj;bat {d480a689-ebb6-4dc2-a49f-f55e6ef686a5} h;hpp;hxx;hm;inl {5de87190-342b-4d5e-aab0-35f685bb4797} ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe Source Files Header Files xerces-c-3.1.1/projects/Win32/VC10/xerces-all/XSValueTest/XSValueTest.vcxproj0000644000175000017500000011051511363050663025507 0ustar borisboris Debug Win32 Debug x64 ICU Debug Win32 ICU Debug x64 ICU Release Win32 ICU Release x64 Release Win32 Release x64 Static Debug Win32 Static Debug x64 Static Release Win32 Static Release x64 {D3552FBC-8618-43C5-86C0-237536D8E700} Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false <_ProjectFileVersion>10.0.30319.1 .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false $(OutDir)XSValueTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true $(IntDir)XSValueTest.pch $(IntDir) $(IntDir) $(IntDir)XSValueTest_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)XSValueTest.pdb Console false X64 $(OutDir)XSValueTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true $(IntDir)XSValueTest.pch $(IntDir) $(IntDir) $(IntDir)XSValueTest_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)XSValueTest.pdb Console false MachineX64 $(OutDir)XSValueTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)XSValueTest.pch $(IntDir) $(IntDir) $(IntDir)XSValueTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)XSValueTest.pdb Console false X64 $(OutDir)XSValueTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)XSValueTest.pch $(IntDir) $(IntDir) $(IntDir)XSValueTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)XSValueTest.pdb Console false MachineX64 $(OutDir)XSValueTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug $(IntDir)XSValueTest.pch $(IntDir) $(IntDir) $(IntDir)XSValueTest_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)XSValueTest.pdb Console false X64 $(OutDir)XSValueTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug $(IntDir)XSValueTest.pch $(IntDir) $(IntDir) $(IntDir)XSValueTest_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)XSValueTest.pdb Console false MachineX64 $(OutDir)XSValueTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true $(IntDir)XSValueTest.pch $(IntDir) $(IntDir) $(IntDir)XSValueTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)XSValueTest.pdb Console false X64 $(OutDir)XSValueTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true $(IntDir)XSValueTest.pch $(IntDir) $(IntDir) $(IntDir)XSValueTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)XSValueTest.pdb Console false MachineX64 $(OutDir)XSValueTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true $(IntDir)XSValueTest.pch $(IntDir) $(IntDir) $(IntDir)XSValueTest_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)XSValueTest.pdb Console false X64 $(OutDir)XSValueTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true $(IntDir)XSValueTest.pch $(IntDir) $(IntDir) $(IntDir)XSValueTest_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)XSValueTest.pdb Console false MachineX64 $(OutDir)XSValueTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)XSValueTest.pch $(IntDir) $(IntDir) $(IntDir)XSValueTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)XSValueTest.pdb Console false X64 $(OutDir)XSValueTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)XSValueTest.pch $(IntDir) $(IntDir) $(IntDir)XSValueTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)XSValueTest.pdb Console false MachineX64 {152ce948-f659-4206-a50a-1d2b9658ef96} false xerces-c-3.1.1/projects/Win32/VC10/xerces-all/RangeTest/0000755000175000017500000000000011363617266021415 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC10/xerces-all/RangeTest/RangeTest.vcxproj0000644000175000017500000011103211363050663024714 0ustar borisboris Debug Win32 Debug x64 ICU Debug Win32 ICU Debug x64 ICU Release Win32 ICU Release x64 Release Win32 Release x64 Static Debug Win32 Static Debug x64 Static Release Win32 Static Release x64 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2} Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false <_ProjectFileVersion>10.0.30319.1 .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false $(OutDir)RangeTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CONSOLE;WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)RangeTest.pch $(IntDir) $(IntDir) $(IntDir)RangeTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)RangeTest.pdb Console false X64 $(OutDir)RangeTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CONSOLE;WIN64;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)RangeTest.pch $(IntDir) $(IntDir) $(IntDir)RangeTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)RangeTest.pdb Console false MachineX64 $(OutDir)RangeTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CONSOLE;WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)RangeTest.pch $(IntDir) $(IntDir) $(IntDir)RangeTest_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)RangeTest.pdb Console false X64 $(OutDir)RangeTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CONSOLE;WIN64;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)RangeTest.pch $(IntDir) $(IntDir) $(IntDir)RangeTest_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)RangeTest.pdb Console false MachineX64 $(OutDir)RangeTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CONSOLE;WIN32;NDEBUG;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true true $(IntDir)RangeTest.pch $(IntDir) $(IntDir) $(IntDir)RangeTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)RangeTest.pdb Console false X64 $(OutDir)RangeTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CONSOLE;WIN64;NDEBUG;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true true $(IntDir)RangeTest.pch $(IntDir) $(IntDir) $(IntDir)RangeTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)RangeTest.pdb Console false MachineX64 $(OutDir)RangeTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CONSOLE;WIN32;_DEBUG;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) MultiThreadedDebug true $(IntDir)RangeTest.pch $(IntDir) $(IntDir) $(IntDir)RangeTest_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)RangeTest.pdb Console false X64 $(OutDir)RangeTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CONSOLE;WIN64;_DEBUG;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) MultiThreadedDebug true $(IntDir)RangeTest.pch $(IntDir) $(IntDir) $(IntDir)RangeTest_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)RangeTest.pdb Console false MachineX64 $(OutDir)RangeTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CONSOLE;WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)RangeTest.pch $(IntDir) $(IntDir) $(IntDir)RangeTest_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)RangeTest.pdb Console false X64 $(OutDir)RangeTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CONSOLE;WIN64;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)RangeTest.pch $(IntDir) $(IntDir) $(IntDir)RangeTest_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)RangeTest.pdb Console false MachineX64 $(OutDir)RangeTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CONSOLE;WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)RangeTest.pch $(IntDir) $(IntDir) $(IntDir)RangeTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)RangeTest.pdb Console false X64 $(OutDir)RangeTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CONSOLE;WIN64;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)RangeTest.pch $(IntDir) $(IntDir) $(IntDir)RangeTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)RangeTest.pdb Console false MachineX64 {152ce948-f659-4206-a50a-1d2b9658ef96} false xerces-c-3.1.1/projects/Win32/VC10/xerces-all/Redirect/0000755000175000017500000000000011363617265021261 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC10/xerces-all/Redirect/Redirect.vcxproj0000644000175000017500000011145111363050663024433 0ustar borisboris Debug Win32 Debug x64 ICU Debug Win32 ICU Debug x64 ICU Release Win32 ICU Release x64 Release Win32 Release x64 Static Debug Win32 Static Debug x64 Static Release Win32 Static Release x64 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75} Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false <_ProjectFileVersion>10.0.30319.1 .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false $(OutDir)Redirect.tlb OnlyExplicitInline ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)Redirect.pch $(IntDir) $(IntDir) $(IntDir)Redirect_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)Redirect.pdb Console false X64 $(OutDir)Redirect.tlb OnlyExplicitInline ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)Redirect.pch $(IntDir) $(IntDir) $(IntDir)Redirect_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)Redirect.pdb Console false MachineX64 $(OutDir)Redirect.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)Redirect.pch $(IntDir) $(IntDir) $(IntDir)Redirect_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)Redirect.pdb Console false X64 $(OutDir)Redirect.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)Redirect.pch $(IntDir) $(IntDir) $(IntDir)Redirect_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)Redirect.pdb Console false MachineX64 $(OutDir)Redirect.tlb OnlyExplicitInline ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true true $(IntDir)Redirect.pch $(IntDir) $(IntDir) $(IntDir)Redirect_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)Redirect.pdb Console false X64 $(OutDir)Redirect.tlb OnlyExplicitInline ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true true $(IntDir)Redirect.pch $(IntDir) $(IntDir) $(IntDir)Redirect_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)Redirect.pdb Console false MachineX64 $(OutDir)Redirect.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) MultiThreadedDebug true $(IntDir)Redirect.pch $(IntDir) $(IntDir) $(IntDir)Redirect_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)Redirect.pdb Console false X64 $(OutDir)Redirect.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) MultiThreadedDebug true $(IntDir)Redirect.pch $(IntDir) $(IntDir) $(IntDir)Redirect_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)Redirect.pdb Console false MachineX64 $(OutDir)Redirect.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)Redirect.pch $(IntDir) $(IntDir) $(IntDir)Redirect_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)Redirect.pdb Console false X64 $(OutDir)Redirect.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)Redirect.pch $(IntDir) $(IntDir) $(IntDir)Redirect_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)Redirect.pdb Console false MachineX64 $(OutDir)Redirect.tlb OnlyExplicitInline ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)Redirect.pch $(IntDir) $(IntDir) $(IntDir)Redirect_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)Redirect.pdb Console false X64 $(OutDir)Redirect.tlb OnlyExplicitInline ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)Redirect.pch $(IntDir) $(IntDir) $(IntDir)Redirect_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)Redirect.pdb Console false MachineX64 {152ce948-f659-4206-a50a-1d2b9658ef96} false xerces-c-3.1.1/projects/Win32/VC10/xerces-all/PSVIWriter/0000755000175000017500000000000011363617265021476 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC10/xerces-all/PSVIWriter/PSVIWriter.vcxproj0000644000175000017500000011212311363050663025062 0ustar borisboris Debug Win32 Debug x64 ICU Debug Win32 ICU Debug x64 ICU Release Win32 ICU Release x64 Release Win32 Release x64 Static Debug Win32 Static Debug x64 Static Release Win32 Static Release x64 {FB7E86DB-9557-4044-8FF7-A9131BB021E6} Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false <_ProjectFileVersion>10.0.30319.1 .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false $(OutDir)PSVIWriter.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)PSVIWriter.pch $(IntDir) $(IntDir) $(IntDir)PSVIWriter_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)PSVIWriter.pdb Console false X64 $(OutDir)PSVIWriter.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)PSVIWriter.pch $(IntDir) $(IntDir) $(IntDir)PSVIWriter_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)PSVIWriter.pdb Console false MachineX64 $(OutDir)PSVIWriter.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_CONSOLE;_DEBUG;WIN32;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)PSVIWriter.pch $(IntDir) $(IntDir) $(IntDir)PSVIWriter_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)PSVIWriter.pdb Console false X64 $(OutDir)PSVIWriter.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_CONSOLE;_DEBUG;WIN64;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)PSVIWriter.pch $(IntDir) $(IntDir) $(IntDir)PSVIWriter_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)PSVIWriter.pdb Console false MachineX64 $(OutDir)PSVIWriter.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true $(IntDir)PSVIWriter.pch $(IntDir) $(IntDir) $(IntDir)PSVIWriter_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)PSVIWriter.pdb Console false X64 $(OutDir)PSVIWriter.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true $(IntDir)PSVIWriter.pch $(IntDir) $(IntDir) $(IntDir)PSVIWriter_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)PSVIWriter.pdb Console false MachineX64 $(OutDir)PSVIWriter.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_CONSOLE;_DEBUG;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) MultiThreadedDebug true $(IntDir)PSVIWriter.pch $(IntDir) $(IntDir) $(IntDir)PSVIWriter_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)PSVIWriter.pdb Console false X64 $(OutDir)PSVIWriter.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_CONSOLE;_DEBUG;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) MultiThreadedDebug true $(IntDir)PSVIWriter.pch $(IntDir) $(IntDir) $(IntDir)PSVIWriter_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)PSVIWriter.pdb Console false MachineX64 $(OutDir)PSVIWriter.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_CONSOLE;_DEBUG;WIN32;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)PSVIWriter.pch $(IntDir) $(IntDir) $(IntDir)PSVIWriter_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)PSVIWriter.pdb Console false X64 $(OutDir)PSVIWriter.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_CONSOLE;_DEBUG;WIN64;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)PSVIWriter.pch $(IntDir) $(IntDir) $(IntDir)PSVIWriter_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)PSVIWriter.pdb Console false MachineX64 $(OutDir)PSVIWriter.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)PSVIWriter.pch $(IntDir) $(IntDir) $(IntDir)PSVIWriter_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)PSVIWriter.pdb Console false X64 $(OutDir)PSVIWriter.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)PSVIWriter.pch $(IntDir) $(IntDir) $(IntDir)PSVIWriter_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)PSVIWriter.pdb Console false MachineX64 {152ce948-f659-4206-a50a-1d2b9658ef96} false xerces-c-3.1.1/projects/Win32/VC10/xerces-all/PParse/0000755000175000017500000000000011363617264020711 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC10/xerces-all/PParse/PParse.vcxproj0000644000175000017500000011202511363050663023513 0ustar borisboris Debug Win32 Debug x64 ICU Debug Win32 ICU Debug x64 ICU Release Win32 ICU Release x64 Release Win32 Release x64 Static Debug Win32 Static Debug x64 Static Release Win32 Static Release x64 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD} Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false <_ProjectFileVersion>10.0.30319.1 .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false $(OutDir)PParse.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)PParse.pch $(IntDir) $(IntDir) $(IntDir)PParse_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)PParse.pdb Console false X64 $(OutDir)PParse.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)PParse.pch $(IntDir) $(IntDir) $(IntDir)PParse_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)PParse.pdb Console false MachineX64 $(OutDir)PParse.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)PParse.pch $(IntDir) $(IntDir) $(IntDir)PParse_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)PParse.pdb Console false X64 $(OutDir)PParse.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)PParse.pch $(IntDir) $(IntDir) $(IntDir)PParse_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)PParse.pdb Console false MachineX64 $(OutDir)PParse.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true true $(IntDir)PParse.pch $(IntDir) $(IntDir) $(IntDir)PParse_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)PParse.pdb Console false X64 $(OutDir)PParse.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true true $(IntDir)PParse.pch $(IntDir) $(IntDir) $(IntDir)PParse_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)PParse.pdb Console false MachineX64 $(OutDir)PParse.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug true $(IntDir)PParse.pch $(IntDir) $(IntDir) $(IntDir)PParse_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)PParse.pdb Console false X64 $(OutDir)PParse.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug true $(IntDir)PParse.pch $(IntDir) $(IntDir) $(IntDir)PParse_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)PParse.pdb Console false MachineX64 $(OutDir)PParse.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)PParse.pch $(IntDir) $(IntDir) $(IntDir)PParse_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)PParse.pdb Console false X64 $(OutDir)PParse.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)PParse.pch $(IntDir) $(IntDir) $(IntDir)PParse_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)PParse.pdb Console false MachineX64 $(OutDir)PParse.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)PParse.pch $(IntDir) $(IntDir) $(IntDir)PParse_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)PParse.pdb Console false X64 $(OutDir)PParse.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)PParse.pch $(IntDir) $(IntDir) $(IntDir)PParse_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)PParse.pdb Console false MachineX64 {152ce948-f659-4206-a50a-1d2b9658ef96} false xerces-c-3.1.1/projects/Win32/VC10/xerces-all/PParse/PParse.vcxproj.filters0000644000175000017500000000252411362112176025161 0ustar borisboris {534a4347-7c0e-457f-9b8f-f85c27ef84c3} cpp;c;cxx;rc;def;r;odl;idl;hpj;bat {9c6cd04b-247d-4571-b765-ded95c8dcc58} h;hpp;hxx;hm;inl {1d8c7aa2-c03c-43d0-81ee-b07acf13e086} ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe Source Files Source Files Header Files Header Files xerces-c-3.1.1/projects/Win32/VC10/xerces-all/MemHandlerTest/0000755000175000017500000000000011363617265022374 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC10/xerces-all/MemHandlerTest/MemHandlerTest.vcxproj0000644000175000017500000011225311363050663026662 0ustar borisboris Debug Win32 Debug x64 ICU Debug Win32 ICU Debug x64 ICU Release Win32 ICU Release x64 Release Win32 Release x64 Static Debug Win32 Static Debug x64 Static Release Win32 Static Release x64 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D} Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false <_ProjectFileVersion>10.0.30319.1 .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false $(OutDir)MemHandlerTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)MemHandlerTest.pch $(IntDir) $(IntDir) $(IntDir)MemHandlerTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)MemHandlerTest.pdb Console false X64 $(OutDir)MemHandlerTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)MemHandlerTest.pch $(IntDir) $(IntDir) $(IntDir)MemHandlerTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)MemHandlerTest.pdb Console false MachineX64 $(OutDir)MemHandlerTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)MemHandlerTest.pch $(IntDir) $(IntDir) $(IntDir)MemHandlerTest_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)MemHandlerTest.pdb Console false X64 $(OutDir)MemHandlerTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)MemHandlerTest.pch $(IntDir) $(IntDir) $(IntDir)MemHandlerTest_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)MemHandlerTest.pdb Console false MachineX64 $(OutDir)MemHandlerTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true $(IntDir)MemHandlerTest.pch $(IntDir) $(IntDir) $(IntDir)MemHandlerTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)MemHandlerTest.pdb Console false X64 $(OutDir)MemHandlerTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true $(IntDir)MemHandlerTest.pch $(IntDir) $(IntDir) $(IntDir)MemHandlerTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)MemHandlerTest.pdb Console false MachineX64 $(OutDir)MemHandlerTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug true $(IntDir)MemHandlerTest.pch $(IntDir) $(IntDir) $(IntDir)MemHandlerTest_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)MemHandlerTest.pdb Console false X64 $(OutDir)MemHandlerTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug true $(IntDir)MemHandlerTest.pch $(IntDir) $(IntDir) $(IntDir)MemHandlerTest_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)MemHandlerTest.pdb Console false MachineX64 $(OutDir)MemHandlerTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)MemHandlerTest.pch $(IntDir) $(IntDir) $(IntDir)MemHandlerTest_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)MemHandlerTest.pdb Console false X64 $(OutDir)MemHandlerTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)MemHandlerTest.pch $(IntDir) $(IntDir) $(IntDir)MemHandlerTest_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)MemHandlerTest.pdb Console false MachineX64 $(OutDir)MemHandlerTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)MemHandlerTest.pch $(IntDir) $(IntDir) $(IntDir)MemHandlerTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)MemHandlerTest.pdb Console false X64 $(OutDir)MemHandlerTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)MemHandlerTest.pch $(IntDir) $(IntDir) $(IntDir)MemHandlerTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)MemHandlerTest.pdb Console false MachineX64 {152ce948-f659-4206-a50a-1d2b9658ef96} false xerces-c-3.1.1/projects/Win32/VC10/xerces-all/MemHandlerTest/MemHandlerTest.vcxproj.filters0000644000175000017500000000236511362112176030330 0ustar borisboris {03926b53-7690-42f4-828d-be4895c8931f} cpp;c;cxx;rc;def;r;odl;idl;hpj;bat {93fee606-5e24-4c44-9275-acb9da754c16} h;hpp;hxx;hm;inl {97bef6ef-467c-41b1-84d5-37411ab60903} ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe Source Files Header Files Header Files xerces-c-3.1.1/projects/Win32/VC10/xerces-all/InitTermTest/0000755000175000017500000000000011363617266022114 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC10/xerces-all/InitTermTest/InitTermTest.vcxproj.filters0000644000175000017500000000213211362112176027556 0ustar borisboris {eb3b9c05-9392-4868-af50-f443b502b81a} cpp;c;cxx;rc;def;r;odl;idl;hpj;bat {356dba50-85b5-4256-a61e-450141c398c5} h;hpp;hxx;hm;inl {169bfa2e-da30-41da-af98-ca3405bd6346} ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe Source Files Header Files xerces-c-3.1.1/projects/Win32/VC10/xerces-all/InitTermTest/InitTermTest.vcxproj0000644000175000017500000011142311363050663026116 0ustar borisboris Debug Win32 Debug x64 ICU Debug Win32 ICU Debug x64 ICU Release Win32 ICU Release x64 Release Win32 Release x64 Static Debug Win32 Static Debug x64 Static Release Win32 Static Release x64 {2682B2AB-E341-4528-85AB-BE95DE77A9BC} Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false <_ProjectFileVersion>10.0.30319.1 .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false $(OutDir)InitTermTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)InitTermTest.pch $(IntDir) $(IntDir) $(IntDir)InitTermTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)InitTermTest.pdb Console false X64 $(OutDir)InitTermTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)InitTermTest.pch $(IntDir) $(IntDir) $(IntDir)InitTermTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)InitTermTest.pdb Console false MachineX64 $(OutDir)InitTermTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)InitTermTest.pch $(IntDir) $(IntDir) $(IntDir)InitTermTest_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)InitTermTest.pdb Console false X64 $(OutDir)InitTermTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)InitTermTest.pch $(IntDir) $(IntDir) $(IntDir)InitTermTest_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)InitTermTest.pdb Console false MachineX64 $(OutDir)InitTermTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true $(IntDir)InitTermTest.pch $(IntDir) $(IntDir) $(IntDir)InitTermTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)InitTermTest.pdb Console false X64 $(OutDir)InitTermTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true $(IntDir)InitTermTest.pch $(IntDir) $(IntDir) $(IntDir)InitTermTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)InitTermTest.pdb Console false MachineX64 $(OutDir)InitTermTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug true $(IntDir)InitTermTest.pch $(IntDir) $(IntDir) $(IntDir)InitTermTest_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)InitTermTest.pdb Console false X64 $(OutDir)InitTermTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug true $(IntDir)InitTermTest.pch $(IntDir) $(IntDir) $(IntDir)InitTermTest_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)InitTermTest.pdb Console false MachineX64 $(OutDir)InitTermTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)InitTermTest.pch $(IntDir) $(IntDir) $(IntDir)InitTermTest_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)InitTermTest.pdb Console false X64 $(OutDir)InitTermTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)InitTermTest.pch $(IntDir) $(IntDir) $(IntDir)InitTermTest_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)InitTermTest.pdb Console false MachineX64 $(OutDir)InitTermTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)InitTermTest.pch $(IntDir) $(IntDir) $(IntDir)InitTermTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)InitTermTest.pdb Console false X64 $(OutDir)InitTermTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)InitTermTest.pch $(IntDir) $(IntDir) $(IntDir)InitTermTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)InitTermTest.pdb Console false MachineX64 {152ce948-f659-4206-a50a-1d2b9658ef96} false xerces-c-3.1.1/projects/Win32/VC10/xerces-all/CreateDOMDocument/0000755000175000017500000000000011363617265022762 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC10/xerces-all/CreateDOMDocument/CreateDOMDocument.vcxproj0000644000175000017500000011153011363050663027633 0ustar borisboris Debug Win32 Debug x64 ICU Debug Win32 ICU Debug x64 ICU Release Win32 ICU Release x64 Release Win32 Release x64 Static Debug Win32 Static Debug x64 Static Release Win32 Static Release x64 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F} CreateDOMDocument Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false <_ProjectFileVersion>10.0.30319.1 .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false $(OutDir)CreateDOMDocument.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CONSOLE;WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)CreateDOMDocument.pch $(IntDir) $(IntDir) $(IntDir)CreateDOMDocument_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)CreateDOMDocument.pdb Console false X64 $(OutDir)CreateDOMDocument.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CONSOLE;WIN64;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)CreateDOMDocument.pch $(IntDir) $(IntDir) $(IntDir)CreateDOMDocument_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)CreateDOMDocument.pdb Console false MachineX64 $(OutDir)CreateDOMDocument.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CONSOLE;WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)CreateDOMDocument.pch $(IntDir) $(IntDir) $(IntDir)CreateDOMDocument_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)CreateDOMDocument.pdb Console false X64 $(OutDir)CreateDOMDocument.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CONSOLE;WIN64;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)CreateDOMDocument.pch $(IntDir) $(IntDir) $(IntDir)CreateDOMDocument_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)CreateDOMDocument.pdb Console false MachineX64 $(OutDir)CreateDOMDocument.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CONSOLE;WIN32;NDEBUG;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true true $(IntDir)CreateDOMDocument.pch $(IntDir) $(IntDir) $(IntDir)CreateDOMDocument_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)CreateDOMDocument.pdb Console false X64 $(OutDir)CreateDOMDocument.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CONSOLE;WIN64;NDEBUG;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true true $(IntDir)CreateDOMDocument.pch $(IntDir) $(IntDir) $(IntDir)CreateDOMDocument_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)CreateDOMDocument.pdb Console false MachineX64 $(OutDir)CreateDOMDocument.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CONSOLE;WIN32;_DEBUG;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) MultiThreadedDebug true $(IntDir)CreateDOMDocument.pch $(IntDir) $(IntDir) $(IntDir)CreateDOMDocument_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)CreateDOMDocument.pdb Console false X64 $(OutDir)CreateDOMDocument.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CONSOLE;WIN64;_DEBUG;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) MultiThreadedDebug true $(IntDir)CreateDOMDocument.pch $(IntDir) $(IntDir) $(IntDir)CreateDOMDocument_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)CreateDOMDocument.pdb Console false MachineX64 $(OutDir)CreateDOMDocument.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CONSOLE;WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)CreateDOMDocument.pch $(IntDir) $(IntDir) $(IntDir)CreateDOMDocument_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)CreateDOMDocument.pdb Console false X64 $(OutDir)CreateDOMDocument.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CONSOLE;WIN64;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)CreateDOMDocument.pch $(IntDir) $(IntDir) $(IntDir)CreateDOMDocument_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)CreateDOMDocument.pdb Console false MachineX64 $(OutDir)CreateDOMDocument.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CONSOLE;WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)CreateDOMDocument.pch $(IntDir) $(IntDir) $(IntDir)CreateDOMDocument_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)CreateDOMDocument.pdb Console false X64 $(OutDir)CreateDOMDocument.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CONSOLE;WIN64;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)CreateDOMDocument.pch $(IntDir) $(IntDir) $(IntDir)CreateDOMDocument_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)CreateDOMDocument.pdb Console false MachineX64 {152ce948-f659-4206-a50a-1d2b9658ef96} false xerces-c-3.1.1/projects/Win32/VC10/xerces-all/ThreadTest/0000755000175000017500000000000011363617267021571 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC10/xerces-all/ThreadTest/ThreadTest.vcxproj0000644000175000017500000011072611363050663025253 0ustar borisboris Debug Win32 Debug x64 ICU Debug Win32 ICU Debug x64 ICU Release Win32 ICU Release x64 Release Win32 Release x64 Static Debug Win32 Static Debug x64 Static Release Win32 Static Release x64 {792C0625-DE93-4756-AAFA-23CCED2157B0} Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false <_ProjectFileVersion>10.0.30319.1 .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false $(OutDir)ThreadTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)ThreadTest.pch $(IntDir) $(IntDir) $(IntDir)ThreadTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)ThreadTest.pdb Console false X64 $(OutDir)ThreadTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)ThreadTest.pch $(IntDir) $(IntDir) $(IntDir)ThreadTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)ThreadTest.pdb Console false MachineX64 $(OutDir)ThreadTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true $(IntDir)ThreadTest.pch $(IntDir) $(IntDir) $(IntDir)ThreadTest_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)ThreadTest.pdb Console false X64 $(OutDir)ThreadTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true $(IntDir)ThreadTest.pch $(IntDir) $(IntDir) $(IntDir)ThreadTest_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)ThreadTest.pdb Console false MachineX64 $(OutDir)ThreadTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true $(IntDir)ThreadTest.pch $(IntDir) $(IntDir) $(IntDir)ThreadTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)ThreadTest.pdb Console false X64 $(OutDir)ThreadTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true $(IntDir)ThreadTest.pch $(IntDir) $(IntDir) $(IntDir)ThreadTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)ThreadTest.pdb Console false MachineX64 $(OutDir)ThreadTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug $(IntDir)ThreadTest.pch $(IntDir) $(IntDir) $(IntDir)ThreadTest_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)ThreadTest.pdb Console false X64 $(OutDir)ThreadTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug $(IntDir)ThreadTest.pch $(IntDir) $(IntDir) $(IntDir)ThreadTest_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)ThreadTest.pdb Console false MachineX64 $(OutDir)ThreadTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true $(IntDir)ThreadTest.pch $(IntDir) $(IntDir) $(IntDir)ThreadTest_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)ThreadTest.pdb Console false X64 $(OutDir)ThreadTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true $(IntDir)ThreadTest.pch $(IntDir) $(IntDir) $(IntDir)ThreadTest_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)ThreadTest.pdb Console false MachineX64 $(OutDir)ThreadTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)ThreadTest.pch $(IntDir) $(IntDir) $(IntDir)ThreadTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)ThreadTest.pdb Console false X64 $(OutDir)ThreadTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)ThreadTest.pch $(IntDir) $(IntDir) $(IntDir)ThreadTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)ThreadTest.pdb Console false MachineX64 {152ce948-f659-4206-a50a-1d2b9658ef96} false xerces-c-3.1.1/projects/Win32/VC10/xerces-all/ThreadTest/ThreadTest.vcxproj.filters0000644000175000017500000000165611362112176026720 0ustar borisboris {a41d9c6f-634d-4b43-af47-037787ebac49} cpp;c;cxx;rc;def;r;odl;idl;hpj;bat {801ccf5d-8db6-4429-b2f4-5fb169c4f7b0} h;hpp;hxx;hm;inl {a985b9ac-80ad-4528-8abf-3a076602e520} ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe Source Files xerces-c-3.1.1/projects/Win32/VC10/xerces-all/XSerializerTest/0000755000175000017500000000000011363617266022622 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC10/xerces-all/XSerializerTest/XSerializerTest.vcxproj0000644000175000017500000011200511363050663027327 0ustar borisboris Debug Win32 Debug x64 ICU Debug Win32 ICU Debug x64 ICU Release Win32 ICU Release x64 Release Win32 Release x64 Static Debug Win32 Static Debug x64 Static Release Win32 Static Release x64 {4D8FEA60-A74F-4267-852F-C421AF12198D} Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false <_ProjectFileVersion>10.0.30319.1 .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false $(OutDir)XSerializerTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)XSerializerTest.pch $(IntDir) $(IntDir) $(IntDir)XSerializerTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)XSerializerTest.pdb Console false X64 $(OutDir)XSerializerTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)XSerializerTest.pch $(IntDir) $(IntDir) $(IntDir)XSerializerTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)XSerializerTest.pdb Console false MachineX64 $(OutDir)XSerializerTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true $(IntDir)XSerializerTest.pch $(IntDir) $(IntDir) $(IntDir)XSerializerTest_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)XSerializerTest.pdb Console false X64 $(OutDir)XSerializerTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true $(IntDir)XSerializerTest.pch $(IntDir) $(IntDir) $(IntDir)XSerializerTest_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)XSerializerTest.pdb Console false MachineX64 $(OutDir)XSerializerTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true $(IntDir)XSerializerTest.pch $(IntDir) $(IntDir) $(IntDir)XSerializerTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)XSerializerTest.pdb Console false X64 $(OutDir)XSerializerTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true $(IntDir)XSerializerTest.pch $(IntDir) $(IntDir) $(IntDir)XSerializerTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)XSerializerTest.pdb Console false MachineX64 $(OutDir)XSerializerTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug $(IntDir)XSerializerTest.pch $(IntDir) $(IntDir) $(IntDir)XSerializerTest_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)XSerializerTest.pdb Console false X64 $(OutDir)XSerializerTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug $(IntDir)XSerializerTest.pch $(IntDir) $(IntDir) $(IntDir)XSerializerTest_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)XSerializerTest.pdb Console false MachineX64 $(OutDir)XSerializerTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true $(IntDir)XSerializerTest.pch $(IntDir) $(IntDir) $(IntDir)XSerializerTest_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)XSerializerTest.pdb Console false X64 $(OutDir)XSerializerTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true $(IntDir)XSerializerTest.pch $(IntDir) $(IntDir) $(IntDir)XSerializerTest_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)XSerializerTest.pdb Console false MachineX64 $(OutDir)XSerializerTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)XSerializerTest.pch $(IntDir) $(IntDir) $(IntDir)XSerializerTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)XSerializerTest.pdb Console false X64 $(OutDir)XSerializerTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)XSerializerTest.pch $(IntDir) $(IntDir) $(IntDir)XSerializerTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)XSerializerTest.pdb Console false MachineX64 {152ce948-f659-4206-a50a-1d2b9658ef96} false xerces-c-3.1.1/projects/Win32/VC10/xerces-all/XSerializerTest/XSerializerTest.vcxproj.filters0000644000175000017500000000261411362112176030777 0ustar borisboris {fd484a6e-ada4-4b64-b3c6-e012cbea092a} cpp;c;cxx;rc;def;r;odl;idl;hpj;bat {4eb503cb-2fa2-4d4b-aed7-6fc3ed05ce5c} h;hpp;hxx;hm;inl {99168e3a-80d8-43ca-ba35-38b1b11c78ea} ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe Source Files Source Files Header Files Header Files xerces-c-3.1.1/projects/Win32/VC10/xerces-all/SEnumVal/0000755000175000017500000000000011363617266021213 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC10/xerces-all/SEnumVal/SEnumVal.vcxproj0000644000175000017500000011146011363050663024315 0ustar borisboris Debug Win32 Debug x64 ICU Debug Win32 ICU Debug x64 ICU Release Win32 ICU Release x64 Release Win32 Release x64 Static Debug Win32 Static Debug x64 Static Release Win32 Static Release x64 {2230D938-8908-4C12-9E96-9C6C4048A52D} Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false <_ProjectFileVersion>10.0.30319.1 .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false $(OutDir)SEnumVal.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)SEnumVal.pch $(IntDir) $(IntDir) $(IntDir)SEnumVal_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)SEnumVal.pdb Console false X64 $(OutDir)SEnumVal.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)SEnumVal.pch $(IntDir) $(IntDir) $(IntDir)SEnumVal_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)SEnumVal.pdb Console false MachineX64 $(OutDir)SEnumVal.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)SEnumVal.pch $(IntDir) $(IntDir) $(IntDir)SEnumVal_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)SEnumVal.pdb Console false X64 $(OutDir)SEnumVal.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)SEnumVal.pch $(IntDir) $(IntDir) $(IntDir)SEnumVal_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)SEnumVal.pdb Console false MachineX64 $(OutDir)SEnumVal.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true true $(IntDir)SEnumVal.pch $(IntDir) $(IntDir) $(IntDir)SEnumVal_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)SEnumVal.pdb Console false X64 $(OutDir)SEnumVal.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true true $(IntDir)SEnumVal.pch $(IntDir) $(IntDir) $(IntDir)SEnumVal_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)SEnumVal.pdb Console false MachineX64 $(OutDir)SEnumVal.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) MultiThreadedDebug true $(IntDir)SEnumVal.pch $(IntDir) $(IntDir) $(IntDir)SEnumVal_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)SEnumVal.pdb Console false X64 $(OutDir)SEnumVal.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) MultiThreadedDebug true $(IntDir)SEnumVal.pch $(IntDir) $(IntDir) $(IntDir)SEnumVal_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)SEnumVal.pdb Console false MachineX64 $(OutDir)SEnumVal.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)SEnumVal.pch $(IntDir) $(IntDir) $(IntDir)SEnumVal_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)SEnumVal.pdb Console false X64 $(OutDir)SEnumVal.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)SEnumVal.pch $(IntDir) $(IntDir) $(IntDir)SEnumVal_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)SEnumVal.pdb Console false MachineX64 $(OutDir)SEnumVal.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)SEnumVal.pch $(IntDir) $(IntDir) $(IntDir)SEnumVal_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)SEnumVal.pdb Console false X64 $(OutDir)SEnumVal.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)SEnumVal.pch $(IntDir) $(IntDir) $(IntDir)SEnumVal_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)SEnumVal.pdb Console false MachineX64 {152ce948-f659-4206-a50a-1d2b9658ef96} false xerces-c-3.1.1/projects/Win32/VC10/xerces-all/StdInParse/0000755000175000017500000000000011363617267021536 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC10/xerces-all/StdInParse/StdInParse.vcxproj0000644000175000017500000011236511363050663025166 0ustar borisboris Debug Win32 Debug x64 ICU Debug Win32 ICU Debug x64 ICU Release Win32 ICU Release x64 Release Win32 Release x64 Static Debug Win32 Static Debug x64 Static Release Win32 Static Release x64 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284} Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false <_ProjectFileVersion>10.0.30319.1 .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false $(OutDir)StdInParse.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)StdInParse.pch $(IntDir) $(IntDir) $(IntDir)StdInParse_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)StdInParse.pdb Console false X64 $(OutDir)StdInParse.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)StdInParse.pch $(IntDir) $(IntDir) $(IntDir)StdInParse_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)StdInParse.pdb Console false MachineX64 $(OutDir)StdInParse.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)StdInParse.pch $(IntDir) $(IntDir) $(IntDir)StdInParse_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)StdInParse.pdb Console false X64 $(OutDir)StdInParse.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)StdInParse.pch $(IntDir) $(IntDir) $(IntDir)StdInParse_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)StdInParse.pdb Console false MachineX64 $(OutDir)StdInParse.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true true $(IntDir)StdInParse.pch $(IntDir) $(IntDir) $(IntDir)StdInParse_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)StdInParse.pdb Console false X64 $(OutDir)StdInParse.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true true $(IntDir)StdInParse.pch $(IntDir) $(IntDir) $(IntDir)StdInParse_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)StdInParse.pdb Console false MachineX64 $(OutDir)StdInParse.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug true $(IntDir)StdInParse.pch $(IntDir) $(IntDir) $(IntDir)StdInParse_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)StdInParse.pdb Console false X64 $(OutDir)StdInParse.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug true $(IntDir)StdInParse.pch $(IntDir) $(IntDir) $(IntDir)StdInParse_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)StdInParse.pdb Console false MachineX64 $(OutDir)StdInParse.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)StdInParse.pch $(IntDir) $(IntDir) $(IntDir)StdInParse_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)StdInParse.pdb Console false X64 $(OutDir)StdInParse.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)StdInParse.pch $(IntDir) $(IntDir) $(IntDir)StdInParse_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)StdInParse.pdb Console false MachineX64 $(OutDir)StdInParse.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)StdInParse.pch $(IntDir) $(IntDir) $(IntDir)StdInParse_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)StdInParse.pdb Console false X64 $(OutDir)StdInParse.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)StdInParse.pch $(IntDir) $(IntDir) $(IntDir)StdInParse_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)StdInParse.pdb Console false MachineX64 {152ce948-f659-4206-a50a-1d2b9658ef96} false xerces-c-3.1.1/projects/Win32/VC10/xerces-all/StdInParse/StdInParse.vcxproj.filters0000644000175000017500000000256411362112176026631 0ustar borisboris {4d93df62-6742-4e9d-a2b6-183a5f6e281e} cpp;c;cxx;rc;def;r;odl;idl;hpj;bat {b5cd1f43-890a-403f-8119-b78de21032e7} h;hpp;hxx;hm;inl {afcce539-7c9c-4928-ba9f-d940e4ca0b8f} ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe Source Files Source Files Header Files Header Files xerces-c-3.1.1/projects/Win32/VC10/xerces-all/XInclude/0000755000175000017500000000000011363617265021233 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC10/xerces-all/XInclude/XInclude.vcxproj0000644000175000017500000011100311363050663024350 0ustar borisboris Debug Win32 Debug x64 ICU Debug Win32 ICU Debug x64 ICU Release Win32 ICU Release x64 Release Win32 Release x64 Static Debug Win32 Static Debug x64 Static Release Win32 Static Release x64 {117D4C21-4C54-478F-83AE-D6179A8D7EF1} Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false <_ProjectFileVersion>10.0.30319.1 .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false $(OutDir)XInclude.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)XInclude.pch $(IntDir) $(IntDir) $(IntDir)XInclude_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)XInclude.pdb Console false X64 $(OutDir)XInclude.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)XInclude.pch $(IntDir) $(IntDir) $(IntDir)XInclude_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)XInclude.pdb Console false MachineX64 $(OutDir)XInclude.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)XInclude.pch $(IntDir) $(IntDir) $(IntDir)XInclude_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)XInclude.pdb Console false X64 $(OutDir)XInclude.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)XInclude.pch $(IntDir) $(IntDir) $(IntDir)XInclude_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)XInclude.pdb Console false MachineX64 $(OutDir)XInclude.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true $(IntDir)XInclude.pch $(IntDir) $(IntDir) $(IntDir)XInclude_vc100.pdb true Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)XInclude.pdb Console false X64 $(OutDir)XInclude.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true $(IntDir)XInclude.pch $(IntDir) $(IntDir) $(IntDir)XInclude_vc100.pdb true Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)XInclude.pdb Console false MachineX64 $(OutDir)XInclude.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) MultiThreadedDebug true $(IntDir)XInclude.pch $(IntDir) $(IntDir) $(IntDir)XInclude_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)XInclude.pdb Console false X64 $(OutDir)XInclude.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) MultiThreadedDebug true $(IntDir)XInclude.pch $(IntDir) $(IntDir) $(IntDir)XInclude_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)XInclude.pdb Console false MachineX64 $(OutDir)XInclude.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)XInclude.pch $(IntDir) $(IntDir) $(IntDir)XInclude_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)XInclude.pdb Console false X64 $(OutDir)XInclude.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)XInclude.pch $(IntDir) $(IntDir) $(IntDir)XInclude_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)XInclude.pdb Console false MachineX64 $(OutDir)XInclude.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)XInclude.pch $(IntDir) $(IntDir) $(IntDir)XInclude_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)XInclude.pdb Console false X64 $(OutDir)XInclude.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)XInclude.pch $(IntDir) $(IntDir) $(IntDir)XInclude_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)XInclude.pdb Console false MachineX64 {152ce948-f659-4206-a50a-1d2b9658ef96} false xerces-c-3.1.1/projects/Win32/VC10/xerces-all/SAX2Count/0000755000175000017500000000000011363617265021246 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC10/xerces-all/SAX2Count/SAX2Count.vcxproj0000644000175000017500000011214311363050663024404 0ustar borisboris Debug Win32 Debug x64 ICU Debug Win32 ICU Debug x64 ICU Release Win32 ICU Release x64 Release Win32 Release x64 Static Debug Win32 Static Debug x64 Static Release Win32 Static Release x64 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5} Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false <_ProjectFileVersion>10.0.30319.1 .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false $(OutDir)SAX2Count.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)SAX2Count.pch $(IntDir) $(IntDir) $(IntDir)SAX2Count_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)SAX2Count.pdb Console false X64 $(OutDir)SAX2Count.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)SAX2Count.pch $(IntDir) $(IntDir) $(IntDir)SAX2Count_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)SAX2Count.pdb Console false MachineX64 $(OutDir)SAX2Count.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)SAX2Count.pch $(IntDir) $(IntDir) $(IntDir)SAX2Count_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)SAX2Count.pdb Console false X64 $(OutDir)SAX2Count.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)SAX2Count.pch $(IntDir) $(IntDir) $(IntDir)SAX2Count_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)SAX2Count.pdb Console false MachineX64 $(OutDir)SAX2Count.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true true $(IntDir)SAX2Count.pch $(IntDir) $(IntDir) $(IntDir)SAX2Count_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)SAX2Count.pdb Console false X64 $(OutDir)SAX2Count.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true true $(IntDir)SAX2Count.pch $(IntDir) $(IntDir) $(IntDir)SAX2Count_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)SAX2Count.pdb Console false MachineX64 $(OutDir)SAX2Count.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) MultiThreadedDebug true $(IntDir)SAX2Count.pch $(IntDir) $(IntDir) $(IntDir)SAX2Count_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)SAX2Count.pdb Console false X64 $(OutDir)SAX2Count.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) MultiThreadedDebug true $(IntDir)SAX2Count.pch $(IntDir) $(IntDir) $(IntDir)SAX2Count_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)SAX2Count.pdb Console false MachineX64 $(OutDir)SAX2Count.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)SAX2Count.pch $(IntDir) $(IntDir) $(IntDir)SAX2Count_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)SAX2Count.pdb Console false X64 $(OutDir)SAX2Count.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)SAX2Count.pch $(IntDir) $(IntDir) $(IntDir)SAX2Count_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)SAX2Count.pdb Console false MachineX64 $(OutDir)SAX2Count.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)SAX2Count.pch $(IntDir) $(IntDir) $(IntDir)SAX2Count_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)SAX2Count.pdb Console false X64 $(OutDir)SAX2Count.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)SAX2Count.pch $(IntDir) $(IntDir) $(IntDir)SAX2Count_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)SAX2Count.pdb Console false MachineX64 {152ce948-f659-4206-a50a-1d2b9658ef96} false xerces-c-3.1.1/projects/Win32/VC10/xerces-all/EncodingTest/0000755000175000017500000000000011363617265022106 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC10/xerces-all/EncodingTest/EncodingTest.vcxproj0000644000175000017500000011103211363050663026100 0ustar borisboris Debug Win32 Debug x64 ICU Debug Win32 ICU Debug x64 ICU Release Win32 ICU Release x64 Release Win32 Release x64 Static Debug Win32 Static Debug x64 Static Release Win32 Static Release x64 {B8B50FE7-B620-4D19-A147-B167D087DD53} Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false <_ProjectFileVersion>10.0.30319.1 .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false $(OutDir)EncodingTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)EncodingTest.pch $(IntDir) $(IntDir) $(IntDir)EncodingTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)EncodingTest.pdb Console false X64 $(OutDir)EncodingTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)EncodingTest.pch $(IntDir) $(IntDir) $(IntDir)EncodingTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)EncodingTest.pdb Console false MachineX64 $(OutDir)EncodingTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)EncodingTest.pch $(IntDir) $(IntDir) $(IntDir)EncodingTest_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)EncodingTest.pdb Console false X64 $(OutDir)EncodingTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)EncodingTest.pch $(IntDir) $(IntDir) $(IntDir)EncodingTest_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)EncodingTest.pdb Console false MachineX64 $(OutDir)EncodingTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true $(IntDir)EncodingTest.pch $(IntDir) $(IntDir) $(IntDir)EncodingTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)EncodingTest.pdb Console false X64 $(OutDir)EncodingTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true $(IntDir)EncodingTest.pch $(IntDir) $(IntDir) $(IntDir)EncodingTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)EncodingTest.pdb Console false MachineX64 $(OutDir)EncodingTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug true $(IntDir)EncodingTest.pch $(IntDir) $(IntDir) $(IntDir)EncodingTest_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)EncodingTest.pdb Console false X64 $(OutDir)EncodingTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug true $(IntDir)EncodingTest.pch $(IntDir) $(IntDir) $(IntDir)EncodingTest_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)EncodingTest.pdb Console false MachineX64 $(OutDir)EncodingTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)EncodingTest.pch $(IntDir) $(IntDir) $(IntDir)EncodingTest_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)EncodingTest.pdb Console false X64 $(OutDir)EncodingTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)EncodingTest.pch $(IntDir) $(IntDir) $(IntDir)EncodingTest_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)EncodingTest.pdb Console false MachineX64 $(OutDir)EncodingTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)EncodingTest.pch $(IntDir) $(IntDir) $(IntDir)EncodingTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)EncodingTest.pdb Console false X64 $(OutDir)EncodingTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)EncodingTest.pch $(IntDir) $(IntDir) $(IntDir)EncodingTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)EncodingTest.pdb Console false MachineX64 {152ce948-f659-4206-a50a-1d2b9658ef96} false xerces-c-3.1.1/projects/Win32/VC10/xerces-all/EncodingTest/EncodingTest.vcxproj.filters0000644000175000017500000000166211362112176027553 0ustar borisboris {2105670f-ac35-4690-b171-386b66e6c602} cpp;c;cxx;rc;def;r;odl;idl;hpj;bat {bcafafc4-d553-4c49-ba1c-c0943b4b3f23} h;hpp;hxx;hm;inl {560b9a40-ebfa-4346-a9d3-2493f202c8e3} ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe Source Files xerces-c-3.1.1/projects/Win32/VC10/xerces-all/DOMTest/0000755000175000017500000000000011363617263020775 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC10/xerces-all/DOMTest/DOMTest.vcxproj0000644000175000017500000011061311363050663023666 0ustar borisboris Debug Win32 Debug x64 ICU Debug Win32 ICU Debug x64 ICU Release Win32 ICU Release x64 Release Win32 Release x64 Static Debug Win32 Static Debug x64 Static Release Win32 Static Release x64 {3C777DB7-42D1-4AA6-A051-24213E411891} Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false <_ProjectFileVersion>10.0.30319.1 .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false $(OutDir)DOMTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)DOMTest.pch $(IntDir) $(IntDir) $(IntDir)DOMTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMTest.pdb Console false X64 $(OutDir)DOMTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)DOMTest.pch $(IntDir) $(IntDir) $(IntDir)DOMTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMTest.pdb Console false MachineX64 $(OutDir)DOMTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)DOMTest.pch $(IntDir) $(IntDir) $(IntDir)DOMTest_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMTest.pdb Console false X64 $(OutDir)DOMTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)DOMTest.pch $(IntDir) $(IntDir) $(IntDir)DOMTest_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMTest.pdb Console false MachineX64 $(OutDir)DOMTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true $(IntDir)DOMTest.pch $(IntDir) $(IntDir) $(IntDir)DOMTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMTest.pdb Console false X64 $(OutDir)DOMTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true $(IntDir)DOMTest.pch $(IntDir) $(IntDir) $(IntDir)DOMTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMTest.pdb Console false MachineX64 $(OutDir)DOMTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug true $(IntDir)DOMTest.pch $(IntDir) $(IntDir) $(IntDir)DOMTest_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMTest.pdb Console false X64 $(OutDir)DOMTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug true $(IntDir)DOMTest.pch $(IntDir) $(IntDir) $(IntDir)DOMTest_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMTest.pdb Console false MachineX64 $(OutDir)DOMTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)DOMTest.pch $(IntDir) $(IntDir) $(IntDir)DOMTest_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMTest.pdb Console false X64 $(OutDir)DOMTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)DOMTest.pch $(IntDir) $(IntDir) $(IntDir)DOMTest_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMTest.pdb Console false MachineX64 $(OutDir)DOMTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)DOMTest.pch $(IntDir) $(IntDir) $(IntDir)DOMTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMTest.pdb Console false X64 $(OutDir)DOMTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)DOMTest.pch $(IntDir) $(IntDir) $(IntDir)DOMTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMTest.pdb Console false MachineX64 {152ce948-f659-4206-a50a-1d2b9658ef96} false xerces-c-3.1.1/projects/Win32/VC10/xerces-all/DOMTest/DOMTest.vcxproj.filters0000644000175000017500000000211011362112176025322 0ustar borisboris {af100742-3c52-441b-ba2a-9fcf221eeb59} cpp;c;cxx;rc;def;r;odl;idl;hpj;bat {260e4473-3011-4ed4-b1ae-430ce1b51238} h;hpp;hxx;hm;inl {2f92e71d-b5d0-46d8-a803-cb4aa446d103} ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe Source Files Header Files xerces-c-3.1.1/projects/Win32/VC10/xerces-all/XercesLib/0000755000175000017500000000000011363617264021377 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC10/xerces-all/XercesLib/XercesLib.vcxproj0000644000175000017500000036746611363775402024721 0ustar borisboris Debug Win32 Debug x64 ICU Debug Win32 ICU Debug x64 ICU Release Win32 ICU Release x64 Release Win32 Release x64 Static Debug Win32 Static Debug x64 Static Release Win32 Static Release x64 {152CE948-F659-4206-A50A-1D2B9658EF96} XercesLib DynamicLibrary false true DynamicLibrary false StaticLibrary false StaticLibrary false DynamicLibrary false DynamicLibrary false true DynamicLibrary false true DynamicLibrary false StaticLibrary false StaticLibrary false DynamicLibrary false DynamicLibrary false true <_ProjectFileVersion>10.0.30319.1 .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false xerces-c_3_1D xerces-c_3_1D xerces-c_3_1 xerces-c_3_1 xerces-c_static_3D xerces-c_static_3 xerces-c_3_1D xerces-c_3_1D xerces-c_3_1 xerces-c_3_1 xerces-c_static_3D xerces-c_static_3 NDEBUG;%(PreprocessorDefinitions) true Win32 $(OutDir)XercesLib.tlb MinSpace AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;WIN32;_WINDOWS;XERCES_BUILDING_LIBRARY;XERCES_USE_TRANSCODER_WINDOWS;XERCES_USE_WIN32_MSGLOADER;XERCES_USE_NETACCESSOR_WINSOCK;XERCES_USE_FILEMGR_WINDOWS;XERCES_USE_MUTEXMGR_WINDOWS;XERCES_PATH_DELIMITER_BACKSLASH;HAVE_STRICMP;HAVE_STRNICMP;HAVE_LIMITS_H;HAVE_SYS_TIMEB_H;HAVE_FTIME;HAVE_WCSUPR;HAVE_WCSLWR;HAVE_WCSICMP;HAVE_WCSNICMP;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)XercesLib.pch $(IntDir) $(IntDir) $(IntDir)XercesLib_vc100.pdb Level3 ProgramDatabase Default 4996;%(DisableSpecificWarnings) NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) ws2_32.lib;advapi32.lib;%(AdditionalDependencies) $(TargetPath) %(AdditionalLibraryDirectories) true $(OutDir)xerces-c_3_1.fullpdb $(OutDir)xerces-c_3_1.pdb true $(IntDir)xerces-c_3_1.map Windows true true 0x12000000 false $(OutDir)xerces-c_3.lib NDEBUG;%(PreprocessorDefinitions) true X64 $(OutDir)XercesLib.tlb MinSpace AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;WIN64;_WINDOWS;XERCES_BUILDING_LIBRARY;XERCES_USE_TRANSCODER_WINDOWS;XERCES_USE_WIN32_MSGLOADER;XERCES_USE_NETACCESSOR_WINSOCK;XERCES_USE_FILEMGR_WINDOWS;XERCES_USE_MUTEXMGR_WINDOWS;XERCES_PATH_DELIMITER_BACKSLASH;HAVE_STRICMP;HAVE_STRNICMP;HAVE_LIMITS_H;HAVE_SYS_TIMEB_H;HAVE_FTIME;HAVE_WCSUPR;HAVE_WCSLWR;HAVE_WCSICMP;HAVE_WCSNICMP;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)XercesLib.pch $(IntDir) $(IntDir) $(IntDir)XercesLib_vc100.pdb Level3 ProgramDatabase Default NDEBUG;%(PreprocessorDefinitions) 0x0409 ws2_32.lib;advapi32.lib;%(AdditionalDependencies) $(TargetPath) %(AdditionalLibraryDirectories) true $(OutDir)xerces-c_3_1.fullpdb $(OutDir)xerces-c_3_1.pdb true $(IntDir)xerces-c_3_1.map Windows true true 0x12000000 false $(OutDir)xerces-c_3.lib MachineX64 _DEBUG;%(PreprocessorDefinitions) true Win32 $(OutDir)XercesLib.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;WIN32;_WINDOWS;XERCES_BUILDING_LIBRARY;XERCES_USE_TRANSCODER_WINDOWS;XERCES_USE_WIN32_MSGLOADER;XERCES_USE_NETACCESSOR_WINSOCK;XERCES_USE_FILEMGR_WINDOWS;XERCES_USE_MUTEXMGR_WINDOWS;XERCES_PATH_DELIMITER_BACKSLASH;HAVE_STRICMP;HAVE_STRNICMP;HAVE_LIMITS_H;HAVE_SYS_TIMEB_H;HAVE_FTIME;HAVE_WCSUPR;HAVE_WCSLWR;HAVE_WCSICMP;HAVE_WCSNICMP;%(PreprocessorDefinitions) MultiThreadedDebugDLL true $(IntDir)XercesLib.pch $(IntDir) $(IntDir) $(IntDir)XercesLib_vc100.pdb Level3 ProgramDatabase Default 4996;%(DisableSpecificWarnings) _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) ws2_32.lib;advapi32.lib;%(AdditionalDependencies) $(TargetPath) %(AdditionalLibraryDirectories) true $(OutDir)xerces-c_3_1D.pdb Windows false 0x12000000 false $(OutDir)xerces-c_3D.lib _DEBUG;%(PreprocessorDefinitions) true X64 $(OutDir)XercesLib.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;WIN64;_WINDOWS;XERCES_BUILDING_LIBRARY;XERCES_USE_TRANSCODER_WINDOWS;XERCES_USE_WIN32_MSGLOADER;XERCES_USE_NETACCESSOR_WINSOCK;XERCES_USE_FILEMGR_WINDOWS;XERCES_USE_MUTEXMGR_WINDOWS;XERCES_PATH_DELIMITER_BACKSLASH;HAVE_STRICMP;HAVE_STRNICMP;HAVE_LIMITS_H;HAVE_SYS_TIMEB_H;HAVE_FTIME;HAVE_WCSUPR;HAVE_WCSLWR;HAVE_WCSICMP;HAVE_WCSNICMP;%(PreprocessorDefinitions) MultiThreadedDebugDLL true $(IntDir)XercesLib.pch $(IntDir) $(IntDir) $(IntDir)XercesLib_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 ws2_32.lib;advapi32.lib;%(AdditionalDependencies) $(TargetPath) %(AdditionalLibraryDirectories) true $(OutDir)xerces-c_3_1D.pdb Windows false 0x12000000 false $(OutDir)xerces-c_3D.lib MachineX64 NDEBUG;%(PreprocessorDefinitions) true Win32 $(OutDir)XercesLib.tlb MinSpace AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;XERCES_BUILDING_LIBRARY;XERCES_USE_TRANSCODER_WINDOWS;XERCES_USE_MSGLOADER_INMEMORY;XERCES_USE_NETACCESSOR_WINSOCK;XERCES_USE_FILEMGR_WINDOWS;XERCES_USE_MUTEXMGR_WINDOWS;XERCES_PATH_DELIMITER_BACKSLASH;HAVE_STRICMP;HAVE_STRNICMP;HAVE_LIMITS_H;HAVE_SYS_TIMEB_H;HAVE_FTIME;HAVE_WCSUPR;HAVE_WCSLWR;HAVE_WCSICMP;HAVE_WCSNICMP;%(PreprocessorDefinitions) true MultiThreaded $(IntDir)XercesLib.pch $(IntDir) $(IntDir) $(IntDir)XercesLib_vc100.pdb Level3 Default 4996;%(DisableSpecificWarnings) NDEBUG;%(PreprocessorDefinitions) 0x0409 $(TargetPath) NDEBUG;%(PreprocessorDefinitions) true X64 $(OutDir)XercesLib.tlb MinSpace AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;XERCES_BUILDING_LIBRARY;XERCES_USE_TRANSCODER_WINDOWS;XERCES_USE_MSGLOADER_INMEMORY;XERCES_USE_NETACCESSOR_WINSOCK;XERCES_USE_FILEMGR_WINDOWS;XERCES_USE_MUTEXMGR_WINDOWS;XERCES_PATH_DELIMITER_BACKSLASH;HAVE_STRICMP;HAVE_STRNICMP;HAVE_LIMITS_H;HAVE_SYS_TIMEB_H;HAVE_FTIME;HAVE_WCSUPR;HAVE_WCSLWR;HAVE_WCSICMP;HAVE_WCSNICMP;%(PreprocessorDefinitions) true MultiThreaded $(IntDir)XercesLib.pch $(IntDir) $(IntDir) $(IntDir)XercesLib_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 $(TargetPath) _DEBUG;%(PreprocessorDefinitions) true Win32 $(OutDir)XercesLib.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;XERCES_BUILDING_LIBRARY;XERCES_USE_TRANSCODER_WINDOWS;XERCES_USE_MSGLOADER_INMEMORY;XERCES_USE_NETACCESSOR_WINSOCK;XERCES_USE_FILEMGR_WINDOWS;XERCES_USE_MUTEXMGR_WINDOWS;XERCES_PATH_DELIMITER_BACKSLASH;HAVE_STRICMP;HAVE_STRNICMP;HAVE_LIMITS_H;HAVE_SYS_TIMEB_H;HAVE_FTIME;HAVE_WCSUPR;HAVE_WCSLWR;HAVE_WCSICMP;HAVE_WCSNICMP;%(PreprocessorDefinitions) MultiThreadedDebug $(IntDir)XercesLib.pch $(IntDir) $(IntDir) $(OutDir)xerces-c_static_3D.pdb Level3 ProgramDatabase Default 4996;%(DisableSpecificWarnings) _DEBUG;%(PreprocessorDefinitions) 0x0409 $(TargetPath) _DEBUG;%(PreprocessorDefinitions) true X64 $(OutDir)XercesLib.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;XERCES_BUILDING_LIBRARY;XERCES_USE_TRANSCODER_WINDOWS;XERCES_USE_MSGLOADER_INMEMORY;XERCES_USE_NETACCESSOR_WINSOCK;XERCES_USE_FILEMGR_WINDOWS;XERCES_USE_MUTEXMGR_WINDOWS;XERCES_PATH_DELIMITER_BACKSLASH;HAVE_STRICMP;HAVE_STRNICMP;HAVE_LIMITS_H;HAVE_SYS_TIMEB_H;HAVE_FTIME;HAVE_WCSUPR;HAVE_WCSLWR;HAVE_WCSICMP;HAVE_WCSNICMP;%(PreprocessorDefinitions) MultiThreadedDebug $(IntDir)XercesLib.pch $(IntDir) $(IntDir) $(OutDir)xerces-c_static_3D.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 $(TargetPath) _DEBUG;%(PreprocessorDefinitions) true Win32 $(OutDir)XercesLib.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;WIN32;_WINDOWS;XERCES_BUILDING_LIBRARY;XERCES_USE_TRANSCODER_ICU;XERCES_USE_WIN32_MSGLOADER;XERCES_USE_NETACCESSOR_WINSOCK;XERCES_USE_FILEMGR_WINDOWS;XERCES_USE_MUTEXMGR_WINDOWS;XERCES_PATH_DELIMITER_BACKSLASH;HAVE_STRICMP;HAVE_STRNICMP;HAVE_LIMITS_H;HAVE_SYS_TIMEB_H;HAVE_FTIME;HAVE_WCSUPR;HAVE_WCSLWR;HAVE_WCSICMP;HAVE_WCSNICMP;%(PreprocessorDefinitions) MultiThreadedDebugDLL true $(IntDir)XercesLib.pch $(IntDir) $(IntDir) $(IntDir)XercesLib_vc100.pdb Level3 ProgramDatabase Default 4996;%(DisableSpecificWarnings) _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) ws2_32.lib;advapi32.lib;icuuc.lib;%(AdditionalDependencies) $(TargetPath) %(AdditionalLibraryDirectories) true $(OutDir)xerces-c_3_1D.pdb Windows false 0x12000000 false $(OutDir)xerces-c_3D.lib _DEBUG;%(PreprocessorDefinitions) true X64 $(OutDir)XercesLib.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_DEBUG;WIN64;_WINDOWS;XERCES_BUILDING_LIBRARY;XERCES_USE_TRANSCODER_ICU;XERCES_USE_WIN32_MSGLOADER;XERCES_USE_NETACCESSOR_WINSOCK;XERCES_USE_FILEMGR_WINDOWS;XERCES_USE_MUTEXMGR_WINDOWS;XERCES_PATH_DELIMITER_BACKSLASH;HAVE_STRICMP;HAVE_STRNICMP;HAVE_LIMITS_H;HAVE_SYS_TIMEB_H;HAVE_FTIME;HAVE_WCSUPR;HAVE_WCSLWR;HAVE_WCSICMP;HAVE_WCSNICMP;%(PreprocessorDefinitions) MultiThreadedDebugDLL true $(IntDir)XercesLib.pch $(IntDir) $(IntDir) $(IntDir)XercesLib_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 ws2_32.lib;advapi32.lib;%(AdditionalDependencies) $(TargetPath) %(AdditionalLibraryDirectories) true $(OutDir)xerces-c_3_1D.pdb Windows false 0x12000000 false $(OutDir)xerces-c_3D.lib MachineX64 NDEBUG;%(PreprocessorDefinitions) true Win32 $(OutDir)XercesLib.tlb MinSpace AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;WIN32;_WINDOWS;XERCES_BUILDING_LIBRARY;XERCES_USE_TRANSCODER_ICU;XERCES_USE_WIN32_MSGLOADER;XERCES_USE_NETACCESSOR_WINSOCK;XERCES_USE_FILEMGR_WINDOWS;XERCES_USE_MUTEXMGR_WINDOWS;XERCES_PATH_DELIMITER_BACKSLASH;HAVE_STRICMP;HAVE_STRNICMP;HAVE_LIMITS_H;HAVE_SYS_TIMEB_H;HAVE_FTIME;HAVE_WCSUPR;HAVE_WCSLWR;HAVE_WCSICMP;HAVE_WCSNICMP;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)XercesLib.pch $(IntDir) $(IntDir) $(IntDir)XercesLib_vc100.pdb Level3 ProgramDatabase Default 4996;%(DisableSpecificWarnings) NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) ws2_32.lib;advapi32.lib;icuuc.lib;%(AdditionalDependencies) $(TargetPath) %(AdditionalLibraryDirectories) true $(OutDir)xerces-c_3_1.fullpdb $(OutDir)xerces-c_3_1.pdb true $(IntDir)xerces-c_3_1.map Windows true true 0x12000000 false $(OutDir)xerces-c_3.lib NDEBUG;%(PreprocessorDefinitions) true X64 $(OutDir)XercesLib.tlb MinSpace AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;NDEBUG;WIN64;_WINDOWS;XERCES_BUILDING_LIBRARY;XERCES_USE_TRANSCODER_ICU;XERCES_USE_WIN32_MSGLOADER;XERCES_USE_NETACCESSOR_WINSOCK;XERCES_USE_FILEMGR_WINDOWS;XERCES_USE_MUTEXMGR_WINDOWS;XERCES_PATH_DELIMITER_BACKSLASH;HAVE_STRICMP;HAVE_STRNICMP;HAVE_LIMITS_H;HAVE_SYS_TIMEB_H;HAVE_FTIME;HAVE_WCSUPR;HAVE_WCSLWR;HAVE_WCSICMP;HAVE_WCSNICMP;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)XercesLib.pch $(IntDir) $(IntDir) $(IntDir)XercesLib_vc100.pdb Level3 ProgramDatabase Default NDEBUG;%(PreprocessorDefinitions) 0x0409 ws2_32.lib;advapi32.lib;%(AdditionalDependencies) $(TargetPath) %(AdditionalLibraryDirectories) true $(OutDir)xerces-c_3_1.fullpdb $(OutDir)xerces-c_3_1.pdb true $(IntDir)xerces-c_3_1.map Windows true true 0x12000000 false $(OutDir)xerces-c_3.lib MachineX64 echo copy "%(RootDir)%(Directory)%(Filename).msvc.hpp" "%(FullPath)" copy "%(RootDir)%(Directory)%(Filename).msvc.hpp" "%(FullPath)" %(RootDir)%(Directory)%(Filename).msvc.hpp;%(AdditionalInputs) %(FullPath);%(Outputs) echo copy "%(RootDir)%(Directory)%(Filename).msvc.hpp" "%(FullPath)" copy "%(RootDir)%(Directory)%(Filename).msvc.hpp" "%(FullPath)" %(RootDir)%(Directory)\%(Filename).msvc.hpp;%(AdditionalInputs) %(FullPath);%(Outputs) echo copy "%(RootDir)%(Directory)%(Filename).msvc.hpp" "%(FullPath)" copy "%(RootDir)%(Directory)%(Filename).msvc.hpp" "%(FullPath)" %(RootDir)%(Directory)\%(Filename).msvc.hpp;%(AdditionalInputs) %(FullPath);%(Outputs) echo copy "%(RootDir)%(Directory)%(Filename).msvc.hpp" "%(FullPath)" copy "%(RootDir)%(Directory)%(Filename).msvc.hpp" "%(FullPath)" %(RootDir)%(Directory)\%(Filename).msvc.hpp;%(AdditionalInputs) %(FullPath);%(Outputs) echo copy "%(RootDir)%(Directory)%(Filename).msvc.hpp" "%(FullPath)" copy "%(RootDir)%(Directory)%(Filename).msvc.hpp" "%(FullPath)" %(RootDir)%(Directory)\%(Filename).msvc.hpp;%(AdditionalInputs) %(FullPath);%(Outputs) echo copy "%(RootDir)%(Directory)%(Filename).msvc.hpp" "%(FullPath)" copy "%(RootDir)%(Directory)%(Filename).msvc.hpp" "%(FullPath)" %(RootDir)%(Directory)\%(Filename).msvc.hpp;%(AdditionalInputs) %(FullPath);%(Outputs) echo copy "%(RootDir)%(Directory)%(Filename).msvc.hpp" "%(FullPath)" copy "%(RootDir)%(Directory)%(Filename).msvc.hpp" "%(FullPath)" %(RootDir)%(Directory)\%(Filename).msvc.hpp;%(AdditionalInputs) %(FullPath);%(Outputs) echo copy "%(RootDir)%(Directory)%(Filename).msvc.hpp" "%(FullPath)" copy "%(RootDir)%(Directory)%(Filename).msvc.hpp" "%(FullPath)" %(RootDir)%(Directory)\%(Filename).msvc.hpp;%(AdditionalInputs) %(FullPath);%(Outputs) echo copy "%(RootDir)%(Directory)%(Filename).msvc.hpp" "%(FullPath)" copy "%(RootDir)%(Directory)%(Filename).msvc.hpp" "%(FullPath)" %(RootDir)%(Directory)\%(Filename).msvc.hpp;%(AdditionalInputs) %(FullPath);%(Outputs) echo copy "%(RootDir)%(Directory)%(Filename).msvc.hpp" "%(FullPath)" copy "%(RootDir)%(Directory)%(Filename).msvc.hpp" "%(FullPath)" %(RootDir)%(Directory)\%(Filename).msvc.hpp;%(AdditionalInputs) %(FullPath);%(Outputs) echo copy "%(RootDir)%(Directory)%(Filename).msvc.hpp" "%(FullPath)" copy "%(RootDir)%(Directory)%(Filename).msvc.hpp" "%(FullPath)" %(RootDir)%(Directory)\%(Filename).msvc.hpp;%(AdditionalInputs) %(FullPath);%(Outputs) echo copy "%(RootDir)%(Directory)%(Filename).msvc.hpp" "%(FullPath)" copy "%(RootDir)%(Directory)%(Filename).msvc.hpp" "%(FullPath)" %(RootDir)%(Directory)\%(Filename).msvc.hpp;%(AdditionalInputs) %(FullPath);%(Outputs) echo copy "%(FullPath)" "%(RootDir)%(Directory)Xerces_autoconf_config.hpp" copy "%(FullPath)" "%(RootDir)%(Directory)Xerces_autoconf_config.hpp" %(RootDir)%(Directory)Xerces_autoconf_config.hpp echo copy "%(FullPath)" "%(RootDir)%(Directory)Xerces_autoconf_config.hpp" copy "%(FullPath)" "%(RootDir)%(Directory)Xerces_autoconf_config.hpp" echo copy "%(FullPath)" "%(RootDir)%(Directory)Xerces_autoconf_config.hpp" copy "%(FullPath)" "%(RootDir)%(Directory)Xerces_autoconf_config.hpp" echo copy "%(FullPath)" "%(RootDir)%(Directory)Xerces_autoconf_config.hpp" copy "%(FullPath)" "%(RootDir)%(Directory)Xerces_autoconf_config.hpp" echo copy "%(FullPath)" "%(RootDir)%(Directory)Xerces_autoconf_config.hpp" copy "%(FullPath)" "%(RootDir)%(Directory)Xerces_autoconf_config.hpp" echo copy "%(FullPath)" "%(RootDir)%(Directory)Xerces_autoconf_config.hpp" copy "%(FullPath)" "%(RootDir)%(Directory)Xerces_autoconf_config.hpp" echo copy "%(FullPath)" "%(RootDir)%(Directory)Xerces_autoconf_config.hpp" copy "%(FullPath)" "%(RootDir)%(Directory)Xerces_autoconf_config.hpp" echo copy "%(FullPath)" "%(RootDir)%(Directory)Xerces_autoconf_config.hpp" copy "%(FullPath)" "%(RootDir)%(Directory)Xerces_autoconf_config.hpp" echo copy "%(FullPath)" "%(RootDir)%(Directory)Xerces_autoconf_config.hpp" copy "%(FullPath)" "%(RootDir)%(Directory)Xerces_autoconf_config.hpp" echo copy "%(FullPath)" "%(RootDir)%(Directory)Xerces_autoconf_config.hpp" copy "%(FullPath)" "%(RootDir)%(Directory)Xerces_autoconf_config.hpp" echo copy "%(FullPath)" "%(RootDir)%(Directory)Xerces_autoconf_config.hpp" copy "%(FullPath)" "%(RootDir)%(Directory)Xerces_autoconf_config.hpp" echo copy "%(FullPath)" "%(RootDir)%(Directory)Xerces_autoconf_config.hpp" copy "%(FullPath)" "%(RootDir)%(Directory)Xerces_autoconf_config.hpp" %(RootDir)%(Directory)Xerces_autoconf_config.hpp %(RootDir)%(Directory)Xerces_autoconf_config.hpp %(RootDir)%(Directory)Xerces_autoconf_config.hpp %(RootDir)%(Directory)Xerces_autoconf_config.hpp %(RootDir)%(Directory)Xerces_autoconf_config.hpp %(RootDir)%(Directory)Xerces_autoconf_config.hpp %(RootDir)%(Directory)Xerces_autoconf_config.hpp %(RootDir)%(Directory)Xerces_autoconf_config.hpp %(RootDir)%(Directory)Xerces_autoconf_config.hpp %(RootDir)%(Directory)Xerces_autoconf_config.hpp %(RootDir)%(Directory)Xerces_autoconf_config.hpp true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true true ..\..\..\..\..\src\xercesc\util\MsgLoaders\Win32 ..\..\..\..\..\src\xercesc\util\MsgLoaders\Win32 ..\..\..\..\..\src\xercesc\util\MsgLoaders\Win32 ..\..\..\..\..\src\xercesc\util\MsgLoaders\Win32 ..\..\..\..\..\src\xercesc\util\MsgLoaders\Win32 ..\..\..\..\..\src\xercesc\util\MsgLoaders\Win32 ..\..\..\..\..\src\xercesc\util\MsgLoaders\Win32 ..\..\..\..\..\src\xercesc\util\MsgLoaders\Win32 true ..\..\..\..\..\src\xercesc\util\MsgLoaders\Win32 true ..\..\..\..\..\src\xercesc\util\MsgLoaders\Win32 true ..\..\..\..\..\src\xercesc\util\MsgLoaders\Win32 true ..\..\..\..\..\src\xercesc\util\MsgLoaders\Win32 xerces-c-3.1.1/projects/Win32/VC10/xerces-all/XercesLib/XercesLib.vcxproj.filters0000644000175000017500000031733011362112176026341 0ustar borisboris {ac0a28ef-4854-4420-a9ad-9b893b43761d} .cpp,.hpp {94786b5f-6242-4b54-b790-f7401c93d598} .cpp,.hpp {f58592d1-68e3-443e-af7f-8ecc944ea63d} .cpp,.hpp {d117721a-6535-4123-85d7-06afa6735e32} .cpp,.hpp {9f526959-c2f9-4e3b-b28a-f3bbfbf14297} .cpp,.hpp {31b8ac3e-2be9-42c5-9761-4fa1d908c9a1} .cpp,.hpp {a25a141b-816c-4044-86ce-2a89915cb6cb} {950a371d-55fe-4a3c-a242-c87535ea6a9e} {ce4dba0a-7ab2-41e9-bb74-5aae30c22213} {5c83a992-b0f1-4d56-af23-e9fd8b4e51d1} {7ebffb25-36f4-409a-9adb-058c43aeed9b} .cpp,.hpp {4c8844b9-a034-47fa-a40f-c9cd975dee3d} .cpp,.hpp {b172246d-cf40-47de-b2e2-50343a27444d} .cpp,.hpp {a8373e53-6284-410c-b4c7-548f90373a6d} .cpp,.hpp {6496a416-a2e1-4104-bfce-f5f1e6aa8e1d} *.cpp, *.hpp {6baefd75-9860-44d3-b235-c8a0f46dde35} *.cpp, *.hpp {5a34aec9-88f0-4c19-ad85-e0ecd53cc774} *.cpp, *.hpp {4ce0b792-5a20-4a28-a9e0-45eccff2d690} *.cpp, *.hpp {25db9f73-7810-4902-b45f-e712198eb367} *.cpp, *.hpp {d0c3e6f7-e5d4-4ade-9bd1-a5b67859fc4c} .cpp,.hpp {39a6d9bc-0055-4e44-8827-ba673c0d9ff5} {77f456d9-af69-4645-967d-5187912f86ca} {09a2c94f-04d8-4e76-8f30-4cc7e6aa676e} util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util\MsgLoaders util\Transcoders util\Transcoders util\NetAccessors util\NetAccessors util\NetAccessors util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\FileManager util\MutexManager framework framework framework framework framework framework framework framework framework framework framework framework framework framework framework framework framework framework framework framework framework framework framework framework framework framework framework framework framework framework framework framework framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi internal internal internal internal internal internal internal internal internal internal internal internal internal internal internal internal internal internal internal internal internal internal sax sax sax sax sax sax sax sax sax sax sax parsers parsers parsers parsers parsers parsers validators\common validators\common validators\common validators\common validators\common validators\common validators\common validators\common validators\common validators\common validators\common validators\common validators\common validators\common validators\common validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\DTD validators\DTD validators\DTD validators\DTD validators\DTD validators\DTD validators\DTD validators\DTD validators\DTD validators\schema validators\schema validators\schema validators\schema validators\schema validators\schema validators\schema validators\schema validators\schema validators\schema validators\schema validators\schema validators\schema validators\schema validators\schema validators\schema validators\schema validators\schema validators\schema validators\schema validators\schema validators\schema\identity validators\schema\identity validators\schema\identity validators\schema\identity validators\schema\identity validators\schema\identity validators\schema\identity validators\schema\identity validators\schema\identity validators\schema\identity validators\schema\identity validators\schema\identity validators\schema\identity validators\schema\identity validators\schema\identity validators\schema\identity sax2 sax2 sax2 sax2 sax2 sax2 sax2 sax2 dom dom dom dom dom dom dom dom dom dom dom dom dom dom dom dom dom dom dom dom dom dom dom dom dom dom dom dom dom dom dom dom dom dom dom dom dom dom dom dom dom dom dom dom dom dom dom dom dom dom dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl xinclude xinclude xinclude util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util util\MsgLoaders util\MsgLoaders util\Transcoders util\Transcoders util\NetAccessors util\NetAccessors util\NetAccessors util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\regx util\FileManager util\MutexManager framework framework framework framework framework framework framework framework framework framework framework framework framework framework framework framework framework framework framework framework framework framework framework framework framework framework framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi framework\psvi internal internal internal internal internal internal internal internal internal internal internal internal internal internal internal internal internal internal internal internal internal internal sax sax sax sax parsers parsers parsers parsers parsers parsers validators\common validators\common validators\common validators\common validators\common validators\common validators\common validators\common validators\common validators\common validators\common validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\datatype validators\DTD validators\DTD validators\DTD validators\DTD validators\DTD validators\DTD validators\DTD validators\DTD validators\schema validators\schema validators\schema validators\schema validators\schema validators\schema validators\schema validators\schema validators\schema validators\schema validators\schema validators\schema validators\schema validators\schema validators\schema validators\schema validators\schema validators\schema validators\schema validators\schema validators\schema\identity validators\schema\identity validators\schema\identity validators\schema\identity validators\schema\identity validators\schema\identity validators\schema\identity validators\schema\identity validators\schema\identity validators\schema\identity validators\schema\identity validators\schema\identity validators\schema\identity validators\schema\identity validators\schema\identity sax2 dom dom dom dom dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl dom\impl xinclude xinclude xinclude util\MsgLoaders util\MsgLoaders util\MsgLoaders util\MsgLoaders util\Win32 xerces-c-3.1.1/projects/Win32/VC10/xerces-all/DOMTypeInfoTest/0000755000175000017500000000000011363617265022455 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC10/xerces-all/DOMTypeInfoTest/DOMTypeInfoTest.vcxproj0000644000175000017500000011224711363050663027027 0ustar borisboris Debug Win32 Debug x64 ICU Debug Win32 ICU Debug x64 ICU Release Win32 ICU Release x64 Release Win32 Release x64 Static Debug Win32 Static Debug x64 Static Release Win32 Static Release x64 {15A10DF2-F551-4306-A4CC-690F58C58081} Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false <_ProjectFileVersion>10.0.30319.1 .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false $(OutDir)DOMTypeInfoTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)DOMTypeInfoTest.pch $(IntDir) $(IntDir) $(IntDir)DOMTypeInfoTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMTypeInfoTest.pdb Console false X64 $(OutDir)DOMTypeInfoTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)DOMTypeInfoTest.pch $(IntDir) $(IntDir) $(IntDir)DOMTypeInfoTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMTypeInfoTest.pdb Console false MachineX64 $(OutDir)DOMTypeInfoTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)DOMTypeInfoTest.pch $(IntDir) $(IntDir) $(IntDir)DOMTypeInfoTest_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMTypeInfoTest.pdb Console false X64 $(OutDir)DOMTypeInfoTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)DOMTypeInfoTest.pch $(IntDir) $(IntDir) $(IntDir)DOMTypeInfoTest_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMTypeInfoTest.pdb Console false MachineX64 $(OutDir)DOMTypeInfoTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true true $(IntDir)DOMTypeInfoTest.pch $(IntDir) $(IntDir) $(IntDir)DOMTypeInfoTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMTypeInfoTest.pdb Console false X64 $(OutDir)DOMTypeInfoTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true true $(IntDir)DOMTypeInfoTest.pch $(IntDir) $(IntDir) $(IntDir)DOMTypeInfoTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMTypeInfoTest.pdb Console false MachineX64 $(OutDir)DOMTypeInfoTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug true $(IntDir)DOMTypeInfoTest.pch $(IntDir) $(IntDir) $(IntDir)DOMTypeInfoTest_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMTypeInfoTest.pdb Console false X64 $(OutDir)DOMTypeInfoTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug true $(IntDir)DOMTypeInfoTest.pch $(IntDir) $(IntDir) $(IntDir)DOMTypeInfoTest_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMTypeInfoTest.pdb Console false MachineX64 $(OutDir)DOMTypeInfoTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)DOMTypeInfoTest.pch $(IntDir) $(IntDir) $(IntDir)DOMTypeInfoTest_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMTypeInfoTest.pdb Console false X64 $(OutDir)DOMTypeInfoTest.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true true $(IntDir)DOMTypeInfoTest.pch $(IntDir) $(IntDir) $(IntDir)DOMTypeInfoTest_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMTypeInfoTest.pdb Console false MachineX64 $(OutDir)DOMTypeInfoTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)DOMTypeInfoTest.pch $(IntDir) $(IntDir) $(IntDir)DOMTypeInfoTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMTypeInfoTest.pdb Console false X64 $(OutDir)DOMTypeInfoTest.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)DOMTypeInfoTest.pch $(IntDir) $(IntDir) $(IntDir)DOMTypeInfoTest_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMTypeInfoTest.pdb Console false MachineX64 {152ce948-f659-4206-a50a-1d2b9658ef96} false xerces-c-3.1.1/projects/Win32/VC10/xerces-all/DOMTypeInfoTest/DOMTypeInfoTest.vcxproj.filters0000644000175000017500000000212211362112176030461 0ustar borisboris {36b54a65-c2c9-49e4-af48-a6c5fe78b9bb} cpp;c;cxx;rc;def;r;odl;idl;hpj;bat {aaf8fe23-bbe2-42c8-a428-2f2bfcd93ea6} h;hpp;hxx;hm;inl {42e573eb-00ba-4976-91dc-01eda15b7830} ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe Source Files Header Files xerces-c-3.1.1/projects/Win32/VC10/xerces-all/SAX2Print/0000755000175000017500000000000011363617264021251 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC10/xerces-all/SAX2Print/SAX2Print.vcxproj0000644000175000017500000011175111363050663024420 0ustar borisboris Debug Win32 Debug x64 ICU Debug Win32 ICU Debug x64 ICU Release Win32 ICU Release x64 Release Win32 Release x64 Static Debug Win32 Static Debug x64 Static Release Win32 Static Release x64 {7259B5D2-54FE-4142-9321-0572C615F0A2} Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false <_ProjectFileVersion>10.0.30319.1 .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false $(OutDir)SAX2Print.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)SAX2Print.pch $(IntDir) $(IntDir) $(IntDir)SAX2Print_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)SAX2Print.pdb Console false X64 $(OutDir)SAX2Print.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)SAX2Print.pch $(IntDir) $(IntDir) $(IntDir)SAX2Print_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)SAX2Print.pdb Console false MachineX64 $(OutDir)SAX2Print.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)SAX2Print.pch $(IntDir) $(IntDir) $(IntDir)SAX2Print_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)SAX2Print.pdb Console false X64 $(OutDir)SAX2Print.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)SAX2Print.pch $(IntDir) $(IntDir) $(IntDir)SAX2Print_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)SAX2Print.pdb Console false MachineX64 $(OutDir)SAX2Print.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true true $(IntDir)SAX2Print.pch $(IntDir) $(IntDir) $(IntDir)SAX2Print_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)SAX2Print.pdb Console false X64 $(OutDir)SAX2Print.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true true $(IntDir)SAX2Print.pch $(IntDir) $(IntDir) $(IntDir)SAX2Print_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)SAX2Print.pdb Console false MachineX64 $(OutDir)SAX2Print.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) MultiThreadedDebug true $(IntDir)SAX2Print.pch $(IntDir) $(IntDir) $(IntDir)SAX2Print_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)SAX2Print.pdb Console false X64 $(OutDir)SAX2Print.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) MultiThreadedDebug true $(IntDir)SAX2Print.pch $(IntDir) $(IntDir) $(IntDir)SAX2Print_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)SAX2Print.pdb Console false MachineX64 $(OutDir)SAX2Print.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)SAX2Print.pch $(IntDir) $(IntDir) $(IntDir)SAX2Print_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)SAX2Print.pdb Console false X64 $(OutDir)SAX2Print.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)SAX2Print.pch $(IntDir) $(IntDir) $(IntDir)SAX2Print_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)SAX2Print.pdb Console false MachineX64 $(OutDir)SAX2Print.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)SAX2Print.pch $(IntDir) $(IntDir) $(IntDir)SAX2Print_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)SAX2Print.pdb Console false X64 $(OutDir)SAX2Print.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)SAX2Print.pch $(IntDir) $(IntDir) $(IntDir)SAX2Print_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)SAX2Print.pdb Console false MachineX64 {152ce948-f659-4206-a50a-1d2b9658ef96} false xerces-c-3.1.1/projects/Win32/VC10/xerces-all/DOMCount/0000755000175000017500000000000011363617266021151 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC10/xerces-all/DOMCount/DOMCount.vcxproj0000644000175000017500000011054711363050663024216 0ustar borisboris Debug Win32 Debug x64 ICU Debug Win32 ICU Debug x64 ICU Release Win32 ICU Release x64 Release Win32 Release x64 Static Debug Win32 Static Debug x64 Static Release Win32 Static Release x64 {60E3008A-0D78-4B25-A12E-9D7A3921F67C} Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false <_ProjectFileVersion>10.0.30319.1 .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false $(OutDir)DOMCount.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_CONSOLE;WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)DOMCount.pch $(IntDir) $(IntDir) $(IntDir)DOMCount_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMCount.pdb Console false X64 $(OutDir)DOMCount.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_CONSOLE;WIN64;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)DOMCount.pch $(IntDir) $(IntDir) $(IntDir)DOMCount_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMCount.pdb Console false MachineX64 $(OutDir)DOMCount.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_CONSOLE;WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true $(IntDir)DOMCount.pch $(IntDir) $(IntDir) $(IntDir)DOMCount_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMCount.pdb Console false X64 $(OutDir)DOMCount.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_CONSOLE;WIN64;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true $(IntDir)DOMCount.pch $(IntDir) $(IntDir) $(IntDir)DOMCount_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMCount.pdb Console false MachineX64 $(OutDir)DOMCount.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_CONSOLE;WIN32;NDEBUG;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true true $(IntDir)DOMCount.pch $(IntDir) $(IntDir) $(IntDir)DOMCount_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMCount.pdb Console false X64 $(OutDir)DOMCount.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_CONSOLE;WIN64;NDEBUG;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true true $(IntDir)DOMCount.pch $(IntDir) $(IntDir) $(IntDir)DOMCount_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMCount.pdb Console false MachineX64 $(OutDir)DOMCount.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_CONSOLE;WIN32;_DEBUG;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) MultiThreadedDebug $(IntDir)DOMCount.pch $(IntDir) $(IntDir) $(IntDir)DOMCount_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMCount.pdb Console false X64 $(OutDir)DOMCount.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_CONSOLE;WIN64;_DEBUG;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) MultiThreadedDebug $(IntDir)DOMCount.pch $(IntDir) $(IntDir) $(IntDir)DOMCount_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMCount.pdb Console false MachineX64 $(OutDir)DOMCount.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_CONSOLE;WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true $(IntDir)DOMCount.pch $(IntDir) $(IntDir) $(IntDir)DOMCount_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMCount.pdb Console false X64 $(OutDir)DOMCount.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_CONSOLE;WIN64;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true $(IntDir)DOMCount.pch $(IntDir) $(IntDir) $(IntDir)DOMCount_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMCount.pdb Console false MachineX64 $(OutDir)DOMCount.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_CONSOLE;WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)DOMCount.pch $(IntDir) $(IntDir) $(IntDir)DOMCount_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMCount.pdb Console false X64 $(OutDir)DOMCount.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_DEPRECATE;_CONSOLE;WIN64;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)DOMCount.pch $(IntDir) $(IntDir) $(IntDir)DOMCount_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMCount.pdb Console false MachineX64 {152ce948-f659-4206-a50a-1d2b9658ef96} false xerces-c-3.1.1/projects/Win32/VC10/xerces-all/xerces-all.sln0000644000175000017500000020551711362112176022275 0ustar borisborisMicrosoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "all", "all\all.vcxproj", "{E305E46C-9D74-4755-BF57-29DEAEF4DCDD}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CreateDOMDocument", "CreateDOMDocument\CreateDOMDocument.vcxproj", "{8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DOMCount", "DOMCount\DOMCount.vcxproj", "{60E3008A-0D78-4B25-A12E-9D7A3921F67C}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DOMMemTest", "DOMMemTest\DOMMemTest.vcxproj", "{0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DOMNormalizerTest", "DOMNormalizerTest\DOMNormalizerTest.vcxproj", "{BE9C14B1-2301-4C62-85E2-B583D22AE29C}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DOMPrint", "DOMPrint\DOMPrint.vcxproj", "{056463A8-AEDD-4B92-BC24-C0C154C0379C}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DOMTest", "DOMTest\DOMTest.vcxproj", "{3C777DB7-42D1-4AA6-A051-24213E411891}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DOMTraversalTest", "DOMTraversalTest\DOMTraversalTest.vcxproj", "{DFC196B9-2146-4CDA-AC0A-632BD38FA41D}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DOMTypeInfoTest", "DOMTypeInfoTest\DOMTypeInfoTest.vcxproj", "{15A10DF2-F551-4306-A4CC-690F58C58081}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EncodingTest", "EncodingTest\EncodingTest.vcxproj", "{B8B50FE7-B620-4D19-A147-B167D087DD53}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EnumVal", "EnumVal\EnumVal.vcxproj", "{26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "InitTermTest", "InitTermTest\InitTermTest.vcxproj", "{2682B2AB-E341-4528-85AB-BE95DE77A9BC}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MemHandlerTest", "MemHandlerTest\MemHandlerTest.vcxproj", "{160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MemParse", "MemParse\MemParse.vcxproj", "{6F412978-851F-494D-8C3D-DF97A515EDF5}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PParse", "PParse\PParse.vcxproj", "{65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RangeTest", "RangeTest\RangeTest.vcxproj", "{BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Redirect", "Redirect\Redirect.vcxproj", "{569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SAX2Count", "SAX2Count\SAX2Count.vcxproj", "{FB794093-CA26-4DBF-A7DF-1A62B7C872D5}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SAX2Print", "SAX2Print\SAX2Print.vcxproj", "{7259B5D2-54FE-4142-9321-0572C615F0A2}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SAXCount", "SAXCount\SAXCount.vcxproj", "{2AB767A9-6A3B-4993-8FDB-3E6A30560739}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SAXPrint", "SAXPrint\SAXPrint.vcxproj", "{959445AC-9081-4590-B457-C96164CF4BFA}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SEnumVal", "SEnumVal\SEnumVal.vcxproj", "{2230D938-8908-4C12-9E96-9C6C4048A52D}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StdInParse", "StdInParse\StdInParse.vcxproj", "{D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ThreadTest", "ThreadTest\ThreadTest.vcxproj", "{792C0625-DE93-4756-AAFA-23CCED2157B0}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XercesLib", "XercesLib\XercesLib.vcxproj", "{152CE948-F659-4206-A50A-1D2B9658EF96}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XSerializerTest", "XSerializerTest\XSerializerTest.vcxproj", "{4D8FEA60-A74F-4267-852F-C421AF12198D}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PSVIWriter", "PSVIWriter\PSVIWriter.vcxproj", "{FB7E86DB-9557-4044-8FF7-A9131BB021E6}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SCMPrint", "SCMPrint\SCMPrint.vcxproj", "{895EDBF3-6A97-4641-8D96-7282005F8DD7}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XSValueTest", "XSValueTest\XSValueTest.vcxproj", "{D3552FBC-8618-43C5-86C0-237536D8E700}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XInclude", "XInclude\XInclude.vcxproj", "{117D4C21-4C54-478F-83AE-D6179A8D7EF1}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XSTSHarness", "XSTSHarness\XSTSHarness.vcxproj", "{D92806DD-C591-4782-BCF2-8A0D0338D67A}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 ICU Debug|Win32 = ICU Debug|Win32 ICU Debug|x64 = ICU Debug|x64 ICU Release|Win32 = ICU Release|Win32 ICU Release|x64 = ICU Release|x64 Release|Win32 = Release|Win32 Release|x64 = Release|x64 Static Debug|Win32 = Static Debug|Win32 Static Debug|x64 = Static Debug|x64 Static Release|Win32 = Static Release|Win32 Static Release|x64 = Static Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Debug|Win32.ActiveCfg = Debug|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Debug|Win32.Build.0 = Debug|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Debug|x64.ActiveCfg = Debug|x64 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Debug|x64.Build.0 = Debug|x64 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.ICU Debug|x64.Build.0 = ICU Debug|x64 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.ICU Release|Win32.Build.0 = ICU Release|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.ICU Release|x64.ActiveCfg = ICU Release|x64 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.ICU Release|x64.Build.0 = ICU Release|x64 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Release|Win32.ActiveCfg = Release|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Release|Win32.Build.0 = Release|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Release|x64.ActiveCfg = Release|x64 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Release|x64.Build.0 = Release|x64 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Static Debug|Win32.Build.0 = Static Debug|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Static Debug|x64.ActiveCfg = Static Debug|x64 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Static Debug|x64.Build.0 = Static Debug|x64 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Static Release|Win32.ActiveCfg = Static Release|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Static Release|Win32.Build.0 = Static Release|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Static Release|x64.ActiveCfg = Static Release|x64 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Static Release|x64.Build.0 = Static Release|x64 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Debug|Win32.ActiveCfg = Debug|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Debug|Win32.Build.0 = Debug|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Debug|x64.ActiveCfg = Debug|x64 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Debug|x64.Build.0 = Debug|x64 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.ICU Debug|x64.Build.0 = ICU Debug|x64 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.ICU Release|Win32.Build.0 = ICU Release|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.ICU Release|x64.ActiveCfg = ICU Release|x64 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.ICU Release|x64.Build.0 = ICU Release|x64 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Release|Win32.ActiveCfg = Release|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Release|Win32.Build.0 = Release|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Release|x64.ActiveCfg = Release|x64 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Release|x64.Build.0 = Release|x64 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Static Debug|Win32.Build.0 = Static Debug|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Static Debug|x64.ActiveCfg = Static Debug|x64 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Static Debug|x64.Build.0 = Static Debug|x64 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Static Release|Win32.ActiveCfg = Static Release|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Static Release|Win32.Build.0 = Static Release|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Static Release|x64.ActiveCfg = Static Release|x64 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Static Release|x64.Build.0 = Static Release|x64 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Debug|Win32.ActiveCfg = Debug|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Debug|Win32.Build.0 = Debug|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Debug|x64.ActiveCfg = Debug|x64 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Debug|x64.Build.0 = Debug|x64 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.ICU Debug|x64.Build.0 = ICU Debug|x64 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.ICU Release|Win32.Build.0 = ICU Release|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.ICU Release|x64.ActiveCfg = ICU Release|x64 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.ICU Release|x64.Build.0 = ICU Release|x64 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Release|Win32.ActiveCfg = Release|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Release|Win32.Build.0 = Release|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Release|x64.ActiveCfg = Release|x64 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Release|x64.Build.0 = Release|x64 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Static Debug|Win32.Build.0 = Static Debug|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Static Debug|x64.ActiveCfg = Static Debug|x64 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Static Debug|x64.Build.0 = Static Debug|x64 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Static Release|Win32.ActiveCfg = Static Release|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Static Release|Win32.Build.0 = Static Release|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Static Release|x64.ActiveCfg = Static Release|x64 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Static Release|x64.Build.0 = Static Release|x64 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Debug|Win32.ActiveCfg = Debug|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Debug|Win32.Build.0 = Debug|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Debug|x64.ActiveCfg = Debug|x64 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Debug|x64.Build.0 = Debug|x64 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.ICU Debug|x64.Build.0 = ICU Debug|x64 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.ICU Release|Win32.Build.0 = ICU Release|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.ICU Release|x64.ActiveCfg = ICU Release|x64 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.ICU Release|x64.Build.0 = ICU Release|x64 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Release|Win32.ActiveCfg = Release|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Release|Win32.Build.0 = Release|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Release|x64.ActiveCfg = Release|x64 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Release|x64.Build.0 = Release|x64 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Static Debug|Win32.Build.0 = Static Debug|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Static Debug|x64.ActiveCfg = Static Debug|x64 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Static Debug|x64.Build.0 = Static Debug|x64 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Static Release|Win32.ActiveCfg = Static Release|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Static Release|Win32.Build.0 = Static Release|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Static Release|x64.ActiveCfg = Static Release|x64 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Static Release|x64.Build.0 = Static Release|x64 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Debug|Win32.ActiveCfg = Debug|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Debug|Win32.Build.0 = Debug|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Debug|x64.ActiveCfg = Debug|x64 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Debug|x64.Build.0 = Debug|x64 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.ICU Debug|x64.Build.0 = ICU Debug|x64 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.ICU Release|Win32.Build.0 = ICU Release|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.ICU Release|x64.ActiveCfg = ICU Release|x64 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.ICU Release|x64.Build.0 = ICU Release|x64 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Release|Win32.ActiveCfg = Release|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Release|Win32.Build.0 = Release|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Release|x64.ActiveCfg = Release|x64 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Release|x64.Build.0 = Release|x64 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Static Debug|Win32.Build.0 = Static Debug|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Static Debug|x64.ActiveCfg = Static Debug|x64 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Static Debug|x64.Build.0 = Static Debug|x64 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Static Release|Win32.ActiveCfg = Static Release|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Static Release|Win32.Build.0 = Static Release|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Static Release|x64.ActiveCfg = Static Release|x64 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Static Release|x64.Build.0 = Static Release|x64 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Debug|Win32.ActiveCfg = Debug|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Debug|Win32.Build.0 = Debug|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Debug|x64.ActiveCfg = Debug|x64 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Debug|x64.Build.0 = Debug|x64 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.ICU Debug|x64.Build.0 = ICU Debug|x64 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.ICU Release|Win32.Build.0 = ICU Release|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.ICU Release|x64.ActiveCfg = ICU Release|x64 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.ICU Release|x64.Build.0 = ICU Release|x64 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Release|Win32.ActiveCfg = Release|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Release|Win32.Build.0 = Release|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Release|x64.ActiveCfg = Release|x64 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Release|x64.Build.0 = Release|x64 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Static Debug|Win32.Build.0 = Static Debug|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Static Debug|x64.ActiveCfg = Static Debug|x64 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Static Debug|x64.Build.0 = Static Debug|x64 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Static Release|Win32.ActiveCfg = Static Release|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Static Release|Win32.Build.0 = Static Release|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Static Release|x64.ActiveCfg = Static Release|x64 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Static Release|x64.Build.0 = Static Release|x64 {3C777DB7-42D1-4AA6-A051-24213E411891}.Debug|Win32.ActiveCfg = Debug|Win32 {3C777DB7-42D1-4AA6-A051-24213E411891}.Debug|Win32.Build.0 = Debug|Win32 {3C777DB7-42D1-4AA6-A051-24213E411891}.Debug|x64.ActiveCfg = Debug|x64 {3C777DB7-42D1-4AA6-A051-24213E411891}.Debug|x64.Build.0 = Debug|x64 {3C777DB7-42D1-4AA6-A051-24213E411891}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {3C777DB7-42D1-4AA6-A051-24213E411891}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {3C777DB7-42D1-4AA6-A051-24213E411891}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {3C777DB7-42D1-4AA6-A051-24213E411891}.ICU Debug|x64.Build.0 = ICU Debug|x64 {3C777DB7-42D1-4AA6-A051-24213E411891}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {3C777DB7-42D1-4AA6-A051-24213E411891}.ICU Release|Win32.Build.0 = ICU Release|Win32 {3C777DB7-42D1-4AA6-A051-24213E411891}.ICU Release|x64.ActiveCfg = ICU Release|x64 {3C777DB7-42D1-4AA6-A051-24213E411891}.ICU Release|x64.Build.0 = ICU Release|x64 {3C777DB7-42D1-4AA6-A051-24213E411891}.Release|Win32.ActiveCfg = Release|Win32 {3C777DB7-42D1-4AA6-A051-24213E411891}.Release|Win32.Build.0 = Release|Win32 {3C777DB7-42D1-4AA6-A051-24213E411891}.Release|x64.ActiveCfg = Release|x64 {3C777DB7-42D1-4AA6-A051-24213E411891}.Release|x64.Build.0 = Release|x64 {3C777DB7-42D1-4AA6-A051-24213E411891}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {3C777DB7-42D1-4AA6-A051-24213E411891}.Static Debug|Win32.Build.0 = Static Debug|Win32 {3C777DB7-42D1-4AA6-A051-24213E411891}.Static Debug|x64.ActiveCfg = Static Debug|x64 {3C777DB7-42D1-4AA6-A051-24213E411891}.Static Debug|x64.Build.0 = Static Debug|x64 {3C777DB7-42D1-4AA6-A051-24213E411891}.Static Release|Win32.ActiveCfg = Static Release|Win32 {3C777DB7-42D1-4AA6-A051-24213E411891}.Static Release|Win32.Build.0 = Static Release|Win32 {3C777DB7-42D1-4AA6-A051-24213E411891}.Static Release|x64.ActiveCfg = Static Release|x64 {3C777DB7-42D1-4AA6-A051-24213E411891}.Static Release|x64.Build.0 = Static Release|x64 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Debug|Win32.ActiveCfg = Debug|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Debug|Win32.Build.0 = Debug|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Debug|x64.ActiveCfg = Debug|x64 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Debug|x64.Build.0 = Debug|x64 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.ICU Debug|x64.Build.0 = ICU Debug|x64 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.ICU Release|Win32.Build.0 = ICU Release|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.ICU Release|x64.ActiveCfg = ICU Release|x64 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.ICU Release|x64.Build.0 = ICU Release|x64 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Release|Win32.ActiveCfg = Release|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Release|Win32.Build.0 = Release|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Release|x64.ActiveCfg = Release|x64 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Release|x64.Build.0 = Release|x64 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Static Debug|Win32.Build.0 = Static Debug|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Static Debug|x64.ActiveCfg = Static Debug|x64 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Static Debug|x64.Build.0 = Static Debug|x64 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Static Release|Win32.ActiveCfg = Static Release|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Static Release|Win32.Build.0 = Static Release|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Static Release|x64.ActiveCfg = Static Release|x64 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Static Release|x64.Build.0 = Static Release|x64 {15A10DF2-F551-4306-A4CC-690F58C58081}.Debug|Win32.ActiveCfg = Debug|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.Debug|Win32.Build.0 = Debug|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.Debug|x64.ActiveCfg = Debug|x64 {15A10DF2-F551-4306-A4CC-690F58C58081}.Debug|x64.Build.0 = Debug|x64 {15A10DF2-F551-4306-A4CC-690F58C58081}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {15A10DF2-F551-4306-A4CC-690F58C58081}.ICU Debug|x64.Build.0 = ICU Debug|x64 {15A10DF2-F551-4306-A4CC-690F58C58081}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.ICU Release|Win32.Build.0 = ICU Release|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.ICU Release|x64.ActiveCfg = ICU Release|x64 {15A10DF2-F551-4306-A4CC-690F58C58081}.ICU Release|x64.Build.0 = ICU Release|x64 {15A10DF2-F551-4306-A4CC-690F58C58081}.Release|Win32.ActiveCfg = Release|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.Release|Win32.Build.0 = Release|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.Release|x64.ActiveCfg = Release|x64 {15A10DF2-F551-4306-A4CC-690F58C58081}.Release|x64.Build.0 = Release|x64 {15A10DF2-F551-4306-A4CC-690F58C58081}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.Static Debug|Win32.Build.0 = Static Debug|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.Static Debug|x64.ActiveCfg = Static Debug|x64 {15A10DF2-F551-4306-A4CC-690F58C58081}.Static Debug|x64.Build.0 = Static Debug|x64 {15A10DF2-F551-4306-A4CC-690F58C58081}.Static Release|Win32.ActiveCfg = Static Release|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.Static Release|Win32.Build.0 = Static Release|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.Static Release|x64.ActiveCfg = Static Release|x64 {15A10DF2-F551-4306-A4CC-690F58C58081}.Static Release|x64.Build.0 = Static Release|x64 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Debug|Win32.ActiveCfg = Debug|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Debug|Win32.Build.0 = Debug|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Debug|x64.ActiveCfg = Debug|x64 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Debug|x64.Build.0 = Debug|x64 {B8B50FE7-B620-4D19-A147-B167D087DD53}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {B8B50FE7-B620-4D19-A147-B167D087DD53}.ICU Debug|x64.Build.0 = ICU Debug|x64 {B8B50FE7-B620-4D19-A147-B167D087DD53}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.ICU Release|Win32.Build.0 = ICU Release|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.ICU Release|x64.ActiveCfg = ICU Release|x64 {B8B50FE7-B620-4D19-A147-B167D087DD53}.ICU Release|x64.Build.0 = ICU Release|x64 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Release|Win32.ActiveCfg = Release|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Release|Win32.Build.0 = Release|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Release|x64.ActiveCfg = Release|x64 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Release|x64.Build.0 = Release|x64 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Static Debug|Win32.Build.0 = Static Debug|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Static Debug|x64.ActiveCfg = Static Debug|x64 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Static Debug|x64.Build.0 = Static Debug|x64 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Static Release|Win32.ActiveCfg = Static Release|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Static Release|Win32.Build.0 = Static Release|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Static Release|x64.ActiveCfg = Static Release|x64 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Static Release|x64.Build.0 = Static Release|x64 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Debug|Win32.ActiveCfg = Debug|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Debug|Win32.Build.0 = Debug|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Debug|x64.ActiveCfg = Debug|x64 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Debug|x64.Build.0 = Debug|x64 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.ICU Debug|x64.Build.0 = ICU Debug|x64 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.ICU Release|Win32.Build.0 = ICU Release|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.ICU Release|x64.ActiveCfg = ICU Release|x64 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.ICU Release|x64.Build.0 = ICU Release|x64 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Release|Win32.ActiveCfg = Release|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Release|Win32.Build.0 = Release|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Release|x64.ActiveCfg = Release|x64 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Release|x64.Build.0 = Release|x64 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Static Debug|Win32.Build.0 = Static Debug|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Static Debug|x64.ActiveCfg = Static Debug|x64 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Static Debug|x64.Build.0 = Static Debug|x64 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Static Release|Win32.ActiveCfg = Static Release|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Static Release|Win32.Build.0 = Static Release|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Static Release|x64.ActiveCfg = Static Release|x64 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Static Release|x64.Build.0 = Static Release|x64 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Debug|Win32.ActiveCfg = Debug|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Debug|Win32.Build.0 = Debug|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Debug|x64.ActiveCfg = Debug|x64 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Debug|x64.Build.0 = Debug|x64 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.ICU Debug|x64.Build.0 = ICU Debug|x64 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.ICU Release|Win32.Build.0 = ICU Release|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.ICU Release|x64.ActiveCfg = ICU Release|x64 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.ICU Release|x64.Build.0 = ICU Release|x64 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Release|Win32.ActiveCfg = Release|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Release|Win32.Build.0 = Release|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Release|x64.ActiveCfg = Release|x64 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Release|x64.Build.0 = Release|x64 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Static Debug|Win32.Build.0 = Static Debug|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Static Debug|x64.ActiveCfg = Static Debug|x64 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Static Debug|x64.Build.0 = Static Debug|x64 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Static Release|Win32.ActiveCfg = Static Release|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Static Release|Win32.Build.0 = Static Release|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Static Release|x64.ActiveCfg = Static Release|x64 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Static Release|x64.Build.0 = Static Release|x64 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Debug|Win32.ActiveCfg = Debug|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Debug|Win32.Build.0 = Debug|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Debug|x64.ActiveCfg = Debug|x64 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Debug|x64.Build.0 = Debug|x64 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.ICU Debug|x64.Build.0 = ICU Debug|x64 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.ICU Release|Win32.Build.0 = ICU Release|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.ICU Release|x64.ActiveCfg = ICU Release|x64 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.ICU Release|x64.Build.0 = ICU Release|x64 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Release|Win32.ActiveCfg = Release|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Release|Win32.Build.0 = Release|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Release|x64.ActiveCfg = Release|x64 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Release|x64.Build.0 = Release|x64 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Static Debug|Win32.Build.0 = Static Debug|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Static Debug|x64.ActiveCfg = Static Debug|x64 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Static Debug|x64.Build.0 = Static Debug|x64 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Static Release|Win32.ActiveCfg = Static Release|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Static Release|Win32.Build.0 = Static Release|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Static Release|x64.ActiveCfg = Static Release|x64 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Static Release|x64.Build.0 = Static Release|x64 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Debug|Win32.ActiveCfg = Debug|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Debug|Win32.Build.0 = Debug|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Debug|x64.ActiveCfg = Debug|x64 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Debug|x64.Build.0 = Debug|x64 {6F412978-851F-494D-8C3D-DF97A515EDF5}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {6F412978-851F-494D-8C3D-DF97A515EDF5}.ICU Debug|x64.Build.0 = ICU Debug|x64 {6F412978-851F-494D-8C3D-DF97A515EDF5}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.ICU Release|Win32.Build.0 = ICU Release|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.ICU Release|x64.ActiveCfg = ICU Release|x64 {6F412978-851F-494D-8C3D-DF97A515EDF5}.ICU Release|x64.Build.0 = ICU Release|x64 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Release|Win32.ActiveCfg = Release|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Release|Win32.Build.0 = Release|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Release|x64.ActiveCfg = Release|x64 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Release|x64.Build.0 = Release|x64 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Static Debug|Win32.Build.0 = Static Debug|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Static Debug|x64.ActiveCfg = Static Debug|x64 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Static Debug|x64.Build.0 = Static Debug|x64 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Static Release|Win32.ActiveCfg = Static Release|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Static Release|Win32.Build.0 = Static Release|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Static Release|x64.ActiveCfg = Static Release|x64 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Static Release|x64.Build.0 = Static Release|x64 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Debug|Win32.ActiveCfg = Debug|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Debug|Win32.Build.0 = Debug|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Debug|x64.ActiveCfg = Debug|x64 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Debug|x64.Build.0 = Debug|x64 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.ICU Debug|x64.Build.0 = ICU Debug|x64 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.ICU Release|Win32.Build.0 = ICU Release|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.ICU Release|x64.ActiveCfg = ICU Release|x64 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.ICU Release|x64.Build.0 = ICU Release|x64 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Release|Win32.ActiveCfg = Release|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Release|Win32.Build.0 = Release|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Release|x64.ActiveCfg = Release|x64 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Release|x64.Build.0 = Release|x64 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Static Debug|Win32.Build.0 = Static Debug|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Static Debug|x64.ActiveCfg = Static Debug|x64 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Static Debug|x64.Build.0 = Static Debug|x64 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Static Release|Win32.ActiveCfg = Static Release|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Static Release|Win32.Build.0 = Static Release|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Static Release|x64.ActiveCfg = Static Release|x64 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Static Release|x64.Build.0 = Static Release|x64 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Debug|Win32.ActiveCfg = Debug|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Debug|Win32.Build.0 = Debug|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Debug|x64.ActiveCfg = Debug|x64 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Debug|x64.Build.0 = Debug|x64 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.ICU Debug|x64.Build.0 = ICU Debug|x64 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.ICU Release|Win32.Build.0 = ICU Release|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.ICU Release|x64.ActiveCfg = ICU Release|x64 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.ICU Release|x64.Build.0 = ICU Release|x64 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Release|Win32.ActiveCfg = Release|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Release|Win32.Build.0 = Release|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Release|x64.ActiveCfg = Release|x64 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Release|x64.Build.0 = Release|x64 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Static Debug|Win32.Build.0 = Static Debug|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Static Debug|x64.ActiveCfg = Static Debug|x64 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Static Debug|x64.Build.0 = Static Debug|x64 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Static Release|Win32.ActiveCfg = Static Release|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Static Release|Win32.Build.0 = Static Release|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Static Release|x64.ActiveCfg = Static Release|x64 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Static Release|x64.Build.0 = Static Release|x64 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Debug|Win32.ActiveCfg = Debug|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Debug|Win32.Build.0 = Debug|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Debug|x64.ActiveCfg = Debug|x64 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Debug|x64.Build.0 = Debug|x64 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.ICU Debug|x64.Build.0 = ICU Debug|x64 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.ICU Release|Win32.Build.0 = ICU Release|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.ICU Release|x64.ActiveCfg = ICU Release|x64 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.ICU Release|x64.Build.0 = ICU Release|x64 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Release|Win32.ActiveCfg = Release|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Release|Win32.Build.0 = Release|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Release|x64.ActiveCfg = Release|x64 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Release|x64.Build.0 = Release|x64 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Static Debug|Win32.Build.0 = Static Debug|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Static Debug|x64.ActiveCfg = Static Debug|x64 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Static Debug|x64.Build.0 = Static Debug|x64 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Static Release|Win32.ActiveCfg = Static Release|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Static Release|Win32.Build.0 = Static Release|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Static Release|x64.ActiveCfg = Static Release|x64 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Static Release|x64.Build.0 = Static Release|x64 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Debug|Win32.ActiveCfg = Debug|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Debug|Win32.Build.0 = Debug|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Debug|x64.ActiveCfg = Debug|x64 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Debug|x64.Build.0 = Debug|x64 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.ICU Debug|x64.Build.0 = ICU Debug|x64 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.ICU Release|Win32.Build.0 = ICU Release|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.ICU Release|x64.ActiveCfg = ICU Release|x64 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.ICU Release|x64.Build.0 = ICU Release|x64 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Release|Win32.ActiveCfg = Release|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Release|Win32.Build.0 = Release|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Release|x64.ActiveCfg = Release|x64 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Release|x64.Build.0 = Release|x64 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Static Debug|Win32.Build.0 = Static Debug|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Static Debug|x64.ActiveCfg = Static Debug|x64 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Static Debug|x64.Build.0 = Static Debug|x64 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Static Release|Win32.ActiveCfg = Static Release|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Static Release|Win32.Build.0 = Static Release|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Static Release|x64.ActiveCfg = Static Release|x64 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Static Release|x64.Build.0 = Static Release|x64 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Debug|Win32.ActiveCfg = Debug|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Debug|Win32.Build.0 = Debug|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Debug|x64.ActiveCfg = Debug|x64 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Debug|x64.Build.0 = Debug|x64 {7259B5D2-54FE-4142-9321-0572C615F0A2}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {7259B5D2-54FE-4142-9321-0572C615F0A2}.ICU Debug|x64.Build.0 = ICU Debug|x64 {7259B5D2-54FE-4142-9321-0572C615F0A2}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.ICU Release|Win32.Build.0 = ICU Release|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.ICU Release|x64.ActiveCfg = ICU Release|x64 {7259B5D2-54FE-4142-9321-0572C615F0A2}.ICU Release|x64.Build.0 = ICU Release|x64 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Release|Win32.ActiveCfg = Release|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Release|Win32.Build.0 = Release|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Release|x64.ActiveCfg = Release|x64 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Release|x64.Build.0 = Release|x64 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Static Debug|Win32.Build.0 = Static Debug|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Static Debug|x64.ActiveCfg = Static Debug|x64 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Static Debug|x64.Build.0 = Static Debug|x64 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Static Release|Win32.ActiveCfg = Static Release|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Static Release|Win32.Build.0 = Static Release|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Static Release|x64.ActiveCfg = Static Release|x64 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Static Release|x64.Build.0 = Static Release|x64 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Debug|Win32.ActiveCfg = Debug|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Debug|Win32.Build.0 = Debug|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Debug|x64.ActiveCfg = Debug|x64 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Debug|x64.Build.0 = Debug|x64 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.ICU Debug|x64.Build.0 = ICU Debug|x64 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.ICU Release|Win32.Build.0 = ICU Release|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.ICU Release|x64.ActiveCfg = ICU Release|x64 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.ICU Release|x64.Build.0 = ICU Release|x64 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Release|Win32.ActiveCfg = Release|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Release|Win32.Build.0 = Release|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Release|x64.ActiveCfg = Release|x64 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Release|x64.Build.0 = Release|x64 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Static Debug|Win32.Build.0 = Static Debug|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Static Debug|x64.ActiveCfg = Static Debug|x64 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Static Debug|x64.Build.0 = Static Debug|x64 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Static Release|Win32.ActiveCfg = Static Release|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Static Release|Win32.Build.0 = Static Release|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Static Release|x64.ActiveCfg = Static Release|x64 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Static Release|x64.Build.0 = Static Release|x64 {959445AC-9081-4590-B457-C96164CF4BFA}.Debug|Win32.ActiveCfg = Debug|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.Debug|Win32.Build.0 = Debug|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.Debug|x64.ActiveCfg = Debug|x64 {959445AC-9081-4590-B457-C96164CF4BFA}.Debug|x64.Build.0 = Debug|x64 {959445AC-9081-4590-B457-C96164CF4BFA}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {959445AC-9081-4590-B457-C96164CF4BFA}.ICU Debug|x64.Build.0 = ICU Debug|x64 {959445AC-9081-4590-B457-C96164CF4BFA}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.ICU Release|Win32.Build.0 = ICU Release|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.ICU Release|x64.ActiveCfg = ICU Release|x64 {959445AC-9081-4590-B457-C96164CF4BFA}.ICU Release|x64.Build.0 = ICU Release|x64 {959445AC-9081-4590-B457-C96164CF4BFA}.Release|Win32.ActiveCfg = Release|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.Release|Win32.Build.0 = Release|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.Release|x64.ActiveCfg = Release|x64 {959445AC-9081-4590-B457-C96164CF4BFA}.Release|x64.Build.0 = Release|x64 {959445AC-9081-4590-B457-C96164CF4BFA}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.Static Debug|Win32.Build.0 = Static Debug|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.Static Debug|x64.ActiveCfg = Static Debug|x64 {959445AC-9081-4590-B457-C96164CF4BFA}.Static Debug|x64.Build.0 = Static Debug|x64 {959445AC-9081-4590-B457-C96164CF4BFA}.Static Release|Win32.ActiveCfg = Static Release|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.Static Release|Win32.Build.0 = Static Release|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.Static Release|x64.ActiveCfg = Static Release|x64 {959445AC-9081-4590-B457-C96164CF4BFA}.Static Release|x64.Build.0 = Static Release|x64 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Debug|Win32.ActiveCfg = Debug|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Debug|Win32.Build.0 = Debug|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Debug|x64.ActiveCfg = Debug|x64 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Debug|x64.Build.0 = Debug|x64 {2230D938-8908-4C12-9E96-9C6C4048A52D}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {2230D938-8908-4C12-9E96-9C6C4048A52D}.ICU Debug|x64.Build.0 = ICU Debug|x64 {2230D938-8908-4C12-9E96-9C6C4048A52D}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.ICU Release|Win32.Build.0 = ICU Release|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.ICU Release|x64.ActiveCfg = ICU Release|x64 {2230D938-8908-4C12-9E96-9C6C4048A52D}.ICU Release|x64.Build.0 = ICU Release|x64 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Release|Win32.ActiveCfg = Release|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Release|Win32.Build.0 = Release|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Release|x64.ActiveCfg = Release|x64 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Release|x64.Build.0 = Release|x64 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Static Debug|Win32.Build.0 = Static Debug|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Static Debug|x64.ActiveCfg = Static Debug|x64 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Static Debug|x64.Build.0 = Static Debug|x64 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Static Release|Win32.ActiveCfg = Static Release|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Static Release|Win32.Build.0 = Static Release|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Static Release|x64.ActiveCfg = Static Release|x64 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Static Release|x64.Build.0 = Static Release|x64 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Debug|Win32.ActiveCfg = Debug|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Debug|Win32.Build.0 = Debug|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Debug|x64.ActiveCfg = Debug|x64 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Debug|x64.Build.0 = Debug|x64 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.ICU Debug|x64.Build.0 = ICU Debug|x64 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.ICU Release|Win32.Build.0 = ICU Release|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.ICU Release|x64.ActiveCfg = ICU Release|x64 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.ICU Release|x64.Build.0 = ICU Release|x64 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Release|Win32.ActiveCfg = Release|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Release|Win32.Build.0 = Release|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Release|x64.ActiveCfg = Release|x64 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Release|x64.Build.0 = Release|x64 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Static Debug|Win32.Build.0 = Static Debug|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Static Debug|x64.ActiveCfg = Static Debug|x64 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Static Debug|x64.Build.0 = Static Debug|x64 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Static Release|Win32.ActiveCfg = Static Release|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Static Release|Win32.Build.0 = Static Release|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Static Release|x64.ActiveCfg = Static Release|x64 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Static Release|x64.Build.0 = Static Release|x64 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Debug|Win32.ActiveCfg = Debug|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Debug|Win32.Build.0 = Debug|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Debug|x64.ActiveCfg = Debug|x64 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Debug|x64.Build.0 = Debug|x64 {792C0625-DE93-4756-AAFA-23CCED2157B0}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {792C0625-DE93-4756-AAFA-23CCED2157B0}.ICU Debug|x64.Build.0 = ICU Debug|x64 {792C0625-DE93-4756-AAFA-23CCED2157B0}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.ICU Release|Win32.Build.0 = ICU Release|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.ICU Release|x64.ActiveCfg = ICU Release|x64 {792C0625-DE93-4756-AAFA-23CCED2157B0}.ICU Release|x64.Build.0 = ICU Release|x64 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Release|Win32.ActiveCfg = Release|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Release|Win32.Build.0 = Release|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Release|x64.ActiveCfg = Release|x64 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Release|x64.Build.0 = Release|x64 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Static Debug|Win32.Build.0 = Static Debug|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Static Debug|x64.ActiveCfg = Static Debug|x64 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Static Debug|x64.Build.0 = Static Debug|x64 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Static Release|Win32.ActiveCfg = Static Release|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Static Release|Win32.Build.0 = Static Release|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Static Release|x64.ActiveCfg = Static Release|x64 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Static Release|x64.Build.0 = Static Release|x64 {152CE948-F659-4206-A50A-1D2B9658EF96}.Debug|Win32.ActiveCfg = Debug|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.Debug|Win32.Build.0 = Debug|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.Debug|x64.ActiveCfg = Debug|x64 {152CE948-F659-4206-A50A-1D2B9658EF96}.Debug|x64.Build.0 = Debug|x64 {152CE948-F659-4206-A50A-1D2B9658EF96}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {152CE948-F659-4206-A50A-1D2B9658EF96}.ICU Debug|x64.Build.0 = ICU Debug|x64 {152CE948-F659-4206-A50A-1D2B9658EF96}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.ICU Release|Win32.Build.0 = ICU Release|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.ICU Release|x64.ActiveCfg = ICU Release|x64 {152CE948-F659-4206-A50A-1D2B9658EF96}.ICU Release|x64.Build.0 = ICU Release|x64 {152CE948-F659-4206-A50A-1D2B9658EF96}.Release|Win32.ActiveCfg = Release|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.Release|Win32.Build.0 = Release|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.Release|x64.ActiveCfg = Release|x64 {152CE948-F659-4206-A50A-1D2B9658EF96}.Release|x64.Build.0 = Release|x64 {152CE948-F659-4206-A50A-1D2B9658EF96}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.Static Debug|Win32.Build.0 = Static Debug|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.Static Debug|x64.ActiveCfg = Static Debug|x64 {152CE948-F659-4206-A50A-1D2B9658EF96}.Static Debug|x64.Build.0 = Static Debug|x64 {152CE948-F659-4206-A50A-1D2B9658EF96}.Static Release|Win32.ActiveCfg = Static Release|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.Static Release|Win32.Build.0 = Static Release|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.Static Release|x64.ActiveCfg = Static Release|x64 {152CE948-F659-4206-A50A-1D2B9658EF96}.Static Release|x64.Build.0 = Static Release|x64 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Debug|Win32.ActiveCfg = Debug|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Debug|Win32.Build.0 = Debug|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Debug|x64.ActiveCfg = Debug|x64 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Debug|x64.Build.0 = Debug|x64 {4D8FEA60-A74F-4267-852F-C421AF12198D}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {4D8FEA60-A74F-4267-852F-C421AF12198D}.ICU Debug|x64.Build.0 = ICU Debug|x64 {4D8FEA60-A74F-4267-852F-C421AF12198D}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.ICU Release|Win32.Build.0 = ICU Release|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.ICU Release|x64.ActiveCfg = ICU Release|x64 {4D8FEA60-A74F-4267-852F-C421AF12198D}.ICU Release|x64.Build.0 = ICU Release|x64 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Release|Win32.ActiveCfg = Release|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Release|Win32.Build.0 = Release|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Release|x64.ActiveCfg = Release|x64 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Release|x64.Build.0 = Release|x64 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Static Debug|Win32.Build.0 = Static Debug|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Static Debug|x64.ActiveCfg = Static Debug|x64 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Static Debug|x64.Build.0 = Static Debug|x64 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Static Release|Win32.ActiveCfg = Static Release|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Static Release|Win32.Build.0 = Static Release|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Static Release|x64.ActiveCfg = Static Release|x64 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Static Release|x64.Build.0 = Static Release|x64 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Debug|Win32.ActiveCfg = Debug|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Debug|Win32.Build.0 = Debug|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Debug|x64.ActiveCfg = Debug|x64 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Debug|x64.Build.0 = Debug|x64 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.ICU Debug|x64.Build.0 = ICU Debug|x64 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.ICU Release|Win32.Build.0 = ICU Release|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.ICU Release|x64.ActiveCfg = ICU Release|x64 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.ICU Release|x64.Build.0 = ICU Release|x64 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Release|Win32.ActiveCfg = Release|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Release|Win32.Build.0 = Release|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Release|x64.ActiveCfg = Release|x64 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Release|x64.Build.0 = Release|x64 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Static Debug|Win32.Build.0 = Static Debug|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Static Debug|x64.ActiveCfg = Static Debug|x64 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Static Debug|x64.Build.0 = Static Debug|x64 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Static Release|Win32.ActiveCfg = Static Release|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Static Release|Win32.Build.0 = Static Release|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Static Release|x64.ActiveCfg = Static Release|x64 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Static Release|x64.Build.0 = Static Release|x64 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Debug|Win32.ActiveCfg = Debug|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Debug|Win32.Build.0 = Debug|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Debug|x64.ActiveCfg = Debug|x64 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Debug|x64.Build.0 = Debug|x64 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.ICU Debug|x64.Build.0 = ICU Debug|x64 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.ICU Release|Win32.Build.0 = ICU Release|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.ICU Release|x64.ActiveCfg = ICU Release|x64 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.ICU Release|x64.Build.0 = ICU Release|x64 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Release|Win32.ActiveCfg = Release|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Release|Win32.Build.0 = Release|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Release|x64.ActiveCfg = Release|x64 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Release|x64.Build.0 = Release|x64 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Static Debug|Win32.Build.0 = Static Debug|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Static Debug|x64.ActiveCfg = Static Debug|x64 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Static Debug|x64.Build.0 = Static Debug|x64 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Static Release|Win32.ActiveCfg = Static Release|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Static Release|Win32.Build.0 = Static Release|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Static Release|x64.ActiveCfg = Static Release|x64 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Static Release|x64.Build.0 = Static Release|x64 {D3552FBC-8618-43C5-86C0-237536D8E700}.Debug|Win32.ActiveCfg = Debug|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.Debug|Win32.Build.0 = Debug|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.Debug|x64.ActiveCfg = Debug|x64 {D3552FBC-8618-43C5-86C0-237536D8E700}.Debug|x64.Build.0 = Debug|x64 {D3552FBC-8618-43C5-86C0-237536D8E700}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {D3552FBC-8618-43C5-86C0-237536D8E700}.ICU Debug|x64.Build.0 = ICU Debug|x64 {D3552FBC-8618-43C5-86C0-237536D8E700}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.ICU Release|Win32.Build.0 = ICU Release|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.ICU Release|x64.ActiveCfg = ICU Release|x64 {D3552FBC-8618-43C5-86C0-237536D8E700}.ICU Release|x64.Build.0 = ICU Release|x64 {D3552FBC-8618-43C5-86C0-237536D8E700}.Release|Win32.ActiveCfg = Release|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.Release|Win32.Build.0 = Release|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.Release|x64.ActiveCfg = Release|x64 {D3552FBC-8618-43C5-86C0-237536D8E700}.Release|x64.Build.0 = Release|x64 {D3552FBC-8618-43C5-86C0-237536D8E700}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.Static Debug|Win32.Build.0 = Static Debug|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.Static Debug|x64.ActiveCfg = Static Debug|x64 {D3552FBC-8618-43C5-86C0-237536D8E700}.Static Debug|x64.Build.0 = Static Debug|x64 {D3552FBC-8618-43C5-86C0-237536D8E700}.Static Release|Win32.ActiveCfg = Static Release|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.Static Release|Win32.Build.0 = Static Release|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.Static Release|x64.ActiveCfg = Static Release|x64 {D3552FBC-8618-43C5-86C0-237536D8E700}.Static Release|x64.Build.0 = Static Release|x64 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Debug|Win32.ActiveCfg = Debug|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Debug|Win32.Build.0 = Debug|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Debug|x64.ActiveCfg = Debug|x64 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Debug|x64.Build.0 = Debug|x64 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.ICU Debug|x64.Build.0 = ICU Debug|x64 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.ICU Release|Win32.Build.0 = ICU Release|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.ICU Release|x64.ActiveCfg = ICU Release|x64 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.ICU Release|x64.Build.0 = ICU Release|x64 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Release|Win32.ActiveCfg = Release|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Release|Win32.Build.0 = Release|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Release|x64.ActiveCfg = Release|x64 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Release|x64.Build.0 = Release|x64 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Static Debug|Win32.Build.0 = Static Debug|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Static Debug|x64.ActiveCfg = Static Debug|x64 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Static Debug|x64.Build.0 = Static Debug|x64 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Static Release|Win32.ActiveCfg = Static Release|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Static Release|Win32.Build.0 = Static Release|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Static Release|x64.ActiveCfg = Static Release|x64 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Static Release|x64.Build.0 = Static Release|x64 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Debug|Win32.ActiveCfg = Debug|Win32 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Debug|Win32.Build.0 = Debug|Win32 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Debug|x64.ActiveCfg = Debug|x64 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Debug|x64.Build.0 = Debug|x64 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.ICU Debug|x64.Build.0 = ICU Debug|x64 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.ICU Release|Win32.Build.0 = ICU Release|Win32 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.ICU Release|x64.ActiveCfg = ICU Release|x64 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.ICU Release|x64.Build.0 = ICU Release|x64 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Release|Win32.ActiveCfg = Release|Win32 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Release|Win32.Build.0 = Release|Win32 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Release|x64.ActiveCfg = Release|x64 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Release|x64.Build.0 = Release|x64 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Static Debug|Win32.Build.0 = Static Debug|Win32 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Static Debug|x64.ActiveCfg = Static Debug|x64 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Static Debug|x64.Build.0 = Static Debug|x64 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Static Release|Win32.ActiveCfg = Static Release|Win32 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Static Release|Win32.Build.0 = Static Release|Win32 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Static Release|x64.ActiveCfg = Static Release|x64 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Static Release|x64.Build.0 = Static Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(DPCodeReviewSolutionGUID) = preSolution DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000} EndGlobalSection EndGlobal xerces-c-3.1.1/projects/Win32/VC10/xerces-all/all/0000755000175000017500000000000011363617267020272 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC10/xerces-all/all/all.vcxproj0000644000175000017500000004565011362112176022455 0ustar borisboris Debug Win32 Debug x64 ICU Debug Win32 ICU Debug x64 ICU Release Win32 ICU Release x64 Release Win32 Release x64 Static Debug Win32 Static Debug x64 Static Release Win32 Static Release x64 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD} MakeFileProj Utility false Utility false Utility false Utility false Utility false Utility false Utility false Utility false Utility false Utility false Utility false Utility false <_ProjectFileVersion>10.0.30319.1 .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ $(Configuration)\ $(Configuration)\ .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ $(Configuration)\ $(Configuration)\ .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ X64 X64 X64 X64 X64 X64 {8709dc2a-0ec9-4b67-9e98-95d5174b2c3f} false {60e3008a-0d78-4b25-a12e-9d7a3921f67c} false {0d9cb6cf-db0b-495d-b674-8fc3dd3c12c2} false {be9c14b1-2301-4c62-85e2-b583d22ae29c} false {056463a8-aedd-4b92-bc24-c0c154c0379c} false {3c777db7-42d1-4aa6-a051-24213e411891} false {dfc196b9-2146-4cda-ac0a-632bd38fa41d} false {15a10df2-f551-4306-a4cc-690f58c58081} false {b8b50fe7-b620-4d19-a147-b167d087dd53} false {26a4fa00-db6e-43fa-83d4-0fc3a5472a27} false {2682b2ab-e341-4528-85ab-be95de77a9bc} false {160ac448-ad35-4fa9-8c4d-ff46a0e5be5d} false {6f412978-851f-494d-8c3d-df97a515edf5} false {65be6cca-6f7f-4db9-a6fd-c220e9fe87ad} false {fb7e86db-9557-4044-8ff7-a9131bb021e6} false {bbd46c34-dea0-42ab-96ab-e87c6371a6c2} false {569d5a1e-c582-40b7-8bfc-fc7b5d4dda75} false {fb794093-ca26-4dbf-a7df-1a62b7c872d5} false {7259b5d2-54fe-4142-9321-0572c615f0a2} false {2ab767a9-6a3b-4993-8fdb-3e6a30560739} false {959445ac-9081-4590-b457-c96164cf4bfa} false {895edbf3-6a97-4641-8d96-7282005f8dd7} false {2230d938-8908-4c12-9e96-9c6c4048a52d} false {d2d5d167-5dbc-4b68-9af0-b7a9ebe86284} false {792c0625-de93-4756-aafa-23cced2157b0} false {152ce948-f659-4206-a50a-1d2b9658ef96} false {117d4c21-4c54-478f-83ae-d6179a8d7ef1} false {4d8fea60-a74f-4267-852f-c421af12198d} false {d3552fbc-8618-43c5-86c0-237536d8e700} false xerces-c-3.1.1/projects/Win32/VC10/xerces-all/EnumVal/0000755000175000017500000000000011363617266021070 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC10/xerces-all/EnumVal/EnumVal.vcxproj0000644000175000017500000011066411363050663024054 0ustar borisboris Debug Win32 Debug x64 ICU Debug Win32 ICU Debug x64 ICU Release Win32 ICU Release x64 Release Win32 Release x64 Static Debug Win32 Static Debug x64 Static Release Win32 Static Release x64 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27} Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false <_ProjectFileVersion>10.0.30319.1 .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false $(OutDir)EnumVal.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)EnumVal.pch $(IntDir) $(IntDir) $(IntDir)EnumVal_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)EnumVal.pdb Console false X64 $(OutDir)EnumVal.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)EnumVal.pch $(IntDir) $(IntDir) $(IntDir)EnumVal_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)EnumVal.pdb Console false MachineX64 $(OutDir)EnumVal.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)EnumVal.pch $(IntDir) $(IntDir) $(IntDir)EnumVal_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)EnumVal.pdb Console false X64 $(OutDir)EnumVal.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)EnumVal.pch $(IntDir) $(IntDir) $(IntDir)EnumVal_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)EnumVal.pdb Console false MachineX64 $(OutDir)EnumVal.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true true $(IntDir)EnumVal.pch $(IntDir) $(IntDir) $(IntDir)EnumVal_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)EnumVal.pdb Console false X64 $(OutDir)EnumVal.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true true $(IntDir)EnumVal.pch $(IntDir) $(IntDir) $(IntDir)EnumVal_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)EnumVal.pdb Console false MachineX64 $(OutDir)EnumVal.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) MultiThreadedDebug true $(IntDir)EnumVal.pch $(IntDir) $(IntDir) $(IntDir)EnumVal_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)EnumVal.pdb Console false X64 $(OutDir)EnumVal.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) MultiThreadedDebug true $(IntDir)EnumVal.pch $(IntDir) $(IntDir) $(IntDir)EnumVal_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)EnumVal.pdb Console false MachineX64 $(OutDir)EnumVal.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)EnumVal.pch $(IntDir) $(IntDir) $(IntDir)EnumVal_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)EnumVal.pdb Console false X64 $(OutDir)EnumVal.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)EnumVal.pch $(IntDir) $(IntDir) $(IntDir)EnumVal_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)EnumVal.pdb Console false MachineX64 $(OutDir)EnumVal.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)EnumVal.pch $(IntDir) $(IntDir) $(IntDir)EnumVal_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)EnumVal.pdb Console false X64 $(OutDir)EnumVal.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true true $(IntDir)EnumVal.pch $(IntDir) $(IntDir) $(IntDir)EnumVal_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)EnumVal.pdb Console false MachineX64 {152ce948-f659-4206-a50a-1d2b9658ef96} false xerces-c-3.1.1/projects/Win32/VC10/xerces-all/DOMPrint/0000755000175000017500000000000011363617264021153 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC10/xerces-all/DOMPrint/DOMPrint.vcxproj0000644000175000017500000011150711363050663024223 0ustar borisboris Debug Win32 Debug x64 ICU Debug Win32 ICU Debug x64 ICU Release Win32 ICU Release x64 Release Win32 Release x64 Static Debug Win32 Static Debug x64 Static Release Win32 Static Release x64 {056463A8-AEDD-4B92-BC24-C0C154C0379C} Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false Application false <_ProjectFileVersion>10.0.30319.1 .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ true .\..\..\..\..\..\Build\Win32\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false .\..\..\..\..\..\Build\Win64\VC10\$(Configuration)\ $(OutDir)obj\$(ProjectName)\ false $(OutDir)DOMPrint.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)DOMPrint.pch $(IntDir) $(IntDir) $(IntDir)DOMPrint_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMPrint.pdb Console false X64 $(OutDir)DOMPrint.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)DOMPrint.pch $(IntDir) $(IntDir) $(IntDir)DOMPrint_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMPrint.pdb Console false MachineX64 $(OutDir)DOMPrint.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)DOMPrint.pch $(IntDir) $(IntDir) $(IntDir)DOMPrint_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMPrint.pdb Console false X64 $(OutDir)DOMPrint.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)DOMPrint.pch $(IntDir) $(IntDir) $(IntDir)DOMPrint_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMPrint.pdb Console false MachineX64 $(OutDir)DOMPrint.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true $(IntDir)DOMPrint.pch $(IntDir) $(IntDir) $(IntDir)DOMPrint_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMPrint.pdb Console false X64 $(OutDir)DOMPrint.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) true MultiThreaded true $(IntDir)DOMPrint.pch $(IntDir) $(IntDir) $(IntDir)DOMPrint_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMPrint.pdb Console false MachineX64 $(OutDir)DOMPrint.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) MultiThreadedDebug true $(IntDir)DOMPrint.pch $(IntDir) $(IntDir) $(IntDir)DOMPrint_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMPrint.pdb Console false X64 $(OutDir)DOMPrint.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;XERCES_STATIC_LIBRARY;%(PreprocessorDefinitions) MultiThreadedDebug true $(IntDir)DOMPrint.pch $(IntDir) $(IntDir) $(IntDir)DOMPrint_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_static_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMPrint.pdb Console false MachineX64 $(OutDir)DOMPrint.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)DOMPrint.pch $(IntDir) $(IntDir) $(IntDir)DOMPrint_vc100.pdb Level3 EditAndContinue Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMPrint.pdb Console false X64 $(OutDir)DOMPrint.tlb Disabled ..\..\..\..\..\src;%(AdditionalIncludeDirectories) _DEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) MultiThreadedDebugDLL true true $(IntDir)DOMPrint.pch $(IntDir) $(IntDir) $(IntDir)DOMPrint_vc100.pdb Level3 ProgramDatabase Default _DEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3D.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) true $(OutDir)DOMPrint.pdb Console false MachineX64 $(OutDir)DOMPrint.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN32;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)DOMPrint.pch $(IntDir) $(IntDir) $(IntDir)DOMPrint_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 %(AdditionalOptions) xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMPrint.pdb Console false X64 $(OutDir)DOMPrint.tlb AnySuitable ..\..\..\..\..\src;%(AdditionalIncludeDirectories) NDEBUG;_CONSOLE;WIN64;_WINDOWS;%(PreprocessorDefinitions) true MultiThreadedDLL true $(IntDir)DOMPrint.pch $(IntDir) $(IntDir) $(IntDir)DOMPrint_vc100.pdb Level3 Default NDEBUG;%(PreprocessorDefinitions) 0x0409 xerces-c_3.lib;%(AdditionalDependencies) $(TargetPath) $(OutDir);%(AdditionalLibraryDirectories) $(OutDir)DOMPrint.pdb Console false MachineX64 {152ce948-f659-4206-a50a-1d2b9658ef96} false xerces-c-3.1.1/projects/Win32/VC8/0000755000175000017500000000000011363617261015404 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC8/xerces-all/0000755000175000017500000000000011363617261017443 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC8/xerces-all/DOMNormalizerTest/0000755000175000017500000000000011363617261022765 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC8/xerces-all/DOMNormalizerTest/DOMNormalizerTest.vcproj0000644000175000017500000006325710764232420027543 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC8/xerces-all/SAXPrint/0000755000175000017500000000000011363617261021113 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC8/xerces-all/SAXPrint/SAXPrint.vcproj0000644000175000017500000006226210764232420024012 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC8/xerces-all/XSTSHarness/0000755000175000017500000000000011363617261021570 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC8/xerces-all/XSTSHarness/XSTSHarness.vcproj0000644000175000017500000005333711211526053025143 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC8/xerces-all/SCMPrint/0000755000175000017500000000000011363617261021102 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC8/xerces-all/SCMPrint/SCMPrint.vcproj0000644000175000017500000006124410764232420023767 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC8/xerces-all/SAXCount/0000755000175000017500000000000011363617261021107 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC8/xerces-all/SAXCount/SAXCount.vcproj0000644000175000017500000006273610764232420024010 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC8/xerces-all/DOMTraversalTest/0000755000175000017500000000000011363617261022606 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC8/xerces-all/DOMTraversalTest/DOMTraversalTest.vcproj0000644000175000017500000006347710764232420027211 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC8/xerces-all/MemParse/0000755000175000017500000000000011363617261021154 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC8/xerces-all/MemParse/MemParse.vcproj0000644000175000017500000006226210764232420024114 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC8/xerces-all/DOMMemTest/0000755000175000017500000000000011363617261021361 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC8/xerces-all/DOMMemTest/DOMMemTest.vcproj0000644000175000017500000006302510764232420024524 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC8/xerces-all/XSValueTest/0000755000175000017500000000000011363617261021632 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC8/xerces-all/XSValueTest/XSValueTest.vcproj0000644000175000017500000006233310764232420025247 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC8/xerces-all/RangeTest/0000755000175000017500000000000011363617261021337 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC8/xerces-all/RangeTest/RangeTest.vcproj0000644000175000017500000006171110764232420024460 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC8/xerces-all/Redirect/0000755000175000017500000000000011363617261021204 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC8/xerces-all/Redirect/Redirect.vcproj0000644000175000017500000006226210764232420024174 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC8/xerces-all/PSVIWriter/0000755000175000017500000000000011363617261021421 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC8/xerces-all/PSVIWriter/PSVIWriter.vcproj0000644000175000017500000006304610764232420024627 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC8/xerces-all/PParse/0000755000175000017500000000000011363617261020635 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC8/xerces-all/PParse/PParse.vcproj0000644000175000017500000006302010764232420023247 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC8/xerces-all/MemHandlerTest/0000755000175000017500000000000011363617261022317 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC8/xerces-all/MemHandlerTest/MemHandlerTest.vcproj0000644000175000017500000006346611042054515026426 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC8/xerces-all/InitTermTest/0000755000175000017500000000000011363617261022036 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC8/xerces-all/InitTermTest/InitTermTest.vcproj0000644000175000017500000006274210764232420025663 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC8/xerces-all/CreateDOMDocument/0000755000175000017500000000000011363617261022705 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC8/xerces-all/CreateDOMDocument/CreateDOMDocument.vcproj0000644000175000017500000006267310764232420027404 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC8/xerces-all/ThreadTest/0000755000175000017500000000000011363617261021512 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC8/xerces-all/ThreadTest/ThreadTest.vcproj0000644000175000017500000006254110764232420025010 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC8/xerces-all/XSerializerTest/0000755000175000017500000000000011363617261022544 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC8/xerces-all/XSerializerTest/XSerializerTest.vcproj0000644000175000017500000006376310764232420027103 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC8/xerces-all/SEnumVal/0000755000175000017500000000000011363617261021135 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC8/xerces-all/SEnumVal/SEnumVal.vcproj0000644000175000017500000006205210764232420024053 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC8/xerces-all/StdInParse/0000755000175000017500000000000011363617261021457 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC8/xerces-all/StdInParse/StdInParse.vcproj0000644000175000017500000006350110764232420024717 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC8/xerces-all/XInclude/0000755000175000017500000000000011363617261021156 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC8/xerces-all/XInclude/XInclude.vcproj0000644000175000017500000006167710764232420024131 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC8/xerces-all/SAX2Count/0000755000175000017500000000000011363617261021171 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC8/xerces-all/SAX2Count/SAX2Count.vcproj0000644000175000017500000006304310764232420024144 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC8/xerces-all/EncodingTest/0000755000175000017500000000000011363617261022031 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC8/xerces-all/EncodingTest/EncodingTest.vcproj0000644000175000017500000006250610764232420025647 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC8/xerces-all/DOMTest/0000755000175000017500000000000011363617261020722 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC8/xerces-all/DOMTest/DOMTest.vcproj0000644000175000017500000006215310764232420023427 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC8/xerces-all/XercesLib/0000755000175000017500000000000011363617261021323 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC8/xerces-all/XercesLib/XercesLib.vcproj0000644000175000017500000037407311360346021024434 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC8/xerces-all/DOMTypeInfoTest/0000755000175000017500000000000011363617261022400 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC8/xerces-all/DOMTypeInfoTest/DOMTypeInfoTest.vcproj0000644000175000017500000006350110764232420026561 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC8/xerces-all/SAX2Print/0000755000175000017500000000000011363617261021175 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC8/xerces-all/SAX2Print/SAX2Print.vcproj0000644000175000017500000006271110764232420024155 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC8/xerces-all/DOMCount/0000755000175000017500000000000011363617261021073 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC8/xerces-all/DOMCount/DOMCount.vcproj0000644000175000017500000006202510764232420023747 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC8/xerces-all/xerces-all.sln0000644000175000017500000022315510766501116022225 0ustar borisborisMicrosoft Visual Studio Solution File, Format Version 9.00 # Visual Studio 2005 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "all", "all\all.vcproj", "{E305E46C-9D74-4755-BF57-29DEAEF4DCDD}" ProjectSection(ProjectDependencies) = postProject {895EDBF3-6A97-4641-8D96-7282005F8DD7} = {895EDBF3-6A97-4641-8D96-7282005F8DD7} {15A10DF2-F551-4306-A4CC-690F58C58081} = {15A10DF2-F551-4306-A4CC-690F58C58081} {B8B50FE7-B620-4D19-A147-B167D087DD53} = {B8B50FE7-B620-4D19-A147-B167D087DD53} {FB7E86DB-9557-4044-8FF7-A9131BB021E6} = {FB7E86DB-9557-4044-8FF7-A9131BB021E6} {7259B5D2-54FE-4142-9321-0572C615F0A2} = {7259B5D2-54FE-4142-9321-0572C615F0A2} {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2} = {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2} {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD} = {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD} {D3552FBC-8618-43C5-86C0-237536D8E700} = {D3552FBC-8618-43C5-86C0-237536D8E700} {DFC196B9-2146-4CDA-AC0A-632BD38FA41D} = {DFC196B9-2146-4CDA-AC0A-632BD38FA41D} {3C777DB7-42D1-4AA6-A051-24213E411891} = {3C777DB7-42D1-4AA6-A051-24213E411891} {959445AC-9081-4590-B457-C96164CF4BFA} = {959445AC-9081-4590-B457-C96164CF4BFA} {2682B2AB-E341-4528-85AB-BE95DE77A9BC} = {2682B2AB-E341-4528-85AB-BE95DE77A9BC} {2AB767A9-6A3B-4993-8FDB-3E6A30560739} = {2AB767A9-6A3B-4993-8FDB-3E6A30560739} {056463A8-AEDD-4B92-BC24-C0C154C0379C} = {056463A8-AEDD-4B92-BC24-C0C154C0379C} {FB794093-CA26-4DBF-A7DF-1A62B7C872D5} = {FB794093-CA26-4DBF-A7DF-1A62B7C872D5} {60E3008A-0D78-4B25-A12E-9D7A3921F67C} = {60E3008A-0D78-4B25-A12E-9D7A3921F67C} {6F412978-851F-494D-8C3D-DF97A515EDF5} = {6F412978-851F-494D-8C3D-DF97A515EDF5} {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284} = {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284} {4D8FEA60-A74F-4267-852F-C421AF12198D} = {4D8FEA60-A74F-4267-852F-C421AF12198D} {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D} = {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D} {BE9C14B1-2301-4C62-85E2-B583D22AE29C} = {BE9C14B1-2301-4C62-85E2-B583D22AE29C} {2230D938-8908-4C12-9E96-9C6C4048A52D} = {2230D938-8908-4C12-9E96-9C6C4048A52D} {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2} = {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2} {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F} = {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F} {792C0625-DE93-4756-AAFA-23CCED2157B0} = {792C0625-DE93-4756-AAFA-23CCED2157B0} {117D4C21-4C54-478F-83AE-D6179A8D7EF1} = {117D4C21-4C54-478F-83AE-D6179A8D7EF1} {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75} = {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75} {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27} = {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CreateDOMDocument", "CreateDOMDocument\CreateDOMDocument.vcproj", "{8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DOMCount", "DOMCount\DOMCount.vcproj", "{60E3008A-0D78-4B25-A12E-9D7A3921F67C}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DOMMemTest", "DOMMemTest\DOMMemTest.vcproj", "{0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DOMNormalizerTest", "DOMNormalizerTest\DOMNormalizerTest.vcproj", "{BE9C14B1-2301-4C62-85E2-B583D22AE29C}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DOMPrint", "DOMPrint\DOMPrint.vcproj", "{056463A8-AEDD-4B92-BC24-C0C154C0379C}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DOMTest", "DOMTest\DOMTest.vcproj", "{3C777DB7-42D1-4AA6-A051-24213E411891}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DOMTraversalTest", "DOMTraversalTest\DOMTraversalTest.vcproj", "{DFC196B9-2146-4CDA-AC0A-632BD38FA41D}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DOMTypeInfoTest", "DOMTypeInfoTest\DOMTypeInfoTest.vcproj", "{15A10DF2-F551-4306-A4CC-690F58C58081}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EncodingTest", "EncodingTest\EncodingTest.vcproj", "{B8B50FE7-B620-4D19-A147-B167D087DD53}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EnumVal", "EnumVal\EnumVal.vcproj", "{26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "InitTermTest", "InitTermTest\InitTermTest.vcproj", "{2682B2AB-E341-4528-85AB-BE95DE77A9BC}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MemHandlerTest", "MemHandlerTest\MemHandlerTest.vcproj", "{160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MemParse", "MemParse\MemParse.vcproj", "{6F412978-851F-494D-8C3D-DF97A515EDF5}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PParse", "PParse\PParse.vcproj", "{65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RangeTest", "RangeTest\RangeTest.vcproj", "{BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Redirect", "Redirect\Redirect.vcproj", "{569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SAX2Count", "SAX2Count\SAX2Count.vcproj", "{FB794093-CA26-4DBF-A7DF-1A62B7C872D5}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SAX2Print", "SAX2Print\SAX2Print.vcproj", "{7259B5D2-54FE-4142-9321-0572C615F0A2}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SAXCount", "SAXCount\SAXCount.vcproj", "{2AB767A9-6A3B-4993-8FDB-3E6A30560739}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SAXPrint", "SAXPrint\SAXPrint.vcproj", "{959445AC-9081-4590-B457-C96164CF4BFA}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SEnumVal", "SEnumVal\SEnumVal.vcproj", "{2230D938-8908-4C12-9E96-9C6C4048A52D}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StdInParse", "StdInParse\StdInParse.vcproj", "{D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ThreadTest", "ThreadTest\ThreadTest.vcproj", "{792C0625-DE93-4756-AAFA-23CCED2157B0}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XercesLib", "XercesLib\XercesLib.vcproj", "{152CE948-F659-4206-A50A-1D2B9658EF96}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XSerializerTest", "XSerializerTest\XSerializerTest.vcproj", "{4D8FEA60-A74F-4267-852F-C421AF12198D}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PSVIWriter", "PSVIWriter\PSVIWriter.vcproj", "{FB7E86DB-9557-4044-8FF7-A9131BB021E6}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SCMPrint", "SCMPrint\SCMPrint.vcproj", "{895EDBF3-6A97-4641-8D96-7282005F8DD7}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XSValueTest", "XSValueTest\XSValueTest.vcproj", "{D3552FBC-8618-43C5-86C0-237536D8E700}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XInclude", "XInclude\XInclude.vcproj", "{117D4C21-4C54-478F-83AE-D6179A8D7EF1}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XSTSHarness", "XSTSHarness\XSTSHarness.vcproj", "{D92806DD-C591-4782-BCF2-8A0D0338D67A}" ProjectSection(ProjectDependencies) = postProject {152CE948-F659-4206-A50A-1D2B9658EF96} = {152CE948-F659-4206-A50A-1D2B9658EF96} EndProjectSection EndProject Global GlobalSection(DPCodeReviewSolutionGUID) = preSolution DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000} EndGlobalSection GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 ICU Debug|Win32 = ICU Debug|Win32 ICU Debug|x64 = ICU Debug|x64 ICU Release|Win32 = ICU Release|Win32 ICU Release|x64 = ICU Release|x64 Release|Win32 = Release|Win32 Release|x64 = Release|x64 Static Debug|Win32 = Static Debug|Win32 Static Debug|x64 = Static Debug|x64 Static Release|Win32 = Static Release|Win32 Static Release|x64 = Static Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Debug|Win32.ActiveCfg = Debug|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Debug|Win32.Build.0 = Debug|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Debug|x64.ActiveCfg = Debug|x64 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Debug|x64.Build.0 = Debug|x64 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.ICU Debug|x64.Build.0 = ICU Debug|x64 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.ICU Release|Win32.Build.0 = ICU Release|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.ICU Release|x64.ActiveCfg = ICU Release|x64 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.ICU Release|x64.Build.0 = ICU Release|x64 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Release|Win32.ActiveCfg = Release|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Release|Win32.Build.0 = Release|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Release|x64.ActiveCfg = Release|x64 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Release|x64.Build.0 = Release|x64 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Static Debug|Win32.Build.0 = Static Debug|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Static Debug|x64.ActiveCfg = Static Debug|x64 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Static Debug|x64.Build.0 = Static Debug|x64 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Static Release|Win32.ActiveCfg = Static Release|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Static Release|Win32.Build.0 = Static Release|Win32 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Static Release|x64.ActiveCfg = Static Release|x64 {E305E46C-9D74-4755-BF57-29DEAEF4DCDD}.Static Release|x64.Build.0 = Static Release|x64 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Debug|Win32.ActiveCfg = Debug|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Debug|Win32.Build.0 = Debug|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Debug|x64.ActiveCfg = Debug|x64 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Debug|x64.Build.0 = Debug|x64 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.ICU Debug|x64.Build.0 = ICU Debug|x64 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.ICU Release|Win32.Build.0 = ICU Release|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.ICU Release|x64.ActiveCfg = ICU Release|x64 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.ICU Release|x64.Build.0 = ICU Release|x64 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Release|Win32.ActiveCfg = Release|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Release|Win32.Build.0 = Release|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Release|x64.ActiveCfg = Release|x64 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Release|x64.Build.0 = Release|x64 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Static Debug|Win32.Build.0 = Static Debug|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Static Debug|x64.ActiveCfg = Static Debug|x64 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Static Debug|x64.Build.0 = Static Debug|x64 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Static Release|Win32.ActiveCfg = Static Release|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Static Release|Win32.Build.0 = Static Release|Win32 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Static Release|x64.ActiveCfg = Static Release|x64 {8709DC2A-0EC9-4B67-9E98-95D5174B2C3F}.Static Release|x64.Build.0 = Static Release|x64 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Debug|Win32.ActiveCfg = Debug|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Debug|Win32.Build.0 = Debug|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Debug|x64.ActiveCfg = Debug|x64 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Debug|x64.Build.0 = Debug|x64 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.ICU Debug|x64.Build.0 = ICU Debug|x64 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.ICU Release|Win32.Build.0 = ICU Release|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.ICU Release|x64.ActiveCfg = ICU Release|x64 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.ICU Release|x64.Build.0 = ICU Release|x64 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Release|Win32.ActiveCfg = Release|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Release|Win32.Build.0 = Release|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Release|x64.ActiveCfg = Release|x64 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Release|x64.Build.0 = Release|x64 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Static Debug|Win32.Build.0 = Static Debug|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Static Debug|x64.ActiveCfg = Static Debug|x64 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Static Debug|x64.Build.0 = Static Debug|x64 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Static Release|Win32.ActiveCfg = Static Release|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Static Release|Win32.Build.0 = Static Release|Win32 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Static Release|x64.ActiveCfg = Static Release|x64 {60E3008A-0D78-4B25-A12E-9D7A3921F67C}.Static Release|x64.Build.0 = Static Release|x64 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Debug|Win32.ActiveCfg = Debug|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Debug|Win32.Build.0 = Debug|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Debug|x64.ActiveCfg = Debug|x64 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Debug|x64.Build.0 = Debug|x64 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.ICU Debug|x64.Build.0 = ICU Debug|x64 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.ICU Release|Win32.Build.0 = ICU Release|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.ICU Release|x64.ActiveCfg = ICU Release|x64 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.ICU Release|x64.Build.0 = ICU Release|x64 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Release|Win32.ActiveCfg = Release|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Release|Win32.Build.0 = Release|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Release|x64.ActiveCfg = Release|x64 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Release|x64.Build.0 = Release|x64 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Static Debug|Win32.Build.0 = Static Debug|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Static Debug|x64.ActiveCfg = Static Debug|x64 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Static Debug|x64.Build.0 = Static Debug|x64 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Static Release|Win32.ActiveCfg = Static Release|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Static Release|Win32.Build.0 = Static Release|Win32 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Static Release|x64.ActiveCfg = Static Release|x64 {0D9CB6CF-DB0B-495D-B674-8FC3DD3C12C2}.Static Release|x64.Build.0 = Static Release|x64 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Debug|Win32.ActiveCfg = Debug|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Debug|Win32.Build.0 = Debug|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Debug|x64.ActiveCfg = Debug|x64 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Debug|x64.Build.0 = Debug|x64 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.ICU Debug|x64.Build.0 = ICU Debug|x64 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.ICU Release|Win32.Build.0 = ICU Release|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.ICU Release|x64.ActiveCfg = ICU Release|x64 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.ICU Release|x64.Build.0 = ICU Release|x64 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Release|Win32.ActiveCfg = Release|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Release|Win32.Build.0 = Release|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Release|x64.ActiveCfg = Release|x64 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Release|x64.Build.0 = Release|x64 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Static Debug|Win32.Build.0 = Static Debug|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Static Debug|x64.ActiveCfg = Static Debug|x64 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Static Debug|x64.Build.0 = Static Debug|x64 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Static Release|Win32.ActiveCfg = Static Release|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Static Release|Win32.Build.0 = Static Release|Win32 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Static Release|x64.ActiveCfg = Static Release|x64 {BE9C14B1-2301-4C62-85E2-B583D22AE29C}.Static Release|x64.Build.0 = Static Release|x64 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Debug|Win32.ActiveCfg = Debug|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Debug|Win32.Build.0 = Debug|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Debug|x64.ActiveCfg = Debug|x64 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Debug|x64.Build.0 = Debug|x64 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.ICU Debug|x64.Build.0 = ICU Debug|x64 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.ICU Release|Win32.Build.0 = ICU Release|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.ICU Release|x64.ActiveCfg = ICU Release|x64 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.ICU Release|x64.Build.0 = ICU Release|x64 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Release|Win32.ActiveCfg = Release|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Release|Win32.Build.0 = Release|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Release|x64.ActiveCfg = Release|x64 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Release|x64.Build.0 = Release|x64 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Static Debug|Win32.Build.0 = Static Debug|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Static Debug|x64.ActiveCfg = Static Debug|x64 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Static Debug|x64.Build.0 = Static Debug|x64 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Static Release|Win32.ActiveCfg = Static Release|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Static Release|Win32.Build.0 = Static Release|Win32 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Static Release|x64.ActiveCfg = Static Release|x64 {056463A8-AEDD-4B92-BC24-C0C154C0379C}.Static Release|x64.Build.0 = Static Release|x64 {3C777DB7-42D1-4AA6-A051-24213E411891}.Debug|Win32.ActiveCfg = Debug|Win32 {3C777DB7-42D1-4AA6-A051-24213E411891}.Debug|Win32.Build.0 = Debug|Win32 {3C777DB7-42D1-4AA6-A051-24213E411891}.Debug|x64.ActiveCfg = Debug|x64 {3C777DB7-42D1-4AA6-A051-24213E411891}.Debug|x64.Build.0 = Debug|x64 {3C777DB7-42D1-4AA6-A051-24213E411891}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {3C777DB7-42D1-4AA6-A051-24213E411891}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {3C777DB7-42D1-4AA6-A051-24213E411891}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {3C777DB7-42D1-4AA6-A051-24213E411891}.ICU Debug|x64.Build.0 = ICU Debug|x64 {3C777DB7-42D1-4AA6-A051-24213E411891}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {3C777DB7-42D1-4AA6-A051-24213E411891}.ICU Release|Win32.Build.0 = ICU Release|Win32 {3C777DB7-42D1-4AA6-A051-24213E411891}.ICU Release|x64.ActiveCfg = ICU Release|x64 {3C777DB7-42D1-4AA6-A051-24213E411891}.ICU Release|x64.Build.0 = ICU Release|x64 {3C777DB7-42D1-4AA6-A051-24213E411891}.Release|Win32.ActiveCfg = Release|Win32 {3C777DB7-42D1-4AA6-A051-24213E411891}.Release|Win32.Build.0 = Release|Win32 {3C777DB7-42D1-4AA6-A051-24213E411891}.Release|x64.ActiveCfg = Release|x64 {3C777DB7-42D1-4AA6-A051-24213E411891}.Release|x64.Build.0 = Release|x64 {3C777DB7-42D1-4AA6-A051-24213E411891}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {3C777DB7-42D1-4AA6-A051-24213E411891}.Static Debug|Win32.Build.0 = Static Debug|Win32 {3C777DB7-42D1-4AA6-A051-24213E411891}.Static Debug|x64.ActiveCfg = Static Debug|x64 {3C777DB7-42D1-4AA6-A051-24213E411891}.Static Debug|x64.Build.0 = Static Debug|x64 {3C777DB7-42D1-4AA6-A051-24213E411891}.Static Release|Win32.ActiveCfg = Static Release|Win32 {3C777DB7-42D1-4AA6-A051-24213E411891}.Static Release|Win32.Build.0 = Static Release|Win32 {3C777DB7-42D1-4AA6-A051-24213E411891}.Static Release|x64.ActiveCfg = Static Release|x64 {3C777DB7-42D1-4AA6-A051-24213E411891}.Static Release|x64.Build.0 = Static Release|x64 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Debug|Win32.ActiveCfg = Debug|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Debug|Win32.Build.0 = Debug|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Debug|x64.ActiveCfg = Debug|x64 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Debug|x64.Build.0 = Debug|x64 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.ICU Debug|x64.Build.0 = ICU Debug|x64 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.ICU Release|Win32.Build.0 = ICU Release|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.ICU Release|x64.ActiveCfg = ICU Release|x64 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.ICU Release|x64.Build.0 = ICU Release|x64 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Release|Win32.ActiveCfg = Release|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Release|Win32.Build.0 = Release|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Release|x64.ActiveCfg = Release|x64 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Release|x64.Build.0 = Release|x64 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Static Debug|Win32.Build.0 = Static Debug|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Static Debug|x64.ActiveCfg = Static Debug|x64 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Static Debug|x64.Build.0 = Static Debug|x64 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Static Release|Win32.ActiveCfg = Static Release|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Static Release|Win32.Build.0 = Static Release|Win32 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Static Release|x64.ActiveCfg = Static Release|x64 {DFC196B9-2146-4CDA-AC0A-632BD38FA41D}.Static Release|x64.Build.0 = Static Release|x64 {15A10DF2-F551-4306-A4CC-690F58C58081}.Debug|Win32.ActiveCfg = Debug|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.Debug|Win32.Build.0 = Debug|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.Debug|x64.ActiveCfg = Debug|x64 {15A10DF2-F551-4306-A4CC-690F58C58081}.Debug|x64.Build.0 = Debug|x64 {15A10DF2-F551-4306-A4CC-690F58C58081}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {15A10DF2-F551-4306-A4CC-690F58C58081}.ICU Debug|x64.Build.0 = ICU Debug|x64 {15A10DF2-F551-4306-A4CC-690F58C58081}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.ICU Release|Win32.Build.0 = ICU Release|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.ICU Release|x64.ActiveCfg = ICU Release|x64 {15A10DF2-F551-4306-A4CC-690F58C58081}.ICU Release|x64.Build.0 = ICU Release|x64 {15A10DF2-F551-4306-A4CC-690F58C58081}.Release|Win32.ActiveCfg = Release|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.Release|Win32.Build.0 = Release|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.Release|x64.ActiveCfg = Release|x64 {15A10DF2-F551-4306-A4CC-690F58C58081}.Release|x64.Build.0 = Release|x64 {15A10DF2-F551-4306-A4CC-690F58C58081}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.Static Debug|Win32.Build.0 = Static Debug|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.Static Debug|x64.ActiveCfg = Static Debug|x64 {15A10DF2-F551-4306-A4CC-690F58C58081}.Static Debug|x64.Build.0 = Static Debug|x64 {15A10DF2-F551-4306-A4CC-690F58C58081}.Static Release|Win32.ActiveCfg = Static Release|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.Static Release|Win32.Build.0 = Static Release|Win32 {15A10DF2-F551-4306-A4CC-690F58C58081}.Static Release|x64.ActiveCfg = Static Release|x64 {15A10DF2-F551-4306-A4CC-690F58C58081}.Static Release|x64.Build.0 = Static Release|x64 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Debug|Win32.ActiveCfg = Debug|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Debug|Win32.Build.0 = Debug|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Debug|x64.ActiveCfg = Debug|x64 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Debug|x64.Build.0 = Debug|x64 {B8B50FE7-B620-4D19-A147-B167D087DD53}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {B8B50FE7-B620-4D19-A147-B167D087DD53}.ICU Debug|x64.Build.0 = ICU Debug|x64 {B8B50FE7-B620-4D19-A147-B167D087DD53}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.ICU Release|Win32.Build.0 = ICU Release|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.ICU Release|x64.ActiveCfg = ICU Release|x64 {B8B50FE7-B620-4D19-A147-B167D087DD53}.ICU Release|x64.Build.0 = ICU Release|x64 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Release|Win32.ActiveCfg = Release|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Release|Win32.Build.0 = Release|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Release|x64.ActiveCfg = Release|x64 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Release|x64.Build.0 = Release|x64 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Static Debug|Win32.Build.0 = Static Debug|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Static Debug|x64.ActiveCfg = Static Debug|x64 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Static Debug|x64.Build.0 = Static Debug|x64 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Static Release|Win32.ActiveCfg = Static Release|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Static Release|Win32.Build.0 = Static Release|Win32 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Static Release|x64.ActiveCfg = Static Release|x64 {B8B50FE7-B620-4D19-A147-B167D087DD53}.Static Release|x64.Build.0 = Static Release|x64 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Debug|Win32.ActiveCfg = Debug|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Debug|Win32.Build.0 = Debug|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Debug|x64.ActiveCfg = Debug|x64 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Debug|x64.Build.0 = Debug|x64 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.ICU Debug|x64.Build.0 = ICU Debug|x64 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.ICU Release|Win32.Build.0 = ICU Release|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.ICU Release|x64.ActiveCfg = ICU Release|x64 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.ICU Release|x64.Build.0 = ICU Release|x64 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Release|Win32.ActiveCfg = Release|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Release|Win32.Build.0 = Release|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Release|x64.ActiveCfg = Release|x64 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Release|x64.Build.0 = Release|x64 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Static Debug|Win32.Build.0 = Static Debug|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Static Debug|x64.ActiveCfg = Static Debug|x64 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Static Debug|x64.Build.0 = Static Debug|x64 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Static Release|Win32.ActiveCfg = Static Release|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Static Release|Win32.Build.0 = Static Release|Win32 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Static Release|x64.ActiveCfg = Static Release|x64 {26A4FA00-DB6E-43FA-83D4-0FC3A5472A27}.Static Release|x64.Build.0 = Static Release|x64 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Debug|Win32.ActiveCfg = Debug|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Debug|Win32.Build.0 = Debug|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Debug|x64.ActiveCfg = Debug|x64 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Debug|x64.Build.0 = Debug|x64 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.ICU Debug|x64.Build.0 = ICU Debug|x64 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.ICU Release|Win32.Build.0 = ICU Release|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.ICU Release|x64.ActiveCfg = ICU Release|x64 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.ICU Release|x64.Build.0 = ICU Release|x64 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Release|Win32.ActiveCfg = Release|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Release|Win32.Build.0 = Release|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Release|x64.ActiveCfg = Release|x64 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Release|x64.Build.0 = Release|x64 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Static Debug|Win32.Build.0 = Static Debug|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Static Debug|x64.ActiveCfg = Static Debug|x64 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Static Debug|x64.Build.0 = Static Debug|x64 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Static Release|Win32.ActiveCfg = Static Release|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Static Release|Win32.Build.0 = Static Release|Win32 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Static Release|x64.ActiveCfg = Static Release|x64 {2682B2AB-E341-4528-85AB-BE95DE77A9BC}.Static Release|x64.Build.0 = Static Release|x64 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Debug|Win32.ActiveCfg = Debug|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Debug|Win32.Build.0 = Debug|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Debug|x64.ActiveCfg = Debug|x64 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Debug|x64.Build.0 = Debug|x64 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.ICU Debug|x64.Build.0 = ICU Debug|x64 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.ICU Release|Win32.Build.0 = ICU Release|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.ICU Release|x64.ActiveCfg = ICU Release|x64 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.ICU Release|x64.Build.0 = ICU Release|x64 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Release|Win32.ActiveCfg = Release|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Release|Win32.Build.0 = Release|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Release|x64.ActiveCfg = Release|x64 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Release|x64.Build.0 = Release|x64 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Static Debug|Win32.Build.0 = Static Debug|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Static Debug|x64.ActiveCfg = Static Debug|x64 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Static Debug|x64.Build.0 = Static Debug|x64 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Static Release|Win32.ActiveCfg = Static Release|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Static Release|Win32.Build.0 = Static Release|Win32 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Static Release|x64.ActiveCfg = Static Release|x64 {160AC448-AD35-4FA9-8C4D-FF46A0E5BE5D}.Static Release|x64.Build.0 = Static Release|x64 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Debug|Win32.ActiveCfg = Debug|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Debug|Win32.Build.0 = Debug|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Debug|x64.ActiveCfg = Debug|x64 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Debug|x64.Build.0 = Debug|x64 {6F412978-851F-494D-8C3D-DF97A515EDF5}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {6F412978-851F-494D-8C3D-DF97A515EDF5}.ICU Debug|x64.Build.0 = ICU Debug|x64 {6F412978-851F-494D-8C3D-DF97A515EDF5}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.ICU Release|Win32.Build.0 = ICU Release|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.ICU Release|x64.ActiveCfg = ICU Release|x64 {6F412978-851F-494D-8C3D-DF97A515EDF5}.ICU Release|x64.Build.0 = ICU Release|x64 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Release|Win32.ActiveCfg = Release|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Release|Win32.Build.0 = Release|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Release|x64.ActiveCfg = Release|x64 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Release|x64.Build.0 = Release|x64 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Static Debug|Win32.Build.0 = Static Debug|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Static Debug|x64.ActiveCfg = Static Debug|x64 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Static Debug|x64.Build.0 = Static Debug|x64 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Static Release|Win32.ActiveCfg = Static Release|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Static Release|Win32.Build.0 = Static Release|Win32 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Static Release|x64.ActiveCfg = Static Release|x64 {6F412978-851F-494D-8C3D-DF97A515EDF5}.Static Release|x64.Build.0 = Static Release|x64 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Debug|Win32.ActiveCfg = Debug|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Debug|Win32.Build.0 = Debug|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Debug|x64.ActiveCfg = Debug|x64 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Debug|x64.Build.0 = Debug|x64 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.ICU Debug|x64.Build.0 = ICU Debug|x64 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.ICU Release|Win32.Build.0 = ICU Release|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.ICU Release|x64.ActiveCfg = ICU Release|x64 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.ICU Release|x64.Build.0 = ICU Release|x64 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Release|Win32.ActiveCfg = Release|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Release|Win32.Build.0 = Release|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Release|x64.ActiveCfg = Release|x64 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Release|x64.Build.0 = Release|x64 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Static Debug|Win32.Build.0 = Static Debug|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Static Debug|x64.ActiveCfg = Static Debug|x64 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Static Debug|x64.Build.0 = Static Debug|x64 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Static Release|Win32.ActiveCfg = Static Release|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Static Release|Win32.Build.0 = Static Release|Win32 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Static Release|x64.ActiveCfg = Static Release|x64 {65BE6CCA-6F7F-4DB9-A6FD-C220E9FE87AD}.Static Release|x64.Build.0 = Static Release|x64 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Debug|Win32.ActiveCfg = Debug|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Debug|Win32.Build.0 = Debug|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Debug|x64.ActiveCfg = Debug|x64 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Debug|x64.Build.0 = Debug|x64 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.ICU Debug|x64.Build.0 = ICU Debug|x64 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.ICU Release|Win32.Build.0 = ICU Release|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.ICU Release|x64.ActiveCfg = ICU Release|x64 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.ICU Release|x64.Build.0 = ICU Release|x64 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Release|Win32.ActiveCfg = Release|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Release|Win32.Build.0 = Release|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Release|x64.ActiveCfg = Release|x64 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Release|x64.Build.0 = Release|x64 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Static Debug|Win32.Build.0 = Static Debug|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Static Debug|x64.ActiveCfg = Static Debug|x64 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Static Debug|x64.Build.0 = Static Debug|x64 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Static Release|Win32.ActiveCfg = Static Release|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Static Release|Win32.Build.0 = Static Release|Win32 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Static Release|x64.ActiveCfg = Static Release|x64 {BBD46C34-DEA0-42AB-96AB-E87C6371A6C2}.Static Release|x64.Build.0 = Static Release|x64 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Debug|Win32.ActiveCfg = Debug|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Debug|Win32.Build.0 = Debug|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Debug|x64.ActiveCfg = Debug|x64 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Debug|x64.Build.0 = Debug|x64 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.ICU Debug|x64.Build.0 = ICU Debug|x64 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.ICU Release|Win32.Build.0 = ICU Release|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.ICU Release|x64.ActiveCfg = ICU Release|x64 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.ICU Release|x64.Build.0 = ICU Release|x64 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Release|Win32.ActiveCfg = Release|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Release|Win32.Build.0 = Release|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Release|x64.ActiveCfg = Release|x64 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Release|x64.Build.0 = Release|x64 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Static Debug|Win32.Build.0 = Static Debug|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Static Debug|x64.ActiveCfg = Static Debug|x64 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Static Debug|x64.Build.0 = Static Debug|x64 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Static Release|Win32.ActiveCfg = Static Release|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Static Release|Win32.Build.0 = Static Release|Win32 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Static Release|x64.ActiveCfg = Static Release|x64 {569D5A1E-C582-40B7-8BFC-FC7B5D4DDA75}.Static Release|x64.Build.0 = Static Release|x64 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Debug|Win32.ActiveCfg = Debug|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Debug|Win32.Build.0 = Debug|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Debug|x64.ActiveCfg = Debug|x64 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Debug|x64.Build.0 = Debug|x64 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.ICU Debug|x64.Build.0 = ICU Debug|x64 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.ICU Release|Win32.Build.0 = ICU Release|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.ICU Release|x64.ActiveCfg = ICU Release|x64 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.ICU Release|x64.Build.0 = ICU Release|x64 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Release|Win32.ActiveCfg = Release|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Release|Win32.Build.0 = Release|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Release|x64.ActiveCfg = Release|x64 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Release|x64.Build.0 = Release|x64 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Static Debug|Win32.Build.0 = Static Debug|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Static Debug|x64.ActiveCfg = Static Debug|x64 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Static Debug|x64.Build.0 = Static Debug|x64 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Static Release|Win32.ActiveCfg = Static Release|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Static Release|Win32.Build.0 = Static Release|Win32 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Static Release|x64.ActiveCfg = Static Release|x64 {FB794093-CA26-4DBF-A7DF-1A62B7C872D5}.Static Release|x64.Build.0 = Static Release|x64 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Debug|Win32.ActiveCfg = Debug|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Debug|Win32.Build.0 = Debug|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Debug|x64.ActiveCfg = Debug|x64 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Debug|x64.Build.0 = Debug|x64 {7259B5D2-54FE-4142-9321-0572C615F0A2}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {7259B5D2-54FE-4142-9321-0572C615F0A2}.ICU Debug|x64.Build.0 = ICU Debug|x64 {7259B5D2-54FE-4142-9321-0572C615F0A2}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.ICU Release|Win32.Build.0 = ICU Release|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.ICU Release|x64.ActiveCfg = ICU Release|x64 {7259B5D2-54FE-4142-9321-0572C615F0A2}.ICU Release|x64.Build.0 = ICU Release|x64 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Release|Win32.ActiveCfg = Release|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Release|Win32.Build.0 = Release|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Release|x64.ActiveCfg = Release|x64 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Release|x64.Build.0 = Release|x64 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Static Debug|Win32.Build.0 = Static Debug|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Static Debug|x64.ActiveCfg = Static Debug|x64 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Static Debug|x64.Build.0 = Static Debug|x64 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Static Release|Win32.ActiveCfg = Static Release|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Static Release|Win32.Build.0 = Static Release|Win32 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Static Release|x64.ActiveCfg = Static Release|x64 {7259B5D2-54FE-4142-9321-0572C615F0A2}.Static Release|x64.Build.0 = Static Release|x64 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Debug|Win32.ActiveCfg = Debug|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Debug|Win32.Build.0 = Debug|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Debug|x64.ActiveCfg = Debug|x64 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Debug|x64.Build.0 = Debug|x64 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.ICU Debug|x64.Build.0 = ICU Debug|x64 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.ICU Release|Win32.Build.0 = ICU Release|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.ICU Release|x64.ActiveCfg = ICU Release|x64 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.ICU Release|x64.Build.0 = ICU Release|x64 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Release|Win32.ActiveCfg = Release|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Release|Win32.Build.0 = Release|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Release|x64.ActiveCfg = Release|x64 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Release|x64.Build.0 = Release|x64 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Static Debug|Win32.Build.0 = Static Debug|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Static Debug|x64.ActiveCfg = Static Debug|x64 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Static Debug|x64.Build.0 = Static Debug|x64 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Static Release|Win32.ActiveCfg = Static Release|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Static Release|Win32.Build.0 = Static Release|Win32 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Static Release|x64.ActiveCfg = Static Release|x64 {2AB767A9-6A3B-4993-8FDB-3E6A30560739}.Static Release|x64.Build.0 = Static Release|x64 {959445AC-9081-4590-B457-C96164CF4BFA}.Debug|Win32.ActiveCfg = Debug|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.Debug|Win32.Build.0 = Debug|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.Debug|x64.ActiveCfg = Debug|x64 {959445AC-9081-4590-B457-C96164CF4BFA}.Debug|x64.Build.0 = Debug|x64 {959445AC-9081-4590-B457-C96164CF4BFA}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {959445AC-9081-4590-B457-C96164CF4BFA}.ICU Debug|x64.Build.0 = ICU Debug|x64 {959445AC-9081-4590-B457-C96164CF4BFA}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.ICU Release|Win32.Build.0 = ICU Release|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.ICU Release|x64.ActiveCfg = ICU Release|x64 {959445AC-9081-4590-B457-C96164CF4BFA}.ICU Release|x64.Build.0 = ICU Release|x64 {959445AC-9081-4590-B457-C96164CF4BFA}.Release|Win32.ActiveCfg = Release|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.Release|Win32.Build.0 = Release|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.Release|x64.ActiveCfg = Release|x64 {959445AC-9081-4590-B457-C96164CF4BFA}.Release|x64.Build.0 = Release|x64 {959445AC-9081-4590-B457-C96164CF4BFA}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.Static Debug|Win32.Build.0 = Static Debug|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.Static Debug|x64.ActiveCfg = Static Debug|x64 {959445AC-9081-4590-B457-C96164CF4BFA}.Static Debug|x64.Build.0 = Static Debug|x64 {959445AC-9081-4590-B457-C96164CF4BFA}.Static Release|Win32.ActiveCfg = Static Release|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.Static Release|Win32.Build.0 = Static Release|Win32 {959445AC-9081-4590-B457-C96164CF4BFA}.Static Release|x64.ActiveCfg = Static Release|x64 {959445AC-9081-4590-B457-C96164CF4BFA}.Static Release|x64.Build.0 = Static Release|x64 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Debug|Win32.ActiveCfg = Debug|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Debug|Win32.Build.0 = Debug|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Debug|x64.ActiveCfg = Debug|x64 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Debug|x64.Build.0 = Debug|x64 {2230D938-8908-4C12-9E96-9C6C4048A52D}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {2230D938-8908-4C12-9E96-9C6C4048A52D}.ICU Debug|x64.Build.0 = ICU Debug|x64 {2230D938-8908-4C12-9E96-9C6C4048A52D}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.ICU Release|Win32.Build.0 = ICU Release|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.ICU Release|x64.ActiveCfg = ICU Release|x64 {2230D938-8908-4C12-9E96-9C6C4048A52D}.ICU Release|x64.Build.0 = ICU Release|x64 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Release|Win32.ActiveCfg = Release|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Release|Win32.Build.0 = Release|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Release|x64.ActiveCfg = Release|x64 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Release|x64.Build.0 = Release|x64 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Static Debug|Win32.Build.0 = Static Debug|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Static Debug|x64.ActiveCfg = Static Debug|x64 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Static Debug|x64.Build.0 = Static Debug|x64 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Static Release|Win32.ActiveCfg = Static Release|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Static Release|Win32.Build.0 = Static Release|Win32 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Static Release|x64.ActiveCfg = Static Release|x64 {2230D938-8908-4C12-9E96-9C6C4048A52D}.Static Release|x64.Build.0 = Static Release|x64 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Debug|Win32.ActiveCfg = Debug|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Debug|Win32.Build.0 = Debug|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Debug|x64.ActiveCfg = Debug|x64 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Debug|x64.Build.0 = Debug|x64 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.ICU Debug|x64.Build.0 = ICU Debug|x64 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.ICU Release|Win32.Build.0 = ICU Release|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.ICU Release|x64.ActiveCfg = ICU Release|x64 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.ICU Release|x64.Build.0 = ICU Release|x64 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Release|Win32.ActiveCfg = Release|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Release|Win32.Build.0 = Release|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Release|x64.ActiveCfg = Release|x64 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Release|x64.Build.0 = Release|x64 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Static Debug|Win32.Build.0 = Static Debug|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Static Debug|x64.ActiveCfg = Static Debug|x64 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Static Debug|x64.Build.0 = Static Debug|x64 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Static Release|Win32.ActiveCfg = Static Release|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Static Release|Win32.Build.0 = Static Release|Win32 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Static Release|x64.ActiveCfg = Static Release|x64 {D2D5D167-5DBC-4B68-9AF0-B7A9EBE86284}.Static Release|x64.Build.0 = Static Release|x64 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Debug|Win32.ActiveCfg = Debug|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Debug|Win32.Build.0 = Debug|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Debug|x64.ActiveCfg = Debug|x64 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Debug|x64.Build.0 = Debug|x64 {792C0625-DE93-4756-AAFA-23CCED2157B0}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {792C0625-DE93-4756-AAFA-23CCED2157B0}.ICU Debug|x64.Build.0 = ICU Debug|x64 {792C0625-DE93-4756-AAFA-23CCED2157B0}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.ICU Release|Win32.Build.0 = ICU Release|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.ICU Release|x64.ActiveCfg = ICU Release|x64 {792C0625-DE93-4756-AAFA-23CCED2157B0}.ICU Release|x64.Build.0 = ICU Release|x64 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Release|Win32.ActiveCfg = Release|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Release|Win32.Build.0 = Release|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Release|x64.ActiveCfg = Release|x64 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Release|x64.Build.0 = Release|x64 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Static Debug|Win32.Build.0 = Static Debug|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Static Debug|x64.ActiveCfg = Static Debug|x64 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Static Debug|x64.Build.0 = Static Debug|x64 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Static Release|Win32.ActiveCfg = Static Release|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Static Release|Win32.Build.0 = Static Release|Win32 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Static Release|x64.ActiveCfg = Static Release|x64 {792C0625-DE93-4756-AAFA-23CCED2157B0}.Static Release|x64.Build.0 = Static Release|x64 {152CE948-F659-4206-A50A-1D2B9658EF96}.Debug|Win32.ActiveCfg = Debug|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.Debug|Win32.Build.0 = Debug|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.Debug|x64.ActiveCfg = Debug|x64 {152CE948-F659-4206-A50A-1D2B9658EF96}.Debug|x64.Build.0 = Debug|x64 {152CE948-F659-4206-A50A-1D2B9658EF96}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {152CE948-F659-4206-A50A-1D2B9658EF96}.ICU Debug|x64.Build.0 = ICU Debug|x64 {152CE948-F659-4206-A50A-1D2B9658EF96}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.ICU Release|Win32.Build.0 = ICU Release|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.ICU Release|x64.ActiveCfg = ICU Release|x64 {152CE948-F659-4206-A50A-1D2B9658EF96}.ICU Release|x64.Build.0 = ICU Release|x64 {152CE948-F659-4206-A50A-1D2B9658EF96}.Release|Win32.ActiveCfg = Release|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.Release|Win32.Build.0 = Release|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.Release|x64.ActiveCfg = Release|x64 {152CE948-F659-4206-A50A-1D2B9658EF96}.Release|x64.Build.0 = Release|x64 {152CE948-F659-4206-A50A-1D2B9658EF96}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.Static Debug|Win32.Build.0 = Static Debug|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.Static Debug|x64.ActiveCfg = Static Debug|x64 {152CE948-F659-4206-A50A-1D2B9658EF96}.Static Debug|x64.Build.0 = Static Debug|x64 {152CE948-F659-4206-A50A-1D2B9658EF96}.Static Release|Win32.ActiveCfg = Static Release|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.Static Release|Win32.Build.0 = Static Release|Win32 {152CE948-F659-4206-A50A-1D2B9658EF96}.Static Release|x64.ActiveCfg = Static Release|x64 {152CE948-F659-4206-A50A-1D2B9658EF96}.Static Release|x64.Build.0 = Static Release|x64 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Debug|Win32.ActiveCfg = Debug|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Debug|Win32.Build.0 = Debug|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Debug|x64.ActiveCfg = Debug|x64 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Debug|x64.Build.0 = Debug|x64 {4D8FEA60-A74F-4267-852F-C421AF12198D}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {4D8FEA60-A74F-4267-852F-C421AF12198D}.ICU Debug|x64.Build.0 = ICU Debug|x64 {4D8FEA60-A74F-4267-852F-C421AF12198D}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.ICU Release|Win32.Build.0 = ICU Release|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.ICU Release|x64.ActiveCfg = ICU Release|x64 {4D8FEA60-A74F-4267-852F-C421AF12198D}.ICU Release|x64.Build.0 = ICU Release|x64 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Release|Win32.ActiveCfg = Release|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Release|Win32.Build.0 = Release|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Release|x64.ActiveCfg = Release|x64 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Release|x64.Build.0 = Release|x64 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Static Debug|Win32.Build.0 = Static Debug|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Static Debug|x64.ActiveCfg = Static Debug|x64 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Static Debug|x64.Build.0 = Static Debug|x64 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Static Release|Win32.ActiveCfg = Static Release|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Static Release|Win32.Build.0 = Static Release|Win32 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Static Release|x64.ActiveCfg = Static Release|x64 {4D8FEA60-A74F-4267-852F-C421AF12198D}.Static Release|x64.Build.0 = Static Release|x64 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Debug|Win32.ActiveCfg = Debug|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Debug|Win32.Build.0 = Debug|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Debug|x64.ActiveCfg = Debug|x64 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Debug|x64.Build.0 = Debug|x64 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.ICU Debug|x64.Build.0 = ICU Debug|x64 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.ICU Release|Win32.Build.0 = ICU Release|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.ICU Release|x64.ActiveCfg = ICU Release|x64 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.ICU Release|x64.Build.0 = ICU Release|x64 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Release|Win32.ActiveCfg = Release|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Release|Win32.Build.0 = Release|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Release|x64.ActiveCfg = Release|x64 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Release|x64.Build.0 = Release|x64 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Static Debug|Win32.Build.0 = Static Debug|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Static Debug|x64.ActiveCfg = Static Debug|x64 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Static Debug|x64.Build.0 = Static Debug|x64 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Static Release|Win32.ActiveCfg = Static Release|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Static Release|Win32.Build.0 = Static Release|Win32 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Static Release|x64.ActiveCfg = Static Release|x64 {FB7E86DB-9557-4044-8FF7-A9131BB021E6}.Static Release|x64.Build.0 = Static Release|x64 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Debug|Win32.ActiveCfg = Debug|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Debug|Win32.Build.0 = Debug|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Debug|x64.ActiveCfg = Debug|x64 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Debug|x64.Build.0 = Debug|x64 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.ICU Debug|x64.Build.0 = ICU Debug|x64 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.ICU Release|Win32.Build.0 = ICU Release|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.ICU Release|x64.ActiveCfg = ICU Release|x64 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.ICU Release|x64.Build.0 = ICU Release|x64 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Release|Win32.ActiveCfg = Release|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Release|Win32.Build.0 = Release|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Release|x64.ActiveCfg = Release|x64 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Release|x64.Build.0 = Release|x64 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Static Debug|Win32.Build.0 = Static Debug|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Static Debug|x64.ActiveCfg = Static Debug|x64 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Static Debug|x64.Build.0 = Static Debug|x64 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Static Release|Win32.ActiveCfg = Static Release|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Static Release|Win32.Build.0 = Static Release|Win32 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Static Release|x64.ActiveCfg = Static Release|x64 {895EDBF3-6A97-4641-8D96-7282005F8DD7}.Static Release|x64.Build.0 = Static Release|x64 {D3552FBC-8618-43C5-86C0-237536D8E700}.Debug|Win32.ActiveCfg = Debug|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.Debug|Win32.Build.0 = Debug|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.Debug|x64.ActiveCfg = Debug|x64 {D3552FBC-8618-43C5-86C0-237536D8E700}.Debug|x64.Build.0 = Debug|x64 {D3552FBC-8618-43C5-86C0-237536D8E700}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {D3552FBC-8618-43C5-86C0-237536D8E700}.ICU Debug|x64.Build.0 = ICU Debug|x64 {D3552FBC-8618-43C5-86C0-237536D8E700}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.ICU Release|Win32.Build.0 = ICU Release|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.ICU Release|x64.ActiveCfg = ICU Release|x64 {D3552FBC-8618-43C5-86C0-237536D8E700}.ICU Release|x64.Build.0 = ICU Release|x64 {D3552FBC-8618-43C5-86C0-237536D8E700}.Release|Win32.ActiveCfg = Release|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.Release|Win32.Build.0 = Release|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.Release|x64.ActiveCfg = Release|x64 {D3552FBC-8618-43C5-86C0-237536D8E700}.Release|x64.Build.0 = Release|x64 {D3552FBC-8618-43C5-86C0-237536D8E700}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.Static Debug|Win32.Build.0 = Static Debug|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.Static Debug|x64.ActiveCfg = Static Debug|x64 {D3552FBC-8618-43C5-86C0-237536D8E700}.Static Debug|x64.Build.0 = Static Debug|x64 {D3552FBC-8618-43C5-86C0-237536D8E700}.Static Release|Win32.ActiveCfg = Static Release|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.Static Release|Win32.Build.0 = Static Release|Win32 {D3552FBC-8618-43C5-86C0-237536D8E700}.Static Release|x64.ActiveCfg = Static Release|x64 {D3552FBC-8618-43C5-86C0-237536D8E700}.Static Release|x64.Build.0 = Static Release|x64 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Debug|Win32.ActiveCfg = Debug|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Debug|Win32.Build.0 = Debug|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Debug|x64.ActiveCfg = Debug|x64 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Debug|x64.Build.0 = Debug|x64 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.ICU Debug|x64.Build.0 = ICU Debug|x64 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.ICU Release|Win32.Build.0 = ICU Release|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.ICU Release|x64.ActiveCfg = ICU Release|x64 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.ICU Release|x64.Build.0 = ICU Release|x64 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Release|Win32.ActiveCfg = Release|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Release|Win32.Build.0 = Release|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Release|x64.ActiveCfg = Release|x64 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Release|x64.Build.0 = Release|x64 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Static Debug|Win32.Build.0 = Static Debug|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Static Debug|x64.ActiveCfg = Static Debug|x64 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Static Debug|x64.Build.0 = Static Debug|x64 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Static Release|Win32.ActiveCfg = Static Release|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Static Release|Win32.Build.0 = Static Release|Win32 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Static Release|x64.ActiveCfg = Static Release|x64 {117D4C21-4C54-478F-83AE-D6179A8D7EF1}.Static Release|x64.Build.0 = Static Release|x64 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Debug|Win32.ActiveCfg = Debug|Win32 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Debug|Win32.Build.0 = Debug|Win32 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Debug|x64.ActiveCfg = Debug|x64 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Debug|x64.Build.0 = Debug|x64 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.ICU Debug|Win32.ActiveCfg = ICU Debug|Win32 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.ICU Debug|Win32.Build.0 = ICU Debug|Win32 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.ICU Debug|x64.ActiveCfg = ICU Debug|x64 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.ICU Debug|x64.Build.0 = ICU Debug|x64 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.ICU Release|Win32.ActiveCfg = ICU Release|Win32 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.ICU Release|Win32.Build.0 = ICU Release|Win32 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.ICU Release|x64.ActiveCfg = ICU Release|x64 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.ICU Release|x64.Build.0 = ICU Release|x64 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Release|Win32.ActiveCfg = Release|Win32 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Release|Win32.Build.0 = Release|Win32 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Release|x64.ActiveCfg = Release|x64 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Release|x64.Build.0 = Release|x64 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Static Debug|Win32.ActiveCfg = Static Debug|Win32 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Static Debug|Win32.Build.0 = Static Debug|Win32 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Static Debug|x64.ActiveCfg = Static Debug|x64 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Static Debug|x64.Build.0 = Static Debug|x64 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Static Release|Win32.ActiveCfg = Static Release|Win32 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Static Release|Win32.Build.0 = Static Release|Win32 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Static Release|x64.ActiveCfg = Static Release|x64 {D92806DD-C591-4782-BCF2-8A0D0338D67A}.Static Release|x64.Build.0 = Static Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal xerces-c-3.1.1/projects/Win32/VC8/xerces-all/all/0000755000175000017500000000000011363617261020213 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC8/xerces-all/all/all.vcproj0000644000175000017500000001535010757342670022221 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC8/xerces-all/EnumVal/0000755000175000017500000000000011363617261021012 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC8/xerces-all/EnumVal/EnumVal.vcproj0000644000175000017500000006151110764232420023604 0ustar borisboris xerces-c-3.1.1/projects/Win32/VC8/xerces-all/DOMPrint/0000755000175000017500000000000011363617261021077 5ustar borisborisxerces-c-3.1.1/projects/Win32/VC8/xerces-all/DOMPrint/DOMPrint.vcproj0000644000175000017500000006263510764232420023766 0ustar borisboris xerces-c-3.1.1/reconf0000755000175000017500000000033711271567106013456 0ustar borisboris#!/bin/sh set -x rm -f config.cache type -p glibtoolize 1>/dev/null 2>&1 if test "$?" = "0"; then glibtoolize --copy --force else libtoolize --copy --force fi aclocal -I m4 autoheader automake -a -c -f autoconf exit xerces-c-3.1.1/version.incl0000644000175000017500000000131611362617414014605 0ustar borisboris# # Copyright 1999-2004 The Apache Software Foundation. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # # # $Id: version.incl 935350 2010-04-18 15:02:36Z borisk $ # VER=3_1_1 INTERFACE_VER_D=3.1 INTERFACE_VER_U=3_1 xerces-c-3.1.1/config/0000755000175000017500000000000011363617723013521 5ustar borisborisxerces-c-3.1.1/config/config.sub0000755000175000017500000010242511363617723015510 0ustar borisboris#! /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, 2009 # Free Software Foundation, Inc. timestamp='2009-06-11' # 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 . 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 ." 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* | \ kopensolaris*-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 ;; -bluegene*) os=-cnk ;; -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 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | 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[24]aeb | 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 | z80) 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-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | 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[24]aeb-* | 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-* | tile-* \ | tron-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # 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 ;; aros) basic_machine=i386-pc os=-aros ;; 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 ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; 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 ;; dicos) basic_machine=i686-pc os=-dicos ;; 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 ;; z80-*-coff) basic_machine=z80-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[24]aeb | 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* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | -kopensolaris* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -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* | -cegcc* \ | -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 ;; -dicos*) os=-dicos ;; -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 ;; -cnk*|-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: xerces-c-3.1.1/config/missing0000755000175000017500000002623311363617723015126 0ustar borisboris#! /bin/sh # Common stub for a few missing GNU programs while installing. scriptversion=2009-04-28.21; # UTC # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, # 2008, 2009 Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 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, see . # 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] Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and \`g' are ignored when checking the name. Send bug reports to ." 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 # normalize program name to check for. program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` # 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). This is about non-GNU programs, so use $1 not # $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 $program 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 $? 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-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: xerces-c-3.1.1/config/depcomp0000755000175000017500000004426711363617723015113 0ustar borisboris#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2009-04-28.21; # UTC # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 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, see . # 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 . 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 . 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 cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u="sed s,\\\\\\\\,/,g" depmode=msvisualcpp 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 "X$1" != 'X--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 "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi 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. -arch) eat=yes ;; -*|$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 "X$1" != 'X--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. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # 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 ;; 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-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: xerces-c-3.1.1/config/pretty-make0000755000175000017500000000322011330301671015670 0ustar borisboris#!/bin/sh # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # # pretty-make # # This script helps in pretty-printing of build commands. # We invoke it via overridden rules in Makefile.am # # $Id: pretty-make 904065 2010-01-28 12:31:53Z borisk $ # # Grab the action (what we're doing) action=$1 shift # Grab the original command cmd=$@ # Try to find the name of the file we're building. This is fraught with # problems, and may not be reliable across all compilers. Given the # dependencies, this is usually the last argument, but sometimes libtool # adds additional flags, which throws this off. So we look # for the last arg that doesn't start with - or + (HP aCC style). while [ $# -gt 0 ]; do case ${1} in -*) ;; +*) ;; *) target=$1 ;; esac shift done # Notify user of the action, and what it's operating on echo $action $target # Be verbose if requested [ ${VERBOSE} ] && echo $cmd # Execute the original command $cmd xerces-c-3.1.1/config/config.guess0000755000175000017500000013105411363617723016045 0ustar borisboris#! /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, 2009 # Free Software Foundation, Inc. timestamp='2009-06-10' # 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 . # Please send patches to . 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 ." 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 -q __ELF__ 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 ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; 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.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-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 /* 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 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 #include 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 -q __LP64__ 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 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 | genuineintel) 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 ;; 8664:Windows_NT:*) echo x86_64-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:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #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 -q ld.so.1 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; padre:Linux:*:*) echo sparc-unknown-linux-gnu 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" ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include #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.[02]*:*) 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' /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 i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-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; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' 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; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; 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.[02]*:*) 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 echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # 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 ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku 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 ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros 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 < # include #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 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 # 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 < 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: xerces-c-3.1.1/config/compile0000755000175000017500000000717311363617723015107 0ustar borisboris#! /bin/sh # Wrapper for compilers which do not understand `-c -o'. scriptversion=2009-04-28.21; # UTC # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009 Free Software # Foundation, Inc. # Written by Tom Tromey . # # 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, see . # 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. # This file is maintained in Automake, please report # bugs to or send patches to # . case $1 in '') echo "$0: No command. Try \`$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand `-c -o'. Remove `-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file `INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; esac ofile= cfile= eat= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as `compile cc -o foo foo.c'. # So we strip `-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no `-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # `.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use `[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # 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-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: xerces-c-3.1.1/config/install-sh0000755000175000017500000003253711363617723015537 0ustar borisboris#!/bin/sh # install - install a program, script, or datafile scriptversion=2009-04-28.21; # UTC # 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-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: xerces-c-3.1.1/config/ltmain.sh0000755000175000017500000073337411363617717015370 0ustar borisboris# Generated from ltmain.m4sh. # ltmain.sh (GNU libtool) 2.2.6 # Written by Gordon Matzigkeit , 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-4 # automake: $automake_version # autoconf: $autoconf_version # # Report bugs to . PROGRAM=ltmain.sh PACKAGE=libtool VERSION="2.2.6 Debian-2.2.6a-4" 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 </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 <?"'"'"' &()|`$[]' \ && 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 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 < #include #ifdef _MSC_VER # include # include # include # define setmode _setmode #else # include # include # ifdef __CYGWIN__ # include # 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 #include #include #include #include #include #include #include #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 <"))); for (i = 0; i < newargc; i++) { LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : ""))); } 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 : ""), (value ? value : ""))); { #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 : ""), (value ? value : ""))); 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 : ""), (value ? value : ""))); 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" 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 elif test "$linkmode" != prog && test "$linkmode" != lib; then func_fatal_error "\`$lib' is not a convenience library" fi 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 path= 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 </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 xerces-c-3.1.1/KEYS0000644000175000017500000003071110766505252012753 0ustar borisborisThis file contains the PGP keys of various Xerces-C++ developers. Please don't use them for email unless you have to. Their main purpose is code signing. Xerces-C++ users: If you use PGP: pgp < KEYS If you use gpg: gpg --import < KEYS Xerces-C++ developers: If you use pgp: pgp -kxa and append it to this file. If you use gpg: gpg --export -a >>KEYS should do the trick Name User ID Boris Kolpackov boris@kolpackov.net Tinny Ng tng@apache.org Gareth Reakes gareth@apache.org Neil Graham neilg@apache.org -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.2.5 (GNU/Linux) mQGLBD7gyjQBDADjboRuWsUo7JXgicFS5DGpqIhhHqmzifDxI1Sb/xHk7WZfxsNG YFp1c5NXCsMKx801UUCeiezam9iiWILSl7SOnTvE4LUPkMJSSB9gsekt8YCDnUFr cYdohOKSZvZi5l9KGLwAmF7CXhRItVWzbEHPcFQvWpBqtl7UXbWu+j3RPMHocNH8 I6ujnPCGhuaYYCsbUQzzlzVMw0mROm6vFKP2PcYmthXqS5eBLE2oNmUX06tn7U0i 5RjH34yLsaneXCwFJDeDc8RoYGvN8W4KR0uJp0i2BSop3dfkgYlxeB3NoqCh58Rk jMrzJrhG3aetT2OIASNhsD80GT6phBvKLhPnBI/ifHxvUbKBkes5MlfMe/2TuHAq op8iby2Kh54aW7TtUn8aWCZE0kWkOjYYXTH8wBPiTr/RBcdPNXkwofpLIDbV+JL4 qxebeZ8/HxPYoE2yN4mAM765sIWiZyKQhf4VurOXjOO/zsaGiP54vdnDO2ZlwVuS RaglWAZ2+SR79YUABim0KUJvcmlzIEtvbHBhY2tvdiA8Ym9yaXNAY29kZXN5bnRo ZXNpcy5jb20+iQG0BBMBAgAeBQJC1WiIAhsDBgsJCAcDAgMVAgMDFgIBAh4BAheA AAoJEMiAKQuuCE8dkCAMAJqV/8EzQphusvSblnI2LZFaFFLKlot8PUNrqZGEq4D2 mrTQkrkOBVHzSSm/MGOuhSeknzSS6hgEb+L647oxPSQ/YVJ6C7JFkQqcp6gfrYj/ AaCIhJkBccLIxkoNE5gaEZJvhd0WhDg0O0Xy7Jfsl0OQS9mvS5Prw69+ZRE0gFj/ H6XCm7zxpoXtQhFT1QZL/WJEyUIbDQeGppwueHAockV30f6VU+Q+t5PPYDd2+9hf i6hOrHo6Ldne0or1xid+b27uqCid2mCHZM6Q00cMlbupiDiFw0Pjd3pcK7bgFS6o kiHpFieMNgwhVEzz+nqOLoxO8dWz190MPbiW7k2zH+4PWVW3+Qwjq5QAtl18PNRE Lt7XgIT/5AI/ov5CoyVLA0w9I3iL1ChcbzPlHGz0eQgOKM79PikSjkvfAns757te yyWtnfwJcajph2fmz2GTmBAdwVELskmZCqntxIpM3vVZqDl+Sn3JtPl5uNl7zgIl JCjYv/trdjqRIHW9ty7s1rQlQm9yaXMgS29scGFja292IDxib3Jpc0Brb2xwYWNr b3YubmV0PokBtwQTAQIAIQIbAwYLCQgHAwIDFQIDAxYCAQIeAQIXgAUCQtVpVQIZ AQAKCRDIgCkLrghPHWNODACJkRxgIhj6sbLk10nfC4c7DDLhO96HzaWl4W/f34RT 2ZcT9QMlT0rGim93HadI5160aTb3I8uxdsNKUpjZbFMl/6W6jb/rU5qVWPLIKgHG THvskJchTylklhZWhc2/QTHMWZPF2ipr0v6djkIMtEkH1os6cevPvPNkXxFcQmBk GxUgINYe+F5snRmXnR2Fbm56Xam9TWKNfrpNLY03s/S7iHmonLSw7qW5Ixjmrdeh Snil6TxGhDU/AiRX/EEa5O/pqUwlm2E/6TvgQoeX1fEx0YjLevVWjoqASFg75INk N8D6P10mT0LvgIAuK3Ppcd69No3RLufsJGgXjb8NIQyzltqH/S0qPeSBrrpisf/y lV51RuIZBgYHRHl7xVG+KEJ5JLyLzfwebPmRyXiHkM1yz749tiyhV5JMcKsO3hOy 6nZtQRt1as5Dmm0dzhFHYLImqP8nQAblu6q7FRLJLcXLJl8NlOWVPttPcmuGaXc2 NeYuUdtFi+hquk268CtpCJW5Aw0EPuDNnBAMAPa+/MHQ5JBkR+VoVU+9bVLb+RFq lORX9Mtl7MwYBSQwOOv0KTMXVv/ucqh7A4cLQkK7QVD878C1kTYjupDdrAp7GDlN vhzoE+ltuJaUYFDbviwH++vOMMR3DqkPvfcWxUbCGIFDWyHIqVUmGkOzzTIk62IT gYNBvIhxqSh+r5LG0dNFYO+W5bd0FzftmP4AnfhMPDKM6OJsZ2ZrHR0t8EJnn4Pn 6/D1e02/1CUdlMM8gTSAXk4wF69TCsE9fvDq5jgLoud1I2RKLmhRDDxxmQUAjBir aab32oeRzNgbU5RbtolHxfvDiRmHUDDqQavNT3HpElbeXj/J5/Jkh0LcpF1QsDUJ pewVVX4ltMCnCATqUqqgx5UpnfEY1Dt5N3uuO5znQ5oznZHsLWx3qWegTJn7acta /HlFUpSMaxteuXT/6EiE7lAzsGSWTcX8BpCHviDVPhQMy2AFzWSQlUItXyfkfX0B SOgFypLjffx4+bms/DXJPYgwEhjFiTaATBeUOwADBQwAuPTkktfoMsI4lL4UYBr5 afW1R6lHwMZeoH7Mspb82bC9Lqi5gU3wBu3RJwm1CswGMBys+o9J0eA7EDRPw8wM e0THds93rhlABnvhkElbSD/ypsUsX+DRbjiVrV5gTwVRg+5Qmu754BUPrbt14awO 4yLWqV7NN2oOglZy2BTN1WTECOzODRVyxlb3AAL+KWoc0L2QzfRErY5t6ZbIYf2C +8jXgf6iFl6eLDlecWcrHds/rl1A5w+MP1I+EjozMnjejEjUOuVyq4B80YmAquPL 6BB76CyjZnpJjvGLijVU4RrD1vduKlMsy4dh7gQaVTQ+SvrQktrFbEcTy2Gj/Jir LVQagYPSqpcRwLvd0sOGxkipKqIjDi7v8huc+jGmUCFpBcMwJPndzNwuBmJUEGhp QM0VeYHDugZ1+GWVrxDcjAsYKjwjm/qdjP/1el3a9rgMVYrmxHKobiuqYklIWtw6 mp7gzdzwMwUNOX8hHCL21ojStlUs5BbzZQ8X8h8a7sX9iQGcBBgBAgAGBQI+4M2c AAoJEMiAKQuuCE8d4LYL/iUOcqAT3enonrSOu9v8SGKqEc6z7H/5f0t7vZxREVqJ PIEL/Lj5787NouhtZ+k7KBz4Ssu2lmOA63PUXtSllQx8mg/Jb2PUrjUVLCr22WqA mr3zAQQ/14B5cLkhnpSID0oQL5UyP7dZ4beUWB3wYydp/hbOLl7+OrP+2EpIopYB Mdk383GsnN2wWP9pEEDhJ1Lt7DsWuNV/ATZ9yWIvs82s8QiGvWfKbYSHvvzIKAET UkPD7uWU3IdXgm9kuQQ7TNqX6q857PAC3SK+b+qepmyGDJtoeYS19WsxfqZr2Iot i75/zy43w9bhbX17JNQynaMsAP4nG+HHzvnSEp8p0s38Cz5xi6xVb8fig6g3WFwn 6OdZakQ8sI+DyhsrdwlgSCNQTsi85X7Opv8Q+8EQwt+QBTF85O5RjO1Szacsedvl RXSIWXj8vl8TJZ1VsEOBehdSjAjpUJMUHAoq9c69H5ynXzFrVwOWCwfAYcrFNsmX hN0wyp3I8BVY5rjH33DQTA== =ehLR -----END PGP PUBLIC KEY BLOCK----- -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (MingW32) Comment: For info see http://www.gnupg.org mQGiBDyHxtYRBACZ0tjwBxGJZgu/xVMwgCCUdzXcwMlt4xym2Vx0ZZ6bDJWDVlfa U/BvSVrrGGgkuYt2fFOeboYIVqW5OsQKJX5a6eZbywkhiK9CehDoh0Ask0hTgyzf C+kBldozpSv2adBeD4shv8E6mPFsAaA1N7wOIYE6dOuRJBAPIjeZ/ziFxwCg8kaX r59ZEWL2dD4RISap5mGwyA0D/02DYwBN0V8iSqAi6gu1yYAccsz8kw573DRre0Rh h8rgNUh5FA63MMDoifYKW1bcKWZkp9BfAE0Q6qwi7bfs/FOBHBCZpI47FYJ1n8yh VRHA3MxayIqZQlETTNbLMPDJ2rtRs8NJZ7brXnJ2zOuDexzlS2vhKdeJP9gsrfXF LYDeBACBYd6a1WRm5aZMvMpO16C925UbRmDBZ+TfWRtxPqRYSfVM+hkPKw5GObWJ gL1GbF5bIS0C/Ddi7oegB77lGn8XNDTQT5e47SWkeboU+6fuSgsLLSgMfKivh++S 29kngiFIUsKnB4F102GwoAkpsO12Vhnsi9INaXVYLkZmhR3x07QwVGlubnkgTmcg KFhlcmNlcy1DKysgY29tbWl0dGVyKSA8dG5nQGFwYWNoZS5vcmc+iFcEExECABcF AjyHxtYFCwcKAwQDFQMCAxYCAQIXgAAKCRA+PBlAJOh0GSTcAJ9hqoz+wf70Dw84 H2RX7ZEo1jhvggCg1QA//1Ur9XFxLUlFVnbppAMPl5S5AQ0EPIfG1xAEAOjBKfzF 4aZaY1biEUxZCk6PMofuXVE32XFrsm1Pn3AcYThtSEBQM76yXOx7d30IdA6yPSkF rsd9gfB379KfQHAc5VnNZU1xE3rmmT7+s5rRPr0zoBCRtI/qCajFV1IczqmvlAHq QJunztZNB3D2Uu4GGZ2sAQMFyPzBzNk3UODLAAMFBAC1KB5yJkbDhMPeT4ewFhow Yy/VbQSPfYcbTjY/+JXZ6XKZUvZSq75S1id/9vgxMBljfruQKlYQ54P6yQqreWTt IXtR9yQt0C5FVzl7lZKXZYZLJjKmEavqG7dtDNXtmVUWIx7JJwzSv/h6HyXlJZuw Sj5q9RAV/QoRf6bHiNZzgYhGBBgRAgAGBQI8h8bXAAoJED48GUAk6HQZd54An1tZ V9tsv1XZSRmh6SKUHkUn8ZNiAJwOO/uRRPfoeyAUbP+qfro53b+UQpkBogQ8h8bW EQQAmdLY8AcRiWYLv8VTMIAglHc13MDJbeMcptlcdGWemwyVg1ZX2lPwb0la6xho JLmLdnxTnm6GCFaluTrECiV+WunmW8sJIYivQnoQ6IdALJNIU4Ms3wvpAZXaM6Ur 9mnQXg+LIb/BOpjxbAGgNTe8DiGBOnTrkSQQDyI3mf84hccAoPJGl6+fWRFi9nQ+ ESEmqeZhsMgNA/9Ng2MATdFfIkqgIuoLtcmAHHLM/JMOe9w0a3tEYYfK4DVIeRQO tzDA6In2CltW3ClmZKfQXwBNEOqsIu237PxTgRwQmaSOOxWCdZ/MoVURwNzMWsiK mUJRE0zWyzDwydq7UbPDSWe2615ydszrg3sc5Utr4SnXiT/YLK31xS2A3gQAgWHe mtVkZuWmTLzKTtegvduVG0ZgwWfk31kbcT6kWEn1TPoZDysORjm1iYC9RmxeWyEt Avw3Yu6HoAe+5Rp/FzQ00E+XuO0lpHm6FPun7koLCy0oDHyor4fvktvZJ4IhSFLC pweBddNhsKAJKbDtdlYZ7IvSDWl1WC5GZoUd8dO0MFRpbm55IE5nIChYZXJjZXMt QysrIGNvbW1pdHRlcikgPHRuZ0BhcGFjaGUub3JnPohXBBMRAgAXBQI8h8bWBQsH CgMEAxUDAgMWAgECF4AACgkQPjwZQCTodBkk3ACfYaqM/sH+9A8POB9kV+2RKNY4 b4IAoNUAP/9VK/VxcS1JRVZ26aQDD5eUuQENBDyHxtcQBADowSn8xeGmWmNW4hFM WQpOjzKH7l1RN9lxa7JtT59wHGE4bUhAUDO+slzse3d9CHQOsj0pBa7HfYHwd+/S n0BwHOVZzWVNcRN65pk+/rOa0T69M6AQkbSP6gmoxVdSHM6pr5QB6kCbp87WTQdw 9lLuBhmdrAEDBcj8wczZN1DgywADBQQAtSgeciZGw4TD3k+HsBYaMGMv1W0Ej32H G042P/iV2elymVL2Uqu+UtYnf/b4MTAZY367kCpWEOeD+skKq3lk7SF7UfckLdAu RVc5e5WSl2WGSyYyphGr6hu3bQzV7ZlVFiMeyScM0r/4eh8l5SWbsEo+avUQFf0K EX+mx4jWc4GIRgQYEQIABgUCPIfG1wAKCRA+PBlAJOh0GXeeAJ9bWVfbbL9V2UkZ oekilB5FJ/GTYgCcDjv7kUT36HsgFGz/qn66Od2/lEI= =8B+D -----END PGP PUBLIC KEY BLOCK----- -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.0.6 (GNU/Linux) Comment: For info see http://www.gnupg.org mQGiBD6IPYoRBADdZZVTi5dsdtKm9tbJu2PRTMnkgP61zYxT41O9oVoUDhkqKUd3 Kv9Jm+0Kr5RWdega+m9Ew1zEIilywu08xf1Ne6YsXViZB0E+8D+ObLDSGVjm4fBW G5HLeYnPnuivqsXNy71MVOiaM9IGLemvUPkIgteMBBP7dcNko8Ykea2I8wCg2O6J tx2Uj3ZqtSyyC1GOiIBq81UEAM8XTQQm7k+Q2BjommfTHli97WdJrPD/BMCc9MOx wFia80g3nGfrp9F9L2U5jBzOTHmthBSjeCTmIybh4iHz7TfLcj1zqtG+Q4BqrOV6 /N6gKJivAJSLaqEECxyi8VmMnayg/WEe8eaF1QtPh7b3mO9QhZj839GPpHEpNlti noqEA/wM+dx6cy/IcOuKVefon6KMsjJ0oWzBtUE+zWrmWN4oXUWY1C8zHBugqvKf w3Yrse5IHRtvraqrc+37DfVKEP2DheL526zuTMLBNwQc36UeDcL8n1V+0K/Ay7Zs O5/9lxwd9PhmL9E5n2tHbrXKCsMx1HaW1pjMj4BzL1cNo0LS0rQhR2FyZXRoIFJl YWtlcyA8Z2FyZXRoQGFwYWNoZS5vcmc+iFcEExECABcFAj6IPYoFCwcKAwQDFQMC AxYCAQIXgAAKCRAe3w93r4d3pnlSAJwPfmNsaTTRtTLXuhll1FG4kFtTvgCggYB0 YhTzmMtD59n/ymg09SCHKC+IRgQQEQIABgUCPog+iwAKCRA7Ok8Kx55bak8bAJ9Y 73xLuFKBxlkqASo4j9GtRjFW0gCfcZhJzZAApR6Mixy9ei7ykb3adguIRgQQEQIA BgUCPog/jAAKCRBqo+AVTsqIBUSGAJ4jfdTVDT0lhD9DfsZDX9pXPWKNBwCfaaWb YXZ6aSHV0kaZDK7uj3kKQ7m5Ag0EPog9khAIAK5cD5+GcY2bZTfCeHzdbaOGXatl IWr3z8A56L4xA1Mp2D/tpF1Cky1hpFu8SMmNiO4+OqbNF08iJK7p+0HIb7KU2+Fk 4rNumfVkAi+QMvfKyr78pvq2DCqsgyQdFmkFhEYOkgZvas52CRLKW/GGXh+xnQI7 NvJuXu0+z130QcS9Q+f90NSrZWOzcHiz08LzvLnt5miLF0AxJGWwQj/4TzB+Xnwu CS8QV2k81LiHH+qbbPi2+VyMD/dimYZE6Fti/ZziO1KJXcMxfN62/QiYw+ui7K9F YXqiWY+RfXsX3QCfJdMhUtHXArVzMDF6UcDU76lMG1PBcD12zGfRL8iLoBcAAwUH /3ro3uF9Mix2URdXxTfJn4vfDJ/hiAbhENTtCDU5M30lSI9JG5HamVsSMo0hrtJd RaU7fLhbw/1IXn0tvbbeWmWZhDV5fYwuMKywwTvMWBmNZ7eBbZUlFlRyKYQqmrH7 cMBUGbA2ePHpDwvAvgU/zIayvhx87cq3RcbcfJaGvPB8v1thPMek1QK/xyFZowO3 SGSjS7yf1DoTR7cKAatE0bxfL4A6lRa7iWk6ZMgQ5XgQryPoSwqsAAdcjW7wZj+J 7wlDdkWaY5MMPLbmNgRCpbcw/L77x4Wp7u7Nc0vcy/Qc8bYiBmyaavIBwn5BEHWN 85SNootv8flkreqsEKJy8KCIRgQYEQIABgUCPog9kgAKCRAe3w93r4d3ptC8AJ9D O5xVcnBvZRCv2nN6pr9Erm1NZgCgjWXqDC0aQj7rtZq0i9UUCn+/PFA= =QJwD -----END PGP PUBLIC KEY BLOCK----- -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.2.2 (Cygwin) mQGiBDp4qeoRBAC0LNU4DKxiGD4WlaCZytDOlzEpUEJ2osubqdUSnexv/NzOA3Jy ZaAsITi1kj8dQR/pqpFHEMeWsb1Xua33TtlPcCN3kFicjbTOo3jbilx4gUFeO9Oy mcMeu/scYGan4erT++vXEAVd+qKCUzOymFqpDCa3xpqmeDuWxBUjqbCRFwCgt6w/ dvC1VRG2bh7Ja09zfCPr4hkEAIYdq/2k3YYc0T1Fh8fKDRzsRsDYj+8BAGg8YmDy wx04Nh6l3XmKt1DmR0U3ciH6rY3oWXB9oCzGoyr/ZvkakfknGsptBpVK0m9vVHVw uHvIEZDdsX2l4Eplc/FovueZQadCj1R6zwTNvri7h0vTDg9Pk0+dRUcWHuoBhWvN +hv3A/4mWImGrPsx6nq85TJWRJxqFeAnYiEqB69ns69S//+lqBRFWecTYu60dde/ sHJ0mHDTP0u5FRUSj5BVufR5wLZH8+ieGNHl4Jei3VnN3voGhuGNpwGxLDTdXD3W bMlOVx0H2R9+yqlDANLAfRS8GZb93I+riE0H1yMG5YgQC58+VLRUTmVpbCBHcmFo YW0gKHRoaXMga2V5IGlzIHByaW1hcmlseSBmb3Igc2lnbmluZyBYZXJjZXMtSiBy ZWxlYXNlcykgPG5laWxnQGNhLmlibS5jb20+iFcEExECABcFAjp4qeoFCwcKAwQD FQMCAxYCAQIXgAAKCRCL9vl1lVl7BQNhAJ9nucE0TtlFxStFCepoV638ma/jQQCe ILRbfFIo/pef/k551p2+wNqI/DyIRgQQEQIABgUCP6HMvgAKCRABBWa85BNjkiWe AJ9Q0r6at4PhTAukVTIT1jFaIzJaoQCfQwzCjO54eu+zYLJyF4bOJ+i0eSOIRgQT EQIABgUCP6K/ewAKCRCAzn5dyXJfO6jWAKCgr5/0+YchPX1LP975eEhAamZVGQCg qnGt3A7/7LuKF18MjlpZWQOWvuOIRgQQEQIABgUCP61QjwAKCRCl/zLuaIOFDbEQ AJ9CMksH+ujhz2QxiBSd81QtObxotgCgtwqHcr4sYZIhCYCcWp+LkihXgtS5BA0E OnirwBAQAJDuhNBw4SXWZwW84XJclbDzrsftmuI7GeXVYtYQyJCWk4OX+fqR1xpq td6IDLJl/Q/lvde42jxVMSTH2k0NfYsCh+5lIDQ54pYOiHZYQYx6ZhochZJTXxy9 R+gs/vK/UT9f8SqdwY5BlOBTh14hJV33lxk5Ptk9li92NSiiLI3+9GB0bl6dLWnQ PqFeaSvY962i7zgIhnaDOC43cDzwRlTA9zJsI92wYs+QC3LSm5e5falQ7GtQf4dZ 4oid+ayTOE4B9jMumLHn/YQPMzyNFWYQJkyohfninxm8+aPOAOmveF+K8FE0dQsX agIjHSX/4cJFoWGnOdq8emkhlNQaoPIldpSQcNLIB0Psnc4RhKQ30tK5a1unTgex mYLfFO8oLd439SKSaU1D00V0blf/e5cfFaJsRoQnPjG+jLu9l5cj7wkYH1XC7efy QJ2tW8br+0ENn2Ap30Uy6C7fQshyATFPk0rSonfIpH0Gd7//b8DutYpY6/ySHoWM muoqeqc1RdJc6qiJPj6OLrfzgLJrVt3Mj6GgCltsHXreRqMtwhRZ1xx5EZIDXGQ7 /wnbDYgTU1NsY6VmBgZdkNOoCySg7Tf7NuJzLJ1Mlc2HBWhRBcrkwYhjGMsPIzK/ 2jVY9qTDecPNMZcscWTPQp6t7VzgzxEe8UJlDDtVMUY02QKw+0ELAAMFD/9mdmU/ mEgwv9IxfNwisRW7jRQJjo4weUU6K9zkKZvRSg0tPLlyjTGtYKV4JTkeY++O38ie cLJQOtBc5OikPbfhF2EMF7U+ATsd0hVvEVpCzsxcBr76Nt607Hcq7EeyL7GrvpaS o5pTG89DFktB1xVji3X4ko+JI+uP5rva29y0o0KbjTReRqvdVUHHvnGgKu7UVmxW AEAikEd2mQ5OYwqgO53VfL49akWR6Br30mymNw4oof1VqnPu0ZwN2WJkhM6fXA0N k1+MsG8XZUe1hOX4pwFEmiv4R9htUhv3Hvl/HxY3oMRedHrkwLwEQQkW8UVJkS/u 6QZzeOplEG4s7ArmxEWqr3pBxXehvDvcpeWn8P+yhd8NgeZ7zDT1W+RT9iqIYvVv UOYvEop32HJeJKeaZR1WUhTOxrHggCFQ8G6VEVeVmcJrcrvHI+9mbM+5oxt2NeGX pf4eOErDxaFglvYSvXeX+IW3u7XQaxHs/D8v1fADzMi0xOIF7lxA7iyfNmfmb8NN vej/F/Wj99od18agGy566pNYquu0VSV1nU4v2JRyZFkvtxjqZK+WVjZlMvbjaZPN 9IPWCtC7nKPOkpLdr1XoDrcIIZBldcOcGf/MdIaG5idzwIl3264vtCeIIDrGjxol nQtO/wBr3R4e1BEksCNsHok+HoGfDvaKNTCWU4hGBBgRAgAGBQI6eKvAAAoJEIv2 +XWVWXsFH1cAn3k4YjXAjj+xOnPXTckz7jMXwkZoAJ9+F70Jxv1uoUGzpBnFs4Cu H39QDg== =cl3K -----END PGP PUBLIC KEY BLOCK----- -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.2.4 (MingW32) mQGiBEAxJWARBACJ4GAREpL61NDClbabHkC6iPIQgX5B8uYkupPT7aKW0bdkB10z M6mu6HSLHKm8mzpWK+Uzsvm+PLVWpumKh2CtdhqPskbnsn+kqL/bnYQcMMPG6ddC WR8DwqT0NEIzHa6KhCom1WnSfwQxIP7mi+xGr+GHFbT17dXJM+eVSnlkqwCgqsoq ZNMbMzJRJe0yAVp8khG0bgED/2Azm+oj88WMRIKSfuYvmCzOPHql6j94gCVUYsfu Ygg37Y+ajPiLEL0YSn/fVlTdqQ6rNXPPwFnbxJpQeAKu7arppHmsRv0RrfbG4wpW tmbLASrqYI3MpjcH8uHKSszv4Pdx81sk27O0VHtrtWowhk1Cale/IPUXe+a/9KXE GQfOA/9THDQh+wj1JYx35rBideVcCgKwU83F4lcIKD0yaYH2zFlk3X6YmXEiglaP CkYOcrJiJiNmbnXTwbASmed/xKy3d8ltvR0yJIctveZlZ2Qn4PAJbbSkBOpQ2uSF 39t0Ucu/9411JjkEGlR28pOxo83EKNOqs3NO0RTKxS+OA9IX0LQjUGVpWW9uZyBa aGFuZyA8cGVpeW9uZ3pAY2EuaWJtLmNvbT6IXgQTEQIAHgUCQDElYAIbAwYLCQgH AwIDFQIDAxYCAQIeAQIXgAAKCRDs6whVcdsjNe3qAJwKTZzF0Pi4gpEaYG8ejeFk fd8uqACglgUrALCA7T0DENQrIfg37gX+ovu5AQ0EQDElYxAEANsUYxWjFKamG1A0 K2ASNgp29IevQdk+YTRkqax8Zxv7tHWB6SOg65GJt6Oc2iwvJ+zV4d/B4KGEpL87 GpbpeJTeT4HIRfaKrtO4T6bJ1Wr4gf/EhWi1NVXK0oOVAxyfSaIbkl+2Y8u0jfVO Vgw//xuFGdx3IOjLNQSTbQ/w49V3AAMFA/4r8qJmfnerpK8xVQFDd/f9+j44rxQh 1RaXVKka1AxXTKdjyaDTze73RFX1AX3++FS9bMoqv0KamGFj/HMcGJP65ominoyu Hmea9zMJSXLF/KlhQ2ZIF8sG/kci2RthmZVxvJ6oWH1wXscfjCIjFgWLqY29/sGF smUlVt+wRiRQmIhJBBgRAgAJBQJAMSVjAhsMAAoJEOzrCFVx2yM1QjkAnjJl6YHS HnUmiKj1nzOTMG+DlKq0AJ42j+nRdCDjdX6tK5/7cy5JnUe7bg== =jqXV -----END PGP PUBLIC KEY BLOCK----- xerces-c-3.1.1/src/0000755000175000017500000000000011363617723013043 5ustar borisborisxerces-c-3.1.1/src/Makefile.am0000644000175000017500000012446611302442455015103 0ustar borisboris# # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # # $Id: Makefile.am 883272 2009-11-23 08:17:49Z borisk $ # include ${top_srcdir}/version.incl DEFS += -DXERCES_BUILDING_LIBRARY SUBDIRS = # # lib_LTLIBRARIES = libxerces-c.la # Use AM_* variables instead of per-target ones otherwise the # make pretty-printing won't work. # AM_CPPFLAGS = libxerces_c_la_LDFLAGS = -release ${INTERFACE_VER_D} # This sets {install}/include as target for the headers libxerces_c_ladir = ${includedir} libxerces_c_la_SOURCES = ${util_sources} ${dom_sources} ${domimpl_sources} \ ${framework_sources} ${internal_sources} ${parsers_sources} ${sax_sources} \ ${sax2_sources} ${validators_sources} ${xinclude_sources} nobase_libxerces_c_la_HEADERS = ${util_headers} ${dom_headers} \ ${domimpl_headers} ${framework_headers} ${internal_headers} \ ${parsers_headers} ${sax_headers} ${sax2_headers} ${validators_headers} \ ${xinclude_headers} # Make sure autoconf-generated Xerces_autoconf_config.hpp ends up in a # proper place when installed. # autoconfheadersdir = $(includedir)/xercesc/util nodist_autoconfheaders_HEADERS = ${top_builddir}/src/xercesc/util/Xerces_autoconf_config.hpp # Compatibility library. # EXTRA_DIST = stricmp.h strnicmp.h towlower.h towupper.h libxerces_c_la_LIBADD = ${LTLIBOBJS} # NetAccessors, conditionally built based on settings from configure # if XERCES_USE_NETACCESSOR_CURL libxerces_c_la_SOURCES += ${curl_sources} nobase_libxerces_c_la_HEADERS += ${curl_headers} AM_CPPFLAGS += ${CURL_FLAGS} endif if XERCES_USE_NETACCESSOR_SOCKET libxerces_c_la_SOURCES += ${sockets_sources} nobase_libxerces_c_la_HEADERS += ${sockets_headers} endif if XERCES_USE_NETACCESSOR_CFURL libxerces_c_la_SOURCES += ${cfurl_sources} nobase_libxerces_c_la_HEADERS += ${cfurl_headers} endif if XERCES_USE_NETACCESSOR_WINSOCK libxerces_c_la_SOURCES += ${winsock_sources} nobase_libxerces_c_la_HEADERS += ${winsock_headers} endif # Transcoders, conditionally built based on settings from configure # if XERCES_USE_TRANSCODER_ICU libxerces_c_la_SOURCES += ${icu_sources} nobase_libxerces_c_la_HEADERS += ${icu_headers} AM_CPPFLAGS += ${ICU_FLAGS} endif if XERCES_USE_TRANSCODER_GNUICONV libxerces_c_la_SOURCES += ${gnuiconv_sources} nobase_libxerces_c_la_HEADERS += ${gnuiconv_headers} endif if XERCES_USE_TRANSCODER_ICONV libxerces_c_la_SOURCES += ${iconv_sources} nobase_libxerces_c_la_HEADERS += ${iconv_headers} endif if XERCES_USE_TRANSCODER_MACOSUNICODECONVERTER libxerces_c_la_SOURCES += ${macosunicodeconverter_sources} nobase_libxerces_c_la_HEADERS += ${macosunicodeconverter_headers} endif if XERCES_USE_TRANSCODER_WINDOWS libxerces_c_la_SOURCES += ${wintrans_sources} nobase_libxerces_c_la_HEADERS += ${wintrans_headers} endif # MsgLoaders, conditionally built based on settings from configure # if XERCES_USE_MSGLOADER_INMEMORY libxerces_c_la_SOURCES += ${msginmemory_sources} nobase_libxerces_c_la_HEADERS += ${msginmemory_headers} endif if XERCES_USE_MSGLOADER_ICU libxerces_c_la_SOURCES += ${msgicu_sources} nodist_libxerces_c_la_SOURCES = ${msgicu_nodist_sources} nobase_libxerces_c_la_HEADERS += ${msgicu_headers} AM_CPPFLAGS += ${ICU_FLAGS} EXTRA_DIST += xercesc/util/MsgLoaders/ICU/resources/res-file-list.txt \ xercesc/util/MsgLoaders/ICU/resources/root.txt # Resource shortname PKGNAME=xercesc_messages_${INTERFACE_VER_U} CLEANFILES = xercesc_messages.c root_res.c root.res BUILT_SOURCES = xercesc_messages.c root_res.c xercesc_messages.c: ${top_srcdir}/src/xercesc/util/MsgLoaders/ICU/resources/res-file-list.txt ${ICU_SBIN}gencmn --name ${PKGNAME} -S ${PKGNAME}_dat.c -d . ${top_srcdir}/src/xercesc/util/MsgLoaders/ICU/resources/res-file-list.txt @mv ${PKGNAME}_dat.c xercesc_messages.c root_res.c: ${top_srcdir}/src/xercesc/util/MsgLoaders/ICU/resources/root.txt ${ICU_BIN}genrb -d . ${top_srcdir}/src/xercesc/util/MsgLoaders/ICU/resources/root.txt ${ICU_SBIN}genccode --name ${PKGNAME} -d . root.res endif if XERCES_USE_MSGLOADER_ICONV libxerces_c_la_SOURCES += ${msgiconv_sources} nobase_libxerces_c_la_HEADERS += ${msgiconv_headers} SUBDIRS += xercesc/util/MsgLoaders/MsgCatalog endif # Mutex Managers, conditionally built based on settings from configure # if XERCES_USE_MUTEXMGR_NOTHREAD libxerces_c_la_SOURCES += ${nothreadmmgr_sources} nobase_libxerces_c_la_HEADERS += ${nothreadmmgr_headers} endif if XERCES_USE_MUTEXMGR_POSIX libxerces_c_la_SOURCES += ${posixmmgr_sources} nobase_libxerces_c_la_HEADERS += ${posixmmgr_headers} endif if XERCES_USE_MUTEXMGR_WINDOWS libxerces_c_la_SOURCES += ${winmmgr_sources} nobase_libxerces_c_la_HEADERS += ${winmmgr_headers} endif # File Managers, conditionally built based on settings from configure # if XERCES_USE_FILEMGR_POSIX libxerces_c_la_SOURCES += ${posixfmgr_sources} nobase_libxerces_c_la_HEADERS += ${posixfmgr_headers} endif if XERCES_USE_FILEMGR_WINDOWS libxerces_c_la_SOURCES += ${winfmgr_sources} nobase_libxerces_c_la_HEADERS += ${winfmgr_headers} endif # # Definition of sources/headers for each convenience library # # # A line like the following will generate a list of headers # for a given directory: (must be issued from src directory) # find xercesc/framework -name '*.hpp' -exec echo {} \\ ";" # find xercesc/framework -name '*.cpp' -exec echo {} \\ ";" # dom_headers = \ xercesc/dom/DOM.hpp \ xercesc/dom/DOMAttr.hpp \ xercesc/dom/DOMCDATASection.hpp \ xercesc/dom/DOMCharacterData.hpp \ xercesc/dom/DOMComment.hpp \ xercesc/dom/DOMConfiguration.hpp \ xercesc/dom/DOMDocument.hpp \ xercesc/dom/DOMDocumentFragment.hpp \ xercesc/dom/DOMDocumentRange.hpp \ xercesc/dom/DOMDocumentTraversal.hpp \ xercesc/dom/DOMDocumentType.hpp \ xercesc/dom/DOMElement.hpp \ xercesc/dom/DOMEntity.hpp \ xercesc/dom/DOMEntityReference.hpp \ xercesc/dom/DOMError.hpp \ xercesc/dom/DOMErrorHandler.hpp \ xercesc/dom/DOMException.hpp \ xercesc/dom/DOMImplementation.hpp \ xercesc/dom/DOMImplementationList.hpp \ xercesc/dom/DOMImplementationLS.hpp \ xercesc/dom/DOMImplementationRegistry.hpp \ xercesc/dom/DOMImplementationSource.hpp \ xercesc/dom/DOMLocator.hpp \ xercesc/dom/DOMLSException.hpp \ xercesc/dom/DOMLSInput.hpp \ xercesc/dom/DOMLSOutput.hpp \ xercesc/dom/DOMLSParser.hpp \ xercesc/dom/DOMLSParserFilter.hpp \ xercesc/dom/DOMLSResourceResolver.hpp \ xercesc/dom/DOMLSSerializer.hpp \ xercesc/dom/DOMLSSerializerFilter.hpp \ xercesc/dom/DOMMemoryManager.hpp \ xercesc/dom/DOMNamedNodeMap.hpp \ xercesc/dom/DOMNode.hpp \ xercesc/dom/DOMNodeFilter.hpp \ xercesc/dom/DOMNodeIterator.hpp \ xercesc/dom/DOMNodeList.hpp \ xercesc/dom/DOMNotation.hpp \ xercesc/dom/DOMProcessingInstruction.hpp \ xercesc/dom/DOMPSVITypeInfo.hpp \ xercesc/dom/DOMRange.hpp \ xercesc/dom/DOMRangeException.hpp \ xercesc/dom/DOMStringList.hpp \ xercesc/dom/DOMText.hpp \ xercesc/dom/DOMTreeWalker.hpp \ xercesc/dom/DOMTypeInfo.hpp \ xercesc/dom/DOMUserDataHandler.hpp \ xercesc/dom/DOMXPathEvaluator.hpp \ xercesc/dom/DOMXPathException.hpp \ xercesc/dom/DOMXPathExpression.hpp \ xercesc/dom/DOMXPathNamespace.hpp \ xercesc/dom/DOMXPathNSResolver.hpp \ xercesc/dom/DOMXPathResult.hpp \ xercesc/dom/StDOMNode.hpp dom_sources = \ xercesc/dom/DOMException.cpp \ xercesc/dom/DOMLSException.cpp \ xercesc/dom/DOMRangeException.cpp \ xercesc/dom/DOMXPathException.cpp domimpl_headers = \ xercesc/dom/impl/DOMAttrImpl.hpp \ xercesc/dom/impl/DOMAttrMapImpl.hpp \ xercesc/dom/impl/DOMAttrNSImpl.hpp \ xercesc/dom/impl/DOMCasts.hpp \ xercesc/dom/impl/DOMCDATASectionImpl.hpp \ xercesc/dom/impl/DOMCharacterDataImpl.hpp \ xercesc/dom/impl/DOMChildNode.hpp \ xercesc/dom/impl/DOMCommentImpl.hpp \ xercesc/dom/impl/DOMConfigurationImpl.hpp \ xercesc/dom/impl/DOMDeepNodeListImpl.hpp \ xercesc/dom/impl/DOMDeepNodeListPool.hpp \ xercesc/dom/impl/DOMDeepNodeListPool.c \ xercesc/dom/impl/DOMDocumentFragmentImpl.hpp \ xercesc/dom/impl/DOMDocumentImpl.hpp \ xercesc/dom/impl/DOMDocumentTypeImpl.hpp \ xercesc/dom/impl/DOMElementImpl.hpp \ xercesc/dom/impl/DOMElementNSImpl.hpp \ xercesc/dom/impl/DOMEntityImpl.hpp \ xercesc/dom/impl/DOMEntityReferenceImpl.hpp \ xercesc/dom/impl/DOMErrorImpl.hpp \ xercesc/dom/impl/DOMImplementationImpl.hpp \ xercesc/dom/impl/DOMImplementationListImpl.hpp \ xercesc/dom/impl/DOMLocatorImpl.hpp \ xercesc/dom/impl/DOMNamedNodeMapImpl.hpp \ xercesc/dom/impl/DOMNodeIDMap.hpp \ xercesc/dom/impl/DOMNodeImpl.hpp \ xercesc/dom/impl/DOMNodeIteratorImpl.hpp \ xercesc/dom/impl/DOMNodeListImpl.hpp \ xercesc/dom/impl/DOMNodeVector.hpp \ xercesc/dom/impl/DOMNormalizer.hpp \ xercesc/dom/impl/DOMNotationImpl.hpp \ xercesc/dom/impl/DOMParentNode.hpp \ xercesc/dom/impl/DOMProcessingInstructionImpl.hpp \ xercesc/dom/impl/DOMRangeImpl.hpp \ xercesc/dom/impl/DOMStringListImpl.hpp \ xercesc/dom/impl/DOMStringPool.hpp \ xercesc/dom/impl/DOMTextImpl.hpp \ xercesc/dom/impl/DOMTreeWalkerImpl.hpp \ xercesc/dom/impl/DOMTypeInfoImpl.hpp \ xercesc/dom/impl/DOMLSSerializerImpl.hpp \ xercesc/dom/impl/DOMLSInputImpl.hpp \ xercesc/dom/impl/DOMLSOutputImpl.hpp \ xercesc/dom/impl/DOMXPathExpressionImpl.hpp \ xercesc/dom/impl/DOMXPathNSResolverImpl.hpp \ xercesc/dom/impl/DOMXPathResultImpl.hpp \ xercesc/dom/impl/XSDElementNSImpl.hpp domimpl_sources = \ xercesc/dom/impl/DOMAttrImpl.cpp \ xercesc/dom/impl/DOMAttrMapImpl.cpp \ xercesc/dom/impl/DOMAttrNSImpl.cpp \ xercesc/dom/impl/DOMCDATASectionImpl.cpp \ xercesc/dom/impl/DOMCharacterDataImpl.cpp \ xercesc/dom/impl/DOMChildNode.cpp \ xercesc/dom/impl/DOMCommentImpl.cpp \ xercesc/dom/impl/DOMConfigurationImpl.cpp \ xercesc/dom/impl/DOMDeepNodeListImpl.cpp \ xercesc/dom/impl/DOMDocumentFragmentImpl.cpp \ xercesc/dom/impl/DOMDocumentImpl.cpp \ xercesc/dom/impl/DOMDocumentTypeImpl.cpp \ xercesc/dom/impl/DOMElementImpl.cpp \ xercesc/dom/impl/DOMElementNSImpl.cpp \ xercesc/dom/impl/DOMEntityImpl.cpp \ xercesc/dom/impl/DOMEntityReferenceImpl.cpp \ xercesc/dom/impl/DOMErrorImpl.cpp \ xercesc/dom/impl/DOMImplementationImpl.cpp \ xercesc/dom/impl/DOMImplementationListImpl.cpp \ xercesc/dom/impl/DOMImplementationRegistry.cpp \ xercesc/dom/impl/DOMLocatorImpl.cpp \ xercesc/dom/impl/DOMNamedNodeMapImpl.cpp \ xercesc/dom/impl/DOMNodeIDMap.cpp \ xercesc/dom/impl/DOMNodeImpl.cpp \ xercesc/dom/impl/DOMNodeIteratorImpl.cpp \ xercesc/dom/impl/DOMNodeListImpl.cpp \ xercesc/dom/impl/DOMNodeVector.cpp \ xercesc/dom/impl/DOMNormalizer.cpp \ xercesc/dom/impl/DOMNotationImpl.cpp \ xercesc/dom/impl/DOMParentNode.cpp \ xercesc/dom/impl/DOMProcessingInstructionImpl.cpp \ xercesc/dom/impl/DOMRangeImpl.cpp \ xercesc/dom/impl/DOMStringListImpl.cpp \ xercesc/dom/impl/DOMStringPool.cpp \ xercesc/dom/impl/DOMTextImpl.cpp \ xercesc/dom/impl/DOMTreeWalkerImpl.cpp \ xercesc/dom/impl/DOMTypeInfoImpl.cpp \ xercesc/dom/impl/DOMLSSerializerImpl.cpp \ xercesc/dom/impl/DOMLSInputImpl.cpp \ xercesc/dom/impl/DOMLSOutputImpl.cpp \ xercesc/dom/impl/DOMXPathExpressionImpl.cpp \ xercesc/dom/impl/DOMXPathNSResolverImpl.cpp \ xercesc/dom/impl/DOMXPathResultImpl.cpp \ xercesc/dom/impl/XSDElementNSImpl.cpp framework_headers = \ xercesc/framework/BinOutputStream.hpp \ xercesc/framework/LocalFileFormatTarget.hpp \ xercesc/framework/LocalFileInputSource.hpp \ xercesc/framework/MemBufFormatTarget.hpp \ xercesc/framework/MemBufInputSource.hpp \ xercesc/framework/MemoryManager.hpp \ xercesc/framework/psvi/PSVIAttribute.hpp \ xercesc/framework/psvi/PSVIAttributeList.hpp \ xercesc/framework/psvi/PSVIElement.hpp \ xercesc/framework/psvi/PSVIHandler.hpp \ xercesc/framework/psvi/PSVIItem.hpp \ xercesc/framework/psvi/XSAnnotation.hpp \ xercesc/framework/psvi/XSAttributeDeclaration.hpp \ xercesc/framework/psvi/XSAttributeGroupDefinition.hpp \ xercesc/framework/psvi/XSAttributeUse.hpp \ xercesc/framework/psvi/XSComplexTypeDefinition.hpp \ xercesc/framework/psvi/XSConstants.hpp \ xercesc/framework/psvi/XSElementDeclaration.hpp \ xercesc/framework/psvi/XSFacet.hpp \ xercesc/framework/psvi/XSIDCDefinition.hpp \ xercesc/framework/psvi/XSModel.hpp \ xercesc/framework/psvi/XSModelGroup.hpp \ xercesc/framework/psvi/XSModelGroupDefinition.hpp \ xercesc/framework/psvi/XSMultiValueFacet.hpp \ xercesc/framework/psvi/XSNamedMap.hpp \ xercesc/framework/psvi/XSNamedMap.c \ xercesc/framework/psvi/XSNamespaceItem.hpp \ xercesc/framework/psvi/XSNotationDeclaration.hpp \ xercesc/framework/psvi/XSObject.hpp \ xercesc/framework/psvi/XSParticle.hpp \ xercesc/framework/psvi/XSSimpleTypeDefinition.hpp \ xercesc/framework/psvi/XSTypeDefinition.hpp \ xercesc/framework/psvi/XSValue.hpp \ xercesc/framework/psvi/XSWildcard.hpp \ xercesc/framework/StdInInputSource.hpp \ xercesc/framework/StdOutFormatTarget.hpp \ xercesc/framework/URLInputSource.hpp \ xercesc/framework/ValidationContext.hpp \ xercesc/framework/Wrapper4DOMLSInput.hpp \ xercesc/framework/Wrapper4InputSource.hpp \ xercesc/framework/XMLAttDef.hpp \ xercesc/framework/XMLAttDefList.hpp \ xercesc/framework/XMLAttr.hpp \ xercesc/framework/XMLBuffer.hpp \ xercesc/framework/XMLBufferMgr.hpp \ xercesc/framework/XMLContentModel.hpp \ xercesc/framework/XMLDocumentHandler.hpp \ xercesc/framework/XMLDTDDescription.hpp \ xercesc/framework/XMLElementDecl.hpp \ xercesc/framework/XMLEntityDecl.hpp \ xercesc/framework/XMLEntityHandler.hpp \ xercesc/framework/XMLErrorCodes.hpp \ xercesc/framework/XMLErrorReporter.hpp \ xercesc/framework/XMLFormatter.hpp \ xercesc/framework/XMLGrammarDescription.hpp \ xercesc/framework/XMLGrammarPool.hpp \ xercesc/framework/XMLGrammarPoolImpl.hpp \ xercesc/framework/XMLNotationDecl.hpp \ xercesc/framework/XMLPScanToken.hpp \ xercesc/framework/XMLRecognizer.hpp \ xercesc/framework/XMLRefInfo.hpp \ xercesc/framework/XMLSchemaDescription.hpp \ xercesc/framework/XMLValidator.hpp \ xercesc/framework/XMLValidityCodes.hpp framework_sources = \ xercesc/framework/BinOutputStream.cpp \ xercesc/framework/LocalFileFormatTarget.cpp \ xercesc/framework/LocalFileInputSource.cpp \ xercesc/framework/MemBufFormatTarget.cpp \ xercesc/framework/MemBufInputSource.cpp \ xercesc/framework/psvi/PSVIAttribute.cpp \ xercesc/framework/psvi/PSVIAttributeList.cpp \ xercesc/framework/psvi/PSVIElement.cpp \ xercesc/framework/psvi/PSVIItem.cpp \ xercesc/framework/psvi/XSAnnotation.cpp \ xercesc/framework/psvi/XSAttributeDeclaration.cpp \ xercesc/framework/psvi/XSAttributeGroupDefinition.cpp \ xercesc/framework/psvi/XSAttributeUse.cpp \ xercesc/framework/psvi/XSComplexTypeDefinition.cpp \ xercesc/framework/psvi/XSElementDeclaration.cpp \ xercesc/framework/psvi/XSFacet.cpp \ xercesc/framework/psvi/XSIDCDefinition.cpp \ xercesc/framework/psvi/XSModel.cpp \ xercesc/framework/psvi/XSModelGroup.cpp \ xercesc/framework/psvi/XSModelGroupDefinition.cpp \ xercesc/framework/psvi/XSMultiValueFacet.cpp \ xercesc/framework/psvi/XSNamespaceItem.cpp \ xercesc/framework/psvi/XSNotationDeclaration.cpp \ xercesc/framework/psvi/XSObject.cpp \ xercesc/framework/psvi/XSParticle.cpp \ xercesc/framework/psvi/XSSimpleTypeDefinition.cpp \ xercesc/framework/psvi/XSTypeDefinition.cpp \ xercesc/framework/psvi/XSValue.cpp \ xercesc/framework/psvi/XSWildcard.cpp \ xercesc/framework/StdInInputSource.cpp \ xercesc/framework/StdOutFormatTarget.cpp \ xercesc/framework/URLInputSource.cpp \ xercesc/framework/Wrapper4DOMLSInput.cpp \ xercesc/framework/Wrapper4InputSource.cpp \ xercesc/framework/XMLAttDef.cpp \ xercesc/framework/XMLAttDefList.cpp \ xercesc/framework/XMLAttr.cpp \ xercesc/framework/XMLBuffer.cpp \ xercesc/framework/XMLBufferMgr.cpp \ xercesc/framework/XMLContentModel.cpp \ xercesc/framework/XMLDTDDescription.cpp \ xercesc/framework/XMLElementDecl.cpp \ xercesc/framework/XMLEntityDecl.cpp \ xercesc/framework/XMLFormatter.cpp \ xercesc/framework/XMLGrammarDescription.cpp \ xercesc/framework/XMLGrammarPoolImpl.cpp \ xercesc/framework/XMLNotationDecl.cpp \ xercesc/framework/XMLRecognizer.cpp \ xercesc/framework/XMLRefInfo.cpp \ xercesc/framework/XMLSchemaDescription.cpp \ xercesc/framework/XMLValidator.cpp internal_headers = \ xercesc/internal/BinFileOutputStream.hpp \ xercesc/internal/BinMemOutputStream.hpp \ xercesc/internal/CharTypeTables.hpp \ xercesc/internal/DGXMLScanner.hpp \ xercesc/internal/ElemStack.hpp \ xercesc/internal/EndOfEntityException.hpp \ xercesc/internal/IANAEncodings.hpp \ xercesc/internal/IGXMLScanner.hpp \ xercesc/internal/MemoryManagerImpl.hpp \ xercesc/internal/ReaderMgr.hpp \ xercesc/internal/SGXMLScanner.hpp \ xercesc/internal/ValidationContextImpl.hpp \ xercesc/internal/VecAttributesImpl.hpp \ xercesc/internal/VecAttrListImpl.hpp \ xercesc/internal/WFXMLScanner.hpp \ xercesc/internal/XMLInternalErrorHandler.hpp \ xercesc/internal/XMLReader.hpp \ xercesc/internal/XMLScanner.hpp \ xercesc/internal/XMLScannerResolver.hpp \ xercesc/internal/XProtoType.hpp \ xercesc/internal/XSAXMLScanner.hpp \ xercesc/internal/XSerializable.hpp \ xercesc/internal/XSerializationException.hpp \ xercesc/internal/XSerializeEngine.hpp \ xercesc/internal/XSObjectFactory.hpp \ xercesc/internal/XTemplateSerializer.hpp internal_sources = \ xercesc/internal/BinFileOutputStream.cpp \ xercesc/internal/BinMemOutputStream.cpp \ xercesc/internal/DGXMLScanner.cpp \ xercesc/internal/ElemStack.cpp \ xercesc/internal/IGXMLScanner.cpp \ xercesc/internal/IGXMLScanner2.cpp \ xercesc/internal/MemoryManagerImpl.cpp \ xercesc/internal/ReaderMgr.cpp \ xercesc/internal/SGXMLScanner.cpp \ xercesc/internal/ValidationContextImpl.cpp \ xercesc/internal/VecAttributesImpl.cpp \ xercesc/internal/VecAttrListImpl.cpp \ xercesc/internal/WFXMLScanner.cpp \ xercesc/internal/XMLReader.cpp \ xercesc/internal/XMLScanner.cpp \ xercesc/internal/XMLScannerResolver.cpp \ xercesc/internal/XProtoType.cpp \ xercesc/internal/XSAXMLScanner.cpp \ xercesc/internal/XSerializeEngine.cpp \ xercesc/internal/XSObjectFactory.cpp \ xercesc/internal/XTemplateSerializer.cpp parsers_headers = \ xercesc/parsers/AbstractDOMParser.hpp \ xercesc/parsers/DOMLSParserImpl.hpp \ xercesc/parsers/SAX2XMLFilterImpl.hpp \ xercesc/parsers/SAX2XMLReaderImpl.hpp \ xercesc/parsers/SAXParser.hpp \ xercesc/parsers/XercesDOMParser.hpp parsers_sources = \ xercesc/parsers/AbstractDOMParser.cpp \ xercesc/parsers/DOMLSParserImpl.cpp \ xercesc/parsers/SAX2XMLFilterImpl.cpp \ xercesc/parsers/SAX2XMLReaderImpl.cpp \ xercesc/parsers/SAXParser.cpp \ xercesc/parsers/XercesDOMParser.cpp sax_headers = \ xercesc/sax/AttributeList.hpp \ xercesc/sax/DocumentHandler.hpp \ xercesc/sax/DTDHandler.hpp \ xercesc/sax/EntityResolver.hpp \ xercesc/sax/ErrorHandler.hpp \ xercesc/sax/HandlerBase.hpp \ xercesc/sax/InputSource.hpp \ xercesc/sax/Locator.hpp \ xercesc/sax/Parser.hpp \ xercesc/sax/SAXException.hpp \ xercesc/sax/SAXParseException.hpp sax_sources = \ xercesc/sax/Dummy.cpp \ xercesc/sax/InputSource.cpp \ xercesc/sax/SAXException.cpp \ xercesc/sax/SAXParseException.cpp sax2_headers = \ xercesc/sax2/Attributes.hpp \ xercesc/sax2/ContentHandler.hpp \ xercesc/sax2/DeclHandler.hpp \ xercesc/sax2/DefaultHandler.hpp \ xercesc/sax2/LexicalHandler.hpp \ xercesc/sax2/SAX2XMLFilter.hpp \ xercesc/sax2/SAX2XMLReader.hpp \ xercesc/sax2/XMLReaderFactory.hpp sax2_sources = \ xercesc/sax2/sax2Dummy.cpp util_headers = \ xercesc/util/ArrayIndexOutOfBoundsException.hpp \ xercesc/util/Base64.hpp \ xercesc/util/BaseRefVectorOf.hpp \ xercesc/util/BaseRefVectorOf.c \ xercesc/util/BinFileInputStream.hpp \ xercesc/util/BinInputStream.hpp \ xercesc/util/BinMemInputStream.hpp \ xercesc/util/BitOps.hpp \ xercesc/util/BitSet.hpp \ xercesc/util/CountedPointer.hpp \ xercesc/util/CountedPointer.c \ xercesc/util/DefaultPanicHandler.hpp \ xercesc/util/EmptyStackException.hpp \ xercesc/util/EncodingValidator.hpp \ xercesc/util/FlagJanitor.hpp \ xercesc/util/FlagJanitor.c \ xercesc/util/Hashers.hpp \ xercesc/util/Hash2KeysSetOf.hpp \ xercesc/util/Hash2KeysSetOf.c \ xercesc/util/HexBin.hpp \ xercesc/util/IllegalArgumentException.hpp \ xercesc/util/InvalidCastException.hpp \ xercesc/util/IOException.hpp \ xercesc/util/Janitor.hpp \ xercesc/util/Janitor.c \ xercesc/util/KeyRefPair.hpp \ xercesc/util/KeyRefPair.c \ xercesc/util/KeyValuePair.hpp \ xercesc/util/KeyValuePair.c \ xercesc/util/KVStringPair.hpp \ xercesc/util/Mutexes.hpp \ xercesc/util/LogicalPath.c \ xercesc/util/NameIdPool.hpp \ xercesc/util/NameIdPool.c \ xercesc/util/NoSuchElementException.hpp \ xercesc/util/NullPointerException.hpp \ xercesc/util/NumberFormatException.hpp \ xercesc/util/OutOfMemoryException.hpp \ xercesc/util/PanicHandler.hpp \ xercesc/util/ParseException.hpp \ xercesc/util/PlatformUtils.hpp \ xercesc/util/PSVIUni.hpp \ xercesc/util/QName.hpp \ xercesc/util/RefArrayOf.hpp \ xercesc/util/RefArrayOf.c \ xercesc/util/RefArrayVectorOf.hpp \ xercesc/util/RefArrayVectorOf.c \ xercesc/util/RefHash2KeysTableOf.hpp \ xercesc/util/RefHash2KeysTableOf.c \ xercesc/util/RefHash3KeysIdPool.hpp \ xercesc/util/RefHash3KeysIdPool.c \ xercesc/util/RefHashTableOf.hpp \ xercesc/util/RefHashTableOf.c \ xercesc/util/RefStackOf.hpp \ xercesc/util/RefStackOf.c \ xercesc/util/RefVectorOf.hpp \ xercesc/util/RefVectorOf.c \ xercesc/util/regx/ASCIIRangeFactory.hpp \ xercesc/util/regx/BlockRangeFactory.hpp \ xercesc/util/regx/BMPattern.hpp \ xercesc/util/regx/CharToken.hpp \ xercesc/util/regx/ClosureToken.hpp \ xercesc/util/regx/ConcatToken.hpp \ xercesc/util/regx/Match.hpp \ xercesc/util/regx/Op.hpp \ xercesc/util/regx/OpFactory.hpp \ xercesc/util/regx/ParenToken.hpp \ xercesc/util/regx/ParserForXMLSchema.hpp \ xercesc/util/regx/RangeFactory.hpp \ xercesc/util/regx/RangeToken.hpp \ xercesc/util/regx/RangeTokenMap.hpp \ xercesc/util/regx/RegularExpression.hpp \ xercesc/util/regx/RegxDefs.hpp \ xercesc/util/regx/RegxParser.hpp \ xercesc/util/regx/RegxUtil.hpp \ xercesc/util/regx/StringToken.hpp \ xercesc/util/regx/Token.hpp \ xercesc/util/regx/TokenFactory.hpp \ xercesc/util/regx/TokenInc.hpp \ xercesc/util/regx/UniCharTable.hpp \ xercesc/util/regx/UnicodeRangeFactory.hpp \ xercesc/util/regx/UnionToken.hpp \ xercesc/util/regx/XMLRangeFactory.hpp \ xercesc/util/regx/XMLUniCharacter.hpp \ xercesc/util/RuntimeException.hpp \ xercesc/util/SchemaDateTimeException.hpp \ xercesc/util/SecurityManager.hpp \ xercesc/util/StringPool.hpp \ xercesc/util/SynchronizedStringPool.hpp \ xercesc/util/TranscodingException.hpp \ xercesc/util/TransENameMap.hpp \ xercesc/util/TransENameMap.c \ xercesc/util/TransService.hpp \ xercesc/util/UnexpectedEOFException.hpp \ xercesc/util/UnsupportedEncodingException.hpp \ xercesc/util/UTFDataFormatException.hpp \ xercesc/util/ValueArrayOf.hpp \ xercesc/util/ValueArrayOf.c \ xercesc/util/ValueHashTableOf.hpp \ xercesc/util/ValueHashTableOf.c \ xercesc/util/ValueStackOf.hpp \ xercesc/util/ValueStackOf.c \ xercesc/util/ValueVectorOf.hpp \ xercesc/util/ValueVectorOf.c \ xercesc/util/XercesDefs.hpp \ xercesc/util/XercesVersion.hpp \ xercesc/util/XMemory.hpp \ xercesc/util/XML256TableTranscoder.hpp \ xercesc/util/XML88591Transcoder.hpp \ xercesc/util/XMLAbstractDoubleFloat.hpp \ xercesc/util/XMLASCIITranscoder.hpp \ xercesc/util/XMLBigDecimal.hpp \ xercesc/util/XMLBigInteger.hpp \ xercesc/util/XMLChar.hpp \ xercesc/util/XMLChTranscoder.hpp \ xercesc/util/XMLDateTime.hpp \ xercesc/util/XMLDOMMsg.hpp \ xercesc/util/XMLDouble.hpp \ xercesc/util/XMLEBCDICTranscoder.hpp \ xercesc/util/XMLEntityResolver.hpp \ xercesc/util/XMLEnumerator.hpp \ xercesc/util/XMLException.hpp \ xercesc/util/XMLExceptMsgs.hpp \ xercesc/util/XMLFileMgr.hpp \ xercesc/util/XMLFloat.hpp \ xercesc/util/XMLIBM1047Transcoder.hpp \ xercesc/util/XMLIBM1140Transcoder.hpp \ xercesc/util/XMLInitializer.hpp \ xercesc/util/XMLInteger.hpp \ xercesc/util/XMLMutexMgr.hpp \ xercesc/util/XMLMsgLoader.hpp \ xercesc/util/XMLNetAccessor.hpp \ xercesc/util/XMLNumber.hpp \ xercesc/util/XMLResourceIdentifier.hpp \ xercesc/util/XMLString.hpp \ xercesc/util/XMLStringTokenizer.hpp \ xercesc/util/XMLUCS4Transcoder.hpp \ xercesc/util/XMLUni.hpp \ xercesc/util/XMLUniDefs.hpp \ xercesc/util/XMLUri.hpp \ xercesc/util/XMLURL.hpp \ xercesc/util/XMLUTF16Transcoder.hpp \ xercesc/util/XMLUTF8Transcoder.hpp \ xercesc/util/XMLWin1252Transcoder.hpp util_sources = \ xercesc/util/Base64.cpp \ xercesc/util/BinFileInputStream.cpp \ xercesc/util/BinInputStream.cpp \ xercesc/util/BinMemInputStream.cpp \ xercesc/util/BitSet.cpp \ xercesc/util/DefaultPanicHandler.cpp \ xercesc/util/EncodingValidator.cpp \ xercesc/util/HeaderDummy.cpp \ xercesc/util/HexBin.cpp \ xercesc/util/KVStringPair.cpp \ xercesc/util/Mutexes.cpp \ xercesc/util/PanicHandler.cpp \ xercesc/util/PlatformUtils.cpp \ xercesc/util/PSVIUni.cpp \ xercesc/util/QName.cpp \ xercesc/util/regx/ASCIIRangeFactory.cpp \ xercesc/util/regx/BlockRangeFactory.cpp \ xercesc/util/regx/BMPattern.cpp \ xercesc/util/regx/CharToken.cpp \ xercesc/util/regx/ClosureToken.cpp \ xercesc/util/regx/ConcatToken.cpp \ xercesc/util/regx/Match.cpp \ xercesc/util/regx/Op.cpp \ xercesc/util/regx/OpFactory.cpp \ xercesc/util/regx/ParenToken.cpp \ xercesc/util/regx/ParserForXMLSchema.cpp \ xercesc/util/regx/RangeFactory.cpp \ xercesc/util/regx/RangeToken.cpp \ xercesc/util/regx/RangeTokenMap.cpp \ xercesc/util/regx/RegularExpression.cpp \ xercesc/util/regx/RegxParser.cpp \ xercesc/util/regx/RegxUtil.cpp \ xercesc/util/regx/StringToken.cpp \ xercesc/util/regx/Token.cpp \ xercesc/util/regx/TokenFactory.cpp \ xercesc/util/regx/UnicodeRangeFactory.cpp \ xercesc/util/regx/UnionToken.cpp \ xercesc/util/regx/XMLRangeFactory.cpp \ xercesc/util/regx/XMLUniCharacter.cpp \ xercesc/util/StringPool.cpp \ xercesc/util/SynchronizedStringPool.cpp \ xercesc/util/TransService.cpp \ xercesc/util/XMemory.cpp \ xercesc/util/XML256TableTranscoder.cpp \ xercesc/util/XML88591Transcoder.cpp \ xercesc/util/XMLAbstractDoubleFloat.cpp \ xercesc/util/XMLASCIITranscoder.cpp \ xercesc/util/XMLBigDecimal.cpp \ xercesc/util/XMLBigInteger.cpp \ xercesc/util/XMLChar.cpp \ xercesc/util/XMLChTranscoder.cpp \ xercesc/util/XMLDateTime.cpp \ xercesc/util/XMLDouble.cpp \ xercesc/util/XMLEBCDICTranscoder.cpp \ xercesc/util/XMLException.cpp \ xercesc/util/XMLFloat.cpp \ xercesc/util/XMLIBM1047Transcoder.cpp \ xercesc/util/XMLIBM1140Transcoder.cpp \ xercesc/util/XMLInitializer.cpp \ xercesc/util/XMLMsgLoader.cpp \ xercesc/util/XMLNumber.cpp \ xercesc/util/XMLString.cpp \ xercesc/util/XMLStringTokenizer.cpp \ xercesc/util/XMLUCS4Transcoder.cpp \ xercesc/util/XMLUni.cpp \ xercesc/util/XMLUri.cpp \ xercesc/util/XMLURL.cpp \ xercesc/util/XMLUTF16Transcoder.cpp \ xercesc/util/XMLUTF8Transcoder.cpp \ xercesc/util/XMLWin1252Transcoder.cpp validators_headers = \ xercesc/validators/common/AllContentModel.hpp \ xercesc/validators/common/CMAny.hpp \ xercesc/validators/common/CMBinaryOp.hpp \ xercesc/validators/common/CMLeaf.hpp \ xercesc/validators/common/CMRepeatingLeaf.hpp \ xercesc/validators/common/CMNode.hpp \ xercesc/validators/common/CMStateSet.hpp \ xercesc/validators/common/CMUnaryOp.hpp \ xercesc/validators/common/ContentLeafNameTypeVector.hpp \ xercesc/validators/common/ContentSpecNode.hpp \ xercesc/validators/common/DFAContentModel.hpp \ xercesc/validators/common/Grammar.hpp \ xercesc/validators/common/GrammarResolver.hpp \ xercesc/validators/common/MixedContentModel.hpp \ xercesc/validators/common/SimpleContentModel.hpp \ xercesc/validators/datatype/AbstractNumericFacetValidator.hpp \ xercesc/validators/datatype/AbstractNumericValidator.hpp \ xercesc/validators/datatype/AbstractStringValidator.hpp \ xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.hpp \ xercesc/validators/datatype/AnyURIDatatypeValidator.hpp \ xercesc/validators/datatype/Base64BinaryDatatypeValidator.hpp \ xercesc/validators/datatype/BooleanDatatypeValidator.hpp \ xercesc/validators/datatype/DatatypeValidator.hpp \ xercesc/validators/datatype/DatatypeValidatorFactory.hpp \ xercesc/validators/datatype/DateDatatypeValidator.hpp \ xercesc/validators/datatype/DateTimeDatatypeValidator.hpp \ xercesc/validators/datatype/DateTimeValidator.hpp \ xercesc/validators/datatype/DayDatatypeValidator.hpp \ xercesc/validators/datatype/DecimalDatatypeValidator.hpp \ xercesc/validators/datatype/DoubleDatatypeValidator.hpp \ xercesc/validators/datatype/DurationDatatypeValidator.hpp \ xercesc/validators/datatype/ENTITYDatatypeValidator.hpp \ xercesc/validators/datatype/FloatDatatypeValidator.hpp \ xercesc/validators/datatype/HexBinaryDatatypeValidator.hpp \ xercesc/validators/datatype/IDDatatypeValidator.hpp \ xercesc/validators/datatype/IDREFDatatypeValidator.hpp \ xercesc/validators/datatype/InvalidDatatypeFacetException.hpp \ xercesc/validators/datatype/InvalidDatatypeValueException.hpp \ xercesc/validators/datatype/ListDatatypeValidator.hpp \ xercesc/validators/datatype/MonthDatatypeValidator.hpp \ xercesc/validators/datatype/MonthDayDatatypeValidator.hpp \ xercesc/validators/datatype/NameDatatypeValidator.hpp \ xercesc/validators/datatype/NCNameDatatypeValidator.hpp \ xercesc/validators/datatype/NOTATIONDatatypeValidator.hpp \ xercesc/validators/datatype/QNameDatatypeValidator.hpp \ xercesc/validators/datatype/StringDatatypeValidator.hpp \ xercesc/validators/datatype/TimeDatatypeValidator.hpp \ xercesc/validators/datatype/UnionDatatypeValidator.hpp \ xercesc/validators/datatype/XMLCanRepGroup.hpp \ xercesc/validators/datatype/YearDatatypeValidator.hpp \ xercesc/validators/datatype/YearMonthDatatypeValidator.hpp \ xercesc/validators/DTD/DocTypeHandler.hpp \ xercesc/validators/DTD/DTDAttDef.hpp \ xercesc/validators/DTD/DTDAttDefList.hpp \ xercesc/validators/DTD/DTDElementDecl.hpp \ xercesc/validators/DTD/DTDEntityDecl.hpp \ xercesc/validators/DTD/DTDGrammar.hpp \ xercesc/validators/DTD/DTDScanner.hpp \ xercesc/validators/DTD/DTDValidator.hpp \ xercesc/validators/DTD/XMLDTDDescriptionImpl.hpp \ xercesc/validators/schema/ComplexTypeInfo.hpp \ xercesc/validators/schema/GeneralAttributeCheck.hpp \ xercesc/validators/schema/identity/FieldActivator.hpp \ xercesc/validators/schema/identity/FieldValueMap.hpp \ xercesc/validators/schema/identity/IC_Field.hpp \ xercesc/validators/schema/identity/IC_Key.hpp \ xercesc/validators/schema/identity/IC_KeyRef.hpp \ xercesc/validators/schema/identity/IC_Selector.hpp \ xercesc/validators/schema/identity/IC_Unique.hpp \ xercesc/validators/schema/identity/IdentityConstraint.hpp \ xercesc/validators/schema/identity/IdentityConstraintHandler.hpp \ xercesc/validators/schema/identity/ValueStore.hpp \ xercesc/validators/schema/identity/ValueStoreCache.hpp \ xercesc/validators/schema/identity/XercesXPath.hpp \ xercesc/validators/schema/identity/XPathException.hpp \ xercesc/validators/schema/identity/XPathMatcher.hpp \ xercesc/validators/schema/identity/XPathMatcherStack.hpp \ xercesc/validators/schema/identity/XPathSymbols.hpp \ xercesc/validators/schema/NamespaceScope.hpp \ xercesc/validators/schema/PSVIDefs.hpp \ xercesc/validators/schema/SchemaAttDef.hpp \ xercesc/validators/schema/SchemaAttDefList.hpp \ xercesc/validators/schema/SchemaElementDecl.hpp \ xercesc/validators/schema/SchemaGrammar.hpp \ xercesc/validators/schema/SchemaInfo.hpp \ xercesc/validators/schema/SchemaSymbols.hpp \ xercesc/validators/schema/SchemaValidator.hpp \ xercesc/validators/schema/SubstitutionGroupComparator.hpp \ xercesc/validators/schema/TraverseSchema.hpp \ xercesc/validators/schema/XercesAttGroupInfo.hpp \ xercesc/validators/schema/XercesElementWildcard.hpp \ xercesc/validators/schema/XercesGroupInfo.hpp \ xercesc/validators/schema/XMLSchemaDescriptionImpl.hpp \ xercesc/validators/schema/XSDDOMParser.hpp \ xercesc/validators/schema/XSDErrorReporter.hpp \ xercesc/validators/schema/XSDLocator.hpp \ xercesc/validators/schema/XUtil.hpp validators_sources = \ xercesc/validators/common/AllContentModel.cpp \ xercesc/validators/common/CMAny.cpp \ xercesc/validators/common/CMBinaryOp.cpp \ xercesc/validators/common/CMUnaryOp.cpp \ xercesc/validators/common/ContentLeafNameTypeVector.cpp \ xercesc/validators/common/ContentSpecNode.cpp \ xercesc/validators/common/DFAContentModel.cpp \ xercesc/validators/common/Grammar.cpp \ xercesc/validators/common/GrammarResolver.cpp \ xercesc/validators/common/MixedContentModel.cpp \ xercesc/validators/common/SimpleContentModel.cpp \ xercesc/validators/datatype/AbstractNumericFacetValidator.cpp \ xercesc/validators/datatype/AbstractNumericValidator.cpp \ xercesc/validators/datatype/AbstractStringValidator.cpp \ xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.cpp \ xercesc/validators/datatype/AnyURIDatatypeValidator.cpp \ xercesc/validators/datatype/Base64BinaryDatatypeValidator.cpp \ xercesc/validators/datatype/BooleanDatatypeValidator.cpp \ xercesc/validators/datatype/DatatypeValidator.cpp \ xercesc/validators/datatype/DatatypeValidatorFactory.cpp \ xercesc/validators/datatype/DateDatatypeValidator.cpp \ xercesc/validators/datatype/DateTimeDatatypeValidator.cpp \ xercesc/validators/datatype/DateTimeValidator.cpp \ xercesc/validators/datatype/DayDatatypeValidator.cpp \ xercesc/validators/datatype/DecimalDatatypeValidator.cpp \ xercesc/validators/datatype/DoubleDatatypeValidator.cpp \ xercesc/validators/datatype/DurationDatatypeValidator.cpp \ xercesc/validators/datatype/ENTITYDatatypeValidator.cpp \ xercesc/validators/datatype/FloatDatatypeValidator.cpp \ xercesc/validators/datatype/HexBinaryDatatypeValidator.cpp \ xercesc/validators/datatype/IDDatatypeValidator.cpp \ xercesc/validators/datatype/IDREFDatatypeValidator.cpp \ xercesc/validators/datatype/ListDatatypeValidator.cpp \ xercesc/validators/datatype/MonthDatatypeValidator.cpp \ xercesc/validators/datatype/MonthDayDatatypeValidator.cpp \ xercesc/validators/datatype/NameDatatypeValidator.cpp \ xercesc/validators/datatype/NCNameDatatypeValidator.cpp \ xercesc/validators/datatype/NOTATIONDatatypeValidator.cpp \ xercesc/validators/datatype/QNameDatatypeValidator.cpp \ xercesc/validators/datatype/StringDatatypeValidator.cpp \ xercesc/validators/datatype/TimeDatatypeValidator.cpp \ xercesc/validators/datatype/UnionDatatypeValidator.cpp \ xercesc/validators/datatype/XMLCanRepGroup.cpp \ xercesc/validators/datatype/YearDatatypeValidator.cpp \ xercesc/validators/datatype/YearMonthDatatypeValidator.cpp \ xercesc/validators/DTD/DTDAttDef.cpp \ xercesc/validators/DTD/DTDAttDefList.cpp \ xercesc/validators/DTD/DTDElementDecl.cpp \ xercesc/validators/DTD/DTDEntityDecl.cpp \ xercesc/validators/DTD/DTDGrammar.cpp \ xercesc/validators/DTD/DTDScanner.cpp \ xercesc/validators/DTD/DTDValidator.cpp \ xercesc/validators/DTD/XMLDTDDescriptionImpl.cpp \ xercesc/validators/schema/ComplexTypeInfo.cpp \ xercesc/validators/schema/GeneralAttributeCheck.cpp \ xercesc/validators/schema/identity/FieldActivator.cpp \ xercesc/validators/schema/identity/FieldValueMap.cpp \ xercesc/validators/schema/identity/IC_Field.cpp \ xercesc/validators/schema/identity/IC_Key.cpp \ xercesc/validators/schema/identity/IC_KeyRef.cpp \ xercesc/validators/schema/identity/IC_Selector.cpp \ xercesc/validators/schema/identity/IC_Unique.cpp \ xercesc/validators/schema/identity/IdentityConstraint.cpp \ xercesc/validators/schema/identity/IdentityConstraintHandler.cpp \ xercesc/validators/schema/identity/ValueStore.cpp \ xercesc/validators/schema/identity/ValueStoreCache.cpp \ xercesc/validators/schema/identity/XercesXPath.cpp \ xercesc/validators/schema/identity/XPathMatcher.cpp \ xercesc/validators/schema/identity/XPathMatcherStack.cpp \ xercesc/validators/schema/identity/XPathSymbols.cpp \ xercesc/validators/schema/NamespaceScope.cpp \ xercesc/validators/schema/SchemaAttDef.cpp \ xercesc/validators/schema/SchemaAttDefList.cpp \ xercesc/validators/schema/SchemaElementDecl.cpp \ xercesc/validators/schema/SchemaGrammar.cpp \ xercesc/validators/schema/SchemaInfo.cpp \ xercesc/validators/schema/SchemaSymbols.cpp \ xercesc/validators/schema/SchemaValidator.cpp \ xercesc/validators/schema/SubstitutionGroupComparator.cpp \ xercesc/validators/schema/TraverseSchema.cpp \ xercesc/validators/schema/XercesAttGroupInfo.cpp \ xercesc/validators/schema/XercesElementWildcard.cpp \ xercesc/validators/schema/XercesGroupInfo.cpp \ xercesc/validators/schema/XMLSchemaDescriptionImpl.cpp \ xercesc/validators/schema/XSDDOMParser.cpp \ xercesc/validators/schema/XSDErrorReporter.cpp \ xercesc/validators/schema/XSDLocator.cpp \ xercesc/validators/schema/XUtil.cpp xinclude_headers = \ xercesc/xinclude/XIncludeDOMDocumentProcessor.hpp \ xercesc/xinclude/XIncludeLocation.hpp \ xercesc/xinclude/XIncludeUtils.hpp xinclude_sources = \ xercesc/xinclude/XIncludeDOMDocumentProcessor.cpp \ xercesc/xinclude/XIncludeLocation.cpp \ xercesc/xinclude/XIncludeUtils.cpp icu_headers = \ xercesc/util/Transcoders/ICU/ICUTransService.hpp icu_sources = \ xercesc/util/Transcoders/ICU/ICUTransService.cpp gnuiconv_headers = \ xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.hpp gnuiconv_sources = \ xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.cpp iconv_headers = \ xercesc/util/Transcoders/Iconv/IconvTransService.hpp iconv_sources = \ xercesc/util/Transcoders/Iconv/IconvTransService.cpp macosunicodeconverter_headers = \ xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.hpp macosunicodeconverter_sources = \ xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.cpp wintrans_headers = \ xercesc/util/Transcoders/Win32/Win32TransService.hpp wintrans_sources = \ xercesc/util/Transcoders/Win32/Win32TransService.cpp curl_headers = \ xercesc/util/NetAccessors/Curl/CurlNetAccessor.hpp \ xercesc/util/NetAccessors/Curl/CurlURLInputStream.hpp curl_sources = \ xercesc/util/NetAccessors/Curl/CurlNetAccessor.cpp \ xercesc/util/NetAccessors/Curl/CurlURLInputStream.cpp sockets_headers = \ xercesc/util/NetAccessors/Socket/SocketNetAccessor.hpp \ xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.hpp \ xercesc/util/NetAccessors/BinHTTPInputStreamCommon.hpp sockets_sources = \ xercesc/util/NetAccessors/Socket/SocketNetAccessor.cpp \ xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.cpp \ xercesc/util/NetAccessors/BinHTTPInputStreamCommon.cpp cfurl_headers = \ xercesc/util/NetAccessors/MacOSURLAccessCF/MacOSURLAccessCF.hpp \ xercesc/util/NetAccessors/MacOSURLAccessCF/URLAccessCFBinInputStream.hpp cfurl_sources = \ xercesc/util/NetAccessors/MacOSURLAccessCF/MacOSURLAccessCF.cpp \ xercesc/util/NetAccessors/MacOSURLAccessCF/URLAccessCFBinInputStream.cpp winsock_headers = \ xercesc/util/NetAccessors/WinSock/WinSockNetAccessor.hpp \ xercesc/util/NetAccessors/WinSock/BinHTTPURLInputStream.hpp \ xercesc/util/NetAccessors/BinHTTPInputStreamCommon.hpp winsock_sources = \ xercesc/util/NetAccessors/WinSock/WinSockNetAccessor.cpp \ xercesc/util/NetAccessors/WinSock/BinHTTPURLInputStream.cpp \ xercesc/util/NetAccessors/BinHTTPInputStreamCommon.cpp msginmemory_headers = \ xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.hpp \ xercesc/util/MsgLoaders/InMemory/XercesMessages_en_US.hpp msginmemory_sources = \ xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.cpp msgicu_headers = \ xercesc/util/MsgLoaders/ICU/ICUMsgLoader.hpp msgicu_sources = \ xercesc/util/MsgLoaders/ICU/ICUMsgLoader.cpp msgicu_nodist_sources = \ xercesc_messages.c \ root_res.c msgiconv_headers = \ xercesc/util/MsgLoaders/MsgCatalog/MsgCatalogLoader.hpp \ xercesc/util/MsgLoaders/MsgCatalog/XMLMsgCat_Ids.hpp msgiconv_sources = \ xercesc/util/MsgLoaders/MsgCatalog/MsgCatalogLoader.cpp posixfmgr_headers = \ xercesc/util/FileManagers/PosixFileMgr.hpp posixfmgr_sources = \ xercesc/util/FileManagers/PosixFileMgr.cpp winfmgr_headers = \ xercesc/util/FileManagers/WindowsFileMgr.hpp winfmgr_sources = \ xercesc/util/FileManagers/WindowsFileMgr.cpp nothreadmmgr_headers = \ xercesc/util/MutexManagers/NoThreadMutexMgr.hpp nothreadmmgr_sources = \ xercesc/util/MutexManagers/NoThreadMutexMgr.cpp posixmmgr_headers = \ xercesc/util/MutexManagers/PosixMutexMgr.hpp posixmmgr_sources = \ xercesc/util/MutexManagers/PosixMutexMgr.cpp winmmgr_headers = \ xercesc/util/MutexManagers/WindowsMutexMgr.hpp winmmgr_sources = \ xercesc/util/MutexManagers/WindowsMutexMgr.cpp # Override generated rules to provide prettier make rules # # Warning: If Automake changes sufficiently, these rules may need to # be regenerated from the (new) default output of Automake # if XERCES_PRETTY_MAKE .c.lo: @am__fastdepCC_TRUE@ @depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`; \ @am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$$depbase.Tpo" -c -o $@ $<; \ @am__fastdepCC_TRUE@ then $(am__mv) "$$depbase.Tpo" "$$depbase.Plo"; else rm -f "$$depbase.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCXX_FALSE@ @source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< .cpp.lo: @am__fastdepCXX_TRUE@ @depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`; \ @am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$$depbase.Tpo" -c -o $@ $<; \ @am__fastdepCXX_TRUE@ then $(am__mv) "$$depbase.Tpo" "$$depbase.Plo"; else rm -f "$$depbase.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCXX_FALSE@ @source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< PRETTY_MAKE=${top_srcdir}/config/pretty-make PRETTY_COMPILE=${PRETTY_MAKE} Compiling endif COMPILE = ${PRETTY_COMPILE} \ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = ${PRETTY_COMPILE} \ $(LIBTOOL) --quiet --tag=CC --mode=compile \ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CXXCOMPILE = ${PRETTY_COMPILE} \ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = ${PRETTY_COMPILE} \ $(LIBTOOL) --quiet --tag=CXX --mode=compile \ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) xerces-c-3.1.1/src/Makefile.in0000644000175000017500000073663711363617723015136 0ustar borisboris# Makefile.in generated by automake 1.11 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 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@ # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # # $Id: Makefile.am 883272 2009-11-23 08:17:49Z borisk $ # VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@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@ # NetAccessors, conditionally built based on settings from configure # @XERCES_USE_NETACCESSOR_CURL_TRUE@am__append_1 = ${curl_sources} @XERCES_USE_NETACCESSOR_CURL_TRUE@am__append_2 = ${curl_headers} @XERCES_USE_NETACCESSOR_CURL_TRUE@am__append_3 = ${CURL_FLAGS} @XERCES_USE_NETACCESSOR_SOCKET_TRUE@am__append_4 = ${sockets_sources} @XERCES_USE_NETACCESSOR_SOCKET_TRUE@am__append_5 = ${sockets_headers} @XERCES_USE_NETACCESSOR_CFURL_TRUE@am__append_6 = ${cfurl_sources} @XERCES_USE_NETACCESSOR_CFURL_TRUE@am__append_7 = ${cfurl_headers} @XERCES_USE_NETACCESSOR_WINSOCK_TRUE@am__append_8 = ${winsock_sources} @XERCES_USE_NETACCESSOR_WINSOCK_TRUE@am__append_9 = ${winsock_headers} # Transcoders, conditionally built based on settings from configure # @XERCES_USE_TRANSCODER_ICU_TRUE@am__append_10 = ${icu_sources} @XERCES_USE_TRANSCODER_ICU_TRUE@am__append_11 = ${icu_headers} @XERCES_USE_TRANSCODER_ICU_TRUE@am__append_12 = ${ICU_FLAGS} @XERCES_USE_TRANSCODER_GNUICONV_TRUE@am__append_13 = ${gnuiconv_sources} @XERCES_USE_TRANSCODER_GNUICONV_TRUE@am__append_14 = ${gnuiconv_headers} @XERCES_USE_TRANSCODER_ICONV_TRUE@am__append_15 = ${iconv_sources} @XERCES_USE_TRANSCODER_ICONV_TRUE@am__append_16 = ${iconv_headers} @XERCES_USE_TRANSCODER_MACOSUNICODECONVERTER_TRUE@am__append_17 = ${macosunicodeconverter_sources} @XERCES_USE_TRANSCODER_MACOSUNICODECONVERTER_TRUE@am__append_18 = ${macosunicodeconverter_headers} @XERCES_USE_TRANSCODER_WINDOWS_TRUE@am__append_19 = ${wintrans_sources} @XERCES_USE_TRANSCODER_WINDOWS_TRUE@am__append_20 = ${wintrans_headers} # MsgLoaders, conditionally built based on settings from configure # @XERCES_USE_MSGLOADER_INMEMORY_TRUE@am__append_21 = ${msginmemory_sources} @XERCES_USE_MSGLOADER_INMEMORY_TRUE@am__append_22 = ${msginmemory_headers} @XERCES_USE_MSGLOADER_ICU_TRUE@am__append_23 = ${msgicu_sources} @XERCES_USE_MSGLOADER_ICU_TRUE@am__append_24 = ${msgicu_headers} @XERCES_USE_MSGLOADER_ICU_TRUE@am__append_25 = ${ICU_FLAGS} @XERCES_USE_MSGLOADER_ICU_TRUE@am__append_26 = xercesc/util/MsgLoaders/ICU/resources/res-file-list.txt \ @XERCES_USE_MSGLOADER_ICU_TRUE@xercesc/util/MsgLoaders/ICU/resources/root.txt @XERCES_USE_MSGLOADER_ICONV_TRUE@am__append_27 = ${msgiconv_sources} @XERCES_USE_MSGLOADER_ICONV_TRUE@am__append_28 = ${msgiconv_headers} @XERCES_USE_MSGLOADER_ICONV_TRUE@am__append_29 = xercesc/util/MsgLoaders/MsgCatalog # Mutex Managers, conditionally built based on settings from configure # @XERCES_USE_MUTEXMGR_NOTHREAD_TRUE@am__append_30 = ${nothreadmmgr_sources} @XERCES_USE_MUTEXMGR_NOTHREAD_TRUE@am__append_31 = ${nothreadmmgr_headers} @XERCES_USE_MUTEXMGR_POSIX_TRUE@am__append_32 = ${posixmmgr_sources} @XERCES_USE_MUTEXMGR_POSIX_TRUE@am__append_33 = ${posixmmgr_headers} @XERCES_USE_MUTEXMGR_WINDOWS_TRUE@am__append_34 = ${winmmgr_sources} @XERCES_USE_MUTEXMGR_WINDOWS_TRUE@am__append_35 = ${winmmgr_headers} # File Managers, conditionally built based on settings from configure # @XERCES_USE_FILEMGR_POSIX_TRUE@am__append_36 = ${posixfmgr_sources} @XERCES_USE_FILEMGR_POSIX_TRUE@am__append_37 = ${posixfmgr_headers} @XERCES_USE_FILEMGR_WINDOWS_TRUE@am__append_38 = ${winfmgr_sources} @XERCES_USE_FILEMGR_WINDOWS_TRUE@am__append_39 = ${winfmgr_headers} subdir = src DIST_COMMON = $(am__nobase_libxerces_c_la_HEADERS_DIST) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in stricmp.c \ strnicmp.c towlower.c towupper.c ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/acx_pthread.m4 \ $(top_srcdir)/m4/cxx_have_bool.m4 \ $(top_srcdir)/m4/cxx_have_lstring.m4 \ $(top_srcdir)/m4/cxx_have_namespaces.m4 \ $(top_srcdir)/m4/cxx_have_std_libs.m4 \ $(top_srcdir)/m4/cxx_have_std_namespace.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/xerces_curl_prefix.m4 \ $(top_srcdir)/m4/xerces_filemgr_selection.m4 \ $(top_srcdir)/m4/xerces_icu_prefix.m4 \ $(top_srcdir)/m4/xerces_int_types.m4 \ $(top_srcdir)/m4/xerces_link_darwin_framework.m4 \ $(top_srcdir)/m4/xerces_msgloader_selection.m4 \ $(top_srcdir)/m4/xerces_mutexmgr_selection.m4 \ $(top_srcdir)/m4/xerces_netaccessor_selection.m4 \ $(top_srcdir)/m4/xerces_no_threads.m4 \ $(top_srcdir)/m4/xerces_path_delimiters.m4 \ $(top_srcdir)/m4/xerces_pretty_make.m4 \ $(top_srcdir)/m4/xerces_transcoder_selection.m4 \ $(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 \ $(top_builddir)/src/xercesc/util/Xerces_autoconf_config.hpp CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_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 = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__installdirs = "$(DESTDIR)$(libdir)" \ "$(DESTDIR)$(libxerces_c_ladir)" \ "$(DESTDIR)$(autoconfheadersdir)" LTLIBRARIES = $(lib_LTLIBRARIES) libxerces_c_la_DEPENDENCIES = $(LTLIBOBJS) am__libxerces_c_la_SOURCES_DIST = xercesc/util/Base64.cpp \ xercesc/util/BinFileInputStream.cpp \ xercesc/util/BinInputStream.cpp \ xercesc/util/BinMemInputStream.cpp xercesc/util/BitSet.cpp \ xercesc/util/DefaultPanicHandler.cpp \ xercesc/util/EncodingValidator.cpp \ xercesc/util/HeaderDummy.cpp xercesc/util/HexBin.cpp \ xercesc/util/KVStringPair.cpp xercesc/util/Mutexes.cpp \ xercesc/util/PanicHandler.cpp xercesc/util/PlatformUtils.cpp \ xercesc/util/PSVIUni.cpp xercesc/util/QName.cpp \ xercesc/util/regx/ASCIIRangeFactory.cpp \ xercesc/util/regx/BlockRangeFactory.cpp \ xercesc/util/regx/BMPattern.cpp \ xercesc/util/regx/CharToken.cpp \ xercesc/util/regx/ClosureToken.cpp \ xercesc/util/regx/ConcatToken.cpp xercesc/util/regx/Match.cpp \ xercesc/util/regx/Op.cpp xercesc/util/regx/OpFactory.cpp \ xercesc/util/regx/ParenToken.cpp \ xercesc/util/regx/ParserForXMLSchema.cpp \ xercesc/util/regx/RangeFactory.cpp \ xercesc/util/regx/RangeToken.cpp \ xercesc/util/regx/RangeTokenMap.cpp \ xercesc/util/regx/RegularExpression.cpp \ xercesc/util/regx/RegxParser.cpp \ xercesc/util/regx/RegxUtil.cpp \ xercesc/util/regx/StringToken.cpp xercesc/util/regx/Token.cpp \ xercesc/util/regx/TokenFactory.cpp \ xercesc/util/regx/UnicodeRangeFactory.cpp \ xercesc/util/regx/UnionToken.cpp \ xercesc/util/regx/XMLRangeFactory.cpp \ xercesc/util/regx/XMLUniCharacter.cpp \ xercesc/util/StringPool.cpp \ xercesc/util/SynchronizedStringPool.cpp \ xercesc/util/TransService.cpp xercesc/util/XMemory.cpp \ xercesc/util/XML256TableTranscoder.cpp \ xercesc/util/XML88591Transcoder.cpp \ xercesc/util/XMLAbstractDoubleFloat.cpp \ xercesc/util/XMLASCIITranscoder.cpp \ xercesc/util/XMLBigDecimal.cpp xercesc/util/XMLBigInteger.cpp \ xercesc/util/XMLChar.cpp xercesc/util/XMLChTranscoder.cpp \ xercesc/util/XMLDateTime.cpp xercesc/util/XMLDouble.cpp \ xercesc/util/XMLEBCDICTranscoder.cpp \ xercesc/util/XMLException.cpp xercesc/util/XMLFloat.cpp \ xercesc/util/XMLIBM1047Transcoder.cpp \ xercesc/util/XMLIBM1140Transcoder.cpp \ xercesc/util/XMLInitializer.cpp xercesc/util/XMLMsgLoader.cpp \ xercesc/util/XMLNumber.cpp xercesc/util/XMLString.cpp \ xercesc/util/XMLStringTokenizer.cpp \ xercesc/util/XMLUCS4Transcoder.cpp xercesc/util/XMLUni.cpp \ xercesc/util/XMLUri.cpp xercesc/util/XMLURL.cpp \ xercesc/util/XMLUTF16Transcoder.cpp \ xercesc/util/XMLUTF8Transcoder.cpp \ xercesc/util/XMLWin1252Transcoder.cpp \ xercesc/dom/DOMException.cpp xercesc/dom/DOMLSException.cpp \ xercesc/dom/DOMRangeException.cpp \ xercesc/dom/DOMXPathException.cpp \ xercesc/dom/impl/DOMAttrImpl.cpp \ xercesc/dom/impl/DOMAttrMapImpl.cpp \ xercesc/dom/impl/DOMAttrNSImpl.cpp \ xercesc/dom/impl/DOMCDATASectionImpl.cpp \ xercesc/dom/impl/DOMCharacterDataImpl.cpp \ xercesc/dom/impl/DOMChildNode.cpp \ xercesc/dom/impl/DOMCommentImpl.cpp \ xercesc/dom/impl/DOMConfigurationImpl.cpp \ xercesc/dom/impl/DOMDeepNodeListImpl.cpp \ xercesc/dom/impl/DOMDocumentFragmentImpl.cpp \ xercesc/dom/impl/DOMDocumentImpl.cpp \ xercesc/dom/impl/DOMDocumentTypeImpl.cpp \ xercesc/dom/impl/DOMElementImpl.cpp \ xercesc/dom/impl/DOMElementNSImpl.cpp \ xercesc/dom/impl/DOMEntityImpl.cpp \ xercesc/dom/impl/DOMEntityReferenceImpl.cpp \ xercesc/dom/impl/DOMErrorImpl.cpp \ xercesc/dom/impl/DOMImplementationImpl.cpp \ xercesc/dom/impl/DOMImplementationListImpl.cpp \ xercesc/dom/impl/DOMImplementationRegistry.cpp \ xercesc/dom/impl/DOMLocatorImpl.cpp \ xercesc/dom/impl/DOMNamedNodeMapImpl.cpp \ xercesc/dom/impl/DOMNodeIDMap.cpp \ xercesc/dom/impl/DOMNodeImpl.cpp \ xercesc/dom/impl/DOMNodeIteratorImpl.cpp \ xercesc/dom/impl/DOMNodeListImpl.cpp \ xercesc/dom/impl/DOMNodeVector.cpp \ xercesc/dom/impl/DOMNormalizer.cpp \ xercesc/dom/impl/DOMNotationImpl.cpp \ xercesc/dom/impl/DOMParentNode.cpp \ xercesc/dom/impl/DOMProcessingInstructionImpl.cpp \ xercesc/dom/impl/DOMRangeImpl.cpp \ xercesc/dom/impl/DOMStringListImpl.cpp \ xercesc/dom/impl/DOMStringPool.cpp \ xercesc/dom/impl/DOMTextImpl.cpp \ xercesc/dom/impl/DOMTreeWalkerImpl.cpp \ xercesc/dom/impl/DOMTypeInfoImpl.cpp \ xercesc/dom/impl/DOMLSSerializerImpl.cpp \ xercesc/dom/impl/DOMLSInputImpl.cpp \ xercesc/dom/impl/DOMLSOutputImpl.cpp \ xercesc/dom/impl/DOMXPathExpressionImpl.cpp \ xercesc/dom/impl/DOMXPathNSResolverImpl.cpp \ xercesc/dom/impl/DOMXPathResultImpl.cpp \ xercesc/dom/impl/XSDElementNSImpl.cpp \ xercesc/framework/BinOutputStream.cpp \ xercesc/framework/LocalFileFormatTarget.cpp \ xercesc/framework/LocalFileInputSource.cpp \ xercesc/framework/MemBufFormatTarget.cpp \ xercesc/framework/MemBufInputSource.cpp \ xercesc/framework/psvi/PSVIAttribute.cpp \ xercesc/framework/psvi/PSVIAttributeList.cpp \ xercesc/framework/psvi/PSVIElement.cpp \ xercesc/framework/psvi/PSVIItem.cpp \ xercesc/framework/psvi/XSAnnotation.cpp \ xercesc/framework/psvi/XSAttributeDeclaration.cpp \ xercesc/framework/psvi/XSAttributeGroupDefinition.cpp \ xercesc/framework/psvi/XSAttributeUse.cpp \ xercesc/framework/psvi/XSComplexTypeDefinition.cpp \ xercesc/framework/psvi/XSElementDeclaration.cpp \ xercesc/framework/psvi/XSFacet.cpp \ xercesc/framework/psvi/XSIDCDefinition.cpp \ xercesc/framework/psvi/XSModel.cpp \ xercesc/framework/psvi/XSModelGroup.cpp \ xercesc/framework/psvi/XSModelGroupDefinition.cpp \ xercesc/framework/psvi/XSMultiValueFacet.cpp \ xercesc/framework/psvi/XSNamespaceItem.cpp \ xercesc/framework/psvi/XSNotationDeclaration.cpp \ xercesc/framework/psvi/XSObject.cpp \ xercesc/framework/psvi/XSParticle.cpp \ xercesc/framework/psvi/XSSimpleTypeDefinition.cpp \ xercesc/framework/psvi/XSTypeDefinition.cpp \ xercesc/framework/psvi/XSValue.cpp \ xercesc/framework/psvi/XSWildcard.cpp \ xercesc/framework/StdInInputSource.cpp \ xercesc/framework/StdOutFormatTarget.cpp \ xercesc/framework/URLInputSource.cpp \ xercesc/framework/Wrapper4DOMLSInput.cpp \ xercesc/framework/Wrapper4InputSource.cpp \ xercesc/framework/XMLAttDef.cpp \ xercesc/framework/XMLAttDefList.cpp \ xercesc/framework/XMLAttr.cpp xercesc/framework/XMLBuffer.cpp \ xercesc/framework/XMLBufferMgr.cpp \ xercesc/framework/XMLContentModel.cpp \ xercesc/framework/XMLDTDDescription.cpp \ xercesc/framework/XMLElementDecl.cpp \ xercesc/framework/XMLEntityDecl.cpp \ xercesc/framework/XMLFormatter.cpp \ xercesc/framework/XMLGrammarDescription.cpp \ xercesc/framework/XMLGrammarPoolImpl.cpp \ xercesc/framework/XMLNotationDecl.cpp \ xercesc/framework/XMLRecognizer.cpp \ xercesc/framework/XMLRefInfo.cpp \ xercesc/framework/XMLSchemaDescription.cpp \ xercesc/framework/XMLValidator.cpp \ xercesc/internal/BinFileOutputStream.cpp \ xercesc/internal/BinMemOutputStream.cpp \ xercesc/internal/DGXMLScanner.cpp \ xercesc/internal/ElemStack.cpp \ xercesc/internal/IGXMLScanner.cpp \ xercesc/internal/IGXMLScanner2.cpp \ xercesc/internal/MemoryManagerImpl.cpp \ xercesc/internal/ReaderMgr.cpp \ xercesc/internal/SGXMLScanner.cpp \ xercesc/internal/ValidationContextImpl.cpp \ xercesc/internal/VecAttributesImpl.cpp \ xercesc/internal/VecAttrListImpl.cpp \ xercesc/internal/WFXMLScanner.cpp \ xercesc/internal/XMLReader.cpp xercesc/internal/XMLScanner.cpp \ xercesc/internal/XMLScannerResolver.cpp \ xercesc/internal/XProtoType.cpp \ xercesc/internal/XSAXMLScanner.cpp \ xercesc/internal/XSerializeEngine.cpp \ xercesc/internal/XSObjectFactory.cpp \ xercesc/internal/XTemplateSerializer.cpp \ xercesc/parsers/AbstractDOMParser.cpp \ xercesc/parsers/DOMLSParserImpl.cpp \ xercesc/parsers/SAX2XMLFilterImpl.cpp \ xercesc/parsers/SAX2XMLReaderImpl.cpp \ xercesc/parsers/SAXParser.cpp \ xercesc/parsers/XercesDOMParser.cpp xercesc/sax/Dummy.cpp \ xercesc/sax/InputSource.cpp xercesc/sax/SAXException.cpp \ xercesc/sax/SAXParseException.cpp xercesc/sax2/sax2Dummy.cpp \ xercesc/validators/common/AllContentModel.cpp \ xercesc/validators/common/CMAny.cpp \ xercesc/validators/common/CMBinaryOp.cpp \ xercesc/validators/common/CMUnaryOp.cpp \ xercesc/validators/common/ContentLeafNameTypeVector.cpp \ xercesc/validators/common/ContentSpecNode.cpp \ xercesc/validators/common/DFAContentModel.cpp \ xercesc/validators/common/Grammar.cpp \ xercesc/validators/common/GrammarResolver.cpp \ xercesc/validators/common/MixedContentModel.cpp \ xercesc/validators/common/SimpleContentModel.cpp \ xercesc/validators/datatype/AbstractNumericFacetValidator.cpp \ xercesc/validators/datatype/AbstractNumericValidator.cpp \ xercesc/validators/datatype/AbstractStringValidator.cpp \ xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.cpp \ xercesc/validators/datatype/AnyURIDatatypeValidator.cpp \ xercesc/validators/datatype/Base64BinaryDatatypeValidator.cpp \ xercesc/validators/datatype/BooleanDatatypeValidator.cpp \ xercesc/validators/datatype/DatatypeValidator.cpp \ xercesc/validators/datatype/DatatypeValidatorFactory.cpp \ xercesc/validators/datatype/DateDatatypeValidator.cpp \ xercesc/validators/datatype/DateTimeDatatypeValidator.cpp \ xercesc/validators/datatype/DateTimeValidator.cpp \ xercesc/validators/datatype/DayDatatypeValidator.cpp \ xercesc/validators/datatype/DecimalDatatypeValidator.cpp \ xercesc/validators/datatype/DoubleDatatypeValidator.cpp \ xercesc/validators/datatype/DurationDatatypeValidator.cpp \ xercesc/validators/datatype/ENTITYDatatypeValidator.cpp \ xercesc/validators/datatype/FloatDatatypeValidator.cpp \ xercesc/validators/datatype/HexBinaryDatatypeValidator.cpp \ xercesc/validators/datatype/IDDatatypeValidator.cpp \ xercesc/validators/datatype/IDREFDatatypeValidator.cpp \ xercesc/validators/datatype/ListDatatypeValidator.cpp \ xercesc/validators/datatype/MonthDatatypeValidator.cpp \ xercesc/validators/datatype/MonthDayDatatypeValidator.cpp \ xercesc/validators/datatype/NameDatatypeValidator.cpp \ xercesc/validators/datatype/NCNameDatatypeValidator.cpp \ xercesc/validators/datatype/NOTATIONDatatypeValidator.cpp \ xercesc/validators/datatype/QNameDatatypeValidator.cpp \ xercesc/validators/datatype/StringDatatypeValidator.cpp \ xercesc/validators/datatype/TimeDatatypeValidator.cpp \ xercesc/validators/datatype/UnionDatatypeValidator.cpp \ xercesc/validators/datatype/XMLCanRepGroup.cpp \ xercesc/validators/datatype/YearDatatypeValidator.cpp \ xercesc/validators/datatype/YearMonthDatatypeValidator.cpp \ xercesc/validators/DTD/DTDAttDef.cpp \ xercesc/validators/DTD/DTDAttDefList.cpp \ xercesc/validators/DTD/DTDElementDecl.cpp \ xercesc/validators/DTD/DTDEntityDecl.cpp \ xercesc/validators/DTD/DTDGrammar.cpp \ xercesc/validators/DTD/DTDScanner.cpp \ xercesc/validators/DTD/DTDValidator.cpp \ xercesc/validators/DTD/XMLDTDDescriptionImpl.cpp \ xercesc/validators/schema/ComplexTypeInfo.cpp \ xercesc/validators/schema/GeneralAttributeCheck.cpp \ xercesc/validators/schema/identity/FieldActivator.cpp \ xercesc/validators/schema/identity/FieldValueMap.cpp \ xercesc/validators/schema/identity/IC_Field.cpp \ xercesc/validators/schema/identity/IC_Key.cpp \ xercesc/validators/schema/identity/IC_KeyRef.cpp \ xercesc/validators/schema/identity/IC_Selector.cpp \ xercesc/validators/schema/identity/IC_Unique.cpp \ xercesc/validators/schema/identity/IdentityConstraint.cpp \ xercesc/validators/schema/identity/IdentityConstraintHandler.cpp \ xercesc/validators/schema/identity/ValueStore.cpp \ xercesc/validators/schema/identity/ValueStoreCache.cpp \ xercesc/validators/schema/identity/XercesXPath.cpp \ xercesc/validators/schema/identity/XPathMatcher.cpp \ xercesc/validators/schema/identity/XPathMatcherStack.cpp \ xercesc/validators/schema/identity/XPathSymbols.cpp \ xercesc/validators/schema/NamespaceScope.cpp \ xercesc/validators/schema/SchemaAttDef.cpp \ xercesc/validators/schema/SchemaAttDefList.cpp \ xercesc/validators/schema/SchemaElementDecl.cpp \ xercesc/validators/schema/SchemaGrammar.cpp \ xercesc/validators/schema/SchemaInfo.cpp \ xercesc/validators/schema/SchemaSymbols.cpp \ xercesc/validators/schema/SchemaValidator.cpp \ xercesc/validators/schema/SubstitutionGroupComparator.cpp \ xercesc/validators/schema/TraverseSchema.cpp \ xercesc/validators/schema/XercesAttGroupInfo.cpp \ xercesc/validators/schema/XercesElementWildcard.cpp \ xercesc/validators/schema/XercesGroupInfo.cpp \ xercesc/validators/schema/XMLSchemaDescriptionImpl.cpp \ xercesc/validators/schema/XSDDOMParser.cpp \ xercesc/validators/schema/XSDErrorReporter.cpp \ xercesc/validators/schema/XSDLocator.cpp \ xercesc/validators/schema/XUtil.cpp \ xercesc/xinclude/XIncludeDOMDocumentProcessor.cpp \ xercesc/xinclude/XIncludeLocation.cpp \ xercesc/xinclude/XIncludeUtils.cpp \ xercesc/util/NetAccessors/Curl/CurlNetAccessor.cpp \ xercesc/util/NetAccessors/Curl/CurlURLInputStream.cpp \ xercesc/util/NetAccessors/Socket/SocketNetAccessor.cpp \ xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.cpp \ xercesc/util/NetAccessors/BinHTTPInputStreamCommon.cpp \ xercesc/util/NetAccessors/MacOSURLAccessCF/MacOSURLAccessCF.cpp \ xercesc/util/NetAccessors/MacOSURLAccessCF/URLAccessCFBinInputStream.cpp \ xercesc/util/NetAccessors/WinSock/WinSockNetAccessor.cpp \ xercesc/util/NetAccessors/WinSock/BinHTTPURLInputStream.cpp \ xercesc/util/Transcoders/ICU/ICUTransService.cpp \ xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.cpp \ xercesc/util/Transcoders/Iconv/IconvTransService.cpp \ xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.cpp \ xercesc/util/Transcoders/Win32/Win32TransService.cpp \ xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.cpp \ xercesc/util/MsgLoaders/ICU/ICUMsgLoader.cpp \ xercesc/util/MsgLoaders/MsgCatalog/MsgCatalogLoader.cpp \ xercesc/util/MutexManagers/NoThreadMutexMgr.cpp \ xercesc/util/MutexManagers/PosixMutexMgr.cpp \ xercesc/util/MutexManagers/WindowsMutexMgr.cpp \ xercesc/util/FileManagers/PosixFileMgr.cpp \ xercesc/util/FileManagers/WindowsFileMgr.cpp am__dirstamp = $(am__leading_dot)dirstamp am__objects_1 = xercesc/util/Base64.lo \ xercesc/util/BinFileInputStream.lo \ xercesc/util/BinInputStream.lo \ xercesc/util/BinMemInputStream.lo xercesc/util/BitSet.lo \ xercesc/util/DefaultPanicHandler.lo \ xercesc/util/EncodingValidator.lo xercesc/util/HeaderDummy.lo \ xercesc/util/HexBin.lo xercesc/util/KVStringPair.lo \ xercesc/util/Mutexes.lo xercesc/util/PanicHandler.lo \ xercesc/util/PlatformUtils.lo xercesc/util/PSVIUni.lo \ xercesc/util/QName.lo xercesc/util/regx/ASCIIRangeFactory.lo \ xercesc/util/regx/BlockRangeFactory.lo \ xercesc/util/regx/BMPattern.lo xercesc/util/regx/CharToken.lo \ xercesc/util/regx/ClosureToken.lo \ xercesc/util/regx/ConcatToken.lo xercesc/util/regx/Match.lo \ xercesc/util/regx/Op.lo xercesc/util/regx/OpFactory.lo \ xercesc/util/regx/ParenToken.lo \ xercesc/util/regx/ParserForXMLSchema.lo \ xercesc/util/regx/RangeFactory.lo \ xercesc/util/regx/RangeToken.lo \ xercesc/util/regx/RangeTokenMap.lo \ xercesc/util/regx/RegularExpression.lo \ xercesc/util/regx/RegxParser.lo xercesc/util/regx/RegxUtil.lo \ xercesc/util/regx/StringToken.lo xercesc/util/regx/Token.lo \ xercesc/util/regx/TokenFactory.lo \ xercesc/util/regx/UnicodeRangeFactory.lo \ xercesc/util/regx/UnionToken.lo \ xercesc/util/regx/XMLRangeFactory.lo \ xercesc/util/regx/XMLUniCharacter.lo \ xercesc/util/StringPool.lo \ xercesc/util/SynchronizedStringPool.lo \ xercesc/util/TransService.lo xercesc/util/XMemory.lo \ xercesc/util/XML256TableTranscoder.lo \ xercesc/util/XML88591Transcoder.lo \ xercesc/util/XMLAbstractDoubleFloat.lo \ xercesc/util/XMLASCIITranscoder.lo \ xercesc/util/XMLBigDecimal.lo xercesc/util/XMLBigInteger.lo \ xercesc/util/XMLChar.lo xercesc/util/XMLChTranscoder.lo \ xercesc/util/XMLDateTime.lo xercesc/util/XMLDouble.lo \ xercesc/util/XMLEBCDICTranscoder.lo \ xercesc/util/XMLException.lo xercesc/util/XMLFloat.lo \ xercesc/util/XMLIBM1047Transcoder.lo \ xercesc/util/XMLIBM1140Transcoder.lo \ xercesc/util/XMLInitializer.lo xercesc/util/XMLMsgLoader.lo \ xercesc/util/XMLNumber.lo xercesc/util/XMLString.lo \ xercesc/util/XMLStringTokenizer.lo \ xercesc/util/XMLUCS4Transcoder.lo xercesc/util/XMLUni.lo \ xercesc/util/XMLUri.lo xercesc/util/XMLURL.lo \ xercesc/util/XMLUTF16Transcoder.lo \ xercesc/util/XMLUTF8Transcoder.lo \ xercesc/util/XMLWin1252Transcoder.lo am__objects_2 = xercesc/dom/DOMException.lo \ xercesc/dom/DOMLSException.lo xercesc/dom/DOMRangeException.lo \ xercesc/dom/DOMXPathException.lo am__objects_3 = xercesc/dom/impl/DOMAttrImpl.lo \ xercesc/dom/impl/DOMAttrMapImpl.lo \ xercesc/dom/impl/DOMAttrNSImpl.lo \ xercesc/dom/impl/DOMCDATASectionImpl.lo \ xercesc/dom/impl/DOMCharacterDataImpl.lo \ xercesc/dom/impl/DOMChildNode.lo \ xercesc/dom/impl/DOMCommentImpl.lo \ xercesc/dom/impl/DOMConfigurationImpl.lo \ xercesc/dom/impl/DOMDeepNodeListImpl.lo \ xercesc/dom/impl/DOMDocumentFragmentImpl.lo \ xercesc/dom/impl/DOMDocumentImpl.lo \ xercesc/dom/impl/DOMDocumentTypeImpl.lo \ xercesc/dom/impl/DOMElementImpl.lo \ xercesc/dom/impl/DOMElementNSImpl.lo \ xercesc/dom/impl/DOMEntityImpl.lo \ xercesc/dom/impl/DOMEntityReferenceImpl.lo \ xercesc/dom/impl/DOMErrorImpl.lo \ xercesc/dom/impl/DOMImplementationImpl.lo \ xercesc/dom/impl/DOMImplementationListImpl.lo \ xercesc/dom/impl/DOMImplementationRegistry.lo \ xercesc/dom/impl/DOMLocatorImpl.lo \ xercesc/dom/impl/DOMNamedNodeMapImpl.lo \ xercesc/dom/impl/DOMNodeIDMap.lo \ xercesc/dom/impl/DOMNodeImpl.lo \ xercesc/dom/impl/DOMNodeIteratorImpl.lo \ xercesc/dom/impl/DOMNodeListImpl.lo \ xercesc/dom/impl/DOMNodeVector.lo \ xercesc/dom/impl/DOMNormalizer.lo \ xercesc/dom/impl/DOMNotationImpl.lo \ xercesc/dom/impl/DOMParentNode.lo \ xercesc/dom/impl/DOMProcessingInstructionImpl.lo \ xercesc/dom/impl/DOMRangeImpl.lo \ xercesc/dom/impl/DOMStringListImpl.lo \ xercesc/dom/impl/DOMStringPool.lo \ xercesc/dom/impl/DOMTextImpl.lo \ xercesc/dom/impl/DOMTreeWalkerImpl.lo \ xercesc/dom/impl/DOMTypeInfoImpl.lo \ xercesc/dom/impl/DOMLSSerializerImpl.lo \ xercesc/dom/impl/DOMLSInputImpl.lo \ xercesc/dom/impl/DOMLSOutputImpl.lo \ xercesc/dom/impl/DOMXPathExpressionImpl.lo \ xercesc/dom/impl/DOMXPathNSResolverImpl.lo \ xercesc/dom/impl/DOMXPathResultImpl.lo \ xercesc/dom/impl/XSDElementNSImpl.lo am__objects_4 = xercesc/framework/BinOutputStream.lo \ xercesc/framework/LocalFileFormatTarget.lo \ xercesc/framework/LocalFileInputSource.lo \ xercesc/framework/MemBufFormatTarget.lo \ xercesc/framework/MemBufInputSource.lo \ xercesc/framework/psvi/PSVIAttribute.lo \ xercesc/framework/psvi/PSVIAttributeList.lo \ xercesc/framework/psvi/PSVIElement.lo \ xercesc/framework/psvi/PSVIItem.lo \ xercesc/framework/psvi/XSAnnotation.lo \ xercesc/framework/psvi/XSAttributeDeclaration.lo \ xercesc/framework/psvi/XSAttributeGroupDefinition.lo \ xercesc/framework/psvi/XSAttributeUse.lo \ xercesc/framework/psvi/XSComplexTypeDefinition.lo \ xercesc/framework/psvi/XSElementDeclaration.lo \ xercesc/framework/psvi/XSFacet.lo \ xercesc/framework/psvi/XSIDCDefinition.lo \ xercesc/framework/psvi/XSModel.lo \ xercesc/framework/psvi/XSModelGroup.lo \ xercesc/framework/psvi/XSModelGroupDefinition.lo \ xercesc/framework/psvi/XSMultiValueFacet.lo \ xercesc/framework/psvi/XSNamespaceItem.lo \ xercesc/framework/psvi/XSNotationDeclaration.lo \ xercesc/framework/psvi/XSObject.lo \ xercesc/framework/psvi/XSParticle.lo \ xercesc/framework/psvi/XSSimpleTypeDefinition.lo \ xercesc/framework/psvi/XSTypeDefinition.lo \ xercesc/framework/psvi/XSValue.lo \ xercesc/framework/psvi/XSWildcard.lo \ xercesc/framework/StdInInputSource.lo \ xercesc/framework/StdOutFormatTarget.lo \ xercesc/framework/URLInputSource.lo \ xercesc/framework/Wrapper4DOMLSInput.lo \ xercesc/framework/Wrapper4InputSource.lo \ xercesc/framework/XMLAttDef.lo \ xercesc/framework/XMLAttDefList.lo \ xercesc/framework/XMLAttr.lo xercesc/framework/XMLBuffer.lo \ xercesc/framework/XMLBufferMgr.lo \ xercesc/framework/XMLContentModel.lo \ xercesc/framework/XMLDTDDescription.lo \ xercesc/framework/XMLElementDecl.lo \ xercesc/framework/XMLEntityDecl.lo \ xercesc/framework/XMLFormatter.lo \ xercesc/framework/XMLGrammarDescription.lo \ xercesc/framework/XMLGrammarPoolImpl.lo \ xercesc/framework/XMLNotationDecl.lo \ xercesc/framework/XMLRecognizer.lo \ xercesc/framework/XMLRefInfo.lo \ xercesc/framework/XMLSchemaDescription.lo \ xercesc/framework/XMLValidator.lo am__objects_5 = xercesc/internal/BinFileOutputStream.lo \ xercesc/internal/BinMemOutputStream.lo \ xercesc/internal/DGXMLScanner.lo xercesc/internal/ElemStack.lo \ xercesc/internal/IGXMLScanner.lo \ xercesc/internal/IGXMLScanner2.lo \ xercesc/internal/MemoryManagerImpl.lo \ xercesc/internal/ReaderMgr.lo xercesc/internal/SGXMLScanner.lo \ xercesc/internal/ValidationContextImpl.lo \ xercesc/internal/VecAttributesImpl.lo \ xercesc/internal/VecAttrListImpl.lo \ xercesc/internal/WFXMLScanner.lo xercesc/internal/XMLReader.lo \ xercesc/internal/XMLScanner.lo \ xercesc/internal/XMLScannerResolver.lo \ xercesc/internal/XProtoType.lo \ xercesc/internal/XSAXMLScanner.lo \ xercesc/internal/XSerializeEngine.lo \ xercesc/internal/XSObjectFactory.lo \ xercesc/internal/XTemplateSerializer.lo am__objects_6 = xercesc/parsers/AbstractDOMParser.lo \ xercesc/parsers/DOMLSParserImpl.lo \ xercesc/parsers/SAX2XMLFilterImpl.lo \ xercesc/parsers/SAX2XMLReaderImpl.lo \ xercesc/parsers/SAXParser.lo \ xercesc/parsers/XercesDOMParser.lo am__objects_7 = xercesc/sax/Dummy.lo xercesc/sax/InputSource.lo \ xercesc/sax/SAXException.lo xercesc/sax/SAXParseException.lo am__objects_8 = xercesc/sax2/sax2Dummy.lo am__objects_9 = xercesc/validators/common/AllContentModel.lo \ xercesc/validators/common/CMAny.lo \ xercesc/validators/common/CMBinaryOp.lo \ xercesc/validators/common/CMUnaryOp.lo \ xercesc/validators/common/ContentLeafNameTypeVector.lo \ xercesc/validators/common/ContentSpecNode.lo \ xercesc/validators/common/DFAContentModel.lo \ xercesc/validators/common/Grammar.lo \ xercesc/validators/common/GrammarResolver.lo \ xercesc/validators/common/MixedContentModel.lo \ xercesc/validators/common/SimpleContentModel.lo \ xercesc/validators/datatype/AbstractNumericFacetValidator.lo \ xercesc/validators/datatype/AbstractNumericValidator.lo \ xercesc/validators/datatype/AbstractStringValidator.lo \ xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.lo \ xercesc/validators/datatype/AnyURIDatatypeValidator.lo \ xercesc/validators/datatype/Base64BinaryDatatypeValidator.lo \ xercesc/validators/datatype/BooleanDatatypeValidator.lo \ xercesc/validators/datatype/DatatypeValidator.lo \ xercesc/validators/datatype/DatatypeValidatorFactory.lo \ xercesc/validators/datatype/DateDatatypeValidator.lo \ xercesc/validators/datatype/DateTimeDatatypeValidator.lo \ xercesc/validators/datatype/DateTimeValidator.lo \ xercesc/validators/datatype/DayDatatypeValidator.lo \ xercesc/validators/datatype/DecimalDatatypeValidator.lo \ xercesc/validators/datatype/DoubleDatatypeValidator.lo \ xercesc/validators/datatype/DurationDatatypeValidator.lo \ xercesc/validators/datatype/ENTITYDatatypeValidator.lo \ xercesc/validators/datatype/FloatDatatypeValidator.lo \ xercesc/validators/datatype/HexBinaryDatatypeValidator.lo \ xercesc/validators/datatype/IDDatatypeValidator.lo \ xercesc/validators/datatype/IDREFDatatypeValidator.lo \ xercesc/validators/datatype/ListDatatypeValidator.lo \ xercesc/validators/datatype/MonthDatatypeValidator.lo \ xercesc/validators/datatype/MonthDayDatatypeValidator.lo \ xercesc/validators/datatype/NameDatatypeValidator.lo \ xercesc/validators/datatype/NCNameDatatypeValidator.lo \ xercesc/validators/datatype/NOTATIONDatatypeValidator.lo \ xercesc/validators/datatype/QNameDatatypeValidator.lo \ xercesc/validators/datatype/StringDatatypeValidator.lo \ xercesc/validators/datatype/TimeDatatypeValidator.lo \ xercesc/validators/datatype/UnionDatatypeValidator.lo \ xercesc/validators/datatype/XMLCanRepGroup.lo \ xercesc/validators/datatype/YearDatatypeValidator.lo \ xercesc/validators/datatype/YearMonthDatatypeValidator.lo \ xercesc/validators/DTD/DTDAttDef.lo \ xercesc/validators/DTD/DTDAttDefList.lo \ xercesc/validators/DTD/DTDElementDecl.lo \ xercesc/validators/DTD/DTDEntityDecl.lo \ xercesc/validators/DTD/DTDGrammar.lo \ xercesc/validators/DTD/DTDScanner.lo \ xercesc/validators/DTD/DTDValidator.lo \ xercesc/validators/DTD/XMLDTDDescriptionImpl.lo \ xercesc/validators/schema/ComplexTypeInfo.lo \ xercesc/validators/schema/GeneralAttributeCheck.lo \ xercesc/validators/schema/identity/FieldActivator.lo \ xercesc/validators/schema/identity/FieldValueMap.lo \ xercesc/validators/schema/identity/IC_Field.lo \ xercesc/validators/schema/identity/IC_Key.lo \ xercesc/validators/schema/identity/IC_KeyRef.lo \ xercesc/validators/schema/identity/IC_Selector.lo \ xercesc/validators/schema/identity/IC_Unique.lo \ xercesc/validators/schema/identity/IdentityConstraint.lo \ xercesc/validators/schema/identity/IdentityConstraintHandler.lo \ xercesc/validators/schema/identity/ValueStore.lo \ xercesc/validators/schema/identity/ValueStoreCache.lo \ xercesc/validators/schema/identity/XercesXPath.lo \ xercesc/validators/schema/identity/XPathMatcher.lo \ xercesc/validators/schema/identity/XPathMatcherStack.lo \ xercesc/validators/schema/identity/XPathSymbols.lo \ xercesc/validators/schema/NamespaceScope.lo \ xercesc/validators/schema/SchemaAttDef.lo \ xercesc/validators/schema/SchemaAttDefList.lo \ xercesc/validators/schema/SchemaElementDecl.lo \ xercesc/validators/schema/SchemaGrammar.lo \ xercesc/validators/schema/SchemaInfo.lo \ xercesc/validators/schema/SchemaSymbols.lo \ xercesc/validators/schema/SchemaValidator.lo \ xercesc/validators/schema/SubstitutionGroupComparator.lo \ xercesc/validators/schema/TraverseSchema.lo \ xercesc/validators/schema/XercesAttGroupInfo.lo \ xercesc/validators/schema/XercesElementWildcard.lo \ xercesc/validators/schema/XercesGroupInfo.lo \ xercesc/validators/schema/XMLSchemaDescriptionImpl.lo \ xercesc/validators/schema/XSDDOMParser.lo \ xercesc/validators/schema/XSDErrorReporter.lo \ xercesc/validators/schema/XSDLocator.lo \ xercesc/validators/schema/XUtil.lo am__objects_10 = xercesc/xinclude/XIncludeDOMDocumentProcessor.lo \ xercesc/xinclude/XIncludeLocation.lo \ xercesc/xinclude/XIncludeUtils.lo am__objects_11 = xercesc/util/NetAccessors/Curl/CurlNetAccessor.lo \ xercesc/util/NetAccessors/Curl/CurlURLInputStream.lo @XERCES_USE_NETACCESSOR_CURL_TRUE@am__objects_12 = $(am__objects_11) am__objects_13 = \ xercesc/util/NetAccessors/Socket/SocketNetAccessor.lo \ xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.lo \ xercesc/util/NetAccessors/BinHTTPInputStreamCommon.lo @XERCES_USE_NETACCESSOR_SOCKET_TRUE@am__objects_14 = \ @XERCES_USE_NETACCESSOR_SOCKET_TRUE@ $(am__objects_13) am__objects_15 = xercesc/util/NetAccessors/MacOSURLAccessCF/MacOSURLAccessCF.lo \ xercesc/util/NetAccessors/MacOSURLAccessCF/URLAccessCFBinInputStream.lo @XERCES_USE_NETACCESSOR_CFURL_TRUE@am__objects_16 = $(am__objects_15) am__objects_17 = \ xercesc/util/NetAccessors/WinSock/WinSockNetAccessor.lo \ xercesc/util/NetAccessors/WinSock/BinHTTPURLInputStream.lo \ xercesc/util/NetAccessors/BinHTTPInputStreamCommon.lo @XERCES_USE_NETACCESSOR_WINSOCK_TRUE@am__objects_18 = \ @XERCES_USE_NETACCESSOR_WINSOCK_TRUE@ $(am__objects_17) am__objects_19 = xercesc/util/Transcoders/ICU/ICUTransService.lo @XERCES_USE_TRANSCODER_ICU_TRUE@am__objects_20 = $(am__objects_19) am__objects_21 = \ xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.lo @XERCES_USE_TRANSCODER_GNUICONV_TRUE@am__objects_22 = \ @XERCES_USE_TRANSCODER_GNUICONV_TRUE@ $(am__objects_21) am__objects_23 = xercesc/util/Transcoders/Iconv/IconvTransService.lo @XERCES_USE_TRANSCODER_ICONV_TRUE@am__objects_24 = $(am__objects_23) am__objects_25 = xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.lo @XERCES_USE_TRANSCODER_MACOSUNICODECONVERTER_TRUE@am__objects_26 = $(am__objects_25) am__objects_27 = xercesc/util/Transcoders/Win32/Win32TransService.lo @XERCES_USE_TRANSCODER_WINDOWS_TRUE@am__objects_28 = \ @XERCES_USE_TRANSCODER_WINDOWS_TRUE@ $(am__objects_27) am__objects_29 = xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.lo @XERCES_USE_MSGLOADER_INMEMORY_TRUE@am__objects_30 = \ @XERCES_USE_MSGLOADER_INMEMORY_TRUE@ $(am__objects_29) am__objects_31 = xercesc/util/MsgLoaders/ICU/ICUMsgLoader.lo @XERCES_USE_MSGLOADER_ICU_TRUE@am__objects_32 = $(am__objects_31) am__objects_33 = \ xercesc/util/MsgLoaders/MsgCatalog/MsgCatalogLoader.lo @XERCES_USE_MSGLOADER_ICONV_TRUE@am__objects_34 = $(am__objects_33) am__objects_35 = xercesc/util/MutexManagers/NoThreadMutexMgr.lo @XERCES_USE_MUTEXMGR_NOTHREAD_TRUE@am__objects_36 = $(am__objects_35) am__objects_37 = xercesc/util/MutexManagers/PosixMutexMgr.lo @XERCES_USE_MUTEXMGR_POSIX_TRUE@am__objects_38 = $(am__objects_37) am__objects_39 = xercesc/util/MutexManagers/WindowsMutexMgr.lo @XERCES_USE_MUTEXMGR_WINDOWS_TRUE@am__objects_40 = $(am__objects_39) am__objects_41 = xercesc/util/FileManagers/PosixFileMgr.lo @XERCES_USE_FILEMGR_POSIX_TRUE@am__objects_42 = $(am__objects_41) am__objects_43 = xercesc/util/FileManagers/WindowsFileMgr.lo @XERCES_USE_FILEMGR_WINDOWS_TRUE@am__objects_44 = $(am__objects_43) am_libxerces_c_la_OBJECTS = $(am__objects_1) $(am__objects_2) \ $(am__objects_3) $(am__objects_4) $(am__objects_5) \ $(am__objects_6) $(am__objects_7) $(am__objects_8) \ $(am__objects_9) $(am__objects_10) $(am__objects_12) \ $(am__objects_14) $(am__objects_16) $(am__objects_18) \ $(am__objects_20) $(am__objects_22) $(am__objects_24) \ $(am__objects_26) $(am__objects_28) $(am__objects_30) \ $(am__objects_32) $(am__objects_34) $(am__objects_36) \ $(am__objects_38) $(am__objects_40) $(am__objects_42) \ $(am__objects_44) am__objects_45 = xercesc_messages.lo root_res.lo @XERCES_USE_MSGLOADER_ICU_TRUE@nodist_libxerces_c_la_OBJECTS = \ @XERCES_USE_MSGLOADER_ICU_TRUE@ $(am__objects_45) libxerces_c_la_OBJECTS = $(am_libxerces_c_la_OBJECTS) \ $(nodist_libxerces_c_la_OBJECTS) libxerces_c_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(libxerces_c_la_LDFLAGS) $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -I$(top_builddir)/src/xercesc/util depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ CXXLD = $(CXX) CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(libxerces_c_la_SOURCES) $(nodist_libxerces_c_la_SOURCES) DIST_SOURCES = $(am__libxerces_c_la_SOURCES_DIST) 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 am__nobase_libxerces_c_la_HEADERS_DIST = \ xercesc/util/ArrayIndexOutOfBoundsException.hpp \ xercesc/util/Base64.hpp xercesc/util/BaseRefVectorOf.hpp \ xercesc/util/BaseRefVectorOf.c \ xercesc/util/BinFileInputStream.hpp \ xercesc/util/BinInputStream.hpp \ xercesc/util/BinMemInputStream.hpp xercesc/util/BitOps.hpp \ xercesc/util/BitSet.hpp xercesc/util/CountedPointer.hpp \ xercesc/util/CountedPointer.c \ xercesc/util/DefaultPanicHandler.hpp \ xercesc/util/EmptyStackException.hpp \ xercesc/util/EncodingValidator.hpp \ xercesc/util/FlagJanitor.hpp xercesc/util/FlagJanitor.c \ xercesc/util/Hashers.hpp xercesc/util/Hash2KeysSetOf.hpp \ xercesc/util/Hash2KeysSetOf.c xercesc/util/HexBin.hpp \ xercesc/util/IllegalArgumentException.hpp \ xercesc/util/InvalidCastException.hpp \ xercesc/util/IOException.hpp xercesc/util/Janitor.hpp \ xercesc/util/Janitor.c xercesc/util/KeyRefPair.hpp \ xercesc/util/KeyRefPair.c xercesc/util/KeyValuePair.hpp \ xercesc/util/KeyValuePair.c xercesc/util/KVStringPair.hpp \ xercesc/util/Mutexes.hpp xercesc/util/LogicalPath.c \ xercesc/util/NameIdPool.hpp xercesc/util/NameIdPool.c \ xercesc/util/NoSuchElementException.hpp \ xercesc/util/NullPointerException.hpp \ xercesc/util/NumberFormatException.hpp \ xercesc/util/OutOfMemoryException.hpp \ xercesc/util/PanicHandler.hpp xercesc/util/ParseException.hpp \ xercesc/util/PlatformUtils.hpp xercesc/util/PSVIUni.hpp \ xercesc/util/QName.hpp xercesc/util/RefArrayOf.hpp \ xercesc/util/RefArrayOf.c xercesc/util/RefArrayVectorOf.hpp \ xercesc/util/RefArrayVectorOf.c \ xercesc/util/RefHash2KeysTableOf.hpp \ xercesc/util/RefHash2KeysTableOf.c \ xercesc/util/RefHash3KeysIdPool.hpp \ xercesc/util/RefHash3KeysIdPool.c \ xercesc/util/RefHashTableOf.hpp xercesc/util/RefHashTableOf.c \ xercesc/util/RefStackOf.hpp xercesc/util/RefStackOf.c \ xercesc/util/RefVectorOf.hpp xercesc/util/RefVectorOf.c \ xercesc/util/regx/ASCIIRangeFactory.hpp \ xercesc/util/regx/BlockRangeFactory.hpp \ xercesc/util/regx/BMPattern.hpp \ xercesc/util/regx/CharToken.hpp \ xercesc/util/regx/ClosureToken.hpp \ xercesc/util/regx/ConcatToken.hpp xercesc/util/regx/Match.hpp \ xercesc/util/regx/Op.hpp xercesc/util/regx/OpFactory.hpp \ xercesc/util/regx/ParenToken.hpp \ xercesc/util/regx/ParserForXMLSchema.hpp \ xercesc/util/regx/RangeFactory.hpp \ xercesc/util/regx/RangeToken.hpp \ xercesc/util/regx/RangeTokenMap.hpp \ xercesc/util/regx/RegularExpression.hpp \ xercesc/util/regx/RegxDefs.hpp \ xercesc/util/regx/RegxParser.hpp \ xercesc/util/regx/RegxUtil.hpp \ xercesc/util/regx/StringToken.hpp xercesc/util/regx/Token.hpp \ xercesc/util/regx/TokenFactory.hpp \ xercesc/util/regx/TokenInc.hpp \ xercesc/util/regx/UniCharTable.hpp \ xercesc/util/regx/UnicodeRangeFactory.hpp \ xercesc/util/regx/UnionToken.hpp \ xercesc/util/regx/XMLRangeFactory.hpp \ xercesc/util/regx/XMLUniCharacter.hpp \ xercesc/util/RuntimeException.hpp \ xercesc/util/SchemaDateTimeException.hpp \ xercesc/util/SecurityManager.hpp xercesc/util/StringPool.hpp \ xercesc/util/SynchronizedStringPool.hpp \ xercesc/util/TranscodingException.hpp \ xercesc/util/TransENameMap.hpp xercesc/util/TransENameMap.c \ xercesc/util/TransService.hpp \ xercesc/util/UnexpectedEOFException.hpp \ xercesc/util/UnsupportedEncodingException.hpp \ xercesc/util/UTFDataFormatException.hpp \ xercesc/util/ValueArrayOf.hpp xercesc/util/ValueArrayOf.c \ xercesc/util/ValueHashTableOf.hpp \ xercesc/util/ValueHashTableOf.c xercesc/util/ValueStackOf.hpp \ xercesc/util/ValueStackOf.c xercesc/util/ValueVectorOf.hpp \ xercesc/util/ValueVectorOf.c xercesc/util/XercesDefs.hpp \ xercesc/util/XercesVersion.hpp xercesc/util/XMemory.hpp \ xercesc/util/XML256TableTranscoder.hpp \ xercesc/util/XML88591Transcoder.hpp \ xercesc/util/XMLAbstractDoubleFloat.hpp \ xercesc/util/XMLASCIITranscoder.hpp \ xercesc/util/XMLBigDecimal.hpp xercesc/util/XMLBigInteger.hpp \ xercesc/util/XMLChar.hpp xercesc/util/XMLChTranscoder.hpp \ xercesc/util/XMLDateTime.hpp xercesc/util/XMLDOMMsg.hpp \ xercesc/util/XMLDouble.hpp \ xercesc/util/XMLEBCDICTranscoder.hpp \ xercesc/util/XMLEntityResolver.hpp \ xercesc/util/XMLEnumerator.hpp xercesc/util/XMLException.hpp \ xercesc/util/XMLExceptMsgs.hpp xercesc/util/XMLFileMgr.hpp \ xercesc/util/XMLFloat.hpp \ xercesc/util/XMLIBM1047Transcoder.hpp \ xercesc/util/XMLIBM1140Transcoder.hpp \ xercesc/util/XMLInitializer.hpp xercesc/util/XMLInteger.hpp \ xercesc/util/XMLMutexMgr.hpp xercesc/util/XMLMsgLoader.hpp \ xercesc/util/XMLNetAccessor.hpp xercesc/util/XMLNumber.hpp \ xercesc/util/XMLResourceIdentifier.hpp \ xercesc/util/XMLString.hpp xercesc/util/XMLStringTokenizer.hpp \ xercesc/util/XMLUCS4Transcoder.hpp xercesc/util/XMLUni.hpp \ xercesc/util/XMLUniDefs.hpp xercesc/util/XMLUri.hpp \ xercesc/util/XMLURL.hpp xercesc/util/XMLUTF16Transcoder.hpp \ xercesc/util/XMLUTF8Transcoder.hpp \ xercesc/util/XMLWin1252Transcoder.hpp xercesc/dom/DOM.hpp \ xercesc/dom/DOMAttr.hpp xercesc/dom/DOMCDATASection.hpp \ xercesc/dom/DOMCharacterData.hpp xercesc/dom/DOMComment.hpp \ xercesc/dom/DOMConfiguration.hpp xercesc/dom/DOMDocument.hpp \ xercesc/dom/DOMDocumentFragment.hpp \ xercesc/dom/DOMDocumentRange.hpp \ xercesc/dom/DOMDocumentTraversal.hpp \ xercesc/dom/DOMDocumentType.hpp xercesc/dom/DOMElement.hpp \ xercesc/dom/DOMEntity.hpp xercesc/dom/DOMEntityReference.hpp \ xercesc/dom/DOMError.hpp xercesc/dom/DOMErrorHandler.hpp \ xercesc/dom/DOMException.hpp xercesc/dom/DOMImplementation.hpp \ xercesc/dom/DOMImplementationList.hpp \ xercesc/dom/DOMImplementationLS.hpp \ xercesc/dom/DOMImplementationRegistry.hpp \ xercesc/dom/DOMImplementationSource.hpp \ xercesc/dom/DOMLocator.hpp xercesc/dom/DOMLSException.hpp \ xercesc/dom/DOMLSInput.hpp xercesc/dom/DOMLSOutput.hpp \ xercesc/dom/DOMLSParser.hpp xercesc/dom/DOMLSParserFilter.hpp \ xercesc/dom/DOMLSResourceResolver.hpp \ xercesc/dom/DOMLSSerializer.hpp \ xercesc/dom/DOMLSSerializerFilter.hpp \ xercesc/dom/DOMMemoryManager.hpp \ xercesc/dom/DOMNamedNodeMap.hpp xercesc/dom/DOMNode.hpp \ xercesc/dom/DOMNodeFilter.hpp xercesc/dom/DOMNodeIterator.hpp \ xercesc/dom/DOMNodeList.hpp xercesc/dom/DOMNotation.hpp \ xercesc/dom/DOMProcessingInstruction.hpp \ xercesc/dom/DOMPSVITypeInfo.hpp xercesc/dom/DOMRange.hpp \ xercesc/dom/DOMRangeException.hpp \ xercesc/dom/DOMStringList.hpp xercesc/dom/DOMText.hpp \ xercesc/dom/DOMTreeWalker.hpp xercesc/dom/DOMTypeInfo.hpp \ xercesc/dom/DOMUserDataHandler.hpp \ xercesc/dom/DOMXPathEvaluator.hpp \ xercesc/dom/DOMXPathException.hpp \ xercesc/dom/DOMXPathExpression.hpp \ xercesc/dom/DOMXPathNamespace.hpp \ xercesc/dom/DOMXPathNSResolver.hpp \ xercesc/dom/DOMXPathResult.hpp xercesc/dom/StDOMNode.hpp \ xercesc/dom/impl/DOMAttrImpl.hpp \ xercesc/dom/impl/DOMAttrMapImpl.hpp \ xercesc/dom/impl/DOMAttrNSImpl.hpp \ xercesc/dom/impl/DOMCasts.hpp \ xercesc/dom/impl/DOMCDATASectionImpl.hpp \ xercesc/dom/impl/DOMCharacterDataImpl.hpp \ xercesc/dom/impl/DOMChildNode.hpp \ xercesc/dom/impl/DOMCommentImpl.hpp \ xercesc/dom/impl/DOMConfigurationImpl.hpp \ xercesc/dom/impl/DOMDeepNodeListImpl.hpp \ xercesc/dom/impl/DOMDeepNodeListPool.hpp \ xercesc/dom/impl/DOMDeepNodeListPool.c \ xercesc/dom/impl/DOMDocumentFragmentImpl.hpp \ xercesc/dom/impl/DOMDocumentImpl.hpp \ xercesc/dom/impl/DOMDocumentTypeImpl.hpp \ xercesc/dom/impl/DOMElementImpl.hpp \ xercesc/dom/impl/DOMElementNSImpl.hpp \ xercesc/dom/impl/DOMEntityImpl.hpp \ xercesc/dom/impl/DOMEntityReferenceImpl.hpp \ xercesc/dom/impl/DOMErrorImpl.hpp \ xercesc/dom/impl/DOMImplementationImpl.hpp \ xercesc/dom/impl/DOMImplementationListImpl.hpp \ xercesc/dom/impl/DOMLocatorImpl.hpp \ xercesc/dom/impl/DOMNamedNodeMapImpl.hpp \ xercesc/dom/impl/DOMNodeIDMap.hpp \ xercesc/dom/impl/DOMNodeImpl.hpp \ xercesc/dom/impl/DOMNodeIteratorImpl.hpp \ xercesc/dom/impl/DOMNodeListImpl.hpp \ xercesc/dom/impl/DOMNodeVector.hpp \ xercesc/dom/impl/DOMNormalizer.hpp \ xercesc/dom/impl/DOMNotationImpl.hpp \ xercesc/dom/impl/DOMParentNode.hpp \ xercesc/dom/impl/DOMProcessingInstructionImpl.hpp \ xercesc/dom/impl/DOMRangeImpl.hpp \ xercesc/dom/impl/DOMStringListImpl.hpp \ xercesc/dom/impl/DOMStringPool.hpp \ xercesc/dom/impl/DOMTextImpl.hpp \ xercesc/dom/impl/DOMTreeWalkerImpl.hpp \ xercesc/dom/impl/DOMTypeInfoImpl.hpp \ xercesc/dom/impl/DOMLSSerializerImpl.hpp \ xercesc/dom/impl/DOMLSInputImpl.hpp \ xercesc/dom/impl/DOMLSOutputImpl.hpp \ xercesc/dom/impl/DOMXPathExpressionImpl.hpp \ xercesc/dom/impl/DOMXPathNSResolverImpl.hpp \ xercesc/dom/impl/DOMXPathResultImpl.hpp \ xercesc/dom/impl/XSDElementNSImpl.hpp \ xercesc/framework/BinOutputStream.hpp \ xercesc/framework/LocalFileFormatTarget.hpp \ xercesc/framework/LocalFileInputSource.hpp \ xercesc/framework/MemBufFormatTarget.hpp \ xercesc/framework/MemBufInputSource.hpp \ xercesc/framework/MemoryManager.hpp \ xercesc/framework/psvi/PSVIAttribute.hpp \ xercesc/framework/psvi/PSVIAttributeList.hpp \ xercesc/framework/psvi/PSVIElement.hpp \ xercesc/framework/psvi/PSVIHandler.hpp \ xercesc/framework/psvi/PSVIItem.hpp \ xercesc/framework/psvi/XSAnnotation.hpp \ xercesc/framework/psvi/XSAttributeDeclaration.hpp \ xercesc/framework/psvi/XSAttributeGroupDefinition.hpp \ xercesc/framework/psvi/XSAttributeUse.hpp \ xercesc/framework/psvi/XSComplexTypeDefinition.hpp \ xercesc/framework/psvi/XSConstants.hpp \ xercesc/framework/psvi/XSElementDeclaration.hpp \ xercesc/framework/psvi/XSFacet.hpp \ xercesc/framework/psvi/XSIDCDefinition.hpp \ xercesc/framework/psvi/XSModel.hpp \ xercesc/framework/psvi/XSModelGroup.hpp \ xercesc/framework/psvi/XSModelGroupDefinition.hpp \ xercesc/framework/psvi/XSMultiValueFacet.hpp \ xercesc/framework/psvi/XSNamedMap.hpp \ xercesc/framework/psvi/XSNamedMap.c \ xercesc/framework/psvi/XSNamespaceItem.hpp \ xercesc/framework/psvi/XSNotationDeclaration.hpp \ xercesc/framework/psvi/XSObject.hpp \ xercesc/framework/psvi/XSParticle.hpp \ xercesc/framework/psvi/XSSimpleTypeDefinition.hpp \ xercesc/framework/psvi/XSTypeDefinition.hpp \ xercesc/framework/psvi/XSValue.hpp \ xercesc/framework/psvi/XSWildcard.hpp \ xercesc/framework/StdInInputSource.hpp \ xercesc/framework/StdOutFormatTarget.hpp \ xercesc/framework/URLInputSource.hpp \ xercesc/framework/ValidationContext.hpp \ xercesc/framework/Wrapper4DOMLSInput.hpp \ xercesc/framework/Wrapper4InputSource.hpp \ xercesc/framework/XMLAttDef.hpp \ xercesc/framework/XMLAttDefList.hpp \ xercesc/framework/XMLAttr.hpp xercesc/framework/XMLBuffer.hpp \ xercesc/framework/XMLBufferMgr.hpp \ xercesc/framework/XMLContentModel.hpp \ xercesc/framework/XMLDocumentHandler.hpp \ xercesc/framework/XMLDTDDescription.hpp \ xercesc/framework/XMLElementDecl.hpp \ xercesc/framework/XMLEntityDecl.hpp \ xercesc/framework/XMLEntityHandler.hpp \ xercesc/framework/XMLErrorCodes.hpp \ xercesc/framework/XMLErrorReporter.hpp \ xercesc/framework/XMLFormatter.hpp \ xercesc/framework/XMLGrammarDescription.hpp \ xercesc/framework/XMLGrammarPool.hpp \ xercesc/framework/XMLGrammarPoolImpl.hpp \ xercesc/framework/XMLNotationDecl.hpp \ xercesc/framework/XMLPScanToken.hpp \ xercesc/framework/XMLRecognizer.hpp \ xercesc/framework/XMLRefInfo.hpp \ xercesc/framework/XMLSchemaDescription.hpp \ xercesc/framework/XMLValidator.hpp \ xercesc/framework/XMLValidityCodes.hpp \ xercesc/internal/BinFileOutputStream.hpp \ xercesc/internal/BinMemOutputStream.hpp \ xercesc/internal/CharTypeTables.hpp \ xercesc/internal/DGXMLScanner.hpp \ xercesc/internal/ElemStack.hpp \ xercesc/internal/EndOfEntityException.hpp \ xercesc/internal/IANAEncodings.hpp \ xercesc/internal/IGXMLScanner.hpp \ xercesc/internal/MemoryManagerImpl.hpp \ xercesc/internal/ReaderMgr.hpp \ xercesc/internal/SGXMLScanner.hpp \ xercesc/internal/ValidationContextImpl.hpp \ xercesc/internal/VecAttributesImpl.hpp \ xercesc/internal/VecAttrListImpl.hpp \ xercesc/internal/WFXMLScanner.hpp \ xercesc/internal/XMLInternalErrorHandler.hpp \ xercesc/internal/XMLReader.hpp xercesc/internal/XMLScanner.hpp \ xercesc/internal/XMLScannerResolver.hpp \ xercesc/internal/XProtoType.hpp \ xercesc/internal/XSAXMLScanner.hpp \ xercesc/internal/XSerializable.hpp \ xercesc/internal/XSerializationException.hpp \ xercesc/internal/XSerializeEngine.hpp \ xercesc/internal/XSObjectFactory.hpp \ xercesc/internal/XTemplateSerializer.hpp \ xercesc/parsers/AbstractDOMParser.hpp \ xercesc/parsers/DOMLSParserImpl.hpp \ xercesc/parsers/SAX2XMLFilterImpl.hpp \ xercesc/parsers/SAX2XMLReaderImpl.hpp \ xercesc/parsers/SAXParser.hpp \ xercesc/parsers/XercesDOMParser.hpp \ xercesc/sax/AttributeList.hpp xercesc/sax/DocumentHandler.hpp \ xercesc/sax/DTDHandler.hpp xercesc/sax/EntityResolver.hpp \ xercesc/sax/ErrorHandler.hpp xercesc/sax/HandlerBase.hpp \ xercesc/sax/InputSource.hpp xercesc/sax/Locator.hpp \ xercesc/sax/Parser.hpp xercesc/sax/SAXException.hpp \ xercesc/sax/SAXParseException.hpp xercesc/sax2/Attributes.hpp \ xercesc/sax2/ContentHandler.hpp xercesc/sax2/DeclHandler.hpp \ xercesc/sax2/DefaultHandler.hpp \ xercesc/sax2/LexicalHandler.hpp xercesc/sax2/SAX2XMLFilter.hpp \ xercesc/sax2/SAX2XMLReader.hpp \ xercesc/sax2/XMLReaderFactory.hpp \ xercesc/validators/common/AllContentModel.hpp \ xercesc/validators/common/CMAny.hpp \ xercesc/validators/common/CMBinaryOp.hpp \ xercesc/validators/common/CMLeaf.hpp \ xercesc/validators/common/CMRepeatingLeaf.hpp \ xercesc/validators/common/CMNode.hpp \ xercesc/validators/common/CMStateSet.hpp \ xercesc/validators/common/CMUnaryOp.hpp \ xercesc/validators/common/ContentLeafNameTypeVector.hpp \ xercesc/validators/common/ContentSpecNode.hpp \ xercesc/validators/common/DFAContentModel.hpp \ xercesc/validators/common/Grammar.hpp \ xercesc/validators/common/GrammarResolver.hpp \ xercesc/validators/common/MixedContentModel.hpp \ xercesc/validators/common/SimpleContentModel.hpp \ xercesc/validators/datatype/AbstractNumericFacetValidator.hpp \ xercesc/validators/datatype/AbstractNumericValidator.hpp \ xercesc/validators/datatype/AbstractStringValidator.hpp \ xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.hpp \ xercesc/validators/datatype/AnyURIDatatypeValidator.hpp \ xercesc/validators/datatype/Base64BinaryDatatypeValidator.hpp \ xercesc/validators/datatype/BooleanDatatypeValidator.hpp \ xercesc/validators/datatype/DatatypeValidator.hpp \ xercesc/validators/datatype/DatatypeValidatorFactory.hpp \ xercesc/validators/datatype/DateDatatypeValidator.hpp \ xercesc/validators/datatype/DateTimeDatatypeValidator.hpp \ xercesc/validators/datatype/DateTimeValidator.hpp \ xercesc/validators/datatype/DayDatatypeValidator.hpp \ xercesc/validators/datatype/DecimalDatatypeValidator.hpp \ xercesc/validators/datatype/DoubleDatatypeValidator.hpp \ xercesc/validators/datatype/DurationDatatypeValidator.hpp \ xercesc/validators/datatype/ENTITYDatatypeValidator.hpp \ xercesc/validators/datatype/FloatDatatypeValidator.hpp \ xercesc/validators/datatype/HexBinaryDatatypeValidator.hpp \ xercesc/validators/datatype/IDDatatypeValidator.hpp \ xercesc/validators/datatype/IDREFDatatypeValidator.hpp \ xercesc/validators/datatype/InvalidDatatypeFacetException.hpp \ xercesc/validators/datatype/InvalidDatatypeValueException.hpp \ xercesc/validators/datatype/ListDatatypeValidator.hpp \ xercesc/validators/datatype/MonthDatatypeValidator.hpp \ xercesc/validators/datatype/MonthDayDatatypeValidator.hpp \ xercesc/validators/datatype/NameDatatypeValidator.hpp \ xercesc/validators/datatype/NCNameDatatypeValidator.hpp \ xercesc/validators/datatype/NOTATIONDatatypeValidator.hpp \ xercesc/validators/datatype/QNameDatatypeValidator.hpp \ xercesc/validators/datatype/StringDatatypeValidator.hpp \ xercesc/validators/datatype/TimeDatatypeValidator.hpp \ xercesc/validators/datatype/UnionDatatypeValidator.hpp \ xercesc/validators/datatype/XMLCanRepGroup.hpp \ xercesc/validators/datatype/YearDatatypeValidator.hpp \ xercesc/validators/datatype/YearMonthDatatypeValidator.hpp \ xercesc/validators/DTD/DocTypeHandler.hpp \ xercesc/validators/DTD/DTDAttDef.hpp \ xercesc/validators/DTD/DTDAttDefList.hpp \ xercesc/validators/DTD/DTDElementDecl.hpp \ xercesc/validators/DTD/DTDEntityDecl.hpp \ xercesc/validators/DTD/DTDGrammar.hpp \ xercesc/validators/DTD/DTDScanner.hpp \ xercesc/validators/DTD/DTDValidator.hpp \ xercesc/validators/DTD/XMLDTDDescriptionImpl.hpp \ xercesc/validators/schema/ComplexTypeInfo.hpp \ xercesc/validators/schema/GeneralAttributeCheck.hpp \ xercesc/validators/schema/identity/FieldActivator.hpp \ xercesc/validators/schema/identity/FieldValueMap.hpp \ xercesc/validators/schema/identity/IC_Field.hpp \ xercesc/validators/schema/identity/IC_Key.hpp \ xercesc/validators/schema/identity/IC_KeyRef.hpp \ xercesc/validators/schema/identity/IC_Selector.hpp \ xercesc/validators/schema/identity/IC_Unique.hpp \ xercesc/validators/schema/identity/IdentityConstraint.hpp \ xercesc/validators/schema/identity/IdentityConstraintHandler.hpp \ xercesc/validators/schema/identity/ValueStore.hpp \ xercesc/validators/schema/identity/ValueStoreCache.hpp \ xercesc/validators/schema/identity/XercesXPath.hpp \ xercesc/validators/schema/identity/XPathException.hpp \ xercesc/validators/schema/identity/XPathMatcher.hpp \ xercesc/validators/schema/identity/XPathMatcherStack.hpp \ xercesc/validators/schema/identity/XPathSymbols.hpp \ xercesc/validators/schema/NamespaceScope.hpp \ xercesc/validators/schema/PSVIDefs.hpp \ xercesc/validators/schema/SchemaAttDef.hpp \ xercesc/validators/schema/SchemaAttDefList.hpp \ xercesc/validators/schema/SchemaElementDecl.hpp \ xercesc/validators/schema/SchemaGrammar.hpp \ xercesc/validators/schema/SchemaInfo.hpp \ xercesc/validators/schema/SchemaSymbols.hpp \ xercesc/validators/schema/SchemaValidator.hpp \ xercesc/validators/schema/SubstitutionGroupComparator.hpp \ xercesc/validators/schema/TraverseSchema.hpp \ xercesc/validators/schema/XercesAttGroupInfo.hpp \ xercesc/validators/schema/XercesElementWildcard.hpp \ xercesc/validators/schema/XercesGroupInfo.hpp \ xercesc/validators/schema/XMLSchemaDescriptionImpl.hpp \ xercesc/validators/schema/XSDDOMParser.hpp \ xercesc/validators/schema/XSDErrorReporter.hpp \ xercesc/validators/schema/XSDLocator.hpp \ xercesc/validators/schema/XUtil.hpp \ xercesc/xinclude/XIncludeDOMDocumentProcessor.hpp \ xercesc/xinclude/XIncludeLocation.hpp \ xercesc/xinclude/XIncludeUtils.hpp \ xercesc/util/NetAccessors/Curl/CurlNetAccessor.hpp \ xercesc/util/NetAccessors/Curl/CurlURLInputStream.hpp \ xercesc/util/NetAccessors/Socket/SocketNetAccessor.hpp \ xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.hpp \ xercesc/util/NetAccessors/BinHTTPInputStreamCommon.hpp \ xercesc/util/NetAccessors/MacOSURLAccessCF/MacOSURLAccessCF.hpp \ xercesc/util/NetAccessors/MacOSURLAccessCF/URLAccessCFBinInputStream.hpp \ xercesc/util/NetAccessors/WinSock/WinSockNetAccessor.hpp \ xercesc/util/NetAccessors/WinSock/BinHTTPURLInputStream.hpp \ xercesc/util/Transcoders/ICU/ICUTransService.hpp \ xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.hpp \ xercesc/util/Transcoders/Iconv/IconvTransService.hpp \ xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.hpp \ xercesc/util/Transcoders/Win32/Win32TransService.hpp \ xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.hpp \ xercesc/util/MsgLoaders/InMemory/XercesMessages_en_US.hpp \ xercesc/util/MsgLoaders/ICU/ICUMsgLoader.hpp \ xercesc/util/MsgLoaders/MsgCatalog/MsgCatalogLoader.hpp \ xercesc/util/MsgLoaders/MsgCatalog/XMLMsgCat_Ids.hpp \ xercesc/util/MutexManagers/NoThreadMutexMgr.hpp \ xercesc/util/MutexManagers/PosixMutexMgr.hpp \ xercesc/util/MutexManagers/WindowsMutexMgr.hpp \ xercesc/util/FileManagers/PosixFileMgr.hpp \ xercesc/util/FileManagers/WindowsFileMgr.hpp HEADERS = $(nobase_libxerces_c_la_HEADERS) \ $(nodist_autoconfheaders_HEADERS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = xercesc/util/MsgLoaders/MsgCatalog DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BUILD_SHARED = @BUILD_SHARED@ BUILD_STATIC = @BUILD_STATIC@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CURL_FLAGS = @CURL_FLAGS@ CURL_LIBS = @CURL_LIBS@ CURL_PRESENT = @CURL_PRESENT@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ -DXERCES_BUILDING_LIBRARY DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ ICU_BIN = @ICU_BIN@ ICU_FLAGS = @ICU_FLAGS@ ICU_LIBS = @ICU_LIBS@ ICU_PRESENT = @ICU_PRESENT@ ICU_SBIN = @ICU_SBIN@ 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@ MAINT = @MAINT@ 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_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ SHREXT = @SHREXT@ STRIP = @STRIP@ VERSION = @VERSION@ 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_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ acx_pthread_config = @acx_pthread_config@ 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@ curl_config = @curl_config@ 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@ icu_config = @icu_config@ 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@ pkgconfigdir = @pkgconfigdir@ 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 = $(am__append_29) # # lib_LTLIBRARIES = libxerces-c.la # Use AM_* variables instead of per-target ones otherwise the # make pretty-printing won't work. # AM_CPPFLAGS = $(am__append_3) $(am__append_12) $(am__append_25) libxerces_c_la_LDFLAGS = -release ${INTERFACE_VER_D} # This sets {install}/include as target for the headers libxerces_c_ladir = ${includedir} libxerces_c_la_SOURCES = ${util_sources} ${dom_sources} \ ${domimpl_sources} ${framework_sources} ${internal_sources} \ ${parsers_sources} ${sax_sources} ${sax2_sources} \ ${validators_sources} ${xinclude_sources} $(am__append_1) \ $(am__append_4) $(am__append_6) $(am__append_8) \ $(am__append_10) $(am__append_13) $(am__append_15) \ $(am__append_17) $(am__append_19) $(am__append_21) \ $(am__append_23) $(am__append_27) $(am__append_30) \ $(am__append_32) $(am__append_34) $(am__append_36) \ $(am__append_38) nobase_libxerces_c_la_HEADERS = ${util_headers} ${dom_headers} \ ${domimpl_headers} ${framework_headers} ${internal_headers} \ ${parsers_headers} ${sax_headers} ${sax2_headers} \ ${validators_headers} ${xinclude_headers} $(am__append_2) \ $(am__append_5) $(am__append_7) $(am__append_9) \ $(am__append_11) $(am__append_14) $(am__append_16) \ $(am__append_18) $(am__append_20) $(am__append_22) \ $(am__append_24) $(am__append_28) $(am__append_31) \ $(am__append_33) $(am__append_35) $(am__append_37) \ $(am__append_39) # Make sure autoconf-generated Xerces_autoconf_config.hpp ends up in a # proper place when installed. # autoconfheadersdir = $(includedir)/xercesc/util nodist_autoconfheaders_HEADERS = ${top_builddir}/src/xercesc/util/Xerces_autoconf_config.hpp # Compatibility library. # EXTRA_DIST = stricmp.h strnicmp.h towlower.h towupper.h \ $(am__append_26) libxerces_c_la_LIBADD = ${LTLIBOBJS} @XERCES_USE_MSGLOADER_ICU_TRUE@nodist_libxerces_c_la_SOURCES = ${msgicu_nodist_sources} # Resource shortname @XERCES_USE_MSGLOADER_ICU_TRUE@PKGNAME = xercesc_messages_${INTERFACE_VER_U} @XERCES_USE_MSGLOADER_ICU_TRUE@CLEANFILES = xercesc_messages.c root_res.c root.res @XERCES_USE_MSGLOADER_ICU_TRUE@BUILT_SOURCES = xercesc_messages.c root_res.c # # Definition of sources/headers for each convenience library # # # A line like the following will generate a list of headers # for a given directory: (must be issued from src directory) # find xercesc/framework -name '*.hpp' -exec echo {} \\ ";" # find xercesc/framework -name '*.cpp' -exec echo {} \\ ";" # dom_headers = \ xercesc/dom/DOM.hpp \ xercesc/dom/DOMAttr.hpp \ xercesc/dom/DOMCDATASection.hpp \ xercesc/dom/DOMCharacterData.hpp \ xercesc/dom/DOMComment.hpp \ xercesc/dom/DOMConfiguration.hpp \ xercesc/dom/DOMDocument.hpp \ xercesc/dom/DOMDocumentFragment.hpp \ xercesc/dom/DOMDocumentRange.hpp \ xercesc/dom/DOMDocumentTraversal.hpp \ xercesc/dom/DOMDocumentType.hpp \ xercesc/dom/DOMElement.hpp \ xercesc/dom/DOMEntity.hpp \ xercesc/dom/DOMEntityReference.hpp \ xercesc/dom/DOMError.hpp \ xercesc/dom/DOMErrorHandler.hpp \ xercesc/dom/DOMException.hpp \ xercesc/dom/DOMImplementation.hpp \ xercesc/dom/DOMImplementationList.hpp \ xercesc/dom/DOMImplementationLS.hpp \ xercesc/dom/DOMImplementationRegistry.hpp \ xercesc/dom/DOMImplementationSource.hpp \ xercesc/dom/DOMLocator.hpp \ xercesc/dom/DOMLSException.hpp \ xercesc/dom/DOMLSInput.hpp \ xercesc/dom/DOMLSOutput.hpp \ xercesc/dom/DOMLSParser.hpp \ xercesc/dom/DOMLSParserFilter.hpp \ xercesc/dom/DOMLSResourceResolver.hpp \ xercesc/dom/DOMLSSerializer.hpp \ xercesc/dom/DOMLSSerializerFilter.hpp \ xercesc/dom/DOMMemoryManager.hpp \ xercesc/dom/DOMNamedNodeMap.hpp \ xercesc/dom/DOMNode.hpp \ xercesc/dom/DOMNodeFilter.hpp \ xercesc/dom/DOMNodeIterator.hpp \ xercesc/dom/DOMNodeList.hpp \ xercesc/dom/DOMNotation.hpp \ xercesc/dom/DOMProcessingInstruction.hpp \ xercesc/dom/DOMPSVITypeInfo.hpp \ xercesc/dom/DOMRange.hpp \ xercesc/dom/DOMRangeException.hpp \ xercesc/dom/DOMStringList.hpp \ xercesc/dom/DOMText.hpp \ xercesc/dom/DOMTreeWalker.hpp \ xercesc/dom/DOMTypeInfo.hpp \ xercesc/dom/DOMUserDataHandler.hpp \ xercesc/dom/DOMXPathEvaluator.hpp \ xercesc/dom/DOMXPathException.hpp \ xercesc/dom/DOMXPathExpression.hpp \ xercesc/dom/DOMXPathNamespace.hpp \ xercesc/dom/DOMXPathNSResolver.hpp \ xercesc/dom/DOMXPathResult.hpp \ xercesc/dom/StDOMNode.hpp dom_sources = \ xercesc/dom/DOMException.cpp \ xercesc/dom/DOMLSException.cpp \ xercesc/dom/DOMRangeException.cpp \ xercesc/dom/DOMXPathException.cpp domimpl_headers = \ xercesc/dom/impl/DOMAttrImpl.hpp \ xercesc/dom/impl/DOMAttrMapImpl.hpp \ xercesc/dom/impl/DOMAttrNSImpl.hpp \ xercesc/dom/impl/DOMCasts.hpp \ xercesc/dom/impl/DOMCDATASectionImpl.hpp \ xercesc/dom/impl/DOMCharacterDataImpl.hpp \ xercesc/dom/impl/DOMChildNode.hpp \ xercesc/dom/impl/DOMCommentImpl.hpp \ xercesc/dom/impl/DOMConfigurationImpl.hpp \ xercesc/dom/impl/DOMDeepNodeListImpl.hpp \ xercesc/dom/impl/DOMDeepNodeListPool.hpp \ xercesc/dom/impl/DOMDeepNodeListPool.c \ xercesc/dom/impl/DOMDocumentFragmentImpl.hpp \ xercesc/dom/impl/DOMDocumentImpl.hpp \ xercesc/dom/impl/DOMDocumentTypeImpl.hpp \ xercesc/dom/impl/DOMElementImpl.hpp \ xercesc/dom/impl/DOMElementNSImpl.hpp \ xercesc/dom/impl/DOMEntityImpl.hpp \ xercesc/dom/impl/DOMEntityReferenceImpl.hpp \ xercesc/dom/impl/DOMErrorImpl.hpp \ xercesc/dom/impl/DOMImplementationImpl.hpp \ xercesc/dom/impl/DOMImplementationListImpl.hpp \ xercesc/dom/impl/DOMLocatorImpl.hpp \ xercesc/dom/impl/DOMNamedNodeMapImpl.hpp \ xercesc/dom/impl/DOMNodeIDMap.hpp \ xercesc/dom/impl/DOMNodeImpl.hpp \ xercesc/dom/impl/DOMNodeIteratorImpl.hpp \ xercesc/dom/impl/DOMNodeListImpl.hpp \ xercesc/dom/impl/DOMNodeVector.hpp \ xercesc/dom/impl/DOMNormalizer.hpp \ xercesc/dom/impl/DOMNotationImpl.hpp \ xercesc/dom/impl/DOMParentNode.hpp \ xercesc/dom/impl/DOMProcessingInstructionImpl.hpp \ xercesc/dom/impl/DOMRangeImpl.hpp \ xercesc/dom/impl/DOMStringListImpl.hpp \ xercesc/dom/impl/DOMStringPool.hpp \ xercesc/dom/impl/DOMTextImpl.hpp \ xercesc/dom/impl/DOMTreeWalkerImpl.hpp \ xercesc/dom/impl/DOMTypeInfoImpl.hpp \ xercesc/dom/impl/DOMLSSerializerImpl.hpp \ xercesc/dom/impl/DOMLSInputImpl.hpp \ xercesc/dom/impl/DOMLSOutputImpl.hpp \ xercesc/dom/impl/DOMXPathExpressionImpl.hpp \ xercesc/dom/impl/DOMXPathNSResolverImpl.hpp \ xercesc/dom/impl/DOMXPathResultImpl.hpp \ xercesc/dom/impl/XSDElementNSImpl.hpp domimpl_sources = \ xercesc/dom/impl/DOMAttrImpl.cpp \ xercesc/dom/impl/DOMAttrMapImpl.cpp \ xercesc/dom/impl/DOMAttrNSImpl.cpp \ xercesc/dom/impl/DOMCDATASectionImpl.cpp \ xercesc/dom/impl/DOMCharacterDataImpl.cpp \ xercesc/dom/impl/DOMChildNode.cpp \ xercesc/dom/impl/DOMCommentImpl.cpp \ xercesc/dom/impl/DOMConfigurationImpl.cpp \ xercesc/dom/impl/DOMDeepNodeListImpl.cpp \ xercesc/dom/impl/DOMDocumentFragmentImpl.cpp \ xercesc/dom/impl/DOMDocumentImpl.cpp \ xercesc/dom/impl/DOMDocumentTypeImpl.cpp \ xercesc/dom/impl/DOMElementImpl.cpp \ xercesc/dom/impl/DOMElementNSImpl.cpp \ xercesc/dom/impl/DOMEntityImpl.cpp \ xercesc/dom/impl/DOMEntityReferenceImpl.cpp \ xercesc/dom/impl/DOMErrorImpl.cpp \ xercesc/dom/impl/DOMImplementationImpl.cpp \ xercesc/dom/impl/DOMImplementationListImpl.cpp \ xercesc/dom/impl/DOMImplementationRegistry.cpp \ xercesc/dom/impl/DOMLocatorImpl.cpp \ xercesc/dom/impl/DOMNamedNodeMapImpl.cpp \ xercesc/dom/impl/DOMNodeIDMap.cpp \ xercesc/dom/impl/DOMNodeImpl.cpp \ xercesc/dom/impl/DOMNodeIteratorImpl.cpp \ xercesc/dom/impl/DOMNodeListImpl.cpp \ xercesc/dom/impl/DOMNodeVector.cpp \ xercesc/dom/impl/DOMNormalizer.cpp \ xercesc/dom/impl/DOMNotationImpl.cpp \ xercesc/dom/impl/DOMParentNode.cpp \ xercesc/dom/impl/DOMProcessingInstructionImpl.cpp \ xercesc/dom/impl/DOMRangeImpl.cpp \ xercesc/dom/impl/DOMStringListImpl.cpp \ xercesc/dom/impl/DOMStringPool.cpp \ xercesc/dom/impl/DOMTextImpl.cpp \ xercesc/dom/impl/DOMTreeWalkerImpl.cpp \ xercesc/dom/impl/DOMTypeInfoImpl.cpp \ xercesc/dom/impl/DOMLSSerializerImpl.cpp \ xercesc/dom/impl/DOMLSInputImpl.cpp \ xercesc/dom/impl/DOMLSOutputImpl.cpp \ xercesc/dom/impl/DOMXPathExpressionImpl.cpp \ xercesc/dom/impl/DOMXPathNSResolverImpl.cpp \ xercesc/dom/impl/DOMXPathResultImpl.cpp \ xercesc/dom/impl/XSDElementNSImpl.cpp framework_headers = \ xercesc/framework/BinOutputStream.hpp \ xercesc/framework/LocalFileFormatTarget.hpp \ xercesc/framework/LocalFileInputSource.hpp \ xercesc/framework/MemBufFormatTarget.hpp \ xercesc/framework/MemBufInputSource.hpp \ xercesc/framework/MemoryManager.hpp \ xercesc/framework/psvi/PSVIAttribute.hpp \ xercesc/framework/psvi/PSVIAttributeList.hpp \ xercesc/framework/psvi/PSVIElement.hpp \ xercesc/framework/psvi/PSVIHandler.hpp \ xercesc/framework/psvi/PSVIItem.hpp \ xercesc/framework/psvi/XSAnnotation.hpp \ xercesc/framework/psvi/XSAttributeDeclaration.hpp \ xercesc/framework/psvi/XSAttributeGroupDefinition.hpp \ xercesc/framework/psvi/XSAttributeUse.hpp \ xercesc/framework/psvi/XSComplexTypeDefinition.hpp \ xercesc/framework/psvi/XSConstants.hpp \ xercesc/framework/psvi/XSElementDeclaration.hpp \ xercesc/framework/psvi/XSFacet.hpp \ xercesc/framework/psvi/XSIDCDefinition.hpp \ xercesc/framework/psvi/XSModel.hpp \ xercesc/framework/psvi/XSModelGroup.hpp \ xercesc/framework/psvi/XSModelGroupDefinition.hpp \ xercesc/framework/psvi/XSMultiValueFacet.hpp \ xercesc/framework/psvi/XSNamedMap.hpp \ xercesc/framework/psvi/XSNamedMap.c \ xercesc/framework/psvi/XSNamespaceItem.hpp \ xercesc/framework/psvi/XSNotationDeclaration.hpp \ xercesc/framework/psvi/XSObject.hpp \ xercesc/framework/psvi/XSParticle.hpp \ xercesc/framework/psvi/XSSimpleTypeDefinition.hpp \ xercesc/framework/psvi/XSTypeDefinition.hpp \ xercesc/framework/psvi/XSValue.hpp \ xercesc/framework/psvi/XSWildcard.hpp \ xercesc/framework/StdInInputSource.hpp \ xercesc/framework/StdOutFormatTarget.hpp \ xercesc/framework/URLInputSource.hpp \ xercesc/framework/ValidationContext.hpp \ xercesc/framework/Wrapper4DOMLSInput.hpp \ xercesc/framework/Wrapper4InputSource.hpp \ xercesc/framework/XMLAttDef.hpp \ xercesc/framework/XMLAttDefList.hpp \ xercesc/framework/XMLAttr.hpp \ xercesc/framework/XMLBuffer.hpp \ xercesc/framework/XMLBufferMgr.hpp \ xercesc/framework/XMLContentModel.hpp \ xercesc/framework/XMLDocumentHandler.hpp \ xercesc/framework/XMLDTDDescription.hpp \ xercesc/framework/XMLElementDecl.hpp \ xercesc/framework/XMLEntityDecl.hpp \ xercesc/framework/XMLEntityHandler.hpp \ xercesc/framework/XMLErrorCodes.hpp \ xercesc/framework/XMLErrorReporter.hpp \ xercesc/framework/XMLFormatter.hpp \ xercesc/framework/XMLGrammarDescription.hpp \ xercesc/framework/XMLGrammarPool.hpp \ xercesc/framework/XMLGrammarPoolImpl.hpp \ xercesc/framework/XMLNotationDecl.hpp \ xercesc/framework/XMLPScanToken.hpp \ xercesc/framework/XMLRecognizer.hpp \ xercesc/framework/XMLRefInfo.hpp \ xercesc/framework/XMLSchemaDescription.hpp \ xercesc/framework/XMLValidator.hpp \ xercesc/framework/XMLValidityCodes.hpp framework_sources = \ xercesc/framework/BinOutputStream.cpp \ xercesc/framework/LocalFileFormatTarget.cpp \ xercesc/framework/LocalFileInputSource.cpp \ xercesc/framework/MemBufFormatTarget.cpp \ xercesc/framework/MemBufInputSource.cpp \ xercesc/framework/psvi/PSVIAttribute.cpp \ xercesc/framework/psvi/PSVIAttributeList.cpp \ xercesc/framework/psvi/PSVIElement.cpp \ xercesc/framework/psvi/PSVIItem.cpp \ xercesc/framework/psvi/XSAnnotation.cpp \ xercesc/framework/psvi/XSAttributeDeclaration.cpp \ xercesc/framework/psvi/XSAttributeGroupDefinition.cpp \ xercesc/framework/psvi/XSAttributeUse.cpp \ xercesc/framework/psvi/XSComplexTypeDefinition.cpp \ xercesc/framework/psvi/XSElementDeclaration.cpp \ xercesc/framework/psvi/XSFacet.cpp \ xercesc/framework/psvi/XSIDCDefinition.cpp \ xercesc/framework/psvi/XSModel.cpp \ xercesc/framework/psvi/XSModelGroup.cpp \ xercesc/framework/psvi/XSModelGroupDefinition.cpp \ xercesc/framework/psvi/XSMultiValueFacet.cpp \ xercesc/framework/psvi/XSNamespaceItem.cpp \ xercesc/framework/psvi/XSNotationDeclaration.cpp \ xercesc/framework/psvi/XSObject.cpp \ xercesc/framework/psvi/XSParticle.cpp \ xercesc/framework/psvi/XSSimpleTypeDefinition.cpp \ xercesc/framework/psvi/XSTypeDefinition.cpp \ xercesc/framework/psvi/XSValue.cpp \ xercesc/framework/psvi/XSWildcard.cpp \ xercesc/framework/StdInInputSource.cpp \ xercesc/framework/StdOutFormatTarget.cpp \ xercesc/framework/URLInputSource.cpp \ xercesc/framework/Wrapper4DOMLSInput.cpp \ xercesc/framework/Wrapper4InputSource.cpp \ xercesc/framework/XMLAttDef.cpp \ xercesc/framework/XMLAttDefList.cpp \ xercesc/framework/XMLAttr.cpp \ xercesc/framework/XMLBuffer.cpp \ xercesc/framework/XMLBufferMgr.cpp \ xercesc/framework/XMLContentModel.cpp \ xercesc/framework/XMLDTDDescription.cpp \ xercesc/framework/XMLElementDecl.cpp \ xercesc/framework/XMLEntityDecl.cpp \ xercesc/framework/XMLFormatter.cpp \ xercesc/framework/XMLGrammarDescription.cpp \ xercesc/framework/XMLGrammarPoolImpl.cpp \ xercesc/framework/XMLNotationDecl.cpp \ xercesc/framework/XMLRecognizer.cpp \ xercesc/framework/XMLRefInfo.cpp \ xercesc/framework/XMLSchemaDescription.cpp \ xercesc/framework/XMLValidator.cpp internal_headers = \ xercesc/internal/BinFileOutputStream.hpp \ xercesc/internal/BinMemOutputStream.hpp \ xercesc/internal/CharTypeTables.hpp \ xercesc/internal/DGXMLScanner.hpp \ xercesc/internal/ElemStack.hpp \ xercesc/internal/EndOfEntityException.hpp \ xercesc/internal/IANAEncodings.hpp \ xercesc/internal/IGXMLScanner.hpp \ xercesc/internal/MemoryManagerImpl.hpp \ xercesc/internal/ReaderMgr.hpp \ xercesc/internal/SGXMLScanner.hpp \ xercesc/internal/ValidationContextImpl.hpp \ xercesc/internal/VecAttributesImpl.hpp \ xercesc/internal/VecAttrListImpl.hpp \ xercesc/internal/WFXMLScanner.hpp \ xercesc/internal/XMLInternalErrorHandler.hpp \ xercesc/internal/XMLReader.hpp \ xercesc/internal/XMLScanner.hpp \ xercesc/internal/XMLScannerResolver.hpp \ xercesc/internal/XProtoType.hpp \ xercesc/internal/XSAXMLScanner.hpp \ xercesc/internal/XSerializable.hpp \ xercesc/internal/XSerializationException.hpp \ xercesc/internal/XSerializeEngine.hpp \ xercesc/internal/XSObjectFactory.hpp \ xercesc/internal/XTemplateSerializer.hpp internal_sources = \ xercesc/internal/BinFileOutputStream.cpp \ xercesc/internal/BinMemOutputStream.cpp \ xercesc/internal/DGXMLScanner.cpp \ xercesc/internal/ElemStack.cpp \ xercesc/internal/IGXMLScanner.cpp \ xercesc/internal/IGXMLScanner2.cpp \ xercesc/internal/MemoryManagerImpl.cpp \ xercesc/internal/ReaderMgr.cpp \ xercesc/internal/SGXMLScanner.cpp \ xercesc/internal/ValidationContextImpl.cpp \ xercesc/internal/VecAttributesImpl.cpp \ xercesc/internal/VecAttrListImpl.cpp \ xercesc/internal/WFXMLScanner.cpp \ xercesc/internal/XMLReader.cpp \ xercesc/internal/XMLScanner.cpp \ xercesc/internal/XMLScannerResolver.cpp \ xercesc/internal/XProtoType.cpp \ xercesc/internal/XSAXMLScanner.cpp \ xercesc/internal/XSerializeEngine.cpp \ xercesc/internal/XSObjectFactory.cpp \ xercesc/internal/XTemplateSerializer.cpp parsers_headers = \ xercesc/parsers/AbstractDOMParser.hpp \ xercesc/parsers/DOMLSParserImpl.hpp \ xercesc/parsers/SAX2XMLFilterImpl.hpp \ xercesc/parsers/SAX2XMLReaderImpl.hpp \ xercesc/parsers/SAXParser.hpp \ xercesc/parsers/XercesDOMParser.hpp parsers_sources = \ xercesc/parsers/AbstractDOMParser.cpp \ xercesc/parsers/DOMLSParserImpl.cpp \ xercesc/parsers/SAX2XMLFilterImpl.cpp \ xercesc/parsers/SAX2XMLReaderImpl.cpp \ xercesc/parsers/SAXParser.cpp \ xercesc/parsers/XercesDOMParser.cpp sax_headers = \ xercesc/sax/AttributeList.hpp \ xercesc/sax/DocumentHandler.hpp \ xercesc/sax/DTDHandler.hpp \ xercesc/sax/EntityResolver.hpp \ xercesc/sax/ErrorHandler.hpp \ xercesc/sax/HandlerBase.hpp \ xercesc/sax/InputSource.hpp \ xercesc/sax/Locator.hpp \ xercesc/sax/Parser.hpp \ xercesc/sax/SAXException.hpp \ xercesc/sax/SAXParseException.hpp sax_sources = \ xercesc/sax/Dummy.cpp \ xercesc/sax/InputSource.cpp \ xercesc/sax/SAXException.cpp \ xercesc/sax/SAXParseException.cpp sax2_headers = \ xercesc/sax2/Attributes.hpp \ xercesc/sax2/ContentHandler.hpp \ xercesc/sax2/DeclHandler.hpp \ xercesc/sax2/DefaultHandler.hpp \ xercesc/sax2/LexicalHandler.hpp \ xercesc/sax2/SAX2XMLFilter.hpp \ xercesc/sax2/SAX2XMLReader.hpp \ xercesc/sax2/XMLReaderFactory.hpp sax2_sources = \ xercesc/sax2/sax2Dummy.cpp util_headers = \ xercesc/util/ArrayIndexOutOfBoundsException.hpp \ xercesc/util/Base64.hpp \ xercesc/util/BaseRefVectorOf.hpp \ xercesc/util/BaseRefVectorOf.c \ xercesc/util/BinFileInputStream.hpp \ xercesc/util/BinInputStream.hpp \ xercesc/util/BinMemInputStream.hpp \ xercesc/util/BitOps.hpp \ xercesc/util/BitSet.hpp \ xercesc/util/CountedPointer.hpp \ xercesc/util/CountedPointer.c \ xercesc/util/DefaultPanicHandler.hpp \ xercesc/util/EmptyStackException.hpp \ xercesc/util/EncodingValidator.hpp \ xercesc/util/FlagJanitor.hpp \ xercesc/util/FlagJanitor.c \ xercesc/util/Hashers.hpp \ xercesc/util/Hash2KeysSetOf.hpp \ xercesc/util/Hash2KeysSetOf.c \ xercesc/util/HexBin.hpp \ xercesc/util/IllegalArgumentException.hpp \ xercesc/util/InvalidCastException.hpp \ xercesc/util/IOException.hpp \ xercesc/util/Janitor.hpp \ xercesc/util/Janitor.c \ xercesc/util/KeyRefPair.hpp \ xercesc/util/KeyRefPair.c \ xercesc/util/KeyValuePair.hpp \ xercesc/util/KeyValuePair.c \ xercesc/util/KVStringPair.hpp \ xercesc/util/Mutexes.hpp \ xercesc/util/LogicalPath.c \ xercesc/util/NameIdPool.hpp \ xercesc/util/NameIdPool.c \ xercesc/util/NoSuchElementException.hpp \ xercesc/util/NullPointerException.hpp \ xercesc/util/NumberFormatException.hpp \ xercesc/util/OutOfMemoryException.hpp \ xercesc/util/PanicHandler.hpp \ xercesc/util/ParseException.hpp \ xercesc/util/PlatformUtils.hpp \ xercesc/util/PSVIUni.hpp \ xercesc/util/QName.hpp \ xercesc/util/RefArrayOf.hpp \ xercesc/util/RefArrayOf.c \ xercesc/util/RefArrayVectorOf.hpp \ xercesc/util/RefArrayVectorOf.c \ xercesc/util/RefHash2KeysTableOf.hpp \ xercesc/util/RefHash2KeysTableOf.c \ xercesc/util/RefHash3KeysIdPool.hpp \ xercesc/util/RefHash3KeysIdPool.c \ xercesc/util/RefHashTableOf.hpp \ xercesc/util/RefHashTableOf.c \ xercesc/util/RefStackOf.hpp \ xercesc/util/RefStackOf.c \ xercesc/util/RefVectorOf.hpp \ xercesc/util/RefVectorOf.c \ xercesc/util/regx/ASCIIRangeFactory.hpp \ xercesc/util/regx/BlockRangeFactory.hpp \ xercesc/util/regx/BMPattern.hpp \ xercesc/util/regx/CharToken.hpp \ xercesc/util/regx/ClosureToken.hpp \ xercesc/util/regx/ConcatToken.hpp \ xercesc/util/regx/Match.hpp \ xercesc/util/regx/Op.hpp \ xercesc/util/regx/OpFactory.hpp \ xercesc/util/regx/ParenToken.hpp \ xercesc/util/regx/ParserForXMLSchema.hpp \ xercesc/util/regx/RangeFactory.hpp \ xercesc/util/regx/RangeToken.hpp \ xercesc/util/regx/RangeTokenMap.hpp \ xercesc/util/regx/RegularExpression.hpp \ xercesc/util/regx/RegxDefs.hpp \ xercesc/util/regx/RegxParser.hpp \ xercesc/util/regx/RegxUtil.hpp \ xercesc/util/regx/StringToken.hpp \ xercesc/util/regx/Token.hpp \ xercesc/util/regx/TokenFactory.hpp \ xercesc/util/regx/TokenInc.hpp \ xercesc/util/regx/UniCharTable.hpp \ xercesc/util/regx/UnicodeRangeFactory.hpp \ xercesc/util/regx/UnionToken.hpp \ xercesc/util/regx/XMLRangeFactory.hpp \ xercesc/util/regx/XMLUniCharacter.hpp \ xercesc/util/RuntimeException.hpp \ xercesc/util/SchemaDateTimeException.hpp \ xercesc/util/SecurityManager.hpp \ xercesc/util/StringPool.hpp \ xercesc/util/SynchronizedStringPool.hpp \ xercesc/util/TranscodingException.hpp \ xercesc/util/TransENameMap.hpp \ xercesc/util/TransENameMap.c \ xercesc/util/TransService.hpp \ xercesc/util/UnexpectedEOFException.hpp \ xercesc/util/UnsupportedEncodingException.hpp \ xercesc/util/UTFDataFormatException.hpp \ xercesc/util/ValueArrayOf.hpp \ xercesc/util/ValueArrayOf.c \ xercesc/util/ValueHashTableOf.hpp \ xercesc/util/ValueHashTableOf.c \ xercesc/util/ValueStackOf.hpp \ xercesc/util/ValueStackOf.c \ xercesc/util/ValueVectorOf.hpp \ xercesc/util/ValueVectorOf.c \ xercesc/util/XercesDefs.hpp \ xercesc/util/XercesVersion.hpp \ xercesc/util/XMemory.hpp \ xercesc/util/XML256TableTranscoder.hpp \ xercesc/util/XML88591Transcoder.hpp \ xercesc/util/XMLAbstractDoubleFloat.hpp \ xercesc/util/XMLASCIITranscoder.hpp \ xercesc/util/XMLBigDecimal.hpp \ xercesc/util/XMLBigInteger.hpp \ xercesc/util/XMLChar.hpp \ xercesc/util/XMLChTranscoder.hpp \ xercesc/util/XMLDateTime.hpp \ xercesc/util/XMLDOMMsg.hpp \ xercesc/util/XMLDouble.hpp \ xercesc/util/XMLEBCDICTranscoder.hpp \ xercesc/util/XMLEntityResolver.hpp \ xercesc/util/XMLEnumerator.hpp \ xercesc/util/XMLException.hpp \ xercesc/util/XMLExceptMsgs.hpp \ xercesc/util/XMLFileMgr.hpp \ xercesc/util/XMLFloat.hpp \ xercesc/util/XMLIBM1047Transcoder.hpp \ xercesc/util/XMLIBM1140Transcoder.hpp \ xercesc/util/XMLInitializer.hpp \ xercesc/util/XMLInteger.hpp \ xercesc/util/XMLMutexMgr.hpp \ xercesc/util/XMLMsgLoader.hpp \ xercesc/util/XMLNetAccessor.hpp \ xercesc/util/XMLNumber.hpp \ xercesc/util/XMLResourceIdentifier.hpp \ xercesc/util/XMLString.hpp \ xercesc/util/XMLStringTokenizer.hpp \ xercesc/util/XMLUCS4Transcoder.hpp \ xercesc/util/XMLUni.hpp \ xercesc/util/XMLUniDefs.hpp \ xercesc/util/XMLUri.hpp \ xercesc/util/XMLURL.hpp \ xercesc/util/XMLUTF16Transcoder.hpp \ xercesc/util/XMLUTF8Transcoder.hpp \ xercesc/util/XMLWin1252Transcoder.hpp util_sources = \ xercesc/util/Base64.cpp \ xercesc/util/BinFileInputStream.cpp \ xercesc/util/BinInputStream.cpp \ xercesc/util/BinMemInputStream.cpp \ xercesc/util/BitSet.cpp \ xercesc/util/DefaultPanicHandler.cpp \ xercesc/util/EncodingValidator.cpp \ xercesc/util/HeaderDummy.cpp \ xercesc/util/HexBin.cpp \ xercesc/util/KVStringPair.cpp \ xercesc/util/Mutexes.cpp \ xercesc/util/PanicHandler.cpp \ xercesc/util/PlatformUtils.cpp \ xercesc/util/PSVIUni.cpp \ xercesc/util/QName.cpp \ xercesc/util/regx/ASCIIRangeFactory.cpp \ xercesc/util/regx/BlockRangeFactory.cpp \ xercesc/util/regx/BMPattern.cpp \ xercesc/util/regx/CharToken.cpp \ xercesc/util/regx/ClosureToken.cpp \ xercesc/util/regx/ConcatToken.cpp \ xercesc/util/regx/Match.cpp \ xercesc/util/regx/Op.cpp \ xercesc/util/regx/OpFactory.cpp \ xercesc/util/regx/ParenToken.cpp \ xercesc/util/regx/ParserForXMLSchema.cpp \ xercesc/util/regx/RangeFactory.cpp \ xercesc/util/regx/RangeToken.cpp \ xercesc/util/regx/RangeTokenMap.cpp \ xercesc/util/regx/RegularExpression.cpp \ xercesc/util/regx/RegxParser.cpp \ xercesc/util/regx/RegxUtil.cpp \ xercesc/util/regx/StringToken.cpp \ xercesc/util/regx/Token.cpp \ xercesc/util/regx/TokenFactory.cpp \ xercesc/util/regx/UnicodeRangeFactory.cpp \ xercesc/util/regx/UnionToken.cpp \ xercesc/util/regx/XMLRangeFactory.cpp \ xercesc/util/regx/XMLUniCharacter.cpp \ xercesc/util/StringPool.cpp \ xercesc/util/SynchronizedStringPool.cpp \ xercesc/util/TransService.cpp \ xercesc/util/XMemory.cpp \ xercesc/util/XML256TableTranscoder.cpp \ xercesc/util/XML88591Transcoder.cpp \ xercesc/util/XMLAbstractDoubleFloat.cpp \ xercesc/util/XMLASCIITranscoder.cpp \ xercesc/util/XMLBigDecimal.cpp \ xercesc/util/XMLBigInteger.cpp \ xercesc/util/XMLChar.cpp \ xercesc/util/XMLChTranscoder.cpp \ xercesc/util/XMLDateTime.cpp \ xercesc/util/XMLDouble.cpp \ xercesc/util/XMLEBCDICTranscoder.cpp \ xercesc/util/XMLException.cpp \ xercesc/util/XMLFloat.cpp \ xercesc/util/XMLIBM1047Transcoder.cpp \ xercesc/util/XMLIBM1140Transcoder.cpp \ xercesc/util/XMLInitializer.cpp \ xercesc/util/XMLMsgLoader.cpp \ xercesc/util/XMLNumber.cpp \ xercesc/util/XMLString.cpp \ xercesc/util/XMLStringTokenizer.cpp \ xercesc/util/XMLUCS4Transcoder.cpp \ xercesc/util/XMLUni.cpp \ xercesc/util/XMLUri.cpp \ xercesc/util/XMLURL.cpp \ xercesc/util/XMLUTF16Transcoder.cpp \ xercesc/util/XMLUTF8Transcoder.cpp \ xercesc/util/XMLWin1252Transcoder.cpp validators_headers = \ xercesc/validators/common/AllContentModel.hpp \ xercesc/validators/common/CMAny.hpp \ xercesc/validators/common/CMBinaryOp.hpp \ xercesc/validators/common/CMLeaf.hpp \ xercesc/validators/common/CMRepeatingLeaf.hpp \ xercesc/validators/common/CMNode.hpp \ xercesc/validators/common/CMStateSet.hpp \ xercesc/validators/common/CMUnaryOp.hpp \ xercesc/validators/common/ContentLeafNameTypeVector.hpp \ xercesc/validators/common/ContentSpecNode.hpp \ xercesc/validators/common/DFAContentModel.hpp \ xercesc/validators/common/Grammar.hpp \ xercesc/validators/common/GrammarResolver.hpp \ xercesc/validators/common/MixedContentModel.hpp \ xercesc/validators/common/SimpleContentModel.hpp \ xercesc/validators/datatype/AbstractNumericFacetValidator.hpp \ xercesc/validators/datatype/AbstractNumericValidator.hpp \ xercesc/validators/datatype/AbstractStringValidator.hpp \ xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.hpp \ xercesc/validators/datatype/AnyURIDatatypeValidator.hpp \ xercesc/validators/datatype/Base64BinaryDatatypeValidator.hpp \ xercesc/validators/datatype/BooleanDatatypeValidator.hpp \ xercesc/validators/datatype/DatatypeValidator.hpp \ xercesc/validators/datatype/DatatypeValidatorFactory.hpp \ xercesc/validators/datatype/DateDatatypeValidator.hpp \ xercesc/validators/datatype/DateTimeDatatypeValidator.hpp \ xercesc/validators/datatype/DateTimeValidator.hpp \ xercesc/validators/datatype/DayDatatypeValidator.hpp \ xercesc/validators/datatype/DecimalDatatypeValidator.hpp \ xercesc/validators/datatype/DoubleDatatypeValidator.hpp \ xercesc/validators/datatype/DurationDatatypeValidator.hpp \ xercesc/validators/datatype/ENTITYDatatypeValidator.hpp \ xercesc/validators/datatype/FloatDatatypeValidator.hpp \ xercesc/validators/datatype/HexBinaryDatatypeValidator.hpp \ xercesc/validators/datatype/IDDatatypeValidator.hpp \ xercesc/validators/datatype/IDREFDatatypeValidator.hpp \ xercesc/validators/datatype/InvalidDatatypeFacetException.hpp \ xercesc/validators/datatype/InvalidDatatypeValueException.hpp \ xercesc/validators/datatype/ListDatatypeValidator.hpp \ xercesc/validators/datatype/MonthDatatypeValidator.hpp \ xercesc/validators/datatype/MonthDayDatatypeValidator.hpp \ xercesc/validators/datatype/NameDatatypeValidator.hpp \ xercesc/validators/datatype/NCNameDatatypeValidator.hpp \ xercesc/validators/datatype/NOTATIONDatatypeValidator.hpp \ xercesc/validators/datatype/QNameDatatypeValidator.hpp \ xercesc/validators/datatype/StringDatatypeValidator.hpp \ xercesc/validators/datatype/TimeDatatypeValidator.hpp \ xercesc/validators/datatype/UnionDatatypeValidator.hpp \ xercesc/validators/datatype/XMLCanRepGroup.hpp \ xercesc/validators/datatype/YearDatatypeValidator.hpp \ xercesc/validators/datatype/YearMonthDatatypeValidator.hpp \ xercesc/validators/DTD/DocTypeHandler.hpp \ xercesc/validators/DTD/DTDAttDef.hpp \ xercesc/validators/DTD/DTDAttDefList.hpp \ xercesc/validators/DTD/DTDElementDecl.hpp \ xercesc/validators/DTD/DTDEntityDecl.hpp \ xercesc/validators/DTD/DTDGrammar.hpp \ xercesc/validators/DTD/DTDScanner.hpp \ xercesc/validators/DTD/DTDValidator.hpp \ xercesc/validators/DTD/XMLDTDDescriptionImpl.hpp \ xercesc/validators/schema/ComplexTypeInfo.hpp \ xercesc/validators/schema/GeneralAttributeCheck.hpp \ xercesc/validators/schema/identity/FieldActivator.hpp \ xercesc/validators/schema/identity/FieldValueMap.hpp \ xercesc/validators/schema/identity/IC_Field.hpp \ xercesc/validators/schema/identity/IC_Key.hpp \ xercesc/validators/schema/identity/IC_KeyRef.hpp \ xercesc/validators/schema/identity/IC_Selector.hpp \ xercesc/validators/schema/identity/IC_Unique.hpp \ xercesc/validators/schema/identity/IdentityConstraint.hpp \ xercesc/validators/schema/identity/IdentityConstraintHandler.hpp \ xercesc/validators/schema/identity/ValueStore.hpp \ xercesc/validators/schema/identity/ValueStoreCache.hpp \ xercesc/validators/schema/identity/XercesXPath.hpp \ xercesc/validators/schema/identity/XPathException.hpp \ xercesc/validators/schema/identity/XPathMatcher.hpp \ xercesc/validators/schema/identity/XPathMatcherStack.hpp \ xercesc/validators/schema/identity/XPathSymbols.hpp \ xercesc/validators/schema/NamespaceScope.hpp \ xercesc/validators/schema/PSVIDefs.hpp \ xercesc/validators/schema/SchemaAttDef.hpp \ xercesc/validators/schema/SchemaAttDefList.hpp \ xercesc/validators/schema/SchemaElementDecl.hpp \ xercesc/validators/schema/SchemaGrammar.hpp \ xercesc/validators/schema/SchemaInfo.hpp \ xercesc/validators/schema/SchemaSymbols.hpp \ xercesc/validators/schema/SchemaValidator.hpp \ xercesc/validators/schema/SubstitutionGroupComparator.hpp \ xercesc/validators/schema/TraverseSchema.hpp \ xercesc/validators/schema/XercesAttGroupInfo.hpp \ xercesc/validators/schema/XercesElementWildcard.hpp \ xercesc/validators/schema/XercesGroupInfo.hpp \ xercesc/validators/schema/XMLSchemaDescriptionImpl.hpp \ xercesc/validators/schema/XSDDOMParser.hpp \ xercesc/validators/schema/XSDErrorReporter.hpp \ xercesc/validators/schema/XSDLocator.hpp \ xercesc/validators/schema/XUtil.hpp validators_sources = \ xercesc/validators/common/AllContentModel.cpp \ xercesc/validators/common/CMAny.cpp \ xercesc/validators/common/CMBinaryOp.cpp \ xercesc/validators/common/CMUnaryOp.cpp \ xercesc/validators/common/ContentLeafNameTypeVector.cpp \ xercesc/validators/common/ContentSpecNode.cpp \ xercesc/validators/common/DFAContentModel.cpp \ xercesc/validators/common/Grammar.cpp \ xercesc/validators/common/GrammarResolver.cpp \ xercesc/validators/common/MixedContentModel.cpp \ xercesc/validators/common/SimpleContentModel.cpp \ xercesc/validators/datatype/AbstractNumericFacetValidator.cpp \ xercesc/validators/datatype/AbstractNumericValidator.cpp \ xercesc/validators/datatype/AbstractStringValidator.cpp \ xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.cpp \ xercesc/validators/datatype/AnyURIDatatypeValidator.cpp \ xercesc/validators/datatype/Base64BinaryDatatypeValidator.cpp \ xercesc/validators/datatype/BooleanDatatypeValidator.cpp \ xercesc/validators/datatype/DatatypeValidator.cpp \ xercesc/validators/datatype/DatatypeValidatorFactory.cpp \ xercesc/validators/datatype/DateDatatypeValidator.cpp \ xercesc/validators/datatype/DateTimeDatatypeValidator.cpp \ xercesc/validators/datatype/DateTimeValidator.cpp \ xercesc/validators/datatype/DayDatatypeValidator.cpp \ xercesc/validators/datatype/DecimalDatatypeValidator.cpp \ xercesc/validators/datatype/DoubleDatatypeValidator.cpp \ xercesc/validators/datatype/DurationDatatypeValidator.cpp \ xercesc/validators/datatype/ENTITYDatatypeValidator.cpp \ xercesc/validators/datatype/FloatDatatypeValidator.cpp \ xercesc/validators/datatype/HexBinaryDatatypeValidator.cpp \ xercesc/validators/datatype/IDDatatypeValidator.cpp \ xercesc/validators/datatype/IDREFDatatypeValidator.cpp \ xercesc/validators/datatype/ListDatatypeValidator.cpp \ xercesc/validators/datatype/MonthDatatypeValidator.cpp \ xercesc/validators/datatype/MonthDayDatatypeValidator.cpp \ xercesc/validators/datatype/NameDatatypeValidator.cpp \ xercesc/validators/datatype/NCNameDatatypeValidator.cpp \ xercesc/validators/datatype/NOTATIONDatatypeValidator.cpp \ xercesc/validators/datatype/QNameDatatypeValidator.cpp \ xercesc/validators/datatype/StringDatatypeValidator.cpp \ xercesc/validators/datatype/TimeDatatypeValidator.cpp \ xercesc/validators/datatype/UnionDatatypeValidator.cpp \ xercesc/validators/datatype/XMLCanRepGroup.cpp \ xercesc/validators/datatype/YearDatatypeValidator.cpp \ xercesc/validators/datatype/YearMonthDatatypeValidator.cpp \ xercesc/validators/DTD/DTDAttDef.cpp \ xercesc/validators/DTD/DTDAttDefList.cpp \ xercesc/validators/DTD/DTDElementDecl.cpp \ xercesc/validators/DTD/DTDEntityDecl.cpp \ xercesc/validators/DTD/DTDGrammar.cpp \ xercesc/validators/DTD/DTDScanner.cpp \ xercesc/validators/DTD/DTDValidator.cpp \ xercesc/validators/DTD/XMLDTDDescriptionImpl.cpp \ xercesc/validators/schema/ComplexTypeInfo.cpp \ xercesc/validators/schema/GeneralAttributeCheck.cpp \ xercesc/validators/schema/identity/FieldActivator.cpp \ xercesc/validators/schema/identity/FieldValueMap.cpp \ xercesc/validators/schema/identity/IC_Field.cpp \ xercesc/validators/schema/identity/IC_Key.cpp \ xercesc/validators/schema/identity/IC_KeyRef.cpp \ xercesc/validators/schema/identity/IC_Selector.cpp \ xercesc/validators/schema/identity/IC_Unique.cpp \ xercesc/validators/schema/identity/IdentityConstraint.cpp \ xercesc/validators/schema/identity/IdentityConstraintHandler.cpp \ xercesc/validators/schema/identity/ValueStore.cpp \ xercesc/validators/schema/identity/ValueStoreCache.cpp \ xercesc/validators/schema/identity/XercesXPath.cpp \ xercesc/validators/schema/identity/XPathMatcher.cpp \ xercesc/validators/schema/identity/XPathMatcherStack.cpp \ xercesc/validators/schema/identity/XPathSymbols.cpp \ xercesc/validators/schema/NamespaceScope.cpp \ xercesc/validators/schema/SchemaAttDef.cpp \ xercesc/validators/schema/SchemaAttDefList.cpp \ xercesc/validators/schema/SchemaElementDecl.cpp \ xercesc/validators/schema/SchemaGrammar.cpp \ xercesc/validators/schema/SchemaInfo.cpp \ xercesc/validators/schema/SchemaSymbols.cpp \ xercesc/validators/schema/SchemaValidator.cpp \ xercesc/validators/schema/SubstitutionGroupComparator.cpp \ xercesc/validators/schema/TraverseSchema.cpp \ xercesc/validators/schema/XercesAttGroupInfo.cpp \ xercesc/validators/schema/XercesElementWildcard.cpp \ xercesc/validators/schema/XercesGroupInfo.cpp \ xercesc/validators/schema/XMLSchemaDescriptionImpl.cpp \ xercesc/validators/schema/XSDDOMParser.cpp \ xercesc/validators/schema/XSDErrorReporter.cpp \ xercesc/validators/schema/XSDLocator.cpp \ xercesc/validators/schema/XUtil.cpp xinclude_headers = \ xercesc/xinclude/XIncludeDOMDocumentProcessor.hpp \ xercesc/xinclude/XIncludeLocation.hpp \ xercesc/xinclude/XIncludeUtils.hpp xinclude_sources = \ xercesc/xinclude/XIncludeDOMDocumentProcessor.cpp \ xercesc/xinclude/XIncludeLocation.cpp \ xercesc/xinclude/XIncludeUtils.cpp icu_headers = \ xercesc/util/Transcoders/ICU/ICUTransService.hpp icu_sources = \ xercesc/util/Transcoders/ICU/ICUTransService.cpp gnuiconv_headers = \ xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.hpp gnuiconv_sources = \ xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.cpp iconv_headers = \ xercesc/util/Transcoders/Iconv/IconvTransService.hpp iconv_sources = \ xercesc/util/Transcoders/Iconv/IconvTransService.cpp macosunicodeconverter_headers = \ xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.hpp macosunicodeconverter_sources = \ xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.cpp wintrans_headers = \ xercesc/util/Transcoders/Win32/Win32TransService.hpp wintrans_sources = \ xercesc/util/Transcoders/Win32/Win32TransService.cpp curl_headers = \ xercesc/util/NetAccessors/Curl/CurlNetAccessor.hpp \ xercesc/util/NetAccessors/Curl/CurlURLInputStream.hpp curl_sources = \ xercesc/util/NetAccessors/Curl/CurlNetAccessor.cpp \ xercesc/util/NetAccessors/Curl/CurlURLInputStream.cpp sockets_headers = \ xercesc/util/NetAccessors/Socket/SocketNetAccessor.hpp \ xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.hpp \ xercesc/util/NetAccessors/BinHTTPInputStreamCommon.hpp sockets_sources = \ xercesc/util/NetAccessors/Socket/SocketNetAccessor.cpp \ xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.cpp \ xercesc/util/NetAccessors/BinHTTPInputStreamCommon.cpp cfurl_headers = \ xercesc/util/NetAccessors/MacOSURLAccessCF/MacOSURLAccessCF.hpp \ xercesc/util/NetAccessors/MacOSURLAccessCF/URLAccessCFBinInputStream.hpp cfurl_sources = \ xercesc/util/NetAccessors/MacOSURLAccessCF/MacOSURLAccessCF.cpp \ xercesc/util/NetAccessors/MacOSURLAccessCF/URLAccessCFBinInputStream.cpp winsock_headers = \ xercesc/util/NetAccessors/WinSock/WinSockNetAccessor.hpp \ xercesc/util/NetAccessors/WinSock/BinHTTPURLInputStream.hpp \ xercesc/util/NetAccessors/BinHTTPInputStreamCommon.hpp winsock_sources = \ xercesc/util/NetAccessors/WinSock/WinSockNetAccessor.cpp \ xercesc/util/NetAccessors/WinSock/BinHTTPURLInputStream.cpp \ xercesc/util/NetAccessors/BinHTTPInputStreamCommon.cpp msginmemory_headers = \ xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.hpp \ xercesc/util/MsgLoaders/InMemory/XercesMessages_en_US.hpp msginmemory_sources = \ xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.cpp msgicu_headers = \ xercesc/util/MsgLoaders/ICU/ICUMsgLoader.hpp msgicu_sources = \ xercesc/util/MsgLoaders/ICU/ICUMsgLoader.cpp msgicu_nodist_sources = \ xercesc_messages.c \ root_res.c msgiconv_headers = \ xercesc/util/MsgLoaders/MsgCatalog/MsgCatalogLoader.hpp \ xercesc/util/MsgLoaders/MsgCatalog/XMLMsgCat_Ids.hpp msgiconv_sources = \ xercesc/util/MsgLoaders/MsgCatalog/MsgCatalogLoader.cpp posixfmgr_headers = \ xercesc/util/FileManagers/PosixFileMgr.hpp posixfmgr_sources = \ xercesc/util/FileManagers/PosixFileMgr.cpp winfmgr_headers = \ xercesc/util/FileManagers/WindowsFileMgr.hpp winfmgr_sources = \ xercesc/util/FileManagers/WindowsFileMgr.cpp nothreadmmgr_headers = \ xercesc/util/MutexManagers/NoThreadMutexMgr.hpp nothreadmmgr_sources = \ xercesc/util/MutexManagers/NoThreadMutexMgr.cpp posixmmgr_headers = \ xercesc/util/MutexManagers/PosixMutexMgr.hpp posixmmgr_sources = \ xercesc/util/MutexManagers/PosixMutexMgr.cpp winmmgr_headers = \ xercesc/util/MutexManagers/WindowsMutexMgr.hpp winmmgr_sources = \ xercesc/util/MutexManagers/WindowsMutexMgr.cpp @XERCES_PRETTY_MAKE_TRUE@PRETTY_MAKE = ${top_srcdir}/config/pretty-make @XERCES_PRETTY_MAKE_TRUE@PRETTY_COMPILE = ${PRETTY_MAKE} Compiling COMPILE = ${PRETTY_COMPILE} \ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = ${PRETTY_COMPILE} \ $(LIBTOOL) --quiet --tag=CC --mode=compile \ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CXXCOMPILE = ${PRETTY_COMPILE} \ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = ${PRETTY_COMPILE} \ $(LIBTOOL) --quiet --tag=CXX --mode=compile \ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: .SUFFIXES: .c .cpp .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(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'; \ $(am__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: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ 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 xercesc/util/$(am__dirstamp): @$(MKDIR_P) xercesc/util @: > xercesc/util/$(am__dirstamp) xercesc/util/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) xercesc/util/$(DEPDIR) @: > xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/Base64.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/BinFileInputStream.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/BinInputStream.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/BinMemInputStream.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/BitSet.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/DefaultPanicHandler.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/EncodingValidator.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/HeaderDummy.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/HexBin.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/KVStringPair.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/Mutexes.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/PanicHandler.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/PlatformUtils.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/PSVIUni.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/QName.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/regx/$(am__dirstamp): @$(MKDIR_P) xercesc/util/regx @: > xercesc/util/regx/$(am__dirstamp) xercesc/util/regx/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) xercesc/util/regx/$(DEPDIR) @: > xercesc/util/regx/$(DEPDIR)/$(am__dirstamp) xercesc/util/regx/ASCIIRangeFactory.lo: \ xercesc/util/regx/$(am__dirstamp) \ xercesc/util/regx/$(DEPDIR)/$(am__dirstamp) xercesc/util/regx/BlockRangeFactory.lo: \ xercesc/util/regx/$(am__dirstamp) \ xercesc/util/regx/$(DEPDIR)/$(am__dirstamp) xercesc/util/regx/BMPattern.lo: xercesc/util/regx/$(am__dirstamp) \ xercesc/util/regx/$(DEPDIR)/$(am__dirstamp) xercesc/util/regx/CharToken.lo: xercesc/util/regx/$(am__dirstamp) \ xercesc/util/regx/$(DEPDIR)/$(am__dirstamp) xercesc/util/regx/ClosureToken.lo: xercesc/util/regx/$(am__dirstamp) \ xercesc/util/regx/$(DEPDIR)/$(am__dirstamp) xercesc/util/regx/ConcatToken.lo: xercesc/util/regx/$(am__dirstamp) \ xercesc/util/regx/$(DEPDIR)/$(am__dirstamp) xercesc/util/regx/Match.lo: xercesc/util/regx/$(am__dirstamp) \ xercesc/util/regx/$(DEPDIR)/$(am__dirstamp) xercesc/util/regx/Op.lo: xercesc/util/regx/$(am__dirstamp) \ xercesc/util/regx/$(DEPDIR)/$(am__dirstamp) xercesc/util/regx/OpFactory.lo: xercesc/util/regx/$(am__dirstamp) \ xercesc/util/regx/$(DEPDIR)/$(am__dirstamp) xercesc/util/regx/ParenToken.lo: xercesc/util/regx/$(am__dirstamp) \ xercesc/util/regx/$(DEPDIR)/$(am__dirstamp) xercesc/util/regx/ParserForXMLSchema.lo: \ xercesc/util/regx/$(am__dirstamp) \ xercesc/util/regx/$(DEPDIR)/$(am__dirstamp) xercesc/util/regx/RangeFactory.lo: xercesc/util/regx/$(am__dirstamp) \ xercesc/util/regx/$(DEPDIR)/$(am__dirstamp) xercesc/util/regx/RangeToken.lo: xercesc/util/regx/$(am__dirstamp) \ xercesc/util/regx/$(DEPDIR)/$(am__dirstamp) xercesc/util/regx/RangeTokenMap.lo: xercesc/util/regx/$(am__dirstamp) \ xercesc/util/regx/$(DEPDIR)/$(am__dirstamp) xercesc/util/regx/RegularExpression.lo: \ xercesc/util/regx/$(am__dirstamp) \ xercesc/util/regx/$(DEPDIR)/$(am__dirstamp) xercesc/util/regx/RegxParser.lo: xercesc/util/regx/$(am__dirstamp) \ xercesc/util/regx/$(DEPDIR)/$(am__dirstamp) xercesc/util/regx/RegxUtil.lo: xercesc/util/regx/$(am__dirstamp) \ xercesc/util/regx/$(DEPDIR)/$(am__dirstamp) xercesc/util/regx/StringToken.lo: xercesc/util/regx/$(am__dirstamp) \ xercesc/util/regx/$(DEPDIR)/$(am__dirstamp) xercesc/util/regx/Token.lo: xercesc/util/regx/$(am__dirstamp) \ xercesc/util/regx/$(DEPDIR)/$(am__dirstamp) xercesc/util/regx/TokenFactory.lo: xercesc/util/regx/$(am__dirstamp) \ xercesc/util/regx/$(DEPDIR)/$(am__dirstamp) xercesc/util/regx/UnicodeRangeFactory.lo: \ xercesc/util/regx/$(am__dirstamp) \ xercesc/util/regx/$(DEPDIR)/$(am__dirstamp) xercesc/util/regx/UnionToken.lo: xercesc/util/regx/$(am__dirstamp) \ xercesc/util/regx/$(DEPDIR)/$(am__dirstamp) xercesc/util/regx/XMLRangeFactory.lo: \ xercesc/util/regx/$(am__dirstamp) \ xercesc/util/regx/$(DEPDIR)/$(am__dirstamp) xercesc/util/regx/XMLUniCharacter.lo: \ xercesc/util/regx/$(am__dirstamp) \ xercesc/util/regx/$(DEPDIR)/$(am__dirstamp) xercesc/util/StringPool.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/SynchronizedStringPool.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/TransService.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/XMemory.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/XML256TableTranscoder.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/XML88591Transcoder.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/XMLAbstractDoubleFloat.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/XMLASCIITranscoder.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/XMLBigDecimal.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/XMLBigInteger.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/XMLChar.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/XMLChTranscoder.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/XMLDateTime.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/XMLDouble.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/XMLEBCDICTranscoder.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/XMLException.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/XMLFloat.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/XMLIBM1047Transcoder.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/XMLIBM1140Transcoder.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/XMLInitializer.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/XMLMsgLoader.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/XMLNumber.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/XMLString.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/XMLStringTokenizer.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/XMLUCS4Transcoder.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/XMLUni.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/XMLUri.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/XMLURL.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/XMLUTF16Transcoder.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/XMLUTF8Transcoder.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/util/XMLWin1252Transcoder.lo: xercesc/util/$(am__dirstamp) \ xercesc/util/$(DEPDIR)/$(am__dirstamp) xercesc/dom/$(am__dirstamp): @$(MKDIR_P) xercesc/dom @: > xercesc/dom/$(am__dirstamp) xercesc/dom/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) xercesc/dom/$(DEPDIR) @: > xercesc/dom/$(DEPDIR)/$(am__dirstamp) xercesc/dom/DOMException.lo: xercesc/dom/$(am__dirstamp) \ xercesc/dom/$(DEPDIR)/$(am__dirstamp) xercesc/dom/DOMLSException.lo: xercesc/dom/$(am__dirstamp) \ xercesc/dom/$(DEPDIR)/$(am__dirstamp) xercesc/dom/DOMRangeException.lo: xercesc/dom/$(am__dirstamp) \ xercesc/dom/$(DEPDIR)/$(am__dirstamp) xercesc/dom/DOMXPathException.lo: xercesc/dom/$(am__dirstamp) \ xercesc/dom/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/$(am__dirstamp): @$(MKDIR_P) xercesc/dom/impl @: > xercesc/dom/impl/$(am__dirstamp) xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) xercesc/dom/impl/$(DEPDIR) @: > xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMAttrImpl.lo: xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMAttrMapImpl.lo: xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMAttrNSImpl.lo: xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMCDATASectionImpl.lo: \ xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMCharacterDataImpl.lo: \ xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMChildNode.lo: xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMCommentImpl.lo: xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMConfigurationImpl.lo: \ xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMDeepNodeListImpl.lo: \ xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMDocumentFragmentImpl.lo: \ xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMDocumentImpl.lo: xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMDocumentTypeImpl.lo: \ xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMElementImpl.lo: xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMElementNSImpl.lo: \ xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMEntityImpl.lo: xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMEntityReferenceImpl.lo: \ xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMErrorImpl.lo: xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMImplementationImpl.lo: \ xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMImplementationListImpl.lo: \ xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMImplementationRegistry.lo: \ xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMLocatorImpl.lo: xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMNamedNodeMapImpl.lo: \ xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMNodeIDMap.lo: xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMNodeImpl.lo: xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMNodeIteratorImpl.lo: \ xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMNodeListImpl.lo: xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMNodeVector.lo: xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMNormalizer.lo: xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMNotationImpl.lo: xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMParentNode.lo: xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMProcessingInstructionImpl.lo: \ xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMRangeImpl.lo: xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMStringListImpl.lo: \ xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMStringPool.lo: xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMTextImpl.lo: xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMTreeWalkerImpl.lo: \ xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMTypeInfoImpl.lo: xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMLSSerializerImpl.lo: \ xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMLSInputImpl.lo: xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMLSOutputImpl.lo: xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMXPathExpressionImpl.lo: \ xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMXPathNSResolverImpl.lo: \ xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/DOMXPathResultImpl.lo: \ xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/dom/impl/XSDElementNSImpl.lo: \ xercesc/dom/impl/$(am__dirstamp) \ xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) xercesc/framework/$(am__dirstamp): @$(MKDIR_P) xercesc/framework @: > xercesc/framework/$(am__dirstamp) xercesc/framework/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) xercesc/framework/$(DEPDIR) @: > xercesc/framework/$(DEPDIR)/$(am__dirstamp) xercesc/framework/BinOutputStream.lo: \ xercesc/framework/$(am__dirstamp) \ xercesc/framework/$(DEPDIR)/$(am__dirstamp) xercesc/framework/LocalFileFormatTarget.lo: \ xercesc/framework/$(am__dirstamp) \ xercesc/framework/$(DEPDIR)/$(am__dirstamp) xercesc/framework/LocalFileInputSource.lo: \ xercesc/framework/$(am__dirstamp) \ xercesc/framework/$(DEPDIR)/$(am__dirstamp) xercesc/framework/MemBufFormatTarget.lo: \ xercesc/framework/$(am__dirstamp) \ xercesc/framework/$(DEPDIR)/$(am__dirstamp) xercesc/framework/MemBufInputSource.lo: \ xercesc/framework/$(am__dirstamp) \ xercesc/framework/$(DEPDIR)/$(am__dirstamp) xercesc/framework/psvi/$(am__dirstamp): @$(MKDIR_P) xercesc/framework/psvi @: > xercesc/framework/psvi/$(am__dirstamp) xercesc/framework/psvi/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) xercesc/framework/psvi/$(DEPDIR) @: > xercesc/framework/psvi/$(DEPDIR)/$(am__dirstamp) xercesc/framework/psvi/PSVIAttribute.lo: \ xercesc/framework/psvi/$(am__dirstamp) \ xercesc/framework/psvi/$(DEPDIR)/$(am__dirstamp) xercesc/framework/psvi/PSVIAttributeList.lo: \ xercesc/framework/psvi/$(am__dirstamp) \ xercesc/framework/psvi/$(DEPDIR)/$(am__dirstamp) xercesc/framework/psvi/PSVIElement.lo: \ xercesc/framework/psvi/$(am__dirstamp) \ xercesc/framework/psvi/$(DEPDIR)/$(am__dirstamp) xercesc/framework/psvi/PSVIItem.lo: \ xercesc/framework/psvi/$(am__dirstamp) \ xercesc/framework/psvi/$(DEPDIR)/$(am__dirstamp) xercesc/framework/psvi/XSAnnotation.lo: \ xercesc/framework/psvi/$(am__dirstamp) \ xercesc/framework/psvi/$(DEPDIR)/$(am__dirstamp) xercesc/framework/psvi/XSAttributeDeclaration.lo: \ xercesc/framework/psvi/$(am__dirstamp) \ xercesc/framework/psvi/$(DEPDIR)/$(am__dirstamp) xercesc/framework/psvi/XSAttributeGroupDefinition.lo: \ xercesc/framework/psvi/$(am__dirstamp) \ xercesc/framework/psvi/$(DEPDIR)/$(am__dirstamp) xercesc/framework/psvi/XSAttributeUse.lo: \ xercesc/framework/psvi/$(am__dirstamp) \ xercesc/framework/psvi/$(DEPDIR)/$(am__dirstamp) xercesc/framework/psvi/XSComplexTypeDefinition.lo: \ xercesc/framework/psvi/$(am__dirstamp) \ xercesc/framework/psvi/$(DEPDIR)/$(am__dirstamp) xercesc/framework/psvi/XSElementDeclaration.lo: \ xercesc/framework/psvi/$(am__dirstamp) \ xercesc/framework/psvi/$(DEPDIR)/$(am__dirstamp) xercesc/framework/psvi/XSFacet.lo: \ xercesc/framework/psvi/$(am__dirstamp) \ xercesc/framework/psvi/$(DEPDIR)/$(am__dirstamp) xercesc/framework/psvi/XSIDCDefinition.lo: \ xercesc/framework/psvi/$(am__dirstamp) \ xercesc/framework/psvi/$(DEPDIR)/$(am__dirstamp) xercesc/framework/psvi/XSModel.lo: \ xercesc/framework/psvi/$(am__dirstamp) \ xercesc/framework/psvi/$(DEPDIR)/$(am__dirstamp) xercesc/framework/psvi/XSModelGroup.lo: \ xercesc/framework/psvi/$(am__dirstamp) \ xercesc/framework/psvi/$(DEPDIR)/$(am__dirstamp) xercesc/framework/psvi/XSModelGroupDefinition.lo: \ xercesc/framework/psvi/$(am__dirstamp) \ xercesc/framework/psvi/$(DEPDIR)/$(am__dirstamp) xercesc/framework/psvi/XSMultiValueFacet.lo: \ xercesc/framework/psvi/$(am__dirstamp) \ xercesc/framework/psvi/$(DEPDIR)/$(am__dirstamp) xercesc/framework/psvi/XSNamespaceItem.lo: \ xercesc/framework/psvi/$(am__dirstamp) \ xercesc/framework/psvi/$(DEPDIR)/$(am__dirstamp) xercesc/framework/psvi/XSNotationDeclaration.lo: \ xercesc/framework/psvi/$(am__dirstamp) \ xercesc/framework/psvi/$(DEPDIR)/$(am__dirstamp) xercesc/framework/psvi/XSObject.lo: \ xercesc/framework/psvi/$(am__dirstamp) \ xercesc/framework/psvi/$(DEPDIR)/$(am__dirstamp) xercesc/framework/psvi/XSParticle.lo: \ xercesc/framework/psvi/$(am__dirstamp) \ xercesc/framework/psvi/$(DEPDIR)/$(am__dirstamp) xercesc/framework/psvi/XSSimpleTypeDefinition.lo: \ xercesc/framework/psvi/$(am__dirstamp) \ xercesc/framework/psvi/$(DEPDIR)/$(am__dirstamp) xercesc/framework/psvi/XSTypeDefinition.lo: \ xercesc/framework/psvi/$(am__dirstamp) \ xercesc/framework/psvi/$(DEPDIR)/$(am__dirstamp) xercesc/framework/psvi/XSValue.lo: \ xercesc/framework/psvi/$(am__dirstamp) \ xercesc/framework/psvi/$(DEPDIR)/$(am__dirstamp) xercesc/framework/psvi/XSWildcard.lo: \ xercesc/framework/psvi/$(am__dirstamp) \ xercesc/framework/psvi/$(DEPDIR)/$(am__dirstamp) xercesc/framework/StdInInputSource.lo: \ xercesc/framework/$(am__dirstamp) \ xercesc/framework/$(DEPDIR)/$(am__dirstamp) xercesc/framework/StdOutFormatTarget.lo: \ xercesc/framework/$(am__dirstamp) \ xercesc/framework/$(DEPDIR)/$(am__dirstamp) xercesc/framework/URLInputSource.lo: \ xercesc/framework/$(am__dirstamp) \ xercesc/framework/$(DEPDIR)/$(am__dirstamp) xercesc/framework/Wrapper4DOMLSInput.lo: \ xercesc/framework/$(am__dirstamp) \ xercesc/framework/$(DEPDIR)/$(am__dirstamp) xercesc/framework/Wrapper4InputSource.lo: \ xercesc/framework/$(am__dirstamp) \ xercesc/framework/$(DEPDIR)/$(am__dirstamp) xercesc/framework/XMLAttDef.lo: xercesc/framework/$(am__dirstamp) \ xercesc/framework/$(DEPDIR)/$(am__dirstamp) xercesc/framework/XMLAttDefList.lo: xercesc/framework/$(am__dirstamp) \ xercesc/framework/$(DEPDIR)/$(am__dirstamp) xercesc/framework/XMLAttr.lo: xercesc/framework/$(am__dirstamp) \ xercesc/framework/$(DEPDIR)/$(am__dirstamp) xercesc/framework/XMLBuffer.lo: xercesc/framework/$(am__dirstamp) \ xercesc/framework/$(DEPDIR)/$(am__dirstamp) xercesc/framework/XMLBufferMgr.lo: xercesc/framework/$(am__dirstamp) \ xercesc/framework/$(DEPDIR)/$(am__dirstamp) xercesc/framework/XMLContentModel.lo: \ xercesc/framework/$(am__dirstamp) \ xercesc/framework/$(DEPDIR)/$(am__dirstamp) xercesc/framework/XMLDTDDescription.lo: \ xercesc/framework/$(am__dirstamp) \ xercesc/framework/$(DEPDIR)/$(am__dirstamp) xercesc/framework/XMLElementDecl.lo: \ xercesc/framework/$(am__dirstamp) \ xercesc/framework/$(DEPDIR)/$(am__dirstamp) xercesc/framework/XMLEntityDecl.lo: xercesc/framework/$(am__dirstamp) \ xercesc/framework/$(DEPDIR)/$(am__dirstamp) xercesc/framework/XMLFormatter.lo: xercesc/framework/$(am__dirstamp) \ xercesc/framework/$(DEPDIR)/$(am__dirstamp) xercesc/framework/XMLGrammarDescription.lo: \ xercesc/framework/$(am__dirstamp) \ xercesc/framework/$(DEPDIR)/$(am__dirstamp) xercesc/framework/XMLGrammarPoolImpl.lo: \ xercesc/framework/$(am__dirstamp) \ xercesc/framework/$(DEPDIR)/$(am__dirstamp) xercesc/framework/XMLNotationDecl.lo: \ xercesc/framework/$(am__dirstamp) \ xercesc/framework/$(DEPDIR)/$(am__dirstamp) xercesc/framework/XMLRecognizer.lo: xercesc/framework/$(am__dirstamp) \ xercesc/framework/$(DEPDIR)/$(am__dirstamp) xercesc/framework/XMLRefInfo.lo: xercesc/framework/$(am__dirstamp) \ xercesc/framework/$(DEPDIR)/$(am__dirstamp) xercesc/framework/XMLSchemaDescription.lo: \ xercesc/framework/$(am__dirstamp) \ xercesc/framework/$(DEPDIR)/$(am__dirstamp) xercesc/framework/XMLValidator.lo: xercesc/framework/$(am__dirstamp) \ xercesc/framework/$(DEPDIR)/$(am__dirstamp) xercesc/internal/$(am__dirstamp): @$(MKDIR_P) xercesc/internal @: > xercesc/internal/$(am__dirstamp) xercesc/internal/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) xercesc/internal/$(DEPDIR) @: > xercesc/internal/$(DEPDIR)/$(am__dirstamp) xercesc/internal/BinFileOutputStream.lo: \ xercesc/internal/$(am__dirstamp) \ xercesc/internal/$(DEPDIR)/$(am__dirstamp) xercesc/internal/BinMemOutputStream.lo: \ xercesc/internal/$(am__dirstamp) \ xercesc/internal/$(DEPDIR)/$(am__dirstamp) xercesc/internal/DGXMLScanner.lo: xercesc/internal/$(am__dirstamp) \ xercesc/internal/$(DEPDIR)/$(am__dirstamp) xercesc/internal/ElemStack.lo: xercesc/internal/$(am__dirstamp) \ xercesc/internal/$(DEPDIR)/$(am__dirstamp) xercesc/internal/IGXMLScanner.lo: xercesc/internal/$(am__dirstamp) \ xercesc/internal/$(DEPDIR)/$(am__dirstamp) xercesc/internal/IGXMLScanner2.lo: xercesc/internal/$(am__dirstamp) \ xercesc/internal/$(DEPDIR)/$(am__dirstamp) xercesc/internal/MemoryManagerImpl.lo: \ xercesc/internal/$(am__dirstamp) \ xercesc/internal/$(DEPDIR)/$(am__dirstamp) xercesc/internal/ReaderMgr.lo: xercesc/internal/$(am__dirstamp) \ xercesc/internal/$(DEPDIR)/$(am__dirstamp) xercesc/internal/SGXMLScanner.lo: xercesc/internal/$(am__dirstamp) \ xercesc/internal/$(DEPDIR)/$(am__dirstamp) xercesc/internal/ValidationContextImpl.lo: \ xercesc/internal/$(am__dirstamp) \ xercesc/internal/$(DEPDIR)/$(am__dirstamp) xercesc/internal/VecAttributesImpl.lo: \ xercesc/internal/$(am__dirstamp) \ xercesc/internal/$(DEPDIR)/$(am__dirstamp) xercesc/internal/VecAttrListImpl.lo: xercesc/internal/$(am__dirstamp) \ xercesc/internal/$(DEPDIR)/$(am__dirstamp) xercesc/internal/WFXMLScanner.lo: xercesc/internal/$(am__dirstamp) \ xercesc/internal/$(DEPDIR)/$(am__dirstamp) xercesc/internal/XMLReader.lo: xercesc/internal/$(am__dirstamp) \ xercesc/internal/$(DEPDIR)/$(am__dirstamp) xercesc/internal/XMLScanner.lo: xercesc/internal/$(am__dirstamp) \ xercesc/internal/$(DEPDIR)/$(am__dirstamp) xercesc/internal/XMLScannerResolver.lo: \ xercesc/internal/$(am__dirstamp) \ xercesc/internal/$(DEPDIR)/$(am__dirstamp) xercesc/internal/XProtoType.lo: xercesc/internal/$(am__dirstamp) \ xercesc/internal/$(DEPDIR)/$(am__dirstamp) xercesc/internal/XSAXMLScanner.lo: xercesc/internal/$(am__dirstamp) \ xercesc/internal/$(DEPDIR)/$(am__dirstamp) xercesc/internal/XSerializeEngine.lo: \ xercesc/internal/$(am__dirstamp) \ xercesc/internal/$(DEPDIR)/$(am__dirstamp) xercesc/internal/XSObjectFactory.lo: xercesc/internal/$(am__dirstamp) \ xercesc/internal/$(DEPDIR)/$(am__dirstamp) xercesc/internal/XTemplateSerializer.lo: \ xercesc/internal/$(am__dirstamp) \ xercesc/internal/$(DEPDIR)/$(am__dirstamp) xercesc/parsers/$(am__dirstamp): @$(MKDIR_P) xercesc/parsers @: > xercesc/parsers/$(am__dirstamp) xercesc/parsers/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) xercesc/parsers/$(DEPDIR) @: > xercesc/parsers/$(DEPDIR)/$(am__dirstamp) xercesc/parsers/AbstractDOMParser.lo: xercesc/parsers/$(am__dirstamp) \ xercesc/parsers/$(DEPDIR)/$(am__dirstamp) xercesc/parsers/DOMLSParserImpl.lo: xercesc/parsers/$(am__dirstamp) \ xercesc/parsers/$(DEPDIR)/$(am__dirstamp) xercesc/parsers/SAX2XMLFilterImpl.lo: xercesc/parsers/$(am__dirstamp) \ xercesc/parsers/$(DEPDIR)/$(am__dirstamp) xercesc/parsers/SAX2XMLReaderImpl.lo: xercesc/parsers/$(am__dirstamp) \ xercesc/parsers/$(DEPDIR)/$(am__dirstamp) xercesc/parsers/SAXParser.lo: xercesc/parsers/$(am__dirstamp) \ xercesc/parsers/$(DEPDIR)/$(am__dirstamp) xercesc/parsers/XercesDOMParser.lo: xercesc/parsers/$(am__dirstamp) \ xercesc/parsers/$(DEPDIR)/$(am__dirstamp) xercesc/sax/$(am__dirstamp): @$(MKDIR_P) xercesc/sax @: > xercesc/sax/$(am__dirstamp) xercesc/sax/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) xercesc/sax/$(DEPDIR) @: > xercesc/sax/$(DEPDIR)/$(am__dirstamp) xercesc/sax/Dummy.lo: xercesc/sax/$(am__dirstamp) \ xercesc/sax/$(DEPDIR)/$(am__dirstamp) xercesc/sax/InputSource.lo: xercesc/sax/$(am__dirstamp) \ xercesc/sax/$(DEPDIR)/$(am__dirstamp) xercesc/sax/SAXException.lo: xercesc/sax/$(am__dirstamp) \ xercesc/sax/$(DEPDIR)/$(am__dirstamp) xercesc/sax/SAXParseException.lo: xercesc/sax/$(am__dirstamp) \ xercesc/sax/$(DEPDIR)/$(am__dirstamp) xercesc/sax2/$(am__dirstamp): @$(MKDIR_P) xercesc/sax2 @: > xercesc/sax2/$(am__dirstamp) xercesc/sax2/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) xercesc/sax2/$(DEPDIR) @: > xercesc/sax2/$(DEPDIR)/$(am__dirstamp) xercesc/sax2/sax2Dummy.lo: xercesc/sax2/$(am__dirstamp) \ xercesc/sax2/$(DEPDIR)/$(am__dirstamp) xercesc/validators/common/$(am__dirstamp): @$(MKDIR_P) xercesc/validators/common @: > xercesc/validators/common/$(am__dirstamp) xercesc/validators/common/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) xercesc/validators/common/$(DEPDIR) @: > xercesc/validators/common/$(DEPDIR)/$(am__dirstamp) xercesc/validators/common/AllContentModel.lo: \ xercesc/validators/common/$(am__dirstamp) \ xercesc/validators/common/$(DEPDIR)/$(am__dirstamp) xercesc/validators/common/CMAny.lo: \ xercesc/validators/common/$(am__dirstamp) \ xercesc/validators/common/$(DEPDIR)/$(am__dirstamp) xercesc/validators/common/CMBinaryOp.lo: \ xercesc/validators/common/$(am__dirstamp) \ xercesc/validators/common/$(DEPDIR)/$(am__dirstamp) xercesc/validators/common/CMUnaryOp.lo: \ xercesc/validators/common/$(am__dirstamp) \ xercesc/validators/common/$(DEPDIR)/$(am__dirstamp) xercesc/validators/common/ContentLeafNameTypeVector.lo: \ xercesc/validators/common/$(am__dirstamp) \ xercesc/validators/common/$(DEPDIR)/$(am__dirstamp) xercesc/validators/common/ContentSpecNode.lo: \ xercesc/validators/common/$(am__dirstamp) \ xercesc/validators/common/$(DEPDIR)/$(am__dirstamp) xercesc/validators/common/DFAContentModel.lo: \ xercesc/validators/common/$(am__dirstamp) \ xercesc/validators/common/$(DEPDIR)/$(am__dirstamp) xercesc/validators/common/Grammar.lo: \ xercesc/validators/common/$(am__dirstamp) \ xercesc/validators/common/$(DEPDIR)/$(am__dirstamp) xercesc/validators/common/GrammarResolver.lo: \ xercesc/validators/common/$(am__dirstamp) \ xercesc/validators/common/$(DEPDIR)/$(am__dirstamp) xercesc/validators/common/MixedContentModel.lo: \ xercesc/validators/common/$(am__dirstamp) \ xercesc/validators/common/$(DEPDIR)/$(am__dirstamp) xercesc/validators/common/SimpleContentModel.lo: \ xercesc/validators/common/$(am__dirstamp) \ xercesc/validators/common/$(DEPDIR)/$(am__dirstamp) xercesc/validators/datatype/$(am__dirstamp): @$(MKDIR_P) xercesc/validators/datatype @: > xercesc/validators/datatype/$(am__dirstamp) xercesc/validators/datatype/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) xercesc/validators/datatype/$(DEPDIR) @: > xercesc/validators/datatype/$(DEPDIR)/$(am__dirstamp) xercesc/validators/datatype/AbstractNumericFacetValidator.lo: \ xercesc/validators/datatype/$(am__dirstamp) \ xercesc/validators/datatype/$(DEPDIR)/$(am__dirstamp) xercesc/validators/datatype/AbstractNumericValidator.lo: \ xercesc/validators/datatype/$(am__dirstamp) \ xercesc/validators/datatype/$(DEPDIR)/$(am__dirstamp) xercesc/validators/datatype/AbstractStringValidator.lo: \ xercesc/validators/datatype/$(am__dirstamp) \ xercesc/validators/datatype/$(DEPDIR)/$(am__dirstamp) xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.lo: \ xercesc/validators/datatype/$(am__dirstamp) \ xercesc/validators/datatype/$(DEPDIR)/$(am__dirstamp) xercesc/validators/datatype/AnyURIDatatypeValidator.lo: \ xercesc/validators/datatype/$(am__dirstamp) \ xercesc/validators/datatype/$(DEPDIR)/$(am__dirstamp) xercesc/validators/datatype/Base64BinaryDatatypeValidator.lo: \ xercesc/validators/datatype/$(am__dirstamp) \ xercesc/validators/datatype/$(DEPDIR)/$(am__dirstamp) xercesc/validators/datatype/BooleanDatatypeValidator.lo: \ xercesc/validators/datatype/$(am__dirstamp) \ xercesc/validators/datatype/$(DEPDIR)/$(am__dirstamp) xercesc/validators/datatype/DatatypeValidator.lo: \ xercesc/validators/datatype/$(am__dirstamp) \ xercesc/validators/datatype/$(DEPDIR)/$(am__dirstamp) xercesc/validators/datatype/DatatypeValidatorFactory.lo: \ xercesc/validators/datatype/$(am__dirstamp) \ xercesc/validators/datatype/$(DEPDIR)/$(am__dirstamp) xercesc/validators/datatype/DateDatatypeValidator.lo: \ xercesc/validators/datatype/$(am__dirstamp) \ xercesc/validators/datatype/$(DEPDIR)/$(am__dirstamp) xercesc/validators/datatype/DateTimeDatatypeValidator.lo: \ xercesc/validators/datatype/$(am__dirstamp) \ xercesc/validators/datatype/$(DEPDIR)/$(am__dirstamp) xercesc/validators/datatype/DateTimeValidator.lo: \ xercesc/validators/datatype/$(am__dirstamp) \ xercesc/validators/datatype/$(DEPDIR)/$(am__dirstamp) xercesc/validators/datatype/DayDatatypeValidator.lo: \ xercesc/validators/datatype/$(am__dirstamp) \ xercesc/validators/datatype/$(DEPDIR)/$(am__dirstamp) xercesc/validators/datatype/DecimalDatatypeValidator.lo: \ xercesc/validators/datatype/$(am__dirstamp) \ xercesc/validators/datatype/$(DEPDIR)/$(am__dirstamp) xercesc/validators/datatype/DoubleDatatypeValidator.lo: \ xercesc/validators/datatype/$(am__dirstamp) \ xercesc/validators/datatype/$(DEPDIR)/$(am__dirstamp) xercesc/validators/datatype/DurationDatatypeValidator.lo: \ xercesc/validators/datatype/$(am__dirstamp) \ xercesc/validators/datatype/$(DEPDIR)/$(am__dirstamp) xercesc/validators/datatype/ENTITYDatatypeValidator.lo: \ xercesc/validators/datatype/$(am__dirstamp) \ xercesc/validators/datatype/$(DEPDIR)/$(am__dirstamp) xercesc/validators/datatype/FloatDatatypeValidator.lo: \ xercesc/validators/datatype/$(am__dirstamp) \ xercesc/validators/datatype/$(DEPDIR)/$(am__dirstamp) xercesc/validators/datatype/HexBinaryDatatypeValidator.lo: \ xercesc/validators/datatype/$(am__dirstamp) \ xercesc/validators/datatype/$(DEPDIR)/$(am__dirstamp) xercesc/validators/datatype/IDDatatypeValidator.lo: \ xercesc/validators/datatype/$(am__dirstamp) \ xercesc/validators/datatype/$(DEPDIR)/$(am__dirstamp) xercesc/validators/datatype/IDREFDatatypeValidator.lo: \ xercesc/validators/datatype/$(am__dirstamp) \ xercesc/validators/datatype/$(DEPDIR)/$(am__dirstamp) xercesc/validators/datatype/ListDatatypeValidator.lo: \ xercesc/validators/datatype/$(am__dirstamp) \ xercesc/validators/datatype/$(DEPDIR)/$(am__dirstamp) xercesc/validators/datatype/MonthDatatypeValidator.lo: \ xercesc/validators/datatype/$(am__dirstamp) \ xercesc/validators/datatype/$(DEPDIR)/$(am__dirstamp) xercesc/validators/datatype/MonthDayDatatypeValidator.lo: \ xercesc/validators/datatype/$(am__dirstamp) \ xercesc/validators/datatype/$(DEPDIR)/$(am__dirstamp) xercesc/validators/datatype/NameDatatypeValidator.lo: \ xercesc/validators/datatype/$(am__dirstamp) \ xercesc/validators/datatype/$(DEPDIR)/$(am__dirstamp) xercesc/validators/datatype/NCNameDatatypeValidator.lo: \ xercesc/validators/datatype/$(am__dirstamp) \ xercesc/validators/datatype/$(DEPDIR)/$(am__dirstamp) xercesc/validators/datatype/NOTATIONDatatypeValidator.lo: \ xercesc/validators/datatype/$(am__dirstamp) \ xercesc/validators/datatype/$(DEPDIR)/$(am__dirstamp) xercesc/validators/datatype/QNameDatatypeValidator.lo: \ xercesc/validators/datatype/$(am__dirstamp) \ xercesc/validators/datatype/$(DEPDIR)/$(am__dirstamp) xercesc/validators/datatype/StringDatatypeValidator.lo: \ xercesc/validators/datatype/$(am__dirstamp) \ xercesc/validators/datatype/$(DEPDIR)/$(am__dirstamp) xercesc/validators/datatype/TimeDatatypeValidator.lo: \ xercesc/validators/datatype/$(am__dirstamp) \ xercesc/validators/datatype/$(DEPDIR)/$(am__dirstamp) xercesc/validators/datatype/UnionDatatypeValidator.lo: \ xercesc/validators/datatype/$(am__dirstamp) \ xercesc/validators/datatype/$(DEPDIR)/$(am__dirstamp) xercesc/validators/datatype/XMLCanRepGroup.lo: \ xercesc/validators/datatype/$(am__dirstamp) \ xercesc/validators/datatype/$(DEPDIR)/$(am__dirstamp) xercesc/validators/datatype/YearDatatypeValidator.lo: \ xercesc/validators/datatype/$(am__dirstamp) \ xercesc/validators/datatype/$(DEPDIR)/$(am__dirstamp) xercesc/validators/datatype/YearMonthDatatypeValidator.lo: \ xercesc/validators/datatype/$(am__dirstamp) \ xercesc/validators/datatype/$(DEPDIR)/$(am__dirstamp) xercesc/validators/DTD/$(am__dirstamp): @$(MKDIR_P) xercesc/validators/DTD @: > xercesc/validators/DTD/$(am__dirstamp) xercesc/validators/DTD/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) xercesc/validators/DTD/$(DEPDIR) @: > xercesc/validators/DTD/$(DEPDIR)/$(am__dirstamp) xercesc/validators/DTD/DTDAttDef.lo: \ xercesc/validators/DTD/$(am__dirstamp) \ xercesc/validators/DTD/$(DEPDIR)/$(am__dirstamp) xercesc/validators/DTD/DTDAttDefList.lo: \ xercesc/validators/DTD/$(am__dirstamp) \ xercesc/validators/DTD/$(DEPDIR)/$(am__dirstamp) xercesc/validators/DTD/DTDElementDecl.lo: \ xercesc/validators/DTD/$(am__dirstamp) \ xercesc/validators/DTD/$(DEPDIR)/$(am__dirstamp) xercesc/validators/DTD/DTDEntityDecl.lo: \ xercesc/validators/DTD/$(am__dirstamp) \ xercesc/validators/DTD/$(DEPDIR)/$(am__dirstamp) xercesc/validators/DTD/DTDGrammar.lo: \ xercesc/validators/DTD/$(am__dirstamp) \ xercesc/validators/DTD/$(DEPDIR)/$(am__dirstamp) xercesc/validators/DTD/DTDScanner.lo: \ xercesc/validators/DTD/$(am__dirstamp) \ xercesc/validators/DTD/$(DEPDIR)/$(am__dirstamp) xercesc/validators/DTD/DTDValidator.lo: \ xercesc/validators/DTD/$(am__dirstamp) \ xercesc/validators/DTD/$(DEPDIR)/$(am__dirstamp) xercesc/validators/DTD/XMLDTDDescriptionImpl.lo: \ xercesc/validators/DTD/$(am__dirstamp) \ xercesc/validators/DTD/$(DEPDIR)/$(am__dirstamp) xercesc/validators/schema/$(am__dirstamp): @$(MKDIR_P) xercesc/validators/schema @: > xercesc/validators/schema/$(am__dirstamp) xercesc/validators/schema/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) xercesc/validators/schema/$(DEPDIR) @: > xercesc/validators/schema/$(DEPDIR)/$(am__dirstamp) xercesc/validators/schema/ComplexTypeInfo.lo: \ xercesc/validators/schema/$(am__dirstamp) \ xercesc/validators/schema/$(DEPDIR)/$(am__dirstamp) xercesc/validators/schema/GeneralAttributeCheck.lo: \ xercesc/validators/schema/$(am__dirstamp) \ xercesc/validators/schema/$(DEPDIR)/$(am__dirstamp) xercesc/validators/schema/identity/$(am__dirstamp): @$(MKDIR_P) xercesc/validators/schema/identity @: > xercesc/validators/schema/identity/$(am__dirstamp) xercesc/validators/schema/identity/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) xercesc/validators/schema/identity/$(DEPDIR) @: > xercesc/validators/schema/identity/$(DEPDIR)/$(am__dirstamp) xercesc/validators/schema/identity/FieldActivator.lo: \ xercesc/validators/schema/identity/$(am__dirstamp) \ xercesc/validators/schema/identity/$(DEPDIR)/$(am__dirstamp) xercesc/validators/schema/identity/FieldValueMap.lo: \ xercesc/validators/schema/identity/$(am__dirstamp) \ xercesc/validators/schema/identity/$(DEPDIR)/$(am__dirstamp) xercesc/validators/schema/identity/IC_Field.lo: \ xercesc/validators/schema/identity/$(am__dirstamp) \ xercesc/validators/schema/identity/$(DEPDIR)/$(am__dirstamp) xercesc/validators/schema/identity/IC_Key.lo: \ xercesc/validators/schema/identity/$(am__dirstamp) \ xercesc/validators/schema/identity/$(DEPDIR)/$(am__dirstamp) xercesc/validators/schema/identity/IC_KeyRef.lo: \ xercesc/validators/schema/identity/$(am__dirstamp) \ xercesc/validators/schema/identity/$(DEPDIR)/$(am__dirstamp) xercesc/validators/schema/identity/IC_Selector.lo: \ xercesc/validators/schema/identity/$(am__dirstamp) \ xercesc/validators/schema/identity/$(DEPDIR)/$(am__dirstamp) xercesc/validators/schema/identity/IC_Unique.lo: \ xercesc/validators/schema/identity/$(am__dirstamp) \ xercesc/validators/schema/identity/$(DEPDIR)/$(am__dirstamp) xercesc/validators/schema/identity/IdentityConstraint.lo: \ xercesc/validators/schema/identity/$(am__dirstamp) \ xercesc/validators/schema/identity/$(DEPDIR)/$(am__dirstamp) xercesc/validators/schema/identity/IdentityConstraintHandler.lo: \ xercesc/validators/schema/identity/$(am__dirstamp) \ xercesc/validators/schema/identity/$(DEPDIR)/$(am__dirstamp) xercesc/validators/schema/identity/ValueStore.lo: \ xercesc/validators/schema/identity/$(am__dirstamp) \ xercesc/validators/schema/identity/$(DEPDIR)/$(am__dirstamp) xercesc/validators/schema/identity/ValueStoreCache.lo: \ xercesc/validators/schema/identity/$(am__dirstamp) \ xercesc/validators/schema/identity/$(DEPDIR)/$(am__dirstamp) xercesc/validators/schema/identity/XercesXPath.lo: \ xercesc/validators/schema/identity/$(am__dirstamp) \ xercesc/validators/schema/identity/$(DEPDIR)/$(am__dirstamp) xercesc/validators/schema/identity/XPathMatcher.lo: \ xercesc/validators/schema/identity/$(am__dirstamp) \ xercesc/validators/schema/identity/$(DEPDIR)/$(am__dirstamp) xercesc/validators/schema/identity/XPathMatcherStack.lo: \ xercesc/validators/schema/identity/$(am__dirstamp) \ xercesc/validators/schema/identity/$(DEPDIR)/$(am__dirstamp) xercesc/validators/schema/identity/XPathSymbols.lo: \ xercesc/validators/schema/identity/$(am__dirstamp) \ xercesc/validators/schema/identity/$(DEPDIR)/$(am__dirstamp) xercesc/validators/schema/NamespaceScope.lo: \ xercesc/validators/schema/$(am__dirstamp) \ xercesc/validators/schema/$(DEPDIR)/$(am__dirstamp) xercesc/validators/schema/SchemaAttDef.lo: \ xercesc/validators/schema/$(am__dirstamp) \ xercesc/validators/schema/$(DEPDIR)/$(am__dirstamp) xercesc/validators/schema/SchemaAttDefList.lo: \ xercesc/validators/schema/$(am__dirstamp) \ xercesc/validators/schema/$(DEPDIR)/$(am__dirstamp) xercesc/validators/schema/SchemaElementDecl.lo: \ xercesc/validators/schema/$(am__dirstamp) \ xercesc/validators/schema/$(DEPDIR)/$(am__dirstamp) xercesc/validators/schema/SchemaGrammar.lo: \ xercesc/validators/schema/$(am__dirstamp) \ xercesc/validators/schema/$(DEPDIR)/$(am__dirstamp) xercesc/validators/schema/SchemaInfo.lo: \ xercesc/validators/schema/$(am__dirstamp) \ xercesc/validators/schema/$(DEPDIR)/$(am__dirstamp) xercesc/validators/schema/SchemaSymbols.lo: \ xercesc/validators/schema/$(am__dirstamp) \ xercesc/validators/schema/$(DEPDIR)/$(am__dirstamp) xercesc/validators/schema/SchemaValidator.lo: \ xercesc/validators/schema/$(am__dirstamp) \ xercesc/validators/schema/$(DEPDIR)/$(am__dirstamp) xercesc/validators/schema/SubstitutionGroupComparator.lo: \ xercesc/validators/schema/$(am__dirstamp) \ xercesc/validators/schema/$(DEPDIR)/$(am__dirstamp) xercesc/validators/schema/TraverseSchema.lo: \ xercesc/validators/schema/$(am__dirstamp) \ xercesc/validators/schema/$(DEPDIR)/$(am__dirstamp) xercesc/validators/schema/XercesAttGroupInfo.lo: \ xercesc/validators/schema/$(am__dirstamp) \ xercesc/validators/schema/$(DEPDIR)/$(am__dirstamp) xercesc/validators/schema/XercesElementWildcard.lo: \ xercesc/validators/schema/$(am__dirstamp) \ xercesc/validators/schema/$(DEPDIR)/$(am__dirstamp) xercesc/validators/schema/XercesGroupInfo.lo: \ xercesc/validators/schema/$(am__dirstamp) \ xercesc/validators/schema/$(DEPDIR)/$(am__dirstamp) xercesc/validators/schema/XMLSchemaDescriptionImpl.lo: \ xercesc/validators/schema/$(am__dirstamp) \ xercesc/validators/schema/$(DEPDIR)/$(am__dirstamp) xercesc/validators/schema/XSDDOMParser.lo: \ xercesc/validators/schema/$(am__dirstamp) \ xercesc/validators/schema/$(DEPDIR)/$(am__dirstamp) xercesc/validators/schema/XSDErrorReporter.lo: \ xercesc/validators/schema/$(am__dirstamp) \ xercesc/validators/schema/$(DEPDIR)/$(am__dirstamp) xercesc/validators/schema/XSDLocator.lo: \ xercesc/validators/schema/$(am__dirstamp) \ xercesc/validators/schema/$(DEPDIR)/$(am__dirstamp) xercesc/validators/schema/XUtil.lo: \ xercesc/validators/schema/$(am__dirstamp) \ xercesc/validators/schema/$(DEPDIR)/$(am__dirstamp) xercesc/xinclude/$(am__dirstamp): @$(MKDIR_P) xercesc/xinclude @: > xercesc/xinclude/$(am__dirstamp) xercesc/xinclude/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) xercesc/xinclude/$(DEPDIR) @: > xercesc/xinclude/$(DEPDIR)/$(am__dirstamp) xercesc/xinclude/XIncludeDOMDocumentProcessor.lo: \ xercesc/xinclude/$(am__dirstamp) \ xercesc/xinclude/$(DEPDIR)/$(am__dirstamp) xercesc/xinclude/XIncludeLocation.lo: \ xercesc/xinclude/$(am__dirstamp) \ xercesc/xinclude/$(DEPDIR)/$(am__dirstamp) xercesc/xinclude/XIncludeUtils.lo: xercesc/xinclude/$(am__dirstamp) \ xercesc/xinclude/$(DEPDIR)/$(am__dirstamp) xercesc/util/NetAccessors/Curl/$(am__dirstamp): @$(MKDIR_P) xercesc/util/NetAccessors/Curl @: > xercesc/util/NetAccessors/Curl/$(am__dirstamp) xercesc/util/NetAccessors/Curl/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) xercesc/util/NetAccessors/Curl/$(DEPDIR) @: > xercesc/util/NetAccessors/Curl/$(DEPDIR)/$(am__dirstamp) xercesc/util/NetAccessors/Curl/CurlNetAccessor.lo: \ xercesc/util/NetAccessors/Curl/$(am__dirstamp) \ xercesc/util/NetAccessors/Curl/$(DEPDIR)/$(am__dirstamp) xercesc/util/NetAccessors/Curl/CurlURLInputStream.lo: \ xercesc/util/NetAccessors/Curl/$(am__dirstamp) \ xercesc/util/NetAccessors/Curl/$(DEPDIR)/$(am__dirstamp) xercesc/util/NetAccessors/Socket/$(am__dirstamp): @$(MKDIR_P) xercesc/util/NetAccessors/Socket @: > xercesc/util/NetAccessors/Socket/$(am__dirstamp) xercesc/util/NetAccessors/Socket/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) xercesc/util/NetAccessors/Socket/$(DEPDIR) @: > xercesc/util/NetAccessors/Socket/$(DEPDIR)/$(am__dirstamp) xercesc/util/NetAccessors/Socket/SocketNetAccessor.lo: \ xercesc/util/NetAccessors/Socket/$(am__dirstamp) \ xercesc/util/NetAccessors/Socket/$(DEPDIR)/$(am__dirstamp) xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.lo: \ xercesc/util/NetAccessors/Socket/$(am__dirstamp) \ xercesc/util/NetAccessors/Socket/$(DEPDIR)/$(am__dirstamp) xercesc/util/NetAccessors/$(am__dirstamp): @$(MKDIR_P) xercesc/util/NetAccessors @: > xercesc/util/NetAccessors/$(am__dirstamp) xercesc/util/NetAccessors/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) xercesc/util/NetAccessors/$(DEPDIR) @: > xercesc/util/NetAccessors/$(DEPDIR)/$(am__dirstamp) xercesc/util/NetAccessors/BinHTTPInputStreamCommon.lo: \ xercesc/util/NetAccessors/$(am__dirstamp) \ xercesc/util/NetAccessors/$(DEPDIR)/$(am__dirstamp) xercesc/util/NetAccessors/MacOSURLAccessCF/$(am__dirstamp): @$(MKDIR_P) xercesc/util/NetAccessors/MacOSURLAccessCF @: > xercesc/util/NetAccessors/MacOSURLAccessCF/$(am__dirstamp) xercesc/util/NetAccessors/MacOSURLAccessCF/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) xercesc/util/NetAccessors/MacOSURLAccessCF/$(DEPDIR) @: > xercesc/util/NetAccessors/MacOSURLAccessCF/$(DEPDIR)/$(am__dirstamp) xercesc/util/NetAccessors/MacOSURLAccessCF/MacOSURLAccessCF.lo: \ xercesc/util/NetAccessors/MacOSURLAccessCF/$(am__dirstamp) \ xercesc/util/NetAccessors/MacOSURLAccessCF/$(DEPDIR)/$(am__dirstamp) xercesc/util/NetAccessors/MacOSURLAccessCF/URLAccessCFBinInputStream.lo: \ xercesc/util/NetAccessors/MacOSURLAccessCF/$(am__dirstamp) \ xercesc/util/NetAccessors/MacOSURLAccessCF/$(DEPDIR)/$(am__dirstamp) xercesc/util/NetAccessors/WinSock/$(am__dirstamp): @$(MKDIR_P) xercesc/util/NetAccessors/WinSock @: > xercesc/util/NetAccessors/WinSock/$(am__dirstamp) xercesc/util/NetAccessors/WinSock/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) xercesc/util/NetAccessors/WinSock/$(DEPDIR) @: > xercesc/util/NetAccessors/WinSock/$(DEPDIR)/$(am__dirstamp) xercesc/util/NetAccessors/WinSock/WinSockNetAccessor.lo: \ xercesc/util/NetAccessors/WinSock/$(am__dirstamp) \ xercesc/util/NetAccessors/WinSock/$(DEPDIR)/$(am__dirstamp) xercesc/util/NetAccessors/WinSock/BinHTTPURLInputStream.lo: \ xercesc/util/NetAccessors/WinSock/$(am__dirstamp) \ xercesc/util/NetAccessors/WinSock/$(DEPDIR)/$(am__dirstamp) xercesc/util/Transcoders/ICU/$(am__dirstamp): @$(MKDIR_P) xercesc/util/Transcoders/ICU @: > xercesc/util/Transcoders/ICU/$(am__dirstamp) xercesc/util/Transcoders/ICU/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) xercesc/util/Transcoders/ICU/$(DEPDIR) @: > xercesc/util/Transcoders/ICU/$(DEPDIR)/$(am__dirstamp) xercesc/util/Transcoders/ICU/ICUTransService.lo: \ xercesc/util/Transcoders/ICU/$(am__dirstamp) \ xercesc/util/Transcoders/ICU/$(DEPDIR)/$(am__dirstamp) xercesc/util/Transcoders/IconvGNU/$(am__dirstamp): @$(MKDIR_P) xercesc/util/Transcoders/IconvGNU @: > xercesc/util/Transcoders/IconvGNU/$(am__dirstamp) xercesc/util/Transcoders/IconvGNU/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) xercesc/util/Transcoders/IconvGNU/$(DEPDIR) @: > xercesc/util/Transcoders/IconvGNU/$(DEPDIR)/$(am__dirstamp) xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.lo: \ xercesc/util/Transcoders/IconvGNU/$(am__dirstamp) \ xercesc/util/Transcoders/IconvGNU/$(DEPDIR)/$(am__dirstamp) xercesc/util/Transcoders/Iconv/$(am__dirstamp): @$(MKDIR_P) xercesc/util/Transcoders/Iconv @: > xercesc/util/Transcoders/Iconv/$(am__dirstamp) xercesc/util/Transcoders/Iconv/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) xercesc/util/Transcoders/Iconv/$(DEPDIR) @: > xercesc/util/Transcoders/Iconv/$(DEPDIR)/$(am__dirstamp) xercesc/util/Transcoders/Iconv/IconvTransService.lo: \ xercesc/util/Transcoders/Iconv/$(am__dirstamp) \ xercesc/util/Transcoders/Iconv/$(DEPDIR)/$(am__dirstamp) xercesc/util/Transcoders/MacOSUnicodeConverter/$(am__dirstamp): @$(MKDIR_P) xercesc/util/Transcoders/MacOSUnicodeConverter @: > xercesc/util/Transcoders/MacOSUnicodeConverter/$(am__dirstamp) xercesc/util/Transcoders/MacOSUnicodeConverter/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) xercesc/util/Transcoders/MacOSUnicodeConverter/$(DEPDIR) @: > xercesc/util/Transcoders/MacOSUnicodeConverter/$(DEPDIR)/$(am__dirstamp) xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.lo: xercesc/util/Transcoders/MacOSUnicodeConverter/$(am__dirstamp) \ xercesc/util/Transcoders/MacOSUnicodeConverter/$(DEPDIR)/$(am__dirstamp) xercesc/util/Transcoders/Win32/$(am__dirstamp): @$(MKDIR_P) xercesc/util/Transcoders/Win32 @: > xercesc/util/Transcoders/Win32/$(am__dirstamp) xercesc/util/Transcoders/Win32/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) xercesc/util/Transcoders/Win32/$(DEPDIR) @: > xercesc/util/Transcoders/Win32/$(DEPDIR)/$(am__dirstamp) xercesc/util/Transcoders/Win32/Win32TransService.lo: \ xercesc/util/Transcoders/Win32/$(am__dirstamp) \ xercesc/util/Transcoders/Win32/$(DEPDIR)/$(am__dirstamp) xercesc/util/MsgLoaders/InMemory/$(am__dirstamp): @$(MKDIR_P) xercesc/util/MsgLoaders/InMemory @: > xercesc/util/MsgLoaders/InMemory/$(am__dirstamp) xercesc/util/MsgLoaders/InMemory/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) xercesc/util/MsgLoaders/InMemory/$(DEPDIR) @: > xercesc/util/MsgLoaders/InMemory/$(DEPDIR)/$(am__dirstamp) xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.lo: \ xercesc/util/MsgLoaders/InMemory/$(am__dirstamp) \ xercesc/util/MsgLoaders/InMemory/$(DEPDIR)/$(am__dirstamp) xercesc/util/MsgLoaders/ICU/$(am__dirstamp): @$(MKDIR_P) xercesc/util/MsgLoaders/ICU @: > xercesc/util/MsgLoaders/ICU/$(am__dirstamp) xercesc/util/MsgLoaders/ICU/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) xercesc/util/MsgLoaders/ICU/$(DEPDIR) @: > xercesc/util/MsgLoaders/ICU/$(DEPDIR)/$(am__dirstamp) xercesc/util/MsgLoaders/ICU/ICUMsgLoader.lo: \ xercesc/util/MsgLoaders/ICU/$(am__dirstamp) \ xercesc/util/MsgLoaders/ICU/$(DEPDIR)/$(am__dirstamp) xercesc/util/MsgLoaders/MsgCatalog/$(am__dirstamp): @$(MKDIR_P) xercesc/util/MsgLoaders/MsgCatalog @: > xercesc/util/MsgLoaders/MsgCatalog/$(am__dirstamp) xercesc/util/MsgLoaders/MsgCatalog/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) xercesc/util/MsgLoaders/MsgCatalog/$(DEPDIR) @: > xercesc/util/MsgLoaders/MsgCatalog/$(DEPDIR)/$(am__dirstamp) xercesc/util/MsgLoaders/MsgCatalog/MsgCatalogLoader.lo: \ xercesc/util/MsgLoaders/MsgCatalog/$(am__dirstamp) \ xercesc/util/MsgLoaders/MsgCatalog/$(DEPDIR)/$(am__dirstamp) xercesc/util/MutexManagers/$(am__dirstamp): @$(MKDIR_P) xercesc/util/MutexManagers @: > xercesc/util/MutexManagers/$(am__dirstamp) xercesc/util/MutexManagers/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) xercesc/util/MutexManagers/$(DEPDIR) @: > xercesc/util/MutexManagers/$(DEPDIR)/$(am__dirstamp) xercesc/util/MutexManagers/NoThreadMutexMgr.lo: \ xercesc/util/MutexManagers/$(am__dirstamp) \ xercesc/util/MutexManagers/$(DEPDIR)/$(am__dirstamp) xercesc/util/MutexManagers/PosixMutexMgr.lo: \ xercesc/util/MutexManagers/$(am__dirstamp) \ xercesc/util/MutexManagers/$(DEPDIR)/$(am__dirstamp) xercesc/util/MutexManagers/WindowsMutexMgr.lo: \ xercesc/util/MutexManagers/$(am__dirstamp) \ xercesc/util/MutexManagers/$(DEPDIR)/$(am__dirstamp) xercesc/util/FileManagers/$(am__dirstamp): @$(MKDIR_P) xercesc/util/FileManagers @: > xercesc/util/FileManagers/$(am__dirstamp) xercesc/util/FileManagers/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) xercesc/util/FileManagers/$(DEPDIR) @: > xercesc/util/FileManagers/$(DEPDIR)/$(am__dirstamp) xercesc/util/FileManagers/PosixFileMgr.lo: \ xercesc/util/FileManagers/$(am__dirstamp) \ xercesc/util/FileManagers/$(DEPDIR)/$(am__dirstamp) xercesc/util/FileManagers/WindowsFileMgr.lo: \ xercesc/util/FileManagers/$(am__dirstamp) \ xercesc/util/FileManagers/$(DEPDIR)/$(am__dirstamp) libxerces-c.la: $(libxerces_c_la_OBJECTS) $(libxerces_c_la_DEPENDENCIES) $(libxerces_c_la_LINK) -rpath $(libdir) $(libxerces_c_la_OBJECTS) $(libxerces_c_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) -rm -f xercesc/dom/DOMException.$(OBJEXT) -rm -f xercesc/dom/DOMException.lo -rm -f xercesc/dom/DOMLSException.$(OBJEXT) -rm -f xercesc/dom/DOMLSException.lo -rm -f xercesc/dom/DOMRangeException.$(OBJEXT) -rm -f xercesc/dom/DOMRangeException.lo -rm -f xercesc/dom/DOMXPathException.$(OBJEXT) -rm -f xercesc/dom/DOMXPathException.lo -rm -f xercesc/dom/impl/DOMAttrImpl.$(OBJEXT) -rm -f xercesc/dom/impl/DOMAttrImpl.lo -rm -f xercesc/dom/impl/DOMAttrMapImpl.$(OBJEXT) -rm -f xercesc/dom/impl/DOMAttrMapImpl.lo -rm -f xercesc/dom/impl/DOMAttrNSImpl.$(OBJEXT) -rm -f xercesc/dom/impl/DOMAttrNSImpl.lo -rm -f xercesc/dom/impl/DOMCDATASectionImpl.$(OBJEXT) -rm -f xercesc/dom/impl/DOMCDATASectionImpl.lo -rm -f xercesc/dom/impl/DOMCharacterDataImpl.$(OBJEXT) -rm -f xercesc/dom/impl/DOMCharacterDataImpl.lo -rm -f xercesc/dom/impl/DOMChildNode.$(OBJEXT) -rm -f xercesc/dom/impl/DOMChildNode.lo -rm -f xercesc/dom/impl/DOMCommentImpl.$(OBJEXT) -rm -f xercesc/dom/impl/DOMCommentImpl.lo -rm -f xercesc/dom/impl/DOMConfigurationImpl.$(OBJEXT) -rm -f xercesc/dom/impl/DOMConfigurationImpl.lo -rm -f xercesc/dom/impl/DOMDeepNodeListImpl.$(OBJEXT) -rm -f xercesc/dom/impl/DOMDeepNodeListImpl.lo -rm -f xercesc/dom/impl/DOMDocumentFragmentImpl.$(OBJEXT) -rm -f xercesc/dom/impl/DOMDocumentFragmentImpl.lo -rm -f xercesc/dom/impl/DOMDocumentImpl.$(OBJEXT) -rm -f xercesc/dom/impl/DOMDocumentImpl.lo -rm -f xercesc/dom/impl/DOMDocumentTypeImpl.$(OBJEXT) -rm -f xercesc/dom/impl/DOMDocumentTypeImpl.lo -rm -f xercesc/dom/impl/DOMElementImpl.$(OBJEXT) -rm -f xercesc/dom/impl/DOMElementImpl.lo -rm -f xercesc/dom/impl/DOMElementNSImpl.$(OBJEXT) -rm -f xercesc/dom/impl/DOMElementNSImpl.lo -rm -f xercesc/dom/impl/DOMEntityImpl.$(OBJEXT) -rm -f xercesc/dom/impl/DOMEntityImpl.lo -rm -f xercesc/dom/impl/DOMEntityReferenceImpl.$(OBJEXT) -rm -f xercesc/dom/impl/DOMEntityReferenceImpl.lo -rm -f xercesc/dom/impl/DOMErrorImpl.$(OBJEXT) -rm -f xercesc/dom/impl/DOMErrorImpl.lo -rm -f xercesc/dom/impl/DOMImplementationImpl.$(OBJEXT) -rm -f xercesc/dom/impl/DOMImplementationImpl.lo -rm -f xercesc/dom/impl/DOMImplementationListImpl.$(OBJEXT) -rm -f xercesc/dom/impl/DOMImplementationListImpl.lo -rm -f xercesc/dom/impl/DOMImplementationRegistry.$(OBJEXT) -rm -f xercesc/dom/impl/DOMImplementationRegistry.lo -rm -f xercesc/dom/impl/DOMLSInputImpl.$(OBJEXT) -rm -f xercesc/dom/impl/DOMLSInputImpl.lo -rm -f xercesc/dom/impl/DOMLSOutputImpl.$(OBJEXT) -rm -f xercesc/dom/impl/DOMLSOutputImpl.lo -rm -f xercesc/dom/impl/DOMLSSerializerImpl.$(OBJEXT) -rm -f xercesc/dom/impl/DOMLSSerializerImpl.lo -rm -f xercesc/dom/impl/DOMLocatorImpl.$(OBJEXT) -rm -f xercesc/dom/impl/DOMLocatorImpl.lo -rm -f xercesc/dom/impl/DOMNamedNodeMapImpl.$(OBJEXT) -rm -f xercesc/dom/impl/DOMNamedNodeMapImpl.lo -rm -f xercesc/dom/impl/DOMNodeIDMap.$(OBJEXT) -rm -f xercesc/dom/impl/DOMNodeIDMap.lo -rm -f xercesc/dom/impl/DOMNodeImpl.$(OBJEXT) -rm -f xercesc/dom/impl/DOMNodeImpl.lo -rm -f xercesc/dom/impl/DOMNodeIteratorImpl.$(OBJEXT) -rm -f xercesc/dom/impl/DOMNodeIteratorImpl.lo -rm -f xercesc/dom/impl/DOMNodeListImpl.$(OBJEXT) -rm -f xercesc/dom/impl/DOMNodeListImpl.lo -rm -f xercesc/dom/impl/DOMNodeVector.$(OBJEXT) -rm -f xercesc/dom/impl/DOMNodeVector.lo -rm -f xercesc/dom/impl/DOMNormalizer.$(OBJEXT) -rm -f xercesc/dom/impl/DOMNormalizer.lo -rm -f xercesc/dom/impl/DOMNotationImpl.$(OBJEXT) -rm -f xercesc/dom/impl/DOMNotationImpl.lo -rm -f xercesc/dom/impl/DOMParentNode.$(OBJEXT) -rm -f xercesc/dom/impl/DOMParentNode.lo -rm -f xercesc/dom/impl/DOMProcessingInstructionImpl.$(OBJEXT) -rm -f xercesc/dom/impl/DOMProcessingInstructionImpl.lo -rm -f xercesc/dom/impl/DOMRangeImpl.$(OBJEXT) -rm -f xercesc/dom/impl/DOMRangeImpl.lo -rm -f xercesc/dom/impl/DOMStringListImpl.$(OBJEXT) -rm -f xercesc/dom/impl/DOMStringListImpl.lo -rm -f xercesc/dom/impl/DOMStringPool.$(OBJEXT) -rm -f xercesc/dom/impl/DOMStringPool.lo -rm -f xercesc/dom/impl/DOMTextImpl.$(OBJEXT) -rm -f xercesc/dom/impl/DOMTextImpl.lo -rm -f xercesc/dom/impl/DOMTreeWalkerImpl.$(OBJEXT) -rm -f xercesc/dom/impl/DOMTreeWalkerImpl.lo -rm -f xercesc/dom/impl/DOMTypeInfoImpl.$(OBJEXT) -rm -f xercesc/dom/impl/DOMTypeInfoImpl.lo -rm -f xercesc/dom/impl/DOMXPathExpressionImpl.$(OBJEXT) -rm -f xercesc/dom/impl/DOMXPathExpressionImpl.lo -rm -f xercesc/dom/impl/DOMXPathNSResolverImpl.$(OBJEXT) -rm -f xercesc/dom/impl/DOMXPathNSResolverImpl.lo -rm -f xercesc/dom/impl/DOMXPathResultImpl.$(OBJEXT) -rm -f xercesc/dom/impl/DOMXPathResultImpl.lo -rm -f xercesc/dom/impl/XSDElementNSImpl.$(OBJEXT) -rm -f xercesc/dom/impl/XSDElementNSImpl.lo -rm -f xercesc/framework/BinOutputStream.$(OBJEXT) -rm -f xercesc/framework/BinOutputStream.lo -rm -f xercesc/framework/LocalFileFormatTarget.$(OBJEXT) -rm -f xercesc/framework/LocalFileFormatTarget.lo -rm -f xercesc/framework/LocalFileInputSource.$(OBJEXT) -rm -f xercesc/framework/LocalFileInputSource.lo -rm -f xercesc/framework/MemBufFormatTarget.$(OBJEXT) -rm -f xercesc/framework/MemBufFormatTarget.lo -rm -f xercesc/framework/MemBufInputSource.$(OBJEXT) -rm -f xercesc/framework/MemBufInputSource.lo -rm -f xercesc/framework/StdInInputSource.$(OBJEXT) -rm -f xercesc/framework/StdInInputSource.lo -rm -f xercesc/framework/StdOutFormatTarget.$(OBJEXT) -rm -f xercesc/framework/StdOutFormatTarget.lo -rm -f xercesc/framework/URLInputSource.$(OBJEXT) -rm -f xercesc/framework/URLInputSource.lo -rm -f xercesc/framework/Wrapper4DOMLSInput.$(OBJEXT) -rm -f xercesc/framework/Wrapper4DOMLSInput.lo -rm -f xercesc/framework/Wrapper4InputSource.$(OBJEXT) -rm -f xercesc/framework/Wrapper4InputSource.lo -rm -f xercesc/framework/XMLAttDef.$(OBJEXT) -rm -f xercesc/framework/XMLAttDef.lo -rm -f xercesc/framework/XMLAttDefList.$(OBJEXT) -rm -f xercesc/framework/XMLAttDefList.lo -rm -f xercesc/framework/XMLAttr.$(OBJEXT) -rm -f xercesc/framework/XMLAttr.lo -rm -f xercesc/framework/XMLBuffer.$(OBJEXT) -rm -f xercesc/framework/XMLBuffer.lo -rm -f xercesc/framework/XMLBufferMgr.$(OBJEXT) -rm -f xercesc/framework/XMLBufferMgr.lo -rm -f xercesc/framework/XMLContentModel.$(OBJEXT) -rm -f xercesc/framework/XMLContentModel.lo -rm -f xercesc/framework/XMLDTDDescription.$(OBJEXT) -rm -f xercesc/framework/XMLDTDDescription.lo -rm -f xercesc/framework/XMLElementDecl.$(OBJEXT) -rm -f xercesc/framework/XMLElementDecl.lo -rm -f xercesc/framework/XMLEntityDecl.$(OBJEXT) -rm -f xercesc/framework/XMLEntityDecl.lo -rm -f xercesc/framework/XMLFormatter.$(OBJEXT) -rm -f xercesc/framework/XMLFormatter.lo -rm -f xercesc/framework/XMLGrammarDescription.$(OBJEXT) -rm -f xercesc/framework/XMLGrammarDescription.lo -rm -f xercesc/framework/XMLGrammarPoolImpl.$(OBJEXT) -rm -f xercesc/framework/XMLGrammarPoolImpl.lo -rm -f xercesc/framework/XMLNotationDecl.$(OBJEXT) -rm -f xercesc/framework/XMLNotationDecl.lo -rm -f xercesc/framework/XMLRecognizer.$(OBJEXT) -rm -f xercesc/framework/XMLRecognizer.lo -rm -f xercesc/framework/XMLRefInfo.$(OBJEXT) -rm -f xercesc/framework/XMLRefInfo.lo -rm -f xercesc/framework/XMLSchemaDescription.$(OBJEXT) -rm -f xercesc/framework/XMLSchemaDescription.lo -rm -f xercesc/framework/XMLValidator.$(OBJEXT) -rm -f xercesc/framework/XMLValidator.lo -rm -f xercesc/framework/psvi/PSVIAttribute.$(OBJEXT) -rm -f xercesc/framework/psvi/PSVIAttribute.lo -rm -f xercesc/framework/psvi/PSVIAttributeList.$(OBJEXT) -rm -f xercesc/framework/psvi/PSVIAttributeList.lo -rm -f xercesc/framework/psvi/PSVIElement.$(OBJEXT) -rm -f xercesc/framework/psvi/PSVIElement.lo -rm -f xercesc/framework/psvi/PSVIItem.$(OBJEXT) -rm -f xercesc/framework/psvi/PSVIItem.lo -rm -f xercesc/framework/psvi/XSAnnotation.$(OBJEXT) -rm -f xercesc/framework/psvi/XSAnnotation.lo -rm -f xercesc/framework/psvi/XSAttributeDeclaration.$(OBJEXT) -rm -f xercesc/framework/psvi/XSAttributeDeclaration.lo -rm -f xercesc/framework/psvi/XSAttributeGroupDefinition.$(OBJEXT) -rm -f xercesc/framework/psvi/XSAttributeGroupDefinition.lo -rm -f xercesc/framework/psvi/XSAttributeUse.$(OBJEXT) -rm -f xercesc/framework/psvi/XSAttributeUse.lo -rm -f xercesc/framework/psvi/XSComplexTypeDefinition.$(OBJEXT) -rm -f xercesc/framework/psvi/XSComplexTypeDefinition.lo -rm -f xercesc/framework/psvi/XSElementDeclaration.$(OBJEXT) -rm -f xercesc/framework/psvi/XSElementDeclaration.lo -rm -f xercesc/framework/psvi/XSFacet.$(OBJEXT) -rm -f xercesc/framework/psvi/XSFacet.lo -rm -f xercesc/framework/psvi/XSIDCDefinition.$(OBJEXT) -rm -f xercesc/framework/psvi/XSIDCDefinition.lo -rm -f xercesc/framework/psvi/XSModel.$(OBJEXT) -rm -f xercesc/framework/psvi/XSModel.lo -rm -f xercesc/framework/psvi/XSModelGroup.$(OBJEXT) -rm -f xercesc/framework/psvi/XSModelGroup.lo -rm -f xercesc/framework/psvi/XSModelGroupDefinition.$(OBJEXT) -rm -f xercesc/framework/psvi/XSModelGroupDefinition.lo -rm -f xercesc/framework/psvi/XSMultiValueFacet.$(OBJEXT) -rm -f xercesc/framework/psvi/XSMultiValueFacet.lo -rm -f xercesc/framework/psvi/XSNamespaceItem.$(OBJEXT) -rm -f xercesc/framework/psvi/XSNamespaceItem.lo -rm -f xercesc/framework/psvi/XSNotationDeclaration.$(OBJEXT) -rm -f xercesc/framework/psvi/XSNotationDeclaration.lo -rm -f xercesc/framework/psvi/XSObject.$(OBJEXT) -rm -f xercesc/framework/psvi/XSObject.lo -rm -f xercesc/framework/psvi/XSParticle.$(OBJEXT) -rm -f xercesc/framework/psvi/XSParticle.lo -rm -f xercesc/framework/psvi/XSSimpleTypeDefinition.$(OBJEXT) -rm -f xercesc/framework/psvi/XSSimpleTypeDefinition.lo -rm -f xercesc/framework/psvi/XSTypeDefinition.$(OBJEXT) -rm -f xercesc/framework/psvi/XSTypeDefinition.lo -rm -f xercesc/framework/psvi/XSValue.$(OBJEXT) -rm -f xercesc/framework/psvi/XSValue.lo -rm -f xercesc/framework/psvi/XSWildcard.$(OBJEXT) -rm -f xercesc/framework/psvi/XSWildcard.lo -rm -f xercesc/internal/BinFileOutputStream.$(OBJEXT) -rm -f xercesc/internal/BinFileOutputStream.lo -rm -f xercesc/internal/BinMemOutputStream.$(OBJEXT) -rm -f xercesc/internal/BinMemOutputStream.lo -rm -f xercesc/internal/DGXMLScanner.$(OBJEXT) -rm -f xercesc/internal/DGXMLScanner.lo -rm -f xercesc/internal/ElemStack.$(OBJEXT) -rm -f xercesc/internal/ElemStack.lo -rm -f xercesc/internal/IGXMLScanner.$(OBJEXT) -rm -f xercesc/internal/IGXMLScanner.lo -rm -f xercesc/internal/IGXMLScanner2.$(OBJEXT) -rm -f xercesc/internal/IGXMLScanner2.lo -rm -f xercesc/internal/MemoryManagerImpl.$(OBJEXT) -rm -f xercesc/internal/MemoryManagerImpl.lo -rm -f xercesc/internal/ReaderMgr.$(OBJEXT) -rm -f xercesc/internal/ReaderMgr.lo -rm -f xercesc/internal/SGXMLScanner.$(OBJEXT) -rm -f xercesc/internal/SGXMLScanner.lo -rm -f xercesc/internal/ValidationContextImpl.$(OBJEXT) -rm -f xercesc/internal/ValidationContextImpl.lo -rm -f xercesc/internal/VecAttrListImpl.$(OBJEXT) -rm -f xercesc/internal/VecAttrListImpl.lo -rm -f xercesc/internal/VecAttributesImpl.$(OBJEXT) -rm -f xercesc/internal/VecAttributesImpl.lo -rm -f xercesc/internal/WFXMLScanner.$(OBJEXT) -rm -f xercesc/internal/WFXMLScanner.lo -rm -f xercesc/internal/XMLReader.$(OBJEXT) -rm -f xercesc/internal/XMLReader.lo -rm -f xercesc/internal/XMLScanner.$(OBJEXT) -rm -f xercesc/internal/XMLScanner.lo -rm -f xercesc/internal/XMLScannerResolver.$(OBJEXT) -rm -f xercesc/internal/XMLScannerResolver.lo -rm -f xercesc/internal/XProtoType.$(OBJEXT) -rm -f xercesc/internal/XProtoType.lo -rm -f xercesc/internal/XSAXMLScanner.$(OBJEXT) -rm -f xercesc/internal/XSAXMLScanner.lo -rm -f xercesc/internal/XSObjectFactory.$(OBJEXT) -rm -f xercesc/internal/XSObjectFactory.lo -rm -f xercesc/internal/XSerializeEngine.$(OBJEXT) -rm -f xercesc/internal/XSerializeEngine.lo -rm -f xercesc/internal/XTemplateSerializer.$(OBJEXT) -rm -f xercesc/internal/XTemplateSerializer.lo -rm -f xercesc/parsers/AbstractDOMParser.$(OBJEXT) -rm -f xercesc/parsers/AbstractDOMParser.lo -rm -f xercesc/parsers/DOMLSParserImpl.$(OBJEXT) -rm -f xercesc/parsers/DOMLSParserImpl.lo -rm -f xercesc/parsers/SAX2XMLFilterImpl.$(OBJEXT) -rm -f xercesc/parsers/SAX2XMLFilterImpl.lo -rm -f xercesc/parsers/SAX2XMLReaderImpl.$(OBJEXT) -rm -f xercesc/parsers/SAX2XMLReaderImpl.lo -rm -f xercesc/parsers/SAXParser.$(OBJEXT) -rm -f xercesc/parsers/SAXParser.lo -rm -f xercesc/parsers/XercesDOMParser.$(OBJEXT) -rm -f xercesc/parsers/XercesDOMParser.lo -rm -f xercesc/sax/Dummy.$(OBJEXT) -rm -f xercesc/sax/Dummy.lo -rm -f xercesc/sax/InputSource.$(OBJEXT) -rm -f xercesc/sax/InputSource.lo -rm -f xercesc/sax/SAXException.$(OBJEXT) -rm -f xercesc/sax/SAXException.lo -rm -f xercesc/sax/SAXParseException.$(OBJEXT) -rm -f xercesc/sax/SAXParseException.lo -rm -f xercesc/sax2/sax2Dummy.$(OBJEXT) -rm -f xercesc/sax2/sax2Dummy.lo -rm -f xercesc/util/Base64.$(OBJEXT) -rm -f xercesc/util/Base64.lo -rm -f xercesc/util/BinFileInputStream.$(OBJEXT) -rm -f xercesc/util/BinFileInputStream.lo -rm -f xercesc/util/BinInputStream.$(OBJEXT) -rm -f xercesc/util/BinInputStream.lo -rm -f xercesc/util/BinMemInputStream.$(OBJEXT) -rm -f xercesc/util/BinMemInputStream.lo -rm -f xercesc/util/BitSet.$(OBJEXT) -rm -f xercesc/util/BitSet.lo -rm -f xercesc/util/DefaultPanicHandler.$(OBJEXT) -rm -f xercesc/util/DefaultPanicHandler.lo -rm -f xercesc/util/EncodingValidator.$(OBJEXT) -rm -f xercesc/util/EncodingValidator.lo -rm -f xercesc/util/FileManagers/PosixFileMgr.$(OBJEXT) -rm -f xercesc/util/FileManagers/PosixFileMgr.lo -rm -f xercesc/util/FileManagers/WindowsFileMgr.$(OBJEXT) -rm -f xercesc/util/FileManagers/WindowsFileMgr.lo -rm -f xercesc/util/HeaderDummy.$(OBJEXT) -rm -f xercesc/util/HeaderDummy.lo -rm -f xercesc/util/HexBin.$(OBJEXT) -rm -f xercesc/util/HexBin.lo -rm -f xercesc/util/KVStringPair.$(OBJEXT) -rm -f xercesc/util/KVStringPair.lo -rm -f xercesc/util/MsgLoaders/ICU/ICUMsgLoader.$(OBJEXT) -rm -f xercesc/util/MsgLoaders/ICU/ICUMsgLoader.lo -rm -f xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.$(OBJEXT) -rm -f xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.lo -rm -f xercesc/util/MsgLoaders/MsgCatalog/MsgCatalogLoader.$(OBJEXT) -rm -f xercesc/util/MsgLoaders/MsgCatalog/MsgCatalogLoader.lo -rm -f xercesc/util/MutexManagers/NoThreadMutexMgr.$(OBJEXT) -rm -f xercesc/util/MutexManagers/NoThreadMutexMgr.lo -rm -f xercesc/util/MutexManagers/PosixMutexMgr.$(OBJEXT) -rm -f xercesc/util/MutexManagers/PosixMutexMgr.lo -rm -f xercesc/util/MutexManagers/WindowsMutexMgr.$(OBJEXT) -rm -f xercesc/util/MutexManagers/WindowsMutexMgr.lo -rm -f xercesc/util/Mutexes.$(OBJEXT) -rm -f xercesc/util/Mutexes.lo -rm -f xercesc/util/NetAccessors/BinHTTPInputStreamCommon.$(OBJEXT) -rm -f xercesc/util/NetAccessors/BinHTTPInputStreamCommon.lo -rm -f xercesc/util/NetAccessors/Curl/CurlNetAccessor.$(OBJEXT) -rm -f xercesc/util/NetAccessors/Curl/CurlNetAccessor.lo -rm -f xercesc/util/NetAccessors/Curl/CurlURLInputStream.$(OBJEXT) -rm -f xercesc/util/NetAccessors/Curl/CurlURLInputStream.lo -rm -f xercesc/util/NetAccessors/MacOSURLAccessCF/MacOSURLAccessCF.$(OBJEXT) -rm -f xercesc/util/NetAccessors/MacOSURLAccessCF/MacOSURLAccessCF.lo -rm -f xercesc/util/NetAccessors/MacOSURLAccessCF/URLAccessCFBinInputStream.$(OBJEXT) -rm -f xercesc/util/NetAccessors/MacOSURLAccessCF/URLAccessCFBinInputStream.lo -rm -f xercesc/util/NetAccessors/Socket/SocketNetAccessor.$(OBJEXT) -rm -f xercesc/util/NetAccessors/Socket/SocketNetAccessor.lo -rm -f xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.$(OBJEXT) -rm -f xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.lo -rm -f xercesc/util/NetAccessors/WinSock/BinHTTPURLInputStream.$(OBJEXT) -rm -f xercesc/util/NetAccessors/WinSock/BinHTTPURLInputStream.lo -rm -f xercesc/util/NetAccessors/WinSock/WinSockNetAccessor.$(OBJEXT) -rm -f xercesc/util/NetAccessors/WinSock/WinSockNetAccessor.lo -rm -f xercesc/util/PSVIUni.$(OBJEXT) -rm -f xercesc/util/PSVIUni.lo -rm -f xercesc/util/PanicHandler.$(OBJEXT) -rm -f xercesc/util/PanicHandler.lo -rm -f xercesc/util/PlatformUtils.$(OBJEXT) -rm -f xercesc/util/PlatformUtils.lo -rm -f xercesc/util/QName.$(OBJEXT) -rm -f xercesc/util/QName.lo -rm -f xercesc/util/StringPool.$(OBJEXT) -rm -f xercesc/util/StringPool.lo -rm -f xercesc/util/SynchronizedStringPool.$(OBJEXT) -rm -f xercesc/util/SynchronizedStringPool.lo -rm -f xercesc/util/TransService.$(OBJEXT) -rm -f xercesc/util/TransService.lo -rm -f xercesc/util/Transcoders/ICU/ICUTransService.$(OBJEXT) -rm -f xercesc/util/Transcoders/ICU/ICUTransService.lo -rm -f xercesc/util/Transcoders/Iconv/IconvTransService.$(OBJEXT) -rm -f xercesc/util/Transcoders/Iconv/IconvTransService.lo -rm -f xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.$(OBJEXT) -rm -f xercesc/util/Transcoders/IconvGNU/IconvGNUTransService.lo -rm -f xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.$(OBJEXT) -rm -f xercesc/util/Transcoders/MacOSUnicodeConverter/MacOSUnicodeConverter.lo -rm -f xercesc/util/Transcoders/Win32/Win32TransService.$(OBJEXT) -rm -f xercesc/util/Transcoders/Win32/Win32TransService.lo -rm -f xercesc/util/XML256TableTranscoder.$(OBJEXT) -rm -f xercesc/util/XML256TableTranscoder.lo -rm -f xercesc/util/XML88591Transcoder.$(OBJEXT) -rm -f xercesc/util/XML88591Transcoder.lo -rm -f xercesc/util/XMLASCIITranscoder.$(OBJEXT) -rm -f xercesc/util/XMLASCIITranscoder.lo -rm -f xercesc/util/XMLAbstractDoubleFloat.$(OBJEXT) -rm -f xercesc/util/XMLAbstractDoubleFloat.lo -rm -f xercesc/util/XMLBigDecimal.$(OBJEXT) -rm -f xercesc/util/XMLBigDecimal.lo -rm -f xercesc/util/XMLBigInteger.$(OBJEXT) -rm -f xercesc/util/XMLBigInteger.lo -rm -f xercesc/util/XMLChTranscoder.$(OBJEXT) -rm -f xercesc/util/XMLChTranscoder.lo -rm -f xercesc/util/XMLChar.$(OBJEXT) -rm -f xercesc/util/XMLChar.lo -rm -f xercesc/util/XMLDateTime.$(OBJEXT) -rm -f xercesc/util/XMLDateTime.lo -rm -f xercesc/util/XMLDouble.$(OBJEXT) -rm -f xercesc/util/XMLDouble.lo -rm -f xercesc/util/XMLEBCDICTranscoder.$(OBJEXT) -rm -f xercesc/util/XMLEBCDICTranscoder.lo -rm -f xercesc/util/XMLException.$(OBJEXT) -rm -f xercesc/util/XMLException.lo -rm -f xercesc/util/XMLFloat.$(OBJEXT) -rm -f xercesc/util/XMLFloat.lo -rm -f xercesc/util/XMLIBM1047Transcoder.$(OBJEXT) -rm -f xercesc/util/XMLIBM1047Transcoder.lo -rm -f xercesc/util/XMLIBM1140Transcoder.$(OBJEXT) -rm -f xercesc/util/XMLIBM1140Transcoder.lo -rm -f xercesc/util/XMLInitializer.$(OBJEXT) -rm -f xercesc/util/XMLInitializer.lo -rm -f xercesc/util/XMLMsgLoader.$(OBJEXT) -rm -f xercesc/util/XMLMsgLoader.lo -rm -f xercesc/util/XMLNumber.$(OBJEXT) -rm -f xercesc/util/XMLNumber.lo -rm -f xercesc/util/XMLString.$(OBJEXT) -rm -f xercesc/util/XMLString.lo -rm -f xercesc/util/XMLStringTokenizer.$(OBJEXT) -rm -f xercesc/util/XMLStringTokenizer.lo -rm -f xercesc/util/XMLUCS4Transcoder.$(OBJEXT) -rm -f xercesc/util/XMLUCS4Transcoder.lo -rm -f xercesc/util/XMLURL.$(OBJEXT) -rm -f xercesc/util/XMLURL.lo -rm -f xercesc/util/XMLUTF16Transcoder.$(OBJEXT) -rm -f xercesc/util/XMLUTF16Transcoder.lo -rm -f xercesc/util/XMLUTF8Transcoder.$(OBJEXT) -rm -f xercesc/util/XMLUTF8Transcoder.lo -rm -f xercesc/util/XMLUni.$(OBJEXT) -rm -f xercesc/util/XMLUni.lo -rm -f xercesc/util/XMLUri.$(OBJEXT) -rm -f xercesc/util/XMLUri.lo -rm -f xercesc/util/XMLWin1252Transcoder.$(OBJEXT) -rm -f xercesc/util/XMLWin1252Transcoder.lo -rm -f xercesc/util/XMemory.$(OBJEXT) -rm -f xercesc/util/XMemory.lo -rm -f xercesc/util/regx/ASCIIRangeFactory.$(OBJEXT) -rm -f xercesc/util/regx/ASCIIRangeFactory.lo -rm -f xercesc/util/regx/BMPattern.$(OBJEXT) -rm -f xercesc/util/regx/BMPattern.lo -rm -f xercesc/util/regx/BlockRangeFactory.$(OBJEXT) -rm -f xercesc/util/regx/BlockRangeFactory.lo -rm -f xercesc/util/regx/CharToken.$(OBJEXT) -rm -f xercesc/util/regx/CharToken.lo -rm -f xercesc/util/regx/ClosureToken.$(OBJEXT) -rm -f xercesc/util/regx/ClosureToken.lo -rm -f xercesc/util/regx/ConcatToken.$(OBJEXT) -rm -f xercesc/util/regx/ConcatToken.lo -rm -f xercesc/util/regx/Match.$(OBJEXT) -rm -f xercesc/util/regx/Match.lo -rm -f xercesc/util/regx/Op.$(OBJEXT) -rm -f xercesc/util/regx/Op.lo -rm -f xercesc/util/regx/OpFactory.$(OBJEXT) -rm -f xercesc/util/regx/OpFactory.lo -rm -f xercesc/util/regx/ParenToken.$(OBJEXT) -rm -f xercesc/util/regx/ParenToken.lo -rm -f xercesc/util/regx/ParserForXMLSchema.$(OBJEXT) -rm -f xercesc/util/regx/ParserForXMLSchema.lo -rm -f xercesc/util/regx/RangeFactory.$(OBJEXT) -rm -f xercesc/util/regx/RangeFactory.lo -rm -f xercesc/util/regx/RangeToken.$(OBJEXT) -rm -f xercesc/util/regx/RangeToken.lo -rm -f xercesc/util/regx/RangeTokenMap.$(OBJEXT) -rm -f xercesc/util/regx/RangeTokenMap.lo -rm -f xercesc/util/regx/RegularExpression.$(OBJEXT) -rm -f xercesc/util/regx/RegularExpression.lo -rm -f xercesc/util/regx/RegxParser.$(OBJEXT) -rm -f xercesc/util/regx/RegxParser.lo -rm -f xercesc/util/regx/RegxUtil.$(OBJEXT) -rm -f xercesc/util/regx/RegxUtil.lo -rm -f xercesc/util/regx/StringToken.$(OBJEXT) -rm -f xercesc/util/regx/StringToken.lo -rm -f xercesc/util/regx/Token.$(OBJEXT) -rm -f xercesc/util/regx/Token.lo -rm -f xercesc/util/regx/TokenFactory.$(OBJEXT) -rm -f xercesc/util/regx/TokenFactory.lo -rm -f xercesc/util/regx/UnicodeRangeFactory.$(OBJEXT) -rm -f xercesc/util/regx/UnicodeRangeFactory.lo -rm -f xercesc/util/regx/UnionToken.$(OBJEXT) -rm -f xercesc/util/regx/UnionToken.lo -rm -f xercesc/util/regx/XMLRangeFactory.$(OBJEXT) -rm -f xercesc/util/regx/XMLRangeFactory.lo -rm -f xercesc/util/regx/XMLUniCharacter.$(OBJEXT) -rm -f xercesc/util/regx/XMLUniCharacter.lo -rm -f xercesc/validators/DTD/DTDAttDef.$(OBJEXT) -rm -f xercesc/validators/DTD/DTDAttDef.lo -rm -f xercesc/validators/DTD/DTDAttDefList.$(OBJEXT) -rm -f xercesc/validators/DTD/DTDAttDefList.lo -rm -f xercesc/validators/DTD/DTDElementDecl.$(OBJEXT) -rm -f xercesc/validators/DTD/DTDElementDecl.lo -rm -f xercesc/validators/DTD/DTDEntityDecl.$(OBJEXT) -rm -f xercesc/validators/DTD/DTDEntityDecl.lo -rm -f xercesc/validators/DTD/DTDGrammar.$(OBJEXT) -rm -f xercesc/validators/DTD/DTDGrammar.lo -rm -f xercesc/validators/DTD/DTDScanner.$(OBJEXT) -rm -f xercesc/validators/DTD/DTDScanner.lo -rm -f xercesc/validators/DTD/DTDValidator.$(OBJEXT) -rm -f xercesc/validators/DTD/DTDValidator.lo -rm -f xercesc/validators/DTD/XMLDTDDescriptionImpl.$(OBJEXT) -rm -f xercesc/validators/DTD/XMLDTDDescriptionImpl.lo -rm -f xercesc/validators/common/AllContentModel.$(OBJEXT) -rm -f xercesc/validators/common/AllContentModel.lo -rm -f xercesc/validators/common/CMAny.$(OBJEXT) -rm -f xercesc/validators/common/CMAny.lo -rm -f xercesc/validators/common/CMBinaryOp.$(OBJEXT) -rm -f xercesc/validators/common/CMBinaryOp.lo -rm -f xercesc/validators/common/CMUnaryOp.$(OBJEXT) -rm -f xercesc/validators/common/CMUnaryOp.lo -rm -f xercesc/validators/common/ContentLeafNameTypeVector.$(OBJEXT) -rm -f xercesc/validators/common/ContentLeafNameTypeVector.lo -rm -f xercesc/validators/common/ContentSpecNode.$(OBJEXT) -rm -f xercesc/validators/common/ContentSpecNode.lo -rm -f xercesc/validators/common/DFAContentModel.$(OBJEXT) -rm -f xercesc/validators/common/DFAContentModel.lo -rm -f xercesc/validators/common/Grammar.$(OBJEXT) -rm -f xercesc/validators/common/Grammar.lo -rm -f xercesc/validators/common/GrammarResolver.$(OBJEXT) -rm -f xercesc/validators/common/GrammarResolver.lo -rm -f xercesc/validators/common/MixedContentModel.$(OBJEXT) -rm -f xercesc/validators/common/MixedContentModel.lo -rm -f xercesc/validators/common/SimpleContentModel.$(OBJEXT) -rm -f xercesc/validators/common/SimpleContentModel.lo -rm -f xercesc/validators/datatype/AbstractNumericFacetValidator.$(OBJEXT) -rm -f xercesc/validators/datatype/AbstractNumericFacetValidator.lo -rm -f xercesc/validators/datatype/AbstractNumericValidator.$(OBJEXT) -rm -f xercesc/validators/datatype/AbstractNumericValidator.lo -rm -f xercesc/validators/datatype/AbstractStringValidator.$(OBJEXT) -rm -f xercesc/validators/datatype/AbstractStringValidator.lo -rm -f xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.$(OBJEXT) -rm -f xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.lo -rm -f xercesc/validators/datatype/AnyURIDatatypeValidator.$(OBJEXT) -rm -f xercesc/validators/datatype/AnyURIDatatypeValidator.lo -rm -f xercesc/validators/datatype/Base64BinaryDatatypeValidator.$(OBJEXT) -rm -f xercesc/validators/datatype/Base64BinaryDatatypeValidator.lo -rm -f xercesc/validators/datatype/BooleanDatatypeValidator.$(OBJEXT) -rm -f xercesc/validators/datatype/BooleanDatatypeValidator.lo -rm -f xercesc/validators/datatype/DatatypeValidator.$(OBJEXT) -rm -f xercesc/validators/datatype/DatatypeValidator.lo -rm -f xercesc/validators/datatype/DatatypeValidatorFactory.$(OBJEXT) -rm -f xercesc/validators/datatype/DatatypeValidatorFactory.lo -rm -f xercesc/validators/datatype/DateDatatypeValidator.$(OBJEXT) -rm -f xercesc/validators/datatype/DateDatatypeValidator.lo -rm -f xercesc/validators/datatype/DateTimeDatatypeValidator.$(OBJEXT) -rm -f xercesc/validators/datatype/DateTimeDatatypeValidator.lo -rm -f xercesc/validators/datatype/DateTimeValidator.$(OBJEXT) -rm -f xercesc/validators/datatype/DateTimeValidator.lo -rm -f xercesc/validators/datatype/DayDatatypeValidator.$(OBJEXT) -rm -f xercesc/validators/datatype/DayDatatypeValidator.lo -rm -f xercesc/validators/datatype/DecimalDatatypeValidator.$(OBJEXT) -rm -f xercesc/validators/datatype/DecimalDatatypeValidator.lo -rm -f xercesc/validators/datatype/DoubleDatatypeValidator.$(OBJEXT) -rm -f xercesc/validators/datatype/DoubleDatatypeValidator.lo -rm -f xercesc/validators/datatype/DurationDatatypeValidator.$(OBJEXT) -rm -f xercesc/validators/datatype/DurationDatatypeValidator.lo -rm -f xercesc/validators/datatype/ENTITYDatatypeValidator.$(OBJEXT) -rm -f xercesc/validators/datatype/ENTITYDatatypeValidator.lo -rm -f xercesc/validators/datatype/FloatDatatypeValidator.$(OBJEXT) -rm -f xercesc/validators/datatype/FloatDatatypeValidator.lo -rm -f xercesc/validators/datatype/HexBinaryDatatypeValidator.$(OBJEXT) -rm -f xercesc/validators/datatype/HexBinaryDatatypeValidator.lo -rm -f xercesc/validators/datatype/IDDatatypeValidator.$(OBJEXT) -rm -f xercesc/validators/datatype/IDDatatypeValidator.lo -rm -f xercesc/validators/datatype/IDREFDatatypeValidator.$(OBJEXT) -rm -f xercesc/validators/datatype/IDREFDatatypeValidator.lo -rm -f xercesc/validators/datatype/ListDatatypeValidator.$(OBJEXT) -rm -f xercesc/validators/datatype/ListDatatypeValidator.lo -rm -f xercesc/validators/datatype/MonthDatatypeValidator.$(OBJEXT) -rm -f xercesc/validators/datatype/MonthDatatypeValidator.lo -rm -f xercesc/validators/datatype/MonthDayDatatypeValidator.$(OBJEXT) -rm -f xercesc/validators/datatype/MonthDayDatatypeValidator.lo -rm -f xercesc/validators/datatype/NCNameDatatypeValidator.$(OBJEXT) -rm -f xercesc/validators/datatype/NCNameDatatypeValidator.lo -rm -f xercesc/validators/datatype/NOTATIONDatatypeValidator.$(OBJEXT) -rm -f xercesc/validators/datatype/NOTATIONDatatypeValidator.lo -rm -f xercesc/validators/datatype/NameDatatypeValidator.$(OBJEXT) -rm -f xercesc/validators/datatype/NameDatatypeValidator.lo -rm -f xercesc/validators/datatype/QNameDatatypeValidator.$(OBJEXT) -rm -f xercesc/validators/datatype/QNameDatatypeValidator.lo -rm -f xercesc/validators/datatype/StringDatatypeValidator.$(OBJEXT) -rm -f xercesc/validators/datatype/StringDatatypeValidator.lo -rm -f xercesc/validators/datatype/TimeDatatypeValidator.$(OBJEXT) -rm -f xercesc/validators/datatype/TimeDatatypeValidator.lo -rm -f xercesc/validators/datatype/UnionDatatypeValidator.$(OBJEXT) -rm -f xercesc/validators/datatype/UnionDatatypeValidator.lo -rm -f xercesc/validators/datatype/XMLCanRepGroup.$(OBJEXT) -rm -f xercesc/validators/datatype/XMLCanRepGroup.lo -rm -f xercesc/validators/datatype/YearDatatypeValidator.$(OBJEXT) -rm -f xercesc/validators/datatype/YearDatatypeValidator.lo -rm -f xercesc/validators/datatype/YearMonthDatatypeValidator.$(OBJEXT) -rm -f xercesc/validators/datatype/YearMonthDatatypeValidator.lo -rm -f xercesc/validators/schema/ComplexTypeInfo.$(OBJEXT) -rm -f xercesc/validators/schema/ComplexTypeInfo.lo -rm -f xercesc/validators/schema/GeneralAttributeCheck.$(OBJEXT) -rm -f xercesc/validators/schema/GeneralAttributeCheck.lo -rm -f xercesc/validators/schema/NamespaceScope.$(OBJEXT) -rm -f xercesc/validators/schema/NamespaceScope.lo -rm -f xercesc/validators/schema/SchemaAttDef.$(OBJEXT) -rm -f xercesc/validators/schema/SchemaAttDef.lo -rm -f xercesc/validators/schema/SchemaAttDefList.$(OBJEXT) -rm -f xercesc/validators/schema/SchemaAttDefList.lo -rm -f xercesc/validators/schema/SchemaElementDecl.$(OBJEXT) -rm -f xercesc/validators/schema/SchemaElementDecl.lo -rm -f xercesc/validators/schema/SchemaGrammar.$(OBJEXT) -rm -f xercesc/validators/schema/SchemaGrammar.lo -rm -f xercesc/validators/schema/SchemaInfo.$(OBJEXT) -rm -f xercesc/validators/schema/SchemaInfo.lo -rm -f xercesc/validators/schema/SchemaSymbols.$(OBJEXT) -rm -f xercesc/validators/schema/SchemaSymbols.lo -rm -f xercesc/validators/schema/SchemaValidator.$(OBJEXT) -rm -f xercesc/validators/schema/SchemaValidator.lo -rm -f xercesc/validators/schema/SubstitutionGroupComparator.$(OBJEXT) -rm -f xercesc/validators/schema/SubstitutionGroupComparator.lo -rm -f xercesc/validators/schema/TraverseSchema.$(OBJEXT) -rm -f xercesc/validators/schema/TraverseSchema.lo -rm -f xercesc/validators/schema/XMLSchemaDescriptionImpl.$(OBJEXT) -rm -f xercesc/validators/schema/XMLSchemaDescriptionImpl.lo -rm -f xercesc/validators/schema/XSDDOMParser.$(OBJEXT) -rm -f xercesc/validators/schema/XSDDOMParser.lo -rm -f xercesc/validators/schema/XSDErrorReporter.$(OBJEXT) -rm -f xercesc/validators/schema/XSDErrorReporter.lo -rm -f xercesc/validators/schema/XSDLocator.$(OBJEXT) -rm -f xercesc/validators/schema/XSDLocator.lo -rm -f xercesc/validators/schema/XUtil.$(OBJEXT) -rm -f xercesc/validators/schema/XUtil.lo -rm -f xercesc/validators/schema/XercesAttGroupInfo.$(OBJEXT) -rm -f xercesc/validators/schema/XercesAttGroupInfo.lo -rm -f xercesc/validators/schema/XercesElementWildcard.$(OBJEXT) -rm -f xercesc/validators/schema/XercesElementWildcard.lo -rm -f xercesc/validators/schema/XercesGroupInfo.$(OBJEXT) -rm -f xercesc/validators/schema/XercesGroupInfo.lo -rm -f xercesc/validators/schema/identity/FieldActivator.$(OBJEXT) -rm -f xercesc/validators/schema/identity/FieldActivator.lo -rm -f xercesc/validators/schema/identity/FieldValueMap.$(OBJEXT) -rm -f xercesc/validators/schema/identity/FieldValueMap.lo -rm -f xercesc/validators/schema/identity/IC_Field.$(OBJEXT) -rm -f xercesc/validators/schema/identity/IC_Field.lo -rm -f xercesc/validators/schema/identity/IC_Key.$(OBJEXT) -rm -f xercesc/validators/schema/identity/IC_Key.lo -rm -f xercesc/validators/schema/identity/IC_KeyRef.$(OBJEXT) -rm -f xercesc/validators/schema/identity/IC_KeyRef.lo -rm -f xercesc/validators/schema/identity/IC_Selector.$(OBJEXT) -rm -f xercesc/validators/schema/identity/IC_Selector.lo -rm -f xercesc/validators/schema/identity/IC_Unique.$(OBJEXT) -rm -f xercesc/validators/schema/identity/IC_Unique.lo -rm -f xercesc/validators/schema/identity/IdentityConstraint.$(OBJEXT) -rm -f xercesc/validators/schema/identity/IdentityConstraint.lo -rm -f xercesc/validators/schema/identity/IdentityConstraintHandler.$(OBJEXT) -rm -f xercesc/validators/schema/identity/IdentityConstraintHandler.lo -rm -f xercesc/validators/schema/identity/ValueStore.$(OBJEXT) -rm -f xercesc/validators/schema/identity/ValueStore.lo -rm -f xercesc/validators/schema/identity/ValueStoreCache.$(OBJEXT) -rm -f xercesc/validators/schema/identity/ValueStoreCache.lo -rm -f xercesc/validators/schema/identity/XPathMatcher.$(OBJEXT) -rm -f xercesc/validators/schema/identity/XPathMatcher.lo -rm -f xercesc/validators/schema/identity/XPathMatcherStack.$(OBJEXT) -rm -f xercesc/validators/schema/identity/XPathMatcherStack.lo -rm -f xercesc/validators/schema/identity/XPathSymbols.$(OBJEXT) -rm -f xercesc/validators/schema/identity/XPathSymbols.lo -rm -f xercesc/validators/schema/identity/XercesXPath.$(OBJEXT) -rm -f xercesc/validators/schema/identity/XercesXPath.lo -rm -f xercesc/xinclude/XIncludeDOMDocumentProcessor.$(OBJEXT) -rm -f xercesc/xinclude/XIncludeDOMDocumentProcessor.lo -rm -f xercesc/xinclude/XIncludeLocation.$(OBJEXT) -rm -f xercesc/xinclude/XIncludeLocation.lo -rm -f xercesc/xinclude/XIncludeUtils.$(OBJEXT) -rm -f xercesc/xinclude/XIncludeUtils.lo distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/stricmp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strnicmp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/towlower.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/towupper.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/root_res.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xercesc_messages.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/$(DEPDIR)/DOMException.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/$(DEPDIR)/DOMLSException.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/$(DEPDIR)/DOMRangeException.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/$(DEPDIR)/DOMXPathException.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMAttrImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMAttrMapImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMAttrNSImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMCDATASectionImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMCharacterDataImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMChildNode.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMCommentImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMConfigurationImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMDeepNodeListImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMDocumentFragmentImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMDocumentImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMDocumentTypeImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMElementImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMElementNSImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMEntityImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMEntityReferenceImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMErrorImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMImplementationImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMImplementationListImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMImplementationRegistry.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMLSInputImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMLSOutputImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMLSSerializerImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMLocatorImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMNamedNodeMapImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMNodeIDMap.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMNodeImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMNodeIteratorImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMNodeListImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMNodeVector.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMNormalizer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMNotationImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMParentNode.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMProcessingInstructionImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMRangeImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMStringListImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMStringPool.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMTextImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMTreeWalkerImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMTypeInfoImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMXPathExpressionImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMXPathNSResolverImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/DOMXPathResultImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/dom/impl/$(DEPDIR)/XSDElementNSImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/$(DEPDIR)/BinOutputStream.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/$(DEPDIR)/LocalFileFormatTarget.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/$(DEPDIR)/LocalFileInputSource.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/$(DEPDIR)/MemBufFormatTarget.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/$(DEPDIR)/MemBufInputSource.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/$(DEPDIR)/StdInInputSource.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/$(DEPDIR)/StdOutFormatTarget.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/$(DEPDIR)/URLInputSource.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/$(DEPDIR)/Wrapper4DOMLSInput.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/$(DEPDIR)/Wrapper4InputSource.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/$(DEPDIR)/XMLAttDef.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/$(DEPDIR)/XMLAttDefList.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/$(DEPDIR)/XMLAttr.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/$(DEPDIR)/XMLBuffer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/$(DEPDIR)/XMLBufferMgr.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/$(DEPDIR)/XMLContentModel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/$(DEPDIR)/XMLDTDDescription.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/$(DEPDIR)/XMLElementDecl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/$(DEPDIR)/XMLEntityDecl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/$(DEPDIR)/XMLFormatter.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/$(DEPDIR)/XMLGrammarDescription.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/$(DEPDIR)/XMLGrammarPoolImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/$(DEPDIR)/XMLNotationDecl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/$(DEPDIR)/XMLRecognizer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/$(DEPDIR)/XMLRefInfo.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/$(DEPDIR)/XMLSchemaDescription.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/$(DEPDIR)/XMLValidator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/psvi/$(DEPDIR)/PSVIAttribute.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/psvi/$(DEPDIR)/PSVIAttributeList.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/psvi/$(DEPDIR)/PSVIElement.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/psvi/$(DEPDIR)/PSVIItem.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/psvi/$(DEPDIR)/XSAnnotation.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/psvi/$(DEPDIR)/XSAttributeDeclaration.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/psvi/$(DEPDIR)/XSAttributeGroupDefinition.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/psvi/$(DEPDIR)/XSAttributeUse.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/psvi/$(DEPDIR)/XSComplexTypeDefinition.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/psvi/$(DEPDIR)/XSElementDeclaration.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/psvi/$(DEPDIR)/XSFacet.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/psvi/$(DEPDIR)/XSIDCDefinition.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/psvi/$(DEPDIR)/XSModel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/psvi/$(DEPDIR)/XSModelGroup.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/psvi/$(DEPDIR)/XSModelGroupDefinition.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/psvi/$(DEPDIR)/XSMultiValueFacet.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/psvi/$(DEPDIR)/XSNamespaceItem.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/psvi/$(DEPDIR)/XSNotationDeclaration.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/psvi/$(DEPDIR)/XSObject.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/psvi/$(DEPDIR)/XSParticle.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/psvi/$(DEPDIR)/XSSimpleTypeDefinition.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/psvi/$(DEPDIR)/XSTypeDefinition.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/psvi/$(DEPDIR)/XSValue.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/framework/psvi/$(DEPDIR)/XSWildcard.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/internal/$(DEPDIR)/BinFileOutputStream.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/internal/$(DEPDIR)/BinMemOutputStream.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/internal/$(DEPDIR)/DGXMLScanner.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/internal/$(DEPDIR)/ElemStack.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/internal/$(DEPDIR)/IGXMLScanner.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/internal/$(DEPDIR)/IGXMLScanner2.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/internal/$(DEPDIR)/MemoryManagerImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/internal/$(DEPDIR)/ReaderMgr.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/internal/$(DEPDIR)/SGXMLScanner.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/internal/$(DEPDIR)/ValidationContextImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/internal/$(DEPDIR)/VecAttrListImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/internal/$(DEPDIR)/VecAttributesImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/internal/$(DEPDIR)/WFXMLScanner.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/internal/$(DEPDIR)/XMLReader.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/internal/$(DEPDIR)/XMLScanner.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/internal/$(DEPDIR)/XMLScannerResolver.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/internal/$(DEPDIR)/XProtoType.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/internal/$(DEPDIR)/XSAXMLScanner.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/internal/$(DEPDIR)/XSObjectFactory.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/internal/$(DEPDIR)/XSerializeEngine.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/internal/$(DEPDIR)/XTemplateSerializer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/parsers/$(DEPDIR)/AbstractDOMParser.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/parsers/$(DEPDIR)/DOMLSParserImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/parsers/$(DEPDIR)/SAX2XMLFilterImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/parsers/$(DEPDIR)/SAX2XMLReaderImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/parsers/$(DEPDIR)/SAXParser.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/parsers/$(DEPDIR)/XercesDOMParser.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/sax/$(DEPDIR)/Dummy.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/sax/$(DEPDIR)/InputSource.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/sax/$(DEPDIR)/SAXException.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/sax/$(DEPDIR)/SAXParseException.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/sax2/$(DEPDIR)/sax2Dummy.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/Base64.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/BinFileInputStream.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/BinInputStream.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/BinMemInputStream.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/BitSet.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/DefaultPanicHandler.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/EncodingValidator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/HeaderDummy.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/HexBin.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/KVStringPair.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/Mutexes.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/PSVIUni.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/PanicHandler.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/PlatformUtils.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/QName.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/StringPool.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/SynchronizedStringPool.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/TransService.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/XML256TableTranscoder.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/XML88591Transcoder.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/XMLASCIITranscoder.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/XMLAbstractDoubleFloat.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/XMLBigDecimal.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/XMLBigInteger.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/XMLChTranscoder.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/XMLChar.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/XMLDateTime.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/XMLDouble.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/XMLEBCDICTranscoder.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/XMLException.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/XMLFloat.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/XMLIBM1047Transcoder.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/XMLIBM1140Transcoder.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/XMLInitializer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/XMLMsgLoader.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/XMLNumber.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/XMLString.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/XMLStringTokenizer.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/XMLUCS4Transcoder.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/XMLURL.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/XMLUTF16Transcoder.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/XMLUTF8Transcoder.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/XMLUni.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/XMLUri.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/XMLWin1252Transcoder.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/$(DEPDIR)/XMemory.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/FileManagers/$(DEPDIR)/PosixFileMgr.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/FileManagers/$(DEPDIR)/WindowsFileMgr.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/MsgLoaders/ICU/$(DEPDIR)/ICUMsgLoader.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/MsgLoaders/InMemory/$(DEPDIR)/InMemMsgLoader.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/MsgLoaders/MsgCatalog/$(DEPDIR)/MsgCatalogLoader.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/MutexManagers/$(DEPDIR)/NoThreadMutexMgr.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/MutexManagers/$(DEPDIR)/PosixMutexMgr.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/MutexManagers/$(DEPDIR)/WindowsMutexMgr.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/NetAccessors/$(DEPDIR)/BinHTTPInputStreamCommon.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/NetAccessors/Curl/$(DEPDIR)/CurlNetAccessor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/NetAccessors/Curl/$(DEPDIR)/CurlURLInputStream.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/NetAccessors/MacOSURLAccessCF/$(DEPDIR)/MacOSURLAccessCF.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/NetAccessors/MacOSURLAccessCF/$(DEPDIR)/URLAccessCFBinInputStream.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/NetAccessors/Socket/$(DEPDIR)/SocketNetAccessor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/NetAccessors/Socket/$(DEPDIR)/UnixHTTPURLInputStream.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/NetAccessors/WinSock/$(DEPDIR)/BinHTTPURLInputStream.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/NetAccessors/WinSock/$(DEPDIR)/WinSockNetAccessor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/Transcoders/ICU/$(DEPDIR)/ICUTransService.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/Transcoders/Iconv/$(DEPDIR)/IconvTransService.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/Transcoders/IconvGNU/$(DEPDIR)/IconvGNUTransService.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/Transcoders/MacOSUnicodeConverter/$(DEPDIR)/MacOSUnicodeConverter.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/Transcoders/Win32/$(DEPDIR)/Win32TransService.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/regx/$(DEPDIR)/ASCIIRangeFactory.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/regx/$(DEPDIR)/BMPattern.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/regx/$(DEPDIR)/BlockRangeFactory.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/regx/$(DEPDIR)/CharToken.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/regx/$(DEPDIR)/ClosureToken.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/regx/$(DEPDIR)/ConcatToken.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/regx/$(DEPDIR)/Match.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/regx/$(DEPDIR)/Op.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/regx/$(DEPDIR)/OpFactory.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/regx/$(DEPDIR)/ParenToken.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/regx/$(DEPDIR)/ParserForXMLSchema.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/regx/$(DEPDIR)/RangeFactory.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/regx/$(DEPDIR)/RangeToken.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/regx/$(DEPDIR)/RangeTokenMap.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/regx/$(DEPDIR)/RegularExpression.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/regx/$(DEPDIR)/RegxParser.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/regx/$(DEPDIR)/RegxUtil.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/regx/$(DEPDIR)/StringToken.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/regx/$(DEPDIR)/Token.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/regx/$(DEPDIR)/TokenFactory.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/regx/$(DEPDIR)/UnicodeRangeFactory.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/regx/$(DEPDIR)/UnionToken.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/regx/$(DEPDIR)/XMLRangeFactory.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/util/regx/$(DEPDIR)/XMLUniCharacter.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/DTD/$(DEPDIR)/DTDAttDef.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/DTD/$(DEPDIR)/DTDAttDefList.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/DTD/$(DEPDIR)/DTDElementDecl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/DTD/$(DEPDIR)/DTDEntityDecl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/DTD/$(DEPDIR)/DTDGrammar.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/DTD/$(DEPDIR)/DTDScanner.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/DTD/$(DEPDIR)/DTDValidator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/DTD/$(DEPDIR)/XMLDTDDescriptionImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/common/$(DEPDIR)/AllContentModel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/common/$(DEPDIR)/CMAny.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/common/$(DEPDIR)/CMBinaryOp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/common/$(DEPDIR)/CMUnaryOp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/common/$(DEPDIR)/ContentLeafNameTypeVector.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/common/$(DEPDIR)/ContentSpecNode.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/common/$(DEPDIR)/DFAContentModel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/common/$(DEPDIR)/Grammar.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/common/$(DEPDIR)/GrammarResolver.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/common/$(DEPDIR)/MixedContentModel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/common/$(DEPDIR)/SimpleContentModel.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/datatype/$(DEPDIR)/AbstractNumericFacetValidator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/datatype/$(DEPDIR)/AbstractNumericValidator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/datatype/$(DEPDIR)/AbstractStringValidator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/datatype/$(DEPDIR)/AnySimpleTypeDatatypeValidator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/datatype/$(DEPDIR)/AnyURIDatatypeValidator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/datatype/$(DEPDIR)/Base64BinaryDatatypeValidator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/datatype/$(DEPDIR)/BooleanDatatypeValidator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/datatype/$(DEPDIR)/DatatypeValidator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/datatype/$(DEPDIR)/DatatypeValidatorFactory.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/datatype/$(DEPDIR)/DateDatatypeValidator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/datatype/$(DEPDIR)/DateTimeDatatypeValidator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/datatype/$(DEPDIR)/DateTimeValidator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/datatype/$(DEPDIR)/DayDatatypeValidator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/datatype/$(DEPDIR)/DecimalDatatypeValidator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/datatype/$(DEPDIR)/DoubleDatatypeValidator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/datatype/$(DEPDIR)/DurationDatatypeValidator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/datatype/$(DEPDIR)/ENTITYDatatypeValidator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/datatype/$(DEPDIR)/FloatDatatypeValidator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/datatype/$(DEPDIR)/HexBinaryDatatypeValidator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/datatype/$(DEPDIR)/IDDatatypeValidator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/datatype/$(DEPDIR)/IDREFDatatypeValidator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/datatype/$(DEPDIR)/ListDatatypeValidator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/datatype/$(DEPDIR)/MonthDatatypeValidator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/datatype/$(DEPDIR)/MonthDayDatatypeValidator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/datatype/$(DEPDIR)/NCNameDatatypeValidator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/datatype/$(DEPDIR)/NOTATIONDatatypeValidator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/datatype/$(DEPDIR)/NameDatatypeValidator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/datatype/$(DEPDIR)/QNameDatatypeValidator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/datatype/$(DEPDIR)/StringDatatypeValidator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/datatype/$(DEPDIR)/TimeDatatypeValidator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/datatype/$(DEPDIR)/UnionDatatypeValidator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/datatype/$(DEPDIR)/XMLCanRepGroup.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/datatype/$(DEPDIR)/YearDatatypeValidator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/datatype/$(DEPDIR)/YearMonthDatatypeValidator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/schema/$(DEPDIR)/ComplexTypeInfo.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/schema/$(DEPDIR)/GeneralAttributeCheck.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/schema/$(DEPDIR)/NamespaceScope.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/schema/$(DEPDIR)/SchemaAttDef.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/schema/$(DEPDIR)/SchemaAttDefList.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/schema/$(DEPDIR)/SchemaElementDecl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/schema/$(DEPDIR)/SchemaGrammar.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/schema/$(DEPDIR)/SchemaInfo.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/schema/$(DEPDIR)/SchemaSymbols.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/schema/$(DEPDIR)/SchemaValidator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/schema/$(DEPDIR)/SubstitutionGroupComparator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/schema/$(DEPDIR)/TraverseSchema.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/schema/$(DEPDIR)/XMLSchemaDescriptionImpl.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/schema/$(DEPDIR)/XSDDOMParser.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/schema/$(DEPDIR)/XSDErrorReporter.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/schema/$(DEPDIR)/XSDLocator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/schema/$(DEPDIR)/XUtil.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/schema/$(DEPDIR)/XercesAttGroupInfo.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/schema/$(DEPDIR)/XercesElementWildcard.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/schema/$(DEPDIR)/XercesGroupInfo.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/schema/identity/$(DEPDIR)/FieldActivator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/schema/identity/$(DEPDIR)/FieldValueMap.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/schema/identity/$(DEPDIR)/IC_Field.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/schema/identity/$(DEPDIR)/IC_Key.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/schema/identity/$(DEPDIR)/IC_KeyRef.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/schema/identity/$(DEPDIR)/IC_Selector.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/schema/identity/$(DEPDIR)/IC_Unique.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/schema/identity/$(DEPDIR)/IdentityConstraint.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/schema/identity/$(DEPDIR)/IdentityConstraintHandler.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/schema/identity/$(DEPDIR)/ValueStore.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/schema/identity/$(DEPDIR)/ValueStoreCache.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/schema/identity/$(DEPDIR)/XPathMatcher.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/schema/identity/$(DEPDIR)/XPathMatcherStack.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/schema/identity/$(DEPDIR)/XPathSymbols.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/validators/schema/identity/$(DEPDIR)/XercesXPath.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/xinclude/$(DEPDIR)/XIncludeDOMDocumentProcessor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/xinclude/$(DEPDIR)/XIncludeLocation.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@xercesc/xinclude/$(DEPDIR)/XIncludeUtils.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.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 -o $@ $< .c.obj: @am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.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 -o $@ `$(CYGPATH_W) '$<'` @XERCES_PRETTY_MAKE_FALSE@.c.lo: @am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.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 $@ $< .cpp.o: @am__fastdepCXX_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` @XERCES_PRETTY_MAKE_FALSE@.cpp.lo: @am__fastdepCXX_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs -rm -rf xercesc/dom/.libs xercesc/dom/_libs -rm -rf xercesc/dom/impl/.libs xercesc/dom/impl/_libs -rm -rf xercesc/framework/.libs xercesc/framework/_libs -rm -rf xercesc/framework/psvi/.libs xercesc/framework/psvi/_libs -rm -rf xercesc/internal/.libs xercesc/internal/_libs -rm -rf xercesc/parsers/.libs xercesc/parsers/_libs -rm -rf xercesc/sax/.libs xercesc/sax/_libs -rm -rf xercesc/sax2/.libs xercesc/sax2/_libs -rm -rf xercesc/util/.libs xercesc/util/_libs -rm -rf xercesc/util/FileManagers/.libs xercesc/util/FileManagers/_libs -rm -rf xercesc/util/MsgLoaders/ICU/.libs xercesc/util/MsgLoaders/ICU/_libs -rm -rf xercesc/util/MsgLoaders/InMemory/.libs xercesc/util/MsgLoaders/InMemory/_libs -rm -rf xercesc/util/MsgLoaders/MsgCatalog/.libs xercesc/util/MsgLoaders/MsgCatalog/_libs -rm -rf xercesc/util/MutexManagers/.libs xercesc/util/MutexManagers/_libs -rm -rf xercesc/util/NetAccessors/.libs xercesc/util/NetAccessors/_libs -rm -rf xercesc/util/NetAccessors/Curl/.libs xercesc/util/NetAccessors/Curl/_libs -rm -rf xercesc/util/NetAccessors/MacOSURLAccessCF/.libs xercesc/util/NetAccessors/MacOSURLAccessCF/_libs -rm -rf xercesc/util/NetAccessors/Socket/.libs xercesc/util/NetAccessors/Socket/_libs -rm -rf xercesc/util/NetAccessors/WinSock/.libs xercesc/util/NetAccessors/WinSock/_libs -rm -rf xercesc/util/Transcoders/ICU/.libs xercesc/util/Transcoders/ICU/_libs -rm -rf xercesc/util/Transcoders/Iconv/.libs xercesc/util/Transcoders/Iconv/_libs -rm -rf xercesc/util/Transcoders/IconvGNU/.libs xercesc/util/Transcoders/IconvGNU/_libs -rm -rf xercesc/util/Transcoders/MacOSUnicodeConverter/.libs xercesc/util/Transcoders/MacOSUnicodeConverter/_libs -rm -rf xercesc/util/Transcoders/Win32/.libs xercesc/util/Transcoders/Win32/_libs -rm -rf xercesc/util/regx/.libs xercesc/util/regx/_libs -rm -rf xercesc/validators/DTD/.libs xercesc/validators/DTD/_libs -rm -rf xercesc/validators/common/.libs xercesc/validators/common/_libs -rm -rf xercesc/validators/datatype/.libs xercesc/validators/datatype/_libs -rm -rf xercesc/validators/schema/.libs xercesc/validators/schema/_libs -rm -rf xercesc/validators/schema/identity/.libs xercesc/validators/schema/identity/_libs -rm -rf xercesc/xinclude/.libs xercesc/xinclude/_libs install-nobase_libxerces_c_laHEADERS: $(nobase_libxerces_c_la_HEADERS) @$(NORMAL_INSTALL) test -z "$(libxerces_c_ladir)" || $(MKDIR_P) "$(DESTDIR)$(libxerces_c_ladir)" @list='$(nobase_libxerces_c_la_HEADERS)'; test -n "$(libxerces_c_ladir)" || list=; \ $(am__nobase_list) | while read dir files; do \ xfiles=; for file in $$files; do \ if test -f "$$file"; then xfiles="$$xfiles $$file"; \ else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ test -z "$$xfiles" || { \ test "x$$dir" = x. || { \ echo "$(MKDIR_P) '$(DESTDIR)$(libxerces_c_ladir)/$$dir'"; \ $(MKDIR_P) "$(DESTDIR)$(libxerces_c_ladir)/$$dir"; }; \ echo " $(INSTALL_HEADER) $$xfiles '$(DESTDIR)$(libxerces_c_ladir)/$$dir'"; \ $(INSTALL_HEADER) $$xfiles "$(DESTDIR)$(libxerces_c_ladir)/$$dir" || exit $$?; }; \ done uninstall-nobase_libxerces_c_laHEADERS: @$(NORMAL_UNINSTALL) @list='$(nobase_libxerces_c_la_HEADERS)'; test -n "$(libxerces_c_ladir)" || list=; \ $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(libxerces_c_ladir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(libxerces_c_ladir)" && rm -f $$files install-nodist_autoconfheadersHEADERS: $(nodist_autoconfheaders_HEADERS) @$(NORMAL_INSTALL) test -z "$(autoconfheadersdir)" || $(MKDIR_P) "$(DESTDIR)$(autoconfheadersdir)" @list='$(nodist_autoconfheaders_HEADERS)'; test -n "$(autoconfheadersdir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(autoconfheadersdir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(autoconfheadersdir)" || exit $$?; \ done uninstall-nodist_autoconfheadersHEADERS: @$(NORMAL_UNINSTALL) @list='$(nodist_autoconfheaders_HEADERS)'; test -n "$(autoconfheadersdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(autoconfheadersdir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(autoconfheadersdir)" && rm -f $$files # 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; \ ($(am__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; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__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) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ 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 || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ 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; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) 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)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__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 "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$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; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-recursive all-am: Makefile $(LTLIBRARIES) $(HEADERS) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(libxerces_c_ladir)" "$(DESTDIR)$(autoconfheadersdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) 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: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -rm -f xercesc/dom/$(DEPDIR)/$(am__dirstamp) -rm -f xercesc/dom/$(am__dirstamp) -rm -f xercesc/dom/impl/$(DEPDIR)/$(am__dirstamp) -rm -f xercesc/dom/impl/$(am__dirstamp) -rm -f xercesc/framework/$(DEPDIR)/$(am__dirstamp) -rm -f xercesc/framework/$(am__dirstamp) -rm -f xercesc/framework/psvi/$(DEPDIR)/$(am__dirstamp) -rm -f xercesc/framework/psvi/$(am__dirstamp) -rm -f xercesc/internal/$(DEPDIR)/$(am__dirstamp) -rm -f xercesc/internal/$(am__dirstamp) -rm -f xercesc/parsers/$(DEPDIR)/$(am__dirstamp) -rm -f xercesc/parsers/$(am__dirstamp) -rm -f xercesc/sax/$(DEPDIR)/$(am__dirstamp) -rm -f xercesc/sax/$(am__dirstamp) -rm -f xercesc/sax2/$(DEPDIR)/$(am__dirstamp) -rm -f xercesc/sax2/$(am__dirstamp) -rm -f xercesc/util/$(DEPDIR)/$(am__dirstamp) -rm -f xercesc/util/$(am__dirstamp) -rm -f xercesc/util/FileManagers/$(DEPDIR)/$(am__dirstamp) -rm -f xercesc/util/FileManagers/$(am__dirstamp) -rm -f xercesc/util/MsgLoaders/ICU/$(DEPDIR)/$(am__dirstamp) -rm -f xercesc/util/MsgLoaders/ICU/$(am__dirstamp) -rm -f xercesc/util/MsgLoaders/InMemory/$(DEPDIR)/$(am__dirstamp) -rm -f xercesc/util/MsgLoaders/InMemory/$(am__dirstamp) -rm -f xercesc/util/MsgLoaders/MsgCatalog/$(DEPDIR)/$(am__dirstamp) -rm -f xercesc/util/MsgLoaders/MsgCatalog/$(am__dirstamp) -rm -f xercesc/util/MutexManagers/$(DEPDIR)/$(am__dirstamp) -rm -f xercesc/util/MutexManagers/$(am__dirstamp) -rm -f xercesc/util/NetAccessors/$(DEPDIR)/$(am__dirstamp) -rm -f xercesc/util/NetAccessors/$(am__dirstamp) -rm -f xercesc/util/NetAccessors/Curl/$(DEPDIR)/$(am__dirstamp) -rm -f xercesc/util/NetAccessors/Curl/$(am__dirstamp) -rm -f xercesc/util/NetAccessors/MacOSURLAccessCF/$(DEPDIR)/$(am__dirstamp) -rm -f xercesc/util/NetAccessors/MacOSURLAccessCF/$(am__dirstamp) -rm -f xercesc/util/NetAccessors/Socket/$(DEPDIR)/$(am__dirstamp) -rm -f xercesc/util/NetAccessors/Socket/$(am__dirstamp) -rm -f xercesc/util/NetAccessors/WinSock/$(DEPDIR)/$(am__dirstamp) -rm -f xercesc/util/NetAccessors/WinSock/$(am__dirstamp) -rm -f xercesc/util/Transcoders/ICU/$(DEPDIR)/$(am__dirstamp) -rm -f xercesc/util/Transcoders/ICU/$(am__dirstamp) -rm -f xercesc/util/Transcoders/Iconv/$(DEPDIR)/$(am__dirstamp) -rm -f xercesc/util/Transcoders/Iconv/$(am__dirstamp) -rm -f xercesc/util/Transcoders/IconvGNU/$(DEPDIR)/$(am__dirstamp) -rm -f xercesc/util/Transcoders/IconvGNU/$(am__dirstamp) -rm -f xercesc/util/Transcoders/MacOSUnicodeConverter/$(DEPDIR)/$(am__dirstamp) -rm -f xercesc/util/Transcoders/MacOSUnicodeConverter/$(am__dirstamp) -rm -f xercesc/util/Transcoders/Win32/$(DEPDIR)/$(am__dirstamp) -rm -f xercesc/util/Transcoders/Win32/$(am__dirstamp) -rm -f xercesc/util/regx/$(DEPDIR)/$(am__dirstamp) -rm -f xercesc/util/regx/$(am__dirstamp) -rm -f xercesc/validators/DTD/$(DEPDIR)/$(am__dirstamp) -rm -f xercesc/validators/DTD/$(am__dirstamp) -rm -f xercesc/validators/common/$(DEPDIR)/$(am__dirstamp) -rm -f xercesc/validators/common/$(am__dirstamp) -rm -f xercesc/validators/datatype/$(DEPDIR)/$(am__dirstamp) -rm -f xercesc/validators/datatype/$(am__dirstamp) -rm -f xercesc/validators/schema/$(DEPDIR)/$(am__dirstamp) -rm -f xercesc/validators/schema/$(am__dirstamp) -rm -f xercesc/validators/schema/identity/$(DEPDIR)/$(am__dirstamp) -rm -f xercesc/validators/schema/identity/$(am__dirstamp) -rm -f xercesc/xinclude/$(DEPDIR)/$(am__dirstamp) -rm -f xercesc/xinclude/$(am__dirstamp) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) clean: clean-recursive clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-recursive -rm -rf $(DEPDIR) ./$(DEPDIR) xercesc/dom/$(DEPDIR) xercesc/dom/impl/$(DEPDIR) xercesc/framework/$(DEPDIR) xercesc/framework/psvi/$(DEPDIR) xercesc/internal/$(DEPDIR) xercesc/parsers/$(DEPDIR) xercesc/sax/$(DEPDIR) xercesc/sax2/$(DEPDIR) xercesc/util/$(DEPDIR) xercesc/util/FileManagers/$(DEPDIR) xercesc/util/MsgLoaders/ICU/$(DEPDIR) xercesc/util/MsgLoaders/InMemory/$(DEPDIR) xercesc/util/MsgLoaders/MsgCatalog/$(DEPDIR) xercesc/util/MutexManagers/$(DEPDIR) xercesc/util/NetAccessors/$(DEPDIR) xercesc/util/NetAccessors/Curl/$(DEPDIR) xercesc/util/NetAccessors/MacOSURLAccessCF/$(DEPDIR) xercesc/util/NetAccessors/Socket/$(DEPDIR) xercesc/util/NetAccessors/WinSock/$(DEPDIR) xercesc/util/Transcoders/ICU/$(DEPDIR) xercesc/util/Transcoders/Iconv/$(DEPDIR) xercesc/util/Transcoders/IconvGNU/$(DEPDIR) xercesc/util/Transcoders/MacOSUnicodeConverter/$(DEPDIR) xercesc/util/Transcoders/Win32/$(DEPDIR) xercesc/util/regx/$(DEPDIR) xercesc/validators/DTD/$(DEPDIR) xercesc/validators/common/$(DEPDIR) xercesc/validators/datatype/$(DEPDIR) xercesc/validators/schema/$(DEPDIR) xercesc/validators/schema/identity/$(DEPDIR) xercesc/xinclude/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-nobase_libxerces_c_laHEADERS \ install-nodist_autoconfheadersHEADERS install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -rf $(DEPDIR) ./$(DEPDIR) xercesc/dom/$(DEPDIR) xercesc/dom/impl/$(DEPDIR) xercesc/framework/$(DEPDIR) xercesc/framework/psvi/$(DEPDIR) xercesc/internal/$(DEPDIR) xercesc/parsers/$(DEPDIR) xercesc/sax/$(DEPDIR) xercesc/sax2/$(DEPDIR) xercesc/util/$(DEPDIR) xercesc/util/FileManagers/$(DEPDIR) xercesc/util/MsgLoaders/ICU/$(DEPDIR) xercesc/util/MsgLoaders/InMemory/$(DEPDIR) xercesc/util/MsgLoaders/MsgCatalog/$(DEPDIR) xercesc/util/MutexManagers/$(DEPDIR) xercesc/util/NetAccessors/$(DEPDIR) xercesc/util/NetAccessors/Curl/$(DEPDIR) xercesc/util/NetAccessors/MacOSURLAccessCF/$(DEPDIR) xercesc/util/NetAccessors/Socket/$(DEPDIR) xercesc/util/NetAccessors/WinSock/$(DEPDIR) xercesc/util/Transcoders/ICU/$(DEPDIR) xercesc/util/Transcoders/Iconv/$(DEPDIR) xercesc/util/Transcoders/IconvGNU/$(DEPDIR) xercesc/util/Transcoders/MacOSUnicodeConverter/$(DEPDIR) xercesc/util/Transcoders/Win32/$(DEPDIR) xercesc/util/regx/$(DEPDIR) xercesc/validators/DTD/$(DEPDIR) xercesc/validators/common/$(DEPDIR) xercesc/validators/datatype/$(DEPDIR) xercesc/validators/schema/$(DEPDIR) xercesc/validators/schema/identity/$(DEPDIR) xercesc/xinclude/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-libLTLIBRARIES \ uninstall-nobase_libxerces_c_laHEADERS \ uninstall-nodist_autoconfheadersHEADERS .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check \ ctags-recursive install install-am install-strip \ tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool ctags ctags-recursive \ 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-nobase_libxerces_c_laHEADERS \ install-nodist_autoconfheadersHEADERS install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs installdirs-am \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ uninstall-libLTLIBRARIES \ uninstall-nobase_libxerces_c_laHEADERS \ uninstall-nodist_autoconfheadersHEADERS include ${top_srcdir}/version.incl @XERCES_USE_MSGLOADER_ICU_TRUE@xercesc_messages.c: ${top_srcdir}/src/xercesc/util/MsgLoaders/ICU/resources/res-file-list.txt @XERCES_USE_MSGLOADER_ICU_TRUE@ ${ICU_SBIN}gencmn --name ${PKGNAME} -S ${PKGNAME}_dat.c -d . ${top_srcdir}/src/xercesc/util/MsgLoaders/ICU/resources/res-file-list.txt @XERCES_USE_MSGLOADER_ICU_TRUE@ @mv ${PKGNAME}_dat.c xercesc_messages.c @XERCES_USE_MSGLOADER_ICU_TRUE@root_res.c: ${top_srcdir}/src/xercesc/util/MsgLoaders/ICU/resources/root.txt @XERCES_USE_MSGLOADER_ICU_TRUE@ ${ICU_BIN}genrb -d . ${top_srcdir}/src/xercesc/util/MsgLoaders/ICU/resources/root.txt @XERCES_USE_MSGLOADER_ICU_TRUE@ ${ICU_SBIN}genccode --name ${PKGNAME} -d . root.res # Override generated rules to provide prettier make rules # # Warning: If Automake changes sufficiently, these rules may need to # be regenerated from the (new) default output of Automake # @XERCES_PRETTY_MAKE_TRUE@.c.lo: @XERCES_PRETTY_MAKE_TRUE@@am__fastdepCC_TRUE@ @depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`; \ @XERCES_PRETTY_MAKE_TRUE@@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$$depbase.Tpo" -c -o $@ $<; \ @XERCES_PRETTY_MAKE_TRUE@@am__fastdepCC_TRUE@ then $(am__mv) "$$depbase.Tpo" "$$depbase.Plo"; else rm -f "$$depbase.Tpo"; exit 1; fi @XERCES_PRETTY_MAKE_TRUE@@AMDEP_TRUE@@am__fastdepCXX_FALSE@ @source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @XERCES_PRETTY_MAKE_TRUE@@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @XERCES_PRETTY_MAKE_TRUE@@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< @XERCES_PRETTY_MAKE_TRUE@.cpp.lo: @XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_TRUE@ @depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`; \ @XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$$depbase.Tpo" -c -o $@ $<; \ @XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_TRUE@ then $(am__mv) "$$depbase.Tpo" "$$depbase.Plo"; else rm -f "$$depbase.Tpo"; exit 1; fi @XERCES_PRETTY_MAKE_TRUE@@AMDEP_TRUE@@am__fastdepCXX_FALSE@ @source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @XERCES_PRETTY_MAKE_TRUE@@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @XERCES_PRETTY_MAKE_TRUE@@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< # 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: xerces-c-3.1.1/src/stricmp.c0000644000175000017500000000224311042075404014655 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: stricmp.c 679398 2008-07-24 12:52:20Z borisk $ */ #include "stricmp.h" #include "config.h" #if HAVE_STRING_H # include #endif #if HAVE_STRINGS_H # include #endif int stricmp(const char* str1, const char* str2) { #if HAVE_STRCASECMP return strcasecmp(str1, str2); #else #error Need implementation of stricmp compatibility function #endif } xerces-c-3.1.1/src/towupper.c0000644000175000017500000000173110761542567015102 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: towupper.c 631983 2008-02-28 14:30:15Z borisk $ */ #include "towupper.h" int towupper(int c) { return (c >= 'a') && (c <= 'z') ? c - 'a' + 'A' : c ; } xerces-c-3.1.1/src/towlower.h0000644000175000017500000000176710761542567015115 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: towlower.h 631983 2008-02-28 14:30:15Z borisk $ */ #ifndef TOWLOWER_H #define TOWLOWER_H #ifdef __cplusplus extern "C" { #endif extern int towlower(int wc); #ifdef __cplusplus } #endif #endif xerces-c-3.1.1/src/towupper.h0000644000175000017500000000176710761542567015120 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: towupper.h 631983 2008-02-28 14:30:15Z borisk $ */ #ifndef TOWUPPER_H #define TOWUPPER_H #ifdef __cplusplus extern "C" { #endif extern int towupper(int wc); #ifdef __cplusplus } #endif #endif xerces-c-3.1.1/src/stricmp.h0000644000175000017500000000201711033363166014666 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: stricmp.h 673966 2008-07-04 08:59:34Z borisk $ */ #ifndef STRICMP_H #define STRICMP_H #ifdef __cplusplus extern "C" { #endif extern int stricmp(const char* str1, const char* str2); #ifdef __cplusplus } #endif #endif xerces-c-3.1.1/src/xercesc/0000755000175000017500000000000011363617252014474 5ustar borisborisxerces-c-3.1.1/src/xercesc/sax/0000755000175000017500000000000011363617243015267 5ustar borisborisxerces-c-3.1.1/src/xercesc/sax/Parser.hpp0000644000175000017500000002022210606722647017236 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: Parser.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_PARSER_HPP) #define XERCESC_INCLUDE_GUARD_PARSER_HPP #include XERCES_CPP_NAMESPACE_BEGIN class DTDHandler; class EntityResolver; class DocumentHandler; class ErrorHandler; class InputSource; /** * Basic interface for SAX (Simple API for XML) parsers. * * All SAX parsers must implement this basic interface: it allows * applications to register handlers for different types of events * and to initiate a parse from a URI, or a character stream. * * All SAX parsers must also implement a zero-argument constructor * (though other constructors are also allowed). * * SAX parsers are reusable but not re-entrant: the application * may reuse a parser object (possibly with a different input source) * once the first parse has completed successfully, but it may not * invoke the parse() methods recursively within a parse. * * @see EntityResolver#EntityResolver * @see DTDHandler#DTDHandler * @see DocumentHandler#DocumentHandler * @see ErrorHandler#ErrorHandler * @see HandlerBase#HandlerBase * @see InputSource#InputSource */ #include class SAX_EXPORT Parser { public: /** @name Constructors and Destructor */ // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- //@{ /** The default constructor */ Parser() { } /** The destructor */ virtual ~Parser() { } //@} //----------------------------------------------------------------------- // The parser interface //----------------------------------------------------------------------- /** @name The parser interfaces */ //@{ /** * Allow an application to register a custom entity resolver. * * If the application does not register an entity resolver, the * SAX parser will resolve system identifiers and open connections * to entities itself (this is the default behaviour implemented in * HandlerBase). * * Applications may register a new or different entity resolver * in the middle of a parse, and the SAX parser must begin using * the new resolver immediately. * * @param resolver The object for resolving entities. * @see EntityResolver#EntityResolver * @see HandlerBase#HandlerBase */ virtual void setEntityResolver(EntityResolver* const resolver) = 0; /** * Allow an application to register a DTD event handler. * * If the application does not register a DTD handler, all DTD * events reported by the SAX parser will be silently ignored (this * is the default behaviour implemented by HandlerBase). * * Applications may register a new or different handler in the middle * of a parse, and the SAX parser must begin using the new handler * immediately. * * @param handler The DTD handler. * @see DTDHandler#DTDHandler * @see HandlerBase#HandlerBase */ virtual void setDTDHandler(DTDHandler* const handler) = 0; /** * Allow an application to register a document event handler. * * If the application does not register a document handler, all * document events reported by the SAX parser will be silently * ignored (this is the default behaviour implemented by * HandlerBase). * * Applications may register a new or different handler in the * middle of a parse, and the SAX parser must begin using the new * handler immediately. * * @param handler The document handler. * @see DocumentHandler#DocumentHandler * @see HandlerBase#HandlerBase */ virtual void setDocumentHandler(DocumentHandler* const handler) = 0; /** * Allow an application to register an error event handler. * * If the application does not register an error event handler, * all error events reported by the SAX parser will be silently * ignored, except for fatalError, which will throw a SAXException * (this is the default behaviour implemented by HandlerBase). * * Applications may register a new or different handler in the * middle of a parse, and the SAX parser must begin using the new * handler immediately. * * @param handler The error handler. * @see ErrorHandler#ErrorHandler * @see SAXException#SAXException * @see HandlerBase#HandlerBase */ virtual void setErrorHandler(ErrorHandler* const handler) = 0; /** * Parse an XML document. * * The application can use this method to instruct the SAX parser * to begin parsing an XML document from any valid input * source (a character stream, a byte stream, or a URI). * * Applications may not invoke this method while a parse is in * progress (they should create a new Parser instead for each * additional XML document). Once a parse is complete, an * application may reuse the same Parser object, possibly with a * different input source. * * @param source The input source for the top-level of the * XML document. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception XMLException An exception from the parser or client * handler code. * @see InputSource#InputSource * @see #setEntityResolver * @see #setDTDHandler * @see #setDocumentHandler * @see #setErrorHandler */ virtual void parse ( const InputSource& source ) = 0; /** * Parse an XML document from a system identifier (URI). * * This method is a shortcut for the common case of reading a * document from a system identifier. It is the exact equivalent * of the following: * * parse(new URLInputSource(systemId)); * * If the system identifier is a URL, it must be fully resolved * by the application before it is passed to the parser. * * @param systemId The system identifier (URI). * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception XMLException An exception from the parser or client * handler code. * @see #parse(const InputSource&) */ virtual void parse ( const XMLCh* const systemId ) = 0; /** * Parse an XML document from a system identifier (URI). * * This method is a shortcut for the common case of reading a * document from a system identifier. It is the exact equivalent * of the following: * * parse(new URLInputSource(systemId)); * * If the system identifier is a URL, it must be fully resolved * by the application before it is passed to the parser. * * @param systemId The system identifier (URI). * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception XMLException An exception from the parser or client * handler code. * @see #parse(const InputSource&) */ virtual void parse ( const char* const systemId ) = 0; //@} private : /* The copy constructor, you cannot call this directly */ Parser(const Parser&); /* The assignment operator, you cannot call this directly */ Parser& operator=(const Parser&); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/sax/ErrorHandler.hpp0000644000175000017500000001331611360344373020371 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: ErrorHandler.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_ERRORHANDLER_HPP) #define XERCESC_INCLUDE_GUARD_ERRORHANDLER_HPP #include XERCES_CPP_NAMESPACE_BEGIN class SAXParseException; /** * Basic interface for SAX error handlers. * *

    If a SAX application needs to implement customized error * handling, it must implement this interface and then register an * instance with the SAX parser using the parser's setErrorHandler * method. The parser will then report all errors and warnings * through this interface.

    * *

    The parser shall use this interface instead of throwing an * exception: it is up to the application whether to throw an * exception for different types of errors and warnings. Note, * however, that there is no requirement that the parser continue to * provide useful information after a call to fatalError (in other * words, a SAX driver class could catch an exception and report a * fatalError).

    * *

    The HandlerBase class provides a default implementation of this * interface, ignoring warnings and recoverable errors and throwing a * SAXParseException for fatal errors. An application may extend * that class rather than implementing the complete interface * itself.

    * * @see Parser#setErrorHandler * @see SAXParseException#SAXParseException * @see HandlerBase#HandlerBase */ class SAX_EXPORT ErrorHandler { public: /** @name Constructors and Destructor */ //@{ /** Default constructor */ ErrorHandler() { } /** Destructor */ virtual ~ErrorHandler() { } //@} /** @name The error handler interface */ //@{ /** * Receive notification of a warning. * *

    SAX parsers will use this method to report conditions that * are not errors or fatal errors as defined by the XML 1.0 * recommendation. The default behaviour is to take no action.

    * *

    The SAX parser must continue to provide normal parsing events * after invoking this method: it should still be possible for the * application to process the document through to the end.

    * * @param exc The warning information encapsulated in a * SAX parse exception. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see SAXParseException#SAXParseException */ virtual void warning(const SAXParseException& exc) = 0; /** * Receive notification of a recoverable error. * *

    This corresponds to the definition of "error" in section 1.2 * of the W3C XML 1.0 Recommendation. For example, a validating * parser would use this callback to report the violation of a * validity constraint. The default behaviour is to take no * action.

    * *

    The SAX parser must continue to provide normal parsing events * after invoking this method: it should still be possible for the * application to process the document through to the end. If the * application cannot do so, then the parser should report a fatal * error even if the XML 1.0 recommendation does not require it to * do so.

    * * @param exc The error information encapsulated in a * SAX parse exception. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see SAXParseException#SAXParseException */ virtual void error(const SAXParseException& exc) = 0; /** * Receive notification of a non-recoverable error. * *

    This corresponds to the definition of "fatal error" in * section 1.2 of the W3C XML 1.0 Recommendation. For example, a * parser would use this callback to report the violation of a * well-formedness constraint.

    * *

    The application must assume that the document is unusable * after the parser has invoked this method, and should continue * (if at all) only for the sake of collecting addition error * messages: in fact, SAX parsers are free to stop reporting any * other events once this method has been invoked.

    * * @param exc The error information encapsulated in a * SAX parse exception. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see SAXParseException#SAXParseException */ virtual void fatalError(const SAXParseException& exc) = 0; /** * Reset the Error handler object on its reuse * *

    This method helps in reseting the Error handler object * implementation defaults each time the Error handler is begun.

    * */ virtual void resetErrors() = 0; //@} private : /* Unimplemented constructors and operators */ /* Copy constructor */ ErrorHandler(const ErrorHandler&); /* Assignment operator */ ErrorHandler& operator=(const ErrorHandler&); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/sax/SAXParseException.cpp0000644000175000017500000001052411031170654021272 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SAXParseException.cpp 672273 2008-06-27 13:57:00Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // SAXParseException: Constructors and Destructor // --------------------------------------------------------------------------- SAXParseException::SAXParseException(const XMLCh* const message , const Locator& locator , MemoryManager* const manager) : SAXException(message, manager) , fColumnNumber(locator.getColumnNumber()) , fLineNumber(locator.getLineNumber()) , fPublicId(XMLString::replicate(locator.getPublicId(), manager)) , fSystemId(XMLString::replicate(locator.getSystemId(), manager)) { } SAXParseException::SAXParseException(const XMLCh* const message , const XMLCh* const publicId , const XMLCh* const systemId , const XMLFileLoc lineNumber , const XMLFileLoc columnNumber , MemoryManager* const manager) : SAXException(message, manager) , fColumnNumber(columnNumber) , fLineNumber(lineNumber) , fPublicId(XMLString::replicate(publicId, manager)) , fSystemId(XMLString::replicate(systemId, manager)) { } SAXParseException::SAXParseException(const SAXParseException& toCopy) : SAXException(toCopy) , fColumnNumber(toCopy.fColumnNumber) , fLineNumber(toCopy.fLineNumber) , fPublicId(0) , fSystemId(0) { fPublicId = XMLString::replicate(toCopy.fPublicId, toCopy.fMemoryManager); fSystemId = XMLString::replicate(toCopy.fSystemId, toCopy.fMemoryManager); } SAXParseException::~SAXParseException() { fMemoryManager->deallocate(fPublicId);//XMLString::release(&fPublicId); fMemoryManager->deallocate(fSystemId);//XMLString::release(&fSystemId); } // --------------------------------------------------------------------------- // SAXParseException: Public operators // --------------------------------------------------------------------------- SAXParseException& SAXParseException::operator=(const SAXParseException& toAssign) { if (this == &toAssign) return *this; fMemoryManager->deallocate(fPublicId);//XMLString::release(&fPublicId); fMemoryManager->deallocate(fSystemId);//XMLString::release(&fSystemId); this->SAXException::operator =(toAssign); fColumnNumber = toAssign.fColumnNumber; fLineNumber = toAssign.fLineNumber; fPublicId = XMLString::replicate(toAssign.fPublicId, fMemoryManager); fSystemId = XMLString::replicate(toAssign.fSystemId, fMemoryManager); return *this; } // --------------------------------------------------------------------------- // SAXParseException: Getter methods // --------------------------------------------------------------------------- const XMLCh* SAXParseException::getPublicId() const { return fPublicId; } const XMLCh* SAXParseException::getSystemId() const { return fSystemId; } XMLFileLoc SAXParseException::getLineNumber() const { return fLineNumber; } XMLFileLoc SAXParseException::getColumnNumber() const { return fColumnNumber; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/sax/InputSource.cpp0000644000175000017500000000774110523643534020263 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: InputSource.cpp 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // InputSource: Destructor // --------------------------------------------------------------------------- InputSource::~InputSource() { fMemoryManager->deallocate(fEncoding); fMemoryManager->deallocate(fPublicId); fMemoryManager->deallocate(fSystemId); } // --------------------------------------------------------------------------- // InputSource: Setter methods // --------------------------------------------------------------------------- void InputSource::setEncoding(const XMLCh* const encodingStr) { fMemoryManager->deallocate(fEncoding); fEncoding = XMLString::replicate(encodingStr, fMemoryManager); } void InputSource::setPublicId(const XMLCh* const publicId) { fMemoryManager->deallocate(fPublicId); fPublicId = XMLString::replicate(publicId, fMemoryManager); } void InputSource::setSystemId(const XMLCh* const systemId) { fMemoryManager->deallocate(fSystemId); fSystemId = XMLString::replicate(systemId, fMemoryManager); } // --------------------------------------------------------------------------- // InputSource: Hidden Constructors // --------------------------------------------------------------------------- InputSource::InputSource(MemoryManager* const manager) : fMemoryManager(manager) , fEncoding(0) , fPublicId(0) , fSystemId(0) , fFatalErrorIfNotFound(true) { } InputSource::InputSource(const XMLCh* const systemId, MemoryManager* const manager) : fMemoryManager(manager) , fEncoding(0) , fPublicId(0) , fSystemId(0) , fFatalErrorIfNotFound(true) { fSystemId = XMLString::replicate(systemId, fMemoryManager); } InputSource::InputSource(const XMLCh* const systemId , const XMLCh* const publicId , MemoryManager* const manager) : fMemoryManager(manager) , fEncoding(0) , fPublicId(0) , fSystemId(0) , fFatalErrorIfNotFound(true) { fPublicId = XMLString::replicate(publicId, fMemoryManager); fSystemId = XMLString::replicate(systemId, fMemoryManager); } InputSource::InputSource(const char* const systemId, MemoryManager* const manager) : fMemoryManager(manager) , fEncoding(0) , fPublicId(0) , fSystemId(0) , fFatalErrorIfNotFound(true) { fSystemId = XMLString::transcode(systemId, fMemoryManager); } InputSource::InputSource(const char* const systemId , const char* const publicId , MemoryManager* const manager) : fMemoryManager(manager) , fEncoding(0) , fPublicId(0) , fSystemId(0) , fFatalErrorIfNotFound(true) { fPublicId = XMLString::transcode(publicId, fMemoryManager); fSystemId = XMLString::transcode(systemId, fMemoryManager); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/sax/InputSource.hpp0000644000175000017500000002615711360344373020271 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: InputSource.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_INPUTSOURCE_HPP) #define XERCESC_INCLUDE_GUARD_INPUTSOURCE_HPP #include XERCES_CPP_NAMESPACE_BEGIN class BinInputStream; /** * A single input source for an XML entity. * *

    This class encapsulates information about an input source in a * single object, which may include a public identifier or a system * identifier

    * *

    There are two places that the application will deliver this input * source to the parser: as the argument to the Parser::parse method, or as * the return value of the EntityResolver::resolveEntity method.

    * *

    InputSource is never used directly, but is the base class for a number * of derived classes for particular types of input sources. Derivatives are * provided (in the framework/ directory) for URL input sources, memory buffer * input sources, and so on.

    * *

    When it is time to parse the input described by an input source, it * will be asked to create a binary stream for that source. That stream will * be used to input the data of the source. The derived class provides the * implementation of the makeStream() method, and provides a type of stream * of the correct type for the input source it represents. * *

    An InputSource object belongs to the application: the parser never * modifies them in any way. They are always passed by const reference so * the parser will make a copy of any input sources that it must keep * around beyond the call.

    * * @see Parser#parse * @see EntityResolver#resolveEntity */ class SAX_EXPORT InputSource : public XMemory { public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~InputSource(); //@} // ----------------------------------------------------------------------- /** @name Virtual input source interface */ //@{ /** * Makes the byte stream for this input source. * *

    The derived class must create and return a binary input stream of an * appropriate type for its kind of data source. The returned stream must * be dynamically allocated and becomes the parser's property. *

    * * @see BinInputStream */ virtual BinInputStream* makeStream() const = 0; //@} // ----------------------------------------------------------------------- /** @name Getter methods */ //@{ /** * An input source can be set to force the parser to assume a particular * encoding for the data that input source represents, via the setEncoding() * method. This method returns name of the encoding that is to be forced. * If the encoding has never been forced, it returns a null pointer. * * @return The forced encoding, or null if none was supplied. * @see #setEncoding */ virtual const XMLCh* getEncoding() const; /** * Get the public identifier for this input source. * * @return The public identifier, or null if none was supplied. * @see #setPublicId */ virtual const XMLCh* getPublicId() const; /** * Get the system identifier for this input source. * *

    If the system ID is a URL, it will be fully resolved.

    * * @return The system identifier. * @see #setSystemId */ virtual const XMLCh* getSystemId() const; /** * Get the flag that indicates if the parser should issue fatal error if this input source * is not found. * * @return True if the parser should issue fatal error if this input source is not found. * False if the parser issue warning message instead. * @see #setIssueFatalErrorIfNotFound */ virtual bool getIssueFatalErrorIfNotFound() const; MemoryManager* getMemoryManager() const; //@} // ----------------------------------------------------------------------- /** @name Setter methods */ //@{ /** * Set the encoding which will be required for use with the XML text read * via a stream opened by this input source. * *

    This is usually not set, allowing the encoding to be sensed in the * usual XML way. However, in some cases, the encoding in the file is known * to be incorrect because of intermediate transcoding, for instance * encapsulation within a MIME document. * * @param encodingStr The name of the encoding to force. */ virtual void setEncoding(const XMLCh* const encodingStr); /** * Set the public identifier for this input source. * *

    The public identifier is always optional: if the application writer * includes one, it will be provided as part of the location information.

    * * @param publicId The public identifier as a string. * @see Locator#getPublicId * @see SAXParseException#getPublicId * @see #getPublicId */ virtual void setPublicId(const XMLCh* const publicId); /** * Set the system identifier for this input source. * *

    Set the system identifier for this input source. * *

    The system id is always required. The public id may be used to map * to another system id, but the system id must always be present as a fall * back. * *

    If the system ID is a URL, it must be fully resolved.

    * * @param systemId The system identifier as a string. * @see #getSystemId * @see Locator#getSystemId * @see SAXParseException#getSystemId */ virtual void setSystemId(const XMLCh* const systemId); /** * Indicates if the parser should issue fatal error if this input source * is not found. If set to false, the parser issue warning message instead. * * @param flag True if the parser should issue fatal error if this input source is not found. * If set to false, the parser issue warning message instead. (Default: true) * * @see #getIssueFatalErrorIfNotFound */ virtual void setIssueFatalErrorIfNotFound(const bool flag); //@} protected : // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Constructors and Destructor */ //@{ /** Default constructor */ InputSource(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); /** Constructor with a system identifier as XMLCh type. * @param systemId The system identifier (URI). * @param manager Pointer to the memory manager to be used to * allocate objects. */ InputSource(const XMLCh* const systemId, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); /** Constructor with a system and public identifiers * @param systemId The system identifier (URI). * @param publicId The public identifier as in the entity definition. * @param manager Pointer to the memory manager to be used to * allocate objects. */ InputSource ( const XMLCh* const systemId , const XMLCh* const publicId , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /** Constructor witha system identifier as string * @param systemId The system identifier (URI). * @param manager Pointer to the memory manager to be used to * allocate objects. */ InputSource(const char* const systemId, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); /** Constructor witha system and public identifiers. Both as string * @param systemId The system identifier (URI). * @param publicId The public identifier as in the entity definition. * @param manager Pointer to the memory manager to be used to * allocate objects. */ InputSource ( const char* const systemId , const char* const publicId , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- InputSource(const InputSource&); InputSource& operator=(const InputSource&); // ----------------------------------------------------------------------- // Private data members // // fEncoding // This is the encoding to use. Usually this is null, which means // to use the information found in the file itself. But, if set, // this encoding will be used without question. // // fPublicId // This is the optional public id for the input source. It can be // null if none is desired. // // fSystemId // This is the system id for the input source. This is what is // actually used to open the source. // // fFatalErrorIfNotFound // ----------------------------------------------------------------------- MemoryManager* const fMemoryManager; XMLCh* fEncoding; XMLCh* fPublicId; XMLCh* fSystemId; bool fFatalErrorIfNotFound; }; // --------------------------------------------------------------------------- // InputSource: Getter methods // --------------------------------------------------------------------------- inline const XMLCh* InputSource::getEncoding() const { return fEncoding; } inline const XMLCh* InputSource::getPublicId() const { return fPublicId; } inline const XMLCh* InputSource::getSystemId() const { return fSystemId; } inline bool InputSource::getIssueFatalErrorIfNotFound() const { return fFatalErrorIfNotFound; } inline MemoryManager* InputSource::getMemoryManager() const { return fMemoryManager; } // --------------------------------------------------------------------------- // InputSource: Setter methods // --------------------------------------------------------------------------- inline void InputSource::setIssueFatalErrorIfNotFound(const bool flag) { fFatalErrorIfNotFound = flag; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/sax/SAXException.hpp0000644000175000017500000001521410606722647020321 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SAXException.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_SAXEXCEPTION_HPP) #define XERCESC_INCLUDE_GUARD_SAXEXCEPTION_HPP #include #include #include XERCES_CPP_NAMESPACE_BEGIN /** * Encapsulate a general SAX error or warning. * *

    This class can contain basic error or warning information from * either the XML SAX parser or the application: a parser writer or * application writer can subclass it to provide additional * functionality. SAX handlers may throw this exception or * any exception subclassed from it.

    * *

    If the application needs to pass through other types of * exceptions, it must wrap those exceptions in a SAXException * or an exception derived from a SAXException.

    * *

    If the parser or application needs to include information * about a specific location in an XML document, it should use the * SAXParseException subclass.

    * * @see SAXParseException#SAXParseException */ class SAX_EXPORT SAXException : public XMemory { public: /** @name Constructors and Destructor */ //@{ /** Default constructor * @param manager Pointer to the memory manager to be used to * allocate objects. */ SAXException(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) : fMsg(XMLString::replicate(XMLUni::fgZeroLenString, manager)) , fMemoryManager(manager) { } /** * Create a new SAXException. * * @param msg The error or warning message. * @param manager Pointer to the memory manager to be used to * allocate objects. */ SAXException(const XMLCh* const msg, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) : fMsg(XMLString::replicate(msg, manager)) , fMemoryManager(manager) { } /** * Create a new SAXException. * * @param msg The error or warning message. * @param manager Pointer to the memory manager to be used to * allocate objects. */ SAXException(const char* const msg, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) : fMsg(XMLString::transcode(msg, manager)) , fMemoryManager(manager) { } /** * Copy constructor * * @param toCopy The exception to be copy constructed */ SAXException(const SAXException& toCopy) : XMemory(toCopy) , fMsg(XMLString::replicate(toCopy.fMsg, toCopy.fMemoryManager)) , fMemoryManager(toCopy.fMemoryManager) { } /** Destructor */ virtual ~SAXException() { fMemoryManager->deallocate(fMsg);//delete [] fMsg; } //@} /** @name Public Operators */ //@{ /** * Assignment operator * * @param toCopy The object to be copied */ SAXException& operator=(const SAXException& toCopy) { if (this == &toCopy) return *this; fMemoryManager->deallocate(fMsg);//delete [] fMsg; fMsg = XMLString::replicate(toCopy.fMsg, toCopy.fMemoryManager); fMemoryManager = toCopy.fMemoryManager; return *this; } //@} /** @name Getter Methods */ //@{ /** * Get the contents of the message * */ virtual const XMLCh* getMessage() const { return fMsg; } //@} protected : // ----------------------------------------------------------------------- // Protected data members // // fMsg // This is the text of the error that is being thrown. // ----------------------------------------------------------------------- XMLCh* fMsg; MemoryManager* fMemoryManager; }; class SAX_EXPORT SAXNotSupportedException : public SAXException { public: SAXNotSupportedException(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); /** * Create a new SAXException. * * @param msg The error or warning message. * @param manager Pointer to the memory manager to be used to * allocate objects. */ SAXNotSupportedException(const XMLCh* const msg, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); /** * Create a new SAXException. * * @param msg The error or warning message. * @param manager Pointer to the memory manager to be used to * allocate objects. */ SAXNotSupportedException(const char* const msg, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); /** * Copy constructor * * @param toCopy The exception to be copy constructed */ SAXNotSupportedException(const SAXException& toCopy); }; class SAX_EXPORT SAXNotRecognizedException : public SAXException { public: SAXNotRecognizedException(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); /** * Create a new SAXException. * * @param msg The error or warning message. * @param manager Pointer to the memory manager to be used to * allocate objects. */ SAXNotRecognizedException(const XMLCh* const msg, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); /** * Create a new SAXException. * * @param msg The error or warning message. * @param manager Pointer to the memory manager to be used to * allocate objects. */ SAXNotRecognizedException(const char* const msg, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); /** * Copy constructor * * @param toCopy The exception to be copy constructed */ SAXNotRecognizedException(const SAXException& toCopy); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/sax/SAXException.cpp0000644000175000017500000000432310523643534020306 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SAXException.cpp 471747 2006-11-06 14:31:56Z amassari $ */ #include "SAXException.hpp" XERCES_CPP_NAMESPACE_BEGIN // SAXNotSupportedException Constructors SAXNotSupportedException::SAXNotSupportedException(MemoryManager* const manager) : SAXException(manager) { } SAXNotSupportedException::SAXNotSupportedException(const XMLCh* const msg, MemoryManager* const manager) : SAXException(msg, manager) { } SAXNotSupportedException::SAXNotSupportedException(const char* const msg, MemoryManager* const manager) : SAXException(msg, manager) { } SAXNotSupportedException::SAXNotSupportedException(const SAXException& toCopy) : SAXException(toCopy) { } // SAXNotRecognizedException Constructors SAXNotRecognizedException::SAXNotRecognizedException(MemoryManager* const manager) : SAXException(manager) { } SAXNotRecognizedException::SAXNotRecognizedException(const XMLCh* const msg, MemoryManager* const manager) : SAXException(msg, manager) { } SAXNotRecognizedException::SAXNotRecognizedException(const char* const msg, MemoryManager* const manager) : SAXException(msg, manager) { } SAXNotRecognizedException::SAXNotRecognizedException(const SAXException& toCopy) : SAXException(toCopy) { } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/sax/EntityResolver.hpp0000644000175000017500000001316710606722647021012 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: EntityResolver.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_ENTITYRESOLVER_HPP) #define XERCESC_INCLUDE_GUARD_ENTITYRESOLVER_HPP #include XERCES_CPP_NAMESPACE_BEGIN class InputSource; /** * Basic interface for resolving entities. * *

    If a SAX application needs to implement customized handling * for external entities, it must implement this interface and * register an instance with the SAX parser using the parser's * setEntityResolver method.

    * *

    The parser will then allow the application to intercept any * external entities (including the external DTD subset and external * parameter entities, if any) before including them.

    * *

    Many SAX applications will not need to implement this interface, * but it will be especially useful for applications that build * XML documents from databases or other specialised input sources, * or for applications that use URI types other than URLs.

    * *

    The following resolver would provide the application * with a special character stream for the entity with the system * identifier "http://www.myhost.com/today":

    * * *\#include
    *\#include
    *
    *class MyResolver : public EntityResolver {
    * public:
      * InputSource resolveEntity (const XMLCh* const publicId, const XMLCh* const systemId);
       *
    * ...
       * };
      *
    * MyResolver::resolveEntity {
    *  if (XMLString::compareString(systemId, "http://www.myhost.com/today")) {
    *   MyReader* reader = new MyReader();
    *   return new InputSource(reader);
    *  } else {
    *   return null;
    *  }
    * }
    *
    *
    * *

    The application can also use this interface to redirect system * identifiers to local URIs or to look up replacements in a catalog * (possibly by using the public identifier).

    * *

    The HandlerBase class implements the default behaviour for * this interface, which is simply always to return null (to request * that the parser use the default system identifier).

    * * @see Parser#setEntityResolver * @see InputSource#InputSource * @see HandlerBase#HandlerBase */ class SAX_EXPORT EntityResolver { public: /** @name Constructors and Destructor */ //@{ /** Default Constructor */ EntityResolver() { } /** Destructor */ virtual ~EntityResolver() { } //@} /** @name The EntityResolver interface */ //@{ /** * Allow the application to resolve external entities. * *

    The Parser will call this method before opening any external * entity except the top-level document entity (including the * external DTD subset, external entities referenced within the * DTD, and external entities referenced within the document * element): the application may request that the parser resolve * the entity itself, that it use an alternative URI, or that it * use an entirely different input source.

    * *

    Application writers can use this method to redirect external * system identifiers to secure and/or local URIs, to look up * public identifiers in a catalogue, or to read an entity from a * database or other input source (including, for example, a dialog * box).

    * *

    If the system identifier is a URL, the SAX parser must * resolve it fully before reporting it to the application.

    * * @param publicId The public identifier of the external entity * being referenced, or null if none was supplied. * @param systemId The system identifier of the external entity * being referenced. * @return An InputSource object describing the new input source, * or null to request that the parser open a regular * URI connection to the system identifier. * The returned InputSource is owned by the parser which is * responsible to clean up the memory. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception IOException An IO exception, * possibly the result of creating a new InputStream * or Reader for the InputSource. * @see InputSource#InputSource */ virtual InputSource* resolveEntity ( const XMLCh* const publicId , const XMLCh* const systemId ) = 0; //@} private : /* Unimplemented constructors and operators */ /* Copy constructor */ EntityResolver(const EntityResolver&); /* Assignment operator */ EntityResolver& operator=(const EntityResolver&); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/sax/Dummy.cpp0000644000175000017500000000252110523643534017065 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: Dummy.cpp 471747 2006-11-06 14:31:56Z amassari $ */ #include #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/sax/AttributeList.hpp0000644000175000017500000001704411360344373020603 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: AttributeList.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_ATTRIBUTELIST_HPP) #define XERCESC_INCLUDE_GUARD_ATTRIBUTELIST_HPP #include XERCES_CPP_NAMESPACE_BEGIN /** * Interface for an element's attribute specifications. * * The SAX parser implements this interface and passes an instance * to the SAX application as the second argument of each startElement * event. * * The instance provided will return valid results only during the * scope of the startElement invocation (to save it for future * use, the application must make a copy: the AttributeListImpl * helper class provides a convenient constructor for doing so). * * An AttributeList includes only attributes that have been * specified or defaulted: \#IMPLIED attributes will not be included. * * There are two ways for the SAX application to obtain information * from the AttributeList. First, it can iterate through the entire * list: * * * public void startElement (String name, AttributeList atts) {
    *  for (XMLSize_t i = 0; i < atts.getLength(); i++) {
    *   String name = atts.getName(i);
    *   String type = atts.getType(i);
    *   String value = atts.getValue(i);
    *   [...]
    *  }
    * } *
    * * (Note that the result of getLength() will be zero if there * are no attributes.) * * As an alternative, the application can request the value or * type of specific attributes: * * * public void startElement (String name, AttributeList atts) {
    *  String identifier = atts.getValue("id");
    *  String label = atts.getValue("label");
    *  [...]
    * } *
    * * The AttributeListImpl helper class provides a convenience * implementation for use by parser or application writers. * * @see DocumentHandler#startElement * @see AttributeListImpl#AttributeListImpl */ class SAX_EXPORT AttributeList { public: // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- /** @name Constructors and Destructor */ //@{ /** Default constructor */ AttributeList() { } /** Destructor */ virtual ~AttributeList() { } //@} /** @name The virtual attribute list interface */ //@{ /** * Return the number of attributes in this list. * * The SAX parser may provide attributes in any * arbitrary order, regardless of the order in which they were * declared or specified. The number of attributes may be * zero. * * @return The number of attributes in the list. */ virtual XMLSize_t getLength() const = 0; /** * Return the name of an attribute in this list (by position). * * The names must be unique: the SAX parser shall not include the * same attribute twice. Attributes without values (those declared * \#IMPLIED without a value specified in the start tag) will be * omitted from the list. * * If the attribute name has a namespace prefix, the prefix * will still be attached. * * @param index The index of the attribute in the list (starting at 0). * @return The name of the indexed attribute, or null * if the index is out of range. * @see #getLength */ virtual const XMLCh* getName(const XMLSize_t index) const = 0; /** * Return the type of an attribute in the list (by position). * * The attribute type is one of the strings "CDATA", "ID", * "IDREF", "IDREFS", "NMTOKEN", "NMTOKENS", "ENTITY", "ENTITIES", * or "NOTATION" (always in upper case). * * If the parser has not read a declaration for the attribute, * or if the parser does not report attribute types, then it must * return the value "CDATA" as stated in the XML 1.0 Recommendation * (clause 3.3.3, "Attribute-Value Normalization"). * * For an enumerated attribute that is not a notation, the * parser will report the type as "NMTOKEN". * * @param index The index of the attribute in the list (starting at 0). * @return The attribute type as a string, or * null if the index is out of range. * @see #getLength * @see #getType */ virtual const XMLCh* getType(const XMLSize_t index) const = 0; /** * Return the value of an attribute in the list (by position). * * If the attribute value is a list of tokens (IDREFS, * ENTITIES, or NMTOKENS), the tokens will be concatenated * into a single string separated by whitespace. * * @param index The index of the attribute in the list (starting at 0). * @return The attribute value as a string, or * null if the index is out of range. * @see #getLength * @see #getValue */ virtual const XMLCh* getValue(const XMLSize_t index) const = 0; /** * Return the type of an attribute in the list (by name). * * The return value is the same as the return value for * getType(XMLSize_t). * * If the attribute name has a namespace prefix in the document, * the application must include the prefix here. * * @param name The name of the attribute. * @return The attribute type as a string, or null if no * such attribute exists. * @see #getType */ virtual const XMLCh* getType(const XMLCh* const name) const = 0; /** * Return the value of an attribute in the list (by name). * * The return value is the same as the return value for * getValue(XMLSize_t). * * If the attribute name has a namespace prefix in the document, * the application must include the prefix here. * * @param name The name of the attribute in the list. * @return The attribute value as a string, or null if * no such attribute exists. * @see #getValue */ virtual const XMLCh* getValue(const XMLCh* const name) const = 0; /** * Return the value of an attribute in the list (by name). * * The return value is the same as the return value for * getValue(XMLSize_t). * * If the attribute name has a namespace prefix in the document, * the application must include the prefix here. * * @param name The name of the attribute in the list. * @return The attribute value as a string, or null if * no such attribute exists. * @see #getValue */ virtual const XMLCh* getValue(const char* const name) const = 0; //@} private : /* Constructors and operators */ /* Copy constructor */ AttributeList(const AttributeList&); /* Assignment operator */ AttributeList& operator=(const AttributeList&); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/sax/Locator.hpp0000644000175000017500000000766611031170654017412 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: Locator.hpp 672273 2008-06-27 13:57:00Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_LOCATOR_HPP) #define XERCESC_INCLUDE_GUARD_LOCATOR_HPP #include XERCES_CPP_NAMESPACE_BEGIN /** * Interface for associating a SAX event with a document location. * *

    If a SAX parser provides location information to the SAX * application, it does so by implementing this interface and then * passing an instance to the application using the document * handler's setDocumentLocator method. The application can use the * object to obtain the location of any other document handler event * in the XML source document.

    * *

    Note that the results returned by the object will be valid only * during the scope of each document handler method: the application * will receive unpredictable results if it attempts to use the * locator at any other time.

    * *

    SAX parsers are not required to supply a locator, but they are * very strong encouraged to do so. If the parser supplies a * locator, it must do so before reporting any other document events. * If no locator has been set by the time the application receives * the startDocument event, the application should assume that a * locator is not available.

    * * @see DocumentHandler#setDocumentLocator */ class SAX_EXPORT Locator { public: /** @name Constructors and Destructor */ //@{ /** Default constructor */ Locator() { } /** Destructor */ virtual ~Locator() { } //@} /** @name The locator interface */ //@{ /** * Return the public identifier for the current document event. *

    This will be the public identifier * @return A string containing the public identifier, or * null if none is available. * @see #getSystemId */ virtual const XMLCh* getPublicId() const = 0; /** * Return the system identifier for the current document event. * *

    If the system identifier is a URL, the parser must resolve it * fully before passing it to the application.

    * * @return A string containing the system identifier, or null * if none is available. * @see #getPublicId */ virtual const XMLCh* getSystemId() const = 0; /** * Return the line number where the current document event ends. * Note that this is the line position of the first character * after the text associated with the document event. * @return The line number, or 0 if none is available. * @see #getColumnNumber */ virtual XMLFileLoc getLineNumber() const = 0; /** * Return the column number where the current document event ends. * Note that this is the column number of the first * character after the text associated with the document * event. The first column in a line is position 1. * @return The column number, or 0 if none is available. * @see #getLineNumber */ virtual XMLFileLoc getColumnNumber() const = 0; //@} private : /* Copy constructor */ Locator(const Locator&); /* Assignment operator */ Locator& operator=(const Locator&); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/sax/DTDHandler.hpp0000644000175000017500000001175011360344373017713 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DTDHandler.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DTDHANDLER_HPP) #define XERCESC_INCLUDE_GUARD_DTDHANDLER_HPP #include XERCES_CPP_NAMESPACE_BEGIN /** * Receive notification of basic DTD-related events. * *

    If a SAX application needs information about notations and * unparsed entities, then the application implements this * interface and registers an instance with the SAX parser using * the parser's setDTDHandler method. The parser uses the * instance to report notation and unparsed entity declarations to * the application.

    * *

    The SAX parser may report these events in any order, regardless * of the order in which the notations and unparsed entities were * declared; however, all DTD events must be reported after the * document handler's startDocument event, and before the first * startElement event.

    * *

    It is up to the application to store the information for * future use (perhaps in a hash table or object tree). * If the application encounters attributes of type "NOTATION", * "ENTITY", or "ENTITIES", it can use the information that it * obtained through this interface to find the entity and/or * notation corresponding with the attribute value.

    * *

    The HandlerBase class provides a default implementation * of this interface, which simply ignores the events.

    * * @see Parser#setDTDHandler * @see HandlerBase#HandlerBase */ class SAX_EXPORT DTDHandler { public: /** @name Constructors and Destructor */ //@{ /** Default Constructor */ DTDHandler() { } /** Destructor */ virtual ~DTDHandler() { } //@} /** @name The DTD handler interface */ //@{ /** * Receive notification of a notation declaration event. * *

    It is up to the application to record the notation for later * reference, if necessary.

    * *

    If a system identifier is present, and it is a URL, the SAX * parser must resolve it fully before passing it to the * application.

    * * @param name The notation name. * @param publicId The notation's public identifier, or null if * none was given. * @param systemId The notation's system identifier, or null if * none was given. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see #unparsedEntityDecl * @see AttributeList#AttributeList */ virtual void notationDecl ( const XMLCh* const name , const XMLCh* const publicId , const XMLCh* const systemId ) = 0; /** * Receive notification of an unparsed entity declaration event. * *

    Note that the notation name corresponds to a notation * reported by the notationDecl() event. It is up to the * application to record the entity for later reference, if * necessary.

    * *

    If the system identifier is a URL, the parser must resolve it * fully before passing it to the application.

    * * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @param name The unparsed entity's name. * @param publicId The entity's public identifier, or null if none * was given. * @param systemId The entity's system identifier (it must always * have one). * @param notationName The name of the associated notation. * @see #notationDecl * @see AttributeList#AttributeList */ virtual void unparsedEntityDecl ( const XMLCh* const name , const XMLCh* const publicId , const XMLCh* const systemId , const XMLCh* const notationName ) = 0; /** * Reset the DocType object on its reuse * *

    This method helps in reseting the DTD object implementation * defaults each time the DTD is begun.

    * */ virtual void resetDocType() = 0; //@} private : /* Unimplemented constructors and operators */ /* Copy constructor */ DTDHandler(const DTDHandler&); /* Assignment operator */ DTDHandler& operator=(const DTDHandler&); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/sax/DocumentHandler.hpp0000644000175000017500000002417711360344373021065 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DocumentHandler.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOCUMENTHANDLER_HPP) #define XERCESC_INCLUDE_GUARD_DOCUMENTHANDLER_HPP #include XERCES_CPP_NAMESPACE_BEGIN class AttributeList; class Locator; /** * Receive notification of general document events. * *

    This is the main interface that most SAX applications * implement: if the application needs to be informed of basic parsing * events, it implements this interface and registers an instance with * the SAX parser using the setDocumentHandler method. The parser * uses the instance to report basic document-related events like * the start and end of elements and character data.

    * *

    The order of events in this interface is very important, and * mirrors the order of information in the document itself. For * example, all of an element's content (character data, processing * instructions, and/or subelements) will appear, in order, between * the startElement event and the corresponding endElement event.

    * *

    Application writers who do not want to implement the entire * interface while can derive a class from HandlerBase, which implements * the default functionality; parser writers can instantiate * HandlerBase to obtain a default handler. The application can find * the location of any document event using the Locator interface * supplied by the Parser through the setDocumentLocator method.

    * * @see Parser#setDocumentHandler * @see Locator#Locator * @see HandlerBase#HandlerBase */ class SAX_EXPORT DocumentHandler { public: /** @name Constructors and Destructor */ //@{ /** Default constructor */ DocumentHandler() { } /** Destructor */ virtual ~DocumentHandler() { } //@} /** @name The virtual document handler interface */ //@{ /** * Receive notification of character data. * *

    The Parser will call this method to report each chunk of * character data. SAX parsers may return all contiguous character * data in a single chunk, or they may split it into several * chunks; however, all of the characters in any single event * must come from the same external entity, so that the Locator * provides useful information.

    * *

    The application must not attempt to read from the array * outside of the specified range.

    * *

    Note that some parsers will report whitespace using the * ignorableWhitespace() method rather than this one (validating * parsers must do so).

    * * @param chars The characters from the XML document. * @param length The number of characters to read from the array. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see #ignorableWhitespace * @see Locator#Locator */ virtual void characters ( const XMLCh* const chars , const XMLSize_t length ) = 0; /** * Receive notification of the end of a document. * *

    The SAX parser will invoke this method only once, and it will * be the last method invoked during the parse. The parser shall * not invoke this method until it has either abandoned parsing * (because of an unrecoverable error) or reached the end of * input.

    * * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void endDocument () = 0; /** * Receive notification of the end of an element. * *

    The SAX parser will invoke this method at the end of every * element in the XML document; there will be a corresponding * startElement() event for every endElement() event (even when the * element is empty).

    * *

    If the element name has a namespace prefix, the prefix will * still be attached to the name.

    * * @param name The element type name * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void endElement(const XMLCh* const name) = 0; /** * Receive notification of ignorable whitespace in element content. * *

    Validating Parsers must use this method to report each chunk * of ignorable whitespace (see the W3C XML 1.0 recommendation, * section 2.10): non-validating parsers may also use this method * if they are capable of parsing and using content models.

    * *

    SAX parsers may return all contiguous whitespace in a single * chunk, or they may split it into several chunks; however, all of * the characters in any single event must come from the same * external entity, so that the Locator provides useful * information.

    * *

    The application must not attempt to read from the array * outside of the specified range.

    * * @param chars The characters from the XML document. * @param length The number of characters to read from the array. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see #characters */ virtual void ignorableWhitespace ( const XMLCh* const chars , const XMLSize_t length ) = 0; /** * Receive notification of a processing instruction. * *

    The Parser will invoke this method once for each processing * instruction found: note that processing instructions may occur * before or after the main document element.

    * *

    A SAX parser should never report an XML declaration (XML 1.0, * section 2.8) or a text declaration (XML 1.0, section 4.3.1) * using this method.

    * * @param target The processing instruction target. * @param data The processing instruction data, or null if * none was supplied. * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void processingInstruction ( const XMLCh* const target , const XMLCh* const data ) = 0; /** * Reset the Document object on its reuse * *

    This method helps in reseting the document implementation * defaults each time the document is begun.

    * */ virtual void resetDocument() = 0; /** * Receive an object for locating the origin of SAX document events. * * SAX parsers are strongly encouraged (though not absolutely * required) to supply a locator: if it does so, it must supply * the locator to the application by invoking this method before * invoking any of the other methods in the DocumentHandler * interface. * * The locator allows the application to determine the end * position of any document-related event, even if the parser is * not reporting an error. Typically, the application will * use this information for reporting its own errors (such as * character content that does not match an application's * business rules). The information returned by the locator * is probably not sufficient for use with a search engine. * * Note that the locator will return correct information only * during the invocation of the events in this interface. The * application should not attempt to use it at any other time. * * @param locator An object that can return the location of * any SAX document event. The object is only * 'on loan' to the client code and they are not * to attempt to delete or modify it in any way! * * @see Locator#Locator */ virtual void setDocumentLocator(const Locator* const locator) = 0; /** * Receive notification of the beginning of a document. * *

    The SAX parser will invoke this method only once, before any * other methods in this interface or in DTDHandler (except for * setDocumentLocator).

    * * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void startDocument() = 0; /** * Receive notification of the beginning of an element. * *

    The Parser will invoke this method at the beginning of every * element in the XML document; there will be a corresponding * endElement() event for every startElement() event (even when the * element is empty). All of the element's content will be * reported, in order, before the corresponding endElement() * event.

    * *

    If the element name has a namespace prefix, the prefix will * still be attached. Note that the attribute list provided will * contain only attributes with explicit values (specified or * defaulted): \#IMPLIED attributes will be omitted.

    * * @param name The element type name. * @param attrs The attributes attached to the element, if any. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see #endElement * @see AttributeList#AttributeList */ virtual void startElement ( const XMLCh* const name , AttributeList& attrs ) = 0; //@} private : /* Unimplemented Constructors and operators */ /* Copy constructor */ DocumentHandler(const DocumentHandler&); /** Assignment operator */ DocumentHandler& operator=(const DocumentHandler&); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/sax/SAXParseException.hpp0000644000175000017500000001352411360344373021310 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SAXParseException.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_SAXPARSEEXCEPTION_HPP) #define XERCESC_INCLUDE_GUARD_SAXPARSEEXCEPTION_HPP #include XERCES_CPP_NAMESPACE_BEGIN class Locator; /** * Encapsulate an XML parse error or warning. * *

    This exception will include information for locating the error * in the original XML document. Note that although the application * will receive a SAXParseException as the argument to the handlers * in the ErrorHandler interface, the application is not actually * required to throw the exception; instead, it can simply read the * information in it and take a different action.

    * *

    Since this exception is a subclass of SAXException, it * inherits the ability to wrap another exception.

    * * @see SAXException#SAXException * @see Locator#Locator * @see ErrorHandler#ErrorHandler */ class SAX_EXPORT SAXParseException : public SAXException { public: /** @name Constructors and Destructor */ //@{ /** * Create a new SAXParseException from a message and a Locator. * *

    This constructor is especially useful when an application is * creating its own exception from within a DocumentHandler * callback.

    * * @param message The error or warning message. * @param locator The locator object for the error or warning. * @param manager Pointer to the memory manager to be used to * allocate objects. * @see Locator#Locator * @see Parser#setLocale */ SAXParseException(const XMLCh* const message, const Locator& locator, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); /** * Create a new SAXParseException. * *

    This constructor is most useful for parser writers.

    * *

    If the system identifier is a URL, the parser must resolve it * fully before creating the exception.

    * * @param message The error or warning message. * @param publicId The public identifier of the entity that generated * the error or warning. * @param systemId The system identifier of the entity that generated * the error or warning. * @param lineNumber The line number of the end of the text that * caused the error or warning. * @param columnNumber The column number of the end of the text that * caused the error or warning. * @param manager Pointer to the memory manager to be used to * allocate objects. * @see Parser#setLocale */ SAXParseException ( const XMLCh* const message , const XMLCh* const publicId , const XMLCh* const systemId , const XMLFileLoc lineNumber , const XMLFileLoc columnNumber , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /** * Copy constructor * * @param toCopy The object to be copied */ SAXParseException(const SAXParseException& toCopy); /** * Destructor */ ~SAXParseException(); //@} /** @name Assignment operator */ //@{ /** * Assignment operator * * @param toAssign The object to be copied through assignment * */ SAXParseException& operator=(const SAXParseException& toAssign); //@} /** @name Getter methods */ //@{ /** * The column number of the end of the text where the exception occurred. * *

    The first column in a line is position 1.

    * * @return An integer representing the column number, or 0 * if none is available. * @see Locator#getColumnNumber */ XMLFileLoc getColumnNumber() const; /** * The line number of the end of the text where the exception occurred. * * @return An integer representing the line number, or 0 * if none is available. * @see Locator#getLineNumber */ XMLFileLoc getLineNumber() const; /** * Get the public identifier of the entity where the exception occurred. * * @return A string containing the public identifier, or null * if none is available. * @see Locator#getPublicId */ const XMLCh* getPublicId() const; /** * Get the system identifier of the entity where the exception occurred. * *

    If the system identifier is a URL, it will be resolved * fully.

    * * @return A string containing the system identifier, or null * if none is available. * @see Locator#getSystemId */ const XMLCh* getSystemId() const; //@} private: /* Data Members */ /* The column in the source text where the error occured. */ XMLFileLoc fColumnNumber; /* The line in the source text where the error occured. */ XMLFileLoc fLineNumber; /* The public id of the file where the error occured. */ XMLCh* fPublicId; /* The system id of the file where the error occured. */ XMLCh* fSystemId; }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/sax/HandlerBase.hpp0000644000175000017500000003434111360344373020153 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: HandlerBase.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_HANDLERBASE_HPP) #define XERCESC_INCLUDE_GUARD_HANDLERBASE_HPP #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN class Locator; class AttributeList; /** * Default base class for handlers. * *

    This class implements the default behaviour for four SAX * interfaces: EntityResolver, DTDHandler, DocumentHandler, * and ErrorHandler.

    * *

    Application writers can extend this class when they need to * implement only part of an interface; parser writers can * instantiate this class to provide default handlers when the * application has not supplied its own.

    * *

    Note that the use of this class is optional.

    * * @see EntityResolver#EntityResolver * @see DTDHandler#DTDHandler * @see DocumentHandler#DocumentHandler * @see ErrorHandler#ErrorHandler */ class SAX_EXPORT HandlerBase : public EntityResolver, public DTDHandler, public DocumentHandler , public ErrorHandler { public: /** @name Default handlers for the DocumentHandler interface */ //@{ /** * Receive notification of character data inside an element. * *

    By default, do nothing. Application writers may override this * method to take specific actions for each chunk of character data * (such as adding the data to a node or buffer, or printing it to * a file).

    * * @param chars The characters. * @param length The number of characters to use from the * character array. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see DocumentHandler#characters */ virtual void characters ( const XMLCh* const chars , const XMLSize_t length ); /** * Receive notification of the end of the document. * *

    By default, do nothing. Application writers may override this * method in a subclass to take specific actions at the beginning * of a document (such as finalising a tree or closing an output * file).

    * * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see DocumentHandler#endDocument */ virtual void endDocument(); /** * Receive notification of the end of an element. * *

    By default, do nothing. Application writers may override this * method in a subclass to take specific actions at the end of * each element (such as finalising a tree node or writing * output to a file).

    * * @param name The element type name. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see DocumentHandler#endElement */ virtual void endElement(const XMLCh* const name); /** * Receive notification of ignorable whitespace in element content. * *

    By default, do nothing. Application writers may override this * method to take specific actions for each chunk of ignorable * whitespace (such as adding data to a node or buffer, or printing * it to a file).

    * * @param chars The whitespace characters. * @param length The number of characters to use from the * character array. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see DocumentHandler#ignorableWhitespace */ virtual void ignorableWhitespace ( const XMLCh* const chars , const XMLSize_t length ); /** * Receive notification of a processing instruction. * *

    By default, do nothing. Application writers may override this * method in a subclass to take specific actions for each * processing instruction, such as setting status variables or * invoking other methods.

    * * @param target The processing instruction target. * @param data The processing instruction data, or null if * none is supplied. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see DocumentHandler#processingInstruction */ virtual void processingInstruction ( const XMLCh* const target , const XMLCh* const data ); /** * Reset the Document object on its reuse * * @see DocumentHandler#resetDocument */ virtual void resetDocument(); //@} /** @name Default implementation of DocumentHandler interface */ //@{ /** * Receive a Locator object for document events. * *

    By default, do nothing. Application writers may override this * method in a subclass if they wish to store the locator for use * with other document events.

    * * @param locator A locator for all SAX document events. * @see DocumentHandler#setDocumentLocator * @see Locator */ virtual void setDocumentLocator(const Locator* const locator); /** * Receive notification of the beginning of the document. * *

    By default, do nothing. Application writers may override this * method in a subclass to take specific actions at the beginning * of a document (such as allocating the root node of a tree or * creating an output file).

    * * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see DocumentHandler#startDocument */ virtual void startDocument(); /** * Receive notification of the start of an element. * *

    By default, do nothing. Application writers may override this * method in a subclass to take specific actions at the start of * each element (such as allocating a new tree node or writing * output to a file).

    * * @param name The element type name. * @param attributes The specified or defaulted attributes. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see DocumentHandler#startElement */ virtual void startElement ( const XMLCh* const name , AttributeList& attributes ); //@} /** @name Default implementation of the EntityResolver interface. */ //@{ /** * Resolve an external entity. * *

    Always return null, so that the parser will use the system * identifier provided in the XML document. This method implements * the SAX default behaviour: application writers can override it * in a subclass to do special translations such as catalog lookups * or URI redirection.

    * * @param publicId The public identifier, or null if none is * available. * @param systemId The system identifier provided in the XML * document. * @return The new input source, or null to require the * default behaviour. * The returned InputSource is owned by the parser which is * responsible to clean up the memory. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see EntityResolver#resolveEntity */ virtual InputSource* resolveEntity ( const XMLCh* const publicId , const XMLCh* const systemId ); //@} /** @name Default implementation of the ErrorHandler interface */ //@{ /** * Receive notification of a recoverable parser error. * *

    The default implementation does nothing. Application writers * may override this method in a subclass to take specific actions * for each error, such as inserting the message in a log file or * printing it to the console.

    * * @param exc The warning information encoded as an exception. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see ErrorHandler#warning * @see SAXParseException#SAXParseException */ virtual void error(const SAXParseException& exc); /** * Report a fatal XML parsing error. * *

    The default implementation throws a SAXParseException. * Application writers may override this method in a subclass if * they need to take specific actions for each fatal error (such as * collecting all of the errors into a single report): in any case, * the application must stop all regular processing when this * method is invoked, since the document is no longer reliable, and * the parser may no longer report parsing events.

    * * @param exc The error information encoded as an exception. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see ErrorHandler#fatalError * @see SAXParseException#SAXParseException */ virtual void fatalError(const SAXParseException& exc); /** * Receive notification of a parser warning. * *

    The default implementation does nothing. Application writers * may override this method in a subclass to take specific actions * for each warning, such as inserting the message in a log file or * printing it to the console.

    * * @param exc The warning information encoded as an exception. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see ErrorHandler#warning * @see SAXParseException#SAXParseException */ virtual void warning(const SAXParseException& exc); /** * Reset the Error handler object on its reuse * * @see ErrorHandler#resetErrors */ virtual void resetErrors(); //@} /** @name Default implementation of DTDHandler interface. */ //@{ /** * Receive notification of a notation declaration. * *

    By default, do nothing. Application writers may override this * method in a subclass if they wish to keep track of the notations * declared in a document.

    * * @param name The notation name. * @param publicId The notation public identifier, or null if not * available. * @param systemId The notation system identifier. * @see DTDHandler#notationDecl */ virtual void notationDecl ( const XMLCh* const name , const XMLCh* const publicId , const XMLCh* const systemId ); /** * Reset the DTD object on its reuse * * @see DTDHandler#resetDocType */ virtual void resetDocType(); /** * Receive notification of an unparsed entity declaration. * *

    By default, do nothing. Application writers may override this * method in a subclass to keep track of the unparsed entities * declared in a document.

    * * @param name The entity name. * @param publicId The entity public identifier, or null if not * available. * @param systemId The entity system identifier. * @param notationName The name of the associated notation. * @see DTDHandler#unparsedEntityDecl */ virtual void unparsedEntityDecl ( const XMLCh* const name , const XMLCh* const publicId , const XMLCh* const systemId , const XMLCh* const notationName ); //@} HandlerBase() {}; virtual ~HandlerBase() {}; private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- HandlerBase(const HandlerBase&); HandlerBase& operator=(const HandlerBase&); }; // --------------------------------------------------------------------------- // HandlerBase: Inline default implementations // --------------------------------------------------------------------------- inline void HandlerBase::characters(const XMLCh* const , const XMLSize_t) { } inline void HandlerBase::endDocument() { } inline void HandlerBase::endElement(const XMLCh* const) { } inline void HandlerBase::error(const SAXParseException&) { } inline void HandlerBase::fatalError(const SAXParseException& exc) { throw exc; } inline void HandlerBase::ignorableWhitespace( const XMLCh* const , const XMLSize_t) { } inline void HandlerBase::notationDecl( const XMLCh* const , const XMLCh* const , const XMLCh* const) { } inline void HandlerBase::processingInstruction( const XMLCh* const , const XMLCh* const) { } inline void HandlerBase::resetErrors() { } inline void HandlerBase::resetDocument() { } inline void HandlerBase::resetDocType() { } inline InputSource* HandlerBase::resolveEntity( const XMLCh* const , const XMLCh* const) { return 0; } inline void HandlerBase::unparsedEntityDecl(const XMLCh* const , const XMLCh* const , const XMLCh* const , const XMLCh* const) { } inline void HandlerBase::setDocumentLocator(const Locator* const) { } inline void HandlerBase::startDocument() { } inline void HandlerBase::startElement( const XMLCh* const , AttributeList&) { } inline void HandlerBase::warning(const SAXParseException&) { } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/0000755000175000017500000000000011363617261015451 5ustar borisborisxerces-c-3.1.1/src/xercesc/util/DefaultPanicHandler.cpp0000644000175000017500000000252510523643534022015 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DefaultPanicHandler.cpp 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include XERCES_CPP_NAMESPACE_BEGIN void DefaultPanicHandler::panic(const PanicHandler::PanicReasons reason) { fprintf(stderr, "%s\n", PanicHandler::getPanicReasonString(reason)); exit(-1); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/XMLChTranscoder.cpp0000644000175000017500000001013410765240501021106 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // XMLChTranscoder: Constructors and Destructor // --------------------------------------------------------------------------- XMLChTranscoder::XMLChTranscoder(const XMLCh* const encodingName , const XMLSize_t blockSize , MemoryManager* const manager) : XMLTranscoder(encodingName, blockSize, manager) { } XMLChTranscoder::~XMLChTranscoder() { } // --------------------------------------------------------------------------- // XMLChTranscoder: Implementation of the transcoder API // --------------------------------------------------------------------------- XMLSize_t XMLChTranscoder::transcodeFrom( const XMLByte* const srcData , const XMLSize_t srcCount , XMLCh* const toFill , const XMLSize_t maxChars , XMLSize_t& bytesEaten , unsigned char* const charSizes) { // // Calculate the max chars we can do here. Its the lesser of the // max output chars and the number of chars in the source. // const XMLSize_t srcChars = srcCount / sizeof(XMLCh); const XMLSize_t countToDo = srcChars < maxChars ? srcChars : maxChars; // // Copy over the count of chars that we precalculated. Notice we // convert char count to byte count here!!! // memcpy(toFill, srcData, countToDo * sizeof(XMLCh)); // Set the bytes eaten bytesEaten = countToDo * sizeof(XMLCh); // Set the character sizes to the fixed size memset(charSizes, sizeof(XMLCh), countToDo); // Return the chars we transcoded return countToDo; } XMLSize_t XMLChTranscoder::transcodeTo(const XMLCh* const srcData , const XMLSize_t srcCount , XMLByte* const toFill , const XMLSize_t maxBytes , XMLSize_t& charsEaten , const UnRepOpts) { // // Calculate the max chars we can do here. Its the lesser of the // max chars we can store in the output byte buffer, and the number // of chars in the source. // const XMLSize_t maxOutChars = maxBytes / sizeof(XMLCh); const XMLSize_t countToDo = maxOutChars < srcCount ? maxOutChars : srcCount; // // Copy over the number of chars we calculated. Note that we have // to convert the char count to a byte count!! // memcpy(toFill, srcData, countToDo * sizeof(XMLCh)); // Set the chars eaten charsEaten = countToDo; // Return the bytes we transcoded return countToDo * sizeof(XMLCh); } bool XMLChTranscoder::canTranscodeTo(const unsigned int) { // We can handle anything return true; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/RefArrayVectorOf.c0000644000175000017500000001006511037122704020771 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #if defined(XERCES_TMPLSINC) #include "RefArrayVectorOf.hpp" #endif XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // RefArrayVectorOf: Constructor and Destructor // --------------------------------------------------------------------------- template RefArrayVectorOf::RefArrayVectorOf( const XMLSize_t maxElems , const bool adoptElems , MemoryManager* const manager) : BaseRefVectorOf(maxElems, adoptElems, manager) { } template RefArrayVectorOf::~RefArrayVectorOf() { if (this->fAdoptedElems) { for (XMLSize_t index = 0; index < this->fCurCount; index++) this->fMemoryManager->deallocate(this->fElemList[index]);//delete[] fElemList[index]; } this->fMemoryManager->deallocate(this->fElemList);//delete [] fElemList; } template void RefArrayVectorOf::setElementAt(TElem* const toSet, const XMLSize_t setAt) { if (setAt >= this->fCurCount) ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Vector_BadIndex, this->fMemoryManager); if (this->fAdoptedElems) this->fMemoryManager->deallocate(this->fElemList[setAt]); this->fElemList[setAt] = toSet; } template void RefArrayVectorOf::removeAllElements() { for (XMLSize_t index = 0; index < this->fCurCount; index++) { if (this->fAdoptedElems) this->fMemoryManager->deallocate(this->fElemList[index]); // Keep unused elements zero for sanity's sake this->fElemList[index] = 0; } this->fCurCount = 0; } template void RefArrayVectorOf:: removeElementAt(const XMLSize_t removeAt) { if (removeAt >= this->fCurCount) ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Vector_BadIndex, this->fMemoryManager); if (this->fAdoptedElems) this->fMemoryManager->deallocate(this->fElemList[removeAt]); // Optimize if its the last element if (removeAt == this->fCurCount-1) { this->fElemList[removeAt] = 0; this->fCurCount--; return; } // Copy down every element above remove point for (XMLSize_t index = removeAt; index < this->fCurCount-1; index++) this->fElemList[index] = this->fElemList[index+1]; // Keep unused elements zero for sanity's sake this->fElemList[this->fCurCount-1] = 0; // And bump down count this->fCurCount--; } template void RefArrayVectorOf::removeLastElement() { if (!this->fCurCount) return; this->fCurCount--; if (this->fAdoptedElems) this->fMemoryManager->deallocate(this->fElemList[this->fCurCount]); } template void RefArrayVectorOf::cleanup() { if (this->fAdoptedElems) { for (XMLSize_t index = 0; index < this->fCurCount; index++) this->fMemoryManager->deallocate(this->fElemList[index]); } this->fMemoryManager->deallocate(this->fElemList);//delete [] fElemList; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/RefHashTableOf.c0000644000175000017500000004677211041105072020373 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: RefHashTableOf.c 678409 2008-07-21 13:08:10Z borisk $ */ // --------------------------------------------------------------------------- // Include // --------------------------------------------------------------------------- #if defined(XERCES_TMPLSINC) #include #endif #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // RefHashTableOf: Constructors and Destructor // --------------------------------------------------------------------------- template RefHashTableOf::RefHashTableOf( const XMLSize_t modulus, MemoryManager* const manager) : fMemoryManager(manager) , fAdoptedElems(true) , fBucketList(0) , fHashModulus(modulus) , fInitialModulus(modulus) , fCount(0) { initialize(modulus); } template RefHashTableOf::RefHashTableOf( const XMLSize_t modulus, const THasher& hasher, MemoryManager* const manager) : fMemoryManager(manager) , fAdoptedElems(true) , fBucketList(0) , fHashModulus(modulus) , fInitialModulus(modulus) , fCount(0) , fHasher (hasher) { initialize(modulus); } template RefHashTableOf::RefHashTableOf( const XMLSize_t modulus, const bool adoptElems, MemoryManager* const manager) : fMemoryManager(manager) , fAdoptedElems(adoptElems) , fBucketList(0) , fHashModulus(modulus) , fInitialModulus(modulus) , fCount(0) { initialize(modulus); } template RefHashTableOf::RefHashTableOf( const XMLSize_t modulus, const bool adoptElems, const THasher& hasher, MemoryManager* const manager) : fMemoryManager(manager) , fAdoptedElems(adoptElems) , fBucketList(0) , fHashModulus(modulus) , fInitialModulus(modulus) , fCount(0) , fHasher (hasher) { initialize(modulus); } template void RefHashTableOf::initialize(const XMLSize_t modulus) { if (modulus == 0) ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::HshTbl_ZeroModulus, fMemoryManager); // Allocate the bucket list and zero them fBucketList = (RefHashTableBucketElem**) fMemoryManager->allocate ( fHashModulus * sizeof(RefHashTableBucketElem*) ); for (XMLSize_t index = 0; index < fHashModulus; index++) fBucketList[index] = 0; } template RefHashTableOf::~RefHashTableOf() { cleanup(); } // --------------------------------------------------------------------------- // RefHashTableOf: Element management // --------------------------------------------------------------------------- template inline bool RefHashTableOf::isEmpty() const { return fCount==0; } template inline bool RefHashTableOf::containsKey(const void* const key) const { XMLSize_t hashVal; const RefHashTableBucketElem* findIt = findBucketElem(key, hashVal); return (findIt != 0); } template void RefHashTableOf:: removeKey(const void* const key) { // Hash the key XMLSize_t hashVal = fHasher.getHashVal(key, fHashModulus); // // Search the given bucket for this key. Keep up with the previous // element so we can patch around it. // RefHashTableBucketElem* curElem = fBucketList[hashVal]; RefHashTableBucketElem* lastElem = 0; while (curElem) { if (fHasher.equals(key, curElem->fKey)) { if (!lastElem) { // It was the first in the bucket fBucketList[hashVal] = curElem->fNext; } else { // Patch around the current element lastElem->fNext = curElem->fNext; } // If we adopted the data, then delete it too // (Note: the userdata hash table instance has data type of void *. // This will generate compiler warnings here on some platforms, but they // can be ignored since fAdoptedElements is false. if (fAdoptedElems) delete curElem->fData; // Then delete the current element and move forward // delete curElem; // destructor doesn't do anything... fMemoryManager->deallocate(curElem); fCount--; return; } // Move both pointers upwards lastElem = curElem; curElem = curElem->fNext; } // We never found that key ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::HshTbl_NoSuchKeyExists, fMemoryManager); } template void RefHashTableOf::removeAll() { if(isEmpty()) return; // Clean up the buckets first for (XMLSize_t buckInd = 0; buckInd < fHashModulus; buckInd++) { // Get the bucket list head for this entry RefHashTableBucketElem* curElem = fBucketList[buckInd]; RefHashTableBucketElem* nextElem; while (curElem) { // Save the next element before we hose this one nextElem = curElem->fNext; // If we adopted the data, then delete it too // (Note: the userdata hash table instance has data type of void *. // This will generate compiler warnings here on some platforms, but they // can be ignored since fAdoptedElements is false. if (fAdoptedElems) delete curElem->fData; // Then delete the current element and move forward // delete curElem; // destructor doesn't do anything... // curElem->~RefHashTableBucketElem(); fMemoryManager->deallocate(curElem); curElem = nextElem; } // Clean out this entry fBucketList[buckInd] = 0; } fCount = 0; } // This method returns the data associated with a key. The key entry is deleted. The caller // now owns the returned data (case of hashtable adopting the data). // This function is called by transferElement so that the undeleted data can be transferred // to a new key which will own that data. template TVal* RefHashTableOf:: orphanKey(const void* const key) { // Hash the key TVal* retVal = 0; XMLSize_t hashVal = fHasher.getHashVal(key, fHashModulus); // // Search the given bucket for this key. Keep up with the previous // element so we can patch around it. // RefHashTableBucketElem* curElem = fBucketList[hashVal]; RefHashTableBucketElem* lastElem = 0; while (curElem) { if (fHasher.equals(key, curElem->fKey)) { if (!lastElem) { // It was the first in the bucket fBucketList[hashVal] = curElem->fNext; } else { // Patch around the current element lastElem->fNext = curElem->fNext; } retVal = curElem->fData; // Delete the current element // delete curElem; // destructor doesn't do anything... // curElem->~RefHashTableBucketElem(); fMemoryManager->deallocate(curElem); break; } // Move both pointers upwards lastElem = curElem; curElem = curElem->fNext; } // We never found that key if (!retVal) ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::HshTbl_NoSuchKeyExists, fMemoryManager); return retVal; } // // cleanup(): // similar to destructor // called to cleanup the memory, in case destructor cannot be called // template void RefHashTableOf::cleanup() { removeAll(); // Then delete the bucket list & hasher fMemoryManager->deallocate(fBucketList); fBucketList = 0; } // // reinitialize(): // similar to constructor // called to re-construct the fElemList from scratch again // template void RefHashTableOf::reinitialize(const THasher& hasher) { if (fBucketList) cleanup(); fHasher = hasher; fHashModulus = fInitialModulus; initialize(fHashModulus); } // this function transfer the data from key1 to key2 // this is equivalent to calling // 1. get(key1) to retrieve the data, // 2. removeKey(key1), // 3. and then put(key2, data) // except that the data is not deleted in "removeKey" even it is adopted so that it // can be transferred to key2. // whatever key2 has originally will be purged (if adopted) template inline void RefHashTableOf::transferElement(const void* const key1, void* key2) { put(key2, orphanKey(key1)); } // --------------------------------------------------------------------------- // RefHashTableOf: Getters // --------------------------------------------------------------------------- template inline TVal* RefHashTableOf::get(const void* const key) { XMLSize_t hashVal; RefHashTableBucketElem* findIt = findBucketElem(key, hashVal); return findIt ? findIt->fData : 0; } template inline const TVal* RefHashTableOf:: get(const void* const key) const { XMLSize_t hashVal; const RefHashTableBucketElem* findIt = findBucketElem(key, hashVal); return findIt ? findIt->fData : 0; } template inline MemoryManager* RefHashTableOf::getMemoryManager() const { return fMemoryManager; } template inline XMLSize_t RefHashTableOf::getHashModulus() const { return fHashModulus; } template inline XMLSize_t RefHashTableOf::getCount() const { return fCount; } // --------------------------------------------------------------------------- // RefHashTableOf: Getters // --------------------------------------------------------------------------- template inline void RefHashTableOf::setAdoptElements(const bool aValue) { fAdoptedElems = aValue; } // --------------------------------------------------------------------------- // RefHashTableOf: Putters // --------------------------------------------------------------------------- template void RefHashTableOf::put(void* key, TVal* const valueToAdopt) { // Apply 0.75 load factor to find threshold. XMLSize_t threshold = fHashModulus * 3 / 4; // If we've grown too big, expand the table and rehash. if (fCount >= threshold) rehash(); // First see if the key exists already XMLSize_t hashVal; RefHashTableBucketElem* newBucket = findBucketElem(key, hashVal); // // If so,then update its value. If not, then we need to add it to // the right bucket // if (newBucket) { if (fAdoptedElems) delete newBucket->fData; newBucket->fData = valueToAdopt; newBucket->fKey = key; } else { newBucket = new (fMemoryManager->allocate(sizeof(RefHashTableBucketElem))) RefHashTableBucketElem(key, valueToAdopt, fBucketList[hashVal]); fBucketList[hashVal] = newBucket; fCount++; } } // --------------------------------------------------------------------------- // RefHashTableOf: Private methods // --------------------------------------------------------------------------- template void RefHashTableOf::rehash() { const XMLSize_t newMod = (fHashModulus * 2) + 1; RefHashTableBucketElem** newBucketList = (RefHashTableBucketElem**) fMemoryManager->allocate ( newMod * sizeof(RefHashTableBucketElem*) ); // Make sure the new bucket list is destroyed if an // exception is thrown. ArrayJanitor*> guard(newBucketList, fMemoryManager); memset(newBucketList, 0, newMod * sizeof(newBucketList[0])); // Rehash all existing entries. for (XMLSize_t index = 0; index < fHashModulus; index++) { // Get the bucket list head for this entry RefHashTableBucketElem* curElem = fBucketList[index]; while (curElem) { // Save the next element before we detach this one RefHashTableBucketElem* const nextElem = curElem->fNext; const XMLSize_t hashVal = fHasher.getHashVal(curElem->fKey, newMod); RefHashTableBucketElem* const newHeadElem = newBucketList[hashVal]; // Insert at the start of this bucket's list. curElem->fNext = newHeadElem; newBucketList[hashVal] = curElem; curElem = nextElem; } } RefHashTableBucketElem** const oldBucketList = fBucketList; // Everything is OK at this point, so update the // member variables. fBucketList = guard.release(); fHashModulus = newMod; // Delete the old bucket list. fMemoryManager->deallocate(oldBucketList);//delete[] oldBucketList; } template inline RefHashTableBucketElem* RefHashTableOf:: findBucketElem(const void* const key, XMLSize_t& hashVal) { // Hash the key hashVal = fHasher.getHashVal(key, fHashModulus); // Search that bucket for the key RefHashTableBucketElem* curElem = fBucketList[hashVal]; while (curElem) { if (fHasher.equals(key, curElem->fKey)) return curElem; curElem = curElem->fNext; } return 0; } template inline const RefHashTableBucketElem* RefHashTableOf:: findBucketElem(const void* const key, XMLSize_t& hashVal) const { // Hash the key hashVal = fHasher.getHashVal(key, fHashModulus); // Search that bucket for the key const RefHashTableBucketElem* curElem = fBucketList[hashVal]; while (curElem) { if (fHasher.equals(key, curElem->fKey)) return curElem; curElem = curElem->fNext; } return 0; } // --------------------------------------------------------------------------- // RefHashTableOfEnumerator: Constructors and Destructor // --------------------------------------------------------------------------- template RefHashTableOfEnumerator:: RefHashTableOfEnumerator(RefHashTableOf* const toEnum , const bool adopt , MemoryManager* const manager) : fAdopted(adopt), fCurElem(0), fCurHash((XMLSize_t)-1), fToEnum(toEnum) , fMemoryManager(manager) { if (!toEnum) ThrowXMLwithMemMgr(NullPointerException, XMLExcepts::CPtr_PointerIsZero, fMemoryManager); // // Find the next available bucket element in the hash table. If it // comes back zero, that just means the table is empty. // // Note that the -1 in the current hash tells it to start // from the beginning. // findNext(); } template RefHashTableOfEnumerator::~RefHashTableOfEnumerator() { if (fAdopted) delete fToEnum; } template RefHashTableOfEnumerator:: RefHashTableOfEnumerator(const RefHashTableOfEnumerator& toCopy) : XMLEnumerator(toCopy) , XMemory(toCopy) , fAdopted(toCopy.fAdopted) , fCurElem(toCopy.fCurElem) , fCurHash(toCopy.fCurHash) , fToEnum(toCopy.fToEnum) , fMemoryManager(toCopy.fMemoryManager) { } // --------------------------------------------------------------------------- // RefHashTableOfEnumerator: Enum interface // --------------------------------------------------------------------------- template bool RefHashTableOfEnumerator::hasMoreElements() const { // // If our current has is at the max and there are no more elements // in the current bucket, then no more elements. // if (!fCurElem && (fCurHash == fToEnum->fHashModulus)) return false; return true; } template TVal& RefHashTableOfEnumerator::nextElement() { // Make sure we have an element to return if (!hasMoreElements()) ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::Enum_NoMoreElements, fMemoryManager); // // Save the current element, then move up to the next one for the // next time around. // RefHashTableBucketElem* saveElem = fCurElem; findNext(); return *saveElem->fData; } template void* RefHashTableOfEnumerator::nextElementKey() { // Make sure we have an element to return if (!hasMoreElements()) ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::Enum_NoMoreElements, fMemoryManager); // // Save the current element, then move up to the next one for the // next time around. // RefHashTableBucketElem* saveElem = fCurElem; findNext(); return saveElem->fKey; } template void RefHashTableOfEnumerator::Reset() { fCurHash = (XMLSize_t)-1; fCurElem = 0; findNext(); } // --------------------------------------------------------------------------- // RefHashTableOfEnumerator: Private helper methods // --------------------------------------------------------------------------- template void RefHashTableOfEnumerator::findNext() { // // If there is a current element, move to its next element. If this // hits the end of the bucket, the next block will handle the rest. // if (fCurElem) fCurElem = fCurElem->fNext; // // If the current element is null, then we have to move up to the // next hash value. If that is the hash modulus, then we cannot // go further. // if (!fCurElem) { fCurHash++; if (fCurHash == fToEnum->fHashModulus) return; // Else find the next non-empty bucket while (fToEnum->fBucketList[fCurHash]==0) { // Bump to the next hash value. If we max out return fCurHash++; if (fCurHash == fToEnum->fHashModulus) return; } fCurElem = fToEnum->fBucketList[fCurHash]; } } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/XMLAbstractDoubleFloat.cpp0000644000175000017500000004711011032467633022424 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLAbstractDoubleFloat.cpp 673155 2008-07-01 17:55:39Z dbertoni $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // local data member // --------------------------------------------------------------------------- static const int BUF_LEN = 64; static XMLCh expSign[] = {chLatin_e, chLatin_E, chNull}; // --------------------------------------------------------------------------- // ctor/dtor // --------------------------------------------------------------------------- XMLAbstractDoubleFloat::XMLAbstractDoubleFloat(MemoryManager* const manager) : fValue(0) , fType(Normal) , fDataConverted(false) , fDataOverflowed(false) , fSign(0) , fRawData(0) , fFormattedString(0) , fMemoryManager(manager) { } XMLAbstractDoubleFloat::~XMLAbstractDoubleFloat() { fMemoryManager->deallocate(fRawData);//delete [] fRawData; fMemoryManager->deallocate(fFormattedString);//delete [] fFormattedString; } void XMLAbstractDoubleFloat::init(const XMLCh* const strValue) { if ((!strValue) || (!*strValue)) ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_emptyString, fMemoryManager); fRawData = XMLString::replicate(strValue, fMemoryManager); // preserve the raw data form XMLCh* tmpStrValue = XMLString::replicate(strValue, fMemoryManager); ArrayJanitor janTmpName(tmpStrValue, fMemoryManager); XMLString::trim(tmpStrValue); if (!*tmpStrValue) ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_emptyString, fMemoryManager); normalizeZero(tmpStrValue); if (XMLString::equals(tmpStrValue, XMLUni::fgNegINFString) ) { fType = NegINF; fSign = -1; } else if (XMLString::equals(tmpStrValue, XMLUni::fgPosINFString) ) { fType = PosINF; fSign = 1; } else if (XMLString::equals(tmpStrValue, XMLUni::fgNaNString) ) { fType = NaN; fSign = 1; } else // // Normal case // { // Use a stack-based buffer when possible. Since all // valid doubles or floats will only contain ASCII // digits, a decimal point, or the exponent character, // they will all be single byte characters, and this will // work. static const XMLSize_t maxStackSize = 100; XMLSize_t lenTempStrValue = 0; // Need to check that the string only contains valid schema characters // since the call to strtod may allow other values. For example, AIX // allows "infinity" and "+INF" XMLCh curChar; while ((curChar = tmpStrValue[lenTempStrValue])!=0) { if (!((curChar >= chDigit_0 && curChar <= chDigit_9) || curChar == chPeriod || curChar == chDash || curChar == chPlus || curChar == chLatin_E || curChar == chLatin_e)) { ThrowXMLwithMemMgr( NumberFormatException, XMLExcepts::XMLNUM_Inv_chars, getMemoryManager()); } lenTempStrValue++; } if (lenTempStrValue < maxStackSize) { char buffer[maxStackSize + 1]; XMLString::transcode( tmpStrValue, buffer, sizeof(buffer) - 1, getMemoryManager()); // Do this for safety, because we've // no guarantee we didn't overrun the // capacity of the buffer when transcoding // a bogus value. buffer[maxStackSize] = '\0'; // If they aren't the same length, then some // non-ASCII multibyte character was present. // This will only happen in the case where the // string has a bogus character, and it's long // enough to overrun this buffer, but we need // to check, even if it's unlikely to happen. if (XMLString::stringLen(buffer) != lenTempStrValue) { ThrowXMLwithMemMgr( NumberFormatException, XMLExcepts::XMLNUM_Inv_chars, getMemoryManager()); } checkBoundary(buffer); } else { char *nptr = XMLString::transcode(tmpStrValue, getMemoryManager()); const ArrayJanitor janStr(nptr, fMemoryManager); checkBoundary(nptr); } } } XMLCh* XMLAbstractDoubleFloat::getRawData() const { return fRawData; } const XMLCh* XMLAbstractDoubleFloat::getFormattedString() const { if (!fDataConverted) { return fRawData; } else { if (!fFormattedString) { XMLAbstractDoubleFloat *temp = (XMLAbstractDoubleFloat *) this; temp->formatString(); } return fFormattedString; } } void XMLAbstractDoubleFloat::formatString() { XMLSize_t rawDataLen = XMLString::stringLen(fRawData); fFormattedString = (XMLCh*) fMemoryManager->allocate ( (rawDataLen + 8) * sizeof(XMLCh) );//new XMLCh [ rawDataLen + 8]; for (XMLSize_t i = 0; i < rawDataLen + 8; i++) fFormattedString[i] = chNull; XMLString::copyString(fFormattedString, fRawData); fFormattedString[rawDataLen] = chSpace; fFormattedString[rawDataLen + 1] = chOpenParen; switch (fType) { case NegINF: XMLString::catString(fFormattedString, XMLUni::fgNegINFString); break; case PosINF: XMLString::catString(fFormattedString, XMLUni::fgPosINFString); break; case NaN: XMLString::catString(fFormattedString, XMLUni::fgNaNString); break; default: // its zero XMLString::catString(fFormattedString, XMLUni::fgPosZeroString); break; } fFormattedString[XMLString::stringLen(fFormattedString)] = chCloseParen; } int XMLAbstractDoubleFloat::getSign() const { return fSign; } // // // int XMLAbstractDoubleFloat::compareValues(const XMLAbstractDoubleFloat* const lValue , const XMLAbstractDoubleFloat* const rValue , MemoryManager* const manager) { // // case#1: lValue normal // rValue normal // if ((!lValue->isSpecialValue()) && (!rValue->isSpecialValue()) ) { if (lValue->fValue == rValue->fValue) return EQUAL; else return (lValue->fValue > rValue->fValue) ? GREATER_THAN : LESS_THAN; } // // case#2: lValue special // rValue special // // Schema Errata E2-40 // // Positive Infinity is greater than all other non-NAN value. // Nan equals itself but is not comparable with (neither greater than nor less than) // any other value in the value space // Negative Infinity is less than all other non-NAN values. // else if ((lValue->isSpecialValue()) && (rValue->isSpecialValue()) ) { if (lValue->fType == rValue->fType) return EQUAL; else { if ((lValue->fType == NaN) || (rValue->fType == NaN) ) { return INDETERMINATE; } else { return (lValue->fType > rValue->fType) ? GREATER_THAN : LESS_THAN; } } } // // case#3: lValue special // rValue normal // else if ((lValue->isSpecialValue()) && (!rValue->isSpecialValue()) ) { return compareSpecial(lValue, manager); } // // case#4: lValue normal // rValue special // else { return (-1) * compareSpecial(rValue, manager); } } int XMLAbstractDoubleFloat::compareSpecial(const XMLAbstractDoubleFloat* const specialValue , MemoryManager* const manager) { switch (specialValue->fType) { case NegINF: return LESS_THAN; case PosINF: return GREATER_THAN; case NaN: // NaN is not comparable to any other value return INDETERMINATE; default: XMLCh value1[BUF_LEN+1]; XMLString::binToText(specialValue->fType, value1, 16, 10, manager); ThrowXMLwithMemMgr1(NumberFormatException , XMLExcepts::XMLNUM_DBL_FLT_InvalidType , value1, manager); //internal error return 0; } } // // Assumption: no leading space // // 1. The valid char set is "+-.0" // 2. There shall be only one sign at the first position, if there is one. // 3. There shall be only one dot '.', if there is one. // // Return: // // for input comforming to [+]? [0]* '.'? [0]*, // normalize the input to positive zero string // for input comforming to '-' [0]* '.'? [0]*, // normalize the input to negative zero string // otherwise, do nothing // void XMLAbstractDoubleFloat::normalizeZero(XMLCh* const inData) { // do a quick check if (!inData || !*inData || (XMLString::equals(inData, XMLUni::fgNegZeroString) ) || (XMLString::equals(inData, XMLUni::fgPosZeroString) ) ) return; XMLCh* srcStr = inData; bool minusSeen = false; bool dotSeen = false; // process sign if any if (*srcStr == chDash) { minusSeen = true; srcStr++; if (!*srcStr) { ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_Inv_chars, getMemoryManager()); } } else if (*srcStr == chPlus) { srcStr++; if (!*srcStr) { ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_Inv_chars, getMemoryManager()); } } else if (*srcStr == chPeriod) { dotSeen = true; srcStr++; if (!*srcStr) { ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_Inv_chars, getMemoryManager()); } } // scan the string bool isValidStr = true; XMLCh theChar; while ((theChar=*srcStr++)!=0 && isValidStr) { if ( theChar != chPeriod && theChar != chDigit_0 ) isValidStr = false; // invalid char else if (theChar == chPeriod) // process dot dotSeen ? isValidStr = false : dotSeen = true; } // need not to worry about the memory problem // since either fgNegZeroString or fgPosZeroString // is the canonical form (meaning the shortest in length) // of their category respectively. if (isValidStr) { if (minusSeen) XMLString::copyString(inData, XMLUni::fgNegZeroString); else XMLString::copyString(inData, XMLUni::fgPosZeroString); } else { // we got to set the sign first, since this string may // eventaully turn out to be beyond the minimum representable // number and reduced to -0 or +0. fSign = minusSeen ? -1 : 1; } return; } void XMLAbstractDoubleFloat::normalizeDecimalPoint(char* const toNormal) { // find the locale-specific decimal point delimiter lconv* lc = localeconv(); char delimiter = *lc->decimal_point; // replace '.' with the locale-specific decimal point delimiter if ( delimiter != '.' ) { char* period = strchr( toNormal, '.' ); if ( period ) { *period = delimiter; } } } void XMLAbstractDoubleFloat::convert(char* const strValue) { normalizeDecimalPoint(strValue); char *endptr = 0; errno = 0; fValue = strtod(strValue, &endptr); // check if all chars are valid char. If they are, endptr will // pointer to the null terminator. if (*endptr != '\0') { ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_Inv_chars, getMemoryManager()); } // check if overflow/underflow occurs if (errno == ERANGE) { fDataConverted = true; if ( fValue < 0 ) { if (fValue > (-1)*DBL_MIN) { fValue = 0; } else { fType = NegINF; fDataOverflowed = true; } } else if ( fValue > 0) { if (fValue < DBL_MIN ) { fValue = 0; } else { fType = PosINF; fDataOverflowed = true; } } } } /*** * E2-40 * * 3.2.4 float * 3.2.5 double * * . the exponent must be indicated by "E". * if the exponent is zero, it must be indicated by "E0". * * . For the mantissa, * the preceding optional "+" sign is prohibited and * the decimal point is required. * * . For the exponent, * the preceding optional "+" sign is prohibited. * Leading zeroes are prohibited. * * . Leading and trailing zeroes are prohibited subject to the following: * number representations must be normalized such that * . there is a single digit, which is non-zero, to the left of the decimal point and * . at least a single digit to the right of the decimal point. * . unless the value being represented is zero. * The canonical representation for zero is 0.0E0 * ***/ XMLCh* XMLAbstractDoubleFloat::getCanonicalRepresentation(const XMLCh* const rawData , MemoryManager* const memMgr) { // before anything, let's look for special tokens since that // breaks the calls to parse below. if(XMLString::equals(rawData, XMLUni::fgNegINFString) || XMLString::equals(rawData, XMLUni::fgPosINFString) || XMLString::equals(rawData, XMLUni::fgNaNString) ) { return XMLString::replicate(rawData, memMgr); } try { XMLSize_t strLen = XMLString::stringLen(rawData); XMLCh* manStr = (XMLCh*) memMgr->allocate((strLen + 1) * sizeof(XMLCh)); ArrayJanitor janManStr(manStr, memMgr); XMLCh* manBuf = (XMLCh*) memMgr->allocate((strLen + 1) * sizeof(XMLCh)); ArrayJanitor janManBuf(manBuf, memMgr); XMLCh* expStr = (XMLCh*) memMgr->allocate((strLen + 1) * sizeof(XMLCh)); ArrayJanitor janExpStr(expStr, memMgr); XMLCh* retBuffer = (XMLCh*) memMgr->allocate((strLen + 8) * sizeof(XMLCh)); ArrayJanitor janRetBuffer(retBuffer, memMgr); retBuffer[0] = 0; int sign, totalDigits, fractDigits, expValue = 0; const XMLCh* ePosition = XMLString::findAny(rawData, expSign); /*** * parse mantissa and exp separately ***/ if (!ePosition) { XMLBigDecimal::parseDecimal(rawData, manBuf, sign, totalDigits, fractDigits, memMgr); expValue = 0; } else { XMLSize_t manLen = ePosition - rawData; XMLString::copyNString(manStr, rawData, manLen); *(manStr + manLen) = chNull; XMLBigDecimal::parseDecimal(manStr, manBuf, sign, totalDigits, fractDigits, memMgr); XMLSize_t expLen = strLen - manLen - 1; ePosition++; XMLString::copyNString(expStr, ePosition, expLen); *(expStr + expLen) = chNull; expValue = XMLString::parseInt(expStr); } if ( (sign == 0) || (totalDigits == 0) ) { retBuffer[0] = chDigit_0; retBuffer[1] = chPeriod; retBuffer[2] = chDigit_0; retBuffer[3] = chLatin_E; retBuffer[4] = chDigit_0; retBuffer[5] = chNull; } else { XMLCh* retPtr = retBuffer; if (sign == -1) { *retPtr++ = chDash; } *retPtr++ = manBuf[0]; *retPtr++ = chPeriod; //XMLBigDecimal::parseDecimal() will eliminate trailing zeros // iff there is a decimal points // eg. 56.7800e0 -> manBuf = 5678, totalDigits = 4, fractDigits = 2 // we print it as 5.678e1 // // but it wont remove trailing zeros if there is no decimal point. // eg. 567800e0 -> manBuf = 567800, totalDigits = 6, fractDigits = 0 // we print it 5.67800e5 // // for the latter, we need to print it as 5.678e5 instead // XMLCh* endPtr = manBuf + totalDigits; if (fractDigits == 0) { while(*(endPtr - 1) == chDigit_0) endPtr--; } XMLSize_t remainLen = endPtr - &(manBuf[1]); if (remainLen) { XMLString::copyNString(retPtr, &(manBuf[1]), remainLen); retPtr += remainLen; } else { *retPtr++ = chDigit_0; } /*** * * . adjust expValue * * new_fractDigits = totalDigits - 1 * new_expValue = old_expValue + (new_fractDigits - fractDigits) * ***/ expValue += (totalDigits - 1) - fractDigits ; XMLString::binToText(expValue, expStr, strLen, 10, memMgr); *retPtr++ = chLatin_E; *retPtr = chNull; XMLString::catString(&(retBuffer[0]), expStr); } janRetBuffer.release(); return retBuffer; } catch (const NumberFormatException&) { return 0; } } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_NOCREATE(XMLAbstractDoubleFloat) void XMLAbstractDoubleFloat::serialize(XSerializeEngine& serEng) { //REVISIT: may not need to call base since it does nothing XMLNumber::serialize(serEng); if (serEng.isStoring()) { serEng << fValue; serEng << fType; serEng << fDataConverted; serEng << fDataOverflowed; serEng << fSign; serEng.writeString(fRawData); // Do not serialize fFormattedString } else { serEng >> fValue; int type = 0; serEng >> type; fType = (LiteralType) type; serEng >> fDataConverted; serEng >> fDataOverflowed; serEng >> fSign; serEng.readString(fRawData); // Set it to 0 force it to re-format if needed fFormattedString = 0; } } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/KVStringPair.hpp0000644000175000017500000001543410644375537020524 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: KVStringPair.hpp 554580 2007-07-09 09:09:51Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_KVSTRINGPAIR_HPP) #define XERCESC_INCLUDE_GUARD_KVSTRINGPAIR_HPP #include #include #include XERCES_CPP_NAMESPACE_BEGIN // // This class provides a commonly used data structure, which is that of // a pair of strings which represent a 'key=value' type mapping. It works // only in terms of XMLCh type raw strings. // class XMLUTIL_EXPORT KVStringPair : public XSerializable, public XMemory { public: // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- KVStringPair(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); KVStringPair ( const XMLCh* const key , const XMLCh* const value , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); KVStringPair ( const XMLCh* const key , const XMLCh* const value , const XMLSize_t valueLength , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); KVStringPair ( const XMLCh* const key , const XMLSize_t keyLength , const XMLCh* const value , const XMLSize_t valueLength , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); KVStringPair(const KVStringPair& toCopy); ~KVStringPair(); // ----------------------------------------------------------------------- // Getters // // We support the // ----------------------------------------------------------------------- const XMLCh* getKey() const; XMLCh* getKey(); const XMLCh* getValue() const; XMLCh* getValue(); // ----------------------------------------------------------------------- // Setters // ----------------------------------------------------------------------- void setKey(const XMLCh* const newKey); void setValue(const XMLCh* const newValue); void setKey ( const XMLCh* const newKey , const XMLSize_t newKeyLength ); void setValue ( const XMLCh* const newValue , const XMLSize_t newValueLength ); void set ( const XMLCh* const newKey , const XMLCh* const newValue ); void set ( const XMLCh* const newKey , const XMLSize_t newKeyLength , const XMLCh* const newValue , const XMLSize_t newValueLength ); /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(KVStringPair) private : // unimplemented: KVStringPair& operator=(const KVStringPair&); // ----------------------------------------------------------------------- // Private data members // // fKey // The string that represents the key field of this object. // // fKeyAllocSize // The amount of memory allocated for fKey. // // fValue // The string that represents the value of this pair object. // // fValueAllocSize // The amount of memory allocated for fValue. // // ----------------------------------------------------------------------- XMLSize_t fKeyAllocSize; XMLSize_t fValueAllocSize; XMLCh* fKey; XMLCh* fValue; MemoryManager* fMemoryManager; }; // --------------------------------------------------------------------------- // KVStringPair: Getters // --------------------------------------------------------------------------- inline const XMLCh* KVStringPair::getKey() const { return fKey; } inline XMLCh* KVStringPair::getKey() { return fKey; } inline const XMLCh* KVStringPair::getValue() const { return fValue; } inline XMLCh* KVStringPair::getValue() { return fValue; } // --------------------------------------------------------------------------- // KVStringPair: Setters // --------------------------------------------------------------------------- inline void KVStringPair::setKey(const XMLCh* const newKey) { setKey(newKey, XMLString::stringLen(newKey)); } inline void KVStringPair::setValue(const XMLCh* const newValue) { setValue(newValue, XMLString::stringLen(newValue)); } inline void KVStringPair::setKey( const XMLCh* const newKey , const XMLSize_t newKeyLength) { if (newKeyLength >= fKeyAllocSize) { fMemoryManager->deallocate(fKey); //delete [] fKey; fKey = 0; fKeyAllocSize = newKeyLength + 1; fKey = (XMLCh*) fMemoryManager->allocate(fKeyAllocSize * sizeof(XMLCh)); //new XMLCh[fKeyAllocSize]; } memcpy(fKey, newKey, (newKeyLength+1) * sizeof(XMLCh)); // len+1 because of the 0 at the end } inline void KVStringPair::setValue( const XMLCh* const newValue , const XMLSize_t newValueLength) { if (newValueLength >= fValueAllocSize) { fMemoryManager->deallocate(fValue); //delete [] fValue; fValue = 0; fValueAllocSize = newValueLength + 1; fValue = (XMLCh*) fMemoryManager->allocate(fValueAllocSize * sizeof(XMLCh)); //new XMLCh[fValueAllocSize]; } memcpy(fValue, newValue, (newValueLength+1) * sizeof(XMLCh)); // len+1 because of the 0 at the end } inline void KVStringPair::set( const XMLCh* const newKey , const XMLCh* const newValue) { setKey(newKey, XMLString::stringLen(newKey)); setValue(newValue, XMLString::stringLen(newValue)); } inline void KVStringPair::set( const XMLCh* const newKey , const XMLSize_t newKeyLength , const XMLCh* const newValue , const XMLSize_t newValueLength) { setKey(newKey, newKeyLength); setValue(newValue, newValueLength); } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/XMLIBM1140Transcoder.hpp0000644000175000017500000000516411360344373021511 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLIBM1140Transcoder.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_XMLIBM1140TRANSCODER_HPP) #define XERCESC_INCLUDE_GUARD_XMLIBM1140TRANSCODER_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN // // This class provides an implementation of the XMLTranscoder interface // for a simple IBM-1140 transcoder. The parser does some encodings // intrinsically without depending upon external transcoding services. // To make everything more orthogonal, we implement these internal // transcoders using the same transcoder abstraction as the pluggable // transcoding services do. // class XMLUTIL_EXPORT XMLIBM1140Transcoder : public XML256TableTranscoder { public : // ----------------------------------------------------------------------- // Public, static methods // ----------------------------------------------------------------------- static XMLCh xlatThisOne(const XMLByte toXlat); // ----------------------------------------------------------------------- // Public constructors and destructor // ----------------------------------------------------------------------- XMLIBM1140Transcoder ( const XMLCh* const encodingName , const XMLSize_t blockSize , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual ~XMLIBM1140Transcoder(); private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XMLIBM1140Transcoder(); XMLIBM1140Transcoder(const XMLIBM1140Transcoder&); XMLIBM1140Transcoder& operator=(const XMLIBM1140Transcoder&); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/XMLUTF16Transcoder.cpp0000644000175000017500000001555710765240501021377 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // XMLUTF16Transcoder: Constructors and Destructor // --------------------------------------------------------------------------- XMLUTF16Transcoder::XMLUTF16Transcoder( const XMLCh* const encodingName , const XMLSize_t blockSize , const bool swapped , MemoryManager* const manager) : XMLTranscoder(encodingName, blockSize, manager) , fSwapped(swapped) { } XMLUTF16Transcoder::~XMLUTF16Transcoder() { } // --------------------------------------------------------------------------- // XMLUTF16Transcoder: Implementation of the transcoder API // --------------------------------------------------------------------------- XMLSize_t XMLUTF16Transcoder::transcodeFrom( const XMLByte* const srcData , const XMLSize_t srcCount , XMLCh* const toFill , const XMLSize_t maxChars , XMLSize_t& bytesEaten , unsigned char* const charSizes) { // // Calculate the max chars we can do here. Its the lesser of the // max output chars and the number of chars in the source. // const XMLSize_t srcChars = srcCount / sizeof(UTF16Ch); const XMLSize_t countToDo = srcChars < maxChars ? srcChars : maxChars; // Look at the source data as UTF16 chars const UTF16Ch* asUTF16 = (const UTF16Ch*)srcData; // And get a mutable pointer to the output XMLCh* outPtr = toFill; // // If its swapped, we have to do a char by char swap and cast. Else // we have to check whether our XMLCh and UTF16Ch types are the same // size or not. If so, we can optimize by just doing a buffer copy. // if (fSwapped) { // // And then do the swapping loop for the count we precalculated. Note // that this also handles size conversion as well if XMLCh is not the // same size as UTF16Ch. // for (XMLSize_t index = 0; index < countToDo; index++) *outPtr++ = BitOps::swapBytes(*asUTF16++); } else { // // If the XMLCh type is the same size as a UTF16 value on this // platform, then we can do just a buffer copy straight to the target // buffer since our source chars are UTF-16 chars. If its not, then // we still have to do a loop and assign each one, in order to // implicitly convert. // if (sizeof(XMLCh) == sizeof(UTF16Ch)) { // Notice we convert char count to byte count here!!! memcpy(toFill, srcData, countToDo * sizeof(UTF16Ch)); } else { for (XMLSize_t index = 0; index < countToDo; index++) *outPtr++ = XMLCh(*asUTF16++); } } // Set the bytes eaten bytesEaten = countToDo * sizeof(UTF16Ch); // Set the character sizes to the fixed size memset(charSizes, sizeof(UTF16Ch), countToDo); // Return the chars we transcoded return countToDo; } XMLSize_t XMLUTF16Transcoder::transcodeTo(const XMLCh* const srcData , const XMLSize_t srcCount , XMLByte* const toFill , const XMLSize_t maxBytes , XMLSize_t& charsEaten , const UnRepOpts) { // // Calculate the max chars we can do here. Its the lesser of the // chars that we can fit into the output buffer, and the source // chars available. // const XMLSize_t maxOutChars = maxBytes / sizeof(UTF16Ch); const XMLSize_t countToDo = srcCount < maxOutChars ? srcCount : maxOutChars; // // Get a pointer tot he output buffer in the UTF-16 character format // that we need to work with. And get a mutable pointer to the source // character buffer. // UTF16Ch* outPtr = (UTF16Ch*)toFill; const XMLCh* srcPtr = srcData; // // If the target format is swapped from our native format, then handle // it one way, else handle it another. // if (fSwapped) { // // And then do the swapping loop for the count we precalculated. Note // that this also handles size conversion as well if XMLCh is not the // same size as UTF16Ch. // for (XMLSize_t index = 0; index < countToDo; index++) { // To avoid flakey compilers, use a temp const UTF16Ch tmpCh = UTF16Ch(*srcPtr++); *outPtr++ = BitOps::swapBytes(tmpCh); } } else { // // If XMLCh and UTF16Ch are the same size, we can just do a fast // memory copy. Otherwise, we have to do a loop and downcast each // character into its new 16 bit storage. // if (sizeof(XMLCh) == sizeof(UTF16Ch)) { // Notice we convert char count to byte count here!!! memcpy(toFill, srcData, countToDo * sizeof(UTF16Ch)); } else { for (XMLSize_t index = 0; index < countToDo; index++) *outPtr++ = UTF16Ch(*srcPtr++); } } // Set the chars eaten to the calculated number we ate charsEaten = countToDo; //Return the bytes we ate. Note we convert to a byte count here! return countToDo * sizeof(UTF16Ch); } bool XMLUTF16Transcoder::canTranscodeTo(const unsigned int) { // We can handle anything return true; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/XMLException.hpp0000644000175000017500000002334211033362104020470 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLException.hpp 673960 2008-07-04 08:50:12Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_XMLEXCEPTION_HPP) #define XERCESC_INCLUDE_GUARD_XMLEXCEPTION_HPP #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // This is the base class from which all the XML parser exceptions are // derived. The virtual interface is very simple and most of the functionality // is in this class. // // Because all derivatives are EXACTLY the same except for the static // string that is used to hold the name of the class, a macro is provided // below via which they are all created. // --------------------------------------------------------------------------- class XMLUTIL_EXPORT XMLException : public XMemory { public: // ----------------------------------------------------------------------- // Virtual Destructor // ----------------------------------------------------------------------- virtual ~XMLException(); // ----------------------------------------------------------------------- // The XML exception virtual interface // ----------------------------------------------------------------------- virtual const XMLCh* getType() const = 0; // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- XMLExcepts::Codes getCode() const; const XMLCh* getMessage() const; const char* getSrcFile() const; XMLFileLoc getSrcLine() const; XMLErrorReporter::ErrTypes getErrorType() const; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- void setPosition(const char* const file, const XMLFileLoc line); // ----------------------------------------------------------------------- // Hidden constructors and operators // // NOTE: Technically, these should be protected, since this is a // base class that is never used directly. However, VC++ 6.0 will // fail to catch via a reference to base class if the ctors are // not public!! This seems to have been caused by the install // of IE 5.0. // ----------------------------------------------------------------------- XMLException(); XMLException(const char* const srcFile, const XMLFileLoc srcLine, MemoryManager* const memoryManager = 0); XMLException(const XMLException& toCopy); XMLException& operator=(const XMLException& toAssign); protected : // ----------------------------------------------------------------------- // Protected methods // ----------------------------------------------------------------------- void loadExceptText ( const XMLExcepts::Codes toLoad ); void loadExceptText ( const XMLExcepts::Codes toLoad , const XMLCh* const text1 , const XMLCh* const text2 = 0 , const XMLCh* const text3 = 0 , const XMLCh* const text4 = 0 ); void loadExceptText ( const XMLExcepts::Codes toLoad , const char* const text1 , const char* const text2 = 0 , const char* const text3 = 0 , const char* const text4 = 0 ); private : // ----------------------------------------------------------------------- // Data members // // fCode // The error code that this exception represents. // // fSrcFile // fSrcLine // These are the file and line information from the source where the // exception was thrown from. // // fMsg // The loaded message text for this exception. // ----------------------------------------------------------------------- XMLExcepts::Codes fCode; char* fSrcFile; XMLFileLoc fSrcLine; XMLCh* fMsg; protected: MemoryManager* fMemoryManager; }; // --------------------------------------------------------------------------- // XMLException: Getter methods // --------------------------------------------------------------------------- inline XMLExcepts::Codes XMLException::getCode() const { return fCode; } inline const XMLCh* XMLException::getMessage() const { return fMsg; } inline const char* XMLException::getSrcFile() const { if (!fSrcFile) return ""; return fSrcFile; } inline XMLFileLoc XMLException::getSrcLine() const { return fSrcLine; } inline XMLErrorReporter::ErrTypes XMLException::getErrorType() const { if ((fCode >= XMLExcepts::W_LowBounds) && (fCode <= XMLExcepts::W_HighBounds)) return XMLErrorReporter::ErrType_Warning; else if ((fCode >= XMLExcepts::F_LowBounds) && (fCode <= XMLExcepts::F_HighBounds)) return XMLErrorReporter::ErrType_Fatal; else if ((fCode >= XMLExcepts::E_LowBounds) && (fCode <= XMLExcepts::E_HighBounds)) return XMLErrorReporter::ErrType_Error; return XMLErrorReporter::ErrTypes_Unknown; } // --------------------------------------------------------------------------- // This macro is used to create derived classes. They are all identical // except the name of the exception, so it crazy to type them in over and // over. // --------------------------------------------------------------------------- #define MakeXMLException(theType, expKeyword) \ class expKeyword theType : public XMLException \ { \ public: \ \ theType(const char* const srcFile \ , const XMLFileLoc srcLine \ , const XMLExcepts::Codes toThrow \ , MemoryManager* memoryManager = 0) : \ XMLException(srcFile, srcLine, memoryManager) \ { \ loadExceptText(toThrow); \ } \ \ theType(const theType& toCopy) : \ \ XMLException(toCopy) \ { \ } \ \ theType(const char* const srcFile \ , const XMLFileLoc srcLine \ , const XMLExcepts::Codes toThrow \ , const XMLCh* const text1 \ , const XMLCh* const text2 = 0 \ , const XMLCh* const text3 = 0 \ , const XMLCh* const text4 = 0 \ , MemoryManager* memoryManager = 0) : \ XMLException(srcFile, srcLine, memoryManager) \ { \ loadExceptText(toThrow, text1, text2, text3, text4); \ } \ \ theType(const char* const srcFile \ , const XMLFileLoc srcLine \ , const XMLExcepts::Codes toThrow \ , const char* const text1 \ , const char* const text2 = 0 \ , const char* const text3 = 0 \ , const char* const text4 = 0 \ , MemoryManager* memoryManager = 0) : \ XMLException(srcFile, srcLine, memoryManager) \ { \ loadExceptText(toThrow, text1, text2, text3, text4); \ } \ \ virtual ~theType() {} \ \ theType& operator=(const theType& toAssign) \ { \ XMLException::operator=(toAssign); \ return *this; \ } \ \ virtual XMLException* duplicate() const \ { \ return new (fMemoryManager) theType(*this); \ } \ \ virtual const XMLCh* getType() const \ { \ return XMLUni::fg##theType##_Name; \ } \ \ private : \ theType(); \ }; // --------------------------------------------------------------------------- // This macros is used to actually throw an exception. It is used in order // to make sure that source code line/col info is stored correctly, and to // give flexibility for other stuff in the future. // --------------------------------------------------------------------------- #define ThrowXML(type,code) throw type(__FILE__, __LINE__, code) #define ThrowXML1(type,code,p1) throw type(__FILE__, __LINE__, code, p1) #define ThrowXML2(type,code,p1,p2) throw type(__FILE__, __LINE__, code, p1, p2) #define ThrowXML3(type,code,p1,p2,p3) throw type(__FILE__, __LINE__, code, p1, p2, p3) #define ThrowXML4(type,code,p1,p2,p3,p4) throw type(__FILE__, __LINE__, code, p1, p2, p3, p4) #define ThrowXMLwithMemMgr(type,code,memMgr) throw type(__FILE__, __LINE__, code, memMgr) #define ThrowXMLwithMemMgr1(type,code,p1,memMgr) throw type(__FILE__, __LINE__, code, p1, 0, 0, 0, memMgr) #define ThrowXMLwithMemMgr2(type,code,p1,p2,memMgr) throw type(__FILE__, __LINE__, code, p1, p2, 0, 0, memMgr) #define ThrowXMLwithMemMgr3(type,code,p1,p2,p3,memMgr) throw type(__FILE__, __LINE__, code, p1, p2, p3, 0, memMgr) #define ThrowXMLwithMemMgr4(type,code,p1,p2,p3,p4,memMgr) throw type(__FILE__, __LINE__, code, p1, p2, p3, p4, memMgr) XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/XMLBigDecimal.hpp0000644000175000017500000001351711360344373020530 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLBigDecimal.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_XML_BIGDECIMAL_HPP) #define XERCESC_INCLUDE_GUARD_XML_BIGDECIMAL_HPP #include #include #include XERCES_CPP_NAMESPACE_BEGIN class XMLUTIL_EXPORT XMLBigDecimal : public XMLNumber { public: /** * Constructs a newly allocated XMLBigDecimal object that * represents the value represented by the string. * * @param strValue the String to be converted to an * XMLBigDecimal. * @param manager Pointer to the memory manager to be used to * allocate objects. * @exception NumberFormatException if the String does not * contain a parsable XMLBigDecimal. */ XMLBigDecimal ( const XMLCh* const strValue , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); ~XMLBigDecimal(); static int compareValues(const XMLBigDecimal* const lValue , const XMLBigDecimal* const rValue , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); static XMLCh* getCanonicalRepresentation ( const XMLCh* const rawData , MemoryManager* const memMgr = XMLPlatformUtils::fgMemoryManager ); static void parseDecimal ( const XMLCh* const toParse , XMLCh* const retBuffer , int& sign , int& totalDigits , int& fractDigits , MemoryManager* const manager ); static void parseDecimal ( const XMLCh* const toParse , MemoryManager* const manager ); virtual XMLCh* getRawData() const; virtual const XMLCh* getFormattedString() const; virtual int getSign() const; const XMLCh* getValue() const; unsigned int getScale() const; unsigned int getTotalDigit() const; inline XMLCh* getIntVal() const; /** * Compares this object to the specified object. * * @param other the object to compare with. * @return -1 value is less than other's * 0 value equals to other's * +1 value is greater than other's */ int toCompare(const XMLBigDecimal& other) const; /* * Sets the value to be converted * * @param strValue the value to convert */ void setDecimalValue(const XMLCh* const strValue); MemoryManager* getMemoryManager() const; /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(XMLBigDecimal) XMLBigDecimal(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); private: void cleanUp(); // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XMLBigDecimal(const XMLBigDecimal& other); XMLBigDecimal& operator=(const XMLBigDecimal& other); // ----------------------------------------------------------------------- // Private data members // // fSign // sign // // fTotalDigits // the total number of digits // // fScale // the number of digits to the right of the decimal point // // fIntVal // The value of this BigDecimal, w/o // leading whitespace, leading zero // decimal point // trailing zero, trailing whitespace // // fRawData // to preserve the original string used to construct this object, // needed for pattern matching. // // ----------------------------------------------------------------------- int fSign; unsigned int fTotalDigits; unsigned int fScale; XMLSize_t fRawDataLen; XMLCh* fRawData; XMLCh* fIntVal; MemoryManager* fMemoryManager; }; inline int XMLBigDecimal::getSign() const { return fSign; } inline const XMLCh* XMLBigDecimal::getValue() const { return fIntVal; } inline unsigned int XMLBigDecimal::getScale() const { return fScale; } inline unsigned int XMLBigDecimal::getTotalDigit() const { return fTotalDigits; } inline XMLCh* XMLBigDecimal::getRawData() const { return fRawData; } inline const XMLCh* XMLBigDecimal::getFormattedString() const { return fRawData; } inline MemoryManager* XMLBigDecimal::getMemoryManager() const { return fMemoryManager; } inline XMLCh* XMLBigDecimal::getIntVal() const { return fIntVal; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/BinMemInputStream.cpp0000644000175000017500000000655011027453421021517 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: BinMemInputStream.cpp 670359 2008-06-22 13:43:45Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // BinMemInputStream: Constructors and Destructor // --------------------------------------------------------------------------- BinMemInputStream::BinMemInputStream( const XMLByte* const initData , const XMLSize_t capacity , const BufOpts bufOpt , MemoryManager* const manager) : fBuffer(0) , fBufOpt(bufOpt) , fCapacity(capacity) , fCurIndex(0) , fMemoryManager(manager) { // According to the buffer option, do the right thing if (fBufOpt == BufOpt_Copy) { XMLByte* tmpBuf = (XMLByte*) fMemoryManager->allocate ( fCapacity * sizeof(XMLByte) );//new XMLByte[fCapacity]; memcpy(tmpBuf, initData, capacity); fBuffer = tmpBuf; } else { fBuffer = initData; } } BinMemInputStream::~BinMemInputStream() { // // If we adopted or copied the buffer, then clean it up. We have to // cast off the const'ness in that case in order to delete it. // if ((fBufOpt == BufOpt_Adopt) || (fBufOpt == BufOpt_Copy)) fMemoryManager->deallocate((XMLByte*)fBuffer);//delete [] (XMLByte*)fBuffer; } // --------------------------------------------------------------------------- // MemBinInputStream: Implementation of the input stream interface // --------------------------------------------------------------------------- XMLSize_t BinMemInputStream::readBytes( XMLByte* const toFill , const XMLSize_t maxToRead) { // // Figure out how much we can really read. Its the smaller of the // amount available and the amount asked for. // const XMLSize_t available = (fCapacity - fCurIndex); if (!available) return 0; const XMLSize_t actualToRead = available < maxToRead ? available : maxToRead; memcpy(toFill, &fBuffer[fCurIndex], actualToRead); fCurIndex += actualToRead; return actualToRead; } const XMLCh* BinMemInputStream::getContentType() const { return 0; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/XMLASCIITranscoder.cpp0000644000175000017500000001320510765240501021406 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // XMLASCIITranscoder: Constructors and Destructor // --------------------------------------------------------------------------- XMLASCIITranscoder::XMLASCIITranscoder( const XMLCh* const encodingName , const XMLSize_t blockSize , MemoryManager* const manager) : XMLTranscoder(encodingName, blockSize, manager) { } XMLASCIITranscoder::~XMLASCIITranscoder() { } // --------------------------------------------------------------------------- // XMLASCIITranscoder: Implementation of the transcoder API // --------------------------------------------------------------------------- XMLSize_t XMLASCIITranscoder::transcodeFrom( const XMLByte* const srcData , const XMLSize_t srcCount , XMLCh* const toFill , const XMLSize_t maxChars , XMLSize_t& bytesEaten , unsigned char* const charSizes) { // // Calculate the max chars we can do here. Its the lesser of the // max output chars and the source byte count. // const XMLSize_t countToDo = srcCount < maxChars ? srcCount : maxChars; // // Now loop through that many source chars and just cast each one // over to the XMLCh format. Check each source that its really a // valid ASCI char. // const XMLByte* srcPtr = srcData; XMLCh* outPtr = toFill; XMLSize_t countDone = 0; for (; countDone < countToDo; countDone++) { // Do the optimistic work up front if (*srcPtr < 0x80) { *outPtr++ = XMLCh(*srcPtr++); continue; } // // We got non source encoding char. If we got more than 32 chars, // the just break out. We'll come back here later to hit this again // and give an error much closer to the real source position. // if (countDone > 32) break; XMLCh tmpBuf[17]; XMLString::binToText((unsigned int)*srcPtr, tmpBuf, 16, 16, getMemoryManager()); ThrowXMLwithMemMgr2 ( TranscodingException , XMLExcepts::Trans_Unrepresentable , tmpBuf , getEncodingName() , getMemoryManager() ); } // Set the bytes we ate bytesEaten = countDone; // Set the char sizes to the fixed size memset(charSizes, 1, countDone); // Return the chars we transcoded return countDone; } XMLSize_t XMLASCIITranscoder::transcodeTo(const XMLCh* const srcData , const XMLSize_t srcCount , XMLByte* const toFill , const XMLSize_t maxBytes , XMLSize_t& charsEaten , const UnRepOpts options) { // // Calculate the max chars we can do here. Its the lesser of the // max output chars and the source byte count. // const XMLSize_t countToDo = srcCount < maxBytes ? srcCount : maxBytes; const XMLCh* srcPtr = srcData; XMLByte* outPtr = toFill; for (XMLSize_t index = 0; index < countToDo; index++) { // If its legal, do it and jump back to the top if (*srcPtr < 0x80) { *outPtr++ = XMLByte(*srcPtr++); continue; } // // Its not representable so use a replacement char. According to // the options, either throw or use the replacement. // if (options == UnRep_Throw) { XMLCh tmpBuf[17]; XMLString::binToText((unsigned int)*srcPtr, tmpBuf, 16, 16, getMemoryManager()); ThrowXMLwithMemMgr2 ( TranscodingException , XMLExcepts::Trans_Unrepresentable , tmpBuf , getEncodingName() , getMemoryManager() ); } // Use the replacement char *outPtr++ = 0x1A; srcPtr++; } // Set the chars we ate charsEaten = countToDo; // Return the byte we transcoded return countToDo; } bool XMLASCIITranscoder::canTranscodeTo(const unsigned int toCheck) { return (toCheck < 0x80); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/RefStackOf.c0000644000175000017500000001162411037122704017577 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: RefStackOf.c 676911 2008-07-15 13:27:32Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #if defined(XERCES_TMPLSINC) #include #endif XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // RefStackOf: Constructors and Destructor // --------------------------------------------------------------------------- template RefStackOf::RefStackOf(const XMLSize_t initElems, const bool adoptElems, MemoryManager* const manager) : fVector(initElems, adoptElems, manager) { } template RefStackOf::~RefStackOf() { } // --------------------------------------------------------------------------- // RefStackOf: Element management methods // --------------------------------------------------------------------------- template const TElem* RefStackOf:: elementAt(const XMLSize_t index) const { if (index >= fVector.size()) ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Stack_BadIndex, fVector.getMemoryManager()); return fVector.elementAt(index); } template TElem* RefStackOf::popAt(const XMLSize_t index) { if (index >= fVector.size()) ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Stack_BadIndex, fVector.getMemoryManager()); // Orphan off the element from the slot in the vector return fVector.orphanElementAt(index); } template void RefStackOf::push(TElem* const toPush) { fVector.addElement(toPush); } template const TElem* RefStackOf::peek() const { const XMLSize_t curSize = fVector.size(); if (curSize == 0) ThrowXMLwithMemMgr(EmptyStackException, XMLExcepts::Stack_EmptyStack, fVector.getMemoryManager()); return fVector.elementAt(curSize-1); } template TElem* RefStackOf::pop() { const XMLSize_t curSize = fVector.size(); if (curSize == 0) ThrowXMLwithMemMgr(EmptyStackException, XMLExcepts::Stack_EmptyStack, fVector.getMemoryManager()); // Orphan off the element from the last slot in the vector return fVector.orphanElementAt(curSize-1); } template void RefStackOf::removeAllElements() { fVector.removeAllElements(); } // --------------------------------------------------------------------------- // RefStackOf: Getter methods // --------------------------------------------------------------------------- template bool RefStackOf::empty() { return (fVector.size() == 0); } template XMLSize_t RefStackOf::curCapacity() { return fVector.curCapacity(); } template XMLSize_t RefStackOf::size() { return fVector.size(); } // --------------------------------------------------------------------------- // RefStackEnumerator: Constructors and Destructor // --------------------------------------------------------------------------- template RefStackEnumerator:: RefStackEnumerator( RefStackOf* const toEnum , const bool adopt) : fAdopted(adopt) , fCurIndex(0) , fToEnum(toEnum) , fVector(&toEnum->fVector) { } template RefStackEnumerator::~RefStackEnumerator() { if (fAdopted) delete fToEnum; } // --------------------------------------------------------------------------- // RefStackEnumerator: Enum interface // --------------------------------------------------------------------------- template bool RefStackEnumerator::hasMoreElements() const { if (fCurIndex >= fVector->size()) return false; return true; } template TElem& RefStackEnumerator::nextElement() { return *fVector->elementAt(fCurIndex++); } template void RefStackEnumerator::Reset() { fCurIndex = 0; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/Xerces_autoconf_config.msvc.hpp0000644000175000017500000001241211302462516023577 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: Xerces_autoconf_config.msvc.hpp 883299 2009-11-23 10:34:54Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_XERCES_AUTOCONFIG_CONFIG_HPP) #define XERCESC_INCLUDE_GUARD_XERCES_AUTOCONFIG_CONFIG_HPP // // There are two primary xerces configuration header files: // // Xerces_autoconf_config.hpp // // For configuration of items that must be accessable // through public headers. This file has limited information // and carefully works to avoid collision of macro names, etc. // // This file is included by XercesDefs.h. // This version of the file is specific for Microsoft Visual C++ // family of compilers // // config.h // // This file is not used with Microsoft Visual C++; the macros // it would specify are instead hardcoded in the makefiles // #include // silence the warning "while compiling class-template member function xxxx : identifier was truncated to '255' // characters in the browser information" #pragma warning( disable: 4786 ) // --------------------------------------------------------------------------- // These defines have been hardcoded for the Microsoft Visual C++ compilers // --------------------------------------------------------------------------- #undef XERCES_AUTOCONF #undef XERCES_HAVE_SYS_TYPES_H #undef XERCES_HAVE_INTTYPES_H #define XERCES_S16BIT_INT signed short #define XERCES_U16BIT_INT unsigned short #define XERCES_S32BIT_INT INT32 #define XERCES_U32BIT_INT UINT32 // While VC6 has 64-bit int, there is no support in the libraries // (e.g., iostream). So we are going to stick to 32-bit ints. // #if (_MSC_VER >= 1300) # define XERCES_S64BIT_INT INT64 # define XERCES_U64BIT_INT UINT64 #else # define XERCES_S64BIT_INT INT32 # define XERCES_U64BIT_INT UINT32 #endif #ifdef _NATIVE_WCHAR_T_DEFINED # define XERCES_XMLCH_T wchar_t #else # define XERCES_XMLCH_T unsigned short #endif #define XERCES_SIZE_T SIZE_T #define XERCES_SSIZE_T SSIZE_T #define XERCES_HAS_CPP_NAMESPACE 1 #define XERCES_STD_NAMESPACE 1 #define XERCES_NEW_IOSTREAMS 1 #undef XERCES_NO_NATIVE_BOOL #define XERCES_LSTRSUPPORT 1 #ifdef XERCES_STATIC_LIBRARY # define XERCES_PLATFORM_EXPORT # define XERCES_PLATFORM_IMPORT #else # define XERCES_PLATFORM_EXPORT __declspec(dllexport) # define XERCES_PLATFORM_IMPORT __declspec(dllimport) # define DLL_EXPORT #endif #define XERCES_MFC_SUPPORT #if (_MSC_VER >= 1400) # define XERCES_HAVE_INTRIN_H 1 # define XERCES_HAVE_EMMINTRIN_H 1 # define XERCES_HAVE_CPUID_INTRINSIC # define XERCES_HAVE_SSE2_INTRINSIC #endif // --------------------------------------------------------------------------- // XMLSize_t is the unsigned integral type. // --------------------------------------------------------------------------- typedef XERCES_SIZE_T XMLSize_t; typedef XERCES_SSIZE_T XMLSSize_t; // --------------------------------------------------------------------------- // Define our version of the XML character // --------------------------------------------------------------------------- typedef XERCES_XMLCH_T XMLCh; // --------------------------------------------------------------------------- // Define unsigned 16, 32, and 64 bit integers // --------------------------------------------------------------------------- typedef XERCES_U16BIT_INT XMLUInt16; typedef XERCES_U32BIT_INT XMLUInt32; typedef XERCES_U64BIT_INT XMLUInt64; // --------------------------------------------------------------------------- // Define signed 16, 32, and 64 bit integers // --------------------------------------------------------------------------- typedef XERCES_S16BIT_INT XMLInt16; typedef XERCES_S32BIT_INT XMLInt32; typedef XERCES_S64BIT_INT XMLInt64; // --------------------------------------------------------------------------- // XMLFilePos is the type used to represent a file position. // --------------------------------------------------------------------------- typedef XMLUInt64 XMLFilePos; // --------------------------------------------------------------------------- // XMLFileLoc is the type used to represent a file location (line/column). // --------------------------------------------------------------------------- typedef XMLUInt64 XMLFileLoc; // --------------------------------------------------------------------------- // Force on the Xerces debug token if it is on in the build environment // --------------------------------------------------------------------------- #if defined(_DEBUG) # define XERCES_DEBUG #endif #endif xerces-c-3.1.1/src/xercesc/util/PanicHandler.cpp0000644000175000017500000000422710523643534020511 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: PanicHandler.cpp 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include XERCES_CPP_NAMESPACE_BEGIN const char* PanicHandler::getPanicReasonString(const PanicReasons reason) { const char* reasonStr; switch (reason) { case Panic_NoTransService: reasonStr = "Could not load a transcoding service"; break; case Panic_NoDefTranscoder: reasonStr = "Could not load a local code page transcoder"; break; case Panic_CantFindLib: reasonStr = "Could not find the xerces-c DLL"; break; case Panic_UnknownMsgDomain: reasonStr = "Unknown message domain"; break; case Panic_CantLoadMsgDomain: reasonStr = "Cannot load message domain"; break; case Panic_SynchronizationErr: reasonStr = "Cannot synchronize system or mutex"; break; case Panic_SystemInit: reasonStr = "Cannot initialize the system or mutex"; break; case Panic_MutexErr: reasonStr = "Cannot create, lock or unlock a mutex"; break; default: reasonStr = "Unknown reason"; break; } return reasonStr; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/XMLUni.hpp0000644000175000017500000003411311274550527017302 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLUni.hpp 833045 2009-11-05 13:21:27Z borisk $ */ // --------------------------------------------------------------------------- // This file contains the grunt work constants for Unicode characters and // common Unicode constant strings. These cannot be created normally because // we have to compile on systems that cannot do the L"" style prefix. So // they must be created as constant values for Unicode code points and the // strings built up as arrays of those constants. // --------------------------------------------------------------------------- #if !defined(XERCESC_INCLUDE_GUARD_XMLUNI_HPP) #define XERCESC_INCLUDE_GUARD_XMLUNI_HPP #include XERCES_CPP_NAMESPACE_BEGIN class XMLUTIL_EXPORT XMLUni { public : // ----------------------------------------------------------------------- // These are constant strings that are common in XML data. Because // of the limitation of the compilers we have to work with, these are // done as arrays of XMLCh characters, not as constant strings. // ----------------------------------------------------------------------- static const XMLCh fgAnyString[]; static const XMLCh fgAttListString[]; static const XMLCh fgCommentString[]; static const XMLCh fgCDATAString[]; static const XMLCh fgDefaultString[]; static const XMLCh fgDocTypeString[]; static const XMLCh fgEBCDICEncodingString[]; static const XMLCh fgElemString[]; static const XMLCh fgEmptyString[]; static const XMLCh fgEncodingString[]; static const XMLCh fgEntitString[]; static const XMLCh fgEntityString[]; static const XMLCh fgEntitiesString[]; static const XMLCh fgEnumerationString[]; static const XMLCh fgExceptDomain[]; static const XMLCh fgFixedString[]; static const XMLCh fgIBM037EncodingString[]; static const XMLCh fgIBM037EncodingString2[]; static const XMLCh fgIBM1047EncodingString[]; static const XMLCh fgIBM1047EncodingString2[]; static const XMLCh fgIBM1140EncodingString[]; static const XMLCh fgIBM1140EncodingString2[]; static const XMLCh fgIBM1140EncodingString3[]; static const XMLCh fgIBM1140EncodingString4[]; static const XMLCh fgIESString[]; static const XMLCh fgIDString[]; static const XMLCh fgIDRefString[]; static const XMLCh fgIDRefsString[]; static const XMLCh fgImpliedString[]; static const XMLCh fgIgnoreString[]; static const XMLCh fgIncludeString[]; static const XMLCh fgISO88591EncodingString[]; static const XMLCh fgISO88591EncodingString2[]; static const XMLCh fgISO88591EncodingString3[]; static const XMLCh fgISO88591EncodingString4[]; static const XMLCh fgISO88591EncodingString5[]; static const XMLCh fgISO88591EncodingString6[]; static const XMLCh fgISO88591EncodingString7[]; static const XMLCh fgISO88591EncodingString8[]; static const XMLCh fgISO88591EncodingString9[]; static const XMLCh fgISO88591EncodingString10[]; static const XMLCh fgISO88591EncodingString11[]; static const XMLCh fgISO88591EncodingString12[]; static const XMLCh fgLocalHostString[]; static const XMLCh fgNoString[]; static const XMLCh fgNotationString[]; static const XMLCh fgNDATAString[]; static const XMLCh fgNmTokenString[]; static const XMLCh fgNmTokensString[]; static const XMLCh fgPCDATAString[]; static const XMLCh fgPIString[]; static const XMLCh fgPubIDString[]; static const XMLCh fgRefString[]; static const XMLCh fgRequiredString[]; static const XMLCh fgStandaloneString[]; static const XMLCh fgVersion1_0[]; static const XMLCh fgVersion1_1[]; static const XMLCh fgSysIDString[]; static const XMLCh fgUnknownURIName[]; static const XMLCh fgUCS4EncodingString[]; static const XMLCh fgUCS4EncodingString2[]; static const XMLCh fgUCS4EncodingString3[]; static const XMLCh fgUCS4EncodingString4[]; static const XMLCh fgUCS4EncodingString5[]; static const XMLCh fgUCS4BEncodingString[]; static const XMLCh fgUCS4BEncodingString2[]; static const XMLCh fgUCS4LEncodingString[]; static const XMLCh fgUCS4LEncodingString2[]; static const XMLCh fgUSASCIIEncodingString[]; static const XMLCh fgUSASCIIEncodingString2[]; static const XMLCh fgUSASCIIEncodingString3[]; static const XMLCh fgUSASCIIEncodingString4[]; static const XMLCh fgUTF8EncodingString[]; static const XMLCh fgUTF8EncodingString2[]; static const XMLCh fgUTF16EncodingString[]; static const XMLCh fgUTF16EncodingString2[]; static const XMLCh fgUTF16EncodingString3[]; static const XMLCh fgUTF16EncodingString4[]; static const XMLCh fgUTF16EncodingString5[]; static const XMLCh fgUTF16EncodingString6[]; static const XMLCh fgUTF16EncodingString7[]; static const XMLCh fgUTF16BEncodingString[]; static const XMLCh fgUTF16BEncodingString2[]; static const XMLCh fgUTF16LEncodingString[]; static const XMLCh fgUTF16LEncodingString2[]; static const XMLCh fgVersionString[]; static const XMLCh fgValidityDomain[]; static const XMLCh fgWin1252EncodingString[]; static const XMLCh fgXMLChEncodingString[]; static const XMLCh fgXMLDOMMsgDomain[]; static const XMLCh fgXMLString[]; static const XMLCh fgXMLStringSpace[]; static const XMLCh fgXMLStringHTab[]; static const XMLCh fgXMLStringCR[]; static const XMLCh fgXMLStringLF[]; static const XMLCh fgXMLStringSpaceU[]; static const XMLCh fgXMLStringHTabU[]; static const XMLCh fgXMLStringCRU[]; static const XMLCh fgXMLStringLFU[]; static const XMLCh fgXMLDeclString[]; static const XMLCh fgXMLDeclStringSpace[]; static const XMLCh fgXMLDeclStringHTab[]; static const XMLCh fgXMLDeclStringLF[]; static const XMLCh fgXMLDeclStringCR[]; static const XMLCh fgXMLDeclStringSpaceU[]; static const XMLCh fgXMLDeclStringHTabU[]; static const XMLCh fgXMLDeclStringLFU[]; static const XMLCh fgXMLDeclStringCRU[]; static const XMLCh fgXMLNSString[]; static const XMLCh fgXMLNSColonString[]; static const XMLCh fgXMLNSURIName[]; static const XMLCh fgXMLErrDomain[]; static const XMLCh fgXMLURIName[]; static const XMLCh fgInfosetURIName[]; static const XMLCh fgYesString[]; static const XMLCh fgZeroLenString[]; static const XMLCh fgDTDEntityString[]; static const XMLCh fgAmp[]; static const XMLCh fgLT[]; static const XMLCh fgGT[]; static const XMLCh fgQuot[]; static const XMLCh fgApos[]; static const XMLCh fgWFXMLScanner[]; static const XMLCh fgIGXMLScanner[]; static const XMLCh fgSGXMLScanner[]; static const XMLCh fgDGXMLScanner[]; static const XMLCh fgXSAXMLScanner[]; static const XMLCh fgCDataStart[]; static const XMLCh fgCDataEnd[]; // Exception Name static const XMLCh fgArrayIndexOutOfBoundsException_Name[]; static const XMLCh fgEmptyStackException_Name[]; static const XMLCh fgIllegalArgumentException_Name[]; static const XMLCh fgInvalidCastException_Name[]; static const XMLCh fgIOException_Name[]; static const XMLCh fgNoSuchElementException_Name[]; static const XMLCh fgNullPointerException_Name[]; static const XMLCh fgXMLPlatformUtilsException_Name[]; static const XMLCh fgRuntimeException_Name[]; static const XMLCh fgTranscodingException_Name[]; static const XMLCh fgUnexpectedEOFException_Name[]; static const XMLCh fgUnsupportedEncodingException_Name[]; static const XMLCh fgUTFDataFormatException_Name[]; static const XMLCh fgNetAccessorException_Name[]; static const XMLCh fgMalformedURLException_Name[]; static const XMLCh fgNumberFormatException_Name[]; static const XMLCh fgParseException_Name[]; static const XMLCh fgInvalidDatatypeFacetException_Name[]; static const XMLCh fgInvalidDatatypeValueException_Name[]; static const XMLCh fgSchemaDateTimeException_Name[]; static const XMLCh fgXPathException_Name[]; static const XMLCh fgXSerializationException_Name[]; static const XMLCh fgXMLXIncludeException_Name[]; // Numerical String static const XMLCh fgNegINFString[]; static const XMLCh fgNegZeroString[]; static const XMLCh fgPosZeroString[]; static const XMLCh fgPosINFString[]; static const XMLCh fgNaNString[]; static const XMLCh fgEString[]; static const XMLCh fgZeroString[]; static const XMLCh fgNullString[]; // Xerces features/properties names static const XMLCh fgXercesDynamic[]; static const XMLCh fgXercesSchema[]; static const XMLCh fgXercesSchemaFullChecking[]; static const XMLCh fgXercesLoadSchema[]; static const XMLCh fgXercesIdentityConstraintChecking[]; static const XMLCh fgXercesSchemaExternalSchemaLocation[]; static const XMLCh fgXercesSchemaExternalNoNameSpaceSchemaLocation[]; static const XMLCh fgXercesSecurityManager[]; static const XMLCh fgXercesLoadExternalDTD[]; static const XMLCh fgXercesContinueAfterFatalError[]; static const XMLCh fgXercesValidationErrorAsFatal[]; static const XMLCh fgXercesUserAdoptsDOMDocument[]; static const XMLCh fgXercesCacheGrammarFromParse[]; static const XMLCh fgXercesUseCachedGrammarInParse[]; static const XMLCh fgXercesScannerName[]; static const XMLCh fgXercesParserUseDocumentFromImplementation[]; static const XMLCh fgXercesCalculateSrcOfs[]; static const XMLCh fgXercesStandardUriConformant[]; static const XMLCh fgXercesDOMHasPSVIInfo[]; static const XMLCh fgXercesGenerateSyntheticAnnotations[]; static const XMLCh fgXercesValidateAnnotations[]; static const XMLCh fgXercesIgnoreCachedDTD[]; static const XMLCh fgXercesIgnoreAnnotations[]; static const XMLCh fgXercesDisableDefaultEntityResolution[]; static const XMLCh fgXercesSkipDTDValidation[]; static const XMLCh fgXercesEntityResolver[]; static const XMLCh fgXercesHandleMultipleImports[]; static const XMLCh fgXercesDoXInclude[]; static const XMLCh fgXercesLowWaterMark[]; // SAX2 features/properties names static const XMLCh fgSAX2CoreValidation[]; static const XMLCh fgSAX2CoreNameSpaces[]; static const XMLCh fgSAX2CoreNameSpacePrefixes[]; // Introduced in DOM Level 3 // DOMLSParser features static const XMLCh fgDOMCanonicalForm[]; static const XMLCh fgDOMCDATASections[]; static const XMLCh fgDOMComments[]; static const XMLCh fgDOMCharsetOverridesXMLEncoding[]; static const XMLCh fgDOMCheckCharacterNormalization[]; static const XMLCh fgDOMDatatypeNormalization[]; static const XMLCh fgDOMDisallowDoctype[]; static const XMLCh fgDOMElementContentWhitespace[]; static const XMLCh fgDOMErrorHandler[]; static const XMLCh fgDOMEntities[]; static const XMLCh fgDOMIgnoreUnknownCharacterDenormalization[]; static const XMLCh fgDOMInfoset[]; static const XMLCh fgDOMNamespaces[]; static const XMLCh fgDOMNamespaceDeclarations[]; static const XMLCh fgDOMNormalizeCharacters[]; static const XMLCh fgDOMResourceResolver[]; static const XMLCh fgDOMSchemaLocation[]; static const XMLCh fgDOMSchemaType[]; static const XMLCh fgDOMSplitCDATASections[]; static const XMLCh fgDOMSupportedMediatypesOnly[]; static const XMLCh fgDOMValidate[]; static const XMLCh fgDOMValidateIfSchema[]; static const XMLCh fgDOMWellFormed[]; static const XMLCh fgDOMXMLSchemaType[]; static const XMLCh fgDOMDTDType[]; // Introduced in DOM Level 3 // DOMLSSerializer feature static const XMLCh fgDOMWRTCanonicalForm[]; static const XMLCh fgDOMWRTDiscardDefaultContent[]; static const XMLCh fgDOMWRTEntities[]; static const XMLCh fgDOMWRTFormatPrettyPrint[]; static const XMLCh fgDOMWRTNormalizeCharacters[]; static const XMLCh fgDOMWRTSplitCdataSections[]; static const XMLCh fgDOMWRTValidation[]; static const XMLCh fgDOMWRTWhitespaceInElementContent[]; static const XMLCh fgDOMWRTBOM[]; static const XMLCh fgDOMXMLDeclaration[]; static const XMLCh fgDOMWRTXercesPrettyPrint[]; // Private interface names static const XMLCh fgXercescInterfacePSVITypeInfo[]; static const XMLCh fgXercescInterfaceDOMDocumentTypeImpl[]; static const XMLCh fgXercescInterfaceDOMDocumentImpl[]; static const XMLCh fgXercescInterfaceDOMMemoryManager[]; // Locale static const char fgXercescDefaultLocale[]; // Default Exception String static const XMLCh fgDefErrMsg[]; // Datatype static const XMLCh fgValueZero[]; static const XMLCh fgNegOne[]; static const XMLCh fgValueOne[]; static const XMLCh fgLongMaxInc[]; static const XMLCh fgLongMinInc[]; static const XMLCh fgIntMaxInc[]; static const XMLCh fgIntMinInc[]; static const XMLCh fgShortMaxInc[]; static const XMLCh fgShortMinInc[]; static const XMLCh fgByteMaxInc[]; static const XMLCh fgByteMinInc[]; static const XMLCh fgULongMaxInc[]; static const XMLCh fgUIntMaxInc[]; static const XMLCh fgUShortMaxInc[]; static const XMLCh fgUByteMaxInc[]; static const XMLCh fgLangPattern[]; static const XMLCh fgBooleanValueSpace[][8]; static const XMLSize_t fgBooleanValueSpaceArraySize; private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XMLUni(); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/XMLString.hpp0000644000175000017500000016651511360344373020025 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLString.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_XMLSTRING_HPP) #define XERCESC_INCLUDE_GUARD_XMLSTRING_HPP #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN class XMLLCPTranscoder; /** * Class for representing native character strings and handling common string * operations * * This class is Unicode compliant. This class is designed primarily * for internal use, but due to popular demand, it is being made * publicly available. Users of this class must understand that this * is not an officially supported class. All public methods of this * class are static functions. * */ class XMLUTIL_EXPORT XMLString { public: /* Static methods for native character mode string manipulation */ /** @name String concatenation functions */ //@{ /** Concatenates two strings. * * catString appends src to target and * terminates the resulting string with a null character. The initial character * of src overwrites the terminating character of target * . * * No overflow checking is performed when strings are copied or appended. * The behavior of catString is undefined if source and * destination strings overlap. * * @param target Null-terminated destination string * @param src Null-terminated source string */ static void catString ( char* const target , const char* const src ); /** Concatenates two strings. * * catString appends src to target and * terminates the resulting string with a null character. The initial character of * src overwrites the terminating character of target. * No overflow checking is performed when strings are copied or appended. * The behavior of catString is undefined if source and destination * strings overlap. * * @param target Null-terminated destination string * @param src Null-terminated source string */ static void catString ( XMLCh* const target , const XMLCh* const src ); //@} /** @name String comparison functions */ //@{ /** Lexicographically compares lowercase versions of str1 and * str2 and returns a value indicating their relationship. * @param str1 Null-terminated string to compare * @param str2 Null-terminated string to compare * * @return The return value indicates the relation of str1 to * str2 as follows * Less than 0 means str1 is less than str2 * Equal to 0 means str1 is identical to str2 * Greater than 0 means str1 is more than str2 */ static int compareIString ( const char* const str1 , const char* const str2 ); /** Lexicographically compares lowercase versions of str1 and * str2 and returns a value indicating their relationship. * @param str1 Null-terminated string to compare * @param str2 Null-terminated string to compare * @return The return value indicates the relation of str1 to * str2 as follows * Less than 0 means str1 is less than str2 * Equal to 0 means str1 is identical to str2 * Greater than 0 means str1 is more than str2 */ static int compareIString ( const XMLCh* const str1 , const XMLCh* const str2 ); /** Lexicographically compares lowercase versions of str1 and * str2 and returns a value indicating their relationship. * The routine only lowercases A to Z. * @param str1 Null-terminated ASCII string to compare * @param str2 Null-terminated ASCII string to compare * @return The return value indicates the relation of str1 to * str2 as follows * Less than 0 means str1 is less than str2 * Equal to 0 means str1 is identical to str2 * Greater than 0 means str1 is more than str2 */ static int compareIStringASCII ( const XMLCh* const str1 , const XMLCh* const str2 ); /** Lexicographically compares, at most, the first count characters in * str1 and str2 and returns a value indicating the * relationship between the substrings. * @param str1 Null-terminated string to compare * @param str2 Null-terminated string to compare * @param count The number of characters to compare * * @return The return value indicates the relation of str1 to * str2 as follows * Less than 0 means str1 is less than str2 * Equal to 0 means str1 is identical to str2 * Greater than 0 means str1 is more than str2 */ static int compareNString ( const char* const str1 , const char* const str2 , const XMLSize_t count ); /** Lexicographically compares, at most, the first count characters in * str1 and str2 and returns a value indicating * the relationship between the substrings. * @param str1 Null-terminated string to compare * @param str2 Null-terminated string to compare * @param count The number of characters to compare * * @return The return value indicates the relation of str1 to * str2 as follows * Less than 0 means str1 is less than str2 * Equal to 0 means str1 is identical to str2 * Greater than 0 means str1 is more than str2 */ static int compareNString ( const XMLCh* const str1 , const XMLCh* const str2 , const XMLSize_t count ); /** Lexicographically compares, at most, the first count characters in * str1 and str2 without regard to case and * returns a value indicating the relationship between the substrings. * * @param str1 Null-terminated string to compare * @param str2 Null-terminated string to compare * @param count The number of characters to compare * @return The return value indicates the relation of str1 to * str2 as follows * Less than 0 means str1 is less than str2 * Equal to 0 means str1 is identical to str2 * Greater than 0 means str1 is more than str2 */ static int compareNIString ( const char* const str1 , const char* const str2 , const XMLSize_t count ); /** Lexicographically compares, at most, the first count characters in * str1 and str2 without regard to case and * returns a value indicating the relationship between the substrings. * * @param str1 Null-terminated string to compare * @param str2 Null-terminated string to compare * @param count The number of characters to compare * * @return The return value indicates the relation of str1 to * str2 as follows * Less than 0 means str1 is less than str2 * Equal to 0 means str1 is identical to str2 * Greater than 0 means str1 is more than str2 */ static int compareNIString ( const XMLCh* const str1 , const XMLCh* const str2 , const XMLSize_t count ); /** Lexicographically compares str1 and str2 and * returns a value indicating their relationship. * * @param str1 Null-terminated string to compare * @param str2 Null-terminated string to compare * * @return The return value indicates the relation of str1 to * str2 as follows * Less than 0 means str1 is less than str2 * Equal to 0 means str1 is identical to str2 * Greater than 0 means str1 is more than str2 */ static int compareString ( const char* const str1 , const char* const str2 ); /** Lexicographically compares str1 and str2 and * returns a value indicating their relationship. * * @param str1 Null-terminated string to compare * @param str2 Null-terminated string to compare * @return The return value indicates the relation of str1 to * str2 as follows * Less than 0 means str1 is less than str2 * Equal to 0 means str1 is identical to str2 * Greater than 0 means str1 is more than str2 */ static int compareString ( const XMLCh* const str1 , const XMLCh* const str2 ); /** compares str1 and str2 * * @param str1 Null-terminated string to compare * @param str2 Null-terminated string to compare * @return true if two strings are equal, false if not * If one string is null, while the other is zero-length string, * it is considered as equal. */ static bool equals ( const XMLCh* str1 , const XMLCh* str2 ); /** compares str1 and str2 * * @param str1 string to compare * @param str2 string to compare * @param n number of characters to compare * @return true if two strings are equal, false if not * If one string is null, while the other is zero-length string, * it is considered as equal. */ static bool equalsN ( const XMLCh* str1 , const XMLCh* str2 , XMLSize_t n ); static bool equals ( const char* str1 , const char* str2 ); /** compares str1 and str2 * * @param str1 string to compare * @param str2 string to compare * @param n number of characters to compare * @return true if two strings are equal, false if not * If one string is null, while the other is zero-length string, * it is considered as equal. */ static bool equalsN ( const char* str1 , const char* str2 , XMLSize_t n ); /** Lexicographically compares str1 and str2 * regions and returns true if they are equal, otherwise false. * * A substring of str1 is compared to a substring of * str2. The result is true if these substrings represent * identical character sequences. The substring of str1 * to be compared begins at offset1 and has length charCount. The * substring of str2 to be compared begins at offset2 and * has length charCount. The result is false if and only if at least * one of the following is true: * offset1 is negative. * offset2 is negative. * offset1+charCount is greater than the length of str1. * offset2+charCount is greater than the length of str2. * There is some nonnegative integer k less than charCount such that: * str1.charAt(offset1+k) != str2.charAt(offset2+k) * * @param str1 Null-terminated string to compare * @param offset1 Starting offset of str1 * @param str2 Null-terminated string to compare * @param offset2 Starting offset of str2 * @param charCount The number of characters to compare * @return true if the specified subregion of str1 exactly * matches the specified subregion of str2>; false * otherwise. */ static bool regionMatches ( const XMLCh* const str1 , const int offset1 , const XMLCh* const str2 , const int offset2 , const XMLSize_t charCount ); /** Lexicographically compares str1 and str2 * regions without regard to case and returns true if they are equal, * otherwise false. * * A substring of str1 is compared to a substring of * str2. The result is true if these substrings represent * identical character sequences. The substring of str1 * to be compared begins at offset1 and has length charCount. The * substring of str2 to be compared begins at offset2 and * has length charCount. The result is false if and only if at least * one of the following is true: * offset1 is negative. * offset2 is negative. * offset1+charCount is greater than the length of str1. * offset2+charCount is greater than the length of str2. * There is some nonnegative integer k less than charCount such that: * str1.charAt(offset1+k) != str2.charAt(offset2+k) * * @param str1 Null-terminated string to compare * @param offset1 Starting offset of str1 * @param str2 Null-terminated string to compare * @param offset2 Starting offset of str2 * @param charCount The number of characters to compare * @return true if the specified subregion of str1 exactly * matches the specified subregion of str2>; false * otherwise. */ static bool regionIMatches ( const XMLCh* const str1 , const int offset1 , const XMLCh* const str2 , const int offset2 , const XMLSize_t charCount ); //@} /** @name String copy functions */ //@{ /** Copies src, including the terminating null character, to the * location specified by target. * * No overflow checking is performed when strings are copied or appended. * The behavior of strcpy is undefined if the source and destination strings * overlap. * * @param target Destination string * @param src Null-terminated source string */ static void copyString ( char* const target , const char* const src ); /** Copies src, including the terminating null character, to * the location specified by target. * * No overflow checking is performed when strings are copied or appended. * The behavior of copyString is undefined if the source and * destination strings overlap. * * @param target Destination string * @param src Null-terminated source string */ static void copyString ( XMLCh* const target , const XMLCh* const src ); /** Copies src, upto a fixed number of characters, to the * location specified by target. * * No overflow checking is performed when strings are copied or appended. * The behavior of copyNString is undefined if the source and * destination strings overlap. * * @param target Destination string. The size of the buffer should * atleast be 'maxChars + 1'. * @param src Null-terminated source string * @param maxChars The maximum number of characters to copy */ static bool copyNString ( XMLCh* const target , const XMLCh* const src , const XMLSize_t maxChars ); //@} /** @name Hash functions */ //@{ /** Hashes a string given a modulus * * @param toHash The string to hash * @param hashModulus The divisor to be used for hashing * @return Returns the hash value */ static XMLSize_t hash ( const char* const toHash , const XMLSize_t hashModulus ); /** Hashes a string given a modulus * * @param toHash The string to hash * @param hashModulus The divisor to be used for hashing * @return Returns the hash value */ static XMLSize_t hash ( const XMLCh* const toHash , const XMLSize_t hashModulus ); /** Hashes a string given a modulus taking a maximum number of characters * as the limit * * @param toHash The string to hash * @param numChars The maximum number of characters to consider for hashing * @param hashModulus The divisor to be used for hashing * @return Returns the hash value */ static XMLSize_t hashN ( const XMLCh* const toHash , const XMLSize_t numChars , const XMLSize_t hashModulus ); //@} /** @name Search functions */ //@{ /** * Provides the index of the first occurrence of a character within a string * * @param toSearch The string to search * @param ch The character to search within the string * @return If found, returns the index of the character within the string, * else returns -1. */ static int indexOf(const char* const toSearch, const char ch); /** * Provides the index of the first occurrence of a character within a string * * @param toSearch The string to search * @param ch The character to search within the string * @return If found, returns the index of the character within the string, * else returns -1. */ static int indexOf(const XMLCh* const toSearch, const XMLCh ch); /** * Provides the index of the first occurrence of a character within a string * starting from a given index * * @param toSearch The string to search * @param chToFind The character to search within the string * @param fromIndex The index to start searching from * @param manager The MemoryManager to use to allocate objects * @return If found, returns the index of the character within the string, * else returns -1. */ static int indexOf ( const char* const toSearch , const char chToFind , const XMLSize_t fromIndex , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /** * Provides the index of the first occurrence of a character within a string * starting from a given index * * @param toSearch The string to search * @param chToFind The character to search within the string * @param fromIndex The index to start searching from * @param manager The MemoryManager to use to allocate objects * @return If found, returns the index of the character within the string, * else returns -1. */ static int indexOf ( const XMLCh* const toSearch , const XMLCh chToFind , const XMLSize_t fromIndex , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /** * Provides the index of the last occurrence of a character within a string * * @param toSearch The string to search * @param ch The character to search within the string * @return If found, returns the index of the character within the string, * else returns -1. */ static int lastIndexOf(const char* const toSearch, const char ch); /** * Provides the index of the last occurrence of a character within a string * * @param toSearch The string to search * @param ch The character to search within the string * @return If found, returns the index of the character within the string, * else returns -1. */ static int lastIndexOf(const XMLCh* const toSearch, const XMLCh ch); /** * Provides the index of the last occurrence of a character within a string * * @param ch The character to search within the string * @param toSearch The string to search * @param toSearchLen The length of the string to search * @return If found, returns the index of the character within the string, * else returns -1. */ static int lastIndexOf ( const XMLCh ch , const XMLCh* const toSearch , const XMLSize_t toSearchLen ); /** * Provides the index of the last occurrence of a character within a string * starting backward from a given index * * @param toSearch The string to search * @param chToFind The character to search within the string * @param fromIndex The index to start backward search from * @param manager The MemoryManager to use to allocate objects * @return If found, returns the index of the character within the string, * else returns -1. */ static int lastIndexOf ( const char* const toSearch , const char chToFind , const XMLSize_t fromIndex , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /** * Provides the index of the last occurrence of a character within a string * starting backward from a given index * * @param toSearch The string to search * @param ch The character to search within the string * @param fromIndex The index to start backward search from * @param manager The MemoryManager to use to allocate objects * @return If found, returns the index of the character within the string, * else returns -1. */ static int lastIndexOf ( const XMLCh* const toSearch , const XMLCh ch , const XMLSize_t fromIndex , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); //@} /** @name Fixed size string movement */ //@{ /** Moves X number of chars * @param targetStr The string to copy the chars to * @param srcStr The string to copy the chars from * @param count The number of chars to move */ static void moveChars ( XMLCh* const targetStr , const XMLCh* const srcStr , const XMLSize_t count ); //@} /** @name Substring function */ //@{ /** Create a substring of a given string. The substring begins at the * specified beginIndex and extends to the character at index * endIndex - 1. * @param targetStr The string to copy the chars to * @param srcStr The string to copy the chars from * @param startIndex beginning index, inclusive. * @param endIndex the ending index, exclusive. * @param manager The MemoryManager to use to allocate objects */ static void subString ( char* const targetStr , const char* const srcStr , const XMLSize_t startIndex , const XMLSize_t endIndex , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /** Create a substring of a given string. The substring begins at the * specified beginIndex and extends to the character at index * endIndex - 1. * @param targetStr The string to copy the chars to * @param srcStr The string to copy the chars from * @param startIndex beginning index, inclusive. * @param endIndex the ending index, exclusive. * @param manager The MemoryManager to use to allocate objects */ static void subString ( XMLCh* const targetStr , const XMLCh* const srcStr , const XMLSize_t startIndex , const XMLSize_t endIndex , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /** Create a substring of a given string. The substring begins at the * specified beginIndex and extends to the character at index * endIndex - 1. * @param targetStr The string to copy the chars to * @param srcStr The string to copy the chars from * @param startIndex beginning index, inclusive. * @param endIndex the ending index, exclusive. * @param srcStrLength the length of srcStr * @param manager The MemoryManager to use to allocate objects */ static void subString ( XMLCh* const targetStr , const XMLCh* const srcStr , const XMLSize_t startIndex , const XMLSize_t endIndex , const XMLSize_t srcStrLength , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); //@} /** @name Replication function */ //@{ /** Replicates a string * NOTE: The returned buffer is allocated with the MemoryManager. It is the * responsibility of the caller to delete it when not longer needed. * You can call XMLString::release to release this returned buffer. * * @param toRep The string to replicate * @param manager The MemoryManager to use to allocate the string * @return Returns a pointer to the replicated string * @see XMLString::release(char**, MemoryManager*) */ static char* replicate(const char* const toRep, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); /** Replicates a string * NOTE: The returned buffer is allocated with the MemoryManager. It is the * responsibility of the caller to delete it when not longer needed. * You can call XMLString::release to release this returned buffer. * * @param toRep The string to replicate * @param manager The MemoryManager to use to allocate the string * @return Returns a pointer to the replicated string * @see XMLString::release(XMLCh**, MemoryManager*) */ static XMLCh* replicate(const XMLCh* const toRep, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); //@} /** @name String query function */ //@{ /** Tells if the sub-string appears within a string at the beginning * @param toTest The string to test * @param prefix The sub-string that needs to be checked * @return Returns true if the sub-string was found at the beginning of * toTest, else false */ static bool startsWith ( const char* const toTest , const char* const prefix ); /** Tells if the sub-string appears within a string at the beginning * @param toTest The string to test * @param prefix The sub-string that needs to be checked * @return Returns true if the sub-string was found at the beginning of * toTest, else false */ static bool startsWith ( const XMLCh* const toTest , const XMLCh* const prefix ); /** Tells if the sub-string appears within a string at the beginning * without regard to case * * @param toTest The string to test * @param prefix The sub-string that needs to be checked * @return Returns true if the sub-string was found at the beginning of * toTest, else false */ static bool startsWithI ( const char* const toTest , const char* const prefix ); /** Tells if the sub-string appears within a string at the beginning * without regard to case * * @param toTest The string to test * @param prefix The sub-string that needs to be checked * * @return Returns true if the sub-string was found at the beginning * of toTest, else false */ static bool startsWithI ( const XMLCh* const toTest , const XMLCh* const prefix ); /** Tells if the sub-string appears within a string at the end. * @param toTest The string to test * @param suffix The sub-string that needs to be checked * @return Returns true if the sub-string was found at the end of * toTest, else false */ static bool endsWith ( const XMLCh* const toTest , const XMLCh* const suffix ); /** Tells if a string has any occurrence of any character of another * string within itself * @param toSearch The string to be searched * @param searchList The string from which characters to be searched for are drawn * @return Returns the pointer to the location where the first occurrence of any * character from searchList is found, * else returns 0 */ static const XMLCh* findAny ( const XMLCh* const toSearch , const XMLCh* const searchList ); /** Tells if a string has any occurrence of any character of another * string within itself * @param toSearch The string to be searched * @param searchList The string from which characters to be searched for are drawn * @return Returns the pointer to the location where the first occurrence of any * character from searchList is found, * else returns 0 */ static XMLCh* findAny ( XMLCh* const toSearch , const XMLCh* const searchList ); /** Tells if a string has pattern within itself * @param toSearch The string to be searched * @param pattern The pattern to be located within the string * @return Returns index to the location where the pattern was * found, else returns -1 */ static int patternMatch ( const XMLCh* const toSearch , const XMLCh* const pattern ); /** Get the length of the string * @param src The string whose length is to be determined * @return Returns the length of the string */ static XMLSize_t stringLen(const char* const src); /** Get the length of the string * @param src The string whose length is to be determined * @return Returns the length of the string */ static XMLSize_t stringLen(const XMLCh* const src); /** * * Checks whether an name is a valid NOTATION according to XML 1.0 * @param name The string to check its NOTATION validity * @param manager The memory manager * @return Returns true if name is NOTATION valid, otherwise false */ static bool isValidNOTATION(const XMLCh* const name , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); /** * Checks whether an name is a valid EncName. * @param name The string to check its EncName validity * @return Returns true if name is EncName valid, otherwise false */ static bool isValidEncName(const XMLCh* const name); /** * Checks whether a character is within [a-zA-Z]. * @param theChar the character to check * @return Returns true if within the range, otherwise false */ static bool isAlpha(XMLCh const theChar); /** * Checks whether a character is within [0-9]. * @param theChar the character to check * @return Returns true if within the range, otherwise false */ static bool isDigit(XMLCh const theChar); /** * Checks whether a character is within [0-9a-zA-Z]. * @param theChar the character to check * @return Returns true if within the range, otherwise false */ static bool isAlphaNum(XMLCh const theChar); /** * Checks whether a character is within [0-9a-fA-F]. * @param theChar the character to check * @return Returns true if within the range, otherwise false */ static bool isHex(XMLCh const theChar); /** Find is the string appears in the enum list * @param toFind the string to be found * @param enumList the list * return true if found */ static bool isInList(const XMLCh* const toFind, const XMLCh* const enumList); //@} /** @name Conversion functions */ //@{ /** Converts size to a text string based a given radix * * @param toFormat The size to convert * @param toFill The buffer that will hold the output on return. The * size of this buffer should at least be 'maxChars + 1'. * @param maxChars The maximum number of output characters that can be * accepted. If the result will not fit, it is an error. * @param radix The radix of the input data, based on which the conversion * @param manager The MemoryManager to use to allocate objects * will be done */ static void sizeToText ( const XMLSize_t toFormat , char* const toFill , const XMLSize_t maxChars , const unsigned int radix , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /** Converts size to a text string based a given radix * * @param toFormat The size to convert * @param toFill The buffer that will hold the output on return. The * size of this buffer should at least be 'maxChars + 1'. * @param maxChars The maximum number of output characters that can be * accepted. If the result will not fit, it is an error. * @param radix The radix of the input data, based on which the conversion * @param manager The MemoryManager to use to allocate objects * will be done */ static void sizeToText ( const XMLSize_t toFormat , XMLCh* const toFill , const XMLSize_t maxChars , const unsigned int radix , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /** Converts binary data to a text string based a given radix * * @param toFormat The number to convert * @param toFill The buffer that will hold the output on return. The * size of this buffer should at least be 'maxChars + 1'. * @param maxChars The maximum number of output characters that can be * accepted. If the result will not fit, it is an error. * @param radix The radix of the input data, based on which the conversion * @param manager The MemoryManager to use to allocate objects * will be done */ static void binToText ( const unsigned int toFormat , char* const toFill , const XMLSize_t maxChars , const unsigned int radix , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /** Converts binary data to a text string based a given radix * * @param toFormat The number to convert * @param toFill The buffer that will hold the output on return. The * size of this buffer should at least be 'maxChars + 1'. * @param maxChars The maximum number of output characters that can be * accepted. If the result will not fit, it is an error. * @param radix The radix of the input data, based on which the conversion * @param manager The MemoryManager to use to allocate objects * will be done */ static void binToText ( const unsigned int toFormat , XMLCh* const toFill , const XMLSize_t maxChars , const unsigned int radix , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /** Converts binary data to a text string based a given radix * * @param toFormat The number to convert * @param toFill The buffer that will hold the output on return. The * size of this buffer should at least be 'maxChars + 1'. * @param maxChars The maximum number of output characters that can be * accepted. If the result will not fit, it is an error. * @param radix The radix of the input data, based on which the conversion * @param manager The MemoryManager to use to allocate objects * will be done */ static void binToText ( const unsigned long toFormat , char* const toFill , const XMLSize_t maxChars , const unsigned int radix , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /** Converts binary data to a text string based a given radix * * @param toFormat The number to convert * @param toFill The buffer that will hold the output on return. The * size of this buffer should at least be 'maxChars + 1'. * @param maxChars The maximum number of output characters that can be * accepted. If the result will not fit, it is an error. * @param radix The radix of the input data, based on which the conversion * @param manager The MemoryManager to use to allocate objects * will be done */ static void binToText ( const unsigned long toFormat , XMLCh* const toFill , const XMLSize_t maxChars , const unsigned int radix , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /** Converts binary data to a text string based a given radix * * @param toFormat The number to convert * @param toFill The buffer that will hold the output on return. The * size of this buffer should at least be 'maxChars + 1'. * @param maxChars The maximum number of output characters that can be * accepted. If the result will not fit, it is an error. * @param radix The radix of the input data, based on which the conversion * @param manager The MemoryManager to use to allocate objects * will be done */ static void binToText ( const int toFormat , char* const toFill , const XMLSize_t maxChars , const unsigned int radix , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /** Converts binary data to a text string based a given radix * * @param toFormat The number to convert * @param toFill The buffer that will hold the output on return. The * size of this buffer should at least be 'maxChars + 1'. * @param maxChars The maximum number of output characters that can be * accepted. If the result will not fit, it is an error. * @param radix The radix of the input data, based on which the conversion * @param manager The MemoryManager to use to allocate objects * will be done */ static void binToText ( const int toFormat , XMLCh* const toFill , const XMLSize_t maxChars , const unsigned int radix , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /** Converts binary data to a text string based a given radix * * @param toFormat The number to convert * @param toFill The buffer that will hold the output on return. The * size of this buffer should at least be 'maxChars + 1'. * @param maxChars The maximum number of output characters that can be * accepted. If the result will not fit, it is an error. * @param radix The radix of the input data, based on which the conversion * @param manager The MemoryManager to use to allocate objects * will be done */ static void binToText ( const long toFormat , char* const toFill , const XMLSize_t maxChars , const unsigned int radix , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /** Converts binary data to a text string based a given radix * * @param toFormat The number to convert * @param toFill The buffer that will hold the output on return. The * size of this buffer should at least be 'maxChars + 1'. * @param maxChars The maximum number of output characters that can be * accepted. If the result will not fit, it is an error. * @param radix The radix of the input data, based on which the conversion * @param manager The MemoryManager to use to allocate objects * will be done */ static void binToText ( const long toFormat , XMLCh* const toFill , const XMLSize_t maxChars , const unsigned int radix , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /** * Converts a string of decimal chars to a binary value * * Note that leading and trailing whitespace is legal and will be ignored * but the remainder must be all decimal digits. * * @param toConvert The string of digits to convert * @param toFill The unsigned int value to fill with the converted * value. * @param manager The MemoryManager to use to allocate objects */ static bool textToBin ( const XMLCh* const toConvert , unsigned int& toFill , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /** * Converts a string of decimal chars to a binary value * * Note that leading and trailing whitespace is legal and will be ignored, * * Only one and either of (+,-) after the leading whitespace, before * any other characters are allowed. * * but the remainder must be all decimal digits. * * @param toConvert The string of digits to convert * @param manager The MemoryManager to use to allocate objects */ static int parseInt ( const XMLCh* const toConvert , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /** Cut leading chars from a string * * @param toCutFrom The string to cut chars from * @param count The count of leading chars to cut */ static void cut ( XMLCh* const toCutFrom , const XMLSize_t count ); /** Transcodes a string to native code-page * * NOTE: The returned buffer is dynamically allocated and is the * responsibility of the caller to delete it when not longer needed. * You can call XMLString::release to release this returned buffer. * * @param toTranscode The string to be transcoded * @param manager The MemoryManager to use to allocate objects * @return Returns the transcoded string * @see XMLString::release(XMLCh**, MemoryManager*) */ static char* transcode ( const XMLCh* const toTranscode , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /** Transcodes a string to native code-page (DEPRECATED) * * Be aware that when transcoding to an external encoding, that each * Unicode char can create multiple output bytes. So you cannot assume * a one to one correspondence of input chars to output bytes. * * @param toTranscode The string tobe transcoded * @param toFill The buffer that is filled with the transcoded value. * The size of this buffer should atleast be 'maxChars + 1'. * @param maxChars The maximum number of bytes that the output * buffer can hold (not including the null, which is why * toFill should be at least maxChars+1.). * @param manager The MemoryManager to use to allocate objects * @return Returns true if successful, false if there was an error */ static bool transcode ( const XMLCh* const toTranscode , char* const toFill , const XMLSize_t maxChars , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /** Transcodes a string to native code-page * * NOTE: The returned buffer is dynamically allocated and is the * responsibility of the caller to delete it when not longer needed. * You can call XMLString::release to release this returned buffer. * * @param toTranscode The string to be transcoded * @param manager The MemoryManager to use to allocate objects * @return Returns the transcoded string * @see XMLString::release(char**, MemoryManager*) */ static XMLCh* transcode ( const char* const toTranscode , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /** Transcodes a string to native code-page (DEPRECATED) * @param toTranscode The string tobe transcoded * @param toFill The buffer that is filled with the transcoded value. * The size of this buffer should atleast be 'maxChars + 1'. * @param maxChars The maximum number of characters that the output * buffer can hold (not including the null, which is why * toFill should be at least maxChars+1.). * @param manager The MemoryManager to use to allocate objects * @return Returns true if successful, false if there was an error */ static bool transcode ( const char* const toTranscode , XMLCh* const toFill , const XMLSize_t maxChars , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /** Trims off extra space characters from the start and end of the string, * moving the non-space string content back to the start. * @param toTrim The string to be trimmed. On return this contains the * trimmed string */ static void trim(char* const toTrim); /** Trims off extra space characters from the start and end of the string, * moving the non-space string content back to the start. * @param toTrim The string to be trimmed. On return this contains * the trimmed string */ static void trim(XMLCh* const toTrim); /** Break a string into tokens with space as delimiter, and * stored in a string vector. The caller owns the string vector * that is returned, and is responsible for deleting it. * @param tokenizeSrc String to be tokenized * @param manager The MemoryManager to use to allocate objects * @return a vector of all the tokenized string */ static BaseRefVectorOf* tokenizeString(const XMLCh* const tokenizeSrc , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); //@} /** @name Formatting functions */ //@{ /** Creates a UName from a URI and base name. It is in the form * {url}name, and is commonly used internally to represent fully * qualified names when namespaces are enabled. * * @param pszURI The URI part of the name * @param pszName The base part of the name * @return Returns the complete formatted UName */ static XMLCh* makeUName ( const XMLCh* const pszURI , const XMLCh* const pszName ); /** * Internal function to perform token replacement for strings. * * @param errText The text (NULL terminated) where the replacement * is to be done. The size of this buffer should be * 'maxChars + 1' to account for the final NULL. * @param maxChars The size of the output buffer, i.e. the maximum * number of characters that it will hold. If the result is * larger, it will be truncated. * @param text1 Replacement text-one * @param text2 Replacement text-two * @param text3 Replacement text-three * @param text4 Replacement text-four * @param manager The MemoryManager to use to allocate objects * @return Returns the count of characters that are outputted */ static XMLSize_t replaceTokens ( XMLCh* const errText , const XMLSize_t maxChars , const XMLCh* const text1 , const XMLCh* const text2 , const XMLCh* const text3 , const XMLCh* const text4 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /** Converts a string to uppercase * @param toUpperCase The string which needs to be converted to uppercase. * On return, this buffer also holds the converted uppercase string */ static void upperCase(XMLCh* const toUpperCase); /** Converts a string to uppercase * The routine only uppercases A to Z (other characters not changed). * @param toUpperCase The string which needs to be converted to uppercase. * On return, this buffer also holds the converted uppercase string */ static void upperCaseASCII(XMLCh* const toUpperCase); /** Converts a string to lowercase * @param toLowerCase The string which needs to be converted to lowercase. * On return, this buffer also holds the converted lowercase string */ static void lowerCase(XMLCh* const toLowerCase); /** Converts a string to lowercase * The routine only lowercases a to z (other characters not changed). * @param toLowerCase The string which needs to be converted to lowercase. * On return, this buffer also holds the converted lowercase string */ static void lowerCaseASCII(XMLCh* const toLowerCase); /** Check if string is WhiteSpace:replace * @param toCheck The string which needs to be checked. */ static bool isWSReplaced(const XMLCh* const toCheck); /** Check if string is WhiteSpace:collapse * @param toCheck The string which needs to be checked. */ static bool isWSCollapsed(const XMLCh* const toCheck); /** Replace whitespace * @param toConvert The string which needs to be whitespace replaced. * On return , this buffer also holds the converted string * @param manager The MemoryManager to use to allocate objects */ static void replaceWS(XMLCh* toConvert , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); /** Collapse whitespace * @param toConvert The string which needs to be whitespace collapsed. * On return , this buffer also holds the converted string * @param manager The MemoryManager to use to allocate objects */ static void collapseWS(XMLCh* toConvert , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); /** Remove whitespace * @param toConvert The string which needs to be whitespace removed. * On return , this buffer also holds the converted string * @param manager The MemoryManager to use to allocate objects */ static void removeWS(XMLCh* toConvert , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); /** Remove character * @param srcString The string * @param toRemove The character needs to be removed from the string * @param dstBuffer The buffer containing the result */ static void removeChar(const XMLCh* const srcString , const XMLCh& toRemove , XMLBuffer& dstBuffer); /** * Fixes a platform dependent absolute path filename to standard URI form. * 1. Windows: fix 'x:' to 'file:///x:' and convert any backslash to forward slash * 2. UNIX: fix '/blah/blahblah' to 'file:///blah/blahblah' * @param str The string that has the absolute path filename * @param target The target string pre-allocated to store the fixed uri */ static void fixURI(const XMLCh* const str, XMLCh* const target); //@} /** @name String Memory Management functions */ //@{ /** * Release the parameter string that was allocated by XMLString::transcode and XMLString::replicate. * The implementation will call MemoryManager::deallocate and then turn the string to a null pointer. * * @param buf The string to be deleted and become a null pointer. * @param manager The MemoryManager used to allocate the string */ static void release ( char** buf , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /** * Release the parameter string that was allocated by XMLString::transcode and XMLString::replicate. * The implementation will call MemoryManager::deallocate and then turn the string to a null pointer. * * @param buf The string to be deleted and become a null pointer. * @param manager The MemoryManager used to allocate the string */ static void release ( XMLCh** buf , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); //@} private : /** @name Constructors and Destructor */ //@{ /** Unimplemented default constructor */ XMLString(); /** Unimplemented destructor */ ~XMLString(); //@} /** @name Initialization */ //@{ /** Init/Term methods called from XMLPlatformUtils class */ static void initString(XMLLCPTranscoder* const defToUse, MemoryManager* const manager); static void termString(); //@} /** * Called by regionMatches/regionIMatches to validate that we * have a valid input */ static bool validateRegion(const XMLCh* const str1, const int offset1, const XMLCh* const str2, const int offset2, const XMLSize_t charCount); static MemoryManager* fgMemoryManager; friend class XMLPlatformUtils; }; // --------------------------------------------------------------------------- // Inline some methods that are either just passthroughs to other string // methods, or which are key for performance. // --------------------------------------------------------------------------- inline void XMLString::moveChars( XMLCh* const targetStr , const XMLCh* const srcStr , const XMLSize_t count) { memcpy(targetStr, srcStr, count * sizeof(XMLCh)); } inline XMLSize_t XMLString::stringLen(const XMLCh* const src) { if (src == 0) return 0; const XMLCh* pszTmp = src; while (*pszTmp++) ; return (pszTmp - src - 1); } inline XMLCh* XMLString::replicate(const XMLCh* const toRep, MemoryManager* const manager) { // If a null string, return a null string! XMLCh* ret = 0; if (toRep) { const XMLSize_t len = stringLen(toRep); ret = (XMLCh*) manager->allocate((len+1) * sizeof(XMLCh)); //new XMLCh[len + 1]; memcpy(ret, toRep, (len + 1) * sizeof(XMLCh)); } return ret; } inline bool XMLString::startsWith( const XMLCh* const toTest , const XMLCh* const prefix) { return (compareNString(toTest, prefix, stringLen(prefix)) == 0); } inline bool XMLString::startsWithI( const XMLCh* const toTest , const XMLCh* const prefix) { return (compareNIString(toTest, prefix, stringLen(prefix)) == 0); } inline bool XMLString::endsWith(const XMLCh* const toTest, const XMLCh* const suffix) { XMLSize_t suffixLen = XMLString::stringLen(suffix); return regionMatches(toTest, (int)(XMLString::stringLen(toTest) - suffixLen), suffix, 0, suffixLen); } inline bool XMLString::validateRegion(const XMLCh* const str1, const int offset1, const XMLCh* const str2, const int offset2, const XMLSize_t charCount) { if (offset1 < 0 || offset2 < 0 || (offset1 + charCount) > XMLString::stringLen(str1) || (offset2 + charCount) > XMLString::stringLen(str2) ) return false; return true; } inline bool XMLString::equals( const XMLCh* str1 , const XMLCh* str2) { if (str1 == str2) return true; if (str1 == 0 || str2 == 0) return ((!str1 || !*str1) && (!str2 || !*str2)); while (*str1) if(*str1++ != *str2++) // they are different (or str2 is shorter and we hit the NULL) return false; // either both ended (and *str2 is 0 too), or str2 is longer return (*str2==0); } inline bool XMLString::equalsN(const XMLCh* str1, const XMLCh* str2, XMLSize_t n) { if (str1 == str2 || n == 0) return true; if (str1 == 0 || str2 == 0) return ((!str1 || !*str1) && (!str2 || !*str2)); for (; n != 0 && *str1 && *str2; --n, ++str1, ++str2) if(*str1 != *str2) break; return n == 0 || *str1 == *str2; // either equal or both ended premat. } inline bool XMLString::equals( const char* str1 , const char* str2) { if (str1 == str2) return true; if (str1 == 0 || str2 == 0) return ((!str1 || !*str1) && (!str2 || !*str2)); while (*str1) if(*str1++ != *str2++) // they are different (or str2 is shorter and we hit the NULL) return false; // either both ended (and *str2 is 0 too), or str2 is longer return (*str2==0); } inline bool XMLString::equalsN(const char* str1, const char* str2, XMLSize_t n) { if (str1 == str2 || n == 0) return true; if (str1 == 0 || str2 == 0) return ((!str1 || !*str1) && (!str2 || !*str2)); for (; n != 0 && *str1 && *str2; --n, ++str1, ++str2) if(*str1 != *str2) break; return n == 0 || *str1 == *str2; // either equal or both ended premat. } inline int XMLString::lastIndexOf(const XMLCh* const toSearch, const XMLCh ch) { return XMLString::lastIndexOf(ch, toSearch, stringLen(toSearch)); } inline XMLSize_t XMLString::hash(const XMLCh* const tohash , const XMLSize_t hashModulus) { if (tohash == 0 || *tohash == 0) return 0; const XMLCh* curCh = tohash; XMLSize_t hashVal = (XMLSize_t)(*curCh++); while (*curCh) hashVal = (hashVal * 38) + (hashVal >> 24) + (XMLSize_t)(*curCh++); // Divide by modulus return hashVal % hashModulus; } inline XMLSize_t XMLString::hashN(const XMLCh* const tohash , const XMLSize_t n , const XMLSize_t hashModulus) { if (tohash == 0 || n == 0) return 0; const XMLCh* curCh = tohash; XMLSize_t hashVal = (XMLSize_t)(*curCh++); for(XMLSize_t i=0;i> 24) + (XMLSize_t)(*curCh++); // Divide by modulus return hashVal % hashModulus; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/EncodingValidator.hpp0000644000175000017500000000562410765240501021557 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: EncodingValidator.hpp 635560 2008-03-10 14:10:09Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_ENCODINGVALIDATOR_HPP) #define XERCESC_INCLUDE_GUARD_ENCODINGVALIDATOR_HPP // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include XERCES_CPP_NAMESPACE_BEGIN /** * A singleton class that checks whether an encoding name is a valid IANA * encoding */ class XMLUTIL_EXPORT EncodingValidator { public: // ----------------------------------------------------------------------- // Validation methods // ----------------------------------------------------------------------- bool isValidEncoding(const XMLCh* const encName); // ----------------------------------------------------------------------- // Instance methods // ----------------------------------------------------------------------- static EncodingValidator* instance(); private: // ----------------------------------------------------------------------- // Constructor and destructors // ----------------------------------------------------------------------- EncodingValidator(); ~EncodingValidator(); // ----------------------------------------------------------------------- // Private Helpers methods // ----------------------------------------------------------------------- /* * Initializes the registry with a set of valid IANA encoding names */ void initializeRegistry(); // ----------------------------------------------------------------------- // Private data members // // fEncodingRegistry // Contains a set of IANA encoding names // // fInstance // An EncodingValidator singleton instance // ----------------------------------------------------------------------- ValueHashTableOf* fEncodingRegistry; static EncodingValidator* fInstance; friend class XMLInitializer; }; XERCES_CPP_NAMESPACE_END #endif /** * End file EncodingValidator.hpp */ xerces-c-3.1.1/src/xercesc/util/XML256TableTranscoder.hpp0000644000175000017500000001317510765240501022055 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XML256TableTranscoder.hpp 635560 2008-03-10 14:10:09Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_XML256TABLETRANSCODER_HPP) #define XERCESC_INCLUDE_GUARD_XML256TABLETRANSCODER_HPP #include XERCES_CPP_NAMESPACE_BEGIN // // This class implements the functionality of a common type of transcoder // for an 8 bit, single byte encoding based on a set of 'to' and 'from' // translation tables. Actual derived classes are trivial and just have to // provide us with pointers to their tables and we do all the work. // class XMLUTIL_EXPORT XML256TableTranscoder : public XMLTranscoder { public : // ----------------------------------------------------------------------- // Public constructors and destructor // ----------------------------------------------------------------------- virtual ~XML256TableTranscoder(); // ----------------------------------------------------------------------- // The virtual transcoding interface // ----------------------------------------------------------------------- virtual XMLSize_t transcodeFrom ( const XMLByte* const srcData , const XMLSize_t srcCount , XMLCh* const toFill , const XMLSize_t maxChars , XMLSize_t& bytesEaten , unsigned char* const charSizes ); virtual XMLSize_t transcodeTo ( const XMLCh* const srcData , const XMLSize_t srcCount , XMLByte* const toFill , const XMLSize_t maxBytes , XMLSize_t& charsEaten , const UnRepOpts options ); virtual bool canTranscodeTo ( const unsigned int toCheck ); protected : // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- XML256TableTranscoder ( const XMLCh* const encodingName , const XMLSize_t blockSize , const XMLCh* const fromTable , const XMLTransService::TransRec* const toTable , const XMLSize_t toTableSize , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); // ----------------------------------------------------------------------- // Protected helper methods // ----------------------------------------------------------------------- XMLByte xlatOneTo ( const XMLCh toXlat ) const; private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XML256TableTranscoder(); XML256TableTranscoder(const XML256TableTranscoder&); XML256TableTranscoder& operator=(const XML256TableTranscoder&); // ----------------------------------------------------------------------- // Private data members // // fFromTable // This is the 'from' table that we were given during construction. // It is a 256 entry table of XMLCh chars. Each entry is the // Unicode code point for the external encoding point of that value. // So fFromTable[N] is the Unicode translation of code point N of // the source encoding. // // We don't own this table, we just refer to it. It is assumed that // the table is static, for performance reasons. // // fToSize // The 'to' table is variable sized. This indicates how many records // are in it. // // fToTable // This is a variable sized table of TransRec structures. It must // be sorted by the intCh field, i.e. the XMLCh field. It is searched // binarily to find the record for a particular Unicode char. Then // that record's extch field is the translation record. // // We don't own this table, we just refer to it. It is assumed that // the table is static, for performance reasons. // // NOTE: There may be dups of the extCh field, since there might be // multiple Unicode code points which map to the same external code // point. Normally this won't happen, since the parser assumes that // internalization is normalized, but we have to be prepared to do // the right thing if some client code gives us non-normalized data // itself. // ----------------------------------------------------------------------- const XMLCh* fFromTable; XMLSize_t fToSize; const XMLTransService::TransRec* fToTable; }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/RefHash3KeysIdPool.c0000644000175000017500000004434011302525023021153 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: RefHash3KeysIdPool.c 883368 2009-11-23 15:28:19Z amassari $ */ // --------------------------------------------------------------------------- // Include // --------------------------------------------------------------------------- #if defined(XERCES_TMPLSINC) #include #endif #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // RefHash3KeysIdPool: Constructors and Destructor // --------------------------------------------------------------------------- template RefHash3KeysIdPool::RefHash3KeysIdPool( const XMLSize_t modulus, const XMLSize_t initSize, MemoryManager* const manager) : fMemoryManager(manager) , fAdoptedElems(true) , fBucketList(0) , fHashModulus(modulus) , fIdPtrs(0) , fIdPtrsCount(initSize) , fIdCounter(0) { initialize(modulus); // Allocate the initial id pointers array. We don't have to zero them // out since the fIdCounter value tells us which ones are valid. The // zeroth element is never used (and represents an invalid pool id.) // if (!fIdPtrsCount) fIdPtrsCount = 256; fIdPtrs = (TVal**) fMemoryManager->allocate(fIdPtrsCount * sizeof(TVal*)); //new TVal*[fIdPtrsCount]; fIdPtrs[0] = 0; } template RefHash3KeysIdPool::RefHash3KeysIdPool( const XMLSize_t modulus, const THasher& hasher, const XMLSize_t initSize, MemoryManager* const manager) : fMemoryManager(manager) , fAdoptedElems(true) , fBucketList(0) , fHashModulus(modulus) , fIdPtrs(0) , fIdPtrsCount(initSize) , fIdCounter(0) , fHasher(hasher) { initialize(modulus); // Allocate the initial id pointers array. We don't have to zero them // out since the fIdCounter value tells us which ones are valid. The // zeroth element is never used (and represents an invalid pool id.) // if (!fIdPtrsCount) fIdPtrsCount = 256; fIdPtrs = (TVal**) fMemoryManager->allocate(fIdPtrsCount * sizeof(TVal*)); //new TVal*[fIdPtrsCount]; fIdPtrs[0] = 0; } template RefHash3KeysIdPool::RefHash3KeysIdPool( const XMLSize_t modulus, const bool adoptElems, const XMLSize_t initSize, MemoryManager* const manager) : fMemoryManager(manager) , fAdoptedElems(adoptElems) , fBucketList(0) , fHashModulus(modulus) , fIdPtrs(0) , fIdPtrsCount(initSize) , fIdCounter(0) { initialize(modulus); // Allocate the initial id pointers array. We don't have to zero them // out since the fIdCounter value tells us which ones are valid. The // zeroth element is never used (and represents an invalid pool id.) // if (!fIdPtrsCount) fIdPtrsCount = 256; fIdPtrs = (TVal**) fMemoryManager->allocate(fIdPtrsCount * sizeof(TVal*)); //new TVal*[fIdPtrsCount]; fIdPtrs[0] = 0; } template RefHash3KeysIdPool::RefHash3KeysIdPool( const XMLSize_t modulus, const bool adoptElems, const THasher& hasher, const XMLSize_t initSize, MemoryManager* const manager) : fMemoryManager(manager) , fAdoptedElems(adoptElems) , fBucketList(0) , fHashModulus(modulus) , fIdPtrs(0) , fIdPtrsCount(initSize) , fIdCounter(0) , fHasher(hasher) { initialize(modulus); // Allocate the initial id pointers array. We don't have to zero them // out since the fIdCounter value tells us which ones are valid. The // zeroth element is never used (and represents an invalid pool id.) // if (!fIdPtrsCount) fIdPtrsCount = 256; fIdPtrs = (TVal**) fMemoryManager->allocate(fIdPtrsCount * sizeof(TVal*)); //new TVal*[fIdPtrsCount]; fIdPtrs[0] = 0; } template void RefHash3KeysIdPool::initialize(const XMLSize_t modulus) { if (modulus == 0) ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::HshTbl_ZeroModulus, fMemoryManager); // Allocate the bucket list and zero them fBucketList = (RefHash3KeysTableBucketElem**) fMemoryManager->allocate ( fHashModulus * sizeof(RefHash3KeysTableBucketElem*) ); //new RefHash3KeysTableBucketElem*[fHashModulus]; memset(fBucketList, 0, sizeof(fBucketList[0]) * fHashModulus); } template RefHash3KeysIdPool::~RefHash3KeysIdPool() { removeAll(); // Then delete the bucket list & hasher & id pointers list fMemoryManager->deallocate(fIdPtrs); //delete [] fIdPtrs; fIdPtrs = 0; fMemoryManager->deallocate(fBucketList); //delete [] fBucketList; fBucketList = 0; } // --------------------------------------------------------------------------- // RefHash3KeysIdPool: Element management // --------------------------------------------------------------------------- template bool RefHash3KeysIdPool::isEmpty() const { // Just check the bucket list for non-empty elements for (XMLSize_t buckInd = 0; buckInd < fHashModulus; buckInd++) { if (fBucketList[buckInd] != 0) return false; } return true; } template bool RefHash3KeysIdPool:: containsKey(const void* const key1, const int key2, const int key3) const { XMLSize_t hashVal; const RefHash3KeysTableBucketElem* findIt = findBucketElem(key1, key2, key3, hashVal); return (findIt != 0); } template void RefHash3KeysIdPool::removeAll() { if (fIdCounter == 0) return; // Clean up the buckets first for (XMLSize_t buckInd = 0; buckInd < fHashModulus; buckInd++) { // Get the bucket list head for this entry RefHash3KeysTableBucketElem* curElem = fBucketList[buckInd]; RefHash3KeysTableBucketElem* nextElem; while (curElem) { // Save the next element before we hose this one nextElem = curElem->fNext; // If we adopted the data, then delete it too // (Note: the userdata hash table instance has data type of void *. // This will generate compiler warnings here on some platforms, but they // can be ignored since fAdoptedElements is false. if (fAdoptedElems) delete curElem->fData; // Then delete the current element and move forward // delete curElem; // destructor is empty... // curElem->~RefHash3KeysTableBucketElem(); fMemoryManager->deallocate(curElem); curElem = nextElem; } // Clean out this entry fBucketList[buckInd] = 0; } // Reset the id counter fIdCounter = 0; } // --------------------------------------------------------------------------- // RefHash3KeysIdPool: Getters // --------------------------------------------------------------------------- template TVal* RefHash3KeysIdPool::getByKey(const void* const key1, const int key2, const int key3) { XMLSize_t hashVal; RefHash3KeysTableBucketElem* findIt = findBucketElem(key1, key2, key3, hashVal); if (!findIt) return 0; return findIt->fData; } template const TVal* RefHash3KeysIdPool::getByKey(const void* const key1, const int key2, const int key3) const { XMLSize_t hashVal; const RefHash3KeysTableBucketElem* findIt = findBucketElem(key1, key2, key3, hashVal); if (!findIt) return 0; return findIt->fData; } template TVal* RefHash3KeysIdPool::getById(const unsigned int elemId) { // If its either zero or beyond our current id, its an error if (!elemId || (elemId > fIdCounter)) ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::Pool_InvalidId, fMemoryManager); return fIdPtrs[elemId]; } template const TVal* RefHash3KeysIdPool::getById(const unsigned int elemId) const { // If its either zero or beyond our current id, its an error if (!elemId || (elemId > fIdCounter)) ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::Pool_InvalidId, fMemoryManager); return fIdPtrs[elemId]; } template MemoryManager* RefHash3KeysIdPool::getMemoryManager() const { return fMemoryManager; } template XMLSize_t RefHash3KeysIdPool::getHashModulus() const { return fHashModulus; } // --------------------------------------------------------------------------- // RefHash3KeysIdPool: Putters // --------------------------------------------------------------------------- template XMLSize_t RefHash3KeysIdPool::put(void* key1, int key2, int key3, TVal* const valueToAdopt) { // First see if the key exists already XMLSize_t hashVal; XMLSize_t retId; RefHash3KeysTableBucketElem* newBucket = findBucketElem(key1, key2, key3, hashVal); // // If so,then update its value. If not, then we need to add it to // the right bucket // if (newBucket) { retId = newBucket->fData->getId(); if (fAdoptedElems) delete newBucket->fData; newBucket->fData = valueToAdopt; newBucket->fKey1 = key1; newBucket->fKey2 = key2; newBucket->fKey3 = key3; } else { // Revisit: the gcc compiler 2.95.x is generating an // internal compiler error message. So we use the default // memory manager for now. #if defined (XML_GCC_VERSION) && (XML_GCC_VERSION < 29600) newBucket = new RefHash3KeysTableBucketElem(key1, key2, key3, valueToAdopt, fBucketList[hashVal]); #else newBucket = new (fMemoryManager->allocate(sizeof(RefHash3KeysTableBucketElem))) RefHash3KeysTableBucketElem(key1, key2, key3, valueToAdopt, fBucketList[hashVal]); #endif fBucketList[hashVal] = newBucket; // // Give this new one the next available id and add to the pointer list. // Expand the list if that is now required. // if (fIdCounter + 1 == fIdPtrsCount) { // Create a new count 1.5 times larger and allocate a new array XMLSize_t newCount = (XMLSize_t)(fIdPtrsCount * 1.5); TVal** newArray = (TVal**) fMemoryManager->allocate ( newCount * sizeof(TVal*) ); //new TVal*[newCount]; // Copy over the old contents to the new array memcpy(newArray, fIdPtrs, fIdPtrsCount * sizeof(TVal*)); // Ok, toss the old array and store the new data fMemoryManager->deallocate(fIdPtrs); //delete [] fIdPtrs; fIdPtrs = newArray; fIdPtrsCount = newCount; } retId = ++fIdCounter; } fIdPtrs[retId] = valueToAdopt; // Set the id on the passed element valueToAdopt->setId(retId); // Return the id that we gave to this element return retId; } // --------------------------------------------------------------------------- // RefHash3KeysIdPool: Private methods // --------------------------------------------------------------------------- template inline RefHash3KeysTableBucketElem* RefHash3KeysIdPool:: findBucketElem(const void* const key1, const int key2, const int key3, XMLSize_t& hashVal) { // Hash the key hashVal = fHasher.getHashVal(key1, fHashModulus); assert(hashVal < fHashModulus); // Search that bucket for the key RefHash3KeysTableBucketElem* curElem = fBucketList[hashVal]; while (curElem) { if((key2==curElem->fKey2) && (key3==curElem->fKey3) && (fHasher.equals(key1, curElem->fKey1))) return curElem; curElem = curElem->fNext; } return 0; } template inline const RefHash3KeysTableBucketElem* RefHash3KeysIdPool:: findBucketElem(const void* const key1, const int key2, const int key3, XMLSize_t& hashVal) const { // Hash the key hashVal = fHasher.getHashVal(key1, fHashModulus); assert(hashVal < fHashModulus); // Search that bucket for the key const RefHash3KeysTableBucketElem* curElem = fBucketList[hashVal]; while (curElem) { if((key2==curElem->fKey2) && (key3==curElem->fKey3) && (fHasher.equals(key1, curElem->fKey1))) return curElem; curElem = curElem->fNext; } return 0; } // --------------------------------------------------------------------------- // RefHash3KeysIdPoolEnumerator: Constructors and Destructor // --------------------------------------------------------------------------- template RefHash3KeysIdPoolEnumerator:: RefHash3KeysIdPoolEnumerator(RefHash3KeysIdPool* const toEnum , const bool adopt , MemoryManager* const manager) : fAdoptedElems(adopt), fCurIndex(0), fToEnum(toEnum), fMemoryManager(manager) { if (!toEnum) ThrowXMLwithMemMgr(NullPointerException, XMLExcepts::CPtr_PointerIsZero, fMemoryManager); Reset(); resetKey(); } template RefHash3KeysIdPoolEnumerator::~RefHash3KeysIdPoolEnumerator() { if (fAdoptedElems) delete fToEnum; } template RefHash3KeysIdPoolEnumerator:: RefHash3KeysIdPoolEnumerator(const RefHash3KeysIdPoolEnumerator& toCopy) : XMLEnumerator(toCopy) , XMemory(toCopy) , fAdoptedElems(toCopy.fAdoptedElems) , fCurIndex(toCopy.fCurIndex) , fToEnum(toCopy.fToEnum) , fCurElem(toCopy.fCurElem) , fCurHash(toCopy.fCurHash) , fMemoryManager(toCopy.fMemoryManager) { } // --------------------------------------------------------------------------- // RefHash3KeysIdPoolEnumerator: Enum interface // --------------------------------------------------------------------------- template bool RefHash3KeysIdPoolEnumerator::hasMoreElements() const { // If our index is zero or past the end, then we are done if (!fCurIndex || (fCurIndex > fToEnum->fIdCounter)) return false; return true; } template TVal& RefHash3KeysIdPoolEnumerator::nextElement() { // If our index is zero or past the end, then we are done if (!fCurIndex || (fCurIndex > fToEnum->fIdCounter)) ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::Enum_NoMoreElements, fMemoryManager); // Return the current element and bump the index return *fToEnum->fIdPtrs[fCurIndex++]; } template void RefHash3KeysIdPoolEnumerator::Reset() { // // Find the next available bucket element in the pool. We use the id // array since its very easy to enumerator through by just maintaining // an index. If the id counter is zero, then its empty and we leave the // current index to zero. // fCurIndex = fToEnum->fIdCounter ? 1:0; } template XMLSize_t RefHash3KeysIdPoolEnumerator::size() const { return fToEnum->fIdCounter; } template void RefHash3KeysIdPoolEnumerator::resetKey() { fCurHash = (XMLSize_t)-1; fCurElem = 0; findNext(); } template bool RefHash3KeysIdPoolEnumerator::hasMoreKeys() const { // // If our current has is at the max and there are no more elements // in the current bucket, then no more elements. // if (!fCurElem && (fCurHash == fToEnum->fHashModulus)) return false; return true; } template void RefHash3KeysIdPoolEnumerator::nextElementKey(void*& retKey1, int& retKey2, int& retKey3) { // Make sure we have an element to return if (!hasMoreKeys()) ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::Enum_NoMoreElements, fMemoryManager); // // Save the current element, then move up to the next one for the // next time around. // RefHash3KeysTableBucketElem* saveElem = fCurElem; findNext(); retKey1 = saveElem->fKey1; retKey2 = saveElem->fKey2; retKey3 = saveElem->fKey3; return; } template void RefHash3KeysIdPoolEnumerator::findNext() { // // If there is a current element, move to its next element. If this // hits the end of the bucket, the next block will handle the rest. // if (fCurElem) fCurElem = fCurElem->fNext; // // If the current element is null, then we have to move up to the // next hash value. If that is the hash modulus, then we cannot // go further. // if (!fCurElem) { fCurHash++; if (fCurHash == fToEnum->fHashModulus) return; // Else find the next non-empty bucket while (fToEnum->fBucketList[fCurHash]==0) { // Bump to the next hash value. If we max out return fCurHash++; if (fCurHash == fToEnum->fHashModulus) return; } fCurElem = fToEnum->fBucketList[fCurHash]; } } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/XMLChTranscoder.hpp0000644000175000017500000000601510765240501021116 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLChTranscoder.hpp 635560 2008-03-10 14:10:09Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_XMLCHTRANSCODER_HPP) #define XERCESC_INCLUDE_GUARD_XMLCHTRANSCODER_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN // // This class provides an implementation of the XMLTranscoder interface // for a simple XMLCh transcoder. This is used for internal entities, which // are already in the native XMLCh format. // class XMLUTIL_EXPORT XMLChTranscoder : public XMLTranscoder { public : // ----------------------------------------------------------------------- // Public constructors and destructor // ----------------------------------------------------------------------- XMLChTranscoder ( const XMLCh* const encodingName , const XMLSize_t blockSize , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual ~XMLChTranscoder(); // ----------------------------------------------------------------------- // Implementation of the XMLTranscoder interface // ----------------------------------------------------------------------- virtual XMLSize_t transcodeFrom ( const XMLByte* const srcData , const XMLSize_t srcCount , XMLCh* const toFill , const XMLSize_t maxChars , XMLSize_t& bytesEaten , unsigned char* const charSizes ); virtual XMLSize_t transcodeTo ( const XMLCh* const srcData , const XMLSize_t srcCount , XMLByte* const toFill , const XMLSize_t maxBytes , XMLSize_t& charsEaten , const UnRepOpts options ); virtual bool canTranscodeTo ( const unsigned int toCheck ); private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XMLChTranscoder(const XMLChTranscoder&); XMLChTranscoder& operator=(const XMLChTranscoder&); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/XMLException.cpp0000644000175000017500000001572411033362104020470 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLException.cpp 673960 2008-07-04 08:50:12Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN static XMLMsgLoader* sMsgLoader = 0; void XMLInitializer::initializeXMLException() { sMsgLoader = XMLPlatformUtils::loadMsgSet(XMLUni::fgExceptDomain); if (!sMsgLoader) XMLPlatformUtils::panic(PanicHandler::Panic_CantLoadMsgDomain); } void XMLInitializer::terminateXMLException() { delete sMsgLoader; sMsgLoader = 0; } // // static XMLMsgLoader& gGetMsgLoader() { return *sMsgLoader; } // --------------------------------------------------------------------------- // XMLException: Virtual destructor // --------------------------------------------------------------------------- XMLException::~XMLException() { fMemoryManager->deallocate(fMsg); fMemoryManager->deallocate(fSrcFile); } // --------------------------------------------------------------------------- // XMLException: Setter methods // --------------------------------------------------------------------------- void XMLException::setPosition(const char* const file, const XMLFileLoc line) { fSrcLine = line; fMemoryManager->deallocate(fSrcFile); fSrcFile = XMLString::replicate(file, fMemoryManager); } // --------------------------------------------------------------------------- // XMLException: Hidden constructors and operators // --------------------------------------------------------------------------- XMLException::XMLException() : fCode(XMLExcepts::NoError) , fSrcFile(0) , fSrcLine(0) , fMsg(0) , fMemoryManager( XMLPlatformUtils::fgMemoryManager->getExceptionMemoryManager()) { } XMLException::XMLException( const char* const srcFile , const XMLFileLoc srcLine , MemoryManager* const memoryManager) : fCode(XMLExcepts::NoError) , fSrcFile(0) , fSrcLine(srcLine) , fMsg(0) , fMemoryManager(0) { if (!memoryManager) fMemoryManager = XMLPlatformUtils::fgMemoryManager->getExceptionMemoryManager(); else fMemoryManager = memoryManager->getExceptionMemoryManager(); fSrcFile = XMLString::replicate(srcFile, fMemoryManager); } XMLException::XMLException(const XMLException& toCopy) : XMemory(toCopy) , fCode(toCopy.fCode) , fSrcFile(0) , fSrcLine(toCopy.fSrcLine) , fMsg(XMLString::replicate(toCopy.fMsg, toCopy.fMemoryManager)) , fMemoryManager(toCopy.fMemoryManager) { if (toCopy.fSrcFile) { fSrcFile = XMLString::replicate ( toCopy.fSrcFile , fMemoryManager ); } } XMLException& XMLException::operator=(const XMLException& toAssign) { if (this != &toAssign) { //use the original memory manager to deallocate fMemoryManager->deallocate(fSrcFile); fSrcFile = 0; fMemoryManager->deallocate(fMsg); fMsg = 0; fMemoryManager = toAssign.fMemoryManager; fSrcLine = toAssign.fSrcLine; fCode = toAssign.fCode; if (toAssign.fMsg) { fMsg = XMLString::replicate ( toAssign.fMsg , fMemoryManager ); } if (toAssign.fSrcFile) { fSrcFile = XMLString::replicate ( toAssign.fSrcFile , fMemoryManager ); } } return *this; } // --------------------------------------------------------------------------- // XMLException: Protected methods // --------------------------------------------------------------------------- void XMLException::loadExceptText(const XMLExcepts::Codes toLoad) { // Store the error code fCode = toLoad; // Load up the text into a local buffer const XMLSize_t msgSize = 2047; XMLCh errText[msgSize + 1]; // load the text if (!gGetMsgLoader().loadMsg(toLoad, errText, msgSize)) { fMsg = XMLString::replicate ( XMLUni::fgDefErrMsg , fMemoryManager ); return; } // We got the text so replicate it into the message member fMsg = XMLString::replicate(errText, fMemoryManager); } void XMLException::loadExceptText(const XMLExcepts::Codes toLoad , const XMLCh* const text1 , const XMLCh* const text2 , const XMLCh* const text3 , const XMLCh* const text4) { // Store the error code fCode = toLoad; // Load up the text into a local buffer const XMLSize_t msgSize = 4095; XMLCh errText[msgSize + 1]; // load the text if (!gGetMsgLoader().loadMsg(toLoad, errText, msgSize, text1, text2, text3, text4, fMemoryManager)) { fMsg = XMLString::replicate ( XMLUni::fgDefErrMsg , fMemoryManager ); return; } // We got the text so replicate it into the message member fMsg = XMLString::replicate(errText, fMemoryManager); } void XMLException::loadExceptText(const XMLExcepts::Codes toLoad , const char* const text1 , const char* const text2 , const char* const text3 , const char* const text4) { // Store the error code fCode = toLoad; // Load up the text into a local buffer const XMLSize_t msgSize = 4095; XMLCh errText[msgSize + 1]; // load the text if (!gGetMsgLoader().loadMsg(toLoad, errText, msgSize, text1, text2, text3, text4, fMemoryManager)) { fMsg = XMLString::replicate ( XMLUni::fgDefErrMsg , fMemoryManager ); return; } // We got the text so replicate it into the message member fMsg = XMLString::replicate(errText, fMemoryManager); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/BinInputStream.cpp0000644000175000017500000000312311027453421021051 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: BinInputStream.cpp 670359 2008-06-22 13:43:45Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // BinInputStream: Virtual destructor! // --------------------------------------------------------------------------- BinInputStream::~BinInputStream() { } // --------------------------------------------------------------------------- // BinInputStream: Hidden Constructors // --------------------------------------------------------------------------- BinInputStream::BinInputStream() { } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/KeyRefPair.hpp0000644000175000017500000000531310606722647020171 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: KeyRefPair.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_KEYREFPAIR_HPP) #define XERCESC_INCLUDE_GUARD_KEYREFPAIR_HPP #include XERCES_CPP_NAMESPACE_BEGIN template class KeyRefPair : public XMemory { public : // ------------------------------------------------------------------- // Constructors and Destructor // ------------------------------------------------------------------- KeyRefPair(); KeyRefPair(TKey* key, TValue* value); KeyRefPair(const KeyRefPair* toCopy); KeyRefPair(const KeyRefPair& toCopy); ~KeyRefPair(); // ------------------------------------------------------------------- // Getters // ------------------------------------------------------------------- const TKey* getKey() const; TKey* getKey(); const TValue* getValue() const; TValue* getValue(); // ------------------------------------------------------------------- // Setters // ------------------------------------------------------------------- TKey* setKey(TKey* newKey); TValue* setValue(TValue* newValue); private : // unimplemented: KeyRefPair& operator=(const KeyRefPair&); // ------------------------------------------------------------------- // Private data members // // fKey // The object that represents the key of the pair // // fValue // The object that represents the value of the pair // ------------------------------------------------------------------- TKey* fKey; TValue* fValue; }; XERCES_CPP_NAMESPACE_END #if !defined(XERCES_TMPLSINC) #include #endif #endif xerces-c-3.1.1/src/xercesc/util/BitSet.hpp0000644000175000017500000000736711037122704017360 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: BitSet.hpp 676911 2008-07-15 13:27:32Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_BITSET_HPP) #define XERCESC_INCLUDE_GUARD_BITSET_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN class XMLUTIL_EXPORT BitSet : public XMemory { public: // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- BitSet( const XMLSize_t size , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); BitSet(const BitSet& toCopy); ~BitSet(); // ----------------------------------------------------------------------- // Equality methods // ----------------------------------------------------------------------- bool equals(const BitSet& other) const; // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- bool allAreCleared() const; bool allAreSet() const; XMLSize_t size() const; bool get(const XMLSize_t index) const; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- void clear(const XMLSize_t index); void clearAll(); void set(const XMLSize_t index); // ----------------------------------------------------------------------- // Bitwise logical operations // ----------------------------------------------------------------------- void andWith(const BitSet& other); void orWith(const BitSet& other); void xorWith(const BitSet& other); // ----------------------------------------------------------------------- // Miscellaneous // ----------------------------------------------------------------------- XMLSize_t hash(const XMLSize_t hashModulus) const; private : // ----------------------------------------------------------------------- // Unimplemented constructors // ----------------------------------------------------------------------- BitSet(); BitSet& operator=(const BitSet&); // ----------------------------------------------------------------------- // Private methods // ----------------------------------------------------------------------- void ensureCapacity(const XMLSize_t bits); // ----------------------------------------------------------------------- // Data members // // fBits // The array of unsigned longs used to store the bits. // // fUnitLen // The length of the storage array, in storage units not bits. // ----------------------------------------------------------------------- MemoryManager* fMemoryManager; unsigned long* fBits; XMLSize_t fUnitLen; }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/XMLUCS4Transcoder.hpp0000644000175000017500000000714511360344373021313 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLUCS4Transcoder.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_XMLUCS4TRANSCODER_HPP) #define XERCESC_INCLUDE_GUARD_XMLUCS4TRANSCODER_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN // // This class provides an implementation of the XMLTranscoder interface // for a simple UCS4 transcoder. The parser does some encodings // intrinsically without depending upon external transcoding services. // To make everything more orthogonal, we implement these internal // transcoders using the same transcoder abstraction as the pluggable // transcoding services do. // class XMLUTIL_EXPORT XMLUCS4Transcoder : public XMLTranscoder { public : // ----------------------------------------------------------------------- // Public constructors and destructor // ----------------------------------------------------------------------- XMLUCS4Transcoder ( const XMLCh* const encodingName , const XMLSize_t blockSize , const bool swapped , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual ~XMLUCS4Transcoder(); // ----------------------------------------------------------------------- // Implementation of the XMLTranscoder interface // ----------------------------------------------------------------------- virtual XMLSize_t transcodeFrom ( const XMLByte* const srcData , const XMLSize_t srcCount , XMLCh* const toFill , const XMLSize_t maxChars , XMLSize_t& bytesEaten , unsigned char* const charSizes ); virtual XMLSize_t transcodeTo ( const XMLCh* const srcData , const XMLSize_t srcCount , XMLByte* const toFill , const XMLSize_t maxBytes , XMLSize_t& charsEaten , const UnRepOpts options ); virtual bool canTranscodeTo ( const unsigned int toCheck ); private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XMLUCS4Transcoder(const XMLUCS4Transcoder&); XMLUCS4Transcoder& operator=(const XMLUCS4Transcoder&); // ----------------------------------------------------------------------- // Private data members // // fSwapped // This tells us if our input is going to be in the same endianness // as the local host or swapped. // ----------------------------------------------------------------------- bool fSwapped; }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/BitOps.hpp0000644000175000017500000000425710606722647017376 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: BitOps.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_BITOPS_HPP) #define XERCESC_INCLUDE_GUARD_BITOPS_HPP #include XERCES_CPP_NAMESPACE_BEGIN class XMLUTIL_EXPORT BitOps { public: // ----------------------------------------------------------------------- // Public static methods // ----------------------------------------------------------------------- static inline XMLCh swapBytes(const XMLUInt16 toSwap) { //The mask is required to overcome a compiler error on solaris return XMLCh(((toSwap >> 8) | (toSwap << 8)) & 0xFFFF); } static inline unsigned int swapBytes(const XMLUInt32 toSwap) { return ( (toSwap >> 24) | (toSwap << 24) | ((toSwap & 0xFF00) << 8) | ((toSwap & 0xFF0000) >> 8) ); } protected : // ----------------------------------------------------------------------- // Unimplemented constructors and operators. (These ought to be private, // but that produces spurious compiler warnings // on some platforms.) // ----------------------------------------------------------------------- BitOps(); BitOps(const BitOps&); BitOps& operator=(const BitOps&); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/XMLUTF16Transcoder.hpp0000644000175000017500000000714411360344373021401 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLUTF16Transcoder.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_XMLUTF16TRANSCODER_HPP) #define XERCESC_INCLUDE_GUARD_XMLUTF16TRANSCODER_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN // // This class provides an implementation of the XMLTranscoder interface // for a simple UTF16 transcoder. The parser does some encodings // intrinsically without depending upon external transcoding services. // To make everything more orthogonal, we implement these internal // transcoders using the same transcoder abstraction as the pluggable // transcoding services do. // class XMLUTIL_EXPORT XMLUTF16Transcoder : public XMLTranscoder { public : // ----------------------------------------------------------------------- // Public constructors and destructor // ----------------------------------------------------------------------- XMLUTF16Transcoder ( const XMLCh* const encodingName , const XMLSize_t blockSize , const bool swapped , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual ~XMLUTF16Transcoder(); // ----------------------------------------------------------------------- // Implementation of the XMLTranscoder interface // ----------------------------------------------------------------------- virtual XMLSize_t transcodeFrom ( const XMLByte* const srcData , const XMLSize_t srcCount , XMLCh* const toFill , const XMLSize_t maxChars , XMLSize_t& bytesEaten , unsigned char* const charSizes ); virtual XMLSize_t transcodeTo ( const XMLCh* const srcData , const XMLSize_t srcCount , XMLByte* const toFill , const XMLSize_t maxBytes , XMLSize_t& charsEaten , const UnRepOpts options ); virtual bool canTranscodeTo ( const unsigned int toCheck ); private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XMLUTF16Transcoder(const XMLUTF16Transcoder&); XMLUTF16Transcoder& operator=(const XMLUTF16Transcoder&); // ----------------------------------------------------------------------- // Private data members // // fSwapped // Indicates whether the encoding is of the opposite endianness from // the local host. // ----------------------------------------------------------------------- bool fSwapped; }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/XMLChar.cpp0000644000175000017500000321000111037122704017377 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLChar.cpp 676911 2008-07-15 13:27:32Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // XMLChar1_0: static data initialization // --------------------------------------------------------------------------- bool XMLChar1_0::enableNEL = false; // --------------------------------------------------------------------------- // XMLChar1_0: Public, static methods // --------------------------------------------------------------------------- // Checks whether all of the chars in the passed buffer are whitespace or // not. Breaks out on the first non-whitespace. // bool XMLChar1_0::isAllSpaces(const XMLCh* const toCheck , const XMLSize_t count) { if (count == 0) return false; const XMLCh* curCh = toCheck; const XMLCh* endPtr = toCheck + count; while (curCh < endPtr) { if (!(fgCharCharsTable1_0[*curCh++] & gWhitespaceCharMask)) return false; } return true; } // // Checks whether at least one of the chars in the passed buffer are whitespace or // not. // bool XMLChar1_0::containsWhiteSpace(const XMLCh* const toCheck , const XMLSize_t count) { if (count == 0) return false; const XMLCh* curCh = toCheck; const XMLCh* endPtr = toCheck + count; while (curCh < endPtr) { if (fgCharCharsTable1_0[*curCh++] & gWhitespaceCharMask) return true; } return false; } bool XMLChar1_0::isValidNCName(const XMLCh* const toCheck , const XMLSize_t count) { if (count == 0) return false; const XMLCh* curCh = toCheck; const XMLCh* endPtr = toCheck + count; if (*curCh== chColon || !(fgCharCharsTable1_0[*curCh++] & gFirstNameCharMask)) return false; while (curCh < endPtr) { if (!(fgCharCharsTable1_0[*curCh++] & gNCNameCharMask)) return false; } return true; } bool XMLChar1_0::isValidNmtoken(const XMLCh* const toCheck , const XMLSize_t count) { if (count == 0) return false; const XMLCh* curCh = toCheck; const XMLCh* endPtr = toCheck + count; while (curCh < endPtr) { if (!(fgCharCharsTable1_0[*curCh++] & gNameCharMask)) return false; } return true; } bool XMLChar1_0::isValidName(const XMLCh* const toCheck , const XMLSize_t count) { if (count == 0) return false; const XMLCh* curCh = toCheck; const XMLCh* endPtr = toCheck + count; if (!(fgCharCharsTable1_0[*curCh++] & gFirstNameCharMask)) return false; while (curCh < endPtr) { if (!(fgCharCharsTable1_0[*curCh++] & gNameCharMask)) return false; } return true; } bool XMLChar1_0::isValidName(const XMLCh* const toCheck) { const XMLCh* curCh = toCheck; if ((fgCharCharsTable1_0[*curCh++] & gFirstNameCharMask)) { while ((fgCharCharsTable1_0[*curCh] & gNameCharMask)) { curCh++; } if (*curCh == 0) { return true; } } return false; } /** * isValidQName * * [6] QName ::= (Prefix ':')? LocalPart * [7] Prefix ::= NCName * [8] LocalPart ::= NCName * */ bool XMLChar1_0::isValidQName(const XMLCh* const toCheck , const XMLSize_t count) { if (count == 0) return false; XMLSize_t colonPos=0; // don't use XMLString::indexOf, we must stop after 'count' chars while(colonPos= 0xD800) && (nextCh <= 0xDB7F)) { nextCh = *curCh++; if ((nextCh < 0xDC00) || (nextCh > 0xDFFF)) return false; } else if (nextCh== chColon || !(fgCharCharsTable1_1[nextCh] & gFirstNameCharMask)) return false; bool gotLeadingSurrogate = false; while (curCh < endPtr) { nextCh = *curCh++; // Deal with surrogate pairs if ((nextCh >= 0xD800) && (nextCh <= 0xDBFF)) { // It's a leading surrogate. If we already got one, then // issue an error, else set leading flag to make sure that // we look for a trailing next time. if (nextCh > 0xDB7F || gotLeadingSurrogate) { return false; } else gotLeadingSurrogate = true; } else { // If it's a trailing surrogate, make sure that we are // prepared for that. Else, it's just a regular char so make // sure that we were not expected a trailing surrogate. if ((nextCh >= 0xDC00) && (nextCh <= 0xDFFF)) { // It's trailing, so make sure we were expecting it if (!gotLeadingSurrogate) return false; } else { // It's just a char, so make sure we were not expecting a // trailing surrogate. if (gotLeadingSurrogate) { return false; } // It's got to at least be a valid XML character else if (!(fgCharCharsTable1_1[nextCh] & gNCNameCharMask)) { return false; } } gotLeadingSurrogate = false; } } return true; } bool XMLChar1_1::isValidNmtoken(const XMLCh* const toCheck , const XMLSize_t count) { if (count == 0) return false; const XMLCh* curCh = toCheck; const XMLCh* endPtr = toCheck + count; XMLCh nextCh; bool gotLeadingSurrogate = false; while (curCh < endPtr) { nextCh = *curCh++; // Deal with surrogate pairs if ((nextCh >= 0xD800) && (nextCh <= 0xDBFF)) { // It's a leading surrogate. If we already got one, then // issue an error, else set leading flag to make sure that // we look for a trailing next time. if (nextCh > 0xDB7F || gotLeadingSurrogate) { return false; } else gotLeadingSurrogate = true; } else { // If it's a trailing surrogate, make sure that we are // prepared for that. Else, it's just a regular char so make // sure that we were not expected a trailing surrogate. if ((nextCh >= 0xDC00) && (nextCh <= 0xDFFF)) { // It's trailing, so make sure we were expecting it if (!gotLeadingSurrogate) return false; } else { // It's just a char, so make sure we were not expecting a // trailing surrogate. if (gotLeadingSurrogate) { return false; } // It's got to at least be a valid XML character else if (!(fgCharCharsTable1_1[nextCh] & gNameCharMask)) { return false; } } gotLeadingSurrogate = false; } } return true; } bool XMLChar1_1::isValidName(const XMLCh* const toCheck , const XMLSize_t count) { if (count == 0) return false; const XMLCh* curCh = toCheck; const XMLCh* endPtr = toCheck + count; XMLCh nextCh = *curCh++; if ((nextCh >= 0xD800) && (nextCh <= 0xDB7F)) { nextCh = *curCh++; if ((nextCh < 0xDC00) || (nextCh > 0xDFFF)) return false; } else if (!(fgCharCharsTable1_1[nextCh] & gFirstNameCharMask)) return false; bool gotLeadingSurrogate = false; while (curCh < endPtr) { nextCh = *curCh++; // Deal with surrogate pairs if ((nextCh >= 0xD800) && (nextCh <= 0xDBFF)) { // It's a leading surrogate. If we already got one, then // issue an error, else set leading flag to make sure that // we look for a trailing next time. if (nextCh > 0xDB7F || gotLeadingSurrogate) { return false; } else gotLeadingSurrogate = true; } else { // If it's a trailing surrogate, make sure that we are // prepared for that. Else, it's just a regular char so make // sure that we were not expected a trailing surrogate. if ((nextCh >= 0xDC00) && (nextCh <= 0xDFFF)) { // It's trailing, so make sure we were expecting it if (!gotLeadingSurrogate) return false; } else { // It's just a char, so make sure we were not expecting a // trailing surrogate. if (gotLeadingSurrogate) { return false; } // It's got to at least be a valid XML character else if (!(fgCharCharsTable1_1[nextCh] & gNameCharMask)) { return false; } } gotLeadingSurrogate = false; } } return true; } bool XMLChar1_1::isValidName(const XMLCh* const toCheck) { const XMLCh* curCh = toCheck; XMLCh nextCh = *curCh++; if ((nextCh >= 0xD800) && (nextCh <= 0xDB7F)) { nextCh = *curCh++; if ((nextCh < 0xDC00) || (nextCh > 0xDFFF)) { return false; } } else if (!(fgCharCharsTable1_1[nextCh] & gFirstNameCharMask)) { return false; } bool gotLeadingSurrogate = false; while (*curCh != 0) { nextCh = *curCh++; // Deal with surrogate pairs if ((nextCh >= 0xD800) && (nextCh <= 0xDBFF)) { // It's a leading surrogate. If we already got one, then // issue an error, else set leading flag to make sure that // we look for a trailing next time. if (nextCh > 0xDB7F || gotLeadingSurrogate) { return false; } else { gotLeadingSurrogate = true; } } else { // If it's a trailing surrogate, make sure that we are // prepared for that. Else, it's just a regular char so make // sure that we were not expected a trailing surrogate. if ((nextCh >= 0xDC00) && (nextCh <= 0xDFFF)) { // It's trailing, so make sure we were expecting it if (!gotLeadingSurrogate) return false; } else { // It's just a char, so make sure we were not expecting a // trailing surrogate. if (gotLeadingSurrogate) { return false; } // It's got to at least be a valid XML character else if (!(fgCharCharsTable1_1[nextCh] & gNameCharMask)) { return false; } } gotLeadingSurrogate = false; } } return true; } /** * isValidQName * * [6] QName ::= (Prefix ':')? LocalPart * [7] Prefix ::= NCName * [8] LocalPart ::= NCName * */ bool XMLChar1_1::isValidQName(const XMLCh* const toCheck , const XMLSize_t count) { if (count == 0) return false; XMLSize_t length = count; int colonPos = XMLString::indexOf(toCheck, chColon); if ((colonPos == 0) || // ":abcd" (colonPos == ((int)length)-1)) // "abcd:" return false; // // prefix // if (colonPos != -1) { if (isValidNCName(toCheck, colonPos) == false) return false; } // // LocalPart // return isValidNCName(toCheck+colonPos+1, length-colonPos-1); } // // This one is not called terribly often, so it's done manually in order // give up more bits in the character characteristics table for more often // used characteristics. // bool XMLChar1_1::isPublicIdChar(const XMLCh toCheck, const XMLCh toCheck2) { if (!toCheck2) { const XMLCh* curTable = gPublicIdChars; // Check the ranges while (*curTable) { // // If the test char is less than the low range, then it's never // going to match any other range, so break out. But we have to // run up to the range terminator first. // if (toCheck < *curTable++) { while (*curTable++) { // Purposefully empty, we are just running up the pointer } break; } // If it's less than or equal to the top of the range, then a match if (toCheck <= *curTable++) return true; } // And now test against singles while (*curTable) { if (toCheck == *curTable++) return true; } return false; } return false; } XMLByte XMLChar1_1::fgCharCharsTable1_1[0x10000] = { 0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xF8, 0xF0, 0x20, 0x20, 0xF0, 0x20, 0x20 , 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 , 0xD8, 0x48, 0x58, 0x48, 0x48, 0x48, 0x40, 0x58, 0x48, 0x48, 0x48, 0x48, 0x48, 0x4D, 0x4D, 0x58 , 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4E, 0x48, 0x50, 0x48, 0x58, 0x48 , 0x48, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x48, 0x48, 0x40, 0x48, 0x4F , 0x48, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x48, 0x48, 0x48, 0x48, 0x20 , 0x20, 0x20, 0x20, 0x20, 0x20, 0xF0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 , 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x4D, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x48, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x48, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D , 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D , 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D , 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D , 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D , 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D , 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D, 0x4D , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x48, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x4F, 0x4F, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0xD0, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x4D , 0x4D, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48 , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F , 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x4F, 0x00, 0x00 }; // --------------------------------------------------------------------------- // Conditional methods for building the table // --------------------------------------------------------------------------- // // This code will set up the character flags table. It's defined out since // this table is now written out and hard coded (at the bottom of this // file) into the code itself. This code is retained in case there is // any need to recreate it later. // #if defined(NEED_TO_GEN_TABLE) #include static XMLCh gTmpCharTable[0xFFFF]; static void initOneTable(const XMLCh* const theTable , const XMLByte theMask) { const XMLCh* pchCur = theTable; // Do the ranges first while (*pchCur) { XMLCh chIndex; const XMLCh chLow = *pchCur++; const XMLCh chHigh = *pchCur++; for (chIndex = chLow; chIndex <= chHigh; chIndex++) gTmpCharTable[chIndex] |= theMask; } // Skip the range terminator pchCur++; // And then the singles until we hit its terminator while (*pchCur) gTmpCharTable[*pchCur++] |= theMask; } static void initCharFlagTable() { memset(gTmpCharTable, 0, sizeof(gTmpCharTable)); // Do the init for each table. Do the non-special case ones first initOneTable(gXMLChars, gXMLCharMask); initOneTable(gWhitespaceChars, gWhitespaceCharMask); // // Name characters are special. A name is made up of a number of // different tables and some special case characters. // initOneTable(gBaseChars, gNameCharMask); initOneTable(gCombiningChars, gNameCharMask); initOneTable(gExtenderChars, gNameCharMask); initOneTable(gIdeographicChars, gNameCharMask); initOneTable(gDigitChars, gNameCharMask); gTmpCharTable[chDash] |= gNameCharMask; gTmpCharTable[chPeriod] |= gNameCharMask; gTmpCharTable[chColon] |= gNameCharMask; gTmpCharTable[chUnderscore] |= gNameCharMask; // // NCName characters are special. A name is made up of a number of // different tables and some special case characters. // initOneTable(gBaseChars, gNCNameCharMask); initOneTable(gCombiningChars, gNCNameCharMask); initOneTable(gExtenderChars, gNCNameCharMask); initOneTable(gIdeographicChars, gNCNameCharMask); initOneTable(gDigitChars, gNCNameCharMask); gTmpCharTable[chDash] |= gNCNameCharMask; gTmpCharTable[chPeriod] |= gNCNameCharMask; gTmpCharTable[chUnderscore] |= gNCNameCharMask; // // Then do the first name char // initOneTable(gBaseChars, gFirstNameCharMask); initOneTable(gIdeographicChars, gFirstNameCharMask); gTmpCharTable[chColon] |= gFirstNameCharMask; gTmpCharTable[chUnderscore] |= gFirstNameCharMask; // // And now do the very special case ones. These are bits that are // designed to sense special case characters in the most important // processing loops of the parser. They allow us to do a quick // check for a special case and get to the common case with minimal // overhead when it's not. Since the special case chars are a tiny // fraction of the chars, this is a good optimization. // // We do the special chars for the start tag processing, which // needs to look for things that indicate the end of the tag, quote // chars, etc... // gTmpCharTable[chNull] |= gSpecialStartTagCharMask; gTmpCharTable[chForwardSlash] |= gSpecialStartTagCharMask; gTmpCharTable[chCloseAngle] |= gSpecialStartTagCharMask; gTmpCharTable[chOpenAngle] |= gSpecialStartTagCharMask; gTmpCharTable[chSingleQuote] |= gSpecialStartTagCharMask; gTmpCharTable[chDoubleQuote] |= gSpecialStartTagCharMask; initOneTable(gWhitespaceChars, gSpecialStartTagCharMask); // // And finally do the plain content characters. // These are all content characters that require NO special // handling. Exclude CR, LF, <, & and ], all of which either // are markup or require some sort of special case handling. // initOneTable(gXMLChars, gPlainContentCharMask); gTmpCharTable[chCR] &= ~gPlainContentCharMask; gTmpCharTable[chLF] &= ~gPlainContentCharMask; gTmpCharTable[chOpenAngle] &= ~gPlainContentCharMask; gTmpCharTable[chAmpersand] &= ~gPlainContentCharMask; gTmpCharTable[chCloseSquare] &= ~gPlainContentCharMask; // // Write it out to a temp file to be read back into this source later. // FILE* outFl = fopen("table.out", "wt+"); fprintf(outFl, "XMLByte XMLChar1_0::fgCharCharsTable1_0[0x10000] =\n{"); for (unsigned int index = 0; index <= 0xFFFF; index += 16) { fprintf(outFl , " , 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X\n" , (unsigned int)gTmpCharTable[index] , (unsigned int)gTmpCharTable[index+1] , (unsigned int)gTmpCharTable[index+2] , (unsigned int)gTmpCharTable[index+3] , (unsigned int)gTmpCharTable[index+4] , (unsigned int)gTmpCharTable[index+5] , (unsigned int)gTmpCharTable[index+6] , (unsigned int)gTmpCharTable[index+7] , (unsigned int)gTmpCharTable[index+8] , (unsigned int)gTmpCharTable[index+9] , (unsigned int)gTmpCharTable[index+10] , (unsigned int)gTmpCharTable[index+11] , (unsigned int)gTmpCharTable[index+12] , (unsigned int)gTmpCharTable[index+13] , (unsigned int)gTmpCharTable[index+14] , (unsigned int)gTmpCharTable[index+15]); } fprintf(outFl, "};\n"); fclose(outFl); } static void initCharFlagTable1_1() { memset(gTmpCharTable, 0, sizeof(gTmpCharTable)); // Do the init for each table. Do the non-special case ones first initOneTable(gXMLChars1_1, gXMLCharMask); initOneTable(gWhitespaceChars1_1, gWhitespaceCharMask); // // Name characters are special. A name is made up of a number of // different tables and some special case characters. // initOneTable(gNameChars1_1, gNameCharMask); // // Name characters are special. A name is made up of a number of // different tables and some special case characters. // initOneTable(gNameChars1_1, gNCNameCharMask); gTmpCharTable[chColon] &= ~gNCNameCharMask; // // Then do the first name char // initOneTable(gFirstNameChars1_1, gFirstNameCharMask); // // Control characters is treated differently in XML 1.1 // initOneTable(gControl_Chars1_1, gControlCharMask); // // And now do the very special case ones. These are bits that are // designed to sense special case characters in the most important // processing loops of the parser. They allow us to do a quick // check for a special case and get to the common case with minimal // overhead when it's not. Since the special case chars are a tiny // fraction of the chars, this is a good optimization. // // We do the special chars for the start tag processing, which // needs to look for things that indicate the end of the tag, quote // chars, etc... // gTmpCharTable[chNull] |= gSpecialStartTagCharMask; gTmpCharTable[chForwardSlash] |= gSpecialStartTagCharMask; gTmpCharTable[chCloseAngle] |= gSpecialStartTagCharMask; gTmpCharTable[chOpenAngle] |= gSpecialStartTagCharMask; gTmpCharTable[chSingleQuote] |= gSpecialStartTagCharMask; gTmpCharTable[chDoubleQuote] |= gSpecialStartTagCharMask; initOneTable(gWhitespaceChars1_1, gSpecialStartTagCharMask); // // And finally do the plain content characters. // These are all content characters that require NO special // handling. Exclude CR, LF, <, & and ], all of which either // are markup or require some sort of special case handling. // initOneTable(gXMLChars1_1, gPlainContentCharMask); gTmpCharTable[chCR] &= ~gPlainContentCharMask; gTmpCharTable[chLF] &= ~gPlainContentCharMask; gTmpCharTable[chOpenAngle] &= ~gPlainContentCharMask; gTmpCharTable[chAmpersand] &= ~gPlainContentCharMask; gTmpCharTable[chCloseSquare] &= ~gPlainContentCharMask; gTmpCharTable[chLineSeparator] &= ~gPlainContentCharMask; gTmpCharTable[chNEL] &= ~gPlainContentCharMask; // // Write it out to a temp file to be read back into this source later. // FILE* outFl = fopen("table1_1.out", "wt+"); fprintf(outFl, "XMLByte XMLChar1_1::fgCharCharsTable1_1[0x10000] =\n{"); for (unsigned int index = 0; index <= 0xFFFF; index += 16) { fprintf(outFl , " , 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X\n" , (unsigned int)gTmpCharTable[index] , (unsigned int)gTmpCharTable[index+1] , (unsigned int)gTmpCharTable[index+2] , (unsigned int)gTmpCharTable[index+3] , (unsigned int)gTmpCharTable[index+4] , (unsigned int)gTmpCharTable[index+5] , (unsigned int)gTmpCharTable[index+6] , (unsigned int)gTmpCharTable[index+7] , (unsigned int)gTmpCharTable[index+8] , (unsigned int)gTmpCharTable[index+9] , (unsigned int)gTmpCharTable[index+10] , (unsigned int)gTmpCharTable[index+11] , (unsigned int)gTmpCharTable[index+12] , (unsigned int)gTmpCharTable[index+13] , (unsigned int)gTmpCharTable[index+14] , (unsigned int)gTmpCharTable[index+15]); } fprintf(outFl, "};\n"); fclose(outFl); } class CharFlagKicker { public : CharFlagKicker() { initCharFlagTable(); initCharFlagTable1_1(); } private: // ----------------------------------------------------------------------- // Unimplemented methods. // ----------------------------------------------------------------------- CharFlagKicker(const CharFlagKicker&); CharFlagKicker& operator=(const CharFlagKicker&); }; static CharFlagKicker gKicker; #endif XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/XMLDateTime.cpp0000644000175000017500000015144511360344373020242 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLDateTime.cpp 932887 2010-04-11 13:04:59Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // // constants used to process raw data (fBuffer) // // [-]{CCYY-MM-DD}'T'{HH:MM:SS.MS}['Z'] // [{+|-}hh:mm'] // static const XMLCh DURATION_STARTER = chLatin_P; // 'P' static const XMLCh DURATION_Y = chLatin_Y; // 'Y' static const XMLCh DURATION_M = chLatin_M; // 'M' static const XMLCh DURATION_D = chLatin_D; // 'D' static const XMLCh DURATION_H = chLatin_H; // 'H' static const XMLCh DURATION_S = chLatin_S; // 'S' static const XMLCh DATE_SEPARATOR = chDash; // '-' static const XMLCh TIME_SEPARATOR = chColon; // ':' static const XMLCh TIMEZONE_SEPARATOR = chColon; // ':' static const XMLCh DATETIME_SEPARATOR = chLatin_T; // 'T' static const XMLCh MILISECOND_SEPARATOR = chPeriod; // '.' static const XMLCh UTC_STD_CHAR = chLatin_Z; // 'Z' static const XMLCh UTC_POS_CHAR = chPlus; // '+' static const XMLCh UTC_NEG_CHAR = chDash; // '-' static const XMLCh UTC_SET[] = {UTC_STD_CHAR //"Z+-" , UTC_POS_CHAR , UTC_NEG_CHAR , chNull}; static const XMLSize_t YMD_MIN_SIZE = 10; // CCYY-MM-DD static const XMLSize_t YMONTH_MIN_SIZE = 7; // CCYY_MM static const XMLSize_t TIME_MIN_SIZE = 8; // hh:mm:ss static const XMLSize_t TIMEZONE_SIZE = 5; // hh:mm static const XMLSize_t DAY_SIZE = 5; // ---DD //static const XMLSize_t MONTH_SIZE = 6; // --MM-- static const XMLSize_t MONTHDAY_SIZE = 7; // --MM-DD static const int NOT_FOUND = -1; //define constants to be used in assigning default values for //all date/time excluding duration static const int YEAR_DEFAULT = 2000; static const int MONTH_DEFAULT = 01; static const int DAY_DEFAULT = 15; // order-relation on duration is a partial order. The dates below are used to // for comparison of 2 durations, based on the fact that // duration x and y is x<=y iff s+x<=s+y // see 3.2.6 duration W3C schema datatype specs // // the dates are in format: {CCYY,MM,DD, H, S, M, MS, timezone} static const int DATETIMES[][XMLDateTime::TOTAL_SIZE] = { {1696, 9, 1, 0, 0, 0, 0, XMLDateTime::UTC_STD}, {1697, 2, 1, 0, 0, 0, 0, XMLDateTime::UTC_STD}, {1903, 3, 1, 0, 0, 0, 0, XMLDateTime::UTC_STD}, {1903, 7, 1, 0, 0, 0, 0, XMLDateTime::UTC_STD} }; // --------------------------------------------------------------------------- // local methods // --------------------------------------------------------------------------- static inline int fQuotient(int a, int b) { div_t div_result = div(a, b); return div_result.quot; } static inline int fQuotient(int temp, int low, int high) { return fQuotient(temp - low, high - low); } static inline int mod(int a, int b, int quotient) { return (a - quotient*b) ; } static inline int modulo (int temp, int low, int high) { //modulo(a - low, high - low) + low int a = temp - low; int b = high - low; return (mod (a, b, fQuotient(a, b)) + low) ; } static inline bool isLeapYear(int year) { return((year%4 == 0) && ((year%100 != 0) || (year%400 == 0))); } static int maxDayInMonthFor(int year, int month) { if ( month == 4 || month == 6 || month == 9 || month == 11 ) { return 30; } else if ( month==2 ) { if ( isLeapYear(year) ) return 29; else return 28; } else { return 31; } } // --------------------------------------------------------------------------- // static methods : for duration // --------------------------------------------------------------------------- /** * Compares 2 given durations. (refer to W3C Schema Datatypes "3.2.6 duration") * * 3.2.6.2 Order relation on duration * * In general, the order-relation on duration is a partial order since there is no * determinate relationship between certain durations such as one month (P1M) and 30 days (P30D). * The order-relation of two duration values x and y is x < y iff s+x < s+y for each qualified * dateTime s in the list below. * * These values for s cause the greatest deviations in the addition of dateTimes and durations * **/ int XMLDateTime::compare(const XMLDateTime* const pDate1 , const XMLDateTime* const pDate2 , bool strict) { //REVISIT: this is unoptimazed vs of comparing 2 durations // Algorithm is described in 3.2.6.2 W3C Schema Datatype specs // int resultA, resultB = INDETERMINATE; //try and see if the objects are equal if ( (resultA = compareOrder(pDate1, pDate2)) == EQUAL) return EQUAL; //long comparison algorithm is required XMLDateTime tempA(XMLPlatformUtils::fgMemoryManager), *pTempA = &tempA; XMLDateTime tempB(XMLPlatformUtils::fgMemoryManager), *pTempB = &tempB; addDuration(pTempA, pDate1, 0); addDuration(pTempB, pDate2, 0); resultA = compareOrder(pTempA, pTempB); if ( resultA == INDETERMINATE ) return INDETERMINATE; addDuration(pTempA, pDate1, 1); addDuration(pTempB, pDate2, 1); resultB = compareOrder(pTempA, pTempB); resultA = compareResult(resultA, resultB, strict); if ( resultA == INDETERMINATE ) return INDETERMINATE; addDuration(pTempA, pDate1, 2); addDuration(pTempB, pDate2, 2); resultB = compareOrder(pTempA, pTempB); resultA = compareResult(resultA, resultB, strict); if ( resultA == INDETERMINATE ) return INDETERMINATE; addDuration(pTempA, pDate1, 3); addDuration(pTempB, pDate2, 3); resultB = compareOrder(pTempA, pTempB); resultA = compareResult(resultA, resultB, strict); return resultA; } // // Form a new XMLDateTime with duration and baseDate array // Note: C++ Java // fNewDate duration // fDuration date // void XMLDateTime::addDuration(XMLDateTime* fNewDate , const XMLDateTime* const fDuration , int index) { //REVISIT: some code could be shared between normalize() and this method, // however is it worth moving it? The structures are different... // fNewDate->reset(); //add months (may be modified additionaly below) int temp = DATETIMES[index][Month] + fDuration->fValue[Month]; fNewDate->fValue[Month] = modulo(temp, 1, 13); int carry = fQuotient(temp, 1, 13); if (fNewDate->fValue[Month] <= 0) { fNewDate->fValue[Month]+= 12; carry--; } //add years (may be modified additionaly below) fNewDate->fValue[CentYear] = DATETIMES[index][CentYear] + fDuration->fValue[CentYear] + carry; //add seconds temp = DATETIMES[index][Second] + fDuration->fValue[Second]; carry = fQuotient (temp, 60); fNewDate->fValue[Second] = mod(temp, 60, carry); if (fNewDate->fValue[Second] < 0) { fNewDate->fValue[Second]+= 60; carry--; } //add minutes temp = DATETIMES[index][Minute] + fDuration->fValue[Minute] + carry; carry = fQuotient(temp, 60); fNewDate->fValue[Minute] = mod(temp, 60, carry); if (fNewDate->fValue[Minute] < 0) { fNewDate->fValue[Minute]+= 60; carry--; } //add hours temp = DATETIMES[index][Hour] + fDuration->fValue[Hour] + carry; carry = fQuotient(temp, 24); fNewDate->fValue[Hour] = mod(temp, 24, carry); if (fNewDate->fValue[Hour] < 0) { fNewDate->fValue[Hour]+= 24; carry--; } fNewDate->fValue[Day] = DATETIMES[index][Day] + fDuration->fValue[Day] + carry; while ( true ) { temp = maxDayInMonthFor(fNewDate->fValue[CentYear], fNewDate->fValue[Month]); if ( fNewDate->fValue[Day] < 1 ) { //original fNewDate was negative fNewDate->fValue[Day] += maxDayInMonthFor(fNewDate->fValue[CentYear], fNewDate->fValue[Month]-1); carry = -1; } else if ( fNewDate->fValue[Day] > temp ) { fNewDate->fValue[Day] -= temp; carry = 1; } else { break; } temp = fNewDate->fValue[Month] + carry; fNewDate->fValue[Month] = modulo(temp, 1, 13); if (fNewDate->fValue[Month] <= 0) { fNewDate->fValue[Month]+= 12; fNewDate->fValue[CentYear]--; } fNewDate->fValue[CentYear] += fQuotient(temp, 1, 13); } //fNewDate->fValue[utc] = UTC_STD_CHAR; fNewDate->fValue[utc] = UTC_STD; } int XMLDateTime::compareResult(int resultA , int resultB , bool strict) { if ( resultB == INDETERMINATE ) { return INDETERMINATE; } else if ( (resultA != resultB) && strict ) { return INDETERMINATE; } else if ( (resultA != resultB) && !strict ) { if ( (resultA != EQUAL) && (resultB != EQUAL) ) { return INDETERMINATE; } else { return (resultA != EQUAL)? resultA : resultB; } } return resultA; } // --------------------------------------------------------------------------- // static methods : for others // --------------------------------------------------------------------------- int XMLDateTime::compare(const XMLDateTime* const pDate1 , const XMLDateTime* const pDate2) { if (pDate1->fValue[utc] == pDate2->fValue[utc]) { return XMLDateTime::compareOrder(pDate1, pDate2); } int c1, c2; if ( pDate1->isNormalized()) { c1 = compareResult(pDate1, pDate2, false, UTC_POS); c2 = compareResult(pDate1, pDate2, false, UTC_NEG); return getRetVal(c1, c2); } else if ( pDate2->isNormalized()) { c1 = compareResult(pDate1, pDate2, true, UTC_POS); c2 = compareResult(pDate1, pDate2, true, UTC_NEG); return getRetVal(c1, c2); } return INDETERMINATE; } int XMLDateTime::compareResult(const XMLDateTime* const pDate1 , const XMLDateTime* const pDate2 , bool set2Left , int utc_type) { XMLDateTime tmpDate = (set2Left ? *pDate1 : *pDate2); tmpDate.fTimeZone[hh] = 14; tmpDate.fTimeZone[mm] = 0; tmpDate.fValue[utc] = utc_type; tmpDate.normalize(); return (set2Left? XMLDateTime::compareOrder(&tmpDate, pDate2) : XMLDateTime::compareOrder(pDate1, &tmpDate)); } int XMLDateTime::compareOrder(const XMLDateTime* const lValue , const XMLDateTime* const rValue) //, MemoryManager* const memMgr) { // // If any of the them is not normalized() yet, // we need to do something here. // XMLDateTime lTemp = *lValue; XMLDateTime rTemp = *rValue; lTemp.normalize(); rTemp.normalize(); for ( int i = 0 ; i < TOTAL_SIZE; i++ ) { if ( lTemp.fValue[i] < rTemp.fValue[i] ) { return LESS_THAN; } else if ( lTemp.fValue[i] > rTemp.fValue[i] ) { return GREATER_THAN; } } if ( lTemp.fHasTime) { if ( lTemp.fMilliSecond < rTemp.fMilliSecond ) { return LESS_THAN; } else if ( lTemp.fMilliSecond > rTemp.fMilliSecond ) { return GREATER_THAN; } } return EQUAL; } // --------------------------------------------------------------------------- // ctor and dtor // --------------------------------------------------------------------------- XMLDateTime::~XMLDateTime() { if (fBuffer) fMemoryManager->deallocate(fBuffer);//delete[] fBuffer; } XMLDateTime::XMLDateTime(MemoryManager* const manager) : fStart(0) , fEnd(0) , fBufferMaxLen(0) , fMilliSecond(0) , fHasTime(false) , fBuffer(0) , fMemoryManager(manager) { reset(); } XMLDateTime::XMLDateTime(const XMLCh* const aString, MemoryManager* const manager) : fStart(0) , fEnd(0) , fBufferMaxLen(0) , fMilliSecond(0) , fHasTime(false) , fBuffer(0) , fMemoryManager(manager) { setBuffer(aString); } // ----------------------------------------------------------------------- // Copy ctor and Assignment operators // ----------------------------------------------------------------------- XMLDateTime::XMLDateTime(const XMLDateTime &toCopy) : XMLNumber(toCopy) , fBufferMaxLen(0) , fBuffer(0) , fMemoryManager(toCopy.fMemoryManager) { copy(toCopy); } XMLDateTime& XMLDateTime::operator=(const XMLDateTime& rhs) { if (this == &rhs) return *this; copy(rhs); return *this; } // ----------------------------------------------------------------------- // Implementation of Abstract Interface // ----------------------------------------------------------------------- // // We may simply return the handle to fBuffer // XMLCh* XMLDateTime::getRawData() const { return fBuffer; } const XMLCh* XMLDateTime::getFormattedString() const { return getRawData(); } int XMLDateTime::getSign() const { return 0; } // --------------------------------------------------------------------------- // Parsers // --------------------------------------------------------------------------- // // [-]{CCYY-MM-DD}'T'{HH:MM:SS.MS}[TimeZone] // void XMLDateTime::parseDateTime() { if (!initParser()) ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_dt_invalid , fBuffer ? fBuffer : XMLUni::fgZeroLenString , fMemoryManager); getDate(); //fStart is supposed to point to 'T' if (fBuffer[fStart++] != DATETIME_SEPARATOR) ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_dt_missingT , fBuffer , fMemoryManager); getTime(); validateDateTime(); normalize(); fHasTime = true; } // // [-]{CCYY-MM-DD}[TimeZone] // void XMLDateTime::parseDate() { if (!initParser()) ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_date_invalid , fBuffer ? fBuffer : XMLUni::fgZeroLenString , fMemoryManager); getDate(); parseTimeZone(); validateDateTime(); normalize(); } void XMLDateTime::parseTime() { if (!initParser()) ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_time_invalid , fBuffer ? fBuffer : XMLUni::fgZeroLenString , fMemoryManager); // time initialize to default values fValue[CentYear]= YEAR_DEFAULT; fValue[Month] = MONTH_DEFAULT; fValue[Day] = DAY_DEFAULT; getTime(); validateDateTime(); normalize(); fHasTime = true; } // // {---DD}[TimeZone] // 01234 // void XMLDateTime::parseDay() { if (!initParser()) ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_gDay_invalid , fBuffer ? fBuffer : XMLUni::fgZeroLenString , fMemoryManager); if (fBuffer[0] != DATE_SEPARATOR || fBuffer[1] != DATE_SEPARATOR || fBuffer[2] != DATE_SEPARATOR ) { ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_gDay_invalid , fBuffer , fMemoryManager); } //initialize values fValue[CentYear] = YEAR_DEFAULT; fValue[Month] = MONTH_DEFAULT; fValue[Day] = parseInt(fStart+3, fStart+5); if ( DAY_SIZE < fEnd ) { int pos = XMLString::indexOf(UTC_SET, fBuffer[DAY_SIZE]); if (pos == -1 ) { ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_gDay_invalid , fBuffer , fMemoryManager); } else { fValue[utc] = pos+1; getTimeZone(DAY_SIZE); } } validateDateTime(); normalize(); } // // {--MM--}[TimeZone] // {--MM}[TimeZone] // 012345 // void XMLDateTime::parseMonth() { if (!initParser()) ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_gMth_invalid , fBuffer ? fBuffer : XMLUni::fgZeroLenString , fMemoryManager); if (fBuffer[0] != DATE_SEPARATOR || fBuffer[1] != DATE_SEPARATOR ) { ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_gMth_invalid , fBuffer , fMemoryManager); } //set constants fValue[CentYear] = YEAR_DEFAULT; fValue[Day] = DAY_DEFAULT; fValue[Month] = parseInt(2, 4); // REVISIT: allow both --MM and --MM-- now. // need to remove the following lines to disallow --MM-- // when the errata is officially in the rec. fStart = 4; if ( fEnd >= fStart+2 && fBuffer[fStart] == DATE_SEPARATOR && fBuffer[fStart+1] == DATE_SEPARATOR ) { fStart += 2; } // // parse TimeZone if any // if ( fStart < fEnd ) { int pos = XMLString::indexOf(UTC_SET, fBuffer[fStart]); if ( pos == NOT_FOUND ) { ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_gMth_invalid , fBuffer , fMemoryManager); } else { fValue[utc] = pos+1; getTimeZone(fStart); } } validateDateTime(); normalize(); } // //[-]{CCYY}[TimeZone] // 0 1234 // void XMLDateTime::parseYear() { if (!initParser()) ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_year_invalid , fBuffer ? fBuffer : XMLUni::fgZeroLenString , fMemoryManager); // skip the first '-' and search for timezone // int sign = findUTCSign((fBuffer[0] == chDash) ? 1 : 0); if (sign == NOT_FOUND) { fValue[CentYear] = parseIntYear(fEnd); } else { fValue[CentYear] = parseIntYear(sign); getTimeZone(sign); } //initialize values fValue[Month] = MONTH_DEFAULT; fValue[Day] = DAY_DEFAULT; //java is 1 validateDateTime(); normalize(); } // //{--MM-DD}[TimeZone] // 0123456 // void XMLDateTime::parseMonthDay() { if (!initParser()) ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_gMthDay_invalid , fBuffer ? fBuffer : XMLUni::fgZeroLenString , fMemoryManager); if (fBuffer[0] != DATE_SEPARATOR || fBuffer[1] != DATE_SEPARATOR || fBuffer[4] != DATE_SEPARATOR ) { ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_gMthDay_invalid , fBuffer , fMemoryManager); } //initialize fValue[CentYear] = YEAR_DEFAULT; fValue[Month] = parseInt(2, 4); fValue[Day] = parseInt(5, 7); if ( MONTHDAY_SIZE < fEnd ) { int pos = XMLString::indexOf(UTC_SET, fBuffer[MONTHDAY_SIZE]); if ( pos == NOT_FOUND ) { ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_gMthDay_invalid , fBuffer , fMemoryManager); } else { fValue[utc] = pos+1; getTimeZone(MONTHDAY_SIZE); } } validateDateTime(); normalize(); } void XMLDateTime::parseYearMonth() { if (!initParser()) ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_ym_invalid , fBuffer ? fBuffer : XMLUni::fgZeroLenString , fMemoryManager); // get date getYearMonth(); fValue[Day] = DAY_DEFAULT; parseTimeZone(); validateDateTime(); normalize(); } // //PnYn MnDTnH nMnS: -P1Y2M3DT10H30M // // [-]{'P'{[n'Y'][n'M'][n'D']['T'][n'H'][n'M'][n'S']}} // // Note: the n above shall be >= 0 // if no time element found, 'T' shall be absent // void XMLDateTime::parseDuration() { if (!initParser()) ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_dur_invalid , fBuffer ? fBuffer : XMLUni::fgZeroLenString , fMemoryManager); // must start with '-' or 'P' // XMLCh c = fBuffer[fStart++]; if ( (c != DURATION_STARTER) && (c != chDash) ) { ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_dur_Start_dashP , fBuffer , fMemoryManager); } // 'P' must ALWAYS be present in either case if ( (c == chDash) && (fBuffer[fStart++]!= DURATION_STARTER )) { ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_dur_noP , fBuffer , fMemoryManager); } // java code //date[utc]=(c=='-')?'-':0; //fValue[utc] = UTC_STD; fValue[utc] = (fBuffer[0] == chDash? UTC_NEG : UTC_STD); int negate = ( fBuffer[0] == chDash ? -1 : 1); // // No negative value is allowed after 'P' // // eg P-1234, invalid // if (indexOf(fStart, fEnd, chDash) != NOT_FOUND) { ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_dur_DashNotFirst , fBuffer , fMemoryManager); } //at least one number and designator must be seen after P bool designator = false; int endDate = indexOf(fStart, fEnd, DATETIME_SEPARATOR); if ( endDate == NOT_FOUND ) { endDate = (int)fEnd; // 'T' absent } //find 'Y' int end = indexOf(fStart, endDate, DURATION_Y); if ( end != NOT_FOUND ) { //scan year fValue[CentYear] = negate * parseInt(fStart, end); fStart = end+1; designator = true; } end = indexOf(fStart, endDate, DURATION_M); if ( end != NOT_FOUND ) { //scan month fValue[Month] = negate * parseInt(fStart, end); fStart = end+1; designator = true; } end = indexOf(fStart, endDate, DURATION_D); if ( end != NOT_FOUND ) { //scan day fValue[Day] = negate * parseInt(fStart,end); fStart = end+1; designator = true; } if ( (fEnd == XMLSize_t (endDate)) && // 'T' absent (fStart != fEnd) ) // something after Day { ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_dur_inv_b4T , fBuffer , fMemoryManager); } if ( fEnd != XMLSize_t (endDate) ) // 'T' present { //scan hours, minutes, seconds // // skip 'T' first end = indexOf(++fStart, fEnd, DURATION_H); if ( end != NOT_FOUND ) { //scan hours fValue[Hour] = negate * parseInt(fStart, end); fStart = end+1; designator = true; } end = indexOf(fStart, fEnd, DURATION_M); if ( end != NOT_FOUND ) { //scan min fValue[Minute] = negate * parseInt(fStart, end); fStart = end+1; designator = true; } end = indexOf(fStart, fEnd, DURATION_S); if ( end != NOT_FOUND ) { //scan seconds int mlsec = indexOf (fStart, end, MILISECOND_SEPARATOR); /*** * Schema Errata: E2-23 * at least one digit must follow the decimal point if it appears. * That is, the value of the seconds component must conform * to the following pattern: [0-9]+(.[0-9]+)? */ if ( mlsec != NOT_FOUND ) { /*** * make usure there is something after the '.' and before the end. */ if ( mlsec+1 == end ) { ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_dur_inv_seconds , fBuffer , fMemoryManager); } fValue[Second] = negate * parseInt(fStart, mlsec); fMilliSecond = negate * parseMiliSecond(mlsec+1, end); } else { fValue[Second] = negate * parseInt(fStart,end); } fStart = end+1; designator = true; } // no additional data should appear after last item // P1Y1M1DT is illigal value as well if ( (fStart != fEnd) || fBuffer[--fStart] == DATETIME_SEPARATOR ) { ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_dur_NoTimeAfterT , fBuffer , fMemoryManager); } } if ( !designator ) { ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_dur_NoElementAtAll , fBuffer , fMemoryManager); } } // --------------------------------------------------------------------------- // Scanners // --------------------------------------------------------------------------- // // [-]{CCYY-MM-DD} // // Note: CCYY could be more than 4 digits // Assuming fStart point to the beginning of the Date Section // fStart updated to point to the position right AFTER the second 'D' // Since the lenght of CCYY might be variable, we can't check format upfront // void XMLDateTime::getDate() { // Ensure enough chars in buffer if ( (fStart+YMD_MIN_SIZE) > fEnd) ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_date_incomplete , fBuffer , fMemoryManager); getYearMonth(); // Scan YearMonth and // fStart point to the next '-' if (fBuffer[fStart++] != DATE_SEPARATOR) { ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_date_invalid , fBuffer , fMemoryManager); //("CCYY-MM must be followed by '-' sign"); } fValue[Day] = parseInt(fStart, fStart+2); fStart += 2 ; //fStart points right after the Day return; } // // hh:mm:ss[.msssss]['Z'] // hh:mm:ss[.msssss][['+'|'-']hh:mm] // 012345678 // // Note: Assuming fStart point to the beginning of the Time Section // fStart updated to point to the position right AFTER the second 's' // or ms if any // void XMLDateTime::getTime() { // Ensure enough chars in buffer if ( (fStart+TIME_MIN_SIZE) > fEnd) ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_time_incomplete , fBuffer , fMemoryManager); //"Imcomplete Time Format" // check (fixed) format first if ((fBuffer[fStart + 2] != TIME_SEPARATOR) || (fBuffer[fStart + 5] != TIME_SEPARATOR) ) { ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_time_invalid , fBuffer , fMemoryManager); //("Error in parsing time" ); } // // get hours, minute and second // fValue[Hour] = parseInt(fStart + 0, fStart + 2); fValue[Minute] = parseInt(fStart + 3, fStart + 5); fValue[Second] = parseInt(fStart + 6, fStart + 8); fStart += 8; // to see if any ms and/or utc part after that if (fStart >= fEnd) return; //find UTC sign if any int sign = findUTCSign(fStart); //parse miliseconds int milisec = (fBuffer[fStart] == MILISECOND_SEPARATOR)? (int)fStart : NOT_FOUND; if ( milisec != NOT_FOUND ) { fStart++; // skip the '.' // make sure we have some thing between the '.' and fEnd if (fStart >= fEnd) { ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_ms_noDigit , fBuffer , fMemoryManager); //("ms shall be present once '.' is present" ); } if ( sign == NOT_FOUND ) { fMilliSecond = parseMiliSecond(fStart, fEnd); //get ms between '.' and fEnd fStart = fEnd; } else { fMilliSecond = parseMiliSecond(fStart, sign); //get ms between UTC sign and fEnd } } else if(sign == 0 || XMLSize_t (sign) != fStart) { // seconds has more than 2 digits ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_min_invalid , fBuffer , fMemoryManager); } //parse UTC time zone (hh:mm) if ( sign > 0 ) { getTimeZone(sign); } } // // [-]{CCYY-MM} // // Note: CCYY could be more than 4 digits // fStart updated to point AFTER the second 'M' (probably meet the fEnd) // void XMLDateTime::getYearMonth() { // Ensure enough chars in buffer if ( (fStart+YMONTH_MIN_SIZE) > fEnd) ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_ym_incomplete , fBuffer , fMemoryManager); //"Imcomplete YearMonth Format"; // skip the first leading '-' XMLSize_t start = ( fBuffer[0] == chDash ) ? fStart + 1 : fStart; // // search for year separator '-' // int yearSeparator = indexOf(start, fEnd, DATE_SEPARATOR); if ( yearSeparator == NOT_FOUND) ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_ym_invalid , fBuffer , fMemoryManager); //("Year separator is missing or misplaced"); fValue[CentYear] = parseIntYear(yearSeparator); fStart = yearSeparator + 1; //skip the '-' and point to the first M // //gonna check we have enough byte for month // if ((fStart + 2) > fEnd ) ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_ym_noMonth , fBuffer , fMemoryManager); //"no month in buffer" fValue[Month] = parseInt(fStart, yearSeparator + 3); fStart += 2; //fStart points right after the MONTH return; } void XMLDateTime::parseTimeZone() { //fStart points right after the date if ( fStart < fEnd ) { int pos = XMLString::indexOf(UTC_SET, fBuffer[fStart]); if (pos == NOT_FOUND) { ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_tz_noUTCsign , fBuffer , fMemoryManager); } else { fValue[utc] = pos+1; getTimeZone(fStart); } } return; } // // 'Z' // ['+'|'-']hh:mm // // Note: Assuming fStart points to the beginning of TimeZone section // fStart updated to meet fEnd // void XMLDateTime::getTimeZone(const XMLSize_t sign) { if ( fBuffer[sign] == UTC_STD_CHAR ) { if ((sign + 1) != fEnd ) { ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_tz_stuffAfterZ , fBuffer , fMemoryManager); //"Error in parsing time zone"); } return; } // // otherwise, it has to be this format // '[+|-]'hh:mm // 1 23456 7 // sign fEnd // if ( ( ( sign + TIMEZONE_SIZE + 1) != fEnd ) || ( fBuffer[sign + 3] != TIMEZONE_SEPARATOR ) ) { ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_tz_invalid , fBuffer , fMemoryManager); //("Error in parsing time zone"); } fTimeZone[hh] = parseInt(sign+1, sign+3); fTimeZone[mm] = parseInt(sign+4, fEnd); return; } // --------------------------------------------------------------------------- // Validator and normalizer // --------------------------------------------------------------------------- /** * If timezone present - normalize dateTime [E Adding durations to dateTimes] * * @param date CCYY-MM-DDThh:mm:ss+03 * @return CCYY-MM-DDThh:mm:ssZ */ void XMLDateTime::normalize() { if ((fValue[utc] == UTC_UNKNOWN) || (fValue[utc] == UTC_STD) ) return; int negate = (fValue[utc] == UTC_POS)? -1: 1; int temp; int carry; // we normalize a duration so could have 200M... //update months (may be modified additionaly below) temp = fValue[Month]; fValue[Month] = modulo(temp, 1, 13); carry = fQuotient(temp, 1, 13); if (fValue[Month] <= 0) { fValue[Month]+= 12; carry--; } //add years (may be modified additionaly below) fValue[CentYear] += carry; // add mins temp = fValue[Minute] + negate * fTimeZone[mm]; carry = fQuotient(temp, 60); fValue[Minute] = mod(temp, 60, carry); if (fValue[Minute] < 0) { fValue[Minute] += 60; carry--; } //add hours temp = fValue[Hour] + negate * fTimeZone[hh] + carry; carry = fQuotient(temp, 24); fValue[Hour] = mod(temp, 24, carry); if (fValue[Hour] < 0) { fValue[Hour] += 24; carry--; } fValue[Day] += carry; while (1) { temp = maxDayInMonthFor(fValue[CentYear], fValue[Month]); if (fValue[Day] < 1) { fValue[Day] += maxDayInMonthFor(fValue[CentYear], fValue[Month] - 1); carry = -1; } else if ( fValue[Day] > temp ) { fValue[Day] -= temp; carry = 1; } else { break; } temp = fValue[Month] + carry; fValue[Month] = modulo(temp, 1, 13); if (fValue[Month] <=0) { fValue[Month]+= 12; fValue[CentYear]--; } fValue[CentYear] += fQuotient(temp, 1, 13); } // set to normalized fValue[utc] = UTC_STD; return; } void XMLDateTime::validateDateTime() const { //REVISIT: should we throw an exception for not valid dates // or reporting an error message should be sufficient? if ( fValue[CentYear] == 0 ) { ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_year_zero , fBuffer , fMemoryManager); //"The year \"0000\" is an illegal year value"); } if ( fValue[Month] < 1 || fValue[Month] > 12 ) { ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_mth_invalid , fBuffer , fMemoryManager); //"The month must have values 1 to 12"); } //validate days if ( fValue[Day] > maxDayInMonthFor( fValue[CentYear], fValue[Month]) || fValue[Day] == 0 ) { XMLCh szMaxDay[3]; XMLString::binToText(maxDayInMonthFor( fValue[CentYear], fValue[Month]), szMaxDay, 3, 10, fMemoryManager); ThrowXMLwithMemMgr2(SchemaDateTimeException , XMLExcepts::DateTime_day_invalid , fBuffer , szMaxDay , fMemoryManager); //"The day must have values 1 to 31"); } //validate hours if ((fValue[Hour] < 0) || (fValue[Hour] > 24) || ((fValue[Hour] == 24) && ((fValue[Minute] !=0) || (fValue[Second] !=0) || (fMilliSecond !=0)))) { ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_hour_invalid , fBuffer , fMemoryManager); //("Hour must have values 0-23"); } //validate minutes if ( fValue[Minute] < 0 || fValue[Minute] > 59 ) { ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_min_invalid , fBuffer , fMemoryManager); //"Minute must have values 0-59"); } //validate seconds if ( fValue[Second] < 0 || fValue[Second] > 60 ) { ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_second_invalid , fBuffer , fMemoryManager); //"Second must have values 0-60"); } //validate time-zone hours if ( (abs(fTimeZone[hh]) > 14) || ((abs(fTimeZone[hh]) == 14) && (fTimeZone[mm] != 0)) ) { ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_tz_hh_invalid , fBuffer , fMemoryManager); //"Time zone should have range -14..+14"); } //validate time-zone minutes if ( abs(fTimeZone[mm]) > 59 ) { ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_min_invalid , fBuffer , fMemoryManager); //("Minute must have values 0-59"); } return; } // ----------------------------------------------------------------------- // locator and converter // ----------------------------------------------------------------------- int XMLDateTime::indexOf(const XMLSize_t start, const XMLSize_t end, const XMLCh ch) const { for ( XMLSize_t i = start; i < end; i++ ) if ( fBuffer[i] == ch ) return (int)i; return NOT_FOUND; } int XMLDateTime::findUTCSign (const XMLSize_t start) { int pos; for ( XMLSize_t index = start; index < fEnd; index++ ) { pos = XMLString::indexOf(UTC_SET, fBuffer[index]); if ( pos != NOT_FOUND) { fValue[utc] = pos+1; // refer to utcType, there is 1 diff return (int)index; } } return NOT_FOUND; } // // Note: // start: starting point in fBuffer // end: ending point in fBuffer (exclusive) // fStart NOT updated // int XMLDateTime::parseInt(const XMLSize_t start, const XMLSize_t end) const { unsigned int retVal = 0; for (XMLSize_t i=start; i < end; i++) { if (fBuffer[i] < chDigit_0 || fBuffer[i] > chDigit_9) ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_Inv_chars, fMemoryManager); retVal = (retVal * 10) + (unsigned int) (fBuffer[i] - chDigit_0); } return (int) retVal; } // // Note: // start: pointing to the first digit after the '.' // end: pointing to one position after the last digit // fStart NOT updated // double XMLDateTime::parseMiliSecond(const XMLSize_t start, const XMLSize_t end) const { double div = 10; double retval = 0; for (XMLSize_t i=start; i < end; i++) { if (fBuffer[i] < chDigit_0 || fBuffer[i] > chDigit_9) ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_Inv_chars, fMemoryManager); retval += (fBuffer[i] == chDigit_0) ? 0 : ((double) (fBuffer[i] - chDigit_0)/div); div *= 10; } // we don't check underflow occurs since // nothing we can do about it. return retval; } // // [-]CCYY // // Note: start from fStart // end (exclusive) // fStart NOT updated // int XMLDateTime::parseIntYear(const XMLSize_t end) const { // skip the first leading '-' XMLSize_t start = ( fBuffer[0] == chDash ) ? fStart + 1 : fStart; XMLSize_t length = end - start; if (length < 4) { ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_year_tooShort , fBuffer , fMemoryManager); //"Year must have 'CCYY' format"); } else if (length > 4 && fBuffer[start] == chDigit_0) { ThrowXMLwithMemMgr1(SchemaDateTimeException , XMLExcepts::DateTime_year_leadingZero , fBuffer , fMemoryManager); //"Leading zeros are required if the year value would otherwise have fewer than four digits; // otherwise they are forbidden"); } bool negative = (fBuffer[0] == chDash); int yearVal = parseInt((negative ? 1 : 0), end); return ( negative ? (-1) * yearVal : yearVal ); } /*** * E2-41 * * 3.2.7.2 Canonical representation * * Except for trailing fractional zero digits in the seconds representation, * '24:00:00' time representations, and timezone (for timezoned values), * the mapping from literals to values is one-to-one. Where there is more * than one possible representation, the canonical representation is as follows: * redundant trailing zero digits in fractional-second literals are prohibited. * An hour representation of '24' is prohibited. Timezoned values are canonically * represented by appending 'Z' to the nontimezoned representation. (All * timezoned dateTime values are UTC.) * * .'24:00:00' -> '00:00:00' * .milisecond: trailing zeros removed * .'Z' * ***/ XMLCh* XMLDateTime::getDateTimeCanonicalRepresentation(MemoryManager* const memMgr) const { XMLCh *miliStartPtr, *miliEndPtr; searchMiliSeconds(miliStartPtr, miliEndPtr); XMLSize_t miliSecondsLen = miliEndPtr - miliStartPtr; int utcSize = (fValue[utc] == UTC_UNKNOWN) ? 0 : 1; MemoryManager* toUse = memMgr? memMgr : fMemoryManager; XMLCh* retBuf = (XMLCh*) toUse->allocate( (21 + miliSecondsLen + utcSize + 1) * sizeof(XMLCh)); XMLCh* retPtr = retBuf; // (-?) cc+yy-mm-dd'T'hh:mm:ss'Z' ('.'s+)? // 2+ 8 1 8 1 // int additionalLen = fillYearString(retPtr, fValue[CentYear]); if(additionalLen != 0) { // very bad luck; have to resize the buffer... XMLCh *tmpBuf = (XMLCh*) toUse->allocate( (additionalLen+21+miliSecondsLen +2) * sizeof(XMLCh)); XMLString::moveChars(tmpBuf, retBuf, 4+additionalLen); retPtr = tmpBuf+(retPtr-retBuf); toUse->deallocate(retBuf); retBuf = tmpBuf; } *retPtr++ = DATE_SEPARATOR; fillString(retPtr, fValue[Month], 2); *retPtr++ = DATE_SEPARATOR; fillString(retPtr, fValue[Day], 2); *retPtr++ = DATETIME_SEPARATOR; fillString(retPtr, fValue[Hour], 2); if (fValue[Hour] == 24) { *(retPtr - 2) = chDigit_0; *(retPtr - 1) = chDigit_0; } *retPtr++ = TIME_SEPARATOR; fillString(retPtr, fValue[Minute], 2); *retPtr++ = TIME_SEPARATOR; fillString(retPtr, fValue[Second], 2); if (miliSecondsLen) { *retPtr++ = chPeriod; XMLString::copyNString(retPtr, miliStartPtr, miliSecondsLen); retPtr += miliSecondsLen; } if (utcSize) *retPtr++ = UTC_STD_CHAR; *retPtr = chNull; return retBuf; } /*** * E2-41 * * 3.2.9.2 Canonical representation * * Given a member of the date value space, the date * portion of the canonical representation (the entire * representation for nontimezoned values, and all but * the timezone representation for timezoned values) * is always the date portion of the dateTime canonical * representation of the interval midpoint (the * dateTime representation, truncated on the right * to eliminate 'T' and all following characters). * For timezoned values, append the canonical * representation of the recoverable timezone. * ***/ XMLCh* XMLDateTime::getDateCanonicalRepresentation(MemoryManager* const memMgr) const { /* * Case Date Actual Value Canonical Value * 1 yyyy-mm-dd yyyy-mm-dd yyyy-mm-dd * 2 yyyy-mm-ddZ yyyy-mm-ddT00:00Z yyyy-mm-ddZ * 3 yyyy-mm-dd+00:00 yyyy-mm-ddT00:00Z yyyy-mm-ddZ * 4 yyyy-mm-dd+00:01 YYYY-MM-DCT23:59Z yyyy-mm-dd+00:01 * 5 yyyy-mm-dd+12:00 YYYY-MM-DCT12:00Z yyyy-mm-dd+12:00 * 6 yyyy-mm-dd+12:01 YYYY-MM-DCT11:59Z YYYY-MM-DC-11:59 * 7 yyyy-mm-dd+14:00 YYYY-MM-DCT10:00Z YYYY-MM-DC-10:00 * 8 yyyy-mm-dd-00:00 yyyy-mm-ddT00:00Z yyyy-mm-ddZ * 9 yyyy-mm-dd-00:01 yyyy-mm-ddT00:01Z yyyy-mm-dd-00:01 * 11 yyyy-mm-dd-11:59 yyyy-mm-ddT11:59Z YYYY-MM-DD-11:59 * 10 yyyy-mm-dd-12:00 yyyy-mm-ddT12:00Z YYYY-MM-DD+12:00 * 12 yyyy-mm-dd-14:00 yyyy-mm-ddT14:00Z YYYY-MM-DD+10:00 */ int utcSize = (fValue[utc] == UTC_UNKNOWN) ? 0 : 1; // YYYY-MM-DD + chNull // 1234567890 + 1 int memLength = 10 + 1 + utcSize; if (fTimeZone[hh] != 0 || fTimeZone[mm] != 0) { // YYYY-MM-DD+HH:MM (utcSize will be 1 so drop that) // 1234567890123456 memLength += 5; // 6 - 1 for utcSize } MemoryManager* toUse = memMgr? memMgr : fMemoryManager; XMLCh* retBuf = (XMLCh*) toUse->allocate( (memLength) * sizeof(XMLCh)); XMLCh* retPtr = retBuf; if (fValue[Hour] < 12) { int additionalLen = fillYearString(retPtr, fValue[CentYear]); if (additionalLen != 0) { // very bad luck; have to resize the buffer... XMLCh *tmpBuf = (XMLCh*) toUse->allocate( (additionalLen + memLength ) * sizeof(XMLCh)); XMLString::moveChars(tmpBuf, retBuf, 4+additionalLen); retPtr = tmpBuf+(retPtr-retBuf); toUse->deallocate(retBuf); retBuf = tmpBuf; } *retPtr++ = DATE_SEPARATOR; fillString(retPtr, fValue[Month], 2); *retPtr++ = DATE_SEPARATOR; fillString(retPtr, fValue[Day], 2); if (utcSize) { if (fTimeZone[hh] != 0 || fTimeZone[mm] != 0) { *retPtr++ = UTC_NEG_CHAR; fillString(retPtr, fValue[Hour], 2); *retPtr++ = TIME_SEPARATOR; fillString(retPtr, fValue[Minute], 2); } else { *retPtr++ = UTC_STD_CHAR; } } *retPtr = chNull; } else { /* * Need to reconvert things to get a recoverable time zone between * +12:00 and -11:59 */ int carry; int minute; int hour; int day; int month; int year; if (fValue[Minute] == 0) { minute = 0; carry = 0; } else { minute = 60 - fValue[Minute]; carry = 1; } hour = 24 - fValue[Hour] - carry; day = fValue[Day] + 1; month = fValue[Month]; year = fValue[CentYear]; while (1) { int temp = maxDayInMonthFor(year, month); if (day < 1) { day += maxDayInMonthFor(year, month - 1); carry = -1; } else if (day > temp) { day -= temp; carry = 1; } else { break; } temp = month + carry; month = modulo(temp, 1, 13); if (month <= 0) { month+= 12; year--; } year += fQuotient(temp, 1, 13); } int additionalLen = fillYearString(retPtr, year); if (additionalLen != 0) { // very bad luck; have to resize the buffer... XMLCh *tmpBuf = (XMLCh*) toUse->allocate( (additionalLen + memLength ) * sizeof(XMLCh)); XMLString::moveChars(tmpBuf, retBuf, 4+additionalLen); retPtr = tmpBuf+(retPtr-retBuf); toUse->deallocate(retBuf); retBuf = tmpBuf; } *retPtr++ = DATE_SEPARATOR; fillString(retPtr, month, 2); *retPtr++ = DATE_SEPARATOR; fillString(retPtr, day, 2); *retPtr++ = UTC_POS_CHAR; fillString(retPtr, hour, 2); *retPtr++ = TIME_SEPARATOR; fillString(retPtr, minute, 2); *retPtr = chNull; } return retBuf; } /*** * 3.2.8 time * * . either the time zone must be omitted or, * if present, the time zone must be Coordinated Universal Time (UTC) indicated by a "Z". * * . Additionally, the canonical representation for midnight is 00:00:00. * ***/ XMLCh* XMLDateTime::getTimeCanonicalRepresentation(MemoryManager* const memMgr) const { XMLCh *miliStartPtr, *miliEndPtr; searchMiliSeconds(miliStartPtr, miliEndPtr); XMLSize_t miliSecondsLen = miliEndPtr - miliStartPtr; int utcSize = (fValue[utc] == UTC_UNKNOWN) ? 0 : 1; MemoryManager* toUse = memMgr? memMgr : fMemoryManager; XMLCh* retBuf = (XMLCh*) toUse->allocate( (10 + miliSecondsLen + utcSize + 1) * sizeof(XMLCh)); XMLCh* retPtr = retBuf; // 'hh:mm:ss'Z' ('.'s+)? // 8 1 // fillString(retPtr, fValue[Hour], 2); if (fValue[Hour] == 24) { *(retPtr - 2) = chDigit_0; *(retPtr - 1) = chDigit_0; } *retPtr++ = TIME_SEPARATOR; fillString(retPtr, fValue[Minute], 2); *retPtr++ = TIME_SEPARATOR; fillString(retPtr, fValue[Second], 2); if (miliSecondsLen) { *retPtr++ = chPeriod; XMLString::copyNString(retPtr, miliStartPtr, miliSecondsLen); retPtr += miliSecondsLen; } if (utcSize) *retPtr++ = UTC_STD_CHAR; *retPtr = chNull; return retBuf; } void XMLDateTime::fillString(XMLCh*& ptr, int value, XMLSize_t expLen) const { XMLCh strBuffer[16]; assert(expLen < 16); XMLString::binToText(value, strBuffer, expLen, 10, fMemoryManager); XMLSize_t actualLen = XMLString::stringLen(strBuffer); XMLSize_t i; //append leading zeros for (i = 0; i < expLen - actualLen; i++) { *ptr++ = chDigit_0; } for (i = 0; i < actualLen; i++) { *ptr++ = strBuffer[i]; } } int XMLDateTime::fillYearString(XMLCh*& ptr, int value) const { XMLCh strBuffer[16]; // let's hope we get no years of 15 digits... XMLString::binToText(value, strBuffer, 15, 10, fMemoryManager); XMLSize_t actualLen = XMLString::stringLen(strBuffer); // don't forget that years can be negative... XMLSize_t negativeYear = 0; if(strBuffer[0] == chDash) { *ptr++ = strBuffer[0]; negativeYear = 1; } XMLSize_t i; //append leading zeros if(actualLen+negativeYear < 4) for (i = 0; i < 4 - actualLen+negativeYear; i++) *ptr++ = chDigit_0; for (i = negativeYear; i < actualLen; i++) *ptr++ = strBuffer[i]; if(actualLen > 4) return (int)actualLen-4; return 0; } /*** * * .check if the rawData has the mili second component * .capture the substring * ***/ void XMLDateTime::searchMiliSeconds(XMLCh*& miliStartPtr, XMLCh*& miliEndPtr) const { miliStartPtr = miliEndPtr = 0; int milisec = XMLString::indexOf(fBuffer, MILISECOND_SEPARATOR); if (milisec == -1) return; miliStartPtr = fBuffer + milisec + 1; miliEndPtr = miliStartPtr; while (*miliEndPtr) { if ((*miliEndPtr < chDigit_0) || (*miliEndPtr > chDigit_9)) break; miliEndPtr++; } //remove trailing zeros while( *(miliEndPtr - 1) == chDigit_0) miliEndPtr--; return; } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(XMLDateTime) void XMLDateTime::serialize(XSerializeEngine& serEng) { //REVISIT: may not need to call base since it does nothing XMLNumber::serialize(serEng); int i = 0; if (serEng.isStoring()) { for (i = 0; i < TOTAL_SIZE; i++) { serEng<>fValue[i]; } for (i = 0; i < TIMEZONE_ARRAYSIZE; i++) { serEng>>fTimeZone[i]; } serEng>>(unsigned long&)fStart; serEng>>(unsigned long&)fEnd; XMLSize_t dataLen = 0; serEng.readString(fBuffer, fBufferMaxLen, dataLen ,XSerializeEngine::toReadBufferLen); } } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/KeyRefPair.c0000644000175000017500000000601710523643534017621 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * $Id: KeyRefPair.c 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Include // --------------------------------------------------------------------------- #if defined(XERCES_TMPLSINC) #include #endif XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // KeyRefPair: Constructors and Destructor // --------------------------------------------------------------------------- template KeyRefPair::KeyRefPair() { } template KeyRefPair:: KeyRefPair(TKey* key, TValue* value) : fKey(key) , fValue(value) { } template KeyRefPair:: KeyRefPair(const KeyRefPair* toCopy) : fKey(toCopy->fKey) , fValue(toCopy->fValue) { } template KeyRefPair:: KeyRefPair(const KeyRefPair& toCopy) : fKey(toCopy.fKey) , fValue(toCopy.fValue) { } template KeyRefPair::~KeyRefPair() { } // --------------------------------------------------------------------------- // KeyRefPair: Getters // --------------------------------------------------------------------------- template const TKey* KeyRefPair::getKey() const { return fKey; } template TKey* KeyRefPair::getKey() { return fKey; } template const TValue* KeyRefPair::getValue() const { return fValue; } template TValue* KeyRefPair::getValue() { return fValue; } // --------------------------------------------------------------------------- // KeyRefPair: Setters // --------------------------------------------------------------------------- template TKey* KeyRefPair::setKey(TKey* newKey) { fKey = newKey; return fKey; } template TValue* KeyRefPair::setValue(TValue* newValue) { fValue = newValue; return fValue; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/OutOfMemoryException.hpp0000644000175000017500000000600311033362104022250 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: OutOfMemoryException.hpp 673960 2008-07-04 08:50:12Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_OUT_OF_MEMORY_EXCEPTION_HPP) #define XERCESC_INCLUDE_GUARD_OUT_OF_MEMORY_EXCEPTION_HPP #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN static const XMLCh gDefOutOfMemoryErrMsg[] = { chLatin_O, chLatin_u, chLatin_t, chLatin_O , chLatin_f, chLatin_M, chLatin_e, chLatin_m , chLatin_o, chLatin_r, chLatin_y, chNull }; class XMLUTIL_EXPORT OutOfMemoryException : public XMemory { public: OutOfMemoryException(); ~OutOfMemoryException(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- XMLExcepts::Codes getCode() const; const XMLCh* getMessage() const; const XMLCh* getType() const; const char* getSrcFile() const; XMLFileLoc getSrcLine() const; OutOfMemoryException(const OutOfMemoryException& toCopy); OutOfMemoryException& operator=(const OutOfMemoryException& toAssign); }; // constructors/destructors... inline OutOfMemoryException::OutOfMemoryException() {} inline OutOfMemoryException::~OutOfMemoryException() {} inline OutOfMemoryException::OutOfMemoryException(const OutOfMemoryException& other) : XMemory(other) {} inline OutOfMemoryException& OutOfMemoryException::operator=(const OutOfMemoryException&) { return *this; } // --------------------------------------------------------------------------- // OutOfMemoryException: Getter methods // --------------------------------------------------------------------------- inline XMLExcepts::Codes OutOfMemoryException::getCode() const { return XMLExcepts::Out_Of_Memory; } inline const XMLCh* OutOfMemoryException::getMessage() const { return gDefOutOfMemoryErrMsg; } inline const XMLCh* OutOfMemoryException::getType() const { return gDefOutOfMemoryErrMsg; } inline const char* OutOfMemoryException::getSrcFile() const { return ""; } inline XMLFileLoc OutOfMemoryException::getSrcLine() const { return 0; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/PlatformUtils.hpp0000644000175000017500000010004311360344373020763 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: PlatformUtils.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_PLATFORMUTILS_HPP) #define XERCESC_INCLUDE_GUARD_PLATFORMUTILS_HPP #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN class XMLMsgLoader; class XMLNetAccessor; class XMLTransService; class MemoryManager; class XMLMutex; // // For internal use only // // This class provides a simple abstract API via which lazily evaluated // data can be cleaned up. // class XMLUTIL_EXPORT XMLDeleter { public : virtual ~XMLDeleter(); protected : XMLDeleter(); private : XMLDeleter(const XMLDeleter&); XMLDeleter& operator=(const XMLDeleter&); }; /** * Utilities that must be implemented in a platform-specific way. * * This class contains methods that must be implemented in a platform * specific manner. The actual implementations of these methods are * available in the per-platform files inside src/util/Platforms * . */ class XMLUTIL_EXPORT XMLPlatformUtils { public : /** @name Public Static Data */ //@{ /** The network accessor * * This is provided by the per-platform driver, so each platform can * choose what actual implementation it wants to use. The object must * be dynamically allocated. * * Note that you may optionally, if your platform driver does not * install a network accessor, set it manually from your client code * after calling Initialize(). This works because this object is * not required during initialization, and only comes into play during * actual XML parsing. */ static XMLNetAccessor* fgNetAccessor; /** The transcoding service. * * This is provided by the per platform driver, so each platform can * choose what implementation it wants to use. When the platform * independent initialization code needs to get a transcoding service * object, it will call makeTransService() to ask the * per-platform code to create one. Only one transcoding service * object is requested per-process, so it is shared and synchronized * among parser instances within that process. */ static XMLTransService* fgTransService; #ifdef OS390 static XMLTransService* fgTransService2; #endif /** The Panic Handler * * This is the application provided panic handler. */ static PanicHandler* fgUserPanicHandler; /** The Panic Handler * * This is the default panic handler. */ static PanicHandler* fgDefaultPanicHandler; /** The configurable memory manager * * This is the pluggable memory manager. If it is not provided by an * application, a default implementation is used. */ static MemoryManager* fgMemoryManager; static XMLFileMgr* fgFileMgr; static XMLMutexMgr* fgMutexMgr; /** Global mutex for fast or infrequent operations. * * Use this mutex only for fast (e.g., increment an integer, * check flag, etc.) or infrequent (e.g., once-off initialization) * operations. */ static XMLMutex* fgAtomicMutex; static bool fgXMLChBigEndian; static bool fgSSE2ok; //@} /** @name Initialization and Panic methods */ //@{ /** Perform per-process parser initialization * * Initialization must be called first in any client code. * * @param locale The locale to use for messages. * * The locale is set iff the Initialize() is invoked for the very first time, * to ensure that each and every message loader, in the process space, share * the same locale. * * All subsequent invocations of Initialize(), with a different locale, have * no effect on the message loaders, either instantiated, or to be instantiated. * * To set to a different locale, client application needs to Terminate() (or * multiple Terminate() in the case where multiple Initialize() have been invoked * before), followed by Initialize(new_locale). * * The default locale is "en_US". * * @param nlsHome User specified location where MsgLoader retrieves error message files. * the discussion above with regard to locale, applies to nlsHome as well. * * @param panicHandler Application's panic handler, application owns this handler. * Application shall make sure that the plugged panic handler persists * through the call to XMLPlatformUtils::Terminate(). * * @param memoryManager Plugged-in memory manager which is owned by the * application. Applications must make sure that the * plugged-in memory manager persist through the call to * XMLPlatformUtils::Terminate() */ static void Initialize(const char* const locale = XMLUni::fgXercescDefaultLocale , const char* const nlsHome = 0 , PanicHandler* const panicHandler = 0 , MemoryManager* const memoryManager = 0); /** Perform per-process parser initialization * * Initialization must be called first in any client code. * * @param initialDOMHeapAllocSize The size of the first memory block * allocated by the DOMDocument heap. Note that changing this parameter * may result in poor performance and/or excessive memory usage. For * the default value refer to dom/impl/DOMDocumentImpl.cpp. * * @param maxDOMHeapAllocSize The maximum size of the memory block * allocated by the DOMDocument heap. As the document grows, the * allocated by the heap memory blocks grow from initialDOMHeapAllocSize * to maxDOMHeapAllocSize. Note that changing this parameter may result * in poor performance and/or excessive memory usage. For the default * value refer to dom/impl/DOMDocumentImpl.cpp. * * @param maxDOMSubAllocationSize The maximum size of the memory block * requested that is handled by the DOMDocument heap. A request for a * larger block is handled directly by the memory manager. Note that * changing this parameter may result in poor performance and/or * excessive memory usage. For the default value refer to * dom/impl/DOMDocumentImpl.cpp. * * @param locale The locale to use for messages. * * The locale is set iff the Initialize() is invoked for the very first time, * to ensure that each and every message loader, in the process space, share * the same locale. * * All subsequent invocations of Initialize(), with a different locale, have * no effect on the message loaders, either instantiated, or to be instantiated. * * To set to a different locale, client application needs to Terminate() (or * multiple Terminate() in the case where multiple Initialize() have been invoked * before), followed by Initialize(new_locale). * * The default locale is "en_US". * * @param nlsHome User specified location where MsgLoader retrieves error message files. * the discussion above with regard to locale, applies to nlsHome as well. * * @param panicHandler Application's panic handler, application owns this handler. * Application shall make sure that the plugged panic handler persists * through the call to XMLPlatformUtils::Terminate(). * * @param memoryManager Plugged-in memory manager which is owned by the * application. Applications must make sure that the plugged-in memory * manager persist through the call to XMLPlatformUtils::Terminate() */ static void Initialize(XMLSize_t initialDOMHeapAllocSize , XMLSize_t maxDOMHeapAllocSize , XMLSize_t maxDOMSubAllocationSize , const char* const locale = XMLUni::fgXercescDefaultLocale , const char* const nlsHome = 0 , PanicHandler* const panicHandler = 0 , MemoryManager* const memoryManager = 0); /** Perform per-process parser termination * * The termination call is currently optional, to aid those dynamically * loading the parser to clean up before exit, or to avoid spurious * reports from leak detectors. */ static void Terminate(); /** The panic mechanism. * * If, during initialization, we cannot even get far enough along * to get transcoding up or get message loading working, we call * this method.

    * * Each platform can implement it however they want. This method will * delegate the panic handling to a user specified panic handler or * in the absence of it, the default panic handler. * * In case the default panic handler does not support a particular * platform, the platform specific panic handling shall be implemented * here

    . * * @param reason The enumeration that defines the cause of the failure */ static void panic ( const PanicHandler::PanicReasons reason ); //@} /** @name File Methods */ //@{ /** Make a new file object appropriate for the platform. * * @param manager The MemoryManager to use to allocate objects */ static XMLFileMgr* makeFileMgr(MemoryManager* const manager); /** Get the current file position * * This must be implemented by the per-platform driver, which should * use local file services to determine the current position within * the passed file. * * Since the file API provided here only reads, if the host platform * supports separate read/write positions, only the read position is * of any interest, and hence should be the one returned. * * @param theFile The file handle * @param manager The MemoryManager to use to allocate objects */ static XMLFilePos curFilePos(FileHandle theFile , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); /** Closes the file handle * * This must be implemented by the per-platform driver, which should * use local file services to close the passed file handle, and to * destroy the passed file handle and any allocated data or system * resources it contains. * * @param theFile The file handle to close * @param manager The MemoryManager to use to allocate objects */ static void closeFile(FileHandle theFile , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); /** Returns the file size * * This must be implemented by the per-platform driver, which should * use local file services to determine the current size of the file * represented by the passed handle. * * @param theFile The file handle whose size you want * @param manager The MemoryManager to use to allocate objects * @return Returns the size of the file in bytes */ static XMLFilePos fileSize(FileHandle theFile , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); /** Opens the file * * This must be implemented by the per-platform driver, which should * use local file services to open passed file. If it fails, a * null handle pointer should be returned. * * @param fileName The string containing the name of the file * @param manager The MemoryManager to use to allocate objects * @return The file handle of the opened file */ static FileHandle openFile(const char* const fileName , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); /** Opens a named file * * This must be implemented by the per-platform driver, which should * use local file services to open the passed file. If it fails, a * null handle pointer should be returned. * * @param fileName The string containing the name of the file * @param manager The MemoryManager to use to allocate objects * @return The file handle of the opened file */ static FileHandle openFile(const XMLCh* const fileName , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); /** Open a named file to write * * This must be implemented by the per-platform driver, which should * use local file services to open passed file. If it fails, a * null handle pointer should be returned. * * @param fileName The string containing the name of the file * @param manager The MemoryManager to use to allocate objects * @return The file handle of the opened file */ static FileHandle openFileToWrite(const char* const fileName , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); /** Open a named file to write * * This must be implemented by the per-platform driver, which should * use local file services to open the passed file. If it fails, a * null handle pointer should be returned. * * @param fileName The string containing the name of the file * @param manager The MemoryManager to use to allocate objects * @return The file handle of the opened file */ static FileHandle openFileToWrite(const XMLCh* const fileName , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); /** Opens the standard input as a file * * This must be implemented by the per-platform driver, which should * use local file services to open a handle to the standard input. * It should be a copy of the standard input handle, since it will * be closed later! * * @param manager The MemoryManager to use to allocate objects * @return The file handle of the standard input stream */ static FileHandle openStdInHandle(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); /** Reads the file buffer * * This must be implemented by the per-platform driver, which should * use local file services to read up to 'toRead' bytes of data from * the passed file, and return those bytes in the 'toFill' buffer. It * is not an error not to read the requested number of bytes. When the * end of file is reached, zero should be returned. * * @param theFile The file handle to be read from. * @param toRead The maximum number of byte to read from the current * position * @param toFill The byte buffer to fill * @param manager The MemoryManager to use to allocate objects * * @return Returns the number of bytes read from the stream or file */ static XMLSize_t readFileBuffer ( FileHandle theFile , const XMLSize_t toRead , XMLByte* const toFill , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /** Writes the buffer to the file * * This must be implemented by the per-platform driver, which should * use local file services to write up to 'toWrite' bytes of data to * the passed file. Unless exception raised by local file services, * 'toWrite' bytes of data is to be written to the passed file. * * @param theFile The file handle to be written to. * @param toWrite The maximum number of byte to write from the current * position * @param toFlush The byte buffer to flush * @param manager The MemoryManager to use to allocate objects * @return void */ static void writeBufferToFile ( FileHandle const theFile , XMLSize_t toWrite , const XMLByte* const toFlush , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /** Resets the file handle * * This must be implemented by the per-platform driver which will use * local file services to reset the file position to the start of the * the file. * * @param theFile The file handle that you want to reset * @param manager The MemoryManager to use to allocate objects */ static void resetFile(FileHandle theFile , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); //@} /** @name File System Methods */ //@{ /** Gets the full path from a relative path * * This must be implemented by the per-platform driver. It should * complete a relative path using the 'current directory', or whatever * the local equivalent of a current directory is. If the passed * source path is actually fully qualified, then a straight copy of it * will be returned. * * @param srcPath The path of the file for which you want the full path * * @param manager Pointer to the memory manager to be used to * allocate objects. * * @return Returns the fully qualified path of the file name including * the file name. This is dyanmically allocated and must be * deleted by the caller when its no longer needed! The memory * returned will beallocated using the static memory manager, if * user do not supply a memory manager. Users then need to make * sure to use either the default or user specific memory manager * to deallocate the memory. */ static XMLCh* getFullPath ( const XMLCh* const srcPath , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /** Gets the current working directory * * This must be implemented by the per-platform driver. It returns * the current working directory is. * @param manager The MemoryManager to use to allocate objects * @return Returns the current working directory. * This is dyanmically allocated and must be deleted * by the caller when its no longer needed! The memory returned * will be allocated using the static memory manager, if users * do not supply a memory manager. Users then need to make sure * to use either the default or user specific memory manager to * deallocate the memory. */ static XMLCh* getCurrentDirectory ( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /** Check if a character is a slash * * This must be implemented by the per-platform driver. * * @param c the character to be examined * * @return true if the character examined is a slash * false otherwise */ static inline bool isAnySlash(XMLCh c); /** Remove occurrences of the pair of dot slash * * To remove the sequence, dot slash if it is part of the sequence, * slash dot slash. * * @param srcPath The path for which you want to remove the dot slash sequence. * @param manager The MemoryManager to use to allocate objects * @return */ static void removeDotSlash(XMLCh* const srcPath , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); /** Remove occurrences of the dot dot slash * * To remove the sequence, slash dot dot slash and its preceding path segment * if and only if the preceding path segment is not slash dot dot slash. * * @param srcPath The path for which you want to remove the slash dot * dot slash sequence and its preceding path segment. * @param manager The MemoryManager to use to allocate objects * @return */ static void removeDotDotSlash(XMLCh* const srcPath , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); /** Determines if a path is relative or absolute * * This must be implemented by the per-platform driver, which should * determine whether the passed path is relative or not. The concept * of relative and absolute might be... well relative on different * platforms. But, as long as the determination is made consistently * and in coordination with the weavePaths() method, it should work * for any platform. * * @param toCheck The file name which you want to check * @param manager The MemoryManager to use to allocate objects * @return Returns true if the filename appears to be relative */ static bool isRelative(const XMLCh* const toCheck , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /** Utility to join two paths * * This must be implemented by the per-platform driver, and should * weave the relative path part together with the base part and return * a new path that represents this combination. * * If the relative part turns out to be fully qualified, it will be * returned as is. If it is not, then it will be woven onto the * passed base path, by removing one path component for each leading * "../" (or whatever is the equivalent in the local system) in the * relative path. * * @param basePath The string containing the base path * @param relativePath The string containing the relative path * @param manager The MemoryManager to use to allocate objects * @return Returns a string containing the 'woven' path. It should * be dynamically allocated and becomes the responsibility of the * caller to delete. */ static XMLCh* weavePaths ( const XMLCh* const basePath , const XMLCh* const relativePath , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); //@} /** @name Timing Methods */ //@{ /** Gets the system time in milliseconds * * This must be implemented by the per-platform driver, which should * use local services to return the current value of a running * millisecond timer. Note that the value returned is only as accurate * as the millisecond time of the underlying host system. * * @return Returns the system time as an unsigned long */ static unsigned long getCurrentMillis(); //@} /** @name Mutex Methods */ //@{ /** Factory method for creating MutexMgr object. * * This factory method creates a mutexmgr that will be used * on the particular platform. * * @param manager The MemoryManager to use to allocate objects */ static XMLMutexMgr* makeMutexMgr(MemoryManager* const manager); /** Closes a mutex handle * * Each per-platform driver must implement this. Only it knows what * the actual content of the passed mutex handle is. * * @param mtxHandle The mutex handle that you want to close * @param manager The MemoryManager used to allocate the object */ static void closeMutex(void* const mtxHandle, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); /** Locks a mutex handle * * Each per-platform driver must implement this. Only it knows what * the actual content of the passed mutex handle is. * * @param mtxHandle The mutex handle that you want to lock */ static void lockMutex(void* const mtxHandle); /** Make a new mutex * * Each per-platform driver must implement this. Only it knows what * the actual content of the passed mutex handle is. The returned * handle pointer will be eventually passed to closeMutex() which is * also implemented by the platform driver. * * @param manager The MemoryManager to use to allocate objects */ static void* makeMutex(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); /** Unlocks a mutex * * Each per-platform driver must implement this. Only it knows what * the actual content of the passed mutex handle is. * * Note that, since the underlying system synchronization services * are used, Xerces cannot guarantee that lock/unlock operations are * correctly enforced on a per-thread basis or that incorrect nesting * of lock/unlock operations will be caught. * * @param mtxHandle The mutex handle that you want to unlock */ static void unlockMutex(void* const mtxHandle); //@} /** @name External Message Support */ //@{ /** Loads the message set from among the available domains * * The returned object must be dynamically allocated and the caller * becomes responsible for cleaning it up. * * @param msgDomain The message domain which you want to load */ static XMLMsgLoader* loadMsgSet(const XMLCh* const msgDomain); //@} /** @name NEL Character Handling */ //@{ /** * This function enables the recognition of NEL(0x85) char and LSEP (0x2028) as newline chars * which is disabled by default. * It is only called once per process. Once it is set, any subsequent calls * will result in exception being thrown. * * Note: 1. Turning this option on will make the parser non compliant to XML 1.0. * 2. This option has no effect to document conforming to XML 1.1 compliant, * which always recognize these two chars (0x85 and 0x2028) as newline characters. * */ static void recognizeNEL(bool state , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); /** * Return the value of fgNEL flag. */ static bool isNELRecognized(); //@} /** @name Strict IANA Encoding Checking */ //@{ /** * This function enables/disables strict IANA encoding names checking. * * The strict checking is disabled by default. * * @param state If true, a strict IANA encoding name check is performed, * otherwise, no checking. * */ static void strictIANAEncoding(const bool state); /** * Returns whether a strict IANA encoding name check is enabled or * disabled. */ static bool isStrictIANAEncoding(); //@} /** * Aligns the specified pointer per platform block allocation * requirements. * * The results of this function may be altered by defining * XML_PLATFORM_NEW_BLOCK_ALIGNMENT. */ static inline XMLSize_t alignPointerForNewBlockAllocation(XMLSize_t ptrSize); private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XMLPlatformUtils(); /** @name Private static methods */ //@{ /** Loads a message set from the available domains * * @param msgDomain The message domain containing the message to be * loaded */ static XMLMsgLoader* loadAMsgSet(const XMLCh* const msgDomain); /** Creates a net accessor object. * * Each per-platform driver must implement this method. However, * having a Net Accessor is optional and this method can return a * null pointer if remote access via HTTP and FTP URLs is not required. * * @return An object derived from XMLNetAccessor. It must be dynamically * allocated, since it will be deleted later. */ static XMLNetAccessor* makeNetAccessor(); /** Creates a Transcoding service * * Each per-platform driver must implement this method and return some * derivative of the XMLTransService class. This object serves as the * transcoder factory for this process. The object must be dynamically * allocated and the caller is responsible for cleaning it up. * * @return A dynamically allocated object of some class derived from * the XMLTransService class. */ static XMLTransService* makeTransService(); /** Search for sequence, slash dot dot slash * * @param srcPath the path to search * * @return the position of the first occurrence of slash dot dot slash * -1 if no such sequence is found */ static int searchSlashDotDotSlash(XMLCh* const srcPath); //@} /** @name Private static methods */ //@{ /** * Indicates whether the memory manager was supplied by the user * or not. Users own the memory manager, and if none is supplied, * Xerces uses a default one that it owns and is responsible for * deleting in Terminate(). */ static bool fgMemMgrAdopted; //@} }; MakeXMLException(XMLPlatformUtilsException, XMLUTIL_EXPORT) // --------------------------------------------------------------------------- // XMLPlatformUtils: alignPointerForNewBlockAllocation // --------------------------------------------------------------------------- // Calculate alignment required by platform for a new // block allocation. We use this in our custom allocators // to ensure that returned blocks are properly aligned. // Note that, although this will take a pointer and return the position // at which it should be placed for correct alignment, in our code // we normally use XMLSize_t parameters to discover what the alignment // of header blocks should be. Thus, if this is to be // used for the former purpose, to make compilers happy // some casting will be necessary - neilg. // // Note: XML_PLATFORM_NEW_BLOCK_ALIGNMENT may be specified on a // per-architecture basis to dictate the alignment requirements // of the architecture. In the absense of this specification, // this routine guesses at the correct alignment value. // // A XML_PLATFORM_NEW_BLOCK_ALIGNMENT value of zero is illegal. // If a platform requires absolutely no alignment, a value // of 1 should be specified ("align pointers on 1 byte boundaries"). // inline XMLSize_t XMLPlatformUtils::alignPointerForNewBlockAllocation(XMLSize_t ptrSize) { // Macro XML_PLATFORM_NEW_BLOCK_ALIGNMENT may be defined // as needed to dictate alignment requirements on a // per-architecture basis. In the absense of that we // take an educated guess. #ifdef XML_PLATFORM_NEW_BLOCK_ALIGNMENT static const XMLSize_t alignment = XML_PLATFORM_NEW_BLOCK_ALIGNMENT; #else static const XMLSize_t alignment = (sizeof(void*) >= sizeof(double)) ? sizeof(void*) : sizeof(double); #endif // Calculate current alignment of pointer XMLSize_t current = ptrSize % alignment; // Adjust pointer alignment as needed return (current == 0) ? ptrSize : (ptrSize + alignment - current); } // --------------------------------------------------------------------------- // XMLDeleter: Public Destructor // --------------------------------------------------------------------------- inline XMLDeleter::~XMLDeleter() { } // --------------------------------------------------------------------------- // XMLDeleter: Hidden constructors and operators // --------------------------------------------------------------------------- inline XMLDeleter::XMLDeleter() { } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/Mutexes.cpp0000644000175000017500000000462311134075672017614 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: Mutexes.cpp 734985 2009-01-16 12:21:14Z johns $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // XMLMutex: Constructors and Destructor // --------------------------------------------------------------------------- XMLMutex::XMLMutex(MemoryManager* const manager) : fHandle(0), fManager(manager) { // Ask the per-platform driver to make us a mutex fHandle = XMLPlatformUtils::makeMutex(manager); } XMLMutex::~XMLMutex() { if (fHandle) { XMLPlatformUtils::closeMutex(fHandle, fManager); fHandle = 0; } } // --------------------------------------------------------------------------- // XMLMutex: Lock control methods // --------------------------------------------------------------------------- void XMLMutex::lock() { XMLPlatformUtils::lockMutex(fHandle); } void XMLMutex::unlock() { XMLPlatformUtils::unlockMutex(fHandle); } // --------------------------------------------------------------------------- // XMLMutexLock: Constructors and Destructor // --------------------------------------------------------------------------- XMLMutexLock::XMLMutexLock(XMLMutex* const toLock) : fToLock(toLock) { fToLock->lock(); } XMLMutexLock::~XMLMutexLock() { fToLock->unlock(); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/UTFDataFormatException.hpp0000644000175000017500000000227210606722647022451 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: UTFDataFormatException.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_UTFDATAFORMATEXCEPTION_HPP) #define XERCESC_INCLUDE_GUARD_UTFDATAFORMATEXCEPTION_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN MakeXMLException(UTFDataFormatException, XMLUTIL_EXPORT) XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/InvalidCastException.hpp0000644000175000017500000000226110606722647022247 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: InvalidCastException.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_INVALIDCASTEXCEPTION_HPP) #define XERCESC_INCLUDE_GUARD_INVALIDCASTEXCEPTION_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN MakeXMLException(InvalidCastException, XMLUTIL_EXPORT) XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/TransService.hpp0000644000175000017500000006131111360344373020572 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: TransService.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_TRANSSERVICE_HPP) #define XERCESC_INCLUDE_GUARD_TRANSSERVICE_HPP #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // Forward references //class XMLPlatformUtils; class XMLLCPTranscoder; class XMLTranscoder; class ENameMap; // // This class is an abstract base class which are used to abstract the // transcoding services that Xerces uses. The parser's actual transcoding // needs are small so it is desirable to allow different implementations // to be provided. // // The transcoding service has to provide a couple of required string // and character operations, but its most important service is the creation // of transcoder objects. There are two types of transcoders, which are // discussed below in the XMLTranscoder class' description. // class XMLUTIL_EXPORT XMLTransService : public XMemory { public : // ----------------------------------------------------------------------- // Class specific types // ----------------------------------------------------------------------- enum Codes { Ok , UnsupportedEncoding , InternalFailure , SupportFilesNotFound }; struct TransRec { XMLCh intCh; XMLByte extCh; }; // ----------------------------------------------------------------------- // Public constructors and destructor // ----------------------------------------------------------------------- virtual ~XMLTransService(); // ----------------------------------------------------------------------- // Non-virtual API // ----------------------------------------------------------------------- XMLTranscoder* makeNewTranscoderFor ( const XMLCh* const encodingName , XMLTransService::Codes& resValue , const XMLSize_t blockSize , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); XMLTranscoder* makeNewTranscoderFor ( const char* const encodingName , XMLTransService::Codes& resValue , const XMLSize_t blockSize , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); XMLTranscoder* makeNewTranscoderFor ( XMLRecognizer::Encodings encodingEnum , XMLTransService::Codes& resValue , const XMLSize_t blockSize , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); // ----------------------------------------------------------------------- // The virtual transcoding service API // ----------------------------------------------------------------------- virtual int compareIString ( const XMLCh* const comp1 , const XMLCh* const comp2 ) = 0; virtual int compareNIString ( const XMLCh* const comp1 , const XMLCh* const comp2 , const XMLSize_t maxChars ) = 0; virtual const XMLCh* getId() const = 0; // ----------------------------------------------------------------------- // Create a new transcoder for the local code page. // // @param manager The memory manager to use. // ----------------------------------------------------------------------- virtual XMLLCPTranscoder* makeNewLCPTranscoder(MemoryManager* manager) = 0; virtual bool supportsSrcOfs() const = 0; virtual void upperCase(XMLCh* const toUpperCase) = 0; virtual void lowerCase(XMLCh* const toLowerCase) = 0; // ----------------------------------------------------------------------- // Allow users to add their own encodings to the intrinsic mapping // table // Usage: // XMLTransService::addEncoding ( // gMyEncodingNameString // , new ENameMapFor(gMyEncodingNameString) // ); // ----------------------------------------------------------------------- static void addEncoding(const XMLCh* const encoding, ENameMap* const ownMapping); protected : // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- XMLTransService(); // ----------------------------------------------------------------------- // Protected virtual methods. // ----------------------------------------------------------------------- #ifdef OS390 friend class Uniconv390TransService; #endif virtual XMLTranscoder* makeNewXMLTranscoder ( const XMLCh* const encodingName , XMLTransService::Codes& resValue , const XMLSize_t blockSize , MemoryManager* const manager ) = 0; // ----------------------------------------------------------------------- // Protected init method for platform utils to call // ----------------------------------------------------------------------- friend class XMLPlatformUtils; virtual void initTransService(); // ----------------------------------------------------------------------- // protected static members // gMappings // This is a hash table of ENameMap objects. It is created and filled // in when the platform init calls our initTransService() method. // // gMappingsRecognizer // This is an array of ENameMap objects, predefined for those // already recognized by XMLRecognizer::Encodings. // static RefHashTableOf* gMappings; static RefVectorOf* gMappingsRecognizer; private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XMLTransService(const XMLTransService&); XMLTransService& operator=(const XMLTransService&); // ----------------------------------------------------------------------- // Hidden method to enable/disable strict IANA encoding check // Caller: XMLPlatformUtils // ----------------------------------------------------------------------- void strictIANAEncoding(const bool newState); bool isStrictIANAEncoding(); friend class XMLInitializer; }; /** * XMLTranscoder is for transcoding non-local code * page encodings, i.e. named encodings. These are used internally * by the scanner to internalize raw XML into the internal Unicode * format, and by writer classes to convert that internal Unicode * format (which comes out of the parser) back out to a format that * the receiving client code wants to use. */ class XMLUTIL_EXPORT XMLTranscoder : public XMemory { public : /** * This enum is used by the transcodeTo() method * to indicate how to react to unrepresentable characters. The * transcodeFrom() method always works the * same. It will consider any invalid data to be an error and * throw. */ enum UnRepOpts { UnRep_Throw /**< Throw an exception */ , UnRep_RepChar /**< Use the replacement char */ }; /** @name Destructor. */ //@{ /** * Destructor for XMLTranscoder * */ virtual ~XMLTranscoder(); //@} /** @name The virtual transcoding interface */ //@{ /** Converts from the encoding of the service to the internal XMLCh* encoding * * @param srcData the source buffer to be transcoded * @param srcCount number of bytes in the source buffer * @param toFill the destination buffer * @param maxChars the max number of characters in the destination buffer * @param bytesEaten after transcoding, this will hold the number of bytes * that were processed from the source buffer * @param charSizes an array which must be at least as big as maxChars * into which will be inserted values that indicate how many * bytes from the input went into each XMLCh that was created * into toFill. Since many encodings use variable numbers of * byte per character, this provides a means to find out what * bytes in the input went into making a particular output * UTF-16 character. * @return Returns the number of chars put into the target buffer */ virtual XMLSize_t transcodeFrom ( const XMLByte* const srcData , const XMLSize_t srcCount , XMLCh* const toFill , const XMLSize_t maxChars , XMLSize_t& bytesEaten , unsigned char* const charSizes ) = 0; /** Converts from the internal XMLCh* encoding to the encoding of the service * * @param srcData the source buffer to be transcoded * @param srcCount number of characters in the source buffer * @param toFill the destination buffer * @param maxBytes the max number of bytes in the destination buffer * @param charsEaten after transcoding, this will hold the number of chars * that were processed from the source buffer * @param options options to pass to the transcoder that explain how to * respond to an unrepresentable character * @return Returns the number of chars put into the target buffer */ virtual XMLSize_t transcodeTo ( const XMLCh* const srcData , const XMLSize_t srcCount , XMLByte* const toFill , const XMLSize_t maxBytes , XMLSize_t& charsEaten , const UnRepOpts options ) = 0; /** Query whether the transcoder can handle a given character * * @param toCheck the character code point to check */ virtual bool canTranscodeTo ( const unsigned int toCheck ) = 0; //@} /** @name Getter methods */ //@{ /** Get the internal block size * * @return The block size indicated in the constructor. */ XMLSize_t getBlockSize() const; /** Get the encoding name * * @return the name of the encoding that this * XMLTranscoder object is for */ const XMLCh* getEncodingName() const; //@} /** @name Getter methods*/ //@{ /** Get the plugged-in memory manager * * This method returns the plugged-in memory manager user for dynamic * memory allocation/deallocation. * * @return the plugged-in memory manager */ MemoryManager* getMemoryManager() const; //@} protected : // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- XMLTranscoder ( const XMLCh* const encodingName , const XMLSize_t blockSize , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); // ----------------------------------------------------------------------- // Protected helper methods // ----------------------------------------------------------------------- private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XMLTranscoder(const XMLTranscoder&); XMLTranscoder& operator=(const XMLTranscoder&); // ----------------------------------------------------------------------- // Private data members // // fBlockSize // This is the block size indicated in the constructor. // // fEncodingName // This is the name of the encoding this encoder is for. All basic // XML transcoder's are for named encodings. // ----------------------------------------------------------------------- XMLSize_t fBlockSize; XMLCh* fEncodingName; MemoryManager* fMemoryManager; }; // // This class is a specialized transcoder that only transcodes between // the internal XMLCh format and the local code page. It is specialized // for the very common job of translating data from the client app's // native code page to the internal format and vice versa. // class XMLUTIL_EXPORT XMLLCPTranscoder : public XMemory { public : // ----------------------------------------------------------------------- // Public constructors and destructor // ----------------------------------------------------------------------- virtual ~XMLLCPTranscoder(); // ----------------------------------------------------------------------- // The virtual transcoder API // // NOTE: All these APIs don't include null terminator characters in // their parameters. So calcRequiredSize() returns the number // of actual chars, not including the null. maxBytes and maxChars // parameters refer to actual chars, not including the null so // its assumed that the buffer is physically one char or byte // larger. // ----------------------------------------------------------------------- // ----------------------------------------------------------------------- // The 'normal' way to transcode a XMLCh-string from/to local string // representation // // NOTE: Both methods return a string allocated via the MemoryManager. // It is the responsibility of the calling environment to // release this string after use. // ----------------------------------------------------------------------- virtual char* transcode(const XMLCh* const toTranscode, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0; virtual XMLCh* transcode(const char* const toTranscode, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0; // ----------------------------------------------------------------------- // DEPRECATED old transcode interface // ----------------------------------------------------------------------- virtual XMLSize_t calcRequiredSize(const char* const srcText , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0; virtual XMLSize_t calcRequiredSize(const XMLCh* const srcText , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0; virtual bool transcode ( const char* const toTranscode , XMLCh* const toFill , const XMLSize_t maxChars , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ) = 0; virtual bool transcode ( const XMLCh* const toTranscode , char* const toFill , const XMLSize_t maxBytes , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ) = 0; protected : // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- XMLLCPTranscoder(); private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XMLLCPTranscoder(const XMLLCPTranscoder&); XMLLCPTranscoder& operator=(const XMLLCPTranscoder&); }; // // This class can be used to transcode to a target encoding. It manages the // memory allocated for the transcode in an exception safe manner, automatically // deleting it when the class goes out of scope. // class XMLUTIL_EXPORT TranscodeToStr { public: // ----------------------------------------------------------------------- // Public constructors and destructor // ----------------------------------------------------------------------- /** Converts from the internal XMLCh* encoding to the specified encoding * * @param in the null terminated source buffer to be transcoded * @param encoding the name of the encoding to transcode to * @param manager the memory manager to use */ TranscodeToStr(const XMLCh *in, const char *encoding, MemoryManager *manager = XMLPlatformUtils::fgMemoryManager); /** Converts from the internal XMLCh* encoding to the specified encoding * * @param in the source buffer to be transcoded * @param length the length of the source buffer * @param encoding the name of the encoding to transcode to * @param manager the memory manager to use */ TranscodeToStr(const XMLCh *in, XMLSize_t length, const char *encoding, MemoryManager *manager = XMLPlatformUtils::fgMemoryManager); /** Converts from the internal XMLCh* encoding to the specified encoding * * @param in the null terminated source buffer to be transcoded * @param trans the transcoder to use * @param manager the memory manager to use */ TranscodeToStr(const XMLCh *in, XMLTranscoder* trans, MemoryManager *manager = XMLPlatformUtils::fgMemoryManager); /** Converts from the internal XMLCh* encoding to the specified encoding * * @param in the source buffer to be transcoded * @param length the length of the source buffer * @param trans the transcoder to use * @param manager the memory manager to use */ TranscodeToStr(const XMLCh *in, XMLSize_t length, XMLTranscoder* trans, MemoryManager *manager = XMLPlatformUtils::fgMemoryManager); ~TranscodeToStr(); /** @name Getter methods */ //@{ /** Returns the transcoded, null terminated string * @return the transcoded string */ const XMLByte *str() const; /** Returns the transcoded, null terminated string - adopting * the memory allocated to it from the TranscodeToStr object * @return the transcoded string */ XMLByte *adopt(); /** Returns the length of the transcoded string in bytes. The length * does not include the null terminator. * @return the length of the transcoded string in bytes */ XMLSize_t length () const; //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- TranscodeToStr(const TranscodeToStr &); TranscodeToStr &operator=(const TranscodeToStr &); // ----------------------------------------------------------------------- // Private helper methods // ----------------------------------------------------------------------- void transcode(const XMLCh *in, XMLSize_t len, XMLTranscoder* trans); // ----------------------------------------------------------------------- // Private data members // // fString // The transcoded string // // fBytesWritten // The length of the transcoded string in bytes // ----------------------------------------------------------------------- XMLByte *fString; XMLSize_t fBytesWritten; MemoryManager *fMemoryManager; }; // // This class can be used to transcode from a source encoding. It manages the // memory allocated for the transcode in an exception safe manner, automatically // deleting it when the class goes out of scope. // class XMLUTIL_EXPORT TranscodeFromStr { public: // ----------------------------------------------------------------------- // Public constructors and destructor // ----------------------------------------------------------------------- /** Converts from the specified encoding to the internal XMLCh* encoding * * @param data the source buffer to be transcoded * @param length the length of the source buffer * @param encoding the name of the encoding to transcode to * @param manager the memory manager to use */ TranscodeFromStr(const XMLByte *data, XMLSize_t length, const char *encoding, MemoryManager *manager = XMLPlatformUtils::fgMemoryManager); /** Converts from the specified encoding to the internal XMLCh* encoding * * @param data the source buffer to be transcoded * @param length the length of the source buffer * @param trans the transcoder to use * @param manager the memory manager to use */ TranscodeFromStr(const XMLByte *data, XMLSize_t length, XMLTranscoder *trans, MemoryManager *manager = XMLPlatformUtils::fgMemoryManager); ~TranscodeFromStr(); /** @name Getter methods */ //@{ /** Returns the transcoded, null terminated string * @return the transcoded string */ const XMLCh *str() const; /** Returns the transcoded, null terminated string - adopting * the memory allocated to it from the TranscodeFromStr object * @return the transcoded string */ XMLCh *adopt(); /** Returns the length of the transcoded string in characters. The length * does not include the null terminator. * @return the length of the transcoded string in characters */ XMLSize_t length() const; //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- TranscodeFromStr(const TranscodeFromStr &); TranscodeFromStr &operator=(const TranscodeFromStr &); // ----------------------------------------------------------------------- // Private helper methods // ----------------------------------------------------------------------- void transcode(const XMLByte *in, XMLSize_t length, XMLTranscoder *trans); // ----------------------------------------------------------------------- // Private data members // // fString // The transcoded string // // fBytesWritten // The length of the transcoded string in characters // ----------------------------------------------------------------------- XMLCh *fString; XMLSize_t fCharsWritten; MemoryManager *fMemoryManager; }; // --------------------------------------------------------------------------- // XMLTranscoder: Getter methods // --------------------------------------------------------------------------- inline MemoryManager* XMLTranscoder::getMemoryManager() const { return fMemoryManager; } // --------------------------------------------------------------------------- // XMLTranscoder: Protected helper methods // --------------------------------------------------------------------------- inline XMLSize_t XMLTranscoder::getBlockSize() const { return fBlockSize; } inline const XMLCh* XMLTranscoder::getEncodingName() const { return fEncodingName; } // --------------------------------------------------------------------------- // TranscodeToStr: Getter methods // --------------------------------------------------------------------------- inline const XMLByte *TranscodeToStr::str() const { return fString; } inline XMLByte *TranscodeToStr::adopt() { XMLByte *tmp = fString; fString = 0; return tmp; } inline XMLSize_t TranscodeToStr::length () const { return fBytesWritten; } // --------------------------------------------------------------------------- // TranscodeFromStr: Getter methods // --------------------------------------------------------------------------- inline const XMLCh *TranscodeFromStr::str() const { return fString; } inline XMLCh *TranscodeFromStr::adopt() { XMLCh *tmp = fString; fString = 0; return tmp; } inline XMLSize_t TranscodeFromStr::length() const { return fCharsWritten; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/CountedPointer.c0000644000175000017500000000547110523643534020565 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: CountedPointer.c 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #if defined(XERCES_TMPLSINC) #include #endif XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // CountedPointerTo: Constructors and Destructor // --------------------------------------------------------------------------- template CountedPointerTo:: CountedPointerTo(const CountedPointerTo& toCopy) : fPtr(toCopy.fPtr) { if (fPtr) fPtr->addRef(); } template CountedPointerTo::CountedPointerTo(T* p) : fPtr(p) { if (fPtr) fPtr->addRef(); } template CountedPointerTo::~CountedPointerTo() { if (fPtr) fPtr->removeRef(); } // --------------------------------------------------------------------------- // CountedPointerTo: Operators // --------------------------------------------------------------------------- template CountedPointerTo& CountedPointerTo::operator=(const CountedPointerTo& other) { if (this == &other) return *this; if (other.fPtr) other.fPtr->addRef(); if (fPtr) fPtr->removeRef(); fPtr = other.fPtr; return *this; } template CountedPointerTo::operator T*() { return fPtr; } template const T* CountedPointerTo::operator->() const { return fPtr; } template T* CountedPointerTo::operator->() { return fPtr; } template const T& CountedPointerTo::operator*() const { if (!fPtr) ThrowXMLwithMemMgr(NullPointerException, XMLExcepts::CPtr_PointerIsZero, 0); return *fPtr; } template T& CountedPointerTo::operator*() { if (!fPtr) ThrowXMLwithMemMgr(NullPointerException, XMLExcepts::CPtr_PointerIsZero, 0); return *fPtr; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/MutexManagers/0000755000175000017500000000000011363617260020230 5ustar borisborisxerces-c-3.1.1/src/xercesc/util/MutexManagers/PosixMutexMgr.cpp0000644000175000017500000000534210523643534023533 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: PosixMutexMgr.cpp 471747 2006-11-06 14:31:56Z amassari $ */ // on some platforms, THREAD_MUTEX_RECURSIVE is defined only if _GNU_SOURCE is defined #ifndef _GNU_SOURCE #define _GNU_SOURCE #endif #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // Wrap up the mutex with XMemory class PosixMutexWrap : public XMemory { public: pthread_mutex_t m; }; PosixMutexMgr::PosixMutexMgr() { } PosixMutexMgr::~PosixMutexMgr() { } XMLMutexHandle PosixMutexMgr::create(MemoryManager* const manager) { PosixMutexWrap* mutex = new (manager) PosixMutexWrap; pthread_mutexattr_t attr; pthread_mutexattr_init(&attr); pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); if (pthread_mutex_init(&mutex->m, &attr)) XMLPlatformUtils::panic(PanicHandler::Panic_MutexErr); pthread_mutexattr_destroy(&attr); return (void*)(mutex); } void PosixMutexMgr::destroy(XMLMutexHandle mtx, MemoryManager* const manager) { PosixMutexWrap* mutex = (PosixMutexWrap*)(mtx); if (mutex != NULL) { if (pthread_mutex_destroy(&mutex->m)) { ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::Mutex_CouldNotDestroy, manager); } delete mutex; } } void PosixMutexMgr::lock(XMLMutexHandle mtx) { PosixMutexWrap* mutex = (PosixMutexWrap*)(mtx); if (mutex != NULL) { if (pthread_mutex_lock(&mutex->m)) XMLPlatformUtils::panic(PanicHandler::Panic_MutexErr); } } void PosixMutexMgr::unlock(XMLMutexHandle mtx) { PosixMutexWrap* mutex = (PosixMutexWrap*)(mtx); if (mutex != NULL) { if (pthread_mutex_unlock(&mutex->m)) XMLPlatformUtils::panic(PanicHandler::Panic_MutexErr); } } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/MutexManagers/WindowsMutexMgr.hpp0000644000175000017500000000276210606722647024100 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: WindowsMutexMgr.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_WINDOWSMUTEXMGR_HPP) #define XERCESC_INCLUDE_GUARD_WINDOWSMUTEXMGR_HPP #include XERCES_CPP_NAMESPACE_BEGIN /* The mutex manager to use on MS Windows platforms */ class WindowsMutexMgr : public XMLMutexMgr { public: WindowsMutexMgr(); virtual ~WindowsMutexMgr(); // Mutex operations virtual XMLMutexHandle create(MemoryManager* const manager); virtual void destroy(XMLMutexHandle mtx, MemoryManager* const manager); virtual void lock(XMLMutexHandle mtx); virtual void unlock(XMLMutexHandle mtx); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/MutexManagers/WindowsMutexMgr.cpp0000644000175000017500000000333110523643534024057 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: WindowsMutexMgr.cpp 471747 2006-11-06 14:31:56Z amassari $ */ #include #include #include XERCES_CPP_NAMESPACE_BEGIN WindowsMutexMgr::WindowsMutexMgr() { } WindowsMutexMgr::~WindowsMutexMgr() { } XMLMutexHandle WindowsMutexMgr::create(MemoryManager* const manager) { CRITICAL_SECTION* newCS=(CRITICAL_SECTION*)manager->allocate(sizeof(CRITICAL_SECTION)); InitializeCriticalSection(newCS); return newCS; } void WindowsMutexMgr::destroy(XMLMutexHandle mtx, MemoryManager* const manager) { ::DeleteCriticalSection((LPCRITICAL_SECTION)mtx); manager->deallocate(mtx); } void WindowsMutexMgr::lock(XMLMutexHandle mtx) { ::EnterCriticalSection((LPCRITICAL_SECTION)mtx); } void WindowsMutexMgr::unlock(XMLMutexHandle mtx) { ::LeaveCriticalSection((LPCRITICAL_SECTION)mtx); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/MutexManagers/NoThreadMutexMgr.hpp0000644000175000017500000000320110606722647024137 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: NoThreadMutexMgr.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_NOTHREADMUTEXMGR_HPP) #define XERCESC_INCLUDE_GUARD_NOTHREADMUTEXMGR_HPP #include XERCES_CPP_NAMESPACE_BEGIN /* The NoThread mutex manager is for use where no threading is used in an environment. Since no threading is used, mutexes are not needed, so the implementation does essentially nothing. */ class NoThreadMutexMgr : public XMLMutexMgr { public: NoThreadMutexMgr(); virtual ~NoThreadMutexMgr(); // Mutex operations virtual XMLMutexHandle create(MemoryManager* const manager); virtual void destroy(XMLMutexHandle mtx, MemoryManager* const manager); virtual void lock(XMLMutexHandle mtx); virtual void unlock(XMLMutexHandle mtx); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/MutexManagers/PosixMutexMgr.hpp0000644000175000017500000000271510606722647023546 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: PosixMutexMgr.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_POSIXMUTEXMGR_HPP) #define XERCESC_INCLUDE_GUARD_POSIXMUTEXMGR_HPP #include XERCES_CPP_NAMESPACE_BEGIN // Posix mutex implementation. class PosixMutexMgr : public XMLMutexMgr { public: PosixMutexMgr(); virtual ~PosixMutexMgr(); // Mutex operations virtual XMLMutexHandle create(MemoryManager* const manager); virtual void destroy(XMLMutexHandle mtx, MemoryManager* const manager); virtual void lock(XMLMutexHandle mtx); virtual void unlock(XMLMutexHandle mtx); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/MutexManagers/NoThreadMutexMgr.cpp0000644000175000017500000000303510523643534024132 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: NoThreadMutexMgr.cpp 471747 2006-11-06 14:31:56Z amassari $ */ #include XERCES_CPP_NAMESPACE_BEGIN /* The NoThread mutex manager is for use where no threading is used in an environment. Since no threading is used, mutexes are not needed, so the implementation does essentially nothing. */ NoThreadMutexMgr::NoThreadMutexMgr() { } NoThreadMutexMgr::~NoThreadMutexMgr() { } XMLMutexHandle NoThreadMutexMgr::create(MemoryManager* const manager) { return 0; } void NoThreadMutexMgr::destroy(XMLMutexHandle mtx, MemoryManager* const manager) { } void NoThreadMutexMgr::lock(XMLMutexHandle mtx) { } void NoThreadMutexMgr::unlock(XMLMutexHandle mtx) { } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/XercesDefs.hpp0000644000175000017500000001514611360344373020222 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XercesDefs.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_XERCESDEFS_HPP) #define XERCESC_INCLUDE_GUARD_XERCESDEFS_HPP // --------------------------------------------------------------------------- // The file xerces_hdr_config defines critical configuration information // used by the remainder of this file. // // There are two major configuration files: // - xerces_autoconf_config.hpp-- Contains defines that are safe for // access through public headers. // // - config.h -- Contains defines that may conflict // with other packages; should only be // included by Xerces implementation files. // // Both of these files are generated through the autoconf/configure process. // --------------------------------------------------------------------------- // // If this is an autoconf configured build, we include Xerces_autoconf_config.hpp // Otherwise we include a preconfigured config appropriate for the particular // platform that the specific makefile should copy over. // // If the next line generates an error then you haven't run ./configure #include // --------------------------------------------------------------------------- // Include the Xerces version information; this is kept in a separate file to // make modification simple and obvious. Updates to the version header file // --------------------------------------------------------------------------- #include // --------------------------------------------------------------------------- // Some general typedefs that are defined for internal flexibility. // // Note that UTF16Ch is fixed at 16 bits, whereas XMLCh floats in size per // platform, to whatever is the native wide char format there. UCS4Ch is // fixed at 32 bits. The types we defined them in terms of are defined per // compiler, using whatever types are the right ones for them to get these // 16/32 bit sizes. // // --------------------------------------------------------------------------- typedef unsigned char XMLByte; typedef XMLUInt16 UTF16Ch; typedef XMLUInt32 UCS4Ch; // --------------------------------------------------------------------------- // Handle boolean. If the platform can handle booleans itself, then we // map our boolean type to the native type. Otherwise we create a default // one as an int and define const values for true and false. // // This flag will be set in the per-development environment stuff above. // --------------------------------------------------------------------------- #if defined(XERCES_NO_NATIVE_BOOL) #ifndef bool typedef int bool; #endif #ifndef true #define true 1 #endif #ifndef false #define false 0 #endif #endif // --------------------------------------------------------------------------- // According to whether the compiler supports L"" type strings, we define // the XMLStrL() macro one way or another. // --------------------------------------------------------------------------- #if defined(XERCES_LSTRSUPPORT) #define XMLStrL(str) L##str #else #define XMLStrL(str) str #endif // --------------------------------------------------------------------------- // Define namespace symbols if the compiler supports it. // --------------------------------------------------------------------------- #if defined(XERCES_HAS_CPP_NAMESPACE) #define XERCES_CPP_NAMESPACE_BEGIN namespace XERCES_CPP_NAMESPACE { #define XERCES_CPP_NAMESPACE_END } #define XERCES_CPP_NAMESPACE_USE using namespace XERCES_CPP_NAMESPACE; #define XERCES_CPP_NAMESPACE_QUALIFIER XERCES_CPP_NAMESPACE:: namespace XERCES_CPP_NAMESPACE { } namespace xercesc = XERCES_CPP_NAMESPACE; #else #define XERCES_CPP_NAMESPACE_BEGIN #define XERCES_CPP_NAMESPACE_END #define XERCES_CPP_NAMESPACE_USE #define XERCES_CPP_NAMESPACE_QUALIFIER #endif #if defined(XERCES_STD_NAMESPACE) #define XERCES_USING_STD(NAME) using std :: NAME; #define XERCES_STD_QUALIFIER std :: #else #define XERCES_USING_STD(NAME) #define XERCES_STD_QUALIFIER #endif // --------------------------------------------------------------------------- // Set up the import/export keyword for our core projects. The // PLATFORM_XXXX keywords are set in the per-development environment // include above. // --------------------------------------------------------------------------- // The DLL_EXPORT flag should be defined on the command line during the build of a DLL // configure conspires to make this happen. #if defined(DLL_EXPORT) #if defined(XERCES_BUILDING_LIBRARY) #define XMLUTIL_EXPORT XERCES_PLATFORM_EXPORT #define XMLPARSER_EXPORT XERCES_PLATFORM_EXPORT #define SAX_EXPORT XERCES_PLATFORM_EXPORT #define SAX2_EXPORT XERCES_PLATFORM_EXPORT #define CDOM_EXPORT XERCES_PLATFORM_EXPORT #define PARSERS_EXPORT XERCES_PLATFORM_EXPORT #define VALIDATORS_EXPORT XERCES_PLATFORM_EXPORT #define XINCLUDE_EXPORT XERCES_PLATFORM_EXPORT #else #define XMLUTIL_EXPORT XERCES_PLATFORM_IMPORT #define XMLPARSER_EXPORT XERCES_PLATFORM_IMPORT #define SAX_EXPORT XERCES_PLATFORM_IMPORT #define SAX2_EXPORT XERCES_PLATFORM_IMPORT #define CDOM_EXPORT XERCES_PLATFORM_IMPORT #define PARSERS_EXPORT XERCES_PLATFORM_IMPORT #define VALIDATORS_EXPORT XERCES_PLATFORM_IMPORT #define XINCLUDE_EXPORT XERCES_PLATFORM_IMPORT #endif #if defined(XERCES_BUILDING_DEPRECATED_LIBRARY) #define DEPRECATED_DOM_EXPORT XERCES_PLATFORM_EXPORT #else #define DEPRECATED_DOM_EXPORT XERCES_PLATFORM_IMPORT #endif #else #define XMLUTIL_EXPORT #define XMLPARSER_EXPORT #define SAX_EXPORT #define SAX2_EXPORT #define CDOM_EXPORT #define DEPRECATED_DOM_EXPORT #define PARSERS_EXPORT #define VALIDATORS_EXPORT #define XINCLUDE_EXPORT #endif #endif xerces-c-3.1.1/src/xercesc/util/XercesVersion.hpp0000644000175000017500000002161311362617414020763 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XercesVersion.hpp 935350 2010-04-18 15:02:36Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_XERCESVERSION_HPP) #define XERCESC_INCLUDE_GUARD_XERCESVERSION_HPP // --------------------------------------------------------------------------- // X E R C E S V E R S I O N H E A D E R D O C U M E N T A T I O N /** * User Documentation for Xerces Version Values: * * * * Xerces Notes: * * Xerces Committers Documentation: * * Xerces committers normally only need to modify one or two of the * following macros: * * XERCES_VERSION_MAJOR * XERCES_VERSION_MINOR * XERCES_VERSION_REVISION * * The integer values of these macros define the Xerces version number. All * other constants and preprocessor macros are automatically generated from * these three definitions. * * The macro XERCES_GRAMMAR_SERIALIZATION_LEVEL has been added so that during * development if users are using the latest code they can use the grammar * serialization/deserialization features. Whenever a change is made to the * serialization code this macro should be incremented. * * Xerces User Documentation: * * The following sections in the user documentation have examples based upon * the following three version input values: * * #define XERCES_VERSION_MAJOR 19 * #define XERCES_VERSION_MINOR 3 * #define XERCES_VERSION_REVISION 74 * * The minor and revision (patch level) numbers have two digits of resolution * which means that '3' becomes '03' in this example. This policy guarantees * that when using preprocessor macros, version 19.3.74 will be greater than * version 1.94.74 since the first will expand to 190374 and the second to * 19474. * * Preprocessor Macros: * * _XERCES_VERSION defines the primary preprocessor macro that users will * introduce into their code to perform conditional compilation where the * version of Xerces is detected in order to enable or disable version * specific capabilities. The value of _XERCES_VERSION for the above example * will be 190374. To use it a user would perform an operation such as the * following: * * #if _XERCES_VERSION >= 190374 * // code specific to new version of Xerces... * #else * // old code here... * #endif * * XERCES_FULLVERSIONSTR is a preprocessor macro that expands to a string * constant whose value, for the above example, will be "19_3_74". * * XERCES_FULLVERSIONDOT is a preprocessor macro that expands to a string * constant whose value, for the above example, will be "19.3.74". * * XERCES_VERSIONSTR is a preprocessor macro that expands to a string * constant whose value, for the above example, will be "19_3". This * particular macro is very dangerous if it were to be used for comparing * version numbers since ordering will not be guaranteed. * * Xerces_DLLVersionStr is a preprocessor macro that expands to a string * constant whose value, for the above example, will be "19_3_74". This * macro is provided for backwards compatibility to pre-1.7 versions of * Xerces. * * String Constants: * * gXercesVersionStr is a global string constant whose value corresponds to * the value "19_3" for the above example. * * gXercesFullVersionStr is a global string constant whose value corresponds * to the value "19_3_74" for the above example. * * Numeric Constants: * * gXercesMajVersion is a global integer constant whose value corresponds to * the major version number. For the above example its value will be 19. * * gXercesMinVersion is a global integer constant whose value corresponds to * the minor version number. For the above example its value will be 3. * * gXercesRevision is a global integer constant whose value corresponds to * the revision (patch) version number. For the above example its value will * be 74. * */ // --------------------------------------------------------------------------- // X E R C E S V E R S I O N S P E C I F I C A T I O N /** * MODIFY THESE NUMERIC VALUES TO COINCIDE WITH XERCES VERSION * AND DO NOT MODIFY ANYTHING ELSE IN THIS VERSION HEADER FILE */ #define XERCES_VERSION_MAJOR 3 #define XERCES_VERSION_MINOR 1 #define XERCES_VERSION_REVISION 1 /*** * * XERCES_GRAMMAR_SERIALIZATION_LEVEL = 4 SchemaAttDef, SchemaElementDecl serialize fPSVIScope * XERCES_GRAMMAR_SERIALIZATION_LEVEL = 5 XercesStep serializes the axis as an int * XERCES_GRAMMAR_SERIALIZATION_LEVEL = 6 added fIsExternal to XMLEntityDecl * XERCES_GRAMMAR_SERIALIZATION_LEVEL = 7 size of line/column fields has changed * ***/ #define XERCES_GRAMMAR_SERIALIZATION_LEVEL 7 /** DO NOT MODIFY BELOW THIS LINE */ /** * MAGIC THAT AUTOMATICALLY GENERATES THE FOLLOWING: * * Xerces_DLLVersionStr, gXercesVersionStr, gXercesFullVersionStr, * gXercesMajVersion, gXercesMinVersion, gXercesRevision */ // --------------------------------------------------------------------------- // T W O A R G U M E N T C O N C A T E N A T I O N M A C R O S // two argument concatenation routines #define CAT2_SEP_UNDERSCORE(a, b) #a "_" #b #define CAT2_SEP_PERIOD(a, b) #a "." #b #define CAT2_SEP_NIL(a, b) #a #b #define CAT2_RAW_NUMERIC(a, b) a ## b // two argument macro invokers #define INVK_CAT2_SEP_UNDERSCORE(a,b) CAT2_SEP_UNDERSCORE(a,b) #define INVK_CAT2_SEP_PERIOD(a,b) CAT2_SEP_PERIOD(a,b) #define INVK_CAT2_STR_SEP_NIL(a,b) CAT2_SEP_NIL(a,b) #define INVK_CAT2_RAW_NUMERIC(a,b) CAT2_RAW_NUMERIC(a,b) // --------------------------------------------------------------------------- // T H R E E A R G U M E N T C O N C A T E N A T I O N M A C R O S // three argument concatenation routines #define CAT3_SEP_UNDERSCORE(a, b, c) #a "_" #b "_" #c #define CAT3_SEP_PERIOD(a, b, c) #a "." #b "." #c #define CAT3_SEP_NIL(a, b, c) #a #b #c #define CAT3_RAW_NUMERIC(a, b, c) a ## b ## c #define CAT3_RAW_NUMERIC_SEP_UNDERSCORE(a, b, c) a ## _ ## b ## _ ## c // three argument macro invokers #define INVK_CAT3_SEP_UNDERSCORE(a,b,c) CAT3_SEP_UNDERSCORE(a,b,c) #define INVK_CAT3_SEP_PERIOD(a,b,c) CAT3_SEP_PERIOD(a,b,c) #define INVK_CAT3_SEP_NIL(a,b,c) CAT3_SEP_NIL(a,b,c) #define INVK_CAT3_RAW_NUMERIC(a,b,c) CAT3_RAW_NUMERIC(a,b,c) #define INVK_CAT3_RAW_NUMERIC_SEP_UNDERSCORE(a,b,c) CAT3_RAW_NUMERIC_SEP_UNDERSCORE(a,b,c) // --------------------------------------------------------------------------- // C A L C U L A T E V E R S I O N - E X P A N D E D F O R M #define MULTIPLY(factor,value) factor * value #define CALC_EXPANDED_FORM(a,b,c) ( MULTIPLY(10000,a) + MULTIPLY(100,b) + MULTIPLY(1,c) ) // --------------------------------------------------------------------------- // X E R C E S V E R S I O N I N F O R M A T I O N // Xerces version strings; these particular macros cannot be used for // conditional compilation as they are not numeric constants #define XERCES_FULLVERSIONSTR INVK_CAT3_SEP_UNDERSCORE(XERCES_VERSION_MAJOR,XERCES_VERSION_MINOR,XERCES_VERSION_REVISION) #define XERCES_FULLVERSIONDOT INVK_CAT3_SEP_PERIOD(XERCES_VERSION_MAJOR,XERCES_VERSION_MINOR,XERCES_VERSION_REVISION) #define XERCES_FULLVERSIONNUM INVK_CAT3_SEP_NIL(XERCES_VERSION_MAJOR,XERCES_VERSION_MINOR,XERCES_VERSION_REVISION) #define XERCES_VERSIONSTR INVK_CAT2_SEP_UNDERSCORE(XERCES_VERSION_MAJOR,XERCES_VERSION_MINOR) // Xerces C++ Namespace string, concatenated with full version string #define XERCES_PRODUCT xercesc #define XERCES_CPP_NAMESPACE INVK_CAT3_RAW_NUMERIC_SEP_UNDERSCORE(XERCES_PRODUCT,XERCES_VERSION_MAJOR,XERCES_VERSION_MINOR) // original from Xerces header #define Xerces_DLLVersionStr XERCES_FULLVERSIONSTR const char* const gXercesVersionStr = XERCES_VERSIONSTR; const char* const gXercesFullVersionStr = XERCES_FULLVERSIONSTR; const unsigned int gXercesMajVersion = XERCES_VERSION_MAJOR; const unsigned int gXercesMinVersion = XERCES_VERSION_MINOR; const unsigned int gXercesRevision = XERCES_VERSION_REVISION; // Xerces version numeric constants that can be used for conditional // compilation purposes. #define _XERCES_VERSION CALC_EXPANDED_FORM (XERCES_VERSION_MAJOR,XERCES_VERSION_MINOR,XERCES_VERSION_REVISION) #endif // XERCESVERSION_HPP xerces-c-3.1.1/src/xercesc/util/FlagJanitor.c0000644000175000017500000000374310523643534020023 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: FlagJanitor.c 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #if defined(XERCES_TMPLSINC) #include #endif XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Constructors and Destructor // --------------------------------------------------------------------------- template FlagJanitor::FlagJanitor(T* const valPtr, const T newVal) : fValPtr(valPtr) { // Store the pointer, save the org value, and store the new value if (fValPtr) { fOldVal = *fValPtr; *fValPtr = newVal; } } template FlagJanitor::~FlagJanitor() { // Restore the old value if (fValPtr) *fValPtr = fOldVal; } // --------------------------------------------------------------------------- // Value management methods // --------------------------------------------------------------------------- template void FlagJanitor::release() { fValPtr = 0; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/XMLNetAccessor.hpp0000644000175000017500000001042211033362104020736 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLNetAccessor.hpp 673960 2008-07-04 08:50:12Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_XMLNETACCESSOR_HPP) #define XERCESC_INCLUDE_GUARD_XMLNETACCESSOR_HPP #include #include #include XERCES_CPP_NAMESPACE_BEGIN class BinInputStream; // This class holds advanced informations about the HTTP connection class XMLUTIL_EXPORT XMLNetHTTPInfo { public: XMLNetHTTPInfo(); typedef enum { GET, PUT, POST } HTTPMethod; // ----------------------------------------------------------------------- // Data members // // fHTTPMethod // The type of the HTTP request // // fHeaders // The extra headers that will be sent as part of the request; the format is // Header1: Value\r\nHeader2: Value\r\n // // fHeadersLen // The length of the string pointed by fHeaders, in bytes // // fPayload // The extra data that will be sent after the headers; in the case of a PUT // operation, this is the content of the resource being posted. It can be binary data // // fPayloadLen // The length of the binary buffer pointed by fPayload, in bytes // HTTPMethod fHTTPMethod; const char* fHeaders; XMLSize_t fHeadersLen; const char* fPayload; XMLSize_t fPayloadLen; }; inline XMLNetHTTPInfo::XMLNetHTTPInfo() :fHTTPMethod(XMLNetHTTPInfo::GET), fHeaders(0), fHeadersLen(0), fPayload(0), fPayloadLen(0) { } // // This class is an abstract interface via which the URL class accesses // net access services. When any source URL is not in effect a local file // path, then the URL class is used to look at it. Then the URL class can // be asked to make a binary input stream via which the referenced resource // can be read in. // // The URL class will use an object derived from this class to create a // binary stream for the URL to return. The object it uses is provided by // the platform utils, and is actually provided by the per-platform init // code so each platform can decide what actual implementation it wants to // use. // class XMLUTIL_EXPORT XMLNetAccessor : public XMemory { public : // ----------------------------------------------------------------------- // Virtual destructor // ----------------------------------------------------------------------- virtual ~XMLNetAccessor() { } // ----------------------------------------------------------------------- // The virtual net accessor interface // ----------------------------------------------------------------------- virtual const XMLCh* getId() const = 0; virtual BinInputStream* makeNew ( const XMLURL& urlSrc, const XMLNetHTTPInfo* httpInfo=0 ) = 0; protected : // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- XMLNetAccessor() { } private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XMLNetAccessor(const XMLNetAccessor&); XMLNetAccessor& operator=(const XMLNetAccessor&); }; MakeXMLException(NetAccessorException, XMLUTIL_EXPORT) XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/RefArrayOf.hpp0000644000175000017500000001230511360344373020161 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: RefArrayOf.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_REFARRAY_HPP) #define XERCESC_INCLUDE_GUARD_REFARRAY_HPP #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN template class RefArrayOf : public XMemory { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- RefArrayOf ( const XMLSize_t size , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); RefArrayOf ( TElem* values[] , const XMLSize_t size , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); RefArrayOf(const RefArrayOf& source); ~RefArrayOf(); // ----------------------------------------------------------------------- // Public operators // ----------------------------------------------------------------------- TElem*& operator[](const XMLSize_t index); const TElem* operator[](const XMLSize_t index) const; RefArrayOf& operator=(const RefArrayOf& toAssign); bool operator==(const RefArrayOf& toCompare) const; bool operator!=(const RefArrayOf& toCompare) const; // ----------------------------------------------------------------------- // Copy operations // ----------------------------------------------------------------------- XMLSize_t copyFrom(const RefArrayOf& srcArray); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- XMLSize_t length() const; TElem** rawData() const; // ----------------------------------------------------------------------- // Element management methods // ----------------------------------------------------------------------- void deleteAt(const XMLSize_t index); void deleteAllElements(); void resize(const XMLSize_t newSize); private : // ----------------------------------------------------------------------- // Data members // ----------------------------------------------------------------------- XMLSize_t fSize; TElem** fArray; MemoryManager* fMemoryManager; }; // // An enumerator for a reference array. It derives from the basic enumerator // class, so that value vectors can be generically enumerated. // template class RefArrayEnumerator : public XMLEnumerator, public XMemory { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- RefArrayEnumerator ( RefArrayOf* const toEnum , const bool adopt = false ); virtual ~RefArrayEnumerator(); // ----------------------------------------------------------------------- // Enum interface // ----------------------------------------------------------------------- bool hasMoreElements() const; TElem& nextElement(); void Reset(); private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- RefArrayEnumerator(const RefArrayEnumerator&); RefArrayEnumerator& operator=(const RefArrayEnumerator&); // ----------------------------------------------------------------------- // Data Members // // fAdopted // Indicates whether we have adopted the passed array. If so then // we delete it when we are destroyed. // // fCurIndex // This is the current index into the array. // // fToEnum // The reference array being enumerated. // ----------------------------------------------------------------------- bool fAdopted; XMLSize_t fCurIndex; RefArrayOf* fToEnum; }; XERCES_CPP_NAMESPACE_END #if !defined(XERCES_TMPLSINC) #include #endif #endif xerces-c-3.1.1/src/xercesc/util/PanicHandler.hpp0000644000175000017500000000606610606722647020526 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: PanicHandler.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_PANICHANDLER_HPP) #define XERCESC_INCLUDE_GUARD_PANICHANDLER_HPP #include XERCES_CPP_NAMESPACE_BEGIN /** * Receive notification of panic. * *

    This is the interface, through which the Xercesc reports * a panic to the application. *

    * *

    Application may implement this interface, instantiate an * object of the derivative, and plug it to Xercesc in the * invocation to XMLPlatformUtils::Initialize(), if it prefers * to handling panic itself rather than Xercesc doing it. *

    * */ class XMLUTIL_EXPORT PanicHandler { public: /** @name Public Types */ //@{ enum PanicReasons { Panic_NoTransService , Panic_NoDefTranscoder , Panic_CantFindLib , Panic_UnknownMsgDomain , Panic_CantLoadMsgDomain , Panic_SynchronizationErr , Panic_SystemInit , Panic_AllStaticInitErr , Panic_MutexErr , PanicReasons_Count }; //@} protected: /** @name hidden Constructors */ //@{ /** Default constructor */ PanicHandler(){}; public: /** Destructor */ virtual ~PanicHandler(){}; //@} /** @name The virtual panic handler interface */ //@{ /** * Receive notification of panic * * This method is called when an unrecoverable error has occurred in the Xerces library. * * This method must not return normally, otherwise, the results are undefined. * * Ways of handling this call could include throwing an exception or exiting the process. * * Once this method has been called, the results of calling any other Xerces API, * or using any existing Xerces objects are undefined. * * @param reason The reason of panic * */ virtual void panic(const PanicHandler::PanicReasons reason) = 0; //@} static const char* getPanicReasonString(const PanicHandler::PanicReasons reason); private: /* Unimplemented Constructors and operators */ /* Copy constructor */ PanicHandler(const PanicHandler&); /** Assignment operator */ PanicHandler& operator=(const PanicHandler&); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/RefStackOf.hpp0000644000175000017500000001237311037122704020146 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: RefStackOf.hpp 676911 2008-07-15 13:27:32Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_REFSTACKOF_HPP) #define XERCESC_INCLUDE_GUARD_REFSTACKOF_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN // // Forward declare the enumerator so he can be our friend. Can you say // friend? Sure... // template class RefStackEnumerator; template class RefStackOf : public XMemory { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- RefStackOf(const XMLSize_t initElems, const bool adoptElems = true, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); ~RefStackOf(); // ----------------------------------------------------------------------- // Element management methods // ----------------------------------------------------------------------- const TElem* elementAt(const XMLSize_t index) const; TElem* popAt(const XMLSize_t index); void push(TElem* const toPush); const TElem* peek() const; TElem* pop(); void removeAllElements(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- bool empty(); XMLSize_t curCapacity(); XMLSize_t size(); private : // ----------------------------------------------------------------------- // Declare our friends // ----------------------------------------------------------------------- friend class RefStackEnumerator; // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- RefStackOf(const RefStackOf&); RefStackOf& operator=(const RefStackOf&); // ----------------------------------------------------------------------- // Data Members // // fVector // The vector that is used as the backing data structure for the // stack. // ----------------------------------------------------------------------- RefVectorOf fVector; }; // // An enumerator for a value stack. It derives from the basic enumerator // class, so that value stacks can be generically enumerated. // template class RefStackEnumerator : public XMLEnumerator, public XMemory { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- RefStackEnumerator ( RefStackOf* const toEnum , const bool adopt = false ); virtual ~RefStackEnumerator(); // ----------------------------------------------------------------------- // Enum interface // ----------------------------------------------------------------------- bool hasMoreElements() const; TElem& nextElement(); void Reset(); private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- RefStackEnumerator(const RefStackEnumerator&); RefStackEnumerator& operator=(const RefStackEnumerator&); // ----------------------------------------------------------------------- // Data Members // // fAdopted // Indicates whether we have adopted the passed stack. If so then // we delete the stack when we are destroyed. // // fCurIndex // This is the current index into the vector inside the stack being // enumerated. // // fToEnum // The stack that is being enumerated. This is just kept for // adoption purposes, since we really are enumerating the vector // inside of it. // ----------------------------------------------------------------------- bool fAdopted; XMLSize_t fCurIndex; RefVectorOf* fVector; RefStackOf* fToEnum; }; XERCES_CPP_NAMESPACE_END #if !defined(XERCES_TMPLSINC) #include #endif #endif xerces-c-3.1.1/src/xercesc/util/ValueArrayOf.hpp0000644000175000017500000001232411360344373020522 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: ValueArrayOf.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_VALUEARRAY_HPP) #define XERCESC_INCLUDE_GUARD_VALUEARRAY_HPP #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN template class ValueArrayOf : public XMemory { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- ValueArrayOf ( const XMLSize_t size , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); ValueArrayOf ( const TElem* values , const XMLSize_t size , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); ValueArrayOf(const ValueArrayOf& source); ~ValueArrayOf(); // ----------------------------------------------------------------------- // Public operators // ----------------------------------------------------------------------- TElem& operator[](const XMLSize_t index); const TElem& operator[](const XMLSize_t index) const; ValueArrayOf& operator=(const ValueArrayOf& toAssign); bool operator==(const ValueArrayOf& toCompare) const; bool operator!=(const ValueArrayOf& toCompare) const; // ----------------------------------------------------------------------- // Copy operations // ----------------------------------------------------------------------- XMLSize_t copyFrom(const ValueArrayOf& srcArray); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- XMLSize_t length() const; TElem* rawData() const; // ----------------------------------------------------------------------- // Miscellaneous methods // ----------------------------------------------------------------------- void resize(const XMLSize_t newSize); private : // ----------------------------------------------------------------------- // Data members // ----------------------------------------------------------------------- XMLSize_t fSize; TElem* fArray; MemoryManager* fMemoryManager; }; // // An enumerator for a value array. It derives from the basic enumerator // class, so that value vectors can be generically enumerated. // template class ValueArrayEnumerator : public XMLEnumerator, public XMemory { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- ValueArrayEnumerator ( ValueArrayOf* const toEnum , const bool adopt = false ); virtual ~ValueArrayEnumerator(); // ----------------------------------------------------------------------- // Enum interface // ----------------------------------------------------------------------- bool hasMoreElements() const; TElem& nextElement(); void Reset(); private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- ValueArrayEnumerator(const ValueArrayEnumerator&); ValueArrayEnumerator& operator=(const ValueArrayEnumerator&); // ----------------------------------------------------------------------- // Data Members // // fAdopted // Indicates whether we have adopted the passed vector. If so then // we delete the vector when we are destroyed. // // fCurIndex // This is the current index into the vector. // // fToEnum // The value array being enumerated. // ----------------------------------------------------------------------- bool fAdopted; XMLSize_t fCurIndex; ValueArrayOf* fToEnum; }; XERCES_CPP_NAMESPACE_END #if !defined(XERCES_TMPLSINC) #include #endif #endif xerces-c-3.1.1/src/xercesc/util/XMLEBCDICTranscoder.cpp0000644000175000017500000002660310665077060021504 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Local const data // // gFromTable // This is the translation table for IBM037 EBCDIC to Unicode. This // table contains 255 entries. The entry for EBCDIC byte x is the // Unicode translation of that byte. // // gToTable // gToTableSz // This is the translation table for Unicode to IBM037 EBCDIC. This one // contains a list of records, sorted by the Unicode code point. We do // a binary search to find the Unicode point, and that record's other // field is the IBM037 code point to translate to. // --------------------------------------------------------------------------- static const XMLCh gFromTable[256] = { 0x0000, 0x0001, 0x0002, 0x0003, 0x009C, 0x0009, 0x0086, 0x007F , 0x0097, 0x008D, 0x008E, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F , 0x0010, 0x0011, 0x0012, 0x0013, 0x009D, 0x0085, 0x0008, 0x0087 , 0x0018, 0x0019, 0x0092, 0x008F, 0x001C, 0x001D, 0x001E, 0x001F , 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000A, 0x0017, 0x001B , 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x0005, 0x0006, 0x0007 , 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004 , 0x0098, 0x0099, 0x009A, 0x009B, 0x0014, 0x0015, 0x009E, 0x001A , 0x0020, 0x00A0, 0x00E2, 0x00E4, 0x00E0, 0x00E1, 0x00E3, 0x00E5 , 0x00E7, 0x00F1, 0x00A2, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C , 0x0026, 0x00E9, 0x00EA, 0x00EB, 0x00E8, 0x00ED, 0x00EE, 0x00EF , 0x00EC, 0x00DF, 0x0021, 0x0024, 0x002A, 0x0029, 0x003B, 0x00AC , 0x002D, 0x002F, 0x00C2, 0x00C4, 0x00C0, 0x00C1, 0x00C3, 0x00C5 , 0x00C7, 0x00D1, 0x00A6, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F , 0x00F8, 0x00C9, 0x00CA, 0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF , 0x00CC, 0x0060, 0x003A, 0x0023, 0x0040, 0x0027, 0x003D, 0x0022 , 0x00D8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067 , 0x0068, 0x0069, 0x00AB, 0x00BB, 0x00F0, 0x00FD, 0x00FE, 0x00B1 , 0x00B0, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070 , 0x0071, 0x0072, 0x00AA, 0x00BA, 0x00E6, 0x00B8, 0x00C6, 0x00A4 , 0x00B5, 0x007E, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078 , 0x0079, 0x007A, 0x00A1, 0x00BF, 0x00D0, 0x00DD, 0x00DE, 0x00AE , 0x005E, 0x00A3, 0x00A5, 0x00B7, 0x00A9, 0x00A7, 0x00B6, 0x00BC , 0x00BD, 0x00BE, 0x005B, 0x005D, 0x00AF, 0x00A8, 0x00B4, 0x00D7 , 0x007B, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047 , 0x0048, 0x0049, 0x00AD, 0x00F4, 0x00F6, 0x00F2, 0x00F3, 0x00F5 , 0x007D, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050 , 0x0051, 0x0052, 0x00B9, 0x00FB, 0x00FC, 0x00F9, 0x00FA, 0x00FF , 0x005C, 0x00F7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058 , 0x0059, 0x005A, 0x00B2, 0x00D4, 0x00D6, 0x00D2, 0x00D3, 0x00D5 , 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037 , 0x0038, 0x0039, 0x00B3, 0x00DB, 0x00DC, 0x00D9, 0x00DA, 0x009F }; static const XMLTransService::TransRec gToTable[] = { { 0x0000, 0x00 }, { 0x0001, 0x01 }, { 0x0002, 0x02 }, { 0x0003, 0x03 } , { 0x0004, 0x37 }, { 0x0005, 0x2D }, { 0x0006, 0x2E }, { 0x0007, 0x2F } , { 0x0008, 0x16 }, { 0x0009, 0x05 }, { 0x000A, 0x25 }, { 0x000B, 0x0B } , { 0x000C, 0x0C }, { 0x000D, 0x0D }, { 0x000E, 0x0E }, { 0x000F, 0x0F } , { 0x0010, 0x10 }, { 0x0011, 0x11 }, { 0x0012, 0x12 }, { 0x0013, 0x13 } , { 0x0014, 0x3C }, { 0x0015, 0x3D }, { 0x0016, 0x32 }, { 0x0017, 0x26 } , { 0x0018, 0x18 }, { 0x0019, 0x19 }, { 0x001A, 0x3F }, { 0x001B, 0x27 } , { 0x001C, 0x1C }, { 0x001D, 0x1D }, { 0x001E, 0x1E }, { 0x001F, 0x1F } , { 0x0020, 0x40 }, { 0x0021, 0x5A }, { 0x0022, 0x7F }, { 0x0023, 0x7B } , { 0x0024, 0x5B }, { 0x0025, 0x6C }, { 0x0026, 0x50 }, { 0x0027, 0x7D } , { 0x0028, 0x4D }, { 0x0029, 0x5D }, { 0x002A, 0x5C }, { 0x002B, 0x4E } , { 0x002C, 0x6B }, { 0x002D, 0x60 }, { 0x002E, 0x4B }, { 0x002F, 0x61 } , { 0x0030, 0xF0 }, { 0x0031, 0xF1 }, { 0x0032, 0xF2 }, { 0x0033, 0xF3 } , { 0x0034, 0xF4 }, { 0x0035, 0xF5 }, { 0x0036, 0xF6 }, { 0x0037, 0xF7 } , { 0x0038, 0xF8 }, { 0x0039, 0xF9 }, { 0x003A, 0x7A }, { 0x003B, 0x5E } , { 0x003C, 0x4C }, { 0x003D, 0x7E }, { 0x003E, 0x6E }, { 0x003F, 0x6F } , { 0x0040, 0x7C }, { 0x0041, 0xC1 }, { 0x0042, 0xC2 }, { 0x0043, 0xC3 } , { 0x0044, 0xC4 }, { 0x0045, 0xC5 }, { 0x0046, 0xC6 }, { 0x0047, 0xC7 } , { 0x0048, 0xC8 }, { 0x0049, 0xC9 }, { 0x004A, 0xD1 }, { 0x004B, 0xD2 } , { 0x004C, 0xD3 }, { 0x004D, 0xD4 }, { 0x004E, 0xD5 }, { 0x004F, 0xD6 } , { 0x0050, 0xD7 }, { 0x0051, 0xD8 }, { 0x0052, 0xD9 }, { 0x0053, 0xE2 } , { 0x0054, 0xE3 }, { 0x0055, 0xE4 }, { 0x0056, 0xE5 }, { 0x0057, 0xE6 } , { 0x0058, 0xE7 }, { 0x0059, 0xE8 }, { 0x005A, 0xE9 }, { 0x005B, 0xBA } , { 0x005C, 0xE0 }, { 0x005D, 0xBB }, { 0x005E, 0xB0 }, { 0x005F, 0x6D } , { 0x0060, 0x79 }, { 0x0061, 0x81 }, { 0x0062, 0x82 }, { 0x0063, 0x83 } , { 0x0064, 0x84 }, { 0x0065, 0x85 }, { 0x0066, 0x86 }, { 0x0067, 0x87 } , { 0x0068, 0x88 }, { 0x0069, 0x89 }, { 0x006A, 0x91 }, { 0x006B, 0x92 } , { 0x006C, 0x93 }, { 0x006D, 0x94 }, { 0x006E, 0x95 }, { 0x006F, 0x96 } , { 0x0070, 0x97 }, { 0x0071, 0x98 }, { 0x0072, 0x99 }, { 0x0073, 0xA2 } , { 0x0074, 0xA3 }, { 0x0075, 0xA4 }, { 0x0076, 0xA5 }, { 0x0077, 0xA6 } , { 0x0078, 0xA7 }, { 0x0079, 0xA8 }, { 0x007A, 0xA9 }, { 0x007B, 0xC0 } , { 0x007C, 0x4F }, { 0x007D, 0xD0 }, { 0x007E, 0xA1 }, { 0x007F, 0x07 } , { 0x0080, 0x20 }, { 0x0081, 0x21 }, { 0x0082, 0x22 }, { 0x0083, 0x23 } , { 0x0084, 0x24 }, { 0x0085, 0x15 }, { 0x0086, 0x06 }, { 0x0087, 0x17 } , { 0x0088, 0x28 }, { 0x0089, 0x29 }, { 0x008A, 0x2A }, { 0x008B, 0x2B } , { 0x008C, 0x2C }, { 0x008D, 0x09 }, { 0x008E, 0x0A }, { 0x008F, 0x1B } , { 0x0090, 0x30 }, { 0x0091, 0x31 }, { 0x0092, 0x1A }, { 0x0093, 0x33 } , { 0x0094, 0x34 }, { 0x0095, 0x35 }, { 0x0096, 0x36 }, { 0x0097, 0x08 } , { 0x0098, 0x38 }, { 0x0099, 0x39 }, { 0x009A, 0x3A }, { 0x009B, 0x3B } , { 0x009C, 0x04 }, { 0x009D, 0x14 }, { 0x009E, 0x3E }, { 0x009F, 0xFF } , { 0x00A0, 0x41 }, { 0x00A1, 0xAA }, { 0x00A2, 0x4A }, { 0x00A3, 0xB1 } , { 0x00A4, 0x9F }, { 0x00A5, 0xB2 }, { 0x00A6, 0x6A }, { 0x00A7, 0xB5 } , { 0x00A8, 0xBD }, { 0x00A9, 0xB4 }, { 0x00AA, 0x9A }, { 0x00AB, 0x8A } , { 0x00AC, 0x5F }, { 0x00AD, 0xCA }, { 0x00AE, 0xAF }, { 0x00AF, 0xBC } , { 0x00B0, 0x90 }, { 0x00B1, 0x8F }, { 0x00B2, 0xEA }, { 0x00B3, 0xFA } , { 0x00B4, 0xBE }, { 0x00B5, 0xA0 }, { 0x00B6, 0xB6 }, { 0x00B7, 0xB3 } , { 0x00B8, 0x9D }, { 0x00B9, 0xDA }, { 0x00BA, 0x9B }, { 0x00BB, 0x8B } , { 0x00BC, 0xB7 }, { 0x00BD, 0xB8 }, { 0x00BE, 0xB9 }, { 0x00BF, 0xAB } , { 0x00C0, 0x64 }, { 0x00C1, 0x65 }, { 0x00C2, 0x62 }, { 0x00C3, 0x66 } , { 0x00C4, 0x63 }, { 0x00C5, 0x67 }, { 0x00C6, 0x9E }, { 0x00C7, 0x68 } , { 0x00C8, 0x74 }, { 0x00C9, 0x71 }, { 0x00CA, 0x72 }, { 0x00CB, 0x73 } , { 0x00CC, 0x78 }, { 0x00CD, 0x75 }, { 0x00CE, 0x76 }, { 0x00CF, 0x77 } , { 0x00D0, 0xAC }, { 0x00D1, 0x69 }, { 0x00D2, 0xED }, { 0x00D3, 0xEE } , { 0x00D4, 0xEB }, { 0x00D5, 0xEF }, { 0x00D6, 0xEC }, { 0x00D7, 0xBF } , { 0x00D8, 0x80 }, { 0x00D9, 0xFD }, { 0x00DA, 0xFE }, { 0x00DB, 0xFB } , { 0x00DC, 0xFC }, { 0x00DD, 0xAD }, { 0x00DE, 0xAE }, { 0x00DF, 0x59 } , { 0x00E0, 0x44 }, { 0x00E1, 0x45 }, { 0x00E2, 0x42 }, { 0x00E3, 0x46 } , { 0x00E4, 0x43 }, { 0x00E5, 0x47 }, { 0x00E6, 0x9C }, { 0x00E7, 0x48 } , { 0x00E8, 0x54 }, { 0x00E9, 0x51 }, { 0x00EA, 0x52 }, { 0x00EB, 0x53 } , { 0x00EC, 0x58 }, { 0x00ED, 0x55 }, { 0x00EE, 0x56 }, { 0x00EF, 0x57 } , { 0x00F0, 0x8C }, { 0x00F1, 0x49 }, { 0x00F2, 0xCD }, { 0x00F3, 0xCE } , { 0x00F4, 0xCB }, { 0x00F5, 0xCF }, { 0x00F6, 0xCC }, { 0x00F7, 0xE1 } , { 0x00F8, 0x70 }, { 0x00F9, 0xDD }, { 0x00FA, 0xDE }, { 0x00FB, 0xDB } , { 0x00FC, 0xDC }, { 0x00FD, 0x8D }, { 0x00FE, 0x8E }, { 0x00FF, 0xDF } , { 0x0110, 0xAC }, { 0x203E, 0xBC }, { 0xFF01, 0x5A }, { 0xFF02, 0x7F } , { 0xFF03, 0x7B }, { 0xFF04, 0x5B }, { 0xFF05, 0x6C }, { 0xFF06, 0x50 } , { 0xFF07, 0x7D }, { 0xFF08, 0x4D }, { 0xFF09, 0x5D }, { 0xFF0A, 0x5C } , { 0xFF0B, 0x4E }, { 0xFF0C, 0x6B }, { 0xFF0D, 0x60 }, { 0xFF0E, 0x4B } , { 0xFF0F, 0x61 }, { 0xFF10, 0xF0 }, { 0xFF11, 0xF1 }, { 0xFF12, 0xF2 } , { 0xFF13, 0xF3 }, { 0xFF14, 0xF4 }, { 0xFF15, 0xF5 }, { 0xFF16, 0xF6 } , { 0xFF17, 0xF7 }, { 0xFF18, 0xF8 }, { 0xFF19, 0xF9 }, { 0xFF1A, 0x7A } , { 0xFF1B, 0x5E }, { 0xFF1C, 0x4C }, { 0xFF1D, 0x7E }, { 0xFF1E, 0x6E } , { 0xFF1F, 0x6F }, { 0xFF20, 0x7C }, { 0xFF21, 0xC1 }, { 0xFF22, 0xC2 } , { 0xFF23, 0xC3 }, { 0xFF24, 0xC4 }, { 0xFF25, 0xC5 }, { 0xFF26, 0xC6 } , { 0xFF27, 0xC7 }, { 0xFF28, 0xC8 }, { 0xFF29, 0xC9 }, { 0xFF2A, 0xD1 } , { 0xFF2B, 0xD2 }, { 0xFF2C, 0xD3 }, { 0xFF2D, 0xD4 }, { 0xFF2E, 0xD5 } , { 0xFF2F, 0xD6 }, { 0xFF30, 0xD7 }, { 0xFF31, 0xD8 }, { 0xFF32, 0xD9 } , { 0xFF33, 0xE2 }, { 0xFF34, 0xE3 }, { 0xFF35, 0xE4 }, { 0xFF36, 0xE5 } , { 0xFF37, 0xE6 }, { 0xFF38, 0xE7 }, { 0xFF39, 0xE8 }, { 0xFF3A, 0xE9 } , { 0xFF3B, 0xBA }, { 0xFF3C, 0xE0 }, { 0xFF3D, 0xBB }, { 0xFF3E, 0xB0 } , { 0xFF3F, 0x6D }, { 0xFF40, 0x79 }, { 0xFF41, 0x81 }, { 0xFF42, 0x82 } , { 0xFF43, 0x83 }, { 0xFF44, 0x84 }, { 0xFF45, 0x85 }, { 0xFF46, 0x86 } , { 0xFF47, 0x87 }, { 0xFF48, 0x88 }, { 0xFF49, 0x89 }, { 0xFF4A, 0x91 } , { 0xFF4B, 0x92 }, { 0xFF4C, 0x93 }, { 0xFF4D, 0x94 }, { 0xFF4E, 0x95 } , { 0xFF4F, 0x96 }, { 0xFF50, 0x97 }, { 0xFF51, 0x98 }, { 0xFF52, 0x99 } , { 0xFF53, 0xA2 }, { 0xFF54, 0xA3 }, { 0xFF55, 0xA4 }, { 0xFF56, 0xA5 } , { 0xFF57, 0xA6 }, { 0xFF58, 0xA7 }, { 0xFF59, 0xA8 }, { 0xFF5A, 0xA9 } , { 0xFF5B, 0xC0 }, { 0xFF5C, 0x4F }, { 0xFF5D, 0xD0 }, { 0xFF5E, 0xA1 } }; static const XMLSize_t gToTableSz = sizeof(gToTable)/sizeof(gToTable[0]); // --------------------------------------------------------------------------- // XMLEBCDICTranscoder: Public, static methods // --------------------------------------------------------------------------- XMLCh XMLEBCDICTranscoder::xlatThisOne(const XMLByte toXlat) { return gFromTable[toXlat]; } // --------------------------------------------------------------------------- // XMLEBCDICTranscoder: Constructors and Destructor // --------------------------------------------------------------------------- XMLEBCDICTranscoder::XMLEBCDICTranscoder(const XMLCh* const encodingName , const XMLSize_t blockSize , MemoryManager* const manager) : XML256TableTranscoder ( encodingName , blockSize , gFromTable , gToTable , gToTableSz , manager ) { } XMLEBCDICTranscoder::~XMLEBCDICTranscoder() { } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/XMLDouble.cpp0000644000175000017500000000376210523643534017757 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLDouble.cpp 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // ctor/dtor // --------------------------------------------------------------------------- XMLDouble::XMLDouble(const XMLCh* const strValue, MemoryManager* const manager) :XMLAbstractDoubleFloat(manager) { init(strValue); } XMLDouble::~XMLDouble() { } void XMLDouble::checkBoundary(char* const strValue) { convert(strValue); } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(XMLDouble) XMLDouble::XMLDouble(MemoryManager* const manager) :XMLAbstractDoubleFloat(manager) { } void XMLDouble::serialize(XSerializeEngine& serEng) { XMLAbstractDoubleFloat::serialize(serEng); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/XML88591Transcoder.hpp0000644000175000017500000000634511360344373021274 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XML88591Transcoder.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_XML88591TRANSCODER_HPP) #define XERCESC_INCLUDE_GUARD_XML88591TRANSCODER_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN // // This class provides an implementation of the XMLTranscoder interface // for a simple 8859-1 transcoder. The parser does some encodings // intrinsically without depending upon external transcoding services. // To make everything more orthogonal, we implement these internal // transcoders using the same transcoder abstraction as the pluggable // transcoding services do. // class XMLUTIL_EXPORT XML88591Transcoder : public XMLTranscoder { public : // ----------------------------------------------------------------------- // Public constructors and destructor // ----------------------------------------------------------------------- XML88591Transcoder ( const XMLCh* const encodingName , const XMLSize_t blockSize , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual ~XML88591Transcoder(); // ----------------------------------------------------------------------- // Implementation of the XMLTranscoder interface // ----------------------------------------------------------------------- virtual XMLSize_t transcodeFrom ( const XMLByte* const srcData , const XMLSize_t srcCount , XMLCh* const toFill , const XMLSize_t maxChars , XMLSize_t& bytesEaten , unsigned char* const charSizes ); virtual XMLSize_t transcodeTo ( const XMLCh* const srcData , const XMLSize_t srcCount , XMLByte* const toFill , const XMLSize_t maxBytes , XMLSize_t& charsEaten , const UnRepOpts options ); virtual bool canTranscodeTo ( const unsigned int toCheck ); private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XML88591Transcoder(const XML88591Transcoder&); XML88591Transcoder& operator=(const XML88591Transcoder&); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/Xerces_autoconf_config.borland.hpp0000644000175000017500000001114711276506011024253 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: Xerces_autoconf_config.borland.hpp 834826 2009-11-11 10:03:53Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_XERCES_AUTOCONFIG_CONFIG_HPP) #define XERCESC_INCLUDE_GUARD_XERCES_AUTOCONFIG_CONFIG_HPP // // There are two primary xerces configuration header files: // // Xerces_autoconf_config.hpp // // For configuration of items that must be accessable // through public headers. This file has limited information // and carefully works to avoid collision of macro names, etc. // // This file is included by XercesDefs.h. // This version of the file is specific for Borland C++ // family of compilers // // config.h // // This file is not used with Borland C++; the macros // it would specify are instead hardcoded in the makefiles // #include // --------------------------------------------------------------------------- // These defines have been hardcoded for the Borland C++ compilers // --------------------------------------------------------------------------- #undef XERCES_AUTOCONF #undef XERCES_HAVE_SYS_TYPES_H #undef XERCES_HAVE_INTTYPES_H #define XERCES_S16BIT_INT signed short #define XERCES_U16BIT_INT unsigned short #define XERCES_S32BIT_INT INT32 #define XERCES_U32BIT_INT UINT32 #define XERCES_S64BIT_INT INT64 #define XERCES_U64BIT_INT UINT64 #define XERCES_XMLCH_T wchar_t #define XERCES_SIZE_T SIZE_T #define XERCES_SSIZE_T SSIZE_T #define XERCES_HAS_CPP_NAMESPACE 1 #define XERCES_STD_NAMESPACE 1 #define XERCES_NEW_IOSTREAMS 1 #undef XERCES_NO_NATIVE_BOOL #define XERCES_LSTRSUPPORT 1 #ifdef XERCES_STATIC_LIBRARY #define XERCES_PLATFORM_EXPORT #define XERCES_PLATFORM_IMPORT #else #define XERCES_PLATFORM_EXPORT __declspec(dllexport) #define XERCES_PLATFORM_IMPORT __declspec(dllimport) #define DLL_EXPORT #endif #define XERCES_NO_MATCHING_DELETE_OPERATOR #define XERCES_NEED_XMEMORY_VIRTUAL_DESTRUCTOR // --------------------------------------------------------------------------- // XMLSize_t is the unsigned integral type. // --------------------------------------------------------------------------- typedef XERCES_SIZE_T XMLSize_t; typedef XERCES_SSIZE_T XMLSSize_t; // --------------------------------------------------------------------------- // Define our version of the XML character // --------------------------------------------------------------------------- typedef XERCES_XMLCH_T XMLCh; // --------------------------------------------------------------------------- // Define unsigned 16, 32, and 64 bit integers // --------------------------------------------------------------------------- typedef XERCES_U16BIT_INT XMLUInt16; typedef XERCES_U32BIT_INT XMLUInt32; typedef XERCES_U64BIT_INT XMLUInt64; // --------------------------------------------------------------------------- // Define signed 16, 32, and 64 bit integers // --------------------------------------------------------------------------- typedef XERCES_S16BIT_INT XMLInt16; typedef XERCES_S32BIT_INT XMLInt32; typedef XERCES_S64BIT_INT XMLInt64; // --------------------------------------------------------------------------- // XMLFilePos is the type used to represent a file position. // --------------------------------------------------------------------------- typedef XMLUInt64 XMLFilePos; // --------------------------------------------------------------------------- // XMLFileLoc is the type used to represent a file location (line/column). // --------------------------------------------------------------------------- typedef XMLUInt64 XMLFileLoc; // --------------------------------------------------------------------------- // Force on the Xerces debug token if it is on in the build environment // --------------------------------------------------------------------------- #if defined(_DEBUG) #define XERCES_DEBUG #endif #endif xerces-c-3.1.1/src/xercesc/util/PSVIUni.hpp0000644000175000017500000002115310606722647017425 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: PSVIUni.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_PSVIUNI_HPP) #define XERCESC_INCLUDE_GUARD_PSVIUNI_HPP #include XERCES_CPP_NAMESPACE_BEGIN class XMLUTIL_EXPORT PSVIUni { public : static const XMLCh fgPsvColon[]; //Infoset Element Names static const XMLCh fgAllDeclarationsProcessed[]; static const XMLCh fgAttribute[]; static const XMLCh fgAttributes[]; static const XMLCh fgAttributeType[]; static const XMLCh fgBaseURI[]; static const XMLCh fgCharacter[]; static const XMLCh fgCharacterEncodingScheme[]; static const XMLCh fgChildren[]; static const XMLCh fgComment[]; static const XMLCh fgContent[]; static const XMLCh fgDocument[]; static const XMLCh fgDocTypeDeclaration[]; static const XMLCh fgDocumentElement[]; static const XMLCh fgElement[]; static const XMLCh fgInScopeNamespaces[]; static const XMLCh fgLocalName[]; static const XMLCh fgNamespace[]; static const XMLCh fgNamespaceAttributes[]; static const XMLCh fgNamespaceName[]; static const XMLCh fgNormalizedValue[]; static const XMLCh fgNotations[]; static const XMLCh fgPrefix[]; static const XMLCh fgProcessingInstruction[]; static const XMLCh fgReferences[]; static const XMLCh fgSpecified[]; static const XMLCh fgStandalone[]; static const XMLCh fgTarget[]; static const XMLCh fgText[]; static const XMLCh fgTextContent[]; static const XMLCh fgUnparsedEntities[]; static const XMLCh fgVersion[]; //PSVI Element Names static const XMLCh fgAbstract[]; static const XMLCh fgAnnotation[]; static const XMLCh fgAnnotations[]; static const XMLCh fgApplicationInformation[]; static const XMLCh fgAttributeDeclaration[]; static const XMLCh fgAttributeGroupDefinition[]; static const XMLCh fgAttributeUse[]; static const XMLCh fgAttributeUses[]; static const XMLCh fgAttributeWildcard[]; static const XMLCh fgBaseTypeDefinition[]; static const XMLCh fgCanonicalRepresentation[]; static const XMLCh fgComplexTypeDefinition[]; static const XMLCh fgCompositor[]; static const XMLCh fgContentType[]; static const XMLCh fgDeclaration[]; static const XMLCh fgDerivationMethod[]; static const XMLCh fgDisallowedSubstitutions[]; static const XMLCh fgPsvDocument[]; static const XMLCh fgDocumentLocation[]; static const XMLCh fgElementDeclaration[]; static const XMLCh fgFacets[]; static const XMLCh fgFacetFixed[]; static const XMLCh fgFields[]; static const XMLCh fgFinal[]; static const XMLCh fgFundamentalFacets[]; static const XMLCh fgIdentityConstraintCategory[]; static const XMLCh fgIdentityConstraintDefinition[]; static const XMLCh fgIdentityConstraintDefinitions[]; static const XMLCh fgIdentityConstraintTable[]; static const XMLCh fgIdIdrefTable[]; static const XMLCh fgItemTypeDefinition[]; static const XMLCh fgMaxOccurs[]; static const XMLCh fgMemberTypeDefinition[]; static const XMLCh fgMemberTypeDefinitions[]; static const XMLCh fgMinOccurs[]; static const XMLCh fgModelGroup[]; static const XMLCh fgModelGroupDefinition[]; static const XMLCh fgName[]; static const XMLCh fgNamespaceConstraint[]; static const XMLCh fgNamespaces[]; static const XMLCh fgNamespaceSchemaInformation[]; static const XMLCh fgNil[]; static const XMLCh fgNillable[]; static const XMLCh fgNotation[]; static const XMLCh fgNotationDeclaration[]; static const XMLCh fgParticle[]; static const XMLCh fgParticles[]; static const XMLCh fgPrimitiveTypeDefinition[]; static const XMLCh fgProcessContents[]; static const XMLCh fgProhibitedSubstitutions[]; static const XMLCh fgPublicIdentifier[]; static const XMLCh fgReferencedKey[]; static const XMLCh fgRequired[]; static const XMLCh fgSchemaAnnotations[]; static const XMLCh fgSchemaComponents[]; static const XMLCh fgSchemaDefault[]; static const XMLCh fgSchemaDocument[]; static const XMLCh fgSchemaDocuments[]; static const XMLCh fgSchemaErrorCode[]; static const XMLCh fgSchemaInformation[]; static const XMLCh fgSchemaNamespace[]; static const XMLCh fgSchemaNormalizedValue[]; static const XMLCh fgSchemaSpecified[]; static const XMLCh fgScope[]; static const XMLCh fgSelector[]; static const XMLCh fgSimpleTypeDefinition[]; static const XMLCh fgSubstitutionGroupAffiliation[]; static const XMLCh fgSubstitutionGroupExclusions[]; static const XMLCh fgSystemIdentifier[]; static const XMLCh fgTargetNamespace[]; static const XMLCh fgTerm[]; static const XMLCh fgTypeDefinition[]; static const XMLCh fgUserInformation[]; static const XMLCh fgValidationAttempted[]; static const XMLCh fgValidationContext[]; static const XMLCh fgValidity[]; static const XMLCh fgValue[]; static const XMLCh fgValueConstraint[]; static const XMLCh fgVariety[]; static const XMLCh fgWildcard[]; static const XMLCh fgXpath[]; //PSVI Element Values static const XMLCh fgAll[]; static const XMLCh fgAny[]; static const XMLCh fgAppinfo[]; static const XMLCh fgAtomic[]; static const XMLCh fgChoice[]; static const XMLCh fgDefault[]; static const XMLCh fgDocumentation[]; static const XMLCh fgElementOnly[]; static const XMLCh fgEmpty[]; static const XMLCh fgExtension[]; static const XMLCh fgFalse[]; static const XMLCh fgFull[]; static const XMLCh fgGlobal[]; static const XMLCh fgInfoset[]; static const XMLCh fgInvalid[]; static const XMLCh fgKey[]; static const XMLCh fgKeyref[]; static const XMLCh fgLax[]; static const XMLCh fgList[]; static const XMLCh fgLocal[]; static const XMLCh fgMixed[]; static const XMLCh fgNone[]; static const XMLCh fgNotKnown[]; static const XMLCh fgNsNamespace[]; static const XMLCh fgOnePointZero[]; static const XMLCh fgPartial[]; static const XMLCh fgRestrict[]; static const XMLCh fgRestriction[]; static const XMLCh fgSchema[]; static const XMLCh fgSequence[]; static const XMLCh fgSimple[]; static const XMLCh fgSkip[]; static const XMLCh fgStrict[]; static const XMLCh fgSubstitution[]; static const XMLCh fgTotal[]; static const XMLCh fgTrue[]; static const XMLCh fgUnbounded[]; static const XMLCh fgUnion[]; static const XMLCh fgUnique[]; static const XMLCh fgUnknown[]; static const XMLCh fgValid[]; static const XMLCh fgVCFixed[]; static const XMLCh fgXMLChNull[]; //PSVI Element Types (Shortened) static const XMLCh fgAg[]; static const XMLCh fgAnnot[]; static const XMLCh fgAttr[]; static const XMLCh fgAu[]; static const XMLCh fgElt[]; static const XMLCh fgIdc[]; static const XMLCh fgMg[]; static const XMLCh fgNot[]; static const XMLCh fgType[]; //Facets static const XMLCh fgBounded[]; static const XMLCh fgCardinality[]; static const XMLCh fgEnumeration[]; static const XMLCh fgFractionDigits[]; static const XMLCh fgLength[]; static const XMLCh fgMaxExclusive[]; static const XMLCh fgMaxInclusive[]; static const XMLCh fgMaxLength[]; static const XMLCh fgMinExclusive[]; static const XMLCh fgMinInclusive[]; static const XMLCh fgMinLength[]; static const XMLCh fgNumeric[]; static const XMLCh fgOrdered[]; static const XMLCh fgPattern[]; static const XMLCh fgTotalDigits[]; static const XMLCh fgWhiteSpace[]; //Namespaces and prefixes static const XMLCh fgNamespaceInfoset[]; static const XMLCh fgXsi[]; static const XMLCh fgNamespaceInstance[]; static const XMLCh fgPsv[]; static const XMLCh fgNamespacePsvi[]; static const XMLCh fgXml[]; static const XMLCh fgNamespaceXmlSchema[]; }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/RefHash2KeysTableOf.c0000644000175000017500000005222211042054515021302 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: RefHash2KeysTableOf.c 679340 2008-07-24 10:28:29Z borisk $ */ // --------------------------------------------------------------------------- // Include // --------------------------------------------------------------------------- #if defined(XERCES_TMPLSINC) #include #endif #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // RefHash2KeysTableOf: Constructors and Destructor // --------------------------------------------------------------------------- template RefHash2KeysTableOf::RefHash2KeysTableOf( const XMLSize_t modulus, MemoryManager* const manager) : fMemoryManager(manager) , fAdoptedElems(true) , fBucketList(0) , fHashModulus(modulus) , fCount(0) { initialize(modulus); } template RefHash2KeysTableOf::RefHash2KeysTableOf( const XMLSize_t modulus, const THasher& hasher, MemoryManager* const manager) : fMemoryManager(manager) , fAdoptedElems(true) , fBucketList(0) , fHashModulus(modulus) , fCount(0) , fHasher (hasher) { initialize(modulus); } template RefHash2KeysTableOf::RefHash2KeysTableOf( const XMLSize_t modulus, const bool adoptElems, MemoryManager* const manager) : fMemoryManager(manager) , fAdoptedElems(adoptElems) , fBucketList(0) , fHashModulus(modulus) , fCount(0) { initialize(modulus); } template RefHash2KeysTableOf::RefHash2KeysTableOf( const XMLSize_t modulus, const bool adoptElems, const THasher& hasher, MemoryManager* const manager) : fMemoryManager(manager) , fAdoptedElems(adoptElems) , fBucketList(0) , fHashModulus(modulus) , fCount(0) , fHasher (hasher) { initialize(modulus); } template void RefHash2KeysTableOf::initialize(const XMLSize_t modulus) { if (modulus == 0) ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::HshTbl_ZeroModulus, fMemoryManager); // Allocate the bucket list and zero them fBucketList = (RefHash2KeysTableBucketElem**) fMemoryManager->allocate ( fHashModulus * sizeof(RefHash2KeysTableBucketElem*) ); //new RefHash2KeysTableBucketElem*[fHashModulus]; memset(fBucketList, 0, sizeof(fBucketList[0]) * fHashModulus); } template RefHash2KeysTableOf::~RefHash2KeysTableOf() { removeAll(); // Then delete the bucket list & hasher fMemoryManager->deallocate(fBucketList); //delete [] fBucketList; fBucketList = 0; } // --------------------------------------------------------------------------- // RefHash2KeysTableOf: Element management // --------------------------------------------------------------------------- template bool RefHash2KeysTableOf::isEmpty() const { return (fCount==0); } template bool RefHash2KeysTableOf:: containsKey(const void* const key1, const int key2) const { XMLSize_t hashVal; const RefHash2KeysTableBucketElem* findIt = findBucketElem(key1, key2, hashVal); return (findIt != 0); } template void RefHash2KeysTableOf:: removeKey(const void* const key1, const int key2) { // Hash the key XMLSize_t hashVal = fHasher.getHashVal(key1, fHashModulus); assert(hashVal < fHashModulus); // // Search the given bucket for this key. Keep up with the previous // element so we can patch around it. // RefHash2KeysTableBucketElem* curElem = fBucketList[hashVal]; RefHash2KeysTableBucketElem* lastElem = 0; while (curElem) { if((key2==curElem->fKey2) && (fHasher.equals(key1, curElem->fKey1))) { if (!lastElem) { // It was the first in the bucket fBucketList[hashVal] = curElem->fNext; } else { // Patch around the current element lastElem->fNext = curElem->fNext; } // If we adopted the elements, then delete the data if (fAdoptedElems) delete curElem->fData; // Delete the current element // delete curElem; // destructor is empty... // curElem->~RefHash2KeysTableBucketElem(); fMemoryManager->deallocate(curElem); fCount--; return; } // Move both pointers upwards lastElem = curElem; curElem = curElem->fNext; } // We never found that key ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::HshTbl_NoSuchKeyExists, fMemoryManager); } template void RefHash2KeysTableOf:: removeKey(const void* const key1) { // Hash the key XMLSize_t hashVal = fHasher.getHashVal(key1, fHashModulus); assert(hashVal < fHashModulus); // // Search the given bucket for this key. Keep up with the previous // element so we can patch around it. // RefHash2KeysTableBucketElem* curElem = fBucketList[hashVal]; RefHash2KeysTableBucketElem* lastElem = 0; while (curElem) { if(fHasher.equals(key1, curElem->fKey1)) { if (!lastElem) { // It was the first in the bucket fBucketList[hashVal] = curElem->fNext; } else { // Patch around the current element lastElem->fNext = curElem->fNext; } // If we adopted the elements, then delete the data if (fAdoptedElems) delete curElem->fData; RefHash2KeysTableBucketElem* toBeDeleted=curElem; curElem = curElem->fNext; // Delete the current element // delete curElem; // destructor is empty... // curElem->~RefHash2KeysTableBucketElem(); fMemoryManager->deallocate(toBeDeleted); fCount--; } else { // Move both pointers upwards lastElem = curElem; curElem = curElem->fNext; } } } template void RefHash2KeysTableOf::removeAll() { if(isEmpty()) return; // Clean up the buckets first for (XMLSize_t buckInd = 0; buckInd < fHashModulus; buckInd++) { // Get the bucket list head for this entry RefHash2KeysTableBucketElem* curElem = fBucketList[buckInd]; RefHash2KeysTableBucketElem* nextElem; while (curElem) { // Save the next element before we hose this one nextElem = curElem->fNext; // If we adopted the data, then delete it too // (Note: the userdata hash table instance has data type of void *. // This will generate compiler warnings here on some platforms, but they // can be ignored since fAdoptedElements is false. if (fAdoptedElems) delete curElem->fData; // Then delete the current element and move forward // destructor is empty... // curElem->~RefHash2KeysTableBucketElem(); fMemoryManager->deallocate(curElem); curElem = nextElem; } // Clean out this entry fBucketList[buckInd] = 0; } fCount=0; } // this function transfer the data from key1 to key2 template void RefHash2KeysTableOf::transferElement(const void* const key1, void* key2) { // Hash the key XMLSize_t hashVal = fHasher.getHashVal(key1, fHashModulus); assert(hashVal < fHashModulus); // // Search the given bucket for this key. Keep up with the previous // element so we can patch around it. // RefHash2KeysTableBucketElem* curElem = fBucketList[hashVal]; RefHash2KeysTableBucketElem* lastElem = 0; while (curElem) { // if this element has the same primary key, remove it and add it using the new primary key if(fHasher.equals(key1, curElem->fKey1)) { if (!lastElem) { // It was the first in the bucket fBucketList[hashVal] = curElem->fNext; } else { // Patch around the current element lastElem->fNext = curElem->fNext; } // this code comes from put(), but it doesn't update fCount XMLSize_t hashVal2; RefHash2KeysTableBucketElem* newBucket = findBucketElem(key2, curElem->fKey2, hashVal2); if (newBucket) { if (fAdoptedElems) delete newBucket->fData; newBucket->fData = curElem->fData; newBucket->fKey1 = key2; newBucket->fKey2 = curElem->fKey2; } else { newBucket = new (fMemoryManager->allocate(sizeof(RefHash2KeysTableBucketElem))) RefHash2KeysTableBucketElem(key2, curElem->fKey2, curElem->fData, fBucketList[hashVal2]); fBucketList[hashVal2] = newBucket; } RefHash2KeysTableBucketElem* elemToDelete = curElem; // Update just curElem; lastElem must stay the same curElem = curElem->fNext; // Delete the current element // delete elemToDelete; // destructor is empty... // curElem->~RefHash2KeysTableBucketElem(); fMemoryManager->deallocate(elemToDelete); } else { // Move both pointers upwards lastElem = curElem; curElem = curElem->fNext; } } } // --------------------------------------------------------------------------- // RefHash2KeysTableOf: Getters // --------------------------------------------------------------------------- template TVal* RefHash2KeysTableOf::get(const void* const key1, const int key2) { XMLSize_t hashVal; RefHash2KeysTableBucketElem* findIt = findBucketElem(key1, key2, hashVal); if (!findIt) return 0; return findIt->fData; } template const TVal* RefHash2KeysTableOf:: get(const void* const key1, const int key2) const { XMLSize_t hashVal; const RefHash2KeysTableBucketElem* findIt = findBucketElem(key1, key2, hashVal); if (!findIt) return 0; return findIt->fData; } template MemoryManager* RefHash2KeysTableOf::getMemoryManager() const { return fMemoryManager; } template XMLSize_t RefHash2KeysTableOf::getHashModulus() const { return fHashModulus; } // --------------------------------------------------------------------------- // RefHash2KeysTableOf: Putters // --------------------------------------------------------------------------- template void RefHash2KeysTableOf::put(void* key1, int key2, TVal* const valueToAdopt) { // Apply 4 load factor to find threshold. XMLSize_t threshold = fHashModulus * 4; // If we've grown too big, expand the table and rehash. if (fCount >= threshold) rehash(); // First see if the key exists already XMLSize_t hashVal; RefHash2KeysTableBucketElem* newBucket = findBucketElem(key1, key2, hashVal); // // If so,then update its value. If not, then we need to add it to // the right bucket // if (newBucket) { if (fAdoptedElems) delete newBucket->fData; newBucket->fData = valueToAdopt; newBucket->fKey1 = key1; newBucket->fKey2 = key2; } else { newBucket = new (fMemoryManager->allocate(sizeof(RefHash2KeysTableBucketElem))) RefHash2KeysTableBucketElem(key1, key2, valueToAdopt, fBucketList[hashVal]); fBucketList[hashVal] = newBucket; fCount++; } } // --------------------------------------------------------------------------- // RefHash2KeysTableOf: Private methods // --------------------------------------------------------------------------- template inline RefHash2KeysTableBucketElem* RefHash2KeysTableOf:: findBucketElem(const void* const key1, const int key2, XMLSize_t& hashVal) { // Hash the key hashVal = fHasher.getHashVal(key1, fHashModulus); assert(hashVal < fHashModulus); // Search that bucket for the key RefHash2KeysTableBucketElem* curElem = fBucketList[hashVal]; while (curElem) { if((key2==curElem->fKey2) && (fHasher.equals(key1, curElem->fKey1))) return curElem; curElem = curElem->fNext; } return 0; } template inline const RefHash2KeysTableBucketElem* RefHash2KeysTableOf:: findBucketElem(const void* const key1, const int key2, XMLSize_t& hashVal) const { // Hash the key hashVal = fHasher.getHashVal(key1, fHashModulus); assert(hashVal < fHashModulus); // Search that bucket for the key const RefHash2KeysTableBucketElem* curElem = fBucketList[hashVal]; while (curElem) { if((key2==curElem->fKey2) && (fHasher.equals(key1, curElem->fKey1))) return curElem; curElem = curElem->fNext; } return 0; } template void RefHash2KeysTableOf:: rehash() { const XMLSize_t newMod = (fHashModulus * 8)+1; RefHash2KeysTableBucketElem** newBucketList = (RefHash2KeysTableBucketElem**) fMemoryManager->allocate ( newMod * sizeof(RefHash2KeysTableBucketElem*) );//new RefHash2KeysTableBucketElem*[fHashModulus]; // Make sure the new bucket list is destroyed if an // exception is thrown. ArrayJanitor*> guard(newBucketList, fMemoryManager); memset(newBucketList, 0, newMod * sizeof(newBucketList[0])); // Rehash all existing entries. for (XMLSize_t index = 0; index < fHashModulus; index++) { // Get the bucket list head for this entry RefHash2KeysTableBucketElem* curElem = fBucketList[index]; while (curElem) { // Save the next element before we detach this one RefHash2KeysTableBucketElem* nextElem = curElem->fNext; const XMLSize_t hashVal = fHasher.getHashVal(curElem->fKey1, newMod); assert(hashVal < newMod); RefHash2KeysTableBucketElem* newHeadElem = newBucketList[hashVal]; // Insert at the start of this bucket's list. curElem->fNext = newHeadElem; newBucketList[hashVal] = curElem; curElem = nextElem; } } RefHash2KeysTableBucketElem** const oldBucketList = fBucketList; // Everything is OK at this point, so update the // member variables. fBucketList = guard.release(); fHashModulus = newMod; // Delete the old bucket list. fMemoryManager->deallocate(oldBucketList);//delete[] oldBucketList; } // --------------------------------------------------------------------------- // RefHash2KeysTableOfEnumerator: Constructors and Destructor // --------------------------------------------------------------------------- template RefHash2KeysTableOfEnumerator:: RefHash2KeysTableOfEnumerator(RefHash2KeysTableOf* const toEnum , const bool adopt , MemoryManager* const manager) : fAdopted(adopt), fCurElem(0), fCurHash((XMLSize_t)-1), fToEnum(toEnum) , fMemoryManager(manager) , fLockPrimaryKey(0) { if (!toEnum) ThrowXMLwithMemMgr(NullPointerException, XMLExcepts::CPtr_PointerIsZero, fMemoryManager); // // Find the next available bucket element in the hash table. If it // comes back zero, that just means the table is empty. // // Note that the -1 in the current hash tells it to start // from the beginning. // findNext(); } template RefHash2KeysTableOfEnumerator::~RefHash2KeysTableOfEnumerator() { if (fAdopted) delete fToEnum; } // --------------------------------------------------------------------------- // RefHash2KeysTableOfEnumerator: Enum interface // --------------------------------------------------------------------------- template bool RefHash2KeysTableOfEnumerator::hasMoreElements() const { // // If our current has is at the max and there are no more elements // in the current bucket, then no more elements. // if (!fCurElem && (fCurHash == fToEnum->fHashModulus)) return false; return true; } template TVal& RefHash2KeysTableOfEnumerator::nextElement() { // Make sure we have an element to return if (!hasMoreElements()) ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::Enum_NoMoreElements, fMemoryManager); // // Save the current element, then move up to the next one for the // next time around. // RefHash2KeysTableBucketElem* saveElem = fCurElem; findNext(); return *saveElem->fData; } template void RefHash2KeysTableOfEnumerator::nextElementKey(void*& retKey1, int& retKey2) { // Make sure we have an element to return if (!hasMoreElements()) ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::Enum_NoMoreElements, fMemoryManager); // // Save the current element, then move up to the next one for the // next time around. // RefHash2KeysTableBucketElem* saveElem = fCurElem; findNext(); retKey1 = saveElem->fKey1; retKey2 = saveElem->fKey2; return; } template void RefHash2KeysTableOfEnumerator::Reset() { if(fLockPrimaryKey) fCurHash=fToEnum->fHasher.getHashVal(fLockPrimaryKey, fToEnum->fHashModulus); else fCurHash = (XMLSize_t)-1; fCurElem = 0; findNext(); } template void RefHash2KeysTableOfEnumerator::setPrimaryKey(const void* key) { fLockPrimaryKey=key; Reset(); } // --------------------------------------------------------------------------- // RefHash2KeysTableOfEnumerator: Private helper methods // --------------------------------------------------------------------------- template void RefHash2KeysTableOfEnumerator::findNext() { // Code to execute if we have to return only values with the primary key if(fLockPrimaryKey) { if(!fCurElem) fCurElem = fToEnum->fBucketList[fCurHash]; else fCurElem = fCurElem->fNext; while (fCurElem && (!fToEnum->fHasher.equals(fLockPrimaryKey, fCurElem->fKey1))) fCurElem = fCurElem->fNext; // if we didn't found it, make so hasMoreElements() returns false if(!fCurElem) fCurHash = fToEnum->fHashModulus; return; } // // If there is a current element, move to its next element. If this // hits the end of the bucket, the next block will handle the rest. // if (fCurElem) fCurElem = fCurElem->fNext; // // If the current element is null, then we have to move up to the // next hash value. If that is the hash modulus, then we cannot // go further. // if (!fCurElem) { fCurHash++; if (fCurHash == fToEnum->fHashModulus) return; // Else find the next non-empty bucket while (fToEnum->fBucketList[fCurHash]==0) { // Bump to the next hash value. If we max out return fCurHash++; if (fCurHash == fToEnum->fHashModulus) return; } fCurElem = fToEnum->fBucketList[fCurHash]; } } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/QName.cpp0000644000175000017500000003054711247512266017167 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: QName.cpp 810580 2009-09-02 15:52:22Z amassari $ */ #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // QName: Constructors and Destructor // --------------------------------------------------------------------------- QName::QName(MemoryManager* const manager) :fPrefixBufSz(0) ,fLocalPartBufSz(0) ,fRawNameBufSz(0) ,fURIId(0) ,fPrefix(0) ,fLocalPart(0) ,fRawName(0) ,fMemoryManager(manager) { } typedef JanitorMemFunCall CleanupType; QName::QName( const XMLCh* const prefix , const XMLCh* const localPart , const unsigned int uriId , MemoryManager* const manager) :fPrefixBufSz(0) ,fLocalPartBufSz(0) ,fRawNameBufSz(0) ,fURIId(0) ,fPrefix(0) ,fLocalPart(0) ,fRawName(0) ,fMemoryManager(manager) { CleanupType cleanup(this, &QName::cleanUp); try { // // Just call the local setters to set up everything. Too much // work is required to replicate that functionality here. // setName(prefix, localPart, uriId); } catch(const OutOfMemoryException&) { cleanup.release(); throw; } cleanup.release(); } QName::QName( const XMLCh* const rawName , const unsigned int uriId , MemoryManager* const manager) :fPrefixBufSz(0) ,fLocalPartBufSz(0) ,fRawNameBufSz(0) ,fURIId(0) ,fPrefix(0) ,fLocalPart(0) ,fRawName(0) ,fMemoryManager(manager) { CleanupType cleanup(this, &QName::cleanUp); try { // // Just call the local setters to set up everything. Too much // work is required to replicate that functionality here. // setName(rawName, uriId); } catch(const OutOfMemoryException&) { cleanup.release(); throw; } cleanup.release(); } QName::~QName() { cleanUp(); } // --------------------------------------------------------------------------- // QName: Copy Constructors // --------------------------------------------------------------------------- QName::QName(const QName& qname) :XSerializable(qname) ,XMemory(qname) ,fPrefixBufSz(0) ,fLocalPartBufSz(0) ,fRawNameBufSz(0) ,fURIId(0) ,fPrefix(0) ,fLocalPart(0) ,fRawName(0) ,fMemoryManager(qname.fMemoryManager) { XMLSize_t newLen; newLen = XMLString::stringLen(qname.getLocalPart()); fLocalPartBufSz = newLen + 8; fLocalPart = (XMLCh*) fMemoryManager->allocate ( (fLocalPartBufSz + 1) * sizeof(XMLCh) ); //new XMLCh[fLocalPartBufSz + 1]; XMLString::moveChars(fLocalPart, qname.getLocalPart(), newLen + 1); newLen = XMLString::stringLen(qname.getPrefix()); fPrefixBufSz = newLen + 8; fPrefix = (XMLCh*) fMemoryManager->allocate ( (fPrefixBufSz + 1) * sizeof(XMLCh) ); //new XMLCh[fPrefixBufSz + 1]; XMLString::moveChars(fPrefix, qname.getPrefix(), newLen + 1); fURIId = qname.getURI(); } // --------------------------------------------------------------------------- // QName: Getter methods // --------------------------------------------------------------------------- const XMLCh* QName::getRawName() const { // // If there is no buffer, or if there is but we've not faulted in the // value yet, then we have to do that now. // if (!fRawName || !*fRawName) { // // If we have a prefix, then do the prefix:name version. Else, its // just the name. // if (*fPrefix) { // // Calculate the worst case size buffer we will need. We use the // current high water marks of the prefix and name buffers, so it // might be a little wasteful of memory but we don't have to do // string len operations on the two strings. // const XMLSize_t neededLen = fPrefixBufSz + fLocalPartBufSz + 1; // // If no buffer, or the current one is too small, then allocate one // and get rid of any old one. // if (!fRawName || (neededLen > fRawNameBufSz)) { fMemoryManager->deallocate(fRawName); //delete [] fRawName; ((QName*)this)->fRawName = 0; // We have to cast off the const'ness to do this ((QName*)this)->fRawNameBufSz = neededLen; ((QName*)this)->fRawName = (XMLCh*) fMemoryManager->allocate ( (neededLen + 1) * sizeof(XMLCh) ); //new XMLCh[neededLen + 1]; // Make sure its initially empty *fRawName = 0; } const XMLSize_t prefixLen = XMLString::stringLen(fPrefix); XMLString::moveChars(fRawName, fPrefix, prefixLen); fRawName[prefixLen] = chColon; XMLString::copyString(&fRawName[prefixLen+1], fLocalPart); } else { return fLocalPart; } } return fRawName; } XMLCh* QName::getRawName() { // // If there is no buffer, or if there is but we've not faulted in the // value yet, then we have to do that now. // if (!fRawName || !*fRawName) { // // If we have a prefix, then do the prefix:name version. Else, its // just the name. // if (*fPrefix) { // // Calculate the worst case size buffer we will need. We use the // current high water marks of the prefix and name buffers, so it // might be a little wasteful of memory but we don't have to do // string len operations on the two strings. // const XMLSize_t neededLen = fPrefixBufSz + fLocalPartBufSz + 1; // // If no buffer, or the current one is too small, then allocate one // and get rid of any old one. // if (!fRawName || (neededLen > fRawNameBufSz)) { fMemoryManager->deallocate(fRawName); //delete [] fRawName; fRawName = 0; // We have to cast off the const'ness to do this ((QName*)this)->fRawNameBufSz = neededLen; ((QName*)this)->fRawName = (XMLCh*) fMemoryManager->allocate ( (neededLen + 1) * sizeof(XMLCh) ); //new XMLCh[neededLen + 1]; // Make sure its initially empty *fRawName = 0; } const XMLSize_t prefixLen = XMLString::stringLen(fPrefix); XMLString::moveChars(fRawName, fPrefix, prefixLen); fRawName[prefixLen] = chColon; XMLString::copyString(&fRawName[prefixLen+1], fLocalPart); } else { return fLocalPart; } } return fRawName; } // --------------------------------------------------------------------------- // QName: Setter methods // --------------------------------------------------------------------------- void QName::setName(const XMLCh* const prefix , const XMLCh* const localPart , const unsigned int uriId) { setPrefix(prefix); setLocalPart(localPart); // And clean up any QName and leave it undone until/if asked for again if (fRawName) *fRawName = 0; // And finally store the URI id parameter fURIId = uriId; } void QName::setName(const XMLCh* const rawName , const unsigned int uriId) { //set the rawName XMLSize_t newLen = XMLString::stringLen(rawName); //find out the prefix and localPart from the rawName const int colonInd = XMLString::indexOf(rawName, chColon); if (colonInd >= 0) { if (!fRawNameBufSz || (newLen > fRawNameBufSz)) { fMemoryManager->deallocate(fRawName); //delete [] fRawName; fRawName = 0; fRawNameBufSz = newLen + 8; fRawName = (XMLCh*) fMemoryManager->allocate ( (fRawNameBufSz + 1) * sizeof(XMLCh) ); //new XMLCh[fRawNameBufSz + 1]; } XMLString::moveChars(fRawName, rawName, newLen + 1); setNPrefix(rawName, colonInd); } else { // No colon, so we just have a name with no prefix setNPrefix(XMLUni::fgZeroLenString, 0); // And clean up any QName and leave it undone until/if asked for again if (fRawName) *fRawName = 0; } setNLocalPart(&rawName[colonInd+1], newLen-colonInd-1); // And finally store the URI id parameter fURIId = uriId; } void QName::setNPrefix(const XMLCh* prefix, const XMLSize_t newLen) { if (!fPrefixBufSz || (newLen > fPrefixBufSz)) { fMemoryManager->deallocate(fPrefix); //delete [] fPrefix; fPrefix = 0; fPrefixBufSz = newLen + 8; fPrefix = (XMLCh*) fMemoryManager->allocate ( (fPrefixBufSz + 1) * sizeof(XMLCh) ); //new XMLCh[fPrefixBufSz + 1]; } XMLString::moveChars(fPrefix, prefix, newLen); fPrefix[newLen] = chNull; } void QName::setNLocalPart(const XMLCh* localPart, const XMLSize_t newLen) { if (!fLocalPartBufSz || (newLen > fLocalPartBufSz)) { fMemoryManager->deallocate(fLocalPart); //delete [] fLocalPart; fLocalPart = 0; fLocalPartBufSz = newLen + 8; fLocalPart = (XMLCh*) fMemoryManager->allocate ( (fLocalPartBufSz + 1) * sizeof(XMLCh) ); //new XMLCh[fLocalPartBufSz + 1]; } XMLString::moveChars(fLocalPart, localPart, newLen); fLocalPart[newLen] = chNull; } void QName::setValues(const QName& qname) { setPrefix(qname.getPrefix()); setLocalPart(qname.getLocalPart()); setURI(qname.getURI()); } // ----------------------------------------------------------------------- // comparison // ----------------------------------------------------------------------- bool QName::operator==(const QName& qname) const { // if we are an unitialized QName, check that the other is unitialized too if (!fLocalPart && !fPrefix) return !qname.fLocalPart && !qname.fPrefix; if (fURIId == 0) // null URI return (XMLString::equals(getRawName(),qname.getRawName())); return ((fURIId == qname.getURI()) && (XMLString::equals(fLocalPart, qname.getLocalPart()))); } // --------------------------------------------------------------------------- // QName: Private, helper methods // --------------------------------------------------------------------------- void QName::cleanUp() { fMemoryManager->deallocate(fLocalPart); //delete [] fLocalPart; fMemoryManager->deallocate(fPrefix); //delete [] fPrefix; fMemoryManager->deallocate(fRawName); //delete [] fRawName; fLocalPart = fPrefix = fRawName = 0; } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(QName) void QName::serialize(XSerializeEngine& serEng) { if (serEng.isStoring()) { serEng.writeString(fPrefix, fPrefixBufSz, XSerializeEngine::toWriteBufferLen); serEng.writeString(fLocalPart, fLocalPartBufSz, XSerializeEngine::toWriteBufferLen); //do not serialize rawName serEng<>fURIId; } } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/NullPointerException.hpp0000644000175000017500000000226210606722647022322 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: NullPointerException.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_NULLPOINTEREXCEPTION_HPP) #define XERCESC_INCLUDE_GUARD_NULLPOINTEREXCEPTION_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN MakeXMLException(NullPointerException, XMLUTIL_EXPORT) XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/TranscodingException.hpp0000644000175000017500000000226110606722647022321 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: TranscodingException.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_TRANSCODINGEXCEPTION_HPP) #define XERCESC_INCLUDE_GUARD_TRANSCODINGEXCEPTION_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN MakeXMLException(TranscodingException, XMLUTIL_EXPORT) XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/CountedPointer.hpp0000644000175000017500000000444710606722647021141 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: CountedPointer.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_COUNTEDPOINTERTO_HPP) #define XERCESC_INCLUDE_GUARD_COUNTEDPOINTERTO_HPP #include XERCES_CPP_NAMESPACE_BEGIN template class CountedPointerTo : public XMemory { public: // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- CountedPointerTo(const CountedPointerTo& toCopy); CountedPointerTo(T* p = 0); ~CountedPointerTo(); // ----------------------------------------------------------------------- // Operators // ----------------------------------------------------------------------- CountedPointerTo& operator=(const CountedPointerTo& other); operator T*(); const T* operator->() const; T* operator->(); const T& operator*() const; T& operator*(); private: // ----------------------------------------------------------------------- // Data members // // fPtr // The pointer that we are counting. The T type must implement the // addRef() and removeRef() APIs but it doesn't have to derive from // any particular type. // ----------------------------------------------------------------------- T* fPtr; }; XERCES_CPP_NAMESPACE_END #if !defined(XERCES_TMPLSINC) #include #endif #endif xerces-c-3.1.1/src/xercesc/util/DefaultPanicHandler.hpp0000644000175000017500000000433210606722647022025 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DefaultPanicHandler.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DEFAULT_PANICHANDLER_HPP) #define XERCESC_INCLUDE_GUARD_DEFAULT_PANICHANDLER_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN /** * Receive notification of panic. * *

    This is Xerces' default implementation of the PanicHanlder * interface, which will be instantiated and used in the * absence of an application's panic handler. *

    */ class XMLUTIL_EXPORT DefaultPanicHandler : public XMemory, public PanicHandler { public: /** @name hidden Constructors */ //@{ /** Default constructor */ DefaultPanicHandler(){}; /** Destructor */ virtual ~DefaultPanicHandler(){}; //@} /** @name Implement virtual panic handler interface */ //@{ /** * Receive notification of panic * *

    Upon invocation, a corresponding error message will be output * to the stderr, and program exit. *

    * * @param reason The reason of panic * */ virtual void panic(const PanicHandler::PanicReasons reason); //@} private: /* Unimplemented Constructors and operators */ /* Copy constructor */ DefaultPanicHandler(const PanicHandler&); /** Assignment operator */ DefaultPanicHandler& operator=(const DefaultPanicHandler&); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/XMLStringTokenizer.hpp0000644000175000017500000001567311360344373021716 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLStringTokenizer.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_XMLSTRINGTOKENIZER_HPP) #define XERCESC_INCLUDE_GUARD_XMLSTRINGTOKENIZER_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN /** * The string tokenizer class breaks a string into tokens. * * The XMLStringTokenizer methods do not distinguish among identifiers, * numbers, and quoted strings, nor do they recognize and skip comments * * A XMLStringTokenizer object internally maintains a current position within * the string to be tokenized. Some operations advance this current position * past the characters processed. */ class XMLUTIL_EXPORT XMLStringTokenizer :public XMemory { public: // ----------------------------------------------------------------------- // Public Constructors // ----------------------------------------------------------------------- /** @name Constructors */ //@{ /** * Constructs a string tokenizer for the specified string. The tokenizer * uses the default delimiter set, which is "\t\n\r\f": the space * character, the tab character, the newline character, the * carriage-return character, and the form-feed character. Delimiter * characters themselves will not be treated as tokens. * * @param srcStr The string to be parsed. * @param manager Pointer to the memory manager to be used to * allocate objects. * */ XMLStringTokenizer(const XMLCh* const srcStr, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); /** * Constructs a string tokenizer for the specified string. The characters * in the delim argument are the delimiters for separating tokens. * Delimiter characters themselves will not be treated as tokens. * * @param srcStr The string to be parsed. * @param delim The set of delimiters. * @param manager Pointer to the memory manager to be used to * allocate objects. */ XMLStringTokenizer(const XMLCh* const srcStr , const XMLCh* const delim , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); //@} // ----------------------------------------------------------------------- // Public Destructor // ----------------------------------------------------------------------- /** @name Destructor. */ //@{ ~XMLStringTokenizer(); //@} // ----------------------------------------------------------------------- // Management methods // ----------------------------------------------------------------------- /** @name Management Function */ //@{ /** * Tests if there are more tokens available from this tokenizer's string. * * Returns true if and only if there is at least one token in the string * after the current position; false otherwise. */ bool hasMoreTokens(); /** * Calculates the number of times that this tokenizer's nextToken method * can be called to return a valid token. The current position is not * advanced. * * Returns the number of tokens remaining in the string using the current * delimiter set. */ unsigned int countTokens(); /** * Returns the next token from this string tokenizer. * * Function allocated, function managed (fafm). The calling function * does not need to worry about deleting the returned pointer. */ XMLCh* nextToken(); //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XMLStringTokenizer(const XMLStringTokenizer&); XMLStringTokenizer& operator=(const XMLStringTokenizer&); // ----------------------------------------------------------------------- // CleanUp methods // ----------------------------------------------------------------------- void cleanUp(); // ----------------------------------------------------------------------- // Helper methods // ----------------------------------------------------------------------- bool isDelimeter(const XMLCh ch); // ----------------------------------------------------------------------- // Private data members // // fOffset // The current position in the parsed string. // // fStringLen // The length of the string parsed (for convenience). // // fString // The string to be parsed // // fDelimeters // A set of delimiter characters // // fTokens // A vector of the token strings // ----------------------------------------------------------------------- XMLSize_t fOffset; XMLSize_t fStringLen; XMLCh* fString; const XMLCh* fDelimeters; RefArrayVectorOf* fTokens; MemoryManager* fMemoryManager; }; // --------------------------------------------------------------------------- // XMLStringTokenizer: Helper methods // --------------------------------------------------------------------------- inline bool XMLStringTokenizer::isDelimeter(const XMLCh ch) { return XMLString::indexOf(fDelimeters, ch) == -1 ? false : true; } // --------------------------------------------------------------------------- // XMLStringTokenizer: Management methods // --------------------------------------------------------------------------- inline unsigned int XMLStringTokenizer::countTokens() { if (fStringLen == 0) return 0; unsigned int tokCount = 0; bool inToken = false; for (XMLSize_t i= fOffset; i< fStringLen; i++) { if (isDelimeter(fString[i])) { if (inToken) { inToken = false; } continue; } if (!inToken) { tokCount++; inToken = true; } } // end for return tokCount; } XERCES_CPP_NAMESPACE_END #endif /** * End of file XMLStringTokenizer.hpp */ xerces-c-3.1.1/src/xercesc/util/XMLFileMgr.hpp0000644000175000017500000000503610606722647020100 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLFileMgr.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_XMLFILEMGR_HPP) #define XERCESC_INCLUDE_GUARD_XMLFILEMGR_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN typedef void* FileHandle; #define XERCES_Invalid_File_Handle 0 // Abstract class for files. This is be used to allow multiple file handling implementations. class XMLFileMgr : public XMemory { public: XMLFileMgr() {} virtual ~XMLFileMgr() {} // File access virtual FileHandle fileOpen(const XMLCh* path, bool toWrite, MemoryManager* const manager) = 0; virtual FileHandle fileOpen(const char* path, bool toWrite, MemoryManager* const manager) = 0; virtual FileHandle openStdIn(MemoryManager* const manager) = 0; virtual void fileClose(FileHandle f, MemoryManager* const manager) = 0; virtual void fileReset(FileHandle f, MemoryManager* const manager) = 0; virtual XMLFilePos curPos(FileHandle f, MemoryManager* const manager) = 0; virtual XMLFilePos fileSize(FileHandle f, MemoryManager* const manager) = 0; virtual XMLSize_t fileRead(FileHandle f, XMLSize_t byteCount, XMLByte* buffer, MemoryManager* const manager) = 0; virtual void fileWrite(FileHandle f, XMLSize_t byteCount, const XMLByte* buffer, MemoryManager* const manager) = 0; // Ancillary path handling routines virtual XMLCh* getFullPath(const XMLCh* const srcPath, MemoryManager* const manager) = 0; virtual XMLCh* getCurrentDirectory(MemoryManager* const manager) = 0; virtual bool isRelative(const XMLCh* const toCheck, MemoryManager* const manager) = 0; }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/XMLURL.cpp0000644000175000017500000012435611325541216017205 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLURL.cpp 901107 2010-01-20 08:45:02Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Local types // // TypeEntry // This structure defines a single entry in the list of URL types. Each // entry indicates the prefix for that type of URL, and the SourceTypes // value it maps to. // --------------------------------------------------------------------------- struct ProtoEntry { XMLURL::Protocols protocol; const XMLCh* prefix; unsigned int defPort; }; // --------------------------------------------------------------------------- // Local data // // gXXXString // These are the strings for our prefix types. They all have to be // Unicode strings all the time, so we can't just do regular strings. // // gProtoList // The list of URL types that we support and some info related to each // one. // // gMaxProtoLen // The length of the longest protocol string // // NOTE:!!! Be sure to keep this up to date if new protocols are added! // --------------------------------------------------------------------------- static const XMLCh gFileString[] = { chLatin_f, chLatin_i, chLatin_l, chLatin_e, chNull }; static const XMLCh gFTPString[] = { chLatin_f, chLatin_t, chLatin_p, chNull }; static const XMLCh gHTTPString[] = { chLatin_h, chLatin_t, chLatin_t, chLatin_p, chNull }; static const XMLCh gHTTPSString[] = { chLatin_h, chLatin_t, chLatin_t, chLatin_p, chLatin_s, chNull }; static ProtoEntry gProtoList[XMLURL::Protocols_Count] = { { XMLURL::File , gFileString , 0 } , { XMLURL::HTTP , gHTTPString , 80 } , { XMLURL::FTP , gFTPString , 21 } , { XMLURL::HTTPS , gHTTPSString , 443 } }; // !!! Keep these up to date with list above! static const unsigned int gMaxProtoLen = 5; static const XMLCh gListOne[] = { chColon, chForwardSlash, chNull }; static const XMLCh gListTwo[] = { chAt, chNull }; static const XMLCh gListThree[] = { chColon, chNull }; static const XMLCh gListFour[] = { chForwardSlash, chNull }; static const XMLCh gListFive[] = { chPound, chQuestion, chNull }; static const XMLCh gListSix[] = { chPound, chNull }; // --------------------------------------------------------------------------- // Local methods // --------------------------------------------------------------------------- static bool isHexDigit(const XMLCh toCheck) { if (((toCheck >= chDigit_0) && (toCheck <= chDigit_9)) || ((toCheck >= chLatin_A) && (toCheck <= chLatin_Z)) || ((toCheck >= chLatin_a) && (toCheck <= chLatin_z))) { return true; } return false; } static unsigned int xlatHexDigit(const XMLCh toXlat) { if ((toXlat >= chDigit_0) && (toXlat <= chDigit_9)) return (unsigned int)(toXlat - chDigit_0); if ((toXlat >= chLatin_A) && (toXlat <= chLatin_Z)) return (unsigned int)(toXlat - chLatin_A) + 10; return (unsigned int)(toXlat - chLatin_a) + 10; } // --------------------------------------------------------------------------- // XMLURL: Public, static methods // --------------------------------------------------------------------------- XMLURL::Protocols XMLURL::lookupByName(const XMLCh* const protoName) { for (unsigned int index = 0; index < XMLURL::Protocols_Count; index++) { if (!XMLString::compareIStringASCII(protoName, gProtoList[index].prefix)) return gProtoList[index].protocol; } return XMLURL::Unknown; } // --------------------------------------------------------------------------- // XMLURL: Constructors and Destructor // --------------------------------------------------------------------------- XMLURL::XMLURL(MemoryManager* const manager) : fMemoryManager(manager) , fFragment(0) , fHost(0) , fPassword(0) , fPath(0) , fPortNum(0) , fProtocol(XMLURL::Unknown) , fQuery(0) , fUser(0) , fURLText(0) , fHasInvalidChar(false) { } typedef JanitorMemFunCall CleanupType; XMLURL::XMLURL(const XMLCh* const baseURL , const XMLCh* const relativeURL , MemoryManager* const manager) : fMemoryManager(manager) , fFragment(0) , fHost(0) , fPassword(0) , fPath(0) , fPortNum(0) , fProtocol(XMLURL::Unknown) , fQuery(0) , fUser(0) , fURLText(0) , fHasInvalidChar(false) { CleanupType cleanup(this, &XMLURL::cleanUp); try { setURL(baseURL, relativeURL); } catch(const OutOfMemoryException&) { cleanup.release(); throw; } cleanup.release(); } XMLURL::XMLURL(const XMLCh* const baseURL , const char* const relativeURL , MemoryManager* const manager) : fMemoryManager(manager) , fFragment(0) , fHost(0) , fPassword(0) , fPath(0) , fPortNum(0) , fProtocol(XMLURL::Unknown) , fQuery(0) , fUser(0) , fURLText(0) , fHasInvalidChar(false) { CleanupType cleanup(this, &XMLURL::cleanUp); XMLCh* tmpRel = XMLString::transcode(relativeURL, fMemoryManager); ArrayJanitor janRel(tmpRel, fMemoryManager); try { setURL(baseURL, tmpRel); } catch(const OutOfMemoryException&) { cleanup.release(); throw; } cleanup.release(); } XMLURL::XMLURL(const XMLURL& baseURL , const XMLCh* const relativeURL) : fMemoryManager(baseURL.fMemoryManager) , fFragment(0) , fHost(0) , fPassword(0) , fPath(0) , fPortNum(0) , fProtocol(XMLURL::Unknown) , fQuery(0) , fUser(0) , fURLText(0) , fHasInvalidChar(false) { CleanupType cleanup(this, &XMLURL::cleanUp); try { setURL(baseURL, relativeURL); } catch(const OutOfMemoryException&) { cleanup.release(); throw; } cleanup.release(); } XMLURL::XMLURL(const XMLURL& baseURL , const char* const relativeURL) : fMemoryManager(baseURL.fMemoryManager) , fFragment(0) , fHost(0) , fPassword(0) , fPath(0) , fPortNum(0) , fProtocol(XMLURL::Unknown) , fQuery(0) , fUser(0) , fURLText(0) , fHasInvalidChar(false) { CleanupType cleanup(this, &XMLURL::cleanUp); XMLCh* tmpRel = XMLString::transcode(relativeURL, fMemoryManager); ArrayJanitor janRel(tmpRel, fMemoryManager); try { setURL(baseURL, tmpRel); } catch(const OutOfMemoryException&) { cleanup.release(); throw; } cleanup.release(); } XMLURL::XMLURL(const XMLCh* const urlText, MemoryManager* const manager) : fMemoryManager(manager) , fFragment(0) , fHost(0) , fPassword(0) , fPath(0) , fPortNum(0) , fProtocol(XMLURL::Unknown) , fQuery(0) , fUser(0) , fURLText(0) , fHasInvalidChar(false) { CleanupType cleanup(this, &XMLURL::cleanUp); try { setURL(urlText); } catch(const OutOfMemoryException&) { cleanup.release(); throw; } cleanup.release(); } XMLURL::XMLURL(const char* const urlText, MemoryManager* const manager) : fMemoryManager(manager) , fFragment(0) , fHost(0) , fPassword(0) , fPath(0) , fPortNum(0) , fProtocol(XMLURL::Unknown) , fQuery(0) , fUser(0) , fURLText(0) , fHasInvalidChar(false) { CleanupType cleanup(this, &XMLURL::cleanUp); XMLCh* tmpText = XMLString::transcode(urlText, fMemoryManager); ArrayJanitor janRel(tmpText, fMemoryManager); try { setURL(tmpText); } catch(const OutOfMemoryException&) { cleanup.release(); throw; } cleanup.release(); } XMLURL::XMLURL(const XMLURL& toCopy) : XMemory(toCopy) , fMemoryManager(toCopy.fMemoryManager) , fFragment(0) , fHost(0) , fPassword(0) , fPath(0) , fPortNum(toCopy.fPortNum) , fProtocol(toCopy.fProtocol) , fQuery(0) , fUser(0) , fURLText(0) , fHasInvalidChar(toCopy.fHasInvalidChar) { CleanupType cleanup(this, &XMLURL::cleanUp); try { fFragment = XMLString::replicate(toCopy.fFragment, fMemoryManager); fHost = XMLString::replicate(toCopy.fHost, fMemoryManager); fPassword = XMLString::replicate(toCopy.fPassword, fMemoryManager); fPath = XMLString::replicate(toCopy.fPath, fMemoryManager); fQuery = XMLString::replicate(toCopy.fQuery, fMemoryManager); fUser = XMLString::replicate(toCopy.fUser, fMemoryManager); fURLText = XMLString::replicate(toCopy.fURLText, fMemoryManager); } catch(const OutOfMemoryException&) { cleanup.release(); throw; } cleanup.release(); } XMLURL::~XMLURL() { cleanUp(); } // --------------------------------------------------------------------------- // XMLURL: Public operators // --------------------------------------------------------------------------- XMLURL& XMLURL::operator=(const XMLURL& toAssign) { if (this == &toAssign) return *this; // Clean up our stuff cleanUp(); // And copy his stuff fMemoryManager = toAssign.fMemoryManager; fFragment = XMLString::replicate(toAssign.fFragment, fMemoryManager); fHost = XMLString::replicate(toAssign.fHost, fMemoryManager); fPassword = XMLString::replicate(toAssign.fPassword, fMemoryManager); fPath = XMLString::replicate(toAssign.fPath, fMemoryManager); fPortNum = toAssign.fPortNum; fProtocol = toAssign.fProtocol; fQuery = XMLString::replicate(toAssign.fQuery, fMemoryManager); fUser = XMLString::replicate(toAssign.fUser, fMemoryManager); fURLText = XMLString::replicate(toAssign.fURLText, fMemoryManager); fHasInvalidChar = toAssign.fHasInvalidChar; return *this; } bool XMLURL::operator==(const XMLURL& toCompare) const { // // Compare the two complete URLs (which have been processed the same // way so they should now be the same even if they came in via different // relative parts. // if (!XMLString::equals(getURLText(), toCompare.getURLText())) return false; return true; } // --------------------------------------------------------------------------- // XMLURL: Getter methods // --------------------------------------------------------------------------- unsigned int XMLURL::getPortNum() const { // // If it was not provided explicitly, then lets return the default one // for the protocol. // if (!fPortNum) { if (fProtocol == Unknown) return 0; return gProtoList[fProtocol].defPort; } return fPortNum; } const XMLCh* XMLURL::getProtocolName() const { // Check to see if its ever been set if (fProtocol == Unknown) ThrowXMLwithMemMgr(MalformedURLException, XMLExcepts::URL_NoProtocolPresent, fMemoryManager); return gProtoList[fProtocol].prefix; } // --------------------------------------------------------------------------- // XMLURL: Setter methods // --------------------------------------------------------------------------- void XMLURL::setURL(const XMLCh* const urlText) { // // Try to parse the URL. // cleanUp(); parse(urlText); } void XMLURL::setURL(const XMLCh* const baseURL , const XMLCh* const relativeURL) { cleanUp(); // Parse our URL string parse(relativeURL); // // If its relative and the base is non-null and non-empty, then // parse the base URL string and conglomerate them. // if (isRelative() && baseURL) { if (*baseURL) { XMLURL basePart(baseURL, fMemoryManager); if (!conglomerateWithBase(basePart, false)) { cleanUp(); ThrowXMLwithMemMgr(MalformedURLException, XMLExcepts::URL_RelativeBaseURL, fMemoryManager); } } } } // this version of setURL doesn't throw a malformedurl exception // instead it returns false when it failed (or when it would of // thrown a malformedurl exception) bool XMLURL::setURL(const XMLCh* const baseURL , const XMLCh* const relativeURL , XMLURL& xmlURL) { cleanUp(); // Parse our URL string if (parse(relativeURL, xmlURL)) { // If its relative and the base is non-null and non-empty, then // parse the base URL string and conglomerate them. // if (isRelative() && baseURL && *baseURL) { XMLURL basePart(fMemoryManager); if (parse(baseURL, basePart) && conglomerateWithBase(basePart, false)) { return true; } } else return true; } return false; } void XMLURL::setURL(const XMLURL& baseURL , const XMLCh* const relativeURL) { cleanUp(); // Parse our URL string parse(relativeURL); // If its relative, then conglomerate with the base URL if (isRelative()) conglomerateWithBase(baseURL); } // --------------------------------------------------------------------------- // XMLURL: Miscellaneous methods // --------------------------------------------------------------------------- bool XMLURL::isRelative() const { // If no protocol then relative if (fProtocol == Unknown) return true; // If no path, or the path is not absolute, then relative if (!fPath) return true; if (*fPath != chForwardSlash) return true; return false; } bool XMLURL::hasInvalidChar() const { return fHasInvalidChar; } BinInputStream* XMLURL::makeNewStream() const { // // If its a local host, then we short circuit it and use our own file // stream support. Otherwise, we just let it fall through and let the // installed network access object provide a stream. // if (fProtocol == XMLURL::File) { if (!fHost || !XMLString::compareIStringASCII(fHost, XMLUni::fgLocalHostString)) { XMLCh* realPath = XMLString::replicate(fPath, fMemoryManager); ArrayJanitor basePathName(realPath, fMemoryManager); // // Need to manually replace any character reference %xx first // HTTP protocol will be done automatically by the netaccessor // XMLSize_t end = XMLString::stringLen(realPath); int percentIndex = XMLString::indexOf(realPath, chPercent, 0, fMemoryManager); while (percentIndex != -1) { if (percentIndex+2 >= (int)end || !isHexDigit(realPath[percentIndex+1]) || !isHexDigit(realPath[percentIndex+2])) { XMLCh value1[4]; XMLString::moveChars(value1, &(realPath[percentIndex]), 3); value1[3] = chNull; ThrowXMLwithMemMgr2(MalformedURLException , XMLExcepts::XMLNUM_URI_Component_Invalid_EscapeSequence , realPath , value1 , fMemoryManager); } unsigned int value = (xlatHexDigit(realPath[percentIndex+1]) * 16) + xlatHexDigit(realPath[percentIndex+2]); realPath[percentIndex] = XMLCh(value); XMLSize_t i =0; for (i = percentIndex + 1; i < end - 2 ; i++) realPath[i] = realPath[i+2]; realPath[i] = chNull; end = i; if (((XMLSize_t)(percentIndex + 1)) < end) percentIndex = XMLString::indexOf(realPath, chPercent, percentIndex + 1, fMemoryManager); else percentIndex = -1; } BinFileInputStream* retStrm = new (fMemoryManager) BinFileInputStream(realPath, fMemoryManager); if (!retStrm->getIsOpen()) { delete retStrm; return 0; } return retStrm; } } // // If we don't have have an installed net accessor object, then we // have to just throw here. // if (!XMLPlatformUtils::fgNetAccessor) ThrowXMLwithMemMgr(MalformedURLException, XMLExcepts::URL_UnsupportedProto, fMemoryManager); // Else ask the net accessor to create the stream return XMLPlatformUtils::fgNetAccessor->makeNew(*this); } void XMLURL::makeRelativeTo(const XMLCh* const baseURLText) { // If this one is not relative, don't bother if (!isRelative()) return; XMLURL baseURL(baseURLText, fMemoryManager); conglomerateWithBase(baseURL); } void XMLURL::makeRelativeTo(const XMLURL& baseURL) { // If this one is not relative, don't bother if (!isRelative()) return; conglomerateWithBase(baseURL); } // --------------------------------------------------------------------------- // XMLURL: Private helper methods // --------------------------------------------------------------------------- // // This method will take the broken out parts of the URL and build up the // full text. We don't do this unless someone asks us to, since its often // never required. // void XMLURL::buildFullText() { // Calculate the worst case size of the buffer required XMLSize_t bufSize = gMaxProtoLen + 1 + XMLString::stringLen(fFragment) + 1 + XMLString::stringLen(fHost) + 2 + XMLString::stringLen(fPassword) + 1 + XMLString::stringLen(fPath) + XMLString::stringLen(fQuery) + 1 + XMLString::stringLen(fUser) + 1 + 32; // Clean up the existing buffer and allocate another fMemoryManager->deallocate(fURLText);//delete [] fURLText; fURLText = (XMLCh*) fMemoryManager->allocate((bufSize) * sizeof(XMLCh));//new XMLCh[bufSize]; *fURLText = 0; XMLCh* outPtr = fURLText; if (fProtocol != Unknown) { XMLString::catString(fURLText, getProtocolName()); outPtr += XMLString::stringLen(fURLText); *outPtr++ = chColon; *outPtr++ = chForwardSlash; *outPtr++ = chForwardSlash; } if (fUser) { XMLString::copyString(outPtr, fUser); outPtr += XMLString::stringLen(fUser); if (fPassword) { *outPtr++ = chColon; XMLString::copyString(outPtr, fPassword); outPtr += XMLString::stringLen(fPassword); } *outPtr++ = chAt; } if (fHost) { XMLString::copyString(outPtr, fHost); outPtr += XMLString::stringLen(fHost); // // If the port is zero, then we don't put it in. Else we need // to because it was explicitly provided. // if (fPortNum) { *outPtr++ = chColon; XMLCh tmpBuf[17]; XMLString::binToText(fPortNum, tmpBuf, 16, 10, fMemoryManager); XMLString::copyString(outPtr, tmpBuf); outPtr += XMLString::stringLen(tmpBuf); } } if (fPath) { XMLString::copyString(outPtr, fPath); outPtr += XMLString::stringLen(fPath); } if (fQuery) { *outPtr++ = chQuestion; XMLString::copyString(outPtr, fQuery); outPtr += XMLString::stringLen(fQuery); } if (fFragment) { *outPtr++ = chPound; XMLString::copyString(outPtr, fFragment); outPtr += XMLString::stringLen(fFragment); } // Cap it off in case the last op was not a string copy *outPtr = 0; } // // Just a central place to handle cleanup, since its done from a number // of different spots. // void XMLURL::cleanUp() { fMemoryManager->deallocate(fFragment);//delete [] fFragment; fMemoryManager->deallocate(fHost);//delete [] fHost; fMemoryManager->deallocate(fPassword);//delete [] fPassword; fMemoryManager->deallocate(fPath);//delete [] fPath; fMemoryManager->deallocate(fQuery);//delete [] fQuery; fMemoryManager->deallocate(fUser);//delete [] fUser; fMemoryManager->deallocate(fURLText);//delete [] fURLText; fFragment = 0; fHost = 0; fPassword = 0; fPath = 0; fQuery = 0; fUser = 0; fURLText = 0; fProtocol = Unknown; fPortNum = 0; fHasInvalidChar = false; } //This function has been modified to take a bool parameter and the //functionality inside looks irrational but is only to make //solaris 2.7 CC 5.0 optimized build happy. bool XMLURL::conglomerateWithBase(const XMLURL& baseURL, bool useExceptions) { // The base URL cannot be relative if (baseURL.isRelative()) { if (useExceptions) ThrowXMLwithMemMgr(MalformedURLException, XMLExcepts::URL_RelativeBaseURL, fMemoryManager); else return false; } // // Check a special case. If all we have is a fragment, then we want // to just take the base host and path, plus our fragment. // if ((fProtocol == Unknown) && !fHost && !fPath && fFragment) { // Just in case, make sure we don't leak the user or password values fMemoryManager->deallocate(fUser);//delete [] fUser; fUser = 0; fMemoryManager->deallocate(fPassword);//delete [] fPassword; fPassword = 0; // Copy over the protocol and port number as is fProtocol = baseURL.fProtocol; fPortNum = baseURL.fPortNum; // Replicate the base fields that are provided fHost = XMLString::replicate(baseURL.fHost, fMemoryManager); fUser = XMLString::replicate(baseURL.fUser, fMemoryManager); fPassword = XMLString::replicate(baseURL.fPassword, fMemoryManager); fPath = XMLString::replicate(baseURL.fPath, fMemoryManager); return true; } // // All we have to do is run up through our fields and, for each one // that we don't have, use the based URL's. Once we hit one field // that we have, we stop. // if (fProtocol != Unknown) return true; fProtocol = baseURL.fProtocol; // // If the protocol is not file, and we either already have our own // host, or the base does not have one, then we are done. // if (fProtocol != File) { if (fHost || !baseURL.fHost) return true; } // Replicate all of the hosty stuff if the base has one if (baseURL.fHost) { // Just in case, make sure we don't leak a user or password field fMemoryManager->deallocate(fUser);//delete [] fUser; fUser = 0; fMemoryManager->deallocate(fPassword);//delete [] fPassword; fPassword = 0; fMemoryManager->deallocate(fHost);//delete [] fHost; fHost = 0; fHost = XMLString::replicate(baseURL.fHost, fMemoryManager); fUser = XMLString::replicate(baseURL.fUser, fMemoryManager); fPassword = XMLString::replicate(baseURL.fPassword, fMemoryManager); fPortNum = baseURL.fPortNum; } // If we have a path and its absolute, then we are done const bool hadPath = (fPath != 0); if (hadPath) { if (*fPath == chForwardSlash) return true; } // Its a relative path, so weave them together. if (baseURL.fPath) { XMLCh* temp = XMLPlatformUtils::weavePaths(baseURL.fPath, fPath ,fMemoryManager); fMemoryManager->deallocate(fPath);//delete [] fPath; fPath = temp; } // If we had any original path, then we are done if (hadPath) return true; // We had no original path, so go on to deal with the query/fragment parts if (fQuery || !baseURL.fQuery) return true; fQuery = XMLString::replicate(baseURL.fQuery, fMemoryManager); if (fFragment || !baseURL.fFragment) return true; fFragment = XMLString::replicate(baseURL.fFragment, fMemoryManager); return true; } void XMLURL::parse(const XMLCh* const urlText) { // Simplify things by checking for the psycho scenarios first if (!*urlText) ThrowXMLwithMemMgr(MalformedURLException, XMLExcepts::URL_NoProtocolPresent, fMemoryManager); // Before we start, check if this urlText contains valid uri characters if (!XMLUri::isURIString(urlText)) fHasInvalidChar = true; else fHasInvalidChar = false; // // The first thing we will do is to check for a file name, so that // we don't waste time thinking its a URL. If its in the form x:\ or x:/ // and x is an ASCII letter, then assume that's the deal. // if (((*urlText >= chLatin_A) && (*urlText <= chLatin_Z)) || ((*urlText >= chLatin_a) && (*urlText <= chLatin_z))) { if (*(urlText + 1) == chColon) { if ((*(urlText + 2) == chForwardSlash) || (*(urlText + 2) == chBackSlash)) { ThrowXMLwithMemMgr(MalformedURLException, XMLExcepts::URL_NoProtocolPresent, fMemoryManager); } } } // Get a copy of the URL that we can modify XMLCh* srcCpy = XMLString::replicate(urlText, fMemoryManager); ArrayJanitor janSrcCopy(srcCpy, fMemoryManager); // // Get a pointer now that we can run up thrown the source as we parse // bits and pieces out of it. // XMLCh* srcPtr = srcCpy; // Run up past any spaces while (*srcPtr) { if (!XMLChar1_0::isWhitespace(*srcPtr)) break; srcPtr++; } // Make sure it wasn't all space if (!*srcPtr) ThrowXMLwithMemMgr(MalformedURLException, XMLExcepts::URL_NoProtocolPresent, fMemoryManager); // // Ok, the next thing we have to do is to find either a / or : character. // If the : is first, we assume we have a protocol. If the / is first, // then we skip to the host processing. // XMLCh* ptr1 = XMLString::findAny(srcPtr, gListOne); XMLCh* ptr2; // If we found a protocol, then deal with it if (ptr1) { if (*ptr1 == chColon) { // Cap the string at the colon *ptr1 = 0; // And try to find it in our list of protocols fProtocol = lookupByName(srcPtr); if (fProtocol == Unknown) { ThrowXMLwithMemMgr1 ( MalformedURLException , XMLExcepts::URL_UnsupportedProto1 , srcPtr , fMemoryManager ); } // And move our source pointer up past what we've processed srcPtr = (ptr1 + 1); } } // // Ok, next we need to see if we have any host part. If the next // two characters are //, then we need to check, else move on. // if ((*srcPtr == chForwardSlash) && (*(srcPtr + 1) == chForwardSlash)) { // Move up past the slashes srcPtr += 2; // // If we aren't at the end of the string, then there has to be a // host part at this point. we will just look for the next / char // or end of string and make all of that the host for now. // if (*srcPtr) { // Search from here for a / character ptr1 = XMLString::findAny(srcPtr, gListFour); // // If we found something, then the host is between where // we are and what we found. Else the host is the rest of // the content and we are done. If its empty, leave it null. // if (ptr1) { if (ptr1 != srcPtr) { fMemoryManager->deallocate(fHost);//delete [] fHost; fHost = (XMLCh*) fMemoryManager->allocate ( ((ptr1 - srcPtr) + 1) * sizeof(XMLCh) );//new XMLCh[(ptr1 - srcPtr) + 1]; ptr2 = fHost; while (srcPtr < ptr1) *ptr2++ = *srcPtr++; *ptr2 = 0; } } else { fMemoryManager->deallocate(fHost);//delete [] fHost; fHost = XMLString::replicate(srcPtr, fMemoryManager); // Update source pointer to the end srcPtr += XMLString::stringLen(fHost); } } } else { // // http protocol requires two forward slashes // we didn't get them, so throw an exception // if (fProtocol == HTTP) { ThrowXMLwithMemMgr ( MalformedURLException , XMLExcepts::URL_ExpectingTwoSlashes , fMemoryManager ); } } // // If there was a host part, then we have to grovel through it for // all the bits and pieces it can hold. // if (fHost) { // // Look for a '@' character, which indicates a user name. If we // find one, then everything between the start of the host data // and the character is the user name. // ptr1 = XMLString::findAny(fHost, gListTwo); if (ptr1) { // Get this info out as the user name *ptr1 = 0; fMemoryManager->deallocate(fUser);//delete [] fUser; fUser = XMLString::replicate(fHost, fMemoryManager); ptr1++; // And now cut these chars from the host string XMLString::cut(fHost, ptr1 - fHost); // Is there a password inside the user string? ptr2 = XMLString::findAny(fUser, gListThree); if (ptr2) { // Remove it from the user name string *ptr2 = 0; // And copy out the remainder to the password field ptr2++; fMemoryManager->deallocate(fPassword);//delete [] fPassword; fPassword = XMLString::replicate(ptr2, fMemoryManager); } } // // Ok, so now we are at the actual host name, if any. If we are // not at the end of the host data, then lets see if we have a // port trailing the // ptr1 = XMLString::findAny(fHost, gListThree); if (ptr1) { // Remove it from the host name *ptr1 = 0; // Try to convert it to a numeric port value and store it ptr1++; if (!XMLString::textToBin(ptr1, fPortNum, fMemoryManager)) ThrowXMLwithMemMgr(MalformedURLException, XMLExcepts::URL_BadPortField, fMemoryManager); } // If the host ended up empty, then toss is if (!*fHost) { fMemoryManager->deallocate(fHost);//delete[] fHost; fHost = 0; } } // If we are at the end, then we are done now if (!*srcPtr) { if(fHost) { static const XMLCh slash[] = { chForwardSlash, chNull }; fPath = XMLString::replicate(slash, fMemoryManager); } return; } // // Next is the path part. It can be absolute, i.e. starting with a // forward slash character, or relative. Its basically everything up // to the end of the string or to any trailing query or fragment. // ptr1 = XMLString::findAny(srcPtr, gListFive); if (!ptr1) { fMemoryManager->deallocate(fPath);//delete [] fPath; fPath = XMLString::replicate(srcPtr, fMemoryManager); return; } // Everything from where we are to what we found is the path if (ptr1 > srcPtr) { fMemoryManager->deallocate(fPath);//delete [] fPath; fPath = (XMLCh*) fMemoryManager->allocate ( ((ptr1 - srcPtr) + 1) * sizeof(XMLCh) );//new XMLCh[(ptr1 - srcPtr) + 1]; ptr2 = fPath; while (srcPtr < ptr1) *ptr2++ = *srcPtr++; *ptr2 = 0; } // // If we found a fragment, then it is the rest of the string and we // are done. // if (*srcPtr == chPound) { srcPtr++; fMemoryManager->deallocate(fFragment);//delete [] fFragment; fFragment = XMLString::replicate(srcPtr, fMemoryManager); return; } // // The query is either the rest of the string, or up to the fragment // separator. // srcPtr++; ptr1 = XMLString::findAny(srcPtr, gListSix); fMemoryManager->deallocate(fQuery);//delete [] fQuery; if (!ptr1) { fQuery = XMLString::replicate(srcPtr, fMemoryManager); return; } else { fQuery = (XMLCh*) fMemoryManager->allocate ( ((ptr1 - srcPtr) + 1) * sizeof(XMLCh) );//new XMLCh[(ptr1 - srcPtr) + 1]; ptr2 = fQuery; while (srcPtr < ptr1) *ptr2++ = *srcPtr++; *ptr2 = 0; } // If we are not at the end now, then everything else is the fragment if (*srcPtr == chPound) { srcPtr++; fMemoryManager->deallocate(fFragment);//delete [] fFragment; fFragment = XMLString::replicate(srcPtr, fMemoryManager); } } bool XMLURL::parse(const XMLCh* const urlText, XMLURL& xmlURL) { // Simplify things by checking for the psycho scenarios first if (!*urlText) return false; // Before we start, check if this urlText contains valid uri characters if (!XMLUri::isURIString(urlText)) xmlURL.fHasInvalidChar = true; else xmlURL.fHasInvalidChar = false; // // The first thing we will do is to check for a file name, so that // we don't waste time thinking its a URL. If its in the form x:\ or x:/ // and x is an ASCII letter, then assume that's the deal. // if (((*urlText >= chLatin_A) && (*urlText <= chLatin_Z)) || ((*urlText >= chLatin_a) && (*urlText <= chLatin_z))) { if (*(urlText + 1) == chColon) { if ((*(urlText + 2) == chForwardSlash) || (*(urlText + 2) == chBackSlash)) { return false; } } } // Get a copy of the URL that we can modify XMLCh* srcCpy = XMLString::replicate(urlText, xmlURL.fMemoryManager); ArrayJanitor janSrcCopy(srcCpy, xmlURL.fMemoryManager); // // Get a pointer now that we can run up thrown the source as we parse // bits and pieces out of it. // XMLCh* srcPtr = srcCpy; // Run up past any spaces while (*srcPtr) { if (!XMLChar1_0::isWhitespace(*srcPtr)) break; srcPtr++; } // Make sure it wasn't all space if (!*srcPtr) return false; // // Ok, the next thing we have to do is to find either a / or : character. // If the : is first, we assume we have a protocol. If the / is first, // then we skip to the host processing. // XMLCh* ptr1 = XMLString::findAny(srcPtr, gListOne); XMLCh* ptr2; // If we found a protocol, then deal with it if (ptr1) { if (*ptr1 == chColon) { // Cap the string at the colon *ptr1 = 0; // And try to find it in our list of protocols xmlURL.fProtocol = lookupByName(srcPtr); if (xmlURL.fProtocol == Unknown) return false; // And move our source pointer up past what we've processed srcPtr = (ptr1 + 1); } } // // Ok, next we need to see if we have any host part. If the next // two characters are //, then we need to check, else move on. // if ((*srcPtr == chForwardSlash) && (*(srcPtr + 1) == chForwardSlash)) { // Move up past the slashes srcPtr += 2; // // If we aren't at the end of the string, then there has to be a // host part at this point. we will just look for the next / char // or end of string and make all of that the host for now. // if (*srcPtr) { // Search from here for a / character ptr1 = XMLString::findAny(srcPtr, gListFour); // // If we found something, then the host is between where // we are and what we found. Else the host is the rest of // the content and we are done. If its empty, leave it null. // if (ptr1) { if (ptr1 != srcPtr) { xmlURL.fHost = (XMLCh*) xmlURL.fMemoryManager->allocate ( ((ptr1 - srcPtr) + 1) * sizeof(XMLCh) );//new XMLCh[(ptr1 - srcPtr) + 1]; ptr2 = xmlURL.fHost; while (srcPtr < ptr1) *ptr2++ = *srcPtr++; *ptr2 = 0; } } else { xmlURL.fHost = XMLString::replicate(srcPtr, xmlURL.fMemoryManager); // Update source pointer to the end srcPtr += XMLString::stringLen(xmlURL.fHost); } } } else { // // http protocol requires two forward slashes // we didn't get them, so throw an exception // if (xmlURL.fProtocol == HTTP) return false; } // // If there was a host part, then we have to grovel through it for // all the bits and pieces it can hold. // if (xmlURL.fHost) { // // Look for a '@' character, which indicates a user name. If we // find one, then everything between the start of the host data // and the character is the user name. // ptr1 = XMLString::findAny(xmlURL.fHost, gListTwo); if (ptr1) { // Get this info out as the user name *ptr1 = 0; xmlURL.fUser = XMLString::replicate(xmlURL.fHost, xmlURL.fMemoryManager); ptr1++; // And now cut these chars from the host string XMLString::cut(xmlURL.fHost, ptr1 - xmlURL.fHost); // Is there a password inside the user string? ptr2 = XMLString::findAny(xmlURL.fUser, gListThree); if (ptr2) { // Remove it from the user name string *ptr2 = 0; // And copy out the remainder to the password field ptr2++; xmlURL.fPassword = XMLString::replicate(ptr2, xmlURL.fMemoryManager); } } // // Ok, so now we are at the actual host name, if any. If we are // not at the end of the host data, then lets see if we have a // port trailing the // ptr1 = XMLString::findAny(xmlURL.fHost, gListThree); if (ptr1) { // Remove it from the host name *ptr1 = 0; // Try to convert it to a numeric port value and store it ptr1++; if (!XMLString::textToBin(ptr1, xmlURL.fPortNum, xmlURL.fMemoryManager)) return false; } // If the host ended up empty, then toss is if (!*(xmlURL.fHost)) { xmlURL.fMemoryManager->deallocate(xmlURL.fHost);//delete[] fHost; xmlURL.fHost = 0; } } // If we are at the end, then we are done now if (!*srcPtr) { if(xmlURL.fHost) { static const XMLCh slash[] = { chForwardSlash, chNull }; xmlURL.fPath = XMLString::replicate(slash, xmlURL.fMemoryManager); } return true; } // // Next is the path part. It can be absolute, i.e. starting with a // forward slash character, or relative. Its basically everything up // to the end of the string or to any trailing query or fragment. // ptr1 = XMLString::findAny(srcPtr, gListFive); if (!ptr1) { xmlURL.fPath = XMLString::replicate(srcPtr, xmlURL.fMemoryManager); return true; } // Everything from where we are to what we found is the path if (ptr1 > srcPtr) { xmlURL.fPath = (XMLCh*) xmlURL.fMemoryManager->allocate ( ((ptr1 - srcPtr) + 1) * sizeof(XMLCh) );//new XMLCh[(ptr1 - srcPtr) + 1]; ptr2 = xmlURL.fPath; while (srcPtr < ptr1) *ptr2++ = *srcPtr++; *ptr2 = 0; } // // If we found a fragment, then it is the rest of the string and we // are done. // if (*srcPtr == chPound) { srcPtr++; xmlURL.fFragment = XMLString::replicate(srcPtr, xmlURL.fMemoryManager); return true; } // // The query is either the rest of the string, or up to the fragment // separator. // srcPtr++; ptr1 = XMLString::findAny(srcPtr, gListSix); if (!ptr1) { xmlURL.fQuery = XMLString::replicate(srcPtr, xmlURL.fMemoryManager); return true; } else { xmlURL.fQuery = (XMLCh*) xmlURL.fMemoryManager->allocate ( ((ptr1 - srcPtr) + 1) * sizeof(XMLCh) );//new XMLCh[(ptr1 - srcPtr) + 1]; ptr2 = xmlURL.fQuery; while (srcPtr < ptr1) *ptr2++ = *srcPtr++; *ptr2 = 0; } // If we are not at the end now, then everything else is the fragment if (*srcPtr == chPound) { srcPtr++; xmlURL.fFragment = XMLString::replicate(srcPtr, xmlURL.fMemoryManager); } return true; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/RuntimeException.hpp0000644000175000017500000000224210606722647021470 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: RuntimeException.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_RUNTIMEEXCEPTION_HPP) #define XERCESC_INCLUDE_GUARD_RUNTIMEEXCEPTION_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN MakeXMLException(RuntimeException, XMLUTIL_EXPORT) XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/ValueStackOf.c0000644000175000017500000001056211037122704020137 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: ValueStackOf.c 676911 2008-07-15 13:27:32Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #if defined(XERCES_TMPLSINC) #include #endif XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // ValueStackOf: Constructors and Destructor // --------------------------------------------------------------------------- template ValueStackOf::ValueStackOf(const XMLSize_t fInitCapacity, MemoryManager* const manager, const bool toCallDestructor) : fVector(fInitCapacity, manager, toCallDestructor) { } template ValueStackOf::~ValueStackOf() { } // --------------------------------------------------------------------------- // ValueStackOf: Element management methods // --------------------------------------------------------------------------- template void ValueStackOf::push(const TElem& toPush) { fVector.addElement(toPush); } template const TElem& ValueStackOf::peek() const { const XMLSize_t curSize = fVector.size(); if (curSize == 0) ThrowXMLwithMemMgr(EmptyStackException, XMLExcepts::Stack_EmptyStack, fVector.getMemoryManager()); return fVector.elementAt(curSize-1); } template TElem ValueStackOf::pop() { const XMLSize_t curSize = fVector.size(); if (curSize == 0) ThrowXMLwithMemMgr(EmptyStackException, XMLExcepts::Stack_EmptyStack, fVector.getMemoryManager()); TElem retVal = fVector.elementAt(curSize-1); fVector.removeElementAt(curSize-1); return retVal; } template void ValueStackOf::removeAllElements() { fVector.removeAllElements(); } // --------------------------------------------------------------------------- // ValueStackOf: Getter methods // --------------------------------------------------------------------------- template bool ValueStackOf::empty() { return (fVector.size() == 0); } template XMLSize_t ValueStackOf::curCapacity() { return fVector.curCapacity(); } template XMLSize_t ValueStackOf::size() { return fVector.size(); } // --------------------------------------------------------------------------- // ValueStackEnumerator: Constructors and Destructor // --------------------------------------------------------------------------- template ValueStackEnumerator:: ValueStackEnumerator( ValueStackOf* const toEnum , const bool adopt) : fAdopted(adopt) , fCurIndex(0) , fToEnum(toEnum) , fVector(&toEnum->fVector) { } template ValueStackEnumerator::~ValueStackEnumerator() { if (fAdopted) delete fToEnum; } // --------------------------------------------------------------------------- // ValueStackEnumerator: Enum interface // --------------------------------------------------------------------------- template bool ValueStackEnumerator::hasMoreElements() const { if (fCurIndex >= fVector->size()) return false; return true; } template TElem& ValueStackEnumerator::nextElement() { return fVector->elementAt(fCurIndex++); } template void ValueStackEnumerator::Reset() { fCurIndex = 0; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/XMLStringTokenizer.cpp0000644000175000017500000001147010645177671021712 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLStringTokenizer.cpp 555320 2007-07-11 16:05:13Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // XMLStringTokenizer: Local const data // --------------------------------------------------------------------------- const XMLCh fgDelimeters[] = { chSpace, chHTab, chCR, chLF, chNull }; // --------------------------------------------------------------------------- // XMLStringTokenizer: Constructors and Destructor // --------------------------------------------------------------------------- typedef JanitorMemFunCall CleanupType; XMLStringTokenizer::XMLStringTokenizer( const XMLCh* const srcStr , MemoryManager* const manager) : fOffset(0) , fStringLen(XMLString::stringLen(srcStr)) , fString(XMLString::replicate(srcStr, manager)) , fDelimeters(fgDelimeters) , fTokens(0) , fMemoryManager(manager) { CleanupType cleanup(this, &XMLStringTokenizer::cleanUp); try { if (fStringLen > 0) { fTokens = new (fMemoryManager) RefArrayVectorOf(4, true, fMemoryManager); } } catch(const OutOfMemoryException&) { cleanup.release(); throw; } cleanup.release(); } XMLStringTokenizer::XMLStringTokenizer(const XMLCh* const srcStr, const XMLCh* const delim, MemoryManager* const manager) : fOffset(0) , fStringLen(XMLString::stringLen(srcStr)) , fString(XMLString::replicate(srcStr, manager)) , fDelimeters(XMLString::replicate(delim, manager)) , fTokens(0) , fMemoryManager(manager) { CleanupType cleanup(this, &XMLStringTokenizer::cleanUp); try { if (fStringLen > 0) { fTokens = new (fMemoryManager) RefArrayVectorOf(4, true, fMemoryManager); } } catch(const OutOfMemoryException&) { cleanup.release(); throw; } cleanup.release(); } XMLStringTokenizer::~XMLStringTokenizer() { cleanUp(); } // --------------------------------------------------------------------------- // XMLStringTokenizer: CleanUp methods // --------------------------------------------------------------------------- void XMLStringTokenizer::cleanUp() { fMemoryManager->deallocate(fString);//delete [] fString; if (fDelimeters != fgDelimeters) { fMemoryManager->deallocate((void*)fDelimeters);//delete [] fDelimeters; } delete fTokens; } // --------------------------------------------------------------------------- // XMLStringTokenizer: Management methods // --------------------------------------------------------------------------- XMLCh* XMLStringTokenizer::nextToken() { if (fOffset >= fStringLen) { return 0; } bool tokFound = false; XMLSize_t startIndex = fOffset; XMLSize_t endIndex = fOffset; for (; endIndex < fStringLen; endIndex++) { if (isDelimeter(fString[endIndex])) { if (tokFound) { break; } startIndex++; continue; } tokFound = true; } fOffset = endIndex; if (tokFound) { XMLCh* tokStr = (XMLCh*) fMemoryManager->allocate ( (endIndex - startIndex + 1) * sizeof(XMLCh) );//new XMLCh[(endIndex - startIndex) + 1]; XMLString::subString(tokStr, fString, startIndex, endIndex, fMemoryManager); fTokens->addElement(tokStr); return tokStr; } return 0; } bool XMLStringTokenizer::hasMoreTokens() { if (countTokens() > 0) return true; return false; } XERCES_CPP_NAMESPACE_END /** * End of file XMLStringTokenizer.cpp */ xerces-c-3.1.1/src/xercesc/util/IOException.hpp0000644000175000017500000000221510606722647020354 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: IOException.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_IOEXCEPTION_HPP) #define XERCESC_INCLUDE_GUARD_IOEXCEPTION_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN MakeXMLException(IOException, XMLUTIL_EXPORT) XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/XMLNumber.cpp0000644000175000017500000000511110523643534017763 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLNumber.cpp 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include //since we need to dynamically created each and every derivatives //during deserialization by XSerializeEngine>>Derivative, we got //to include all hpp #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN XMLNumber::XMLNumber() {} XMLNumber::XMLNumber(const XMLNumber& toCopy) : XSerializable(toCopy) , XMemory(toCopy) {} XMLNumber::~XMLNumber() {} /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_NOCREATE(XMLNumber) void XMLNumber::serialize(XSerializeEngine&) { // this class has no data to serialize/de-serilize } XMLNumber* XMLNumber::loadNumber(XMLNumber::NumberType numType , XSerializeEngine& serEng) { switch((XMLNumber::NumberType) numType) { case XMLNumber::Float: XMLFloat* floatNum; serEng>>floatNum; return floatNum; break; case XMLNumber::Double: XMLDouble* doubleNum; serEng>>doubleNum; return doubleNum; break; case XMLNumber::BigDecimal: XMLBigDecimal* bigdecimalNum; serEng>>bigdecimalNum; return bigdecimalNum; break; case XMLNumber::DateTime: XMLDateTime* datetimeNum; serEng>>datetimeNum; return datetimeNum; break; case XMLNumber::UnKnown: return 0; break; } //we treat this same as UnKnown return 0; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/XMLBigInteger.cpp0000644000175000017500000002602110645177671020566 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLBigInteger.cpp 555320 2007-07-11 16:05:13Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN XMLCh* XMLBigInteger::getCanonicalRepresentation(const XMLCh* const rawData , MemoryManager* const memMgr , bool /* isNonPositiveInteger */) { try { XMLCh* retBuf = (XMLCh*) memMgr->allocate( (XMLString::stringLen(rawData) + 2) * sizeof(XMLCh)); ArrayJanitor jan(retBuf, memMgr); int sign = 0; XMLBigInteger::parseBigInteger(rawData, retBuf, sign); if (sign == 0) { retBuf[0] = chDigit_0; retBuf[1] = chNull; } else if (sign == -1) { XMLCh* retBuffer = (XMLCh*) memMgr->allocate( (XMLString::stringLen(retBuf) + 2) * sizeof(XMLCh)); retBuffer[0] = chDash; XMLString::copyString(&(retBuffer[1]), retBuf); return retBuffer; } jan.release(); return retBuf; } catch (const NumberFormatException&) { return 0; } } /*** * * Leading and trailing whitespaces are allowed, and trimmed * * Only one and either of (+,-) after the leading whitespace, before * any other characters are allowed, and trimmed * * Leading zero, after leading whitespace, (+|-), before any other * characters are allowed, and trimmed * * '.' NOT allowed * return status: void * ret_buf: w/o leading and/or trailing whitespace * w/o '+' and '-' * w/o leading zero * * see XMLString::parseInt(); * XMLString::textToBin(); * * " +000203456" "203456" * " -000203456" "203456" * ***/ void XMLBigInteger::parseBigInteger(const XMLCh* const toConvert , XMLCh* const retBuffer , int& signValue , MemoryManager* const manager) { // If no string, then its a failure if ((!toConvert) || (!*toConvert)) ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_emptyString, manager); // // Note: in Java's BigInteger, it seems any leading and/or trailing // whitespaces are not allowed. If this is the case, we may // need to skip the trimming below. // // Scan past any whitespace. If we hit the end, then return failure const XMLCh* startPtr = toConvert; while (XMLChar1_0::isWhitespace(*startPtr)) startPtr++; if (!*startPtr) ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_WSString, manager); // Start at the end and work back through any whitespace const XMLCh* endPtr = toConvert + XMLString::stringLen(toConvert); while (XMLChar1_0::isWhitespace(*(endPtr - 1))) endPtr--; // // Work through what remains and convert each char to a digit. // anything other than ' // XMLCh* retPtr = retBuffer; signValue = 1; // // '+' or '-' is allowed only at the first position // if (*startPtr == chDash) { signValue = -1; startPtr++; if (startPtr == endPtr) { ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_Inv_chars, manager); } } else if (*startPtr == chPlus) { // skip the '+' startPtr++; if (startPtr == endPtr) { ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_Inv_chars, manager); } } // Scan past any leading zero. while (*startPtr == chDigit_0) startPtr++; if (startPtr >= endPtr) { signValue = 0; // containning zero, only zero, nothing but zero // it is a zero, indeed return; } while (startPtr < endPtr) { // If not valid decimal digit, then an error if ((*startPtr < chDigit_0) || (*startPtr > chDigit_9)) ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_Inv_chars, manager); // copy over *retPtr = *startPtr; retPtr++; startPtr++; } *retPtr = 0; //terminated return; } /** * Translates a string containing an optional minus sign followed by a * sequence of one or more digits into a BigInteger. * Any extraneous characters (including whitespace), * inclusive, will result in a NumberFormatException. */ XMLBigInteger::XMLBigInteger(const XMLCh* const strValue, MemoryManager* const manager) : fSign(0) , fMagnitude(0) , fRawData(0) , fMemoryManager(manager) { if (!strValue) ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_emptyString, fMemoryManager); XMLCh* ret_value = (XMLCh*) fMemoryManager->allocate ( (XMLString::stringLen(strValue) + 1) * sizeof(XMLCh) );//new XMLCh[XMLString::stringLen(strValue)+1]; ArrayJanitor janName(ret_value, fMemoryManager); parseBigInteger(strValue, ret_value, fSign, fMemoryManager); if (fSign == 0) fMagnitude = XMLString::replicate(XMLUni::fgZeroLenString, fMemoryManager); else fMagnitude = XMLString::replicate(ret_value, fMemoryManager); fRawData = XMLString::replicate(strValue, fMemoryManager); } XMLBigInteger::~XMLBigInteger() { fMemoryManager->deallocate(fMagnitude);//delete[] fMagnitude; if (fRawData) fMemoryManager->deallocate(fRawData);//delete[] fRawData; } XMLBigInteger::XMLBigInteger(const XMLBigInteger& toCopy) : XMemory(toCopy) , fSign(toCopy.fSign) , fMagnitude(0) , fRawData(0) , fMemoryManager(toCopy.fMemoryManager) { fMagnitude = XMLString::replicate(toCopy.fMagnitude, fMemoryManager); fRawData = XMLString::replicate(toCopy.fRawData, fMemoryManager); } /** * Returns -1, 0 or 1 as lValue is less than, equal to, or greater * than rValue. */ int XMLBigInteger::compareValues(const XMLBigInteger* const lValue , const XMLBigInteger* const rValue , MemoryManager* const manager) { if ((!lValue) || (!rValue) ) ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_null_ptr, manager); int lSign = lValue->getSign(); int rSign = rValue->getSign(); // // different sign // if (lSign != rSign) return(lSign > rSign ? 1 : -1); // // same sign // if (lSign == 0) // optimization return 0; XMLSize_t lStrLen = XMLString::stringLen(lValue->fMagnitude); XMLSize_t rStrLen = XMLString::stringLen(rValue->fMagnitude); // // different length // if (lStrLen > rStrLen) return ( lSign > 0 ? 1 : -1 ); else if (lStrLen < rStrLen) return ( lSign > 0 ? -1 : 1 ); // // same length // XMLString::compareString() return > 0, 0 and <0 // we need to convert it to 1, 0, and -1 // int retVal = XMLString::compareString(lValue->fMagnitude, rValue->fMagnitude); if ( retVal > 0 ) { return ( lSign > 0 ? 1 : -1 ); } else if ( retVal < 0 ) { return ( lSign > 0 ? -1 : 1 ); } else return 0; } int XMLBigInteger::compareValues(const XMLCh* const lString , const int& lSign , const XMLCh* const rString , const int& rSign , MemoryManager* const manager) { if ((!lString) || (!rString) ) ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_null_ptr, manager); // // different sign // if (lSign != rSign) return(lSign > rSign ? 1 : -1); // // same sign // if (lSign == 0) // optimization return 0; XMLSize_t lStrLen = XMLString::stringLen(lString); XMLSize_t rStrLen = XMLString::stringLen(rString); // // different length // if (lStrLen > rStrLen) return ( lSign > 0 ? 1 : -1 ); else if (lStrLen < rStrLen) return ( lSign > 0 ? -1 : 1 ); // // same length // XMLString::compareString() return > 0, 0 and <0 // we need to convert it to 1, 0, and -1 // int retVal = XMLString::compareString(lString, rString); if ( retVal > 0 ) { return ( lSign > 0 ? 1 : -1 ); } else if ( retVal < 0 ) { return ( lSign > 0 ? -1 : 1 ); } else return 0; } /** * Shift the fMagnitude to the left */ void XMLBigInteger::multiply(const unsigned int byteToShift) { if (byteToShift <= 0) return; XMLSize_t strLen = XMLString::stringLen(fMagnitude); XMLCh* tmp = (XMLCh*) fMemoryManager->allocate ( (strLen + byteToShift + 1) * sizeof(XMLCh) );//new XMLCh[strLen+byteToShift+1]; XMLString::moveChars(tmp, fMagnitude, strLen); unsigned int i = 0; for ( ; i < byteToShift; i++) tmp[strLen+i] = chDigit_0; tmp[strLen+i] = chNull; fMemoryManager->deallocate(fMagnitude);//delete[] fMagnitude; fMagnitude = tmp; } /** * Shift the fMagnitude to the right * by doing this, we lose precision. */ void XMLBigInteger::divide(const unsigned int byteToShift) { if (byteToShift <= 0) return; XMLSize_t strLen = XMLString::stringLen(fMagnitude); XMLCh* tmp = (XMLCh*) fMemoryManager->allocate ( (strLen - byteToShift + 1) * sizeof(XMLCh) );//new XMLCh[strLen-byteToShift+1]; XMLString::moveChars(tmp, fMagnitude, strLen-byteToShift); tmp[strLen-byteToShift] = chNull; fMemoryManager->deallocate(fMagnitude);//delete[] fMagnitude; fMagnitude = tmp; } // // // int XMLBigInteger::intValue() const { unsigned int retVal; XMLString::textToBin(fMagnitude, retVal, fMemoryManager); return retVal * getSign(); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/BinMemInputStream.hpp0000644000175000017500000001060111027453421021514 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: BinMemInputStream.hpp 670359 2008-06-22 13:43:45Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_BINMEMINPUTSTREAM_HPP) #define XERCESC_INCLUDE_GUARD_BINMEMINPUTSTREAM_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN class XMLUTIL_EXPORT BinMemInputStream : public BinInputStream { public : // ----------------------------------------------------------------------- // Class specific types // ----------------------------------------------------------------------- enum BufOpts { BufOpt_Adopt , BufOpt_Copy , BufOpt_Reference }; // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- BinMemInputStream ( const XMLByte* const initData , const XMLSize_t capacity , const BufOpts bufOpt = BufOpt_Copy , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual ~BinMemInputStream(); // ----------------------------------------------------------------------- // Stream management methods // ----------------------------------------------------------------------- void reset(); // ----------------------------------------------------------------------- // Implementation of the input stream interface // ----------------------------------------------------------------------- virtual XMLFilePos curPos() const; virtual XMLSize_t readBytes ( XMLByte* const toFill , const XMLSize_t maxToRead ); virtual const XMLCh* getContentType() const; inline XMLSize_t getSize() const; private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- BinMemInputStream(const BinMemInputStream&); BinMemInputStream& operator=(const BinMemInputStream&); // ----------------------------------------------------------------------- // Private data members // // fBuffer // The buffer of bytes that we are streaming. // // fBufOpt // Indicates the ownership status of the buffer. The caller can have // us adopt it (we delete it), reference it, or just make our own // copy of it. // // fCapacity // The size of the buffer being streamed. // // fCurIndex // The current index where the next byte will be read from. When it // hits fCapacity, we are done. // ----------------------------------------------------------------------- const XMLByte* fBuffer; BufOpts fBufOpt; XMLSize_t fCapacity; XMLSize_t fCurIndex; MemoryManager* fMemoryManager; }; // --------------------------------------------------------------------------- // BinMemInputStream: Stream management methods // --------------------------------------------------------------------------- inline void BinMemInputStream::reset() { fCurIndex = 0; } // --------------------------------------------------------------------------- // BinMemInputStream: Implementation of the input stream interface // --------------------------------------------------------------------------- inline XMLFilePos BinMemInputStream::curPos() const { return fCurIndex; } inline XMLSize_t BinMemInputStream::getSize() const { return fCapacity; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/XMLDOMMsg.hpp0000644000175000017500000000750311227353747017643 0ustar borisboris// This file is generated, don't edit it!! #if !defined(XERCESC_INCLUDE_GUARD_ERRHEADER_XMLDOMMsg) #define XERCESC_INCLUDE_GUARD_ERRHEADER_XMLDOMMsg #include #include #include XERCES_CPP_NAMESPACE_BEGIN class XMLDOMMsg { public : enum Codes { NoError = 0 , F_LowBounds = 1 , DOMEXCEPTION_ERRX = 2 , INDEX_SIZE_ERR = 3 , DOMSTRING_SIZE_ERR = 4 , HIERARCHY_REQUEST_ERR = 5 , WRONG_DOCUMENT_ERR = 6 , INVALID_CHARACTER_ERR = 7 , NO_DATA_ALLOWED_ERR = 8 , NO_MODIFICATION_ALLOWED_ERR = 9 , NOT_FOUND_ERR = 10 , NOT_SUPPORTED_ERR = 11 , INUSE_ATTRIBUTE_ERR = 12 , INVALID_STATE_ERR = 13 , SYNTAX_ERR = 14 , INVALID_MODIFICATION_ERR = 15 , NAMESPACE_ERR = 16 , INVALID_ACCESS_ERR = 17 , VALIDATION_ERR = 18 , TYPE_MISMATCH_ERR = 19 , DOMRANGEEXCEPTION_ERRX = 20 , BAD_BOUNDARYPOINTS_ERR = 21 , INVALID_NODE_TYPE_ERR = 22 , DOMLSEXCEPTION_ERRX = 23 , PARSE_ERR = 24 , SERIALIZE_ERR = 25 , DOMXPATHEXCEPTION_ERRX = 26 , INVALID_EXPRESSION_ERR = 27 , TYPE_ERR = 28 , NO_RESULT_ERR = 29 , Writer_NestedCDATA = 30 , Writer_NotRepresentChar = 31 , Writer_NotRecognizedType = 32 , LSParser_ParseInProgress = 33 , LSParser_ParsingAborted = 34 , LSParser_ParsingFailed = 35 , F_HighBounds = 36 , W_LowBounds = 37 , W_HighBounds = 38 , E_LowBounds = 39 , E_HighBounds = 40 }; static bool isFatal(const XMLDOMMsg::Codes toCheck) { return ((toCheck >= F_LowBounds) && (toCheck <= F_HighBounds)); } static bool isWarning(const XMLDOMMsg::Codes toCheck) { return ((toCheck >= W_LowBounds) && (toCheck <= W_HighBounds)); } static bool isError(const XMLDOMMsg::Codes toCheck) { return ((toCheck >= E_LowBounds) && (toCheck <= E_HighBounds)); } static XMLErrorReporter::ErrTypes errorType(const XMLDOMMsg::Codes toCheck) { if ((toCheck >= W_LowBounds) && (toCheck <= W_HighBounds)) return XMLErrorReporter::ErrType_Warning; else if ((toCheck >= F_LowBounds) && (toCheck <= F_HighBounds)) return XMLErrorReporter::ErrType_Fatal; else if ((toCheck >= E_LowBounds) && (toCheck <= E_HighBounds)) return XMLErrorReporter::ErrType_Error; return XMLErrorReporter::ErrTypes_Unknown; } static DOMError::ErrorSeverity DOMErrorType(const XMLDOMMsg::Codes toCheck) { if ((toCheck >= W_LowBounds) && (toCheck <= W_HighBounds)) return DOMError::DOM_SEVERITY_WARNING; else if ((toCheck >= F_LowBounds) && (toCheck <= F_HighBounds)) return DOMError::DOM_SEVERITY_FATAL_ERROR; else return DOMError::DOM_SEVERITY_ERROR; } private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XMLDOMMsg(); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/EmptyStackException.hpp0000644000175000017500000000225510606722647022135 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: EmptyStackException.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_EMPTYSTACKEXCEPTION_HPP) #define XERCESC_INCLUDE_GUARD_EMPTYSTACKEXCEPTION_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN MakeXMLException(EmptyStackException, XMLUTIL_EXPORT) XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/BinFileInputStream.cpp0000644000175000017500000000714611027453421021662 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: BinFileInputStream.cpp 670359 2008-06-22 13:43:45Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // BinFileInputStream: Constructors and Destructor // --------------------------------------------------------------------------- BinFileInputStream::BinFileInputStream(const XMLCh* const fileName , MemoryManager* const manager) : fSource(XMLPlatformUtils::openFile(fileName, manager)) , fMemoryManager(manager) { } BinFileInputStream::BinFileInputStream(const char* const fileName, MemoryManager* const manager) : fSource(XMLPlatformUtils::openFile(fileName, manager)) , fMemoryManager(manager) { } BinFileInputStream::BinFileInputStream(const FileHandle toAdopt , MemoryManager* const manager) : fSource(toAdopt) , fMemoryManager(manager) { } BinFileInputStream::~BinFileInputStream() { if (getIsOpen()) XMLPlatformUtils::closeFile(fSource, fMemoryManager); } // --------------------------------------------------------------------------- // BinFileInputStream: Getter methods // --------------------------------------------------------------------------- XMLFilePos BinFileInputStream::getSize() const { return XMLPlatformUtils::fileSize(fSource, fMemoryManager); } // --------------------------------------------------------------------------- // BinFileInputStream: Stream management methods // --------------------------------------------------------------------------- void BinFileInputStream::reset() { XMLPlatformUtils::resetFile(fSource, fMemoryManager); } // --------------------------------------------------------------------------- // BinFileInputStream: Implementation of the input stream interface // --------------------------------------------------------------------------- XMLFilePos BinFileInputStream::curPos() const { return XMLPlatformUtils::curFilePos(fSource, fMemoryManager); } XMLSize_t BinFileInputStream::readBytes( XMLByte* const toFill , const XMLSize_t maxToRead) { // // Read up to the maximum bytes requested. We return the number // actually read. // return XMLPlatformUtils::readFileBuffer(fSource, maxToRead, toFill, fMemoryManager); } const XMLCh* BinFileInputStream::getContentType() const { return 0; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/KeyValuePair.c0000644000175000017500000000564110523643534020163 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: KeyValuePair.c 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Include // --------------------------------------------------------------------------- #if defined(XERCES_TMPLSINC) #include #endif XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // KeyValuePair: Constructors and Destructor // --------------------------------------------------------------------------- template KeyValuePair::KeyValuePair() { } template KeyValuePair:: KeyValuePair(const TKey& key, const TValue& value) : fKey(key) , fValue(value) { } template KeyValuePair:: KeyValuePair(const KeyValuePair& toCopy) : fKey(toCopy.fKey) , fValue(toCopy.fValue) { } template KeyValuePair::~KeyValuePair() { } // --------------------------------------------------------------------------- // KeyValuePair: Getters // --------------------------------------------------------------------------- template const TKey& KeyValuePair::getKey() const { return fKey; } template TKey& KeyValuePair::getKey() { return fKey; } template const TValue& KeyValuePair::getValue() const { return fValue; } template TValue& KeyValuePair::getValue() { return fValue; } // --------------------------------------------------------------------------- // KeyValuePair: Setters // --------------------------------------------------------------------------- template TKey& KeyValuePair::setKey(const TKey& newKey) { fKey = newKey; return fKey; } template TValue& KeyValuePair::setValue(const TValue& newValue) { fValue = newValue; return fValue; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/XMLMsgLoader.cpp0000644000175000017500000000550510535122330020404 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLMsgLoader.cpp 482395 2006-12-04 22:44:40Z dbertoni $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN /*** * The PlatformUtils::initialize() would set fLocale * to either a user-provided string or 0 * ***/ char* XMLMsgLoader::fLocale = 0; char* XMLMsgLoader::fPath = 0; /*** * if localeToAdopt is 0, that is to release memory for * the user defined locale string * ***/ void XMLMsgLoader::setLocale(const char* const localeToAdopt) { /*** * Release the current setting's memory, if any ***/ if (fLocale) { XMLPlatformUtils::fgMemoryManager->deallocate(fLocale);//delete [] fLocale; fLocale = 0; } /*** * * REVISIT: later we may do locale format checking * * refer to phttp://oss.software.ibm.com/icu/userguide/locale.html * for details. */ if (localeToAdopt && (strlen(localeToAdopt) == 2 || (strlen(localeToAdopt) > 3 && localeToAdopt[2]=='_'))) { fLocale = XMLString::replicate(localeToAdopt, XMLPlatformUtils::fgMemoryManager); } } const char* XMLMsgLoader::getLocale() { return fLocale; } /*** * if nlsHomeToAdopt is 0, that is to release memory for * the user defined NLSHome string * ***/ void XMLMsgLoader::setNLSHome(const char* const nlsHomeToAdopt) { /*** * Release the current setting's memory, if any ***/ if (fPath) { XMLPlatformUtils::fgMemoryManager->deallocate(fPath);//delete [] fPath; fPath = 0; } if (nlsHomeToAdopt) { fPath = XMLString::replicate(nlsHomeToAdopt, XMLPlatformUtils::fgMemoryManager); } } const char* XMLMsgLoader::getNLSHome() { return fPath; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/HexBin.cpp0000644000175000017500000001241710647412626017341 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // constants // --------------------------------------------------------------------------- static const int BASELENGTH = 255; // --------------------------------------------------------------------------- // class data member // --------------------------------------------------------------------------- const XMLByte HexBin::hexNumberTable[BASELENGTH] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; int HexBin::getDataLength(const XMLCh* const hexData) { if (!isArrayByteHex(hexData)) return -1; return (int)XMLString::stringLen(hexData)/2; } bool HexBin::isArrayByteHex(const XMLCh* const hexData) { if (( hexData == 0 ) || ( *hexData == 0 )) // zero length return true; XMLSize_t strLen = XMLString::stringLen(hexData); if ( strLen%2 != 0 ) return false; for ( XMLSize_t i = 0; i < strLen; i++ ) if( !isHex(hexData[i]) ) return false; return true; } XMLCh* HexBin::getCanonicalRepresentation(const XMLCh* const hexData , MemoryManager* const manager) { if (getDataLength(hexData) == -1) return 0; XMLCh* retStr = XMLString::replicate(hexData, manager); XMLString::upperCaseASCII(retStr); return retStr; } XMLByte* HexBin::decodeToXMLByte(const XMLCh* const hexData , MemoryManager* const manager) { if (( hexData == 0 ) || ( *hexData == 0 )) // zero length return 0; XMLSize_t strLen = XMLString::stringLen(hexData); if ( strLen%2 != 0 ) return 0; //prepare the return string int decodeLength = (int)strLen/2; XMLByte *retVal = (XMLByte*) manager->allocate( (decodeLength + 1) * sizeof(XMLByte)); ArrayJanitor janFill(retVal, manager); XMLByte temp1, temp2; for( int i = 0; i= BASELENGTH ) return false; return (hexNumberTable[octet] != (XMLByte) -1); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/XMemory.hpp0000644000175000017500000001046411360344373017565 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMemory.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_XMEMORY_HPP) #define XERCESC_INCLUDE_GUARD_XMEMORY_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN class MemoryManager; /** * This class makes it possible to override the C++ memory management by * adding new/delete operators to this base class. * * This class is used in conjunction with the pluggable memory manager. It * allows applications to control Xerces memory management. */ class XMLUTIL_EXPORT XMemory { public : // ----------------------------------------------------------------------- // The C++ memory management // ----------------------------------------------------------------------- /** @name The C++ memory management */ //@{ /** * This method overrides operator new * * @param size The requested memory size */ void* operator new(size_t size); #if defined(XERCES_MFC_SUPPORT) /** * This method overrides the MFC debug version of the operator new * * @param size The requested memory size * @param file The file where the allocation was requested * @param line The line where the allocation was requested */ void* operator new(size_t size, const char* file, int line); /** * This method provides a matching delete for the MFC debug new * * @param p The pointer to the allocated memory * @param file The file where the allocation was requested * @param line The line where the allocation was requested */ void operator delete(void* p, const char* file, int line); #endif /** * This method defines a custom operator new, that will use the provided * memory manager to perform the allocation * * @param size The requested memory size * @param memMgr An application's memory manager */ void* operator new(size_t size, MemoryManager* memMgr); /** * This method overrides placement operator new * * @param size The requested memory size * @param ptr The memory location where the object should be allocated */ void* operator new(size_t size, void* ptr); /** * This method overrides operator delete * * @param p The pointer to the allocated memory */ void operator delete(void* p); //The Borland compiler is complaining about duplicate overloading of delete #if !defined(XERCES_NO_MATCHING_DELETE_OPERATOR) /** * This method provides a matching delete for the custom operator new * * @param p The pointer to the allocated memory * @param memMgr An application's memory manager */ void operator delete(void* p, MemoryManager* memMgr); /** * This method provides a matching delete for the placement new * * @param p The pointer to the allocated memory * @param ptr The memory location where the object had to be allocated */ void operator delete(void* p, void* ptr); #endif //@} protected : // ----------------------------------------------------------------------- // Hidden Constructors // ----------------------------------------------------------------------- /** @name Constructor */ //@{ /** * Protected default constructor */ XMemory() { } //@} #if defined(XERCES_NEED_XMEMORY_VIRTUAL_DESTRUCTOR) virtual ~XMemory() { } #endif }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/XMLUTF8Transcoder.cpp0000644000175000017500000005221411360344373021313 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * $Id: XMLUTF8Transcoder.cpp 932887 2010-04-11 13:04:59Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Local static data // // gUTFBytes // A list of counts of trailing bytes for each initial byte in the input. // // gUTFByteIndicator // For a UTF8 sequence of n bytes, n>=2, the first byte of the // sequence must contain n 1's followed by precisely 1 0 with the // rest of the byte containing arbitrary bits. This array stores // the required bit pattern for validity checking. // gUTFByteIndicatorTest // When bitwise and'd with the observed value, if the observed // value is correct then a result matching gUTFByteIndicator will // be produced. // // gUTFOffsets // A list of values to offset each result char type, according to how // many source bytes when into making it. // // gFirstByteMark // A list of values to mask onto the first byte of an encoded sequence, // indexed by the number of bytes used to create the sequence. // --------------------------------------------------------------------------- static const XMLByte gUTFBytes[256] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 , 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 , 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5 }; static const XMLByte gUTFByteIndicator[6] = { 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC }; static const XMLByte gUTFByteIndicatorTest[6] = { 0x80, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE }; static const XMLUInt32 gUTFOffsets[6] = { 0, 0x3080, 0xE2080, 0x3C82080, 0xFA082080, 0x82082080 }; static const XMLByte gFirstByteMark[7] = { 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC }; // --------------------------------------------------------------------------- // XMLUTF8Transcoder: Constructors and Destructor // --------------------------------------------------------------------------- XMLUTF8Transcoder::XMLUTF8Transcoder(const XMLCh* const encodingName , const XMLSize_t blockSize , MemoryManager* const manager) :XMLTranscoder(encodingName, blockSize, manager) { } XMLUTF8Transcoder::~XMLUTF8Transcoder() { } // --------------------------------------------------------------------------- // XMLUTF8Transcoder: Implementation of the transcoder API // --------------------------------------------------------------------------- XMLSize_t XMLUTF8Transcoder::transcodeFrom(const XMLByte* const srcData , const XMLSize_t srcCount , XMLCh* const toFill , const XMLSize_t maxChars , XMLSize_t& bytesEaten , unsigned char* const charSizes) { // Watch for pathological scenario. Shouldn't happen, but... if (!srcCount || !maxChars) return 0; // // Get pointers to our start and end points of the input and output // buffers. // const XMLByte* srcPtr = srcData; const XMLByte* srcEnd = srcPtr + srcCount; XMLCh* outPtr = toFill; XMLCh* outEnd = outPtr + maxChars; unsigned char* sizePtr = charSizes; // // We now loop until we either run out of input data, or room to store // output chars. // while ((srcPtr < srcEnd) && (outPtr < outEnd)) { // Special-case ASCII, which is a leading byte value of <= 127 if (*srcPtr <= 127) { // Handle ASCII in groups instead of single character at a time. const XMLByte* srcPtr_save = srcPtr; const XMLSize_t chunkSize = (srcEnd-srcPtr)<(outEnd-outPtr)?(srcEnd-srcPtr):(outEnd-outPtr); for(XMLSize_t i=0;i= here because we are implicitly // counting the 1 byte we get no matter what. // // If we break out here, then there is nothing to undo since we // haven't updated any pointers yet. // if (srcPtr + trailingBytes >= srcEnd) break; // Looks ok, so lets build up the value // or at least let's try to do so--remembering that // we cannot assume the encoding to be valid: // first, test first byte if((gUTFByteIndicatorTest[trailingBytes] & *srcPtr) != gUTFByteIndicator[trailingBytes]) { char pos[2] = {(char)0x31, 0}; char len[2] = {(char)(trailingBytes+0x31), 0}; char byte[2] = {*srcPtr,0}; ThrowXMLwithMemMgr3(UTFDataFormatException, XMLExcepts::UTF8_FormatError, pos, byte, len, getMemoryManager()); } /*** * http://www.unicode.org/reports/tr27/ * * Table 3.1B. lists all of the byte sequences that are legal in UTF-8. * A range of byte values such as A0..BF indicates that any byte from A0 to BF (inclusive) * is legal in that position. * Any byte value outside of the ranges listed is illegal. * For example, * the byte sequence is illegal since C0 is not legal in the 1st Byte column. * The byte sequence is illegal since in the row * where E0 is legal as a first byte, * 9F is not legal as a second byte. * The byte sequence is legal, since every byte in that sequence matches * a byte range in a row of the table (the last row). * * * Table 3.1B. Legal UTF-8 Byte Sequences * Code Points 1st Byte 2nd Byte 3rd Byte 4th Byte * ========================================================================= * U+0000..U+007F 00..7F * ------------------------------------------------------------------------- * U+0080..U+07FF C2..DF 80..BF * * ------------------------------------------------------------------------- * U+0800..U+0FFF E0 A0..BF 80..BF * -- * * U+1000..U+FFFF E1..EF 80..BF 80..BF * * -------------------------------------------------------------------------- * U+10000..U+3FFFF F0 90..BF 80..BF 80..BF * -- * U+40000..U+FFFFF F1..F3 80..BF 80..BF 80..BF * U+100000..U+10FFFF F4 80..8F 80..BF 80..BF * -- * ========================================================================== * * Cases where a trailing byte range is not 80..BF are underlined in the table to * draw attention to them. These occur only in the second byte of a sequence. * ***/ XMLUInt32 tmpVal = 0; switch(trailingBytes) { case 1 : // UTF-8: [110y yyyy] [10xx xxxx] // Unicode: [0000 0yyy] [yyxx xxxx] // // 0xC0, 0xC1 has been filtered out checkTrailingBytes(*(srcPtr+1), 1, 1); tmpVal = *srcPtr++; tmpVal <<= 6; tmpVal += *srcPtr++; break; case 2 : // UTF-8: [1110 zzzz] [10yy yyyy] [10xx xxxx] // Unicode: [zzzz yyyy] [yyxx xxxx] // if (( *srcPtr == 0xE0) && ( *(srcPtr+1) < 0xA0)) { char byte0[2] = {*srcPtr ,0}; char byte1[2] = {*(srcPtr+1),0}; ThrowXMLwithMemMgr2(UTFDataFormatException , XMLExcepts::UTF8_Invalid_3BytesSeq , byte0 , byte1 , getMemoryManager()); } checkTrailingBytes(*(srcPtr+1), 2, 1); checkTrailingBytes(*(srcPtr+2), 2, 2); // // D36 (a) UTF-8 is the Unicode Transformation Format that serializes // a Unicode code point as a sequence of one to four bytes, // as specified in Table 3.1, UTF-8 Bit Distribution. // (b) An illegal UTF-8 code unit sequence is any byte sequence that // does not match the patterns listed in Table 3.1B, Legal UTF-8 // Byte Sequences. // (c) An irregular UTF-8 code unit sequence is a six-byte sequence // where the first three bytes correspond to a high surrogate, // and the next three bytes correspond to a low surrogate. // As a consequence of C12, these irregular UTF-8 sequences shall // not be generated by a conformant process. // //irregular three bytes sequence // that is zzzzyy matches leading surrogate tag 110110 or // trailing surrogate tag 110111 // *srcPtr=1110 1101 // *(srcPtr+1)=1010 yyyy or // *(srcPtr+1)=1011 yyyy // // 0xED 1110 1101 // 0xA0 1010 0000 if ((*srcPtr == 0xED) && (*(srcPtr+1) >= 0xA0)) { char byte0[2] = {*srcPtr, 0}; char byte1[2] = {*(srcPtr+1),0}; ThrowXMLwithMemMgr2(UTFDataFormatException , XMLExcepts::UTF8_Irregular_3BytesSeq , byte0 , byte1 , getMemoryManager()); } tmpVal = *srcPtr++; tmpVal <<= 6; tmpVal += *srcPtr++; tmpVal <<= 6; tmpVal += *srcPtr++; break; case 3 : // UTF-8: [1111 0uuu] [10uu zzzz] [10yy yyyy] [10xx xxxx]* // Unicode: [1101 10ww] [wwzz zzyy] (high surrogate) // [1101 11yy] [yyxx xxxx] (low surrogate) // * uuuuu = wwww + 1 // if (((*srcPtr == 0xF0) && (*(srcPtr+1) < 0x90)) || ((*srcPtr == 0xF4) && (*(srcPtr+1) > 0x8F)) ) { char byte0[2] = {*srcPtr ,0}; char byte1[2] = {*(srcPtr+1),0}; ThrowXMLwithMemMgr2(UTFDataFormatException , XMLExcepts::UTF8_Invalid_4BytesSeq , byte0 , byte1 , getMemoryManager()); } checkTrailingBytes(*(srcPtr+1), 3, 1); checkTrailingBytes(*(srcPtr+2), 3, 2); checkTrailingBytes(*(srcPtr+3), 3, 3); tmpVal = *srcPtr++; tmpVal <<= 6; tmpVal += *srcPtr++; tmpVal <<= 6; tmpVal += *srcPtr++; tmpVal <<= 6; tmpVal += *srcPtr++; break; default: // trailingBytes > 3 /*** * The definition of UTF-8 in Annex D of ISO/IEC 10646-1:2000 also allows * for the use of five- and six-byte sequences to encode characters that * are outside the range of the Unicode character set; those five- and * six-byte sequences are illegal for the use of UTF-8 as a transformation * of Unicode characters. ISO/IEC 10646 does not allow mapping of unpaired * surrogates, nor U+FFFE and U+FFFF (but it does allow other noncharacters). ***/ char len[2] = {(char)(trailingBytes+0x31), 0}; char byte[2] = {*srcPtr,0}; ThrowXMLwithMemMgr2(UTFDataFormatException , XMLExcepts::UTF8_Exceeds_BytesLimit , byte , len , getMemoryManager()); break; } // since trailingBytes comes from an array, this logic is redundant // default : // ThrowXMLwithMemMgr(TranscodingException, XMLExcepts::Trans_BadSrcSeq); //} tmpVal -= gUTFOffsets[trailingBytes]; // // If it will fit into a single char, then put it in. Otherwise // encode it as a surrogate pair. If its not valid, use the // replacement char. // if (!(tmpVal & 0xFFFF0000)) { *sizePtr++ = trailingBytes + 1; *outPtr++ = XMLCh(tmpVal); } else if (tmpVal > 0x10FFFF) { // // If we've gotten more than 32 chars so far, then just break // out for now and lets process those. When we come back in // here again, we'll get no chars and throw an exception. This // way, the error will have a line and col number closer to // the real problem area. // if ((outPtr - toFill) > 32) break; ThrowXMLwithMemMgr(TranscodingException, XMLExcepts::Trans_BadSrcSeq, getMemoryManager()); } else { // // If we have enough room to store the leading and trailing // chars, then lets do it. Else, pretend this one never // happened, and leave it for the next time. Since we don't // update the bytes read until the bottom of the loop, by // breaking out here its like it never happened. // if (outPtr + 1 >= outEnd) break; // Store the leading surrogate char tmpVal -= 0x10000; *sizePtr++ = trailingBytes + 1; *outPtr++ = XMLCh((tmpVal >> 10) + 0xD800); // // And then the trailing char. This one accounts for no // bytes eaten from the source, so set the char size for this // one to be zero. // *sizePtr++ = 0; *outPtr++ = XMLCh((tmpVal & 0x3FF) + 0xDC00); } } // Update the bytes eaten bytesEaten = srcPtr - srcData; // Return the characters read return outPtr - toFill; } XMLSize_t XMLUTF8Transcoder::transcodeTo( const XMLCh* const srcData , const XMLSize_t srcCount , XMLByte* const toFill , const XMLSize_t maxBytes , XMLSize_t& charsEaten , const UnRepOpts options) { // Watch for pathological scenario. Shouldn't happen, but... if (!srcCount || !maxBytes) return 0; // // Get pointers to our start and end points of the input and output // buffers. // const XMLCh* srcPtr = srcData; const XMLCh* srcEnd = srcPtr + srcCount; XMLByte* outPtr = toFill; XMLByte* outEnd = toFill + maxBytes; while (srcPtr < srcEnd) { // // Tentatively get the next char out. We have to get it into a // 32 bit value, because it could be a surrogate pair. // XMLUInt32 curVal = *srcPtr; // // If its a leading surrogate, then lets see if we have the trailing // available. If not, then give up now and leave it for next time. // unsigned int srcUsed = 1; if ((curVal >= 0xD800) && (curVal <= 0xDBFF)) { if (srcPtr + 1 >= srcEnd) break; // Create the composite surrogate pair curVal = ((curVal - 0xD800) << 10) + ((*(srcPtr + 1) - 0xDC00) + 0x10000); // And indicate that we ate another one srcUsed++; } // Figure out how many bytes we need unsigned int encodedBytes; if (curVal < 0x80) encodedBytes = 1; else if (curVal < 0x800) encodedBytes = 2; else if (curVal < 0x10000) encodedBytes = 3; else if (curVal < 0x110000) encodedBytes = 4; else { // If the options say to throw, then throw if (options == UnRep_Throw) { XMLCh tmpBuf[17]; XMLString::binToText(curVal, tmpBuf, 16, 16, getMemoryManager()); ThrowXMLwithMemMgr2 ( TranscodingException , XMLExcepts::Trans_Unrepresentable , tmpBuf , getEncodingName() , getMemoryManager() ); } // Else, use the replacement character *outPtr++ = chSpace; srcPtr += srcUsed; continue; } // // If we cannot fully get this char into the output buffer, // then leave it for the next time. // if (outPtr + encodedBytes > outEnd) break; // We can do it, so update the source index srcPtr += srcUsed; // // And spit out the bytes. We spit them out in reverse order // here, so bump up the output pointer and work down as we go. // outPtr += encodedBytes; switch(encodedBytes) { case 6 : *--outPtr = XMLByte((curVal | 0x80UL) & 0xBFUL); curVal >>= 6; case 5 : *--outPtr = XMLByte((curVal | 0x80UL) & 0xBFUL); curVal >>= 6; case 4 : *--outPtr = XMLByte((curVal | 0x80UL) & 0xBFUL); curVal >>= 6; case 3 : *--outPtr = XMLByte((curVal | 0x80UL) & 0xBFUL); curVal >>= 6; case 2 : *--outPtr = XMLByte((curVal | 0x80UL) & 0xBFUL); curVal >>= 6; case 1 : *--outPtr = XMLByte ( curVal | gFirstByteMark[encodedBytes] ); } // Add the encoded bytes back in again to indicate we've eaten them outPtr += encodedBytes; } // Fill in the chars we ate charsEaten = (srcPtr - srcData); // And return the bytes we filled in return (outPtr - toFill); } bool XMLUTF8Transcoder::canTranscodeTo(const unsigned int toCheck) { // We can represent anything in the Unicode (with surrogates) range return (toCheck <= 0x10FFFF); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/BinFileInputStream.hpp0000644000175000017500000000710111027453421021656 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: BinFileInputStream.hpp 670359 2008-06-22 13:43:45Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_BINFILEINPUTSTREAM_HPP) #define XERCESC_INCLUDE_GUARD_BINFILEINPUTSTREAM_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN class XMLUTIL_EXPORT BinFileInputStream : public BinInputStream { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- BinFileInputStream ( const XMLCh* const fileName , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); BinFileInputStream ( const char* const fileName , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); BinFileInputStream ( const FileHandle toUse , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual ~BinFileInputStream(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- bool getIsOpen() const; XMLFilePos getSize() const; void reset(); // ----------------------------------------------------------------------- // Implementation of the input stream interface // ----------------------------------------------------------------------- virtual XMLFilePos curPos() const; virtual XMLSize_t readBytes ( XMLByte* const toFill , const XMLSize_t maxToRead ); virtual const XMLCh* getContentType() const; private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- BinFileInputStream(const BinFileInputStream&); BinFileInputStream& operator=(const BinFileInputStream&); // ----------------------------------------------------------------------- // Private data members // // fSource // The source file that we represent. The FileHandle type is defined // per platform. // ----------------------------------------------------------------------- FileHandle fSource; MemoryManager* const fMemoryManager; }; // --------------------------------------------------------------------------- // BinFileInputStream: Getter methods // --------------------------------------------------------------------------- inline bool BinFileInputStream::getIsOpen() const { return (fSource != (FileHandle) XERCES_Invalid_File_Handle); } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/XMemory.cpp0000644000175000017500000000676510764751127017577 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMemory.cpp 635226 2008-03-09 12:04:39Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN void* XMemory::operator new(size_t size) { size_t headerSize = XMLPlatformUtils::alignPointerForNewBlockAllocation( sizeof(MemoryManager*)); void* const block = XMLPlatformUtils::fgMemoryManager->allocate ( headerSize + size ); *(MemoryManager**)block = XMLPlatformUtils::fgMemoryManager; return (char*)block + headerSize; } #if defined(XERCES_MFC_SUPPORT) void* XMemory::operator new(size_t size, const char* /*file*/, int /*line*/) { return operator new(size); } void XMemory::operator delete(void* p, const char* /*file*/, int /*line*/) { operator delete(p); } #endif void* XMemory::operator new(size_t size, MemoryManager* manager) { assert(manager != 0); size_t headerSize = XMLPlatformUtils::alignPointerForNewBlockAllocation( sizeof(MemoryManager*)); void* const block = manager->allocate(headerSize + size); *(MemoryManager**)block = manager; return (char*)block + headerSize; } void* XMemory::operator new(size_t /*size*/, void* ptr) { return ptr; } void XMemory::operator delete(void* p) { if (p != 0) { size_t headerSize = XMLPlatformUtils::alignPointerForNewBlockAllocation( sizeof(MemoryManager*)); void* const block = (char*)p - headerSize; MemoryManager* const manager = *(MemoryManager**)block; assert(manager != 0); manager->deallocate(block); } } //The Borland compiler is complaining about duplicate overloading of delete #if !defined(XERCES_NO_MATCHING_DELETE_OPERATOR) void XMemory::operator delete(void* p, MemoryManager* manager) { assert(manager != 0); if (p != 0) { size_t headerSize = XMLPlatformUtils::alignPointerForNewBlockAllocation(sizeof(MemoryManager*)); void* const block = (char*)p - headerSize; /*** * assert(*(MemoryManager**)block == manager); * * NOTE: for compiler which can't properly trace the memory manager used in the * placement new, we use the memory manager embedded in the memory rather * than the one passed in */ MemoryManager* pM = *(MemoryManager**)block; pM->deallocate(block); } } void XMemory::operator delete(void* /*p*/, void* /*ptr*/) { } #endif XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/FileManagers/0000755000175000017500000000000011363617253020007 5ustar borisborisxerces-c-3.1.1/src/xercesc/util/FileManagers/WindowsFileMgr.hpp0000644000175000017500000000470110606722647023425 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: WindowsFileMgr.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_WINDOWSFILEMGR_HPP) #define XERCESC_INCLUDE_GUARD_WINDOWSFILEMGR_HPP #include XERCES_CPP_NAMESPACE_BEGIN // Concrete implementation of XMLFileMgr, implementing // file access on Windows systems. class WindowsFileMgr : public XMLFileMgr { public: WindowsFileMgr(); virtual ~WindowsFileMgr(); // File access virtual FileHandle fileOpen(const XMLCh* path, bool toWrite, MemoryManager* const manager); virtual FileHandle fileOpen(const char* path, bool toWrite, MemoryManager* const manager); virtual FileHandle openStdIn(MemoryManager* const manager); virtual void fileClose(FileHandle f, MemoryManager* const manager); virtual void fileReset(FileHandle f, MemoryManager* const manager); virtual XMLFilePos curPos(FileHandle f, MemoryManager* const manager); virtual XMLFilePos fileSize(FileHandle f, MemoryManager* const manager); virtual XMLSize_t fileRead(FileHandle f, XMLSize_t byteCount, XMLByte* buffer, MemoryManager* const manager); virtual void fileWrite(FileHandle f, XMLSize_t byteCount, const XMLByte* buffer, MemoryManager* const manager); // Ancillary path handling routines virtual XMLCh* getFullPath(const XMLCh* const srcPath, MemoryManager* const manager); virtual XMLCh* getCurrentDirectory(MemoryManager* const manager); virtual bool isRelative(const XMLCh* const toCheck, MemoryManager* const manager); private: bool _onNT; }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/FileManagers/WindowsFileMgr.cpp0000644000175000017500000003151010646620011023400 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: WindowsFileMgr.cpp 556533 2007-07-16 07:36:41Z amassari $ */ #include #include #include #include #include #ifndef INVALID_SET_FILE_POINTER #define INVALID_SET_FILE_POINTER ((DWORD)-1) #endif XERCES_CPP_NAMESPACE_BEGIN static bool isBackSlash(XMLCh c) { return c == chBackSlash || c == chYenSign || c == chWonSign; } WindowsFileMgr::WindowsFileMgr() { // Figure out if we are on NT and save that flag for later use OSVERSIONINFO OSVer; OSVer.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); ::GetVersionEx(&OSVer); _onNT = (OSVer.dwPlatformId == VER_PLATFORM_WIN32_NT); } WindowsFileMgr::~WindowsFileMgr() { } FileHandle WindowsFileMgr::fileOpen(const XMLCh* fileName, bool toWrite, MemoryManager* const manager) { // Watch for obvious wierdness if (!fileName) return 0; // // We have to play a little trick here. If its /x:..... // style fully qualified path, we have to toss the leading / // character. // const XMLCh* nameToOpen = fileName; if (*fileName == chForwardSlash) { if (XMLString::stringLen(fileName) > 3) { if (*(fileName + 2) == chColon) { const XMLCh chDrive = *(fileName + 1); if (((chDrive >= chLatin_A) && (chDrive <= chLatin_Z)) || ((chDrive >= chLatin_a) && (chDrive <= chLatin_z))) { nameToOpen = fileName + 1; } } // Similarly for UNC paths if ( *(fileName + 1) == *(fileName + 2) && (*(fileName + 1) == chForwardSlash || *(fileName + 1) == chBackSlash) ) { nameToOpen = fileName + 1; } } } // Ok, this might look stupid but its a semi-expedient way to deal // with a thorny problem. Shift-JIS and some other Asian encodings // are fundamentally broken and map both the backslash and the Yen // sign to the same code point. Transcoders have to pick one or the // other to map '\' to Unicode and tend to choose the Yen sign. // // Unicode Yen or Won signs as directory separators will fail. // // So, we will check this path name for Yen or won signs and, if they are // there, we'll replace them with slashes. // // A further twist: we replace Yen and Won with forward slashes rather // than back slashes. Either form of slash will work as a directory // separator. On Win 95 and 98, though, Unicode back-slashes may // fail to transode back to 8-bit 0x5C with some Unicode converters // to some of the problematic code pages. Forward slashes always // transcode correctly back to 8 bit char * form. // XMLCh *tmpUName = 0; const XMLCh* srcPtr = nameToOpen; while (*srcPtr) { if (*srcPtr == chYenSign || *srcPtr == chWonSign) break; srcPtr++; } // // If we found a yen, then we have to create a temp file name. Else // go with the file name as is and save the overhead. // if (*srcPtr) { tmpUName = XMLString::replicate(nameToOpen, manager); XMLCh* tmpPtr = tmpUName; while (*tmpPtr) { if (*tmpPtr == chYenSign || *tmpPtr == chWonSign) *tmpPtr = chForwardSlash; tmpPtr++; } nameToOpen = tmpUName; } FileHandle retVal = 0; if (_onNT) { retVal = ::CreateFileW ( (LPCWSTR) nameToOpen , toWrite?GENERIC_WRITE:GENERIC_READ , FILE_SHARE_READ , 0 , toWrite?CREATE_ALWAYS:OPEN_EXISTING , toWrite?FILE_ATTRIBUTE_NORMAL:FILE_FLAG_SEQUENTIAL_SCAN , 0 ); } else { // // We are Win 95 / 98. Take the Unicode file name back to (char *) // so that we can open it. // char* tmpName = XMLString::transcode(nameToOpen, manager); retVal = ::CreateFileA ( tmpName , toWrite?GENERIC_WRITE:GENERIC_READ , FILE_SHARE_READ , 0 , toWrite?CREATE_ALWAYS:OPEN_EXISTING , toWrite?FILE_ATTRIBUTE_NORMAL:FILE_FLAG_SEQUENTIAL_SCAN , 0 ); manager->deallocate(tmpName);//delete [] tmpName; } if (tmpUName) manager->deallocate(tmpUName);//delete [] tmpUName; if (retVal == INVALID_HANDLE_VALUE) return 0; return retVal; } FileHandle WindowsFileMgr::fileOpen(const char* path, bool toWrite, MemoryManager* const manager) { XMLCh* tmpFileName = XMLString::transcode(path, manager); ArrayJanitor janText(tmpFileName, manager); return fileOpen(tmpFileName, toWrite, manager); } FileHandle WindowsFileMgr::openStdIn(MemoryManager* const manager) { // // Get the standard input handle. Duplicate it and return that copy // since the outside world cannot tell the difference and will shut // down this handle when its done with it. If we gave out the orignal, // shutting it would prevent any further output. // HANDLE stdInOrg = ::GetStdHandle(STD_INPUT_HANDLE); if (stdInOrg == INVALID_HANDLE_VALUE) { XMLCh stdinStr[] = {chLatin_s, chLatin_t, chLatin_d, chLatin_i, chLatin_n, chNull}; ThrowXMLwithMemMgr1(XMLPlatformUtilsException, XMLExcepts::File_CouldNotOpenFile, stdinStr, manager); } HANDLE retHandle; if (!::DuplicateHandle ( ::GetCurrentProcess() , stdInOrg , ::GetCurrentProcess() , &retHandle , 0 , FALSE , DUPLICATE_SAME_ACCESS)) { ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::File_CouldNotDupHandle, manager); } return retHandle; } void WindowsFileMgr::fileClose(FileHandle f, MemoryManager* const manager) { if (!f) ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::CPtr_PointerIsZero, manager); if (!::CloseHandle(f)) ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::File_CouldNotCloseFile, manager); } void WindowsFileMgr::fileReset(FileHandle f, MemoryManager* const manager) { if (!f) ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::CPtr_PointerIsZero, manager); // Seek to the start of the file if (::SetFilePointer(f, 0, 0, FILE_BEGIN) == INVALID_SET_FILE_POINTER) ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::File_CouldNotResetFile, manager); } XMLFilePos WindowsFileMgr::curPos(FileHandle f, MemoryManager* const manager) { if (!f) ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::CPtr_PointerIsZero, manager); // Get the current position LONG high=0; DWORD low = ::SetFilePointer(f, 0, &high, FILE_CURRENT); if (low == INVALID_SET_FILE_POINTER && GetLastError()!=NO_ERROR) ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::File_CouldNotGetCurPos, manager); return (((XMLFilePos)high) << 32) | low; } XMLFilePos WindowsFileMgr::fileSize(FileHandle f, MemoryManager* const manager) { if (!f) ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::CPtr_PointerIsZero, manager); DWORD high=0; DWORD low=::GetFileSize(f, &high); if(low==INVALID_FILE_SIZE && GetLastError()!=NO_ERROR) // TODO: find a better exception ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::File_CouldNotGetCurPos, manager); return (((XMLFilePos)high) << 32) | low; } XMLSize_t WindowsFileMgr::fileRead(FileHandle f, XMLSize_t byteCount, XMLByte* buffer, MemoryManager* const manager) { if (!f || !buffer) ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::CPtr_PointerIsZero, manager); DWORD bytesRead = 0; if (!::ReadFile(f, buffer, (DWORD)byteCount, &bytesRead, 0)) { // // Check specially for a broken pipe error. If we get this, it just // means no more data from the pipe, so return zero. // if (::GetLastError() != ERROR_BROKEN_PIPE) ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::File_CouldNotReadFromFile, manager); } return (unsigned int)bytesRead; } void WindowsFileMgr::fileWrite(FileHandle f, XMLSize_t byteCount, const XMLByte* buffer, MemoryManager* const manager) { if (!f || !buffer) ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::CPtr_PointerIsZero, manager); const XMLByte* tmpFlush = buffer; while (byteCount > 0) { DWORD bytesWritten = 0; if (!::WriteFile(f, tmpFlush, (DWORD)byteCount, &bytesWritten, 0)) ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::File_CouldNotWriteToFile, manager); tmpFlush+=bytesWritten; byteCount-=bytesWritten; } } XMLCh* WindowsFileMgr::getFullPath(const XMLCh* const srcPath, MemoryManager* const manager) { // // If we are on NT, then use wide character APIs, else use ASCII APIs. // We have to do it manually since we are only built in ASCII mode from // the standpoint of the APIs. // if (_onNT) { // Use a local buffer that is big enough for the largest legal path const unsigned int bufSize = 1024; XMLCh tmpPath[bufSize + 1]; XMLCh* namePart = 0; if (!::GetFullPathNameW((LPCWSTR)srcPath, bufSize, (LPWSTR)tmpPath, (LPWSTR*)&namePart)) return 0; // Return a copy of the path return XMLString::replicate(tmpPath, manager); } else { // Transcode the incoming string char* tmpSrcPath = XMLString::transcode(srcPath, manager); ArrayJanitor janSrcPath(tmpSrcPath, manager); // Use a local buffer that is big enough for the largest legal path const unsigned int bufSize = 511; char tmpPath[511 + 1]; char* namePart = 0; if (!::GetFullPathNameA(tmpSrcPath, bufSize, tmpPath, &namePart)) return 0; // Return a transcoded copy of the path return XMLString::transcode(tmpPath, manager); } } XMLCh* WindowsFileMgr::getCurrentDirectory(MemoryManager* const manager) { // // If we are on NT, then use wide character APIs, else use ASCII APIs. // We have to do it manually since we are only built in ASCII mode from // the standpoint of the APIs. // if (_onNT) { // Use a local buffer that is big enough for the largest legal path const unsigned int bufSize = 1024; XMLCh tmpPath[bufSize + 1]; if (!::GetCurrentDirectoryW(bufSize, (LPWSTR)tmpPath)) return 0; // Return a copy of the path return XMLString::replicate(tmpPath, manager); } else { // Use a local buffer that is big enough for the largest legal path const unsigned int bufSize = 511; char tmpPath[511 + 1]; if (!::GetCurrentDirectoryA(bufSize, tmpPath)) return 0; // Return a transcoded copy of the path return XMLString::transcode(tmpPath, manager); } } bool WindowsFileMgr::isRelative(const XMLCh* const toCheck, MemoryManager* const /*manager*/) { // Check for pathological case of empty path if (!toCheck || !toCheck[0]) return false; // // If its starts with a drive, then it cannot be relative. Note that // we checked the drive not being empty above, so worst case its one // char long and the check of the 1st char will fail because its really // a null character. // if (toCheck[1] == chColon) { if (((toCheck[0] >= chLatin_A) && (toCheck[0] <= chLatin_Z)) || ((toCheck[0] >= chLatin_a) && (toCheck[0] <= chLatin_z))) { return false; } } // // If it starts with a double slash, then it cannot be relative since // it's a remote file. // if (isBackSlash(toCheck[0])) return false; // Else assume its a relative path return true; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/FileManagers/PosixFileMgr.cpp0000644000175000017500000001445511033366054023066 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: PosixFileMgr.cpp 673975 2008-07-04 09:23:56Z borisk $ */ #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN PosixFileMgr::PosixFileMgr() { } PosixFileMgr::~PosixFileMgr() { } FileHandle PosixFileMgr::fileOpen(const XMLCh* path, bool toWrite, MemoryManager* const manager) { const char* tmpFileName = XMLString::transcode(path, manager); ArrayJanitor janText((char*)tmpFileName, manager); return fileOpen(tmpFileName, toWrite, manager); } FileHandle PosixFileMgr::fileOpen(const char* path, bool toWrite, MemoryManager* const /*manager*/) { const char* perms = (toWrite) ? "wb" : "rb"; FileHandle result = (FileHandle)fopen(path , perms); return result; } FileHandle PosixFileMgr::openStdIn(MemoryManager* const /*manager*/) { return (FileHandle)fdopen(dup(0), "rb"); } void PosixFileMgr::fileClose(FileHandle f, MemoryManager* const manager) { if (!f) ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::CPtr_PointerIsZero, manager); if (fclose((FILE*)f)) ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::File_CouldNotCloseFile, manager); } void PosixFileMgr::fileReset(FileHandle f, MemoryManager* const manager) { if (!f) ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::CPtr_PointerIsZero, manager); // Seek to the start of the file if (fseek((FILE*)f, 0, SEEK_SET)) ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::File_CouldNotResetFile, manager); } XMLFilePos PosixFileMgr::curPos(FileHandle f, MemoryManager* const manager) { if (!f) ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::CPtr_PointerIsZero, manager); long curPos = ftell((FILE*)f); if (curPos == -1) ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::File_CouldNotGetSize, manager); return (XMLFilePos)curPos; } XMLFilePos PosixFileMgr::fileSize(FileHandle f, MemoryManager* const manager) { if (!f) ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::CPtr_PointerIsZero, manager); // Get the current position long curPos = ftell((FILE*)f); if (curPos == -1) ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::File_CouldNotGetCurPos, manager); // Seek to the end and save that value for return if (fseek((FILE*)f, 0, SEEK_END)) ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::File_CouldNotSeekToEnd, manager); long retVal = ftell((FILE*)f); if (retVal == -1) ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::File_CouldNotSeekToEnd, manager); // And put the pointer back if (fseek((FILE*)f, curPos, SEEK_SET)) ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::File_CouldNotSeekToPos, manager); return (XMLFilePos)retVal; } XMLSize_t PosixFileMgr::fileRead(FileHandle f, XMLSize_t byteCount, XMLByte* buffer, MemoryManager* const manager) { if (!f || !buffer) ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::CPtr_PointerIsZero, manager); XMLSize_t bytesRead = 0; if (byteCount > 0) { bytesRead = fread((void*)buffer, 1, byteCount, (FILE*)f); if (ferror((FILE*)f)) ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::File_CouldNotReadFromFile, manager); } return bytesRead; } void PosixFileMgr::fileWrite(FileHandle f, XMLSize_t byteCount, const XMLByte* buffer, MemoryManager* const manager) { if (!f || !buffer) ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::CPtr_PointerIsZero, manager); while (byteCount > 0) { XMLSize_t bytesWritten = fwrite(buffer, sizeof(XMLByte), byteCount, (FILE*)f); if (ferror((FILE*)f)) ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::File_CouldNotWriteToFile, manager); buffer += bytesWritten; byteCount -= bytesWritten; } } XMLCh* PosixFileMgr::getFullPath(const XMLCh* const srcPath, MemoryManager* const manager) { // // NOTE: The path provided has always already been opened successfully, // so we know that its not some pathological freaky path. It comes in // in native format, and goes out as Unicode always // char* newSrc = XMLString::transcode(srcPath, manager); ArrayJanitor janText(newSrc, manager); // Use a local buffer that is big enough for the largest legal path char absPath[PATH_MAX + 1]; // get the absolute path if (!realpath(newSrc, absPath)) ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::File_CouldNotGetBasePathName, manager); return XMLString::transcode(absPath, manager); } XMLCh* PosixFileMgr::getCurrentDirectory(MemoryManager* const manager) { char dirBuf[PATH_MAX + 2]; char *curDir = getcwd(&dirBuf[0], PATH_MAX + 1); if (!curDir) ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::File_CouldNotGetBasePathName, manager); return XMLString::transcode(curDir, manager); } bool PosixFileMgr::isRelative(const XMLCh* const toCheck, MemoryManager* const /*manager*/) { // Check for pathological case of empty path if (!toCheck || !toCheck[0]) return false; // // If it starts with a slash, then it cannot be relative. // return toCheck[0] != XMLCh('/'); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/FileManagers/PosixFileMgr.hpp0000644000175000017500000000463210606722647023100 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: PosixFileMgr.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_POSIXFILEMGR_HPP) #define XERCESC_INCLUDE_GUARD_POSIXFILEMGR_HPP #include XERCES_CPP_NAMESPACE_BEGIN // Concrete implementation of XMLFileMgr, implementing // file access on posix compatible systems. class PosixFileMgr : public XMLFileMgr { public: PosixFileMgr(); virtual ~PosixFileMgr(); // File access virtual FileHandle fileOpen(const XMLCh* path, bool toWrite, MemoryManager* const manager); virtual FileHandle fileOpen(const char* path, bool toWrite, MemoryManager* const manager); virtual FileHandle openStdIn(MemoryManager* const manager); virtual void fileClose(FileHandle f, MemoryManager* const manager); virtual void fileReset(FileHandle f, MemoryManager* const manager); virtual XMLFilePos curPos(FileHandle f, MemoryManager* const manager); virtual XMLFilePos fileSize(FileHandle f, MemoryManager* const manager); virtual XMLSize_t fileRead(FileHandle f, XMLSize_t byteCount, XMLByte* buffer, MemoryManager* const manager); virtual void fileWrite(FileHandle f, XMLSize_t byteCount, const XMLByte* buffer, MemoryManager* const manager); // Ancillary path handling routines virtual XMLCh* getFullPath(const XMLCh* const srcPath, MemoryManager* const manager); virtual XMLCh* getCurrentDirectory(MemoryManager* const manager); virtual bool isRelative(const XMLCh* const toCheck, MemoryManager* const manager); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/RefArrayOf.c0000644000175000017500000001756111360344373017625 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: RefArrayOf.c 932887 2010-04-11 13:04:59Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #if defined(XERCES_TMPLSINC) #include #endif XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // RefArrayOf: Constructors and Destructor // --------------------------------------------------------------------------- template RefArrayOf::RefArrayOf(const XMLSize_t size, MemoryManager* const manager) : fSize(size) , fArray(0) , fMemoryManager(manager) { fArray = (TElem**) fMemoryManager->allocate(fSize * sizeof(TElem*));//new TElem*[fSize]; for (XMLSize_t index = 0; index < fSize; index++) fArray[index] = 0; } template RefArrayOf::RefArrayOf(TElem* values[], const XMLSize_t size, MemoryManager* const manager) : fSize(size) , fArray(0) , fMemoryManager(manager) { fArray = (TElem**) fMemoryManager->allocate(fSize * sizeof(TElem*));//new TElem*[fSize]; for (XMLSize_t index = 0; index < fSize; index++) fArray[index] = values[index]; } template RefArrayOf:: RefArrayOf(const RefArrayOf& source) : fSize(source.fSize) , fArray(0) , fMemoryManager(source.fMemoryManager) { fArray = (TElem**) fMemoryManager->allocate(fSize * sizeof(TElem*));//new TElem*[fSize]; for (XMLSize_t index = 0; index < fSize; index++) fArray[index] = source.fArray[index]; } template RefArrayOf::~RefArrayOf() { fMemoryManager->deallocate(fArray);//delete [] fArray; } // --------------------------------------------------------------------------- // RefArrayOf: Public operators // --------------------------------------------------------------------------- template TElem*& RefArrayOf:: operator[](const XMLSize_t index) { if (index >= fSize) ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Array_BadIndex, fMemoryManager); return fArray[index]; } template const TElem* RefArrayOf:: operator[](const XMLSize_t index) const { if (index >= fSize) ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Array_BadIndex, fMemoryManager); return fArray[index]; } template RefArrayOf& RefArrayOf:: operator=(const RefArrayOf& toAssign) { if (this == &toAssign) return *this; // Reallocate if not the same size if (toAssign.fSize != fSize) { fMemoryManager->deallocate(fArray);//delete [] fArray; fSize = toAssign.fSize; fArray = (TElem**) fMemoryManager->allocate(fSize * sizeof(TElem*));//new TElem*[fSize]; } // Copy over the source elements for (XMLSize_t index = 0; index < fSize; index++) fArray[index] = toAssign.fArray[index]; return *this; } template bool RefArrayOf:: operator==(const RefArrayOf& toCompare) const { if (this == &toCompare) return true; if (fSize != toCompare.fSize) return false; for (XMLSize_t index = 0; index < fSize; index++) { if (fArray[index] != toCompare.fArray[index]) return false; } return true; } template bool RefArrayOf:: operator!=(const RefArrayOf& toCompare) const { return !operator==(toCompare); } // --------------------------------------------------------------------------- // RefArrayOf: Copy operations // --------------------------------------------------------------------------- template XMLSize_t RefArrayOf:: copyFrom(const RefArrayOf& srcArray) { // // Copy over as many of the source elements as will fit into // this array. // const XMLSize_t count = fSize < srcArray.fSize ? fSize : srcArray.fSize; for (XMLSize_t index = 0; index < fSize; index++) fArray[index] = srcArray.fArray[index]; return count; } // --------------------------------------------------------------------------- // RefArrayOf: Getter methods // --------------------------------------------------------------------------- template XMLSize_t RefArrayOf::length() const { return fSize; } template TElem** RefArrayOf::rawData() const { return fArray; } // --------------------------------------------------------------------------- // RefArrayOf: Element management methods // --------------------------------------------------------------------------- template void RefArrayOf::deleteAt(const XMLSize_t index) { if (index >= fSize) ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Array_BadIndex, fMemoryManager); delete fArray[index]; fArray[index] = 0; } template void RefArrayOf::deleteAllElements() { for (XMLSize_t index = 0; index < fSize; index++) { delete fArray[index]; fArray[index] = 0; } } template void RefArrayOf::resize(const XMLSize_t newSize) { if (newSize == fSize) return; if (newSize < fSize) ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::Array_BadNewSize, fMemoryManager); // Allocate the new array TElem** newArray = (TElem**) fMemoryManager->allocate ( newSize * sizeof(TElem*) );//new TElem*[newSize]; // Copy the existing values XMLSize_t index = 0; for (; index < fSize; index++) newArray[index] = fArray[index]; for (; index < newSize; index++) newArray[index] = 0; // Delete the old array and update our members fMemoryManager->deallocate(fArray);//delete [] fArray; fArray = newArray; fSize = newSize; } // --------------------------------------------------------------------------- // RefArrayEnumerator: Constructors and Destructor // --------------------------------------------------------------------------- template RefArrayEnumerator:: RefArrayEnumerator( RefArrayOf* const toEnum , const bool adopt) : fAdopted(adopt) , fCurIndex(0) , fToEnum(toEnum) { } template RefArrayEnumerator::~RefArrayEnumerator() { if (fAdopted) delete fToEnum; } // --------------------------------------------------------------------------- // RefArrayEnumerator: Enum interface // --------------------------------------------------------------------------- template bool RefArrayEnumerator::hasMoreElements() const { if (fCurIndex >= fToEnum->length()) return false; return true; } template TElem& RefArrayEnumerator::nextElement() { return *(*fToEnum)[fCurIndex++]; } template void RefArrayEnumerator::Reset() { fCurIndex = 0; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/XMLIBM1140Transcoder.cpp0000644000175000017500000002666310665077060021516 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Local const data // // NOTE: These tables are generated from the ICU UCM files, using the // // gFromTable // This is the translation table for IBM1140 EBCDIC to Unicode. This // table contains 255 entries. The entry for EBCDIC byte x is the // Unicode translation of that byte. // // gToTable // gToTableSize // This is the translation table for Unicode to IBM1140 EBCDIC. This one // contains a list of records, sorted by the Unicode code point. We do // a binary search to find the Unicode point, and that record's other // field is the IBM1140 code point to translate to. // --------------------------------------------------------------------------- static const XMLCh gFromTable[256] = { 0x0000, 0x0001, 0x0002, 0x0003, 0x009C, 0x0009, 0x0086, 0x007F , 0x0097, 0x008D, 0x008E, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F , 0x0010, 0x0011, 0x0012, 0x0013, 0x009D, 0x0085, 0x0008, 0x0087 , 0x0018, 0x0019, 0x0092, 0x008F, 0x001C, 0x001D, 0x001E, 0x001F , 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x000A, 0x0017, 0x001B , 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x0005, 0x0006, 0x0007 , 0x0090, 0x0091, 0x0016, 0x0093, 0x0094, 0x0095, 0x0096, 0x0004 , 0x0098, 0x0099, 0x009A, 0x009B, 0x0014, 0x0015, 0x009E, 0x001A , 0x0020, 0x00A0, 0x00E2, 0x00E4, 0x00E0, 0x00E1, 0x00E3, 0x00E5 , 0x00E7, 0x00F1, 0x00A2, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C , 0x0026, 0x00E9, 0x00EA, 0x00EB, 0x00E8, 0x00ED, 0x00EE, 0x00EF , 0x00EC, 0x00DF, 0x0021, 0x0024, 0x002A, 0x0029, 0x003B, 0x00AC , 0x002D, 0x002F, 0x00C2, 0x00C4, 0x00C0, 0x00C1, 0x00C3, 0x00C5 , 0x00C7, 0x00D1, 0x00A6, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F , 0x00F8, 0x00C9, 0x00CA, 0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF , 0x00CC, 0x0060, 0x003A, 0x0023, 0x0040, 0x0027, 0x003D, 0x0022 , 0x00D8, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067 , 0x0068, 0x0069, 0x00AB, 0x00BB, 0x00F0, 0x00FD, 0x00FE, 0x00B1 , 0x00B0, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070 , 0x0071, 0x0072, 0x00AA, 0x00BA, 0x00E6, 0x00B8, 0x00C6, 0x20AC , 0x00B5, 0x007E, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078 , 0x0079, 0x007A, 0x00A1, 0x00BF, 0x00D0, 0x00DD, 0x00DE, 0x00AE , 0x005E, 0x00A3, 0x00A5, 0x00B7, 0x00A9, 0x00A7, 0x00B6, 0x00BC , 0x00BD, 0x00BE, 0x005B, 0x005D, 0x00AF, 0x00A8, 0x00B4, 0x00D7 , 0x007B, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047 , 0x0048, 0x0049, 0x00AD, 0x00F4, 0x00F6, 0x00F2, 0x00F3, 0x00F5 , 0x007D, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050 , 0x0051, 0x0052, 0x00B9, 0x00FB, 0x00FC, 0x00F9, 0x00FA, 0x00FF , 0x005C, 0x00F7, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058 , 0x0059, 0x005A, 0x00B2, 0x00D4, 0x00D6, 0x00D2, 0x00D3, 0x00D5 , 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037 , 0x0038, 0x0039, 0x00B3, 0x00DB, 0x00DC, 0x00D9, 0x00DA, 0x009F }; static const XMLTransService::TransRec gToTable[] = { { 0x0000, 0x00 }, { 0x0001, 0x01 }, { 0x0002, 0x02 }, { 0x0003, 0x03 } , { 0x0004, 0x37 }, { 0x0005, 0x2D }, { 0x0006, 0x2E }, { 0x0007, 0x2F } , { 0x0008, 0x16 }, { 0x0009, 0x05 }, { 0x000A, 0x25 }, { 0x000B, 0x0B } , { 0x000C, 0x0C }, { 0x000D, 0x0D }, { 0x000E, 0x0E }, { 0x000F, 0x0F } , { 0x0010, 0x10 }, { 0x0011, 0x11 }, { 0x0012, 0x12 }, { 0x0013, 0x13 } , { 0x0014, 0x3C }, { 0x0015, 0x3D }, { 0x0016, 0x32 }, { 0x0017, 0x26 } , { 0x0018, 0x18 }, { 0x0019, 0x19 }, { 0x001A, 0x3F }, { 0x001B, 0x27 } , { 0x001C, 0x1C }, { 0x001D, 0x1D }, { 0x001E, 0x1E }, { 0x001F, 0x1F } , { 0x0020, 0x40 }, { 0x0021, 0x5A }, { 0x0022, 0x7F }, { 0x0023, 0x7B } , { 0x0024, 0x5B }, { 0x0025, 0x6C }, { 0x0026, 0x50 }, { 0x0027, 0x7D } , { 0x0028, 0x4D }, { 0x0029, 0x5D }, { 0x002A, 0x5C }, { 0x002B, 0x4E } , { 0x002C, 0x6B }, { 0x002D, 0x60 }, { 0x002E, 0x4B }, { 0x002F, 0x61 } , { 0x0030, 0xF0 }, { 0x0031, 0xF1 }, { 0x0032, 0xF2 }, { 0x0033, 0xF3 } , { 0x0034, 0xF4 }, { 0x0035, 0xF5 }, { 0x0036, 0xF6 }, { 0x0037, 0xF7 } , { 0x0038, 0xF8 }, { 0x0039, 0xF9 }, { 0x003A, 0x7A }, { 0x003B, 0x5E } , { 0x003C, 0x4C }, { 0x003D, 0x7E }, { 0x003E, 0x6E }, { 0x003F, 0x6F } , { 0x0040, 0x7C }, { 0x0041, 0xC1 }, { 0x0042, 0xC2 }, { 0x0043, 0xC3 } , { 0x0044, 0xC4 }, { 0x0045, 0xC5 }, { 0x0046, 0xC6 }, { 0x0047, 0xC7 } , { 0x0048, 0xC8 }, { 0x0049, 0xC9 }, { 0x004A, 0xD1 }, { 0x004B, 0xD2 } , { 0x004C, 0xD3 }, { 0x004D, 0xD4 }, { 0x004E, 0xD5 }, { 0x004F, 0xD6 } , { 0x0050, 0xD7 }, { 0x0051, 0xD8 }, { 0x0052, 0xD9 }, { 0x0053, 0xE2 } , { 0x0054, 0xE3 }, { 0x0055, 0xE4 }, { 0x0056, 0xE5 }, { 0x0057, 0xE6 } , { 0x0058, 0xE7 }, { 0x0059, 0xE8 }, { 0x005A, 0xE9 }, { 0x005B, 0xBA } , { 0x005C, 0xE0 }, { 0x005D, 0xBB }, { 0x005E, 0xB0 }, { 0x005F, 0x6D } , { 0x0060, 0x79 }, { 0x0061, 0x81 }, { 0x0062, 0x82 }, { 0x0063, 0x83 } , { 0x0064, 0x84 }, { 0x0065, 0x85 }, { 0x0066, 0x86 }, { 0x0067, 0x87 } , { 0x0068, 0x88 }, { 0x0069, 0x89 }, { 0x006A, 0x91 }, { 0x006B, 0x92 } , { 0x006C, 0x93 }, { 0x006D, 0x94 }, { 0x006E, 0x95 }, { 0x006F, 0x96 } , { 0x0070, 0x97 }, { 0x0071, 0x98 }, { 0x0072, 0x99 }, { 0x0073, 0xA2 } , { 0x0074, 0xA3 }, { 0x0075, 0xA4 }, { 0x0076, 0xA5 }, { 0x0077, 0xA6 } , { 0x0078, 0xA7 }, { 0x0079, 0xA8 }, { 0x007A, 0xA9 }, { 0x007B, 0xC0 } , { 0x007C, 0x4F }, { 0x007D, 0xD0 }, { 0x007E, 0xA1 }, { 0x007F, 0x07 } , { 0x0080, 0x20 }, { 0x0081, 0x21 }, { 0x0082, 0x22 }, { 0x0083, 0x23 } , { 0x0084, 0x24 }, { 0x0085, 0x15 }, { 0x0086, 0x06 }, { 0x0087, 0x17 } , { 0x0088, 0x28 }, { 0x0089, 0x29 }, { 0x008A, 0x2A }, { 0x008B, 0x2B } , { 0x008C, 0x2C }, { 0x008D, 0x09 }, { 0x008E, 0x0A }, { 0x008F, 0x1B } , { 0x0090, 0x30 }, { 0x0091, 0x31 }, { 0x0092, 0x1A }, { 0x0093, 0x33 } , { 0x0094, 0x34 }, { 0x0095, 0x35 }, { 0x0096, 0x36 }, { 0x0097, 0x08 } , { 0x0098, 0x38 }, { 0x0099, 0x39 }, { 0x009A, 0x3A }, { 0x009B, 0x3B } , { 0x009C, 0x04 }, { 0x009D, 0x14 }, { 0x009E, 0x3E }, { 0x009F, 0xFF } , { 0x00A0, 0x41 }, { 0x00A1, 0xAA }, { 0x00A2, 0x4A }, { 0x00A3, 0xB1 } , { 0x00A5, 0xB2 }, { 0x00A6, 0x6A }, { 0x00A7, 0xB5 }, { 0x00A8, 0xBD } , { 0x00A9, 0xB4 }, { 0x00AA, 0x9A }, { 0x00AB, 0x8A }, { 0x00AC, 0x5F } , { 0x00AD, 0xCA }, { 0x00AE, 0xAF }, { 0x00AF, 0xBC }, { 0x00B0, 0x90 } , { 0x00B1, 0x8F }, { 0x00B2, 0xEA }, { 0x00B3, 0xFA }, { 0x00B4, 0xBE } , { 0x00B5, 0xA0 }, { 0x00B6, 0xB6 }, { 0x00B7, 0xB3 }, { 0x00B8, 0x9D } , { 0x00B9, 0xDA }, { 0x00BA, 0x9B }, { 0x00BB, 0x8B }, { 0x00BC, 0xB7 } , { 0x00BD, 0xB8 }, { 0x00BE, 0xB9 }, { 0x00BF, 0xAB }, { 0x00C0, 0x64 } , { 0x00C1, 0x65 }, { 0x00C2, 0x62 }, { 0x00C3, 0x66 }, { 0x00C4, 0x63 } , { 0x00C5, 0x67 }, { 0x00C6, 0x9E }, { 0x00C7, 0x68 }, { 0x00C8, 0x74 } , { 0x00C9, 0x71 }, { 0x00CA, 0x72 }, { 0x00CB, 0x73 }, { 0x00CC, 0x78 } , { 0x00CD, 0x75 }, { 0x00CE, 0x76 }, { 0x00CF, 0x77 }, { 0x00D0, 0xAC } , { 0x00D1, 0x69 }, { 0x00D2, 0xED }, { 0x00D3, 0xEE }, { 0x00D4, 0xEB } , { 0x00D5, 0xEF }, { 0x00D6, 0xEC }, { 0x00D7, 0xBF }, { 0x00D8, 0x80 } , { 0x00D9, 0xFD }, { 0x00DA, 0xFE }, { 0x00DB, 0xFB }, { 0x00DC, 0xFC } , { 0x00DD, 0xAD }, { 0x00DE, 0xAE }, { 0x00DF, 0x59 }, { 0x00E0, 0x44 } , { 0x00E1, 0x45 }, { 0x00E2, 0x42 }, { 0x00E3, 0x46 }, { 0x00E4, 0x43 } , { 0x00E5, 0x47 }, { 0x00E6, 0x9C }, { 0x00E7, 0x48 }, { 0x00E8, 0x54 } , { 0x00E9, 0x51 }, { 0x00EA, 0x52 }, { 0x00EB, 0x53 }, { 0x00EC, 0x58 } , { 0x00ED, 0x55 }, { 0x00EE, 0x56 }, { 0x00EF, 0x57 }, { 0x00F0, 0x8C } , { 0x00F1, 0x49 }, { 0x00F2, 0xCD }, { 0x00F3, 0xCE }, { 0x00F4, 0xCB } , { 0x00F5, 0xCF }, { 0x00F6, 0xCC }, { 0x00F7, 0xE1 }, { 0x00F8, 0x70 } , { 0x00F9, 0xDD }, { 0x00FA, 0xDE }, { 0x00FB, 0xDB }, { 0x00FC, 0xDC } , { 0x00FD, 0x8D }, { 0x00FE, 0x8E }, { 0x00FF, 0xDF }, { 0x203E, 0xBC } , { 0x20AC, 0x9F }, { 0xFF01, 0x5A }, { 0xFF02, 0x7F }, { 0xFF03, 0x7B } , { 0xFF04, 0x5B }, { 0xFF05, 0x6C }, { 0xFF06, 0x50 }, { 0xFF07, 0x7D } , { 0xFF08, 0x4D }, { 0xFF09, 0x5D }, { 0xFF0A, 0x5C }, { 0xFF0B, 0x4E } , { 0xFF0C, 0x6B }, { 0xFF0D, 0x60 }, { 0xFF0E, 0x4B }, { 0xFF0F, 0x61 } , { 0xFF10, 0xF0 }, { 0xFF11, 0xF1 }, { 0xFF12, 0xF2 }, { 0xFF13, 0xF3 } , { 0xFF14, 0xF4 }, { 0xFF15, 0xF5 }, { 0xFF16, 0xF6 }, { 0xFF17, 0xF7 } , { 0xFF18, 0xF8 }, { 0xFF19, 0xF9 }, { 0xFF1A, 0x7A }, { 0xFF1B, 0x5E } , { 0xFF1C, 0x4C }, { 0xFF1D, 0x7E }, { 0xFF1E, 0x6E }, { 0xFF1F, 0x6F } , { 0xFF20, 0x7C }, { 0xFF21, 0xC1 }, { 0xFF22, 0xC2 }, { 0xFF23, 0xC3 } , { 0xFF24, 0xC4 }, { 0xFF25, 0xC5 }, { 0xFF26, 0xC6 }, { 0xFF27, 0xC7 } , { 0xFF28, 0xC8 }, { 0xFF29, 0xC9 }, { 0xFF2A, 0xD1 }, { 0xFF2B, 0xD2 } , { 0xFF2C, 0xD3 }, { 0xFF2D, 0xD4 }, { 0xFF2E, 0xD5 }, { 0xFF2F, 0xD6 } , { 0xFF30, 0xD7 }, { 0xFF31, 0xD8 }, { 0xFF32, 0xD9 }, { 0xFF33, 0xE2 } , { 0xFF34, 0xE3 }, { 0xFF35, 0xE4 }, { 0xFF36, 0xE5 }, { 0xFF37, 0xE6 } , { 0xFF38, 0xE7 }, { 0xFF39, 0xE8 }, { 0xFF3A, 0xE9 }, { 0xFF3B, 0xBA } , { 0xFF3C, 0xE0 }, { 0xFF3D, 0xBB }, { 0xFF3E, 0xB0 }, { 0xFF3F, 0x6D } , { 0xFF40, 0x79 }, { 0xFF41, 0x81 }, { 0xFF42, 0x82 }, { 0xFF43, 0x83 } , { 0xFF44, 0x84 }, { 0xFF45, 0x85 }, { 0xFF46, 0x86 }, { 0xFF47, 0x87 } , { 0xFF48, 0x88 }, { 0xFF49, 0x89 }, { 0xFF4A, 0x91 }, { 0xFF4B, 0x92 } , { 0xFF4C, 0x93 }, { 0xFF4D, 0x94 }, { 0xFF4E, 0x95 }, { 0xFF4F, 0x96 } , { 0xFF50, 0x97 }, { 0xFF51, 0x98 }, { 0xFF52, 0x99 }, { 0xFF53, 0xA2 } , { 0xFF54, 0xA3 }, { 0xFF55, 0xA4 }, { 0xFF56, 0xA5 }, { 0xFF57, 0xA6 } , { 0xFF58, 0xA7 }, { 0xFF59, 0xA8 }, { 0xFF5A, 0xA9 }, { 0xFF5B, 0xC0 } , { 0xFF5C, 0x4F }, { 0xFF5D, 0xD0 }, { 0xFF5E, 0xA1 } }; static const XMLSize_t gToTableSz = 351; // --------------------------------------------------------------------------- // XMLIBM1140Transcoder: Public, static methods // --------------------------------------------------------------------------- XMLCh XMLIBM1140Transcoder::xlatThisOne(const XMLByte toXlat) { return gFromTable[toXlat]; } // --------------------------------------------------------------------------- // XMLIBM1140Transcoder: Constructors and Destructor // --------------------------------------------------------------------------- XMLIBM1140Transcoder::XMLIBM1140Transcoder( const XMLCh* const encodingName , const XMLSize_t blockSize , MemoryManager* const manager) : XML256TableTranscoder ( encodingName , blockSize , gFromTable , gToTable , gToTableSz , manager ) { } XMLIBM1140Transcoder::~XMLIBM1140Transcoder() { } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/XMLUniDefs.hpp0000644000175000017500000001427510606722647020115 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLUniDefs.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_XMLUNIDEFS_HPP) #define XERCESC_INCLUDE_GUARD_XMLUNIDEFS_HPP #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Constants for the Unicode characters of interest to us in an XML parser // We don't put these inside the class because then they could not be const // inline values, which would have significant performance ramifications. // // We cannot use a namespace because of the requirement to support old // compilers. // --------------------------------------------------------------------------- const XMLCh chNull = 0x00; const XMLCh chHTab = 0x09; const XMLCh chLF = 0x0A; const XMLCh chVTab = 0x0B; const XMLCh chFF = 0x0C; const XMLCh chCR = 0x0D; const XMLCh chAmpersand = 0x26; const XMLCh chAsterisk = 0x2A; const XMLCh chAt = 0x40; const XMLCh chBackSlash = 0x5C; const XMLCh chBang = 0x21; const XMLCh chCaret = 0x5E; const XMLCh chCloseAngle = 0x3E; const XMLCh chCloseCurly = 0x7D; const XMLCh chCloseParen = 0x29; const XMLCh chCloseSquare = 0x5D; const XMLCh chColon = 0x3A; const XMLCh chComma = 0x2C; const XMLCh chDash = 0x2D; const XMLCh chDollarSign = 0x24; const XMLCh chDoubleQuote = 0x22; const XMLCh chEqual = 0x3D; const XMLCh chForwardSlash = 0x2F; const XMLCh chGrave = 0x60; const XMLCh chNEL = 0x85; const XMLCh chOpenAngle = 0x3C; const XMLCh chOpenCurly = 0x7B; const XMLCh chOpenParen = 0x28; const XMLCh chOpenSquare = 0x5B; const XMLCh chPercent = 0x25; const XMLCh chPeriod = 0x2E; const XMLCh chPipe = 0x7C; const XMLCh chPlus = 0x2B; const XMLCh chPound = 0x23; const XMLCh chQuestion = 0x3F; const XMLCh chSingleQuote = 0x27; const XMLCh chSpace = 0x20; const XMLCh chSemiColon = 0x3B; const XMLCh chTilde = 0x7E; const XMLCh chUnderscore = 0x5F; const XMLCh chSwappedUnicodeMarker = XMLCh(0xFFFE); const XMLCh chUnicodeMarker = XMLCh(0xFEFF); const XMLCh chDigit_0 = 0x30; const XMLCh chDigit_1 = 0x31; const XMLCh chDigit_2 = 0x32; const XMLCh chDigit_3 = 0x33; const XMLCh chDigit_4 = 0x34; const XMLCh chDigit_5 = 0x35; const XMLCh chDigit_6 = 0x36; const XMLCh chDigit_7 = 0x37; const XMLCh chDigit_8 = 0x38; const XMLCh chDigit_9 = 0x39; const XMLCh chLatin_A = 0x41; const XMLCh chLatin_B = 0x42; const XMLCh chLatin_C = 0x43; const XMLCh chLatin_D = 0x44; const XMLCh chLatin_E = 0x45; const XMLCh chLatin_F = 0x46; const XMLCh chLatin_G = 0x47; const XMLCh chLatin_H = 0x48; const XMLCh chLatin_I = 0x49; const XMLCh chLatin_J = 0x4A; const XMLCh chLatin_K = 0x4B; const XMLCh chLatin_L = 0x4C; const XMLCh chLatin_M = 0x4D; const XMLCh chLatin_N = 0x4E; const XMLCh chLatin_O = 0x4F; const XMLCh chLatin_P = 0x50; const XMLCh chLatin_Q = 0x51; const XMLCh chLatin_R = 0x52; const XMLCh chLatin_S = 0x53; const XMLCh chLatin_T = 0x54; const XMLCh chLatin_U = 0x55; const XMLCh chLatin_V = 0x56; const XMLCh chLatin_W = 0x57; const XMLCh chLatin_X = 0x58; const XMLCh chLatin_Y = 0x59; const XMLCh chLatin_Z = 0x5A; const XMLCh chLatin_a = 0x61; const XMLCh chLatin_b = 0x62; const XMLCh chLatin_c = 0x63; const XMLCh chLatin_d = 0x64; const XMLCh chLatin_e = 0x65; const XMLCh chLatin_f = 0x66; const XMLCh chLatin_g = 0x67; const XMLCh chLatin_h = 0x68; const XMLCh chLatin_i = 0x69; const XMLCh chLatin_j = 0x6A; const XMLCh chLatin_k = 0x6B; const XMLCh chLatin_l = 0x6C; const XMLCh chLatin_m = 0x6D; const XMLCh chLatin_n = 0x6E; const XMLCh chLatin_o = 0x6F; const XMLCh chLatin_p = 0x70; const XMLCh chLatin_q = 0x71; const XMLCh chLatin_r = 0x72; const XMLCh chLatin_s = 0x73; const XMLCh chLatin_t = 0x74; const XMLCh chLatin_u = 0x75; const XMLCh chLatin_v = 0x76; const XMLCh chLatin_w = 0x77; const XMLCh chLatin_x = 0x78; const XMLCh chLatin_y = 0x79; const XMLCh chLatin_z = 0x7A; const XMLCh chYenSign = 0xA5; const XMLCh chWonSign = 0x20A9; const XMLCh chLineSeparator = 0x2028; const XMLCh chParagraphSeparator = 0x2029; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/XMLBigDecimal.cpp0000644000175000017500000003503110647412626020522 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLBigDecimal.cpp 557254 2007-07-18 13:28:54Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN /** * Constructs a BigDecimal from a string containing an optional (plus | minus) * sign followed by a sequence of zero or more decimal digits, optionally * followed by a fraction, which consists of a decimal point followed by * zero or more decimal digits. The string must contain at least one * digit in the integer or fractional part. The scale of the resulting * BigDecimal will be the number of digits to the right of the decimal * point in the string, or 0 if the string contains no decimal point. * Any extraneous characters (including whitespace) will result in * a NumberFormatException. * since parseBigDecimal() may throw exception, * caller of XMLBigDecimal need to catch it. // **/ typedef JanitorMemFunCall CleanupType; XMLBigDecimal::XMLBigDecimal(const XMLCh* const strValue, MemoryManager* const manager) : fSign(0) , fTotalDigits(0) , fScale(0) , fRawDataLen(0) , fRawData(0) , fIntVal(0) , fMemoryManager(manager) { if ((!strValue) || (!*strValue)) ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_emptyString, fMemoryManager); CleanupType cleanup(this, &XMLBigDecimal::cleanUp); try { fRawDataLen = XMLString::stringLen(strValue); fRawData = (XMLCh*) fMemoryManager->allocate ( ((fRawDataLen*2) + 2) * sizeof(XMLCh) //fRawData and fIntVal ); memcpy(fRawData, strValue, fRawDataLen * sizeof(XMLCh)); fRawData[fRawDataLen] = chNull; fIntVal = fRawData + fRawDataLen + 1; parseDecimal(strValue, fIntVal, fSign, (int&) fTotalDigits, (int&) fScale, fMemoryManager); } catch(const OutOfMemoryException&) { cleanup.release(); throw; } cleanup.release(); } XMLBigDecimal::~XMLBigDecimal() { cleanUp(); } void XMLBigDecimal::cleanUp() { if (fRawData) fMemoryManager->deallocate(fRawData); //XMLString::release(&fRawData); } void XMLBigDecimal::setDecimalValue(const XMLCh* const strValue) { fScale = fTotalDigits = 0; XMLSize_t valueLen = XMLString::stringLen(strValue); if (valueLen > fRawDataLen) { fMemoryManager->deallocate(fRawData); fRawData = (XMLCh*) fMemoryManager->allocate ( ((valueLen * 2) + 4) * sizeof(XMLCh) );//XMLString::replicate(strValue, fMemoryManager); } memcpy(fRawData, strValue, valueLen * sizeof(XMLCh)); fRawData[valueLen] = chNull; fRawDataLen = valueLen; fIntVal = fRawData + fRawDataLen + 1; parseDecimal(strValue, fIntVal, fSign, (int&) fTotalDigits, (int&) fScale, fMemoryManager); } /*** * 3.2.3 decimal * * . the preceding optional "+" sign is prohibited. * . The decimal point is required. * . Leading and trailing zeroes are prohibited subject to the following: * there must be at least one digit to the right and to the left of the decimal point which may be a zero. * ***/ XMLCh* XMLBigDecimal::getCanonicalRepresentation(const XMLCh* const rawData , MemoryManager* const memMgr) { XMLCh* retBuf = (XMLCh*) memMgr->allocate( (XMLString::stringLen(rawData)+1) * sizeof(XMLCh)); ArrayJanitor janName(retBuf, memMgr); int sign, totalDigits, fractDigits; try { parseDecimal(rawData, retBuf, sign, totalDigits, fractDigits, memMgr); } catch (const NumberFormatException&) { return 0; } //Extra space reserved in case strLen is zero XMLSize_t strLen = XMLString::stringLen(retBuf); XMLCh* retBuffer = (XMLCh*) memMgr->allocate( (strLen + 4) * sizeof(XMLCh)); if ( (sign == 0) || (totalDigits == 0)) { retBuffer[0] = chDigit_0; retBuffer[1] = chPeriod; retBuffer[2] = chDigit_0; retBuffer[3] = chNull; } else { XMLCh* retPtr = retBuffer; if (sign == -1) { *retPtr++ = chDash; } if (fractDigits == totalDigits) // no integer { *retPtr++ = chDigit_0; *retPtr++ = chPeriod; XMLString::copyNString(retPtr, retBuf, strLen); retPtr += strLen; *retPtr = chNull; } else if (fractDigits == 0) // no fraction { XMLString::copyNString(retPtr, retBuf, strLen); retPtr += strLen; *retPtr++ = chPeriod; *retPtr++ = chDigit_0; *retPtr = chNull; } else // normal { int intLen = totalDigits - fractDigits; XMLString::copyNString(retPtr, retBuf, intLen); retPtr += intLen; *retPtr++ = chPeriod; XMLString::copyNString(retPtr, &(retBuf[intLen]), fractDigits); retPtr += fractDigits; *retPtr = chNull; } } return retBuffer; } void XMLBigDecimal::parseDecimal(const XMLCh* const toParse , XMLCh* const retBuffer , int& sign , int& totalDigits , int& fractDigits , MemoryManager* const manager) { //init retBuffer[0] = chNull; totalDigits = 0; fractDigits = 0; // Strip leading white space, if any. const XMLCh* startPtr = toParse; while (XMLChar1_0::isWhitespace(*startPtr)) startPtr++; // If we hit the end, then return failure if (!*startPtr) ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_WSString, manager); // Strip tailing white space, if any. const XMLCh* endPtr = toParse + XMLString::stringLen(toParse); while (XMLChar1_0::isWhitespace(*(endPtr - 1))) endPtr--; // '+' or '-' is allowed only at the first position // and is NOT included in the return parsed string sign = 1; if (*startPtr == chDash) { sign = -1; startPtr++; if (startPtr == endPtr) { ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_Inv_chars, manager); } } else if (*startPtr == chPlus) { startPtr++; if (startPtr == endPtr) { ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_Inv_chars, manager); } } // Strip leading zeros while (*startPtr == chDigit_0) startPtr++; // containning zero, only zero, nothing but zero // it is a zero, indeed if (startPtr >= endPtr) { sign = 0; return; } XMLCh* retPtr = (XMLCh*) retBuffer; // Scan data bool dotSignFound = false; while (startPtr < endPtr) { if (*startPtr == chPeriod) { if (!dotSignFound) { dotSignFound = true; fractDigits = (int)(endPtr - startPtr - 1); startPtr++; continue; } else // '.' is allowed only once ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_2ManyDecPoint, manager); } // If not valid decimal digit, then an error if ((*startPtr < chDigit_0) || (*startPtr > chDigit_9)) ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_Inv_chars, manager); // copy over *retPtr++ = *startPtr++; totalDigits++; } /*** E2-44 totalDigits ... by restricting it to numbers that are expressible as i x 10^-n where i and n are integers such that |i| < 10^totalDigits and 0 <= n <= totalDigits. normalization: remove all trailing zero after the '.' and adjust the scaleValue as well. ***/ while ((fractDigits > 0) && (*(retPtr-1) == chDigit_0)) { retPtr--; fractDigits--; totalDigits--; } // 0.0 got past the check for zero because of the decimal point, so we need to double check it here if(totalDigits==0) sign = 0; *retPtr = chNull; //terminated return; } void XMLBigDecimal::parseDecimal(const XMLCh* const toParse , MemoryManager* const manager) { // Strip leading white space, if any. const XMLCh* startPtr = toParse; while (XMLChar1_0::isWhitespace(*startPtr)) startPtr++; // If we hit the end, then return failure if (!*startPtr) ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_WSString, manager); // Strip tailing white space, if any. const XMLCh* endPtr = toParse + XMLString::stringLen(toParse); while (XMLChar1_0::isWhitespace(*(endPtr - 1))) endPtr--; // '+' or '-' is allowed only at the first position // and is NOT included in the return parsed string if (*startPtr == chDash) { startPtr++; if (startPtr == endPtr) { ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_Inv_chars, manager); } } else if (*startPtr == chPlus) { startPtr++; if (startPtr == endPtr) { ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_Inv_chars, manager); } } // Strip leading zeros while (*startPtr == chDigit_0) startPtr++; // containning zero, only zero, nothing but zero // it is a zero, indeed if (startPtr >= endPtr) { return; } // Scan data bool dotSignFound = false; while (startPtr < endPtr) { if (*startPtr == chPeriod) { if (!dotSignFound) { dotSignFound = true; startPtr++; continue; } else // '.' is allowed only once ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_2ManyDecPoint, manager); } // If not valid decimal digit, then an error if ((*startPtr < chDigit_0) || (*startPtr > chDigit_9)) ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_Inv_chars, manager); startPtr++; } return; } int XMLBigDecimal::compareValues( const XMLBigDecimal* const lValue , const XMLBigDecimal* const rValue , MemoryManager* const manager) { if ((!lValue) || (!rValue) ) ThrowXMLwithMemMgr(NumberFormatException, XMLExcepts::XMLNUM_null_ptr, manager); return lValue->toCompare(*rValue); } /** * Returns -1, 0 or 1 as this is less than, equal to, or greater * than rValue. * * This method is based on the fact, that parsebigDecimal() would eliminate * unnecessary leading/trailing zeros. **/ int XMLBigDecimal::toCompare(const XMLBigDecimal& other) const { /*** * different sign */ int lSign = this->getSign(); if (lSign != other.getSign()) return (lSign > other.getSign() ? 1 : -1); /*** * same sign, zero */ if (lSign == 0) // optimization return 0; /*** * same sign, non-zero */ unsigned int lIntDigit = this->getTotalDigit() - this->getScale(); unsigned int rIntDigit = other.getTotalDigit() - other.getScale(); if (lIntDigit > rIntDigit) { return 1 * lSign; } else if (lIntDigit < rIntDigit) { return -1 * lSign; } else // compare fraction { int res = XMLString::compareString ( this->getValue() , other.getValue() ); if (res > 0) return 1 * lSign; else if (res < 0) return -1 * lSign; else return 0; } } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(XMLBigDecimal) XMLBigDecimal::XMLBigDecimal(MemoryManager* const manager) : fSign(0) , fTotalDigits(0) , fScale(0) , fRawDataLen(0) , fRawData(0) , fIntVal(0) , fMemoryManager(manager) { } void XMLBigDecimal::serialize(XSerializeEngine& serEng) { //REVISIT: may not need to call base since it does nothing XMLNumber::serialize(serEng); if (serEng.isStoring()) { serEng<>fSign; serEng>>fTotalDigits; serEng>>fScale; XMLCh* rawdataStr; serEng.readString(rawdataStr); ArrayJanitor rawdataName(rawdataStr, serEng.getMemoryManager()); fRawDataLen = XMLString::stringLen(rawdataStr); XMLCh* intvalStr; serEng.readString(intvalStr); ArrayJanitor intvalName(intvalStr, serEng.getMemoryManager()); XMLSize_t intvalStrLen = XMLString::stringLen(intvalStr); if (fRawData) fMemoryManager->deallocate(fRawData); fRawData = (XMLCh*) fMemoryManager->allocate ( ((fRawDataLen + intvalStrLen) + 4) * sizeof(XMLCh) ); memcpy(fRawData, rawdataStr, fRawDataLen * sizeof(XMLCh)); fRawData[fRawDataLen] = chNull; fIntVal = fRawData + fRawDataLen + 1; memcpy(fIntVal, intvalStr, intvalStrLen * sizeof(XMLCh)); fIntVal[intvalStrLen] = chNull; } } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/RefVectorOf.hpp0000644000175000017500000000426511037122704020344 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: RefVectorOf.hpp 676911 2008-07-15 13:27:32Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_REFVECTOROF_HPP) #define XERCESC_INCLUDE_GUARD_REFVECTOROF_HPP #include XERCES_CPP_NAMESPACE_BEGIN /** * Class with implementation for vectors of References - implements from the * Abstract class Vector */ template class RefVectorOf : public BaseRefVectorOf { public : // ----------------------------------------------------------------------- // Constructor // ----------------------------------------------------------------------- RefVectorOf(const XMLSize_t maxElems, const bool adoptElems = true, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); // ----------------------------------------------------------------------- // Destructor // ----------------------------------------------------------------------- ~RefVectorOf(); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- RefVectorOf(const RefVectorOf&); RefVectorOf& operator=(const RefVectorOf&); }; XERCES_CPP_NAMESPACE_END #if !defined(XERCES_TMPLSINC) #include #endif #endif xerces-c-3.1.1/src/xercesc/util/BitSet.cpp0000644000175000017500000001657611037122704017355 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: BitSet.cpp 676911 2008-07-15 13:27:32Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Local const data // // kBitsPerUnit // The number of bits in each of our allocation units, which is a 32 // bit value in this case. // // kGrowBy // The minimum allocation units to grow the buffer by. // --------------------------------------------------------------------------- const XMLSize_t kBitsPerUnit = 32; const XMLSize_t kGrowBy = 1; // --------------------------------------------------------------------------- // BitSet: Constructors and Destructor // --------------------------------------------------------------------------- BitSet::BitSet( const XMLSize_t size , MemoryManager* const manager) : fMemoryManager(manager) , fBits(0) , fUnitLen(0) { ensureCapacity(size); } BitSet::BitSet(const BitSet& toCopy) : XMemory(toCopy) , fMemoryManager(toCopy.fMemoryManager) , fBits(0) , fUnitLen(toCopy.fUnitLen) { fBits = (unsigned long*) fMemoryManager->allocate ( fUnitLen * sizeof(unsigned long) ); //new unsigned long[fUnitLen]; for (XMLSize_t i = 0; i < fUnitLen; i++) fBits[i] = toCopy.fBits[i]; } BitSet::~BitSet() { fMemoryManager->deallocate(fBits); //delete [] fBits; } // --------------------------------------------------------------------------- // BitSet: Equality methods // --------------------------------------------------------------------------- bool BitSet::equals(const BitSet& other) const { if (this == &other) return true; if (fUnitLen != other.fUnitLen) return false; for (XMLSize_t i = 0; i < fUnitLen; i++) { if (fBits[i] != other.fBits[i]) return false; } return true; } // --------------------------------------------------------------------------- // BitSet: Getter methods // --------------------------------------------------------------------------- bool BitSet::get(const XMLSize_t index) const { const XMLSize_t unitOfBit = (index / kBitsPerUnit); const XMLSize_t bitWithinUnit = index % kBitsPerUnit; // // If the index is beyond our size, don't actually expand. Just return // false, which is what the state would be if we did expand it. // bool retVal = false; if (unitOfBit <= fUnitLen) { if (fBits[unitOfBit] & (1 << bitWithinUnit)) retVal = true; } return retVal; } XMLSize_t BitSet::size() const { return fUnitLen * kBitsPerUnit; } // --------------------------------------------------------------------------- // BitSet: Setter methods // --------------------------------------------------------------------------- bool BitSet::allAreCleared() const { for (XMLSize_t index = 0; index < fUnitLen; index++) { if (fBits[index]) return false; } return true; } bool BitSet::allAreSet() const { for (XMLSize_t index = 0; index < fUnitLen; index++) { if (fBits[index] != 0xFFFFFFFF) return false; } return true; } void BitSet::clearAll() { // Just zero out all the units for (XMLSize_t index = 0; index < fUnitLen; index++) fBits[index] = 0; } void BitSet::clear(const XMLSize_t index) { ensureCapacity(index+1); const XMLSize_t unitOfBit = (index / kBitsPerUnit); const XMLSize_t bitWithinUnit = index % kBitsPerUnit; fBits[unitOfBit] &= ~(1UL << bitWithinUnit); } void BitSet::set(const XMLSize_t index) { ensureCapacity(index+1); const XMLSize_t unitOfBit = (index / kBitsPerUnit); const XMLSize_t bitWithinUnit = index % kBitsPerUnit; fBits[unitOfBit] |= (1UL << bitWithinUnit); } // --------------------------------------------------------------------------- // BitSet: Bitwise logical methods // --------------------------------------------------------------------------- void BitSet::andWith(const BitSet& other) { if (fUnitLen < other.fUnitLen) ensureCapacity(other.fUnitLen * kBitsPerUnit); for (XMLSize_t index = 0; index < other.fUnitLen; index++) fBits[index] &= other.fBits[index]; } void BitSet::orWith(const BitSet& other) { if (fUnitLen < other.fUnitLen) ensureCapacity(other.fUnitLen * kBitsPerUnit); for (XMLSize_t index = 0; index < other.fUnitLen; index++) fBits[index] |= other.fBits[index]; } void BitSet::xorWith(const BitSet& other) { if (fUnitLen < other.fUnitLen) ensureCapacity(other.fUnitLen * kBitsPerUnit); for (XMLSize_t index = 0; index < other.fUnitLen; index++) fBits[index] ^= other.fBits[index]; } // --------------------------------------------------------------------------- // BitSet: Miscellaneous methods // --------------------------------------------------------------------------- XMLSize_t BitSet::hash(const XMLSize_t hashModulus) const { const unsigned char* pBytes = (const unsigned char*)fBits; const XMLSize_t len = fUnitLen * sizeof(unsigned long); XMLSize_t hashVal = 0; for (XMLSize_t index = 0; index < len; index++) { hashVal <<= 1; hashVal ^= *pBytes; } return hashVal % hashModulus; } // --------------------------------------------------------------------------- // BitSet: Private methods // --------------------------------------------------------------------------- void BitSet::ensureCapacity(const XMLSize_t size) { // If we have enough space, do nothing if(fUnitLen * kBitsPerUnit >= size) return; // Calculate the units required to hold the passed bit count. XMLSize_t unitsNeeded = size / kBitsPerUnit; if (size % kBitsPerUnit) unitsNeeded++; // Regrow the unit length by at least the expansion unit if (unitsNeeded < (fUnitLen + kGrowBy)) unitsNeeded = fUnitLen + kGrowBy; // Allocate the array, copy the old stuff, and zero the new stuff unsigned long* newBits = (unsigned long*) fMemoryManager->allocate ( unitsNeeded * sizeof(unsigned long) ); //new unsigned long[unitsNeeded]; XMLSize_t index; for (index = 0; index < fUnitLen; index++) newBits[index] = fBits[index]; for (; index < unitsNeeded; index++) newBits[index] = 0; fMemoryManager->deallocate(fBits); //delete [] fBits; fBits = newBits; fUnitLen = unitsNeeded; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/Base64.hpp0000644000175000017500000002306011360344373017205 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: Base64.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_BASE64_HPP) #define XERCESC_INCLUDE_GUARD_BASE64_HPP #include #include #include XERCES_CPP_NAMESPACE_BEGIN // // This class provides encode/decode for RFC 2045 Base64 as // defined by RFC 2045, N. Freed and N. Borenstein. // RFC 2045: Multipurpose Internet Mail Extensions (MIME) // Part One: Format of Internet Message Bodies. Reference // 1996 Available at: http://www.ietf.org/rfc/rfc2045.txt // This class is used by XML Schema binary format validation // // class XMLUTIL_EXPORT Base64 { public : enum Conformance { Conf_RFC2045 , Conf_Schema }; //@{ /** * Encodes octets into Base64 data * * NOTE: The returned buffer is dynamically allocated and is the * responsibility of the caller to delete it when not longer needed. * Use the memory manager to release the returned buffer or * operator delete() if none was provided. * * @param inputData Binary data in XMLByte stream. * @param inputLength Length of the XMLByte stream. * @param outputLength Length of the encoded Base64 byte stream. * @param memMgr client provided memory manager * @return Encoded Base64 data in XMLByte stream, * or NULL if input data can not be encoded. */ static XMLByte* encode(const XMLByte* const inputData , const XMLSize_t inputLength , XMLSize_t* outputLength , MemoryManager* const memMgr = 0); /** * Decodes Base64 data into octets * * NOTE: The returned buffer is dynamically allocated and is the * responsibility of the caller to delete it when not longer needed. * Use the memory manager to release the returned buffer or * operator delete() if none was provided. * * @param inputData Base64 data in XMLByte stream. * @param decodedLength Length of decoded XMLByte stream. * @param memMgr client provided memory manager * @param conform conformance specified: if the input data conforms to the * RFC 2045 it is allowed to have any number of whitespace * characters inside; if it conforms to the XMLSchema specs, * it is allowed to have at most one whitespace character * between the quartets * @return Decoded binary data in XMLByte stream, * or NULL if input data can not be decoded. */ static XMLByte* decode( const XMLByte* const inputData , XMLSize_t* decodedLength , MemoryManager* const memMgr = 0 , Conformance conform = Conf_RFC2045 ); /** * Decodes Base64 data into octets * * NOTE: The returned buffer is dynamically allocated and is the * responsibility of the caller to delete it when not longer needed. * Use the memory manager to release the returned buffer or * operator delete() if none was provided. * * @param inputData Base64 data in XMLCh stream. * @param decodedLength Length of decoded XMLByte stream. * @param memMgr client provided memory manager * @param conform conformance specified: if the input data conforms to the * RFC 2045 it is allowed to have any number of whitespace * characters inside; if it conforms to the XMLSchema specs, * it is allowed to have at most one whitespace character * between the quartets * @return Decoded binary data in XMLByte stream, * or NULL if input data can not be decoded. */ static XMLByte* decodeToXMLByte( const XMLCh* const inputData , XMLSize_t* decodedLength , MemoryManager* const memMgr = 0 , Conformance conform = Conf_RFC2045 ); /** * Get data length * * Returns length of decoded data given an array * containing encoded data. * * @param inputData Base64 data in XMLCh stream. * @param memMgr client provided memory manager * @param conform conformance specified * @return Length of decoded data, * or -1 if input data can not be decoded. */ static int getDataLength( const XMLCh* const inputData , MemoryManager* const memMgr = 0 , Conformance conform = Conf_RFC2045 ); //@} /** * get canonical representation * * Caller is responsible for the proper deallocation * of the string returned. * * @param inputData A string containing the Base64 * @param memMgr client provided memory manager * @param conform conformance specified * * return: the canonical representation of the Base64 * if it is a valid Base64 * 0 otherwise */ static XMLCh* getCanonicalRepresentation ( const XMLCh* const inputData , MemoryManager* const memMgr = 0 , Conformance conform = Conf_RFC2045 ); private : // ----------------------------------------------------------------------- // Helper methods // ----------------------------------------------------------------------- static XMLByte* decode( const XMLByte* const inputData , XMLSize_t* outputLength , XMLByte*& canRepData , MemoryManager* const memMgr = 0 , Conformance conform = Conf_RFC2045 ); static bool isData(const XMLByte& octet); static bool isPad(const XMLByte& octet); static XMLByte set1stOctet(const XMLByte&, const XMLByte&); static XMLByte set2ndOctet(const XMLByte&, const XMLByte&); static XMLByte set3rdOctet(const XMLByte&, const XMLByte&); static void split1stOctet(const XMLByte&, XMLByte&, XMLByte&); static void split2ndOctet(const XMLByte&, XMLByte&, XMLByte&); static void split3rdOctet(const XMLByte&, XMLByte&, XMLByte&); // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- Base64(); Base64(const Base64&); // ----------------------------------------------------------------------- // Private data members // // base64Alphabet // The Base64 alphabet (see RFC 2045). // // base64Padding // Padding character (see RFC 2045). // // base64Inverse // Table used in decoding base64. // // isInitialized // Set once base64Inverse is initialized. // // quadsPerLine // Number of quadruplets per one line. The encoded output // stream must be represented in lines of no more // than 19 quadruplets each. // // ----------------------------------------------------------------------- static const XMLByte base64Alphabet[]; static const XMLByte base64Padding; static const XMLByte base64Inverse[]; static const unsigned int quadsPerLine; }; // ----------------------------------------------------------------------- // Helper methods // ----------------------------------------------------------------------- inline bool Base64::isPad(const XMLByte& octet) { return ( octet == base64Padding ); } inline XMLByte Base64::set1stOctet(const XMLByte& b1, const XMLByte& b2) { return (( b1 << 2 ) | ( b2 >> 4 )); } inline XMLByte Base64::set2ndOctet(const XMLByte& b2, const XMLByte& b3) { return (( b2 << 4 ) | ( b3 >> 2 )); } inline XMLByte Base64::set3rdOctet(const XMLByte& b3, const XMLByte& b4) { return (( b3 << 6 ) | b4 ); } inline void Base64::split1stOctet(const XMLByte& ch, XMLByte& b1, XMLByte& b2) { b1 = ch >> 2; b2 = ( ch & 0x3 ) << 4; } inline void Base64::split2ndOctet(const XMLByte& ch, XMLByte& b2, XMLByte& b3) { b2 |= ch >> 4; // combine with previous value b3 = ( ch & 0xf ) << 2; } inline void Base64::split3rdOctet(const XMLByte& ch, XMLByte& b3, XMLByte& b4) { b3 |= ch >> 6; // combine with previous value b4 = ( ch & 0x3f ); } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/StringPool.hpp0000644000175000017500000001373211360344373020266 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: StringPool.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_STRINGPOOL_HPP) #define XERCESC_INCLUDE_GUARD_STRINGPOOL_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN // // This class implements a string pool, in which strings can be added and // given a unique id by which they can be referred. It has to provide fast // access both mapping from a string to its id and mapping from an id to // its string. This requires that it provide two separate data structures. // The map one is a hash table for quick storage and look up by name. The // other is an array ordered by unique id which maps to the element in the // hash table. // // This works because strings cannot be removed from the pool once added, // other than flushing it completely, and because ids are assigned // sequentially from 1. // class XMLUTIL_EXPORT XMLStringPool : public XSerializable, public XMemory { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- XMLStringPool ( const unsigned int modulus = 109 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual ~XMLStringPool(); // ----------------------------------------------------------------------- // Pool management methods // ----------------------------------------------------------------------- virtual unsigned int addOrFind(const XMLCh* const newString); virtual bool exists(const XMLCh* const newString) const; virtual bool exists(const unsigned int id) const; virtual void flushAll(); virtual unsigned int getId(const XMLCh* const toFind) const; virtual const XMLCh* getValueForId(const unsigned int id) const; virtual unsigned int getStringCount() const; /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(XMLStringPool) XMLStringPool(MemoryManager* const manager); private : // ----------------------------------------------------------------------- // Private data types // ----------------------------------------------------------------------- struct PoolElem { unsigned int fId; XMLCh* fString; }; // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XMLStringPool(const XMLStringPool&); XMLStringPool& operator=(const XMLStringPool&); // ----------------------------------------------------------------------- // Private helper methods // ----------------------------------------------------------------------- unsigned int addNewEntry(const XMLCh* const newString); // ----------------------------------------------------------------------- // Private data members // // fIdMap // This is an array of pointers to the pool elements. It is ordered // by unique id, so using an id to index it gives instant access to // the string of that id. This is grown as required. // // fHashTable // This is the hash table used to store and quickly access the // strings. // // fMapCapacity // The current capacity of the id map. When the current id hits this // value the map must must be expanded. // // ----------------------------------------------------------------------- MemoryManager* fMemoryManager; PoolElem** fIdMap; RefHashTableOf* fHashTable; unsigned int fMapCapacity; protected: // protected data members // fCurId // This is the counter used to assign unique ids. It is just bumped // up one for each new string added. unsigned int fCurId; }; // Provide inline versions of some of the simple functions to improve performance. inline unsigned int XMLStringPool::addOrFind(const XMLCh* const newString) { PoolElem* elemToFind = fHashTable->get(newString); if (elemToFind) return elemToFind->fId; return addNewEntry(newString); } inline unsigned int XMLStringPool::getId(const XMLCh* const toFind) const { PoolElem* elemToFind = fHashTable->get(toFind); if (elemToFind) return elemToFind->fId; // Not found, so return zero, which is never a legal id return 0; } inline bool XMLStringPool::exists(const XMLCh* const newString) const { return fHashTable->containsKey(newString); } inline bool XMLStringPool::exists(const unsigned int id) const { return (id > 0 && (id < fCurId)); } inline const XMLCh* XMLStringPool::getValueForId(const unsigned int id) const { if (!id || (id >= fCurId)) ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::StrPool_IllegalId, fMemoryManager); // Just index the id map and return that element's string return fIdMap[id]->fString; } inline unsigned int XMLStringPool::getStringCount() const { return fCurId-1; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/XMLEntityResolver.hpp0000644000175000017500000001501410606722647021546 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLEntityResolver.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_XMLENTITYRESOLVER_HPP) #define XERCESC_INCLUDE_GUARD_XMLENTITYRESOLVER_HPP #include #include #include XERCES_CPP_NAMESPACE_BEGIN class InputSource; /** * Revised interface for resolving entities. * *

    If an application needs to implement customized handling * for external entities, it can implement this interface and * register an instance with the parser using the parser's * setXMLEntityResolver method or it can use the basic SAX interface * (EntityResolver). The difference between the two interfaces is * the arguments to the resolveEntity() method. With the SAX * EntityResolve the arguments are systemId and publicId. With this * interface the argument is a XMLResourceIdentifier object. Only * one EntityResolver can be set using setEntityResolver() or * setXMLEntityResolver, if both are set the last one set is * used.

    * *

    The parser will then allow the application to intercept any * external entities (including the external DTD subset and external * parameter entities, if any) before including them.

    * *

    Many applications will not need to implement this interface, * but it will be especially useful for applications that build * XML documents from databases or other specialised input sources, * or for applications that use URI types other than URLs.

    * *

    The following resolver would provide the application * with a special character stream for the entity with the system * identifier "http://www.myhost.com/today":

    * * * \#include
    * \#include
    *
    * class MyResolver : public XMLEntityResolver {
    *  public:
    *   InputSource resolveEntity (XMLResourceIdentifier* xmlri);
    *   ...
    *  };
    *
    * MyResolver::resolveEntity(XMLResourceIdentifier* xmlri) {
    *  switch(xmlri->getResourceIdentifierType()) {
    *   case XMLResourceIdentifier::SystemId:
    *    if (XMLString::compareString(xmlri->getSystemId(), "http://www.myhost.com/today")) {
    *     MyReader* reader = new MyReader();
    *     return new InputSource(reader);
    *    } else {
    *     return null;
    *    }
    *    break;
    *   default:
    *    return null;
    *  }
    * }
    * *

    The application can also use this interface to redirect system * identifiers to local URIs or to look up replacements in a catalog * (possibly by using the public identifier).

    * *

    The HandlerBase class implements the default behaviour for * this interface, which is simply always to return null (to request * that the parser use the default system identifier).

    * * @see XMLResourceIdentifier * @see Parser#setXMLEntityResolver * @see InputSource#InputSource * @see HandlerBase#HandlerBase */ class XMLUTIL_EXPORT XMLEntityResolver { public: /** @name Constructors and Destructor */ //@{ /** Destructor */ virtual ~XMLEntityResolver() { } //@} /** @name The XMLEntityResolver interface */ //@{ /** * Allow the application to resolve external entities. * *

    The Parser will call this method before opening any external * entity except the top-level document entity (including the * external DTD subset, external entities referenced within the * DTD, and external entities referenced within the document * element): the application may request that the parser resolve * the entity itself, that it use an alternative URI, or that it * use an entirely different input source.

    * *

    Application writers can use this method to redirect external * system identifiers to secure and/or local URIs, to look up * public identifiers in a catalogue, or to read an entity from a * database or other input source (including, for example, a dialog * box).

    * *

    If the system identifier is a URL, the SAX parser must * resolve it fully before reporting it to the application.

    * * @param resourceIdentifier An object containing the type of * resource to be resolved and the associated data members * corresponding to this type. * @return An InputSource object describing the new input source, * or null to request that the parser open a regular * URI connection to the system identifier. * The returned InputSource is owned by the parser which is * responsible to clean up the memory. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception IOException An IO exception, * possibly the result of creating a new InputStream * or Reader for the InputSource. * * @see InputSource#InputSource * @see XMLResourceIdentifier */ virtual InputSource* resolveEntity ( XMLResourceIdentifier* resourceIdentifier ) = 0; //@} protected: /** Default Constructor */ XMLEntityResolver() { } private : /* Unimplemented constructors and operators */ /* Copy constructor */ XMLEntityResolver(const XMLEntityResolver&); /* Assignment operator */ XMLEntityResolver& operator=(const XMLEntityResolver&); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/BinInputStream.hpp0000644000175000017500000000641611027453421021066 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: BinInputStream.hpp 670359 2008-06-22 13:43:45Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_BININPUTSTREAM_HPP) #define XERCESC_INCLUDE_GUARD_BININPUTSTREAM_HPP #include XERCES_CPP_NAMESPACE_BEGIN class XMLUTIL_EXPORT BinInputStream : public XMemory { public : // ----------------------------------------------------------------------- // Virtual destructor for derived classes // ----------------------------------------------------------------------- virtual ~BinInputStream(); // ----------------------------------------------------------------------- // The virtual input stream interface // ----------------------------------------------------------------------- virtual XMLFilePos curPos() const = 0; virtual XMLSize_t readBytes ( XMLByte* const toFill , const XMLSize_t maxToRead ) = 0; /** * Return the "out-of-band" content type for the data supplied by this * input stream in the form of the media-type production (mime type * with optional parameters such as encoding) as defined by the HTTP 1.1 * specification. If no such content type is provided for the data, 0 is * returned. This function is expected to return the correct value at * any time after the construction of the stream. * * An example of the stream that may return non-0 from this function is * an HTTP stream with the value returned taken from the "Content-Type" * HTTP header. Note also that if the encoding of the data is known * to the application by some other means then the setEncoding function * in the InputSource object should be used instead. The getContentType * function should only be used to return information that is intrinsic * to the stream. * * @return The content type, or 0 if one is not available. */ virtual const XMLCh* getContentType() const = 0; protected : // ----------------------------------------------------------------------- // Hidden Constructors // ----------------------------------------------------------------------- BinInputStream(); private : // ----------------------------------------------------------------------- // Unimplemented Constructors // ----------------------------------------------------------------------- BinInputStream(const BinInputStream&); BinInputStream& operator=(const BinInputStream&); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/TransENameMap.hpp0000644000175000017500000001342711360344373020622 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: TransENameMap.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_TRANSENAMEMAP_HPP) #define XERCESC_INCLUDE_GUARD_TRANSENAMEMAP_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN // // This class is really private to the TransService class. However, some // compilers are too dumb to allow us to hide this class there in the Cpp // file that uses it. // class ENameMap : public XMemory { public : // ----------------------------------------------------------------------- // Destructor // ----------------------------------------------------------------------- virtual ~ENameMap() { //delete [] fEncodingName; XMLPlatformUtils::fgMemoryManager->deallocate(fEncodingName); } // ----------------------------------------------------------------------- // Virtual factory method // ----------------------------------------------------------------------- virtual XMLTranscoder* makeNew ( const XMLSize_t blockSize , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ) const = 0; // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const XMLCh* getKey() const { return fEncodingName; } protected : // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- ENameMap(const XMLCh* const encodingName) : fEncodingName(XMLString::replicate(encodingName, XMLPlatformUtils::fgMemoryManager)) { } private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- ENameMap(); ENameMap(const ENameMap&); ENameMap& operator=(const ENameMap&); // ----------------------------------------------------------------------- // Private data members // // fEncodingName // This is the encoding name for the transcoder that is controlled // by this map instance. // ----------------------------------------------------------------------- XMLCh* fEncodingName; }; template class ENameMapFor : public ENameMap { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- ENameMapFor(const XMLCh* const encodingName); ~ENameMapFor(); // ----------------------------------------------------------------------- // Implementation of virtual factory method // ----------------------------------------------------------------------- virtual XMLTranscoder* makeNew(const XMLSize_t blockSize, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- ENameMapFor(); ENameMapFor(const ENameMapFor&); ENameMapFor& operator=(const ENameMapFor&); }; template class EEndianNameMapFor : public ENameMap { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- EEndianNameMapFor(const XMLCh* const encodingName, const bool swapped); ~EEndianNameMapFor(); // ----------------------------------------------------------------------- // Implementation of virtual factory method // ----------------------------------------------------------------------- virtual XMLTranscoder* makeNew(const XMLSize_t blockSize, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) const; private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- EEndianNameMapFor(const EEndianNameMapFor&); EEndianNameMapFor& operator=(const EEndianNameMapFor&); // ----------------------------------------------------------------------- // Private data members // // fSwapped // Indicates whether the endianness of the encoding is opposite of // that of the local host. // ----------------------------------------------------------------------- bool fSwapped; }; XERCES_CPP_NAMESPACE_END #if !defined(XERCES_TMPLSINC) #include #endif #endif xerces-c-3.1.1/src/xercesc/util/NetAccessors/0000755000175000017500000000000011363617254020047 5ustar borisborisxerces-c-3.1.1/src/xercesc/util/NetAccessors/BinHTTPInputStreamCommon.cpp0000644000175000017500000002213611327526335025333 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: BinFileInputStream.cpp 553903 2007-07-06 14:43:42Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #if HAVE_CONFIG_H # include #endif #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN BinHTTPInputStreamCommon::BinHTTPInputStreamCommon(MemoryManager *manager) : fBytesProcessed(0) , fBuffer(1023, manager) , fContentType(0) , fMemoryManager(manager) { } BinHTTPInputStreamCommon::~BinHTTPInputStreamCommon() { if(fContentType) fMemoryManager->deallocate(fContentType); } static const char *CRLF = "\r\n"; void BinHTTPInputStreamCommon::createHTTPRequest(const XMLURL &urlSource, const XMLNetHTTPInfo *httpInfo, CharBuffer &buffer) { static const char *GET = "GET "; static const char *PUT = "PUT "; static const char *POST = "POST "; static const char *HTTP10 = " HTTP/1.0\r\n"; static const char *HOST = "Host: "; static const char *AUTHORIZATION = "Authorization: Basic "; static const char *COLON = ":"; XMLTransService::Codes failReason; const XMLSize_t blockSize = 2048; XMLTranscoder* trans = XMLPlatformUtils::fgTransService->makeNewTranscoderFor("ISO8859-1", failReason, blockSize, fMemoryManager); Janitor janTrans(trans); TranscodeToStr hostName(urlSource.getHost(), trans, fMemoryManager); TranscodeToStr path(urlSource.getPath(), trans, fMemoryManager); TranscodeToStr fragment(urlSource.getFragment(), trans, fMemoryManager); TranscodeToStr query(urlSource.getQuery(), trans, fMemoryManager); // Build up the http GET command to send to the server. // To do: We should really support http 1.1. This implementation // is weak. if(httpInfo) { switch(httpInfo->fHTTPMethod) { case XMLNetHTTPInfo::GET: buffer.append(GET); break; case XMLNetHTTPInfo::PUT: buffer.append(PUT); break; case XMLNetHTTPInfo::POST: buffer.append(POST); break; } } else { buffer.append(GET); } if(path.str() != 0) { buffer.append((char*)path.str()); } else { buffer.append("/"); } if(query.str() != 0) { buffer.append("?"); buffer.append((char*)query.str()); } if(fragment.str() != 0) { buffer.append((char*)fragment.str()); } buffer.append(HTTP10); buffer.append(HOST); buffer.append((char*)hostName.str()); if(urlSource.getPortNum() != 80) { buffer.append(COLON); buffer.appendDecimalNumber(urlSource.getPortNum()); } buffer.append(CRLF); const XMLCh *username = urlSource.getUser(); const XMLCh *password = urlSource.getPassword(); if(username && password) { XMLBuffer userPassBuf(256, fMemoryManager); userPassBuf.append(username); userPassBuf.append(chColon); userPassBuf.append(password); TranscodeToStr userPass(userPassBuf.getRawBuffer(), trans, fMemoryManager); XMLSize_t len; XMLByte* encodedData = Base64::encode(userPass.str(), userPass.length(), &len, fMemoryManager); ArrayJanitor janBuf2(encodedData, fMemoryManager); if(encodedData) { // HTTP doesn't want the 0x0A separating the data in chunks of 76 chars per line XMLByte* authData = (XMLByte*)fMemoryManager->allocate((len+1)*sizeof(XMLByte)); ArrayJanitor janBuf(authData, fMemoryManager); XMLByte *cursor = authData; for(XMLSize_t i = 0; i < len; ++i) if(encodedData[i] != chLF) *cursor++ = encodedData[i]; *cursor++ = 0; buffer.append(AUTHORIZATION); buffer.append((char*)authData); buffer.append(CRLF); } } if(httpInfo && httpInfo->fHeaders) buffer.append(httpInfo->fHeaders, httpInfo->fHeadersLen); buffer.append(CRLF); } XMLCh *BinHTTPInputStreamCommon::findHeader(const char *name) { XMLSize_t len = strlen(name); char *p = strstr(fBuffer.getRawBuffer(), name); while(p != 0) { if(*(p - 1) == '\n' && *(p + len) == ':' && *(p + len + 1) == ' ') { p += len + 2; char *endP = strstr(p, CRLF); if(endP == 0) { for(endP = p; *endP != 0; ++endP) ; } // Transcode from iso-8859-1 TranscodeFromStr value((XMLByte*)p, endP - p, "ISO8859-1", fMemoryManager); return value.adopt(); } p = strstr(p + 1, name); } return 0; } int BinHTTPInputStreamCommon::sendRequest(const XMLURL &url, const XMLNetHTTPInfo *httpInfo) { // // Constants in ASCII to send/check in the HTTP request/response // static const char *CRLF2X = "\r\n\r\n"; static const char *LF2X = "\n\n"; // The port is open and ready to go. // Build up the http GET command to send to the server. CharBuffer requestBuffer(1023, fMemoryManager); createHTTPRequest(url, httpInfo, requestBuffer); // Send the http request if(!send(requestBuffer.getRawBuffer(), requestBuffer.getLen())) { ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::NetAcc_WriteSocket, url.getURLText(), fMemoryManager); } if(httpInfo && httpInfo->fPayload) { if(!send(httpInfo->fPayload, httpInfo->fPayloadLen)) { ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::NetAcc_WriteSocket, url.getURLText(), fMemoryManager); } } // // get the response, check the http header for errors from the server. // char tmpBuf[1024]; int ret; fBuffer.reset(); while(true) { ret = receive(tmpBuf, sizeof(tmpBuf)); if(ret == -1) { ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::NetAcc_ReadSocket, url.getURLText(), fMemoryManager); } fBuffer.append(tmpBuf, ret); fBufferPos = strstr(fBuffer.getRawBuffer(), CRLF2X); if(fBufferPos != 0) { fBufferPos += 4; *(fBufferPos - 2) = 0; break; } fBufferPos = strstr(fBuffer.getRawBuffer(), LF2X); if(fBufferPos != 0) { fBufferPos += 2; *(fBufferPos - 1) = 0; break; } } // Parse the response status char *p = strstr(fBuffer.getRawBuffer(), "HTTP"); if(p == 0) { ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::NetAcc_ReadSocket, url.getURLText(), fMemoryManager); } p = strchr(p, chSpace); if(p == 0) { ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::NetAcc_ReadSocket, url.getURLText(), fMemoryManager); } return atoi(p); } const XMLCh *BinHTTPInputStreamCommon::getContentType() const { if(fContentType == 0) { // mutable const_cast(this)->fContentType = const_cast(this)->findHeader("Content-Type"); } return fContentType; } XMLSize_t BinHTTPInputStreamCommon::readBytes(XMLByte* const toFill, const XMLSize_t maxToRead) { XMLSize_t len = fBuffer.getRawBuffer() + fBuffer.getLen() - fBufferPos; if(len > 0) { // If there's any data left over in the buffer into which we first // read from the server (to get the http header), return that. if (len > maxToRead) len = maxToRead; memcpy(toFill, fBufferPos, len); fBufferPos += len; } else { // There was no data in the local buffer. // Read some from the socket, straight into our caller's buffer. // int cbRead = receive((char *)toFill, maxToRead); if (cbRead == -1) { ThrowXMLwithMemMgr(NetAccessorException, XMLExcepts::NetAcc_ReadSocket, fMemoryManager); } len = cbRead; } fBytesProcessed += len; return len; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/NetAccessors/BinHTTPInputStreamCommon.hpp0000644000175000017500000001470311360344373025336 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: BinFileInputStream.hpp 553903 2007-07-06 14:43:42Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_BINHTTPINPUTSTREAMCOMMON_HPP) #define XERCESC_INCLUDE_GUARD_BINHTTPINPUTSTREAMCOMMON_HPP #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // // This class implements a simple expanding character buffer // class XMLUTIL_EXPORT CharBuffer { public: CharBuffer(XMLSize_t capacity = 1023, MemoryManager *manager = XMLPlatformUtils::fgMemoryManager) : fCapacity(capacity), fIndex(0), fMemoryManager(manager) { fBuffer = (char*)fMemoryManager->allocate((fCapacity + 1) * sizeof(char)); } ~CharBuffer() { fMemoryManager->deallocate(fBuffer); } const char* getRawBuffer() const { fBuffer[fIndex] = 0; return fBuffer; } char* getRawBuffer() { fBuffer[fIndex] = 0; return fBuffer; } XMLSize_t getLen() const { return fIndex; } void reset() { fIndex = 0; } void append(const char *chars) { if(chars != 0 && *chars != 0) { // get length of chars XMLSize_t count = 0; for(; *(chars+count); ++count) ; if(fIndex + count >= fCapacity) { ensureCapacity(count); } memcpy(&fBuffer[fIndex], chars, count * sizeof(char)); fIndex += count; } } void append(const char *chars, XMLSize_t len) { if(chars != 0 && len != 0) { if(fIndex + len >= fCapacity) { ensureCapacity(len); } memcpy(&fBuffer[fIndex], chars, len * sizeof(char)); fIndex += len; } } void appendDecimalNumber(unsigned int n) { if(n >= 10) { appendDecimalNumber(n / 10); n = n % 10; } if(fIndex + 1 >= fCapacity) ensureCapacity(1); fBuffer[fIndex] = '0' + n; ++fIndex; } void set(const char *chars) { reset(); append(chars); } private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- CharBuffer(const CharBuffer &); CharBuffer &operator=(const CharBuffer &); void ensureCapacity(XMLSize_t extraNeeded) { // If we can't handle it, try doubling the buffer size. XMLSize_t newCap = (fIndex + extraNeeded) * 2; if(newCap > fCapacity) { // Allocate new buffer char* newBuf = (char*)fMemoryManager->allocate((newCap + 1) * sizeof(char)); // Copy over the old stuff memcpy(newBuf, fBuffer, fIndex * sizeof(char)); // Clean up old buffer and store new stuff fMemoryManager->deallocate(fBuffer); fBuffer = newBuf; fCapacity = newCap; } } // ----------------------------------------------------------------------- // Private data members // ----------------------------------------------------------------------- char *fBuffer; XMLSize_t fCapacity; XMLSize_t fIndex; MemoryManager *fMemoryManager; }; // // Common base implementation of HTTP BinInputStream that is used by some // platform-specific implementations. // class XMLUTIL_EXPORT BinHTTPInputStreamCommon : public BinInputStream { public : virtual XMLFilePos curPos() const; virtual XMLSize_t readBytes ( XMLByte* const toFill , const XMLSize_t maxToRead ); virtual const XMLCh *getContentType() const; protected : BinHTTPInputStreamCommon(MemoryManager *manager); virtual ~BinHTTPInputStreamCommon(); /** * \return The HTTP status code */ int sendRequest(const XMLURL &url, const XMLNetHTTPInfo *httpInfo); XMLCh *findHeader(const char *name); virtual bool send(const char *buf, XMLSize_t len) = 0; /** * \return The length of the data received, or -1 if an error occured */ virtual int receive(char *buf, XMLSize_t len) = 0; private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- BinHTTPInputStreamCommon(const BinHTTPInputStreamCommon&); BinHTTPInputStreamCommon& operator=(const BinHTTPInputStreamCommon&); void createHTTPRequest(const XMLURL &urlSource, const XMLNetHTTPInfo *httpInfo, CharBuffer &buffer); // ----------------------------------------------------------------------- // Private data members // // fBytesProcessed // Its a rolling count of the number of bytes processed off this // input stream. // fBuffer // Holds the http header, plus the first part of the actual // data. Filled at the time the stream is opened, data goes // out to user in response to readBytes(). // fBufferPos // Pointers into fBuffer, showing start and end+1 of content // that readBytes must return. // ----------------------------------------------------------------------- XMLSize_t fBytesProcessed; CharBuffer fBuffer; char * fBufferPos; XMLCh * fContentType; MemoryManager* fMemoryManager; }; inline XMLFilePos BinHTTPInputStreamCommon::curPos() const { return fBytesProcessed; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/NetAccessors/WinSock/0000755000175000017500000000000011363617253021423 5ustar borisborisxerces-c-3.1.1/src/xercesc/util/NetAccessors/WinSock/BinHTTPURLInputStream.hpp0000644000175000017500000000500111027453421026107 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: BinHTTPURLInputStream.hpp 670359 2008-06-22 13:43:45Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_BINHTTPURLINPUTSTREAM_HPP) #define XERCESC_INCLUDE_GUARD_BINHTTPURLINPUTSTREAM_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN // // This class implements the BinInputStream interface specified by the XML // parser. // class XMLUTIL_EXPORT BinHTTPURLInputStream : public BinHTTPInputStreamCommon { public : BinHTTPURLInputStream(const XMLURL& urlSource, const XMLNetHTTPInfo* httpInfo=0); ~BinHTTPURLInputStream(); virtual bool send(const char *buf, XMLSize_t len); virtual int receive(char *buf, XMLSize_t len); static void Cleanup(); private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- BinHTTPURLInputStream(const BinHTTPURLInputStream&); BinHTTPURLInputStream& operator=(const BinHTTPURLInputStream&); // ----------------------------------------------------------------------- // Private data members // // fSocketHandle // The socket representing the connection to the remote file. // We deliberately did not define the type to be SOCKET, so as to // avoid bringing in any Windows header into this file. // ----------------------------------------------------------------------- SOCKET fSocketHandle; static bool fInitialized; static void Initialize(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); }; XERCES_CPP_NAMESPACE_END #endif // BINHTTPURLINPUTSTREAM_HPP xerces-c-3.1.1/src/xercesc/util/NetAccessors/WinSock/WinSockNetAccessor.cpp0000644000175000017500000000462410765525475025655 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: WinSockNetAccessor.cpp 635984 2008-03-11 15:54:37Z borisk $ */ #define _WINSOCKAPI_ #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN const XMLCh WinSockNetAccessor::fgMyName[] = { chLatin_W, chLatin_i, chLatin_n, chLatin_S, chLatin_o, chLatin_c, chLatin_k, chLatin_N, chLatin_e, chLatin_t, chLatin_A, chLatin_c, chLatin_c, chLatin_e, chLatin_s, chLatin_s, chLatin_o, chLatin_r, chNull }; WinSockNetAccessor::WinSockNetAccessor() { } WinSockNetAccessor::~WinSockNetAccessor() { // Cleanup code for the WinSock library here. BinHTTPURLInputStream::Cleanup(); } BinInputStream* WinSockNetAccessor::makeNew(const XMLURL& urlSource, const XMLNetHTTPInfo* httpInfo /*=0*/) { XMLURL::Protocols protocol = urlSource.getProtocol(); switch(protocol) { case XMLURL::HTTP: { BinHTTPURLInputStream* retStrm = new (urlSource.getMemoryManager()) BinHTTPURLInputStream(urlSource, httpInfo); return retStrm; break; } // // These are the only protocols we support now. So throw and // unsupported protocol exception for the others. // default : ThrowXMLwithMemMgr(MalformedURLException, XMLExcepts::URL_UnsupportedProto, urlSource.getMemoryManager()); break; } return 0; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/NetAccessors/WinSock/BinHTTPURLInputStream.cpp0000644000175000017500000004040011363604616026113 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: BinHTTPURLInputStream.cpp 936316 2010-04-21 14:19:58Z borisk $ */ #include #include #ifdef WITH_IPV6 #include #endif #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN typedef u_short (WSAAPI * LPFN_HTONS)(u_short hostshort); typedef SOCKET (WSAAPI * LPFN_SOCKET)(int af, int type, int protocol); typedef int (WSAAPI * LPFN_CONNECT)(SOCKET s, const struct sockaddr* name, int namelen); typedef int (WSAAPI * LPFN_SEND)(SOCKET s, const char* buf, int len, int flags); typedef int (WSAAPI * LPFN_RECV)(SOCKET s, char* buf, int len, int flags); typedef int (WSAAPI * LPFN_SHUTDOWN)(SOCKET s, int how); typedef int (WSAAPI * LPFN_CLOSESOCKET)(SOCKET s); typedef int (WSAAPI * LPFN_WSACLEANUP)(); typedef int (WSAAPI * LPFN_WSASTARTUP)(WORD wVersionRequested, LPWSADATA lpWSAData); #ifdef WITH_IPV6 typedef int (WSAAPI * LPFN_GETADDRINFO)(const char* nodename, const char * servname, const struct addrinfo * hints, struct addrinfo ** res); typedef void (WSAAPI * LPFN_FREEADDRINFO)(struct addrinfo * ai); #else typedef struct hostent *(WSAAPI * LPFN_GETHOSTBYNAME)(const char* name); typedef struct hostent *(WSAAPI * LPFN_GETHOSTBYADDR)(const char* addr, int len, int type); typedef unsigned long (WSAAPI * LPFN_INET_ADDR)(const char* cp); #endif static HMODULE gWinsockLib = NULL; static LPFN_HTONS gWShtons = NULL; static LPFN_SOCKET gWSsocket = NULL; static LPFN_CONNECT gWSconnect = NULL; static LPFN_SEND gWSsend = NULL; static LPFN_RECV gWSrecv = NULL; static LPFN_SHUTDOWN gWSshutdown = NULL; static LPFN_CLOSESOCKET gWSclosesocket = NULL; static LPFN_WSACLEANUP gWSACleanup = NULL; #ifdef WITH_IPV6 static LPFN_GETADDRINFO gWSgetaddrinfo = NULL; static LPFN_FREEADDRINFO gWSfreeaddrinfo = NULL; #else static LPFN_GETHOSTBYNAME gWSgethostbyname = NULL; static LPFN_GETHOSTBYADDR gWSgethostbyaddr = NULL; static LPFN_INET_ADDR gWSinet_addr = NULL; #endif static u_short wrap_htons(u_short hostshort) { return (*gWShtons)(hostshort); } static SOCKET wrap_socket(int af,int type,int protocol) { return (*gWSsocket)(af,type,protocol); } static int wrap_connect(SOCKET s,const struct sockaddr* name,int namelen) { return (*gWSconnect)(s,name,namelen); } static int wrap_send(SOCKET s,const char* buf,int len,int flags) { return (*gWSsend)(s,buf,len,flags); } static int wrap_recv(SOCKET s,char* buf,int len,int flags) { return (*gWSrecv)(s,buf,len,flags); } static int wrap_shutdown(SOCKET s,int how) { return (*gWSshutdown)(s,how); } static int wrap_closesocket(SOCKET socket) { return (*gWSclosesocket)(socket); } #ifdef WITH_IPV6 static int wrap_getaddrinfo(const char* nodename,const char* servname,const struct addrinfo* hints,struct addrinfo** res) { return (*gWSgetaddrinfo)(nodename,servname,hints,res); } static void wrap_freeaddrinfo(struct addrinfo* ai) { (*gWSfreeaddrinfo)(ai); } #else static struct hostent* wrap_gethostbyname(const char* name) { return (*gWSgethostbyname)(name); } static struct hostent* wrap_gethostbyaddr(const char* addr,int len,int type) { return (*gWSgethostbyaddr)(addr,len,type); } static unsigned long wrap_inet_addr(const char* cp) { return (*gWSinet_addr)(cp); } #endif class SocketJanitor { public: // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- SocketJanitor(SOCKET* toDelete) : fData(toDelete) {} ~SocketJanitor() { reset(); } SOCKET* get() const { return fData; } SOCKET* release() { SOCKET* p = fData; fData = 0; return p; } void reset(SOCKET* p = 0) { if(fData) { wrap_shutdown(*fData, SD_BOTH); wrap_closesocket(*fData); } fData = p; } bool isDataNull() { return (fData == 0); } private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- SocketJanitor(); SocketJanitor(const SocketJanitor&); SocketJanitor& operator=(const SocketJanitor&); // ----------------------------------------------------------------------- // Private data members // // fData // This is the pointer to the socket that must be closed when // this object is destroyed. // ----------------------------------------------------------------------- SOCKET* fData; }; bool BinHTTPURLInputStream::fInitialized = false; void BinHTTPURLInputStream::Initialize(MemoryManager* const manager) { // // Initialize the WinSock library here. // WORD wVersionRequested; WSADATA wsaData; LPFN_WSASTARTUP startup = NULL; if(gWinsockLib == NULL) { #ifdef WITH_IPV6 gWinsockLib = LoadLibraryA("WS2_32"); #else gWinsockLib = LoadLibraryA("WSOCK32"); #endif if(gWinsockLib == NULL) { ThrowXMLwithMemMgr(NetAccessorException, XMLExcepts::NetAcc_InitFailed, manager); } else { startup = (LPFN_WSASTARTUP) GetProcAddress(gWinsockLib,"WSAStartup"); gWSACleanup = (LPFN_WSACLEANUP) GetProcAddress(gWinsockLib,"WSACleanup"); gWShtons = (LPFN_HTONS) GetProcAddress(gWinsockLib,"htons"); gWSsocket = (LPFN_SOCKET) GetProcAddress(gWinsockLib,"socket"); gWSconnect = (LPFN_CONNECT) GetProcAddress(gWinsockLib,"connect"); gWSsend = (LPFN_SEND) GetProcAddress(gWinsockLib,"send"); gWSrecv = (LPFN_RECV) GetProcAddress(gWinsockLib,"recv"); gWSshutdown = (LPFN_SHUTDOWN) GetProcAddress(gWinsockLib,"shutdown"); gWSclosesocket = (LPFN_CLOSESOCKET) GetProcAddress(gWinsockLib,"closesocket"); #ifdef WITH_IPV6 gWSgetaddrinfo = (LPFN_GETADDRINFO) GetProcAddress(gWinsockLib,"getaddrinfo"); gWSfreeaddrinfo = (LPFN_FREEADDRINFO) GetProcAddress(gWinsockLib,"freeaddrinfo"); #else gWSgethostbyname = (LPFN_GETHOSTBYNAME) GetProcAddress(gWinsockLib,"gethostbyname"); gWSgethostbyaddr = (LPFN_GETHOSTBYADDR) GetProcAddress(gWinsockLib,"gethostbyaddr"); gWSinet_addr = (LPFN_INET_ADDR) GetProcAddress(gWinsockLib,"inet_addr"); #endif if(startup == NULL || gWSACleanup == NULL || gWShtons == NULL || gWSsocket == NULL || gWSconnect == NULL || gWSsend == NULL || gWSrecv == NULL || gWSshutdown == NULL || gWSclosesocket == NULL #ifdef WITH_IPV6 || gWSgetaddrinfo == NULL || gWSfreeaddrinfo == NULL #else || gWSgethostbyname == NULL || gWSgethostbyaddr == NULL || gWSinet_addr == NULL #endif ) { gWSACleanup = NULL; Cleanup(); ThrowXMLwithMemMgr(NetAccessorException, XMLExcepts::NetAcc_InitFailed, manager); } } } wVersionRequested = MAKEWORD( 2, 2 ); int err = (*startup)(wVersionRequested, &wsaData); if (err != 0) { // Call WSAGetLastError() to get the last error. ThrowXMLwithMemMgr(NetAccessorException, XMLExcepts::NetAcc_InitFailed, manager); } fInitialized = true; } void BinHTTPURLInputStream::Cleanup() { XMLMutexLock lock(XMLPlatformUtils::fgAtomicMutex); if(fInitialized) { if(gWSACleanup) (*gWSACleanup)(); gWSACleanup = NULL; FreeLibrary(gWinsockLib); gWinsockLib = NULL; gWShtons = NULL; gWSsocket = NULL; gWSconnect = NULL; gWSsend = NULL; gWSrecv = NULL; gWSshutdown = NULL; gWSclosesocket = NULL; #ifdef WITH_IPV6 gWSgetaddrinfo = NULL; gWSfreeaddrinfo = NULL; #else gWSgethostbyname = NULL; gWSgethostbyaddr = NULL; gWSinet_addr = NULL; #endif fInitialized = false; } } BinHTTPURLInputStream::BinHTTPURLInputStream(const XMLURL& urlSource, const XMLNetHTTPInfo* httpInfo /*=0*/) : BinHTTPInputStreamCommon(urlSource.getMemoryManager()) , fSocketHandle(0) { MemoryManager *memoryManager = urlSource.getMemoryManager(); // Check if we need to load the winsock library. While locking the // mutex every time may be somewhat slow, we don't care in this // particular case since the next operation will most likely be // the network access which is a lot slower. // { XMLMutexLock lock(XMLPlatformUtils::fgAtomicMutex); if (!fInitialized) Initialize(memoryManager); } // // Pull all of the parts of the URL out of th urlSource object, and transcode them // and transcode them back to ASCII. // const XMLCh* hostName = urlSource.getHost(); if (hostName == 0) ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::File_CouldNotOpenFile, urlSource.getURLText(), memoryManager); char* hostNameAsCharStar = XMLString::transcode(hostName, memoryManager); ArrayJanitor janHostNameAsCharStar(hostNameAsCharStar, memoryManager); XMLURL url(urlSource); int redirectCount = 0; SocketJanitor janSock(0); do { // // Set up a socket. // #ifdef WITH_IPV6 struct addrinfo hints, *res, *ai; CharBuffer portBuffer(10, memoryManager); portBuffer.appendDecimalNumber(url.getPortNum()); memset(&hints, 0, sizeof(struct addrinfo)); hints.ai_family = PF_UNSPEC; hints.ai_socktype = SOCK_STREAM; int n = wrap_getaddrinfo(hostNameAsCharStar,portBuffer.getRawBuffer(),&hints, &res); if(n != 0) { hints.ai_flags = AI_NUMERICHOST; n = wrap_getaddrinfo(hostNameAsCharStar,(const char*)tempbuf,&hints, &res); if(n != 0) ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::NetAcc_TargetResolution, hostName, memoryManager); } janSock.reset(); for (ai = res; ai != NULL; ai = ai->ai_next) { // Open a socket with the correct address family for this address. fSocketHandle = wrap_socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); if (fSocketHandle == INVALID_SOCKET) continue; janSock.reset(&fSocketHandle); if (wrap_connect(fSocketHandle, ai->ai_addr, (int)ai->ai_addrlen) == SOCKET_ERROR) { wrap_freeaddrinfo(res); // Call WSAGetLastError() to get the error number. ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::NetAcc_ConnSocket, url.getURLText(), memoryManager); } break; } wrap_freeaddrinfo(res); if (fSocketHandle == INVALID_SOCKET) { // Call WSAGetLastError() to get the error number. ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::NetAcc_CreateSocket, url.getURLText(), memoryManager); } #else struct hostent* hostEntPtr = 0; struct sockaddr_in sa; if ((hostEntPtr = wrap_gethostbyname(hostNameAsCharStar)) == NULL) { unsigned long numAddress = wrap_inet_addr(hostNameAsCharStar); if (numAddress == INADDR_NONE) { // Call WSAGetLastError() to get the error number. ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::NetAcc_TargetResolution, hostName, memoryManager); } if ((hostEntPtr = wrap_gethostbyaddr((const char *) &numAddress, sizeof(unsigned long), AF_INET)) == NULL) { // Call WSAGetLastError() to get the error number. ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::NetAcc_TargetResolution, hostName, memoryManager); } } memcpy((void *) &sa.sin_addr, (const void *) hostEntPtr->h_addr, hostEntPtr->h_length); sa.sin_family = hostEntPtr->h_addrtype; sa.sin_port = wrap_htons((unsigned short)url.getPortNum()); janSock.reset(); fSocketHandle = wrap_socket(hostEntPtr->h_addrtype, SOCK_STREAM, 0); if (fSocketHandle == INVALID_SOCKET) { // Call WSAGetLastError() to get the error number. ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::NetAcc_CreateSocket, url.getURLText(), memoryManager); } janSock.reset(&fSocketHandle); if (wrap_connect(fSocketHandle, (struct sockaddr *) &sa, sizeof(sa)) == SOCKET_ERROR) { // Call WSAGetLastError() to get the error number. ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::NetAcc_ConnSocket, url.getURLText(), memoryManager); } #endif int status = sendRequest(url, httpInfo); if(status == 200) { // HTTP 200 OK response means we're done. // We're done break; } // a 3xx response means there was an HTTP redirect else if(status >= 300 && status <= 307) { redirectCount++; XMLCh *newURLString = findHeader("Location"); ArrayJanitor janNewURLString(newURLString, memoryManager); if(newURLString == 0 || *newURLString == 0) { ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::File_CouldNotOpenFile, url.getURLText(), memoryManager); } XMLURL newURL(memoryManager); newURL.setURL(url, newURLString); if(newURL.getProtocol() != XMLURL::HTTP) { ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::File_CouldNotOpenFile, newURL.getURLText(), memoryManager); } url = newURL; hostName = newURL.getHost(); if (hostName == 0) ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::File_CouldNotOpenFile, newURL.getURLText(), memoryManager); janHostNameAsCharStar.release(); hostNameAsCharStar = XMLString::transcode(hostName, memoryManager); janHostNameAsCharStar.reset(hostNameAsCharStar, memoryManager); } else { // Most likely a 404 Not Found error. ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::File_CouldNotOpenFile, url.getURLText(), memoryManager); } } while(redirectCount < 6); janSock.release(); } BinHTTPURLInputStream::~BinHTTPURLInputStream() { wrap_shutdown(fSocketHandle, SD_BOTH); wrap_closesocket(fSocketHandle); } bool BinHTTPURLInputStream::send(const char *buf, XMLSize_t len) { XMLSize_t done = 0; int ret; while(done < len) { ret = wrap_send(fSocketHandle, buf + done, (int)(len - done), 0); if(ret == SOCKET_ERROR) return false; done += ret; } return true; } int BinHTTPURLInputStream::receive(char *buf, XMLSize_t len) { int iLen = wrap_recv(fSocketHandle, buf, (int)len, 0); if (iLen == SOCKET_ERROR) return -1; return iLen; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/NetAccessors/WinSock/WinSockNetAccessor.hpp0000644000175000017500000000370010606722647025646 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: WinSockNetAccessor.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_WINSOCKNETACCESSOR_HPP) #define XERCESC_INCLUDE_GUARD_WINSOCKNETACCESSOR_HPP #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // // This class is the wrapper for the WinSock library which provides // support for sockets. Its being used here to add the ability to // use HTTP URL's as the system id's in the XML decl clauses. // class XMLUTIL_EXPORT WinSockNetAccessor : public XMLNetAccessor { public : WinSockNetAccessor(); ~WinSockNetAccessor(); virtual BinInputStream* makeNew(const XMLURL& urlSource, const XMLNetHTTPInfo* httpInfo=0); virtual const XMLCh* getId() const; private : static const XMLCh fgMyName[]; WinSockNetAccessor(const WinSockNetAccessor&); WinSockNetAccessor& operator=(const WinSockNetAccessor&); }; // WinSockNetAccessor inline const XMLCh* WinSockNetAccessor::getId() const { return fgMyName; } XERCES_CPP_NAMESPACE_END #endif // WINSOCKNETACCESSOR_HPP xerces-c-3.1.1/src/xercesc/util/NetAccessors/Curl/0000755000175000017500000000000011363617253020753 5ustar borisborisxerces-c-3.1.1/src/xercesc/util/NetAccessors/Curl/CurlNetAccessor.hpp0000644000175000017500000000371510606722647024534 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: CurlNetAccessor.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_CURLNETACCESSOR_HPP) #define XERCESC_INCLUDE_GUARD_CURLNETACCESSOR_HPP #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // // This class is the wrapper for the socket based code which // provides the ability to fetch a resource specified using // a HTTP or FTP URL. // class XMLUTIL_EXPORT CurlNetAccessor : public XMLNetAccessor { public : CurlNetAccessor(); ~CurlNetAccessor(); virtual BinInputStream* makeNew(const XMLURL& urlSource, const XMLNetHTTPInfo* httpInfo=0); virtual const XMLCh* getId() const; virtual void initCurl(void); virtual void cleanupCurl(void); private : static int fgCurlInitCount; static const XMLCh fgMyName[]; CurlNetAccessor(const CurlNetAccessor&); CurlNetAccessor& operator=(const CurlNetAccessor&); }; // CurlNetAccessor inline const XMLCh* CurlNetAccessor::getId() const { return fgMyName; } XERCES_CPP_NAMESPACE_END #endif // CURLNETACCESSOR_HPP xerces-c-3.1.1/src/xercesc/util/NetAccessors/Curl/CurlNetAccessor.cpp0000644000175000017500000000524110523643534024516 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: CurlNetAccessor.cpp 471747 2006-11-06 14:31:56Z amassari $ */ #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN const XMLCh CurlNetAccessor::fgMyName[] = { chLatin_C, chLatin_u, chLatin_r, chLatin_l, chLatin_N, chLatin_e, chLatin_t, chLatin_A, chLatin_c, chLatin_c, chLatin_e, chLatin_s, chLatin_s, chLatin_o, chLatin_r, chNull }; CurlNetAccessor::CurlNetAccessor() { initCurl(); } CurlNetAccessor::~CurlNetAccessor() { cleanupCurl(); } // // Global once-only init and cleanup of curl // // The init count used here is not thread protected; we assume // that creation of the CurlNetAccessor will be serialized by // the application. If the application is also using curl, then // care must be taken that curl is initialized only once, by some // other means, or by overloading these methods. // int CurlNetAccessor::fgCurlInitCount = 0; void CurlNetAccessor::initCurl() { if (fgCurlInitCount++ == 0) curl_global_init( 0 | CURL_GLOBAL_ALL // Initialize all curl modules // | CURL_GLOBAL_WIN32 // Initialize Windows sockets first // | CURL_GLOBAL_SSL // Initialize SSL first ); } void CurlNetAccessor::cleanupCurl() { if (fgCurlInitCount > 0 && --fgCurlInitCount == 0) curl_global_cleanup(); } BinInputStream* CurlNetAccessor::makeNew(const XMLURL& urlSource, const XMLNetHTTPInfo* httpInfo/*=0*/) { // Just create a CurlURLInputStream // We defer any checking of the url type for curl in CurlURLInputStream CurlURLInputStream* retStrm = new (urlSource.getMemoryManager()) CurlURLInputStream(urlSource, httpInfo); return retStrm; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/NetAccessors/Curl/CurlURLInputStream.cpp0000644000175000017500000003004511363604616025144 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: CurlURLInputStream.cpp 936316 2010-04-21 14:19:58Z borisk $ */ #if HAVE_CONFIG_H #include #endif #include #include #include #if HAVE_ERRNO_H #include #endif #if HAVE_UNISTD_H #include #endif #if HAVE_SYS_TYPES_H #include #endif #if HAVE_SYS_TIME_H #include #endif #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN CurlURLInputStream::CurlURLInputStream(const XMLURL& urlSource, const XMLNetHTTPInfo* httpInfo/*=0*/) : fMulti(0) , fEasy(0) , fMemoryManager(urlSource.getMemoryManager()) , fURLSource(urlSource) , fTotalBytesRead(0) , fWritePtr(0) , fBytesRead(0) , fBytesToRead(0) , fDataAvailable(false) , fBufferHeadPtr(fBuffer) , fBufferTailPtr(fBuffer) , fPayload(0) , fPayloadLen(0) , fContentType(0) { // Allocate the curl multi handle fMulti = curl_multi_init(); // Allocate the curl easy handle fEasy = curl_easy_init(); // Set URL option TranscodeToStr url(fURLSource.getURLText(), "ISO8859-1", fMemoryManager); curl_easy_setopt(fEasy, CURLOPT_URL, (char*)url.str()); // Set up a way to recieve the data curl_easy_setopt(fEasy, CURLOPT_WRITEDATA, this); // Pass this pointer to write function curl_easy_setopt(fEasy, CURLOPT_WRITEFUNCTION, staticWriteCallback); // Our static write function // Do redirects curl_easy_setopt(fEasy, CURLOPT_FOLLOWLOCATION, (long)1); curl_easy_setopt(fEasy, CURLOPT_MAXREDIRS, (long)6); // Add username and password if authentication is required const XMLCh *username = urlSource.getUser(); const XMLCh *password = urlSource.getPassword(); if(username && password) { XMLBuffer userPassBuf(256, fMemoryManager); userPassBuf.append(username); userPassBuf.append(chColon); userPassBuf.append(password); TranscodeToStr userPass(userPassBuf.getRawBuffer(), "ISO8859-1", fMemoryManager); curl_easy_setopt(fEasy, CURLOPT_HTTPAUTH, (long)CURLAUTH_ANY); curl_easy_setopt(fEasy, CURLOPT_USERPWD, (char*)userPass.str()); } if(httpInfo) { // Set the correct HTTP method switch(httpInfo->fHTTPMethod) { case XMLNetHTTPInfo::GET: break; case XMLNetHTTPInfo::PUT: curl_easy_setopt(fEasy, CURLOPT_UPLOAD, (long)1); break; case XMLNetHTTPInfo::POST: curl_easy_setopt(fEasy, CURLOPT_POST, (long)1); break; } // Add custom headers if(httpInfo->fHeaders) { struct curl_slist *headersList = 0; const char *headersBuf = httpInfo->fHeaders; const char *headersBufEnd = httpInfo->fHeaders + httpInfo->fHeadersLen; const char *headerStart = headersBuf; while(headersBuf < headersBufEnd) { if(*headersBuf == '\r' && (headersBuf + 1) < headersBufEnd && *(headersBuf + 1) == '\n') { XMLSize_t length = headersBuf - headerStart; ArrayJanitor header((char*)fMemoryManager->allocate((length + 1) * sizeof(char)), fMemoryManager); memcpy(header.get(), headerStart, length); header.get()[length] = 0; headersList = curl_slist_append(headersList, header.get()); headersBuf += 2; headerStart = headersBuf; continue; } ++headersBuf; } curl_easy_setopt(fEasy, CURLOPT_HTTPHEADER, headersList); curl_slist_free_all(headersList); } // Set up the payload if(httpInfo->fPayload) { fPayload = httpInfo->fPayload; fPayloadLen = httpInfo->fPayloadLen; curl_easy_setopt(fEasy, CURLOPT_READDATA, this); curl_easy_setopt(fEasy, CURLOPT_READFUNCTION, staticReadCallback); curl_easy_setopt(fEasy, CURLOPT_INFILESIZE_LARGE, (curl_off_t)fPayloadLen); } } // Add easy handle to the multi stack curl_multi_add_handle(fMulti, fEasy); // Start reading, to get the content type while(fBufferHeadPtr == fBuffer) { int runningHandles = 0; readMore(&runningHandles); if(runningHandles == 0) break; } // Find the content type char *contentType8 = 0; curl_easy_getinfo(fEasy, CURLINFO_CONTENT_TYPE, &contentType8); if(contentType8) fContentType = TranscodeFromStr((XMLByte*)contentType8, XMLString::stringLen(contentType8), "ISO8859-1", fMemoryManager).adopt(); } CurlURLInputStream::~CurlURLInputStream() { // Remove the easy handle from the multi stack curl_multi_remove_handle(fMulti, fEasy); // Cleanup the easy handle curl_easy_cleanup(fEasy); // Cleanup the multi handle curl_multi_cleanup(fMulti); if(fContentType) fMemoryManager->deallocate(fContentType); } size_t CurlURLInputStream::staticWriteCallback(char *buffer, size_t size, size_t nitems, void *outstream) { return ((CurlURLInputStream*)outstream)->writeCallback(buffer, size, nitems); } size_t CurlURLInputStream::staticReadCallback(char *buffer, size_t size, size_t nitems, void *stream) { return ((CurlURLInputStream*)stream)->readCallback(buffer, size, nitems); } size_t CurlURLInputStream::writeCallback(char *buffer, size_t size, size_t nitems) { XMLSize_t cnt = size * nitems; XMLSize_t totalConsumed = 0; // Consume as many bytes as possible immediately into the buffer XMLSize_t consume = (cnt > fBytesToRead) ? fBytesToRead : cnt; memcpy(fWritePtr, buffer, consume); fWritePtr += consume; fBytesRead += consume; fTotalBytesRead += consume; fBytesToRead -= consume; //printf("write callback consuming %d bytes\n", consume); // If bytes remain, rebuffer as many as possible into our holding buffer buffer += consume; totalConsumed += consume; cnt -= consume; if (cnt > 0) { XMLSize_t bufAvail = sizeof(fBuffer) - (fBufferHeadPtr - fBuffer); consume = (cnt > bufAvail) ? bufAvail : cnt; memcpy(fBufferHeadPtr, buffer, consume); fBufferHeadPtr += consume; buffer += consume; totalConsumed += consume; //printf("write callback rebuffering %d bytes\n", consume); } // Return the total amount we've consumed. If we don't consume all the bytes // then an error will be generated. Since our buffer size is equal to the // maximum size that curl will write, this should never happen unless there // is a logic error somewhere here. return totalConsumed; } size_t CurlURLInputStream::readCallback(char *buffer, size_t size, size_t nitems) { XMLSize_t len = size * nitems; if(len > fPayloadLen) len = fPayloadLen; memcpy(buffer, fPayload, len); fPayload += len; fPayloadLen -= len; return len; } bool CurlURLInputStream::readMore(int *runningHandles) { // Ask the curl to do some work CURLMcode curlResult = curl_multi_perform(fMulti, runningHandles); // Process messages from curl int msgsInQueue = 0; for (CURLMsg* msg = NULL; (msg = curl_multi_info_read(fMulti, &msgsInQueue)) != NULL; ) { //printf("msg %d, %d from curl\n", msg->msg, msg->data.result); if (msg->msg != CURLMSG_DONE) return true; switch (msg->data.result) { case CURLE_OK: // We completed successfully. runningHandles should have dropped to zero, so we'll bail out below... break; case CURLE_UNSUPPORTED_PROTOCOL: ThrowXMLwithMemMgr(MalformedURLException, XMLExcepts::URL_UnsupportedProto, fMemoryManager); break; case CURLE_COULDNT_RESOLVE_HOST: case CURLE_COULDNT_RESOLVE_PROXY: { if (fURLSource.getHost()) ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::NetAcc_TargetResolution, fURLSource.getHost(), fMemoryManager); else ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::File_CouldNotOpenFile, fURLSource.getURLText(), fMemoryManager); break; } case CURLE_COULDNT_CONNECT: ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::NetAcc_ConnSocket, fURLSource.getURLText(), fMemoryManager); break; case CURLE_RECV_ERROR: ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::NetAcc_ReadSocket, fURLSource.getURLText(), fMemoryManager); break; default: ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::NetAcc_InternalError, fURLSource.getURLText(), fMemoryManager); break; } } // If nothing is running any longer, bail out if(*runningHandles == 0) return false; // If there is no further data to read, and we haven't // read any yet on this invocation, call select to wait for data if (curlResult != CURLM_CALL_MULTI_PERFORM && fBytesRead == 0) { fd_set readSet; fd_set writeSet; fd_set exceptSet; int fdcnt=0; FD_ZERO(&readSet); FD_ZERO(&writeSet); FD_ZERO(&exceptSet); // Ask curl for the file descriptors to wait on curl_multi_fdset(fMulti, &readSet, &writeSet, &exceptSet, &fdcnt); // Wait on the file descriptors timeval tv; tv.tv_sec = 2; tv.tv_usec = 0; select(fdcnt+1, &readSet, &writeSet, &exceptSet, &tv); } return curlResult == CURLM_CALL_MULTI_PERFORM; } XMLSize_t CurlURLInputStream::readBytes(XMLByte* const toFill , const XMLSize_t maxToRead) { fBytesRead = 0; fBytesToRead = maxToRead; fWritePtr = toFill; for (bool tryAgain = true; fBytesToRead > 0 && (tryAgain || fBytesRead == 0); ) { // First, any buffered data we have available XMLSize_t bufCnt = fBufferHeadPtr - fBufferTailPtr; bufCnt = (bufCnt > fBytesToRead) ? fBytesToRead : bufCnt; if (bufCnt > 0) { memcpy(fWritePtr, fBufferTailPtr, bufCnt); fWritePtr += bufCnt; fBytesRead += bufCnt; fTotalBytesRead += bufCnt; fBytesToRead -= bufCnt; fBufferTailPtr += bufCnt; if (fBufferTailPtr == fBufferHeadPtr) fBufferHeadPtr = fBufferTailPtr = fBuffer; //printf("consuming %d buffered bytes\n", bufCnt); tryAgain = true; continue; } // Ask the curl to do some work int runningHandles = 0; tryAgain = readMore(&runningHandles); // If nothing is running any longer, bail out if (runningHandles == 0) break; } return fBytesRead; } const XMLCh *CurlURLInputStream::getContentType() const { return fContentType; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/NetAccessors/Curl/CurlURLInputStream.hpp0000644000175000017500000001053411276721713025153 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: CurlURLInputStream.hpp 835245 2009-11-12 05:57:31Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_CURLURLINPUTSTREAM_HPP) #define XERCESC_INCLUDE_GUARD_CURLURLINPUTSTREAM_HPP #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // // This class implements the BinInputStream interface specified by the XML // parser. // class XMLUTIL_EXPORT CurlURLInputStream : public BinInputStream { public : CurlURLInputStream(const XMLURL& urlSource, const XMLNetHTTPInfo* httpInfo=0); ~CurlURLInputStream(); virtual XMLFilePos curPos() const; virtual XMLSize_t readBytes ( XMLByte* const toFill , const XMLSize_t maxToRead ); virtual const XMLCh *getContentType() const; private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- CurlURLInputStream(const CurlURLInputStream&); CurlURLInputStream& operator=(const CurlURLInputStream&); static size_t staticWriteCallback(char *buffer, size_t size, size_t nitems, void *outstream); size_t writeCallback( char *buffer, size_t size, size_t nitems); static size_t staticReadCallback(char *buffer, size_t size, size_t nitems, void *stream); size_t readCallback( char *buffer, size_t size, size_t nitems); bool readMore(int *runningHandles); // ----------------------------------------------------------------------- // Private data members // // fSocket // The socket representing the connection to the remote file. // fBytesProcessed // Its a rolling count of the number of bytes processed off this // input stream. // fBuffer // Holds the http header, plus the first part of the actual // data. Filled at the time the stream is opened, data goes // out to user in response to readBytes(). // fBufferPos, fBufferEnd // Pointers into fBuffer, showing start and end+1 of content // that readBytes must return. // ----------------------------------------------------------------------- CURLM* fMulti; CURL* fEasy; MemoryManager* fMemoryManager; XMLURL fURLSource; XMLSize_t fTotalBytesRead; XMLByte* fWritePtr; XMLSize_t fBytesRead; XMLSize_t fBytesToRead; bool fDataAvailable; // Overflow buffer for when curl writes more data to us // than we've asked for. XMLByte fBuffer[CURL_MAX_WRITE_SIZE]; XMLByte* fBufferHeadPtr; XMLByte* fBufferTailPtr; // Upload data const char* fPayload; XMLSize_t fPayloadLen; XMLCh * fContentType; }; // CurlURLInputStream inline XMLFilePos CurlURLInputStream::curPos() const { return fTotalBytesRead; } XERCES_CPP_NAMESPACE_END #endif // CURLURLINPUTSTREAM_HPP xerces-c-3.1.1/src/xercesc/util/NetAccessors/Socket/0000755000175000017500000000000011363617253021276 5ustar borisborisxerces-c-3.1.1/src/xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.cpp0000644000175000017500000002143411363604616026207 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: UnixHTTPURLInputStream.cpp 936316 2010-04-21 14:19:58Z borisk $ */ #if HAVE_CONFIG_H # include #endif #include #if HAVE_UNISTD_H # include #endif #if HAVE_SYS_TYPES_H # include #endif #if HAVE_SYS_SOCKET_H # include #endif #if HAVE_NETINET_IN_H # include #endif #if HAVE_ARPA_INET_H # include #endif #if HAVE_NETDB_H # include #endif #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN class SocketJanitor { public: // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- SocketJanitor(int* toDelete) : fData(toDelete) {} ~SocketJanitor() { reset(); } int* get() const { return fData; } int* release() { int* p = fData; fData = 0; return p; } void reset(int* p = 0) { if(fData) { shutdown(*fData, 2); close(*fData); } fData = p; } bool isDataNull() { return (fData == 0); } private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- SocketJanitor(); SocketJanitor(const SocketJanitor&); SocketJanitor& operator=(const SocketJanitor&); // ----------------------------------------------------------------------- // Private data members // // fData // This is the pointer to the socket that must be closed when // this object is destroyed. // ----------------------------------------------------------------------- int* fData; }; UnixHTTPURLInputStream::UnixHTTPURLInputStream(const XMLURL& urlSource, const XMLNetHTTPInfo* httpInfo/*=0*/) : BinHTTPInputStreamCommon(urlSource.getMemoryManager()), fSocket(0) { // // Convert the hostName to the platform's code page for gethostbyname and // inet_addr functions. // MemoryManager *memoryManager = urlSource.getMemoryManager(); const XMLCh* hostName = urlSource.getHost(); if (hostName == 0) ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::File_CouldNotOpenFile, urlSource.getURLText(), memoryManager); char* hostNameAsCharStar = XMLString::transcode(hostName, memoryManager); ArrayJanitor janHostNameAsCharStar(hostNameAsCharStar, memoryManager); XMLURL url(urlSource); int redirectCount = 0; SocketJanitor janSock(0); do { // // Set up a socket. // #if HAVE_GETADDRINFO struct addrinfo hints, *res, *ai; CharBuffer portBuffer(10, memoryManager); portBuffer.appendDecimalNumber(url.getPortNum()); memset(&hints, 0, sizeof(struct addrinfo)); hints.ai_family = PF_UNSPEC; hints.ai_socktype = SOCK_STREAM; int n = getaddrinfo(hostNameAsCharStar,portBuffer.getRawBuffer(),&hints, &res); if(n != 0) { hints.ai_flags = AI_NUMERICHOST; n = getaddrinfo(hostNameAsCharStar,portBuffer.getRawBuffer(),&hints, &res); if(n != 0) ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::NetAcc_TargetResolution, hostName, memoryManager); } janSock.reset(); for (ai = res; ai != NULL; ai = ai->ai_next) { // Open a socket with the correct address family for this address. fSocket = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); if (fSocket < 0) continue; janSock.reset(&fSocket); if (connect(fSocket, ai->ai_addr, ai->ai_addrlen) < 0) { freeaddrinfo(res); ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::NetAcc_ConnSocket, url.getURLText(), memoryManager); } break; } freeaddrinfo(res); if (fSocket < 0) { ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::NetAcc_CreateSocket, url.getURLText(), memoryManager); } #else struct hostent *hostEntPtr = 0; struct sockaddr_in sa; // Use the hostName in the local code page .... if((hostEntPtr = gethostbyname(hostNameAsCharStar)) == NULL) { unsigned long numAddress = inet_addr(hostNameAsCharStar); if ((hostEntPtr = gethostbyaddr((char *) &numAddress, sizeof(unsigned long), AF_INET)) == NULL) { ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::NetAcc_TargetResolution, hostName, memoryManager); } } memset(&sa, '\0', sizeof(sockaddr_in)); // iSeries fix ?? memcpy((void *) &sa.sin_addr, (const void *) hostEntPtr->h_addr, hostEntPtr->h_length); sa.sin_family = hostEntPtr->h_addrtype; sa.sin_port = htons((unsigned short)url.getPortNum()); janSock.reset(); fSocket = socket(hostEntPtr->h_addrtype, SOCK_STREAM, 0); if(fSocket < 0) { ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::NetAcc_CreateSocket, url.getURLText(), memoryManager); } janSock.reset(&fSocket); if(connect(fSocket, (struct sockaddr *) &sa, sizeof(sa)) < 0) { ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::NetAcc_ConnSocket, url.getURLText(), memoryManager); } #endif int status = sendRequest(url, httpInfo); if(status == 200) { // HTTP 200 OK response means we're done. break; } // a 3xx response means there was an HTTP redirect else if(status >= 300 && status <= 307) { redirectCount++; XMLCh *newURLString = findHeader("Location"); ArrayJanitor janNewURLString(newURLString, memoryManager); if(newURLString == 0 || *newURLString == 0) { ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::File_CouldNotOpenFile, url.getURLText(), memoryManager); } XMLURL newURL(memoryManager); newURL.setURL(url, newURLString); if(newURL.getProtocol() != XMLURL::HTTP) { ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::File_CouldNotOpenFile, newURL.getURLText(), memoryManager); } url = newURL; hostName = newURL.getHost(); if (hostName == 0) ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::File_CouldNotOpenFile, newURL.getURLText(), memoryManager); janHostNameAsCharStar.release(); hostNameAsCharStar = XMLString::transcode(hostName, memoryManager); janHostNameAsCharStar.reset(hostNameAsCharStar, memoryManager); } else { // Most likely a 404 Not Found error. ThrowXMLwithMemMgr1(NetAccessorException, XMLExcepts::File_CouldNotOpenFile, url.getURLText(), memoryManager); } } while(redirectCount < 6); janSock.release(); } UnixHTTPURLInputStream::~UnixHTTPURLInputStream() { shutdown(fSocket, 2); close(fSocket); } bool UnixHTTPURLInputStream::send(const char *buf, XMLSize_t len) { XMLSize_t done = 0; int ret; while(done < len) { ret = ::send(fSocket, buf + done, len - done, 0); if(ret == -1) return false; done += ret; } return true; } int UnixHTTPURLInputStream::receive(char *buf, XMLSize_t len) { return ::recv(fSocket, buf, len, 0); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/NetAccessors/Socket/SocketNetAccessor.cpp0000644000175000017500000000461410523643534025367 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SocketNetAccessor.cpp 471747 2006-11-06 14:31:56Z amassari $ */ #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN const XMLCh SocketNetAccessor::fgMyName[] = { chLatin_S, chLatin_o, chLatin_c, chLatin_k, chLatin_e, chLatin_t, chLatin_N, chLatin_e, chLatin_t, chLatin_A, chLatin_c, chLatin_c, chLatin_e, chLatin_s, chLatin_s, chLatin_o, chLatin_r, chNull }; SocketNetAccessor::SocketNetAccessor() { // Do any one time initialization here. // Nothing to do, in this case. } SocketNetAccessor::~SocketNetAccessor() { // Again, nothing to do here. } BinInputStream* SocketNetAccessor::makeNew(const XMLURL& urlSource, const XMLNetHTTPInfo* httpInfo/*=0*/) { XMLURL::Protocols protocol = urlSource.getProtocol(); switch(protocol) { case XMLURL::HTTP: { UnixHTTPURLInputStream* retStrm = new (urlSource.getMemoryManager()) UnixHTTPURLInputStream(urlSource, httpInfo); return retStrm; } // // These are the only protocols we support now. So throw and // unsupported protocol exception for the others. // default : ThrowXMLwithMemMgr(MalformedURLException, XMLExcepts::URL_UnsupportedProto, urlSource.getMemoryManager()); break; } return 0; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/NetAccessors/Socket/UnixHTTPURLInputStream.hpp0000644000175000017500000000427511027453421026211 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: UnixHTTPURLInputStream.hpp 670359 2008-06-22 13:43:45Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_UNIXHTTPURLINPUTSTREAM_HPP) #define XERCESC_INCLUDE_GUARD_UNIXHTTPURLINPUTSTREAM_HPP #include XERCES_CPP_NAMESPACE_BEGIN // // This class implements the BinInputStream interface specified by the XML // parser. // class XMLUTIL_EXPORT UnixHTTPURLInputStream : public BinHTTPInputStreamCommon { public : UnixHTTPURLInputStream(const XMLURL& urlSource, const XMLNetHTTPInfo* httpInfo=0); ~UnixHTTPURLInputStream(); virtual bool send(const char *buf, XMLSize_t len); virtual int receive(char *buf, XMLSize_t len); private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- UnixHTTPURLInputStream(const UnixHTTPURLInputStream&); UnixHTTPURLInputStream& operator=(const UnixHTTPURLInputStream&); // ----------------------------------------------------------------------- // Private data members // // fSocket // The socket representing the connection to the remote file. // ----------------------------------------------------------------------- int fSocket; }; XERCES_CPP_NAMESPACE_END #endif // UNIXHTTPURLINPUTSTREAM_HPP xerces-c-3.1.1/src/xercesc/util/NetAccessors/Socket/SocketNetAccessor.hpp0000644000175000017500000000357510606722647025406 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SocketNetAccessor.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_SOCKETNETACCESSOR_HPP) #define XERCESC_INCLUDE_GUARD_SOCKETNETACCESSOR_HPP #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // // This class is the wrapper for the socket based code which // provides the ability to fetch a resource specified using // a HTTP or FTP URL. // class XMLUTIL_EXPORT SocketNetAccessor : public XMLNetAccessor { public : SocketNetAccessor(); ~SocketNetAccessor(); virtual BinInputStream* makeNew(const XMLURL& urlSource, const XMLNetHTTPInfo* httpInfo=0); virtual const XMLCh* getId() const; private : static const XMLCh fgMyName[]; SocketNetAccessor(const SocketNetAccessor&); SocketNetAccessor& operator=(const SocketNetAccessor&); }; // SocketNetAccessor inline const XMLCh* SocketNetAccessor::getId() const { return fgMyName; } XERCES_CPP_NAMESPACE_END #endif // SOCKETNETACCESSOR_HPP xerces-c-3.1.1/src/xercesc/util/NetAccessors/MacOSURLAccessCF/0000755000175000017500000000000011363617253022726 5ustar borisborisxerces-c-3.1.1/src/xercesc/util/NetAccessors/MacOSURLAccessCF/MacOSURLAccessCF.hpp0000644000175000017500000000365410606722647026332 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: MacOSURLAccessCF.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_MACOSURLACCESSCF_HPP) #define XERCESC_INCLUDE_GUARD_MACOSURLACCESSCF_HPP #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // // This class is the wrapper for the Mac OS CFURLAccess code // (in CoreServices.framework) which provides access to network // resources. It's being used here to add the ability to // use HTTP URL's as the system id's in the XML decl clauses. // class XMLUTIL_EXPORT MacOSURLAccessCF : public XMLNetAccessor { public : MacOSURLAccessCF(); ~MacOSURLAccessCF(); BinInputStream* makeNew(const XMLURL& urlSource, const XMLNetHTTPInfo* httpInfo=0); const XMLCh* getId() const; private : static const XMLCh sMyID[]; MacOSURLAccessCF(const MacOSURLAccessCF&); MacOSURLAccessCF& operator=(const MacOSURLAccessCF&); }; inline const XMLCh* MacOSURLAccessCF::getId() const { return sMyID; } XERCES_CPP_NAMESPACE_END #endif // MACOSURLACCESSCF_HPP xerces-c-3.1.1/src/xercesc/util/NetAccessors/MacOSURLAccessCF/MacOSURLAccessCF.cpp0000644000175000017500000000363110523643534026313 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: MacOSURLAccessCF.cpp 471747 2006-11-06 14:31:56Z amassari $ */ #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN const XMLCh MacOSURLAccessCF::sMyID[] = { chLatin_M, chLatin_a, chLatin_c, chLatin_O, chLatin_S, chLatin_U, chLatin_R, chLatin_L, chLatin_A, chLatin_c, chLatin_c, chLatin_e, chLatin_s, chLatin_s, chLatin_C, chLatin_F, chNull }; MacOSURLAccessCF::MacOSURLAccessCF() { } MacOSURLAccessCF::~MacOSURLAccessCF() { } BinInputStream* MacOSURLAccessCF::makeNew(const XMLURL& urlSource, const XMLNetHTTPInfo* httpInfo/*=0*/) { if(httpInfo!=0 && httpInfo->fHTTPMethod!=XMLNetHTTPInfo::GET) ThrowXML(NetAccessorException, XMLExcepts::NetAcc_UnsupportedMethod); BinInputStream* result = new (urlSource.getMemoryManager()) URLAccessCFBinInputStream(urlSource); return result; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/NetAccessors/MacOSURLAccessCF/URLAccessCFBinInputStream.hpp0000644000175000017500000000404211027453421030251 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: URLAccessCFBinInputStream.hpp 670359 2008-06-22 13:43:45Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_URLACCESSCFBININPUTSTREAM_HPP) #define XERCESC_INCLUDE_GUARD_URLACCESSCFBININPUTSTREAM_HPP #include #include #include #if defined(__APPLE__) // Framework includes from ProjectBuilder #include #else // Classic includes otherwise #include #include #endif XERCES_CPP_NAMESPACE_BEGIN // // This class implements the BinInputStream interface specified by the XML // parser. // class XMLUTIL_EXPORT URLAccessCFBinInputStream : public BinInputStream { public : URLAccessCFBinInputStream(const XMLURL& urlSource); ~URLAccessCFBinInputStream(); virtual XMLFilePos curPos() const; virtual XMLSize_t readBytes ( XMLByte* const toFill , const XMLSize_t maxToRead ); virtual const XMLCh* getContentType() const; private : CFDataRef mDataRef; CFIndex mBytesProcessed; }; inline XMLFilePos URLAccessCFBinInputStream::curPos() const { return mBytesProcessed; } XERCES_CPP_NAMESPACE_END #endif // URLACCESSCFBININPUTSTREAM_HPP xerces-c-3.1.1/src/xercesc/util/NetAccessors/MacOSURLAccessCF/URLAccessCFBinInputStream.cpp0000644000175000017500000001241111363604616030252 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: URLAccessCFBinInputStream.cpp 936316 2010-04-21 14:19:58Z borisk $ */ #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN URLAccessCFBinInputStream::URLAccessCFBinInputStream(const XMLURL& urlSource) : mBytesProcessed(0), mDataRef(NULL) { // Figure out what we're dealing with const XMLCh* urlText = urlSource.getURLText(); unsigned int urlLength = XMLString::stringLen(urlText); // Create a CFString from the path CFStringRef stringRef = NULL; if (urlText) { stringRef = CFStringCreateWithCharacters( kCFAllocatorDefault, urlText, urlLength ); } // Create a URLRef from the CFString CFURLRef urlRef = NULL; if (stringRef) { urlRef = CFURLCreateWithString( kCFAllocatorDefault, stringRef, NULL // CFURLRef baseURL ); } // Fetch the data mDataRef = NULL; SInt32 errorCode = 0; Boolean success = false; if (stringRef) { success = CFURLCreateDataAndPropertiesFromResource( kCFAllocatorDefault, urlRef, &mDataRef, NULL, // CFDictionaryRef *properties, NULL, // CFArrayRef desiredProperties, &errorCode ); } // Cleanup temporary stuff if (stringRef) CFRelease(stringRef); if (urlRef) CFRelease(urlRef); // Check for an error in fetching the data if (!success || errorCode) { // Dispose any potential dataRef if (mDataRef) { CFRelease(mDataRef); mDataRef = NULL; } // Do a best attempt at mapping some errors switch (errorCode) { case kCFURLUnknownSchemeError: ThrowXML(MalformedURLException, XMLExcepts::URL_UnsupportedProto); break; case kCFURLRemoteHostUnavailableError: { if (urlSource.getHost()) ThrowXML1(NetAccessorException, XMLExcepts::NetAcc_TargetResolution, urlSource.getHost()); else ThrowXML1(NetAccessorException, XMLExcepts::File_CouldNotOpenFile, urlText); break; } case kCFURLUnknownError: ThrowXML1(NetAccessorException, XMLExcepts::NetAcc_ReadSocket, urlText); break; case kCFURLResourceNotFoundError: case kCFURLResourceAccessViolationError: case kCFURLTimeoutError: ThrowXML1(NetAccessorException, XMLExcepts::File_CouldNotOpenFile, urlText); break; case kCFURLImproperArgumentsError: case kCFURLUnknownPropertyKeyError: case kCFURLPropertyKeyUnavailableError: default: ThrowXML1(NetAccessorException, XMLExcepts::NetAcc_InternalError, urlText); break; } } } URLAccessCFBinInputStream::~URLAccessCFBinInputStream() { // Release any dataRef if (mDataRef) CFRelease(mDataRef); } // // We've already read the data into a dataRef. // Just spoon it out to the caller as they ask for it. // XMLSize_t URLAccessCFBinInputStream::readBytes(XMLByte* const toFill , const XMLSize_t maxToRead) { // If we don't have a dataRef, we can't return any data if (!mDataRef) return 0; // Get the length of the data we've fetched CFIndex dataLength = CFDataGetLength(mDataRef); // Calculate how much to return based on how much // we've already returned, and how much the user wants CFIndex n = dataLength - mBytesProcessed; // Amount remaining CFIndex desired = maxToRead & 0x7fffffff; // CFIndex is signed if (n > desired) // Amount desired n = desired; // Read the appropriate bytes into the user buffer CFRange range = CFRangeMake(mBytesProcessed, n); CFDataGetBytes(mDataRef, range, reinterpret_cast(toFill)); // Update bytes processed mBytesProcessed += n; // Return the number of bytes delivered return n; } const XMLCh* URLAccessCFBinInputStream::getContentType() const { // TODO // return 0; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/XMLEnumerator.hpp0000644000175000017500000000371510606722647020676 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLEnumerator.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_XMLENUMERATOR_HPP) #define XERCESC_INCLUDE_GUARD_XMLENUMERATOR_HPP #include XERCES_CPP_NAMESPACE_BEGIN template class XMLEnumerator { public : // ----------------------------------------------------------------------- // Destructor // ----------------------------------------------------------------------- virtual ~XMLEnumerator() {}; // ----------------------------------------------------------------------- // XMLEnumerator interface // ----------------------------------------------------------------------- virtual bool hasMoreElements() const = 0; virtual TElem& nextElement() = 0; virtual void Reset() = 0; XMLEnumerator() {} XMLEnumerator(const XMLEnumerator&) {} private: // ----------------------------------------------------------------------- // Unimplemented operators // ----------------------------------------------------------------------- XMLEnumerator& operator=(const XMLEnumerator&); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/SynchronizedStringPool.hpp0000644000175000017500000000655110606722647022675 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SynchronizedStringPool.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_SYNCHRONIZEDSTRINGPOOL_HPP) #define XERCESC_INCLUDE_GUARD_SYNCHRONIZEDSTRINGPOOL_HPP #include #include #include XERCES_CPP_NAMESPACE_BEGIN // // This class provides a synchronized string pool implementation. // This will necessarily be slower than the regular XMLStringPool, so it // should only be used when updates need to be made in a thread-safe // way. Updates will be made on datastructures local to this object; // all queries that don't involve mutation will first be directed at // the XMLStringPool implementation with which this object is // constructed. class XMLUTIL_EXPORT XMLSynchronizedStringPool : public XMLStringPool { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- XMLSynchronizedStringPool ( const XMLStringPool * constPool , const unsigned int modulus = 109 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual ~XMLSynchronizedStringPool(); // ----------------------------------------------------------------------- // Pool management methods // ----------------------------------------------------------------------- virtual unsigned int addOrFind(const XMLCh* const newString); virtual bool exists(const XMLCh* const newString) const; virtual bool exists(const unsigned int id) const; virtual void flushAll(); virtual unsigned int getId(const XMLCh* const toFind) const; virtual const XMLCh* getValueForId(const unsigned int id) const; virtual unsigned int getStringCount() const; private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XMLSynchronizedStringPool(const XMLSynchronizedStringPool&); XMLSynchronizedStringPool& operator=(const XMLSynchronizedStringPool&); // ----------------------------------------------------------------------- // private data members // fConstPool // the pool whose immutability we're protecting // fMutex // mutex to permit synchronous updates of our StringPool const XMLStringPool* fConstPool; XMLMutex fMutex; }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/RefVectorOf.c0000644000175000017500000000362611037122704017777 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: RefVectorOf.c 676911 2008-07-15 13:27:32Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #if defined(XERCES_TMPLSINC) #include #endif XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // RefVectorOf: Constructors and Destructor // --------------------------------------------------------------------------- template RefVectorOf::RefVectorOf(const XMLSize_t maxElems, const bool adoptElems, MemoryManager* const manager) : BaseRefVectorOf(maxElems, adoptElems, manager) { } template RefVectorOf::~RefVectorOf() { if (this->fAdoptedElems) { for (XMLSize_t index = 0; index < this->fCurCount; index++) delete this->fElemList[index]; } this->fMemoryManager->deallocate(this->fElemList);//delete [] this->fElemList; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/ValueHashTableOf.hpp0000644000175000017500000002110411042054515021264 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: ValueHashTableOf.hpp 679340 2008-07-24 10:28:29Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_VALUEHASHTABLEOF_HPP) #define XERCESC_INCLUDE_GUARD_VALUEHASHTABLEOF_HPP #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // Forward declare the enumerator so it can be our friend. // template class ValueHashTableOfEnumerator; // // This should really be a nested class, but some of the compilers we // have to support cannot deal with that! // template struct ValueHashTableBucketElem { ValueHashTableBucketElem(void* key, const TVal& value, ValueHashTableBucketElem* next) : fData(value), fNext(next), fKey(key) { } ValueHashTableBucketElem(){}; ~ValueHashTableBucketElem(){}; TVal fData; ValueHashTableBucketElem* fNext; void* fKey; private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- ValueHashTableBucketElem(const ValueHashTableBucketElem&); ValueHashTableBucketElem& operator=(const ValueHashTableBucketElem&); }; template class ValueHashTableOf : public XMemory { public: // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- ValueHashTableOf( const XMLSize_t modulus, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); ValueHashTableOf( const XMLSize_t modulus, const THasher& hasher, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); ~ValueHashTableOf(); // ----------------------------------------------------------------------- // Element management // ----------------------------------------------------------------------- bool isEmpty() const; bool containsKey(const void* const key) const; void removeKey(const void* const key); void removeAll(); // ----------------------------------------------------------------------- // Getters // ----------------------------------------------------------------------- TVal& get(const void* const key, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); const TVal& get(const void* const key) const; // ----------------------------------------------------------------------- // Putters // ----------------------------------------------------------------------- void put(void* key, const TVal& valueToAdopt); private : // ----------------------------------------------------------------------- // Declare our friends // ----------------------------------------------------------------------- friend class ValueHashTableOfEnumerator; private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- ValueHashTableOf(const ValueHashTableOf&); ValueHashTableOf& operator=(const ValueHashTableOf&); // ----------------------------------------------------------------------- // Private methods // ----------------------------------------------------------------------- ValueHashTableBucketElem* findBucketElem(const void* const key, XMLSize_t& hashVal); const ValueHashTableBucketElem* findBucketElem(const void* const key, XMLSize_t& hashVal) const; void removeBucketElem(const void* const key, XMLSize_t& hashVal); void initialize(const XMLSize_t modulus); void rehash(); // ----------------------------------------------------------------------- // Data members // // fBucketList // This is the array that contains the heads of all of the list // buckets, one for each possible hash value. // // fHashModulus // The modulus used for this hash table, to hash the keys. This is // also the number of elements in the bucket list. // // fHash // The hasher for the key data type. // ----------------------------------------------------------------------- MemoryManager* fMemoryManager; ValueHashTableBucketElem** fBucketList; XMLSize_t fHashModulus; XMLSize_t fInitialModulus; XMLSize_t fCount; THasher fHasher; }; // // An enumerator for a value array. It derives from the basic enumerator // class, so that value vectors can be generically enumerated. // template class ValueHashTableOfEnumerator : public XMLEnumerator, public XMemory { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- ValueHashTableOfEnumerator(ValueHashTableOf* const toEnum , const bool adopt = false , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); virtual ~ValueHashTableOfEnumerator(); // ----------------------------------------------------------------------- // Enum interface // ----------------------------------------------------------------------- bool hasMoreElements() const; TVal& nextElement(); void Reset(); // ----------------------------------------------------------------------- // New interface specific for key used in ValueHashable // ----------------------------------------------------------------------- void* nextElementKey(); private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- ValueHashTableOfEnumerator(const ValueHashTableOfEnumerator&); ValueHashTableOfEnumerator& operator=(const ValueHashTableOfEnumerator&); // ----------------------------------------------------------------------- // Private methods // ----------------------------------------------------------------------- void findNext(); // ----------------------------------------------------------------------- // Data Members // // fAdopted // Indicates whether we have adopted the passed vector. If so then // we delete the vector when we are destroyed. // // fCurElem // This is the current bucket bucket element that we are on. // // fCurHash // The is the current hash buck that we are working on. Once we hit // the end of the bucket that fCurElem is in, then we have to start // working this one up to the next non-empty bucket. // // fToEnum // The value array being enumerated. // ----------------------------------------------------------------------- bool fAdopted; ValueHashTableBucketElem* fCurElem; XMLSize_t fCurHash; ValueHashTableOf* fToEnum; MemoryManager* const fMemoryManager; }; XERCES_CPP_NAMESPACE_END #if !defined(XERCES_TMPLSINC) #include #endif #endif xerces-c-3.1.1/src/xercesc/util/NameIdPool.c0000644000175000017500000002146411302525023017576 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: NameIdPool.c 883368 2009-11-23 15:28:19Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #if defined(XERCES_TMPLSINC) #include #endif #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // NameIdPool: Constructors and Destructor // --------------------------------------------------------------------------- template NameIdPool::NameIdPool( const XMLSize_t hashModulus , const XMLSize_t initSize , MemoryManager* const manager) : fMemoryManager(manager) , fIdPtrs(0) , fIdPtrsCount(initSize) , fIdCounter(0) , fBucketList(hashModulus, manager) { if (!hashModulus) ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::Pool_ZeroModulus, fMemoryManager); // // Allocate the initial id pointers array. We don't have to zero them // out since the fIdCounter value tells us which ones are valid. The // zeroth element is never used (and represents an invalid pool id.) // if (!fIdPtrsCount) fIdPtrsCount = 256; fIdPtrs = (TElem**) fMemoryManager->allocate ( fIdPtrsCount * sizeof(TElem*) ); fIdPtrs[0] = 0; } template NameIdPool::~NameIdPool() { // // Delete the id pointers list. The stuff it points to will be cleaned // up when we clean the bucket lists. // fMemoryManager->deallocate(fIdPtrs); //delete [] fIdPtrs; } // --------------------------------------------------------------------------- // NameIdPool: Element management // --------------------------------------------------------------------------- template inline bool NameIdPool:: containsKey(const XMLCh* const key) const { if (fIdCounter == 0) return false; return fBucketList.containsKey(key); } template void NameIdPool::removeAll() { if (fIdCounter == 0) return; fBucketList.removeAll(); // Reset the id counter fIdCounter = 0; } // --------------------------------------------------------------------------- // NameIdPool: Getters // --------------------------------------------------------------------------- template inline TElem* NameIdPool:: getByKey(const XMLCh* const key) { if (fIdCounter == 0) return 0; return fBucketList.get(key); } template inline const TElem* NameIdPool:: getByKey(const XMLCh* const key) const { if (fIdCounter == 0) return 0; return fBucketList.get(key); } template inline TElem* NameIdPool:: getById(const XMLSize_t elemId) { // If its either zero or beyond our current id, its an error if (!elemId || (elemId > fIdCounter)) ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::Pool_InvalidId, fMemoryManager); return fIdPtrs[elemId]; } template inline const TElem* NameIdPool:: getById(const XMLSize_t elemId) const { // If its either zero or beyond our current id, its an error if (!elemId || (elemId > fIdCounter)) ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::Pool_InvalidId, fMemoryManager); return fIdPtrs[elemId]; } template inline MemoryManager* NameIdPool::getMemoryManager() const { return fMemoryManager; } // --------------------------------------------------------------------------- // NameIdPool: Setters // --------------------------------------------------------------------------- template XMLSize_t NameIdPool::put(TElem* const elemToAdopt) { // First see if the key exists already. If so, its an error if(containsKey(elemToAdopt->getKey())) { ThrowXMLwithMemMgr1 ( IllegalArgumentException , XMLExcepts::Pool_ElemAlreadyExists , elemToAdopt->getKey() , fMemoryManager ); } fBucketList.put((void*)elemToAdopt->getKey(), elemToAdopt); // // Give this new one the next available id and add to the pointer list. // Expand the list if that is now required. // if (fIdCounter + 1 == fIdPtrsCount) { // Create a new count 1.5 times larger and allocate a new array XMLSize_t newCount = (XMLSize_t)(fIdPtrsCount * 1.5); TElem** newArray = (TElem**) fMemoryManager->allocate ( newCount * sizeof(TElem*) ); //new TElem*[newCount]; // Copy over the old contents to the new array memcpy(newArray, fIdPtrs, fIdPtrsCount * sizeof(TElem*)); // Ok, toss the old array and store the new data fMemoryManager->deallocate(fIdPtrs); //delete [] fIdPtrs; fIdPtrs = newArray; fIdPtrsCount = newCount; } const XMLSize_t retId = ++fIdCounter; fIdPtrs[retId] = elemToAdopt; // Set the id on the passed element elemToAdopt->setId(retId); // Return the id that we gave to this element return retId; } // --------------------------------------------------------------------------- // NameIdPoolEnumerator: Constructors and Destructor // --------------------------------------------------------------------------- template NameIdPoolEnumerator:: NameIdPoolEnumerator(NameIdPool* const toEnum , MemoryManager* const manager) : XMLEnumerator() , fCurIndex(0) , fToEnum(toEnum) , fMemoryManager(manager) { Reset(); } template NameIdPoolEnumerator:: NameIdPoolEnumerator(const NameIdPoolEnumerator& toCopy) : XMLEnumerator(toCopy) , XMemory(toCopy) , fCurIndex(toCopy.fCurIndex) , fToEnum(toCopy.fToEnum) , fMemoryManager(toCopy.fMemoryManager) { } template NameIdPoolEnumerator::~NameIdPoolEnumerator() { // We don't own the pool being enumerated, so no cleanup required } // --------------------------------------------------------------------------- // NameIdPoolEnumerator: Public operators // --------------------------------------------------------------------------- template NameIdPoolEnumerator& NameIdPoolEnumerator:: operator=(const NameIdPoolEnumerator& toAssign) { if (this == &toAssign) return *this; fMemoryManager = toAssign.fMemoryManager; fCurIndex = toAssign.fCurIndex; fToEnum = toAssign.fToEnum; return *this; } // --------------------------------------------------------------------------- // NameIdPoolEnumerator: Enum interface // --------------------------------------------------------------------------- template bool NameIdPoolEnumerator:: hasMoreElements() const { // If our index is zero or past the end, then we are done if (!fCurIndex || (fCurIndex > fToEnum->fIdCounter)) return false; return true; } template TElem& NameIdPoolEnumerator::nextElement() { // If our index is zero or past the end, then we are done if (!fCurIndex || (fCurIndex > fToEnum->fIdCounter)) ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::Enum_NoMoreElements, fMemoryManager); // Return the current element and bump the index return *fToEnum->fIdPtrs[fCurIndex++]; } template void NameIdPoolEnumerator::Reset() { // // Find the next available bucket element in the pool. We use the id // array since its very easy to enumerator through by just maintaining // an index. If the id counter is zero, then its empty and we leave the // current index to zero. // fCurIndex = fToEnum->fIdCounter ? 1:0; } template XMLSize_t NameIdPoolEnumerator::size() const { return fToEnum->fIdCounter; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/XMLURL.hpp0000644000175000017500000002116310620036512017175 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLURL.hpp 536133 2007-05-08 09:05:14Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_XMLURL_HPP) #define XERCESC_INCLUDE_GUARD_XMLURL_HPP #include XERCES_CPP_NAMESPACE_BEGIN class BinInputStream; // // This class supports file, http, and ftp style URLs. All others are // rejected // class XMLUTIL_EXPORT XMLURL : public XMemory { public: // ----------------------------------------------------------------------- // Class types // // And they must remain in this order because they are indexes into an // array internally! // ----------------------------------------------------------------------- enum Protocols { File , HTTP , FTP , HTTPS , Protocols_Count , Unknown }; // ----------------------------------------------------------------------- // Public static methods // ----------------------------------------------------------------------- static Protocols lookupByName(const XMLCh* const protoName); static bool parse(const XMLCh* const urlText, XMLURL& xmlURL); // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- XMLURL(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); XMLURL ( const XMLCh* const baseURL , const XMLCh* const relativeURL , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); XMLURL ( const XMLCh* const baseURL , const char* const relativeURL , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); XMLURL ( const XMLURL& baseURL , const XMLCh* const relativeURL ); XMLURL ( const XMLURL& baseURL , const char* const relativeURL ); XMLURL ( const XMLCh* const urlText , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); XMLURL ( const char* const urlText , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); XMLURL(const XMLURL& toCopy); virtual ~XMLURL(); // ----------------------------------------------------------------------- // Operators // ----------------------------------------------------------------------- XMLURL& operator=(const XMLURL& toAssign); bool operator==(const XMLURL& toCompare) const; bool operator!=(const XMLURL& toCompare) const; // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const XMLCh* getFragment() const; const XMLCh* getHost() const; const XMLCh* getPassword() const; const XMLCh* getPath() const; unsigned int getPortNum() const; Protocols getProtocol() const; const XMLCh* getProtocolName() const; const XMLCh* getQuery() const; const XMLCh* getURLText() const; const XMLCh* getUser() const; MemoryManager* getMemoryManager() const; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- void setURL(const XMLCh* const urlText); void setURL ( const XMLCh* const baseURL , const XMLCh* const relativeURL ); void setURL ( const XMLURL& baseURL , const XMLCh* const relativeURL ); // a version of setURL that doesn't throw malformed url exceptions bool setURL( const XMLCh* const baseURL , const XMLCh* const relativeURL , XMLURL& xmlURL); // ----------------------------------------------------------------------- // Miscellaneous methods // ----------------------------------------------------------------------- bool isRelative() const; bool hasInvalidChar() const; BinInputStream* makeNewStream() const; void makeRelativeTo(const XMLCh* const baseURLText); void makeRelativeTo(const XMLURL& baseURL); private: // ----------------------------------------------------------------------- // Private helper methods // ----------------------------------------------------------------------- void buildFullText(); void cleanUp(); bool conglomerateWithBase(const XMLURL& baseURL, bool useExceptions=true); void parse ( const XMLCh* const urlText ); // ----------------------------------------------------------------------- // Data members // // fFragment // The fragment part of the URL, if any. If none, its a null. // // fHost // The host part of the URL that was parsed out. This one will often // be null (or "localhost", which also means the current machine.) // // fPassword // The password found, if any. If none then its a null. // // fPath // The path part of the URL that was parsed out, if any. If none, // then its a null. // // fPortNum // The port that was indicated in the URL. If no port was provided // explicitly, then its left zero. // // fProtocol // Indicates the type of the URL's source. The text of the prefix // can be gotten from this. // // fQuery // The query part of the URL, if any. If none, then its a null. // // fUser // The username found, if any. If none, then its a null. // // fURLText // This is a copy of the URL text, after it has been taken apart, // made relative if needed, canonicalized, and then put back // together. Its only created upon demand. // // fHasInvalidChar // This indicates if the URL Text contains invalid characters as per // RFC 2396 standard. // ----------------------------------------------------------------------- MemoryManager* fMemoryManager; XMLCh* fFragment; XMLCh* fHost; XMLCh* fPassword; XMLCh* fPath; unsigned int fPortNum; Protocols fProtocol; XMLCh* fQuery; XMLCh* fUser; XMLCh* fURLText; bool fHasInvalidChar; }; // --------------------------------------------------------------------------- // XMLURL: Public operators // --------------------------------------------------------------------------- inline bool XMLURL::operator!=(const XMLURL& toCompare) const { return !operator==(toCompare); } // --------------------------------------------------------------------------- // XMLURL: Getter methods // --------------------------------------------------------------------------- inline const XMLCh* XMLURL::getFragment() const { return fFragment; } inline const XMLCh* XMLURL::getHost() const { return fHost; } inline const XMLCh* XMLURL::getPassword() const { return fPassword; } inline const XMLCh* XMLURL::getPath() const { return fPath; } inline XMLURL::Protocols XMLURL::getProtocol() const { return fProtocol; } inline const XMLCh* XMLURL::getQuery() const { return fQuery; } inline const XMLCh* XMLURL::getUser() const { return fUser; } inline const XMLCh* XMLURL::getURLText() const { // // Fault it in if not already. Since this is a const method and we // can't use mutable members due the compilers we have to support, // we have to cast off the constness. // if (!fURLText) ((XMLURL*)this)->buildFullText(); return fURLText; } inline MemoryManager* XMLURL::getMemoryManager() const { return fMemoryManager; } MakeXMLException(MalformedURLException, XMLUTIL_EXPORT) XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/MsgLoaders/0000755000175000017500000000000011363617255017514 5ustar borisborisxerces-c-3.1.1/src/xercesc/util/MsgLoaders/InMemory/0000755000175000017500000000000011363617254021252 5ustar borisborisxerces-c-3.1.1/src/xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.hpp0000644000175000017500000000726310665077060024575 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: InMemMsgLoader.hpp 570552 2007-08-28 19:57:36Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_INMEMMSGLOADER_HPP) #define XERCESC_INCLUDE_GUARD_INMEMMSGLOADER_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN // // This is a simple in memory message loader implementation. For those // folks who just want a single language and want something very fast and // efficient, can basically just provide a couple of arrays of Unicode // strings that can be looked up by the message id. // class XMLUTIL_EXPORT InMemMsgLoader : public XMLMsgLoader { public : // ----------------------------------------------------------------------- // Public Constructors and Destructor // ----------------------------------------------------------------------- InMemMsgLoader(const XMLCh* const msgDomain); ~InMemMsgLoader(); // ----------------------------------------------------------------------- // Implementation of the virtual message loader API // ----------------------------------------------------------------------- virtual bool loadMsg ( const XMLMsgLoader::XMLMsgId msgToLoad , XMLCh* const toFill , const XMLSize_t maxChars ); virtual bool loadMsg ( const XMLMsgLoader::XMLMsgId msgToLoad , XMLCh* const toFill , const XMLSize_t maxChars , const XMLCh* const repText1 , const XMLCh* const repText2 = 0 , const XMLCh* const repText3 = 0 , const XMLCh* const repText4 = 0 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual bool loadMsg ( const XMLMsgLoader::XMLMsgId msgToLoad , XMLCh* const toFill , const XMLSize_t maxChars , const char* const repText1 , const char* const repText2 = 0 , const char* const repText3 = 0 , const char* const repText4 = 0 , MemoryManager * const manager = XMLPlatformUtils::fgMemoryManager ); private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- InMemMsgLoader(); InMemMsgLoader(const InMemMsgLoader&); InMemMsgLoader& operator=(const InMemMsgLoader&); // ----------------------------------------------------------------------- // Private data members // // fMsgDomain // This is the message domain that we are for loading message from. // ----------------------------------------------------------------------- XMLCh* fMsgDomain; }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/MsgLoaders/InMemory/XercesMessages_en_US.hpp0000644000175000017500000104176511300755135026003 0ustar borisboris// ---------------------------------------------------------------- // This file was generated from the XML error message source. // so do not edit this file directly!! // ---------------------------------------------------------------- #include XERCES_CPP_NAMESPACE_BEGIN const XMLCh gXMLErrArray[][128] = { { 0x0057,0x005F,0x0053,0x0074,0x0061,0x0072,0x0074,0x00 } , { 0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0062,0x0065,0x0065,0x006E,0x0020,0x0064,0x0065,0x0063, 0x006C,0x0061,0x0072,0x0065,0x0064,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0062,0x0065,0x0065,0x006E,0x0020,0x0064,0x0065, 0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x0066,0x006F,0x0072,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } , { 0x0065,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0058,0x004D,0x004C,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E, 0x0020,0x006F,0x0072,0x0020,0x006D,0x0061,0x006E,0x0075,0x0061,0x006C,0x006C,0x0079,0x0020,0x0073,0x0065,0x0074,0x0020,0x0063,0x006F,0x006E,0x0074,0x0072,0x0061,0x0064,0x0069,0x0063,0x0074,0x0073,0x0020,0x0074,0x0068,0x0065,0x0020,0x0061,0x0075, 0x0074,0x006F,0x002D,0x0073,0x0065,0x006E,0x0073,0x0065,0x0064,0x0020,0x0065,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x003B,0x0020,0x0069,0x0067,0x006E,0x006F,0x0072,0x0069,0x006E,0x0067,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0061,0x0020,0x0063,0x006F, 0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x0020,0x0062,0x0075,0x0074,0x0020,0x0077,0x0061,0x0073,0x0020,0x006E,0x0065,0x0076,0x0065,0x0072,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0061,0x006E,0x0020,0x0041, 0x0054,0x0054,0x004C,0x0049,0x0053,0x0054,0x0020,0x0062,0x0075,0x0074,0x0020,0x0077,0x0061,0x0073,0x0020,0x006E,0x0065,0x0076,0x0065,0x0072,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x00 } , { 0x007B,0x0030,0x007D,0x00 } , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0069,0x006E,0x0063,0x006C,0x0075,0x0064,0x0065,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x006F,0x0070,0x0065,0x006E,0x0020,0x0074,0x0065,0x0078,0x0074,0x0020,0x0066,0x0069,0x006C,0x0065,0x0020,0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x0020,0x0027,0x007B,0x0030, 0x007D,0x0027,0x00 } , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0069,0x006E,0x0063,0x006C,0x0075,0x0064,0x0065,0x0020,0x0072,0x0065,0x0073,0x006F,0x0075,0x0072,0x0063,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0057,0x005F,0x0045,0x006E,0x0064,0x00 } , { 0x0045,0x005F,0x0053,0x0074,0x0061,0x0072,0x0074,0x00 } , { 0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0066,0x006F,0x0072,0x0020,0x0074,0x0068,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E, 0x0074,0x0020,0x006F,0x0066,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x003B,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x006C,0x0069,0x0073,0x0074,0x002C,0x0020,0x0075,0x006E,0x0069,0x006F,0x006E,0x002C,0x0020, 0x0061,0x006E,0x0064,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0061,0x0072,0x0065,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x00 } , { 0x0067,0x006C,0x006F,0x0062,0x0061,0x006C,0x006C,0x0079,0x002D,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0064,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020, 0x0068,0x0061,0x0076,0x0065,0x0020,0x0061,0x0020,0x006E,0x0061,0x006D,0x0065,0x00 } , { 0x0067,0x006C,0x006F,0x0062,0x0061,0x006C,0x006C,0x0079,0x002D,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061, 0x0076,0x0065,0x0020,0x0061,0x0020,0x006E,0x0061,0x006D,0x0065,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x006E,0x0061,0x006D, 0x0065,0x0020,0x006F,0x0072,0x0020,0x0027,0x0072,0x0065,0x0066,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020, 0x006F,0x0072,0x0020,0x0027,0x0072,0x0065,0x0066,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x00 } , { 0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x006F,0x0072, 0x0020,0x0061,0x0020,0x0027,0x0072,0x0065,0x0066,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0047,0x0072,0x006F,0x0075,0x0070,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076, 0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x006F,0x0072,0x0020,0x0027,0x0072,0x0065,0x0066,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x00 } , { 0x0061,0x006E,0x006F,0x006E,0x0079,0x006D,0x006F,0x0075,0x0073,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x0020,0x0069,0x006E,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B, 0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x006E,0x0061,0x006D,0x0065,0x00 } , { 0x0061,0x006E,0x006F,0x006E,0x0079,0x006D,0x006F,0x0075,0x0073,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0069,0x006E,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030, 0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x006E,0x0061,0x006D,0x0065,0x00 } , { 0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006F,0x0066,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074, 0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0020,0x0028,0x0061,0x006E,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x003F,0x002C,0x0020,0x0028,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x007C,0x0020, 0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x0029,0x003F,0x002C,0x0020,0x0028,0x0075,0x006E,0x0069,0x0071,0x0075,0x0065,0x0020,0x007C,0x0020,0x006B,0x0065,0x0079,0x0020,0x007C,0x0020,0x006B,0x0065,0x0079,0x0072, 0x0065,0x0066,0x0029,0x002A,0x0029,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0069,0x006E,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D, 0x0027,0x003B,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x006C,0x0069,0x0073,0x0074,0x002C,0x0020,0x0075,0x006E,0x0069,0x006F,0x006E,0x002C,0x0020,0x0061,0x006E,0x0064,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F, 0x006E,0x0020,0x0061,0x0072,0x0065,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x00 } , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0069,0x006E,0x0020,0x006C,0x0069,0x0073,0x0074,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074, 0x0069,0x006F,0x006E,0x0020,0x0066,0x006F,0x0072,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x006C,0x0069,0x0073,0x0074,0x002C,0x0020,0x0075,0x006E,0x0069,0x006F,0x006E,0x002C,0x0020,0x006F,0x0072,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074, 0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0066,0x006F,0x0072,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0069,0x006E,0x0020,0x006C,0x0069,0x0073,0x0074,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020, 0x0066,0x006F,0x0072,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0069,0x006E,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020, 0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x0066,0x006F,0x0072,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0066,0x0061,0x0063,0x0065,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0064,0x00 } , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0069,0x006E,0x0020,0x0075,0x006E,0x0069,0x006F,0x006E,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069, 0x0074,0x0069,0x006F,0x006E,0x0020,0x0066,0x006F,0x0072,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0069,0x006E,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073, 0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x00 } , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0078,0x0074,0x0065,0x006E,0x0073,0x0069,0x006F,0x006E,0x0020,0x0069, 0x006E,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0043,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x0062,0x0061,0x0073,0x0065,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0066,0x006F, 0x0072,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0078,0x0074,0x0065,0x006E,0x0073,0x0069,0x006F,0x006E,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069, 0x006F,0x006E,0x00 } , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0078,0x0074,0x0065,0x006E,0x0073,0x0069,0x006F,0x006E,0x0020,0x0069, 0x006E,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0043,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0069,0x006E,0x0020,0x0027,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x0027,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074, 0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0066,0x006F,0x0072,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0070,0x0072,0x0065,0x0066,0x0069,0x0078,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x0020,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0072,0x0065,0x0073,0x006F,0x006C,0x0076,0x0065,0x0064,0x0020,0x0074,0x006F, 0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0055,0x0052,0x0049,0x00 } , { 0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0064,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x00 } , { 0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x003A,0x007B,0x0031,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0020,0x0074,0x0079, 0x0070,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x00 } , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0063,0x0072,0x0065,0x0061,0x0074,0x0065,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0061,0x0074,0x006F,0x0072,0x0020,0x0066,0x006F,0x0072,0x0020,0x0027,0x007B,0x0030,0x007D, 0x0027,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0069,0x006E,0x0067,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0043,0x006F,0x006E, 0x0074,0x0065,0x006E,0x0074,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0069,0x006E,0x0067,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0043,0x006F, 0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0062,0x006F,0x0074,0x0068,0x0020,0x0066,0x0069, 0x0078,0x0065,0x0064,0x0020,0x0061,0x006E,0x0064,0x0020,0x0064,0x0065,0x0066,0x0061,0x0075,0x006C,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0073,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0064,0x0065,0x0066,0x0061,0x0075,0x006C,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020, 0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006F,0x0070,0x0074,0x0069,0x006F,0x006E,0x0061,0x006C,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x006D,0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020, 0x006F,0x006E,0x0063,0x0065,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073,0x0061,0x006D,0x0065,0x0020,0x0073,0x0063,0x006F,0x0070,0x0065,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0062,0x006F,0x0074,0x0068,0x0020,0x0027,0x0074, 0x0079,0x0070,0x0065,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0061,0x006E,0x0064,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E, 0x0069,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x003A,0x007B,0x0031,0x007D,0x0027,0x0020,0x0066,0x006F,0x0072,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020, 0x0027,0x007B,0x0032,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0062,0x006F,0x0074,0x0068,0x0020,0x0066,0x0069,0x0078,0x0065, 0x0064,0x0020,0x0061,0x006E,0x0064,0x0020,0x0064,0x0065,0x0066,0x0061,0x0075,0x006C,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0073,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x007B,0x0030,0x007D,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0062,0x006F,0x0074,0x0068,0x0020,0x0027,0x0074,0x0079,0x0070, 0x0065,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0061,0x006E,0x0064,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x002F,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078, 0x0054,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x006F,0x0072,0x0020,0x0064,0x0065,0x0066,0x0061,0x0075,0x006C,0x0074,0x0020, 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0061,0x006E,0x0064,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x006D,0x0069,0x0078,0x0065,0x0064,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0020,0x006F,0x0072, 0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x00 } , { 0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0065,0x0078,0x0074,0x0065,0x006E,0x0064,0x0073, 0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068,0x0065,0x0020,0x0066,0x0069,0x006E,0x0061,0x006C,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065, 0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0070,0x0065,0x0072,0x006D,0x0069,0x0074,0x0020,0x0065,0x0078,0x0074,0x0065,0x006E,0x0073,0x0069,0x006F,0x006E,0x00 } , { 0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0061,0x0073,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0069,0x006E, 0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0043,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x006E,0x006F,0x0074,0x0020, 0x0068,0x0061,0x0076,0x0065,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x00 } , { 0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0061,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0061,0x006E,0x0064,0x0020,0x0063,0x0061,0x006E, 0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0075,0x0073,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0062,0x0079,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069, 0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0069,0x006E,0x0067,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069, 0x006F,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0078,0x0074,0x0065,0x006E,0x0073,0x0069,0x006F,0x006E,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C, 0x0065,0x0043,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0069,0x006E,0x0067,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069, 0x006F,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0078,0x0074,0x0065,0x006E,0x0073,0x0069,0x006F,0x006E,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C, 0x0065,0x0078,0x0043,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x00 } , { 0x0064,0x0075,0x0070,0x006C,0x0069,0x0063,0x0061,0x0074,0x0065,0x0020,0x0061,0x006E,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0075,0x0073,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0069,0x0074,0x0073,0x0020,0x006F,0x0077, 0x006E,0x0020,0x0075,0x006E,0x0069,0x006F,0x006E,0x002C,0x0020,0x006C,0x0069,0x0073,0x0074,0x002C,0x0020,0x006F,0x0072,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E, 0x0069,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x0062,0x006C,0x006F,0x0063,0x006B,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x00 } , { 0x0066,0x0069,0x006E,0x0061,0x006C,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0070,0x0061,0x0072,0x0074,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068,0x0065, 0x0020,0x0073,0x0075,0x0062,0x0073,0x0074,0x0069,0x0074,0x0075,0x0074,0x0069,0x006F,0x006E,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0068,0x0065,0x0061,0x0064,0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, 0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0077,0x0068,0x0069,0x0063,0x0068,0x0020,0x0064,0x006F,0x0065,0x0073, 0x0020,0x006E,0x006F,0x0074,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0074,0x0068,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068,0x0065,0x0020,0x0065,0x006C, 0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0065,0x0020,0x0068,0x0065,0x0061,0x0064,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073,0x0075,0x0062,0x0073,0x0074,0x0069,0x0074,0x0075,0x0074,0x0069, 0x006F,0x006E,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x006D,0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x006E, 0x0063,0x0065,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073,0x0061,0x006D,0x0065,0x0020,0x0073,0x0063,0x006F,0x0070,0x0065,0x00 } , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0066,0x006F,0x0072,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027, 0x007B,0x0031,0x007D,0x0027,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0062,0x006F,0x0074,0x0068,0x0020,0x0027,0x0072,0x0065,0x0066,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072, 0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0061,0x006E,0x0064,0x0020,0x0069,0x006E,0x006C,0x0069,0x006E,0x0065,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074, 0x0069,0x006F,0x006E,0x0020,0x006F,0x0072,0x0020,0x0027,0x0066,0x006F,0x0072,0x006D,0x0027,0x0020,0x006F,0x0072,0x0020,0x0027,0x0074,0x0079,0x0070,0x0065,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x00 } , { 0x0064,0x0075,0x0070,0x006C,0x0069,0x0063,0x0061,0x0074,0x0065,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x003A, 0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x0064,0x0065,0x0072,0x0069,0x0076,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0062,0x0079,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0066,0x006F,0x0072,0x0062,0x0069,0x0064, 0x0064,0x0065,0x006E,0x0020,0x0062,0x0079,0x0020,0x0065,0x0069,0x0074,0x0068,0x0065,0x0072,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006F,0x0072,0x0020,0x0067,0x006C, 0x006F,0x0062,0x0061,0x006C,0x006C,0x0079,0x00 } , { 0x0064,0x0065,0x0072,0x0069,0x0076,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0062,0x0079,0x0020,0x0065,0x0078,0x0074,0x0065,0x006E,0x0073,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0066,0x006F,0x0072,0x0062,0x0069,0x0064,0x0064,0x0065, 0x006E,0x0020,0x0062,0x0079,0x0020,0x0065,0x0069,0x0074,0x0068,0x0065,0x0072,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006F,0x0072,0x0020,0x0067,0x006C,0x006F,0x0062, 0x0061,0x006C,0x006C,0x0079,0x00 } , { 0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0043,0x006F,0x006E,0x0074,0x0065, 0x006E,0x0074,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0061,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0020,0x0074,0x0079,0x0070, 0x0065,0x00 } , { 0x0069,0x006D,0x0070,0x006F,0x0072,0x0074,0x0065,0x0064,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0065,0x006E,0x0074, 0x0020,0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x003B,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027, 0x007B,0x0032,0x007D,0x0027,0x00 } , { 0x0027,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x004C,0x006F,0x0063,0x0061,0x0074,0x0069,0x006F,0x006E,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020, 0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0069,0x006E,0x0063,0x006C,0x0075,0x0064,0x0065,0x0064,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0065,0x006E,0x0074, 0x0020,0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } , { 0x0061,0x0074,0x0020,0x006D,0x006F,0x0073,0x0074,0x0020,0x006F,0x006E,0x0065,0x0020,0x0061,0x006E,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x00 } , { 0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006F,0x0066,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x006D,0x0061,0x0074, 0x0063,0x0068,0x0020,0x0028,0x0061,0x006E,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x003F,0x002C,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x003F,0x0029,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0061,0x0070,0x0070,0x0065,0x0061,0x0072,0x0020,0x0069,0x006E,0x0020,0x0067,0x006C,0x006F,0x0062, 0x0061,0x006C,0x0020,0x007B,0x0031,0x007D,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0073,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0061,0x0070,0x0070,0x0065,0x0061,0x0072,0x0020,0x0069,0x006E,0x0020,0x006C,0x006F,0x0063,0x0061, 0x006C,0x0020,0x007B,0x0031,0x007D,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0073,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0061,0x0070,0x0070,0x0065,0x0061,0x0072,0x0020,0x0069,0x006E,0x0020,0x0067,0x006C, 0x006F,0x0062,0x0061,0x006C,0x0020,0x007B,0x0031,0x007D,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0073,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0061,0x0070,0x0070,0x0065,0x0061,0x0072,0x0020,0x0069,0x006E,0x0020,0x006C,0x006F, 0x0063,0x0061,0x006C,0x0020,0x007B,0x0031,0x007D,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0073,0x00 } , { 0x006D,0x0069,0x006E,0x004F,0x0063,0x0063,0x0075,0x0072,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067, 0x0072,0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0061,0x0078,0x004F,0x0063,0x0063,0x0075,0x0072,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } , { 0x0064,0x0075,0x0070,0x006C,0x0069,0x0063,0x0061,0x0074,0x0065,0x0020,0x0061,0x006E,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0061,0x006E,0x0079,0x0041,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074, 0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x0067,0x006C,0x006F,0x0062,0x0061,0x006C,0x0020,0x007B,0x0030,0x007D,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x006E,0x0061, 0x006D,0x0065,0x00 } , { 0x0063,0x0069,0x0072,0x0063,0x0075,0x006C,0x0061,0x0072,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0067,0x006C,0x006F,0x0062,0x0061,0x006C,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x003A,0x007B,0x0031,0x007D,0x0027,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x006D,0x006F,0x0072,0x0065, 0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x006E,0x0063,0x0065,0x0020,0x006F,0x0072,0x0020,0x0061,0x006C,0x0073,0x006F,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x0061,0x0073,0x0020,0x007B,0x0032,0x007D,0x00 } , { 0x0067,0x006C,0x006F,0x0062,0x0061,0x006C,0x0020,0x007B,0x0030,0x007D,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x006D,0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E, 0x0020,0x006F,0x006E,0x0063,0x0065,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0066,0x006F,0x0072,0x0020,0x0077,0x0068,0x0069,0x0074,0x0065,0x0053,0x0070,0x0061,0x0063,0x0065,0x0020, 0x0066,0x0061,0x0063,0x0065,0x0074,0x003B,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x0063,0x006F,0x006C,0x006C,0x0061,0x0070,0x0073,0x0065,0x0027,0x00 } , { 0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x006F,0x0066,0x0020,0x0069,0x006D,0x0070,0x006F,0x0072,0x0074,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073, 0x0074,0x0020,0x0062,0x0065,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0065,0x006E,0x0074,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063, 0x0065,0x0020,0x006F,0x0066,0x0020,0x0069,0x006D,0x0070,0x006F,0x0072,0x0074,0x0069,0x006E,0x0067,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x00 } , { 0x0069,0x006D,0x0070,0x006F,0x0072,0x0074,0x0069,0x006E,0x0067,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x0020,0x006E, 0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0069,0x0066,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0069,0x006E,0x0020,0x0069,0x006D,0x0070,0x006F,0x0072,0x0074,0x0020,0x0064,0x0065,0x0063, 0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0070,0x0072,0x0065,0x0073,0x0065,0x006E,0x0074,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0063,0x006F,0x006E, 0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x0066,0x0020,0x0069,0x0074,0x0073,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0069,0x0073,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0065, 0x0064,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0049,0x0044,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x002F,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006F,0x0066,0x0020,0x004E,0x004F,0x0054,0x0041,0x0054, 0x0049,0x004F,0x004E,0x0020,0x0074,0x0079,0x0070,0x0065,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x006D,0x0069,0x0078,0x0065,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0074,0x0079,0x0070, 0x0065,0x0020,0x0061,0x006E,0x0064,0x0020,0x0074,0x0068,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x0027,0x0073,0x0020,0x0070,0x0061,0x0072,0x0074,0x0069,0x0063,0x006C,0x0065,0x0020,0x006D, 0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x006D,0x0070,0x0074,0x0069,0x0061,0x0062,0x006C,0x0065,0x00 } , { 0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x0068,0x0061,0x0073,0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x0020,0x0063,0x006F, 0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0062,0x0075,0x0074,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x0020,0x006F,0x0072, 0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0065,0x006D,0x0070,0x0074,0x0069,0x0061,0x0062,0x006C,0x0065,0x0020,0x0070,0x0061,0x0072,0x0074,0x0069,0x0063,0x006C,0x0065,0x00 } , { 0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x0073,0x0020,0x006F,0x0066,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0061,0x006E, 0x0064,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0064,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x006F,0x0074,0x0068,0x0020,0x0062,0x0065,0x0020,0x006D, 0x0069,0x0078,0x0065,0x0064,0x0020,0x006F,0x0072,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x002D,0x006F,0x006E,0x006C,0x0079,0x00 } , { 0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064, 0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0066,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x00 } , { 0x0064,0x0065,0x0072,0x0069,0x0076,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0062,0x0079,0x0020,0x0065,0x0078,0x0074,0x0065,0x006E,0x0073,0x0069,0x006F,0x006E,0x0020,0x006F,0x0072,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074, 0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0066,0x006F,0x0072,0x0062,0x0069,0x0064,0x0064,0x0065,0x006E,0x0020,0x0062,0x0079,0x0020,0x0065,0x0069,0x0074,0x0068,0x0065,0x0072,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070, 0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006F,0x0072,0x0020,0x0067,0x006C,0x006F,0x0062,0x0061,0x006C,0x006C,0x0079,0x00 } , { 0x0069,0x0074,0x0065,0x006D,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0076,0x0061,0x0072,0x0069, 0x0065,0x0074,0x0079,0x0020,0x006F,0x0066,0x0020,0x0061,0x0074,0x006F,0x006D,0x0069,0x0063,0x0020,0x006F,0x0072,0x0020,0x0075,0x006E,0x0069,0x006F,0x006E,0x0020,0x0077,0x0068,0x0065,0x0072,0x0065,0x0020,0x0061,0x006C,0x006C,0x0020,0x006D,0x0065, 0x006D,0x0062,0x0065,0x0072,0x0020,0x0074,0x0079,0x0070,0x0065,0x0073,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0061,0x0074,0x006F,0x006D,0x0069,0x0063,0x00 } , { 0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0020,0x0061,0x006C,0x006C,0x002C,0x0020,0x0063,0x0068,0x006F,0x0069,0x0063, 0x0065,0x002C,0x0020,0x006F,0x0072,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x0020,0x0063,0x006F,0x006D,0x0070,0x006F,0x0073,0x0069,0x0074,0x006F,0x0072,0x00 } , { 0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006F,0x0066,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0047,0x0072,0x006F,0x0075,0x0070,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073, 0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0020,0x0028,0x0061,0x006E,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x003F,0x002C,0x0020,0x0028,0x0028,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x007C, 0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0047,0x0072,0x006F,0x0075,0x0070,0x0029,0x002A,0x002C,0x0020,0x0061,0x006E,0x0079,0x0041,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x003F,0x0029,0x0029,0x00 } , { 0x0074,0x006F,0x0070,0x002D,0x006C,0x0065,0x0076,0x0065,0x006C,0x0020,0x0063,0x006F,0x006D,0x0070,0x006F,0x0073,0x0069,0x0074,0x006F,0x0072,0x0020,0x0069,0x006E,0x0020,0x0061,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x006D,0x0075,0x0073, 0x0074,0x0020,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0027,0x006D,0x0069,0x006E,0x004F,0x0063,0x0063,0x0075,0x0072,0x0073,0x0027,0x0020,0x006F,0x0072,0x0020,0x0027,0x006D,0x0061,0x0078,0x004F,0x0063,0x0063,0x0075,0x0072, 0x0073,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x00 } , { 0x007B,0x0030,0x007D,0x0020,0x0027,0x007B,0x0031,0x007D,0x003A,0x007B,0x0032,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x00 } , { 0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0074,0x0068,0x0065,0x0020,0x0061,0x006C,0x006C,0x0020,0x0063,0x006F,0x006D,0x0070,0x006F,0x0073,0x0069,0x0074,0x006F,0x0072,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020, 0x006F,0x006E,0x006C,0x0079,0x0020,0x0061,0x0070,0x0070,0x0065,0x0061,0x0072,0x0020,0x0061,0x0073,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x0061,0x0020,0x0063,0x006F, 0x006D,0x0070,0x006C,0x0065,0x0078,0x0020,0x0074,0x0079,0x0070,0x0065,0x00 } , { 0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0074,0x0068,0x0065,0x0020,0x0061,0x006C,0x006C,0x0020,0x0063,0x006F,0x006D,0x0070,0x006F,0x0073,0x0069,0x0074,0x006F,0x0072,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074, 0x0069,0x0074,0x0075,0x0074,0x0069,0x006E,0x0067,0x0020,0x0074,0x0068,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x0061,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C, 0x0065,0x0078,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0062,0x006F,0x0074,0x0068,0x0020,0x006D,0x0069,0x006E,0x004F,0x0063,0x0063,0x0075,0x0072,0x0073,0x0020,0x0061,0x006E, 0x0064,0x0020,0x006D,0x0061,0x0078,0x004F,0x0063,0x0063,0x0075,0x0072,0x0073,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0031,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0061,0x006C,0x006C,0x0020,0x0063,0x006F,0x006D,0x0070, 0x006F,0x0073,0x0069,0x0074,0x006F,0x0072,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x006D,0x0069,0x006E,0x004F,0x0063,0x0063,0x0075,0x0072,0x0073,0x0020,0x0061,0x006E,0x0064,0x0020,0x006D,0x0061,0x0078,0x004F, 0x0063,0x0063,0x0075,0x0072,0x0073,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0030,0x0020,0x006F,0x0072,0x0020,0x0031,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0064,0x0020, 0x0069,0x006E,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x0069,0x006E,0x0074,0x0065,0x006E,0x0073,0x0069,0x006F,0x006E,0x0061,0x006C,0x0020,0x0069,0x006E,0x0074,0x0065,0x0072,0x0073,0x0065,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0066,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075, 0x0074,0x0065,0x0020,0x0077,0x0069,0x006C,0x0064,0x0063,0x0061,0x0072,0x0064,0x0073,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x0062,0x006C,0x0065,0x00 } , { 0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0061,0x006E,0x0079,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075, 0x0074,0x0065,0x0073,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0069,0x006E,0x0063,0x006F,0x006D,0x0070,0x0061,0x0074,0x0069,0x0062,0x006C,0x0065,0x0020,0x0075,0x0073, 0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0064,0x0065,0x0072, 0x0069,0x0076,0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068, 0x0065,0x0020,0x0063,0x006F,0x0072,0x0072,0x0065,0x0073,0x0070,0x006F,0x006E,0x0064,0x0069,0x006E,0x0067,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061, 0x0073,0x0065,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0061,0x0020,0x0066,0x0069,0x0078, 0x0065,0x0064,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x006F,0x0072,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0065,0x006E,0x0074,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x0076, 0x0061,0x006C,0x0075,0x0065,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x0020, 0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0072,0x0065,0x0073,0x0070,0x0065,0x0063,0x0074,0x0020,0x0074,0x006F,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020, 0x0077,0x0069,0x006C,0x0064,0x0063,0x0061,0x0072,0x0064,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x0020,0x006F,0x0072,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0068,0x0061,0x0073,0x0020,0x006E,0x006F,0x0020, 0x0077,0x0069,0x006C,0x0064,0x0063,0x0061,0x0072,0x0064,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0077,0x0069,0x006C,0x0064,0x0063,0x0061,0x0072,0x0064,0x0020,0x0069,0x0073,0x0020,0x0070,0x0072,0x0065,0x0073,0x0065,0x006E,0x0074,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068, 0x0065,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0064,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0062,0x0075,0x0074,0x0020,0x006E,0x006F,0x0074,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0077,0x0069,0x006C,0x0064,0x0063,0x0061,0x0072,0x0064,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0064,0x0020,0x0074, 0x0079,0x0070,0x0065,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0073,0x0075,0x0062,0x0073,0x0065,0x0074,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x0069, 0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0065, 0x006E,0x0074,0x0020,0x0075,0x0073,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0064,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0069,0x0066, 0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0075,0x0073,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0069,0x0073,0x0020,0x0027,0x0070, 0x0072,0x006F,0x0068,0x0069,0x0062,0x0069,0x0074,0x0065,0x0064,0x0027,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0077,0x0069,0x006C,0x0064,0x0063,0x0061,0x0072,0x0064,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0064,0x0020,0x0074, 0x0079,0x0070,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0069,0x0064,0x0065,0x006E,0x0074,0x0069,0x0063,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006F,0x0072,0x0020,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0065, 0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x006F,0x006E,0x0065,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x0075,0x006E,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006F,0x0066,0x0020, 0x0074,0x0068,0x0065,0x0020,0x0061,0x006C,0x006C,0x0020,0x0063,0x006F,0x006D,0x0070,0x006F,0x0073,0x0069,0x0074,0x006F,0x0072,0x003B,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0073,0x0020,0x0061, 0x0072,0x0065,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x00 } , { 0x0072,0x0065,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0064,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072, 0x0065,0x006E,0x0074,0x0020,0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } , { 0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0069,0x006E,0x0020,0x0072,0x0065,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0061,0x0020, 0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0069,0x006E,0x0020,0x0072,0x0065,0x0064,0x0065,0x0066,0x0069, 0x006E,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0074,0x0068,0x0065,0x0020,0x006F,0x0072,0x0069,0x0067,0x0069,0x006E,0x0061,0x006C,0x0020,0x0074,0x0079,0x0070,0x0065, 0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073,0x0061,0x006D,0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x00 } , { 0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x0020,0x0069,0x006E,0x0020,0x0072,0x0065,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0061, 0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0078,0x0074,0x0065,0x006E,0x0073,0x0069,0x006F,0x006E,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F, 0x006E,0x00 } , { 0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0054,0x0079,0x0070,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0069,0x006E,0x0020,0x0072,0x0065,0x0064,0x0065,0x0066, 0x0069,0x006E,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0074,0x0068,0x0065,0x0020,0x006F,0x0072,0x0069,0x0067,0x0069,0x006E,0x0061,0x006C,0x0020,0x0074,0x0079,0x0070, 0x0065,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073,0x0061,0x006D,0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x00 } , { 0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x006D,0x0069,0x006E,0x004F,0x0063,0x0063,0x0075,0x0072,0x0073,0x0020,0x0061,0x006E,0x0064, 0x0020,0x006D,0x0061,0x0078,0x004F,0x0063,0x0063,0x0075,0x0072,0x0073,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0031,0x00 } , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x006E,0x0064,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073, 0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x0062,0x0065,0x0069,0x006E,0x0067,0x0020,0x0072,0x0065,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0064,0x0020,0x0063,0x006F,0x0072,0x0072,0x0065,0x0073,0x0070,0x006F,0x006E,0x0064,0x0069,0x006E,0x0067, 0x0020,0x0074,0x006F,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0072,0x0065,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0020,0x006D,0x0061,0x0079,0x0020,0x006F, 0x006E,0x006C,0x0079,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0020,0x006F,0x006E,0x0065,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0074,0x006F,0x0020,0x0069,0x0074,0x0073,0x0065,0x006C,0x0066, 0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0047,0x0072,0x006F,0x0075,0x0070,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0072,0x0065,0x0064,0x0065,0x0066, 0x0069,0x006E,0x0065,0x0020,0x006D,0x0061,0x0079,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0020,0x006F,0x006E,0x0065,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020, 0x0074,0x006F,0x0020,0x0069,0x0074,0x0073,0x0065,0x006C,0x0066,0x00 } , { 0x0072,0x0065,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E, 0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x003A,0x007B,0x0031,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020, 0x0066,0x006F,0x0075,0x006E,0x0064,0x00 } , { 0x006D,0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x006E,0x0065,0x0020,0x0069,0x0064,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x0020,0x0068, 0x0061,0x0073,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0069,0x0064,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073, 0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0020,0x0028,0x0061,0x006E,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x003F,0x002C,0x0020,0x0073,0x0065,0x006C,0x0065,0x0063,0x0074,0x006F,0x0072,0x002C,0x0020,0x0066,0x0069,0x0065, 0x006C,0x0064,0x002B,0x0029,0x00 } , { 0x006B,0x0065,0x0079,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0072,0x0065,0x0066, 0x0065,0x0072,0x0073,0x0020,0x0074,0x006F,0x0020,0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0020,0x006B,0x0065,0x0079,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } , { 0x0066,0x0069,0x0065,0x006C,0x0064,0x0020,0x0063,0x0061,0x0072,0x0064,0x0069,0x006E,0x0061,0x006C,0x0069,0x0074,0x0069,0x0065,0x0073,0x0020,0x0066,0x006F,0x0072,0x0020,0x006B,0x0065,0x0079,0x0072,0x0065,0x0066,0x0020,0x0027,0x007B,0x0030,0x007D, 0x0027,0x0020,0x0061,0x006E,0x0064,0x0020,0x006B,0x0065,0x0079,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x00 } , { 0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x006D,0x0069,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x006F,0x0072,0x0020,0x0065,0x006D,0x0070,0x0074, 0x0079,0x00 } , { 0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0069,0x006E,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020, 0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0065,0x0074,0x0020,0x006F,0x0072,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0073,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0074,0x0068,0x0065,0x0020,0x0066,0x0069,0x0078,0x0065, 0x0064,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x006F,0x0066,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006F,0x0066,0x0020,0x0049,0x0044,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0072,0x0020,0x0074,0x0079, 0x0070,0x0065,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0064,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0049,0x0044,0x0020,0x0061,0x006E,0x0064,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020, 0x0064,0x0065,0x0066,0x0061,0x0075,0x006C,0x0074,0x002F,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0061,0x0020,0x0073,0x0075,0x0062,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0074,0x0020,0x0061,0x0074,0x0074, 0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0069,0x0073,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0061,0x0020, 0x0074,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0064,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0049,0x0044,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0061,0x0020,0x0073,0x0075,0x0062,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0074,0x0020,0x0061,0x0074,0x0074, 0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0069,0x0073,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0077,0x0069,0x0074,0x0068, 0x0020,0x0061,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0064,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0049,0x0044,0x00 } , { 0x0065,0x006D,0x0070,0x0074,0x0079,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0066,0x006F,0x0072,0x0020,0x0027,0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x004E,0x0061,0x006D,0x0065, 0x0073,0x0070,0x0061,0x0063,0x0065,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x003B,0x0020,0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020, 0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0061,0x0062,0x0073,0x0065,0x006E,0x0074,0x0020,0x006F,0x0072,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0020,0x006E,0x006F,0x006E,0x002D,0x0065,0x006D,0x0070,0x0074,0x0079, 0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } , { 0x007B,0x0030,0x007D,0x00 } , { 0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0062,0x0065,0x0065,0x006E,0x0020,0x0069,0x006E,0x0063,0x006C,0x0075,0x0064,0x0065,0x0064,0x0020,0x006F,0x0072,0x0020, 0x0072,0x0065,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0064,0x00 } , { 0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0064,0x0020,0x0077,0x0069,0x0074,0x0068,0x006F, 0x0075,0x0074,0x0020,0x0069,0x006D,0x0070,0x006F,0x0072,0x0074,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x0061,0x006C,0x006C,0x0020,0x0063,0x006F,0x006D,0x0070,0x006F,0x0073,0x0069,0x0074,0x006F,0x0072,0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x0069,0x0073,0x0020,0x0070,0x0061,0x0072,0x0074,0x0020,0x006F,0x0066,0x0020,0x0061,0x0020,0x0063,0x006F, 0x006D,0x0070,0x006C,0x0065,0x0078,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0069,0x0074,0x0075, 0x0074,0x0065,0x0020,0x0074,0x0068,0x0065,0x0020,0x0065,0x006E,0x0074,0x0069,0x0072,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068,0x0065,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069, 0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x0061,0x006E,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0063,0x0061,0x006E,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0020,0x0061,0x0070,0x0070,0x0069,0x006E,0x0066,0x006F, 0x0020,0x0061,0x006E,0x0064,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0073,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0066,0x0061,0x0063,0x0065,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0072,0x006F,0x006F,0x0074,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x006F,0x0066,0x0020,0x0058,0x004D,0x004C,0x0020,0x0053,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x0064,0x006F,0x0063, 0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0027,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x0027,0x00 } , { 0x0063,0x0069,0x0072,0x0063,0x0075,0x006C,0x0061,0x0072,0x0020,0x0073,0x0075,0x0062,0x0073,0x0074,0x0069,0x0074,0x0075,0x0074,0x0069,0x006F,0x006E,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0069,0x006E,0x0020,0x0065,0x006C,0x0065,0x006D, 0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0074,0x0068,0x0065,0x0020,0x0058,0x004D,0x004C,0x0020, 0x0053,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x00 } , { 0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x006F,0x0066,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027, 0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0068,0x0074,0x0074,0x0070,0x003A,0x002F,0x002F,0x0077,0x0077,0x0077,0x002E,0x0077,0x0033,0x002E,0x006F,0x0072,0x0067,0x002F,0x0032,0x0030,0x0030,0x0031,0x002F,0x0058, 0x004D,0x004C,0x0053,0x0063,0x0068,0x0065,0x006D,0x0061,0x002D,0x0069,0x006E,0x0073,0x0074,0x0061,0x006E,0x0063,0x0065,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0066,0x0069,0x0078,0x002D,0x0075,0x0070,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0070,0x0065,0x0072,0x0066,0x006F,0x0072,0x006D,0x0065, 0x0064,0x0020,0x006F,0x006E,0x0020,0x0044,0x004F,0x004D,0x0020,0x004C,0x0065,0x0076,0x0065,0x006C,0x0020,0x0031,0x0020,0x006E,0x006F,0x0064,0x0065,0x00 } , { 0x006D,0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x006E,0x0065,0x0020,0x0061,0x006E,0x0079,0x0041,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074, 0x0069,0x006F,0x006E,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069, 0x006F,0x006E,0x00 } , { 0x0061,0x006E,0x0079,0x0041,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0062, 0x0079,0x0020,0x006F,0x0074,0x0068,0x0065,0x0072,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0073,0x00 } , { 0x0045,0x005F,0x0045,0x006E,0x0064,0x00 } , { 0x0046,0x005F,0x0053,0x0074,0x0061,0x0072,0x0074,0x00 } , { 0x0070,0x0061,0x0072,0x0073,0x0065,0x0072,0x0020,0x0068,0x0061,0x0073,0x0020,0x0065,0x006E,0x0063,0x006F,0x0075,0x006E,0x0074,0x0065,0x0072,0x0065,0x0064,0x0020,0x006D,0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x0027,0x007B, 0x0030,0x007D,0x0027,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0065,0x0078,0x0070,0x0061,0x006E,0x0073,0x0069,0x006F,0x006E,0x0073,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065, 0x006E,0x0074,0x003B,0x0020,0x0074,0x0068,0x0069,0x0073,0x0020,0x0069,0x0073,0x0020,0x0074,0x0068,0x0065,0x0020,0x006C,0x0069,0x006D,0x0069,0x0074,0x0020,0x0069,0x006D,0x0070,0x006F,0x0073,0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x0074,0x0068, 0x0065,0x0020,0x0061,0x0070,0x0070,0x006C,0x0069,0x0063,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0063,0x006F,0x006D,0x006D,0x0065,0x006E,0x0074,0x0020,0x006F,0x0072,0x0020,0x0043,0x0044,0x0041,0x0054,0x0041,0x0020,0x0073,0x0065,0x0063,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } , { 0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } , { 0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0072,0x0065,0x0070,0x0065,0x0074,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0066,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0073,0x0020,0x0069,0x006E,0x0020,0x006D, 0x0069,0x0078,0x0065,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x00 } , { 0x0064,0x0065,0x0066,0x0061,0x0075,0x006C,0x0074,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063, 0x0074,0x0065,0x0064,0x00 } , { 0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0073,0x0069,0x0067,0x006E,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } , { 0x0063,0x006F,0x006D,0x006D,0x0065,0x006E,0x0074,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0073,0x0074,0x0061,0x0072,0x0074,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x003C,0x0021,0x002D,0x002D,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x0073,0x0074,0x0072,0x0075,0x0063,0x0074,0x0075,0x0072,0x0065,0x00 } , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0076,0x0065,0x0072,0x0073,0x0069,0x006F,0x006E,0x002C,0x0020,0x0065,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x002C,0x0020,0x006F,0x0072,0x0020,0x0073,0x0074,0x0061,0x006E, 0x0064,0x0061,0x006C,0x006F,0x006E,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0058,0x004D,0x004C,0x0020,0x0076,0x0065,0x0072,0x0073,0x0069,0x006F,0x006E,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x0075,0x006E,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0065,0x0064,0x0020,0x0058,0x004D,0x004C,0x0020,0x0076,0x0065,0x0072,0x0073,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0058,0x004D,0x004C,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0058,0x004D,0x004C,0x0020,0x0065,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B, 0x0030,0x007D,0x0027,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0073,0x0074,0x0061,0x006E,0x0064,0x0061,0x006C,0x006F,0x006E,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0063,0x006F,0x006D,0x006D,0x0065,0x006E,0x0074,0x00 } , { 0x0070,0x0072,0x006F,0x0063,0x0065,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x0069,0x006E,0x0073,0x0074,0x0072,0x0075,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065, 0x0064,0x00 } , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0070,0x0072,0x006F,0x0063,0x0065,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x0069,0x006E,0x0073,0x0074,0x0072,0x0075,0x0063,0x0074,0x0069,0x006F,0x006E, 0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0030,0x0078,0x007B,0x0030,0x007D,0x00 } , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0073,0x0074,0x0061,0x0072,0x0074,0x0020,0x0074,0x0061,0x0067,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0065,0x006E,0x0064,0x0020,0x0074,0x0061,0x0067,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0066,0x006F,0x0072,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006F, 0x0066,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0065,0x006E,0x0064,0x0020,0x006F,0x0066,0x0020,0x0074,0x0061,0x0067,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0074,0x0061,0x0067,0x0020,0x006E,0x0061,0x006D,0x0065,0x002C,0x0020,0x0063,0x006F,0x006D,0x006D,0x0065,0x006E,0x0074,0x002C,0x0020,0x0050,0x0049,0x002C,0x0020,0x006F,0x0072,0x0020, 0x006F,0x0074,0x0068,0x0065,0x0072,0x0020,0x006D,0x0061,0x0072,0x006B,0x0075,0x0070,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0061,0x0066,0x0074,0x0065,0x0072,0x0020,0x0072,0x006F,0x006F,0x0074,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0027, 0x0073,0x0020,0x0065,0x006E,0x0064,0x0020,0x0074,0x0061,0x0067,0x00 } , { 0x0063,0x006F,0x006D,0x006D,0x0065,0x006E,0x0074,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } , { 0x0063,0x006F,0x006D,0x006D,0x0065,0x006E,0x0074,0x0020,0x006F,0x0072,0x0020,0x0070,0x0072,0x006F,0x0063,0x0065,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x0069,0x006E,0x0073,0x0074,0x0072,0x0075,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0065, 0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } , { 0x0077,0x0068,0x0069,0x0074,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0072,0x006F,0x006F,0x0074,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0069,0x006E,0x0020,0x0044,0x004F,0x0043,0x0054,0x0059,0x0050,0x0045,0x0020,0x0064,0x0065, 0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x0071,0x0075,0x006F,0x0074,0x0065,0x0064,0x0020,0x0073,0x0074,0x0072,0x0069,0x006E,0x0067,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } , { 0x0070,0x0075,0x0062,0x006C,0x0069,0x0063,0x0020,0x0069,0x0064,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0030,0x0078,0x007B,0x0030,0x007D,0x0020,0x0069,0x006E,0x0020,0x0070,0x0075,0x0062,0x006C,0x0069,0x0063,0x0020,0x0069, 0x0064,0x00 } , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0044,0x004F,0x0043,0x0054,0x0059,0x0050,0x0045,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0030,0x0078,0x007B,0x0030,0x007D,0x0020,0x0069,0x006E,0x0020,0x0069,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C, 0x0020,0x0073,0x0075,0x0062,0x0073,0x0065,0x0074,0x00 } , { 0x0075,0x006E,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0077,0x0068,0x0069,0x0074,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0030,0x0078,0x007B,0x0031,0x007D,0x0020,0x0069,0x006E,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074, 0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x006D,0x0061,0x0072,0x006B,0x0075,0x0070,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } , { 0x0054,0x0045,0x0058,0x0054,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0069,0x0073, 0x0020,0x0070,0x006F,0x0069,0x006E,0x0074,0x00 } , { 0x0063,0x006F,0x006E,0x0064,0x0069,0x0074,0x0069,0x006F,0x006E,0x0061,0x006C,0x0020,0x0073,0x0065,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0069,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0073,0x0075,0x0062, 0x0073,0x0065,0x0074,0x00 } , { 0x0070,0x0061,0x0072,0x0061,0x006D,0x0065,0x0074,0x0065,0x0072,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030, 0x007D,0x0027,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x00 } , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x00 } , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0066,0x006F,0x0072,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x00 } , { 0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x00 } , { 0x0075,0x006E,0x0070,0x0061,0x0072,0x0073,0x0065,0x0064,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020, 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0069,0x0073,0x0020,0x0070,0x006F,0x0069,0x006E,0x0074,0x00 } , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027, 0x00 } , { 0x0072,0x0065,0x0063,0x0075,0x0072,0x0073,0x0069,0x0076,0x0065,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0065,0x0078,0x0070,0x0061,0x006E,0x0073,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0070,0x0061,0x0072,0x0074,0x0069,0x0061,0x006C,0x0020,0x006D,0x0061,0x0072,0x006B,0x0075,0x0070,0x0020,0x0069,0x006E,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B, 0x0030,0x007D,0x0027,0x00 } , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0063,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0066,0x006F,0x0072,0x0020, 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0027,0x002A,0x0027,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } , { 0x006D,0x0069,0x0078,0x0065,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0074,0x0065,0x0072,0x006D,0x0069, 0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0070,0x0072,0x006F,0x0070,0x0065,0x0072,0x006C,0x0079,0x00 } , { 0x0073,0x0079,0x0073,0x0074,0x0065,0x006D,0x0020,0x006F,0x0072,0x0020,0x0070,0x0075,0x0062,0x006C,0x0069,0x0063,0x0020,0x0069,0x0064,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x002C,0x0027,0x002C,0x0020,0x0027,0x007C,0x0027,0x002C,0x0020,0x006F,0x0072,0x0020,0x0027,0x0029,0x0027,0x00 } , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x007C,0x0027,0x0020,0x006F,0x0072,0x0020,0x0027,0x0029,0x0027,0x00 } , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x002C,0x0027,0x002C,0x0020,0x0027,0x007C,0x0027,0x002C,0x0020,0x006F,0x0072,0x0020,0x0027,0x0029,0x0027,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E, 0x0074,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x0020,0x006F,0x0066,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0065,0x006E,0x0075,0x006D,0x0065,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0066,0x006F,0x0072,0x0020,0x0061,0x0074,0x0074,0x0072, 0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x007C,0x0027,0x0020,0x006F,0x0072,0x0020,0x0027,0x0029,0x0027,0x00 } , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x006C,0x0069,0x0074,0x0065,0x0072,0x0061,0x006C,0x00 } , { 0x0075,0x006E,0x006D,0x0061,0x0074,0x0063,0x0068,0x0065,0x0064,0x0020,0x0065,0x006E,0x0064,0x0020,0x0074,0x0061,0x0067,0x0020,0x0064,0x0065,0x0074,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } , { 0x0027,0x0028,0x0027,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065, 0x0064,0x0020,0x0066,0x006F,0x0072,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } , { 0x0027,0x003C,0x0027,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0075,0x0073,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0061,0x0074,0x0074, 0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x003B,0x0020,0x0075,0x0073,0x0065,0x0020,0x0026,0x006C,0x0074,0x003B,0x0020,0x0069,0x006E,0x0073,0x0074,0x0065,0x0061, 0x0064,0x00 } , { 0x006C,0x0065,0x0061,0x0064,0x0069,0x006E,0x0067,0x0020,0x0073,0x0075,0x0072,0x0072,0x006F,0x0067,0x0061,0x0074,0x0065,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020, 0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x0061,0x0020,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0073,0x0065,0x0063,0x006F,0x006E,0x0064,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065, 0x0072,0x00 } , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x005D,0x005D,0x003E,0x0027,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x0020,0x0074,0x006F,0x0020,0x0065,0x006E,0x0064,0x0020,0x0063,0x006F,0x006E,0x0064, 0x0069,0x0074,0x0069,0x006F,0x006E,0x0061,0x006C,0x0020,0x0073,0x0065,0x0063,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0049,0x004E,0x0043,0x004C,0x0055,0x0044,0x0045,0x0020,0x006F,0x0072,0x0020,0x0049,0x0047,0x004E,0x004F,0x0052,0x0045,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0069,0x0073,0x0020, 0x0070,0x006F,0x0069,0x006E,0x0074,0x00 } , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x005B,0x0027,0x0020,0x0074,0x006F,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0020,0x0049,0x004E,0x0043,0x004C,0x0055,0x0044,0x0045,0x0020,0x006F,0x0072,0x0020,0x0049, 0x0047,0x004E,0x004F,0x0052,0x0045,0x00 } , { 0x0075,0x006E,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0065,0x006E,0x0064,0x0020,0x006F,0x0066,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0070,0x0061,0x0072,0x0061,0x006D,0x0065,0x0074,0x0065,0x0072,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0070,0x0072,0x006F,0x0070,0x0061,0x0067,0x0061,0x0074,0x0065,0x0064,0x0020,0x006F,0x0075,0x0074,0x0020,0x006F,0x0066,0x0020, 0x0069,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x002F,0x0065,0x0078,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0073,0x0075,0x0062,0x0073,0x0065,0x0074,0x00 } , { 0x0075,0x006E,0x006D,0x0061,0x0074,0x0063,0x0068,0x0065,0x0064,0x0020,0x0027,0x005D,0x0027,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0064,0x0065,0x0074,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } , { 0x0070,0x0061,0x0072,0x0061,0x006D,0x0065,0x0074,0x0065,0x0072,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0073,0x0020,0x0061,0x0072,0x0065,0x0020,0x006E,0x006F,0x0074, 0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0069,0x006E,0x0073,0x0069,0x0064,0x0065,0x0020,0x006D,0x0061,0x0072,0x006B,0x0075,0x0070,0x0020,0x0069,0x006E,0x0020,0x0069,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020, 0x0073,0x0075,0x0062,0x0073,0x0065,0x0074,0x00 } , { 0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0070,0x0072,0x006F,0x0070,0x0061,0x0067,0x0061,0x0074,0x0065,0x0064,0x0020,0x006F,0x0075,0x0074,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E, 0x0074,0x0020,0x0073,0x0065,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0074,0x006F,0x0020,0x006D,0x0069,0x0073,0x0063,0x0065,0x006C,0x006C,0x0061,0x006E,0x0065,0x006F,0x0075,0x0073,0x00 } , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0026,0x0023,0x0020,0x0074,0x006F,0x0020,0x0062,0x0065,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x0061,0x0020,0x006E,0x0075,0x006D, 0x0065,0x0072,0x0069,0x0063,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } , { 0x0027,0x005B,0x0027,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } , { 0x0027,0x005D,0x005D,0x003E,0x0027,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0063,0x0068, 0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0064,0x0061,0x0074,0x0061,0x00 } , { 0x0027,0x002D,0x002D,0x0027,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006D,0x006D,0x0065,0x006E,0x0074, 0x00 } , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0043,0x0044,0x0041,0x0054,0x0041,0x0020,0x0073,0x0065,0x0063,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x004E,0x0044,0x0041,0x0054,0x0041,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } , { 0x004E,0x0044,0x0041,0x0054,0x0041,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0066,0x006F,0x0072,0x0020,0x0070,0x0061,0x0072,0x0061,0x006D,0x0065,0x0074,0x0065,0x0072,0x0020,0x0065,0x006E,0x0074,0x0069, 0x0074,0x0069,0x0065,0x0073,0x00 } , { 0x0068,0x0065,0x0078,0x0020,0x0072,0x0061,0x0064,0x0069,0x0078,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0073,0x0020,0x006D,0x0075,0x0073,0x0074, 0x0020,0x0075,0x0073,0x0065,0x0020,0x0027,0x0078,0x0027,0x002C,0x0020,0x006E,0x006F,0x0074,0x0020,0x0027,0x0058,0x0027,0x00 } , { 0x007B,0x0030,0x007D,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0073,0x0065,0x0065,0x006E,0x00 } , { 0x0058,0x004D,0x004C,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0073,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0069,0x0073,0x0020,0x006F,0x0072, 0x0064,0x0065,0x0072,0x003A,0x0020,0x0076,0x0065,0x0072,0x0073,0x0069,0x006F,0x006E,0x002C,0x0020,0x0065,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x002C,0x0020,0x0073,0x0074,0x0061,0x006E,0x0064,0x0061,0x006C,0x006F,0x006E,0x0065,0x00 } , { 0x0065,0x0078,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0072,0x0065,0x0064,0x0020, 0x0074,0x006F,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } , { 0x0058,0x004D,0x004C,0x0020,0x006F,0x0072,0x0020,0x0054,0x0045,0x0058,0x0054,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0073,0x0074,0x0061,0x0072,0x0074,0x0020, 0x0077,0x0069,0x0074,0x0068,0x0020,0x0027,0x003C,0x003F,0x0078,0x006D,0x006C,0x0020,0x0027,0x002C,0x0020,0x006E,0x006F,0x0074,0x0020,0x0027,0x003C,0x003F,0x0058,0x004D,0x004C,0x0020,0x0027,0x00 } , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x006C,0x0069,0x0074,0x0065,0x0072,0x0061,0x006C,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x006F,0x0072,0x0020,0x0070,0x0075, 0x0062,0x006C,0x0069,0x0063,0x002F,0x0073,0x0079,0x0073,0x0074,0x0065,0x006D,0x0020,0x0069,0x0064,0x00 } , { 0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0064,0x0069,0x0067,0x0069,0x0074,0x0020,0x0066,0x006F,0x0072,0x0020,0x0074,0x0068,0x0065,0x0020, 0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0072,0x0061,0x0064,0x0069,0x0078,0x00 } , { 0x0069,0x006E,0x0070,0x0075,0x0074,0x0020,0x0065,0x006E,0x0064,0x0065,0x0064,0x0020,0x0062,0x0065,0x0066,0x006F,0x0072,0x0065,0x0020,0x0061,0x006C,0x006C,0x0020,0x0073,0x0074,0x0061,0x0072,0x0074,0x0065,0x0064,0x0020,0x0074,0x0061,0x0067,0x0073, 0x0020,0x0077,0x0065,0x0072,0x0065,0x0020,0x0065,0x006E,0x0064,0x0065,0x0064,0x003B,0x0020,0x006C,0x0061,0x0073,0x0074,0x0020,0x0074,0x0061,0x0067,0x0020,0x0073,0x0074,0x0061,0x0072,0x0074,0x0065,0x0064,0x0020,0x0069,0x0073,0x0020,0x0027,0x007B, 0x0030,0x007D,0x0027,0x00 } , { 0x006E,0x0065,0x0073,0x0074,0x0065,0x0064,0x0020,0x0043,0x0044,0x0041,0x0054,0x0041,0x0020,0x0073,0x0065,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x00 } , { 0x0070,0x0072,0x0065,0x0066,0x0069,0x0078,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x0020,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0072,0x0065,0x0073,0x006F,0x006C,0x0076,0x0065,0x0064,0x0020,0x0074,0x006F, 0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0055,0x0052,0x0049,0x00 } , { 0x0073,0x0074,0x0061,0x0072,0x0074,0x0020,0x0061,0x006E,0x0064,0x0020,0x0074,0x0068,0x0065,0x0020,0x0065,0x006E,0x0064,0x0020,0x0074,0x0061,0x0067,0x0073,0x0020,0x0061,0x0072,0x0065,0x0020,0x0069,0x006E,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065, 0x0072,0x0065,0x006E,0x0074,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0069,0x0065,0x0073,0x00 } , { 0x0058,0x004D,0x004C,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x00 } , { 0x0043,0x0044,0x0041,0x0054,0x0041,0x0020,0x0073,0x0065,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x006F,0x0075,0x0074,0x0073,0x0069,0x0064,0x0065,0x0020,0x0074,0x0068, 0x0065,0x0020,0x0072,0x006F,0x006F,0x0074,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x00 } , { 0x0075,0x006E,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0074,0x0072,0x0061,0x0069,0x006C,0x0069,0x006E,0x0067,0x0020,0x0073,0x0075,0x0072,0x0072,0x006F,0x0067,0x0061,0x0074,0x0065,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061, 0x0063,0x0074,0x0065,0x0072,0x00 } , { 0x0070,0x0072,0x006F,0x0063,0x0065,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x0069,0x006E,0x0073,0x0074,0x0072,0x0075,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0073,0x0074,0x0061,0x0072,0x0074, 0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0027,0x0078,0x006D,0x006C,0x0027,0x00 } , { 0x0058,0x004D,0x004C,0x0020,0x006F,0x0072,0x0020,0x0054,0x0045,0x0058,0x0054,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0073,0x0074,0x0061,0x0072,0x0074,0x0020, 0x0061,0x0074,0x0020,0x006C,0x0069,0x006E,0x0065,0x0020,0x0031,0x002C,0x0020,0x0063,0x006F,0x006C,0x0075,0x006D,0x006E,0x0020,0x0031,0x00 } , { 0x0076,0x0065,0x0072,0x0073,0x0069,0x006F,0x006E,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0072,0x0065,0x0071,0x0075,0x0069,0x0072,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020, 0x0058,0x004D,0x004C,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x0073,0x0074,0x0061,0x006E,0x0064,0x0061,0x006C,0x006F,0x006E,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x006C,0x0065,0x0067,0x0061, 0x006C,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x006D,0x0061,0x0069,0x006E,0x0020,0x0058,0x004D,0x004C,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x00 } , { 0x0065,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0072,0x0065,0x0071,0x0075,0x0069,0x0072,0x0065,0x0064,0x0020,0x0069,0x006E, 0x0020,0x0054,0x0045,0x0058,0x0054,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x0063,0x006F,0x006C,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0069,0x006E,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0020,0x0077,0x0068,0x0065,0x006E,0x0020,0x006E,0x0061,0x006D,0x0065, 0x0073,0x0070,0x0061,0x0063,0x0065,0x0073,0x0020,0x0061,0x0072,0x0065,0x0020,0x0065,0x006E,0x0061,0x0062,0x006C,0x0065,0x0064,0x00 } , { 0x007B,0x0030,0x007D,0x00 } , { 0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x004C,0x006F,0x0063,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0020,0x006E,0x0061,0x006D, 0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x002D,0x006C,0x006F,0x0063,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0070,0x0061,0x0069,0x0072,0x0073,0x00 } , { 0x0066,0x0061,0x0074,0x0061,0x006C,0x0020,0x0065,0x0072,0x0072,0x006F,0x0072,0x0020,0x0064,0x0075,0x0072,0x0069,0x006E,0x0067,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x0073,0x0063,0x0061,0x006E,0x00 } , { 0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0074,0x006F,0x0020,0x0065,0x0078,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072, 0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0069,0x006E,0x0020,0x0073,0x0074,0x0061,0x006E,0x0064,0x0061,0x006C,0x006F,0x006E, 0x0065,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x00 } , { 0x0070,0x0061,0x0072,0x0074,0x0069,0x0061,0x006C,0x0020,0x006D,0x0061,0x0072,0x006B,0x0075,0x0070,0x0020,0x0069,0x006E,0x0020,0x0070,0x0061,0x0072,0x0061,0x006D,0x0065,0x0074,0x0065,0x0072,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020, 0x0072,0x0065,0x0070,0x006C,0x0061,0x0063,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0074,0x0065,0x0078,0x0074,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0074,0x0065,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072, 0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0069,0x006E,0x0020,0x0070,0x0072,0x0065,0x0066,0x0069,0x0078,0x002D,0x006E, 0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x006D,0x0061,0x0070,0x0070,0x0069,0x006E,0x0067,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0070,0x0072,0x0065,0x0066,0x0069,0x0078,0x0020,0x0027,0x0078,0x006D,0x006C,0x006E,0x0073,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x0078,0x0070,0x006C,0x0069,0x0063,0x0069,0x0074,0x006C,0x0079, 0x0020,0x0062,0x006F,0x0075,0x006E,0x0064,0x0020,0x0074,0x006F,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x00 } , { 0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0066,0x006F,0x0072,0x0020,0x0027,0x0078,0x006D,0x006C,0x006E,0x0073,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x0078,0x0070, 0x006C,0x0069,0x0063,0x0069,0x0074,0x006C,0x0079,0x0020,0x0062,0x006F,0x0075,0x006E,0x0064,0x0020,0x0074,0x006F,0x0020,0x0070,0x0072,0x0065,0x0066,0x0069,0x0078,0x00 } , { 0x0070,0x0072,0x0065,0x0066,0x0069,0x0078,0x0020,0x0027,0x0078,0x006D,0x006C,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0062,0x006F,0x0075,0x006E,0x0064,0x0020,0x0074,0x006F,0x0020,0x006E,0x0061,0x006D, 0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x006F,0x0074,0x0068,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x0069,0x0074,0x0073,0x0020,0x0063,0x0061,0x006E,0x006F,0x006E,0x0069,0x0063,0x0061,0x006C,0x0020,0x006E,0x0061,0x006D, 0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x00 } , { 0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0066,0x006F,0x0072,0x0020,0x0027,0x0078,0x006D,0x006C,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0062,0x006F,0x0075,0x006E,0x0064, 0x0020,0x0074,0x006F,0x0020,0x0070,0x0072,0x0065,0x0066,0x0069,0x0078,0x0020,0x006F,0x0074,0x0068,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x0027,0x0078,0x006D,0x006C,0x0027,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0027,0x0078,0x006D,0x006C,0x006E,0x0073,0x0027,0x0020,0x0061, 0x0073,0x0020,0x0069,0x0074,0x0073,0x0020,0x0070,0x0072,0x0065,0x0066,0x0069,0x0078,0x00 } , { 0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0054,0x0079,0x0070,0x0065, 0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0072,0x006F,0x006F,0x0074,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0044,0x004F,0x0043,0x0054,0x0059, 0x0050,0x0045,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027, 0x00 } , { 0x0044,0x004F,0x0043,0x0054,0x0059,0x0050,0x0045,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0073,0x0065,0x0065,0x006E,0x00 } , { 0x0066,0x0061,0x006C,0x006C,0x0062,0x0061,0x0063,0x006B,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x0020,0x0064,0x0069,0x0072,0x0065,0x0063,0x0074,0x0020,0x0063,0x0068, 0x0069,0x006C,0x0064,0x0020,0x006F,0x0066,0x0020,0x0069,0x006E,0x0063,0x006C,0x0075,0x0064,0x0065,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x00 } , { 0x0069,0x006E,0x0063,0x006C,0x0075,0x0064,0x0065,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0077,0x0069,0x0074,0x0068,0x006F,0x0075,0x0074,0x0020,0x0027,0x0068,0x0072,0x0065,0x0066,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072, 0x0069,0x0062,0x0075,0x0074,0x0065,0x00 } , { 0x0069,0x006E,0x0063,0x006C,0x0075,0x0064,0x0065,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0058,0x0050,0x006F,0x0069,0x006E,0x0074,0x0065,0x0072,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069, 0x0066,0x0069,0x0063,0x0061,0x0074,0x0069,0x006F,0x006E,0x003B,0x0020,0x0058,0x0050,0x006F,0x0069,0x006E,0x0074,0x0065,0x0072,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0079,0x0065,0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F, 0x0072,0x0074,0x0065,0x0064,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0027,0x0070,0x0061,0x0072,0x0073,0x0065,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030, 0x007D,0x0027,0x003B,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x0074,0x0065,0x0078,0x0074,0x0027,0x0020,0x006F,0x0072,0x0020,0x0027,0x0078,0x006D,0x006C,0x0027,0x00 } , { 0x006D,0x0075,0x006C,0x0074,0x0069,0x0070,0x006C,0x0065,0x0020,0x0066,0x0061,0x006C,0x006C,0x0062,0x0061,0x0063,0x006B,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0073,0x0020,0x0069,0x006E,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D, 0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0069,0x006E,0x0063,0x006C,0x0075,0x0064,0x0065,0x0020,0x0066,0x0061,0x0069,0x006C,0x0065,0x0064,0x0020,0x0061,0x006E,0x0064,0x0020,0x006E,0x006F,0x0020,0x0066,0x0061,0x006C,0x006C,0x0062,0x0061,0x0063,0x006B,0x0020,0x0065,0x006C,0x0065,0x006D, 0x0065,0x006E,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x0020,0x0069,0x006E,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0063,0x0069,0x0072,0x0063,0x0075,0x006C,0x0061,0x0072,0x0020,0x0069,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D, 0x0027,0x00 } , { 0x0073,0x0065,0x006C,0x0066,0x002D,0x0069,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0061,0x0073,0x0020,0x0061,0x0020,0x0063, 0x0068,0x0069,0x006C,0x0064,0x0020,0x006F,0x0066,0x0020,0x0069,0x006E,0x0063,0x006C,0x0075,0x0064,0x0065,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x00 } , { 0x0069,0x006E,0x0063,0x006C,0x0075,0x0064,0x0065,0x0064,0x0020,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x006F,0x006E,0x0066,0x006C,0x0069,0x0063,0x0074,0x0073,0x0020,0x0077, 0x0069,0x0074,0x0068,0x0020,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0064,0x00 } , { 0x0069,0x006E,0x0063,0x006C,0x0075,0x0064,0x0065,0x0064,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x006F,0x006E,0x0066,0x006C,0x0069,0x0063,0x0074,0x0073,0x0020,0x0077,0x0069,0x0074, 0x0068,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0064,0x00 } , { 0x0046,0x005F,0x0045,0x006E,0x0064,0x00 } }; const unsigned int gXMLErrArraySize = 288; const XMLCh gXMLValidityArray[][128] = { { 0x0045,0x005F,0x0053,0x0074,0x0061,0x0072,0x0074,0x00 } , { 0x006E,0x006F,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x0020,0x0066,0x006F,0x0072,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B, 0x0030,0x007D,0x0027,0x00 } , { 0x006E,0x006F,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x0020,0x0066,0x006F,0x0072,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020, 0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0064,0x0020,0x0062,0x0075,0x0074,0x0020,0x0077,0x0061, 0x0073,0x0020,0x006E,0x0065,0x0076,0x0065,0x0072,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x00 } , { 0x0072,0x006F,0x006F,0x0074,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0073,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x0064,0x0065,0x0063,0x006C, 0x0061,0x0072,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0044,0x004F,0x0043,0x0054,0x0059,0x0050,0x0045,0x00 } , { 0x006D,0x0069,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x0072,0x0065,0x0071,0x0075,0x0069,0x0072,0x0065,0x0064,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0066,0x006F,0x0072,0x0020,0x0063,0x006F, 0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } , { 0x0049,0x0044,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0023,0x0049,0x004D,0x0050,0x004C,0x0049,0x0045,0x0044,0x0020,0x006F,0x0072,0x0020,0x0023,0x0052, 0x0045,0x0051,0x0055,0x0049,0x0052,0x0045,0x0044,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0062,0x0065,0x0065,0x006E,0x0020,0x0064,0x0065,0x0063,0x006C, 0x0061,0x0072,0x0065,0x0064,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x006D,0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x006E,0x0065,0x0020,0x0049,0x0044,0x0020, 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x00 } , { 0x0049,0x0044,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0062,0x0065,0x0065,0x006E,0x0020,0x0075,0x0073,0x0065, 0x0064,0x00 } , { 0x0049,0x0044,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0064,0x0020,0x0062,0x0075, 0x0074,0x0020,0x0077,0x0061,0x0073,0x0020,0x006E,0x0065,0x0076,0x0065,0x0072,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0073,0x0020,0x0074,0x006F,0x0020,0x0075,0x006E,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065, 0x0064,0x0020,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0044,0x004F,0x0043,0x0054,0x0059, 0x0050,0x0045,0x0020,0x0062,0x0075,0x0074,0x0020,0x0077,0x0061,0x0073,0x0020,0x006E,0x0065,0x0076,0x0065,0x0072,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x00 } , { 0x0065,0x006D,0x0070,0x0074,0x0079,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0066,0x006F,0x0072,0x0020,0x0063,0x006F,0x006E,0x0074, 0x0065,0x006E,0x0074,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x0066,0x006F,0x0072, 0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0066,0x006F,0x0072,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x006F,0x0066,0x0020, 0x0074,0x0079,0x0070,0x0065,0x0020,0x0045,0x004E,0x0054,0x0049,0x0054,0x0059,0x002F,0x0045,0x004E,0x0054,0x0049,0x0054,0x0049,0x0045,0x0053,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0020,0x0074,0x006F,0x0020, 0x0065,0x0078,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x002C,0x0020,0x0075,0x006E,0x0070,0x0061,0x0072,0x0073,0x0065,0x0064,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0073,0x0020,0x0074,0x006F,0x0020,0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0020,0x0065, 0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x006F,0x0066,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0049,0x0044,0x002F,0x0049,0x0044,0x0052,0x0045,0x0046,0x002F,0x0049,0x0044,0x0052,0x0045,0x0046,0x0053,0x002F,0x0045, 0x004E,0x0054,0x0049,0x0054,0x0059,0x002F,0x0045,0x004E,0x0054,0x0049,0x0054,0x0049,0x0045,0x0053,0x002F,0x004E,0x004F,0x0054,0x0041,0x0054,0x0049,0x004F,0x004E,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0063,0x006F,0x006E,0x0074, 0x0061,0x0069,0x006E,0x0020,0x0063,0x006F,0x006C,0x006F,0x006E,0x0020,0x0077,0x0068,0x0065,0x006E,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0073,0x0020,0x0061,0x0072,0x0065,0x0020,0x0065,0x006E,0x0061,0x0062,0x006C, 0x0065,0x0064,0x00 } , { 0x006D,0x0069,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0073,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x0020,0x0027, 0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x006E,0x006F,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0064,0x0061,0x0074,0x0061,0x0020,0x0069,0x0073,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x0063,0x006F,0x006E, 0x0074,0x0065,0x006E,0x0074,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x00 } , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0066,0x006F,0x0072,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0064,0x006F,0x0065, 0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0020,0x0069,0x0074,0x0073,0x0020,0x0074,0x0079,0x0070,0x0065,0x0027,0x0073,0x0020,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0064,0x0020,0x0065,0x006E,0x0075,0x006D, 0x0065,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0072,0x0020,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006C,0x0069,0x0073,0x0074,0x00 } , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0066,0x006F,0x0072,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020, 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x004E,0x0061,0x006D,0x0065,0x0020,0x006F,0x0072,0x0020,0x004E,0x004D,0x0054,0x004F,0x004B,0x0045,0x004E,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0020,0x006D,0x0075,0x006C,0x0074, 0x0069,0x0070,0x006C,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0073,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0074,0x0068,0x0061, 0x0074,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0020,0x0069,0x0074,0x0073,0x0020,0x0023,0x0046,0x0049,0x0058,0x0045,0x0044,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027, 0x007B,0x0032,0x007D,0x0027,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x0073,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0064,0x0075,0x0070,0x006C,0x0069,0x0063,0x0061,0x0074,0x0065,0x0064,0x0020, 0x0069,0x006E,0x0020,0x006D,0x0069,0x0078,0x0065,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x00 } , { 0x007B,0x0030,0x007D,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0065,0x0064,0x00 } , { 0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x007B,0x0031,0x007D,0x0020,0x0063,0x006F,0x006D, 0x0070,0x006F,0x0073,0x0069,0x0074,0x006F,0x0072,0x003B,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x002C,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x002C,0x0020,0x0063,0x0068,0x006F,0x0069,0x0063, 0x0065,0x002C,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x002C,0x0020,0x0061,0x006E,0x0064,0x0020,0x0061,0x006E,0x0079,0x0020,0x0061,0x0072,0x0065,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x00 } , { 0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x0020,0x0069,0x006E,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020, 0x0064,0x0065,0x0066,0x0069,0x006E,0x0069,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x007B,0x0030,0x007D,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0027,0x0072,0x0065,0x0066,0x0027,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074, 0x0065,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x00 } , { 0x007B,0x0030,0x007D,0x00 } , { 0x0070,0x0072,0x006F,0x0068,0x0069,0x0062,0x0069,0x0074,0x0065,0x0064,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0070,0x0072,0x0065,0x0073,0x0065, 0x006E,0x0074,0x00 } , { 0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0027,0x0078,0x006D,0x006C,0x003A,0x0073,0x0070,0x0061,0x0063,0x0065,0x0027,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0065,0x006E,0x0074, 0x0020,0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0074,0x0068,0x0065,0x0020,0x006F,0x006E,0x0065,0x0020,0x0073,0x0070,0x0065,0x0063, 0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0069,0x006E,0x0073,0x0074,0x0061,0x006E,0x0063,0x0065,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006F,0x0066,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0061,0x006E,0x0064, 0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0073,0x0020,0x0069,0x006E,0x0020,0x0069,0x0074,0x0073,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E, 0x0074,0x00 } , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x006E,0x0064,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0061,0x0074,0x006F,0x0072,0x0020,0x0066,0x006F,0x0072,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065, 0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0067,0x0072,0x0061,0x006D,0x006D,0x0061,0x0072,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x0020,0x0066,0x006F,0x0072,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0027,0x007B,0x0030, 0x007D,0x0027,0x00 } , { 0x007B,0x0030,0x007D,0x00 } , { 0x0027,0x0078,0x0073,0x0069,0x003A,0x006E,0x0069,0x006C,0x0027,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0066,0x006F,0x0072,0x0020,0x006E,0x006F,0x006E,0x002D,0x006E,0x0069,0x006C,0x006C,0x0061,0x0062,0x006C, 0x0065,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x0069,0x006C,0x0020,0x0061,0x006E,0x0064,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x006D, 0x0070,0x0074,0x0079,0x00 } , { 0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006F,0x0066,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0073,0x0020,0x0066,0x0072, 0x006F,0x006D,0x0020,0x0069,0x0074,0x0073,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x006E,0x0064,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0061,0x0074,0x006F,0x0072,0x0020,0x0066,0x006F,0x0072,0x0020,0x0073,0x0069,0x006D,0x0070,0x006C,0x0065, 0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0065,0x0072,0x0072,0x006F,0x0072,0x0020,0x0064,0x0075,0x0072,0x0069,0x006E,0x0067,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x0073,0x0063,0x0061,0x006E,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0071,0x0075,0x0061,0x006C,0x0069,0x0066,0x0069,0x0065,0x0064,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0075,0x006E,0x0071,0x0075,0x0061,0x006C,0x0069,0x0066,0x0069,0x0065,0x0064,0x00 } , { 0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0074,0x006F,0x0020,0x0065,0x0078,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072, 0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0073,0x0074,0x0061,0x006E,0x0064, 0x0061,0x006C,0x006F,0x006E,0x0065,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0068,0x0061, 0x0073,0x0020,0x0064,0x0065,0x0066,0x0061,0x0075,0x006C,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0061,0x006E,0x0064,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069, 0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0073,0x0074,0x0061,0x006E,0x0064,0x0061,0x006C,0x006F,0x006E,0x0065,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0063,0x0068,0x0061,0x006E,0x0067,0x0065,0x0064, 0x0020,0x0062,0x0079,0x0020,0x006E,0x006F,0x0072,0x006D,0x0061,0x006C,0x0069,0x007A,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0073,0x0074,0x0061,0x006E,0x0064,0x0061,0x006C,0x006F,0x006E,0x0065,0x0020,0x0064,0x006F,0x0063, 0x0075,0x006D,0x0065,0x006E,0x0074,0x00 } , { 0x0077,0x0068,0x0069,0x0074,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x006E,0x006F,0x0074,0x0020,0x006F,0x0063,0x0063,0x0075,0x0072,0x0020,0x0062,0x0065,0x0074,0x0077,0x0065,0x0065,0x006E,0x0020,0x0065, 0x0078,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x006C,0x0079,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0073,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0065,0x006C, 0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0069,0x006E,0x0020,0x0073,0x0074,0x0061,0x006E,0x0064,0x0061,0x006C,0x006F,0x006E,0x0065,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E, 0x0074,0x00 } , { 0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x00 } , { 0x0070,0x0061,0x0072,0x0074,0x0069,0x0061,0x006C,0x0020,0x006D,0x0061,0x0072,0x006B,0x0075,0x0070,0x0020,0x0069,0x006E,0x0020,0x0070,0x0061,0x0072,0x0061,0x006D,0x0065,0x0074,0x0065,0x0072,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020, 0x0072,0x0065,0x0070,0x006C,0x0061,0x0063,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0074,0x0065,0x0078,0x0074,0x00 } , { 0x0066,0x0061,0x0069,0x006C,0x0065,0x0064,0x0020,0x0074,0x006F,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0061,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0076,0x0069,0x006F,0x006C,0x0061,0x0074,0x0065,0x0073,0x0020,0x0074,0x0068,0x0065,0x0020,0x0075,0x006E,0x0069, 0x0071,0x0075,0x0065,0x0020,0x0070,0x0061,0x0072,0x0074,0x0069,0x0063,0x006C,0x0065,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0069,0x006F,0x006E,0x0020,0x0072,0x0075,0x006C,0x0065,0x0020,0x0069,0x006E,0x0020,0x0069,0x0074, 0x0073,0x0020,0x0063,0x006F,0x006D,0x0070,0x006F,0x006E,0x0065,0x006E,0x0074,0x0073,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0061,0x006E,0x0064,0x0020,0x0027,0x007B,0x0032,0x007D,0x0027,0x00 } , { 0x0061,0x0062,0x0073,0x0074,0x0072,0x0061,0x0063,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0075,0x0073,0x0065,0x0064,0x0020, 0x0069,0x006E,0x0020,0x0027,0x0078,0x0073,0x0069,0x003A,0x0074,0x0079,0x0070,0x0065,0x0027,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0061,0x0062,0x0073,0x0074,0x0072,0x0061,0x0063,0x0074,0x003B,0x0020,0x0075,0x0073,0x0065,0x0020,0x006E,0x006F,0x006E,0x002D, 0x0061,0x0062,0x0073,0x0074,0x0072,0x0061,0x0063,0x0074,0x0020,0x006D,0x0065,0x006D,0x0062,0x0065,0x0072,0x0020,0x006F,0x0066,0x0020,0x0069,0x0074,0x0073,0x0020,0x0073,0x0075,0x0062,0x0073,0x0074,0x0069,0x0074,0x0075,0x0074,0x0069,0x006F,0x006E, 0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0069,0x006E,0x0073,0x0074,0x0065,0x0061,0x0064,0x00 } , { 0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0061,0x0062,0x0073,0x0074,0x0072,0x0061,0x0063,0x0074,0x003B,0x0020, 0x0075,0x0073,0x0065,0x0020,0x0027,0x0078,0x0073,0x0069,0x003A,0x0074,0x0079,0x0070,0x0065,0x0027,0x0020,0x0074,0x006F,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0079,0x0020,0x006E,0x006F,0x006E,0x002D,0x0061,0x0062,0x0073,0x0074,0x0072, 0x0061,0x0063,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0069,0x006E,0x0073,0x0074,0x0065,0x0061,0x0064,0x00 } , { 0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0027,0x0078,0x0073,0x0069,0x003A,0x0074,0x0079,0x0070,0x0065,0x0027,0x0020, 0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0072,0x0065,0x0073,0x006F,0x006C,0x0076,0x0065,0x0064,0x00 } , { 0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0027,0x0078,0x0073,0x0069,0x003A,0x0074,0x0079,0x0070,0x0065,0x0027,0x0020, 0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E, 0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0070,0x0065,0x0072,0x006D,0x0069,0x0074,0x0020,0x0073,0x0075,0x0062,0x0073,0x0074, 0x0069,0x0074,0x0075,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0070,0x0065,0x0072,0x006D,0x0069,0x0074,0x0020, 0x0073,0x0075,0x0062,0x0073,0x0074,0x0069,0x0074,0x0075,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0071,0x0075,0x0061,0x006C,0x0069,0x0066,0x0069,0x0065,0x0064,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0075,0x006E,0x0071,0x0075,0x0061,0x006C,0x0069,0x0066,0x0069,0x0065,0x0064, 0x00 } , { 0x0069,0x0064,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x0020,0x0066,0x0069,0x0065,0x006C,0x0064,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0065,0x0073,0x0020,0x006D, 0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x006E,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0077,0x0069,0x0074,0x0068,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073,0x0063,0x006F,0x0070,0x0065, 0x0020,0x006F,0x0066,0x0020,0x0069,0x0074,0x0073,0x0020,0x0073,0x0065,0x006C,0x0065,0x0063,0x0074,0x006F,0x0072,0x003B,0x0020,0x0066,0x0069,0x0065,0x006C,0x0064,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0020, 0x0075,0x006E,0x0069,0x0071,0x0075,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } , { 0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0020,0x0069,0x0064,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x0020,0x0066,0x0069,0x0065,0x006C,0x0064,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0069,0x0064,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0061,0x0069, 0x006E,0x0074,0x0020,0x006B,0x0065,0x0079,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x006E,0x006F,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0065,0x006E,0x006F,0x0075,0x0067,0x0068,0x0020, 0x0076,0x0061,0x006C,0x0075,0x0065,0x0073,0x0020,0x0066,0x006F,0x0072,0x0020,0x0069,0x0064,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x0020,0x006B,0x0065,0x0079,0x0020, 0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0073,0x0020,0x0069,0x0064,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x006F,0x006E, 0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x0020,0x006B,0x0065,0x0079,0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0065,0x0073,0x0020,0x006E,0x0069,0x006C,0x006C,0x0061,0x0062,0x006C,0x0065,0x0020,0x0065, 0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0073,0x0020,0x0064,0x0075,0x0070,0x006C,0x0069,0x0063,0x0061,0x0074,0x0065,0x0020,0x0069,0x0064, 0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x0020,0x0075,0x006E,0x0069,0x0071,0x0075,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0073,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0073,0x0020,0x0064,0x0075,0x0070,0x006C,0x0069,0x0063,0x0061,0x0074,0x0065,0x0020,0x0069,0x0064, 0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x0020,0x006B,0x0065,0x0079,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0073,0x00 } , { 0x006B,0x0065,0x0079,0x0072,0x0065,0x0066,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0073,0x0020,0x0074,0x006F,0x0020,0x006F,0x0075,0x0074,0x0020,0x006F,0x0066,0x0020,0x0073,0x0063,0x006F,0x0070,0x0065, 0x0020,0x006B,0x0065,0x0079,0x002F,0x0075,0x006E,0x0069,0x0071,0x0075,0x0065,0x00 } , { 0x0069,0x0064,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x0020,0x006B,0x0065,0x0079,0x0020,0x0066,0x006F,0x0072,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074, 0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x00 } , { 0x006E,0x006F,0x006E,0x002D,0x0077,0x0068,0x0069,0x0074,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0073,0x0020,0x0061,0x0072,0x0065,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061, 0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0073,0x0020,0x006F,0x0074,0x0068,0x0065,0x0072, 0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x0061,0x0070,0x0070,0x0069,0x006E,0x0066,0x006F,0x0020,0x0061,0x006E,0x0064,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x0045,0x004D,0x0050,0x0054,0x0059,0x0020,0x0062,0x0075,0x0074,0x0020,0x0068,0x0061, 0x0073,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x006F,0x0066,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x004E,0x004F,0x0054,0x0041,0x0054,0x0049,0x004F,0x004E,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0065,0x0064,0x0020,0x0045,0x004D,0x0050,0x0054,0x0059,0x0020,0x0061,0x006E,0x0064,0x0020,0x0063,0x0061, 0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x002C,0x0020,0x006E,0x006F,0x0074,0x0020,0x0065,0x0076,0x0065,0x006E,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020, 0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0073,0x002C,0x0020,0x0063,0x006F,0x006D,0x006D,0x0065,0x006E,0x0074,0x0073,0x002C,0x0020,0x0050,0x0049,0x0073,0x002C,0x0020,0x006F,0x0072,0x0020,0x0077,0x0068,0x0069,0x0074,0x0065, 0x0073,0x0070,0x0061,0x0063,0x0065,0x0073,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x006D,0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x006E,0x0065,0x0020,0x0061,0x0074,0x0074, 0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x006F,0x0066,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x004E,0x004F,0x0054,0x0041,0x0054,0x0049,0x004F,0x004E,0x00 } , { 0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x006E,0x006F,0x006E,0x002D,0x0064,0x0069,0x0073,0x0074,0x0069,0x006E,0x0063,0x0074,0x0020,0x0074,0x006F, 0x006B,0x0065,0x006E,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } , { 0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x0020,0x006F,0x0066,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x006F,0x0065,0x0073, 0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0020,0x0065,0x0073,0x0063,0x0061,0x0070,0x0065,0x0064,0x0020,0x0077,0x0068,0x0069,0x0074,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0073,0x00 } , { 0x0045,0x005F,0x0045,0x006E,0x0064,0x00 } }; const unsigned int gXMLValidityArraySize = 84; const XMLCh gXMLExceptArray[][128] = { { 0x0057,0x005F,0x0053,0x0074,0x0061,0x0072,0x0074,0x00 } , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x006F,0x0070,0x0065,0x006E,0x0020,0x0070,0x0072,0x0069,0x006D,0x0061,0x0072,0x0079,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x0065,0x006E,0x0074, 0x0069,0x0074,0x0079,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0057,0x005F,0x0045,0x006E,0x0064,0x00 } , { 0x0046,0x005F,0x0053,0x0074,0x0061,0x0072,0x0074,0x00 } , { 0x0069,0x006E,0x0064,0x0065,0x0078,0x0020,0x0069,0x0073,0x0020,0x0062,0x0065,0x0079,0x006F,0x006E,0x0064,0x0020,0x0061,0x0072,0x0072,0x0061,0x0079,0x0020,0x0062,0x006F,0x0075,0x006E,0x0064,0x0073,0x00 } , { 0x006E,0x0065,0x0077,0x0020,0x0061,0x0072,0x0072,0x0061,0x0079,0x0020,0x0073,0x0069,0x007A,0x0065,0x0020,0x0069,0x0073,0x0020,0x006C,0x0065,0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x006F,0x006C,0x0064, 0x00 } , { 0x0069,0x006E,0x0064,0x0065,0x0078,0x0020,0x0069,0x0073,0x0020,0x0062,0x0065,0x0079,0x006F,0x006E,0x0064,0x0020,0x006D,0x0061,0x0078,0x0069,0x006D,0x0075,0x006D,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x0069, 0x006E,0x0064,0x0065,0x0078,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0041,0x0074,0x0074,0x0054,0x0079,0x0070,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0044,0x0065,0x0066,0x0041,0x0074,0x0074,0x0054,0x0079,0x0070,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } , { 0x0062,0x0069,0x0074,0x0020,0x0069,0x006E,0x0064,0x0065,0x0078,0x0020,0x0069,0x0073,0x0020,0x0062,0x0065,0x0079,0x006F,0x006E,0x0064,0x0020,0x0073,0x0065,0x0074,0x0020,0x0073,0x0069,0x007A,0x0065,0x00 } , { 0x0062,0x0069,0x0074,0x0020,0x0073,0x0065,0x0074,0x0073,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0065,0x006E,0x0074,0x0020,0x0073,0x0069,0x007A,0x0065,0x0073,0x00 } , { 0x006E,0x006F,0x0020,0x006D,0x006F,0x0072,0x0065,0x0020,0x0062,0x0075,0x0066,0x0066,0x0065,0x0072,0x0073,0x0020,0x0061,0x0076,0x0061,0x0069,0x006C,0x0061,0x0062,0x006C,0x0065,0x00 } , { 0x0062,0x0075,0x0066,0x0066,0x0065,0x0072,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x006D,0x0061,0x006E,0x0061,0x0067,0x0065,0x0072,0x0027, 0x0073,0x0020,0x0070,0x006F,0x006F,0x006C,0x00 } , { 0x004E,0x0055,0x004C,0x004C,0x0020,0x0070,0x006F,0x0069,0x006E,0x0074,0x0065,0x0072,0x00 } , { 0x0062,0x0069,0x006E,0x0061,0x0072,0x0079,0x0020,0x006F,0x0070,0x0065,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006E,0x006F,0x0064,0x0065,0x0020,0x0068,0x0061,0x0073,0x0020,0x0075,0x006E,0x0061,0x0072,0x0079,0x0020,0x006E,0x006F,0x0064, 0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x00 } , { 0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006D,0x0069,0x0078,0x0065,0x0064,0x0020,0x006F,0x0072,0x0020,0x0063,0x0068,0x0069,0x006C,0x0064, 0x0072,0x0065,0x006E,0x00 } , { 0x0050,0x0043,0x0044,0x0041,0x0054,0x0041,0x0020,0x006E,0x006F,0x0064,0x0065,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0069,0x0073,0x0020,0x0070,0x006F,0x0069,0x006E, 0x0074,0x00 } , { 0x0075,0x006E,0x0061,0x0072,0x0079,0x0020,0x006F,0x0070,0x0065,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006E,0x006F,0x0064,0x0065,0x0020,0x0068,0x0061,0x0073,0x0020,0x0062,0x0069,0x006E,0x0061,0x0072,0x0079,0x0020,0x006E,0x006F,0x0064, 0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x00 } , { 0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x006D,0x006F,0x0064,0x0065,0x006C,0x0020,0x0074,0x0079,0x0070,0x0065,0x00 } , { 0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0073,0x0070,0x0065,0x0063,0x0020,0x0074,0x0079,0x0070,0x0065,0x00 } , { 0x0070,0x0061,0x0072,0x0065,0x006E,0x0074,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0068,0x0061,0x0073,0x0020,0x006E,0x006F,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0073,0x0070,0x0065,0x0063,0x0020, 0x006E,0x006F,0x0064,0x0065,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0073,0x0070,0x0065,0x0063,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0066,0x006F,0x0072,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0020,0x0063,0x0072,0x0065,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0072,0x0065,0x0061,0x0073,0x006F,0x006E,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0073,0x0074,0x0061,0x0063,0x006B,0x0020,0x0069,0x0073,0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x00 } , { 0x0070,0x006F,0x0070,0x0020,0x006F,0x0070,0x0065,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0072,0x0065,0x0071,0x0075,0x0065,0x0073,0x0074,0x0065,0x0064,0x0020,0x006F,0x006E,0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x0020,0x0073,0x0074, 0x0061,0x0063,0x006B,0x00 } , { 0x0070,0x0061,0x0072,0x0065,0x006E,0x0074,0x0020,0x006F,0x0070,0x0065,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0072,0x0065,0x0071,0x0075,0x0065,0x0073,0x0074,0x0065,0x0064,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x006F,0x006E,0x006C, 0x0079,0x0020,0x006F,0x006E,0x0065,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0069,0x006E,0x0020,0x0073,0x0074,0x0061,0x0063,0x006B,0x00 } , { 0x006E,0x006F,0x0020,0x006D,0x006F,0x0072,0x0065,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0073,0x0020,0x0069,0x006E,0x0020,0x0065,0x006E,0x0075,0x006D,0x0065,0x0072,0x0061,0x0074,0x006F,0x0072,0x00 } , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x006F,0x0070,0x0065,0x006E,0x0020,0x0066,0x0069,0x006C,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0071,0x0075,0x0065,0x0072,0x0079,0x0020,0x0066,0x0069,0x006C,0x0065,0x0020,0x0070,0x006F,0x0073,0x0069,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0063,0x006C,0x006F,0x0073,0x0065,0x0020,0x0066,0x0069,0x006C,0x0065,0x00 } , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0073,0x0065,0x0065,0x006B,0x0020,0x0074,0x006F,0x0020,0x0074,0x0068,0x0065,0x0020,0x0065,0x006E,0x0064,0x0020,0x006F,0x0066,0x0020,0x0066,0x0069,0x006C,0x0065,0x00 } , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0073,0x0065,0x0065,0x006B,0x0020,0x0074,0x006F,0x0020,0x0074,0x0068,0x0065,0x0020,0x0072,0x0065,0x0071,0x0075,0x0069,0x0072,0x0065,0x0064,0x0020,0x0070,0x006F,0x0073,0x0069, 0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x006E,0x0020,0x0066,0x0069,0x006C,0x0065,0x00 } , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0064,0x0075,0x0070,0x006C,0x0069,0x0063,0x0061,0x0074,0x0065,0x0020,0x0068,0x0061,0x006E,0x0064,0x006C,0x0065,0x00 } , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0072,0x0065,0x0061,0x0064,0x0020,0x0064,0x0061,0x0074,0x0061,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0066,0x0069,0x006C,0x0065,0x00 } , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0077,0x0072,0x0069,0x0074,0x0065,0x0020,0x0064,0x0061,0x0074,0x0061,0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x006C,0x0065,0x00 } , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0072,0x0065,0x0073,0x0065,0x0074,0x0020,0x0066,0x0069,0x006C,0x0065,0x0020,0x0070,0x006F,0x0073,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x0074,0x006F,0x0020,0x0074,0x0068, 0x0065,0x0020,0x0062,0x0065,0x0067,0x0069,0x006E,0x006E,0x0069,0x006E,0x0067,0x00 } , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0067,0x0065,0x0074,0x0020,0x0066,0x0069,0x006C,0x0065,0x0020,0x0073,0x0069,0x007A,0x0065,0x00 } , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0064,0x0065,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0065,0x0020,0x0066,0x0069,0x006C,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0070,0x0061,0x0074,0x0068,0x006E, 0x0061,0x006D,0x0065,0x00 } , { 0x0070,0x0061,0x0072,0x0073,0x0069,0x006E,0x0067,0x0020,0x0069,0x006E,0x0020,0x0070,0x0072,0x006F,0x0067,0x0072,0x0065,0x0073,0x0073,0x00 } , { 0x0044,0x004F,0x0043,0x0054,0x0059,0x0050,0x0045,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0077,0x0061,0x0073,0x0020,0x0073,0x0065,0x0065,0x006E,0x0020,0x0062,0x0075,0x0074,0x0020,0x0069,0x006E, 0x0073,0x0074,0x0061,0x006C,0x006C,0x0065,0x0064,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0061,0x0074,0x006F,0x0072,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0020, 0x0044,0x0054,0x0044,0x00 } , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x006F,0x0070,0x0065,0x006E,0x0020,0x0044,0x0054,0x0044,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x006F,0x0070,0x0065,0x006E,0x0020,0x0065,0x0078,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0027,0x007B,0x0030,0x007D, 0x0027,0x00 } , { 0x0075,0x006E,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0065,0x006E,0x0064,0x0020,0x006F,0x0066,0x0020,0x0069,0x006E,0x0070,0x0075,0x0074,0x00 } , { 0x007A,0x0065,0x0072,0x006F,0x0020,0x0068,0x0061,0x0073,0x0068,0x0020,0x006D,0x006F,0x0064,0x0075,0x006C,0x0075,0x0073,0x00 } , { 0x0068,0x0061,0x0073,0x0068,0x0069,0x006E,0x0067,0x0020,0x006B,0x0065,0x0079,0x0020,0x0070,0x0072,0x006F,0x0064,0x0075,0x0063,0x0065,0x0064,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0068,0x0061,0x0073,0x0068,0x00 } , { 0x006E,0x006F,0x0020,0x0073,0x0075,0x0063,0x0068,0x0020,0x006B,0x0065,0x0079,0x0020,0x0069,0x006E,0x0020,0x0068,0x0061,0x0073,0x0068,0x0020,0x0074,0x0061,0x0062,0x006C,0x0065,0x00 } , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0064,0x0065,0x0073,0x0074,0x0072,0x006F,0x0079,0x0020,0x006D,0x0075,0x0074,0x0065,0x0078,0x00 } , { 0x0069,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0065,0x0072,0x0072,0x006F,0x0072,0x0020,0x0069,0x006E,0x0020,0x004E,0x0065,0x0074,0x0041,0x0063,0x0063,0x0065,0x0073,0x0073,0x006F,0x0072,0x00 } , { 0x004E,0x0065,0x0074,0x0041,0x0063,0x0063,0x0065,0x0073,0x0073,0x006F,0x0072,0x0020,0x0069,0x0073,0x0020,0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0064,0x0065,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0065,0x0020, 0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x006F,0x0066,0x0020,0x0072,0x0065,0x006D,0x006F,0x0074,0x0065,0x0020,0x0066,0x0069,0x006C,0x0065,0x00 } , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0069,0x006E,0x0069,0x0074,0x0069,0x0061,0x006C,0x0069,0x007A,0x0065,0x0020,0x004E,0x0065,0x0074,0x0041,0x0063,0x0063,0x0065,0x0073,0x0073,0x006F,0x0072,0x00 } , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0072,0x0065,0x0073,0x006F,0x006C,0x0076,0x0065,0x0020,0x0068,0x006F,0x0073,0x0074,0x002F,0x0061,0x0064,0x0064,0x0072,0x0065,0x0073,0x0073,0x0020,0x0027,0x007B,0x0030,0x007D, 0x0027,0x00 } , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0063,0x0072,0x0065,0x0061,0x0074,0x0065,0x0020,0x0073,0x006F,0x0063,0x006B,0x0065,0x0074,0x0020,0x0066,0x006F,0x0072,0x0020,0x0055,0x0052,0x004C,0x0020,0x0027,0x007B,0x0030, 0x007D,0x0027,0x00 } , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0063,0x006F,0x006E,0x006E,0x0065,0x0063,0x0074,0x0020,0x0073,0x006F,0x0063,0x006B,0x0065,0x0074,0x0020,0x0066,0x006F,0x0072,0x0020,0x0055,0x0052,0x004C,0x0020,0x0027,0x007B, 0x0030,0x007D,0x0027,0x00 } , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0077,0x0072,0x0069,0x0074,0x0065,0x0020,0x0074,0x006F,0x0020,0x0073,0x006F,0x0063,0x006B,0x0065,0x0074,0x0020,0x0066,0x006F,0x0072,0x0020,0x0055,0x0052,0x004C,0x0020,0x0027, 0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0072,0x0065,0x0061,0x0064,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0073,0x006F,0x0063,0x006B,0x0065,0x0074,0x0020,0x0066,0x006F,0x0072,0x0020,0x0055,0x0052,0x004C,0x0020, 0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0048,0x0054,0x0054,0x0050,0x0020,0x006D,0x0065,0x0074,0x0068,0x006F,0x0064,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072, 0x0074,0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x004E,0x0065,0x0074,0x0041,0x0063,0x0063,0x0065,0x0073,0x0073,0x006F,0x0072,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0069,0x006E,0x0020,0x0070,0x006F,0x006F,0x006C,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0070,0x006F,0x006F,0x006C,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0069,0x0064,0x00 } , { 0x007A,0x0065,0x0072,0x006F,0x0020,0x0068,0x0061,0x0073,0x0068,0x0020,0x006D,0x006F,0x0064,0x0075,0x006C,0x0075,0x0073,0x00 } , { 0x0072,0x0065,0x0061,0x0064,0x0065,0x0072,0x0020,0x0069,0x0064,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0061,0x0075,0x0074,0x006F,0x0020,0x0065,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0064,0x0065,0x0063,0x006F,0x0064,0x0065,0x0020,0x0066,0x0069,0x0072,0x0073,0x0074,0x0020,0x006C,0x0069,0x006E,0x0065,0x0020,0x0069,0x006E,0x0020,0x0065,0x006E,0x0074,0x0069, 0x0074,0x0079,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0058,0x004D,0x004C,0x0020,0x006F,0x0072,0x0020,0x0054,0x0045,0x0058,0x0054,0x0020,0x0064,0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F, 0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x004E,0x0045,0x004C,0x0020,0x006F,0x0072,0x0020,0x006C,0x0073,0x0065,0x0070,0x00 } , { 0x0063,0x0075,0x0072,0x0072,0x0065,0x006E,0x0074,0x0020,0x0074,0x0072,0x0061,0x006E,0x0073,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x0020,0x0073,0x0065,0x0072,0x0076,0x0069,0x0063,0x0065,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F, 0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0020,0x0073,0x006F,0x0075,0x0072,0x0063,0x0065,0x0020,0x006F,0x0066,0x0066,0x0073,0x0065,0x0074,0x0020,0x0069,0x006E,0x0066,0x006F,0x0072,0x006D,0x0061,0x0074,0x0069,0x006F,0x006E, 0x00 } , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0020,0x0066,0x0069,0x006C,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0070,0x0072,0x006F,0x0076,0x0069,0x0064,0x0065,0x0020,0x0065,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x0020,0x0064, 0x0065,0x0063,0x006C,0x0061,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x006F,0x0070,0x0065,0x006E,0x0020,0x0070,0x0072,0x0069,0x006D,0x0061,0x0072,0x0079,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x0065,0x006E,0x0074, 0x0069,0x0074,0x0079,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0075,0x006E,0x0062,0x0061,0x006C,0x0061,0x006E,0x0063,0x0065,0x0064,0x0020,0x0073,0x0074,0x0061,0x0072,0x0074,0x002F,0x0065,0x006E,0x0064,0x0020,0x0074,0x0061,0x0067,0x0073,0x00 } , { 0x0063,0x0061,0x006C,0x006C,0x0020,0x0074,0x006F,0x0020,0x0073,0x0063,0x0061,0x006E,0x004E,0x0065,0x0078,0x0074,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0069,0x0073, 0x0020,0x0070,0x006F,0x0069,0x006E,0x0074,0x00 } , { 0x0069,0x006E,0x0064,0x0065,0x0078,0x0020,0x0069,0x0073,0x0020,0x0070,0x0061,0x0073,0x0074,0x0020,0x0074,0x006F,0x0070,0x0020,0x006F,0x0066,0x0020,0x0073,0x0074,0x0061,0x0063,0x006B,0x00 } , { 0x0065,0x006D,0x0070,0x0074,0x0079,0x0020,0x0073,0x0074,0x0061,0x0063,0x006B,0x00 } , { 0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x0020,0x0062,0x0075,0x0066,0x0066,0x0065,0x0072,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x007A,0x0065,0x0072,0x006F,0x0020,0x006D,0x0061,0x0078,0x0020, 0x0073,0x0069,0x007A,0x0065,0x00 } , { 0x0075,0x006E,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0065,0x0064,0x0020,0x0072,0x0061,0x0064,0x0069,0x0078,0x003B,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0032,0x002C,0x0020,0x0038,0x002C,0x0020,0x0031, 0x0030,0x002C,0x0020,0x006F,0x0072,0x0020,0x0031,0x0036,0x00 } , { 0x0074,0x0061,0x0072,0x0067,0x0065,0x0074,0x0020,0x0062,0x0075,0x0066,0x0066,0x0065,0x0072,0x0020,0x0069,0x0073,0x0020,0x0074,0x006F,0x006F,0x0020,0x0073,0x006D,0x0061,0x006C,0x006C,0x00 } , { 0x0073,0x0074,0x0061,0x0072,0x0074,0x0020,0x0069,0x006E,0x0064,0x0065,0x0078,0x0020,0x0069,0x0073,0x0020,0x0070,0x0061,0x0073,0x0074,0x0020,0x0074,0x0068,0x0065,0x0020,0x0065,0x006E,0x0064,0x0020,0x006F,0x0066,0x0020,0x0073,0x0074,0x0072,0x0069, 0x006E,0x0067,0x00 } , { 0x0073,0x0074,0x0072,0x0069,0x006E,0x0067,0x0020,0x0072,0x0065,0x0070,0x0072,0x0065,0x0073,0x0065,0x006E,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0076,0x0065,0x0072,0x0066,0x006C,0x006F,0x0077,0x0073,0x0020,0x006F,0x0075,0x0074, 0x0070,0x0075,0x0074,0x0020,0x0062,0x0069,0x006E,0x0061,0x0072,0x0079,0x0020,0x0072,0x0065,0x0073,0x0075,0x006C,0x0074,0x00 } , { 0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0073,0x0074,0x0072,0x0069,0x006E,0x0067,0x0020,0x0070,0x006F,0x006F,0x006C,0x0020,0x0069,0x0064,0x00 } , { 0x0063,0x0068,0x0061,0x0072,0x0020,0x0030,0x0078,0x007B,0x0030,0x007D,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0072,0x0065,0x0070,0x0072,0x0065,0x0073,0x0065,0x006E,0x0074,0x0061,0x0062,0x006C,0x0065,0x0020,0x0069,0x006E,0x0020, 0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0065,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006D,0x0075,0x006C,0x0074,0x0069,0x002D,0x0062,0x0079,0x0074,0x0065,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x00 } , { 0x0063,0x006F,0x0064,0x0065,0x0020,0x0070,0x006F,0x0069,0x006E,0x0074,0x0020,0x0030,0x0078,0x007B,0x0030,0x007D,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0066,0x006F,0x0072,0x0020,0x0027,0x007B,0x0031, 0x007D,0x0027,0x0020,0x0065,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x00 } , { 0x006C,0x0065,0x0061,0x0064,0x0069,0x006E,0x0067,0x0020,0x0073,0x0075,0x0072,0x0072,0x006F,0x0067,0x0061,0x0074,0x0065,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C, 0x0069,0x0064,0x0020,0x0074,0x0072,0x0061,0x0069,0x006C,0x0069,0x006E,0x0067,0x0020,0x0073,0x0075,0x0072,0x0072,0x006F,0x0067,0x0061,0x0074,0x0065,0x00 } , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0063,0x0072,0x0065,0x0061,0x0074,0x0065,0x0020,0x0063,0x006F,0x006E,0x0076,0x0065,0x0072,0x0074,0x0065,0x0072,0x0020,0x0066,0x006F,0x0072,0x0020,0x0027,0x007B,0x0030,0x007D, 0x0027,0x0020,0x0065,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x00 } , { 0x006D,0x0061,0x006C,0x0066,0x006F,0x0072,0x006D,0x0065,0x0064,0x0020,0x0055,0x0052,0x004C,0x00 } , { 0x0075,0x006E,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0065,0x0064,0x0020,0x0070,0x0072,0x006F,0x0074,0x006F,0x0063,0x006F,0x006C,0x0020,0x0069,0x006E,0x0020,0x0055,0x0052,0x004C,0x00 } , { 0x0055,0x0052,0x004C,0x0020,0x0070,0x0072,0x006F,0x0074,0x006F,0x0063,0x006F,0x006C,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0075,0x006E,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0065,0x0064,0x00 } , { 0x006D,0x0069,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x0070,0x0072,0x006F,0x0074,0x006F,0x0063,0x006F,0x006C,0x0020,0x0070,0x0072,0x0065,0x0066,0x0069,0x0078,0x00 } , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x002F,0x002F,0x0027,0x0020,0x0061,0x0066,0x0074,0x0065,0x0072,0x0020,0x0070,0x0072,0x006F,0x0074,0x006F,0x0063,0x006F,0x006C,0x00 } , { 0x0062,0x0061,0x0073,0x0065,0x0020,0x0070,0x0061,0x0072,0x0074,0x0020,0x006F,0x0066,0x0020,0x0055,0x0052,0x004C,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0072,0x0065,0x006C,0x0061,0x0074,0x0069,0x0076,0x0065, 0x00 } , { 0x0070,0x006F,0x0072,0x0074,0x0020,0x0066,0x0069,0x0065,0x006C,0x0064,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0031,0x0036,0x002D,0x0062,0x0069,0x0074,0x0020,0x0064,0x0065,0x0063,0x0069,0x006D,0x0061,0x006C,0x0020,0x006E, 0x0075,0x006D,0x0062,0x0065,0x0072,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0062,0x0079,0x0074,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0061,0x0074,0x0020,0x0070,0x006F,0x0073,0x0069,0x0074,0x0069,0x006F,0x006E,0x0020,0x007B,0x0030,0x007D,0x0020, 0x006F,0x0066,0x0020,0x0061,0x0020,0x007B,0x0032,0x007D,0x002D,0x0062,0x0079,0x0074,0x0065,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0062,0x0079,0x0074,0x0065,0x0073,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0061,0x006E,0x0064,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x006F,0x0066,0x0020,0x0061,0x0020, 0x0033,0x002D,0x0062,0x0079,0x0074,0x0065,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x00 } , { 0x0069,0x0072,0x0072,0x0065,0x0067,0x0075,0x006C,0x0061,0x0072,0x0020,0x0062,0x0079,0x0074,0x0065,0x0073,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0061,0x006E,0x0064,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x006F,0x0066,0x0020, 0x0061,0x0020,0x0033,0x002D,0x0062,0x0079,0x0074,0x0065,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0062,0x0079,0x0074,0x0065,0x0073,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0061,0x006E,0x0064,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x006F,0x0066,0x0020,0x0061,0x0020, 0x0034,0x002D,0x0062,0x0079,0x0074,0x0065,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x00 } , { 0x0065,0x0078,0x0063,0x0065,0x0065,0x0064,0x0065,0x0064,0x0020,0x0062,0x0079,0x0074,0x0065,0x0020,0x006C,0x0069,0x006D,0x0069,0x0074,0x0020,0x0061,0x0074,0x0020,0x0062,0x0079,0x0074,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069, 0x006E,0x0020,0x0061,0x0020,0x007B,0x0031,0x007D,0x002D,0x0062,0x0079,0x0074,0x0065,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x00 } , { 0x0069,0x006E,0x0064,0x0065,0x0078,0x0020,0x0069,0x0073,0x0020,0x0062,0x0065,0x0079,0x006F,0x006E,0x0064,0x0020,0x0076,0x0065,0x0063,0x0074,0x006F,0x0072,0x0020,0x0062,0x006F,0x0075,0x006E,0x0064,0x0073,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0069,0x0064,0x00 } , { 0x0069,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0073,0x0075,0x0062,0x0073,0x0065,0x0074,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0077,0x0068,0x0065,0x006E, 0x0020,0x0072,0x0065,0x0075,0x0073,0x0069,0x006E,0x0067,0x0020,0x0074,0x0068,0x0065,0x0020,0x0067,0x0072,0x0061,0x006D,0x006D,0x0061,0x0072,0x00 } , { 0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0020,0x0072,0x0065,0x0063,0x006F,0x0067,0x006E,0x0069,0x007A,0x0065,0x0072,0x0020,0x0065,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x00 } , { 0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0061,0x0074,0x0020,0x006F,0x0066,0x0066,0x0073,0x0065,0x0074,0x0020,0x007B,0x0030,0x007D,0x0020,0x0069,0x006E,0x0020, 0x0072,0x0065,0x0067,0x0075,0x006C,0x0061,0x0072,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x006E,0x0075,0x006D,0x0062,0x0065,0x0072,0x00 } , { 0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0061,0x0066,0x0074,0x0065,0x0072,0x0020,0x0062,0x0061,0x0063,0x006B,0x0073,0x006C,0x0061,0x0073,0x0068,0x00 } , { 0x0075,0x006E,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x003F,0x0027,0x003B,0x0020,0x0027,0x0028,0x003F,0x003A,0x0027,0x002C,0x0020,0x0027,0x0028,0x003F,0x003D,0x0027,0x002C,0x0020,0x0027,0x0028,0x003F,0x0021,0x0027, 0x002C,0x0020,0x0027,0x0028,0x003F,0x003C,0x0027,0x002C,0x0020,0x0027,0x0028,0x003F,0x0023,0x0027,0x002C,0x0020,0x006F,0x0072,0x0020,0x0027,0x0028,0x003F,0x003E,0x0027,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } , { 0x0027,0x0028,0x003F,0x003C,0x003D,0x0027,0x0020,0x006F,0x0072,0x0020,0x0027,0x0028,0x003F,0x003C,0x0021,0x0027,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } , { 0x0075,0x006E,0x0074,0x0065,0x0072,0x006D,0x0069,0x006E,0x0061,0x0074,0x0065,0x0064,0x0020,0x0063,0x006F,0x006D,0x006D,0x0065,0x006E,0x0074,0x00 } , { 0x0027,0x0029,0x0027,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } , { 0x0075,0x006E,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0065,0x006E,0x0064,0x0020,0x006F,0x0066,0x0020,0x0070,0x0061,0x0074,0x0074,0x0065,0x0072,0x006E,0x0020,0x0069,0x006E,0x0020,0x006D,0x006F,0x0064,0x0069,0x0066,0x0069, 0x0065,0x0072,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x00 } , { 0x0027,0x003A,0x0027,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } , { 0x0075,0x006E,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0065,0x006E,0x0064,0x0020,0x006F,0x0066,0x0020,0x0070,0x0061,0x0074,0x0074,0x0065,0x0072,0x006E,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006E,0x0064,0x0069,0x0074, 0x0069,0x006F,0x006E,0x0061,0x006C,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x00 } , { 0x0062,0x0061,0x0063,0x006B,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x002C,0x0020,0x0061,0x006E,0x0063,0x0068,0x006F,0x0072,0x002C,0x0020,0x006C,0x006F,0x006F,0x006B,0x0061,0x0068,0x0065,0x0061,0x0064,0x002C,0x0020, 0x006F,0x0072,0x0020,0x006C,0x006F,0x006F,0x006B,0x0062,0x0065,0x0068,0x0069,0x006E,0x0064,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006E,0x0064,0x0069,0x0074,0x0069,0x006F,0x006E, 0x0061,0x006C,0x0020,0x0070,0x0061,0x0074,0x0074,0x0065,0x0072,0x006E,0x00 } , { 0x006D,0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x0074,0x0068,0x0072,0x0065,0x0065,0x0020,0x0063,0x0068,0x006F,0x0069,0x0063,0x0065,0x0073,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x006E,0x0064,0x0069,0x0074,0x0069,0x006F, 0x006E,0x0061,0x006C,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x00 } , { 0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0055,0x002B,0x0030,0x0030,0x0034,0x0030,0x002D,0x0055,0x002B,0x0030,0x0030,0x0035,0x0066,0x0020,0x0072,0x0061,0x006E,0x0067, 0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0020,0x0027,0x005C,0x0063,0x0027,0x00 } , { 0x0027,0x007B,0x0027,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0062,0x0065,0x0066,0x006F,0x0072,0x0065,0x0020,0x0063,0x0061,0x0074,0x0065,0x0067,0x006F,0x0072,0x0079,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063, 0x0074,0x0065,0x0072,0x00 } , { 0x0070,0x0072,0x006F,0x0070,0x0065,0x0072,0x0074,0x0079,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0063,0x006C,0x006F,0x0073,0x0065,0x0064,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0027, 0x007D,0x0027,0x00 } , { 0x0075,0x006E,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x006D,0x0065,0x0074,0x0061,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x00 } , { 0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0020,0x0070,0x0072,0x006F,0x0070,0x0065,0x0072,0x0074,0x0079,0x00 } , { 0x0050,0x004F,0x0053,0x0049,0x0058,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0063,0x006C,0x0061,0x0073,0x0073,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0063,0x006C,0x006F,0x0073,0x0065, 0x0064,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0027,0x003A,0x005D,0x0027,0x00 } , { 0x0075,0x006E,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0065,0x006E,0x0064,0x0020,0x006F,0x0066,0x0020,0x0070,0x0061,0x0074,0x0074,0x0065,0x0072,0x006E,0x0020,0x0069,0x006E,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063, 0x0074,0x0065,0x0072,0x0020,0x0063,0x006C,0x0061,0x0073,0x0073,0x00 } , { 0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0066,0x006F,0x0072,0x0020,0x0050,0x004F,0x0053,0x0049,0x0058,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0063,0x006C, 0x0061,0x0073,0x0073,0x00 } , { 0x0027,0x005D,0x0027,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } , { 0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0072,0x0061,0x006E,0x0067,0x0065,0x003B,0x0020,0x0075, 0x0073,0x0065,0x0020,0x0027,0x005C,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0073,0x0074,0x0065,0x0061,0x0064,0x00 } , { 0x0027,0x005B,0x0027,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } , { 0x0027,0x0029,0x0027,0x002C,0x0020,0x0027,0x002D,0x005B,0x0027,0x002C,0x0020,0x0027,0x002B,0x005B,0x0027,0x002C,0x0020,0x006F,0x0072,0x0020,0x0027,0x0026,0x005B,0x0027,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } , { 0x0072,0x0061,0x006E,0x0067,0x0065,0x0020,0x0065,0x006E,0x0064,0x0020,0x0063,0x006F,0x0064,0x0065,0x0020,0x0070,0x006F,0x0069,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006C,0x0065,0x0073,0x0073,0x0020, 0x0074,0x0068,0x0061,0x006E,0x0020,0x0073,0x0074,0x0061,0x0072,0x0074,0x0020,0x0063,0x006F,0x0064,0x0065,0x0020,0x0070,0x006F,0x0069,0x006E,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x0020,0x0068,0x0065,0x0078,0x0020,0x006E,0x006F,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x0027,0x005C,0x0020,0x0078,0x007B,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0063,0x006C,0x006F,0x0073,0x0065,0x0064,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0027,0x007D,0x0027,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x0020,0x0063,0x006F,0x0064,0x0065,0x0020,0x0070,0x006F,0x0069,0x006E,0x0074,0x00 } , { 0x0061,0x006E,0x0063,0x0068,0x006F,0x0072,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0070,0x0072,0x0065,0x0073,0x0065,0x006E,0x0074,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0069,0x0073,0x0020,0x0070,0x006F, 0x0069,0x006E,0x0074,0x00 } , { 0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0065,0x0073,0x0063,0x0061,0x0070,0x0065,0x0020,0x0073, 0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0071,0x0075,0x0061,0x006E,0x0074,0x0069,0x0066,0x0069,0x0065,0x0072,0x0020,0x0069,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x003B,0x0020,0x0064,0x0069,0x0067,0x0069,0x0074,0x0020, 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0071,0x0075,0x0061,0x006E,0x0074,0x0069,0x0066,0x0069,0x0065,0x0072,0x0020,0x0069,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x003B,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069, 0x0064,0x0020,0x0071,0x0075,0x0061,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x006F,0x0072,0x0020,0x006D,0x0069,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x0020,0x0027,0x007D,0x0027,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0071,0x0075,0x0061,0x006E,0x0074,0x0069,0x0066,0x0069,0x0065,0x0072,0x0020,0x0069,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x003B,0x0020,0x0064,0x0069,0x0067,0x0069,0x0074,0x0020, 0x006F,0x0072,0x0020,0x0027,0x007D,0x0027,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0071,0x0075,0x0061,0x006E,0x0074,0x0069,0x0066,0x0069,0x0065,0x0072,0x0020,0x0069,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x003B,0x0020,0x006D,0x0069,0x006E,0x0020,0x0071,0x0075, 0x0061,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065,0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x006D, 0x0061,0x0078,0x0020,0x0071,0x0075,0x0061,0x006E,0x0074,0x0069,0x0074,0x0079,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0071,0x0075,0x0061,0x006E,0x0074,0x0069,0x0066,0x0069,0x0065,0x0072,0x0020,0x0069,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x003B,0x0020,0x0071,0x0075,0x0061,0x006E,0x0074,0x0069, 0x0074,0x0079,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x006F,0x0076,0x0065,0x0072,0x0066,0x006C,0x006F,0x0077,0x00 } , { 0x0058,0x004D,0x004C,0x0020,0x0053,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x0077,0x0061,0x0073,0x0020,0x0073,0x0065,0x0065,0x006E,0x0020,0x0062,0x0075,0x0074,0x0020,0x0069,0x006E,0x0073,0x0074,0x0061,0x006C,0x006C,0x0065,0x0064,0x0020,0x0076, 0x0061,0x006C,0x0069,0x0064,0x0061,0x0074,0x006F,0x0072,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0020,0x0058,0x004D,0x004C,0x0020,0x0053,0x0063,0x0068,0x0065,0x006D, 0x0061,0x00 } , { 0x0053,0x0075,0x0062,0x0073,0x0074,0x0069,0x0074,0x0075,0x0074,0x0069,0x006F,0x006E,0x0047,0x0072,0x006F,0x0075,0x0070,0x0043,0x006F,0x006D,0x0070,0x0061,0x0072,0x0061,0x0074,0x006F,0x0072,0x0020,0x0068,0x0061,0x0073,0x0020,0x006E,0x006F,0x0020, 0x0067,0x0072,0x0061,0x006D,0x006D,0x0061,0x0072,0x0020,0x0072,0x0065,0x0073,0x006F,0x006C,0x0076,0x0065,0x0072,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0061,0x0020,0x006E,0x006F,0x006E,0x002D,0x006E,0x0065, 0x0067,0x0061,0x0074,0x0069,0x0076,0x0065,0x0020,0x0069,0x006E,0x0074,0x0065,0x0067,0x0065,0x0072,0x00 } , { 0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0061,0x0020,0x006E,0x006F,0x006E, 0x002D,0x006E,0x0065,0x0067,0x0061,0x0074,0x0069,0x0076,0x0065,0x0020,0x0069,0x006E,0x0074,0x0065,0x0067,0x0065,0x0072,0x00 } , { 0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0061,0x0020,0x006E,0x006F,0x006E, 0x002D,0x006E,0x0065,0x0067,0x0061,0x0074,0x0069,0x0076,0x0065,0x0020,0x0069,0x006E,0x0074,0x0065,0x0067,0x0065,0x0072,0x00 } , { 0x0062,0x006F,0x0074,0x0068,0x0020,0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0061,0x006E,0x0064,0x0020,0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065, 0x0020,0x0070,0x0072,0x0065,0x0073,0x0065,0x006E,0x0074,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073,0x0061,0x006D,0x0065,0x0020,0x0074,0x0069,0x006D,0x0065,0x00 } , { 0x0062,0x006F,0x0074,0x0068,0x0020,0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0061,0x006E,0x0064,0x0020,0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065, 0x0020,0x0070,0x0072,0x0065,0x0073,0x0065,0x006E,0x0074,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073,0x0061,0x006D,0x0065,0x0020,0x0074,0x0069,0x006D,0x0065,0x00 } , { 0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072,0x0065,0x0061,0x0074, 0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0066,0x0061,0x0063,0x0065,0x0074,0x0020,0x0074,0x0061,0x0067,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F, 0x0020,0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072,0x0065,0x0061,0x0074, 0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065, 0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065,0x0073,0x0073,0x0020, 0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B, 0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065,0x0073,0x0073,0x0020, 0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B, 0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072,0x0065,0x0061,0x0074, 0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065, 0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072,0x0065,0x0061,0x0074,0x0065,0x0072,0x0020, 0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B, 0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065,0x0073,0x0073,0x0020,0x0074,0x0068,0x0061, 0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, 0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065,0x0073,0x0073,0x0020, 0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, 0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072,0x0065,0x0061,0x0074, 0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B, 0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x0065,0x006E,0x0075,0x006D,0x0065,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0066,0x0072,0x006F, 0x006D,0x0020,0x0074,0x0068,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x0077,0x0068,0x0069,0x0074,0x0065,0x0053,0x0070,0x0061,0x0063,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006F,0x006E,0x0065,0x0020, 0x006F,0x0066,0x0020,0x0027,0x0070,0x0072,0x0065,0x0073,0x0065,0x0072,0x0076,0x0065,0x0027,0x002C,0x0020,0x0027,0x0072,0x0065,0x0070,0x006C,0x0061,0x0063,0x0065,0x0027,0x002C,0x0020,0x006F,0x0072,0x0020,0x0027,0x0063,0x006F,0x006C,0x006C,0x0061, 0x0070,0x0073,0x0065,0x0027,0x00 } , { 0x0077,0x0068,0x0069,0x0074,0x0065,0x0053,0x0070,0x0061,0x0063,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0069,0x0073,0x0020,0x0027,0x0070,0x0072,0x0065,0x0073,0x0065,0x0072,0x0076,0x0065,0x0027,0x0020,0x006F,0x0072,0x0020,0x0027, 0x0072,0x0065,0x0070,0x006C,0x0061,0x0063,0x0065,0x0027,0x0020,0x0077,0x0068,0x0069,0x006C,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0077,0x0068,0x0069,0x0074,0x0065,0x0053,0x0070,0x0061,0x0063,0x0065, 0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0069,0x0073,0x0020,0x0027,0x0063,0x006F,0x006C,0x006C,0x0061,0x0070,0x0073,0x0065,0x0027,0x00 } , { 0x0077,0x0068,0x0069,0x0074,0x0065,0x0053,0x0070,0x0061,0x0063,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0069,0x0073,0x0020,0x0027,0x0070,0x0072,0x0065,0x0073,0x0065,0x0072,0x0076,0x0065,0x0027,0x0020,0x0077,0x0068,0x0069,0x006C, 0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0077,0x0068,0x0069,0x0074,0x0065,0x0053,0x0070,0x0061,0x0063,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0069,0x0073,0x0020,0x0027,0x0072,0x0065, 0x0070,0x006C,0x0061,0x0063,0x0065,0x0027,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0074,0x006F,0x0074,0x0061,0x006C,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0066,0x0072,0x0061,0x0063,0x0074,0x0069,0x006F,0x006E,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0074,0x006F,0x0074,0x0061,0x006C,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0061,0x0020,0x0070, 0x006F,0x0073,0x0069,0x0074,0x0069,0x0076,0x0065,0x0020,0x0069,0x006E,0x0074,0x0065,0x0067,0x0065,0x0072,0x00 } , { 0x0066,0x0072,0x0061,0x0063,0x0074,0x0069,0x006F,0x006E,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020, 0x0061,0x0020,0x006E,0x006F,0x006E,0x002D,0x006E,0x0065,0x0067,0x0061,0x0074,0x0069,0x0076,0x0065,0x0020,0x0069,0x006E,0x0074,0x0065,0x0067,0x0065,0x0072,0x00 } , { 0x0062,0x006F,0x0074,0x0068,0x0020,0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0061,0x006E,0x0064,0x0020,0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020, 0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0070,0x0072,0x0065,0x0073,0x0065,0x006E,0x0074,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073,0x0061,0x006D,0x0065,0x0020,0x0074,0x0069,0x006D,0x0065,0x00 } , { 0x0062,0x006F,0x0074,0x0068,0x0020,0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0061,0x006E,0x0064,0x0020,0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020, 0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0070,0x0072,0x0065,0x0073,0x0065,0x006E,0x0074,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0065,0x0020,0x0073,0x0061,0x006D,0x0065,0x0020,0x0074,0x0069,0x006D,0x0065,0x00 } , { 0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072, 0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, 0x00 } , { 0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072, 0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, 0x00 } , { 0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072, 0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, 0x00 } , { 0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072, 0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, 0x00 } , { 0x0074,0x006F,0x0074,0x0061,0x006C,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072,0x0065, 0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x0066,0x0072,0x0061,0x0063,0x0074,0x0069,0x006F,0x006E,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D, 0x0027,0x00 } , { 0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065, 0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E, 0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065, 0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061, 0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072, 0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065, 0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072, 0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, 0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065, 0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061, 0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065, 0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061, 0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072, 0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, 0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072, 0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, 0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065, 0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E, 0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065, 0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061, 0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072, 0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, 0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072, 0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, 0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065, 0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E, 0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065, 0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061, 0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072, 0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065, 0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072, 0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, 0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0066,0x0072, 0x006F,0x006D,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0073,0x0070,0x0061,0x0063,0x0065,0x00 } , { 0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0066,0x0072, 0x006F,0x006D,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0073,0x0070,0x0061,0x0063,0x0065,0x00 } , { 0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0066,0x0072, 0x006F,0x006D,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0073,0x0070,0x0061,0x0063,0x0065,0x00 } , { 0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0066,0x0072, 0x006F,0x006D,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0073,0x0070,0x0061,0x0063,0x0065,0x00 } , { 0x0074,0x006F,0x0074,0x0061,0x006C,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065,0x0073, 0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x0074,0x006F,0x0074,0x0061,0x006C,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075, 0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x0066,0x0072,0x0061,0x0063,0x0074,0x0069,0x006F,0x006E,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020, 0x006C,0x0065,0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x0074,0x006F,0x0074,0x0061,0x006C,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076, 0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x0066,0x0072,0x0061,0x0063,0x0074,0x0069,0x006F,0x006E,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020, 0x006C,0x0065,0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x0066,0x0072,0x0061,0x0063,0x0074,0x0069,0x006F,0x006E,0x0044,0x0069,0x0067,0x0069,0x0074, 0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x0071, 0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031, 0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x0071, 0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x006D,0x0061,0x0078,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031, 0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x0071, 0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031, 0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x0071, 0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031, 0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x0074,0x006F,0x0074,0x0061,0x006C,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x0071,0x0075, 0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x0074,0x006F,0x0074,0x0061,0x006C,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, 0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x0066,0x0072,0x0061,0x0063,0x0074,0x0069,0x006F,0x006E,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020, 0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x0066,0x0072,0x0061,0x0063,0x0074,0x0069,0x006F,0x006E,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065, 0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C, 0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020, 0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C, 0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020, 0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x0077,0x0068,0x0069,0x0074,0x0065,0x0053,0x0070,0x0061,0x0063,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0065,0x0071,0x0075,0x0061, 0x006C,0x0020,0x0074,0x006F,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x0077,0x0068,0x0069,0x0074,0x0065,0x0053,0x0070,0x0061,0x0063,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069, 0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x0069,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0065,0x0072,0x0072,0x006F,0x0072,0x0020,0x0077,0x0068,0x0069,0x006C,0x0065,0x0020,0x0070,0x0072,0x006F,0x0063,0x0065,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x0066,0x0069,0x0078, 0x0065,0x0064,0x0020,0x0066,0x0061,0x0063,0x0065,0x0074,0x00 } , { 0x006C,0x0069,0x0073,0x0074,0x0020,0x0069,0x0074,0x0065,0x006D,0x0054,0x0079,0x0070,0x0065,0x0020,0x0069,0x0073,0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x00 } , { 0x0075,0x006E,0x0069,0x006F,0x006E,0x0020,0x006D,0x0065,0x006D,0x0062,0x0065,0x0072,0x0054,0x0079,0x0070,0x0065,0x0073,0x0020,0x0069,0x0073,0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x00 } , { 0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0075,0x006E,0x0069,0x006F,0x006E,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0069,0x0073,0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x00 } , { 0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0075,0x006E,0x0069,0x006F,0x006E,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0069,0x0073,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x006E,0x0073, 0x0074,0x0065,0x0061,0x0064,0x0020,0x006F,0x0066,0x0020,0x0075,0x006E,0x0069,0x006F,0x006E,0x00 } , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0020,0x0072,0x0065,0x0067,0x0075,0x006C,0x0061,0x0072,0x0020, 0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x0020,0x0066,0x0061,0x0063,0x0065,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0042,0x0061,0x0073,0x0065,0x0036,0x0034,0x002D,0x0065,0x006E,0x0063,0x006F,0x0064, 0x0065,0x0064,0x0020,0x0062,0x0069,0x006E,0x0061,0x0072,0x0079,0x00 } , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0048,0x0065,0x0078,0x002D,0x0065,0x006E,0x0063,0x006F,0x0064,0x0065,0x0064,0x0020, 0x0062,0x0069,0x006E,0x0061,0x0072,0x0079,0x00 } , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0077,0x0068,0x0069,0x0063,0x0068,0x0020, 0x0065,0x0078,0x0063,0x0065,0x0065,0x0064,0x0073,0x0020,0x006D,0x0061,0x0078,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0066,0x0061,0x0063,0x0065,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0032,0x007D,0x0027, 0x00 } , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0077,0x0068,0x0069,0x0063,0x0068,0x0020, 0x0069,0x0073,0x0020,0x006C,0x0065,0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0069,0x006E,0x004C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0066,0x0061,0x0063,0x0065,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020, 0x0027,0x007B,0x0032,0x007D,0x0027,0x00 } , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0077,0x0068,0x0069,0x0063,0x0068,0x0020, 0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0066,0x0061,0x0063,0x0065,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020, 0x0027,0x007B,0x0032,0x007D,0x0027,0x00 } , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0069,0x006E,0x0020,0x0065,0x006E,0x0075,0x006D,0x0065,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0074,0x006F,0x0074,0x0061,0x006C,0x0020,0x0064,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020, 0x0077,0x0068,0x0069,0x0063,0x0068,0x0020,0x0065,0x0078,0x0063,0x0065,0x0065,0x0064,0x0073,0x0020,0x0074,0x006F,0x0074,0x0061,0x006C,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0066,0x0061,0x0063,0x0065,0x0074,0x0020,0x0076,0x0061,0x006C, 0x0075,0x0065,0x0020,0x0027,0x007B,0x0032,0x007D,0x0027,0x00 } , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0066,0x0072,0x0061,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0064,0x0069,0x0067,0x0069, 0x0074,0x0073,0x0020,0x0077,0x0068,0x0069,0x0063,0x0068,0x0020,0x0065,0x0078,0x0063,0x0065,0x0065,0x0064,0x0073,0x0020,0x0066,0x0072,0x0061,0x0063,0x0074,0x0069,0x006F,0x006E,0x0044,0x0069,0x0067,0x0069,0x0074,0x0073,0x0020,0x0066,0x0061,0x0063, 0x0065,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0032,0x007D,0x0027,0x00 } , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065,0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072,0x0020,0x0065,0x0071, 0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0061,0x0078,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0066,0x0061,0x0063,0x0065,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031, 0x007D,0x0027,0x00 } , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x006C,0x0065,0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006D,0x0061,0x0078,0x0045,0x0078, 0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0066,0x0061,0x0063,0x0065,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072,0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072, 0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0069,0x006E,0x0049,0x006E,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0066,0x0061,0x0063,0x0065,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020, 0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072,0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x0072, 0x0020,0x0065,0x0071,0x0075,0x0061,0x006C,0x0020,0x0074,0x006F,0x0020,0x006D,0x0069,0x006E,0x0045,0x0078,0x0063,0x006C,0x0075,0x0073,0x0069,0x0076,0x0065,0x0020,0x0066,0x0061,0x0063,0x0065,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020, 0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0077,0x0068,0x0069,0x0074,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0072,0x0065,0x0070,0x006C,0x0061, 0x0063,0x0065,0x0064,0x00 } , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0077,0x0068,0x0069,0x0074,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0063,0x006F,0x006C,0x006C,0x0061, 0x0070,0x0073,0x0065,0x0064,0x00 } , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x004E,0x0043,0x004E,0x0061,0x006D,0x0065,0x00 } , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x007B,0x0031,0x007D,0x00 } , { 0x0049,0x0044,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0075,0x006E,0x0069,0x0071,0x0075,0x0065,0x00 } , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0045,0x004E,0x0054,0x0049,0x0054,0x0059,0x00 } , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0051,0x004E,0x0061,0x006D,0x0065,0x00 } , { 0x004E,0x004F,0x0054,0x0041,0x0054,0x0049,0x004F,0x004E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0051,0x004E,0x0061,0x006D,0x0065,0x00 } , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0020,0x0061,0x006E,0x0079,0x0020,0x006D,0x0065,0x006D,0x0062, 0x0065,0x0072,0x0020,0x0074,0x0079,0x0070,0x0065,0x0073,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068,0x0065,0x0020,0x0075,0x006E,0x0069,0x006F,0x006E,0x00 } , { 0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0061,0x006E,0x0079,0x0055,0x0052,0x0049,0x00 } , { 0x0065,0x006D,0x0070,0x0074,0x0079,0x0020,0x0073,0x0074,0x0072,0x0069,0x006E,0x0067,0x0020,0x0065,0x006E,0x0063,0x006F,0x0075,0x006E,0x0074,0x0065,0x0072,0x0065,0x0064,0x00 } , { 0x0073,0x0074,0x0072,0x0069,0x006E,0x0067,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0073,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x0077,0x0068,0x0069,0x0074,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0073,0x00 } , { 0x006D,0x006F,0x0072,0x0065,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x006F,0x006E,0x0065,0x0020,0x0064,0x0065,0x0063,0x0069,0x006D,0x0061,0x006C,0x0020,0x0070,0x006F,0x0069,0x006E,0x0074,0x0020,0x0065,0x006E,0x0063,0x006F,0x0075,0x006E,0x0074, 0x0065,0x0072,0x0065,0x0064,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0065,0x006E,0x0063,0x006F,0x0075,0x006E,0x0074,0x0065,0x0072,0x0065,0x0064,0x00 } , { 0x004E,0x0055,0x004C,0x004C,0x0020,0x0070,0x006F,0x0069,0x006E,0x0074,0x0065,0x0072,0x0020,0x0065,0x006E,0x0063,0x006F,0x0075,0x006E,0x0074,0x0065,0x0072,0x0065,0x0064,0x00 } , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0075,0x0063,0x0074,0x0020,0x0055,0x0052,0x0049,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x004E,0x0055,0x004C,0x004C,0x002F,0x0065, 0x006D,0x0070,0x0074,0x0079,0x0020,0x007B,0x0030,0x007D,0x00 } , { 0x007B,0x0030,0x007D,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x0062,0x0065,0x0020,0x0073,0x0065,0x0074,0x0020,0x0066,0x006F,0x0072,0x0020,0x0061,0x0020,0x0067,0x0065,0x006E, 0x0065,0x0072,0x0069,0x0063,0x0020,0x0055,0x0052,0x0049,0x00 } , { 0x007B,0x0030,0x007D,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0065,0x0073,0x0063,0x0061,0x0070,0x0065,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063, 0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } , { 0x007B,0x0030,0x007D,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0027,0x007B,0x0031,0x007D, 0x0027,0x00 } , { 0x007B,0x0030,0x007D,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x004E,0x0055,0x004C,0x004C,0x00 } , { 0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0063,0x006F,0x006E,0x0066,0x006F,0x0072,0x006D,0x0061,0x006E,0x0074,0x0020,0x0074,0x006F,0x0020,0x007B,0x0030,0x007D,0x00 } , { 0x006E,0x006F,0x0020,0x0073,0x0063,0x0068,0x0065,0x006D,0x0065,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x0020,0x0069,0x006E,0x0020,0x0055,0x0052,0x0049,0x00 } , { 0x007B,0x0030,0x007D,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x006D,0x0061,0x0079,0x0020,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0069,0x0066,0x0020,0x0068, 0x006F,0x0073,0x0074,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x00 } , { 0x007B,0x0030,0x007D,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x006D,0x0061,0x0079,0x0020,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0069,0x0066,0x0020,0x0070, 0x0061,0x0074,0x0068,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x00 } , { 0x0070,0x006F,0x0072,0x0074,0x0020,0x006E,0x0075,0x006D,0x0062,0x0065,0x0072,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0028,0x0030, 0x002C,0x0036,0x0035,0x0035,0x0033,0x0035,0x0029,0x0020,0x0072,0x0061,0x006E,0x0067,0x0065,0x00 } , { 0x0069,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0065,0x0072,0x0072,0x006F,0x0072,0x0020,0x0077,0x0068,0x0069,0x006C,0x0065,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0061,0x0074,0x0069,0x006E,0x0067,0x0020,0x0027,0x007B,0x0030, 0x007D,0x0027,0x00 } , { 0x0072,0x0065,0x0073,0x0075,0x006C,0x0074,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0065,0x0074,0x00 } , { 0x0069,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0065,0x0072,0x0072,0x006F,0x0072,0x0020,0x0069,0x006E,0x0020,0x0043,0x006F,0x006D,0x0070,0x0061,0x0063,0x0074,0x0052,0x0061,0x006E,0x0067,0x0065,0x0073,0x00 } , { 0x006D,0x0069,0x0073,0x006D,0x0061,0x0074,0x0063,0x0068,0x0065,0x0064,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0069,0x006E,0x0020,0x004D,0x0065,0x0072,0x0067,0x0065,0x0052,0x0061,0x006E,0x0067,0x0065,0x0073,0x00 } , { 0x0069,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0065,0x0072,0x0072,0x006F,0x0072,0x0020,0x0069,0x006E,0x0020,0x0053,0x0075,0x0062,0x0074,0x0072,0x0061,0x0063,0x0074,0x0052,0x0061,0x006E,0x0067,0x0065,0x0073,0x00 } , { 0x0069,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x006C,0x0020,0x0065,0x0072,0x0072,0x006F,0x0072,0x0020,0x0069,0x006E,0x0020,0x0049,0x006E,0x0074,0x0065,0x0072,0x0073,0x0065,0x0063,0x0074,0x0052,0x0061,0x006E,0x0067,0x0065,0x0073,0x00 } , { 0x0061,0x0072,0x0067,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0052,0x0061,0x006E,0x0067,0x0065,0x0054,0x006F,0x006B,0x0065,0x006E,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0061,0x0074,0x0065,0x0067,0x006F,0x0072,0x0079,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x006B,0x0065,0x0079,0x0077,0x006F,0x0072,0x0064,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x006F,0x0075,0x006E,0x0064,0x00 } , { 0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x006E,0x0075,0x006D,0x0062,0x0065,0x0072,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0067,0x0072,0x0065,0x0061,0x0074,0x0065,0x0072,0x0020,0x0074,0x0068, 0x0061,0x006E,0x0020,0x007A,0x0065,0x0072,0x006F,0x00 } , { 0x006F,0x0070,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x00 } , { 0x0075,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0020,0x0074,0x006F,0x006B,0x0065,0x006E,0x0020,0x0074,0x0079,0x0070,0x0065,0x00 } , { 0x0075,0x006E,0x0061,0x0062,0x006C,0x0065,0x0020,0x0074,0x006F,0x0020,0x0067,0x0065,0x0074,0x0020,0x0052,0x0061,0x006E,0x0067,0x0065,0x0054,0x006F,0x006B,0x0065,0x006E,0x0020,0x0066,0x006F,0x0072,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x006E,0x006F,0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0065,0x0064,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0069,0x006C,0x0064,0x0020,0x0069,0x006E,0x0064,0x0065,0x0078,0x00 } , { 0x0072,0x0065,0x0070,0x006C,0x0061,0x0063,0x0065,0x0020,0x0070,0x0061,0x0074,0x0074,0x0065,0x0072,0x006E,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0020,0x007A,0x0065,0x0072,0x006F,0x002D,0x006C, 0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0073,0x0074,0x0072,0x0069,0x006E,0x0067,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0072,0x0065,0x0070,0x006C,0x0061,0x0063,0x0065,0x0020,0x0070,0x0061,0x0074,0x0074,0x0065,0x0072,0x006E,0x00 } , { 0x0065,0x006E,0x0061,0x0062,0x006C,0x0069,0x006E,0x0067,0x0020,0x004E,0x0045,0x004C,0x0020,0x006F,0x0070,0x0074,0x0069,0x006F,0x006E,0x0020,0x0063,0x0061,0x006E,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x0062,0x0065,0x0020,0x0064,0x006F,0x006E, 0x0065,0x0020,0x006F,0x006E,0x0063,0x0065,0x0020,0x0070,0x0065,0x0072,0x0020,0x0070,0x0072,0x006F,0x0063,0x0065,0x0073,0x0073,0x00 } , { 0x006F,0x0075,0x0074,0x0020,0x006F,0x0066,0x0020,0x006D,0x0065,0x006D,0x006F,0x0072,0x0079,0x00 } , { 0x006F,0x0070,0x0065,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x00 } , { 0x0073,0x0065,0x006C,0x0065,0x0063,0x0074,0x006F,0x0072,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0073,0x0065,0x006C,0x0065,0x0063,0x0074,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x00 } , { 0x0027,0x007C,0x0027,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0065,0x0067,0x0069,0x006E,0x006E,0x0069,0x006E,0x0067,0x0020,0x006F,0x0066,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065, 0x0073,0x0073,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x00 } , { 0x0027,0x007C,0x007C,0x0027,0x0020,0x0069,0x006E,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C, 0x00 } , { 0x006D,0x0069,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0069,0x006E,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070, 0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x00 } , { 0x0075,0x006E,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0074,0x006F,0x006B,0x0065,0x006E,0x003B,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0071,0x006E, 0x0061,0x006D,0x0065,0x002C,0x0020,0x0061,0x006E,0x0079,0x002C,0x0020,0x006F,0x0072,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0074,0x0065,0x0073,0x0074,0x00 } , { 0x0070,0x0072,0x0065,0x0066,0x0069,0x0078,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0075,0x0073,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069, 0x006F,0x006E,0x0020,0x0063,0x0061,0x006E,0x0020,0x006E,0x006F,0x0074,0x0020,0x0062,0x0065,0x0020,0x0072,0x0065,0x0073,0x006F,0x006C,0x0076,0x0065,0x0064,0x0020,0x0074,0x006F,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065, 0x0020,0x0055,0x0052,0x0049,0x00 } , { 0x0027,0x003A,0x003A,0x0027,0x0020,0x0069,0x006E,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C, 0x00 } , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0073,0x0074,0x0065,0x0070,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0069,0x006E,0x0067,0x0020,0x0027,0x0063,0x0068,0x0069,0x006C,0x0064,0x0027,0x0020,0x0074,0x006F,0x006B, 0x0065,0x006E,0x0020,0x0069,0x006E,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x00 } , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0073,0x0074,0x0065,0x0070,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0069,0x006E,0x0067,0x0020,0x0027,0x002F,0x002F,0x0027,0x0020,0x0069,0x006E,0x0020,0x0058,0x0050,0x0061, 0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x00 } , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0073,0x0074,0x0065,0x0070,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0069,0x006E,0x0067,0x0020,0x0027,0x002F,0x0027,0x0020,0x0069,0x006E,0x0020,0x0058,0x0050,0x0061,0x0074, 0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x00 } , { 0x0027,0x002F,0x0027,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0061,0x0066,0x0074,0x0065,0x0072,0x0020,0x0027,0x002F,0x002F,0x0027,0x0020,0x0069,0x006E,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068, 0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x00 } , { 0x0027,0x002F,0x002F,0x0027,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0061,0x0066,0x0074,0x0065,0x0072,0x0020,0x0027,0x002E,0x0027,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0065,0x0020, 0x0062,0x0065,0x0067,0x0069,0x006E,0x006E,0x0069,0x006E,0x0067,0x0020,0x006F,0x0066,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x00 } , { 0x0027,0x002F,0x0027,0x0020,0x0061,0x0074,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0065,0x0067,0x0069,0x006E,0x006E,0x0069,0x006E,0x0067,0x0020,0x006F,0x0066,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065, 0x0073,0x0073,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x00 } , { 0x0072,0x006F,0x006F,0x0074,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0073,0x0065,0x006C,0x0065,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0069, 0x006E,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x00 } , { 0x0065,0x006D,0x0070,0x0074,0x0079,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x00 } , { 0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x0020,0x0063,0x0061,0x006E,0x006E,0x006F,0x0074,0x0020,0x0065,0x006E,0x0064,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0027,0x007C, 0x0027,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078, 0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x00 } , { 0x0075,0x006E,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0065,0x0064,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0074,0x006F,0x006B,0x0065,0x006E,0x00 } , { 0x0066,0x0072,0x0061,0x0063,0x0074,0x0069,0x006F,0x006E,0x0061,0x006C,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020, 0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0064,0x0061,0x0074,0x0065,0x0054,0x0069,0x006D,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x006D,0x0069,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x0027,0x0054,0x0027,0x0020,0x0073,0x0065,0x0070,0x0061,0x0072,0x0061,0x0074,0x006F,0x0072,0x0020,0x0069,0x006E,0x0020,0x0064,0x0061,0x0074,0x0065,0x0054,0x0069,0x006D,0x0065,0x0020,0x0076, 0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0067,0x0044,0x0061,0x0079,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0067,0x004D,0x006F,0x006E,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0067,0x004D,0x006F,0x006E,0x0074,0x0068,0x0044,0x0061,0x0079,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0064,0x0075,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0064,0x0075,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0073,0x0074,0x0061,0x0072,0x0074,0x0020,0x0077,0x0069,0x0074, 0x0068,0x0020,0x0027,0x002D,0x0027,0x0020,0x006F,0x0072,0x0020,0x0027,0x0050,0x0027,0x00 } , { 0x0064,0x0075,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0020,0x0027, 0x0050,0x0027,0x00 } , { 0x0064,0x0075,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x0061,0x006E,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0020,0x0027,0x002D, 0x0027,0x0020,0x006F,0x006E,0x006C,0x0079,0x0020,0x0061,0x0073,0x0020,0x0074,0x0068,0x0065,0x0020,0x0066,0x0069,0x0072,0x0073,0x0074,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x00 } , { 0x0064,0x0075,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0073,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C, 0x0069,0x0064,0x0020,0x0074,0x0065,0x0078,0x0074,0x0020,0x0062,0x0065,0x0066,0x006F,0x0072,0x0065,0x0020,0x0027,0x0054,0x0027,0x00 } , { 0x0064,0x0075,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x006E,0x006F,0x0020,0x0074,0x0069,0x006D,0x0065,0x0020,0x0063,0x006F, 0x006D,0x0070,0x006F,0x006E,0x0065,0x006E,0x0074,0x0020,0x0061,0x0066,0x0074,0x0065,0x0072,0x0020,0x0027,0x0054,0x0027,0x00 } , { 0x0064,0x0075,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0061,0x0074,0x0020,0x006C, 0x0065,0x0061,0x0073,0x0074,0x0020,0x006F,0x006E,0x0065,0x0020,0x0063,0x006F,0x006D,0x0070,0x006F,0x006E,0x0065,0x006E,0x0074,0x00 } , { 0x0064,0x0075,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0068,0x0061,0x0076,0x0065,0x0020,0x0061,0x0074,0x0020,0x006C, 0x0065,0x0061,0x0073,0x0074,0x0020,0x006F,0x006E,0x0065,0x0020,0x0064,0x0069,0x0067,0x0069,0x0074,0x0020,0x0061,0x0066,0x0074,0x0065,0x0072,0x0020,0x0027,0x002E,0x0027,0x00 } , { 0x0069,0x006E,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0074,0x0065,0x0020,0x0064,0x0061,0x0074,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0064,0x0061,0x0074,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0069,0x006E,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0074,0x0065,0x0020,0x0074,0x0069,0x006D,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0074,0x0069,0x006D,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0066,0x0072,0x0061,0x0063,0x0074,0x0069,0x006F,0x006E,0x0061,0x006C,0x0020,0x0073,0x0065,0x0063,0x006F,0x006E,0x0064,0x0073,0x0020,0x0061,0x0066,0x0074,0x0065,0x0072,0x0020,0x0027, 0x002E,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0069,0x006D,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0069,0x006E,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0074,0x0065,0x0020,0x0067,0x0059,0x0065,0x0061,0x0072,0x004D,0x006F,0x006E,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0067,0x0059,0x0065,0x0061,0x0072,0x004D,0x006F,0x006E,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0067,0x0059,0x0065,0x0061,0x0072,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0079,0x0065,0x0061,0x0072,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0066,0x006F,0x006C,0x006C,0x006F,0x0077,0x0020,0x0027,0x0043,0x0043,0x0059,0x0059,0x0027, 0x0020,0x0066,0x006F,0x0072,0x006D,0x0061,0x0074,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006C,0x0065,0x0061,0x0064,0x0069,0x006E,0x0067,0x0020,0x007A,0x0065,0x0072,0x006F,0x0020,0x0069,0x006E,0x0020,0x0067,0x0059,0x0065,0x0061,0x0072,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065, 0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x006D,0x006F,0x006E,0x0074,0x0068,0x0020,0x0063,0x006F,0x006D,0x0070,0x006F,0x006E,0x0065,0x006E,0x0074,0x0020,0x006D,0x0069,0x0073,0x0073,0x0069,0x006E,0x0067,0x0020,0x0069,0x006E,0x0020,0x0067,0x0059,0x0065,0x0061,0x0072,0x004D,0x006F,0x006E, 0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0074,0x0069,0x006D,0x0065,0x0020,0x007A,0x006F,0x006E,0x0065,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0075,0x006E,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0074,0x0065,0x0078,0x0074,0x0020,0x0061,0x0066,0x0074,0x0065,0x0072,0x0020,0x0027,0x005A,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0069,0x006D,0x0065,0x0020,0x007A, 0x006F,0x006E,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0074,0x0069,0x006D,0x0065,0x0020,0x007A,0x006F,0x006E,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0079,0x0065,0x0061,0x0072,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x006D,0x006F,0x006E,0x0074,0x0068,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0062,0x0065,0x0074,0x0077,0x0065,0x0065,0x006E,0x0020,0x0031, 0x0020,0x0061,0x006E,0x0064,0x0020,0x0031,0x0032,0x00 } , { 0x0064,0x0061,0x0079,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0062,0x0065,0x0074,0x0077,0x0065,0x0065,0x006E,0x0020,0x0031,0x0020,0x0061, 0x006E,0x0064,0x0020,0x007B,0x0031,0x007D,0x00 } , { 0x0068,0x006F,0x0075,0x0072,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0062,0x0065,0x0074,0x0077,0x0065,0x0065,0x006E,0x0020,0x0030, 0x0020,0x0061,0x006E,0x0064,0x0020,0x0032,0x0033,0x00 } , { 0x006D,0x0069,0x006E,0x0075,0x0074,0x0065,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0062,0x0065,0x0074,0x0077,0x0065,0x0065,0x006E, 0x0020,0x0030,0x0020,0x0061,0x006E,0x0064,0x0020,0x0035,0x0039,0x00 } , { 0x0073,0x0065,0x0063,0x006F,0x006E,0x0064,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0062,0x0065,0x0074,0x0077,0x0065,0x0065,0x006E, 0x0020,0x0030,0x0020,0x0061,0x006E,0x0064,0x0020,0x0036,0x0030,0x00 } , { 0x006D,0x0069,0x006E,0x0075,0x0074,0x0065,0x0073,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x006D,0x0075,0x0073,0x0074,0x0020,0x0062,0x0065,0x0020,0x0062,0x0065,0x0074,0x0077,0x0065,0x0065,0x006E, 0x0020,0x0030,0x0020,0x0061,0x006E,0x0064,0x0020,0x0035,0x0039,0x00 } , { 0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0078,0x0020,0x0074,0x0079,0x0070,0x0065, 0x0020,0x0068,0x0061,0x0073,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0077,0x0068,0x0069,0x006C,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0069,0x0073,0x0020,0x0065,0x006D,0x0070, 0x0074,0x0079,0x00 } , { 0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x006F,0x0066,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061, 0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x0077,0x0069,0x006C,0x0064,0x0063,0x0061,0x0072,0x0064,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x006F,0x0063,0x0063,0x0075,0x0072,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0072,0x0061,0x006E,0x0067,0x0065,0x0020,0x006F,0x0066,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069, 0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0066,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0065, 0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0027,0x0073,0x0020,0x0072,0x0061,0x006E,0x0067,0x0065,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x006E,0x0061,0x006D,0x0065,0x002F,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0020,0x0069,0x006E,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069, 0x006F,0x006E,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x006F,0x0066,0x0020,0x0063,0x006F,0x0072,0x0072,0x0065,0x0073,0x0070,0x006F,0x006E, 0x0064,0x0069,0x006E,0x0067,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006E,0x0069,0x006C,0x006C,0x0061,0x0062,0x006C,0x0065,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0072,0x0065, 0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x0077,0x0068,0x0069,0x006C,0x0065,0x0020,0x0069,0x0074,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x006E,0x002D,0x006E,0x0069,0x006C,0x006C,0x0061,0x0062,0x006C,0x0065,0x0020, 0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0065,0x0069,0x0074,0x0068,0x0065,0x0072,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x006F, 0x0072,0x0020,0x0069,0x0073,0x0020,0x0066,0x0069,0x0078,0x0065,0x0064,0x0020,0x0074,0x006F,0x0020,0x0061,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0065,0x006E,0x0074,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0063,0x006F,0x006D, 0x0070,0x0061,0x0072,0x0065,0x0064,0x0020,0x0074,0x006F,0x0020,0x0063,0x006F,0x0072,0x0072,0x0065,0x0073,0x0070,0x006F,0x006E,0x0064,0x0069,0x006E,0x0067,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0069,0x006E,0x0020,0x0074, 0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x0064,0x0069,0x0073,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0073,0x0075,0x0062,0x0073,0x0074,0x0069,0x0074,0x0075,0x0074,0x0069,0x006F,0x006E,0x0073,0x0020,0x0066,0x006F,0x0072,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E, 0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0061,0x0072,0x0065,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x0020,0x0073,0x0075,0x0070,0x0065,0x0072,0x0073,0x0065,0x0074,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068,0x006F,0x0073,0x0065, 0x0020,0x0066,0x006F,0x0072,0x0020,0x0063,0x006F,0x0072,0x0072,0x0065,0x0073,0x0070,0x006F,0x006E,0x0064,0x0069,0x006E,0x0067,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062, 0x0061,0x0073,0x0065,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F, 0x0074,0x0020,0x0064,0x0065,0x0072,0x0069,0x0076,0x0065,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x0063,0x006F,0x0072,0x0072,0x0065,0x0073,0x0070,0x006F,0x006E,0x0064,0x0069,0x006E,0x0067, 0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0066,0x0065,0x0077,0x0065,0x0072,0x0020,0x0069,0x0064,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x006F, 0x006E,0x0073,0x0074,0x0072,0x0061,0x0069,0x006E,0x0074,0x0073,0x0020,0x0063,0x006F,0x006D,0x0070,0x0061,0x0072,0x0065,0x0064,0x0020,0x0074,0x006F,0x0020,0x0063,0x006F,0x0072,0x0072,0x0065,0x0073,0x0070,0x006F,0x006E,0x0064,0x0069,0x006E,0x0067, 0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0068,0x0061,0x0073,0x0020,0x0069,0x0064,0x0065,0x006E,0x0074,0x0069,0x0074,0x0079,0x0020,0x0063,0x006F,0x006E,0x0073,0x0074,0x0072,0x0061,0x0069, 0x006E,0x0074,0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x0070,0x0070,0x0065,0x0061,0x0072,0x0020,0x0069,0x006E,0x0020,0x0063,0x006F,0x0072,0x0072,0x0065,0x0073,0x0070,0x006F, 0x006E,0x0064,0x0069,0x006E,0x0067,0x0020,0x0065,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x006F,0x0063,0x0063,0x0075,0x0072,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0072,0x0061,0x006E,0x0067,0x0065,0x0020,0x006F,0x0066,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x0020, 0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0066,0x0020,0x006F,0x0063,0x0063,0x0075,0x0072,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0072,0x0061,0x006E, 0x0067,0x0065,0x0020,0x006F,0x0066,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x00 } , { 0x006E,0x006F,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0074,0x0065,0x0020,0x0066,0x0075,0x006E,0x0063,0x0074,0x0069,0x006F,0x006E,0x0061,0x006C,0x0020,0x006D,0x0061,0x0070,0x0070,0x0069,0x006E,0x0067,0x0020,0x0062,0x0065,0x0074,0x0077, 0x0065,0x0065,0x006E,0x0020,0x0070,0x0061,0x0072,0x0074,0x0069,0x0063,0x006C,0x0065,0x0073,0x00 } , { 0x0066,0x006F,0x0072,0x0062,0x0069,0x0064,0x0064,0x0065,0x006E,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0066,0x0020,0x0061,0x006E,0x0079,0x0020,0x0070,0x0061,0x0072,0x0074,0x0069,0x0063, 0x006C,0x0065,0x00 } , { 0x0066,0x006F,0x0072,0x0062,0x0069,0x0064,0x0064,0x0065,0x006E,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0066,0x0020,0x0061,0x006C,0x006C,0x0020,0x0063,0x006F,0x006D,0x0070,0x006F,0x0073, 0x0069,0x0074,0x006F,0x0072,0x00 } , { 0x0066,0x006F,0x0072,0x0062,0x0069,0x0064,0x0064,0x0065,0x006E,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0066,0x0020,0x0063,0x0068,0x006F,0x0069,0x0063,0x0065,0x0020,0x0063,0x006F,0x006D, 0x0070,0x006F,0x0073,0x0069,0x0074,0x006F,0x0072,0x00 } , { 0x0066,0x006F,0x0072,0x0062,0x0069,0x0064,0x0064,0x0065,0x006E,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0066,0x0020,0x0073,0x0065,0x0071,0x0075,0x0065,0x006E,0x0063,0x0065,0x0020,0x0063, 0x006F,0x006D,0x0070,0x006F,0x0073,0x0069,0x0074,0x006F,0x0072,0x00 } , { 0x006F,0x0063,0x0063,0x0075,0x0072,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0072,0x0061,0x006E,0x0067,0x0065,0x0020,0x006F,0x0066,0x0020,0x0077,0x0069,0x006C,0x0064,0x0063,0x0061,0x0072,0x0064,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074, 0x0020,0x0061,0x0020,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0066,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0077,0x0069,0x006C,0x0064,0x0063,0x0061, 0x0072,0x0064,0x0027,0x0073,0x0020,0x0072,0x0061,0x006E,0x0067,0x0065,0x00 } , { 0x0077,0x0069,0x006C,0x0064,0x0063,0x0061,0x0072,0x0064,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x0020,0x0073,0x0075,0x0062,0x0073,0x0065,0x0074,0x0020,0x006F,0x0066,0x0020,0x0063,0x006F,0x0072,0x0072,0x0065,0x0073,0x0070, 0x006F,0x006E,0x0064,0x0069,0x006E,0x0067,0x0020,0x0077,0x0069,0x006C,0x0064,0x0063,0x0061,0x0072,0x0064,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0062,0x0061,0x0073,0x0065,0x00 } , { 0x006F,0x0063,0x0063,0x0075,0x0072,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0072,0x0061,0x006E,0x0067,0x0065,0x0020,0x006F,0x0066,0x0020,0x0067,0x0072,0x006F,0x0075,0x0070,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x0020, 0x0072,0x0065,0x0073,0x0074,0x0072,0x0069,0x0063,0x0074,0x0069,0x006F,0x006E,0x0020,0x006F,0x0066,0x0020,0x0062,0x0061,0x0073,0x0065,0x0020,0x0077,0x0069,0x006C,0x0064,0x0063,0x0061,0x0072,0x0064,0x0027,0x0073,0x0020,0x0072,0x0061,0x006E,0x0067, 0x0065,0x00 } , { 0x006E,0x006F,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0074,0x0065,0x0020,0x0066,0x0075,0x006E,0x0063,0x0074,0x0069,0x006F,0x006E,0x0061,0x006C,0x0020,0x006D,0x0061,0x0070,0x0070,0x0069,0x006E,0x0067,0x0020,0x0062,0x0065,0x0074,0x0077, 0x0065,0x0065,0x006E,0x0020,0x0070,0x0061,0x0072,0x0074,0x0069,0x0063,0x006C,0x0065,0x0073,0x00 } , { 0x006E,0x006F,0x0020,0x0063,0x006F,0x006D,0x0070,0x006C,0x0065,0x0074,0x0065,0x0020,0x0066,0x0075,0x006E,0x0063,0x0074,0x0069,0x006F,0x006E,0x0061,0x006C,0x0020,0x006D,0x0061,0x0070,0x0070,0x0069,0x006E,0x0067,0x0020,0x0062,0x0065,0x0074,0x0077, 0x0065,0x0065,0x006E,0x0020,0x0070,0x0061,0x0072,0x0074,0x0069,0x0063,0x006C,0x0065,0x0073,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x006E,0x0074,0x0020,0x0073,0x0070,0x0065,0x0063,0x0020,0x006E,0x006F,0x0064,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x00 } , { 0x004E,0x006F,0x0064,0x0065,0x0049,0x0044,0x004D,0x0061,0x0070,0x0020,0x0065,0x0078,0x0063,0x0065,0x0065,0x0064,0x0073,0x0020,0x006C,0x0061,0x0072,0x0067,0x0065,0x0073,0x0074,0x0020,0x0061,0x0076,0x0061,0x0069,0x006C,0x0061,0x0062,0x006C,0x0065, 0x0020,0x0073,0x0069,0x007A,0x0065,0x00 } , { 0x0050,0x0072,0x006F,0x0074,0x006F,0x0054,0x0079,0x0070,0x0065,0x0020,0x0068,0x0061,0x0073,0x0020,0x004E,0x0055,0x004C,0x004C,0x0020,0x0063,0x006C,0x0061,0x0073,0x0073,0x0020,0x006E,0x0061,0x006D,0x0065,0x00 } , { 0x0050,0x0072,0x006F,0x0074,0x006F,0x0054,0x0079,0x0070,0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x006C,0x0065,0x006E,0x0067,0x0074,0x0068,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0073, 0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } , { 0x0050,0x0072,0x006F,0x0074,0x006F,0x0054,0x0079,0x0070,0x0065,0x0020,0x006E,0x0061,0x006D,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0073,0x0020,0x0066,0x0072,0x006F,0x006D,0x0020,0x0065, 0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } , { 0x0049,0x006E,0x0070,0x0075,0x0074,0x0053,0x0074,0x0072,0x0065,0x0061,0x006D,0x0020,0x0072,0x0065,0x0061,0x0064,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x006C,0x0065,0x0073,0x0073,0x0020,0x0074,0x0068,0x0061,0x006E, 0x0020,0x0072,0x0065,0x0071,0x0075,0x0069,0x0072,0x0065,0x0064,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } , { 0x0049,0x006E,0x0070,0x0075,0x0074,0x0053,0x0074,0x0072,0x0065,0x0061,0x006D,0x0020,0x0072,0x0065,0x0061,0x0064,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0069,0x0073,0x0020,0x0062,0x0065,0x0079,0x006F,0x006E,0x0064,0x0020,0x0061,0x0076, 0x0061,0x0069,0x006C,0x0061,0x0062,0x006C,0x0065,0x0020,0x0062,0x0075,0x0066,0x0066,0x0065,0x0072,0x0020,0x0073,0x0069,0x007A,0x0065,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } , { 0x0073,0x0074,0x006F,0x0072,0x0069,0x006E,0x0067,0x0020,0x0076,0x0069,0x006F,0x006C,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x0073,0x0074,0x006F,0x0072,0x0065,0x0020,0x0062,0x0075,0x0066,0x0066,0x0065,0x0072,0x0020,0x0076,0x0069,0x006F,0x006C,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x002C,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027, 0x00 } , { 0x006F,0x0062,0x006A,0x0065,0x0063,0x0074,0x0020,0x0074,0x0061,0x0067,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0065,0x0078,0x0063,0x0065,0x0065,0x0064,0x0073,0x0020,0x006C,0x006F,0x0061,0x0064,0x0020,0x0070,0x006F,0x006F,0x006C,0x0020, 0x0075,0x0070,0x0070,0x0065,0x0072,0x0020,0x0062,0x006F,0x0075,0x006E,0x0064,0x0061,0x0072,0x0079,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } , { 0x006C,0x006F,0x0061,0x0064,0x0020,0x0070,0x006F,0x006F,0x006C,0x0020,0x0073,0x0069,0x007A,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0074,0x0061,0x006C,0x006C,0x0079, 0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x006F,0x0062,0x006A,0x0065,0x0063,0x0074,0x0020,0x0063,0x006F,0x0075,0x006E,0x0074,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } , { 0x006C,0x006F,0x0061,0x0064,0x0069,0x006E,0x0067,0x0020,0x0076,0x0069,0x006F,0x006C,0x0061,0x0074,0x0069,0x006F,0x006E,0x00 } , { 0x006C,0x006F,0x0061,0x0064,0x0020,0x0062,0x0075,0x0066,0x0066,0x0065,0x0072,0x0020,0x0076,0x0069,0x006F,0x006C,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x002C,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x006C,0x0061,0x0073,0x0073,0x0020,0x0069,0x006E,0x0064,0x0065,0x0078,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x002C,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0065,0x0063,0x006B,0x0046,0x0069,0x006C,0x006C,0x0042,0x0075,0x0066,0x0066,0x0065,0x0072,0x0020,0x0073,0x0069,0x007A,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0063,0x0068,0x0065,0x0063,0x006B,0x0046,0x006C,0x0075,0x0073,0x0068,0x0042,0x0075,0x0066,0x0066,0x0065,0x0072,0x0020,0x0073,0x0069,0x007A,0x0065,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027, 0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x004E,0x0055,0x004C,0x004C,0x0020,0x0070,0x006F,0x0069,0x006E,0x0074,0x0065,0x0072,0x0020,0x0065,0x006E,0x0063,0x006F,0x0075,0x006E,0x0074,0x0065,0x0072,0x0065,0x0064,0x0020,0x0027,0x007B, 0x0030,0x007D,0x0027,0x00 } , { 0x0063,0x0072,0x0065,0x0061,0x0074,0x0065,0x004F,0x0062,0x006A,0x0065,0x0063,0x0074,0x0020,0x0066,0x0061,0x0069,0x006C,0x0073,0x00 } , { 0x006F,0x0062,0x006A,0x0065,0x0063,0x0074,0x0020,0x0063,0x006F,0x0075,0x006E,0x0074,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0065,0x0078,0x0063,0x0065,0x0065,0x0064,0x0073,0x0020,0x0075,0x0070,0x0070,0x0065,0x0072,0x0020,0x0062,0x006F, 0x0075,0x006E,0x0064,0x0061,0x0072,0x0079,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } , { 0x0067,0x0072,0x0061,0x006D,0x006D,0x0061,0x0072,0x0020,0x0070,0x006F,0x006F,0x006C,0x0020,0x0069,0x0073,0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x00 } , { 0x0067,0x0072,0x0061,0x006D,0x006D,0x0061,0x0072,0x0020,0x0070,0x006F,0x006F,0x006C,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x00 } , { 0x0073,0x0074,0x0072,0x0069,0x006E,0x0067,0x0020,0x0070,0x006F,0x006F,0x006C,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0065,0x006D,0x0070,0x0074,0x0079,0x00 } , { 0x0073,0x0074,0x006F,0x0072,0x0065,0x0072,0x0020,0x006C,0x0065,0x0076,0x0065,0x006C,0x0020,0x0027,0x007B,0x0030,0x007D,0x0027,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x006D,0x0061,0x0074,0x0063,0x0068,0x0020,0x006C, 0x006F,0x0061,0x0064,0x0065,0x0072,0x0020,0x006C,0x0065,0x0076,0x0065,0x006C,0x0020,0x0027,0x007B,0x0031,0x007D,0x0027,0x00 } , { 0x0075,0x006E,0x0064,0x0065,0x0066,0x0069,0x006E,0x0065,0x0064,0x0020,0x0070,0x0072,0x0065,0x0066,0x0069,0x0078,0x0020,0x0069,0x006E,0x0020,0x0051,0x004E,0x0061,0x006D,0x0065,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x0020,0x0027,0x007B,0x0030, 0x007D,0x0027,0x00 } , { 0x0046,0x005F,0x0045,0x006E,0x0064,0x00 } }; const unsigned int gXMLExceptArraySize = 369; const XMLCh gXMLDOMMsgArray[][128] = { { 0x0046,0x005F,0x0053,0x0074,0x0061,0x0072,0x0074,0x00 } , { 0x0064,0x0075,0x006D,0x006D,0x0079,0x00 } , { 0x0069,0x006E,0x0064,0x0065,0x0078,0x0020,0x006F,0x0072,0x0020,0x0073,0x0069,0x007A,0x0065,0x0020,0x0069,0x0073,0x0020,0x006E,0x0065,0x0067,0x0061,0x0074,0x0069,0x0076,0x0065,0x002C,0x0020,0x006F,0x0072,0x0020,0x0067,0x0072,0x0065,0x0061,0x0074, 0x0065,0x0072,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065,0x0064,0x0020,0x0076,0x0061,0x006C,0x0075,0x0065,0x00 } , { 0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0065,0x0064,0x0020,0x0072,0x0061,0x006E,0x0067,0x0065,0x0020,0x006F,0x0066,0x0020,0x0074,0x0065,0x0078,0x0074,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0066,0x0069, 0x0074,0x0020,0x0069,0x006E,0x0074,0x006F,0x0020,0x0044,0x004F,0x004D,0x0053,0x0074,0x0072,0x0069,0x006E,0x0067,0x00 } , { 0x0061,0x0074,0x0074,0x0065,0x006D,0x0070,0x0074,0x0020,0x0069,0x0073,0x0020,0x006D,0x0061,0x0064,0x0065,0x0020,0x0074,0x006F,0x0020,0x0069,0x006E,0x0073,0x0065,0x0072,0x0074,0x0020,0x0061,0x0020,0x006E,0x006F,0x0064,0x0065,0x0020,0x0077,0x0068, 0x0065,0x0072,0x0065,0x0020,0x0069,0x0074,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0070,0x0065,0x0072,0x006D,0x0069,0x0074,0x0074,0x0065,0x0064,0x00 } , { 0x006E,0x006F,0x0064,0x0065,0x0020,0x0069,0x0073,0x0020,0x0075,0x0073,0x0065,0x0064,0x0020,0x0069,0x006E,0x0020,0x0061,0x0020,0x0064,0x0069,0x0066,0x0066,0x0065,0x0072,0x0065,0x006E,0x0074,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E, 0x0074,0x0020,0x0074,0x0068,0x0061,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x006F,0x006E,0x0065,0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x0063,0x0072,0x0065,0x0061,0x0074,0x0065,0x0064,0x0020,0x0069,0x0074,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006F,0x0072,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0058,0x004D,0x004C,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x00 } , { 0x006E,0x006F,0x0064,0x0065,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0020,0x0073,0x0074,0x006F,0x0072,0x0069,0x006E,0x0067,0x0020,0x0064,0x0061,0x0074,0x0061,0x00 } , { 0x0061,0x0074,0x0074,0x0065,0x006D,0x0070,0x0074,0x0020,0x0069,0x0073,0x0020,0x006D,0x0061,0x0064,0x0065,0x0020,0x0074,0x006F,0x0020,0x006D,0x006F,0x0064,0x0069,0x0066,0x0079,0x0020,0x0061,0x006E,0x0020,0x006F,0x0062,0x006A,0x0065,0x0063,0x0074, 0x0020,0x0077,0x0068,0x0065,0x0072,0x0065,0x0020,0x006D,0x006F,0x0064,0x0069,0x0066,0x0069,0x0063,0x0061,0x0074,0x0069,0x006F,0x006E,0x0073,0x0020,0x0061,0x0072,0x0065,0x0020,0x006E,0x006F,0x0074,0x0020,0x0061,0x006C,0x006C,0x006F,0x0077,0x0065, 0x0064,0x00 } , { 0x0061,0x0074,0x0074,0x0065,0x006D,0x0070,0x0074,0x0020,0x0069,0x0073,0x0020,0x006D,0x0061,0x0064,0x0065,0x0020,0x0074,0x006F,0x0020,0x0072,0x0065,0x0066,0x0065,0x0072,0x0065,0x006E,0x0063,0x0065,0x0020,0x0061,0x0020,0x006E,0x006F,0x0064,0x0065, 0x0020,0x0069,0x006E,0x0020,0x0061,0x0020,0x0063,0x006F,0x006E,0x0074,0x0065,0x0078,0x0074,0x0020,0x0077,0x0068,0x0065,0x0072,0x0065,0x0020,0x0069,0x0074,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0065,0x0078,0x0069, 0x0073,0x0074,0x00 } , { 0x0069,0x006D,0x0070,0x006C,0x0065,0x006D,0x0065,0x006E,0x0074,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0064,0x006F,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0020,0x0074,0x0068,0x0065, 0x0020,0x0072,0x0065,0x0071,0x0075,0x0065,0x0073,0x0074,0x0065,0x0064,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x006F,0x0062,0x006A,0x0065,0x0063,0x0074,0x0020,0x006F,0x0072,0x0020,0x006F,0x0070,0x0065,0x0072,0x0061,0x0074, 0x0069,0x006F,0x006E,0x00 } , { 0x0061,0x0074,0x0074,0x0065,0x006D,0x0070,0x0074,0x0020,0x0069,0x0073,0x0020,0x006D,0x0061,0x0064,0x0065,0x0020,0x0074,0x006F,0x0020,0x0061,0x0064,0x0064,0x0020,0x0061,0x006E,0x0020,0x0061,0x0074,0x0074,0x0072,0x0069,0x0062,0x0075,0x0074,0x0065, 0x0020,0x0074,0x0068,0x0061,0x0074,0x0020,0x0069,0x0073,0x0020,0x0061,0x006C,0x0072,0x0065,0x0061,0x0064,0x0079,0x0020,0x0069,0x006E,0x0020,0x0075,0x0073,0x0065,0x0020,0x0065,0x006C,0x0073,0x0065,0x0077,0x0068,0x0065,0x0072,0x0065,0x00 } , { 0x0061,0x0074,0x0074,0x0065,0x006D,0x0070,0x0074,0x0020,0x0069,0x0073,0x0020,0x006D,0x0061,0x0064,0x0065,0x0020,0x0074,0x006F,0x0020,0x0075,0x0073,0x0065,0x0020,0x0061,0x006E,0x0020,0x006F,0x0062,0x006A,0x0065,0x0063,0x0074,0x0020,0x0074,0x0068, 0x0061,0x0074,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x006F,0x0072,0x0020,0x0069,0x0073,0x0020,0x006E,0x006F,0x0020,0x006C,0x006F,0x006E,0x0067,0x0065,0x0072,0x0020,0x0075,0x0073,0x0061,0x0062,0x006C,0x0065,0x00 } , { 0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x006F,0x0072,0x0020,0x0069,0x006C,0x006C,0x0065,0x0067,0x0061,0x006C,0x0020,0x0073,0x0074,0x0072,0x0069,0x006E,0x0067,0x00 } , { 0x0061,0x0074,0x0074,0x0065,0x006D,0x0070,0x0074,0x0020,0x0069,0x0073,0x0020,0x006D,0x0061,0x0064,0x0065,0x0020,0x0074,0x006F,0x0020,0x006D,0x006F,0x0064,0x0069,0x0066,0x0079,0x0020,0x0074,0x0068,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020, 0x006F,0x0066,0x0020,0x0074,0x0068,0x0065,0x0020,0x0075,0x006E,0x0064,0x0065,0x0072,0x006C,0x0079,0x0069,0x006E,0x0067,0x0020,0x006F,0x0062,0x006A,0x0065,0x0063,0x0074,0x00 } , { 0x0061,0x0074,0x0074,0x0065,0x006D,0x0070,0x0074,0x0020,0x0069,0x0073,0x0020,0x006D,0x0061,0x0064,0x0065,0x0020,0x0074,0x006F,0x0020,0x0063,0x0072,0x0065,0x0061,0x0074,0x0065,0x0020,0x006F,0x0072,0x0020,0x0063,0x0068,0x0061,0x006E,0x0067,0x0065, 0x0020,0x0061,0x006E,0x0020,0x006F,0x0062,0x006A,0x0065,0x0063,0x0074,0x0020,0x0069,0x006E,0x0020,0x0061,0x0020,0x0077,0x0061,0x0079,0x0020,0x0077,0x0068,0x0069,0x0063,0x0068,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0063,0x006F,0x0072,0x0072, 0x0065,0x0063,0x0074,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0072,0x0065,0x0073,0x0070,0x0065,0x0063,0x0074,0x0020,0x0074,0x006F,0x0020,0x006E,0x0061,0x006D,0x0065,0x0073,0x0070,0x0061,0x0063,0x0065,0x0073,0x00 } , { 0x0070,0x0061,0x0072,0x0061,0x006D,0x0065,0x0074,0x0065,0x0072,0x0020,0x006F,0x0072,0x0020,0x0072,0x0065,0x0071,0x0075,0x0065,0x0073,0x0074,0x0065,0x0064,0x0020,0x006F,0x0070,0x0065,0x0072,0x0061,0x0074,0x0069,0x006F,0x006E,0x0020,0x0069,0x0073, 0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x0074,0x0068,0x0065,0x0020,0x0075,0x006E,0x0064,0x0065,0x0072,0x006C,0x0079,0x0069,0x006E,0x0067,0x0020,0x006F,0x0062, 0x006A,0x0065,0x0063,0x0074,0x00 } , { 0x0063,0x0061,0x006C,0x006C,0x0020,0x0074,0x006F,0x0020,0x0061,0x0020,0x006D,0x0065,0x0074,0x0068,0x006F,0x0064,0x0020,0x0073,0x0075,0x0063,0x0068,0x0020,0x0061,0x0073,0x0020,0x0069,0x006E,0x0073,0x0065,0x0072,0x0074,0x0042,0x0065,0x0066,0x006F, 0x0072,0x0065,0x0020,0x006F,0x0072,0x0020,0x0072,0x0065,0x006D,0x006F,0x0076,0x0065,0x0043,0x0068,0x0069,0x006C,0x0064,0x0020,0x0077,0x006F,0x0075,0x006C,0x0064,0x0020,0x006D,0x0061,0x006B,0x0065,0x0020,0x0074,0x0068,0x0065,0x0020,0x006E,0x006F, 0x0064,0x0065,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0072,0x0065,0x0073,0x0070,0x0065,0x0063,0x0074,0x0020,0x0074,0x006F,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074, 0x0020,0x0067,0x0072,0x0061,0x006D,0x006D,0x0061,0x0072,0x00 } , { 0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x0061,0x006E,0x0020,0x006F,0x0062,0x006A,0x0065,0x0063,0x0074,0x0020,0x0069,0x0073,0x0020,0x0069,0x006E,0x0063,0x006F,0x006D,0x0070,0x0061,0x0074,0x0069,0x0062,0x006C,0x0065,0x0020,0x0077, 0x0069,0x0074,0x0068,0x0020,0x0074,0x0068,0x0065,0x0020,0x0065,0x0078,0x0070,0x0065,0x0063,0x0074,0x0065,0x0064,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006F,0x0066,0x0020,0x0074,0x0068,0x0065,0x0020,0x0070,0x0061,0x0072,0x0061,0x006D,0x0065, 0x0074,0x0065,0x0072,0x0020,0x0061,0x0073,0x0073,0x006F,0x0063,0x0069,0x0061,0x0074,0x0065,0x0064,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0074,0x0068,0x0065,0x0020,0x006F,0x0062,0x006A,0x0065,0x0063,0x0074,0x00 } , { 0x0064,0x0075,0x006D,0x006D,0x0079,0x00 } , { 0x0062,0x006F,0x0075,0x006E,0x0064,0x0061,0x0072,0x0079,0x0020,0x0070,0x006F,0x0069,0x006E,0x0074,0x0073,0x0020,0x006F,0x0066,0x0020,0x0061,0x0020,0x0072,0x0061,0x006E,0x0067,0x0065,0x0020,0x0064,0x006F,0x0020,0x006E,0x006F,0x0074,0x0020,0x006D, 0x0065,0x0065,0x0074,0x0020,0x0073,0x0070,0x0065,0x0063,0x0069,0x0066,0x0069,0x0063,0x0020,0x0072,0x0065,0x0071,0x0075,0x0069,0x0072,0x0065,0x006D,0x0065,0x006E,0x0074,0x0073,0x00 } , { 0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0065,0x0072,0x0020,0x006F,0x0066,0x0020,0x0061,0x0020,0x0072,0x0061,0x006E,0x0067,0x0065,0x0020,0x0062,0x006F,0x0075,0x006E,0x0064,0x0061,0x0072,0x0079,0x0020,0x0070,0x006F,0x0069,0x006E,0x0074, 0x0020,0x0069,0x0073,0x0020,0x0073,0x0065,0x0074,0x0020,0x0074,0x006F,0x0020,0x0061,0x0020,0x006E,0x006F,0x0064,0x0065,0x0020,0x006F,0x0066,0x0020,0x0061,0x006E,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0074,0x0079,0x0070, 0x0065,0x0020,0x006F,0x0072,0x0020,0x0074,0x006F,0x0020,0x0061,0x0020,0x006E,0x006F,0x0064,0x0065,0x0020,0x0077,0x0069,0x0074,0x0068,0x0020,0x0061,0x006E,0x0020,0x0061,0x006E,0x0063,0x0065,0x0073,0x0074,0x006F,0x0072,0x0020,0x006F,0x0066,0x0020, 0x0061,0x006E,0x0020,0x0069,0x006E,0x0076,0x0061,0x006C,0x0069,0x0064,0x0020,0x0074,0x0079,0x0070,0x0065,0x00 } , { 0x0064,0x0075,0x006D,0x006D,0x0079,0x00 } , { 0x0066,0x0061,0x0069,0x006C,0x0065,0x0064,0x0020,0x0074,0x006F,0x0020,0x006C,0x006F,0x0061,0x0064,0x0020,0x0061,0x0020,0x0064,0x006F,0x0063,0x0075,0x006D,0x0065,0x006E,0x0074,0x0020,0x006F,0x0072,0x0020,0x0061,0x006E,0x0020,0x0058,0x004D,0x004C, 0x0020,0x0066,0x0072,0x0061,0x0067,0x006D,0x0065,0x006E,0x0074,0x0020,0x0075,0x0073,0x0069,0x006E,0x0067,0x0020,0x0044,0x004F,0x004D,0x004C,0x0053,0x0050,0x0061,0x0072,0x0073,0x0065,0x0072,0x00 } , { 0x0066,0x0061,0x0069,0x006C,0x0065,0x0064,0x0020,0x0074,0x006F,0x0020,0x0073,0x0065,0x0072,0x0069,0x0061,0x006C,0x0069,0x007A,0x0065,0x0020,0x0061,0x0020,0x0044,0x004F,0x004D,0x0020,0x006E,0x006F,0x0064,0x0065,0x0020,0x0075,0x0073,0x0069,0x006E, 0x0067,0x0020,0x0044,0x004F,0x004D,0x004C,0x0053,0x0053,0x0065,0x0072,0x0069,0x0061,0x006C,0x0069,0x007A,0x0065,0x0072,0x00 } , { 0x0064,0x0075,0x006D,0x006D,0x0079,0x00 } , { 0x0065,0x0078,0x0070,0x0072,0x0065,0x0073,0x0073,0x0069,0x006F,0x006E,0x0020,0x0068,0x0061,0x0073,0x0020,0x0069,0x006E,0x0063,0x006F,0x0072,0x0072,0x0065,0x0063,0x0074,0x0020,0x0073,0x0079,0x006E,0x0074,0x0061,0x0078,0x0020,0x006F,0x0072,0x0020, 0x0063,0x006F,0x006E,0x0074,0x0061,0x0069,0x006E,0x0073,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0066,0x0065,0x0061,0x0074,0x0075,0x0072,0x0065,0x0073,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074, 0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x0074,0x0068,0x0065,0x0020,0x0058,0x004D,0x004C,0x0020,0x0053,0x0063,0x0068,0x0065,0x006D,0x0061,0x0020,0x0058,0x0050,0x0061,0x0074,0x0068,0x0020,0x0073,0x0075,0x0062,0x0073,0x0065,0x0074,0x00 } , { 0x0072,0x0065,0x0071,0x0075,0x0065,0x0073,0x0074,0x0065,0x0064,0x0020,0x0072,0x0065,0x0073,0x0075,0x006C,0x0074,0x0020,0x0074,0x0079,0x0070,0x0065,0x0020,0x006E,0x006F,0x0074,0x0020,0x0073,0x0075,0x0070,0x0070,0x006F,0x0072,0x0074,0x0065,0x0064, 0x00 } , { 0x006E,0x006F,0x0020,0x0063,0x0075,0x0072,0x0072,0x0065,0x006E,0x0074,0x0020,0x0072,0x0065,0x0073,0x0075,0x006C,0x0074,0x0020,0x0069,0x006E,0x0020,0x0074,0x0068,0x0065,0x0020,0x0072,0x0065,0x0073,0x0075,0x006C,0x0074,0x0020,0x006F,0x0062,0x006A, 0x0065,0x0063,0x0074,0x00 } , { 0x006E,0x0065,0x0073,0x0074,0x0065,0x0064,0x0020,0x0043,0x0044,0x0041,0x0054,0x0041,0x0020,0x0073,0x0065,0x0063,0x0074,0x0069,0x006F,0x006E,0x0073,0x00 } , { 0x0075,0x006E,0x0072,0x0065,0x0070,0x0072,0x0065,0x0073,0x0065,0x006E,0x0074,0x0061,0x0062,0x006C,0x0065,0x0020,0x0063,0x0068,0x0061,0x0072,0x0061,0x0063,0x0074,0x0065,0x0072,0x00 } , { 0x0075,0x006E,0x0072,0x0065,0x0063,0x006F,0x0067,0x006E,0x0069,0x007A,0x0065,0x0064,0x0020,0x006E,0x006F,0x0064,0x0065,0x0020,0x0074,0x0079,0x0070,0x0065,0x00 } , { 0x0070,0x0061,0x0072,0x0073,0x0069,0x006E,0x0067,0x0020,0x0069,0x006E,0x0020,0x0070,0x0072,0x006F,0x0067,0x0072,0x0065,0x0073,0x0073,0x00 } , { 0x0070,0x0061,0x0072,0x0073,0x0069,0x006E,0x0067,0x0020,0x0061,0x0062,0x006F,0x0072,0x0074,0x0065,0x0064,0x0020,0x0062,0x0079,0x0020,0x0074,0x0068,0x0065,0x0020,0x0075,0x0073,0x0065,0x0072,0x00 } , { 0x0070,0x0061,0x0072,0x0073,0x0069,0x006E,0x0067,0x0020,0x0066,0x0061,0x0069,0x006C,0x0065,0x0064,0x00 } , { 0x0046,0x005F,0x0045,0x006E,0x0064,0x00 } }; const unsigned int gXMLDOMMsgArraySize = 41; XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/MsgLoaders/InMemory/InMemMsgLoader.cpp0000644000175000017500000001420710665077060024564 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: InMemMsgLoader.cpp 570552 2007-08-28 19:57:36Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include "InMemMsgLoader.hpp" #include "XercesMessages_en_US.hpp" XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Public Constructors and Destructor // --------------------------------------------------------------------------- InMemMsgLoader::InMemMsgLoader(const XMLCh* const msgDomain) :fMsgDomain(0) { if (!XMLString::equals(msgDomain, XMLUni::fgXMLErrDomain) && !XMLString::equals(msgDomain, XMLUni::fgExceptDomain) && !XMLString::equals(msgDomain, XMLUni::fgXMLDOMMsgDomain) && !XMLString::equals(msgDomain, XMLUni::fgValidityDomain)) { XMLPlatformUtils::panic(PanicHandler::Panic_UnknownMsgDomain); } fMsgDomain = XMLString::replicate(msgDomain, XMLPlatformUtils::fgMemoryManager); } InMemMsgLoader::~InMemMsgLoader() { XMLPlatformUtils::fgMemoryManager->deallocate(fMsgDomain);//delete [] fMsgDomain; } // --------------------------------------------------------------------------- // Implementation of the virtual message loader API // --------------------------------------------------------------------------- bool InMemMsgLoader::loadMsg(const XMLMsgLoader::XMLMsgId msgToLoad , XMLCh* const toFill , const XMLSize_t maxChars) { // // Just use the id to map into the correct array of messages. Then // copy that to the caller's buffer. // // NOTE: The source text is in little endian form. So, if we are a // big endian machine, flip them in the process. // XMLCh* endPtr = toFill + maxChars; XMLCh* outPtr = toFill; const XMLCh* srcPtr = 0; if (XMLString::equals(fMsgDomain, XMLUni::fgXMLErrDomain)) { if ( msgToLoad > gXMLErrArraySize) return false; else srcPtr = gXMLErrArray[msgToLoad - 1]; } else if (XMLString::equals(fMsgDomain, XMLUni::fgExceptDomain)) { if ( msgToLoad > gXMLExceptArraySize) return false; else srcPtr = gXMLExceptArray[msgToLoad - 1]; } else if (XMLString::equals(fMsgDomain, XMLUni::fgValidityDomain)) { if ( msgToLoad > gXMLValidityArraySize) return false; else srcPtr = gXMLValidityArray[msgToLoad - 1]; } else if (XMLString::equals(fMsgDomain, XMLUni::fgXMLDOMMsgDomain)) { if ( msgToLoad > gXMLDOMMsgArraySize) return false; else srcPtr = gXMLDOMMsgArray[msgToLoad - 1]; } while (*srcPtr && (outPtr < endPtr)) { *outPtr++ = *srcPtr++; } *outPtr = 0; return true; } bool InMemMsgLoader::loadMsg(const XMLMsgLoader::XMLMsgId msgToLoad , XMLCh* const toFill , const XMLSize_t maxChars , const XMLCh* const repText1 , const XMLCh* const repText2 , const XMLCh* const repText3 , const XMLCh* const repText4 , MemoryManager* const manager) { // Call the other version to load up the message if (!loadMsg(msgToLoad, toFill, maxChars)) return false; // And do the token replacement XMLString::replaceTokens(toFill, maxChars, repText1, repText2, repText3, repText4, manager); return true; } bool InMemMsgLoader::loadMsg(const XMLMsgLoader::XMLMsgId msgToLoad , XMLCh* const toFill , const XMLSize_t maxChars , const char* const repText1 , const char* const repText2 , const char* const repText3 , const char* const repText4 , MemoryManager * const manager) { // // Transcode the provided parameters and call the other version, // which will do the replacement work. // XMLCh* tmp1 = 0; XMLCh* tmp2 = 0; XMLCh* tmp3 = 0; XMLCh* tmp4 = 0; bool bRet = false; if (repText1) tmp1 = XMLString::transcode(repText1, manager); if (repText2) tmp2 = XMLString::transcode(repText2, manager); if (repText3) tmp3 = XMLString::transcode(repText3, manager); if (repText4) tmp4 = XMLString::transcode(repText4, manager); bRet = loadMsg(msgToLoad, toFill, maxChars, tmp1, tmp2, tmp3, tmp4, manager); if (tmp1) manager->deallocate(tmp1);//delete [] tmp1; if (tmp2) manager->deallocate(tmp2);//delete [] tmp2; if (tmp3) manager->deallocate(tmp3);//delete [] tmp3; if (tmp4) manager->deallocate(tmp4);//delete [] tmp4; return bRet; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/MsgLoaders/MsgCatalog/0000755000175000017500000000000011363617255021535 5ustar borisborisxerces-c-3.1.1/src/xercesc/util/MsgLoaders/MsgCatalog/Makefile.in0000644000175000017500000000434010764203125023572 0ustar borisboris srcdir = @srcdir@ top_srcdir = @top_srcdir@ top_builddir = @top_builddir@ prefix = @prefix@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ mkdir_p = @mkdir_p@ include $(top_srcdir)/version.incl # No conventional target - this dir is resources only. TARGET= CLEANFILES += $(RESFILES) # Resource shortname PKGNAME=XercesMessages # target file for resource bundle - this must be set, or 'make all' won't # build any resources. RESTARGET=$(top_builddir)/src/.libs/$(PKGNAME)_en_US.cat # Resource files. Add new ones for additional locales here. # keep in sync with the file RESLIST RESFILES=$(PKGNAME)_en_US.cat # list of targets that aren't actually created .PHONY: report check: all all: $(RESTARGET) $(TARGET) $(RESTARGET): $(RESFILES) @echo building $(RESTARGET) $(mkdir_p) $(top_builddir)/src/.libs cp $(RESFILES) $(top_builddir)/src/.libs # clean out files distclean clean: $(CLEAN_SUBDIR) -rm -f $(RESTARGET) ## resources $(PKGNAME)_%.cat: $(srcdir)/$(PKGNAME)_%.Msg @echo "generating $@" gencat $@ $^ # for installing the library # for installing the library install: $(RESTARGET) $(mkdir_p) $(prefix)/msg $(INSTALL_PROGRAM) $(RESTARGET) $(prefix)/msg uninstall: -rm -f $(prefix)/msg/$(RESFILES) # Needed to support "make dist" distdir: @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='XercesMessages_en_US.Msg Makefile.in'; \ 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 xerces-c-3.1.1/src/xercesc/util/MsgLoaders/MsgCatalog/MsgCatalogLoader.cpp0000644000175000017500000001637310745420351025413 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: MsgCatalogLoader.cpp 614259 2008-01-22 16:59:21Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include "MsgCatalogLoader.hpp" #include "XMLMsgCat_Ids.hpp" #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Public Constructors and Destructor // --------------------------------------------------------------------------- MsgCatalogLoader::MsgCatalogLoader(const XMLCh* const msgDomain) :fCatalogHandle(0) ,fMsgSet(0) { if (!XMLString::equals(msgDomain, XMLUni::fgXMLErrDomain) && !XMLString::equals(msgDomain, XMLUni::fgExceptDomain) && !XMLString::equals(msgDomain, XMLUni::fgXMLDOMMsgDomain) && !XMLString::equals(msgDomain, XMLUni::fgValidityDomain)) { XMLPlatformUtils::panic(PanicHandler::Panic_UnknownMsgDomain); } // Prepare the path info char locationBuf[1024]; memset(locationBuf, 0, sizeof locationBuf); const char *nlsHome = XMLMsgLoader::getNLSHome(); if (nlsHome) { strcpy(locationBuf, nlsHome); strcat(locationBuf, "/"); } else { nlsHome = getenv("XERCESC_NLS_HOME"); if (nlsHome) { strcpy(locationBuf, nlsHome); strcat(locationBuf, "/"); } else { nlsHome = getenv("XERCESCROOT"); if (nlsHome) { strcpy(locationBuf, nlsHome); strcat(locationBuf, "/msg/"); } } } // Prepare user-specified locale specific cat file char catuser[1024]; memset(catuser, 0, sizeof catuser); strcpy(catuser, locationBuf); strcat(catuser, "XercesMessages_"); strcat(catuser, XMLMsgLoader::getLocale()); strcat(catuser, ".cat"); char catdefault[1024]; memset(catdefault, 0, sizeof catdefault); strcpy(catdefault, locationBuf); strcat(catdefault, "XercesMessages_en_US.cat"); /** * To open user-specified locale specific cat file * and default cat file if necessary */ if ( ((fCatalogHandle=catopen(catuser, 0)) == (nl_catd)-1) && ((fCatalogHandle=catopen(catdefault, 0)) == (nl_catd)-1) ) { // Probably have to call panic here printf("Could not open catalog:\n %s\n or %s\n", catuser, catdefault); XMLPlatformUtils::panic(PanicHandler::Panic_CantLoadMsgDomain); } if (XMLString::equals(msgDomain, XMLUni::fgXMLErrDomain)) fMsgSet = CatId_XMLErrs; else if (XMLString::equals(msgDomain, XMLUni::fgExceptDomain)) fMsgSet = CatId_XMLExcepts; else if (XMLString::equals(msgDomain, XMLUni::fgValidityDomain)) fMsgSet = CatId_XMLValid; else if (XMLString::equals(msgDomain, XMLUni::fgXMLDOMMsgDomain)) fMsgSet = CatId_XMLDOMMsg; } MsgCatalogLoader::~MsgCatalogLoader() { catclose(fCatalogHandle); } // --------------------------------------------------------------------------- // Implementation of the virtual message loader API // --------------------------------------------------------------------------- bool MsgCatalogLoader::loadMsg(const XMLMsgLoader::XMLMsgId msgToLoad , XMLCh* const toFill , const XMLSize_t maxChars) { char msgString[100]; sprintf(msgString, "Could not find message ID %d from message set %d\n", msgToLoad, fMsgSet); char* catMessage = catgets( fCatalogHandle, fMsgSet, (int)msgToLoad, msgString); // catgets returns a pointer to msgString if it fails to locate the message // from the message catalog if (XMLString::equals(catMessage, msgString)) return false; else { XMLString::transcode(catMessage, toFill, maxChars); return true; } } bool MsgCatalogLoader::loadMsg(const XMLMsgLoader::XMLMsgId msgToLoad , XMLCh* const toFill , const XMLSize_t maxChars , const XMLCh* const repText1 , const XMLCh* const repText2 , const XMLCh* const repText3 , const XMLCh* const repText4 , MemoryManager* const manager) { // Call the other version to load up the message if (!loadMsg(msgToLoad, toFill, maxChars)) return false; // And do the token replacement XMLString::replaceTokens(toFill, maxChars, repText1, repText2, repText3, repText4, manager); return true; } bool MsgCatalogLoader::loadMsg(const XMLMsgLoader::XMLMsgId msgToLoad , XMLCh* const toFill , const XMLSize_t maxChars , const char* const repText1 , const char* const repText2 , const char* const repText3 , const char* const repText4 , MemoryManager * const manager) { // // Transcode the provided parameters and call the other version, // which will do the replacement work. // XMLCh* tmp1 = 0; XMLCh* tmp2 = 0; XMLCh* tmp3 = 0; XMLCh* tmp4 = 0; bool bRet = false; if (repText1) tmp1 = XMLString::transcode(repText1, manager); if (repText2) tmp2 = XMLString::transcode(repText2, manager); if (repText3) tmp3 = XMLString::transcode(repText3, manager); if (repText4) tmp4 = XMLString::transcode(repText4, manager); bRet = loadMsg(msgToLoad, toFill, maxChars, tmp1, tmp2, tmp3, tmp4, manager); if (tmp1) manager->deallocate(tmp1);//delete [] tmp1; if (tmp2) manager->deallocate(tmp2);//delete [] tmp2; if (tmp3) manager->deallocate(tmp3);//delete [] tmp3; if (tmp4) manager->deallocate(tmp4);//delete [] tmp4; return bRet; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/util/MsgLoaders/MsgCatalog/MsgCatalogLoader.hpp0000644000175000017500000000733610665077060025425 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: MsgCatalogLoader.hpp 570552 2007-08-28 19:57:36Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_MSGCATALOGLOADER_HPP) #define XERCESC_INCLUDE_GUARD_MSGCATALOGLOADER_HPP #include #include #include XERCES_CPP_NAMESPACE_BEGIN // // This is a simple in Iconv RC message loader implementation. // class XMLUTIL_EXPORT MsgCatalogLoader : public XMLMsgLoader { public : // ----------------------------------------------------------------------- // Public Constructors and Destructor // ----------------------------------------------------------------------- MsgCatalogLoader(const XMLCh* const msgDomain); ~MsgCatalogLoader(); // ----------------------------------------------------------------------- // Implementation of the virtual message loader API // ----------------------------------------------------------------------- virtual bool loadMsg ( const XMLMsgLoader::XMLMsgId msgToLoad , XMLCh* const toFill , const XMLSize_t maxChars ); virtual bool loadMsg ( const XMLMsgLoader::XMLMsgId msgToLoad , XMLCh* const toFill , const XMLSize_t maxChars , const XMLCh* const repText1 , const XMLCh* const repText2 = 0 , const XMLCh* const repText3 = 0 , const XMLCh* const repText4 = 0 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual bool loadMsg ( const XMLMsgLoader::XMLMsgId msgToLoad , XMLCh* const toFill , const XMLSize_t maxChars , const char* const repText1 , const char* const repText2 = 0 , const char* const repText3 = 0 , const char* const repText4 = 0 , MemoryManager * const manager = XMLPlatformUtils::fgMemoryManager ); private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- MsgCatalogLoader(); MsgCatalogLoader(const MsgCatalogLoader&); MsgCatalogLoader& operator=(const MsgCatalogLoader&); // ----------------------------------------------------------------------- // Private data members // // fModHandle // This is our DLL module handle that we need in order to load // resource messages. This is set during construction. // // fMsgSet // This is the message set id for the error domain that this loader is for. // ----------------------------------------------------------------------- nl_catd fCatalogHandle; unsigned int fMsgSet; }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/util/MsgLoaders/MsgCatalog/XercesMessages_en_US.Msg0000644000175000017500000012160711300755135026215 0ustar borisboris$quote " $set 1 2 notation '{0}' has already been declared 3 attribute '{0}' has already been declared for element '{1}' 4 encoding '{0}' from XML declaration or manually set contradicts the auto-sensed encoding; ignoring 5 element '{0}' is referenced in a content model but was never declared 6 element '{0}' is referenced in an ATTLIST but was never declared 7 {0} 8 unable to include document '{0}' 9 unable to open text file target '{0}' 10 unable to include resource '{0}' 13 '{0}' is not allowed for the content of simpleType; only list, union, and restriction are allowed 14 globally-defined complex type must have a name 15 globally-declared attribute must have a name 16 attribute declaration must have name or 'ref' attribute 17 element declaration must have name or 'ref' attribute 18 group declaration must have name or a 'ref' attribute 19 attributeGroup declaration must have name or 'ref' attribute 20 anonymous complexType in element '{0}' has name 21 anonymous simpleType in element '{0}' has name 22 content of element declaration must match (annotation?, (simpleType | complexType)?, (unique | key | keyref)*) 23 invalid content in simple type '{0}'; only list, union, and restriction are allowed 24 expected simpleType in list definition for type '{0}' 25 list, union, or restriction content is invalid for type '{0}' 26 invalid content in list definition for type '{0}' 27 expected simpleType in restriction definition for type '{0}' 28 facet '{0}' is already defined 29 expected simpleType in union definition for type '{0}' 30 content in simpleType definition is empty 31 expected restriction or extension in simpleContent definition 32 base attribute must be specified for restriction or extension definition 33 expected restriction or extension in complexContent definition 34 invalid content in 'schema' element 35 invalid content for type '{0}' 36 unknown simpleType '{0}' 37 unknown complexType '{0}' 38 prefix '{0}' can not be resolved to namespace URI 39 referenced element '{0}' not found 40 type '{0}:{1}' not found 41 attribute '{0}' not found 42 invalid element '{0}' in complex type definition 43 base type '{0}' not found 44 unable to create validator for '{0}' 45 invalid element following simpleContent definition in complexType 46 invalid element following complexContent definition in complexType 47 attribute '{0}' cannot have both fixed and default values 48 attribute '{0}' with default value must be optional 49 attribute '{0}' declared more than once in the same scope 50 attribute '{0}' cannot have both 'type' attribute and simpleType definition 51 simpleType '{0}:{1}' for attribute '{2}' not found 52 element '{0}' cannot have both fixed and default values 53 invalid {0} name '{1}' 54 element '{0}' cannot have both 'type' attribute and simpleType/complexType definition 55 element '{0}' has fixed or default value and must have mixed simple or simple content model 56 simpleType '{0}' that '{1}' extends has a value of the final attribute that does not permit extension 57 type '{0}' specified as the base in simpleContent definition must not have complex content 58 type '{0}' is a simple type and cannot be used in derivation by restriction in complexType definition 59 invalid element following restriction or extension definition in simpleContent 60 invalid element following restriction or extension definition in complexContent 61 duplicate annotation in type '{0}' 62 type '{0}' cannot be used in its own union, list, or restriction definition 63 block value '{0}' is invalid 64 final value '{0}' is invalid 65 element '{0}' cannot be part of the substitution group headed by '{1}' 66 element '{0}' has a type which does not derive from the type of the element at the head of the substitution group 67 element '{0}' declared more than once in the same scope 68 value '{0}' invalid for attribute '{1}' 69 attribute '{0}' has both 'ref' attribute and inline simpleType definition or 'form' or 'type' attribute 70 duplicate reference attribute '{0}:{1}' in complexType definition 71 derivation by restriction is forbidden by either base type '{0}' or globally 72 derivation by extension is forbidden by either base type '{0}' or globally 73 base type specified in complexContent definition must be a complex type 74 imported schema '{0}' has different target namespace '{1}'; expected '{2}' 75 'schemaLocation' attribute must be specified in element '{0}' 76 included schema '{0}' has different target namespace '{1}' 77 at most one annotation is allowed 78 content of attribute '{0}' must match (annotation?, simpleType?) 79 attribute '{0}' must appear in global {1} declarations 80 attribute '{0}' must appear in local {1} declarations 81 attribute '{0}' cannot appear in global {1} declarations 82 attribute '{0}' cannot appear in local {1} declarations 83 minOccurs value '{0}' must not be greater than maxOccurs value '{1}' 84 duplicate annotation in anyAttribute declaration 85 global {0} declaration must have name 86 circular definition in '{0}' 87 global type '{0}:{1}' declared more than once or also declared as {2} 88 global {0} '{1}' declared more than once 89 invalid value '{0}' for whiteSpace facet; expected 'collapse' 90 namespace of import declaration must be different from target namespace of importing schema 91 importing schema must have target namespace if namespace in import declaration is not present 92 element '{0}' cannot have value constraint '{1}' if its type is derived from ID 93 element/attribute '{0}' is of NOTATION type 94 element '{0}' has mixed content type and the content type's particle must be emptiable 95 complexType definition has empty content but base type is not empty or does not have emptiable particle 96 content types of base type '{0}' and derived type '{1}' must both be mixed or element-only 97 derived content type is not a valid restriction of base content type 98 derivation by extension or restriction is forbidden by either base type '{0}' or globally 99 item type definition must have variety of atomic or union where all member types must be atomic 100 group '{0}' must contain all, choice, or sequence compositor 101 content of attributeGroup '{0}' must match (annotation?, ((attribute | attributeGroup)*, anyAttribute?)) 102 top-level compositor in a group must not have 'minOccurs' or 'maxOccurs' attribute 103 {0} '{1}:{2}' not found 104 group with the all compositor must only appear as content type of a complex type 105 group with the all compositor constituting the content type of a complex type must have both minOccurs and maxOccurs equal 1 106 element declaration in the all compositor must have minOccurs and maxOccurs equal 0 or 1 107 attribute '{0}' is already defined in base 108 intensional intersection of attribute wildcards must be expressible 109 base type does not have any attributes 110 attribute '{0}' has incompatible use value in the base 111 type of attribute '{0}' must be derived by restriction from type of the corresponding attribute in the base 112 attribute '{0}' does not have a fixed value or has a different fixed value from that of the base 113 attribute '{0}' has invalid target namespace with respect to the base wildcard constraint or base has no wildcard 114 attribute wildcard is present in the derived type but not in the base 115 attribute wildcard in the derived type is not a valid subset of that in the base 116 attribute '{0}' cannot have different use value in the derived type if the base attribute use value is 'prohibited' 117 attribute wildcard in the derived type must be identical to or stricter than the one in the base 118 unexpected '{0}' in the content of the all compositor; only elements are allowed 119 redefined schema '{0}' has a different target namespace '{1}' 120 simpleType in redefine must have a restriction definition 121 simpleType base attribute in redefine must reference the original type with the same name 122 complexType in redefine must have a restriction or extension definition 123 complexType base attribute in redefine must reference the original type with the same name 124 group '{0}' must have minOccurs and maxOccurs equal 1 125 unable to find declaration in the schema being redefined corresponding to '{0}' 126 group declaration in redefine may only contain one reference to itself 127 attributeGroup declaration in redefine may only contain one reference to itself 128 redefine declaration cannot contain '{0}' 129 notation declaration '{0}:{1}' not found 130 more than one identity constraint has name '{0}' 131 identity constraint declaration must match (annotation?, selector, field+) 132 key reference declaration '{0}' refers to unknown key '{1}' 133 field cardinalities for keyref '{0}' and key '{1}' must match 134 XPath expression is missing or empty 135 fixed value in attribute reference is not set or differs from the fixed value of '{0}' 136 attribute '{0}' is of ID type or type derived from ID and cannot have default/fixed value constraint 137 attribute '{0}' is a subsequent attribute in this complex type with a type derived from ID 138 attribute '{0}' is a subsequent attribute in this attribute group with a type derived from ID 139 empty value illegal for 'targetNamespace' attribute; target namespace must be absent or contain non-empty value 140 {0} 141 '{0}' has already been included or redefined 142 namespace '{0}' is referenced without import declaration 143 all compositor that is part of a complex type definition must constitute the entire content of the definition 144 annotation can only contain appinfo and documentation declarations 145 invalid facet name '{0}' 146 root element name of XML Schema document must be 'schema' 147 circular substitution group in element '{0}' 148 element '{0}' must be from the XML Schema namespace 149 target namespace of attribute '{0}' cannot be http://www.w3.org/2001/XMLSchema-instance 150 invalid namespace declaration 151 namespace fix-up cannot be performed on DOM Level 1 node 152 more than one anyAttribute declaration found in complex type declaration 153 anyAttribute must not be followed by other declarations 156 parser has encountered more than '{0}' entity expansions in the document; this is the limit imposed by the application 157 expected comment or CDATA section 158 attribute name expected 159 notation name expected 160 illegal repetition of elements in mixed content model 161 default attribute declaration expected 162 equal sign expected 163 element name expected 164 comment must start with xerces-c-3.1.1/src/xercesc/NLS/XMLErrList.dtd0000644000175000017500000000300711274310172017562 0ustar borisboris xerces-c-3.1.1/src/xercesc/parsers/0000755000175000017500000000000011363617234016153 5ustar borisborisxerces-c-3.1.1/src/xercesc/parsers/AbstractDOMParser.hpp0000644000175000017500000020621111360344373022144 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: AbstractDOMParser.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_ABSTRACTDOMPARSER_HPP) #define XERCESC_INCLUDE_GUARD_ABSTRACTDOMPARSER_HPP #include #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN class XMLPScanToken; class XMLScanner; class XMLValidator; class DOMDocumentImpl; class DOMDocumentTypeImpl; class DOMEntityImpl; class DOMElement; class GrammarResolver; class XMLGrammarPool; class PSVIHandler; /** * This class implements the Document Object Model (DOM) interface. * It is used as a base for DOM parsers (i.e. XercesDOMParser, DOMLSParser). */ class PARSERS_EXPORT AbstractDOMParser : public XMemory , public XMLDocumentHandler , public XMLErrorReporter , public XMLEntityHandler , public DocTypeHandler , public PSVIHandler { public : // ----------------------------------------------------------------------- // Class types // ----------------------------------------------------------------------- /** @name Public constants */ //@{ /** ValScheme enum used in setValidationScheme * Val_Never: Do not report validation errors. * Val_Always: The parser will always report validation errors. * Val_Auto: The parser will report validation errors only if a grammar is specified. * * @see #setValidationScheme */ enum ValSchemes { Val_Never , Val_Always , Val_Auto }; //@} // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor */ virtual ~AbstractDOMParser(); //@} // ----------------------------------------------------------------------- // Utility methods // ----------------------------------------------------------------------- /** @name Utility methods */ //@{ /** Reset the parser * * This method resets the state of the DOM driver and makes * it ready for a fresh parse run. */ void reset(); /** Adopt the DOM document * * This method returns the DOMDocument object representing the * root of the document tree. * * The caller will adopt the DOMDocument and thus is responsible to * call DOMDocument::release() to release the associated memory. * The parser will not delete it. The ownership is transferred * from the parser to the caller. * * @return The adopted DOMDocument object which represents the entire * XML document. */ DOMDocument* adoptDocument(); //@} // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- /** @name Getter methods */ //@{ /** Get the DOM document * * This method returns the DOMDocument object representing the * root of the document tree. This object provides the primary * access to the document's data. * * The returned DOMDocument object is owned by the parser. * * @return The DOMDocument object which represents the entire * XML document. */ DOMDocument* getDocument(); /** Get a const reference to the validator * * This method returns a reference to the parser's installed * validator. * * @return A const reference to the installed validator object. */ const XMLValidator& getValidator() const; /** * This method returns an enumerated value that indicates the current * validation scheme set on this parser. * * @return The ValSchemes value current set on this parser. * @see #setValidationScheme */ ValSchemes getValidationScheme() const; /** Get the 'do schema' flag * * This method returns the state of the parser's schema processing * flag. * * @return true, if the parser is currently configured to * understand schema, false otherwise. * * @see #setDoSchema */ bool getDoSchema() const; /** Get the 'full schema constraint checking' flag * * This method returns the state of the parser's full schema constraint * checking flag. * * @return true, if the parser is currently configured to * have full schema constraint checking, false otherwise. * * @see #setValidationSchemaFullChecking */ bool getValidationSchemaFullChecking() const; /** Get the identity constraint checking' flag * * This method returns the state of the parser's identity constraint * checking flag. * * @return true, if the parser is currently configured to * have identity constraint checking, false otherwise. * * @see setIdentityConstraintChecking */ bool getIdentityConstraintChecking() const; /** Get error count from the last parse operation. * * This method returns the error count from the last parse * operation. Note that this count is actually stored in the * scanner, so this method simply returns what the * scanner reports. * * @return number of errors encountered during the latest * parse operation. * */ XMLSize_t getErrorCount() const; /** Get the 'do namespaces' flag * * This method returns the state of the parser's namespace processing * flag. * * @return true, if the parser is currently configured to * understand namespaces, false otherwise. * * @see #setDoNamespaces */ bool getDoNamespaces() const; /** Get the 'exit on first error' flag * * This method returns the state of the parser's * exit-on-First-Fatal-Error flag. If this flag is true, then the * parse will exit the first time it sees any non-wellformed XML or * any validity error. The default state is true. * * @return true, if the parser is currently configured to * exit on the first fatal error, false otherwise. * * @see #setExitOnFirstFatalError */ bool getExitOnFirstFatalError() const; /** * This method returns the state of the parser's * validation-constraint-fatal flag. * * @return true, if the parser is currently configured to * set validation constraint errors as fatal, false * otherwise. * * @see #setValidationConstraintFatal */ bool getValidationConstraintFatal() const; /** Get the 'include entity references' flag * * This method returns the flag that specifies whether the parser is * creating entity reference nodes in the DOM tree being produced. * * @return The state of the create entity reference node * flag. * @see #setCreateEntityReferenceNodes */ bool getCreateEntityReferenceNodes()const; /** Get the 'include ignorable whitespace' flag. * * This method returns the state of the parser's include ignorable * whitespace flag. * * @return 'true' if the include ignorable whitespace flag is set on * the parser, 'false' otherwise. * * @see #setIncludeIgnorableWhitespace */ bool getIncludeIgnorableWhitespace() const; /** Get the set of Namespace/SchemaLocation that is specified externally. * * This method returns the list of Namespace/SchemaLocation that was * specified using setExternalSchemaLocation. * * The parser owns the returned string, and the memory allocated for * the returned string will be destroyed when the parser is deleted. * * To ensure accessibility of the returned information after the parser * is deleted, callers need to copy and store the returned information * somewhere else. * * @return a pointer to the list of Namespace/SchemaLocation that was * specified externally. The pointer spans the same life-time as * the parser. A null pointer is returned if nothing * was specified externally. * * @see #setExternalSchemaLocation(const XMLCh* const) */ XMLCh* getExternalSchemaLocation() const; /** Get the noNamespace SchemaLocation that is specified externally. * * This method returns the no target namespace XML Schema Location * that was specified using setExternalNoNamespaceSchemaLocation. * * The parser owns the returned string, and the memory allocated for * the returned string will be destroyed when the parser is deleted. * * To ensure accessibility of the returned information after the parser * is deleted, callers need to copy and store the returned information * somewhere else. * * @return a pointer to the no target namespace Schema Location that was * specified externally. The pointer spans the same life-time as * the parser. A null pointer is returned if nothing * was specified externally. * * @see #setExternalNoNamespaceSchemaLocation(const XMLCh* const) */ XMLCh* getExternalNoNamespaceSchemaLocation() const; /** Get the SecurityManager instance attached to this parser. * * This method returns the security manager * that was specified using setSecurityManager. * * The SecurityManager instance must have been specified by the application; * this should not be deleted until after the parser has been deleted (or * a new SecurityManager instance has been supplied to the parser). * * @return a pointer to the SecurityManager instance * specified externally. A null pointer is returned if nothing * was specified externally. * * @see #setSecurityManager */ SecurityManager* getSecurityManager() const; /** Get the raw buffer low water mark for this parser. * * If the number of available bytes in the raw buffer is less than * the low water mark the parser will attempt to read more data before * continuing parsing. By default the value for this parameter is 100 * bytes. You may want to set this parameter to 0 if you would like * the parser to parse the available data immediately without * potentially blocking while waiting for more date. * * @return current low water mark * * @see #setSecurityManager */ const XMLSize_t& getLowWaterMark() const; /** Get the 'Loading External DTD' flag * * This method returns the state of the parser's loading external DTD * flag. * * @return false, if the parser is currently configured to * ignore external DTD completely, true otherwise. * * @see #setLoadExternalDTD * @see #getValidationScheme */ bool getLoadExternalDTD() const; /** Get the 'Loading Schema' flag * * This method returns the state of the parser's loading schema * flag. * * @return true, if the parser is currently configured to * automatically load schemas that are not in the * grammar pool, false otherwise. * * @see #setLoadSchema */ bool getLoadSchema() const; /** Get the 'create comment node' flag * * This method returns the flag that specifies whether the parser is * creating comment nodes in the DOM tree being produced. * * @return The state of the create comment node flag. * @see #setCreateCommentNodes */ bool getCreateCommentNodes()const; /** * Get the 'calculate src offset flag' * * This method returns the state of the parser's src offset calculation * when parsing an XML document. * * @return true, if the parser is currently configured to * calculate src offsets, false otherwise. * * @see #setCalculateSrcOfs */ bool getCalculateSrcOfs() const; /** * Get the 'force standard uri flag' * * This method returns the state if the parser forces standard uri * * @return true, if the parser is currently configured to * force standard uri, i.e. malformed uri will be rejected. * * @see #setStandardUriConformant */ bool getStandardUriConformant() const; /** * This method returns the installed PSVI handler. Suitable * for 'lvalue' usages. * * @return The pointer to the installed PSVI handler object. */ PSVIHandler* getPSVIHandler(); /** * This method returns the installed PSVI handler. Suitable * for 'rvalue' usages. * * @return A const pointer to the installed PSVI handler object. */ const PSVIHandler* getPSVIHandler() const; /** Get the 'associate schema info' flag * * This method returns the flag that specifies whether * the parser is storing schema informations in the element * and attribute nodes in the DOM tree being produced. * * @return The state of the associate schema info flag. * @see #setCreateSchemaInfo */ bool getCreateSchemaInfo() const; /** Get the 'do XInclude' flag * * This method returns the flag that specifies whether * the parser will process XInclude nodes * in the DOM tree being produced. * * @return The state of the 'do XInclude' flag. * @see #setDoXInclude */ bool getDoXInclude() const; /** Get the 'generate synthetic annotations' flag * * @return true, if the parser is currently configured to * generate synthetic annotations, false otherwise. * A synthetic XSAnnotation is created when a schema * component has non-schema attributes but has no * child annotations so that the non-schema attributes * can be recovered under PSVI. * * @see #setGenerateSyntheticAnnotations */ bool getGenerateSyntheticAnnotations() const; /** Get the 'validate annotations' flag * * @return true, if the parser is currently configured to * validate annotations, false otherwise. * * @see #setValidateAnnotations */ bool getValidateAnnotations() const; /** Get the 'ignore annotations' flag * * @return true, if the parser is currently configured to * ignore annotations, false otherwise. * * @see #setIgnoreAnnotations */ bool getIgnoreAnnotations() const; /** Get the 'disable default entity resolution' flag * * @return true, if the parser is currently configured to * not perform default entity resolution, false otherwise. * * @see #setDisableDefaultEntityResolution */ bool getDisableDefaultEntityResolution() const; /** Get the 'skip DTD validation' flag * * @return true, if the parser is currently configured to * skip DTD validation, false otherwise. * * @see #setSkipDTDValidation */ bool getSkipDTDValidation() const; /** Get the 'handle multiple schema imports' flag * * @return true, if the parser is currently configured to * import multiple schemas with the same namespace, false otherwise. * * @see #setHandleMultipleImports */ bool getHandleMultipleImports() const; //@} // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- /** @name Setter methods */ //@{ /** set the 'generate synthetic annotations' flag * * @param newValue The value for specifying whether Synthetic Annotations * should be generated or not. * A synthetic XSAnnotation is created when a schema * component has non-schema attributes but has no * child annotations so that the non-schema attributes * can be recovered under PSVI. * * @see #getGenerateSyntheticAnnotations */ void setGenerateSyntheticAnnotations(const bool newValue); /** set the 'validlate annotations' flag * * @param newValue The value for specifying whether Annotations * should be validated or not. * * @see #getValidateAnnotations */ void setValidateAnnotations(const bool newValue); /** Set the 'do namespaces' flag * * This method allows users to enable or disable the parser's * namespace processing. When set to true, parser starts enforcing * all the constraints and rules specified by the NameSpace * specification. * * The parser's default state is: false. * * @param newState The value specifying whether NameSpace rules should * be enforced or not. * * @see #getDoNamespaces */ void setDoNamespaces(const bool newState); /** Set the 'exit on first error' flag * * This method allows users to set the parser's behaviour when it * encounters the first fatal error. If set to true, the parser * will exit at the first fatal error. If false, then it will * report the error and continue processing. * * The default value is 'true' and the parser exits on the * first fatal error. * * @param newState The value specifying whether the parser should * continue or exit when it encounters the first * fatal error. * * @see #getExitOnFirstFatalError */ void setExitOnFirstFatalError(const bool newState); /** * This method allows users to set the parser's behaviour when it * encounters a validation constraint error. If set to true, and the * the parser will treat validation error as fatal and will exit depends on the * state of "getExitOnFirstFatalError". If false, then it will * report the error and continue processing. * * Note: setting this true does not mean the validation error will be printed with * the word "Fatal Error". It is still printed as "Error", but the parser * will exit if "setExitOnFirstFatalError" is set to true. * *

    The default value is 'false'.

    * * @param newState If true, the parser will exit if "setExitOnFirstFatalError" * is set to true. * * @see #getValidationConstraintFatal * @see #setExitOnFirstFatalError */ void setValidationConstraintFatal(const bool newState); /** Set the 'include entity references' flag * * This method allows the user to specify whether the parser should * create entity reference nodes in the DOM tree being produced. * When the 'create' flag is * true, the parser will create EntityReference nodes in the DOM tree. * The EntityReference nodes and their child nodes will be read-only. * When the 'create' flag is false, no EntityReference nodes will be created. *

    The replacement text * of the entity is included in either case, either as a * child of the Entity Reference node or in place at the location * of the reference. *

    The default value is 'true'. * * @param create The new state of the create entity reference nodes * flag. * @see #getCreateEntityReferenceNodes */ void setCreateEntityReferenceNodes(const bool create); /** Set the 'include ignorable whitespace' flag * * This method allows the user to specify whether a validating parser * should include ignorable whitespaces as text nodes. It has no effect * on non-validating parsers which always include non-markup text. *

    When set to true (also the default), ignorable whitespaces will be * added to the DOM tree as text nodes. The method * DOMText::isIgnorableWhitespace() will return true for those text * nodes only. *

    When set to false, all ignorable whitespace will be discarded and * no text node is added to the DOM tree. Note: applications intended * to process the "xml:space" attribute should not set this flag to false. * And this flag also overrides any schema datateye whitespace facets, * that is, all ignorable whitespace will be discarded even though * 'preserve' is set in schema datatype whitespace facets. * * @param include The new state of the include ignorable whitespace * flag. * * @see #getIncludeIgnorableWhitespace */ void setIncludeIgnorableWhitespace(const bool include); /** * This method allows users to set the validation scheme to be used * by this parser. The value is one of the ValSchemes enumerated values * defined by this class: * *
    Val_Never - turn off validation *
    Val_Always - turn on validation *
    Val_Auto - turn on validation if any internal/external * DTD subset have been seen * *

    The parser's default state is: Val_Never.

    * * @param newScheme The new validation scheme to use. * * @see #getValidationScheme */ void setValidationScheme(const ValSchemes newScheme); /** Set the 'do schema' flag * * This method allows users to enable or disable the parser's * schema processing. When set to false, parser will not process * any schema found. * * The parser's default state is: false. * * Note: If set to true, namespace processing must also be turned on. * * @param newState The value specifying whether schema support should * be enforced or not. * * @see #getDoSchema */ void setDoSchema(const bool newState); /** * This method allows the user to turn full Schema constraint checking on/off. * Only takes effect if Schema validation is enabled. * If turned off, partial constraint checking is done. * * Full schema constraint checking includes those checking that may * be time-consuming or memory intensive. Currently, particle unique * attribution constraint checking and particle derivation restriction checking * are controlled by this option. * * The parser's default state is: false. * * @param schemaFullChecking True to turn on full schema constraint checking. * * @see #getValidationSchemaFullChecking */ void setValidationSchemaFullChecking(const bool schemaFullChecking); /** * This method allows users to enable or disable the parser's identity * constraint checks. * *

    By default, the parser does identity constraint checks. * The default value is true.

    * * @param newState The value specifying whether the parser should * do identity constraint checks or not in the * input XML document. * * @see #getIdentityConstraintChecking */ void setIdentityConstraintChecking(const bool newState); /** * This method allows the user to specify a list of schemas to use. * If the targetNamespace of a schema specified using this method matches * the targetNamespace of a schema occurring in the instance document in * the schemaLocation attribute, or if the targetNamespace matches the * namespace attribute of the "import" element, the schema specified by the * user using this method will be used (i.e., the schemaLocation attribute * in the instance document or on the "import" element will be effectively ignored). * * If this method is called more than once, only the last one takes effect. * * The syntax is the same as for schemaLocation attributes in instance * documents: e.g, "http://www.example.com file_name.xsd". The user can * specify more than one XML Schema in the list. * * @param schemaLocation the list of schemas to use * * @see #getExternalSchemaLocation */ void setExternalSchemaLocation(const XMLCh* const schemaLocation); /** * This method is same as setExternalSchemaLocation(const XMLCh* const). * It takes native char string as parameter * * @param schemaLocation the list of schemas to use * * @see #setExternalSchemaLocation(const XMLCh* const) */ void setExternalSchemaLocation(const char* const schemaLocation); /** * This method allows the user to specify the no target namespace XML * Schema Location externally. If specified, the instance document's * noNamespaceSchemaLocation attribute will be effectively ignored. * * If this method is called more than once, only the last one takes effect. * * The syntax is the same as for the noNamespaceSchemaLocation attribute * that may occur in an instance document: e.g."file_name.xsd". * * @param noNamespaceSchemaLocation the XML Schema Location with no target namespace * * @see #getExternalNoNamespaceSchemaLocation */ void setExternalNoNamespaceSchemaLocation(const XMLCh* const noNamespaceSchemaLocation); /** * This method is same as setExternalNoNamespaceSchemaLocation(const XMLCh* const). * It takes native char string as parameter * * @param noNamespaceSchemaLocation the XML Schema Location with no target namespace * * @see #setExternalNoNamespaceSchemaLocation(const XMLCh* const) */ void setExternalNoNamespaceSchemaLocation(const char* const noNamespaceSchemaLocation); /** * This allows an application to set a SecurityManager on * the parser; this object stores information that various * components use to limit their consumption of system * resources while processing documents. * * If this method is called more than once, only the last one takes effect. * It may not be reset during a parse. * * * @param securityManager the SecurityManager instance to * be used by this parser * * @see #getSecurityManager */ void setSecurityManager(SecurityManager* const securityManager); /** Set the raw buffer low water mark for this parser. * * If the number of available bytes in the raw buffer is less than * the low water mark the parser will attempt to read more data before * continuing parsing. By default the value for this parameter is 100 * bytes. You may want to set this parameter to 0 if you would like * the parser to parse the available data immediately without * potentially blocking while waiting for more date. * * @param lwm new low water mark * * @see #getSecurityManager */ void setLowWaterMark(XMLSize_t lwm); /** Set the 'Loading External DTD' flag * * This method allows users to enable or disable the loading of external DTD. * When set to false, the parser will ignore any external DTD completely * if the validationScheme is set to Val_Never. * * The parser's default state is: true. * * This flag is ignored if the validationScheme is set to Val_Always or Val_Auto. * * @param newState The value specifying whether external DTD should * be loaded or not. * * @see #getLoadExternalDTD * @see #setValidationScheme */ void setLoadExternalDTD(const bool newState); /** Set the 'Loading Schema' flag * * This method allows users to enable or disable the loading of schemas. * When set to false, the parser not attempt to load schemas beyond * querying the grammar pool for them. * * The parser's default state is: true. * * @param newState The value specifying whether schemas should * be loaded if they're not found in the grammar * pool. * * @see #getLoadSchema * @see #setDoSchema */ void setLoadSchema(const bool newState); /** Set the 'create comment nodes' flag * * This method allows the user to specify whether the parser should * create comment nodes in the DOM tree being produced. *

    The default value is 'true'. * * @param create The new state of the create comment nodes * flag. * @see #getCreateCommentNodes */ void setCreateCommentNodes(const bool create); /** Enable/disable src offset calculation * * This method allows users to enable/disable src offset calculation. * Disabling the calculation will improve performance. * * The parser's default state is: false. * * @param newState The value specifying whether we should enable or * disable src offset calculation * * @see #getCalculateSrcOfs */ void setCalculateSrcOfs(const bool newState); /** Force standard uri * * This method allows users to tell the parser to force standard uri conformance. * * The parser's default state is: false. * * @param newState The value specifying whether the parser should reject malformed URI. * * @see #getStandardUriConformant */ void setStandardUriConformant(const bool newState); /** Set the scanner to use when scanning the XML document * * This method allows users to set the scanner to use * when scanning a given XML document. * * @param scannerName The name of the desired scanner */ void useScanner(const XMLCh* const scannerName); /** Set the implementation to use when creating the document * * This method allows users to set the implementation to use * to create the document when parseing. * * @param implementationFeatures The names of the desired features the implementation should have. */ void useImplementation(const XMLCh* const implementationFeatures); /** * This method installs the user specified PSVI handler on * the parser. * * @param handler A pointer to the PSVI handler to be called * when the parser comes across 'PSVI' events * as per the schema specification. */ virtual void setPSVIHandler(PSVIHandler* const handler); /** Set the 'associate schema info' flag * * This method allows users to specify whether * the parser should store schema informations in the element * and attribute nodes in the DOM tree being produced. * * @param newState The state to set * @see #getCreateSchemaInfo */ void setCreateSchemaInfo(const bool newState); /** Set the 'do XInclude' flag * * This method allows users to specify whether * the parser should process XInclude nodes * in the DOM tree being produced. * * @param newState The state to set * @see #getDoXInclude */ void setDoXInclude(const bool newState); /** Set the 'ignore annotation' flag * * This method gives users the option to not generate XSAnnotations * when "traversing" a schema. * * The parser's default state is false * * @param newValue The state to set */ void setIgnoreAnnotations(const bool newValue); /** Set the 'disable default entity resolution' flag * * This method gives users the option to not perform default entity * resolution. If the user's resolveEntity method returns NULL the * parser will try to resolve the entity on its own. When this option * is set to true, the parser will not attempt to resolve the entity * when the resolveEntity method returns NULL. * * The parser's default state is false * * @param newValue The state to set * * @see #EntityResolver */ void setDisableDefaultEntityResolution(const bool newValue); /** Set the 'skip DTD validation' flag * * This method gives users the option to skip DTD validation only when * schema validation is on (i.e. when performing validation, we will * ignore the DTD, except for entities, when schema validation is enabled). * * NOTE: This option is ignored if schema validation is disabled. * * The parser's default state is false * * @param newValue The state to set */ void setSkipDTDValidation(const bool newValue); /** Set the 'handle multiple schema imports' flag * * This method gives users the ability to import multiple schemas that * have the same namespace. * * NOTE: This option is ignored if schema validation is disabled. * * The parser's default state is false * * @param newValue The state to set */ void setHandleMultipleImports(const bool newValue); //@} // ----------------------------------------------------------------------- // Parsing methods // ----------------------------------------------------------------------- /** @name Parsing methods */ //@{ /** Parse via an input source object * * This method invokes the parsing process on the XML file specified * by the InputSource parameter. This API is borrowed from the * SAX Parser interface. * * @param source A const reference to the InputSource object which * points to the XML file to be parsed. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception XMLException An exception from the parser or client * handler code. * @exception DOMException A DOM exception as per DOM spec. * @see InputSource#InputSource */ void parse(const InputSource& source); /** Parse via a file path or URL * * This method invokes the parsing process on the XML file specified by * the Unicode string parameter 'systemId'. This method is borrowed * from the SAX Parser interface. * * @param systemId A const XMLCh pointer to the Unicode string which * contains the path to the XML file to be parsed. * * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception XMLException An exception from the parser or client * handler code. * @exception DOMException A DOM exception as per DOM spec. * @see #parse(InputSource,...) */ void parse(const XMLCh* const systemId); /** Parse via a file path or URL (in the local code page) * * This method invokes the parsing process on the XML file specified by * the native char* string parameter 'systemId'. * * @param systemId A const char pointer to a native string which * contains the path to the XML file to be parsed. * * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception XMLException An exception from the parser or client * handler code. * @exception DOMException A DOM exception as per DOM spec. * @see #parse(InputSource,...) */ void parse(const char* const systemId); /** Begin a progressive parse operation * * This method is used to start a progressive parse on a XML file. * To continue parsing, subsequent calls must be to the parseNext * method. * * It scans through the prolog and returns a token to be used on * subsequent scanNext() calls. If the return value is true, then the * token is legal and ready for further use. If it returns false, then * the scan of the prolog failed and the token is not going to work on * subsequent scanNext() calls. * * @param systemId A pointer to a Unicode string representing the path * to the XML file to be parsed. * @param toFill A token maintaing state information to maintain * internal consistency between invocation of 'parseNext' * calls. * @return 'true', if successful in parsing the prolog. It indicates the * user can go ahead with parsing the rest of the file. It * returns 'false' to indicate that the parser could not parse * the prolog. * * @see #parseNext * @see #parseFirst(char*,...) * @see #parseFirst(InputSource&,...) */ bool parseFirst ( const XMLCh* const systemId , XMLPScanToken& toFill ); /** Begin a progressive parse operation * * This method is used to start a progressive parse on a XML file. * To continue parsing, subsequent calls must be to the parseNext * method. * * It scans through the prolog and returns a token to be used on * subsequent scanNext() calls. If the return value is true, then the * token is legal and ready for further use. If it returns false, then * the scan of the prolog failed and the token is not going to work on * subsequent scanNext() calls. * * @param systemId A pointer to a regular native string representing * the path to the XML file to be parsed. * @param toFill A token maintaing state information to maintain * internal consistency between invocation of 'parseNext' * calls. * * @return 'true', if successful in parsing the prolog. It indicates the * user can go ahead with parsing the rest of the file. It * returns 'false' to indicate that the parser could not parse * the prolog. * * @see #parseNext * @see #parseFirst(XMLCh*,...) * @see #parseFirst(InputSource&,...) */ bool parseFirst ( const char* const systemId , XMLPScanToken& toFill ); /** Begin a progressive parse operation * * This method is used to start a progressive parse on a XML file. * To continue parsing, subsequent calls must be to the parseNext * method. * * It scans through the prolog and returns a token to be used on * subsequent scanNext() calls. If the return value is true, then the * token is legal and ready for further use. If it returns false, then * the scan of the prolog failed and the token is not going to work on * subsequent scanNext() calls. * * @param source A const reference to the InputSource object which * points to the XML file to be parsed. * @param toFill A token maintaing state information to maintain * internal consistency between invocation of 'parseNext' * calls. * * @return 'true', if successful in parsing the prolog. It indicates the * user can go ahead with parsing the rest of the file. It * returns 'false' to indicate that the parser could not parse * the prolog. * * @see #parseNext * @see #parseFirst(XMLCh*,...) * @see #parseFirst(char*,...) */ bool parseFirst ( const InputSource& source , XMLPScanToken& toFill ); /** Continue a progressive parse operation * * This method is used to continue with progressive parsing of * XML files started by a call to 'parseFirst' method. * * It parses the XML file and stops as soon as it comes across * a XML token (as defined in the XML specification). * * @param token A token maintaing state information to maintain * internal consistency between invocation of 'parseNext' * calls. * * @return 'true', if successful in parsing the next XML token. * It indicates the user can go ahead with parsing the rest * of the file. It returns 'false' to indicate that the parser * could not find next token as per the XML specification * production rule. * * @see #parseFirst(XMLCh*,...) * @see #parseFirst(char*,...) * @see #parseFirst(InputSource&,...) */ bool parseNext(XMLPScanToken& token); /** Reset the parser after a progressive parse * * If a progressive parse loop exits before the end of the document * is reached, the parser has no way of knowing this. So it will leave * open any files or sockets or memory buffers that were in use at * the time that the parse loop exited. * * The next parse operation will cause these open files and such to * be closed, but the next parse operation might occur at some unknown * future point. To avoid this problem, you should reset the parser if * you exit the loop early. * * If you exited because of an error, then this cleanup will be done * for you. Its only when you exit the file prematurely of your own * accord, because you've found what you wanted in the file most * likely. * * @param token A token maintaing state information to maintain * internal consistency between invocation of 'parseNext' * calls. * * @see #parseFirst(XMLCh*,...) * @see #parseFirst(char*,...) * @see #parseFirst(InputSource&,...) */ void parseReset(XMLPScanToken& token); //@} // ----------------------------------------------------------------------- // Implementation of the PSVIHandler interface. // ----------------------------------------------------------------------- /** @name Implementation of the PSVIHandler interface. */ //@{ /** Receive notification of the PSVI properties of an element. * The scanner will issue this call after the XMLDocumentHandler * endElement call. Since the scanner will issue the psviAttributes * call immediately after reading the start tag of an element, all element * content will be effectively bracketed by these two calls. * @param localName The name of the element whose end tag was just * parsed. * @param uri The namespace to which the element is bound * @param elementInfo Object containing the element's PSVI properties */ virtual void handleElementPSVI ( const XMLCh* const localName , const XMLCh* const uri , PSVIElement * elementInfo ); virtual void handlePartialElementPSVI ( const XMLCh* const localName , const XMLCh* const uri , PSVIElement * elementInfo ); /** * Enables PSVI information about attributes to be passed back to the * application. This callback will be made on *all* * elements; on elements with no attributes, the final parameter will * be null. * @param localName The name of the element upon which start tag * these attributes were encountered. * @param uri The namespace to which the element is bound * @param psviAttributes Object containing the attributes' PSVI properties * with information to identify them. */ virtual void handleAttributesPSVI ( const XMLCh* const localName , const XMLCh* const uri , PSVIAttributeList * psviAttributes ); //@} // ----------------------------------------------------------------------- // Implementation of the XMLDocumentHandler interface. // ----------------------------------------------------------------------- /** @name Implementation of the XMLDocumentHandler interface. */ //@{ /** Handle document character events * * This method is used to report all the characters scanned by the * parser. This DOM implementation stores this data in the appropriate * DOM node, creating one if necessary. * * @param chars A const pointer to a Unicode string representing the * character data. * @param length The length of the Unicode string returned in 'chars'. * @param cdataSection A flag indicating if the characters represent * content from the CDATA section. */ virtual void docCharacters ( const XMLCh* const chars , const XMLSize_t length , const bool cdataSection ); /** Handle a document comment event * * This method is used to report any comments scanned by the parser. * A new comment node is created which stores this data. * * @param comment A const pointer to a null terminated Unicode * string representing the comment text. */ virtual void docComment ( const XMLCh* const comment ); /** Handle a document PI event * * This method is used to report any PI scanned by the parser. A new * PI node is created and appended as a child of the current node in * the tree. * * @param target A const pointer to a Unicode string representing the * target of the PI declaration. * @param data A const pointer to a Unicode string representing the * data of the PI declaration. See the PI production rule * in the XML specification for details. */ virtual void docPI ( const XMLCh* const target , const XMLCh* const data ); /** Handle the end of document event * * This method is used to indicate the end of the current document. */ virtual void endDocument(); /** Handle and end of element event * * This method is used to indicate the end tag of an element. The * DOM parser pops the current element off the top of the element * stack, and make it the new current element. * * @param elemDecl A const reference to the object containing element * declaration information. * @param urlId An id referring to the namespace prefix, if * namespaces setting is switched on. * @param isRoot A flag indicating whether this element was the * root element. * @param elemPrefix A const pointer to a Unicode string containing * the namespace prefix for this element. Applicable * only when namespace processing is enabled. */ virtual void endElement ( const XMLElementDecl& elemDecl , const unsigned int urlId , const bool isRoot , const XMLCh* const elemPrefix ); /** Handle and end of entity reference event * * This method is used to indicate that an end of an entity reference * was just scanned. * * @param entDecl A const reference to the object containing the * entity declaration information. */ virtual void endEntityReference ( const XMLEntityDecl& entDecl ); /** Handle an ignorable whitespace vent * * This method is used to report all the whitespace characters, which * are determined to be 'ignorable'. This distinction between characters * is only made, if validation is enabled. * * Any whitespace before content is ignored. If the current node is * already of type DOMNode::TEXT_NODE, then these whitespaces are * appended, otherwise a new Text node is created which stores this * data. Essentially all contiguous ignorable characters are collected * in one node. * * @param chars A const pointer to a Unicode string representing the * ignorable whitespace character data. * @param length The length of the Unicode string 'chars'. * @param cdataSection A flag indicating if the characters represent * content from the CDATA section. */ virtual void ignorableWhitespace ( const XMLCh* const chars , const XMLSize_t length , const bool cdataSection ); /** Handle a document reset event * * This method allows the user installed Document Handler to 'reset' * itself, freeing all the memory resources. The scanner calls this * method before starting a new parse event. */ virtual void resetDocument(); /** Handle a start document event * * This method is used to report the start of the parsing process. */ virtual void startDocument(); /** Handle a start element event * * This method is used to report the start of an element. It is * called at the end of the element, by which time all attributes * specified are also parsed. A new DOM Element node is created * along with as many attribute nodes as required. This new element * is added appended as a child of the current node in the tree, and * then replaces it as the current node (if the isEmpty flag is false.) * * @param elemDecl A const reference to the object containing element * declaration information. * @param urlId An id referring to the namespace prefix, if * namespaces setting is switched on. * @param elemPrefix A const pointer to a Unicode string containing * the namespace prefix for this element. Applicable * only when namespace processing is enabled. * @param attrList A const reference to the object containing the * list of attributes just scanned for this element. * @param attrCount A count of number of attributes in the list * specified by the parameter 'attrList'. * @param isEmpty A flag indicating whether this is an empty element * or not. If empty, then no endElement() call will * be made. * @param isRoot A flag indicating whether this element was the * root element. * @see DocumentHandler#startElement */ virtual void startElement ( const XMLElementDecl& elemDecl , const unsigned int urlId , const XMLCh* const elemPrefix , const RefVectorOf& attrList , const XMLSize_t attrCount , const bool isEmpty , const bool isRoot ); /** Handle a start entity reference event * * This method is used to indicate the start of an entity reference. * If the expand entity reference flag is true, then a new * DOM Entity reference node is created. * * @param entDecl A const reference to the object containing the * entity declaration information. */ virtual void startEntityReference ( const XMLEntityDecl& entDecl ); /** Handle an XMLDecl event * * This method is used to report the XML decl scanned by the parser. * Refer to the XML specification to see the meaning of parameters. * * This method is a no-op for this DOM * implementation. * * @param versionStr A const pointer to a Unicode string representing * version string value. * @param encodingStr A const pointer to a Unicode string representing * the encoding string value. * @param standaloneStr A const pointer to a Unicode string * representing the standalone string value. * @param actualEncStr A const pointer to a Unicode string * representing the actual encoding string * value. */ virtual void XMLDecl ( const XMLCh* const versionStr , const XMLCh* const encodingStr , const XMLCh* const standaloneStr , const XMLCh* const actualEncStr ); //@} // ----------------------------------------------------------------------- // Implementation of the deprecated DocTypeHandler interface. // ----------------------------------------------------------------------- /** @name Deprecated DocTypeHandler Interfaces */ //@{ virtual void attDef ( const DTDElementDecl& elemDecl , const DTDAttDef& attDef , const bool ignoring ); virtual void doctypeComment ( const XMLCh* const comment ); virtual void doctypeDecl ( const DTDElementDecl& elemDecl , const XMLCh* const publicId , const XMLCh* const systemId , const bool hasIntSubset , const bool hasExtSubset = false ); virtual void doctypePI ( const XMLCh* const target , const XMLCh* const data ); virtual void doctypeWhitespace ( const XMLCh* const chars , const XMLSize_t length ); virtual void elementDecl ( const DTDElementDecl& decl , const bool isIgnored ); virtual void endAttList ( const DTDElementDecl& elemDecl ); virtual void endIntSubset(); virtual void endExtSubset(); virtual void entityDecl ( const DTDEntityDecl& entityDecl , const bool isPEDecl , const bool isIgnored ); virtual void resetDocType(); virtual void notationDecl ( const XMLNotationDecl& notDecl , const bool isIgnored ); virtual void startAttList ( const DTDElementDecl& elemDecl ); virtual void startIntSubset(); virtual void startExtSubset(); virtual void TextDecl ( const XMLCh* const versionStr , const XMLCh* const encodingStr ); //@} protected: // DOM node creation hooks. Override them if you are using your own // DOM node types. // virtual DOMCDATASection* createCDATASection (const XMLCh*, XMLSize_t); virtual DOMText* createText (const XMLCh*, XMLSize_t); virtual DOMElement* createElement (const XMLCh* name); virtual DOMElement* createElementNS (const XMLCh* namespaceURI, const XMLCh* elemPrefix, const XMLCh* localName, const XMLCh* qName); virtual DOMAttr* createAttr (const XMLCh* name); virtual DOMAttr* createAttrNS (const XMLCh* namespaceURI, const XMLCh* elemPrefix, const XMLCh* localName, const XMLCh* qName); protected : // ----------------------------------------------------------------------- // Protected Constructor Methods // ----------------------------------------------------------------------- /** @name Constructors */ //@{ /** Construct a AbstractDOMParser, with an optional validator * * Constructor with an instance of validator class to use for * validation. If you don't provide a validator, a default one will * be created for you in the scanner. * * @param valToAdopt Pointer to the validator instance to use. The * parser is responsible for freeing the memory. * * @param gramPool Pointer to the grammar pool instance from * external application (through derivatives). * The parser does NOT own it. * * @param manager Pointer to the memory manager to be used to * allocate objects. */ AbstractDOMParser ( XMLValidator* const valToAdopt = 0 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager , XMLGrammarPool* const gramPool = 0 ); //@} // ----------------------------------------------------------------------- // Protected getter methods // ----------------------------------------------------------------------- /** @name Protected getter methods */ //@{ /** Get the current DOM node * * This provides derived classes with access to the current node, i.e. * the node to which new nodes are being added. */ DOMNode* getCurrentNode(); /** Get the XML scanner * * This provides derived classes with access to the XML scanner. */ XMLScanner* getScanner() const; /** Get the Grammar resolver * * This provides derived classes with access to the grammar resolver. */ GrammarResolver* getGrammarResolver() const; /** Get the parse in progress flag * * This provides derived classes with access to the parse in progress * flag. */ bool getParseInProgress() const; MemoryManager* getMemoryManager() const; //@} // ----------------------------------------------------------------------- // Protected setter methods // ----------------------------------------------------------------------- /** @name Protected setter methods */ //@{ /** Set the current DOM node * * This method sets the current node maintained inside the parser to * the one specified. * * @param toSet The DOM node which will be the current node. */ void setCurrentNode(DOMNode* toSet); /** Set the document node * * This method sets the DOM Document node to the one specified. * * @param toSet The new DOM Document node for this XML document. */ void setDocument(DOMDocument* toSet); /** Set the parse in progress flag * * This method sets the parse in progress flag to true or false. * * @param toSet The value of the flag to be set. */ void setParseInProgress(const bool toSet); //@} // ----------------------------------------------------------------------- // Protected Helper methods // ----------------------------------------------------------------------- /** @name Protected helper methods */ //@{ void resetPool(); /** * Returns true if the user has adopted the document */ bool isDocumentAdopted() const; //@} private : // ----------------------------------------------------------------------- // Initialize/Cleanup methods // ----------------------------------------------------------------------- void initialize(); void cleanUp(); void resetInProgress(); // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- AbstractDOMParser(const AbstractDOMParser&); AbstractDOMParser& operator=(const AbstractDOMParser&); protected: // ----------------------------------------------------------------------- // Protected data members // // fCurrentNode // fCurrentParent // Used to track the current node during nested element events. Since // the tree must be built from a set of disjoint callbacks, we need // these to keep up with where we currently are. // // fCurrentEntity // Used to track the current entity decl. If a text decl is seen later on, // it is used to update the encoding and version information. // // fDocument // The root document object, filled with the document contents. // // fCreateEntityReferenceNodes // Indicates whether entity reference nodes should be created. // // fIncludeIgnorableWhitespace // Indicates whether ignorable whitespace should be added to // the DOM tree for validating parsers. // // fScanner // The scanner used for this parser. This is created during the // constructor. // // fImplementationFeatures // The implementation features that we use to get an implementation // for use in creating the DOMDocument used during parse. If this is // null then the default DOMImplementation is used // // fParseInProgress // Used to prevent multiple entrance to the parser while its doing // a parse. // // fWithinElement // A flag to indicate that the parser is within at least one level // of element processing. // // fDocumentType // Used to store and update the documentType variable information // in fDocument // // fDocumentVector // Store all the previous fDocument(s) (thus not the current fDocument) // created in this parser. It is destroyed when the parser is destructed. // // fCreateCommentNodes // Indicates whether comment nodes should be created. // // fDocumentAdoptedByUser // The DOMDocument ownership has been transferred to application // If set to true, the parser does not own the document anymore // and thus will not release its memory. // // fInternalSubset // Buffer for storing the internal subset information. // Once complete (after DOCTYPE is finished scanning), send // it to DocumentType Node // // fGrammarPool // The grammar pool passed from external application (through derivatives). // which could be 0, not owned. // // fCreateSchemaInfo // Indicates whether element and attributes will have schema info associated // // fDoXinclude // A bool used to request that XInlcude processing occur on the // Document the parser parses. // ----------------------------------------------------------------------- bool fCreateEntityReferenceNodes; bool fIncludeIgnorableWhitespace; bool fWithinElement; bool fParseInProgress; bool fCreateCommentNodes; bool fDocumentAdoptedByUser; bool fCreateSchemaInfo; bool fDoXInclude; XMLScanner* fScanner; XMLCh* fImplementationFeatures; DOMNode* fCurrentParent; DOMNode* fCurrentNode; DOMEntityImpl* fCurrentEntity; DOMDocumentImpl* fDocument; DOMDocumentTypeImpl* fDocumentType; RefVectorOf* fDocumentVector; GrammarResolver* fGrammarResolver; XMLStringPool* fURIStringPool; XMLValidator* fValidator; MemoryManager* fMemoryManager; XMLGrammarPool* fGrammarPool; XMLBufferMgr fBufMgr; XMLBuffer& fInternalSubset; PSVIHandler* fPSVIHandler; }; // --------------------------------------------------------------------------- // AbstractDOMParser: Getter methods // --------------------------------------------------------------------------- inline bool AbstractDOMParser::getCreateEntityReferenceNodes() const { return fCreateEntityReferenceNodes; } inline bool AbstractDOMParser::getIncludeIgnorableWhitespace() const { return fIncludeIgnorableWhitespace; } inline bool AbstractDOMParser::getParseInProgress() const { return fParseInProgress; } inline XMLScanner* AbstractDOMParser::getScanner() const { return fScanner; } inline GrammarResolver* AbstractDOMParser::getGrammarResolver() const { return fGrammarResolver; } inline bool AbstractDOMParser::getCreateCommentNodes() const { return fCreateCommentNodes; } inline PSVIHandler* AbstractDOMParser::getPSVIHandler() { return fPSVIHandler; } inline const PSVIHandler* AbstractDOMParser::getPSVIHandler() const { return fPSVIHandler; } inline bool AbstractDOMParser::getCreateSchemaInfo() const { return fCreateSchemaInfo; } inline bool AbstractDOMParser::getDoXInclude() const { return fDoXInclude; } // --------------------------------------------------------------------------- // AbstractDOMParser: Setter methods // --------------------------------------------------------------------------- inline void AbstractDOMParser::setCreateEntityReferenceNodes(const bool create) { fCreateEntityReferenceNodes = create; } inline void AbstractDOMParser::setIncludeIgnorableWhitespace(const bool include) { fIncludeIgnorableWhitespace = include; } inline void AbstractDOMParser::setCreateCommentNodes(const bool create) { fCreateCommentNodes = create; } inline void AbstractDOMParser::useImplementation(const XMLCh* const implementationFeatures) { fMemoryManager->deallocate(fImplementationFeatures); fImplementationFeatures = XMLString::replicate(implementationFeatures, fMemoryManager); } inline void AbstractDOMParser::setDoXInclude(const bool newState) { fDoXInclude = newState; } // --------------------------------------------------------------------------- // AbstractDOMParser: Protected getter methods // --------------------------------------------------------------------------- inline DOMNode* AbstractDOMParser::getCurrentNode() { return fCurrentNode; } inline MemoryManager* AbstractDOMParser::getMemoryManager() const { return fMemoryManager; } // --------------------------------------------------------------------------- // AbstractDOMParser: Protected setter methods // --------------------------------------------------------------------------- inline void AbstractDOMParser::setCurrentNode(DOMNode* toSet) { fCurrentNode = toSet; } inline void AbstractDOMParser::setParseInProgress(const bool toSet) { fParseInProgress = toSet; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/parsers/SAX2XMLFilterImpl.cpp0000644000175000017500000002773311033366054021754 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SAX2XMLFilterImpl.cpp 673975 2008-07-04 09:23:56Z borisk $ */ #include XERCES_CPP_NAMESPACE_BEGIN SAX2XMLFilterImpl::SAX2XMLFilterImpl(SAX2XMLReader* parent) : fParentReader(0) , fDocHandler(0) , fDTDHandler(0) , fEntityResolver(0) , fErrorHandler(0) { setParent(parent); } SAX2XMLFilterImpl::~SAX2XMLFilterImpl() { } // --------------------------------------------------------------------------- // SAX2XMLFilterImpl: XMLFilter impl // --------------------------------------------------------------------------- void SAX2XMLFilterImpl::setParent(SAX2XMLReader* parent) { if(fParentReader) { fParentReader->setEntityResolver(0); fParentReader->setDTDHandler(0); fParentReader->setContentHandler(0); fParentReader->setErrorHandler(0); } fParentReader=parent; if(fParentReader) { fParentReader->setEntityResolver(this); fParentReader->setDTDHandler(this); fParentReader->setContentHandler(this); fParentReader->setErrorHandler(this); } } bool SAX2XMLFilterImpl::getExitOnFirstFatalError() const { if(fParentReader) fParentReader->getExitOnFirstFatalError(); return false; } bool SAX2XMLFilterImpl::getValidationConstraintFatal() const { if(fParentReader) fParentReader->getValidationConstraintFatal(); return false; } Grammar* SAX2XMLFilterImpl::getRootGrammar() { if(fParentReader) fParentReader->getRootGrammar(); return NULL; } const XMLCh* SAX2XMLFilterImpl::getURIText(unsigned int uriId) const { if(fParentReader) fParentReader->getURIText(uriId); return NULL; } XMLFilePos SAX2XMLFilterImpl::getSrcOffset() const { if(fParentReader) fParentReader->getSrcOffset(); return 0; } // --------------------------------------------------------------------------- // SAX2XMLFilterImpl Validator functions // --------------------------------------------------------------------------- void SAX2XMLFilterImpl::setValidator(XMLValidator* valueToAdopt) { if(fParentReader) fParentReader->setValidator(valueToAdopt); } XMLValidator* SAX2XMLFilterImpl::getValidator() const { if(fParentReader) return fParentReader->getValidator(); return 0; } // --------------------------------------------------------------------------- // SAX2XMLReader Interface // --------------------------------------------------------------------------- XMLSize_t SAX2XMLFilterImpl::getErrorCount() const { if(fParentReader) return fParentReader->getErrorCount(); return 0; } void SAX2XMLFilterImpl::setExitOnFirstFatalError(const bool newState) { if(fParentReader) fParentReader->setExitOnFirstFatalError(newState); } void SAX2XMLFilterImpl::setValidationConstraintFatal(const bool newState) { if(fParentReader) fParentReader->setValidationConstraintFatal(newState); } void SAX2XMLFilterImpl::parse (const InputSource& source) { if(fParentReader) fParentReader->parse(source); } void SAX2XMLFilterImpl::parse (const XMLCh* const systemId) { if(fParentReader) fParentReader->parse(systemId); } void SAX2XMLFilterImpl::parse (const char* const systemId) { if(fParentReader) fParentReader->parse(systemId); } // --------------------------------------------------------------------------- // SAX2XMLFilterImpl: Progressive parse methods // --------------------------------------------------------------------------- bool SAX2XMLFilterImpl::parseFirst( const XMLCh* const systemId , XMLPScanToken& toFill) { if(fParentReader) return fParentReader->parseFirst(systemId, toFill); return false; } bool SAX2XMLFilterImpl::parseFirst( const char* const systemId , XMLPScanToken& toFill) { if(fParentReader) fParentReader->parseFirst(systemId, toFill); return false; } bool SAX2XMLFilterImpl::parseFirst( const InputSource& source , XMLPScanToken& toFill) { if(fParentReader) fParentReader->parseFirst(source, toFill); return false; } bool SAX2XMLFilterImpl::parseNext(XMLPScanToken& token) { if(fParentReader) fParentReader->parseNext(token); return false; } void SAX2XMLFilterImpl::parseReset(XMLPScanToken& token) { if(fParentReader) fParentReader->parseReset(token); } // --------------------------------------------------------------------------- // SAX2XMLFilterImpl: Features and Properties // --------------------------------------------------------------------------- void SAX2XMLFilterImpl::setFeature(const XMLCh* const name, const bool value) { if(fParentReader) fParentReader->setFeature(name,value); } bool SAX2XMLFilterImpl::getFeature(const XMLCh* const name) const { if(fParentReader) return fParentReader->getFeature(name); return false; } void SAX2XMLFilterImpl::setProperty(const XMLCh* const name, void* value) { if(fParentReader) fParentReader->setProperty(name,value); } void* SAX2XMLFilterImpl::getProperty(const XMLCh* const name) const { if(fParentReader) return fParentReader->getProperty(name); return NULL; } // --------------------------------------------------------------------------- // SAX2XMLFilterImpl: Grammar preparsing // --------------------------------------------------------------------------- Grammar* SAX2XMLFilterImpl::loadGrammar(const char* const systemId, const Grammar::GrammarType grammarType, const bool toCache) { if(fParentReader) return fParentReader->loadGrammar(systemId, grammarType, toCache); return NULL; } Grammar* SAX2XMLFilterImpl::loadGrammar(const XMLCh* const systemId, const Grammar::GrammarType grammarType, const bool toCache) { if(fParentReader) return fParentReader->loadGrammar(systemId, grammarType, toCache); return NULL; } Grammar* SAX2XMLFilterImpl::loadGrammar(const InputSource& source, const Grammar::GrammarType grammarType, const bool toCache) { if(fParentReader) return fParentReader->loadGrammar(source, grammarType, toCache); return NULL; } void SAX2XMLFilterImpl::resetCachedGrammarPool() { if(fParentReader) fParentReader->resetCachedGrammarPool(); } void SAX2XMLFilterImpl::setInputBufferSize(const XMLSize_t bufferSize) { if(fParentReader) fParentReader->setInputBufferSize(bufferSize); } Grammar* SAX2XMLFilterImpl::getGrammar(const XMLCh* const nameSpaceKey) { if(fParentReader) return fParentReader->getGrammar(nameSpaceKey); return NULL; } // ----------------------------------------------------------------------- // Implementation of the EntityResolver interface // ----------------------------------------------------------------------- InputSource* SAX2XMLFilterImpl::resolveEntity(const XMLCh* const publicId , const XMLCh* const systemId) { if(fEntityResolver) return fEntityResolver->resolveEntity(publicId, systemId); return 0; } // ----------------------------------------------------------------------- // Implementation of the DTDHandler interface // ----------------------------------------------------------------------- void SAX2XMLFilterImpl::notationDecl( const XMLCh* const name , const XMLCh* const publicId , const XMLCh* const systemId) { if(fDTDHandler) fDTDHandler->notationDecl(name, publicId, systemId); } void SAX2XMLFilterImpl::unparsedEntityDecl(const XMLCh* const name , const XMLCh* const publicId , const XMLCh* const systemId , const XMLCh* const notationName) { if(fDTDHandler) fDTDHandler->unparsedEntityDecl(name, publicId, systemId, notationName); } void SAX2XMLFilterImpl::resetDocType() { if(fDTDHandler) fDTDHandler->resetDocType(); } // ----------------------------------------------------------------------- // Implementation of the ContentHandler interface // ----------------------------------------------------------------------- void SAX2XMLFilterImpl::characters(const XMLCh* const chars , const XMLSize_t length) { if(fDocHandler) fDocHandler->characters(chars, length); } void SAX2XMLFilterImpl::endDocument() { if(fDocHandler) fDocHandler->endDocument(); } void SAX2XMLFilterImpl::endElement(const XMLCh* const uri , const XMLCh* const localname , const XMLCh* const qname) { if(fDocHandler) fDocHandler->endElement(uri, localname, qname); } void SAX2XMLFilterImpl::ignorableWhitespace(const XMLCh* const chars , const XMLSize_t length) { if(fDocHandler) fDocHandler->ignorableWhitespace(chars, length); } void SAX2XMLFilterImpl::processingInstruction(const XMLCh* const target , const XMLCh* const data) { if(fDocHandler) fDocHandler->processingInstruction(target, data); } void SAX2XMLFilterImpl::setDocumentLocator(const Locator* const locator) { if(fDocHandler) fDocHandler->setDocumentLocator(locator); } void SAX2XMLFilterImpl::startDocument() { if(fDocHandler) fDocHandler->startDocument(); } void SAX2XMLFilterImpl::startElement(const XMLCh* const uri , const XMLCh* const localname , const XMLCh* const qname , const Attributes& attrs) { if(fDocHandler) fDocHandler->startElement(uri, localname, qname, attrs); } void SAX2XMLFilterImpl::startPrefixMapping(const XMLCh* const prefix , const XMLCh* const uri) { if(fDocHandler) fDocHandler->startPrefixMapping(prefix, uri); } void SAX2XMLFilterImpl::endPrefixMapping(const XMLCh* const prefix) { if(fDocHandler) fDocHandler->endPrefixMapping(prefix); } void SAX2XMLFilterImpl::skippedEntity(const XMLCh* const name) { if(fDocHandler) fDocHandler->skippedEntity(name); } // ----------------------------------------------------------------------- // Implementation of the ErrorHandler interface // ----------------------------------------------------------------------- void SAX2XMLFilterImpl::warning(const SAXParseException& exc) { if(fErrorHandler) fErrorHandler->warning(exc); } void SAX2XMLFilterImpl::error(const SAXParseException& exc) { if(fErrorHandler) fErrorHandler->error(exc); } void SAX2XMLFilterImpl::fatalError(const SAXParseException& exc) { if(fErrorHandler) fErrorHandler->fatalError(exc); } void SAX2XMLFilterImpl::resetErrors() { if(fErrorHandler) fErrorHandler->resetErrors(); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/parsers/DOMLSParserImpl.hpp0000644000175000017500000006415111272044767021554 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMLSParserImpl.hpp 830538 2009-10-28 13:41:11Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMBUILDERIMPL_HPP) #define XERCESC_INCLUDE_GUARD_DOMBUILDERIMPL_HPP #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN class XMLEntityResolver; class XMLResourceIdentifier; class DOMStringListImpl; class DOMLSResourceResolver; /** * Introduced in DOM Level 3 * * DOMLSParserImpl provides an implementation of a DOMLSParser interface. * A DOMLSParser instance is obtained from the DOMImplementationLS interface * by invoking its createDOMLSParser method. */ class PARSERS_EXPORT DOMLSParserImpl : public AbstractDOMParser, public DOMLSParser, public DOMConfiguration { public : // ----------------------------------------------------------------------- // Constructors and Detructor // ----------------------------------------------------------------------- /** @name Constructors and Destructor */ //@{ /** Construct a DOMLSParserImpl, with an optional validator * * Constructor with an instance of validator class to use for * validation. If you don't provide a validator, a default one will * be created for you in the scanner. * * @param valToAdopt Pointer to the validator instance to use. The * parser is responsible for freeing the memory. * @param manager The memory manager to be used for memory allocations * @param gramPool Pointer to the grammar pool instance from * external application. * The parser does NOT own it. * */ DOMLSParserImpl ( XMLValidator* const valToAdopt = 0 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager , XMLGrammarPool* const gramPool = 0 ); /** * Destructor */ virtual ~DOMLSParserImpl(); //@} // ----------------------------------------------------------------------- // Implementation of DOMLSParser interface // ----------------------------------------------------------------------- // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- /** @name Getter methods */ //@{ /** * @see DOMLSParser#getDomConfig */ virtual DOMConfiguration* getDomConfig(); /** * @see DOMLSParser#getFilter */ virtual const DOMLSParserFilter* getFilter() const; /** * @see DOMLSParser#getAsync */ virtual bool getAsync() const; /** * @see DOMLSParser#getBusy */ virtual bool getBusy() const; //@} // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- /** @name Setter methods */ //@{ /** * @see DOMLSParser#setFilter */ virtual void setFilter(DOMLSParserFilter* const filter); //@} // ----------------------------------------------------------------------- // Parsing methods // ----------------------------------------------------------------------- /** @name Parsing methods */ //@{ // ----------------------------------------------------------------------- // Parsing methods // ----------------------------------------------------------------------- /** * @see DOMLSParser#parse */ virtual DOMDocument* parse(const DOMLSInput* source); /** * @see DOMLSParser#parseURI */ virtual DOMDocument* parseURI(const XMLCh* const uri); /** * @see DOMLSParser#parseURI */ virtual DOMDocument* parseURI(const char* const uri); /** * @see DOMLSParser#parseWithContext */ virtual DOMNode* parseWithContext ( const DOMLSInput* source , DOMNode* contextNode , const ActionType action ); /** * @see DOMLSParser#abort */ virtual void abort(); // ----------------------------------------------------------------------- // Non-standard Extension // ----------------------------------------------------------------------- /** @name Non-standard Extension */ //@{ /** * Called to indicate that this DOMLSParser is no longer in use * and that the implementation may relinquish any resources associated with it. * */ virtual void release(); /** Reset the documents vector pool and release all the associated memory * back to the system. * * When parsing a document using a DOM parser, all memory allocated * for a DOM tree is associated to the DOM document. * * If you do multiple parse using the same DOM parser instance, then * multiple DOM documents will be generated and saved in a vector pool. * All these documents (and thus all the allocated memory) * won't be deleted until the parser instance is destroyed. * * If you don't need these DOM documents anymore and don't want to * destroy the DOM parser instance at this moment, then you can call this method * to reset the document vector pool and release all the allocated memory * back to the system. * * It is an error to call this method if you are in the middle of a * parse (e.g. in the mid of a progressive parse). * * @exception IOException An exception from the parser if this function * is called when a parse is in progress. * */ virtual void resetDocumentPool(); /** * Preparse schema grammar (XML Schema, DTD, etc.) via an input source * object. * * This method invokes the preparsing process on a schema grammar XML * file specified by the DOMLSInput parameter. If the 'toCache' flag * is enabled, the parser will cache the grammars for re-use. If a grammar * key is found in the pool, no caching of any grammar will take place. * * @param source A const reference to the DOMLSInput object which * points to the schema grammar file to be preparsed. * @param grammarType The grammar type (Schema or DTD). * @param toCache If true, we cache the preparsed grammar, * otherwise, no chaching. Default is false. * @return The preparsed schema grammar object (SchemaGrammar or * DTDGrammar). That grammar object is owned by the parser. * * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception XMLException An exception from the parser or client * handler code. * @exception DOMException A DOM exception as per DOM spec. * * @see DOMLSInput#DOMLSInput */ virtual Grammar* loadGrammar(const DOMLSInput* source, const Grammar::GrammarType grammarType, const bool toCache = false); /** * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL * * This method invokes the preparsing process on a schema grammar XML * file specified by the file path parameter. If the 'toCache' flag * is enabled, the parser will cache the grammars for re-use. If a grammar * key is found in the pool, no caching of any grammar will take place. * * @param systemId A const XMLCh pointer to the Unicode string which * contains the path to the XML grammar file to be * preparsed. * @param grammarType The grammar type (Schema or DTD). * @param toCache If true, we cache the preparsed grammar, * otherwise, no chaching. Default is false. * @return The preparsed schema grammar object (SchemaGrammar or * DTDGrammar). That grammar object is owned by the parser. * * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception XMLException An exception from the parser or client * handler code. * @exception DOMException A DOM exception as per DOM spec. */ virtual Grammar* loadGrammar(const XMLCh* const systemId, const Grammar::GrammarType grammarType, const bool toCache = false); /** * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL * * This method invokes the preparsing process on a schema grammar XML * file specified by the file path parameter. If the 'toCache' flag * is enabled, the parser will cache the grammars for re-use. If a grammar * key is found in the pool, no caching of any grammar will take place. * * @param systemId A const char pointer to a native string which contains * the path to the XML grammar file to be preparsed. * @param grammarType The grammar type (Schema or DTD). * @param toCache If true, we cache the preparsed grammar, * otherwise, no chaching. Default is false. * @return The preparsed schema grammar object (SchemaGrammar or * DTDGrammar). That grammar object is owned by the parser. * * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception XMLException An exception from the parser or client * handler code. * @exception DOMException A DOM exception as per DOM spec. */ virtual Grammar* loadGrammar(const char* const systemId, const Grammar::GrammarType grammarType, const bool toCache = false); /** * Retrieve the grammar that is associated with the specified namespace key * * @param nameSpaceKey Namespace key * @return Grammar associated with the Namespace key. */ virtual Grammar* getGrammar(const XMLCh* const nameSpaceKey) const; /** * Retrieve the grammar where the root element is declared. * * @return Grammar where root element declared */ virtual Grammar* getRootGrammar() const; /** * Returns the string corresponding to a URI id from the URI string pool. * * @param uriId id of the string in the URI string pool. * @return URI string corresponding to the URI id. */ virtual const XMLCh* getURIText(unsigned int uriId) const; /** * Clear the cached grammar pool */ virtual void resetCachedGrammarPool(); /** * Returns the current src offset within the input source. * To be used only while parsing is in progress. * * @return offset within the input source */ virtual XMLFilePos getSrcOffset() const; //@} // ----------------------------------------------------------------------- // Implementation of the DOMConfiguration interface. // ----------------------------------------------------------------------- /** @name Implementation of the DOMConfiguration interface. */ //@{ /** * Set the value of a parameter. * * @param name The name of the parameter to set. * @param value The new value or null if the user wishes to unset the * parameter. While the type of the value parameter is defined as * DOMUserData, the object type must match the type defined * by the definition of the parameter. For example, if the parameter is * "error-handler", the value must be of type DOMErrorHandler * * @exception DOMException (NOT_SUPPORTED_ERR) Raised when the * parameter name is recognized but the requested value cannot be set. * @exception DOMException (NOT_FOUND_ERR) Raised when the * parameter name is not recognized. * * @since DOM level 3 **/ virtual void setParameter(const XMLCh* name, const void* value); virtual void setParameter(const XMLCh* name, bool value); /** * Return the value of a parameter if known. * * @param name The name of the parameter. * @return The current object associated with the specified parameter or * null if no object has been associated or if the parameter is not * supported. * * @exception DOMException (NOT_FOUND_ERR) Raised when the i * boolean parameter * name is not recognized. * * @since DOM level 3 **/ virtual const void* getParameter(const XMLCh* name) const; /** * Check if setting a parameter to a specific value is supported. * * @param name The name of the parameter to check. * @param value An object. if null, the returned value is true. * @return true if the parameter could be successfully set to the specified * value, or false if the parameter is not recognized or the requested value * is not supported. This does not change the current value of the parameter * itself. * * @since DOM level 3 **/ virtual bool canSetParameter(const XMLCh* name, const void* value) const; virtual bool canSetParameter(const XMLCh* name, bool value) const; /** * The list of the parameters supported by this DOMConfiguration object and * for which at least one value can be set by the application. * Note that this list can also contain parameter names defined outside this specification. * * @return The list of parameters that can be used with setParameter/getParameter * @since DOM level 3 **/ virtual const DOMStringList* getParameterNames() const; //@} // ----------------------------------------------------------------------- // Implementation of the XMLErrorReporter interface. // ----------------------------------------------------------------------- /** @name Implementation of the XMLErrorReporter interface. */ //@{ /** Handle errors reported from the parser * * This method is used to report back errors found while parsing the * XML file. This method is also borrowed from the SAX specification. * It calls the corresponding user installed Error Handler method: * 'fatal', 'error', 'warning' depending on the severity of the error. * This classification is defined by the XML specification. * * @param errCode An integer code for the error. * @param msgDomain A const pointer to an Unicode string representing * the message domain to use. * @param errType An enumeration classifying the severity of the error. * @param errorText A const pointer to an Unicode string representing * the text of the error message. * @param systemId A const pointer to an Unicode string representing * the system id of the XML file where this error * was discovered. * @param publicId A const pointer to an Unicode string representing * the public id of the XML file where this error * was discovered. * @param lineNum The line number where the error occurred. * @param colNum The column number where the error occurred. * @see DOMErrorHandler */ virtual void error ( const unsigned int errCode , const XMLCh* const msgDomain , const XMLErrorReporter::ErrTypes errType , const XMLCh* const errorText , const XMLCh* const systemId , const XMLCh* const publicId , const XMLFileLoc lineNum , const XMLFileLoc colNum ); /** Reset any error data before a new parse * * This method allows the user installed Error Handler callback to * 'reset' itself. * * This method is a no-op for this DOM * implementation. */ virtual void resetErrors(); //@} // ----------------------------------------------------------------------- // Implementation of the XMLEntityHandler interface. // ----------------------------------------------------------------------- /** @name Implementation of the XMLEntityHandler interface. */ //@{ /** Handle an end of input source event * * This method is used to indicate the end of parsing of an external * entity file. * * This method is a no-op for this DOM * implementation. * * @param inputSource A const reference to the InputSource object * which points to the XML file being parsed. * @see InputSource */ virtual void endInputSource(const InputSource& inputSource); /** Expand a system id * * This method allows an installed XMLEntityHandler to further * process any system id's of enternal entities encountered in * the XML file being parsed, such as redirection etc. * * This method always returns 'false' * for this DOM implementation. * * @param systemId A const pointer to an Unicode string representing * the system id scanned by the parser. * @param toFill A pointer to a buffer in which the application * processed system id is stored. * @return 'true', if any processing is done, 'false' otherwise. */ virtual bool expandSystemId ( const XMLCh* const systemId , XMLBuffer& toFill ); /** Reset any entity handler information * * This method allows the installed XMLEntityHandler to reset * itself. * * This method is a no-op for this DOM * implementation. */ virtual void resetEntities(); /** Resolve a public/system id * * This method allows a user installed entity handler to further * process any pointers to external entities. The applications can * implement 'redirection' via this callback. * * @param resourceIdentifier An object containing the type of * resource to be resolved and the associated data members * corresponding to this type. * @return The value returned by the user installed resolveEntity * method or NULL otherwise to indicate no processing was done. * The returned InputSource is owned by the parser which is * responsible to clean up the memory. * @see XMLEntityHandler * @see XMLEntityResolver */ virtual InputSource* resolveEntity ( XMLResourceIdentifier* resourceIdentifier ); /** Handle a 'start input source' event * * This method is used to indicate the start of parsing an external * entity file. * * This method is a no-op for this DOM parse * implementation. * * @param inputSource A const reference to the InputSource object * which points to the external entity * being parsed. */ virtual void startInputSource(const InputSource& inputSource); //@} // ----------------------------------------------------------------------- // Implementation of the XMLDocumentHandler interface. // ----------------------------------------------------------------------- virtual void docCharacters ( const XMLCh* const chars , const XMLSize_t length , const bool cdataSection ); virtual void docComment ( const XMLCh* const comment ); virtual void docPI ( const XMLCh* const target , const XMLCh* const data ); virtual void startEntityReference ( const XMLEntityDecl& entDecl ); virtual void endElement ( const XMLElementDecl& elemDecl , const unsigned int urlId , const bool isRoot , const XMLCh* const elemPrefix ); virtual void startElement ( const XMLElementDecl& elemDecl , const unsigned int urlId , const XMLCh* const elemPrefix , const RefVectorOf& attrList , const XMLSize_t attrCount , const bool isEmpty , const bool isRoot ); // overriden callbacks to implement parseWithContext behavior virtual void startDocument(); virtual void XMLDecl ( const XMLCh* const versionStr , const XMLCh* const encodingStr , const XMLCh* const standaloneStr , const XMLCh* const actualEncStr ); private : // ----------------------------------------------------------------------- // Initialize/Cleanup methods // ----------------------------------------------------------------------- void resetParse(); // ----------------------------------------------------------------------- // Helper methods // ----------------------------------------------------------------------- void applyFilter(DOMNode* node); // ----------------------------------------------------------------------- // Private data members // // fEntityResolver // The installed DOM entity resolver, if any. Null if none. // // fXMLEntityResolver // The installed Xerces entity resolver, if any. Null if none. // // fErrorHandler // The installed DOM error handler, if any. Null if none. // // fFilter // The installed application filter, if any. Null if none. // // fCharsetOverridesXMLEncoding // Indicates if the "charset-overrides-xml-encoding" is set or not // // fUserAdoptsDocument // The DOMDocument ownership has been transferred to application // If set to true, the parser does not own the document anymore // and thus will not release its memory. // // fSupportedParameters // A list of the parameters that can be set, including the ones // specific of Xerces // // fFilterAction // A map of elements rejected by the DOMLSParserFilter::startElement // callback, used to avoid invoking DOMLSParserFilter::acceptNode // on its children // // fFilterDelayedTextNodes // As text nodes are filled incrementally, store them in a map // so that we ask DOMLSParserFilter::acceptNode only once, when it // is completely created // // fWrapNodesInDocumentFragment // fWrapNodesContext // fWrapNodesAction // Variables used to keep the state for parseWithContext API // //----------------------------------------------------------------------- DOMLSResourceResolver* fEntityResolver; XMLEntityResolver* fXMLEntityResolver; DOMErrorHandler* fErrorHandler; DOMLSParserFilter* fFilter; bool fCharsetOverridesXMLEncoding; bool fUserAdoptsDocument; DOMStringListImpl* fSupportedParameters; ValueHashTableOf* fFilterAction; ValueHashTableOf* fFilterDelayedTextNodes; DOMDocumentFragment* fWrapNodesInDocumentFragment; DOMNode* fWrapNodesContext; ActionType fWrapNodesAction; // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DOMLSParserImpl(const DOMLSParserImpl &); DOMLSParserImpl & operator = (const DOMLSParserImpl &); }; // --------------------------------------------------------------------------- // DOMLSParserImpl: Handlers for the XMLEntityHandler interface // --------------------------------------------------------------------------- inline void DOMLSParserImpl::endInputSource(const InputSource&) { // The DOM entity resolver doesn't handle this } inline bool DOMLSParserImpl::expandSystemId(const XMLCh* const, XMLBuffer&) { // The DOM entity resolver doesn't handle this return false; } inline void DOMLSParserImpl::resetEntities() { // Nothing to do on this one } inline void DOMLSParserImpl::startInputSource(const InputSource&) { // The DOM entity resolver doesn't handle this } // --------------------------------------------------------------------------- // DOMLSParserImpl: Getter methods // --------------------------------------------------------------------------- inline DOMConfiguration* DOMLSParserImpl::getDomConfig() { return this; } inline bool DOMLSParserImpl::getAsync() const { // We are a synchronous parser return false; } inline const DOMLSParserFilter* DOMLSParserImpl::getFilter() const { return fFilter; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/parsers/SAX2XMLFilterImpl.hpp0000644000175000017500000015411411360344373021756 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SAX2XMLFilterImpl.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_SAX2XMLFILTERIMPL_HPP) #define XERCESC_INCLUDE_GUARD_SAX2XMLFILTERIMPL_HPP #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN /** * This class implements the SAX2 'XMLFilterImpl' interface and should be * used by applications as the base class for their SAX2 filters. * This implementation simply forwards every call to the parent object. * */ class PARSERS_EXPORT SAX2XMLFilterImpl : public SAX2XMLFilter , public EntityResolver , public DTDHandler , public ContentHandler , public ErrorHandler { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- /** @name Constructors and Destructor */ //@{ /** The default constructor */ SAX2XMLFilterImpl(SAX2XMLReader* parent); /** The destructor */ ~SAX2XMLFilterImpl() ; //@} //----------------------------------------------------------------------- // Implementation of SAX2XMLReader Interface //----------------------------------------------------------------------- //----------------------------------------------------------------------- // The XMLReader interface //----------------------------------------------------------------------- /** @name Implementation of SAX 2.0 XMLReader interface's. */ //@{ /** * This method returns the installed content handler. * * @return A pointer to the installed content handler object. */ virtual ContentHandler* getContentHandler() const ; /** * This method returns the installed DTD handler. * * @return A pointer to the installed DTD handler object. */ virtual DTDHandler* getDTDHandler() const ; /** * This method returns the installed entity resolver. * * @return A pointer to the installed entity resolver object. */ virtual EntityResolver* getEntityResolver() const ; /** * This method returns the installed error handler. * * @return A pointer to the installed error handler object. */ virtual ErrorHandler* getErrorHandler() const ; /** * Query the current state of any feature in a SAX2 XMLReader. * * @param name The unique identifier (URI) of the feature being set. * @return The current state of the feature. * @exception SAXNotRecognizedException If the requested feature is not known. */ virtual bool getFeature(const XMLCh* const name) const ; /** * Query the current value of a property in a SAX2 XMLReader. * * The parser owns the returned pointer. The memory allocated for * the returned pointer will be destroyed when the parser is deleted. * * To ensure accessibility of the returned information after the parser * is deleted, callers need to copy and store the returned information * somewhere else; otherwise you may get unexpected result. Since the returned * pointer is a generic void pointer, see the SAX2 Programming Guide to learn * exactly what type of property value each property returns for replication. * * @param name The unique identifier (URI) of the property being set. * @return The current value of the property. The pointer spans the same * life-time as the parser. A null pointer is returned if nothing * was specified externally. * @exception SAXNotRecognizedException If the requested property is not known. */ virtual void* getProperty(const XMLCh* const name) const ; /** * Allow an application to register a document event handler. * * If the application does not register a document handler, all * document events reported by the SAX parser will be silently * ignored (this is the default behaviour implemented by * HandlerBase). * * Applications may register a new or different handler in the * middle of a parse, and the SAX parser must begin using the new * handler immediately. * * @param handler The document handler. * @see DocumentHandler#DocumentHandler * @see HandlerBase#HandlerBase */ virtual void setContentHandler(ContentHandler* const handler) ; /** * Allow an application to register a DTD event handler. * * If the application does not register a DTD handler, all DTD * events reported by the SAX parser will be silently ignored (this * is the default behaviour implemented by HandlerBase). * * Applications may register a new or different handler in the middle * of a parse, and the SAX parser must begin using the new handler * immediately. * * @param handler The DTD handler. * @see DTDHandler#DTDHandler * @see HandlerBase#HandlerBase */ virtual void setDTDHandler(DTDHandler* const handler) ; /** * Allow an application to register a custom entity resolver. * * If the application does not register an entity resolver, the * SAX parser will resolve system identifiers and open connections * to entities itself (this is the default behaviour implemented in * DefaultHandler). * * Applications may register a new or different entity resolver * in the middle of a parse, and the SAX parser must begin using * the new resolver immediately. * * @param resolver The object for resolving entities. * @see EntityResolver#EntityResolver * @see DefaultHandler#DefaultHandler */ virtual void setEntityResolver(EntityResolver* const resolver) ; /** * Allow an application to register an error event handler. * * If the application does not register an error event handler, * all error events reported by the SAX parser will be silently * ignored, except for fatalError, which will throw a SAXException * (this is the default behaviour implemented by HandlerBase). * * Applications may register a new or different handler in the * middle of a parse, and the SAX parser must begin using the new * handler immediately. * * @param handler The error handler. * @see ErrorHandler#ErrorHandler * @see SAXException#SAXException * @see HandlerBase#HandlerBase */ virtual void setErrorHandler(ErrorHandler* const handler) ; /** * Set the state of any feature in a SAX2 XMLReader. * Supported features in SAX2 for xerces-c are: *
    (See the SAX2 Programming Guide for detail description). * *
    http://xml.org/sax/features/validation (default: true) *
    http://xml.org/sax/features/namespaces (default: true) *
    http://xml.org/sax/features/namespace-prefixes (default: false) *
    http://apache.org/xml/features/validation/dynamic (default: false) *
    http://apache.org/xml/features/validation/reuse-grammar (default: false) *
    http://apache.org/xml/features/validation/schema (default: true) *
    http://apache.org/xml/features/validation/schema-full-checking (default: false) *
    http://apache.org/xml/features/validating/load-schema (default: true) *
    http://apache.org/xml/features/nonvalidating/load-external-dtd (default: true) *
    http://apache.org/xml/features/continue-after-fatal-error (default: false) *
    http://apache.org/xml/features/validation-error-as-fatal (default: false) * * @param name The unique identifier (URI) of the feature. * @param value The requested state of the feature (true or false). * @exception SAXNotRecognizedException If the requested feature is not known. * @exception SAXNotSupportedException Feature modification is not supported during parse * */ virtual void setFeature(const XMLCh* const name, const bool value) ; /** * Set the value of any property in a SAX2 XMLReader. * Supported properties in SAX2 for xerces-c are: *
    (See the SAX2 Programming Guide for detail description). * *
    http://apache.org/xml/properties/schema/external-schemaLocation *
    http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation. * * It takes a void pointer as the property value. Application is required to initialize this void * pointer to a correct type. See the SAX2 Programming Guide * to learn exactly what type of property value each property expects for processing. * Passing a void pointer that was initialized with a wrong type will lead to unexpected result. * If the same property is set more than once, the last one takes effect. * * @param name The unique identifier (URI) of the property being set. * @param value The requested value for the property. See * the SAX2 Programming Guide to learn * exactly what type of property value each property expects for processing. * Passing a void pointer that was initialized with a wrong type will lead * to unexpected result. * @exception SAXNotRecognizedException If the requested property is not known. * @exception SAXNotSupportedException Property modification is not supported during parse */ virtual void setProperty(const XMLCh* const name, void* value) ; /** * Parse an XML document. * * The application can use this method to instruct the SAX parser * to begin parsing an XML document from any valid input * source (a character stream, a byte stream, or a URI). * * Applications may not invoke this method while a parse is in * progress (they should create a new Parser instead for each * additional XML document). Once a parse is complete, an * application may reuse the same Parser object, possibly with a * different input source. * * @param source The input source for the top-level of the * XML document. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception XMLException An exception from the parser or client * handler code. * @see InputSource#InputSource * @see #setEntityResolver * @see #setDTDHandler * @see #setDocumentHandler * @see #setErrorHandler */ virtual void parse ( const InputSource& source ) ; /** * Parse an XML document from a system identifier (URI). * * This method is a shortcut for the common case of reading a * document from a system identifier. It is the exact equivalent * of the following: * * parse(new URLInputSource(systemId)); * * If the system identifier is a URL, it must be fully resolved * by the application before it is passed to the parser. * * @param systemId The system identifier (URI). * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception XMLException An exception from the parser or client * handler code. * @see #parse(InputSource) */ virtual void parse ( const XMLCh* const systemId ) ; /** * Parse an XML document from a system identifier (URI). * * This method is a shortcut for the common case of reading a * document from a system identifier. It is the exact equivalent * of the following: * * parse(new URLInputSource(systemId)); * * If the system identifier is a URL, it must be fully resolved * by the application before it is passed to the parser. * * @param systemId The system identifier (URI). * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception XMLException An exception from the parser or client * handler code. * @see #parse(InputSource) */ virtual void parse ( const char* const systemId ) ; //@} // ----------------------------------------------------------------------- // SAX 2.0-ext // ----------------------------------------------------------------------- /** @name SAX 2.0-ext */ //@{ /** * This method returns the installed declaration handler. * * @return A pointer to the installed declaration handler object. */ virtual DeclHandler* getDeclarationHandler() const ; /** * This method returns the installed lexical handler. * * @return A pointer to the installed lexical handler object. */ virtual LexicalHandler* getLexicalHandler() const ; /** * Allow an application to register a declaration event handler. * * If the application does not register a declaration handler, * all events reported by the SAX parser will be silently * ignored. (this is the default behaviour implemented by DefaultHandler). * * Applications may register a new or different handler in the * middle of a parse, and the SAX parser must begin using the new * handler immediately. * * @param handler The DTD declaration handler. * @see DeclHandler#DeclHandler * @see SAXException#SAXException * @see DefaultHandler#DefaultHandler */ virtual void setDeclarationHandler(DeclHandler* const handler) ; /** * Allow an application to register a lexical event handler. * * If the application does not register a lexical handler, * all events reported by the SAX parser will be silently * ignored. (this is the default behaviour implemented by HandlerBase). * * Applications may register a new or different handler in the * middle of a parse, and the SAX parser must begin using the new * handler immediately. * * @param handler The error handler. * @see LexicalHandler#LexicalHandler * @see SAXException#SAXException * @see HandlerBase#HandlerBase */ virtual void setLexicalHandler(LexicalHandler* const handler) ; //@} // ----------------------------------------------------------------------- // Getter Methods // ----------------------------------------------------------------------- /** @name Getter Methods (Xerces-C specific) */ //@{ /** * This method is used to get the current validator. * * SAX2XMLReader assumes responsibility for the validator. It will be * deleted when the XMLReader is destroyed. * * @return A pointer to the validator. An application should not deleted * the object returned. * */ virtual XMLValidator* getValidator() const ; /** Get error count from the last parse operation. * * This method returns the error count from the last parse * operation. Note that this count is actually stored in the * scanner, so this method simply returns what the * scanner reports. * * @return number of errors encountered during the latest * parse operation. */ virtual XMLSize_t getErrorCount() const ; /** * This method returns the state of the parser's * exit-on-First-Fatal-Error flag. * *

    Or you can query the feature "http://apache.org/xml/features/continue-after-fatal-error" * which indicates the opposite state.

    * * @return true, if the parser is currently configured to * exit on the first fatal error, false otherwise. * * @see #setExitOnFirstFatalError * @see #getFeature */ virtual bool getExitOnFirstFatalError() const ; /** * This method returns the state of the parser's * validation-constraint-fatal flag. * *

    Or you can query the feature "http://apache.org/xml/features/validation-error-as-fatal" * which means the same thing. * * @return true, if the parser is currently configured to * set validation constraint errors as fatal, false * otherwise. * * @see #setValidationContraintFatal * @see #getFeature */ virtual bool getValidationConstraintFatal() const ; /** * Retrieve the grammar that is associated with the specified namespace key * * @param nameSpaceKey Namespace key * @return Grammar associated with the Namespace key. */ virtual Grammar* getGrammar(const XMLCh* const nameSpaceKey); /** * Retrieve the grammar where the root element is declared. * * @return Grammar where root element declared */ virtual Grammar* getRootGrammar(); /** * Returns the string corresponding to a URI id from the URI string pool. * * @param uriId id of the string in the URI string pool. * @return URI string corresponding to the URI id. */ virtual const XMLCh* getURIText(unsigned int uriId) const; /** * Returns the current src offset within the input source. * To be used only while parsing is in progress. * * @return offset within the input source */ virtual XMLFilePos getSrcOffset() const; //@} // ----------------------------------------------------------------------- // Setter Methods // ----------------------------------------------------------------------- /** @name Setter Methods (Xerces-C specific) */ //@{ /** * This method is used to set a validator. * * SAX2XMLReader assumes responsibility for the validator. It will be * deleted when the XMLReader is destroyed. * * @param valueToAdopt A pointer to the validator that the reader should use. * */ virtual void setValidator(XMLValidator* valueToAdopt) ; /** * This method allows users to set the parser's behaviour when it * encounters the first fatal error. If set to true, the parser * will exit at the first fatal error. If false, then it will * report the error and continue processing. * *

    The default value is 'true' and the parser exits on the * first fatal error.

    * *

    Or you can set the feature "http://apache.org/xml/features/continue-after-fatal-error" * which has the opposite behaviour.

    * *

    If both the feature above and this function are used, the latter takes effect.

    * * @param newState The value specifying whether the parser should * continue or exit when it encounters the first * fatal error. * * @see #getExitOnFirstFatalError * @see #setFeature */ virtual void setExitOnFirstFatalError(const bool newState) ; /** * This method allows users to set the parser's behaviour when it * encounters a validation constraint error. If set to true, and the * the parser will treat validation error as fatal and will exit depends on the * state of "getExitOnFirstFatalError". If false, then it will * report the error and continue processing. * * Note: setting this true does not mean the validation error will be printed with * the word "Fatal Error". It is still printed as "Error", but the parser * will exit if "setExitOnFirstFatalError" is set to true. * *

    The default value is 'false'.

    * *

    Or you can set the feature "http://apache.org/xml/features/validation-error-as-fatal" * which means the same thing.

    * *

    If both the feature above and this function are used, the latter takes effect.

    * * @param newState If true, the parser will exit if "setExitOnFirstFatalError" * is set to true. * * @see #getValidationConstraintFatal * @see #setExitOnFirstFatalError * @see #setFeature */ virtual void setValidationConstraintFatal(const bool newState) ; //@} // ----------------------------------------------------------------------- // Progressive scan methods // ----------------------------------------------------------------------- /** @name Progressive scan methods */ //@{ /** Begin a progressive parse operation * * This method is used to start a progressive parse on a XML file. * To continue parsing, subsequent calls must be to the parseNext * method. * * It scans through the prolog and returns a token to be used on * subsequent scanNext() calls. If the return value is true, then the * token is legal and ready for further use. If it returns false, then * the scan of the prolog failed and the token is not going to work on * subsequent scanNext() calls. * * @param systemId A pointer to a Unicode string representing the path * to the XML file to be parsed. * @param toFill A token maintaing state information to maintain * internal consistency between invocation of 'parseNext' * calls. * * @return 'true', if successful in parsing the prolog. It indicates the * user can go ahead with parsing the rest of the file. It * returns 'false' to indicate that the parser could parse the * prolog (which means the token will not be valid.) * * @see #parseNext * @see #parseFirst(char*,...) * @see #parseFirst(InputSource&,...) */ virtual bool parseFirst ( const XMLCh* const systemId , XMLPScanToken& toFill ) ; /** Begin a progressive parse operation * * This method is used to start a progressive parse on a XML file. * To continue parsing, subsequent calls must be to the parseNext * method. * * It scans through the prolog and returns a token to be used on * subsequent scanNext() calls. If the return value is true, then the * token is legal and ready for further use. If it returns false, then * the scan of the prolog failed and the token is not going to work on * subsequent scanNext() calls. * * @param systemId A pointer to a regular native string representing * the path to the XML file to be parsed. * @param toFill A token maintaing state information to maintain * internal consistency between invocation of 'parseNext' * calls. * * @return 'true', if successful in parsing the prolog. It indicates the * user can go ahead with parsing the rest of the file. It * returns 'false' to indicate that the parser could not parse * the prolog. * * @see #parseNext * @see #parseFirst(XMLCh*,...) * @see #parseFirst(InputSource&,...) */ virtual bool parseFirst ( const char* const systemId , XMLPScanToken& toFill ) ; /** Begin a progressive parse operation * * This method is used to start a progressive parse on a XML file. * To continue parsing, subsequent calls must be to the parseNext * method. * * It scans through the prolog and returns a token to be used on * subsequent scanNext() calls. If the return value is true, then the * token is legal and ready for further use. If it returns false, then * the scan of the prolog failed and the token is not going to work on * subsequent scanNext() calls. * * @param source A const reference to the InputSource object which * points to the XML file to be parsed. * @param toFill A token maintaing state information to maintain * internal consistency between invocation of 'parseNext' * calls. * * @return 'true', if successful in parsing the prolog. It indicates the * user can go ahead with parsing the rest of the file. It * returns 'false' to indicate that the parser could not parse * the prolog. * * @see #parseNext * @see #parseFirst(XMLCh*,...) * @see #parseFirst(char*,...) */ virtual bool parseFirst ( const InputSource& source , XMLPScanToken& toFill ) ; /** Continue a progressive parse operation * * This method is used to continue with progressive parsing of * XML files started by a call to 'parseFirst' method. * * It parses the XML file and stops as soon as it comes across * a XML token (as defined in the XML specification). Relevant * callback handlers are invoked as required by the SAX * specification. * * @param token A token maintaing state information to maintain * internal consistency between invocation of 'parseNext' * calls. * * @return 'true', if successful in parsing the next XML token. * It indicates the user can go ahead with parsing the rest * of the file. It returns 'false' to indicate that the parser * could not find next token as per the XML specification * production rule. * * @see #parseFirst(XMLCh*,...) * @see #parseFirst(char*,...) * @see #parseFirst(InputSource&,...) */ virtual bool parseNext(XMLPScanToken& token) ; /** Reset the parser after a progressive parse * * If a progressive parse loop exits before the end of the document * is reached, the parser has no way of knowing this. So it will leave * open any files or sockets or memory buffers that were in use at * the time that the parse loop exited. * * The next parse operation will cause these open files and such to * be closed, but the next parse operation might occur at some unknown * future point. To avoid this problem, you should reset the parser if * you exit the loop early. * * If you exited because of an error, then this cleanup will be done * for you. Its only when you exit the file prematurely of your own * accord, because you've found what you wanted in the file most * likely. * * @param token A token maintaing state information to maintain * internal consistency between invocation of 'parseNext' * calls. */ virtual void parseReset(XMLPScanToken& token) ; //@} // ----------------------------------------------------------------------- // Implementation of the grammar preparsing interface // ----------------------------------------------------------------------- /** @name Implementation of Grammar preparsing interface's. */ //@{ /** * Preparse schema grammar (XML Schema, DTD, etc.) via an input source * object. * * This method invokes the preparsing process on a schema grammar XML * file specified by the SAX InputSource parameter. If the 'toCache' flag * is enabled, the parser will cache the grammars for re-use. If a grammar * key is found in the pool, no caching of any grammar will take place. * * * @param source A const reference to the SAX InputSource object which * points to the schema grammar file to be preparsed. * @param grammarType The grammar type (Schema or DTD). * @param toCache If true, we cache the preparsed grammar, * otherwise, no caching. Default is false. * @return The preparsed schema grammar object (SchemaGrammar or * DTDGrammar). That grammar object is owned by the parser. * * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception XMLException An exception from the parser or client * handler code. * @exception DOMException A DOM exception as per DOM spec. * * @see InputSource#InputSource */ virtual Grammar* loadGrammar(const InputSource& source, const Grammar::GrammarType grammarType, const bool toCache = false); /** * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL * * This method invokes the preparsing process on a schema grammar XML * file specified by the file path parameter. If the 'toCache' flag * is enabled, the parser will cache the grammars for re-use. If a grammar * key is found in the pool, no caching of any grammar will take place. * * * @param systemId A const XMLCh pointer to the Unicode string which * contains the path to the XML grammar file to be * preparsed. * @param grammarType The grammar type (Schema or DTD). * @param toCache If true, we cache the preparsed grammar, * otherwise, no caching. Default is false. * @return The preparsed schema grammar object (SchemaGrammar or * DTDGrammar). That grammar object is owned by the parser. * * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception XMLException An exception from the parser or client * handler code. * @exception DOMException A DOM exception as per DOM spec. */ virtual Grammar* loadGrammar(const XMLCh* const systemId, const Grammar::GrammarType grammarType, const bool toCache = false); /** * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL * * This method invokes the preparsing process on a schema grammar XML * file specified by the file path parameter. If the 'toCache' flag * is enabled, the parser will cache the grammars for re-use. If a grammar * key is found in the pool, no caching of any grammar will take place. * * * @param systemId A const char pointer to a native string which contains * the path to the XML grammar file to be preparsed. * @param grammarType The grammar type (Schema or DTD). * @param toCache If true, we cache the preparsed grammar, * otherwise, no caching. Default is false. * @return The preparsed schema grammar object (SchemaGrammar or * DTDGrammar). That grammar object is owned by the parser. * * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception XMLException An exception from the parser or client * handler code. * @exception DOMException A DOM exception as per DOM spec. */ virtual Grammar* loadGrammar(const char* const systemId, const Grammar::GrammarType grammarType, const bool toCache = false); /** * Clear the cached grammar pool */ virtual void resetCachedGrammarPool(); /** Set maximum input buffer size * * This method allows users to limit the size of buffers used in parsing * XML character data. The effect of setting this size is to limit the * size of a ContentHandler::characters() call. * * The parser's default input buffer size is 1 megabyte. * * @param bufferSize The maximum input buffer size */ void setInputBufferSize(const XMLSize_t bufferSize); //@} // ----------------------------------------------------------------------- // Advanced document handler list maintenance methods // ----------------------------------------------------------------------- /** @name Advanced document handler list maintenance methods */ //@{ /** * This method installs the specified 'advanced' document callback * handler, thereby allowing the user to customize the processing, * if they choose to do so. Any number of advanced callback handlers * maybe installed. * *

    The methods in the advanced callback interface represent * Xerces-C extensions. There is no specification for this interface.

    * * @param toInstall A pointer to the users advanced callback handler. * * @see #removeAdvDocHandler */ virtual void installAdvDocHandler(XMLDocumentHandler* const toInstall) ; /** * This method removes the 'advanced' document handler callback from * the underlying parser scanner. If no handler is installed, advanced * callbacks are not invoked by the scanner. * @param toRemove A pointer to the advanced callback handler which * should be removed. * * @see #installAdvDocHandler */ virtual bool removeAdvDocHandler(XMLDocumentHandler* const toRemove) ; //@} // ----------------------------------------------------------------------- // The XMLFilter interface // ----------------------------------------------------------------------- /** @name Implementation of SAX 2.0 XMLFilter interface's. */ //@{ /** * This method returns the parent XMLReader object. * * @return A pointer to the parent XMLReader object. */ virtual SAX2XMLReader* getParent() const; /** * Sets the parent XMLReader object; parse requests will be forwarded to this * object, and callback notifications coming from it will be postprocessed * * @param parent The new XMLReader parent. * @see SAX2XMLReader#SAX2XMLReader */ virtual void setParent(SAX2XMLReader* parent); //@} // ----------------------------------------------------------------------- // Implementation of the EntityResolver interface // ----------------------------------------------------------------------- /** @name The EntityResolver interface */ //@{ /** * Allow the application to resolve external entities. * *

    The Parser will call this method before opening any external * entity except the top-level document entity (including the * external DTD subset, external entities referenced within the * DTD, and external entities referenced within the document * element): the application may request that the parser resolve * the entity itself, that it use an alternative URI, or that it * use an entirely different input source.

    * *

    Application writers can use this method to redirect external * system identifiers to secure and/or local URIs, to look up * public identifiers in a catalogue, or to read an entity from a * database or other input source (including, for example, a dialog * box).

    * *

    If the system identifier is a URL, the SAX parser must * resolve it fully before reporting it to the application.

    * * @param publicId The public identifier of the external entity * being referenced, or null if none was supplied. * @param systemId The system identifier of the external entity * being referenced. * @return An InputSource object describing the new input source, * or null to request that the parser open a regular * URI connection to the system identifier. * The returned InputSource is owned by the parser which is * responsible to clean up the memory. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception IOException An IO exception, * possibly the result of creating a new InputStream * or Reader for the InputSource. * @see InputSource#InputSource */ virtual InputSource* resolveEntity ( const XMLCh* const publicId , const XMLCh* const systemId ); //@} // ----------------------------------------------------------------------- // Implementation of the DTDHandler interface // ----------------------------------------------------------------------- /** @name The DTD handler interface */ //@{ /** * Receive notification of a notation declaration event. * *

    It is up to the application to record the notation for later * reference, if necessary.

    * *

    If a system identifier is present, and it is a URL, the SAX * parser must resolve it fully before passing it to the * application.

    * * @param name The notation name. * @param publicId The notation's public identifier, or null if * none was given. * @param systemId The notation's system identifier, or null if * none was given. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see #unparsedEntityDecl * @see AttributeList#AttributeList */ virtual void notationDecl ( const XMLCh* const name , const XMLCh* const publicId , const XMLCh* const systemId ); /** * Receive notification of an unparsed entity declaration event. * *

    Note that the notation name corresponds to a notation * reported by the notationDecl() event. It is up to the * application to record the entity for later reference, if * necessary.

    * *

    If the system identifier is a URL, the parser must resolve it * fully before passing it to the application.

    * * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @param name The unparsed entity's name. * @param publicId The entity's public identifier, or null if none * was given. * @param systemId The entity's system identifier (it must always * have one). * @param notationName The name of the associated notation. * @see #notationDecl * @see AttributeList#AttributeList */ virtual void unparsedEntityDecl ( const XMLCh* const name , const XMLCh* const publicId , const XMLCh* const systemId , const XMLCh* const notationName ); /** * Reset the DocType object on its reuse * *

    This method helps in reseting the DTD object implementation * defaults each time the DTD is begun.

    * */ virtual void resetDocType(); //@} // ----------------------------------------------------------------------- // Implementation of the ContentHandler interface // ----------------------------------------------------------------------- /** @name The virtual document handler interface */ //@{ /** * Receive notification of character data. * *

    The Parser will call this method to report each chunk of * character data. SAX parsers may return all contiguous character * data in a single chunk, or they may split it into several * chunks; however, all of the characters in any single event * must come from the same external entity, so that the Locator * provides useful information.

    * *

    The application must not attempt to read from the array * outside of the specified range.

    * *

    Note that some parsers will report whitespace using the * ignorableWhitespace() method rather than this one (validating * parsers must do so).

    * * @param chars The characters from the XML document. * @param length The number of characters to read from the array. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see #ignorableWhitespace * @see Locator#Locator */ virtual void characters ( const XMLCh* const chars , const XMLSize_t length ); /** * Receive notification of the end of a document. * *

    The SAX parser will invoke this method only once, and it will * be the last method invoked during the parse. The parser shall * not invoke this method until it has either abandoned parsing * (because of an unrecoverable error) or reached the end of * input.

    * * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void endDocument (); /** * Receive notification of the end of an element. * *

    The SAX parser will invoke this method at the end of every * element in the XML document; there will be a corresponding * startElement() event for every endElement() event (even when the * element is empty).

    * * @param uri The URI of the associated namespace for this element * @param localname The local part of the element name * @param qname The QName of this element * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void endElement ( const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname ); /** * Receive notification of ignorable whitespace in element content. * *

    Validating Parsers must use this method to report each chunk * of ignorable whitespace (see the W3C XML 1.0 recommendation, * section 2.10): non-validating parsers may also use this method * if they are capable of parsing and using content models.

    * *

    SAX parsers may return all contiguous whitespace in a single * chunk, or they may split it into several chunks; however, all of * the characters in any single event must come from the same * external entity, so that the Locator provides useful * information.

    * *

    The application must not attempt to read from the array * outside of the specified range.

    * * @param chars The characters from the XML document. * @param length The number of characters to read from the array. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see #characters */ virtual void ignorableWhitespace ( const XMLCh* const chars , const XMLSize_t length ); /** * Receive notification of a processing instruction. * *

    The Parser will invoke this method once for each processing * instruction found: note that processing instructions may occur * before or after the main document element.

    * *

    A SAX parser should never report an XML declaration (XML 1.0, * section 2.8) or a text declaration (XML 1.0, section 4.3.1) * using this method.

    * * @param target The processing instruction target. * @param data The processing instruction data, or null if * none was supplied. * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void processingInstruction ( const XMLCh* const target , const XMLCh* const data ); /** * Receive an object for locating the origin of SAX document events. * * SAX parsers are strongly encouraged (though not absolutely * required) to supply a locator: if it does so, it must supply * the locator to the application by invoking this method before * invoking any of the other methods in the DocumentHandler * interface. * * The locator allows the application to determine the end * position of any document-related event, even if the parser is * not reporting an error. Typically, the application will * use this information for reporting its own errors (such as * character content that does not match an application's * business rules). The information returned by the locator * is probably not sufficient for use with a search engine. * * Note that the locator will return correct information only * during the invocation of the events in this interface. The * application should not attempt to use it at any other time. * * @param locator An object that can return the location of * any SAX document event. The object is only * 'on loan' to the client code and they are not * to attempt to delete or modify it in any way! * * @see Locator#Locator */ virtual void setDocumentLocator(const Locator* const locator); /** * Receive notification of the beginning of a document. * *

    The SAX parser will invoke this method only once, before any * other methods in this interface or in DTDHandler (except for * setDocumentLocator).

    * * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void startDocument(); /** * Receive notification of the beginning of an element. * *

    The Parser will invoke this method at the beginning of every * element in the XML document; there will be a corresponding * endElement() event for every startElement() event (even when the * element is empty). All of the element's content will be * reported, in order, before the corresponding endElement() * event.

    * *

    Note that the attribute list provided will * contain only attributes with explicit values (specified or * defaulted): #IMPLIED attributes will be omitted.

    * * @param uri The URI of the associated namespace for this element * @param localname The local part of the element name * @param qname The QName of this element * @param attrs The attributes attached to the element, if any. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see #endElement * @see Attributes#Attributes */ virtual void startElement ( const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname, const Attributes& attrs ); /** * Receive notification of the start of an namespace prefix mapping. * *

    By default, do nothing. Application writers may override this * method in a subclass to take specific actions at the start of * each namespace prefix mapping.

    * * @param prefix The namespace prefix used * @param uri The namespace URI used. * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void startPrefixMapping ( const XMLCh* const prefix, const XMLCh* const uri ); /** * Receive notification of the end of an namespace prefix mapping. * *

    By default, do nothing. Application writers may override this * method in a subclass to take specific actions at the end of * each namespace prefix mapping.

    * * @param prefix The namespace prefix used * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void endPrefixMapping ( const XMLCh* const prefix ); /** * Receive notification of a skipped entity * *

    The parser will invoke this method once for each entity * skipped. All processors may skip external entities, * depending on the values of the features:
    * http://xml.org/sax/features/external-general-entities
    * http://xml.org/sax/features/external-parameter-entities

    * *

    Note: Xerces (specifically) never skips any entities, regardless * of the above features. This function is never called in the * Xerces implementation of SAX2.

    * *

    Introduced with SAX2

    * * @param name The name of the skipped entity. If it is a parameter entity, * the name will begin with %, and if it is the external DTD subset, * it will be the string [dtd]. * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void skippedEntity ( const XMLCh* const name ); //@} // ----------------------------------------------------------------------- // Implementation of the ErrorHandler interface // ----------------------------------------------------------------------- /** @name The error handler interface */ //@{ /** * Receive notification of a warning. * *

    SAX parsers will use this method to report conditions that * are not errors or fatal errors as defined by the XML 1.0 * recommendation. The default behaviour is to take no action.

    * *

    The SAX parser must continue to provide normal parsing events * after invoking this method: it should still be possible for the * application to process the document through to the end.

    * * @param exc The warning information encapsulated in a * SAX parse exception. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see SAXParseException#SAXParseException */ virtual void warning(const SAXParseException& exc); /** * Receive notification of a recoverable error. * *

    This corresponds to the definition of "error" in section 1.2 * of the W3C XML 1.0 Recommendation. For example, a validating * parser would use this callback to report the violation of a * validity constraint. The default behaviour is to take no * action.

    * *

    The SAX parser must continue to provide normal parsing events * after invoking this method: it should still be possible for the * application to process the document through to the end. If the * application cannot do so, then the parser should report a fatal * error even if the XML 1.0 recommendation does not require it to * do so.

    * * @param exc The error information encapsulated in a * SAX parse exception. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see SAXParseException#SAXParseException */ virtual void error(const SAXParseException& exc); /** * Receive notification of a non-recoverable error. * *

    This corresponds to the definition of "fatal error" in * section 1.2 of the W3C XML 1.0 Recommendation. For example, a * parser would use this callback to report the violation of a * well-formedness constraint.

    * *

    The application must assume that the document is unusable * after the parser has invoked this method, and should continue * (if at all) only for the sake of collecting addition error * messages: in fact, SAX parsers are free to stop reporting any * other events once this method has been invoked.

    * * @param exc The error information encapsulated in a * SAX parse exception. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see SAXParseException#SAXParseException */ virtual void fatalError(const SAXParseException& exc); /** * Reset the Error handler object on its reuse * *

    This method helps in reseting the Error handler object * implementation defaults each time the Error handler is begun.

    * */ virtual void resetErrors(); //@} private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- SAX2XMLFilterImpl(const SAX2XMLFilterImpl&); SAX2XMLFilterImpl& operator=(const SAX2XMLFilterImpl&); // ----------------------------------------------------------------------- // Private data members // // fParentReader // The object that we are filtering // // fDocHandler // The installed SAX content handler, if any. Null if none. // // fDTDHandler // The installed SAX DTD handler, if any. Null if none. // // fEntityResolver // The installed SAX entity handler, if any. Null if none. // // fErrorHandler // The installed SAX error handler, if any. Null if none. // // ----------------------------------------------------------------------- SAX2XMLReader* fParentReader; ContentHandler* fDocHandler; DTDHandler* fDTDHandler; EntityResolver* fEntityResolver; ErrorHandler* fErrorHandler; }; // --------------------------------------------------------------------------- // SAX2XMLReader: Getter methods // --------------------------------------------------------------------------- inline SAX2XMLReader* SAX2XMLFilterImpl::getParent() const { return fParentReader; } inline ContentHandler* SAX2XMLFilterImpl::getContentHandler() const { return fDocHandler; } inline DTDHandler* SAX2XMLFilterImpl::getDTDHandler() const { return fDTDHandler; } inline EntityResolver* SAX2XMLFilterImpl::getEntityResolver() const { return fEntityResolver; } inline ErrorHandler* SAX2XMLFilterImpl::getErrorHandler() const { return fErrorHandler; } inline LexicalHandler* SAX2XMLFilterImpl::getLexicalHandler() const { return 0; } inline DeclHandler* SAX2XMLFilterImpl::getDeclarationHandler() const { return 0; } inline void SAX2XMLFilterImpl::setContentHandler(ContentHandler* const handler) { fDocHandler = handler; } inline void SAX2XMLFilterImpl::setDTDHandler(DTDHandler* const handler) { fDTDHandler = handler; } inline void SAX2XMLFilterImpl::setErrorHandler(ErrorHandler* const handler) { fErrorHandler = handler; } inline void SAX2XMLFilterImpl::setEntityResolver(EntityResolver* const resolver) { fEntityResolver = resolver; } inline void SAX2XMLFilterImpl::setLexicalHandler(LexicalHandler* const /*handler*/) { } inline void SAX2XMLFilterImpl::setDeclarationHandler(DeclHandler* const /*handler*/) { } inline void SAX2XMLFilterImpl::installAdvDocHandler(XMLDocumentHandler* const /*toInstall*/) { } inline bool SAX2XMLFilterImpl::removeAdvDocHandler(XMLDocumentHandler* const /*toRemove*/) { return false; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/parsers/XercesDOMParser.hpp0000644000175000017500000006207511360344373021642 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XercesDOMParser.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_XERCESDOMPARSER_HPP) #define XERCESC_INCLUDE_GUARD_XERCESDOMPARSER_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN class EntityResolver; class ErrorHandler; class XMLEntityResolver; class XMLResourceIdentifier; /** * This class implements the Document Object Model (DOM) interface. * It should be used by applications which choose to parse and * process the XML document using the DOM api's. This implementation * also allows the applications to install an error and an entity * handler (useful extensions to the DOM specification). * *

    It can be used to instantiate a validating or non-validating * parser, by setting a member flag.

    */ class PARSERS_EXPORT XercesDOMParser : public AbstractDOMParser { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- /** @name Constructors and Destructor */ //@{ /** Construct a XercesDOMParser, with an optional validator * * Constructor with an instance of validator class to use for * validation. If you don't provide a validator, a default one will * be created for you in the scanner. * * @param gramPool Pointer to the grammar pool instance from * external application. * The parser does NOT own it. * * @param valToAdopt Pointer to the validator instance to use. The * parser is responsible for freeing the memory. * @param manager Pointer to the memory manager to be used to * allocate objects. */ XercesDOMParser ( XMLValidator* const valToAdopt = 0 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager , XMLGrammarPool* const gramPool = 0 ); /** * Destructor */ virtual ~XercesDOMParser(); //@} // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- /** @name Getter methods */ //@{ /** Get a pointer to the error handler * * This method returns the installed error handler. If no handler * has been installed, then it will be a zero pointer. * * @return The pointer to the installed error handler object. */ ErrorHandler* getErrorHandler(); /** Get a const pointer to the error handler * * This method returns the installed error handler. If no handler * has been installed, then it will be a zero pointer. * * @return A const pointer to the installed error handler object. */ const ErrorHandler* getErrorHandler() const; /** Get a pointer to the entity resolver * * This method returns the installed entity resolver. If no resolver * has been installed, then it will be a zero pointer. * * @return The pointer to the installed entity resolver object. */ EntityResolver* getEntityResolver(); /** Get a const pointer to the entity resolver * * This method returns the installed entity resolver. If no resolver * has been installed, then it will be a zero pointer. * * @return A const pointer to the installed entity resolver object. */ const EntityResolver* getEntityResolver() const; /** * Get a pointer to the entity resolver * * This method returns the installed entity resolver. If no resolver * has been installed, then it will be a zero pointer. * * @return The pointer to the installed entity resolver object. */ XMLEntityResolver* getXMLEntityResolver(); /** * Get a const pointer to the entity resolver * * This method returns the installed entity resolver. If no resolver * has been installed, then it will be a zero pointer. * * @return A const pointer to the installed entity resolver object. */ const XMLEntityResolver* getXMLEntityResolver() const; /** Get the 'Grammar caching' flag * * This method returns the state of the parser's grammar caching when * parsing an XML document. * * @return true, if the parser is currently configured to * cache grammars, false otherwise. * * @see #cacheGrammarFromParse */ bool isCachingGrammarFromParse() const; /** Get the 'Use cached grammar' flag * * This method returns the state of the parser's use of cached grammar * when parsing an XML document. * * @return true, if the parser is currently configured to * use cached grammars, false otherwise. * * @see #useCachedGrammarInParse */ bool isUsingCachedGrammarInParse() const; /** * Retrieve the grammar that is associated with the specified namespace key * * @param nameSpaceKey Namespace key * @return Grammar associated with the Namespace key. */ Grammar* getGrammar(const XMLCh* const nameSpaceKey); /** * Retrieve the grammar where the root element is declared. * * @return Grammar where root element declared */ Grammar* getRootGrammar(); /** * Returns the string corresponding to a URI id from the URI string pool. * * @param uriId id of the string in the URI string pool. * @return URI string corresponding to the URI id. */ const XMLCh* getURIText(unsigned int uriId) const; /** * Returns the current src offset within the input source. * To be used only while parsing is in progress. * * @return offset within the input source */ XMLFilePos getSrcOffset() const; /** Get the 'ignore cached DTD grammar' flag * * @return true, if the parser is currently configured to * ignore cached DTD, false otherwise. * * @see #setIgnoreCachedDTD */ bool getIgnoreCachedDTD() const; //@} // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- /** @name Setter methods */ //@{ /** Set the error handler * * This method allows applications to install their own error handler * to trap error and warning messages. * * Any previously set handler is merely dropped, since the parser * does not own them. * * @param handler A const pointer to the user supplied error * handler. * * @see #getErrorHandler */ void setErrorHandler(ErrorHandler* const handler); /** Set the entity resolver * * This method allows applications to install their own entity * resolver. By installing an entity resolver, the applications * can trap and potentially redirect references to external * entities. * * Any previously set entity resolver is merely dropped, since the parser * does not own them. If both setEntityResolver and setXMLEntityResolver * are called, then the last one is used. * * @param handler A const pointer to the user supplied entity * resolver. * * @see #getEntityResolver */ void setEntityResolver(EntityResolver* const handler); /** * Set the entity resolver * * This method allows applications to install their own entity * resolver. By installing an entity resolver, the applications * can trap and potentially redirect references to external * entities. * * Any previously set entity resolver is merely dropped, since the parser * does not own them. If both setEntityResolver and setXMLEntityResolver * are called, then the last one set is used. * * @param handler A const pointer to the user supplied entity * resolver. * * @see #getXMLEntityResolver */ void setXMLEntityResolver(XMLEntityResolver* const handler); /** Set the 'Grammar caching' flag * * This method allows users to enable or disable caching of grammar when * parsing XML documents. When set to true, the parser will cache the * resulting grammar for use in subsequent parses. * * If the flag is set to true, the 'Use cached grammar' flag will also be * set to true. * * The parser's default state is: false. * * @param newState The value specifying whether we should cache grammars * or not. * * @see #isCachingGrammarFromParse * @see #useCachedGrammarInParse */ void cacheGrammarFromParse(const bool newState); /** Set the 'Use cached grammar' flag * * This method allows users to enable or disable the use of cached * grammars. When set to true, the parser will use the cached grammar, * instead of building the grammar from scratch, to validate XML * documents. * * If the 'Grammar caching' flag is set to true, this method ignore the * value passed in. * * The parser's default state is: false. * * @param newState The value specifying whether we should use the cached * grammar or not. * * @see #isUsingCachedGrammarInParse * @see #cacheGrammarFromParse */ void useCachedGrammarInParse(const bool newState); /** Set the 'ignore cached DTD grammar' flag * * This method gives users the option to ignore a cached DTD grammar, when * an XML document contains both an internal and external DTD, and the use * cached grammar from parse option is enabled. Currently, we do not allow * using cached DTD grammar when an internal subset is present in the * document. This option will only affect the behavior of the parser when * an internal and external DTD both exist in a document (i.e. no effect * if document has no internal subset). * * The parser's default state is false * * @param newValue The state to set */ void setIgnoreCachedDTD(const bool newValue); //@} // ----------------------------------------------------------------------- // Utility methods // ----------------------------------------------------------------------- /** @name Utility methods */ //@{ /** Reset the documents vector pool and release all the associated memory * back to the system. * * When parsing a document using a DOM parser, all memory allocated * for a DOM tree is associated to the DOM document. * * If you do multiple parse using the same DOM parser instance, then * multiple DOM documents will be generated and saved in a vector pool. * All these documents (and thus all the allocated memory) * won't be deleted until the parser instance is destroyed. * * If you don't need these DOM documents anymore and don't want to * destroy the DOM parser instance at this moment, then you can call this method * to reset the document vector pool and release all the allocated memory * back to the system. * * It is an error to call this method if you are in the middle of a * parse (e.g. in the mid of a progressive parse). * * @exception IOException An exception from the parser if this function * is called when a parse is in progress. * */ void resetDocumentPool(); //@} // ----------------------------------------------------------------------- // Implementation of the XMLErrorReporter interface. // ----------------------------------------------------------------------- /** @name Implementation of the XMLErrorReporter interface. */ //@{ /** Handle errors reported from the parser * * This method is used to report back errors found while parsing the * XML file. This method is also borrowed from the SAX specification. * It calls the corresponding user installed Error Handler method: * 'fatal', 'error', 'warning' depending on the severity of the error. * This classification is defined by the XML specification. * * @param errCode An integer code for the error. * @param msgDomain A const pointer to an Unicode string representing * the message domain to use. * @param errType An enumeration classifying the severity of the error. * @param errorText A const pointer to an Unicode string representing * the text of the error message. * @param systemId A const pointer to an Unicode string representing * the system id of the XML file where this error * was discovered. * @param publicId A const pointer to an Unicode string representing * the public id of the XML file where this error * was discovered. * @param lineNum The line number where the error occurred. * @param colNum The column number where the error occurred. * @see ErrorHandler */ virtual void error ( const unsigned int errCode , const XMLCh* const msgDomain , const XMLErrorReporter::ErrTypes errType , const XMLCh* const errorText , const XMLCh* const systemId , const XMLCh* const publicId , const XMLFileLoc lineNum , const XMLFileLoc colNum ); /** Reset any error data before a new parse * * This method allows the user installed Error Handler callback to * 'reset' itself. * * This method is a no-op for this DOM * implementation. */ virtual void resetErrors(); //@} // ----------------------------------------------------------------------- // Implementation of the XMLEntityHandler interface. // ----------------------------------------------------------------------- /** @name Implementation of the XMLEntityHandler interface. */ //@{ /** Handle an end of input source event * * This method is used to indicate the end of parsing of an external * entity file. * * This method is a no-op for this DOM * implementation. * * @param inputSource A const reference to the InputSource object * which points to the XML file being parsed. * @see InputSource */ virtual void endInputSource(const InputSource& inputSource); /** Expand a system id * * This method allows an installed XMLEntityHandler to further * process any system id's of external entities encountered in * the XML file being parsed, such as redirection etc. * * This method always returns 'false' * for this DOM implementation. * * @param systemId A const pointer to an Unicode string representing * the system id scanned by the parser. * @param toFill A pointer to a buffer in which the application * processed system id is stored. * @return 'true', if any processing is done, 'false' otherwise. */ virtual bool expandSystemId ( const XMLCh* const systemId , XMLBuffer& toFill ); /** Reset any entity handler information * * This method allows the installed XMLEntityHandler to reset * itself. * * This method is a no-op for this DOM * implementation. */ virtual void resetEntities(); /** Resolve a public/system id * * This method allows a user installed entity handler to further * process any pointers to external entities. The applications can * implement 'redirection' via this callback. * * @param resourceIdentifier An object containing the type of * resource to be resolved and the associated data members * corresponding to this type. * @return The value returned by the user installed resolveEntity * method or NULL otherwise to indicate no processing was done. * The returned InputSource is owned by the parser which is * responsible to clean up the memory. * @see XMLEntityHandler * @see XMLEntityResolver */ virtual InputSource* resolveEntity ( XMLResourceIdentifier* resourceIdentifier ); /** Handle a 'start input source' event * * This method is used to indicate the start of parsing an external * entity file. * * This method is a no-op for this DOM parse * implementation. * * @param inputSource A const reference to the InputSource object * which points to the external entity * being parsed. */ virtual void startInputSource(const InputSource& inputSource); //@} // ----------------------------------------------------------------------- // Grammar preparsing interface // ----------------------------------------------------------------------- /** @name Implementation of Grammar preparsing interface's. */ //@{ /** * Preparse schema grammar (XML Schema, DTD, etc.) via an input source * object. * * This method invokes the preparsing process on a schema grammar XML * file specified by the SAX InputSource parameter. If the 'toCache' flag * is enabled, the parser will cache the grammars for re-use. If a grammar * key is found in the pool, no caching of any grammar will take place. * * * @param source A const reference to the SAX InputSource object which * points to the schema grammar file to be preparsed. * @param grammarType The grammar type (Schema or DTD). * @param toCache If true, we cache the preparsed grammar, * otherwise, no caching. Default is false. * @return The preparsed schema grammar object (SchemaGrammar or * DTDGrammar). That grammar object is owned by the parser. * * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception XMLException An exception from the parser or client * handler code. * @exception DOMException A DOM exception as per DOM spec. * * @see InputSource#InputSource */ Grammar* loadGrammar(const InputSource& source, const Grammar::GrammarType grammarType, const bool toCache = false); /** * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL * * This method invokes the preparsing process on a schema grammar XML * file specified by the file path parameter. If the 'toCache' flag * is enabled, the parser will cache the grammars for re-use. If a grammar * key is found in the pool, no caching of any grammar will take place. * * * @param systemId A const XMLCh pointer to the Unicode string which * contains the path to the XML grammar file to be * preparsed. * @param grammarType The grammar type (Schema or DTD). * @param toCache If true, we cache the preparsed grammar, * otherwise, no caching. Default is false. * @return The preparsed schema grammar object (SchemaGrammar or * DTDGrammar). That grammar object is owned by the parser. * * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception XMLException An exception from the parser or client * handler code. * @exception DOMException A DOM exception as per DOM spec. */ Grammar* loadGrammar(const XMLCh* const systemId, const Grammar::GrammarType grammarType, const bool toCache = false); /** * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL * * This method invokes the preparsing process on a schema grammar XML * file specified by the file path parameter. If the 'toCache' flag * is enabled, the parser will cache the grammars for re-use. If a grammar * key is found in the pool, no caching of any grammar will take place. * * * @param systemId A const char pointer to a native string which contains * the path to the XML grammar file to be preparsed. * @param grammarType The grammar type (Schema or DTD). * @param toCache If true, we cache the preparsed grammar, * otherwise, no caching. Default is false. * @return The preparsed schema grammar object (SchemaGrammar or * DTDGrammar). That grammar object is owned by the parser. * * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception XMLException An exception from the parser or client * handler code. * @exception DOMException A DOM exception as per DOM spec. */ Grammar* loadGrammar(const char* const systemId, const Grammar::GrammarType grammarType, const bool toCache = false); /** * This method allows the user to reset the pool of cached grammars. */ void resetCachedGrammarPool(); //@} private : // ----------------------------------------------------------------------- // Initialize/Cleanup methods // ----------------------------------------------------------------------- void resetParse(); // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XercesDOMParser(const XercesDOMParser&); XercesDOMParser& operator=(const XercesDOMParser&); // ----------------------------------------------------------------------- // Private data members // // fEntityResolver // The installed SAX entity resolver, if any. Null if none. // // fErrorHandler // The installed SAX error handler, if any. Null if none. //----------------------------------------------------------------------- EntityResolver* fEntityResolver; XMLEntityResolver* fXMLEntityResolver; ErrorHandler* fErrorHandler; }; // --------------------------------------------------------------------------- // XercesDOMParser: Handlers for the XMLEntityHandler interface // --------------------------------------------------------------------------- inline void XercesDOMParser::endInputSource(const InputSource&) { // The DOM entity resolver doesn't handle this } inline bool XercesDOMParser::expandSystemId(const XMLCh* const, XMLBuffer&) { // The DOM entity resolver doesn't handle this return false; } inline void XercesDOMParser::resetEntities() { // Nothing to do on this one } inline void XercesDOMParser::startInputSource(const InputSource&) { // The DOM entity resolver doesn't handle this } // --------------------------------------------------------------------------- // XercesDOMParser: Getter methods // --------------------------------------------------------------------------- inline ErrorHandler* XercesDOMParser::getErrorHandler() { return fErrorHandler; } inline const ErrorHandler* XercesDOMParser::getErrorHandler() const { return fErrorHandler; } inline EntityResolver* XercesDOMParser::getEntityResolver() { return fEntityResolver; } inline const EntityResolver* XercesDOMParser::getEntityResolver() const { return fEntityResolver; } inline XMLEntityResolver* XercesDOMParser::getXMLEntityResolver() { return fXMLEntityResolver; } inline const XMLEntityResolver* XercesDOMParser::getXMLEntityResolver() const { return fXMLEntityResolver; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/parsers/SAX2XMLReaderImpl.hpp0000644000175000017500000020335611360344373021736 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SAX2XMLReaderImpl.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_SAX2XMLREADERIMPL_HPP) #define XERCESC_INCLUDE_GUARD_SAX2XMLREADERIMPL_HPP #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN class ContentHandler; class LexicalHandler; class DeclHandler; class GrammarResolver; class XMLGrammarPool; class XMLResourceIdentifier; class PSVIHandler; /** * This class implements the SAX2 'XMLReader' interface and should be * used by applications wishing to parse the XML files using SAX2. * It allows the client program to install SAX2 handlers for event * callbacks. * *

    It can be used to instantiate a validating or non-validating * parser, by setting a member flag.

    * * we basically re-use the existing SAX1 parser code, but provide a * new implementation of XMLContentHandler that raises the new * SAX2 style events * */ class PARSERS_EXPORT SAX2XMLReaderImpl : public XMemory , public SAX2XMLReader , public XMLDocumentHandler , public XMLErrorReporter , public XMLEntityHandler , public DocTypeHandler { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- /** @name Constructors and Destructor */ //@{ /** The default constructor */ SAX2XMLReaderImpl( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager , XMLGrammarPool* const gramPool = 0 ); /** The destructor */ ~SAX2XMLReaderImpl() ; //@} //----------------------------------------------------------------------- // Implementation of SAX2XMLReader Interface //----------------------------------------------------------------------- //----------------------------------------------------------------------- // The XMLReader interface //----------------------------------------------------------------------- /** @name Implementation of SAX 2.0 XMLReader interface's. */ //@{ /** * This method returns the installed content handler. * * @return A pointer to the installed content handler object. */ virtual ContentHandler* getContentHandler() const ; /** * This method returns the installed DTD handler. * * @return A pointer to the installed DTD handler object. */ virtual DTDHandler* getDTDHandler() const ; /** * This method returns the installed entity resolver. * * @return A pointer to the installed entity resolver object. */ virtual EntityResolver* getEntityResolver() const ; /** * This method returns the installed entity resolver. * * @return A pointer to the installed entity resolver object. */ virtual XMLEntityResolver* getXMLEntityResolver() const ; /** * This method returns the installed error handler. * * @return A pointer to the installed error handler object. */ virtual ErrorHandler* getErrorHandler() const ; /** * This method returns the installed PSVI handler. * * @return A pointer to the installed PSVI handler object. */ virtual PSVIHandler* getPSVIHandler() const ; /** * Query the current state of any feature in a SAX2 XMLReader. * * @param name The unique identifier (URI) of the feature being set. * @return The current state of the feature. * @exception SAXNotRecognizedException If the requested feature is not known. */ virtual bool getFeature(const XMLCh* const name) const ; /** * Query the current value of a property in a SAX2 XMLReader. * * The parser owns the returned pointer. The memory allocated for * the returned pointer will be destroyed when the parser is deleted. * * To ensure accessibility of the returned information after the parser * is deleted, callers need to copy and store the returned information * somewhere else; otherwise you may get unexpected result. Since the returned * pointer is a generic void pointer, see the SAX2 Programming Guide to learn * exactly what type of property value each property returns for replication. * * @param name The unique identifier (URI) of the property being set. * @return The current value of the property. The pointer spans the same * life-time as the parser. A null pointer is returned if nothing * was specified externally. * @exception SAXNotRecognizedException If the requested property is not known. */ virtual void* getProperty(const XMLCh* const name) const ; /** * Allow an application to register a document event handler. * * If the application does not register a document handler, all * document events reported by the SAX parser will be silently * ignored (this is the default behaviour implemented by * HandlerBase). * * Applications may register a new or different handler in the * middle of a parse, and the SAX parser must begin using the new * handler immediately. * * @param handler The document handler. * @see DocumentHandler#DocumentHandler * @see HandlerBase#HandlerBase */ virtual void setContentHandler(ContentHandler* const handler) ; /** * Allow an application to register a DTD event handler. * * If the application does not register a DTD handler, all DTD * events reported by the SAX parser will be silently ignored (this * is the default behaviour implemented by HandlerBase). * * Applications may register a new or different handler in the middle * of a parse, and the SAX parser must begin using the new handler * immediately. * * @param handler The DTD handler. * @see DTDHandler#DTDHandler * @see HandlerBase#HandlerBase */ virtual void setDTDHandler(DTDHandler* const handler) ; /** * Allow an application to register a custom entity resolver. * * If the application does not register an entity resolver, the * SAX parser will resolve system identifiers and open connections * to entities itself (this is the default behaviour implemented in * DefaultHandler). * * Applications may register a new or different entity resolver * in the middle of a parse, and the SAX parser must begin using * the new resolver immediately. * * Any previously set entity resolver is merely dropped, since the parser * does not own them. If both setEntityResolver and setXMLEntityResolver * are called, then the last one is used. * * @param resolver The object for resolving entities. * @see EntityResolver#EntityResolver * @see DefaultHandler#DefaultHandler */ virtual void setEntityResolver(EntityResolver* const resolver) ; /** Set the entity resolver * * This method allows applications to install their own entity * resolver. By installing an entity resolver, the applications * can trap and potentially redirect references to external * entities. * * Any previously set entity resolver is merely dropped, since the parser * does not own them. If both setEntityResolver and setXMLEntityResolver * are called, then the last one is used. * * @param resolver A const pointer to the user supplied entity * resolver. * * @see #getXMLEntityResolver */ virtual void setXMLEntityResolver(XMLEntityResolver* const resolver) ; /** * Allow an application to register an error event handler. * * If the application does not register an error event handler, * all error events reported by the SAX parser will be silently * ignored, except for fatalError, which will throw a SAXException * (this is the default behaviour implemented by HandlerBase). * * Applications may register a new or different handler in the * middle of a parse, and the SAX parser must begin using the new * handler immediately. * * @param handler The error handler. * @see ErrorHandler#ErrorHandler * @see SAXException#SAXException * @see HandlerBase#HandlerBase */ virtual void setErrorHandler(ErrorHandler* const handler) ; /** * This method installs the user specified PSVI handler on * the parser. * * @param handler A pointer to the PSVI handler to be called * when the parser comes across 'PSVI' events * as per the schema specification. */ virtual void setPSVIHandler(PSVIHandler* const handler); /** * Set the state of any feature in a SAX2 XMLReader. * Supported features in SAX2 for xerces-c are: *
    (See the SAX2 Programming Guide for detail description). * *
    http://xml.org/sax/features/validation (default: false) *
    http://xml.org/sax/features/namespaces (default: true) *
    http://xml.org/sax/features/namespace-prefixes (default: false) *
    http://apache.org/xml/features/validation/dynamic (default: false) *
    http://apache.org/xml/features/validation/reuse-grammar (default: false) *
    http://apache.org/xml/features/validation/schema (default: true) *
    http://apache.org/xml/features/validation/schema-full-checking (default: false) *
    http://apache.org/xml/features/validating/load-schema (default: true) *
    http://apache.org/xml/features/nonvalidating/load-external-dtd (default: true) *
    http://apache.org/xml/features/continue-after-fatal-error (default: false) *
    http://apache.org/xml/features/validation-error-as-fatal (default: false) * * @param name The unique identifier (URI) of the feature. * @param value The requested state of the feature (true or false). * @exception SAXNotRecognizedException If the requested feature is not known. * @exception SAXNotSupportedException Feature modification is not supported during parse * */ virtual void setFeature(const XMLCh* const name, const bool value) ; /** * Set the value of any property in a SAX2 XMLReader. * Supported properties in SAX2 for xerces-c are: *
    (See the SAX2 Programming Guide for detail description). * *
    http://apache.org/xml/properties/schema/external-schemaLocation *
    http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation. * * It takes a void pointer as the property value. Application is required to initialize this void * pointer to a correct type. See the SAX2 Programming Guide * to learn exactly what type of property value each property expects for processing. * Passing a void pointer that was initialized with a wrong type will lead to unexpected result. * If the same property is set more than once, the last one takes effect. * * @param name The unique identifier (URI) of the property being set. * @param value The requested value for the property. See * the SAX2 Programming Guide to learn * exactly what type of property value each property expects for processing. * Passing a void pointer that was initialized with a wrong type will lead * to unexpected result. * @exception SAXNotRecognizedException If the requested property is not known. * @exception SAXNotSupportedException Property modification is not supported during parse */ virtual void setProperty(const XMLCh* const name, void* value) ; /** * Parse an XML document. * * The application can use this method to instruct the SAX parser * to begin parsing an XML document from any valid input * source (a character stream, a byte stream, or a URI). * * Applications may not invoke this method while a parse is in * progress (they should create a new Parser instead for each * additional XML document). Once a parse is complete, an * application may reuse the same Parser object, possibly with a * different input source. * * @param source The input source for the top-level of the * XML document. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception XMLException An exception from the parser or client * handler code. * @see InputSource#InputSource * @see #setEntityResolver * @see #setDTDHandler * @see #setDocumentHandler * @see #setErrorHandler */ virtual void parse ( const InputSource& source ) ; /** * Parse an XML document from a system identifier (URI). * * This method is a shortcut for the common case of reading a * document from a system identifier. It is the exact equivalent * of the following: * * parse(new URLInputSource(systemId)); * * If the system identifier is a URL, it must be fully resolved * by the application before it is passed to the parser. * * @param systemId The system identifier (URI). * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception XMLException An exception from the parser or client * handler code. * @see #parse(InputSource) */ virtual void parse ( const XMLCh* const systemId ) ; /** * Parse an XML document from a system identifier (URI). * * This method is a shortcut for the common case of reading a * document from a system identifier. It is the exact equivalent * of the following: * * parse(new URLInputSource(systemId)); * * If the system identifier is a URL, it must be fully resolved * by the application before it is passed to the parser. * * @param systemId The system identifier (URI). * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception XMLException An exception from the parser or client * handler code. * @see #parse(InputSource) */ virtual void parse ( const char* const systemId ) ; //@} // ----------------------------------------------------------------------- // SAX 2.0-ext // ----------------------------------------------------------------------- /** @name SAX 2.0-ext */ //@{ /** * This method returns the installed declaration handler. * * @return A pointer to the installed declaration handler object. */ virtual DeclHandler* getDeclarationHandler() const ; /** * This method returns the installed lexical handler. * * @return A pointer to the installed lexical handler object. */ virtual LexicalHandler* getLexicalHandler() const ; /** * Allow an application to register a declaration event handler. * * If the application does not register a declaration handler, * all events reported by the SAX parser will be silently * ignored. (this is the default behaviour implemented by DefaultHandler). * * Applications may register a new or different handler in the * middle of a parse, and the SAX parser must begin using the new * handler immediately. * * @param handler The DTD declaration handler. * @see DeclHandler#DeclHandler * @see SAXException#SAXException * @see DefaultHandler#DefaultHandler */ virtual void setDeclarationHandler(DeclHandler* const handler) ; /** * Allow an application to register a lexical event handler. * * If the application does not register a lexical handler, * all events reported by the SAX parser will be silently * ignored. (this is the default behaviour implemented by HandlerBase). * * Applications may register a new or different handler in the * middle of a parse, and the SAX parser must begin using the new * handler immediately. * * @param handler The error handler. * @see LexicalHandler#LexicalHandler * @see SAXException#SAXException * @see HandlerBase#HandlerBase */ virtual void setLexicalHandler(LexicalHandler* const handler) ; //@} // ----------------------------------------------------------------------- // Getter Methods // ----------------------------------------------------------------------- /** @name Getter Methods (Xerces-C specific) */ //@{ /** * This method is used to get the current validator. * * SAX2XMLReader assumes responsibility for the validator. It will be * deleted when the XMLReader is destroyed. * * @return A pointer to the validator. An application should not deleted * the object returned. * */ virtual XMLValidator* getValidator() const ; //@} /** Get error count from the last parse operation. * * This method returns the error count from the last parse * operation. Note that this count is actually stored in the * scanner, so this method simply returns what the * scanner reports. * * @return number of errors encountered during the latest * parse operation. */ virtual XMLSize_t getErrorCount() const ; /** * This method returns the state of the parser's * exit-on-First-Fatal-Error flag. * *

    Or you can query the feature "http://apache.org/xml/features/continue-after-fatal-error" * which indicates the opposite state.

    * * @return true, if the parser is currently configured to * exit on the first fatal error, false otherwise. * * @see #setExitOnFirstFatalError * @see #getFeature */ virtual bool getExitOnFirstFatalError() const ; /** * This method returns the state of the parser's * validation-constraint-fatal flag. * *

    Or you can query the feature "http://apache.org/xml/features/validation-error-as-fatal" * which means the same thing. * * @return true, if the parser is currently configured to * set validation constraint errors as fatal, false * otherwise. * * @see #setValidationContraintFatal * @see #getFeature */ virtual bool getValidationConstraintFatal() const ; /** * Retrieve the grammar that is associated with the specified namespace key * * @param nameSpaceKey Namespace key * @return Grammar associated with the Namespace key. */ virtual Grammar* getGrammar(const XMLCh* const nameSpaceKey); /** * Retrieve the grammar where the root element is declared. * * @return Grammar where root element declared */ virtual Grammar* getRootGrammar(); /** * Returns the string corresponding to a URI id from the URI string pool. * * @param uriId id of the string in the URI string pool. * @return URI string corresponding to the URI id. */ virtual const XMLCh* getURIText(unsigned int uriId) const; /** * Returns the current src offset within the input source. * To be used only while parsing is in progress. * * @return offset within the input source */ virtual XMLFilePos getSrcOffset() const; //@} // ----------------------------------------------------------------------- // Setter Methods // ----------------------------------------------------------------------- /** @name Setter Methods (Xerces-C specific) */ //@{ /** * This method is used to set a validator. * * SAX2XMLReader assumes responsibility for the validator. It will be * deleted when the XMLReader is destroyed. * * @param valueToAdopt A pointer to the validator that the reader should use. * */ virtual void setValidator(XMLValidator* valueToAdopt) ; /** * This method allows users to set the parser's behaviour when it * encounters the first fatal error. If set to true, the parser * will exit at the first fatal error. If false, then it will * report the error and continue processing. * *

    The default value is 'true' and the parser exits on the * first fatal error.

    * *

    Or you can set the feature "http://apache.org/xml/features/continue-after-fatal-error" * which has the opposite behaviour.

    * *

    If both the feature above and this function are used, the latter takes effect.

    * * @param newState The value specifying whether the parser should * continue or exit when it encounters the first * fatal error. * * @see #getExitOnFirstFatalError * @see #setFeature */ virtual void setExitOnFirstFatalError(const bool newState) ; /** * This method allows users to set the parser's behaviour when it * encounters a validation constraint error. If set to true, and the * the parser will treat validation error as fatal and will exit depends on the * state of "getExitOnFirstFatalError". If false, then it will * report the error and continue processing. * * Note: setting this true does not mean the validation error will be printed with * the word "Fatal Error". It is still printed as "Error", but the parser * will exit if "setExitOnFirstFatalError" is set to true. * *

    The default value is 'false'.

    * *

    Or you can set the feature "http://apache.org/xml/features/validation-error-as-fatal" * which means the same thing.

    * *

    If both the feature above and this function are used, the latter takes effect.

    * * @param newState If true, the parser will exit if "setExitOnFirstFatalError" * is set to true. * * @see #getValidationConstraintFatal * @see #setExitOnFirstFatalError * @see #setFeature */ virtual void setValidationConstraintFatal(const bool newState) ; //@} // ----------------------------------------------------------------------- // Progressive scan methods // ----------------------------------------------------------------------- /** @name Progressive scan methods */ //@{ /** Begin a progressive parse operation * * This method is used to start a progressive parse on a XML file. * To continue parsing, subsequent calls must be to the parseNext * method. * * It scans through the prolog and returns a token to be used on * subsequent scanNext() calls. If the return value is true, then the * token is legal and ready for further use. If it returns false, then * the scan of the prolog failed and the token is not going to work on * subsequent scanNext() calls. * * @param systemId A pointer to a Unicode string representing the path * to the XML file to be parsed. * @param toFill A token maintaing state information to maintain * internal consistency between invocation of 'parseNext' * calls. * * @return 'true', if successful in parsing the prolog. It indicates the * user can go ahead with parsing the rest of the file. It * returns 'false' to indicate that the parser could parse the * prolog (which means the token will not be valid.) * * @see #parseNext * @see #parseFirst(char*,...) * @see #parseFirst(InputSource&,...) */ virtual bool parseFirst ( const XMLCh* const systemId , XMLPScanToken& toFill ) ; /** Begin a progressive parse operation * * This method is used to start a progressive parse on a XML file. * To continue parsing, subsequent calls must be to the parseNext * method. * * It scans through the prolog and returns a token to be used on * subsequent scanNext() calls. If the return value is true, then the * token is legal and ready for further use. If it returns false, then * the scan of the prolog failed and the token is not going to work on * subsequent scanNext() calls. * * @param systemId A pointer to a regular native string representing * the path to the XML file to be parsed. * @param toFill A token maintaing state information to maintain * internal consistency between invocation of 'parseNext' * calls. * * @return 'true', if successful in parsing the prolog. It indicates the * user can go ahead with parsing the rest of the file. It * returns 'false' to indicate that the parser could not parse * the prolog. * * @see #parseNext * @see #parseFirst(XMLCh*,...) * @see #parseFirst(InputSource&,...) */ virtual bool parseFirst ( const char* const systemId , XMLPScanToken& toFill ) ; /** Begin a progressive parse operation * * This method is used to start a progressive parse on a XML file. * To continue parsing, subsequent calls must be to the parseNext * method. * * It scans through the prolog and returns a token to be used on * subsequent scanNext() calls. If the return value is true, then the * token is legal and ready for further use. If it returns false, then * the scan of the prolog failed and the token is not going to work on * subsequent scanNext() calls. * * @param source A const reference to the InputSource object which * points to the XML file to be parsed. * @param toFill A token maintaing state information to maintain * internal consistency between invocation of 'parseNext' * calls. * * @return 'true', if successful in parsing the prolog. It indicates the * user can go ahead with parsing the rest of the file. It * returns 'false' to indicate that the parser could not parse * the prolog. * * @see #parseNext * @see #parseFirst(XMLCh*,...) * @see #parseFirst(char*,...) */ virtual bool parseFirst ( const InputSource& source , XMLPScanToken& toFill ) ; /** Continue a progressive parse operation * * This method is used to continue with progressive parsing of * XML files started by a call to 'parseFirst' method. * * It parses the XML file and stops as soon as it comes across * a XML token (as defined in the XML specification). Relevant * callback handlers are invoked as required by the SAX * specification. * * @param token A token maintaing state information to maintain * internal consistency between invocation of 'parseNext' * calls. * * @return 'true', if successful in parsing the next XML token. * It indicates the user can go ahead with parsing the rest * of the file. It returns 'false' to indicate that the parser * could not find next token as per the XML specification * production rule. * * @see #parseFirst(XMLCh*,...) * @see #parseFirst(char*,...) * @see #parseFirst(InputSource&,...) */ virtual bool parseNext(XMLPScanToken& token) ; /** Reset the parser after a progressive parse * * If a progressive parse loop exits before the end of the document * is reached, the parser has no way of knowing this. So it will leave * open any files or sockets or memory buffers that were in use at * the time that the parse loop exited. * * The next parse operation will cause these open files and such to * be closed, but the next parse operation might occur at some unknown * future point. To avoid this problem, you should reset the parser if * you exit the loop early. * * If you exited because of an error, then this cleanup will be done * for you. Its only when you exit the file prematurely of your own * accord, because you've found what you wanted in the file most * likely. * * @param token A token maintaing state information to maintain * internal consistency between invocation of 'parseNext' * calls. */ virtual void parseReset(XMLPScanToken& token) ; //@} // ----------------------------------------------------------------------- // Implementation of the grammar preparsing interface // ----------------------------------------------------------------------- /** @name Implementation of Grammar preparsing interface's. */ //@{ /** * Preparse schema grammar (XML Schema, DTD, etc.) via an input source * object. * * This method invokes the preparsing process on a schema grammar XML * file specified by the SAX InputSource parameter. * * * @param source A const reference to the SAX InputSource object which * points to the schema grammar file to be preparsed. * @param grammarType The grammar type (Schema or DTD). * @param toCache If true, we cache the preparsed grammar, * otherwise, no caching. Default is false. * @return The preparsed schema grammar object (SchemaGrammar or * DTDGrammar). That grammar object is owned by the parser. * * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception XMLException An exception from the parser or client * handler code. * @exception DOMException A DOM exception as per DOM spec. * * @see InputSource#InputSource */ virtual Grammar* loadGrammar(const InputSource& source, const Grammar::GrammarType grammarType, const bool toCache = false); /** * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL * * This method invokes the preparsing process on a schema grammar XML * file specified by the file path parameter. * * * @param systemId A const XMLCh pointer to the Unicode string which * contains the path to the XML grammar file to be * preparsed. * @param grammarType The grammar type (Schema or DTD). * @param toCache If true, we cache the preparsed grammar, * otherwise, no caching. Default is false. * @return The preparsed schema grammar object (SchemaGrammar or * DTDGrammar). That grammar object is owned by the parser. * * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception XMLException An exception from the parser or client * handler code. * @exception DOMException A DOM exception as per DOM spec. */ virtual Grammar* loadGrammar(const XMLCh* const systemId, const Grammar::GrammarType grammarType, const bool toCache = false); /** * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL * * This method invokes the preparsing process on a schema grammar XML * file specified by the file path parameter. * * * @param systemId A const char pointer to a native string which contains * the path to the XML grammar file to be preparsed. * @param grammarType The grammar type (Schema or DTD). * @param toCache If true, we cache the preparsed grammar, * otherwise, no caching. Default is false. * @return The preparsed schema grammar object (SchemaGrammar or * DTDGrammar). That grammar object is owned by the parser. * * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception XMLException An exception from the parser or client * handler code. * @exception DOMException A DOM exception as per DOM spec. */ virtual Grammar* loadGrammar(const char* const systemId, const Grammar::GrammarType grammarType, const bool toCache = false); /** * Clear the cached grammar pool */ virtual void resetCachedGrammarPool(); /** Set maximum input buffer size * * This method allows users to limit the size of buffers used in parsing * XML character data. The effect of setting this size is to limit the * size of a ContentHandler::characters() call. * * The parser's default input buffer size is 1 megabyte. * * @param bufferSize The maximum input buffer size */ virtual void setInputBufferSize(const XMLSize_t bufferSize); //@} // ----------------------------------------------------------------------- // Advanced document handler list maintenance methods // ----------------------------------------------------------------------- /** @name Advanced document handler list maintenance methods */ //@{ /** * This method installs the specified 'advanced' document callback * handler, thereby allowing the user to customize the processing, * if they choose to do so. Any number of advanced callback handlers * maybe installed. * *

    The methods in the advanced callback interface represent * Xerces-C extensions. There is no specification for this interface.

    * * @param toInstall A pointer to the users advanced callback handler. * * @see #removeAdvDocHandler */ virtual void installAdvDocHandler(XMLDocumentHandler* const toInstall) ; /** * This method removes the 'advanced' document handler callback from * the underlying parser scanner. If no handler is installed, advanced * callbacks are not invoked by the scanner. * @param toRemove A pointer to the advanced callback handler which * should be removed. * * @see #installAdvDocHandler */ virtual bool removeAdvDocHandler(XMLDocumentHandler* const toRemove) ; //@} // ----------------------------------------------------------------------- // Implementation of the XMLDocumentHandler interface // ----------------------------------------------------------------------- /** @name Implementation of the XMLDocumentHandler Interface. */ //@{ /** * This method is used to report all the characters scanned * by the parser. The driver will invoke the 'characters' * method of the user installed SAX Document Handler. * *

    If any advanced callback handlers are installed, the * corresponding 'docCharacters' method will also be invoked.

    * * @param chars A const pointer to a Unicode string representing the * character data. * @param length The length of the Unicode string returned in 'chars'. * @param cdataSection A flag indicating if the characters represent * content from the CDATA section. * @see DocumentHandler#characters */ virtual void docCharacters ( const XMLCh* const chars , const XMLSize_t length , const bool cdataSection ); /** * This method is used to report any comments scanned by the parser. * This method is a no-op unless, unless an advanced callback handler * is installed, in which case the corresponding 'docComment' method * is invoked. * * @param comment A const pointer to a null terminated Unicode * string representing the comment text. */ virtual void docComment ( const XMLCh* const comment ); /** * This method is used to report any PI scanned by the parser. * *

    Any PI's occurring before any 'content' are not reported * to any SAX handler as per the specification. However, all * PI's within content are reported via the SAX Document Handler's * 'processingInstruction' method. * *

    If any advanced callback handlers are installed, the * corresponding 'docPI' method will be invoked.

    * * @param target A const pointer to a Unicode string representing the * target of the PI declaration. * @param data A const pointer to a Unicode string representing the * data of the PI declaration. See the PI production rule * in the XML specification for details. * * @see DocumentHandler#processingInstruction */ virtual void docPI ( const XMLCh* const target , const XMLCh* const data ); /** * This method is used to indicate the end of root element * was just scanned by the parser. Corresponding 'endDocument' * method of the user installed SAX Document Handler will also * be invoked. * *

    In addition, if any advanced callback handlers are installed, * the corresponding 'endDocument' method is invoked.

    * * @see DocumentHandler#endDocument */ virtual void endDocument(); /** * This method is used to indicate the end tag of an element. * The driver will invoke the corresponding 'endElement' method of * the SAX Document Handler interface. * *

    If any advanced callback handlers are installed, the * corresponding 'endElement' method is also invoked.

    * * @param elemDecl A const reference to the object containing element * declaration information. * @param urlId An id referring to the namespace prefix, if * namespaces setting is switched on. * @param isRoot A flag indicating whether this element was the * root element. * @param elemPrefix A const pointer to a Unicode string containing * the namespace prefix for this element. Applicable * only when namespace processing is enabled. * @see DocumentHandler#endElement */ virtual void endElement ( const XMLElementDecl& elemDecl , const unsigned int urlId , const bool isRoot , const XMLCh* const elemPrefix=0 ); /** * This method is used to indicate that an end of an entity reference * was just scanned. * *

    If any advanced callback handlers are installed, the * corresponding 'endEntityReference' method is invoked.

    * * @param entDecl A const reference to the object containing the * entity declaration information. */ virtual void endEntityReference ( const XMLEntityDecl& entDecl ); /** * This method is used to report all the whitespace characters, * which are determined to be 'ignorable'. This distinction * between characters is only made, if validation is enabled. * Corresponding 'ignorableWhitespace' method of the user installed * SAX Document Handler interface is called. * *

    Any whitespace before content is not reported to the SAX * Document Handler method, as per the SAX specification. * However, if any advanced callback handlers are installed, the * corresponding 'ignorableWhitespace' method is invoked.

    * * @param chars A const pointer to a Unicode string representing the * ignorable whitespace character data. * @param length The length of the Unicode string 'chars'. * @param cdataSection A flag indicating if the characters represent * content from the CDATA section. * @see DocumentHandler#ignorableWhitespace */ virtual void ignorableWhitespace ( const XMLCh* const chars , const XMLSize_t length , const bool cdataSection ); /** * This method allows the user installed Document Handler and * any advanced callback handlers to 'reset' themselves. */ virtual void resetDocument(); /** * This method is used to report the start of the parsing process. * The corresponding user installed SAX Document Handler's method * 'startDocument' is invoked. * *

    If any advanced callback handlers are installed, then the * corresponding 'startDocument' method is also called.

    * * @see DocumentHandler#startDocument */ virtual void startDocument(); /** * This method is used to report the start of an element. It is * called at the end of the element, by which time all attributes * specified are also parsed. The corresponding user installed * SAX Document Handler's method 'startElement' is invoked. * *

    If any advanced callback handlers are installed, then the * corresponding 'startElement' method is also called.

    * * @param elemDecl A const reference to the object containing element * declaration information. * @param urlId An id referring to the namespace prefix, if * namespaces setting is switched on. * @param elemPrefix A const pointer to a Unicode string containing * the namespace prefix for this element. Applicable * only when namespace processing is enabled. * @param attrList A const reference to the object containing the * list of attributes just scanned for this element. * @param attrCount A count of number of attributes in the list * specified by the parameter 'attrList'. * @param isEmpty A flag indicating whether this is an empty element * or not. * @param isRoot A flag indicating whether this element was the * root element. * @see DocumentHandler#startElement */ virtual void startElement ( const XMLElementDecl& elemDecl , const unsigned int urlId , const XMLCh* const elemPrefix , const RefVectorOf& attrList , const XMLSize_t attrCount , const bool isEmpty , const bool isRoot ); /** * This method is used to indicate the start of an entity reference. * *

    If any advanced callback handlers are installed, the * corresponding 'endEntityReference' method is invoked.

    * * @param entDecl A const reference to the object containing the * entity declaration information. */ virtual void startEntityReference ( const XMLEntityDecl& entDecl ); /** * This method is used to report the XML decl scanned by the parser. * Refer to the XML specification to see the meaning of parameters. * * This method is a no-op for this SAX driver * implementation. * * @param versionStr A const pointer to a Unicode string representing * version string value. * @param encodingStr A const pointer to a Unicode string representing * the encoding string value. * @param standaloneStr A const pointer to a Unicode string * representing the standalone string value. * @param actualEncodingStr A const pointer to a Unicode string * representing the actual encoding string * value. */ virtual void XMLDecl ( const XMLCh* const versionStr , const XMLCh* const encodingStr , const XMLCh* const standaloneStr , const XMLCh* const actualEncodingStr ); //@} // ----------------------------------------------------------------------- // Implementation of the XMLErrorReporter interface // ----------------------------------------------------------------------- /** @name Implementation of the XMLErrorReporter Interface. */ //@{ /** * This method is used to report back errors found while parsing the * XML file. The driver will call the corresponding user installed * SAX Error Handler methods: 'fatal', 'error', 'warning' depending * on the severity of the error. This classification is defined by * the XML specification. * * @param errCode An integer code for the error. * @param msgDomain A const pointer to an Unicode string representing * the message domain to use. * @param errType An enumeration classifying the severity of the error. * @param errorText A const pointer to an Unicode string representing * the text of the error message. * @param systemId A const pointer to an Unicode string representing * the system id of the XML file where this error * was discovered. * @param publicId A const pointer to an Unicode string representing * the public id of the XML file where this error * was discovered. * @param lineNum The line number where the error occurred. * @param colNum The column number where the error occurred. * @see ErrorHandler */ virtual void error ( const unsigned int errCode , const XMLCh* const msgDomain , const XMLErrorReporter::ErrTypes errType , const XMLCh* const errorText , const XMLCh* const systemId , const XMLCh* const publicId , const XMLFileLoc lineNum , const XMLFileLoc colNum ); /** * This method allows the user installed Error Handler * callback to 'reset' itself. * * This method is a no-op for this SAX driver * implementation. * */ virtual void resetErrors(); //@} // ----------------------------------------------------------------------- // Implementation of the XMLEntityHandler interface // ----------------------------------------------------------------------- /** @name Implementation of the XMLEntityHandler Interface. */ //@{ /** * This method is used to indicate the end of parsing of an external * entity file. * * This method is a no-op for this SAX driver * implementation. * * @param inputSource A const reference to the InputSource object * which points to the XML file being parsed. * @see InputSource */ virtual void endInputSource(const InputSource& inputSource); /** * This method allows an installed XMLEntityHandler to further * process any system id's of external entities encountered in * the XML file being parsed, such as redirection etc. * * This method always returns 'false' * for this SAX driver implementation. * * @param systemId A const pointer to an Unicode string representing * the system id scanned by the parser. * @param toFill A pointer to a buffer in which the application * processed system id is stored. * @return 'true', if any processing is done, 'false' otherwise. */ virtual bool expandSystemId ( const XMLCh* const systemId , XMLBuffer& toFill ); /** * This method allows the installed XMLEntityHandler to reset * itself. * * This method is a no-op for this SAX driver * implementation. */ virtual void resetEntities(); /** Resolve a public/system id * * This method allows a user installed entity handler to further * process any pointers to external entities. The applications can * implement 'redirection' via this callback. * * @param resourceIdentifier An object containing the type of * resource to be resolved and the associated data members * corresponding to this type. * @return The value returned by the user installed resolveEntity * method or NULL otherwise to indicate no processing was done. * The returned InputSource is owned by the parser which is * responsible to clean up the memory. * @see XMLEntityHandler * @see XMLEntityResolver */ virtual InputSource* resolveEntity ( XMLResourceIdentifier* resourceIdentifier ); /** * This method is used to indicate the start of parsing an * external entity file. * * This method is a no-op for this SAX driver * implementation. * * @param inputSource A const reference to the InputSource object * which points to the external entity * being parsed. */ virtual void startInputSource(const InputSource& inputSource); //@} // ----------------------------------------------------------------------- // Implementation of the Deprecated DocTypeHandler Interface // ----------------------------------------------------------------------- /** @name Implementation of the deprecated DocTypeHandler Interface */ //@{ /** * This method is used to report an attribute definition. * * This method is a no-op for this SAX * driver implementation. * * @param elemDecl A const reference to the object containing information * about the element whose attribute definition was just * parsed. * @param attDef A const reference to the object containing information * attribute definition. * @param ignore The flag indicating whether this attribute definition * was ignored by the parser or not. */ virtual void attDef ( const DTDElementDecl& elemDecl , const DTDAttDef& attDef , const bool ignoring ); /** * This method is used to report a comment occurring within the DTD. * * This method is a no-op for this SAX driver * implementation. * * @param comment A const pointer to a Unicode string representing the * text of the comment just parsed. */ virtual void doctypeComment ( const XMLCh* const comment ); /** * This method is used to report the DOCTYPE declaration. * * This method is a no-op for this SAX driver * implementation. * * @param elemDecl A const reference to the object containing information * about the root element definition declaration of the * XML document being parsed. * @param publicId A const pointer to a Unicode string representing the * public id of the DTD file. * @param systemId A const pointer to a Unicode string representing the * system id of the DTD file. * @param hasIntSubset A flag indicating if this XML file contains any * internal subset. * @param hasExtSubset A flag indicating if this XML file contains any * external subset. Default is false. */ virtual void doctypeDecl ( const DTDElementDecl& elemDecl , const XMLCh* const publicId , const XMLCh* const systemId , const bool hasIntSubset , const bool hasExtSubset = false ); /** * This method is used to report any PI declarations * occurring inside the DTD definition block. * * This method is a no-op for this SAX driver * implementation. * * @param target A const pointer to a Unicode string representing the * target of the PI declaration. * @param data A const pointer to a Unicode string representing the * data of the PI declaration. See the PI production rule * in the XML specification for details. */ virtual void doctypePI ( const XMLCh* const target , const XMLCh* const data ); /** * This method is used to report any whitespaces * occurring inside the DTD definition block. * * This method is a no-op for this SAX driver * implementation. * * @param chars A const pointer to a Unicode string representing the * whitespace characters. * @param length The length of the whitespace Unicode string. */ virtual void doctypeWhitespace ( const XMLCh* const chars , const XMLSize_t length ); /** * This method is used to report an element declarations * successfully scanned by the parser. * * This method is a no-op for this SAX driver * implementation. * * @param decl A const reference to the object containing element * declaration information. * @param isIgnored The flag indicating whether this definition was * ignored by the parser or not. */ virtual void elementDecl ( const DTDElementDecl& decl , const bool isIgnored ); /** * This method is used to report the end of an attribute * list declaration for an element. * * This method is a no-op for this SAX driver * implementation. * * @param elemDecl A const reference to the object containing element * declaration information. */ virtual void endAttList ( const DTDElementDecl& elemDecl ); /** * This method is used to report the end of the internal subset. * * This method is a no-op for this SAX driver * implementation. */ virtual void endIntSubset(); /** * This method is used to report the end of the external subset. * * This method is a no-op for this SAX driver * implementation. */ virtual void endExtSubset(); /** * This method is used to report any entity declarations. * For unparsed entities, this driver will invoke the * SAX DTDHandler::unparsedEntityDecl callback. * * @param entityDecl A const reference to the object containing * the entity declaration information. * @param isPEDecl The flag indicating whether this was a * parameter entity declaration or not. * @param isIgnored The flag indicating whether this definition * was ignored by the parser or not. * * @see DTDHandler#unparsedEntityDecl */ virtual void entityDecl ( const DTDEntityDecl& entityDecl , const bool isPEDecl , const bool isIgnored ); /** * This method allows the user installed DTD handler to * reset itself. */ virtual void resetDocType(); /** * This method is used to report any notation declarations. * If there is a user installed DTDHandler, then the driver will * invoke the SAX DTDHandler::notationDecl callback. * * @param notDecl A const reference to the object containing the notation * declaration information. * @param isIgnored The flag indicating whether this definition was ignored * by the parser or not. * * @see DTDHandler#notationDecl */ virtual void notationDecl ( const XMLNotationDecl& notDecl , const bool isIgnored ); /** * This method is used to indicate the start of an element's attribute * list declaration. * * This method is a no-op for this SAX driver * implementation. * * @param elemDecl A const reference to the object containing element * declaration information. */ virtual void startAttList ( const DTDElementDecl& elemDecl ); /** * This method is used indicate the start of the internal subset. * * This method is a no-op for this SAX driver * implementation. */ virtual void startIntSubset(); /** * This method is used indicate the start of the external subset. * * This method is a no-op for this SAX driver * implementation. */ virtual void startExtSubset(); /** * This method is used to report the TextDecl. Refer to the XML * specification for the syntax of a TextDecl. * * This method is a no-op for this SAX driver * implementation. * * @param versionStr A const pointer to a Unicode string representing * the version number of the 'version' clause. * @param encodingStr A const pointer to a Unicode string representing * the encoding name of the 'encoding' clause. */ virtual void TextDecl ( const XMLCh* const versionStr , const XMLCh* const encodingStr ); //@} private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- SAX2XMLReaderImpl(const SAX2XMLReaderImpl&); SAX2XMLReaderImpl& operator=(const SAX2XMLReaderImpl&); // ----------------------------------------------------------------------- // Initialize/Cleanup methods // ----------------------------------------------------------------------- void initialize(); void cleanUp(); void resetInProgress(); // ----------------------------------------------------------------------- // Private data members // // fAttrList // A temporary implementation of the basic SAX2 Attributes // interface. We use this one over and over on each startElement // event to allow SAX-like access to the element attributes. // // fDocHandler // The installed SAX content handler, if any. Null if none. // // fnamespacePrefix // Indicates whether the namespace-prefix feature is on or off. // // fautoValidation // Indicates whether automatic validation is on or off // // fValidation // Indicates whether the 'validation' core features is on or off // // fReuseGrammar // Tells the parser whether it should reuse the grammar or not. // If true, there cannot be any internal subset. // // fPrefixesStorage // the namespace prefixes will be allocated from this pool // // fPrefixes // A Stack of the current namespace prefixes that need calls to // endPrefixMapping // // fPrefixCounts // A Stack of the number of prefixes that need endPrefixMapping // calls for that element // // fDTDHandler // The installed SAX DTD handler, if any. Null if none. // // fElemDepth // This is used to track the element nesting depth, so that we can // know when we are inside content. This is so we can ignore char // data outside of content. // // fEntityResolver // The installed SAX entity handler, if any. Null if none. // // fErrorHandler // The installed SAX error handler, if any. Null if none. // // fLexicalHandler // The installed SAX lexical handler, if any. Null if none. // // fDecllHandler // The installed SAX declaration handler, if any. Null if none. // // fAdvDHCount // fAdvDHList // fAdvDHListSize // This is an array of pointers to XMLDocumentHandlers, which is // how we see installed advanced document handlers. There will // usually not be very many at all, so a simple array is used // instead of a collection, for performance. It will grow if needed, // but that is unlikely. // // The count is how many handlers are currently installed. The size // is how big the array itself is (for expansion purposes.) When // count == size, is time to expand. // // fParseInProgress // This flag is set once a parse starts. It is used to prevent // multiple entrance or reentrance of the parser. // // fScanner // The scanner being used by this parser. It is created internally // during construction. // // fHasExternalSubset // Indicate if the document has external DTD subset. // // fGrammarPool // The grammar pool passed from external application (through derivatives). // which could be 0, not owned. // // ----------------------------------------------------------------------- bool fNamespacePrefix; bool fAutoValidation; bool fValidation; bool fParseInProgress; bool fHasExternalSubset; XMLSize_t fElemDepth; XMLSize_t fAdvDHCount; XMLSize_t fAdvDHListSize; VecAttributesImpl fAttrList ; ContentHandler* fDocHandler ; RefVectorOf* fTempAttrVec ; XMLStringPool* fPrefixesStorage ; ValueStackOf* fPrefixes ; ValueStackOf* fPrefixCounts ; XMLBuffer* fTempQName; DTDHandler* fDTDHandler; EntityResolver* fEntityResolver; XMLEntityResolver* fXMLEntityResolver; ErrorHandler* fErrorHandler; PSVIHandler* fPSVIHandler; LexicalHandler* fLexicalHandler; DeclHandler* fDeclHandler; XMLDocumentHandler** fAdvDHList; XMLScanner* fScanner; GrammarResolver* fGrammarResolver; XMLStringPool* fURIStringPool; XMLValidator* fValidator; MemoryManager* fMemoryManager; XMLGrammarPool* fGrammarPool; // ----------------------------------------------------------------------- // internal function used to set the state of the parser // ----------------------------------------------------------------------- void setValidationScheme(const ValSchemes newScheme); void setDoNamespaces(const bool newState); bool getDoNamespaces() const; void setDoSchema(const bool newState); bool getDoSchema() const; }; // --------------------------------------------------------------------------- // SAX2XMLReader: Getter methods // --------------------------------------------------------------------------- inline ContentHandler* SAX2XMLReaderImpl::getContentHandler() const { return fDocHandler; } inline DTDHandler* SAX2XMLReaderImpl::getDTDHandler() const { return fDTDHandler ; } inline EntityResolver* SAX2XMLReaderImpl::getEntityResolver() const { return fEntityResolver; } inline XMLEntityResolver* SAX2XMLReaderImpl::getXMLEntityResolver() const { return fXMLEntityResolver; } inline ErrorHandler* SAX2XMLReaderImpl::getErrorHandler() const { return fErrorHandler; } inline PSVIHandler* SAX2XMLReaderImpl::getPSVIHandler() const { return fPSVIHandler; } inline LexicalHandler* SAX2XMLReaderImpl::getLexicalHandler() const { return fLexicalHandler; } inline DeclHandler* SAX2XMLReaderImpl::getDeclarationHandler() const { return fDeclHandler; } inline bool SAX2XMLReaderImpl::getExitOnFirstFatalError() const { return fScanner->getExitOnFirstFatal(); } inline bool SAX2XMLReaderImpl::getValidationConstraintFatal() const { return fScanner->getValidationConstraintFatal(); } inline Grammar* SAX2XMLReaderImpl::getRootGrammar() { return fScanner->getRootGrammar(); } inline const XMLCh* SAX2XMLReaderImpl::getURIText(unsigned int uriId) const { return fScanner->getURIText(uriId); } inline XMLFilePos SAX2XMLReaderImpl::getSrcOffset() const { return fScanner->getSrcOffset(); } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/parsers/SAX2XMLReaderImpl.cpp0000644000175000017500000014572011301516456021727 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SAX2XMLReaderImpl.cpp 882548 2009-11-20 13:44:14Z borisk $ */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN SAX2XMLReader * XMLReaderFactory::createXMLReader( MemoryManager* const manager , XMLGrammarPool* const gramPool) { SAX2XMLReaderImpl* pImpl=new (manager) SAX2XMLReaderImpl(manager, gramPool); return pImpl; } const XMLCh gDTDEntityStr[] = { chOpenSquare, chLatin_d, chLatin_t, chLatin_d, chCloseSquare, chNull }; typedef JanitorMemFunCall CleanupType; typedef JanitorMemFunCall ResetInProgressType; SAX2XMLReaderImpl::SAX2XMLReaderImpl(MemoryManager* const manager , XMLGrammarPool* const gramPool): fNamespacePrefix(false) , fAutoValidation(false) , fValidation(false) , fParseInProgress(false) , fHasExternalSubset(false) , fElemDepth(0) , fAdvDHCount(0) , fAdvDHListSize(32) , fDocHandler(0) , fTempAttrVec(0) , fPrefixesStorage(0) , fPrefixes(0) , fPrefixCounts(0) , fTempQName(0) , fDTDHandler(0) , fEntityResolver(0) , fXMLEntityResolver(0) , fErrorHandler(0) , fPSVIHandler(0) , fLexicalHandler(0) , fDeclHandler(0) , fAdvDHList(0) , fScanner(0) , fGrammarResolver(0) , fURIStringPool(0) , fValidator(0) , fMemoryManager(manager) , fGrammarPool(gramPool) { CleanupType cleanup(this, &SAX2XMLReaderImpl::cleanUp); try { initialize(); } catch(const OutOfMemoryException&) { // Don't cleanup when out of memory, since executing the // code can cause problems. cleanup.release(); throw; } cleanup.release(); } SAX2XMLReaderImpl::~SAX2XMLReaderImpl() { cleanUp(); } // --------------------------------------------------------------------------- // SAX2XMLReaderImpl: Initialize/Cleanup methods // --------------------------------------------------------------------------- void SAX2XMLReaderImpl::initialize() { // Create grammar resolver and string pool that we pass to the scanner fGrammarResolver = new (fMemoryManager) GrammarResolver(fGrammarPool, fMemoryManager); fURIStringPool = fGrammarResolver->getStringPool(); // Create a scanner and tell it what validator to use. Then set us // as the document event handler so we can fill the DOM document. fScanner = XMLScannerResolver::getDefaultScanner(0, fGrammarResolver, fMemoryManager); fScanner->setURIStringPool(fURIStringPool); // Create the initial advanced handler list array and zero it out fAdvDHList = (XMLDocumentHandler**) fMemoryManager->allocate ( fAdvDHListSize * sizeof(XMLDocumentHandler*) );//new XMLDocumentHandler*[fAdvDHListSize]; memset(fAdvDHList, 0, sizeof(void*) * fAdvDHListSize); // SAX2 default is for namespaces (feature http://xml.org/sax/features/namespaces) to be on setDoNamespaces(true) ; // default: schema is on setDoSchema(true); fPrefixesStorage = new (fMemoryManager) XMLStringPool(109, fMemoryManager) ; fPrefixes = new (fMemoryManager) ValueStackOf (30, fMemoryManager) ; fTempAttrVec = new (fMemoryManager) RefVectorOf (10, false, fMemoryManager) ; fPrefixCounts = new (fMemoryManager) ValueStackOf(10, fMemoryManager) ; fTempQName = new (fMemoryManager) XMLBuffer(32, fMemoryManager); } void SAX2XMLReaderImpl::cleanUp() { fMemoryManager->deallocate(fAdvDHList);//delete [] fAdvDHList; delete fScanner; delete fPrefixesStorage; delete fPrefixes; delete fTempAttrVec; delete fPrefixCounts; delete fGrammarResolver; delete fTempQName; // grammar pool must do this //delete fURIStringPool; } // --------------------------------------------------------------------------- // SAX2XMLReaderImpl: Advanced document handler list maintenance methods // --------------------------------------------------------------------------- void SAX2XMLReaderImpl::installAdvDocHandler(XMLDocumentHandler* const toInstall) { // See if we need to expand and do so now if needed if (fAdvDHCount == fAdvDHListSize) { // Calc a new size and allocate the new temp buffer const XMLSize_t newSize = (XMLSize_t)(fAdvDHListSize * 1.5); XMLDocumentHandler** newList = (XMLDocumentHandler**) fMemoryManager->allocate ( newSize * sizeof(XMLDocumentHandler*) );//new XMLDocumentHandler*[newSize]; // Copy over the old data to the new list and zero out the rest memcpy(newList, fAdvDHList, sizeof(void*) * fAdvDHListSize); memset ( &newList[fAdvDHListSize] , 0 , sizeof(void*) * (newSize - fAdvDHListSize) ); // And now clean up the old array and store the new stuff fMemoryManager->deallocate(fAdvDHList);//delete [] fAdvDHList; fAdvDHList = newList; fAdvDHListSize = newSize; } // Add this new guy into the empty slot fAdvDHList[fAdvDHCount++] = toInstall; // // Install ourself as the document handler with the scanner. We might // already be, but its not worth checking, just do it. // fScanner->setDocHandler(this); } bool SAX2XMLReaderImpl::removeAdvDocHandler(XMLDocumentHandler* const toRemove) { // If our count is zero, can't be any installed if (!fAdvDHCount) return false; // // Search the array until we find this handler. If we find a null entry // first, we can stop there before the list is kept contiguous. // XMLSize_t index; for (index = 0; index < fAdvDHCount; index++) { // // We found it. We have to keep the list contiguous, so we have to // copy down any used elements after this one. // if (fAdvDHList[index] == toRemove) { // // Optimize if only one entry (pretty common). Otherwise, we // have to copy them down to compact them. // if (fAdvDHCount > 1) { index++; while (index < fAdvDHCount) fAdvDHList[index - 1] = fAdvDHList[index]; } // Bump down the count and zero out the last one fAdvDHCount--; fAdvDHList[fAdvDHCount] = 0; // // If this leaves us with no advanced handlers and there is // no SAX doc handler installed on us, then remove us from the // scanner as the document handler. // if (!fAdvDHCount && !fDocHandler) fScanner->setDocHandler(0); return true; } } // Never found it return false; } // --------------------------------------------------------------------------- // SAX2XMLReaderImpl Validator functions // --------------------------------------------------------------------------- void SAX2XMLReaderImpl::setValidator(XMLValidator* valueToAdopt) { fValidator = valueToAdopt; fScanner->setValidator(valueToAdopt); } XMLValidator* SAX2XMLReaderImpl::getValidator() const { return fScanner->getValidator(); } // --------------------------------------------------------------------------- // SAX2XMLReader Interface // --------------------------------------------------------------------------- XMLSize_t SAX2XMLReaderImpl::getErrorCount() const { return fScanner->getErrorCount(); } void SAX2XMLReaderImpl::setContentHandler(ContentHandler* const handler) { fDocHandler = handler; if (fDocHandler) { // // Make sure we are set as the document handler with the scanner. // We may already be (if advanced handlers are installed), but its // not worthing checking, just do it. // fScanner->setDocHandler(this); } else { // // If we don't have any advanced handlers either, then deinstall us // from the scanner because we don't need document events anymore. // if (!fAdvDHCount) fScanner->setDocHandler(0); } } void SAX2XMLReaderImpl::setDTDHandler(DTDHandler* const handler) { fDTDHandler = handler; if (fDTDHandler) fScanner->setDocTypeHandler(this); else fScanner->setDocTypeHandler(0); } void SAX2XMLReaderImpl::setErrorHandler(ErrorHandler* const handler) { // // Store the handler. Then either install or deinstall us as the // error reporter on the scanner. // fErrorHandler = handler; if (fErrorHandler) { fScanner->setErrorReporter(this); fScanner->setErrorHandler(fErrorHandler); } else { fScanner->setErrorReporter(0); fScanner->setErrorHandler(0); } } void SAX2XMLReaderImpl::setPSVIHandler(PSVIHandler* const handler) { fPSVIHandler = handler; if (fPSVIHandler) { fScanner->setPSVIHandler(fPSVIHandler); } else { fScanner->setPSVIHandler(0); } } void SAX2XMLReaderImpl::setLexicalHandler(LexicalHandler* const handler) { fLexicalHandler = handler; if (fLexicalHandler) fScanner->setDocTypeHandler(this); else fScanner->setDocTypeHandler(0); } void SAX2XMLReaderImpl::setDeclarationHandler(DeclHandler* const handler) { fDeclHandler = handler; if (fDeclHandler) fScanner->setDocTypeHandler(this); else fScanner->setDocTypeHandler(0); } void SAX2XMLReaderImpl::setEntityResolver(EntityResolver* const resolver) { fEntityResolver = resolver; if (fEntityResolver) { fScanner->setEntityHandler(this); fXMLEntityResolver = 0; } else { fScanner->setEntityHandler(0); } } void SAX2XMLReaderImpl::setXMLEntityResolver(XMLEntityResolver* const resolver) { fXMLEntityResolver = resolver; if (fXMLEntityResolver) { fScanner->setEntityHandler(this); fEntityResolver = 0; } else { fScanner->setEntityHandler(0); } } void SAX2XMLReaderImpl::setExitOnFirstFatalError(const bool newState) { fScanner->setExitOnFirstFatal(newState); } void SAX2XMLReaderImpl::setValidationConstraintFatal(const bool newState) { fScanner->setValidationConstraintFatal(newState); } void SAX2XMLReaderImpl::parse (const InputSource& source) { // Avoid multiple entrance if (fParseInProgress) ThrowXMLwithMemMgr(IOException, XMLExcepts::Gen_ParseInProgress, fMemoryManager); ResetInProgressType resetInProgress(this, &SAX2XMLReaderImpl::resetInProgress); try { fParseInProgress = true; fScanner->scanDocument(source); } catch(const OutOfMemoryException&) { resetInProgress.release(); throw; } } void SAX2XMLReaderImpl::parse (const XMLCh* const systemId) { // Avoid multiple entrance if (fParseInProgress) ThrowXMLwithMemMgr(IOException, XMLExcepts::Gen_ParseInProgress, fMemoryManager); ResetInProgressType resetInProgress(this, &SAX2XMLReaderImpl::resetInProgress); try { fParseInProgress = true; fScanner->scanDocument(systemId); } catch(const OutOfMemoryException&) { resetInProgress.release(); throw; } } void SAX2XMLReaderImpl::parse (const char* const systemId) { // Avoid multiple entrance if (fParseInProgress) ThrowXMLwithMemMgr(IOException, XMLExcepts::Gen_ParseInProgress, fMemoryManager); ResetInProgressType resetInProgress(this, &SAX2XMLReaderImpl::resetInProgress); try { fParseInProgress = true; fScanner->scanDocument(systemId); } catch(const OutOfMemoryException&) { resetInProgress.release(); throw; } } // --------------------------------------------------------------------------- // SAX2XMLReaderImpl: Progressive parse methods // --------------------------------------------------------------------------- bool SAX2XMLReaderImpl::parseFirst( const XMLCh* const systemId , XMLPScanToken& toFill) { // // Avoid multiple entrance. We cannot enter here while a regular parse // is in progress. // if (fParseInProgress) ThrowXMLwithMemMgr(IOException, XMLExcepts::Gen_ParseInProgress, fMemoryManager); return fScanner->scanFirst(systemId, toFill); } bool SAX2XMLReaderImpl::parseFirst( const char* const systemId , XMLPScanToken& toFill) { // // Avoid multiple entrance. We cannot enter here while a regular parse // is in progress. // if (fParseInProgress) ThrowXMLwithMemMgr(IOException, XMLExcepts::Gen_ParseInProgress, fMemoryManager); return fScanner->scanFirst(systemId, toFill); } bool SAX2XMLReaderImpl::parseFirst( const InputSource& source , XMLPScanToken& toFill) { // // Avoid multiple entrance. We cannot enter here while a regular parse // is in progress. // if (fParseInProgress) ThrowXMLwithMemMgr(IOException, XMLExcepts::Gen_ParseInProgress, fMemoryManager); return fScanner->scanFirst(source, toFill); } bool SAX2XMLReaderImpl::parseNext(XMLPScanToken& token) { return fScanner->scanNext(token); } void SAX2XMLReaderImpl::parseReset(XMLPScanToken& token) { // Reset the scanner fScanner->scanReset(token); } // --------------------------------------------------------------------------- // SAX2XMLReaderImpl: Overrides of the XMLDocumentHandler interface // --------------------------------------------------------------------------- void SAX2XMLReaderImpl::docCharacters( const XMLCh* const chars , const XMLSize_t length , const bool cdataSection) { // Suppress the chars before the root element. if (fElemDepth) { // Call the installed LexicalHandler. if (cdataSection && fLexicalHandler) fLexicalHandler->startCDATA(); // Just map to the SAX document handler if (fDocHandler) fDocHandler->characters(chars, length); // Call the installed LexicalHandler. if (cdataSection && fLexicalHandler) fLexicalHandler->endCDATA(); } // // If there are any installed advanced handlers, then lets call them // with this info. // for (XMLSize_t index = 0; index < fAdvDHCount; index++) fAdvDHList[index]->docCharacters(chars, length, cdataSection); } void SAX2XMLReaderImpl::docComment(const XMLCh* const commentText) { // Call the installed LexicalHandler. if (fLexicalHandler) { // SAX2 reports comment text like characters -- as an // array with a length. fLexicalHandler->comment(commentText, XMLString::stringLen(commentText)); } // // OK, if there are any installed advanced handlers, // then let's call them with this info. // for (XMLSize_t index = 0; index < fAdvDHCount; index++) fAdvDHList[index]->docComment(commentText); } void SAX2XMLReaderImpl::XMLDecl( const XMLCh* const versionStr , const XMLCh* const encodingStr , const XMLCh* const standaloneStr , const XMLCh* const actualEncodingStr ) { // SAX has no way to report this event. But, if there are any installed // advanced handlers, then lets call them with this info. // for (XMLSize_t index = 0; index < fAdvDHCount; index++) fAdvDHList[index]->XMLDecl( versionStr, encodingStr, standaloneStr, actualEncodingStr ); } void SAX2XMLReaderImpl::docPI( const XMLCh* const target , const XMLCh* const data) { // Just map to the SAX document handler if (fDocHandler) fDocHandler->processingInstruction(target, data); // // If there are any installed advanced handlers, then lets call them // with this info. // for (XMLSize_t index = 0; index < fAdvDHCount; index++) fAdvDHList[index]->docPI(target, data); } void SAX2XMLReaderImpl::endDocument() { if (fDocHandler) fDocHandler->endDocument(); // // If there are any installed advanced handlers, then lets call them // with this info. // for (XMLSize_t index = 0; index < fAdvDHCount; index++) fAdvDHList[index]->endDocument(); } void SAX2XMLReaderImpl::endEntityReference(const XMLEntityDecl& entityDecl) { // Call the installed LexicalHandler. if (fLexicalHandler) fLexicalHandler->endEntity(entityDecl.getName()); // // SAX has no way to report this event. But, if there are any installed // advanced handlers, then lets call them with this info. // for (XMLSize_t index = 0; index < fAdvDHCount; index++) fAdvDHList[index]->endEntityReference(entityDecl); } void SAX2XMLReaderImpl::ignorableWhitespace(const XMLCh* const chars , const XMLSize_t length , const bool cdataSection) { // Do not report the whitespace before the root element. if (!fElemDepth) return; // Just map to the SAX document handler if (fDocHandler) fDocHandler->ignorableWhitespace(chars, length); // // If there are any installed advanced handlers, then lets call them // with this info. // for (XMLSize_t index = 0; index < fAdvDHCount; index++) fAdvDHList[index]->ignorableWhitespace(chars, length, cdataSection); } void SAX2XMLReaderImpl::resetDocument() { // // If there are any installed advanced handlers, then lets call them // with this info. // for (XMLSize_t index = 0; index < fAdvDHCount; index++) fAdvDHList[index]->resetDocument(); // Make sure our element depth flag gets set back to zero fElemDepth = 0; // reset prefix counters and prefix map fPrefixCounts->removeAllElements(); fPrefixes->removeAllElements(); fPrefixesStorage->flushAll(); } void SAX2XMLReaderImpl::startDocument() { // Just map to the SAX document handler if (fDocHandler) fDocHandler->setDocumentLocator(fScanner->getLocator()); if(fDocHandler) fDocHandler->startDocument(); // // If there are any installed advanced handlers, then lets call them // with this info. // for (XMLSize_t index = 0; index < fAdvDHCount; index++) fAdvDHList[index]->startDocument(); } void SAX2XMLReaderImpl:: startElement( const XMLElementDecl& elemDecl , const unsigned int elemURLId , const XMLCh* const elemPrefix , const RefVectorOf& attrList , const XMLSize_t attrCount , const bool isEmpty , const bool isRoot) { // Bump the element depth counter if not empty if (!isEmpty) fElemDepth++; if (fDocHandler) { const QName* qName=elemDecl.getElementName(); const XMLCh* baseName=qName->getLocalPart(); const XMLCh* elemQName = 0; if(elemPrefix==0 || *elemPrefix==0) elemQName=baseName; else if(XMLString::equals(elemPrefix, qName->getPrefix())) elemQName=qName->getRawName(); else { fTempQName->set(elemPrefix); fTempQName->append(chColon); fTempQName->append(baseName); elemQName=fTempQName->getRawBuffer(); } if (getDoNamespaces()) { XMLSize_t numPrefix = 0; if (!fNamespacePrefix) fTempAttrVec->removeAllElements(); for (XMLSize_t i = 0; i < attrCount; i++) { const XMLCh* nsPrefix = 0; const XMLCh* nsURI = 0; const XMLAttr* tempAttr = attrList.elementAt(i); const XMLCh* prefix = tempAttr->getPrefix(); if(prefix && *prefix) { if(XMLString::equals(prefix, XMLUni::fgXMLNSString)) { nsPrefix = tempAttr->getName(); nsURI = tempAttr->getValue(); } } else if (XMLString::equals(tempAttr->getName(), XMLUni::fgXMLNSString)) { nsPrefix = XMLUni::fgZeroLenString; nsURI = tempAttr->getValue(); } if (!fNamespacePrefix) { if (nsURI == 0) fTempAttrVec->addElement((XMLAttr*)tempAttr); } if (nsURI != 0) { if(fDocHandler) fDocHandler->startPrefixMapping(nsPrefix, nsURI); unsigned int nPrefixId=fPrefixesStorage->addOrFind(nsPrefix); fPrefixes->push(nPrefixId) ; numPrefix++; } } fPrefixCounts->push(numPrefix) ; if (!fNamespacePrefix) fAttrList.setVector(fTempAttrVec, fTempAttrVec->size(), fScanner); else fAttrList.setVector(&attrList, attrCount, fScanner); // call startElement() with namespace declarations if(fDocHandler) { fDocHandler->startElement ( fScanner->getURIText(elemURLId) , baseName , elemQName , fAttrList ); } } else // no namespace { fAttrList.setVector(&attrList, attrCount, fScanner); if(fDocHandler) { fDocHandler->startElement(XMLUni::fgZeroLenString, XMLUni::fgZeroLenString, qName->getRawName(), fAttrList); } } // If its empty, send the end tag event now if (isEmpty) { // call endPrefixMapping appropriately. if (getDoNamespaces()) { if(fDocHandler) { fDocHandler->endElement ( fScanner->getURIText(elemURLId) , baseName , elemQName ); } XMLSize_t numPrefix = fPrefixCounts->pop(); for (XMLSize_t i = 0; i < numPrefix; ++i) { unsigned int nPrefixId = fPrefixes->pop() ; if(fDocHandler) fDocHandler->endPrefixMapping( fPrefixesStorage->getValueForId(nPrefixId) ); } } else { if(fDocHandler) { fDocHandler->endElement(XMLUni::fgZeroLenString, XMLUni::fgZeroLenString, qName->getRawName()); } } } } // // If there are any installed advanced handlers, then lets call them // with this info. // for (XMLSize_t index = 0; index < fAdvDHCount; index++) { fAdvDHList[index]->startElement ( elemDecl , elemURLId , elemPrefix , attrList , attrCount , isEmpty , isRoot ); } } void SAX2XMLReaderImpl::endElement( const XMLElementDecl& elemDecl , const unsigned int uriId , const bool isRoot , const XMLCh* const elemPrefix) { // Just map to the SAX document handler if (fDocHandler) { const QName* qName=elemDecl.getElementName(); const XMLCh* baseName=qName->getLocalPart(); const XMLCh* elemQName = 0; if(elemPrefix==0 || *elemPrefix==0) elemQName=baseName; else if(XMLString::equals(elemPrefix, qName->getPrefix())) elemQName=qName->getRawName(); else { fTempQName->set(elemPrefix); fTempQName->append(chColon); fTempQName->append(baseName); elemQName=fTempQName->getRawBuffer(); } if (getDoNamespaces()) { if(fDocHandler) { fDocHandler->endElement ( fScanner->getURIText(uriId) , baseName , elemQName ); } // get the prefixes back so that we can call endPrefixMapping() XMLSize_t numPrefix = fPrefixCounts->pop(); for (XMLSize_t i = 0; i < numPrefix; i++) { unsigned int nPrefixId = fPrefixes->pop() ; if(fDocHandler) fDocHandler->endPrefixMapping( fPrefixesStorage->getValueForId(nPrefixId) ); } } else { if(fDocHandler) { fDocHandler->endElement(XMLUni::fgZeroLenString, XMLUni::fgZeroLenString, qName->getRawName()); } } } // // If there are any installed advanced handlers, then lets call them // with this info. // for (XMLSize_t index = 0; index < fAdvDHCount; index++) fAdvDHList[index]->endElement(elemDecl, uriId, isRoot, elemPrefix); // // Dump the element depth down again. Don't let it underflow in case // of malformed XML. // if (fElemDepth) fElemDepth--; } void SAX2XMLReaderImpl::startEntityReference(const XMLEntityDecl& entityDecl) { // Call the installed LexicalHandler. if (fLexicalHandler) fLexicalHandler->startEntity(entityDecl.getName()); // // SAX has no way to report this. But, If there are any installed // advanced handlers, then lets call them with this info. // for (XMLSize_t index = 0; index < fAdvDHCount; index++) fAdvDHList[index]->startEntityReference(entityDecl); } // --------------------------------------------------------------------------- // SAX2XMLReaderImpl: Overrides of the DocTypeHandler interface // --------------------------------------------------------------------------- void SAX2XMLReaderImpl::attDef( const DTDElementDecl& elemDecl , const DTDAttDef& attDef , const bool ignoring) { if (fDeclHandler && !ignoring) { XMLAttDef::AttTypes attType = attDef.getType(); XMLAttDef::DefAttTypes defAttType = attDef.getDefaultType(); const XMLCh* defAttTypeStr = XMLUni::fgNullString; bool isEnumeration = (attType == XMLAttDef::Notation || attType == XMLAttDef::Enumeration); XMLBuffer enumBuf(128, fMemoryManager); if (defAttType == XMLAttDef::Fixed || defAttType == XMLAttDef::Implied || defAttType == XMLAttDef::Required) { defAttTypeStr = attDef.getDefAttTypeString(defAttType, fMemoryManager); } if (isEnumeration) { const XMLCh* enumString = attDef.getEnumeration(); XMLSize_t enumLen = XMLString::stringLen(enumString); if (attType == XMLAttDef::Notation) { enumBuf.set(XMLUni::fgNotationString); enumBuf.append(chSpace); } enumBuf.append(chOpenParen); for (XMLSize_t i=0; iattributeDecl(elemDecl.getFullName(), attDef.getFullName(), (isEnumeration) ? enumBuf.getRawBuffer() : attDef.getAttTypeString(attDef.getType(), fMemoryManager), defAttTypeStr, attDef.getValue()); } } void SAX2XMLReaderImpl::doctypeComment(const XMLCh* const commentText) { if (fLexicalHandler) { // SAX2 reports comment text like characters -- as an // array with a length. fLexicalHandler->comment(commentText, XMLString::stringLen(commentText)); } } void SAX2XMLReaderImpl::doctypeDecl(const DTDElementDecl& elemDecl , const XMLCh* const publicId , const XMLCh* const systemId , const bool hasIntSubset , const bool hasExtSubset) { // Call the installed LexicalHandler. if (fLexicalHandler && (hasIntSubset || hasExtSubset)) fLexicalHandler->startDTD(elemDecl.getFullName(), publicId, systemId); fHasExternalSubset = hasExtSubset; // Unused by SAX DTDHandler interface at this time } void SAX2XMLReaderImpl::doctypePI( const XMLCh* const , const XMLCh* const) { // Unused by SAX DTDHandler interface at this time } void SAX2XMLReaderImpl::doctypeWhitespace( const XMLCh* const , const XMLSize_t) { // Unused by SAX DTDHandler interface at this time } void SAX2XMLReaderImpl::elementDecl(const DTDElementDecl& elemDecl, const bool isIgnored) { if (fDeclHandler && !isIgnored) fDeclHandler->elementDecl(elemDecl.getFullName(), elemDecl.getFormattedContentModel()); } void SAX2XMLReaderImpl::endAttList(const DTDElementDecl&) { // Unused by SAX DTDHandler interface at this time } void SAX2XMLReaderImpl::endIntSubset() { // Call the installed LexicalHandler. if (!fHasExternalSubset && fLexicalHandler) fLexicalHandler->endDTD(); // Unused by SAX DTDHandler interface at this time } void SAX2XMLReaderImpl::endExtSubset() { // Call the installed LexicalHandler. if (fLexicalHandler) fLexicalHandler->endEntity(gDTDEntityStr); if (fLexicalHandler) fLexicalHandler->endDTD(); // Unused by SAX DTDHandler interface at this time } void SAX2XMLReaderImpl::entityDecl( const DTDEntityDecl& entityDecl , const bool isPEDecl , const bool isIgnored) { // // If we have a DTD handler, and this entity is not ignored, and // its an unparsed entity, then send this one, else if we have a Decl // handler then send this one. // if (!isIgnored) { if (entityDecl.isUnparsed()) { if (fDTDHandler) { fDTDHandler->unparsedEntityDecl ( entityDecl.getName() , entityDecl.getPublicId() , entityDecl.getSystemId() , entityDecl.getNotationName() ); } } else if (fDeclHandler) { const XMLCh* entityName = entityDecl.getName(); ArrayJanitor tmpNameJan(0); if (isPEDecl) { XMLSize_t nameLen = XMLString::stringLen(entityName); XMLCh* tmpName = (XMLCh*) fMemoryManager->allocate ( (nameLen + 2) * sizeof(XMLCh) );//new XMLCh[nameLen + 2]; tmpNameJan.reset(tmpName, fMemoryManager); tmpName[0] = chPercent; XMLString::copyString(tmpName + 1, entityName); entityName = tmpName; } if (entityDecl.isExternal()) { fDeclHandler->externalEntityDecl ( entityName , entityDecl.getPublicId() , entityDecl.getSystemId() ); } else { fDeclHandler->internalEntityDecl ( entityName , entityDecl.getValue() ); } } } } void SAX2XMLReaderImpl::resetDocType() { fHasExternalSubset = false; // Just map to the DTD handler if (fDTDHandler) fDTDHandler->resetDocType(); } void SAX2XMLReaderImpl::notationDecl( const XMLNotationDecl& notDecl , const bool isIgnored) { if (fDTDHandler && !isIgnored) { fDTDHandler->notationDecl ( notDecl.getName() , notDecl.getPublicId() , notDecl.getSystemId() ); } } void SAX2XMLReaderImpl::startAttList(const DTDElementDecl&) { // Unused by SAX DTDHandler interface at this time } void SAX2XMLReaderImpl::startIntSubset() { // Unused by SAX DTDHandler interface at this time } void SAX2XMLReaderImpl::startExtSubset() { if (fLexicalHandler) fLexicalHandler->startEntity(gDTDEntityStr); } void SAX2XMLReaderImpl::TextDecl( const XMLCh* const , const XMLCh* const) { // Unused by SAX DTDHandler interface at this time } // --------------------------------------------------------------------------- // SAX2XMLReaderImpl: Handlers for the XMLEntityHandler interface // --------------------------------------------------------------------------- void SAX2XMLReaderImpl::endInputSource(const InputSource&) { } bool SAX2XMLReaderImpl::expandSystemId(const XMLCh* const, XMLBuffer&) { return false; } void SAX2XMLReaderImpl::resetEntities() { // Nothing to do for this one } InputSource* SAX2XMLReaderImpl::resolveEntity(XMLResourceIdentifier* resourceIdentifier) { // // Just map it to the SAX entity resolver. If there is not one installed, // return a null pointer to cause the default resolution. // if (fEntityResolver) return fEntityResolver->resolveEntity(resourceIdentifier->getPublicId(), resourceIdentifier->getSystemId()); if (fXMLEntityResolver) return fXMLEntityResolver->resolveEntity(resourceIdentifier); return 0; } void SAX2XMLReaderImpl::startInputSource(const InputSource&) { // Nothing to do for this one } // --------------------------------------------------------------------------- // SAX2XMLReaderImpl: Overrides of the XMLErrorReporter interface // --------------------------------------------------------------------------- void SAX2XMLReaderImpl::resetErrors() { if (fErrorHandler) fErrorHandler->resetErrors(); } void SAX2XMLReaderImpl::error( const unsigned int , const XMLCh* const , const XMLErrorReporter::ErrTypes errType , const XMLCh* const errorText , const XMLCh* const systemId , const XMLCh* const publicId , const XMLFileLoc lineNum , const XMLFileLoc colNum) { SAXParseException toThrow = SAXParseException ( errorText , publicId , systemId , lineNum , colNum , fMemoryManager ); if (!fErrorHandler) { if (errType == XMLErrorReporter::ErrType_Fatal) throw toThrow; else return; } if (errType == XMLErrorReporter::ErrType_Warning) fErrorHandler->warning(toThrow); else if (errType == XMLErrorReporter::ErrType_Fatal) fErrorHandler->fatalError(toThrow); else fErrorHandler->error(toThrow); } // --------------------------------------------------------------------------- // SAX2XMLReaderImpl: Features and Properties // --------------------------------------------------------------------------- void SAX2XMLReaderImpl::setFeature(const XMLCh* const name, const bool value) { if (fParseInProgress) throw SAXNotSupportedException("Feature modification is not supported during parse.", fMemoryManager); if (XMLString::compareIStringASCII(name, XMLUni::fgSAX2CoreNameSpaces) == 0) { setDoNamespaces(value); } else if (XMLString::compareIStringASCII(name, XMLUni::fgSAX2CoreValidation) == 0) { fValidation = value; if (fValidation) if (fAutoValidation) setValidationScheme(Val_Auto); else setValidationScheme(Val_Always); else setValidationScheme(Val_Never); } else if (XMLString::compareIStringASCII(name, XMLUni::fgSAX2CoreNameSpacePrefixes) == 0) { fNamespacePrefix = value; } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesDynamic) == 0) { fAutoValidation = value; // for auto validation, the sax2 core validation feature must also be enabled. if (fValidation) if (fAutoValidation) setValidationScheme(Val_Auto); else setValidationScheme(Val_Always); else setValidationScheme(Val_Never); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSchema) == 0) { setDoSchema(value); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSchemaFullChecking) == 0) { fScanner->setValidationSchemaFullChecking(value); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesIdentityConstraintChecking) == 0) { fScanner->setIdentityConstraintChecking(value); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesLoadExternalDTD) == 0) { fScanner->setLoadExternalDTD(value); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesLoadSchema) == 0) { fScanner->setLoadSchema(value); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesContinueAfterFatalError) == 0) { fScanner->setExitOnFirstFatal(!value); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesValidationErrorAsFatal) == 0) { fScanner->setValidationConstraintFatal(value); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesCacheGrammarFromParse) == 0) { fScanner->cacheGrammarFromParse(value); if (value) fScanner->useCachedGrammarInParse(value); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesUseCachedGrammarInParse) == 0) { if (value || !fScanner->isCachingGrammarFromParse()) fScanner->useCachedGrammarInParse(value); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesCalculateSrcOfs) == 0) { fScanner->setCalculateSrcOfs(value); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesStandardUriConformant) == 0) { fScanner->setStandardUriConformant(value); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesGenerateSyntheticAnnotations) == 0) { fScanner->setGenerateSyntheticAnnotations(value); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesValidateAnnotations) == 0) { fScanner->setValidateAnnotations(value); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesIgnoreCachedDTD) == 0) { fScanner->setIgnoredCachedDTD(value); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesIgnoreAnnotations) == 0) { fScanner->setIgnoreAnnotations(value); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesDisableDefaultEntityResolution) == 0) { fScanner->setDisableDefaultEntityResolution(value); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSkipDTDValidation) == 0) { fScanner->setSkipDTDValidation(value); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesHandleMultipleImports) == 0) { fScanner->setHandleMultipleImports(value); } else throw SAXNotRecognizedException("Unknown Feature", fMemoryManager); } bool SAX2XMLReaderImpl::getFeature(const XMLCh* const name) const { if (XMLString::compareIStringASCII(name, XMLUni::fgSAX2CoreNameSpaces) == 0) return getDoNamespaces(); else if (XMLString::compareIStringASCII(name, XMLUni::fgSAX2CoreValidation) == 0) return fValidation; else if (XMLString::compareIStringASCII(name, XMLUni::fgSAX2CoreNameSpacePrefixes) == 0) return fNamespacePrefix; else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesDynamic) == 0) return fAutoValidation; else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSchema) == 0) return getDoSchema(); else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSchemaFullChecking) == 0) return fScanner->getValidationSchemaFullChecking(); else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesIdentityConstraintChecking) == 0) return fScanner->getIdentityConstraintChecking(); else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesLoadExternalDTD) == 0) return fScanner->getLoadExternalDTD(); else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesLoadSchema) == 0) return fScanner->getLoadSchema(); else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesContinueAfterFatalError) == 0) return !fScanner->getExitOnFirstFatal(); else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesValidationErrorAsFatal) == 0) return fScanner->getValidationConstraintFatal(); else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesCacheGrammarFromParse) == 0) return fScanner->isCachingGrammarFromParse(); else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesUseCachedGrammarInParse) == 0) return fScanner->isUsingCachedGrammarInParse(); else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesCalculateSrcOfs) == 0) return fScanner->getCalculateSrcOfs(); else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesStandardUriConformant) == 0) return fScanner->getStandardUriConformant(); else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesGenerateSyntheticAnnotations) == 0) return fScanner->getGenerateSyntheticAnnotations(); else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesValidateAnnotations) == 0) return fScanner->getValidateAnnotations(); else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesIgnoreCachedDTD) == 0) return fScanner->getIgnoreCachedDTD(); else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesIgnoreAnnotations) == 0) return fScanner->getIgnoreAnnotations(); else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesDisableDefaultEntityResolution) == 0) return fScanner->getDisableDefaultEntityResolution(); else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSkipDTDValidation) == 0) return fScanner->getSkipDTDValidation(); else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesHandleMultipleImports) == 0) return fScanner->getHandleMultipleImports(); else throw SAXNotRecognizedException("Unknown Feature", fMemoryManager); return false; } void SAX2XMLReaderImpl::setProperty(const XMLCh* const name, void* value) { if (fParseInProgress) throw SAXNotSupportedException("Property modification is not supported during parse.", fMemoryManager); if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSchemaExternalSchemaLocation) == 0) { fScanner->setExternalSchemaLocation((XMLCh*)value); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSchemaExternalNoNameSpaceSchemaLocation) == 0) { fScanner->setExternalNoNamespaceSchemaLocation((XMLCh*)value); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSecurityManager) == 0) { fScanner->setSecurityManager((SecurityManager*)value); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesLowWaterMark) == 0) { fScanner->setLowWaterMark(*(const XMLSize_t*)value); } else if (XMLString::equals(name, XMLUni::fgXercesScannerName)) { XMLScanner* tempScanner = XMLScannerResolver::resolveScanner ( (const XMLCh*) value , fValidator , fGrammarResolver , fMemoryManager ); if (tempScanner) { tempScanner->setParseSettings(fScanner); tempScanner->setURIStringPool(fURIStringPool); delete fScanner; fScanner = tempScanner; } } else throw SAXNotRecognizedException("Unknown Property", fMemoryManager); } void* SAX2XMLReaderImpl::getProperty(const XMLCh* const name) const { if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSchemaExternalSchemaLocation) == 0) return (void*)fScanner->getExternalSchemaLocation(); else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSchemaExternalNoNameSpaceSchemaLocation) == 0) return (void*)fScanner->getExternalNoNamespaceSchemaLocation(); else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSecurityManager) == 0) return (void*)fScanner->getSecurityManager(); else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesLowWaterMark) == 0) return (void*)&fScanner->getLowWaterMark(); else if (XMLString::equals(name, XMLUni::fgXercesScannerName)) return (void*)fScanner->getName(); else throw SAXNotRecognizedException("Unknown Property", fMemoryManager); return 0; } // --------------------------------------------------------------------------- // SAX2XMLReaderImpl: Private getters and setters for conveniences // --------------------------------------------------------------------------- void SAX2XMLReaderImpl::setValidationScheme(const ValSchemes newScheme) { if (newScheme == Val_Never) fScanner->setValidationScheme(XMLScanner::Val_Never); else if (newScheme == Val_Always) fScanner->setValidationScheme(XMLScanner::Val_Always); else fScanner->setValidationScheme(XMLScanner::Val_Auto); } void SAX2XMLReaderImpl::setDoNamespaces(const bool newState) { fScanner->setDoNamespaces(newState); } bool SAX2XMLReaderImpl::getDoNamespaces() const { return fScanner->getDoNamespaces(); } void SAX2XMLReaderImpl::setDoSchema(const bool newState) { fScanner->setDoSchema(newState); } bool SAX2XMLReaderImpl::getDoSchema() const { return fScanner->getDoSchema(); } // --------------------------------------------------------------------------- // SAX2XMLReaderImpl: Grammar preparsing // --------------------------------------------------------------------------- Grammar* SAX2XMLReaderImpl::loadGrammar(const char* const systemId, const Grammar::GrammarType grammarType, const bool toCache) { // Avoid multiple entrance if (fParseInProgress) ThrowXMLwithMemMgr(IOException, XMLExcepts::Gen_ParseInProgress, fMemoryManager); ResetInProgressType resetInProgress(this, &SAX2XMLReaderImpl::resetInProgress); Grammar* grammar = 0; try { fParseInProgress = true; grammar = fScanner->loadGrammar(systemId, grammarType, toCache); } catch(const OutOfMemoryException&) { resetInProgress.release(); throw; } return grammar; } Grammar* SAX2XMLReaderImpl::loadGrammar(const XMLCh* const systemId, const Grammar::GrammarType grammarType, const bool toCache) { // Avoid multiple entrance if (fParseInProgress) ThrowXMLwithMemMgr(IOException, XMLExcepts::Gen_ParseInProgress, fMemoryManager); ResetInProgressType resetInProgress(this, &SAX2XMLReaderImpl::resetInProgress); Grammar* grammar = 0; try { fParseInProgress = true; grammar = fScanner->loadGrammar(systemId, grammarType, toCache); } catch(const OutOfMemoryException&) { resetInProgress.release(); throw; } return grammar; } Grammar* SAX2XMLReaderImpl::loadGrammar(const InputSource& source, const Grammar::GrammarType grammarType, const bool toCache) { // Avoid multiple entrance if (fParseInProgress) ThrowXMLwithMemMgr(IOException, XMLExcepts::Gen_ParseInProgress, fMemoryManager); ResetInProgressType resetInProgress(this, &SAX2XMLReaderImpl::resetInProgress); Grammar* grammar = 0; try { fParseInProgress = true; grammar = fScanner->loadGrammar(source, grammarType, toCache); } catch(const OutOfMemoryException&) { resetInProgress.release(); throw; } return grammar; } void SAX2XMLReaderImpl::resetInProgress() { fParseInProgress = false; } void SAX2XMLReaderImpl::resetCachedGrammarPool() { fGrammarResolver->resetCachedGrammar(); fScanner->resetCachedGrammar(); } void SAX2XMLReaderImpl::setInputBufferSize(const XMLSize_t bufferSize) { fScanner->setInputBufferSize(bufferSize); } Grammar* SAX2XMLReaderImpl::getGrammar(const XMLCh* const nameSpaceKey) { return fGrammarResolver->getGrammar(nameSpaceKey); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/parsers/AbstractDOMParser.cpp0000644000175000017500000017141311362623763022151 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * This file contains code to build the DOM tree. It registers a document * handler with the scanner. In these handler methods, appropriate DOM nodes * are created and added to the DOM tree. * * $Id: AbstractDOMParser.cpp 935358 2010-04-18 15:40:35Z borisk $ * */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // AbstractDOMParser: Constructors and Destructor // --------------------------------------------------------------------------- typedef JanitorMemFunCall CleanupType; typedef JanitorMemFunCall ResetInProgressType; AbstractDOMParser::AbstractDOMParser( XMLValidator* const valToAdopt , MemoryManager* const manager , XMLGrammarPool* const gramPool) : fCreateEntityReferenceNodes(true) , fIncludeIgnorableWhitespace(true) , fWithinElement(false) , fParseInProgress(false) , fCreateCommentNodes(true) , fDocumentAdoptedByUser(false) , fCreateSchemaInfo(false) , fDoXInclude(false) , fScanner(0) , fImplementationFeatures(0) , fCurrentParent(0) , fCurrentNode(0) , fCurrentEntity(0) , fDocument(0) , fDocumentType(0) , fDocumentVector(0) , fGrammarResolver(0) , fURIStringPool(0) , fValidator(valToAdopt) , fMemoryManager(manager) , fGrammarPool(gramPool) , fBufMgr(manager) , fInternalSubset(fBufMgr.bidOnBuffer()) , fPSVIHandler(0) { CleanupType cleanup(this, &AbstractDOMParser::cleanUp); try { initialize(); } catch(const OutOfMemoryException&) { // Don't cleanup when out of memory, since executing the // code can cause problems. cleanup.release(); throw; } cleanup.release(); } AbstractDOMParser::~AbstractDOMParser() { cleanUp(); } // --------------------------------------------------------------------------- // AbstractDOMParser: Initialize/CleanUp methods // --------------------------------------------------------------------------- void AbstractDOMParser::initialize() { // Create grammar resolver and string pool to pass to the scanner fGrammarResolver = new (fMemoryManager) GrammarResolver(fGrammarPool, fMemoryManager); fURIStringPool = fGrammarResolver->getStringPool(); // Create a scanner and tell it what validator to use. Then set us // as the document event handler so we can fill the DOM document. fScanner = XMLScannerResolver::getDefaultScanner(fValidator, fGrammarResolver, fMemoryManager); fScanner->setDocHandler(this); fScanner->setDocTypeHandler(this); fScanner->setURIStringPool(fURIStringPool); this->reset(); } void AbstractDOMParser::cleanUp() { if (fDocumentVector) delete fDocumentVector; if (!fDocumentAdoptedByUser && fDocument) fDocument->release(); delete fScanner; delete fGrammarResolver; // grammar pool *always* owns this //delete fURIStringPool; fMemoryManager->deallocate(fImplementationFeatures); if (fValidator) delete fValidator; } // --------------------------------------------------------------------------- // AbstractDOMParser: Utilities // --------------------------------------------------------------------------- void AbstractDOMParser::reset() { // if fDocument exists already, store the old pointer in the vector for deletion later if (fDocument && !fDocumentAdoptedByUser) { if (!fDocumentVector) { // allocate the vector if not exists yet fDocumentVector = new (fMemoryManager) RefVectorOf(10, true, fMemoryManager) ; } fDocumentVector->addElement(fDocument); } fDocument = 0; resetDocType(); fCurrentParent = 0; fCurrentNode = 0; fCurrentEntity = 0; fWithinElement = false; fDocumentAdoptedByUser = false; fInternalSubset.reset(); } void AbstractDOMParser::resetInProgress() { fParseInProgress = false; } void AbstractDOMParser::resetPool() { // We cannot enter here while a regular parse is in progress. if (fParseInProgress) ThrowXMLwithMemMgr(IOException, XMLExcepts::Gen_ParseInProgress, fMemoryManager); if (fDocumentVector) fDocumentVector->removeAllElements(); if (!fDocumentAdoptedByUser && fDocument) fDocument->release(); fDocument = 0; } bool AbstractDOMParser::isDocumentAdopted() const { return fDocumentAdoptedByUser; } DOMDocument* AbstractDOMParser::adoptDocument() { fDocumentAdoptedByUser = true; return fDocument; } // --------------------------------------------------------------------------- // AbstractDOMParser: Getter methods // --------------------------------------------------------------------------- DOMDocument* AbstractDOMParser::getDocument() { return fDocument; } const XMLValidator& AbstractDOMParser::getValidator() const { return *fScanner->getValidator(); } bool AbstractDOMParser::getDoNamespaces() const { return fScanner->getDoNamespaces(); } bool AbstractDOMParser::getGenerateSyntheticAnnotations() const { return fScanner->getGenerateSyntheticAnnotations(); } bool AbstractDOMParser::getValidateAnnotations() const { return fScanner->getValidateAnnotations(); } bool AbstractDOMParser::getExitOnFirstFatalError() const { return fScanner->getExitOnFirstFatal(); } bool AbstractDOMParser::getValidationConstraintFatal() const { return fScanner->getValidationConstraintFatal(); } AbstractDOMParser::ValSchemes AbstractDOMParser::getValidationScheme() const { const XMLScanner::ValSchemes scheme = fScanner->getValidationScheme(); if (scheme == XMLScanner::Val_Always) return Val_Always; else if (scheme == XMLScanner::Val_Never) return Val_Never; return Val_Auto; } bool AbstractDOMParser::getDoSchema() const { return fScanner->getDoSchema(); } bool AbstractDOMParser::getValidationSchemaFullChecking() const { return fScanner->getValidationSchemaFullChecking(); } bool AbstractDOMParser::getIdentityConstraintChecking() const { return fScanner->getIdentityConstraintChecking(); } XMLSize_t AbstractDOMParser::getErrorCount() const { return fScanner->getErrorCount(); } XMLCh* AbstractDOMParser::getExternalSchemaLocation() const { return fScanner->getExternalSchemaLocation(); } XMLCh* AbstractDOMParser::getExternalNoNamespaceSchemaLocation() const { return fScanner->getExternalNoNamespaceSchemaLocation(); } SecurityManager* AbstractDOMParser::getSecurityManager() const { return fScanner->getSecurityManager(); } // Return it as a reference so that we cn return as void* from getParameter. // const XMLSize_t& AbstractDOMParser::getLowWaterMark() const { return fScanner->getLowWaterMark(); } bool AbstractDOMParser::getLoadExternalDTD() const { return fScanner->getLoadExternalDTD(); } bool AbstractDOMParser::getLoadSchema() const { return fScanner->getLoadSchema(); } bool AbstractDOMParser::getCalculateSrcOfs() const { return fScanner->getCalculateSrcOfs(); } bool AbstractDOMParser::getStandardUriConformant() const { return fScanner->getStandardUriConformant(); } bool AbstractDOMParser::getIgnoreAnnotations() const { return fScanner->getIgnoreAnnotations(); } bool AbstractDOMParser::getDisableDefaultEntityResolution() const { return fScanner->getDisableDefaultEntityResolution(); } bool AbstractDOMParser::getSkipDTDValidation() const { return fScanner->getSkipDTDValidation(); } bool AbstractDOMParser::getHandleMultipleImports() const { return fScanner->getHandleMultipleImports(); } // --------------------------------------------------------------------------- // AbstractDOMParser: Setter methods // --------------------------------------------------------------------------- void AbstractDOMParser::setPSVIHandler(PSVIHandler* const handler) { fPSVIHandler = handler; if (fPSVIHandler) { fScanner->setPSVIHandler(this); } else if(!fCreateSchemaInfo) { fScanner->setPSVIHandler(0); } } void AbstractDOMParser::setDoNamespaces(const bool newState) { fScanner->setDoNamespaces(newState); } void AbstractDOMParser::setGenerateSyntheticAnnotations(const bool newState) { fScanner->setGenerateSyntheticAnnotations(newState); } void AbstractDOMParser::setValidateAnnotations(const bool newState) { fScanner->setValidateAnnotations(newState); } void AbstractDOMParser::setExitOnFirstFatalError(const bool newState) { fScanner->setExitOnFirstFatal(newState); } void AbstractDOMParser::setValidationConstraintFatal(const bool newState) { fScanner->setValidationConstraintFatal(newState); } void AbstractDOMParser::setValidationScheme(const ValSchemes newScheme) { if (newScheme == Val_Never) fScanner->setValidationScheme(XMLScanner::Val_Never); else if (newScheme == Val_Always) fScanner->setValidationScheme(XMLScanner::Val_Always); else fScanner->setValidationScheme(XMLScanner::Val_Auto); } void AbstractDOMParser::setDoSchema(const bool newState) { fScanner->setDoSchema(newState); } void AbstractDOMParser::setValidationSchemaFullChecking(const bool schemaFullChecking) { fScanner->setValidationSchemaFullChecking(schemaFullChecking); } void AbstractDOMParser::setIdentityConstraintChecking(const bool identityConstraintChecking) { fScanner->setIdentityConstraintChecking(identityConstraintChecking); } void AbstractDOMParser::setExternalSchemaLocation(const XMLCh* const schemaLocation) { fScanner->setExternalSchemaLocation(schemaLocation); } void AbstractDOMParser::setExternalNoNamespaceSchemaLocation(const XMLCh* const noNamespaceSchemaLocation) { fScanner->setExternalNoNamespaceSchemaLocation(noNamespaceSchemaLocation); } void AbstractDOMParser::setExternalSchemaLocation(const char* const schemaLocation) { fScanner->setExternalSchemaLocation(schemaLocation); } void AbstractDOMParser::setExternalNoNamespaceSchemaLocation(const char* const noNamespaceSchemaLocation) { fScanner->setExternalNoNamespaceSchemaLocation(noNamespaceSchemaLocation); } void AbstractDOMParser::setSecurityManager(SecurityManager* const securityManager) { // since this could impact various components, don't permit it to change // during a parse if (fParseInProgress) ThrowXMLwithMemMgr(IOException, XMLExcepts::Gen_ParseInProgress, fMemoryManager); fScanner->setSecurityManager(securityManager); } void AbstractDOMParser::setLowWaterMark(XMLSize_t lwm) { fScanner->setLowWaterMark(lwm); } void AbstractDOMParser::setLoadExternalDTD(const bool newState) { fScanner->setLoadExternalDTD(newState); } void AbstractDOMParser::setLoadSchema(const bool newState) { fScanner->setLoadSchema(newState); } void AbstractDOMParser::setCalculateSrcOfs(const bool newState) { fScanner->setCalculateSrcOfs(newState); } void AbstractDOMParser::setStandardUriConformant(const bool newState) { fScanner->setStandardUriConformant(newState); } void AbstractDOMParser::useScanner(const XMLCh* const scannerName) { XMLScanner* tempScanner = XMLScannerResolver::resolveScanner ( scannerName , fValidator , fGrammarResolver , fMemoryManager ); if (tempScanner) { tempScanner->setParseSettings(fScanner); tempScanner->setURIStringPool(fURIStringPool); delete fScanner; fScanner = tempScanner; } } void AbstractDOMParser::setCreateSchemaInfo(const bool create) { fCreateSchemaInfo = create; if(fCreateSchemaInfo) fScanner->setPSVIHandler(this); else if(!fPSVIHandler) fScanner->setPSVIHandler(0); } void AbstractDOMParser::setIgnoreAnnotations(const bool newValue) { fScanner->setIgnoreAnnotations(newValue); } void AbstractDOMParser::setDisableDefaultEntityResolution(const bool newValue) { fScanner->setDisableDefaultEntityResolution(newValue); } void AbstractDOMParser::setSkipDTDValidation(const bool newValue) { fScanner->setSkipDTDValidation(newValue); } void AbstractDOMParser::setHandleMultipleImports(const bool newValue) { fScanner->setHandleMultipleImports(newValue); } void AbstractDOMParser::setDocument(DOMDocument* toSet) { fDocument = (DOMDocumentImpl *)toSet; } // --------------------------------------------------------------------------- // AbstractDOMParser: Parsing methods // --------------------------------------------------------------------------- void AbstractDOMParser::parse(const InputSource& source) { // Avoid multiple entrance if (fParseInProgress) ThrowXMLwithMemMgr(IOException, XMLExcepts::Gen_ParseInProgress, fMemoryManager); ResetInProgressType resetInProgress(this, &AbstractDOMParser::resetInProgress); try { fParseInProgress = true; fScanner->scanDocument(source); if (fDoXInclude && getErrorCount()==0){ DOMDocument *doc = getDocument(); // after XInclude, the document must be normalized if(doc) doc->normalizeDocument(); } } catch(const OutOfMemoryException&) { resetInProgress.release(); throw; } } void AbstractDOMParser::parse(const XMLCh* const systemId) { // Avoid multiple entrance if (fParseInProgress) ThrowXMLwithMemMgr(IOException, XMLExcepts::Gen_ParseInProgress, fMemoryManager); ResetInProgressType resetInProgress(this, &AbstractDOMParser::resetInProgress); try { fParseInProgress = true; fScanner->scanDocument(systemId); if (fDoXInclude && getErrorCount()==0){ DOMDocument *doc = getDocument(); // after XInclude, the document must be normalized if(doc) doc->normalizeDocument(); } } catch(const OutOfMemoryException&) { resetInProgress.release(); throw; } } void AbstractDOMParser::parse(const char* const systemId) { // Avoid multiple entrance if (fParseInProgress) ThrowXMLwithMemMgr(IOException, XMLExcepts::Gen_ParseInProgress, fMemoryManager); ResetInProgressType resetInProgress(this, &AbstractDOMParser::resetInProgress); try { fParseInProgress = true; fScanner->scanDocument(systemId); if (fDoXInclude && getErrorCount()==0){ DOMDocument *doc = getDocument(); // after XInclude, the document must be normalized if(doc) doc->normalizeDocument(); } } catch(const OutOfMemoryException&) { resetInProgress.release(); throw; } } // --------------------------------------------------------------------------- // AbstractDOMParser: Progressive parse methods // --------------------------------------------------------------------------- bool AbstractDOMParser::parseFirst( const XMLCh* const systemId , XMLPScanToken& toFill) { // // Avoid multiple entrance. We cannot enter here while a regular parse // is in progress. // if (fParseInProgress) ThrowXMLwithMemMgr(IOException, XMLExcepts::Gen_ParseInProgress, fMemoryManager); return fScanner->scanFirst(systemId, toFill); } bool AbstractDOMParser::parseFirst( const char* const systemId , XMLPScanToken& toFill) { // // Avoid multiple entrance. We cannot enter here while a regular parse // is in progress. // if (fParseInProgress) ThrowXMLwithMemMgr(IOException, XMLExcepts::Gen_ParseInProgress, fMemoryManager); return fScanner->scanFirst(systemId, toFill); } bool AbstractDOMParser::parseFirst( const InputSource& source , XMLPScanToken& toFill) { // // Avoid multiple entrance. We cannot enter here while a regular parse // is in progress. // if (fParseInProgress) ThrowXMLwithMemMgr(IOException, XMLExcepts::Gen_ParseInProgress, fMemoryManager); return fScanner->scanFirst(source, toFill); } bool AbstractDOMParser::parseNext(XMLPScanToken& token) { return fScanner->scanNext(token); } void AbstractDOMParser::parseReset(XMLPScanToken& token) { // Reset the scanner, and then reset the parser fScanner->scanReset(token); reset(); } // --------------------------------------------------------------------------- // AbstractDOMParser: Implementation of PSVIHandler interface // --------------------------------------------------------------------------- void AbstractDOMParser::handleElementPSVI(const XMLCh* const localName , const XMLCh* const uri , PSVIElement * elementInfo) { // associate the info now; if the user wants, she can override what we did if(fCreateSchemaInfo) { DOMTypeInfoImpl* typeInfo=new (getDocument()) DOMTypeInfoImpl(); typeInfo->setNumericProperty(DOMPSVITypeInfo::PSVI_Validity, elementInfo->getValidity()); typeInfo->setNumericProperty(DOMPSVITypeInfo::PSVI_Validation_Attempted, elementInfo->getValidationAttempted()); if(elementInfo->getTypeDefinition()) { typeInfo->setNumericProperty(DOMPSVITypeInfo::PSVI_Type_Definition_Type, elementInfo->getTypeDefinition()->getTypeCategory()); typeInfo->setNumericProperty(DOMPSVITypeInfo::PSVI_Type_Definition_Anonymous, elementInfo->getTypeDefinition()->getAnonymous()); typeInfo->setStringProperty(DOMPSVITypeInfo::PSVI_Type_Definition_Namespace, fDocument->getPooledString(elementInfo->getTypeDefinition()->getNamespace())); typeInfo->setStringProperty(DOMPSVITypeInfo::PSVI_Type_Definition_Name, fDocument->getPooledString(elementInfo->getTypeDefinition()->getName())); } else if(elementInfo->getValidity()==PSVIItem::VALIDITY_VALID) { // if we are valid but we don't have a type validator, we are xs:anyType typeInfo->setNumericProperty(DOMPSVITypeInfo::PSVI_Type_Definition_Type, XSTypeDefinition::COMPLEX_TYPE); typeInfo->setNumericProperty(DOMPSVITypeInfo::PSVI_Type_Definition_Anonymous, false); typeInfo->setStringProperty(DOMPSVITypeInfo::PSVI_Type_Definition_Namespace, SchemaSymbols::fgURI_SCHEMAFORSCHEMA); typeInfo->setStringProperty(DOMPSVITypeInfo::PSVI_Type_Definition_Name, SchemaSymbols::fgATTVAL_ANYTYPE); } if(elementInfo->getMemberTypeDefinition()) { typeInfo->setNumericProperty(DOMPSVITypeInfo::PSVI_Member_Type_Definition_Anonymous, elementInfo->getMemberTypeDefinition()->getAnonymous()); typeInfo->setStringProperty(DOMPSVITypeInfo::PSVI_Member_Type_Definition_Namespace, fDocument->getPooledString(elementInfo->getMemberTypeDefinition()->getNamespace())); typeInfo->setStringProperty(DOMPSVITypeInfo::PSVI_Member_Type_Definition_Name, fDocument->getPooledString(elementInfo->getMemberTypeDefinition()->getName())); } if(elementInfo->getElementDeclaration()) typeInfo->setNumericProperty(DOMPSVITypeInfo::PSVI_Nil, elementInfo->getElementDeclaration()->getNillable()); typeInfo->setStringProperty(DOMPSVITypeInfo::PSVI_Schema_Default, fDocument->getPooledString(elementInfo->getSchemaDefault())); typeInfo->setStringProperty(DOMPSVITypeInfo::PSVI_Schema_Normalized_Value, fDocument->getPooledString(elementInfo->getSchemaNormalizedValue())); typeInfo->setNumericProperty(DOMPSVITypeInfo::PSVI_Schema_Specified, true); ((DOMElementNSImpl*)fCurrentParent)->setSchemaTypeInfo(typeInfo); } if(fPSVIHandler) fPSVIHandler->handleElementPSVI(localName, uri, elementInfo); } void AbstractDOMParser::handlePartialElementPSVI(const XMLCh* const localName , const XMLCh* const uri , PSVIElement * elementInfo) { if(fPSVIHandler) fPSVIHandler->handlePartialElementPSVI(localName, uri, elementInfo); } void AbstractDOMParser::handleAttributesPSVI( const XMLCh* const localName , const XMLCh* const uri , PSVIAttributeList * psviAttributes) { if(fCreateSchemaInfo) { for (XMLSize_t index=0; index < psviAttributes->getLength(); index++) { XERCES_CPP_NAMESPACE_QUALIFIER PSVIAttribute *attrInfo=psviAttributes->getAttributePSVIAtIndex(index); XERCES_CPP_NAMESPACE_QUALIFIER DOMNode* pAttrNode=fCurrentNode->getAttributes()->getNamedItemNS(psviAttributes->getAttributeNamespaceAtIndex(index), psviAttributes->getAttributeNameAtIndex(index)); if(pAttrNode!=NULL) { DOMTypeInfoImpl* typeInfo=new (getDocument()) DOMTypeInfoImpl(); typeInfo->setNumericProperty(DOMPSVITypeInfo::PSVI_Validity, attrInfo->getValidity()); typeInfo->setNumericProperty(DOMPSVITypeInfo::PSVI_Validation_Attempted, attrInfo->getValidationAttempted()); if(attrInfo->getTypeDefinition()) { typeInfo->setNumericProperty(DOMPSVITypeInfo::PSVI_Type_Definition_Type, XSTypeDefinition::SIMPLE_TYPE); typeInfo->setNumericProperty(DOMPSVITypeInfo::PSVI_Type_Definition_Anonymous, attrInfo->getTypeDefinition()->getAnonymous()); typeInfo->setStringProperty(DOMPSVITypeInfo::PSVI_Type_Definition_Namespace, fDocument->getPooledString(attrInfo->getTypeDefinition()->getNamespace())); typeInfo->setStringProperty(DOMPSVITypeInfo::PSVI_Type_Definition_Name, fDocument->getPooledString(attrInfo->getTypeDefinition()->getName())); } else if(attrInfo->getValidity()==PSVIItem::VALIDITY_VALID) { // if we are valid but we don't have a type validator, we are xs:anySimpleType typeInfo->setNumericProperty(DOMPSVITypeInfo::PSVI_Type_Definition_Type, XSTypeDefinition::SIMPLE_TYPE); typeInfo->setNumericProperty(DOMPSVITypeInfo::PSVI_Type_Definition_Anonymous, false); typeInfo->setStringProperty(DOMPSVITypeInfo::PSVI_Type_Definition_Namespace, SchemaSymbols::fgURI_SCHEMAFORSCHEMA); typeInfo->setStringProperty(DOMPSVITypeInfo::PSVI_Type_Definition_Name, SchemaSymbols::fgDT_ANYSIMPLETYPE); } if(attrInfo->getMemberTypeDefinition()) { typeInfo->setNumericProperty(DOMPSVITypeInfo::PSVI_Member_Type_Definition_Anonymous, attrInfo->getMemberTypeDefinition()->getAnonymous()); typeInfo->setStringProperty(DOMPSVITypeInfo::PSVI_Member_Type_Definition_Namespace, fDocument->getPooledString(attrInfo->getMemberTypeDefinition()->getNamespace())); typeInfo->setStringProperty(DOMPSVITypeInfo::PSVI_Member_Type_Definition_Name, fDocument->getPooledString(attrInfo->getMemberTypeDefinition()->getName())); } typeInfo->setStringProperty(DOMPSVITypeInfo::PSVI_Schema_Default, fDocument->getPooledString(attrInfo->getSchemaDefault())); typeInfo->setStringProperty(DOMPSVITypeInfo::PSVI_Schema_Normalized_Value, fDocument->getPooledString(attrInfo->getSchemaNormalizedValue())); typeInfo->setNumericProperty(DOMPSVITypeInfo::PSVI_Schema_Specified, true); ((DOMAttrImpl*)pAttrNode)->setSchemaTypeInfo(typeInfo); } } } // associate the info now; if the user wants, she can override what we did if(fPSVIHandler) fPSVIHandler->handleAttributesPSVI(localName, uri, psviAttributes); } // --------------------------------------------------------------------------- // AbstractDOMParser: Implementation of XMLDocumentHandler interface // --------------------------------------------------------------------------- void AbstractDOMParser::docCharacters( const XMLCh* const chars , const XMLSize_t length , const bool cdataSection) { // Ignore chars outside of content if (!fWithinElement) return; if (cdataSection == true) { DOMCDATASection *node = createCDATASection (chars, length); castToParentImpl (fCurrentParent)->appendChildFast (node); fCurrentNode = node; } else { if (fCurrentNode->getNodeType() == DOMNode::TEXT_NODE) { DOMTextImpl *node = (DOMTextImpl*)fCurrentNode; node->appendData(chars, length); } else { DOMText *node = createText (chars, length); castToParentImpl (fCurrentParent)->appendChildFast (node); fCurrentNode = node; } } } void AbstractDOMParser::docComment(const XMLCh* const comment) { if (fCreateCommentNodes) { DOMComment *dcom = fDocument->createComment(comment); castToParentImpl (fCurrentParent)->appendChildFast (dcom); fCurrentNode = dcom; } } void AbstractDOMParser::docPI( const XMLCh* const target , const XMLCh* const data) { DOMProcessingInstruction *pi = fDocument->createProcessingInstruction ( target , data ); castToParentImpl (fCurrentParent)->appendChildFast (pi); fCurrentNode = pi; } void AbstractDOMParser::endEntityReference(const XMLEntityDecl&) { if (!fCreateEntityReferenceNodes) return; DOMEntityReferenceImpl *erImpl = 0; if (fCurrentParent->getNodeType() == DOMNode::ENTITY_REFERENCE_NODE) erImpl = (DOMEntityReferenceImpl *) fCurrentParent; fCurrentNode = fCurrentParent; fCurrentParent = fCurrentNode->getParentNode (); // When the document is invalid but we continue parsing, we may // end up seeing more 'end' events than the 'start' ones. // if (fCurrentParent == 0 && fDocument != 0) { fCurrentNode = fDocument->getDocumentElement (); fCurrentParent = fCurrentNode; } if (erImpl) erImpl->setReadOnly(true, true); } void AbstractDOMParser::endElement( const XMLElementDecl& , const unsigned int , const bool , const XMLCh* const) { fCurrentNode = fCurrentParent; fCurrentParent = fCurrentNode->getParentNode (); // When the document is invalid but we continue parsing, we may // end up seeing more 'end' events than the 'start' ones. // if (fCurrentParent == 0 && fDocument != 0) { fCurrentNode = fDocument->getDocumentElement (); fCurrentParent = fCurrentNode; } // If we've hit the end of content, clear the flag. // if (fCurrentParent == fDocument) fWithinElement = false; if(fDoXInclude && (XIncludeUtils::isXIIncludeDOMNode(fCurrentNode) || ((XIncludeUtils::isXIFallbackDOMNode(fCurrentNode) && !XMLString::equals(fCurrentParent->getNamespaceURI(), XIncludeUtils::fgXIIIncludeNamespaceURI))))) { XIncludeUtils xiu((XMLErrorReporter *) this); // process the XInclude node, then update the fCurrentNode with the new content if(xiu.parseDOMNodeDoingXInclude(fCurrentNode, fDocument, getScanner()->getEntityHandler())) fCurrentNode = fCurrentParent->getLastChild(); } } void AbstractDOMParser::ignorableWhitespace( const XMLCh* const chars , const XMLSize_t length , const bool) { // Ignore chars before the root element if (!fWithinElement || !fIncludeIgnorableWhitespace) return; // revisit. Not safe to slam in a null like this. XMLCh savedChar = chars[length]; XMLCh *ncChars = (XMLCh *)chars; // cast off const ncChars[length] = chNull; if (fCurrentNode->getNodeType() == DOMNode::TEXT_NODE) { DOMText *node = (DOMText *)fCurrentNode; node->appendData(chars); } else { DOMTextImpl *node = (DOMTextImpl *)fDocument->createTextNode(chars); node->setIgnorableWhitespace(true); castToParentImpl (fCurrentParent)->appendChildFast (node); fCurrentNode = node; } ncChars[length] = savedChar; } void AbstractDOMParser::resetDocument() { // // The reset methods are called before a new parse event occurs. // Reset this parsers state to clear out anything that may be left // from a previous use, in particular the DOM document itself. // this->reset(); } void AbstractDOMParser::startDocument() { if(fImplementationFeatures == 0) fDocument = (DOMDocumentImpl *)DOMImplementation::getImplementation()->createDocument(fMemoryManager); else fDocument = (DOMDocumentImpl *)DOMImplementationRegistry::getDOMImplementation(fImplementationFeatures)->createDocument(fMemoryManager); // Just set the document as the current parent and current node fCurrentParent = fDocument; fCurrentNode = fDocument; // set DOM error checking off fDocument->setErrorChecking(false); fDocument->setDocumentURI(fScanner->getLocator()->getSystemId()); fDocument->setInputEncoding(fScanner->getReaderMgr()->getCurrentEncodingStr()); } void AbstractDOMParser::endDocument() { // set DOM error checking back on fDocument->setErrorChecking(true); // DOM L2 does not support editing DocumentType nodes if (fDocumentType && fScanner -> getDoNamespaces()) fDocumentType->setReadOnly(true, true); } void AbstractDOMParser::startElement(const XMLElementDecl& elemDecl , const unsigned int urlId , const XMLCh* const elemPrefix , const RefVectorOf& attrList , const XMLSize_t attrCount , const bool isEmpty , const bool isRoot) { DOMElement *elem; DOMElementImpl *elemImpl; const XMLCh* namespaceURI = 0; bool doNamespaces = fScanner->getDoNamespaces(); // Create the element name. Here we are going to bypass the // DOMDocument::createElement() interface and instantiate the // required types directly in order to avoid name checking // overhead. // if (doNamespaces) { //DOM Level 2, doNamespaces on // const XMLCh* localName = elemDecl.getBaseName(); if (urlId != fScanner->getEmptyNamespaceId()) { //TagName has a prefix namespaceURI = fScanner->getURIText(urlId); //get namespaceURI if (elemPrefix && *elemPrefix) { XMLBufBid elemQName(&fBufMgr); elemQName.set(elemPrefix); elemQName.append(chColon); elemQName.append(localName); elem = createElementNS ( namespaceURI, elemPrefix, localName, elemQName.getRawBuffer()); } else elem = createElementNS (namespaceURI, 0, localName, localName); } else elem = createElementNS (namespaceURI, 0, localName, localName); } else { //DOM Level 1 elem = createElement (elemDecl.getFullName()); } elemImpl = (DOMElementImpl *) elem; if (attrCount) { unsigned int xmlnsNSId = fScanner->getXMLNSNamespaceId(); unsigned int emptyNSId = fScanner->getEmptyNamespaceId(); DOMAttrMapImpl* map = elemImpl->fAttributes; map->reserve (attrCount); for (XMLSize_t index = 0; index < attrCount; ++index) { const XMLAttr* oneAttrib = attrList.elementAt(index); DOMAttrImpl *attr = 0; if (doNamespaces) { //DOM Level 2, doNamespaces on // unsigned int attrURIId = oneAttrib->getURIId(); const XMLCh* localName = oneAttrib->getName(); const XMLCh* prefix = oneAttrib->getPrefix(); namespaceURI = 0; if ((prefix==0 || *prefix==0) && XMLString::equals(localName, XMLUni::fgXMLNSString)) { // xmlns=... attrURIId = xmlnsNSId; } if (attrURIId != emptyNSId) { //TagName has a prefix namespaceURI = fScanner->getURIText(attrURIId); } attr = (DOMAttrImpl*) createAttrNS (namespaceURI, prefix, localName, oneAttrib->getQName()); map->setNamedItemNSFast(attr); } else { attr = (DOMAttrImpl*) createAttr (oneAttrib->getName()); map->setNamedItemFast(attr); } attr->setValueFast(oneAttrib->getValue()); // Attributes of type ID. If this is one, add it to the hashtable of IDs // that is constructed for use by GetElementByID(). // if (oneAttrib->getType()==XMLAttDef::ID) { if (fDocument->fNodeIDMap == 0) fDocument->fNodeIDMap = new (fDocument) DOMNodeIDMap(500, fDocument); fDocument->fNodeIDMap->add(attr); attr->fNode.isIdAttr(true); } attr->setSpecified(oneAttrib->getSpecified()); // store DTD validation information if(fCreateSchemaInfo) { switch(oneAttrib->getType()) { case XMLAttDef::CData: attr->setSchemaTypeInfo(&DOMTypeInfoImpl::g_DtdValidatedCDATAAttribute); break; case XMLAttDef::ID: attr->setSchemaTypeInfo(&DOMTypeInfoImpl::g_DtdValidatedIDAttribute); break; case XMLAttDef::IDRef: attr->setSchemaTypeInfo(&DOMTypeInfoImpl::g_DtdValidatedIDREFAttribute); break; case XMLAttDef::IDRefs: attr->setSchemaTypeInfo(&DOMTypeInfoImpl::g_DtdValidatedIDREFSAttribute); break; case XMLAttDef::Entity: attr->setSchemaTypeInfo(&DOMTypeInfoImpl::g_DtdValidatedENTITYAttribute); break; case XMLAttDef::Entities: attr->setSchemaTypeInfo(&DOMTypeInfoImpl::g_DtdValidatedENTITIESAttribute); break; case XMLAttDef::NmToken: attr->setSchemaTypeInfo(&DOMTypeInfoImpl::g_DtdValidatedNMTOKENAttribute); break; case XMLAttDef::NmTokens: attr->setSchemaTypeInfo(&DOMTypeInfoImpl::g_DtdValidatedNMTOKENSAttribute); break; case XMLAttDef::Notation: attr->setSchemaTypeInfo(&DOMTypeInfoImpl::g_DtdValidatedNOTATIONAttribute); break; case XMLAttDef::Enumeration: attr->setSchemaTypeInfo(&DOMTypeInfoImpl::g_DtdValidatedENUMERATIONAttribute); break; default: attr->setSchemaTypeInfo(&DOMTypeInfoImpl::g_DtdNotValidatedAttribute); break; } } } } //Set up the default attributes if any. // if (elemDecl.hasAttDefs()) { XMLAttDefList* defAttrs = &elemDecl.getAttDefList(); XMLAttDef* attr = 0; DOMAttrImpl * insertAttr = 0; for(XMLSize_t i=0; igetAttDefCount(); i++) { attr = &defAttrs->getAttDef(i); const XMLAttDef::DefAttTypes defType = attr->getDefaultType(); if ((defType == XMLAttDef::Default) || (defType == XMLAttDef::Fixed)) { if (doNamespaces) { // DOM Level 2 wants all namespace declaration attributes // to be bound to "http://www.w3.org/2000/xmlns/" // So as long as the XML parser doesn't do it, it needs to // be done here. const XMLCh* qualifiedName = attr->getFullName(); XMLBufBid bbPrefixQName(&fBufMgr); XMLBuffer& prefixBuf = bbPrefixQName.getBuffer(); int colonPos = -1; unsigned int uriId = fScanner->resolveQName(qualifiedName, prefixBuf, ElemStack::Mode_Attribute, colonPos); const XMLCh* namespaceURI = 0; if (XMLString::equals(qualifiedName, XMLUni::fgXMLNSString)) //for xmlns=... uriId = fScanner->getXMLNSNamespaceId(); if (uriId != fScanner->getEmptyNamespaceId()) { //TagName has a prefix namespaceURI = fScanner->getURIText(uriId); } insertAttr = (DOMAttrImpl *) fDocument->createAttributeNS(namespaceURI, // NameSpaceURI qualifiedName); // qualified name DOMAttr* remAttr = elemImpl->setDefaultAttributeNodeNS(insertAttr); if (remAttr) remAttr->release(); } else { // Namespaces is turned off... insertAttr = (DOMAttrImpl *) fDocument->createAttribute(attr->getFullName()); DOMNode* remAttr = elemImpl->setDefaultAttributeNode(insertAttr); if (remAttr) remAttr->release(); } //need to do this before the get as otherwise we overwrite any value in the attr if (attr->getValue() != 0) { insertAttr->setValueFast(attr->getValue()); insertAttr->setSpecified(false); } // store DTD validation information if(fCreateSchemaInfo) { switch(attr->getType()) { case XMLAttDef::CData: insertAttr->setSchemaTypeInfo(&DOMTypeInfoImpl::g_DtdValidatedCDATAAttribute); break; case XMLAttDef::ID: insertAttr->setSchemaTypeInfo(&DOMTypeInfoImpl::g_DtdValidatedIDAttribute); break; case XMLAttDef::IDRef: insertAttr->setSchemaTypeInfo(&DOMTypeInfoImpl::g_DtdValidatedIDREFAttribute); break; case XMLAttDef::IDRefs: insertAttr->setSchemaTypeInfo(&DOMTypeInfoImpl::g_DtdValidatedIDREFSAttribute); break; case XMLAttDef::Entity: insertAttr->setSchemaTypeInfo(&DOMTypeInfoImpl::g_DtdValidatedENTITYAttribute); break; case XMLAttDef::Entities: insertAttr->setSchemaTypeInfo(&DOMTypeInfoImpl::g_DtdValidatedENTITIESAttribute); break; case XMLAttDef::NmToken: insertAttr->setSchemaTypeInfo(&DOMTypeInfoImpl::g_DtdValidatedNMTOKENAttribute); break; case XMLAttDef::NmTokens: insertAttr->setSchemaTypeInfo(&DOMTypeInfoImpl::g_DtdValidatedNMTOKENSAttribute); break; case XMLAttDef::Notation: insertAttr->setSchemaTypeInfo(&DOMTypeInfoImpl::g_DtdValidatedNOTATIONAttribute); break; case XMLAttDef::Enumeration: insertAttr->setSchemaTypeInfo(&DOMTypeInfoImpl::g_DtdValidatedENUMERATIONAttribute); break; default: insertAttr->setSchemaTypeInfo(&DOMTypeInfoImpl::g_DtdNotValidatedAttribute); break; } } } insertAttr = 0; attr->reset(); } } if (fCurrentParent != fDocument) castToParentImpl (fCurrentParent)->appendChildFast (elem); else fCurrentParent->appendChild (elem); fCurrentParent = elem; fCurrentNode = elem; fWithinElement = true; // If an empty element, do end right now (no endElement() will be called) if (isEmpty) endElement(elemDecl, urlId, isRoot, elemPrefix); } void AbstractDOMParser::startEntityReference(const XMLEntityDecl& entDecl) { const XMLCh * entName = entDecl.getName(); DOMNamedNodeMap *entities = fDocumentType->getEntities(); DOMEntityImpl* entity = (DOMEntityImpl*)entities->getNamedItem(entName); if (entity) entity->setInputEncoding(fScanner->getReaderMgr()->getCurrentEncodingStr()); fCurrentEntity = entity; // Following line has been moved up so that erImpl is only declared // and used if create entity ref flag is true if (fCreateEntityReferenceNodes == true) { DOMEntityReference *er = fDocument->createEntityReferenceByParser(entName); //set the readOnly flag to false before appending node, will be reset // in endEntityReference DOMEntityReferenceImpl *erImpl = (DOMEntityReferenceImpl *) er; erImpl->setReadOnly(false, true); castToParentImpl (fCurrentParent)->appendChildFast (er); fCurrentParent = er; fCurrentNode = er; // this entityRef needs to be stored in Entity map too. // We'd decide later whether the entity nodes should be created by a // separated method in parser or not. For now just stick it in if // the ref nodes are created if (entity) entity->setEntityRef(er); } } void AbstractDOMParser::XMLDecl(const XMLCh* const version , const XMLCh* const encoding , const XMLCh* const standalone , const XMLCh* const actualEncStr) { fDocument->setXmlStandalone(XMLString::equals(XMLUni::fgYesString, standalone)); fDocument->setXmlVersion(version); fDocument->setXmlEncoding(encoding); fDocument->setInputEncoding(actualEncStr); } // --------------------------------------------------------------------------- // AbstractDOMParser: Helper methods // --------------------------------------------------------------------------- //doctypehandler interfaces void AbstractDOMParser::attDef ( const DTDElementDecl& elemDecl , const DTDAttDef& attDef , const bool ) { if (fDocumentType->isIntSubsetReading()) { if (elemDecl.hasAttDefs()) { fInternalSubset.append(attDef.getFullName()); // Get the type and display it const XMLAttDef::AttTypes type = attDef.getType(); switch(type) { case XMLAttDef::CData : fInternalSubset.append(chSpace); fInternalSubset.append(XMLUni::fgCDATAString); break; case XMLAttDef::ID : fInternalSubset.append(chSpace); fInternalSubset.append(XMLUni::fgIDString); break; case XMLAttDef::IDRef : fInternalSubset.append(chSpace); fInternalSubset.append(XMLUni::fgIDRefString); break; case XMLAttDef::IDRefs : fInternalSubset.append(chSpace); fInternalSubset.append(XMLUni::fgIDRefsString); break; case XMLAttDef::Entity : fInternalSubset.append(chSpace); fInternalSubset.append(XMLUni::fgEntityString); break; case XMLAttDef::Entities : fInternalSubset.append(chSpace); fInternalSubset.append(XMLUni::fgEntitiesString); break; case XMLAttDef::NmToken : fInternalSubset.append(chSpace); fInternalSubset.append(XMLUni::fgNmTokenString); break; case XMLAttDef::NmTokens : fInternalSubset.append(chSpace); fInternalSubset.append(XMLUni::fgNmTokensString); break; case XMLAttDef::Notation : fInternalSubset.append(chSpace); fInternalSubset.append(XMLUni::fgNotationString); break; case XMLAttDef::Enumeration : { fInternalSubset.append(chSpace); const XMLCh* enumString = attDef.getEnumeration(); XMLSize_t length = XMLString::stringLen(enumString); if (length > 0) { fInternalSubset.append(chOpenParen ); for(XMLSize_t i=0; iisIntSubsetReading()) { if (comment != 0) { fInternalSubset.append(XMLUni::fgCommentString); fInternalSubset.append(chSpace); fInternalSubset.append(comment); fInternalSubset.append(chSpace); fInternalSubset.append(chDash); fInternalSubset.append(chDash); fInternalSubset.append(chCloseAngle); } } } void AbstractDOMParser::doctypeDecl ( const DTDElementDecl& elemDecl , const XMLCh* const publicId , const XMLCh* const systemId , const bool , const bool ) { fDocumentType = (DOMDocumentTypeImpl *) fDocument->createDocumentType(elemDecl.getFullName(), publicId, systemId); fDocument->setDocumentType(fDocumentType); } void AbstractDOMParser::doctypePI ( const XMLCh* const target , const XMLCh* const data ) { if (fDocumentType->isIntSubsetReading()) { //add these chars to internalSubset variable fInternalSubset.append(chOpenAngle); fInternalSubset.append(chQuestion); fInternalSubset.append(target); fInternalSubset.append(chSpace); fInternalSubset.append(data); fInternalSubset.append(chQuestion); fInternalSubset.append(chCloseAngle); } } void AbstractDOMParser::doctypeWhitespace ( const XMLCh* const chars , const XMLSize_t length ) { if (fDocumentType->isIntSubsetReading()) fInternalSubset.append(chars, length); } void AbstractDOMParser::elementDecl ( const DTDElementDecl& decl , const bool ) { if (fDocumentType->isIntSubsetReading()) { fInternalSubset.append(chOpenAngle); fInternalSubset.append(chBang); fInternalSubset.append(XMLUni::fgElemString); fInternalSubset.append(chSpace); fInternalSubset.append(decl.getFullName()); //get the ContentSpec information const XMLCh* contentModel = decl.getFormattedContentModel(); if (contentModel != 0) { fInternalSubset.append(chSpace); fInternalSubset.append(contentModel); } fInternalSubset.append(chCloseAngle); } } void AbstractDOMParser::endAttList ( const DTDElementDecl& elemDecl ) { if (fDocumentType->isIntSubsetReading()) { //print the closing angle fInternalSubset.append(chCloseAngle); } // this section sets up default attributes. // default attribute nodes are stored in a NamedNodeMap DocumentTypeImpl::elements // default attribute data attached to the document is used to conform to the // DOM spec regarding creating element nodes & removing attributes with default values // see DocumentTypeImpl if (elemDecl.hasAttDefs()) { XMLAttDefList* defAttrs = &elemDecl.getAttDefList(); XMLAttDef* attr = 0; DOMAttrImpl * insertAttr = 0; DOMElement *elem = fDocument->createElement(elemDecl.getFullName()); DOMElementImpl *elemImpl = (DOMElementImpl *) elem; bool doNamespaces = fScanner->getDoNamespaces(); for(XMLSize_t i=0; igetAttDefCount(); i++) { attr = &defAttrs->getAttDef(i); if (attr->getValue() != 0) { if (doNamespaces) { // DOM Level 2 wants all namespace declaration attributes // to be bound to "http://www.w3.org/2000/xmlns/" // So as long as the XML parser doesn't do it, it needs to // done here. const XMLCh* qualifiedName = attr->getFullName(); int index = DOMDocumentImpl::indexofQualifiedName(qualifiedName); XMLBufBid bbQName(&fBufMgr); XMLBuffer& buf = bbQName.getBuffer(); static const XMLCh XMLNS[] = { chLatin_x, chLatin_m, chLatin_l, chLatin_n, chLatin_s, chNull}; if (index > 0) { // there is prefix // map to XML URI for all cases except when prefix == "xmlns" XMLCh* prefix; XMLCh temp[1000]; if (index > 999) prefix = (XMLCh*) fMemoryManager->allocate ( (index + 1) * sizeof(XMLCh) );//new XMLCh[index+1]; else prefix = temp; XMLString::subString(prefix ,qualifiedName, 0, index, fMemoryManager); if (XMLString::equals(prefix,XMLNS)) buf.append(XMLUni::fgXMLNSURIName); else buf.append(XMLUni::fgXMLURIName); if (index > 999) fMemoryManager->deallocate(prefix);//delete [] prefix; } else { // No prefix if (XMLString::equals(qualifiedName,XMLNS)) buf.append(XMLUni::fgXMLNSURIName); } insertAttr = (DOMAttrImpl *) fDocument->createAttributeNS( buf.getRawBuffer(), // NameSpaceURI qualifiedName); // qualified name DOMNode* remAttr = elemImpl->setAttributeNodeNS(insertAttr); if (remAttr) remAttr->release(); } else { // Namespaces is turned off... insertAttr = (DOMAttrImpl *) fDocument->createAttribute(attr->getFullName()); DOMNode* remAttr = elemImpl->setAttributeNode(insertAttr); if (remAttr) remAttr->release(); } insertAttr->setValueFast(attr->getValue()); insertAttr->setSpecified(false); } } DOMNode* rem = fDocumentType->getElements()->setNamedItem(elemImpl); if (rem) rem->release(); } } void AbstractDOMParser::endIntSubset() { fDocumentType->setInternalSubset(fInternalSubset.getRawBuffer()); // the buffer shouldn't be released as it is reused in the next parse // fBufMgr.releaseBuffer(fInternalSubset); fDocumentType->fIntSubsetReading = false; } void AbstractDOMParser::endExtSubset() { } void AbstractDOMParser::entityDecl ( const DTDEntityDecl& entityDecl , const bool , const bool ) { DOMEntityImpl* entity = (DOMEntityImpl *) fDocument->createEntity(entityDecl.getName()); entity->setPublicId(entityDecl.getPublicId()); entity->setSystemId(entityDecl.getSystemId()); entity->setNotationName(entityDecl.getNotationName()); entity->setBaseURI(entityDecl.getBaseURI()); DOMEntityImpl *previousDef = (DOMEntityImpl *) fDocumentType->getEntities()->setNamedItem( entity ); if (previousDef) previousDef->release(); if (fDocumentType->isIntSubsetReading()) { //add thes chars to internalSubset variable fInternalSubset.append(chOpenAngle); fInternalSubset.append(chBang); fInternalSubset.append(XMLUni::fgEntityString); fInternalSubset.append(chSpace); fInternalSubset.append(entityDecl.getName()); const XMLCh* id = entity->getPublicId(); if (id != 0) { fInternalSubset.append(chSpace); fInternalSubset.append(XMLUni::fgPubIDString); fInternalSubset.append(chSpace); fInternalSubset.append(chDoubleQuote); fInternalSubset.append(id); fInternalSubset.append(chDoubleQuote); } id = entity->getSystemId(); if (id != 0) { fInternalSubset.append(chSpace); fInternalSubset.append(XMLUni::fgSysIDString); fInternalSubset.append(chSpace); fInternalSubset.append(chDoubleQuote); fInternalSubset.append(id); fInternalSubset.append(chDoubleQuote); } id = entity->getNotationName(); if (id != 0) { fInternalSubset.append(chSpace); fInternalSubset.append(XMLUni::fgNDATAString); fInternalSubset.append(chSpace); fInternalSubset.append(id); } id = entityDecl.getValue(); if (id !=0) { fInternalSubset.append(chSpace); fInternalSubset.append(chDoubleQuote); fInternalSubset.append(id); fInternalSubset.append(chDoubleQuote); } fInternalSubset.append(chCloseAngle); } } void AbstractDOMParser::resetDocType() { fDocumentType = 0; } void AbstractDOMParser::notationDecl ( const XMLNotationDecl& notDecl , const bool ) { DOMNotationImpl* notation = (DOMNotationImpl *)fDocument->createNotation(notDecl.getName()); notation->setPublicId(notDecl.getPublicId()); notation->setSystemId(notDecl.getSystemId()); notation->setBaseURI(notDecl.getBaseURI()); DOMNode* rem = fDocumentType->getNotations()->setNamedItem( notation ); if (rem) rem->release(); if (fDocumentType->isIntSubsetReading()) { //add thes chars to internalSubset variable fInternalSubset.append(chOpenAngle); fInternalSubset.append(chBang); fInternalSubset.append(XMLUni::fgNotationString); fInternalSubset.append(chSpace); fInternalSubset.append(notDecl.getName()); const XMLCh* id = notation->getPublicId(); if (id != 0) { fInternalSubset.append(chSpace); fInternalSubset.append(XMLUni::fgPubIDString); fInternalSubset.append(chSpace); fInternalSubset.append(chDoubleQuote); fInternalSubset.append(id); fInternalSubset.append(chDoubleQuote); } id = notation->getSystemId(); if (id != 0) { fInternalSubset.append(chSpace); fInternalSubset.append(XMLUni::fgSysIDString); fInternalSubset.append(chSpace); fInternalSubset.append(chDoubleQuote); fInternalSubset.append(id); fInternalSubset.append(chDoubleQuote); } fInternalSubset.append(chCloseAngle); } } void AbstractDOMParser::startAttList ( const DTDElementDecl& elemDecl ) { if (fDocumentType->isIntSubsetReading()) { fInternalSubset.append(chOpenAngle); fInternalSubset.append(chBang); fInternalSubset.append(XMLUni::fgAttListString); fInternalSubset.append(chSpace); fInternalSubset.append(elemDecl.getFullName()); } } void AbstractDOMParser::startIntSubset() { fDocumentType->fIntSubsetReading = true; } void AbstractDOMParser::startExtSubset() { } void AbstractDOMParser::TextDecl ( const XMLCh* const versionStr , const XMLCh* const encodingStr ) { if (fCurrentEntity) { fCurrentEntity->setXmlVersion(versionStr); fCurrentEntity->setXmlEncoding(encodingStr); } } DOMCDATASection* AbstractDOMParser:: createCDATASection (const XMLCh* s, XMLSize_t n) { return new (fDocument, DOMMemoryManager::CDATA_SECTION_OBJECT) DOMCDATASectionImpl(fDocument, s, n); } DOMText* AbstractDOMParser:: createText (const XMLCh* s, XMLSize_t n) { return new (fDocument, DOMMemoryManager::TEXT_OBJECT) DOMTextImpl(fDocument, s, n); } DOMElement* AbstractDOMParser:: createElement (const XMLCh* name) { return new (fDocument, DOMMemoryManager::ELEMENT_OBJECT) DOMElementImpl(fDocument, name); } DOMElement* AbstractDOMParser:: createElementNS (const XMLCh* namespaceURI, const XMLCh* elemPrefix, const XMLCh* localName, const XMLCh* qName) { return new (fDocument, DOMMemoryManager::ELEMENT_NS_OBJECT) DOMElementNSImpl (fDocument, namespaceURI, elemPrefix, localName, qName); } DOMAttr* AbstractDOMParser:: createAttr (const XMLCh* name) { return new (fDocument, DOMMemoryManager::ATTR_OBJECT) DOMAttrImpl(fDocument, name); } DOMAttr* AbstractDOMParser:: createAttrNS (const XMLCh* namespaceURI, const XMLCh* elemPrefix, const XMLCh* localName, const XMLCh* qName) { return new (fDocument, DOMMemoryManager::ATTR_NS_OBJECT) DOMAttrNSImpl (fDocument, namespaceURI, elemPrefix, localName, qName); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/parsers/DOMLSParserImpl.cpp0000644000175000017500000015420311301516456021535 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * This file contains code to build the DOM tree. It registers a document * handler with the scanner. In these handler methods, appropriate DOM nodes * are created and added to the DOM tree. * * $Id: DOMLSParserImpl.cpp 882548 2009-11-20 13:44:14Z borisk $ * */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // A filter used to abort processing // --------------------------------------------------------------------------- class __AbortFilter : public DOMLSParserFilter { public: __AbortFilter() {} virtual FilterAction acceptNode(DOMNode*) { return FILTER_INTERRUPT; } virtual FilterAction startElement(DOMElement* ) { return FILTER_INTERRUPT; } virtual DOMNodeFilter::ShowType getWhatToShow() const { return DOMNodeFilter::SHOW_ALL; } }; static __AbortFilter g_AbortFilter; // --------------------------------------------------------------------------- // DOMLSParserImpl: Constructors and Destructor // --------------------------------------------------------------------------- DOMLSParserImpl::DOMLSParserImpl( XMLValidator* const valToAdopt , MemoryManager* const manager , XMLGrammarPool* const gramPool) : AbstractDOMParser(valToAdopt, manager, gramPool) , fEntityResolver(0) , fXMLEntityResolver(0) , fErrorHandler(0) , fFilter(0) , fCharsetOverridesXMLEncoding(true) , fUserAdoptsDocument(false) , fSupportedParameters(0) , fFilterAction(0) , fFilterDelayedTextNodes(0) , fWrapNodesInDocumentFragment(0) , fWrapNodesContext(0) { // dom spec has different default from scanner's default, so set explicitly getScanner()->setNormalizeData(false); fSupportedParameters=new (fMemoryManager) DOMStringListImpl(48, manager); fSupportedParameters->add(XMLUni::fgDOMResourceResolver); fSupportedParameters->add(XMLUni::fgDOMErrorHandler); fSupportedParameters->add(XMLUni::fgXercesEntityResolver); fSupportedParameters->add(XMLUni::fgXercesSchemaExternalSchemaLocation); fSupportedParameters->add(XMLUni::fgXercesSchemaExternalNoNameSpaceSchemaLocation); fSupportedParameters->add(XMLUni::fgXercesSecurityManager); fSupportedParameters->add(XMLUni::fgXercesScannerName); fSupportedParameters->add(XMLUni::fgXercesParserUseDocumentFromImplementation); fSupportedParameters->add(XMLUni::fgDOMCharsetOverridesXMLEncoding); fSupportedParameters->add(XMLUni::fgDOMDisallowDoctype); fSupportedParameters->add(XMLUni::fgDOMIgnoreUnknownCharacterDenormalization); fSupportedParameters->add(XMLUni::fgDOMNamespaces); fSupportedParameters->add(XMLUni::fgDOMSupportedMediatypesOnly); fSupportedParameters->add(XMLUni::fgDOMValidate); fSupportedParameters->add(XMLUni::fgDOMValidateIfSchema); fSupportedParameters->add(XMLUni::fgDOMWellFormed); fSupportedParameters->add(XMLUni::fgDOMCanonicalForm); fSupportedParameters->add(XMLUni::fgDOMCDATASections); fSupportedParameters->add(XMLUni::fgDOMCheckCharacterNormalization); fSupportedParameters->add(XMLUni::fgDOMComments); fSupportedParameters->add(XMLUni::fgDOMDatatypeNormalization); fSupportedParameters->add(XMLUni::fgDOMElementContentWhitespace); fSupportedParameters->add(XMLUni::fgDOMEntities); fSupportedParameters->add(XMLUni::fgDOMNamespaceDeclarations); fSupportedParameters->add(XMLUni::fgDOMNormalizeCharacters); fSupportedParameters->add(XMLUni::fgDOMSchemaLocation); fSupportedParameters->add(XMLUni::fgDOMSchemaType); fSupportedParameters->add(XMLUni::fgDOMSplitCDATASections); fSupportedParameters->add(XMLUni::fgDOMInfoset); fSupportedParameters->add(XMLUni::fgXercesSchema); fSupportedParameters->add(XMLUni::fgXercesSchemaFullChecking); fSupportedParameters->add(XMLUni::fgXercesUserAdoptsDOMDocument); fSupportedParameters->add(XMLUni::fgXercesLoadExternalDTD); fSupportedParameters->add(XMLUni::fgXercesLoadSchema); fSupportedParameters->add(XMLUni::fgXercesContinueAfterFatalError); fSupportedParameters->add(XMLUni::fgXercesValidationErrorAsFatal); fSupportedParameters->add(XMLUni::fgXercesCacheGrammarFromParse); fSupportedParameters->add(XMLUni::fgXercesUseCachedGrammarInParse); fSupportedParameters->add(XMLUni::fgXercesCalculateSrcOfs); fSupportedParameters->add(XMLUni::fgXercesStandardUriConformant); fSupportedParameters->add(XMLUni::fgXercesDOMHasPSVIInfo); fSupportedParameters->add(XMLUni::fgXercesGenerateSyntheticAnnotations); fSupportedParameters->add(XMLUni::fgXercesValidateAnnotations); fSupportedParameters->add(XMLUni::fgXercesIdentityConstraintChecking); fSupportedParameters->add(XMLUni::fgXercesIgnoreCachedDTD); fSupportedParameters->add(XMLUni::fgXercesIgnoreAnnotations); fSupportedParameters->add(XMLUni::fgXercesDisableDefaultEntityResolution); fSupportedParameters->add(XMLUni::fgXercesSkipDTDValidation); fSupportedParameters->add(XMLUni::fgXercesDoXInclude); fSupportedParameters->add(XMLUni::fgXercesHandleMultipleImports); // LSParser by default does namespace processing setDoNamespaces(true); } DOMLSParserImpl::~DOMLSParserImpl() { delete fSupportedParameters; delete fFilterAction; delete fFilterDelayedTextNodes; } // --------------------------------------------------------------------------- // DOMLSParserImpl: Setter methods // --------------------------------------------------------------------------- bool DOMLSParserImpl::getBusy() const { return getParseInProgress(); } // --------------------------------------------------------------------------- // DOMLSParserImpl: Setter methods // --------------------------------------------------------------------------- void DOMLSParserImpl::setFilter(DOMLSParserFilter* const filter) { fFilter = filter; } // --------------------------------------------------------------------------- // DOMLSParserImpl: DOMConfiguration methods // --------------------------------------------------------------------------- void DOMLSParserImpl::setParameter(const XMLCh* name, const void* value) { if (XMLString::compareIStringASCII(name, XMLUni::fgDOMResourceResolver) == 0) { fEntityResolver = (DOMLSResourceResolver*)value; if (fEntityResolver) { getScanner()->setEntityHandler(this); fXMLEntityResolver = 0; } else { getScanner()->setEntityHandler(0); } } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMErrorHandler) == 0) { fErrorHandler = (DOMErrorHandler*)value; if (fErrorHandler) { getScanner()->setErrorReporter(this); } else { getScanner()->setErrorReporter(0); } } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMSchemaLocation) == 0) { // TODO } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMSchemaType) == 0) { // TODO } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesEntityResolver) == 0) { fXMLEntityResolver = (XMLEntityResolver*)value; if (fXMLEntityResolver) { getScanner()->setEntityHandler(this); fEntityResolver = 0; } else { getScanner()->setEntityHandler(0); } } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSchemaExternalSchemaLocation) == 0) { setExternalSchemaLocation((XMLCh*)value); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSchemaExternalNoNameSpaceSchemaLocation) == 0) { setExternalNoNamespaceSchemaLocation((XMLCh*)value); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSecurityManager) == 0) { setSecurityManager((SecurityManager*)value); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesScannerName) == 0) { AbstractDOMParser::useScanner((const XMLCh*) value); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesParserUseDocumentFromImplementation) == 0) { useImplementation((const XMLCh*) value); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesLowWaterMark) == 0) { setLowWaterMark(*(const XMLSize_t*)value); } else throw DOMException(DOMException::NOT_FOUND_ERR, 0, getMemoryManager()); } void DOMLSParserImpl::setParameter(const XMLCh* name, bool state) { if (XMLString::compareIStringASCII(name, XMLUni::fgDOMCharsetOverridesXMLEncoding) == 0) { // in fact, setting this has no effect to the parser fCharsetOverridesXMLEncoding = state; } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMDisallowDoctype) == 0) { // TODO } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMIgnoreUnknownCharacterDenormalization) == 0) { // TODO } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMNamespaces) == 0) { setDoNamespaces(state); } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMSupportedMediatypesOnly) == 0) { if (state) throw DOMException(DOMException::NOT_SUPPORTED_ERR, 0, getMemoryManager()); } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMValidate) == 0) { if (state) { if (getValidationScheme() == AbstractDOMParser::Val_Never) setValidationScheme(AbstractDOMParser::Val_Always); } else { setValidationScheme(AbstractDOMParser::Val_Never); } } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMValidateIfSchema) == 0) { if (state) { setValidationScheme(AbstractDOMParser::Val_Auto); } else { setValidationScheme(AbstractDOMParser::Val_Never); } } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMWellFormed) == 0) { if(state==false) throw DOMException(DOMException::NOT_SUPPORTED_ERR, 0, getMemoryManager()); } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMCanonicalForm) == 0 ) { // TODO } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMCDATASections) == 0 ) { // TODO } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMCheckCharacterNormalization) == 0 ) { // TODO } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMComments) == 0) { setCreateCommentNodes(state); } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMDatatypeNormalization) == 0) { getScanner()->setNormalizeData(state); } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMElementContentWhitespace) == 0) { setIncludeIgnorableWhitespace(state); } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMEntities) == 0) { setCreateEntityReferenceNodes(state); } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMNamespaceDeclarations) == 0) { if (state==false) throw DOMException(DOMException::NOT_SUPPORTED_ERR, 0, getMemoryManager()); } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMNormalizeCharacters) == 0) { // TODO } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMSplitCDATASections) == 0) { // TODO } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMInfoset) == 0) { if (!state) throw DOMException(DOMException::NOT_SUPPORTED_ERR, 0, getMemoryManager()); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSchema) == 0) { setDoSchema(state); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSchemaFullChecking) == 0) { setValidationSchemaFullChecking(state); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesUserAdoptsDOMDocument) == 0) { if(state) fUserAdoptsDocument = true; else fUserAdoptsDocument = false; } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesLoadExternalDTD) == 0) { setLoadExternalDTD(state); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesLoadSchema) == 0) { setLoadSchema(state); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesContinueAfterFatalError) == 0) { setExitOnFirstFatalError(!state); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesValidationErrorAsFatal) == 0) { setValidationConstraintFatal(state); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesCacheGrammarFromParse) == 0) { getScanner()->cacheGrammarFromParse(state); if (state) getScanner()->useCachedGrammarInParse(state); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesUseCachedGrammarInParse) == 0) { if (state || !getScanner()->isCachingGrammarFromParse()) getScanner()->useCachedGrammarInParse(state); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesCalculateSrcOfs) == 0) { getScanner()->setCalculateSrcOfs(state); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesStandardUriConformant) == 0) { getScanner()->setStandardUriConformant(state); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesDOMHasPSVIInfo) == 0) { setCreateSchemaInfo(state); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesGenerateSyntheticAnnotations) == 0) { getScanner()->setGenerateSyntheticAnnotations(state); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesValidateAnnotations) == 0) { getScanner()->setValidateAnnotations(state); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesIdentityConstraintChecking) == 0) { getScanner()->setIdentityConstraintChecking(state); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesIgnoreCachedDTD) == 0) { getScanner()->setIgnoredCachedDTD(state); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesIgnoreAnnotations) == 0) { getScanner()->setIgnoreAnnotations(state); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesDisableDefaultEntityResolution) == 0) { getScanner()->setDisableDefaultEntityResolution(state); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSkipDTDValidation) == 0) { getScanner()->setSkipDTDValidation(state); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesDoXInclude) == 0) { setDoXInclude(state); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesHandleMultipleImports) == 0) { getScanner()->setHandleMultipleImports(state); } else throw DOMException(DOMException::NOT_FOUND_ERR, 0, getMemoryManager()); } const void* DOMLSParserImpl::getParameter(const XMLCh* name) const { if (XMLString::compareIStringASCII(name, XMLUni::fgDOMCharsetOverridesXMLEncoding) == 0) { return (void*)fCharsetOverridesXMLEncoding; } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMDisallowDoctype) == 0) { // TODO return 0; } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMIgnoreUnknownCharacterDenormalization) == 0) { // TODO return 0; } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMNamespaces) == 0) { return (void*)getDoNamespaces(); } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMResourceResolver) == 0) { return fEntityResolver; } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMSupportedMediatypesOnly) == 0) { return (void*)false; } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMValidate) == 0) { return (void*)(getValidationScheme() != AbstractDOMParser::Val_Never); } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMValidateIfSchema) == 0) { return (void*)(getValidationScheme() == AbstractDOMParser::Val_Auto); } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMWellFormed) == 0) { return (void*)true; } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMCanonicalForm) == 0 ) { // TODO return 0; } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMCDATASections) == 0 ) { // TODO return 0; } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMCheckCharacterNormalization) == 0 ) { // TODO return 0; } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMComments) == 0) { return (void*)getCreateCommentNodes(); } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMDatatypeNormalization) == 0) { return (void*)getScanner()->getNormalizeData(); } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMElementContentWhitespace) == 0) { return (void*)getIncludeIgnorableWhitespace(); } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMEntities) == 0) { return (void*)getCreateEntityReferenceNodes(); } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMErrorHandler) == 0) { return fErrorHandler; } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMNamespaceDeclarations) == 0) { return (void*)true; } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMNormalizeCharacters) == 0) { return 0; } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMSchemaLocation) == 0) { return 0; } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMSchemaType) == 0) { return 0; } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMSplitCDATASections) == 0) { return 0; } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMInfoset) == 0) { return (void*)true; } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSchema) == 0) { return (void*)getDoSchema(); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSchemaFullChecking) == 0) { return (void*)getValidationSchemaFullChecking(); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesIdentityConstraintChecking) == 0) { return (void*)getIdentityConstraintChecking(); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesLoadExternalDTD) == 0) { return (void*)getLoadExternalDTD(); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesLoadSchema) == 0) { return (void*)getLoadSchema(); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesContinueAfterFatalError) == 0) { return (void*)!getExitOnFirstFatalError(); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesValidationErrorAsFatal) == 0) { return (void*)getValidationConstraintFatal(); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesCacheGrammarFromParse) == 0) { return (void*)getScanner()->isCachingGrammarFromParse(); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesUseCachedGrammarInParse) == 0) { return (void*)getScanner()->isUsingCachedGrammarInParse(); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesCalculateSrcOfs) == 0) { return (void*)getScanner()->getCalculateSrcOfs(); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesStandardUriConformant) == 0) { return (void*)getScanner()->getStandardUriConformant(); } else if(XMLString::compareIStringASCII(name, XMLUni::fgXercesUserAdoptsDOMDocument) == 0) { return (void*)fUserAdoptsDocument; } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesDOMHasPSVIInfo) == 0) { return (void*)getCreateSchemaInfo(); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesGenerateSyntheticAnnotations) == 0) { return (void*)getScanner()->getGenerateSyntheticAnnotations(); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesValidateAnnotations) == 0) { return (void*)getScanner()->getValidateAnnotations(); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesIgnoreCachedDTD) == 0) { return (void*)getScanner()->getIgnoreCachedDTD(); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesIgnoreAnnotations) == 0) { return (void*)getScanner()->getIgnoreAnnotations(); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesDisableDefaultEntityResolution) == 0) { return (void*)getScanner()->getDisableDefaultEntityResolution(); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSkipDTDValidation) == 0) { return (void*)getScanner()->getSkipDTDValidation(); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesHandleMultipleImports) == 0) { return (void*)getScanner()->getHandleMultipleImports(); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesEntityResolver) == 0) { return fXMLEntityResolver; } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSchemaExternalSchemaLocation) == 0) { return getExternalSchemaLocation(); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSchemaExternalNoNameSpaceSchemaLocation) == 0) { return getExternalNoNamespaceSchemaLocation(); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesSecurityManager) == 0) { return getSecurityManager(); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesDoXInclude) == 0) { return (void *)getDoXInclude(); } else if (XMLString::compareIStringASCII(name, XMLUni::fgXercesLowWaterMark) == 0) { return (void*)&getLowWaterMark(); } else throw DOMException(DOMException::NOT_FOUND_ERR, 0, getMemoryManager()); } bool DOMLSParserImpl::canSetParameter(const XMLCh* name, const void* /*value*/) const { if (XMLString::compareIStringASCII(name, XMLUni::fgDOMResourceResolver) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgDOMErrorHandler) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgXercesEntityResolver) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgXercesSchemaExternalSchemaLocation) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgXercesSchemaExternalNoNameSpaceSchemaLocation) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgXercesSecurityManager) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgXercesScannerName) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgXercesParserUseDocumentFromImplementation) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgXercesLowWaterMark) == 0) return true; else if(XMLString::compareIStringASCII(name, XMLUni::fgDOMSchemaLocation) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgDOMSchemaType) == 0) return false; return false; } bool DOMLSParserImpl::canSetParameter(const XMLCh* name, bool value) const { if (XMLString::compareIStringASCII(name, XMLUni::fgDOMCharsetOverridesXMLEncoding) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgDOMNamespaces) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgDOMValidate) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgDOMValidateIfSchema) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgDOMComments) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgDOMDatatypeNormalization) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgDOMElementContentWhitespace) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgDOMEntities) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgXercesSchema) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgXercesSchemaFullChecking) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgXercesIdentityConstraintChecking) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgXercesLoadExternalDTD) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgXercesLoadSchema) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgXercesContinueAfterFatalError) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgXercesValidationErrorAsFatal) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgXercesCacheGrammarFromParse) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgXercesUseCachedGrammarInParse) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgXercesCalculateSrcOfs) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgXercesStandardUriConformant) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgXercesUserAdoptsDOMDocument) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgXercesDOMHasPSVIInfo) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgXercesGenerateSyntheticAnnotations) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgXercesValidateAnnotations) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgXercesIgnoreCachedDTD) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgXercesIgnoreAnnotations) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgXercesDisableDefaultEntityResolution) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgXercesSkipDTDValidation) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgXercesDoXInclude) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgXercesHandleMultipleImports) == 0) return true; else if(XMLString::compareIStringASCII(name, XMLUni::fgDOMDisallowDoctype) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgDOMIgnoreUnknownCharacterDenormalization) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgDOMCanonicalForm) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgDOMCDATASections) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgDOMCheckCharacterNormalization) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgDOMNormalizeCharacters) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgDOMSplitCDATASections) == 0) return false; else if(XMLString::compareIStringASCII(name, XMLUni::fgDOMSupportedMediatypesOnly) == 0) return value?false:true; else if(XMLString::compareIStringASCII(name, XMLUni::fgDOMWellFormed) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgDOMNamespaceDeclarations) == 0 || XMLString::compareIStringASCII(name, XMLUni::fgDOMInfoset) == 0) return value?true:false; return false; } const DOMStringList* DOMLSParserImpl::getParameterNames() const { return fSupportedParameters; } // --------------------------------------------------------------------------- // DOMLSParserImpl: Feature methods // --------------------------------------------------------------------------- void DOMLSParserImpl::release() { DOMLSParserImpl* builder = (DOMLSParserImpl*) this; delete builder; } void DOMLSParserImpl::resetDocumentPool() { resetPool(); } // --------------------------------------------------------------------------- // DOMLSParserImpl: Parsing methods // --------------------------------------------------------------------------- DOMDocument* DOMLSParserImpl::parse(const DOMLSInput* source) { if (getParseInProgress()) throw DOMException(DOMException::INVALID_STATE_ERR, XMLDOMMsg::LSParser_ParseInProgress, fMemoryManager); // remove the abort filter, if present if(fFilter==&g_AbortFilter) fFilter=0; if(fFilterAction) fFilterAction->removeAll(); if(fFilterDelayedTextNodes) fFilterDelayedTextNodes->removeAll(); Wrapper4DOMLSInput isWrapper((DOMLSInput*)source, fEntityResolver, false, getMemoryManager()); AbstractDOMParser::parse(isWrapper); // Disabled until 4.0.0. See XERCESC-1894 for details. //if(getErrorCount()!=0) // throw DOMLSException(DOMLSException::PARSE_ERR, XMLDOMMsg::LSParser_ParsingFailed, fMemoryManager); if (fUserAdoptsDocument) return adoptDocument(); else return getDocument(); } DOMDocument* DOMLSParserImpl::parseURI(const XMLCh* const systemId) { if (getParseInProgress()) throw DOMException(DOMException::INVALID_STATE_ERR, XMLDOMMsg::LSParser_ParseInProgress, fMemoryManager); // remove the abort filter, if present if(fFilter==&g_AbortFilter) fFilter=0; if(fFilterAction) fFilterAction->removeAll(); if(fFilterDelayedTextNodes) fFilterDelayedTextNodes->removeAll(); AbstractDOMParser::parse(systemId); // Disabled until 4.0.0. See XERCESC-1894 for details. //if(getErrorCount()!=0) // throw DOMLSException(DOMLSException::PARSE_ERR, XMLDOMMsg::LSParser_ParsingFailed, fMemoryManager); if (fUserAdoptsDocument) return adoptDocument(); else return getDocument(); } DOMDocument* DOMLSParserImpl::parseURI(const char* const systemId) { if (getParseInProgress()) throw DOMException(DOMException::INVALID_STATE_ERR, XMLDOMMsg::LSParser_ParseInProgress, fMemoryManager); // remove the abort filter, if present if(fFilter==&g_AbortFilter) fFilter=0; if(fFilterAction) fFilterAction->removeAll(); if(fFilterDelayedTextNodes) fFilterDelayedTextNodes->removeAll(); AbstractDOMParser::parse(systemId); // Disabled until 4.0.0. See XERCESC-1894 for details. //if(getErrorCount()!=0) // throw DOMLSException(DOMLSException::PARSE_ERR, XMLDOMMsg::LSParser_ParsingFailed, fMemoryManager); if (fUserAdoptsDocument) return adoptDocument(); else return getDocument(); } void DOMLSParserImpl::startDocument() { if(fWrapNodesInDocumentFragment) { fDocument = (DOMDocumentImpl*)fWrapNodesInDocumentFragment->getOwnerDocument(); fCurrentParent = fCurrentNode = fWrapNodesInDocumentFragment; // set DOM error checking off fDocument->setErrorChecking(false); // if we have namespaces in scope, push them down to the reader ValueHashTableOf inScopeNS(7, fMemoryManager); DOMNode* cursor = fWrapNodesContext; while(cursor) { if(cursor->getNodeType()==DOMNode::ELEMENT_NODE) { DOMNamedNodeMap* attrs = cursor->getAttributes(); for(XMLSize_t i=0; igetLength(); i++) { DOMNode* attr = attrs->item(i); if(XMLString::equals(attr->getNamespaceURI(), XMLUni::fgXMLNSURIName) && !inScopeNS.containsKey(attr->getLocalName())) inScopeNS.put((void*)attr->getLocalName(), fScanner->getURIStringPool()->addOrFind(attr->getNodeValue())); else if(XMLString::equals(attr->getNodeName(), XMLUni::fgXMLNSString) && !inScopeNS.containsKey(XMLUni::fgZeroLenString)) inScopeNS.put((void*)XMLUni::fgZeroLenString, fScanner->getURIStringPool()->addOrFind(attr->getNodeValue())); } } cursor = cursor->getParentNode(); } ValueHashTableOfEnumerator iter(&inScopeNS, false, fMemoryManager); while(iter.hasMoreElements()) { XMLCh* prefix = (XMLCh*)iter.nextElementKey(); fScanner->addGlobalPrefix(prefix, inScopeNS.get(prefix)); } // in this case the document URI and the input encoding must be propagated to the context document if(fWrapNodesAction==ACTION_REPLACE_CHILDREN && fWrapNodesContext->getNodeType()==DOMNode::DOCUMENT_NODE) { fDocument->setDocumentURI(fScanner->getLocator()->getSystemId()); fDocument->setInputEncoding(fScanner->getReaderMgr()->getCurrentEncodingStr()); } } else AbstractDOMParser::startDocument(); } void DOMLSParserImpl::XMLDecl( const XMLCh* const versionStr , const XMLCh* const encodingStr , const XMLCh* const standaloneStr , const XMLCh* const actualEncStr ) { if(fWrapNodesInDocumentFragment && !(fWrapNodesAction==ACTION_REPLACE_CHILDREN && fWrapNodesContext->getNodeType()==DOMNode::DOCUMENT_NODE)) { // don't change the properties for the context document, unless the context node is a // DOMDocument node and the action is ACTION_REPLACE_CHILDREN } else AbstractDOMParser::XMLDecl(versionStr, encodingStr, standaloneStr, actualEncStr); } DOMNode* DOMLSParserImpl::parseWithContext(const DOMLSInput* source, DOMNode* contextNode, const ActionType action) { if (getParseInProgress()) throw DOMException(DOMException::INVALID_STATE_ERR, XMLDOMMsg::LSParser_ParseInProgress, fMemoryManager); // remove the abort filter, if present if(fFilter==&g_AbortFilter) fFilter=0; if(fFilterAction) fFilterAction->removeAll(); if(fFilterDelayedTextNodes) fFilterDelayedTextNodes->removeAll(); DOMDocumentFragment* holder = contextNode->getOwnerDocument()->createDocumentFragment(); // When parsing the input stream, the context node (or its parent, depending on where // the result will be inserted) is used for resolving unbound namespace prefixes if(action==ACTION_INSERT_BEFORE || action==ACTION_INSERT_AFTER || action==ACTION_REPLACE) fWrapNodesContext = contextNode->getParentNode(); else fWrapNodesContext = contextNode; fWrapNodesInDocumentFragment = holder; fWrapNodesAction = action; // When calling parseWithContext, the values of the following configuration parameters // will be ignored and their default values will always be used instead: "validate", // "validate-if-schema", and "element-content-whitespace". ValSchemes oldValidate = getValidationScheme(); setValidationScheme(Val_Never); bool oldElementContentWhitespace = getIncludeIgnorableWhitespace(); setIncludeIgnorableWhitespace(true); Wrapper4DOMLSInput isWrapper((DOMLSInput*)source, fEntityResolver, false, getMemoryManager()); AbstractDOMParser::parse(isWrapper); setValidationScheme(oldValidate); setIncludeIgnorableWhitespace(oldElementContentWhitespace); fWrapNodesContext = NULL; fWrapNodesInDocumentFragment = NULL; fDocument = NULL; if(getErrorCount()!=0) { holder->release(); throw DOMLSException(DOMLSException::PARSE_ERR, XMLDOMMsg::LSParser_ParsingFailed, fMemoryManager); } DOMNode* result = holder->getFirstChild(); DOMNode* node, *parent = contextNode->getParentNode(); switch(action) { case ACTION_REPLACE_CHILDREN: // remove existing children while((node = contextNode->getFirstChild())!=NULL) contextNode->removeChild(node)->release(); // then fall back to behave like an append case ACTION_APPEND_AS_CHILDREN: while((node = holder->getFirstChild())!=NULL) contextNode->appendChild(holder->removeChild(node)); break; case ACTION_INSERT_BEFORE: while((node = holder->getFirstChild())!=NULL) parent->insertBefore(holder->removeChild(node), contextNode); break; case ACTION_INSERT_AFTER: while((node = holder->getLastChild())!=NULL) parent->insertBefore(holder->removeChild(node), contextNode->getNextSibling()); break; case ACTION_REPLACE: while((node = holder->getFirstChild())!=NULL) parent->insertBefore(holder->removeChild(node), contextNode); parent->removeChild(contextNode)->release(); break; } holder->release(); // TODO whenever we add support for DOM Mutation Events: // As the new data is inserted into the document, at least one mutation event is fired // per new immediate child or sibling of the context node. return result; } void DOMLSParserImpl::abort() { fFilter=&g_AbortFilter; } // --------------------------------------------------------------------------- // DOMLSParserImpl: Implementation of the XMLErrorReporter interface // --------------------------------------------------------------------------- void DOMLSParserImpl::error( const unsigned int code , const XMLCh* const , const XMLErrorReporter::ErrTypes errType , const XMLCh* const errorText , const XMLCh* const systemId , const XMLCh* const , const XMLFileLoc lineNum , const XMLFileLoc colNum) { if (fErrorHandler) { DOMError::ErrorSeverity severity = DOMError::DOM_SEVERITY_ERROR; if (errType == XMLErrorReporter::ErrType_Warning) severity = DOMError::DOM_SEVERITY_WARNING; else if (errType == XMLErrorReporter::ErrType_Fatal) severity = DOMError::DOM_SEVERITY_FATAL_ERROR; DOMLocatorImpl location(lineNum, colNum, getCurrentNode(), systemId); if(getScanner()->getCalculateSrcOfs()) location.setByteOffset(getScanner()->getSrcOffset()); DOMErrorImpl domError(severity, errorText, &location); // if user return false, we should stop the process, so throw an error bool toContinueProcess = true; try { toContinueProcess = fErrorHandler->handleError(domError); } catch(...) { } if (!toContinueProcess && !getScanner()->getInException()) throw (XMLErrs::Codes) code; } } void DOMLSParserImpl::resetErrors() { } // --------------------------------------------------------------------------- // DOMLSParserImpl: Implementation of XMLEntityHandler interface // --------------------------------------------------------------------------- InputSource* DOMLSParserImpl::resolveEntity( XMLResourceIdentifier* resourceIdentifier ) { // // Just map it to the SAX entity resolver. If there is not one installed, // return a null pointer to cause the default resolution. // if (fEntityResolver) { DOMLSInput* is = fEntityResolver->resolveResource(resourceIdentifier->getResourceIdentifierType()==XMLResourceIdentifier::ExternalEntity?XMLUni::fgDOMDTDType:XMLUni::fgDOMXMLSchemaType, resourceIdentifier->getNameSpace(), resourceIdentifier->getPublicId(), resourceIdentifier->getSystemId(), resourceIdentifier->getBaseURI()); if (is) return new (getMemoryManager()) Wrapper4DOMLSInput(is, fEntityResolver, true, getMemoryManager()); } if (fXMLEntityResolver) { return(fXMLEntityResolver->resolveEntity(resourceIdentifier)); } return 0; } typedef JanitorMemFunCall ResetParseType; // --------------------------------------------------------------------------- // DOMLSParserImpl: Grammar preparsing methods // --------------------------------------------------------------------------- Grammar* DOMLSParserImpl::loadGrammar(const char* const systemId, const Grammar::GrammarType grammarType, const bool toCache) { // Avoid multiple entrance if (getParseInProgress()) throw DOMException(DOMException::INVALID_STATE_ERR, XMLDOMMsg::LSParser_ParseInProgress, fMemoryManager); ResetParseType resetParse(this, &DOMLSParserImpl::resetParse); Grammar* grammar = 0; try { setParseInProgress(true); if (grammarType == Grammar::DTDGrammarType) getScanner()->setDocTypeHandler(0); grammar = getScanner()->loadGrammar(systemId, grammarType, toCache); } catch(const OutOfMemoryException&) { resetParse.release(); throw; } return grammar; } Grammar* DOMLSParserImpl::loadGrammar(const XMLCh* const systemId, const Grammar::GrammarType grammarType, const bool toCache) { // Avoid multiple entrance if (getParseInProgress()) throw DOMException(DOMException::INVALID_STATE_ERR, XMLDOMMsg::LSParser_ParseInProgress, fMemoryManager); ResetParseType resetParse(this, &DOMLSParserImpl::resetParse); Grammar* grammar = 0; try { setParseInProgress(true); if (grammarType == Grammar::DTDGrammarType) getScanner()->setDocTypeHandler(0); grammar = getScanner()->loadGrammar(systemId, grammarType, toCache); } catch(const OutOfMemoryException&) { resetParse.release(); throw; } return grammar; } Grammar* DOMLSParserImpl::loadGrammar(const DOMLSInput* source, const Grammar::GrammarType grammarType, const bool toCache) { // Avoid multiple entrance if (getParseInProgress()) throw DOMException(DOMException::INVALID_STATE_ERR, XMLDOMMsg::LSParser_ParseInProgress, fMemoryManager); ResetParseType resetParse(this, &DOMLSParserImpl::resetParse); Grammar* grammar = 0; try { setParseInProgress(true); if (grammarType == Grammar::DTDGrammarType) getScanner()->setDocTypeHandler(0); Wrapper4DOMLSInput isWrapper((DOMLSInput*)source, fEntityResolver, false, getMemoryManager()); grammar = getScanner()->loadGrammar(isWrapper, grammarType, toCache); } catch(const OutOfMemoryException&) { resetParse.release(); throw; } return grammar; } void DOMLSParserImpl::resetCachedGrammarPool() { getGrammarResolver()->resetCachedGrammar(); getScanner()->resetCachedGrammar(); } void DOMLSParserImpl::resetParse() { if (getScanner()->getDocTypeHandler() == 0) { getScanner()->setDocTypeHandler(this); } setParseInProgress(false); } Grammar* DOMLSParserImpl::getGrammar(const XMLCh* const nameSpaceKey) const { return getGrammarResolver()->getGrammar(nameSpaceKey); } Grammar* DOMLSParserImpl::getRootGrammar() const { return getScanner()->getRootGrammar(); } const XMLCh* DOMLSParserImpl::getURIText(unsigned int uriId) const { return getScanner()->getURIText(uriId); } XMLFilePos DOMLSParserImpl::getSrcOffset() const { return getScanner()->getSrcOffset(); } void DOMLSParserImpl::applyFilter(DOMNode* node) { DOMLSParserFilter::FilterAction action; // if the parent was already rejected, reject this too if(fFilterAction && fFilterAction->containsKey(fCurrentParent) && fFilterAction->get(fCurrentParent)==DOMLSParserFilter::FILTER_REJECT) action = DOMLSParserFilter::FILTER_REJECT; else action = fFilter->acceptNode(node); switch(action) { case DOMLSParserFilter::FILTER_ACCEPT: break; case DOMLSParserFilter::FILTER_REJECT: case DOMLSParserFilter::FILTER_SKIP: if(node==fCurrentNode) fCurrentNode = (node->getPreviousSibling()?node->getPreviousSibling():fCurrentParent); fCurrentParent->removeChild(node); node->release(); break; case DOMLSParserFilter::FILTER_INTERRUPT: throw DOMLSException(DOMLSException::PARSE_ERR, XMLDOMMsg::LSParser_ParsingAborted, fMemoryManager); } } void DOMLSParserImpl::docCharacters(const XMLCh* const chars , const XMLSize_t length , const bool cdataSection) { AbstractDOMParser::docCharacters(chars, length, cdataSection); if(fFilter) { // send the notification for the previous text node if(fFilterDelayedTextNodes && fCurrentNode->getPreviousSibling() && fFilterDelayedTextNodes->containsKey(fCurrentNode->getPreviousSibling())) { DOMNode* textNode = fCurrentNode->getPreviousSibling(); fFilterDelayedTextNodes->removeKey(textNode); applyFilter(textNode); } DOMNodeFilter::ShowType whatToShow=fFilter->getWhatToShow(); if(cdataSection && (whatToShow & DOMNodeFilter::SHOW_CDATA_SECTION)) { applyFilter(fCurrentNode); } else if(!cdataSection && (whatToShow & DOMNodeFilter::SHOW_TEXT)) { if(fFilterDelayedTextNodes==0) fFilterDelayedTextNodes=new (fMemoryManager) ValueHashTableOf(7, fMemoryManager); fFilterDelayedTextNodes->put(fCurrentNode, true); } } } void DOMLSParserImpl::docComment(const XMLCh* const comment) { if(fFilter) { // send the notification for the previous text node if(fFilterDelayedTextNodes && fFilterDelayedTextNodes->containsKey(fCurrentNode)) { fFilterDelayedTextNodes->removeKey(fCurrentNode); applyFilter(fCurrentNode); } } AbstractDOMParser::docComment(comment); if(fFilter) { DOMNodeFilter::ShowType whatToShow=fFilter->getWhatToShow(); if(whatToShow & DOMNodeFilter::SHOW_COMMENT) applyFilter(fCurrentNode); } } void DOMLSParserImpl::docPI(const XMLCh* const target , const XMLCh* const data) { if(fFilter) { // send the notification for the previous text node if(fFilterDelayedTextNodes && fFilterDelayedTextNodes->containsKey(fCurrentNode)) { fFilterDelayedTextNodes->removeKey(fCurrentNode); applyFilter(fCurrentNode); } } AbstractDOMParser::docPI(target, data); if(fFilter) { DOMNodeFilter::ShowType whatToShow=fFilter->getWhatToShow(); if(whatToShow & DOMNodeFilter::SHOW_PROCESSING_INSTRUCTION) applyFilter(fCurrentNode); } } void DOMLSParserImpl::startEntityReference(const XMLEntityDecl& entDecl) { if(fCreateEntityReferenceNodes && fFilter) { // send the notification for the previous text node if(fFilterDelayedTextNodes && fFilterDelayedTextNodes->containsKey(fCurrentNode)) { fFilterDelayedTextNodes->removeKey(fCurrentNode); applyFilter(fCurrentNode); } } DOMNode* origParent = fCurrentParent; AbstractDOMParser::startEntityReference(entDecl); if (fCreateEntityReferenceNodes && fFilter) { if(fFilterAction && fFilterAction->containsKey(origParent) && fFilterAction->get(origParent)==DOMLSParserFilter::FILTER_REJECT) fFilterAction->put(fCurrentNode, DOMLSParserFilter::FILTER_REJECT); } } void DOMLSParserImpl::endElement(const XMLElementDecl& elemDecl , const unsigned int urlId , const bool isRoot , const XMLCh* const elemPrefix) { if(fFilter) { // send the notification for the previous text node if(fFilterDelayedTextNodes && fFilterDelayedTextNodes->containsKey(fCurrentNode)) { fFilterDelayedTextNodes->removeKey(fCurrentNode); applyFilter(fCurrentNode); } } AbstractDOMParser::endElement(elemDecl, urlId, isRoot, elemPrefix); if(fFilter) { DOMNodeFilter::ShowType whatToShow=fFilter->getWhatToShow(); if(whatToShow & DOMNodeFilter::SHOW_ELEMENT) { DOMNode* thisNode = fCurrentNode; DOMLSParserFilter::FilterAction action; if(fFilterAction && fFilterAction->containsKey(thisNode)) { action = fFilterAction->get(thisNode); fFilterAction->removeKey(thisNode); } else action = fFilter->acceptNode(thisNode); switch(action) { case DOMLSParserFilter::FILTER_ACCEPT: break; case DOMLSParserFilter::FILTER_REJECT: fCurrentNode = (thisNode->getPreviousSibling()?thisNode->getPreviousSibling():fCurrentParent); fCurrentParent->removeChild(thisNode); thisNode->release(); break; case DOMLSParserFilter::FILTER_SKIP: { DOMNode* child=thisNode->getFirstChild(); while(child) { DOMNode* next=child->getNextSibling(); fCurrentParent->appendChild(child); child=next; } fCurrentNode = (thisNode->getPreviousSibling()?thisNode->getPreviousSibling():fCurrentParent); fCurrentParent->removeChild(thisNode); thisNode->release(); } break; case DOMLSParserFilter::FILTER_INTERRUPT: throw DOMLSException(DOMLSException::PARSE_ERR, XMLDOMMsg::LSParser_ParsingAborted, fMemoryManager); } } } } void DOMLSParserImpl::startElement(const XMLElementDecl& elemDecl , const unsigned int urlId , const XMLCh* const elemPrefix , const RefVectorOf& attrList , const XMLSize_t attrCount , const bool isEmpty , const bool isRoot) { if(fFilter) { // send the notification for the previous text node if(fFilterDelayedTextNodes && fFilterDelayedTextNodes->containsKey(fCurrentNode)) { fFilterDelayedTextNodes->removeKey(fCurrentNode); applyFilter(fCurrentNode); } } DOMNode* origParent = fCurrentParent; AbstractDOMParser::startElement(elemDecl, urlId, elemPrefix, attrList, attrCount, false, isRoot); if(fFilter) { // if the parent was already rejected, reject this too if(fFilterAction && fFilterAction->containsKey(origParent) && fFilterAction->get(origParent)==DOMLSParserFilter::FILTER_REJECT) fFilterAction->put(fCurrentNode, DOMLSParserFilter::FILTER_REJECT); else { DOMLSParserFilter::FilterAction action = fFilter->startElement((DOMElement*)fCurrentNode); switch(action) { case DOMLSParserFilter::FILTER_ACCEPT: break; case DOMLSParserFilter::FILTER_REJECT: case DOMLSParserFilter::FILTER_SKIP: if(fFilterAction==0) fFilterAction=new (fMemoryManager) ValueHashTableOf(7, fMemoryManager); fFilterAction->put(fCurrentNode, action); break; case DOMLSParserFilter::FILTER_INTERRUPT: throw DOMLSException(DOMLSException::PARSE_ERR, XMLDOMMsg::LSParser_ParsingAborted, fMemoryManager); } } } if(isEmpty) endElement(elemDecl, urlId, isRoot, elemPrefix); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/parsers/SAXParser.hpp0000644000175000017500000023715611360344373020510 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SAXParser.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_SAXPARSER_HPP) #define XERCESC_INCLUDE_GUARD_SAXPARSER_HPP #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN class DocumentHandler; class EntityResolver; class XMLPScanToken; class XMLScanner; class XMLValidator; class GrammarResolver; class XMLGrammarPool; class XMLEntityResolver; class XMLResourceIdentifier; class PSVIHandler; /** * This class implements the SAX 'Parser' interface and should be * used by applications wishing to parse the XML files using SAX. * It allows the client program to install SAX handlers for event * callbacks. * *

    It can be used to instantiate a validating or non-validating * parser, by setting a member flag.

    * * @deprecated This interface has been replaced by the SAX2 * interface, which includes Namespace support. * See SAX2XMLReader for more information. * * Note - XMLDocumentHandler calls, when used with SAXParser, will not provide correct namespace information. This is becaue the SAX parser does not support namespace aware processing. * * */ class PARSERS_EXPORT SAXParser : public XMemory , public Parser , public XMLDocumentHandler , public XMLErrorReporter , public XMLEntityHandler , public DocTypeHandler { public : // ----------------------------------------------------------------------- // Class types // ----------------------------------------------------------------------- /** ValScheme enum used in setValidationScheme * Val_Never: Do not report validation errors. * Val_Always: The parser will always report validation errors. * Val_Auto: The parser will report validation errors only if a grammar is specified. * * @see #setValidationScheme */ enum ValSchemes { Val_Never , Val_Always , Val_Auto }; // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- /** @name Constructors and Destructor */ //@{ /** Constructor with an instance of validator class to use for * validation. * @param valToAdopt Pointer to the validator instance to use. The * parser is responsible for freeing the memory. * @param manager Pointer to the memory manager to be used to * allocate objects. * @param gramPool The collection of cached grammars. */ SAXParser ( XMLValidator* const valToAdopt = 0 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager , XMLGrammarPool* const gramPool = 0 ); /** * Destructor */ ~SAXParser(); //@} // ----------------------------------------------------------------------- // Getter Methods // ----------------------------------------------------------------------- /** @name Getter methods */ //@{ /** * This method returns the installed document handler. Suitable * for 'lvalue' usages. * * @return The pointer to the installed document handler object. */ DocumentHandler* getDocumentHandler(); /** * This method returns the installed document handler. Suitable * only for 'rvalue' usages. * * @return A const pointer to the installed document handler object. */ const DocumentHandler* getDocumentHandler() const; /** * This method returns the installed entity resolver. Suitable * for 'lvalue' usages. * * @return The pointer to the installed entity resolver object. */ EntityResolver* getEntityResolver(); /** * This method returns the installed entity resolver. Suitable * for 'rvalue' usages. * * @return A const pointer to the installed entity resolver object. */ const EntityResolver* getEntityResolver() const; /** * This method returns the installed entity resolver. Suitable * for 'lvalue' usages. * * @return The pointer to the installed entity resolver object. */ XMLEntityResolver* getXMLEntityResolver(); /** * This method returns the installed entity resolver. Suitable * for 'rvalue' usages. * * @return A const pointer to the installed entity resolver object. */ const XMLEntityResolver* getXMLEntityResolver() const; /** * This method returns the installed error handler. Suitable * for 'lvalue' usages. * * @return The pointer to the installed error handler object. */ ErrorHandler* getErrorHandler(); /** * This method returns the installed error handler. Suitable * for 'rvalue' usages. * * @return A const pointer to the installed error handler object. */ const ErrorHandler* getErrorHandler() const; /** * This method returns the installed PSVI handler. Suitable * for 'lvalue' usages. * * @return The pointer to the installed PSVI handler object. */ PSVIHandler* getPSVIHandler(); /** * This method returns the installed PSVI handler. Suitable * for 'rvalue' usages. * * @return A const pointer to the installed PSVI handler object. */ const PSVIHandler* getPSVIHandler() const; /** * This method returns a reference to the parser's installed * validator. * * @return A const reference to the installed validator object. */ const XMLValidator& getValidator() const; /** * This method returns an enumerated value that indicates the current * validation scheme set on this parser. * * @return The ValSchemes value current set on this parser. * @see #setValidationScheme */ ValSchemes getValidationScheme() const; /** Get the 'do schema' flag * * This method returns the state of the parser's schema processing * flag. * * @return true, if the parser is currently configured to * understand schema, false otherwise. * * @see #setDoSchema */ bool getDoSchema() const; /** Get the 'full schema constraint checking' flag * * This method returns the state of the parser's full schema constraint * checking flag. * * @return true, if the parser is currently configured to * have full schema constraint checking, false otherwise. * * @see #setValidationSchemaFullChecking */ bool getValidationSchemaFullChecking() const; /** Get the 'identity constraint checking' flag * * This method returns the state of the parser's identity constraint * checking flag. * * @return true, if the parser is currently configured to * have identity constraint checking, false otherwise. * * @see #setIdentityConstraintChecking */ bool getIdentityConstraintChecking() const; /** Get error count from the last parse operation. * * This method returns the error count from the last parse * operation. Note that this count is actually stored in the * scanner, so this method simply returns what the * scanner reports. * * @return number of errors encountered during the latest * parse operation. */ int getErrorCount() const; /** * This method returns the state of the parser's namespace * handling capability. * * @return true, if the parser is currently configured to * understand namespaces, false otherwise. * * @see #setDoNamespaces */ bool getDoNamespaces() const; /** * This method returns the state of the parser's * exit-on-First-Fatal-Error flag. * * @return true, if the parser is currently configured to * exit on the first fatal error, false otherwise. * * @see #setExitOnFirstFatalError */ bool getExitOnFirstFatalError() const; /** * This method returns the state of the parser's * validation-constraint-fatal flag. * * @return true, if the parser is currently configured to * set validation constraint errors as fatal, false * otherwise. * * @see #setValidationConstraintFatal */ bool getValidationConstraintFatal() const; /** Get the set of Namespace/SchemaLocation that is specified externally. * * This method returns the list of Namespace/SchemaLocation that was * specified using setExternalSchemaLocation. * * The parser owns the returned string, and the memory allocated for * the returned string will be destroyed when the parser is deleted. * * To ensure accessibility of the returned information after the parser * is deleted, callers need to copy and store the returned information * somewhere else. * * @return a pointer to the list of Namespace/SchemaLocation that was * specified externally. The pointer spans the same life-time as * the parser. A null pointer is returned if nothing * was specified externally. * * @see #setExternalSchemaLocation(const XMLCh* const) */ XMLCh* getExternalSchemaLocation() const; /** Get the noNamespace SchemaLocation that is specified externally. * * This method returns the no target namespace XML Schema Location * that was specified using setExternalNoNamespaceSchemaLocation. * * The parser owns the returned string, and the memory allocated for * the returned string will be destroyed when the parser is deleted. * * To ensure accessibility of the returned information after the parser * is deleted, callers need to copy and store the returned information * somewhere else. * * @return a pointer to the no target namespace Schema Location that was * specified externally. The pointer spans the same life-time as * the parser. A null pointer is returned if nothing * was specified externally. * * @see #setExternalNoNamespaceSchemaLocation(const XMLCh* const) */ XMLCh* getExternalNoNamespaceSchemaLocation() const; /** Get the SecurityManager instance attached to this parser. * * This method returns the security manager * that was specified using setSecurityManager. * * The SecurityManager instance must have been specified by the application; * this should not be deleted until after the parser has been deleted (or * a new SecurityManager instance has been supplied to the parser). * * @return a pointer to the SecurityManager instance * specified externally. A null pointer is returned if nothing * was specified externally. * * @see #setSecurityManager(SecurityManager* const) */ SecurityManager* getSecurityManager() const; /** Get the raw buffer low water mark for this parser. * * If the number of available bytes in the raw buffer is less than * the low water mark the parser will attempt to read more data before * continuing parsing. By default the value for this parameter is 100 * bytes. You may want to set this parameter to 0 if you would like * the parser to parse the available data immediately without * potentially blocking while waiting for more date. * * @return current low water mark * * @see #setSecurityManager */ XMLSize_t getLowWaterMark() const; /** Get the 'Loading External DTD' flag * * This method returns the state of the parser's loading external DTD * flag. * * @return false, if the parser is currently configured to * ignore external DTD completely, true otherwise. * * @see #setLoadExternalDTD * @see #getValidationScheme */ bool getLoadExternalDTD() const; /** Get the 'Loading Schema' flag * * This method returns the state of the parser's loading schema * flag. * * @return true, if the parser is currently configured to * automatically load schemas that are not in the * grammar pool, false otherwise. * * @see #setLoadSchema */ bool getLoadSchema() const; /** Get the 'Grammar caching' flag * * This method returns the state of the parser's grammar caching when * parsing an XML document. * * @return true, if the parser is currently configured to * cache grammars, false otherwise. * * @see #cacheGrammarFromParse */ bool isCachingGrammarFromParse() const; /** Get the 'Use cached grammar' flag * * This method returns the state of the parser's use of cached grammar * when parsing an XML document. * * @return true, if the parser is currently configured to * use cached grammars, false otherwise. * * @see #useCachedGrammarInParse */ bool isUsingCachedGrammarInParse() const; /** * Get the 'calculate src offset flag' * * This method returns the state of the parser's src offset calculation * when parsing an XML document. * * @return true, if the parser is currently configured to * calculate src offsets, false otherwise. * * @see #setCalculateSrcOfs */ bool getCalculateSrcOfs() const; /** * Get the 'force standard uri flag' * * This method returns the state if the parser forces standard uri * * @return true, if the parser is currently configured to * force standard uri, i.e. malformed uri will be rejected. * * @see #setStandardUriConformant */ bool getStandardUriConformant() const; /** * Retrieve the grammar that is associated with the specified namespace key * * @param nameSpaceKey Namespace key * @return Grammar associated with the Namespace key. */ Grammar* getGrammar(const XMLCh* const nameSpaceKey); /** * Retrieve the grammar where the root element is declared. * * @return Grammar where root element declared */ Grammar* getRootGrammar(); /** * Returns the string corresponding to a URI id from the URI string pool. * * @param uriId id of the string in the URI string pool. * @return URI string corresponding to the URI id. */ const XMLCh* getURIText(unsigned int uriId) const; /** * Returns the current src offset within the input source. * To be used only while parsing is in progress. * * @return offset within the input source */ XMLFilePos getSrcOffset() const; /** Get the 'generate synthetic annotations' flag * * @return true, if the parser is currently configured to * generate synthetic annotations, false otherwise. * A synthetic XSAnnotation is created when a schema * component has non-schema attributes but has no * child annotations so that the non-schema attributes * can be recovered under PSVI. * * @see #setGenerateSyntheticAnnotations */ bool getGenerateSyntheticAnnotations() const; /** Get the 'validate annotations' flag * * @return true, if the parser is currently configured to * validate annotations, false otherwise. * * @see #setValidateAnnotations */ bool getValidateAnnotations() const; /** Get the 'ignore cached DTD grammar' flag * * @return true, if the parser is currently configured to * ignore cached DTD, false otherwise. * * @see #setIgnoreCachedDTD */ bool getIgnoreCachedDTD() const; /** Get the 'ignore annotations' flag * * @return true, if the parser is currently configured to * ignore annotations, false otherwise. * * @see #setIgnoreAnnotations */ bool getIgnoreAnnotations() const; /** Get the 'disable default entity resolution' flag * * @return true, if the parser is currently configured to * not perform default entity resolution, false otherwise. * * @see #setDisableDefaultEntityResolution */ bool getDisableDefaultEntityResolution() const; /** Get the 'skip DTD validation' flag * * @return true, if the parser is currently configured to * skip DTD validation, false otherwise. * * @see #setSkipDTDValidation */ bool getSkipDTDValidation() const; /** Get the 'handle multiple schema imports' flag * * @return true, if the parser is currently configured to * import multiple schemas with the same namespace, false otherwise. * * @see #setHandleMultipleImports */ bool getHandleMultipleImports() const; //@} // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- /** @name Setter methods */ //@{ /** set the 'generate synthetic annotations' flag * * @param newValue The value for specifying whether Synthetic Annotations * should be generated or not. * A synthetic XSAnnotation is created when a schema * component has non-schema attributes but has no * child annotations. * * @see #getGenerateSyntheticAnnotations */ void setGenerateSyntheticAnnotations(const bool newValue); /** set the 'validate annotations' flag * * @param newValue The value for specifying whether annotations * should be validate or not. * * @see #getValidateAnnotations */ void setValidateAnnotations(const bool newValue); /** * This method allows users to enable or disable the parser's * namespace processing. When set to true, parser starts enforcing * all the constraints / rules specified by the NameSpace * specification. * *

    The parser's default state is: false.

    * * @param newState The value specifying whether NameSpace rules should * be enforced or not. * * @see #getDoNamespaces */ void setDoNamespaces(const bool newState); /** * This method allows users to set the validation scheme to be used * by this parser. The value is one of the ValSchemes enumerated values * defined by this class: * *
    Val_Never - turn off validation *
    Val_Always - turn on validation *
    Val_Auto - turn on validation if any internal/external * DTD subset have been seen * *

    The parser's default state is: Val_Never.

    * * @param newScheme The new validation scheme to use. * * @see #getValidationScheme */ void setValidationScheme(const ValSchemes newScheme); /** Set the 'schema support' flag * * This method allows users to enable or disable the parser's * schema processing. When set to false, parser will not process * any schema found. * * The parser's default state is: false. * * Note: If set to true, namespace processing must also be turned on. * * @param newState The value specifying whether schema support should * be enforced or not. * * @see #getDoSchema */ void setDoSchema(const bool newState); /** * This method allows the user to turn full Schema constraint checking on/off. * Only takes effect if Schema validation is enabled. * If turned off, partial constraint checking is done. * * Full schema constraint checking includes those checking that may * be time-consuming or memory intensive. Currently, particle unique * attribution constraint checking and particle derivation restriction checking * are controlled by this option. * * The parser's default state is: false. * * @param schemaFullChecking True to turn on full schema constraint checking. * * @see #getValidationSchemaFullChecking */ void setValidationSchemaFullChecking(const bool schemaFullChecking); /** * This method allows the user to turn identity constraint checking on/off. * Only takes effect if Schema validation is enabled. * If turned off, identity constraint checking is not done. * * The parser's default state is: true. * * @param identityConstraintChecking True to turn on identity constraint checking. * * @see #getIdentityConstraintChecking */ void setIdentityConstraintChecking(const bool identityConstraintChecking); /** * This method allows users to set the parser's behaviour when it * encounters the first fatal error. If set to true, the parser * will exit at the first fatal error. If false, then it will * report the error and continue processing. * *

    The default value is 'true' and the parser exits on the * first fatal error.

    * * @param newState The value specifying whether the parser should * continue or exit when it encounters the first * fatal error. * * @see #getExitOnFirstFatalError */ void setExitOnFirstFatalError(const bool newState); /** * This method allows users to set the parser's behaviour when it * encounters a validation constraint error. If set to true, and the * the parser will treat validation error as fatal and will exit depends on the * state of "getExitOnFirstFatalError". If false, then it will * report the error and continue processing. * * Note: setting this true does not mean the validation error will be printed with * the word "Fatal Error". It is still printed as "Error", but the parser * will exit if "setExitOnFirstFatalError" is set to true. * *

    The default value is 'false'.

    * * @param newState If true, the parser will exit if "setExitOnFirstFatalError" * is set to true. * * @see #getValidationConstraintFatal * @see #setExitOnFirstFatalError */ void setValidationConstraintFatal(const bool newState); /** * This method allows the user to specify a list of schemas to use. * If the targetNamespace of a schema specified using this method matches * the targetNamespace of a schema occurring in the instance document in * the schemaLocation attribute, or if the targetNamespace matches the * namespace attribute of the "import" element, the schema specified by the * user using this method will be used (i.e., the schemaLocation attribute * in the instance document or on the "import" element will be effectively ignored). * * If this method is called more than once, only the last one takes effect. * * The syntax is the same as for schemaLocation attributes in instance * documents: e.g, "http://www.example.com file_name.xsd". The user can * specify more than one XML Schema in the list. * * @param schemaLocation the list of schemas to use * * @see #getExternalSchemaLocation */ void setExternalSchemaLocation(const XMLCh* const schemaLocation); /** * This method is same as setExternalSchemaLocation(const XMLCh* const). * It takes native char string as parameter * * @param schemaLocation the list of schemas to use * * @see #setExternalSchemaLocation(const XMLCh* const) */ void setExternalSchemaLocation(const char* const schemaLocation); /** * This method allows the user to specify the no target namespace XML * Schema Location externally. If specified, the instance document's * noNamespaceSchemaLocation attribute will be effectively ignored. * * If this method is called more than once, only the last one takes effect. * * The syntax is the same as for the noNamespaceSchemaLocation attribute * that may occur in an instance document: e.g."file_name.xsd". * * @param noNamespaceSchemaLocation the XML Schema Location with no target namespace * * @see #getExternalNoNamespaceSchemaLocation */ void setExternalNoNamespaceSchemaLocation(const XMLCh* const noNamespaceSchemaLocation); /** * This method is same as setExternalNoNamespaceSchemaLocation(const XMLCh* const). * It takes native char string as parameter * * @param noNamespaceSchemaLocation the XML Schema Location with no target namespace * * @see #setExternalNoNamespaceSchemaLocation(const XMLCh* const) */ void setExternalNoNamespaceSchemaLocation(const char* const noNamespaceSchemaLocation); /** * This allows an application to set a SecurityManager on * the parser; this object stores information that various * components use to limit their consumption of system * resources while processing documents. * * If this method is called more than once, only the last one takes effect. * It may not be reset during a parse. * * * @param securityManager the SecurityManager instance to * be used by this parser * * @see #getSecurityManager */ void setSecurityManager(SecurityManager* const securityManager); /** Set the raw buffer low water mark for this parser. * * If the number of available bytes in the raw buffer is less than * the low water mark the parser will attempt to read more data before * continuing parsing. By default the value for this parameter is 100 * bytes. You may want to set this parameter to 0 if you would like * the parser to parse the available data immediately without * potentially blocking while waiting for more date. * * @param lwm new low water mark * * @see #getSecurityManager */ void setLowWaterMark(XMLSize_t lwm); /** Set the 'Loading External DTD' flag * * This method allows users to enable or disable the loading of external DTD. * When set to false, the parser will ignore any external DTD completely * if the validationScheme is set to Val_Never. * * The parser's default state is: true. * * This flag is ignored if the validationScheme is set to Val_Always or Val_Auto. * * @param newState The value specifying whether external DTD should * be loaded or not. * * @see #getLoadExternalDTD * @see #setValidationScheme */ void setLoadExternalDTD(const bool newState); /** Set the 'Loading Schema' flag * * This method allows users to enable or disable the loading of schemas. * When set to false, the parser not attempt to load schemas beyond * querying the grammar pool for them. * * The parser's default state is: true. * * @param newState The value specifying whether schemas should * be loaded if they're not found in the grammar * pool. * * @see #getLoadSchema * @see #setDoSchema */ void setLoadSchema(const bool newState); /** Set the 'Grammar caching' flag * * This method allows users to enable or disable caching of grammar when * parsing XML documents. When set to true, the parser will cache the * resulting grammar for use in subsequent parses. * * If the flag is set to true, the 'Use cached grammar' flag will also be * set to true. * * The parser's default state is: false. * * @param newState The value specifying whether we should cache grammars * or not. * * @see #isCachingGrammarFromParse * @see #useCachedGrammarInParse */ void cacheGrammarFromParse(const bool newState); /** Set the 'Use cached grammar' flag * * This method allows users to enable or disable the use of cached * grammars. When set to true, the parser will use the cached grammar, * instead of building the grammar from scratch, to validate XML * documents. * * If the 'Grammar caching' flag is set to true, this method ignores the * value passed in. * * The parser's default state is: false. * * @param newState The value specifying whether we should use the cached * grammar or not. * * @see #isUsingCachedGrammarInParse * @see #cacheGrammarFromParse */ void useCachedGrammarInParse(const bool newState); /** Enable/disable src offset calculation * * This method allows users to enable/disable src offset calculation. * Disabling the calculation will improve performance. * * The parser's default state is: false. * * @param newState The value specifying whether we should enable or * disable src offset calculation * * @see #getCalculateSrcOfs */ void setCalculateSrcOfs(const bool newState); /** Force standard uri * * This method allows users to tell the parser to force standard uri conformance. * * The parser's default state is: false. * * @param newState The value specifying whether the parser should reject malformed URI. * * @see #getStandardUriConformant */ void setStandardUriConformant(const bool newState); /** Set the scanner to use when scanning the XML document * * This method allows users to set the scanner to use * when scanning a given XML document. * * @param scannerName The name of the desired scanner */ void useScanner(const XMLCh* const scannerName); /** Set maximum input buffer size * * This method allows users to limit the size of buffers used in parsing * XML character data. The effect of setting this size is to limit the * size of a ContentHandler::characters() call. * * The parser's default input buffer size is 1 megabyte. * * @param bufferSize The maximum input buffer size */ void setInputBufferSize(const XMLSize_t bufferSize); /** Set the 'ignore cached DTD grammar' flag * * This method gives users the option to ignore a cached DTD grammar, when * an XML document contains both an internal and external DTD, and the use * cached grammar from parse option is enabled. Currently, we do not allow * using cached DTD grammar when an internal subset is present in the * document. This option will only affect the behavior of the parser when * an internal and external DTD both exist in a document (i.e. no effect * if document has no internal subset). * * The parser's default state is false * * @param newValue The state to set */ void setIgnoreCachedDTD(const bool newValue); /** Set the 'ignore annotation' flag * * This method gives users the option to not generate XSAnnotations * when "traversing" a schema. * * The parser's default state is false * * @param newValue The state to set */ void setIgnoreAnnotations(const bool newValue); /** Set the 'disable default entity resolution' flag * * This method gives users the option to not perform default entity * resolution. If the user's resolveEntity method returns NULL the * parser will try to resolve the entity on its own. When this option * is set to true, the parser will not attempt to resolve the entity * when the resolveEntity method returns NULL. * * The parser's default state is false * * @param newValue The state to set * * @see #EntityResolver */ void setDisableDefaultEntityResolution(const bool newValue); /** Set the 'skip DTD validation' flag * * This method gives users the option to skip DTD validation only when * schema validation is on (i.e. when performing validation, we will * ignore the DTD, except for entities, when schema validation is enabled). * * NOTE: This option is ignored if schema validation is disabled. * * The parser's default state is false * * @param newValue The state to set */ void setSkipDTDValidation(const bool newValue); /** Set the 'handle multiple schema imports' flag * * This method gives users the ability to import multiple schemas that * have the same namespace. * * NOTE: This option is ignored if schema validation is disabled. * * The parser's default state is false * * @param newValue The state to set */ void setHandleMultipleImports(const bool newValue); //@} // ----------------------------------------------------------------------- // Advanced document handler list maintenance methods // ----------------------------------------------------------------------- /** @name Advanced document handler list maintenance methods */ //@{ /** * This method installs the specified 'advanced' document callback * handler, thereby allowing the user to customize the processing, * if they choose to do so. Any number of advanced callback handlers * maybe installed. * *

    The methods in the advanced callback interface represent * Xerces-C extensions. There is no specification for this interface.

    * * Note - XMLDocumentHandler calls, when used with SAXParser, will not provide correct namespace information. This is becaue the SAX parser does not support namespace aware processing. * * @param toInstall A pointer to the users advanced callback handler. * * @see #removeAdvDocHandler */ void installAdvDocHandler(XMLDocumentHandler* const toInstall); /** * This method removes the 'advanced' document handler callback from * the underlying parser scanner. If no handler is installed, advanced * callbacks are not invoked by the scanner. * @param toRemove A pointer to the advanced callback handler which * should be removed. * * Note - XMLDocumentHandler calls, when used with SAXParser, will not provide correct namespace information. This is becaue the SAX parser does not support namespace aware processing. * * @see #installAdvDocHandler */ bool removeAdvDocHandler(XMLDocumentHandler* const toRemove); //@} // ----------------------------------------------------------------------- // Progressive scan methods // ----------------------------------------------------------------------- /** @name Progressive scan methods */ //@{ /** Begin a progressive parse operation * * This method is used to start a progressive parse on a XML file. * To continue parsing, subsequent calls must be to the parseNext * method. * * It scans through the prolog and returns a token to be used on * subsequent scanNext() calls. If the return value is true, then the * token is legal and ready for further use. If it returns false, then * the scan of the prolog failed and the token is not going to work on * subsequent scanNext() calls. * * @param systemId A pointer to a Unicode string representing the path * to the XML file to be parsed. * @param toFill A token maintaing state information to maintain * internal consistency between invocation of 'parseNext' * calls. * * @return 'true', if successful in parsing the prolog. It indicates the * user can go ahead with parsing the rest of the file. It * returns 'false' to indicate that the parser could parse the * prolog (which means the token will not be valid.) * * @see #parseNext * @see #parseFirst(char*,...) * @see #parseFirst(InputSource&,...) */ bool parseFirst ( const XMLCh* const systemId , XMLPScanToken& toFill ); /** Begin a progressive parse operation * * This method is used to start a progressive parse on a XML file. * To continue parsing, subsequent calls must be to the parseNext * method. * * It scans through the prolog and returns a token to be used on * subsequent scanNext() calls. If the return value is true, then the * token is legal and ready for further use. If it returns false, then * the scan of the prolog failed and the token is not going to work on * subsequent scanNext() calls. * * @param systemId A pointer to a regular native string representing * the path to the XML file to be parsed. * @param toFill A token maintaing state information to maintain * internal consistency between invocation of 'parseNext' * calls. * * @return 'true', if successful in parsing the prolog. It indicates the * user can go ahead with parsing the rest of the file. It * returns 'false' to indicate that the parser could not parse * the prolog. * * @see #parseNext * @see #parseFirst(XMLCh*,...) * @see #parseFirst(InputSource&,...) */ bool parseFirst ( const char* const systemId , XMLPScanToken& toFill ); /** Begin a progressive parse operation * * This method is used to start a progressive parse on a XML file. * To continue parsing, subsequent calls must be to the parseNext * method. * * It scans through the prolog and returns a token to be used on * subsequent scanNext() calls. If the return value is true, then the * token is legal and ready for further use. If it returns false, then * the scan of the prolog failed and the token is not going to work on * subsequent scanNext() calls. * * @param source A const reference to the InputSource object which * points to the XML file to be parsed. * @param toFill A token maintaing state information to maintain * internal consistency between invocation of 'parseNext' * calls. * * @return 'true', if successful in parsing the prolog. It indicates the * user can go ahead with parsing the rest of the file. It * returns 'false' to indicate that the parser could not parse * the prolog. * * @see #parseNext * @see #parseFirst(XMLCh*,...) * @see #parseFirst(char*,...) */ bool parseFirst ( const InputSource& source , XMLPScanToken& toFill ); /** Continue a progressive parse operation * * This method is used to continue with progressive parsing of * XML files started by a call to 'parseFirst' method. * * It parses the XML file and stops as soon as it comes across * a XML token (as defined in the XML specification). Relevant * callback handlers are invoked as required by the SAX * specification. * * @param token A token maintaing state information to maintain * internal consistency between invocation of 'parseNext' * calls. * * @return 'true', if successful in parsing the next XML token. * It indicates the user can go ahead with parsing the rest * of the file. It returns 'false' to indicate that the parser * could not find next token as per the XML specification * production rule. * * @see #parseFirst(XMLCh*,...) * @see #parseFirst(char*,...) * @see #parseFirst(InputSource&,...) */ bool parseNext(XMLPScanToken& token); /** Reset the parser after a progressive parse * * If a progressive parse loop exits before the end of the document * is reached, the parser has no way of knowing this. So it will leave * open any files or sockets or memory buffers that were in use at * the time that the parse loop exited. * * The next parse operation will cause these open files and such to * be closed, but the next parse operation might occur at some unknown * future point. To avoid this problem, you should reset the parser if * you exit the loop early. * * If you exited because of an error, then this cleanup will be done * for you. Its only when you exit the file prematurely of your own * accord, because you've found what you wanted in the file most * likely. * * @param token A token maintaing state information to maintain * internal consistency between invocation of 'parseNext' * calls. */ void parseReset(XMLPScanToken& token); //@} // ----------------------------------------------------------------------- // Grammar preparsing interface // ----------------------------------------------------------------------- /** @name Implementation of Grammar preparsing interface's. */ //@{ /** * Preparse schema grammar (XML Schema, DTD, etc.) via an input source * object. * * This method invokes the preparsing process on a schema grammar XML * file specified by the SAX InputSource parameter. If the 'toCache' flag * is enabled, the parser will cache the grammars for re-use. If a grammar * key is found in the pool, no caching of any grammar will take place. * * * @param source A const reference to the SAX InputSource object which * points to the schema grammar file to be preparsed. * @param grammarType The grammar type (Schema or DTD). * @param toCache If true, we cache the preparsed grammar, * otherwise, no caching. Default is false. * @return The preparsed schema grammar object (SchemaGrammar or * DTDGrammar). That grammar object is owned by the parser. * * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception XMLException An exception from the parser or client * handler code. * @exception DOMException A DOM exception as per DOM spec. * * @see InputSource#InputSource */ Grammar* loadGrammar(const InputSource& source, const Grammar::GrammarType grammarType, const bool toCache = false); /** * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL * * This method invokes the preparsing process on a schema grammar XML * file specified by the file path parameter. If the 'toCache' flag * is enabled, the parser will cache the grammars for re-use. If a grammar * key is found in the pool, no caching of any grammar will take place. * * * @param systemId A const XMLCh pointer to the Unicode string which * contains the path to the XML grammar file to be * preparsed. * @param grammarType The grammar type (Schema or DTD). * @param toCache If true, we cache the preparsed grammar, * otherwise, no caching. Default is false. * @return The preparsed schema grammar object (SchemaGrammar or * DTDGrammar). That grammar object is owned by the parser. * * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception XMLException An exception from the parser or client * handler code. * @exception DOMException A DOM exception as per DOM spec. */ Grammar* loadGrammar(const XMLCh* const systemId, const Grammar::GrammarType grammarType, const bool toCache = false); /** * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL * * This method invokes the preparsing process on a schema grammar XML * file specified by the file path parameter. If the 'toCache' flag * is enabled, the parser will cache the grammars for re-use. If a grammar * key is found in the pool, no caching of any grammar will take place. * * * @param systemId A const char pointer to a native string which contains * the path to the XML grammar file to be preparsed. * @param grammarType The grammar type (Schema or DTD). * @param toCache If true, we cache the preparsed grammar, * otherwise, no caching. Default is false. * @return The preparsed schema grammar object (SchemaGrammar or * DTDGrammar). That grammar object is owned by the parser. * * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception XMLException An exception from the parser or client * handler code. * @exception DOMException A DOM exception as per DOM spec. */ Grammar* loadGrammar(const char* const systemId, const Grammar::GrammarType grammarType, const bool toCache = false); /** * This method allows the user to reset the pool of cached grammars. */ void resetCachedGrammarPool(); //@} // ----------------------------------------------------------------------- // Implementation of the SAX Parser interface // ----------------------------------------------------------------------- /** @name Implementation of SAX 1.0 Parser interface's. */ //@{ /** * This method invokes the parsing process on the XML file specified * by the InputSource parameter. * * @param source A const reference to the InputSource object which * points to the XML file to be parsed. * * @see Parser#parse(InputSource) */ virtual void parse(const InputSource& source); /** * This method invokes the parsing process on the XML file specified by * the Unicode string parameter 'systemId'. * * @param systemId A const XMLCh pointer to the Unicode string which * contains the path to the XML file to be parsed. * * @see Parser#parse(XMLCh*) */ virtual void parse(const XMLCh* const systemId); /** * This method invokes the parsing process on the XML file specified by * the native char* string parameter 'systemId'. * * @param systemId A const char pointer to a native string which * contains the path to the XML file to be parsed. */ virtual void parse(const char* const systemId); /** * This method installs the user specified SAX Document Handler * callback function on parser. * * @param handler A pointer to the document handler to be called * when the parser comes across 'document' events * as per the SAX specification. * * @see Parser#parse(char*) */ virtual void setDocumentHandler(DocumentHandler* const handler); /** * This method installs the user specified DTD handler on the parser. * * @param handler A pointer to the DTD handler to be called * when the parser comes across 'DTD' events * as per the SAX specification. * * @see Parser#setDTDHandler */ virtual void setDTDHandler(DTDHandler* const handler); /** * This method installs the user specified error handler on * the parser. * * @param handler A pointer to the error handler to be called * when the parser comes across 'error' events * as per the SAX specification. * * @see Parser#setErrorHandler */ virtual void setErrorHandler(ErrorHandler* const handler); /** * This method installs the user specified PSVI handler on * the parser. * * @param handler A pointer to the PSVI handler to be called * when the parser comes across 'PSVI' events * as per the schema specification. * * @see Parser#setPSVIHandler */ virtual void setPSVIHandler(PSVIHandler* const handler); /** * This method installs the user specified entity resolver on the * parser. It allows applications to trap and redirect calls to * external entities. * * Any previously set entity resolver is merely dropped, since the parser * does not own them. If both setEntityResolver and setXMLEntityResolver * are called, then the last one is used. * * @param resolver A pointer to the entity resolver to be called * when the parser comes across references to * entities in the XML file. * * @see Parser#setEntityResolver */ virtual void setEntityResolver(EntityResolver* const resolver); /** * This method installs the user specified entity resolver on the * parser. It allows applications to trap and redirect calls to * external entities. * * Any previously set entity resolver is merely dropped, since the parser * does not own them. If both setEntityResolver and setXMLEntityResolver * are called, then the last one is used. * * @param resolver A pointer to the entity resolver to be called * when the parser comes across references to * entities in the XML file. * * @see Parser#setXMLEntityResolver */ virtual void setXMLEntityResolver(XMLEntityResolver* const resolver); //@} // ----------------------------------------------------------------------- // Implementation of the XMLDocumentHandler interface // ----------------------------------------------------------------------- /** @name Implementation of the XMLDocumentHandler Interface. */ //@{ /** * This method is used to report all the characters scanned * by the parser. The driver will invoke the 'characters' * method of the user installed SAX Document Handler. * *

    If any advanced callback handlers are installed, the * corresponding 'docCharacters' method will also be invoked.

    * * @param chars A const pointer to a Unicode string representing the * character data. * @param length The length of the Unicode string returned in 'chars'. * @param cdataSection A flag indicating if the characters represent * content from the CDATA section. * @see DocumentHandler#characters */ virtual void docCharacters ( const XMLCh* const chars , const XMLSize_t length , const bool cdataSection ); /** * This method is used to report any comments scanned by the parser. * This method is a no-op unless, unless an advanced callback handler * is installed, in which case the corresponding 'docComment' method * is invoked. * * @param comment A const pointer to a null terminated Unicode * string representing the comment text. */ virtual void docComment ( const XMLCh* const comment ); /** * This method is used to report any PI scanned by the parser. * *

    Any PI's occurring before any 'content' are not reported * to any SAX handler as per the specification. However, all * PI's within content are reported via the SAX Document Handler's * 'processingInstruction' method. * *

    If any advanced callback handlers are installed, the * corresponding 'docPI' method will be invoked.

    * * @param target A const pointer to a Unicode string representing the * target of the PI declaration. * @param data A const pointer to a Unicode string representing the * data of the PI declaration. See the PI production rule * in the XML specification for details. * * @see DocumentHandler#processingInstruction */ virtual void docPI ( const XMLCh* const target , const XMLCh* const data ); /** * This method is used to indicate the end of root element * was just scanned by the parser. Corresponding 'endDocument' * method of the user installed SAX Document Handler will also * be invoked. * *

    In addition, if any advanced callback handlers are installed, * the corresponding 'endDocument' method is invoked.

    * * @see DocumentHandler#endDocument */ virtual void endDocument(); /** * This method is used to indicate the end tag of an element. * The driver will invoke the corresponding 'endElement' method of * the SAX Document Handler interface. * *

    If any advanced callback handlers are installed, the * corresponding 'endElement' method is also invoked.

    * * @param elemDecl A const reference to the object containing element * declaration information. * @param urlId An id referring to the namespace prefix, if * namespaces setting is switched on. * @param isRoot A flag indicating whether this element was the * root element. * @param elemPrefix A const pointer to a Unicode string containing * the namespace prefix for this element. Applicable * only when namespace processing is enabled. * @see DocumentHandler#endElement */ virtual void endElement ( const XMLElementDecl& elemDecl , const unsigned int urlId , const bool isRoot , const XMLCh* const elemPrefix ); /** * This method is used to indicate that an end of an entity reference * was just scanned. * *

    If any advanced callback handlers are installed, the * corresponding 'endEntityReference' method is invoked.

    * * @param entDecl A const reference to the object containing the * entity declaration information. */ virtual void endEntityReference ( const XMLEntityDecl& entDecl ); /** * This method is used to report all the whitespace characters, * which are determined to be 'ignorable'. This distinction * between characters is only made, if validation is enabled. * Corresponding 'ignorableWhitespace' method of the user installed * SAX Document Handler interface is called. * *

    Any whitespace before content is not reported to the SAX * Document Handler method, as per the SAX specification. * However, if any advanced callback handlers are installed, the * corresponding 'ignorableWhitespace' method is invoked.

    * * @param chars A const pointer to a Unicode string representing the * ignorable whitespace character data. * @param length The length of the Unicode string 'chars'. * @param cdataSection A flag indicating if the characters represent * content from the CDATA section. * @see DocumentHandler#ignorableWhitespace */ virtual void ignorableWhitespace ( const XMLCh* const chars , const XMLSize_t length , const bool cdataSection ); /** * This method allows the user installed Document Handler and * any advanced callback handlers to 'reset' themselves. */ virtual void resetDocument(); /** * This method is used to report the start of the parsing process. * The corresponding user installed SAX Document Handler's method * 'startDocument' is invoked. * *

    If any advanced callback handlers are installed, then the * corresponding 'startDocument' method is also called.

    * * @see DocumentHandler#startDocument */ virtual void startDocument(); /** * This method is used to report the start of an element. It is * called at the end of the element, by which time all attributes * specified are also parsed. The corresponding user installed * SAX Document Handler's method 'startElement' is invoked. * *

    If any advanced callback handlers are installed, then the * corresponding 'startElement' method is also called.

    * * @param elemDecl A const reference to the object containing element * declaration information. * @param urlId An id referring to the namespace prefix, if * namespaces setting is switched on. * @param elemPrefix A const pointer to a Unicode string containing * the namespace prefix for this element. Applicable * only when namespace processing is enabled. * @param attrList A const reference to the object containing the * list of attributes just scanned for this element. * @param attrCount A count of number of attributes in the list * specified by the parameter 'attrList'. * @param isEmpty A flag indicating whether this is an empty element * or not. * @param isRoot A flag indicating whether this element was the * root element. * @see DocumentHandler#startElement */ virtual void startElement ( const XMLElementDecl& elemDecl , const unsigned int urlId , const XMLCh* const elemPrefix , const RefVectorOf& attrList , const XMLSize_t attrCount , const bool isEmpty , const bool isRoot ); /** * This method is used to indicate the start of an entity reference. * *

    If any advanced callback handlers are installed, the * corresponding 'endEntityReference' method is invoked.

    * * @param entDecl A const reference to the object containing the * entity declaration information. */ virtual void startEntityReference ( const XMLEntityDecl& entDecl ); /** * This method is used to report the XML decl scanned by the parser. * Refer to the XML specification to see the meaning of parameters. * * This method is a no-op for this SAX driver * implementation. * * @param versionStr A const pointer to a Unicode string representing * version string value. * @param encodingStr A const pointer to a Unicode string representing * the encoding string value. * @param standaloneStr A const pointer to a Unicode string * representing the standalone string value. * @param actualEncodingStr A const pointer to a Unicode string * representing the actual encoding string * value. */ virtual void XMLDecl ( const XMLCh* const versionStr , const XMLCh* const encodingStr , const XMLCh* const standaloneStr , const XMLCh* const actualEncodingStr ); //@} // ----------------------------------------------------------------------- // Implementation of the XMLErrorReporter interface // ----------------------------------------------------------------------- /** @name Implementation of the XMLErrorReporter Interface. */ //@{ /** * This method is used to report back errors found while parsing the * XML file. The driver will call the corresponding user installed * SAX Error Handler methods: 'fatal', 'error', 'warning' depending * on the severity of the error. This classification is defined by * the XML specification. * * @param errCode An integer code for the error. * @param msgDomain A const pointer to an Unicode string representing * the message domain to use. * @param errType An enumeration classifying the severity of the error. * @param errorText A const pointer to an Unicode string representing * the text of the error message. * @param systemId A const pointer to an Unicode string representing * the system id of the XML file where this error * was discovered. * @param publicId A const pointer to an Unicode string representing * the public id of the XML file where this error * was discovered. * @param lineNum The line number where the error occurred. * @param colNum The column number where the error occurred. * @see ErrorHandler */ virtual void error ( const unsigned int errCode , const XMLCh* const msgDomain , const XMLErrorReporter::ErrTypes errType , const XMLCh* const errorText , const XMLCh* const systemId , const XMLCh* const publicId , const XMLFileLoc lineNum , const XMLFileLoc colNum ); /** * This method allows the user installed Error Handler * callback to 'reset' itself. * * This method is a no-op for this SAX driver * implementation. * */ virtual void resetErrors(); //@} // ----------------------------------------------------------------------- // Implementation of the XMLEntityHandler interface // ----------------------------------------------------------------------- /** @name Implementation of the XMLEntityHandler Interface. */ //@{ /** * This method is used to indicate the end of parsing of an external * entity file. * * This method is a no-op for this SAX driver * implementation. * * @param inputSource A const reference to the InputSource object * which points to the XML file being parsed. * @see InputSource */ virtual void endInputSource(const InputSource& inputSource); /** * This method allows an installed XMLEntityHandler to further * process any system id's of external entities encountered in * the XML file being parsed, such as redirection etc. * * This method always returns 'false' * for this SAX driver implementation. * * @param systemId A const pointer to an Unicode string representing * the system id scanned by the parser. * @param toFill A pointer to a buffer in which the application * processed system id is stored. * @return 'true', if any processing is done, 'false' otherwise. */ virtual bool expandSystemId ( const XMLCh* const systemId , XMLBuffer& toFill ); /** * This method allows the installed XMLEntityHandler to reset * itself. * * This method is a no-op for this SAX driver * implementation. */ virtual void resetEntities(); /** Resolve a public/system id * * This method allows a user installed entity handler to further * process any pointers to external entities. The applications can * implement 'redirection' via this callback. * * @param resourceIdentifier An object containing the type of * resource to be resolved and the associated data members * corresponding to this type. * @return The value returned by the user installed resolveEntity * method or NULL otherwise to indicate no processing was done. * The returned InputSource is owned by the parser which is * responsible to clean up the memory. * @see XMLEntityHandler * @see XMLEntityResolver */ virtual InputSource* resolveEntity ( XMLResourceIdentifier* resourceIdentifier ); /** * This method is used to indicate the start of parsing an * external entity file. * * This method is a no-op for this SAX driver * implementation. * * @param inputSource A const reference to the InputSource object * which points to the external entity * being parsed. */ virtual void startInputSource(const InputSource& inputSource); //@} // ----------------------------------------------------------------------- // Implementation of the Deprecated DocTypeHandler Interface // ----------------------------------------------------------------------- /** @name Implementation of the deprecated DocTypeHandler Interface */ //@{ /** * This method is used to report an attribute definition. * * This method is a no-op for this SAX * driver implementation. * * @param elemDecl A const reference to the object containing information * about the element whose attribute definition was just * parsed. * @param attDef A const reference to the object containing information * attribute definition. * @param ignore The flag indicating whether this attribute definition * was ignored by the parser or not. */ virtual void attDef ( const DTDElementDecl& elemDecl , const DTDAttDef& attDef , const bool ignore ); /** * This method is used to report a comment occurring within the DTD. * * This method is a no-op for this SAX driver * implementation. * * @param comment A const pointer to a Unicode string representing the * text of the comment just parsed. */ virtual void doctypeComment ( const XMLCh* const comment ); /** * This method is used to report the DOCTYPE declaration. * * This method is a no-op for this SAX driver * implementation. * * @param elemDecl A const reference to the object containing information * about the root element definition declaration of the * XML document being parsed. * @param publicId A const pointer to a Unicode string representing the * public id of the DTD file. * @param systemId A const pointer to a Unicode string representing the * system id of the DTD file. * @param hasIntSubset A flag indicating if this XML file contains any * internal subset. * @param hasExtSubset A flag indicating if this XML file contains any * external subset. Default is false. */ virtual void doctypeDecl ( const DTDElementDecl& elemDecl , const XMLCh* const publicId , const XMLCh* const systemId , const bool hasIntSubset , const bool hasExtSubset = false ); /** * This method is used to report any PI declarations * occurring inside the DTD definition block. * * This method is a no-op for this SAX driver * implementation. * * @param target A const pointer to a Unicode string representing the * target of the PI declaration. * @param data A const pointer to a Unicode string representing the * data of the PI declaration. See the PI production rule * in the XML specification for details. */ virtual void doctypePI ( const XMLCh* const target , const XMLCh* const data ); /** * This method is used to report any whitespaces * occurring inside the DTD definition block. * * This method is a no-op for this SAX driver * implementation. * * @param chars A const pointer to a Unicode string representing the * whitespace characters. * @param length The length of the whitespace Unicode string. */ virtual void doctypeWhitespace ( const XMLCh* const chars , const XMLSize_t length ); /** * This method is used to report an element declarations * successfully scanned by the parser. * * This method is a no-op for this SAX driver * implementation. * * @param decl A const reference to the object containing element * declaration information. * @param isIgnored The flag indicating whether this definition was * ignored by the parser or not. */ virtual void elementDecl ( const DTDElementDecl& decl , const bool isIgnored ); /** * This method is used to report the end of an attribute * list declaration for an element. * * This method is a no-op for this SAX driver * implementation. * * @param elemDecl A const reference to the object containing element * declaration information. */ virtual void endAttList ( const DTDElementDecl& elemDecl ); /** * This method is used to report the end of the internal subset. * * This method is a no-op for this SAX driver * implementation. */ virtual void endIntSubset(); /** * This method is used to report the end of the external subset. * * This method is a no-op for this SAX driver * implementation. */ virtual void endExtSubset(); /** * This method is used to report any entity declarations. * For unparsed entities, this driver will invoke the * SAX DTDHandler::unparsedEntityDecl callback. * * @param entityDecl A const reference to the object containing * the entity declaration information. * @param isPEDecl The flag indicating whether this was a * parameter entity declaration or not. * @param isIgnored The flag indicating whether this definition * was ignored by the parser or not. * * @see DTDHandler#unparsedEntityDecl */ virtual void entityDecl ( const DTDEntityDecl& entityDecl , const bool isPEDecl , const bool isIgnored ); /** * This method allows the user installed DTD handler to * reset itself. */ virtual void resetDocType(); /** * This method is used to report any notation declarations. * If there is a user installed DTDHandler, then the driver will * invoke the SAX DTDHandler::notationDecl callback. * * @param notDecl A const reference to the object containing the notation * declaration information. * @param isIgnored The flag indicating whether this definition was ignored * by the parser or not. * * @see DTDHandler#notationDecl */ virtual void notationDecl ( const XMLNotationDecl& notDecl , const bool isIgnored ); /** * This method is used to indicate the start of an element's attribute * list declaration. * * This method is a no-op for this SAX driver * implementation. * * @param elemDecl A const reference to the object containing element * declaration information. */ virtual void startAttList ( const DTDElementDecl& elemDecl ); /** * This method is used indicate the start of the internal subset. * * This method is a no-op for this SAX driver * implementation. */ virtual void startIntSubset(); /** * This method is used indicate the start of the external subset. * * This method is a no-op for this SAX driver * implementation. */ virtual void startExtSubset(); /** * This method is used to report the TextDecl. Refer to the XML * specification for the syntax of a TextDecl. * * This method is a no-op for this SAX driver * implementation. * * @param versionStr A const pointer to a Unicode string representing * the version number of the 'version' clause. * @param encodingStr A const pointer to a Unicode string representing * the encoding name of the 'encoding' clause. */ virtual void TextDecl ( const XMLCh* const versionStr , const XMLCh* const encodingStr ); //@} protected : // ----------------------------------------------------------------------- // Protected Methods // ----------------------------------------------------------------------- /** * This method returns a reference to the underlying scanner object. * It allows read only access to data maintained in the scanner. * * @return A const reference to the underlying scanner object. */ const XMLScanner& getScanner() const; /** Get the Grammar resolver * * This provides derived classes with access to the grammar resolver. */ GrammarResolver* getGrammarResolver() const; private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- SAXParser(const SAXParser&); SAXParser& operator=(const SAXParser&); // ----------------------------------------------------------------------- // Initialize/Cleanup methods // ----------------------------------------------------------------------- void initialize(); void cleanUp(); void resetInProgress(); // ----------------------------------------------------------------------- // Private data members // // fAttrList // A temporary implementation of the basic SAX attribute list // interface. We use this one over and over on each startElement // event to allow SAX-like access to the element attributes. // // fDocHandler // The installed SAX doc handler, if any. Null if none. // // fDTDHandler // The installed SAX DTD handler, if any. Null if none. // // fElemDepth // This is used to track the element nesting depth, so that we can // know when we are inside content. This is so we can ignore char // data outside of content. // // fEntityResolver // The installed SAX entity handler, if any. Null if none. // // fErrorHandler // The installed SAX error handler, if any. Null if none. // // fPSVIHandler // The installed PSVI handler, if any. Null if none. // // fAdvDHCount // fAdvDHList // fAdvDHListSize // This is an array of pointers to XMLDocumentHandlers, which is // how we see installed advanced document handlers. There will // usually not be very many at all, so a simple array is used // instead of a collection, for performance. It will grow if needed, // but that is unlikely. // // The count is how many handlers are currently installed. The size // is how big the array itself is (for expansion purposes.) When // count == size, is time to expand. // // fParseInProgress // This flag is set once a parse starts. It is used to prevent // multiple entrance or reentrance of the parser. // // fScanner // The scanner being used by this parser. It is created internally // during construction. // // fGrammarPool // The grammar pool passed from external application (through derivatives). // which could be 0, not owned. // // ----------------------------------------------------------------------- bool fParseInProgress; XMLSize_t fElemDepth; XMLSize_t fAdvDHCount; XMLSize_t fAdvDHListSize; VecAttrListImpl fAttrList; DocumentHandler* fDocHandler; DTDHandler* fDTDHandler; EntityResolver* fEntityResolver; XMLEntityResolver* fXMLEntityResolver; ErrorHandler* fErrorHandler; PSVIHandler* fPSVIHandler; XMLDocumentHandler** fAdvDHList; XMLScanner* fScanner; GrammarResolver* fGrammarResolver; XMLStringPool* fURIStringPool; XMLValidator* fValidator; MemoryManager* fMemoryManager; XMLGrammarPool* fGrammarPool; XMLBuffer fElemQNameBuf; }; // --------------------------------------------------------------------------- // SAXParser: Getter methods // --------------------------------------------------------------------------- inline DocumentHandler* SAXParser::getDocumentHandler() { return fDocHandler; } inline const DocumentHandler* SAXParser::getDocumentHandler() const { return fDocHandler; } inline EntityResolver* SAXParser::getEntityResolver() { return fEntityResolver; } inline XMLEntityResolver* SAXParser::getXMLEntityResolver() { return fXMLEntityResolver; } inline const XMLEntityResolver* SAXParser::getXMLEntityResolver() const { return fXMLEntityResolver; } inline const EntityResolver* SAXParser::getEntityResolver() const { return fEntityResolver; } inline ErrorHandler* SAXParser::getErrorHandler() { return fErrorHandler; } inline const ErrorHandler* SAXParser::getErrorHandler() const { return fErrorHandler; } inline PSVIHandler* SAXParser::getPSVIHandler() { return fPSVIHandler; } inline const PSVIHandler* SAXParser::getPSVIHandler() const { return fPSVIHandler; } inline const XMLScanner& SAXParser::getScanner() const { return *fScanner; } inline GrammarResolver* SAXParser::getGrammarResolver() const { return fGrammarResolver; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/parsers/SAXParser.cpp0000644000175000017500000010762511301516456020476 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SAXParser.cpp 882548 2009-11-20 13:44:14Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // SAXParser: Constructors and Destructor // --------------------------------------------------------------------------- typedef JanitorMemFunCall CleanupType; typedef JanitorMemFunCall ResetInProgressType; SAXParser::SAXParser( XMLValidator* const valToAdopt , MemoryManager* const manager , XMLGrammarPool* const gramPool): fParseInProgress(false) , fElemDepth(0) , fAdvDHCount(0) , fAdvDHListSize(32) , fDocHandler(0) , fDTDHandler(0) , fEntityResolver(0) , fXMLEntityResolver(0) , fErrorHandler(0) , fPSVIHandler(0) , fAdvDHList(0) , fScanner(0) , fGrammarResolver(0) , fURIStringPool(0) , fValidator(valToAdopt) , fMemoryManager(manager) , fGrammarPool(gramPool) , fElemQNameBuf(1023, manager) { CleanupType cleanup(this, &SAXParser::cleanUp); try { initialize(); } catch(const OutOfMemoryException&) { // Don't cleanup when out of memory, since executing the // code can cause problems. cleanup.release(); throw; } cleanup.release(); } SAXParser::~SAXParser() { cleanUp(); } // --------------------------------------------------------------------------- // SAXParser: Initialize/CleanUp methods // --------------------------------------------------------------------------- void SAXParser::initialize() { // Create grammar resolver and string pool to pass to scanner fGrammarResolver = new (fMemoryManager) GrammarResolver(fGrammarPool, fMemoryManager); fURIStringPool = fGrammarResolver->getStringPool(); // Create our scanner and tell it what validator to use fScanner = XMLScannerResolver::getDefaultScanner(fValidator, fGrammarResolver, fMemoryManager); fScanner->setURIStringPool(fURIStringPool); // Create the initial advanced handler list array and zero it out fAdvDHList = (XMLDocumentHandler**) fMemoryManager->allocate ( fAdvDHListSize * sizeof(XMLDocumentHandler*) );//new XMLDocumentHandler*[fAdvDHListSize]; memset(fAdvDHList, 0, sizeof(void*) * fAdvDHListSize); } void SAXParser::cleanUp() { fMemoryManager->deallocate(fAdvDHList);//delete [] fAdvDHList; delete fScanner; delete fGrammarResolver; // grammar pool must do this //delete fURIStringPool; if (fValidator) delete fValidator; } // --------------------------------------------------------------------------- // SAXParser: Advanced document handler list maintenance methods // --------------------------------------------------------------------------- void SAXParser::installAdvDocHandler(XMLDocumentHandler* const toInstall) { // See if we need to expand and do so now if needed if (fAdvDHCount == fAdvDHListSize) { // Calc a new size and allocate the new temp buffer const XMLSize_t newSize = (XMLSize_t)(fAdvDHListSize * 1.5); XMLDocumentHandler** newList = (XMLDocumentHandler**) fMemoryManager->allocate ( newSize * sizeof(XMLDocumentHandler*) );//new XMLDocumentHandler*[newSize]; // Copy over the old data to the new list and zero out the rest memcpy(newList, fAdvDHList, sizeof(void*) * fAdvDHListSize); memset ( &newList[fAdvDHListSize] , 0 , sizeof(void*) * (newSize - fAdvDHListSize) ); // And now clean up the old array and store the new stuff fMemoryManager->deallocate(fAdvDHList);//delete [] fAdvDHList; fAdvDHList = newList; fAdvDHListSize = newSize; } // Add this new guy into the empty slot fAdvDHList[fAdvDHCount++] = toInstall; // // Install ourself as the document handler with the scanner. We might // already be, but its not worth checking, just do it. // fScanner->setDocHandler(this); } bool SAXParser::removeAdvDocHandler(XMLDocumentHandler* const toRemove) { // If our count is zero, can't be any installed if (!fAdvDHCount) return false; // // Search the array until we find this handler. If we find a null entry // first, we can stop there before the list is kept contiguous. // XMLSize_t index; for (index = 0; index < fAdvDHCount; index++) { // // We found it. We have to keep the list contiguous, so we have to // copy down any used elements after this one. // if (fAdvDHList[index] == toRemove) { // // Optimize if only one entry (pretty common). Otherwise, we // have to copy them down to compact them. // if (fAdvDHCount > 1) { index++; while (index < fAdvDHCount) fAdvDHList[index - 1] = fAdvDHList[index]; } // Bump down the count and zero out the last one fAdvDHCount--; fAdvDHList[fAdvDHCount] = 0; // // If this leaves us with no advanced handlers and there is // no SAX doc handler installed on us, then remove us from the // scanner as the document handler. // if (!fAdvDHCount && !fDocHandler) fScanner->setDocHandler(0); return true; } } // Never found it return false; } // --------------------------------------------------------------------------- // SAXParser: Getter methods // --------------------------------------------------------------------------- const XMLValidator& SAXParser::getValidator() const { return *fScanner->getValidator(); } bool SAXParser::getDoNamespaces() const { return fScanner->getDoNamespaces(); } bool SAXParser::getGenerateSyntheticAnnotations() const { return fScanner->getGenerateSyntheticAnnotations(); } bool SAXParser::getValidateAnnotations() const { return fScanner->getValidateAnnotations(); } bool SAXParser::getExitOnFirstFatalError() const { return fScanner->getExitOnFirstFatal(); } bool SAXParser::getValidationConstraintFatal() const { return fScanner->getValidationConstraintFatal(); } SAXParser::ValSchemes SAXParser::getValidationScheme() const { const XMLScanner::ValSchemes scheme = fScanner->getValidationScheme(); if (scheme == XMLScanner::Val_Always) return Val_Always; else if (scheme == XMLScanner::Val_Never) return Val_Never; return Val_Auto; } bool SAXParser::getDoSchema() const { return fScanner->getDoSchema(); } bool SAXParser::getValidationSchemaFullChecking() const { return fScanner->getValidationSchemaFullChecking(); } bool SAXParser::getIdentityConstraintChecking() const { return fScanner->getIdentityConstraintChecking(); } int SAXParser::getErrorCount() const { return fScanner->getErrorCount(); } XMLCh* SAXParser::getExternalSchemaLocation() const { return fScanner->getExternalSchemaLocation(); } XMLCh* SAXParser::getExternalNoNamespaceSchemaLocation() const { return fScanner->getExternalNoNamespaceSchemaLocation(); } SecurityManager* SAXParser::getSecurityManager() const { return fScanner->getSecurityManager(); } XMLSize_t SAXParser::getLowWaterMark() const { return fScanner->getLowWaterMark(); } bool SAXParser::getLoadExternalDTD() const { return fScanner->getLoadExternalDTD(); } bool SAXParser::getLoadSchema() const { return fScanner->getLoadSchema(); } bool SAXParser::isCachingGrammarFromParse() const { return fScanner->isCachingGrammarFromParse(); } bool SAXParser::isUsingCachedGrammarInParse() const { return fScanner->isUsingCachedGrammarInParse(); } bool SAXParser::getCalculateSrcOfs() const { return fScanner->getCalculateSrcOfs(); } bool SAXParser::getStandardUriConformant() const { return fScanner->getStandardUriConformant(); } Grammar* SAXParser::getGrammar(const XMLCh* const nameSpaceKey) { return fGrammarResolver->getGrammar(nameSpaceKey); } Grammar* SAXParser::getRootGrammar() { return fScanner->getRootGrammar(); } const XMLCh* SAXParser::getURIText(unsigned int uriId) const { return fScanner->getURIText(uriId); } XMLFilePos SAXParser::getSrcOffset() const { return fScanner->getSrcOffset(); } bool SAXParser::getIgnoreCachedDTD() const { return fScanner->getIgnoreCachedDTD(); } bool SAXParser::getIgnoreAnnotations() const { return fScanner->getIgnoreAnnotations(); } bool SAXParser::getDisableDefaultEntityResolution() const { return fScanner->getDisableDefaultEntityResolution(); } bool SAXParser::getSkipDTDValidation() const { return fScanner->getSkipDTDValidation(); } bool SAXParser::getHandleMultipleImports() const { return fScanner->getHandleMultipleImports(); } // --------------------------------------------------------------------------- // SAXParser: Setter methods // --------------------------------------------------------------------------- void SAXParser::setDoNamespaces(const bool newState) { fScanner->setDoNamespaces(newState); } void SAXParser::setGenerateSyntheticAnnotations(const bool newState) { fScanner->setGenerateSyntheticAnnotations(newState); } void SAXParser::setValidateAnnotations(const bool newState) { fScanner->setValidateAnnotations(newState); } void SAXParser::setExitOnFirstFatalError(const bool newState) { fScanner->setExitOnFirstFatal(newState); } void SAXParser::setValidationConstraintFatal(const bool newState) { fScanner->setValidationConstraintFatal(newState); } void SAXParser::setValidationScheme(const ValSchemes newScheme) { if (newScheme == Val_Never) fScanner->setValidationScheme(XMLScanner::Val_Never); else if (newScheme == Val_Always) fScanner->setValidationScheme(XMLScanner::Val_Always); else fScanner->setValidationScheme(XMLScanner::Val_Auto); } void SAXParser::setDoSchema(const bool newState) { fScanner->setDoSchema(newState); } void SAXParser::setValidationSchemaFullChecking(const bool schemaFullChecking) { fScanner->setValidationSchemaFullChecking(schemaFullChecking); } void SAXParser::setIdentityConstraintChecking(const bool identityConstraintChecking) { fScanner->setIdentityConstraintChecking(identityConstraintChecking); } void SAXParser::setExternalSchemaLocation(const XMLCh* const schemaLocation) { fScanner->setExternalSchemaLocation(schemaLocation); } void SAXParser::setExternalNoNamespaceSchemaLocation(const XMLCh* const noNamespaceSchemaLocation) { fScanner->setExternalNoNamespaceSchemaLocation(noNamespaceSchemaLocation); } void SAXParser::setExternalSchemaLocation(const char* const schemaLocation) { fScanner->setExternalSchemaLocation(schemaLocation); } void SAXParser::setExternalNoNamespaceSchemaLocation(const char* const noNamespaceSchemaLocation) { fScanner->setExternalNoNamespaceSchemaLocation(noNamespaceSchemaLocation); } void SAXParser::setSecurityManager(SecurityManager* const securityManager) { // since this could impact various components, don't permit it to change // during a parse if (fParseInProgress) ThrowXMLwithMemMgr(IOException, XMLExcepts::Gen_ParseInProgress, fMemoryManager); fScanner->setSecurityManager(securityManager); } void SAXParser::setLowWaterMark(XMLSize_t lwm) { fScanner->setLowWaterMark(lwm); } void SAXParser::setLoadExternalDTD(const bool newState) { fScanner->setLoadExternalDTD(newState); } void SAXParser::setLoadSchema(const bool newState) { fScanner->setLoadSchema(newState); } void SAXParser::cacheGrammarFromParse(const bool newState) { fScanner->cacheGrammarFromParse(newState); if (newState) fScanner->useCachedGrammarInParse(newState); } void SAXParser::useCachedGrammarInParse(const bool newState) { if (newState || !fScanner->isCachingGrammarFromParse()) fScanner->useCachedGrammarInParse(newState); } void SAXParser::setCalculateSrcOfs(const bool newState) { fScanner->setCalculateSrcOfs(newState); } void SAXParser::setStandardUriConformant(const bool newState) { fScanner->setStandardUriConformant(newState); } void SAXParser::useScanner(const XMLCh* const scannerName) { XMLScanner* tempScanner = XMLScannerResolver::resolveScanner ( scannerName , fValidator , fGrammarResolver , fMemoryManager ); if (tempScanner) { tempScanner->setParseSettings(fScanner); tempScanner->setURIStringPool(fURIStringPool); delete fScanner; fScanner = tempScanner; } } void SAXParser::setInputBufferSize(const XMLSize_t bufferSize) { fScanner->setInputBufferSize(bufferSize); } void SAXParser::setIgnoreCachedDTD(const bool newValue) { fScanner->setIgnoredCachedDTD(newValue); } void SAXParser::setIgnoreAnnotations(const bool newValue) { fScanner->setIgnoreAnnotations(newValue); } void SAXParser::setDisableDefaultEntityResolution(const bool newValue) { fScanner->setDisableDefaultEntityResolution(newValue); } void SAXParser::setSkipDTDValidation(const bool newValue) { fScanner->setSkipDTDValidation(newValue); } void SAXParser::setHandleMultipleImports(const bool newValue) { fScanner->setHandleMultipleImports(newValue); } // --------------------------------------------------------------------------- // SAXParser: Overrides of the SAX Parser interface // --------------------------------------------------------------------------- void SAXParser::parse(const InputSource& source) { // Avoid multiple entrance if (fParseInProgress) ThrowXMLwithMemMgr(IOException, XMLExcepts::Gen_ParseInProgress, fMemoryManager); ResetInProgressType resetInProgress(this, &SAXParser::resetInProgress); try { fParseInProgress = true; fScanner->scanDocument(source); } catch(const OutOfMemoryException&) { resetInProgress.release(); throw; } } void SAXParser::parse(const XMLCh* const systemId) { // Avoid multiple entrance if (fParseInProgress) ThrowXMLwithMemMgr(IOException, XMLExcepts::Gen_ParseInProgress, fMemoryManager); ResetInProgressType resetInProgress(this, &SAXParser::resetInProgress); try { fParseInProgress = true; fScanner->scanDocument(systemId); } catch(const OutOfMemoryException&) { resetInProgress.release(); throw; } } void SAXParser::parse(const char* const systemId) { // Avoid multiple entrance if (fParseInProgress) ThrowXMLwithMemMgr(IOException, XMLExcepts::Gen_ParseInProgress, fMemoryManager); ResetInProgressType resetInProgress(this, &SAXParser::resetInProgress); try { fParseInProgress = true; fScanner->scanDocument(systemId); } catch(const OutOfMemoryException&) { resetInProgress.release(); throw; } } void SAXParser::setDocumentHandler(DocumentHandler* const handler) { fDocHandler = handler; if (fDocHandler) { // // Make sure we are set as the document handler with the scanner. // We may already be (if advanced handlers are installed), but its // not worthing checking, just do it. // fScanner->setDocHandler(this); } else { // // If we don't have any advanced handlers either, then deinstall us // from the scanner because we don't need document events anymore. // if (!fAdvDHCount) fScanner->setDocHandler(0); } } void SAXParser::setDTDHandler(DTDHandler* const handler) { fDTDHandler = handler; if (fDTDHandler) fScanner->setDocTypeHandler(this); else fScanner->setDocTypeHandler(0); } void SAXParser::setErrorHandler(ErrorHandler* const handler) { // // Store the handler. Then either install or deinstall us as the // error reporter on the scanner. // fErrorHandler = handler; if (fErrorHandler) { fScanner->setErrorReporter(this); fScanner->setErrorHandler(fErrorHandler); } else { fScanner->setErrorReporter(0); fScanner->setErrorHandler(0); } } void SAXParser::setPSVIHandler(PSVIHandler* const handler) { fPSVIHandler = handler; if (fPSVIHandler) { fScanner->setPSVIHandler(fPSVIHandler); } else { fScanner->setPSVIHandler(0); } } void SAXParser::setEntityResolver(EntityResolver* const resolver) { fEntityResolver = resolver; if (fEntityResolver) { fScanner->setEntityHandler(this); fXMLEntityResolver = 0; } else { fScanner->setEntityHandler(0); } } void SAXParser::setXMLEntityResolver(XMLEntityResolver* const resolver) { fXMLEntityResolver = resolver; if (fXMLEntityResolver) { fScanner->setEntityHandler(this); fEntityResolver = 0; } else { fScanner->setEntityHandler(0); } } // --------------------------------------------------------------------------- // SAXParser: Progressive parse methods // --------------------------------------------------------------------------- bool SAXParser::parseFirst( const XMLCh* const systemId , XMLPScanToken& toFill) { // // Avoid multiple entrance. We cannot enter here while a regular parse // is in progress. // if (fParseInProgress) ThrowXMLwithMemMgr(IOException, XMLExcepts::Gen_ParseInProgress, fMemoryManager); return fScanner->scanFirst(systemId, toFill); } bool SAXParser::parseFirst( const char* const systemId , XMLPScanToken& toFill) { // // Avoid multiple entrance. We cannot enter here while a regular parse // is in progress. // if (fParseInProgress) ThrowXMLwithMemMgr(IOException, XMLExcepts::Gen_ParseInProgress, fMemoryManager); return fScanner->scanFirst(systemId, toFill); } bool SAXParser::parseFirst( const InputSource& source , XMLPScanToken& toFill) { // // Avoid multiple entrance. We cannot enter here while a regular parse // is in progress. // if (fParseInProgress) ThrowXMLwithMemMgr(IOException, XMLExcepts::Gen_ParseInProgress, fMemoryManager); return fScanner->scanFirst(source, toFill); } bool SAXParser::parseNext(XMLPScanToken& token) { return fScanner->scanNext(token); } void SAXParser::parseReset(XMLPScanToken& token) { // Reset the scanner fScanner->scanReset(token); } // --------------------------------------------------------------------------- // SAXParser: Overrides of the XMLDocumentHandler interface // --------------------------------------------------------------------------- void SAXParser::docCharacters( const XMLCh* const chars , const XMLSize_t length , const bool cdataSection) { // Suppress the chars before the root element. if (fElemDepth) { // Just map to the SAX document handler if (fDocHandler) fDocHandler->characters(chars, length); } // // If there are any installed advanced handlers, then lets call them // with this info. // for (XMLSize_t index = 0; index < fAdvDHCount; index++) fAdvDHList[index]->docCharacters(chars, length, cdataSection); } void SAXParser::docComment(const XMLCh* const commentText) { // // SAX has no way to report this. But, if there are any installed // advanced handlers, then lets call them with this info. // for (XMLSize_t index = 0; index < fAdvDHCount; index++) fAdvDHList[index]->docComment(commentText); } void SAXParser::XMLDecl( const XMLCh* const versionStr , const XMLCh* const encodingStr , const XMLCh* const standaloneStr , const XMLCh* const actualEncodingStr ) { // // SAX has no way to report this. But, if there are any installed // advanced handlers, then lets call them with this info. // for (XMLSize_t index = 0; index < fAdvDHCount; index++) fAdvDHList[index]->XMLDecl( versionStr, encodingStr, standaloneStr, actualEncodingStr ); } void SAXParser::docPI( const XMLCh* const target , const XMLCh* const data) { // Just map to the SAX document handler if (fDocHandler) fDocHandler->processingInstruction(target, data); // // If there are any installed advanced handlers, then lets call them // with this info. // for (XMLSize_t index = 0; index < fAdvDHCount; index++) fAdvDHList[index]->docPI(target, data); } void SAXParser::endDocument() { if (fDocHandler) fDocHandler->endDocument(); // // If there are any installed advanced handlers, then lets call them // with this info. // for (XMLSize_t index = 0; index < fAdvDHCount; index++) fAdvDHList[index]->endDocument(); } void SAXParser::endElement( const XMLElementDecl& elemDecl , const unsigned int uriId , const bool isRoot , const XMLCh* const elemPrefix) { // Just map to the SAX document handler if (fDocHandler) { if (fScanner->getDoNamespaces()) { if (elemPrefix && *elemPrefix) { fElemQNameBuf.set(elemPrefix); fElemQNameBuf.append(chColon); fElemQNameBuf.append(elemDecl.getBaseName()); fDocHandler->endElement(fElemQNameBuf.getRawBuffer()); } else { fDocHandler->endElement(elemDecl.getBaseName()); } } else fDocHandler->endElement(elemDecl.getFullName()); } // // If there are any installed advanced handlers, then lets call them // with this info. // for (XMLSize_t index = 0; index < fAdvDHCount; index++) fAdvDHList[index]->endElement(elemDecl, uriId, isRoot, elemPrefix); // // Dump the element depth down again. Don't let it underflow in case // of malformed XML. // if (fElemDepth) fElemDepth--; } void SAXParser::endEntityReference(const XMLEntityDecl& entityDecl) { // // SAX has no way to report this event. But, if there are any installed // advanced handlers, then lets call them with this info. // for (XMLSize_t index = 0; index < fAdvDHCount; index++) fAdvDHList[index]->endEntityReference(entityDecl); } void SAXParser::ignorableWhitespace(const XMLCh* const chars , const XMLSize_t length , const bool cdataSection) { // Do not report the whitespace before the root element. if (!fElemDepth) return; // Just map to the SAX document handler if (fDocHandler) fDocHandler->ignorableWhitespace(chars, length); // // If there are any installed advanced handlers, then lets call them // with this info. // for (XMLSize_t index = 0; index < fAdvDHCount; index++) fAdvDHList[index]->ignorableWhitespace(chars, length, cdataSection); } void SAXParser::resetDocument() { // Just map to the SAX document handler if (fDocHandler) fDocHandler->resetDocument(); // // If there are any installed advanced handlers, then lets call them // with this info. // for (XMLSize_t index = 0; index < fAdvDHCount; index++) fAdvDHList[index]->resetDocument(); // Make sure our element depth flag gets set back to zero fElemDepth = 0; } void SAXParser::startDocument() { // Just map to the SAX document handler if (fDocHandler) fDocHandler->setDocumentLocator(fScanner->getLocator()); if(fDocHandler) fDocHandler->startDocument(); // // If there are any installed advanced handlers, then lets call them // with this info. // for (XMLSize_t index = 0; index < fAdvDHCount; index++) fAdvDHList[index]->startDocument(); } void SAXParser:: startElement( const XMLElementDecl& elemDecl , const unsigned int elemURLId , const XMLCh* const elemPrefix , const RefVectorOf& attrList , const XMLSize_t attrCount , const bool isEmpty , const bool isRoot) { // Bump the element depth counter if not empty if (!isEmpty) fElemDepth++; if (fDocHandler) { fAttrList.setVector(&attrList, attrCount); if (fScanner->getDoNamespaces()) { if (elemPrefix && *elemPrefix) { fElemQNameBuf.set(elemPrefix); fElemQNameBuf.append(chColon); fElemQNameBuf.append(elemDecl.getBaseName()); fDocHandler->startElement(fElemQNameBuf.getRawBuffer(), fAttrList); // If its empty, send the end tag event now if (isEmpty && fDocHandler) fDocHandler->endElement(fElemQNameBuf.getRawBuffer()); } else { fDocHandler->startElement(elemDecl.getBaseName(), fAttrList); // If its empty, send the end tag event now if (isEmpty && fDocHandler) fDocHandler->endElement(elemDecl.getBaseName()); } } else { fDocHandler->startElement(elemDecl.getFullName(), fAttrList); // If its empty, send the end tag event now if (isEmpty && fDocHandler) fDocHandler->endElement(elemDecl.getFullName()); } } // // If there are any installed advanced handlers, then lets call them // with this info. // for (XMLSize_t index = 0; index < fAdvDHCount; index++) { fAdvDHList[index]->startElement ( elemDecl , elemURLId , elemPrefix , attrList , attrCount , isEmpty , isRoot ); } } void SAXParser::startEntityReference(const XMLEntityDecl& entityDecl) { // // SAX has no way to report this. But, If there are any installed // advanced handlers, then lets call them with this info. // for (XMLSize_t index = 0; index < fAdvDHCount; index++) fAdvDHList[index]->startEntityReference(entityDecl); } // --------------------------------------------------------------------------- // SAXParser: Overrides of the DocTypeHandler interface // --------------------------------------------------------------------------- void SAXParser::attDef( const DTDElementDecl& , const DTDAttDef& , const bool) { // Unused by SAX DTDHandler interface at this time } void SAXParser::doctypeComment(const XMLCh* const) { // Unused by SAX DTDHandler interface at this time } void SAXParser::doctypeDecl(const DTDElementDecl& , const XMLCh* const , const XMLCh* const , const bool , const bool) { // Unused by SAX DTDHandler interface at this time } void SAXParser::doctypePI( const XMLCh* const , const XMLCh* const) { // Unused by SAX DTDHandler interface at this time } void SAXParser::doctypeWhitespace( const XMLCh* const , const XMLSize_t) { // Unused by SAX DTDHandler interface at this time } void SAXParser::elementDecl(const DTDElementDecl&, const bool) { // Unused by SAX DTDHandler interface at this time } void SAXParser::endAttList(const DTDElementDecl&) { // Unused by SAX DTDHandler interface at this time } void SAXParser::endIntSubset() { // Unused by SAX DTDHandler interface at this time } void SAXParser::endExtSubset() { // Unused by SAX DTDHandler interface at this time } void SAXParser::entityDecl( const DTDEntityDecl& entityDecl , const bool , const bool isIgnored) { // // If we have a DTD handler, and this entity is not ignored, and // its an unparsed entity, then send this one. // if (fDTDHandler && !isIgnored) { if (entityDecl.isUnparsed()) { fDTDHandler->unparsedEntityDecl ( entityDecl.getName() , entityDecl.getPublicId() , entityDecl.getSystemId() , entityDecl.getNotationName() ); } } } void SAXParser::resetDocType() { // Just map to the DTD handler if (fDTDHandler) fDTDHandler->resetDocType(); } void SAXParser::notationDecl( const XMLNotationDecl& notDecl , const bool isIgnored) { if (fDTDHandler && !isIgnored) { fDTDHandler->notationDecl ( notDecl.getName() , notDecl.getPublicId() , notDecl.getSystemId() ); } } void SAXParser::startAttList(const DTDElementDecl&) { // Unused by SAX DTDHandler interface at this time } void SAXParser::startIntSubset() { // Unused by SAX DTDHandler interface at this time } void SAXParser::startExtSubset() { // Unused by SAX DTDHandler interface at this time } void SAXParser::TextDecl( const XMLCh* const , const XMLCh* const) { // Unused by SAX DTDHandler interface at this time } // --------------------------------------------------------------------------- // SAXParser: Overrides of the XMLErrorReporter interface // --------------------------------------------------------------------------- void SAXParser::resetErrors() { if (fErrorHandler) fErrorHandler->resetErrors(); } void SAXParser::error( const unsigned int , const XMLCh* const , const XMLErrorReporter::ErrTypes errType , const XMLCh* const errorText , const XMLCh* const systemId , const XMLCh* const publicId , const XMLFileLoc lineNum , const XMLFileLoc colNum) { SAXParseException toThrow = SAXParseException ( errorText , publicId , systemId , lineNum , colNum , fMemoryManager ); if (!fErrorHandler) { if (errType == XMLErrorReporter::ErrType_Fatal) throw toThrow; else return; } if (errType == XMLErrorReporter::ErrType_Warning) fErrorHandler->warning(toThrow); else if (errType == XMLErrorReporter::ErrType_Fatal) fErrorHandler->fatalError(toThrow); else fErrorHandler->error(toThrow); } // --------------------------------------------------------------------------- // SAXParser: Handlers for the XMLEntityHandler interface // --------------------------------------------------------------------------- void SAXParser::endInputSource(const InputSource&) { } bool SAXParser::expandSystemId(const XMLCh* const, XMLBuffer&) { return false; } void SAXParser::resetEntities() { // Nothing to do for this one } InputSource* SAXParser::resolveEntity( XMLResourceIdentifier* resourceIdentifier ) { // Just map to the SAX entity resolver handler if (fEntityResolver) return fEntityResolver->resolveEntity(resourceIdentifier->getPublicId(), resourceIdentifier->getSystemId()); if (fXMLEntityResolver) return fXMLEntityResolver->resolveEntity(resourceIdentifier); return 0; } void SAXParser::startInputSource(const InputSource&) { // Nothing to do for this one } // --------------------------------------------------------------------------- // SAXParser: Grammar preparsing methods // --------------------------------------------------------------------------- Grammar* SAXParser::loadGrammar(const char* const systemId, const Grammar::GrammarType grammarType, const bool toCache) { // Avoid multiple entrance if (fParseInProgress) ThrowXMLwithMemMgr(IOException, XMLExcepts::Gen_ParseInProgress, fMemoryManager); ResetInProgressType resetInProgress(this, &SAXParser::resetInProgress); Grammar* grammar = 0; try { fParseInProgress = true; grammar = fScanner->loadGrammar(systemId, grammarType, toCache); } catch(const OutOfMemoryException&) { resetInProgress.release(); throw; } return grammar; } Grammar* SAXParser::loadGrammar(const XMLCh* const systemId, const Grammar::GrammarType grammarType, const bool toCache) { // Avoid multiple entrance if (fParseInProgress) ThrowXMLwithMemMgr(IOException, XMLExcepts::Gen_ParseInProgress, fMemoryManager); ResetInProgressType resetInProgress(this, &SAXParser::resetInProgress); Grammar* grammar = 0; try { fParseInProgress = true; grammar = fScanner->loadGrammar(systemId, grammarType, toCache); } catch(const OutOfMemoryException&) { resetInProgress.release(); throw; } return grammar; } Grammar* SAXParser::loadGrammar(const InputSource& source, const Grammar::GrammarType grammarType, const bool toCache) { // Avoid multiple entrance if (fParseInProgress) ThrowXMLwithMemMgr(IOException, XMLExcepts::Gen_ParseInProgress, fMemoryManager); ResetInProgressType resetInProgress(this, &SAXParser::resetInProgress); Grammar* grammar = 0; try { fParseInProgress = true; grammar = fScanner->loadGrammar(source, grammarType, toCache); } catch(const OutOfMemoryException&) { resetInProgress.release(); throw; } return grammar; } void SAXParser::resetInProgress() { fParseInProgress = false; } void SAXParser::resetCachedGrammarPool() { fGrammarResolver->resetCachedGrammar(); fScanner->resetCachedGrammar(); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/parsers/XercesDOMParser.cpp0000644000175000017500000002445111301516456021627 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * This file contains code to build the DOM tree. It registers a document * handler with the scanner. In these handler methods, appropriate DOM nodes * are created and added to the DOM tree. * * $Id: XercesDOMParser.cpp 882548 2009-11-20 13:44:14Z borisk $ * */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // XercesDOMParser: Constructors and Destructor // --------------------------------------------------------------------------- XercesDOMParser::XercesDOMParser( XMLValidator* const valToAdopt , MemoryManager* const manager , XMLGrammarPool* const gramPool): AbstractDOMParser(valToAdopt, manager, gramPool) , fEntityResolver(0) , fXMLEntityResolver(0) , fErrorHandler(0) { } XercesDOMParser::~XercesDOMParser() { } // --------------------------------------------------------------------------- // XercesDOMParser: Getter methods // --------------------------------------------------------------------------- bool XercesDOMParser::isCachingGrammarFromParse() const { return getScanner()->isCachingGrammarFromParse(); } bool XercesDOMParser::isUsingCachedGrammarInParse() const { return getScanner()->isUsingCachedGrammarInParse(); } Grammar* XercesDOMParser::getGrammar(const XMLCh* const nameSpaceKey) { return getGrammarResolver()->getGrammar(nameSpaceKey); } Grammar* XercesDOMParser::getRootGrammar() { return getScanner()->getRootGrammar(); } const XMLCh* XercesDOMParser::getURIText(unsigned int uriId) const { return getScanner()->getURIText(uriId); } XMLFilePos XercesDOMParser::getSrcOffset() const { return getScanner()->getSrcOffset(); } bool XercesDOMParser::getIgnoreCachedDTD() const { return getScanner()->getIgnoreCachedDTD(); } // --------------------------------------------------------------------------- // XercesDOMParser: Setter methods // --------------------------------------------------------------------------- void XercesDOMParser::setErrorHandler(ErrorHandler* const handler) { fErrorHandler = handler; XMLScanner* scanner = getScanner(); if (fErrorHandler) { scanner->setErrorReporter(this); scanner->setErrorHandler(fErrorHandler); } else { scanner->setErrorReporter(0); scanner->setErrorHandler(0); } } void XercesDOMParser::setEntityResolver(EntityResolver* const handler) { fEntityResolver = handler; if (fEntityResolver) { getScanner()->setEntityHandler(this); fXMLEntityResolver = 0; } else { getScanner()->setEntityHandler(0); } } void XercesDOMParser::setXMLEntityResolver(XMLEntityResolver* const handler) { fXMLEntityResolver = handler; if (fXMLEntityResolver) { getScanner()->setEntityHandler(this); fEntityResolver = 0; } else { getScanner()->setEntityHandler(0); } } void XercesDOMParser::cacheGrammarFromParse(const bool newState) { getScanner()->cacheGrammarFromParse(newState); if (newState) getScanner()->useCachedGrammarInParse(newState); } void XercesDOMParser::useCachedGrammarInParse(const bool newState) { if (newState || !getScanner()->isCachingGrammarFromParse()) getScanner()->useCachedGrammarInParse(newState); } void XercesDOMParser::setIgnoreCachedDTD(const bool newValue) { getScanner()->setIgnoredCachedDTD(newValue); } // --------------------------------------------------------------------------- // XercesDOMParser: Utilities // --------------------------------------------------------------------------- void XercesDOMParser::resetDocumentPool() { resetPool(); } // --------------------------------------------------------------------------- // XercesDOMParser: Implementation of the XMLErrorReporter interface // --------------------------------------------------------------------------- void XercesDOMParser::error( const unsigned int , const XMLCh* const , const XMLErrorReporter::ErrTypes errType , const XMLCh* const errorText , const XMLCh* const systemId , const XMLCh* const publicId , const XMLFileLoc lineNum , const XMLFileLoc colNum) { SAXParseException toThrow = SAXParseException ( errorText , publicId , systemId , lineNum , colNum , getMemoryManager() ); // // If there is an error handler registered, call it, otherwise ignore // all but the fatal errors. // if (!fErrorHandler) { if (errType == XMLErrorReporter::ErrType_Fatal) throw toThrow; return; } if (errType == XMLErrorReporter::ErrType_Warning) fErrorHandler->warning(toThrow); else if (errType >= XMLErrorReporter::ErrType_Fatal) fErrorHandler->fatalError(toThrow); else fErrorHandler->error(toThrow); } void XercesDOMParser::resetErrors() { } // --------------------------------------------------------------------------- // XercesDOMParser: Implementation of XMLEntityHandler interface // --------------------------------------------------------------------------- InputSource* XercesDOMParser::resolveEntity(XMLResourceIdentifier* resourceIdentifier) { // // Just map it to the SAX entity resolver. If there is not one installed, // return a null pointer to cause the default resolution. // if (fEntityResolver) return fEntityResolver->resolveEntity(resourceIdentifier->getPublicId(), resourceIdentifier->getSystemId()); if (fXMLEntityResolver) return fXMLEntityResolver->resolveEntity(resourceIdentifier); return 0; } typedef JanitorMemFunCall ResetParseType; // --------------------------------------------------------------------------- // XercesDOMParser: Grammar preparsing methods // --------------------------------------------------------------------------- Grammar* XercesDOMParser::loadGrammar(const char* const systemId, const Grammar::GrammarType grammarType, const bool toCache) { // Avoid multiple entrance if (getParseInProgress()) ThrowXMLwithMemMgr(IOException, XMLExcepts::Gen_ParseInProgress, fMemoryManager); ResetParseType resetParse(this, &XercesDOMParser::resetParse); Grammar* grammar = 0; try { setParseInProgress(true); if (grammarType == Grammar::DTDGrammarType) getScanner()->setDocTypeHandler(0); grammar = getScanner()->loadGrammar(systemId, grammarType, toCache); } catch(const OutOfMemoryException&) { resetParse.release(); throw; } return grammar; } Grammar* XercesDOMParser::loadGrammar(const XMLCh* const systemId, const Grammar::GrammarType grammarType, const bool toCache) { // Avoid multiple entrance if (getParseInProgress()) ThrowXMLwithMemMgr(IOException, XMLExcepts::Gen_ParseInProgress, fMemoryManager); ResetParseType resetParse(this, &XercesDOMParser::resetParse); Grammar* grammar = 0; try { setParseInProgress(true); if (grammarType == Grammar::DTDGrammarType) getScanner()->setDocTypeHandler(0); grammar = getScanner()->loadGrammar(systemId, grammarType, toCache); } catch(const OutOfMemoryException&) { resetParse.release(); throw; } return grammar; } Grammar* XercesDOMParser::loadGrammar(const InputSource& source, const Grammar::GrammarType grammarType, const bool toCache) { // Avoid multiple entrance if (getParseInProgress()) ThrowXMLwithMemMgr(IOException, XMLExcepts::Gen_ParseInProgress, fMemoryManager); ResetParseType resetParse(this, &XercesDOMParser::resetParse); Grammar* grammar = 0; try { setParseInProgress(true); if (grammarType == Grammar::DTDGrammarType) getScanner()->setDocTypeHandler(0); grammar = getScanner()->loadGrammar(source, grammarType, toCache); } catch(const OutOfMemoryException&) { resetParse.release(); throw; } return grammar; } void XercesDOMParser::resetParse() { if (getScanner()->getDocTypeHandler() == 0) { getScanner()->setDocTypeHandler(this); } setParseInProgress(false); } void XercesDOMParser::resetCachedGrammarPool() { getGrammarResolver()->resetCachedGrammar(); getScanner()->resetCachedGrammar(); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/xinclude/0000755000175000017500000000000011363617244016310 5ustar borisborisxerces-c-3.1.1/src/xercesc/xinclude/XIncludeDOMDocumentProcessor.hpp0000644000175000017500000000417411012165027024465 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XIncludeDOMDocumentProcessor.hpp 655706 2008-05-13 01:08:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_XINCLUDEDOMDOCUMENTPROCESSOR_HPP) #define XERCESC_INCLUDE_GUARD_XINCLUDEDOMDOCUMENTPROCESSOR_HPP #include #include #include XERCES_CPP_NAMESPACE_BEGIN class XMLEntityHandler; /** * Class for representing and manipulating the XMLCh * href's used * by an xi:include element. * * This class is designed primarily for internal use. This class implements * the functionality required to calculate relative hrefs and the base URI * fixups required for performing XInclude functionality. */ class XINCLUDE_EXPORT XIncludeDOMDocumentProcessor { public: /** Walk the supplied DOMDocument performing all XInclude's as encountered. * * @param source A DOMDocument to parse, this document is not modified. * @param errorHandled An errorHandler to call back in case of problems * * @return a newly created DOMDocument containing the parsed and actioned * xinclude elements. */ DOMDocument *doXIncludeDOMProcess(const DOMDocument * const source, XMLErrorReporter *errorHandler, XMLEntityHandler* entityResolver=NULL); }; XERCES_CPP_NAMESPACE_END #endif /* XINCLUDEDOMDOCUMENTPROCESSOR_HPP */ xerces-c-3.1.1/src/xercesc/xinclude/XIncludeLocation.hpp0000644000175000017500000000523611012165027022217 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XIncludeLocation.hpp 655706 2008-05-13 01:08:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_XINCLUDELOCATION_HPP) #define XERCESC_INCLUDE_GUARD_XINCLUDELOCATION_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN /** * Class for representing and manipulating the XMLCh * href's used * by an xi:include element. * * This class is designed primarily for internal use. This class implements * the functionality required to calculate relative hrefs and the base URI * fixups required for performing XInclude functionality. */ class XINCLUDE_EXPORT XIncludeLocation { public: /** Create an XIncludeLocation, primed with the supplied href * * @param href the initial URI value * * @return nothing */ XIncludeLocation(const XMLCh *href); /** Destructor * * @return nothing */ ~XIncludeLocation(); /** Prepend the supplied href to the current location and modify the current XIncludeLocation's * internal href field * * @param toPrepend the path to prepend * * @return the resultant compound URI */ const XMLCh *prependPath(const XMLCh *toPrepend); /** Get the current XIncludeLocation's compound URI location * * @return the current URI */ const XMLCh *getLocation(){ return fHref; }; /** Get a pointer to the end of the protocol section of a URI * * @param URI a URI to strip the protocol from * * @return a pointer into the supplied URI immediately after the last character of the protocol section * the pointer points to the first character after the protocol. */ static const XMLCh *findEndOfProtocol(const XMLCh *URI); private: const XMLCh *fHref; }; XERCES_CPP_NAMESPACE_END #endif /* XINCLUDELOCATION_HPP */ xerces-c-3.1.1/src/xercesc/xinclude/XIncludeLocation.cpp0000644000175000017500000001042211360404621022205 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XIncludeLocation.cpp 932949 2010-04-11 17:40:33Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include XERCES_CPP_NAMESPACE_BEGIN const XMLCh *allocate(const XMLCh *href){ XMLCh *allocated; XMLSize_t length = XMLString::stringLen(href); allocated = (XMLCh*)XMLPlatformUtils::fgMemoryManager->allocate((length+1) * sizeof(XMLCh)); XMLString::copyString(allocated, href); XMLPlatformUtils::removeDotDotSlash(allocated); return allocated; } void deallocate(void *ptr){ if (ptr) XMLPlatformUtils::fgMemoryManager->deallocate((void *)ptr); } // --------------------------------------------------------------------------- // Destructor and Constructor // --------------------------------------------------------------------------- XIncludeLocation::XIncludeLocation(const XMLCh *href){ fHref = allocate(href); } XIncludeLocation::~XIncludeLocation(){ deallocate((void *)fHref); } const XMLCh * XIncludeLocation::prependPath(const XMLCh *baseToAdd){ XMLCh *relativeHref = NULL; if (fHref == NULL){ return NULL; } if (baseToAdd == NULL){ return fHref; } XMLPlatformUtils::removeDotDotSlash((XMLCh*)baseToAdd); XMLSize_t baseLength = XMLString::stringLen(baseToAdd); int lastSlash = XMLString::lastIndexOf(baseToAdd, chForwardSlash); if (lastSlash == -1){ /* not found, try another platform */ lastSlash = XMLString::lastIndexOf(baseToAdd, chBackSlash); } // Skip the scheme (e.g., file://) if fHref has one. Ideally we // should detect also if the URI is absolute. // const XMLCh* hrefPath = findEndOfProtocol (fHref); XMLSize_t hrefPathLength = XMLString::stringLen(hrefPath); relativeHref = (XMLCh *)XMLPlatformUtils::fgMemoryManager->allocate((hrefPathLength + baseLength + 2) * sizeof(XMLCh)); if (relativeHref == NULL){ return NULL; } XMLString::copyNString(relativeHref, baseToAdd, lastSlash + 1); relativeHref[lastSlash + 1] = chNull; XMLString::catString(relativeHref, hrefPath); /* free the old reference */ deallocate((void *)fHref); fHref = relativeHref; return fHref; } const XMLCh * XIncludeLocation::findEndOfProtocol(const XMLCh *URI){ if ( URI[0] == chLatin_f && URI[1] == chLatin_i && URI[2] == chLatin_l && URI[3] == chLatin_e && URI[4] == chColon && URI[5] == chForwardSlash && URI[6] == chForwardSlash && URI[7] == chForwardSlash ) { return URI + 8; } if ( URI[0] == chLatin_f && URI[1] == chLatin_t && URI[2] == chLatin_p && URI[3] == chColon && URI[4] == chForwardSlash && URI[5] == chForwardSlash && URI[6] == chForwardSlash ) { return URI + 7; } if ( URI[0] == chLatin_h && URI[1] == chLatin_t && URI[2] == chLatin_t && URI[3] == chLatin_p && URI[4] == chColon && URI[5] == chForwardSlash && URI[6] == chForwardSlash && URI[7] == chForwardSlash ) { return URI + 8; } /* if method fails, simply return the URI and let the problem be detected * and reported down the line (it may not have a protocol of course) */ return URI; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/xinclude/XIncludeUtils.hpp0000644000175000017500000002355511033354634021562 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XIncludeUtils.hpp 673949 2008-07-04 08:04:44Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_XINCLUDEUTILS_HPP) #define XERCESC_INCLUDE_GUARD_XINCLUDEUTILS_HPP #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN class XMLEntityHandler; typedef struct XIncludeHistoryNode{ XMLCh *URI; struct XIncludeHistoryNode *next; }XIncludeHistoryNode; /** * Class implementing all the utility functions required by an XInclude parser. * * This class is designed primarily for internal use. This class implements * utility methods to be called by an XInclude parser. It is intended to encapsulate * the actual processing and recognition of XInclude components. */ class XINCLUDE_EXPORT XIncludeUtils { private: /** Constructor * */ XIncludeUtils(XMLErrorReporter *errorReporter); /** Destructor * */ ~XIncludeUtils(); /** Parse the supplied XInclude element performing relevant XInclude functionality * * @param xincludeNode The XInclude node to parse and action * @param parsedDocument The DOMDocument to which the results of the XInclude are to be added * * @return true if the XInclude processing was successful, false if not. Note that an * XInclude that fails resulting in a successful fallback action would return true. */ bool doDOMNodeXInclude(DOMNode *xincludeNode, DOMDocument *parsedDocument, XMLEntityHandler* entityResolver); /** Parse an XInclude xml file into a DOMDocument node. * * @param href the location of the document to include * @param relativeHref * @param parsedDocument * * @return a newly created DOMDocument containing the parsed and actioned * href, or NULL if the document could not be loaded. */ DOMDocument *doXIncludeXMLFileDOM(const XMLCh *href, const XMLCh *relativeHref, DOMNode *xincludeNode, DOMDocument *parsedDocument, XMLEntityHandler* entityResolver); /** Parse an XInclude text file into a DOMText node. * * @param href the location of the document to include * @param relativeHref * @param encoding * @param parsedDocument * * @return a newly created DOMText containing the parsed and actioned * href, or NULL if the document could not be loaded. */ DOMText *doXIncludeTEXTFileDOM(const XMLCh *href, const XMLCh *relativeHref, const XMLCh *encoding, DOMNode *xincludeNode, DOMDocument *parsedDocument, XMLEntityHandler* entityResolver); /** Detect whether the supplied details are correct for an xi:include element * * @param name the element name * @param namespaceURI the element namespace * * @return true if details are valid for an xi:include element, false * if not. */ static bool isXIIncludeElement(const XMLCh *name, const XMLCh *namespaceURI); /** Detect whether the supplied details are correct for an xi:fallback element * * @param name the element name * @param namespaceURI the element namespace * * @return true if details are valid for an xi:fallback element, false * if not. */ static bool isXIFallbackElement(const XMLCh *name, const XMLCh *namespaceURI); /** Detect whether the supplied DOMNode is an xi:include element * * @param node The node to check * * @return true if node is an xi:include element, false * if not. */ static bool isXIIncludeDOMNode(DOMNode *node); /** Detect whether the supplied DOMNode is an xi:fallback element * * @param node The DOMNode to check * * @return true if node is an xi:fallback element, false * if not. */ static bool isXIFallbackDOMNode(DOMNode *node); /** Walk the content of the supplied source node, performing any xinclude actions * that are encountered. * * @param source A DOMNode to parse, this node may be modified by the method * @param parsedDocument the DOMDocument to which the parsed results are to be copied. * * @return true if XInclude behaviour was successfully performed on source, false if not. */ bool parseDOMNodeDoingXInclude(DOMNode *source, DOMDocument *parsedDocument, XMLEntityHandler* entityResolver); /** Parse the supplied URI and escape all characters as specified by * the XINclusions specification. * * @param hrefAttrValue the href to parse and escape. * @param needsDeallocating set to true if the return value needs deallocating * by the caller after use, false if the value returned is the same as the * hrefAttrValue passed in. * * @return an escaped version of hrefAttrValue or hrefAttrValue itself if * hrefAttrValue contains only valid characters. */ /* 4.1.1 */ const XMLCh *getEscapedHRefAttrValue(const XMLCh *hrefAttrValue, bool &needsDeallocating); /** Set the accept and accept-lang parameters on HTTP requests generated while * XIncluding. * * @param acceptAttrValue * @param acceptLangAttrValue * * @return true if the values were successfully added to the HTTP request, false * if not. */ /* 4.1.2 */ bool setContentNegotiation(const XMLCh *acceptAttrValue, const XMLCh *acceptLangAttrValue); /** Check the characters passed in are all valid characters for XInclusion * as specified at http://www.w3.org/TR/xinclude/#text-included-items * * @param includeChars the characters to parse for validity * * @return true if the includeChars parameter contains only valid characters * for inclusion, false if there are invalid characters in includeChars. */ bool checkTextIsValidForInclude(XMLCh *includeChars); /** Add the supplied parameter to the InclusionHistoryStack * * @param URItoAdd the URI to add to the InclusionHistoryStack/ * * @return true if the URI was added, false if a problem prevented * the URI being added. */ bool addDocumentURIToCurrentInclusionHistoryStack(const XMLCh *URItoAdd); /** Check the XInclude InclusionHistoryStack to see if the supplied URI * has already been included. This is used to ensure that circular inclusion * chains are detected and that the inclusion mechanism does not get stuck in * a loop. * * @param toFind the URI to look up. * * @return true if the toFind parameter is found in the InclusionHistortStack, * false if the parameter is not in the stack or the stack is empty. */ bool isInCurrentInclusionHistoryStack(const XMLCh *toFind); /** Pop (i.e. remove and return) the top value from the InclusionHistoryStack * * @param toPop the value that is expected to be at the top of the stack, or * NULL if no checking is required. * * @return the element at the top of the stack */ XIncludeHistoryNode * popFromCurrentInclusionHistoryStack(const XMLCh *toPop); /** Free the internal inclusion history list. * * @return nothing */ void freeInclusionHistory(); /** Construct and pass on an error description * * @param errorNode The DOMNode that was being parsed when the error occurred * @param errorType The severity of the error * @param errorMsg An optional message to include in the error report * @param href The URI of the document being parsed. * * @return true if the errorHandler requests continuation of parsing despite error * false if the errorHandler requests parsing end on encountering error, or it * there is no error handler. */ bool reportError(const DOMNode* const errorNode , XMLErrs::Codes errorType , const XMLCh* const errorMsg , const XMLCh* const href); public: /* temporarily public to facilitate helper func getBaseAttrValue */ static const XMLCh fgXIBaseAttrName[]; private: XIncludeHistoryNode *fIncludeHistoryHead; XMLSize_t fErrorCount; XMLErrorReporter *fErrorReporter; static const XMLCh fgXIIncludeQName[]; static const XMLCh fgXIFallbackQName[]; static const XMLCh fgXIIncludeHREFAttrName[]; static const XMLCh fgXIIncludeParseAttrName[]; static const XMLCh fgXIIncludeParseAttrXMLValue[]; static const XMLCh fgXIIncludeParseAttrTextValue[]; static const XMLCh fgXIIncludeXPointerAttrName[]; static const XMLCh fgXIIncludeEncodingAttrName[]; static const XMLCh fgXIIncludeAcceptAttrName[]; static const XMLCh fgXIIncludeAcceptLanguageAttrName[]; static const XMLCh fgXIIIncludeNamespaceURI[]; friend class XIncludeDOMDocumentProcessor; friend class AbstractDOMParser; }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/xinclude/XIncludeUtils.cpp0000644000175000017500000011123611360607566021557 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XIncludeUtils.cpp 933212 2010-04-12 12:17:58Z amassari $ */ #include #include #include #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN XIncludeUtils::XIncludeUtils(XMLErrorReporter *errorReporter){ fErrorReporter = errorReporter; fIncludeHistoryHead = NULL; } XIncludeUtils::~XIncludeUtils(){ freeInclusionHistory(); } // --------------------------------------------------------------------------- // Generic function to parse a dom node performing any Xinclude's it ecounters, // storing its results in parsedDocument, which is expected to be a real // document. sourceNode is the current location in parsedDocument, and // all xinclude manipulation is done in place (i.e. source is manipulated). // --------------------------------------------------------------------------- bool XIncludeUtils::parseDOMNodeDoingXInclude(DOMNode *sourceNode, DOMDocument *parsedDocument, XMLEntityHandler* entityResolver){ if (sourceNode) { /* create the list of child elements here, since it gets changed during the parse */ RefVectorOf children(10, false); for (DOMNode *child = sourceNode->getFirstChild(); child != NULL; child = child->getNextSibling()){ children.addElement(child); } if (sourceNode->getNodeType() == DOMNode::ELEMENT_NODE){ if (isXIIncludeDOMNode(sourceNode)){ /* once we do an include on the source element, it is unsafe to do the include on the children, since they will have been changed by the top level include */ bool success = doDOMNodeXInclude(sourceNode, parsedDocument, entityResolver); //popFromCurrentInclusionHistoryStack(NULL); /* return here as we do not want to fall through to the parsing of the children below - they should have been replaced by the XInclude */ return success; } else if (isXIFallbackDOMNode(sourceNode)){ /* This must be a fallback element that is not a child of an include element. This is defined as a fatal error */ XIncludeUtils::reportError(sourceNode, XMLErrs::XIncludeOrphanFallback, NULL, parsedDocument->getDocumentURI()); return false; } } /* to have got here, we must not have found an xinclude element in the current element, so need to walk the entire child list parsing for each. An xinclude in a node does not affect a peer, so we can simply parse each child in turn */ for (XMLSize_t i = 0; i < children.size(); i++){ parseDOMNodeDoingXInclude(children.elementAt(i), parsedDocument, entityResolver); } } return false; } // --------------------------------------------------------------------------- // utility func to extract a DOMNodes Base attr value if present // --------------------------------------------------------------------------- static const XMLCh * getBaseAttrValue(DOMNode *node){ if (node->getNodeType() == DOMNode::ELEMENT_NODE){ DOMElement *elem = (DOMElement *)node; if(elem->hasAttributes()) { /* get all the attributes of the node */ DOMNamedNodeMap *pAttributes = elem->getAttributes(); XMLSize_t nSize = pAttributes->getLength(); for(XMLSize_t i=0;iitem(i); /* get attribute name */ if (XMLString::equals(pAttributeNode->getName(), XIncludeUtils::fgXIBaseAttrName)){ /*if (namespace == XMLUni::fgXMLString){ }*/ return pAttributeNode->getValue(); } } } } return NULL; } // --------------------------------------------------------------------------- // This method assumes that currentNode is an xinclude element and parses // it accordingly, acting on what it finds. // --------------------------------------------------------------------------- bool XIncludeUtils::doDOMNodeXInclude(DOMNode *xincludeNode, DOMDocument *parsedDocument, XMLEntityHandler* entityResolver){ bool modifiedNode = false; /* the relevant attributes to look for */ const XMLCh *href = NULL; const XMLCh *parse = NULL; const XMLCh *xpointer = NULL; const XMLCh *encoding = NULL; const XMLCh *accept = NULL; const XMLCh *acceptlanguage = NULL; DOMNode *includeParent = xincludeNode->getParentNode(); if(xincludeNode->hasAttributes()) { /* get all the attributes of the node */ DOMNamedNodeMap *pAttributes = xincludeNode->getAttributes(); XMLSize_t nSize = pAttributes->getLength(); for(XMLSize_t i=0;iitem(i); const XMLCh *attrName = pAttributeNode->getName(); /* check each attribute against the potential useful names */ if (XMLString::equals(attrName, XIncludeUtils::fgXIIncludeHREFAttrName)){ href = pAttributeNode->getValue(); } else if (XMLString::equals(attrName, XIncludeUtils::fgXIIncludeParseAttrName)){ parse = pAttributeNode->getValue(); } else if (XMLString::equals(attrName, XIncludeUtils::fgXIIncludeXPointerAttrName)){ xpointer = pAttributeNode->getValue(); } else if (XMLString::equals(attrName, XIncludeUtils::fgXIIncludeEncodingAttrName)){ encoding = pAttributeNode->getValue(); } else if (XMLString::equals(attrName, XIncludeUtils::fgXIIncludeAcceptAttrName)){ accept = pAttributeNode->getValue(); } else if (XMLString::equals(attrName, XIncludeUtils::fgXIIncludeAcceptLanguageAttrName)){ acceptlanguage = pAttributeNode->getValue(); } else { /* if any other attribute is in the xi namespace, it's an error */ const XMLCh *attrNamespaceURI = pAttributeNode->getNamespaceURI(); if (attrNamespaceURI && XMLString::equals(attrNamespaceURI, XIncludeUtils::fgXIIIncludeNamespaceURI)){ } else { /* ignore - any other attribute is allowed according to spec, and must be ignored */ } } } } // 3.1 xi:include Element // The children property of the xi:include element may include a single xi:fallback element; // the appearance of more than one xi:fallback element, an xi:include element, // or any other element from the XInclude namespace is a fatal error. DOMNode *child; DOMElement *fallback = NULL; for (child = xincludeNode->getFirstChild(); child != 0; child=child->getNextSibling()){ if(child->getNodeType()!=DOMNode::ELEMENT_NODE) continue; if ( isXIFallbackDOMNode(child) ){ if (fallback != NULL){ /* fatal error - there are more than one fallback children */ XIncludeUtils::reportError(xincludeNode, XMLErrs::XIncludeMultipleFallbackElems, parsedDocument->getDocumentURI(), parsedDocument->getDocumentURI()); return false; } fallback = (DOMElement*)child; } else if(isXIIncludeDOMNode(child) || XMLString::equals(child->getNamespaceURI(), XIncludeUtils::fgXIIIncludeNamespaceURI)) { /* fatal error - an xi element different from xi:fallback is a child of xi:include */ XIncludeUtils::reportError(xincludeNode, XMLErrs::XIncludeDisallowedChild, child->getNodeName(), parsedDocument->getDocumentURI()); return false; } } if (href == NULL){ /* this is an unrecoverable error until we have xpointer support - if there is an xpointer, the current document is assumed however, there is no xpointer support yet */ XIncludeUtils::reportError(xincludeNode, XMLErrs::XIncludeNoHref, NULL, parsedDocument->getDocumentURI()); return false; } /* set up the accept and accept-language values */ if (accept != NULL){ } if (parse == NULL){ /* use the default, as specified */ parse = XIncludeUtils::fgXIIncludeParseAttrXMLValue; } if (xpointer != NULL){ /* not supported yet */ /* Note that finding an xpointer attr along with parse="text" is a Fatal Error * - http://www.w3.org/TR/xinclude/#include-location */ XIncludeUtils::reportError(xincludeNode, XMLErrs::XIncludeXPointerNotSupported, NULL, href); return false; } /* set up the href according to what has gone before */ XIncludeLocation hrefLoc(href); XIncludeLocation relativeLocation(href); const XMLCh *includeBase = xincludeNode->getBaseURI(); if (includeBase != NULL){ hrefLoc.prependPath(includeBase); } if (getBaseAttrValue(xincludeNode) != NULL){ relativeLocation.prependPath(getBaseAttrValue(xincludeNode)); } /* Take the relevant action - we need to retrieve the target as a whole before we can know if it was successful or not, therefore the do* methods do not modify the parsedDocument. Swapping the results in is left to the caller (i.e. here) */ DOMText *includedText = NULL; DOMDocument *includedDoc = NULL; if (XMLString::equals(parse, XIncludeUtils::fgXIIncludeParseAttrXMLValue)){ /* including a XML element */ includedDoc = doXIncludeXMLFileDOM(hrefLoc.getLocation(), relativeLocation.getLocation(), xincludeNode, parsedDocument, entityResolver); } else if (XMLString::equals(parse, XIncludeUtils::fgXIIncludeParseAttrTextValue)){ /* including a text value */ includedText = doXIncludeTEXTFileDOM(hrefLoc.getLocation(), relativeLocation.getLocation(), encoding, xincludeNode, parsedDocument, entityResolver); } else { /* invalid parse attribute value - fatal error according to the specification */ XIncludeUtils::reportError(xincludeNode, XMLErrs::XIncludeInvalidParseVal, parse, parsedDocument->getDocumentURI()); return false; } RefVectorOf delayedProcessing(12,false); if (includedDoc == NULL && includedText == NULL){ /* there was an error - this is now a resource error let's see if there is a fallback */ XIncludeUtils::reportError(xincludeNode, XMLErrs::XIncludeIncludeFailedResourceError, hrefLoc.getLocation(), parsedDocument->getDocumentURI()); if (includeParent == NULL){ includeParent = parsedDocument; } // we could be getting errors trying to insert elements at the root of the document, so we should use replaceChild; // in order to handle multiple nodes, add them to a document fragment and use that to replace the original node if (fallback){ /* baseURI fixups - see http://www.w3.org/TR/xinclude/#base for details. */ XMLUri parentURI(includeParent->getBaseURI()); XMLUri includedURI(fallback->getBaseURI()); if (fallback->hasChildNodes()){ DOMDocumentFragment* frag = parsedDocument->createDocumentFragment(); DOMNode *child = fallback->getFirstChild(); /* add the content of the fallback element, and remove the fallback elem itself */ for ( ; child != NULL ; child=child->getNextSibling()){ if (child->getNodeType() == DOMNode::DOCUMENT_TYPE_NODE){ continue; } DOMNode *newNode = parsedDocument->importNode(child, true); /* if the paths differ we need to add a base attribute */ if (newNode->getNodeType()==DOMNode::ELEMENT_NODE && !XMLString::equals(parentURI.getPath(), includedURI.getPath())){ if (getBaseAttrValue(newNode) == NULL){ /* need to calculate the proper path difference to get the relativePath */ ((DOMElement*)newNode)->setAttribute(fgXIBaseAttrName, getBaseAttrValue(fallback->getParentNode())); } else { /* the included node has base of its own which takes precedence */ XIncludeLocation xil(getBaseAttrValue(newNode)); if (getBaseAttrValue(fallback->getParentNode()) != NULL){ /* prepend any specific base modification of the xinclude node */ xil.prependPath(getBaseAttrValue(fallback->getParentNode())); } ((DOMElement*)newNode)->setAttribute(fgXIBaseAttrName, xil.getLocation()); } } DOMNode *newChild = frag->appendChild(newNode); // don't process the node now, wait until it is placed in the final position delayedProcessing.addElement(newChild); //parseDOMNodeDoingXInclude(newChild, parsedDocument, entityResolver); } includeParent->replaceChild(frag, xincludeNode); frag->release(); for(XMLSize_t i=0;iremoveChild(xincludeNode); modifiedNode = true; } } else { XIncludeUtils::reportError(xincludeNode, XMLErrs::XIncludeIncludeFailedNoFallback, parsedDocument->getDocumentURI(), parsedDocument->getDocumentURI()); return false; } } else { if (includedDoc){ /* record the successful include while we process the children */ addDocumentURIToCurrentInclusionHistoryStack(hrefLoc.getLocation()); DOMDocumentFragment* frag = parsedDocument->createDocumentFragment(); /* need to import the document prolog here */ DOMNode *child = includedDoc->getFirstChild(); for (; child != NULL; child = child->getNextSibling()) { if (child->getNodeType() == DOMNode::DOCUMENT_TYPE_NODE) continue; // check for NOTATION or ENTITY clash if(child->getNodeType()==DOMNode::ELEMENT_NODE && includedDoc->getDoctype()!=NULL) { DOMNamedNodeMap *pAttributes = child->getAttributes(); XMLSize_t nSize = pAttributes->getLength(); for(XMLSize_t i=0;iitem(i); const DOMTypeInfo * typeInfo=pAttributeNode->getSchemaTypeInfo(); if(typeInfo && XMLString::equals(typeInfo->getTypeNamespace(), XMLUni::fgInfosetURIName)) { if(XMLString::equals(typeInfo->getTypeName(), XMLUni::fgNotationString)) { const XMLCh* notationName=pAttributeNode->getNodeValue(); DOMNotation* notat=(DOMNotation*)includedDoc->getDoctype()->getNotations()->getNamedItem(notationName); // ensure we have a DTD if(parsedDocument->getDoctype()==NULL) parsedDocument->insertBefore(parsedDocument->createDocumentType(parsedDocument->getDocumentElement()->getNodeName(), NULL,NULL), parsedDocument->getFirstChild()); DOMNotation* myNotation=(DOMNotation*)parsedDocument->getDoctype()->getNotations()->getNamedItem(notationName); if(myNotation==NULL) { // it's missing, add it parsedDocument->getDoctype()->getNotations()->setNamedItem(parsedDocument->importNode(notat, true)); } else if(XMLString::equals(myNotation->getPublicId(), notat->getPublicId()) && XMLString::equals(myNotation->getSystemId(), notat->getSystemId()) && XMLString::equals(myNotation->getBaseURI(), notat->getBaseURI())) { // it's duplicate, ignore it } else { // it's a conflict, report it XIncludeUtils::reportError(xincludeNode, XMLErrs::XIncludeConflictingNotation, notationName, parsedDocument->getDocumentURI()); } } else if(XMLString::equals(typeInfo->getTypeName(), XMLUni::fgEntityString)) { const XMLCh* entityName=pAttributeNode->getNodeValue(); DOMEntity* ent=(DOMEntity*)includedDoc->getDoctype()->getEntities()->getNamedItem(entityName); // ensure we have a DTD if(parsedDocument->getDoctype()==NULL) parsedDocument->insertBefore(parsedDocument->createDocumentType(parsedDocument->getDocumentElement()->getNodeName(), NULL,NULL), parsedDocument->getFirstChild()); DOMEntity* myEnt=(DOMEntity*)parsedDocument->getDoctype()->getEntities()->getNamedItem(entityName); if(myEnt==NULL) { // it's missing, add it parsedDocument->getDoctype()->getEntities()->setNamedItem(parsedDocument->importNode(ent, true)); } else if(XMLString::equals(myEnt->getPublicId(), ent->getPublicId()) && XMLString::equals(myEnt->getSystemId(), ent->getSystemId()) && XMLString::equals(myEnt->getBaseURI(), ent->getBaseURI())) { // it's duplicate, ignore it } else { // it's a conflict, report it XIncludeUtils::reportError(xincludeNode, XMLErrs::XIncludeConflictingEntity, entityName, parsedDocument->getDocumentURI()); } } } } } DOMNode *newNode = parsedDocument->importNode(child, true); DOMNode *newChild = frag->appendChild(newNode); // don't process the node now, wait until it is placed in the final position delayedProcessing.addElement(newChild); //parseDOMNodeDoingXInclude(newChild, parsedDocument, entityResolver); } includeParent->replaceChild(frag, xincludeNode); frag->release(); for(XMLSize_t i=0;ireplaceChild(includedText, xincludeNode); modifiedNode = true; } } if (includedDoc) includedDoc->release(); return modifiedNode; } DOMDocument * XIncludeUtils::doXIncludeXMLFileDOM(const XMLCh *href, const XMLCh *relativeHref, DOMNode *includeNode, DOMDocument *parsedDocument, XMLEntityHandler* entityResolver){ if (XIncludeUtils::isInCurrentInclusionHistoryStack(href)){ /* including something back up the current history */ XIncludeUtils::reportError(parsedDocument, XMLErrs::XIncludeCircularInclusionLoop, href, href); return NULL; } if (XMLString::equals(href, parsedDocument->getBaseURI())){ /* trying to include itself */ XIncludeUtils::reportError(parsedDocument, XMLErrs::XIncludeCircularInclusionDocIncludesSelf, href, href); return NULL; } /* Instantiate the DOM parser. */ XercesDOMParser parser; parser.setDoNamespaces(true); /* don't want to recurse the xi processing here */ parser.setDoXInclude(false); /* create the schema info nodes, so that we can detect conflicting notations */ parser.setCreateSchemaInfo(true); XMLInternalErrorHandler xierrhandler; parser.setErrorHandler(&xierrhandler); DOMDocument *includedNode = NULL; try { InputSource* is=NULL; Janitor janIS(is); if(entityResolver) { XMLResourceIdentifier resIdentifier(XMLResourceIdentifier::ExternalEntity, relativeHref, NULL, NULL, includeNode->getBaseURI()); is=entityResolver->resolveEntity(&resIdentifier); janIS.reset(is); } if(janIS.get()!=NULL) parser.parse(*janIS.get()); else parser.parse(href); /* need to be able to release the parser but keep the document */ if (!xierrhandler.getSawError() && !xierrhandler.getSawFatal()) includedNode = parser.adoptDocument(); } catch (const XMLException& /*toCatch*/) { XIncludeUtils::reportError(parsedDocument, XMLErrs::XIncludeResourceErrorWarning, href, href); } catch (const DOMException& /*toCatch*/) { XIncludeUtils::reportError(parsedDocument, XMLErrs::XIncludeResourceErrorWarning, href, href); } catch (...) { XIncludeUtils::reportError(parsedDocument, XMLErrs::XIncludeResourceErrorWarning, href, href); } //addDocumentURIToCurrentInclusionHistoryStack(href); if(includedNode != NULL){ /* baseURI fixups - see http://www.w3.org/TR/xinclude/#base for details. */ DOMElement *topLevelElement = includedNode->getDocumentElement(); if (topLevelElement && topLevelElement->getNodeType() == DOMNode::ELEMENT_NODE ){ XMLUri parentURI(includeNode->getBaseURI()); XMLUri includedURI(includedNode->getBaseURI()); /* if the paths differ we need to add a base attribute */ if (!XMLString::equals(parentURI.getPath(), includedURI.getPath())){ if (getBaseAttrValue(topLevelElement) == NULL){ /* need to calculate the proper path difference to get the relativePath */ topLevelElement->setAttribute(fgXIBaseAttrName, relativeHref); } else { /* the included node has base of its own which takes precedence */ XIncludeLocation xil(getBaseAttrValue(topLevelElement)); if (getBaseAttrValue(includeNode) != NULL){ /* prepend any specific base modification of the xinclude node */ xil.prependPath(getBaseAttrValue(includeNode)); } topLevelElement->setAttribute(fgXIBaseAttrName, xil.getLocation()); } } } } return includedNode; } DOMText * XIncludeUtils::doXIncludeTEXTFileDOM(const XMLCh *href, const XMLCh *relativeHref, const XMLCh *encoding, DOMNode *includeNode, DOMDocument *parsedDocument, XMLEntityHandler* entityResolver){ if (encoding == NULL) /* "UTF-8" is stipulated default by spec */ encoding = XMLUni::fgUTF8EncodingString; XMLTransService::Codes failReason; XMLTranscoder* transcoder = XMLPlatformUtils::fgTransService->makeNewTranscoderFor(encoding, failReason, 16*1024); Janitor janTranscoder(transcoder); if (failReason){ XIncludeUtils::reportError(parsedDocument, XMLErrs::XIncludeCannotOpenFile, href, href); return NULL; } //addDocumentURIToCurrentInclusionHistoryStack(href); InputSource* is=NULL; Janitor janIS(is); if(entityResolver) { XMLResourceIdentifier resIdentifier(XMLResourceIdentifier::ExternalEntity, relativeHref, NULL, NULL, includeNode->getBaseURI()); is=entityResolver->resolveEntity(&resIdentifier); janIS.reset(is); } if(janIS.get()==NULL) janIS.reset(new URLInputSource(href)); if(janIS.get()==NULL) { XIncludeUtils::reportError(parsedDocument, XMLErrs::XIncludeCannotOpenFile, href, href); return NULL; } BinInputStream* stream=janIS.get()->makeStream(); if(stream==NULL) { XIncludeUtils::reportError(parsedDocument, XMLErrs::XIncludeCannotOpenFile, href, href); return NULL; } Janitor janStream(stream); const XMLSize_t maxToRead=16*1024; XMLByte* buffer=(XMLByte*)XMLPlatformUtils::fgMemoryManager->allocate(maxToRead * sizeof(XMLByte)); if(buffer==NULL) throw OutOfMemoryException(); ArrayJanitor janBuffer(buffer, XMLPlatformUtils::fgMemoryManager); XMLCh* xmlChars=(XMLCh*)XMLPlatformUtils::fgMemoryManager->allocate(maxToRead*2*sizeof(XMLCh)); if(xmlChars==NULL) throw OutOfMemoryException(); ArrayJanitor janUniBuffer(xmlChars, XMLPlatformUtils::fgMemoryManager); unsigned char *charSizes = (unsigned char *)XMLPlatformUtils::fgMemoryManager->allocate(maxToRead * sizeof(unsigned char)); if(charSizes==NULL) throw OutOfMemoryException(); ArrayJanitor janCharSizes(charSizes, XMLPlatformUtils::fgMemoryManager); XMLSize_t nRead, nOffset=0; XMLBuffer repository; while((nRead=stream->readBytes(buffer+nOffset, maxToRead-nOffset))>0){ XMLSize_t bytesEaten=0; XMLSize_t nCount = transcoder->transcodeFrom(buffer, nRead, xmlChars, maxToRead*2, bytesEaten, charSizes); repository.append(xmlChars, nCount); if(bytesEatencreateTextNode(repository.getRawBuffer()); } /*static*/ bool XIncludeUtils::isXIIncludeDOMNode(DOMNode *node){ const XMLCh *nodeName = node->getLocalName(); const XMLCh *namespaceURI = node->getNamespaceURI(); return isXIIncludeElement(nodeName, namespaceURI); } /*static*/ bool XIncludeUtils::isXIFallbackDOMNode(DOMNode *node){ const XMLCh *nodeName = node->getLocalName(); const XMLCh *namespaceURI = node->getNamespaceURI(); return isXIFallbackElement(nodeName, namespaceURI); } /*static*/ bool XIncludeUtils::isXIIncludeElement(const XMLCh *name, const XMLCh *namespaceURI){ if (namespaceURI == NULL || name == NULL){ /* no namespaces not supported */ return false; } if (XMLString::equals(name, fgXIIncludeQName) && XMLString::equals(namespaceURI, fgXIIIncludeNamespaceURI)){ return true; } return false; } /*static*/ bool XIncludeUtils::isXIFallbackElement(const XMLCh *name, const XMLCh *namespaceURI){ if (namespaceURI == NULL || name == NULL){ /* no namespaces not supported */ return false; } if (XMLString::equals(name, fgXIFallbackQName) && XMLString::equals(namespaceURI, fgXIIIncludeNamespaceURI)){ return true; } return false; } /* 4.1.1 */ const XMLCh * XIncludeUtils::getEscapedHRefAttrValue(const XMLCh * /*hrefAttrValue*/, bool & /*needsDeallocating*/){ XMLCh *escapedAttr = NULL; return escapedAttr; } /* 4.1.2 */ bool XIncludeUtils::setContentNegotiation(const XMLCh * /*acceptAttrValue*/, const XMLCh * /*acceptLangAttrValue*/){ return false; } bool XIncludeUtils::checkTextIsValidForInclude(XMLCh * /*includeChars*/){ return false; } // ======================================================== // the stack utilities are slightly convoluted debug versions, they // will be pared down for the release code // ======================================================== static XIncludeHistoryNode * getTopOfCurrentInclusionHistoryStack(XIncludeHistoryNode *head){ XIncludeHistoryNode *historyCursor = head; if (historyCursor == NULL){ return NULL; } while (historyCursor->next != NULL){ historyCursor = historyCursor->next; } return historyCursor; } bool XIncludeUtils::addDocumentURIToCurrentInclusionHistoryStack(const XMLCh *URItoAdd){ XIncludeHistoryNode *newNode = (XIncludeHistoryNode *)XMLPlatformUtils::fgMemoryManager->allocate(sizeof(XIncludeHistoryNode)); if (newNode == NULL){ return false; } newNode->URI = XMLString::replicate(URItoAdd); newNode->next = NULL; if (fIncludeHistoryHead == NULL){ fIncludeHistoryHead = newNode; return true; } XIncludeHistoryNode *topNode = getTopOfCurrentInclusionHistoryStack(fIncludeHistoryHead); topNode->next = newNode; return true; } bool XIncludeUtils::isInCurrentInclusionHistoryStack(const XMLCh *toFind){ XIncludeHistoryNode *historyCursor = fIncludeHistoryHead; /* walk the list */ while (historyCursor != NULL){ if (XMLString::equals(toFind, historyCursor->URI)){ return true; } historyCursor = historyCursor->next; } return false; } XIncludeHistoryNode * XIncludeUtils::popFromCurrentInclusionHistoryStack(const XMLCh * /*toPop*/){ XIncludeHistoryNode *historyCursor = fIncludeHistoryHead; XIncludeHistoryNode *penultimateCursor = historyCursor; if (fIncludeHistoryHead == NULL){ return NULL; } while (historyCursor->next != NULL){ penultimateCursor = historyCursor; historyCursor = historyCursor->next; } if (historyCursor == fIncludeHistoryHead){ fIncludeHistoryHead = NULL; } else { penultimateCursor->next = NULL; } XMLString::release(&(historyCursor->URI)); XMLPlatformUtils::fgMemoryManager->deallocate((void *)historyCursor); return NULL; } void XIncludeUtils::freeInclusionHistory(){ XIncludeHistoryNode *historyCursor = XIncludeUtils::fIncludeHistoryHead; while (historyCursor != NULL){ XIncludeHistoryNode *next = historyCursor->next; XMLString::release(&(historyCursor->URI)); XMLPlatformUtils::fgMemoryManager->deallocate((void *)historyCursor); historyCursor = next; } XIncludeUtils::fIncludeHistoryHead = NULL; } bool XIncludeUtils::reportError(const DOMNode* const /*errorNode*/ , XMLErrs::Codes errorType , const XMLCh* const errorMsg , const XMLCh * const href) { bool toContinueProcess = true; /* default value for no error handler */ const XMLCh* const systemId = href; const XMLCh* const publicId = href; /* TODO - look these up somehow? */ const XMLFileLoc lineNum = 0; const XMLFileLoc colNum = 0; if (fErrorReporter) { // Load the message into a local for display const XMLSize_t msgSize = 1023; XMLCh errText[msgSize + 1]; /* TODO - investigate whether this is complete */ XMLMsgLoader *errMsgLoader = XMLPlatformUtils::loadMsgSet(XMLUni::fgXMLErrDomain); if (errorMsg == NULL){ if (errMsgLoader->loadMsg(errorType, errText, msgSize)) { // Probably should load a default msg here } } else { if (errMsgLoader->loadMsg(errorType, errText, msgSize, errorMsg)) { // Probably should load a default msg here } } fErrorReporter->error(errorType , XMLUni::fgXMLErrDomain //fgXMLErrDomain , XMLErrs::errorType(errorType) , errText , systemId , publicId , lineNum , colNum); } if (XMLErrs::isFatal(errorType)) fErrorCount++; return toContinueProcess; } /* TODO - declared in this file for convenience, prob ought to be moved out to util/XMLUni.cpp before releasing */ const XMLCh XIncludeUtils::fgXIIncludeQName[] = { chLatin_i, chLatin_n, chLatin_c, chLatin_l, chLatin_u, chLatin_d, chLatin_e, chNull }; const XMLCh XIncludeUtils::fgXIFallbackQName[] = { chLatin_f, chLatin_a, chLatin_l, chLatin_l, chLatin_b, chLatin_a, chLatin_c, chLatin_k, chNull }; const XMLCh XIncludeUtils::fgXIIncludeHREFAttrName[] = { chLatin_h, chLatin_r, chLatin_e, chLatin_f, chNull }; const XMLCh XIncludeUtils::fgXIIncludeParseAttrName[] = { chLatin_p, chLatin_a, chLatin_r, chLatin_s, chLatin_e, chNull }; const XMLCh XIncludeUtils::fgXIIncludeXPointerAttrName[] = { chLatin_x, chLatin_p, chLatin_o, chLatin_i, chLatin_n, chLatin_t, chLatin_e, chLatin_r, chNull }; const XMLCh XIncludeUtils::fgXIIncludeEncodingAttrName[] = { chLatin_e, chLatin_n, chLatin_c, chLatin_o, chLatin_d, chLatin_i, chLatin_n, chLatin_g, chNull }; const XMLCh XIncludeUtils::fgXIIncludeAcceptAttrName[] = { chLatin_a, chLatin_c, chLatin_c, chLatin_e, chLatin_p, chLatin_t, chNull }; const XMLCh XIncludeUtils::fgXIIncludeAcceptLanguageAttrName[] = { chLatin_a, chLatin_c, chLatin_c, chLatin_e, chLatin_p, chLatin_t, chDash, chLatin_l, chLatin_a, chLatin_n, chLatin_g, chLatin_u, chLatin_a, chLatin_g, chLatin_e, chNull }; const XMLCh XIncludeUtils::fgXIIncludeParseAttrXMLValue[] = { chLatin_x, chLatin_m, chLatin_l, chNull }; const XMLCh XIncludeUtils::fgXIIncludeParseAttrTextValue[] = { chLatin_t, chLatin_e, chLatin_x, chLatin_t, chNull }; const XMLCh XIncludeUtils::fgXIIIncludeNamespaceURI[] = { /* http://www.w3.org/2001/XInclude */ chLatin_h, chLatin_t, chLatin_t, chLatin_p, chColon, chForwardSlash , chForwardSlash, chLatin_w, chLatin_w, chLatin_w, chPeriod , chLatin_w, chDigit_3, chPeriod, chLatin_o, chLatin_r, chLatin_g , chForwardSlash, chDigit_2, chDigit_0, chDigit_0, chDigit_1 , chForwardSlash, chLatin_X, chLatin_I, chLatin_n, chLatin_c, chLatin_l , chLatin_u, chLatin_d, chLatin_e, chNull }; const XMLCh XIncludeUtils::fgXIBaseAttrName[] = { chLatin_x, chLatin_m, chLatin_l, chColon, chLatin_b, chLatin_a, chLatin_s, chLatin_e, chNull }; XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/xinclude/XIncludeDOMDocumentProcessor.cpp0000644000175000017500000000572311012165027024461 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XIncludeDOMDocumentProcessor.cpp 655706 2008-05-13 01:08:39Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN DOMDocument * XIncludeDOMDocumentProcessor::doXIncludeDOMProcess(const DOMDocument * const source, XMLErrorReporter *errorHandler, XMLEntityHandler* entityResolver /*=NULL*/){ XIncludeUtils xiu(errorHandler); DOMImplementation* impl = source->getImplementation(); DOMDocument *xincludedDocument = impl->createDocument(); try { /* set up the declaration etc of the output document to match the source */ xincludedDocument->setDocumentURI( source->getDocumentURI()); xincludedDocument->setXmlStandalone( source->getXmlStandalone()); xincludedDocument->setXmlVersion( source->getXmlVersion()); /* copy entire source document into the xincluded document. Xincluded document can then be modified in place */ DOMNode *child = source->getFirstChild(); for (; child != NULL; child = child->getNextSibling()){ if (child->getNodeType() == DOMNode::DOCUMENT_TYPE_NODE){ /* I am simply ignoring these at the moment */ continue; } DOMNode *newNode = xincludedDocument->importNode(child, true); xincludedDocument->appendChild(newNode); } DOMNode *docNode = xincludedDocument->getDocumentElement(); /* parse and include the document node */ xiu.parseDOMNodeDoingXInclude(docNode, xincludedDocument, entityResolver); xincludedDocument->normalizeDocument(); } catch(const XMLErrs::Codes) { xincludedDocument->release(); return NULL; } catch(...) { xincludedDocument->release(); throw; } return xincludedDocument; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/validators/0000755000175000017500000000000011363617241016642 5ustar borisborisxerces-c-3.1.1/src/xercesc/validators/schema/0000755000175000017500000000000011363617240020101 5ustar borisborisxerces-c-3.1.1/src/xercesc/validators/schema/NamespaceScope.hpp0000644000175000017500000001364711126201344023502 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: NamespaceScope.hpp 729944 2008-12-29 17:03:32Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_NAMESPACESCOPE_HPP) #define XERCESC_INCLUDE_GUARD_NAMESPACESCOPE_HPP #include XERCES_CPP_NAMESPACE_BEGIN // Define a pure interface to allow XercesXPath to work on both NamespaceScope and DOMXPathNSResolver class VALIDATORS_EXPORT XercesNamespaceResolver { public: virtual unsigned int getNamespaceForPrefix(const XMLCh* const prefix) const = 0; }; // // NamespaceScope provides a data structure for mapping namespace prefixes // to their URI's. The mapping accurately reflects the scoping of namespaces // at a particular instant in time. // class VALIDATORS_EXPORT NamespaceScope : public XMemory, public XercesNamespaceResolver { public : // ----------------------------------------------------------------------- // Class specific data types // // These really should be private, but some of the compilers we have to // support are too dumb to deal with that. // // PrefMapElem // fURIId is the id of the URI from the validator's URI map. The // fPrefId is the id of the prefix from our own prefix pool. The // namespace stack consists of these elements. // // StackElem // The fMapCapacity is how large fMap has grown so far. fMapCount // is how many of them are valid right now. // ----------------------------------------------------------------------- struct PrefMapElem : public XMemory { unsigned int fPrefId; unsigned int fURIId; }; struct StackElem : public XMemory { PrefMapElem* fMap; unsigned int fMapCapacity; unsigned int fMapCount; }; // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- NamespaceScope(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); NamespaceScope(const NamespaceScope* const initialize, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); ~NamespaceScope(); // ----------------------------------------------------------------------- // Stack access // ----------------------------------------------------------------------- unsigned int increaseDepth(); unsigned int decreaseDepth(); // ----------------------------------------------------------------------- // Prefix map methods // ----------------------------------------------------------------------- void addPrefix(const XMLCh* const prefixToAdd, const unsigned int uriId); virtual unsigned int getNamespaceForPrefix(const XMLCh* const prefixToMap) const; // ----------------------------------------------------------------------- // Miscellaneous methods // ----------------------------------------------------------------------- bool isEmpty() const; void reset(const unsigned int emptyId); unsigned int getEmptyNamespaceId() const; private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- NamespaceScope(const NamespaceScope&); NamespaceScope& operator=(const NamespaceScope&); // ----------------------------------------------------------------------- // Private helper methods // ----------------------------------------------------------------------- void expandMap(StackElem* const toExpand); void expandStack(); // ----------------------------------------------------------------------- // Data members // // fEmptyNamespaceId // This is the special URI id for the "" namespace, which is magic // because of the xmlns="" operation. // // fPrefixPool // This is the prefix pool where prefixes are hashed and given unique // ids. These ids are used to track prefixes in the element stack. // // fStack // fStackCapacity // fStackTop // This the stack array. Its an array of pointers to StackElem // structures. The capacity is the current high water mark of the // stack. The top is the current top of stack (i.e. the part of it // being used.) // ----------------------------------------------------------------------- unsigned int fEmptyNamespaceId; unsigned int fStackCapacity; unsigned int fStackTop; XMLStringPool fPrefixPool; StackElem** fStack; MemoryManager* fMemoryManager; }; // --------------------------------------------------------------------------- // NamespaceScope: Miscellaneous methods // --------------------------------------------------------------------------- inline bool NamespaceScope::isEmpty() const { return (fStackTop == 0); } inline unsigned int NamespaceScope::getEmptyNamespaceId() const { return fEmptyNamespaceId; } XERCES_CPP_NAMESPACE_END #endif /** * End of file NameSpaceScope.hpp */ xerces-c-3.1.1/src/xercesc/validators/schema/XUtil.hpp0000644000175000017500000000472110606722647021672 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XUtil.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_XUTIL_HPP) #define XERCESC_INCLUDE_GUARD_XUTIL_HPP #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN class DOMNode; class DOMElement; /** * Some useful utility methods. */ class VALIDATORS_EXPORT XUtil { public: // Finds and returns the first child element node. static DOMElement* getFirstChildElement(const DOMNode* const parent); // Finds and returns the first child node with the given qualifiedname. static DOMElement* getFirstChildElementNS(const DOMNode* const parent , const XMLCh** const elemNames , const XMLCh* const uriStr , unsigned int length); // Finds and returns the next sibling element node. static DOMElement* getNextSiblingElement(const DOMNode* const node); static DOMElement* getNextSiblingElementNS(const DOMNode* const node , const XMLCh** const elemNames , const XMLCh* const uriStr , unsigned int length); private: // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- // This class cannot be instantiated. XUtil() {}; ~XUtil() {}; }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/validators/schema/SchemaInfo.cpp0000644000175000017500000002030111350705133022610 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SchemaInfo.cpp 925236 2010-03-19 14:29:47Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // SchemaInfo: Constructors and Destructor // --------------------------------------------------------------------------- SchemaInfo::SchemaInfo(const unsigned short elemAttrDefaultQualified, const int blockDefault, const int finalDefault, const int targetNSURI, const NamespaceScope* const currNamespaceScope, const XMLCh* const schemaURL, const XMLCh* const targetNSURIString, const DOMElement* const root, XMLScanner* xmlScanner, MemoryManager* const manager) : fAdoptInclude(false) , fProcessed(false) , fElemAttrDefaultQualified(elemAttrDefaultQualified) , fBlockDefault(blockDefault) , fFinalDefault(finalDefault) , fTargetNSURI(targetNSURI) , fNamespaceScope(0) , fSchemaRootElement(root) , fIncludeInfoList(0) , fImportedInfoList(0) , fImportingInfoList(0) , fFailedRedefineList(0) , fRecursingAnonTypes(0) , fRecursingTypeNames(0) , fNonXSAttList(0) , fValidationContext(0) , fMemoryManager(manager) { fImportingInfoList = new (fMemoryManager) RefVectorOf(4, false, fMemoryManager); memset( fTopLevelComponents, 0, sizeof(fTopLevelComponents[0]) * C_Count); memset( fLastTopLevelComponent, 0, sizeof(fLastTopLevelComponent[0]) * C_Count); fNonXSAttList = new (fMemoryManager) ValueVectorOf(2, fMemoryManager); fValidationContext = new (fMemoryManager) ValidationContextImpl(fMemoryManager); fNamespaceScope = new (fMemoryManager) NamespaceScope(currNamespaceScope, fMemoryManager); fCurrentSchemaURL = XMLString::replicate(schemaURL, fMemoryManager); fTargetNSURIString = XMLString::replicate(targetNSURIString, fMemoryManager); fValidationContext->setScanner (xmlScanner); fValidationContext->setNamespaceScope(fNamespaceScope); } SchemaInfo::~SchemaInfo() { fMemoryManager->deallocate(fCurrentSchemaURL);//delete [] fCurrentSchemaURL; fMemoryManager->deallocate(fTargetNSURIString); delete fImportedInfoList; if (fAdoptInclude) delete fIncludeInfoList; delete fImportingInfoList; delete fFailedRedefineList; delete fRecursingAnonTypes; delete fRecursingTypeNames; for (unsigned int i = 0; i < C_Count; i++) { delete fTopLevelComponents[i]; } delete fNonXSAttList; delete fValidationContext; delete fNamespaceScope; } // --------------------------------------------------------------------------- // SchemaInfo: // --------------------------------------------------------------------------- DOMElement* SchemaInfo::getTopLevelComponent(const unsigned short compCategory, const XMLCh* const compName, const XMLCh* const name, SchemaInfo** enclosingSchema) { if (fSchemaRootElement == 0) return 0; SchemaInfo* currentInfo = this; DOMElement* child = getTopLevelComponent(compCategory, compName, name); if (child == 0) { XMLSize_t listSize = (fIncludeInfoList) ? fIncludeInfoList->size() : 0; for (XMLSize_t i=0; i < listSize; i++) { currentInfo = fIncludeInfoList->elementAt(i); if (currentInfo == this) continue; child = currentInfo->getTopLevelComponent(compCategory, compName, name); if (child != 0) { *enclosingSchema = currentInfo; break; } } } return child; } DOMElement* SchemaInfo::getTopLevelComponent(const unsigned short compCategory, const XMLCh* const compName, const XMLCh* const name) { if (fSchemaRootElement == 0 || compCategory >= C_Count) return 0; DOMElement* child = XUtil::getFirstChildElement(fSchemaRootElement); if (!child) return 0; RefHashTableOf* compList = fTopLevelComponents[compCategory]; if (fTopLevelComponents[compCategory] == 0) { compList= new (fMemoryManager) RefHashTableOf(17, false, fMemoryManager); fTopLevelComponents[compCategory] = compList; } else { DOMElement* cachedChild = compList->get(name); if(cachedChild) return cachedChild; child = fLastTopLevelComponent[compCategory]; } DOMElement* redefParent = (DOMElement*) child->getParentNode(); // Parent is not "redefine" if (!XMLString::equals(redefParent->getLocalName(),SchemaSymbols::fgELT_REDEFINE)) redefParent = 0; while (child != 0) { fLastTopLevelComponent[compCategory]=child; if (XMLString::equals(child->getLocalName(), compName)) { const XMLCh* cName=child->getAttribute(SchemaSymbols::fgATT_NAME); compList->put((void*)cName, child); if (XMLString::equals(cName, name)) return child; } else if (XMLString::equals(child->getLocalName(),SchemaSymbols::fgELT_REDEFINE) && (!fFailedRedefineList || !fFailedRedefineList->containsElement(child))) { // if redefine DOMElement* redefineChild = XUtil::getFirstChildElement(child); while (redefineChild != 0) { fLastTopLevelComponent[compCategory]=redefineChild; if ((!fFailedRedefineList || !fFailedRedefineList->containsElement(redefineChild)) && XMLString::equals(redefineChild->getLocalName(), compName)) { const XMLCh* rName=redefineChild->getAttribute(SchemaSymbols::fgATT_NAME); compList->put((void*)rName, redefineChild); if (XMLString::equals(rName, name)) return redefineChild; } redefineChild = XUtil::getNextSiblingElement(redefineChild); } } child = XUtil::getNextSiblingElement(child); if (child == 0 && redefParent) { child = XUtil::getNextSiblingElement(redefParent); redefParent = 0; } } return child; } void SchemaInfo::updateImportingInfo(SchemaInfo* const importingInfo) { if (!fImportingInfoList->containsElement(importingInfo)) { fImportingInfoList->addElement(importingInfo); } XMLSize_t listSize = importingInfo->fImportingInfoList->size(); for (XMLSize_t i=0; i < listSize; i++) { SchemaInfo* tmpInfo = importingInfo->fImportingInfoList->elementAt(i); if (tmpInfo != this && !fImportingInfoList->containsElement(tmpInfo)) { fImportingInfoList->addElement(tmpInfo); } } } XERCES_CPP_NAMESPACE_END /** * End of file SchemaInfo.cpp */ xerces-c-3.1.1/src/xercesc/validators/schema/XercesElementWildcard.cpp0000644000175000017500000001116011030154365025014 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XercesElementWildcard.cpp 671133 2008-06-24 11:22:29Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Local methods // --------------------------------------------------------------------------- /** * XercesElementWildcard is used to check whether two element declarations conflict */ /** * Check whether two element declarations conflict */ bool XercesElementWildcard::conflict(SchemaGrammar* const pGrammar, ContentSpecNode::NodeTypes type1, QName* q1, ContentSpecNode::NodeTypes type2, QName* q2, SubstitutionGroupComparator* comparator) { if (type1 == ContentSpecNode::Leaf && type2 == ContentSpecNode::Leaf) { if (comparator->isEquivalentTo(q1, q2) || comparator->isEquivalentTo(q2, q1)) return true; } else if (type1 == ContentSpecNode::Leaf) { return uriInWildcard(pGrammar, q1, q2->getURI(), type2, comparator); } else if (type2 == ContentSpecNode::Leaf) { return uriInWildcard(pGrammar, q2, q1->getURI(), type1, comparator); } else { return wildcardIntersect(type1, q1->getURI(), type2, q2->getURI()); } return false; } bool XercesElementWildcard::uriInWildcard(SchemaGrammar* const pGrammar, QName* qname, unsigned int wildcard, ContentSpecNode::NodeTypes wtype, SubstitutionGroupComparator* comparator) { if ((wtype & 0x0f)== ContentSpecNode::Any) { return true; } else if ((wtype & 0x0f)== ContentSpecNode::Any_NS) { // substitution of "uri" satisfies "wtype:wildcard" return comparator->isAllowedByWildcard(pGrammar, qname, wildcard, false); } else if ((wtype & 0x0f)== ContentSpecNode::Any_Other) { // substitution of "uri" satisfies "wtype:wildcard" return comparator->isAllowedByWildcard(pGrammar, qname, wildcard, true); } return false; } bool XercesElementWildcard::wildcardIntersect(ContentSpecNode::NodeTypes t1, unsigned int w1, ContentSpecNode::NodeTypes t2, unsigned int w2) { if (((t1 & 0x0f) == ContentSpecNode::Any) || ((t2 & 0x0f) == ContentSpecNode::Any)) { // if either one is "##any", then intersects return true; } else if (((t1 & 0x0f) == ContentSpecNode::Any_NS) && ((t2 & 0x0f) == ContentSpecNode::Any_NS)) { // if both are "some_namespace" and equal, then intersects return w1 == w2; } else if (((t1 & 0x0f) == ContentSpecNode::Any_Other) && ((t2 & 0x0f) == ContentSpecNode::Any_Other)) { // if both are "##other", then intersects return true; } // Below we assume that empty string has id 1. // else if (((t1 & 0x0f) == ContentSpecNode::Any_NS) && ((t2 & 0x0f) == ContentSpecNode::Any_Other)) { return w1 != w2 && w1 != 1; } else if (((t1 & 0x0f) == ContentSpecNode::Any_Other) && ((t2 & 0x0f) == ContentSpecNode::Any_NS)) { return w1 != w2 && w2 != 1; } return false; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/validators/schema/XercesAttGroupInfo.hpp0000644000175000017500000001734211360344373024355 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XercesAttGroupInfo.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_XERCESATTGROUPINFO_HPP) #define XERCESC_INCLUDE_GUARD_XERCESATTGROUPINFO_HPP /** * The class act as a place holder to store attributeGroup information. * * The class is intended for internal use. */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include XERCES_CPP_NAMESPACE_BEGIN class VALIDATORS_EXPORT XercesAttGroupInfo : public XSerializable, public XMemory { public: // ----------------------------------------------------------------------- // Public Constructors/Destructor // ----------------------------------------------------------------------- XercesAttGroupInfo ( unsigned int attGroupNameId , unsigned int attGroupNamespaceId , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); ~XercesAttGroupInfo(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- bool containsTypeWithId() const; XMLSize_t attributeCount() const; XMLSize_t anyAttributeCount() const; unsigned int getNameId() const; unsigned int getNamespaceId() const; SchemaAttDef* attributeAt(const XMLSize_t index); const SchemaAttDef* attributeAt(const XMLSize_t index) const; SchemaAttDef* anyAttributeAt(const XMLSize_t index); const SchemaAttDef* anyAttributeAt(const XMLSize_t index) const; SchemaAttDef* getCompleteWildCard() const; const SchemaAttDef* getAttDef(const XMLCh* const baseName, const int uriId) const; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- void setTypeWithId(const bool other); void addAttDef(SchemaAttDef* const toAdd, const bool toClone = false); void addAnyAttDef(SchemaAttDef* const toAdd, const bool toClone = false); void setCompleteWildCard(SchemaAttDef* const toSet); // ----------------------------------------------------------------------- // Query methods // ----------------------------------------------------------------------- bool containsAttribute(const XMLCh* const name, const unsigned int uri); /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(XercesAttGroupInfo) XercesAttGroupInfo(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XercesAttGroupInfo(const XercesAttGroupInfo& elemInfo); XercesAttGroupInfo& operator= (const XercesAttGroupInfo& other); // ----------------------------------------------------------------------- // Private data members // ----------------------------------------------------------------------- bool fTypeWithId; unsigned int fNameId; unsigned int fNamespaceId; RefVectorOf* fAttributes; RefVectorOf* fAnyAttributes; SchemaAttDef* fCompleteWildCard; MemoryManager* fMemoryManager; }; // --------------------------------------------------------------------------- // XercesAttGroupInfo: Getter methods // --------------------------------------------------------------------------- inline bool XercesAttGroupInfo::containsTypeWithId() const { return fTypeWithId; } inline XMLSize_t XercesAttGroupInfo::attributeCount() const { if (fAttributes) { return fAttributes->size(); } return 0; } inline XMLSize_t XercesAttGroupInfo::anyAttributeCount() const { if (fAnyAttributes) { return fAnyAttributes->size(); } return 0; } inline unsigned int XercesAttGroupInfo::getNameId() const { return fNameId; } inline unsigned int XercesAttGroupInfo::getNamespaceId() const { return fNamespaceId; } inline SchemaAttDef* XercesAttGroupInfo::attributeAt(const XMLSize_t index) { if (fAttributes) { return fAttributes->elementAt(index); } return 0; } inline const SchemaAttDef* XercesAttGroupInfo::attributeAt(const XMLSize_t index) const { if (fAttributes) { return fAttributes->elementAt(index); } return 0; } inline SchemaAttDef* XercesAttGroupInfo::anyAttributeAt(const XMLSize_t index) { if (fAnyAttributes) { return fAnyAttributes->elementAt(index); } return 0; } inline const SchemaAttDef* XercesAttGroupInfo::anyAttributeAt(const XMLSize_t index) const { if (fAnyAttributes) { return fAnyAttributes->elementAt(index); } return 0; } inline SchemaAttDef* XercesAttGroupInfo::getCompleteWildCard() const { return fCompleteWildCard; } // --------------------------------------------------------------------------- // XercesAttGroupInfo: Setter methods // --------------------------------------------------------------------------- inline void XercesAttGroupInfo::setTypeWithId(const bool other) { fTypeWithId = other; } inline void XercesAttGroupInfo::addAttDef(SchemaAttDef* const toAdd, const bool toClone) { if (!fAttributes) { fAttributes = new (fMemoryManager) RefVectorOf(4, true, fMemoryManager); } if (toClone) { SchemaAttDef* clonedAttDef = new (fMemoryManager) SchemaAttDef(toAdd); if (!clonedAttDef->getBaseAttDecl()) clonedAttDef->setBaseAttDecl(toAdd); fAttributes->addElement(clonedAttDef); } else { fAttributes->addElement(toAdd); } } inline void XercesAttGroupInfo::addAnyAttDef(SchemaAttDef* const toAdd, const bool toClone) { if (!fAnyAttributes) { fAnyAttributes = new (fMemoryManager) RefVectorOf(2, true, fMemoryManager); } if (toClone) { SchemaAttDef* clonedAttDef = new (fMemoryManager) SchemaAttDef(toAdd); if (!clonedAttDef->getBaseAttDecl()) clonedAttDef->setBaseAttDecl(toAdd); fAnyAttributes->addElement(clonedAttDef); } else { fAnyAttributes->addElement(toAdd); } } inline void XercesAttGroupInfo::setCompleteWildCard(SchemaAttDef* const toSet) { if (fCompleteWildCard) { delete fCompleteWildCard; } fCompleteWildCard = toSet; } XERCES_CPP_NAMESPACE_END #endif /** * End of file XercesAttGroupInfo.hpp */ xerces-c-3.1.1/src/xercesc/validators/schema/SchemaInfo.hpp0000644000175000017500000003525211350705133022630 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SchemaInfo.hpp 925236 2010-03-19 14:29:47Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_SCHEMAINFO_HPP) #define XERCESC_INCLUDE_GUARD_SCHEMAINFO_HPP /** When in a , type definitions being used (and indeed * refs to 's and 's) may refer to info * items either in the schema being redefined, in the , * or else in the schema doing the redefining. Because of this * latter we have to be prepared sometimes to look for our type * definitions outside the schema stored in fSchemaRootElement. * This simple class does this; it's just a linked list that * lets us look at the 's on the queue; note also that this * should provide us with a mechanism to handle nested 's. * It's also a handy way of saving schema info when importing/including. */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Forward Declarations // --------------------------------------------------------------------------- class XMLScanner; class ValidationContext; class NamespaceScope; class VALIDATORS_EXPORT SchemaInfo : public XMemory { public: enum ListType { // Redefine is treated as an include IMPORT = 1, INCLUDE = 2 }; enum { C_ComplexType, C_SimpleType, C_Group, C_Attribute, C_AttributeGroup, C_Element, C_Notation, C_Count }; // ----------------------------------------------------------------------- // Constructor/Destructor // ----------------------------------------------------------------------- SchemaInfo(const unsigned short fElemAttrDefaultQualified, const int blockDefault, const int finalDefault, const int targetNSURI, const NamespaceScope* const currNamespaceScope, const XMLCh* const schemaURL, const XMLCh* const targetNSURIString, const DOMElement* const root, XMLScanner* xmlScanner, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); ~SchemaInfo(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- XMLCh* getCurrentSchemaURL() const; const XMLCh* getTargetNSURIString() const; const DOMElement* getRoot() const; bool getProcessed() const; int getBlockDefault() const; int getFinalDefault() const; int getTargetNSURI() const; NamespaceScope* getNamespaceScope() const; unsigned short getElemAttrDefaultQualified() const; BaseRefVectorEnumerator getImportingListEnumerator() const; ValueVectorOf* getRecursingAnonTypes() const; ValueVectorOf* getRecursingTypeNames() const; ValueVectorOf* getNonXSAttList() const; ValidationContext* getValidationContext() const; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- void setProcessed(const bool aValue = true); void setBlockDefault(const int aValue); void setFinalDefault(const int aValue); void setElemAttrDefaultQualified(const unsigned short aValue); void resetRoot (); // ----------------------------------------------------------------------- // Access methods // ----------------------------------------------------------------------- void addSchemaInfo(SchemaInfo* const toAdd, const ListType aListType); bool containsInfo(const SchemaInfo* const toCheck, const ListType aListType) const; SchemaInfo* getImportInfo(const unsigned int namespaceURI) const; DOMElement* getTopLevelComponent(const unsigned short compCategory, const XMLCh* const compName, const XMLCh* const name); DOMElement* getTopLevelComponent(const unsigned short compCategory, const XMLCh* const compName, const XMLCh* const name, SchemaInfo** enclosingSchema); void updateImportingInfo(SchemaInfo* const importingInfo); bool circularImportExist(const unsigned int nameSpaceURI); bool isFailedRedefine(const DOMElement* const anElem); void addFailedRedefine(const DOMElement* const anElem); void addRecursingType(const DOMElement* const elem, const XMLCh* const name); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- SchemaInfo(const SchemaInfo&); SchemaInfo& operator=(const SchemaInfo&); // ----------------------------------------------------------------------- // Private helper methods // ----------------------------------------------------------------------- void clearTopLevelComponents(); // ----------------------------------------------------------------------- // Private data members // ----------------------------------------------------------------------- bool fAdoptInclude; bool fProcessed; unsigned short fElemAttrDefaultQualified; int fBlockDefault; int fFinalDefault; int fTargetNSURI; NamespaceScope* fNamespaceScope; XMLCh* fCurrentSchemaURL; XMLCh* fTargetNSURIString; const DOMElement* fSchemaRootElement; RefVectorOf* fIncludeInfoList; RefVectorOf* fImportedInfoList; RefVectorOf* fImportingInfoList; ValueVectorOf* fFailedRedefineList; ValueVectorOf* fRecursingAnonTypes; ValueVectorOf* fRecursingTypeNames; RefHashTableOf* fTopLevelComponents[C_Count]; DOMElement* fLastTopLevelComponent[C_Count]; ValueVectorOf* fNonXSAttList; ValidationContext* fValidationContext; MemoryManager* fMemoryManager; }; // --------------------------------------------------------------------------- // SchemaInfo: Getter methods // --------------------------------------------------------------------------- inline unsigned short SchemaInfo::getElemAttrDefaultQualified() const { return fElemAttrDefaultQualified; } inline bool SchemaInfo::getProcessed() const { return fProcessed; } inline int SchemaInfo::getBlockDefault() const { return fBlockDefault; } inline int SchemaInfo::getFinalDefault() const { return fFinalDefault; } inline NamespaceScope* SchemaInfo::getNamespaceScope() const { return fNamespaceScope; } inline XMLCh* SchemaInfo::getCurrentSchemaURL() const { return fCurrentSchemaURL; } inline const XMLCh* SchemaInfo::getTargetNSURIString() const { return fTargetNSURIString; } inline const DOMElement* SchemaInfo::getRoot() const { return fSchemaRootElement; } inline int SchemaInfo::getTargetNSURI() const { return fTargetNSURI; } inline BaseRefVectorEnumerator SchemaInfo::getImportingListEnumerator() const { return BaseRefVectorEnumerator(fImportingInfoList); } inline ValueVectorOf* SchemaInfo::getRecursingAnonTypes() const { return fRecursingAnonTypes; } inline ValueVectorOf* SchemaInfo::getRecursingTypeNames() const { return fRecursingTypeNames; } inline ValueVectorOf* SchemaInfo::getNonXSAttList() const { return fNonXSAttList; } // --------------------------------------------------------------------------- // Setter methods // --------------------------------------------------------------------------- inline void SchemaInfo::setBlockDefault(const int aValue) { fBlockDefault = aValue; } inline void SchemaInfo::setFinalDefault(const int aValue) { fFinalDefault = aValue; } inline void SchemaInfo::setElemAttrDefaultQualified(const unsigned short aValue) { fElemAttrDefaultQualified = aValue; } inline void SchemaInfo::setProcessed(const bool aValue) { fProcessed = aValue; /* if (fProcessed && fIncludeInfoList) { unsigned int includeListLen = fIncludeInfoList->size()); for (unsigned int i = 0; i < includeListLen; i++) { fIncludeInfoList->elementAt(i)->clearTopLevelComponents(); } }*/ } inline void SchemaInfo::resetRoot () { fSchemaRootElement = 0; } // --------------------------------------------------------------------------- // SchemaInfo: Access methods // --------------------------------------------------------------------------- inline void SchemaInfo::addSchemaInfo(SchemaInfo* const toAdd, const ListType aListType) { if (aListType == IMPORT) { if (!fImportedInfoList) fImportedInfoList = new (fMemoryManager) RefVectorOf(4, false, fMemoryManager); if (!fImportedInfoList->containsElement(toAdd)) { fImportedInfoList->addElement(toAdd); toAdd->updateImportingInfo(this); } } else { if (!fIncludeInfoList) { fIncludeInfoList = new (fMemoryManager) RefVectorOf(8, false, fMemoryManager); fAdoptInclude = true; } if (!fIncludeInfoList->containsElement(toAdd)) { fIncludeInfoList->addElement(toAdd); //code was originally: //toAdd->fIncludeInfoList = fIncludeInfoList; //however for handling multiple imports this was causing //to schemaInfo's to have the same fIncludeInfoList which they //both owned so when it was deleted it crashed. if (toAdd->fIncludeInfoList) { if (toAdd->fIncludeInfoList != fIncludeInfoList) { XMLSize_t size = toAdd->fIncludeInfoList->size(); for (XMLSize_t i=0; icontainsElement(toAdd->fIncludeInfoList->elementAt(i))) { fIncludeInfoList->addElement(toAdd->fIncludeInfoList->elementAt(i)); } } size = fIncludeInfoList->size(); for (XMLSize_t j=0; jfIncludeInfoList->containsElement(fIncludeInfoList->elementAt(j))) { toAdd->fIncludeInfoList->addElement(fIncludeInfoList->elementAt(j)); } } } } else { toAdd->fIncludeInfoList = fIncludeInfoList; } } } } inline SchemaInfo* SchemaInfo::getImportInfo(const unsigned int namespaceURI) const { XMLSize_t importSize = (fImportedInfoList) ? fImportedInfoList->size() : 0; SchemaInfo* currInfo = 0; for (XMLSize_t i=0; i < importSize; i++) { currInfo = fImportedInfoList->elementAt(i); if (currInfo->getTargetNSURI() == (int) namespaceURI) return currInfo; } return 0; } inline ValidationContext* SchemaInfo::getValidationContext() const { return fValidationContext; } inline bool SchemaInfo::containsInfo(const SchemaInfo* const toCheck, const ListType aListType) const { if ((aListType == INCLUDE) && fIncludeInfoList) { return fIncludeInfoList->containsElement(toCheck); } else if ((aListType == IMPORT) && fImportedInfoList) { return fImportedInfoList->containsElement(toCheck); } return false; } inline bool SchemaInfo::circularImportExist(const unsigned int namespaceURI) { XMLSize_t importSize = fImportingInfoList->size(); for (XMLSize_t i=0; i < importSize; i++) { if (fImportingInfoList->elementAt(i)->getTargetNSURI() == (int) namespaceURI) { return true; } } return false; } inline bool SchemaInfo::isFailedRedefine(const DOMElement* const anElem) { if (fFailedRedefineList) return (fFailedRedefineList->containsElement(anElem)); return false; } inline void SchemaInfo::addFailedRedefine(const DOMElement* const anElem) { if (!fFailedRedefineList) { fFailedRedefineList = new (fMemoryManager) ValueVectorOf(4, fMemoryManager); } fFailedRedefineList->addElement(anElem); } inline void SchemaInfo::addRecursingType(const DOMElement* const elem, const XMLCh* const name) { if (!fRecursingAnonTypes) { fRecursingAnonTypes = new (fMemoryManager) ValueVectorOf(8, fMemoryManager); fRecursingTypeNames = new (fMemoryManager) ValueVectorOf(8, fMemoryManager); } fRecursingAnonTypes->addElement(elem); fRecursingTypeNames->addElement(name); } inline void SchemaInfo::clearTopLevelComponents() { for (unsigned int i = 0; i < C_Count; i++) { delete fTopLevelComponents[i]; fTopLevelComponents[i] = 0; fLastTopLevelComponent[i] = 0; } } XERCES_CPP_NAMESPACE_END #endif /** * End of file SchemaInfo.hpp */ xerces-c-3.1.1/src/xercesc/validators/schema/TraverseSchema.hpp0000644000175000017500000012004711360344373023533 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: TraverseSchema.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_TRAVERSESCHEMA_HPP) #define XERCESC_INCLUDE_GUARD_TRAVERSESCHEMA_HPP /** * Instances of this class get delegated to Traverse the Schema and * to populate the SchemaGrammar internal representation. */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Forward Declarations // --------------------------------------------------------------------------- class GrammarResolver; class XMLEntityHandler; class XMLScanner; class DatatypeValidator; class DatatypeValidatorFactory; class QName; class ComplexTypeInfo; class XMLAttDef; class NamespaceScope; class SchemaAttDef; class InputSource; class XercesGroupInfo; class XercesAttGroupInfo; class IdentityConstraint; class XSDLocator; class XSDDOMParser; class XMLErrorReporter; class VALIDATORS_EXPORT TraverseSchema : public XMemory { public: // ----------------------------------------------------------------------- // Public Constructors/Destructor // ----------------------------------------------------------------------- TraverseSchema ( DOMElement* const schemaRoot , XMLStringPool* const uriStringPool , SchemaGrammar* const schemaGrammar , GrammarResolver* const grammarResolver , RefHash2KeysTableOf* cachedSchemaInfoList , RefHash2KeysTableOf* schemaInfoList , XMLScanner* const xmlScanner , const XMLCh* const schemaURL , XMLEntityHandler* const entityHandler , XMLErrorReporter* const errorReporter , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager , bool multipleImport = false ); ~TraverseSchema(); private: // This enumeration is defined here for compatibility with the CodeWarrior // compiler, which apparently doesn't like to accept default parameter // arguments that it hasn't yet seen. The Not_All_Context argument is // used in the declaration of checkMinMax, below. // // Flags indicate any special restrictions on minOccurs and maxOccurs // relating to "all". // Not_All_Context - not processing an // All_Element - processing an in an // Group_Ref_With_All - processing reference that contained // All_Group - processing an group itself enum { Not_All_Context = 0 , All_Element = 1 , Group_Ref_With_All = 2 , All_Group = 4 }; // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- TraverseSchema(const TraverseSchema&); TraverseSchema& operator=(const TraverseSchema&); // ----------------------------------------------------------------------- // Init/CleanUp methods // ----------------------------------------------------------------------- void init(); void cleanUp(); // ----------------------------------------------------------------------- // Traversal methods // ----------------------------------------------------------------------- /** * Traverse the Schema DOM tree */ void doTraverseSchema(const DOMElement* const schemaRoot); void preprocessSchema(DOMElement* const schemaRoot, const XMLCh* const schemaURL, bool multipleImport = false); void traverseSchemaHeader(const DOMElement* const schemaRoot); XSAnnotation* traverseAnnotationDecl(const DOMElement* const childElem, ValueVectorOf* const nonXSAttList, const bool topLevel = false); void traverseInclude(const DOMElement* const childElem); void traverseImport(const DOMElement* const childElem); void traverseRedefine(const DOMElement* const childElem); void traverseAttributeDecl(const DOMElement* const childElem, ComplexTypeInfo* const typeInfo, const bool topLevel = false); void traverseSimpleContentDecl(const XMLCh* const typeName, const XMLCh* const qualifiedName, const DOMElement* const contentDecl, ComplexTypeInfo* const typeInfo, Janitor* const janAnnot); void traverseComplexContentDecl(const XMLCh* const typeName, const DOMElement* const contentDecl, ComplexTypeInfo* const typeInfo, const bool isMixed, Janitor* const janAnnot); DatatypeValidator* traverseSimpleTypeDecl(const DOMElement* const childElem, const bool topLevel = true, int baseRefContext = SchemaSymbols::XSD_EMPTYSET); int traverseComplexTypeDecl(const DOMElement* const childElem, const bool topLevel = true, const XMLCh* const recursingTypeName = 0); DatatypeValidator* traverseByList(const DOMElement* const rootElem, const DOMElement* const contentElem, const XMLCh* const typeName, const XMLCh* const qualifiedName, const int finalSet, Janitor* const janAnnot); DatatypeValidator* traverseByRestriction(const DOMElement* const rootElem, const DOMElement* const contentElem, const XMLCh* const typeName, const XMLCh* const qualifiedName, const int finalSet, Janitor* const janAnnot); DatatypeValidator* traverseByUnion(const DOMElement* const rootElem, const DOMElement* const contentElem, const XMLCh* const typeName, const XMLCh* const qualifiedName, const int finalSet, int baseRefContext, Janitor* const janAnnot); SchemaElementDecl* traverseElementDecl(const DOMElement* const childElem, const bool topLevel = false); const XMLCh* traverseNotationDecl(const DOMElement* const childElem); const XMLCh* traverseNotationDecl(const DOMElement* const childElem, const XMLCh* const name, const XMLCh* const uriStr); ContentSpecNode* traverseChoiceSequence(const DOMElement* const elemDecl, const int modelGroupType, bool& hasChildren); ContentSpecNode* traverseAny(const DOMElement* const anyDecl); ContentSpecNode* traverseAll(const DOMElement* const allElem, bool& hasChildren); XercesGroupInfo* traverseGroupDecl(const DOMElement* const childElem, const bool topLevel = true); XercesAttGroupInfo* traverseAttributeGroupDecl(const DOMElement* const elem, ComplexTypeInfo* const typeInfo, const bool topLevel = false); XercesAttGroupInfo* traverseAttributeGroupDeclNS(const DOMElement* const elem, const XMLCh* const uriStr, const XMLCh* const name); SchemaAttDef* traverseAnyAttribute(const DOMElement* const elem); void traverseKey(const DOMElement* const icElem, SchemaElementDecl* const elemDecl); void traverseUnique(const DOMElement* const icElem, SchemaElementDecl* const elemDecl); void traverseKeyRef(const DOMElement* const icElem, SchemaElementDecl* const elemDecl); bool traverseIdentityConstraint(IdentityConstraint* const ic, const DOMElement* const icElem); // ----------------------------------------------------------------------- // Error Reporting methods // ----------------------------------------------------------------------- void reportSchemaError(const XSDLocator* const aLocator, const XMLCh* const msgDomain, const int errorCode); void reportSchemaError(const XSDLocator* const aLocator, const XMLCh* const msgDomain, const int errorCode, const XMLCh* const text1, const XMLCh* const text2 = 0, const XMLCh* const text3 = 0, const XMLCh* const text4 = 0); void reportSchemaError(const DOMElement* const elem, const XMLCh* const msgDomain, const int errorCode); void reportSchemaError(const DOMElement* const elem, const XMLCh* const msgDomain, const int errorCode, const XMLCh* const text1, const XMLCh* const text2 = 0, const XMLCh* const text3 = 0, const XMLCh* const text4 = 0); void reportSchemaError(const DOMElement* const elem, const XMLException& except); // ----------------------------------------------------------------------- // Private Helper methods // ----------------------------------------------------------------------- /** * Keep track of the xs:import found */ bool isImportingNS(const int namespaceURI); void addImportedNS(const int namespaceURI); /** * Retrieved the Namespace mapping from the schema element */ bool retrieveNamespaceMapping(const DOMElement* const elem); /** * Loop through the children, and traverse the corresponding schema type * type declaration (simpleType, complexType, import, ....) */ void processChildren(const DOMElement* const root); void preprocessChildren(const DOMElement* const root); void preprocessImport(const DOMElement* const elemNode); void preprocessInclude(const DOMElement* const elemNode); void preprocessRedefine(const DOMElement* const elemNode); /** * Parameters: * rootElem - top element for a given type declaration * contentElem - content must be annotation? or some other simple content * isEmpty: - true if (annotation?, smth_else), false if (annotation?) * processAnnot - default is true, false if reprocessing a complex type * since we have already processed the annotation. * * Check for Annotation if it is present, traverse it. If a sibling is * found and it is not an annotation return it, otherwise return 0. * Used by traverseSimpleTypeDecl. */ DOMElement* checkContent(const DOMElement* const rootElem, DOMElement* const contentElem, const bool isEmpty, bool processAnnot = true); /** * Parameters: * contentElem - content element to check * * Check for identity constraints content. */ const DOMElement* checkIdentityConstraintContent(const DOMElement* const contentElem); DatatypeValidator* getDatatypeValidator(const XMLCh* const uriStr, const XMLCh* const localPartStr); /** * Process simpleType content of a list|restriction|union * Return a dataype validator if valid type, otherwise 0. */ DatatypeValidator* checkForSimpleTypeValidator(const DOMElement* const content, int baseRefContext = SchemaSymbols::XSD_EMPTYSET); /** * Process complexType content of an element * Return a ComplexTypeInfo if valid type, otherwise 0. */ ComplexTypeInfo* checkForComplexTypeInfo(const DOMElement* const content); /** * Return DatatypeValidator available for the baseTypeStr. */ DatatypeValidator* findDTValidator(const DOMElement* const elem, const XMLCh* const derivedTypeName, const XMLCh* const baseTypeName, const int baseRefContext); const XMLCh* resolvePrefixToURI(const DOMElement* const elem, const XMLCh* const prefix); /** * Return the prefix for a given rawname string * * Function allocated, caller managed (facm) - pointer to be deleted by * caller. */ const XMLCh* getPrefix(const XMLCh* const rawName); /** * Return the local for a given rawname string * * caller allocated, caller managed (cacm) */ const XMLCh* getLocalPart(const XMLCh* const rawName); /** * Process a 'ref' of an Element declaration */ SchemaElementDecl* processElementDeclRef(const DOMElement* const elem, const XMLCh* const refName); void processElemDeclAttrs(const DOMElement* const elem, SchemaElementDecl* const elemDecl, const XMLCh*& valConstraint, bool isTopLevel = false); void processElemDeclIC(DOMElement* const elem, SchemaElementDecl* const elemDecl); bool checkElemDeclValueConstraint(const DOMElement* const elem, SchemaElementDecl* const elemDecl, const XMLCh* const valConstraint, ComplexTypeInfo* const typeInfo, DatatypeValidator* const validator); /** * Process a 'ref' of an Attribute declaration */ void processAttributeDeclRef(const DOMElement* const elem, ComplexTypeInfo* const typeInfo, const XMLCh* const refName, const XMLCh* const useVal, const XMLCh* const defaultVal, const XMLCh* const fixedVal); /** * Process a 'ref' on a group */ XercesGroupInfo* processGroupRef(const DOMElement* const elem, const XMLCh* const refName); /** * Process a 'ref' on a attributeGroup */ XercesAttGroupInfo* processAttributeGroupRef(const DOMElement* const elem, const XMLCh* const refName, ComplexTypeInfo* const typeInfo); /** * Parse block & final items */ int parseBlockSet(const DOMElement* const elem, const int blockType, const bool isRoot = false); int parseFinalSet(const DOMElement* const elem, const int finalType, const bool isRoot = false); /** * Return true if a name is an identity constraint, otherwise false */ bool isIdentityConstraintName(const XMLCh* const constraintName); /** * If 'typeStr' belongs to a different schema, return that schema URI, * otherwise return 0; */ const XMLCh* checkTypeFromAnotherSchema(const DOMElement* const elem, const XMLCh* const typeStr); /** * Return the datatype validator for a given element type attribute if * the type is a simple type */ DatatypeValidator* getElementTypeValidator(const DOMElement* const elem, const XMLCh* const typeStr, bool& noErrorDetected, const XMLCh* const otherSchemaURI); /** * Return the complexType info for a given element type attribute if * the type is a complex type */ ComplexTypeInfo* getElementComplexTypeInfo(const DOMElement* const elem, const XMLCh* const typeStr, const XMLCh* const otherSchemaURI); /** * Return global schema element declaration for a given element name */ SchemaElementDecl* getGlobalElemDecl(const DOMElement* const elem, const XMLCh* const name); /** * Check validity constraint of a substitutionGroup attribute in * an element declaration */ bool isSubstitutionGroupValid(const DOMElement* const elem, const SchemaElementDecl* const elemDecl, const ComplexTypeInfo* const typeInfo, const DatatypeValidator* const validator, const XMLCh* const elemName, const bool toEmit = true); bool isSubstitutionGroupCircular(SchemaElementDecl* const elemDecl, SchemaElementDecl* const subsElemDecl); void processSubstitutionGroup(const DOMElement* const elem, SchemaElementDecl* const elemDecl, ComplexTypeInfo*& typeInfo, DatatypeValidator*& validator, const XMLCh* const subsElemQName); /** * Create a 'SchemaElementDecl' object and add it to SchemaGrammar */ SchemaElementDecl* createSchemaElementDecl(const DOMElement* const elem, const XMLCh* const name, bool& isDuplicate, const XMLCh*& valConstraint, const bool topLevel); /** * Return the value of a given attribute name from an element node */ const XMLCh* getElementAttValue(const DOMElement* const elem, const XMLCh* const attName, const DatatypeValidator::ValidatorType attType = DatatypeValidator::UnKnown); /* return minOccurs */ int checkMinMax(ContentSpecNode* const specNode, const DOMElement* const elem, const int allContext = Not_All_Context); /** * Process complex content for a complexType */ void processComplexContent(const DOMElement* const elem, const XMLCh* const typeName, const DOMElement* const childElem, ComplexTypeInfo* const typeInfo, const XMLCh* const baseLocalPart, const bool isMixed, const bool isBaseAnyType = false); /** * Process "base" information for a complexType */ void processBaseTypeInfo(const DOMElement* const elem, const XMLCh* const baseName, const XMLCh* const localPart, const XMLCh* const uriStr, ComplexTypeInfo* const typeInfo); /** * Check if base is from another schema */ bool isBaseFromAnotherSchema(const XMLCh* const baseURI); /** * Get complexType infp from another schema */ ComplexTypeInfo* getTypeInfoFromNS(const DOMElement* const elem, const XMLCh* const uriStr, const XMLCh* const localPart); DatatypeValidator* getAttrDatatypeValidatorNS(const DOMElement* const elem, const XMLCh* localPart, const XMLCh* typeURI); /** * Returns true if a DOM Element is an attribute or attribute group */ bool isAttrOrAttrGroup(const DOMElement* const elem); /** * Process attributes of a complex type */ void processAttributes(const DOMElement* const elem, const DOMElement* const attElem, ComplexTypeInfo* const typeInfo, const bool isBaseAnyType = false); /** * Generate a name for an anonymous type */ const XMLCh* genAnonTypeName(const XMLCh* const prefix); void defaultComplexTypeInfo(ComplexTypeInfo* const typeInfo); /** * Resolve a schema location attribute value to an input source. * Caller to delete the returned object. */ InputSource* resolveSchemaLocation ( const XMLCh* const loc , const XMLResourceIdentifier::ResourceIdentifierType resourceIdentitiferType , const XMLCh* const nameSpace=0 ); void restoreSchemaInfo(SchemaInfo* const toRestore, SchemaInfo::ListType const aListType = SchemaInfo::INCLUDE, const unsigned int saveScope = Grammar::TOP_LEVEL_SCOPE); void popCurrentTypeNameStack(); /** * Check whether a mixed content is emptiable or not. * Needed to validate element constraint values (defualt, fixed) */ bool emptiableParticle(const ContentSpecNode* const specNode); void checkFixedFacet(const DOMElement* const, const XMLCh* const, const DatatypeValidator* const, unsigned int&); void buildValidSubstitutionListF(const DOMElement* const elem, SchemaElementDecl* const, SchemaElementDecl* const); void buildValidSubstitutionListB(const DOMElement* const elem, SchemaElementDecl* const, SchemaElementDecl* const); void checkEnumerationRequiredNotation(const DOMElement* const elem, const XMLCh* const name, const XMLCh* const typeStr); void processElements(const DOMElement* const elem, ComplexTypeInfo* const baseTypeInfo, ComplexTypeInfo* const newTypeInfo); void processElements(const DOMElement* const elem, XercesGroupInfo* const fromGroup, ComplexTypeInfo* const typeInfo); void copyGroupElements(const DOMElement* const elem, XercesGroupInfo* const fromGroup, XercesGroupInfo* const toGroup, ComplexTypeInfo* const typeInfo); void copyAttGroupAttributes(const DOMElement* const elem, XercesAttGroupInfo* const fromAttGroup, XercesAttGroupInfo* const toAttGroup, ComplexTypeInfo* const typeInfo); void checkForEmptyTargetNamespace(const DOMElement* const elem); /** * Attribute wild card intersection. * * Note: * The first parameter will be the result of the intersection, so * we need to make sure that first parameter is a copy of the * actual attribute definition we need to intersect with. * * What we need to wory about is: type, defaultType, namespace, * and URI. All remaining data members should be the same. */ void attWildCardIntersection(SchemaAttDef* const resultWildCart, const SchemaAttDef* const toCompareWildCard); /** * Attribute wild card union. * * Note: * The first parameter will be the result of the union, so * we need to make sure that first parameter is a copy of the * actual attribute definition we need to intersect with. * * What we need to wory about is: type, defaultType, namespace, * and URI. All remaining data members should be the same. */ void attWildCardUnion(SchemaAttDef* const resultWildCart, const SchemaAttDef* const toCompareWildCard); void copyWildCardData(const SchemaAttDef* const srcWildCard, SchemaAttDef* const destWildCard); /** * Check that the attributes of a type derived by restriction satisfy * the constraints of derivation valid restriction */ void checkAttDerivationOK(const DOMElement* const elem, const ComplexTypeInfo* const baseTypeInfo, const ComplexTypeInfo* const childTypeInfo); void checkAttDerivationOK(const DOMElement* const elem, const XercesAttGroupInfo* const baseAttGrpInfo, const XercesAttGroupInfo* const childAttGrpInfo); /** * Check whether a namespace value is valid with respect to wildcard * constraint */ bool wildcardAllowsNamespace(const SchemaAttDef* const baseAttWildCard, const unsigned int nameURI); /** * Check whether a namespace constraint is an intensional subset of * another namespace constraint */ bool isWildCardSubset(const SchemaAttDef* const baseAttWildCard, const SchemaAttDef* const childAttWildCard); bool openRedefinedSchema(const DOMElement* const redefineElem); /** * The purpose of this method is twofold: * 1. To find and appropriately modify all information items * in redefinedSchema with names that are redefined by children of * redefineElem. * 2. To make sure the redefine element represented by * redefineElem is valid as far as content goes and with regard to * properly referencing components to be redefined. * * No traversing is done here! * This method also takes actions to find and, if necessary, modify * the names of elements in 's in the schema that's being * redefined. */ void renameRedefinedComponents(const DOMElement* const redefineElem, SchemaInfo* const redefiningSchemaInfo, SchemaInfo* const redefinedSchemaInfo); /** * This method returns true if the redefine component is valid, and if * it was possible to revise it correctly. */ bool validateRedefineNameChange(const DOMElement* const redefineChildElem, const XMLCh* const redefineChildElemName, const XMLCh* const redefineChildDeclName, const int redefineNameCounter, SchemaInfo* const redefiningSchemaInfo); /** * This function looks among the children of 'redefineChildElem' for a * component of type 'redefineChildComponentName'. If it finds one, it * evaluates whether its ref attribute contains a reference to * 'refChildTypeName'. If it does, it returns 1 + the value returned by * calls to itself on all other children. In all other cases it returns * 0 plus the sum of the values returned by calls to itself on * redefineChildElem's children. It also resets the value of ref so that * it will refer to the renamed type from the schema being redefined. */ int changeRedefineGroup(const DOMElement* const redefineChildElem, const XMLCh* const redefineChildComponentName, const XMLCh* const redefineChildTypeName, const int redefineNameCounter); /** This simple function looks for the first occurrence of a * 'redefineChildTypeName' item in the redefined schema and appropriately * changes the value of its name. If it turns out that what we're looking * for is in a though, then we just rename it--and it's * reference--to be the same. */ void fixRedefinedSchema(const DOMElement* const elem, SchemaInfo* const redefinedSchemaInfo, const XMLCh* const redefineChildComponentName, const XMLCh* const redefineChildTypeName, const int redefineNameCounter); void getRedefineNewTypeName(const XMLCh* const oldTypeName, const int redefineCounter, XMLBuffer& newTypeName); /** * This purpose of this method is threefold: * 1. To extract the schema information of included/redefined schema. * 2. Rename redefined components. * 3. Process components of included/redefined schemas */ void preprocessRedefineInclude(SchemaInfo* const currSchemaInfo); /** * Update the list of valid substitution groups in the case of circular * import. */ void updateCircularSubstitutionList(SchemaInfo* const aSchemaInfo); void processKeyRefFor(SchemaInfo* const aSchemaInfo, ValueVectorOf* const infoList); void processAttValue(const XMLCh* const attVal, XMLBuffer& aBuf); // routine to generate synthetic annotations XSAnnotation* generateSyntheticAnnotation(const DOMElement* const elem , ValueVectorOf* nonXSAttList); // routine to validate annotations void validateAnnotations(); // ----------------------------------------------------------------------- // Private constants // ----------------------------------------------------------------------- enum { ES_Block , C_Block , S_Final , EC_Final , ECS_Final }; enum ExceptionCodes { NoException = 0, InvalidComplexTypeInfo = 1, RecursingElement = 2 }; enum { Elem_Def_Qualified = 1, Attr_Def_Qualified = 2 }; // ----------------------------------------------------------------------- // Private data members // ----------------------------------------------------------------------- bool fFullConstraintChecking; int fTargetNSURI; int fEmptyNamespaceURI; unsigned int fCurrentScope; unsigned int fScopeCount; unsigned int fAnonXSTypeCount; XMLSize_t fCircularCheckIndex; const XMLCh* fTargetNSURIString; DatatypeValidatorFactory* fDatatypeRegistry; GrammarResolver* fGrammarResolver; SchemaGrammar* fSchemaGrammar; XMLEntityHandler* fEntityHandler; XMLErrorReporter* fErrorReporter; XMLStringPool* fURIStringPool; XMLStringPool* fStringPool; XMLBuffer fBuffer; XMLScanner* fScanner; RefHashTableOf* fAttributeDeclRegistry; RefHashTableOf* fComplexTypeRegistry; RefHashTableOf* fGroupRegistry; RefHashTableOf* fAttGroupRegistry; RefHashTableOf* fIC_ElementsNS; RefHashTableOf* fPreprocessedNodes; SchemaInfo* fSchemaInfo; XercesGroupInfo* fCurrentGroupInfo; XercesAttGroupInfo* fCurrentAttGroupInfo; ComplexTypeInfo* fCurrentComplexType; ValueVectorOf* fCurrentTypeNameStack; ValueVectorOf* fCurrentGroupStack; ValueVectorOf* fIC_Elements; ValueVectorOf* fDeclStack; ValueVectorOf** fGlobalDeclarations; ValueVectorOf* fNonXSAttList; ValueVectorOf* fImportedNSList; RefHashTableOf, PtrHasher>* fIC_NodeListNS; RefHash2KeysTableOf* fNotationRegistry; RefHash2KeysTableOf* fRedefineComponents; RefHash2KeysTableOf* fIdentityConstraintNames; RefHash2KeysTableOf* fValidSubstitutionGroups; RefHash2KeysTableOf* fSchemaInfoList; RefHash2KeysTableOf* fCachedSchemaInfoList; XSDDOMParser* fParser; XSDErrorReporter fXSDErrorReporter; XSDLocator* fLocator; MemoryManager* fMemoryManager; MemoryManager* fGrammarPoolMemoryManager; XSAnnotation* fAnnotation; GeneralAttributeCheck fAttributeCheck; friend class GeneralAttributeCheck; friend class NamespaceScopeManager; }; // --------------------------------------------------------------------------- // TraverseSchema: Helper methods // --------------------------------------------------------------------------- inline const XMLCh* TraverseSchema::getPrefix(const XMLCh* const rawName) { int colonIndex = XMLString::indexOf(rawName, chColon); if (colonIndex == -1 || colonIndex == 0) { return XMLUni::fgZeroLenString; } fBuffer.set(rawName, colonIndex); return fStringPool->getValueForId(fStringPool->addOrFind(fBuffer.getRawBuffer())); } inline const XMLCh* TraverseSchema::getLocalPart(const XMLCh* const rawName) { int colonIndex = XMLString::indexOf(rawName, chColon); XMLSize_t rawNameLen = XMLString::stringLen(rawName); if (XMLSize_t(colonIndex + 1) == rawNameLen) { return XMLUni::fgZeroLenString; } if (colonIndex == -1) { fBuffer.set(rawName, rawNameLen); } else { fBuffer.set(rawName + colonIndex + 1, rawNameLen - colonIndex - 1); } return fStringPool->getValueForId(fStringPool->addOrFind(fBuffer.getRawBuffer())); } inline void TraverseSchema::checkForEmptyTargetNamespace(const DOMElement* const elem) { const XMLCh* targetNS = getElementAttValue(elem, SchemaSymbols::fgATT_TARGETNAMESPACE); if (targetNS && !*targetNS) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::InvalidTargetNSValue); } } inline bool TraverseSchema::isBaseFromAnotherSchema(const XMLCh* const baseURI) { if (!XMLString::equals(baseURI,fTargetNSURIString) && !XMLString::equals(baseURI, SchemaSymbols::fgURI_SCHEMAFORSCHEMA) && (baseURI && *baseURI)) { //REVISIT, !!!! a hack: for schema that has no //target namespace, e.g. personal-schema.xml return true; } return false; } inline bool TraverseSchema::isAttrOrAttrGroup(const DOMElement* const elem) { const XMLCh* elementName = elem->getLocalName(); if (XMLString::equals(elementName, SchemaSymbols::fgELT_ATTRIBUTE) || XMLString::equals(elementName, SchemaSymbols::fgELT_ATTRIBUTEGROUP) || XMLString::equals(elementName, SchemaSymbols::fgELT_ANYATTRIBUTE)) { return true; } return false; } inline const XMLCh* TraverseSchema::genAnonTypeName(const XMLCh* const prefix) { XMLCh anonCountStr[16]; // a count of 15 digits should be enough XMLString::sizeToText(fAnonXSTypeCount++, anonCountStr, 15, 10, fMemoryManager); fBuffer.set(prefix); fBuffer.append(anonCountStr); return fStringPool->getValueForId(fStringPool->addOrFind(fBuffer.getRawBuffer())); } inline void TraverseSchema::popCurrentTypeNameStack() { XMLSize_t stackSize = fCurrentTypeNameStack->size(); if (stackSize != 0) { fCurrentTypeNameStack->removeElementAt(stackSize - 1); } } inline void TraverseSchema::copyWildCardData(const SchemaAttDef* const srcWildCard, SchemaAttDef* const destWildCard) { destWildCard->getAttName()->setURI(srcWildCard->getAttName()->getURI()); destWildCard->setType(srcWildCard->getType()); destWildCard->setDefaultType(srcWildCard->getDefaultType()); } inline void TraverseSchema::getRedefineNewTypeName(const XMLCh* const oldTypeName, const int redefineCounter, XMLBuffer& newTypeName) { newTypeName.set(oldTypeName); for (int i=0; i < redefineCounter; i++) { newTypeName.append(SchemaSymbols::fgRedefIdentifier); } } inline bool TraverseSchema::isImportingNS(const int namespaceURI) { if (!fImportedNSList) return false; return (fImportedNSList->containsElement(namespaceURI)); } inline void TraverseSchema::addImportedNS(const int namespaceURI) { if (!fImportedNSList) { fImportedNSList = new (fMemoryManager) ValueVectorOf(4, fMemoryManager); } if (!fImportedNSList->containsElement(namespaceURI)) fImportedNSList->addElement(namespaceURI); } XERCES_CPP_NAMESPACE_END #endif /** * End of file TraverseSchema.hpp */ xerces-c-3.1.1/src/xercesc/validators/schema/XMLSchemaDescriptionImpl.cpp0000644000175000017500000001452010523643534025420 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLSchemaDescriptionImpl.cpp 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // XMLSchemaDescriptionImpl: constructor and destructor // --------------------------------------------------------------------------- XMLSchemaDescriptionImpl::XMLSchemaDescriptionImpl(const XMLCh* const targetNamespace , MemoryManager* const memMgr) :XMLSchemaDescription(memMgr) ,fContextType(CONTEXT_UNKNOWN) ,fNamespace(0) ,fLocationHints(0) ,fTriggeringComponent(0) ,fEnclosingElementName(0) ,fAttributes(0) { if (targetNamespace) fNamespace = XMLString::replicate(targetNamespace, memMgr); fLocationHints = new (memMgr) RefArrayVectorOf(4, true, memMgr); /*** fAttributes ***/ } XMLSchemaDescriptionImpl::~XMLSchemaDescriptionImpl() { if (fNamespace) XMLGrammarDescription::getMemoryManager()->deallocate((void*)fNamespace); if (fLocationHints) delete fLocationHints; if (fTriggeringComponent) delete fTriggeringComponent; if (fEnclosingElementName) delete fEnclosingElementName; } const XMLCh* XMLSchemaDescriptionImpl::getGrammarKey() const { return getTargetNamespace(); } XMLSchemaDescription::ContextType XMLSchemaDescriptionImpl::getContextType() const { return fContextType; } const XMLCh* XMLSchemaDescriptionImpl::getTargetNamespace() const { return fNamespace; } const RefArrayVectorOf* XMLSchemaDescriptionImpl::getLocationHints() const { return fLocationHints; } const QName* XMLSchemaDescriptionImpl::getTriggeringComponent() const { return fTriggeringComponent; } const QName* XMLSchemaDescriptionImpl::getEnclosingElementName() const { return fEnclosingElementName; } const XMLAttDef* XMLSchemaDescriptionImpl::getAttributes() const { return fAttributes; } void XMLSchemaDescriptionImpl::setContextType(ContextType type) { fContextType = type; } void XMLSchemaDescriptionImpl::setTargetNamespace(const XMLCh* const newNamespace) { if (fNamespace) { XMLGrammarDescription::getMemoryManager()->deallocate((void*)fNamespace); fNamespace = 0; } fNamespace = XMLString::replicate(newNamespace, XMLGrammarDescription::getMemoryManager()); } void XMLSchemaDescriptionImpl::setLocationHints(const XMLCh* const hint) { fLocationHints->addElement(XMLString::replicate(hint, XMLGrammarDescription::getMemoryManager())); } void XMLSchemaDescriptionImpl::setTriggeringComponent(QName* const trigComponent) { if ( fTriggeringComponent) { delete fTriggeringComponent; fTriggeringComponent = 0; } fTriggeringComponent = new (trigComponent->getMemoryManager()) QName(*trigComponent); } void XMLSchemaDescriptionImpl::setEnclosingElementName(QName* const encElement) { if (fEnclosingElementName) { delete fEnclosingElementName; fEnclosingElementName = 0; } fEnclosingElementName = new (encElement->getMemoryManager()) QName(*encElement); } void XMLSchemaDescriptionImpl::setAttributes(XMLAttDef* const attDefs) { // XMLAttDef is part of the grammar that this description refers to // so we reference to it instead of adopting/owning/cloning. fAttributes = attDefs; } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(XMLSchemaDescriptionImpl) void XMLSchemaDescriptionImpl::serialize(XSerializeEngine& serEng) { XMLSchemaDescription::serialize(serEng); if (serEng.isStoring()) { serEng<<(int)fContextType; serEng.writeString(fNamespace); /*** * * Serialize RefArrayVectorOf* fLocationHints; * ***/ XTemplateSerializer::storeObject(fLocationHints, serEng); QName* tempQName = (QName*)fTriggeringComponent; serEng<>i; fContextType = (ContextType)i; //the original fNamespace which came from the ctor needs deallocated if (fNamespace) { XMLGrammarDescription::getMemoryManager()->deallocate((void*)fNamespace); } serEng.readString((XMLCh*&)fNamespace); /*** * * Deserialize RefArrayVectorOf fLocationHints * ***/ XTemplateSerializer::loadObject(&fLocationHints, 4, true, serEng); QName* tempQName; serEng>>tempQName; fTriggeringComponent = tempQName; serEng>>tempQName; fEnclosingElementName = tempQName; XMLAttDef* tempAttDef; serEng>>tempAttDef; fAttributes=tempAttDef; } } XMLSchemaDescriptionImpl::XMLSchemaDescriptionImpl(MemoryManager* const memMgr) :XMLSchemaDescription(memMgr) ,fContextType(CONTEXT_UNKNOWN) ,fNamespace(0) ,fLocationHints(0) ,fTriggeringComponent(0) ,fEnclosingElementName(0) ,fAttributes(0) { } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/validators/schema/GeneralAttributeCheck.cpp0000644000175000017500000010211711126201344024775 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Local const data // --------------------------------------------------------------------------- static const XMLCh fgValueZero[] = { chDigit_0, chNull }; static const XMLCh fgValueOne[] = { chDigit_1, chNull }; static const XMLCh fgUnbounded[] = { chLatin_u, chLatin_n, chLatin_b, chLatin_o, chLatin_u, chLatin_n, chLatin_d, chLatin_e, chLatin_d, chNull }; // --------------------------------------------------------------------------- // Static member data initialization // --------------------------------------------------------------------------- ValueHashTableOf* GeneralAttributeCheck::fAttMap = 0; ValueHashTableOf* GeneralAttributeCheck::fFacetsMap = 0; DatatypeValidator* GeneralAttributeCheck::fNonNegIntDV = 0; DatatypeValidator* GeneralAttributeCheck::fBooleanDV = 0; DatatypeValidator* GeneralAttributeCheck::fAnyURIDV = 0; void XMLInitializer::initializeGeneralAttributeCheck() { GeneralAttributeCheck::initialize (); } void XMLInitializer::terminateGeneralAttributeCheck() { delete GeneralAttributeCheck::fFacetsMap; delete GeneralAttributeCheck::fAttMap; GeneralAttributeCheck::fAttMap = 0; GeneralAttributeCheck::fFacetsMap = 0; GeneralAttributeCheck::fNonNegIntDV = 0; GeneralAttributeCheck::fBooleanDV = 0; GeneralAttributeCheck::fAnyURIDV = 0; } void GeneralAttributeCheck::initialize() { // Set up validators. // DatatypeValidatorFactory dvFactory; fNonNegIntDV = dvFactory.getDatatypeValidator(SchemaSymbols::fgDT_NONNEGATIVEINTEGER); fBooleanDV = dvFactory.getDatatypeValidator(SchemaSymbols::fgDT_BOOLEAN); fAnyURIDV = dvFactory.getDatatypeValidator(SchemaSymbols::fgDT_ANYURI); // TODO - add remaining valdiators // Map attributes. // fAttMap = new ValueHashTableOf(A_Count); fAttMap->put((void*)SchemaSymbols::fgATT_ABSTRACT, A_Abstract); fAttMap->put((void*)SchemaSymbols::fgATT_ATTRIBUTEFORMDEFAULT, A_AttributeFormDefault); fAttMap->put((void*)SchemaSymbols::fgATT_BASE, A_Base); fAttMap->put((void*)SchemaSymbols::fgATT_BLOCK, A_Block); fAttMap->put((void*)SchemaSymbols::fgATT_BLOCKDEFAULT, A_BlockDefault); fAttMap->put((void*)SchemaSymbols::fgATT_DEFAULT, A_Default); fAttMap->put((void*)SchemaSymbols::fgATT_ELEMENTFORMDEFAULT, A_ElementFormDefault); fAttMap->put((void*)SchemaSymbols::fgATT_FINAL, A_Final); fAttMap->put((void*)SchemaSymbols::fgATT_FINALDEFAULT, A_FinalDefault); fAttMap->put((void*)SchemaSymbols::fgATT_FIXED, A_Fixed); fAttMap->put((void*)SchemaSymbols::fgATT_FORM, A_Form); fAttMap->put((void*)SchemaSymbols::fgATT_ID, A_ID); fAttMap->put((void*)SchemaSymbols::fgATT_ITEMTYPE, A_ItemType); fAttMap->put((void*)SchemaSymbols::fgATT_MAXOCCURS, A_MaxOccurs); fAttMap->put((void*)SchemaSymbols::fgATT_MEMBERTYPES, A_MemberTypes); fAttMap->put((void*)SchemaSymbols::fgATT_MINOCCURS, A_MinOccurs); fAttMap->put((void*)SchemaSymbols::fgATT_MIXED, A_Mixed); fAttMap->put((void*)SchemaSymbols::fgATT_NAME, A_Name); fAttMap->put((void*)SchemaSymbols::fgATT_NAMESPACE, A_Namespace); fAttMap->put((void*)SchemaSymbols::fgATT_NILLABLE, A_Nillable); fAttMap->put((void*)SchemaSymbols::fgATT_PROCESSCONTENTS, A_ProcessContents); fAttMap->put((void*)SchemaSymbols::fgATT_PUBLIC, A_Public); fAttMap->put((void*)SchemaSymbols::fgATT_REF, A_Ref); fAttMap->put((void*)SchemaSymbols::fgATT_REFER, A_Refer); fAttMap->put((void*)SchemaSymbols::fgATT_SCHEMALOCATION, A_SchemaLocation); fAttMap->put((void*)SchemaSymbols::fgATT_SOURCE, A_Source); fAttMap->put((void*)SchemaSymbols::fgATT_SUBSTITUTIONGROUP, A_SubstitutionGroup); fAttMap->put((void*)SchemaSymbols::fgATT_SYSTEM, A_System); fAttMap->put((void*)SchemaSymbols::fgATT_TARGETNAMESPACE, A_TargetNamespace); fAttMap->put((void*)SchemaSymbols::fgATT_TYPE, A_Type); fAttMap->put((void*)SchemaSymbols::fgATT_USE, A_Use); fAttMap->put((void*)SchemaSymbols::fgATT_VALUE, A_Value); fAttMap->put((void*)SchemaSymbols::fgATT_VERSION, A_Version); fAttMap->put((void*)SchemaSymbols::fgATT_XPATH, A_XPath); fFacetsMap = new ValueHashTableOf(13); fFacetsMap->put((void*) SchemaSymbols::fgELT_MINEXCLUSIVE, E_MinExclusive); fFacetsMap->put((void*) SchemaSymbols::fgELT_MININCLUSIVE, E_MinInclusive); fFacetsMap->put((void*) SchemaSymbols::fgELT_MAXEXCLUSIVE, E_MaxExclusive); fFacetsMap->put((void*) SchemaSymbols::fgELT_MAXINCLUSIVE, E_MaxInclusive); fFacetsMap->put((void*) SchemaSymbols::fgELT_TOTALDIGITS, E_TotalDigits); fFacetsMap->put((void*) SchemaSymbols::fgELT_FRACTIONDIGITS, E_FractionDigits); fFacetsMap->put((void*) SchemaSymbols::fgELT_LENGTH, E_Length); fFacetsMap->put((void*) SchemaSymbols::fgELT_MINLENGTH, E_MinLength); fFacetsMap->put((void*) SchemaSymbols::fgELT_MAXLENGTH, E_MaxLength); fFacetsMap->put((void*) SchemaSymbols::fgELT_ENUMERATION, E_Enumeration); fFacetsMap->put((void*) SchemaSymbols::fgELT_WHITESPACE, E_WhiteSpace); fFacetsMap->put((void*) SchemaSymbols::fgELT_PATTERN, E_Pattern); } // --------------------------------------------------------------------------- // GeneralAttributeCheck: Constructors and Destructor // --------------------------------------------------------------------------- GeneralAttributeCheck::GeneralAttributeCheck(MemoryManager* const manager) : fMemoryManager(manager) , fIDValidator(manager) { } GeneralAttributeCheck::~GeneralAttributeCheck() { } // --------------------------------------------------------------------------- // GeneralAttributeCheck: Validation methods // --------------------------------------------------------------------------- void GeneralAttributeCheck::checkAttributes(const DOMElement* const elem, const unsigned short elemContext, TraverseSchema* const schema, const bool isTopLevel, ValueVectorOf* const nonXSAttList) { if (nonXSAttList) nonXSAttList->removeAllElements(); if (elem == 0 || !fAttMap || elemContext>=E_Count) return; const XMLCh* elemName = elem->getLocalName(); if (!XMLString::equals(SchemaSymbols::fgURI_SCHEMAFORSCHEMA, elem->getNamespaceURI())) { schema->reportSchemaError ( elem , XMLUni::fgXMLErrDomain , XMLErrs::ELTSchemaNS , elemName ); } DOMNamedNodeMap* eltAttrs = elem->getAttributes(); const XMLSize_t attrCount = eltAttrs->getLength(); XMLByte attList[A_Count]; memset(attList, 0, sizeof(attList)); for (XMLSize_t i = 0; i < attrCount; i++) { DOMNode* attribute = eltAttrs->item(i); const XMLCh* attName = attribute->getNodeName(); // skip namespace declarations if (XMLString::equals(attName, XMLUni::fgXMLNSString) || XMLString::startsWith(attName, XMLUni::fgXMLNSColonString)) continue; // Bypass attributes that start with xml // add this to the list of "non-schema" attributes if ((*attName == chLatin_X || *attName == chLatin_x) && (*(attName+1) == chLatin_M || *(attName+1) == chLatin_m) && (*(attName+2) == chLatin_L || *(attName+2) == chLatin_l)) { if (nonXSAttList) nonXSAttList->addElement(attribute); continue; } // for attributes with namespace prefix const XMLCh* attrURI = attribute->getNamespaceURI(); if (attrURI != 0 && *attrURI) { // attributes with schema namespace are not allowed // and not allowed on "documentation" and "appInfo" if (XMLString::equals(attrURI, SchemaSymbols::fgURI_SCHEMAFORSCHEMA) || XMLString::equals(elemName, SchemaSymbols::fgELT_APPINFO) || XMLString::equals(elemName, SchemaSymbols::fgELT_DOCUMENTATION)) { schema->reportSchemaError(elem, XMLUni::fgXMLErrDomain, isTopLevel?XMLErrs::AttributeDisallowedGlobal:XMLErrs::AttributeDisallowedLocal, attName, elemName); } else if (nonXSAttList) { nonXSAttList->addElement(attribute); } continue; } int attNameId = A_Invalid; attName = attribute->getLocalName(); bool bContinue=false; // workaround for Borland bug with 'continue' in 'catch' try { attNameId= fAttMap->get(attName, fMemoryManager); } catch(const OutOfMemoryException&) { throw; } catch(...) { schema->reportSchemaError(elem, XMLUni::fgXMLErrDomain, isTopLevel?XMLErrs::AttributeDisallowedGlobal:XMLErrs::AttributeDisallowedLocal, attName, elemName); bContinue=true; } if(bContinue) continue; if (fgElemAttTable[elemContext][attNameId] & Att_Mask) { attList[attNameId] = 1; validate ( elem , attName , attribute->getNodeValue() , fgElemAttTable[elemContext][attNameId] & DV_Mask , schema ); } else { schema->reportSchemaError(elem, XMLUni::fgXMLErrDomain, isTopLevel?XMLErrs::AttributeDisallowedGlobal:XMLErrs::AttributeDisallowedLocal, attName, elemName); } } // ------------------------------------------------------------------ // Check for required attributes // ------------------------------------------------------------------ for (unsigned int j=0; j < A_Count; j++) { if ((fgElemAttTable[elemContext][j] & Att_Required) && attList[j] == 0) { schema->reportSchemaError(elem, XMLUni::fgXMLErrDomain, isTopLevel?XMLErrs::AttributeRequiredGlobal:XMLErrs::AttributeRequiredLocal, fAttNames[j], elemName); } } } void GeneralAttributeCheck::validate(const DOMElement* const elem, const XMLCh* const attName, const XMLCh* const attValue, const short dvIndex, TraverseSchema* const schema) { bool isInvalid = false; DatatypeValidator* dv = 0; ValidationContext* fValidationContext = schema->fSchemaInfo->getValidationContext(); switch (dvIndex) { case DV_Form: if (!XMLString::equals(attValue, SchemaSymbols::fgATTVAL_QUALIFIED) && !XMLString::equals(attValue, SchemaSymbols::fgATTVAL_UNQUALIFIED)) { isInvalid = true; } break; case DV_MaxOccurs: // maxOccurs = (nonNegativeInteger | unbounded) if (!XMLString::equals(attValue, fgUnbounded)) { dv = fNonNegIntDV; } break; case DV_MaxOccurs1: if (!XMLString::equals(attValue, fgValueOne)) { isInvalid = true; } break; case DV_MinOccurs1: if (!XMLString::equals(attValue, fgValueZero) && !XMLString::equals(attValue, fgValueOne)) { isInvalid = true; } break; case DV_ProcessContents: if (!XMLString::equals(attValue, SchemaSymbols::fgATTVAL_SKIP) && !XMLString::equals(attValue, SchemaSymbols::fgATTVAL_LAX) && !XMLString::equals(attValue, SchemaSymbols::fgATTVAL_STRICT)) { isInvalid = true; } break; case DV_Use: if (!XMLString::equals(attValue, SchemaSymbols::fgATTVAL_OPTIONAL) && !XMLString::equals(attValue, SchemaSymbols::fgATTVAL_PROHIBITED) && !XMLString::equals(attValue, SchemaSymbols::fgATTVAL_REQUIRED)) { isInvalid = true; } break; case DV_WhiteSpace: if (!XMLString::equals(attValue, SchemaSymbols::fgWS_PRESERVE) && !XMLString::equals(attValue, SchemaSymbols::fgWS_REPLACE) && !XMLString::equals(attValue, SchemaSymbols::fgWS_COLLAPSE)) { isInvalid = true; } break; case DV_Boolean: dv = fBooleanDV; break; case DV_NonNegInt: dv = fNonNegIntDV; break; case DV_AnyURI: dv = fAnyURIDV; break; case DV_ID: if (fValidationContext) { dv = &fIDValidator; } break; } if (dv) { try { dv->validate(attValue, fValidationContext, fMemoryManager); } catch(const XMLException& excep) { schema->reportSchemaError(elem, excep); } catch(const OutOfMemoryException&) { throw; } catch(...) { isInvalid = true; } } if (isInvalid) { schema->reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::InvalidAttValue, attValue, attName); } } // --------------------------------------------------------------------------- // Conditional methods for building the table // --------------------------------------------------------------------------- // // This code will set up the character flags table. Its defined out since // this table is now written out and hard coded (at the bottom of this // file) into the code itself. This code is retained in case there is // any need to recreate it later. // #if defined(NEED_TO_GEN_ELEM_ATT_MAP_TABLE) #include void GeneralAttributeCheck::initCharFlagTable() { unsigned short attList[E_Count][A_Count]; for (unsigned int i=0; i < E_Count; i++) { for (unsigned int j=0; j < A_Count; j++) { attList[i][j] = 0; } } // // Write it out to a temp file to be read back into this source later. // FILE* outFl = fopen("ea_table.out", "wt+"); fprintf(outFl, "unsigned short GeneralAttributeCheck::fgElemAttTable[GeneralAttributeCheck::E_Count][GeneralAttributeCheck::A_Count] =\n{\n {"); //"all" attList[E_All][A_ID] = Att_Optional | DV_ID; attList[E_All][A_MaxOccurs] = Att_Optional | DV_MaxOccurs1; attList[E_All][A_MinOccurs] = Att_Optional | DV_MinOccurs1; // "annotation" attList[E_Annotation][A_ID] = Att_Optional | DV_ID; // "any" attList[E_Any][A_ID] = Att_Optional | DV_ID; attList[E_Any][A_MaxOccurs] = Att_Optional | DV_MaxOccurs; attList[E_Any][A_MinOccurs] = Att_Optional | DV_NonNegInt; attList[E_Any][A_Namespace] = Att_Optional; attList[E_Any][A_ProcessContents] = Att_Optional | DV_ProcessContents; // "anyAttribute" attList[E_AnyAttribute][A_ID] = Att_Optional | DV_ID; attList[E_AnyAttribute][A_Namespace] = Att_Optional; attList[E_AnyAttribute][A_ProcessContents] = Att_Optional | DV_ProcessContents; // "appinfo" attList[E_Appinfo][A_Source]= Att_Optional | DV_AnyURI; // attribute - global" attList[E_AttributeGlobal][A_Default] = Att_Optional; attList[E_AttributeGlobal][A_Fixed] = Att_Optional; attList[E_AttributeGlobal][A_ID] = Att_Optional | DV_ID; attList[E_AttributeGlobal][A_Name] = Att_Required; attList[E_AttributeGlobal][A_Type] = Att_Optional; // "attribute - local" attList[E_AttributeLocal][A_Default] = Att_Optional; attList[E_AttributeLocal][A_Fixed] = Att_Optional; attList[E_AttributeLocal][A_Form]= Att_Optional | DV_Form; attList[E_AttributeLocal][A_ID] = Att_Optional | DV_ID; attList[E_AttributeLocal][A_Name] = Att_Required; attList[E_AttributeLocal][A_Type] = Att_Optional; attList[E_AttributeLocal][A_Use] = Att_Optional | DV_Use; // "attribute - ref" attList[E_AttributeRef][A_Default] = Att_Optional; attList[E_AttributeRef][A_Fixed] = Att_Optional; attList[E_AttributeRef][A_ID] = Att_Optional | DV_ID; attList[E_AttributeRef][A_Ref]= Att_Required; attList[E_AttributeRef][A_Use] = Att_Optional | DV_Use; // "attributeGroup - global" attList[E_AttributeGroupGlobal][A_ID] = Att_Optional | DV_ID; attList[E_AttributeGroupGlobal][A_Name] = Att_Required; // "attributeGroup - ref" attList[E_AttributeGroupRef][A_ID] = Att_Optional | DV_ID; attList[E_AttributeGroupRef][A_Ref]= Att_Required; // "choice" attList[E_Choice][A_ID] = Att_Optional | DV_ID; attList[E_Choice][A_MaxOccurs] = Att_Optional | DV_MaxOccurs; attList[E_Choice][A_MinOccurs] = Att_Optional | DV_NonNegInt; // "complexContent" attList[E_ComplexContent][A_ID] = Att_Optional | DV_ID; attList[E_ComplexContent][A_Mixed] = Att_Optional | DV_Boolean; // "complexType - global" attList[E_ComplexTypeGlobal][A_Abstract] = Att_Optional | DV_Boolean; attList[E_ComplexTypeGlobal][A_Block] = Att_Optional; attList[E_ComplexTypeGlobal][A_Final] = Att_Optional; attList[E_ComplexTypeGlobal][A_ID] = Att_Optional | DV_ID; attList[E_ComplexTypeGlobal][A_Mixed] = Att_Optional | DV_Boolean; attList[E_ComplexTypeGlobal][A_Name] = Att_Required; // "complexType - local" attList[E_ComplexTypeLocal][A_ID] = Att_Optional | DV_ID; attList[E_ComplexTypeLocal][A_Mixed] = Att_Optional | DV_Boolean; // "documentation" attList[E_Documentation][A_Source] = Att_Optional | DV_AnyURI; // "element - global" attList[E_ElementGlobal][A_Abstract] = Att_Optional | DV_Boolean; attList[E_ElementGlobal][A_Block] = Att_Optional; attList[E_ElementGlobal][A_Default] = Att_Optional; attList[E_ElementGlobal][A_Final] = Att_Optional; attList[E_ElementGlobal][A_Fixed] = Att_Optional; attList[E_ElementGlobal][A_ID] = Att_Optional | DV_ID; attList[E_ElementGlobal][A_Name] = Att_Required; attList[E_ElementGlobal][A_Nillable] = Att_Optional | DV_Boolean; attList[E_ElementGlobal][A_SubstitutionGroup] = Att_Optional; attList[E_ElementGlobal][A_Type] = Att_Optional; // "element - local" attList[E_ElementLocal][A_Block]= Att_Optional; attList[E_ElementLocal][A_Default] = Att_Optional; attList[E_ElementLocal][A_Fixed] = Att_Optional; attList[E_ElementLocal][A_Form] = Att_Optional | DV_Form; attList[E_ElementLocal][A_ID] = Att_Optional | DV_ID; attList[E_ElementLocal][A_MaxOccurs] = Att_Optional | DV_MaxOccurs; attList[E_ElementLocal][A_MinOccurs] = Att_Optional | DV_NonNegInt; attList[E_ElementLocal][A_Name] = Att_Required; attList[E_ElementLocal][A_Nillable] = Att_Optional | DV_Boolean; attList[E_ElementLocal][A_Type] = Att_Optional; //"element - ref" attList[E_ElementRef][A_ID] = Att_Optional | DV_ID; attList[E_ElementRef][A_MaxOccurs] = Att_Optional | DV_MaxOccurs; attList[E_ElementRef][A_MinOccurs] = Att_Optional | DV_NonNegInt; attList[E_ElementRef][A_Ref] = Att_Required; // "enumeration" attList[E_Enumeration][A_ID] = Att_Optional | DV_ID; attList[E_Enumeration][A_Value] = Att_Optional; // "extension" attList[E_Extension][A_Base] = Att_Required; attList[E_Extension][A_ID] = Att_Optional | DV_ID; //"field" attList[E_Field][A_ID] = Att_Optional | DV_ID; attList[E_Field][A_XPath] = Att_Required; // "fractionDigits" attList[E_FractionDigits][A_ID] = Att_Optional | DV_ID; attList[E_FractionDigits][A_Value] = Att_Optional | DV_NonNegInt; attList[E_FractionDigits][A_Fixed] = Att_Optional | DV_Boolean; // "group - global" attList[E_GroupGlobal][A_ID] = Att_Optional | DV_ID; attList[E_GroupGlobal][A_Name] = Att_Required; // "group - ref" attList[E_GroupRef][A_ID] = Att_Optional | DV_ID; attList[E_GroupRef][A_MaxOccurs] = Att_Optional | DV_MaxOccurs; attList[E_GroupRef][A_MinOccurs] = Att_Optional | DV_NonNegInt; attList[E_GroupRef][A_Ref] = Att_Required; // "import" attList[E_Import][A_ID] = Att_Optional | DV_ID; attList[E_Import][A_Namespace] = Att_Optional; attList[E_Import][A_SchemaLocation] = Att_Optional; // "include" attList[E_Include][A_ID] = Att_Optional | DV_ID; attList[E_Include][A_SchemaLocation] = Att_Required; // "key" attList[E_Key][A_ID] = Att_Optional | DV_ID; attList[E_Key][A_Name] = Att_Required; // "keyref" attList[E_KeyRef][A_ID] = Att_Optional | DV_ID; attList[E_KeyRef][A_Name] = Att_Required; attList[E_KeyRef][A_Refer] = Att_Required; // "length" attList[E_Length][A_ID] = Att_Optional | DV_ID; attList[E_Length][A_Value] = Att_Optional | DV_NonNegInt; attList[E_Length][A_Fixed] = Att_Optional | DV_Boolean; // "list" attList[E_List][A_ID] = Att_Optional | DV_ID; attList[E_List][A_ItemType] = Att_Optional; // "maxExclusive" attList[E_MaxExclusive][A_ID] = Att_Optional | DV_ID; attList[E_MaxExclusive][A_Value] = Att_Optional; attList[E_MaxExclusive][A_Fixed] = Att_Optional | DV_Boolean; // "maxInclusive" attList[E_MaxInclusive][A_ID] = Att_Optional | DV_ID; attList[E_MaxInclusive][A_Value] = Att_Optional; attList[E_MaxInclusive][A_Fixed] = Att_Optional | DV_Boolean; // "maxLength" attList[E_MaxLength][A_ID] = Att_Optional | DV_ID; attList[E_MaxLength][A_Value] = Att_Optional | DV_NonNegInt; attList[E_MaxLength][A_Fixed] = Att_Optional | DV_Boolean; // "minExclusive" attList[E_MinExclusive][A_ID] = Att_Optional | DV_ID; attList[E_MinExclusive][A_Value] = Att_Optional; attList[E_MinExclusive][A_Fixed] = Att_Optional | DV_Boolean; // "minInclusive" attList[E_MinInclusive][A_ID] = Att_Optional | DV_ID; attList[E_MinInclusive][A_Value] = Att_Optional; attList[E_MinInclusive][A_Fixed] = Att_Optional | DV_Boolean; // "minLength" attList[E_MinLength][A_ID] = Att_Optional | DV_ID; attList[E_MinLength][A_Value] = Att_Optional | DV_NonNegInt; attList[E_MinLength][A_Fixed] = Att_Optional | DV_Boolean; // "notation" attList[E_Notation][A_ID] = Att_Optional | DV_ID; attList[E_Notation][A_Name] = Att_Required; attList[E_Notation][A_Public] = Att_Optional; attList[E_Notation][A_System] = Att_Optional | DV_AnyURI; // "pattern" attList[E_Pattern][A_ID] = Att_Optional; attList[E_Pattern][A_Value] = Att_Optional; // "redefine" attList[E_Redefine][A_ID] = Att_Optional | DV_ID; attList[E_Redefine][A_SchemaLocation] = Att_Required; // "restriction" attList[E_Restriction][A_Base] = Att_Optional; attList[E_Restriction][A_ID] = Att_Optional | DV_ID; // "schema" attList[E_Schema][A_AttributeFormDefault] = Att_Optional | DV_Form; attList[E_Schema][A_BlockDefault] = Att_Optional; attList[E_Schema][A_ElementFormDefault] = Att_Optional | DV_Form; attList[E_Schema][A_FinalDefault] = Att_Optional; attList[E_Schema][A_ID] = Att_Optional | DV_ID; attList[E_Schema][A_TargetNamespace] = Att_Optional; attList[E_Schema][A_Version] = Att_Optional; // "selector" attList[E_Selector][A_ID] = Att_Optional | DV_ID; attList[E_Selector][A_XPath] = Att_Required; // "sequence" attList[E_Sequence][A_ID] = Att_Optional | DV_ID; attList[E_Sequence][A_MaxOccurs] = Att_Optional | DV_MaxOccurs; attList[E_Sequence][A_MinOccurs] = Att_Optional | DV_NonNegInt; // "simpleContent" attList[E_SimpleContent][A_ID] = Att_Optional | DV_ID; // "simpleType - global" attList[E_SimpleTypeGlobal][A_Final] = Att_Optional; attList[E_SimpleTypeGlobal][A_ID] = Att_Optional | DV_ID; attList[E_SimpleTypeGlobal][A_Name] = Att_Required; // "simpleType - local" attList[E_SimpleTypeLocal][A_Final] = Att_Optional; attList[E_SimpleTypeLocal][A_ID] = Att_Optional | DV_ID; // "totalDigits" attList[E_TotalDigits][A_ID] = Att_Optional | DV_ID; attList[E_TotalDigits][A_Value] = Att_Optional | DV_NonNegInt; attList[E_TotalDigits][A_Fixed] = Att_Optional | DV_Boolean; // "union" attList[E_Union][A_ID] = Att_Optional | DV_ID; attList[E_Union][A_MemberTypes] = Att_Optional; // "unique" attList[E_Unique][A_ID] = Att_Optional | DV_ID; attList[E_Unique][A_Name] = Att_Required; // "whitespace" attList[E_WhiteSpace][A_ID] = Att_Optional | DV_ID; attList[E_WhiteSpace][A_Value] = Att_Optional | DV_WhiteSpace; attList[E_WhiteSpace][A_Fixed] = Att_Optional | DV_Boolean; for (unsigned int j=0; j < E_Count; j++) { for (unsigned int index = 0; index < A_Count-1; index++) { fprintf(outFl, " %d,", attList[j][index]); } fprintf(outFl, " %d", attList[j][A_Count - 1]); if (j + 1 == E_Count) fprintf(outFl, "}\n};"); else fprintf(outFl, "},\n {"); } fclose(outFl); } #endif unsigned short GeneralAttributeCheck::fgElemAttTable[GeneralAttributeCheck::E_Count][GeneralAttributeCheck::A_Count] = { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 258, 0, 514, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 130, 0, 10, 0, 0, 2, 0, 1026, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 2, 0, 1026, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 34, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 66, 34, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2050, 0, 0, 0}, { 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2050, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 130, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 18, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 34, 0, 0, 0, 0, 18, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0}, { 18, 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 34, 0, 0, 0, 0, 0, 1, 0, 18, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0}, { 0, 0, 0, 2, 0, 2, 0, 0, 0, 2, 66, 34, 0, 130, 0, 10, 0, 1, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 130, 0, 10, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0}, { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 130, 0, 10, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 66, 0, 0, 2, 0, 66, 0, 2, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 130, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 34, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4098, 0, 0} }; const XMLCh* GeneralAttributeCheck::fAttNames[GeneralAttributeCheck::A_Count] = { SchemaSymbols::fgATT_ABSTRACT, SchemaSymbols::fgATT_ATTRIBUTEFORMDEFAULT, SchemaSymbols::fgATT_BASE, SchemaSymbols::fgATT_BLOCK, SchemaSymbols::fgATT_BLOCKDEFAULT, SchemaSymbols::fgATT_DEFAULT, SchemaSymbols::fgATT_ELEMENTFORMDEFAULT, SchemaSymbols::fgATT_FINAL, SchemaSymbols::fgATT_FINALDEFAULT, SchemaSymbols::fgATT_FIXED, SchemaSymbols::fgATT_FORM, SchemaSymbols::fgATT_ID, SchemaSymbols::fgATT_ITEMTYPE, SchemaSymbols::fgATT_MAXOCCURS, SchemaSymbols::fgATT_MEMBERTYPES, SchemaSymbols::fgATT_MINOCCURS, SchemaSymbols::fgATT_MIXED, SchemaSymbols::fgATT_NAME, SchemaSymbols::fgATT_NAMESPACE, SchemaSymbols::fgATT_NILLABLE, SchemaSymbols::fgATT_PROCESSCONTENTS, SchemaSymbols::fgATT_PUBLIC, SchemaSymbols::fgATT_REF, SchemaSymbols::fgATT_REFER, SchemaSymbols::fgATT_SCHEMALOCATION, SchemaSymbols::fgATT_SOURCE, SchemaSymbols::fgATT_SUBSTITUTIONGROUP, SchemaSymbols::fgATT_SYSTEM, SchemaSymbols::fgATT_TARGETNAMESPACE, SchemaSymbols::fgATT_TYPE, SchemaSymbols::fgATT_USE, SchemaSymbols::fgATT_VALUE, SchemaSymbols::fgATT_VERSION, SchemaSymbols::fgATT_XPATH, }; XERCES_CPP_NAMESPACE_END /** * End of file GeneralAttributeCheck.cpp */ xerces-c-3.1.1/src/xercesc/validators/schema/NamespaceScope.cpp0000644000175000017500000002413211126201344023464 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: NamespaceScope.cpp 729944 2008-12-29 17:03:32Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // NamespaceScope: Constructors and Destructor // --------------------------------------------------------------------------- NamespaceScope::NamespaceScope(MemoryManager* const manager /*= XMLPlatformUtils::fgMemoryManager*/) : fEmptyNamespaceId(0) , fStackCapacity(8) , fStackTop(0) , fPrefixPool(109, manager) , fStack(0) , fMemoryManager(manager) { // Do an initial allocation of the stack and zero it out fStack = (StackElem**) fMemoryManager->allocate ( fStackCapacity * sizeof(StackElem*) );//new StackElem*[fStackCapacity]; memset(fStack, 0, fStackCapacity * sizeof(StackElem*)); } NamespaceScope::NamespaceScope(const NamespaceScope* const initialize, MemoryManager* const manager /*= XMLPlatformUtils::fgMemoryManager*/) : fEmptyNamespaceId(0) , fStackCapacity(8) , fStackTop(0) , fPrefixPool(109, manager) , fStack(0) , fMemoryManager(manager) { // Do an initial allocation of the stack and zero it out fStack = (StackElem**) fMemoryManager->allocate ( fStackCapacity * sizeof(StackElem*) );//new StackElem*[fStackCapacity]; memset(fStack, 0, fStackCapacity * sizeof(StackElem*)); if(initialize) { reset(initialize->fEmptyNamespaceId); // copy the existing bindings for (unsigned int index = initialize->fStackTop; index > 0; index--) { // Get a convenience pointer to the current element StackElem* curRow = initialize->fStack[index-1]; // If no prefixes mapped at this level, then go the next one if (!curRow->fMapCount) continue; for (unsigned int mapIndex = 0; mapIndex < curRow->fMapCount; mapIndex++) { // go from the id to the prefix const XMLCh* prefix = initialize->fPrefixPool.getValueForId(curRow->fMap[mapIndex].fPrefId); // if the prefix is not already known, add it if(getNamespaceForPrefix(prefix)==fEmptyNamespaceId) addPrefix(prefix, curRow->fMap[mapIndex].fURIId); } } } } NamespaceScope::~NamespaceScope() { // // Start working from the bottom of the stack and clear it out as we // go up. Once we hit an uninitialized one, we can break out. // for (unsigned int stackInd = 0; stackInd < fStackCapacity; stackInd++) { // If this entry has been set, then lets clean it up if (!fStack[stackInd]) break; // Delete the row for this entry, then delete the row structure fMemoryManager->deallocate(fStack[stackInd]->fMap);//delete [] fStack[stackInd]->fMap; delete fStack[stackInd]; } // Delete the stack array itself now fMemoryManager->deallocate(fStack);//delete [] fStack; } // --------------------------------------------------------------------------- // NamespaceScope: Stack access // --------------------------------------------------------------------------- unsigned int NamespaceScope::increaseDepth() { // See if we need to expand the stack if (fStackTop == fStackCapacity) expandStack(); // If this element has not been initialized yet, then initialize it if (!fStack[fStackTop]) { fStack[fStackTop] = new (fMemoryManager) StackElem; fStack[fStackTop]->fMapCapacity = 0; fStack[fStackTop]->fMap = 0; } // Set up the new top row fStack[fStackTop]->fMapCount = 0; // Bump the top of stack fStackTop++; return fStackTop-1; } unsigned int NamespaceScope::decreaseDepth() { if (!fStackTop) ThrowXMLwithMemMgr(EmptyStackException, XMLExcepts::ElemStack_StackUnderflow, fMemoryManager); fStackTop--; return fStackTop; } // --------------------------------------------------------------------------- // NamespaceScope: Prefix map methods // --------------------------------------------------------------------------- void NamespaceScope::addPrefix(const XMLCh* const prefixToAdd, const unsigned int uriId) { if (!fStackTop) ThrowXMLwithMemMgr(EmptyStackException, XMLExcepts::ElemStack_EmptyStack, fMemoryManager); // Get a convenience pointer to the stack top row StackElem* curRow = fStack[fStackTop - 1]; // Map the prefix to its unique id const unsigned int prefId = fPrefixPool.addOrFind(prefixToAdd); // Search the map at this level for the passed prefix for (unsigned int mapIndex = 0; mapIndex < curRow->fMapCount; mapIndex++) { if (curRow->fMap[mapIndex].fPrefId == prefId) { curRow->fMap[mapIndex].fURIId = uriId; return; } } // // Add a new element to the prefix map for this element. If its full, // then expand it out. // if (curRow->fMapCount == curRow->fMapCapacity) expandMap(curRow); // // And now add a new element for this prefix. // curRow->fMap[curRow->fMapCount].fPrefId = prefId; curRow->fMap[curRow->fMapCount].fURIId = uriId; // Bump the map count now curRow->fMapCount++; } unsigned int NamespaceScope::getNamespaceForPrefix(const XMLCh* const prefixToMap) const { // // Map the prefix to its unique id, from the prefix string pool. If its // not a valid prefix, then its a failure. // unsigned int prefixId = fPrefixPool.getId(prefixToMap); if (!prefixId){ return fEmptyNamespaceId; } // // Start at the stack top and work backwards until we come to some // element that mapped this prefix. // for (unsigned int index = fStackTop; index > 0; index--) { // Get a convenience pointer to the current element StackElem* curRow = fStack[index-1]; // If no prefixes mapped at this level, then go the next one if (!curRow->fMapCount) continue; // Search the map at this level for the passed prefix for (unsigned int mapIndex = 0; mapIndex < curRow->fMapCount; mapIndex++) { if (curRow->fMap[mapIndex].fPrefId == prefixId) return curRow->fMap[mapIndex].fURIId; } } return fEmptyNamespaceId; } // --------------------------------------------------------------------------- // NamespaceScope: Miscellaneous methods // --------------------------------------------------------------------------- void NamespaceScope::reset(const unsigned int emptyId) { // Flush the prefix pool and put back in the standard prefixes fPrefixPool.flushAll(); // Reset the stack top to clear the stack fStackTop = 0; // And store the new special URI ids fEmptyNamespaceId = emptyId; // add the first storage increaseDepth(); } // --------------------------------------------------------------------------- // Namespace: Private helpers // --------------------------------------------------------------------------- void NamespaceScope::expandMap(StackElem* const toExpand) { // For convenience get the old map size const unsigned int oldCap = toExpand->fMapCapacity; // // Expand the capacity by 25%, or initialize it to 16 if its currently // empty. Then allocate a new temp buffer. // const unsigned int newCapacity = oldCap ? (unsigned int)(oldCap * 1.25) : 16; PrefMapElem* newMap = (PrefMapElem*) fMemoryManager->allocate ( newCapacity * sizeof(PrefMapElem) );//new PrefMapElem[newCapacity]; // // Copy over the old stuff. We DON'T have to zero out the new stuff // since this is a by value map and the current map index controls what // is relevant. // memcpy(newMap, toExpand->fMap, oldCap * sizeof(PrefMapElem)); // Delete the old map and store the new stuff fMemoryManager->deallocate(toExpand->fMap);//delete [] toExpand->fMap; toExpand->fMap = newMap; toExpand->fMapCapacity = newCapacity; } void NamespaceScope::expandStack() { // Expand the capacity by 25% and allocate a new buffer const unsigned int newCapacity = (unsigned int)(fStackCapacity * 1.25); StackElem** newStack = (StackElem**) fMemoryManager->allocate ( newCapacity * sizeof(StackElem*) );//new StackElem*[newCapacity]; // Copy over the old stuff memcpy(newStack, fStack, fStackCapacity * sizeof(StackElem*)); // // And zero out the new stuff. Though we use a stack top, we reuse old // stack contents so we need to know if elements have been initially // allocated or not as we push new stuff onto the stack. // memset ( &newStack[fStackCapacity] , 0 , (newCapacity - fStackCapacity) * sizeof(StackElem*) ); // Delete the old array and update our members fMemoryManager->deallocate(fStack);//delete [] fStack; fStack = newStack; fStackCapacity = newCapacity; } XERCES_CPP_NAMESPACE_END /** * End of file NamespaceScope.cpp */ xerces-c-3.1.1/src/xercesc/validators/schema/ComplexTypeInfo.cpp0000644000175000017500000007302111325541216023672 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: ComplexTypeInfo.cpp 901107 2010-01-20 08:45:02Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // ComplexTypeInfo: Static member data // --------------------------------------------------------------------------- ComplexTypeInfo* ComplexTypeInfo::fAnyType = 0; void XMLInitializer::initializeComplexTypeInfo() { // create type name XMLCh typeName[128]; XMLSize_t nsLen = XMLString::stringLen(SchemaSymbols::fgURI_SCHEMAFORSCHEMA); XMLString::copyString(typeName, SchemaSymbols::fgURI_SCHEMAFORSCHEMA); typeName[nsLen] = chComma; XMLString::copyString(typeName + nsLen + 1, SchemaSymbols::fgATTVAL_ANYTYPE); // Create and initialize 'anyType' ComplexTypeInfo::fAnyType = new ComplexTypeInfo(); ContentSpecNode* term = new ContentSpecNode ( new QName ( XMLUni::fgZeroLenString , XMLUni::fgZeroLenString , 1 ) , false ); term->setType(ContentSpecNode::Any_Lax); term->setMinOccurs(0); term->setMaxOccurs(SchemaSymbols::XSD_UNBOUNDED); ContentSpecNode* particle = new ContentSpecNode ( ContentSpecNode::ModelGroupSequence , term , 0 ); SchemaAttDef* attWildCard = new SchemaAttDef ( XMLUni::fgZeroLenString , XMLUni::fgZeroLenString , 1 , XMLAttDef::Any_Any , XMLAttDef::ProcessContents_Lax ); ComplexTypeInfo::fAnyType->setTypeName(typeName); ComplexTypeInfo::fAnyType->setBaseComplexTypeInfo(ComplexTypeInfo::fAnyType); ComplexTypeInfo::fAnyType->setDerivedBy(SchemaSymbols::XSD_RESTRICTION); ComplexTypeInfo::fAnyType->setContentType(SchemaElementDecl::Mixed_Complex); ComplexTypeInfo::fAnyType->setContentSpec(particle); ComplexTypeInfo::fAnyType->setAttWildCard(attWildCard); } void XMLInitializer::terminateComplexTypeInfo() { delete ComplexTypeInfo::fAnyType; ComplexTypeInfo::fAnyType = 0; } ComplexTypeInfo* ComplexTypeInfo::getAnyType(unsigned int /*emptyNSId*/) { return fAnyType; } // --------------------------------------------------------------------------- // ComplexTypeInfo: Constructors and Destructor // --------------------------------------------------------------------------- ComplexTypeInfo::ComplexTypeInfo(MemoryManager* const manager) : fAnonymous(false) , fAbstract(false) , fAdoptContentSpec(true) , fAttWithTypeId(false) , fPreprocessed(false) , fDerivedBy(0) , fBlockSet(0) , fFinalSet(0) , fScopeDefined(Grammar::TOP_LEVEL_SCOPE) , fContentType(SchemaElementDecl::Empty) , fElementId(XMLElementDecl::fgInvalidElemId) , fUniqueURI(0) , fContentSpecOrgURISize(16) , fTypeName(0) , fTypeLocalName(0) , fTypeUri(0) , fBaseDatatypeValidator(0) , fDatatypeValidator(0) , fBaseComplexTypeInfo(0) , fContentSpec(0) , fAttWildCard(0) , fAttList(0) , fElements(0) , fAttDefs(0) , fContentModel(0) , fFormattedModel(0) , fContentSpecOrgURI(0) , fLocator(0) , fMemoryManager(manager) { fAttDefs = new (fMemoryManager) RefHash2KeysTableOf(29, true, fMemoryManager); fAttList = new (fMemoryManager) SchemaAttDefList(fAttDefs,fMemoryManager); } ComplexTypeInfo::~ComplexTypeInfo() { fMemoryManager->deallocate(fTypeName); //delete [] fTypeName; fMemoryManager->deallocate(fTypeLocalName); //delete [] fTypeLocalName; fMemoryManager->deallocate(fTypeUri); //delete [] fTypeUri; if (fAdoptContentSpec) { delete fContentSpec; } delete fAttWildCard; delete fAttDefs; delete fAttList; delete fElements; delete fLocator; delete fContentModel; fMemoryManager->deallocate(fFormattedModel); //delete [] fFormattedModel; fMemoryManager->deallocate(fContentSpecOrgURI); //delete [] fContentSpecOrgURI; } // --------------------------------------------------------------------------- // ComplexTypeInfo: Setter methods // --------------------------------------------------------------------------- void ComplexTypeInfo::addAttDef(SchemaAttDef* const toAdd) { // Tell this guy the element id of its parent (us) toAdd->setElemId(getElementId()); fAttDefs->put((void*)(toAdd->getAttName()->getLocalPart()), toAdd->getAttName()->getURI(), toAdd); // update and/or create fAttList fAttList->addAttDef(toAdd); } void ComplexTypeInfo::setContentSpec(ContentSpecNode* const toAdopt) { if (fContentSpec && fAdoptContentSpec) { delete fContentSpec; } fContentSpec = toAdopt; } void ComplexTypeInfo::setLocator(XSDLocator* const aLocator) { if (fLocator) delete fLocator; fLocator = aLocator; } // --------------------------------------------------------------------------- // ComplexTypeInfo: Getter methods // --------------------------------------------------------------------------- XMLAttDefList& ComplexTypeInfo::getAttDefList() const { // NOTE: if users plan on using nextElement() to access attributes // they need to call Reset() explicitly (i.e attList.Reset()). // It's better to get the attribute count and use an index to // access attributes (especially if same grammar is used in // multiple threads). return *fAttList; } const XMLCh* ComplexTypeInfo::getFormattedContentModel() const { // // If its not already built, then call the protected virtual method // to allow the derived class to build it (since only it knows.) // Otherwise, just return the previously formatted methods. // // Since we are faulting this in, within a const getter, we have to // cast off the const-ness. // if (!fFormattedModel) ((ComplexTypeInfo*)this)->fFormattedModel = formatContentModel(); return fFormattedModel; } // --------------------------------------------------------------------------- // ComplexTypeInfo: Helper methods // --------------------------------------------------------------------------- void ComplexTypeInfo::checkUniqueParticleAttribution (SchemaGrammar* const pGrammar, GrammarResolver* const pGrammarResolver, XMLStringPool* const pStringPool, XMLValidator* const pValidator) { if (fContentSpec && !fContentModel) { fContentModel = makeContentModel(true); if (fContentModel) { fContentModel->checkUniqueParticleAttribution(pGrammar, pGrammarResolver, pStringPool, pValidator, fContentSpecOrgURI, fTypeLocalName); } } } // --------------------------------------------------------------------------- // ComplexTypeInfo: Private Helper methods // --------------------------------------------------------------------------- void ComplexTypeInfo::faultInAttDefList() const { // Use a hash modulus of 29 and tell it owns its elements ((ComplexTypeInfo*)this)->fAttDefs = new (fMemoryManager) RefHash2KeysTableOf(29, true, fMemoryManager); } XMLCh* ComplexTypeInfo::formatContentModel() const { XMLCh* newValue = 0; if (fContentType == SchemaElementDecl::Any) { newValue = XMLString::replicate(XMLUni::fgAnyString, fMemoryManager); } else if (fContentType == SchemaElementDecl::Empty || fContentType == SchemaElementDecl::ElementOnlyEmpty) { newValue = XMLString::replicate(XMLUni::fgEmptyString, fMemoryManager); } else { // // Use a temp XML buffer to format into. Content models could be // pretty long, but very few will be longer than one K. The buffer // will expand to handle the more pathological ones. // const ContentSpecNode* specNode = fContentSpec; if (specNode) { XMLBuffer bufFmt(1023, fMemoryManager); specNode->formatSpec(bufFmt); newValue = XMLString::replicate ( bufFmt.getRawBuffer() , fMemoryManager ); } } return newValue; } bool ComplexTypeInfo::useRepeatingLeafNodes(ContentSpecNode* particle) { int maxOccurs = particle->getMaxOccurs(); int minOccurs = particle->getMinOccurs(); ContentSpecNode::NodeTypes type = particle->getType(); if (((type & 0x0f) == ContentSpecNode::Choice) || ((type & 0x0f) == ContentSpecNode::Sequence)) { if (minOccurs != 1 || maxOccurs != 1) { if(particle->getFirst()!=0 && particle->getSecond()==0) { ContentSpecNode* particle2 = particle->getFirst(); ContentSpecNode::NodeTypes type2 = particle2->getType(); return (((type2 == ContentSpecNode::Leaf) || ((type2 & 0x0f) == ContentSpecNode::Any) || ((type2 & 0x0f) == ContentSpecNode::Any_Other) || ((type2 & 0x0f) == ContentSpecNode::Any_NS)) && particle2->getMinOccurs() == 1 && particle2->getMaxOccurs() == 1); } return (particle->getFirst()==0 && particle->getSecond()==0); } if(particle->getFirst()!=0 && !useRepeatingLeafNodes(particle->getFirst())) return false; if(particle->getSecond()!=0 && !useRepeatingLeafNodes(particle->getSecond())) return false; } return true; } XMLContentModel* ComplexTypeInfo::makeContentModel(bool checkUPA) { ContentSpecNode* aSpecNode = new (fMemoryManager) ContentSpecNode(*fContentSpec); if (checkUPA) { fContentSpecOrgURI = (unsigned int*) fMemoryManager->allocate ( fContentSpecOrgURISize * sizeof(unsigned int) ); //new unsigned int[fContentSpecOrgURISize]; } aSpecNode = convertContentSpecTree(aSpecNode, checkUPA, useRepeatingLeafNodes(aSpecNode)); Janitor janSpecNode(aSpecNode); XMLContentModel* cmRet = 0; if (fContentType == SchemaElementDecl::Simple || fContentType == SchemaElementDecl::ElementOnlyEmpty) { // just return nothing } else if (fContentType == SchemaElementDecl::Mixed_Simple) { // // Just create a mixel content model object. This type of // content model is optimized for mixed content validation. // cmRet = new (fMemoryManager) MixedContentModel(false, aSpecNode, false, fMemoryManager); } else if (fContentType == SchemaElementDecl::Mixed_Complex || fContentType == SchemaElementDecl::Children) { bool isMixed = (fContentType == SchemaElementDecl::Mixed_Complex); // // This method will create an optimal model for the complexity // of the element's defined model. If its simple, it will create // a SimpleContentModel object. If its a simple list, it will // create a SimpleListContentModel object. If its complex, it // will create a DFAContentModel object. // if(!aSpecNode) ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::CM_UnknownCMSpecType, fMemoryManager); ContentSpecNode::NodeTypes specType = aSpecNode->getType(); // // Do a sanity check that the node is does not have a PCDATA id. Since, // if it was, it should have already gotten taken by the Mixed model. // if (aSpecNode->getElement() && aSpecNode->getElement()->getURI() == XMLElementDecl::fgPCDataElemId) ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::CM_NoPCDATAHere, fMemoryManager); // // According to the type of node, we will create the correct type of // content model. // if (((specType & 0x0f) == ContentSpecNode::Any) || ((specType & 0x0f) == ContentSpecNode::Any_Other) || ((specType & 0x0f) == ContentSpecNode::Any_NS) || specType == ContentSpecNode::Loop) { // let fall through to build a DFAContentModel } else if (isMixed) { if (specType == ContentSpecNode::All) { // All the nodes under an ALL must be additional ALL nodes and // ELEMENTs (or ELEMENTs under ZERO_OR_ONE nodes.) // We collapse the ELEMENTs into a single vector. cmRet = new (fMemoryManager) AllContentModel(aSpecNode, true, fMemoryManager); } else if (specType == ContentSpecNode::ZeroOrOne) { // An ALL node can appear under a ZERO_OR_ONE node. if (aSpecNode->getFirst()->getType() == ContentSpecNode::All) { cmRet = new (fMemoryManager) AllContentModel(aSpecNode->getFirst(), true, fMemoryManager); } } // otherwise, let fall through to build a DFAContentModel } else if (specType == ContentSpecNode::Leaf) { // Create a simple content model cmRet = new (fMemoryManager) SimpleContentModel ( false , aSpecNode->getElement() , 0 , ContentSpecNode::Leaf , fMemoryManager ); } else if (((specType & 0x0f) == ContentSpecNode::Choice) || ((specType & 0x0f) == ContentSpecNode::Sequence)) { // // Lets see if both of the children are leafs. If so, then it has to // be a simple content model // if ((aSpecNode->getFirst()->getType() == ContentSpecNode::Leaf) && (aSpecNode->getSecond()) && (aSpecNode->getSecond()->getType() == ContentSpecNode::Leaf)) { cmRet = new (fMemoryManager) SimpleContentModel ( false , aSpecNode->getFirst()->getElement() , aSpecNode->getSecond()->getElement() , specType , fMemoryManager ); } } else if ((specType == ContentSpecNode::OneOrMore) || (specType == ContentSpecNode::ZeroOrMore) || (specType == ContentSpecNode::ZeroOrOne)) { // // Its a repetition, so see if its one child is a leaf. If so its a // repetition of a single element, so we can do a simple content // model for that. // if (aSpecNode->getFirst()->getType() == ContentSpecNode::Leaf) { cmRet = new (fMemoryManager) SimpleContentModel ( false , aSpecNode->getFirst()->getElement() , 0 , specType , fMemoryManager ); } else if (aSpecNode->getFirst()->getType() == ContentSpecNode::All) cmRet = new (fMemoryManager) AllContentModel(aSpecNode->getFirst(), false, fMemoryManager); } else if (specType == ContentSpecNode::All) cmRet = new (fMemoryManager) AllContentModel(aSpecNode, false, fMemoryManager); else { ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::CM_UnknownCMSpecType, fMemoryManager); } // Its not any simple type of content, so create a DFA based content model if(cmRet==0) cmRet = new (fMemoryManager) DFAContentModel(false, aSpecNode, isMixed, fMemoryManager); } else { ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::CM_MustBeMixedOrChildren, fMemoryManager); } return cmRet; } // --------------------------------------------------------------------------- // SchemaElementDecl: Private helper methods // --------------------------------------------------------------------------- ContentSpecNode* ComplexTypeInfo::convertContentSpecTree(ContentSpecNode* const curNode, bool checkUPA, bool bAllowCompactSyntax) { if (!curNode) return 0; const ContentSpecNode::NodeTypes curType = curNode->getType(); // When checking Unique Particle Attribution, rename leaf elements if (checkUPA) { if (curNode->getElement()) { if (fUniqueURI == fContentSpecOrgURISize) { resizeContentSpecOrgURI(); } fContentSpecOrgURI[fUniqueURI] = curNode->getElement()->getURI(); curNode->getElement()->setURI(fUniqueURI); fUniqueURI++; } } // Get the spec type of the passed node int minOccurs = curNode->getMinOccurs(); int maxOccurs = curNode->getMaxOccurs(); ContentSpecNode* retNode = curNode; if ((curType & 0x0f) == ContentSpecNode::Any || (curType & 0x0f) == ContentSpecNode::Any_Other || (curType & 0x0f) == ContentSpecNode::Any_NS || curType == ContentSpecNode::Leaf) { retNode = expandContentModel(curNode, minOccurs, maxOccurs, bAllowCompactSyntax); } else if (((curType & 0x0f) == ContentSpecNode::Choice) || (curType == ContentSpecNode::All) || ((curType & 0x0f) == ContentSpecNode::Sequence)) { ContentSpecNode* childNode = curNode->getFirst(); ContentSpecNode* leftNode = convertContentSpecTree(childNode, checkUPA, bAllowCompactSyntax); ContentSpecNode* rightNode = curNode->getSecond(); if (!rightNode) { retNode = expandContentModel(leftNode, minOccurs, maxOccurs, bAllowCompactSyntax); curNode->setAdoptFirst(false); delete curNode; return retNode; } if (leftNode != childNode) { curNode->setAdoptFirst(false); curNode->setFirst(leftNode); curNode->setAdoptFirst(true); } childNode = rightNode; rightNode = convertContentSpecTree(childNode, checkUPA, bAllowCompactSyntax); if (rightNode != childNode) { curNode->setAdoptSecond(false); curNode->setSecond(rightNode); curNode->setAdoptSecond(true); } retNode = expandContentModel(curNode, minOccurs, maxOccurs, bAllowCompactSyntax); } return retNode; } ContentSpecNode* ComplexTypeInfo::expandContentModel(ContentSpecNode* const specNode, int minOccurs, int maxOccurs, bool bAllowCompactSyntax) { if (!specNode) { return 0; } ContentSpecNode* saveNode = specNode; ContentSpecNode* retNode = specNode; if (minOccurs == 1 && maxOccurs == 1) { } else if (minOccurs == 0 && maxOccurs == 1) { retNode = new (fMemoryManager) ContentSpecNode ( ContentSpecNode::ZeroOrOne , retNode , 0 , true , true , fMemoryManager ); } else if (minOccurs == 0 && maxOccurs == -1) { retNode = new (fMemoryManager) ContentSpecNode ( ContentSpecNode::ZeroOrMore , retNode , 0 , true , true , fMemoryManager ); } else if (minOccurs == 1 && maxOccurs == -1) { retNode = new (fMemoryManager) ContentSpecNode ( ContentSpecNode::OneOrMore , retNode , 0 , true , true , fMemoryManager ); } // if what is being repeated is a leaf avoid expanding the tree else if(bAllowCompactSyntax && (saveNode->getType()==ContentSpecNode::Leaf || (saveNode->getType() & 0x0f)==ContentSpecNode::Any || (saveNode->getType() & 0x0f)==ContentSpecNode::Any_Other || (saveNode->getType() & 0x0f)==ContentSpecNode::Any_NS)) { retNode = new (fMemoryManager) ContentSpecNode ( ContentSpecNode::Loop , retNode , 0 , true , true , fMemoryManager ); retNode->setMinOccurs(minOccurs); retNode->setMaxOccurs(maxOccurs); if(minOccurs==0) retNode = new (fMemoryManager) ContentSpecNode ( ContentSpecNode::ZeroOrMore , retNode , 0 , true , true , fMemoryManager ); else retNode = new (fMemoryManager) ContentSpecNode ( ContentSpecNode::OneOrMore , retNode , 0 , true , true , fMemoryManager ); } else if (maxOccurs == -1) { retNode = new (fMemoryManager) ContentSpecNode ( ContentSpecNode::OneOrMore , retNode , 0 , true , true , fMemoryManager ); for (int i=0; i < (minOccurs-1); i++) { retNode = new (fMemoryManager) ContentSpecNode ( ContentSpecNode::Sequence , saveNode , retNode , false , true , fMemoryManager ); } } else { if (minOccurs == 0) { ContentSpecNode* optional = new (fMemoryManager) ContentSpecNode ( ContentSpecNode::ZeroOrOne , saveNode , 0 , true , true , fMemoryManager ); retNode = optional; for (int i=0; i < (maxOccurs-1); i++) { retNode = new (fMemoryManager) ContentSpecNode ( ContentSpecNode::Sequence , retNode , optional , true , false , fMemoryManager ); } } else { if (minOccurs > 1) { retNode = new (fMemoryManager) ContentSpecNode ( ContentSpecNode::Sequence , retNode , saveNode , true , false , fMemoryManager ); for (int i=1; i < (minOccurs-1); i++) { retNode = new (fMemoryManager) ContentSpecNode ( ContentSpecNode::Sequence , retNode , saveNode , true , false , fMemoryManager ); } } int counter = maxOccurs-minOccurs; if (counter > 0) { ContentSpecNode* optional = new (fMemoryManager) ContentSpecNode ( ContentSpecNode::ZeroOrOne , saveNode , 0 , false , true , fMemoryManager ); retNode = new (fMemoryManager) ContentSpecNode ( ContentSpecNode::Sequence , retNode , optional , true , true , fMemoryManager ); for (int j=1; j < counter; j++) { retNode = new (fMemoryManager) ContentSpecNode ( ContentSpecNode::Sequence , retNode , optional , true , false , fMemoryManager ); } } } } return retNode; } void ComplexTypeInfo::resizeContentSpecOrgURI() { unsigned int newSize = fContentSpecOrgURISize * 2; unsigned int* newContentSpecOrgURI = (unsigned int*) fMemoryManager->allocate ( newSize * sizeof(unsigned int) ); //new unsigned int[newSize]; // Copy the existing values unsigned int index = 0; for (; index < fContentSpecOrgURISize; index++) newContentSpecOrgURI[index] = fContentSpecOrgURI[index]; for (; index < newSize; index++) newContentSpecOrgURI[index] = 0; // Delete the old array and udpate our members fMemoryManager->deallocate(fContentSpecOrgURI); //delete [] fContentSpecOrgURI; fContentSpecOrgURI = newContentSpecOrgURI; fContentSpecOrgURISize = newSize; } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(ComplexTypeInfo) void ComplexTypeInfo::serialize(XSerializeEngine& serEng) { if (serEng.isStoring()) { serEng<* fElements; * Serialize RefHash2KeysTableOf* fAttDefs; ***/ XTemplateSerializer::storeObject(fElements, serEng); XTemplateSerializer::storeObject(fAttDefs, serEng); /*** * Don't serialize * * fContentModel; * fFormattedModel; * fLocator; * * fContentSpecOrgURI: start of the array * fContentSpecOrgURISize: size of the array * fUniqueURI: the current last element in the array ***/ } else { serEng>>fAnonymous; serEng>>fAbstract; serEng>>fAdoptContentSpec; serEng>>fAttWithTypeId; serEng>>fPreprocessed; serEng>>fDerivedBy; serEng>>fBlockSet; serEng>>fFinalSet; serEng>>fScopeDefined; serEng>>fContentType; serEng>>fElementId; serEng.readString(fTypeName); serEng.readString(fTypeLocalName); serEng.readString(fTypeUri); fBaseDatatypeValidator = DatatypeValidator::loadDV(serEng); fDatatypeValidator = DatatypeValidator::loadDV(serEng); serEng>>fBaseComplexTypeInfo; serEng>>fContentSpec; serEng>>fAttWildCard; delete fAttList; // will recreate it next... serEng>>fAttList; /*** * * Deserialize RefVectorOf* fElements; * Deserialize RefHash2KeysTableOf* fAttDefs; ***/ XTemplateSerializer::loadObject(&fElements, 8, false, serEng); delete fAttDefs; // will recreate it next... XTemplateSerializer::loadObject(&fAttDefs, 29, true, serEng); /*** * Don't deserialize * * fFormattedModel; * fLocator; * * fContentSpecOrgURI: start of the array * fContentSpecOrgURISize: size of the array * fUniqueURI: the current last element in the array ***/ fFormattedModel = 0; fLocator = 0; fContentSpecOrgURI = 0; fContentSpecOrgURISize = 0; fUniqueURI = 0; // Create the content model by calling getContentModel(). This // will ensure the grammar can be used concurrently by multiple // parsers. // Don't bother to do check unique particle attribution, since // this will already have been done when the grammar was first // created (if full schema checking was enabled). getContentModel(false); } } XERCES_CPP_NAMESPACE_END /** * End of file ComplexTypeInfo.cpp */ xerces-c-3.1.1/src/xercesc/validators/schema/identity/0000755000175000017500000000000011363617236021737 5ustar borisborisxerces-c-3.1.1/src/xercesc/validators/schema/identity/XPathMatcher.cpp0000644000175000017500000003405411241271240024763 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XPathMatcher.cpp 804234 2009-08-14 14:20:16Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN typedef JanitorMemFunCall CleanupType; // --------------------------------------------------------------------------- // XPathMatcher: Constructors and Destructor // --------------------------------------------------------------------------- XPathMatcher::XPathMatcher( XercesXPath* const xpath , MemoryManager* const manager) : fLocationPathSize(0) , fMatched(0) , fNoMatchDepth(0) , fCurrentStep(0) , fStepIndexes(0) , fLocationPaths(0) , fIdentityConstraint(0) , fMemoryManager(manager) { CleanupType cleanup(this, &XPathMatcher::cleanUp); try { init(xpath); } catch(const OutOfMemoryException&) { cleanup.release(); throw; } cleanup.release(); } XPathMatcher::XPathMatcher(XercesXPath* const xpath, IdentityConstraint* const ic, MemoryManager* const manager) : fLocationPathSize(0) , fMatched(0) , fNoMatchDepth(0) , fCurrentStep(0) , fStepIndexes(0) , fLocationPaths(0) , fIdentityConstraint(ic) , fMemoryManager(manager) { CleanupType cleanup(this, &XPathMatcher::cleanUp); try { init(xpath); } catch(const OutOfMemoryException&) { cleanup.release(); throw; } cleanup.release(); } XPathMatcher::~XPathMatcher() { cleanUp(); } // --------------------------------------------------------------------------- // XPathMatcher: Helper methods // --------------------------------------------------------------------------- void XPathMatcher::init(XercesXPath* const xpath) { if (xpath) { fLocationPaths = xpath->getLocationPaths(); fLocationPathSize = (fLocationPaths ? fLocationPaths->size() : 0); if (fLocationPathSize) { fStepIndexes = new (fMemoryManager) RefVectorOf >(fLocationPathSize, true, fMemoryManager); fCurrentStep = (XMLSize_t*) fMemoryManager->allocate ( fLocationPathSize * sizeof(XMLSize_t) );//new int[fLocationPathSize]; fNoMatchDepth = (XMLSize_t*) fMemoryManager->allocate ( fLocationPathSize * sizeof(XMLSize_t) );//new int[fLocationPathSize]; fMatched = (unsigned char*) fMemoryManager->allocate ( fLocationPathSize * sizeof(unsigned char) );//new int[fLocationPathSize]; for(XMLSize_t i=0; i < fLocationPathSize; i++) { fStepIndexes->addElement(new (fMemoryManager) ValueStackOf(8, fMemoryManager)); } } } } // --------------------------------------------------------------------------- // XPathMatcher: XMLDocumentHandler methods // --------------------------------------------------------------------------- void XPathMatcher::startDocumentFragment() { for(XMLSize_t i = 0; i < fLocationPathSize; i++) { fStepIndexes->elementAt(i)->removeAllElements(); fCurrentStep[i] = 0; fNoMatchDepth[i] = 0; fMatched[i] = 0; } } void XPathMatcher::startElement(const XMLElementDecl& elemDecl, const unsigned int urlId, const XMLCh* const elemPrefix, const RefVectorOf& attrList, const XMLSize_t attrCount, ValidationContext* validationContext /*=0*/) { for (XMLSize_t i = 0; i < fLocationPathSize; i++) { // push context XMLSize_t startStep = fCurrentStep[i]; fStepIndexes->elementAt(i)->push(startStep); // try next xpath, if not matching if ((fMatched[i] & XP_MATCHED_D) == XP_MATCHED || fNoMatchDepth[i] > 0) { fNoMatchDepth[i]++; continue; } if((fMatched[i] & XP_MATCHED_D) == XP_MATCHED_D) { fMatched[i] = XP_MATCHED_DP; } // consume self::node() steps XercesLocationPath* locPath = fLocationPaths->elementAt(i); XMLSize_t stepSize = locPath->getStepSize(); while (fCurrentStep[i] < stepSize && locPath->getStep(fCurrentStep[i])->getAxisType() == XercesStep::AxisType_SELF) { fCurrentStep[i]++; } if (fCurrentStep[i] == stepSize) { fMatched[i] = XP_MATCHED; continue; } // now if the current step is a descendant step, we let the next // step do its thing; if it fails, we reset ourselves // to look at this step for next time we're called. // so first consume all descendants: XMLSize_t descendantStep = fCurrentStep[i]; while (fCurrentStep[i] < stepSize && locPath->getStep(fCurrentStep[i])->getAxisType() == XercesStep::AxisType_DESCENDANT) { fCurrentStep[i]++; } bool sawDescendant = fCurrentStep[i] > descendantStep; if (fCurrentStep[i] == stepSize) { fNoMatchDepth[i]++; continue; } // match child::... step, if haven't consumed any self::node() if ((fCurrentStep[i] == startStep || fCurrentStep[i] > descendantStep) && locPath->getStep(fCurrentStep[i])->getAxisType() == XercesStep::AxisType_CHILD) { XercesStep* step = locPath->getStep(fCurrentStep[i]); XercesNodeTest* nodeTest = step->getNodeTest(); QName elemQName(elemPrefix, elemDecl.getElementName()->getLocalPart(), urlId, fMemoryManager); if (!matches(nodeTest, &elemQName)) { if(fCurrentStep[i] > descendantStep) { fCurrentStep[i] = descendantStep; continue; } fNoMatchDepth[i]++; continue; } fCurrentStep[i]++; } if (fCurrentStep[i] == stepSize) { if (sawDescendant) { fCurrentStep[i] = descendantStep; fMatched[i] = XP_MATCHED_D; } else { fMatched[i] = XP_MATCHED; } continue; } // match attribute::... step if (fCurrentStep[i] < stepSize && locPath->getStep(fCurrentStep[i])->getAxisType() == XercesStep::AxisType_ATTRIBUTE) { if (attrCount) { XercesNodeTest* nodeTest = locPath->getStep(fCurrentStep[i])->getNodeTest(); for (XMLSize_t attrIndex = 0; attrIndex < attrCount; attrIndex++) { const XMLAttr* curDef = attrList.elementAt(attrIndex); if (matches(nodeTest, curDef->getAttName())) { fCurrentStep[i]++; if (fCurrentStep[i] == stepSize) { fMatched[i] = XP_MATCHED_A; SchemaAttDef* attDef = ((SchemaElementDecl&) elemDecl).getAttDef(curDef->getName(), curDef->getURIId()); DatatypeValidator* dv = (attDef) ? attDef->getDatatypeValidator() : 0; const XMLCh* value = curDef->getValue(); // store QName using their Clark name if(dv && dv->getType()==DatatypeValidator::QName) { int index=XMLString::indexOf(value, chColon); if(index==-1) matched(value, dv, false); else { XMLBuffer buff(1023, fMemoryManager); buff.append(chOpenCurly); if(validationContext) { XMLCh* prefix=(XMLCh*)fMemoryManager->allocate((index+1)*sizeof(XMLCh)); ArrayJanitor janPrefix(prefix, fMemoryManager); XMLString::subString(prefix, value, 0, (XMLSize_t)index, fMemoryManager); buff.append(validationContext->getURIForPrefix(prefix)); } buff.append(chCloseCurly); buff.append(value+index+1); matched(buff.getRawBuffer(), dv, false); } } else matched(value, dv, false); } break; } } } if ((fMatched[i] & XP_MATCHED) != XP_MATCHED) { if(fCurrentStep[i] > descendantStep) { fCurrentStep[i] = descendantStep; continue; } fNoMatchDepth[i]++; } } } } void XPathMatcher::endElement(const XMLElementDecl& elemDecl, const XMLCh* const elemContent, ValidationContext* validationContext /*=0*/, DatatypeValidator* actualValidator /*=0*/) { for(XMLSize_t i = 0; i < fLocationPathSize; i++) { // go back a step fCurrentStep[i] = fStepIndexes->elementAt(i)->pop(); // don't do anything, if not matching if (fNoMatchDepth[i] > 0) { fNoMatchDepth[i]--; } // signal match, if appropriate else { if (fMatched[i] == 0) continue; if ((fMatched[i] & XP_MATCHED_A) == XP_MATCHED_A) { fMatched[i] = 0; continue; } DatatypeValidator* dv = actualValidator?actualValidator:((SchemaElementDecl*) &elemDecl)->getDatatypeValidator(); bool isNillable = (((SchemaElementDecl *) &elemDecl)->getMiscFlags() & SchemaSymbols::XSD_NILLABLE) != 0; // store QName using their Clark name if(dv && dv->getType()==DatatypeValidator::QName) { int index=XMLString::indexOf(elemContent, chColon); if(index==-1) matched(elemContent, dv, isNillable); else { XMLBuffer buff(1023, fMemoryManager); buff.append(chOpenCurly); if(validationContext) { XMLCh* prefix=(XMLCh*)fMemoryManager->allocate((index+1)*sizeof(XMLCh)); ArrayJanitor janPrefix(prefix, fMemoryManager); XMLString::subString(prefix, elemContent, 0, (XMLSize_t)index, fMemoryManager); buff.append(validationContext->getURIForPrefix(prefix)); } buff.append(chCloseCurly); buff.append(elemContent+index+1); matched(buff.getRawBuffer(), dv, isNillable); } } else matched(elemContent, dv, isNillable); fMatched[i] = 0; } } } // --------------------------------------------------------------------------- // XPathMatcher: Match methods // --------------------------------------------------------------------------- unsigned char XPathMatcher::isMatched() { // xpath has been matched if any one of the members of the union have matched. for (XMLSize_t i=0; i < fLocationPathSize; i++) { if (((fMatched[i] & XP_MATCHED) == XP_MATCHED) && ((fMatched[i] & XP_MATCHED_DP) != XP_MATCHED_DP)) return fMatched[i]; } return 0; } void XPathMatcher::matched(const XMLCh* const, DatatypeValidator* const, const bool) { return; } bool XPathMatcher::matches(const XercesNodeTest* nodeTest, const QName* qName) { if (nodeTest->getType() == XercesNodeTest::NodeType_QNAME) { return (*nodeTest->getName())==(*qName); } if (nodeTest->getType() == XercesNodeTest::NodeType_NAMESPACE) { return nodeTest->getName()->getURI() == qName->getURI(); } // NodeType_WILDCARD return true; } // --------------------------------------------------------------------------- // XPathMatcher: Match methods // --------------------------------------------------------------------------- int XPathMatcher::getInitialDepth() const { ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Regex_NotSupported, fMemoryManager); return 0; // to make some compilers happy } XERCES_CPP_NAMESPACE_END /** * End of file XPathMatcher.cpp */ xerces-c-3.1.1/src/xercesc/validators/schema/identity/ValueStore.hpp0000644000175000017500000001314511360344373024541 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: ValueStore.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_VALUESTORE_HPP) #define XERCESC_INCLUDE_GUARD_VALUESTORE_HPP /** * This class stores values associated to an identity constraint. * Each value stored corresponds to a field declared for the identity * constraint. */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Forward Declaration // --------------------------------------------------------------------------- class FieldActivator; class IdentityConstraint; class XMLScanner; class ValueStoreCache; struct ICValueHasher { ICValueHasher(MemoryManager* const manager) : fMemoryManager(manager) {} XMLSize_t getHashVal(const void* key, XMLSize_t mod) const; bool equals(const void *const key1, const void *const key2) const; // ----------------------------------------------------------------------- // Helper methods // ----------------------------------------------------------------------- /** * Returns whether a field associated value * is a duplicate of another associated value. * It is a duplicate only if either of these conditions are true: * - The Datatypes are the same or related by derivation and the values * are in the same valuespace. * - The datatypes are unrelated and the values are Stringwise identical. */ bool isDuplicateOf(DatatypeValidator* const dv1, const XMLCh* const val1, DatatypeValidator* const dv2, const XMLCh* const val2) const; MemoryManager* fMemoryManager; }; class VALIDATORS_EXPORT ValueStore : public XMemory { public: // ----------------------------------------------------------------------- // Constructors/Destructor // ----------------------------------------------------------------------- ValueStore(IdentityConstraint* const ic, XMLScanner* const scanner, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); ~ValueStore(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- IdentityConstraint* getIdentityConstraint() const; // ----------------------------------------------------------------------- // Helper methods // ----------------------------------------------------------------------- void append(const ValueStore* const other); void startValueScope(); void endValueScope(); void addValue(FieldActivator* const fieldActivator, IC_Field* const field, DatatypeValidator* const dv, const XMLCh* const value); bool contains(const FieldValueMap* const other); void clear(); // ----------------------------------------------------------------------- // Document handling methods // ----------------------------------------------------------------------- void endDocumentFragment(ValueStoreCache* const valueStoreCache); // ----------------------------------------------------------------------- // Error reporting methods // ----------------------------------------------------------------------- void duplicateValue(); void reportNilError(IdentityConstraint* const ic); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- ValueStore(const ValueStore& other); ValueStore& operator= (const ValueStore& other); // ----------------------------------------------------------------------- // Data // ----------------------------------------------------------------------- bool fDoReportError; XMLSize_t fValuesCount; IdentityConstraint* fIdentityConstraint; FieldValueMap fValues; RefHashTableOf* fValueTuples; XMLScanner* fScanner; // for error reporting - REVISIT MemoryManager* fMemoryManager; }; // --------------------------------------------------------------------------- // ValueStore: Getter methods // --------------------------------------------------------------------------- inline IdentityConstraint* ValueStore::getIdentityConstraint() const { return fIdentityConstraint; } XERCES_CPP_NAMESPACE_END #endif /** * End of file ValueStore.hpp */ xerces-c-3.1.1/src/xercesc/validators/schema/identity/XPathMatcherStack.cpp0000644000175000017500000000527210523643534025764 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XPathMatcherStack.cpp 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include XERCES_CPP_NAMESPACE_BEGIN typedef JanitorMemFunCall CleanupType; // --------------------------------------------------------------------------- // XPathMatherStack: Constructors and Destructor // --------------------------------------------------------------------------- XPathMatcherStack::XPathMatcherStack(MemoryManager* const manager) : fMatchersCount(0) , fContextStack(0) , fMatchers(0) { CleanupType cleanup(this, &XPathMatcherStack::cleanUp); try { fContextStack = new (manager) ValueStackOf(8, manager); fMatchers = new (manager) RefVectorOf(8, true, manager); } catch(const OutOfMemoryException&) { cleanup.release(); throw; } cleanup.release(); } XPathMatcherStack::~XPathMatcherStack() { cleanUp(); } // --------------------------------------------------------------------------- // XPathMatcherStack: Private helper methods. // --------------------------------------------------------------------------- void XPathMatcherStack::cleanUp() { delete fContextStack; delete fMatchers; } // --------------------------------------------------------------------------- // XPathMatherStack: Clear methods // --------------------------------------------------------------------------- void XPathMatcherStack::clear() { fContextStack->removeAllElements(); fMatchers->removeAllElements(); fMatchersCount = 0; } XERCES_CPP_NAMESPACE_END /** * End of file XPathMatcherStack.cpp */ xerces-c-3.1.1/src/xercesc/validators/schema/identity/XercesXPath.hpp0000644000175000017500000004737111360344373024656 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XercesXPath.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_XERCESXPATH_HPP) #define XERCESC_INCLUDE_GUARD_XERCESXPATH_HPP // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Forward Declarations // --------------------------------------------------------------------------- class XMLStringPool; class VALIDATORS_EXPORT XercesNodeTest : public XSerializable, public XMemory { public: // ----------------------------------------------------------------------- // Constants // ----------------------------------------------------------------------- enum NodeType { NodeType_QNAME = 1, NodeType_WILDCARD = 2, NodeType_NODE = 3, NodeType_NAMESPACE= 4, NodeType_UNKNOWN }; // ----------------------------------------------------------------------- // Constructors/Destructor // ----------------------------------------------------------------------- XercesNodeTest(const short type, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); XercesNodeTest(const QName* const qName); XercesNodeTest(const XMLCh* const prefix, const unsigned int uriId, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); XercesNodeTest(const XercesNodeTest& other); ~XercesNodeTest() { delete fName; } // ----------------------------------------------------------------------- // Operators // ----------------------------------------------------------------------- XercesNodeTest& operator= (const XercesNodeTest& other); bool operator== (const XercesNodeTest& other) const; bool operator!= (const XercesNodeTest& other) const; // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- short getType() const { return fType; } QName* getName() const { return fName; } /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(XercesNodeTest) XercesNodeTest(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); private: // ----------------------------------------------------------------------- // Data members // ----------------------------------------------------------------------- short fType; QName* fName; }; /** * A location path step comprised of an axis and node test. */ class VALIDATORS_EXPORT XercesStep : public XSerializable, public XMemory { public: // ----------------------------------------------------------------------- // Constants // ----------------------------------------------------------------------- enum AxisType { // Axis type AxisType_CHILD = 1, AxisType_ATTRIBUTE = 2, AxisType_SELF = 3, AxisType_DESCENDANT = 4, AxisType_UNKNOWN }; // ----------------------------------------------------------------------- // Constructors/Destructor // ----------------------------------------------------------------------- XercesStep(const unsigned short axisType, XercesNodeTest* const nodeTest); XercesStep(const XercesStep& other); ~XercesStep() { delete fNodeTest; } // ----------------------------------------------------------------------- // Operators // ----------------------------------------------------------------------- XercesStep& operator= (const XercesStep& other); bool operator== (const XercesStep& other) const; bool operator!= (const XercesStep& other) const; // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- unsigned short getAxisType() const { return fAxisType; } XercesNodeTest* getNodeTest() const { return fNodeTest; } /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(XercesStep) XercesStep(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); private: // ----------------------------------------------------------------------- // Data members // ----------------------------------------------------------------------- unsigned short fAxisType; XercesNodeTest* fNodeTest; }; /** * A location path representation for an XPath expression. */ class VALIDATORS_EXPORT XercesLocationPath : public XSerializable, public XMemory { public: // ----------------------------------------------------------------------- // Constructors/Destructor // ----------------------------------------------------------------------- XercesLocationPath(RefVectorOf* const steps); ~XercesLocationPath() { delete fSteps; } // ----------------------------------------------------------------------- // Operators // ----------------------------------------------------------------------- bool operator== (const XercesLocationPath& other) const; bool operator!= (const XercesLocationPath& other) const; // ----------------------------------------------------------------------- // Access methods // ----------------------------------------------------------------------- XMLSize_t getStepSize() const; void addStep(XercesStep* const aStep); XercesStep* getStep(const XMLSize_t index) const; /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(XercesLocationPath) XercesLocationPath(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XercesLocationPath(const XercesLocationPath& other); XercesLocationPath& operator= (const XercesLocationPath& other); // ----------------------------------------------------------------------- // Data members // ----------------------------------------------------------------------- RefVectorOf* fSteps; }; class VALIDATORS_EXPORT XercesXPath : public XSerializable, public XMemory { public: // ----------------------------------------------------------------------- // Constants // ----------------------------------------------------------------------- /** * [28] ExprToken ::= '(' | ')' | '[' | ']' | '.' | '..' | '@' | ',' | '::' * | NameTest | NodeType | Operator | FunctionName * | AxisName | Literal | Number | VariableReference */ enum { EXPRTOKEN_OPEN_PAREN = 0, EXPRTOKEN_CLOSE_PAREN = 1, EXPRTOKEN_OPEN_BRACKET = 2, EXPRTOKEN_CLOSE_BRACKET = 3, EXPRTOKEN_PERIOD = 4, EXPRTOKEN_DOUBLE_PERIOD = 5, EXPRTOKEN_ATSIGN = 6, EXPRTOKEN_COMMA = 7, EXPRTOKEN_DOUBLE_COLON = 8, EXPRTOKEN_NAMETEST_ANY = 9, EXPRTOKEN_NAMETEST_NAMESPACE = 10, EXPRTOKEN_NAMETEST_QNAME = 11, EXPRTOKEN_NODETYPE_COMMENT = 12, EXPRTOKEN_NODETYPE_TEXT = 13, EXPRTOKEN_NODETYPE_PI = 14, EXPRTOKEN_NODETYPE_NODE = 15, EXPRTOKEN_OPERATOR_AND = 16, EXPRTOKEN_OPERATOR_OR = 17, EXPRTOKEN_OPERATOR_MOD = 18, EXPRTOKEN_OPERATOR_DIV = 19, EXPRTOKEN_OPERATOR_MULT = 20, EXPRTOKEN_OPERATOR_SLASH = 21, EXPRTOKEN_OPERATOR_DOUBLE_SLASH = 22, EXPRTOKEN_OPERATOR_UNION = 23, EXPRTOKEN_OPERATOR_PLUS = 24, EXPRTOKEN_OPERATOR_MINUS = 25, EXPRTOKEN_OPERATOR_EQUAL = 26, EXPRTOKEN_OPERATOR_NOT_EQUAL = 27, EXPRTOKEN_OPERATOR_LESS = 28, EXPRTOKEN_OPERATOR_LESS_EQUAL = 29, EXPRTOKEN_OPERATOR_GREATER = 30, EXPRTOKEN_OPERATOR_GREATER_EQUAL = 31, EXPRTOKEN_FUNCTION_NAME = 32, EXPRTOKEN_AXISNAME_ANCESTOR = 33, EXPRTOKEN_AXISNAME_ANCESTOR_OR_SELF = 34, EXPRTOKEN_AXISNAME_ATTRIBUTE = 35, EXPRTOKEN_AXISNAME_CHILD = 36, EXPRTOKEN_AXISNAME_DESCENDANT = 37, EXPRTOKEN_AXISNAME_DESCENDANT_OR_SELF = 38, EXPRTOKEN_AXISNAME_FOLLOWING = 39, EXPRTOKEN_AXISNAME_FOLLOWING_SIBLING = 40, EXPRTOKEN_AXISNAME_NAMESPACE = 41, EXPRTOKEN_AXISNAME_PARENT = 42, EXPRTOKEN_AXISNAME_PRECEDING = 43, EXPRTOKEN_AXISNAME_PRECEDING_SIBLING = 44, EXPRTOKEN_AXISNAME_SELF = 45, EXPRTOKEN_LITERAL = 46, EXPRTOKEN_NUMBER = 47, EXPRTOKEN_VARIABLE_REFERENCE = 48 }; // ----------------------------------------------------------------------- // Constructors/Destructor // ----------------------------------------------------------------------- XercesXPath(const XMLCh* const xpathExpr, XMLStringPool* const stringPool, XercesNamespaceResolver* const scopeContext, const unsigned int emptyNamespaceId, const bool isSelector = false, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); ~XercesXPath(); // ----------------------------------------------------------------------- // Operators // ----------------------------------------------------------------------- bool operator== (const XercesXPath& other) const; bool operator!= (const XercesXPath& other) const; // ----------------------------------------------------------------------- // Constructors/Destructor // ----------------------------------------------------------------------- RefVectorOf* getLocationPaths() const; /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(XercesXPath) XercesXPath(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); XMLCh* getExpression(); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XercesXPath(const XercesXPath& other); XercesXPath& operator= (const XercesXPath& other); // ----------------------------------------------------------------------- // Helper methods // ----------------------------------------------------------------------- void cleanUp(); void checkForSelectedAttributes(); void parseExpression(XMLStringPool* const stringPool, XercesNamespaceResolver* const scopeContext); // ----------------------------------------------------------------------- // Data members // ----------------------------------------------------------------------- unsigned int fEmptyNamespaceId; XMLCh* fExpression; RefVectorOf* fLocationPaths; MemoryManager* fMemoryManager; }; class VALIDATORS_EXPORT XPathScanner : public XMemory { public: // ----------------------------------------------------------------------- // Constants // ----------------------------------------------------------------------- enum { CHARTYPE_INVALID = 0, // invalid XML character CHARTYPE_OTHER = 1, // not special - one of "#%&;?\^`{}~" or DEL CHARTYPE_WHITESPACE = 2, // one of "\t\n\r " (0x09, 0x0A, 0x0D, 0x20) CHARTYPE_EXCLAMATION = 3, // '!' (0x21) CHARTYPE_QUOTE = 4, // '\"' or '\'' (0x22 and 0x27) CHARTYPE_DOLLAR = 5, // '$' (0x24) CHARTYPE_OPEN_PAREN = 6, // '(' (0x28) CHARTYPE_CLOSE_PAREN = 7, // ')' (0x29) CHARTYPE_STAR = 8, // '*' (0x2A) CHARTYPE_PLUS = 9, // '+' (0x2B) CHARTYPE_COMMA = 10, // ',' (0x2C) CHARTYPE_MINUS = 11, // '-' (0x2D) CHARTYPE_PERIOD = 12, // '.' (0x2E) CHARTYPE_SLASH = 13, // '/' (0x2F) CHARTYPE_DIGIT = 14, // '0'-'9' (0x30 to 0x39) CHARTYPE_COLON = 15, // ':' (0x3A) CHARTYPE_LESS = 16, // '<' (0x3C) CHARTYPE_EQUAL = 17, // '=' (0x3D) CHARTYPE_GREATER = 18, // '>' (0x3E) CHARTYPE_ATSIGN = 19, // '@' (0x40) CHARTYPE_LETTER = 20, // 'A'-'Z' or 'a'-'z' (0x41 to 0x5A and 0x61 to 0x7A) CHARTYPE_OPEN_BRACKET = 21, // '[' (0x5B) CHARTYPE_CLOSE_BRACKET = 22, // ']' (0x5D) CHARTYPE_UNDERSCORE = 23, // '_' (0x5F) CHARTYPE_UNION = 24, // '|' (0x7C) CHARTYPE_NONASCII = 25 // Non-ASCII Unicode codepoint (>= 0x80) }; // ----------------------------------------------------------------------- // Constructors/Destructor // ----------------------------------------------------------------------- XPathScanner(XMLStringPool* const stringPool); virtual ~XPathScanner() {} // ----------------------------------------------------------------------- // Scan methods // ----------------------------------------------------------------------- bool scanExpression(const XMLCh* const data, XMLSize_t currentOffset, const XMLSize_t endOffset, ValueVectorOf* const tokens); protected: // ----------------------------------------------------------------------- // Helper methods // ----------------------------------------------------------------------- /** * This method adds the specified token to the token list. By default, * this method allows all tokens. However, subclasses can can override * this method in order to disallow certain tokens from being used in the * scanned XPath expression. This is a convenient way of allowing only * a subset of XPath. */ virtual void addToken(ValueVectorOf* const tokens, const int aToken); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XPathScanner(const XPathScanner& other); XPathScanner& operator= (const XPathScanner& other); // ----------------------------------------------------------------------- // Helper methods // ----------------------------------------------------------------------- void init(); // ----------------------------------------------------------------------- // Scan methods // ----------------------------------------------------------------------- XMLSize_t scanNCName(const XMLCh* const data, const XMLSize_t endOffset, XMLSize_t currentOffset); XMLSize_t scanNumber(const XMLCh* const data, const XMLSize_t endOffset, XMLSize_t currentOffset, ValueVectorOf* const tokens); // ----------------------------------------------------------------------- // Data members // ----------------------------------------------------------------------- int fAndSymbol; int fOrSymbol; int fModSymbol; int fDivSymbol; int fCommentSymbol; int fTextSymbol; int fPISymbol; int fNodeSymbol; int fAncestorSymbol; int fAncestorOrSelfSymbol; int fAttributeSymbol; int fChildSymbol; int fDescendantSymbol; int fDescendantOrSelfSymbol; int fFollowingSymbol; int fFollowingSiblingSymbol; int fNamespaceSymbol; int fParentSymbol; int fPrecedingSymbol; int fPrecedingSiblingSymbol; int fSelfSymbol; XMLStringPool* fStringPool; static const XMLByte fASCIICharMap[128]; }; class VALIDATORS_EXPORT XPathScannerForSchema: public XPathScanner { public: // ----------------------------------------------------------------------- // Constructors/Destructor // ----------------------------------------------------------------------- XPathScannerForSchema(XMLStringPool* const stringPool); ~XPathScannerForSchema() {} protected: // ----------------------------------------------------------------------- // Helper methods // ----------------------------------------------------------------------- void addToken(ValueVectorOf* const tokens, const int aToken); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XPathScannerForSchema(const XPathScannerForSchema& other); XPathScannerForSchema& operator= (const XPathScannerForSchema& other); }; // --------------------------------------------------------------------------- // XercesLocationPath: Access methods // --------------------------------------------------------------------------- inline XMLSize_t XercesLocationPath::getStepSize() const { if (fSteps) return fSteps->size(); return 0; } inline void XercesLocationPath::addStep(XercesStep* const aStep) { fSteps->addElement(aStep); } inline XercesStep* XercesLocationPath::getStep(const XMLSize_t index) const { if (fSteps) return fSteps->elementAt(index); return 0; } // --------------------------------------------------------------------------- // XercesScanner: Helper methods // --------------------------------------------------------------------------- inline void XPathScanner::addToken(ValueVectorOf* const tokens, const int aToken) { tokens->addElement(aToken); } // --------------------------------------------------------------------------- // XercesXPath: Getter methods // --------------------------------------------------------------------------- inline RefVectorOf* XercesXPath::getLocationPaths() const { return fLocationPaths; } inline XMLCh* XercesXPath::getExpression() { return fExpression; } XERCES_CPP_NAMESPACE_END #endif /** * End of file XercesPath.hpp */ xerces-c-3.1.1/src/xercesc/validators/schema/identity/IC_Field.hpp0000644000175000017500000001330711360344373024046 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: IC_Field.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_IC_FIELD_HPP) #define XERCESC_INCLUDE_GUARD_IC_FIELD_HPP // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Forward Declaration // --------------------------------------------------------------------------- class ValueStore; class FieldActivator; class VALIDATORS_EXPORT IC_Field : public XSerializable, public XMemory { public: // ----------------------------------------------------------------------- // Constructors/Destructor // ----------------------------------------------------------------------- IC_Field(XercesXPath* const xpath, IdentityConstraint* const identityConstraint); ~IC_Field(); // ----------------------------------------------------------------------- // operators // ----------------------------------------------------------------------- bool operator== (const IC_Field& other) const; bool operator!= (const IC_Field& other) const; // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- XercesXPath* getXPath() const { return fXPath; } IdentityConstraint* getIdentityConstraint() const { return fIdentityConstraint; } // ----------------------------------------------------------------------- // Factory methods // ----------------------------------------------------------------------- XPathMatcher* createMatcher ( FieldActivator* const fieldActivator , ValueStore* const valueStore , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(IC_Field) IC_Field(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- IC_Field(const IC_Field& other); IC_Field& operator= (const IC_Field& other); // ----------------------------------------------------------------------- // Data members // ----------------------------------------------------------------------- XercesXPath* fXPath; IdentityConstraint* fIdentityConstraint; }; class VALIDATORS_EXPORT FieldMatcher : public XPathMatcher { public: // ----------------------------------------------------------------------- // Constructors/Destructor // ----------------------------------------------------------------------- ~FieldMatcher() {} // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- ValueStore* getValueStore() const { return fValueStore; } IC_Field* getField() const { return fField; } // ----------------------------------------------------------------------- // Virtual methods // ----------------------------------------------------------------------- void matched(const XMLCh* const content, DatatypeValidator* const dv, const bool isNil); private: // ----------------------------------------------------------------------- // Constructors/Destructor // ----------------------------------------------------------------------- FieldMatcher(XercesXPath* const anXPath, IC_Field* const aField, ValueStore* const valueStore, FieldActivator* const fieldActivator, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- FieldMatcher(const FieldMatcher& other); FieldMatcher& operator= (const FieldMatcher& other); // ----------------------------------------------------------------------- // Friends // ----------------------------------------------------------------------- friend class IC_Field; // ----------------------------------------------------------------------- // Data members // ----------------------------------------------------------------------- ValueStore* fValueStore; IC_Field* fField; FieldActivator* fFieldActivator; }; XERCES_CPP_NAMESPACE_END #endif /** * End of file IC_Field.hpp */ xerces-c-3.1.1/src/xercesc/validators/schema/identity/IC_KeyRef.cpp0000644000175000017500000000423610523643534024205 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: IC_KeyRef.cpp 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // IC_KeyRef: Constructors and Destructor // --------------------------------------------------------------------------- IC_KeyRef::IC_KeyRef(const XMLCh* const identityConstraintName, const XMLCh* const elemName, IdentityConstraint* const icKey, MemoryManager* const manager) : IdentityConstraint(identityConstraintName, elemName, manager) , fKey(icKey) { } IC_KeyRef::~IC_KeyRef() { } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(IC_KeyRef) void IC_KeyRef::serialize(XSerializeEngine& serEng) { IdentityConstraint::serialize(serEng); if (serEng.isStoring()) { IdentityConstraint::storeIC(serEng, fKey); } else { fKey = IdentityConstraint::loadIC(serEng); } } IC_KeyRef::IC_KeyRef(MemoryManager* const manager) :IdentityConstraint(0, 0, manager) ,fKey(0) { } XERCES_CPP_NAMESPACE_END /** * End of file IC_KeyRef.cpp */ xerces-c-3.1.1/src/xercesc/validators/schema/identity/IC_Field.cpp0000644000175000017500000001103710523643534024040 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: IC_Field.cpp 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // FieldMatcher: Constructors and Destructor // --------------------------------------------------------------------------- FieldMatcher::FieldMatcher(XercesXPath* const xpath, IC_Field* const aField, ValueStore* const valueStore, FieldActivator* const fieldActivator, MemoryManager* const manager) : XPathMatcher(xpath, (IdentityConstraint*) 0, manager) , fValueStore(valueStore) , fField(aField) , fFieldActivator(fieldActivator) { } // --------------------------------------------------------------------------- // FieldMatcher: Match methods // --------------------------------------------------------------------------- void FieldMatcher::matched(const XMLCh* const content, DatatypeValidator* const dv, const bool isNil) { if(isNil) { fValueStore->reportNilError(fField->getIdentityConstraint()); } fValueStore->addValue(fFieldActivator, fField, dv, content); // once we've stored the value for this field, we set the mayMatch // member to false so that, in the same scope, we don't match any more // values (and throw an error instead). fFieldActivator->setMayMatch(fField, false); } // --------------------------------------------------------------------------- // IC_Field: Constructors and Destructor // --------------------------------------------------------------------------- IC_Field::IC_Field(XercesXPath* const xpath, IdentityConstraint* const identityConstraint) : fXPath(xpath) , fIdentityConstraint(identityConstraint) { } IC_Field::~IC_Field() { delete fXPath; } // --------------------------------------------------------------------------- // IC_Field: operators // --------------------------------------------------------------------------- bool IC_Field::operator== (const IC_Field& other) const { return (*fXPath == *(other.fXPath)); } bool IC_Field::operator!= (const IC_Field& other) const { return !operator==(other); } // --------------------------------------------------------------------------- // IC_Field: Factory methods // --------------------------------------------------------------------------- XPathMatcher* IC_Field::createMatcher(FieldActivator* const fieldActivator, ValueStore* const valueStore, MemoryManager* const manager) { return new (manager) FieldMatcher(fXPath, this, valueStore, fieldActivator, manager); } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(IC_Field) void IC_Field::serialize(XSerializeEngine& serEng) { if (serEng.isStoring()) { serEng<>fXPath; fIdentityConstraint = IdentityConstraint::loadIC(serEng); } } IC_Field::IC_Field(MemoryManager* const ) :fXPath(0) ,fIdentityConstraint(0) { } XERCES_CPP_NAMESPACE_END /** * End of file IC_Field.cpp */ xerces-c-3.1.1/src/xercesc/validators/schema/identity/XPathMatcher.hpp0000644000175000017500000001567011241006565025001 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XPathMatcher.hpp 803869 2009-08-13 12:56:21Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_XPATHMATCHER_HPP) #define XERCESC_INCLUDE_GUARD_XPATHMATCHER_HPP // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Forward Declaration // --------------------------------------------------------------------------- class XMLElementDecl; class XercesXPath; class IdentityConstraint; class DatatypeValidator; class XMLStringPool; class XercesLocationPath; class XMLAttr; class XercesNodeTest; class QName; class ValidationContext; class VALIDATORS_EXPORT XPathMatcher : public XMemory { public: // ----------------------------------------------------------------------- // Constructors/Destructor // ----------------------------------------------------------------------- XPathMatcher(XercesXPath* const xpath, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); XPathMatcher(XercesXPath* const xpath, IdentityConstraint* const ic, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); virtual ~XPathMatcher(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- IdentityConstraint* getIdentityConstraint() const { return fIdentityConstraint; } MemoryManager* getMemoryManager() const { return fMemoryManager; } // ----------------------------------------------------------------------- // Match methods // ----------------------------------------------------------------------- /** * Returns true if XPath has been matched. */ unsigned char isMatched(); virtual int getInitialDepth() const; // ----------------------------------------------------------------------- // XMLDocumentHandler methods // ----------------------------------------------------------------------- virtual void startDocumentFragment(); virtual void startElement(const XMLElementDecl& elemDecl, const unsigned int urlId, const XMLCh* const elemPrefix, const RefVectorOf& attrList, const XMLSize_t attrCount, ValidationContext* validationContext = 0); virtual void endElement(const XMLElementDecl& elemDecl, const XMLCh* const elemContent, ValidationContext* validationContext = 0, DatatypeValidator* actualValidator = 0); enum { XP_MATCHED = 1 // matched any way , XP_MATCHED_A = 3 // matched on the attribute axis , XP_MATCHED_D = 5 // matched on the descendant-or-self axixs , XP_MATCHED_DP = 13 // matched some previous (ancestor) node on the // descendant-or-self-axis, but not this node }; protected: // ----------------------------------------------------------------------- // Match methods // ----------------------------------------------------------------------- /** * This method is called when the XPath handler matches the XPath * expression. Subclasses can override this method to provide default * handling upon a match. */ virtual void matched(const XMLCh* const content, DatatypeValidator* const dv, const bool isNil); bool matches(const XercesNodeTest* nodeTest, const QName* qName); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XPathMatcher(const XPathMatcher&); XPathMatcher& operator=(const XPathMatcher&); // ----------------------------------------------------------------------- // Helper methods // ----------------------------------------------------------------------- void init(XercesXPath* const xpath); void cleanUp(); // ----------------------------------------------------------------------- // Data members // // fMatched // Indicates whether XPath has been matched or not // // fNoMatchDepth // Indicates whether matching is successful for the given xpath // expression. // // fCurrentStep // Stores current step. // // fStepIndexes // Integer stack of step indexes. // // fLocationPaths // fLocationPathSize // XPath location path, and its size. // // fIdentityConstraint // The identity constraint we're the matcher for. Only used for // selectors. // // ----------------------------------------------------------------------- XMLSize_t fLocationPathSize; unsigned char* fMatched; XMLSize_t* fNoMatchDepth; XMLSize_t* fCurrentStep; RefVectorOf >* fStepIndexes; RefVectorOf* fLocationPaths; IdentityConstraint* fIdentityConstraint; MemoryManager* fMemoryManager; }; // --------------------------------------------------------------------------- // XPathMatcher: Helper methods // --------------------------------------------------------------------------- inline void XPathMatcher::cleanUp() { fMemoryManager->deallocate(fMatched);//delete [] fMatched; fMemoryManager->deallocate(fNoMatchDepth);//delete [] fNoMatchDepth; fMemoryManager->deallocate(fCurrentStep);//delete [] fCurrentStep; delete fStepIndexes; } XERCES_CPP_NAMESPACE_END #endif /** * End of file XPathMatcher.hpp */ xerces-c-3.1.1/src/xercesc/validators/schema/identity/XPathMatcherStack.hpp0000644000175000017500000001144511360344373025767 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XPathMatcherStack.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_XPATHMATCHERSTACK_HPP) #define XERCESC_INCLUDE_GUARD_XPATHMATCHERSTACK_HPP // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include XERCES_CPP_NAMESPACE_BEGIN class VALIDATORS_EXPORT XPathMatcherStack : public XMemory { public: // ----------------------------------------------------------------------- // Constructors/Destructor // ----------------------------------------------------------------------- XPathMatcherStack(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); ~XPathMatcherStack(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- XPathMatcher* getMatcherAt(const XMLSize_t index) const; XMLSize_t getMatcherCount() const; XMLSize_t size() const; // ----------------------------------------------------------------------- // Access methods // ----------------------------------------------------------------------- void addMatcher(XPathMatcher* const matcher); // ----------------------------------------------------------------------- // Stack methods // ----------------------------------------------------------------------- void pushContext(); void popContext(); // ----------------------------------------------------------------------- // Reset methods // ----------------------------------------------------------------------- void clear(); private: // ----------------------------------------------------------------------- // Private helper methods // ----------------------------------------------------------------------- void cleanUp(); // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XPathMatcherStack(const XPathMatcherStack& other); XPathMatcherStack& operator= (const XPathMatcherStack& other); // ----------------------------------------------------------------------- // Data members // ----------------------------------------------------------------------- unsigned int fMatchersCount; ValueStackOf* fContextStack; RefVectorOf* fMatchers; }; // --------------------------------------------------------------------------- // XPathMatcherStack: Getter methods // --------------------------------------------------------------------------- inline XMLSize_t XPathMatcherStack::size() const { return fContextStack->size(); } inline XMLSize_t XPathMatcherStack::getMatcherCount() const { return fMatchersCount; } inline XPathMatcher* XPathMatcherStack::getMatcherAt(const XMLSize_t index) const { return fMatchers->elementAt(index); } // --------------------------------------------------------------------------- // XPathMatcherStack: Stack methods // --------------------------------------------------------------------------- inline void XPathMatcherStack::pushContext() { fContextStack->push(fMatchersCount); } inline void XPathMatcherStack::popContext() { fMatchersCount = fContextStack->pop(); } // --------------------------------------------------------------------------- // XPathMatcherStack: Access methods // --------------------------------------------------------------------------- inline void XPathMatcherStack::addMatcher(XPathMatcher* const matcher) { if (fMatchersCount == fMatchers->size()) { fMatchers->addElement(matcher); fMatchersCount++; } else { fMatchers->setElementAt(matcher, fMatchersCount++); } } XERCES_CPP_NAMESPACE_END #endif /** * End of file XPathMatcherStack.hpp */ xerces-c-3.1.1/src/xercesc/validators/schema/identity/IdentityConstraint.cpp0000644000175000017500000001423111037122704026267 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: IdentityConstraint.cpp 676911 2008-07-15 13:27:32Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include //since we need to dynamically created each and every derivatives //during deserialization by XSerializeEngine>>Derivative, we got //to include all hpp #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN typedef JanitorMemFunCall CleanupType; // --------------------------------------------------------------------------- // IdentityConstraint: Constructors and Destructor // --------------------------------------------------------------------------- IdentityConstraint::IdentityConstraint(const XMLCh* const identityConstraintName, const XMLCh* const elemName, MemoryManager* const manager) : fIdentityConstraintName(0) , fElemName(0) , fSelector(0) , fFields(0) , fMemoryManager(manager) , fNamespaceURI(-1) { CleanupType cleanup(this, &IdentityConstraint::cleanUp); try { fIdentityConstraintName = XMLString::replicate(identityConstraintName, fMemoryManager); fElemName = XMLString::replicate(elemName, fMemoryManager); } catch(const OutOfMemoryException&) { cleanup.release(); throw; } cleanup.release(); } IdentityConstraint::~IdentityConstraint() { cleanUp(); } // --------------------------------------------------------------------------- // IdentityConstraint: operators // --------------------------------------------------------------------------- bool IdentityConstraint::operator ==(const IdentityConstraint& other) const { if (getType() != other.getType()) return false; if (!XMLString::equals(fIdentityConstraintName, other.fIdentityConstraintName)) return false; if (*fSelector != *(other.fSelector)) return false; XMLSize_t fieldCount = fFields->size(); if (fieldCount != other.fFields->size()) return false; for (XMLSize_t i = 0; i < fieldCount; i++) { if (*(fFields->elementAt(i)) != *(other.fFields->elementAt(i))) return false; } return true; } bool IdentityConstraint::operator !=(const IdentityConstraint& other) const { return !operator==(other); } // --------------------------------------------------------------------------- // IdentityConstraint: Setter methods // --------------------------------------------------------------------------- void IdentityConstraint::setSelector(IC_Selector* const selector) { if (fSelector) { delete fSelector; } fSelector = selector; } // --------------------------------------------------------------------------- // IdentityConstraint: cleanUp methods // --------------------------------------------------------------------------- void IdentityConstraint::cleanUp() { fMemoryManager->deallocate(fIdentityConstraintName);//delete [] fIdentityConstraintName; fMemoryManager->deallocate(fElemName);//delete [] fElemName; delete fFields; delete fSelector; } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_NOCREATE(IdentityConstraint) void IdentityConstraint::serialize(XSerializeEngine& serEng) { if (serEng.isStoring()) { serEng.writeString(fIdentityConstraintName); serEng.writeString(fElemName); serEng<* fFields; * ***/ XTemplateSerializer::storeObject(fFields, serEng); } else { serEng.readString(fIdentityConstraintName); serEng.readString(fElemName); serEng>>fSelector; serEng>>fNamespaceURI; /*** * * Deserialize RefVectorOf* fFields; * ***/ XTemplateSerializer::loadObject(&fFields, 4, true, serEng); } } void IdentityConstraint::storeIC(XSerializeEngine& serEng , IdentityConstraint* const ic) { if (ic) { serEng<<(int) ic->getType(); serEng<>type; switch((ICType)type) { case ICType_UNIQUE: IC_Unique* ic_unique; serEng>>ic_unique; return ic_unique; case ICType_KEY: IC_Key* ic_key; serEng>>ic_key; return ic_key; case ICType_KEYREF: IC_KeyRef* ic_keyref; serEng>>ic_keyref; return ic_keyref; case ICType_UNKNOWN: return 0; default: //we treat this same as UnKnown return 0; } } XERCES_CPP_NAMESPACE_END /** * End of file IdentityConstraint.cpp */ xerces-c-3.1.1/src/xercesc/validators/schema/identity/FieldValueMap.hpp0000644000175000017500000001473311101363022025113 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: FieldValueMap.hpp 708224 2008-10-27 16:02:26Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_FIELDVALUEMAP_HPP) #define XERCESC_INCLUDE_GUARD_FIELDVALUEMAP_HPP /** * This class maps values associated with fields of an identity constraint * that have successfully matched some string in an instance document. */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Forward Declaration // --------------------------------------------------------------------------- class IC_Field; class DatatypeValidator; class VALIDATORS_EXPORT FieldValueMap : public XMemory { public: // ----------------------------------------------------------------------- // Constructors/Destructor // ----------------------------------------------------------------------- FieldValueMap(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); FieldValueMap(const FieldValueMap& other); ~FieldValueMap(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- DatatypeValidator* getDatatypeValidatorAt(const XMLSize_t index) const; DatatypeValidator* getDatatypeValidatorFor(const IC_Field* const key) const; XMLCh* getValueAt(const XMLSize_t index) const; XMLCh* getValueFor(const IC_Field* const key) const; IC_Field* keyAt(const XMLSize_t index) const; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- void put(IC_Field* const key, DatatypeValidator* const dv, const XMLCh* const value); // ----------------------------------------------------------------------- // Helper methods // ----------------------------------------------------------------------- XMLSize_t size() const; bool indexOf(const IC_Field* const key, XMLSize_t& location) const; void clear(); private: // ----------------------------------------------------------------------- // Private helper methods // ----------------------------------------------------------------------- void cleanUp(); // ----------------------------------------------------------------------- // Unimplemented operators // ----------------------------------------------------------------------- FieldValueMap& operator= (const FieldValueMap& other); // ----------------------------------------------------------------------- // Data // ----------------------------------------------------------------------- ValueVectorOf* fFields; ValueVectorOf* fValidators; RefArrayVectorOf* fValues; MemoryManager* fMemoryManager; }; // --------------------------------------------------------------------------- // FieldValueMap: Getter methods // --------------------------------------------------------------------------- inline DatatypeValidator* FieldValueMap::getDatatypeValidatorAt(const XMLSize_t index) const { if (fValidators) { return fValidators->elementAt(index); } return 0; } inline DatatypeValidator* FieldValueMap::getDatatypeValidatorFor(const IC_Field* const key) const { XMLSize_t location; if (fValidators && indexOf(key, location)) { return fValidators->elementAt(location); } return 0; } inline XMLCh* FieldValueMap::getValueAt(const XMLSize_t index) const { if (fValues) { return fValues->elementAt(index); } return 0; } inline XMLCh* FieldValueMap::getValueFor(const IC_Field* const key) const { XMLSize_t location; if (fValues && indexOf(key, location)) { return fValues->elementAt(location); } return 0; } inline IC_Field* FieldValueMap::keyAt(const XMLSize_t index) const { if (fFields) { return fFields->elementAt(index); } return 0; } // --------------------------------------------------------------------------- // FieldValueMap: Helper methods // --------------------------------------------------------------------------- inline XMLSize_t FieldValueMap::size() const { if (fFields) { return fFields->size(); } return 0; } // --------------------------------------------------------------------------- // FieldValueMap: Setter methods // --------------------------------------------------------------------------- inline void FieldValueMap::put(IC_Field* const key, DatatypeValidator* const dv, const XMLCh* const value) { if (!fFields) { fFields = new (fMemoryManager) ValueVectorOf(4, fMemoryManager); fValidators = new (fMemoryManager) ValueVectorOf(4, fMemoryManager); fValues = new (fMemoryManager) RefArrayVectorOf(4, true, fMemoryManager); } XMLSize_t keyIndex; bool bFound=indexOf(key, keyIndex); if (!bFound) { fFields->addElement(key); fValidators->addElement(dv); fValues->addElement(XMLString::replicate(value, fMemoryManager)); } else { fValidators->setElementAt(dv, keyIndex); fValues->setElementAt(XMLString::replicate(value, fMemoryManager), keyIndex); } } XERCES_CPP_NAMESPACE_END #endif /** * End of file FieldValueMap.hpp */ xerces-c-3.1.1/src/xercesc/validators/schema/identity/XPathSymbols.cpp0000644000175000017500000001141510523643534025037 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XPathSymbols.cpp 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // SchemaSymbols: Static data // --------------------------------------------------------------------------- const XMLCh XPathSymbols::fgSYMBOL_AND[] = { chLatin_a, chLatin_n, chLatin_d, chNull }; const XMLCh XPathSymbols::fgSYMBOL_OR[] = { chLatin_o, chLatin_r, chNull }; const XMLCh XPathSymbols::fgSYMBOL_MOD[] = { chLatin_m, chLatin_o, chLatin_d, chNull }; const XMLCh XPathSymbols::fgSYMBOL_DIV[] = { chLatin_d, chLatin_i, chLatin_v, chNull }; const XMLCh XPathSymbols::fgSYMBOL_COMMENT[] = { chLatin_c, chLatin_o, chLatin_m, chLatin_m, chLatin_e, chLatin_n, chLatin_t, chNull }; const XMLCh XPathSymbols::fgSYMBOL_TEXT[] = { chLatin_t, chLatin_e, chLatin_x, chLatin_t, chNull }; const XMLCh XPathSymbols::fgSYMBOL_PI[] = { chLatin_p, chLatin_r, chLatin_o, chLatin_c, chLatin_e, chLatin_s, chLatin_s, chLatin_i, chLatin_n, chLatin_g, chDash, chLatin_i, chLatin_n, chLatin_s, chLatin_t, chLatin_r, chLatin_u, chLatin_c, chLatin_t, chLatin_i, chLatin_o, chLatin_n, chNull }; const XMLCh XPathSymbols::fgSYMBOL_NODE[] = { chLatin_n, chLatin_o, chLatin_d, chLatin_e, chNull }; const XMLCh XPathSymbols::fgSYMBOL_ANCESTOR[] = { chLatin_a, chLatin_n, chLatin_c, chLatin_e, chLatin_s, chLatin_t, chLatin_o, chLatin_r, chNull }; const XMLCh XPathSymbols::fgSYMBOL_ANCESTOR_OR_SELF[] = { chLatin_a, chLatin_n, chLatin_c, chLatin_e, chLatin_s, chLatin_t, chLatin_o, chLatin_r, chDash, chLatin_o, chLatin_r, chDash, chLatin_s, chLatin_e, chLatin_l, chLatin_f, chNull }; const XMLCh XPathSymbols::fgSYMBOL_ATTRIBUTE[] = { chLatin_a, chLatin_t, chLatin_t, chLatin_r, chLatin_i, chLatin_b, chLatin_u, chLatin_t, chLatin_e, chNull }; const XMLCh XPathSymbols::fgSYMBOL_CHILD[] = { chLatin_c, chLatin_h, chLatin_i, chLatin_l, chLatin_d, chNull }; const XMLCh XPathSymbols::fgSYMBOL_DESCENDANT[] = { chLatin_d, chLatin_e, chLatin_s, chLatin_c, chLatin_e, chLatin_n, chLatin_d, chLatin_a, chLatin_n, chLatin_t, chNull }; const XMLCh XPathSymbols::fgSYMBOL_DESCENDANT_OR_SELF[] = { chLatin_d, chLatin_e, chLatin_s, chLatin_c, chLatin_e, chLatin_n, chLatin_d, chLatin_a, chLatin_n, chLatin_t, chDash, chLatin_o, chLatin_r, chDash, chLatin_s, chLatin_e, chLatin_l, chLatin_f, chNull }; const XMLCh XPathSymbols::fgSYMBOL_FOLLOWING[] = { chLatin_f, chLatin_o, chLatin_l, chLatin_l, chLatin_o, chLatin_w, chLatin_i, chLatin_n, chLatin_g, chNull }; const XMLCh XPathSymbols::fgSYMBOL_FOLLOWING_SIBLING[] = { chLatin_f, chLatin_o, chLatin_l, chLatin_l, chLatin_o, chLatin_w, chLatin_i, chLatin_n, chLatin_g, chDash, chLatin_s, chLatin_i, chLatin_b, chLatin_l, chLatin_i, chLatin_n, chLatin_g, chNull }; const XMLCh XPathSymbols::fgSYMBOL_NAMESPACE[] = { chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chLatin_p, chLatin_a, chLatin_c, chLatin_e, chNull }; const XMLCh XPathSymbols::fgSYMBOL_PARENT[] = { chLatin_p, chLatin_a, chLatin_r, chLatin_e, chLatin_n, chLatin_t, chNull }; const XMLCh XPathSymbols::fgSYMBOL_PRECEDING[] = { chLatin_p, chLatin_r, chLatin_e, chLatin_c, chLatin_e, chLatin_d, chLatin_i, chLatin_n, chLatin_g, chNull }; const XMLCh XPathSymbols::fgSYMBOL_PRECEDING_SIBLING[] = { chLatin_p, chLatin_r, chLatin_e, chLatin_c, chLatin_e, chLatin_d, chLatin_i, chLatin_n, chLatin_g, chDash, chLatin_s, chLatin_i, chLatin_b, chLatin_l, chLatin_i, chLatin_n, chLatin_g, chNull }; const XMLCh XPathSymbols::fgSYMBOL_SELF[] = { chLatin_s, chLatin_e, chLatin_l, chLatin_f, chNull }; XERCES_CPP_NAMESPACE_END /** * End of file XPathSymbols.cpp */ xerces-c-3.1.1/src/xercesc/validators/schema/identity/ValueStore.cpp0000644000175000017500000002570411241261531024530 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: ValueStore.cpp 804209 2009-08-14 13:15:05Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // // --------------------------------------------------------------------------- // ICValueHasher: the hasher for identity constraints values // --------------------------------------------------------------------------- XMLSize_t ICValueHasher::getHashVal(const void* key, XMLSize_t mod) const { const FieldValueMap* valueMap=(const FieldValueMap*)key; XMLSize_t hashVal = 0; XMLSize_t size = valueMap->size(); for (XMLSize_t j=0; jgetDatatypeValidatorAt(j); while(dv && dv->getBaseValidator()) dv = dv->getBaseValidator(); const XMLCh* const val = valueMap->getValueAt(j); const XMLCh* canonVal = (dv && val)?dv->getCanonicalRepresentation(val, fMemoryManager):0; if(canonVal) { hashVal += XMLString::hash(canonVal, mod); fMemoryManager->deallocate((void*)canonVal); } else if(val) hashVal += XMLString::hash(val, mod); } return hashVal % mod; } bool ICValueHasher::equals(const void *const key1, const void *const key2) const { const FieldValueMap* left=(const FieldValueMap*)key1; const FieldValueMap* right=(const FieldValueMap*)key2; XMLSize_t lSize = left->size(); XMLSize_t rSize = right->size(); if (lSize == rSize) { bool matchFound = true; for (XMLSize_t j=0; jgetDatatypeValidatorAt(j), left->getValueAt(j), right->getDatatypeValidatorAt(j), right->getValueAt(j))) { matchFound = false; break; } } if (matchFound) { // found it return true; } } return false; } bool ICValueHasher::isDuplicateOf(DatatypeValidator* const dv1, const XMLCh* const val1, DatatypeValidator* const dv2, const XMLCh* const val2) const { // if either validator's null, fall back on string comparison if(!dv1 || !dv2) { return (XMLString::equals(val1, val2)); } bool val1IsEmpty = (val1==0 || *val1==0); bool val2IsEmpty = (val2==0 || *val2==0); if (val1IsEmpty && val2IsEmpty) { if (dv1 == dv2) { return true; } return false; } if (val1IsEmpty || val2IsEmpty) { return false; } // find the common ancestor, if there is one DatatypeValidator* tempVal1 = dv1; while(tempVal1) { DatatypeValidator* tempVal2 = dv2; for(; tempVal2 != NULL && tempVal2 != tempVal1; tempVal2 = tempVal2->getBaseValidator()) ; if (tempVal2) return ((tempVal2->compare(val1, val2, fMemoryManager)) == 0); tempVal1=tempVal1->getBaseValidator(); } // if we're here it means the types weren't related. They are different: return false; } // --------------------------------------------------------------------------- // ValueStore: Constructors and Destructor // --------------------------------------------------------------------------- ValueStore::ValueStore(IdentityConstraint* const ic, XMLScanner* const scanner, MemoryManager* const manager) : fDoReportError(false) , fValuesCount(0) , fIdentityConstraint(ic) , fValues(manager) , fValueTuples(0) , fScanner(scanner) , fMemoryManager(manager) { fDoReportError = (scanner && (scanner->getValidationScheme() == XMLScanner::Val_Always)); } ValueStore::~ValueStore() { delete fValueTuples; } // --------------------------------------------------------------------------- // ValueStore: Helper methods // --------------------------------------------------------------------------- void ValueStore::addValue(FieldActivator* const fieldActivator, IC_Field* const field, DatatypeValidator* const dv, const XMLCh* const value) { if (!fieldActivator->getMayMatch(field) && fDoReportError) { fScanner->getValidator()->emitError(XMLValid::IC_FieldMultipleMatch); } // do we even know this field? XMLSize_t index; bool bFound = fValues.indexOf(field, index); if (!bFound) { if (fDoReportError) { fScanner->getValidator()->emitError(XMLValid::IC_UnknownField); } return; } // store value if (!fValues.getDatatypeValidatorAt(index) && !fValues.getValueAt(index)) { fValuesCount++; } fValues.put(field, dv, value); if (fValuesCount == fValues.size()) { // is this value as a group duplicated? if (contains(&fValues)) { duplicateValue(); } // store values if (!fValueTuples) { fValueTuples = new (fMemoryManager) RefHashTableOf(107, true, ICValueHasher(fMemoryManager), fMemoryManager); } FieldValueMap* pICItem = new (fMemoryManager) FieldValueMap(fValues); fValueTuples->put(pICItem, pICItem); } } void ValueStore::append(const ValueStore* const other) { if (!other->fValueTuples) { return; } RefHashTableOfEnumerator iter(other->fValueTuples, false, fMemoryManager); while(iter.hasMoreElements()) { FieldValueMap& valueMap = iter.nextElement(); if (!contains(&valueMap)) { if (!fValueTuples) { fValueTuples = new (fMemoryManager) RefHashTableOf(107, true, ICValueHasher(fMemoryManager), fMemoryManager); } FieldValueMap* pICItem = new (fMemoryManager) FieldValueMap(valueMap); fValueTuples->put(pICItem, pICItem); } } } void ValueStore::startValueScope() { fValuesCount = 0; XMLSize_t count = fIdentityConstraint->getFieldCount(); for (XMLSize_t i = 0; i < count; i++) { fValues.put(fIdentityConstraint->getFieldAt(i), 0, 0); } } void ValueStore::endValueScope() { if (fValuesCount == 0) { if (fIdentityConstraint->getType() == IdentityConstraint::ICType_KEY && fDoReportError) { fScanner->getValidator()->emitError(XMLValid::IC_AbsentKeyValue, fIdentityConstraint->getElementName()); } return; } // do we have enough values? if ((fValuesCount != fIdentityConstraint->getFieldCount()) && fDoReportError) { if(fIdentityConstraint->getType()==IdentityConstraint::ICType_KEY) { fScanner->getValidator()->emitError(XMLValid::IC_KeyNotEnoughValues, fIdentityConstraint->getElementName(), fIdentityConstraint->getIdentityConstraintName()); } } } bool ValueStore::contains(const FieldValueMap* const other) { if (fValueTuples) return fValueTuples->get(other)!=0; return false; } void ValueStore::clear() { fValuesCount=0; fValues.clear(); if(fValueTuples) fValueTuples->removeAll(); } // --------------------------------------------------------------------------- // ValueStore: Document handling methods // --------------------------------------------------------------------------- void ValueStore::endDocumentFragment(ValueStoreCache* const valueStoreCache) { if (fIdentityConstraint->getType() == IdentityConstraint::ICType_KEYREF) { // verify references // get the key store corresponding (if it exists): ValueStore* keyValueStore = valueStoreCache->getGlobalValueStoreFor(((IC_KeyRef*) fIdentityConstraint)->getKey()); if (!keyValueStore) { if (fDoReportError) { fScanner->getValidator()->emitError(XMLValid::IC_KeyRefOutOfScope, fIdentityConstraint->getIdentityConstraintName()); } return; } if(fValueTuples) { RefHashTableOfEnumerator iter(fValueTuples, false, fMemoryManager); while(iter.hasMoreElements()) { FieldValueMap& valueMap = iter.nextElement(); if (!keyValueStore->contains(&valueMap) && fDoReportError) { fScanner->getValidator()->emitError(XMLValid::IC_KeyNotFound, fIdentityConstraint->getElementName()); } } } } } // --------------------------------------------------------------------------- // ValueStore: Error reporting methods // --------------------------------------------------------------------------- void ValueStore::reportNilError(IdentityConstraint* const ic) { if (fDoReportError && ic->getType() == IdentityConstraint::ICType_KEY) { fScanner->getValidator()->emitError(XMLValid::IC_KeyMatchesNillable, ic->getElementName()); } } void ValueStore::duplicateValue() { if (fDoReportError) { switch (fIdentityConstraint->getType()) { case IdentityConstraint::ICType_UNIQUE: { fScanner->getValidator()->emitError(XMLValid::IC_DuplicateUnique, fIdentityConstraint->getElementName()); break; } case IdentityConstraint::ICType_KEY: { fScanner->getValidator()->emitError(XMLValid::IC_DuplicateKey, fIdentityConstraint->getElementName()); break; } } } } XERCES_CPP_NAMESPACE_END /** * End of file ValueStore.cpp */ xerces-c-3.1.1/src/xercesc/validators/schema/identity/IC_Key.cpp0000644000175000017500000000357010523643534023550 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: IC_Key.cpp 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // IC_Key: Constructors and Destructor // --------------------------------------------------------------------------- IC_Key::IC_Key(const XMLCh* const identityConstraintName, const XMLCh* const elemName, MemoryManager* const manager) :IdentityConstraint(identityConstraintName, elemName, manager) { } IC_Key::~IC_Key() { } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(IC_Key) void IC_Key::serialize(XSerializeEngine& serEng) { IdentityConstraint::serialize(serEng); //no data } IC_Key::IC_Key(MemoryManager* const manager) :IdentityConstraint(0, 0, manager) { } XERCES_CPP_NAMESPACE_END /** * End of file IC_Key.cpp */ xerces-c-3.1.1/src/xercesc/validators/schema/identity/IC_Selector.hpp0000644000175000017500000001426211360344373024604 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: IC_Selector.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_IC_SELECTOR_HPP) #define XERCESC_INCLUDE_GUARD_IC_SELECTOR_HPP // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Forward Declaration // --------------------------------------------------------------------------- class FieldActivator; class VALIDATORS_EXPORT IC_Selector : public XSerializable, public XMemory { public: // ----------------------------------------------------------------------- // Constructors/Destructor // ----------------------------------------------------------------------- IC_Selector(XercesXPath* const xpath, IdentityConstraint* const identityConstraint); ~IC_Selector(); // ----------------------------------------------------------------------- // operators // ----------------------------------------------------------------------- bool operator== (const IC_Selector& other) const; bool operator!= (const IC_Selector& other) const; // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- XercesXPath* getXPath() const { return fXPath; } IdentityConstraint* getIdentityConstraint() const { return fIdentityConstraint; } // ----------------------------------------------------------------------- // Factory methods // ----------------------------------------------------------------------- XPathMatcher* createMatcher(FieldActivator* const fieldActivator, const int initialDepth, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(IC_Selector) IC_Selector(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- IC_Selector(const IC_Selector& other); IC_Selector& operator= (const IC_Selector& other); // ----------------------------------------------------------------------- // Data members // ----------------------------------------------------------------------- XercesXPath* fXPath; IdentityConstraint* fIdentityConstraint; }; class VALIDATORS_EXPORT SelectorMatcher : public XPathMatcher { public: // ----------------------------------------------------------------------- // Constructors/Destructor // ----------------------------------------------------------------------- ~SelectorMatcher() {} int getInitialDepth() const { return fInitialDepth; } // ----------------------------------------------------------------------- // XMLDocumentHandler methods // ----------------------------------------------------------------------- virtual void startDocumentFragment(); virtual void startElement(const XMLElementDecl& elemDecl, const unsigned int urlId, const XMLCh* const elemPrefix, const RefVectorOf& attrList, const XMLSize_t attrCount, ValidationContext* validationContext = 0); virtual void endElement(const XMLElementDecl& elemDecl, const XMLCh* const elemContent, ValidationContext* validationContext = 0, DatatypeValidator* actualValidator = 0); private: // ----------------------------------------------------------------------- // Constructors/Destructor // ----------------------------------------------------------------------- SelectorMatcher(XercesXPath* const anXPath, IC_Selector* const selector, FieldActivator* const fieldActivator, const int initialDepth, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- SelectorMatcher(const SelectorMatcher& other); SelectorMatcher& operator= (const SelectorMatcher& other); // ----------------------------------------------------------------------- // Friends // ----------------------------------------------------------------------- friend class IC_Selector; // ----------------------------------------------------------------------- // Data members // ----------------------------------------------------------------------- int fInitialDepth; int fElementDepth; int fMatchedDepth; IC_Selector* fSelector; FieldActivator* fFieldActivator; }; XERCES_CPP_NAMESPACE_END #endif /** * End of file IC_Selector.hpp */ xerces-c-3.1.1/src/xercesc/validators/schema/identity/IC_KeyRef.hpp0000644000175000017500000000606611360344373024214 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: IC_KeyRef.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_IC_KEYREF_HPP) #define XERCESC_INCLUDE_GUARD_IC_KEYREF_HPP // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include XERCES_CPP_NAMESPACE_BEGIN class VALIDATORS_EXPORT IC_KeyRef: public IdentityConstraint { public: // ----------------------------------------------------------------------- // Constructors/Destructor // ----------------------------------------------------------------------- IC_KeyRef(const XMLCh* const identityConstraintName, const XMLCh* const elemName, IdentityConstraint* const icKey, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); ~IC_KeyRef(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- short getType() const; IdentityConstraint* getKey() const; /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(IC_KeyRef) IC_KeyRef(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- IC_KeyRef(const IC_KeyRef& other); IC_KeyRef& operator= (const IC_KeyRef& other); // ----------------------------------------------------------------------- // Data members // ----------------------------------------------------------------------- IdentityConstraint* fKey; }; // --------------------------------------------------------------------------- // IC_KeyRef: Getter methods // --------------------------------------------------------------------------- inline short IC_KeyRef::getType() const { return IdentityConstraint::ICType_KEYREF; } inline IdentityConstraint* IC_KeyRef::getKey() const { return fKey; } XERCES_CPP_NAMESPACE_END #endif /** * End of file IC_KeyRef.hpp */ xerces-c-3.1.1/src/xercesc/validators/schema/identity/ValueStoreCache.cpp0000644000175000017500000001262511101363022025443 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: ValueStoreCache.cpp 708224 2008-10-27 16:02:26Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN typedef JanitorMemFunCall CleanupType; // --------------------------------------------------------------------------- // ValueStoreCache: Constructors and Destructor // --------------------------------------------------------------------------- ValueStoreCache::ValueStoreCache(MemoryManager* const manager) : fValueStores(0) , fGlobalICMap(0) , fIC2ValueStoreMap(0) , fGlobalMapStack(0) , fScanner(0) , fMemoryManager(manager) { CleanupType cleanup(this, &ValueStoreCache::cleanUp); try { init(); } catch(const OutOfMemoryException&) { cleanup.release(); throw; } cleanup.release(); } ValueStoreCache::~ValueStoreCache() { cleanUp(); } // --------------------------------------------------------------------------- // ValueStoreCache: Document handling methods // --------------------------------------------------------------------------- void ValueStoreCache::startDocument() { fIC2ValueStoreMap->removeAll(); fGlobalICMap->removeAll(); fValueStores->removeAllElements(); fGlobalMapStack->removeAllElements(); } void ValueStoreCache::startElement() { fGlobalMapStack->push(fGlobalICMap); fGlobalICMap = new (fMemoryManager) RefHashTableOf ( 13 , false , fMemoryManager ); } void ValueStoreCache::endElement() { if (fGlobalMapStack->empty()) { return; // must be an invalid doc! } RefHashTableOf* oldMap = fGlobalMapStack->pop(); RefHashTableOfEnumerator mapEnum(oldMap, false, fMemoryManager); // Janitor > janMap(oldMap); while (mapEnum.hasMoreElements()) { ValueStore& oldVal = mapEnum.nextElement(); IdentityConstraint* ic = oldVal.getIdentityConstraint(); ValueStore* currVal = fGlobalICMap->get(ic); if (!currVal) { fGlobalICMap->put(ic, &oldVal); } else { currVal->append(&oldVal); } } delete oldMap; } // --------------------------------------------------------------------------- // ValueStoreCache: Helper methods // --------------------------------------------------------------------------- void ValueStoreCache::cleanUp() { delete fIC2ValueStoreMap; delete fGlobalICMap; delete fGlobalMapStack; delete fValueStores; } void ValueStoreCache::init() { fValueStores = new (fMemoryManager) RefVectorOf(8, false, fMemoryManager); fGlobalICMap = new (fMemoryManager) RefHashTableOf ( 13 , false , fMemoryManager ); fIC2ValueStoreMap = new (fMemoryManager) RefHash2KeysTableOf ( 13 , true , fMemoryManager ); fGlobalMapStack = new (fMemoryManager) RefStackOf >(8, true, fMemoryManager); } void ValueStoreCache::initValueStoresFor(SchemaElementDecl* const elemDecl, const int initialDepth) { // initialize value stores for unique fields XMLSize_t icCount = elemDecl->getIdentityConstraintCount(); for (XMLSize_t i=0; igetIdentityConstraintAt(i); ValueStore* valueStore=fIC2ValueStoreMap->get(ic, initialDepth); if(valueStore==0) { valueStore = new (fMemoryManager) ValueStore(ic, fScanner, fMemoryManager); fIC2ValueStoreMap->put(ic, initialDepth, valueStore); } else valueStore->clear(); fValueStores->addElement(valueStore); } } void ValueStoreCache::transplant(IdentityConstraint* const ic, const int initialDepth) { if (ic->getType() == IdentityConstraint::ICType_KEYREF) { return; } ValueStore* newVals = fIC2ValueStoreMap->get(ic, initialDepth); ValueStore* currVals = fGlobalICMap->get(ic); if (currVals) { currVals->append(newVals); } else { fGlobalICMap->put(ic, newVals); } } XERCES_CPP_NAMESPACE_END /** * End of file ValueStoreCache.cpp */ xerces-c-3.1.1/src/xercesc/validators/schema/identity/IdentityConstraintHandler.hpp0000644000175000017500000001376411360344373027613 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: IdentityConstraintHandler.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_IDENTITYCONSTRAINT_HANDLER_HPP) #define XERCESC_INCLUDE_GUARD_IDENTITYCONSTRAINT_HANDLER_HPP // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Forward Declarations // --------------------------------------------------------------------------- class XMLScanner; class FieldActivator; class MemoryManager; class XMLElementDecl; class VALIDATORS_EXPORT IdentityConstraintHandler: public XMemory { public: // ----------------------------------------------------------------------- // Constructors/Destructor // ----------------------------------------------------------------------- virtual ~IdentityConstraintHandler(); IdentityConstraintHandler ( XMLScanner* const scanner , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- inline XMLSize_t getMatcherCount() const; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- // ----------------------------------------------------------------------- // Access methods // ----------------------------------------------------------------------- inline void endDocument(); void deactivateContext ( SchemaElementDecl* const elem , const XMLCh* const content , ValidationContext* validationContext = 0 , DatatypeValidator* actualValidator = 0); void activateIdentityConstraint ( SchemaElementDecl* const elem , int elemDepth , const unsigned int uriId , const XMLCh* const elemPrefix , const RefVectorOf& attrList , const XMLSize_t attrCount , ValidationContext* validationContext = 0 ); void reset(); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- IdentityConstraintHandler(const IdentityConstraintHandler& other); IdentityConstraintHandler& operator= (const IdentityConstraintHandler& other); // ----------------------------------------------------------------------- // CleanUp methods // ----------------------------------------------------------------------- void cleanUp(); // ----------------------------------------------------------------------- // Helper // ----------------------------------------------------------------------- void activateSelectorFor( IdentityConstraint* const ic , const int initialDepth ) ; // ----------------------------------------------------------------------- // Data members // // fMatcherStack // Stack of active XPath matchers for identity constraints. All // active XPath matchers are notified of startElement, characters // and endElement callbacks in order to perform their matches. // // fValueStoreCache // Cache of value stores for identity constraint fields. // // fFieldActivator // Activates fields within a certain scope when a selector matches // its xpath. // // ----------------------------------------------------------------------- XMLScanner* fScanner; MemoryManager* fMemoryManager; XPathMatcherStack* fMatcherStack; ValueStoreCache* fValueStoreCache; FieldActivator* fFieldActivator; }; // --------------------------------------------------------------------------- // IdentityConstraintHandler: // --------------------------------------------------------------------------- inline void IdentityConstraintHandler::endDocument() { fValueStoreCache->endDocument(); } inline XMLSize_t IdentityConstraintHandler::getMatcherCount() const { return fMatcherStack->getMatcherCount(); } XERCES_CPP_NAMESPACE_END #endif /** * End of file IdentityConstraintHandler.hpp */ xerces-c-3.1.1/src/xercesc/validators/schema/identity/IC_Unique.hpp0000644000175000017500000000536111360344373024272 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: IC_Unique.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_IC_UNIQUE_HPP) #define XERCESC_INCLUDE_GUARD_IC_UNIQUE_HPP /** * Schema unique identity constraint */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include XERCES_CPP_NAMESPACE_BEGIN class VALIDATORS_EXPORT IC_Unique: public IdentityConstraint { public: // ----------------------------------------------------------------------- // Constructors/Destructor // ----------------------------------------------------------------------- IC_Unique(const XMLCh* const identityConstraintName, const XMLCh* const elemName, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); ~IC_Unique(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- short getType() const; /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(IC_Unique) IC_Unique(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- IC_Unique(const IC_Unique& other); IC_Unique& operator= (const IC_Unique& other); }; // --------------------------------------------------------------------------- // IC_Unique: Getter methods // --------------------------------------------------------------------------- inline short IC_Unique::getType() const { return IdentityConstraint::ICType_UNIQUE; } XERCES_CPP_NAMESPACE_END #endif /** * End of file IC_Unique.hpp */ xerces-c-3.1.1/src/xercesc/validators/schema/identity/FieldValueMap.cpp0000644000175000017500000000736311101363022025107 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: FieldValueMap.cpp 708224 2008-10-27 16:02:26Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include XERCES_CPP_NAMESPACE_BEGIN typedef JanitorMemFunCall CleanupType; // --------------------------------------------------------------------------- // FieldValueMap: Constructors and Destructor // --------------------------------------------------------------------------- FieldValueMap::FieldValueMap(MemoryManager* const manager) : fFields(0) , fValidators(0) , fValues(0) , fMemoryManager(manager) { } FieldValueMap::FieldValueMap(const FieldValueMap& other) : XMemory(other) , fFields(0) , fValidators(0) , fValues(0) , fMemoryManager(other.fMemoryManager) { if (other.fFields) { CleanupType cleanup(this, &FieldValueMap::cleanUp); try { XMLSize_t valuesSize = other.fValues->size(); fFields = new (fMemoryManager) ValueVectorOf(*(other.fFields)); fValidators = new (fMemoryManager) ValueVectorOf(*(other.fValidators)); fValues = new (fMemoryManager) RefArrayVectorOf(other.fFields->curCapacity(), true, fMemoryManager); for (XMLSize_t i=0; iaddElement(XMLString::replicate(other.fValues->elementAt(i), fMemoryManager)); } } catch(const OutOfMemoryException&) { cleanup.release(); throw; } cleanup.release(); } } FieldValueMap::~FieldValueMap() { cleanUp(); } // --------------------------------------------------------------------------- // FieldValueMap: Private helper methods. // --------------------------------------------------------------------------- void FieldValueMap::cleanUp() { delete fFields; delete fValidators; delete fValues; } // --------------------------------------------------------------------------- // FieldValueMap: Helper methods // --------------------------------------------------------------------------- bool FieldValueMap::indexOf(const IC_Field* const key, XMLSize_t& location) const { if (fFields) { XMLSize_t fieldSize = fFields->size(); for (XMLSize_t i=0; i < fieldSize; i++) { if (fFields->elementAt(i) == key) { location=i; return true; } } } return false; } void FieldValueMap::clear() { if(fFields) fFields->removeAllElements(); if(fValidators) fValidators->removeAllElements(); if(fValues) fValues->removeAllElements(); } XERCES_CPP_NAMESPACE_END /** * End of file FieldValueMap.cpp */ xerces-c-3.1.1/src/xercesc/validators/schema/identity/IC_Selector.cpp0000644000175000017500000001405011241006565024566 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: IC_Selector.cpp 803869 2009-08-13 12:56:21Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // SelectorMatcher: Constructors and Destructor // --------------------------------------------------------------------------- SelectorMatcher::SelectorMatcher(XercesXPath* const xpath, IC_Selector* const selector, FieldActivator* const fieldActivator, const int initialDepth, MemoryManager* const manager) : XPathMatcher(xpath, selector->getIdentityConstraint(), manager) , fInitialDepth(initialDepth) , fElementDepth(0) , fMatchedDepth(-1) , fSelector(selector) , fFieldActivator(fieldActivator) { } // --------------------------------------------------------------------------- // FieldMatcher: XMLDocumentHandler methods // --------------------------------------------------------------------------- void SelectorMatcher::startDocumentFragment() { XPathMatcher::startDocumentFragment(); fElementDepth = 0; fMatchedDepth = -1; } void SelectorMatcher::startElement(const XMLElementDecl& elemDecl, const unsigned int urlId, const XMLCh* const elemPrefix, const RefVectorOf& attrList, const XMLSize_t attrCount, ValidationContext* validationContext /*=0*/) { XPathMatcher::startElement(elemDecl, urlId, elemPrefix, attrList, attrCount, validationContext); fElementDepth++; // activate the fields, if selector is matched unsigned char matched = isMatched(); if ((fMatchedDepth == -1 && ((matched & XP_MATCHED) == XP_MATCHED)) || ((matched & XP_MATCHED_D) == XP_MATCHED_D)) { IdentityConstraint* ic = fSelector->getIdentityConstraint(); XMLSize_t count = ic->getFieldCount(); fMatchedDepth = fElementDepth; fFieldActivator->startValueScopeFor(ic, fInitialDepth); for (XMLSize_t i = 0; i < count; i++) { XPathMatcher* matcher = fFieldActivator->activateField(ic->getFieldAt(i), fInitialDepth); matcher->startElement(elemDecl, urlId, elemPrefix, attrList, attrCount, validationContext); } } } void SelectorMatcher::endElement(const XMLElementDecl& elemDecl, const XMLCh* const elemContent, ValidationContext* validationContext /*=0*/, DatatypeValidator* actualValidator /*=0*/) { XPathMatcher::endElement(elemDecl, elemContent, validationContext, actualValidator); if (fElementDepth-- == fMatchedDepth) { fMatchedDepth = -1; fFieldActivator->endValueScopeFor(fSelector->getIdentityConstraint(), fInitialDepth); } } // --------------------------------------------------------------------------- // IC_Selector: Constructors and Destructor // --------------------------------------------------------------------------- IC_Selector::IC_Selector(XercesXPath* const xpath, IdentityConstraint* const identityConstraint) : fXPath(xpath) , fIdentityConstraint(identityConstraint) { } IC_Selector::~IC_Selector() { delete fXPath; } // --------------------------------------------------------------------------- // IC_Selector: operators // --------------------------------------------------------------------------- bool IC_Selector::operator ==(const IC_Selector& other) const { return (*fXPath == *(other.fXPath)); } bool IC_Selector::operator !=(const IC_Selector& other) const { return !operator==(other); } // --------------------------------------------------------------------------- // IC_Selector: Factory methods // --------------------------------------------------------------------------- XPathMatcher* IC_Selector::createMatcher(FieldActivator* const fieldActivator, const int initialDepth, MemoryManager* const manager) { return new (manager) SelectorMatcher(fXPath, this, fieldActivator, initialDepth, manager); } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(IC_Selector) void IC_Selector::serialize(XSerializeEngine& serEng) { if (serEng.isStoring()) { serEng<>fXPath; fIdentityConstraint = IdentityConstraint::loadIC(serEng); } } IC_Selector::IC_Selector(MemoryManager* const ) :fXPath(0) ,fIdentityConstraint(0) { } XERCES_CPP_NAMESPACE_END /** * End of file IC_Selector.cpp */ xerces-c-3.1.1/src/xercesc/validators/schema/identity/XPathSymbols.hpp0000644000175000017500000000502110606722647025045 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XPathSymbols.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_XPATHSYMBOLS_HPP) #define XERCESC_INCLUDE_GUARD_XPATHSYMBOLS_HPP #include XERCES_CPP_NAMESPACE_BEGIN /* * Collection of symbols used to parse a Schema Grammar */ class VALIDATORS_EXPORT XPathSymbols { public : // ----------------------------------------------------------------------- // Constant data // ----------------------------------------------------------------------- static const XMLCh fgSYMBOL_AND[]; static const XMLCh fgSYMBOL_OR[]; static const XMLCh fgSYMBOL_MOD[]; static const XMLCh fgSYMBOL_DIV[]; static const XMLCh fgSYMBOL_COMMENT[]; static const XMLCh fgSYMBOL_TEXT[]; static const XMLCh fgSYMBOL_PI[]; static const XMLCh fgSYMBOL_NODE[]; static const XMLCh fgSYMBOL_ANCESTOR[]; static const XMLCh fgSYMBOL_ANCESTOR_OR_SELF[]; static const XMLCh fgSYMBOL_ATTRIBUTE[]; static const XMLCh fgSYMBOL_CHILD[]; static const XMLCh fgSYMBOL_DESCENDANT[]; static const XMLCh fgSYMBOL_DESCENDANT_OR_SELF[]; static const XMLCh fgSYMBOL_FOLLOWING[]; static const XMLCh fgSYMBOL_FOLLOWING_SIBLING[]; static const XMLCh fgSYMBOL_NAMESPACE[]; static const XMLCh fgSYMBOL_PARENT[]; static const XMLCh fgSYMBOL_PRECEDING[]; static const XMLCh fgSYMBOL_PRECEDING_SIBLING[]; static const XMLCh fgSYMBOL_SELF[]; private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XPathSymbols(); }; XERCES_CPP_NAMESPACE_END #endif /** * End of file XPathSymbols.hpp */ xerces-c-3.1.1/src/xercesc/validators/schema/identity/ValueStoreCache.hpp0000644000175000017500000001573611360344373025475 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: ValueStoreCache.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_VALUESTORECACHE_HPP) #define XERCESC_INCLUDE_GUARD_VALUESTORECACHE_HPP /** * This class is used to store the values for identity constraints. * * Sketch of algorithm: * - When a constraint is first encountered, its values are stored in the * (local) fIC2ValueStoreMap; * - Once it is validated (i.e., when it goes out of scope), its values are * merged into the fGlobalICMap; * - As we encounter keyref's, we look at the global table to validate them. * - Validation always occurs against the fGlobalIDConstraintMap (which * comprises all the "eligible" id constraints). When an endelement is * found, this Hashtable is merged with the one below in the stack. When a * start tag is encountered, we create a new fGlobalICMap. * i.e., the top of the fGlobalIDMapStack always contains the preceding * siblings' eligible id constraints; the fGlobalICMap contains * descendants+self. Keyrefs can only match descendants+self. */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Forward Declaration // --------------------------------------------------------------------------- class ValueStore; class SchemaElementDecl; class XMLScanner; class VALIDATORS_EXPORT ValueStoreCache : public XMemory { public: // ----------------------------------------------------------------------- // Constructors/Destructor // ----------------------------------------------------------------------- ValueStoreCache(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); ~ValueStoreCache(); // ----------------------------------------------------------------------- // Setter Methods // ----------------------------------------------------------------------- void setScanner(XMLScanner* const scanner); // ----------------------------------------------------------------------- // Document Handling methods // ----------------------------------------------------------------------- void startDocument(); void startElement(); void endElement(); void endDocument(); // ----------------------------------------------------------------------- // Initialization methods // ----------------------------------------------------------------------- void initValueStoresFor(SchemaElementDecl* const elemDecl, const int initialDepth); // ----------------------------------------------------------------------- // Access methods // ----------------------------------------------------------------------- ValueStore* getValueStoreFor(const IC_Field* const field, const int initialDepth); ValueStore* getValueStoreFor(const IdentityConstraint* const ic, const int initialDepth); ValueStore* getGlobalValueStoreFor(const IdentityConstraint* const ic); // ----------------------------------------------------------------------- // Helper methods // ----------------------------------------------------------------------- /** This method takes the contents of the (local) ValueStore associated * with ic and moves them into the global hashtable, if ic is a * or a . If it's a , then we leave it for later. */ void transplant(IdentityConstraint* const ic, const int initialDepth); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- ValueStoreCache(const ValueStoreCache& other); ValueStoreCache& operator= (const ValueStoreCache& other); // ----------------------------------------------------------------------- // Helper methods // ----------------------------------------------------------------------- void init(); void cleanUp(); // ----------------------------------------------------------------------- // Data // ----------------------------------------------------------------------- RefVectorOf* fValueStores; RefHashTableOf* fGlobalICMap; RefHash2KeysTableOf* fIC2ValueStoreMap; RefStackOf >* fGlobalMapStack; XMLScanner* fScanner; MemoryManager* fMemoryManager; }; // --------------------------------------------------------------------------- // ValueStoreCache: Access methods // --------------------------------------------------------------------------- inline void ValueStoreCache::setScanner(XMLScanner* const scanner) { fScanner = scanner; } // --------------------------------------------------------------------------- // ValueStoreCache: Access methods // --------------------------------------------------------------------------- inline ValueStore* ValueStoreCache::getValueStoreFor(const IC_Field* const field, const int initialDepth) { return fIC2ValueStoreMap->get(field->getIdentityConstraint(), initialDepth); } inline ValueStore* ValueStoreCache::getValueStoreFor(const IdentityConstraint* const ic, const int initialDepth) { return fIC2ValueStoreMap->get(ic, initialDepth); } inline ValueStore* ValueStoreCache::getGlobalValueStoreFor(const IdentityConstraint* const ic) { return fGlobalICMap->get(ic); } // --------------------------------------------------------------------------- // ValueStoreCache: Document handling methods // --------------------------------------------------------------------------- inline void ValueStoreCache::endDocument() { } XERCES_CPP_NAMESPACE_END #endif /** * End of file ValueStoreCache.hpp */ xerces-c-3.1.1/src/xercesc/validators/schema/identity/XercesXPath.cpp0000644000175000017500000014763411330245226024646 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XercesXPath.cpp 903997 2010-01-28 08:28:06Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Static data // --------------------------------------------------------------------------- const XMLByte XPathScanner::fASCIICharMap[128] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 4, 1, 5, 1, 1, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 1, 16, 17, 18, 1, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 1, 22, 1, 23, 1, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 1, 24, 1, 1, 1 }; // --------------------------------------------------------------------------- // XercesNodeTest: Constructors and Destructor // --------------------------------------------------------------------------- XercesNodeTest::XercesNodeTest(const short aType, MemoryManager* const manager) : fType(aType) , fName(new (manager) QName(manager)) { } XercesNodeTest::XercesNodeTest(const QName* const qName) : fType(NodeType_QNAME) , fName(new (qName->getMemoryManager()) QName(*qName)) { } XercesNodeTest::XercesNodeTest(const XMLCh* const prefix, const unsigned int uriId, MemoryManager* const manager) : fType(NodeType_NAMESPACE) , fName(new (manager) QName(manager)) { fName->setURI(uriId); fName->setPrefix(prefix); } XercesNodeTest::XercesNodeTest(const XercesNodeTest& other) : XSerializable(other) , XMemory(other) , fType(other.fType) , fName(new ((other.fName)->getMemoryManager()) QName(*other.fName)) { } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(XercesNodeTest) void XercesNodeTest::serialize(XSerializeEngine& serEng) { if (serEng.isStoring()) { serEng<>fType; serEng>>fName; } } XercesNodeTest::XercesNodeTest(MemoryManager* const) :fType(NodeType_UNKNOWN) ,fName(0) { } // --------------------------------------------------------------------------- // XercesNodeTest: Operators // --------------------------------------------------------------------------- XercesNodeTest& XercesNodeTest::operator=(const XercesNodeTest& other) { if (this == &other) return *this; fType = other.fType; fName->setValues(*(other.fName)); return *this; } bool XercesNodeTest::operator ==(const XercesNodeTest& other) const { if (this == &other) return true; if (fType != other.fType) return false; return (*fName == *(other.fName)); } bool XercesNodeTest::operator !=(const XercesNodeTest& other) const { return !operator==(other); } // --------------------------------------------------------------------------- // XercesStep: Constructors and Destructor // --------------------------------------------------------------------------- XercesStep::XercesStep(const unsigned short axisType, XercesNodeTest* const nodeTest) : fAxisType(axisType) , fNodeTest(nodeTest) { } XercesStep::XercesStep(const XercesStep& other) : XSerializable(other) , XMemory(other) , fAxisType(other.fAxisType) , fNodeTest(0) { fNodeTest = new (other.fNodeTest->getName()->getMemoryManager()) XercesNodeTest(*(other.fNodeTest)); } // --------------------------------------------------------------------------- // XercesStep: Operators // --------------------------------------------------------------------------- XercesStep& XercesStep::operator=(const XercesStep& other) { if (this == &other) return *this; fAxisType = other.fAxisType; *fNodeTest = *(other.fNodeTest); return *this; } bool XercesStep::operator==(const XercesStep& other) const { if (this == &other) return true; if (fAxisType != other.fAxisType) return false; if (fAxisType == XercesStep::AxisType_CHILD || fAxisType == XercesStep::AxisType_ATTRIBUTE) { return (*fNodeTest == *(other.fNodeTest)); } return true; } bool XercesStep::operator!=(const XercesStep& other) const { return !operator==(other); } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(XercesStep) void XercesStep::serialize(XSerializeEngine& serEng) { if (serEng.isStoring()) { serEng<<(int)fAxisType; serEng<>i; fAxisType = (unsigned short) i; serEng>>fNodeTest; } } XercesStep::XercesStep(MemoryManager* const) :fAxisType(AxisType_UNKNOWN) ,fNodeTest(0) { } // --------------------------------------------------------------------------- // XercesLocationPath: Constructors and Destructor // --------------------------------------------------------------------------- XercesLocationPath::XercesLocationPath(RefVectorOf* const steps) : fSteps(steps) { } // --------------------------------------------------------------------------- // XercesLocationPath: Operators // --------------------------------------------------------------------------- bool XercesLocationPath::operator==(const XercesLocationPath& other) const { XMLSize_t stepsSize = fSteps->size(); if (stepsSize != other.fSteps->size()) return false; for (XMLSize_t i=0; i < stepsSize; i++) { if (*(fSteps->elementAt(i)) != *(other.fSteps->elementAt(i))) return false; } return true; } bool XercesLocationPath::operator!=(const XercesLocationPath& other) const { return !operator==(other); } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(XercesLocationPath) void XercesLocationPath::serialize(XSerializeEngine& serEng) { if (serEng.isStoring()) { /*** * Serialize RefVectorOf* fSteps; ***/ XTemplateSerializer::storeObject(fSteps, serEng); } else { /*** * Deserialize RefVectorOf* fSteps; ***/ XTemplateSerializer::loadObject(&fSteps, 8, true, serEng); } } XercesLocationPath::XercesLocationPath(MemoryManager* const) :fSteps(0) { } typedef JanitorMemFunCall CleanupType; // --------------------------------------------------------------------------- // XercesPath: Constructors and Destructor // --------------------------------------------------------------------------- XercesXPath::XercesXPath(const XMLCh* const xpathExpr, XMLStringPool* const stringPool, XercesNamespaceResolver* const scopeContext, const unsigned int emptyNamespaceId, const bool isSelector, MemoryManager* const manager) : fEmptyNamespaceId(emptyNamespaceId) , fExpression(0) , fLocationPaths(0) , fMemoryManager(manager) { CleanupType cleanup(this, &XercesXPath::cleanUp); try { fExpression = XMLString::replicate(xpathExpr, fMemoryManager); parseExpression(stringPool, scopeContext); if (isSelector) { checkForSelectedAttributes(); } } catch(const OutOfMemoryException&) { cleanup.release(); throw; } cleanup.release(); } XercesXPath::~XercesXPath() { cleanUp(); } // --------------------------------------------------------------------------- // XercesXPath: Operators // --------------------------------------------------------------------------- bool XercesXPath::operator==(const XercesXPath& other) const { XMLSize_t locPathSize = fLocationPaths->size(); if (locPathSize != other.fLocationPaths->size()) return false; for (XMLSize_t i=0; i < locPathSize; i++) { if (*(fLocationPaths->elementAt(i)) != *(other.fLocationPaths->elementAt(i))) return false; } return true; } bool XercesXPath::operator!=(const XercesXPath& other) const { return !operator==(other); } // --------------------------------------------------------------------------- // XercesPath: Helper methods // --------------------------------------------------------------------------- void XercesXPath::cleanUp() { fMemoryManager->deallocate(fExpression);//delete [] fExpression; delete fLocationPaths; } void XercesXPath::checkForSelectedAttributes() { // verify that an attribute is not selected XMLSize_t locSize = (fLocationPaths) ? fLocationPaths->size() : 0; for (XMLSize_t i = 0; i < locSize; i++) { XercesLocationPath* locPath = fLocationPaths->elementAt(i); XMLSize_t stepSize = locPath->getStepSize(); if (stepSize) { if (locPath->getStep(stepSize - 1)->getAxisType() == XercesStep::AxisType_ATTRIBUTE) { ThrowXMLwithMemMgr(XPathException, XMLExcepts::XPath_NoAttrSelector, fMemoryManager); } } } } void XercesXPath::parseExpression(XMLStringPool* const stringPool, XercesNamespaceResolver* const scopeContext) { XMLSize_t length = XMLString::stringLen(fExpression); if (!length) { return; } ValueVectorOf tokens(16, fMemoryManager); XPathScannerForSchema scanner(stringPool); if(!scanner.scanExpression(fExpression, 0, length, &tokens)) ThrowXMLwithMemMgr(XPathException, XMLExcepts::XPath_TokenNotSupported, fMemoryManager); bool firstTokenOfLocationPath=true; XMLSize_t tokenCount = tokens.size(); RefVectorOf* stepsVector = new (fMemoryManager) RefVectorOf(16, true, fMemoryManager); Janitor > janSteps(stepsVector); if (tokenCount) { fLocationPaths = new (fMemoryManager) RefVectorOf(8, true, fMemoryManager); } for (XMLSize_t i = 0; i < tokenCount; i++) { int aToken = tokens.elementAt(i); bool isNamespace=false; switch (aToken) { case XercesXPath::EXPRTOKEN_OPERATOR_UNION: { if (i == 0) { ThrowXMLwithMemMgr(XPathException, XMLExcepts::XPath_NoUnionAtStart, fMemoryManager); } XMLSize_t stepsSize = stepsVector->size(); if (stepsSize == 0) { ThrowXMLwithMemMgr(XPathException, XMLExcepts::XPath_NoMultipleUnion, fMemoryManager); } if(stepsVector->elementAt(0)->getAxisType()!=XercesStep::AxisType_SELF) { // prepend ./ XercesNodeTest* nodeTest = new (fMemoryManager) XercesNodeTest(XercesNodeTest::NodeType_NODE, fMemoryManager); XercesStep* step = new (fMemoryManager) XercesStep(XercesStep::AxisType_SELF, nodeTest); stepsVector->insertElementAt(step, 0); } XercesLocationPath* newPath = new (fMemoryManager) XercesLocationPath(stepsVector); janSteps.orphan(); bool bFound=false; for(XMLSize_t i=0;isize();i++) if((*(fLocationPaths->elementAt(i)))==(*newPath)) { bFound=true; break; } if(bFound) delete newPath; else fLocationPaths->addElement(newPath); stepsVector = new (fMemoryManager) RefVectorOf(16, true, fMemoryManager); janSteps.reset(stepsVector); firstTokenOfLocationPath = true; } break; case XercesXPath::EXPRTOKEN_AXISNAME_ATTRIBUTE: { // consume "::" token and drop through i++; } case XercesXPath::EXPRTOKEN_ATSIGN: { // consume QName token if (i == tokenCount - 1) { ThrowXMLwithMemMgr(XPathException, XMLExcepts::XPath_MissingAttr, fMemoryManager); } aToken = tokens.elementAt(++i); if (aToken != XercesXPath::EXPRTOKEN_NAMETEST_QNAME && aToken!= XercesXPath::EXPRTOKEN_NAMETEST_ANY && aToken!= XercesXPath::EXPRTOKEN_NAMETEST_NAMESPACE) { ThrowXMLwithMemMgr(XPathException, XMLExcepts::XPath_ExpectedToken1, fMemoryManager); } bool isNamespaceAtt=false; switch (aToken) { case XercesXPath::EXPRTOKEN_NAMETEST_ANY: { XercesNodeTest* nodeTest = new (fMemoryManager) XercesNodeTest(XercesNodeTest::NodeType_WILDCARD, fMemoryManager); XercesStep* step = new (fMemoryManager) XercesStep(XercesStep::AxisType_ATTRIBUTE, nodeTest); stepsVector->addElement(step); break; } case XercesXPath::EXPRTOKEN_NAMETEST_NAMESPACE: { isNamespaceAtt = true; } case XercesXPath::EXPRTOKEN_NAMETEST_QNAME: { aToken = tokens.elementAt(++i); const XMLCh* prefix = XMLUni::fgZeroLenString; unsigned int uri = fEmptyNamespaceId; if (scopeContext && aToken != -1) { prefix = stringPool->getValueForId(aToken); uri = scopeContext->getNamespaceForPrefix(prefix); } if (aToken != -1 && scopeContext && uri == fEmptyNamespaceId) { ThrowXMLwithMemMgr1(XPathException, XMLExcepts::XPath_PrefixNoURI, prefix, fMemoryManager); } if (isNamespaceAtt) { // build step XercesNodeTest* nodeTest = new (fMemoryManager) XercesNodeTest(prefix, uri, fMemoryManager); XercesStep* step = new (fMemoryManager) XercesStep(XercesStep::AxisType_ATTRIBUTE, nodeTest); stepsVector->addElement(step); break; } aToken = tokens.elementAt(++i); const XMLCh* localPart = stringPool->getValueForId(aToken); QName aQName(prefix, localPart, uri, fMemoryManager); // build step XercesNodeTest* nodeTest = new (fMemoryManager) XercesNodeTest(&aQName); XercesStep* step = new (fMemoryManager) XercesStep(XercesStep::AxisType_ATTRIBUTE, nodeTest); stepsVector->addElement(step); break; } } firstTokenOfLocationPath=false; break; } case XercesXPath::EXPRTOKEN_DOUBLE_COLON: { // should never have a bare double colon ThrowXMLwithMemMgr(XPathException, XMLExcepts::XPath_NoDoubleColon, fMemoryManager); } case XercesXPath::EXPRTOKEN_AXISNAME_CHILD: { // consume "::" token and drop through i++; if (i == tokenCount - 1) { ThrowXMLwithMemMgr(XPathException, XMLExcepts::XPath_ExpectedStep1, fMemoryManager); } firstTokenOfLocationPath=false; break; } case XercesXPath::EXPRTOKEN_NAMETEST_ANY: { XercesNodeTest* nodeTest = new (fMemoryManager) XercesNodeTest(XercesNodeTest::NodeType_WILDCARD, fMemoryManager); XercesStep* step = new (fMemoryManager) XercesStep(XercesStep::AxisType_CHILD, nodeTest); stepsVector->addElement(step); firstTokenOfLocationPath = false; break; } case XercesXPath::EXPRTOKEN_NAMETEST_NAMESPACE: { isNamespace=true; } case XercesXPath::EXPRTOKEN_NAMETEST_QNAME: { // consume QName token aToken = tokens.elementAt(++i); const XMLCh* prefix = XMLUni::fgZeroLenString; unsigned int uri = fEmptyNamespaceId; if (scopeContext && aToken != -1) { prefix = stringPool->getValueForId(aToken); uri = scopeContext->getNamespaceForPrefix(prefix); } if (aToken != -1 && scopeContext && uri == fEmptyNamespaceId) { ThrowXMLwithMemMgr1(XPathException, XMLExcepts::XPath_PrefixNoURI, prefix, fMemoryManager); } if (isNamespace) { // build step XercesNodeTest* nodeTest = new (fMemoryManager) XercesNodeTest(prefix, uri, fMemoryManager); XercesStep* step = new (fMemoryManager) XercesStep(XercesStep::AxisType_CHILD, nodeTest); stepsVector->addElement(step); break; } aToken = tokens.elementAt(++i); const XMLCh* localPart = stringPool->getValueForId(aToken); QName aQName(prefix, localPart, uri, fMemoryManager); // build step XercesNodeTest* nodeTest = new (fMemoryManager) XercesNodeTest(&aQName); XercesStep* step = new (fMemoryManager) XercesStep(XercesStep::AxisType_CHILD, nodeTest); stepsVector->addElement(step); firstTokenOfLocationPath = false; break; } case XercesXPath::EXPRTOKEN_PERIOD: { // build step XercesNodeTest* nodeTest = new (fMemoryManager) XercesNodeTest(XercesNodeTest::NodeType_NODE, fMemoryManager); XercesStep* step = new (fMemoryManager) XercesStep(XercesStep::AxisType_SELF, nodeTest); stepsVector->addElement(step); if (firstTokenOfLocationPath && i+1 < tokenCount) { aToken = tokens.elementAt(i+1); if (aToken == XercesXPath::EXPRTOKEN_OPERATOR_DOUBLE_SLASH){ if (++i == tokenCount - 1) { ThrowXMLwithMemMgr(XPathException, XMLExcepts::XPath_ExpectedStep2, fMemoryManager); } if (i+1 < tokenCount) { aToken = tokens.elementAt(i+1); if (aToken == XercesXPath::EXPRTOKEN_OPERATOR_SLASH) { ThrowXMLwithMemMgr(XPathException, XMLExcepts::XPath_NoForwardSlash, fMemoryManager); } } // build step nodeTest = new (fMemoryManager) XercesNodeTest(XercesNodeTest::NodeType_NODE, fMemoryManager); step = new (fMemoryManager) XercesStep(XercesStep::AxisType_DESCENDANT, nodeTest); stepsVector->addElement(step); } } firstTokenOfLocationPath=false; break; } case XercesXPath::EXPRTOKEN_OPERATOR_DOUBLE_SLASH: { ThrowXMLwithMemMgr(XPathException, XMLExcepts::XPath_NoDoubleForwardSlash, fMemoryManager); } case XercesXPath::EXPRTOKEN_OPERATOR_SLASH: { if (i == 0) { ThrowXMLwithMemMgr(XPathException, XMLExcepts::XPath_NoForwardSlashAtStart, fMemoryManager); } // keep on truckin' if (firstTokenOfLocationPath) { ThrowXMLwithMemMgr(XPathException, XMLExcepts::XPath_NoSelectionOfRoot, fMemoryManager); } if (i == tokenCount - 1) { ThrowXMLwithMemMgr(XPathException, XMLExcepts::XPath_ExpectedStep3, fMemoryManager); } aToken = tokens.elementAt(i+1); if(aToken == XercesXPath::EXPRTOKEN_OPERATOR_SLASH || aToken == XercesXPath::EXPRTOKEN_OPERATOR_DOUBLE_SLASH || aToken == XercesXPath::EXPRTOKEN_OPERATOR_UNION) ThrowXMLwithMemMgr(XPathException, XMLExcepts::XPath_ExpectedStep3, fMemoryManager); firstTokenOfLocationPath=false; break; } default: firstTokenOfLocationPath=false; } } XMLSize_t stepsSize = stepsVector->size(); if (stepsSize == 0) { if (!fLocationPaths || fLocationPaths->size() == 0) { ThrowXMLwithMemMgr(XPathException, XMLExcepts::XPath_EmptyExpr, fMemoryManager); } else { ThrowXMLwithMemMgr(XPathException, XMLExcepts::XPath_NoUnionAtEnd, fMemoryManager); } } if(stepsVector->elementAt(0)->getAxisType()!=XercesStep::AxisType_SELF) { // prepend ./ XercesNodeTest* nodeTest = new (fMemoryManager) XercesNodeTest(XercesNodeTest::NodeType_NODE, fMemoryManager); XercesStep* step = new (fMemoryManager) XercesStep(XercesStep::AxisType_SELF, nodeTest); stepsVector->insertElementAt(step, 0); } XercesLocationPath* newPath = new (fMemoryManager) XercesLocationPath(stepsVector); janSteps.orphan(); bool bFound=false; for(XMLSize_t j=0;jsize();j++) if((*(fLocationPaths->elementAt(j)))==(*newPath)) { bFound=true; break; } if(bFound) delete newPath; else fLocationPaths->addElement(newPath); } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(XercesXPath) void XercesXPath::serialize(XSerializeEngine& serEng) { if (serEng.isStoring()) { serEng<* fLocationPaths; ***/ XTemplateSerializer::storeObject(fLocationPaths, serEng); } else { serEng>>fEmptyNamespaceId; serEng.readString(fExpression); /*** * Deserialize RefVectorOf* fLocationPaths; ***/ XTemplateSerializer::loadObject(&fLocationPaths, 8, true, serEng); } } XercesXPath::XercesXPath(MemoryManager* const manager) :fEmptyNamespaceId(0) ,fExpression(0) ,fLocationPaths(0) ,fMemoryManager(manager) { } // --------------------------------------------------------------------------- // XPathScanner: Constructors and Destructor // --------------------------------------------------------------------------- XPathScanner::XPathScanner(XMLStringPool* const stringPool) : fAndSymbol (0) , fOrSymbol(0) , fModSymbol(0) , fDivSymbol(0) , fCommentSymbol(0) , fTextSymbol(0) , fPISymbol(0) , fNodeSymbol(0) , fAncestorSymbol(0) , fAncestorOrSelfSymbol(0) , fAttributeSymbol(0) , fChildSymbol(0) , fDescendantSymbol(0) , fDescendantOrSelfSymbol(0) , fFollowingSymbol(0) , fFollowingSiblingSymbol(0) , fNamespaceSymbol(0) , fParentSymbol(0) , fPrecedingSymbol(0) , fPrecedingSiblingSymbol(0) , fSelfSymbol(0) , fStringPool(stringPool) { init(); } // --------------------------------------------------------------------------- // XPathScanner: Helper methods // --------------------------------------------------------------------------- void XPathScanner::init() { fAndSymbol = fStringPool->addOrFind(XPathSymbols::fgSYMBOL_AND); fOrSymbol = fStringPool->addOrFind(XPathSymbols::fgSYMBOL_OR); fModSymbol = fStringPool->addOrFind(XPathSymbols::fgSYMBOL_MOD); fDivSymbol = fStringPool->addOrFind(XPathSymbols::fgSYMBOL_DIV); fCommentSymbol = fStringPool->addOrFind(XPathSymbols::fgSYMBOL_COMMENT); fTextSymbol = fStringPool->addOrFind(XPathSymbols::fgSYMBOL_TEXT); fPISymbol = fStringPool->addOrFind(XPathSymbols::fgSYMBOL_PI); fNodeSymbol = fStringPool->addOrFind(XPathSymbols::fgSYMBOL_NODE); fAncestorSymbol = fStringPool->addOrFind(XPathSymbols::fgSYMBOL_ANCESTOR); fAncestorOrSelfSymbol = fStringPool->addOrFind(XPathSymbols::fgSYMBOL_ANCESTOR_OR_SELF); fAttributeSymbol = fStringPool->addOrFind(XPathSymbols::fgSYMBOL_ATTRIBUTE); fChildSymbol = fStringPool->addOrFind(XPathSymbols::fgSYMBOL_CHILD); fDescendantSymbol = fStringPool->addOrFind(XPathSymbols::fgSYMBOL_DESCENDANT); fDescendantOrSelfSymbol = fStringPool->addOrFind(XPathSymbols::fgSYMBOL_DESCENDANT_OR_SELF); fFollowingSymbol = fStringPool->addOrFind(XPathSymbols::fgSYMBOL_FOLLOWING); fFollowingSiblingSymbol = fStringPool->addOrFind(XPathSymbols::fgSYMBOL_FOLLOWING_SIBLING); fNamespaceSymbol = fStringPool->addOrFind(XPathSymbols::fgSYMBOL_NAMESPACE); fParentSymbol = fStringPool->addOrFind(XPathSymbols::fgSYMBOL_PARENT); fPrecedingSymbol = fStringPool->addOrFind(XPathSymbols::fgSYMBOL_PRECEDING); fPrecedingSiblingSymbol = fStringPool->addOrFind(XPathSymbols::fgSYMBOL_PRECEDING_SIBLING); fSelfSymbol = fStringPool->addOrFind(XPathSymbols::fgSYMBOL_SELF); } // --------------------------------------------------------------------------- // XPathScanner: Scan methods // --------------------------------------------------------------------------- bool XPathScanner::scanExpression(const XMLCh* const data, XMLSize_t currentOffset, const XMLSize_t endOffset, ValueVectorOf* const tokens) { bool starIsMultiplyOperator = false; XMLSize_t nameOffset = 0; int nameHandle = -1; int prefixHandle = -1; XMLCh ch; XMLBuffer dataBuffer(128, tokens->getMemoryManager()); while (currentOffset != endOffset) { ch = data[currentOffset]; while (XMLChar1_0::isWhitespace(ch)) { if (++currentOffset == endOffset) { break; } ch = data[currentOffset]; } if (currentOffset == endOffset) { break; } // // [28] ExprToken ::= '(' | ')' | '[' | ']' | '.' | '..' | '@' | ',' | '::' // | NameTest | NodeType | Operator | FunctionName // | AxisName | Literal | Number | VariableReference // XMLByte chartype = (ch >= 0x80) ? (XMLByte)CHARTYPE_NONASCII : fASCIICharMap[ch]; switch (chartype) { case CHARTYPE_OPEN_PAREN: // '(' addToken(tokens, XercesXPath::EXPRTOKEN_OPEN_PAREN); starIsMultiplyOperator = false; ++currentOffset; break; case CHARTYPE_CLOSE_PAREN: // ')' addToken(tokens, XercesXPath::EXPRTOKEN_CLOSE_PAREN); starIsMultiplyOperator = true; ++currentOffset; break; case CHARTYPE_OPEN_BRACKET: // '[' addToken(tokens, XercesXPath::EXPRTOKEN_OPEN_BRACKET); starIsMultiplyOperator = false; ++currentOffset; break; case CHARTYPE_CLOSE_BRACKET: // ']' addToken(tokens, XercesXPath::EXPRTOKEN_CLOSE_BRACKET); starIsMultiplyOperator = true; ++currentOffset; break; // // [30] Number ::= Digits ('.' Digits?)? | '.' Digits // ^^^^^^^^^^ // case CHARTYPE_PERIOD: // '.', '..' or '.' Digits if (currentOffset + 1 == endOffset) { addToken(tokens, XercesXPath::EXPRTOKEN_PERIOD); starIsMultiplyOperator = true; currentOffset++; break; } ch = data[currentOffset + 1]; if (ch == chPeriod) { // '..' addToken(tokens, XercesXPath::EXPRTOKEN_DOUBLE_PERIOD); starIsMultiplyOperator = true; currentOffset += 2; } else if (ch >= chDigit_0 && ch <= chDigit_9) { addToken(tokens, XercesXPath::EXPRTOKEN_NUMBER); starIsMultiplyOperator = true; currentOffset = scanNumber(data, endOffset, currentOffset, tokens); } else if (ch == chForwardSlash) { addToken(tokens, XercesXPath::EXPRTOKEN_PERIOD); starIsMultiplyOperator = true; currentOffset++; } else if (ch == chPipe) { // '|' addToken(tokens, XercesXPath::EXPRTOKEN_PERIOD); starIsMultiplyOperator = true; currentOffset++; } else if (XMLChar1_0::isWhitespace(ch)) { do { if (++currentOffset == endOffset) break; ch = data[currentOffset]; } while (XMLChar1_0::isWhitespace(ch)); if (currentOffset == endOffset || ch == chPipe || ch == chForwardSlash) { addToken(tokens, XercesXPath::EXPRTOKEN_PERIOD); starIsMultiplyOperator = true; break; } } else { XMLCh str[2]= {ch, 0 }; ThrowXMLwithMemMgr1(XPathException, XMLExcepts::XPath_InvalidChar, str, tokens->getMemoryManager()); } break; case CHARTYPE_ATSIGN: // '@' addToken(tokens, XercesXPath::EXPRTOKEN_ATSIGN); starIsMultiplyOperator = false; ++currentOffset; break; case CHARTYPE_COMMA: // ',' addToken(tokens, XercesXPath::EXPRTOKEN_COMMA); starIsMultiplyOperator = false; ++currentOffset; break; case CHARTYPE_COLON: // '::' if (++currentOffset == endOffset) { return false; // REVISIT } ch = data[currentOffset]; if (ch != chColon) { return false; // REVISIT } addToken(tokens, XercesXPath::EXPRTOKEN_DOUBLE_COLON); starIsMultiplyOperator = false; ++currentOffset; break; case CHARTYPE_SLASH: // '/' and '//' if (++currentOffset == endOffset) { addToken(tokens, XercesXPath::EXPRTOKEN_OPERATOR_SLASH); starIsMultiplyOperator = false; break; } ch = data[currentOffset]; if (ch == chForwardSlash) { // '//' addToken(tokens, XercesXPath::EXPRTOKEN_OPERATOR_DOUBLE_SLASH); starIsMultiplyOperator = false; ++currentOffset; } else { addToken(tokens, XercesXPath::EXPRTOKEN_OPERATOR_SLASH); starIsMultiplyOperator = false; } break; case CHARTYPE_UNION: // '|' addToken(tokens, XercesXPath::EXPRTOKEN_OPERATOR_UNION); starIsMultiplyOperator = false; ++currentOffset; break; case CHARTYPE_PLUS: // '+' addToken(tokens, XercesXPath::EXPRTOKEN_OPERATOR_PLUS); starIsMultiplyOperator = false; ++currentOffset; break; case CHARTYPE_MINUS: // '-' addToken(tokens, XercesXPath::EXPRTOKEN_OPERATOR_MINUS); starIsMultiplyOperator = false; ++currentOffset; break; case CHARTYPE_EQUAL: // '=' addToken(tokens, XercesXPath::EXPRTOKEN_OPERATOR_EQUAL); starIsMultiplyOperator = false; ++currentOffset; break; case CHARTYPE_EXCLAMATION: // '!=' if (++currentOffset == endOffset) { return false; // REVISIT } ch = data[currentOffset]; if (ch != chEqual) { return false; // REVISIT } addToken(tokens, XercesXPath::EXPRTOKEN_OPERATOR_NOT_EQUAL); starIsMultiplyOperator = false; ++currentOffset; break; case CHARTYPE_LESS: // '<' and '<=' if (++currentOffset == endOffset) { addToken(tokens, XercesXPath::EXPRTOKEN_OPERATOR_LESS); starIsMultiplyOperator = false; break; } ch = data[currentOffset]; if (ch == chEqual) { // '<=' addToken(tokens, XercesXPath::EXPRTOKEN_OPERATOR_LESS_EQUAL); starIsMultiplyOperator = false; ++currentOffset; } else { addToken(tokens, XercesXPath::EXPRTOKEN_OPERATOR_LESS); starIsMultiplyOperator = false; } break; case CHARTYPE_GREATER: // '>' and '>=' if (++currentOffset == endOffset) { addToken(tokens, XercesXPath::EXPRTOKEN_OPERATOR_GREATER); starIsMultiplyOperator = false; break; } ch = data[currentOffset]; if (ch == chEqual) { // '>=' addToken(tokens, XercesXPath::EXPRTOKEN_OPERATOR_GREATER_EQUAL); starIsMultiplyOperator = false; ++currentOffset; } else { addToken(tokens, XercesXPath::EXPRTOKEN_OPERATOR_GREATER); starIsMultiplyOperator = false; } break; // // [29] Literal ::= '"' [^"]* '"' | "'" [^']* "'" // case CHARTYPE_QUOTE: // '\"' or '\'' { XMLCh qchar = ch; if (++currentOffset == endOffset) { return false; // REVISIT } ch = data[currentOffset]; XMLSize_t litOffset = currentOffset; while (ch != qchar) { if (++currentOffset == endOffset) { return false; // REVISIT } ch = data[currentOffset]; } addToken(tokens, XercesXPath::EXPRTOKEN_LITERAL); starIsMultiplyOperator = true; dataBuffer.set(data + litOffset, currentOffset - litOffset); tokens->addElement(fStringPool->addOrFind(dataBuffer.getRawBuffer())); ++currentOffset; break; } // // [30] Number ::= Digits ('.' Digits?)? | '.' Digits // [31] Digits ::= [0-9]+ // case CHARTYPE_DIGIT: addToken(tokens, XercesXPath::EXPRTOKEN_NUMBER); starIsMultiplyOperator = true; currentOffset = scanNumber(data, endOffset, currentOffset, tokens); break; // // [36] VariableReference ::= '$' QName // case CHARTYPE_DOLLAR: if (++currentOffset == endOffset) { return false; // REVISIT } nameOffset = currentOffset; currentOffset = scanNCName(data, endOffset, currentOffset); if (currentOffset == nameOffset) { return false; // REVISIT } if (currentOffset < endOffset) { ch = data[currentOffset]; } else { ch = 0; } dataBuffer.set(data + nameOffset, currentOffset - nameOffset); nameHandle = fStringPool->addOrFind(dataBuffer.getRawBuffer()); prefixHandle = -1; if (ch == chColon) { prefixHandle = nameHandle; if (++currentOffset == endOffset) { return false; // REVISIT } nameOffset = currentOffset; currentOffset = scanNCName(data, endOffset, currentOffset); if (currentOffset == nameOffset) { return false; // REVISIT } dataBuffer.set(data + nameOffset, currentOffset - nameOffset); nameHandle = fStringPool->addOrFind(dataBuffer.getRawBuffer()); } addToken(tokens, XercesXPath::EXPRTOKEN_VARIABLE_REFERENCE); starIsMultiplyOperator = true; tokens->addElement(prefixHandle); tokens->addElement(nameHandle); break; // // [37] NameTest ::= '*' | NCName ':' '*' | QName // [34] MultiplyOperator ::= '*' // case CHARTYPE_STAR: // '*' // // 3.7 Lexical Structure // // If there is a preceding token and the preceding token is not one of @, ::, (, [, , or // an Operator, then a * must be recognized as a MultiplyOperator. // // Otherwise, the token must not be recognized as a MultiplyOperator. // if (starIsMultiplyOperator) { addToken(tokens, XercesXPath::EXPRTOKEN_OPERATOR_MULT); starIsMultiplyOperator = false; } else { addToken(tokens, XercesXPath::EXPRTOKEN_NAMETEST_ANY); starIsMultiplyOperator = true; } ++currentOffset; break; // // NCName, QName and non-terminals // case CHARTYPE_NONASCII: // possibly a valid non-ascii 'Letter' (BaseChar | Ideographic) case CHARTYPE_LETTER: case CHARTYPE_UNDERSCORE: { // // 3.7 Lexical Structure // // If there is a preceding token and the preceding token is not one of @, ::, (, [, , or // an Operator, then an NCName must be recognized as an OperatorName. // // If the character following an NCName (possibly after intervening ExprWhitespace) is (, // then the token must be recognized as a NodeType or a FunctionName. // // If the two characters following an NCName (possibly after intervening ExprWhitespace) // are ::, then the token must be recognized as an AxisName. // // Otherwise, the token must not be recognized as an OperatorName, a NodeType, a // FunctionName, or an AxisName. // // [33] OperatorName ::= 'and' | 'or' | 'mod' | 'div' // [38] NodeType ::= 'comment' | 'text' | 'processing-instruction' | 'node' // [35] FunctionName ::= QName - NodeType // [6] AxisName ::= (see above) // // [37] NameTest ::= '*' | NCName ':' '*' | QName // [5] NCName ::= (Letter | '_') (NCNameChar)* // [?] NCNameChar ::= Letter | Digit | '.' | '-' | '_' (ascii subset of 'NCNameChar') // [?] QName ::= (NCName ':')? NCName // [?] Letter ::= [A-Za-z] (ascii subset of 'Letter') // [?] Digit ::= [0-9] (ascii subset of 'Digit') // nameOffset = currentOffset; currentOffset = scanNCName(data, endOffset, currentOffset); if (currentOffset == nameOffset) { return false; // REVISIT } if (currentOffset < endOffset) { ch = data[currentOffset]; } else { ch = 0; } dataBuffer.set(data + nameOffset, currentOffset - nameOffset); nameHandle = fStringPool->addOrFind(dataBuffer.getRawBuffer()); bool isNameTestNCName = false; bool isAxisName = false; prefixHandle = -1; if (ch == chColon) { if (++currentOffset == endOffset) { return false; // REVISIT } ch = data[currentOffset]; if (ch == chAsterisk) { if (++currentOffset < endOffset) { ch = data[currentOffset]; } isNameTestNCName = true; } else if (ch == chColon) { if (++currentOffset < endOffset) { ch = data[currentOffset]; } isAxisName = true; } else { prefixHandle = nameHandle; nameOffset = currentOffset; currentOffset = scanNCName(data, endOffset, currentOffset); if (currentOffset == nameOffset) { return false; // REVISIT } if (currentOffset < endOffset) { ch = data[currentOffset]; } else { ch = 0; } dataBuffer.set(data + nameOffset, currentOffset - nameOffset); nameHandle = fStringPool->addOrFind(dataBuffer.getRawBuffer()); } } // // [39] ExprWhitespace ::= S // while (XMLChar1_0::isWhitespace(ch)) { if (++currentOffset == endOffset) { break; } ch = data[currentOffset]; } // // If there is a preceding token and the preceding token is not one of @, ::, (, [, , or // an Operator, then an NCName must be recognized as an OperatorName. // if (starIsMultiplyOperator) { if (nameHandle == fAndSymbol) { addToken(tokens, XercesXPath::EXPRTOKEN_OPERATOR_AND); starIsMultiplyOperator = false; } else if (nameHandle == fOrSymbol) { addToken(tokens, XercesXPath::EXPRTOKEN_OPERATOR_OR); starIsMultiplyOperator = false; } else if (nameHandle == fModSymbol) { addToken(tokens, XercesXPath::EXPRTOKEN_OPERATOR_MOD); starIsMultiplyOperator = false; } else if (nameHandle == fDivSymbol) { addToken(tokens, XercesXPath::EXPRTOKEN_OPERATOR_DIV); starIsMultiplyOperator = false; } else { return false; // REVISIT } if (isNameTestNCName) { return false; // REVISIT - NCName:* where an OperatorName is required } else if (isAxisName) { return false; // REVISIT - AxisName:: where an OperatorName is required } break; } // // If the character following an NCName (possibly after intervening ExprWhitespace) is (, // then the token must be recognized as a NodeType or a FunctionName. // if (ch == chOpenParen && !isNameTestNCName && !isAxisName) { if (nameHandle == fCommentSymbol) { addToken(tokens, XercesXPath::EXPRTOKEN_NODETYPE_COMMENT); } else if (nameHandle == fTextSymbol) { addToken(tokens, XercesXPath::EXPRTOKEN_NODETYPE_TEXT); } else if (nameHandle == fPISymbol) { addToken(tokens, XercesXPath::EXPRTOKEN_NODETYPE_PI); } else if (nameHandle == fNodeSymbol) { addToken(tokens, XercesXPath::EXPRTOKEN_NODETYPE_NODE); } else { addToken(tokens, XercesXPath::EXPRTOKEN_FUNCTION_NAME); tokens->addElement(prefixHandle); tokens->addElement(nameHandle); } addToken(tokens, XercesXPath::EXPRTOKEN_OPEN_PAREN); starIsMultiplyOperator = false; ++currentOffset; break; } // // If the two characters following an NCName (possibly after intervening ExprWhitespace) // are ::, then the token must be recognized as an AxisName. // if (isAxisName || (ch == chColon && currentOffset + 1 < endOffset && data[currentOffset + 1] == chColon)) { if (nameHandle == fAncestorSymbol) { addToken(tokens, XercesXPath::EXPRTOKEN_AXISNAME_ANCESTOR); } else if (nameHandle == fAncestorOrSelfSymbol) { addToken(tokens, XercesXPath::EXPRTOKEN_AXISNAME_ANCESTOR_OR_SELF); } else if (nameHandle == fAttributeSymbol) { addToken(tokens, XercesXPath::EXPRTOKEN_AXISNAME_ATTRIBUTE); } else if (nameHandle == fChildSymbol) { addToken(tokens, XercesXPath::EXPRTOKEN_AXISNAME_CHILD); } else if (nameHandle == fDescendantSymbol) { addToken(tokens, XercesXPath::EXPRTOKEN_AXISNAME_DESCENDANT); } else if (nameHandle == fDescendantOrSelfSymbol) { addToken(tokens, XercesXPath::EXPRTOKEN_AXISNAME_DESCENDANT_OR_SELF); } else if (nameHandle == fFollowingSymbol) { addToken(tokens, XercesXPath::EXPRTOKEN_AXISNAME_FOLLOWING); } else if (nameHandle == fFollowingSiblingSymbol) { addToken(tokens, XercesXPath::EXPRTOKEN_AXISNAME_FOLLOWING_SIBLING); } else if (nameHandle == fNamespaceSymbol) { addToken(tokens, XercesXPath::EXPRTOKEN_AXISNAME_NAMESPACE); } else if (nameHandle == fParentSymbol) { addToken(tokens, XercesXPath::EXPRTOKEN_AXISNAME_PARENT); } else if (nameHandle == fPrecedingSymbol) { addToken(tokens, XercesXPath::EXPRTOKEN_AXISNAME_PRECEDING); } else if (nameHandle == fPrecedingSiblingSymbol) { addToken(tokens, XercesXPath::EXPRTOKEN_AXISNAME_PRECEDING_SIBLING); } else if (nameHandle == fSelfSymbol) { addToken(tokens, XercesXPath::EXPRTOKEN_AXISNAME_SELF); } else { return false; // REVISIT } if (isNameTestNCName) { return false; // REVISIT - "NCName:* ::" where "AxisName ::" is required } addToken(tokens, XercesXPath::EXPRTOKEN_DOUBLE_COLON); starIsMultiplyOperator = false; if (!isAxisName) { currentOffset += 2; } break; } // // Otherwise, the token must not be recognized as an OperatorName, a NodeType, a // FunctionName, or an AxisName. // if (isNameTestNCName) { addToken(tokens, XercesXPath::EXPRTOKEN_NAMETEST_NAMESPACE); tokens->addElement(nameHandle); } else { addToken(tokens, XercesXPath::EXPRTOKEN_NAMETEST_QNAME); tokens->addElement(prefixHandle); tokens->addElement(nameHandle); } starIsMultiplyOperator = true; break; } default: { XMLCh str[2]= {ch, 0 }; ThrowXMLwithMemMgr1(XPathException, XMLExcepts::XPath_InvalidChar, str, tokens->getMemoryManager()); break; } } } return true; } XMLSize_t XPathScanner::scanNCName(const XMLCh* const data, const XMLSize_t endOffset, XMLSize_t currentOffset) { XMLCh ch = data[currentOffset]; if (!XMLChar1_0::isFirstNCNameChar(ch)) { return currentOffset; } while (++currentOffset < endOffset) { ch = data[currentOffset]; if (!XMLChar1_0::isNCNameChar(ch)) { break; } } return currentOffset; } XMLSize_t XPathScanner::scanNumber(const XMLCh* const data, const XMLSize_t endOffset, XMLSize_t currentOffset, ValueVectorOf* const tokens) { XMLCh ch = data[currentOffset]; int whole = 0; int part = 0; while (ch >= chDigit_0 && ch <= chDigit_9) { whole = (whole * 10) + (ch - chDigit_0); if (++currentOffset == endOffset) { break; } ch = data[currentOffset]; } if (ch == chPeriod) { if (++currentOffset < endOffset) { ch = data[currentOffset]; while (ch >= chDigit_0 && ch <= chDigit_9) { part = (part * 10) + (ch - chDigit_0); if (++currentOffset == endOffset) { break; } ch = data[currentOffset]; } if (part != 0) { ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::XPath_FindSolution, tokens->getMemoryManager()); } } } tokens->addElement(whole); tokens->addElement(part); return currentOffset; } // --------------------------------------------------------------------------- // XPathScannerForSchema: Constructors and Destructor // --------------------------------------------------------------------------- XPathScannerForSchema::XPathScannerForSchema(XMLStringPool* const stringPool) : XPathScanner(stringPool) { } // --------------------------------------------------------------------------- // XPathScannerForSchema: Helper methods // --------------------------------------------------------------------------- void XPathScannerForSchema::addToken(ValueVectorOf* const tokens, const int aToken) { if (aToken == XercesXPath::EXPRTOKEN_ATSIGN || aToken == XercesXPath::EXPRTOKEN_AXISNAME_ATTRIBUTE || aToken == XercesXPath::EXPRTOKEN_AXISNAME_CHILD || //token == XercesXPath::EXPRTOKEN_AXISNAME_SELF || aToken == XercesXPath::EXPRTOKEN_DOUBLE_COLON || aToken == XercesXPath::EXPRTOKEN_NAMETEST_QNAME || //token == XercesXPath::EXPRTOKEN_NODETYPE_NODE || aToken == XercesXPath::EXPRTOKEN_OPERATOR_SLASH || aToken == XercesXPath::EXPRTOKEN_PERIOD || aToken == XercesXPath::EXPRTOKEN_NAMETEST_ANY || aToken == XercesXPath::EXPRTOKEN_NAMETEST_NAMESPACE || aToken == XercesXPath::EXPRTOKEN_OPERATOR_DOUBLE_SLASH || aToken == XercesXPath::EXPRTOKEN_OPERATOR_UNION) { tokens->addElement(aToken); return; } ThrowXMLwithMemMgr(XPathException, XMLExcepts::XPath_TokenNotSupported, tokens->getMemoryManager()); } XERCES_CPP_NAMESPACE_END /** * End of file XercesPath.cpp */ xerces-c-3.1.1/src/xercesc/validators/schema/identity/IC_Key.hpp0000644000175000017500000000521311360344373023550 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: IC_Key.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_IC_KEY_HPP) #define XERCESC_INCLUDE_GUARD_IC_KEY_HPP // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include XERCES_CPP_NAMESPACE_BEGIN class VALIDATORS_EXPORT IC_Key: public IdentityConstraint { public: // ----------------------------------------------------------------------- // Constructors/Destructor // ----------------------------------------------------------------------- IC_Key(const XMLCh* const identityConstraintName, const XMLCh* const elemName, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); ~IC_Key(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- short getType() const; /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(IC_Key) IC_Key(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- IC_Key(const IC_Key& other); IC_Key& operator= (const IC_Key& other); }; // --------------------------------------------------------------------------- // IC_Key: Getter methods // --------------------------------------------------------------------------- inline short IC_Key::getType() const { return IdentityConstraint::ICType_KEY; } XERCES_CPP_NAMESPACE_END #endif /** * End of file IC_Key.hpp */ xerces-c-3.1.1/src/xercesc/validators/schema/identity/IdentityConstraint.hpp0000644000175000017500000001625111360344373026307 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: IdentityConstraint.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_IDENTITYCONSTRAINT_HPP) #define XERCESC_INCLUDE_GUARD_IDENTITYCONSTRAINT_HPP /** * The class act as a base class for schema identity constraints. */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Forward Declarations // --------------------------------------------------------------------------- class IC_Selector; class VALIDATORS_EXPORT IdentityConstraint : public XSerializable, public XMemory { public: // ----------------------------------------------------------------------- // Constants // ----------------------------------------------------------------------- enum ICType { ICType_UNIQUE = 0, ICType_KEY = 1, ICType_KEYREF = 2, ICType_UNKNOWN }; // ----------------------------------------------------------------------- // Constructors/Destructor // ----------------------------------------------------------------------- virtual ~IdentityConstraint(); // ----------------------------------------------------------------------- // operators // ----------------------------------------------------------------------- bool operator== (const IdentityConstraint& other) const; bool operator!= (const IdentityConstraint& other) const; // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- virtual short getType() const = 0; XMLSize_t getFieldCount() const; XMLCh* getIdentityConstraintName() const; XMLCh* getElementName() const; IC_Selector* getSelector() const; int getNamespaceURI() const; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- void setSelector(IC_Selector* const selector); void setNamespaceURI(int uri); // ----------------------------------------------------------------------- // Access methods // ----------------------------------------------------------------------- void addField(IC_Field* const field); const IC_Field* getFieldAt(const XMLSize_t index) const; IC_Field* getFieldAt(const XMLSize_t index); /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(IdentityConstraint) static void storeIC(XSerializeEngine& serEng , IdentityConstraint* const ic); static IdentityConstraint* loadIC(XSerializeEngine& serEng); protected: // ----------------------------------------------------------------------- // Constructors/Destructor // ----------------------------------------------------------------------- IdentityConstraint(const XMLCh* const identityConstraintName, const XMLCh* const elementName, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- IdentityConstraint(const IdentityConstraint& other); IdentityConstraint& operator= (const IdentityConstraint& other); // ----------------------------------------------------------------------- // CleanUp methods // ----------------------------------------------------------------------- void cleanUp(); // ----------------------------------------------------------------------- // Data members // // fIdentityConstraintName // The identity constraint name // // fElemName // The element name // // fSelector // The selector information // // fFields // The field(s) information // ----------------------------------------------------------------------- XMLCh* fIdentityConstraintName; XMLCh* fElemName; IC_Selector* fSelector; RefVectorOf* fFields; MemoryManager* fMemoryManager; int fNamespaceURI; }; // --------------------------------------------------------------------------- // IdentityConstraint: Getter methods // --------------------------------------------------------------------------- inline XMLSize_t IdentityConstraint::getFieldCount() const { if (fFields) { return fFields->size(); } return 0; } inline XMLCh* IdentityConstraint::getIdentityConstraintName() const { return fIdentityConstraintName; } inline XMLCh* IdentityConstraint::getElementName() const { return fElemName; } inline IC_Selector* IdentityConstraint::getSelector() const { return fSelector; } inline int IdentityConstraint::getNamespaceURI() const { return fNamespaceURI; } // --------------------------------------------------------------------------- // IdentityConstraint: Setter methods // --------------------------------------------------------------------------- inline void IdentityConstraint::setNamespaceURI(int uri) { fNamespaceURI = uri; } // --------------------------------------------------------------------------- // IdentityConstraint: Access methods // --------------------------------------------------------------------------- inline void IdentityConstraint::addField(IC_Field* const field) { if (!fFields) { fFields = new (fMemoryManager) RefVectorOf(4, true, fMemoryManager); } fFields->addElement(field); } inline const IC_Field* IdentityConstraint::getFieldAt(const XMLSize_t index) const { if (fFields) { return (fFields->elementAt(index)); } return 0; } inline IC_Field* IdentityConstraint::getFieldAt(const XMLSize_t index) { if (fFields) { return (fFields->elementAt(index)); } return 0; } XERCES_CPP_NAMESPACE_END #endif /** * End of file IdentityConstraint.hpp */ xerces-c-3.1.1/src/xercesc/validators/schema/identity/FieldActivator.cpp0000644000175000017500000001045011042054515025330 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: FieldActivator.cpp 679340 2008-07-24 10:28:29Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // FieldActivator: Constructors and Destructor // --------------------------------------------------------------------------- FieldActivator::FieldActivator(ValueStoreCache* const valueStoreCache, XPathMatcherStack* const matcherStack, MemoryManager* const manager) : fValueStoreCache(valueStoreCache) , fMatcherStack(matcherStack) , fMayMatch(0) , fMemoryManager(manager) { fMayMatch = new (manager) ValueHashTableOf(29, manager); } FieldActivator::FieldActivator(const FieldActivator& other) : XMemory(other) , fValueStoreCache(other.fValueStoreCache) , fMatcherStack(other.fMatcherStack) , fMayMatch(0) , fMemoryManager(other.fMemoryManager) { fMayMatch = new (fMemoryManager) ValueHashTableOf(29, fMemoryManager); ValueHashTableOfEnumerator mayMatchEnum(other.fMayMatch, false, fMemoryManager); // Build key set while (mayMatchEnum.hasMoreElements()) { IC_Field* field = (IC_Field*) mayMatchEnum.nextElementKey(); fMayMatch->put(field, other.fMayMatch->get(field)); } } FieldActivator::~FieldActivator() { delete fMayMatch; } // --------------------------------------------------------------------------- // FieldActivator: Operator methods // --------------------------------------------------------------------------- FieldActivator& FieldActivator::operator =(const FieldActivator& other) { if (this == &other) { return *this; } fValueStoreCache = other.fValueStoreCache; fMatcherStack = other.fMatcherStack; return *this; } // --------------------------------------------------------------------------- // FieldActivator: Operator methods // --------------------------------------------------------------------------- XPathMatcher* FieldActivator::activateField(IC_Field* const field, const int initialDepth) { ValueStore* valueStore = fValueStoreCache->getValueStoreFor(field, initialDepth); XPathMatcher* matcher = field->createMatcher(this, valueStore, fMemoryManager); setMayMatch(field, true); fMatcherStack->addMatcher(matcher); matcher->startDocumentFragment(); return matcher; } void FieldActivator::startValueScopeFor(const IdentityConstraint* const ic, const int initialDepth) { XMLSize_t fieldCount = ic->getFieldCount(); for(XMLSize_t i=0; igetFieldAt(i); ValueStore* valueStore = fValueStoreCache->getValueStoreFor(field, initialDepth); valueStore->startValueScope(); } } void FieldActivator::endValueScopeFor(const IdentityConstraint* const ic, const int initialDepth) { ValueStore* valueStore = fValueStoreCache->getValueStoreFor(ic, initialDepth); valueStore->endValueScope(); } XERCES_CPP_NAMESPACE_END /** * End of file FieldActivator.cpp */ xerces-c-3.1.1/src/xercesc/validators/schema/identity/XPathException.hpp0000644000175000017500000000223410606722647025356 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XPathException.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_XPATHEXCEPTION_HPP) #define XERCESC_INCLUDE_GUARD_XPATHEXCEPTION_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN MakeXMLException(XPathException, VALIDATORS_EXPORT) XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/validators/schema/identity/IdentityConstraintHandler.cpp0000644000175000017500000001625611241006565027601 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: IdentityConstraintHandler.cpp 803869 2009-08-13 12:56:21Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include "IdentityConstraintHandler.hpp" #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN typedef JanitorMemFunCall CleanupType; // --------------------------------------------------------------------------- // IdentityConstraintHandler: Constructors and Destructor // --------------------------------------------------------------------------- IdentityConstraintHandler::IdentityConstraintHandler(XMLScanner* const scanner , MemoryManager* const manager) : fScanner(scanner) , fMemoryManager(manager) , fMatcherStack(0) , fValueStoreCache(0) , fFieldActivator(0) { CleanupType cleanup(this, &IdentityConstraintHandler::cleanUp); try { fMatcherStack = new (fMemoryManager) XPathMatcherStack(fMemoryManager); fValueStoreCache = new (fMemoryManager) ValueStoreCache(fMemoryManager); fFieldActivator = new (fMemoryManager) FieldActivator(fValueStoreCache, fMatcherStack, fMemoryManager); fValueStoreCache->setScanner(scanner); } catch(const OutOfMemoryException&) { cleanup.release(); throw; } cleanup.release(); } IdentityConstraintHandler::~IdentityConstraintHandler() { cleanUp(); } // --------------------------------------------------------------------------- // IdentityConstraintHandler: methods // --------------------------------------------------------------------------- void IdentityConstraintHandler::deactivateContext( SchemaElementDecl* const elem , const XMLCh* const content , ValidationContext* validationContext /*=0*/ , DatatypeValidator* actualValidator /*=0*/) { XMLSize_t oldCount = fMatcherStack->getMatcherCount(); if (oldCount || elem->getIdentityConstraintCount()) { for (XMLSize_t i = oldCount; i > 0; i--) { XPathMatcher* matcher = fMatcherStack->getMatcherAt(i-1); matcher->endElement(*(elem), content, validationContext, actualValidator); } if (fMatcherStack->size() > 0) { fMatcherStack->popContext(); } // handle everything *but* keyref's. XMLSize_t newCount = fMatcherStack->getMatcherCount(); for (XMLSize_t j = oldCount; j > newCount; j--) { XPathMatcher* matcher = fMatcherStack->getMatcherAt(j-1); IdentityConstraint* ic = matcher->getIdentityConstraint(); if (ic && (ic->getType() != IdentityConstraint::ICType_KEYREF)) fValueStoreCache->transplant(ic, matcher->getInitialDepth()); } // now handle keyref's... for (XMLSize_t k = oldCount; k > newCount; k--) { XPathMatcher* matcher = fMatcherStack->getMatcherAt(k-1); IdentityConstraint* ic = matcher->getIdentityConstraint(); if (ic && (ic->getType() == IdentityConstraint::ICType_KEYREF)) { ValueStore* values = fValueStoreCache->getValueStoreFor(ic, matcher->getInitialDepth()); if (values) { // nothing to do if nothing matched! values->endDocumentFragment(fValueStoreCache); } } } fValueStoreCache->endElement(); } } void IdentityConstraintHandler::activateIdentityConstraint ( SchemaElementDecl* const elem , int elemDepth , const unsigned int uriId , const XMLCh* const elemPrefix , const RefVectorOf& attrList , const XMLSize_t attrCount , ValidationContext* validationContext /*=0*/) { XMLSize_t count = elem->getIdentityConstraintCount(); if (count || fMatcherStack->getMatcherCount()) { fValueStoreCache->startElement(); fMatcherStack->pushContext(); fValueStoreCache->initValueStoresFor( elem, elemDepth); for (XMLSize_t i = 0; i < count; i++) { activateSelectorFor(elem->getIdentityConstraintAt(i), elemDepth); } // call all active identity constraints count = fMatcherStack->getMatcherCount(); for (XMLSize_t j = 0; j < count; j++) { XPathMatcher* matcher = fMatcherStack->getMatcherAt(j); matcher->startElement(*elem, uriId, elemPrefix, attrList, attrCount, validationContext); } } } void IdentityConstraintHandler::activateSelectorFor( IdentityConstraint* const ic , const int initialDepth) { IC_Selector* selector = ic->getSelector(); if (!selector) return; XPathMatcher* matcher = selector->createMatcher(fFieldActivator, initialDepth, fMemoryManager); fMatcherStack->addMatcher(matcher); matcher->startDocumentFragment(); } // --------------------------------------------------------------------------- // IdentityConstraintHandler: Getter methods // --------------------------------------------------------------------------- // --------------------------------------------------------------------------- // IdentityConstraintHandler: cleanUp methods // --------------------------------------------------------------------------- void IdentityConstraintHandler::cleanUp() { if (fMatcherStack) delete fMatcherStack; if (fValueStoreCache) delete fValueStoreCache; if (fFieldActivator) delete fFieldActivator; } void IdentityConstraintHandler::reset() { fValueStoreCache->startDocument(); fMatcherStack->clear(); } XERCES_CPP_NAMESPACE_END /** * End of file IdentityConstraintHandler.cpp */ xerces-c-3.1.1/src/xercesc/validators/schema/identity/FieldActivator.hpp0000644000175000017500000001207711042054515025344 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: FieldActivator.hpp 679340 2008-07-24 10:28:29Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_FIELDACTIVATOR_HPP) #define XERCESC_INCLUDE_GUARD_FIELDACTIVATOR_HPP /** * This class is responsible for activating fields within a specific scope; * the caller merely requests the fields to be activated. */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Forward Declaration // --------------------------------------------------------------------------- class IdentityConstraint; class XPathMatcher; class ValueStoreCache; class IC_Field; class XPathMatcherStack; class VALIDATORS_EXPORT FieldActivator : public XMemory { public: // ----------------------------------------------------------------------- // Constructors/Destructor // ----------------------------------------------------------------------- FieldActivator(ValueStoreCache* const valueStoreCache, XPathMatcherStack* const matcherStack, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); FieldActivator(const FieldActivator& other); ~FieldActivator(); // ----------------------------------------------------------------------- // Operator methods // ----------------------------------------------------------------------- FieldActivator& operator =(const FieldActivator& other); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- bool getMayMatch(IC_Field* const field); // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- void setValueStoreCache(ValueStoreCache* const other); void setMatcherStack(XPathMatcherStack* const matcherStack); void setMayMatch(IC_Field* const field, bool value); // ----------------------------------------------------------------------- // Activation methods // ----------------------------------------------------------------------- /** * Start the value scope for the specified identity constraint. This * method is called when the selector matches in order to initialize * the value store. */ void startValueScopeFor(const IdentityConstraint* const ic, const int initialDepth); /** * Request to activate the specified field. This method returns the * matcher for the field. */ XPathMatcher* activateField(IC_Field* const field, const int initialDepth); /** * Ends the value scope for the specified identity constraint. */ void endValueScopeFor(const IdentityConstraint* const ic, const int initialDepth); private: // ----------------------------------------------------------------------- // Data // ----------------------------------------------------------------------- ValueStoreCache* fValueStoreCache; XPathMatcherStack* fMatcherStack; ValueHashTableOf* fMayMatch; MemoryManager* fMemoryManager; }; // --------------------------------------------------------------------------- // FieldActivator: Getter methods // --------------------------------------------------------------------------- inline bool FieldActivator::getMayMatch(IC_Field* const field) { return fMayMatch->get(field); } // --------------------------------------------------------------------------- // FieldActivator: Setter methods // --------------------------------------------------------------------------- inline void FieldActivator::setValueStoreCache(ValueStoreCache* const other) { fValueStoreCache = other; } inline void FieldActivator::setMatcherStack(XPathMatcherStack* const matcherStack) { fMatcherStack = matcherStack; } inline void FieldActivator::setMayMatch(IC_Field* const field, bool value) { fMayMatch->put(field, value); } XERCES_CPP_NAMESPACE_END #endif /** * End of file FieldActivator.hpp */ xerces-c-3.1.1/src/xercesc/validators/schema/identity/IC_Unique.cpp0000644000175000017500000000366710523643534024275 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: IC_Unique.cpp 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // IC_Unique: Constructors and Destructor // --------------------------------------------------------------------------- IC_Unique::IC_Unique(const XMLCh* const identityConstraintName, const XMLCh* const elemName, MemoryManager* const manager) : IdentityConstraint(identityConstraintName, elemName, manager) { } IC_Unique::~IC_Unique() { } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(IC_Unique) void IC_Unique::serialize(XSerializeEngine& serEng) { IdentityConstraint::serialize(serEng); //no data } IC_Unique::IC_Unique(MemoryManager* const manager) :IdentityConstraint(0, 0, manager) { } XERCES_CPP_NAMESPACE_END /** * End of file IC_Unique.cpp */ xerces-c-3.1.1/src/xercesc/validators/schema/GeneralAttributeCheck.hpp0000644000175000017500000001762511126201344025013 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: GeneralAttributeCheck.hpp 729944 2008-12-29 17:03:32Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_GENERALATTRIBUTECHECK_HPP) #define XERCESC_INCLUDE_GUARD_GENERALATTRIBUTECHECK_HPP /** * A general purpose class to check for valid values of attributes, as well * as check for proper association with corresponding schema elements. */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Forward declaration // --------------------------------------------------------------------------- class TraverseSchema; class DOMElement; class DOMNode; class VALIDATORS_EXPORT GeneralAttributeCheck : public XMemory { public: // ----------------------------------------------------------------------- // Constants // ----------------------------------------------------------------------- //Elements enum { E_All, E_Annotation, E_Any, E_AnyAttribute, E_Appinfo, E_AttributeGlobal, E_AttributeLocal, E_AttributeRef, E_AttributeGroupGlobal, E_AttributeGroupRef, E_Choice, E_ComplexContent, E_ComplexTypeGlobal, E_ComplexTypeLocal, E_Documentation, E_ElementGlobal, E_ElementLocal, E_ElementRef, E_Enumeration, E_Extension, E_Field, E_FractionDigits, E_GroupGlobal, E_GroupRef, E_Import, E_Include, E_Key, E_KeyRef, E_Length, E_List, E_MaxExclusive, E_MaxInclusive, E_MaxLength, E_MinExclusive, E_MinInclusive, E_MinLength, E_Notation, E_Pattern, E_Redefine, E_Restriction, E_Schema, E_Selector, E_Sequence, E_SimpleContent, E_SimpleTypeGlobal, E_SimpleTypeLocal, E_TotalDigits, E_Union, E_Unique, E_WhiteSpace, E_Count, E_Invalid = -1 }; //Attributes enum { A_Abstract, A_AttributeFormDefault, A_Base, A_Block, A_BlockDefault, A_Default, A_ElementFormDefault, A_Final, A_FinalDefault, A_Fixed, A_Form, A_ID, A_ItemType, A_MaxOccurs, A_MemberTypes, A_MinOccurs, A_Mixed, A_Name, A_Namespace, A_Nillable, A_ProcessContents, A_Public, A_Ref, A_Refer, A_SchemaLocation, A_Source, A_SubstitutionGroup, A_System, A_TargetNamespace, A_Type, A_Use, A_Value, A_Version, A_XPath, A_Count, A_Invalid = -1 }; //Validators enum { DV_String = 0, DV_AnyURI = 4, DV_NonNegInt = 8, DV_Boolean = 16, DV_ID = 32, DV_Form = 64, DV_MaxOccurs = 128, DV_MaxOccurs1 = 256, DV_MinOccurs1 = 512, DV_ProcessContents = 1024, DV_Use = 2048, DV_WhiteSpace = 4096, DV_Mask = (DV_AnyURI | DV_NonNegInt | DV_Boolean | DV_ID | DV_Form | DV_MaxOccurs | DV_MaxOccurs1 | DV_MinOccurs1 | DV_ProcessContents | DV_Use | DV_WhiteSpace) }; // generate element-attributes map table #if defined(NEED_TO_GEN_ELEM_ATT_MAP_TABLE) static void initCharFlagTable(); #endif // ----------------------------------------------------------------------- // Constructor/Destructor // ----------------------------------------------------------------------- GeneralAttributeCheck(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); ~GeneralAttributeCheck(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- unsigned short getFacetId(const XMLCh* const facetName, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); // ----------------------------------------------------------------------- // Validation methods // ----------------------------------------------------------------------- void checkAttributes(const DOMElement* const elem, const unsigned short elemContext, TraverseSchema* const schema, const bool isTopLevel = false, ValueVectorOf* const nonXSAttList = 0); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- GeneralAttributeCheck(const GeneralAttributeCheck&); GeneralAttributeCheck& operator=(const GeneralAttributeCheck&); // ----------------------------------------------------------------------- // Validation methods // ----------------------------------------------------------------------- void validate(const DOMElement* const elem, const XMLCh* const attName, const XMLCh* const attValue, const short dvIndex, TraverseSchema* const schema); // ----------------------------------------------------------------------- // Private Constants // ----------------------------------------------------------------------- // optional vs. required attribute enum { Att_Required = 1, Att_Optional = 2, Att_Mask = 3 }; // ----------------------------------------------------------------------- // Private data members // ----------------------------------------------------------------------- static ValueHashTableOf* fAttMap; static ValueHashTableOf* fFacetsMap; static DatatypeValidator* fNonNegIntDV; static DatatypeValidator* fBooleanDV; static DatatypeValidator* fAnyURIDV; static unsigned short fgElemAttTable[E_Count][A_Count]; static const XMLCh* fAttNames[A_Count]; MemoryManager* fMemoryManager; IDDatatypeValidator fIDValidator; private: static void initialize(); friend class XMLInitializer; }; // --------------------------------------------------------------------------- // GeneralAttributeCheck: Getter methods // --------------------------------------------------------------------------- inline unsigned short GeneralAttributeCheck::getFacetId(const XMLCh* const facetName, MemoryManager* const manager) { return fFacetsMap->get(facetName, manager); } XERCES_CPP_NAMESPACE_END #endif /** * End of file GeneralAttributeCheck.hpp */ xerces-c-3.1.1/src/xercesc/validators/schema/XSDErrorReporter.cpp0000644000175000017500000001602310765240501023777 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Local static data // --------------------------------------------------------------------------- static XMLMsgLoader* gErrMsgLoader = 0; static XMLMsgLoader* gValidMsgLoader = 0; void XMLInitializer::initializeXSDErrorReporter() { gErrMsgLoader = XMLPlatformUtils::loadMsgSet(XMLUni::fgXMLErrDomain); if (!gErrMsgLoader) XMLPlatformUtils::panic(PanicHandler::Panic_CantLoadMsgDomain); gValidMsgLoader = XMLPlatformUtils::loadMsgSet(XMLUni::fgValidityDomain); if (!gValidMsgLoader) XMLPlatformUtils::panic(PanicHandler::Panic_CantLoadMsgDomain); } void XMLInitializer::terminateXSDErrorReporter() { delete gErrMsgLoader; gErrMsgLoader = 0; delete gValidMsgLoader; gValidMsgLoader = 0; } // --------------------------------------------------------------------------- // XSDErrorReporter: Constructors and Destructor // --------------------------------------------------------------------------- XSDErrorReporter::XSDErrorReporter(XMLErrorReporter* const errorReporter) : fExitOnFirstFatal(false) , fErrorReporter(errorReporter) { } // --------------------------------------------------------------------------- // XSDErrorReporter: Error reporting // --------------------------------------------------------------------------- void XSDErrorReporter::emitError(const unsigned int toEmit, const XMLCh* const msgDomain, const Locator* const aLocator) { // Bump the error count if it is not a warning // if (XMLErrs::errorType(toEmit) != XMLErrorReporter::ErrType_Warning) // incrementErrorCount(); // // Load the message into alocal and replace any tokens found in // the text. // const XMLSize_t msgSize = 1023; XMLCh errText[msgSize + 1]; XMLMsgLoader* msgLoader = gErrMsgLoader; XMLErrorReporter::ErrTypes errType = XMLErrs::errorType((XMLErrs::Codes) toEmit); if (XMLString::equals(msgDomain, XMLUni::fgValidityDomain)) { errType = XMLValid::errorType((XMLValid::Codes) toEmit); msgLoader = gValidMsgLoader; } if (!msgLoader->loadMsg(toEmit, errText, msgSize)) { // Should probably load a default message here } if (fErrorReporter) fErrorReporter->error(toEmit, msgDomain, errType, errText, aLocator->getSystemId(), aLocator->getPublicId(), aLocator->getLineNumber(), aLocator->getColumnNumber()); // Bail out if its fatal an we are to give up on the first fatal error if (errType == XMLErrorReporter::ErrType_Fatal && fExitOnFirstFatal) throw (XMLErrs::Codes) toEmit; } void XSDErrorReporter::emitError(const unsigned int toEmit, const XMLCh* const msgDomain, const Locator* const aLocator, const XMLCh* const text1, const XMLCh* const text2, const XMLCh* const text3, const XMLCh* const text4, MemoryManager* const manager) { // Bump the error count if it is not a warning // if (XMLErrs::errorType(toEmit) != XMLErrorReporter::ErrType_Warning) // incrementErrorCount(); // // Load the message into alocal and replace any tokens found in // the text. // const XMLSize_t maxChars = 2047; XMLCh errText[maxChars + 1]; XMLMsgLoader* msgLoader = gErrMsgLoader; XMLErrorReporter::ErrTypes errType = XMLErrs::errorType((XMLErrs::Codes) toEmit); if (XMLString::equals(msgDomain, XMLUni::fgValidityDomain)) { errType = XMLValid::errorType((XMLValid::Codes) toEmit); msgLoader = gValidMsgLoader; } if (!msgLoader->loadMsg(toEmit, errText, maxChars, text1, text2, text3, text4, manager)) { // Should probably load a default message here } if (fErrorReporter) fErrorReporter->error(toEmit, msgDomain, errType, errText, aLocator->getSystemId(), aLocator->getPublicId(), aLocator->getLineNumber(), aLocator->getColumnNumber()); // Bail out if its fatal an we are to give up on the first fatal error if (errType == XMLErrorReporter::ErrType_Fatal && fExitOnFirstFatal) throw (XMLErrs::Codes) toEmit; } void XSDErrorReporter::emitError(const XMLException& except, const Locator* const aLocator) { const XMLCh* const errText = except.getMessage(); const unsigned int toEmit = except.getCode(); //Before the code was modified to call this routine it used to use //the XMLErrs::DisplayErrorMessage error message, which is just {'0'} //and that error message has errType of Error. So to be consistent //with previous behaviour set the errType to be Error instead of //getting the error type off of the exception. //XMLErrorReporter::ErrTypes errType = XMLErrs::errorType((XMLErrs::Codes) toEmit); XMLErrorReporter::ErrTypes errType = XMLErrorReporter::ErrType_Error; if (fErrorReporter) fErrorReporter->error(toEmit, XMLUni::fgExceptDomain, errType, errText, aLocator->getSystemId(), aLocator->getPublicId(), aLocator->getLineNumber(), aLocator->getColumnNumber()); // Bail out if its fatal an we are to give up on the first fatal error //if (errType == XMLErrorReporter::ErrType_Fatal && fExitOnFirstFatal) // throw (XMLErrs::Codes) toEmit; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/validators/schema/SchemaElementDecl.hpp0000644000175000017500000003271311360344373024123 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SchemaElementDecl.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_SCHEMAELEMENTDECL_HPP) #define XERCESC_INCLUDE_GUARD_SCHEMAELEMENTDECL_HPP #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN class ContentSpecNode; class SchemaAttDefList; // // This class is a derivative of the basic element decl. This one implements // the virtuals so that they work for a Schema. // class VALIDATORS_EXPORT SchemaElementDecl : public XMLElementDecl { public : // ----------------------------------------------------------------------- // Class specific types // // ModelTypes // Indicates the type of content model that an element has. This // indicates how the content model is represented and validated. // ----------------------------------------------------------------------- enum ModelTypes { Empty , Any , Mixed_Simple , Mixed_Complex , Children , Simple , ElementOnlyEmpty , ModelTypes_Count }; // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- SchemaElementDecl(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); SchemaElementDecl ( const XMLCh* const prefix , const XMLCh* const localPart , const int uriId , const ModelTypes modelType = Any , const unsigned int enclosingScope = Grammar::TOP_LEVEL_SCOPE , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); SchemaElementDecl ( const QName* const elementName , const ModelTypes modelType = Any , const unsigned int enclosingScope = Grammar::TOP_LEVEL_SCOPE , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); ~SchemaElementDecl(); // ----------------------------------------------------------------------- // The virtual element decl interface // ----------------------------------------------------------------------- virtual XMLAttDefList& getAttDefList() const; virtual CharDataOpts getCharDataOpts() const; virtual bool hasAttDefs() const; virtual const ContentSpecNode* getContentSpec() const; virtual ContentSpecNode* getContentSpec(); virtual void setContentSpec(ContentSpecNode* toAdopt); virtual XMLContentModel* getContentModel(); virtual void setContentModel(XMLContentModel* const newModelToAdopt); virtual const XMLCh* getFormattedContentModel () const; // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const SchemaAttDef* getAttDef(const XMLCh* const baseName, const int uriId) const; SchemaAttDef* getAttDef(const XMLCh* const baseName, const int uriId); const SchemaAttDef* getAttWildCard() const; SchemaAttDef* getAttWildCard(); ModelTypes getModelType() const; PSVIDefs::PSVIScope getPSVIScope() const; DatatypeValidator* getDatatypeValidator() const; unsigned int getEnclosingScope() const; int getFinalSet() const; int getBlockSet() const; int getMiscFlags() const; XMLCh* getDefaultValue() const; ComplexTypeInfo* getComplexTypeInfo() const; virtual bool isGlobalDecl() const; SchemaElementDecl* getSubstitutionGroupElem() const; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- void setModelType(const SchemaElementDecl::ModelTypes toSet); void setPSVIScope(const PSVIDefs::PSVIScope toSet); void setDatatypeValidator(DatatypeValidator* newDatatypeValidator); void setEnclosingScope(const unsigned int enclosingScope); void setFinalSet(const int finalSet); void setBlockSet(const int blockSet); void setMiscFlags(const int flags); void setDefaultValue(const XMLCh* const value); void setComplexTypeInfo(ComplexTypeInfo* const typeInfo); void setAttWildCard(SchemaAttDef* const attWildCard); void setSubstitutionGroupElem(SchemaElementDecl* const elemDecl); // ----------------------------------------------------------------------- // IC methods // ----------------------------------------------------------------------- void addIdentityConstraint(IdentityConstraint* const ic); XMLSize_t getIdentityConstraintCount() const; IdentityConstraint* getIdentityConstraintAt(XMLSize_t index) const; /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(SchemaElementDecl) virtual XMLElementDecl::objectType getObjectType() const; private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- SchemaElementDecl(const SchemaElementDecl&); SchemaElementDecl& operator=(const SchemaElementDecl&); // ----------------------------------------------------------------------- // Private data members // // fModelType // The content model type of this element. This tells us what kind // of content model to create. // // fDatatypeValidator // The DatatypeValidator used to validate this element type. // // fEnclosingScope // The enclosing scope where this element is declared. // // fFinalSet // The value set of the 'final' attribute. // // fBlockSet // The value set of the 'block' attribute. // // fMiscFlags // Stores 'abstract/nullable' values // // fDefaultValue // The default/fixed value // // fComplexTypeInfo // Stores complex type information // (no need to delete - handled by schema grammar) // // fAttDefs // The list of attributes that are faulted in for this element // when ComplexTypeInfo does not exist. We want to keep track // of these faulted in attributes to avoid duplicate redundant // error. // // fIdentityConstraints // Store information about an element identity constraints. // // fAttWildCard // Store wildcard attribute in the case of an element with a type of // 'anyType'. // // fSubstitutionGroupElem // The substitution group element declaration. // ----------------------------------------------------------------------- // ----------------------------------------------------------------------- ModelTypes fModelType; PSVIDefs::PSVIScope fPSVIScope; unsigned int fEnclosingScope; int fFinalSet; int fBlockSet; int fMiscFlags; XMLCh* fDefaultValue; ComplexTypeInfo* fComplexTypeInfo; RefHash2KeysTableOf* fAttDefs; RefVectorOf* fIdentityConstraints; SchemaAttDef* fAttWildCard; SchemaElementDecl* fSubstitutionGroupElem; DatatypeValidator* fDatatypeValidator; }; // --------------------------------------------------------------------------- // SchemaElementDecl: XMLElementDecl virtual interface implementation // --------------------------------------------------------------------------- inline ContentSpecNode* SchemaElementDecl::getContentSpec() { if (fComplexTypeInfo != 0) { return fComplexTypeInfo->getContentSpec(); } return 0; } inline const ContentSpecNode* SchemaElementDecl::getContentSpec() const { if (fComplexTypeInfo != 0) { return fComplexTypeInfo->getContentSpec(); } return 0; } inline void SchemaElementDecl::setContentSpec(ContentSpecNode*) { //Handled by complexType } inline XMLContentModel* SchemaElementDecl::getContentModel() { if (fComplexTypeInfo != 0) { return fComplexTypeInfo->getContentModel(); } return 0; } inline void SchemaElementDecl::setContentModel(XMLContentModel* const) { //Handled by complexType } // --------------------------------------------------------------------------- // SchemaElementDecl: Getter methods // --------------------------------------------------------------------------- inline SchemaElementDecl::ModelTypes SchemaElementDecl::getModelType() const { if (fComplexTypeInfo) { return (SchemaElementDecl::ModelTypes) fComplexTypeInfo->getContentType(); } return fModelType; } inline PSVIDefs::PSVIScope SchemaElementDecl::getPSVIScope() const { return fPSVIScope; } inline DatatypeValidator* SchemaElementDecl::getDatatypeValidator() const { return fDatatypeValidator; } inline unsigned int SchemaElementDecl::getEnclosingScope() const { return fEnclosingScope; } inline int SchemaElementDecl::getFinalSet() const { return fFinalSet; } inline int SchemaElementDecl::getBlockSet() const { return fBlockSet; } inline int SchemaElementDecl::getMiscFlags() const { return fMiscFlags; } inline XMLCh* SchemaElementDecl::getDefaultValue() const { return fDefaultValue; } inline ComplexTypeInfo* SchemaElementDecl::getComplexTypeInfo() const { return fComplexTypeInfo; } inline const SchemaAttDef* SchemaElementDecl::getAttWildCard() const { return fAttWildCard; } inline SchemaAttDef* SchemaElementDecl::getAttWildCard() { return fAttWildCard; } inline bool SchemaElementDecl::isGlobalDecl() const { return (fEnclosingScope == Grammar::TOP_LEVEL_SCOPE); } inline SchemaElementDecl* SchemaElementDecl::getSubstitutionGroupElem() const { return fSubstitutionGroupElem; } // --------------------------------------------------------------------------- // SchemaElementDecl: Setter methods // --------------------------------------------------------------------------- inline void SchemaElementDecl::setModelType(const SchemaElementDecl::ModelTypes toSet) { fModelType = toSet; } inline void SchemaElementDecl::setPSVIScope(const PSVIDefs::PSVIScope toSet) { fPSVIScope = toSet; } inline void SchemaElementDecl::setDatatypeValidator(DatatypeValidator* newDatatypeValidator) { fDatatypeValidator = newDatatypeValidator; } inline void SchemaElementDecl::setEnclosingScope(const unsigned int newEnclosingScope) { fEnclosingScope = newEnclosingScope; } inline void SchemaElementDecl::setFinalSet(const int finalSet) { fFinalSet = finalSet; } inline void SchemaElementDecl::setBlockSet(const int blockSet) { fBlockSet = blockSet; } inline void SchemaElementDecl::setMiscFlags(const int flags) { fMiscFlags = flags; } inline void SchemaElementDecl::setDefaultValue(const XMLCh* const value) { if (fDefaultValue) { getMemoryManager()->deallocate(fDefaultValue);//delete[] fDefaultValue; } fDefaultValue = XMLString::replicate(value, getMemoryManager()); } inline void SchemaElementDecl::setComplexTypeInfo(ComplexTypeInfo* const typeInfo) { fComplexTypeInfo = typeInfo; } inline void SchemaElementDecl::setAttWildCard(SchemaAttDef* const attWildCard) { if (fAttWildCard) delete fAttWildCard; fAttWildCard = attWildCard; } inline void SchemaElementDecl::setSubstitutionGroupElem(SchemaElementDecl* const elemDecl) { fSubstitutionGroupElem = elemDecl; } // --------------------------------------------------------------------------- // SchemaElementDecl: IC methods // --------------------------------------------------------------------------- inline void SchemaElementDecl::addIdentityConstraint(IdentityConstraint* const ic) { if (!fIdentityConstraints) { fIdentityConstraints = new (getMemoryManager()) RefVectorOf(16, true, getMemoryManager()); } fIdentityConstraints->addElement(ic); } inline XMLSize_t SchemaElementDecl::getIdentityConstraintCount() const { if (fIdentityConstraints) { return fIdentityConstraints->size(); } return 0; } inline IdentityConstraint* SchemaElementDecl::getIdentityConstraintAt(XMLSize_t index) const { if (fIdentityConstraints) { return fIdentityConstraints->elementAt(index); } return 0; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/validators/schema/XSDDOMParser.cpp0000644000175000017500000004505111126201344022754 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * $Id: XSDDOMParser.cpp 729944 2008-12-29 17:03:32Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // XSDDOMParser: Constructors and Destructor // --------------------------------------------------------------------------- XSDDOMParser::XSDDOMParser( XMLValidator* const valToAdopt , MemoryManager* const manager , XMLGrammarPool* const gramPool): XercesDOMParser(valToAdopt, manager, gramPool) , fSawFatal(false) , fAnnotationDepth(-1) , fInnerAnnotationDepth(-1) , fDepth(-1) , fUserErrorReporter(0) , fUserEntityHandler(0) , fURIs(0) , fAnnotationBuf(1023, manager) { fURIs = new (manager) ValueVectorOf(16, manager); fXSDErrorReporter.setErrorReporter(this); setValidationScheme(XercesDOMParser::Val_Never); setDoNamespaces(true); } XSDDOMParser::~XSDDOMParser() { delete fURIs; } // --------------------------------------------------------------------------- // XSDDOMParser: Helper methods // --------------------------------------------------------------------------- DOMElement* XSDDOMParser::createElementNSNode(const XMLCh *namespaceURI, const XMLCh *qualifiedName) { ReaderMgr::LastExtEntityInfo lastInfo; ((ReaderMgr*) fScanner->getLocator())->getLastExtEntityInfo(lastInfo); return getDocument()->createElementNS(namespaceURI, qualifiedName, lastInfo.lineNumber, lastInfo.colNumber); } void XSDDOMParser::startAnnotation( const XMLElementDecl& elemDecl , const RefVectorOf& attrList , const XMLSize_t attrCount) { fAnnotationBuf.append(chOpenAngle); fAnnotationBuf.append(elemDecl.getFullName()); fAnnotationBuf.append(chSpace); // attributes are a bit of a pain. To get this right, we have to keep track // of the namespaces we've seen declared, then examine the namespace context // for other namespaces so that we can also include them. // optimized for simplicity and the case that not many // namespaces are declared on this annotation... fURIs->removeAllElements(); for (XMLSize_t i=0; i < attrCount; i++) { const XMLAttr* oneAttrib = attrList.elementAt(i); const XMLCh* attrValue = oneAttrib->getValue(); if (XMLString::equals(oneAttrib->getName(), XMLUni::fgXMLNSString)) fURIs->addElement(fScanner->getPrefixId(XMLUni::fgZeroLenString)); else if (!XMLString::compareNString(oneAttrib->getQName(), XMLUni::fgXMLNSColonString, 6)) fURIs->addElement(fScanner->getPrefixId(oneAttrib->getName())); fAnnotationBuf.append(oneAttrib->getQName()); fAnnotationBuf.append(chEqual); fAnnotationBuf.append(chDoubleQuote); fAnnotationBuf.append(attrValue); fAnnotationBuf.append(chDoubleQuote); fAnnotationBuf.append(chSpace); } // now we have to look through currently in-scope namespaces to see what // wasn't declared here ValueVectorOf* namespaceContext = fScanner->getNamespaceContext(); for (XMLSize_t j=0; j < namespaceContext->size(); j++) { unsigned int prefId = namespaceContext->elementAt(j)->fPrefId; if (!fURIs->containsElement(prefId)) { const XMLCh* prefix = fScanner->getPrefixForId(prefId); if (XMLString::equals(prefix, XMLUni::fgZeroLenString)) { fAnnotationBuf.append(XMLUni::fgXMLNSString); } else { fAnnotationBuf.append(XMLUni::fgXMLNSColonString); fAnnotationBuf.append(prefix); } fAnnotationBuf.append(chEqual); fAnnotationBuf.append(chDoubleQuote); fAnnotationBuf.append(fScanner->getURIText(namespaceContext->elementAt(j)->fURIId)); fAnnotationBuf.append(chDoubleQuote); fAnnotationBuf.append(chSpace); fURIs->addElement(prefId); } } fAnnotationBuf.append(chCloseAngle); fAnnotationBuf.append(chLF); } void XSDDOMParser::startAnnotationElement( const XMLElementDecl& elemDecl , const RefVectorOf& attrList , const XMLSize_t attrCount) { fAnnotationBuf.append(chOpenAngle); fAnnotationBuf.append(elemDecl.getFullName()); //fAnnotationBuf.append(chSpace); for(XMLSize_t i=0; i < attrCount; i++) { const XMLAttr* oneAttr = attrList.elementAt(i); fAnnotationBuf.append(chSpace); fAnnotationBuf.append(oneAttr ->getQName()); fAnnotationBuf.append(chEqual); fAnnotationBuf.append(chDoubleQuote); fAnnotationBuf.append(oneAttr->getValue()); fAnnotationBuf.append(chDoubleQuote); } fAnnotationBuf.append(chCloseAngle); } void XSDDOMParser::endAnnotationElement( const XMLElementDecl& elemDecl , bool complete) { if (complete) { fAnnotationBuf.append(chLF); fAnnotationBuf.append(chOpenAngle); fAnnotationBuf.append(chForwardSlash); fAnnotationBuf.append(elemDecl.getFullName()); fAnnotationBuf.append(chCloseAngle); // note that this is always called after endElement on 's // child and before endElement on annotation. // hence, we must make this the child of the current // parent's only child. DOMTextImpl *node = (DOMTextImpl *)fDocument->createTextNode(fAnnotationBuf.getRawBuffer()); fCurrentNode->appendChild(node); fAnnotationBuf.reset(); } else //capturing character calls { fAnnotationBuf.append(chOpenAngle); fAnnotationBuf.append(chForwardSlash); fAnnotationBuf.append(elemDecl.getFullName()); fAnnotationBuf.append(chCloseAngle); } } // --------------------------------------------------------------------------- // XSDDOMParser: Setter methods // --------------------------------------------------------------------------- void XSDDOMParser::setUserErrorReporter(XMLErrorReporter* const errorReporter) { fUserErrorReporter = errorReporter; fScanner->setErrorReporter(this); } void XSDDOMParser::setUserEntityHandler(XMLEntityHandler* const entityHandler) { fUserEntityHandler = entityHandler; fScanner->setEntityHandler(this); } // --------------------------------------------------------------------------- // XSDDOMParser: Implementation of the XMLDocumentHandler interface // --------------------------------------------------------------------------- void XSDDOMParser::startElement( const XMLElementDecl& elemDecl , const unsigned int urlId , const XMLCh* const elemPrefix , const RefVectorOf& attrList , const XMLSize_t attrCount , const bool isEmpty , const bool isRoot) { fDepth++; // while it is true that non-whitespace character data // may only occur in appInfo or documentation // elements, it's certainly legal for comments and PI's to // occur as children of annotation; we need // to account for these here. if (fAnnotationDepth == -1) { if (XMLString::equals(elemDecl.getBaseName(), SchemaSymbols::fgELT_ANNOTATION) && XMLString::equals(getURIText(urlId), SchemaSymbols::fgURI_SCHEMAFORSCHEMA)) { fAnnotationDepth = fDepth; startAnnotation(elemDecl, attrList, attrCount); } } else if (fDepth == fAnnotationDepth+1) { fInnerAnnotationDepth = fDepth; startAnnotationElement(elemDecl, attrList, attrCount); } else { startAnnotationElement(elemDecl, attrList, attrCount); if(isEmpty) endElement(elemDecl, urlId, isRoot, elemPrefix); // avoid falling through; don't call startElement in this case return; } DOMElement *elem; if (urlId != fScanner->getEmptyNamespaceId()) //TagName has a prefix { if (elemPrefix && *elemPrefix) { XMLBufBid elemQName(&fBufMgr); elemQName.set(elemPrefix); elemQName.append(chColon); elemQName.append(elemDecl.getBaseName()); elem = createElementNSNode( fScanner->getURIText(urlId), elemQName.getRawBuffer()); } else { elem = createElementNSNode( fScanner->getURIText(urlId), elemDecl.getBaseName()); } } else { elem = createElementNSNode(0, elemDecl.getBaseName()); } DOMElementImpl *elemImpl = (DOMElementImpl *) elem; for (XMLSize_t index = 0; index < attrCount; ++index) { const XMLAttr* oneAttrib = attrList.elementAt(index); unsigned int attrURIId = oneAttrib->getURIId(); const XMLCh* namespaceURI = 0; //for xmlns=... if (XMLString::equals(oneAttrib->getName(), XMLUni::fgXMLNSString)) attrURIId = fScanner->getXMLNSNamespaceId(); //TagName has a prefix if (attrURIId != fScanner->getEmptyNamespaceId()) namespaceURI = fScanner->getURIText(attrURIId); //get namespaceURI // revisit. Optimize to init the named node map to the // right size up front. DOMAttrImpl *attr = (DOMAttrImpl *) fDocument->createAttributeNS(namespaceURI, oneAttrib->getQName()); attr->setValue(oneAttrib -> getValue()); DOMNode* remAttr = elemImpl->setAttributeNodeNS(attr); if (remAttr) remAttr->release(); // Attributes of type ID. If this is one, add it to the hashtable of IDs // that is constructed for use by GetElementByID(). if (oneAttrib->getType()==XMLAttDef::ID) { if (fDocument->fNodeIDMap == 0) fDocument->fNodeIDMap = new (fDocument) DOMNodeIDMap(500, fDocument); fDocument->fNodeIDMap->add(attr); attr->fNode.isIdAttr(true); } attr->setSpecified(oneAttrib->getSpecified()); } // set up the default attributes if (elemDecl.hasAttDefs()) { XMLAttDefList* defAttrs = &elemDecl.getAttDefList(); XMLAttDef* attr = 0; DOMAttrImpl * insertAttr = 0; for (XMLSize_t i=0; igetAttDefCount(); i++) { attr = &defAttrs->getAttDef(i); const XMLAttDef::DefAttTypes defType = attr->getDefaultType(); if ((defType == XMLAttDef::Default) || (defType == XMLAttDef::Fixed)) { // DOM Level 2 wants all namespace declaration attributes // to be bound to "http://www.w3.org/2000/xmlns/" // So as long as the XML parser doesn't do it, it needs to // done here. const XMLCh* qualifiedName = attr->getFullName(); XMLBufBid bbPrefixQName(&fBufMgr); XMLBuffer& prefixBuf = bbPrefixQName.getBuffer(); int colonPos = -1; unsigned int uriId = fScanner->resolveQName(qualifiedName, prefixBuf, ElemStack::Mode_Attribute, colonPos); const XMLCh* namespaceURI = 0; if (XMLString::equals(qualifiedName, XMLUni::fgXMLNSString)) uriId = fScanner->getXMLNSNamespaceId(); //TagName has a prefix if (uriId != fScanner->getEmptyNamespaceId()) namespaceURI = fScanner->getURIText(uriId); insertAttr = (DOMAttrImpl *) fDocument->createAttributeNS( namespaceURI, qualifiedName); DOMAttr* remAttr = elemImpl->setDefaultAttributeNodeNS(insertAttr); if (remAttr) remAttr->release(); if (attr->getValue() != 0) { insertAttr->setValue(attr->getValue()); insertAttr->setSpecified(false); } } insertAttr = 0; attr->reset(); } } fCurrentParent->appendChild(elem); fCurrentParent = elem; fCurrentNode = elem; fWithinElement = true; // If an empty element, do end right now (no endElement() will be called) if (isEmpty) endElement(elemDecl, urlId, isRoot, elemPrefix); } void XSDDOMParser::endElement( const XMLElementDecl& elemDecl , const unsigned int , const bool , const XMLCh* const) { if(fAnnotationDepth > -1) { if (fInnerAnnotationDepth == fDepth) { fInnerAnnotationDepth = -1; endAnnotationElement(elemDecl, false); } else if (fAnnotationDepth == fDepth) { fAnnotationDepth = -1; endAnnotationElement(elemDecl, true); } else { // inside a child of annotation endAnnotationElement(elemDecl, false); fDepth--; return; } } fDepth--; fCurrentNode = fCurrentParent; fCurrentParent = fCurrentNode->getParentNode (); // If we've hit the end of content, clear the flag. // if (fCurrentParent == fDocument) fWithinElement = false; } void XSDDOMParser::docCharacters( const XMLCh* const chars , const XMLSize_t length , const bool cdataSection) { // Ignore chars outside of content if (!fWithinElement) return; if (fInnerAnnotationDepth == -1) { if (!((ReaderMgr*) fScanner->getReaderMgr())->getCurrentReader()->isAllSpaces(chars, length)) { ReaderMgr::LastExtEntityInfo lastInfo; fScanner->getReaderMgr()->getLastExtEntityInfo(lastInfo); fXSLocator.setValues(lastInfo.systemId, lastInfo.publicId, lastInfo.lineNumber, lastInfo.colNumber); fXSDErrorReporter.emitError(XMLValid::NonWSContent, XMLUni::fgValidityDomain, &fXSLocator); } } // when it's within either of the 2 annotation subelements, characters are // allowed and we need to store them. else if (cdataSection == true) { fAnnotationBuf.append(XMLUni::fgCDataStart); fAnnotationBuf.append(chars, length); fAnnotationBuf.append(XMLUni::fgCDataEnd); } else { for(unsigned int i = 0; i < length; i++ ) { if(chars[i] == chAmpersand) { fAnnotationBuf.append(chAmpersand); fAnnotationBuf.append(XMLUni::fgAmp); fAnnotationBuf.append(chSemiColon); } else if (chars[i] == chOpenAngle) { fAnnotationBuf.append(chAmpersand); fAnnotationBuf.append(XMLUni::fgLT); fAnnotationBuf.append(chSemiColon); } else { fAnnotationBuf.append(chars[i]); } } } } void XSDDOMParser::docComment(const XMLCh* const comment) { if (fAnnotationDepth > -1) { fAnnotationBuf.append(XMLUni::fgCommentString); fAnnotationBuf.append(comment); fAnnotationBuf.append(chDash); fAnnotationBuf.append(chDash); fAnnotationBuf.append(chCloseAngle); } } void XSDDOMParser::startEntityReference(const XMLEntityDecl&) { } void XSDDOMParser::endEntityReference(const XMLEntityDecl&) { } void XSDDOMParser::ignorableWhitespace( const XMLCh* const chars , const XMLSize_t length , const bool) { // Ignore chars before the root element if (!fWithinElement || !fIncludeIgnorableWhitespace) return; if (fAnnotationDepth > -1) fAnnotationBuf.append(chars, length); } // --------------------------------------------------------------------------- // XSDDOMParser: Implementation of the XMLErrorReporter interface // --------------------------------------------------------------------------- void XSDDOMParser::error(const unsigned int code , const XMLCh* const msgDomain , const XMLErrorReporter::ErrTypes errType , const XMLCh* const errorText , const XMLCh* const systemId , const XMLCh* const publicId , const XMLFileLoc lineNum , const XMLFileLoc colNum) { if (errType >= XMLErrorReporter::ErrType_Fatal) fSawFatal = true; if (fUserErrorReporter) fUserErrorReporter->error(code, msgDomain, errType, errorText, systemId, publicId, lineNum, colNum); } InputSource* XSDDOMParser::resolveEntity(XMLResourceIdentifier* resourceIdentifier) { if (fUserEntityHandler) return fUserEntityHandler->resolveEntity(resourceIdentifier); return 0; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/validators/schema/XSDLocator.hpp0000644000175000017500000001033111031170654022565 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XSDLocator.hpp 672273 2008-06-27 13:57:00Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_XSDLOCATOR_HPP) #define XERCESC_INCLUDE_GUARD_XSDLOCATOR_HPP /** * A Locator implementation */ #include #include XERCES_CPP_NAMESPACE_BEGIN class VALIDATORS_EXPORT XSDLocator: public XMemory, public Locator { public: /** @name Constructors and Destructor */ //@{ /** Default constructor */ XSDLocator(); /** Destructor */ virtual ~XSDLocator() { } //@} /** @name The locator interface */ //@{ /** * Return the public identifier for the current document event. *

    This will be the public identifier * @return A string containing the public identifier, or * null if none is available. * @see #getSystemId */ virtual const XMLCh* getPublicId() const; /** * Return the system identifier for the current document event. * *

    If the system identifier is a URL, the parser must resolve it * fully before passing it to the application.

    * * @return A string containing the system identifier, or null * if none is available. * @see #getPublicId */ virtual const XMLCh* getSystemId() const; /** * Return the line number where the current document event ends. * Note that this is the line position of the first character * after the text associated with the document event. * @return The line number, or 0 if none is available. * @see #getColumnNumber */ virtual XMLFileLoc getLineNumber() const; /** * Return the column number where the current document event ends. * Note that this is the column number of the first * character after the text associated with the document * event. The first column in a line is position 1. * @return The column number, or 0 if none is available. * @see #getLineNumber */ virtual XMLFileLoc getColumnNumber() const; //@} // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- void setValues(const XMLCh* const systemId, const XMLCh* const publicId, const XMLFileLoc lineNo, const XMLFileLoc columnNo); private : // ----------------------------------------------------------------------- // Unimplemented constructors and destructor // ----------------------------------------------------------------------- XSDLocator(const XSDLocator&); XSDLocator& operator=(const XSDLocator&); // ----------------------------------------------------------------------- // Private data members // ----------------------------------------------------------------------- XMLFileLoc fLineNo; XMLFileLoc fColumnNo; const XMLCh* fSystemId; const XMLCh* fPublicId; }; // --------------------------------------------------------------------------- // XSDLocator: Getter methods // --------------------------------------------------------------------------- inline XMLFileLoc XSDLocator::getLineNumber() const { return fLineNo; } inline XMLFileLoc XSDLocator::getColumnNumber() const { return fColumnNo; } inline const XMLCh* XSDLocator::getPublicId() const { return fPublicId; } inline const XMLCh* XSDLocator::getSystemId() const { return fSystemId; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/validators/schema/SchemaAttDefList.cpp0000644000175000017500000001354211042062107023724 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SchemaAttDefList.cpp 679359 2008-07-24 11:15:19Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // SchemaAttDefList: Constructors and Destructor // --------------------------------------------------------------------------- SchemaAttDefList::SchemaAttDefList(RefHash2KeysTableOf* const listToUse, MemoryManager* const manager) : XMLAttDefList(manager) ,fEnum(0) ,fList(listToUse) ,fArray(0) ,fSize(0) ,fCount(0) { fEnum = new (getMemoryManager()) RefHash2KeysTableOfEnumerator(listToUse, false, getMemoryManager()); fArray = (SchemaAttDef **)((getMemoryManager())->allocate( sizeof(SchemaAttDef*) << 1)); fSize = 2; } SchemaAttDefList::~SchemaAttDefList() { delete fEnum; (getMemoryManager())->deallocate(fArray); } // --------------------------------------------------------------------------- // SchemaAttDefList: Implementation of the virtual interface // --------------------------------------------------------------------------- bool SchemaAttDefList::isEmpty() const { return fList->isEmpty(); } XMLAttDef* SchemaAttDefList::findAttDef(const unsigned int uriID , const XMLCh* const attName) { const int colonInd = XMLString::indexOf(attName, chColon); // An index of 0 is really an error, but the QName class doesn't check for // that case either... const XMLCh* const localPart = colonInd >= 0 ? attName + colonInd + 1 : attName; return fList->get((void*)localPart, uriID); } const XMLAttDef* SchemaAttDefList::findAttDef( const unsigned int uriID , const XMLCh* const attName) const { const int colonInd = XMLString::indexOf(attName, chColon); // An index of 0 is really an error, but the QName class doesn't check for // that case either... const XMLCh* const localPart = colonInd >= 0 ? attName + colonInd + 1 : attName; return fList->get((void*)localPart, uriID); } XMLAttDef* SchemaAttDefList::findAttDef( const XMLCh* const , const XMLCh* const) { //need numeric URI id to locate the attribute, that's how it was stored ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Pool_InvalidId, getMemoryManager()); return 0; } const XMLAttDef* SchemaAttDefList::findAttDef( const XMLCh* const , const XMLCh* const) const { //need numeric URI id to locate the attribute, that's how it was stored ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Pool_InvalidId, getMemoryManager()); return 0; } /** * return total number of attributes in this list */ XMLSize_t SchemaAttDefList::getAttDefCount() const { return fCount; } /** * return attribute at the index-th position in the list. */ XMLAttDef &SchemaAttDefList::getAttDef(XMLSize_t index) { if(index >= fCount) ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::AttrList_BadIndex, getMemoryManager()); return *(fArray[index]); } /** * return attribute at the index-th position in the list. */ const XMLAttDef &SchemaAttDefList::getAttDef(XMLSize_t index) const { if(index >= fCount) ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::AttrList_BadIndex, getMemoryManager()); return *(fArray[index]); } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(SchemaAttDefList) void SchemaAttDefList::serialize(XSerializeEngine& serEng) { XMLAttDefList::serialize(serEng); if (serEng.isStoring()) { /*** * * Serialize RefHash2KeysTableOf * ***/ XTemplateSerializer::storeObject(fList, serEng); serEng.writeSize (fCount); // do not serialize fEnum } else { /*** * * Deserialize RefHash2KeysTableOf * ***/ XTemplateSerializer::loadObject(&fList, 29, true, serEng); // assume empty so we can size fArray just right serEng.readSize (fSize); if (!fEnum && fList) { fEnum = new (getMemoryManager()) RefHash2KeysTableOfEnumerator(fList, false, getMemoryManager()); } if(fSize) { (getMemoryManager())->deallocate(fArray); fArray = (SchemaAttDef **)((getMemoryManager())->allocate( sizeof(SchemaAttDef*) * fSize)); fCount = 0; while(fEnum->hasMoreElements()) { fArray[fCount++] = &fEnum->nextElement(); } } } } SchemaAttDefList::SchemaAttDefList(MemoryManager* const manager) : XMLAttDefList(manager) ,fEnum(0) ,fList(0) ,fArray(0) ,fSize(0) ,fCount(0) { } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/validators/schema/SchemaElementDecl.cpp0000644000175000017500000002001710740675407024116 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SchemaElementDecl.cpp 609971 2008-01-08 13:30:47Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // SchemaElementDecl: Constructors and Destructor // --------------------------------------------------------------------------- SchemaElementDecl::SchemaElementDecl(MemoryManager* const manager) : XMLElementDecl(manager) , fModelType(Any) , fPSVIScope(PSVIDefs::SCP_ABSENT) , fEnclosingScope(Grammar::TOP_LEVEL_SCOPE) , fFinalSet(0) , fBlockSet(0) , fMiscFlags(0) , fDefaultValue(0) , fComplexTypeInfo(0) , fAttDefs(0) , fIdentityConstraints(0) , fAttWildCard(0) , fSubstitutionGroupElem(0) , fDatatypeValidator(0) { } SchemaElementDecl::SchemaElementDecl(const XMLCh* const prefix , const XMLCh* const localPart , const int uriId , const SchemaElementDecl::ModelTypes type , const unsigned int enclosingScope , MemoryManager* const manager) : XMLElementDecl(manager) , fModelType(type) , fPSVIScope(PSVIDefs::SCP_ABSENT) , fEnclosingScope(enclosingScope) , fFinalSet(0) , fBlockSet(0) , fMiscFlags(0) , fDefaultValue(0) , fComplexTypeInfo(0) , fAttDefs(0) , fIdentityConstraints(0) , fAttWildCard(0) , fSubstitutionGroupElem(0) , fDatatypeValidator(0) { setElementName(prefix, localPart, uriId); } SchemaElementDecl::SchemaElementDecl(const QName* const elementName , const SchemaElementDecl::ModelTypes type , const unsigned int enclosingScope , MemoryManager* const manager) : XMLElementDecl(manager) , fModelType(type) , fPSVIScope(PSVIDefs::SCP_ABSENT) , fEnclosingScope(enclosingScope) , fFinalSet(0) , fBlockSet(0) , fMiscFlags(0) , fDefaultValue(0) , fComplexTypeInfo(0) , fAttDefs(0) , fIdentityConstraints(0) , fAttWildCard(0) , fSubstitutionGroupElem(0) , fDatatypeValidator(0) { setElementName(elementName); } SchemaElementDecl::~SchemaElementDecl() { getMemoryManager()->deallocate(fDefaultValue);//delete [] fDefaultValue; delete fAttDefs; delete fIdentityConstraints; delete fAttWildCard; } // --------------------------------------------------------------------------- // SchemaElementDecl: XMLElementDecl virtual interface implementation // --------------------------------------------------------------------------- XMLAttDefList& SchemaElementDecl::getAttDefList() const { if (!fComplexTypeInfo) { ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::DV_InvalidOperation, getMemoryManager()); } return fComplexTypeInfo->getAttDefList(); } XMLElementDecl::CharDataOpts SchemaElementDecl::getCharDataOpts() const { SchemaElementDecl::ModelTypes modelType = fModelType; if (fComplexTypeInfo) { modelType = (SchemaElementDecl::ModelTypes) fComplexTypeInfo->getContentType(); } XMLElementDecl::CharDataOpts retVal; switch(modelType) { case Children : case ElementOnlyEmpty : retVal = XMLElementDecl::SpacesOk; break; case Empty : retVal = XMLElementDecl::NoCharData; break; default : retVal = XMLElementDecl::AllCharData; break; } return retVal; } bool SchemaElementDecl::hasAttDefs() const { if (fComplexTypeInfo) { return fComplexTypeInfo->hasAttDefs(); } // If the collection hasn't been faulted in, then no att defs return false; } const XMLCh* SchemaElementDecl::getFormattedContentModel() const { if (fComplexTypeInfo) { return fComplexTypeInfo->getFormattedContentModel(); } return 0; } // --------------------------------------------------------------------------- // SchemaElementDecl: Getter methods // --------------------------------------------------------------------------- const SchemaAttDef* SchemaElementDecl::getAttDef(const XMLCh* const baseName, const int uriId) const { if (fComplexTypeInfo) { return fComplexTypeInfo->getAttDef(baseName, uriId); } // If no complex type, then return a null return 0; } SchemaAttDef* SchemaElementDecl::getAttDef(const XMLCh* const baseName, const int uriId) { if (fComplexTypeInfo) { return fComplexTypeInfo->getAttDef(baseName, uriId); } // If no complex type, then return a null return 0; } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(SchemaElementDecl) void SchemaElementDecl::serialize(XSerializeEngine& serEng) { XMLElementDecl::serialize(serEng); if (serEng.isStoring()) { serEng<<(int)fModelType; serEng<<(int)fPSVIScope; serEng<* fAttDefs; ***/ XTemplateSerializer::storeObject(fAttDefs, serEng); /*** * Serialize RefVectorOf* fIdentityConstraints; ***/ XTemplateSerializer::storeObject(fIdentityConstraints, serEng); serEng<>i; fModelType = (ModelTypes)i; serEng>>i; fPSVIScope = (PSVIDefs::PSVIScope)i; serEng>>fEnclosingScope; serEng>>fFinalSet; serEng>>fBlockSet; serEng>>fMiscFlags; serEng.readString(fDefaultValue); serEng>>fComplexTypeInfo; /*** * DeSerialize RefHash2KeysTableOf* fAttDefs; ***/ XTemplateSerializer::loadObject(&fAttDefs, 29, true, serEng); /*** * DeSerialize RefVectorOf* fIdentityConstraints; ***/ XTemplateSerializer::loadObject(&fIdentityConstraints, 16, true, serEng); serEng>>fAttWildCard; serEng>>fSubstitutionGroupElem; fDatatypeValidator = DatatypeValidator::loadDV(serEng); } } XMLElementDecl::objectType SchemaElementDecl::getObjectType() const { return Schema; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/validators/schema/SchemaAttDef.cpp0000644000175000017500000001342011042062107023063 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SchemaAttDef.cpp 679359 2008-07-24 11:15:19Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // SchemaAttDef: Implementation of the XMLAttDef interface // --------------------------------------------------------------------------- const XMLCh* SchemaAttDef::getFullName() const { return fAttName->getRawName(); } // --------------------------------------------------------------------------- // SchemaAttDef: Constructors and Destructor // --------------------------------------------------------------------------- SchemaAttDef::SchemaAttDef(MemoryManager* const manager) : XMLAttDef(XMLAttDef::CData, XMLAttDef::Implied, manager) , fElemId(XMLElementDecl::fgInvalidElemId) , fPSVIScope(PSVIDefs::SCP_ABSENT) , fAttName(0) , fDatatypeValidator(0) , fNamespaceList(0) , fBaseAttDecl(0) { } SchemaAttDef::SchemaAttDef( const XMLCh* const prefix , const XMLCh* const localPart , const int uriId , const XMLAttDef::AttTypes type , const XMLAttDef::DefAttTypes defType , MemoryManager* const manager) : XMLAttDef(type, defType, manager) , fElemId(XMLElementDecl::fgInvalidElemId) , fPSVIScope(PSVIDefs::SCP_ABSENT) , fDatatypeValidator(0) , fNamespaceList(0) , fBaseAttDecl(0) { fAttName = new (manager) QName(prefix, localPart, uriId, manager); } SchemaAttDef::SchemaAttDef( const XMLCh* const prefix , const XMLCh* const localPart , const int uriId , const XMLCh* const attValue , const XMLAttDef::AttTypes type , const XMLAttDef::DefAttTypes defType , const XMLCh* const enumValues , MemoryManager* const manager) : XMLAttDef(attValue, type, defType, enumValues, manager) , fElemId(XMLElementDecl::fgInvalidElemId) , fPSVIScope(PSVIDefs::SCP_ABSENT) , fDatatypeValidator(0) , fNamespaceList(0) , fBaseAttDecl(0) { fAttName = new (manager) QName(prefix, localPart, uriId, manager); } SchemaAttDef::SchemaAttDef(const SchemaAttDef* other) : XMLAttDef(other->getValue(), other->getType(), other->getDefaultType(), other->getEnumeration(), other->getMemoryManager()) , fElemId(XMLElementDecl::fgInvalidElemId) , fPSVIScope(other->fPSVIScope) , fAttName(0) , fDatatypeValidator(other->fDatatypeValidator) , fNamespaceList(0) , fBaseAttDecl(other->fBaseAttDecl) { QName* otherName = other->getAttName(); fAttName = new (getMemoryManager()) QName(otherName->getPrefix(), otherName->getLocalPart(), otherName->getURI(), getMemoryManager()); if (other->fNamespaceList && other->fNamespaceList->size()) { fNamespaceList = new (getMemoryManager()) ValueVectorOf(*(other->fNamespaceList)); } } SchemaAttDef::~SchemaAttDef() { delete fAttName; delete fNamespaceList; } // --------------------------------------------------------------------------- // SchemaAttDef: Setter methods // --------------------------------------------------------------------------- void SchemaAttDef::setAttName(const XMLCh* const prefix , const XMLCh* const localPart , const int uriId ) { fAttName->setName(prefix, localPart, uriId); } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(SchemaAttDef) void SchemaAttDef::serialize(XSerializeEngine& serEng) { XMLAttDef::serialize(serEng); if (serEng.isStoring()) { serEng.writeSize (fElemId); serEng<<(int)fPSVIScope; serEng< ***/ XTemplateSerializer::storeObject(fNamespaceList, serEng); serEng<>i; fPSVIScope = (PSVIDefs::PSVIScope)i; serEng>>fAttName; fDatatypeValidator = DatatypeValidator::loadDV(serEng); /*** * Deserialize ValueVectorOf ***/ XTemplateSerializer::loadObject(&fNamespaceList, 8, false, serEng); serEng>>fBaseAttDecl; } } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/validators/schema/SchemaSymbols.cpp0000644000175000017500000007060111240026374023356 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SchemaSymbols.cpp 802804 2009-08-10 14:21:48Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // SchemaSymbols: Static data // --------------------------------------------------------------------------- const XMLCh SchemaSymbols::fgURI_XSI[] = { chLatin_h, chLatin_t, chLatin_t, chLatin_p, chColon, chForwardSlash, chForwardSlash, chLatin_w, chLatin_w, chLatin_w, chPeriod, chLatin_w, chDigit_3, chPeriod, chLatin_o, chLatin_r, chLatin_g, chForwardSlash, chDigit_2, chDigit_0, chDigit_0, chDigit_1, chForwardSlash, chLatin_X, chLatin_M, chLatin_L, chLatin_S, chLatin_c, chLatin_h, chLatin_e, chLatin_m, chLatin_a, chDash, chLatin_i, chLatin_n, chLatin_s, chLatin_t, chLatin_a, chLatin_n, chLatin_c, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgURI_SCHEMAFORSCHEMA[] = { chLatin_h, chLatin_t, chLatin_t, chLatin_p, chColon, chForwardSlash, chForwardSlash, chLatin_w, chLatin_w, chLatin_w, chPeriod, chLatin_w, chDigit_3, chPeriod, chLatin_o, chLatin_r, chLatin_g, chForwardSlash, chDigit_2, chDigit_0, chDigit_0, chDigit_1, chForwardSlash, chLatin_X, chLatin_M, chLatin_L, chLatin_S, chLatin_c, chLatin_h, chLatin_e, chLatin_m, chLatin_a, chNull }; // deprecated (typo) const XMLCh SchemaSymbols::fgXSI_SCHEMALOCACTION[] = { chLatin_s, chLatin_c, chLatin_h, chLatin_e, chLatin_m, chLatin_a, chLatin_L, chLatin_o, chLatin_c, chLatin_a, chLatin_t, chLatin_i, chLatin_o, chLatin_n, chNull }; // deprecated (typo) const XMLCh SchemaSymbols::fgXSI_NONAMESPACESCHEMALOCACTION[] = { chLatin_n, chLatin_o, chLatin_N, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chLatin_p, chLatin_a, chLatin_c, chLatin_e, chLatin_S, chLatin_c, chLatin_h, chLatin_e, chLatin_m, chLatin_a, chLatin_L, chLatin_o, chLatin_c, chLatin_a, chLatin_t, chLatin_i, chLatin_o, chLatin_n, chNull }; const XMLCh SchemaSymbols::fgXSI_SCHEMALOCATION[] = { chLatin_s, chLatin_c, chLatin_h, chLatin_e, chLatin_m, chLatin_a, chLatin_L, chLatin_o, chLatin_c, chLatin_a, chLatin_t, chLatin_i, chLatin_o, chLatin_n, chNull }; const XMLCh SchemaSymbols::fgXSI_NONAMESPACESCHEMALOCATION[] = { chLatin_n, chLatin_o, chLatin_N, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chLatin_p, chLatin_a, chLatin_c, chLatin_e, chLatin_S, chLatin_c, chLatin_h, chLatin_e, chLatin_m, chLatin_a, chLatin_L, chLatin_o, chLatin_c, chLatin_a, chLatin_t, chLatin_i, chLatin_o, chLatin_n, chNull }; const XMLCh SchemaSymbols::fgXSI_TYPE[] = { chLatin_t, chLatin_y, chLatin_p, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgELT_ALL[] = { chLatin_a, chLatin_l, chLatin_l, chNull }; const XMLCh SchemaSymbols::fgELT_ANNOTATION[] = { chLatin_a, chLatin_n, chLatin_n, chLatin_o, chLatin_t, chLatin_a, chLatin_t, chLatin_i, chLatin_o, chLatin_n, chNull }; const XMLCh SchemaSymbols::fgELT_ANY[] = { chLatin_a, chLatin_n, chLatin_y, chNull }; const XMLCh SchemaSymbols::fgELT_WILDCARD[] = { chLatin_a, chLatin_n, chLatin_y, chNull }; const XMLCh SchemaSymbols::fgELT_ANYATTRIBUTE[] = { chLatin_a, chLatin_n, chLatin_y, chLatin_A, chLatin_t, chLatin_t, chLatin_r, chLatin_i, chLatin_b, chLatin_u, chLatin_t, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgELT_APPINFO[] = { chLatin_a, chLatin_p, chLatin_p, chLatin_i, chLatin_n, chLatin_f, chLatin_o, chNull }; const XMLCh SchemaSymbols::fgELT_ATTRIBUTE[] = { chLatin_a, chLatin_t, chLatin_t, chLatin_r, chLatin_i, chLatin_b, chLatin_u, chLatin_t, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgELT_ATTRIBUTEGROUP[] = { chLatin_a, chLatin_t, chLatin_t, chLatin_r, chLatin_i, chLatin_b, chLatin_u, chLatin_t, chLatin_e, chLatin_G, chLatin_r, chLatin_o, chLatin_u, chLatin_p, chNull }; const XMLCh SchemaSymbols::fgELT_CHOICE[] = { chLatin_c, chLatin_h, chLatin_o, chLatin_i, chLatin_c, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgELT_COMPLEXTYPE[] = { chLatin_c, chLatin_o, chLatin_m, chLatin_p, chLatin_l, chLatin_e, chLatin_x, chLatin_T, chLatin_y, chLatin_p, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgELT_CONTENT[] = { chLatin_c, chLatin_o, chLatin_n, chLatin_t, chLatin_e, chLatin_n, chLatin_t, chNull }; const XMLCh SchemaSymbols::fgELT_DOCUMENTATION[] = { chLatin_d, chLatin_o, chLatin_c, chLatin_u, chLatin_m, chLatin_e, chLatin_n, chLatin_t, chLatin_a, chLatin_t, chLatin_i, chLatin_o, chLatin_n, chNull }; const XMLCh SchemaSymbols::fgELT_DURATION[] = { chLatin_d, chLatin_u, chLatin_r, chLatin_a, chLatin_t, chLatin_i, chLatin_o, chLatin_n, chNull }; const XMLCh SchemaSymbols::fgELT_ELEMENT[] = { chLatin_e, chLatin_l, chLatin_e, chLatin_m, chLatin_e, chLatin_n, chLatin_t, chNull }; const XMLCh SchemaSymbols::fgELT_ENCODING[] = { chLatin_e, chLatin_n, chLatin_c, chLatin_o, chLatin_d, chLatin_i, chLatin_n, chLatin_g, chNull }; const XMLCh SchemaSymbols::fgELT_ENUMERATION[] = { chLatin_e, chLatin_n, chLatin_u, chLatin_m, chLatin_e, chLatin_r, chLatin_a, chLatin_t, chLatin_i, chLatin_o, chLatin_n, chNull }; const XMLCh SchemaSymbols::fgELT_FIELD[] = { chLatin_f, chLatin_i, chLatin_e, chLatin_l, chLatin_d, chNull }; const XMLCh SchemaSymbols::fgELT_WHITESPACE[] = { chLatin_w, chLatin_h, chLatin_i, chLatin_t, chLatin_e, chLatin_S, chLatin_p, chLatin_a, chLatin_c, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgELT_GROUP[] = { chLatin_g, chLatin_r, chLatin_o, chLatin_u, chLatin_p, chNull }; const XMLCh SchemaSymbols::fgELT_IMPORT[] = { chLatin_i, chLatin_m, chLatin_p, chLatin_o, chLatin_r, chLatin_t, chNull }; const XMLCh SchemaSymbols::fgELT_INCLUDE[] = { chLatin_i, chLatin_n, chLatin_c, chLatin_l, chLatin_u, chLatin_d, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgELT_REDEFINE[] = { chLatin_r, chLatin_e, chLatin_d, chLatin_e, chLatin_f, chLatin_i, chLatin_n, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgELT_KEY[] = { chLatin_k, chLatin_e, chLatin_y, chNull }; const XMLCh SchemaSymbols::fgELT_KEYREF[] = { chLatin_k, chLatin_e, chLatin_y, chLatin_r, chLatin_e, chLatin_f, chNull }; const XMLCh SchemaSymbols::fgELT_LENGTH[] = { chLatin_l, chLatin_e, chLatin_n, chLatin_g, chLatin_t, chLatin_h, chNull }; const XMLCh SchemaSymbols::fgELT_MAXEXCLUSIVE[] = { chLatin_m, chLatin_a, chLatin_x, chLatin_E, chLatin_x, chLatin_c, chLatin_l, chLatin_u, chLatin_s, chLatin_i, chLatin_v, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgELT_MAXINCLUSIVE[] = { chLatin_m, chLatin_a, chLatin_x, chLatin_I, chLatin_n, chLatin_c, chLatin_l, chLatin_u, chLatin_s, chLatin_i, chLatin_v, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgELT_MAXLENGTH[] = { chLatin_m, chLatin_a, chLatin_x, chLatin_L, chLatin_e, chLatin_n, chLatin_g, chLatin_t, chLatin_h, chNull }; const XMLCh SchemaSymbols::fgELT_MINEXCLUSIVE[] = { chLatin_m, chLatin_i, chLatin_n, chLatin_E, chLatin_x, chLatin_c, chLatin_l, chLatin_u, chLatin_s, chLatin_i, chLatin_v, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgELT_MININCLUSIVE[] = { chLatin_m, chLatin_i, chLatin_n, chLatin_I, chLatin_n, chLatin_c, chLatin_l, chLatin_u, chLatin_s, chLatin_i, chLatin_v, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgELT_MINLENGTH[] = { chLatin_m, chLatin_i, chLatin_n, chLatin_L, chLatin_e, chLatin_n, chLatin_g, chLatin_t, chLatin_h, chNull }; const XMLCh SchemaSymbols::fgELT_NOTATION[] = { chLatin_n, chLatin_o, chLatin_t, chLatin_a, chLatin_t, chLatin_i, chLatin_o, chLatin_n, chNull }; const XMLCh SchemaSymbols::fgELT_PATTERN[] = { chLatin_p, chLatin_a, chLatin_t, chLatin_t, chLatin_e, chLatin_r, chLatin_n, chNull }; const XMLCh SchemaSymbols::fgELT_PERIOD[] = { chLatin_p, chLatin_e, chLatin_r, chLatin_i, chLatin_o, chLatin_d, chNull }; const XMLCh SchemaSymbols::fgELT_TOTALDIGITS[] = { chLatin_t, chLatin_o, chLatin_t, chLatin_a, chLatin_l, chLatin_D, chLatin_i, chLatin_g, chLatin_i, chLatin_t, chLatin_s, chNull }; const XMLCh SchemaSymbols::fgELT_FRACTIONDIGITS[] = { chLatin_f, chLatin_r, chLatin_a, chLatin_c, chLatin_t, chLatin_i, chLatin_o, chLatin_n, chLatin_D, chLatin_i, chLatin_g, chLatin_i, chLatin_t, chLatin_s, chNull }; const XMLCh SchemaSymbols::fgELT_SCHEMA[] = { chLatin_s, chLatin_c, chLatin_h, chLatin_e, chLatin_m, chLatin_a, chNull }; const XMLCh SchemaSymbols::fgELT_SELECTOR[] = { chLatin_s, chLatin_e, chLatin_l, chLatin_e, chLatin_c, chLatin_t, chLatin_o, chLatin_r, chNull }; const XMLCh SchemaSymbols::fgELT_SEQUENCE[] = { chLatin_s, chLatin_e, chLatin_q, chLatin_u, chLatin_e, chLatin_n, chLatin_c, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgELT_SIMPLETYPE[] = { chLatin_s, chLatin_i, chLatin_m, chLatin_p, chLatin_l, chLatin_e, chLatin_T, chLatin_y, chLatin_p, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgELT_UNION[] = { chLatin_u, chLatin_n, chLatin_i, chLatin_o, chLatin_n, chNull }; const XMLCh SchemaSymbols::fgELT_LIST[] = { chLatin_l, chLatin_i, chLatin_s, chLatin_t, chNull }; const XMLCh SchemaSymbols::fgELT_UNIQUE[] = { chLatin_u, chLatin_n, chLatin_i, chLatin_q, chLatin_u, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgELT_COMPLEXCONTENT[] = { chLatin_c, chLatin_o, chLatin_m, chLatin_p, chLatin_l, chLatin_e, chLatin_x, chLatin_C, chLatin_o, chLatin_n, chLatin_t, chLatin_e, chLatin_n, chLatin_t, chNull }; const XMLCh SchemaSymbols::fgELT_SIMPLECONTENT[] = { chLatin_s, chLatin_i, chLatin_m, chLatin_p, chLatin_l, chLatin_e, chLatin_C, chLatin_o, chLatin_n, chLatin_t, chLatin_e, chLatin_n, chLatin_t, chNull }; const XMLCh SchemaSymbols::fgELT_RESTRICTION[] = { chLatin_r, chLatin_e, chLatin_s, chLatin_t, chLatin_r, chLatin_i, chLatin_c, chLatin_t, chLatin_i, chLatin_o, chLatin_n, chNull }; const XMLCh SchemaSymbols::fgELT_EXTENSION[] = { chLatin_e, chLatin_x, chLatin_t, chLatin_e, chLatin_n, chLatin_s, chLatin_i, chLatin_o, chLatin_n, chNull }; const XMLCh SchemaSymbols::fgATT_ABSTRACT[] = { chLatin_a, chLatin_b, chLatin_s, chLatin_t, chLatin_r, chLatin_a, chLatin_c, chLatin_t, chNull }; const XMLCh SchemaSymbols::fgATT_ATTRIBUTEFORMDEFAULT[] = { chLatin_a, chLatin_t, chLatin_t, chLatin_r, chLatin_i, chLatin_b, chLatin_u, chLatin_t, chLatin_e, chLatin_F, chLatin_o, chLatin_r, chLatin_m, chLatin_D, chLatin_e, chLatin_f, chLatin_a, chLatin_u, chLatin_l, chLatin_t, chNull }; const XMLCh SchemaSymbols::fgATT_BASE[] = { chLatin_b, chLatin_a, chLatin_s, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgATT_ITEMTYPE[] = { chLatin_i, chLatin_t, chLatin_e, chLatin_m, chLatin_T, chLatin_y, chLatin_p, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgATT_MEMBERTYPES[] = { chLatin_m, chLatin_e, chLatin_m, chLatin_b, chLatin_e, chLatin_r, chLatin_T, chLatin_y, chLatin_p, chLatin_e, chLatin_s, chNull }; const XMLCh SchemaSymbols::fgATT_BLOCK[] = { chLatin_b, chLatin_l, chLatin_o, chLatin_c, chLatin_k, chNull }; const XMLCh SchemaSymbols::fgATT_BLOCKDEFAULT[] = { chLatin_b, chLatin_l, chLatin_o, chLatin_c, chLatin_k, chLatin_D, chLatin_e, chLatin_f, chLatin_a, chLatin_u, chLatin_l, chLatin_t, chNull }; const XMLCh SchemaSymbols::fgATT_DEFAULT[] = { chLatin_d, chLatin_e, chLatin_f, chLatin_a, chLatin_u, chLatin_l, chLatin_t, chNull }; const XMLCh SchemaSymbols::fgATT_ELEMENTFORMDEFAULT[] = { chLatin_e, chLatin_l, chLatin_e, chLatin_m, chLatin_e, chLatin_n, chLatin_t, chLatin_F, chLatin_o, chLatin_r, chLatin_m, chLatin_D, chLatin_e, chLatin_f, chLatin_a, chLatin_u, chLatin_l, chLatin_t, chNull }; const XMLCh SchemaSymbols::fgATT_SUBSTITUTIONGROUP[] = { chLatin_s, chLatin_u, chLatin_b, chLatin_s, chLatin_t, chLatin_i, chLatin_t, chLatin_u, chLatin_t, chLatin_i, chLatin_o, chLatin_n, chLatin_G, chLatin_r, chLatin_o, chLatin_u, chLatin_p, chNull }; const XMLCh SchemaSymbols::fgATT_FINAL[] = { chLatin_f, chLatin_i, chLatin_n, chLatin_a, chLatin_l, chNull }; const XMLCh SchemaSymbols::fgATT_FINALDEFAULT[] = { chLatin_f, chLatin_i, chLatin_n, chLatin_a, chLatin_l, chLatin_D, chLatin_e, chLatin_f, chLatin_a, chLatin_u, chLatin_l, chLatin_t, chNull }; const XMLCh SchemaSymbols::fgATT_FIXED[] = { chLatin_f, chLatin_i, chLatin_x, chLatin_e, chLatin_d, chNull }; const XMLCh SchemaSymbols::fgATT_FORM[] = { chLatin_f, chLatin_o, chLatin_r, chLatin_m, chNull }; const XMLCh SchemaSymbols::fgATT_ID[] = { chLatin_i, chLatin_d, chNull }; const XMLCh SchemaSymbols::fgATT_MAXOCCURS[] = { chLatin_m, chLatin_a, chLatin_x, chLatin_O, chLatin_c, chLatin_c, chLatin_u, chLatin_r, chLatin_s, chNull }; const XMLCh SchemaSymbols::fgATT_MINOCCURS[] = { chLatin_m, chLatin_i, chLatin_n, chLatin_O, chLatin_c, chLatin_c, chLatin_u, chLatin_r, chLatin_s, chNull }; const XMLCh SchemaSymbols::fgATT_NAME[] = { chLatin_n, chLatin_a, chLatin_m, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgATT_NAMESPACE[] = { chLatin_n, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chLatin_p, chLatin_a, chLatin_c, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgATT_NILL[] = { chLatin_n, chLatin_i, chLatin_l, chNull }; const XMLCh SchemaSymbols::fgATT_NILLABLE[] = { chLatin_n, chLatin_i, chLatin_l, chLatin_l, chLatin_a, chLatin_b, chLatin_l, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgATT_PROCESSCONTENTS[] = { chLatin_p, chLatin_r, chLatin_o, chLatin_c, chLatin_e, chLatin_s, chLatin_s, chLatin_C, chLatin_o, chLatin_n, chLatin_t, chLatin_e, chLatin_n, chLatin_t, chLatin_s, chNull }; const XMLCh SchemaSymbols::fgATT_REF[] = { chLatin_r, chLatin_e, chLatin_f, chNull }; const XMLCh SchemaSymbols::fgATT_REFER[] = { chLatin_r, chLatin_e, chLatin_f, chLatin_e, chLatin_r, chNull }; const XMLCh SchemaSymbols::fgATT_SCHEMALOCATION[] = { chLatin_s, chLatin_c, chLatin_h, chLatin_e, chLatin_m, chLatin_a, chLatin_L, chLatin_o, chLatin_c, chLatin_a, chLatin_t, chLatin_i, chLatin_o, chLatin_n, chNull }; const XMLCh SchemaSymbols::fgATT_SOURCE[] = { chLatin_s, chLatin_o, chLatin_u, chLatin_r, chLatin_c, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgATT_SYSTEM[] = { chLatin_s, chLatin_y, chLatin_s, chLatin_t, chLatin_e, chLatin_m, chNull }; const XMLCh SchemaSymbols::fgATT_PUBLIC[] = { chLatin_p, chLatin_u, chLatin_b, chLatin_l, chLatin_i, chLatin_c, chNull }; const XMLCh SchemaSymbols::fgATT_TARGETNAMESPACE[] = { chLatin_t, chLatin_a, chLatin_r, chLatin_g, chLatin_e, chLatin_t, chLatin_N, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chLatin_p, chLatin_a, chLatin_c, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgATT_TYPE[] = { chLatin_t, chLatin_y, chLatin_p, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgATT_USE[] = { chLatin_u, chLatin_s, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgATT_VALUE[] = { chLatin_v, chLatin_a, chLatin_l, chLatin_u, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgATT_MIXED[] = { chLatin_m, chLatin_i, chLatin_x, chLatin_e, chLatin_d, chNull }; const XMLCh SchemaSymbols::fgATT_VERSION[] = { chLatin_v, chLatin_e, chLatin_r, chLatin_s, chLatin_i, chLatin_o, chLatin_n, chNull }; const XMLCh SchemaSymbols::fgATT_XPATH[] = { chLatin_x, chLatin_p, chLatin_a, chLatin_t, chLatin_h, chNull }; const XMLCh SchemaSymbols::fgATTVAL_TWOPOUNDANY[] = { chPound, chPound, chLatin_a, chLatin_n, chLatin_y, chNull }; const XMLCh SchemaSymbols::fgATTVAL_TWOPOUNDLOCAL[] = { chPound, chPound, chLatin_l, chLatin_o, chLatin_c, chLatin_a, chLatin_l, chNull }; const XMLCh SchemaSymbols::fgATTVAL_TWOPOUNDOTHER[] = { chPound, chPound, chLatin_o, chLatin_t, chLatin_h, chLatin_e, chLatin_r, chNull }; const XMLCh SchemaSymbols::fgATTVAL_TWOPOUNDTRAGETNAMESPACE[] = { chPound, chPound, chLatin_t, chLatin_a, chLatin_r, chLatin_g, chLatin_e, chLatin_t, chLatin_N, chLatin_a, chLatin_m, chLatin_e, chLatin_s, chLatin_p, chLatin_a, chLatin_c, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgATTVAL_POUNDALL[] = { chPound, chLatin_a, chLatin_l, chLatin_l, chNull }; const XMLCh SchemaSymbols::fgATTVAL_BASE64[] = { chLatin_b, chLatin_a, chLatin_s, chLatin_e, chDigit_6, chDigit_4, chNull }; const XMLCh SchemaSymbols::fgATTVAL_BOOLEAN[] = { chLatin_b, chLatin_o, chLatin_o, chLatin_l, chLatin_e, chLatin_a, chLatin_n, chNull }; const XMLCh SchemaSymbols::fgATTVAL_DEFAULT[] = { chLatin_d, chLatin_e, chLatin_f, chLatin_a, chLatin_u, chLatin_l, chLatin_t, chNull }; const XMLCh SchemaSymbols::fgATTVAL_ELEMENTONLY[] = { chLatin_e, chLatin_l, chLatin_e, chLatin_m, chLatin_e, chLatin_n, chLatin_t, chLatin_O, chLatin_n, chLatin_l, chLatin_y, chNull }; const XMLCh SchemaSymbols::fgATTVAL_EMPTY[] = { chLatin_e, chLatin_m, chLatin_p, chLatin_t, chLatin_y, chNull }; const XMLCh SchemaSymbols::fgATTVAL_EXTENSION[] = { chLatin_e, chLatin_x, chLatin_t, chLatin_e, chLatin_n, chLatin_s, chLatin_i, chLatin_o, chLatin_n, chNull }; const XMLCh SchemaSymbols::fgATTVAL_FALSE[] = { chLatin_f, chLatin_a, chLatin_l, chLatin_s, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgATTVAL_FIXED[] = { chLatin_f, chLatin_i, chLatin_x, chLatin_e, chLatin_d, chNull }; const XMLCh SchemaSymbols::fgATTVAL_HEX[] = { chLatin_h, chLatin_e, chLatin_x, chNull }; const XMLCh SchemaSymbols::fgATTVAL_ID[] = { chLatin_I, chLatin_D, chNull }; const XMLCh SchemaSymbols::fgATTVAL_LAX[] = { chLatin_l, chLatin_a, chLatin_x, chNull }; const XMLCh SchemaSymbols::fgATTVAL_MAXLENGTH[] = { chLatin_m, chLatin_a, chLatin_x, chLatin_L, chLatin_e, chLatin_n, chLatin_g, chLatin_t, chLatin_h, chNull }; const XMLCh SchemaSymbols::fgATTVAL_MINLENGTH[] = { chLatin_m, chLatin_i, chLatin_n, chLatin_L, chLatin_e, chLatin_n, chLatin_g, chLatin_t, chLatin_h, chNull }; const XMLCh SchemaSymbols::fgATTVAL_MIXED[] = { chLatin_m, chLatin_i, chLatin_x, chLatin_e, chLatin_d, chNull }; const XMLCh SchemaSymbols::fgATTVAL_NCNAME[] = { chLatin_N, chLatin_C, chLatin_N, chLatin_a, chLatin_m, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgATTVAL_OPTIONAL[] = { chLatin_o, chLatin_p, chLatin_t, chLatin_i, chLatin_o, chLatin_n, chLatin_a, chLatin_l, chNull }; const XMLCh SchemaSymbols::fgATTVAL_PROHIBITED[] = { chLatin_p, chLatin_r, chLatin_o, chLatin_h, chLatin_i, chLatin_b, chLatin_i, chLatin_t, chLatin_e, chLatin_d, chNull }; const XMLCh SchemaSymbols::fgATTVAL_QNAME[] = { chLatin_Q, chLatin_N, chLatin_a, chLatin_m, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgATTVAL_QUALIFIED[] = { chLatin_q, chLatin_u, chLatin_a, chLatin_l, chLatin_i, chLatin_f, chLatin_i, chLatin_e, chLatin_d, chNull }; const XMLCh SchemaSymbols::fgATTVAL_REQUIRED[] = { chLatin_r, chLatin_e, chLatin_q, chLatin_u, chLatin_i, chLatin_r, chLatin_e, chLatin_d, chNull }; const XMLCh SchemaSymbols::fgATTVAL_RESTRICTION[] = { chLatin_r, chLatin_e, chLatin_s, chLatin_t, chLatin_r, chLatin_i, chLatin_c, chLatin_t, chLatin_i, chLatin_o, chLatin_n, chNull }; const XMLCh SchemaSymbols::fgATTVAL_SKIP[] = { chLatin_s, chLatin_k, chLatin_i, chLatin_p, chNull }; const XMLCh SchemaSymbols::fgATTVAL_STRICT[] = { chLatin_s, chLatin_t, chLatin_r, chLatin_i, chLatin_c, chLatin_t, chNull }; const XMLCh SchemaSymbols::fgATTVAL_STRING[] = { chLatin_s, chLatin_t, chLatin_r, chLatin_i, chLatin_n, chLatin_g, chNull }; const XMLCh SchemaSymbols::fgATTVAL_TEXTONLY[] = { chLatin_t, chLatin_e, chLatin_x, chLatin_t, chLatin_O, chLatin_n, chLatin_l, chLatin_y, chNull }; const XMLCh SchemaSymbols::fgATTVAL_TIMEDURATION[] = { chLatin_t, chLatin_i, chLatin_m, chLatin_e, chLatin_D, chLatin_u, chLatin_r, chLatin_a, chLatin_t, chLatin_i, chLatin_o, chLatin_n, chNull }; const XMLCh SchemaSymbols::fgATTVAL_TRUE[] = { chLatin_t, chLatin_r, chLatin_u, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgATTVAL_UNQUALIFIED[] = { chLatin_u, chLatin_n, chLatin_q, chLatin_u, chLatin_a, chLatin_l, chLatin_i, chLatin_f, chLatin_i, chLatin_e, chLatin_d, chNull }; const XMLCh SchemaSymbols::fgATTVAL_URI[] = { chLatin_u, chLatin_r, chLatin_i, chNull }; const XMLCh SchemaSymbols::fgATTVAL_URIREFERENCE[] = { chLatin_u, chLatin_r, chLatin_i, chLatin_R, chLatin_e, chLatin_f, chLatin_e, chLatin_r, chLatin_e, chLatin_n, chLatin_c, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgATTVAL_SUBSTITUTIONGROUP[] = { chLatin_s, chLatin_u, chLatin_b, chLatin_s, chLatin_t, chLatin_i, chLatin_t, chLatin_u, chLatin_t, chLatin_i, chLatin_o, chLatin_n, chLatin_G, chLatin_r, chLatin_o, chLatin_u, chLatin_p, chNull }; const XMLCh SchemaSymbols::fgATTVAL_SUBSTITUTION[] = { chLatin_s, chLatin_u, chLatin_b, chLatin_s, chLatin_t, chLatin_i, chLatin_t, chLatin_u, chLatin_t, chLatin_i, chLatin_o, chLatin_n, chNull }; const XMLCh SchemaSymbols::fgATTVAL_ANYTYPE[] = { chLatin_a, chLatin_n, chLatin_y, chLatin_T, chLatin_y, chLatin_p, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgWS_PRESERVE[] = { chLatin_p, chLatin_r, chLatin_e, chLatin_s, chLatin_e, chLatin_r, chLatin_v, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgWS_COLLAPSE[] = { chLatin_c, chLatin_o, chLatin_l, chLatin_l, chLatin_a, chLatin_p, chLatin_s, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgWS_REPLACE[] = { chLatin_r, chLatin_e, chLatin_p, chLatin_l, chLatin_a, chLatin_c, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgDT_STRING[] = { chLatin_s, chLatin_t, chLatin_r, chLatin_i, chLatin_n, chLatin_g, chNull }; const XMLCh SchemaSymbols::fgDT_TOKEN[] = { chLatin_t, chLatin_o, chLatin_k, chLatin_e, chLatin_n, chNull }; const XMLCh SchemaSymbols::fgDT_LANGUAGE[] = { chLatin_l, chLatin_a, chLatin_n, chLatin_g, chLatin_u, chLatin_a, chLatin_g, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgDT_NAME[] = { chLatin_N, chLatin_a, chLatin_m, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgDT_NCNAME[] = { chLatin_N, chLatin_C, chLatin_N, chLatin_a, chLatin_m, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgDT_INTEGER[] = { chLatin_i, chLatin_n, chLatin_t, chLatin_e, chLatin_g, chLatin_e, chLatin_r, chNull }; const XMLCh SchemaSymbols::fgDT_DECIMAL[] = { chLatin_d, chLatin_e, chLatin_c, chLatin_i, chLatin_m, chLatin_a, chLatin_l, chNull }; const XMLCh SchemaSymbols::fgDT_BOOLEAN[] = { chLatin_b, chLatin_o, chLatin_o, chLatin_l, chLatin_e, chLatin_a, chLatin_n, chNull }; const XMLCh SchemaSymbols::fgDT_NONPOSITIVEINTEGER[] = { chLatin_n, chLatin_o, chLatin_n, chLatin_P, chLatin_o, chLatin_s, chLatin_i, chLatin_t, chLatin_i, chLatin_v, chLatin_e, chLatin_I, chLatin_n, chLatin_t, chLatin_e, chLatin_g, chLatin_e, chLatin_r, chNull }; const XMLCh SchemaSymbols::fgDT_NEGATIVEINTEGER[] = { chLatin_n, chLatin_e, chLatin_g, chLatin_a, chLatin_t, chLatin_i, chLatin_v, chLatin_e, chLatin_I, chLatin_n, chLatin_t, chLatin_e, chLatin_g, chLatin_e, chLatin_r, chNull }; const XMLCh SchemaSymbols::fgDT_LONG[] = { chLatin_l, chLatin_o, chLatin_n, chLatin_g, chNull }; const XMLCh SchemaSymbols::fgDT_INT[] = { chLatin_i, chLatin_n, chLatin_t, chNull }; const XMLCh SchemaSymbols::fgDT_SHORT[] = { chLatin_s, chLatin_h, chLatin_o, chLatin_r, chLatin_t, chNull }; const XMLCh SchemaSymbols::fgDT_BYTE[] = { chLatin_b, chLatin_y, chLatin_t, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgDT_NONNEGATIVEINTEGER[] = { chLatin_n, chLatin_o, chLatin_n, chLatin_N, chLatin_e, chLatin_g, chLatin_a, chLatin_t, chLatin_i, chLatin_v, chLatin_e, chLatin_I, chLatin_n, chLatin_t, chLatin_e, chLatin_g, chLatin_e, chLatin_r, chNull }; const XMLCh SchemaSymbols::fgDT_ULONG[] = { chLatin_u, chLatin_n, chLatin_s, chLatin_i, chLatin_g, chLatin_n, chLatin_e, chLatin_d, chLatin_L, chLatin_o, chLatin_n, chLatin_g, chNull }; const XMLCh SchemaSymbols::fgDT_UINT[] = { chLatin_u, chLatin_n, chLatin_s, chLatin_i, chLatin_g, chLatin_n, chLatin_e, chLatin_d, chLatin_I, chLatin_n, chLatin_t, chNull }; const XMLCh SchemaSymbols::fgDT_USHORT[] = { chLatin_u, chLatin_n, chLatin_s, chLatin_i, chLatin_g, chLatin_n, chLatin_e, chLatin_d, chLatin_S, chLatin_h, chLatin_o, chLatin_r, chLatin_t, chNull }; const XMLCh SchemaSymbols::fgDT_UBYTE[] = { chLatin_u, chLatin_n, chLatin_s, chLatin_i, chLatin_g, chLatin_n, chLatin_e, chLatin_d, chLatin_B, chLatin_y, chLatin_t, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgDT_POSITIVEINTEGER[] = { chLatin_p, chLatin_o, chLatin_s, chLatin_i, chLatin_t, chLatin_i, chLatin_v, chLatin_e, chLatin_I, chLatin_n, chLatin_t, chLatin_e, chLatin_g, chLatin_e, chLatin_r, chNull }; const XMLCh SchemaSymbols::fgDT_DATETIME[] = { chLatin_d, chLatin_a, chLatin_t, chLatin_e, chLatin_T, chLatin_i, chLatin_m, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgDT_DATE[] = { chLatin_d, chLatin_a, chLatin_t, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgDT_TIME[] = { chLatin_t, chLatin_i, chLatin_m, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgDT_DURATION[] = { chLatin_d, chLatin_u, chLatin_r, chLatin_a, chLatin_t, chLatin_i, chLatin_o, chLatin_n, chNull }; const XMLCh SchemaSymbols::fgDT_DAY[] = { chLatin_g, chLatin_D, chLatin_a, chLatin_y, chNull }; const XMLCh SchemaSymbols::fgDT_MONTH[] = { chLatin_g, chLatin_M, chLatin_o, chLatin_n, chLatin_t, chLatin_h, chNull }; const XMLCh SchemaSymbols::fgDT_MONTHDAY[] = { chLatin_g, chLatin_M, chLatin_o, chLatin_n, chLatin_t, chLatin_h, chLatin_D, chLatin_a, chLatin_y, chNull }; const XMLCh SchemaSymbols::fgDT_YEAR[] = { chLatin_g, chLatin_Y, chLatin_e, chLatin_a, chLatin_r, chNull }; const XMLCh SchemaSymbols::fgDT_YEARMONTH[] = { chLatin_g, chLatin_Y, chLatin_e, chLatin_a, chLatin_r, chLatin_M, chLatin_o, chLatin_n, chLatin_t, chLatin_h, chNull }; const XMLCh SchemaSymbols::fgDT_BASE64BINARY[] = { chLatin_b, chLatin_a, chLatin_s, chLatin_e, chDigit_6, chDigit_4, chLatin_B, chLatin_i, chLatin_n, chLatin_a, chLatin_r, chLatin_y, chNull }; const XMLCh SchemaSymbols::fgDT_HEXBINARY[] = { chLatin_h, chLatin_e, chLatin_x, chLatin_B, chLatin_i, chLatin_n, chLatin_a, chLatin_r, chLatin_y, chNull }; const XMLCh SchemaSymbols::fgDT_FLOAT[] = { chLatin_f, chLatin_l, chLatin_o, chLatin_a, chLatin_t, chNull }; const XMLCh SchemaSymbols::fgDT_DOUBLE[] = { chLatin_d, chLatin_o, chLatin_u, chLatin_b, chLatin_l, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgDT_URIREFERENCE[] = { chLatin_u, chLatin_r, chLatin_i, chLatin_R, chLatin_e, chLatin_f, chLatin_e, chLatin_r, chLatin_e, chLatin_n, chLatin_c, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgDT_ANYURI[] = { chLatin_a, chLatin_n, chLatin_y, chLatin_U, chLatin_R, chLatin_I, chNull }; const XMLCh SchemaSymbols::fgDT_QNAME[] = { chLatin_Q, chLatin_N, chLatin_a, chLatin_m, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgDT_NORMALIZEDSTRING[] = { chLatin_n, chLatin_o, chLatin_r, chLatin_m, chLatin_a, chLatin_l, chLatin_i, chLatin_z, chLatin_e, chLatin_d, chLatin_S, chLatin_t, chLatin_r, chLatin_i, chLatin_n, chLatin_g, chNull }; const XMLCh SchemaSymbols::fgDT_ANYSIMPLETYPE[] = { chLatin_a, chLatin_n, chLatin_y, chLatin_S, chLatin_i, chLatin_m, chLatin_p, chLatin_l, chLatin_e, chLatin_T, chLatin_y, chLatin_p, chLatin_e, chNull }; const XMLCh SchemaSymbols::fgRegEx_XOption[] = { chLatin_X, chNull }; const XMLCh SchemaSymbols::fgRedefIdentifier[] = { chUnderscore, chLatin_r, chLatin_d, chLatin_f, chLatin_n, chNull }; const int SchemaSymbols::fgINT_MIN_VALUE = 0x80000000; const int SchemaSymbols::fgINT_MAX_VALUE = 0x7fffffff; XERCES_CPP_NAMESPACE_END /** * End of file SchemaSymbols.cpp */ xerces-c-3.1.1/src/xercesc/validators/schema/PSVIDefs.hpp0000644000175000017500000000234411360344373022201 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: PSVIDefs.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_PSVIDEFS_HPP) #define XERCESC_INCLUDE_GUARD_PSVIDEFS_HPP XERCES_CPP_NAMESPACE_BEGIN class VALIDATORS_EXPORT PSVIDefs { public: enum PSVIScope { SCP_ABSENT // declared in group/attribute group , SCP_GLOBAL // global declaration or ref , SCP_LOCAL // local declaration }; }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/validators/schema/XUtil.cpp0000644000175000017500000000756010523643534021664 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XUtil.cpp 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // Finds and returns the first child element node. DOMElement* XUtil::getFirstChildElement(const DOMNode* const parent) { // search for node DOMNode* child = parent->getFirstChild(); while (child != 0) { if (child->getNodeType() == DOMNode::ELEMENT_NODE) return (DOMElement*)child; child = child->getNextSibling(); } // not found return 0; } // Finds and returns the first child node with the given name. DOMElement* XUtil::getFirstChildElementNS(const DOMNode* const parent , const XMLCh** const elemNames , const XMLCh* const uriStr , unsigned int length) { // search for node DOMNode* child = parent->getFirstChild(); while (child != 0) { if (child->getNodeType() == DOMNode::ELEMENT_NODE) { for (unsigned int i = 0; i < length; i++) { if (XMLString::equals(child->getNamespaceURI(), uriStr) && XMLString::equals(child->getLocalName(), elemNames[i])) return (DOMElement*)child; } } child = child->getNextSibling(); } // not found return 0; } // Finds and returns the last child element node. DOMElement* XUtil::getNextSiblingElement(const DOMNode* const node) { // search for node DOMNode* sibling = node->getNextSibling(); while (sibling != 0) { if (sibling->getNodeType() == DOMNode::ELEMENT_NODE) return (DOMElement*)sibling; sibling = sibling->getNextSibling(); } // not found return 0; } // Finds and returns the next sibling element node with the give name. DOMElement* XUtil::getNextSiblingElementNS(const DOMNode* const node , const XMLCh** const elemNames , const XMLCh* const uriStr , unsigned int length) { // search for node DOMNode* sibling = node->getNextSibling(); while (sibling != 0) { if (sibling->getNodeType() == DOMNode::ELEMENT_NODE) { for (unsigned int i = 0; i < length; i++) { if (XMLString::equals(sibling->getNamespaceURI(), uriStr) && XMLString::equals(sibling->getLocalName(), elemNames[i])) return (DOMElement*)sibling; } } sibling = sibling->getNextSibling(); } // not found return 0; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/validators/schema/XercesElementWildcard.hpp0000644000175000017500000000622310606722647025041 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XercesElementWildcard.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_XERCESELEMENTWILDCARD_HPP) #define XERCESC_INCLUDE_GUARD_XERCESELEMENTWILDCARD_HPP #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Forward declarations // --------------------------------------------------------------------------- class SchemaGrammar; class VALIDATORS_EXPORT XercesElementWildcard { public : // ----------------------------------------------------------------------- // Class static methods // ----------------------------------------------------------------------- /* * check whether two elements are in conflict */ static bool conflict(SchemaGrammar* const pGrammar, ContentSpecNode::NodeTypes type1, QName* q1, ContentSpecNode::NodeTypes type2, QName* q2, SubstitutionGroupComparator* comparator); private: // ----------------------------------------------------------------------- // private helper methods // ----------------------------------------------------------------------- static bool uriInWildcard(SchemaGrammar* const pGrammar, QName* qname, unsigned int wildcard, ContentSpecNode::NodeTypes wtype, SubstitutionGroupComparator* comparator); static bool wildcardIntersect(ContentSpecNode::NodeTypes t1, unsigned int w1, ContentSpecNode::NodeTypes t2, unsigned int w2); // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XercesElementWildcard(); ~XercesElementWildcard(); }; XERCES_CPP_NAMESPACE_END #endif // XERCESELEMENTWILDCARD_HPP xerces-c-3.1.1/src/xercesc/validators/schema/SchemaGrammar.hpp0000644000175000017500000005074011302527023023317 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SchemaGrammar.hpp 883376 2009-11-23 15:45:23Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_SCHEMAGRAMMAR_HPP) #define XERCESC_INCLUDE_GUARD_SCHEMAGRAMMAR_HPP #include #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // // This class stores the Schema information // NOTE: Schemas are not namespace aware, so we just use regular NameIdPool // data structures to store element and attribute decls. They are all set // to be in the global namespace and the full QName is used as the base name // of the decl. This means that all the URI parameters below are expected // to be null pointers (and anything else will cause an exception.) // // --------------------------------------------------------------------------- // Forward Declarations // --------------------------------------------------------------------------- class ComplexTypeInfo; class XercesGroupInfo; class XercesAttGroupInfo; class XSAnnotation; // --------------------------------------------------------------------------- // typedef declaration // --------------------------------------------------------------------------- typedef ValueVectorOf ElemVector; class VALIDATORS_EXPORT SchemaGrammar : public Grammar { public: // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- SchemaGrammar(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); virtual ~SchemaGrammar(); // ----------------------------------------------------------------------- // Implementation of Virtual Interface // ----------------------------------------------------------------------- virtual Grammar::GrammarType getGrammarType() const; virtual const XMLCh* getTargetNamespace() const; // this method should only be used while the grammar is being // constructed, not while it is being used // in a validation episode! virtual XMLElementDecl* findOrAddElemDecl ( const unsigned int uriId , const XMLCh* const baseName , const XMLCh* const prefixName , const XMLCh* const qName , unsigned int scope , bool& wasAdded ) ; virtual XMLSize_t getElemId ( const unsigned int uriId , const XMLCh* const baseName , const XMLCh* const qName , unsigned int scope ) const ; virtual const XMLElementDecl* getElemDecl ( const unsigned int uriId , const XMLCh* const baseName , const XMLCh* const qName , unsigned int scope ) const ; virtual XMLElementDecl* getElemDecl ( const unsigned int uriId , const XMLCh* const baseName , const XMLCh* const qName , unsigned int scope ); virtual const XMLElementDecl* getElemDecl ( const unsigned int elemId ) const; virtual XMLElementDecl* getElemDecl ( const unsigned int elemId ); virtual const XMLNotationDecl* getNotationDecl ( const XMLCh* const notName ) const; virtual XMLNotationDecl* getNotationDecl ( const XMLCh* const notName ); virtual bool getValidated() const; virtual XMLElementDecl* putElemDecl ( const unsigned int uriId , const XMLCh* const baseName , const XMLCh* const prefixName , const XMLCh* const qName , unsigned int scope , const bool notDeclared = false ); virtual XMLSize_t putElemDecl ( XMLElementDecl* const elemDecl , const bool notDeclared = false ) ; virtual XMLSize_t putNotationDecl ( XMLNotationDecl* const notationDecl ) const; virtual void setValidated(const bool newState); virtual void reset(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- RefHash3KeysIdPoolEnumerator getElemEnumerator() const; NameIdPoolEnumerator getNotationEnumerator() const; RefHashTableOf* getAttributeDeclRegistry() const; RefHashTableOf* getComplexTypeRegistry() const; RefHashTableOf* getGroupInfoRegistry() const; RefHashTableOf* getAttGroupInfoRegistry() const; DatatypeValidatorFactory* getDatatypeRegistry(); RefHash2KeysTableOf* getValidSubstitutionGroups() const; // @deprecated ValidationContext* getValidationContext() const; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- void setTargetNamespace(const XMLCh* const targetNamespace); void setAttributeDeclRegistry(RefHashTableOf* const attReg); void setComplexTypeRegistry(RefHashTableOf* const other); void setGroupInfoRegistry(RefHashTableOf* const other); void setAttGroupInfoRegistry(RefHashTableOf* const other); void setValidSubstitutionGroups(RefHash2KeysTableOf* const); virtual void setGrammarDescription( XMLGrammarDescription*); virtual XMLGrammarDescription* getGrammarDescription() const; // ----------------------------------------------------------------------- // Helper methods // ----------------------------------------------------------------------- XMLSize_t putGroupElemDecl ( XMLElementDecl* const elemDecl ) const; // ----------------------------------------------------------------------- // Annotation management methods // ----------------------------------------------------------------------- /** * Add annotation to the list of annotations for a given key */ void putAnnotation(void* key, XSAnnotation* const annotation); /** * Add global annotation * * Note: XSAnnotation acts as a linked list */ void addAnnotation(XSAnnotation* const annotation); /** * Retrieve the annotation that is associated with the specified key * * @param key represents a schema component object (i.e. SchemaGrammar) * @return XSAnnotation associated with the key object */ XSAnnotation* getAnnotation(const void* const key); /** * Retrieve the annotation that is associated with the specified key * * @param key represents a schema component object (i.e. SchemaGrammar) * @return XSAnnotation associated with the key object */ const XSAnnotation* getAnnotation(const void* const key) const; /** * Get global annotation */ XSAnnotation* getAnnotation(); const XSAnnotation* getAnnotation() const; /** * Get annotation hash table, to enumerate through them */ RefHashTableOf* getAnnotations(); const RefHashTableOf* getAnnotations() const; /** * Get/set scope count. */ unsigned int getScopeCount () const; void setScopeCount (unsigned int); /** * Get/set anonymous type count. */ unsigned int getAnonTypeCount () const; void setAnonTypeCount (unsigned int); /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(SchemaGrammar) private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- SchemaGrammar(const SchemaGrammar&); SchemaGrammar& operator=(const SchemaGrammar&); // ----------------------------------------------------------------------- // Helper methods // ----------------------------------------------------------------------- void cleanUp(); // ----------------------------------------------------------------------- // Private data members // // fElemDeclPool // This is the element decl pool. It contains all of the elements // declared in the Schema (and their associated attributes.) // // fElemNonDeclPool // This is the element decl pool that is is populated as new elements // are seen in the XML document (not declared in the Schema), and they // are given default characteristics. // // fGroupElemDeclPool // This is the element decl pool for elements in a group that are // referenced in different scope. It contains all of the elements // declared in the Schema (and their associated attributes.) // // fNotationDeclPool // This is a pool of NotationDecl objects, which contains all of the // notations declared in the Schema. // // fTargetNamespace // Target name space for this grammar. // // fAttributeDeclRegistry // Global attribute declarations // // fComplexTypeRegistry // Stores complexType declaration info // // fGroupInfoRegistry // Stores global declaration info // // fAttGroupInfoRegistry // Stores global declaration info // // fDatatypeRegistry // Datatype validator factory // // fValidSubstitutionGroups // Valid list of elements that can substitute a given element // // fIDRefList // List of ids of schema declarations extracted during schema grammar // traversal // // fValidated // Indicates if the content of the Grammar has been pre-validated // or not (UPA checking, etc.). When using a cached grammar, no need // for pre content validation. // // fGramDesc: adopted // // ----------------------------------------------------------------------- XMLCh* fTargetNamespace; RefHash3KeysIdPool* fElemDeclPool; RefHash3KeysIdPool* fElemNonDeclPool; RefHash3KeysIdPool* fGroupElemDeclPool; NameIdPool* fNotationDeclPool; RefHashTableOf* fAttributeDeclRegistry; RefHashTableOf* fComplexTypeRegistry; RefHashTableOf* fGroupInfoRegistry; RefHashTableOf* fAttGroupInfoRegistry; RefHash2KeysTableOf* fValidSubstitutionGroups; // @deprecated ValidationContext* fValidationContext; MemoryManager* fMemoryManager; XMLSchemaDescription* fGramDesc; RefHashTableOf* fAnnotations; bool fValidated; DatatypeValidatorFactory fDatatypeRegistry; unsigned int fScopeCount; unsigned int fAnonTypeCount; }; // --------------------------------------------------------------------------- // SchemaGrammar: Getter methods // --------------------------------------------------------------------------- inline RefHash3KeysIdPoolEnumerator SchemaGrammar::getElemEnumerator() const { return RefHash3KeysIdPoolEnumerator(fElemDeclPool, false, fMemoryManager); } inline NameIdPoolEnumerator SchemaGrammar::getNotationEnumerator() const { return NameIdPoolEnumerator(fNotationDeclPool, fMemoryManager); } inline RefHashTableOf* SchemaGrammar::getAttributeDeclRegistry() const { return fAttributeDeclRegistry; } inline RefHashTableOf* SchemaGrammar::getComplexTypeRegistry() const { return fComplexTypeRegistry; } inline RefHashTableOf* SchemaGrammar::getGroupInfoRegistry() const { return fGroupInfoRegistry; } inline RefHashTableOf* SchemaGrammar::getAttGroupInfoRegistry() const { return fAttGroupInfoRegistry; } inline DatatypeValidatorFactory* SchemaGrammar::getDatatypeRegistry() { return &fDatatypeRegistry; } inline RefHash2KeysTableOf* SchemaGrammar::getValidSubstitutionGroups() const { return fValidSubstitutionGroups; } // @deprecated inline ValidationContext* SchemaGrammar::getValidationContext() const { return fValidationContext; } inline XMLGrammarDescription* SchemaGrammar::getGrammarDescription() const { return fGramDesc; } inline XSAnnotation* SchemaGrammar::getAnnotation(const void* const key) { return fAnnotations->get(key); } inline const XSAnnotation* SchemaGrammar::getAnnotation(const void* const key) const { return fAnnotations->get(key); } inline XSAnnotation* SchemaGrammar::getAnnotation() { return fAnnotations->get(this); } inline const XSAnnotation* SchemaGrammar::getAnnotation() const { return fAnnotations->get(this); } inline RefHashTableOf* SchemaGrammar::getAnnotations() { return fAnnotations; } inline const RefHashTableOf* SchemaGrammar::getAnnotations() const { return fAnnotations; } // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- inline void SchemaGrammar::setTargetNamespace(const XMLCh* const targetNamespace) { if (fTargetNamespace) fMemoryManager->deallocate(fTargetNamespace);//delete [] fTargetNamespace; fTargetNamespace = XMLString::replicate(targetNamespace, fMemoryManager); } inline void SchemaGrammar::setAttributeDeclRegistry(RefHashTableOf* const attReg) { fAttributeDeclRegistry = attReg; } inline void SchemaGrammar::setComplexTypeRegistry(RefHashTableOf* const other) { fComplexTypeRegistry = other; } inline void SchemaGrammar::setGroupInfoRegistry(RefHashTableOf* const other) { fGroupInfoRegistry = other; } inline void SchemaGrammar::setAttGroupInfoRegistry(RefHashTableOf* const other) { fAttGroupInfoRegistry = other; } inline void SchemaGrammar::setValidSubstitutionGroups(RefHash2KeysTableOf* const other) { fValidSubstitutionGroups = other; } // --------------------------------------------------------------------------- // SchemaGrammar: Virtual methods // --------------------------------------------------------------------------- inline Grammar::GrammarType SchemaGrammar::getGrammarType() const { return Grammar::SchemaGrammarType; } inline const XMLCh* SchemaGrammar::getTargetNamespace() const { return fTargetNamespace; } // Element Decl inline XMLSize_t SchemaGrammar::getElemId (const unsigned int uriId , const XMLCh* const baseName , const XMLCh* const , unsigned int scope ) const { // // In this case, we don't return zero to mean 'not found', so we have to // map it to the official not found value if we don't find it. // const SchemaElementDecl* decl = fElemDeclPool->getByKey(baseName, uriId, scope); if (!decl) { decl = fGroupElemDeclPool->getByKey(baseName, uriId, scope); if (!decl) return XMLElementDecl::fgInvalidElemId; } return decl->getId(); } inline const XMLElementDecl* SchemaGrammar::getElemDecl( const unsigned int uriId , const XMLCh* const baseName , const XMLCh* const , unsigned int scope ) const { const SchemaElementDecl* decl = fElemDeclPool->getByKey(baseName, uriId, scope); if (!decl) { decl = fGroupElemDeclPool->getByKey(baseName, uriId, scope); if (!decl && fElemNonDeclPool) decl = fElemNonDeclPool->getByKey(baseName, uriId, scope); } return decl; } inline XMLElementDecl* SchemaGrammar::getElemDecl (const unsigned int uriId , const XMLCh* const baseName , const XMLCh* const , unsigned int scope ) { SchemaElementDecl* decl = fElemDeclPool->getByKey(baseName, uriId, scope); if (!decl) { decl = fGroupElemDeclPool->getByKey(baseName, uriId, scope); if (!decl && fElemNonDeclPool) decl = fElemNonDeclPool->getByKey(baseName, uriId, scope); } return decl; } inline const XMLElementDecl* SchemaGrammar::getElemDecl(const unsigned int elemId) const { // Look up this element decl by id const SchemaElementDecl* decl = fElemDeclPool->getById(elemId); if (!decl) decl = fGroupElemDeclPool->getById(elemId); return decl; } inline XMLElementDecl* SchemaGrammar::getElemDecl(const unsigned int elemId) { // Look up this element decl by id SchemaElementDecl* decl = fElemDeclPool->getById(elemId); if (!decl) decl = fGroupElemDeclPool->getById(elemId); return decl; } inline XMLSize_t SchemaGrammar::putElemDecl(XMLElementDecl* const elemDecl, const bool notDeclared) { if (notDeclared) { if(!fElemNonDeclPool) fElemNonDeclPool = new (fMemoryManager) RefHash3KeysIdPool(29, true, 128, fMemoryManager); return fElemNonDeclPool->put(elemDecl->getBaseName(), elemDecl->getURI(), ((SchemaElementDecl* )elemDecl)->getEnclosingScope(), (SchemaElementDecl*) elemDecl); } return fElemDeclPool->put(elemDecl->getBaseName(), elemDecl->getURI(), ((SchemaElementDecl* )elemDecl)->getEnclosingScope(), (SchemaElementDecl*) elemDecl); } inline XMLSize_t SchemaGrammar::putGroupElemDecl (XMLElementDecl* const elemDecl) const { return fGroupElemDeclPool->put(elemDecl->getBaseName(), elemDecl->getURI(), ((SchemaElementDecl* )elemDecl)->getEnclosingScope(), (SchemaElementDecl*) elemDecl); } // Notation Decl inline const XMLNotationDecl* SchemaGrammar::getNotationDecl(const XMLCh* const notName) const { return fNotationDeclPool->getByKey(notName); } inline XMLNotationDecl* SchemaGrammar::getNotationDecl(const XMLCh* const notName) { return fNotationDeclPool->getByKey(notName); } inline XMLSize_t SchemaGrammar::putNotationDecl(XMLNotationDecl* const notationDecl) const { return fNotationDeclPool->put(notationDecl); } inline bool SchemaGrammar::getValidated() const { return fValidated; } inline void SchemaGrammar::setValidated(const bool newState) { fValidated = newState; } inline unsigned int SchemaGrammar::getScopeCount () const { return fScopeCount; } inline void SchemaGrammar::setScopeCount (unsigned int scopeCount) { fScopeCount = scopeCount; } inline unsigned int SchemaGrammar::getAnonTypeCount () const { return fAnonTypeCount; } inline void SchemaGrammar::setAnonTypeCount (unsigned int count) { fAnonTypeCount = count; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/validators/schema/XSDDOMParser.hpp0000644000175000017500000003015611360344373022773 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XSDDOMParser.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_XSDDOMPARSER_HPP) #define XERCESC_INCLUDE_GUARD_XSDDOMPARSER_HPP #include #include #include XERCES_CPP_NAMESPACE_BEGIN class DOMElement; class XMLValidator; /** * This class is used to parse schema documents into DOM trees */ class PARSERS_EXPORT XSDDOMParser : public XercesDOMParser { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- /** @name Constructors and Destructor */ //@{ /** Construct a XSDDOMParser, with an optional validator * * Constructor with an instance of validator class to use for * validation. If you don't provide a validator, a default one will * be created for you in the scanner. * * @param gramPool Pointer to the grammar pool instance from * external application. * The parser does NOT own it. * * @param valToAdopt Pointer to the validator instance to use. The * parser is responsible for freeing the memory. */ XSDDOMParser ( XMLValidator* const valToAdopt = 0 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager , XMLGrammarPool* const gramPool = 0 ); /** * Destructor */ ~XSDDOMParser(); //@} // ----------------------------------------------------------------------- // Implementation of the XMLDocumentHandler interface. // ----------------------------------------------------------------------- /** @name Implementation of the XMLDocumentHandler interface. */ //@{ /** Handle a start element event * * This method is used to report the start of an element. It is * called at the end of the element, by which time all attributes * specified are also parsed. A new DOM Element node is created * along with as many attribute nodes as required. This new element * is added appended as a child of the current node in the tree, and * then replaces it as the current node (if the isEmpty flag is false.) * * @param elemDecl A const reference to the object containing element * declaration information. * @param urlId An id referring to the namespace prefix, if * namespaces setting is switched on. * @param elemPrefix A const pointer to a Unicode string containing * the namespace prefix for this element. Applicable * only when namespace processing is enabled. * @param attrList A const reference to the object containing the * list of attributes just scanned for this element. * @param attrCount A count of number of attributes in the list * specified by the parameter 'attrList'. * @param isEmpty A flag indicating whether this is an empty element * or not. If empty, then no endElement() call will * be made. * @param isRoot A flag indicating whether this element was the * root element. * @see DocumentHandler#startElement */ virtual void startElement ( const XMLElementDecl& elemDecl , const unsigned int urlId , const XMLCh* const elemPrefix , const RefVectorOf& attrList , const XMLSize_t attrCount , const bool isEmpty , const bool isRoot ); /** Handle and end of element event * * This method is used to indicate the end tag of an element. The * DOM parser pops the current element off the top of the element * stack, and make it the new current element. * * @param elemDecl A const reference to the object containing element * declaration information. * @param urlId An id referring to the namespace prefix, if * namespaces setting is switched on. * @param isRoot A flag indicating whether this element was the * root element. * @param elemPrefix A const pointer to a Unicode string containing * the namespace prefix for this element. Applicable * only when namespace processing is enabled. */ virtual void endElement ( const XMLElementDecl& elemDecl , const unsigned int urlId , const bool isRoot , const XMLCh* const elemPrefix ); /** Handle document character events * * This method is used to report all the characters scanned by the * parser. This DOM implementation stores this data in the appropriate * DOM node, creating one if necessary. * * @param chars A const pointer to a Unicode string representing the * character data. * @param length The length of the Unicode string returned in 'chars'. * @param cdataSection A flag indicating if the characters represent * content from the CDATA section. */ virtual void docCharacters ( const XMLCh* const chars , const XMLSize_t length , const bool cdataSection ); /** Handle a document comment event * * This method is used to report any comments scanned by the parser. * A new comment node is created which stores this data. * * @param comment A const pointer to a null terminated Unicode * string representing the comment text. */ virtual void docComment ( const XMLCh* const comment ); /** Handle a start entity reference event * * This method is used to indicate the start of an entity reference. * If the expand entity reference flag is true, then a new * DOM Entity reference node is created. * * @param entDecl A const reference to the object containing the * entity declaration information. */ virtual void startEntityReference ( const XMLEntityDecl& entDecl ); /** Handle and end of entity reference event * * This method is used to indicate that an end of an entity reference * was just scanned. * * @param entDecl A const reference to the object containing the * entity declaration information. */ virtual void endEntityReference ( const XMLEntityDecl& entDecl ); /** Handle an ignorable whitespace vent * * This method is used to report all the whitespace characters, which * are determined to be 'ignorable'. This distinction between characters * is only made, if validation is enabled. * * Any whitespace before content is ignored. If the current node is * already of type DOMNode::TEXT_NODE, then these whitespaces are * appended, otherwise a new Text node is created which stores this * data. Essentially all contiguous ignorable characters are collected * in one node. * * @param chars A const pointer to a Unicode string representing the * ignorable whitespace character data. * @param length The length of the Unicode string 'chars'. * @param cdataSection A flag indicating if the characters represent * content from the CDATA section. */ virtual void ignorableWhitespace ( const XMLCh* const chars , const XMLSize_t length , const bool cdataSection ); //@} // ----------------------------------------------------------------------- // Get methods // ----------------------------------------------------------------------- bool getSawFatal() const; // ----------------------------------------------------------------------- // Set methods // ----------------------------------------------------------------------- void setUserErrorReporter(XMLErrorReporter* const errorReporter); void setUserEntityHandler(XMLEntityHandler* const entityHandler); // ----------------------------------------------------------------------- // XMLErrorReporter interface // ----------------------------------------------------------------------- virtual void error ( const unsigned int errCode , const XMLCh* const errDomain , const ErrTypes type , const XMLCh* const errorText , const XMLCh* const systemId , const XMLCh* const publicId , const XMLFileLoc lineNum , const XMLFileLoc colNum ); // ----------------------------------------------------------------------- // XMLEntityHandler interface // ----------------------------------------------------------------------- virtual InputSource* resolveEntity(XMLResourceIdentifier* resourceIdentifier); protected : // ----------------------------------------------------------------------- // Protected Helper methods // ----------------------------------------------------------------------- virtual DOMElement* createElementNSNode(const XMLCh *fNamespaceURI, const XMLCh *qualifiedName); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XSDDOMParser(const XSDDOMParser&); XSDDOMParser& operator=(const XSDDOMParser&); // ----------------------------------------------------------------------- // Private Helper methods // ----------------------------------------------------------------------- void startAnnotation ( const XMLElementDecl& elemDecl , const RefVectorOf& attrList , const XMLSize_t attrCount ); void startAnnotationElement ( const XMLElementDecl& elemDecl , const RefVectorOf& attrList , const XMLSize_t attrCount ); void endAnnotationElement ( const XMLElementDecl& elemDecl , bool complete ); // ----------------------------------------------------------------------- // Private data members // ----------------------------------------------------------------------- bool fSawFatal; int fAnnotationDepth; int fInnerAnnotationDepth; int fDepth; XMLErrorReporter* fUserErrorReporter; XMLEntityHandler* fUserEntityHandler; ValueVectorOf* fURIs; XMLBuffer fAnnotationBuf; XSDErrorReporter fXSDErrorReporter; XSDLocator fXSLocator; }; inline bool XSDDOMParser::getSawFatal() const { return fSawFatal; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/validators/schema/XercesGroupInfo.cpp0000644000175000017500000000756310523643534023704 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XercesGroupInfo.cpp 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // XercesGroupInfo: Constructors and Destructor // --------------------------------------------------------------------------- XercesGroupInfo::XercesGroupInfo(MemoryManager* const manager) : fCheckElementConsistency(true) , fScope(Grammar::TOP_LEVEL_SCOPE) , fNameId(0) , fNamespaceId(0) , fContentSpec(0) , fElements(0) , fBaseGroup(0) , fLocator(0) { fElements = new (manager) RefVectorOf(4, false, manager); } XercesGroupInfo::XercesGroupInfo(unsigned int groupNameId, unsigned int groupNamespaceId, MemoryManager* const manager) : fCheckElementConsistency(true) , fScope(Grammar::TOP_LEVEL_SCOPE) , fNameId(groupNameId) , fNamespaceId(groupNamespaceId) , fContentSpec(0) , fElements(0) , fBaseGroup(0) , fLocator(0) { fElements = new (manager) RefVectorOf(4, false, manager); } XercesGroupInfo::~XercesGroupInfo() { delete fElements; delete fContentSpec; delete fLocator; } // --------------------------------------------------------------------------- // XercesGroupInfo: Constructors and Destructor // --------------------------------------------------------------------------- void XercesGroupInfo::setLocator(XSDLocator* const aLocator) { if (fLocator) delete fLocator; fLocator = aLocator; } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(XercesGroupInfo) void XercesGroupInfo::serialize(XSerializeEngine& serEng) { if (serEng.isStoring()) { serEng<* fElements; * ***/ XTemplateSerializer::storeObject(fElements, serEng); serEng<>fCheckElementConsistency; serEng>>fScope; serEng>>fNameId; serEng>>fNamespaceId; serEng>>fContentSpec; /*** * * Deserialize RefVectorOf* fElements; * ***/ XTemplateSerializer::loadObject(&fElements, 4, false, serEng); serEng>>fBaseGroup; //don't serialize XSDLocator* fLocator; fLocator = 0; } } XERCES_CPP_NAMESPACE_END /** * End of file XercesGroupInfo.cpp */ xerces-c-3.1.1/src/xercesc/validators/schema/SchemaSymbols.hpp0000644000175000017500000002217011240026374023361 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SchemaSymbols.hpp 802804 2009-08-10 14:21:48Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_SCHEMASYMBOLS_HPP) #define XERCESC_INCLUDE_GUARD_SCHEMASYMBOLS_HPP #include XERCES_CPP_NAMESPACE_BEGIN /* * Collection of symbols used to parse a Schema Grammar */ class VALIDATORS_EXPORT SchemaSymbols { public : // ----------------------------------------------------------------------- // Constant data // ----------------------------------------------------------------------- static const XMLCh fgURI_XSI[]; static const XMLCh fgURI_SCHEMAFORSCHEMA[]; // deprecated (typo) static const XMLCh fgXSI_SCHEMALOCACTION[]; // deprecated (typo) static const XMLCh fgXSI_NONAMESPACESCHEMALOCACTION[]; static const XMLCh fgXSI_SCHEMALOCATION[]; static const XMLCh fgXSI_NONAMESPACESCHEMALOCATION[]; static const XMLCh fgXSI_TYPE[]; static const XMLCh fgELT_ALL[]; static const XMLCh fgELT_ANNOTATION[]; static const XMLCh fgELT_ANY[]; static const XMLCh fgELT_WILDCARD[]; static const XMLCh fgELT_ANYATTRIBUTE[]; static const XMLCh fgELT_APPINFO[]; static const XMLCh fgELT_ATTRIBUTE[]; static const XMLCh fgELT_ATTRIBUTEGROUP[]; static const XMLCh fgELT_CHOICE[]; static const XMLCh fgELT_COMPLEXTYPE[]; static const XMLCh fgELT_CONTENT[]; static const XMLCh fgELT_DOCUMENTATION[]; static const XMLCh fgELT_DURATION[]; static const XMLCh fgELT_ELEMENT[]; static const XMLCh fgELT_ENCODING[]; static const XMLCh fgELT_ENUMERATION[]; static const XMLCh fgELT_FIELD[]; static const XMLCh fgELT_WHITESPACE[]; static const XMLCh fgELT_GROUP[]; static const XMLCh fgELT_IMPORT[]; static const XMLCh fgELT_INCLUDE[]; static const XMLCh fgELT_REDEFINE[]; static const XMLCh fgELT_KEY[]; static const XMLCh fgELT_KEYREF[]; static const XMLCh fgELT_LENGTH[]; static const XMLCh fgELT_MAXEXCLUSIVE[]; static const XMLCh fgELT_MAXINCLUSIVE[]; static const XMLCh fgELT_MAXLENGTH[]; static const XMLCh fgELT_MINEXCLUSIVE[]; static const XMLCh fgELT_MININCLUSIVE[]; static const XMLCh fgELT_MINLENGTH[]; static const XMLCh fgELT_NOTATION[]; static const XMLCh fgELT_PATTERN[]; static const XMLCh fgELT_PERIOD[]; static const XMLCh fgELT_TOTALDIGITS[]; static const XMLCh fgELT_FRACTIONDIGITS[]; static const XMLCh fgELT_SCHEMA[]; static const XMLCh fgELT_SELECTOR[]; static const XMLCh fgELT_SEQUENCE[]; static const XMLCh fgELT_SIMPLETYPE[]; static const XMLCh fgELT_UNION[]; static const XMLCh fgELT_LIST[]; static const XMLCh fgELT_UNIQUE[]; static const XMLCh fgELT_COMPLEXCONTENT[]; static const XMLCh fgELT_SIMPLECONTENT[]; static const XMLCh fgELT_RESTRICTION[]; static const XMLCh fgELT_EXTENSION[]; static const XMLCh fgATT_ABSTRACT[]; static const XMLCh fgATT_ATTRIBUTEFORMDEFAULT[]; static const XMLCh fgATT_BASE[]; static const XMLCh fgATT_ITEMTYPE[]; static const XMLCh fgATT_MEMBERTYPES[]; static const XMLCh fgATT_BLOCK[]; static const XMLCh fgATT_BLOCKDEFAULT[]; static const XMLCh fgATT_DEFAULT[]; static const XMLCh fgATT_ELEMENTFORMDEFAULT[]; static const XMLCh fgATT_SUBSTITUTIONGROUP[]; static const XMLCh fgATT_FINAL[]; static const XMLCh fgATT_FINALDEFAULT[]; static const XMLCh fgATT_FIXED[]; static const XMLCh fgATT_FORM[]; static const XMLCh fgATT_ID[]; static const XMLCh fgATT_MAXOCCURS[]; static const XMLCh fgATT_MINOCCURS[]; static const XMLCh fgATT_NAME[]; static const XMLCh fgATT_NAMESPACE[]; static const XMLCh fgATT_NILL[]; static const XMLCh fgATT_NILLABLE[]; static const XMLCh fgATT_PROCESSCONTENTS[]; static const XMLCh fgATT_REF[]; static const XMLCh fgATT_REFER[]; static const XMLCh fgATT_SCHEMALOCATION[]; static const XMLCh fgATT_SOURCE[]; static const XMLCh fgATT_SYSTEM[]; static const XMLCh fgATT_PUBLIC[]; static const XMLCh fgATT_TARGETNAMESPACE[]; static const XMLCh fgATT_TYPE[]; static const XMLCh fgATT_USE[]; static const XMLCh fgATT_VALUE[]; static const XMLCh fgATT_MIXED[]; static const XMLCh fgATT_VERSION[]; static const XMLCh fgATT_XPATH[]; static const XMLCh fgATTVAL_TWOPOUNDANY[]; static const XMLCh fgATTVAL_TWOPOUNDLOCAL[]; static const XMLCh fgATTVAL_TWOPOUNDOTHER[]; static const XMLCh fgATTVAL_TWOPOUNDTRAGETNAMESPACE[]; static const XMLCh fgATTVAL_POUNDALL[]; static const XMLCh fgATTVAL_BASE64[]; static const XMLCh fgATTVAL_BOOLEAN[]; static const XMLCh fgATTVAL_DEFAULT[]; static const XMLCh fgATTVAL_ELEMENTONLY[]; static const XMLCh fgATTVAL_EMPTY[]; static const XMLCh fgATTVAL_EXTENSION[]; static const XMLCh fgATTVAL_FALSE[]; static const XMLCh fgATTVAL_FIXED[]; static const XMLCh fgATTVAL_HEX[]; static const XMLCh fgATTVAL_ID[]; static const XMLCh fgATTVAL_LAX[]; static const XMLCh fgATTVAL_MAXLENGTH[]; static const XMLCh fgATTVAL_MINLENGTH[]; static const XMLCh fgATTVAL_MIXED[]; static const XMLCh fgATTVAL_NCNAME[]; static const XMLCh fgATTVAL_OPTIONAL[]; static const XMLCh fgATTVAL_PROHIBITED[]; static const XMLCh fgATTVAL_QNAME[]; static const XMLCh fgATTVAL_QUALIFIED[]; static const XMLCh fgATTVAL_REQUIRED[]; static const XMLCh fgATTVAL_RESTRICTION[]; static const XMLCh fgATTVAL_SKIP[]; static const XMLCh fgATTVAL_STRICT[]; static const XMLCh fgATTVAL_STRING[]; static const XMLCh fgATTVAL_TEXTONLY[]; static const XMLCh fgATTVAL_TIMEDURATION[]; static const XMLCh fgATTVAL_TRUE[]; static const XMLCh fgATTVAL_UNQUALIFIED[]; static const XMLCh fgATTVAL_URI[]; static const XMLCh fgATTVAL_URIREFERENCE[]; static const XMLCh fgATTVAL_SUBSTITUTIONGROUP[]; static const XMLCh fgATTVAL_SUBSTITUTION[]; static const XMLCh fgATTVAL_ANYTYPE[]; static const XMLCh fgWS_PRESERVE[]; static const XMLCh fgWS_COLLAPSE[]; static const XMLCh fgWS_REPLACE[]; static const XMLCh fgDT_STRING[]; static const XMLCh fgDT_TOKEN[]; static const XMLCh fgDT_LANGUAGE[]; static const XMLCh fgDT_NAME[]; static const XMLCh fgDT_NCNAME[]; static const XMLCh fgDT_INTEGER[]; static const XMLCh fgDT_DECIMAL[]; static const XMLCh fgDT_BOOLEAN[]; static const XMLCh fgDT_NONPOSITIVEINTEGER[]; static const XMLCh fgDT_NEGATIVEINTEGER[]; static const XMLCh fgDT_LONG[]; static const XMLCh fgDT_INT[]; static const XMLCh fgDT_SHORT[]; static const XMLCh fgDT_BYTE[]; static const XMLCh fgDT_NONNEGATIVEINTEGER[]; static const XMLCh fgDT_ULONG[]; static const XMLCh fgDT_UINT[]; static const XMLCh fgDT_USHORT[]; static const XMLCh fgDT_UBYTE[]; static const XMLCh fgDT_POSITIVEINTEGER[]; //datetime static const XMLCh fgDT_DATETIME[]; static const XMLCh fgDT_DATE[]; static const XMLCh fgDT_TIME[]; static const XMLCh fgDT_DURATION[]; static const XMLCh fgDT_DAY[]; static const XMLCh fgDT_MONTH[]; static const XMLCh fgDT_MONTHDAY[]; static const XMLCh fgDT_YEAR[]; static const XMLCh fgDT_YEARMONTH[]; static const XMLCh fgDT_BASE64BINARY[]; static const XMLCh fgDT_HEXBINARY[]; static const XMLCh fgDT_FLOAT[]; static const XMLCh fgDT_DOUBLE[]; static const XMLCh fgDT_URIREFERENCE[]; static const XMLCh fgDT_ANYURI[]; static const XMLCh fgDT_QNAME[]; static const XMLCh fgDT_NORMALIZEDSTRING[]; static const XMLCh fgDT_ANYSIMPLETYPE[]; static const XMLCh fgRegEx_XOption[]; static const XMLCh fgRedefIdentifier[]; static const int fgINT_MIN_VALUE; static const int fgINT_MAX_VALUE; enum { XSD_EMPTYSET = 0, XSD_SUBSTITUTION = 1, XSD_EXTENSION = 2, XSD_RESTRICTION = 4, XSD_LIST = 8, XSD_UNION = 16, XSD_ENUMERATION = 32 }; // group orders enum { XSD_CHOICE = 0, XSD_SEQUENCE= 1, XSD_ALL = 2 }; enum { XSD_UNBOUNDED = -1, XSD_NILLABLE = 1, XSD_ABSTRACT = 2, XSD_FIXED = 4 }; private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- SchemaSymbols(); }; XERCES_CPP_NAMESPACE_END #endif /** * End of file SchemaSymbols.hpp */ xerces-c-3.1.1/src/xercesc/validators/schema/SubstitutionGroupComparator.cpp0000644000175000017500000001707211227361763026402 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SubstitutionGroupComparator.cpp 794273 2009-07-15 14:13:07Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN bool SubstitutionGroupComparator::isEquivalentTo(const QName* const anElement , const QName* const exemplar) { if (!anElement && !exemplar) return true; if ((!anElement && exemplar) || (anElement && !exemplar)) return false; if (XMLString::equals(anElement->getLocalPart(), exemplar->getLocalPart()) && (anElement->getURI() == exemplar->getURI())) return true; // they're the same! if (!fGrammarResolver || !fStringPool ) { ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::SubGrpComparator_NGR, anElement->getMemoryManager()); } unsigned int uriId = anElement->getURI(); if (uriId == XMLContentModel::gEOCFakeId || uriId == XMLContentModel::gEpsilonFakeId || uriId == XMLElementDecl::fgPCDataElemId || uriId == XMLElementDecl::fgInvalidElemId) return false; const XMLCh* uri = fStringPool->getValueForId(uriId); const XMLCh* localpart = anElement->getLocalPart(); // In addition to simply trying to find a chain between anElement and exemplar, // we need to make sure that no steps in the chain are blocked. // That is, at every step, we need to make sure that the element // being substituted for will permit being substituted // for, and whether the type of the element will permit derivations in // instance documents of this sort. if (!uri) return false; SchemaGrammar *sGrammar = (SchemaGrammar*) fGrammarResolver->getGrammar(uri); if (!sGrammar || sGrammar->getGrammarType() == Grammar::DTDGrammarType) return false; SchemaElementDecl* anElementDecl = (SchemaElementDecl*) sGrammar->getElemDecl(uriId, localpart, 0, Grammar::TOP_LEVEL_SCOPE); if (!anElementDecl) return false; SchemaElementDecl* pElemDecl = anElementDecl->getSubstitutionGroupElem(); bool foundIt = false; while (pElemDecl) //(substitutionGroupFullName) { if (XMLString::equals(pElemDecl->getBaseName(), exemplar->getLocalPart()) && (pElemDecl->getURI() == exemplar->getURI())) { // time to check for block value on element if((pElemDecl->getBlockSet() & SchemaSymbols::XSD_SUBSTITUTION) != 0) return false; foundIt = true; break; } pElemDecl = pElemDecl->getSubstitutionGroupElem(); }//while if (!foundIt) return false; // this will contain anElement's complexType information. ComplexTypeInfo *aComplexType = anElementDecl->getComplexTypeInfo(); int exemplarBlockSet = pElemDecl->getBlockSet(); if(!aComplexType) { // check on simpleType case DatatypeValidator *anElementDV = anElementDecl->getDatatypeValidator(); DatatypeValidator *exemplarDV = pElemDecl->getDatatypeValidator(); return((anElementDV == 0) || ((anElementDV == exemplarDV) || ((exemplarBlockSet & SchemaSymbols::XSD_RESTRICTION) == 0))); } // 2.3 The set of all {derivation method}s involved in the derivation of D's {type definition} from C's {type definition} does not intersect with the union of the blocking constraint, C's {prohibited substitutions} (if C is complex, otherwise the empty set) and the {prohibited substitutions} (respectively the empty set) of any intermediate {type definition}s in the derivation of D's {type definition} from C's {type definition}. // prepare the combination of {derivation method} and // {disallowed substitution} int devMethod = 0; int blockConstraint = exemplarBlockSet; ComplexTypeInfo *exemplarComplexType = pElemDecl->getComplexTypeInfo(); ComplexTypeInfo *tempType = aComplexType;; while (tempType != 0 && tempType != exemplarComplexType) { devMethod |= tempType->getDerivedBy(); tempType = tempType->getBaseComplexTypeInfo(); if (tempType) { blockConstraint |= tempType->getBlockSet(); } } if (tempType != exemplarComplexType) { return false; } if ((devMethod & blockConstraint) != 0) { return false; } return true; } bool SubstitutionGroupComparator::isAllowedByWildcard(SchemaGrammar* const pGrammar, QName* const element, unsigned int wuri, bool wother) { // whether the uri is allowed directly by the wildcard unsigned int uriId = element->getURI(); // Here we assume that empty string has id 1. // if ((!wother && uriId == wuri) || (wother && uriId != 1 && uriId != wuri && uriId != XMLContentModel::gEOCFakeId && uriId != XMLContentModel::gEpsilonFakeId && uriId != XMLElementDecl::fgPCDataElemId && uriId != XMLElementDecl::fgInvalidElemId)) { return true; } // get all elements that can substitute the current element RefHash2KeysTableOf* theValidSubstitutionGroups = pGrammar->getValidSubstitutionGroups(); if (!theValidSubstitutionGroups) return false; ValueVectorOf* subsElements = theValidSubstitutionGroups->get(element->getLocalPart(), uriId); if (!subsElements) return false; // then check whether there exists one element that is allowed by the wildcard XMLSize_t size = subsElements->size(); for (XMLSize_t i = 0; i < size; i++) { unsigned int subUriId = subsElements->elementAt(i)->getElementName()->getURI(); // Here we assume that empty string has id 1. // if ((!wother && subUriId == wuri) || (wother && subUriId != 1 && subUriId != wuri && subUriId != XMLContentModel::gEOCFakeId && subUriId != XMLContentModel::gEpsilonFakeId && subUriId != XMLElementDecl::fgPCDataElemId && subUriId != XMLElementDecl::fgInvalidElemId)) { return true; } } return false; } XERCES_CPP_NAMESPACE_END /** * End of file SubstitutionGroupComparator.cpp */ xerces-c-3.1.1/src/xercesc/validators/schema/SchemaValidator.hpp0000644000175000017500000004427211360344373023672 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SchemaValidator.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_SCHEMAVALIDATOR_HPP) #define XERCESC_INCLUDE_GUARD_SCHEMAVALIDATOR_HPP #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN class GrammarResolver; class DatatypeValidator; class SchemaElementDecl; // // This is a derivative of the abstract validator interface. This class // implements a validator that supports standard XML Schema semantics. // This class handles scanning the of the schema, and provides // the standard validation services against the Schema info it found. // class VALIDATORS_EXPORT SchemaValidator : public XMLValidator { public: // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- SchemaValidator ( XMLErrorReporter* const errReporter = 0 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual ~SchemaValidator(); // ----------------------------------------------------------------------- // Implementation of the XMLValidator interface // ----------------------------------------------------------------------- virtual bool checkContent ( XMLElementDecl* const elemDecl , QName** const children , XMLSize_t childCount , XMLSize_t* indexFailingChild ); virtual void faultInAttr ( XMLAttr& toFill , const XMLAttDef& attDef ) const; virtual void preContentValidation(bool reuseGrammar, bool validateDefAttr = false); virtual void postParseValidation(); virtual void reset(); virtual bool requiresNamespaces() const; virtual void validateAttrValue ( const XMLAttDef* attDef , const XMLCh* const attrValue , bool preValidation = false , const XMLElementDecl* elemDecl = 0 ); virtual void validateElement ( const XMLElementDecl* elemDef ); virtual Grammar* getGrammar() const; virtual void setGrammar(Grammar* aGrammar); // ----------------------------------------------------------------------- // Virtual DTD handler interface. // ----------------------------------------------------------------------- virtual bool handlesDTD() const; // ----------------------------------------------------------------------- // Virtual Schema handler interface. handlesSchema() always return false. // ----------------------------------------------------------------------- virtual bool handlesSchema() const; // ----------------------------------------------------------------------- // Schema Validator methods // ----------------------------------------------------------------------- void normalizeWhiteSpace(DatatypeValidator* dV, const XMLCh* const value, XMLBuffer& toFill, bool bStandalone = false); // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- void setGrammarResolver(GrammarResolver* grammarResolver); void setXsiType(const XMLCh* const prefix , const XMLCh* const localPart , const unsigned int uriId); void setNillable(bool isNil); void resetNillable(); void setErrorReporter(XMLErrorReporter* const errorReporter); void setExitOnFirstFatal(const bool newValue); void setDatatypeBuffer(const XMLCh* const value); void clearDatatypeBuffer(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- ComplexTypeInfo* getCurrentTypeInfo() const; DatatypeValidator *getCurrentDatatypeValidator() const; DatatypeValidator *getMostRecentAttrValidator() const; bool getErrorOccurred() const; bool getIsElemSpecified() const; bool getIsXsiTypeSet() const; const XMLCh* getNormalizedValue() const; private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- SchemaValidator(const SchemaValidator&); SchemaValidator& operator=(const SchemaValidator&); // ----------------------------------------------------------------------- // Element Consistency Checking methods // ----------------------------------------------------------------------- void checkRefElementConsistency(SchemaGrammar* const currentGrammar, const ComplexTypeInfo* const curTypeInfo, const XercesGroupInfo* const curGroup = 0); // ----------------------------------------------------------------------- // Particle Derivation Checking methods // ----------------------------------------------------------------------- void checkParticleDerivation(SchemaGrammar* const currentGrammar, const ComplexTypeInfo* const typeInfo); void checkParticleDerivationOk(SchemaGrammar* const currentGrammar, ContentSpecNode* const curNode, const int derivedScope, ContentSpecNode* const baseNode, const int baseScope, const ComplexTypeInfo* const baseInfo = 0, const bool toCheckOccurrence = true); ContentSpecNode* checkForPointlessOccurrences(ContentSpecNode* const specNode, const ContentSpecNode::NodeTypes nodeType, ValueVectorOf* const nodes); void gatherChildren(const ContentSpecNode::NodeTypes parentNodeType, ContentSpecNode* const specNode, ValueVectorOf* const nodes); bool isOccurrenceRangeOK(const int min1, const int max1, const int min2, const int max2); void checkNSCompat(const ContentSpecNode* const derivedSpecNode, const ContentSpecNode* const baseSpecNode, const bool toCheckOccurence); bool wildcardEltAllowsNamespace(const ContentSpecNode* const baseSpecNode, const unsigned int derivedURI); void checkNameAndTypeOK(SchemaGrammar* const currentGrammar, const ContentSpecNode* const derivedSpecNode, const int derivedScope, const ContentSpecNode* const baseSpecNode, const int baseScope, const ComplexTypeInfo* const baseInfo = 0); SchemaElementDecl* findElement(const int scope, const unsigned int uriIndex, const XMLCh* const name, SchemaGrammar* const grammar, const ComplexTypeInfo* const typeInfo = 0); void checkICRestriction(const SchemaElementDecl* const derivedElemDecl, const SchemaElementDecl* const baseElemDecl, const XMLCh* const derivedElemName, const XMLCh* const baseElemName); void checkTypesOK(const SchemaElementDecl* const derivedElemDecl, const SchemaElementDecl* const baseElemDecl, const XMLCh* const derivedElemName); void checkRecurseAsIfGroup(SchemaGrammar* const currentGrammar, ContentSpecNode* const derivedSpecNode, const int derivedScope, const ContentSpecNode* const baseSpecNode, const int baseScope, ValueVectorOf* const nodes, const ComplexTypeInfo* const baseInfo); void checkRecurse(SchemaGrammar* const currentGrammar, const ContentSpecNode* const derivedSpecNode, const int derivedScope, ValueVectorOf* const derivedNodes, const ContentSpecNode* const baseSpecNode, const int baseScope, ValueVectorOf* const baseNodes, const ComplexTypeInfo* const baseInfo, const bool toLax = false); void checkNSSubset(const ContentSpecNode* const derivedSpecNode, const ContentSpecNode* const baseSpecNode); bool checkNSSubsetChoiceRoot(const ContentSpecNode* const derivedSpecNode, const ContentSpecNode* const baseSpecNode); bool checkNSSubsetChoice(const ContentSpecNode* const derivedSpecNode, const ContentSpecNode* const baseSpecNode); bool isWildCardEltSubset(const ContentSpecNode* const derivedSpecNode, const ContentSpecNode* const baseSpecNode); void checkNSRecurseCheckCardinality(SchemaGrammar* const currentGrammar, const ContentSpecNode* const derivedSpecNode, ValueVectorOf* const derivedNodes, const int derivedScope, ContentSpecNode* const baseSpecNode, const bool toCheckOccurence); void checkRecurseUnordered(SchemaGrammar* const currentGrammar, const ContentSpecNode* const derivedSpecNode, ValueVectorOf* const derivedNodes, const int derivedScope, ContentSpecNode* const baseSpecNode, ValueVectorOf* const baseNodes, const int baseScope, const ComplexTypeInfo* const baseInfo); void checkMapAndSum(SchemaGrammar* const currentGrammar, const ContentSpecNode* const derivedSpecNode, ValueVectorOf* const derivedNodes, const int derivedScope, ContentSpecNode* const baseSpecNode, ValueVectorOf* const baseNodes, const int baseScope, const ComplexTypeInfo* const baseInfo); ContentSpecNode* getNonUnaryGroup(ContentSpecNode* const pNode); // ----------------------------------------------------------------------- // Private data members // // ----------------------------------------------------------------------- // The following comes from or set by the Scanner // fSchemaGrammar // The current schema grammar used by the validator // // fGrammarResolver // All the schema grammar stored // // fXsiType // Store the Schema Type Attribute Value if schema type is specified // // fNil // Indicates if a nil value is acceptable // fNilFound // Indicates if Nillable has been set // ----------------------------------------------------------------------- // The following used internally in the validator // // fCurrentDatatypeValidator // The validator used for validating the content of elements // with simple types // // fDatatypeBuffer // Buffer for simple type element string content // // fTrailing // Previous chunk had a trailing space // // fSeenNonWhiteSpace // Seen a non-whitespace character in the previous chunk // // fSeenId // Indicate if an attribute of ID type has been seen already, reset per element. // // fSchemaErrorReporter // Report schema process errors // // fTypeStack // Stack of complex type declarations. // // fMostRecentAttrValidator // DatatypeValidator that validated attribute most recently processed // // fErrorOccurred // whether an error occurred in the most recent operation // ----------------------------------------------------------------------- MemoryManager* fMemoryManager; SchemaGrammar* fSchemaGrammar; GrammarResolver* fGrammarResolver; QName* fXsiType; bool fNil; bool fNilFound; DatatypeValidator* fCurrentDatatypeValidator; XMLBuffer* fNotationBuf; XMLBuffer fDatatypeBuffer; bool fTrailing; bool fSeenNonWhiteSpace; bool fSeenId; XSDErrorReporter fSchemaErrorReporter; ValueStackOf* fTypeStack; DatatypeValidator * fMostRecentAttrValidator; bool fErrorOccurred; bool fElemIsSpecified; }; // --------------------------------------------------------------------------- // SchemaValidator: Setter methods // --------------------------------------------------------------------------- inline void SchemaValidator::setGrammarResolver(GrammarResolver* grammarResolver) { fGrammarResolver = grammarResolver; } inline void SchemaValidator::setXsiType(const XMLCh* const prefix , const XMLCh* const localPart , const unsigned int uriId) { delete fXsiType; fXsiType = new (fMemoryManager) QName(prefix, localPart, uriId, fMemoryManager); } inline void SchemaValidator::setNillable(bool isNil) { fNil = isNil; fNilFound = true; } inline void SchemaValidator::resetNillable() { fNil = false; fNilFound = false; } inline void SchemaValidator::setExitOnFirstFatal(const bool newValue) { fSchemaErrorReporter.setExitOnFirstFatal(newValue); } inline void SchemaValidator::setDatatypeBuffer(const XMLCh* const value) { fDatatypeBuffer.append(value); } inline void SchemaValidator::clearDatatypeBuffer() { fDatatypeBuffer.reset(); } // --------------------------------------------------------------------------- // SchemaValidator: Getter methods // --------------------------------------------------------------------------- inline ComplexTypeInfo* SchemaValidator::getCurrentTypeInfo() const { if (fTypeStack->empty()) return 0; return fTypeStack->peek(); } inline DatatypeValidator * SchemaValidator::getCurrentDatatypeValidator() const { return fCurrentDatatypeValidator; } inline DatatypeValidator *SchemaValidator::getMostRecentAttrValidator() const { return fMostRecentAttrValidator; } // --------------------------------------------------------------------------- // Virtual interface // --------------------------------------------------------------------------- inline Grammar* SchemaValidator::getGrammar() const { return fSchemaGrammar; } inline void SchemaValidator::setGrammar(Grammar* aGrammar) { fSchemaGrammar = (SchemaGrammar*) aGrammar; } inline void SchemaValidator::setErrorReporter(XMLErrorReporter* const errorReporter) { XMLValidator::setErrorReporter(errorReporter); fSchemaErrorReporter.setErrorReporter(errorReporter); } // --------------------------------------------------------------------------- // SchemaValidator: DTD handler interface // --------------------------------------------------------------------------- inline bool SchemaValidator::handlesDTD() const { // No DTD scanning return false; } // --------------------------------------------------------------------------- // SchemaValidator: Schema handler interface // --------------------------------------------------------------------------- inline bool SchemaValidator::handlesSchema() const { return true; } // --------------------------------------------------------------------------- // SchemaValidator: Particle derivation checking // --------------------------------------------------------------------------- inline bool SchemaValidator::isOccurrenceRangeOK(const int min1, const int max1, const int min2, const int max2) { if (min1 >= min2 && (max2 == SchemaSymbols::XSD_UNBOUNDED || (max1 != SchemaSymbols::XSD_UNBOUNDED && max1 <= max2))) { return true; } return false; } inline bool SchemaValidator::getErrorOccurred() const { return fErrorOccurred; } inline bool SchemaValidator::getIsElemSpecified() const { return fElemIsSpecified; } inline const XMLCh* SchemaValidator::getNormalizedValue() const { return fDatatypeBuffer.getRawBuffer(); } inline bool SchemaValidator::getIsXsiTypeSet() const { return (fXsiType!=0); } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/validators/schema/SchemaAttDefList.hpp0000644000175000017500000001420711033154422023732 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SchemaAttDefList.hpp 673679 2008-07-03 13:50:10Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_SCHEMAATTDEFLIST_HPP) #define XERCESC_INCLUDE_GUARD_SCHEMAATTDEFLIST_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN // // This is a derivative of the framework abstract class which defines the // interface to a list of attribute defs that belong to a particular // element. The scanner needs to be able to get a list of the attributes // that an element supports, for use during the validation process and for // fixed/default attribute processing. // // For us, we just wrap the RefHash2KeysTableOf collection that the SchemaElementDecl // class uses to store the attributes that belong to it. // // This class does not adopt the hash table, it just references it. The // hash table is owned by the element decl it is a member of. // class VALIDATORS_EXPORT SchemaAttDefList : public XMLAttDefList { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- SchemaAttDefList ( RefHash2KeysTableOf* const listToUse, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); ~SchemaAttDefList(); // ----------------------------------------------------------------------- // Implementation of the virtual interface // ----------------------------------------------------------------------- virtual bool isEmpty() const; virtual XMLAttDef* findAttDef ( const unsigned int uriID , const XMLCh* const attName ); virtual const XMLAttDef* findAttDef ( const unsigned int uriID , const XMLCh* const attName ) const; virtual XMLAttDef* findAttDef ( const XMLCh* const attURI , const XMLCh* const attName ); virtual const XMLAttDef* findAttDef ( const XMLCh* const attURI , const XMLCh* const attName ) const; XMLAttDef* findAttDefLocalPart ( const unsigned int uriID , const XMLCh* const attLocalPart ); const XMLAttDef* findAttDefLocalPart ( const unsigned int uriID , const XMLCh* const attLocalPart ) const; /** * return total number of attributes in this list */ virtual XMLSize_t getAttDefCount() const ; /** * return attribute at the index-th position in the list. */ virtual XMLAttDef &getAttDef(XMLSize_t index) ; /** * return attribute at the index-th position in the list. */ virtual const XMLAttDef &getAttDef(XMLSize_t index) const ; /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(SchemaAttDefList) SchemaAttDefList(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- SchemaAttDefList(const SchemaAttDefList&); SchemaAttDefList& operator=(const SchemaAttDefList&); void addAttDef(SchemaAttDef *toAdd); // ----------------------------------------------------------------------- // Private data members // // fEnum // This is an enumerator for the list that we use to do the enumerator // type methods of this class. // // fList // The list of SchemaAttDef objects that represent the attributes that // a particular element supports. // fArray // vector of pointers to the DTDAttDef objects contained in this list // fSize // size of fArray // fCount // number of DTDAttDef objects currently stored in this list // ----------------------------------------------------------------------- RefHash2KeysTableOfEnumerator* fEnum; RefHash2KeysTableOf* fList; SchemaAttDef** fArray; XMLSize_t fSize; XMLSize_t fCount; friend class ComplexTypeInfo; }; inline void SchemaAttDefList::addAttDef(SchemaAttDef *toAdd) { if(fCount == fSize) { // need to grow fArray fSize <<= 1; SchemaAttDef** newArray = (SchemaAttDef **)((getMemoryManager())->allocate( sizeof(SchemaAttDef*) * fSize )); memcpy(newArray, fArray, fCount * sizeof(SchemaAttDef *)); (getMemoryManager())->deallocate(fArray); fArray = newArray; } fArray[fCount++] = toAdd; } inline XMLAttDef* SchemaAttDefList::findAttDefLocalPart(const unsigned int uriID , const XMLCh* const attLocalPart) { return fList->get((void*)attLocalPart, uriID); } inline const XMLAttDef* SchemaAttDefList::findAttDefLocalPart(const unsigned int uriID , const XMLCh* const attLocalPart) const { return fList->get((void*)attLocalPart, uriID); } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/validators/schema/XercesGroupInfo.hpp0000644000175000017500000001464211360344373023704 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XercesGroupInfo.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_XERCESGROUPINFO_HPP) #define XERCESC_INCLUDE_GUARD_XERCESGROUPINFO_HPP /** * The class act as a place holder to store group information. * * The class is intended for internal use. */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Forward Declarations // --------------------------------------------------------------------------- class ContentSpecNode; class XSDLocator; class VALIDATORS_EXPORT XercesGroupInfo : public XSerializable, public XMemory { public: // ----------------------------------------------------------------------- // Public Constructors/Destructor // ----------------------------------------------------------------------- XercesGroupInfo ( unsigned int groupNameId , unsigned int groupNamespaceId , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); ~XercesGroupInfo(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- bool getCheckElementConsistency() const; unsigned int getScope() const; XMLSize_t elementCount() const; ContentSpecNode* getContentSpec() const; SchemaElementDecl* elementAt(const XMLSize_t index); const SchemaElementDecl* elementAt(const XMLSize_t index) const; XSDLocator* getLocator() const; XercesGroupInfo* getBaseGroup() const; unsigned int getNameId() const; unsigned int getNamespaceId() const; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- void setScope(const unsigned int other); void setContentSpec(ContentSpecNode* const other); void addElement(SchemaElementDecl* const toAdd); void setLocator(XSDLocator* const aLocator); void setBaseGroup(XercesGroupInfo* const baseGroup); void setCheckElementConsistency(const bool aValue); /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(XercesGroupInfo) XercesGroupInfo(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XercesGroupInfo(const XercesGroupInfo& elemInfo); XercesGroupInfo& operator= (const XercesGroupInfo& other); // ----------------------------------------------------------------------- // Private data members // ----------------------------------------------------------------------- bool fCheckElementConsistency; unsigned int fScope; unsigned int fNameId; unsigned int fNamespaceId; ContentSpecNode* fContentSpec; RefVectorOf* fElements; XercesGroupInfo* fBaseGroup; // redefine by restriction XSDLocator* fLocator; }; // --------------------------------------------------------------------------- // XercesGroupInfo: Getter methods // --------------------------------------------------------------------------- inline unsigned int XercesGroupInfo::getScope() const { return fScope; } inline XMLSize_t XercesGroupInfo::elementCount() const { return fElements->size(); } inline ContentSpecNode* XercesGroupInfo::getContentSpec() const { return fContentSpec; } inline SchemaElementDecl* XercesGroupInfo::elementAt(const XMLSize_t index) { return fElements->elementAt(index); } inline const SchemaElementDecl* XercesGroupInfo::elementAt(const XMLSize_t index) const { return fElements->elementAt(index); } inline XSDLocator* XercesGroupInfo::getLocator() const { return fLocator; } inline XercesGroupInfo* XercesGroupInfo::getBaseGroup() const { return fBaseGroup; } inline bool XercesGroupInfo::getCheckElementConsistency() const { return fCheckElementConsistency; } inline unsigned int XercesGroupInfo::getNameId() const { return fNameId; } inline unsigned int XercesGroupInfo::getNamespaceId() const { return fNamespaceId; } // --------------------------------------------------------------------------- // XercesGroupInfo: Setter methods // ---------------------------------------------------------------------------} inline void XercesGroupInfo::setScope(const unsigned int other) { fScope = other; } inline void XercesGroupInfo::setContentSpec(ContentSpecNode* const other) { fContentSpec = other; } inline void XercesGroupInfo::addElement(SchemaElementDecl* const elem) { if (!fElements->containsElement(elem)) fElements->addElement(elem); } inline void XercesGroupInfo::setBaseGroup(XercesGroupInfo* const baseGroup) { fBaseGroup = baseGroup; } inline void XercesGroupInfo::setCheckElementConsistency(const bool aValue) { fCheckElementConsistency = aValue; } XERCES_CPP_NAMESPACE_END #endif /** * End of file XercesGroupInfo.hpp */ xerces-c-3.1.1/src/xercesc/validators/schema/SchemaGrammar.cpp0000644000175000017500000003003311302527023023303 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SchemaGrammar.cpp 883376 2009-11-23 15:45:23Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN typedef JanitorMemFunCall CleanupType; // --------------------------------------------------------------------------- // SchemaGrammar: Constructors and Destructor // --------------------------------------------------------------------------- SchemaGrammar::SchemaGrammar(MemoryManager* const manager) : fTargetNamespace(0) , fElemDeclPool(0) , fElemNonDeclPool(0) , fGroupElemDeclPool(0) , fNotationDeclPool(0) , fAttributeDeclRegistry(0) , fComplexTypeRegistry(0) , fGroupInfoRegistry(0) , fAttGroupInfoRegistry(0) , fValidSubstitutionGroups(0) , fValidationContext(0) , fMemoryManager(manager) , fGramDesc(0) , fAnnotations(0) , fValidated(false) , fDatatypeRegistry(manager) , fScopeCount (0) , fAnonTypeCount (0) { CleanupType cleanup(this, &SchemaGrammar::cleanUp); // // Init all the pool members. // // Investigate what the optimum values would be for the various // pools. // fElemDeclPool = new (fMemoryManager) RefHash3KeysIdPool(109, true, 128, fMemoryManager); try { // should not be necessary now that grammars, once built, // are read-only // fElemNonDeclPool = new (fMemoryManager) RefHash3KeysIdPool(29, true, 128, fMemoryManager); fGroupElemDeclPool = new (fMemoryManager) RefHash3KeysIdPool(109, false, 128, fMemoryManager); fNotationDeclPool = new (fMemoryManager) NameIdPool(109, 128, fMemoryManager); fValidationContext = new (fMemoryManager) ValidationContextImpl(fMemoryManager); //REVISIT: use grammarPool to create fGramDesc = new (fMemoryManager) XMLSchemaDescriptionImpl(XMLUni::fgXMLNSURIName, fMemoryManager); // Create annotation table fAnnotations = new (fMemoryManager) RefHashTableOf ( 29, true, fMemoryManager ); // // Call our own reset method. This lets us have the pool setup stuff // done in just one place (because this stame setup stuff has to be // done every time we are reset.) // reset(); } catch(const OutOfMemoryException&) { cleanup.release(); throw; } cleanup.release(); } SchemaGrammar::~SchemaGrammar() { cleanUp(); } // ----------------------------------------------------------------------- // Virtual methods // ----------------------------------------------------------------------- XMLElementDecl* SchemaGrammar::findOrAddElemDecl (const unsigned int uriId , const XMLCh* const baseName , const XMLCh* const prefixName , const XMLCh* const qName , unsigned int scope , bool& wasAdded ) { // See it it exists SchemaElementDecl* retVal = (SchemaElementDecl*) getElemDecl(uriId, baseName, qName, scope); // if not, then add this in if (!retVal) { retVal = new (fMemoryManager) SchemaElementDecl ( prefixName , baseName , uriId , SchemaElementDecl::Any , Grammar::TOP_LEVEL_SCOPE , fMemoryManager ); if(!fElemNonDeclPool) fElemNonDeclPool = new (fMemoryManager) RefHash3KeysIdPool(29, true, 128, fMemoryManager); const XMLSize_t elemId = fElemNonDeclPool->put((void*)retVal->getBaseName(), uriId, scope, retVal); retVal->setId(elemId); wasAdded = true; } else { wasAdded = false; } return retVal; } XMLElementDecl* SchemaGrammar::putElemDecl (const unsigned int uriId , const XMLCh* const baseName , const XMLCh* const prefixName , const XMLCh* const , unsigned int scope , const bool notDeclared) { SchemaElementDecl* retVal = new (fMemoryManager) SchemaElementDecl ( prefixName , baseName , uriId , SchemaElementDecl::Any , Grammar::TOP_LEVEL_SCOPE , fMemoryManager ); if(notDeclared) { if(!fElemNonDeclPool) fElemNonDeclPool = new (fMemoryManager) RefHash3KeysIdPool(29, true, 128, fMemoryManager); retVal->setId(fElemNonDeclPool->put((void*)retVal->getBaseName(), uriId, scope, retVal)); } else { retVal->setId(fElemDeclPool->put((void*)retVal->getBaseName(), uriId, scope, retVal)); } return retVal; } void SchemaGrammar::reset() { // // We need to reset all of the pools. // fElemDeclPool->removeAll(); if(fElemNonDeclPool) fElemNonDeclPool->removeAll(); fGroupElemDeclPool->removeAll(); fNotationDeclPool->removeAll(); fAnnotations->removeAll(); fValidated = false; } void SchemaGrammar::cleanUp() { delete fElemDeclPool; if(fElemNonDeclPool) delete fElemNonDeclPool; delete fGroupElemDeclPool; delete fNotationDeclPool; fMemoryManager->deallocate(fTargetNamespace);//delete [] fTargetNamespace; delete fAttributeDeclRegistry; delete fComplexTypeRegistry; delete fGroupInfoRegistry; delete fAttGroupInfoRegistry; delete fValidSubstitutionGroups; delete fValidationContext; delete fGramDesc; delete fAnnotations; } void SchemaGrammar::setGrammarDescription(XMLGrammarDescription* gramDesc) { if ((!gramDesc) || (gramDesc->getGrammarType() != Grammar::SchemaGrammarType)) return; if (fGramDesc) delete fGramDesc; //adopt the grammar Description fGramDesc = (XMLSchemaDescription*) gramDesc; } // --------------------------------------------------------------------------- // SchemaGrammar: Helper methods // --------------------------------------------------------------------------- void SchemaGrammar::putAnnotation(void* key, XSAnnotation* const annotation) { fAnnotations->put(key, annotation); } void SchemaGrammar::addAnnotation(XSAnnotation* const annotation) { XSAnnotation* lAnnot = fAnnotations->get(this); if (lAnnot) lAnnot->setNext(annotation); else fAnnotations->put(this, annotation); } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(SchemaGrammar) void SchemaGrammar::serialize(XSerializeEngine& serEng) { /*** * don't serialize ValidationContext* fValidationContext; * fElemNonDeclPool ***/ Grammar::serialize(serEng); if (serEng.isStoring()) { //serialize DatatypeValidatorFactory first fDatatypeRegistry.serialize(serEng); /*** * * Serialize RefHash3KeysIdPool* fElemDeclPool; * Serialize RefHash3KeysIdPool* fGroupElemDeclPool; * ***/ XTemplateSerializer::storeObject(fElemDeclPool, serEng); XTemplateSerializer::storeObject(fGroupElemDeclPool, serEng); /*** * Serialize NameIdPool* fNotationDeclPool; ***/ XTemplateSerializer::storeObject(fNotationDeclPool, serEng); /*** * * Serialize RefHashTableOf* fAttributeDeclRegistry; * Serialize RefHashTableOf* fComplexTypeRegistry; * Serialize RefHashTableOf* fGroupInfoRegistry; * Serialize RefHashTableOf* fAttGroupInfoRegistry; * Serialize RefHashTableOf* fIDRefList; * ***/ XTemplateSerializer::storeObject(fAttributeDeclRegistry, serEng); XTemplateSerializer::storeObject(fComplexTypeRegistry, serEng); XTemplateSerializer::storeObject(fGroupInfoRegistry, serEng); XTemplateSerializer::storeObject(fAttGroupInfoRegistry, serEng); /*** * Serialize RefHash2KeysTableOf* fValidSubstitutionGroups; ***/ XTemplateSerializer::storeObject(fValidSubstitutionGroups, serEng); /*** * Serialize RefHashTableOf* fAnnotations; ***/ XTemplateSerializer::storeObject(fAnnotations, serEng); serEng.writeString(fTargetNamespace); serEng<serialize(serEng); } else { fDatatypeRegistry.serialize(serEng); /*** * * Deserialize RefHash3KeysIdPool* fElemDeclPool; * Deserialize RefHash3KeysIdPool* fGroupElemDeclPool; * ***/ XTemplateSerializer::loadObject(&fElemDeclPool, 109, true, 128, serEng); XTemplateSerializer::loadObject(&fGroupElemDeclPool, 109, true, 128, serEng); /*** * Deserialize NameIdPool* fNotationDeclPool; ***/ XTemplateSerializer::loadObject(&fNotationDeclPool, 109, 128, serEng); /*** * * Deserialize RefHashTableOf* fAttributeDeclRegistry; * Deserialize RefHashTableOf* fComplexTypeRegistry; * Deserialize RefHashTableOf* fGroupInfoRegistry; * Deserialize RefHashTableOf* fAttGroupInfoRegistry; * Deserialize RefHashTableOf* fIDRefList; * ***/ XTemplateSerializer::loadObject(&fAttributeDeclRegistry, 29, true, serEng); XTemplateSerializer::loadObject(&fComplexTypeRegistry, 29, true, serEng); XTemplateSerializer::loadObject(&fGroupInfoRegistry, 13, true, serEng); XTemplateSerializer::loadObject(&fAttGroupInfoRegistry, 13, true, serEng); /*** * Deserialize RefHash2KeysTableOf* fValidSubstitutionGroups; ***/ XTemplateSerializer::loadObject(&fValidSubstitutionGroups, 29, true, serEng); /*** * Deserialize RefHashTableOf* fAnnotations; ***/ XTemplateSerializer::loadObject(&fAnnotations, 29, true, serEng); serEng.readString(fTargetNamespace); serEng>>fValidated; /*** * serialize() method shall be used to load object * which has been created in ctor ***/ fGramDesc->serialize(serEng); } } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/validators/schema/XMLSchemaDescriptionImpl.hpp0000644000175000017500000001245510606722647025437 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLSchemaDescriptionImpl.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_XMLSCHEMADESCRIPTIONIMPL_HPP) #define XERCESC_INCLUDE_GUARD_XMLSCHEMADESCRIPTIONIMPL_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN class XMLAttDefs; class XMLPARSER_EXPORT XMLSchemaDescriptionImpl : public XMLSchemaDescription { public : // ----------------------------------------------------------------------- /** @name constructor and destructor */ // ----------------------------------------------------------------------- //@{ XMLSchemaDescriptionImpl( const XMLCh* const targetNamespace , MemoryManager* const memMgr ); ~XMLSchemaDescriptionImpl(); //@} // ----------------------------------------------------------------------- /** @name Implementation of GrammarDescription Interface */ // ----------------------------------------------------------------------- //@{ /** * getGrammarKey * */ virtual const XMLCh* getGrammarKey() const; //@} // ----------------------------------------------------------------------- /** @name Implementation of SchemaDescription Interface */ // ----------------------------------------------------------------------- //@{ /** * getContextType * */ virtual ContextType getContextType() const; /** * getTargetNamespace * */ virtual const XMLCh* getTargetNamespace() const; /** * getLocationHints * */ virtual const RefArrayVectorOf* getLocationHints() const; /** * getTriggeringComponent * */ virtual const QName* getTriggeringComponent() const; /** * getenclosingElementName * */ virtual const QName* getEnclosingElementName() const; /** * getAttributes * */ virtual const XMLAttDef* getAttributes() const; /** * setContextType * */ virtual void setContextType(ContextType); /** * setTargetNamespace * */ virtual void setTargetNamespace(const XMLCh* const); /** * setLocationHints * */ virtual void setLocationHints(const XMLCh* const); /** * setTriggeringComponent * */ virtual void setTriggeringComponent(QName* const); /** * getenclosingElementName * */ virtual void setEnclosingElementName(QName* const); /** * setAttributes * */ virtual void setAttributes(XMLAttDef* const); //@} /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(XMLSchemaDescriptionImpl) XMLSchemaDescriptionImpl(MemoryManager* const memMgr = XMLPlatformUtils::fgMemoryManager); private : // ----------------------------------------------------------------------- /** name Unimplemented copy constructor and operator= */ // ----------------------------------------------------------------------- //@{ XMLSchemaDescriptionImpl(const XMLSchemaDescriptionImpl& ); XMLSchemaDescriptionImpl& operator=(const XMLSchemaDescriptionImpl& ); //@} // ----------------------------------------------------------------------- // Private data members // // All data member in this implementation are owned to out survive // parser. Except for fNamespace which is replicated upon set, the // rest shall be created by the embedded memoryManager. // // fContextType // // fNamespace owned // // fLocationHints owned // // fTriggeringComponent owned // // fEnclosingElementName owned // // fAttributes referenced // // ----------------------------------------------------------------------- XMLSchemaDescription::ContextType fContextType; const XMLCh* fNamespace; RefArrayVectorOf* fLocationHints; const QName* fTriggeringComponent; const QName* fEnclosingElementName; const XMLAttDef* fAttributes; }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/validators/schema/XSDLocator.cpp0000644000175000017500000000366211031170654022571 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XSDLocator.cpp 672273 2008-06-27 13:57:00Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // XSDLocator: Constructors and Destructor // --------------------------------------------------------------------------- XSDLocator::XSDLocator() : fLineNo(0) , fColumnNo(0) , fSystemId(0) , fPublicId(0) { } // --------------------------------------------------------------------------- // XSDLocator: Setter methods // --------------------------------------------------------------------------- void XSDLocator::setValues(const XMLCh* const systemId, const XMLCh* const publicId, const XMLFileLoc lineNo, const XMLFileLoc columnNo) { fLineNo = lineNo; fColumnNo = columnNo; fSystemId = systemId; fPublicId = publicId; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/validators/schema/ComplexTypeInfo.hpp0000644000175000017500000004010111360344373023674 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: ComplexTypeInfo.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_COMPLEXTYPEINFO_HPP) #define XERCESC_INCLUDE_GUARD_COMPLEXTYPEINFO_HPP /** * The class act as a place holder to store complex type information. * * The class is intended for internal use. */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Forward Declarations // --------------------------------------------------------------------------- class DatatypeValidator; class ContentSpecNode; class SchemaAttDefList; class SchemaElementDecl; class XSDLocator; class VALIDATORS_EXPORT ComplexTypeInfo : public XSerializable, public XMemory { public: // ----------------------------------------------------------------------- // Public Constructors/Destructor // ----------------------------------------------------------------------- ComplexTypeInfo(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); ~ComplexTypeInfo(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- bool getAbstract() const; bool getAdoptContentSpec() const; bool containsAttWithTypeId() const; bool getPreprocessed() const; int getDerivedBy() const; int getBlockSet() const; int getFinalSet() const; unsigned int getScopeDefined() const; unsigned int getElementId() const; int getContentType() const; XMLSize_t elementCount() const; XMLCh* getTypeName() const; DatatypeValidator* getBaseDatatypeValidator() const; DatatypeValidator* getDatatypeValidator() const; ComplexTypeInfo* getBaseComplexTypeInfo() const; ContentSpecNode* getContentSpec() const; const SchemaAttDef* getAttWildCard() const; SchemaAttDef* getAttWildCard(); const SchemaAttDef* getAttDef(const XMLCh* const baseName, const int uriId) const; SchemaAttDef* getAttDef(const XMLCh* const baseName, const int uriId); XMLAttDefList& getAttDefList() const; const SchemaElementDecl* elementAt(const XMLSize_t index) const; SchemaElementDecl* elementAt(const XMLSize_t index); XMLContentModel* getContentModel(const bool checkUPA = false); const XMLCh* getFormattedContentModel () const; XSDLocator* getLocator() const; const XMLCh* getTypeLocalName() const; const XMLCh* getTypeUri() const; /** * returns true if this type is anonymous **/ bool getAnonymous() const; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- void setAbstract(const bool isAbstract); void setAdoptContentSpec(const bool toAdopt); void setAttWithTypeId(const bool value); void setPreprocessed(const bool aValue = true); void setDerivedBy(const int derivedBy); void setBlockSet(const int blockSet); void setFinalSet(const int finalSet); void setScopeDefined(const unsigned int scopeDefined); void setElementId(const unsigned int elemId); void setTypeName(const XMLCh* const typeName); void setContentType(const int contentType); void setBaseDatatypeValidator(DatatypeValidator* const baseValidator); void setDatatypeValidator(DatatypeValidator* const validator); void setBaseComplexTypeInfo(ComplexTypeInfo* const typeInfo); void setContentSpec(ContentSpecNode* const toAdopt); void setAttWildCard(SchemaAttDef* const toAdopt); void addAttDef(SchemaAttDef* const toAdd); void addElement(SchemaElementDecl* const toAdd); void setLocator(XSDLocator* const aLocator); /** * sets this type to be anonymous **/ void setAnonymous(); // ----------------------------------------------------------------------- // Helper methods // ----------------------------------------------------------------------- bool hasAttDefs() const; bool contains(const XMLCh* const attName); void checkUniqueParticleAttribution ( SchemaGrammar* const pGrammar , GrammarResolver* const pGrammarResolver , XMLStringPool* const pStringPool , XMLValidator* const pValidator ) ; /** * Return a singleton that represents 'anyType' * * @param emptyNSId the uri id of the empty namespace */ static ComplexTypeInfo* getAnyType(unsigned int emptyNSId); /** * Notification that lazy data has been deleted */ static void reinitAnyType(); /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(ComplexTypeInfo) private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- ComplexTypeInfo(const ComplexTypeInfo& elemInfo); ComplexTypeInfo& operator= (const ComplexTypeInfo& other); // ----------------------------------------------------------------------- // Private helper methods // ----------------------------------------------------------------------- void faultInAttDefList() const; bool useRepeatingLeafNodes(ContentSpecNode* particle); XMLContentModel* makeContentModel(bool checkUPA = false); XMLCh* formatContentModel () const ; ContentSpecNode* expandContentModel(ContentSpecNode* const curNode, int minOccurs, int maxOccurs, bool bAllowCompactSyntax); ContentSpecNode* convertContentSpecTree(ContentSpecNode* const curNode, bool checkUPA, bool bAllowCompactSyntax); void resizeContentSpecOrgURI(); // ----------------------------------------------------------------------- // Private data members // ----------------------------------------------------------------------- bool fAnonymous; bool fAbstract; bool fAdoptContentSpec; bool fAttWithTypeId; bool fPreprocessed; int fDerivedBy; int fBlockSet; int fFinalSet; unsigned int fScopeDefined; int fContentType; unsigned int fElementId; unsigned int fUniqueURI; unsigned int fContentSpecOrgURISize; XMLCh* fTypeName; XMLCh* fTypeLocalName; XMLCh* fTypeUri; DatatypeValidator* fBaseDatatypeValidator; DatatypeValidator* fDatatypeValidator; ComplexTypeInfo* fBaseComplexTypeInfo; ContentSpecNode* fContentSpec; SchemaAttDef* fAttWildCard; SchemaAttDefList* fAttList; RefVectorOf* fElements; RefHash2KeysTableOf* fAttDefs; XMLContentModel* fContentModel; XMLCh* fFormattedModel; unsigned int* fContentSpecOrgURI; XSDLocator* fLocator; MemoryManager* fMemoryManager; static ComplexTypeInfo* fAnyType; friend class XMLInitializer; }; // --------------------------------------------------------------------------- // ComplexTypeInfo: Getter methods // --------------------------------------------------------------------------- inline bool ComplexTypeInfo::getAbstract() const { return fAbstract; } inline bool ComplexTypeInfo::getAdoptContentSpec() const { return fAdoptContentSpec; } inline bool ComplexTypeInfo::containsAttWithTypeId() const { return fAttWithTypeId; } inline bool ComplexTypeInfo::getPreprocessed() const { return fPreprocessed; } inline int ComplexTypeInfo::getDerivedBy() const { return fDerivedBy; } inline int ComplexTypeInfo::getBlockSet() const { return fBlockSet; } inline int ComplexTypeInfo::getFinalSet() const { return fFinalSet; } inline unsigned int ComplexTypeInfo::getScopeDefined() const { return fScopeDefined; } inline unsigned int ComplexTypeInfo::getElementId() const { return fElementId; } inline int ComplexTypeInfo::getContentType() const { return fContentType; } inline XMLSize_t ComplexTypeInfo::elementCount() const { if (fElements) { return fElements->size(); } return 0; } inline XMLCh* ComplexTypeInfo::getTypeName() const { return fTypeName; } inline DatatypeValidator* ComplexTypeInfo::getBaseDatatypeValidator() const { return fBaseDatatypeValidator; } inline DatatypeValidator* ComplexTypeInfo::getDatatypeValidator() const { return fDatatypeValidator; } inline ComplexTypeInfo* ComplexTypeInfo::getBaseComplexTypeInfo() const { return fBaseComplexTypeInfo; } inline ContentSpecNode* ComplexTypeInfo::getContentSpec() const { return fContentSpec; } inline const SchemaAttDef* ComplexTypeInfo::getAttWildCard() const { return fAttWildCard; } inline SchemaAttDef* ComplexTypeInfo::getAttWildCard() { return fAttWildCard; } inline const SchemaAttDef* ComplexTypeInfo::getAttDef(const XMLCh* const baseName, const int uriId) const { return fAttDefs->get(baseName, uriId); } inline SchemaAttDef* ComplexTypeInfo::getAttDef(const XMLCh* const baseName, const int uriId) { return fAttDefs->get(baseName, uriId); } inline SchemaElementDecl* ComplexTypeInfo::elementAt(const XMLSize_t index) { if (!fElements) { return 0; // REVISIT - need to throw an exception } return fElements->elementAt(index); } inline const SchemaElementDecl* ComplexTypeInfo::elementAt(const XMLSize_t index) const { if (!fElements) { return 0; // REVISIT - need to throw an exception } return fElements->elementAt(index); } inline XMLContentModel* ComplexTypeInfo::getContentModel(const bool checkUPA) { if (!fContentModel && fContentSpec) fContentModel = makeContentModel(checkUPA); return fContentModel; } inline XSDLocator* ComplexTypeInfo::getLocator() const { return fLocator; } inline bool ComplexTypeInfo::getAnonymous() const { return fAnonymous; } inline const XMLCh* ComplexTypeInfo::getTypeLocalName() const { return fTypeLocalName; } inline const XMLCh* ComplexTypeInfo::getTypeUri() const { return fTypeUri; } // --------------------------------------------------------------------------- // ComplexTypeInfo: Setter methods // --------------------------------------------------------------------------- inline void ComplexTypeInfo::setAbstract(const bool isAbstract) { fAbstract = isAbstract; } inline void ComplexTypeInfo::setAdoptContentSpec(const bool toAdopt) { fAdoptContentSpec = toAdopt; } inline void ComplexTypeInfo::setAttWithTypeId(const bool value) { fAttWithTypeId = value; } inline void ComplexTypeInfo::setPreprocessed(const bool aValue) { fPreprocessed = aValue; } inline void ComplexTypeInfo::setDerivedBy(const int derivedBy) { fDerivedBy = derivedBy; } inline void ComplexTypeInfo::setBlockSet(const int blockSet) { fBlockSet = blockSet; } inline void ComplexTypeInfo::setFinalSet(const int finalSet) { fFinalSet = finalSet; } inline void ComplexTypeInfo::setScopeDefined(const unsigned int scopeDefined) { fScopeDefined = scopeDefined; } inline void ComplexTypeInfo::setElementId(const unsigned int elemId) { fElementId = elemId; } inline void ComplexTypeInfo::setContentType(const int contentType) { fContentType = contentType; } inline void ComplexTypeInfo::setTypeName(const XMLCh* const typeName) { fMemoryManager->deallocate(fTypeName);//delete [] fTypeName; fMemoryManager->deallocate(fTypeLocalName);//delete [] fTypeLocalName; fMemoryManager->deallocate(fTypeUri);//delete [] fTypeUri; if (typeName) { fTypeName = XMLString::replicate(typeName, fMemoryManager); int index = XMLString::indexOf(fTypeName, chComma); XMLSize_t length = XMLString::stringLen(fTypeName); fTypeLocalName = (XMLCh*) fMemoryManager->allocate ( (length - index + 1) * sizeof(XMLCh) ); //new XMLCh[length - index + 1]; XMLString::subString(fTypeLocalName, fTypeName, index + 1, length, fMemoryManager); fTypeUri = (XMLCh*) fMemoryManager->allocate ( (index + 1) * sizeof(XMLCh) ); //new XMLCh[index + 1]; XMLString::subString(fTypeUri, fTypeName, 0, index, fMemoryManager); } else { fTypeName = fTypeLocalName = fTypeUri = 0; } } inline void ComplexTypeInfo::setBaseDatatypeValidator(DatatypeValidator* const validator) { fBaseDatatypeValidator = validator; } inline void ComplexTypeInfo::setDatatypeValidator(DatatypeValidator* const validator) { fDatatypeValidator = validator; } inline void ComplexTypeInfo::setBaseComplexTypeInfo(ComplexTypeInfo* const typeInfo) { fBaseComplexTypeInfo = typeInfo; } inline void ComplexTypeInfo::addElement(SchemaElementDecl* const elem) { if (!fElements) { fElements = new (fMemoryManager) RefVectorOf(8, false, fMemoryManager); } else if (fElements->containsElement(elem)) { return; } fElements->addElement(elem); } inline void ComplexTypeInfo::setAttWildCard(SchemaAttDef* const toAdopt) { if (fAttWildCard) { delete fAttWildCard; } fAttWildCard = toAdopt; } inline void ComplexTypeInfo::setAnonymous() { fAnonymous = true; } // --------------------------------------------------------------------------- // ComplexTypeInfo: Helper methods // --------------------------------------------------------------------------- inline bool ComplexTypeInfo::hasAttDefs() const { return !fAttDefs->isEmpty(); } inline bool ComplexTypeInfo::contains(const XMLCh* const attName) { RefHash2KeysTableOfEnumerator enumDefs(fAttDefs, false, fMemoryManager); while (enumDefs.hasMoreElements()) { if (XMLString::equals(attName, enumDefs.nextElement().getAttName()->getLocalPart())) { return true; } } return false; } XERCES_CPP_NAMESPACE_END #endif /** * End of file ComplexTypeInfo.hpp */ xerces-c-3.1.1/src/xercesc/validators/schema/XercesAttGroupInfo.cpp0000644000175000017500000001144011037122704024332 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XercesAttGroupInfo.cpp 676911 2008-07-15 13:27:32Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // XercesAttGroupInfo: Constructors and Destructor // --------------------------------------------------------------------------- XercesAttGroupInfo::XercesAttGroupInfo(MemoryManager* const manager) : fTypeWithId(false) , fNameId(0) , fNamespaceId(0) , fAttributes(0) , fAnyAttributes(0) , fCompleteWildCard(0) , fMemoryManager(manager) { } XercesAttGroupInfo::XercesAttGroupInfo(unsigned int attGroupNameId, unsigned int attGroupNamespaceId, MemoryManager* const manager) : fTypeWithId(false) , fNameId(attGroupNameId) , fNamespaceId(attGroupNamespaceId) , fAttributes(0) , fAnyAttributes(0) , fCompleteWildCard(0) , fMemoryManager(manager) { } XercesAttGroupInfo::~XercesAttGroupInfo() { delete fAttributes; delete fAnyAttributes; delete fCompleteWildCard; } bool XercesAttGroupInfo::containsAttribute(const XMLCh* const name, const unsigned int uri) { if (fAttributes) { XMLSize_t attCount = fAttributes->size(); if (attCount) { for (XMLSize_t i=0; i < attCount; i++) { QName* attName = fAttributes->elementAt(i)->getAttName(); if (attName->getURI() == uri && XMLString::equals(attName->getLocalPart(),name)) { return true; } } } } return false; } // --------------------------------------------------------------------------- // XercesAttGroupInfo: Getter methods // --------------------------------------------------------------------------- const SchemaAttDef* XercesAttGroupInfo::getAttDef(const XMLCh* const baseName, const int uriId) const { // If no list, then return a null if (!fAttributes) return 0; XMLSize_t attSize = fAttributes->size(); for (XMLSize_t i=0; ielementAt(i); QName* attName = attDef->getAttName(); if (uriId == (int) attName->getURI() && XMLString::equals(baseName, attName->getLocalPart())) { return attDef; } } return 0; } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(XercesAttGroupInfo) void XercesAttGroupInfo::serialize(XSerializeEngine& serEng) { if (serEng.isStoring()) { serEng<* fAttributes; * ***/ XTemplateSerializer::storeObject(fAttributes, serEng); /*** * * Serialize RefVectorOf* fAnyAttributes; * ***/ XTemplateSerializer::storeObject(fAnyAttributes, serEng); serEng<>fTypeWithId; serEng>>fNameId; serEng>>fNamespaceId; /*** * * Deserialize RefVectorOf* fAttributes; * ***/ XTemplateSerializer::loadObject(&fAttributes, 4, true, serEng); /*** * * Deserialize RefVectorOf* fAnyAttributes; * ***/ XTemplateSerializer::loadObject(&fAnyAttributes, 2, true, serEng); serEng>>fCompleteWildCard; } } XERCES_CPP_NAMESPACE_END /** * End of file XercesAttGroupInfo.cpp */ xerces-c-3.1.1/src/xercesc/validators/schema/XSDErrorReporter.hpp0000644000175000017500000001030510606722647024013 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XSDErrorReporter.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_XSDERRORREPORTER_HPP) #define XERCESC_INCLUDE_GUARD_XSDERRORREPORTER_HPP #include XERCES_CPP_NAMESPACE_BEGIN class Locator; class XMLErrorReporter; /** * This class reports schema errors */ class VALIDATORS_EXPORT XSDErrorReporter : public XMemory { public: // ----------------------------------------------------------------------- // Constructors are hidden, only the virtual destructor is exposed // ----------------------------------------------------------------------- XSDErrorReporter(XMLErrorReporter* const errorReporter = 0); virtual ~XSDErrorReporter() { } // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- bool getExitOnFirstFatal() const; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- void setErrorReporter(XMLErrorReporter* const errorReporter); void setExitOnFirstFatal(const bool newValue); // ----------------------------------------------------------------------- // Report error methods // ----------------------------------------------------------------------- void emitError(const unsigned int toEmit, const XMLCh* const msgDomain, const Locator* const aLocator); void emitError(const unsigned int toEmit, const XMLCh* const msgDomain, const Locator* const aLocator, const XMLCh* const text1, const XMLCh* const text2 = 0, const XMLCh* const text3 = 0, const XMLCh* const text4 = 0, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); void emitError(const XMLException& except, const Locator* const aLocator); private: // ----------------------------------------------------------------------- // Unimplemented constructors and destructor // ----------------------------------------------------------------------- XSDErrorReporter(const XSDErrorReporter&); XSDErrorReporter& operator=(const XSDErrorReporter&); // ----------------------------------------------------------------------- // Private data members // ----------------------------------------------------------------------- bool fExitOnFirstFatal; XMLErrorReporter* fErrorReporter; }; // --------------------------------------------------------------------------- // XSDErrorReporter: Getter methods // --------------------------------------------------------------------------- inline bool XSDErrorReporter::getExitOnFirstFatal() const { return fExitOnFirstFatal; } // --------------------------------------------------------------------------- // XSDErrorReporter: Setter methods // --------------------------------------------------------------------------- inline void XSDErrorReporter::setExitOnFirstFatal(const bool newValue) { fExitOnFirstFatal = newValue; } inline void XSDErrorReporter::setErrorReporter(XMLErrorReporter* const errorReporter) { fErrorReporter = errorReporter; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/validators/schema/SchemaAttDef.hpp0000644000175000017500000002030211037122704023071 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SchemaAttDef.hpp 676911 2008-07-15 13:27:32Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_SCHEMAATTDEF_HPP) #define XERCESC_INCLUDE_GUARD_SCHEMAATTDEF_HPP #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN class DatatypeValidator; class QName; class ComplexTypeInfo; // // This class is a derivative of the core XMLAttDef class. This class adds // any Schema specific data members and provides Schema specific implementations // of any underlying attribute def virtual methods. // class VALIDATORS_EXPORT SchemaAttDef : public XMLAttDef { public : // ----------------------------------------------------------------------- // Constructors and Destructors // ----------------------------------------------------------------------- SchemaAttDef(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); SchemaAttDef ( const XMLCh* const prefix , const XMLCh* const localPart , const int uriId , const XMLAttDef::AttTypes type = CData , const XMLAttDef::DefAttTypes defType = Implied , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); SchemaAttDef ( const XMLCh* const prefix , const XMLCh* const localPart , const int uriId , const XMLCh* const attValue , const XMLAttDef::AttTypes type , const XMLAttDef::DefAttTypes defType , const XMLCh* const enumValues = 0 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); SchemaAttDef ( const SchemaAttDef* other ); virtual ~SchemaAttDef(); // ----------------------------------------------------------------------- // Implementation of the XMLAttDef interface // ----------------------------------------------------------------------- virtual const XMLCh* getFullName() const; virtual void reset(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- XMLSize_t getElemId() const; QName* getAttName() const; DatatypeValidator* getDatatypeValidator() const; ValueVectorOf* getNamespaceList() const; const SchemaAttDef* getBaseAttDecl() const; SchemaAttDef* getBaseAttDecl(); PSVIDefs::PSVIScope getPSVIScope() const; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- void setElemId(const XMLSize_t newId); void setAttName ( const XMLCh* const prefix ,const XMLCh* const localPart ,const int uriId = -1 ); void setDatatypeValidator(DatatypeValidator* newDatatypeValidator); void setBaseAttDecl(SchemaAttDef* const attDef); void setPSVIScope(const PSVIDefs::PSVIScope toSet); void setNamespaceList(const ValueVectorOf* const toSet); void resetNamespaceList(); void setEnclosingCT(ComplexTypeInfo* complexTypeInfo); /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(SchemaAttDef) private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- SchemaAttDef(const SchemaAttDef&); SchemaAttDef& operator=(const SchemaAttDef&); // ----------------------------------------------------------------------- // Private data members // // fElemId // This is the id of the element (the id is into the element decl // pool) of the element this attribute def said it belonged to. // This is used later to link back to the element, mostly for // validation purposes. // // fAttName // This is the name of the attribute. // // fDatatypeValidator // The DatatypeValidator used to validate this attribute type. // // fNamespaceList // The list of namespace values for a wildcard attribute // // fBaseAttDecl // The base attribute declaration that this attribute is based on // NOTE: we do not have a notion of attribute use, so in the case // of ref'd attributes and inherited attributes, we make a copy // of the actual attribute declaration. The fBaseAttDecl stores that // declaration, and will be helpful when we build the XSModel (i.e // easy access the XSAnnotation object). // ----------------------------------------------------------------------- XMLSize_t fElemId; PSVIDefs::PSVIScope fPSVIScope; QName* fAttName; DatatypeValidator* fDatatypeValidator; ValueVectorOf* fNamespaceList; SchemaAttDef* fBaseAttDecl; }; // --------------------------------------------------------------------------- // SchemaAttDef: Getter methods // --------------------------------------------------------------------------- inline XMLSize_t SchemaAttDef::getElemId() const { return fElemId; } inline QName* SchemaAttDef::getAttName() const { return fAttName; } inline DatatypeValidator* SchemaAttDef::getDatatypeValidator() const { return fDatatypeValidator; } inline ValueVectorOf* SchemaAttDef::getNamespaceList() const { return fNamespaceList; } inline SchemaAttDef* SchemaAttDef::getBaseAttDecl() { return fBaseAttDecl; } inline const SchemaAttDef* SchemaAttDef::getBaseAttDecl() const { return fBaseAttDecl; } inline PSVIDefs::PSVIScope SchemaAttDef::getPSVIScope() const { return fPSVIScope; } // --------------------------------------------------------------------------- // SchemaAttDef: Setter methods // --------------------------------------------------------------------------- inline void SchemaAttDef::setElemId(const XMLSize_t newId) { fElemId = newId; } inline void SchemaAttDef::setDatatypeValidator(DatatypeValidator* newDatatypeValidator) { fDatatypeValidator = newDatatypeValidator; } inline void SchemaAttDef::resetNamespaceList() { if (fNamespaceList && fNamespaceList->size()) { fNamespaceList->removeAllElements(); } } inline void SchemaAttDef::setNamespaceList(const ValueVectorOf* const toSet) { if (toSet && toSet->size()) { if (fNamespaceList) { *fNamespaceList = *toSet; } else { fNamespaceList = new (getMemoryManager()) ValueVectorOf(*toSet); } } else { resetNamespaceList(); } } inline void SchemaAttDef::reset() { } inline void SchemaAttDef::setEnclosingCT(ComplexTypeInfo*) { } inline void SchemaAttDef::setBaseAttDecl(SchemaAttDef* const attDef) { fBaseAttDecl = attDef; } inline void SchemaAttDef::setPSVIScope(const PSVIDefs::PSVIScope toSet) { fPSVIScope = toSet; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/validators/schema/SchemaValidator.cpp0000644000175000017500000024277011243474312023665 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SchemaValidator.cpp 806488 2009-08-21 10:36:58Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // SchemaValidator: Constructors and Destructor // --------------------------------------------------------------------------- SchemaValidator::SchemaValidator( XMLErrorReporter* const errReporter , MemoryManager* const manager) : XMLValidator(errReporter) , fMemoryManager(manager) , fSchemaGrammar(0) , fGrammarResolver(0) , fXsiType(0) , fNil(false) , fNilFound(false) , fCurrentDatatypeValidator(0) , fNotationBuf(0) , fDatatypeBuffer(1023, manager) , fTrailing(false) , fSeenNonWhiteSpace(false) , fSeenId(false) , fTypeStack(0) , fMostRecentAttrValidator(0) , fErrorOccurred(false) , fElemIsSpecified(false) { fTypeStack = new (fMemoryManager) ValueStackOf(8, fMemoryManager); } SchemaValidator::~SchemaValidator() { delete fXsiType; delete fTypeStack; if (fNotationBuf) delete fNotationBuf; } // --------------------------------------------------------------------------- // SchemaValidator: Implementation of the XMLValidator interface // --------------------------------------------------------------------------- bool SchemaValidator::checkContent (XMLElementDecl* const elemDecl , QName** const children , XMLSize_t childCount , XMLSize_t* indexFailingChild) { fErrorOccurred = false; fElemIsSpecified = false; // // Look up the element id in our element decl pool. This will get us // the element decl in our own way of looking at them. // if (!elemDecl) ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Val_InvalidElemId, fMemoryManager); // // Get the content spec type of this element. This will tell us what // to do to validate it. // // the top of the type stack always knows best... ComplexTypeInfo* currType = fTypeStack->pop(); const SchemaElementDecl::ModelTypes modelType = (currType) ? (SchemaElementDecl::ModelTypes)(currType->getContentType()) : ((SchemaElementDecl*)elemDecl)->getModelType(); if (modelType == SchemaElementDecl::Empty || modelType == SchemaElementDecl::ElementOnlyEmpty) { // // We can do this one here. It cannot have any children. If it does // we return 0 as the index of the first bad child. // if (childCount) { fErrorOccurred = true; *indexFailingChild=0; return false; } } else if ((modelType == SchemaElementDecl::Mixed_Simple) || (modelType == SchemaElementDecl::Mixed_Complex) || (modelType == SchemaElementDecl::Children)) { // if nillable, it's an error to have value // XML Schema REC: Validation Rule: Element Locally Valid (Element) // 3.2.1 The element information item must have no // character or element information item [children]. // if (fNil) { if (childCount > 0 || !XMLString::equals(fDatatypeBuffer.getRawBuffer(), XMLUni::fgZeroLenString)) { emitError(XMLValid::NilAttrNotEmpty, elemDecl->getFullName()); fErrorOccurred = true; } } else { // Get the element's content model or fault it in XMLContentModel* elemCM = (currType) ? currType->getContentModel() : ((SchemaElementDecl*)elemDecl)->getContentModel(); // Ask it to validate and return its return unsigned int emptyNS = getScanner()->getEmptyNamespaceId(); bool result = elemCM->validateContent(children, childCount, emptyNS, indexFailingChild, getScanner()->getMemoryManager()); if (!result) { result = elemCM->validateContentSpecial(children , childCount , emptyNS , fGrammarResolver , fGrammarResolver->getStringPool() , indexFailingChild , getScanner()->getMemoryManager()); } if(!result) { fErrorOccurred = true; } return result; } } else if (modelType == SchemaElementDecl::Simple || modelType == SchemaElementDecl::Any) { // Normally for SchemaElementDecl::Any, We pass no judgement on it and anything goes // but if there is a fXsiTypeValidator, we need to use it for validation if (modelType == SchemaElementDecl::Simple && childCount > 0) { emitError(XMLValid::SimpleTypeHasChild, elemDecl->getFullName()); fErrorOccurred = true; } else { XMLCh* value = fDatatypeBuffer.getRawBuffer(); XMLCh* elemDefaultValue = ((SchemaElementDecl*) elemDecl)->getDefaultValue(); if (fNil) { if ((!XMLString::equals(value, XMLUni::fgZeroLenString)) || elemDefaultValue) { emitError(XMLValid::NilAttrNotEmpty, elemDecl->getFullName()); fErrorOccurred = true; } } else if (fCurrentDatatypeValidator) { DatatypeValidator::ValidatorType eleDefDVType = fCurrentDatatypeValidator->getType(); bool validateCanonical = false; if (eleDefDVType == DatatypeValidator::NOTATION) { // if notation, need to bind URI to notation first if (!fNotationBuf) fNotationBuf = new (fMemoryManager) XMLBuffer(1023, fMemoryManager); // Make sure that this value maps to one of the // notation values in the enumList parameter. We don't have to // look it up in the notation pool (if a notation) because we // will look up the enumerated values themselves. If they are in // the notation pool (after the Grammar is parsed), then obviously // this value will be legal since it matches one of them. int colonPos = -1; unsigned int uriId = getScanner()->resolveQName(value, *fNotationBuf, ElemStack::Mode_Element, colonPos); const XMLCh* uriText = getScanner()->getURIText(uriId); if (uriText && *uriText) { fNotationBuf->set(uriText); fNotationBuf->append(chColon); fNotationBuf->append(&value[colonPos + 1]); value = fNotationBuf->getRawBuffer(); } } if (elemDefaultValue) { if (XMLString::equals(value, XMLUni::fgZeroLenString)) { fElemIsSpecified = true; // if this element didn't specified any value // use default value if (getScanner()->getDocHandler()) getScanner()->getDocHandler()->docCharacters(elemDefaultValue, XMLString::stringLen(elemDefaultValue), false); // Normally for default value, it has been validated already during TraverseSchema // But if there was a xsi:type and this validator is fXsiTypeValidator, // need to validate again // we determine this if the current content dataype validator // is neither the one in the element nor the one in the current // complex type (if any) if ((fCurrentDatatypeValidator != ((SchemaElementDecl*)elemDecl)->getDatatypeValidator()) && (!fTypeStack->peek() || (fCurrentDatatypeValidator != fTypeStack->peek()->getDatatypeValidator()))) { value = elemDefaultValue; validateCanonical = true; } else value = 0; } else { // this element has specified some value // if the flag is FIXED, then this value must be same as default value if ((((SchemaElementDecl*)elemDecl)->getMiscFlags() & SchemaSymbols::XSD_FIXED) != 0) { if (fCurrentDatatypeValidator->compare(value, elemDefaultValue, fMemoryManager) != 0 ) { emitError(XMLValid::FixedDifferentFromActual, elemDecl->getFullName()); fErrorOccurred = true; } } } } if ((!fErrorOccurred) && value) { try { fCurrentDatatypeValidator->validate(value, getScanner()->getValidationContext(), fMemoryManager); if (validateCanonical) { XMLCh* canonical = (XMLCh*) fCurrentDatatypeValidator->getCanonicalRepresentation(value, fMemoryManager); ArrayJanitor tempCanonical(canonical, fMemoryManager); fCurrentDatatypeValidator->validate(canonical, getScanner()->getValidationContext(), fMemoryManager); } } catch (XMLException& idve) { emitError (XMLValid::DatatypeError, idve.getCode(), idve.getMessage()); fErrorOccurred = true; } catch(const OutOfMemoryException&) { throw; } catch (...) { emitError(XMLValid::GenericError); throw; } } } else if (modelType == SchemaElementDecl::Simple) { emitError(XMLValid::NoDatatypeValidatorForSimpleType, elemDecl->getFullName()); fErrorOccurred = true; } // modelType is any else if (elemDefaultValue) { if (XMLString::equals(value, XMLUni::fgZeroLenString)) { fElemIsSpecified = true; // if this element didn't specified any value // use default value if (getScanner()->getDocHandler()) { getScanner()->getDocHandler()->docCharacters(elemDefaultValue, XMLString::stringLen(elemDefaultValue), false); } } } } } else { ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::CM_UnknownCMType, fMemoryManager); } // must rely on scanner to clear fDatatypeBuffer // since it may need to query its contents after this method completes fNil = false; fNilFound = false; fTrailing=false; fSeenNonWhiteSpace = false; fCurrentDatatypeValidator = 0; // Went ok, so return success return true; } void SchemaValidator::faultInAttr (XMLAttr& toFill, const XMLAttDef& attDef) const { // // At this level, we cannot set the URI id. So we just set it to zero // and leave it at that. The scanner, who called us, will look at the // prefix we stored (if any), resolve it, and store the URL id if any. // SchemaAttDef* schemaAttDef = (SchemaAttDef*) &attDef; QName* attName = schemaAttDef->getAttName(); toFill.set ( attName->getURI() , attName->getLocalPart() , attName->getPrefix() , schemaAttDef->getValue() , schemaAttDef->getType() ); } void SchemaValidator::reset() { fTrailing = false; fSeenNonWhiteSpace = false; fSeenId = false; fTypeStack->removeAllElements(); delete fXsiType; fXsiType = 0; fCurrentDatatypeValidator = 0; fNil = false; fNilFound = false; fDatatypeBuffer.reset(); fErrorOccurred = false; } bool SchemaValidator::requiresNamespaces() const { return true; } void SchemaValidator::validateAttrValue (const XMLAttDef* attDef , const XMLCh* const attrValue , bool preValidation , const XMLElementDecl* elemDecl) { fErrorOccurred = false; //turn on IdRefList checking getScanner()->getValidationContext()->toCheckIdRefList(true); // // Get quick refs to lot of the stuff in the passed objects in // order to simplify the code below, which will reference them very // often. // XMLAttDef::AttTypes type = attDef->getType(); const XMLAttDef::DefAttTypes defType = attDef->getDefaultType(); // // If the default type is fixed, then make sure the passed value maps // to the fixed value. // // If during preContentValidation, the value we are validating is the fixed value itself // so no need to compare. // Only need to do this for regular attribute value validation // if ((defType == XMLAttDef::Fixed || defType == XMLAttDef::Required_And_Fixed) && !preValidation) { const XMLCh* const valueText = attDef->getValue(); if (!XMLString::equals(attrValue, valueText)) { emitError(XMLValid::NotSameAsFixedValue, attDef->getFullName(), attrValue, valueText); fErrorOccurred = true; } } // An empty string cannot be valid for non_CDATA any of the other types if (!attrValue[0] && type != XMLAttDef::Simple) { emitError(XMLValid::InvalidEmptyAttValue, attDef->getFullName()); // accords with original DOMTypeInfo implementation, but this does not feel right. fMostRecentAttrValidator = DatatypeValidatorFactory::getBuiltInRegistry()->get(SchemaSymbols::fgDT_ANYSIMPLETYPE); fErrorOccurred = true; return; } DatatypeValidator* attDefDV = ((SchemaAttDef*) attDef)->getDatatypeValidator(); if (!attDefDV) { emitError(XMLValid::NoDatatypeValidatorForAttribute, attDef->getFullName()); fErrorOccurred = true; } else { DatatypeValidator::ValidatorType attDefDVType = attDefDV->getType(); ValidationContext *context = getScanner()->getValidationContext(); try { // first, if notation, need to bind URI to notation first if (attDefDVType == DatatypeValidator::NOTATION) { // // Make sure that this value maps to one of the // notation values in the enumList parameter. We don't have to // look it up in the notation pool (if a notation) because we // will look up the enumerated values themselves. If they are in // the notation pool (after the Grammar is parsed), then obviously // this value will be legal since it matches one of them. // XMLBuffer notationBuf(1023, fMemoryManager); int colonPos = -1; unsigned int uriId = getScanner()->resolveQName(attrValue, notationBuf, ElemStack::Mode_Element, colonPos); const XMLCh* uriText = getScanner()->getURIText(uriId); if (uriText && *uriText) { notationBuf.set(uriText); notationBuf.append(chColon); notationBuf.append(&attrValue[colonPos + 1]); } else { notationBuf.set(attrValue); } attDefDV->validate(notationBuf.getRawBuffer() , context , fMemoryManager); } else { attDefDV->validate(attrValue , context , fMemoryManager); } } catch (XMLException& idve) { fErrorOccurred = true; emitError (XMLValid::DatatypeError, idve.getCode(), idve.getMessage()); } catch(const OutOfMemoryException&) { throw; } catch (...) { emitError(XMLValid::GenericError); fMostRecentAttrValidator = DatatypeValidatorFactory::getBuiltInRegistry()->get(SchemaSymbols::fgDT_ANYSIMPLETYPE); fErrorOccurred = true; throw; } fMostRecentAttrValidator = attDefDV; // now we can look for ID's, entities, ... // set up the entitydeclpool in ENTITYDatatypeValidator // and the idreflist in ID/IDREFDatatypeValidator // indicate if this attribute is of type ID bool thisIsAnId = false; if (attDefDVType == DatatypeValidator::List) { DatatypeValidator* itemDTV = ((ListDatatypeValidator*)attDefDV)->getItemTypeDTV(); DatatypeValidator::ValidatorType itemDTVType = itemDTV->getType(); if (itemDTVType == DatatypeValidator::ID) { thisIsAnId = true; } else if (itemDTVType == DatatypeValidator::IDREF) { // if in prevalidatoin, do not add attDef to IDREFList if (preValidation) //todo: when to setIdRefList back to non-null getScanner()->getValidationContext()->toCheckIdRefList(false); } } else if (attDefDVType == DatatypeValidator::Union) { DatatypeValidator *memberDTV = context->getValidatingMemberType(); // actual type for DOMTypeInfo is memberDTV fMostRecentAttrValidator = memberDTV; // no member datatype validator if there was an error if(memberDTV) { DatatypeValidator::ValidatorType memberDTVType = memberDTV->getType(); if (memberDTVType == DatatypeValidator::ID) { thisIsAnId = true; } else if (memberDTVType == DatatypeValidator::IDREF) { // if in prevalidatoin, do not add attDef to IDREFList if (preValidation) getScanner()->getValidationContext()->toCheckIdRefList(false); } } } else if (attDefDVType == DatatypeValidator::ID) { thisIsAnId = true; } else if (attDefDVType == DatatypeValidator::IDREF) { // if in prevalidation, do not add attDef to IDREFList if (preValidation) getScanner()->getValidationContext()->toCheckIdRefList(false); } if (thisIsAnId) { if (fSeenId) { emitError ( XMLValid::MultipleIdAttrs , elemDecl->getFullName() ); fErrorOccurred = true; } else fSeenId = true; } } if(fErrorOccurred) { fMostRecentAttrValidator = DatatypeValidatorFactory::getBuiltInRegistry()->get(SchemaSymbols::fgDT_ANYSIMPLETYPE); } fTrailing = false; fSeenNonWhiteSpace = false; } void SchemaValidator::validateElement(const XMLElementDecl* elemDef) { ComplexTypeInfo* elemTypeInfo = ((SchemaElementDecl*)elemDef)->getComplexTypeInfo(); fTypeStack->push(elemTypeInfo); fCurrentDatatypeValidator = (elemTypeInfo) ? elemTypeInfo->getDatatypeValidator() : ((SchemaElementDecl*)elemDef)->getDatatypeValidator(); fErrorOccurred = false; if (fXsiType) { // handle "xsi:type" right here DatatypeValidator *xsiTypeDV = 0; unsigned int uri = fXsiType->getURI(); const XMLCh* localPart = fXsiType->getLocalPart(); if (uri != XMLElementDecl::fgInvalidElemId && uri != XMLElementDecl::fgPCDataElemId && uri != XMLContentModel::gEpsilonFakeId && uri != XMLContentModel::gEOCFakeId) { // retrieve Grammar for the uri const XMLCh* uriStr = getScanner()->getURIText(uri); SchemaGrammar* sGrammar = (SchemaGrammar*) fGrammarResolver->getGrammar(uriStr); if (!sGrammar) { // Check built-in simple types if (XMLString::equals(uriStr, SchemaSymbols::fgURI_SCHEMAFORSCHEMA)) { xsiTypeDV = fGrammarResolver->getDatatypeValidator(uriStr, localPart); if (!xsiTypeDV) { emitError(XMLValid::BadXsiType, fXsiType->getRawName()); fErrorOccurred = true; } else { if (elemTypeInfo || (fCurrentDatatypeValidator && !fCurrentDatatypeValidator->isSubstitutableBy(xsiTypeDV))) { // the type is not derived from ancestor emitError(XMLValid::NonDerivedXsiType, fXsiType->getRawName(), elemDef->getFullName()); fErrorOccurred = true; } else if(fCurrentDatatypeValidator != xsiTypeDV) { // the type is derived from ancestor if ((((SchemaElementDecl*)elemDef)->getBlockSet() & SchemaSymbols::XSD_RESTRICTION) != 0) { emitError(XMLValid::ElemNoSubforBlock, elemDef->getFullName()); fErrorOccurred = true; } if (elemDef->hasAttDefs()) { // if we have an attribute but xsi:type's type is simple, we have a problem... emitError(XMLValid::NonDerivedXsiType, fXsiType->getRawName(), elemDef->getFullName()); fErrorOccurred = true; } } fCurrentDatatypeValidator = xsiTypeDV; } } else { // Grammar not found emitError(XMLValid::GrammarNotFound, uriStr); fErrorOccurred = true; } } else if (sGrammar->getGrammarType() != Grammar::SchemaGrammarType) { emitError(XMLValid::GrammarNotFound, uriStr); fErrorOccurred = true; } else { // retrieve complexType registry and DatatypeValidator registry RefHashTableOf* complexTypeRegistry = sGrammar->getComplexTypeRegistry(); if (!complexTypeRegistry) { emitError(XMLValid::BadXsiType, fXsiType->getRawName()); fErrorOccurred = true; } else { // retrieve the typeInfo specified in xsi:type XMLBuffer aBuffer(1023, fMemoryManager); aBuffer.set(uriStr); aBuffer.append(chComma); aBuffer.append(localPart); ComplexTypeInfo* typeInfo = complexTypeRegistry->get(aBuffer.getRawBuffer()); if (typeInfo) { // typeInfo is found if (typeInfo->getAbstract()) { emitError(XMLValid::NoAbstractInXsiType, aBuffer.getRawBuffer()); fErrorOccurred = true; } else { if (elemTypeInfo) { ComplexTypeInfo* tempType = typeInfo; while (tempType) { if (tempType == elemTypeInfo) break; tempType = tempType->getBaseComplexTypeInfo(); } if (!tempType) { emitError(XMLValid::NonDerivedXsiType, fXsiType->getRawName(), elemDef->getFullName()); fErrorOccurred = true; } else if(elemTypeInfo != typeInfo) { // perform the check on the entire inheritance chain ComplexTypeInfo* tempType = typeInfo; while (tempType) { if (tempType == elemTypeInfo) break; int derivationMethod = tempType->getDerivedBy(); if ((((SchemaElementDecl*)elemDef)->getBlockSet() & derivationMethod) != 0) { emitError(XMLValid::ElemNoSubforBlock, elemDef->getFullName()); fErrorOccurred = true; } if ((elemTypeInfo->getBlockSet() & derivationMethod) != 0) { emitError(XMLValid::TypeNoSubforBlock, elemTypeInfo->getTypeName()); fErrorOccurred = true; } tempType = tempType->getBaseComplexTypeInfo(); } } } else { // if the original type is a simple type, check derivation ok. if (fCurrentDatatypeValidator && !fCurrentDatatypeValidator->isSubstitutableBy(typeInfo->getDatatypeValidator())) { // the type is not derived from ancestor emitError(XMLValid::NonDerivedXsiType, fXsiType->getRawName(), elemDef->getFullName()); fErrorOccurred = true; } } if (!fErrorOccurred) { fTypeStack->pop(); fTypeStack->push(typeInfo); fCurrentDatatypeValidator = typeInfo->getDatatypeValidator(); } } } else { // typeInfo not found xsiTypeDV = fGrammarResolver->getDatatypeValidator(uriStr, localPart); if (!xsiTypeDV) { emitError(XMLValid::BadXsiType, fXsiType->getRawName()); fErrorOccurred = true; } else { if (fCurrentDatatypeValidator && !fCurrentDatatypeValidator->isSubstitutableBy(xsiTypeDV)) { // the type is not derived from ancestor emitError(XMLValid::NonDerivedXsiType, fXsiType->getRawName(), elemDef->getFullName()); fErrorOccurred = true; } else if(fCurrentDatatypeValidator != xsiTypeDV) { DatatypeValidator::ValidatorType derivedType=xsiTypeDV->getType(); if((derivedType == DatatypeValidator::List || derivedType == DatatypeValidator::Union) && fCurrentDatatypeValidator==0) { // the substitution is always allowed if the type is list or union and the base type was xs:anySimpleType } else { // the type is derived from ancestor if ((((SchemaElementDecl*)elemDef)->getBlockSet() & SchemaSymbols::XSD_RESTRICTION) != 0) { emitError(XMLValid::ElemNoSubforBlock, elemDef->getFullName()); fErrorOccurred = true; } if (elemDef->hasAttDefs()) { // if we have an attribute but xsi:type's type is simple, we have a problem... emitError(XMLValid::NonDerivedXsiType, fXsiType->getRawName(), elemDef->getFullName()); fErrorOccurred = true; } } } fCurrentDatatypeValidator = xsiTypeDV; } } } } } delete fXsiType; fXsiType = 0; } else { // // xsi:type was not specified... // If the corresponding type is abstract, detect an error // if (elemTypeInfo && elemTypeInfo->getAbstract()) { emitError(XMLValid::NoUseAbstractType, elemDef->getFullName()); fErrorOccurred = true; } } // // Check whether this element is abstract. If so, an error // int miscFlags = ((SchemaElementDecl*)elemDef)->getMiscFlags(); if ((miscFlags & SchemaSymbols::XSD_ABSTRACT) != 0) { emitError(XMLValid::NoDirectUseAbstractElement, elemDef->getFullName()); fErrorOccurred = true; } // // Check whether this element allows Nillable // if (fNilFound && (miscFlags & SchemaSymbols::XSD_NILLABLE) == 0 ) { fNil = false; fNilFound = false; emitError(XMLValid::NillNotAllowed, elemDef->getFullName()); fErrorOccurred = true; } fDatatypeBuffer.reset(); fTrailing = false; fSeenNonWhiteSpace = false; fSeenId = false; } void SchemaValidator::preContentValidation(bool, bool validateDefAttr) { // Lets go through all the grammar in the GrammarResolver // and validate those that has not been validated yet // // Lets enumerate all of the elements in the element decl pool // and put out an error for any that did not get declared. // We also check all of the attributes as well. // // And enumerate all the complextype info in the grammar // and do Unique Particle Attribution Checking RefHashTableOfEnumerator grammarEnum = fGrammarResolver->getGrammarEnumerator(); while (grammarEnum.hasMoreElements()) { SchemaGrammar& sGrammar = (SchemaGrammar&) grammarEnum.nextElement(); if (sGrammar.getGrammarType() != Grammar::SchemaGrammarType || sGrammar.getValidated()) continue; sGrammar.setValidated(true); RefHash3KeysIdPoolEnumerator elemEnum = sGrammar.getElemEnumerator(); while (elemEnum.hasMoreElements()) { SchemaElementDecl& curElem = elemEnum.nextElement(); // First check if declared or not // // See if this element decl was ever marked as declared. If // not, then put out an error. In some cases its just // a warning, such as being referenced in a content model. // const SchemaElementDecl::CreateReasons reason = curElem.getCreateReason(); if (reason != XMLElementDecl::Declared) { if (reason == XMLElementDecl::AttList) { getScanner()->emitError ( XMLErrs::UndeclaredElemInAttList , curElem.getFullName() ); } else if (reason == XMLElementDecl::AsRootElem) { emitError ( XMLValid::UndeclaredElemInDocType , curElem.getFullName() ); } else if (reason == XMLElementDecl::InContentModel) { getScanner()->emitError ( XMLErrs::UndeclaredElemInCM , curElem.getFullName() ); } else { } } // // Then check all of the attributes of the current element. // We check for: // // 1) Multiple ID attributes // 2) That all of the default values of attributes are // valid for their type. // 3) That for any notation types, that their lists // of possible values refer to declared notations. // if (curElem.hasAttDefs()) { XMLAttDefList& attDefList = curElem.getAttDefList(); bool seenId = false; for(XMLSize_t i=0; i janList(list, fMemoryManager); // // Search forward for a space or a null. If a null, // we are done. If a space, cap it and look it up. // bool breakFlag = false; XMLCh* listPtr = list; XMLCh* lastPtr = listPtr; while (true) { while (*listPtr && (*listPtr != chSpace)) listPtr++; // // If at the end, indicate we need to break after // this one. Else, cap it off here. // if (!*listPtr) breakFlag = true; else *listPtr = chNull; if (!sGrammar.getNotationDecl(lastPtr)) { emitError ( XMLValid::UnknownNotRefAttr , curAttDef.getFullName() , lastPtr ); } // Break out if we hit the end last time if (breakFlag) break; // Else move upwards and try again listPtr++; lastPtr = listPtr; } } // If it has a default/fixed value, then validate it if (validateDefAttr && curAttDef.getValue()) { validateAttrValue ( &curAttDef , curAttDef.getValue() , true , &curElem ); } } } } // For each complex type info, check the Unique Particle Attribution if (getScanner()->getValidationSchemaFullChecking()) { RefHashTableOf* complexTypeRegistry = sGrammar.getComplexTypeRegistry(); RefHashTableOfEnumerator complexTypeEnum(complexTypeRegistry, false, fMemoryManager); while (complexTypeEnum.hasMoreElements()) { ComplexTypeInfo& curTypeInfo = complexTypeEnum.nextElement(); curTypeInfo.checkUniqueParticleAttribution(&sGrammar, fGrammarResolver, fGrammarResolver->getStringPool(), this); checkParticleDerivation(&sGrammar, &curTypeInfo); checkRefElementConsistency(&sGrammar, &curTypeInfo); } RefHashTableOf* groupInfoRegistry = sGrammar.getGroupInfoRegistry(); RefHashTableOfEnumerator groupEnum(groupInfoRegistry, false, fMemoryManager); while (groupEnum.hasMoreElements()) { XercesGroupInfo& curGroup = groupEnum.nextElement(); XercesGroupInfo* baseGroup = curGroup.getBaseGroup(); if (baseGroup) { try { checkParticleDerivationOk(&sGrammar, curGroup.getContentSpec(), curGroup.getScope(), baseGroup->getContentSpec(), baseGroup->getScope()); } catch (const XMLException& excep) { fSchemaErrorReporter.emitError(excep, curGroup.getLocator()); } } if (curGroup.getCheckElementConsistency()) checkRefElementConsistency(&sGrammar, 0, &curGroup); } } } } void SchemaValidator::postParseValidation() { // // At this time, there is nothing to do here. The scanner itself handles // ID/IDREF validation, since that is the same no matter what kind of // validator. // } // --------------------------------------------------------------------------- // SchemaValidator: Validator method // --------------------------------------------------------------------------- // Do Schema Normalization depends on the WhiteSpace Facet // preserve : No normalization is done // replace : All occurrences of #x9 (tab), #xA (linefeed) and #xD (carriage return) // are replaced with #x20 (space). // collapse : Subsequent to the replacements specified above under replace, // contiguous sequences of #x20s are collapsed to a single #x20, // and initial and/or final #x20s are deleted. // void SchemaValidator::normalizeWhiteSpace(DatatypeValidator* dV, const XMLCh* const value, XMLBuffer& toFill, bool bStandalone /*= false*/) { toFill.reset(); //empty string if (!*value) return; if(bStandalone) fTrailing = fSeenNonWhiteSpace = false; short wsFacet = dV->getWSFacet(); // Loop through the chars of the source value and normalize it // according to the whitespace facet XMLCh nextCh; const XMLCh* srcPtr = value; XMLReader* fCurReader = getReaderMgr()->getCurrentReader(); if (wsFacet == DatatypeValidator::REPLACE) { while (*srcPtr) { nextCh = *srcPtr++; if (fCurReader->isWhitespace(nextCh)) nextCh = chSpace; // Add this char to the target buffer toFill.append(nextCh); } } else // COLLAPSE { enum States { InWhitespace , InContent }; States curState = fTrailing ? InWhitespace : InContent; while (*srcPtr) { nextCh = *srcPtr++; if (curState == InContent) { if (fCurReader->isWhitespace(nextCh)) { curState = InWhitespace; continue; } fSeenNonWhiteSpace = true; } else if (curState == InWhitespace) { if (fCurReader->isWhitespace(nextCh)) continue; if (fSeenNonWhiteSpace) toFill.append(chSpace); curState = InContent; fSeenNonWhiteSpace = true; } // Add this char to the target buffer toFill.append(nextCh); } if (fCurReader->isWhitespace(*(srcPtr-1))) fTrailing = true; else fTrailing = false; } if(bStandalone) fTrailing = fSeenNonWhiteSpace = false; } // --------------------------------------------------------------------------- // SchemaValidator: Particle Derivation Checking // --------------------------------------------------------------------------- void SchemaValidator::checkRefElementConsistency(SchemaGrammar* const currentGrammar, const ComplexTypeInfo* const curTypeInfo, const XercesGroupInfo* const curGroup) { XMLSize_t elemCount = (curTypeInfo) ? curTypeInfo->elementCount() : curGroup->elementCount(); int elemScope = (curTypeInfo) ? curTypeInfo->getScopeDefined() : curGroup->getScope(); XSDLocator* typeInfoLocator = (curTypeInfo) ? curTypeInfo->getLocator() : curGroup->getLocator(); for (XMLSize_t i=0; i < elemCount; i++) { const SchemaElementDecl* elemDecl = (curTypeInfo) ? curTypeInfo->elementAt(i) : curGroup->elementAt(i); if (elemDecl->isGlobalDecl()) { unsigned int elemURI = elemDecl->getURI(); const XMLCh* elemName = elemDecl->getBaseName(); const SchemaElementDecl* other = (SchemaElementDecl*) currentGrammar->getElemDecl(elemURI, elemName, 0, elemScope); if (other && (elemDecl->getComplexTypeInfo() != other->getComplexTypeInfo() || elemDecl->getDatatypeValidator() != other->getDatatypeValidator())) { fSchemaErrorReporter.emitError(XMLErrs::DuplicateElementDeclaration, XMLUni::fgXMLErrDomain, typeInfoLocator, elemName, 0, 0, 0, fMemoryManager); continue; } RefHash2KeysTableOf* validSubsGroups = currentGrammar->getValidSubstitutionGroups(); ValueVectorOf* subsElements = validSubsGroups->get(elemName, elemURI); if (subsElements) { XMLSize_t subsElemSize = subsElements->size(); for (XMLSize_t j=0; j < subsElemSize; j++) { SchemaElementDecl* subsElem = subsElements->elementAt(j); const XMLCh* subsElemName = subsElem->getBaseName(); other = (SchemaElementDecl*) currentGrammar->getElemDecl(subsElem->getURI(), subsElemName, 0, elemScope); if (other && (subsElem->getComplexTypeInfo() != other->getComplexTypeInfo() || subsElem->getDatatypeValidator() != other->getDatatypeValidator())) { fSchemaErrorReporter.emitError(XMLErrs::DuplicateElementDeclaration, XMLUni::fgXMLErrDomain, typeInfoLocator, elemName, 0, 0, 0, fMemoryManager); } } } } } } // --------------------------------------------------------------------------- // SchemaValidator: Particle Derivation Checking // --------------------------------------------------------------------------- void SchemaValidator::checkParticleDerivation(SchemaGrammar* const currentGrammar, const ComplexTypeInfo* const curTypeInfo) { ComplexTypeInfo* baseTypeInfo = 0; ContentSpecNode* curSpecNode = 0; if (curTypeInfo->getDerivedBy() == SchemaSymbols::XSD_RESTRICTION && ((baseTypeInfo = curTypeInfo->getBaseComplexTypeInfo()) != 0) && ((curSpecNode = curTypeInfo->getContentSpec()) != 0)) { try { checkParticleDerivationOk(currentGrammar, curSpecNode, curTypeInfo->getScopeDefined(), baseTypeInfo->getContentSpec(), baseTypeInfo->getScopeDefined(), baseTypeInfo); } catch (const XMLException& excep) { fSchemaErrorReporter.emitError(excep, curTypeInfo->getLocator()); } } } ContentSpecNode* SchemaValidator::getNonUnaryGroup(ContentSpecNode* const pNode) { int pNodeType = (pNode->getType() & 0x0f); if (pNodeType == ContentSpecNode::Leaf || pNodeType == ContentSpecNode::Any || pNodeType == ContentSpecNode::Any_Other || pNodeType == ContentSpecNode::Any_NS) return pNode; if (pNode->getMinOccurs() == 1 && pNode->getMaxOccurs() == 1 && pNode->getFirst() && !pNode->getSecond()) return getNonUnaryGroup(pNode->getFirst()); return pNode; } void SchemaValidator::checkParticleDerivationOk(SchemaGrammar* const aGrammar, ContentSpecNode* const curNode, const int derivedScope, ContentSpecNode* const baseNode, const int baseScope, const ComplexTypeInfo* const baseInfo, const bool toCheckOccurence) { // Check for pointless occurrences of all, choice, sequence. The result is // the contentspec which is not pointless. If the result is a non-pointless // group, Vector is filled in with the children of interest if (curNode && !baseNode) ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::PD_EmptyBase, fMemoryManager); if (!curNode) return; ContentSpecNode* curSpecNode = getNonUnaryGroup(curNode); ContentSpecNode* baseSpecNode = getNonUnaryGroup(baseNode); ValueVectorOf curVector(8, fMemoryManager); ValueVectorOf baseVector(8, fMemoryManager); ContentSpecNode::NodeTypes curNodeType = curSpecNode->getType(); ContentSpecNode::NodeTypes baseNodeType = baseSpecNode->getType(); if ((curNodeType & 0x0f) == ContentSpecNode::Sequence || (curNodeType & 0x0f) == ContentSpecNode::Choice || curNodeType == ContentSpecNode::All) { curSpecNode = checkForPointlessOccurrences(curSpecNode, curNodeType, &curVector); } if ((baseNodeType & 0x0f) == ContentSpecNode::Sequence || (baseNodeType & 0x0f) == ContentSpecNode::Choice || baseNodeType == ContentSpecNode::All) { baseSpecNode = checkForPointlessOccurrences(baseSpecNode, baseNodeType, &baseVector); } curNodeType = curSpecNode->getType(); baseNodeType = baseSpecNode->getType(); switch (curNodeType & 0x0f) { case ContentSpecNode::Leaf: { switch (baseNodeType & 0x0f) { case ContentSpecNode::Leaf: { checkNameAndTypeOK(aGrammar, curSpecNode, derivedScope, baseSpecNode, baseScope, baseInfo); return; } case ContentSpecNode::Any: case ContentSpecNode::Any_Other: case ContentSpecNode::Any_NS: { checkNSCompat(curSpecNode, baseSpecNode, toCheckOccurence); return; } case ContentSpecNode::Choice: case ContentSpecNode::Sequence: case ContentSpecNode::All: { checkRecurseAsIfGroup(aGrammar, curSpecNode, derivedScope, baseSpecNode, baseScope, &baseVector, baseInfo); return; } default: { ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::PD_InvalidContentType, fMemoryManager); } } } case ContentSpecNode::Any: case ContentSpecNode::Any_Other: case ContentSpecNode::Any_NS: { switch (baseNodeType & 0x0f) { case ContentSpecNode::Any: case ContentSpecNode::Any_Other: case ContentSpecNode::Any_NS: { checkNSSubset(curSpecNode, baseSpecNode); return; } case ContentSpecNode::Choice: case ContentSpecNode::Sequence: case ContentSpecNode::All: case ContentSpecNode::Leaf: { if (baseNodeType == ContentSpecNode::Any_NS_Choice) { if (checkNSSubsetChoiceRoot(curSpecNode, baseSpecNode)) { return; } } ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::PD_ForbiddenRes1, fMemoryManager); } default: { ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::PD_InvalidContentType, fMemoryManager); } } } case ContentSpecNode::All: { switch (baseNodeType & 0x0f) { case ContentSpecNode::Any: case ContentSpecNode::Any_Other: case ContentSpecNode::Any_NS: { checkNSRecurseCheckCardinality(aGrammar, curSpecNode, &curVector, derivedScope, baseSpecNode, toCheckOccurence); return; } case ContentSpecNode::All: { checkRecurse(aGrammar, curSpecNode, derivedScope, &curVector, baseSpecNode, baseScope, &baseVector, baseInfo); return; } case ContentSpecNode::Choice: case ContentSpecNode::Sequence: case ContentSpecNode::Leaf: { ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::PD_ForbiddenRes2, fMemoryManager); } default: { ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::PD_InvalidContentType, fMemoryManager); } } } case ContentSpecNode::Choice: { switch (baseNodeType & 0x0f) { case ContentSpecNode::Any: case ContentSpecNode::Any_Other: case ContentSpecNode::Any_NS: { checkNSRecurseCheckCardinality(aGrammar, curSpecNode, &curVector, derivedScope, baseSpecNode, toCheckOccurence); return; } case ContentSpecNode::Choice: { checkRecurse(aGrammar, curSpecNode, derivedScope, &curVector, baseSpecNode, baseScope, &baseVector, baseInfo, true); return; } case ContentSpecNode::All: case ContentSpecNode::Sequence: case ContentSpecNode::Leaf: { ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::PD_ForbiddenRes3, fMemoryManager); } default: { ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::PD_InvalidContentType, fMemoryManager); } } } case ContentSpecNode::Sequence: { switch (baseNodeType & 0x0f) { case ContentSpecNode::Any: case ContentSpecNode::Any_Other: case ContentSpecNode::Any_NS: { checkNSRecurseCheckCardinality(aGrammar, curSpecNode, &curVector, derivedScope, baseSpecNode, toCheckOccurence); return; } case ContentSpecNode::All: { checkRecurseUnordered(aGrammar, curSpecNode, &curVector, derivedScope, baseSpecNode, &baseVector, baseScope, baseInfo); return; } case ContentSpecNode::Sequence: { checkRecurse(aGrammar, curSpecNode, derivedScope, &curVector, baseSpecNode, baseScope, &baseVector, baseInfo); return; } case ContentSpecNode::Choice: { checkMapAndSum(aGrammar, curSpecNode, &curVector, derivedScope, baseSpecNode, &baseVector, baseScope, baseInfo); return; } case ContentSpecNode::Leaf: { ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::PD_ForbiddenRes4, fMemoryManager); } default: { ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::PD_InvalidContentType, fMemoryManager); } } } } } ContentSpecNode* SchemaValidator::checkForPointlessOccurrences(ContentSpecNode* const specNode, const ContentSpecNode::NodeTypes nodeType, ValueVectorOf* const nodes) { ContentSpecNode* rightNode = specNode->getSecond(); int min = specNode->getMinOccurs(); int max = specNode->getMaxOccurs(); if (!rightNode) { gatherChildren(nodeType, specNode->getFirst(), nodes); if (nodes->size() == 1 && min == 1 && max == 1) { return nodes->elementAt(0); } return specNode; } gatherChildren(nodeType, specNode->getFirst(), nodes); gatherChildren(nodeType, rightNode, nodes); return specNode; } void SchemaValidator::gatherChildren(const ContentSpecNode::NodeTypes parentNodeType, ContentSpecNode* const specNode, ValueVectorOf* const nodes) { if (!specNode) { return; } int min = specNode->getMinOccurs(); int max = specNode->getMaxOccurs(); ContentSpecNode::NodeTypes nodeType = specNode->getType(); ContentSpecNode* rightNode = specNode->getSecond(); if (nodeType == ContentSpecNode::Leaf || (nodeType & 0x0f) == ContentSpecNode::Any || (nodeType & 0x0f) == ContentSpecNode::Any_NS || (nodeType & 0x0f) == ContentSpecNode::Any_Other) { nodes->addElement(specNode); } else if (min !=1 || max != 1) { nodes->addElement(specNode); } else if (!rightNode) { gatherChildren(nodeType, specNode->getFirst(), nodes); } else if ((parentNodeType & 0x0f) == (nodeType & 0x0f)) { gatherChildren(nodeType, specNode->getFirst(), nodes); gatherChildren(nodeType, rightNode, nodes); } else { nodes->addElement(specNode); } } void SchemaValidator::checkNSCompat(const ContentSpecNode* const derivedSpecNode, const ContentSpecNode* const baseSpecNode, const bool toCheckOccurence) { // check Occurrence ranges if (toCheckOccurence && !isOccurrenceRangeOK(derivedSpecNode->getMinOccurs(), derivedSpecNode->getMaxOccurs(), baseSpecNode->getMinOccurs(), baseSpecNode->getMaxOccurs())) { ThrowXMLwithMemMgr1(RuntimeException, XMLExcepts::PD_OccurRangeE, derivedSpecNode->getElement()->getLocalPart(), fMemoryManager); } // check wildcard subset if (!wildcardEltAllowsNamespace(baseSpecNode, derivedSpecNode->getElement()->getURI())) { ThrowXMLwithMemMgr1(RuntimeException, XMLExcepts::PD_NSCompat1, derivedSpecNode->getElement()->getLocalPart(), fMemoryManager); } } bool SchemaValidator::wildcardEltAllowsNamespace(const ContentSpecNode* const baseSpecNode, const unsigned int derivedURI) { ContentSpecNode::NodeTypes nodeType = baseSpecNode->getType(); if ((nodeType & 0x0f) == ContentSpecNode::Any) { return true; } unsigned int baseURI = baseSpecNode->getElement()->getURI(); if ((nodeType & 0x0f) == ContentSpecNode::Any_NS) { if (derivedURI == baseURI) { return true; } } else { // must be ANY_OTHER if (derivedURI != baseURI && derivedURI != getScanner()->getEmptyNamespaceId()) { return true; } } return false; } void SchemaValidator::checkNameAndTypeOK(SchemaGrammar* const currentGrammar, const ContentSpecNode* const derivedSpecNode, const int derivedScope, const ContentSpecNode* const baseSpecNode, const int baseScope, const ComplexTypeInfo* const baseInfo) { if (derivedSpecNode->getMaxOccurs() == 0) return; unsigned int derivedURI = derivedSpecNode->getElement()->getURI(); // case of mixed complex types with attributes only if (derivedURI == XMLElementDecl::fgPCDataElemId) { return; } SchemaGrammar* dGrammar = currentGrammar; if (derivedURI != getScanner()->getEmptyNamespaceId()) { const XMLCh* dURI = fGrammarResolver->getStringPool()->getValueForId(derivedURI); dGrammar= (SchemaGrammar*) fGrammarResolver->getGrammar(dURI); } if (!dGrammar) { //something is wrong return; } const XMLCh* derivedName = derivedSpecNode->getElement()->getLocalPart(); SchemaElementDecl* derivedElemDecl = findElement(derivedScope, derivedURI, derivedName, dGrammar); if (!derivedElemDecl) { return; } const XMLCh* baseName = baseSpecNode->getElement()->getLocalPart(); unsigned int baseURI = baseSpecNode->getElement()->getURI(); bool subsGroup = false; if (!XMLString::equals(derivedName, baseName) || derivedURI != baseURI) { // Check if derived is substitutable for base. // SchemaElementDecl* e = derivedElemDecl->getSubstitutionGroupElem (); for (; e != 0; e = e->getSubstitutionGroupElem ()) { if (XMLString::equals(e->getBaseName (), baseName) && e->getURI () == baseURI) { break; } } if (e == 0) { ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::PD_NameTypeOK1, fMemoryManager); } subsGroup = true; } if (!isOccurrenceRangeOK(derivedSpecNode->getMinOccurs(), derivedSpecNode->getMaxOccurs(), baseSpecNode->getMinOccurs(), baseSpecNode->getMaxOccurs())) { ThrowXMLwithMemMgr1(RuntimeException, XMLExcepts::PD_OccurRangeE, derivedName, fMemoryManager); } // Find the schema grammar for the base element using the base type as // a reference if it is available (it is unavailable if we are checking // element group restriction which happens in redefine). // SchemaGrammar* bGrammar = dGrammar; if (baseInfo) { const XMLCh* baseTypeURI = baseInfo->getTypeUri (); if (baseTypeURI != 0 && *baseTypeURI != 0) // Non-empty namespace. bGrammar= (SchemaGrammar*) fGrammarResolver->getGrammar(baseTypeURI); if (!bGrammar) { //something is wrong return; } } SchemaElementDecl* baseElemDecl = findElement(baseScope, baseURI, baseName, bGrammar, baseInfo); if (!baseElemDecl) { return; } int derivedFlags = derivedElemDecl->getMiscFlags(); int baseFlags = baseElemDecl->getMiscFlags(); if (((baseFlags & SchemaSymbols::XSD_NILLABLE) == 0) && ((derivedFlags & SchemaSymbols::XSD_NILLABLE) != 0)) { ThrowXMLwithMemMgr1(RuntimeException, XMLExcepts::PD_NameTypeOK2, derivedName, fMemoryManager); } const XMLCh* derivedDefVal = derivedElemDecl->getDefaultValue(); const XMLCh* baseDefVal = baseElemDecl->getDefaultValue(); if (baseDefVal && (baseFlags & SchemaSymbols::XSD_FIXED) != 0 && ((derivedFlags & SchemaSymbols::XSD_FIXED) == 0 || !XMLString::equals(derivedDefVal, baseDefVal))) { ThrowXMLwithMemMgr1(RuntimeException, XMLExcepts::PD_NameTypeOK3, derivedName, fMemoryManager); } int derivedBlockSet = derivedElemDecl->getBlockSet(); int baseBlockSet = baseElemDecl->getBlockSet(); if ((derivedBlockSet & baseBlockSet) != baseBlockSet) { ThrowXMLwithMemMgr1(RuntimeException, XMLExcepts::PD_NameTypeOK4, derivedName, fMemoryManager); } // check identity constraints checkICRestriction(derivedElemDecl, baseElemDecl, derivedName, baseName); // check that the derived element's type is derived from the base's. if (!subsGroup) checkTypesOK(derivedElemDecl, baseElemDecl, derivedName); } SchemaElementDecl* SchemaValidator::findElement(const int scope, const unsigned int uriIndex, const XMLCh* const name, SchemaGrammar* const grammar, const ComplexTypeInfo* const typeInfo) { // check for element at given scope first SchemaElementDecl* elemDecl = (SchemaElementDecl*) grammar->getElemDecl(uriIndex, name, 0, scope); // if not found, check at global scope if (!elemDecl) { elemDecl = (SchemaElementDecl*) grammar->getElemDecl(uriIndex, name, 0, Grammar::TOP_LEVEL_SCOPE); // if still not found, and base is specified, look it up there if (!elemDecl && typeInfo) { const ComplexTypeInfo* baseInfo = typeInfo; while (baseInfo) { elemDecl = (SchemaElementDecl*) grammar->getElemDecl(uriIndex, name, 0, baseInfo->getScopeDefined()); if (elemDecl) { break; } baseInfo = baseInfo->getBaseComplexTypeInfo(); } } } return elemDecl; } void SchemaValidator::checkICRestriction(const SchemaElementDecl* const derivedElemDecl, const SchemaElementDecl* const baseElemDecl, const XMLCh* const derivedElemName, const XMLCh* const baseElemName) { // REVIST - need to get more clarification XMLSize_t derivedICCount = derivedElemDecl->getIdentityConstraintCount(); XMLSize_t baseICCount = baseElemDecl->getIdentityConstraintCount(); if (derivedICCount > baseICCount) { ThrowXMLwithMemMgr2(RuntimeException, XMLExcepts::PD_NameTypeOK6, derivedElemName, baseElemName, fMemoryManager); } for (XMLSize_t i=0; i < derivedICCount; i++) { bool found = false; IdentityConstraint* ic= derivedElemDecl->getIdentityConstraintAt(i); for (XMLSize_t j=0; j < baseICCount; j++) { if (*ic == *(baseElemDecl->getIdentityConstraintAt(j))) { found = true; break; } } if (!found) { ThrowXMLwithMemMgr2(RuntimeException, XMLExcepts::PD_NameTypeOK7, derivedElemName, baseElemName, fMemoryManager); } } } void SchemaValidator::checkTypesOK(const SchemaElementDecl* const derivedElemDecl, const SchemaElementDecl* const baseElemDecl, const XMLCh* const derivedElemName) { SchemaElementDecl::ModelTypes baseType = baseElemDecl->getModelType(); if (baseType == SchemaElementDecl::Any) { return; } ComplexTypeInfo* rInfo = derivedElemDecl->getComplexTypeInfo(); ComplexTypeInfo* bInfo = baseElemDecl->getComplexTypeInfo(); if (derivedElemDecl->getModelType() == SchemaElementDecl::Simple) { if (baseType != SchemaElementDecl::Simple) { ThrowXMLwithMemMgr1(RuntimeException, XMLExcepts::PD_NameTypeOK5, derivedElemName, fMemoryManager); } if (!rInfo) { DatatypeValidator* bDV = baseElemDecl->getDatatypeValidator(); if (bInfo || bDV == 0 || !bDV->isSubstitutableBy(derivedElemDecl->getDatatypeValidator())) { ThrowXMLwithMemMgr1(RuntimeException, XMLExcepts::PD_NameTypeOK5, derivedElemName, fMemoryManager); } return; } } if (rInfo == bInfo) return; for (; rInfo && rInfo != bInfo; rInfo = rInfo->getBaseComplexTypeInfo()) { if (rInfo->getDerivedBy() != SchemaSymbols::XSD_RESTRICTION) { rInfo = 0; break; } } if (!rInfo) { ThrowXMLwithMemMgr1(RuntimeException, XMLExcepts::PD_NameTypeOK5, derivedElemName, fMemoryManager); } } void SchemaValidator::checkRecurseAsIfGroup(SchemaGrammar* const currentGrammar, ContentSpecNode* const derivedSpecNodeIn, const int derivedScope, const ContentSpecNode* const baseSpecNode, const int baseScope, ValueVectorOf* const baseNodes, const ComplexTypeInfo* const baseInfo) { ContentSpecNode::NodeTypes baseType = baseSpecNode->getType(); bool toLax = false; //Treat the element as if it were in a group of the same variety as base ContentSpecNode derivedGroupNode(baseType, derivedSpecNodeIn, 0, false, true, fMemoryManager); const ContentSpecNode* const derivedSpecNode = &derivedGroupNode; if ((baseSpecNode->getType() & 0x0f) == ContentSpecNode::Choice) { toLax = true; } // Instead of calling this routine, inline it // checkRecurse(currentGrammar, &derivedGroupNode, derivedScope, &derivedNodes, // baseSpecNode, baseScope, baseNodes, baseInfo, toLax); if (!isOccurrenceRangeOK(derivedSpecNode->getMinOccurs(), derivedSpecNode->getMaxOccurs(), baseSpecNode->getMinOccurs(), baseSpecNode->getMaxOccurs())) { ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::PD_Recurse1, fMemoryManager); } // check for mapping of children XMLExcepts::Codes codeToThrow = XMLExcepts::NoError; XMLSize_t count2= baseNodes->size(); XMLSize_t current = 0; { bool matched = false; for (XMLSize_t j = current; j < count2; j++) { ContentSpecNode* baseNode = baseNodes->elementAt(j); current++; bool bDoBreak=false; // workaround for Borland bug with 'break' in 'catch' try { checkParticleDerivationOk(currentGrammar, derivedSpecNodeIn, derivedScope, baseNode, baseScope, baseInfo); matched = true; break; } catch(const XMLException&) { if (!toLax && baseNode->getMinTotalRange()) { bDoBreak=true; } } if(bDoBreak) break; } // did not find a match if (!matched) { codeToThrow = XMLExcepts::PD_Recurse2; } } // Now, see if there are some elements in the base we didn't match up // in case of Sequence or All if (!toLax && codeToThrow == XMLExcepts::NoError) { for (XMLSize_t j = current; j < count2; j++) { if (baseNodes->elementAt(j)->getMinTotalRange() * baseSpecNode->getMinOccurs()) { //!emptiable codeToThrow = XMLExcepts::PD_Recurse2; break; } } } if (codeToThrow != XMLExcepts::NoError) { ThrowXMLwithMemMgr(RuntimeException, codeToThrow, fMemoryManager); } } void SchemaValidator::checkRecurse(SchemaGrammar* const currentGrammar, const ContentSpecNode* const derivedSpecNode, const int derivedScope, ValueVectorOf* const derivedNodes, const ContentSpecNode* const baseSpecNode, const int baseScope, ValueVectorOf* const baseNodes, const ComplexTypeInfo* const baseInfo, const bool toLax) { if (!isOccurrenceRangeOK(derivedSpecNode->getMinOccurs(), derivedSpecNode->getMaxOccurs(), baseSpecNode->getMinOccurs(), baseSpecNode->getMaxOccurs())) { ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::PD_Recurse1, fMemoryManager); } // check for mapping of children XMLExcepts::Codes codeToThrow = XMLExcepts::NoError; XMLSize_t count1= derivedNodes->size(); XMLSize_t count2= baseNodes->size(); XMLSize_t current = 0; for (XMLSize_t i=0; ielementAt(j); current++; bool bDoBreak=false; // workaround for Borland bug with 'break' in 'catch' try { checkParticleDerivationOk(currentGrammar, derivedNodes->elementAt(i), derivedScope, baseNode, baseScope, baseInfo); matched = true; break; } catch(const XMLException&) { if (!toLax && baseNode->getMinTotalRange()) { bDoBreak=true; } } if(bDoBreak) break; } // did not find a match if (!matched) { codeToThrow = XMLExcepts::PD_Recurse2; break; } } // Now, see if there are some elements in the base we didn't match up // in case of Sequence or All if (!toLax && codeToThrow == XMLExcepts::NoError) { for (XMLSize_t j = current; j < count2; j++) { if (baseNodes->elementAt(j)->getMinTotalRange()) { //!emptiable codeToThrow = XMLExcepts::PD_Recurse2; break; } } } if (codeToThrow != XMLExcepts::NoError) { ThrowXMLwithMemMgr(RuntimeException, codeToThrow, fMemoryManager); } } void SchemaValidator::checkNSSubset(const ContentSpecNode* const derivedSpecNode, const ContentSpecNode* const baseSpecNode) { // check Occurrence ranges if (!isOccurrenceRangeOK(derivedSpecNode->getMinOccurs(), derivedSpecNode->getMaxOccurs(), baseSpecNode->getMinOccurs(), baseSpecNode->getMaxOccurs())) { ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::PD_NSSubset1, fMemoryManager); } if (!isWildCardEltSubset(derivedSpecNode, baseSpecNode)) { ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::PD_NSSubset2, fMemoryManager); } } bool SchemaValidator::checkNSSubsetChoiceRoot(const ContentSpecNode* const derivedSpecNode, const ContentSpecNode* const baseSpecNode) { bool found = false; if (baseSpecNode->getType() == ContentSpecNode::Any_NS_Choice) { const ContentSpecNode* first = baseSpecNode->getFirst(); const ContentSpecNode* second = baseSpecNode->getSecond(); if (first) { found = checkNSSubsetChoiceRoot(derivedSpecNode, first); if (found) return true; } if (second) { found = checkNSSubsetChoiceRoot(derivedSpecNode, second); if (found) return true; } } else { // should be Any_NS found = checkNSSubsetChoice(derivedSpecNode, baseSpecNode); } return found; } bool SchemaValidator::checkNSSubsetChoice(const ContentSpecNode* const derivedSpecNode, const ContentSpecNode* const baseSpecNode) { // check Occurrence ranges if (!isOccurrenceRangeOK(derivedSpecNode->getMinOccurs(), derivedSpecNode->getMaxOccurs(), baseSpecNode->getMinOccurs(), baseSpecNode->getMaxOccurs())) { return false; } if (!isWildCardEltSubset(derivedSpecNode, baseSpecNode)) { return false; } return true; } bool SchemaValidator::isWildCardEltSubset(const ContentSpecNode* const derivedSpecNode, const ContentSpecNode* const baseSpecNode) { ContentSpecNode::NodeTypes baseType = baseSpecNode->getType(); if ((baseType & 0x0f) == ContentSpecNode::Any) { return true; } ContentSpecNode::NodeTypes derivedType = derivedSpecNode->getType(); unsigned int baseURI = baseSpecNode->getElement()->getURI(); unsigned int derivedURI = derivedSpecNode->getElement()->getURI(); // Below we assume that empty string has id 1. // if (((derivedType & 0x0f) == ContentSpecNode::Any_Other) && ((baseType & 0x0f) == ContentSpecNode::Any_Other) && (baseURI == derivedURI || baseURI == 1)) { return true; } if ((derivedType & 0x0f) == ContentSpecNode::Any_NS) { if (((baseType & 0x0f) == ContentSpecNode::Any_NS) && baseURI == derivedURI) { return true; } if (((baseType & 0x0f) == ContentSpecNode::Any_Other) && (derivedURI == 1 || baseURI != derivedURI)) { return true; } } return false; } void SchemaValidator::checkNSRecurseCheckCardinality(SchemaGrammar* const currentGrammar, const ContentSpecNode* const derivedSpecNode, ValueVectorOf* const derivedNodes, const int derivedScope, ContentSpecNode* const baseSpecNode, const bool toCheckOccurence) { // Implement total range check int derivedMin = derivedSpecNode->getMinTotalRange(); int derivedMax = derivedSpecNode->getMaxTotalRange(); // check Occurrence ranges if (toCheckOccurence && !isOccurrenceRangeOK(derivedMin, derivedMax, baseSpecNode->getMinOccurs(), baseSpecNode->getMaxOccurs())) { ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::PD_NSRecurseCheckCardinality1, fMemoryManager); } // Check that each member of the group is a valid restriction of the wildcard XMLSize_t nodesCount = derivedNodes->size(); for (XMLSize_t i = 0; i < nodesCount; i++) { checkParticleDerivationOk(currentGrammar, derivedNodes->elementAt(i), derivedScope, baseSpecNode, -1, 0, false); } } void SchemaValidator::checkRecurseUnordered(SchemaGrammar* const currentGrammar, const ContentSpecNode* const derivedSpecNode, ValueVectorOf* const derivedNodes, const int derivedScope, ContentSpecNode* const baseSpecNode, ValueVectorOf* const baseNodes, const int baseScope, const ComplexTypeInfo* const baseInfo) { // check Occurrence ranges if (!isOccurrenceRangeOK(derivedSpecNode->getMinOccurs(), derivedSpecNode->getMaxOccurs(), baseSpecNode->getMinOccurs(), baseSpecNode->getMaxOccurs())) { ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::PD_Recurse1, fMemoryManager); } XMLExcepts::Codes codeToThrow = XMLExcepts::NoError; XMLSize_t derivedCount= derivedNodes->size(); XMLSize_t baseCount = baseNodes->size(); bool* foundIt = (bool*) fMemoryManager->allocate ( baseCount * sizeof(bool) );//new bool[baseCount]; ArrayJanitor janFoundIt(foundIt, fMemoryManager); for (XMLSize_t k=0; k < baseCount; k++) { foundIt[k] = false; } // check for mapping of children for (XMLSize_t i = 0; i < derivedCount; i++) { ContentSpecNode* derivedNode = derivedNodes->elementAt(i); bool matched = false; for (XMLSize_t j = 0; j < baseCount; j++) { try { checkParticleDerivationOk(currentGrammar, derivedNode, derivedScope, baseNodes->elementAt(j), baseScope, baseInfo); if (foundIt[j]) { break; } foundIt[j] = true; matched = true; break; } catch (const XMLException&) { } } // didn't find a match. if (!matched) { codeToThrow = XMLExcepts::PD_RecurseUnordered; break; } } // For all unmapped particles in base, check to see it it's emptiable or not if (codeToThrow == XMLExcepts::NoError) { for (XMLSize_t j=0; j < baseCount; j++) { if (!foundIt[j] && baseNodes->elementAt(j)->getMinTotalRange()) { codeToThrow = XMLExcepts::PD_RecurseUnordered; break; } } } if (codeToThrow != XMLExcepts::NoError) { ThrowXMLwithMemMgr(RuntimeException, codeToThrow, fMemoryManager); } } void SchemaValidator::checkMapAndSum(SchemaGrammar* const currentGrammar, const ContentSpecNode* const derivedSpecNode, ValueVectorOf* const derivedNodes, const int derivedScope, ContentSpecNode* const baseSpecNode, ValueVectorOf* const baseNodes, const int baseScope, const ComplexTypeInfo* const baseInfo) { // check Occurrence ranges XMLSize_t derivedCount = derivedNodes->size(); XMLSize_t baseCount = baseNodes->size(); int derivedMin = derivedSpecNode->getMinOccurs() * (unsigned int)derivedCount; int derivedMax = derivedSpecNode->getMaxOccurs(); if (derivedMax != SchemaSymbols::XSD_UNBOUNDED) { derivedMax *= (unsigned int)derivedCount; } if (!isOccurrenceRangeOK(derivedMin, derivedMax, baseSpecNode->getMinOccurs(), baseSpecNode->getMaxOccurs())) { ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::PD_Recurse1, fMemoryManager); } // check for mapping of children for (XMLSize_t i = 0; i < derivedCount; i++) { ContentSpecNode* derivedNode = derivedNodes->elementAt(i); bool matched = false; for (XMLSize_t j = 0; j < baseCount && !matched; j++) { try { checkParticleDerivationOk(currentGrammar, derivedNode, derivedScope, baseNodes->elementAt(j), baseScope, baseInfo); matched = true; } catch (const XMLException&) { } } // didn't find a match. if (!matched) { ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::PD_MapAndSum, fMemoryManager); } } } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/validators/schema/TraverseSchema.cpp0000644000175000017500000127637711350705133023543 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: TraverseSchema.cpp 925236 2010-03-19 14:29:47Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // TraverseSchema: Local declaration // --------------------------------------------------------------------------- // This helper class will handle the parsing of namespace prefixes for a given DOMElement, and its winding back class NamespaceScopeManager { public: NamespaceScopeManager(const DOMElement* const node, SchemaInfo* info, TraverseSchema* traverser) { fScopeAdded=node?traverser->retrieveNamespaceMapping(node):false; fSchemaInfo=info; } ~NamespaceScopeManager() { if(fScopeAdded) fSchemaInfo->getNamespaceScope()->decreaseDepth(); } protected: bool fScopeAdded; SchemaInfo* fSchemaInfo; }; // --------------------------------------------------------------------------- // TraverseSchema: Static member data // --------------------------------------------------------------------------- // --------------------------------------------------------------------------- // TraverseSchema: Local const data // --------------------------------------------------------------------------- static const XMLCh fgAnonSNamePrefix[] = { chUnderscore, chUnderscore, chLatin_A, chLatin_n, chLatin_o, chLatin_n, chLatin_S, chNull }; static const XMLCh fgAnonCNamePrefix[] = { chUnderscore, chUnderscore, chLatin_A, chLatin_n, chLatin_o, chLatin_n, chLatin_C, chNull }; static const XMLCh fgUnbounded[] = { chLatin_u, chLatin_n, chLatin_b, chLatin_o, chLatin_u, chLatin_n, chLatin_d, chLatin_e, chLatin_d, chNull }; static const XMLCh fgValueOne[] = { chDigit_1, chNull }; static const XMLCh fgValueZero[] = { chDigit_0, chNull }; static const XMLCh* fgIdentityConstraints[] = { SchemaSymbols::fgELT_UNIQUE, SchemaSymbols::fgELT_KEY, SchemaSymbols::fgELT_KEYREF }; static const XMLCh fgSynthetic_Annotation[] = { chLatin_S, chLatin_y, chLatin_n, chLatin_t, chLatin_h, chLatin_e, chLatin_t , chLatin_i, chLatin_c, chUnderscore , chLatin_A, chLatin_n, chLatin_n, chLatin_o, chLatin_t, chLatin_a, chLatin_t , chLatin_i, chLatin_o, chLatin_n, chNull }; // Flags for global declaration enum { ENUM_ELT_SIMPLETYPE, ENUM_ELT_COMPLEXTYPE, ENUM_ELT_ELEMENT, ENUM_ELT_ATTRIBUTE, ENUM_ELT_ATTRIBUTEGROUP, ENUM_ELT_GROUP, ENUM_ELT_SIZE }; typedef JanitorMemFunCall CleanupType; // --------------------------------------------------------------------------- // TraverseSchema: Constructors and Destructor // --------------------------------------------------------------------------- TraverseSchema::TraverseSchema( DOMElement* const schemaRoot , XMLStringPool* const uriStringPool , SchemaGrammar* const schemaGrammar , GrammarResolver* const grammarResolver , RefHash2KeysTableOf* cachedSchemaInfoList , RefHash2KeysTableOf* schemaInfoList , XMLScanner* const xmlScanner , const XMLCh* const schemaURL , XMLEntityHandler* const entityHandler , XMLErrorReporter* const errorReporter , MemoryManager* const manager , bool multipleImport) : fFullConstraintChecking(false) , fTargetNSURI(-1) , fEmptyNamespaceURI(-1) , fCurrentScope(Grammar::TOP_LEVEL_SCOPE) , fScopeCount(schemaGrammar->getScopeCount ()) , fAnonXSTypeCount(schemaGrammar->getAnonTypeCount ()) , fCircularCheckIndex(0) , fTargetNSURIString(0) , fDatatypeRegistry(0) , fGrammarResolver(grammarResolver) , fSchemaGrammar(schemaGrammar) , fEntityHandler(entityHandler) , fErrorReporter(errorReporter) , fURIStringPool(uriStringPool) , fStringPool(0) , fBuffer(1023, manager) , fScanner(xmlScanner) , fAttributeDeclRegistry(0) , fComplexTypeRegistry(0) , fGroupRegistry(0) , fAttGroupRegistry(0) , fIC_ElementsNS(0) , fPreprocessedNodes(0) , fSchemaInfo(0) , fCurrentGroupInfo(0) , fCurrentAttGroupInfo(0) , fCurrentComplexType(0) , fCurrentTypeNameStack(0) , fCurrentGroupStack(0) , fIC_Elements(0) , fDeclStack(0) , fGlobalDeclarations(0) , fNonXSAttList(0) , fImportedNSList(0) , fIC_NodeListNS(0) , fNotationRegistry(0) , fRedefineComponents(0) , fIdentityConstraintNames(0) , fValidSubstitutionGroups(0) , fSchemaInfoList(schemaInfoList) , fCachedSchemaInfoList (cachedSchemaInfoList) , fParser(0) , fLocator(0) , fMemoryManager(manager) , fGrammarPoolMemoryManager(fGrammarResolver->getGrammarPoolMemoryManager()) , fAnnotation(0) , fAttributeCheck(manager) { CleanupType cleanup(this, &TraverseSchema::cleanUp); try { if (fGrammarResolver && schemaRoot && fURIStringPool) { init(); if (multipleImport) { // If we are working on an existing schema, do some // intitialization that is otherwise done by preprocessSchema. // fComplexTypeRegistry = fSchemaGrammar->getComplexTypeRegistry(); fGroupRegistry = fSchemaGrammar->getGroupInfoRegistry(); fAttGroupRegistry = fSchemaGrammar->getAttGroupInfoRegistry(); fAttributeDeclRegistry = fSchemaGrammar->getAttributeDeclRegistry(); fValidSubstitutionGroups = fSchemaGrammar->getValidSubstitutionGroups(); } preprocessSchema(schemaRoot, schemaURL, multipleImport); doTraverseSchema(schemaRoot); // Store the scope and anon type counts in case we need to add // more to this grammar (multi-import case). schemaGrammar and // fSchemaGrammar should be the same here. // fSchemaGrammar->setScopeCount (fScopeCount); fSchemaGrammar->setAnonTypeCount (fAnonXSTypeCount); } } catch(const OutOfMemoryException&) { cleanup.release(); throw; } cleanup.release(); } TraverseSchema::~TraverseSchema() { cleanUp(); } // --------------------------------------------------------------------------- // TraverseSchema: Traversal methods // --------------------------------------------------------------------------- void TraverseSchema::doTraverseSchema(const DOMElement* const schemaRoot) { // process children nodes processChildren(schemaRoot); // Handle identity constraints - keyref if (fIC_ElementsNS && fIC_ElementsNS->containsKey(fTargetNSURIString)) { fIC_Elements = fIC_ElementsNS->get(fTargetNSURIString); XMLSize_t icListSize = fIC_Elements->size(); for (XMLSize_t i=0; i < icListSize; i++) { SchemaElementDecl* curElem = fIC_Elements->elementAt(i); ValueVectorOf* icNodes = fIC_NodeListNS->get(curElem); XMLSize_t icNodesSize = icNodes->size(); for (XMLSize_t j = 0; j < icNodesSize; j++) { traverseKeyRef(icNodes->elementAt(j), curElem); } } } if (fScanner->getValidateAnnotations() && !fSchemaGrammar->getAnnotations()->isEmpty()) { validateAnnotations(); } fSchemaInfo->setProcessed(); } void TraverseSchema::preprocessSchema(DOMElement* const schemaRoot, const XMLCh* const schemaURL, bool multipleImport) { if (!multipleImport) { // Make sure namespace binding is defaulted const XMLCh* rootPrefix = schemaRoot->getPrefix(); if (rootPrefix == 0 || !*rootPrefix) { const XMLCh* xmlnsStr = schemaRoot->getAttribute(XMLUni::fgXMLNSString); if (!xmlnsStr || !*xmlnsStr) { schemaRoot->setAttribute(XMLUni::fgXMLNSString, SchemaSymbols::fgURI_SCHEMAFORSCHEMA); } } // Set schemaGrammar data and add it to GrammarResolver // For complex type registry, attribute decl registry , group/attGroup // and namespace mapping, needs to check whether the passed in // Grammar was a newly instantiated one. fComplexTypeRegistry = fSchemaGrammar->getComplexTypeRegistry(); if (fComplexTypeRegistry == 0 ) { fComplexTypeRegistry = new (fGrammarPoolMemoryManager) RefHashTableOf(29, fGrammarPoolMemoryManager); fSchemaGrammar->setComplexTypeRegistry(fComplexTypeRegistry); } fGroupRegistry = fSchemaGrammar->getGroupInfoRegistry(); if (fGroupRegistry == 0 ) { fGroupRegistry = new (fGrammarPoolMemoryManager) RefHashTableOf(13, fGrammarPoolMemoryManager); fSchemaGrammar->setGroupInfoRegistry(fGroupRegistry); } fAttGroupRegistry = fSchemaGrammar->getAttGroupInfoRegistry(); if (fAttGroupRegistry == 0 ) { fAttGroupRegistry = new (fGrammarPoolMemoryManager) RefHashTableOf(13, fGrammarPoolMemoryManager); fSchemaGrammar->setAttGroupInfoRegistry(fAttGroupRegistry); } fAttributeDeclRegistry = fSchemaGrammar->getAttributeDeclRegistry(); if (fAttributeDeclRegistry == 0) { fAttributeDeclRegistry = new (fGrammarPoolMemoryManager) RefHashTableOf(29, fGrammarPoolMemoryManager); fSchemaGrammar->setAttributeDeclRegistry(fAttributeDeclRegistry); } fValidSubstitutionGroups = fSchemaGrammar->getValidSubstitutionGroups(); if (!fValidSubstitutionGroups) { fValidSubstitutionGroups = new (fGrammarPoolMemoryManager) RefHash2KeysTableOf(29, fGrammarPoolMemoryManager); fSchemaGrammar->setValidSubstitutionGroups(fValidSubstitutionGroups); } //Retrieve the targetnamespace URI information const XMLCh* targetNSURIStr = schemaRoot->getAttribute(SchemaSymbols::fgATT_TARGETNAMESPACE); fSchemaGrammar->setTargetNamespace(targetNSURIStr); fCurrentScope = Grammar::TOP_LEVEL_SCOPE; fTargetNSURIString = fSchemaGrammar->getTargetNamespace(); fTargetNSURI = fURIStringPool->addOrFind(fTargetNSURIString); XMLSchemaDescription* gramDesc = (XMLSchemaDescription*) fSchemaGrammar->getGrammarDescription(); gramDesc->setTargetNamespace(fTargetNSURIString); fGrammarResolver->putGrammar(fSchemaGrammar); } else { fCurrentScope = Grammar::TOP_LEVEL_SCOPE; fTargetNSURIString = fSchemaGrammar->getTargetNamespace(); fTargetNSURI = fURIStringPool->addOrFind(fTargetNSURIString); } SchemaInfo* currInfo = new (fMemoryManager) SchemaInfo(0, 0, 0, fTargetNSURI, fSchemaInfo?fSchemaInfo->getNamespaceScope():NULL, schemaURL, fTargetNSURIString, schemaRoot, fScanner, fGrammarPoolMemoryManager); if (fSchemaInfo) fSchemaInfo->addSchemaInfo(currInfo, SchemaInfo::IMPORT); else { currInfo->getNamespaceScope()->reset(fEmptyNamespaceURI); // Add mapping for the xml prefix currInfo->getNamespaceScope()->addPrefix(XMLUni::fgXMLString, fURIStringPool->addOrFind(XMLUni::fgXMLURIName)); } addImportedNS(currInfo->getTargetNSURI()); fSchemaInfo = currInfo; fSchemaInfoList->put((void*) fSchemaInfo->getCurrentSchemaURL(), fSchemaInfo->getTargetNSURI(), fSchemaInfo); fSchemaInfo->addSchemaInfo(fSchemaInfo, SchemaInfo::INCLUDE); traverseSchemaHeader(schemaRoot); // preprocess chidren preprocessChildren(schemaRoot); } void TraverseSchema::traverseSchemaHeader(const DOMElement* const schemaRoot) { // Make sure that the root element is if (!XMLString::equals(schemaRoot->getLocalName(), SchemaSymbols::fgELT_SCHEMA)) { reportSchemaError(schemaRoot, XMLUni::fgXMLErrDomain, XMLErrs::InvalidXMLSchemaRoot); } // Make sure that the targetNamespace value is not empty string checkForEmptyTargetNamespace(schemaRoot); // ----------------------------------------------------------------------- // Check Attributes // ----------------------------------------------------------------------- fAttributeCheck.checkAttributes( schemaRoot, GeneralAttributeCheck::E_Schema, this , true, fSchemaInfo->getNonXSAttList() ); retrieveNamespaceMapping(schemaRoot); // Add mapping for the default namespace if ((!fTargetNSURIString || !*fTargetNSURIString) && schemaRoot->getAttributeNode(XMLUni::fgXMLNSString)==NULL) fSchemaInfo->getNamespaceScope()->addPrefix(XMLUni::fgZeroLenString, fEmptyNamespaceURI); unsigned short elemAttrDefaultQualified = 0; if (XMLString::equals(schemaRoot->getAttribute(SchemaSymbols::fgATT_ELEMENTFORMDEFAULT), SchemaSymbols::fgATTVAL_QUALIFIED)) { elemAttrDefaultQualified |= Elem_Def_Qualified; } if (XMLString::equals(schemaRoot->getAttribute(SchemaSymbols::fgATT_ATTRIBUTEFORMDEFAULT), SchemaSymbols::fgATTVAL_QUALIFIED)) { elemAttrDefaultQualified |= Attr_Def_Qualified; } fSchemaInfo->setElemAttrDefaultQualified(elemAttrDefaultQualified); fSchemaInfo->setBlockDefault(parseBlockSet(schemaRoot, ES_Block, true)); fSchemaInfo->setFinalDefault(parseFinalSet(schemaRoot, ECS_Final, true)); } XSAnnotation* TraverseSchema::traverseAnnotationDecl(const DOMElement* const annotationElem, ValueVectorOf* const nonXSAttList, const bool topLevel) { NamespaceScopeManager nsMgr(annotationElem, fSchemaInfo, this); // ----------------------------------------------------------------------- // Check Attributes // ----------------------------------------------------------------------- fAttributeCheck.checkAttributes( annotationElem, GeneralAttributeCheck::E_Annotation, this, topLevel ); const XMLCh* contents = 0; DOMElement* child = XUtil::getFirstChildElement(annotationElem); if (child) { for (; child != 0; child = XUtil::getNextSiblingElement(child)) { const XMLCh* name = child->getLocalName(); if (XMLString::equals(name, SchemaSymbols::fgELT_APPINFO)) { DOMNode* textContent = child->getFirstChild(); if (textContent && textContent->getNodeType() == DOMNode::TEXT_NODE) contents = ((DOMText*) textContent)->getData(); fAttributeCheck.checkAttributes(child, GeneralAttributeCheck::E_Appinfo, this); } else if (XMLString::equals(name, SchemaSymbols::fgELT_DOCUMENTATION)) { DOMNode* textContent = child->getFirstChild(); if (textContent && textContent->getNodeType() == DOMNode::TEXT_NODE) contents = ((DOMText*) textContent)->getData(); fAttributeCheck.checkAttributes(child, GeneralAttributeCheck::E_Documentation, this); } else { reportSchemaError(child, XMLUni::fgXMLErrDomain, XMLErrs::InvalidAnnotationContent); } } } else { // If the Annotation has no children, get the text directly DOMNode* textContent = annotationElem->getFirstChild(); if (textContent && textContent->getNodeType() == DOMNode::TEXT_NODE) contents = ((DOMText*) textContent)->getData(); } if (contents && !fScanner->getIgnoreAnnotations()) { XSAnnotation* theAnnotation = 0; XMLSize_t nonXSAttSize = nonXSAttList->size(); if (nonXSAttSize) { int annotTokenStart = XMLString::patternMatch( contents, SchemaSymbols::fgELT_ANNOTATION); if (annotTokenStart == -1) // something is wrong return 0; // set annotation element fBuffer.set(contents, annotTokenStart + 10); for (XMLSize_t i=0; ielementAt(i); if (!XMLString::equals( annotationElem->getAttributeNS( attNode->getNamespaceURI(), attNode->getLocalName()) , XMLUni::fgZeroLenString) ) { continue; } fBuffer.append(chSpace); fBuffer.append(attNode->getNodeName()); fBuffer.append(chEqual); fBuffer.append(chDoubleQuote); processAttValue(attNode->getNodeValue(), fBuffer); fBuffer.append(chDoubleQuote); } // add remaining annotation content fBuffer.append(contents + annotTokenStart + 10); theAnnotation = new (fGrammarPoolMemoryManager) XSAnnotation(fBuffer.getRawBuffer(), fGrammarPoolMemoryManager); } else { theAnnotation = new (fGrammarPoolMemoryManager) XSAnnotation(contents, fGrammarPoolMemoryManager); } /*** * set line, col and systemId info ***/ theAnnotation->setLineCol( ((XSDElementNSImpl*)annotationElem)->getLineNo() , ((XSDElementNSImpl*)annotationElem)->getColumnNo() ); theAnnotation->setSystemId(fSchemaInfo->getCurrentSchemaURL()); return theAnnotation; } return 0; } /** * Traverse include * * * Content: (annotation?) * */ void TraverseSchema::preprocessInclude(const DOMElement* const elem) { NamespaceScopeManager nsMgr(elem, fSchemaInfo, this); // ----------------------------------------------------------------------- // Check attributes // ----------------------------------------------------------------------- fAttributeCheck.checkAttributes( elem, GeneralAttributeCheck::E_Include, this, true, fNonXSAttList); // ----------------------------------------------------------------------- // First, handle any ANNOTATION declaration // ----------------------------------------------------------------------- if (checkContent(elem, XUtil::getFirstChildElement(elem), true) != 0) reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::OnlyAnnotationExpected); if (fAnnotation) fSchemaGrammar->addAnnotation(fAnnotation); else if (fScanner->getGenerateSyntheticAnnotations() && fNonXSAttList->size()) { fAnnotation = generateSyntheticAnnotation(elem, fNonXSAttList); fSchemaGrammar->addAnnotation(fAnnotation); } // ----------------------------------------------------------------------- // Get 'schemaLocation' attribute // ----------------------------------------------------------------------- const XMLCh* schemaLocation = getElementAttValue(elem, SchemaSymbols::fgATT_SCHEMALOCATION, DatatypeValidator::AnyURI); if (!schemaLocation || !*schemaLocation) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::DeclarationNoSchemaLocation, SchemaSymbols::fgELT_INCLUDE); return; } // ------------------------------------------------------------------ // Resolve schema location // ------------------------------------------------------------------ fLocator->setValues(fSchemaInfo->getCurrentSchemaURL(), 0, ((XSDElementNSImpl*) elem)->getLineNo(), ((XSDElementNSImpl*) elem)->getColumnNo()); InputSource* srcToFill = resolveSchemaLocation(schemaLocation, XMLResourceIdentifier::SchemaInclude); Janitor janSrc(srcToFill); // Nothing to do if (!srcToFill) { return; } const XMLCh* includeURL = srcToFill->getSystemId(); SchemaInfo* includeSchemaInfo = fCachedSchemaInfoList->get(includeURL, fTargetNSURI); if (!includeSchemaInfo && fSchemaInfoList != fCachedSchemaInfoList) includeSchemaInfo = fSchemaInfoList->get(includeURL, fTargetNSURI); if (includeSchemaInfo) { fSchemaInfo->addSchemaInfo(includeSchemaInfo, SchemaInfo::INCLUDE); return; } // ------------------------------------------------------------------ // Parse input source // ------------------------------------------------------------------ if (!fParser) fParser = new (fGrammarPoolMemoryManager) XSDDOMParser(0, fGrammarPoolMemoryManager, 0); fParser->setValidationScheme(XercesDOMParser::Val_Never); fParser->setDoNamespaces(true); fParser->setUserEntityHandler(fEntityHandler); fParser->setUserErrorReporter(fErrorReporter); // Should just issue warning if the schema is not found bool flag = srcToFill->getIssueFatalErrorIfNotFound(); srcToFill->setIssueFatalErrorIfNotFound(false); fParser->parse(*srcToFill); // Reset the InputSource srcToFill->setIssueFatalErrorIfNotFound(flag); if (fParser->getSawFatal() && fScanner->getExitOnFirstFatal()) reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::SchemaScanFatalError); // ------------------------------------------------------------------ // Get root element // ------------------------------------------------------------------ DOMDocument* document = fParser->getDocument(); if (document) { DOMElement* root = document->getDocumentElement(); if (root) { const XMLCh* targetNSURIString = root->getAttribute(SchemaSymbols::fgATT_TARGETNAMESPACE); // check to see if targetNameSpace is right if (*targetNSURIString && !XMLString::equals(targetNSURIString,fTargetNSURIString)){ reportSchemaError(root, XMLUni::fgXMLErrDomain, XMLErrs::IncludeNamespaceDifference, schemaLocation, targetNSURIString); return; } // if targetNamespace is empty, change it to includ'g schema // targetNamespace if (!*targetNSURIString && root->getAttributeNode(XMLUni::fgXMLNSString) == 0 && fTargetNSURI != fEmptyNamespaceURI) { root->setAttribute(XMLUni::fgXMLNSString, fTargetNSURIString); } // -------------------------------------------------------- // Update schema information with included schema // -------------------------------------------------------- SchemaInfo* saveInfo = fSchemaInfo; fSchemaInfo = new (fMemoryManager) SchemaInfo(0, 0, 0, fTargetNSURI, fSchemaInfo->getNamespaceScope(), includeURL, fTargetNSURIString, root, fScanner, fGrammarPoolMemoryManager); fSchemaInfoList->put((void*) fSchemaInfo->getCurrentSchemaURL(), fSchemaInfo->getTargetNSURI(), fSchemaInfo); fPreprocessedNodes->put((void*) elem, fSchemaInfo); saveInfo->addSchemaInfo(fSchemaInfo, SchemaInfo::INCLUDE); traverseSchemaHeader(root); preprocessChildren(root); fSchemaInfo = saveInfo; } } } void TraverseSchema::traverseInclude(const DOMElement* const elem) { NamespaceScopeManager nsMgr(elem, fSchemaInfo, this); SchemaInfo* includeInfo = fPreprocessedNodes->get(elem); if (includeInfo) { SchemaInfo* saveInfo = fSchemaInfo; fSchemaInfo = includeInfo; processChildren(includeInfo->getRoot()); fSchemaInfo = saveInfo; } } /** * Traverse import * * * Content: (annotation?) * */ void TraverseSchema::preprocessImport(const DOMElement* const elem) { NamespaceScopeManager nsMgr(elem, fSchemaInfo, this); // ----------------------------------------------------------------------- // Check attributes // ----------------------------------------------------------------------- fAttributeCheck.checkAttributes( elem, GeneralAttributeCheck::E_Import, this, true, fNonXSAttList); // ----------------------------------------------------------------------- // First, handle any ANNOTATION declaration // ----------------------------------------------------------------------- if (checkContent(elem, XUtil::getFirstChildElement(elem), true) != 0) reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::OnlyAnnotationExpected); if (fAnnotation) fSchemaGrammar->addAnnotation(fAnnotation); else if (fScanner->getGenerateSyntheticAnnotations() && fNonXSAttList->size()) { fAnnotation = generateSyntheticAnnotation(elem, fNonXSAttList); fSchemaGrammar->addAnnotation(fAnnotation); } // ----------------------------------------------------------------------- // Handle 'namespace' attribute // ----------------------------------------------------------------------- const XMLCh* nameSpace = getElementAttValue(elem, SchemaSymbols::fgATT_NAMESPACE, DatatypeValidator::AnyURI); const XMLCh* nameSpaceValue = nameSpace ? nameSpace : XMLUni::fgZeroLenString; if (XMLString::equals(nameSpaceValue, fTargetNSURIString)) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::Import_1_1); return; } if (!*nameSpaceValue && fTargetNSURI == fEmptyNamespaceURI) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::Import_1_2); return; } // ------------------------------------------------------------------ // Get 'schemaLocation' attribute // ------------------------------------------------------------------ const XMLCh* schemaLocation = getElementAttValue(elem, SchemaSymbols::fgATT_SCHEMALOCATION, DatatypeValidator::AnyURI); // ------------------------------------------------------------------ // Resolve namespace to a grammar // ------------------------------------------------------------------ Grammar* aGrammar = 0; { XMLSchemaDescription* gramDesc =fGrammarResolver->getGrammarPool()->createSchemaDescription(nameSpaceValue); Janitor janName(gramDesc); gramDesc->setContextType(XMLSchemaDescription::CONTEXT_IMPORT); gramDesc->setLocationHints(schemaLocation); aGrammar = fGrammarResolver->getGrammar(gramDesc); } bool grammarFound = (aGrammar && (aGrammar->getGrammarType() == Grammar::SchemaGrammarType)); if (grammarFound) { addImportedNS(fURIStringPool->addOrFind(nameSpaceValue)); } // a bare doesn't load anything if(!schemaLocation && !nameSpace) return; // ------------------------------------------------------------------ // Resolve schema location // ------------------------------------------------------------------ fLocator->setValues(fSchemaInfo->getCurrentSchemaURL(), 0, ((XSDElementNSImpl*) elem)->getLineNo(), ((XSDElementNSImpl*) elem)->getColumnNo()); InputSource* srcToFill = resolveSchemaLocation(schemaLocation, XMLResourceIdentifier::SchemaImport, nameSpace); // Nothing to do if (!srcToFill) { if (!grammarFound) { addImportedNS(fURIStringPool->addOrFind(nameSpaceValue)); } return; } Janitor janSrc(srcToFill); const XMLCh* importURL = srcToFill->getSystemId(); unsigned int nameSpaceId = nameSpace ? fURIStringPool->addOrFind(nameSpace) : fEmptyNamespaceURI; SchemaInfo* importSchemaInfo = fCachedSchemaInfoList->get(importURL, nameSpaceId); if (!importSchemaInfo && fSchemaInfoList != fCachedSchemaInfoList) importSchemaInfo = fSchemaInfoList->get(importURL, nameSpaceId); if (importSchemaInfo) { fSchemaInfo->addSchemaInfo(importSchemaInfo, SchemaInfo::IMPORT); addImportedNS(importSchemaInfo->getTargetNSURI()); return; } if (grammarFound) { if (!fScanner->getHandleMultipleImports()) return; } // ------------------------------------------------------------------ // Parse input source // ------------------------------------------------------------------ if (!fParser) fParser = new (fGrammarPoolMemoryManager) XSDDOMParser(0, fGrammarPoolMemoryManager, 0); fParser->setValidationScheme(XercesDOMParser::Val_Never); fParser->setDoNamespaces(true); fParser->setUserEntityHandler(fEntityHandler); fParser->setUserErrorReporter(fErrorReporter); // Should just issue warning if the schema is not found bool flag = srcToFill->getIssueFatalErrorIfNotFound(); srcToFill->setIssueFatalErrorIfNotFound(false); fParser->parse(*srcToFill) ; // Reset the InputSource srcToFill->setIssueFatalErrorIfNotFound(flag); if (fParser->getSawFatal() && fScanner->getExitOnFirstFatal()) reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::SchemaScanFatalError); // ------------------------------------------------------------------ // Get root element // ------------------------------------------------------------------ DOMDocument* document = fParser->getDocument(); if (document) { DOMElement* root = document->getDocumentElement(); if (!root) { return; } const XMLCh* targetNSURIString = root->getAttribute(SchemaSymbols::fgATT_TARGETNAMESPACE); if (!XMLString::equals(targetNSURIString, nameSpaceValue)) { reportSchemaError(root, XMLUni::fgXMLErrDomain, XMLErrs::ImportNamespaceDifference, schemaLocation, targetNSURIString, nameSpaceValue); } else { // -------------------------------------------------------- // Preprocess new schema // -------------------------------------------------------- SchemaInfo* saveInfo = fSchemaInfo; fSchemaGrammar->setScopeCount (fScopeCount); fSchemaGrammar->setAnonTypeCount (fAnonXSTypeCount); if (grammarFound) { fSchemaGrammar = (SchemaGrammar*) aGrammar; } else { fSchemaGrammar = new (fGrammarPoolMemoryManager) SchemaGrammar(fGrammarPoolMemoryManager); } fScopeCount = fSchemaGrammar->getScopeCount (); fAnonXSTypeCount = fSchemaGrammar->getAnonTypeCount (); XMLSchemaDescription* gramDesc = (XMLSchemaDescription*) fSchemaGrammar->getGrammarDescription(); gramDesc->setContextType(XMLSchemaDescription::CONTEXT_IMPORT); gramDesc->setLocationHints(importURL); preprocessSchema(root, importURL, grammarFound); fPreprocessedNodes->put((void*) elem, fSchemaInfo); // -------------------------------------------------------- // Restore old schema information // -------------------------------------------------------- restoreSchemaInfo(saveInfo, SchemaInfo::IMPORT); } } } void TraverseSchema::traverseImport(const DOMElement* const elem) { NamespaceScopeManager nsMgr(elem, fSchemaInfo, this); SchemaInfo* importInfo = fPreprocessedNodes->get(elem); if (importInfo) { // -------------------------------------------------------- // Traverse new schema // -------------------------------------------------------- SchemaInfo* saveInfo = fSchemaInfo; restoreSchemaInfo(importInfo, SchemaInfo::IMPORT); doTraverseSchema(importInfo->getRoot()); // -------------------------------------------------------- // Restore old schema information // -------------------------------------------------------- restoreSchemaInfo(saveInfo, SchemaInfo::IMPORT); } } /** * Traverse redefine declaration * * * schemaLocation = uriReference * {any attributes with non-schema namespace . . .}> * Content: (annotation | ( * attributeGroup | complexType | group | simpleType))* * */ void TraverseSchema::preprocessRedefine(const DOMElement* const redefineElem) { NamespaceScopeManager nsMgr(redefineElem, fSchemaInfo, this); // ----------------------------------------------------------------------- // Check attributes // ----------------------------------------------------------------------- fAttributeCheck.checkAttributes( redefineElem, GeneralAttributeCheck::E_Redefine, this, true ); // First, we look through the children of redefineElem. Each one will // correspond to an element of the redefined schema that we need to // redefine. To do this, we rename the element of the redefined schema, // and rework the base or ref tag of the kid we're working on to refer to // the renamed group or derive the renamed type. Once we've done this, we // actually go through the schema being redefined and convert it to a // grammar. Only then do we run through redefineDecl's kids and put them // in the grammar. SchemaInfo* redefiningInfo = fSchemaInfo; if (!openRedefinedSchema(redefineElem)) { redefiningInfo->addFailedRedefine(redefineElem); return; } if (!fRedefineComponents) { fRedefineComponents = new (fMemoryManager) RefHash2KeysTableOf(13, (bool) false, fMemoryManager); } SchemaInfo* redefinedInfo = fSchemaInfo; renameRedefinedComponents(redefineElem, redefiningInfo, redefinedInfo); // Now we have to preprocess our nicely-renamed schemas. if (fPreprocessedNodes->containsKey(redefineElem)) { fSchemaInfo = redefinedInfo; preprocessChildren(fSchemaInfo->getRoot()); } fSchemaInfo = redefiningInfo; } void TraverseSchema::traverseRedefine(const DOMElement* const redefineElem) { NamespaceScopeManager nsMgr(redefineElem, fSchemaInfo, this); SchemaInfo* saveInfo = fSchemaInfo; SchemaInfo* redefinedInfo = fPreprocessedNodes->get(redefineElem); if (redefinedInfo) { // Now we have to march through our nicely-renamed schemas. When // we do these traversals other 's may perhaps be // encountered; we leave recursion to sort this out. fSchemaInfo = redefinedInfo; processChildren(fSchemaInfo->getRoot()); fSchemaInfo = saveInfo; // Now traverse our own processChildren(redefineElem); } } /** * Traverse the Choice, Sequence declaration * * */ ContentSpecNode* TraverseSchema::traverseChoiceSequence(const DOMElement* const elem, const int modelGroupType, bool& hasChildren) { hasChildren = false; NamespaceScopeManager nsMgr(elem, fSchemaInfo, this); // ----------------------------------------------------------------------- // Check attributes // ----------------------------------------------------------------------- fAttributeCheck.checkAttributes( elem, GeneralAttributeCheck::E_Sequence, this, false, fNonXSAttList ); // ----------------------------------------------------------------------- // Process contents // ----------------------------------------------------------------------- DOMElement* child = checkContent(elem, XUtil::getFirstChildElement(elem), true); if (fScanner->getGenerateSyntheticAnnotations() && !fAnnotation && fNonXSAttList->size()) { fAnnotation = generateSyntheticAnnotation(elem, fNonXSAttList); } Janitor janAnnot(fAnnotation); Janitor left(0); Janitor right(0); bool hadContent = false; Janitor contentSpecNode(0); for (; child != 0; child = XUtil::getNextSiblingElement(child)) { hasChildren = true; contentSpecNode.release(); bool seeParticle = false; bool wasAny = false; const XMLCh* childName = child->getLocalName(); if (XMLString::equals(childName, SchemaSymbols::fgELT_ELEMENT)) { SchemaElementDecl* elemDecl = traverseElementDecl(child); if (!elemDecl ) continue; contentSpecNode.reset(new (fGrammarPoolMemoryManager) ContentSpecNode ( elemDecl , fGrammarPoolMemoryManager )); seeParticle = true; } else if (XMLString::equals(childName, SchemaSymbols::fgELT_GROUP)) { XercesGroupInfo* grpInfo = traverseGroupDecl(child, false); if (!grpInfo) { continue; } ContentSpecNode* grpContentSpecNode = grpInfo->getContentSpec(); if (!grpContentSpecNode) { continue; } if (grpContentSpecNode->hasAllContent()) { reportSchemaError(child, XMLUni::fgXMLErrDomain, XMLErrs::AllContentLimited); continue; } contentSpecNode.reset(new (fGrammarPoolMemoryManager) ContentSpecNode(*grpContentSpecNode)); seeParticle = true; } else if (XMLString::equals(childName, SchemaSymbols::fgELT_CHOICE)) { bool hasChild; contentSpecNode.reset(traverseChoiceSequence(child,ContentSpecNode::Choice, hasChild)); seeParticle = true; } else if (XMLString::equals(childName, SchemaSymbols::fgELT_SEQUENCE)) { bool hasChild; contentSpecNode.reset(traverseChoiceSequence(child,ContentSpecNode::Sequence, hasChild)); seeParticle = true; } else if (XMLString::equals(childName, SchemaSymbols::fgELT_ANY)) { contentSpecNode.reset(traverseAny(child)); seeParticle = true; wasAny = true; } else { reportSchemaError(child, XMLUni::fgValidityDomain, XMLValid::GroupContentRestricted, childName, ((ContentSpecNode::NodeTypes) modelGroupType) == ContentSpecNode::Choice?SchemaSymbols::fgELT_CHOICE:SchemaSymbols::fgELT_SEQUENCE); } if (seeParticle) { checkMinMax(contentSpecNode.get(), child, Not_All_Context); if (wasAny && contentSpecNode.get()->getMaxOccurs() == 0) { contentSpecNode.reset(0); } } if (contentSpecNode.get()) { hadContent = true; } if (left.get() == 0) { left.reset(contentSpecNode.release()); } else if (right.get() == 0) { right.reset(contentSpecNode.release()); } else { ContentSpecNode* newNode = new (fGrammarPoolMemoryManager) ContentSpecNode ( (ContentSpecNode::NodeTypes) modelGroupType , left.get() , right.get() , true , true , fGrammarPoolMemoryManager ); left.release(); right.release(); left.reset(newNode); right.reset(contentSpecNode.release()); } } contentSpecNode.release(); if (hadContent) { ContentSpecNode* newNode = new (fGrammarPoolMemoryManager) ContentSpecNode ( ((ContentSpecNode::NodeTypes) modelGroupType) == ContentSpecNode::Choice ? ContentSpecNode::ModelGroupChoice : ContentSpecNode::ModelGroupSequence , left.get() , right.get() , true , true , fGrammarPoolMemoryManager ); left.release(); left.reset(newNode); if (!janAnnot.isDataNull()) fSchemaGrammar->putAnnotation(left.get(), janAnnot.release()); } right.release(); return left.release(); } /** * Traverse SimpleType declaration: * * Content: (annotation? , ((list | restriction | union))) * * * traverse || */ DatatypeValidator* TraverseSchema::traverseSimpleTypeDecl(const DOMElement* const childElem, const bool topLevel, int baseRefContext) { NamespaceScopeManager nsMgr(childElem, fSchemaInfo, this); // ------------------------------------------------------------------ // Process contents // ------------------------------------------------------------------ const XMLCh* name = getElementAttValue(childElem,SchemaSymbols::fgATT_NAME, DatatypeValidator::NCName); bool nameEmpty = (!name || !*name); if (topLevel && nameEmpty) { reportSchemaError(childElem, XMLUni::fgXMLErrDomain, XMLErrs::NoNameGlobalElement, SchemaSymbols::fgELT_SIMPLETYPE); return 0; } else if(!topLevel && !nameEmpty) { reportSchemaError(childElem, XMLUni::fgXMLErrDomain, XMLErrs::AttributeDisallowedLocal, SchemaSymbols::fgATT_NAME, childElem->getLocalName()); return 0; } if (nameEmpty) { // anonymous simpleType name = genAnonTypeName(fgAnonSNamePrefix); } else if (!XMLChar1_0::isValidNCName(name, XMLString::stringLen(name)) ) { reportSchemaError(childElem, XMLUni::fgXMLErrDomain, XMLErrs::InvalidDeclarationName, SchemaSymbols::fgELT_SIMPLETYPE, name); return 0; } fBuffer.set(fTargetNSURIString); fBuffer.append(chComma); fBuffer.append(name); unsigned int fullTypeNameId = fStringPool->addOrFind(fBuffer.getRawBuffer()); const XMLCh* fullName = fStringPool->getValueForId(fullTypeNameId); //check if we have already traversed the same simpleType decl DatatypeValidator* dv = fDatatypeRegistry->getDatatypeValidator(fullName); if (!dv) { // ------------------------------------------------------------------- // Check attributes // ------------------------------------------------------------------- unsigned short scope = (topLevel) ? GeneralAttributeCheck::E_SimpleTypeGlobal : GeneralAttributeCheck::E_SimpleTypeLocal; fAttributeCheck.checkAttributes( childElem, scope, this, topLevel, fNonXSAttList ); // Circular constraint checking if (fCurrentTypeNameStack->containsElement(fullTypeNameId)) { reportSchemaError(childElem, XMLUni::fgXMLErrDomain, XMLErrs::NoCircularDefinition, name); return 0; } fCurrentTypeNameStack->addElement(fullTypeNameId); // Get 'final' values int finalSet = parseFinalSet(childElem, S_Final); // annotation?,(list|restriction|union) DOMElement* content= checkContent( childElem, XUtil::getFirstChildElement(childElem), false); if (fScanner->getGenerateSyntheticAnnotations() && !fAnnotation && fNonXSAttList->size()) { fAnnotation = generateSyntheticAnnotation(childElem, fNonXSAttList); } Janitor janAnnot(fAnnotation); if (content == 0) { reportSchemaError(childElem, XMLUni::fgXMLErrDomain, XMLErrs::EmptySimpleTypeContent); popCurrentTypeNameStack(); return 0; } const XMLCh* varietyName = content->getLocalName(); // Remark: some code will be repeated in list|restriction| union but it // is cleaner that way if (XMLString::equals(varietyName, SchemaSymbols::fgELT_LIST)) { //traverse List if ((baseRefContext & SchemaSymbols::XSD_LIST) != 0) { reportSchemaError(content, XMLUni::fgXMLErrDomain, XMLErrs::AtomicItemType); popCurrentTypeNameStack(); return 0; } dv = traverseByList(childElem, content, name, fullName, finalSet, &janAnnot); } else if (XMLString::equals(varietyName, SchemaSymbols::fgELT_RESTRICTION)) { //traverse Restriction dv = traverseByRestriction(childElem, content, name, fullName, finalSet, &janAnnot); } else if (XMLString::equals(varietyName, SchemaSymbols::fgELT_UNION)) { //traverse union dv = traverseByUnion(childElem, content, name, fullName, finalSet, baseRefContext, &janAnnot); } else { reportSchemaError(content, XMLUni::fgXMLErrDomain, XMLErrs::FeatureUnsupported, varietyName); popCurrentTypeNameStack(); } if (dv) { if (nameEmpty) dv->setAnonymous(); if (!janAnnot.isDataNull()) fSchemaGrammar->putAnnotation(dv, janAnnot.release()); } } return dv; } /** * Traverse ComplexType Declaration - CR Implementation. * * * Content: (annotation? , (simpleContent | complexContent | * ( (group | all | choice | sequence)? , * ( (attribute | attributeGroup)* , anyAttribute?)))) * */ int TraverseSchema::traverseComplexTypeDecl(const DOMElement* const elem, const bool topLevel, const XMLCh* const recursingTypeName) { NamespaceScopeManager nsMgr(elem, fSchemaInfo, this); // Get the attributes of the complexType const XMLCh* name = getElementAttValue(elem, SchemaSymbols::fgATT_NAME, DatatypeValidator::NCName); bool isAnonymous = false; if (!name || !*name) { if (topLevel) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::TopLevelNoNameComplexType); return -1; } if (recursingTypeName) name = recursingTypeName; else { name = genAnonTypeName(fgAnonCNamePrefix); isAnonymous = true; } } if (!XMLChar1_0::isValidNCName(name, XMLString::stringLen(name)) ) { //REVISIT - Should we return or continue and save type with wrong name? reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::InvalidDeclarationName, SchemaSymbols::fgELT_COMPLEXTYPE, name); return -1; } // ------------------------------------------------------------------ // Check if the type has already been registered // ------------------------------------------------------------------ fBuffer.set(fTargetNSURIString); fBuffer.append(chComma); fBuffer.append(name); int typeNameIndex = fStringPool->addOrFind(fBuffer.getRawBuffer()); const XMLCh* fullName = fStringPool->getValueForId(typeNameIndex); ComplexTypeInfo* typeInfo = 0; if (topLevel || recursingTypeName) { typeInfo = fComplexTypeRegistry->get(fullName); if (typeInfo && !typeInfo->getPreprocessed()) { return typeNameIndex; } } // ----------------------------------------------------------------------- // Check Attributes // ----------------------------------------------------------------------- bool preProcessFlag = (typeInfo) ? typeInfo->getPreprocessed() : false; if (!preProcessFlag) { fAttributeCheck.checkAttributes( elem, (topLevel) ? GeneralAttributeCheck::E_ComplexTypeGlobal : GeneralAttributeCheck::E_ComplexTypeLocal , this, topLevel, fNonXSAttList ); } // ----------------------------------------------------------------------- // Create a new instance // ----------------------------------------------------------------------- XMLSize_t previousCircularCheckIndex = fCircularCheckIndex; unsigned int previousScope = fCurrentScope; if (preProcessFlag) { fCurrentScope = typeInfo->getScopeDefined(); typeInfo->setPreprocessed(false); } else { // ------------------------------------------------------------------ // Register the type // ------------------------------------------------------------------ typeInfo = new (fGrammarPoolMemoryManager) ComplexTypeInfo(fGrammarPoolMemoryManager); if(isAnonymous) { typeInfo->setAnonymous(); } fCurrentScope = fScopeCount++; fComplexTypeRegistry->put((void*) fullName, typeInfo); typeInfo->setTypeName(fullName); typeInfo->setScopeDefined(fCurrentScope); if (fFullConstraintChecking) { XSDLocator* aLocator = new (fGrammarPoolMemoryManager) XSDLocator(); aLocator->setValues(fStringPool->getValueForId(fStringPool->addOrFind(fSchemaInfo->getCurrentSchemaURL())), 0, ((XSDElementNSImpl*) elem)->getLineNo(), ((XSDElementNSImpl*) elem)->getColumnNo()); typeInfo->setLocator(aLocator); } } fCurrentTypeNameStack->addElement(typeNameIndex); ComplexTypeInfo* saveTypeInfo = fCurrentComplexType; fCurrentComplexType = typeInfo; // ------------------------------------------------------------------ // First, handle any ANNOTATION declaration and get next child // ------------------------------------------------------------------ DOMElement* child = checkContent(elem, XUtil::getFirstChildElement(elem), true, !preProcessFlag); if (fScanner->getGenerateSyntheticAnnotations() && !fAnnotation && fNonXSAttList->size()) { fAnnotation = generateSyntheticAnnotation(elem, fNonXSAttList); } Janitor janAnnot(fAnnotation); // ------------------------------------------------------------------ // Process the content of the complex type declaration // ------------------------------------------------------------------ try { const XMLCh* mixedVal = getElementAttValue(elem,SchemaSymbols::fgATT_MIXED, DatatypeValidator::Boolean); bool isMixed = false; if ((mixedVal && *mixedVal) && (XMLString::equals(SchemaSymbols::fgATTVAL_TRUE, mixedVal) || XMLString::equals(fgValueOne, mixedVal))) { isMixed = true; } if (child == 0) { // EMPTY complexType with complexContent processComplexContent(elem, name, child, typeInfo, 0, isMixed); } else { const XMLCh* childName = child->getLocalName(); if (XMLString::equals(childName, SchemaSymbols::fgELT_SIMPLECONTENT)) { // SIMPLE CONTENT element traverseSimpleContentDecl(name, fullName, child, typeInfo, &janAnnot); if (XUtil::getNextSiblingElement(child) != 0) { reportSchemaError(child, XMLUni::fgXMLErrDomain, XMLErrs::InvalidChildFollowingSimpleContent); } } else if (XMLString::equals(childName, SchemaSymbols::fgELT_COMPLEXCONTENT)) { // COMPLEX CONTENT element traverseComplexContentDecl(name, child, typeInfo, isMixed, &janAnnot); if (XUtil::getNextSiblingElement(child) != 0) { reportSchemaError(child, XMLUni::fgXMLErrDomain, XMLErrs::InvalidChildFollowingConplexContent); } } else if (fCurrentGroupInfo) { typeInfo->setPreprocessed(true); } else { // We must have .... // GROUP, ALL, SEQUENCE or CHOICE, followed by optional attributes // Note that it's possible that only attributes are specified. processComplexContent(elem, name, child, typeInfo, 0, isMixed); } } } catch(const TraverseSchema::ExceptionCodes aCode) { if (aCode == TraverseSchema::InvalidComplexTypeInfo) defaultComplexTypeInfo(typeInfo); else if (aCode == TraverseSchema::RecursingElement) typeInfo->setPreprocessed(); } // ------------------------------------------------------------------ // Finish the setup of the typeInfo // ------------------------------------------------------------------ if (!preProcessFlag) { const XMLCh* abstractAttVal = getElementAttValue(elem, SchemaSymbols::fgATT_ABSTRACT, DatatypeValidator::Boolean); int blockSet = parseBlockSet(elem, C_Block); int finalSet = parseFinalSet(elem, EC_Final); typeInfo->setBlockSet(blockSet); typeInfo->setFinalSet(finalSet); if ((abstractAttVal && *abstractAttVal) && (XMLString::equals(abstractAttVal, SchemaSymbols::fgATTVAL_TRUE) || XMLString::equals(abstractAttVal, fgValueOne))) { typeInfo->setAbstract(true); } else { typeInfo->setAbstract(false); } } // Store Annotation if (!janAnnot.isDataNull()) fSchemaGrammar->putAnnotation(typeInfo, janAnnot.release()); // ------------------------------------------------------------------ // Before exiting, restore the scope, mainly for nested anonymous types // ------------------------------------------------------------------ popCurrentTypeNameStack(); fCircularCheckIndex = previousCircularCheckIndex; fCurrentScope = previousScope; fCurrentComplexType = saveTypeInfo; return typeNameIndex; } /** * Traverse Group Declaration. * * * Content: (annotation? , (all | choice | sequence)?) * * */ XercesGroupInfo* TraverseSchema::traverseGroupDecl(const DOMElement* const elem, const bool topLevel) { NamespaceScopeManager nsMgr(elem, fSchemaInfo, this); const XMLCh* name = getElementAttValue(elem, SchemaSymbols::fgATT_NAME, DatatypeValidator::NCName); const XMLCh* ref = getElementAttValue(elem, SchemaSymbols::fgATT_REF, DatatypeValidator::QName); bool nameEmpty = (!name || !*name); bool refEmpty = (!ref || !*ref); if (nameEmpty && topLevel) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::NoNameGlobalElement, SchemaSymbols::fgELT_GROUP); return 0; } if (nameEmpty && refEmpty) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::NoNameRefGroup); return 0; } // ------------------------------------------------------------------ // Check attributes // ------------------------------------------------------------------ unsigned short scope = (topLevel) ? GeneralAttributeCheck::E_GroupGlobal : GeneralAttributeCheck::E_GroupRef; fAttributeCheck.checkAttributes(elem, scope, this, topLevel, fNonXSAttList); // ------------------------------------------------------------------ // Handle "ref=" // ------------------------------------------------------------------ if (!topLevel) { if (refEmpty) { return 0; } return processGroupRef(elem, ref); } // name must be a valid NCName if (!XMLChar1_0::isValidNCName(name, XMLString::stringLen(name))) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::InvalidDeclarationName, SchemaSymbols::fgELT_GROUP, name); return 0; } fBuffer.set(fTargetNSURIString); fBuffer.append(chComma); fBuffer.append(name); unsigned int nameIndex = fStringPool->addOrFind(fBuffer.getRawBuffer()); const XMLCh* fullName = fStringPool->getValueForId(nameIndex); XercesGroupInfo* groupInfo = fGroupRegistry->get(fullName); if (groupInfo) { return groupInfo; } // ------------------------------------------------------------------ // Check for annotations // ------------------------------------------------------------------ DOMElement* content = checkContent(elem, XUtil::getFirstChildElement(elem), true); if (fScanner->getGenerateSyntheticAnnotations() && !fAnnotation && fNonXSAttList->size()) { fAnnotation = generateSyntheticAnnotation(elem, fNonXSAttList); } Janitor janAnnot(fAnnotation); // ------------------------------------------------------------------ // Process contents of global groups // ------------------------------------------------------------------ unsigned int saveScope = fCurrentScope; Janitor specNode(0); XercesGroupInfo* saveGroupInfo = fCurrentGroupInfo; Janitor newGroupInfoJan(new (fGrammarPoolMemoryManager) XercesGroupInfo( fStringPool->addOrFind(name), fTargetNSURI, fGrammarPoolMemoryManager)); fCurrentGroupStack->addElement(nameIndex); XercesGroupInfo* const newGroupInfo = newGroupInfoJan.get(); fCurrentGroupInfo = newGroupInfo; fCurrentScope = fScopeCount++; fCurrentGroupInfo->setScope(fCurrentScope); if (content == 0) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::GroupContentError, name); } else { if (content->getAttributeNode(SchemaSymbols::fgATT_MINOCCURS) != 0 || content->getAttributeNode(SchemaSymbols::fgATT_MAXOCCURS) != 0) { reportSchemaError(content, XMLUni::fgXMLErrDomain, XMLErrs::MinMaxOnGroupChild); } bool illegalChild = false; const XMLCh* childName = content->getLocalName(); bool hasChild; if (XMLString::equals(childName, SchemaSymbols::fgELT_SEQUENCE)) { specNode.reset(traverseChoiceSequence(content, ContentSpecNode::Sequence, hasChild)); } else if (XMLString::equals(childName, SchemaSymbols::fgELT_CHOICE)) { specNode.reset(traverseChoiceSequence(content, ContentSpecNode::Choice, hasChild)); } else if (XMLString::equals(childName, SchemaSymbols::fgELT_ALL)) { specNode.reset(traverseAll(content, hasChild)); } else { illegalChild = true; } if (illegalChild || XUtil::getNextSiblingElement(content) != 0) { reportSchemaError(content, XMLUni::fgXMLErrDomain, XMLErrs::GroupContentError, name); } // copy local elements to complex type if it exists if (fCurrentComplexType) processElements(elem, fCurrentGroupInfo, fCurrentComplexType); } // ------------------------------------------------------------------ // Set groupInfo and pop group name from stack // ------------------------------------------------------------------ XMLSize_t stackSize = fCurrentGroupStack->size(); if (stackSize != 0) { fCurrentGroupStack->removeElementAt(stackSize - 1); } fCurrentGroupInfo->setContentSpec(specNode.release()); fGroupRegistry->put((void*) fullName, fCurrentGroupInfo); newGroupInfoJan.release(); fCurrentGroupInfo = saveGroupInfo; fCurrentScope = saveScope; // Store Annotation if (!janAnnot.isDataNull()) { fSchemaGrammar->putAnnotation(newGroupInfo, janAnnot.release()); } if (fFullConstraintChecking) { XSDLocator* aLocator = new (fGrammarPoolMemoryManager) XSDLocator(); newGroupInfo->setLocator(aLocator); aLocator->setValues(fStringPool->getValueForId(fStringPool->addOrFind(fSchemaInfo->getCurrentSchemaURL())), 0, ((XSDElementNSImpl*) elem)->getLineNo(), ((XSDElementNSImpl*) elem)->getColumnNo()); if (fRedefineComponents && fRedefineComponents->get(SchemaSymbols::fgELT_GROUP, nameIndex)) { fBuffer.set(fullName); fBuffer.append(SchemaSymbols::fgRedefIdentifier); unsigned int rdfNameIndex = fStringPool->addOrFind(fBuffer.getRawBuffer()); if (fCurrentGroupStack->containsElement(rdfNameIndex)) { reportSchemaError(aLocator, XMLUni::fgXMLErrDomain, XMLErrs::NoCircularDefinition, name); } else { XercesGroupInfo* baseGroup = fGroupRegistry->get(fBuffer.getRawBuffer()); if (baseGroup) { newGroupInfo->setBaseGroup(baseGroup); } else { fBuffer.set(name); fBuffer.append(SchemaSymbols::fgRedefIdentifier); SchemaInfo* saveInfo = fSchemaInfo; DOMElement* groupElem = fSchemaInfo->getTopLevelComponent(SchemaInfo::C_Group, SchemaSymbols::fgELT_GROUP, fBuffer.getRawBuffer(), &fSchemaInfo); if (groupElem != 0) { baseGroup = traverseGroupDecl(groupElem); newGroupInfo->setBaseGroup(baseGroup); fSchemaInfo = saveInfo; } else { reportSchemaError(aLocator, XMLUni::fgXMLErrDomain, XMLErrs::DeclarationNotFound, SchemaSymbols::fgELT_GROUP, fTargetNSURIString, fBuffer.getRawBuffer()); } } } } } return newGroupInfo; } /** * Traverse attributeGroup Declaration. * * * Content: (annotation? , (attribute|attributeGroup)*, anyAttribute?) * * */ XercesAttGroupInfo* TraverseSchema::traverseAttributeGroupDecl(const DOMElement* const elem, ComplexTypeInfo* const typeInfo, const bool topLevel) { NamespaceScopeManager nsMgr(elem, fSchemaInfo, this); const XMLCh* name = getElementAttValue(elem, SchemaSymbols::fgATT_NAME, DatatypeValidator::NCName); const XMLCh* ref = getElementAttValue(elem, SchemaSymbols::fgATT_REF, DatatypeValidator::QName); bool nameEmpty = (!name || !*name) ? true : false; bool refEmpty = (!ref || !*ref) ? true : false; if (nameEmpty && topLevel) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::NoNameGlobalElement, SchemaSymbols::fgELT_ATTRIBUTEGROUP); return 0; } if (nameEmpty && refEmpty) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::NoNameRefAttGroup); return 0; } // ------------------------------------------------------------------ // Check attributes // ------------------------------------------------------------------ unsigned short scope = (topLevel) ? GeneralAttributeCheck::E_AttributeGroupGlobal : GeneralAttributeCheck::E_AttributeGroupRef; fAttributeCheck.checkAttributes(elem, scope, this, topLevel, fNonXSAttList); // ------------------------------------------------------------------ // Handle "ref=" // ------------------------------------------------------------------ XercesAttGroupInfo* attGroupInfo; Janitor janAttGroupInfo(0); if (!topLevel) { if (refEmpty) { return 0; } attGroupInfo = processAttributeGroupRef(elem, ref, typeInfo); } else { // name must be a valid NCName if (!XMLChar1_0::isValidNCName(name, XMLString::stringLen(name))) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::InvalidDeclarationName, SchemaSymbols::fgELT_ATTRIBUTEGROUP, name); return 0; } // Check for annotations DOMElement* content = checkContent(elem, XUtil::getFirstChildElement(elem), true); if (fScanner->getGenerateSyntheticAnnotations() && !fAnnotation && fNonXSAttList->size()) { fAnnotation = generateSyntheticAnnotation(elem, fNonXSAttList); } Janitor janAnnot(fAnnotation); // Process contents of global attributeGroups XercesAttGroupInfo* saveAttGroupInfo = fCurrentAttGroupInfo; janAttGroupInfo.reset(new (fGrammarPoolMemoryManager) XercesAttGroupInfo( fStringPool->addOrFind(name), fTargetNSURI, fGrammarPoolMemoryManager)); fDeclStack->addElement(elem); fCurrentAttGroupInfo = janAttGroupInfo.get(); for (; content !=0; content = XUtil::getNextSiblingElement(content)) { if (XMLString::equals(content->getLocalName(), SchemaSymbols::fgELT_ATTRIBUTE)) { traverseAttributeDecl(content, typeInfo); } else if (XMLString::equals(content->getLocalName(), SchemaSymbols::fgELT_ATTRIBUTEGROUP)) { traverseAttributeGroupDecl(content, typeInfo); } else { break; } } if (content != 0) { if (XMLString::equals(content->getLocalName(), SchemaSymbols::fgELT_ANYATTRIBUTE)) { SchemaAttDef* anyAtt = traverseAnyAttribute(content); if (anyAtt) { fCurrentAttGroupInfo->addAnyAttDef(anyAtt); } if (XUtil::getNextSiblingElement(content) != 0) { reportSchemaError(content, XMLUni::fgXMLErrDomain, XMLErrs::AttGroupContentError, name); } } else { reportSchemaError(content, XMLUni::fgXMLErrDomain, XMLErrs::AttGroupContentError, name); } } // Pop declaration fDeclStack->removeElementAt(fDeclStack->size() - 1); fAttGroupRegistry->put((void*) fStringPool->getValueForId(fStringPool->addOrFind(name)), janAttGroupInfo.get()); // Restore old attGroupInfo attGroupInfo = janAttGroupInfo.release(); fCurrentAttGroupInfo = saveAttGroupInfo; // Check Attribute Derivation Restriction OK fBuffer.set(fTargetNSURIString); fBuffer.append(chComma); fBuffer.append(name); unsigned int nameIndex = fStringPool->addOrFind(fBuffer.getRawBuffer()); if (fRedefineComponents && fRedefineComponents->get(SchemaSymbols::fgELT_ATTRIBUTEGROUP, nameIndex)) { fBuffer.set(name); fBuffer.append(SchemaSymbols::fgRedefIdentifier); XercesAttGroupInfo* baseAttGroupInfo = fAttGroupRegistry->get(fBuffer.getRawBuffer()); if (baseAttGroupInfo) checkAttDerivationOK(elem, baseAttGroupInfo, attGroupInfo); } // Store annotation if (!janAnnot.isDataNull()) fSchemaGrammar->putAnnotation(attGroupInfo, janAnnot.release()); } // calculate complete wildcard if necessary if (attGroupInfo) { XMLSize_t anyAttCount = attGroupInfo->anyAttributeCount(); if (anyAttCount && !attGroupInfo->getCompleteWildCard()) { SchemaAttDef* attGroupWildCard = new (fGrammarPoolMemoryManager) SchemaAttDef(attGroupInfo->anyAttributeAt(0)); for (XMLSize_t k= 1; k < anyAttCount; k++) attWildCardIntersection(attGroupWildCard, attGroupInfo->anyAttributeAt(k)); attGroupInfo->setCompleteWildCard(attGroupWildCard); } } return attGroupInfo; } inline XercesAttGroupInfo* TraverseSchema::traverseAttributeGroupDeclNS(const DOMElement* const elem, const XMLCh* const uriStr, const XMLCh* const name) { NamespaceScopeManager nsMgr(elem, fSchemaInfo, this); // ------------------------------------------------------------------ // Get grammar information // ------------------------------------------------------------------ Grammar* aGrammar = fGrammarResolver->getGrammar(uriStr); if (!aGrammar || aGrammar->getGrammarType() != Grammar::SchemaGrammarType) { reportSchemaError(elem, XMLUni::fgValidityDomain, XMLValid::GrammarNotFound, uriStr); return 0; } XercesAttGroupInfo* attGroupInfo = ((SchemaGrammar*)aGrammar)->getAttGroupInfoRegistry()->get(name); return attGroupInfo; } /** * Traverse Any declaration * * * Content: (annotation?) * */ ContentSpecNode* TraverseSchema::traverseAny(const DOMElement* const elem) { NamespaceScopeManager nsMgr(elem, fSchemaInfo, this); // ----------------------------------------------------------------------- // Check Attributes // ----------------------------------------------------------------------- fAttributeCheck.checkAttributes( elem, GeneralAttributeCheck::E_Any, this, false, fNonXSAttList ); // ------------------------------------------------------------------ // First, handle any ANNOTATION declaration // ------------------------------------------------------------------ if (checkContent(elem, XUtil::getFirstChildElement(elem), true) != 0) reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::OnlyAnnotationExpected); if (fScanner->getGenerateSyntheticAnnotations() && !fAnnotation && fNonXSAttList->size()) { fAnnotation = generateSyntheticAnnotation(elem, fNonXSAttList); } Janitor janAnnot(fAnnotation); // ------------------------------------------------------------------ // Get attributes // ------------------------------------------------------------------ const XMLCh* const processContents = getElementAttValue(elem, SchemaSymbols::fgATT_PROCESSCONTENTS); const XMLCh* const nameSpace = getElementAttValue(elem, SchemaSymbols::fgATT_NAMESPACE); // ------------------------------------------------------------------ // Set default node type based on 'processContents' value // ------------------------------------------------------------------ ContentSpecNode::NodeTypes anyType = ContentSpecNode::Any; ContentSpecNode::NodeTypes anyLocalType = ContentSpecNode::Any_NS; ContentSpecNode::NodeTypes anyOtherType = ContentSpecNode::Any_Other; if ((processContents && *processContents) && !XMLString::equals(processContents, SchemaSymbols::fgATTVAL_STRICT)) { if (XMLString::equals(processContents, SchemaSymbols::fgATTVAL_LAX)) { anyType = ContentSpecNode::Any_Lax; anyOtherType = ContentSpecNode::Any_Other_Lax; anyLocalType = ContentSpecNode::Any_NS_Lax; } else if (XMLString::equals(processContents, SchemaSymbols::fgATTVAL_SKIP)) { anyType = ContentSpecNode::Any_Skip; anyOtherType = ContentSpecNode::Any_Other_Skip; anyLocalType = ContentSpecNode::Any_NS_Skip; } } // ------------------------------------------------------------------ // Process 'namespace' attribute // ------------------------------------------------------------------ ContentSpecNode* retSpecNode = 0; if ((!nameSpace || !*nameSpace) || XMLString::equals(nameSpace, SchemaSymbols::fgATTVAL_TWOPOUNDANY)) { retSpecNode = new (fGrammarPoolMemoryManager) ContentSpecNode ( new (fGrammarPoolMemoryManager) QName ( XMLUni::fgZeroLenString , XMLUni::fgZeroLenString , fEmptyNamespaceURI , fGrammarPoolMemoryManager ) , false , fGrammarPoolMemoryManager ); retSpecNode->setType(anyType); } else if (XMLString::equals(nameSpace, SchemaSymbols::fgATTVAL_TWOPOUNDOTHER)) { retSpecNode = new (fGrammarPoolMemoryManager) ContentSpecNode ( new (fGrammarPoolMemoryManager) QName ( XMLUni::fgZeroLenString , XMLUni::fgZeroLenString , fTargetNSURI, fGrammarPoolMemoryManager ) , false , fGrammarPoolMemoryManager ); retSpecNode->setType(anyOtherType); } else { XMLStringTokenizer nameSpaceTokens(nameSpace, fMemoryManager); ValueVectorOf uriList(8, fGrammarPoolMemoryManager); Janitor firstNode(0); Janitor secondNode(0); DatatypeValidator* anyURIDV = fDatatypeRegistry->getDatatypeValidator(SchemaSymbols::fgDT_ANYURI); while (nameSpaceTokens.hasMoreTokens()) { const XMLCh* tokenElem = nameSpaceTokens.nextToken(); int uriIndex = fEmptyNamespaceURI; if (!XMLString::equals(tokenElem,SchemaSymbols::fgATTVAL_TWOPOUNDLOCAL)) { // not ##local if (XMLString::equals(tokenElem,SchemaSymbols::fgATTVAL_TWOPOUNDTRAGETNAMESPACE)) { uriIndex = fTargetNSURI; } else { try { anyURIDV->validate(tokenElem , fSchemaInfo->getValidationContext() , fMemoryManager); } catch(const XMLException& excep) { reportSchemaError(elem, excep); } uriIndex = fURIStringPool->addOrFind(tokenElem); } } if (uriList.containsElement(uriIndex)) { continue; } uriList.addElement(uriIndex); firstNode.release(); firstNode.reset( new (fGrammarPoolMemoryManager) ContentSpecNode ( new (fGrammarPoolMemoryManager) QName ( XMLUni::fgZeroLenString , XMLUni::fgZeroLenString , uriIndex, fGrammarPoolMemoryManager ) , false , fGrammarPoolMemoryManager )); firstNode.get()->setType(anyLocalType); if (secondNode.get() == 0) { secondNode.reset(firstNode.release()); } else { ContentSpecNode* newNode = new (fGrammarPoolMemoryManager) ContentSpecNode ( ContentSpecNode::Any_NS_Choice , secondNode.get() , firstNode.get() , true , true , fGrammarPoolMemoryManager ); secondNode.release(); secondNode.reset(newNode); firstNode.release(); } } firstNode.release(); retSpecNode = secondNode.release(); } // Store annotation if (retSpecNode && !janAnnot.isDataNull()) fSchemaGrammar->putAnnotation(retSpecNode, janAnnot.release()); return retSpecNode; } /** * Traverse all * * * Content: (annotation?, element*) * */ ContentSpecNode* TraverseSchema::traverseAll(const DOMElement* const elem, bool& hasChildren) { NamespaceScopeManager nsMgr(elem, fSchemaInfo, this); hasChildren = false; // ----------------------------------------------------------------------- // Check attributes // ----------------------------------------------------------------------- fAttributeCheck.checkAttributes( elem, GeneralAttributeCheck::E_All, this, false, fNonXSAttList ); // ----------------------------------------------------------------------- // Process contents // ----------------------------------------------------------------------- DOMElement* child = checkContent(elem, XUtil::getFirstChildElement(elem), true); if (fScanner->getGenerateSyntheticAnnotations() && !fAnnotation && fNonXSAttList->size()) { fAnnotation = generateSyntheticAnnotation(elem, fNonXSAttList); } Janitor janAnnot(fAnnotation); if (child == 0) { return 0; } Janitor left(0); Janitor right(0); Janitor contentSpecNode(0); bool hadContent = false; for (; child != 0; child = XUtil::getNextSiblingElement(child)) { hasChildren = true; contentSpecNode.release(); const XMLCh* childName = child->getLocalName(); if (XMLString::equals(childName, SchemaSymbols::fgELT_ELEMENT)) { SchemaElementDecl* elemDecl = traverseElementDecl(child); if (!elemDecl) continue; contentSpecNode.reset(new (fGrammarPoolMemoryManager) ContentSpecNode ( elemDecl , fGrammarPoolMemoryManager )); checkMinMax(contentSpecNode.get(), child, All_Element); } else { reportSchemaError(child, XMLUni::fgXMLErrDomain, XMLErrs::AllContentError, childName); continue; } hadContent = true; if (!left.get()) { left.reset(contentSpecNode.release()); } else if (!right.get()) { right.reset(contentSpecNode.release()); } else { ContentSpecNode* newNode = new (fGrammarPoolMemoryManager) ContentSpecNode ( ContentSpecNode::All , left.get() , right.get() , true , true , fGrammarPoolMemoryManager ); left.release(); left.reset(newNode); right.release(); right.reset(contentSpecNode.release()); } } contentSpecNode.release(); if (hadContent) { ContentSpecNode* newNode = new (fGrammarPoolMemoryManager) ContentSpecNode ( ContentSpecNode::All , left.get() , right.get() , true , true , fGrammarPoolMemoryManager ); left.release(); left.reset(newNode); if (!janAnnot.isDataNull()) fSchemaGrammar->putAnnotation(left.get(), janAnnot.release()); } right.release(); return left.release(); } /** * Traverses Schema attribute declaration. * * * Content: (annotation? , simpleType?) * * * @param elem: the declaration of the attribute under consideration * * @param typeInfo: Contains the complex type info of the element to which * the attribute declaration is attached. * */ void TraverseSchema::traverseAttributeDecl(const DOMElement* const elem, ComplexTypeInfo* const typeInfo, const bool topLevel) { NamespaceScopeManager nsMgr(elem, fSchemaInfo, this); const XMLCh* name = getElementAttValue(elem, SchemaSymbols::fgATT_NAME, DatatypeValidator::NCName); const XMLCh* ref = getElementAttValue(elem, SchemaSymbols::fgATT_REF, DatatypeValidator::QName); bool nameEmpty = (!name || !*name); bool refEmpty = (!ref || !*ref); if (nameEmpty && refEmpty) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::NoNameRefAttribute); return; } if (topLevel && nameEmpty) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::TopLevelNoNameAttribute); return; } // ------------------------------------------------------------------ // Check attributes // ------------------------------------------------------------------ unsigned short scope = (topLevel) ? GeneralAttributeCheck::E_AttributeGlobal : (refEmpty) ? GeneralAttributeCheck::E_AttributeLocal : GeneralAttributeCheck::E_AttributeRef; fAttributeCheck.checkAttributes(elem, scope, this, topLevel, fNonXSAttList); const XMLCh* defaultVal = getElementAttValue(elem, SchemaSymbols::fgATT_DEFAULT); const XMLCh* fixedVal = getElementAttValue(elem, SchemaSymbols::fgATT_FIXED); const XMLCh* useVal = getElementAttValue(elem, SchemaSymbols::fgATT_USE); const XMLCh* attForm = getElementAttValue(elem, SchemaSymbols::fgATT_FORM); const XMLCh* dvType = getElementAttValue(elem, SchemaSymbols::fgATT_TYPE, DatatypeValidator::QName); DOMElement* simpleType = checkContent(elem, XUtil::getFirstChildElement(elem), true); Janitor janAnnot(fAnnotation); bool badContent = false; while (simpleType != 0) { const XMLCh* contentName = simpleType->getLocalName(); if (XMLString::equals(SchemaSymbols::fgELT_SIMPLETYPE, contentName)) { if (XUtil::getNextSiblingElement(simpleType) != 0) { badContent = true; } break; } badContent = true; simpleType = XUtil::getNextSiblingElement(simpleType); } if (badContent) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::InvalidAttributeContent, (name) ? name : ref); } if (defaultVal) { if (fixedVal) { fixedVal = 0; reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::AttributeDefaultFixedValue, (name) ? name : ref); } if ((useVal && *useVal) && !XMLString::equals(useVal, SchemaSymbols::fgATTVAL_OPTIONAL)) { useVal = 0; reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::NotOptionalDefaultAttValue, (name) ? name : ref); } } // processing ref if (!refEmpty && !topLevel) { // Check ref representation OK - 3.2.3::3.2 if (attForm || dvType || (simpleType != 0)) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::AttributeRefContentError, (name) ? name : ref); } processAttributeDeclRef(elem, typeInfo, ref, useVal, defaultVal, fixedVal); return; } if (fScanner->getGenerateSyntheticAnnotations() && !fAnnotation && fNonXSAttList->size()) { fAnnotation = generateSyntheticAnnotation(elem, fNonXSAttList); janAnnot.reset(fAnnotation); } // processing 'name' if (!XMLChar1_0::isValidNCName(name, XMLString::stringLen(name)) || XMLString::equals(name, XMLUni::fgXMLNSString)) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::InvalidDeclarationName, SchemaSymbols::fgELT_ATTRIBUTE, name); return; } // Check for duplicate declaration const XMLCh* qualified = SchemaSymbols::fgATTVAL_QUALIFIED; int uriIndex = fEmptyNamespaceURI; if ((fTargetNSURIString && *fTargetNSURIString) && (topLevel || XMLString::equals(attForm, qualified) || ((fSchemaInfo->getElemAttrDefaultQualified() & Attr_Def_Qualified) && (!attForm || !*attForm)))) { uriIndex = fTargetNSURI; } // make sure that attribute namespace is not xsi uri if (XMLString::equals(fTargetNSURIString, SchemaSymbols::fgURI_XSI)) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::InvalidAttTNS, name); return; } if (typeInfo && typeInfo->getAttDef(name, uriIndex) != 0) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::DuplicateAttribute, name); return; } else if (fCurrentAttGroupInfo && fCurrentAttGroupInfo->containsAttribute(name, uriIndex)) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::DuplicateAttribute, name); return; } DatatypeValidator* dv = 0; XMLAttDef::AttTypes attType = XMLAttDef::Simple; SchemaInfo* saveInfo = fSchemaInfo; if (simpleType != 0) { if (dvType && *dvType) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::AttributeWithTypeAndSimpleType, name); } dv = traverseSimpleTypeDecl(simpleType, false); } else if (!dvType || !*dvType) { dv = fDatatypeRegistry->getDatatypeValidator(SchemaSymbols::fgDT_ANYSIMPLETYPE); } else { checkEnumerationRequiredNotation(elem, name, dvType); const XMLCh* localPart = getLocalPart(dvType); const XMLCh* prefix = getPrefix(dvType); const XMLCh* typeURI = resolvePrefixToURI(elem, prefix); DatatypeValidator* dvBack = 0; if (XMLString::equals(typeURI, SchemaSymbols::fgURI_SCHEMAFORSCHEMA)) { dv = fDatatypeRegistry->getDatatypeValidator(localPart); dvBack = dv; } else { //isn't of the schema for schemas namespace... dv = getAttrDatatypeValidatorNS(elem, localPart, typeURI); dvBack = dv; while(dv != 0 && !XMLString::equals(dv->getTypeUri(), SchemaSymbols::fgURI_SCHEMAFORSCHEMA)) { dv = dv->getBaseValidator(); } if(dv) localPart = dv->getTypeLocalName(); } if(dv) { if (XMLString::equals(localPart,XMLUni::fgIDString)) { attType = XMLAttDef::ID; } else if (XMLString::equals(localPart,XMLUni::fgIDRefString)) { attType = XMLAttDef::IDRef; } else if (XMLString::equals(localPart,XMLUni::fgIDRefsString)) { attType = XMLAttDef::IDRefs; } else if (XMLString::equals(localPart,XMLUni::fgEntityString)) { attType = XMLAttDef::Entity; } else if (XMLString::equals(localPart,XMLUni::fgEntitiesString)) { attType = XMLAttDef::Entities; } else if (XMLString::equals(localPart,XMLUni::fgNmTokenString)) { attType = XMLAttDef::NmToken; } else if (XMLString::equals(localPart,XMLUni::fgNmTokensString)) { attType = XMLAttDef::NmTokens; } else if (XMLString::equals(localPart,XMLUni::fgNotationString)) { attType = XMLAttDef::Notation; } else { attType = XMLAttDef::Simple; } } else attType = XMLAttDef::Simple; dv = dvBack; if (!dv) { reportSchemaError ( elem , XMLUni::fgXMLErrDomain , XMLErrs::AttributeSimpleTypeNotFound , typeURI , localPart , name ); } } // restore schema information, if necessary fSchemaInfo = saveInfo; bool required = false; bool prohibited = false; if (useVal && *useVal) { if (XMLString::equals(useVal, SchemaSymbols::fgATTVAL_REQUIRED)) { required = true; } else if (XMLString::equals(useVal, SchemaSymbols::fgATTVAL_PROHIBITED)) { prohibited = true; } } // validate fixed/default values const XMLCh* valueToCheck = defaultVal ? defaultVal : fixedVal; bool ofTypeID = (dv && dv->getType() == DatatypeValidator::ID); if (attType == XMLAttDef::Simple && dv && valueToCheck) { short wsFacet = dv->getWSFacet(); if((wsFacet == DatatypeValidator::REPLACE && !XMLString::isWSReplaced(valueToCheck)) || (wsFacet == DatatypeValidator::COLLAPSE && !XMLString::isWSCollapsed(valueToCheck))) { XMLCh* normalizedValue=XMLString::replicate(valueToCheck, fMemoryManager); ArrayJanitor tempURIName(normalizedValue, fMemoryManager); if(wsFacet == DatatypeValidator::REPLACE) XMLString::replaceWS(normalizedValue, fMemoryManager); else if(wsFacet == DatatypeValidator::COLLAPSE) XMLString::collapseWS(normalizedValue, fMemoryManager); valueToCheck=fStringPool->getValueForId(fStringPool->addOrFind(normalizedValue)); } try { dv->validate(valueToCheck , fSchemaInfo->getValidationContext() , fMemoryManager); } catch (const XMLException& excep) { reportSchemaError(elem, excep); } catch(const OutOfMemoryException&) { throw; } catch(...) { reportSchemaError(elem, XMLUni::fgValidityDomain, XMLValid::DatatypeValidationFailure, valueToCheck); } } else if((attType == XMLAttDef::NmTokens || attType==XMLAttDef::IDRefs || attType==XMLAttDef::Entities) && valueToCheck && !XMLString::isWSCollapsed(valueToCheck)) { XMLCh* normalizedValue=XMLString::replicate(valueToCheck, fMemoryManager); ArrayJanitor tempURIName(normalizedValue, fMemoryManager); XMLString::collapseWS(normalizedValue, fMemoryManager); valueToCheck=fStringPool->getValueForId(fStringPool->addOrFind(normalizedValue)); } if (ofTypeID && valueToCheck) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::AttDeclPropCorrect3, name); } // check for multiple attributes with type derived from ID if (!topLevel && ofTypeID) { if (fCurrentAttGroupInfo) { if (fCurrentAttGroupInfo->containsTypeWithId()) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::AttGrpPropCorrect3, name); return; } fCurrentAttGroupInfo->setTypeWithId(true); } else { if (typeInfo->containsAttWithTypeId()) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::AttDeclPropCorrect5, name); return; } typeInfo->setAttWithTypeId(true); } } // create SchemaAttDef SchemaAttDef* attDef = new (fGrammarPoolMemoryManager) SchemaAttDef ( XMLUni::fgZeroLenString , name , uriIndex , attType , XMLAttDef::Implied , fGrammarPoolMemoryManager ); attDef->setDatatypeValidator(dv); if (prohibited) { attDef->setDefaultType(XMLAttDef::Prohibited); } else if (required) { if (fixedVal) { attDef->setDefaultType(XMLAttDef::Required_And_Fixed); } else { attDef->setDefaultType(XMLAttDef::Required); } } else { if (fixedVal) { attDef->setDefaultType(XMLAttDef::Fixed); } else if (defaultVal) { attDef->setDefaultType(XMLAttDef::Default); } } if (valueToCheck) { attDef->setValue(valueToCheck); } if (!janAnnot.isDataNull()) fSchemaGrammar->putAnnotation(attDef, janAnnot.release()); if (topLevel) { fAttributeDeclRegistry->put((void*) fStringPool->getValueForId(fStringPool->addOrFind(name)), attDef); attDef->setPSVIScope(PSVIDefs::SCP_GLOBAL); } else { if (typeInfo) { typeInfo->addAttDef(attDef); if (!fCurrentAttGroupInfo) attDef->setPSVIScope(PSVIDefs::SCP_LOCAL); } if (fCurrentAttGroupInfo) { fCurrentAttGroupInfo->addAttDef(attDef, (typeInfo != 0)); } } } /** * Traverses Schema element declaration. * * * * @param elem: the declaration of the element under consideration */ SchemaElementDecl* TraverseSchema::traverseElementDecl(const DOMElement* const elem, const bool topLevel) { NamespaceScopeManager nsMgr(elem, fSchemaInfo, this); // if local element and ref attribute exists if (!topLevel) { const XMLCh* refName = getElementAttValue(elem, SchemaSymbols::fgATT_REF, DatatypeValidator::QName); if (refName) return processElementDeclRef(elem, refName); } // check for empty name const XMLCh* name = getElementAttValue(elem, SchemaSymbols::fgATT_NAME, DatatypeValidator::NCName); if (!name || !*name) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::NoNameRefElement); return 0; } // make sure that name is a valid NCName if (!XMLChar1_0::isValidNCName(name, XMLString::stringLen(name))) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::InvalidDeclarationName, SchemaSymbols::fgELT_ELEMENT, name); return 0; } // if element already exists, just return --- revisit, it should not happen if (topLevel) { SchemaElementDecl* retDecl = (SchemaElementDecl*) fSchemaGrammar->getElemDecl(fTargetNSURI, name, 0, Grammar::TOP_LEVEL_SCOPE); if (retDecl) return retDecl; } // Check attributes unsigned short scope = (topLevel) ? GeneralAttributeCheck::E_ElementGlobal : GeneralAttributeCheck::E_ElementLocal; fAttributeCheck.checkAttributes(elem, scope, this, topLevel, fNonXSAttList); // check annotation const DOMElement* content = checkContent(elem, XUtil::getFirstChildElement(elem), true); // Put annotations on all elements for the situation where there is a group of // elements and not all have annotations. //if (fScanner->getGenerateSyntheticAnnotations() && !fAnnotation && fNonXSAttList->size()) if (!fAnnotation && fScanner->getGenerateSyntheticAnnotations()) { fAnnotation = generateSyntheticAnnotation(elem, fNonXSAttList); } Janitor janAnnot(fAnnotation); // Create element decl bool isDuplicate = false; const XMLCh* valueConstraint = 0; SchemaElementDecl* elemDecl = createSchemaElementDecl(elem, name, isDuplicate, valueConstraint, topLevel); if (!isDuplicate) { fSchemaGrammar->putElemDecl(elemDecl); if (valueConstraint) elemDecl->setDefaultValue(valueConstraint); if (!janAnnot.isDataNull()) fSchemaGrammar->putAnnotation(elemDecl, janAnnot.release()); if (fCurrentComplexType && elemDecl->getEnclosingScope() == fCurrentComplexType->getScopeDefined()) { fCurrentComplexType->addElement(elemDecl); elemDecl->setPSVIScope(PSVIDefs::SCP_LOCAL); } if (fCurrentGroupInfo && elemDecl->getEnclosingScope() == fCurrentGroupInfo->getScope()) { fCurrentGroupInfo->addElement(elemDecl); elemDecl->setPSVIScope(PSVIDefs::SCP_ABSENT); } } else { if (fAnnotation) { XSAnnotation* xsAnnot = fSchemaGrammar->getAnnotation(elemDecl); if (!xsAnnot) { fSchemaGrammar->putAnnotation(elemDecl, janAnnot.release()); } else { xsAnnot->setNext(janAnnot.release()); } } } // Process children bool anonymousType = false; ComplexTypeInfo* typeInfo = 0; DatatypeValidator* validator = 0; if (content != 0) { const XMLCh* contentName = content->getLocalName(); if (XMLString::equals(contentName, SchemaSymbols::fgELT_COMPLEXTYPE)) { const XMLCh* temp = content->getAttribute(SchemaSymbols::fgATT_NAME); if (temp && *temp) { // REVISIT - we are bypassing the complex type declaration. reportSchemaError(content, XMLUni::fgXMLErrDomain, XMLErrs::AnonComplexTypeWithName, name); } else { typeInfo = checkForComplexTypeInfo(content); if (typeInfo) { validator = typeInfo->getDatatypeValidator(); if (!isDuplicate) { //Recursing element if (typeInfo->getPreprocessed()) { const XMLCh* typeInfoName = typeInfo->getTypeName(); fSchemaInfo->addRecursingType(content, typeInfoName + XMLString::indexOf(typeInfoName, chComma) + 1); } } } } anonymousType = true; content = XUtil::getNextSiblingElement(content); } else if (XMLString::equals(contentName, SchemaSymbols::fgELT_SIMPLETYPE)) { const XMLCh* temp = content->getAttribute(SchemaSymbols::fgATT_NAME); if (temp && *temp) // REVISIT - we are bypassing the simple type declaration. reportSchemaError(content, XMLUni::fgXMLErrDomain, XMLErrs::AnonSimpleTypeWithName, name); else validator = checkForSimpleTypeValidator(content); anonymousType = true; content = XUtil::getNextSiblingElement(content); } // Check for identity constraints if (content != 0) { content = checkIdentityConstraintContent(content); if (content != 0) reportSchemaError(content, XMLUni::fgXMLErrDomain, XMLErrs::InvalidElementContent); } } // Handle 'type' attribute const XMLCh* typeStr = getElementAttValue(elem, SchemaSymbols::fgATT_TYPE, DatatypeValidator::QName); if (typeStr) { if (anonymousType) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::ElementWithTypeAndAnonType, name); } else if (*typeStr) { const XMLCh* typeLocalPart = getLocalPart(typeStr); const XMLCh* typePrefix = getPrefix(typeStr); const XMLCh* typeURI = resolvePrefixToURI(elem, typePrefix); if (!XMLString::equals(typeURI, SchemaSymbols::fgURI_SCHEMAFORSCHEMA) || !XMLString::equals(typeLocalPart, SchemaSymbols::fgATTVAL_ANYTYPE)) { checkEnumerationRequiredNotation(elem, name, typeStr); bool noErrorFound = true; const XMLCh* anotherSchemaURI = checkTypeFromAnotherSchema(elem, typeStr); // get complex type info typeInfo = getElementComplexTypeInfo(elem, typeStr, anotherSchemaURI); // get simple type validtor - if not a complex type if (typeInfo) validator = typeInfo->getDatatypeValidator(); else validator = getElementTypeValidator(elem, typeStr, noErrorFound, anotherSchemaURI); } } } // check for duplicate elements with different types. if (isDuplicate) { DatatypeValidator* eltDV = elemDecl->getDatatypeValidator(); ComplexTypeInfo* eltTypeInfo = elemDecl->getComplexTypeInfo(); if ( (eltTypeInfo != typeInfo) || (eltDV != validator)) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::DuplicateElementDeclaration, name); } } // Set element declararion type information else { elemDecl->setDatatypeValidator(validator); elemDecl->setComplexTypeInfo(typeInfo); if (validator) elemDecl->setModelType(SchemaElementDecl::Simple); else if (typeInfo) elemDecl->setModelType((SchemaElementDecl::ModelTypes)typeInfo->getContentType()); if (topLevel) { // Handle the substitutionGroup const XMLCh* subsGroupName = getElementAttValue(elem, SchemaSymbols::fgATT_SUBSTITUTIONGROUP, DatatypeValidator::QName); if (subsGroupName && *subsGroupName) processSubstitutionGroup(elem, elemDecl, typeInfo, validator, subsGroupName); } // process identity constraints DOMElement* ic = XUtil::getFirstChildElementNS( elem, fgIdentityConstraints, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, 3); if (ic) processElemDeclIC(ic, elemDecl); } if (!typeInfo && !validator) { if (!isDuplicate) { elemDecl->setModelType(SchemaElementDecl::Any); elemDecl->setAttWildCard( new (fGrammarPoolMemoryManager) SchemaAttDef( XMLUni::fgZeroLenString, XMLUni::fgZeroLenString, fEmptyNamespaceURI, XMLAttDef::Any_Any, XMLAttDef::ProcessContents_Lax, fGrammarPoolMemoryManager ) ); } } else if (valueConstraint) { if (!checkElemDeclValueConstraint(elem, elemDecl, valueConstraint, typeInfo, validator) && !isDuplicate) { int miscFlags = elemDecl->getMiscFlags(); miscFlags &= ~ SchemaSymbols::XSD_FIXED; elemDecl->setDefaultValue(0); elemDecl->setMiscFlags(miscFlags); } } return elemDecl; } /** * Traverses Schema notation declaration. * * * Content: (annotation?) * * * @param elem: the declaration of the element under consideration */ const XMLCh* TraverseSchema::traverseNotationDecl(const DOMElement* const elem) { NamespaceScopeManager nsMgr(elem, fSchemaInfo, this); // ----------------------------------------------------------------------- // Check attributes // ----------------------------------------------------------------------- fAttributeCheck.checkAttributes( elem, GeneralAttributeCheck::E_Notation, this, true, fNonXSAttList ); // ----------------------------------------------------------------------- // Process notation attributes/elements // ----------------------------------------------------------------------- const XMLCh* name = getElementAttValue(elem, SchemaSymbols::fgATT_NAME, DatatypeValidator::NCName); bool nameEmpty = (!name || !*name) ? true : false; if (nameEmpty) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::NoNameGlobalElement, SchemaSymbols::fgELT_NOTATION); return 0; } if (!XMLChar1_0::isValidNCName(name, XMLString::stringLen(name))) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::InvalidDeclarationName, SchemaSymbols::fgELT_NOTATION, name); return 0; } if (fNotationRegistry->containsKey(name, fTargetNSURI)) { return name; } if (checkContent(elem, XUtil::getFirstChildElement(elem), true) != 0) reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::OnlyAnnotationExpected); const XMLCh* publicId = getElementAttValue(elem, SchemaSymbols::fgATT_PUBLIC); const XMLCh* systemId = getElementAttValue(elem, SchemaSymbols::fgATT_SYSTEM, DatatypeValidator::AnyURI); fNotationRegistry->put((void*) fStringPool->getValueForId(fStringPool->addOrFind(name)), fTargetNSURI, 0); // for PSVI we need to store the notational decl XMLNotationDecl* decl = new (fGrammarPoolMemoryManager) XMLNotationDecl ( name, publicId, systemId, 0, fGrammarPoolMemoryManager ); decl->setNameSpaceId(fTargetNSURI); fSchemaGrammar->putNotationDecl(decl); if (fAnnotation) fSchemaGrammar->putAnnotation(decl, fAnnotation); else if (fScanner->getGenerateSyntheticAnnotations() && fNonXSAttList->size()) { fAnnotation = generateSyntheticAnnotation(elem, fNonXSAttList); fSchemaGrammar->putAnnotation(decl, fAnnotation); } return name; } const XMLCh* TraverseSchema::traverseNotationDecl(const DOMElement* const elem, const XMLCh* const name, const XMLCh* const uriStr) { NamespaceScopeManager nsMgr(elem, fSchemaInfo, this); unsigned int uriId = fURIStringPool->addOrFind(uriStr); SchemaInfo* saveInfo = fSchemaInfo; if (fTargetNSURI != (int) uriId) { // Make sure that we have an explicit import statement. // Clause 4 of Schema Representation Constraint: // http://www.w3.org/TR/xmlschema-1/#src-resolve unsigned int uriId = fURIStringPool->addOrFind(uriStr); if (!isImportingNS(uriId)) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::InvalidNSReference, uriStr); return 0; } Grammar* grammar = fGrammarResolver->getGrammar(uriStr); if (grammar == 0 || grammar->getGrammarType() != Grammar::SchemaGrammarType) { reportSchemaError(elem, XMLUni::fgValidityDomain, XMLValid::GrammarNotFound, uriStr); return 0; } SchemaInfo* impInfo = fSchemaInfo->getImportInfo(uriId); if (!impInfo || impInfo->getProcessed()) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::TypeNotFound, uriStr, name); return 0; } fSchemaInfo = impInfo; fTargetNSURI = fSchemaInfo->getTargetNSURI(); } DOMElement* notationElem = fSchemaInfo->getTopLevelComponent(SchemaInfo::C_Notation, SchemaSymbols::fgELT_NOTATION, name, &fSchemaInfo); if (notationElem == 0) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::Notation_DeclNotFound, uriStr, name); return 0; } const XMLCh* notationName = traverseNotationDecl(notationElem); fSchemaInfo = saveInfo; fTargetNSURI = fSchemaInfo->getTargetNSURI(); return notationName; } /** * Traverses Schema list simple type declaration. * * * Content: (annotation?, simpleType?) * * */ DatatypeValidator* TraverseSchema::traverseByList(const DOMElement* const rootElem, const DOMElement* const contentElem, const XMLCh* const typeName, const XMLCh* const qualifiedName, const int finalSet, Janitor* const janAnnot) { NamespaceScopeManager nsMgr(contentElem, fSchemaInfo, this); DatatypeValidator* baseValidator = 0; const XMLCh* baseTypeName = getElementAttValue(contentElem, SchemaSymbols::fgATT_ITEMTYPE, DatatypeValidator::QName); fAttributeCheck.checkAttributes( contentElem, GeneralAttributeCheck::E_List, this, false, fNonXSAttList ); const DOMElement* tempEl = XUtil::getNextSiblingElement(contentElem); if (tempEl != 0) { reportSchemaError(contentElem, XMLUni::fgXMLErrDomain, XMLErrs::SimpleTypeContentError, tempEl->getLocalName()); } DOMElement* content = 0; if (!baseTypeName || !*baseTypeName) { // must 'see' content = checkContent(rootElem, XUtil::getFirstChildElement(contentElem), false); if (fScanner->getGenerateSyntheticAnnotations() && !fAnnotation && fNonXSAttList->size()) { fAnnotation = generateSyntheticAnnotation(contentElem, fNonXSAttList); } if (fAnnotation) { if (janAnnot->isDataNull()) janAnnot->reset(fAnnotation); else janAnnot->get()->setNext(fAnnotation); } if (!content) { reportSchemaError(contentElem, XMLUni::fgXMLErrDomain, XMLErrs::ExpectedSimpleTypeInList, typeName); popCurrentTypeNameStack(); return 0; } if (XMLString::equals(content->getLocalName(), SchemaSymbols::fgELT_SIMPLETYPE)) { baseValidator = checkForSimpleTypeValidator(content, SchemaSymbols::XSD_LIST); } else { reportSchemaError(content, XMLUni::fgXMLErrDomain, XMLErrs::ListUnionRestrictionError, typeName); popCurrentTypeNameStack(); return 0; } content = XUtil::getNextSiblingElement(content); } else { // base was provided - get proper validator baseValidator = findDTValidator(contentElem, typeName, baseTypeName, SchemaSymbols::XSD_LIST); content = checkContent(rootElem, XUtil::getFirstChildElement(contentElem), true); if (fScanner->getGenerateSyntheticAnnotations() && !fAnnotation && fNonXSAttList->size()) { fAnnotation = generateSyntheticAnnotation(contentElem, fNonXSAttList); } if (fAnnotation) { if (janAnnot->isDataNull()) janAnnot->reset(fAnnotation); else janAnnot->get()->setNext(fAnnotation); } } DatatypeValidator* newDV = 0; if (baseValidator) { if (!baseValidator->isAtomic()) { reportSchemaError(contentElem, XMLUni::fgXMLErrDomain, XMLErrs::AtomicItemType, baseTypeName); } else { // 'content' should be empty // If an annotation was encountered we have already traversed it in // checkContent in the case of a base provided (only allowed child is // an annotation). if (content != 0) { // report an error and continue reportSchemaError(content, XMLUni::fgXMLErrDomain, XMLErrs::SimpleTypeDerivationByListError, typeName); } // create & register validator for "generated" type try { newDV = fDatatypeRegistry->createDatatypeValidator( qualifiedName, baseValidator, 0, 0, true, finalSet, true, fGrammarPoolMemoryManager); } catch (const XMLException& excep) { reportSchemaError(contentElem, excep); } catch(const OutOfMemoryException&) { throw; } catch(...) { reportSchemaError(contentElem, XMLUni::fgXMLErrDomain, XMLErrs::DatatypeValidatorCreationError, typeName); } } } popCurrentTypeNameStack(); return newDV; } /** * Traverses Schema restriction simple type declaration. * * * Content: (annotation?, (simpleType?, * (minExclusive | minInclusive | maxExclusive | maxInclusive | totalDigits | fractionDigits | length | minLength | maxLength | enumeration | whiteSpace | pattern)*)) * * */ DatatypeValidator* TraverseSchema::traverseByRestriction(const DOMElement* const rootElem, const DOMElement* const contentElem, const XMLCh* const typeName, const XMLCh* const qualifiedName, const int finalSet, Janitor* const janAnnot) { NamespaceScopeManager nsMgr(contentElem, fSchemaInfo, this); DatatypeValidator* baseValidator = 0; DatatypeValidator* newDV = 0; const XMLCh* baseTypeName = getElementAttValue(contentElem, SchemaSymbols::fgATT_BASE, DatatypeValidator::QName); fAttributeCheck.checkAttributes( contentElem, GeneralAttributeCheck::E_Restriction, this, false, fNonXSAttList ); const DOMElement* tempEl = XUtil::getNextSiblingElement(contentElem); if (tempEl != 0) { reportSchemaError(contentElem, XMLUni::fgXMLErrDomain, XMLErrs::SimpleTypeContentError, tempEl->getLocalName()); } DOMElement* content = 0; if (!baseTypeName || !*baseTypeName) { // must 'see' content = checkContent(rootElem, XUtil::getFirstChildElement(contentElem), false); if (fScanner->getGenerateSyntheticAnnotations() && !fAnnotation && fNonXSAttList->size()) { fAnnotation = generateSyntheticAnnotation(contentElem, fNonXSAttList); } if (fAnnotation) { if (janAnnot->isDataNull()) janAnnot->reset(fAnnotation); else janAnnot->get()->setNext(fAnnotation); } if (content == 0) { reportSchemaError(contentElem, XMLUni::fgXMLErrDomain, XMLErrs::ExpectedSimpleTypeInRestriction); popCurrentTypeNameStack(); return 0; } if (XMLString::equals(content->getLocalName(), SchemaSymbols::fgELT_SIMPLETYPE)) { baseValidator = checkForSimpleTypeValidator(content); } else { reportSchemaError(content, XMLUni::fgXMLErrDomain, XMLErrs::ListUnionRestrictionError, typeName); popCurrentTypeNameStack(); return 0; } // Check for facets content = XUtil::getNextSiblingElement(content); } else { // base was provided - get proper validator baseValidator = findDTValidator(contentElem, typeName, baseTypeName, SchemaSymbols::XSD_RESTRICTION); content = checkContent(rootElem, XUtil::getFirstChildElement(contentElem), true); if (fScanner->getGenerateSyntheticAnnotations() && !fAnnotation && fNonXSAttList->size()) { fAnnotation = generateSyntheticAnnotation(contentElem, fNonXSAttList); } if (fAnnotation) { if (janAnnot->isDataNull()) janAnnot->reset(fAnnotation); else janAnnot->get()->setNext(fAnnotation); } } if (baseValidator) { // Get facets if any existing typedef RefHashTableOf KVRefHash; Janitor janFacets(0); //RefHashTableOf* facets = 0; typedef RefArrayVectorOf XMLChRefArray; Janitor enums(0); //RefArrayVectorOf* enums = 0; XMLBuffer pattern(128, fGrammarPoolMemoryManager); Janitor janEnumAnnot(0); Janitor janPatternAnnot(0); XMLCh fixedFlagStr[16]; unsigned int fixedFlag = 0; unsigned short scope = 0; bool isFirstPattern = true; bool sawPattern = false; while (content != 0) { if (content->getNodeType() == DOMNode::ELEMENT_NODE) { NamespaceScopeManager nsMgr(content, fSchemaInfo, this); const XMLCh* facetName = content->getLocalName(); bool bContinue=false; // workaround for Borland bug with 'continue' in 'catch' try { scope = fAttributeCheck.getFacetId(facetName, fMemoryManager); } catch(const OutOfMemoryException&) { throw; } catch (...) { reportSchemaError(content, XMLUni::fgXMLErrDomain, XMLErrs::InvalidFacetName, facetName); content = XUtil::getNextSiblingElement(content); bContinue=true; } if(bContinue) continue; fAttributeCheck.checkAttributes( content, scope, this, false, fNonXSAttList ); if (checkContent(rootElem, XUtil::getFirstChildElement(content), true) != 0) reportSchemaError(content, XMLUni::fgXMLErrDomain, XMLErrs::OnlyAnnotationExpected); const XMLCh* attValue = content->getAttribute(SchemaSymbols::fgATT_VALUE); if (janFacets.get() == 0) { janFacets.reset(new (fGrammarPoolMemoryManager) RefHashTableOf(29, true, fGrammarPoolMemoryManager)); } if (XMLString::equals(facetName, SchemaSymbols::fgELT_ENUMERATION)) { if (fScanner->getGenerateSyntheticAnnotations() && !fAnnotation && fNonXSAttList->size()) { fAnnotation = generateSyntheticAnnotation(content, fNonXSAttList); } if (fAnnotation) { if (janEnumAnnot.isDataNull()) janEnumAnnot.reset(fAnnotation); else janEnumAnnot.get()->setNext(fAnnotation); } // REVISIT // if validator is a notation datatype validator, we need // to get the qualified name first before adding it to the // enum buffer if (!enums.get()) { enums.reset(new (fGrammarPoolMemoryManager) RefArrayVectorOf(8, true, fGrammarPoolMemoryManager)); } if (baseValidator->getType() == DatatypeValidator::NOTATION) { const XMLCh* localPart = getLocalPart(attValue); const XMLCh* prefix = getPrefix(attValue); const XMLCh* uriStr = (prefix && *prefix) ? resolvePrefixToURI(content, prefix) : fTargetNSURIString; unsigned int uriId = fURIStringPool->addOrFind(uriStr); if (!fNotationRegistry->containsKey(localPart, uriId)) { traverseNotationDecl(content, localPart, uriStr); } if (uriStr && *uriStr) { fBuffer.set(uriStr); fBuffer.append(chColon); fBuffer.append(localPart); enums.get()->addElement(XMLString::replicate(fBuffer.getRawBuffer(), fGrammarPoolMemoryManager)); } else { enums.get()->addElement(XMLString::replicate(localPart, fGrammarPoolMemoryManager)); } } else if (baseValidator->getType() == DatatypeValidator::QName) { // We need the URI string for the prefix to determine // if that matches the value in the instance document. // Code was just comparing the string of prefix:localname // and if the schema and instance document had different // prefixes with the same URI string then we were giving an error. const XMLCh* prefix = getPrefix(attValue); const XMLCh* uriStr = (prefix && *prefix) ? resolvePrefixToURI(content, prefix) : fTargetNSURIString; enums.get()->addElement(XMLString::replicate(attValue, fGrammarPoolMemoryManager)); enums.get()->addElement(XMLString::replicate(uriStr, fGrammarPoolMemoryManager)); } else { enums.get()->addElement(XMLString::replicate(attValue, fGrammarPoolMemoryManager)); } } else if (XMLString::equals(facetName, SchemaSymbols::fgELT_PATTERN)) { if (fScanner->getGenerateSyntheticAnnotations() && !fAnnotation && fNonXSAttList->size()) { fAnnotation = generateSyntheticAnnotation(content, fNonXSAttList); } if (fAnnotation) { if (janPatternAnnot.isDataNull()) janPatternAnnot.reset(fAnnotation); else janPatternAnnot.get()->setNext(fAnnotation); } sawPattern = true; if (isFirstPattern) { // fBuffer.isEmpty() - overhead call isFirstPattern = false; pattern.set(attValue); } else { //datatypes: 5.2.4 pattern pattern.append(chPipe); pattern.append(attValue); } } else { if (janFacets.get()->containsKey(facetName)) { if (fAnnotation) delete fAnnotation; reportSchemaError(content, XMLUni::fgXMLErrDomain, XMLErrs::DuplicateFacet, facetName); } else { if (XMLString::equals(facetName, SchemaSymbols::fgELT_WHITESPACE) && baseValidator->getType() != DatatypeValidator::String && !XMLString::equals(attValue, SchemaSymbols::fgWS_COLLAPSE)) { if (fAnnotation) delete fAnnotation; reportSchemaError(content, XMLUni::fgXMLErrDomain, XMLErrs::WS_CollapseExpected, attValue); } else { const XMLCh* facetStr = fStringPool->getValueForId(fStringPool->addOrFind(facetName)); KVStringPair* kv = new (fGrammarPoolMemoryManager) KVStringPair(facetStr, attValue, fGrammarPoolMemoryManager); if (fScanner->getGenerateSyntheticAnnotations() && !fAnnotation && fNonXSAttList->size()) { fAnnotation = generateSyntheticAnnotation(content, fNonXSAttList); } if (fAnnotation) fSchemaGrammar->putAnnotation(kv, fAnnotation); janFacets.get()->put((void*) facetStr, kv); checkFixedFacet(content, facetStr, baseValidator, fixedFlag); } } } } content = XUtil::getNextSiblingElement(content); } // end while if (sawPattern) { KVStringPair* kv = new (fGrammarPoolMemoryManager) KVStringPair(SchemaSymbols::fgELT_PATTERN, pattern.getRawBuffer(), pattern.getLen(), fGrammarPoolMemoryManager); if (!janPatternAnnot.isDataNull()) fSchemaGrammar->putAnnotation(kv, janPatternAnnot.release()); janFacets.get()->put((void*) SchemaSymbols::fgELT_PATTERN, kv); } if (fixedFlag) { XMLString::binToText(fixedFlag, fixedFlagStr, 15, 10, fGrammarPoolMemoryManager); janFacets.get()->put((void*) SchemaSymbols::fgATT_FIXED, new (fGrammarPoolMemoryManager) KVStringPair(SchemaSymbols::fgATT_FIXED, fixedFlagStr, fGrammarPoolMemoryManager)); } if (enums.get() && !janEnumAnnot.isDataNull()) fSchemaGrammar->putAnnotation(enums.get(), janEnumAnnot.release()); try { newDV = fDatatypeRegistry->createDatatypeValidator(qualifiedName, baseValidator, janFacets.release(), enums.release(), false, finalSet, true, fGrammarPoolMemoryManager); } catch (const XMLException& excep) { reportSchemaError(contentElem, excep); } catch(const OutOfMemoryException&) { throw; } catch(...) { reportSchemaError(contentElem, XMLUni::fgXMLErrDomain, XMLErrs::DatatypeValidatorCreationError, typeName); } } popCurrentTypeNameStack(); return newDV; } /** * Traverses Schema union simple type declaration. * * * Content: (annotation?, simpleType*) * * */ DatatypeValidator* TraverseSchema::traverseByUnion(const DOMElement* const rootElem, const DOMElement* const contentElem, const XMLCh* const typeName, const XMLCh* const qualifiedName, const int finalSet, int baseRefContext, Janitor* const janAnnot) { NamespaceScopeManager nsMgr(contentElem, fSchemaInfo, this); fAttributeCheck.checkAttributes( contentElem, GeneralAttributeCheck::E_Union, this, false, fNonXSAttList ); const DOMElement* tempEl = XUtil::getNextSiblingElement(contentElem); if (tempEl != 0) { reportSchemaError(contentElem, XMLUni::fgXMLErrDomain, XMLErrs::SimpleTypeContentError, tempEl->getLocalName()); } const XMLCh* baseTypeName = getElementAttValue(contentElem, SchemaSymbols::fgATT_MEMBERTYPES); DatatypeValidator* baseValidator = 0; RefVectorOf* validators = new (fGrammarPoolMemoryManager) RefVectorOf(4, false, fGrammarPoolMemoryManager); Janitor > janValidators(validators); DOMElement* content = 0; if (baseTypeName && *baseTypeName) { //base was provided - get proper validator. XMLStringTokenizer unionMembers(baseTypeName, fGrammarPoolMemoryManager); int tokCount = unionMembers.countTokens(); for (int i = 0; i < tokCount; i++) { const XMLCh* memberTypeName = unionMembers.nextToken(); baseValidator = findDTValidator(contentElem, typeName, memberTypeName, SchemaSymbols::XSD_UNION); if (baseValidator == 0) { popCurrentTypeNameStack(); return 0; } validators->addElement(baseValidator); } content = checkContent(rootElem, XUtil::getFirstChildElement(contentElem), true); if (fScanner->getGenerateSyntheticAnnotations() && !fAnnotation && fNonXSAttList->size()) { fAnnotation = generateSyntheticAnnotation(contentElem, fNonXSAttList); } if (fAnnotation) { if (janAnnot->isDataNull()) janAnnot->reset(fAnnotation); else janAnnot->get()->setNext(fAnnotation); } } else { // must 'see' content = checkContent(rootElem, XUtil::getFirstChildElement(contentElem), false); if (fScanner->getGenerateSyntheticAnnotations() && !fAnnotation && fNonXSAttList->size()) { fAnnotation = generateSyntheticAnnotation(contentElem, fNonXSAttList); } if (fAnnotation) { if (janAnnot->isDataNull()) janAnnot->reset(fAnnotation); else janAnnot->get()->setNext(fAnnotation); } if (content == 0) { reportSchemaError(contentElem, XMLUni::fgXMLErrDomain, XMLErrs::ExpectedSimpleTypeInUnion, typeName); popCurrentTypeNameStack(); return 0; } if (!XMLString::equals(content->getLocalName(), SchemaSymbols::fgELT_SIMPLETYPE)) { reportSchemaError(content, XMLUni::fgXMLErrDomain, XMLErrs::ListUnionRestrictionError, typeName); popCurrentTypeNameStack(); return 0; } } // process union content of simpleType children if any while (content != 0) { if (XMLString::equals(content->getLocalName(), SchemaSymbols::fgELT_SIMPLETYPE)) { baseValidator = checkForSimpleTypeValidator(content, baseRefContext | SchemaSymbols::XSD_UNION); if (baseValidator == 0) { popCurrentTypeNameStack(); return 0; } validators->addElement(baseValidator); } else { // REVISIT - should we break. For now, we will continue and move to // the next sibling reportSchemaError(content, XMLUni::fgXMLErrDomain, XMLErrs::ListUnionRestrictionError, typeName); } content = XUtil::getNextSiblingElement(content); } // end while DatatypeValidator* newDV = 0; janValidators.orphan(); try { newDV = fDatatypeRegistry->createDatatypeValidator(qualifiedName, validators, finalSet, true, fGrammarPoolMemoryManager); } catch (const XMLException& excep) { reportSchemaError(contentElem, excep); } catch(const OutOfMemoryException&) { throw; } catch(...) { reportSchemaError(contentElem, XMLUni::fgXMLErrDomain, XMLErrs::DatatypeValidatorCreationError, typeName); } popCurrentTypeNameStack(); return newDV; } /** * Traverse SimpleContent Declaration * * * * Content: (annotation? , (restriction | extension)) * * * * * Content: (annotation?, (simpleType?, (minExclusive | minInclusive * | maxExclusive | maxInclusive | totalDigits | fractionDigits * | length | minLength | maxLength | enumeration | pattern * | whiteSpace)*)?, ((attribute | attributeGroup)* , anyAttribute?)) * * * * Content: (annotation? , ((attribute | attributeGroup)* , anyAttribute?)) * * */ void TraverseSchema::traverseSimpleContentDecl(const XMLCh* const typeName, const XMLCh* const qualifiedName, const DOMElement* const contentDecl, ComplexTypeInfo* const typeInfo, Janitor* const janAnnot) { NamespaceScopeManager nsMgr(contentDecl, fSchemaInfo, this); // ----------------------------------------------------------------------- // Check Attributes // ----------------------------------------------------------------------- bool preProcessFlag = typeInfo->getPreprocessed(); if (!preProcessFlag) { fAttributeCheck.checkAttributes( contentDecl, GeneralAttributeCheck::E_SimpleContent , this, false, fNonXSAttList ); } // ----------------------------------------------------------------------- // Set the content type to be simple, and initialize content spec handle // ----------------------------------------------------------------------- typeInfo->setContentType(SchemaElementDecl::Simple); // ----------------------------------------------------------------------- // Process annotation if any // ----------------------------------------------------------------------- DOMElement* simpleContent = checkContent(contentDecl, XUtil::getFirstChildElement(contentDecl), false, !preProcessFlag); if (fScanner->getGenerateSyntheticAnnotations() && !fAnnotation && fNonXSAttList->size()) { fAnnotation = generateSyntheticAnnotation(contentDecl, fNonXSAttList); } if (fAnnotation) { if (janAnnot->isDataNull()) janAnnot->reset(fAnnotation); else janAnnot->get()->setNext(fAnnotation); } // If there are no children, return if (simpleContent == 0) { reportSchemaError(contentDecl, XMLUni::fgXMLErrDomain, XMLErrs::EmptySimpleTypeContent); throw TraverseSchema::InvalidComplexTypeInfo; } NamespaceScopeManager nsMgr2(simpleContent, fSchemaInfo, this); // ----------------------------------------------------------------------- // The content should be either "restriction" or "extension" // ----------------------------------------------------------------------- if (!preProcessFlag) { const XMLCh* const contentName = simpleContent->getLocalName(); if (XMLString::equals(contentName, SchemaSymbols::fgATTVAL_RESTRICTION)) { fAttributeCheck.checkAttributes( simpleContent, GeneralAttributeCheck::E_Restriction , this, false, fNonXSAttList ); typeInfo->setDerivedBy(SchemaSymbols::XSD_RESTRICTION); } else if (XMLString::equals(contentName, SchemaSymbols::fgATTVAL_EXTENSION)) { fAttributeCheck.checkAttributes( simpleContent, GeneralAttributeCheck::E_Extension , this, false, fNonXSAttList ); typeInfo->setDerivedBy(SchemaSymbols::XSD_EXTENSION); } else { reportSchemaError(simpleContent, XMLUni::fgXMLErrDomain, XMLErrs::InvalidSimpleContent); throw TraverseSchema::InvalidComplexTypeInfo; } } //Skip over any annotations in the restriction or extension elements DOMElement* content = checkContent(simpleContent, XUtil::getFirstChildElement(simpleContent), true, !preProcessFlag); if (fScanner->getGenerateSyntheticAnnotations() && !fAnnotation && fNonXSAttList->size()) { fAnnotation = generateSyntheticAnnotation(simpleContent, fNonXSAttList); } if (fAnnotation) { if (janAnnot->isDataNull()) janAnnot->reset(fAnnotation); else janAnnot->get()->setNext(fAnnotation); } // ----------------------------------------------------------------------- // Handle the base type name // ----------------------------------------------------------------------- const XMLCh* baseName = getElementAttValue(simpleContent, SchemaSymbols::fgATT_BASE, DatatypeValidator::QName); if (!baseName || !*baseName) { reportSchemaError(simpleContent, XMLUni::fgXMLErrDomain, XMLErrs::UnspecifiedBase); throw TraverseSchema::InvalidComplexTypeInfo; } const XMLCh* prefix = getPrefix(baseName); const XMLCh* localPart = getLocalPart(baseName); const XMLCh* uri = resolvePrefixToURI(simpleContent, prefix); // check for 'anyType' if (XMLString::equals(uri, SchemaSymbols::fgURI_SCHEMAFORSCHEMA) && XMLString::equals(localPart, SchemaSymbols::fgATTVAL_ANYTYPE)) { reportSchemaError(simpleContent, XMLUni::fgXMLErrDomain, XMLErrs::InvalidSimpleContentBase, baseName); throw TraverseSchema::InvalidComplexTypeInfo; } processBaseTypeInfo(simpleContent, baseName, localPart, uri, typeInfo); ComplexTypeInfo* baseTypeInfo = typeInfo->getBaseComplexTypeInfo(); DatatypeValidator* baseValidator = typeInfo->getBaseDatatypeValidator(); if (baseValidator != 0 && baseTypeInfo == 0) { // check that the simpleType does not preclude derivation by extension if ((baseValidator->getFinalSet() & SchemaSymbols::XSD_EXTENSION) == typeInfo->getDerivedBy()) { reportSchemaError(simpleContent, XMLUni::fgXMLErrDomain, XMLErrs::DisallowedSimpleTypeExtension, baseName, typeName); throw TraverseSchema::InvalidComplexTypeInfo; } //Schema Spec: 5.11: Complex Type Definition Properties Correct: 2 if (typeInfo->getDerivedBy() == SchemaSymbols::XSD_RESTRICTION) { reportSchemaError(simpleContent, XMLUni::fgXMLErrDomain, XMLErrs::InvalidComplexTypeBase, baseName); throw TraverseSchema::InvalidComplexTypeInfo; } } // check that the base isn't a complex type with complex content // and that derivation method is not included in 'final' bool simpleTypeRequired = false; if (baseTypeInfo) { if (baseTypeInfo->getContentType() != SchemaElementDecl::Simple) { // Schema Errata: E1-27 if (typeInfo->getDerivedBy() == SchemaSymbols::XSD_RESTRICTION && ((baseTypeInfo->getContentType() == SchemaElementDecl::Mixed_Simple || baseTypeInfo->getContentType() == SchemaElementDecl::Mixed_Complex) && emptiableParticle(baseTypeInfo->getContentSpec()))) { simpleTypeRequired = true; } else { reportSchemaError(simpleContent, XMLUni::fgXMLErrDomain, XMLErrs::InvalidSimpleContentBase, baseName); throw TraverseSchema::InvalidComplexTypeInfo; } } if ((baseTypeInfo->getFinalSet() & typeInfo->getDerivedBy()) != 0) { reportSchemaError(simpleContent, XMLUni::fgXMLErrDomain, XMLErrs::ForbiddenDerivation, baseName); throw TraverseSchema::InvalidComplexTypeInfo; } } // ----------------------------------------------------------------------- // Process the content of the derivation // ----------------------------------------------------------------------- if (typeInfo->getDerivedBy() == SchemaSymbols::XSD_RESTRICTION) { if(baseTypeInfo) typeInfo->setBaseDatatypeValidator(baseTypeInfo->getDatatypeValidator()); if (content != 0) { // --------------------------------------------------------------- // There may be a simple type definition in the restriction // element. The data type validator will be based on it, if // specified // --------------------------------------------------------------- if (XMLString::equals(content->getLocalName(), SchemaSymbols::fgELT_SIMPLETYPE)) { DatatypeValidator* simpleTypeDV = traverseSimpleTypeDecl(content, false); if (simpleTypeDV) { // Check that the simpleType validator is validly derived // from base DatatypeValidator* baseDV = typeInfo->getBaseDatatypeValidator(); if (baseDV && !baseDV->isSubstitutableBy(simpleTypeDV)) { reportSchemaError(content, XMLUni::fgXMLErrDomain, XMLErrs::InvalidContentRestriction); throw TraverseSchema::InvalidComplexTypeInfo; } typeInfo->setBaseDatatypeValidator(simpleTypeDV); content = XUtil::getNextSiblingElement(content); } else { throw TraverseSchema::InvalidComplexTypeInfo; } } // Schema Errata E1-27 // Complex Type Definition Restriction OK: 2.2 else if (simpleTypeRequired) { reportSchemaError(content, XMLUni::fgXMLErrDomain, XMLErrs::CT_SimpleTypeChildRequired); throw TraverseSchema::InvalidComplexTypeInfo; } // --------------------------------------------------------------- // Build up the facet info // --------------------------------------------------------------- RefHashTableOf* facets = 0; RefArrayVectorOf* enums = 0; XMLBuffer pattern(128, fGrammarPoolMemoryManager); XMLCh fixedFlagStr[16]; unsigned int fixedFlag = 0; unsigned short scope = 0; bool isFirstPattern = true; while (content != 0) { const XMLCh* facetName = content->getLocalName(); bool bDoBreak=false; // workaround for Borland bug with 'break' in 'catch' // if not a valid facet, break from the loop try { scope = fAttributeCheck.getFacetId(facetName, fMemoryManager); } catch(const OutOfMemoryException&) { throw; } catch(...) { bDoBreak=true; } if(bDoBreak) break; if (content->getNodeType() == DOMNode::ELEMENT_NODE) { fAttributeCheck.checkAttributes(content, scope, this); const XMLCh* attValue = content->getAttribute(SchemaSymbols::fgATT_VALUE); if (facets == 0) { facets = new (fGrammarPoolMemoryManager) RefHashTableOf(29, true, fGrammarPoolMemoryManager); } if (XMLString::equals(facetName, SchemaSymbols::fgELT_ENUMERATION)) { if (!enums) { enums = new (fGrammarPoolMemoryManager) RefArrayVectorOf(8, true, fGrammarPoolMemoryManager); } enums->addElement(XMLString::replicate(attValue, fGrammarPoolMemoryManager)); } else if (XMLString::equals(facetName, SchemaSymbols::fgELT_PATTERN)) { if (isFirstPattern) { // fBuffer.isEmpty() - overhead call isFirstPattern = false; pattern.set(attValue); } else { //datatypes: 5.2.4 pattern pattern.append(chPipe); pattern.append(attValue); } } else { if (facets->containsKey(facetName)) { reportSchemaError(content, XMLUni::fgXMLErrDomain, XMLErrs::DuplicateFacet, facetName); } else { const XMLCh* facetNameStr = fStringPool->getValueForId(fStringPool->addOrFind(facetName)); facets->put((void*) facetNameStr, new (fGrammarPoolMemoryManager) KVStringPair(facetNameStr, attValue, fGrammarPoolMemoryManager)); checkFixedFacet(content, facetNameStr, typeInfo->getBaseDatatypeValidator(), fixedFlag); } } } content = XUtil::getNextSiblingElement(content); } if (facets) { if (!pattern.isEmpty()) { facets->put ( (void*) SchemaSymbols::fgELT_PATTERN, new (fGrammarPoolMemoryManager) KVStringPair ( SchemaSymbols::fgELT_PATTERN , pattern.getRawBuffer() , pattern.getLen() , fGrammarPoolMemoryManager ) ); } if (fixedFlag) { XMLString::binToText(fixedFlag, fixedFlagStr, 15, 10, fGrammarPoolMemoryManager); facets->put((void*) SchemaSymbols::fgATT_FIXED, new (fGrammarPoolMemoryManager) KVStringPair(SchemaSymbols::fgATT_FIXED, fixedFlagStr, fGrammarPoolMemoryManager)); } try { DatatypeValidator* simpleDV = fDatatypeRegistry->createDatatypeValidator ( qualifiedName, typeInfo->getBaseDatatypeValidator(), facets, enums, false, 0, true, fGrammarPoolMemoryManager ); simpleDV->setAnonymous(); typeInfo->setDatatypeValidator(simpleDV); } catch (const XMLException& excep) { reportSchemaError(simpleContent, excep); } catch(const OutOfMemoryException&) { throw; } catch(...) { reportSchemaError(simpleContent, XMLUni::fgXMLErrDomain, XMLErrs::DatatypeValidatorCreationError, typeName); } } else { typeInfo->setDatatypeValidator(typeInfo->getBaseDatatypeValidator()); } } else { // Schema Errata E1-27 // Complex Type Definition Restriction OK: 2.2 if (simpleTypeRequired) { reportSchemaError(content, XMLUni::fgXMLErrDomain, XMLErrs::CT_SimpleTypeChildRequired); throw TraverseSchema::InvalidComplexTypeInfo; } typeInfo->setDatatypeValidator(typeInfo->getBaseDatatypeValidator()); } } // end RESTRICTION else { // EXTENSION ComplexTypeInfo* baseTypeInfo = typeInfo->getBaseComplexTypeInfo(); if (baseTypeInfo!= 0) { typeInfo->setBaseDatatypeValidator(baseTypeInfo->getDatatypeValidator()); } typeInfo->setDatatypeValidator(typeInfo->getBaseDatatypeValidator()); } // ----------------------------------------------------------------------- // Process attributes if any // ----------------------------------------------------------------------- processAttributes(simpleContent, content, typeInfo); if (XUtil::getNextSiblingElement(simpleContent) != 0) { reportSchemaError(simpleContent, XMLUni::fgXMLErrDomain, XMLErrs::InvalidChildInSimpleContent); } } // End of function traverseSimpleContentDecl /** * Traverse complexContent Declaration * * * * Content: (annotation? , (restriction | extension)) * * * * * Content: (annotation? , (group | all | choice | sequence)?, * ((attribute | attributeGroup)* , anyAttribute?)) * * * * Content: (annotation? , (group | all | choice | sequence)?, * ((attribute | attributeGroup)* , anyAttribute?)) * */ void TraverseSchema::traverseComplexContentDecl(const XMLCh* const typeName, const DOMElement* const contentDecl, ComplexTypeInfo* const typeInfo, const bool isMixed, Janitor* const janAnnot) { NamespaceScopeManager nsMgr(contentDecl, fSchemaInfo, this); // ----------------------------------------------------------------------- // Check attributes // ----------------------------------------------------------------------- bool preProcessFlag = typeInfo->getPreprocessed(); if (!preProcessFlag) { fAttributeCheck.checkAttributes( contentDecl, GeneralAttributeCheck::E_ComplexContent , this, false, fNonXSAttList ); } // ----------------------------------------------------------------------- // Determine whether the content is mixed, or element-only // Setting here overrides any setting on the complex type decl // ----------------------------------------------------------------------- const XMLCh* const mixed = getElementAttValue(contentDecl, SchemaSymbols::fgATT_MIXED, DatatypeValidator::Boolean); bool mixedContent = isMixed; if (mixed) { if (XMLString::equals(mixed, SchemaSymbols::fgATTVAL_TRUE) || XMLString::equals(mixed, fgValueOne)) { mixedContent = true; } else if (XMLString::equals(mixed, SchemaSymbols::fgATTVAL_FALSE) || XMLString::equals(mixed, fgValueZero)) { mixedContent = false; } } // ----------------------------------------------------------------------- // Since the type must have complex content, set the simple type validators // to null // ----------------------------------------------------------------------- typeInfo->setDatatypeValidator(0); typeInfo->setBaseDatatypeValidator(0); DOMElement* complexContent = checkContent(contentDecl,XUtil::getFirstChildElement(contentDecl),false, !preProcessFlag); if (fScanner->getGenerateSyntheticAnnotations() && !fAnnotation && fNonXSAttList->size()) { fAnnotation = generateSyntheticAnnotation(contentDecl, fNonXSAttList); } if (fAnnotation) { if (janAnnot->isDataNull()) janAnnot->reset(fAnnotation); else janAnnot->get()->setNext(fAnnotation); } // If there are no children, return if (complexContent == 0) { throw TraverseSchema::InvalidComplexTypeInfo; } NamespaceScopeManager nsMgr2(complexContent, fSchemaInfo, this); // ----------------------------------------------------------------------- // The content should be either "restriction" or "extension" // ----------------------------------------------------------------------- const XMLCh* const complexContentName = complexContent->getLocalName(); if (XMLString::equals(complexContentName, SchemaSymbols::fgELT_RESTRICTION)) { typeInfo->setDerivedBy(SchemaSymbols::XSD_RESTRICTION); } else if (XMLString::equals(complexContentName, SchemaSymbols::fgELT_EXTENSION)) { typeInfo->setDerivedBy(SchemaSymbols::XSD_EXTENSION); } else { reportSchemaError(complexContent, XMLUni::fgXMLErrDomain, XMLErrs::InvalidComplexContent); throw TraverseSchema::InvalidComplexTypeInfo; } // ----------------------------------------------------------------------- // Handle the base type name // ----------------------------------------------------------------------- const XMLCh* baseName = getElementAttValue(complexContent, SchemaSymbols::fgATT_BASE, DatatypeValidator::QName); if (!baseName || !*baseName) { reportSchemaError(complexContent, XMLUni::fgXMLErrDomain, XMLErrs::UnspecifiedBase); throw TraverseSchema::InvalidComplexTypeInfo; } const XMLCh* prefix = getPrefix(baseName); const XMLCh* localPart = getLocalPart(baseName); const XMLCh* uri = resolvePrefixToURI(complexContent, prefix); bool isBaseAnyType = false; // ------------------------------------------------------------- // check if the base is "anyType" // ------------------------------------------------------------- if (XMLString::equals(uri, SchemaSymbols::fgURI_SCHEMAFORSCHEMA) && XMLString::equals(localPart, SchemaSymbols::fgATTVAL_ANYTYPE)) { isBaseAnyType = true; } else { processBaseTypeInfo(complexContent, baseName, localPart, uri, typeInfo); //Check that the base is a complex type if (typeInfo->getBaseComplexTypeInfo() == 0) { reportSchemaError(complexContent, XMLUni::fgXMLErrDomain, XMLErrs::BaseNotComplexType); throw TraverseSchema::InvalidComplexTypeInfo; } } if (fCurrentGroupInfo) // defer processing until later throw TraverseSchema::RecursingElement; // ----------------------------------------------------------------------- // Process the content of the derivation // ----------------------------------------------------------------------- //Skip over any annotations in the restriction or extension elements DOMElement* content = checkContent(complexContent, XUtil::getFirstChildElement(complexContent), true); if (fAnnotation) { if (janAnnot->isDataNull()) janAnnot->reset(fAnnotation); else janAnnot->get()->setNext(fAnnotation); } processComplexContent(complexContent, typeName, content, typeInfo, localPart, mixedContent, isBaseAnyType); if (XUtil::getNextSiblingElement(complexContent) != 0) { reportSchemaError(complexContent, XMLUni::fgXMLErrDomain, XMLErrs::InvalidChildInComplexContent); } } /** * * processContents = (lax | skip | strict) : strict * Content: (annotation?) * */ SchemaAttDef* TraverseSchema::traverseAnyAttribute(const DOMElement* const elem) { NamespaceScopeManager nsMgr(elem, fSchemaInfo, this); // ----------------------------------------------------------------------- // Check Attributes // ----------------------------------------------------------------------- fAttributeCheck.checkAttributes( elem, GeneralAttributeCheck::E_AnyAttribute, this, false, fNonXSAttList ); // ------------------------------------------------------------------ // First, handle any ANNOTATION declaration // ------------------------------------------------------------------ if (checkContent(elem, XUtil::getFirstChildElement(elem), true) != 0) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::AnyAttributeContentError); } if (fScanner->getGenerateSyntheticAnnotations() && !fAnnotation && fNonXSAttList->size()) { fAnnotation = generateSyntheticAnnotation(elem, fNonXSAttList); } Janitor janAnnot(fAnnotation); // ------------------------------------------------------------------ // Get attributes // ------------------------------------------------------------------ const XMLCh* const processContents = getElementAttValue(elem, SchemaSymbols::fgATT_PROCESSCONTENTS); const XMLCh* const nameSpace = getElementAttValue(elem, SchemaSymbols::fgATT_NAMESPACE); // ------------------------------------------------------------------ // Set default att type based on 'processContents' value // ------------------------------------------------------------------ XMLAttDef::DefAttTypes attDefType = XMLAttDef::ProcessContents_Strict; if ((!processContents || !*processContents) || XMLString::equals(processContents, SchemaSymbols::fgATTVAL_STRICT)) { // Do nothing - defaulted already } else if (XMLString::equals(processContents, SchemaSymbols::fgATTVAL_SKIP)) { attDefType = XMLAttDef::ProcessContents_Skip; } else if (XMLString::equals(processContents, SchemaSymbols::fgATTVAL_LAX)) { attDefType = XMLAttDef::ProcessContents_Lax; } // ------------------------------------------------------------------ // Process 'namespace' attribute // ------------------------------------------------------------------ int uriIndex = fEmptyNamespaceURI; XMLAttDef::AttTypes attType = XMLAttDef::Any_Any; ValueVectorOf namespaceList(8, fGrammarPoolMemoryManager); if ((!nameSpace || !*nameSpace) || XMLString::equals(nameSpace, SchemaSymbols::fgATTVAL_TWOPOUNDANY)) { // Do nothing - defaulted already } else if (XMLString::equals(nameSpace, SchemaSymbols::fgATTVAL_TWOPOUNDOTHER)) { attType = XMLAttDef::Any_Other; uriIndex = fTargetNSURI; } else { XMLStringTokenizer tokenizer(nameSpace, fGrammarPoolMemoryManager); DatatypeValidator* anyURIDV = fDatatypeRegistry->getDatatypeValidator(SchemaSymbols::fgDT_ANYURI); attType = XMLAttDef::Any_List; while (tokenizer.hasMoreTokens()) { const XMLCh* token = tokenizer.nextToken(); if (XMLString::equals(token, SchemaSymbols::fgATTVAL_TWOPOUNDLOCAL)) { uriIndex = fEmptyNamespaceURI; } else if (XMLString::equals(token, SchemaSymbols::fgATTVAL_TWOPOUNDTRAGETNAMESPACE)) { uriIndex = fTargetNSURI; } else { try { anyURIDV->validate(token , fSchemaInfo->getValidationContext() , fMemoryManager); } catch(const XMLException& excep) { reportSchemaError(elem, excep); } uriIndex = fURIStringPool->addOrFind(token); } if (!namespaceList.containsElement(uriIndex)) { namespaceList.addElement(uriIndex); } } uriIndex = fEmptyNamespaceURI; } // ------------------------------------------------------------------ // Create wildcard attribute // ------------------------------------------------------------------ SchemaAttDef* attDef = new (fGrammarPoolMemoryManager) SchemaAttDef(XMLUni::fgZeroLenString, XMLUni::fgZeroLenString, uriIndex, attType, attDefType, fGrammarPoolMemoryManager); if (!janAnnot.isDataNull()) fSchemaGrammar->putAnnotation(attDef, janAnnot.release()); if (namespaceList.size()) { attDef->setNamespaceList(&namespaceList); } return attDef; } /** * */ void TraverseSchema::traverseKey(const DOMElement* const icElem, SchemaElementDecl* const elemDecl) { NamespaceScopeManager nsMgr(icElem, fSchemaInfo, this); // ----------------------------------------------------------------------- // Check Attributes // ----------------------------------------------------------------------- fAttributeCheck.checkAttributes( icElem, GeneralAttributeCheck::E_Key, this, false, fNonXSAttList ); // ----------------------------------------------------------------------- // Create identity constraint // ----------------------------------------------------------------------- const XMLCh* name = getElementAttValue(icElem, SchemaSymbols::fgATT_NAME, DatatypeValidator::NCName); if (!XMLChar1_0::isValidNCName(name, XMLString::stringLen(name))) { reportSchemaError(icElem, XMLUni::fgXMLErrDomain, XMLErrs::InvalidDeclarationName, SchemaSymbols::fgELT_KEY, name); return; } if (!fIdentityConstraintNames) { fIdentityConstraintNames = new (fMemoryManager) RefHash2KeysTableOf(29, (bool) false, fMemoryManager); } else if (fIdentityConstraintNames->containsKey(name, fTargetNSURI)) { reportSchemaError(icElem, XMLUni::fgXMLErrDomain, XMLErrs::IC_DuplicateDecl, name); return; } IC_Key* icKey = new (fGrammarPoolMemoryManager) IC_Key(name, elemDecl->getBaseName(), fGrammarPoolMemoryManager); Janitor janKey(icKey); fIdentityConstraintNames->put((void*) name, fTargetNSURI, icKey); // ----------------------------------------------------------------------- // Get selector and fields // ----------------------------------------------------------------------- if (!traverseIdentityConstraint(icKey, icElem)) { fIdentityConstraintNames->put((void*) name, fTargetNSURI, 0); return; } // ----------------------------------------------------------------------- // Add key to element declaration // ----------------------------------------------------------------------- elemDecl->addIdentityConstraint(icKey); icKey->setNamespaceURI(fTargetNSURI); janKey.orphan(); } /** * */ void TraverseSchema::traverseUnique(const DOMElement* const icElem, SchemaElementDecl* const elemDecl) { NamespaceScopeManager nsMgr(icElem, fSchemaInfo, this); // ----------------------------------------------------------------------- // Check Attributes // ----------------------------------------------------------------------- fAttributeCheck.checkAttributes( icElem, GeneralAttributeCheck::E_Unique, this, false, fNonXSAttList ); // ----------------------------------------------------------------------- // Create identity constraint // ----------------------------------------------------------------------- const XMLCh* name = getElementAttValue(icElem, SchemaSymbols::fgATT_NAME, DatatypeValidator::NCName); if (!XMLChar1_0::isValidNCName(name, XMLString::stringLen(name))) { reportSchemaError(icElem, XMLUni::fgXMLErrDomain, XMLErrs::InvalidDeclarationName, SchemaSymbols::fgELT_UNIQUE, name); return; } if (!fIdentityConstraintNames) { fIdentityConstraintNames = new (fGrammarPoolMemoryManager) RefHash2KeysTableOf(29, (bool) false, fGrammarPoolMemoryManager); } else if (fIdentityConstraintNames->containsKey(name, fTargetNSURI)) { reportSchemaError(icElem, XMLUni::fgXMLErrDomain, XMLErrs::IC_DuplicateDecl, name); return; } IC_Unique* icUnique = new (fGrammarPoolMemoryManager) IC_Unique(name, elemDecl->getBaseName(), fGrammarPoolMemoryManager); Janitor janUnique(icUnique); fIdentityConstraintNames->put((void*) name, fTargetNSURI, icUnique); // ----------------------------------------------------------------------- // Get selector and fields // ----------------------------------------------------------------------- if (!traverseIdentityConstraint(icUnique, icElem)) { fIdentityConstraintNames->put((void*) name, fTargetNSURI, 0); return; } // ----------------------------------------------------------------------- // Add identity cosntraints to element declaration // ----------------------------------------------------------------------- elemDecl->addIdentityConstraint(icUnique); icUnique->setNamespaceURI(fTargetNSURI); janUnique.orphan(); } /** * */ void TraverseSchema::traverseKeyRef(const DOMElement* const icElem, SchemaElementDecl* const elemDecl) { NamespaceScopeManager nsMgr(icElem, fSchemaInfo, this); // ----------------------------------------------------------------------- // Check Attributes // ----------------------------------------------------------------------- fAttributeCheck.checkAttributes( icElem, GeneralAttributeCheck::E_KeyRef, this, false, fNonXSAttList ); // ----------------------------------------------------------------------- // Verify that key reference "refer" attribute is valid // ----------------------------------------------------------------------- const XMLCh* name = getElementAttValue(icElem, SchemaSymbols::fgATT_NAME, DatatypeValidator::NCName); const XMLCh* refer = getElementAttValue(icElem, SchemaSymbols::fgATT_REFER, DatatypeValidator::QName); if (!XMLChar1_0::isValidNCName(name, XMLString::stringLen(name))) { reportSchemaError(icElem, XMLUni::fgXMLErrDomain, XMLErrs::InvalidDeclarationName, SchemaSymbols::fgELT_KEYREF, name); return; } const XMLCh* prefix = getPrefix(refer); const XMLCh* localPart = getLocalPart(refer); // we use the DOM API, as the NamespaceScope is now pointing to a different place const XMLCh* uriStr = icElem->lookupNamespaceURI(*prefix==0?NULL:prefix); if ((!uriStr || !*uriStr) && (prefix && *prefix)) reportSchemaError(icElem, XMLUni::fgXMLErrDomain, XMLErrs::UnresolvedPrefix, prefix); if(!uriStr) uriStr=XMLUni::fgZeroLenString; IdentityConstraint* icKey = (fIdentityConstraintNames) ? fIdentityConstraintNames->get(localPart, fURIStringPool->addOrFind(uriStr)) : 0; if (!icKey) { reportSchemaError(icElem, XMLUni::fgXMLErrDomain, XMLErrs::IC_KeyRefReferNotFound, name, localPart); return; } // ----------------------------------------------------------------------- // Create identity constraint // ----------------------------------------------------------------------- if(fIdentityConstraintNames->containsKey(name, fTargetNSURI)) { reportSchemaError(icElem, XMLUni::fgXMLErrDomain, XMLErrs::IC_DuplicateDecl, name); return; } IC_KeyRef* icKeyRef = new (fGrammarPoolMemoryManager) IC_KeyRef(name, elemDecl->getBaseName(), icKey, fGrammarPoolMemoryManager); Janitor janKeyRef(icKeyRef); fIdentityConstraintNames->put((void*) name, fTargetNSURI, icKeyRef); // ----------------------------------------------------------------------- // Get selector and fields // ----------------------------------------------------------------------- if (!traverseIdentityConstraint(icKeyRef, icElem)) { fIdentityConstraintNames->put((void*) name, fTargetNSURI, 0); return; } // ----------------------------------------------------------------------- // Add key reference to element decl // ----------------------------------------------------------------------- if (icKeyRef->getFieldCount() != icKey->getFieldCount()) { fIdentityConstraintNames->put((void*) name, fTargetNSURI, 0); reportSchemaError(icElem, XMLUni::fgXMLErrDomain, XMLErrs::IC_KeyRefCardinality, name, icKey->getIdentityConstraintName()); } else { elemDecl->addIdentityConstraint(icKeyRef); icKeyRef->setNamespaceURI(fTargetNSURI); janKeyRef.orphan(); } } bool TraverseSchema::traverseIdentityConstraint(IdentityConstraint* const ic, const DOMElement* const icElem) { NamespaceScopeManager nsMgr(icElem, fSchemaInfo, this); // ------------------------------------------------------------------ // First, handle any ANNOTATION declaration // ------------------------------------------------------------------ DOMElement* elem = checkContent(icElem, XUtil::getFirstChildElement(icElem), false); if (fScanner->getGenerateSyntheticAnnotations() && !fAnnotation && fNonXSAttList->size()) { fAnnotation = generateSyntheticAnnotation(icElem, fNonXSAttList); } Janitor janAnnot(fAnnotation); // ------------------------------------------------------------------ // Get selector // ------------------------------------------------------------------ if (elem == 0) { // reportSchemaError(icElem, XMLUni::fgXMLErrDomain, XMLErrs::IC_BadContent); return false; } if (!XMLString::equals(elem->getLocalName(), SchemaSymbols::fgELT_SELECTOR)) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::IC_BadContent); return false; } fAttributeCheck.checkAttributes( elem, GeneralAttributeCheck::E_Selector, this, false, fNonXSAttList ); if (checkContent(icElem, XUtil::getFirstChildElement(elem), true) != 0) reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::OnlyAnnotationExpected); if (fScanner->getGenerateSyntheticAnnotations() && !fAnnotation && fNonXSAttList->size()) { fAnnotation = generateSyntheticAnnotation(elem, fNonXSAttList); } if (fAnnotation) { if (janAnnot.isDataNull()) janAnnot.reset(fAnnotation); else janAnnot.get()->setNext(fAnnotation); } // ------------------------------------------------------------------ // Get xpath attribute // ------------------------------------------------------------------ const XMLCh* xpathExpr = getElementAttValue(elem, SchemaSymbols::fgATT_XPATH); XMLSize_t xpathLen = XMLString::stringLen(xpathExpr); if (!xpathExpr || !xpathLen) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::IC_XPathExprMissing); return false; } // ------------------------------------------------------------------ // Parse xpath expression // ------------------------------------------------------------------ try { XercesXPath* sXPath = new (fGrammarPoolMemoryManager) XercesXPath(xpathExpr, fStringPool, fSchemaInfo->getNamespaceScope(), fEmptyNamespaceURI, true, fGrammarPoolMemoryManager); IC_Selector* icSelector = new (fGrammarPoolMemoryManager) IC_Selector(sXPath, ic); ic->setSelector(icSelector); } catch (const XPathException& e) { reportSchemaError(elem, e); return false; } // ------------------------------------------------------------------ // Get fields // ------------------------------------------------------------------ elem = XUtil::getNextSiblingElement(elem); if (elem == 0) { reportSchemaError(icElem, XMLUni::fgXMLErrDomain, XMLErrs::IC_BadContent); return false; } while (elem != 0) { if (!XMLString::equals(elem->getLocalName(), SchemaSymbols::fgELT_FIELD)) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::IC_BadContent); } else { // General Attribute Checking fAttributeCheck.checkAttributes( elem, GeneralAttributeCheck::E_Field, this, false, fNonXSAttList ); if (checkContent(icElem, XUtil::getFirstChildElement(elem), true) != 0) reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::OnlyAnnotationExpected); if (fScanner->getGenerateSyntheticAnnotations() && !fAnnotation && fNonXSAttList->size()) { fAnnotation = generateSyntheticAnnotation(elem, fNonXSAttList); } if (fAnnotation) { if (janAnnot.isDataNull()) janAnnot.reset(fAnnotation); else janAnnot.get()->setNext(fAnnotation); } // xpath expression parsing xpathExpr = getElementAttValue(elem, SchemaSymbols::fgATT_XPATH); if (!xpathExpr || !*xpathExpr) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::IC_XPathExprMissing); return false; } try { XercesXPath* fieldXPath = new (fGrammarPoolMemoryManager) XercesXPath ( xpathExpr , fStringPool , fSchemaInfo->getNamespaceScope() , fEmptyNamespaceURI , false , fGrammarPoolMemoryManager ); IC_Field* icField = new (fGrammarPoolMemoryManager) IC_Field(fieldXPath, ic); ic->addField(icField); } catch (const XPathException& e) { reportSchemaError(elem, e); return false; } } elem = XUtil::getNextSiblingElement(elem); } if (!janAnnot.isDataNull()) fSchemaGrammar->putAnnotation(ic, janAnnot.release()); if (ic->getFieldCount() == 0) { return false; } return true; } // --------------------------------------------------------------------------- // TraverseSchema: Helper methods // --------------------------------------------------------------------------- bool TraverseSchema::retrieveNamespaceMapping(const DOMElement* const elem) { DOMNamedNodeMap* eltAttrs = elem->getAttributes(); bool seenNS=false; const XMLSize_t attrCount = eltAttrs->getLength(); for (XMLSize_t i = 0; i < attrCount; i++) { DOMNode* attribute = eltAttrs->item(i); if (!attribute) { break; } const XMLCh* attName = attribute->getNodeName(); // starts with 'xmlns:' if (XMLString::startsWith(attName, XMLUni::fgXMLNSColonString)) { if(!seenNS) fSchemaInfo->getNamespaceScope()->increaseDepth(); seenNS=true; int offsetIndex = XMLString::indexOf(attName, chColon); const XMLCh* attValue = attribute->getNodeValue(); fSchemaInfo->getNamespaceScope()->addPrefix(attName + offsetIndex + 1, fURIStringPool->addOrFind(attValue)); } else if (XMLString::equals(attName, XMLUni::fgXMLNSString)) { // == 'xmlns' if(!seenNS) fSchemaInfo->getNamespaceScope()->increaseDepth(); seenNS=true; const XMLCh* attValue = attribute->getNodeValue(); fSchemaInfo->getNamespaceScope()->addPrefix(XMLUni::fgZeroLenString, fURIStringPool->addOrFind(attValue)); } } // end for return seenNS; } void TraverseSchema::processChildren(const DOMElement* const root) { NamespaceScopeManager nsMgr(root, fSchemaInfo, this); bool sawAnnotation = false; // process , and info items. DOMElement* child = XUtil::getFirstChildElement(root); for (; child != 0; child = XUtil::getNextSiblingElement(child)) { const XMLCh* name = child->getLocalName(); if (XMLString::equals(name, SchemaSymbols::fgELT_ANNOTATION)) { XSAnnotation* annot = traverseAnnotationDecl( child, fSchemaInfo->getNonXSAttList(), true); if (annot) { fSchemaGrammar->addAnnotation(annot); sawAnnotation = true; } } else if (XMLString::equals(name, SchemaSymbols::fgELT_INCLUDE)) { traverseInclude(child); } else if (XMLString::equals(name, SchemaSymbols::fgELT_IMPORT)) { traverseImport(child); } else if (XMLString::equals(name, SchemaSymbols::fgELT_REDEFINE)) { traverseRedefine(child); } else break; } // child refers to the first info item which is not or // one of the schema inclusion/importation declarations. for (; child != 0; child = XUtil::getNextSiblingElement(child)) { const XMLCh* name = child->getLocalName(); const XMLCh* typeName = getElementAttValue(child, SchemaSymbols::fgATT_NAME, DatatypeValidator::NCName); int fullNameId = 0; if (typeName) { fBuffer.set(fTargetNSURIString); fBuffer.append(chComma); fBuffer.append(typeName); fullNameId = fStringPool->addOrFind(fBuffer.getRawBuffer()); } if (XMLString::equals(name, SchemaSymbols::fgELT_ANNOTATION)) { XSAnnotation* annot = traverseAnnotationDecl( child, fSchemaInfo->getNonXSAttList(), true); if (annot) { fSchemaGrammar->addAnnotation(annot); sawAnnotation = true; } } else if (XMLString::equals(name, SchemaSymbols::fgELT_SIMPLETYPE)) { if (typeName && *typeName) { if (fGlobalDeclarations[ENUM_ELT_SIMPLETYPE]->containsElement(fullNameId) || fGlobalDeclarations[ENUM_ELT_COMPLEXTYPE]->containsElement(fullNameId)) { reportSchemaError(child, XMLUni::fgXMLErrDomain, XMLErrs::DuplicateGlobalType, SchemaSymbols::fgELT_SIMPLETYPE, typeName, SchemaSymbols::fgELT_COMPLEXTYPE); continue; } else { fGlobalDeclarations[ENUM_ELT_SIMPLETYPE]->addElement(fullNameId); } } traverseSimpleTypeDecl(child); } else if (XMLString::equals(name, SchemaSymbols::fgELT_COMPLEXTYPE)) { if (typeName && *typeName) { if (fGlobalDeclarations[ENUM_ELT_SIMPLETYPE]->containsElement(fullNameId) || fGlobalDeclarations[ENUM_ELT_COMPLEXTYPE]->containsElement(fullNameId)) { reportSchemaError(child, XMLUni::fgXMLErrDomain, XMLErrs::DuplicateGlobalType, SchemaSymbols::fgELT_COMPLEXTYPE, typeName, SchemaSymbols::fgELT_SIMPLETYPE); continue; } else { fGlobalDeclarations[ENUM_ELT_COMPLEXTYPE]->addElement(fullNameId); } } traverseComplexTypeDecl(child); } else if (XMLString::equals(name, SchemaSymbols::fgELT_ELEMENT)) { if (typeName && *typeName) { if (fGlobalDeclarations[ENUM_ELT_ELEMENT]->containsElement(fullNameId)) { reportSchemaError(child, XMLUni::fgXMLErrDomain, XMLErrs::DuplicateGlobalDeclaration, SchemaSymbols::fgELT_ELEMENT, typeName); continue; } else { fGlobalDeclarations[ENUM_ELT_ELEMENT]->addElement(fullNameId); } } traverseElementDecl(child, true); } else if (XMLString::equals(name, SchemaSymbols::fgELT_ATTRIBUTEGROUP)) { if (typeName && *typeName) { if (fGlobalDeclarations[ENUM_ELT_ATTRIBUTEGROUP]->containsElement(fullNameId)) { reportSchemaError(child, XMLUni::fgXMLErrDomain, XMLErrs::DuplicateGlobalDeclaration, SchemaSymbols::fgELT_ATTRIBUTEGROUP, typeName); continue; } else { fGlobalDeclarations[ENUM_ELT_ATTRIBUTEGROUP]->addElement(fullNameId); } } if (!typeName || !fAttGroupRegistry->containsKey(typeName)) { traverseAttributeGroupDecl(child, 0, true); } } else if (XMLString::equals(name, SchemaSymbols::fgELT_ATTRIBUTE)) { if (typeName && *typeName) { if (fGlobalDeclarations[ENUM_ELT_ATTRIBUTE]->containsElement(fullNameId)) { reportSchemaError(child, XMLUni::fgXMLErrDomain, XMLErrs::DuplicateAttribute, typeName); continue; } else { fGlobalDeclarations[ENUM_ELT_ATTRIBUTE]->addElement(fullNameId); } } if (!typeName || !fAttributeDeclRegistry->containsKey(typeName)) { traverseAttributeDecl( child, 0, true); } } else if (XMLString::equals(name, SchemaSymbols::fgELT_GROUP)) { if (typeName && *typeName) { if (fGlobalDeclarations[ENUM_ELT_GROUP]->containsElement(fullNameId)) { reportSchemaError(child, XMLUni::fgXMLErrDomain, XMLErrs::DuplicateGlobalDeclaration, SchemaSymbols::fgELT_GROUP, typeName); continue; } else { fGlobalDeclarations[ENUM_ELT_GROUP]->addElement(fullNameId); } } if (!typeName || !fGroupRegistry->containsKey(fBuffer.getRawBuffer())) { traverseGroupDecl(child); } } else if (XMLString::equals(name, SchemaSymbols::fgELT_NOTATION)) { traverseNotationDecl(child); } else { reportSchemaError(child, XMLUni::fgXMLErrDomain, XMLErrs::SchemaElementContentError); } } // for each child node if (fScanner->getGenerateSyntheticAnnotations() && fSchemaInfo->getNonXSAttList()->size() && !sawAnnotation) { // synthesize a global annotation here. fSchemaGrammar->addAnnotation( generateSyntheticAnnotation(root, fSchemaInfo->getNonXSAttList()) ); } // Handle recursing elements - if any ValueVectorOf* recursingAnonTypes = fSchemaInfo->getRecursingAnonTypes(); if (recursingAnonTypes) { ValueVectorOf* recursingTypeNames = fSchemaInfo->getRecursingTypeNames(); XMLSize_t recurseSize = recursingAnonTypes->size(); for (XMLSize_t i=0; i < recurseSize; i++) { traverseComplexTypeDecl(recursingAnonTypes->elementAt(i), false, recursingTypeNames->elementAt(i)); } recursingAnonTypes->removeAllElements(); recursingTypeNames->removeAllElements(); } } void TraverseSchema::preprocessChildren(const DOMElement* const root) { NamespaceScopeManager nsMgr(root, fSchemaInfo, this); // process , and info items. DOMElement* child = XUtil::getFirstChildElement(root); for (; child != 0; child = XUtil::getNextSiblingElement(child)) { const XMLCh* name = child->getLocalName(); if (XMLString::equals(name, SchemaSymbols::fgELT_ANNOTATION)) { continue; } else if (XMLString::equals(name, SchemaSymbols::fgELT_INCLUDE)) { preprocessInclude(child); } else if (XMLString::equals(name, SchemaSymbols::fgELT_IMPORT)) { preprocessImport(child); } else if (XMLString::equals(name, SchemaSymbols::fgELT_REDEFINE)) { preprocessRedefine(child); } else break; } } DOMElement* TraverseSchema::checkContent( const DOMElement* const rootElem , DOMElement* const contentElem , const bool isEmpty , const bool processAnnot) { DOMElement* content = contentElem; const XMLCh* name = getElementAttValue(rootElem,SchemaSymbols::fgATT_NAME, DatatypeValidator::NCName); fAnnotation = 0; Janitor janAnnot(0); if (!content) { if (!isEmpty) { reportSchemaError(rootElem, XMLUni::fgXMLErrDomain, XMLErrs::ContentError, name); } return 0; } if (XMLString::equals(content->getLocalName(), SchemaSymbols::fgELT_ANNOTATION)) { if (processAnnot) { janAnnot.reset(traverseAnnotationDecl(content, fNonXSAttList)); } content = XUtil::getNextSiblingElement(content); if (!content) { // must be followed by content if (!isEmpty) { reportSchemaError(contentElem, XMLUni::fgXMLErrDomain, XMLErrs::ContentError, name); } fAnnotation = janAnnot.release(); return 0; } if (XMLString::equals(content->getLocalName(), SchemaSymbols::fgELT_ANNOTATION)) { reportSchemaError(content, XMLUni::fgXMLErrDomain, XMLErrs::AnnotationError, name); return 0; } fAnnotation = janAnnot.release(); } return content; } DatatypeValidator* TraverseSchema::getDatatypeValidator(const XMLCh* const uriStr, const XMLCh* const localPartStr) { DatatypeValidator* dv = 0; if (XMLString::equals(uriStr, SchemaSymbols::fgURI_SCHEMAFORSCHEMA)) { dv = fDatatypeRegistry->getDatatypeValidator(localPartStr); } else { fBuffer.set(uriStr); fBuffer.append(chComma); fBuffer.append(localPartStr); if ((uriStr) && !XMLString::equals(uriStr, fTargetNSURIString)) { Grammar* grammar = fGrammarResolver->getGrammar(uriStr); if (grammar && grammar->getGrammarType() == Grammar::SchemaGrammarType) { dv = ((SchemaGrammar*) grammar)->getDatatypeRegistry()->getDatatypeValidator(fBuffer.getRawBuffer()); } } else { dv = fDatatypeRegistry->getDatatypeValidator(fBuffer.getRawBuffer()); } } return dv; } DatatypeValidator* TraverseSchema::checkForSimpleTypeValidator(const DOMElement* const content, int baseRefContext) { DatatypeValidator* baseValidator = traverseSimpleTypeDecl(content, false, baseRefContext); if (!baseValidator) { const XMLCh* name = getElementAttValue(content,SchemaSymbols::fgATT_NAME, DatatypeValidator::NCName); reportSchemaError(content, XMLUni::fgXMLErrDomain, XMLErrs::UnknownSimpleType, name); } return baseValidator; } ComplexTypeInfo* TraverseSchema::checkForComplexTypeInfo(const DOMElement* const content) { int typeNameIndex = traverseComplexTypeDecl(content, false); ComplexTypeInfo* baseTypeInfo = 0; if (typeNameIndex != -1) { baseTypeInfo = fComplexTypeRegistry->get(fStringPool->getValueForId(typeNameIndex)); } if (typeNameIndex == -1 || baseTypeInfo == 0) { const XMLCh* name = getElementAttValue(content,SchemaSymbols::fgATT_NAME, DatatypeValidator::NCName); reportSchemaError(content, XMLUni::fgXMLErrDomain, XMLErrs::UnknownComplexType, name); } return baseTypeInfo; } DatatypeValidator* TraverseSchema::findDTValidator(const DOMElement* const elem, const XMLCh* const derivedTypeName, const XMLCh* const baseTypeName, const int baseRefContext) { const XMLCh* prefix = getPrefix(baseTypeName); const XMLCh* localPart = getLocalPart(baseTypeName); const XMLCh* uri = resolvePrefixToURI(elem, prefix); DatatypeValidator* baseValidator = getDatatypeValidator(uri, localPart); if (baseValidator == 0) { // Check if the base is from the schema for schema namespace // if (XMLString::equals(uri, SchemaSymbols::fgURI_SCHEMAFORSCHEMA)) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::TypeNotFound, uri, localPart); return 0; } SchemaInfo::ListType infoType = SchemaInfo::INCLUDE; SchemaInfo* saveInfo = fSchemaInfo; unsigned int saveScope = fCurrentScope; if (!XMLString::equals(uri, fTargetNSURIString) && (uri && *uri)) { // Make sure that we have an explicit import statement. // Clause 4 of Schema Representation Constraint: // http://www.w3.org/TR/xmlschema-1/#src-resolve unsigned int uriId = fURIStringPool->addOrFind(uri); if (!isImportingNS(uriId)) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::InvalidNSReference, uri); return 0; } SchemaInfo* impInfo = fSchemaInfo->getImportInfo(uriId); if (!impInfo || impInfo->getProcessed()) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::TypeNotFound, uri, localPart); return 0; } infoType = SchemaInfo::IMPORT; restoreSchemaInfo(impInfo, infoType); } DOMElement* baseTypeNode = fSchemaInfo->getTopLevelComponent(SchemaInfo::C_SimpleType, SchemaSymbols::fgELT_SIMPLETYPE, localPart, &fSchemaInfo); if (baseTypeNode != 0) { baseValidator = traverseSimpleTypeDecl(baseTypeNode); // restore schema information, if necessary if (saveInfo != fSchemaInfo) { restoreSchemaInfo(saveInfo, infoType, saveScope); } } } if (baseValidator == 0) { reportSchemaError(elem, XMLUni::fgValidityDomain, XMLValid::UnknownBaseDatatype, baseTypeName, derivedTypeName); } else if ((baseValidator->getFinalSet() & baseRefContext) != 0) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::DisallowedBaseDerivation, baseTypeName); return 0; } return baseValidator; } const XMLCh* TraverseSchema::resolvePrefixToURI(const DOMElement* const elem, const XMLCh* const prefix) { unsigned int nameSpaceIndex = fSchemaInfo->getNamespaceScope()->getNamespaceForPrefix(prefix); const XMLCh* uriStr = fURIStringPool->getValueForId(nameSpaceIndex); if ((!uriStr || !*uriStr) && (prefix && *prefix)) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::UnresolvedPrefix, prefix); return XMLUni::fgZeroLenString; } return uriStr; } SchemaElementDecl* TraverseSchema::processElementDeclRef(const DOMElement* const elem, const XMLCh* const refName) { // check attributes fAttributeCheck.checkAttributes( elem, GeneralAttributeCheck::E_ElementRef, this, false, fNonXSAttList ); // handle annotation DOMElement* content = checkContent(elem, XUtil::getFirstChildElement(elem), true); Janitor janAnnot(fAnnotation); // do not generate synthetic annotation for element reference... if (content != 0) reportSchemaError(elem, XMLUni::fgValidityDomain, XMLValid::NoContentForRef, SchemaSymbols::fgELT_ELEMENT); SchemaElementDecl* refElemDecl = getGlobalElemDecl(elem, refName); if (!refElemDecl) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::RefElementNotFound, refName); } else { if (fCurrentComplexType) fCurrentComplexType->addElement(refElemDecl); if (fCurrentGroupInfo) fCurrentGroupInfo->addElement(refElemDecl); } return refElemDecl; } int TraverseSchema::parseBlockSet(const DOMElement* const elem, const int blockType, const bool isRoot) { const XMLCh* blockVal = (isRoot) ? getElementAttValue(elem, SchemaSymbols::fgATT_BLOCKDEFAULT) : getElementAttValue(elem, SchemaSymbols::fgATT_BLOCK); // blockVal == 0 means 'block attribute is missing'; *blockVal == 0 means 'block="" found' if (blockVal == 0) return fSchemaInfo->getBlockDefault(); int blockSet = 0; if (XMLString::equals(blockVal, SchemaSymbols::fgATTVAL_POUNDALL)) { blockSet = SchemaSymbols::XSD_EXTENSION + SchemaSymbols::XSD_RESTRICTION + SchemaSymbols::XSD_SUBSTITUTION; return blockSet; } XMLStringTokenizer tokenizer(blockVal, fGrammarPoolMemoryManager); while (tokenizer.hasMoreTokens()) { XMLCh* token = tokenizer.nextToken(); if (XMLString::equals(token, SchemaSymbols::fgATTVAL_SUBSTITUTION) && blockType == ES_Block) { if ((blockSet & SchemaSymbols::XSD_SUBSTITUTION) == 0 ) { blockSet += SchemaSymbols::XSD_SUBSTITUTION; } } else if (XMLString::equals(token, SchemaSymbols::fgATTVAL_EXTENSION)) { if ((blockSet & SchemaSymbols::XSD_EXTENSION) == 0) { blockSet += SchemaSymbols::XSD_EXTENSION; } } else if (XMLString::equals(token, SchemaSymbols::fgATTVAL_RESTRICTION)) { if ((blockSet & SchemaSymbols::XSD_RESTRICTION) == 0 ) { blockSet += SchemaSymbols::XSD_RESTRICTION; } } else { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::InvalidBlockValue, blockVal); } } //end while return blockSet; } int TraverseSchema::parseFinalSet(const DOMElement* const elem, const int finalType, const bool isRoot) { const XMLCh* finalVal = (isRoot) ? getElementAttValue(elem, SchemaSymbols::fgATT_FINALDEFAULT) : getElementAttValue(elem, SchemaSymbols::fgATT_FINAL); // finalVal == 0 means 'final attribute is missing'; *finalVal == 0 means 'final="" found' if (finalVal == 0) return fSchemaInfo->getFinalDefault(); int finalSet = 0; if (XMLString::equals(finalVal, SchemaSymbols::fgATTVAL_POUNDALL)) { finalSet = SchemaSymbols::XSD_RESTRICTION + SchemaSymbols::XSD_LIST + SchemaSymbols::XSD_UNION + SchemaSymbols::XSD_EXTENSION; return finalSet; } XMLStringTokenizer tokenizer(finalVal, fGrammarPoolMemoryManager); while (tokenizer.hasMoreTokens()) { XMLCh* token = tokenizer.nextToken(); if (XMLString::equals(token, SchemaSymbols::fgELT_UNION) && (finalType == S_Final || finalType == ECS_Final)) { if ((finalSet & SchemaSymbols::XSD_UNION) == 0) { finalSet += SchemaSymbols::XSD_UNION; } } else if (XMLString::equals(token, SchemaSymbols::fgATTVAL_EXTENSION) && (finalType == EC_Final || finalType == ECS_Final)) { if ((finalSet & SchemaSymbols::XSD_EXTENSION) == 0) { finalSet += SchemaSymbols::XSD_EXTENSION; } } else if (XMLString::equals(token, SchemaSymbols::fgELT_LIST) && (finalType == S_Final || finalType == ECS_Final)) { if ((finalSet & SchemaSymbols::XSD_LIST) == 0 ) { finalSet += SchemaSymbols::XSD_LIST; } } else if (XMLString::equals(token, SchemaSymbols::fgATTVAL_RESTRICTION)) { if ((finalSet & SchemaSymbols::XSD_RESTRICTION) == 0 ) { finalSet += SchemaSymbols::XSD_RESTRICTION; } } else { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::InvalidFinalValue, finalVal); } } //end while return finalSet; } const DOMElement* TraverseSchema::checkIdentityConstraintContent(const DOMElement* const content) { const DOMElement* child = content; if (child != 0) { do { if (!isIdentityConstraintName(child->getLocalName())) { break; } child = XUtil::getNextSiblingElement(child); } while (child != 0); } return child; } bool TraverseSchema::isIdentityConstraintName(const XMLCh* const name) { return (XMLString::equals(name, SchemaSymbols::fgELT_KEY) || XMLString::equals(name, SchemaSymbols::fgELT_KEYREF) || XMLString::equals(name, SchemaSymbols::fgELT_UNIQUE)); } const XMLCh* TraverseSchema::checkTypeFromAnotherSchema(const DOMElement* const elem, const XMLCh* const typeStr) { const XMLCh* prefix = getPrefix(typeStr); const XMLCh* typeURI = resolvePrefixToURI(elem, prefix); if (!XMLString::equals(typeURI, fTargetNSURIString) && !XMLString::equals(typeURI, SchemaSymbols::fgURI_SCHEMAFORSCHEMA) ) { return typeURI; } return 0; } DatatypeValidator* TraverseSchema::getElementTypeValidator(const DOMElement* const elem, const XMLCh* const typeStr, bool& noErrorDetected, const XMLCh* const otherSchemaURI) { const XMLCh* localPart = getLocalPart(typeStr); const XMLCh* typeURI = otherSchemaURI; DatatypeValidator* dv = 0; SchemaInfo::ListType infoType = SchemaInfo::INCLUDE; SchemaInfo* saveInfo = fSchemaInfo; unsigned int saveScope = fCurrentScope; if (otherSchemaURI && *otherSchemaURI) { // Make sure that we have an explicit import statement. // Clause 4 of Schema Representation Constraint: // http://www.w3.org/TR/xmlschema-1/#src-resolve unsigned int uriId = fURIStringPool->addOrFind(otherSchemaURI); if (!isImportingNS(uriId)) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::InvalidNSReference, otherSchemaURI); return 0; } dv = getDatatypeValidator(typeURI, localPart); if (dv) { return dv; } SchemaInfo* impInfo = fSchemaInfo->getImportInfo(uriId); if (!impInfo || impInfo->getProcessed()) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::TypeNotFound, typeURI, localPart); return 0; } infoType = SchemaInfo::IMPORT; restoreSchemaInfo(impInfo, infoType); } else { const XMLCh* prefix = getPrefix(typeStr); typeURI = resolvePrefixToURI(elem, prefix); dv = getDatatypeValidator(typeURI, localPart); } if (!dv) { if (!XMLString::equals(typeURI, SchemaSymbols::fgURI_SCHEMAFORSCHEMA) || XMLString::equals(fTargetNSURIString, SchemaSymbols::fgURI_SCHEMAFORSCHEMA)) { DOMElement* typeElem = fSchemaInfo->getTopLevelComponent(SchemaInfo::C_SimpleType, SchemaSymbols::fgELT_SIMPLETYPE, localPart, &fSchemaInfo); if (typeElem) { traverseSimpleTypeDecl(typeElem); dv = getDatatypeValidator(typeURI, localPart); } } // restore schema information, if necessary if (saveInfo != fSchemaInfo) { restoreSchemaInfo(saveInfo, infoType, saveScope); } if (!dv) { noErrorDetected = false; reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::TypeNotFound, typeURI, localPart); } } return dv; } DatatypeValidator* TraverseSchema::getAttrDatatypeValidatorNS(const DOMElement* const elem, const XMLCh* localPart, const XMLCh* typeURI) { DatatypeValidator* dv = getDatatypeValidator(typeURI, localPart); SchemaInfo::ListType infoType = SchemaInfo::INCLUDE; SchemaInfo* saveInfo = fSchemaInfo; unsigned int saveScope = fCurrentScope; if (!XMLString::equals(typeURI, fTargetNSURIString) && (typeURI && *typeURI)) { // Make sure that we have an explicit import statement. // Clause 4 of Schema Representation Constraint: // http://www.w3.org/TR/xmlschema-1/#src-resolve unsigned int uriId = fURIStringPool->addOrFind(typeURI); if (!isImportingNS(uriId)) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::InvalidNSReference, typeURI); return 0; } if (!dv) { SchemaInfo* impInfo = fSchemaInfo->getImportInfo(uriId); if (!impInfo || impInfo->getProcessed()) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::TypeNotFound, typeURI, localPart); return 0; } infoType = SchemaInfo::IMPORT; restoreSchemaInfo(impInfo, infoType); } } if (!dv) { DOMElement* typeElem = fSchemaInfo->getTopLevelComponent ( SchemaInfo::C_SimpleType , SchemaSymbols::fgELT_SIMPLETYPE , localPart , &fSchemaInfo ); if (typeElem) dv = traverseSimpleTypeDecl(typeElem); // restore schema information, if necessary if (saveInfo != fSchemaInfo) { restoreSchemaInfo(saveInfo, infoType, saveScope); } } return dv; } ComplexTypeInfo* TraverseSchema::getElementComplexTypeInfo(const DOMElement* const elem, const XMLCh* const typeStr, const XMLCh* const otherSchemaURI) { const XMLCh* localPart = getLocalPart(typeStr); const XMLCh* prefix = getPrefix(typeStr); const XMLCh* typeURI = (otherSchemaURI) ? otherSchemaURI : resolvePrefixToURI(elem, prefix); ComplexTypeInfo* typeInfo = 0; SchemaInfo* saveInfo = fSchemaInfo; SchemaInfo::ListType infoType = SchemaInfo::INCLUDE; unsigned int saveScope = fCurrentScope; fBuffer.set(typeURI); fBuffer.append(chComma); fBuffer.append(localPart); if (otherSchemaURI != 0) { // Make sure that we have an explicit import statement. // Clause 4 of Schema Representation Constraint: // http://www.w3.org/TR/xmlschema-1/#src-resolve unsigned int uriId = fURIStringPool->addOrFind(typeURI); if (!isImportingNS(uriId)) return 0; Grammar* aGrammar = fGrammarResolver->getGrammar(typeURI); if (!aGrammar || aGrammar->getGrammarType() != Grammar::SchemaGrammarType) { return 0; } typeInfo = ((SchemaGrammar*)aGrammar)->getComplexTypeRegistry()->get(fBuffer.getRawBuffer()); if (typeInfo) { return typeInfo; } SchemaInfo* impInfo = fSchemaInfo->getImportInfo(uriId); if (!impInfo || impInfo->getProcessed()) { return 0; } infoType = SchemaInfo::IMPORT; restoreSchemaInfo(impInfo, infoType); } else { typeInfo = fComplexTypeRegistry->get(fBuffer.getRawBuffer()); } if (!typeInfo) { if (!XMLString::equals(typeURI, SchemaSymbols::fgURI_SCHEMAFORSCHEMA) || XMLString::equals(fTargetNSURIString, SchemaSymbols::fgURI_SCHEMAFORSCHEMA)) { DOMElement* typeNode = fSchemaInfo->getTopLevelComponent(SchemaInfo::C_ComplexType, SchemaSymbols::fgELT_COMPLEXTYPE, localPart, &fSchemaInfo); if (typeNode) { // fBuffer is reused by traverseComplexTypeDecl, so we have to store its current value XMLBuffer buffCopy(fBuffer.getLen()+1, fMemoryManager); buffCopy.set(fBuffer.getRawBuffer()); traverseComplexTypeDecl(typeNode); typeInfo = fComplexTypeRegistry->get(buffCopy.getRawBuffer()); } } } // restore schema information restoreSchemaInfo(saveInfo, infoType, saveScope); return typeInfo; } SchemaElementDecl* TraverseSchema::getGlobalElemDecl(const DOMElement* const elem, const XMLCh* const qName) { const XMLCh* nameURI = resolvePrefixToURI(elem, getPrefix(qName)); const XMLCh* localPart = getLocalPart(qName); SchemaElementDecl* elemDecl = 0; SchemaInfo* saveInfo = fSchemaInfo; SchemaInfo::ListType infoType = SchemaInfo::INCLUDE; unsigned int saveScope = fCurrentScope; unsigned int uriId = fURIStringPool->addOrFind(nameURI); if (fSchemaInfo->getTargetNSURI() != (int) uriId) { //if (!XMLString::equals(nameURI, fTargetNSURIString)) { // Make sure that we have an explicit import statement. // Clause 4 of Schema Representation Constraint: // http://www.w3.org/TR/xmlschema-1/#src-resolve if (!isImportingNS(uriId)) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::InvalidNSReference, nameURI); return 0; } Grammar* grammar = fGrammarResolver->getGrammar(nameURI); if (grammar && grammar->getGrammarType() == Grammar::SchemaGrammarType) { elemDecl = (SchemaElementDecl*) grammar->getElemDecl( uriId, localPart, 0, Grammar::TOP_LEVEL_SCOPE); } else { reportSchemaError(elem, XMLUni::fgValidityDomain, XMLValid::GrammarNotFound, nameURI); return 0; } if (!elemDecl) { SchemaInfo* impInfo = fSchemaInfo->getImportInfo(uriId); if (!impInfo || impInfo->getProcessed()) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::TypeNotFound, nameURI, localPart); return 0; } infoType = SchemaInfo::IMPORT; restoreSchemaInfo(impInfo, infoType); } } else { elemDecl = (SchemaElementDecl*) fSchemaGrammar->getElemDecl(fTargetNSURI, localPart, 0, Grammar::TOP_LEVEL_SCOPE); } if (!elemDecl) { DOMElement* subsGroupElem = fSchemaInfo->getTopLevelComponent(SchemaInfo::C_Element, SchemaSymbols::fgELT_ELEMENT,localPart, &fSchemaInfo); if (subsGroupElem) elemDecl = traverseElementDecl(subsGroupElem, true); if (!elemDecl) reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::TypeNotFound, nameURI, localPart); } // restore schema information, if necessary if (saveInfo != fSchemaInfo) { restoreSchemaInfo(saveInfo, infoType, saveScope); } return elemDecl; } bool TraverseSchema::isSubstitutionGroupValid(const DOMElement* const elem, const SchemaElementDecl* const subsElemDecl, const ComplexTypeInfo* const typeInfo, const DatatypeValidator* const validator, const XMLCh* const elemName, const bool toEmit) { // here we must do two things: // 1. Make sure there actually *is* a relation between the types of // the element being nominated and the element doing the nominating; // (see PR 3.3.6 point #3 in the first tableau, for instance; this // and the corresponding tableaux from 3.4.6 and 3.14.6 rule out the nominated // element having an anonymous type declaration. // 2. Make sure the nominated element allows itself to be nominated by // an element with the given type-relation. // Note: we assume that (complex|simple)Type processing checks // whether the type in question allows itself to // be modified as this element desires. // if substitution element has any as content model type, return true bool subsRestricted = false; if (subsElemDecl->getModelType() == SchemaElementDecl::Any) { if ((subsElemDecl->getFinalSet() & SchemaSymbols::XSD_RESTRICTION) == 0 || (typeInfo == 0 && validator == 0)) return true; else subsRestricted = true; } // Check for type relationship; // that is, make sure that the type we're deriving has some relatoinship // to substitutionGroupElt's type. else if (typeInfo) { // do complexType case ...need testing ComplexTypeInfo* subsTypeInfo = subsElemDecl->getComplexTypeInfo(); if (subsTypeInfo == typeInfo) return true; int derivationMethod = typeInfo->getDerivedBy(); if (subsTypeInfo == 0) { // take care of complexType based on simpleType case... DatatypeValidator* elemDV = typeInfo->getDatatypeValidator(); DatatypeValidator* subsValidator = subsElemDecl->getDatatypeValidator(); if (elemDV == subsValidator) { return true; } else if (subsValidator && subsValidator->isSubstitutableBy(elemDV)) { if ((subsElemDecl->getFinalSet() & derivationMethod) == 0) { return true; } else { subsRestricted = true; } } } else { // complex content const ComplexTypeInfo* elemTypeInfo = typeInfo; for (; elemTypeInfo && elemTypeInfo != subsTypeInfo; elemTypeInfo = elemTypeInfo->getBaseComplexTypeInfo()) { } if (elemTypeInfo) { if ((subsElemDecl->getFinalSet() & derivationMethod) == 0) { return true; } else { subsRestricted = true; } } } } else if (validator) { // do simpleType case... if (!subsElemDecl->getComplexTypeInfo()) { // first, check for type relation. DatatypeValidator* subsValidator = subsElemDecl->getDatatypeValidator(); if (subsValidator == validator) { return true; } else if (subsValidator && subsValidator->isSubstitutableBy(validator) && ((subsElemDecl->getFinalSet() & SchemaSymbols::XSD_RESTRICTION) == 0)) { return true; } } } else // validator==0 && typeInfo==0 -- no checking return true; if (toEmit) { if (subsRestricted) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::InvalidSubstitutionGroupElement, elemName, subsElemDecl->getBaseName()); } else { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::SubstitutionGroupTypeMismatch, elemName); } } return false; } SchemaElementDecl* TraverseSchema::createSchemaElementDecl(const DOMElement* const elem, const XMLCh* const name, bool& isDuplicate, const XMLCh*& valConstraint, const bool topLevel) { unsigned int enclosingScope = fCurrentScope; int uriIndex = fEmptyNamespaceURI; if (topLevel) { uriIndex = fTargetNSURI; enclosingScope = Grammar::TOP_LEVEL_SCOPE; } else { const XMLCh* elemForm = getElementAttValue(elem, SchemaSymbols::fgATT_FORM); if (((!elemForm || !*elemForm) && (fSchemaInfo->getElemAttrDefaultQualified() & Elem_Def_Qualified)) || XMLString::equals(elemForm,SchemaSymbols::fgATTVAL_QUALIFIED)) uriIndex = fTargetNSURI; // Check for duplicate elements SchemaElementDecl* other = (SchemaElementDecl*) fSchemaGrammar->getElemDecl(uriIndex, name, 0, enclosingScope); if (other != 0) { isDuplicate = true; return other; } } // create element decl and add it to the grammar Janitor elemDecl(new (fGrammarPoolMemoryManager) SchemaElementDecl( XMLUni::fgZeroLenString , name, uriIndex , SchemaElementDecl::Any , enclosingScope , fGrammarPoolMemoryManager )); elemDecl->setCreateReason(XMLElementDecl::Declared); if (topLevel) elemDecl->setPSVIScope(PSVIDefs::SCP_GLOBAL); // process attributes processElemDeclAttrs(elem, elemDecl.get(), valConstraint, topLevel); return elemDecl.release(); } void TraverseSchema::processAttributeDeclRef(const DOMElement* const elem, ComplexTypeInfo* const typeInfo, const XMLCh* const refName, const XMLCh* const useAttr, const XMLCh* const defaultVal, const XMLCh* const fixedVal) { if (!typeInfo && !fCurrentAttGroupInfo) { return; } const XMLCh* prefix = getPrefix(refName); const XMLCh* localPart = getLocalPart(refName); const XMLCh* uriStr = resolvePrefixToURI(elem, prefix); unsigned int attURI = fURIStringPool->addOrFind(uriStr); // Check for duplicate references if (typeInfo && typeInfo->getAttDef(localPart, attURI)) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::DuplicateRefAttribute, uriStr, localPart); return; } else if (fCurrentAttGroupInfo && fCurrentAttGroupInfo->containsAttribute(localPart, attURI)) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::DuplicateRefAttribute, uriStr, localPart); return; } // check for different namespace SchemaInfo* saveInfo = fSchemaInfo; SchemaInfo::ListType infoType = SchemaInfo::INCLUDE; SchemaAttDef* refAttDef = 0; unsigned int saveScope = fCurrentScope; if (!XMLString::equals(uriStr, fTargetNSURIString)) { // Make sure that we have an explicit import statement. // Clause 4 of Schema Representation Constraint: // http://www.w3.org/TR/xmlschema-1/#src-resolve unsigned int uriId = fURIStringPool->addOrFind(uriStr); if (!isImportingNS(uriId)) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::InvalidNSReference, uriStr); return; } Grammar* grammar = fGrammarResolver->getGrammar(uriStr); if (grammar == 0 || grammar->getGrammarType() != Grammar::SchemaGrammarType) { reportSchemaError(elem, XMLUni::fgValidityDomain, XMLValid::GrammarNotFound, uriStr); return; } refAttDef = (SchemaAttDef*) ((SchemaGrammar*) grammar)->getAttributeDeclRegistry()->get(localPart); if (!refAttDef) { SchemaInfo* impInfo = fSchemaInfo->getImportInfo(attURI); if (!impInfo || impInfo->getProcessed()) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::TopLevelAttributeNotFound, refName); return; } infoType = SchemaInfo::IMPORT; restoreSchemaInfo(impInfo, infoType); } } // if Global attribute registry does not contain the ref attribute, get // the referred attribute declaration and traverse it. if (!refAttDef) { if (fAttributeDeclRegistry->containsKey(localPart) == false) { DOMElement* referredAttribute = fSchemaInfo->getTopLevelComponent(SchemaInfo::C_Attribute, SchemaSymbols::fgELT_ATTRIBUTE, localPart, &fSchemaInfo); if (referredAttribute != 0) { traverseAttributeDecl(referredAttribute, 0, true); } } refAttDef = (SchemaAttDef*) fAttributeDeclRegistry->get(localPart); } // restore schema information, if necessary if (fSchemaInfo != saveInfo) { restoreSchemaInfo(saveInfo, infoType, saveScope); } if (!refAttDef) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::TopLevelAttributeNotFound, refName); return; } XMLAttDef::DefAttTypes refAttDefType = refAttDef->getDefaultType(); const XMLCh* refAttValue = refAttDef->getValue(); bool invalidAttUse = false; if (refAttDefType == XMLAttDef::Fixed && (defaultVal || (fixedVal && !XMLString::equals(fixedVal, refAttValue)))) { invalidAttUse = true; reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::AttUseCorrect, refName); } DatatypeValidator* attDV = refAttDef->getDatatypeValidator(); //check for multiple attributes with type derived from ID if (attDV && attDV->getType() == DatatypeValidator::ID) { if (fCurrentAttGroupInfo) { if (fCurrentAttGroupInfo->containsTypeWithId()) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::AttGrpPropCorrect3, refName); return; } fCurrentAttGroupInfo->setTypeWithId(true); } else { if (typeInfo->containsAttWithTypeId()) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::AttDeclPropCorrect5, refName); return; } typeInfo->setAttWithTypeId(true); } } bool required = XMLString::equals(useAttr,SchemaSymbols::fgATTVAL_REQUIRED); bool prohibited = XMLString::equals(useAttr,SchemaSymbols::fgATTVAL_PROHIBITED); QName* attQName = refAttDef->getAttName(); SchemaAttDef* attDef = new (fGrammarPoolMemoryManager) SchemaAttDef(attQName->getPrefix(), attQName->getLocalPart(), attQName->getURI(), refAttValue, refAttDef->getType(), refAttDefType, 0, fGrammarPoolMemoryManager); attDef->setBaseAttDecl(refAttDef); attDef->setPSVIScope(PSVIDefs::SCP_GLOBAL); if (refAttDefType == XMLAttDef::Fixed) { if (required && !invalidAttUse) { attDef->setDefaultType(XMLAttDef::Required_And_Fixed); } } else { if (prohibited) { attDef->setDefaultType(XMLAttDef::Prohibited); } else { const XMLCh* valueConstraint = defaultVal; if (required){ if (fixedVal) { attDef->setDefaultType(XMLAttDef::Required_And_Fixed); valueConstraint = fixedVal; } else { attDef->setDefaultType(XMLAttDef::Required); } } else { if (fixedVal) { attDef->setDefaultType(XMLAttDef::Fixed); valueConstraint = fixedVal; } else if (defaultVal) { attDef->setDefaultType(XMLAttDef::Default); } } if (valueConstraint) { // validate content of value constraint if (attDV) { if (attDV->getType() == DatatypeValidator::ID) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::AttDeclPropCorrect3, refName); } else { try { attDV->validate(valueConstraint , fSchemaInfo->getValidationContext() , fMemoryManager); } catch(const XMLException& excep) { reportSchemaError(elem, excep); } catch(const OutOfMemoryException&) { throw; } catch (...) { reportSchemaError(elem, XMLUni::fgValidityDomain, XMLValid::DatatypeValidationFailure, valueConstraint); } } } attDef->setValue(valueConstraint); } } } attDef->setDatatypeValidator(attDV); bool toClone = false; if (typeInfo) { toClone = true; typeInfo->addAttDef(attDef); } if (fCurrentAttGroupInfo) { fCurrentAttGroupInfo->addAttDef(attDef, toClone); } } int TraverseSchema::checkMinMax(ContentSpecNode* const specNode, const DOMElement* const elem, const int allContextFlag) { int minOccurs = 1; int maxOccurs = 1; const XMLCh* minOccursStr = getElementAttValue(elem, SchemaSymbols::fgATT_MINOCCURS, DatatypeValidator::Decimal); const XMLCh* maxOccursStr = getElementAttValue(elem, SchemaSymbols::fgATT_MAXOCCURS, DatatypeValidator::Decimal); if (!minOccursStr || !*minOccursStr) { if (specNode) minOccurs = specNode->getMinOccurs(); } else { try { minOccurs = XMLString::parseInt(minOccursStr, fMemoryManager); } catch(const NumberFormatException& e) { // REVISIT: report a warning that we replaced a number too big? if(e.getCode()==XMLExcepts::Str_ConvertOverflow) minOccurs = 500; else minOccurs = 1; } catch(const OutOfMemoryException&) { throw; } if (specNode) specNode->setMinOccurs(minOccurs); } bool isMaxUnbounded = XMLString::equals(maxOccursStr, fgUnbounded); if (isMaxUnbounded) { maxOccurs = SchemaSymbols::XSD_UNBOUNDED; if (specNode) specNode->setMaxOccurs(maxOccurs); } else { if (!maxOccursStr || !*maxOccursStr) { if (specNode) maxOccurs = specNode->getMaxOccurs(); } else { try { maxOccurs = XMLString::parseInt(maxOccursStr, fMemoryManager); } catch(const NumberFormatException& e) { // REVISIT: report a warning that we replaced a number too big? if(e.getCode()==XMLExcepts::Str_ConvertOverflow && minOccurs < 500) maxOccurs = 500; else maxOccurs = minOccurs; } catch(const OutOfMemoryException&) { throw; } if (specNode) specNode->setMaxOccurs(maxOccurs); } } if (minOccurs == 0 && maxOccurs == 0){ return minOccurs; } // Constraint checking for min/max value if (!isMaxUnbounded) { XMLCh tmpMinStr[128]; XMLCh tmpMaxStr[128]; XMLString::binToText(minOccurs, tmpMinStr, 127, 10, fMemoryManager); XMLString::binToText(maxOccurs, tmpMaxStr, 127, 10, fMemoryManager); if (maxOccurs < 1) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::InvalidAttValue, tmpMaxStr, SchemaSymbols::fgATT_MAXOCCURS); if (specNode) specNode->setMaxOccurs(minOccurs); } else if (maxOccurs < minOccurs) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::InvalidMin2MaxOccurs, tmpMinStr, tmpMaxStr); if (specNode) specNode->setMaxOccurs(minOccurs); } } // Constraint checking for 'all' content bool isAllElement = (allContextFlag == All_Element); bool isAllGroup = (allContextFlag == All_Group); bool isGroupRefAll = (allContextFlag == Group_Ref_With_All); if (isAllElement || isAllGroup || isGroupRefAll) { if (maxOccurs != 1 || minOccurs > 1) { // set back correct value in order to carry on if (specNode) { specNode->setMaxOccurs(1); if (minOccurs > 1) specNode->setMinOccurs(1); } if (isAllElement) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::BadMinMaxAllElem); } else { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::BadMinMaxAllCT); } } } return minOccurs; } void TraverseSchema::processComplexContent(const DOMElement* const ctElem, const XMLCh* const typeName, const DOMElement* const childElem, ComplexTypeInfo* const typeInfo, const XMLCh* const baseLocalPart, const bool isMixed, const bool isBaseAnyType) { NamespaceScopeManager nsMgr(childElem, fSchemaInfo, this); Janitor specNodeJan(0); ContentSpecNode* specNode = specNodeJan.get(); const DOMElement* attrNode = 0; int typeDerivedBy = typeInfo->getDerivedBy(); ComplexTypeInfo* baseTypeInfo = typeInfo->getBaseComplexTypeInfo(); int baseContentType = (baseTypeInfo) ? baseTypeInfo->getContentType() : SchemaElementDecl::Empty; if (baseTypeInfo) { if (typeDerivedBy == SchemaSymbols::XSD_RESTRICTION) { // check to see if the baseType permits derivation by restriction if((baseTypeInfo->getFinalSet() & typeDerivedBy) != 0) { reportSchemaError(ctElem, XMLUni::fgXMLErrDomain, XMLErrs::ForbiddenDerivationByRestriction, baseLocalPart); throw TraverseSchema::InvalidComplexTypeInfo; } } else { // check to see if the baseType permits derivation by extension if((baseTypeInfo->getFinalSet() & typeDerivedBy) != 0) { reportSchemaError(ctElem, XMLUni::fgXMLErrDomain, XMLErrs::ForbiddenDerivationByExtension, baseLocalPart); throw TraverseSchema::InvalidComplexTypeInfo; // REVISIT - should we continue } processElements(ctElem, baseTypeInfo, typeInfo); } } bool effectiveContent_hasChild = false; if (childElem != 0) { fCircularCheckIndex = fCurrentTypeNameStack->size(); // -------------------------------------------------------------------- // GROUP, ALL, SEQUENCE or CHOICE, followed by attributes, if specified. // Note that it's possible that only attributes are specified. // -------------------------------------------------------------------- const XMLCh* childName = childElem->getLocalName(); if (XMLString::equals(childName, SchemaSymbols::fgELT_GROUP)) { XercesGroupInfo* grpInfo = traverseGroupDecl(childElem, false); if (grpInfo) { ContentSpecNode* const groupSpecNode = grpInfo->getContentSpec(); if (groupSpecNode) { int contentContext = groupSpecNode->hasAllContent() ? Group_Ref_With_All : Not_All_Context; specNodeJan.reset(new (fGrammarPoolMemoryManager) ContentSpecNode(*groupSpecNode)); specNode = specNodeJan.get(); checkMinMax(specNode, childElem, contentContext); } } attrNode = XUtil::getNextSiblingElement(childElem); } else if (XMLString::equals(childName, SchemaSymbols::fgELT_SEQUENCE)) { specNodeJan.reset(traverseChoiceSequence(childElem, ContentSpecNode::Sequence, effectiveContent_hasChild)); specNode = specNodeJan.get(); checkMinMax(specNode, childElem); attrNode = XUtil::getNextSiblingElement(childElem); } else if (XMLString::equals(childName, SchemaSymbols::fgELT_CHOICE)) { specNodeJan.reset(traverseChoiceSequence(childElem, ContentSpecNode::Choice, effectiveContent_hasChild)); specNode = specNodeJan.get(); int minOccurs = checkMinMax(specNode, childElem); if (!effectiveContent_hasChild && minOccurs != 0) { effectiveContent_hasChild = true; } attrNode = XUtil::getNextSiblingElement(childElem); } else if (XMLString::equals(childName, SchemaSymbols::fgELT_ALL)) { specNodeJan.reset(traverseAll(childElem, effectiveContent_hasChild)); specNode = specNodeJan.get(); checkMinMax(specNode, childElem, All_Group); attrNode = XUtil::getNextSiblingElement(childElem); } else if (isAttrOrAttrGroup(childElem)) { // reset the contentType typeInfo->setContentType(SchemaElementDecl::Any); attrNode = childElem; } else { reportSchemaError(childElem, XMLUni::fgXMLErrDomain, XMLErrs::InvalidChildInComplexType, childName); } } typeInfo->setContentSpec(specNode); typeInfo->setAdoptContentSpec(true); specNodeJan.release(); bool specNodeWasNull = false; // ----------------------------------------------------------------------- // Merge in information from base, if it exists // ----------------------------------------------------------------------- if (baseTypeInfo) { ContentSpecNode* baseSpecNode = baseTypeInfo->getContentSpec(); if (typeDerivedBy == SchemaSymbols::XSD_RESTRICTION) { //check derivation valid - content type is empty (5.2) if (!typeInfo->getContentSpec()) { if (baseContentType != SchemaElementDecl::Empty && !emptiableParticle(baseSpecNode)) { reportSchemaError(ctElem, XMLUni::fgXMLErrDomain, XMLErrs::EmptyComplexRestrictionDerivation); } } // Delay particle constraint checking (5.3) until we have processed // the whole schema. } else { // Compose the final content model by concatenating the base and // the current in sequence if (!specNode) { specNodeWasNull = true; if (isMixed) { if (baseSpecNode && baseSpecNode->hasAllContent()) { reportSchemaError(ctElem, XMLUni::fgXMLErrDomain, XMLErrs::NotAllContent); throw TraverseSchema::InvalidComplexTypeInfo; // REVISIT - should we continue } } if (baseSpecNode) { specNodeJan.reset(new (fGrammarPoolMemoryManager) ContentSpecNode(*baseSpecNode)); specNode = specNodeJan.get(); typeInfo->setContentSpec(specNode); typeInfo->setAdoptContentSpec(true); specNodeJan.release(); } } else if (baseSpecNode) { if (specNode->hasAllContent() || baseSpecNode->hasAllContent()) { reportSchemaError(ctElem, XMLUni::fgXMLErrDomain, XMLErrs::NotAllContent); throw TraverseSchema::InvalidComplexTypeInfo; // REVISIT - should we continue } // Check for derivation valid (extension) - 1.4.3.2.2.1 if ((isMixed && baseContentType == SchemaElementDecl::Children) || (!isMixed && baseContentType != SchemaElementDecl::Children)) { reportSchemaError(ctElem, XMLUni::fgXMLErrDomain, XMLErrs::MixedOrElementOnly, baseLocalPart, typeName); throw TraverseSchema::InvalidComplexTypeInfo; //REVISIT - should we continue } typeInfo->setAdoptContentSpec(false); typeInfo->setContentSpec ( new (fGrammarPoolMemoryManager) ContentSpecNode ( ContentSpecNode::ModelGroupSequence , new (fGrammarPoolMemoryManager) ContentSpecNode(*baseSpecNode) , specNode , true , true , fGrammarPoolMemoryManager ) ); typeInfo->setAdoptContentSpec(true); } } } else { typeInfo->setDerivedBy(0); } // ------------------------------------------------------------- // Set the content type // ------------------------------------------------------------- if (isBaseAnyType && typeDerivedBy == SchemaSymbols::XSD_EXTENSION) { ContentSpecNode* anySpecNode = new (fGrammarPoolMemoryManager) ContentSpecNode ( new (fGrammarPoolMemoryManager) QName ( XMLUni::fgZeroLenString , XMLUni::fgZeroLenString , fEmptyNamespaceURI, fGrammarPoolMemoryManager ) , false , fGrammarPoolMemoryManager ); anySpecNode->setType(ContentSpecNode::Any_Lax); anySpecNode->setMinOccurs(0); anySpecNode->setMaxOccurs(SchemaSymbols::XSD_UNBOUNDED); if (!specNode) { typeInfo->setContentSpec(anySpecNode); typeInfo->setDerivedBy(typeDerivedBy); } else { typeInfo->setAdoptContentSpec(false); typeInfo->setContentSpec ( new (fGrammarPoolMemoryManager) ContentSpecNode ( ContentSpecNode::ModelGroupSequence , anySpecNode , specNode , true , true , fGrammarPoolMemoryManager ) ); typeInfo->setAdoptContentSpec(true); if (!isMixed) { reportSchemaError(ctElem, XMLUni::fgXMLErrDomain, XMLErrs::MixedOrElementOnly, baseLocalPart, typeName); throw TraverseSchema::InvalidComplexTypeInfo; //REVISIT - should we continue } } typeInfo->setContentType(SchemaElementDecl::Mixed_Complex); } else if (isMixed) { if (specNode != 0) { typeInfo->setContentType(SchemaElementDecl::Mixed_Complex); } else { // add #PCDATA leaf and set its minOccurs to 0 ContentSpecNode* pcdataNode = new (fGrammarPoolMemoryManager) ContentSpecNode ( new (fGrammarPoolMemoryManager) QName ( XMLUni::fgZeroLenString , XMLUni::fgZeroLenString , XMLElementDecl::fgPCDataElemId , fGrammarPoolMemoryManager ) , false , fGrammarPoolMemoryManager ); pcdataNode->setMinOccurs(0); typeInfo->setContentSpec(pcdataNode); typeInfo->setAdoptContentSpec(true); typeInfo->setContentType(SchemaElementDecl::Mixed_Simple); } } else if (specNodeWasNull && (typeDerivedBy == SchemaSymbols::XSD_EXTENSION) && baseTypeInfo) { typeInfo->setBaseDatatypeValidator(baseTypeInfo->getBaseDatatypeValidator()); typeInfo->setDatatypeValidator(baseTypeInfo->getDatatypeValidator()); typeInfo->setContentType(baseTypeInfo->getContentType()); } else if (typeInfo->getContentSpec() == 0) { if (!effectiveContent_hasChild) { typeInfo->setContentType(SchemaElementDecl::Empty); } else { typeInfo->setContentType(SchemaElementDecl::ElementOnlyEmpty); } } else { typeInfo->setContentType(SchemaElementDecl::Children); } // ------------------------------------------------------------- // Now, check attributes and handle // ------------------------------------------------------------- if (attrNode != 0) { if (!isAttrOrAttrGroup(attrNode)) { reportSchemaError(attrNode, XMLUni::fgXMLErrDomain, XMLErrs::InvalidChildInComplexType, attrNode->getLocalName()); } else { processAttributes(ctElem, attrNode, typeInfo, isBaseAnyType); } } else if (baseTypeInfo != 0 || isBaseAnyType) { processAttributes(ctElem, 0, typeInfo, isBaseAnyType); } } void TraverseSchema::processBaseTypeInfo(const DOMElement* const elem, const XMLCh* const baseName, const XMLCh* const localPart, const XMLCh* const uriStr, ComplexTypeInfo* const typeInfo) { SchemaInfo* saveInfo = fSchemaInfo; ComplexTypeInfo* baseComplexTypeInfo = 0; DatatypeValidator* baseDTValidator = 0; SchemaInfo::ListType infoType = SchemaInfo::INCLUDE; unsigned int saveScope = fCurrentScope; // check if the base type is from another schema if (!XMLString::equals(uriStr, fTargetNSURIString)) { // check for datatype validator if it's schema for schema URI if (XMLString::equals(uriStr, SchemaSymbols::fgURI_SCHEMAFORSCHEMA)) { baseDTValidator = getDatatypeValidator(uriStr, localPart); if (!baseDTValidator) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::BaseTypeNotFound, baseName); throw TraverseSchema::InvalidComplexTypeInfo; } } else { // Make sure that we have an explicit import statement. // Clause 4 of Schema Representation Constraint: // http://www.w3.org/TR/xmlschema-1/#src-resolve unsigned int uriId = fURIStringPool->addOrFind(uriStr); if (!isImportingNS(uriId)) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::InvalidNSReference, uriStr); throw TraverseSchema::InvalidComplexTypeInfo; } baseComplexTypeInfo = getTypeInfoFromNS(elem, uriStr, localPart); if (!baseComplexTypeInfo) { baseDTValidator = getDatatypeValidator(uriStr, localPart); if (!baseDTValidator) { SchemaInfo* impInfo = fSchemaInfo->getImportInfo(fURIStringPool->addOrFind(uriStr)); if (!impInfo || impInfo->getProcessed()) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::BaseTypeNotFound, baseName); throw TraverseSchema::InvalidComplexTypeInfo; } infoType = SchemaInfo::IMPORT; restoreSchemaInfo(impInfo, infoType); } } } } else { fBuffer.set(uriStr); fBuffer.append(chComma); fBuffer.append(localPart); // assume the base is a complexType and try to locate the base type first const XMLCh* fullBaseName = fBuffer.getRawBuffer(); baseComplexTypeInfo = fComplexTypeRegistry->get(fullBaseName); // Circular check if (baseComplexTypeInfo) { if (fCurrentTypeNameStack->containsElement(fStringPool->addOrFind(fullBaseName), fCircularCheckIndex)) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::NoCircularDefinition, fullBaseName); throw TraverseSchema::InvalidComplexTypeInfo; } else if (fCurrentTypeNameStack->containsElement(fStringPool->addOrFind(fullBaseName))) { typeInfo->setBaseComplexTypeInfo(baseComplexTypeInfo); throw TraverseSchema::RecursingElement; } else if (baseComplexTypeInfo->getPreprocessed()) { baseComplexTypeInfo = 0; } } } // if not found, 2 possibilities: // 1: ComplexType in question has not been compiled yet; // 2: base is SimpleType; if (!baseComplexTypeInfo && !baseDTValidator) { baseDTValidator = getDatatypeValidator(uriStr, localPart); if (baseDTValidator == 0) { DOMElement* baseTypeNode = fSchemaInfo->getTopLevelComponent(SchemaInfo::C_ComplexType, SchemaSymbols::fgELT_COMPLEXTYPE, localPart, &fSchemaInfo); if (baseTypeNode != 0) { int baseTypeSymbol = traverseComplexTypeDecl(baseTypeNode); baseComplexTypeInfo = fComplexTypeRegistry->get(fStringPool->getValueForId(baseTypeSymbol)); } else { baseTypeNode = fSchemaInfo->getTopLevelComponent(SchemaInfo::C_SimpleType, SchemaSymbols::fgELT_SIMPLETYPE, localPart, &fSchemaInfo); if (baseTypeNode != 0) { baseDTValidator = traverseSimpleTypeDecl(baseTypeNode); if (baseDTValidator == 0) { // restore schema information, if necessary if (saveInfo != fSchemaInfo) { restoreSchemaInfo(saveInfo, infoType, saveScope); } reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::TypeNotFound, uriStr, localPart, uriStr); throw TraverseSchema::InvalidComplexTypeInfo; } } else { // restore schema information, if necessary if (saveInfo != fSchemaInfo) { restoreSchemaInfo(saveInfo, infoType, saveScope); } reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::BaseTypeNotFound, baseName); throw TraverseSchema::InvalidComplexTypeInfo; } } } } // end if // restore schema information, if necessary if (saveInfo != fSchemaInfo) { restoreSchemaInfo(saveInfo, infoType, saveScope); } typeInfo->setBaseComplexTypeInfo(baseComplexTypeInfo); typeInfo->setBaseDatatypeValidator(baseDTValidator); } ComplexTypeInfo* TraverseSchema::getTypeInfoFromNS(const DOMElement* const elem, const XMLCh* const uriStr, const XMLCh* const localPart) { Grammar* grammar = fGrammarResolver->getGrammar(uriStr); if (grammar != 0 && grammar->getGrammarType() == Grammar::SchemaGrammarType) { fBuffer.set(uriStr); fBuffer.append(chComma); fBuffer.append(localPart); ComplexTypeInfo* typeInfo = ((SchemaGrammar*)grammar)->getComplexTypeRegistry()->get(fBuffer.getRawBuffer()); return typeInfo; } else { reportSchemaError(elem, XMLUni::fgValidityDomain, XMLValid::GrammarNotFound, uriStr); } return 0; } void TraverseSchema::processAttributes(const DOMElement* const elem, const DOMElement* const attElem, ComplexTypeInfo* const typeInfo, const bool isBaseAnyType) { // If we do not have a complexTypeInfo, then what is the point of // processing. if (typeInfo == 0) { return; } ComplexTypeInfo* baseTypeInfo = typeInfo->getBaseComplexTypeInfo(); if (baseTypeInfo && baseTypeInfo->getPreprocessed()) throw TraverseSchema::RecursingElement; const DOMElement* child = attElem; SchemaAttDef* attWildCard = 0; Janitor janAttWildCard(0); XercesAttGroupInfo* attGroupInfo = 0; ValueVectorOf attGroupList(4, fGrammarPoolMemoryManager); for (; child != 0; child = XUtil::getNextSiblingElement(child)) { const XMLCh* childName = child->getLocalName(); if (XMLString::equals(childName, SchemaSymbols::fgELT_ATTRIBUTE)) { if(attWildCard) reportSchemaError(child, XMLUni::fgXMLErrDomain, XMLErrs::AnyAttributeBeforeAttribute); traverseAttributeDecl(child, typeInfo); } else if (XMLString::equals(childName, SchemaSymbols::fgELT_ATTRIBUTEGROUP)) { if(attWildCard) reportSchemaError(child, XMLUni::fgXMLErrDomain, XMLErrs::AnyAttributeBeforeAttribute); attGroupInfo = traverseAttributeGroupDecl(child, typeInfo); if (attGroupInfo && !attGroupList.containsElement(attGroupInfo)) { attGroupList.addElement(attGroupInfo); } } else if (XMLString::equals(childName, SchemaSymbols::fgELT_ANYATTRIBUTE) ) { if(attWildCard) reportSchemaError(child, XMLUni::fgXMLErrDomain, XMLErrs::DuplicateAnyAttribute); attWildCard = traverseAnyAttribute(child); janAttWildCard.reset(attWildCard); } else { reportSchemaError(child, XMLUni::fgXMLErrDomain, XMLErrs::InvalidChildInComplexType, childName); } } // ------------------------------------------------------------- // Handle wild card/any attribute // ------------------------------------------------------------- int derivedBy = typeInfo->getDerivedBy(); XMLSize_t attGroupListSize = attGroupList.size(); if (attGroupListSize) { SchemaAttDef* completeWildCard = 0; Janitor janCompleteWildCard(0); XMLAttDef::DefAttTypes defAttType = XMLAttDef::Default; bool defAttTypeSet = false; for (XMLSize_t i=0; i < attGroupListSize; i++) { attGroupInfo = attGroupList.elementAt(i); XMLSize_t anyAttCount = attGroupInfo->anyAttributeCount(); if (anyAttCount) { if (!defAttTypeSet) { defAttType = (attWildCard) ? attWildCard->getDefaultType() : attGroupInfo->anyAttributeAt(0)->getDefaultType(); defAttTypeSet = true; } SchemaAttDef* attGroupWildCard = attGroupInfo->getCompleteWildCard(); if (completeWildCard) { attWildCardIntersection(completeWildCard, attGroupWildCard); } else { completeWildCard = new (fGrammarPoolMemoryManager) SchemaAttDef(attGroupWildCard); janCompleteWildCard.reset(completeWildCard); } } } if (completeWildCard) { if (attWildCard) { attWildCardIntersection(attWildCard, completeWildCard); } else { attWildCard = completeWildCard; janCompleteWildCard.orphan(); janAttWildCard.reset(attWildCard); } attWildCard->setDefaultType(defAttType); } } SchemaAttDef* baseAttWildCard = (baseTypeInfo) ? baseTypeInfo->getAttWildCard() : 0; Janitor janBaseAttWildCard(0); if (derivedBy == SchemaSymbols::XSD_EXTENSION) { if (isBaseAnyType) { baseAttWildCard = new (fGrammarPoolMemoryManager) SchemaAttDef(XMLUni::fgZeroLenString, XMLUni::fgZeroLenString, fEmptyNamespaceURI, XMLAttDef::Any_Any, XMLAttDef::ProcessContents_Lax, fGrammarPoolMemoryManager); janBaseAttWildCard.reset(baseAttWildCard); } if (baseAttWildCard && attWildCard) { XMLAttDef::DefAttTypes saveDefType = attWildCard->getDefaultType(); attWildCardUnion(attWildCard, baseAttWildCard); attWildCard->setDefaultType(saveDefType); } } // ------------------------------------------------------------- // insert wildcard attribute // ------------------------------------------------------------- if (attWildCard) { typeInfo->setAttWildCard(attWildCard); janAttWildCard.orphan(); if (attWildCard->getType() == XMLAttDef::AttTypes_Unknown) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::NotExpressibleWildCardIntersection); } } else if (baseAttWildCard && derivedBy == SchemaSymbols::XSD_EXTENSION) { if (isBaseAnyType) { typeInfo->setAttWildCard(baseAttWildCard); janBaseAttWildCard.orphan(); } else { SchemaAttDef* newWildCard = new (fGrammarPoolMemoryManager) SchemaAttDef(baseAttWildCard); typeInfo->setAttWildCard(newWildCard); } } // ------------------------------------------------------------- // Check attributes derivation OK // ------------------------------------------------------------- bool baseWithAttributes = (baseTypeInfo && baseTypeInfo->hasAttDefs()); bool childWithAttributes = (typeInfo->hasAttDefs() || typeInfo->getAttWildCard()); if (derivedBy == SchemaSymbols::XSD_RESTRICTION && childWithAttributes) { if (!baseWithAttributes && !baseAttWildCard) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::BadAttDerivation_1); } else { checkAttDerivationOK(elem, baseTypeInfo, typeInfo); } } // ------------------------------------------------------------- // merge in base type's attribute decls // ------------------------------------------------------------- if (baseTypeInfo && baseTypeInfo->hasAttDefs()) { SchemaAttDefList& baseAttList = (SchemaAttDefList&) baseTypeInfo->getAttDefList(); for (XMLSize_t i=0; igetLocalPart(); // if found a duplicate, then skip the one from the base type if (typeInfo->getAttDef(localPart, attName->getURI()) != 0) { if (derivedBy == SchemaSymbols::XSD_EXTENSION) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::DuplicateAttInDerivation, localPart); } continue; } if (attDef.getDefaultType() != XMLAttDef::Prohibited) { SchemaAttDef* newAttDef = new (fGrammarPoolMemoryManager) SchemaAttDef(attName->getPrefix(), attName->getLocalPart(), attName->getURI(), attDef.getValue(), attDef.getType(), attDef.getDefaultType(), attDef.getEnumeration(), fGrammarPoolMemoryManager); newAttDef->setDatatypeValidator(attDef.getDatatypeValidator()); typeInfo->addAttDef(newAttDef); if (attDef.getBaseAttDecl()) newAttDef->setBaseAttDecl(attDef.getBaseAttDecl()); else newAttDef->setBaseAttDecl(&attDef); } } } } void TraverseSchema::defaultComplexTypeInfo(ComplexTypeInfo* const typeInfo) { if (typeInfo) { typeInfo->setDerivedBy(0); typeInfo->setContentType(SchemaElementDecl::Any); typeInfo->setDatatypeValidator(0); typeInfo->setContentSpec(0); typeInfo->setBaseComplexTypeInfo(0); typeInfo->setBaseDatatypeValidator(0); } } InputSource* TraverseSchema::resolveSchemaLocation(const XMLCh* const loc, const XMLResourceIdentifier::ResourceIdentifierType resourceIdentitiferType, const XMLCh* const nameSpace) { // ------------------------------------------------------------------ // Create an input source // ------------------------------------------------------------------ InputSource* srcToFill = 0; XMLCh* normalizedURI = 0; if (loc) { XMLString::removeChar(loc, 0xFFFF, fBuffer); normalizedURI = fBuffer.getRawBuffer(); } if (fEntityHandler){ XMLResourceIdentifier resourceIdentifier(resourceIdentitiferType, normalizedURI, nameSpace, 0, fSchemaInfo->getCurrentSchemaURL(), fLocator); srcToFill = fEntityHandler->resolveEntity(&resourceIdentifier); } // If they didn't create a source via the entity resolver, then we // have to create one on our own if we have the schemaLocation (with // the update resolveEntity accepting nameSpace, a schemImport could // pass a null schemaLocation) if (!srcToFill && loc) { if (fScanner->getDisableDefaultEntityResolution()) return 0; XMLURL urlTmp(fMemoryManager); if ((!urlTmp.setURL(fSchemaInfo->getCurrentSchemaURL(), normalizedURI, urlTmp)) || (urlTmp.isRelative())) { if (!fScanner->getStandardUriConformant()) { XMLCh* tempURI = XMLString::replicate(normalizedURI, fMemoryManager); ArrayJanitor tempURIName(tempURI, fMemoryManager); XMLUri::normalizeURI(tempURI, fBuffer); srcToFill = new (fMemoryManager) LocalFileInputSource ( fSchemaInfo->getCurrentSchemaURL() , fBuffer.getRawBuffer() , fMemoryManager ); } else ThrowXMLwithMemMgr(MalformedURLException, XMLExcepts::URL_MalformedURL, fMemoryManager); } else { if (fScanner->getStandardUriConformant() && urlTmp.hasInvalidChar()) ThrowXMLwithMemMgr(MalformedURLException, XMLExcepts::URL_MalformedURL, fMemoryManager); srcToFill = new (fMemoryManager) URLInputSource(urlTmp, fMemoryManager); } } return srcToFill; } void TraverseSchema::restoreSchemaInfo(SchemaInfo* const toRestore, SchemaInfo::ListType const aListType, const unsigned int saveScope) { if (aListType == SchemaInfo::IMPORT) { // restore grammar info int targetNSURI = toRestore->getTargetNSURI(); fSchemaGrammar->setScopeCount (fScopeCount); fSchemaGrammar->setAnonTypeCount (fAnonXSTypeCount); fSchemaGrammar = (SchemaGrammar*) fGrammarResolver->getGrammar(toRestore->getTargetNSURIString()); fScopeCount = fSchemaGrammar->getScopeCount (); fAnonXSTypeCount = fSchemaGrammar->getAnonTypeCount (); fTargetNSURI = targetNSURI; fCurrentScope = saveScope; fDatatypeRegistry = fSchemaGrammar->getDatatypeRegistry(); fTargetNSURIString = fSchemaGrammar->getTargetNamespace(); fGroupRegistry = fSchemaGrammar->getGroupInfoRegistry(); fAttGroupRegistry = fSchemaGrammar->getAttGroupInfoRegistry(); fAttributeDeclRegistry = fSchemaGrammar->getAttributeDeclRegistry(); fComplexTypeRegistry = fSchemaGrammar->getComplexTypeRegistry(); fValidSubstitutionGroups = fSchemaGrammar->getValidSubstitutionGroups(); } fSchemaInfo = toRestore; } bool TraverseSchema::emptiableParticle(const ContentSpecNode* const specNode) { if (!fFullConstraintChecking || !specNode || (specNode->getMinTotalRange() == 0)) { return true; } return false; } void TraverseSchema::checkFixedFacet(const DOMElement* const elem, const XMLCh* const facetName, const DatatypeValidator* const baseDV, unsigned int& flags) { const XMLCh* fixedFacet = getElementAttValue(elem, SchemaSymbols::fgATT_FIXED); if ((fixedFacet && *fixedFacet) && (XMLString::equals(fixedFacet, SchemaSymbols::fgATTVAL_TRUE) || XMLString::equals(fixedFacet, fgValueOne))) { if (XMLString::equals(SchemaSymbols::fgELT_LENGTH, facetName)) { flags |= DatatypeValidator::FACET_LENGTH; } if (XMLString::equals(SchemaSymbols::fgELT_MINLENGTH, facetName)) { flags |= DatatypeValidator::FACET_MINLENGTH; } else if (XMLString::equals(SchemaSymbols::fgELT_MAXLENGTH, facetName)) { flags |= DatatypeValidator::FACET_MAXLENGTH; } else if (XMLString::equals(SchemaSymbols::fgELT_MAXEXCLUSIVE, facetName)) { flags |= DatatypeValidator::FACET_MAXEXCLUSIVE; } else if (XMLString::equals(SchemaSymbols::fgELT_MAXINCLUSIVE, facetName)) { flags |= DatatypeValidator::FACET_MAXINCLUSIVE; } else if (XMLString::equals(SchemaSymbols::fgELT_MINEXCLUSIVE, facetName)) { flags |= DatatypeValidator::FACET_MINEXCLUSIVE; } else if (XMLString::equals(SchemaSymbols::fgELT_MININCLUSIVE, facetName)) { flags |= DatatypeValidator::FACET_MININCLUSIVE; } else if (XMLString::equals(SchemaSymbols::fgELT_TOTALDIGITS, facetName)) { flags |= DatatypeValidator::FACET_TOTALDIGITS; } else if (XMLString::equals(SchemaSymbols::fgELT_FRACTIONDIGITS, facetName)) { flags |= DatatypeValidator::FACET_FRACTIONDIGITS; } else if ((XMLString::equals(SchemaSymbols::fgELT_WHITESPACE, facetName)) && baseDV->getType() == DatatypeValidator::String) { flags |= DatatypeValidator::FACET_WHITESPACE; } } } void TraverseSchema::buildValidSubstitutionListB(const DOMElement* const elem, SchemaElementDecl* const elemDecl, SchemaElementDecl* const subsElemDecl) { SchemaElementDecl* chainElemDecl = subsElemDecl->getSubstitutionGroupElem(); while (chainElemDecl) { int chainElemURI = chainElemDecl->getURI(); XMLCh* chainElemName = chainElemDecl->getBaseName(); ValueVectorOf* validSubsElements = fValidSubstitutionGroups->get(chainElemName, chainElemURI); if (!validSubsElements) { if (fTargetNSURI == chainElemURI) { break; // an error must have occured } SchemaGrammar* aGrammar = (SchemaGrammar*) fGrammarResolver->getGrammar(fURIStringPool->getValueForId(chainElemURI)); if (!aGrammar) break; validSubsElements = aGrammar->getValidSubstitutionGroups()->get(chainElemName, chainElemURI); if (!validSubsElements) { break; } validSubsElements = new (fGrammarPoolMemoryManager) ValueVectorOf(*validSubsElements); fValidSubstitutionGroups->put((void*) chainElemName, chainElemURI, validSubsElements); } if (validSubsElements->containsElement(elemDecl) || !isSubstitutionGroupValid(elem, chainElemDecl, elemDecl->getComplexTypeInfo(), elemDecl->getDatatypeValidator(), 0, false)) { break; } validSubsElements->addElement(elemDecl); // update related subs. info in case of circular import BaseRefVectorEnumerator importingEnum = fSchemaInfo->getImportingListEnumerator(); while (importingEnum.hasMoreElements()) { const SchemaInfo& curRef = importingEnum.nextElement(); SchemaGrammar* aGrammar = (SchemaGrammar*) fGrammarResolver->getGrammar(curRef.getTargetNSURIString()); ValueVectorOf* subsElemList = aGrammar->getValidSubstitutionGroups()->get(chainElemName, chainElemURI); if (subsElemList && !subsElemList->containsElement(elemDecl)) { subsElemList->addElement(elemDecl); } } chainElemDecl = chainElemDecl->getSubstitutionGroupElem(); } } void TraverseSchema::buildValidSubstitutionListF(const DOMElement* const elem, SchemaElementDecl* const elemDecl, SchemaElementDecl* const subsElemDecl) { int elemURI = elemDecl->getURI(); XMLCh* elemName = elemDecl->getBaseName(); ValueVectorOf* validSubsElements =fValidSubstitutionGroups->get(elemName, elemURI); if (validSubsElements) { int subsElemURI = subsElemDecl->getURI(); XMLCh* subsElemName = subsElemDecl->getBaseName(); ValueVectorOf* validSubs = fValidSubstitutionGroups->get(subsElemName, subsElemURI); if (!validSubs) { if (fTargetNSURI == subsElemURI) { return; // an error must have occured } SchemaGrammar* aGrammar = (SchemaGrammar*) fGrammarResolver->getGrammar(fURIStringPool->getValueForId(subsElemURI)); if (!aGrammar) return; validSubs = aGrammar->getValidSubstitutionGroups()->get(subsElemName, subsElemURI); if (!validSubs) { return; } validSubs = new (fGrammarPoolMemoryManager) ValueVectorOf(*validSubs); fValidSubstitutionGroups->put((void*) subsElemName, subsElemURI, validSubs); } XMLSize_t elemSize = validSubsElements->size(); for (XMLSize_t i=0; ielementAt(i); if (validSubs->containsElement(chainElem)) { continue; } if (isSubstitutionGroupValid(elem, subsElemDecl, chainElem->getComplexTypeInfo(), chainElem->getDatatypeValidator(), 0, false)) { validSubs->addElement(chainElem); buildValidSubstitutionListB(elem, chainElem, subsElemDecl); } } } } void TraverseSchema::checkEnumerationRequiredNotation(const DOMElement* const elem, const XMLCh* const name, const XMLCh* const type) { const XMLCh* localPart = getLocalPart(type); if (XMLString::equals(localPart, XMLUni::fgNotationString)) { const XMLCh* prefix = getPrefix(type); const XMLCh* typeURI = resolvePrefixToURI(elem, prefix); if (XMLString::equals(typeURI, SchemaSymbols::fgURI_SCHEMAFORSCHEMA)) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::NoNotationType, name); } } } XercesGroupInfo* TraverseSchema::processGroupRef(const DOMElement* const elem, const XMLCh* const refName) { NamespaceScopeManager nsMgr(elem, fSchemaInfo, this); DOMElement* content = checkContent(elem, XUtil::getFirstChildElement(elem), true); Janitor janAnnot(fAnnotation); if (content != 0) { reportSchemaError(elem, XMLUni::fgValidityDomain, XMLValid::NoContentForRef, SchemaSymbols::fgELT_GROUP); } const XMLCh* prefix = getPrefix(refName); const XMLCh* localPart = getLocalPart(refName); const XMLCh* uriStr = resolvePrefixToURI(elem, prefix); fBuffer.set(uriStr); fBuffer.append(chComma); fBuffer.append(localPart); unsigned int nameIndex = fStringPool->addOrFind(fBuffer.getRawBuffer()); if (fCurrentGroupStack->containsElement(nameIndex)) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::NoCircularDefinition, localPart); return 0; } XercesGroupInfo* groupInfo = 0; SchemaInfo* saveInfo = fSchemaInfo; SchemaInfo::ListType infoType = SchemaInfo::INCLUDE; unsigned int saveScope = fCurrentScope; //if from another target namespace if (!XMLString::equals(uriStr, fTargetNSURIString)) { // Make sure that we have an explicit import statement. // Clause 4 of Schema Representation Constraint: // http://www.w3.org/TR/xmlschema-1/#src-resolve unsigned int uriId = fURIStringPool->addOrFind(uriStr); if (!isImportingNS(uriId)) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::InvalidNSReference, uriStr); return 0; } Grammar* aGrammar = fGrammarResolver->getGrammar(uriStr); if (!aGrammar || aGrammar->getGrammarType() != Grammar::SchemaGrammarType) { reportSchemaError(elem, XMLUni::fgValidityDomain, XMLValid::GrammarNotFound, uriStr); return 0; } groupInfo = ((SchemaGrammar*)aGrammar)->getGroupInfoRegistry()->get(fStringPool->getValueForId(nameIndex)); if (!groupInfo) { SchemaInfo* impInfo = fSchemaInfo->getImportInfo(fURIStringPool->addOrFind(uriStr)); if (!impInfo || impInfo->getProcessed()) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::DeclarationNotFound, SchemaSymbols::fgELT_GROUP, uriStr, localPart); return 0; } infoType = SchemaInfo::IMPORT; restoreSchemaInfo(impInfo, infoType); } } else { groupInfo = fGroupRegistry->get(fStringPool->getValueForId(nameIndex)); } if (!groupInfo) { DOMElement* groupElem = fSchemaInfo->getTopLevelComponent(SchemaInfo::C_Group, SchemaSymbols::fgELT_GROUP, localPart, &fSchemaInfo); if (groupElem != 0) { groupInfo = traverseGroupDecl(groupElem); // restore schema information restoreSchemaInfo(saveInfo, infoType, saveScope); if (groupInfo && (fCurrentGroupInfo || infoType == SchemaInfo::IMPORT)) { copyGroupElements(elem, groupInfo, fCurrentGroupInfo, (infoType == SchemaInfo::IMPORT) ? fCurrentComplexType : 0); } return groupInfo; } else { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::DeclarationNotFound, SchemaSymbols::fgELT_GROUP, uriStr, localPart); } // restore schema information, if necessary if (saveInfo != fSchemaInfo) { restoreSchemaInfo(saveInfo, infoType, saveScope); } } else { copyGroupElements(elem, groupInfo, fCurrentGroupInfo, fCurrentComplexType); } return groupInfo; } XercesAttGroupInfo* TraverseSchema::processAttributeGroupRef(const DOMElement* const elem, const XMLCh* const refName, ComplexTypeInfo* const typeInfo) { NamespaceScopeManager nsMgr(elem, fSchemaInfo, this); if (checkContent(elem, XUtil::getFirstChildElement(elem), true) != 0) { reportSchemaError(elem ,XMLUni::fgValidityDomain, XMLValid::NoContentForRef, SchemaSymbols::fgELT_ATTRIBUTEGROUP); } Janitor janAnnot(fAnnotation); const XMLCh* prefix = getPrefix(refName); const XMLCh* localPart = getLocalPart(refName); const XMLCh* uriStr = resolvePrefixToURI(elem, prefix); XercesAttGroupInfo* attGroupInfo = 0; SchemaInfo* saveInfo = fSchemaInfo; SchemaInfo::ListType infoType = SchemaInfo::INCLUDE; unsigned int saveScope = fCurrentScope; if (!XMLString::equals(uriStr, fTargetNSURIString)) { // Make sure that we have an explicit import statement. // Clause 4 of Schema Representation Constraint: // http://www.w3.org/TR/xmlschema-1/#src-resolve unsigned int uriId = fURIStringPool->addOrFind(uriStr); if (!isImportingNS(uriId)) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::InvalidNSReference, uriStr); return 0; } attGroupInfo = traverseAttributeGroupDeclNS(elem, uriStr, localPart); if (!attGroupInfo) { SchemaInfo* impInfo = fSchemaInfo->getImportInfo(fURIStringPool->addOrFind(uriStr)); if (!impInfo || impInfo->getProcessed()) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::DeclarationNotFound, SchemaSymbols::fgELT_ATTRIBUTEGROUP, uriStr, localPart); return 0; } infoType = SchemaInfo::IMPORT; restoreSchemaInfo(impInfo, infoType); } } else { attGroupInfo = fAttGroupRegistry->get(localPart); } if (!attGroupInfo) { // traverse top level attributeGroup - if found DOMElement* attGroupElem = fSchemaInfo->getTopLevelComponent(SchemaInfo::C_AttributeGroup, SchemaSymbols::fgELT_ATTRIBUTEGROUP, localPart, &fSchemaInfo); if (attGroupElem != 0) { // circular attribute check if (fDeclStack->containsElement(attGroupElem)) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::NoCircularDefinition, refName); return 0; } attGroupInfo = traverseAttributeGroupDecl(attGroupElem, typeInfo, true); if (attGroupInfo && fCurrentAttGroupInfo) { copyAttGroupAttributes(elem, attGroupInfo, fCurrentAttGroupInfo, 0); } // restore schema information, if necessary if (saveInfo != fSchemaInfo) { restoreSchemaInfo(saveInfo, infoType, saveScope); } return attGroupInfo; } else { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::DeclarationNotFound, SchemaSymbols::fgELT_ATTRIBUTEGROUP, uriStr, localPart); } } if (attGroupInfo) { copyAttGroupAttributes(elem, attGroupInfo, fCurrentAttGroupInfo, typeInfo); } // restore schema information, if necessary if (saveInfo != fSchemaInfo) { restoreSchemaInfo(saveInfo, infoType); } return attGroupInfo; } void TraverseSchema::processElements(const DOMElement* const elem, ComplexTypeInfo* const baseTypeInfo, ComplexTypeInfo* const newTypeInfo) { NamespaceScopeManager nsMgr(elem, fSchemaInfo, this); XMLSize_t elemCount = baseTypeInfo->elementCount(); if (elemCount) { int newTypeScope = newTypeInfo->getScopeDefined(); int schemaURI = fURIStringPool->addOrFind(SchemaSymbols::fgURI_SCHEMAFORSCHEMA); for (XMLSize_t i=0; i < elemCount; i++) { SchemaGrammar* aGrammar = fSchemaGrammar; SchemaElementDecl* elemDecl = baseTypeInfo->elementAt(i); int elemURI = elemDecl->getURI(); unsigned int elemScope = elemDecl->getEnclosingScope(); if (elemScope != Grammar::TOP_LEVEL_SCOPE) { if (elemURI != fTargetNSURI && elemURI != schemaURI && elemURI != fEmptyNamespaceURI) { Grammar* aGrammar = fGrammarResolver->getGrammar(fURIStringPool->getValueForId(elemURI)); if (!aGrammar || aGrammar->getGrammarType() != Grammar::SchemaGrammarType) { continue; // REVISIT - error message } } const XMLCh* localPart = elemDecl->getBaseName(); const SchemaElementDecl* other = (SchemaElementDecl*) aGrammar->getElemDecl(elemURI, localPart, 0, newTypeScope); if (other) { if (elemDecl->getComplexTypeInfo() != other->getComplexTypeInfo() || elemDecl->getDatatypeValidator() != other->getDatatypeValidator()) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::DuplicateElementDeclaration, localPart); } continue; } elemDecl->setEnclosingScope(newTypeScope); ((SchemaGrammar*) aGrammar)->putGroupElemDecl(elemDecl); elemDecl->setEnclosingScope(elemScope); } newTypeInfo->addElement(elemDecl); } } } void TraverseSchema::processElements(const DOMElement* const elem, XercesGroupInfo* const fromGroup, ComplexTypeInfo* const typeInfo) { NamespaceScopeManager nsMgr(elem, fSchemaInfo, this); XMLSize_t elemCount = fromGroup->elementCount(); int newScope = typeInfo->getScopeDefined(); for (XMLSize_t i = 0; i < elemCount; i++) { SchemaElementDecl* elemDecl = fromGroup->elementAt(i); unsigned int elemScope = elemDecl->getEnclosingScope(); if (elemScope != Grammar::TOP_LEVEL_SCOPE) { int elemURI = elemDecl->getURI(); const XMLCh* localPart = elemDecl->getBaseName(); const SchemaElementDecl* other = (SchemaElementDecl*) fSchemaGrammar->getElemDecl(elemURI, localPart, 0, newScope); if (other) { if (elemDecl->getComplexTypeInfo() != other->getComplexTypeInfo() || elemDecl->getDatatypeValidator() != other->getDatatypeValidator()) { reportSchemaError( elem, XMLUni::fgXMLErrDomain , XMLErrs::DuplicateElementDeclaration, localPart); } continue; } elemDecl->setEnclosingScope(newScope); fSchemaGrammar->putGroupElemDecl(elemDecl); elemDecl->setEnclosingScope(elemScope); typeInfo->addElement(elemDecl); } } } void TraverseSchema::copyGroupElements(const DOMElement* const elem, XercesGroupInfo* const fromGroup, XercesGroupInfo* const toGroup, ComplexTypeInfo* const typeInfo) { XMLSize_t elemCount = fromGroup->elementCount(); int newScope = (typeInfo) ? typeInfo->getScopeDefined() : 0; if (typeInfo) fromGroup->setCheckElementConsistency(false); for (XMLSize_t i = 0; i < elemCount; i++) { SchemaElementDecl* elemDecl = fromGroup->elementAt(i); if (typeInfo) { unsigned int elemScope = elemDecl->getEnclosingScope(); if (elemScope != Grammar::TOP_LEVEL_SCOPE) { int elemURI = elemDecl->getURI(); const XMLCh* localPart = elemDecl->getBaseName(); const SchemaElementDecl* other = (SchemaElementDecl*) fSchemaGrammar->getElemDecl(elemURI, localPart, 0, newScope); if (other) { if (elemDecl->getComplexTypeInfo() != other->getComplexTypeInfo() || elemDecl->getDatatypeValidator() != other->getDatatypeValidator()) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::DuplicateElementDeclaration, localPart); } continue; } elemDecl->setEnclosingScope(newScope); fSchemaGrammar->putGroupElemDecl(elemDecl); elemDecl->setEnclosingScope(elemScope); } typeInfo->addElement(elemDecl); } if (toGroup) { toGroup->addElement(elemDecl); } } } void TraverseSchema::copyAttGroupAttributes(const DOMElement* const elem, XercesAttGroupInfo* const fromAttGroup, XercesAttGroupInfo* const toAttGroup, ComplexTypeInfo* const typeInfo) { XMLSize_t attCount = fromAttGroup->attributeCount(); for (XMLSize_t i=0; i < attCount; i++) { SchemaAttDef* attDef = fromAttGroup->attributeAt(i); QName* attName = attDef->getAttName(); const XMLCh* localPart = attName->getLocalPart(); DatatypeValidator* attDV = attDef->getDatatypeValidator(); if (typeInfo) { if (typeInfo->getAttDef(localPart, attName->getURI())) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::DuplicateAttribute, localPart); continue; } if (attDV && attDV->getType() == DatatypeValidator::ID) { if (typeInfo->containsAttWithTypeId()) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::AttDeclPropCorrect5, localPart); continue; } typeInfo->setAttWithTypeId(true); } SchemaAttDef* clonedAttDef = new (fGrammarPoolMemoryManager) SchemaAttDef(attDef); typeInfo->addAttDef(clonedAttDef); if (!clonedAttDef->getBaseAttDecl()) clonedAttDef->setBaseAttDecl(attDef); if (toAttGroup) { toAttGroup->addAttDef(attDef, true); } } else { if (toAttGroup->containsAttribute(localPart, attName->getURI())) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::DuplicateAttribute, localPart); continue; } if (attDV && attDV->getType() == DatatypeValidator::ID) { if (toAttGroup->containsTypeWithId()) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::AttGrpPropCorrect3, localPart); continue; } toAttGroup->setTypeWithId(true); } toAttGroup->addAttDef(attDef, true); } } if (toAttGroup) { XMLSize_t anyAttCount = fromAttGroup->anyAttributeCount(); for (XMLSize_t j=0; j < anyAttCount; j++) { toAttGroup->addAnyAttDef(fromAttGroup->anyAttributeAt(j), true); } } } void TraverseSchema::attWildCardIntersection(SchemaAttDef* const resultWildCard, const SchemaAttDef* const compareWildCard) { XMLAttDef::AttTypes typeR = resultWildCard->getType(); XMLAttDef::AttTypes typeC = compareWildCard->getType(); //If either O1 or O2 is any, then the other must be the value. if (typeC == XMLAttDef::Any_Any || typeR == XMLAttDef::AttTypes_Unknown) { return; } if (typeR == XMLAttDef::Any_Any || typeC == XMLAttDef::AttTypes_Unknown) { resultWildCard->resetNamespaceList(); copyWildCardData(compareWildCard, resultWildCard); return; } // If either O1 or O2 is a pair of not and a namespace name and the other // is a set, then that set, minus the negated namespace name if it was in // is the value if ((typeC == XMLAttDef::Any_Other && typeR == XMLAttDef::Any_List) || (typeR == XMLAttDef::Any_Other && typeC == XMLAttDef::Any_List)) { unsigned int compareURI = 0; ValueVectorOf* nameURIList = 0; if (typeC == XMLAttDef::Any_List) { nameURIList = compareWildCard->getNamespaceList(); compareURI = resultWildCard->getAttName()->getURI(); } else { nameURIList = resultWildCard->getNamespaceList(); compareURI = compareWildCard->getAttName()->getURI(); } XMLSize_t listSize = (nameURIList) ? nameURIList->size() : 0; if (listSize) { bool found = false; ValueVectorOf tmpURIList(listSize, fGrammarPoolMemoryManager); for (XMLSize_t i=0; i < listSize; i++) { unsigned int nameURI = nameURIList->elementAt(i); if (nameURI != compareURI && nameURI != (unsigned int) fEmptyNamespaceURI) { tmpURIList.addElement(nameURI); } else { found = true; } } if (found || typeC == XMLAttDef::Any_List) { resultWildCard->setNamespaceList(&tmpURIList); } } if (typeC == XMLAttDef::Any_List) { copyWildCardData(compareWildCard, resultWildCard); } return; } // If both O1 and O2 are sets, then the intersection of those sets must be // the value. if (typeR == XMLAttDef::Any_List && typeC == XMLAttDef::Any_List) { ValueVectorOf* uriListR = resultWildCard->getNamespaceList(); ValueVectorOf* uriListC = compareWildCard->getNamespaceList(); XMLSize_t listSize = (uriListC) ? uriListC->size() : 0; if (listSize) { ValueVectorOf tmpURIList(listSize, fGrammarPoolMemoryManager); for (XMLSize_t i=0; i < listSize; i++) { unsigned int uriName = uriListC->elementAt(i); if (uriListR && uriListR->containsElement(uriName)) { tmpURIList.addElement(uriName); } } resultWildCard->setNamespaceList(&tmpURIList); } else { resultWildCard->resetNamespaceList(); } return; } // If the two are negations of different namespace names, then: // if one is a negation of absent, then result is negation of namespace // else intersection is not expressible. if (typeR == XMLAttDef::Any_Other && typeC == XMLAttDef::Any_Other) { QName* qnameR = resultWildCard->getAttName(); if (qnameR->getURI() != compareWildCard->getAttName()->getURI()) { if (qnameR->getURI() == (unsigned int)fEmptyNamespaceURI) { qnameR->setURI(compareWildCard->getAttName()->getURI()); } else if (compareWildCard->getAttName()->getURI() != (unsigned int)fEmptyNamespaceURI) { qnameR->setURI(fEmptyNamespaceURI); resultWildCard->setType(XMLAttDef::AttTypes_Unknown); } } } } void TraverseSchema::attWildCardUnion(SchemaAttDef* const resultWildCard, const SchemaAttDef* const compareWildCard) { XMLAttDef::AttTypes typeR = resultWildCard->getType(); XMLAttDef::AttTypes typeC = compareWildCard->getType(); //If either O1 or O2 is any, then the other must be the value. if (typeR == XMLAttDef::Any_Any || typeR == XMLAttDef::AttTypes_Unknown) { return; } if (typeC == XMLAttDef::Any_Any || typeC == XMLAttDef::AttTypes_Unknown) { resultWildCard->resetNamespaceList(); copyWildCardData(compareWildCard, resultWildCard); return; } // If both O1 and O2 are sets, then the union of those sets must be // the value. if (typeR == XMLAttDef::Any_List && typeC == XMLAttDef::Any_List) { ValueVectorOf* uriListR = resultWildCard->getNamespaceList(); ValueVectorOf* uriListC = compareWildCard->getNamespaceList(); XMLSize_t listSizeC = (uriListC) ? uriListC->size() : 0; if (listSizeC) { if (!uriListR || !uriListR->size()) { resultWildCard->setNamespaceList(uriListC); return; } ValueVectorOf tmpURIList(*uriListR); for (XMLSize_t i = 0; i < listSizeC; i++) { unsigned int uriName = uriListC->elementAt(i); if (!uriListR->containsElement(uriName)) { tmpURIList.addElement(uriName); } } resultWildCard->setNamespaceList(&tmpURIList); } return; } // If the two are negations of different namespace names, then not and // absent must be the value if (typeR == XMLAttDef::Any_Other && typeC == XMLAttDef::Any_Other) { QName* qnameR = resultWildCard->getAttName(); if (qnameR->getURI() != compareWildCard->getAttName()->getURI()) { qnameR->setURI(fEmptyNamespaceURI); resultWildCard->setType(XMLAttDef::Any_Other); } } // 5. If either O1 or O2 is a pair of not and a namespace name and the // other is a set, then: // 1. If the set includes both the negated namespace name and absent // then any must be the value. // 2. If the set includes the negated namespace name but not absent, // then a pair of not and absent must be the value. // 3. If the set includes absent but not the negated namespace name, // then the union is not expressible. // 4. If the set does not include either the negated namespace or // absent, then whichever of O1 or O2 is a pair of not and a // namespace name. // // 6. If either O1 or O2 is a pair of not and absent and the other is a // set, then: // 1. If the set includes absent then any must be the value. // 2. If the set does not include absent, then a pair of not and // absent. if ((typeC == XMLAttDef::Any_Other && typeR == XMLAttDef::Any_List) || (typeR == XMLAttDef::Any_Other && typeC == XMLAttDef::Any_List)) { ValueVectorOf* nameURIList = 0; QName* attNameR = resultWildCard->getAttName(); unsigned int compareURI = 0; if (typeC == XMLAttDef::Any_List) { nameURIList = compareWildCard->getNamespaceList(); compareURI = attNameR->getURI(); } else { nameURIList = resultWildCard->getNamespaceList(); compareURI = compareWildCard->getAttName()->getURI(); } // 6. not and absent if (compareURI == (unsigned int) fEmptyNamespaceURI) { if (nameURIList) { // 6.1 result is any if (nameURIList->containsElement(compareURI)) { resultWildCard->setType(XMLAttDef::Any_Any); attNameR->setURI(fEmptyNamespaceURI); } // 6.2 result is not and absent else if (typeR == XMLAttDef::Any_List){ resultWildCard->setType(XMLAttDef::Any_Other); attNameR->setURI(fEmptyNamespaceURI); } } // 6.2 result is not and absent else if (typeR == XMLAttDef::Any_List) { resultWildCard->setType(XMLAttDef::Any_Other); attNameR->setURI(fEmptyNamespaceURI); } } // 5. not and namespace else { // 5.3 result is not expressible if (!nameURIList) { resultWildCard->setType(XMLAttDef::AttTypes_Unknown); attNameR->setURI(fEmptyNamespaceURI); } else { bool containsAbsent = nameURIList->containsElement(fEmptyNamespaceURI); bool containsNamespace = nameURIList->containsElement(compareURI); // 5.1 result is any if (containsAbsent && containsNamespace) { resultWildCard->setType(XMLAttDef::Any_Any); attNameR->setURI(fEmptyNamespaceURI); } // 5.2 result is not and absent else if (containsNamespace) { resultWildCard->setType(XMLAttDef::Any_Other); attNameR->setURI(fEmptyNamespaceURI); } // 5.3 result is not expressible else if (containsAbsent) { resultWildCard->setType(XMLAttDef::AttTypes_Unknown); attNameR->setURI(fEmptyNamespaceURI); } // 5.4. whichever is not and namespace else if (typeR == XMLAttDef::Any_List) { resultWildCard->setType(XMLAttDef::Any_Other); attNameR->setURI(compareURI); } } } resultWildCard->resetNamespaceList(); } } void TraverseSchema::checkAttDerivationOK(const DOMElement* const elem, const ComplexTypeInfo* const baseTypeInfo, const ComplexTypeInfo* const childTypeInfo) { SchemaAttDefList& childAttList = (SchemaAttDefList&) childTypeInfo->getAttDefList(); const SchemaAttDef* baseAttWildCard = baseTypeInfo->getAttWildCard(); for (XMLSize_t i=0; igetLocalPart(); const SchemaAttDef* baseAttDef = baseTypeInfo->getAttDef(childLocalPart, childAttName->getURI()); if (baseAttDef) { XMLAttDef::DefAttTypes baseAttDefType = baseAttDef->getDefaultType(); XMLAttDef::DefAttTypes childAttDefType = childAttDef.getDefaultType(); // Constraint 2.1.1 & 3 + check for prohibited base attribute if (baseAttDefType == XMLAttDef::Prohibited && childAttDefType != XMLAttDef::Prohibited) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::BadAttDerivation_8, childLocalPart); } if ((baseAttDefType & XMLAttDef::Required) && !(childAttDefType & XMLAttDef::Required)) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::BadAttDerivation_2, childLocalPart); } // if the attribute in the derived type is prohibited, and it didn't try to override a required attribute, // it's ok and shouldn't be tested for data type or fixed value if (childAttDefType == XMLAttDef::Prohibited) continue; // Constraint 2.1.2 DatatypeValidator* baseDV = baseAttDef->getDatatypeValidator(); DatatypeValidator* childDV = childAttDef.getDatatypeValidator(); if (!baseDV || !baseDV->isSubstitutableBy(childDV)) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::BadAttDerivation_3, childLocalPart); } // Constraint 2.1.3 if ((baseAttDefType & XMLAttDef::Fixed) && (!(childAttDefType & XMLAttDef::Fixed) || !XMLString::equals(baseAttDef->getValue(), childAttDef.getValue()))) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::BadAttDerivation_4, childLocalPart); } } // Constraint 2.2 else if (!baseAttWildCard || !wildcardAllowsNamespace(baseAttWildCard, childAttName->getURI())) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::BadAttDerivation_5, childLocalPart); } } // Constraint 4 const SchemaAttDef* childAttWildCard = childTypeInfo->getAttWildCard(); if (childAttWildCard) { if (!baseAttWildCard) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::BadAttDerivation_6); } else if (!isWildCardSubset(baseAttWildCard, childAttWildCard)) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::BadAttDerivation_7); } else if (childAttWildCard->getDefaultType() < baseAttWildCard->getDefaultType()) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::BadAttDerivation_9); } } } void TraverseSchema::checkAttDerivationOK(const DOMElement* const elem, const XercesAttGroupInfo* const baseAttGrpInfo, const XercesAttGroupInfo* const childAttGrpInfo) { XMLSize_t baseAttCount = baseAttGrpInfo->attributeCount(); XMLSize_t baseAnyAttCount = baseAttGrpInfo->anyAttributeCount(); XMLSize_t childAttCount = childAttGrpInfo->attributeCount(); XMLSize_t childAnyAttCount = childAttGrpInfo->anyAttributeCount(); if ((childAttCount || childAnyAttCount) && (!baseAttCount && !baseAnyAttCount)) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::BadAttDerivation_1); } const SchemaAttDef* baseAttWildCard = (baseAnyAttCount) ? baseAttGrpInfo->anyAttributeAt(0) : 0; for (XMLSize_t i=0; iattributeAt(i); QName* childAttName = childAttDef->getAttName(); const XMLCh* childLocalPart = childAttName->getLocalPart(); const SchemaAttDef* baseAttDef = baseAttGrpInfo->getAttDef(childLocalPart, childAttName->getURI()); if (baseAttDef) { XMLAttDef::DefAttTypes baseAttDefType = baseAttDef->getDefaultType(); XMLAttDef::DefAttTypes childAttDefType = childAttDef->getDefaultType(); // Constraint 2.1.1 & 3 + check for prohibited base attribute if (baseAttDefType == XMLAttDef::Prohibited && childAttDefType != XMLAttDef::Prohibited) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::BadAttDerivation_8, childLocalPart); } if ((baseAttDefType & XMLAttDef::Required) && !(childAttDefType & XMLAttDef::Required)) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::BadAttDerivation_2, childLocalPart); } // if the attribute in the derived type is prohibited, and it didn't try to override a required attribute, // it's ok and shouldn't be tested for data type or fixed value if (childAttDefType == XMLAttDef::Prohibited) continue; // Constraint 2.1.2 DatatypeValidator* baseDV = baseAttDef->getDatatypeValidator(); DatatypeValidator* childDV = childAttDef->getDatatypeValidator(); if (!baseDV || !baseDV->isSubstitutableBy(childDV)) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::BadAttDerivation_3, childLocalPart); } // Constraint 2.1.3 if ((baseAttDefType & XMLAttDef::Fixed) && (!(childAttDefType & XMLAttDef::Fixed) || !XMLString::equals(baseAttDef->getValue(), childAttDef->getValue()))) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::BadAttDerivation_4, childLocalPart); } } // Constraint 2.2 else if (!baseAttWildCard || !wildcardAllowsNamespace(baseAttWildCard, childAttName->getURI())) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::BadAttDerivation_5, childLocalPart); } } // Constraint 4 const SchemaAttDef* childAttWildCard = (childAnyAttCount) ? childAttGrpInfo->anyAttributeAt(0) : 0; if (childAttWildCard) { if (!baseAttWildCard) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::BadAttDerivation_6); } else if (!isWildCardSubset(baseAttWildCard, childAttWildCard)) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::BadAttDerivation_7); } else if (childAttWildCard->getDefaultType() < baseAttWildCard->getDefaultType()) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::BadAttDerivation_9); } } } bool TraverseSchema::wildcardAllowsNamespace(const SchemaAttDef* const wildCard, const unsigned int nameURI) { XMLAttDef::AttTypes wildCardType = wildCard->getType(); // The constraint must be any if (wildCardType == XMLAttDef::Any_Any) { return true; } // All of the following must be true: // 2.1 The constraint is a pair of not and a namespace name or ·absent // 2.2 The value must not be identical to the ·namespace test·. // 2.3 The value must not be ·absent·. if (wildCardType == XMLAttDef::Any_Other && ((int) nameURI) != fEmptyNamespaceURI && wildCard->getAttName()->getURI() != nameURI) { return true; } // The constraint is a set, and the value is identical to one of the // members of the set if (wildCardType == XMLAttDef::Any_List) { ValueVectorOf* nameURIList = wildCard->getNamespaceList(); if (nameURIList->containsElement(nameURI)) { return true; } } return false; } bool TraverseSchema::isWildCardSubset(const SchemaAttDef* const baseAttWildCard, const SchemaAttDef* const childAttWildCard) { XMLAttDef::AttTypes baseWildCardType = baseAttWildCard->getType(); XMLAttDef::AttTypes childWildCardType = childAttWildCard->getType(); if (baseWildCardType == XMLAttDef::AttTypes_Unknown || childWildCardType == XMLAttDef::AttTypes_Unknown) { return false; } // 1 super must be any. if (baseWildCardType == XMLAttDef::Any_Any) { return true; } // 2 All of the following must be true: // 2.1 sub must be a pair of not and a namespace name or ·absent·. // 2.2 super must be a pair of not and the same value. if (childWildCardType == XMLAttDef::Any_Other && baseWildCardType == XMLAttDef::Any_Other && childAttWildCard->getAttName()->getURI() == baseAttWildCard->getAttName()->getURI()) { return true; } // 3 All of the following must be true: // 3.1 sub must be a set whose members are either namespace names or ·absent·. // 3.2 One of the following must be true: // 3.2.1 super must be the same set or a superset thereof. // 3.2.2 super must be a pair of not and a namespace name or ·absent· and // that value must not be in sub's set. if (childWildCardType == XMLAttDef::Any_List) { ValueVectorOf* childURIList = childAttWildCard->getNamespaceList(); if (baseWildCardType == XMLAttDef::Any_List) { ValueVectorOf* baseURIList = baseAttWildCard->getNamespaceList(); XMLSize_t childListSize = (childURIList) ? childURIList->size() : 0; for (XMLSize_t i=0; icontainsElement(childURIList->elementAt(i))) { return false; } } return true; } else if (baseWildCardType == XMLAttDef::Any_Other) { if (!childURIList->containsElement(baseAttWildCard->getAttName()->getURI())) { return true; } } } return false; } bool TraverseSchema::openRedefinedSchema(const DOMElement* const redefineElem) { if (fPreprocessedNodes->containsKey(redefineElem)) { restoreSchemaInfo(fPreprocessedNodes->get(redefineElem)); return true; } // ------------------------------------------------------------------ // Get 'schemaLocation' attribute // ------------------------------------------------------------------ const XMLCh* schemaLocation = getElementAttValue(redefineElem, SchemaSymbols::fgATT_SCHEMALOCATION, DatatypeValidator::AnyURI); if (!schemaLocation || !*schemaLocation) { reportSchemaError(redefineElem, XMLUni::fgXMLErrDomain, XMLErrs::DeclarationNoSchemaLocation, SchemaSymbols::fgELT_REDEFINE); return false; } // ------------------------------------------------------------------ // Resolve schema location // ------------------------------------------------------------------ fLocator->setValues(fSchemaInfo->getCurrentSchemaURL(), 0, ((XSDElementNSImpl*) redefineElem)->getLineNo(), ((XSDElementNSImpl*) redefineElem)->getColumnNo()); InputSource* srcToFill = resolveSchemaLocation(schemaLocation, XMLResourceIdentifier::SchemaRedefine); Janitor janSrc(srcToFill); // Nothing to do if (!srcToFill) { return false; } const XMLCh* includeURL = srcToFill->getSystemId(); if (XMLString::equals(includeURL, fSchemaInfo->getCurrentSchemaURL())) { return false; } SchemaInfo* redefSchemaInfo = fCachedSchemaInfoList->get(includeURL, fTargetNSURI); if (!redefSchemaInfo && fSchemaInfoList != fCachedSchemaInfoList) redefSchemaInfo = fSchemaInfoList->get(includeURL, fTargetNSURI); if (redefSchemaInfo) { reportSchemaError(redefineElem, XMLUni::fgXMLErrDomain, XMLErrs::InvalidRedefine, includeURL); return false; } // ------------------------------------------------------------------ // Parse input source // ------------------------------------------------------------------ if (!fParser) fParser = new (fGrammarPoolMemoryManager) XSDDOMParser(0,fGrammarPoolMemoryManager, 0); fParser->setValidationScheme(XercesDOMParser::Val_Never); fParser->setDoNamespaces(true); fParser->setUserEntityHandler(fEntityHandler); fParser->setUserErrorReporter(fErrorReporter); // Should just issue warning if the schema is not found bool flag = srcToFill->getIssueFatalErrorIfNotFound(); srcToFill->setIssueFatalErrorIfNotFound(false); fParser->parse(*srcToFill) ; // Reset the InputSource srcToFill->setIssueFatalErrorIfNotFound(flag); if (fParser->getSawFatal() && fScanner->getExitOnFirstFatal()) reportSchemaError(redefineElem, XMLUni::fgXMLErrDomain, XMLErrs::SchemaScanFatalError); // ------------------------------------------------------------------ // Get root element // ------------------------------------------------------------------ DOMDocument* document = fParser->getDocument(); if (!document) { return false; } else { DOMElement* root = document->getDocumentElement(); if (root == 0) { return false; } const XMLCh* targetNSURIString = root->getAttribute(SchemaSymbols::fgATT_TARGETNAMESPACE); // check to see if targetNameSpace is right if (*targetNSURIString && !XMLString::equals(targetNSURIString,fTargetNSURIString)){ reportSchemaError(root, XMLUni::fgXMLErrDomain, XMLErrs::RedefineNamespaceDifference, schemaLocation, targetNSURIString); return false; } // if targetNamespace is empty, change it to redefin'g schema // targetNamespace if (!*targetNSURIString && root->getAttributeNode(XMLUni::fgXMLNSString) == 0 && fTargetNSURI != fEmptyNamespaceURI) { root->setAttribute(XMLUni::fgXMLNSString, fTargetNSURIString); } // -------------------------------------------------------- // Update schema information with redefined schema // -------------------------------------------------------- redefSchemaInfo = fSchemaInfo; Janitor newSchemaInfo(new (fMemoryManager) SchemaInfo(0, 0, 0, fTargetNSURI, fSchemaInfo->getNamespaceScope(), includeURL, fTargetNSURIString, root, fScanner, fGrammarPoolMemoryManager)); fSchemaInfo = newSchemaInfo.get(); traverseSchemaHeader(root); fSchemaInfoList->put((void*) fSchemaInfo->getCurrentSchemaURL(), fSchemaInfo->getTargetNSURI(), fSchemaInfo); newSchemaInfo.release(); redefSchemaInfo->addSchemaInfo(fSchemaInfo, SchemaInfo::INCLUDE); fPreprocessedNodes->put((void*) redefineElem, fSchemaInfo); } return true; } void TraverseSchema::renameRedefinedComponents(const DOMElement* const redefineElem, SchemaInfo* const redefiningSchemaInfo, SchemaInfo* const redefinedSchemaInfo) { DOMElement* child = XUtil::getFirstChildElement(redefineElem); for (; child != 0; child = XUtil::getNextSiblingElement(child)) { const XMLCh* childName = child->getLocalName(); if (XMLString::equals(childName, SchemaSymbols::fgELT_ANNOTATION)) { continue; } // if component already redefined skip const XMLCh* typeName = getElementAttValue(child, SchemaSymbols::fgATT_NAME, DatatypeValidator::NCName); fBuffer.set(fTargetNSURIString); fBuffer.append(chComma); fBuffer.append(typeName); if (fRedefineComponents->containsKey(childName, fStringPool->addOrFind(fBuffer.getRawBuffer()))) { continue; } // Rename const XMLCh* tmpChildName = fStringPool->getValueForId(fStringPool->addOrFind(childName)); if (validateRedefineNameChange(child, tmpChildName, typeName, 1, redefiningSchemaInfo)) { fixRedefinedSchema(child, redefinedSchemaInfo, tmpChildName, typeName, 1); } else { redefiningSchemaInfo->addFailedRedefine(child); } } } bool TraverseSchema::validateRedefineNameChange(const DOMElement* const redefineChildElem, const XMLCh* const redefineChildComponentName, const XMLCh* const redefineChildTypeName, const int redefineNameCounter, SchemaInfo* const redefiningSchemaInfo) { const XMLCh* baseTypeName = 0; unsigned int typeNameId = fStringPool->addOrFind(redefineChildTypeName); fBuffer.set(fTargetNSURIString); fBuffer.append(chComma); fBuffer.append(redefineChildTypeName); int fullTypeNameId = fStringPool->addOrFind(fBuffer.getRawBuffer()); const XMLCh* typeNameStr = fStringPool->getValueForId(fullTypeNameId); restoreSchemaInfo(redefiningSchemaInfo); if (XMLString::equals(redefineChildComponentName,SchemaSymbols::fgELT_SIMPLETYPE)) { if (fDatatypeRegistry->getDatatypeValidator(typeNameStr)) { return false; } DOMElement* grandKid = XUtil::getFirstChildElement(redefineChildElem); if (grandKid && XMLString::equals(grandKid->getLocalName(), SchemaSymbols::fgELT_ANNOTATION)) { grandKid = XUtil::getNextSiblingElement(grandKid); } if (grandKid == 0) { reportSchemaError(redefineChildElem, XMLUni::fgXMLErrDomain, XMLErrs::Redefine_InvalidSimpleType); return false; } else if(!XMLString::equals(grandKid->getLocalName(), SchemaSymbols::fgELT_RESTRICTION)) { reportSchemaError(grandKid, XMLUni::fgXMLErrDomain, XMLErrs::Redefine_InvalidSimpleType); return false; } baseTypeName = getElementAttValue(grandKid, SchemaSymbols::fgATT_BASE, DatatypeValidator::QName); const XMLCh* prefix = getPrefix(baseTypeName); const XMLCh* localPart = getLocalPart(baseTypeName); const XMLCh* uriStr = resolvePrefixToURI(grandKid, prefix); if (fTargetNSURI != (int) fURIStringPool->addOrFind(uriStr) || fStringPool->addOrFind(localPart) != typeNameId) { reportSchemaError(grandKid, XMLUni::fgXMLErrDomain, XMLErrs::Redefine_InvalidSimpleTypeBase); return false; } // now we have to do the renaming... getRedefineNewTypeName(baseTypeName, redefineNameCounter, fBuffer); grandKid->setAttribute(SchemaSymbols::fgATT_BASE, fBuffer.getRawBuffer()); fRedefineComponents->put((void*) SchemaSymbols::fgELT_SIMPLETYPE, fullTypeNameId, 0); } else if (XMLString::equals(redefineChildComponentName,SchemaSymbols::fgELT_COMPLEXTYPE)) { if (fComplexTypeRegistry->containsKey(typeNameStr)) { return false; } DOMElement* grandKid = XUtil::getFirstChildElement(redefineChildElem); if (grandKid && XMLString::equals(grandKid->getLocalName(), SchemaSymbols::fgELT_ANNOTATION)) { grandKid = XUtil::getNextSiblingElement(grandKid); } if (grandKid == 0) { reportSchemaError(redefineChildElem, XMLUni::fgXMLErrDomain, XMLErrs::Redefine_InvalidComplexType); return false; } else { // have to go one more level down; let another pass worry whether complexType is valid. DOMElement* greatGrandKid = XUtil::getFirstChildElement(grandKid); if (greatGrandKid != 0 && XMLString::equals(greatGrandKid->getLocalName(), SchemaSymbols::fgELT_ANNOTATION)) { greatGrandKid = XUtil::getNextSiblingElement(greatGrandKid); } if (greatGrandKid == 0) { reportSchemaError(grandKid, XMLUni::fgXMLErrDomain, XMLErrs::Redefine_InvalidComplexType); return false; } else { const XMLCh* greatGrandKidName = greatGrandKid->getLocalName(); if (!XMLString::equals(greatGrandKidName, SchemaSymbols::fgELT_RESTRICTION) && !XMLString::equals(greatGrandKidName, SchemaSymbols::fgELT_EXTENSION)) { reportSchemaError(greatGrandKid, XMLUni::fgXMLErrDomain, XMLErrs::Redefine_InvalidComplexType); return false; } baseTypeName = getElementAttValue(greatGrandKid, SchemaSymbols::fgATT_BASE, DatatypeValidator::QName); const XMLCh* prefix = getPrefix(baseTypeName); const XMLCh* localPart = getLocalPart(baseTypeName); const XMLCh* uriStr = resolvePrefixToURI(greatGrandKid, prefix); if (fTargetNSURI != (int) fURIStringPool->addOrFind(uriStr) || fStringPool->addOrFind(localPart) != typeNameId) { reportSchemaError(greatGrandKid, XMLUni::fgXMLErrDomain, XMLErrs::Redefine_InvalidComplexTypeBase); return false; } // now we have to do the renaming... getRedefineNewTypeName(baseTypeName, redefineNameCounter, fBuffer); greatGrandKid->setAttribute(SchemaSymbols::fgATT_BASE, fBuffer.getRawBuffer()); fRedefineComponents->put((void*) SchemaSymbols::fgELT_COMPLEXTYPE, fullTypeNameId, 0); } } } else if (XMLString::equals(redefineChildComponentName, SchemaSymbols::fgELT_GROUP)) { if (fGroupRegistry->containsKey(typeNameStr)) { return false; } int groupRefCount = changeRedefineGroup(redefineChildElem, redefineChildComponentName, redefineChildTypeName, redefineNameCounter); if (groupRefCount > 1) { reportSchemaError(redefineChildElem, XMLUni::fgXMLErrDomain, XMLErrs::Redefine_GroupRefCount); return false; } else if (groupRefCount == 0) { // put a dummy value, default is null. // when processing groups, we will check that table, if a value // is found, we need to do a particle derivation check. fRedefineComponents->put((void*) SchemaSymbols::fgELT_GROUP, fullTypeNameId, fSchemaInfo->getCurrentSchemaURL()); } else { fRedefineComponents->put((void*) SchemaSymbols::fgELT_GROUP, fullTypeNameId, 0); } } else if (XMLString::equals(redefineChildComponentName, SchemaSymbols::fgELT_ATTRIBUTEGROUP)) { if (fAttGroupRegistry->containsKey(redefineChildTypeName)) { return false; } int attGroupRefCount = changeRedefineGroup(redefineChildElem, redefineChildComponentName, redefineChildTypeName, redefineNameCounter); if (attGroupRefCount > 1) { reportSchemaError(redefineChildElem, XMLUni::fgXMLErrDomain, XMLErrs::Redefine_AttGroupRefCount); return false; } else if (attGroupRefCount == 0) { // put a dummy value, default is null. // when processing attributeGroups, we will check that table, if // a value is found, we need to check for attribute derivation ok // (by restriction) fRedefineComponents->put((void*) SchemaSymbols::fgELT_ATTRIBUTEGROUP, fullTypeNameId, fSchemaInfo->getCurrentSchemaURL()); } else { fRedefineComponents->put((void*) SchemaSymbols::fgELT_ATTRIBUTEGROUP, fullTypeNameId, 0); } } else { reportSchemaError ( redefineChildElem , XMLUni::fgXMLErrDomain , XMLErrs::Redefine_InvalidChild , redefineChildComponentName ); return false; } return true; } int TraverseSchema::changeRedefineGroup(const DOMElement* const redefineChildElem, const XMLCh* const redefineChildComponentName, const XMLCh* const redefineChildTypeName, const int redefineNameCounter) { int result = 0; DOMElement* child = XUtil::getFirstChildElement(redefineChildElem); for (; child != 0; child = XUtil::getNextSiblingElement(child)) { const XMLCh* name = child->getLocalName(); if (XMLString::equals(name, SchemaSymbols::fgELT_ANNOTATION)) { continue; } if (!XMLString::equals(name, redefineChildComponentName)) { result += changeRedefineGroup(child, redefineChildComponentName, redefineChildTypeName, redefineNameCounter); } else { const XMLCh* refName = getElementAttValue(child, SchemaSymbols::fgATT_REF, DatatypeValidator::QName); if (refName && *refName) { const XMLCh* prefix = getPrefix(refName); const XMLCh* localPart = getLocalPart(refName); const XMLCh* uriStr = resolvePrefixToURI(child, prefix); if (fTargetNSURI == (int) fURIStringPool->addOrFind(uriStr) && fStringPool->addOrFind(localPart) == fStringPool->addOrFind(redefineChildTypeName)) { // now we have to do the renaming... getRedefineNewTypeName(refName, redefineNameCounter, fBuffer); child->setAttribute(SchemaSymbols::fgATT_REF, fBuffer.getRawBuffer()); result++; if(XMLString::equals(redefineChildComponentName, SchemaSymbols::fgELT_GROUP)) { const XMLCh* minOccurs = getElementAttValue(child, SchemaSymbols::fgATT_MINOCCURS, DatatypeValidator::Decimal); const XMLCh* maxOccurs = getElementAttValue(child, SchemaSymbols::fgATT_MAXOCCURS, DatatypeValidator::Decimal); if (((maxOccurs && *maxOccurs) && !XMLString::equals(maxOccurs, fgValueOne)) || ((minOccurs && *minOccurs) && !XMLString::equals(minOccurs, fgValueOne))) { reportSchemaError(child, XMLUni::fgXMLErrDomain, XMLErrs::Redefine_InvalidGroupMinMax, redefineChildTypeName); } } } } // if ref was null some other stage of processing will flag the error } } return result; } void TraverseSchema::fixRedefinedSchema(const DOMElement* const elem, SchemaInfo* const redefinedSchemaInfo, const XMLCh* const redefineChildComponentName, const XMLCh* const redefineChildTypeName, const int redefineNameCounter) { bool foundIt = false; DOMElement* child = XUtil::getFirstChildElement(redefinedSchemaInfo->getRoot()); restoreSchemaInfo(redefinedSchemaInfo); for (; child != 0; child = XUtil::getNextSiblingElement(child)) { const XMLCh* name = child->getLocalName(); if (XMLString::equals(name, redefineChildComponentName)) { const XMLCh* infoItemName = getElementAttValue(child, SchemaSymbols::fgATT_NAME, DatatypeValidator::NCName); if(!XMLString::equals(infoItemName, redefineChildTypeName)) { continue; } else { // found it! // now we have to do the renaming... foundIt = true; getRedefineNewTypeName(infoItemName, redefineNameCounter, fBuffer); child->setAttribute(SchemaSymbols::fgATT_NAME, fBuffer.getRawBuffer()); break; } } else if (XMLString::equals(name, SchemaSymbols::fgELT_REDEFINE)) { // need to search the redefine decl... for (DOMElement* redefChild = XUtil::getFirstChildElement(child); redefChild != 0; redefChild = XUtil::getNextSiblingElement(redefChild)) { const XMLCh* redefName = redefChild->getLocalName(); if (XMLString::equals(redefName, redefineChildComponentName)) { const XMLCh* infoItemName = getElementAttValue(redefChild, SchemaSymbols::fgATT_NAME, DatatypeValidator::NCName); if(!XMLString::equals(infoItemName, redefineChildTypeName)) { continue; } else { // found it! if (!openRedefinedSchema(child)) { redefinedSchemaInfo->addFailedRedefine(child); return; } foundIt = true; SchemaInfo* reRedefinedSchemaInfo = fSchemaInfo; if (validateRedefineNameChange(redefChild, redefineChildComponentName, redefineChildTypeName, redefineNameCounter + 1, redefinedSchemaInfo)) { fixRedefinedSchema(redefChild, reRedefinedSchemaInfo, redefineChildComponentName, redefineChildTypeName, redefineNameCounter + 1); // now we have to do the renaming... getRedefineNewTypeName(infoItemName, redefineNameCounter, fBuffer); const XMLCh* newInfoItemName = fStringPool->getValueForId(fStringPool->addOrFind(fBuffer.getRawBuffer())); redefChild->setAttribute(SchemaSymbols::fgATT_NAME, newInfoItemName); // and we now know we will traverse this, so set fRedefineComponents appropriately... fBuffer.set(fTargetNSURIString); fBuffer.append(chComma); fBuffer.append(newInfoItemName); } else { fixRedefinedSchema(redefChild, reRedefinedSchemaInfo, redefineChildComponentName, redefineChildTypeName, redefineNameCounter); redefinedSchemaInfo->addFailedRedefine(redefChild); // and we now know we will traverse this, so set fRedefineComponents appropriately... fBuffer.set(fTargetNSURIString); fBuffer.append(chComma); fBuffer.append(infoItemName); } unsigned int infoItemNameId = fStringPool->addOrFind(fBuffer.getRawBuffer()); if (!fRedefineComponents->containsKey(redefineChildComponentName, infoItemNameId)) { fRedefineComponents->put((void*) redefineChildComponentName, infoItemNameId, 0); } break; } } } //for if (foundIt) { break; } } } //for if(!foundIt) { reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::Redefine_DeclarationNotFound, redefineChildTypeName); } } bool TraverseSchema::isSubstitutionGroupCircular(SchemaElementDecl* const elemDecl, SchemaElementDecl* const subsElemDecl) { if (elemDecl == subsElemDecl) return true; SchemaElementDecl* tmpElemDecl = subsElemDecl->getSubstitutionGroupElem(); while (tmpElemDecl) { if (tmpElemDecl == elemDecl) return true; tmpElemDecl = tmpElemDecl->getSubstitutionGroupElem(); } return false; } // --------------------------------------------------------------------------- // TraverseSchema: Error reporting methods // --------------------------------------------------------------------------- void TraverseSchema::reportSchemaError(const XSDLocator* const aLocator, const XMLCh* const msgDomain, const int errorCode) { fXSDErrorReporter.emitError(errorCode, msgDomain, aLocator); } void TraverseSchema::reportSchemaError(const XSDLocator* const aLocator, const XMLCh* const msgDomain, const int errorCode, const XMLCh* const text1, const XMLCh* const text2, const XMLCh* const text3, const XMLCh* const text4) { fXSDErrorReporter.emitError(errorCode, msgDomain, aLocator, text1, text2, text3, text4, fMemoryManager); } void TraverseSchema::reportSchemaError(const DOMElement* const elem, const XMLCh* const msgDomain, const int errorCode) { fLocator->setValues(fSchemaInfo->getCurrentSchemaURL(), 0, ((XSDElementNSImpl*) elem)->getLineNo(), ((XSDElementNSImpl*) elem)->getColumnNo()); fXSDErrorReporter.emitError(errorCode, msgDomain, fLocator); } void TraverseSchema::reportSchemaError(const DOMElement* const elem, const XMLCh* const msgDomain, const int errorCode, const XMLCh* const text1, const XMLCh* const text2, const XMLCh* const text3, const XMLCh* const text4) { fLocator->setValues(fSchemaInfo->getCurrentSchemaURL(), 0, ((XSDElementNSImpl*) elem)->getLineNo(), ((XSDElementNSImpl*) elem)->getColumnNo()); fXSDErrorReporter.emitError(errorCode, msgDomain, fLocator, text1, text2, text3, text4, fMemoryManager); } void TraverseSchema::reportSchemaError(const DOMElement* const elem, const XMLException& except) { fLocator->setValues(fSchemaInfo->getCurrentSchemaURL(), 0, ((XSDElementNSImpl*) elem)->getLineNo(), ((XSDElementNSImpl*) elem)->getColumnNo()); fXSDErrorReporter.emitError(except, fLocator); } // --------------------------------------------------------------------------- // TraverseSchema: Init/CleanUp methods // --------------------------------------------------------------------------- void TraverseSchema::init() { fXSDErrorReporter.setErrorReporter(fErrorReporter); fXSDErrorReporter.setExitOnFirstFatal(fScanner->getExitOnFirstFatal()); fFullConstraintChecking = fScanner->getValidationSchemaFullChecking(); fDatatypeRegistry = fSchemaGrammar->getDatatypeRegistry(); fStringPool = fGrammarResolver->getStringPool(); fEmptyNamespaceURI = fScanner->getEmptyNamespaceId(); fCurrentTypeNameStack = new (fMemoryManager) ValueVectorOf(8, fMemoryManager); fCurrentGroupStack = new (fMemoryManager) ValueVectorOf(8, fMemoryManager); fGlobalDeclarations = (ValueVectorOf**) fMemoryManager->allocate ( ENUM_ELT_SIZE * sizeof(ValueVectorOf*) );//new ValueVectorOf*[ENUM_ELT_SIZE]; memset(fGlobalDeclarations, 0, ENUM_ELT_SIZE * sizeof(ValueVectorOf*)); for(unsigned int i=0; i < ENUM_ELT_SIZE; i++) fGlobalDeclarations[i] = new (fMemoryManager) ValueVectorOf(8, fMemoryManager); fNonXSAttList = new (fMemoryManager) ValueVectorOf(4, fMemoryManager); fNotationRegistry = new (fMemoryManager) RefHash2KeysTableOf(13, (bool) false, fMemoryManager); fPreprocessedNodes = new (fMemoryManager) RefHashTableOf ( 29 , false , fMemoryManager ); fLocator = new (fMemoryManager) XSDLocator(); fDeclStack = new (fMemoryManager) ValueVectorOf(16, fMemoryManager); } void TraverseSchema::cleanUp() { delete fCurrentTypeNameStack; delete fCurrentGroupStack; if (fGlobalDeclarations) { for(unsigned int i=0; i < ENUM_ELT_SIZE; i++) delete fGlobalDeclarations[i]; fMemoryManager->deallocate(fGlobalDeclarations);//delete [] fGlobalDeclarations; } delete fNonXSAttList; delete fImportedNSList; delete fNotationRegistry; delete fRedefineComponents; delete fIdentityConstraintNames; delete fDeclStack; delete fIC_ElementsNS; delete fIC_NodeListNS; delete fPreprocessedNodes; delete fLocator; delete fParser; } void TraverseSchema::processElemDeclAttrs(const DOMElement* const elem, SchemaElementDecl* const elemDecl, const XMLCh*& valueConstraint, bool isTopLevel) { int elementMiscFlags = 0; const XMLCh* fixedVal = getElementAttValue(elem, SchemaSymbols::fgATT_FIXED); const XMLCh* nillable = getElementAttValue(elem, SchemaSymbols::fgATT_NILLABLE, DatatypeValidator::Boolean); // check constraint value valueConstraint = getElementAttValue(elem, SchemaSymbols::fgATT_DEFAULT); if (fixedVal) { elementMiscFlags |= SchemaSymbols::XSD_FIXED; // if both default and fixed, emit an error if (valueConstraint) reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::ElementWithFixedAndDefault, getElementAttValue(elem, SchemaSymbols::fgATT_NAME, DatatypeValidator::NCName)); // set constraint value to the fixed one valueConstraint = fixedVal; } // check nillable if (nillable && *nillable) { if (XMLString::equals(nillable, SchemaSymbols::fgATTVAL_TRUE) || XMLString::equals(nillable, fgValueOne)) { elementMiscFlags |= SchemaSymbols::XSD_NILLABLE; } } if (isTopLevel) { const XMLCh* bAbstract = getElementAttValue(elem, SchemaSymbols::fgATT_ABSTRACT, DatatypeValidator::Boolean); if (bAbstract && *bAbstract) { if (XMLString::equals(bAbstract, SchemaSymbols::fgATTVAL_TRUE) || XMLString::equals(bAbstract, fgValueOne)) { elementMiscFlags |= SchemaSymbols::XSD_ABSTRACT; } } elemDecl->setFinalSet(parseFinalSet(elem, EC_Final)); } elemDecl->setBlockSet(parseBlockSet(elem, ES_Block)); elemDecl->setMiscFlags(elementMiscFlags); } void TraverseSchema::processElemDeclIC(DOMElement* const icElem, SchemaElementDecl* const elemDecl) { // key/keyref/unique processing ValueVectorOf* icNodes = 0; DOMElement* ic = icElem; while (ic != 0) { if (XMLString::equals(ic->getLocalName(), SchemaSymbols::fgELT_KEY)) { traverseKey(ic, elemDecl); } else if (XMLString::equals(ic->getLocalName(), SchemaSymbols::fgELT_UNIQUE)) { traverseUnique(ic, elemDecl); } else { if (!icNodes) { icNodes = new (fGrammarPoolMemoryManager) ValueVectorOf(8, fGrammarPoolMemoryManager); } icNodes->addElement(ic); } ic = XUtil::getNextSiblingElementNS( ic, fgIdentityConstraints, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, 3); } if (icNodes) { if (!fIC_ElementsNS) { fIC_ElementsNS = new (fMemoryManager) RefHashTableOf(13, fMemoryManager); fIC_NodeListNS = new (fMemoryManager) RefHashTableOf, PtrHasher>(29, true, fMemoryManager); } fIC_Elements = fIC_ElementsNS->get(fTargetNSURIString); if (!fIC_Elements) { fIC_Elements = new (fMemoryManager) ValueVectorOf(8, fMemoryManager); fIC_ElementsNS->put((void*) fTargetNSURIString, fIC_Elements); } fIC_NodeListNS->put(elemDecl, icNodes); fIC_Elements->addElement(elemDecl); } } bool TraverseSchema::checkElemDeclValueConstraint(const DOMElement* const elem, SchemaElementDecl* const elemDecl, const XMLCh* const valConstraint, ComplexTypeInfo* const typeInfo, DatatypeValidator* const validator) { bool isValid = false; if (validator) { if (validator->getType() == DatatypeValidator::ID) reportSchemaError( elem, XMLUni::fgXMLErrDomain, XMLErrs::ElemIDValueConstraint , elemDecl->getBaseName(), valConstraint ); try { const XMLCh* valueToCheck = valConstraint; short wsFacet = validator->getWSFacet(); if((wsFacet == DatatypeValidator::REPLACE && !XMLString::isWSReplaced(valueToCheck)) || (wsFacet == DatatypeValidator::COLLAPSE && !XMLString::isWSCollapsed(valueToCheck))) { XMLCh* normalizedValue=XMLString::replicate(valueToCheck, fMemoryManager); ArrayJanitor tempURIName(normalizedValue, fMemoryManager); if(wsFacet == DatatypeValidator::REPLACE) XMLString::replaceWS(normalizedValue, fMemoryManager); else if(wsFacet == DatatypeValidator::COLLAPSE) XMLString::collapseWS(normalizedValue, fMemoryManager); valueToCheck=fStringPool->getValueForId(fStringPool->addOrFind(normalizedValue)); } validator->validate(valueToCheck,0,fMemoryManager); XMLCh* canonical = (XMLCh*) validator->getCanonicalRepresentation(valueToCheck, fMemoryManager); ArrayJanitor tempCanonical(canonical, fMemoryManager); if(!XMLString::equals(canonical, valueToCheck)) { validator->validate(canonical, 0, fMemoryManager); valueToCheck=fStringPool->getValueForId(fStringPool->addOrFind(canonical)); } elemDecl->setDefaultValue(valueToCheck); isValid = true; } catch(const XMLException& excep) { reportSchemaError(elem, excep); } catch(const OutOfMemoryException&) { throw; } catch(...) { reportSchemaError(elem, XMLUni::fgValidityDomain, XMLValid::DatatypeValidationFailure, valConstraint); } } if (typeInfo) { int contentSpecType = typeInfo->getContentType(); if (contentSpecType != SchemaElementDecl::Simple && contentSpecType != SchemaElementDecl::Mixed_Simple && contentSpecType != SchemaElementDecl::Mixed_Complex) reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::NotSimpleOrMixedElement, elemDecl->getBaseName()); if (((contentSpecType == SchemaElementDecl::Mixed_Complex || contentSpecType == SchemaElementDecl::Mixed_Simple) && !emptiableParticle(typeInfo->getContentSpec()))) reportSchemaError(elem, XMLUni::fgXMLErrDomain, XMLErrs::EmptiableMixedContent, elemDecl->getBaseName()); } return isValid; } void TraverseSchema::processSubstitutionGroup(const DOMElement* const elem, SchemaElementDecl* const elemDecl, ComplexTypeInfo*& typeInfo, DatatypeValidator*& validator, const XMLCh* const subsElemQName) { NamespaceScopeManager nsMgr(elem, fSchemaInfo, this); SchemaElementDecl* subsElemDecl = getGlobalElemDecl(elem, subsElemQName); if (subsElemDecl) { if (isSubstitutionGroupCircular(elemDecl, subsElemDecl)) { reportSchemaError( elem , XMLUni::fgXMLErrDomain , XMLErrs::CircularSubsGroup, elemDecl->getBaseName()); } else { // Check for substitution validity constraint // Substitution allowed (block and blockDefault) && same type if (isSubstitutionGroupValid(elem, subsElemDecl, typeInfo, validator, elemDecl->getBaseName())) { elemDecl->setSubstitutionGroupElem(subsElemDecl); // if type information is missing, use subsGroup one if (!typeInfo && !validator) { typeInfo = subsElemDecl->getComplexTypeInfo(); validator = subsElemDecl->getDatatypeValidator(); if (validator) { elemDecl->setDatatypeValidator(validator); elemDecl->setModelType(SchemaElementDecl::Simple); } else if (typeInfo) { elemDecl->setComplexTypeInfo(typeInfo); elemDecl->setModelType((SchemaElementDecl::ModelTypes)typeInfo->getContentType()); } } XMLCh* subsElemBaseName = subsElemDecl->getBaseName(); int subsElemURI = subsElemDecl->getURI(); ValueVectorOf* subsElements = fValidSubstitutionGroups->get(subsElemBaseName, subsElemURI); if (!subsElements && fTargetNSURI != subsElemURI) { SchemaGrammar* aGrammar = (SchemaGrammar*) fGrammarResolver->getGrammar(fURIStringPool->getValueForId(subsElemURI)); if (aGrammar) { subsElements = aGrammar->getValidSubstitutionGroups()->get(subsElemBaseName, subsElemURI); if (subsElements) { subsElements = new (fGrammarPoolMemoryManager) ValueVectorOf(*subsElements); fValidSubstitutionGroups->put(subsElemBaseName, subsElemURI, subsElements); } else if (fSchemaInfo->circularImportExist(subsElemURI)) { aGrammar->getValidSubstitutionGroups()->put( subsElemBaseName, subsElemURI, new (fGrammarPoolMemoryManager) ValueVectorOf(8, fGrammarPoolMemoryManager)); } } } if (!subsElements) { subsElements = new (fGrammarPoolMemoryManager) ValueVectorOf(8, fGrammarPoolMemoryManager); fValidSubstitutionGroups->put(subsElemBaseName, subsElemURI, subsElements); } subsElements->addElement(elemDecl); // update related subs. info in case of circular import BaseRefVectorEnumerator importingEnum = fSchemaInfo->getImportingListEnumerator(); while (importingEnum.hasMoreElements()) { const SchemaInfo& curRef = importingEnum.nextElement(); SchemaGrammar* aGrammar = (SchemaGrammar*) fGrammarResolver->getGrammar(curRef.getTargetNSURIString()); ValueVectorOf* subsElemList = aGrammar->getValidSubstitutionGroups()->get(subsElemBaseName, subsElemURI); if (subsElemList && !subsElemList->containsElement(elemDecl)) subsElemList->addElement(elemDecl); } buildValidSubstitutionListB(elem, elemDecl, subsElemDecl); buildValidSubstitutionListF(elem, elemDecl, subsElemDecl); } } } } void TraverseSchema::processAttValue(const XMLCh* const attVal, XMLBuffer& aBuf) { // REVISIT-KN: assuming that attVal is not NULL // // normally, nothing will happen const XMLCh* srcVal = attVal; XMLCh nextCh = *srcVal; while (nextCh) { if (nextCh <= chCloseAngle) { switch (nextCh) { case chDoubleQuote: aBuf.append(chAmpersand); aBuf.append(XMLUni::fgQuot); aBuf.append(chSemiColon); break; case chSingleQuote: aBuf.append(chAmpersand); aBuf.append(XMLUni::fgApos); aBuf.append(chSemiColon); break; case chCloseAngle: aBuf.append(chAmpersand); aBuf.append(XMLUni::fgGT); aBuf.append(chSemiColon); break; case chOpenAngle: aBuf.append(chAmpersand); aBuf.append(XMLUni::fgLT); aBuf.append(chSemiColon); break; case chAmpersand: aBuf.append(chAmpersand); aBuf.append(XMLUni::fgAmp); aBuf.append(chSemiColon); break; default: aBuf.append(nextCh); break; } // end switch } else aBuf.append(nextCh); nextCh = *++srcVal; } } XSAnnotation* TraverseSchema::generateSyntheticAnnotation(const DOMElement* const elem , ValueVectorOf* nonXSAttList) { const XMLCh* prefix = elem->getPrefix(); ValueHashTableOf* listOfURIs = new (fMemoryManager) ValueHashTableOf(29, fMemoryManager); bool sawXMLNS = false; fBuffer.reset(); fBuffer.append(chOpenAngle); if (prefix) { fBuffer.append(prefix); fBuffer.append(chColon); } fBuffer.append(SchemaSymbols::fgELT_ANNOTATION); // next is the nonXSAttList names & values XMLSize_t nonXSAttSize = nonXSAttList->size(); for (XMLSize_t i=0; ielementAt(i); fBuffer.append(chSpace); fBuffer.append(attNode->getNodeName()); fBuffer.append(chEqual); fBuffer.append(chDoubleQuote); processAttValue(attNode->getNodeValue(), fBuffer); fBuffer.append(chDoubleQuote); } // next is the namespaces on the elem DOMElement* currentElem = (DOMElement*) elem; DOMNamedNodeMap* eltAttrs; XMLSize_t attrCount; do { eltAttrs = currentElem->getAttributes(); attrCount = eltAttrs->getLength(); for (XMLSize_t j = 0; j < attrCount; j++) { DOMNode* attribute = eltAttrs->item(j); const XMLCh* attName = attribute->getNodeName(); if (XMLString::startsWith(attName, XMLUni::fgXMLNSColonString)) { if (!listOfURIs->containsKey((void*) attName)) { listOfURIs->put((void*) attName, 0); fBuffer.append(chSpace); fBuffer.append(attName); fBuffer.append(chEqual); fBuffer.append(chDoubleQuote); processAttValue(attribute->getNodeValue(), fBuffer); fBuffer.append(chDoubleQuote); } } else if (!sawXMLNS && XMLString::equals(attName, XMLUni::fgXMLNSString)) { fBuffer.append(chSpace); fBuffer.append(attName); fBuffer.append(chEqual); fBuffer.append(chDoubleQuote); processAttValue(attribute->getNodeValue(), fBuffer); fBuffer.append(chDoubleQuote); sawXMLNS = true; } } currentElem = (DOMElement*) currentElem->getParentNode(); } while (currentElem != fSchemaInfo->getRoot()->getParentNode()); delete listOfURIs; fBuffer.append(chCloseAngle); fBuffer.append(chLF); fBuffer.append(chOpenAngle); if (prefix) { fBuffer.append(prefix); fBuffer.append(chColon); } fBuffer.append(SchemaSymbols::fgELT_DOCUMENTATION); fBuffer.append(chCloseAngle); fBuffer.append(fgSynthetic_Annotation); fBuffer.append(chOpenAngle); fBuffer.append(chForwardSlash); if (prefix) { fBuffer.append(prefix); fBuffer.append(chColon); } fBuffer.append(SchemaSymbols::fgELT_DOCUMENTATION); fBuffer.append(chCloseAngle); fBuffer.append(chLF); fBuffer.append(chOpenAngle); fBuffer.append(chForwardSlash); if (prefix) { fBuffer.append(prefix); fBuffer.append(chColon); } fBuffer.append(SchemaSymbols::fgELT_ANNOTATION); fBuffer.append(chCloseAngle); XSAnnotation* annot = new (fGrammarPoolMemoryManager) XSAnnotation(fBuffer.getRawBuffer(), fGrammarPoolMemoryManager); annot->setLineCol( ((XSDElementNSImpl*)elem)->getLineNo() , ((XSDElementNSImpl*)elem)->getColumnNo() ); annot->setSystemId(fSchemaInfo->getCurrentSchemaURL()); return annot; } class AnnotationErrorReporter : public XMLErrorReporter { public: AnnotationErrorReporter(XMLErrorReporter* chainedErrorReporter) { fErrorReporter = chainedErrorReporter; setSystemIdAndPosition(NULL, 0, 0); } void setSystemIdAndPosition(const XMLCh* systemId, XMLFileLoc line, XMLFileLoc column) { fSystemId=systemId; fLine=line; fColumn=column; } virtual void error ( const unsigned int errCode , const XMLCh* const errDomain , const ErrTypes type , const XMLCh* const errorText , const XMLCh* const /*systemId*/ , const XMLCh* const publicId , const XMLFileLoc lineNum , const XMLFileLoc colNum ) { if(fErrorReporter) fErrorReporter->error(errCode, errDomain, type, errorText, fSystemId, publicId, fLine+lineNum-1, lineNum==1?fColumn+colNum:colNum); } virtual void resetErrors() {} protected: XMLErrorReporter* fErrorReporter; const XMLCh* fSystemId; XMLFileLoc fLine, fColumn; }; void TraverseSchema::validateAnnotations() { MemoryManager *memMgr = fMemoryManager; RefHashTableOfEnumerator xsAnnotationEnum = RefHashTableOfEnumerator (fSchemaGrammar->getAnnotations(), false, memMgr); XSAnnotation& xsAnnot = xsAnnotationEnum.nextElement(); XSAnnotation* nextAnnot; // create schema grammar SchemaGrammar *grammar = new (memMgr) SchemaGrammar(memMgr); grammar->setComplexTypeRegistry(new (memMgr) RefHashTableOf(29, memMgr)); grammar->setGroupInfoRegistry(new (memMgr) RefHashTableOf(13, memMgr)); grammar->setAttGroupInfoRegistry(new (memMgr) RefHashTableOf(13, memMgr)); grammar->setAttributeDeclRegistry(new (memMgr) RefHashTableOf(29, memMgr)); grammar->setValidSubstitutionGroups(new (memMgr) RefHash2KeysTableOf(29, memMgr)); grammar->setTargetNamespace(SchemaSymbols::fgURI_SCHEMAFORSCHEMA); XMLSchemaDescription* gramDesc = (XMLSchemaDescription*) grammar->getGrammarDescription(); gramDesc->setTargetNamespace(SchemaSymbols::fgURI_SCHEMAFORSCHEMA); // setup components of annotation grammar SchemaElementDecl* annotElemDecl = new (memMgr) SchemaElementDecl ( XMLUni::fgZeroLenString , SchemaSymbols::fgELT_ANNOTATION , fURIStringPool->addOrFind(SchemaSymbols::fgURI_SCHEMAFORSCHEMA) , SchemaElementDecl::Mixed_Complex, Grammar::TOP_LEVEL_SCOPE , memMgr ); annotElemDecl->setCreateReason(XMLElementDecl::Declared); grammar->putElemDecl(annotElemDecl); ComplexTypeInfo* complexType = new (memMgr) ComplexTypeInfo(memMgr); complexType->setAnonymous(); complexType->setContentType(SchemaElementDecl::Mixed_Complex); annotElemDecl->setComplexTypeInfo(complexType); fBuffer.set(SchemaSymbols::fgURI_SCHEMAFORSCHEMA); fBuffer.append(chComma); fBuffer.append(chLatin_C); fBuffer.append(chDigit_0); const XMLCh* fullName = fStringPool->getValueForId(fStringPool->addOrFind(fBuffer.getRawBuffer())); grammar->getComplexTypeRegistry()->put((void*) fullName, complexType); complexType->setTypeName(fullName); complexType->setAttWildCard ( new (memMgr) SchemaAttDef ( XMLUni::fgZeroLenString, XMLUni::fgZeroLenString, fEmptyNamespaceURI, XMLAttDef::Any_Any, XMLAttDef::ProcessContents_Lax, memMgr ) ); SchemaElementDecl* appInfoElemDecl = new (memMgr) SchemaElementDecl ( XMLUni::fgZeroLenString , SchemaSymbols::fgELT_APPINFO , fURIStringPool->addOrFind(SchemaSymbols::fgURI_SCHEMAFORSCHEMA) , SchemaElementDecl::Any, Grammar::TOP_LEVEL_SCOPE , memMgr ); appInfoElemDecl->setCreateReason(XMLElementDecl::Declared); appInfoElemDecl->setAttWildCard ( new (memMgr) SchemaAttDef ( XMLUni::fgZeroLenString, XMLUni::fgZeroLenString, fEmptyNamespaceURI, XMLAttDef::Any_Any, XMLAttDef::ProcessContents_Lax, memMgr ) ); grammar->putElemDecl(appInfoElemDecl); complexType->addElement(appInfoElemDecl); SchemaElementDecl* docElemDecl = new (memMgr) SchemaElementDecl ( XMLUni::fgZeroLenString , SchemaSymbols::fgELT_DOCUMENTATION , fURIStringPool->addOrFind(SchemaSymbols::fgURI_SCHEMAFORSCHEMA) , SchemaElementDecl::Any, Grammar::TOP_LEVEL_SCOPE , memMgr ); docElemDecl->setCreateReason(XMLElementDecl::Declared); docElemDecl->setAttWildCard ( new (memMgr) SchemaAttDef ( XMLUni::fgZeroLenString, XMLUni::fgZeroLenString, fEmptyNamespaceURI, XMLAttDef::Any_Any, XMLAttDef::ProcessContents_Lax, memMgr ) ); grammar->putElemDecl(docElemDecl); complexType->addElement(docElemDecl); ContentSpecNode* left = new (memMgr) ContentSpecNode(appInfoElemDecl, memMgr); ContentSpecNode* right = new (memMgr) ContentSpecNode(docElemDecl, memMgr); ContentSpecNode* root = new (memMgr) ContentSpecNode(ContentSpecNode::ModelGroupChoice , left , right , true , true , memMgr); root->setMinOccurs(0); root->setMaxOccurs(SchemaSymbols::XSD_UNBOUNDED); complexType->setContentSpec(root); // create input source to scan MemBufInputSource* memBufIS = new (memMgr) MemBufInputSource ( (const XMLByte*)xsAnnot.getAnnotationString() , XMLString::stringLen(xsAnnot.getAnnotationString())*sizeof(XMLCh) , SchemaSymbols::fgELT_ANNOTATION , false , memMgr ); Janitor janMemBuf(memBufIS); memBufIS->setEncoding(XMLUni::fgXMLChEncodingString); memBufIS->setCopyBufToStream(false); XSAXMLScanner *scanner = new (memMgr) XSAXMLScanner ( fGrammarResolver, fURIStringPool, grammar, memMgr ); Janitor janScanner(scanner); AnnotationErrorReporter annErrReporter(fErrorReporter); scanner->setErrorReporter(&annErrReporter); XMLFileLoc line, col; xsAnnot.getLineCol(line, col); annErrReporter.setSystemIdAndPosition(xsAnnot.getSystemId(), line, col); scanner->scanDocument(*memBufIS); nextAnnot = xsAnnot.getNext(); while (nextAnnot || xsAnnotationEnum.hasMoreElements()) { if (nextAnnot) { memBufIS->resetMemBufInputSource((const XMLByte*)nextAnnot->getAnnotationString() , XMLString::stringLen(nextAnnot->getAnnotationString())*sizeof(XMLCh)); nextAnnot->getLineCol(line, col); annErrReporter.setSystemIdAndPosition(nextAnnot->getSystemId(), line, col); nextAnnot = nextAnnot->getNext(); } else { XSAnnotation& xsAnnot = xsAnnotationEnum.nextElement(); memBufIS->resetMemBufInputSource((const XMLByte*)xsAnnot.getAnnotationString() , XMLString::stringLen(xsAnnot.getAnnotationString())*sizeof(XMLCh)); xsAnnot.getLineCol(line, col); annErrReporter.setSystemIdAndPosition(xsAnnot.getSystemId(), line, col); nextAnnot = xsAnnot.getNext(); } scanner->scanDocument(*memBufIS); } } const XMLCh* TraverseSchema::getElementAttValue(const DOMElement* const elem, const XMLCh* const attName, const DatatypeValidator::ValidatorType attType /* = UnKnown */) { DOMAttr* attNode = elem->getAttributeNode(attName); if (attNode == 0) { return 0; } const XMLCh* attValue = attNode->getValue(); if (attType < DatatypeValidator::ID) { static bool bInitialized = false; static short wsFacets[DatatypeValidator::ID] = {0}; if(!bInitialized) { bInitialized=true; DVHashTable* registry = DatatypeValidatorFactory::getBuiltInRegistry(); wsFacets[DatatypeValidator::String] = registry->get(SchemaSymbols::fgDT_STRING)->getWSFacet(); wsFacets[DatatypeValidator::AnyURI] = registry->get(SchemaSymbols::fgDT_ANYURI)->getWSFacet(); wsFacets[DatatypeValidator::QName] = registry->get(SchemaSymbols::fgDT_QNAME)->getWSFacet(); wsFacets[DatatypeValidator::Name] = registry->get(SchemaSymbols::fgDT_NAME)->getWSFacet(); wsFacets[DatatypeValidator::NCName] = registry->get(SchemaSymbols::fgDT_NCNAME)->getWSFacet(); wsFacets[DatatypeValidator::Boolean] = registry->get(SchemaSymbols::fgDT_BOOLEAN)->getWSFacet(); wsFacets[DatatypeValidator::Float] = registry->get(SchemaSymbols::fgDT_FLOAT)->getWSFacet(); wsFacets[DatatypeValidator::Double] = registry->get(SchemaSymbols::fgDT_DOUBLE)->getWSFacet(); wsFacets[DatatypeValidator::Decimal] = registry->get(SchemaSymbols::fgDT_DECIMAL)->getWSFacet(); wsFacets[DatatypeValidator::HexBinary] = registry->get(SchemaSymbols::fgDT_HEXBINARY)->getWSFacet(); wsFacets[DatatypeValidator::Base64Binary]= registry->get(SchemaSymbols::fgDT_BASE64BINARY)->getWSFacet(); wsFacets[DatatypeValidator::Duration] = registry->get(SchemaSymbols::fgDT_DURATION)->getWSFacet(); wsFacets[DatatypeValidator::DateTime] = registry->get(SchemaSymbols::fgDT_DATETIME)->getWSFacet(); wsFacets[DatatypeValidator::Date] = registry->get(SchemaSymbols::fgDT_DATE)->getWSFacet(); wsFacets[DatatypeValidator::Time] = registry->get(SchemaSymbols::fgDT_TIME)->getWSFacet(); wsFacets[DatatypeValidator::MonthDay] = registry->get(SchemaSymbols::fgDT_MONTHDAY)->getWSFacet(); wsFacets[DatatypeValidator::YearMonth] = registry->get(SchemaSymbols::fgDT_YEARMONTH)->getWSFacet(); wsFacets[DatatypeValidator::Year] = registry->get(SchemaSymbols::fgDT_YEAR)->getWSFacet(); wsFacets[DatatypeValidator::Month] = registry->get(SchemaSymbols::fgDT_MONTH)->getWSFacet(); wsFacets[DatatypeValidator::Day] = registry->get(SchemaSymbols::fgDT_DAY)->getWSFacet(); } short wsFacet = wsFacets[attType]; if((wsFacet == DatatypeValidator::REPLACE && !XMLString::isWSReplaced(attValue)) || (wsFacet == DatatypeValidator::COLLAPSE && !XMLString::isWSCollapsed(attValue))) { XMLCh* normalizedValue=XMLString::replicate(attValue, fMemoryManager); ArrayJanitor tempName(normalizedValue, fMemoryManager); if(wsFacet == DatatypeValidator::REPLACE) XMLString::replaceWS(normalizedValue, fMemoryManager); else if(wsFacet == DatatypeValidator::COLLAPSE) XMLString::collapseWS(normalizedValue, fMemoryManager); if (!*normalizedValue) return XMLUni::fgZeroLenString; return fStringPool->getValueForId(fStringPool->addOrFind(normalizedValue)); } } return attValue; } XERCES_CPP_NAMESPACE_END /** * End of file TraverseSchema.cpp */ xerces-c-3.1.1/src/xercesc/validators/schema/SubstitutionGroupComparator.hpp0000644000175000017500000001043111360344373026373 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SubstitutionGroupComparator.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_SUBSTITUTIONGROUPCOMPARATOR_HPP) #define XERCESC_INCLUDE_GUARD_SUBSTITUTIONGROUPCOMPARATOR_HPP #include #include #include XERCES_CPP_NAMESPACE_BEGIN class SchemaGrammar; class VALIDATORS_EXPORT SubstitutionGroupComparator : public XMemory { public: // ----------------------------------------------------------------------- // Public Constructor // ----------------------------------------------------------------------- /** @name Constructor. */ //@{ SubstitutionGroupComparator(GrammarResolver* const pGrammarResolver , XMLStringPool* const pStringPool); //@} // ----------------------------------------------------------------------- // Public Destructor // ----------------------------------------------------------------------- /** @name Destructor. */ //@{ ~SubstitutionGroupComparator(); //@} // ----------------------------------------------------------------------- // Validation methods // ----------------------------------------------------------------------- /** @name Validation Function */ //@{ /** * Checks that the "anElement" is within the substitution group. * * @param anElement QName of the element * * @param exemplar QName of the head element in the group */ bool isEquivalentTo(const QName* const anElement , const QName* const exemplar); //@} /* * check whether one element or any element in its substitution group * is allowed by a given wildcard uri * * @param pGrammar the grammar where the wildcard is declared * @param element the QName of a given element * @param wuri the uri of the wildcard * @param wother whether the uri is from ##other, so wuri is excluded * * @return whether the element is allowed by the wildcard */ bool isAllowedByWildcard(SchemaGrammar* const pGrammar, QName* const element, unsigned int wuri, bool wother); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- SubstitutionGroupComparator(); SubstitutionGroupComparator(const SubstitutionGroupComparator&); SubstitutionGroupComparator& operator=(const SubstitutionGroupComparator&); // ----------------------------------------------------------------------- // Private data members // // // ----------------------------------------------------------------------- GrammarResolver *fGrammarResolver; XMLStringPool *fStringPool; }; // --------------------------------------------------------------------------- // SubstitutionGroupComparator: Getters // --------------------------------------------------------------------------- inline SubstitutionGroupComparator::SubstitutionGroupComparator(GrammarResolver* const pGrammarResolver , XMLStringPool* const pStringPool) :fGrammarResolver(pGrammarResolver) ,fStringPool(pStringPool) {} inline SubstitutionGroupComparator::~SubstitutionGroupComparator() {} XERCES_CPP_NAMESPACE_END #endif /** * End of file SubstitutionGroupComparator.hpp */ xerces-c-3.1.1/src/xercesc/validators/common/0000755000175000017500000000000011363617240020131 5ustar borisborisxerces-c-3.1.1/src/xercesc/validators/common/CMStateSet.hpp0000644000175000017500000005550611325541216022626 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: CMStateSet.hpp 901107 2010-01-20 08:45:02Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_CMSTATESET_HPP) #define XERCESC_INCLUDE_GUARD_CMSTATESET_HPP // DESCRIPTION: // // This class is a specialized bitset class for the content model code of // the validator. It assumes that its never called with two objects of // different bit counts, and that bit sets smaller than a threshold are far // and away the most common. So it can be a lot more optimized than a general // purpose utility bitset class // #include #include #include #include #include #if XERCES_HAVE_EMMINTRIN_H # include #endif XERCES_CPP_NAMESPACE_BEGIN class CMStateSetEnumerator; // This value must be 4 in order to use the SSE2 instruction set #define CMSTATE_CACHED_INT32_SIZE 4 // This value must be a multiple of 128 in order to use the SSE2 instruction set #define CMSTATE_BITFIELD_CHUNK 1024 #define CMSTATE_BITFIELD_INT32_SIZE (1024 / 32) struct CMDynamicBuffer { // fArraySize // This indicates the number of elements of the fBitArray vector // // fBitArray // A vector of arrays of XMLInt32; each array is allocated on demand // if a bit needs to be set in that range // // fMemoryManager // The memory manager used to allocate and deallocate memory // XMLSize_t fArraySize; XMLInt32** fBitArray; MemoryManager* fMemoryManager; }; class CMStateSet : public XMemory { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- CMStateSet( const XMLSize_t bitCount , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) : fBitCount(bitCount) , fDynamicBuffer(0) { // // See if we need to allocate the byte array or whether we can live // within the cached bit high performance scheme. // if (fBitCount > (CMSTATE_CACHED_INT32_SIZE * 32)) { fDynamicBuffer = (CMDynamicBuffer*)manager->allocate(sizeof(CMDynamicBuffer)); fDynamicBuffer->fMemoryManager = manager; // allocate an array of vectors, each one containing CMSTATE_BITFIELD_CHUNK bits fDynamicBuffer->fArraySize = fBitCount / CMSTATE_BITFIELD_CHUNK; if (fBitCount % CMSTATE_BITFIELD_CHUNK) fDynamicBuffer->fArraySize++; fDynamicBuffer->fBitArray = (XMLInt32**) fDynamicBuffer->fMemoryManager->allocate(fDynamicBuffer->fArraySize*sizeof(XMLInt32*)); for(XMLSize_t index = 0; index < fDynamicBuffer->fArraySize; index++) fDynamicBuffer->fBitArray[index]=NULL; } else { for (XMLSize_t index = 0; index < CMSTATE_CACHED_INT32_SIZE; index++) fBits[index] = 0; } } CMStateSet(const CMStateSet& toCopy) : XMemory(toCopy) , fBitCount(toCopy.fBitCount) , fDynamicBuffer(0) { // // See if we need to allocate the byte array or whether we can live // within the cahced bit high performance scheme. // if (fBitCount > (CMSTATE_CACHED_INT32_SIZE * 32)) { fDynamicBuffer = (CMDynamicBuffer*) toCopy.fDynamicBuffer->fMemoryManager->allocate(sizeof(CMDynamicBuffer)); fDynamicBuffer->fMemoryManager = toCopy.fDynamicBuffer->fMemoryManager; fDynamicBuffer->fArraySize = fBitCount / CMSTATE_BITFIELD_CHUNK; if (fBitCount % CMSTATE_BITFIELD_CHUNK) fDynamicBuffer->fArraySize++; fDynamicBuffer->fBitArray = (XMLInt32**) fDynamicBuffer->fMemoryManager->allocate(fDynamicBuffer->fArraySize*sizeof(XMLInt32*)); for(XMLSize_t index = 0; index < fDynamicBuffer->fArraySize; index++) { if(toCopy.fDynamicBuffer->fBitArray[index]!=NULL) { allocateChunk(index); memcpy((void *) fDynamicBuffer->fBitArray[index], (const void *) toCopy.fDynamicBuffer->fBitArray[index], CMSTATE_BITFIELD_INT32_SIZE * sizeof(XMLInt32)); } else fDynamicBuffer->fBitArray[index]=NULL; } } else { memcpy((void *) fBits, (const void *) toCopy.fBits, CMSTATE_CACHED_INT32_SIZE * sizeof(XMLInt32)); } } ~CMStateSet() { if(fDynamicBuffer) { for(XMLSize_t index = 0; index < fDynamicBuffer->fArraySize; index++) if(fDynamicBuffer->fBitArray[index]!=NULL) deallocateChunk(index); fDynamicBuffer->fMemoryManager->deallocate(fDynamicBuffer->fBitArray); fDynamicBuffer->fMemoryManager->deallocate(fDynamicBuffer); } } // ----------------------------------------------------------------------- // Set manipulation methods // ----------------------------------------------------------------------- void operator|=(const CMStateSet& setToOr) { if(fDynamicBuffer==0) { #ifdef XERCES_HAVE_SSE2_INTRINSIC if(XMLPlatformUtils::fgSSE2ok) { __m128i xmm1 = _mm_loadu_si128((__m128i*)fBits); __m128i xmm2 = _mm_loadu_si128((__m128i*)setToOr.fBits); __m128i xmm3 = _mm_or_si128(xmm1, xmm2); // OR 4 32-bit words _mm_storeu_si128((__m128i*)fBits, xmm3); } else #endif { for (XMLSize_t index = 0; index < CMSTATE_CACHED_INT32_SIZE; index++) if(setToOr.fBits[index]) { if(fBits[index]) fBits[index] |= setToOr.fBits[index]; else fBits[index] = setToOr.fBits[index]; } } } else { for (XMLSize_t index = 0; index < fDynamicBuffer->fArraySize; index++) { XMLInt32 *& other = setToOr.fDynamicBuffer->fBitArray[index]; if(other!=NULL) { // if we haven't allocated the subvector yet, allocate it and copy if(fDynamicBuffer->fBitArray[index]==NULL) { allocateChunk(index); memcpy((void *) fDynamicBuffer->fBitArray[index], (const void *) other, CMSTATE_BITFIELD_INT32_SIZE * sizeof(XMLInt32)); } else { // otherwise, merge them XMLInt32*& mine = fDynamicBuffer->fBitArray[index]; #ifdef XERCES_HAVE_SSE2_INTRINSIC if(XMLPlatformUtils::fgSSE2ok) { for(XMLSize_t subIndex = 0; subIndex < CMSTATE_BITFIELD_INT32_SIZE; subIndex+=4) { __m128i xmm1 = _mm_load_si128((__m128i*)&other[subIndex]); __m128i xmm2 = _mm_load_si128((__m128i*)&mine[subIndex]); __m128i xmm3 = _mm_or_si128(xmm1, xmm2); // OR 4 32-bit words _mm_store_si128((__m128i*)&mine[subIndex], xmm3); } } else #endif { for(XMLSize_t subIndex = 0; subIndex < CMSTATE_BITFIELD_INT32_SIZE; subIndex++) if(setToOr.fDynamicBuffer->fBitArray[index][subIndex]) { if(fDynamicBuffer->fBitArray[index][subIndex]) fDynamicBuffer->fBitArray[index][subIndex] |= setToOr.fDynamicBuffer->fBitArray[index][subIndex]; else fDynamicBuffer->fBitArray[index][subIndex] = setToOr.fDynamicBuffer->fBitArray[index][subIndex]; } } } } } } } bool operator==(const CMStateSet& setToCompare) const { if (fBitCount != setToCompare.fBitCount) return false; if(fDynamicBuffer==0) { for (XMLSize_t index = 0; index < CMSTATE_CACHED_INT32_SIZE; index++) { if (fBits[index] != setToCompare.fBits[index]) return false; } } else { for (XMLSize_t index = 0; index < fDynamicBuffer->fArraySize; index++) { XMLInt32 *& other = setToCompare.fDynamicBuffer->fBitArray[index], *& mine = fDynamicBuffer->fBitArray[index]; if(mine==NULL && other==NULL) continue; else if(mine==NULL || other==NULL) // the other should have been empty too return false; else { for(XMLSize_t subIndex = 0; subIndex < CMSTATE_BITFIELD_INT32_SIZE; subIndex++) if(mine[subIndex]!=other[subIndex]) return false; } } } return true; } CMStateSet& operator=(const CMStateSet& srcSet) { if (this == &srcSet) return *this; // They have to be the same size if (fBitCount != srcSet.fBitCount) { if(fDynamicBuffer) ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Bitset_NotEqualSize, fDynamicBuffer->fMemoryManager); else ThrowXML(RuntimeException, XMLExcepts::Bitset_NotEqualSize); } if(fDynamicBuffer==0) { for (XMLSize_t index = 0; index < CMSTATE_CACHED_INT32_SIZE; index++) fBits[index] = srcSet.fBits[index]; } else { for (XMLSize_t index = 0; index < fDynamicBuffer->fArraySize; index++) if(srcSet.fDynamicBuffer->fBitArray[index]==NULL) { // delete this subentry if(fDynamicBuffer->fBitArray[index]!=NULL) deallocateChunk(index); } else { // if we haven't allocated the subvector yet, allocate it and copy if(fDynamicBuffer->fBitArray[index]==NULL) allocateChunk(index); memcpy((void *) fDynamicBuffer->fBitArray[index], (const void *) srcSet.fDynamicBuffer->fBitArray[index], CMSTATE_BITFIELD_INT32_SIZE * sizeof(XMLInt32)); } } return *this; } XMLSize_t getBitCountInRange(XMLSize_t start, XMLSize_t end) const { XMLSize_t count = 0; end /= 32; if(fDynamicBuffer==0) { if(end > CMSTATE_CACHED_INT32_SIZE) end = CMSTATE_CACHED_INT32_SIZE; for (XMLSize_t index = start / 32; index < end; index++) { if (fBits[index] != 0) for(int i=0;i<32;i++) { const XMLInt32 mask = 1UL << i; if(fBits[index] & mask) count++; } } } else { if(end > fDynamicBuffer->fArraySize) end = fDynamicBuffer->fArraySize; for (XMLSize_t index = start / 32; index < end; index++) { if(fDynamicBuffer->fBitArray[index]==NULL) continue; for(XMLSize_t subIndex=0;subIndex < CMSTATE_BITFIELD_INT32_SIZE; subIndex++) { if (fDynamicBuffer->fBitArray[index][subIndex] != 0) for(int i=0;i<32;i++) { const XMLInt32 mask = 1UL << i; if(fDynamicBuffer->fBitArray[index][subIndex] & mask) count++; } } } } return count; } bool getBit(const XMLSize_t bitToGet) const { if (bitToGet >= fBitCount) { if(fDynamicBuffer) ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Bitset_BadIndex, fDynamicBuffer->fMemoryManager); else ThrowXML(ArrayIndexOutOfBoundsException, XMLExcepts::Bitset_BadIndex); } // And access the right bit and byte if(fDynamicBuffer==0) { const XMLInt32 mask = 1UL << (bitToGet % 32); const XMLSize_t byteOfs = bitToGet / 32; return (fBits[byteOfs]!=0 && (fBits[byteOfs] & mask) != 0); } else { const XMLSize_t vectorOfs = bitToGet / CMSTATE_BITFIELD_CHUNK; if(fDynamicBuffer->fBitArray[vectorOfs]==NULL) return false; const XMLInt32 mask = 1UL << (bitToGet % 32); const XMLSize_t byteOfs = (bitToGet % CMSTATE_BITFIELD_CHUNK) / 32; return (fDynamicBuffer->fBitArray[vectorOfs][byteOfs]!=0 && (fDynamicBuffer->fBitArray[vectorOfs][byteOfs] & mask) != 0); } } bool isEmpty() const { if(fDynamicBuffer==0) { for (XMLSize_t index = 0; index < CMSTATE_CACHED_INT32_SIZE; index++) { if (fBits[index] != 0) return false; } } else { for (XMLSize_t index = 0; index < fDynamicBuffer->fArraySize; index++) { if(fDynamicBuffer->fBitArray[index]==NULL) continue; for(XMLSize_t subIndex=0;subIndex < CMSTATE_BITFIELD_INT32_SIZE; subIndex++) { if (fDynamicBuffer->fBitArray[index][subIndex] != 0) return false; } } } return true; } void setBit(const XMLSize_t bitToSet) { if (bitToSet >= fBitCount) { if(fDynamicBuffer) ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Bitset_BadIndex, fDynamicBuffer->fMemoryManager); else ThrowXML(ArrayIndexOutOfBoundsException, XMLExcepts::Bitset_BadIndex); } const XMLInt32 mask = 1UL << (bitToSet % 32); // And access the right bit and byte if(fDynamicBuffer==0) { const XMLSize_t byteOfs = bitToSet / 32; fBits[byteOfs] &= ~mask; fBits[byteOfs] |= mask; } else { const XMLSize_t vectorOfs = bitToSet / CMSTATE_BITFIELD_CHUNK; if(fDynamicBuffer->fBitArray[vectorOfs]==NULL) { allocateChunk(vectorOfs); for(XMLSize_t index=0;index < CMSTATE_BITFIELD_INT32_SIZE; index++) fDynamicBuffer->fBitArray[vectorOfs][index]=0; } const XMLSize_t byteOfs = (bitToSet % CMSTATE_BITFIELD_CHUNK) / 32; fDynamicBuffer->fBitArray[vectorOfs][byteOfs] &= ~mask; fDynamicBuffer->fBitArray[vectorOfs][byteOfs] |= mask; } } void zeroBits() { if(fDynamicBuffer==0) { for (XMLSize_t index = 0; index < CMSTATE_CACHED_INT32_SIZE; index++) fBits[index] = 0; } else { for (XMLSize_t index = 0; index < fDynamicBuffer->fArraySize; index++) // delete this subentry if(fDynamicBuffer->fBitArray[index]!=NULL) deallocateChunk(index); } } XMLSize_t hashCode() const { XMLSize_t hash = 0; if(fDynamicBuffer==0) { for (XMLSize_t index = 0; indexfArraySize; index++) { if(fDynamicBuffer->fBitArray[index]==NULL) // simulates the iteration on the missing bits for(XMLSize_t subIndex=0;subIndex < CMSTATE_BITFIELD_INT32_SIZE; subIndex++) hash *= 31; else for(XMLSize_t subIndex=0;subIndex < CMSTATE_BITFIELD_INT32_SIZE; subIndex++) hash = fDynamicBuffer->fBitArray[index][subIndex] + hash * 31; } } return hash; } private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- CMStateSet(); // ----------------------------------------------------------------------- // Helpers // ----------------------------------------------------------------------- void allocateChunk(const XMLSize_t index) { #ifdef XERCES_HAVE_SSE2_INTRINSIC if(XMLPlatformUtils::fgSSE2ok) fDynamicBuffer->fBitArray[index]=(XMLInt32*)_mm_malloc(CMSTATE_BITFIELD_INT32_SIZE * sizeof(XMLInt32), 16); else #endif fDynamicBuffer->fBitArray[index]=(XMLInt32*)fDynamicBuffer->fMemoryManager->allocate(CMSTATE_BITFIELD_INT32_SIZE * sizeof(XMLInt32)); } void deallocateChunk(const XMLSize_t index) { #ifdef XERCES_HAVE_SSE2_INTRINSIC if(XMLPlatformUtils::fgSSE2ok) _mm_free(fDynamicBuffer->fBitArray[index]); else #endif fDynamicBuffer->fMemoryManager->deallocate(fDynamicBuffer->fBitArray[index]); fDynamicBuffer->fBitArray[index]=NULL; } // ----------------------------------------------------------------------- // Private data members // // fBitCount // The count of bits that the outside world wants to support, // so its the max bit index plus one. // // fBits // When the bit count is less than a threshold (very common), these hold the bits. // Otherwise, the fDynamicBuffer member holds htem. // // fDynamicBuffer // If the bit count is greater than the threshold, then we allocate this structure to // store the bits, the length, and the memory manager to allocate/deallocate // the memory // // ----------------------------------------------------------------------- XMLSize_t fBitCount; XMLInt32 fBits[CMSTATE_CACHED_INT32_SIZE]; CMDynamicBuffer* fDynamicBuffer; friend class CMStateSetEnumerator; }; class CMStateSetEnumerator : public XMemory { public: CMStateSetEnumerator(const CMStateSet* toEnum, XMLSize_t start = 0) : fToEnum(toEnum), fIndexCount((XMLSize_t)-1), fLastValue(0) { // if a starting bit is specified, place fIndexCount at the beginning of the previous 32 bit area // so the findNext moves to the one where 'start' is located if(start > 32) fIndexCount = (start/32 - 1) * 32; findNext(); // if we found data, and fIndexCount is still pointing to the area where 'start' is located, erase the bits before 'start' if(hasMoreElements() && fIndexCount < start) { for(XMLSize_t i=0;i< (start - fIndexCount);i++) { XMLInt32 mask=1UL << i; if(fLastValue & mask) fLastValue &= ~mask; } // in case the 32 bit area contained only bits before 'start', advance if(fLastValue==0) findNext(); } } bool hasMoreElements() { return fLastValue!=0; } unsigned int nextElement() { for(int i=0;i<32;i++) { XMLInt32 mask=1UL << i; if(fLastValue & mask) { fLastValue &= ~mask; unsigned int retVal=(unsigned int)fIndexCount+i; if(fLastValue==0) findNext(); return retVal; } } return 0; } private: void findNext() { if(fToEnum->fDynamicBuffer==0) { XMLSize_t nOffset=((fIndexCount==(XMLSize_t)-1)?0:(fIndexCount/32)+1); for(XMLSize_t index=nOffset;indexfBits[index]!=0) { fIndexCount=index*32; fLastValue=fToEnum->fBits[index]; return; } } } else { XMLSize_t nOffset=((fIndexCount==(XMLSize_t)-1)?0:(fIndexCount/CMSTATE_BITFIELD_CHUNK)); XMLSize_t nSubOffset=((fIndexCount==(XMLSize_t)-1)?0:((fIndexCount % CMSTATE_BITFIELD_CHUNK) /32)+1); for (XMLSize_t index = nOffset; indexfDynamicBuffer->fArraySize; index++) { if(fToEnum->fDynamicBuffer->fBitArray[index]!=NULL) { for(XMLSize_t subIndex=nSubOffset;subIndex < CMSTATE_BITFIELD_INT32_SIZE; subIndex++) if(fToEnum->fDynamicBuffer->fBitArray[index][subIndex]!=0) { fIndexCount=index*CMSTATE_BITFIELD_CHUNK + subIndex*32; fLastValue=fToEnum->fDynamicBuffer->fBitArray[index][subIndex]; return; } } nSubOffset = 0; // next chunks will be processed from the beginning } } } const CMStateSet* fToEnum; XMLSize_t fIndexCount; XMLInt32 fLastValue; }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/validators/common/MixedContentModel.hpp0000644000175000017500000001730411325541216024226 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: MixedContentModel.hpp 901107 2010-01-20 08:45:02Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_MIXEDCONTENTMODEL_HPP) #define XERCESC_INCLUDE_GUARD_MIXEDCONTENTMODEL_HPP #include #include #include XERCES_CPP_NAMESPACE_BEGIN class ContentSpecNode; // // MixedContentModel is a derivative of the abstract content model base // class that handles the special case of mixed model elements. If an element // is mixed model, it has PCDATA as its first possible content, followed // by an alternation of the possible children. The children cannot have any // numeration or order, so it must look like this: // // // // So, all we have to do is to keep an array of the possible children and // validate by just looking up each child being validated by looking it up // in the list. // class MixedContentModel : public XMLContentModel { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- MixedContentModel ( const bool dtd , ContentSpecNode* const parentContentSpec , const bool ordered = false , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); ~MixedContentModel(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- bool hasDups() const; // ----------------------------------------------------------------------- // Implementation of the ContentModel virtual interface // ----------------------------------------------------------------------- virtual bool validateContent ( QName** const children , XMLSize_t childCount , unsigned int emptyNamespaceId , XMLSize_t* indexFailingChild , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ) const; virtual bool validateContentSpecial ( QName** const children , XMLSize_t childCount , unsigned int emptyNamespaceId , GrammarResolver* const pGrammarResolver , XMLStringPool* const pStringPool , XMLSize_t* indexFailingChild , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ) const; virtual ContentLeafNameTypeVector* getContentLeafNameTypeVector() const ; virtual unsigned int getNextState(unsigned int currentState, XMLSize_t elementIndex) const; virtual bool handleRepetitions( const QName* const curElem, unsigned int curState, unsigned int currentLoop, unsigned int& nextState, unsigned int& nextLoop, XMLSize_t elementIndex, SubstitutionGroupComparator * comparator) const; virtual void checkUniqueParticleAttribution ( SchemaGrammar* const pGrammar , GrammarResolver* const pGrammarResolver , XMLStringPool* const pStringPool , XMLValidator* const pValidator , unsigned int* const pContentSpecOrgURI , const XMLCh* pComplexTypeName = 0 ) ; private : // ----------------------------------------------------------------------- // Private helper methods // ----------------------------------------------------------------------- void buildChildList ( ContentSpecNode* const curNode , ValueVectorOf& toFill , ValueVectorOf& toType ); // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- MixedContentModel(); MixedContentModel(const MixedContentModel&); MixedContentModel& operator=(const MixedContentModel&); // ----------------------------------------------------------------------- // Private data members // // fCount // The count of possible children in the fChildren member. // // fChildren // The list of possible children that we have to accept. This array // is allocated as large as needed in the constructor. // // fChildTypes // The type of the children to support ANY. // // fOrdered // True if mixed content model is ordered. DTD mixed content models // are always unordered. // // fDTD // Boolean to allow DTDs to validate even with namespace support. // // ----------------------------------------------------------------------- XMLSize_t fCount; QName** fChildren; ContentSpecNode::NodeTypes* fChildTypes; bool fOrdered; bool fDTD; MemoryManager* fMemoryManager; }; inline ContentLeafNameTypeVector* MixedContentModel::getContentLeafNameTypeVector() const { return 0; } inline unsigned int MixedContentModel::getNextState(unsigned int, XMLSize_t) const { return XMLContentModel::gInvalidTrans; } inline bool MixedContentModel::handleRepetitions( const QName* const /*curElem*/, unsigned int /*curState*/, unsigned int /*currentLoop*/, unsigned int& /*nextState*/, unsigned int& /*nextLoop*/, XMLSize_t /*elementIndex*/, SubstitutionGroupComparator * /*comparator*/) const { return true; } inline void MixedContentModel::checkUniqueParticleAttribution ( SchemaGrammar* const , GrammarResolver* const , XMLStringPool* const , XMLValidator* const , unsigned int* const pContentSpecOrgURI , const XMLCh* /*pComplexTypeName*/ /*= 0*/ ) { // rename back unsigned int i = 0; for (i = 0; i < fCount; i++) { unsigned int orgURIIndex = fChildren[i]->getURI(); if ((orgURIIndex != XMLContentModel::gEOCFakeId) && (orgURIIndex != XMLElementDecl::fgInvalidElemId) && (orgURIIndex != XMLElementDecl::fgPCDataElemId)) fChildren[i]->setURI(pContentSpecOrgURI[orgURIIndex]); } // for mixed content model, it's only a sequence // UPA checking is not necessary } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/validators/common/CMBinaryOp.hpp0000644000175000017500000000625411037446664022624 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: CMBinaryOp.hpp 677396 2008-07-16 19:36:20Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_CMBINARYOP_HPP) #define XERCESC_INCLUDE_GUARD_CMBINARYOP_HPP #include XERCES_CPP_NAMESPACE_BEGIN class CMStateSet; class CMBinaryOp : public CMNode { public : // ----------------------------------------------------------------------- // Constructors // ----------------------------------------------------------------------- CMBinaryOp ( ContentSpecNode::NodeTypes type , CMNode* const leftToAdopt , CMNode* const rightToAdopt , unsigned int maxStates , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); ~CMBinaryOp(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const CMNode* getLeft() const; CMNode* getLeft(); const CMNode* getRight() const; CMNode* getRight(); // ----------------------------------------------------------------------- // Implementation of the public CMNode virtual interface // ----------------------------------------------------------------------- virtual void orphanChild(); protected : // ----------------------------------------------------------------------- // Implementation of the protected CMNode virtual interface // ----------------------------------------------------------------------- void calcFirstPos(CMStateSet& toSet) const; void calcLastPos(CMStateSet& toSet) const; private : // ----------------------------------------------------------------------- // Private data members // // fLeftChild // fRightChild // These are the references to the two nodes that are on either side // of this binary operation. We own them both. // ----------------------------------------------------------------------- CMNode* fLeftChild; CMNode* fRightChild; // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- CMBinaryOp(const CMBinaryOp&); CMBinaryOp& operator=(const CMBinaryOp&); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/validators/common/MixedContentModel.cpp0000644000175000017500000003732411037122704024222 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: MixedContentModel.cpp 676911 2008-07-15 13:27:32Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // MixedContentModel: Constructors and Destructor // --------------------------------------------------------------------------- MixedContentModel::MixedContentModel(const bool dtd , ContentSpecNode* const parentContentSpec , const bool ordered , MemoryManager* const manager) : fCount(0) , fChildren(0) , fChildTypes(0) , fOrdered(ordered) , fDTD(dtd) , fMemoryManager(manager) { // // Create a vector of unsigned ints that will be filled in with the // ids of the child nodes. It will be expanded as needed but we give // it an initial capacity of 64 which should be more than enough for // 99% of the scenarios. // ValueVectorOf children(64, fMemoryManager); ValueVectorOf childTypes(64, fMemoryManager); // // Get the parent element's content spec. This is the head of the tree // of nodes that describes the content model. We will iterate this // tree. // ContentSpecNode* curNode = parentContentSpec; if (!curNode) ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::CM_NoParentCSN, fMemoryManager); // And now call the private recursive method that iterates the tree buildChildList(curNode, children, childTypes); // // And now we know how many elements we need in our member list. So // fill them in. // fCount = children.size(); fChildren = (QName**) fMemoryManager->allocate(fCount * sizeof(QName*)); //new QName*[fCount]; fChildTypes = (ContentSpecNode::NodeTypes*) fMemoryManager->allocate ( fCount * sizeof(ContentSpecNode::NodeTypes) ); //new ContentSpecNode::NodeTypes[fCount]; for (XMLSize_t index = 0; index < fCount; index++) { fChildren[index] = new (fMemoryManager) QName(*children.elementAt(index)); fChildTypes[index] = childTypes.elementAt(index); } } MixedContentModel::~MixedContentModel() { for (XMLSize_t index = 0; index < fCount; index++) { delete fChildren[index]; } fMemoryManager->deallocate(fChildren); //delete [] fChildren; fMemoryManager->deallocate(fChildTypes); //delete [] fChildTypes; } // --------------------------------------------------------------------------- // MixedContentModel: Getter methods // --------------------------------------------------------------------------- bool MixedContentModel::hasDups() const { // Can't have dups if only one child if (fCount == 1) return false; for (XMLSize_t index = 0; index < fCount; index++) { const QName* curVal = fChildren[index]; for (XMLSize_t iIndex = 0; iIndex < fCount; iIndex++) { if (iIndex == index) continue; if (fDTD) { if (XMLString::equals(curVal->getRawName(), fChildren[iIndex]->getRawName())) { return true; } } else { if ((curVal->getURI() == fChildren[iIndex]->getURI()) && (XMLString::equals(curVal->getLocalPart(), fChildren[iIndex]->getLocalPart()))) { return true; } } } } return false; } // --------------------------------------------------------------------------- // MixedContentModel: Implementation of the ContentModel virtual interface // --------------------------------------------------------------------------- // //Under the XML Schema mixed model, //the order and number of child elements appearing in an instance //must agree with //the order and number of child elements specified in the model. // bool MixedContentModel::validateContent( QName** const children , XMLSize_t childCount , unsigned int , XMLSize_t* indexFailingChild , MemoryManager* const) const { // must match order if (fOrdered) { unsigned int inIndex = 0; for (unsigned int outIndex = 0; outIndex < childCount; outIndex++) { // Get the current child out of the source index const QName* curChild = children[outIndex]; // If its PCDATA, then we just accept that if (curChild->getURI() == XMLElementDecl::fgPCDataElemId) continue; ContentSpecNode::NodeTypes type = fChildTypes[inIndex]; const QName* inChild = fChildren[inIndex]; if (type == ContentSpecNode::Leaf) { if (fDTD) { if (!XMLString::equals(inChild->getRawName(), curChild->getRawName())) { *indexFailingChild=outIndex; return false; } } else { if ((inChild->getURI() != curChild->getURI()) || (!XMLString::equals(inChild->getLocalPart(), curChild->getLocalPart()))) { *indexFailingChild=outIndex; return false; } } } else if (type == ContentSpecNode::Any) { } else if (type == ContentSpecNode::Any_NS) { if (inChild->getURI() != curChild->getURI()) { *indexFailingChild=outIndex; return false; } } else if (type == ContentSpecNode::Any_Other) { // Here we assume that empty string has id 1. // unsigned int uriId = curChild->getURI(); if (uriId == 1 || uriId == inChild->getURI()) { *indexFailingChild=outIndex; return false; } } // advance index inIndex++; } } // can appear in any order else { for (unsigned int outIndex = 0; outIndex < childCount; outIndex++) { // Get the current child out of the source index const QName* curChild = children[outIndex]; // If its PCDATA, then we just accept that if (curChild->getURI() == XMLElementDecl::fgPCDataElemId) continue; // And try to find it in our list unsigned int inIndex = 0; for (; inIndex < fCount; inIndex++) { ContentSpecNode::NodeTypes type = fChildTypes[inIndex]; const QName* inChild = fChildren[inIndex]; if (type == ContentSpecNode::Leaf) { if (fDTD) { if (XMLString::equals(inChild->getRawName(), curChild->getRawName())) { break; } } else { if ((inChild->getURI() == curChild->getURI()) && (XMLString::equals(inChild->getLocalPart(), curChild->getLocalPart()))) { break; } } } else if (type == ContentSpecNode::Any) { break; } else if (type == ContentSpecNode::Any_NS) { if (inChild->getURI() == curChild->getURI()) break; } else if (type == ContentSpecNode::Any_Other) { // Here we assume that empty string has id 1. // unsigned int uriId = curChild->getURI(); if (uriId != 1 && uriId != inChild->getURI()) break; } // REVISIT: What about checking for multiple ANY matches? // The content model ambiguity *could* be checked // by the caller before constructing the mixed // content model. } // We did not find this one, so the validation failed if (inIndex == fCount) { *indexFailingChild=outIndex; return false; } } } // Everything seems to be in order, so return success return true; } bool MixedContentModel::validateContentSpecial(QName** const children , XMLSize_t childCount , unsigned int , GrammarResolver* const pGrammarResolver , XMLStringPool* const pStringPool , XMLSize_t* indexFailingChild , MemoryManager* const) const { SubstitutionGroupComparator comparator(pGrammarResolver, pStringPool); // must match order if (fOrdered) { unsigned int inIndex = 0; for (unsigned int outIndex = 0; outIndex < childCount; outIndex++) { // Get the current child out of the source index QName* curChild = children[outIndex]; // If its PCDATA, then we just accept that if (curChild->getURI() == XMLElementDecl::fgPCDataElemId) continue; ContentSpecNode::NodeTypes type = fChildTypes[inIndex]; QName* inChild = fChildren[inIndex]; if (type == ContentSpecNode::Leaf) { if ( !comparator.isEquivalentTo(curChild, inChild)) { *indexFailingChild=outIndex; return false; } } else if (type == ContentSpecNode::Any) { } else if (type == ContentSpecNode::Any_NS) { if (inChild->getURI() != curChild->getURI()) { *indexFailingChild=outIndex; return false; } } else if (type == ContentSpecNode::Any_Other) { // Here we assume that empty string has id 1. // unsigned int uriId = curChild->getURI(); if (uriId == 1 || uriId == inChild->getURI()) { *indexFailingChild=outIndex; return false; } } // advance index inIndex++; } } // can appear in any order else { for (unsigned int outIndex = 0; outIndex < childCount; outIndex++) { // Get the current child out of the source index QName* curChild = children[outIndex]; // If its PCDATA, then we just accept that if (curChild->getURI() == XMLElementDecl::fgPCDataElemId) continue; // And try to find it in our list unsigned int inIndex = 0; for (; inIndex < fCount; inIndex++) { ContentSpecNode::NodeTypes type = fChildTypes[inIndex]; QName* inChild = fChildren[inIndex]; if (type == ContentSpecNode::Leaf) { if ( comparator.isEquivalentTo(curChild, inChild)) break; } else if (type == ContentSpecNode::Any) { break; } else if (type == ContentSpecNode::Any_NS) { if (inChild->getURI() == curChild->getURI()) break; } else if (type == ContentSpecNode::Any_Other) { // Here we assume that empty string has id 1. // unsigned int uriId = curChild->getURI(); if (uriId != 1 && uriId != inChild->getURI()) break; } // REVISIT: What about checking for multiple ANY matches? // The content model ambiguity *could* be checked // by the caller before constructing the mixed // content model. } // We did not find this one, so the validation failed if (inIndex == fCount) { *indexFailingChild=outIndex; return false; } } } // Everything seems to be in order, so return success return true; } // --------------------------------------------------------------------------- // MixedContentModel: Private helper methods // --------------------------------------------------------------------------- void MixedContentModel::buildChildList( ContentSpecNode* const curNode , ValueVectorOf& toFill , ValueVectorOf& toType) { // Get the type of spec node our current node is const ContentSpecNode::NodeTypes curType = curNode->getType(); // If its a leaf, then store its id in the target list if ((curType == ContentSpecNode::Leaf) || (curType == ContentSpecNode::Any) || (curType == ContentSpecNode::Any_Other) || (curType == ContentSpecNode::Any_NS) ) { toFill.addElement(curNode->getElement()); toType.addElement(curType); return; } // Get both the child node pointers ContentSpecNode* leftNode = curNode->getFirst(); ContentSpecNode* rightNode = curNode->getSecond(); // And recurse according to the type of node if (((curType & 0x0f) == ContentSpecNode::Choice) || ((curType & 0x0f) == ContentSpecNode::Sequence)) { // Recurse on the left and right nodes buildChildList(leftNode, toFill, toType); // The last node of a choice or sequence has a null right if (rightNode) buildChildList(rightNode, toFill, toType); } else if ((curType == ContentSpecNode::OneOrMore) || (curType == ContentSpecNode::ZeroOrOne) || (curType == ContentSpecNode::ZeroOrMore)) { // Just do the left node on this one buildChildList(leftNode, toFill, toType); } } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/validators/common/Grammar.hpp0000644000175000017500000001457711037122704022240 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: Grammar.hpp 676911 2008-07-15 13:27:32Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_GRAMMAR_HPP) #define XERCESC_INCLUDE_GUARD_GRAMMAR_HPP #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN class XMLGrammarDescription; // // This abstract class specifies the interface for a Grammar // class VALIDATORS_EXPORT Grammar : public XSerializable, public XMemory { public: // ----------------------------------------------------------------------- // Class Specific Types // // DTDGrammarType - Indicate this Grammar is built from a DTD. // SchemaGrammarType - Indicate this Grammar is built from a Schema. // // TOP_LEVEL_SCOPE - outermost scope level (i.e. global) of a declaration. // For DTD, all element decls and attribute decls always // have TOP_LEVEL_SCOPE. For schema, it may vary if // it is inside a complex type. // // UNKNOWN_SCOPE - unknown scope level. None of the decls should have this. // // ----------------------------------------------------------------------- enum GrammarType { DTDGrammarType , SchemaGrammarType , UnKnown }; enum { // These are well-known values that must simply be larger // than any reasonable scope UNKNOWN_SCOPE = UINT_MAX - 0 , TOP_LEVEL_SCOPE = UINT_MAX - 1 }; // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- virtual ~Grammar(){}; // ----------------------------------------------------------------------- // Virtual Getter methods // ----------------------------------------------------------------------- virtual GrammarType getGrammarType() const =0; virtual const XMLCh* getTargetNamespace() const =0; virtual bool getValidated() const = 0; // Element Decl // this method should only be used while the grammar is being // constructed, not while it is being used // in a validation episode! virtual XMLElementDecl* findOrAddElemDecl ( const unsigned int uriId , const XMLCh* const baseName , const XMLCh* const prefixName , const XMLCh* const qName , unsigned int scope , bool& wasAdded ) = 0; virtual XMLSize_t getElemId ( const unsigned int uriId , const XMLCh* const baseName , const XMLCh* const qName , unsigned int scope ) const = 0; virtual const XMLElementDecl* getElemDecl ( const unsigned int uriId , const XMLCh* const baseName , const XMLCh* const qName , unsigned int scope ) const = 0; virtual XMLElementDecl* getElemDecl ( const unsigned int uriId , const XMLCh* const baseName , const XMLCh* const qName , unsigned int scope ) = 0; virtual const XMLElementDecl* getElemDecl ( const unsigned int elemId ) const = 0; virtual XMLElementDecl* getElemDecl ( const unsigned int elemId ) = 0; // Notation virtual const XMLNotationDecl* getNotationDecl ( const XMLCh* const notName ) const=0; virtual XMLNotationDecl* getNotationDecl ( const XMLCh* const notName )=0; // ----------------------------------------------------------------------- // Virtual Setter methods // ----------------------------------------------------------------------- virtual XMLElementDecl* putElemDecl ( const unsigned int uriId , const XMLCh* const baseName , const XMLCh* const prefixName , const XMLCh* const qName , unsigned int scope , const bool notDeclared = false ) = 0; virtual XMLSize_t putElemDecl ( XMLElementDecl* const elemDecl , const bool notDeclared = false ) = 0; virtual XMLSize_t putNotationDecl ( XMLNotationDecl* const notationDecl ) const=0; virtual void setValidated(const bool newState) = 0; // ----------------------------------------------------------------------- // Virtual methods // ----------------------------------------------------------------------- virtual void reset()=0; virtual void setGrammarDescription( XMLGrammarDescription*) = 0; virtual XMLGrammarDescription* getGrammarDescription() const = 0; /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(Grammar) static void storeGrammar(XSerializeEngine& serEng , Grammar* const grammar); static Grammar* loadGrammar(XSerializeEngine& serEng); protected : // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- Grammar(){}; private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- Grammar(const Grammar&); Grammar& operator=(const Grammar&); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/validators/common/CMBinaryOp.cpp0000644000175000017500000001167611037446664022623 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: CMBinaryOp.cpp 677396 2008-07-16 19:36:20Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // CMBinaryOp: Constructors // --------------------------------------------------------------------------- CMBinaryOp::CMBinaryOp( ContentSpecNode::NodeTypes type , CMNode* const leftToAdopt , CMNode* const rightToAdopt , unsigned int maxStates , MemoryManager* const manager) : CMNode(type, maxStates, manager) , fLeftChild(leftToAdopt) , fRightChild(rightToAdopt) { // Insure that its one of the types we require if (((type & 0x0f) != ContentSpecNode::Choice) && ((type & 0x0f) != ContentSpecNode::Sequence)) { ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::CM_BinOpHadUnaryType, manager); } // // If its an alternation, then if either child is nullable then // this node is nullable. If its a concatenation, then both of // them have to be nullable. // if ((type & 0x0f) == ContentSpecNode::Choice) fIsNullable=(fLeftChild->isNullable() || fRightChild->isNullable()); else fIsNullable=(fLeftChild->isNullable() && fRightChild->isNullable()); } CMBinaryOp::~CMBinaryOp() { delete fLeftChild; delete fRightChild; } // --------------------------------------------------------------------------- // CMBinaryOp: Getter methods // --------------------------------------------------------------------------- const CMNode* CMBinaryOp::getLeft() const { return fLeftChild; } CMNode* CMBinaryOp::getLeft() { return fLeftChild; } const CMNode* CMBinaryOp::getRight() const { return fRightChild; } CMNode* CMBinaryOp::getRight() { return fRightChild; } // --------------------------------------------------------------------------- // CMBinaryOp: Implementation of the public CMNode virtual interface // --------------------------------------------------------------------------- void CMBinaryOp::orphanChild() { delete fLeftChild; fLeftChild=0; delete fRightChild; fRightChild=0; } // --------------------------------------------------------------------------- // CMBinaryOp: Implementation of the protected CMNode virtual interface // --------------------------------------------------------------------------- void CMBinaryOp::calcFirstPos(CMStateSet& toSet) const { if ((getType() & 0x0f) == ContentSpecNode::Choice) { // Its the the union of the first positions of our children. toSet = fLeftChild->getFirstPos(); toSet |= fRightChild->getFirstPos(); } else if ((getType() & 0x0f) == ContentSpecNode::Sequence) { // // If our left child is nullable, then its the union of our // children's first positions. Else is our left child's first // positions. // toSet = fLeftChild->getFirstPos(); if (fLeftChild->isNullable()) toSet |= fRightChild->getFirstPos(); } } void CMBinaryOp::calcLastPos(CMStateSet& toSet) const { if ((getType() & 0x0f) == ContentSpecNode::Choice) { // Its the the union of the first positions of our children. toSet = fLeftChild->getLastPos(); toSet |= fRightChild->getLastPos(); } else if ((getType() & 0x0f) == ContentSpecNode::Sequence) { // // If our right child is nullable, then its the union of our // children's last positions. Else is our right child's last // positions. // toSet = fRightChild->getLastPos(); if (fRightChild->isNullable()) toSet |= fLeftChild->getLastPos(); } } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/validators/common/CMUnaryOp.hpp0000644000175000017500000000602111037446664022466 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: CMUnaryOp.hpp 677396 2008-07-16 19:36:20Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_CMUNARYOP_HPP) #define XERCESC_INCLUDE_GUARD_CMUNARYOP_HPP #include XERCES_CPP_NAMESPACE_BEGIN class CMStateSet; class CMUnaryOp : public CMNode { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- CMUnaryOp ( ContentSpecNode::NodeTypes type , CMNode* const nodeToAdopt , unsigned int maxStates , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); ~CMUnaryOp(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const CMNode* getChild() const; CMNode* getChild(); // ----------------------------------------------------------------------- // Implementation of the public CMNode virtual interface // ----------------------------------------------------------------------- virtual void orphanChild(); protected : // ----------------------------------------------------------------------- // Implementation of the protected CMNode virtual interface // ----------------------------------------------------------------------- void calcFirstPos(CMStateSet& toSet) const; void calcLastPos(CMStateSet& toSet) const; private : // ----------------------------------------------------------------------- // Private data members // // fChild // This is the reference to the one child that we have for this // unary operation. We own it. // ----------------------------------------------------------------------- CMNode* fChild; // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- CMUnaryOp(const CMUnaryOp&); CMUnaryOp& operator=(const CMUnaryOp&); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/validators/common/ContentSpecNode.cpp0000644000175000017500000002411211360561266023673 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: ContentSpecNode.cpp 933155 2010-04-12 09:07:02Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // ContentSpecNode: Copy Constructor // // Note: this copy constructor has dependency on various get*() methods // and shall be placed after those method's declaration. // aka inline function compilation error on AIX 4.2, xlC 3 r ev.1 // --------------------------------------------------------------------------- ContentSpecNode::ContentSpecNode(const ContentSpecNode& toCopy) : XSerializable(toCopy) , XMemory(toCopy) , fMemoryManager(toCopy.fMemoryManager) , fElement(0) , fElementDecl(toCopy.fElementDecl) , fFirst(0) , fSecond(0) , fType(toCopy.fType) , fAdoptFirst(true) , fAdoptSecond(true) , fMinOccurs(toCopy.fMinOccurs) , fMaxOccurs(toCopy.fMaxOccurs) { const QName* tempElement = toCopy.getElement(); if (tempElement) fElement = new (fMemoryManager) QName(*tempElement); const ContentSpecNode *tmp = toCopy.getFirst(); if (tmp) fFirst = new (fMemoryManager) ContentSpecNode(*tmp); tmp = toCopy.getSecond(); if (tmp) fSecond = new (fMemoryManager) ContentSpecNode(*tmp); } // --------------------------------------------------------------------------- // Local methods // --------------------------------------------------------------------------- static void formatNode( const ContentSpecNode* const curNode , const ContentSpecNode::NodeTypes parentType , XMLBuffer& bufToFill) { if (!curNode) return; const ContentSpecNode* first = curNode->getFirst(); const ContentSpecNode* second = curNode->getSecond(); const ContentSpecNode::NodeTypes curType = curNode->getType(); // Get the type of the first node const ContentSpecNode::NodeTypes firstType = first ? first->getType() : ContentSpecNode::Leaf; // Calculate the parens flag for the rep nodes bool doRepParens = false; if (((firstType != ContentSpecNode::Leaf) && (parentType != ContentSpecNode::UnknownType)) || ((firstType == ContentSpecNode::Leaf) && (parentType == ContentSpecNode::UnknownType))) { doRepParens = true; } // Now handle our type switch(curType & 0x0f) { case ContentSpecNode::Leaf : if (curNode->getElement()->getURI() == XMLElementDecl::fgPCDataElemId) bufToFill.append(XMLElementDecl::fgPCDataElemName); else { bufToFill.append(curNode->getElement()->getRawName()); // show the + and * modifiers also when we have a non-infinite number of repetitions if(curNode->getMinOccurs()==0 && (curNode->getMaxOccurs()==-1 || curNode->getMaxOccurs()>1)) bufToFill.append(chAsterisk); else if(curNode->getMinOccurs()==0 && curNode->getMaxOccurs()==1) bufToFill.append(chQuestion); else if(curNode->getMinOccurs()==1 && (curNode->getMaxOccurs()==-1 || curNode->getMaxOccurs()>1)) bufToFill.append(chPlus); } break; case ContentSpecNode::ZeroOrOne : if (doRepParens) bufToFill.append(chOpenParen); formatNode(first, curType, bufToFill); if (doRepParens) bufToFill.append(chCloseParen); bufToFill.append(chQuestion); break; case ContentSpecNode::ZeroOrMore : if (doRepParens) bufToFill.append(chOpenParen); formatNode(first, curType, bufToFill); if (doRepParens) bufToFill.append(chCloseParen); bufToFill.append(chAsterisk); break; case ContentSpecNode::OneOrMore : if (doRepParens) bufToFill.append(chOpenParen); formatNode(first, curType, bufToFill); if (doRepParens) bufToFill.append(chCloseParen); bufToFill.append(chPlus); break; case ContentSpecNode::Choice : if ((parentType & 0x0f) != (curType & 0x0f)) bufToFill.append(chOpenParen); formatNode(first, curType, bufToFill); if(second!=NULL) { bufToFill.append(chPipe); formatNode(second, curType, bufToFill); } if ((parentType & 0x0f) != (curType & 0x0f)) bufToFill.append(chCloseParen); break; case ContentSpecNode::Sequence : if ((parentType & 0x0f) != (curType & 0x0f)) bufToFill.append(chOpenParen); formatNode(first, curType, bufToFill); if(second!=NULL) { bufToFill.append(chComma); formatNode(second, curType, bufToFill); } if ((parentType & 0x0f) != (curType & 0x0f)) bufToFill.append(chCloseParen); break; case ContentSpecNode::All : if ((parentType & 0x0f) != (curType & 0x0f)) { bufToFill.append(chLatin_A); bufToFill.append(chLatin_l); bufToFill.append(chLatin_l); bufToFill.append(chOpenParen); } formatNode(first, curType, bufToFill); bufToFill.append(chComma); formatNode(second, curType, bufToFill); if ((parentType & 0x0f) != (curType & 0x0f)) bufToFill.append(chCloseParen); break; } } // --------------------------------------------------------------------------- // ContentSpecNode: Miscellaneous // --------------------------------------------------------------------------- void ContentSpecNode::formatSpec(XMLBuffer& bufToFill) const { // Clean out the buffer first bufToFill.reset(); if (fType == ContentSpecNode::Leaf) bufToFill.append(chOpenParen); formatNode ( this , UnknownType , bufToFill ); if (fType == ContentSpecNode::Leaf) bufToFill.append(chCloseParen); } int ContentSpecNode::getMinTotalRange() const { int min = fMinOccurs; if ((fType & 0x0f) == ContentSpecNode::Sequence || fType == ContentSpecNode::All || (fType & 0x0f) == ContentSpecNode::Choice) { int minFirst = fFirst->getMinTotalRange(); if (fSecond) { int minSecond = fSecond->getMinTotalRange(); if ((fType & 0x0f) == ContentSpecNode::Choice) { min = min * ((minFirst < minSecond)? minFirst : minSecond); } else { min = min * (minFirst + minSecond); } } else min = min * minFirst; } return min; } int ContentSpecNode::getMaxTotalRange() const { int max = fMaxOccurs; if (max == SchemaSymbols::XSD_UNBOUNDED) { return SchemaSymbols::XSD_UNBOUNDED; } if ((fType & 0x0f) == ContentSpecNode::Sequence || fType == ContentSpecNode::All || (fType & 0x0f) == ContentSpecNode::Choice) { int maxFirst = fFirst->getMaxTotalRange(); if (maxFirst == SchemaSymbols::XSD_UNBOUNDED) { return SchemaSymbols::XSD_UNBOUNDED; } if (fSecond) { int maxSecond = fSecond->getMaxTotalRange(); if (maxSecond == SchemaSymbols::XSD_UNBOUNDED) { return SchemaSymbols::XSD_UNBOUNDED; } else { if ((fType & 0x0f) == ContentSpecNode::Choice) { max = max * (maxFirst > maxSecond) ? maxFirst : maxSecond; } else { max = max * (maxFirst + maxSecond); } } } else { max = max * maxFirst; } } return max; } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(ContentSpecNode) void ContentSpecNode::serialize(XSerializeEngine& serEng) { /*** * Since fElement, fFirst, fSecond are NOT created by the default * constructor, we need to create them dynamically. ***/ if (serEng.isStoring()) { serEng<>fElement; fElementDecl = XMLElementDecl::loadElementDecl(serEng); serEng>>fFirst; serEng>>fSecond; int type; serEng>>type; fType = (NodeTypes)type; serEng>>fAdoptFirst; serEng>>fAdoptSecond; serEng>>fMinOccurs; serEng>>fMaxOccurs; } } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/validators/common/GrammarResolver.cpp0000644000175000017500000003426411030436104023743 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id $ */ #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // GrammarResolver: Constructor and Destructor // --------------------------------------------------------------------------- GrammarResolver::GrammarResolver(XMLGrammarPool* const gramPool , MemoryManager* const manager) :fCacheGrammar(false) ,fUseCachedGrammar(false) ,fGrammarPoolFromExternalApplication(true) ,fStringPool(0) ,fGrammarBucket(0) ,fGrammarFromPool(0) ,fDataTypeReg(0) ,fMemoryManager(manager) ,fGrammarPool(gramPool) ,fXSModel(0) ,fGrammarPoolXSModel(0) ,fGrammarsToAddToXSModel(0) { fGrammarBucket = new (manager) RefHashTableOf(29, true, manager); /*** * Grammars in this set are not owned */ fGrammarFromPool = new (manager) RefHashTableOf(29, false, manager); if (!gramPool) { /*** * We need to instantiate a default grammar pool object so that * all grammars and grammar components could be created through * the Factory methods */ fGrammarPool = new (manager) XMLGrammarPoolImpl(manager); fGrammarPoolFromExternalApplication=false; } fStringPool = fGrammarPool->getURIStringPool(); // REVISIT: size fGrammarsToAddToXSModel = new (manager) ValueVectorOf (29, manager); } GrammarResolver::~GrammarResolver() { delete fGrammarBucket; delete fGrammarFromPool; if (fDataTypeReg) delete fDataTypeReg; /*** * delete the grammar pool iff it is created by this resolver */ if (!fGrammarPoolFromExternalApplication) delete fGrammarPool; if (fXSModel) delete fXSModel; // don't delete fGrammarPoolXSModel! we don't own it! delete fGrammarsToAddToXSModel; } // --------------------------------------------------------------------------- // GrammarResolver: Getter methods // --------------------------------------------------------------------------- DatatypeValidator* GrammarResolver::getDatatypeValidator(const XMLCh* const uriStr, const XMLCh* const localPartStr) { DatatypeValidator* dv = 0; if (XMLString::equals(uriStr, SchemaSymbols::fgURI_SCHEMAFORSCHEMA)) { if (!fDataTypeReg) { fDataTypeReg = new (fMemoryManager) DatatypeValidatorFactory(fMemoryManager); } dv = fDataTypeReg->getDatatypeValidator(localPartStr); } else { Grammar* grammar = getGrammar(uriStr); if (grammar && grammar->getGrammarType() == Grammar::SchemaGrammarType) { XMLBuffer nameBuf(128, fMemoryManager); nameBuf.set(uriStr); nameBuf.append(chComma); nameBuf.append(localPartStr); dv = ((SchemaGrammar*) grammar)->getDatatypeRegistry()->getDatatypeValidator(nameBuf.getRawBuffer()); } } return dv; } Grammar* GrammarResolver::getGrammar( const XMLCh* const namespaceKey) { if (!namespaceKey) return 0; Grammar* grammar = fGrammarBucket->get(namespaceKey); if (grammar) return grammar; if (fUseCachedGrammar) { grammar = fGrammarFromPool->get(namespaceKey); if (grammar) { return grammar; } else { XMLSchemaDescription* gramDesc = fGrammarPool->createSchemaDescription(namespaceKey); Janitor janName(gramDesc); grammar = fGrammarPool->retrieveGrammar(gramDesc); if (grammar) { fGrammarFromPool->put((void*) grammar->getGrammarDescription()->getGrammarKey(), grammar); } return grammar; } } return 0; } Grammar* GrammarResolver::getGrammar( XMLGrammarDescription* const gramDesc) { if (!gramDesc) return 0; Grammar* grammar = fGrammarBucket->get(gramDesc->getGrammarKey()); if (grammar) return grammar; if (fUseCachedGrammar) { grammar = fGrammarFromPool->get(gramDesc->getGrammarKey()); if (grammar) { return grammar; } else { grammar = fGrammarPool->retrieveGrammar(gramDesc); if (grammar) { fGrammarFromPool->put((void*) grammar->getGrammarDescription()->getGrammarKey(), grammar); } return grammar; } } return 0; } RefHashTableOfEnumerator GrammarResolver::getGrammarEnumerator() const { return RefHashTableOfEnumerator(fGrammarBucket, false, fMemoryManager); } RefHashTableOfEnumerator GrammarResolver::getReferencedGrammarEnumerator() const { return RefHashTableOfEnumerator(fGrammarFromPool, false, fMemoryManager); } RefHashTableOfEnumerator GrammarResolver::getCachedGrammarEnumerator() const { return fGrammarPool->getGrammarEnumerator(); } bool GrammarResolver::containsNameSpace( const XMLCh* const nameSpaceKey ) { if (!nameSpaceKey) return false; if (fGrammarBucket->containsKey(nameSpaceKey)) return true; if (fUseCachedGrammar) { if (fGrammarFromPool->containsKey(nameSpaceKey)) return true; // Lastly, need to check in fGrammarPool XMLSchemaDescription* gramDesc = fGrammarPool->createSchemaDescription(nameSpaceKey); Janitor janName(gramDesc); Grammar* grammar = fGrammarPool->retrieveGrammar(gramDesc); if (grammar) return true; } return false; } void GrammarResolver::putGrammar(Grammar* const grammarToAdopt) { if (!grammarToAdopt) return; /*** * the grammar will be either in the grammarpool, or in the grammarbucket */ if (!fCacheGrammar || !fGrammarPool->cacheGrammar(grammarToAdopt)) { // either we aren't caching or the grammar pool doesn't want it // so we need to look after it fGrammarBucket->put( (void*) grammarToAdopt->getGrammarDescription()->getGrammarKey(), grammarToAdopt ); if (grammarToAdopt->getGrammarType() == Grammar::SchemaGrammarType) { fGrammarsToAddToXSModel->addElement((SchemaGrammar*) grammarToAdopt); } } } // --------------------------------------------------------------------------- // GrammarResolver: methods // --------------------------------------------------------------------------- void GrammarResolver::reset() { fGrammarBucket->removeAll(); fGrammarsToAddToXSModel->removeAllElements(); delete fXSModel; fXSModel = 0; } void GrammarResolver::resetCachedGrammar() { //REVISIT: if the pool is locked this will fail... should throw an exception? fGrammarPool->clear(); // Even though fXSModel and fGrammarPoolXSModel will be invalid don't touch // them here as getXSModel will handle this. //to clear all other references to the grammars just deleted from fGrammarPool fGrammarFromPool->removeAll(); } void GrammarResolver::cacheGrammars() { RefHashTableOfEnumerator grammarEnum(fGrammarBucket, false, fMemoryManager); ValueVectorOf keys(8, fMemoryManager); unsigned int keyCount = 0; // Build key set while (grammarEnum.hasMoreElements()) { XMLCh* grammarKey = (XMLCh*) grammarEnum.nextElementKey(); keys.addElement(grammarKey); keyCount++; } // PSVI: assume everything will be added, if caching fails add grammar back // into vector fGrammarsToAddToXSModel->removeAllElements(); // Cache for (unsigned int i = 0; i < keyCount; i++) { XMLCh* grammarKey = keys.elementAt(i); /*** * It is up to the GrammarPool implementation to handle duplicated grammar */ Grammar* grammar = fGrammarBucket->get(grammarKey); if(fGrammarPool->cacheGrammar(grammar)) { // only orphan grammar if grammar pool accepts caching of it fGrammarBucket->orphanKey(grammarKey); } else if (grammar->getGrammarType() == Grammar::SchemaGrammarType) { // add it back to list of grammars not in grammar pool fGrammarsToAddToXSModel->addElement((SchemaGrammar*) grammar); } } } // --------------------------------------------------------------------------- // GrammarResolver: Setter methods // --------------------------------------------------------------------------- void GrammarResolver::cacheGrammarFromParse(const bool aValue) { reset(); fCacheGrammar = aValue; } Grammar* GrammarResolver::orphanGrammar(const XMLCh* const nameSpaceKey) { if (fCacheGrammar) { Grammar* grammar = fGrammarPool->orphanGrammar(nameSpaceKey); if (grammar) { if (fGrammarFromPool->containsKey(nameSpaceKey)) fGrammarFromPool->removeKey(nameSpaceKey); } // Check to see if it's in fGrammarBucket, since // we put it there if the grammar pool refused to // cache it. else if (fGrammarBucket->containsKey(nameSpaceKey)) { grammar = fGrammarBucket->orphanKey(nameSpaceKey); } return grammar; } else { return fGrammarBucket->orphanKey(nameSpaceKey); } } XSModel *GrammarResolver::getXSModel() { XSModel* xsModel; if (fCacheGrammar || fUseCachedGrammar) { // We know if the grammarpool changed thru caching, orphaning and erasing // but NOT by other mechanisms such as lockPool() or unlockPool() so it // is safest to always get it. The grammarPool XSModel will only be // regenerated if something changed. bool XSModelWasChanged; // The grammarpool will always return an xsmodel, even if it is just // the schema for schema xsmodel... xsModel = fGrammarPool->getXSModel(XSModelWasChanged); if (XSModelWasChanged) { // we know the grammarpool XSModel has changed or this is the // first call to getXSModel if (!fGrammarPoolXSModel && (fGrammarsToAddToXSModel->size() == 0) && !fXSModel) { fGrammarPoolXSModel = xsModel; return fGrammarPoolXSModel; } else { fGrammarPoolXSModel = xsModel; // We had previously augmented the grammar pool XSModel // with our our grammars or we would like to upate it now // so we have to regenerate the XSModel fGrammarsToAddToXSModel->removeAllElements(); RefHashTableOfEnumerator grammarEnum(fGrammarBucket, false, fMemoryManager); while (grammarEnum.hasMoreElements()) { Grammar& grammar = (Grammar&) grammarEnum.nextElement(); if (grammar.getGrammarType() == Grammar::SchemaGrammarType) fGrammarsToAddToXSModel->addElement((SchemaGrammar*)&grammar); } delete fXSModel; if (fGrammarsToAddToXSModel->size()) { fXSModel = new (fMemoryManager) XSModel(fGrammarPoolXSModel, this, fMemoryManager); fGrammarsToAddToXSModel->removeAllElements(); return fXSModel; } fXSModel = 0; return fGrammarPoolXSModel; } } else { // we know that the grammar pool XSModel is the same as before if (fGrammarsToAddToXSModel->size()) { // we need to update our fXSModel with the new grammars if (fXSModel) { xsModel = new (fMemoryManager) XSModel(fXSModel, this, fMemoryManager); fXSModel = xsModel; } else { fXSModel = new (fMemoryManager) XSModel(fGrammarPoolXSModel, this, fMemoryManager); } fGrammarsToAddToXSModel->removeAllElements(); return fXSModel; } // Nothing has changed! if (fXSModel) { return fXSModel; } else if (fGrammarPoolXSModel) { return fGrammarPoolXSModel; } fXSModel = new (fMemoryManager) XSModel(0, this, fMemoryManager); return fXSModel; } } // Not Caching... if (fGrammarsToAddToXSModel->size()) { xsModel = new (fMemoryManager) XSModel(fXSModel, this, fMemoryManager); fGrammarsToAddToXSModel->removeAllElements(); fXSModel = xsModel; } else if (!fXSModel) { // create a new model only if we didn't have one already fXSModel = new (fMemoryManager) XSModel(0, this, fMemoryManager); } return fXSModel; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/validators/common/CMNode.hpp0000644000175000017500000001377011037461233021754 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: CMNode.hpp 677430 2008-07-16 21:05:31Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_CMNODE_HPP) #define XERCESC_INCLUDE_GUARD_CMNODE_HPP #include #include #include XERCES_CPP_NAMESPACE_BEGIN class CMNode : public XMemory { public : enum { // Special value to indicate a nullable node epsilonNode = UINT_MAX - 1 }; // ----------------------------------------------------------------------- // Constructors and Destructors // ----------------------------------------------------------------------- CMNode ( const ContentSpecNode::NodeTypes type , unsigned int maxStates , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual ~CMNode(); // ----------------------------------------------------------------------- // Virtual methods to be provided derived node classes // ----------------------------------------------------------------------- virtual void orphanChild() = 0; // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- ContentSpecNode::NodeTypes getType() const; const CMStateSet& getFirstPos(); const CMStateSet& getLastPos(); bool isNullable() const; protected : // ----------------------------------------------------------------------- // Protected, abstract methods // ----------------------------------------------------------------------- virtual void calcFirstPos(CMStateSet& toUpdate) const = 0; virtual void calcLastPos(CMStateSet& toUpdate) const = 0; // ----------------------------------------------------------------------- // Protected data members // // fMemoryManager // Pluggable memory manager for dynamic allocation/deallocation. // ----------------------------------------------------------------------- MemoryManager* fMemoryManager; private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- CMNode(); CMNode(const CMNode&); CMNode& operator=(const CMNode&); // ----------------------------------------------------------------------- // Private data members // // fType // The type of node. This indicates whether its a leaf or an // operation. // // fFirstPos // The set of NFA states that represent the entry states of this // node in the DFA. // // fLastPos // The set of NFA states that represent the final states of this // node in the DFA. // // fMaxStates // The maximum number of states that the NFA has, which means the // max number of NFA states that have to be traced in the state // sets during the building of the DFA. Its unfortunate that it // has to be stored redundantly, but we need to fault in the // state set members and they have to be sized to this size. // // fIsNullable // Whether the node can be empty // ----------------------------------------------------------------------- ContentSpecNode::NodeTypes fType; CMStateSet* fFirstPos; CMStateSet* fLastPos; unsigned int fMaxStates; protected: bool fIsNullable; }; // --------------------------------------------------------------------------- // CMNode: Constructors and Destructors // --------------------------------------------------------------------------- inline CMNode::CMNode(const ContentSpecNode::NodeTypes type , unsigned int maxStates , MemoryManager* const manager) : fMemoryManager(manager) , fType(type) , fFirstPos(0) , fLastPos(0) , fMaxStates(maxStates) , fIsNullable(false) { } inline CMNode::~CMNode() { // Clean up any position sets that got created delete fFirstPos; delete fLastPos; } // --------------------------------------------------------------------------- // CMNode: Getter methods // --------------------------------------------------------------------------- inline ContentSpecNode::NodeTypes CMNode::getType() const { return fType; } inline const CMStateSet& CMNode::getFirstPos() { // // Fault in the state set if needed. Since we can't use mutable members // cast off the const'ness. // if (!fFirstPos) { fFirstPos = new (fMemoryManager) CMStateSet(fMaxStates, fMemoryManager); calcFirstPos(*fFirstPos); } return *fFirstPos; } inline const CMStateSet& CMNode::getLastPos() { // // Fault in the state set if needed. Since we can't use mutable members // cast off the const'ness. // if (!fLastPos) { fLastPos = new (fMemoryManager) CMStateSet(fMaxStates, fMemoryManager); calcLastPos(*fLastPos); } return *fLastPos; } inline bool CMNode::isNullable() const { return fIsNullable; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/validators/common/CMUnaryOp.cpp0000644000175000017500000000640611037446664022470 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: CMUnaryOp.cpp 677396 2008-07-16 19:36:20Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // CMUnaryOp: Constructors and Destructor // --------------------------------------------------------------------------- CMUnaryOp::CMUnaryOp( ContentSpecNode::NodeTypes type , CMNode* const nodeToAdopt , unsigned int maxStates , MemoryManager* const manager) : CMNode(type, maxStates, manager) , fChild(nodeToAdopt) { // Insure that its one of the types we require if ((type != ContentSpecNode::ZeroOrOne) && (type != ContentSpecNode::ZeroOrMore) && (type != ContentSpecNode::OneOrMore)) { ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::CM_UnaryOpHadBinType, manager); } if (type == ContentSpecNode::OneOrMore) fIsNullable=fChild->isNullable(); else fIsNullable=true; } CMUnaryOp::~CMUnaryOp() { delete fChild; } // --------------------------------------------------------------------------- // CMUnaryOp: Getter methods // --------------------------------------------------------------------------- const CMNode* CMUnaryOp::getChild() const { return fChild; } CMNode* CMUnaryOp::getChild() { return fChild; } // --------------------------------------------------------------------------- // CMUnaryOp: Implementation of the public CMNode virtual interface // --------------------------------------------------------------------------- void CMUnaryOp::orphanChild() { delete fChild; fChild=0; } // --------------------------------------------------------------------------- // CMUnaryOp: Implementation of the protected CMNode virtual interface // --------------------------------------------------------------------------- void CMUnaryOp::calcFirstPos(CMStateSet& toSet) const { // Its just based on our child node's first pos toSet = fChild->getFirstPos(); } void CMUnaryOp::calcLastPos(CMStateSet& toSet) const { // Its just based on our child node's last pos toSet = fChild->getLastPos(); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/validators/common/ContentLeafNameTypeVector.hpp0000644000175000017500000001061311037122704025665 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: ContentLeafNameTypeVector.hpp 676911 2008-07-15 13:27:32Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_CONTENTLEAFNAMETYPEVECTOR_HPP) #define XERCESC_INCLUDE_GUARD_CONTENTLEAFNAMETYPEVECTOR_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN class XMLPARSER_EXPORT ContentLeafNameTypeVector : public XMemory { public : // ----------------------------------------------------------------------- // Class specific types // ----------------------------------------------------------------------- // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- ContentLeafNameTypeVector ( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); ContentLeafNameTypeVector ( QName** const qName , ContentSpecNode::NodeTypes* const types , const XMLSize_t count , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); ~ContentLeafNameTypeVector(); ContentLeafNameTypeVector(const ContentLeafNameTypeVector&); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- QName* getLeafNameAt(const XMLSize_t pos) const; ContentSpecNode::NodeTypes getLeafTypeAt(const XMLSize_t pos) const; XMLSize_t getLeafCount() const; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- void setValues ( QName** const qName , ContentSpecNode::NodeTypes* const types , const XMLSize_t count ); // ----------------------------------------------------------------------- // Miscellaneous // ----------------------------------------------------------------------- private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- ContentLeafNameTypeVector& operator=(const ContentLeafNameTypeVector&); // ----------------------------------------------------------------------- // helper methods // ----------------------------------------------------------------------- void cleanUp(); void init(const XMLSize_t size); // ----------------------------------------------------------------------- // Private Data Members // // ----------------------------------------------------------------------- MemoryManager* fMemoryManager; QName** fLeafNames; ContentSpecNode::NodeTypes *fLeafTypes; XMLSize_t fLeafCount; }; inline void ContentLeafNameTypeVector::cleanUp() { fMemoryManager->deallocate(fLeafNames); //delete [] fLeafNames; fMemoryManager->deallocate(fLeafTypes); //delete [] fLeafTypes; } inline void ContentLeafNameTypeVector::init(const XMLSize_t size) { fLeafNames = (QName**) fMemoryManager->allocate(size * sizeof(QName*));//new QName*[size]; fLeafTypes = (ContentSpecNode::NodeTypes *) fMemoryManager->allocate ( size * sizeof(ContentSpecNode::NodeTypes) ); //new ContentSpecNode::NodeTypes [size]; fLeafCount = size; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/validators/common/CMRepeatingLeaf.hpp0000644000175000017500000001140211037446664023576 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: CMRepeatingLeaf.hpp 677396 2008-07-16 19:36:20Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_CMREPEATINGLEAF_HPP) #define XERCESC_INCLUDE_GUARD_CMREPEATINGLEAF_HPP #include XERCES_CPP_NAMESPACE_BEGIN // // A compound content model leaf node which carries occurence information. // class CMRepeatingLeaf : public CMLeaf { public : // ----------------------------------------------------------------------- // Constructors // ----------------------------------------------------------------------- CMRepeatingLeaf ( QName* const element , int minOccurs , int maxOccurs , unsigned int position , unsigned int maxStates , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); CMRepeatingLeaf ( QName* const element , int minOccurs , int maxOccurs , unsigned int position , bool adopt , unsigned int maxStates , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- int getMinOccurs() const; int getMaxOccurs() const; virtual bool isRepeatableLeaf() const; private : // ----------------------------------------------------------------------- // Private data members // // fMinOccurs // fMaxOccurs // The cardinality of the repeating leaf // // ----------------------------------------------------------------------- int fMinOccurs; int fMaxOccurs; // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- CMRepeatingLeaf(const CMRepeatingLeaf&); CMRepeatingLeaf& operator=(const CMRepeatingLeaf&); }; // ----------------------------------------------------------------------- // Constructors // ----------------------------------------------------------------------- inline CMRepeatingLeaf::CMRepeatingLeaf( QName* const element , int minOccurs , int maxOccurs , unsigned int position , unsigned int maxStates , MemoryManager* const manager) : CMLeaf(element, position, maxStates, manager) , fMinOccurs(minOccurs) , fMaxOccurs(maxOccurs) { } inline CMRepeatingLeaf::CMRepeatingLeaf( QName* const element , int minOccurs , int maxOccurs , unsigned int position , bool adopt , unsigned int maxStates , MemoryManager* const manager) : CMLeaf(element, position, adopt, maxStates, manager) , fMinOccurs(minOccurs) , fMaxOccurs(maxOccurs) { } // --------------------------------------------------------------------------- // Getter methods // --------------------------------------------------------------------------- inline int CMRepeatingLeaf::getMinOccurs() const { return fMinOccurs; } inline int CMRepeatingLeaf::getMaxOccurs() const { return fMaxOccurs; } inline bool CMRepeatingLeaf::isRepeatableLeaf() const { return true; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/validators/common/CMLeaf.hpp0000644000175000017500000001731311037446664021746 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: CMLeaf.hpp 677396 2008-07-16 19:36:20Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_CMLEAF_HPP) #define XERCESC_INCLUDE_GUARD_CMLEAF_HPP #include XERCES_CPP_NAMESPACE_BEGIN // // This class represents a leaf in the content spec node tree of an // element's content model. It just has an element qname and a position value, // the latter of which is used during the building of a DFA. // class CMLeaf : public CMNode { public : // ----------------------------------------------------------------------- // Constructors // ----------------------------------------------------------------------- CMLeaf ( QName* const element , unsigned int position , unsigned int maxStates , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); CMLeaf ( QName* const element , unsigned int position , bool adopt , unsigned int maxStates , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); ~CMLeaf(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- QName* getElement(); const QName* getElement() const; unsigned int getPosition() const; virtual bool isRepeatableLeaf() const; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- void setPosition(const unsigned int newPosition); // ----------------------------------------------------------------------- // Implementation of public CMNode virtual interface // ----------------------------------------------------------------------- virtual void orphanChild(); protected : // ----------------------------------------------------------------------- // Implementation of protected CMNode virtual interface // ----------------------------------------------------------------------- void calcFirstPos(CMStateSet& toSet) const; void calcLastPos(CMStateSet& toSet) const; private : // ----------------------------------------------------------------------- // Private data members // // fElement // This is the element that this leaf represents. // // fPosition // Part of the algorithm to convert a regex directly to a DFA // numbers each leaf sequentially. If its -1, that means its an // epsilon node. All others are non-epsilon positions. // // fAdopt // This node is responsible for the storage of the fElement QName. // ----------------------------------------------------------------------- QName* fElement; unsigned int fPosition; bool fAdopt; // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- CMLeaf(const CMLeaf&); CMLeaf& operator=(const CMLeaf&); }; // ----------------------------------------------------------------------- // Constructors // ----------------------------------------------------------------------- inline CMLeaf::CMLeaf( QName* const element , unsigned int position , unsigned int maxStates , MemoryManager* const manager) : CMNode(ContentSpecNode::Leaf, maxStates, manager) , fElement(0) , fPosition(position) , fAdopt(false) { if (!element) { fElement = new (fMemoryManager) QName ( XMLUni::fgZeroLenString , XMLUni::fgZeroLenString , XMLElementDecl::fgInvalidElemId , fMemoryManager ); // We have to be responsible for this QName - override default fAdopt fAdopt = true; } else { fElement = element; } // Leaf nodes are never nullable unless its an epsilon node fIsNullable=(fPosition == epsilonNode); } inline CMLeaf::CMLeaf( QName* const element , unsigned int position , bool adopt , unsigned int maxStates , MemoryManager* const manager) : CMNode(ContentSpecNode::Leaf, maxStates, manager) , fElement(0) , fPosition(position) , fAdopt(adopt) { if (!element) { fElement = new (fMemoryManager) QName ( XMLUni::fgZeroLenString , XMLUni::fgZeroLenString , XMLElementDecl::fgInvalidElemId , fMemoryManager ); // We have to be responsible for this QName - override adopt parameter fAdopt = true; } else { fElement = element; } // Leaf nodes are never nullable unless its an epsilon node fIsNullable=(fPosition == epsilonNode); } inline CMLeaf::~CMLeaf() { if (fAdopt) delete fElement; } // --------------------------------------------------------------------------- // Getter methods // --------------------------------------------------------------------------- inline QName* CMLeaf::getElement() { return fElement; } inline const QName* CMLeaf::getElement() const { return fElement; } inline unsigned int CMLeaf::getPosition() const { return fPosition; } inline bool CMLeaf::isRepeatableLeaf() const { return false; } // --------------------------------------------------------------------------- // Setter methods // --------------------------------------------------------------------------- inline void CMLeaf::setPosition(const unsigned int newPosition) { fPosition = newPosition; } // --------------------------------------------------------------------------- // Implementation of public CMNode virtual interface // --------------------------------------------------------------------------- inline void CMLeaf::orphanChild() { } // --------------------------------------------------------------------------- // Implementation of protected CMNode virtual interface // --------------------------------------------------------------------------- inline void CMLeaf::calcFirstPos(CMStateSet& toSet) const { // If we are an epsilon node, then the first pos is an empty set if (isNullable()) { toSet.zeroBits(); return; } // Otherwise, its just the one bit of our position toSet.setBit(fPosition); } inline void CMLeaf::calcLastPos(CMStateSet& toSet) const { // If we are an epsilon node, then the last pos is an empty set if (isNullable()) { toSet.zeroBits(); return; } // Otherwise, its just the one bit of our position toSet.setBit(fPosition); } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/validators/common/ContentSpecNode.hpp0000644000175000017500000003144211360344373023702 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: ContentSpecNode.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_CONTENTSPECNODE_HPP) #define XERCESC_INCLUDE_GUARD_CONTENTSPECNODE_HPP #include #include #include XERCES_CPP_NAMESPACE_BEGIN class XMLBuffer; class Grammar; class XMLUTIL_EXPORT ContentSpecNode : public XSerializable, public XMemory { public : // ----------------------------------------------------------------------- // Class specific types // ----------------------------------------------------------------------- enum NodeTypes { Leaf = 0 , ZeroOrOne , ZeroOrMore , OneOrMore , Choice , Sequence , Any , Any_Other , Any_NS = 8 , All = 9 , Loop = 10 , Any_NS_Choice = 20 // 16 + 4 (Choice) , ModelGroupSequence = 21 // 16 + 5 (Sequence) , Any_Lax = 22 // 16 + 6 (Any) , Any_Other_Lax = 23 // 16 + 7 (Any_Other) , Any_NS_Lax = 24 // 16 + 8 (Any_NS) , ModelGroupChoice = 36 // 32 + 4 (Choice) , Any_Skip = 38 // 32 + 6 (Any) , Any_Other_Skip = 39 // 32 + 7 (Any_Other) , Any_NS_Skip = 40 // 32 + 8 (Any_NS) , UnknownType = -1 }; // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- ContentSpecNode(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); ContentSpecNode ( QName* const toAdopt , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); ContentSpecNode ( XMLElementDecl* const elemDecl , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); ContentSpecNode ( QName* const toAdopt , const bool copyQName , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); ContentSpecNode ( const NodeTypes type , ContentSpecNode* const firstToAdopt , ContentSpecNode* const secondToAdopt , const bool adoptFirst = true , const bool adoptSecond = true , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); ContentSpecNode(const ContentSpecNode&); ~ContentSpecNode(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- QName* getElement(); const QName* getElement() const; XMLElementDecl* getElementDecl(); const XMLElementDecl* getElementDecl() const; ContentSpecNode* getFirst(); const ContentSpecNode* getFirst() const; ContentSpecNode* getSecond(); const ContentSpecNode* getSecond() const; NodeTypes getType() const; ContentSpecNode* orphanFirst(); ContentSpecNode* orphanSecond(); int getMinOccurs() const; int getMaxOccurs() const; bool isFirstAdopted() const; bool isSecondAdopted() const; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- void setElement(QName* const toAdopt); void setFirst(ContentSpecNode* const toAdopt); void setSecond(ContentSpecNode* const toAdopt); void setType(const NodeTypes type); void setMinOccurs(int min); void setMaxOccurs(int max); void setAdoptFirst(bool adoptFirst); void setAdoptSecond(bool adoptSecond); // ----------------------------------------------------------------------- // Miscellaneous // ----------------------------------------------------------------------- void formatSpec (XMLBuffer& bufToFill) const; bool hasAllContent(); int getMinTotalRange() const; int getMaxTotalRange() const; /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(ContentSpecNode) private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- ContentSpecNode& operator=(const ContentSpecNode&); // ----------------------------------------------------------------------- // Private Data Members // // fElement // If the type is Leaf/Any*, then this is the qName of the element. If the URI // is fgPCDataElemId, then its a PCData node. Else, it is zero. // // fFirst // fSecond // The optional first and second nodes. The fType field indicates // which of these are valid. The validity constraints are: // // Leaf = Neither valid // ZeroOrOne, ZeroOrMore = First // Choice, Sequence, All = First and Second // Any* = Neither valid // // fType // The type of node. This controls how many of the child node fields // are used. // // fAdoptFirst // Indicate if this ContentSpecNode adopts the fFirst, and is responsible // for deleting it. // // fAdoptSecond // Indicate if this ContentSpecNode adopts the fSecond, and is responsible // for deleting it. // // fMinOccurs // Indicate the minimum times that this node can occur // // fMaxOccurs // Indicate the maximum times that this node can occur // -1 (Unbounded), default (1) // ----------------------------------------------------------------------- MemoryManager* fMemoryManager; QName* fElement; XMLElementDecl* fElementDecl; ContentSpecNode* fFirst; ContentSpecNode* fSecond; NodeTypes fType; bool fAdoptFirst; bool fAdoptSecond; int fMinOccurs; int fMaxOccurs; }; // --------------------------------------------------------------------------- // ContentSpecNode: Constructors and Destructor // --------------------------------------------------------------------------- inline ContentSpecNode::ContentSpecNode(MemoryManager* const manager) : fMemoryManager(manager) , fElement(0) , fElementDecl(0) , fFirst(0) , fSecond(0) , fType(ContentSpecNode::Leaf) , fAdoptFirst(true) , fAdoptSecond(true) , fMinOccurs(1) , fMaxOccurs(1) { } inline ContentSpecNode::ContentSpecNode(QName* const element, MemoryManager* const manager) : fMemoryManager(manager) , fElement(0) , fElementDecl(0) , fFirst(0) , fSecond(0) , fType(ContentSpecNode::Leaf) , fAdoptFirst(true) , fAdoptSecond(true) , fMinOccurs(1) , fMaxOccurs(1) { if (element) fElement = new (fMemoryManager) QName(*element); } inline ContentSpecNode::ContentSpecNode(XMLElementDecl* const elemDecl, MemoryManager* const manager) : fMemoryManager(manager) , fElement(0) , fElementDecl(elemDecl) , fFirst(0) , fSecond(0) , fType(ContentSpecNode::Leaf) , fAdoptFirst(true) , fAdoptSecond(true) , fMinOccurs(1) , fMaxOccurs(1) { if (elemDecl) fElement = new (manager) QName(*(elemDecl->getElementName())); } inline ContentSpecNode::ContentSpecNode( QName* const element , const bool copyQName , MemoryManager* const manager) : fMemoryManager(manager) , fElement(0) , fElementDecl(0) , fFirst(0) , fSecond(0) , fType(ContentSpecNode::Leaf) , fAdoptFirst(true) , fAdoptSecond(true) , fMinOccurs(1) , fMaxOccurs(1) { if (copyQName) { if (element) fElement = new (fMemoryManager) QName(*element); } else { fElement = element; } } inline ContentSpecNode::ContentSpecNode(const NodeTypes type , ContentSpecNode* const firstAdopt , ContentSpecNode* const secondAdopt , const bool adoptFirst , const bool adoptSecond , MemoryManager* const manager) : fMemoryManager(manager) , fElement(0) , fElementDecl(0) , fFirst(firstAdopt) , fSecond(secondAdopt) , fType(type) , fAdoptFirst(adoptFirst) , fAdoptSecond(adoptSecond) , fMinOccurs(1) , fMaxOccurs(1) { } inline ContentSpecNode::~ContentSpecNode() { // Delete our children, which cause recursive cleanup if (fAdoptFirst) { delete fFirst; } if (fAdoptSecond) { delete fSecond; } delete fElement; } // --------------------------------------------------------------------------- // ContentSpecNode: Getter methods // --------------------------------------------------------------------------- inline QName* ContentSpecNode::getElement() { return fElement; } inline const QName* ContentSpecNode::getElement() const { return fElement; } inline XMLElementDecl* ContentSpecNode::getElementDecl() { return fElementDecl; } inline const XMLElementDecl* ContentSpecNode::getElementDecl() const { return fElementDecl; } inline ContentSpecNode* ContentSpecNode::getFirst() { return fFirst; } inline const ContentSpecNode* ContentSpecNode::getFirst() const { return fFirst; } inline ContentSpecNode* ContentSpecNode::getSecond() { return fSecond; } inline const ContentSpecNode* ContentSpecNode::getSecond() const { return fSecond; } inline ContentSpecNode::NodeTypes ContentSpecNode::getType() const { return fType; } inline ContentSpecNode* ContentSpecNode::orphanFirst() { ContentSpecNode* retNode = fFirst; fFirst = 0; return retNode; } inline ContentSpecNode* ContentSpecNode::orphanSecond() { ContentSpecNode* retNode = fSecond; fSecond = 0; return retNode; } inline int ContentSpecNode::getMinOccurs() const { return fMinOccurs; } inline int ContentSpecNode::getMaxOccurs() const { return fMaxOccurs; } inline bool ContentSpecNode::isFirstAdopted() const { return fAdoptFirst; } inline bool ContentSpecNode::isSecondAdopted() const { return fAdoptSecond; } // --------------------------------------------------------------------------- // ContentSpecType: Setter methods // --------------------------------------------------------------------------- inline void ContentSpecNode::setElement(QName* const element) { delete fElement; fElement = 0; if (element) fElement = new (fMemoryManager) QName(*element); } inline void ContentSpecNode::setFirst(ContentSpecNode* const toAdopt) { if (fAdoptFirst) delete fFirst; fFirst = toAdopt; } inline void ContentSpecNode::setSecond(ContentSpecNode* const toAdopt) { if (fAdoptSecond) delete fSecond; fSecond = toAdopt; } inline void ContentSpecNode::setType(const NodeTypes type) { fType = type; } inline void ContentSpecNode::setMinOccurs(int min) { fMinOccurs = min; } inline void ContentSpecNode::setMaxOccurs(int max) { fMaxOccurs = max; } inline void ContentSpecNode::setAdoptFirst(bool newState) { fAdoptFirst = newState; } inline void ContentSpecNode::setAdoptSecond(bool newState) { fAdoptSecond = newState; } // --------------------------------------------------------------------------- // ContentSpecNode: Miscellaneous // --------------------------------------------------------------------------- inline bool ContentSpecNode::hasAllContent() { if (fType == ContentSpecNode::ZeroOrOne) { return (fFirst->getType() == ContentSpecNode::All); } return (fType == ContentSpecNode::All); } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/validators/common/DFAContentModel.cpp0000644000175000017500000020301011325541216023534 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DFAContentModel.cpp 901107 2010-01-20 08:45:02Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN struct CMStateSetHasher { XMLSize_t getHashVal(const void *const key, XMLSize_t mod) { const CMStateSet* const pkey = (const CMStateSet*) key; return ((pkey->hashCode()) % mod); } bool equals(const void *const key1, const void *const key2) { const CMStateSet* const pkey1 = (const CMStateSet*) key1; const CMStateSet* const pkey2 = (const CMStateSet*) key2; return (*pkey1==*pkey2); } }; // --------------------------------------------------------------------------- // DFAContentModel: Constructors and Destructor // --------------------------------------------------------------------------- DFAContentModel::DFAContentModel( const bool dtd , ContentSpecNode* const elemContentSpec , MemoryManager* const manager) : fElemMap(0) , fElemMapType(0) , fElemMapSize(0) , fEmptyOk(false) , fEOCPos(0) , fFinalStateFlags(0) , fFollowList(0) , fHeadNode(0) , fLeafCount(0) , fLeafList(0) , fLeafListType(0) , fTransTable(0) , fTransTableSize(0) , fCountingStates(0) , fDTD(dtd) , fIsMixed(false) , fLeafNameTypeVector(0) , fMemoryManager(manager) { // And build the DFA data structures buildDFA(elemContentSpec); } DFAContentModel::DFAContentModel( const bool dtd , ContentSpecNode* const elemContentSpec , const bool isMixed , MemoryManager* const manager): fElemMap(0) , fElemMapType(0) , fElemMapSize(0) , fEmptyOk(false) , fEOCPos(0) , fFinalStateFlags(0) , fFollowList(0) , fHeadNode(0) , fLeafCount(0) , fLeafList(0) , fLeafListType(0) , fTransTable(0) , fTransTableSize(0) , fCountingStates(0) , fDTD(dtd) , fIsMixed(isMixed) , fLeafNameTypeVector(0) , fMemoryManager(manager) { // And build the DFA data structures buildDFA(elemContentSpec); } DFAContentModel::~DFAContentModel() { // // Clean up all the stuff that is not just temporary representation // data that was cleaned up after building the DFA. // fMemoryManager->deallocate(fFinalStateFlags); //delete [] fFinalStateFlags; unsigned int index; for (index = 0; index < fTransTableSize; index++) fMemoryManager->deallocate(fTransTable[index]); //delete [] fTransTable[index]; fMemoryManager->deallocate(fTransTable); //delete [] fTransTable; if(fCountingStates) { for (unsigned int j = 0; j < fTransTableSize; ++j) delete fCountingStates[j]; fMemoryManager->deallocate(fCountingStates); } for (index = 0; index < fLeafCount; index++) delete fElemMap[index]; fMemoryManager->deallocate(fElemMap); //delete [] fElemMap; fMemoryManager->deallocate(fElemMapType); //delete [] fElemMapType; fMemoryManager->deallocate(fLeafListType); //delete [] fLeafListType; delete fLeafNameTypeVector; } // --------------------------------------------------------------------------- // DFAContentModel: Implementation of the ContentModel virtual interface // --------------------------------------------------------------------------- bool DFAContentModel::validateContent( QName** const children , XMLSize_t childCount , unsigned int , XMLSize_t* indexFailingChild , MemoryManager* const) const { // // If there are no children, then either we fail on the 0th element // or we return success. It depends upon whether this content model // accepts empty content, which we determined earlier. // if (!childCount) { // success if(fEmptyOk) return true; *indexFailingChild=0; return false; } // // Lets loop through the children in the array and move our way // through the states. Note that we use the fElemMap array to map // an element index to a state index. // unsigned int curState = 0; unsigned int nextState = 0; unsigned int loopCount = 0; unsigned int childIndex = 0; for (; childIndex < childCount; childIndex++) { // Get the current element index out const QName* curElem = children[childIndex]; const XMLCh* curElemRawName = 0; if (fDTD) curElemRawName = curElem->getRawName(); // If this is text in a Schema mixed content model, skip it. if ( fIsMixed && ( curElem->getURI() == XMLElementDecl::fgPCDataElemId)) continue; // Look up this child in our element map unsigned int elemIndex = 0; for (; elemIndex < fElemMapSize; elemIndex++) { const QName* inElem = fElemMap[elemIndex]; if (fDTD) { if (XMLString::equals(inElem->getRawName(), curElemRawName)) { nextState = fTransTable[curState][elemIndex]; if (nextState != XMLContentModel::gInvalidTrans) break; } } else { ContentSpecNode::NodeTypes type = fElemMapType[elemIndex]; if (type == ContentSpecNode::Leaf) { if ((inElem->getURI() == curElem->getURI()) && (XMLString::equals(inElem->getLocalPart(), curElem->getLocalPart()))) { nextState = fTransTable[curState][elemIndex]; if (nextState != XMLContentModel::gInvalidTrans) break; } } else if ((type & 0x0f)== ContentSpecNode::Any) { nextState = fTransTable[curState][elemIndex]; if (nextState != XMLContentModel::gInvalidTrans) break; } else if ((type & 0x0f) == ContentSpecNode::Any_NS) { if (inElem->getURI() == curElem->getURI()) { nextState = fTransTable[curState][elemIndex]; if (nextState != XMLContentModel::gInvalidTrans) break; } } else if ((type & 0x0f) == ContentSpecNode::Any_Other) { // Here we assume that empty string has id 1. // unsigned int uriId = curElem->getURI(); if (uriId != 1 && uriId != inElem->getURI()) { nextState = fTransTable[curState][elemIndex]; if (nextState != XMLContentModel::gInvalidTrans) break; } } } }//for elemIndex // If "nextState" is -1, we found a match, but the transition is invalid if (nextState == XMLContentModel::gInvalidTrans) { *indexFailingChild=childIndex; return false; } // If we didn't find it, then obviously not valid if (elemIndex == fElemMapSize) { *indexFailingChild=childIndex; return false; } unsigned int nextLoop = 0; if(!handleRepetitions(curElem, curState, loopCount, nextState, nextLoop, elemIndex, 0)) { *indexFailingChild=childIndex; return false; } curState = nextState; loopCount = nextLoop; nextState = 0; }//for childIndex // // We transitioned all the way through the input list. However, that // does not mean that we ended in a final state. So check whether // our ending state is a final state. // if (!fFinalStateFlags[curState]) { *indexFailingChild=childIndex; return false; } // verify if we exited before the minOccurs was satisfied if (fCountingStates != 0) { Occurence* o = fCountingStates[curState]; if (o != 0 && loopCount < (unsigned int)o->minOccurs) { // not enough loops on the current state to be considered final. *indexFailingChild=childIndex; return false; } } //success return true; } bool DFAContentModel::validateContentSpecial(QName** const children , XMLSize_t childCount , unsigned int , GrammarResolver* const pGrammarResolver , XMLStringPool* const pStringPool , XMLSize_t* indexFailingChild , MemoryManager* const) const { SubstitutionGroupComparator comparator(pGrammarResolver, pStringPool); if (childCount == 0) { if(fEmptyOk) return true; *indexFailingChild=0; return false; } // // Lets loop through the children in the array and move our way // through the states. Note that we use the fElemMap array to map // an element index to a state index. // unsigned int curState = 0; unsigned int loopCount = 0; unsigned int nextState = 0; unsigned int childIndex = 0; for (; childIndex < childCount; childIndex++) { // Get the current element index out QName* curElem = children[childIndex]; // If this is text in a Schema mixed content model, skip it. if ( fIsMixed && ( curElem->getURI() == XMLElementDecl::fgPCDataElemId)) continue; // Look up this child in our element map unsigned int elemIndex = 0; for (; elemIndex < fElemMapSize; elemIndex++) { QName* inElem = fElemMap[elemIndex]; ContentSpecNode::NodeTypes type = fElemMapType[elemIndex]; if (type == ContentSpecNode::Leaf) { if (comparator.isEquivalentTo(curElem, inElem) ) { nextState = fTransTable[curState][elemIndex]; if (nextState != XMLContentModel::gInvalidTrans) break; } } else if ((type & 0x0f)== ContentSpecNode::Any) { nextState = fTransTable[curState][elemIndex]; if (nextState != XMLContentModel::gInvalidTrans) break; } else if ((type & 0x0f) == ContentSpecNode::Any_NS) { if (inElem->getURI() == curElem->getURI()) { nextState = fTransTable[curState][elemIndex]; if (nextState != XMLContentModel::gInvalidTrans) break; } } else if ((type & 0x0f) == ContentSpecNode::Any_Other) { // Here we assume that empty string has id 1. // unsigned int uriId = curElem->getURI(); if (uriId != 1 && uriId != inElem->getURI()) { nextState = fTransTable[curState][elemIndex]; if (nextState != XMLContentModel::gInvalidTrans) break; } } }//for elemIndex // If "nextState" is -1, we found a match, but the transition is invalid if (nextState == XMLContentModel::gInvalidTrans) { *indexFailingChild=childIndex; return false; } // If we didn't find it, then obviously not valid if (elemIndex == fElemMapSize) { *indexFailingChild=childIndex; return false; } unsigned int nextLoop = 0; if(!handleRepetitions(curElem, curState, loopCount, nextState, nextLoop, elemIndex, &comparator)) { *indexFailingChild=childIndex; return false; } curState = nextState; loopCount = nextLoop; nextState = 0; }//for childIndex // // We transitioned all the way through the input list. However, that // does not mean that we ended in a final state. So check whether // our ending state is a final state. // if (!fFinalStateFlags[curState]) { *indexFailingChild=childIndex; return false; } // verify if we exited before the minOccurs was satisfied if (fCountingStates != 0) { Occurence* o = fCountingStates[curState]; if (o != 0) { if (loopCount < (unsigned int)o->minOccurs) { // not enough loops on the current state. *indexFailingChild=childIndex; return false; } } } //success return true; } bool DFAContentModel::handleRepetitions(const QName* const curElem, unsigned int curState, unsigned int currentLoop, unsigned int& nextState, unsigned int& nextLoop, XMLSize_t elemIndex, SubstitutionGroupComparator * comparator) const { nextLoop = 0; if (fCountingStates != 0) { nextLoop = currentLoop; Occurence* o = fCountingStates[curState]; if (o != 0) { if (curState == nextState) { if (++nextLoop > (unsigned int)o->maxOccurs && o->maxOccurs != -1) { // It's likely that we looped too many times on the current state // however it's possible that we actually matched another particle // which allows the same name. // // Consider: // // // // // // // and // // // // // // // In the DFA there will be two transitions from the current state which // allow "foo". Note that this is not a UPA violation. The ambiguity of which // transition to take is resolved by the current value of the counter. Since // we've already seen enough instances of the first "foo" perhaps there is // another element declaration or wildcard deeper in the element map which // matches. unsigned int tempNextState = 0; while (++elemIndex < fElemMapSize) { QName* inElem = fElemMap[elemIndex]; ContentSpecNode::NodeTypes type = fElemMapType[elemIndex]; if (type == ContentSpecNode::Leaf) { if(comparator!=0) { if (comparator->isEquivalentTo(curElem, inElem) ) { tempNextState = fTransTable[curState][elemIndex]; if (tempNextState != XMLContentModel::gInvalidTrans) break; } } else if (fDTD) { if (XMLString::equals(inElem->getRawName(), curElem->getRawName())) { tempNextState = fTransTable[curState][elemIndex]; if (tempNextState != XMLContentModel::gInvalidTrans) break; } } else { if ((inElem->getURI() == curElem->getURI()) && (XMLString::equals(inElem->getLocalPart(), curElem->getLocalPart()))) { tempNextState = fTransTable[curState][elemIndex]; if (tempNextState != XMLContentModel::gInvalidTrans) break; } } } else if ((type & 0x0f)== ContentSpecNode::Any) { tempNextState = fTransTable[curState][elemIndex]; if (tempNextState != XMLContentModel::gInvalidTrans) break; } else if ((type & 0x0f) == ContentSpecNode::Any_NS) { if (inElem->getURI() == curElem->getURI()) { tempNextState = fTransTable[curState][elemIndex]; if (tempNextState != XMLContentModel::gInvalidTrans) break; } } else if ((type & 0x0f) == ContentSpecNode::Any_Other) { // Here we assume that empty string has id 1. // unsigned int uriId = curElem->getURI(); if (uriId != 1 && uriId != inElem->getURI()) { tempNextState = fTransTable[curState][elemIndex]; if (tempNextState != XMLContentModel::gInvalidTrans) break; } } } // if we still can't find a match, report the error if (elemIndex == fElemMapSize) return false; // if we found a match, set the next state and reset the // counter if the next state is a counting state. nextState = tempNextState; Occurence* o = fCountingStates[nextState]; if (o != 0) { nextLoop = (elemIndex == XMLSize_t (o->elemIndex)) ? 1 : 0; } } } else if (nextLoop < (unsigned int)o->minOccurs) { // not enough loops on the current state. return false; } else { // Exiting a counting state. If we're entering a new // counting state, reset the counter. o = fCountingStates[nextState]; if (o != 0) { nextLoop = (elemIndex == XMLSize_t (o->elemIndex)) ? 1 : 0; } } } else { o = fCountingStates[nextState]; if (o != 0) { // Entering a new counting state. Reset the counter. // If we've already seen one instance of the looping // particle set the counter to 1, otherwise set it // to 0. nextLoop = (elemIndex == XMLSize_t (o->elemIndex)) ? 1 : 0; } } } return true; } // --------------------------------------------------------------------------- // DFAContentModel: Private helper methods // --------------------------------------------------------------------------- void DFAContentModel::buildDFA(ContentSpecNode* const curNode) { unsigned int index; // // The first step we need to take is to rewrite the content model using // our CMNode objects, and in the process get rid of any repetition short // cuts, converting them into '*' style repetitions or getting rid of // repetitions altogether. // // The conversions done are: // // x+ -> (x|x*) // x? -> (x|epsilon) // // This is a relatively complex scenario. What is happening is that we // create a top level binary node of which the special EOC value is set // as the right side node. The the left side is set to the rewritten // syntax tree. The source is the original content model info from the // decl pool. The rewrite is done by buildSyntaxTree() which recurses the // decl pool's content of the element and builds a new tree in the // process. // // Note that, during this operation, we set each non-epsilon leaf node's // DFA state position and count the number of such leafs, which is left // in the fLeafCount member. // fLeafCount=countLeafNodes(curNode); fEOCPos = fLeafCount++; // We need to build an array of references to the non-epsilon // leaf nodes. We will put them in the array according to their position values // fLeafList = (CMLeaf**) fMemoryManager->allocate(fLeafCount*sizeof(CMLeaf*)); //new CMLeaf*[fLeafCount]; fLeafListType = (ContentSpecNode::NodeTypes*) fMemoryManager->allocate ( fLeafCount * sizeof(ContentSpecNode::NodeTypes) ); //new ContentSpecNode::NodeTypes[fLeafCount]; // // And, moving onward... We now need to build the follow position sets // for all the nodes. So we allocate an array of pointers to state sets, // one for each leaf node (i.e. each significant DFA position.) // fFollowList = (CMStateSet**) fMemoryManager->allocate ( fLeafCount * sizeof(CMStateSet*) ); //new CMStateSet*[fLeafCount]; for (index = 0; index < fLeafCount; index++) fFollowList[index] = new (fMemoryManager) CMStateSet(fLeafCount, fMemoryManager); // The buildSyntaxTree function will recursively iterate over the ContentSpecNode // and build the CMNode hierarchy; it will also put every leaf node in the fLeafList // array, then calculate the first and last position sets of each node. This is // cached away in each of the nodes. // // Along the way we also set the leaf count in each node as the maximum // state count. They must know this in order to create their first/last // position sets. // unsigned int counter=0; CMNode* nodeOrgContent = buildSyntaxTree(curNode, counter); // // Check to see whether this content model can handle an empty content, // which is something we need to optimize by looking now before we // throw away the info that would tell us that. // // If the left node of the head (the top level of the original content) // is nullable, then its true. // fEmptyOk = nodeOrgContent->isNullable(); // // And handle specially the EOC node, which also must be numbered and // counted as a non-epsilon leaf node. It could not be handled in the // above tree build because it was created before all that started. We // save the EOC position since its used during the DFA building loop. // CMLeaf* nodeEOC = new (fMemoryManager) CMLeaf ( new (fMemoryManager) QName ( XMLUni::fgZeroLenString , XMLUni::fgZeroLenString , XMLContentModel::gEOCFakeId , fMemoryManager ) , fEOCPos , true , fLeafCount , fMemoryManager ); fHeadNode = new (fMemoryManager) CMBinaryOp ( ContentSpecNode::Sequence , nodeOrgContent , nodeEOC , fLeafCount , fMemoryManager ); // Put also the final EOC node in the leaf array fLeafList[counter] = new (fMemoryManager) CMLeaf ( nodeEOC->getElement() , nodeEOC->getPosition() , fLeafCount , fMemoryManager ); fLeafListType[counter] = ContentSpecNode::Leaf; // // Now handle our top level. We use our left child's last pos set and our // right child's first pos set, so get them now for convenience. // const CMStateSet& last = nodeOrgContent->getLastPos(); const CMStateSet& first = nodeEOC->getFirstPos(); // // Now, for every position which is in our left child's last set // add all of the states in our right child's first set to the // follow set for that position. // CMStateSetEnumerator enumLast(&last); while(enumLast.hasMoreElements()) { XMLSize_t index=enumLast.nextElement(); *fFollowList[index] |= first; } // // And finally the big push... Now we build the DFA using all the states // and the tree we've built up. First we set up the various data // structures we are going to use while we do this. // // First of all we need an array of unique element ids in our content // model. For each transition table entry, we need a set of contiguous // indices to represent the transitions for a particular input element. // So we need to a zero based range of indexes that map to element types. // This element map provides that mapping. // fElemMap = (QName**) fMemoryManager->allocate ( fLeafCount * sizeof(QName*) ); //new QName*[fLeafCount]; fElemMapType = (ContentSpecNode::NodeTypes*) fMemoryManager->allocate ( fLeafCount * sizeof(ContentSpecNode::NodeTypes) ); //new ContentSpecNode::NodeTypes[fLeafCount]; fElemMapSize = 0; Occurence** elemOccurenceMap=0; for (unsigned int outIndex = 0; outIndex < fLeafCount; outIndex++) { fElemMap[outIndex] = new (fMemoryManager) QName(fMemoryManager); if ( (fLeafListType[outIndex] & 0x0f) != ContentSpecNode::Leaf ) if (!fLeafNameTypeVector) fLeafNameTypeVector = new (fMemoryManager) ContentLeafNameTypeVector(fMemoryManager); // Get the current leaf's element index CMLeaf* leaf=fLeafList[outIndex]; const QName* element = leaf->getElement(); const XMLCh* elementRawName = 0; if (fDTD && element) elementRawName = element->getRawName(); // See if the current leaf node's element index is in the list unsigned int inIndex = 0; for (; inIndex < fElemMapSize; inIndex++) { const QName* inElem = fElemMap[inIndex]; if (fDTD) { if (XMLString::equals(inElem->getRawName(), elementRawName)) { break; } } else { if ((fElemMapType[inIndex] == fLeafListType[outIndex]) && (inElem->getURI() == element->getURI()) && (XMLString::equals(inElem->getLocalPart(), element->getLocalPart()))) { break; } } } // If it was not in the list, then add it and bump the map size if (inIndex == fElemMapSize) { fElemMap[fElemMapSize]->setValues(*element); if(leaf->isRepeatableLeaf()) { if (elemOccurenceMap == 0) { elemOccurenceMap = (Occurence**)fMemoryManager->allocate(fLeafCount*sizeof(Occurence*)); memset(elemOccurenceMap, 0, fLeafCount*sizeof(Occurence*)); } elemOccurenceMap[fElemMapSize] = new (fMemoryManager) Occurence(((CMRepeatingLeaf*)leaf)->getMinOccurs(), ((CMRepeatingLeaf*)leaf)->getMaxOccurs(), fElemMapSize); } fElemMapType[fElemMapSize] = fLeafListType[outIndex]; ++fElemMapSize; } } // set up the fLeafNameTypeVector object if there is one. if (fLeafNameTypeVector) { fLeafNameTypeVector->setValues(fElemMap, fElemMapType, fElemMapSize); } /*** * Optimization(Jan, 2001); We sort fLeafList according to * elemIndex which is *uniquely* associated to each leaf. * We are *assuming* that each element appears in at least one leaf. **/ // don't forget to delete it #ifdef OPTIMIZED_BUT_STILL_LINEAR_SEARCH int *fLeafSorter = (int*) fMemoryManager->allocate ( (fLeafCount + fElemMapSize) * sizeof(int) ); //new int[fLeafCount + fElemMapSize]; unsigned int fSortCount = 0; for (unsigned int elemIndex = 0; elemIndex < fElemMapSize; elemIndex++) { const QName* element = fElemMap[elemIndex]; const XMLCh* elementRawName = 0; if (fDTD && element) elementRawName = element->getRawName(); for (unsigned int leafIndex = 0; leafIndex < fLeafCount; leafIndex++) { const QName* leaf = fLeafList[leafIndex]->getElement(); if (fDTD) { if (XMLString::equals(leaf->getRawName(), elementRawName)) { fLeafSorter[fSortCount++] = leafIndex; } } else { if ((fElemMapType[elemIndex] == fLeafListType[leafIndex]) && (leaf->getURI() == element->getURI()) && (XMLString::equals(leaf->getLocalPart(), element->getLocalPart()))) { fLeafSorter[fSortCount++] = leafIndex; } } } fLeafSorter[fSortCount++] = -1; } #endif // instead of using a single array with -1 to separate elements, use a bidimensional map unsigned int** fLeafSorter = (unsigned int**)fMemoryManager->allocate(fElemMapSize * sizeof(unsigned int*)); unsigned int* tmpSorter = (unsigned int*)fMemoryManager->allocate(fLeafCount * sizeof(unsigned int)); for (unsigned int elemIndex = 0; elemIndex < fElemMapSize; elemIndex++) { const QName* element = fElemMap[elemIndex]; const XMLCh* elementRawName = 0; if (fDTD && element) elementRawName = element->getRawName(); unsigned int fSortCount=0; for (unsigned int leafIndex = 0; leafIndex < fLeafCount; leafIndex++) { const QName* leaf = fLeafList[leafIndex]->getElement(); if (fDTD) { if (XMLString::equals(leaf->getRawName(), elementRawName)) { tmpSorter[fSortCount++] = leafIndex; } } else { if ((fElemMapType[elemIndex] == fLeafListType[leafIndex]) && (leaf->getURI() == element->getURI()) && (XMLString::equals(leaf->getLocalPart(), element->getLocalPart()))) { tmpSorter[fSortCount++] = leafIndex; } } } fLeafSorter[elemIndex]=(unsigned int*)fMemoryManager->allocate((fSortCount+1) * sizeof(unsigned int)); fLeafSorter[elemIndex][0]=fSortCount; for (unsigned int index=0;indexdeallocate(tmpSorter); // // Next lets create some arrays, some that that hold transient info // during the DFA build and some that are permament. These are kind of // sticky since we cannot know how big they will get, but we don't want // to use any collection type classes because of performance. // // Basically they will probably be about fLeafCount*2 on average, but can // be as large as 2^(fLeafCount*2), worst case. So we start with // fLeafCount*4 as a middle ground. This will be very unlikely to ever // have to expand though, it if does, the overhead will be somewhat ugly. // unsigned int curArraySize = fLeafCount * 4; CMStateSet** statesToDo = (CMStateSet**) fMemoryManager->allocate ( curArraySize * sizeof(CMStateSet*) ); //new const CMStateSet*[curArraySize]; fFinalStateFlags = (bool*) fMemoryManager->allocate ( curArraySize * sizeof(bool) ); //new bool[curArraySize]; fTransTable = (unsigned int**) fMemoryManager->allocate ( curArraySize * sizeof(unsigned int*) ); //new unsigned int*[curArraySize]; // // Ok we start with the initial set as the first pos set of the head node // (which is the seq node that holds the content model and the EOC node.) // CMStateSet* setT = new (fMemoryManager) CMStateSet(fHeadNode->getFirstPos()); // // Note on memory leak: Bugzilla#2707: // =================================== // The CMBinary, pointed to by fHeadNode, shall be released by // deleted by itself. // // fLeafList[] maintains its **OWN** copy of CMLeaf to avoid double deletion // of CMLeaf. // delete fHeadNode; // // Init our two state flags. Basically the unmarked state counter is // always chasing the current state counter. When it catches up, that // means we made a pass through that did not add any new states to the // lists, at which time we are done. We could have used a expanding array // of flags which we used to mark off states as we complete them, but // this is easier though less readable maybe. // unsigned int unmarkedState = 0; unsigned int curState = 0; // // Init the first transition table entry, and put the initial state // into the states to do list, then bump the current state. // fTransTable[curState] = makeDefStateList(); statesToDo[curState] = setT; curState++; // // the stateTable is an auxiliary means to fast // identification of new state created (instead // of sequential loop statesToDo to find out), // while the role that statesToDo plays remain unchanged. // RefHashTableOf *stateTable = new (fMemoryManager) RefHashTableOf ( curArraySize , true , fMemoryManager ); //stateTable->put((CMStateSet*)setT, new (fMemoryManager) XMLInteger(0)); // // Ok, almost done with the algorithm from hell... We now enter the // loop where we go until the states done counter catches up with // the states to do counter. // CMStateSet* newSet = 0; while (unmarkedState < curState) { // // Get the next unmarked state out of the list of states to do. // And get the associated transition table entry. // setT = statesToDo[unmarkedState]; unsigned int* transEntry = fTransTable[unmarkedState]; // Mark this one final if it contains the EOC state fFinalStateFlags[unmarkedState] = setT->getBit(fEOCPos); // Bump up the unmarked state count, marking this state done unmarkedState++; #ifdef OPTIMIZED_BUT_STILL_LINEAR_SEARCH // Optimization(Jan, 2001) unsigned int sorterIndex = 0; // Optimization(Jan, 2001) #endif // Loop through each possible input symbol in the element map for (unsigned int elemIndex = 0; elemIndex < fElemMapSize; elemIndex++) { // // Build up a set of states which is the union of all of the // follow sets of DFA positions that are in the current state. If // we gave away the new set last time through then create a new // one. Otherwise, zero out the existing one. // if (!newSet) newSet = new (fMemoryManager) CMStateSet ( fLeafCount , fMemoryManager ); else newSet->zeroBits(); #ifdef OBSOLETED // unoptimized code for (unsigned int leafIndex = 0; leafIndex < fLeafCount; leafIndex++) { // If this leaf index (DFA position) is in the current set... if (setT->getBit(leafIndex)) { // // If this leaf is the current input symbol, then we want // to add its follow list to the set of states to transition // to from the current state. // const QName* leaf = fLeafList[leafIndex]->getElement(); const QName* element = fElemMap[elemIndex]; if (fDTD) { if (XMLString::equals(leaf->getRawName(), element->getRawName())) { *newSet |= *fFollowList[leafIndex]; } } else { if ((leaf->getURI() == element->getURI()) && (XMLString::equals(leaf->getLocalPart(), element->getLocalPart()))) { *newSet |= *fFollowList[leafIndex]; } } } } // for leafIndex #endif #ifdef OPTIMIZED_BUT_STILL_LINEAR_SEARCH // Optimization(Jan, 2001) int leafIndex = fLeafSorter[sorterIndex++]; while (leafIndex != -1) { // If this leaf index (DFA position) is in the current set... if (setT->getBit(leafIndex)) { // // If this leaf is the current input symbol, then we // want to add its follow list to the set of states to // transition to from the current state. // *newSet |= *fFollowList[leafIndex]; } leafIndex = fLeafSorter[sorterIndex++]; } // while (leafIndex != -1) #endif unsigned int* fLeafIndexes=fLeafSorter[elemIndex]; unsigned int fNumItems=fLeafIndexes[0]; if(fNumItems!=0) { // The algorithm requires finding the leaf that is present both in the bitfield of the current state, and in the // list of places where the currently tested item can appear. When this occurs, the follow list of this parent item // is added to the bitfield representing the next state. // Both the bitfield and the list of places are sorted, so we can analyze them in two ways; either iterating over the // parent items, testing the bitfield for the existence of the parent (N times a constant Tb), or by iterating over the // bitfield (restricted to the range of the sorted list of places), using a binary search to locate the leaf in the // sorted list of places (M times log(N) testing operations Ts) // Assuming that the time to test a bit is roughly the same of the time needed to compute the average of two integers, // plus a couple of comparisons and additions, we compare N agains M*log(N) to decide which algorithm should be faster given // the two sets if(fNumItems <= setT->getBitCountInRange(fLeafIndexes[1], fLeafIndexes[fNumItems])*log((float)fNumItems)) { for(unsigned int i=1; i<=fNumItems; ++i) if(setT->getBit(fLeafIndexes[i])) { // // If this leaf is the current input symbol, then we // want to add its follow list to the set of states to // transition to from the current state. // *newSet |= *fFollowList[ fLeafIndexes[i] ]; } } else { // Further optimization: given that the bitfield enumerator returns the numbers in order, // every time we raise the lower marker we know it will true also for the next bits, so // the next binary search will not start from 1 but from this index unsigned int lowIndex = 1; // Start the enumerator from the first index in the sorted list of places, // as nothing before that point will match CMStateSetEnumerator enumBits(setT, fLeafIndexes[1]); while(enumBits.hasMoreElements()) { unsigned int bitIndex=enumBits.nextElement(); // if this leaf is greater than the last index in the sorted list of places, // nothing can be found from now on, so get out of here if(bitIndex > fLeafIndexes[fNumItems]) break; // Check if this leaf index (DFA position) is in the current set // (using binary search: the indexes are sorted) unsigned int first=lowIndex,last=fNumItems,i; while(first<=last) { i=(first+last)/2; if(fLeafIndexes[i]>bitIndex) last=i-1; else if(fLeafIndexes[i]isEmpty()) { // // Search the 'states to do' list to see if this new // state set is already in there. // /*** unsigned int stateIndex = 0; for (; stateIndex < curState; stateIndex++) { if (*statesToDo[stateIndex] == *newSet) break; } ***/ XMLInteger *stateObj = stateTable->get(newSet); unsigned int stateIndex = (stateObj == 0 ? curState : stateObj->intValue()); // If we did not find it, then add it if (stateIndex == curState) { // // Put this new state into the states to do and init // a new entry at the same index in the transition // table. // statesToDo[curState] = newSet; fTransTable[curState] = makeDefStateList(); stateTable->put ( newSet , new (fMemoryManager) XMLInteger(curState) ); // We now have a new state to do so bump the count curState++; // // Null out the new set to indicate we adopted it. This // will cause the creation of a new set on the next time // around the loop. // newSet = 0; } // // Now set this state in the transition table's entry for this // element (using its index), with the DFA state we will move // to from the current state when we see this input element. // transEntry[elemIndex] = stateIndex; // Expand the arrays if we're full if (curState == curArraySize) { // // Yikes, we overflowed the initial array size, so we've // got to expand all of these arrays. So adjust up the // size by 50% and allocate new arrays. // const unsigned int newSize = (unsigned int)(curArraySize * 1.5); CMStateSet** newToDo = (CMStateSet**) fMemoryManager->allocate ( newSize * sizeof(CMStateSet*) ); //new const CMStateSet*[newSize]; bool* newFinalFlags = (bool*) fMemoryManager->allocate ( newSize * sizeof(bool) ); //new bool[newSize]; unsigned int** newTransTable = (unsigned int**) fMemoryManager->allocate ( newSize * sizeof(unsigned int*) ); //new unsigned int*[newSize]; // Copy over all of the existing content for (unsigned int expIndex = 0; expIndex < curArraySize; expIndex++) { newToDo[expIndex] = statesToDo[expIndex]; newFinalFlags[expIndex] = fFinalStateFlags[expIndex]; newTransTable[expIndex] = fTransTable[expIndex]; } // Clean up the old stuff fMemoryManager->deallocate(statesToDo); //delete [] statesToDo; fMemoryManager->deallocate(fFinalStateFlags); //delete [] fFinalStateFlags; fMemoryManager->deallocate(fTransTable); //delete [] fTransTable; // Store the new array size and pointers curArraySize = newSize; statesToDo = newToDo; fFinalStateFlags = newFinalFlags; fTransTable = newTransTable; } //if (curState == curArraySize) } //if (!newSet->isEmpty()) } // for elemIndex } //while // Store the current state count in the trans table size fTransTableSize = curState; // // Fill in the occurence information for each looping state // if we're using counters. // if (elemOccurenceMap != 0) { fCountingStates = (Occurence**)fMemoryManager->allocate(fTransTableSize*sizeof(Occurence)); memset(fCountingStates, 0, fTransTableSize*sizeof(Occurence*)); for (unsigned int i = 0; i < fTransTableSize; ++i) { unsigned int * transitions = fTransTable[i]; for (unsigned int j = 0; j < fElemMapSize; ++j) { if (i == transitions[j]) { Occurence* old=elemOccurenceMap[j]; if(old!=0) fCountingStates[i] = new (fMemoryManager) Occurence(old->minOccurs, old->maxOccurs, old->elemIndex); break; } } } for (unsigned int j = 0; j < fLeafCount; ++j) { if(elemOccurenceMap[j]!=0) delete elemOccurenceMap[j]; } fMemoryManager->deallocate(elemOccurenceMap); } // If the last temp set was not stored, then clean it up if (newSet) delete newSet; // // Now we can clean up all of the temporary data that was needed during // DFA build. // for (index = 0; index < fLeafCount; index++) delete fFollowList[index]; fMemoryManager->deallocate(fFollowList); //delete [] fFollowList; // // removeAll() will delete all data, XMLInteger, // while the keys are to be deleted by the // deletion of statesToDo. // delete stateTable; for (index = 0; index < curState; index++) delete statesToDo[index]; fMemoryManager->deallocate(statesToDo); //delete [] statesToDo; for (index = 0; index < fLeafCount; index++) delete fLeafList[index]; fMemoryManager->deallocate(fLeafList); //delete [] fLeafList; #ifdef OPTIMIZED_BUT_STILL_LINEAR_SEARCH fMemoryManager->deallocate(fLeafSorter); //delete [] fLeafSorter; #endif for (index=0; index < fElemMapSize; index++) fMemoryManager->deallocate(fLeafSorter[index]); fMemoryManager->deallocate(fLeafSorter); } unsigned int DFAContentModel::countLeafNodes(ContentSpecNode* const curNode) { unsigned int count = 0; // Get the spec type of the passed node const ContentSpecNode::NodeTypes curType = curNode->getType(); if ((curType & 0x0f) == ContentSpecNode::Any || (curType & 0x0f) == ContentSpecNode::Any_Other || (curType & 0x0f) == ContentSpecNode::Any_NS || curType == ContentSpecNode::Leaf || curType == ContentSpecNode::Loop) { count++; } else { // // Its not a leaf, so we have to recurse its left and maybe right // nodes. Save both values before we recurse and trash the node. // ContentSpecNode* leftNode = curNode->getFirst(); ContentSpecNode* rightNode = curNode->getSecond(); // Detect if we have a deep tree that can be analyzed using a loop instead of recursion unsigned int nLoopCount=0; ContentSpecNode* cursor=curNode; while(cursor->getType()==ContentSpecNode::Sequence && cursor->getFirst() && cursor->getFirst()->getSecond()==rightNode) { nLoopCount++; cursor=cursor->getFirst(); } if(nLoopCount!=0) { count += countLeafNodes(cursor); for(unsigned int i=0;igetType(); if ((curType & 0x0f) == ContentSpecNode::Any || (curType & 0x0f) == ContentSpecNode::Any_Other || (curType & 0x0f) == ContentSpecNode::Any_NS) { retNode = new (fMemoryManager) CMAny ( curType , curNode->getElement()->getURI() , curIndex , fLeafCount , fMemoryManager ); fLeafList[curIndex] = new (fMemoryManager) CMLeaf ( new (fMemoryManager) QName ( XMLUni::fgZeroLenString , XMLUni::fgZeroLenString , curNode->getElement()->getURI() , fMemoryManager ) , curIndex , true , fLeafCount , fMemoryManager ); fLeafListType[curIndex] = curType; ++curIndex; } else if (curType == ContentSpecNode::Leaf) { // // Create a new leaf node, and pass it the current leaf count, which // is its DFA state position. Bump the leaf count after storing it. // This makes the positions zero based since we store first and then // increment. // retNode = new (fMemoryManager) CMLeaf ( curNode->getElement() , curIndex , fLeafCount , fMemoryManager ); fLeafList[curIndex] = new (fMemoryManager) CMLeaf ( curNode->getElement() , curIndex , fLeafCount , fMemoryManager ); fLeafListType[curIndex] = ContentSpecNode::Leaf; ++curIndex; } else if (curType == ContentSpecNode::Loop) { // // Create a new leaf node, and pass it the current leaf count, which // is its DFA state position. Bump the leaf count after storing it. // This makes the positions zero based since we store first and then // increment. // retNode = new (fMemoryManager) CMRepeatingLeaf ( curNode->getFirst()->getElement() , curNode->getMinOccurs() , curNode->getMaxOccurs() , curIndex , fLeafCount , fMemoryManager ); fLeafList[curIndex] = new (fMemoryManager) CMRepeatingLeaf ( curNode->getFirst()->getElement() , curNode->getMinOccurs() , curNode->getMaxOccurs() , curIndex , fLeafCount , fMemoryManager ); fLeafListType[curIndex] = curNode->getFirst()->getType(); ++curIndex; } else { // // Its not a leaf, so we have to recurse its left and maybe right // nodes. Save both values before we recurse and trash the node. // ContentSpecNode* leftNode = curNode->getFirst(); ContentSpecNode* rightNode = curNode->getSecond(); // Detect if we have a deep tree that can be analyzed using a loop instead of recursion unsigned int nLoopCount=0; ContentSpecNode* cursor=curNode; while(cursor->getType()==ContentSpecNode::Sequence && cursor->getFirst() && cursor->getFirst()->getSecond()==rightNode) { nLoopCount++; cursor=cursor->getFirst(); } if(nLoopCount!=0) { retNode = buildSyntaxTree(cursor, curIndex); for(unsigned int i=0;igetLastPos(); const CMStateSet& first = newRight->getFirstPos(); // // Now, for every position which is in our left child's last set // add all of the states in our right child's first set to the // follow set for that position. // CMStateSetEnumerator enumLast(&last); while(enumLast.hasMoreElements()) { XMLSize_t index=enumLast.nextElement(); *fFollowList[index] |= first; } retNode = new (fMemoryManager) CMBinaryOp ( ContentSpecNode::Sequence , retNode , newRight , fLeafCount , fMemoryManager ); } return retNode; } if (((curType & 0x0f) == ContentSpecNode::Choice) || ((curType & 0x0f) == ContentSpecNode::Sequence)) { // // Recurse on both children, and return a binary op node with the // two created sub nodes as its children. The node type is the // same type as the source. // CMNode* newLeft = buildSyntaxTree(leftNode, curIndex); CMNode* newRight = buildSyntaxTree(rightNode, curIndex); if(((curType & 0x0f) == ContentSpecNode::Sequence)) { // // Now handle our level. We use our left child's last pos set and our // right child's first pos set, so get them now for convenience. // const CMStateSet& last = newLeft->getLastPos(); const CMStateSet& first = newRight->getFirstPos(); // // Now, for every position which is in our left child's last set // add all of the states in our right child's first set to the // follow set for that position. // CMStateSetEnumerator enumLast(&last); while(enumLast.hasMoreElements()) { XMLSize_t index=enumLast.nextElement(); *fFollowList[index] |= first; } } retNode = new (fMemoryManager) CMBinaryOp ( curType , newLeft , newRight , fLeafCount , fMemoryManager ); } else if (curType == ContentSpecNode::ZeroOrMore || curType == ContentSpecNode::ZeroOrOne || curType == ContentSpecNode::OneOrMore) { CMNode* newChild = buildSyntaxTree(leftNode, curIndex); if (curType == ContentSpecNode::ZeroOrMore || curType == ContentSpecNode::OneOrMore) { // // Now handle our level. We use our own first and last position // sets, so get them up front. // const CMStateSet& first = newChild->getFirstPos(); const CMStateSet& last = newChild->getLastPos(); // // For every position which is in our last position set, add all // of our first position states to the follow set for that // position. // CMStateSetEnumerator enumLast(&last); while(enumLast.hasMoreElements()) { XMLSize_t index=enumLast.nextElement(); *fFollowList[index] |= first; } } // This one is fine as is, just change to our form retNode = new (fMemoryManager) CMUnaryOp ( curType , newChild , fLeafCount , fMemoryManager ); } else { ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::CM_UnknownCMSpecType, fMemoryManager); } } // fault in the first and last pos, then delete it children retNode->getFirstPos(); retNode->getLastPos(); retNode->orphanChild(); return retNode; } // // gInvalidTrans is used to represent bad transitions in the transition table // entry for each state. So each entry is initialized to that value. This // method creates a new entry and initializes it. // unsigned int* DFAContentModel::makeDefStateList() const { unsigned int* retArray = (unsigned int*) fMemoryManager->allocate ( fElemMapSize * sizeof(unsigned int) ); //new unsigned int[fElemMapSize]; for (unsigned int index = 0; index < fElemMapSize; index++) retArray[index] = XMLContentModel::gInvalidTrans; return retArray; } ContentLeafNameTypeVector* DFAContentModel::getContentLeafNameTypeVector() const { //later change it to return the data member return fLeafNameTypeVector; } void DFAContentModel::checkUniqueParticleAttribution (SchemaGrammar* const pGrammar, GrammarResolver* const pGrammarResolver, XMLStringPool* const pStringPool, XMLValidator* const pValidator, unsigned int* const pContentSpecOrgURI, const XMLCh* pComplexTypeName /*= 0*/) { SubstitutionGroupComparator comparator(pGrammarResolver, pStringPool); unsigned int i, j, k; // Rename the URI back for (i = 0; i < fElemMapSize; i++) { unsigned int orgURIIndex = fElemMap[i]->getURI(); if ((orgURIIndex != XMLContentModel::gEOCFakeId) && (orgURIIndex != XMLContentModel::gEpsilonFakeId) && (orgURIIndex != XMLElementDecl::fgInvalidElemId) && (orgURIIndex != XMLElementDecl::fgPCDataElemId)) { fElemMap[i]->setURI(pContentSpecOrgURI[orgURIIndex]); } } // Unique Particle Attribution // Store the conflict results between any two elements in fElemMap // 0 - not yet tested, 1 - conflict, (-1) - no conflict signed char** conflictTable = (signed char**) fMemoryManager->allocate ( fElemMapSize * sizeof(signed char*) ); // initialize the conflict table for (j = 0; j < fElemMapSize; j++) { conflictTable[j] = (signed char*) fMemoryManager->allocate ( fElemMapSize * sizeof(signed char) ); memset(conflictTable[j], 0, fElemMapSize*sizeof(signed char)); } // for each state, check whether it has overlap transitions for (i = 0; i < fTransTableSize; i++) { for (j = 0; j < fElemMapSize; j++) { for (k = j+1; k < fElemMapSize; k++) { if (fTransTable[i][j] != XMLContentModel::gInvalidTrans && fTransTable[i][k] != XMLContentModel::gInvalidTrans && conflictTable[j][k] == 0) { // If this is text in a Schema mixed content model, skip it. if ( fIsMixed && (( fElemMap[j]->getURI() == XMLElementDecl::fgPCDataElemId) || ( fElemMap[k]->getURI() == XMLElementDecl::fgPCDataElemId))) continue; if (XercesElementWildcard::conflict(pGrammar, fElemMapType[j], fElemMap[j], fElemMapType[k], fElemMap[k], &comparator)) { if (fCountingStates != 0) { Occurence* o = fCountingStates[i]; // If "i" is a counting state and exactly one of the transitions // loops back to "i" then the two particles do not overlap if // minOccurs == maxOccurs. if (o != 0 && ((fTransTable[i][j] == i) ^ (fTransTable[i][k] == i)) && o->minOccurs == o->maxOccurs) { conflictTable[j][k] = -1; continue; } } conflictTable[j][k] = 1; XMLBuffer buf1(1023, fMemoryManager); if (((fElemMapType[j] & 0x0f) == ContentSpecNode::Any) || ((fElemMapType[j] & 0x0f) == ContentSpecNode::Any_NS)) buf1.set(SchemaSymbols::fgATTVAL_TWOPOUNDANY); else if ((fElemMapType[j] & 0x0f) == ContentSpecNode::Any_Other) buf1.set(SchemaSymbols::fgATTVAL_TWOPOUNDOTHER); else buf1.set(fElemMap[j]->getRawName()); XMLBuffer buf2(1023, fMemoryManager); if (((fElemMapType[k] & 0x0f) == ContentSpecNode::Any) || ((fElemMapType[k] & 0x0f) == ContentSpecNode::Any_NS)) buf2.set(SchemaSymbols::fgATTVAL_TWOPOUNDANY); else if ((fElemMapType[k] & 0x0f) == ContentSpecNode::Any_Other) buf2.set(SchemaSymbols::fgATTVAL_TWOPOUNDOTHER); else buf2.set(fElemMap[k]->getRawName()); pValidator->emitError(XMLValid::UniqueParticleAttributionFail, pComplexTypeName, buf1.getRawBuffer(), buf2.getRawBuffer()); } else conflictTable[j][k] = -1; } } } } for (i = 0; i < fElemMapSize; i++) fMemoryManager->deallocate(conflictTable[i]); fMemoryManager->deallocate(conflictTable); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/validators/common/ContentLeafNameTypeVector.cpp0000644000175000017500000000733411037122704025666 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: ContentLeafNameTypeVector.cpp 676911 2008-07-15 13:27:32Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // ContentLeafNameTypeVector: Constructors and Destructor // --------------------------------------------------------------------------- ContentLeafNameTypeVector::ContentLeafNameTypeVector ( MemoryManager* const manager ) : fMemoryManager(manager) , fLeafNames(0) , fLeafTypes(0) , fLeafCount(0) { } ContentLeafNameTypeVector::ContentLeafNameTypeVector ( QName** const names , ContentSpecNode::NodeTypes* const types , const XMLSize_t count , MemoryManager* const manager ) : fMemoryManager(manager) , fLeafNames(0) , fLeafTypes(0) , fLeafCount(0) { setValues(names, types, count); } /*** copy ctor ***/ ContentLeafNameTypeVector::ContentLeafNameTypeVector ( const ContentLeafNameTypeVector& toCopy ) : XMemory(toCopy) , fMemoryManager(toCopy.fMemoryManager) , fLeafNames(0) , fLeafTypes(0) , fLeafCount(0) { fLeafCount=toCopy.getLeafCount(); init(fLeafCount); for (XMLSize_t i=0; ifLeafCount; i++) { fLeafNames[i] = toCopy.getLeafNameAt(i); fLeafTypes[i] = toCopy.getLeafTypeAt(i); } } ContentLeafNameTypeVector::~ContentLeafNameTypeVector() { cleanUp(); } // --------------------------------------------------------------------------- // ContentSpecType: Setter methods // --------------------------------------------------------------------------- void ContentLeafNameTypeVector::setValues ( QName** const names , ContentSpecNode::NodeTypes* const types , const XMLSize_t count ) { cleanUp(); init(count); for (XMLSize_t i=0; i= fLeafCount) ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Vector_BadIndex, fMemoryManager); return fLeafNames[pos]; } ContentSpecNode::NodeTypes ContentLeafNameTypeVector::getLeafTypeAt (const XMLSize_t pos) const { if (pos >= fLeafCount) ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Vector_BadIndex, fMemoryManager); return fLeafTypes[pos]; } XMLSize_t ContentLeafNameTypeVector::getLeafCount() const { return fLeafCount; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/validators/common/GrammarResolver.hpp0000644000175000017500000002032111360344373023751 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: GrammarResolver.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_GRAMMARRESOLVER_HPP) #define XERCESC_INCLUDE_GUARD_GRAMMARRESOLVER_HPP #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN class DatatypeValidator; class DatatypeValidatorFactory; class XMLGrammarDescription; /** * This class embodies the representation of a Grammar pool Resolver. * This class is called from the validator. * */ class VALIDATORS_EXPORT GrammarResolver : public XMemory { public: /** @name Constructor and Destructor */ //@{ /** * * Default Constructor */ GrammarResolver( XMLGrammarPool* const gramPool , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /** * Destructor */ ~GrammarResolver(); //@} /** @name Getter methods */ //@{ /** * Retrieve the DatatypeValidator * * @param uriStr the namespace URI * @param typeName the type name * @return the DatatypeValidator associated with namespace & type name */ DatatypeValidator* getDatatypeValidator(const XMLCh* const uriStr, const XMLCh* const typeName); /** * Retrieve the DatatypeValidatorFactory used for built-in schema types * * @return the DatatypeValidator associated with namespace for XMLSchema */ DatatypeValidatorFactory* getBuiltinDatatypeValidatorFactory(); /** * Retrieve the grammar that is associated with the specified namespace key * * @param gramDesc grammar description for the grammar * @return Grammar abstraction associated with the grammar description */ Grammar* getGrammar( XMLGrammarDescription* const gramDesc ) ; /** * Retrieve the grammar that is associated with the specified namespace key * * @param namespaceKey Namespace key into Grammar pool * @return Grammar abstraction associated with the NameSpace key. */ Grammar* getGrammar( const XMLCh* const namespaceKey ) ; /** * Get an enumeration of Grammar in the Grammar pool * * @return enumeration of Grammar in Grammar pool */ RefHashTableOfEnumerator getGrammarEnumerator() const; /** * Get an enumeration of the referenced Grammars * * @return enumeration of referenced Grammars */ RefHashTableOfEnumerator getReferencedGrammarEnumerator() const; /** * Get an enumeration of the cached Grammars in the Grammar pool * * @return enumeration of the cached Grammars in Grammar pool */ RefHashTableOfEnumerator getCachedGrammarEnumerator() const; /** * Get a string pool of schema grammar element/attribute names/prefixes * (used by TraverseSchema) * * @return a string pool of schema grammar element/attribute names/prefixes */ XMLStringPool* getStringPool(); /** * Is the specified Namespace key in Grammar pool? * * @param nameSpaceKey Namespace key * @return True if Namespace key association is in the Grammar pool. */ bool containsNameSpace( const XMLCh* const nameSpaceKey ); inline XMLGrammarPool* getGrammarPool() const; inline MemoryManager* getGrammarPoolMemoryManager() const; //@} /** @name Setter methods */ //@{ /** * Set the 'Grammar caching' flag */ void cacheGrammarFromParse(const bool newState); /** * Set the 'Use cached grammar' flag */ void useCachedGrammarInParse(const bool newState); //@} /** @name GrammarResolver methods */ //@{ /** * Add the Grammar with Namespace Key associated to the Grammar Pool. * The Grammar will be owned by the Grammar Pool. * * @param grammarToAdopt Grammar abstraction used by validator. */ void putGrammar(Grammar* const grammarToAdopt ); /** * Returns the Grammar with Namespace Key associated from the Grammar Pool * The Key entry is removed from the table (grammar is not deleted if * adopted - now owned by caller). * * @param nameSpaceKey Key to associate with Grammar abstraction */ Grammar* orphanGrammar(const XMLCh* const nameSpaceKey); /** * Cache the grammars in fGrammarBucket to fCachedGrammarRegistry. * If a grammar with the same key is already cached, an exception is * thrown and none of the grammars will be cached. */ void cacheGrammars(); /** * Reset internal Namespace/Grammar registry. */ void reset(); void resetCachedGrammar(); /** * Returns an XSModel, either from the GrammarPool or by creating one */ XSModel* getXSModel(); ValueVectorOf* getGrammarsToAddToXSModel(); //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- GrammarResolver(const GrammarResolver&); GrammarResolver& operator=(const GrammarResolver&); // ----------------------------------------------------------------------- // Private data members // // fStringPool The string pool used by TraverseSchema to store // element/attribute names and prefixes. // Always owned by Grammar pool implementation // // fGrammarBucket The parsed Grammar Pool, if no caching option. // // fGrammarFromPool Referenced Grammar Set, not owned // // fGrammarPool The Grammar Set either plugged or created. // // fDataTypeReg DatatypeValidatorFactory registry // // fMemoryManager Pluggable memory manager for dynamic memory // allocation/deallocation // ----------------------------------------------------------------------- bool fCacheGrammar; bool fUseCachedGrammar; bool fGrammarPoolFromExternalApplication; XMLStringPool* fStringPool; RefHashTableOf* fGrammarBucket; RefHashTableOf* fGrammarFromPool; DatatypeValidatorFactory* fDataTypeReg; MemoryManager* fMemoryManager; XMLGrammarPool* fGrammarPool; XSModel* fXSModel; XSModel* fGrammarPoolXSModel; ValueVectorOf* fGrammarsToAddToXSModel; }; inline XMLStringPool* GrammarResolver::getStringPool() { return fStringPool; } inline void GrammarResolver::useCachedGrammarInParse(const bool aValue) { fUseCachedGrammar = aValue; } inline XMLGrammarPool* GrammarResolver::getGrammarPool() const { return fGrammarPool; } inline MemoryManager* GrammarResolver::getGrammarPoolMemoryManager() const { return fGrammarPool->getMemoryManager(); } inline ValueVectorOf* GrammarResolver::getGrammarsToAddToXSModel() { return fGrammarsToAddToXSModel; } inline DatatypeValidatorFactory* GrammarResolver::getBuiltinDatatypeValidatorFactory() { return fDataTypeReg; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/validators/common/CMAny.hpp0000644000175000017500000000710211037446664021621 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: CMAny.hpp 677396 2008-07-16 19:36:20Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_CMANY_HPP) #define XERCESC_INCLUDE_GUARD_CMANY_HPP #include XERCES_CPP_NAMESPACE_BEGIN class CMStateSet; class CMAny : public CMNode { public : // ----------------------------------------------------------------------- // Constructors // ----------------------------------------------------------------------- CMAny ( ContentSpecNode::NodeTypes type , unsigned int URI , unsigned int position , unsigned int maxStates , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); ~CMAny(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- unsigned int getURI() const; unsigned int getPosition() const; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- void setPosition(const unsigned int newPosition); // ----------------------------------------------------------------------- // Implementation of the public CMNode virtual interface // ----------------------------------------------------------------------- virtual void orphanChild(); protected : // ----------------------------------------------------------------------- // Implementation of the protected CMNode virtual interface // ----------------------------------------------------------------------- void calcFirstPos(CMStateSet& toSet) const; void calcLastPos(CMStateSet& toSet) const; private : // ----------------------------------------------------------------------- // Private data members // // fURI; // URI of the any content model. This value is set if the type is // of the following: // XMLContentSpec.CONTENTSPECNODE_ANY, // XMLContentSpec.CONTENTSPECNODE_ANY_OTHER. // // fPosition // Part of the algorithm to convert a regex directly to a DFA // numbers each leaf sequentially. If its -1, that means its an // epsilon node. Zero and greater are non-epsilon positions. // ----------------------------------------------------------------------- unsigned int fURI; unsigned int fPosition; // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- CMAny(const CMAny&); CMAny& operator=(const CMAny&); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/validators/common/DFAContentModel.hpp0000644000175000017500000002504211037724144023553 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DFAContentModel.hpp 677705 2008-07-17 20:15:32Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DFACONTENTMODEL_HPP) #define XERCESC_INCLUDE_GUARD_DFACONTENTMODEL_HPP #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN class ContentSpecNode; class CMLeaf; class CMRepeatingLeaf; class CMNode; class CMStateSet; // // DFAContentModel is the heavy weight derivative of ContentModel that does // all of the non-trivial element content validation. This guy does the full // bore regular expression to DFA conversion to create a DFA that it then // uses in its validation algorithm. // // NOTE: Upstream work insures that this guy will never see a content model // with PCDATA in it. Any model with PCDATA is 'mixed' and is handled // via the MixedContentModel class, since mixed models are very // constrained in form and easily handled via a special case. This // also makes our life much easier here. // class DFAContentModel : public XMLContentModel { public: // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- DFAContentModel ( const bool dtd , ContentSpecNode* const elemContentSpec , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); DFAContentModel ( const bool dtd , ContentSpecNode* const elemContentSpec , const bool isMixed , MemoryManager* const manager ); virtual ~DFAContentModel(); // ----------------------------------------------------------------------- // Implementation of the virtual content model interface // ----------------------------------------------------------------------- virtual bool validateContent ( QName** const children , XMLSize_t childCount , unsigned int emptyNamespaceId , XMLSize_t* indexFailingChild , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ) const; virtual bool validateContentSpecial ( QName** const children , XMLSize_t childCount , unsigned int emptyNamespaceId , GrammarResolver* const pGrammarResolver , XMLStringPool* const pStringPool , XMLSize_t* indexFailingChild , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ) const; virtual void checkUniqueParticleAttribution ( SchemaGrammar* const pGrammar , GrammarResolver* const pGrammarResolver , XMLStringPool* const pStringPool , XMLValidator* const pValidator , unsigned int* const pContentSpecOrgURI , const XMLCh* pComplexTypeName = 0 ) ; virtual ContentLeafNameTypeVector* getContentLeafNameTypeVector() const ; virtual unsigned int getNextState(unsigned int currentState, XMLSize_t elementIndex) const; virtual bool handleRepetitions( const QName* const curElem, unsigned int curState, unsigned int currentLoop, unsigned int& nextState, unsigned int& nextLoop, XMLSize_t elementIndex, SubstitutionGroupComparator * comparator) const; private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DFAContentModel(); DFAContentModel(const DFAContentModel&); DFAContentModel& operator=(const DFAContentModel&); // ----------------------------------------------------------------------- // Private helper methods // ----------------------------------------------------------------------- void buildDFA(ContentSpecNode* const curNode); CMNode* buildSyntaxTree(ContentSpecNode* const curNode, unsigned int& curIndex); unsigned int* makeDefStateList() const; unsigned int countLeafNodes(ContentSpecNode* const curNode); class Occurence : public XMemory { public: Occurence(int minOcc, int maxOcc, int eltIndex); int minOccurs; int maxOccurs; int elemIndex; }; // ----------------------------------------------------------------------- // Private data members // // fElemMap // fElemMapSize // This is the map of unique input symbol elements to indices into // each state's per-input symbol transition table entry. This is part // of the built DFA information that must be kept around to do the // actual validation. // // fElemMapType // This is a map of whether the element map contains information // related to ANY models. // // fEmptyOk // This is an optimization. While building the transition table we // can see whether this content model would approve of an empty // content (which could happen if everything was optional.) So we // set this flag and short circuit that check, which would otherwise // be ugly and time consuming if we tried to determine it at each // validation call. // // fEOCPos // The NFA position of the special EOC (end of content) node. This // is saved away since its used during the DFA build. // // fFinalStateFlags // This is an array of booleans, one per state (there are // fTransTableSize states in the DFA) that indicates whether that // state is a final state. // // fFollowList // The list of follow positions for each NFA position (i.e. for each // non-epsilon leaf node.) This is only used during the building of // the DFA, and is let go afterwards. // // fHeadNode // This is the head node of our intermediate representation. It is // only non-null during the building of the DFA (just so that it // does not have to be passed all around.) Once the DFA is built, // this is no longer required so its deleted. // // fLeafCount // The count of leaf nodes. This is an important number that set some // limits on the sizes of data structures in the DFA process. // // fLeafList // An array of non-epsilon leaf nodes, which is used during the DFA // build operation, then dropped. These are just references to nodes // pointed to by fHeadNode, so we don't have to clean them up, just // the actually leaf list array itself needs cleanup. // // fLeafListType // Array mapping ANY types to the leaf list. // // fTransTable // fTransTableSize // This is the transition table that is the main by product of all // of the effort here. It is an array of arrays of ints. The first // dimension is the number of states we end up with in the DFA. The // second dimensions is the number of unique elements in the content // model (fElemMapSize). Each entry in the second dimension indicates // the new state given that input for the first dimension's start // state. // // The fElemMap array handles mapping from element indexes to // positions in the second dimension of the transition table. // // fTransTableSize is the number of valid entries in the transition // table, and in the other related tables such as fFinalStateFlags. // // fCountingStates // This is the table holding the minOccurs/maxOccurs for elements // that can be repeated a finite number of times. // // fDTD // Boolean to allow DTDs to validate even with namespace support. // // fIsMixed // DFA ContentModel with mixed PCDATA. // ----------------------------------------------------------------------- QName** fElemMap; ContentSpecNode::NodeTypes* fElemMapType; unsigned int fElemMapSize; bool fEmptyOk; unsigned int fEOCPos; bool* fFinalStateFlags; CMStateSet** fFollowList; CMNode* fHeadNode; unsigned int fLeafCount; CMLeaf** fLeafList; ContentSpecNode::NodeTypes* fLeafListType; unsigned int** fTransTable; unsigned int fTransTableSize; Occurence** fCountingStates; bool fDTD; bool fIsMixed; ContentLeafNameTypeVector * fLeafNameTypeVector; MemoryManager* fMemoryManager; }; inline unsigned int DFAContentModel::getNextState(unsigned int currentState, XMLSize_t elementIndex) const { if (currentState == XMLContentModel::gInvalidTrans) { return XMLContentModel::gInvalidTrans; } if (currentState >= fTransTableSize || elementIndex >= fElemMapSize) { ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::Array_BadIndex, fMemoryManager); } return fTransTable[currentState][elementIndex]; } inline DFAContentModel::Occurence::Occurence(int minOcc, int maxOcc, int eltIndex) { minOccurs = minOcc; maxOccurs = maxOcc; elemIndex = eltIndex; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/validators/common/AllContentModel.hpp0000644000175000017500000001474011325541216023671 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: AllContentModel.hpp 901107 2010-01-20 08:45:02Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_ALLCONTENTMODEL_HPP) #define XERCESC_INCLUDE_GUARD_ALLCONTENTMODEL_HPP #include #include #include XERCES_CPP_NAMESPACE_BEGIN class ContentSpecNode; // // AllContentModel is a derivative of the abstract content model base // class that handles the special case of feature in schema. If a model // is , all non-optional children must appear // // So, all we have to do is to keep an array of the possible children and // validate by just looking up each child being validated by looking it up // in the list, and make sure all non-optional children appear. // class AllContentModel : public XMLContentModel { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- AllContentModel ( ContentSpecNode* const parentContentSpec , const bool isMixed , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); ~AllContentModel(); // ----------------------------------------------------------------------- // Implementation of the ContentModel virtual interface // ----------------------------------------------------------------------- virtual bool validateContent ( QName** const children , XMLSize_t childCount , unsigned int emptyNamespaceId , XMLSize_t* indexFailingChild , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ) const; virtual bool validateContentSpecial ( QName** const children , XMLSize_t childCount , unsigned int emptyNamespaceId , GrammarResolver* const pGrammarResolver , XMLStringPool* const pStringPool , XMLSize_t* indexFailingChild , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ) const; virtual ContentLeafNameTypeVector* getContentLeafNameTypeVector() const ; virtual unsigned int getNextState(unsigned int currentState, XMLSize_t elementIndex) const; virtual bool handleRepetitions( const QName* const curElem, unsigned int curState, unsigned int currentLoop, unsigned int& nextState, unsigned int& nextLoop, XMLSize_t elementIndex, SubstitutionGroupComparator * comparator) const; virtual void checkUniqueParticleAttribution ( SchemaGrammar* const pGrammar , GrammarResolver* const pGrammarResolver , XMLStringPool* const pStringPool , XMLValidator* const pValidator , unsigned int* const pContentSpecOrgURI , const XMLCh* pComplexTypeName = 0 ) ; private : // ----------------------------------------------------------------------- // Private helper methods // ----------------------------------------------------------------------- void buildChildList ( ContentSpecNode* const curNode , ValueVectorOf& toFill , ValueVectorOf& toType ); // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- AllContentModel(); AllContentModel(const AllContentModel&); AllContentModel& operator=(const AllContentModel&); // ----------------------------------------------------------------------- // Private data members // // fCount // The count of possible children in the fChildren member. // // fChildren // The list of possible children that we have to accept. This array // is allocated as large as needed in the constructor. // // fChildOptional // The corresponding list of optional state of each child in fChildren // True if the child is optional (i.e. minOccurs = 0). // // fNumRequired // The number of required children in (i.e. minOccurs = 1) // // fIsMixed // AllContentModel with mixed PCDATA. // ----------------------------------------------------------------------- MemoryManager* fMemoryManager; XMLSize_t fCount; QName** fChildren; bool* fChildOptional; unsigned int fNumRequired; bool fIsMixed; bool fHasOptionalContent; }; inline ContentLeafNameTypeVector* AllContentModel::getContentLeafNameTypeVector() const { return 0; } inline unsigned int AllContentModel::getNextState(unsigned int, XMLSize_t) const { return XMLContentModel::gInvalidTrans; } inline bool AllContentModel::handleRepetitions( const QName* const /*curElem*/, unsigned int /*curState*/, unsigned int /*currentLoop*/, unsigned int& /*nextState*/, unsigned int& /*nextLoop*/, XMLSize_t /*elementIndex*/, SubstitutionGroupComparator * /*comparator*/) const { return true; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/validators/common/CMAny.cpp0000644000175000017500000000732511037446664021623 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: CMAny.cpp 677396 2008-07-16 19:36:20Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // CMUnaryOp: Constructors and Destructor // --------------------------------------------------------------------------- CMAny::CMAny( ContentSpecNode::NodeTypes type , unsigned int URI , unsigned int position , unsigned int maxStates , MemoryManager* const manager) : CMNode(type, maxStates, manager) , fURI(URI) , fPosition(position) { if ((type & 0x0f) != ContentSpecNode::Any && (type & 0x0f) != ContentSpecNode::Any_Other && (type & 0x0f) != ContentSpecNode::Any_NS) { ThrowXMLwithMemMgr1(RuntimeException, XMLExcepts::CM_NotValidSpecTypeForNode, "CMAny", manager); } // Leaf nodes are never nullable unless its an epsilon node fIsNullable=(fPosition == epsilonNode); } CMAny::~CMAny() { } // --------------------------------------------------------------------------- // Getter methods // --------------------------------------------------------------------------- unsigned int CMAny::getURI() const { return fURI; } unsigned int CMAny::getPosition() const { return fPosition; } // --------------------------------------------------------------------------- // Setter methods // --------------------------------------------------------------------------- void CMAny::setPosition(const unsigned int newPosition) { fPosition = newPosition; } // --------------------------------------------------------------------------- // Implementation of public CMNode virtual interface // --------------------------------------------------------------------------- void CMAny::orphanChild() { } // --------------------------------------------------------------------------- // Implementation of protected CMNode virtual interface // --------------------------------------------------------------------------- void CMAny::calcFirstPos(CMStateSet& toSet) const { // If we are an epsilon node, then the first pos is an empty set if (isNullable()) toSet.zeroBits(); else // Otherwise, its just the one bit of our position toSet.setBit(fPosition); } void CMAny::calcLastPos(CMStateSet& toSet) const { // If we are an epsilon node, then the last pos is an empty set if (isNullable()) toSet.zeroBits(); // Otherwise, its just the one bit of our position else toSet.setBit(fPosition); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/validators/common/SimpleContentModel.cpp0000644000175000017500000004537011234261243024406 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SimpleContentModel.cpp 799211 2009-07-30 09:06:43Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // SimpleContentModel: Implementation of the ContentModel virtual interface // --------------------------------------------------------------------------- // // This method is called to validate our content. For this one, its just a // pretty simple 'bull your way through it' test according to what kind of // operation it is for. // bool SimpleContentModel::validateContent(QName** const children , XMLSize_t childCount , unsigned int , XMLSize_t* indexFailingChild , MemoryManager* const) const { // // According to the type of operation, we do the correct type of // content check. // XMLSize_t index; switch(fOp & 0x0f) { case ContentSpecNode::Leaf : // // There can only be one child and it has to be of the // element type we stored. // if (!childCount) { *indexFailingChild=0; return false; } // If the 0th child is not the right kind, report an error at 0 if (fDTD) { if (!XMLString::equals(children[0]->getRawName(), fFirstChild->getRawName())) { *indexFailingChild=0; return false; } } else { if ((children[0]->getURI() != fFirstChild->getURI()) || !XMLString::equals(children[0]->getLocalPart(), fFirstChild->getLocalPart())) { *indexFailingChild=0; return false; } } if (childCount > 1) { *indexFailingChild=1; return false; } break; case ContentSpecNode::ZeroOrOne : // // If the child count is greater than one, then obviously // bad. Otherwise, if its one, then the one child must be // of the type we stored. // if (childCount == 1) { if (fDTD) { if (!XMLString::equals(children[0]->getRawName(), fFirstChild->getRawName())) { *indexFailingChild=0; return false; } } else { if ((children[0]->getURI() != fFirstChild->getURI()) || (!XMLString::equals(children[0]->getLocalPart(), fFirstChild->getLocalPart()))) { *indexFailingChild=0; return false; } } } if (childCount > 1) { *indexFailingChild=1; return false; } break; case ContentSpecNode::ZeroOrMore : // // If the child count is zero, that's fine. If its more than // zero, then make sure that all children are of the element // type that we stored. // if (childCount > 0) { if (fDTD) { for (index = 0; index < childCount; index++) { if (!XMLString::equals(children[index]->getRawName(), fFirstChild->getRawName())) { *indexFailingChild=index; return false; } } } else { for (index = 0; index < childCount; index++) { if ((children[index]->getURI() != fFirstChild->getURI()) || !XMLString::equals(children[index]->getLocalPart(), fFirstChild->getLocalPart())) { *indexFailingChild=index; return false; } } } } break; case ContentSpecNode::OneOrMore : // // If the child count is zero, that's an error. If its more // than zero, then make sure that all children are of the // element type that we stored. // if (childCount == 0) { *indexFailingChild=0; return false; } if (fDTD) { for (index = 0; index < childCount; index++) { if (!XMLString::equals(children[index]->getRawName(), fFirstChild->getRawName())) { *indexFailingChild=index; return false; } } } else { for (index = 0; index < childCount; index++) { if ((children[index]->getURI() != fFirstChild->getURI()) || !XMLString::equals(children[index]->getLocalPart(), fFirstChild->getLocalPart())) { *indexFailingChild=index; return false; } } } break; case ContentSpecNode::Choice : // // There can only be one child, and it must be one of the // two types we stored. // if (!childCount) { *indexFailingChild=0; return false; } if (fDTD) { if (!XMLString::equals(children[0]->getRawName(), fFirstChild->getRawName()) && !XMLString::equals(children[0]->getRawName(), fSecondChild->getRawName())) { *indexFailingChild=0; return false; } } else { if (((children[0]->getURI() != fFirstChild->getURI()) || !XMLString::equals(children[0]->getLocalPart(), fFirstChild->getLocalPart())) && ((children[0]->getURI() != fSecondChild->getURI()) || !XMLString::equals(children[0]->getLocalPart(), fSecondChild->getLocalPart()))) { *indexFailingChild=0; return false; } } if (childCount > 1) { *indexFailingChild=1; return false; } break; case ContentSpecNode::Sequence : // // There must be two children and they must be the two values // we stored, in the stored order. So first check the obvious // problem of an empty content, which would never be valid // in this content mode. // if (!childCount) { *indexFailingChild=0; return false; } // test first child if (fDTD) { if (!XMLString::equals(children[0]->getRawName(), fFirstChild->getRawName())) { *indexFailingChild=0; return false; } } else { if ((children[0]->getURI() != fFirstChild->getURI()) || !XMLString::equals(children[0]->getLocalPart(), fFirstChild->getLocalPart())) { *indexFailingChild=0; return false; } } // test second child, if present if( childCount == 1) { // missing second child *indexFailingChild=1; return false; } else { if (fDTD) { if (!XMLString::equals(children[1]->getRawName(), fSecondChild->getRawName())) { *indexFailingChild=1; return false; } } else { if ((children[1]->getURI() != fSecondChild->getURI()) || !XMLString::equals(children[1]->getLocalPart(), fSecondChild->getLocalPart())) { *indexFailingChild=1; return false; } } if (childCount > 2) { *indexFailingChild=2; return false; } } break; default : ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::CM_UnknownCMSpecType, fMemoryManager); break; } return true; } bool SimpleContentModel::validateContentSpecial(QName** const children , XMLSize_t childCount , unsigned int , GrammarResolver* const pGrammarResolver , XMLStringPool* const pStringPool , XMLSize_t* indexFailingChild , MemoryManager* const) const { SubstitutionGroupComparator comparator(pGrammarResolver, pStringPool); // // According to the type of operation, we do the correct type of // content check. // unsigned int index; switch(fOp & 0x0f) { case ContentSpecNode::Leaf : // // There can only be one child and it has to be of the // element type we stored. // if (!childCount) { *indexFailingChild=0; return false; } if ((children[0]->getURI() != fFirstChild->getURI()) || !XMLString::equals(children[0]->getLocalPart(), fFirstChild->getLocalPart())) { if (!comparator.isEquivalentTo(children[0], fFirstChild)) { *indexFailingChild=0; return false; } } if (childCount > 1) { *indexFailingChild=1; return false; } break; case ContentSpecNode::ZeroOrOne : // // If the child count is greater than one, then obviously // bad. Otherwise, if its one, then the one child must be // of the type we stored. // if ((childCount == 1) && ((children[0]->getURI() != fFirstChild->getURI()) || !XMLString::equals(children[0]->getLocalPart(), fFirstChild->getLocalPart()))) { if(!comparator.isEquivalentTo(children[0], fFirstChild)) { *indexFailingChild=0; return false; } } if (childCount > 1) { *indexFailingChild=1; return false; } break; case ContentSpecNode::ZeroOrMore : // // If the child count is zero, that's fine. If its more than // zero, then make sure that all children are of the element // type that we stored. // if (childCount > 0) { for (index = 0; index < childCount; index++) { if ((children[index]->getURI() != fFirstChild->getURI()) || !XMLString::equals(children[index]->getLocalPart(), fFirstChild->getLocalPart())) { if (!comparator.isEquivalentTo(children[index], fFirstChild)) { *indexFailingChild=index; return false; } } } } break; case ContentSpecNode::OneOrMore : // // If the child count is zero, that's an error. If its more // than zero, then make sure that all children are of the // element type that we stored. // if (childCount == 0) { *indexFailingChild=0; return false; } for (index = 0; index < childCount; index++) { if ((children[index]->getURI() != fFirstChild->getURI()) || !XMLString::equals(children[index]->getLocalPart(), fFirstChild->getLocalPart())) { if (!comparator.isEquivalentTo(children[index], fFirstChild)) { *indexFailingChild=index; return false; } } } break; case ContentSpecNode::Choice : // // There can only be one child, and it must be one of the // two types we stored. // if (!childCount) { *indexFailingChild=0; return false; } if (((children[0]->getURI() != fFirstChild->getURI()) || !XMLString::equals(children[0]->getLocalPart(), fFirstChild->getLocalPart())) && ((children[0]->getURI() != fSecondChild->getURI()) || !XMLString::equals(children[0]->getLocalPart(), fSecondChild->getLocalPart()))) { if (!comparator.isEquivalentTo(children[0], fFirstChild) && !comparator.isEquivalentTo(children[0], fSecondChild) ) { *indexFailingChild=0; return false; } } if (childCount > 1) { *indexFailingChild=1; return false; } break; case ContentSpecNode::Sequence : // // There must be two children and they must be the two values // we stored, in the stored order. So first check the obvious // problem of an empty content, which would never be valid // in this content mode. // if (!childCount) { *indexFailingChild=0; return false; } // test first child if ((children[0]->getURI() != fFirstChild->getURI()) || !XMLString::equals(children[0]->getLocalPart(), fFirstChild->getLocalPart())) { if(!comparator.isEquivalentTo(children[0], fFirstChild)) { *indexFailingChild=0; return false; } } // test second child, if present if( childCount == 1) { // missing second child *indexFailingChild=1; return false; } else { if ((children[1]->getURI() != fSecondChild->getURI()) || !XMLString::equals(children[1]->getLocalPart(), fSecondChild->getLocalPart())) { if (!comparator.isEquivalentTo(children[1], fSecondChild)) { *indexFailingChild=1; return false; } } if (childCount > 2) { *indexFailingChild=2; return false; } } break; default : ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::CM_UnknownCMSpecType, fMemoryManager); break; } return true; } ContentLeafNameTypeVector* SimpleContentModel::getContentLeafNameTypeVector() const { return 0; } void SimpleContentModel::checkUniqueParticleAttribution ( SchemaGrammar* const pGrammar , GrammarResolver* const pGrammarResolver , XMLStringPool* const pStringPool , XMLValidator* const pValidator , unsigned int* const pContentSpecOrgURI , const XMLCh* pComplexTypeName /*= 0*/ ) { // rename back unsigned int orgURIIndex = 0; orgURIIndex = fFirstChild->getURI(); if ((orgURIIndex != XMLContentModel::gEOCFakeId) && (orgURIIndex != XMLElementDecl::fgInvalidElemId) && (orgURIIndex != XMLElementDecl::fgPCDataElemId)) fFirstChild->setURI(pContentSpecOrgURI[orgURIIndex]); orgURIIndex = fSecondChild->getURI(); if ((orgURIIndex != XMLContentModel::gEOCFakeId) && (orgURIIndex != XMLElementDecl::fgInvalidElemId) && (orgURIIndex != XMLElementDecl::fgPCDataElemId)) fSecondChild->setURI(pContentSpecOrgURI[orgURIIndex]); // only possible violation is when it's a choice if ((fOp & 0x0f) == ContentSpecNode::Choice) { SubstitutionGroupComparator comparator(pGrammarResolver, pStringPool); if (XercesElementWildcard::conflict(pGrammar, ContentSpecNode::Leaf, fFirstChild, ContentSpecNode::Leaf, fSecondChild, &comparator)) pValidator->emitError(XMLValid::UniqueParticleAttributionFail, pComplexTypeName, fFirstChild->getRawName(), fSecondChild->getRawName()); } } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/validators/common/SimpleContentModel.hpp0000644000175000017500000001723311325541216024412 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SimpleContentModel.hpp 901107 2010-01-20 08:45:02Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_SIMPLECONTENTMODEL_HPP) #define XERCESC_INCLUDE_GUARD_SIMPLECONTENTMODEL_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN // // SimpleContentModel is a derivative of the abstract content model base // class that handles a small set of simple content models that are just // way overkill to give the DFA treatment. // // DESCRIPTION: // // This guy handles the following scenarios: // // a // a? // a* // a+ // a,b // a|b // // These all involve a unary operation with one element type, or a binary // operation with two elements. These are very simple and can be checked // in a simple way without a DFA and without the overhead of setting up a // DFA for such a simple check. // // NOTE: Pass the XMLElementDecl::fgPCDataElemId value to represent a // PCData node. Pass XMLElementDecl::fgInvalidElemId for unused element // class SimpleContentModel : public XMLContentModel { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- SimpleContentModel ( const bool dtd , QName* const firstChild , QName* const secondChild , const ContentSpecNode::NodeTypes cmOp , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); ~SimpleContentModel(); // ----------------------------------------------------------------------- // Implementation of the ContentModel virtual interface // ----------------------------------------------------------------------- virtual bool validateContent ( QName** const children , XMLSize_t childCount , unsigned int emptyNamespaceId , XMLSize_t* indexFailingChild , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ) const; virtual bool validateContentSpecial ( QName** const children , XMLSize_t childCount , unsigned int emptyNamespaceId , GrammarResolver* const pGrammarResolver , XMLStringPool* const pStringPool , XMLSize_t* indexFailingChild , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ) const; virtual ContentLeafNameTypeVector *getContentLeafNameTypeVector() const; virtual unsigned int getNextState(unsigned int currentState, XMLSize_t elementIndex) const; virtual bool handleRepetitions( const QName* const curElem, unsigned int curState, unsigned int currentLoop, unsigned int& nextState, unsigned int& nextLoop, XMLSize_t elementIndex, SubstitutionGroupComparator * comparator) const; virtual void checkUniqueParticleAttribution ( SchemaGrammar* const pGrammar , GrammarResolver* const pGrammarResolver , XMLStringPool* const pStringPool , XMLValidator* const pValidator , unsigned int* const pContentSpecOrgURI , const XMLCh* pComplexTypeName = 0 ) ; private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- SimpleContentModel(); SimpleContentModel(const SimpleContentModel&); SimpleContentModel& operator=(const SimpleContentModel&); // ----------------------------------------------------------------------- // Private data members // // fFirstChild // fSecondChild // The first (and optional second) child node. The // operation code tells us whether the second child is used or not. // // fOp // The operation that this object represents. Since this class only // does simple contents, there is only ever a single operation // involved (i.e. the children of the operation are always one or // two leafs.) // // fDTD // Boolean to allow DTDs to validate even with namespace support. */ // // ----------------------------------------------------------------------- QName* fFirstChild; QName* fSecondChild; ContentSpecNode::NodeTypes fOp; bool fDTD; MemoryManager* const fMemoryManager; }; // --------------------------------------------------------------------------- // SimpleContentModel: Constructors and Destructor // --------------------------------------------------------------------------- inline SimpleContentModel::SimpleContentModel ( const bool dtd , QName* const firstChild , QName* const secondChild , const ContentSpecNode::NodeTypes cmOp , MemoryManager* const manager ) : fFirstChild(0) , fSecondChild(0) , fOp(cmOp) , fDTD(dtd) , fMemoryManager(manager) { if (firstChild) fFirstChild = new (manager) QName(*firstChild); else fFirstChild = new (manager) QName(XMLUni::fgZeroLenString, XMLUni::fgZeroLenString, XMLElementDecl::fgInvalidElemId, manager); if (secondChild) fSecondChild = new (manager) QName(*secondChild); else fSecondChild = new (manager) QName(XMLUni::fgZeroLenString, XMLUni::fgZeroLenString, XMLElementDecl::fgInvalidElemId, manager); } inline SimpleContentModel::~SimpleContentModel() { delete fFirstChild; delete fSecondChild; } // --------------------------------------------------------------------------- // SimpleContentModel: Virtual methods // --------------------------------------------------------------------------- inline unsigned int SimpleContentModel::getNextState(unsigned int, XMLSize_t) const { return XMLContentModel::gInvalidTrans; } inline bool SimpleContentModel::handleRepetitions( const QName* const /*curElem*/, unsigned int /*curState*/, unsigned int /*currentLoop*/, unsigned int& /*nextState*/, unsigned int& /*nextLoop*/, XMLSize_t /*elementIndex*/, SubstitutionGroupComparator * /*comparator*/) const { return true; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/validators/common/Grammar.cpp0000644000175000017500000000425010523643534022226 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: Grammar.cpp 471747 2006-11-06 14:31:56Z amassari $ */ #include //since we need to dynamically created each and every derivatives //during deserialization by XSerializeEngine>>Derivative, we got //to include all hpp #include #include #include XERCES_CPP_NAMESPACE_BEGIN /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_NOCREATE(Grammar) void Grammar::serialize(XSerializeEngine&) { //no data } void Grammar::storeGrammar(XSerializeEngine& serEng , Grammar* const grammar) { if (grammar) { serEng<<(int) grammar->getGrammarType(); serEng<>type; switch((GrammarType)type) { case DTDGrammarType: DTDGrammar* dtdGrammar; serEng>>dtdGrammar; return dtdGrammar; case SchemaGrammarType: SchemaGrammar* schemaGrammar; serEng>>schemaGrammar; return schemaGrammar; case UnKnown: return 0; default: //we treat this same as UnKnown return 0; } } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/validators/common/AllContentModel.cpp0000644000175000017500000003403611037122704023661 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: AllContentModel.cpp 676911 2008-07-15 13:27:32Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // AllContentModel: Constructors and Destructor // --------------------------------------------------------------------------- AllContentModel::AllContentModel( ContentSpecNode* const parentContentSpec , const bool isMixed , MemoryManager* const manager) : fMemoryManager(manager) , fCount(0) , fChildren(0) , fChildOptional(0) , fNumRequired(0) , fIsMixed(isMixed) , fHasOptionalContent(false) { // // Create a vector of unsigned ints that will be filled in with the // ids of the child nodes. It will be expanded as needed but we give // it an initial capacity of 64 which should be more than enough for // 99% of the scenarios. // ValueVectorOf children(64, fMemoryManager); ValueVectorOf childOptional(64, fMemoryManager); // // Get the parent element's content spec. This is the head of the tree // of nodes that describes the content model. We will iterate this // tree. // ContentSpecNode* curNode = parentContentSpec; if (!curNode) ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::CM_NoParentCSN, fMemoryManager); // And now call the private recursive method that iterates the tree if (curNode->getType() == ContentSpecNode::All && curNode->getMinOccurs() == 0) { fHasOptionalContent = true; } buildChildList(curNode, children, childOptional); // // And now we know how many elements we need in our member list. So // fill them in. // fCount = children.size(); fChildren = (QName**) fMemoryManager->allocate(fCount * sizeof(QName*)); //new QName*[fCount]; fChildOptional = (bool*) fMemoryManager->allocate(fCount * sizeof(bool)); //new bool[fCount]; for (unsigned int index = 0; index < fCount; index++) { fChildren[index] = new (fMemoryManager) QName(*(children.elementAt(index))); fChildOptional[index] = childOptional.elementAt(index); } } AllContentModel::~AllContentModel() { for (XMLSize_t index = 0; index < fCount; index++) delete fChildren[index]; fMemoryManager->deallocate(fChildren); //delete [] fChildren; fMemoryManager->deallocate(fChildOptional); //delete [] fChildOptional; } // --------------------------------------------------------------------------- // AllContentModel: Implementation of the ContentModel virtual interface // --------------------------------------------------------------------------- // //Under the XML Schema mixed model, //the order and number of child elements appearing in an instance //must agree with //the order and number of child elements specified in the model. // bool AllContentModel::validateContent( QName** const children , XMLSize_t childCount , unsigned int , XMLSize_t* indexFailingChild , MemoryManager* const manager) const { // If had minOccurs of zero and there are // no children to validate, trivially validate if (childCount == 0 && (fHasOptionalContent || !fNumRequired)) return true; // keep track of the required element seen XMLSize_t numRequiredSeen = 0; if(childCount > 0) { // Check for duplicate element bool* elementSeen = (bool*) manager->allocate(fCount*sizeof(bool)); //new bool[fCount]; const ArrayJanitor jan(elementSeen, manager); // initialize the array for (XMLSize_t i = 0; i < fCount; i++) elementSeen[i] = false; for (XMLSize_t outIndex = 0; outIndex < childCount; outIndex++) { // Get the current child out of the source index const QName* curChild = children[outIndex]; // If it's PCDATA, then we just accept that if (fIsMixed && curChild->getURI() == XMLElementDecl::fgPCDataElemId) continue; // And try to find it in our list XMLSize_t inIndex = 0; for (; inIndex < fCount; inIndex++) { const QName* inChild = fChildren[inIndex]; if ((inChild->getURI() == curChild->getURI()) && (XMLString::equals(inChild->getLocalPart(), curChild->getLocalPart()))) { // found it // If this element was seen already, indicate an error was // found at the duplicate index. if (elementSeen[inIndex]) { *indexFailingChild=outIndex; return false; } else elementSeen[inIndex] = true; if (!fChildOptional[inIndex]) numRequiredSeen++; break; } } // We did not find this one, so the validation failed if (inIndex == fCount) { *indexFailingChild=outIndex; return false; } } } // Were all the required elements of the encountered? if (numRequiredSeen != fNumRequired) { *indexFailingChild=childCount; return false; } // Everything seems to be ok, so return success return true; } bool AllContentModel::validateContentSpecial(QName** const children , XMLSize_t childCount , unsigned int , GrammarResolver* const pGrammarResolver , XMLStringPool* const pStringPool , XMLSize_t* indexFailingChild , MemoryManager* const manager) const { // If had minOccurs of zero and there are // no children to validate, trivially validate if (childCount == 0 && (fHasOptionalContent || !fNumRequired)) return true; // keep track of the required element seen XMLSize_t numRequiredSeen = 0; if(childCount > 0) { SubstitutionGroupComparator comparator(pGrammarResolver, pStringPool); // Check for duplicate element bool* elementSeen = (bool*) manager->allocate(fCount*sizeof(bool)); //new bool[fCount]; const ArrayJanitor jan(elementSeen, manager); // initialize the array for (XMLSize_t i = 0; i < fCount; i++) elementSeen[i] = false; for (XMLSize_t outIndex = 0; outIndex < childCount; outIndex++) { // Get the current child out of the source index QName* const curChild = children[outIndex]; // If it's PCDATA, then we just accept that if (fIsMixed && curChild->getURI() == XMLElementDecl::fgPCDataElemId) continue; // And try to find it in our list XMLSize_t inIndex = 0; for (; inIndex < fCount; inIndex++) { QName* const inChild = fChildren[inIndex]; if ( comparator.isEquivalentTo(curChild, inChild)) { // match // If this element was seen already, indicate an error was // found at the duplicate index. if (elementSeen[inIndex]) { *indexFailingChild=outIndex; return false; } else elementSeen[inIndex] = true; if (!fChildOptional[inIndex]) numRequiredSeen++; break; } } // We did not find this one, so the validation failed if (inIndex == fCount) { *indexFailingChild=outIndex; return false; } } } // Were all the required elements of the encountered? if (numRequiredSeen != fNumRequired) { *indexFailingChild=childCount; return false; } // Everything seems to be ok, so return success return true; } void AllContentModel::checkUniqueParticleAttribution ( SchemaGrammar* const pGrammar , GrammarResolver* const pGrammarResolver , XMLStringPool* const pStringPool , XMLValidator* const pValidator , unsigned int* const pContentSpecOrgURI , const XMLCh* pComplexTypeName /*= 0*/ ) { SubstitutionGroupComparator comparator(pGrammarResolver, pStringPool); XMLSize_t i, j; // rename back for (i = 0; i < fCount; i++) { unsigned int orgURIIndex = fChildren[i]->getURI(); fChildren[i]->setURI(pContentSpecOrgURI[orgURIIndex]); } // check whether there is conflict between any two leaves for (i = 0; i < fCount; i++) { for (j = i+1; j < fCount; j++) { // If this is text in a Schema mixed content model, skip it. if ( fIsMixed && (( fChildren[i]->getURI() == XMLElementDecl::fgPCDataElemId) || ( fChildren[j]->getURI() == XMLElementDecl::fgPCDataElemId))) continue; if (XercesElementWildcard::conflict(pGrammar, ContentSpecNode::Leaf, fChildren[i], ContentSpecNode::Leaf, fChildren[j], &comparator)) { pValidator->emitError(XMLValid::UniqueParticleAttributionFail, pComplexTypeName, fChildren[i]->getRawName(), fChildren[j]->getRawName()); } } } } // --------------------------------------------------------------------------- // AllContentModel: Private helper methods // --------------------------------------------------------------------------- void AllContentModel::buildChildList(ContentSpecNode* const curNode , ValueVectorOf& toFill , ValueVectorOf& toOptional) { // Get the type of spec node our current node is const ContentSpecNode::NodeTypes curType = curNode->getType(); if (curType == ContentSpecNode::All) { // Get both the child node pointers ContentSpecNode* leftNode = curNode->getFirst(); ContentSpecNode* rightNode = curNode->getSecond(); // Recurse on the left and right nodes buildChildList(leftNode, toFill, toOptional); if(rightNode) buildChildList(rightNode, toFill, toOptional); } else if (curType == ContentSpecNode::Leaf) { // At leaf, add the element to list of elements permitted in the all toFill.addElement(curNode->getElement()); toOptional.addElement(false); fNumRequired++; } else if (curType == ContentSpecNode::ZeroOrOne) { // At ZERO_OR_ONE node, subtree must be an element // that was specified with minOccurs=0, maxOccurs=1 ContentSpecNode* leftNode = curNode->getFirst(); if (leftNode->getType() != ContentSpecNode::Leaf) ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::CM_UnknownCMSpecType, fMemoryManager); toFill.addElement(leftNode->getElement()); toOptional.addElement(true); } // only allow ZeroOrMore when it's the father of a Loop else if (curType == ContentSpecNode::ZeroOrMore && curNode->getFirst()!=0 && curNode->getFirst()->getType()==ContentSpecNode::Loop) { ContentSpecNode* leftNode = curNode->getFirst(); buildChildList(leftNode, toFill, toOptional); } else if (curType == ContentSpecNode::Loop) { // At leaf, add the element to list of elements permitted in the all int i; for(i=0;igetMinOccurs();i++) { toFill.addElement(curNode->getElement()); toOptional.addElement(false); fNumRequired++; } if(curNode->getMaxOccurs()!=-1) for(i=0;i<(curNode->getMaxOccurs() - curNode->getMinOccurs());i++) { toFill.addElement(curNode->getElement()); toOptional.addElement(true); } } else ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::CM_UnknownCMSpecType, fMemoryManager); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/validators/datatype/0000755000175000017500000000000011363617243020457 5ustar borisborisxerces-c-3.1.1/src/xercesc/validators/datatype/IDREFDatatypeValidator.hpp0000644000175000017500000001032510606722647025370 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: IDREFDatatypeValidator.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_IDREF_DATATYPEVALIDATOR_HPP) #define XERCESC_INCLUDE_GUARD_IDREF_DATATYPEVALIDATOR_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN class VALIDATORS_EXPORT IDREFDatatypeValidator : public StringDatatypeValidator { public: // ----------------------------------------------------------------------- // Public ctor/dtor // ----------------------------------------------------------------------- /** @name Constructors and Destructor */ //@{ IDREFDatatypeValidator ( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); IDREFDatatypeValidator ( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual ~IDREFDatatypeValidator(); //@} // ----------------------------------------------------------------------- // Validation methods // ----------------------------------------------------------------------- /** @name Validation Function */ //@{ /** * validate that a string matches the boolean datatype * @param content A string containing the content to be validated * * @exception throws InvalidDatatypeException if the content is * is not valid. */ virtual void validate ( const XMLCh* const content , ValidationContext* const context = 0 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); //@} /** * Returns an instance of the base datatype validator class * Used by the DatatypeValidatorFactory. */ virtual DatatypeValidator* newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(IDREFDatatypeValidator) protected: // // ctor provided to be used by derived classes // IDREFDatatypeValidator ( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , const int finalSet , const ValidatorType type , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual void checkValueSpace(const XMLCh* const content , MemoryManager* const manager); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- IDREFDatatypeValidator(const IDREFDatatypeValidator&); IDREFDatatypeValidator& operator=(const IDREFDatatypeValidator&); // ----------------------------------------------------------------------- // Private data members // // // ----------------------------------------------------------------------- }; XERCES_CPP_NAMESPACE_END #endif /** * End of file IDREFDatatypeValidator.hpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/Base64BinaryDatatypeValidator.hpp0000644000175000017500000000637411063753570026736 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: Base64BinaryDatatypeValidator.hpp 695949 2008-09-16 15:57:44Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_BASE64BINARY_DATATYPEVALIDATOR_HPP) #define XERCESC_INCLUDE_GUARD_BASE64BINARY_DATATYPEVALIDATOR_HPP #include XERCES_CPP_NAMESPACE_BEGIN class VALIDATORS_EXPORT Base64BinaryDatatypeValidator : public AbstractStringValidator { public: // ----------------------------------------------------------------------- // Public ctor/dtor // ----------------------------------------------------------------------- /** @name Constructors and Destructor */ //@{ Base64BinaryDatatypeValidator ( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); Base64BinaryDatatypeValidator ( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual ~Base64BinaryDatatypeValidator(); //@} /** * Returns an instance of the base datatype validator class * Used by the DatatypeValidatorFactory. */ virtual DatatypeValidator* newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(Base64BinaryDatatypeValidator) protected: virtual void checkValueSpace(const XMLCh* const content , MemoryManager* const manager); virtual XMLSize_t getLength(const XMLCh* const content , MemoryManager* const manager) const; virtual void normalizeEnumeration(MemoryManager* const manager); virtual void normalizeContent(XMLCh* const, MemoryManager* const manager) const; private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- Base64BinaryDatatypeValidator(const Base64BinaryDatatypeValidator&); Base64BinaryDatatypeValidator& operator=(const Base64BinaryDatatypeValidator&); }; XERCES_CPP_NAMESPACE_END #endif /** * End of file Base64BinaryDatatypeValidator.hpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/DateTimeDatatypeValidator.cpp0000644000175000017500000001032010523643534026214 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DateTimeDatatypeValidator.cpp 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Constructors and Destructor // --------------------------------------------------------------------------- DateTimeDatatypeValidator::DateTimeDatatypeValidator(MemoryManager* const manager) :DateTimeValidator(0, 0, 0, DatatypeValidator::DateTime, manager) { setOrdered(XSSimpleTypeDefinition::ORDERED_PARTIAL); } DateTimeDatatypeValidator::DateTimeDatatypeValidator( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager) :DateTimeValidator(baseValidator, facets, finalSet, DatatypeValidator::DateTime, manager) { init(enums, manager); } DateTimeDatatypeValidator::~DateTimeDatatypeValidator() {} DatatypeValidator* DateTimeDatatypeValidator::newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager ) { return (DatatypeValidator*) new (manager) DateTimeDatatypeValidator(this, facets, enums, finalSet, manager); } // // caller need to release the date created here // XMLDateTime* DateTimeDatatypeValidator::parse(const XMLCh* const content, MemoryManager* const manager) { XMLDateTime *pRetDate = new (manager) XMLDateTime(content, manager); Janitor jan(pRetDate); try { pRetDate->parseDateTime(); } catch(const OutOfMemoryException&) { jan.release(); throw; } return jan.release(); } void DateTimeDatatypeValidator::parse(XMLDateTime* const pDate) { pDate->parseDateTime(); } const XMLCh* DateTimeDatatypeValidator::getCanonicalRepresentation(const XMLCh* const rawData , MemoryManager* const memMgr , bool toValidate) const { MemoryManager* toUse = memMgr? memMgr : fMemoryManager; if (toValidate) { DateTimeDatatypeValidator* temp = (DateTimeDatatypeValidator*) this; try { temp->checkContent(rawData, 0, false, toUse); } catch (...) { return 0; } } try { XMLDateTime aDateTime(rawData, toUse); aDateTime.parseDateTime(); return aDateTime.getDateTimeCanonicalRepresentation(toUse); } catch (...) { return 0; } } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(DateTimeDatatypeValidator) void DateTimeDatatypeValidator::serialize(XSerializeEngine& serEng) { DateTimeValidator::serialize(serEng); } XERCES_CPP_NAMESPACE_END /** * End of file DateTimeDatatypeValidator::cpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/StringDatatypeValidator.cpp0000644000175000017500000001742210523643534026000 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: StringDatatypeValidator.cpp 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Constructors and Destructor // --------------------------------------------------------------------------- StringDatatypeValidator::StringDatatypeValidator(MemoryManager* const manager) :AbstractStringValidator(0, 0, 0, DatatypeValidator::String, manager) { setWhiteSpace(DatatypeValidator::PRESERVE); } StringDatatypeValidator::StringDatatypeValidator( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager) :AbstractStringValidator(baseValidator, facets, finalSet, DatatypeValidator::String, manager) { setWhiteSpace(DatatypeValidator::PRESERVE); init(enums, manager); } StringDatatypeValidator::~StringDatatypeValidator() {} DatatypeValidator* StringDatatypeValidator::newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager ) { return (DatatypeValidator*) new (manager) StringDatatypeValidator(this, facets, enums, finalSet, manager); } StringDatatypeValidator::StringDatatypeValidator( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , const int finalSet , const ValidatorType type , MemoryManager* const manager) :AbstractStringValidator(baseValidator, facets, finalSet, type, manager) { setWhiteSpace(DatatypeValidator::PRESERVE); // do not invoke init() here!!! } // --------------------------------------------------------------------------- // Utilities // --------------------------------------------------------------------------- void StringDatatypeValidator::assignAdditionalFacet(const XMLCh* const key , const XMLCh* const value , MemoryManager* const manager) { if (XMLString::equals(key, SchemaSymbols::fgELT_WHITESPACE)) { // whiteSpace = preserve | replace | collapse if (XMLString::equals(value, SchemaSymbols::fgWS_PRESERVE)) setWhiteSpace(DatatypeValidator::PRESERVE); else if (XMLString::equals(value, SchemaSymbols::fgWS_REPLACE)) setWhiteSpace(DatatypeValidator::REPLACE); else if (XMLString::equals(value, SchemaSymbols::fgWS_COLLAPSE)) setWhiteSpace(DatatypeValidator::COLLAPSE); else ThrowXMLwithMemMgr1(InvalidDatatypeFacetException, XMLExcepts::FACET_Invalid_WS, value, manager); //("whiteSpace value '" + ws + "' must be one of 'preserve', 'replace', 'collapse'."); setFacetsDefined(DatatypeValidator::FACET_WHITESPACE); } else { ThrowXMLwithMemMgr1(InvalidDatatypeFacetException , XMLExcepts::FACET_Invalid_Tag , key , manager); } } void StringDatatypeValidator::inheritAdditionalFacet() { StringDatatypeValidator *pBaseValidator = (StringDatatypeValidator*) getBaseValidator(); if (!pBaseValidator) return; // inherit whitespace if (((pBaseValidator->getFacetsDefined() & DatatypeValidator::FACET_WHITESPACE) !=0) && ((getFacetsDefined() & DatatypeValidator::FACET_WHITESPACE) == 0)) { setWhiteSpace(getBaseValidator()->getWSFacet()); setFacetsDefined(DatatypeValidator::FACET_WHITESPACE); } } void StringDatatypeValidator::checkAdditionalFacetConstraints(MemoryManager* const manager) const { StringDatatypeValidator *pBaseValidator = (StringDatatypeValidator*) getBaseValidator(); if (!pBaseValidator) return; short thisWSFacet = getWSFacet(); short baseWSFacet = pBaseValidator->getWSFacet(); // check 4.3.6.c1 error: whitespace if (((getFacetsDefined() & DatatypeValidator::FACET_WHITESPACE) != 0) && ((pBaseValidator->getFacetsDefined() & DatatypeValidator::FACET_WHITESPACE) != 0 )) { if ((baseWSFacet == DatatypeValidator::COLLAPSE) && ((thisWSFacet == DatatypeValidator::PRESERVE) || (thisWSFacet == DatatypeValidator::REPLACE))) ThrowXMLwithMemMgr(InvalidDatatypeFacetException, XMLExcepts::FACET_WS_collapse, manager); if ((baseWSFacet == DatatypeValidator::REPLACE) && (thisWSFacet == DatatypeValidator::PRESERVE)) ThrowXMLwithMemMgr(InvalidDatatypeFacetException, XMLExcepts::FACET_WS_replace, manager); if (((pBaseValidator->getFixed() & DatatypeValidator::FACET_WHITESPACE) !=0) && ( thisWSFacet != baseWSFacet)) { ThrowXMLwithMemMgr2(InvalidDatatypeFacetException , XMLExcepts::FACET_whitespace_base_fixed , getWSstring(thisWSFacet) , getWSstring(baseWSFacet) , manager); } } } void StringDatatypeValidator::checkAdditionalFacet(const XMLCh* const content , MemoryManager* const manager) const { // // check WhiteSpace // if ((getFacetsDefined() & DatatypeValidator::FACET_WHITESPACE) != 0 ) { if ( getWSFacet() == DatatypeValidator::REPLACE ) { if (!XMLString::isWSReplaced(content)) ThrowXMLwithMemMgr1(InvalidDatatypeValueException, XMLExcepts::VALUE_WS_replaced, content, manager); } else if ( getWSFacet() == DatatypeValidator::COLLAPSE ) { if (!XMLString::isWSCollapsed(content)) ThrowXMLwithMemMgr1(InvalidDatatypeValueException, XMLExcepts::VALUE_WS_collapsed, content, manager); } } } void StringDatatypeValidator::checkValueSpace(const XMLCh* const , MemoryManager* const) {} /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(StringDatatypeValidator) void StringDatatypeValidator::serialize(XSerializeEngine& serEng) { AbstractStringValidator::serialize(serEng); } XERCES_CPP_NAMESPACE_END /** * End of file StringDatatypeValidator.cpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/NameDatatypeValidator.cpp0000644000175000017500000001113310651167646025412 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: NameDatatypeValidator.cpp 558817 2007-07-23 18:12:54Z cargilld $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Constructors and Destructor // --------------------------------------------------------------------------- NameDatatypeValidator::NameDatatypeValidator(MemoryManager* const manager) :StringDatatypeValidator(0, 0, 0, DatatypeValidator::Name, manager) {} NameDatatypeValidator::~NameDatatypeValidator() {} NameDatatypeValidator::NameDatatypeValidator( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager) :StringDatatypeValidator(baseValidator, facets, finalSet, DatatypeValidator::Name, manager) { init(enums, manager); } DatatypeValidator* NameDatatypeValidator::newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager ) { return (DatatypeValidator*) new (manager) NameDatatypeValidator(this, facets, enums, finalSet, manager); } NameDatatypeValidator::NameDatatypeValidator( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , const int finalSet , const ValidatorType type , MemoryManager* const manager) :StringDatatypeValidator(baseValidator, facets, finalSet, type, manager) { // do not invoke init() here!!! } // ----------------------------------------------------------------------- // Compare methods // ----------------------------------------------------------------------- int NameDatatypeValidator::compare(const XMLCh* const lValue , const XMLCh* const rValue , MemoryManager* const) { return ( XMLString::equals(lValue, rValue)? 0 : -1); } void NameDatatypeValidator::validate(const XMLCh* const content , ValidationContext* const context , MemoryManager* const manager) { // use StringDatatypeValidator (which in turn, invoke // the baseValidator) to validate content against // facets if any. // StringDatatypeValidator::validate(content, context, manager); return; } void NameDatatypeValidator::checkValueSpace(const XMLCh* const content , MemoryManager* const manager) { // // 3.3.6 check must: "Name" // if ( !XMLChar1_0::isValidName(content)) { ThrowXMLwithMemMgr2(InvalidDatatypeValueException , XMLExcepts::VALUE_Invalid_Name , content , SchemaSymbols::fgDT_NAME , manager); } } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(NameDatatypeValidator) void NameDatatypeValidator::serialize(XSerializeEngine& serEng) { StringDatatypeValidator::serialize(serEng); } XERCES_CPP_NAMESPACE_END /** * End of file NameDatatypeValidator.cpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/AnyURIDatatypeValidator.hpp0000644000175000017500000000606010737474442025651 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: AnyURIDatatypeValidator.hpp 608951 2008-01-04 18:21:22Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_ANYURI_DATATYPEVALIDATOR_HPP) #define XERCESC_INCLUDE_GUARD_ANYURI_DATATYPEVALIDATOR_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN class XMLBuffer; class VALIDATORS_EXPORT AnyURIDatatypeValidator : public AbstractStringValidator { public: // ----------------------------------------------------------------------- // Public ctor/dtor // ----------------------------------------------------------------------- /** @name Constructors and Destructor */ //@{ AnyURIDatatypeValidator ( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); AnyURIDatatypeValidator ( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual ~AnyURIDatatypeValidator(); //@} /** * Returns an instance of the base datatype validator class * Used by the DatatypeValidatorFactory. */ virtual DatatypeValidator* newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(AnyURIDatatypeValidator) protected: virtual void checkValueSpace(const XMLCh* const content , MemoryManager* const manager); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- AnyURIDatatypeValidator(const AnyURIDatatypeValidator&); AnyURIDatatypeValidator& operator=(const AnyURIDatatypeValidator&); void encode(const XMLCh* const content, const XMLSize_t len, XMLBuffer& encoded, MemoryManager* const manager); }; XERCES_CPP_NAMESPACE_END #endif /** * End of file AnyURIDatatypeValidator.hpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/DecimalDatatypeValidator.hpp0000644000175000017500000001634610606722647026106 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DecimalDatatypeValidator.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DECIMAL_DATATYPEVALIDATOR_HPP) #define XERCESC_INCLUDE_GUARD_DECIMAL_DATATYPEVALIDATOR_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN class XMLBigDecimal; class VALIDATORS_EXPORT DecimalDatatypeValidator : public AbstractNumericValidator { public: // ----------------------------------------------------------------------- // Public ctor/dtor // ----------------------------------------------------------------------- /** @name Constructors and Destructor */ //@{ DecimalDatatypeValidator ( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); DecimalDatatypeValidator ( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual ~DecimalDatatypeValidator(); //@} // ----------------------------------------------------------------------- // Compare methods // ----------------------------------------------------------------------- /** @name Compare Function */ //@{ /** * Compare two boolean data types * * @param content1 * @param content2 * @return */ virtual int compare(const XMLCh* const, const XMLCh* const , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); //@} /** * Returns an instance of the base datatype validator class * Used by the DatatypeValidatorFactory. */ virtual DatatypeValidator* newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual const XMLCh* getCanonicalRepresentation ( const XMLCh* const rawData , MemoryManager* const memMgr = 0 , bool toValidate = false ) const; /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(DecimalDatatypeValidator) protected: // ----------------------------------------------------------------------- // ctor provided to be used by derived classes // ----------------------------------------------------------------------- DecimalDatatypeValidator ( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , const int finalSet , const ValidatorType type , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); // ----------------------------------------------------------------------- // Abstract interface from AbstractNumericFacetValidator // ----------------------------------------------------------------------- virtual void assignAdditionalFacet(const XMLCh* const key , const XMLCh* const value , MemoryManager* const manager); virtual void inheritAdditionalFacet(); virtual void checkAdditionalFacetConstraints(MemoryManager* const manager) const; virtual void checkAdditionalFacetConstraintsBase(MemoryManager* const manager) const; virtual int compareValues(const XMLNumber* const lValue , const XMLNumber* const rValue); virtual void setMaxInclusive(const XMLCh* const); virtual void setMaxExclusive(const XMLCh* const); virtual void setMinInclusive(const XMLCh* const); virtual void setMinExclusive(const XMLCh* const); virtual void setEnumeration(MemoryManager* const manager); // ----------------------------------------------------------------------- // Abstract interface from AbstractNumericValidator // ----------------------------------------------------------------------- virtual void checkContent(const XMLCh* const content , ValidationContext* const context , bool asBase , MemoryManager* const manager); public: // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- inline unsigned int getTotalDigits() const; inline unsigned int getFractionDigits() const; private: // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- inline void setTotalDigits(unsigned int); inline void setFractionDigits(unsigned int); // ----------------------------------------------------------------------- // Private data members // // ----------------------------------------------------------------------- unsigned int fTotalDigits; unsigned int fFractionDigits; // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DecimalDatatypeValidator(const DecimalDatatypeValidator&); DecimalDatatypeValidator& operator=(const DecimalDatatypeValidator&); }; // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- inline unsigned int DecimalDatatypeValidator::getTotalDigits() const { return fTotalDigits; } inline unsigned int DecimalDatatypeValidator::getFractionDigits() const { return fFractionDigits; } // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- inline void DecimalDatatypeValidator::setTotalDigits(unsigned int newTotalDigits) { fTotalDigits = newTotalDigits; } inline void DecimalDatatypeValidator::setFractionDigits(unsigned int newFractionDigits) { fFractionDigits = newFractionDigits; } XERCES_CPP_NAMESPACE_END #endif /** * End of file DecimalDatatypeValidator.hpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/IDREFDatatypeValidator.cpp0000644000175000017500000001070210523643534025355 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: IDREFDatatypeValidator.cpp 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Constructors and Destructor // --------------------------------------------------------------------------- IDREFDatatypeValidator::IDREFDatatypeValidator(MemoryManager* const manager) :StringDatatypeValidator(0, 0, 0, DatatypeValidator::IDREF, manager) {} IDREFDatatypeValidator::IDREFDatatypeValidator( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager) :StringDatatypeValidator(baseValidator, facets, finalSet, DatatypeValidator::IDREF, manager) { init(enums, manager); } IDREFDatatypeValidator::~IDREFDatatypeValidator() {} DatatypeValidator* IDREFDatatypeValidator::newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager ) { return (DatatypeValidator*) new (manager) IDREFDatatypeValidator(this, facets, enums, finalSet, manager); } IDREFDatatypeValidator::IDREFDatatypeValidator( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , const int finalSet , const ValidatorType type , MemoryManager* const manager) :StringDatatypeValidator(baseValidator, facets, finalSet, type, manager) { // do not invoke init() here!!! } void IDREFDatatypeValidator::validate(const XMLCh* const content , ValidationContext* const context , MemoryManager* const manager) { // use StringDatatypeValidator (which in turn, invoke // the baseValidator) to validate content against // facets if any. // StringDatatypeValidator::validate(content, context, manager); // this is different from java, since we always add, while // in java, it is done as told. REVISIT. // if (context) { context->addIdRef(content); } } void IDREFDatatypeValidator::checkValueSpace(const XMLCh* const content , MemoryManager* const manager) { // // 3.3.9 check must: "NCName" // if ( !XMLChar1_0::isValidNCName(content, XMLString::stringLen(content)) ) { ThrowXMLwithMemMgr1(InvalidDatatypeValueException , XMLExcepts::VALUE_Invalid_NCName , content , manager); } } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(IDREFDatatypeValidator) void IDREFDatatypeValidator::serialize(XSerializeEngine& serEng) { StringDatatypeValidator::serialize(serEng); } XERCES_CPP_NAMESPACE_END /** * End of file IDREFDatatypeValidator.cpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/MonthDayDatatypeValidator.cpp0000644000175000017500000000655510523643534026262 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: MonthDayDatatypeValidator.cpp 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Constructors and Destructor // --------------------------------------------------------------------------- MonthDayDatatypeValidator::MonthDayDatatypeValidator(MemoryManager* const manager) :DateTimeValidator(0, 0, 0, DatatypeValidator::MonthDay, manager) { setOrdered(XSSimpleTypeDefinition::ORDERED_PARTIAL); } MonthDayDatatypeValidator::MonthDayDatatypeValidator( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager) :DateTimeValidator(baseValidator, facets, finalSet, DatatypeValidator::MonthDay, manager) { init(enums, manager); } MonthDayDatatypeValidator::~MonthDayDatatypeValidator() {} DatatypeValidator* MonthDayDatatypeValidator::newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager ) { return (DatatypeValidator*) new (manager) MonthDayDatatypeValidator(this, facets, enums, finalSet, manager); } // // caller need to release the date created here // XMLDateTime* MonthDayDatatypeValidator::parse(const XMLCh* const content, MemoryManager* const manager) { XMLDateTime *pRetDate = new (manager) XMLDateTime(content, manager); Janitor jan(pRetDate); try { pRetDate->parseMonthDay(); } catch(const OutOfMemoryException&) { jan.release(); throw; } return jan.release(); } void MonthDayDatatypeValidator::parse(XMLDateTime* const pDate) { pDate->parseMonthDay(); } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(MonthDayDatatypeValidator) void MonthDayDatatypeValidator::serialize(XSerializeEngine& serEng) { DateTimeValidator::serialize(serEng); } XERCES_CPP_NAMESPACE_END /** * End of file MonthDayDatatypeValidator::cpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/YearMonthDatatypeValidator.cpp0000644000175000017500000000660010523643534026434 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: YearMonthDatatypeValidator.cpp 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Constructors and Destructor // --------------------------------------------------------------------------- YearMonthDatatypeValidator::YearMonthDatatypeValidator(MemoryManager* const manager) :DateTimeValidator(0, 0, 0, DatatypeValidator::YearMonth, manager) { setOrdered(XSSimpleTypeDefinition::ORDERED_PARTIAL); } YearMonthDatatypeValidator::YearMonthDatatypeValidator( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager) :DateTimeValidator(baseValidator, facets, finalSet, DatatypeValidator::YearMonth, manager) { init(enums, manager); } YearMonthDatatypeValidator::~YearMonthDatatypeValidator() {} DatatypeValidator* YearMonthDatatypeValidator::newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager ) { return (DatatypeValidator*) new (manager) YearMonthDatatypeValidator(this, facets, enums, finalSet, manager); } // // caller need to release the date created here // XMLDateTime* YearMonthDatatypeValidator::parse(const XMLCh* const content, MemoryManager* const manager) { XMLDateTime *pRetDate = new (manager) XMLDateTime(content, manager); Janitor jan(pRetDate); try { pRetDate->parseYearMonth(); } catch(const OutOfMemoryException&) { jan.release(); throw; } return jan.release(); } void YearMonthDatatypeValidator::parse(XMLDateTime* const pDate) { pDate->parseYearMonth(); } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(YearMonthDatatypeValidator) void YearMonthDatatypeValidator::serialize(XSerializeEngine& serEng) { DateTimeValidator::serialize(serEng); } XERCES_CPP_NAMESPACE_END /** * End of file YearMonthDatatypeValidator::cpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/NOTATIONDatatypeValidator.hpp0000644000175000017500000000660610606722647026001 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: NOTATIONDatatypeValidator.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_NOTATION_DATATYPEVALIDATOR_HPP) #define XERCESC_INCLUDE_GUARD_NOTATION_DATATYPEVALIDATOR_HPP #include XERCES_CPP_NAMESPACE_BEGIN class VALIDATORS_EXPORT NOTATIONDatatypeValidator : public AbstractStringValidator { public: // ----------------------------------------------------------------------- // Public ctor/dtor // ----------------------------------------------------------------------- /** @name Constructors and Destructor */ //@{ NOTATIONDatatypeValidator ( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); NOTATIONDatatypeValidator ( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual ~NOTATIONDatatypeValidator(); //@} /** * Returns an instance of the base datatype validator class * Used by the DatatypeValidatorFactory. */ virtual DatatypeValidator* newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(NOTATIONDatatypeValidator) protected: virtual void checkValueSpace(const XMLCh* const content , MemoryManager* const manager); virtual void checkContent(const XMLCh* const content , ValidationContext* const context , bool asBase , MemoryManager* const manager); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- NOTATIONDatatypeValidator(const NOTATIONDatatypeValidator&); NOTATIONDatatypeValidator& operator=(const NOTATIONDatatypeValidator&); // ----------------------------------------------------------------------- // Private data members // // Nil // ----------------------------------------------------------------------- }; XERCES_CPP_NAMESPACE_END #endif /** * End of file NOTATIONDatatypeValidator.hpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/DatatypeValidator.cpp0000644000175000017500000003637510645177671024632 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DatatypeValidator.cpp 555320 2007-07-11 16:05:13Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include //since we need to dynamically created each and every derivatives //during deserialization by XSerializeEngine>>Derivative, we got //to include all hpp #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN static const int DV_BUILTIN = -1; static const int DV_NORMAL = -2; static const int DV_ZERO = -3; static const int TYPENAME_ZERO = -1; static const int TYPENAME_S4S = -2; static const int TYPENAME_NORMAL = -3; // --------------------------------------------------------------------------- // DatatypeValidator: Constructors and Destructor // --------------------------------------------------------------------------- DatatypeValidator::DatatypeValidator(DatatypeValidator* const baseValidator, RefHashTableOf* const facets, const int finalSet, const ValidatorType type, MemoryManager* const manager) : fAnonymous(false) , fFinite(false) , fBounded(false) , fNumeric(false) , fWhiteSpace(COLLAPSE) , fFinalSet(finalSet) , fFacetsDefined(0) , fFixed(0) , fType(type) , fOrdered(XSSimpleTypeDefinition::ORDERED_FALSE) , fBaseValidator(baseValidator) , fFacets(facets) , fPattern(0) , fRegex(0) , fTypeName(0) , fTypeLocalName(XMLUni::fgZeroLenString) , fTypeUri(XMLUni::fgZeroLenString) , fMemoryManager(manager) { } DatatypeValidator::~DatatypeValidator() { cleanUp(); } const XMLCh* DatatypeValidator::getWSstring(const short theType) const { switch (theType) { case PRESERVE: return SchemaSymbols::fgWS_PRESERVE; case REPLACE: return SchemaSymbols::fgWS_REPLACE; case COLLAPSE: return SchemaSymbols::fgWS_COLLAPSE; default: return SchemaSymbols::fgWS_PRESERVE; } } void DatatypeValidator::setTypeName(const XMLCh* const name, const XMLCh* const uri) { if (fTypeName) { fMemoryManager->deallocate(fTypeName); fTypeName = 0; } if (name || uri) { XMLSize_t nameLen = XMLString::stringLen(name); XMLSize_t uriLen = XMLString::stringLen(uri); fTypeName = (XMLCh*) fMemoryManager->allocate ( (nameLen + uriLen + 2)*sizeof(XMLCh) ); fTypeUri = fTypeName; fTypeLocalName = &fTypeName[uriLen+1]; if (uri) XMLString::moveChars(fTypeName, uri, uriLen+1); else fTypeName[0] = chNull; if (name) XMLString::moveChars(&fTypeName[uriLen+1], name, nameLen+1); else fTypeName[uriLen+1] = chNull; } else { fTypeUri = fTypeLocalName = XMLUni::fgZeroLenString; } } void DatatypeValidator::setTypeName(const XMLCh* const typeName) { if (fTypeName) { fMemoryManager->deallocate(fTypeName); fTypeName = 0; } if (typeName) { XMLSize_t nameLen = XMLString::stringLen(typeName); int commaOffset = XMLString::indexOf(typeName, chComma); fTypeName = (XMLCh*) fMemoryManager->allocate ( (nameLen + 1) * sizeof(XMLCh) ); XMLString::moveChars(fTypeName, typeName, nameLen+1); if ( commaOffset == -1) { fTypeUri = SchemaSymbols::fgURI_SCHEMAFORSCHEMA; fTypeLocalName = fTypeName; } else { fTypeUri = fTypeName; fTypeLocalName = &fTypeName[commaOffset+1]; fTypeName[commaOffset] = chNull; } } else { fTypeUri = fTypeLocalName = XMLUni::fgZeroLenString; } } // --------------------------------------------------------------------------- // DatatypeValidator: CleanUp methods // --------------------------------------------------------------------------- void DatatypeValidator::cleanUp() { delete fFacets; delete fRegex; if (fPattern) fMemoryManager->deallocate(fPattern);//delete [] fPattern; if (fTypeName) fMemoryManager->deallocate(fTypeName); } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_NOCREATE(DatatypeValidator) void DatatypeValidator::serialize(XSerializeEngine& serEng) { if (serEng.isStoring()) { serEng< ***/ XTemplateSerializer::storeObject(fFacets, serEng); serEng.writeString(fPattern); if (fTypeUri==XMLUni::fgZeroLenString) { serEng<>fAnonymous; serEng>>fFinite; serEng>>fBounded; serEng>>fNumeric; serEng>>fWhiteSpace; serEng>>fFinalSet; serEng>>fFacetsDefined; serEng>>fFixed; int type; serEng>>type; fType=(ValidatorType)type; serEng>>type; fOrdered = (XSSimpleTypeDefinition::ORDERING)type; fBaseValidator = loadDV(serEng); /*** * * Deserialize RefHashTableOf * ***/ XTemplateSerializer::loadObject(&fFacets, 29, true, serEng); serEng.readString(fPattern); /*** * Recreate through setTypeName() * fTypeName ***/ int flag; serEng>>flag; if ( TYPENAME_ZERO == flag ) { setTypeName(0); } else if ( TYPENAME_S4S == flag ) { XMLCh* typeLocalName; serEng.readString(typeLocalName); ArrayJanitor janName(typeLocalName, fMemoryManager); setTypeName(typeLocalName); } else // TYPENAME_NORMAL { XMLCh* typeLocalName; serEng.readString(typeLocalName); ArrayJanitor janName(typeLocalName, fMemoryManager); XMLCh* typeUri; serEng.readString(typeUri); ArrayJanitor janUri(typeUri, fMemoryManager); setTypeName(typeLocalName, typeUri); } /*** * don't serialize fRegex ***/ fRegex = new (fMemoryManager) RegularExpression(fPattern, SchemaSymbols::fgRegEx_XOption, fMemoryManager); } } /*** * * When deserialized, we need to know, exactly what * validator was serialized here. * * Design Issue: * * This extra type information is only necessary when * we need to create and deserialize an DatatypeValidator * derivative by operator >>, but not by object.serialize(). * Therefore it is appropriate to save this type info by * hosting object rather than by derivative.serialize(). * * ***/ void DatatypeValidator::storeDV(XSerializeEngine& serEng , DatatypeValidator* const dv) { if (dv) { //builtIndv if (dv == DatatypeValidatorFactory::getBuiltInRegistry()->get(dv->getTypeLocalName())) { serEng<getTypeLocalName()); } else { serEng<getType(); serEng<>flag; if (DV_BUILTIN == flag) { XMLCh* dvName; serEng.readString(dvName); ArrayJanitor janName(dvName, serEng.getMemoryManager()); return DatatypeValidatorFactory::getBuiltInRegistry()->get(dvName); } else if (DV_ZERO == flag) { return 0; } int type; serEng>>type; switch((ValidatorType)type) { case String: StringDatatypeValidator* stringdv; serEng>>stringdv; return stringdv; case AnyURI: AnyURIDatatypeValidator* anyuridv; serEng>>anyuridv; return anyuridv; case QName: QNameDatatypeValidator* qnamedv; serEng>>qnamedv; return qnamedv; case Name: NameDatatypeValidator* namedv; serEng>>namedv; return namedv; case NCName: NCNameDatatypeValidator* ncnamedv; serEng>>ncnamedv; return ncnamedv; case Boolean: BooleanDatatypeValidator* booleandv; serEng>>booleandv; return booleandv; case Float: FloatDatatypeValidator* floatdv; serEng>>floatdv; return floatdv; case Double: DoubleDatatypeValidator* doubledv; serEng>>doubledv; return doubledv; case Decimal: DecimalDatatypeValidator* decimaldv; serEng>>decimaldv; return decimaldv; case HexBinary: HexBinaryDatatypeValidator* hexbinarydv; serEng>>hexbinarydv; return hexbinarydv; case Base64Binary: Base64BinaryDatatypeValidator* base64binarydv; serEng>>base64binarydv; return base64binarydv; case Duration: DurationDatatypeValidator* durationdv; serEng>>durationdv; return durationdv; case DateTime: DateTimeDatatypeValidator* datetimedv; serEng>>datetimedv; return datetimedv; case Date: DateDatatypeValidator* datedv; serEng>>datedv; return datedv; case Time: TimeDatatypeValidator* timedv; serEng>>timedv; return timedv; case MonthDay: MonthDayDatatypeValidator* monthdaydv; serEng>>monthdaydv; return monthdaydv; case YearMonth: YearMonthDatatypeValidator* yearmonthdv; serEng>>yearmonthdv; return yearmonthdv; case Year: YearDatatypeValidator* yeardv; serEng>>yeardv; return yeardv; case Month: MonthDatatypeValidator* monthdv; serEng>>monthdv; return monthdv; case Day: DayDatatypeValidator* daydv; serEng>>daydv; return daydv; case ID: IDDatatypeValidator* iddv; serEng>>iddv; return iddv; case IDREF: IDREFDatatypeValidator* idrefdv; serEng>>idrefdv; return idrefdv; case ENTITY: ENTITYDatatypeValidator* entitydv; serEng>>entitydv; return entitydv; case NOTATION: NOTATIONDatatypeValidator* notationdv; serEng>>notationdv; return notationdv; case List: ListDatatypeValidator* listdv; serEng>>listdv; return listdv; case Union: UnionDatatypeValidator* uniondv; serEng>>uniondv; return uniondv; case AnySimpleType: AnySimpleTypeDatatypeValidator* anysimpletypedv; serEng>>anysimpletypedv; return anysimpletypedv; case UnKnown: return 0; default: //we treat this same as UnKnown return 0; } } /** * Canonical Representation * */ const XMLCh* DatatypeValidator::getCanonicalRepresentation(const XMLCh* const rawData , MemoryManager* const memMgr , bool toValidate) const { MemoryManager* toUse = memMgr? memMgr : fMemoryManager; if (toValidate) { DatatypeValidator *temp = (DatatypeValidator*) this; try { temp->validate(rawData, 0, toUse); } catch (...) { return 0; } } return XMLString::replicate(rawData, toUse); } XERCES_CPP_NAMESPACE_END /** * End of file DatatypeValidator.cpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/DateDatatypeValidator.cpp0000644000175000017500000001015010523643534025376 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DateDatatypeValidator.cpp 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Constructors and Destructor // --------------------------------------------------------------------------- DateDatatypeValidator::DateDatatypeValidator(MemoryManager* const manager) :DateTimeValidator(0, 0, 0, DatatypeValidator::Date, manager) { setOrdered(XSSimpleTypeDefinition::ORDERED_PARTIAL); } DateDatatypeValidator::DateDatatypeValidator( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager) :DateTimeValidator(baseValidator, facets, finalSet, DatatypeValidator::Date, manager) { init(enums, manager); } DateDatatypeValidator::~DateDatatypeValidator() {} DatatypeValidator* DateDatatypeValidator::newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager ) { return (DatatypeValidator*) new (manager) DateDatatypeValidator(this, facets, enums, finalSet, manager); } // // caller need to release the date created here // XMLDateTime* DateDatatypeValidator::parse(const XMLCh* const content, MemoryManager* const manager) { XMLDateTime *pRetDate = new (manager) XMLDateTime(content, manager); Janitor jan(pRetDate); try { pRetDate->parseDate(); } catch(const OutOfMemoryException&) { jan.release(); throw; } return jan.release(); } void DateDatatypeValidator::parse(XMLDateTime* const pDate) { pDate->parseDate(); } const XMLCh* DateDatatypeValidator::getCanonicalRepresentation(const XMLCh* const rawData , MemoryManager* const memMgr , bool toValidate) const { MemoryManager* toUse = memMgr? memMgr : fMemoryManager; if (toValidate) { DateDatatypeValidator* temp = (DateDatatypeValidator*) this; try { temp->checkContent(rawData, 0, false, toUse); } catch (...) { return 0; } } try { XMLDateTime aDateTime(rawData, toUse); aDateTime.parseDate(); return aDateTime.getDateCanonicalRepresentation(toUse); } catch (...) { return 0; } } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(DateDatatypeValidator) void DateDatatypeValidator::serialize(XSerializeEngine& serEng) { DateTimeValidator::serialize(serEng); } XERCES_CPP_NAMESPACE_END /** * End of file DateDatatypeValidator::cpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/DayDatatypeValidator.cpp0000644000175000017500000000641510523643534025247 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DayDatatypeValidator.cpp 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Constructors and Destructor // --------------------------------------------------------------------------- DayDatatypeValidator::DayDatatypeValidator(MemoryManager* const manager) :DateTimeValidator(0, 0, 0, DatatypeValidator::Day, manager) { setOrdered(XSSimpleTypeDefinition::ORDERED_PARTIAL); } DayDatatypeValidator::DayDatatypeValidator( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager) :DateTimeValidator(baseValidator, facets, finalSet, DatatypeValidator::Day, manager) { init(enums, manager); } DayDatatypeValidator::~DayDatatypeValidator() {} DatatypeValidator* DayDatatypeValidator::newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager ) { return (DatatypeValidator*) new (manager) DayDatatypeValidator(this, facets, enums, finalSet, manager); } // // caller need to release the date created here // XMLDateTime* DayDatatypeValidator::parse(const XMLCh* const content, MemoryManager* const manager) { XMLDateTime *pRetDate = new (manager) XMLDateTime(content, manager); Janitor jan(pRetDate); try { pRetDate->parseDay(); } catch(const OutOfMemoryException&) { jan.release(); throw; } return jan.release(); } void DayDatatypeValidator::parse(XMLDateTime* const pDate) { pDate->parseDay(); } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(DayDatatypeValidator) void DayDatatypeValidator::serialize(XSerializeEngine& serEng) { DateTimeValidator::serialize(serEng); } XERCES_CPP_NAMESPACE_END /** * End of file DayDatatypeValidator::cpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/InvalidDatatypeFacetException.hpp0000644000175000017500000000232510606722647027102 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: InvalidDatatypeFacetException.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_INVALIDDATATYPEFACETEXCEPTION_HPP) #define XERCESC_INCLUDE_GUARD_INVALIDDATATYPEFACETEXCEPTION_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN MakeXMLException(InvalidDatatypeFacetException, XMLUTIL_EXPORT) XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/validators/datatype/InvalidDatatypeValueException.hpp0000644000175000017500000000232510606722647027134 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: InvalidDatatypeValueException.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_INVALIDDATATYPEVALUEEXCEPTION_HPP) #define XERCESC_INCLUDE_GUARD_INVALIDDATATYPEVALUEEXCEPTION_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN MakeXMLException(InvalidDatatypeValueException, XMLUTIL_EXPORT) XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/validators/datatype/MonthDatatypeValidator.cpp0000644000175000017500000000646410523643534025623 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: MonthDatatypeValidator.cpp 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Constructors and Destructor // --------------------------------------------------------------------------- MonthDatatypeValidator::MonthDatatypeValidator(MemoryManager* const manager) :DateTimeValidator(0, 0, 0, DatatypeValidator::Month, manager) { setOrdered(XSSimpleTypeDefinition::ORDERED_PARTIAL); } MonthDatatypeValidator::MonthDatatypeValidator( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager) :DateTimeValidator(baseValidator, facets, finalSet, DatatypeValidator::Month, manager) { init(enums, manager); } MonthDatatypeValidator::~MonthDatatypeValidator() {} DatatypeValidator* MonthDatatypeValidator::newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager ) { return (DatatypeValidator*) new (manager) MonthDatatypeValidator(this, facets, enums, finalSet, manager); } // // caller need to release the date created here // XMLDateTime* MonthDatatypeValidator::parse(const XMLCh* const content, MemoryManager* const manager) { XMLDateTime *pRetDate = new (manager) XMLDateTime(content, manager); Janitor jan(pRetDate); try { pRetDate->parseMonth(); } catch(const OutOfMemoryException&) { jan.release(); throw; } return jan.release(); } void MonthDatatypeValidator::parse(XMLDateTime* const pDate) { pDate->parseMonth(); } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(MonthDatatypeValidator) void MonthDatatypeValidator::serialize(XSerializeEngine& serEng) { DateTimeValidator::serialize(serEng); } XERCES_CPP_NAMESPACE_END /** * End of file MonthDatatypeValidator::cpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/StringDatatypeValidator.hpp0000644000175000017500000000726610606722647026017 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: StringDatatypeValidator.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_STRING_DATATYPEVALIDATOR_HPP) #define XERCESC_INCLUDE_GUARD_STRING_DATATYPEVALIDATOR_HPP #include XERCES_CPP_NAMESPACE_BEGIN class VALIDATORS_EXPORT StringDatatypeValidator : public AbstractStringValidator { public: // ----------------------------------------------------------------------- // Public ctor/dtor // ----------------------------------------------------------------------- /** @name Constructors and Destructor */ //@{ StringDatatypeValidator ( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); StringDatatypeValidator ( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual ~StringDatatypeValidator(); //@} /** * Returns an instance of the base datatype validator class * Used by the DatatypeValidatorFactory. */ virtual DatatypeValidator* newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(StringDatatypeValidator) protected: // // ctor provided to be used by derived classes // StringDatatypeValidator ( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , const int finalSet , const ValidatorType type , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual void assignAdditionalFacet(const XMLCh* const key , const XMLCh* const value , MemoryManager* const manager); virtual void inheritAdditionalFacet(); virtual void checkAdditionalFacetConstraints(MemoryManager* const manager) const; virtual void checkAdditionalFacet(const XMLCh* const content , MemoryManager* const manager) const; virtual void checkValueSpace(const XMLCh* const content , MemoryManager* const manager); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- StringDatatypeValidator(const StringDatatypeValidator&); StringDatatypeValidator& operator=(const StringDatatypeValidator&); }; XERCES_CPP_NAMESPACE_END #endif /** * End of file StringDatatypeValidator.hpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/DurationDatatypeValidator.cpp0000644000175000017500000000716710523643534026324 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DurationDatatypeValidator.cpp 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Constructors and Destructor // --------------------------------------------------------------------------- DurationDatatypeValidator::DurationDatatypeValidator(MemoryManager* const manager) :DateTimeValidator(0, 0, 0, DatatypeValidator::Duration, manager) { setOrdered(XSSimpleTypeDefinition::ORDERED_PARTIAL); } DurationDatatypeValidator::DurationDatatypeValidator( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager) :DateTimeValidator(baseValidator, facets, finalSet, DatatypeValidator::Duration, manager) { init(enums, manager); } DurationDatatypeValidator::~DurationDatatypeValidator() {} DatatypeValidator* DurationDatatypeValidator::newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager ) { return (DatatypeValidator*) new (manager) DurationDatatypeValidator(this, facets, enums, finalSet, manager); } // // caller need to release the date created here // XMLDateTime* DurationDatatypeValidator::parse(const XMLCh* const content, MemoryManager* const manager) { XMLDateTime *pRetDate = new (manager) XMLDateTime(content, manager); Janitor jan(pRetDate); try { pRetDate->parseDuration(); } catch(const OutOfMemoryException&) { jan.release(); throw; } return jan.release(); } void DurationDatatypeValidator::parse(XMLDateTime* const pDate) { pDate->parseDuration(); } int DurationDatatypeValidator::compareDates(const XMLDateTime* const date1 , const XMLDateTime* const date2 , bool strict) { return XMLDateTime::compare(date1, date2, strict); } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(DurationDatatypeValidator) void DurationDatatypeValidator::serialize(XSerializeEngine& serEng) { DateTimeValidator::serialize(serEng); } XERCES_CPP_NAMESPACE_END /** * End of file DurationDatatypeValidator::cpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/AbstractStringValidator.hpp0000644000175000017500000001715511063753570026002 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: AbstractStringValidator.hpp 695949 2008-09-16 15:57:44Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_ABSTRACT_STRING_VALIDATOR_HPP) #define XERCESC_INCLUDE_GUARD_ABSTRACT_STRING_VALIDATOR_HPP #include XERCES_CPP_NAMESPACE_BEGIN class VALIDATORS_EXPORT AbstractStringValidator : public DatatypeValidator { public: // ----------------------------------------------------------------------- // Public ctor/dtor // ----------------------------------------------------------------------- /** @name Constructor. */ //@{ virtual ~AbstractStringValidator(); //@} virtual const RefArrayVectorOf* getEnumString() const; // ----------------------------------------------------------------------- // Validation methods // ----------------------------------------------------------------------- /** @name Validation Function */ //@{ /** * validate that a string matches the boolean datatype * @param content A string containing the content to be validated * * @exception throws InvalidDatatypeException if the content is * is not valid. */ virtual void validate ( const XMLCh* const content , ValidationContext* const context = 0 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); //@} // ----------------------------------------------------------------------- // Compare methods // ----------------------------------------------------------------------- /** @name Compare Function */ //@{ virtual int compare(const XMLCh* const, const XMLCh* const , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); //@} /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(AbstractStringValidator) protected: AbstractStringValidator ( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , const int finalSet , const ValidatorType type , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); void init(RefArrayVectorOf* const enums , MemoryManager* const manager); // // Abstract interface // virtual void assignAdditionalFacet(const XMLCh* const key , const XMLCh* const value , MemoryManager* const manager); virtual void inheritAdditionalFacet(); virtual void checkAdditionalFacetConstraints(MemoryManager* const manager) const; virtual void checkAdditionalFacet(const XMLCh* const content , MemoryManager* const manager) const; virtual XMLSize_t getLength(const XMLCh* const content , MemoryManager* const manager) const; virtual void checkValueSpace(const XMLCh* const content , MemoryManager* const manager) = 0; // // to Allow ListDTV to overwrite // virtual void inspectFacetBase(MemoryManager* const manager); virtual void inheritFacet(); virtual void checkContent(const XMLCh* const content , ValidationContext* const context , bool asBase , MemoryManager* const manager); /* ** Base64BinaryDatatypeValidator to overwrite */ virtual void normalizeEnumeration(MemoryManager* const manager); virtual void normalizeContent(XMLCh* const, MemoryManager* const manager) const; public: // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- inline XMLSize_t getLength() const; inline XMLSize_t getMaxLength() const; inline XMLSize_t getMinLength() const; inline RefArrayVectorOf* getEnumeration() const; protected: // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- inline void setLength(XMLSize_t); inline void setMaxLength(XMLSize_t); inline void setMinLength(XMLSize_t); inline void setEnumeration(RefArrayVectorOf*, bool); private: void assignFacet(MemoryManager* const manager); void inspectFacet(MemoryManager* const manager); // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- AbstractStringValidator(const AbstractStringValidator&); AbstractStringValidator& operator=(const AbstractStringValidator&); // ----------------------------------------------------------------------- // Private data members // // ----------------------------------------------------------------------- XMLSize_t fLength; XMLSize_t fMaxLength; XMLSize_t fMinLength; bool fEnumerationInherited; RefArrayVectorOf* fEnumeration; }; // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- inline XMLSize_t AbstractStringValidator::getLength() const { return fLength; } inline XMLSize_t AbstractStringValidator::getMaxLength() const { return fMaxLength; } inline XMLSize_t AbstractStringValidator::getMinLength() const { return fMinLength; } inline RefArrayVectorOf* AbstractStringValidator:: getEnumeration() const { return fEnumeration; } // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- inline void AbstractStringValidator::setLength(XMLSize_t newLength) { fLength = newLength; } inline void AbstractStringValidator::setMaxLength(XMLSize_t newMaxLength) { fMaxLength = newMaxLength; } inline void AbstractStringValidator::setMinLength(XMLSize_t newMinLength) { fMinLength = newMinLength; } inline void AbstractStringValidator::setEnumeration(RefArrayVectorOf* enums , bool inherited) { if (enums) { if ( !fEnumerationInherited && fEnumeration) delete fEnumeration; fEnumeration = enums; fEnumerationInherited = inherited; setFacetsDefined(DatatypeValidator::FACET_ENUMERATION); } } XERCES_CPP_NAMESPACE_END #endif /** * End of file AbstractStringValidator.hpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/ENTITYDatatypeValidator.cpp0000644000175000017500000001046010523643534025541 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: ENTITYDatatypeValidator.cpp 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Constructors and Destructor // --------------------------------------------------------------------------- ENTITYDatatypeValidator::ENTITYDatatypeValidator(MemoryManager* const manager) :StringDatatypeValidator(0, 0, 0, DatatypeValidator::ENTITY, manager) {} ENTITYDatatypeValidator::ENTITYDatatypeValidator( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager) :StringDatatypeValidator(baseValidator, facets, finalSet, DatatypeValidator::ENTITY, manager) { init(enums, manager); } ENTITYDatatypeValidator::~ENTITYDatatypeValidator() {} DatatypeValidator* ENTITYDatatypeValidator::newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager ) { return (DatatypeValidator*) new (manager) ENTITYDatatypeValidator(this, facets, enums, finalSet, manager); } // ----------------------------------------------------------------------- // Compare methods // ----------------------------------------------------------------------- int ENTITYDatatypeValidator::compare(const XMLCh* const lValue , const XMLCh* const rValue , MemoryManager* const) { return ( XMLString::equals(lValue, rValue)? 0 : -1); } void ENTITYDatatypeValidator::validate(const XMLCh* const content , ValidationContext* const context , MemoryManager* const manager) { // use StringDatatypeValidator (which in turn, invoke // the baseValidator) to validate content against // facets if any. // StringDatatypeValidator::validate(content, context, manager); // // parse the entity iff an EntityDeclPool is provided // if (context) { context->checkEntity(content); } } void ENTITYDatatypeValidator::checkValueSpace(const XMLCh* const content , MemoryManager* const manager) { // // 3.3.11 check must: "NCName" // if ( !XMLChar1_0::isValidNCName(content, XMLString::stringLen(content)) ) { ThrowXMLwithMemMgr1(InvalidDatatypeValueException , XMLExcepts::VALUE_Invalid_NCName , content , manager); } } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(ENTITYDatatypeValidator) void ENTITYDatatypeValidator::serialize(XSerializeEngine& serEng) { StringDatatypeValidator::serialize(serEng); } XERCES_CPP_NAMESPACE_END /** * End of file ENTITYDatatypeValidator.cpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/DoubleDatatypeValidator.hpp0000644000175000017500000001162710606722647025757 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DoubleDatatypeValidator.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOUBLE_DATATYPEVALIDATOR_HPP) #define XERCESC_INCLUDE_GUARD_DOUBLE_DATATYPEVALIDATOR_HPP #include #include #include XERCES_CPP_NAMESPACE_BEGIN class VALIDATORS_EXPORT DoubleDatatypeValidator : public AbstractNumericValidator { public: // ----------------------------------------------------------------------- // Public ctor/dtor // ----------------------------------------------------------------------- /** @name Constructors and Destructor */ //@{ DoubleDatatypeValidator ( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); DoubleDatatypeValidator ( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual ~DoubleDatatypeValidator(); //@} // ----------------------------------------------------------------------- // Compare methods // ----------------------------------------------------------------------- /** @name Compare Function */ //@{ /** * Compare two boolean data types * * @param content1 * @param content2 * @return */ virtual int compare(const XMLCh* const, const XMLCh* const , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); //@} /** * Returns an instance of the base datatype validator class * Used by the DatatypeValidatorFactory. */ virtual DatatypeValidator* newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(DoubleDatatypeValidator) protected: // ----------------------------------------------------------------------- // ctor provided to be used by derived classes // ----------------------------------------------------------------------- DoubleDatatypeValidator ( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , const int finalSet , const ValidatorType type , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); // ----------------------------------------------------------------------- // Abstract interface from AbstractNumericFacetValidator // ----------------------------------------------------------------------- virtual int compareValues(const XMLNumber* const lValue , const XMLNumber* const rValue); virtual void setMaxInclusive(const XMLCh* const); virtual void setMaxExclusive(const XMLCh* const); virtual void setMinInclusive(const XMLCh* const); virtual void setMinExclusive(const XMLCh* const); virtual void setEnumeration(MemoryManager* const manager); // ----------------------------------------------------------------------- // Abstract interface from AbstractNumericValidator // ----------------------------------------------------------------------- virtual void checkContent(const XMLCh* const content , ValidationContext* const context , bool asBase , MemoryManager* const manager); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DoubleDatatypeValidator(const DoubleDatatypeValidator &); DoubleDatatypeValidator& operator = (const DoubleDatatypeValidator&); }; XERCES_CPP_NAMESPACE_END #endif /** * End of file DoubleDatatypeValidator.hpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/AbstractNumericValidator.cpp0000644000175000017500000001443010523643534026120 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: AbstractNumericValidator.cpp 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include XERCES_CPP_NAMESPACE_BEGIN #define REPORT_VALUE_ERROR(val1, val2, except_code, manager) \ ThrowXMLwithMemMgr2(InvalidDatatypeValueException \ , except_code \ , val1->getFormattedString() \ , val2->getFormattedString() \ , manager); // --------------------------------------------------------------------------- // Constructors and Destructor // --------------------------------------------------------------------------- AbstractNumericValidator::~AbstractNumericValidator() {} AbstractNumericValidator::AbstractNumericValidator( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , const int finalSet , const ValidatorType type , MemoryManager* const manager) :AbstractNumericFacetValidator(baseValidator, facets, finalSet, type, manager) { //do not invoke init() here !!! } void AbstractNumericValidator::validate(const XMLCh* const content , ValidationContext* const context , MemoryManager* const manager) { checkContent(content, context, false, manager); } void AbstractNumericValidator::boundsCheck(const XMLNumber* const theData , MemoryManager* const manager) { int thisFacetsDefined = getFacetsDefined(); int result; if (thisFacetsDefined == 0) return; // must be < MaxExclusive if ( (thisFacetsDefined & DatatypeValidator::FACET_MAXEXCLUSIVE) != 0 ) { result = compareValues(theData, getMaxExclusive()); if ( result != -1) { REPORT_VALUE_ERROR(theData , getMaxExclusive() , XMLExcepts::VALUE_exceed_maxExcl , manager) } } // must be <= MaxInclusive if ( (thisFacetsDefined & DatatypeValidator::FACET_MAXINCLUSIVE) != 0 ) { result = compareValues(theData, getMaxInclusive()); if (result == 1) { REPORT_VALUE_ERROR(theData , getMaxInclusive() , XMLExcepts::VALUE_exceed_maxIncl , manager) } } // must be >= MinInclusive if ( (thisFacetsDefined & DatatypeValidator::FACET_MININCLUSIVE) != 0 ) { result = compareValues(theData, getMinInclusive()); if (result == -1) { REPORT_VALUE_ERROR(theData , getMinInclusive() , XMLExcepts::VALUE_exceed_minIncl , manager) } } // must be > MinExclusive if ( (thisFacetsDefined & DatatypeValidator::FACET_MINEXCLUSIVE) != 0 ) { result = compareValues(theData, getMinExclusive()); if (result != 1) { REPORT_VALUE_ERROR(theData , getMinExclusive() , XMLExcepts::VALUE_exceed_minExcl , manager) } } } const XMLCh* AbstractNumericValidator::getCanonicalRepresentation(const XMLCh* const rawData , MemoryManager* const memMgr , bool toValidate) const { MemoryManager* toUse = memMgr? memMgr : fMemoryManager; if (toValidate) { AbstractNumericValidator* temp = (AbstractNumericValidator*) this; try { temp->checkContent(rawData, 0, false, toUse); } catch (...) { return 0; } } // XMLAbstractDoubleFloat::getCanonicalRepresentation handles // exceptional cases return XMLAbstractDoubleFloat::getCanonicalRepresentation(rawData, toUse); } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_NOCREATE(AbstractNumericValidator) void AbstractNumericValidator::serialize(XSerializeEngine& serEng) { AbstractNumericFacetValidator::serialize(serEng); /*** * Need not to do anything else here * * Note: its derivatives, Doubledv, Floatdv and Decimaldv writes * number type info into the binary data stream to be read * by AbstractNumericFacetVaildator during loading, therefore * this class can NOT write/read anything into/from the binary * data stream. * * Later on, if this class has to write/read something into/from * the binary data stream, we need to add a numberType data * to XMLNumber and let AbstractNumericFacetValidator to write/read * this number type info. ***/ } XERCES_CPP_NAMESPACE_END /** * End of file AbstractNumericValidator::cpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/BooleanDatatypeValidator.cpp0000644000175000017500000001611410523643534026106 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: BooleanDatatypeValidator.cpp 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Constructors and Destructor // --------------------------------------------------------------------------- BooleanDatatypeValidator::BooleanDatatypeValidator( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager) :DatatypeValidator(baseValidator, facets, finalSet, DatatypeValidator::Boolean, manager) { // Set Facets if any defined if ( facets ) { // Boolean shall NOT have enumeration if (enums) { delete enums; ThrowXMLwithMemMgr1(InvalidDatatypeFacetException , XMLExcepts::FACET_Invalid_Tag , "enumeration" , manager); } XMLCh* key; XMLCh* value; RefHashTableOfEnumerator e(facets, false, manager); while (e.hasMoreElements()) { KVStringPair pair = e.nextElement(); key = pair.getKey(); value = pair.getValue(); if (XMLString::equals(key, SchemaSymbols::fgELT_PATTERN)) { setPattern(value); setFacetsDefined(DatatypeValidator::FACET_PATTERN); } else { ThrowXMLwithMemMgr1(InvalidDatatypeFacetException , XMLExcepts::FACET_Invalid_Tag , key , manager); } } }// End of facet setting } void BooleanDatatypeValidator::checkContent( const XMLCh* const content , ValidationContext* const context , bool asBase , MemoryManager* const manager) { //validate against base validator if any BooleanDatatypeValidator *pBaseValidator = (BooleanDatatypeValidator*) this->getBaseValidator(); if (pBaseValidator !=0) pBaseValidator->checkContent(content, context, true, manager); // we check pattern first if ( (getFacetsDefined() & DatatypeValidator::FACET_PATTERN ) != 0 ) { if (getRegex()->matches(content, manager) ==false) { ThrowXMLwithMemMgr2(InvalidDatatypeValueException , XMLExcepts::VALUE_NotMatch_Pattern , content , getPattern() , manager); } } // if this is a base validator, we only need to check pattern facet // all other facet were inherited by the derived type if (asBase) return; unsigned int i = 0; for ( ; i < XMLUni::fgBooleanValueSpaceArraySize; i++ ) { if ( XMLString::equals(content, XMLUni::fgBooleanValueSpace[i])) break; } if (i == XMLUni::fgBooleanValueSpaceArraySize) ThrowXMLwithMemMgr2(InvalidDatatypeValueException , XMLExcepts::VALUE_Invalid_Name , content , SchemaSymbols::fgDT_BOOLEAN , manager); //Not valid boolean type } int BooleanDatatypeValidator::compare(const XMLCh* const lValue , const XMLCh* const rValue , MemoryManager* const) { // need to check by bool semantics // 1 == true // 0 == false if (XMLString::equals(lValue, XMLUni::fgBooleanValueSpace[0])|| XMLString::equals(lValue, XMLUni::fgBooleanValueSpace[2])) { if (XMLString::equals(rValue, XMLUni::fgBooleanValueSpace[0]) || XMLString::equals(rValue, XMLUni::fgBooleanValueSpace[2])) return 0; } else if (XMLString::equals(lValue, XMLUni::fgBooleanValueSpace[1]) || XMLString::equals(lValue, XMLUni::fgBooleanValueSpace[3])) { if (XMLString::equals(rValue, XMLUni::fgBooleanValueSpace[1]) || XMLString::equals(rValue, XMLUni::fgBooleanValueSpace[3])) return 0; } return 1; } const RefArrayVectorOf* BooleanDatatypeValidator::getEnumString() const { return 0; } /*** * 3.2.2.2 Canonical representation * * The canonical representation for boolean is the set of literals {true, false}. ***/ const XMLCh* BooleanDatatypeValidator::getCanonicalRepresentation(const XMLCh* const rawData , MemoryManager* const memMgr , bool toValidate) const { MemoryManager* toUse = memMgr? memMgr : getMemoryManager(); if (toValidate) { BooleanDatatypeValidator *temp = (BooleanDatatypeValidator*) this; try { temp->checkContent(rawData, 0, false, toUse); } catch (...) { return 0; } } return ( XMLString::equals(rawData, XMLUni::fgBooleanValueSpace[0]) || XMLString::equals(rawData, XMLUni::fgBooleanValueSpace[2]) ) ? XMLString::replicate(XMLUni::fgBooleanValueSpace[0], toUse) : XMLString::replicate(XMLUni::fgBooleanValueSpace[1], toUse) ; } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(BooleanDatatypeValidator) void BooleanDatatypeValidator::serialize(XSerializeEngine& serEng) { DatatypeValidator::serialize(serEng); } XERCES_CPP_NAMESPACE_END /** * End of file BooleanDatatypeValidator.cpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/AbstractStringValidator.cpp0000644000175000017500000006252511276506011025766 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: AbstractStringValidator.cpp 834826 2009-11-11 10:03:53Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN static const int BUF_LEN = 64; #define REPORT_FACET_ERROR(val1, val2, except_code, manager) \ XMLCh value1[BUF_LEN+1]; \ XMLCh value2[BUF_LEN+1]; \ XMLString::sizeToText(val1, value1, BUF_LEN, 10, manager); \ XMLString::sizeToText(val2, value2, BUF_LEN, 10, manager); \ ThrowXMLwithMemMgr2(InvalidDatatypeFacetException \ , except_code \ , value1 \ , value2 \ , manager); #define REPORT_VALUE_ERROR(data, val1, val2, except_code, manager) \ XMLCh value1[BUF_LEN+1]; \ XMLCh value2[BUF_LEN+1]; \ XMLString::sizeToText(val1, value1, BUF_LEN, 10, manager); \ XMLString::sizeToText(val2, value2, BUF_LEN, 10, manager); \ ThrowXMLwithMemMgr3(InvalidDatatypeValueException \ , except_code \ , data \ , value1 \ , value2 \ , manager); // --------------------------------------------------------------------------- // Constructors and Destructor // --------------------------------------------------------------------------- AbstractStringValidator::~AbstractStringValidator() { //~RefVectorOf will delete all adopted elements if ( !fEnumerationInherited && fEnumeration) { delete fEnumeration; fEnumeration = 0; } } AbstractStringValidator::AbstractStringValidator( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , const int finalSet , const ValidatorType type , MemoryManager* const manager) :DatatypeValidator(baseValidator, facets, finalSet, type, manager) ,fLength(0) ,fMaxLength(SchemaSymbols::fgINT_MAX_VALUE) ,fMinLength(0) ,fEnumerationInherited(false) ,fEnumeration(0) { // init() is invoked from derived class's ctor instead of from // here to allow correct resolution of virutal method, such as // assigneAdditionalFacet(), inheritAdditionalFacet(). } void AbstractStringValidator::init(RefArrayVectorOf* const enums ,MemoryManager* const manager) { if (enums) { setEnumeration(enums, false); normalizeEnumeration(manager); } assignFacet(manager); inspectFacet(manager); inspectFacetBase(manager); inheritFacet(); } // // Assign facets // assign common facets // assign additional facet // void AbstractStringValidator::assignFacet(MemoryManager* const manager) { RefHashTableOf* facets = getFacets(); if (!facets) return; XMLCh* key; RefHashTableOfEnumerator e(facets, false, manager); while (e.hasMoreElements()) { KVStringPair pair = e.nextElement(); key = pair.getKey(); XMLCh* value = pair.getValue(); if (XMLString::equals(key, SchemaSymbols::fgELT_LENGTH)) { int val; try { val = XMLString::parseInt(value, manager); } catch (NumberFormatException&) { ThrowXMLwithMemMgr1(InvalidDatatypeFacetException, XMLExcepts::FACET_Invalid_Len, value, manager); } if ( val < 0 ) ThrowXMLwithMemMgr1(InvalidDatatypeFacetException, XMLExcepts::FACET_NonNeg_Len, value, manager); setLength(val); setFacetsDefined(DatatypeValidator::FACET_LENGTH); } else if (XMLString::equals(key, SchemaSymbols::fgELT_MINLENGTH)) { int val; try { val = XMLString::parseInt(value, manager); } catch (NumberFormatException&) { ThrowXMLwithMemMgr1(InvalidDatatypeFacetException, XMLExcepts::FACET_Invalid_minLen, value, manager); } if ( val < 0 ) ThrowXMLwithMemMgr1(InvalidDatatypeFacetException, XMLExcepts::FACET_NonNeg_minLen, value, manager); setMinLength(val); setFacetsDefined(DatatypeValidator::FACET_MINLENGTH); } else if (XMLString::equals(key, SchemaSymbols::fgELT_MAXLENGTH)) { int val; try { val = XMLString::parseInt(value, manager); } catch (NumberFormatException&) { ThrowXMLwithMemMgr1(InvalidDatatypeFacetException, XMLExcepts::FACET_Invalid_maxLen, value, manager); } if ( val < 0 ) ThrowXMLwithMemMgr1(InvalidDatatypeFacetException, XMLExcepts::FACET_NonNeg_maxLen, value, manager); setMaxLength(val); setFacetsDefined(DatatypeValidator::FACET_MAXLENGTH); } else if (XMLString::equals(key, SchemaSymbols::fgELT_PATTERN)) { setPattern(value); if (getPattern()) setFacetsDefined(DatatypeValidator::FACET_PATTERN); // do not construct regex until needed } else if (XMLString::equals(key, SchemaSymbols::fgATT_FIXED)) { unsigned int val; bool retStatus; try { retStatus = XMLString::textToBin(value, val, fMemoryManager); } catch (RuntimeException&) { ThrowXMLwithMemMgr(InvalidDatatypeFacetException, XMLExcepts::FACET_internalError_fixed, manager); } if (!retStatus) { ThrowXMLwithMemMgr(InvalidDatatypeFacetException, XMLExcepts::FACET_internalError_fixed, manager); } setFixed(val); //no setFacetsDefined here } // // else if (XMLString::equals(key, SchemaSymbols::fgELT_SPECIAL_TOKEN)) // TODO // // Note: whitespace is taken care of by TraverseSchema. // else { assignAdditionalFacet(key, value, manager); } }//while }//end of assigneFacet() // // Check facet among self // check common facets // check Additional Facet Constraint // void AbstractStringValidator::inspectFacet(MemoryManager* const manager) { int thisFacetsDefined = getFacetsDefined(); if (!thisFacetsDefined) return; // check 4.3.1.c1 error: length & (maxLength | minLength) if ((thisFacetsDefined & DatatypeValidator::FACET_LENGTH) != 0) { if ((thisFacetsDefined & DatatypeValidator::FACET_MAXLENGTH) != 0) ThrowXMLwithMemMgr(InvalidDatatypeFacetException, XMLExcepts::FACET_Len_maxLen, manager); else if (((thisFacetsDefined & DatatypeValidator::FACET_MINLENGTH) != 0)) ThrowXMLwithMemMgr(InvalidDatatypeFacetException, XMLExcepts::FACET_Len_minLen, manager); } // check 4.3.2.c1 must: minLength <= maxLength if ((thisFacetsDefined & (DatatypeValidator::FACET_MINLENGTH |DatatypeValidator::FACET_MAXLENGTH)) != 0) { XMLSize_t thisMinLength = getMinLength(); XMLSize_t thisMaxLength = getMaxLength(); if ( thisMinLength > thisMaxLength ) { REPORT_FACET_ERROR(thisMaxLength , thisMinLength , XMLExcepts::FACET_maxLen_minLen , manager) } } }// end of inspectFacet() // // Check vs base // check common facets // check enumeration // check Additional Facet Constraint // void AbstractStringValidator::inspectFacetBase(MemoryManager* const manager) { AbstractStringValidator *pBaseValidator = (AbstractStringValidator*) getBaseValidator(); int thisFacetsDefined = getFacetsDefined(); if ( (!thisFacetsDefined && !fEnumeration) || (!pBaseValidator) ) return; int baseFacetsDefined = pBaseValidator->getFacetsDefined(); XMLSize_t thisLength = getLength(); XMLSize_t thisMinLength = getMinLength(); XMLSize_t thisMaxLength = getMaxLength(); XMLSize_t baseLength = pBaseValidator->getLength(); XMLSize_t baseMinLength = pBaseValidator->getMinLength(); XMLSize_t baseMaxLength = pBaseValidator->getMaxLength(); int baseFixed = pBaseValidator->getFixed(); /*** check facets against base.facets Note: later we need to check the "fix" option of the base type and apply that to every individual facet. ***/ /*** Non coexistence of derived' length and base' (minLength | maxLength) base' length and derived' (minLength | maxLength) E2-35 It is an error for both length and either of minLength or maxLength to be members of {facets}, unless they are specified in different derivation steps in which case the following must be true: the {value} of minLength <= the {value} of length <= the {value} of maxLength ***/ // error: length > base.maxLength // length < base.minLength if ((thisFacetsDefined & DatatypeValidator::FACET_LENGTH) !=0) { if (((baseFacetsDefined & DatatypeValidator::FACET_MAXLENGTH) !=0) && (thisLength > baseMaxLength) ) { REPORT_FACET_ERROR(thisLength , baseMaxLength , XMLExcepts::FACET_Len_baseMaxLen , manager) } if (((baseFacetsDefined & DatatypeValidator::FACET_MINLENGTH) !=0) && (thisLength < baseMinLength) ) { REPORT_FACET_ERROR(thisLength , baseMinLength , XMLExcepts::FACET_Len_baseMinLen , manager) } } // error: baseLength > maxLength // baseLength < minLength if ((baseFacetsDefined & DatatypeValidator::FACET_LENGTH) !=0) { if (((thisFacetsDefined & DatatypeValidator::FACET_MAXLENGTH) !=0) && (baseLength > thisMaxLength) ) { REPORT_FACET_ERROR(thisMaxLength , baseLength , XMLExcepts::FACET_maxLen_baseLen , manager) } if (((thisFacetsDefined & DatatypeValidator::FACET_MINLENGTH) !=0) && (baseLength < thisMinLength) ) { REPORT_FACET_ERROR(thisMinLength , baseLength , XMLExcepts::FACET_minLen_baseLen , manager) } } // check 4.3.1.c2 error: length != base.length if (((thisFacetsDefined & DatatypeValidator::FACET_LENGTH) !=0) && ((baseFacetsDefined & DatatypeValidator::FACET_LENGTH) !=0)) { if ( thisLength != baseLength ) { REPORT_FACET_ERROR(thisLength , baseLength , XMLExcepts::FACET_Len_baseLen , manager) } } /*** |--- derived ---| base.minLength <= minLength <= maxLength <= base.maxLength |------------------- base -------------------| ***/ // check 4.3.2.c1 must: minLength <= base.maxLength if (((thisFacetsDefined & DatatypeValidator::FACET_MINLENGTH ) != 0) && ((baseFacetsDefined & DatatypeValidator::FACET_MAXLENGTH ) != 0)) { if ( thisMinLength > baseMaxLength ) { REPORT_FACET_ERROR(thisMinLength , baseMaxLength , XMLExcepts::FACET_minLen_basemaxLen , manager) } } // check 4.3.2.c2 error: minLength < base.minLength if (((thisFacetsDefined & DatatypeValidator::FACET_MINLENGTH) !=0) && ((baseFacetsDefined & DatatypeValidator::FACET_MINLENGTH) != 0)) { if ((baseFixed & DatatypeValidator::FACET_MINLENGTH) !=0) { if ( thisMinLength != baseMinLength ) { REPORT_FACET_ERROR(thisMinLength , baseMinLength , XMLExcepts::FACET_minLen_base_fixed , manager) } } else { if ( thisMinLength < baseMinLength ) { REPORT_FACET_ERROR(thisMinLength , baseMinLength , XMLExcepts::FACET_minLen_baseminLen , manager) } } } // check 4.3.2.c1 must: base.minLength <= maxLength if (((baseFacetsDefined & DatatypeValidator::FACET_MINLENGTH) !=0) && ((thisFacetsDefined & DatatypeValidator::FACET_MAXLENGTH) !=0)) { if ( baseMinLength > thisMaxLength ) { REPORT_FACET_ERROR(thisMaxLength , baseMinLength , XMLExcepts::FACET_maxLen_baseminLen , manager) } } // check 4.3.3.c1 error: maxLength > base.maxLength if (((thisFacetsDefined & DatatypeValidator::FACET_MAXLENGTH) !=0) && ((baseFacetsDefined & DatatypeValidator::FACET_MAXLENGTH) !=0)) { if ((baseFixed & DatatypeValidator::FACET_MAXLENGTH) !=0) { if ( thisMaxLength != baseMaxLength ) { REPORT_FACET_ERROR(thisMaxLength , baseMaxLength , XMLExcepts::FACET_maxLen_base_fixed , manager) } } else { if ( thisMaxLength > baseMaxLength ) { REPORT_FACET_ERROR(thisMaxLength , baseMaxLength , XMLExcepts::FACET_maxLen_basemaxLen , manager) } } } // check 4.3.5.c0 must: enumeration values from the value space of base if ( ((thisFacetsDefined & DatatypeValidator::FACET_ENUMERATION) != 0) && (getEnumeration() !=0)) { XMLSize_t i = 0; XMLSize_t enumLength = getEnumeration()->size(); for ( ; i < enumLength; i++) { // ask parent do a complete check pBaseValidator->checkContent(getEnumeration()->elementAt(i), (ValidationContext*)0, false, manager); #if 0 // spec says that only base has to checkContent // enum shall pass this->checkContent() as well. checkContent(getEnumeration()->elementAt(i), (ValidationContext*)0, false, manager); #endif } } checkAdditionalFacetConstraints(manager); } //end of inspectFacetBase // // Inherit facet from base // a. inherit common facets // b. inherit additional facet // void AbstractStringValidator::inheritFacet() { /*** P3. Inherit facets from base.facets The reason of this inheriting (or copying values) is to ease schema constraint checking, so that we need NOT trace back to our very first base validator in the hierachy. Instead, we are pretty sure checking against immediate base validator is enough. ***/ AbstractStringValidator *pBaseValidator = (AbstractStringValidator*) getBaseValidator(); if (!pBaseValidator) return; int thisFacetsDefined = getFacetsDefined(); int baseFacetsDefined = pBaseValidator->getFacetsDefined(); // inherit length if (((baseFacetsDefined & DatatypeValidator::FACET_LENGTH) != 0) && ((thisFacetsDefined & DatatypeValidator::FACET_LENGTH) == 0)) { setLength(pBaseValidator->getLength()); setFacetsDefined(DatatypeValidator::FACET_LENGTH); } // inherit minLength if (((baseFacetsDefined & DatatypeValidator::FACET_MINLENGTH) !=0) && ((thisFacetsDefined & DatatypeValidator::FACET_MINLENGTH) == 0)) { setMinLength(pBaseValidator->getMinLength()); setFacetsDefined(DatatypeValidator::FACET_MINLENGTH); } // inherit maxLength if (((baseFacetsDefined & DatatypeValidator::FACET_MAXLENGTH) !=0) && ((thisFacetsDefined & DatatypeValidator::FACET_MAXLENGTH) == 0)) { setMaxLength(pBaseValidator->getMaxLength()); setFacetsDefined(DatatypeValidator::FACET_MAXLENGTH); } // inherit enumeration if (((baseFacetsDefined & DatatypeValidator::FACET_ENUMERATION) !=0) && ((thisFacetsDefined & DatatypeValidator::FACET_ENUMERATION) == 0)) { setEnumeration(pBaseValidator->getEnumeration(), true); } // we don't inherit pattern // inherit "fixed" option setFixed(getFixed() | pBaseValidator->getFixed()); // inherit additional facet inheritAdditionalFacet(); } // end of inheritance // ----------------------------------------------------------------------- // Compare methods // ----------------------------------------------------------------------- int AbstractStringValidator::compare(const XMLCh* const lValue , const XMLCh* const rValue , MemoryManager* const) { return XMLString::compareString(lValue, rValue); } void AbstractStringValidator::validate( const XMLCh* const content , ValidationContext* const context , MemoryManager* const manager) { checkContent(content, context, false, manager); } void AbstractStringValidator::checkContent( const XMLCh* const content , ValidationContext* const context , bool asBase , MemoryManager* const manager ) { //validate against base validator if any AbstractStringValidator *pBaseValidator = (AbstractStringValidator*) this->getBaseValidator(); if (pBaseValidator) pBaseValidator->checkContent(content, context, true, manager); int thisFacetsDefined = getFacetsDefined(); // we check pattern first if ( (thisFacetsDefined & DatatypeValidator::FACET_PATTERN ) != 0 ) { if (getRegex()->matches(content, manager) ==false) { ThrowXMLwithMemMgr2(InvalidDatatypeValueException , XMLExcepts::VALUE_NotMatch_Pattern , content , getPattern() , manager); } } // if this is a base validator, we only need to check pattern facet // all other facet were inherited by the derived type if (asBase) return; checkValueSpace(content, manager); XMLSize_t length = getLength(content, manager); if (((thisFacetsDefined & DatatypeValidator::FACET_MAXLENGTH) != 0) && (length > getMaxLength())) { REPORT_VALUE_ERROR(content , length , getMaxLength() , XMLExcepts::VALUE_GT_maxLen , manager) } if (((thisFacetsDefined & DatatypeValidator::FACET_MINLENGTH) != 0) && (length < getMinLength())) { REPORT_VALUE_ERROR(content , length , getMinLength() , XMLExcepts::VALUE_LT_minLen , manager) } if (((thisFacetsDefined & DatatypeValidator::FACET_LENGTH) != 0) && (length != getLength())) { REPORT_VALUE_ERROR(content , length , getLength() , XMLExcepts::VALUE_NE_Len , manager) } if ((thisFacetsDefined & DatatypeValidator::FACET_ENUMERATION) != 0 && (getEnumeration() != 0)) { XMLCh* normContent = XMLString::replicate(content, manager); ArrayJanitor jan(normContent, manager); normalizeContent(normContent, manager); XMLSize_t i=0; XMLSize_t enumLength = getEnumeration()->size(); for ( ; i < enumLength; i++) { if (XMLString::equals(normContent, getEnumeration()->elementAt(i))) break; } if (i == enumLength) ThrowXMLwithMemMgr1(InvalidDatatypeValueException, XMLExcepts::VALUE_NotIn_Enumeration, content, manager); } checkAdditionalFacet(content, manager); } const RefArrayVectorOf* AbstractStringValidator::getEnumString() const { return getEnumeration(); } void AbstractStringValidator::normalizeEnumeration(MemoryManager* const manager) { AbstractStringValidator *pBaseValidator = (AbstractStringValidator*) getBaseValidator(); if (!fEnumeration || !pBaseValidator) return; int baseFacetsDefined = pBaseValidator->getFacetsDefined(); if ((baseFacetsDefined & DatatypeValidator::FACET_WHITESPACE) == 0) return; short whiteSpace = pBaseValidator->getWSFacet(); if ( whiteSpace == DatatypeValidator::PRESERVE ) { return; } else if ( whiteSpace == DatatypeValidator::REPLACE ) { XMLSize_t enumLength = getEnumeration()->size(); for ( XMLSize_t i=0; i < enumLength; i++) { XMLString::replaceWS(getEnumeration()->elementAt(i), manager); } } else if ( whiteSpace == DatatypeValidator::COLLAPSE ) { XMLSize_t enumLength = getEnumeration()->size(); for ( XMLSize_t i=0; i < enumLength; i++) { XMLString::collapseWS(getEnumeration()->elementAt(i), manager); } } } void AbstractStringValidator::normalizeContent(XMLCh* const, MemoryManager* const) const { // default implementation: do nothing return; } void AbstractStringValidator::checkAdditionalFacetConstraints(MemoryManager* const) const { return; } void AbstractStringValidator::checkAdditionalFacet(const XMLCh* const , MemoryManager* const) const { return; } void AbstractStringValidator::inheritAdditionalFacet() { return; } void AbstractStringValidator::assignAdditionalFacet( const XMLCh* const key , const XMLCh* const , MemoryManager* const manager) { ThrowXMLwithMemMgr1(InvalidDatatypeFacetException , XMLExcepts::FACET_Invalid_Tag , key , manager); } XMLSize_t AbstractStringValidator::getLength(const XMLCh* const content , MemoryManager* const) const { return XMLString::stringLen(content); } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_NOCREATE(AbstractStringValidator) void AbstractStringValidator::serialize(XSerializeEngine& serEng) { DatatypeValidator::serialize(serEng); if (serEng.isStoring()) { serEng.writeSize (fLength); serEng.writeSize (fMaxLength); serEng.writeSize (fMinLength); serEng< * ***/ XTemplateSerializer::storeObject(fEnumeration, serEng); } else { serEng.readSize (fLength); serEng.readSize (fMaxLength); serEng.readSize (fMinLength); serEng>>fEnumerationInherited; /*** * * Deserialize RefArrayVectorOf * ***/ XTemplateSerializer::loadObject(&fEnumeration, 8, true, serEng); } } XERCES_CPP_NAMESPACE_END /** * End of file AbstractStringValidator.cpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/UnionDatatypeValidator.hpp0000644000175000017500000002354311037122704025620 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: UnionDatatypeValidator.hpp 676911 2008-07-15 13:27:32Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_UNION_DATATYPEVALIDATOR_HPP) #define XERCESC_INCLUDE_GUARD_UNION_DATATYPEVALIDATOR_HPP #include XERCES_CPP_NAMESPACE_BEGIN class VALIDATORS_EXPORT UnionDatatypeValidator : public DatatypeValidator { public: // ----------------------------------------------------------------------- // Public ctor/dtor // ----------------------------------------------------------------------- /** @name Constructors and Destructor. */ //@{ UnionDatatypeValidator ( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); // // constructor for native Union datatype validator // // // // UnionDatatypeValidator ( RefVectorOf* const memberTypeValidators , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); // // constructor for derived Union datatype validator // // // // // // // UnionDatatypeValidator ( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager , RefVectorOf* const memberTypeValidators = 0 , const bool memberTypesInherited = true ); virtual ~UnionDatatypeValidator(); //@} virtual const RefArrayVectorOf* getEnumString() const; // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- /** @name Getter Functions */ //@{ /** * Returns whether the type is atomic or not */ virtual bool isAtomic() const; virtual const XMLCh* getCanonicalRepresentation ( const XMLCh* const rawData , MemoryManager* const memMgr = 0 , bool toValidate = false ) const; //@} // ----------------------------------------------------------------------- // Validation methods // ----------------------------------------------------------------------- /** @name Validation Function */ //@{ /** * validate that a string matches the boolean datatype * @param content A string containing the content to be validated * * @exception throws InvalidDatatypeException if the content is * is not valid. */ virtual void validate ( const XMLCh* const content , ValidationContext* const context = 0 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /** * Checks whether a given type can be used as a substitute * * @param toCheck A datatype validator of the type to be used as a * substitute * * To be redefined in UnionDatatypeValidator */ virtual bool isSubstitutableBy(const DatatypeValidator* const toCheck); //@} // ----------------------------------------------------------------------- // Compare methods // ----------------------------------------------------------------------- /** @name Compare Function */ //@{ /** * Compare two boolean data types * * @param content1 * @param content2 * @return */ int compare(const XMLCh* const, const XMLCh* const , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); //@} /** * Returns an instance of the base datatype validator class * Used by the DatatypeValidatorFactory. */ virtual DatatypeValidator* newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(UnionDatatypeValidator) RefVectorOf* getMemberTypeValidators() const; private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- UnionDatatypeValidator(const UnionDatatypeValidator&); UnionDatatypeValidator& operator=(const UnionDatatypeValidator&); virtual void checkContent(const XMLCh* const content , ValidationContext* const context , bool asBase , MemoryManager* const manager); void init(DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , MemoryManager* const manager); void cleanUp(); RefArrayVectorOf* getEnumeration() const; void setEnumeration(RefArrayVectorOf*, bool); // ----------------------------------------------------------------------- // Private data members // // fEnumeration // we own it (or not, depending on state of fEnumerationInherited). // // fMemberTypeValidators // we own it (or not, depending on the state of fMemberTypesInherited). // // ----------------------------------------------------------------------- bool fEnumerationInherited; bool fMemberTypesInherited; RefArrayVectorOf* fEnumeration; RefVectorOf* fMemberTypeValidators; }; inline DatatypeValidator* UnionDatatypeValidator::newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager ) { return (DatatypeValidator*) new (manager) UnionDatatypeValidator(this, facets, enums, finalSet, manager, fMemberTypeValidators, true); } inline void UnionDatatypeValidator::validate( const XMLCh* const content , ValidationContext* const context , MemoryManager* const manager) { checkContent(content, context, false, manager); } inline void UnionDatatypeValidator::cleanUp() { //~RefVectorOf will delete all adopted elements if ( !fEnumerationInherited && fEnumeration) delete fEnumeration; if (!fMemberTypesInherited && fMemberTypeValidators) delete fMemberTypeValidators; } inline RefArrayVectorOf* UnionDatatypeValidator:: getEnumeration() const { return fEnumeration; } inline void UnionDatatypeValidator::setEnumeration(RefArrayVectorOf* enums , bool inherited) { if (enums) { if ( !fEnumerationInherited && fEnumeration) delete fEnumeration; fEnumeration = enums; fEnumerationInherited = inherited; setFacetsDefined(DatatypeValidator::FACET_ENUMERATION); } } // // get the native UnionDTV's fMemberTypeValidators // inline RefVectorOf* UnionDatatypeValidator::getMemberTypeValidators() const { return this->fMemberTypeValidators; } inline bool UnionDatatypeValidator::isAtomic() const { if (!fMemberTypeValidators) { return false; } XMLSize_t memberSize = fMemberTypeValidators->size(); for (XMLSize_t i=0; i < memberSize; i++) { if (!fMemberTypeValidators->elementAt(i)->isAtomic()) { return false; } } return true; } inline bool UnionDatatypeValidator::isSubstitutableBy(const DatatypeValidator* const toCheck) { if (toCheck == this) { return true; } if (fMemberTypeValidators) { XMLSize_t memberSize = fMemberTypeValidators->size(); for (XMLSize_t i=0; i < memberSize; i++) { if ((fMemberTypeValidators->elementAt(i)->getType() == DatatypeValidator::Union) && (fMemberTypeValidators->elementAt(i) == toCheck)) return false; if (fMemberTypeValidators->elementAt(i)->isSubstitutableBy(toCheck)) { return true; } } } return false; } XERCES_CPP_NAMESPACE_END #endif /** * End of file UnionDatatypeValidator.hpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/QNameDatatypeValidator.cpp0000644000175000017500000002265511037122704025527 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: QNameDatatypeValidator.cpp 676911 2008-07-15 13:27:32Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Constructors and Destructor // --------------------------------------------------------------------------- QNameDatatypeValidator::QNameDatatypeValidator(MemoryManager* const manager) :AbstractStringValidator(0, 0, 0, DatatypeValidator::QName, manager) {} QNameDatatypeValidator::~QNameDatatypeValidator() {} QNameDatatypeValidator::QNameDatatypeValidator( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager) :AbstractStringValidator(baseValidator, facets, finalSet, DatatypeValidator::QName, manager) { init(enums, manager); } DatatypeValidator* QNameDatatypeValidator::newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager ) { return (DatatypeValidator*) new (manager) QNameDatatypeValidator(this, facets, enums, finalSet, manager); } // --------------------------------------------------------------------------- // Utilities // --------------------------------------------------------------------------- void QNameDatatypeValidator::checkValueSpace(const XMLCh* const content , MemoryManager* const manager) { // // check 3.2.18.c0 must: QName // if ( !XMLChar1_0::isValidQName(content, XMLString::stringLen(content)) ) { ThrowXMLwithMemMgr1(InvalidDatatypeValueException , XMLExcepts::VALUE_QName_Invalid , content , manager); } } void QNameDatatypeValidator::checkContent( const XMLCh* const content , ValidationContext* const context , bool asBase , MemoryManager* const manager ) { //validate against base validator if any QNameDatatypeValidator *pBaseValidator = (QNameDatatypeValidator*) this->getBaseValidator(); if (pBaseValidator) pBaseValidator->checkContent(content, context, true, manager); int thisFacetsDefined = getFacetsDefined(); // we check pattern first if ( (thisFacetsDefined & DatatypeValidator::FACET_PATTERN ) != 0 ) { if (getRegex()->matches(content, manager) ==false) { ThrowXMLwithMemMgr2(InvalidDatatypeValueException , XMLExcepts::VALUE_NotMatch_Pattern , content , getPattern() , manager); } } // if this is a base validator, we only need to check pattern facet // all other facet were inherited by the derived type if (asBase) return; checkValueSpace(content, manager); int colonPos = 0; XMLCh* prefix = 0; ArrayJanitor jan(prefix, manager); if (context) { prefix = XMLString::replicate(content, manager); jan.reset(prefix, manager); normalizeContent(prefix, manager); colonPos = XMLString::indexOf(content, chColon); if (colonPos > 0) { prefix[colonPos] = chNull; if (context->isPrefixUnknown(prefix)) { ThrowXMLwithMemMgr1(InvalidDatatypeValueException , XMLExcepts::VALUE_QName_Invalid2 , content , manager); } } } #if 0 if ((thisFacetsDefined & DatatypeValidator::FACET_ENUMERATION) != 0 && (getEnumeration() != 0)) { XMLCh* normContent = XMLString::replicate(content, manager); ArrayJanitor jan(normContent, manager); normalizeContent(normContent, manager); int i=0; int enumLength = getEnumeration()->size(); for ( ; i < enumLength; i++) { if (XMLString::equals(normContent, getEnumeration()->elementAt(i))) break; } if (i == enumLength) ThrowXMLwithMemMgr1(InvalidDatatypeValueException, XMLExcepts::VALUE_NotIn_Enumeration, content, manager); } #else if ((thisFacetsDefined & DatatypeValidator::FACET_ENUMERATION) != 0 && (getEnumeration() != 0) && context) { XMLCh* localName; if (colonPos > 0) { localName = prefix + colonPos + 1; } else { localName = prefix; } XMLCh* enumPrefix; XMLCh* enumLocalName; XMLSize_t i=0; XMLSize_t enumLength = getEnumeration()->size(); bool foundURIId = false; const XMLCh* normURI = 0; // The +=2 is because the enumeration has prefix:localname as one entry followed // by the URI string for the prefix as the next entry. for ( ; i < enumLength; i+=2) { enumPrefix = XMLString::replicate(getEnumeration()->elementAt(i), manager); ArrayJanitor janEnum(enumPrefix, manager); colonPos = XMLString::indexOf(enumPrefix, chColon, 0, manager); if (colonPos != -1) { enumLocalName = enumPrefix + colonPos + 1; enumPrefix[colonPos] = chNull; } else { enumLocalName = enumPrefix; } if (XMLString::equals(localName, enumLocalName)) { if (colonPos < 0) break; // now need to see if the prefix URI's are the same if (!foundURIId) { normURI = context->getURIForPrefix(prefix); foundURIId = true; } if (XMLString::equals(normURI, getEnumeration()->elementAt(i+1))) break; } } if (i == enumLength) ThrowXMLwithMemMgr1(InvalidDatatypeValueException, XMLExcepts::VALUE_NotIn_Enumeration, content, manager); } #endif checkAdditionalFacet(content, manager); } // // Check vs base // check common facets // check enumeration // check Additional Facet Constraint // void QNameDatatypeValidator::inspectFacetBase(MemoryManager* const manager) { QNameDatatypeValidator *pBaseValidator = (QNameDatatypeValidator*) getBaseValidator(); int thisFacetsDefined = getFacetsDefined(); if ( (!thisFacetsDefined && !getEnumeration()) || (!pBaseValidator) ) return; // check 4.3.5.c0 must: enumeration values from the value space of base if ( ((thisFacetsDefined & DatatypeValidator::FACET_ENUMERATION) != 0) && (getEnumeration() !=0)) { XMLSize_t i = 0; XMLSize_t enumLength = getEnumeration()->size(); // The +=2 is because the enumeration has prefix:localname as one entry followed // by the URI string for the prefix as the next entry. for ( ; i < enumLength; i+=2) { // ask parent do a complete check pBaseValidator->checkContent(getEnumeration()->elementAt(i), (ValidationContext*)0, false, manager); #if 0 // spec says that only base has to checkContent // enum shall pass this->checkContent() as well. checkContent(getEnumeration()->elementAt(i), (ValidationContext*)0, false, manager); #endif } } checkAdditionalFacetConstraints(manager); } //end of inspectFacetBase /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(QNameDatatypeValidator) void QNameDatatypeValidator::serialize(XSerializeEngine& serEng) { AbstractStringValidator::serialize(serEng); } XERCES_CPP_NAMESPACE_END /** * End of file QNameDatatypeValidator.cpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/XMLCanRepGroup.hpp0000644000175000017500000000366111360344373023742 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLCanRepGroup.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_XMLCANREPGROUP_HPP) #define XERCESC_INCLUDE_GUARD_XMLCANREPGROUP_HPP #include XERCES_CPP_NAMESPACE_BEGIN class VALIDATORS_EXPORT XMLCanRepGroup : public XMemory { public: enum CanRepGroup { Boolean, DoubleFloat, DateTime, Time, Decimal, Decimal_Derived_signed, Decimal_Derived_unsigned, Decimal_Derived_npi, String }; ~XMLCanRepGroup(); XMLCanRepGroup(CanRepGroup val); inline CanRepGroup getGroup() const; private: CanRepGroup fData; // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XMLCanRepGroup(const XMLCanRepGroup&); XMLCanRepGroup& operator=(const XMLCanRepGroup&); }; inline XMLCanRepGroup::CanRepGroup XMLCanRepGroup::getGroup() const { return fData; } XERCES_CPP_NAMESPACE_END #endif /** * End of file XMLCanRepGroup.hpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/NCNameDatatypeValidator.cpp0000644000175000017500000001120510523643534025624 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: NCNameDatatypeValidator.cpp 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Constructors and Destructor // --------------------------------------------------------------------------- NCNameDatatypeValidator::NCNameDatatypeValidator(MemoryManager* const manager) :StringDatatypeValidator(0, 0, 0, DatatypeValidator::NCName, manager) {} NCNameDatatypeValidator::~NCNameDatatypeValidator() {} NCNameDatatypeValidator::NCNameDatatypeValidator( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager) :StringDatatypeValidator(baseValidator, facets, finalSet, DatatypeValidator::NCName, manager) { init(enums, manager); } DatatypeValidator* NCNameDatatypeValidator::newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager ) { return (DatatypeValidator*) new (manager) NCNameDatatypeValidator(this, facets, enums, finalSet, manager); } NCNameDatatypeValidator::NCNameDatatypeValidator( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , const int finalSet , const ValidatorType type , MemoryManager* const manager) :StringDatatypeValidator(baseValidator, facets, finalSet, type, manager) { // do not invoke init() here!!! } // ----------------------------------------------------------------------- // Compare methods // ----------------------------------------------------------------------- int NCNameDatatypeValidator::compare(const XMLCh* const lValue , const XMLCh* const rValue , MemoryManager* const) { return ( XMLString::equals(lValue, rValue)? 0 : -1); } void NCNameDatatypeValidator::validate(const XMLCh* const content , ValidationContext* const context , MemoryManager* const manager) { // use StringDatatypeValidator (which in turn, invoke // the baseValidator) to validate content against // facets if any. // StringDatatypeValidator::validate(content, context, manager); return; } void NCNameDatatypeValidator::checkValueSpace(const XMLCh* const content , MemoryManager* const manager) { // // 3.3.7 check must: "NCName" // if ( !XMLChar1_0::isValidNCName(content, XMLString::stringLen(content)) ) { ThrowXMLwithMemMgr1(InvalidDatatypeValueException , XMLExcepts::VALUE_Invalid_NCName , content , manager); } } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(NCNameDatatypeValidator) void NCNameDatatypeValidator::serialize(XSerializeEngine& serEng) { StringDatatypeValidator::serialize(serEng); } XERCES_CPP_NAMESPACE_END /** * End of file NCNameDatatypeValidator.cpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.cpp0000644000175000017500000000641610766456265027312 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: AnySimpleTypeDatatypeValidator.cpp 637054 2008-03-14 11:08:37Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // AnySimpleTypeDatatypeValidator: Constructors and Destructor // --------------------------------------------------------------------------- AnySimpleTypeDatatypeValidator::AnySimpleTypeDatatypeValidator(MemoryManager* const manager) : DatatypeValidator(0, 0, SchemaSymbols::XSD_RESTRICTION, DatatypeValidator::AnySimpleType, manager) { setWhiteSpace(DatatypeValidator::PRESERVE); setFinite(true); } AnySimpleTypeDatatypeValidator::~AnySimpleTypeDatatypeValidator() { } // --------------------------------------------------------------------------- // DatatypeValidators: Compare methods // --------------------------------------------------------------------------- int AnySimpleTypeDatatypeValidator::compare( const XMLCh* const lValue , const XMLCh* const rValue , MemoryManager* const) { return XMLString::compareString(lValue, rValue); } // --------------------------------------------------------------------------- // AnySimpleTypeDatatypeValidator: Instance methods // --------------------------------------------------------------------------- DatatypeValidator* AnySimpleTypeDatatypeValidator::newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int , MemoryManager* const manager ) { // We own them, so we will delete them first delete facets; delete enums; ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::DV_InvalidOperation, manager); // to satisfy some compilers return 0; } const RefArrayVectorOf* AnySimpleTypeDatatypeValidator::getEnumString() const { return 0; } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(AnySimpleTypeDatatypeValidator) void AnySimpleTypeDatatypeValidator::serialize(XSerializeEngine& serEng) { DatatypeValidator::serialize(serEng); } XERCES_CPP_NAMESPACE_END /** * End of file AnySimpleTypeDatatypeValidator.cpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/NOTATIONDatatypeValidator.cpp0000644000175000017500000001274311037122704025756 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: NOTATIONDatatypeValidator.cpp 676911 2008-07-15 13:27:32Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Constructors and Destructor // --------------------------------------------------------------------------- NOTATIONDatatypeValidator::NOTATIONDatatypeValidator(MemoryManager* const manager) :AbstractStringValidator(0, 0, 0, DatatypeValidator::NOTATION, manager) {} NOTATIONDatatypeValidator::~NOTATIONDatatypeValidator() {} NOTATIONDatatypeValidator::NOTATIONDatatypeValidator( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager) :AbstractStringValidator(baseValidator, facets, finalSet, DatatypeValidator::NOTATION, manager) { init(enums, manager); } DatatypeValidator* NOTATIONDatatypeValidator::newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager ) { return (DatatypeValidator*) new (manager) NOTATIONDatatypeValidator(this, facets, enums, finalSet, manager); } // --------------------------------------------------------------------------- // Utilities // --------------------------------------------------------------------------- void NOTATIONDatatypeValidator::checkValueSpace(const XMLCh* const content , MemoryManager* const manager) { if (!XMLString::isValidNOTATION(content, manager)) { ThrowXMLwithMemMgr1(InvalidDatatypeValueException , XMLExcepts::VALUE_NOTATION_Invalid , content , manager); } } void NOTATIONDatatypeValidator::checkContent( const XMLCh* const content , ValidationContext* const context , bool asBase , MemoryManager* const manager ) { //validate against base validator if any NOTATIONDatatypeValidator *pBaseValidator = (NOTATIONDatatypeValidator*) this->getBaseValidator(); if (pBaseValidator) pBaseValidator->checkContent(content, context, true, manager); int thisFacetsDefined = getFacetsDefined(); // we check pattern first if ( (thisFacetsDefined & DatatypeValidator::FACET_PATTERN ) != 0 ) { if (getRegex()->matches(content, manager) ==false) { ThrowXMLwithMemMgr2(InvalidDatatypeValueException , XMLExcepts::VALUE_NotMatch_Pattern , content , getPattern() , manager); } } // if this is a base validator, we only need to check pattern facet // all other facet were inherited by the derived type if (asBase) return; checkValueSpace(content, manager); if ((thisFacetsDefined & DatatypeValidator::FACET_ENUMERATION) != 0 && (getEnumeration() != 0)) { XMLCh* normContent = XMLString::replicate(content, manager); ArrayJanitor jan(normContent, manager); normalizeContent(normContent, manager); XMLSize_t i=0; XMLSize_t enumLength = getEnumeration()->size(); for ( ; i < enumLength; i++) { if (XMLString::equals(normContent, getEnumeration()->elementAt(i))) break; } if (i == enumLength) ThrowXMLwithMemMgr1(InvalidDatatypeValueException, XMLExcepts::VALUE_NotIn_Enumeration, content, manager); } checkAdditionalFacet(content, manager); } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(NOTATIONDatatypeValidator) void NOTATIONDatatypeValidator::serialize(XSerializeEngine& serEng) { AbstractStringValidator::serialize(serEng); } XERCES_CPP_NAMESPACE_END /** * End of file NOTATIONDatatypeValidator.cpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/FloatDatatypeValidator.hpp0000644000175000017500000001163610606722647025612 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: FloatDatatypeValidator.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_FLOAT_DATATYPEVALIDATOR_HPP) #define XERCESC_INCLUDE_GUARD_FLOAT_DATATYPEVALIDATOR_HPP #include #include #include XERCES_CPP_NAMESPACE_BEGIN class VALIDATORS_EXPORT FloatDatatypeValidator : public AbstractNumericValidator { public: // ----------------------------------------------------------------------- // Public ctor/dtor // ----------------------------------------------------------------------- /** @name Constructors and Destructor */ //@{ FloatDatatypeValidator ( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); FloatDatatypeValidator ( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual ~FloatDatatypeValidator(); //@} // ----------------------------------------------------------------------- // Compare methods // ----------------------------------------------------------------------- /** @name Compare Function */ //@{ /** * Compare two boolean data types * * @param content1 * @param content2 * @return */ virtual int compare(const XMLCh* const, const XMLCh* const , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); //@} /** * Returns an instance of the base datatype validator class * Used by the DatatypeValidatorFactory. */ virtual DatatypeValidator* newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(FloatDatatypeValidator) protected: // ----------------------------------------------------------------------- // ctor provided to be used by derived classes // ----------------------------------------------------------------------- FloatDatatypeValidator ( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , const int finalSet , const ValidatorType type , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); // ----------------------------------------------------------------------- // Abstract interface from AbstractNumericFacetValidator // ----------------------------------------------------------------------- virtual int compareValues(const XMLNumber* const lValue , const XMLNumber* const rValue); virtual void setMaxInclusive(const XMLCh* const); virtual void setMaxExclusive(const XMLCh* const); virtual void setMinInclusive(const XMLCh* const); virtual void setMinExclusive(const XMLCh* const); virtual void setEnumeration(MemoryManager* const manager); // ----------------------------------------------------------------------- // Abstract interface from AbstractNumericValidator // ----------------------------------------------------------------------- virtual void checkContent(const XMLCh* const content , ValidationContext* const context , bool asBase , MemoryManager* const manager); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- FloatDatatypeValidator(const FloatDatatypeValidator&); FloatDatatypeValidator& operator = (const FloatDatatypeValidator&); }; XERCES_CPP_NAMESPACE_END #endif /** * End of file FloatDatatypeValidator.hpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/NCNameDatatypeValidator.hpp0000644000175000017500000001123210606722647025636 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: NCNameDatatypeValidator.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_NCNAME_DATATYPEVALIDATOR_HPP) #define XERCESC_INCLUDE_GUARD_NCNAME_DATATYPEVALIDATOR_HPP #include XERCES_CPP_NAMESPACE_BEGIN class VALIDATORS_EXPORT NCNameDatatypeValidator : public StringDatatypeValidator { public: // ----------------------------------------------------------------------- // Public ctor/dtor // ----------------------------------------------------------------------- /** @name Constructors and Destructor */ //@{ NCNameDatatypeValidator ( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); NCNameDatatypeValidator ( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual ~NCNameDatatypeValidator(); //@} // ----------------------------------------------------------------------- // Validation methods // ----------------------------------------------------------------------- /** @name Validation Function */ //@{ /** * validate that a string matches the boolean datatype * @param content A string containing the content to be validated * * @exception throws InvalidDatatypeException if the content is * is not valid. */ virtual void validate ( const XMLCh* const content , ValidationContext* const context = 0 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); //@} // ----------------------------------------------------------------------- // Compare methods // ----------------------------------------------------------------------- /** @name Compare Function */ //@{ /** * Compare two boolean data types * * @param content1 * @param content2 * @return */ virtual int compare(const XMLCh* const, const XMLCh* const , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); //@} /** * Returns an instance of the base datatype validator class * Used by the DatatypeValidatorFactory. */ virtual DatatypeValidator* newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(NCNameDatatypeValidator) protected: // // ctor provided to be used by derived classes // NCNameDatatypeValidator ( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , const int finalSet , const ValidatorType type , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual void checkValueSpace(const XMLCh* const content , MemoryManager* const manager); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- NCNameDatatypeValidator(const NCNameDatatypeValidator&); NCNameDatatypeValidator& operator=(const NCNameDatatypeValidator&); // ----------------------------------------------------------------------- // Private data members // // // ----------------------------------------------------------------------- }; XERCES_CPP_NAMESPACE_END #endif /** * End of file NCNameDatatypeValidator.hpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/Base64BinaryDatatypeValidator.cpp0000644000175000017500000001054611063753570026725 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: Base64BinaryDatatypeValidator.cpp 695949 2008-09-16 15:57:44Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Constructors and Destructor // --------------------------------------------------------------------------- Base64BinaryDatatypeValidator::Base64BinaryDatatypeValidator(MemoryManager* const manager) :AbstractStringValidator(0, 0, 0, DatatypeValidator::Base64Binary, manager) {} Base64BinaryDatatypeValidator::~Base64BinaryDatatypeValidator() {} Base64BinaryDatatypeValidator::Base64BinaryDatatypeValidator( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager) :AbstractStringValidator(baseValidator, facets, finalSet, DatatypeValidator::Base64Binary, manager) { init(enums, manager); } DatatypeValidator* Base64BinaryDatatypeValidator::newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager ) { return (DatatypeValidator*) new (manager) Base64BinaryDatatypeValidator(this, facets, enums, finalSet, manager); } // --------------------------------------------------------------------------- // Utilities // --------------------------------------------------------------------------- void Base64BinaryDatatypeValidator::checkValueSpace(const XMLCh* const content , MemoryManager* const manager) { if (!content || !*content) return; if (Base64::getDataLength(content, manager, Base64::Conf_Schema) < 0) { ThrowXMLwithMemMgr1(InvalidDatatypeValueException , XMLExcepts::VALUE_Not_Base64 , content , manager); } } XMLSize_t Base64BinaryDatatypeValidator::getLength(const XMLCh* const content , MemoryManager* const manager) const { if (!content || !*content) return 0; return (XMLSize_t)Base64::getDataLength(content, manager, Base64::Conf_Schema); } void Base64BinaryDatatypeValidator::normalizeEnumeration(MemoryManager* const manager) { XMLSize_t enumLength = getEnumeration()->size(); for ( XMLSize_t i=0; i < enumLength; i++) { XMLString::removeWS(getEnumeration()->elementAt(i), manager); } } void Base64BinaryDatatypeValidator::normalizeContent(XMLCh* const content , MemoryManager* const manager) const { XMLString::removeWS(content, manager); } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(Base64BinaryDatatypeValidator) void Base64BinaryDatatypeValidator::serialize(XSerializeEngine& serEng) { AbstractStringValidator::serialize(serEng); } XERCES_CPP_NAMESPACE_END /** * End of file Base64BinaryDatatypeValidator.cpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/DoubleDatatypeValidator.cpp0000644000175000017500000002133411037122704025731 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DoubleDatatypeValidator.cpp 676911 2008-07-15 13:27:32Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Constructors and Destructor // --------------------------------------------------------------------------- DoubleDatatypeValidator::DoubleDatatypeValidator(MemoryManager* const manager) :AbstractNumericValidator(0, 0, 0, DatatypeValidator::Double, manager) { setOrdered(XSSimpleTypeDefinition::ORDERED_PARTIAL); setBounded(true); setFinite(true); setNumeric(true); } DoubleDatatypeValidator::DoubleDatatypeValidator( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager) :AbstractNumericValidator(baseValidator, facets, finalSet, DatatypeValidator::Double, manager) { init(enums, manager); } DoubleDatatypeValidator::~DoubleDatatypeValidator() {} // ----------------------------------------------------------------------- // Compare methods // ----------------------------------------------------------------------- int DoubleDatatypeValidator::compare(const XMLCh* const lValue , const XMLCh* const rValue , MemoryManager* const manager) { XMLDouble lObj(lValue, manager); XMLDouble rObj(rValue, manager); return compareValues(&lObj, &rObj); } DatatypeValidator* DoubleDatatypeValidator::newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager ) { return (DatatypeValidator*) new (manager) DoubleDatatypeValidator(this, facets, enums, finalSet, manager); } // ----------------------------------------------------------------------- // ctor provided to be used by derived classes // ----------------------------------------------------------------------- DoubleDatatypeValidator::DoubleDatatypeValidator(DatatypeValidator* const baseValidator , RefHashTableOf* const facets , const int finalSet , const ValidatorType type , MemoryManager* const manager) :AbstractNumericValidator(baseValidator, facets, finalSet, type, manager) { //do not invoke init here !!! } int DoubleDatatypeValidator::compareValues(const XMLNumber* const lValue , const XMLNumber* const rValue) { return XMLDouble::compareValues((XMLDouble*) lValue, (XMLDouble*) rValue); } void DoubleDatatypeValidator::setMaxInclusive(const XMLCh* const value) { fMaxInclusive = new (fMemoryManager) XMLDouble(value, fMemoryManager); } void DoubleDatatypeValidator::setMaxExclusive(const XMLCh* const value) { fMaxExclusive = new (fMemoryManager) XMLDouble(value, fMemoryManager); } void DoubleDatatypeValidator::setMinInclusive(const XMLCh* const value) { fMinInclusive = new (fMemoryManager) XMLDouble(value, fMemoryManager); } void DoubleDatatypeValidator::setMinExclusive(const XMLCh* const value) { fMinExclusive = new (fMemoryManager) XMLDouble(value, fMemoryManager); } void DoubleDatatypeValidator::setEnumeration(MemoryManager* const manager) { // check 4.3.5.c0 must: enumeration values from the value space of base // // 1. shall be from base value space // 2. shall be from current value space as well ( shall go through boundsCheck() ) // if (!fStrEnumeration) return; XMLSize_t i = 0; XMLSize_t enumLength = fStrEnumeration->size(); DoubleDatatypeValidator *numBase = (DoubleDatatypeValidator*) getBaseValidator(); if (numBase) { try { for ( i = 0; i < enumLength; i++) { numBase->checkContent(fStrEnumeration->elementAt(i), (ValidationContext*)0, false, manager); } } catch (XMLException&) { ThrowXMLwithMemMgr1(InvalidDatatypeFacetException , XMLExcepts::FACET_enum_base , fStrEnumeration->elementAt(i) , manager); } } #if 0 // spec says that only base has to checkContent // We put the this->checkContent in a separate loop // to not block original message with in that method. // for ( i = 0; i < enumLength; i++) { checkContent(fStrEnumeration->elementAt(i), (ValidationContext*)0, false, manager); } #endif fEnumeration = new (manager) RefVectorOf(enumLength, true, manager); fEnumerationInherited = false; for ( i = 0; i < enumLength; i++) { fEnumeration->insertElementAt(new (manager) XMLDouble(fStrEnumeration->elementAt(i), manager), i); } } // ----------------------------------------------------------------------- // Abstract interface from AbstractNumericValidator // ----------------------------------------------------------------------- void DoubleDatatypeValidator::checkContent(const XMLCh* const content , ValidationContext* const context , bool asBase , MemoryManager* const manager) { //validate against base validator if any DoubleDatatypeValidator *pBase = (DoubleDatatypeValidator*) this->getBaseValidator(); if (pBase) pBase->checkContent(content, context, true, manager); // we check pattern first if ( (getFacetsDefined() & DatatypeValidator::FACET_PATTERN ) != 0 ) { if (getRegex()->matches(content, manager) ==false) { ThrowXMLwithMemMgr2(InvalidDatatypeValueException , XMLExcepts::VALUE_NotMatch_Pattern , content , getPattern() , manager); } } // if this is a base validator, we only need to check pattern facet // all other facet were inherited by the derived type if (asBase) return; XMLDouble theValue(content, manager); XMLDouble *theData = &theValue; if (getEnumeration()) { XMLSize_t i=0; XMLSize_t enumLength = getEnumeration()->size(); for ( ; i < enumLength; i++) { if (compareValues(theData, (XMLDouble*) getEnumeration()->elementAt(i)) ==0 ) break; } if (i == enumLength) ThrowXMLwithMemMgr1(InvalidDatatypeValueException, XMLExcepts::VALUE_NotIn_Enumeration, content, manager); } boundsCheck(theData, manager); } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(DoubleDatatypeValidator) void DoubleDatatypeValidator::serialize(XSerializeEngine& serEng) { /*** * Note: * * During storing, we need write the specific number * type info before calling base::serialize(). * * While loading, we do nothing here ***/ if (serEng.isStoring()) { serEng<<(int) (XMLNumber::Double); } AbstractNumericValidator::serialize(serEng); } XERCES_CPP_NAMESPACE_END /** * End of file DoubleDatatypeValidator::cpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/ListDatatypeValidator.cpp0000644000175000017500000003762511063753570025456 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: ListDatatypeValidator.cpp 695949 2008-09-16 15:57:44Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN static const int BUF_LEN = 64; // --------------------------------------------------------------------------- // Constructors and Destructor // --------------------------------------------------------------------------- ListDatatypeValidator::ListDatatypeValidator(MemoryManager* const manager) :AbstractStringValidator(0, 0, 0, DatatypeValidator::List, manager) ,fContent(0) {} ListDatatypeValidator::ListDatatypeValidator( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager) :AbstractStringValidator(baseValidator, facets, finalSet, DatatypeValidator::List, manager) ,fContent(0) { // // baseValidator shall either // an atomic DTV which servers as itemType, or // another ListDTV from which, this ListDTV is derived by restriction. // // In either case, it shall be not null // if (!baseValidator) ThrowXMLwithMemMgr(InvalidDatatypeFacetException, XMLExcepts::FACET_List_Null_baseValidator, manager); init(enums, manager); } ListDatatypeValidator::~ListDatatypeValidator() {} DatatypeValidator* ListDatatypeValidator::newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager ) { return (DatatypeValidator*) new (manager) ListDatatypeValidator(this, facets, enums, finalSet, manager); } int ListDatatypeValidator::compare(const XMLCh* const lValue , const XMLCh* const rValue , MemoryManager* const manager) { DatatypeValidator* theItemTypeDTV = getItemTypeDTV(); BaseRefVectorOf* lVector = XMLString::tokenizeString(lValue, manager); Janitor > janl(lVector); BaseRefVectorOf* rVector = XMLString::tokenizeString(rValue, manager); Janitor > janr(rVector); XMLSize_t lNumberOfTokens = lVector->size(); XMLSize_t rNumberOfTokens = rVector->size(); if (lNumberOfTokens < rNumberOfTokens) return -1; else if (lNumberOfTokens > rNumberOfTokens) return 1; else { //compare each token for ( XMLSize_t i = 0; i < lNumberOfTokens; i++) { int returnValue = theItemTypeDTV->compare(lVector->elementAt(i), rVector->elementAt(i), manager); if (returnValue != 0) return returnValue; //REVISIT: does it make sense to return -1 or +1..? } return 0; } } void ListDatatypeValidator::validate( const XMLCh* const content , ValidationContext* const context , MemoryManager* const manager) { setContent(content); BaseRefVectorOf* tokenVector = XMLString::tokenizeString(content, manager); Janitor > janName(tokenVector); checkContent(tokenVector, content, context, false, manager); } void ListDatatypeValidator::checkContent( const XMLCh* const content , ValidationContext* const context , bool asBase , MemoryManager* const manager) { setContent(content); BaseRefVectorOf* tokenVector = XMLString::tokenizeString(content, manager); Janitor > janName(tokenVector); checkContent(tokenVector, content, context, asBase, manager); } // // here content is a list of items // void ListDatatypeValidator::checkContent( BaseRefVectorOf* tokenVector , const XMLCh* const content , ValidationContext* const context , bool asBase , MemoryManager* const manager) { DatatypeValidator* bv = getBaseValidator(); if (bv->getType() == DatatypeValidator::List) ((ListDatatypeValidator*)bv)->checkContent(tokenVector, content, context, true, manager); else { // the ultimate itemType DTV for (unsigned int i = 0; i < tokenVector->size(); i++) bv->validate(tokenVector->elementAt(i), context, manager); } int thisFacetsDefined = getFacetsDefined(); // we check pattern first if ( (thisFacetsDefined & DatatypeValidator::FACET_PATTERN ) != 0 ) { //check every item in the list as a whole if (getRegex()->matches(content, manager) == false) { ThrowXMLwithMemMgr2(InvalidDatatypeValueException , XMLExcepts::VALUE_NotMatch_Pattern , content , getPattern() , manager); } } // if this is a base validator, we only need to check pattern facet // all other facet were inherited by the derived type if (asBase) return; XMLSize_t tokenNumber = tokenVector->size(); if (((thisFacetsDefined & DatatypeValidator::FACET_MAXLENGTH) != 0) && (tokenNumber > getMaxLength())) { XMLCh value1[BUF_LEN+1]; XMLCh value2[BUF_LEN+1]; XMLString::sizeToText(tokenNumber, value1, BUF_LEN, 10, manager); XMLString::sizeToText(getMaxLength(), value2, BUF_LEN, 10, manager); ThrowXMLwithMemMgr3(InvalidDatatypeValueException , XMLExcepts::VALUE_GT_maxLen , getContent() , value1 , value2 , manager); } if (((thisFacetsDefined & DatatypeValidator::FACET_MINLENGTH) != 0) && (tokenNumber < getMinLength())) { XMLCh value1[BUF_LEN+1]; XMLCh value2[BUF_LEN+1]; XMLString::sizeToText(tokenNumber, value1, BUF_LEN, 10, manager); XMLString::sizeToText(getMinLength(), value2, BUF_LEN, 10, manager); ThrowXMLwithMemMgr3(InvalidDatatypeValueException , XMLExcepts::VALUE_LT_minLen , getContent() , value1 , value2 , manager); } if (((thisFacetsDefined & DatatypeValidator::FACET_LENGTH) != 0) && (tokenNumber != AbstractStringValidator::getLength())) { XMLCh value1[BUF_LEN+1]; XMLCh value2[BUF_LEN+1]; XMLString::sizeToText(tokenNumber, value1, BUF_LEN, 10, manager); XMLString::sizeToText(AbstractStringValidator::getLength(), value2, BUF_LEN, 10, manager); ThrowXMLwithMemMgr3(InvalidDatatypeValueException , XMLExcepts::VALUE_NE_Len , getContent() , value1 , value2 , manager); } if ((thisFacetsDefined & DatatypeValidator::FACET_ENUMERATION) != 0 && (getEnumeration() != 0)) { XMLSize_t i; XMLSize_t enumLength = getEnumeration()->size(); for ( i = 0; i < enumLength; i++) { //optimization: we do a lexical comparision first // this may be faster for string and its derived if (XMLString::equals(getEnumeration()->elementAt(i), getContent())) break; // a match found // do a value space check // this is needed for decimal (and probably other types // such as datetime related) // eg. // tokenVector = "1 2 3.0 4" vs enumeration = "1 2 3 4.0" // if (valueSpaceCheck(tokenVector, getEnumeration()->elementAt(i), manager)) break; } if (i == enumLength) ThrowXMLwithMemMgr1(InvalidDatatypeValueException, XMLExcepts::VALUE_NotIn_Enumeration, getContent(), manager); } // enumeration } bool ListDatatypeValidator::valueSpaceCheck(BaseRefVectorOf* tokenVector , const XMLCh* const enumStr , MemoryManager* const manager) const { DatatypeValidator* theItemTypeDTV = getItemTypeDTV(); BaseRefVectorOf* enumVector = XMLString::tokenizeString(enumStr, manager); Janitor > janName(enumVector); if (tokenVector->size() != enumVector->size()) return false; for ( unsigned int j = 0; j < tokenVector->size(); j++ ) { if (theItemTypeDTV->compare(tokenVector->elementAt(j), enumVector->elementAt(j), manager) != 0) return false; } return true; } DatatypeValidator* ListDatatypeValidator::getItemTypeDTV() const { DatatypeValidator* bdv = this->getBaseValidator(); while (bdv->getType() == DatatypeValidator::List) bdv = bdv->getBaseValidator(); return bdv; } // --------------------------------------------------------------------------- // Utilities // --------------------------------------------------------------------------- void ListDatatypeValidator::checkValueSpace(const XMLCh* const , MemoryManager* const) {} XMLSize_t ListDatatypeValidator::getLength(const XMLCh* const content , MemoryManager* const manager) const { BaseRefVectorOf* tokenVector = XMLString::tokenizeString(content, manager); Janitor > janName(tokenVector); return tokenVector->size(); } void ListDatatypeValidator::inspectFacetBase(MemoryManager* const manager) { // // we are pretty sure baseValidator is not null // if (getBaseValidator()->getType() == DatatypeValidator::List) { AbstractStringValidator::inspectFacetBase(manager); } else { // the first level ListDTV // check 4.3.5.c0 must: enumeration values from the value space of base if ( ((getFacetsDefined() & DatatypeValidator::FACET_ENUMERATION) != 0) && (getEnumeration() !=0) ) { XMLSize_t i; XMLSize_t enumLength = getEnumeration()->size(); try { for ( i = 0; i < enumLength; i++) { // ask the itemType for a complete check BaseRefVectorOf* tempList = XMLString::tokenizeString(getEnumeration()->elementAt(i), manager); Janitor > jan(tempList); XMLSize_t tokenNumber = tempList->size(); try { for ( XMLSize_t j = 0; j < tokenNumber; j++) getBaseValidator()->validate(tempList->elementAt(j), (ValidationContext*)0, manager); } catch(const OutOfMemoryException&) { jan.release(); throw; } #if 0 // spec says that only base has to checkContent // enum shall pass this->checkContent() as well. checkContent(getEnumeration()->elementAt(i), (ValidationContext*)0, false, manager); #endif } } catch ( XMLException& ) { ThrowXMLwithMemMgr1(InvalidDatatypeFacetException , XMLExcepts::FACET_enum_base , getEnumeration()->elementAt(i) , manager); } } } }// End of inspectFacetBase() void ListDatatypeValidator::inheritFacet() { //iff the base validator is List, then we inherit // if (getBaseValidator()->getType() == DatatypeValidator::List) { AbstractStringValidator::inheritFacet(); } } /*** * 2.5.1.2 List datatypes * * The canonical-lexical-representation for the list datatype is defined as * the lexical form in which each item in the list has the canonical * lexical representation of its itemType. ***/ const XMLCh* ListDatatypeValidator::getCanonicalRepresentation(const XMLCh* const rawData , MemoryManager* const memMgr , bool toValidate) const { MemoryManager* toUse = memMgr? memMgr : getMemoryManager(); ListDatatypeValidator* temp = (ListDatatypeValidator*) this; temp->setContent(rawData); BaseRefVectorOf* tokenVector = XMLString::tokenizeString(rawData, toUse); Janitor > janName(tokenVector); if (toValidate) { try { temp->checkContent(tokenVector, rawData, 0, false, toUse); } catch (...) { return 0; } } XMLSize_t retBufSize = 2 * XMLString::stringLen(rawData); XMLCh* retBuf = (XMLCh*) toUse->allocate(retBufSize * sizeof(XMLCh)); retBuf[0] = 0; XMLCh* retBufPtr = retBuf; DatatypeValidator* itemDv = this->getItemTypeDTV(); try { for (unsigned int i = 0; i < tokenVector->size(); i++) { XMLCh* itemCanRep = (XMLCh*) itemDv->getCanonicalRepresentation(tokenVector->elementAt(i), toUse, false); XMLSize_t itemLen = XMLString::stringLen(itemCanRep); if(retBufPtr+itemLen+2 >= retBuf+retBufSize) { // need to resize XMLCh * oldBuf = retBuf; retBuf = (XMLCh*) toUse->allocate(retBufSize * sizeof(XMLCh) * 4); memcpy(retBuf, oldBuf, retBufSize * sizeof(XMLCh )); retBufPtr = (retBufPtr - oldBuf) + retBuf; toUse->deallocate(oldBuf); retBufSize <<= 2; } XMLString::catString(retBufPtr, itemCanRep); retBufPtr = retBufPtr + itemLen; *(retBufPtr++) = chSpace; *(retBufPtr) = chNull; toUse->deallocate(itemCanRep); } return retBuf; } catch (...) { return 0; } } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(ListDatatypeValidator) void ListDatatypeValidator::serialize(XSerializeEngine& serEng) { AbstractStringValidator::serialize(serEng); //don't serialize fContent, since it is NOT owned and //will be reset each time validate()/checkContent() invoked. } XERCES_CPP_NAMESPACE_END /** * End of file ListDatatypeValidator.cpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/DatatypeValidator.hpp0000644000175000017500000004723511360344373024622 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DatatypeValidator.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DATATYPEVALIDATOR_HPP) #define XERCESC_INCLUDE_GUARD_DATATYPEVALIDATOR_HPP #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN class MemoryManager; /** * DataTypeValidator defines the interface that data type validators must * obey. These validators can be supplied by the application writer and may * be useful as standalone code as well as plugins to the validator * architecture. * * Notice: * The datatype validator will own the facets hashtable passed to it during * construction, which means that the datatype validator will be responsible * for the deletion. The facets hashtable will be created during parsing and * passed to the appropriate datatype validator which in turn will delete it * upon its destruction. * */ class VALIDATORS_EXPORT DatatypeValidator : public XSerializable, public XMemory { public: // ----------------------------------------------------------------------- // Constant data // ----------------------------------------------------------------------- //facets enum { FACET_LENGTH = 1, FACET_MINLENGTH = 1<<1, FACET_MAXLENGTH = 1<<2, FACET_PATTERN = 1<<3, FACET_ENUMERATION = 1<<4, FACET_MAXINCLUSIVE = 1<<5, FACET_MAXEXCLUSIVE = 1<<6, FACET_MININCLUSIVE = 1<<7, FACET_MINEXCLUSIVE = 1<<8, FACET_TOTALDIGITS = 1<<9, FACET_FRACTIONDIGITS = 1<<10, FACET_ENCODING = 1<<11, FACET_DURATION = 1<<12, FACET_PERIOD = 1<<13, FACET_WHITESPACE = 1<<14 }; //2.4.2.6 whiteSpace - Datatypes enum { PRESERVE = 0, REPLACE = 1, COLLAPSE = 2 }; enum ValidatorType { String, AnyURI, QName, Name, NCName, Boolean, Float, Double, Decimal, HexBinary, Base64Binary, Duration, DateTime, Date, Time, MonthDay, YearMonth, Year, Month, Day, ID, IDREF, ENTITY, NOTATION, List, Union, AnySimpleType, UnKnown }; // ----------------------------------------------------------------------- // Public Destructor // ----------------------------------------------------------------------- /** @name Destructor. */ //@{ virtual ~DatatypeValidator(); //@} // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- /** @name Getter Functions */ //@{ /** * Returns the final values of the simpleType */ int getFinalSet() const; /** * Returns the datatype facet if any is set. */ RefHashTableOf* getFacets() const; /** * Returns default value (collapse) for whiteSpace facet. * This function is overwritten in StringDatatypeValidator. */ short getWSFacet () const; /** * Returns the base datatype validator if set. */ DatatypeValidator* getBaseValidator() const; /** * Returns the 'class' type of datatype validator */ ValidatorType getType() const; /** * Returns whether the type is atomic or not * * To be redefined in List/Union validators */ virtual bool isAtomic() const; /** * Returns the datatype enumeration if any is set. * Derived class shall provide their own copy. */ virtual const RefArrayVectorOf* getEnumString() const = 0; /** * returns true if this type is anonymous **/ bool getAnonymous() const; /** * sets this type to be anonymous **/ void setAnonymous(); /** * Fundamental Facet: ordered */ XSSimpleTypeDefinition::ORDERING getOrdered() const; /** * Fundamental Facet: cardinality. */ bool getFinite() const; /** * Fundamental Facet: bounded. */ bool getBounded() const; /** * Fundamental Facet: numeric. */ bool getNumeric() const; /** * Canonical Representation * * Derivative datatype may overwrite this method once * it has its own canonical representation other than * the default one. * * @param rawData: data in raw string * @param memMgr: memory manager * @param toValiate: to validate the raw string or not * * @return: canonical representation of the data * * Note: * * 1. the return value is kept in memory allocated * by the memory manager passed in or by dv's * if no memory manager is provided. * * 2. client application is responsible for the * proper deallocation of the memory allocated * for the returned value. * * 3. In the case where the rawData is not valid * with regards to the fundamental datatype, * a null string is returned. * */ virtual const XMLCh* getCanonicalRepresentation ( const XMLCh* const rawData , MemoryManager* const memMgr = 0 , bool toValidate = false ) const; //@} // ----------------------------------------------------------------------- // Validation methods // ----------------------------------------------------------------------- /** @name Validation Function */ //@{ /** * Checks that the "content" string is valid datatype. * If invalid, a Datatype validation exception is thrown. * * @param content A string containing the content to be validated * */ virtual void validate ( const XMLCh* const content , ValidationContext* const context = 0 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ) = 0; /** * Checks whether a given type can be used as a substitute * * @param toCheck A datatype validator of the type to be used as a * substitute * * To be redefined in UnionDatatypeValidator */ virtual bool isSubstitutableBy(const DatatypeValidator* const toCheck); //@} // ----------------------------------------------------------------------- // Compare methods // ----------------------------------------------------------------------- /** @name Compare Function */ //@{ /** * Compares content in the Domain value vs. lexical value. * * e.g. If type is a float then 1.0 may be equivalent to 1 even though * both are lexically different. * * @param value1 string to compare * * @param value2 string to compare * * We will provide a default behavior that should be redefined at the * children level, if necessary (i.e. boolean case). */ virtual int compare(const XMLCh* const value1, const XMLCh* const value2 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); //@} /** * Returns an instance of the base datatype validator class * Used by the DatatypeValidatorFactory. */ virtual DatatypeValidator* newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ) = 0; /** * Returns the uri,name of the type this validator is for */ const XMLCh* getTypeName() const; /** * sets the uri,name that this validator is for - typeName is uri,name string. * due to the internals of xerces this will set the uri to be the schema uri if * there is no comma in typeName */ void setTypeName(const XMLCh* const typeName); /** * sets the uri,name that this validator is for */ void setTypeName(const XMLCh* const name, const XMLCh* const uri); /** * Returns the uri of the type this validator is for */ const XMLCh* getTypeUri() const; /** * Returns the name of the type this validator is for */ const XMLCh* getTypeLocalName() const; /** * Returns the plugged-in memory manager */ MemoryManager* getMemoryManager() const; /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(DatatypeValidator) /*** * * Serialize DatatypeValidator derivative * * Param * serEng: serialize engine * dv: DatatypeValidator derivative * * Return: * ***/ static void storeDV(XSerializeEngine& serEng , DatatypeValidator* const dv); /*** * * Create a DatatypeValidator derivative from the binary * stream. * * Param * serEng: serialize engine * * Return: * DatatypeValidator derivative * ***/ static DatatypeValidator* loadDV(XSerializeEngine& serEng); protected: // ----------------------------------------------------------------------- // Protected Constructors // ----------------------------------------------------------------------- /** @name Constructors */ //@{ /** * * @param baseValidator The base datatype validator for derived * validators. Null if native validator. * * @param facets A hashtable of datatype facets (except enum). * * @param finalSet 'final' value of the simpleType */ DatatypeValidator(DatatypeValidator* const baseValidator, RefHashTableOf* const facets, const int finalSet, const ValidatorType type, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); //@} friend class DatatypeValidatorFactory; friend class XSObjectFactory; /** * facetDefined */ int getFacetsDefined() const; void setFacetsDefined(int); /** * fixed */ int getFixed() const; void setFixed(int); /** * fPattern */ const XMLCh* getPattern() const; void setPattern(const XMLCh* ); /** * fRegex */ RegularExpression* getRegex() const; void setRegex(RegularExpression* const); /** * set fType */ void setType(ValidatorType); /** * set fWhiteSpace */ void setWhiteSpace(short); /** * get WSString */ const XMLCh* getWSstring(const short WSType) const; /** * Fundamental Facet: ordered */ void setOrdered(XSSimpleTypeDefinition::ORDERING ordered); /** * Fundamental Facet: cardinality. */ void setFinite(bool finite); /** * Fundamental Facet: bounded. */ void setBounded(bool bounded); /** * Fundamental Facet: numeric. */ void setNumeric(bool numeric); private: // ----------------------------------------------------------------------- // CleanUp methods // ----------------------------------------------------------------------- void cleanUp(); // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DatatypeValidator(const DatatypeValidator&); DatatypeValidator& operator=(const DatatypeValidator&); // ----------------------------------------------------------------------- // Private data members // // fFinalSet // stores "final" values of simpleTypes // // fBaseValidator // This is a pointer to a base datatype validator. If value is null, // it means we have a native datatype validator not a derived one. // // fFacets // This is a hashtable of dataype facets. // // fType // Stores the class type of datatype validator // // fFacetsDefined // Stores the constaiting facets flag // // fPattern // the pointer to the String of the pattern. The actual data is // in the Facets. // // fRegex // pointer to the RegularExpress object // // // fFixed // if {fixed} is true, then types for which this type is the // {base type definition} cannot specify a value for a specific // facet. // // fTypeName // the uri,name of the type this validator will validate // // fTypeLocalName // the name of the type this validator will validate // // fTypeUri // the uri of the type this validator will validate // fAnonymous // true if this type is anonynous // // ----------------------------------------------------------------------- bool fAnonymous; bool fFinite; bool fBounded; bool fNumeric; short fWhiteSpace; int fFinalSet; int fFacetsDefined; int fFixed; ValidatorType fType; XSSimpleTypeDefinition::ORDERING fOrdered; DatatypeValidator* fBaseValidator; RefHashTableOf* fFacets; XMLCh* fPattern; RegularExpression* fRegex; XMLCh* fTypeName; const XMLCh* fTypeLocalName; const XMLCh* fTypeUri; protected: // ----------------------------------------------------------------------- // Protected data members // // fMemoryManager // Pluggable memory manager for dynamic allocation/deallocation. // ----------------------------------------------------------------------- MemoryManager* fMemoryManager; }; // --------------------------------------------------------------------------- // DatatypeValidator: Getters // --------------------------------------------------------------------------- inline int DatatypeValidator::getFinalSet() const { return fFinalSet; } inline RefHashTableOf* DatatypeValidator::getFacets() const { return fFacets; } inline DatatypeValidator* DatatypeValidator::getBaseValidator() const { return fBaseValidator; } inline short DatatypeValidator::getWSFacet() const { return fWhiteSpace; } inline DatatypeValidator::ValidatorType DatatypeValidator::getType() const { return fType; } inline int DatatypeValidator::getFacetsDefined() const { return fFacetsDefined; } inline int DatatypeValidator::getFixed() const { return fFixed; } inline const XMLCh* DatatypeValidator::getPattern() const { return fPattern; } inline RegularExpression* DatatypeValidator::getRegex() const { return fRegex; } inline const XMLCh* DatatypeValidator::getTypeName() const { return fTypeName; } inline bool DatatypeValidator::getAnonymous() const { return fAnonymous; } inline const XMLCh* DatatypeValidator::getTypeLocalName() const { return fTypeLocalName; } inline const XMLCh* DatatypeValidator::getTypeUri() const { return fTypeUri; } inline MemoryManager* DatatypeValidator::getMemoryManager() const { return fMemoryManager; } inline XSSimpleTypeDefinition::ORDERING DatatypeValidator::getOrdered() const { return fOrdered; } inline bool DatatypeValidator::getFinite() const { return fFinite; } inline bool DatatypeValidator::getBounded() const { return fBounded; } inline bool DatatypeValidator::getNumeric() const { return fNumeric; } // --------------------------------------------------------------------------- // DatatypeValidator: Setters // --------------------------------------------------------------------------- inline void DatatypeValidator::setType(ValidatorType theType) { fType = theType; } inline void DatatypeValidator::setWhiteSpace(short newValue) { fWhiteSpace = newValue; } inline void DatatypeValidator::setFacetsDefined(int facets) { fFacetsDefined |= facets; } inline void DatatypeValidator::setFixed(int fixed) { fFixed |= fixed; } inline void DatatypeValidator::setPattern(const XMLCh* pattern) { if (fPattern) { fMemoryManager->deallocate(fPattern);//delete [] fPattern; delete fRegex; } fPattern = XMLString::replicate(pattern, fMemoryManager); fRegex = new (fMemoryManager) RegularExpression(fPattern, SchemaSymbols::fgRegEx_XOption, fMemoryManager); } inline void DatatypeValidator::setRegex(RegularExpression* const regex) { fRegex = regex; } inline bool DatatypeValidator::isAtomic() const { return true; } inline void DatatypeValidator::setAnonymous() { fAnonymous = true; } inline void DatatypeValidator::setOrdered(XSSimpleTypeDefinition::ORDERING ordered) { fOrdered = ordered; } inline void DatatypeValidator::setFinite(bool finite) { fFinite = finite; } inline void DatatypeValidator::setBounded(bool bounded) { fBounded = bounded; } inline void DatatypeValidator::setNumeric(bool numeric) { fNumeric = numeric; } // --------------------------------------------------------------------------- // DatatypeValidators: Compare methods // --------------------------------------------------------------------------- inline int DatatypeValidator::compare(const XMLCh* const lValue, const XMLCh* const rValue , MemoryManager* const) { return XMLString::compareString(lValue, rValue); } // --------------------------------------------------------------------------- // DatatypeValidators: Validation methods // --------------------------------------------------------------------------- inline bool DatatypeValidator::isSubstitutableBy(const DatatypeValidator* const toCheck) { const DatatypeValidator* dv = toCheck; while (dv != 0) { if (dv == this) { return true; } dv = dv->getBaseValidator(); } return false; } XERCES_CPP_NAMESPACE_END #endif /** * End of file DatatypeValidator.hpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/AnyURIDatatypeValidator.cpp0000644000175000017500000001733511037027715025642 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: AnyURIDatatypeValidator.cpp 676796 2008-07-15 05:04:13Z dbertoni $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Constructors and Destructor // --------------------------------------------------------------------------- AnyURIDatatypeValidator::AnyURIDatatypeValidator(MemoryManager* const manager) :AbstractStringValidator(0, 0, 0, DatatypeValidator::AnyURI, manager) {} AnyURIDatatypeValidator::~AnyURIDatatypeValidator() { } AnyURIDatatypeValidator::AnyURIDatatypeValidator( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager) :AbstractStringValidator(baseValidator, facets, finalSet, DatatypeValidator::AnyURI, manager) { init(enums, manager); } DatatypeValidator* AnyURIDatatypeValidator::newInstance( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager) { return (DatatypeValidator*) new (manager) AnyURIDatatypeValidator(this, facets, enums, finalSet, manager); } // --------------------------------------------------------------------------- // Utilities // --------------------------------------------------------------------------- void AnyURIDatatypeValidator::checkValueSpace(const XMLCh* const content , MemoryManager* const manager) { bool validURI = true; // check 3.2.17.c0 must: URI (rfc 2396/2723) try { // Support for relative URLs // According to Java 1.1: URLs may also be specified with a // String and the URL object that it is related to. // XMLSize_t len = XMLString::stringLen(content); if (len) { // Encode special characters using XLink 5.4 algorithm XMLBuffer encoded((len*3)+1, manager); encode(content, len, encoded, manager); validURI = XMLUri::isValidURI(true, encoded.getRawBuffer(), true); } } catch(const OutOfMemoryException&) { throw; } catch (...) { ThrowXMLwithMemMgr1(InvalidDatatypeValueException , XMLExcepts::VALUE_URI_Malformed , content , manager); } if (!validURI) { ThrowXMLwithMemMgr1(InvalidDatatypeValueException , XMLExcepts::VALUE_URI_Malformed , content , manager); } } /*** * To encode special characters in anyURI, by using %HH to represent * special ASCII characters: 0x00~0x1F, 0x7F, ' ', '<', '>', etc. * and non-ASCII characters (whose value >= 128). ***/ void AnyURIDatatypeValidator::encode(const XMLCh* const content, const XMLSize_t len, XMLBuffer& encoded, MemoryManager* const manager) { static const bool needEscapeMap[] = { true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , /* 0x00 to 0x0F need escape */ true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , true , /* 0x10 to 0x1F need escape */ true , false, true , false, false, false, false, false, false, false, false, false, false, false, false, false, /* 0x20:' ', 0x22:'"' */ false, false, false, false, false, false, false, false, false, false, false, false, true , false, true , false, /* 0x3C:'<', 0x3E:'>' */ false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true , false, true , false, /* 0x5C:'\\', 0x5E:'^' */ true , false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, /* 0x60:'`' */ false, false, false, false, false, false, false, false, false, false, false, true , true , true , true , true /* 0x7B:'{', 0x7C:'|', 0x7D:'}', 0x7E:'~', 0x7F:DEL */ }; // For each character in content XMLSize_t i; for (i = 0; i < len; i++) { int ch = (int)content[i]; // If it's not an ASCII character, break here, and use UTF-8 encoding if (ch >= 128) break; if (needEscapeMap[ch]) { char tempStr[3] = "\0"; sprintf(tempStr, "%02X", ch); encoded.append('%'); encoded.append((XMLCh)tempStr[0]); encoded.append((XMLCh)tempStr[1]); } else { encoded.append((XMLCh)ch); } } // we saw some non-ascii character if (i < len) { // get UTF-8 bytes for the remaining sub-string const XMLCh* remContent = (XMLCh*)&content[i]; const XMLSize_t remContentLen = len - i; XMLByte* UTF8Byte = (XMLByte*)manager->allocate((remContentLen*4+1) * sizeof(XMLByte)); XMLSize_t charsEaten; XMLUTF8Transcoder transcoder(XMLUni::fgUTF8EncodingString, remContentLen*4+1, manager); XMLSize_t utf8Len = transcoder.transcodeTo(remContent, remContentLen, UTF8Byte, remContentLen*4, charsEaten, XMLTranscoder::UnRep_RepChar); assert(charsEaten == remContentLen); XMLSize_t j; for (j = 0; j < utf8Len; j++) { XMLByte b = UTF8Byte[j]; if (b >= 128 || needEscapeMap[b]) { char tempStr[3] = "\0"; sprintf(tempStr, "%02X", b); encoded.append('%'); encoded.append((XMLCh)tempStr[0]); encoded.append((XMLCh)tempStr[1]); } else { encoded.append((XMLCh)b); } } manager->deallocate(UTF8Byte); } } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(AnyURIDatatypeValidator) void AnyURIDatatypeValidator::serialize(XSerializeEngine& serEng) { AbstractStringValidator::serialize(serEng); } XERCES_CPP_NAMESPACE_END /** * End of file AnyURIDatatypeValidator.cpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/DatatypeValidatorFactory.cpp0000644000175000017500000010774411360344373026147 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DatatypeValidatorFactory.cpp 932887 2010-04-11 13:04:59Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // DatatypeValidatorFactory: Local const data // --------------------------------------------------------------------------- const XMLCh fgTokPattern[] = { chBackSlash, chLatin_c, chPlus, chNull }; //E2-43 //[+\-]?[0-9]+ const XMLCh fgIntegerPattern[] = { chOpenSquare, chPlus, chBackSlash, chDash, chCloseSquare, chQuestion, chOpenSquare, chDigit_0, chDash, chDigit_9, chCloseSquare, chPlus, chNull }; //"\\i\\c*" const XMLCh fgNamePattern[] = { chBackSlash, chLatin_i, chBackSlash, chLatin_c, chAsterisk, chNull }; //"[\\i-[:]][\\c-[:]]*" const XMLCh fgNCNamePattern[] = { chOpenSquare, chBackSlash, chLatin_i, chDash, chOpenSquare, chColon, chCloseSquare, chCloseSquare, chOpenSquare, chBackSlash, chLatin_c, chDash, chOpenSquare, chColon, chCloseSquare, chCloseSquare, chAsterisk, chNull }; const XMLCh fgP0Y[] = { chLatin_P, chDigit_0, chLatin_Y, chNull }; const XMLCh fgP1Y[] = { chLatin_P, chDigit_1, chLatin_Y, chNull }; const XMLCh fgP100Y[] = { chLatin_P, chDigit_1, chDigit_0, chDigit_0, chLatin_Y, chNull }; const XMLCh fgPT24H[] = { chLatin_P, chLatin_T, chDigit_2, chDigit_4, chLatin_H, chNull }; const XMLCh fgP1M[] = { chLatin_P, chDigit_1, chLatin_M, chNull }; // --------------------------------------------------------------------------- // DatatypeValidatorFactory: Static member data // --------------------------------------------------------------------------- RefHashTableOf* DatatypeValidatorFactory::fBuiltInRegistry = 0; RefHashTableOf* DatatypeValidatorFactory::fCanRepRegistry = 0; void XMLInitializer::initializeDatatypeValidatorFactory() { // @@ This is ugly. Need to make expandRegistryToFullSchemaSet // static. // DatatypeValidatorFactory *dvFactory = new DatatypeValidatorFactory(); if (dvFactory) { dvFactory->expandRegistryToFullSchemaSet(); delete dvFactory; } } void XMLInitializer::terminateDatatypeValidatorFactory() { delete DatatypeValidatorFactory::fBuiltInRegistry; DatatypeValidatorFactory::fBuiltInRegistry = 0; delete DatatypeValidatorFactory::fCanRepRegistry; DatatypeValidatorFactory::fCanRepRegistry = 0; } // --------------------------------------------------------------------------- // DatatypeValidatorFactory: Constructors and Destructor // --------------------------------------------------------------------------- DatatypeValidatorFactory::DatatypeValidatorFactory(MemoryManager* const manager) : fUserDefinedRegistry(0) , fMemoryManager(manager) { } DatatypeValidatorFactory::~DatatypeValidatorFactory() { cleanUp(); } // --------------------------------------------------------------------------- // DatatypeValidatorFactory: Reset methods // --------------------------------------------------------------------------- void DatatypeValidatorFactory::resetRegistry() { if (fUserDefinedRegistry != 0) { fUserDefinedRegistry->removeAll(); } } // --------------------------------------------------------------------------- // DatatypeValidatorFactory: Registry initialization methods // --------------------------------------------------------------------------- void DatatypeValidatorFactory::expandRegistryToFullSchemaSet() { //Initialize common Schema/DTD Datatype validator set fBuiltInRegistry = new RefHashTableOf(29); DatatypeValidator *dv = new StringDatatypeValidator(); dv->setTypeName(SchemaSymbols::fgDT_STRING, SchemaSymbols::fgURI_SCHEMAFORSCHEMA); fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_STRING, dv); dv = new NOTATIONDatatypeValidator(); dv->setTypeName(XMLUni::fgNotationString, SchemaSymbols::fgURI_SCHEMAFORSCHEMA); fBuiltInRegistry->put((void*) XMLUni::fgNotationString, dv); dv = new AnySimpleTypeDatatypeValidator(); dv->setTypeName(SchemaSymbols::fgDT_ANYSIMPLETYPE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA); fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_ANYSIMPLETYPE, dv); dv = new BooleanDatatypeValidator(); dv->setTypeName(SchemaSymbols::fgDT_BOOLEAN, SchemaSymbols::fgURI_SCHEMAFORSCHEMA); fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_BOOLEAN, dv); dv = new DecimalDatatypeValidator(); dv->setTypeName(SchemaSymbols::fgDT_DECIMAL, SchemaSymbols::fgURI_SCHEMAFORSCHEMA); fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_DECIMAL, dv); dv = new HexBinaryDatatypeValidator(); dv->setTypeName(SchemaSymbols::fgDT_HEXBINARY, SchemaSymbols::fgURI_SCHEMAFORSCHEMA); fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_HEXBINARY, dv); dv = new Base64BinaryDatatypeValidator(); dv->setTypeName(SchemaSymbols::fgDT_BASE64BINARY, SchemaSymbols::fgURI_SCHEMAFORSCHEMA); fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_BASE64BINARY, dv); dv = new DoubleDatatypeValidator(); dv->setTypeName(SchemaSymbols::fgDT_DOUBLE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA); fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_DOUBLE, dv); dv = new FloatDatatypeValidator(); dv->setTypeName(SchemaSymbols::fgDT_FLOAT, SchemaSymbols::fgURI_SCHEMAFORSCHEMA); fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_FLOAT, dv); dv = new AnyURIDatatypeValidator(); dv->setTypeName(SchemaSymbols::fgDT_ANYURI, SchemaSymbols::fgURI_SCHEMAFORSCHEMA); fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_ANYURI, dv); dv = new QNameDatatypeValidator(); dv->setTypeName(SchemaSymbols::fgDT_QNAME, SchemaSymbols::fgURI_SCHEMAFORSCHEMA); fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_QNAME, dv); dv = new DateTimeDatatypeValidator(); dv->setTypeName(SchemaSymbols::fgDT_DATETIME, SchemaSymbols::fgURI_SCHEMAFORSCHEMA); fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_DATETIME, dv); dv = new DateDatatypeValidator(); dv->setTypeName(SchemaSymbols::fgDT_DATE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA); fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_DATE, dv); dv = new TimeDatatypeValidator(); dv->setTypeName(SchemaSymbols::fgDT_TIME, SchemaSymbols::fgURI_SCHEMAFORSCHEMA); fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_TIME, dv); dv = new DayDatatypeValidator(); dv->setTypeName(SchemaSymbols::fgDT_DAY, SchemaSymbols::fgURI_SCHEMAFORSCHEMA); fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_DAY, dv); dv = new MonthDatatypeValidator(); dv->setTypeName(SchemaSymbols::fgDT_MONTH, SchemaSymbols::fgURI_SCHEMAFORSCHEMA); fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_MONTH, dv); dv = new MonthDayDatatypeValidator(); dv->setTypeName(SchemaSymbols::fgDT_MONTHDAY, SchemaSymbols::fgURI_SCHEMAFORSCHEMA); fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_MONTHDAY, dv); dv = new YearDatatypeValidator(); dv->setTypeName(SchemaSymbols::fgDT_YEAR, SchemaSymbols::fgURI_SCHEMAFORSCHEMA); fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_YEAR, dv); dv = new YearMonthDatatypeValidator(); dv->setTypeName(SchemaSymbols::fgDT_YEARMONTH, SchemaSymbols::fgURI_SCHEMAFORSCHEMA); fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_YEARMONTH, dv); dv = new DurationDatatypeValidator(); dv->setTypeName(SchemaSymbols::fgDT_DURATION, SchemaSymbols::fgURI_SCHEMAFORSCHEMA); fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_DURATION, dv); // REVISIT // We are creating a lot of Hashtables for the facets of the different // validators. It's better to have some kind of a memory pool and ask // the pool to give us a new instance of the hashtable. RefHashTableOf* facets = new RefHashTableOf(3); // Create 'normalizedString' datatype validator facets->put((void*) SchemaSymbols::fgELT_WHITESPACE, new KVStringPair(SchemaSymbols::fgELT_WHITESPACE, SchemaSymbols::fgWS_REPLACE)); createDatatypeValidator(SchemaSymbols::fgDT_NORMALIZEDSTRING, getDatatypeValidator(SchemaSymbols::fgDT_STRING), facets, 0, false, 0, false); // Create 'token' datatype validator facets = new RefHashTableOf(3); facets->put((void*) SchemaSymbols::fgELT_WHITESPACE, new KVStringPair(SchemaSymbols::fgELT_WHITESPACE, SchemaSymbols::fgWS_COLLAPSE)); createDatatypeValidator(SchemaSymbols::fgDT_TOKEN, getDatatypeValidator(SchemaSymbols::fgDT_NORMALIZEDSTRING), facets, 0, false, 0, false); dv = new NameDatatypeValidator(getDatatypeValidator(SchemaSymbols::fgDT_TOKEN), 0, 0, 0); dv->setTypeName(SchemaSymbols::fgDT_NAME, SchemaSymbols::fgURI_SCHEMAFORSCHEMA); fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_NAME, dv); dv = new NCNameDatatypeValidator(getDatatypeValidator(SchemaSymbols::fgDT_NAME), 0, 0, 0); dv->setTypeName(SchemaSymbols::fgDT_NCNAME, SchemaSymbols::fgURI_SCHEMAFORSCHEMA); fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_NCNAME, dv); // Create 'NMTOKEN' datatype validator facets = new RefHashTableOf(3); facets->put((void*) SchemaSymbols::fgELT_PATTERN , new KVStringPair(SchemaSymbols::fgELT_PATTERN,fgTokPattern)); facets->put((void*) SchemaSymbols::fgELT_WHITESPACE, new KVStringPair(SchemaSymbols::fgELT_WHITESPACE, SchemaSymbols::fgWS_COLLAPSE)); createDatatypeValidator(XMLUni::fgNmTokenString, getDatatypeValidator(SchemaSymbols::fgDT_TOKEN),facets, 0, false, 0, false); // Create 'NMTOKENS' datatype validator facets = new RefHashTableOf(2); facets->put((void*) SchemaSymbols::fgELT_MINLENGTH, new KVStringPair(SchemaSymbols::fgELT_MINLENGTH, XMLUni::fgValueOne)); createDatatypeValidator(XMLUni::fgNmTokensString, getDatatypeValidator(XMLUni::fgNmTokenString), facets, 0, true, 0, false); // Create 'language' datatype validator facets = new RefHashTableOf(3); facets->put((void*) SchemaSymbols::fgELT_PATTERN, new KVStringPair(SchemaSymbols::fgELT_PATTERN, XMLUni::fgLangPattern)); createDatatypeValidator(SchemaSymbols::fgDT_LANGUAGE, getDatatypeValidator(SchemaSymbols::fgDT_TOKEN), facets, 0, false, 0, false); // Create 'integer' datatype validator facets = new RefHashTableOf(3); facets->put((void*) SchemaSymbols::fgELT_FRACTIONDIGITS, new KVStringPair(SchemaSymbols::fgELT_FRACTIONDIGITS, XMLUni::fgValueZero)); facets->put((void*) SchemaSymbols::fgELT_PATTERN, new KVStringPair(SchemaSymbols::fgELT_PATTERN, fgIntegerPattern)); createDatatypeValidator(SchemaSymbols::fgDT_INTEGER, getDatatypeValidator(SchemaSymbols::fgDT_DECIMAL), facets, 0, false, 0, false); // Create 'nonPositiveInteger' datatype validator facets = new RefHashTableOf(2); facets->put((void*) SchemaSymbols::fgELT_MAXINCLUSIVE, new KVStringPair(SchemaSymbols::fgELT_MAXINCLUSIVE, XMLUni::fgValueZero)); createDatatypeValidator(SchemaSymbols::fgDT_NONPOSITIVEINTEGER, getDatatypeValidator(SchemaSymbols::fgDT_INTEGER), facets, 0, false, 0, false); // Create 'negativeInteger' datatype validator facets = new RefHashTableOf(2); facets->put((void*) SchemaSymbols::fgELT_MAXINCLUSIVE, new KVStringPair(SchemaSymbols::fgELT_MAXINCLUSIVE, XMLUni::fgNegOne)); createDatatypeValidator(SchemaSymbols::fgDT_NEGATIVEINTEGER, getDatatypeValidator(SchemaSymbols::fgDT_NONPOSITIVEINTEGER), facets, 0, false, 0, false); // Create 'long' datatype validator facets = new RefHashTableOf(2); facets->put((void*) SchemaSymbols::fgELT_MAXINCLUSIVE, new KVStringPair(SchemaSymbols::fgELT_MAXINCLUSIVE, XMLUni::fgLongMaxInc)); facets->put((void*) SchemaSymbols::fgELT_MININCLUSIVE, new KVStringPair(SchemaSymbols::fgELT_MININCLUSIVE, XMLUni::fgLongMinInc)); createDatatypeValidator(SchemaSymbols::fgDT_LONG, getDatatypeValidator(SchemaSymbols::fgDT_INTEGER), facets, 0, false, 0, false); // Create 'int' datatype validator facets = new RefHashTableOf(2); facets->put((void*) SchemaSymbols::fgELT_MAXINCLUSIVE, new KVStringPair(SchemaSymbols::fgELT_MAXINCLUSIVE, XMLUni::fgIntMaxInc)); facets->put((void*) SchemaSymbols::fgELT_MININCLUSIVE, new KVStringPair(SchemaSymbols::fgELT_MININCLUSIVE, XMLUni::fgIntMinInc)); createDatatypeValidator(SchemaSymbols::fgDT_INT, getDatatypeValidator(SchemaSymbols::fgDT_LONG), facets, 0, false, 0, false); // Create 'short' datatype validator facets = new RefHashTableOf(2); facets->put((void*) SchemaSymbols::fgELT_MAXINCLUSIVE, new KVStringPair(SchemaSymbols::fgELT_MAXINCLUSIVE, XMLUni::fgShortMaxInc)); facets->put((void*) SchemaSymbols::fgELT_MININCLUSIVE, new KVStringPair(SchemaSymbols::fgELT_MININCLUSIVE, XMLUni::fgShortMinInc)); createDatatypeValidator(SchemaSymbols::fgDT_SHORT, getDatatypeValidator(SchemaSymbols::fgDT_INT), facets, 0, false, 0 ,false); // Create 'byte' datatype validator facets = new RefHashTableOf(2); facets->put((void*) SchemaSymbols::fgELT_MAXINCLUSIVE, new KVStringPair(SchemaSymbols::fgELT_MAXINCLUSIVE, XMLUni::fgByteMaxInc)); facets->put((void*) SchemaSymbols::fgELT_MININCLUSIVE, new KVStringPair(SchemaSymbols::fgELT_MININCLUSIVE, XMLUni::fgByteMinInc)); createDatatypeValidator(SchemaSymbols::fgDT_BYTE, getDatatypeValidator(SchemaSymbols::fgDT_SHORT), facets, 0, false, 0, false); // Create 'nonNegativeInteger' datatype validator facets = new RefHashTableOf(2); facets->put((void*) SchemaSymbols::fgELT_MININCLUSIVE, new KVStringPair(SchemaSymbols::fgELT_MININCLUSIVE, XMLUni::fgValueZero)); createDatatypeValidator(SchemaSymbols::fgDT_NONNEGATIVEINTEGER, getDatatypeValidator(SchemaSymbols::fgDT_INTEGER), facets, 0, false, 0, false); // Create 'unsignedLong' datatype validator facets = new RefHashTableOf(2); facets->put((void*) SchemaSymbols::fgELT_MAXINCLUSIVE, new KVStringPair(SchemaSymbols::fgELT_MAXINCLUSIVE, XMLUni::fgULongMaxInc)); createDatatypeValidator(SchemaSymbols::fgDT_ULONG, getDatatypeValidator(SchemaSymbols::fgDT_NONNEGATIVEINTEGER), facets, 0, false, 0, false); // Create 'unsignedInt' datatype validator facets = new RefHashTableOf(2); facets->put((void*) SchemaSymbols::fgELT_MAXINCLUSIVE, new KVStringPair(SchemaSymbols::fgELT_MAXINCLUSIVE, XMLUni::fgUIntMaxInc)); createDatatypeValidator(SchemaSymbols::fgDT_UINT, getDatatypeValidator(SchemaSymbols::fgDT_ULONG), facets, 0, false, 0, false); // Create 'unsignedShort' datatypeValidator facets = new RefHashTableOf(2); facets->put((void*) SchemaSymbols::fgELT_MAXINCLUSIVE, new KVStringPair(SchemaSymbols::fgELT_MAXINCLUSIVE, XMLUni::fgUShortMaxInc)); createDatatypeValidator(SchemaSymbols::fgDT_USHORT, getDatatypeValidator(SchemaSymbols::fgDT_UINT), facets, 0, false, 0, false); // Create 'unsignedByte' datatype validator facets = new RefHashTableOf(2); facets->put((void*) SchemaSymbols::fgELT_MAXINCLUSIVE, new KVStringPair(SchemaSymbols::fgELT_MAXINCLUSIVE, XMLUni::fgUByteMaxInc)); createDatatypeValidator(SchemaSymbols::fgDT_UBYTE, getDatatypeValidator(SchemaSymbols::fgDT_USHORT), facets, 0, false, 0, false); // Create 'positiveInteger' datatype validator facets = new RefHashTableOf(2); facets->put((void*) SchemaSymbols::fgELT_MININCLUSIVE, new KVStringPair(SchemaSymbols::fgELT_MININCLUSIVE, XMLUni::fgValueOne)); createDatatypeValidator(SchemaSymbols::fgDT_POSITIVEINTEGER, getDatatypeValidator(SchemaSymbols::fgDT_NONNEGATIVEINTEGER), facets, 0, false, 0, false); // Create 'ID', 'IDREF' and 'ENTITY' datatype validator dv = new IDDatatypeValidator(getDatatypeValidator(SchemaSymbols::fgDT_NCNAME), 0, 0, 0); dv->setTypeName(XMLUni::fgIDString, SchemaSymbols::fgURI_SCHEMAFORSCHEMA); fBuiltInRegistry->put((void*) XMLUni::fgIDString, dv); dv = new IDREFDatatypeValidator(getDatatypeValidator(SchemaSymbols::fgDT_NCNAME), 0, 0, 0); dv->setTypeName(XMLUni::fgIDRefString, SchemaSymbols::fgURI_SCHEMAFORSCHEMA); fBuiltInRegistry->put((void*) XMLUni::fgIDRefString, dv); dv = new ENTITYDatatypeValidator(getDatatypeValidator(SchemaSymbols::fgDT_NCNAME), 0, 0, 0); dv->setTypeName(XMLUni::fgEntityString, SchemaSymbols::fgURI_SCHEMAFORSCHEMA); fBuiltInRegistry->put((void*) XMLUni::fgEntityString, dv); facets = new RefHashTableOf(2); facets->put((void*) SchemaSymbols::fgELT_MINLENGTH, new KVStringPair(SchemaSymbols::fgELT_MINLENGTH, XMLUni::fgValueOne)); // Create 'IDREFS' datatype validator createDatatypeValidator ( XMLUni::fgIDRefsString , getDatatypeValidator(XMLUni::fgIDRefString) , facets , 0 , true , 0 , false ); facets = new RefHashTableOf(2); facets->put((void*) SchemaSymbols::fgELT_MINLENGTH, new KVStringPair(SchemaSymbols::fgELT_MINLENGTH, XMLUni::fgValueOne)); // Create 'ENTITIES' datatype validator createDatatypeValidator ( XMLUni::fgEntitiesString , getDatatypeValidator(XMLUni::fgEntityString) , facets , 0 , true , 0 , false ); initCanRepRegistory(); } /*** * * For Decimal-derivated, an instance of DecimalDatatypeValidator * can be used by the primitive datatype, decimal, or any one of * the derivated datatypes, such as int, long, unsighed short, just * name a few, or any user-defined datatypes, which may derivate from * either the primitive datatype, decimal, or from any one of those * decimal derivated datatypes, or other user-defined datatypes, which * in turn, indirectly derivate from decimal or decimal-derived. * * fCanRepRegisty captures deciaml dv and its derivatives. * ***/ void DatatypeValidatorFactory::initCanRepRegistory() { /*** * key: dv * data: XMLCanRepGroup ***/ fCanRepRegistry = new RefHashTableOf(29, true); fCanRepRegistry->put((void*) getDatatypeValidator(SchemaSymbols::fgDT_DECIMAL), new XMLCanRepGroup(XMLCanRepGroup::Decimal)); fCanRepRegistry->put((void*) getDatatypeValidator(SchemaSymbols::fgDT_INTEGER), new XMLCanRepGroup(XMLCanRepGroup::Decimal_Derived_signed)); fCanRepRegistry->put((void*) getDatatypeValidator(SchemaSymbols::fgDT_LONG), new XMLCanRepGroup(XMLCanRepGroup::Decimal_Derived_signed)); fCanRepRegistry->put((void*) getDatatypeValidator(SchemaSymbols::fgDT_INT), new XMLCanRepGroup(XMLCanRepGroup::Decimal_Derived_signed)); fCanRepRegistry->put((void*) getDatatypeValidator(SchemaSymbols::fgDT_SHORT), new XMLCanRepGroup(XMLCanRepGroup::Decimal_Derived_signed)); fCanRepRegistry->put((void*) getDatatypeValidator(SchemaSymbols::fgDT_BYTE), new XMLCanRepGroup(XMLCanRepGroup::Decimal_Derived_signed)); fCanRepRegistry->put((void*) getDatatypeValidator(SchemaSymbols::fgDT_NONNEGATIVEINTEGER), new XMLCanRepGroup(XMLCanRepGroup::Decimal_Derived_signed)); fCanRepRegistry->put((void*) getDatatypeValidator(SchemaSymbols::fgDT_POSITIVEINTEGER), new XMLCanRepGroup(XMLCanRepGroup::Decimal_Derived_signed)); fCanRepRegistry->put((void*) getDatatypeValidator(SchemaSymbols::fgDT_NEGATIVEINTEGER), new XMLCanRepGroup(XMLCanRepGroup::Decimal_Derived_unsigned)); fCanRepRegistry->put((void*) getDatatypeValidator(SchemaSymbols::fgDT_ULONG), new XMLCanRepGroup(XMLCanRepGroup::Decimal_Derived_unsigned)); fCanRepRegistry->put((void*) getDatatypeValidator(SchemaSymbols::fgDT_UINT), new XMLCanRepGroup(XMLCanRepGroup::Decimal_Derived_unsigned)); fCanRepRegistry->put((void*) getDatatypeValidator(SchemaSymbols::fgDT_USHORT), new XMLCanRepGroup(XMLCanRepGroup::Decimal_Derived_unsigned)); fCanRepRegistry->put((void*) getDatatypeValidator(SchemaSymbols::fgDT_UBYTE), new XMLCanRepGroup(XMLCanRepGroup::Decimal_Derived_unsigned)); fCanRepRegistry->put((void*) getDatatypeValidator(SchemaSymbols::fgDT_NONPOSITIVEINTEGER), new XMLCanRepGroup(XMLCanRepGroup::Decimal_Derived_npi)); } /*** * * For any dv other than Decimaldv, return String only. * Later on if support to dv other than Decimaldv arise, we may * add them fCanRepRegistry during DatatypeValidatorFactory::initCanRepRegistory() * ***/ XMLCanRepGroup::CanRepGroup DatatypeValidatorFactory::getCanRepGroup(const DatatypeValidator* const dv) { if (!dv) return XMLCanRepGroup::String; DatatypeValidator *curdv = (DatatypeValidator*) dv; while (curdv) { if (fCanRepRegistry->containsKey(curdv)) return fCanRepRegistry->get(curdv)->getGroup(); else curdv = curdv->getBaseValidator(); } return XMLCanRepGroup::String; } DatatypeValidator* DatatypeValidatorFactory::getBuiltInBaseValidator(const DatatypeValidator* const dv) { DatatypeValidator *curdv = (DatatypeValidator*)dv; while (curdv) { if (curdv == getBuiltInRegistry()->get(curdv->getTypeLocalName())) return curdv; else curdv = curdv->getBaseValidator(); } return 0; } // --------------------------------------------------------------------------- // DatatypeValidatorFactory: factory methods // --------------------------------------------------------------------------- DatatypeValidator* DatatypeValidatorFactory::createDatatypeValidator ( const XMLCh* const typeName , DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const bool isDerivedByList , const int finalSet , const bool isUserDefined , MemoryManager* const userManager ) { if (baseValidator == 0) { if (facets) { Janitor janFacets(facets); } if (enums) { Janitor janEnums(enums); } return 0; } DatatypeValidator* datatypeValidator = 0; MemoryManager* const manager = (isUserDefined) ? userManager : XMLPlatformUtils::fgMemoryManager; if (isDerivedByList) { datatypeValidator = new (manager) ListDatatypeValidator(baseValidator, facets, enums, finalSet, manager); // Set PSVI information for Ordered, Numeric, Bounded & Finite datatypeValidator->setOrdered(XSSimpleTypeDefinition::ORDERED_FALSE); datatypeValidator->setNumeric(false); if (facets && ((facets->get(SchemaSymbols::fgELT_LENGTH) || (facets->get(SchemaSymbols::fgELT_MINLENGTH) && facets->get(SchemaSymbols::fgELT_MAXLENGTH))))) { datatypeValidator->setBounded(true); datatypeValidator->setFinite(true); } else { datatypeValidator->setBounded(false); datatypeValidator->setFinite(false); } } else { if ((baseValidator->getType() != DatatypeValidator::String) && facets) { KVStringPair* value = facets->get(SchemaSymbols::fgELT_WHITESPACE); if (value != 0) { facets->removeKey(SchemaSymbols::fgELT_WHITESPACE); } } datatypeValidator = baseValidator->newInstance ( facets , enums , finalSet , manager ); // Set PSVI information for Ordered, Numeric, Bounded & Finite datatypeValidator->setOrdered(baseValidator->getOrdered()); datatypeValidator->setNumeric(baseValidator->getNumeric()); RefHashTableOf* baseFacets = baseValidator->getFacets(); if (facets && ((facets->get(SchemaSymbols::fgELT_MININCLUSIVE) || facets->get(SchemaSymbols::fgELT_MINEXCLUSIVE) || (baseFacets && (baseFacets->get(SchemaSymbols::fgELT_MININCLUSIVE) || baseFacets->get(SchemaSymbols::fgELT_MINEXCLUSIVE))))) && (facets->get(SchemaSymbols::fgELT_MAXINCLUSIVE) || facets->get(SchemaSymbols::fgELT_MAXEXCLUSIVE) || (baseFacets && ((baseFacets->get(SchemaSymbols::fgELT_MAXINCLUSIVE) || baseFacets->get(SchemaSymbols::fgELT_MAXEXCLUSIVE)))))) { datatypeValidator->setBounded(true); } else { datatypeValidator->setBounded(false); } if (baseValidator->getFinite()) { datatypeValidator->setFinite(true); } else if (!facets) { datatypeValidator->setFinite(false); } else if (facets->get(SchemaSymbols::fgELT_LENGTH) || facets->get(SchemaSymbols::fgELT_MAXLENGTH) || facets->get(SchemaSymbols::fgELT_TOTALDIGITS)) { datatypeValidator->setFinite(true); } //for efficiency use this instead of rechecking... //else if ((facets->get(SchemaSymbols::fgELT_MININCLUSIVE) || facets->get(SchemaSymbols::fgELT_MINEXCLUSIVE)) && // (facets->get(SchemaSymbols::fgELT_MAXINCLUSIVE) || facets->get(SchemaSymbols::fgELT_MAXEXCLUSIVE))) else if (datatypeValidator->getBounded() || datatypeValidator->getType() == DatatypeValidator::Date || datatypeValidator->getType() == DatatypeValidator::YearMonth || datatypeValidator->getType() == DatatypeValidator::Year || datatypeValidator->getType() == DatatypeValidator::MonthDay || datatypeValidator->getType() == DatatypeValidator::Day || datatypeValidator->getType() == DatatypeValidator::Month) { if (facets->get(SchemaSymbols::fgELT_FRACTIONDIGITS)) { datatypeValidator->setFinite(true); } else { datatypeValidator->setFinite(false); } } else { datatypeValidator->setFinite(false); } } if (datatypeValidator != 0) { if (isUserDefined) { if (!fUserDefinedRegistry) { fUserDefinedRegistry = new (userManager) RefHashTableOf(29, userManager); } fUserDefinedRegistry->put((void *)typeName, datatypeValidator); } else { fBuiltInRegistry->put((void *)typeName, datatypeValidator); } datatypeValidator->setTypeName(typeName); } return datatypeValidator; } static DatatypeValidator::ValidatorType getPrimitiveDV(DatatypeValidator::ValidatorType validationDV) { if (validationDV == DatatypeValidator::ID || validationDV == DatatypeValidator::IDREF || validationDV == DatatypeValidator::ENTITY) { return DatatypeValidator::String; } return validationDV; } DatatypeValidator* DatatypeValidatorFactory::createDatatypeValidator ( const XMLCh* const typeName , RefVectorOf* const validators , const int finalSet , const bool userDefined , MemoryManager* const userManager ) { if (validators == 0) return 0; DatatypeValidator* datatypeValidator = 0; MemoryManager* const manager = (userDefined) ? userManager : XMLPlatformUtils::fgMemoryManager; datatypeValidator = new (manager) UnionDatatypeValidator(validators, finalSet, manager); if (datatypeValidator != 0) { if (userDefined) { if (!fUserDefinedRegistry) { fUserDefinedRegistry = new (userManager) RefHashTableOf(29, userManager); } fUserDefinedRegistry->put((void *)typeName, datatypeValidator); } else { fBuiltInRegistry->put((void *)typeName, datatypeValidator); } datatypeValidator->setTypeName(typeName); // Set PSVI information for Ordered, Numeric, Bounded & Finite XMLSize_t valSize = validators->size(); if (valSize) { DatatypeValidator::ValidatorType ancestorId = getPrimitiveDV(validators->elementAt(0)->getType()); // For a union the ORDERED {value} is partial unless one of the following: // 1. If every member of {member type definitions} is derived from a common ancestor other than the simple ur-type, then {value} is the same as that ancestor's ordered facet. // 2. If every member of {member type definitions} has a {value} of false for the ordered facet, then {value} is false. bool allOrderedFalse = true; bool commonAnc = ancestorId != DatatypeValidator::AnySimpleType; bool allNumeric = true; bool allBounded = true; bool allFinite = true; for(XMLSize_t i = 0 ; (i < valSize) && (commonAnc || allOrderedFalse || allNumeric || allBounded || allFinite); i++) { // for the other member types, check whether the value is false // and whether they have the same ancestor as the first one if (commonAnc) commonAnc = ancestorId == getPrimitiveDV(validators->elementAt(i)->getType()); if (allOrderedFalse) allOrderedFalse = validators->elementAt(i)->getOrdered() == XSSimpleTypeDefinition::ORDERED_FALSE; if (allNumeric && !validators->elementAt(i)->getNumeric()) { allNumeric = false; } if (allBounded && (!validators->elementAt(i)->getBounded() || ancestorId != getPrimitiveDV(validators->elementAt(i)->getType()))) { allBounded = false; } if (allFinite && !validators->elementAt(i)->getFinite()) { allFinite = false; } } if (commonAnc) { datatypeValidator->setOrdered(validators->elementAt(0)->getOrdered()); } else if (allOrderedFalse) { datatypeValidator->setOrdered(XSSimpleTypeDefinition::ORDERED_FALSE); } else { datatypeValidator->setOrdered(XSSimpleTypeDefinition::ORDERED_PARTIAL); } datatypeValidator->setNumeric(allNumeric); datatypeValidator->setBounded(allBounded); datatypeValidator->setFinite(allFinite); } else // size = 0 { datatypeValidator->setOrdered(XSSimpleTypeDefinition::ORDERED_PARTIAL); datatypeValidator->setNumeric(true); datatypeValidator->setBounded(true); datatypeValidator->setFinite(true); } } return datatypeValidator; } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(DatatypeValidatorFactory) void DatatypeValidatorFactory::serialize(XSerializeEngine& serEng) { // Need not to serialize static data member, fBuiltInRegistry if (serEng.isStoring()) { /*** * Serialize RefHashTableOf ***/ XTemplateSerializer::storeObject(fUserDefinedRegistry, serEng); } else { /*** * Deserialize RefHashTableOf ***/ XTemplateSerializer::loadObject(&fUserDefinedRegistry, 29, true, serEng); } } XERCES_CPP_NAMESPACE_END /** * End of file DatatypeValidatorFactory.cpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/QNameDatatypeValidator.hpp0000644000175000017500000000673110674234374025546 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: QNameDatatypeValidator.hpp 577322 2007-09-19 14:58:04Z cargilld $ */ #if !defined(XERCESC_INCLUDE_GUARD_QNAME_DATATYPEVALIDATOR_HPP) #define XERCESC_INCLUDE_GUARD_QNAME_DATATYPEVALIDATOR_HPP #include XERCES_CPP_NAMESPACE_BEGIN class VALIDATORS_EXPORT QNameDatatypeValidator : public AbstractStringValidator { public: // ----------------------------------------------------------------------- // Public ctor/dtor // ----------------------------------------------------------------------- /** @name Constructors and Destructor */ //@{ QNameDatatypeValidator ( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); QNameDatatypeValidator ( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual ~QNameDatatypeValidator(); //@} /** * Returns an instance of the base datatype validator class * Used by the DatatypeValidatorFactory. */ virtual DatatypeValidator* newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(QNameDatatypeValidator) protected: virtual void checkValueSpace(const XMLCh* const content , MemoryManager* const manager); virtual void checkContent(const XMLCh* const content , ValidationContext* const context , bool asBase , MemoryManager* const manager); virtual void inspectFacetBase(MemoryManager* const manager); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- QNameDatatypeValidator(const QNameDatatypeValidator&); QNameDatatypeValidator& operator=(const QNameDatatypeValidator&); // ----------------------------------------------------------------------- // Private data members // // Nil // ----------------------------------------------------------------------- }; XERCES_CPP_NAMESPACE_END #endif /** * End of file QNameDatatypeValidator.hpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/MonthDatatypeValidator.hpp0000644000175000017500000000617010606722647025627 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: MonthDatatypeValidator.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_MONTH_DATATYPE_VALIDATOR_HPP) #define XERCESC_INCLUDE_GUARD_MONTH_DATATYPE_VALIDATOR_HPP #include XERCES_CPP_NAMESPACE_BEGIN class VALIDATORS_EXPORT MonthDatatypeValidator : public DateTimeValidator { public: // ----------------------------------------------------------------------- // Public ctor/dtor // ----------------------------------------------------------------------- /** @name Constructors and Destructor */ //@{ MonthDatatypeValidator ( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); MonthDatatypeValidator ( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); ~MonthDatatypeValidator(); //@} /** * Returns an instance of the base datatype validator class * Used by the DatatypeValidatorFactory. */ virtual DatatypeValidator* newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(MonthDatatypeValidator) protected: // ----------------------------------------------------------------------- // implementation of (DateTimeValidator's) virtual interface // ----------------------------------------------------------------------- virtual XMLDateTime* parse(const XMLCh* const, MemoryManager* const manager); virtual void parse(XMLDateTime* const); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- MonthDatatypeValidator(const MonthDatatypeValidator&); MonthDatatypeValidator& operator=(const MonthDatatypeValidator&); }; XERCES_CPP_NAMESPACE_END #endif /** * End of file MonthDatatypeValidator.hpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/XMLCanRepGroup.cpp0000644000175000017500000000244710523643534023737 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLCanRepGroup.cpp 471747 2006-11-06 14:31:56Z amassari $ * */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include XERCES_CPP_NAMESPACE_BEGIN XMLCanRepGroup::~XMLCanRepGroup() { } XMLCanRepGroup::XMLCanRepGroup(CanRepGroup val) :fData(val) { } XERCES_CPP_NAMESPACE_END /** * End of file DatatypeValidator.cpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/AbstractNumericFacetValidator.cpp0000644000175000017500000010370410523643534027066 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: AbstractNumericFacetValidator.cpp 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include //since we need to dynamically created each and every derivatives //during deserialization by XSerializeEngine>>Derivative, we got //to include all hpp #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN const int AbstractNumericFacetValidator::INDETERMINATE = 2; #define REPORT_FACET_ERROR(val1, val2, except_code, manager) \ ThrowXMLwithMemMgr2(InvalidDatatypeFacetException \ , except_code \ , val1->getFormattedString() \ , val2->getFormattedString() \ , manager); #define FROM_BASE_VALUE_SPACE(val, facetFlag, except_code, manager) \ if ((thisFacetsDefined & facetFlag) != 0) \ { \ try \ { \ numBase->checkContent(val->getRawData(), (ValidationContext*)0, false, manager); \ } \ catch ( XMLException& ) \ { \ ThrowXMLwithMemMgr1(InvalidDatatypeFacetException \ , except_code \ , val->getRawData() \ , manager); \ } \ } // --------------------------------------------------------------------------- // Constructors and Destructor // --------------------------------------------------------------------------- AbstractNumericFacetValidator::~AbstractNumericFacetValidator() { if (!fMaxInclusiveInherited && fMaxInclusive) delete fMaxInclusive; if (!fMaxExclusiveInherited && fMaxExclusive) delete fMaxExclusive; if (!fMinInclusiveInherited && fMinInclusive) delete fMinInclusive; if (!fMinExclusiveInherited && fMinExclusive) delete fMinExclusive; //~RefVectorOf will delete all adopted elements if (!fEnumerationInherited && fEnumeration) delete fEnumeration; if (!fEnumerationInherited && fStrEnumeration) delete fStrEnumeration; } AbstractNumericFacetValidator::AbstractNumericFacetValidator( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , const int finalSet , const ValidatorType type , MemoryManager* const manager) :DatatypeValidator(baseValidator, facets, finalSet, type, manager) , fMaxInclusiveInherited(false) , fMaxExclusiveInherited(false) , fMinInclusiveInherited(false) , fMinExclusiveInherited(false) , fEnumerationInherited(false) , fMaxInclusive(0) , fMaxExclusive(0) , fMinInclusive(0) , fMinExclusive(0) , fEnumeration(0) , fStrEnumeration(0) { //do not invoke init() here !!! } // // P1. Enumeration // void AbstractNumericFacetValidator::init(RefArrayVectorOf* const enums , MemoryManager* const manager) { fStrEnumeration = enums; // save the literal value // which is needed for getEnumString() if (enums) { setFacetsDefined(DatatypeValidator::FACET_ENUMERATION); } assignFacet(manager); inspectFacet(manager); inspectFacetBase(manager); inheritFacet(); } // // Assign facets // assign common facets // assign additional facet // void AbstractNumericFacetValidator::assignFacet(MemoryManager* const manager) { RefHashTableOf* facets = getFacets(); if (!facets) // no facets defined return; XMLCh* key; RefHashTableOfEnumerator e(facets, false, manager); while (e.hasMoreElements()) { KVStringPair pair = e.nextElement(); key = pair.getKey(); XMLCh* value = pair.getValue(); if (XMLString::equals(key, SchemaSymbols::fgELT_PATTERN)) { setPattern(value); if (getPattern()) setFacetsDefined(DatatypeValidator::FACET_PATTERN); // do not construct regex until needed } else if (XMLString::equals(key, SchemaSymbols::fgELT_MAXINCLUSIVE)) { try { setMaxInclusive(value); } catch (NumberFormatException&) { ThrowXMLwithMemMgr1(InvalidDatatypeFacetException, XMLExcepts::FACET_Invalid_MaxIncl, value, manager); } setFacetsDefined(DatatypeValidator::FACET_MAXINCLUSIVE); } else if (XMLString::equals(key, SchemaSymbols::fgELT_MAXEXCLUSIVE)) { try { setMaxExclusive(value); } catch (NumberFormatException&) { ThrowXMLwithMemMgr1(InvalidDatatypeFacetException, XMLExcepts::FACET_Invalid_MaxExcl, value, manager); } setFacetsDefined(DatatypeValidator::FACET_MAXEXCLUSIVE); } else if (XMLString::equals(key, SchemaSymbols::fgELT_MININCLUSIVE)) { try { setMinInclusive(value); } catch (NumberFormatException&) { ThrowXMLwithMemMgr1(InvalidDatatypeFacetException, XMLExcepts::FACET_Invalid_MinIncl, value, manager); } setFacetsDefined(DatatypeValidator::FACET_MININCLUSIVE); } else if (XMLString::equals(key, SchemaSymbols::fgELT_MINEXCLUSIVE)) { try { setMinExclusive(value); } catch (NumberFormatException&) { ThrowXMLwithMemMgr1(InvalidDatatypeFacetException, XMLExcepts::FACET_Invalid_MinExcl, value, manager); } setFacetsDefined(DatatypeValidator::FACET_MINEXCLUSIVE); } else if (XMLString::equals(key, SchemaSymbols::fgATT_FIXED)) { unsigned int val; bool retStatus; try { retStatus = XMLString::textToBin(value, val, fMemoryManager); } catch (RuntimeException&) { ThrowXMLwithMemMgr(InvalidDatatypeFacetException, XMLExcepts::FACET_internalError_fixed, manager); } if (!retStatus) { ThrowXMLwithMemMgr(InvalidDatatypeFacetException, XMLExcepts::FACET_internalError_fixed, manager); } setFixed(val); //no setFacetsDefined here } else { assignAdditionalFacet(key, value, manager); } }//while }// end of assigneFacet() // // Check facet among self // check common facets // check Additional Facet Constraint // void AbstractNumericFacetValidator::inspectFacet(MemoryManager* const manager) { int thisFacetsDefined = getFacetsDefined(); XMLNumber *thisMaxInclusive = getMaxInclusive(); XMLNumber *thisMaxExclusive = getMaxExclusive(); XMLNumber *thisMinInclusive = getMinInclusive(); XMLNumber *thisMinExclusive = getMinExclusive(); if (!thisFacetsDefined) return; // non co-existence checking // check 4.3.8.c1 error: maxInclusive + maxExclusive if (((thisFacetsDefined & DatatypeValidator::FACET_MAXEXCLUSIVE) != 0) && ((thisFacetsDefined & DatatypeValidator::FACET_MAXINCLUSIVE) != 0) ) ThrowXMLwithMemMgr(InvalidDatatypeFacetException, XMLExcepts::FACET_max_Incl_Excl, manager); // non co-existence checking // check 4.3.9.c1 error: minInclusive + minExclusive if (((thisFacetsDefined & DatatypeValidator::FACET_MINEXCLUSIVE) != 0) && ((thisFacetsDefined & DatatypeValidator::FACET_MININCLUSIVE) != 0) ) ThrowXMLwithMemMgr(InvalidDatatypeFacetException, XMLExcepts::FACET_min_Incl_Excl, manager); // // minExclusive < minInclusive <= maxInclusive < maxExclusive // // check 4.3.7.c1 must: minInclusive <= maxInclusive if (((thisFacetsDefined & DatatypeValidator::FACET_MAXINCLUSIVE) != 0) && ((thisFacetsDefined & DatatypeValidator::FACET_MININCLUSIVE) != 0) ) { int result = compareValues(thisMinInclusive, thisMaxInclusive); if ( result == 1 || result == INDETERMINATE ) { REPORT_FACET_ERROR(thisMinInclusive , thisMaxInclusive , XMLExcepts::FACET_maxIncl_minIncl , manager) } } // check 4.3.8.c2 must: minExclusive <= maxExclusive if ( ((thisFacetsDefined & DatatypeValidator::FACET_MAXEXCLUSIVE) != 0) && ((thisFacetsDefined & DatatypeValidator::FACET_MINEXCLUSIVE) != 0) ) { int result = compareValues(getMinExclusive(), getMaxExclusive()); if ( result == 1 || result == INDETERMINATE ) { REPORT_FACET_ERROR(thisMinExclusive , thisMaxExclusive , XMLExcepts::FACET_maxExcl_minExcl , manager) } } // check 4.3.9.c2 must: minExclusive < maxInclusive if ( ((thisFacetsDefined & DatatypeValidator::FACET_MAXINCLUSIVE) != 0) && ((thisFacetsDefined & DatatypeValidator::FACET_MINEXCLUSIVE) != 0) ) { int result = compareValues(getMinExclusive(), getMaxInclusive()); if ( result != -1 ) { REPORT_FACET_ERROR(thisMinExclusive , thisMaxInclusive , XMLExcepts::FACET_maxIncl_minExcl , manager) } } // check 4.3.10.c1 must: minInclusive < maxExclusive if ( ((thisFacetsDefined & DatatypeValidator::FACET_MAXEXCLUSIVE) != 0) && ((thisFacetsDefined & DatatypeValidator::FACET_MININCLUSIVE) != 0) ) { int result = compareValues(getMinInclusive(), getMaxExclusive()); if ( result != -1) { REPORT_FACET_ERROR(thisMinInclusive , thisMaxExclusive , XMLExcepts::FACET_maxExcl_minIncl , manager) } } checkAdditionalFacetConstraints(manager); }// end of inspectFacet() // // Check vs base // check common facets // check enumeration // check Additional Facet Constraint // void AbstractNumericFacetValidator::inspectFacetBase(MemoryManager* const manager) { AbstractNumericFacetValidator* numBase = (AbstractNumericFacetValidator*) getBaseValidator(); int thisFacetsDefined = getFacetsDefined(); if ( (!thisFacetsDefined && !fEnumeration) || !numBase ) return; int baseFacetsDefined = numBase->getFacetsDefined(); XMLNumber *thisMaxInclusive = getMaxInclusive(); XMLNumber *thisMaxExclusive = getMaxExclusive(); XMLNumber *thisMinInclusive = getMinInclusive(); XMLNumber *thisMinExclusive = getMinExclusive(); XMLNumber *baseMaxInclusive = numBase->getMaxInclusive(); XMLNumber *baseMaxExclusive = numBase->getMaxExclusive(); XMLNumber *baseMinInclusive = numBase->getMinInclusive(); XMLNumber *baseMinExclusive = numBase->getMinExclusive(); int baseFixed = numBase->getFixed(); // this // minExclusive maxExclusive // minInclusive maxInclusive // // base // minExclusive maxExclusive // minInclusive maxInclusive // // check 4.3.7.c2 error: // maxInclusive > base.maxInclusive && maxInclusive != base.maxInclusive if (base.fixed) // maxInclusive >= base.maxExclusive // maxInclusive < base.minInclusive // maxInclusive <= base.minExclusive if ((thisFacetsDefined & DatatypeValidator::FACET_MAXINCLUSIVE) != 0) { if ((baseFacetsDefined & DatatypeValidator::FACET_MAXINCLUSIVE) != 0) { int result = compareValues(thisMaxInclusive, baseMaxInclusive); if (((baseFixed & DatatypeValidator::FACET_MAXINCLUSIVE) != 0) && (result != 0 )) { REPORT_FACET_ERROR(thisMaxInclusive , baseMaxInclusive , XMLExcepts::FACET_maxIncl_base_fixed , manager) } if (result == 1 || result == INDETERMINATE) { REPORT_FACET_ERROR(thisMaxInclusive , baseMaxInclusive , XMLExcepts::FACET_maxIncl_base_maxIncl , manager) } } if ((baseFacetsDefined & DatatypeValidator::FACET_MAXEXCLUSIVE) != 0) { int result = compareValues(thisMaxInclusive, baseMaxExclusive); if (result != -1 ) { REPORT_FACET_ERROR(thisMaxInclusive , baseMaxExclusive , XMLExcepts::FACET_maxIncl_base_maxExcl , manager) } } if ((baseFacetsDefined & DatatypeValidator::FACET_MININCLUSIVE) != 0) { int result = compareValues(thisMaxInclusive, baseMinInclusive); if (result == -1 || result == INDETERMINATE) { REPORT_FACET_ERROR(thisMaxInclusive , baseMinInclusive , XMLExcepts::FACET_maxIncl_base_minIncl , manager) } } if ((baseFacetsDefined & DatatypeValidator::FACET_MINEXCLUSIVE) != 0) { int result = compareValues(thisMaxInclusive, baseMinExclusive); if (result != 1 ) { REPORT_FACET_ERROR(thisMaxInclusive , baseMinExclusive , XMLExcepts::FACET_maxIncl_base_minExcl , manager) } } } // check 4.3.8.c3 error: // maxExclusive > base.maxExclusive && maxExclusive != base.maxExclusive if (base.fixed) // maxExclusive > base.maxInclusive // maxExclusive <= base.minInclusive // maxExclusive <= base.minExclusive if ((thisFacetsDefined & DatatypeValidator::FACET_MAXEXCLUSIVE) != 0) { if (( baseFacetsDefined & DatatypeValidator::FACET_MAXEXCLUSIVE) != 0) { int result = compareValues(thisMaxExclusive, baseMaxExclusive); if (((baseFixed & DatatypeValidator::FACET_MAXEXCLUSIVE) != 0) && (result != 0 )) { REPORT_FACET_ERROR(thisMaxExclusive , baseMaxExclusive , XMLExcepts::FACET_maxExcl_base_fixed , manager) } if (result == 1 || result == INDETERMINATE) { REPORT_FACET_ERROR(thisMaxExclusive , baseMaxExclusive , XMLExcepts::FACET_maxExcl_base_maxExcl , manager) } /** * Schema Errata * E2-16 maxExclusive * * derived type's maxExclusive must either be * 1) equal to base' maxExclusive or * 2) from the base type value space * */ if (result != 0) { FROM_BASE_VALUE_SPACE(thisMaxExclusive , DatatypeValidator::FACET_MAXEXCLUSIVE , XMLExcepts::FACET_maxExcl_notFromBase , manager) } } else // base has no maxExclusive { FROM_BASE_VALUE_SPACE(thisMaxExclusive , DatatypeValidator::FACET_MAXEXCLUSIVE , XMLExcepts::FACET_maxExcl_notFromBase , manager) } if (( baseFacetsDefined & DatatypeValidator::FACET_MAXINCLUSIVE) != 0) { int result = compareValues(thisMaxExclusive, baseMaxInclusive); if (result == 1 || result == INDETERMINATE) { REPORT_FACET_ERROR(thisMaxExclusive , baseMaxInclusive , XMLExcepts::FACET_maxExcl_base_maxIncl , manager) } } if (( baseFacetsDefined & DatatypeValidator::FACET_MINEXCLUSIVE) != 0) { int result = compareValues(thisMaxExclusive, baseMinExclusive); if (result != 1) { REPORT_FACET_ERROR(thisMaxExclusive , baseMinExclusive , XMLExcepts::FACET_maxExcl_base_minExcl , manager) } } if (( baseFacetsDefined & DatatypeValidator::FACET_MININCLUSIVE) != 0) { int result = compareValues(thisMaxExclusive, baseMinInclusive); if (result != 1) { REPORT_FACET_ERROR(thisMaxExclusive , baseMinInclusive , XMLExcepts::FACET_maxExcl_base_minIncl , manager) } } } // check 4.3.9.c3 error: // minExclusive < base.minExclusive minExclusive != base.minExclusive if (base.fixed) // minExclusive > base.maxInclusive ??? minExclusive >= base.maxInclusive // minExclusive < base.minInclusive // minExclusive >= base.maxExclusive if ((thisFacetsDefined & DatatypeValidator::FACET_MINEXCLUSIVE) != 0) { if (( baseFacetsDefined & DatatypeValidator::FACET_MINEXCLUSIVE) != 0) { int result = compareValues(thisMinExclusive, baseMinExclusive); if (((baseFixed & DatatypeValidator::FACET_MINEXCLUSIVE) != 0) && (result != 0 )) { REPORT_FACET_ERROR(thisMinExclusive , baseMinExclusive , XMLExcepts::FACET_minExcl_base_fixed , manager) } if (result == -1 || result == INDETERMINATE) { REPORT_FACET_ERROR(thisMinExclusive , baseMinExclusive , XMLExcepts::FACET_minExcl_base_minExcl , manager) } /** * Schema Errata * E2-16 maxExclusive * * derived type's minExclusive must either be * 1) equal to base' minxExclusive or * 2) from the base type value space * * Note: deduced from, not explicitly expressed in the Errata */ if (result != 0) { FROM_BASE_VALUE_SPACE(thisMinExclusive , DatatypeValidator::FACET_MINEXCLUSIVE , XMLExcepts::FACET_minExcl_notFromBase , manager) } } else // base has no minExclusive { FROM_BASE_VALUE_SPACE(thisMinExclusive , DatatypeValidator::FACET_MINEXCLUSIVE , XMLExcepts::FACET_minExcl_notFromBase , manager) } if (( baseFacetsDefined & DatatypeValidator::FACET_MAXINCLUSIVE) != 0) { int result = compareValues(thisMinExclusive, baseMaxInclusive); if (result == 1 || result == INDETERMINATE) { REPORT_FACET_ERROR(thisMinExclusive , baseMaxInclusive , XMLExcepts::FACET_minExcl_base_maxIncl , manager) } } if (( baseFacetsDefined & DatatypeValidator::FACET_MININCLUSIVE) != 0) { int result = compareValues(thisMinExclusive, baseMinInclusive); if (result == -1 || result == INDETERMINATE) { REPORT_FACET_ERROR(thisMinExclusive , baseMinInclusive , XMLExcepts::FACET_minExcl_base_minIncl , manager) } } if (( baseFacetsDefined & DatatypeValidator::FACET_MAXEXCLUSIVE) != 0) { int result = compareValues(thisMinExclusive, baseMaxExclusive); if (result != -1) { REPORT_FACET_ERROR(thisMinExclusive , baseMaxExclusive , XMLExcepts::FACET_minExcl_base_maxExcl , manager) } } } // check 4.3.10.c2 error: // minInclusive < base.minInclusive minInclusive != base.minInclusive if (base.fixed) // minInclusive > base.maxInclusive // minInclusive <= base.minExclusive // minInclusive >= base.maxExclusive if ((thisFacetsDefined & DatatypeValidator::FACET_MININCLUSIVE) != 0) { if ((baseFacetsDefined & DatatypeValidator::FACET_MININCLUSIVE) != 0) { int result = compareValues(thisMinInclusive, baseMinInclusive); if (((baseFixed & DatatypeValidator::FACET_MININCLUSIVE) != 0) && (result != 0 )) { REPORT_FACET_ERROR(thisMinInclusive , baseMinInclusive , XMLExcepts::FACET_minIncl_base_fixed , manager) } if (result == -1 || result == INDETERMINATE) { REPORT_FACET_ERROR(thisMinInclusive , baseMinInclusive , XMLExcepts::FACET_minIncl_base_minIncl , manager) } } if (( baseFacetsDefined & DatatypeValidator::FACET_MAXINCLUSIVE) != 0) { int result = compareValues(thisMinInclusive, baseMaxInclusive); if (result == 1 || result == INDETERMINATE) { REPORT_FACET_ERROR(thisMinInclusive , baseMaxInclusive , XMLExcepts::FACET_minIncl_base_maxIncl , manager) } } if (( baseFacetsDefined & DatatypeValidator::FACET_MINEXCLUSIVE) != 0) { int result = compareValues(thisMinInclusive, baseMinExclusive); if (result != 1) { REPORT_FACET_ERROR(thisMinInclusive , baseMinExclusive , XMLExcepts::FACET_minIncl_base_minExcl , manager) } } if (( baseFacetsDefined & DatatypeValidator::FACET_MAXEXCLUSIVE) != 0) { int result = compareValues(thisMinInclusive, baseMaxExclusive); if (result != -1) { REPORT_FACET_ERROR(thisMinInclusive , baseMaxExclusive , XMLExcepts::FACET_minIncl_base_maxExcl , manager) } } } checkAdditionalFacetConstraintsBase(manager); // check 4.3.5.c0 must: enumeration values from the value space of base // // In fact, the values in the enumeration shall go through validation // of this class as well. // this->checkContent(value, false); // if ( ((thisFacetsDefined & DatatypeValidator::FACET_ENUMERATION) != 0) && ( fStrEnumeration )) { setEnumeration(manager); } // // maxInclusive, maxExclusive, minInclusive and minExclusive // shall come from the base's value space as well // FROM_BASE_VALUE_SPACE(thisMaxInclusive , DatatypeValidator::FACET_MAXINCLUSIVE , XMLExcepts::FACET_maxIncl_notFromBase , manager) FROM_BASE_VALUE_SPACE(thisMinInclusive , DatatypeValidator::FACET_MININCLUSIVE , XMLExcepts::FACET_minIncl_notFromBase , manager) } //end of inspectFacetBase // // Inherit facet from base // a. inherit common facets // b. inherit additional facet // void AbstractNumericFacetValidator::inheritFacet() { AbstractNumericFacetValidator* numBase = (AbstractNumericFacetValidator*) getBaseValidator(); if (!numBase) return; int thisFacetsDefined = getFacetsDefined(); int baseFacetsDefined = numBase->getFacetsDefined(); // inherit enumeration if ((( baseFacetsDefined & DatatypeValidator::FACET_ENUMERATION) != 0) && (( thisFacetsDefined & DatatypeValidator::FACET_ENUMERATION) == 0)) { fEnumeration = numBase->fEnumeration; fEnumerationInherited = true; setFacetsDefined(DatatypeValidator::FACET_ENUMERATION); } // inherit maxInclusive if ((( baseFacetsDefined & DatatypeValidator::FACET_MAXINCLUSIVE) != 0) && (( thisFacetsDefined & DatatypeValidator::FACET_MAXEXCLUSIVE) == 0) && (( thisFacetsDefined & DatatypeValidator::FACET_MAXINCLUSIVE) == 0) ) { fMaxInclusive = numBase->getMaxInclusive(); fMaxInclusiveInherited = true; setFacetsDefined(DatatypeValidator::FACET_MAXINCLUSIVE); } // inherit maxExclusive if ((( baseFacetsDefined & DatatypeValidator::FACET_MAXEXCLUSIVE) != 0) && (( thisFacetsDefined & DatatypeValidator::FACET_MAXEXCLUSIVE) == 0) && (( thisFacetsDefined & DatatypeValidator::FACET_MAXINCLUSIVE) == 0) ) { fMaxExclusive = numBase->getMaxExclusive(); fMaxExclusiveInherited = true; setFacetsDefined(DatatypeValidator::FACET_MAXEXCLUSIVE); } // inherit minExclusive if ((( baseFacetsDefined & DatatypeValidator::FACET_MININCLUSIVE) != 0) && (( thisFacetsDefined & DatatypeValidator::FACET_MINEXCLUSIVE) == 0) && (( thisFacetsDefined & DatatypeValidator::FACET_MININCLUSIVE) == 0) ) { fMinInclusive = numBase->getMinInclusive(); fMinInclusiveInherited = true; setFacetsDefined(DatatypeValidator::FACET_MININCLUSIVE); } // inherit minExclusive if ((( baseFacetsDefined & DatatypeValidator::FACET_MINEXCLUSIVE) != 0) && (( thisFacetsDefined & DatatypeValidator::FACET_MINEXCLUSIVE) == 0) && (( thisFacetsDefined & DatatypeValidator::FACET_MININCLUSIVE) == 0) ) { fMinExclusive = numBase->getMinExclusive(); fMinExclusiveInherited = true; setFacetsDefined(DatatypeValidator::FACET_MINEXCLUSIVE); } inheritAdditionalFacet(); // inherit "fixed" option setFixed(getFixed() | numBase->getFixed()); } const RefArrayVectorOf* AbstractNumericFacetValidator::getEnumString() const { return (fEnumerationInherited? getBaseValidator()->getEnumString() : fStrEnumeration ); } void AbstractNumericFacetValidator::checkAdditionalFacetConstraints(MemoryManager* const) const { return; } void AbstractNumericFacetValidator::checkAdditionalFacetConstraintsBase(MemoryManager* const) const { return; } void AbstractNumericFacetValidator::inheritAdditionalFacet() { return; } void AbstractNumericFacetValidator::assignAdditionalFacet( const XMLCh* const key , const XMLCh* const , MemoryManager* const manager) { ThrowXMLwithMemMgr1(InvalidDatatypeFacetException , XMLExcepts::FACET_Invalid_Tag , key , manager); } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_NOCREATE(AbstractNumericFacetValidator) /*** * This dv needs to serialize/deserialize four boundary data members * which are derivatives of XMLlNumber. * The derivatives of this class, namely, Deciamldv, Doubledv, Floatdv and * DateTimedv needs to write a typeEnum into the binary data stream, so * during loading, this method reads the typeEnum first, and then instantiate * the right type of objects, say XMLDouble, XMLFloat, XMLBigDecimal and * XMLDateTime. * * ***/ void AbstractNumericFacetValidator::serialize(XSerializeEngine& serEng) { if (serEng.isStoring()) { /*** * don't move this line out of the if statement, * it is done purposely to allow AbstractNumericFacetValidator * read the number type information before DatatypeValidator * during loading ***/ DatatypeValidator::serialize(serEng); // need not write type info for the XMLNumber since // the derivative class has done that storeClusive(serEng, fMaxInclusiveInherited, fMaxInclusive); storeClusive(serEng, fMaxExclusiveInherited, fMaxExclusive); storeClusive(serEng, fMinInclusiveInherited, fMinInclusive); storeClusive(serEng, fMinExclusiveInherited, fMinExclusive); serEng< * Serialize RefVectorOf ***/ XTemplateSerializer::storeObject(fStrEnumeration, serEng); XTemplateSerializer::storeObject(fEnumeration, serEng); } else { // Read the number type info for the XMLNumber FIRST!!! int nType; XMLNumber::NumberType numType; serEng>>nType; numType = (XMLNumber::NumberType) nType; DatatypeValidator::serialize(serEng); loadClusive(serEng, fMaxInclusiveInherited, fMaxInclusive, numType, 1); loadClusive(serEng, fMaxExclusiveInherited, fMaxExclusive, numType, 2); loadClusive(serEng, fMinInclusiveInherited, fMinInclusive, numType, 3); loadClusive(serEng, fMinExclusiveInherited, fMinExclusive, numType, 4); serEng>>fEnumerationInherited; /*** * Deserialize RefArrayVectorOf * Deserialize RefVectorOf ***/ XTemplateSerializer::loadObject(&fStrEnumeration, 8, true, serEng); XTemplateSerializer::loadObject(&fEnumeration, 8, true, numType, serEng); } } // // A user defined dv may inherit any of the Max/Min/Inc/Exc from a // built dv, which will create its own Max/Min/Inc/Exc during the // loading. Therefore if the user defined store and load this // facet, and does not own it, that will cause leakage. // // To avoid checking if the facet belongs to a builtIn dv or not, we // do this way, for any inherited *clusive, we will not store it, and later // on during loading, we get it from the base dv. // void AbstractNumericFacetValidator::storeClusive(XSerializeEngine& serEng , bool inherited , XMLNumber* data) { serEng<>inherited; if (!inherited) data = XMLNumber::loadNumber(numType, serEng); else { AbstractNumericFacetValidator* basedv = (AbstractNumericFacetValidator*) getBaseValidator(); switch(flag) { case 1: data = basedv->getMaxInclusive(); break; case 2: data = basedv->getMaxExclusive(); break; case 3: data = basedv->getMinInclusive(); break; case 4: data = basedv->getMinExclusive(); break; default: break; } } } XERCES_CPP_NAMESPACE_END /** * End of file AbstractNumericFacetValidator::cpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/MonthDayDatatypeValidator.hpp0000644000175000017500000000623710606722647026271 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: MonthDayDatatypeValidator.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_MONTHDAY_DATATYPE_VALIDATOR_HPP) #define XERCESC_INCLUDE_GUARD_MONTHDAY_DATATYPE_VALIDATOR_HPP #include XERCES_CPP_NAMESPACE_BEGIN class VALIDATORS_EXPORT MonthDayDatatypeValidator : public DateTimeValidator { public: // ----------------------------------------------------------------------- // Public ctor/dtor // ----------------------------------------------------------------------- /** @name Constructors and Destructor */ //@{ MonthDayDatatypeValidator ( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); MonthDayDatatypeValidator ( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); ~MonthDayDatatypeValidator(); //@} /** * Returns an instance of the base datatype validator class * Used by the DatatypeValidatorFactory. */ virtual DatatypeValidator* newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(MonthDayDatatypeValidator) protected: // ----------------------------------------------------------------------- // implementation of (DateTimeValidator's) virtual interface // ----------------------------------------------------------------------- virtual XMLDateTime* parse(const XMLCh* const, MemoryManager* const manager); virtual void parse(XMLDateTime* const); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- MonthDayDatatypeValidator(const MonthDayDatatypeValidator&); MonthDayDatatypeValidator& operator=(const MonthDayDatatypeValidator&); }; XERCES_CPP_NAMESPACE_END #endif /** * End of file MonthDayDatatypeValidator.hpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/DateTimeDatatypeValidator.hpp0000644000175000017500000000672410606722647026243 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DateTimeDatatypeValidator.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DATETIME_DATATYPE_VALIDATOR_HPP) #define XERCESC_INCLUDE_GUARD_DATETIME_DATATYPE_VALIDATOR_HPP #include XERCES_CPP_NAMESPACE_BEGIN class VALIDATORS_EXPORT DateTimeDatatypeValidator : public DateTimeValidator { public: // ----------------------------------------------------------------------- // Public ctor/dtor // ----------------------------------------------------------------------- /** @name Constructors and Destructor */ //@{ DateTimeDatatypeValidator ( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); DateTimeDatatypeValidator ( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); ~DateTimeDatatypeValidator(); //@} /** * Returns an instance of the base datatype validator class * Used by the DatatypeValidatorFactory. */ virtual DatatypeValidator* newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual const XMLCh* getCanonicalRepresentation ( const XMLCh* const rawData , MemoryManager* const memMgr = 0 , bool toValidate = false ) const; /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(DateTimeDatatypeValidator) protected: // ----------------------------------------------------------------------- // implementation of (DateTimeValidator's) virtual interface // ----------------------------------------------------------------------- virtual XMLDateTime* parse(const XMLCh* const, MemoryManager* const manager); virtual void parse(XMLDateTime* const); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DateTimeDatatypeValidator(const DateTimeDatatypeValidator&); DateTimeDatatypeValidator& operator=(const DateTimeDatatypeValidator&); }; XERCES_CPP_NAMESPACE_END #endif /** * End of file DateTimeDatatypeValidator.hpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/AnySimpleTypeDatatypeValidator.hpp0000644000175000017500000001305710766456265027316 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: AnySimpleTypeDatatypeValidator.hpp 637054 2008-03-14 11:08:37Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_ANYSIMPLETYPEDATATYPEVALIDATOR_HPP) #define XERCESC_INCLUDE_GUARD_ANYSIMPLETYPEDATATYPEVALIDATOR_HPP #include XERCES_CPP_NAMESPACE_BEGIN class VALIDATORS_EXPORT AnySimpleTypeDatatypeValidator : public DatatypeValidator { public: // ----------------------------------------------------------------------- // Public Constructor // ----------------------------------------------------------------------- /** @name Constructor */ //@{ AnySimpleTypeDatatypeValidator ( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); //@} // ----------------------------------------------------------------------- // Public Destructor // ----------------------------------------------------------------------- /** @name Destructor. */ //@{ virtual ~AnySimpleTypeDatatypeValidator(); //@} virtual const RefArrayVectorOf* getEnumString() const; // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- /** @name Getter Functions */ //@{ /** * Returns whether the type is atomic or not */ virtual bool isAtomic() const; //@} // ----------------------------------------------------------------------- // Validation methods // ----------------------------------------------------------------------- /** @name Validation Function */ //@{ /** * Checks that the "content" string is valid datatype. * If invalid, a Datatype validation exception is thrown. * * @param content A string containing the content to be validated * */ virtual void validate ( const XMLCh* const content , ValidationContext* const context = 0 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /** * Checks whether a given type can be used as a substitute * * @param toCheck A datatype validator of the type to be used as a * substitute * */ virtual bool isSubstitutableBy(const DatatypeValidator* const toCheck); //@} // ----------------------------------------------------------------------- // Compare methods // ----------------------------------------------------------------------- /** @name Compare Function */ //@{ /** * Compares content in the Domain value vs. lexical value. * * @param value1 string to compare * * @param value2 string to compare * */ virtual int compare(const XMLCh* const value1, const XMLCh* const value2 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); //@} /** * Returns an instance of the base datatype validator class * Used by the DatatypeValidatorFactory. */ virtual DatatypeValidator* newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(AnySimpleTypeDatatypeValidator) private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- AnySimpleTypeDatatypeValidator(const AnySimpleTypeDatatypeValidator&); AnySimpleTypeDatatypeValidator& operator=(const AnySimpleTypeDatatypeValidator&); }; // --------------------------------------------------------------------------- // DatatypeValidator: Getters // --------------------------------------------------------------------------- inline bool AnySimpleTypeDatatypeValidator::isAtomic() const { return false; } // --------------------------------------------------------------------------- // DatatypeValidators: Validation methods // --------------------------------------------------------------------------- inline bool AnySimpleTypeDatatypeValidator::isSubstitutableBy(const DatatypeValidator* const) { return true; } inline void AnySimpleTypeDatatypeValidator::validate(const XMLCh* const , ValidationContext* const , MemoryManager* const) { return; } XERCES_CPP_NAMESPACE_END #endif /** * End of file AnySimpleTypeDatatypeValidator.hpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/ListDatatypeValidator.hpp0000644000175000017500000001627211360344373025453 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: ListDatatypeValidator.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_LIST_DATATYPEVALIDATOR_HPP) #define XERCESC_INCLUDE_GUARD_LIST_DATATYPEVALIDATOR_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN class VALIDATORS_EXPORT ListDatatypeValidator : public AbstractStringValidator { public: // ----------------------------------------------------------------------- // Public ctor/dtor // ----------------------------------------------------------------------- /** @name Constructors and Destructor */ //@{ ListDatatypeValidator ( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); ListDatatypeValidator ( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual ~ListDatatypeValidator(); //@} /** @name Getter Functions */ //@{ /** * Returns whether the type is atomic or not */ virtual bool isAtomic() const; virtual const XMLCh* getCanonicalRepresentation ( const XMLCh* const rawData , MemoryManager* const memMgr = 0 , bool toValidate = false ) const; //@} // ----------------------------------------------------------------------- // Validation methods // ----------------------------------------------------------------------- /** @name Validation Function */ //@{ /** * validate that a string matches the boolean datatype * @param content A string containing the content to be validated * * @exception throws InvalidDatatypeException if the content is * is not valid. */ virtual void validate ( const XMLCh* const content , ValidationContext* const context = 0 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); //@} // ----------------------------------------------------------------------- // Compare methods // ----------------------------------------------------------------------- /** @name Compare Function */ //@{ /** * Compare two boolean data types * * @param content1 * @param content2 * @return */ int compare(const XMLCh* const, const XMLCh* const , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); //@} /** * Returns an instance of the base datatype validator class * Used by the DatatypeValidatorFactory. */ virtual DatatypeValidator* newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); DatatypeValidator* getItemTypeDTV() const; /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(ListDatatypeValidator) protected: // // ctor provided to be used by derived classes: No // virtual void checkValueSpace(const XMLCh* const content , MemoryManager* const manager); virtual XMLSize_t getLength(const XMLCh* const content , MemoryManager* const manager) const; // // Overwrite AbstractStringValidator's // virtual void inspectFacetBase(MemoryManager* const manager); virtual void inheritFacet(); virtual void checkContent(const XMLCh* const content , ValidationContext* const context , bool asBase , MemoryManager* const manager); private: void checkContent( BaseRefVectorOf* tokenVector , const XMLCh* const content , ValidationContext* const context , bool asBase , MemoryManager* const manager ); bool valueSpaceCheck(BaseRefVectorOf* tokenVector , const XMLCh* const enumStr , MemoryManager* const manager) const; // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- inline const XMLCh* getContent() const; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- inline void setContent(const XMLCh* const content); // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- ListDatatypeValidator(const ListDatatypeValidator&); ListDatatypeValidator& operator=(const ListDatatypeValidator&); // ----------------------------------------------------------------------- // Private data members // // fContent // temporary var referencing the content to be validated, // for error reporting purpose. // // ----------------------------------------------------------------------- const XMLCh* fContent; }; // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- inline const XMLCh* ListDatatypeValidator::getContent() const { return fContent; } inline bool ListDatatypeValidator::isAtomic() const { return false; } // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- inline void ListDatatypeValidator::setContent(const XMLCh* const content) { fContent = content; } XERCES_CPP_NAMESPACE_END #endif /** * End of file ListDatatypeValidator.hpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/BooleanDatatypeValidator.hpp0000644000175000017500000001440510606722647026121 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: BooleanDatatypeValidator.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_BOOLEAN_DATATYPEVALIDATOR_HPP) #define XERCESC_INCLUDE_GUARD_BOOLEAN_DATATYPEVALIDATOR_HPP #include XERCES_CPP_NAMESPACE_BEGIN class VALIDATORS_EXPORT BooleanDatatypeValidator : public DatatypeValidator { public: // ----------------------------------------------------------------------- // Public ctor/dtor // ----------------------------------------------------------------------- /** @name Constructor. */ //@{ BooleanDatatypeValidator ( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); BooleanDatatypeValidator ( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual ~BooleanDatatypeValidator(); //@} virtual const RefArrayVectorOf* getEnumString() const; // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- /** @name Getter Functions */ //@{ virtual const XMLCh* getCanonicalRepresentation ( const XMLCh* const rawData , MemoryManager* const memMgr = 0 , bool toValidate = false ) const; //@} // ----------------------------------------------------------------------- // Validation methods // ----------------------------------------------------------------------- /** @name Validation Function */ //@{ /** * validate that a string matches the boolean datatype * @param content A string containing the content to be validated * * @exception throws InvalidDatatypeException if the content is * is not valid. */ virtual void validate ( const XMLCh* const content , ValidationContext* const context = 0 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); //@} // ----------------------------------------------------------------------- // Compare methods // ----------------------------------------------------------------------- /** @name Compare Function */ //@{ /** * Compare two boolean data types * * @param content1 * @param content2 * @return */ int compare(const XMLCh* const, const XMLCh* const , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); //@} /** * Returns an instance of the base datatype validator class * Used by the DatatypeValidatorFactory. */ DatatypeValidator* newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(BooleanDatatypeValidator) private: virtual void checkContent(const XMLCh* const content , ValidationContext* const context , bool asBase , MemoryManager* const manager); // ----------------------------------------------------------------------- // Unimplemented methods. // ----------------------------------------------------------------------- BooleanDatatypeValidator(const BooleanDatatypeValidator&); BooleanDatatypeValidator& operator=(const BooleanDatatypeValidator&); }; // --------------------------------------------------------------------------- // Constructors and Destructor // --------------------------------------------------------------------------- inline BooleanDatatypeValidator::BooleanDatatypeValidator(MemoryManager* const manager) :DatatypeValidator(0, 0, 0, DatatypeValidator::Boolean, manager) { setFinite(true); } inline BooleanDatatypeValidator::~BooleanDatatypeValidator() { } // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- // ----------------------------------------------------------------------- // Compare methods // ----------------------------------------------------------------------- inline DatatypeValidator* BooleanDatatypeValidator::newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager ) { return (DatatypeValidator*) new (manager) BooleanDatatypeValidator(this, facets, enums, finalSet, manager); } inline void BooleanDatatypeValidator::validate( const XMLCh* const content , ValidationContext* const context , MemoryManager* const manager) { checkContent(content, context, false, manager); } XERCES_CPP_NAMESPACE_END #endif /** * End of file BooleanDatatypeValidator.hpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/TimeDatatypeValidator.hpp0000644000175000017500000000671510606722647025445 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: TimeDatatypeValidator.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_TIME_DATATYPE_VALIDATOR_HPP) #define XERCESC_INCLUDE_GUARD_TIME_DATATYPE_VALIDATOR_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN class VALIDATORS_EXPORT TimeDatatypeValidator : public DateTimeValidator { public: // ----------------------------------------------------------------------- // Public ctor/dtor // ----------------------------------------------------------------------- /** @name Constructors and Destructor */ //@{ TimeDatatypeValidator ( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); TimeDatatypeValidator ( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); ~TimeDatatypeValidator(); //@} /** * Returns an instance of the base datatype validator class * Used by the DatatypeValidatorFactory. */ virtual DatatypeValidator* newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual const XMLCh* getCanonicalRepresentation ( const XMLCh* const rawData , MemoryManager* const memMgr = 0 , bool toValidate = false ) const; /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(TimeDatatypeValidator) protected: // ----------------------------------------------------------------------- // implementation of (DateTimeValidator's) virtual interface // ----------------------------------------------------------------------- virtual XMLDateTime* parse(const XMLCh* const, MemoryManager* const manager); virtual void parse(XMLDateTime* const); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- TimeDatatypeValidator(const TimeDatatypeValidator&); TimeDatatypeValidator& operator=(const TimeDatatypeValidator&); }; XERCES_CPP_NAMESPACE_END #endif /** * End of file TimeDatatypeValidator.hpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/FloatDatatypeValidator.cpp0000644000175000017500000002136011037122704025563 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: FloatDatatypeValidator.cpp 676911 2008-07-15 13:27:32Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Constructors and Destructor // --------------------------------------------------------------------------- FloatDatatypeValidator::FloatDatatypeValidator(MemoryManager* const manager) :AbstractNumericValidator(0, 0, 0, DatatypeValidator::Float, manager) { setOrdered(XSSimpleTypeDefinition::ORDERED_PARTIAL); setBounded(true); setFinite(true); setNumeric(true); } FloatDatatypeValidator::FloatDatatypeValidator( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager) :AbstractNumericValidator(baseValidator, facets, finalSet, DatatypeValidator::Float, manager) { init(enums, manager); } FloatDatatypeValidator::~FloatDatatypeValidator() {} // ----------------------------------------------------------------------- // Compare methods // ----------------------------------------------------------------------- int FloatDatatypeValidator::compare(const XMLCh* const lValue , const XMLCh* const rValue , MemoryManager* const manager) { XMLFloat lObj(lValue, manager); XMLFloat rObj(rValue, manager); return compareValues(&lObj, &rObj); } DatatypeValidator* FloatDatatypeValidator::newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager ) { return (DatatypeValidator*) new (manager) FloatDatatypeValidator(this, facets, enums, finalSet, manager); } // ----------------------------------------------------------------------- // ctor provided to be used by derived classes // ----------------------------------------------------------------------- FloatDatatypeValidator::FloatDatatypeValidator(DatatypeValidator* const baseValidator , RefHashTableOf* const facets , const int finalSet , const ValidatorType type , MemoryManager* const manager) :AbstractNumericValidator(baseValidator, facets, finalSet, type, manager) { //do not invoke init here !!! } int FloatDatatypeValidator::compareValues(const XMLNumber* const lValue , const XMLNumber* const rValue) { return XMLFloat::compareValues((XMLFloat*) lValue, (XMLFloat*) rValue); } void FloatDatatypeValidator::setMaxInclusive(const XMLCh* const value) { fMaxInclusive = new (fMemoryManager) XMLFloat(value, fMemoryManager); } void FloatDatatypeValidator::setMaxExclusive(const XMLCh* const value) { fMaxExclusive = new (fMemoryManager) XMLFloat(value, fMemoryManager); } void FloatDatatypeValidator::setMinInclusive(const XMLCh* const value) { fMinInclusive = new (fMemoryManager) XMLFloat(value, fMemoryManager); } void FloatDatatypeValidator::setMinExclusive(const XMLCh* const value) { fMinExclusive = new (fMemoryManager) XMLFloat(value, fMemoryManager); } void FloatDatatypeValidator::setEnumeration(MemoryManager* const manager) { // check 4.3.5.c0 must: enumeration values from the value space of base // // 1. shall be from base value space // 2. shall be from current value space as well ( shall go through boundsCheck() ) // if (!fStrEnumeration) return; XMLSize_t i = 0; XMLSize_t enumLength = fStrEnumeration->size(); FloatDatatypeValidator *numBase = (FloatDatatypeValidator*) getBaseValidator(); if (numBase) { try { for ( i = 0; i < enumLength; i++) { numBase->checkContent(fStrEnumeration->elementAt(i), (ValidationContext*)0, false, manager); } } catch (XMLException&) { ThrowXMLwithMemMgr1(InvalidDatatypeFacetException , XMLExcepts::FACET_enum_base , fStrEnumeration->elementAt(i) , manager); } } #if 0 // spec says that only base has to checkContent // We put the this->checkContent in a separate loop // to not block original message with in that method. // for ( i = 0; i < enumLength; i++) { checkContent(fStrEnumeration->elementAt(i), (ValidationContext*)0, false, manager); } #endif fEnumeration = new (fMemoryManager) RefVectorOf(enumLength, true, fMemoryManager); fEnumerationInherited = false; for ( i = 0; i < enumLength; i++) { fEnumeration->insertElementAt(new (fMemoryManager) XMLFloat(fStrEnumeration->elementAt(i), fMemoryManager), i); } } // ----------------------------------------------------------------------- // Abstract interface from AbstractNumericValidator // ----------------------------------------------------------------------- void FloatDatatypeValidator::checkContent(const XMLCh* const content , ValidationContext* const context , bool asBase , MemoryManager* const manager) { //validate against base validator if any FloatDatatypeValidator *pBase = (FloatDatatypeValidator*) this->getBaseValidator(); if (pBase) pBase->checkContent(content, context, true, manager); // we check pattern first if ( (getFacetsDefined() & DatatypeValidator::FACET_PATTERN ) != 0 ) { if (getRegex()->matches(content, manager) ==false) { ThrowXMLwithMemMgr2(InvalidDatatypeValueException , XMLExcepts::VALUE_NotMatch_Pattern , content , getPattern() , manager); } } // if this is a base validator, we only need to check pattern facet // all other facet were inherited by the derived type if (asBase) return; XMLFloat theValue(content, manager); XMLFloat *theData = &theValue; if (getEnumeration() != 0) { XMLSize_t i=0; XMLSize_t enumLength = getEnumeration()->size(); for ( ; i < enumLength; i++) { if (compareValues(theData, (XMLFloat*) getEnumeration()->elementAt(i))==0) break; } if (i == enumLength) ThrowXMLwithMemMgr1(InvalidDatatypeValueException, XMLExcepts::VALUE_NotIn_Enumeration, content, manager); } boundsCheck(theData, manager); } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(FloatDatatypeValidator) void FloatDatatypeValidator::serialize(XSerializeEngine& serEng) { /*** * Note: * * During storing, we need write the specific number * type info before calling base::serialize(). * * While loading, we do nothing here ***/ if (serEng.isStoring()) { serEng<<(int) (XMLNumber::Float); } AbstractNumericValidator::serialize(serEng); } XERCES_CPP_NAMESPACE_END /** * End of file FloatDatatypeValidator::cpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/DateDatatypeValidator.hpp0000644000175000017500000000663710606722647025427 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DateDatatypeValidator.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DATE_DATATYPE_VALIDATOR_HPP) #define XERCESC_INCLUDE_GUARD_DATE_DATATYPE_VALIDATOR_HPP #include XERCES_CPP_NAMESPACE_BEGIN class VALIDATORS_EXPORT DateDatatypeValidator : public DateTimeValidator { public: // ----------------------------------------------------------------------- // Public ctor/dtor // ----------------------------------------------------------------------- /** @name Constructors and Destructor */ //@{ DateDatatypeValidator ( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); DateDatatypeValidator ( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); ~DateDatatypeValidator(); //@} /** * Returns an instance of the base datatype validator class * Used by the DatatypeValidatorFactory. */ virtual DatatypeValidator* newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual const XMLCh* getCanonicalRepresentation ( const XMLCh* const rawData , MemoryManager* const memMgr = 0 , bool toValidate = false ) const; /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(DateDatatypeValidator) protected: // ----------------------------------------------------------------------- // implementation of (DateTimeValidator's) virtual interface // ----------------------------------------------------------------------- virtual XMLDateTime* parse(const XMLCh* const, MemoryManager* const manager); virtual void parse(XMLDateTime* const); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DateDatatypeValidator(const DateDatatypeValidator&); DateDatatypeValidator& operator=(const DateDatatypeValidator&); }; XERCES_CPP_NAMESPACE_END #endif /** * End of file DateDatatypeValidator.hpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/AbstractNumericValidator.hpp0000644000175000017500000000716510606722647026141 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: AbstractNumericValidator.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_ABSTRACT_NUMERIC_VALIDATOR_HPP) #define XERCESC_INCLUDE_GUARD_ABSTRACT_NUMERIC_VALIDATOR_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN class VALIDATORS_EXPORT AbstractNumericValidator : public AbstractNumericFacetValidator { public: // ----------------------------------------------------------------------- // Public ctor/dtor // ----------------------------------------------------------------------- /** @name Constructor. */ //@{ virtual ~AbstractNumericValidator(); //@} virtual void validate ( const XMLCh* const content , ValidationContext* const context = 0 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual const XMLCh* getCanonicalRepresentation ( const XMLCh* const rawData , MemoryManager* const memMgr = 0 , bool toValidate = false ) const; /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(AbstractNumericValidator) protected: AbstractNumericValidator ( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , const int finalSet , const ValidatorType type , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); inline void init(RefArrayVectorOf* const enums , MemoryManager* const manager); // // Abstract interface // virtual void checkContent(const XMLCh* const content , ValidationContext* const context , bool asBase , MemoryManager* const manager) = 0; void boundsCheck(const XMLNumber* const , MemoryManager* const manager); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- AbstractNumericValidator(const AbstractNumericValidator&); AbstractNumericValidator& operator=(const AbstractNumericValidator&); }; inline void AbstractNumericValidator::init(RefArrayVectorOf* const enums , MemoryManager* const manager) { AbstractNumericFacetValidator::init(enums, manager); } XERCES_CPP_NAMESPACE_END #endif /** * End of file AbstractNumericValidator.hpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/DateTimeValidator.cpp0000644000175000017500000002370311037122704024521 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DateTimeValidator.cpp 676911 2008-07-15 13:27:32Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Macro // --------------------------------------------------------------------------- #define REPORT_VALUE_ERROR(val1, val2, except_code, manager) \ ThrowXMLwithMemMgr2(InvalidDatatypeValueException \ , except_code \ , val1->getRawData() \ , val2->getRawData() \ , manager); // --------------------------------------------------------------------------- // Constructors and Destructor // --------------------------------------------------------------------------- DateTimeValidator::~DateTimeValidator() { } DateTimeValidator::DateTimeValidator( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , const int finalSet , const ValidatorType type , MemoryManager* const manager) :AbstractNumericFacetValidator(baseValidator, facets, finalSet, type, manager) { //do not invoke init() here !!! } void DateTimeValidator::validate(const XMLCh* const content , ValidationContext* const context , MemoryManager* const manager) { checkContent(content, context, false, manager); } int DateTimeValidator::compare(const XMLCh* const value1 , const XMLCh* const value2 , MemoryManager* const manager) { try { XMLDateTime *pDate1 = parse(value1, manager); Janitor jName1(pDate1); XMLDateTime *pDate2 = parse(value2, manager); Janitor jName2(pDate2); int result = compareDates(pDate1, pDate2, true); return (result==INDETERMINATE)? -1 : result; } catch(const OutOfMemoryException&) { throw; } catch (...) // RuntimeException e { return -1; // revisit after implement compareDates() } } void DateTimeValidator::checkContent(const XMLCh* const content , ValidationContext* const context , bool asBase , MemoryManager* const manager) { //validate against base validator if any DateTimeValidator *pBaseValidator = (DateTimeValidator*) this->getBaseValidator(); if (pBaseValidator) pBaseValidator->checkContent(content, context, true, manager); int thisFacetsDefined = getFacetsDefined(); // we check pattern first if ( (thisFacetsDefined & DatatypeValidator::FACET_PATTERN ) != 0 ) { if (getRegex()->matches(content, manager) ==false) { ThrowXMLwithMemMgr2(InvalidDatatypeValueException , XMLExcepts::VALUE_NotMatch_Pattern , content , getPattern() , manager); } } // if this is a base validator, we only need to check pattern facet // all other facet were inherited by the derived type if (asBase) return; // the derived classes' parse() method constructs an // XMLDateTime object anc invokes appropriate XMLDateTime's // parser to parse the content. XMLDateTime dateTimeValue(content, manager); XMLDateTime* dateTime = &dateTimeValue; parse(dateTime); // must be < MaxExclusive if ((thisFacetsDefined & DatatypeValidator::FACET_MAXEXCLUSIVE) != 0) { if (compareValues(dateTime, getMaxExclusive()) != XMLDateTime::LESS_THAN) { REPORT_VALUE_ERROR( dateTime , getMaxExclusive() , XMLExcepts::VALUE_exceed_maxExcl , manager) } } // must be <= MaxInclusive if ((thisFacetsDefined & DatatypeValidator::FACET_MAXINCLUSIVE) != 0) { int result = compareValues(dateTime, getMaxInclusive()); if ( result == XMLDateTime::GREATER_THAN || result == XMLDateTime::INDETERMINATE ) { REPORT_VALUE_ERROR( dateTime , getMaxInclusive() , XMLExcepts::VALUE_exceed_maxIncl , manager) } } // must be >= MinInclusive if ((thisFacetsDefined & DatatypeValidator::FACET_MININCLUSIVE) != 0) { int result = compareValues(dateTime, getMinInclusive()); if (result == XMLDateTime::LESS_THAN || result == XMLDateTime::INDETERMINATE) { REPORT_VALUE_ERROR( dateTime , getMinInclusive() , XMLExcepts::VALUE_exceed_minIncl , manager) } } // must be > MinExclusive if ( (thisFacetsDefined & DatatypeValidator::FACET_MINEXCLUSIVE) != 0 ) { if (compareValues(dateTime, getMinExclusive()) != XMLDateTime::GREATER_THAN) { REPORT_VALUE_ERROR( dateTime , getMinExclusive() , XMLExcepts::VALUE_exceed_minExcl , manager) } } if ((thisFacetsDefined & DatatypeValidator::FACET_ENUMERATION) != 0 && (getEnumeration() != 0)) { XMLSize_t i=0; XMLSize_t enumLength = getEnumeration()->size(); for ( ; i < enumLength; i++) { if (compareValues(dateTime, getEnumeration()->elementAt(i)) == XMLDateTime::EQUAL) break; } if (i == enumLength) ThrowXMLwithMemMgr1(InvalidDatatypeValueException, XMLExcepts::VALUE_NotIn_Enumeration, content, manager); } } // // Comparision methods // int DateTimeValidator::compareValues(const XMLNumber* const lValue , const XMLNumber* const rValue) { return compareDates((XMLDateTime*) lValue, (XMLDateTime*) rValue, true); } /** * Compare algorithm described in dateDime (3.2.7). * Duration datatype overwrites this method * * @param date1 normalized date representation of the first value * @param date2 normalized date representation of the second value * @param strict * @return less, greater, less_equal, greater_equal, equal */ int DateTimeValidator::compareDates(const XMLDateTime* const date1 , const XMLDateTime* const date2 , bool) { return XMLDateTime::compare(date1, date2); } // // In fact, the proper way of the following set*() shall be // { // if (fMaxInclusive) // delete fMaxInclusive; // // fMaxInclusive = parse(value); // // } // // But we know this function is invoked once and only once // since there is no duplicated facet passed in, therefore // fMaxInclusive is alwasy zero before, so for the // sake of performance, we do not do the checking/delete. // void DateTimeValidator::setMaxInclusive(const XMLCh* const value) { fMaxInclusive = parse(value, fMemoryManager); } void DateTimeValidator::setMaxExclusive(const XMLCh* const value) { fMaxExclusive = parse(value, fMemoryManager); } void DateTimeValidator::setMinInclusive(const XMLCh* const value) { fMinInclusive = parse(value, fMemoryManager); } void DateTimeValidator::setMinExclusive(const XMLCh* const value) { fMinExclusive = parse(value, fMemoryManager); } void DateTimeValidator::setEnumeration(MemoryManager* const) { // to do: do we need to check against base value space??? if (!fStrEnumeration) return; XMLSize_t enumLength = fStrEnumeration->size(); fEnumeration = new (fMemoryManager) RefVectorOf(enumLength, true, fMemoryManager); fEnumerationInherited = false; for ( XMLSize_t i = 0; i < enumLength; i++) fEnumeration->insertElementAt(parse(fStrEnumeration->elementAt(i), fMemoryManager), i); } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_NOCREATE(DateTimeValidator) void DateTimeValidator::serialize(XSerializeEngine& serEng) { /*** * * Note: All its derivatives share the same number type, that is * XMLNumber::DateTime, so this class would write it. ***/ if (serEng.isStoring()) { serEng<<(int) XMLNumber::DateTime; } AbstractNumericFacetValidator::serialize(serEng); //dateTime can be instantiated during checkContent(), so don't serialize it. } XERCES_CPP_NAMESPACE_END /** * End of file DateTimeValidator::cpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/DatatypeValidatorFactory.hpp0000644000175000017500000002340711360344373026145 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DatatypeValidatorFactory.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DATATYPEVALIDATORFACTORY_HPP) #define XERCESC_INCLUDE_GUARD_DATATYPEVALIDATORFACTORY_HPP /** * This class implements a factory of Datatype Validators. Internally the * DatatypeValidators are kept in a registry. * There is one instance of DatatypeValidatorFactory per Parser. * There is one datatype Registry per instance of DatatypeValidatorFactory, * such registry is first allocated with the number DatatypeValidators needed. * e.g. * If Parser finds an XML document with a DTD, a registry of DTD validators (only * 9 validators) get initialized in the registry. * The initialization process consist of instantiating the Datatype and * facets and registering the Datatype into registry table. * This implementation uses a Hashtable as a registry. The datatype validators created * by the factory will be deleted by the registry. * * As the Parser parses an instance document it knows if validation needs * to be checked. If no validation is necessary we should not instantiate a * DatatypeValidatorFactory. * If validation is needed, we need to instantiate a DatatypeValidatorFactory. */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // DatatypeValidatorFactory: Local declaration // --------------------------------------------------------------------------- typedef RefHashTableOf KVStringPairHashTable; typedef RefHashTableOf DVHashTable; typedef RefArrayVectorOf XMLChRefVector; class VALIDATORS_EXPORT DatatypeValidatorFactory : public XSerializable, public XMemory { public: // ----------------------------------------------------------------------- // Public Constructors and Destructor // ----------------------------------------------------------------------- /** @name Constructors */ //@{ DatatypeValidatorFactory ( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); //@} /** @name Destructor. */ //@{ ~DatatypeValidatorFactory(); //@} // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- /** @name Getter Functions */ //@{ /** * Returns the datatype validator * * @param dvType Datatype validator name/type */ DatatypeValidator* getDatatypeValidator(const XMLCh* const dvType) const; /** * Returns the user defined registry of types **/ DVHashTable* getUserDefinedRegistry() const; /** * Returns the built in registry of types **/ static DVHashTable* getBuiltInRegistry(); //@} private: /** * Initializes registry with primitive and derived Simple types. * * This method does not clear the registry to clear the registry you * have to call resetRegistry. * * The net effect of this method is to start with the smallest set of * datatypes needed by the validator. * * If we start with Schema's then we initialize to full set of * validators. */ void expandRegistryToFullSchemaSet(); public: // ----------------------------------------------------------------------- // Canonical Representation Group // ----------------------------------------------------------------------- void initCanRepRegistory(); static XMLCanRepGroup::CanRepGroup getCanRepGroup(const DatatypeValidator* const); static DatatypeValidator* getBuiltInBaseValidator(const DatatypeValidator* const); // ----------------------------------------------------------------------- // Validator Factory methods // ----------------------------------------------------------------------- /** @name Validator Factory Functions */ //@{ /** * Creates a new datatype validator of type baseValidator's class and * adds it to the registry * * @param typeName Datatype validator name * * @param baseValidator Base datatype validator * * @param facets datatype facets if any * * @param enums vector of values for enum facet * * @param isDerivedByList Indicates whether the datatype is derived by * list or not * * @param finalSet 'final' values of the simpleType * * @param isUserDefined Indicates whether the datatype is built-in or * user defined */ DatatypeValidator* createDatatypeValidator ( const XMLCh* const typeName , DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const bool isDerivedByList , const int finalSet = 0 , const bool isUserDefined = true , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /** * Creates a new datatype validator of type UnionDatatypeValidator and * adds it to the registry * * @param typeName Datatype validator name * * @param validators Vector of datatype validators * * @param finalSet 'final' values of the simpleType * * @param isUserDefined Indicates whether the datatype is built-in or * user defined */ DatatypeValidator* createDatatypeValidator ( const XMLCh* const typeName , RefVectorOf* const validators , const int finalSet , const bool isUserDefined = true , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); //@} /** * Reset datatype validator registry */ void resetRegistry(); /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(DatatypeValidatorFactory) private: // ----------------------------------------------------------------------- // CleanUp methods // ----------------------------------------------------------------------- void cleanUp(); // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DatatypeValidatorFactory(const DatatypeValidatorFactory&); DatatypeValidatorFactory& operator=(const DatatypeValidatorFactory&); // ----------------------------------------------------------------------- // Private data members // // fUserDefinedRegistry // This is a hashtable of user defined dataype validators. // // fBuiltInRegistry // This is a hashtable of built-in primitive datatype validators. // ----------------------------------------------------------------------- XERCES_CPP_NAMESPACE_QUALIFIER RefHashTableOf* fUserDefinedRegistry; static XERCES_CPP_NAMESPACE_QUALIFIER RefHashTableOf* fBuiltInRegistry; static XERCES_CPP_NAMESPACE_QUALIFIER RefHashTableOf* fCanRepRegistry; XERCES_CPP_NAMESPACE_QUALIFIER MemoryManager* const fMemoryManager; friend class XPath2ContextImpl; friend class XMLInitializer; }; inline DatatypeValidator* DatatypeValidatorFactory::getDatatypeValidator(const XMLCh* const dvType) const { if (dvType) { if (fBuiltInRegistry && fBuiltInRegistry->containsKey(dvType)) { return fBuiltInRegistry->get(dvType); } if (fUserDefinedRegistry && fUserDefinedRegistry->containsKey(dvType)) { return fUserDefinedRegistry->get(dvType); } } return 0; } inline DVHashTable* DatatypeValidatorFactory::getUserDefinedRegistry() const { return fUserDefinedRegistry; } inline DVHashTable* DatatypeValidatorFactory::getBuiltInRegistry() { return fBuiltInRegistry; } // --------------------------------------------------------------------------- // DatatypeValidator: CleanUp methods // --------------------------------------------------------------------------- inline void DatatypeValidatorFactory::cleanUp() { if (fUserDefinedRegistry) { delete fUserDefinedRegistry; fUserDefinedRegistry = 0; } } XERCES_CPP_NAMESPACE_END #endif /** * End of file DatatypeValidatorFactory.hpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/YearMonthDatatypeValidator.hpp0000644000175000017500000000625410606722647026453 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: YearMonthDatatypeValidator.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_YEARMONTH_DATATYPE_VALIDATOR_HPP) #define XERCESC_INCLUDE_GUARD_YEARMONTH_DATATYPE_VALIDATOR_HPP #include XERCES_CPP_NAMESPACE_BEGIN class VALIDATORS_EXPORT YearMonthDatatypeValidator : public DateTimeValidator { public: // ----------------------------------------------------------------------- // Public ctor/dtor // ----------------------------------------------------------------------- /** @name Constructors and Destructor */ //@{ YearMonthDatatypeValidator ( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); YearMonthDatatypeValidator ( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); ~YearMonthDatatypeValidator(); //@} /** * Returns an instance of the base datatype validator class * Used by the DatatypeValidatorFactory. */ virtual DatatypeValidator* newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(YearMonthDatatypeValidator) protected: // ----------------------------------------------------------------------- // implementation of (DateTimeValidator's) virtual interface // ----------------------------------------------------------------------- virtual XMLDateTime* parse(const XMLCh* const, MemoryManager* const manager); virtual void parse(XMLDateTime* const); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- YearMonthDatatypeValidator(const YearMonthDatatypeValidator&); YearMonthDatatypeValidator& operator=(const YearMonthDatatypeValidator&); }; XERCES_CPP_NAMESPACE_END #endif /** * End of file YearMonthDatatypeValidator.hpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/NameDatatypeValidator.hpp0000644000175000017500000001122510606722647025417 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: NameDatatypeValidator.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_NAME_DATATYPEVALIDATOR_HPP) #define XERCESC_INCLUDE_GUARD_NAME_DATATYPEVALIDATOR_HPP #include XERCES_CPP_NAMESPACE_BEGIN class VALIDATORS_EXPORT NameDatatypeValidator : public StringDatatypeValidator { public: // ----------------------------------------------------------------------- // Public ctor/dtor // ----------------------------------------------------------------------- /** @name Constructors and Destructor */ //@{ NameDatatypeValidator ( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); NameDatatypeValidator ( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual ~NameDatatypeValidator(); //@} // ----------------------------------------------------------------------- // Validation methods // ----------------------------------------------------------------------- /** @name Validation Function */ //@{ /** * validate that a string matches the boolean datatype * @param content A string containing the content to be validated * * @exception throws InvalidDatatypeException if the content is * is not valid. */ virtual void validate ( const XMLCh* const content , ValidationContext* const context = 0 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); //@} // ----------------------------------------------------------------------- // Compare methods // ----------------------------------------------------------------------- /** @name Compare Function */ //@{ /** * Compare two boolean data types * * @param content1 * @param content2 * @return */ virtual int compare(const XMLCh* const, const XMLCh* const , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); //@} /** * Returns an instance of the base datatype validator class * Used by the DatatypeValidatorFactory. */ virtual DatatypeValidator* newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(NameDatatypeValidator) protected: // // ctor provided to be used by derived classes // NameDatatypeValidator ( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , const int finalSet , const ValidatorType type , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual void checkValueSpace(const XMLCh* const content , MemoryManager* const manager); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- NameDatatypeValidator(const NameDatatypeValidator&); NameDatatypeValidator& operator=(const NameDatatypeValidator&); // ----------------------------------------------------------------------- // Private data members // // // ----------------------------------------------------------------------- }; XERCES_CPP_NAMESPACE_END #endif /** * End of file NameDatatypeValidator.hpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/IDDatatypeValidator.hpp0000644000175000017500000001043410606722647025034 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: IDDatatypeValidator.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_ID_DATATYPEVALIDATOR_HPP) #define XERCESC_INCLUDE_GUARD_ID_DATATYPEVALIDATOR_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN class VALIDATORS_EXPORT IDDatatypeValidator : public StringDatatypeValidator { public: // ----------------------------------------------------------------------- // Public ctor/dtor // ----------------------------------------------------------------------- /** @name Constructors and Destructor */ //@{ IDDatatypeValidator ( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); IDDatatypeValidator ( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual ~IDDatatypeValidator(); //@} // ----------------------------------------------------------------------- // Validation methods // ----------------------------------------------------------------------- /** @name Validation Function */ //@{ /** * validate that a string matches the boolean datatype * @param content A string containing the content to be validated * * @exception throws InvalidDatatypeException if the content is * is not valid. */ virtual void validate ( const XMLCh* const content , ValidationContext* const context = 0 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /** * Returns an instance of the base datatype validator class * Used by the DatatypeValidatorFactory. */ virtual DatatypeValidator* newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); //@} /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(IDDatatypeValidator) protected: // // ctor provided to be used by derived classes // IDDatatypeValidator ( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , const int finalSet , const ValidatorType type , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual void checkValueSpace(const XMLCh* const content , MemoryManager* const manager); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- IDDatatypeValidator(const IDDatatypeValidator&); IDDatatypeValidator& operator=(const IDDatatypeValidator&); // ----------------------------------------------------------------------- // Private data members // // // ----------------------------------------------------------------------- }; XERCES_CPP_NAMESPACE_END #endif /** * End of file IDDatatypeValidator.hpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/HexBinaryDatatypeValidator.cpp0000644000175000017500000000723611063753570026427 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: HexBinaryDatatypeValidator.cpp 695949 2008-09-16 15:57:44Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Constructors and Destructor // --------------------------------------------------------------------------- HexBinaryDatatypeValidator::HexBinaryDatatypeValidator(MemoryManager* const manager) :AbstractStringValidator(0, 0, 0, DatatypeValidator::HexBinary, manager) {} HexBinaryDatatypeValidator::~HexBinaryDatatypeValidator() {} HexBinaryDatatypeValidator::HexBinaryDatatypeValidator( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager) :AbstractStringValidator(baseValidator, facets, finalSet, DatatypeValidator::HexBinary, manager) { init(enums, manager); } DatatypeValidator* HexBinaryDatatypeValidator::newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager ) { return (DatatypeValidator*) new (manager) HexBinaryDatatypeValidator(this, facets, enums, finalSet, manager); } // --------------------------------------------------------------------------- // Utilities // --------------------------------------------------------------------------- void HexBinaryDatatypeValidator::checkValueSpace(const XMLCh* const content, MemoryManager* const manager) { if (HexBin::getDataLength(content) < 0) { ThrowXMLwithMemMgr1(InvalidDatatypeValueException , XMLExcepts::VALUE_Not_HexBin , content , manager); } } XMLSize_t HexBinaryDatatypeValidator::getLength(const XMLCh* const content , MemoryManager* const) const { return (XMLSize_t)HexBin::getDataLength(content); } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(HexBinaryDatatypeValidator) void HexBinaryDatatypeValidator::serialize(XSerializeEngine& serEng) { AbstractStringValidator::serialize(serEng); } XERCES_CPP_NAMESPACE_END /** * End of file HexBinaryDatatypeValidator.cpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/UnionDatatypeValidator.cpp0000644000175000017500000003677311037627177025642 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: UnionDatatypeValidator.cpp 677559 2008-07-17 11:35:27Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN static const unsigned int BUF_LEN = 64; // --------------------------------------------------------------------------- // Constructors and Destructor // --------------------------------------------------------------------------- UnionDatatypeValidator::UnionDatatypeValidator(MemoryManager* const manager) :DatatypeValidator(0, 0, 0, DatatypeValidator::Union, manager) ,fEnumerationInherited(false) ,fMemberTypesInherited(false) ,fEnumeration(0) ,fMemberTypeValidators(0) {} UnionDatatypeValidator::~UnionDatatypeValidator() { cleanUp(); } UnionDatatypeValidator::UnionDatatypeValidator( RefVectorOf* const memberTypeValidators , const int finalSet , MemoryManager* const manager) :DatatypeValidator(0, 0, finalSet, DatatypeValidator::Union, manager) ,fEnumerationInherited(false) ,fMemberTypesInherited(false) ,fEnumeration(0) ,fMemberTypeValidators(0) { if ( !memberTypeValidators ) { ThrowXMLwithMemMgr(InvalidDatatypeFacetException , XMLExcepts::FACET_Union_Null_memberTypeValidators, manager); } // no pattern, no enumeration fMemberTypeValidators = memberTypeValidators; } typedef JanitorMemFunCall CleanupType; UnionDatatypeValidator::UnionDatatypeValidator( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager , RefVectorOf* const memberTypeValidators , const bool memberTypesInherited ) :DatatypeValidator(baseValidator, facets, finalSet, DatatypeValidator::Union, manager) ,fEnumerationInherited(false) ,fMemberTypesInherited(memberTypesInherited) ,fEnumeration(0) ,fMemberTypeValidators(memberTypeValidators) { // // baseValidator another UnionDTV from which, // this UnionDTV is derived by restriction. // it shall be not null // if (!baseValidator) { ThrowXMLwithMemMgr(InvalidDatatypeFacetException , XMLExcepts::FACET_Union_Null_baseValidator, manager); } if (baseValidator->getType() != DatatypeValidator::Union) { XMLCh value1[BUF_LEN+1]; XMLString::binToText(baseValidator->getType(), value1, BUF_LEN, 10, manager); ThrowXMLwithMemMgr1(InvalidDatatypeFacetException , XMLExcepts::FACET_Union_invalid_baseValidatorType , value1 , manager); } CleanupType cleanup(this, &UnionDatatypeValidator::cleanUp); try { init(baseValidator, facets, enums, manager); } catch(const OutOfMemoryException&) { // Don't cleanup when out of memory, since executing the // code can cause problems. cleanup.release(); throw; } cleanup.release(); } void UnionDatatypeValidator::init(DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , MemoryManager* const manager) { if (enums) setEnumeration(enums, false); // Set Facets if any defined if (facets) { XMLCh* key; XMLCh* value; RefHashTableOfEnumerator e(facets, false, manager); while (e.hasMoreElements()) { KVStringPair pair = e.nextElement(); key = pair.getKey(); value = pair.getValue(); if (XMLString::equals(key, SchemaSymbols::fgELT_PATTERN)) { setPattern(value); if (getPattern()) setFacetsDefined(DatatypeValidator::FACET_PATTERN); // do not construct regex until needed } else { ThrowXMLwithMemMgr1(InvalidDatatypeFacetException , XMLExcepts::FACET_Invalid_Tag , key , manager); } }//while /*** Schema constraint: Part I -- self checking ***/ // Nil /*** Schema constraint: Part II base vs derived checking ***/ // check 4.3.5.c0 must: enumeration values from the value space of base if ( ((getFacetsDefined() & DatatypeValidator::FACET_ENUMERATION) != 0) && (getEnumeration() !=0)) { XMLSize_t i = 0; XMLSize_t enumLength = getEnumeration()->size(); try { for ( ; i < enumLength; i++) { // ask parent do a complete check // // enum need NOT be passed this->checkContent() // since there are no other facets for Union, parent // checking is good enough. // baseValidator->validate(getEnumeration()->elementAt(i), (ValidationContext*)0, manager); } } catch ( XMLException& ) { ThrowXMLwithMemMgr1(InvalidDatatypeFacetException , XMLExcepts::FACET_enum_base , getEnumeration()->elementAt(i) , manager); } } }// End of Facet setting /*** Inherit facets from base.facets The reason of this inheriting (or copying values) is to ease schema constraint checking, so that we need NOT trace back to our very first base validator in the hierachy. Instead, we are pretty sure checking against immediate base validator is enough. ***/ UnionDatatypeValidator *pBaseValidator = (UnionDatatypeValidator*) baseValidator; // inherit enumeration if (((pBaseValidator->getFacetsDefined() & DatatypeValidator::FACET_ENUMERATION) !=0) && ((getFacetsDefined() & DatatypeValidator::FACET_ENUMERATION) == 0)) { setEnumeration(pBaseValidator->getEnumeration(), true); } } // // 1) the bottom level UnionDTV would check against // pattern and enumeration as well // 2) each UnionDTV(s) above the bottom level UnionDTV and // below the native UnionDTV (the top level DTV) // would check against pattern only. // 3) the natvie Union DTV (the top level DTV) would invoke // memberTypeValidator to validate // void UnionDatatypeValidator::checkContent(const XMLCh* const content , ValidationContext* const context , bool asBase , MemoryManager* const manager) { DatatypeValidator* bv = getBaseValidator(); if (bv) ((UnionDatatypeValidator*)bv)->checkContent(content, context, true, manager); else { // 3) native union type // check content against each member type validator in Union // report an error only in case content is not valid against all member datatypes. // bool memTypeValid = false; for ( unsigned int i = 0; i < fMemberTypeValidators->size(); ++i ) { if ( memTypeValid ) break; try { fMemberTypeValidators->elementAt(i)->validate(content, context, manager); memTypeValid = true; //set the validator of the type actually used to validate the content DatatypeValidator *dtv = fMemberTypeValidators->elementAt(i); // context will be null during schema construction if(context) context->setValidatingMemberType(dtv); } catch (XMLException&) { //absorbed } } // for if ( !memTypeValid ) { ThrowXMLwithMemMgr1(InvalidDatatypeValueException , XMLExcepts::VALUE_no_match_memberType , content , manager); //( "Content '"+content+"' does not match any union types" ); } } // 1) and 2). we check pattern first if ( (getFacetsDefined() & DatatypeValidator::FACET_PATTERN ) != 0 ) { if (getRegex()->matches(content, manager) == false) { ThrowXMLwithMemMgr2(InvalidDatatypeValueException , XMLExcepts::VALUE_NotMatch_Pattern , content , getPattern() , manager); } } // if this is a base validator, we only need to check pattern facet // all other facet were inherited by the derived type if (asBase) return; if ((getFacetsDefined() & DatatypeValidator::FACET_ENUMERATION) != 0 && (getEnumeration() != 0)) { // If the content match (compare equal) any enumeration with // any of the member types, it is considerd valid. // RefVectorOf* memberDTV = getMemberTypeValidators(); RefArrayVectorOf* tmpEnum = getEnumeration(); XMLSize_t memberTypeNumber = memberDTV->size(); XMLSize_t enumLength = tmpEnum->size(); for ( XMLSize_t memberIndex = 0; memberIndex < memberTypeNumber; ++memberIndex) { for ( XMLSize_t enumIndex = 0; enumIndex < enumLength; ++enumIndex) { try { if (memberDTV->elementAt(memberIndex)->compare(content, tmpEnum->elementAt(enumIndex), manager) == 0) return; } catch (XMLException&) { //absorbed } } // for enumIndex } // for memberIndex ThrowXMLwithMemMgr1(InvalidDatatypeValueException, XMLExcepts::VALUE_NotIn_Enumeration, content, manager); } // enumeration } // // // int UnionDatatypeValidator::compare(const XMLCh* const lValue , const XMLCh* const rValue , MemoryManager* const manager) { RefVectorOf* memberDTV = getMemberTypeValidators(); XMLSize_t memberTypeNumber = memberDTV->size(); for ( XMLSize_t memberIndex = 0; memberIndex < memberTypeNumber; ++memberIndex) { // 'compare' can throw exceptions when the datatype is not valid, or just // return -1; so attempt to validate both values to get the right validator try { memberDTV->elementAt(memberIndex)->validate(lValue, 0, manager); memberDTV->elementAt(memberIndex)->validate(rValue, 0, manager); if (memberDTV->elementAt(memberIndex)->compare(lValue, rValue, manager) ==0) return 0; } catch (XMLException&) { //absorbed } } //REVISIT: what does it mean for UNION1 to be or UNION2 ? // As long as -1 or +1 indicates an unequality, return either of them is ok. return -1; } const RefArrayVectorOf* UnionDatatypeValidator::getEnumString() const { return getEnumeration(); } /*** * 2.5.1.3 Union datatypes * * The canonical-lexical-representation for a union datatype is defined as the lexical form * in which the values have the canonical lexical representation of the appropriate memberTypes. ***/ const XMLCh* UnionDatatypeValidator::getCanonicalRepresentation(const XMLCh* const rawData , MemoryManager* const memMgr , bool toValidate) const { MemoryManager* toUse = memMgr? memMgr : getMemoryManager(); UnionDatatypeValidator* temp = (UnionDatatypeValidator*) this; if (toValidate) { try { temp->checkContent(rawData, 0, false, toUse); } catch (...) { return 0; } } //get the native unionDv UnionDatatypeValidator* bdv = (UnionDatatypeValidator*) temp->getBaseValidator(); while (bdv) { temp = bdv; bdv = (UnionDatatypeValidator*) temp->getBaseValidator(); } //let the member dv which recognize the rawData, to return //us the canonical form for ( unsigned int i = 0; i < temp->fMemberTypeValidators->size(); ++i ) { try { temp->fMemberTypeValidators->elementAt(i)->validate(rawData, 0, toUse); return temp->fMemberTypeValidators->elementAt(i)->getCanonicalRepresentation(rawData, toUse, false); } catch (XMLException&) { //absorbed } } //if no member dv recognize it return 0; } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(UnionDatatypeValidator) void UnionDatatypeValidator::serialize(XSerializeEngine& serEng) { DatatypeValidator::serialize(serEng); if (serEng.isStoring()) { serEng< * Serialize RefVectorOf ***/ XTemplateSerializer::storeObject(fEnumeration, serEng); XTemplateSerializer::storeObject(fMemberTypeValidators, serEng); } else { serEng>>fEnumerationInherited; serEng>>fMemberTypesInherited; /*** * Deserialize RefArrayVectorOf * Deserialize RefVectorOf ***/ XTemplateSerializer::loadObject(&fEnumeration, 8, true, serEng); XTemplateSerializer::loadObject(&fMemberTypeValidators, 4, false, serEng); } } XERCES_CPP_NAMESPACE_END /** * End of file UnionDatatypeValidator.cpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/YearDatatypeValidator.cpp0000644000175000017500000000644010523643534025430 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: YearDatatypeValidator.cpp 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Constructors and Destructor // --------------------------------------------------------------------------- YearDatatypeValidator::YearDatatypeValidator(MemoryManager* const manager) :DateTimeValidator(0, 0, 0, DatatypeValidator::Year, manager) { setOrdered(XSSimpleTypeDefinition::ORDERED_PARTIAL); } YearDatatypeValidator::YearDatatypeValidator( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager) :DateTimeValidator(baseValidator, facets, finalSet, DatatypeValidator::Year, manager) { init(enums, manager); } YearDatatypeValidator::~YearDatatypeValidator() {} DatatypeValidator* YearDatatypeValidator::newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager ) { return (DatatypeValidator*) new (manager) YearDatatypeValidator(this, facets, enums, finalSet, manager); } // // caller need to release the date created here // XMLDateTime* YearDatatypeValidator::parse(const XMLCh* const content, MemoryManager* const manager) { XMLDateTime *pRetDate = new (manager) XMLDateTime(content, manager); Janitor jan(pRetDate); try { pRetDate->parseYear(); } catch(const OutOfMemoryException&) { jan.release(); throw; } return jan.release(); } void YearDatatypeValidator::parse(XMLDateTime* const pDate) { pDate->parseYear(); } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(YearDatatypeValidator) void YearDatatypeValidator::serialize(XSerializeEngine& serEng) { DateTimeValidator::serialize(serEng); } XERCES_CPP_NAMESPACE_END /** * End of file YearDatatypeValidator::cpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/HexBinaryDatatypeValidator.hpp0000644000175000017500000000641111063753570026426 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: HexBinaryDatatypeValidator.hpp 695949 2008-09-16 15:57:44Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_HEXBINARY_DATATYPEVALIDATOR_HPP) #define XERCESC_INCLUDE_GUARD_HEXBINARY_DATATYPEVALIDATOR_HPP #include XERCES_CPP_NAMESPACE_BEGIN class VALIDATORS_EXPORT HexBinaryDatatypeValidator : public AbstractStringValidator { public: // ----------------------------------------------------------------------- // Public ctor/dtor // ----------------------------------------------------------------------- /** @name Constructors and Destructor */ //@{ HexBinaryDatatypeValidator ( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); HexBinaryDatatypeValidator ( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual ~HexBinaryDatatypeValidator(); //@} /** * Returns an instance of the base datatype validator class * Used by the DatatypeValidatorFactory. */ virtual DatatypeValidator* newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(HexBinaryDatatypeValidator) protected: virtual void checkValueSpace(const XMLCh* const content , MemoryManager* const manager); virtual XMLSize_t getLength(const XMLCh* const content , MemoryManager* const manager) const; private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- HexBinaryDatatypeValidator(const HexBinaryDatatypeValidator&); HexBinaryDatatypeValidator& operator=(const HexBinaryDatatypeValidator&); // ----------------------------------------------------------------------- // Private data members // // Nil. // ----------------------------------------------------------------------- }; XERCES_CPP_NAMESPACE_END #endif /** * End of file HexBinaryDatatypeValidator.hpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/TimeDatatypeValidator.cpp0000644000175000017500000001015010523643534025417 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: TimeDatatypeValidator.cpp 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Constructors and Destructor // --------------------------------------------------------------------------- TimeDatatypeValidator::TimeDatatypeValidator(MemoryManager* const manager) :DateTimeValidator(0, 0, 0, DatatypeValidator::Time, manager) { setOrdered(XSSimpleTypeDefinition::ORDERED_PARTIAL); } TimeDatatypeValidator::TimeDatatypeValidator( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager) :DateTimeValidator(baseValidator, facets, finalSet, DatatypeValidator::Time, manager) { init(enums, manager); } TimeDatatypeValidator::~TimeDatatypeValidator() {} DatatypeValidator* TimeDatatypeValidator::newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager ) { return (DatatypeValidator*) new (manager) TimeDatatypeValidator(this, facets, enums, finalSet, manager); } // // caller need to release the date created here // XMLDateTime* TimeDatatypeValidator::parse(const XMLCh* const content, MemoryManager* const manager) { XMLDateTime *pRetDate = new (manager) XMLDateTime(content, manager); Janitor jan(pRetDate); try { pRetDate->parseTime(); } catch(const OutOfMemoryException&) { jan.release(); throw; } return jan.release(); } void TimeDatatypeValidator::parse(XMLDateTime* const pDate) { pDate->parseTime(); } const XMLCh* TimeDatatypeValidator::getCanonicalRepresentation(const XMLCh* const rawData , MemoryManager* const memMgr , bool toValidate) const { MemoryManager* toUse = memMgr? memMgr : fMemoryManager; if (toValidate) { TimeDatatypeValidator* temp = (TimeDatatypeValidator*) this; try { temp->checkContent(rawData, 0, false, toUse); } catch (...) { return 0; } } try { XMLDateTime aDateTime(rawData, toUse); aDateTime.parseTime(); return aDateTime.getTimeCanonicalRepresentation(toUse); } catch (...) { return 0; } } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(TimeDatatypeValidator) void TimeDatatypeValidator::serialize(XSerializeEngine& serEng) { DateTimeValidator::serialize(serEng); } XERCES_CPP_NAMESPACE_END /** * End of file TimeDatatypeValidator::cpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/DayDatatypeValidator.hpp0000644000175000017500000000613510606722647025260 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DayDatatypeValidator.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DAY_DATATYPE_VALIDATOR_HPP) #define XERCESC_INCLUDE_GUARD_DAY_DATATYPE_VALIDATOR_HPP #include XERCES_CPP_NAMESPACE_BEGIN class VALIDATORS_EXPORT DayDatatypeValidator : public DateTimeValidator { public: // ----------------------------------------------------------------------- // Public ctor/dtor // ----------------------------------------------------------------------- /** @name Constructors and Destructor*/ //@{ DayDatatypeValidator ( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); DayDatatypeValidator ( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); ~DayDatatypeValidator(); //@} /** * Returns an instance of the base datatype validator class * Used by the DatatypeValidatorFactory. */ virtual DatatypeValidator* newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(DayDatatypeValidator) protected: // ----------------------------------------------------------------------- // implementation of (DateTimeValidator's) virtual interface // ----------------------------------------------------------------------- virtual XMLDateTime* parse(const XMLCh* const, MemoryManager* const manager); virtual void parse(XMLDateTime* const); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DayDatatypeValidator(const DayDatatypeValidator&); DayDatatypeValidator& operator=(const DayDatatypeValidator&); }; XERCES_CPP_NAMESPACE_END #endif /** * End of file DayDatatypeValidator.hpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/IDDatatypeValidator.cpp0000644000175000017500000001033710523643534025024 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: IDDatatypeValidator.cpp 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Constructors and Destructor // --------------------------------------------------------------------------- IDDatatypeValidator::IDDatatypeValidator(MemoryManager* const manager) :StringDatatypeValidator(0, 0, 0, DatatypeValidator::ID, manager) {} IDDatatypeValidator::IDDatatypeValidator( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager) :StringDatatypeValidator(baseValidator, facets, finalSet, DatatypeValidator::ID, manager) { init(enums, manager); } IDDatatypeValidator::~IDDatatypeValidator() {} DatatypeValidator* IDDatatypeValidator::newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager ) { return (DatatypeValidator*) new (manager) IDDatatypeValidator(this, facets, enums, finalSet, manager); } IDDatatypeValidator::IDDatatypeValidator( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , const int finalSet , const ValidatorType type , MemoryManager* const manager) :StringDatatypeValidator(baseValidator, facets, finalSet, type, manager) { // do not invoke init() here!!! } void IDDatatypeValidator::validate(const XMLCh* const content , ValidationContext* const context , MemoryManager* const manager) { // use StringDatatypeValidator (which in turn, invoke // the baseValidator) to validate content against // facets if any. // StringDatatypeValidator::validate(content, context, manager); // storing IDs to the global ID table if (context) { context->addId(content); } } void IDDatatypeValidator::checkValueSpace(const XMLCh* const content , MemoryManager* const manager) { // // 3.3.8 check must: "NCName" // if ( !XMLChar1_0::isValidNCName(content, XMLString::stringLen(content)) ) { ThrowXMLwithMemMgr1(InvalidDatatypeValueException , XMLExcepts::VALUE_Invalid_NCName , content , manager); } } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(IDDatatypeValidator) void IDDatatypeValidator::serialize(XSerializeEngine& serEng) { StringDatatypeValidator::serialize(serEng); } XERCES_CPP_NAMESPACE_END /** * End of file IDDatatypeValidator.cpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/DecimalDatatypeValidator.cpp0000644000175000017500000005374011360344373026072 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DecimalDatatypeValidator.cpp 932887 2010-04-11 13:04:59Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN static const int BUF_LEN = 64; // --------------------------------------------------------------------------- // Constructors and Destructor // --------------------------------------------------------------------------- DecimalDatatypeValidator::DecimalDatatypeValidator(MemoryManager* const manager) :AbstractNumericValidator(0, 0, 0, DatatypeValidator::Decimal, manager) , fTotalDigits(0) , fFractionDigits(0) { setOrdered(XSSimpleTypeDefinition::ORDERED_TOTAL); setNumeric(true); } DecimalDatatypeValidator::DecimalDatatypeValidator( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager) :AbstractNumericValidator(baseValidator, facets, finalSet, DatatypeValidator::Decimal, manager) , fTotalDigits(0) , fFractionDigits(0) { init(enums, manager); } DecimalDatatypeValidator::~DecimalDatatypeValidator() { } // ----------------------------------------------------------------------- // Compare methods // ----------------------------------------------------------------------- int DecimalDatatypeValidator::compare(const XMLCh* const lValue , const XMLCh* const rValue , MemoryManager* const manager) { XMLBigDecimal lObj(lValue, manager); XMLBigDecimal rObj(rValue, manager); return compareValues(&lObj, &rObj); } DatatypeValidator* DecimalDatatypeValidator::newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager ) { return (DatatypeValidator*) new (manager) DecimalDatatypeValidator(this, facets, enums, finalSet, manager); } // ----------------------------------------------------------------------- // ctor provided to be used by derived classes // ----------------------------------------------------------------------- DecimalDatatypeValidator::DecimalDatatypeValidator(DatatypeValidator* const baseValidator , RefHashTableOf* const facets , const int finalSet , const ValidatorType type , MemoryManager* const manager) :AbstractNumericValidator(baseValidator, facets, finalSet, type, manager) , fTotalDigits(0) , fFractionDigits(0) { //do not invoke init here !!! } void DecimalDatatypeValidator::assignAdditionalFacet(const XMLCh* const key , const XMLCh* const value , MemoryManager* const manager) { if (XMLString::equals(key, SchemaSymbols::fgELT_TOTALDIGITS)) { int val; try { val = XMLString::parseInt(value, manager); } catch (NumberFormatException&) { ThrowXMLwithMemMgr1(InvalidDatatypeFacetException, XMLExcepts::FACET_Invalid_TotalDigit, value, manager); } // check 4.3.11.c0 must: totalDigits > 0 if ( val <= 0 ) ThrowXMLwithMemMgr1(InvalidDatatypeFacetException, XMLExcepts::FACET_PosInt_TotalDigit, value, manager); setTotalDigits(val); setFacetsDefined(DatatypeValidator::FACET_TOTALDIGITS); } else if (XMLString::equals(key, SchemaSymbols::fgELT_FRACTIONDIGITS)) { int val; try { val = XMLString::parseInt(value, manager); } catch (NumberFormatException&) { ThrowXMLwithMemMgr1(InvalidDatatypeFacetException, XMLExcepts::FACET_Invalid_FractDigit, value, manager); } // check 4.3.12.c0 must: fractionDigits > 0 if ( val < 0 ) ThrowXMLwithMemMgr1(InvalidDatatypeFacetException, XMLExcepts::FACET_NonNeg_FractDigit, value, manager); setFractionDigits(val); setFacetsDefined(DatatypeValidator::FACET_FRACTIONDIGITS); } else { ThrowXMLwithMemMgr1(InvalidDatatypeFacetException , XMLExcepts::FACET_Invalid_Tag , key , manager); } } void DecimalDatatypeValidator::inheritAdditionalFacet() { DecimalDatatypeValidator *numBase = (DecimalDatatypeValidator*) getBaseValidator(); if (!numBase) return; int thisFacetsDefined = getFacetsDefined(); int baseFacetsDefined = numBase->getFacetsDefined(); // inherit totalDigits if ((( baseFacetsDefined & DatatypeValidator::FACET_TOTALDIGITS) != 0) && (( thisFacetsDefined & DatatypeValidator::FACET_TOTALDIGITS) == 0) ) { setTotalDigits(numBase->fTotalDigits); setFacetsDefined(DatatypeValidator::FACET_TOTALDIGITS); } // inherit fractionDigits if ((( baseFacetsDefined & DatatypeValidator::FACET_FRACTIONDIGITS) != 0) && (( thisFacetsDefined & DatatypeValidator::FACET_FRACTIONDIGITS) == 0) ) { setFractionDigits(numBase->fFractionDigits); setFacetsDefined(DatatypeValidator::FACET_FRACTIONDIGITS); } } void DecimalDatatypeValidator::checkAdditionalFacetConstraints(MemoryManager* const manager) const { int thisFacetsDefined = getFacetsDefined(); // check 4.3.12.c1 must: fractionDigits <= totalDigits if ( ((thisFacetsDefined & DatatypeValidator::FACET_FRACTIONDIGITS) != 0) && ((thisFacetsDefined & DatatypeValidator::FACET_TOTALDIGITS) != 0) ) { if ( fFractionDigits > fTotalDigits ) { XMLCh value1[BUF_LEN+1]; XMLCh value2[BUF_LEN+1]; XMLString::binToText(getFractionDigits(), value1, BUF_LEN, 10, manager); XMLString::binToText(getTotalDigits(), value2, BUF_LEN, 10, manager); ThrowXMLwithMemMgr2(InvalidDatatypeFacetException , XMLExcepts::FACET_TotDigit_FractDigit , value2 , value1 , manager); } } } void DecimalDatatypeValidator::checkAdditionalFacetConstraintsBase(MemoryManager* const manager) const { DecimalDatatypeValidator *numBase = (DecimalDatatypeValidator*) getBaseValidator(); if (!numBase) return; int thisFacetsDefined = getFacetsDefined(); int baseFacetsDefined = numBase->getFacetsDefined(); // check 4.3.11.c1 error: totalDigits > base.totalDigits // totalDigits != base.totalDigits if (base.fixed) if (( thisFacetsDefined & DatatypeValidator::FACET_TOTALDIGITS) != 0) { if ( (( baseFacetsDefined & DatatypeValidator::FACET_TOTALDIGITS) != 0) && ( fTotalDigits > numBase->fTotalDigits )) { XMLCh value1[BUF_LEN+1]; XMLCh value2[BUF_LEN+1]; XMLString::binToText(fTotalDigits, value1, BUF_LEN, 10, manager); XMLString::binToText(numBase->fTotalDigits, value2, BUF_LEN, 10, manager); ThrowXMLwithMemMgr2(InvalidDatatypeFacetException , XMLExcepts::FACET_totalDigit_base_totalDigit , value1 , value2 , manager); } if ( (( baseFacetsDefined & DatatypeValidator::FACET_TOTALDIGITS) != 0) && (( numBase->getFixed() & DatatypeValidator::FACET_TOTALDIGITS) != 0) && ( fTotalDigits != numBase->fTotalDigits )) { XMLCh value1[BUF_LEN+1]; XMLCh value2[BUF_LEN+1]; XMLString::binToText(fTotalDigits, value1, BUF_LEN, 10, manager); XMLString::binToText(numBase->fTotalDigits, value2, BUF_LEN, 10, manager); ThrowXMLwithMemMgr2(InvalidDatatypeFacetException , XMLExcepts::FACET_totalDigit_base_fixed , value1 , value2 , manager); } } if (( thisFacetsDefined & DatatypeValidator::FACET_FRACTIONDIGITS) != 0) { // check question error: fractionDigits > base.fractionDigits ??? if ( (( baseFacetsDefined & DatatypeValidator::FACET_FRACTIONDIGITS) != 0) && ( fFractionDigits > numBase->fFractionDigits )) { XMLCh value1[BUF_LEN+1]; XMLCh value2[BUF_LEN+1]; XMLString::binToText(fFractionDigits, value1, BUF_LEN, 10, manager); XMLString::binToText(numBase->fFractionDigits, value2, BUF_LEN, 10, manager); ThrowXMLwithMemMgr2(InvalidDatatypeFacetException , XMLExcepts::FACET_fractDigit_base_fractDigit , value1 , value2 , manager); } // check question error: fractionDigits > base.totalDigits ??? if ( (( baseFacetsDefined & DatatypeValidator::FACET_TOTALDIGITS) != 0) && ( fFractionDigits > numBase->fTotalDigits )) { XMLCh value1[BUF_LEN+1]; XMLCh value2[BUF_LEN+1]; XMLString::binToText(fFractionDigits, value1, BUF_LEN, 10, manager); XMLString::binToText(numBase->fTotalDigits, value2, BUF_LEN, 10, manager); ThrowXMLwithMemMgr2(InvalidDatatypeFacetException , XMLExcepts::FACET_fractDigit_base_totalDigit , value1 , value2 , manager); } // fractionDigits != base.fractionDigits if (base.fixed) if ( (( baseFacetsDefined & DatatypeValidator::FACET_FRACTIONDIGITS) != 0) && (( numBase->getFixed() & DatatypeValidator::FACET_FRACTIONDIGITS) != 0) && ( fFractionDigits != numBase->fFractionDigits )) { XMLCh value1[BUF_LEN+1]; XMLCh value2[BUF_LEN+1]; XMLString::binToText(fFractionDigits, value1, BUF_LEN, 10, manager); XMLString::binToText(numBase->fFractionDigits, value2, BUF_LEN, 10, manager); ThrowXMLwithMemMgr2(InvalidDatatypeFacetException , XMLExcepts::FACET_fractDigit_base_fixed , value1 , value2 , manager); } } } int DecimalDatatypeValidator::compareValues(const XMLNumber* const lValue , const XMLNumber* const rValue) { return XMLBigDecimal::compareValues((XMLBigDecimal*) lValue, (XMLBigDecimal*) rValue, ((XMLBigDecimal*)lValue)->getMemoryManager()); } void DecimalDatatypeValidator::setMaxInclusive(const XMLCh* const value) { fMaxInclusive = new (fMemoryManager) XMLBigDecimal(value, fMemoryManager); } void DecimalDatatypeValidator::setMaxExclusive(const XMLCh* const value) { fMaxExclusive = new (fMemoryManager) XMLBigDecimal(value, fMemoryManager); } void DecimalDatatypeValidator::setMinInclusive(const XMLCh* const value) { fMinInclusive = new (fMemoryManager) XMLBigDecimal(value, fMemoryManager); } void DecimalDatatypeValidator::setMinExclusive(const XMLCh* const value) { fMinExclusive = new (fMemoryManager) XMLBigDecimal(value, fMemoryManager); } void DecimalDatatypeValidator::setEnumeration(MemoryManager* const manager) { // check 4.3.5.c0 must: enumeration values from the value space of base // // 1. shall be from base value space // 2. shall be from current value space as well ( shall go through boundsCheck() ) // if (!fStrEnumeration) return; XMLSize_t i = 0; XMLSize_t enumLength = fStrEnumeration->size(); DecimalDatatypeValidator *numBase = (DecimalDatatypeValidator*) getBaseValidator(); if (numBase) { try { for ( i = 0; i < enumLength; i++) { numBase->checkContent(fStrEnumeration->elementAt(i), (ValidationContext*)0, false, manager); } } catch (XMLException&) { ThrowXMLwithMemMgr1(InvalidDatatypeFacetException , XMLExcepts::FACET_enum_base , fStrEnumeration->elementAt(i) , manager); } } #if 0 // spec says that only base has to checkContent // We put the this->checkContent in a separate loop // to not block original message with in that method. // for ( i = 0; i < enumLength; i++) { checkContent(fStrEnumeration->elementAt(i), (ValidationContext*)0, false, manager); } #endif fEnumeration = new (manager) RefVectorOf(enumLength, true, manager); fEnumerationInherited = false; for ( i = 0; i < enumLength; i++) { fEnumeration->insertElementAt(new (manager) XMLBigDecimal(fStrEnumeration->elementAt(i), manager), i); } } // ----------------------------------------------------------------------- // Abstract interface from AbstractNumericValidator // ----------------------------------------------------------------------- void DecimalDatatypeValidator::checkContent(const XMLCh* const content , ValidationContext* const context , bool asBase , MemoryManager* const manager) { //validate against base validator if any DecimalDatatypeValidator *pBase = (DecimalDatatypeValidator*) this->getBaseValidator(); if (pBase) pBase->checkContent(content, context, true, manager); int thisFacetsDefined = getFacetsDefined(); // we check pattern first if ( (thisFacetsDefined & DatatypeValidator::FACET_PATTERN ) != 0 ) { if (getRegex()->matches(content, manager) ==false) { ThrowXMLwithMemMgr2(InvalidDatatypeValueException , XMLExcepts::VALUE_NotMatch_Pattern , content , getPattern() , manager); } } // if this is a base validator, we only need to check pattern facet // all other facet were inherited by the derived type if (asBase) return; XMLBigDecimal compareDataValue(content, manager); XMLBigDecimal* compareData = &compareDataValue; if (getEnumeration()) { XMLSize_t i=0; XMLSize_t enumLength = getEnumeration()->size(); for ( ; i < enumLength; i++) { if (compareValues(compareData, (XMLBigDecimal*) getEnumeration()->elementAt(i)) ==0 ) break; } if (i == enumLength) ThrowXMLwithMemMgr1(InvalidDatatypeValueException, XMLExcepts::VALUE_NotIn_Enumeration, content, manager); } boundsCheck(compareData, manager); if ( (thisFacetsDefined & DatatypeValidator::FACET_FRACTIONDIGITS) != 0 ) { if ( compareData->getScale() > fFractionDigits ) { XMLCh value1[BUF_LEN+1]; XMLCh value2[BUF_LEN+1]; XMLString::binToText(compareData->getScale(), value1, BUF_LEN, 10, manager); XMLString::binToText(fFractionDigits, value2, BUF_LEN, 10, manager); ThrowXMLwithMemMgr3(InvalidDatatypeFacetException , XMLExcepts::VALUE_exceed_fractDigit , compareData->getRawData() , value1 , value2 , manager); } } if ( (thisFacetsDefined & DatatypeValidator::FACET_TOTALDIGITS) != 0 ) { if ( compareData->getTotalDigit() > fTotalDigits ) { XMLCh value1[BUF_LEN+1]; XMLCh value2[BUF_LEN+1]; XMLString::binToText(compareData->getTotalDigit(), value1, BUF_LEN, 10, manager); XMLString::binToText(fTotalDigits, value2, BUF_LEN, 10, manager); ThrowXMLwithMemMgr3(InvalidDatatypeFacetException , XMLExcepts::VALUE_exceed_totalDigit , compareData->getRawData() , value1 , value2 , manager); } /*** E2-44 totalDigits ... by restricting it to numbers that are expressible as i x 10^-n where i and n are integers such that |i| < 10^totalDigits and 0 <= n <= totalDigits. ***/ if ( compareData->getScale() > fTotalDigits ) { XMLCh value1[BUF_LEN+1]; XMLCh value2[BUF_LEN+1]; XMLString::binToText(compareData->getScale(), value1, BUF_LEN, 10, manager); XMLString::binToText(fTotalDigits, value2, BUF_LEN, 10, manager); ThrowXMLwithMemMgr3(InvalidDatatypeFacetException , XMLExcepts::VALUE_exceed_totalDigit , compareData->getRawData() , value1 , value2 , manager); } } } /*** * 3.2.3 decimal * * . the preceding optional "+" sign is prohibited. * . The decimal point is required. * . Leading and trailing zeroes are prohibited subject to the following: * there must be at least one digit to the right and to the left of the decimal point which may be a zero. * * * 3.3.13 integer * 3.3.16 long * 3.3.17 int * 3.3.18 short * 3.3.19 byte * 3.3.20 nonNegativeInteger * 3.3.25 positiveInteger * * . the preceding optional "+" sign is prohibited and * . leading zeroes are prohibited. * * * E2-27 * 3.3.14 nonPositiveInteger * * . In the canonical form for zero, the sign must be omitted. * . leading zeroes are prohibited. * * 3.3.15 negativeInteger * 3.3.21 unsignedLong * 3.3.22 unsignedInt * 3.3.23 unsignedShort * 3.3.24 unsignedByte * * . leading zeroes are prohibited. * * Summary: * . leading zeros are prohibited for all three groups * . '-' is required for nonPositiveInteger if it is zero * ***/ const XMLCh* DecimalDatatypeValidator::getCanonicalRepresentation(const XMLCh* const rawData , MemoryManager* const memMgr , bool toValidate) const { MemoryManager* toUse = memMgr? memMgr : fMemoryManager; DecimalDatatypeValidator* temp = (DecimalDatatypeValidator*) this; if (toValidate) { try { temp->checkContent(rawData, 0, false, toUse); } catch (...) { return 0; } } // XMLBigInteger::getCanonicalRepresentation and // XMLBigDecimal::getCanonicalRepresentation will handle exceptional cases XMLCanRepGroup::CanRepGroup dvType = DatatypeValidatorFactory::getCanRepGroup(temp); if ((dvType == XMLCanRepGroup::Decimal_Derived_signed) || (dvType == XMLCanRepGroup::Decimal_Derived_unsigned) || (dvType == XMLCanRepGroup::Decimal_Derived_npi) ) { return XMLBigInteger::getCanonicalRepresentation(rawData, toUse, dvType == XMLCanRepGroup::Decimal_Derived_npi); } else if (dvType == XMLCanRepGroup::Decimal) { return XMLBigDecimal::getCanonicalRepresentation(rawData, toUse); } else //in case? { return XMLString::replicate(rawData, toUse); } } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(DecimalDatatypeValidator) void DecimalDatatypeValidator::serialize(XSerializeEngine& serEng) { /*** * Note: * * During storing, we need write the specific number * type info before calling base::serialize(). * * While loading, we do nothing here ***/ if (serEng.isStoring()) { serEng<<(int) (XMLNumber::BigDecimal); } AbstractNumericValidator::serialize(serEng); //don't serialize XMLBigDecimal* if (serEng.isStoring()) { serEng<>fTotalDigits; serEng>>fFractionDigits; } } XERCES_CPP_NAMESPACE_END /** * End of file DecimalDatatypeValidator::cpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/DurationDatatypeValidator.hpp0000644000175000017500000000657410606722647026337 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DurationDatatypeValidator.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DURATION_DATATYPE_VALIDATOR_HPP) #define XERCESC_INCLUDE_GUARD_DURATION_DATATYPE_VALIDATOR_HPP #include XERCES_CPP_NAMESPACE_BEGIN class VALIDATORS_EXPORT DurationDatatypeValidator : public DateTimeValidator { public: // ----------------------------------------------------------------------- // Public ctor/dtor // ----------------------------------------------------------------------- /** @name Constructors and Destructor. */ //@{ DurationDatatypeValidator ( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); DurationDatatypeValidator ( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); ~DurationDatatypeValidator(); //@} /** * Returns an instance of the base datatype validator class * Used by the DatatypeValidatorFactory. */ virtual DatatypeValidator* newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(DurationDatatypeValidator) protected: // ----------------------------------------------------------------------- // implementation of (DateTimeValidator's) virtual interface // ----------------------------------------------------------------------- virtual XMLDateTime* parse(const XMLCh* const, MemoryManager* const manager); virtual void parse(XMLDateTime* const); virtual int compareDates(const XMLDateTime* const , const XMLDateTime* const , bool ); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DurationDatatypeValidator(const DurationDatatypeValidator &); DurationDatatypeValidator& operator = (const DurationDatatypeValidator&); }; XERCES_CPP_NAMESPACE_END #endif /** * End of file DurationDatatypeValidator.hpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/ENTITYDatatypeValidator.hpp0000644000175000017500000001112410606722647025551 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: ENTITYDatatypeValidator.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_ENTITY_DATATYPEVALIDATOR_HPP) #define XERCESC_INCLUDE_GUARD_ENTITY_DATATYPEVALIDATOR_HPP #include #include #include XERCES_CPP_NAMESPACE_BEGIN class VALIDATORS_EXPORT ENTITYDatatypeValidator : public StringDatatypeValidator { public: // ----------------------------------------------------------------------- // Public ctor/dtor // ----------------------------------------------------------------------- /** @name Constructors and Destructor. */ //@{ ENTITYDatatypeValidator ( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); ENTITYDatatypeValidator ( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual ~ENTITYDatatypeValidator(); //@} // ----------------------------------------------------------------------- // Validation methods // ----------------------------------------------------------------------- /** @name Validation Function */ //@{ /** * validate that a string matches the boolean datatype * @param content A string containing the content to be validated * * @exception throws InvalidDatatypeException if the content is * is not valid. */ virtual void validate ( const XMLCh* const content , ValidationContext* const context = 0 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); //@} // ----------------------------------------------------------------------- // Compare methods // ----------------------------------------------------------------------- /** @name Compare Function */ //@{ /** * Compare two boolean data types * * @param content1 * @param content2 * @return */ virtual int compare(const XMLCh* const, const XMLCh* const , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); //@} /** * Returns an instance of the base datatype validator class * Used by the DatatypeValidatorFactory. */ virtual DatatypeValidator* newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(ENTITYDatatypeValidator) protected: // // ctor provided to be used by derived classes // ENTITYDatatypeValidator(DatatypeValidator* const baseValidator , RefHashTableOf* const facets , const int finalSet , const ValidatorType type); virtual void checkValueSpace(const XMLCh* const content , MemoryManager* const manager); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- ENTITYDatatypeValidator(const ENTITYDatatypeValidator&); ENTITYDatatypeValidator& operator = (const ENTITYDatatypeValidator&); }; XERCES_CPP_NAMESPACE_END #endif /** * End of file ENTITYDatatypeValidator.hpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/DateTimeValidator.hpp0000644000175000017500000001035610606722647024543 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DateTimeValidator.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DATETIME_VALIDATOR_HPP) #define XERCESC_INCLUDE_GUARD_DATETIME_VALIDATOR_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN class VALIDATORS_EXPORT DateTimeValidator : public AbstractNumericFacetValidator { public: // ----------------------------------------------------------------------- // Public dtor // ----------------------------------------------------------------------- /** @name Constructor. */ //@{ virtual ~DateTimeValidator(); //@} virtual void validate ( const XMLCh* const content , ValidationContext* const context = 0 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual int compare(const XMLCh* const value1 , const XMLCh* const value2 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(DateTimeValidator) protected: // ----------------------------------------------------------------------- // ctor used by derived class // ----------------------------------------------------------------------- DateTimeValidator ( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , const int finalSet , const ValidatorType type , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); // // Abstract interface // virtual int compareValues(const XMLNumber* const lValue , const XMLNumber* const rValue); virtual void checkContent(const XMLCh* const content , ValidationContext* const context , bool asBase , MemoryManager* const manager); virtual void setMaxInclusive(const XMLCh* const); virtual void setMaxExclusive(const XMLCh* const); virtual void setMinInclusive(const XMLCh* const); virtual void setMinExclusive(const XMLCh* const); virtual void setEnumeration(MemoryManager* const manager); protected: // ----------------------------------------------------------------------- // helper interface: to be implemented/overwritten by derived class // ----------------------------------------------------------------------- virtual XMLDateTime* parse(const XMLCh* const, MemoryManager* const manager) = 0; virtual void parse(XMLDateTime* const) = 0; // to be overwritten by duration virtual int compareDates(const XMLDateTime* const lValue , const XMLDateTime* const rValue , bool strict); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DateTimeValidator(const DateTimeValidator&); DateTimeValidator& operator=(const DateTimeValidator&); }; XERCES_CPP_NAMESPACE_END #endif /** * End of file DateTimeValidator.hpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/YearDatatypeValidator.hpp0000644000175000017500000000615310606722647025443 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: YearDatatypeValidator.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_YEAR_DATATYPE_VALIDATOR_HPP) #define XERCESC_INCLUDE_GUARD_YEAR_DATATYPE_VALIDATOR_HPP #include XERCES_CPP_NAMESPACE_BEGIN class VALIDATORS_EXPORT YearDatatypeValidator : public DateTimeValidator { public: // ----------------------------------------------------------------------- // Public ctor/dtor // ----------------------------------------------------------------------- /** @name Constructors and Destructor */ //@{ YearDatatypeValidator ( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); YearDatatypeValidator ( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); ~YearDatatypeValidator(); //@} /** * Returns an instance of the base datatype validator class * Used by the DatatypeValidatorFactory. */ virtual DatatypeValidator* newInstance ( RefHashTableOf* const facets , RefArrayVectorOf* const enums , const int finalSet , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(YearDatatypeValidator) protected: // ----------------------------------------------------------------------- // implementation of (DateTimeValidator's) virtual interface // ----------------------------------------------------------------------- virtual XMLDateTime* parse(const XMLCh* const, MemoryManager* const manager); virtual void parse(XMLDateTime* const); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- YearDatatypeValidator(const YearDatatypeValidator&); YearDatatypeValidator& operator=(const YearDatatypeValidator&); }; XERCES_CPP_NAMESPACE_END #endif /** * End of file YearDatatypeValidator.hpp */ xerces-c-3.1.1/src/xercesc/validators/datatype/AbstractNumericFacetValidator.hpp0000644000175000017500000001454311032467633027075 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: AbstractNumericFacetValidator.hpp 673155 2008-07-01 17:55:39Z dbertoni $ */ #if !defined(XERCESC_INCLUDE_GUARD_ABSTRACT_NUMERIC_FACET_VALIDATOR_HPP) #define XERCESC_INCLUDE_GUARD_ABSTRACT_NUMERIC_FACET_VALIDATOR_HPP #include #include #include XERCES_CPP_NAMESPACE_BEGIN class VALIDATORS_EXPORT AbstractNumericFacetValidator : public DatatypeValidator { public: // ----------------------------------------------------------------------- // Public ctor/dtor // ----------------------------------------------------------------------- /** @name Constructor. */ //@{ virtual ~AbstractNumericFacetValidator(); //@} virtual const RefArrayVectorOf* getEnumString() const; /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(AbstractNumericFacetValidator) protected: AbstractNumericFacetValidator ( DatatypeValidator* const baseValidator , RefHashTableOf* const facets , const int finalSet , const ValidatorType type , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); void init(RefArrayVectorOf* const enums , MemoryManager* const manager); // // Abstract interface // virtual void assignAdditionalFacet(const XMLCh* const key , const XMLCh* const value , MemoryManager* const manager); virtual void inheritAdditionalFacet(); virtual void checkAdditionalFacetConstraints(MemoryManager* const manager) const; virtual void checkAdditionalFacetConstraintsBase(MemoryManager* const manager) const; virtual int compareValues(const XMLNumber* const lValue , const XMLNumber* const rValue) = 0; virtual void checkContent(const XMLCh* const content , ValidationContext* const context , bool asBase , MemoryManager* const manager) = 0; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- virtual void setMaxInclusive(const XMLCh* const) = 0; virtual void setMaxExclusive(const XMLCh* const) = 0; virtual void setMinInclusive(const XMLCh* const) = 0; virtual void setMinExclusive(const XMLCh* const) = 0; virtual void setEnumeration(MemoryManager* const manager) = 0; static const int INDETERMINATE; public: // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- inline XMLNumber* getMaxInclusive() const; inline XMLNumber* getMaxExclusive() const; inline XMLNumber* getMinInclusive() const; inline XMLNumber* getMinExclusive() const; inline RefVectorOf* getEnumeration() const; protected: // ----------------------------------------------------------------------- // Protected data members // // Allow access to derived class // // ----------------------------------------------------------------------- bool fMaxInclusiveInherited; bool fMaxExclusiveInherited; bool fMinInclusiveInherited; bool fMinExclusiveInherited; bool fEnumerationInherited; XMLNumber* fMaxInclusive; XMLNumber* fMaxExclusive; XMLNumber* fMinInclusive; XMLNumber* fMinExclusive; RefVectorOf* fEnumeration; // save the actual value RefArrayVectorOf* fStrEnumeration; private: void assignFacet(MemoryManager* const manager); void inspectFacet(MemoryManager* const manager); void inspectFacetBase(MemoryManager* const manager); void inheritFacet(); void storeClusive(XSerializeEngine& , bool , XMLNumber*); void loadClusive(XSerializeEngine& , bool& , XMLNumber*& , XMLNumber::NumberType , int ); // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- AbstractNumericFacetValidator(const AbstractNumericFacetValidator&); AbstractNumericFacetValidator& operator=(const AbstractNumericFacetValidator&); }; // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- inline XMLNumber* AbstractNumericFacetValidator::getMaxInclusive() const { return fMaxInclusive; } inline XMLNumber* AbstractNumericFacetValidator::getMaxExclusive() const { return fMaxExclusive; } inline XMLNumber* AbstractNumericFacetValidator::getMinInclusive() const { return fMinInclusive; } inline XMLNumber* AbstractNumericFacetValidator::getMinExclusive() const { return fMinExclusive; } inline RefVectorOf* AbstractNumericFacetValidator::getEnumeration() const { return fEnumeration; } XERCES_CPP_NAMESPACE_END #endif /** * End of file AbstractNumericFacetValidator.hpp */ xerces-c-3.1.1/src/xercesc/validators/DTD/0000755000175000017500000000000011363617241017255 5ustar borisborisxerces-c-3.1.1/src/xercesc/validators/DTD/DTDAttDef.hpp0000644000175000017500000001210211037122704021456 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DTDAttDef.hpp 676911 2008-07-15 13:27:32Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DTDATTDEF_HPP) #define XERCESC_INCLUDE_GUARD_DTDATTDEF_HPP #include XERCES_CPP_NAMESPACE_BEGIN // // This class is a derivative of the core XMLAttDef class. This class adds // any DTD specific data members and provides DTD specific implementations // of any underlying attribute def virtual methods. // // In the DTD we don't do namespaces, so the attribute names are just the // QName literally from the DTD. This is what we return as the full name, // which is what is used to key these in any name keyed collections. // class VALIDATORS_EXPORT DTDAttDef : public XMLAttDef { public : // ----------------------------------------------------------------------- // Constructors and Destructors // ----------------------------------------------------------------------- DTDAttDef(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); DTDAttDef ( const XMLCh* const attName , const XMLAttDef::AttTypes type = CData , const XMLAttDef::DefAttTypes defType = Implied , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); DTDAttDef ( const XMLCh* const attName , const XMLCh* const attValue , const XMLAttDef::AttTypes type , const XMLAttDef::DefAttTypes defType , const XMLCh* const enumValues = 0 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); ~DTDAttDef(); // ----------------------------------------------------------------------- // Implementation of the XMLAttDef interface // ----------------------------------------------------------------------- virtual const XMLCh* getFullName() const; //does nothing currently virtual void reset() {}; // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- XMLSize_t getElemId() const; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- void setElemId(const XMLSize_t newId); void setName(const XMLCh* const newName); /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(DTDAttDef) private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DTDAttDef(const DTDAttDef &); DTDAttDef& operator = (const DTDAttDef&); // ----------------------------------------------------------------------- // Private data members // // fElemId // This is the id of the element (the id is into the element decl // pool) of the element this attribute def said it belonged to. // This is used later to link back to the element, mostly for // validation purposes. // // fName // This is the name of the attribute. Since we don't do namespaces // in the DTD, its just the fully qualified name. // ----------------------------------------------------------------------- XMLSize_t fElemId; XMLCh* fName; }; // --------------------------------------------------------------------------- // DTDAttDef: Implementation of the XMLAttDef interface // --------------------------------------------------------------------------- inline const XMLCh* DTDAttDef::getFullName() const { return fName; } // --------------------------------------------------------------------------- // DTDAttDef: Getter methods // --------------------------------------------------------------------------- inline XMLSize_t DTDAttDef::getElemId() const { return fElemId; } // --------------------------------------------------------------------------- // DTDAttDef: Setter methods // --------------------------------------------------------------------------- inline void DTDAttDef::setElemId(const XMLSize_t newId) { fElemId = newId; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/validators/DTD/DTDElementDecl.cpp0000644000175000017500000003115610523643534022505 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DTDElementDecl.cpp 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // DTDElementDecl: Constructors and Destructor // --------------------------------------------------------------------------- DTDElementDecl::DTDElementDecl(MemoryManager* const manager) : XMLElementDecl(manager) , fModelType(Any) , fAttDefs(0) , fAttList(0) , fContentSpec(0) , fContentModel(0) , fFormattedModel(0) { } DTDElementDecl::DTDElementDecl( const XMLCh* const elemRawName , const unsigned int uriId , const DTDElementDecl::ModelTypes type , MemoryManager* const manager) : XMLElementDecl(manager) , fModelType(type) , fAttDefs(0) , fAttList(0) , fContentSpec(0) , fContentModel(0) , fFormattedModel(0) { setElementName(elemRawName, uriId); } DTDElementDecl::DTDElementDecl( QName* const elementName , const DTDElementDecl::ModelTypes type , MemoryManager* const manager) : XMLElementDecl(manager) , fModelType(type) , fAttDefs(0) , fAttList(0) , fContentSpec(0) , fContentModel(0) , fFormattedModel(0) { setElementName(elementName); } DTDElementDecl::~DTDElementDecl() { delete fAttDefs; delete fAttList; delete fContentSpec; delete fContentModel; getMemoryManager()->deallocate(fFormattedModel);//delete [] fFormattedModel; } // --------------------------------------------------------------------------- // The virtual element decl interface // --------------------------------------------------------------------------- XMLAttDefList& DTDElementDecl::getAttDefList() const { if (!fAttList) { // If the att def list is not made yet, then fault it in too if (!fAttDefs) faultInAttDefList(); ((DTDElementDecl*)this)->fAttList = new (getMemoryManager()) DTDAttDefList(fAttDefs,getMemoryManager()); } return *fAttList; } XMLElementDecl::CharDataOpts DTDElementDecl::getCharDataOpts() const { XMLElementDecl::CharDataOpts retVal; switch(fModelType) { case Children : retVal = XMLElementDecl::SpacesOk; break; case Empty : retVal = XMLElementDecl::NoCharData; break; default : retVal = XMLElementDecl::AllCharData; break; } return retVal; } bool DTDElementDecl::hasAttDefs() const { // If the collection hasn't been faulted in, then no att defs if (!fAttDefs) return false; return !fAttDefs->isEmpty(); } void DTDElementDecl::setContentSpec(ContentSpecNode* toAdopt) { delete fContentSpec; fContentSpec = toAdopt; //reset Content Model setContentModel(0); } const XMLCh* DTDElementDecl::getFormattedContentModel() const { // // If its not already built, then call the protected virtual method // to allow the derived class to build it (since only it knows.) // Otherwise, just return the previously formatted methods. // // Since we are faulting this in, within a const getter, we have to // cast off the const-ness. // if (!fFormattedModel) ((DTDElementDecl*)this)->fFormattedModel = formatContentModel(); return fFormattedModel; } // --------------------------------------------------------------------------- // DTDElementDecl: Getter methods // --------------------------------------------------------------------------- const DTDAttDef* DTDElementDecl::getAttDef(const XMLCh* const attName) const { // If no list, then return a null if (!fAttDefs) return 0; return fAttDefs->get(attName); } DTDAttDef* DTDElementDecl::getAttDef(const XMLCh* const attName) { // If no list, then return a null if (!fAttDefs) return 0; return fAttDefs->get(attName); } // --------------------------------------------------------------------------- // DTDElementDecl: Implementation of the protected virtual interface // --------------------------------------------------------------------------- void DTDElementDecl::addAttDef(DTDAttDef* const toAdd) { // Fault in the att list if required if (!fAttDefs) faultInAttDefList(); // Tell this guy the element id of its parent (us) toAdd->setElemId(getId()); fAttDefs->put((void*)(toAdd->getFullName()), toAdd); // update and/or create fAttList if(!fAttList) ((DTDElementDecl*)this)->fAttList = new (getMemoryManager()) DTDAttDefList(fAttDefs,getMemoryManager()); fAttList->addAttDef(toAdd); } // --------------------------------------------------------------------------- // DTDElementDecl: Private helper methods // --------------------------------------------------------------------------- XMLCh* DTDElementDecl::formatContentModel() const { XMLCh* newValue = 0; if (fModelType == Any) { newValue = XMLString::replicate(XMLUni::fgAnyString, getMemoryManager()); } else if (fModelType == Empty) { newValue = XMLString::replicate(XMLUni::fgEmptyString, getMemoryManager()); } else { // // Use a temp XML buffer to format into. Content models could be // pretty long, but very few will be longer than one K. The buffer // will expand to handle the more pathological ones. // XMLBuffer bufFmt(1023, getMemoryManager()); getContentSpec()->formatSpec(bufFmt); newValue = XMLString::replicate(bufFmt.getRawBuffer(), getMemoryManager()); } return newValue; } XMLContentModel* DTDElementDecl::makeContentModel() { XMLContentModel* cmRet = 0; if (fModelType == Mixed_Simple) { // // Just create a mixel content model object. This type of // content model is optimized for mixed content validation. // cmRet = new (getMemoryManager()) MixedContentModel(true, this->getContentSpec(), false, getMemoryManager()); } else if (fModelType == Children) { // // This method will create an optimal model for the complexity // of the element's defined model. If its simple, it will create // a SimpleContentModel object. If its a simple list, it will // create a SimpleListContentModel object. If its complex, it // will create a DFAContentModel object. // cmRet = createChildModel(); } else { ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::CM_MustBeMixedOrChildren, getMemoryManager()); } return cmRet; } XMLContentModel* DTDElementDecl::createChildModel() { // Get the content spec node of the element ContentSpecNode* specNode = getContentSpec(); if(!specNode) ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::CM_UnknownCMSpecType, getMemoryManager()); // // Do a sanity check that the node does not have a PCDATA id. Since, // if it was, it should have already gotten taken by the Mixed model. // if (specNode->getElement()) { if (specNode->getElement()->getURI() == XMLElementDecl::fgPCDataElemId) ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::CM_NoPCDATAHere, getMemoryManager()); } // // According to the type of node, we will create the correct type of // content model. // if (specNode->getType() == ContentSpecNode::Leaf) { // Create a simple content model return new (getMemoryManager()) SimpleContentModel ( true , specNode->getElement() , 0 , ContentSpecNode::Leaf , getMemoryManager() ); } else if ((specNode->getType() == ContentSpecNode::Choice) || (specNode->getType() == ContentSpecNode::Sequence)) { // // Lets see if both of the children are leafs. If so, then it has to // be a simple content model // if ((specNode->getFirst()->getType() == ContentSpecNode::Leaf) && (specNode->getSecond()->getType() == ContentSpecNode::Leaf)) { return new (getMemoryManager()) SimpleContentModel ( true , specNode->getFirst()->getElement() , specNode->getSecond()->getElement() , specNode->getType() , getMemoryManager() ); } } else if ((specNode->getType() == ContentSpecNode::OneOrMore) || (specNode->getType() == ContentSpecNode::ZeroOrMore) || (specNode->getType() == ContentSpecNode::ZeroOrOne)) { // // Its a repetition, so see if its one child is a leaf. If so its a // repetition of a single element, so we can do a simple content // model for that. // if (specNode->getFirst()->getType() == ContentSpecNode::Leaf) { return new (getMemoryManager()) SimpleContentModel ( true , specNode->getFirst()->getElement() , 0 , specNode->getType() , getMemoryManager() ); } } else { ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::CM_UnknownCMSpecType, getMemoryManager()); } // Its not any simple type of content, so create a DFA based content model return new (getMemoryManager()) DFAContentModel ( true , this->getContentSpec() , getMemoryManager() ); } void DTDElementDecl::faultInAttDefList() const { // Use a hash modulus of 29 and tell it owns its elements ((DTDElementDecl*)this)->fAttDefs = new (getMemoryManager()) RefHashTableOf(29, true, getMemoryManager()); } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(DTDElementDecl) void DTDElementDecl::serialize(XSerializeEngine& serEng) { XMLElementDecl::serialize(serEng); if (serEng.isStoring()) { serEng<<(int) fModelType; /*** * * Serialize RefHashTableOf * ***/ XTemplateSerializer::storeObject(fAttDefs, serEng); serEng<>i; fModelType=(ModelTypes)i; /*** * * Deserialize RefHashTableOf * ***/ XTemplateSerializer::loadObject(&fAttDefs, 29, true, serEng); serEng>>fAttList; serEng>>fContentSpec; /*** * don't deserialize * * XMLContentModel* fContentModel; * XMLCh* fFormattedModel; * ***/ fContentModel = 0; fFormattedModel = 0; } } XMLElementDecl::objectType DTDElementDecl::getObjectType() const { return DTD; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/validators/DTD/DTDValidator.hpp0000644000175000017500000001300111037122704022233 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DTDValidator.hpp 676911 2008-07-15 13:27:32Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DTDVALIDATOR_HPP) #define XERCESC_INCLUDE_GUARD_DTDVALIDATOR_HPP #include #include #include XERCES_CPP_NAMESPACE_BEGIN class XMLMsgLoader; // // This is a derivative of the abstract validator interface. This class // implements a validator that supports standard XML 1.0 DTD semantics. // This class handles scanning the internal and external subsets of the // DTD, and provides the standard validation services against the DTD info // it found. // class VALIDATORS_EXPORT DTDValidator : public XMLValidator { public: // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- DTDValidator(XMLErrorReporter* const errReporter = 0); virtual ~DTDValidator(); // ----------------------------------------------------------------------- // Implementation of the XMLValidator interface // ----------------------------------------------------------------------- virtual bool checkContent ( XMLElementDecl* const elemDecl , QName** const children , XMLSize_t childCount , XMLSize_t* indexFailingChild ); virtual void faultInAttr ( XMLAttr& toFill , const XMLAttDef& attDef ) const; virtual void preContentValidation(bool reuseGrammar, bool validateDefAttr = false); virtual void postParseValidation(); virtual void reset(); virtual bool requiresNamespaces() const; virtual void validateAttrValue ( const XMLAttDef* attDef , const XMLCh* const attrValue , bool preValidation = false , const XMLElementDecl* elemDecl = 0 ); virtual void validateElement ( const XMLElementDecl* elemDef ); virtual Grammar* getGrammar() const; virtual void setGrammar(Grammar* aGrammar); // ----------------------------------------------------------------------- // Virtual DTD handler interface. // ----------------------------------------------------------------------- virtual bool handlesDTD() const; // ----------------------------------------------------------------------- // Virtual Schema handler interface. handlesSchema() always return false. // ----------------------------------------------------------------------- virtual bool handlesSchema() const; private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DTDValidator(const DTDValidator &); DTDValidator& operator = (const DTDValidator&); // ----------------------------------------------------------------------- // Helper // ----------------------------------------------------------------------- void checkTokenList(const XMLAttDef& attDef , bool toValidateNotation); // ----------------------------------------------------------------------- // Private data members // // fDTDGrammar // The DTD information stored. // // ----------------------------------------------------------------------- DTDGrammar* fDTDGrammar; }; // --------------------------------------------------------------------------- // Virtual interface // --------------------------------------------------------------------------- inline Grammar* DTDValidator::getGrammar() const { return fDTDGrammar; } inline void DTDValidator::setGrammar(Grammar* aGrammar) { fDTDGrammar = (DTDGrammar*) aGrammar; } inline void DTDValidator::validateElement (const XMLElementDecl*) { // no special DTD Element validation } // --------------------------------------------------------------------------- // DTDValidator: DTD handler interface // --------------------------------------------------------------------------- inline bool DTDValidator::handlesDTD() const { // We definitely want to handle DTD scanning return true; } // --------------------------------------------------------------------------- // DTDValidator: Schema handler interface // --------------------------------------------------------------------------- inline bool DTDValidator::handlesSchema() const { // No Schema scanning return false; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/validators/DTD/DTDGrammar.cpp0000644000175000017500000002055011037122704021676 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DTDGrammar.cpp 676911 2008-07-15 13:27:32Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // DTDGrammar: Static member data // --------------------------------------------------------------------------- NameIdPool* DTDGrammar::fDefaultEntities = 0; void XMLInitializer::initializeDTDGrammar() { DTDGrammar::fDefaultEntities = new NameIdPool(11, 12); // Add the default entity entries for the character refs that must // always be present. We indicate that they are from the internal // subset. They aren't really, but they have to look that way so // that they are still valid for use within a standalone document. // // We also mark them as special char entities, which allows them // to be used in places whether other non-numeric general entities // cannot. // if (DTDGrammar::fDefaultEntities) { DTDGrammar::fDefaultEntities->put(new DTDEntityDecl(XMLUni::fgAmp, chAmpersand, true, true)); DTDGrammar::fDefaultEntities->put(new DTDEntityDecl(XMLUni::fgLT, chOpenAngle, true, true)); DTDGrammar::fDefaultEntities->put(new DTDEntityDecl(XMLUni::fgGT, chCloseAngle, true, true)); DTDGrammar::fDefaultEntities->put(new DTDEntityDecl(XMLUni::fgQuot, chDoubleQuote, true, true)); DTDGrammar::fDefaultEntities->put(new DTDEntityDecl(XMLUni::fgApos, chSingleQuote, true, true)); } } void XMLInitializer::terminateDTDGrammar() { delete DTDGrammar::fDefaultEntities; DTDGrammar::fDefaultEntities = 0; } //--------------------------------------------------------------------------- // DTDGrammar: Constructors and Destructor // --------------------------------------------------------------------------- DTDGrammar::DTDGrammar(MemoryManager* const manager) : fMemoryManager(manager) , fElemDeclPool(0) , fElemNonDeclPool(0) , fEntityDeclPool(0) , fNotationDeclPool(0) , fGramDesc(0) , fValidated(false) { // // Init all the pool members. // // Investigate what the optimum values would be for the various // pools. // fElemDeclPool = new (fMemoryManager) NameIdPool(109, 128, fMemoryManager); // should not need this in the common situation where grammars // are built once and then read - NG //fElemNonDeclPool = new (fMemoryManager) NameIdPool(29, 128, fMemoryManager); fEntityDeclPool = new (fMemoryManager) NameIdPool(109, 128, fMemoryManager); fNotationDeclPool = new (fMemoryManager) NameIdPool(109, 128, fMemoryManager); //REVISIT: use grammarPool to create fGramDesc = new (fMemoryManager) XMLDTDDescriptionImpl(XMLUni::fgDTDEntityString, fMemoryManager); } DTDGrammar::~DTDGrammar() { delete fElemDeclPool; if(fElemNonDeclPool) { delete fElemNonDeclPool; } delete fEntityDeclPool; delete fNotationDeclPool; delete fGramDesc; } // ----------------------------------------------------------------------- // Virtual methods // ----------------------------------------------------------------------- XMLElementDecl* DTDGrammar::findOrAddElemDecl (const unsigned int uriId , const XMLCh* const baseName , const XMLCh* const , const XMLCh* const qName , unsigned int scope , bool& wasAdded ) { // See it it exists DTDElementDecl* retVal = (DTDElementDecl*) getElemDecl(uriId, baseName, qName, scope); // if not, then add this in if (!retVal) { retVal = new (fMemoryManager) DTDElementDecl ( qName , uriId , DTDElementDecl::Any , fMemoryManager ); if(!fElemNonDeclPool) fElemNonDeclPool = new (fMemoryManager) NameIdPool(29, 128, fMemoryManager); const XMLSize_t elemId = fElemNonDeclPool->put(retVal); retVal->setId(elemId); wasAdded = true; } else { wasAdded = false; } return retVal; } XMLElementDecl* DTDGrammar::putElemDecl (const unsigned int uriId , const XMLCh* const , const XMLCh* const , const XMLCh* const qName , unsigned int , const bool notDeclared) { DTDElementDecl* retVal = new (fMemoryManager) DTDElementDecl ( qName , uriId , DTDElementDecl::Any , fMemoryManager ); if(notDeclared) { if(!fElemNonDeclPool) fElemNonDeclPool = new (fMemoryManager) NameIdPool(29, 128, fMemoryManager); retVal->setId(fElemNonDeclPool->put(retVal)); } else { retVal->setId(fElemDeclPool->put(retVal)); } return retVal; } void DTDGrammar::reset() { // // We need to reset all of the pools. // fElemDeclPool->removeAll(); // now that we have this, no point in deleting it... if(fElemNonDeclPool) fElemNonDeclPool->removeAll(); fNotationDeclPool->removeAll(); fEntityDeclPool->removeAll(); fValidated = false; } void DTDGrammar::setGrammarDescription( XMLGrammarDescription* gramDesc) { if ((!gramDesc) || (gramDesc->getGrammarType() != Grammar::DTDGrammarType)) return; if (fGramDesc) delete fGramDesc; //adopt the grammar Description fGramDesc = (XMLDTDDescription*) gramDesc; } XMLGrammarDescription* DTDGrammar::getGrammarDescription() const { return fGramDesc; } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(DTDGrammar) void DTDGrammar::serialize(XSerializeEngine& serEng) { Grammar::serialize(serEng); //don't serialize fDefaultEntities if (serEng.isStoring()) { /*** * * Serialize NameIdPool* fElemDeclPool; * Serialize NameIdPool* fEntityDeclPool; * Serialize NameIdPool* fNotationDeclPool; ***/ XTemplateSerializer::storeObject(fElemDeclPool, serEng); XTemplateSerializer::storeObject(fEntityDeclPool, serEng); XTemplateSerializer::storeObject(fNotationDeclPool, serEng); /*** * serialize() method shall be used to store object * which has been created in ctor ***/ fGramDesc->serialize(serEng); serEng<* fElemDeclPool; * Deserialize NameIdPool* fEntityDeclPool; * Deerialize NameIdPool* fNotationDeclPool; ***/ XTemplateSerializer::loadObject(&fElemDeclPool, 109, 128, serEng); fElemNonDeclPool = 0; XTemplateSerializer::loadObject(&fEntityDeclPool, 109, 128, serEng); XTemplateSerializer::loadObject(&fNotationDeclPool, 109, 128, serEng); /*** * serialize() method shall be used to load object * which has been created in ctor ***/ fGramDesc->serialize(serEng); serEng>>fValidated; } } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/validators/DTD/DTDAttDefList.hpp0000644000175000017500000001265111360344373022332 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DTDAttDefList.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DTDATTDEFLIST_HPP) #define XERCESC_INCLUDE_GUARD_DTDATTDEFLIST_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN // // This is a derivative of the framework abstract class which defines the // interface to a list of attribute defs that belong to a particular // element. The scanner needs to be able to get a list of the attributes // that an element supports, for use during the validation process and for // fixed/default attribute processing. // // Since each validator can store attributes differently, this abstract // interface allows each validator to provide an implementation of this // data structure that works best for it. // // For us, we just wrap the RefHashTableOf collection that the DTDElementDecl // class uses to store the attributes that belong to it. // // This clss does not adopt the hash table, it just references it. The // hash table is owned by the element decl it is a member of. // class VALIDATORS_EXPORT DTDAttDefList : public XMLAttDefList { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- DTDAttDefList ( RefHashTableOf* const listToUse, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); ~DTDAttDefList(); // ----------------------------------------------------------------------- // Implementation of the virtual interface // ----------------------------------------------------------------------- virtual bool isEmpty() const; virtual XMLAttDef* findAttDef ( const unsigned int uriID , const XMLCh* const attName ); virtual const XMLAttDef* findAttDef ( const unsigned int uriID , const XMLCh* const attName ) const; virtual XMLAttDef* findAttDef ( const XMLCh* const attURI , const XMLCh* const attName ); virtual const XMLAttDef* findAttDef ( const XMLCh* const attURI , const XMLCh* const attName ) const; /** * return total number of attributes in this list */ virtual XMLSize_t getAttDefCount() const ; /** * return attribute at the index-th position in the list. */ virtual XMLAttDef &getAttDef(XMLSize_t index) ; /** * return attribute at the index-th position in the list. */ virtual const XMLAttDef &getAttDef(XMLSize_t index) const ; /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(DTDAttDefList) DTDAttDefList(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); private : void addAttDef(DTDAttDef *toAdd); // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DTDAttDefList(const DTDAttDefList &); DTDAttDefList& operator = (const DTDAttDefList&); // ----------------------------------------------------------------------- // Private data members // // fEnum // This is an enerator for the list that we use to do the enumerator // type methods of this class. // // fList // The list of DTDAttDef objects that represent the attributes that // a particular element supports. // fArray // vector of pointers to the DTDAttDef objects contained in this list // fSize // size of fArray // fCount // number of DTDAttDef objects currently stored in this list // ----------------------------------------------------------------------- RefHashTableOfEnumerator* fEnum; RefHashTableOf* fList; DTDAttDef** fArray; XMLSize_t fSize; XMLSize_t fCount; friend class DTDElementDecl; }; inline void DTDAttDefList::addAttDef(DTDAttDef *toAdd) { if(fCount == fSize) { // need to grow fArray fSize <<= 1; DTDAttDef** newArray = (DTDAttDef **)((getMemoryManager())->allocate( sizeof(DTDAttDef*) * fSize )); memcpy(newArray, fArray, fCount * sizeof(DTDAttDef *)); (getMemoryManager())->deallocate(fArray); fArray = newArray; } fArray[fCount++] = toAdd; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/validators/DTD/DTDAttDefList.cpp0000644000175000017500000001221511042062107022306 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DTDAttDefList.cpp 679359 2008-07-24 11:15:19Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // DTDAttDefList: Constructors and Destructor // --------------------------------------------------------------------------- DTDAttDefList::DTDAttDefList(RefHashTableOf* const listToUse, MemoryManager* const manager) : XMLAttDefList(manager) ,fEnum(0) ,fList(listToUse) ,fArray(0) ,fSize(0) ,fCount(0) { fEnum = new (getMemoryManager()) RefHashTableOfEnumerator(listToUse, false, manager); fArray = (DTDAttDef **)(manager->allocate( sizeof(DTDAttDef*) << 1)); fSize = 2; } DTDAttDefList::~DTDAttDefList() { delete fEnum; (getMemoryManager())->deallocate(fArray); } // --------------------------------------------------------------------------- // DTDAttDefList: Implementation of the virtual interface // --------------------------------------------------------------------------- bool DTDAttDefList::isEmpty() const { return fList->isEmpty(); } XMLAttDef* DTDAttDefList::findAttDef(const unsigned int , const XMLCh* const attName) { // We don't use the URI, so we just look up the name return fList->get(attName); } const XMLAttDef* DTDAttDefList::findAttDef( const unsigned int , const XMLCh* const attName) const { // We don't use the URI, so we just look up the name return fList->get(attName); } XMLAttDef* DTDAttDefList::findAttDef( const XMLCh* const , const XMLCh* const attName) { // We don't use the URI, so we just look up the name return fList->get(attName); } const XMLAttDef* DTDAttDefList::findAttDef( const XMLCh* const , const XMLCh* const attName) const { // We don't use the URI, so we just look up the name return fList->get(attName); } /** * return total number of attributes in this list */ XMLSize_t DTDAttDefList::getAttDefCount() const { return fCount; } /** * return attribute at the index-th position in the list. */ XMLAttDef &DTDAttDefList::getAttDef(XMLSize_t index) { if(index >= fCount) ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::AttrList_BadIndex, getMemoryManager()); return *(fArray[index]); } /** * return attribute at the index-th position in the list. */ const XMLAttDef &DTDAttDefList::getAttDef(XMLSize_t index) const { if(index >= fCount) ThrowXMLwithMemMgr(ArrayIndexOutOfBoundsException, XMLExcepts::AttrList_BadIndex, getMemoryManager()); return *(fArray[index]); } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(DTDAttDefList) void DTDAttDefList::serialize(XSerializeEngine& serEng) { XMLAttDefList::serialize(serEng); if (serEng.isStoring()) { /*** * * Serialize RefHashTableOf * ***/ XTemplateSerializer::storeObject(fList, serEng); serEng.writeSize (fCount); // do not serialize fEnum } else { /*** * * Deserialize RefHashTableOf * ***/ XTemplateSerializer::loadObject(&fList, 29, true, serEng); // assume empty so we can size fArray just right serEng.readSize (fSize); if (!fEnum && fList) { fEnum = new (getMemoryManager()) RefHashTableOfEnumerator(fList, false, getMemoryManager()); } if(fSize) { (getMemoryManager())->deallocate(fArray); fArray = (DTDAttDef **)((getMemoryManager())->allocate( sizeof(DTDAttDef*) * fSize)); fCount = 0; while(fEnum->hasMoreElements()) { fArray[fCount++] = &fEnum->nextElement(); } } } } DTDAttDefList::DTDAttDefList(MemoryManager* const manager) : XMLAttDefList(manager) ,fEnum(0) ,fList(0) ,fArray(0) ,fSize(0) ,fCount(0) { } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/validators/DTD/DTDGrammar.hpp0000644000175000017500000003126711302525023021706 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DTDGrammar.hpp 883368 2009-11-23 15:28:19Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DTDGRAMMAR_HPP) #define XERCESC_INCLUDE_GUARD_DTDGRAMMAR_HPP #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // // This class stores the DTD information // NOTE: DTDs are not namespace aware, so we just use regular NameIdPool // data structures to store element and attribute decls. They are all set // to be in the global namespace and the full QName is used as the base name // of the decl. This means that all the URI parameters below are expected // to be null pointers (and anything else will cause an exception.) // class VALIDATORS_EXPORT DTDGrammar : public Grammar { public: // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- DTDGrammar(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); virtual ~DTDGrammar(); // ----------------------------------------------------------------------- // Implementation of Virtual Interface // ----------------------------------------------------------------------- virtual Grammar::GrammarType getGrammarType() const; virtual const XMLCh* getTargetNamespace() const; // this method should only be used while the grammar is being // constructed, not while it is being used // in a validation episode! virtual XMLElementDecl* findOrAddElemDecl ( const unsigned int uriId , const XMLCh* const baseName , const XMLCh* const prefixName , const XMLCh* const qName , unsigned int scope , bool& wasAdded ) ; virtual XMLSize_t getElemId ( const unsigned int uriId , const XMLCh* const baseName , const XMLCh* const qName , unsigned int scope ) const ; virtual const XMLElementDecl* getElemDecl ( const unsigned int uriId , const XMLCh* const baseName , const XMLCh* const qName , unsigned int scope ) const ; virtual XMLElementDecl* getElemDecl ( const unsigned int uriId , const XMLCh* const baseName , const XMLCh* const qName , unsigned int scope ); virtual const XMLElementDecl* getElemDecl ( const unsigned int elemId ) const; virtual XMLElementDecl* getElemDecl ( const unsigned int elemId ); virtual const XMLNotationDecl* getNotationDecl ( const XMLCh* const notName ) const; virtual XMLNotationDecl* getNotationDecl ( const XMLCh* const notName ); virtual bool getValidated() const; virtual XMLElementDecl* putElemDecl ( const unsigned int uriId , const XMLCh* const baseName , const XMLCh* const prefixName , const XMLCh* const qName , unsigned int scope , const bool notDeclared = false ); virtual XMLSize_t putElemDecl ( XMLElementDecl* const elemDecl , const bool notDeclared = false ) ; virtual XMLSize_t putNotationDecl ( XMLNotationDecl* const notationDecl ) const; virtual void setValidated(const bool newState); virtual void reset(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const DTDEntityDecl* getEntityDecl(const XMLCh* const entName) const; DTDEntityDecl* getEntityDecl(const XMLCh* const entName); NameIdPool* getEntityDeclPool(); const NameIdPool* getEntityDeclPool() const; NameIdPoolEnumerator getElemEnumerator() const; NameIdPoolEnumerator getEntityEnumerator() const; NameIdPoolEnumerator getNotationEnumerator() const; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- virtual void setGrammarDescription( XMLGrammarDescription*); virtual XMLGrammarDescription* getGrammarDescription() const; // ----------------------------------------------------------------------- // Content management methods // ----------------------------------------------------------------------- XMLSize_t putEntityDecl(DTDEntityDecl* const entityDecl) const; /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(DTDGrammar) private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DTDGrammar(const DTDGrammar &); DTDGrammar& operator = (const DTDGrammar&); // ----------------------------------------------------------------------- // Private data members // // fElemDeclPool // This is the element decl pool. It contains all of the elements // declared in the DTD (and their associated attributes.) // // fElemNonDeclPool // This is the element decl pool that is is populated as new elements // are seen in the XML document (not declared in the DTD), and they // are given default characteristics. // // fEntityDeclPool // This is a pool of EntityDecl objects, which contains all of the // general entities that are declared in the DTD subsets, plus the // default entities (such as > < ...) defined by the XML Standard. // // fNotationDeclPool // This is a pool of NotationDecl objects, which contains all of the // notations declared in the DTD subsets. // // fValidated // Indicates if the content of the Grammar has been pre-validated // or not. When using a cached grammar, no need for pre content // validation. // // fGramDesc: adopted // // ----------------------------------------------------------------------- static NameIdPool* fDefaultEntities; MemoryManager* fMemoryManager; NameIdPool* fElemDeclPool; NameIdPool* fElemNonDeclPool; NameIdPool* fEntityDeclPool; NameIdPool* fNotationDeclPool; XMLDTDDescription* fGramDesc; bool fValidated; friend class XMLInitializer; }; // --------------------------------------------------------------------------- // DTDGrammar: Getter methods // --------------------------------------------------------------------------- inline NameIdPoolEnumerator DTDGrammar::getElemEnumerator() const { return NameIdPoolEnumerator(fElemDeclPool, fMemoryManager); } inline NameIdPoolEnumerator DTDGrammar::getEntityEnumerator() const { return NameIdPoolEnumerator(fEntityDeclPool, fMemoryManager); } inline NameIdPoolEnumerator DTDGrammar::getNotationEnumerator() const { return NameIdPoolEnumerator(fNotationDeclPool, fMemoryManager); } inline const DTDEntityDecl* DTDGrammar::getEntityDecl(const XMLCh* const entName) const { DTDEntityDecl* decl = fDefaultEntities->getByKey(entName); if (!decl) return fEntityDeclPool->getByKey(entName); return decl; } inline DTDEntityDecl* DTDGrammar::getEntityDecl(const XMLCh* const entName) { DTDEntityDecl* decl = fDefaultEntities->getByKey(entName); if (!decl) return fEntityDeclPool->getByKey(entName); return decl; } inline NameIdPool* DTDGrammar::getEntityDeclPool() { return fEntityDeclPool; } inline const NameIdPool* DTDGrammar::getEntityDeclPool() const { return fEntityDeclPool; } // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- inline XMLSize_t DTDGrammar::putEntityDecl(DTDEntityDecl* const entityDecl) const { return fEntityDeclPool->put(entityDecl); } // --------------------------------------------------------------------------- // DTDGrammar: Virtual methods // --------------------------------------------------------------------------- inline Grammar::GrammarType DTDGrammar::getGrammarType() const { return Grammar::DTDGrammarType; } inline const XMLCh* DTDGrammar::getTargetNamespace() const { return XMLUni::fgZeroLenString; } // Element Decl inline XMLSize_t DTDGrammar::getElemId (const unsigned int , const XMLCh* const , const XMLCh* const qName , unsigned int) const { // // In this case, we don't return zero to mean 'not found', so we have to // map it to the official not found value if we don't find it. // const DTDElementDecl* decl = fElemDeclPool->getByKey(qName); if (!decl) return XMLElementDecl::fgInvalidElemId; return decl->getId(); } inline const XMLElementDecl* DTDGrammar::getElemDecl( const unsigned int , const XMLCh* const , const XMLCh* const qName , unsigned int) const { const XMLElementDecl* elemDecl = fElemDeclPool->getByKey(qName); if (!elemDecl && fElemNonDeclPool) elemDecl = fElemNonDeclPool->getByKey(qName); return elemDecl; } inline XMLElementDecl* DTDGrammar::getElemDecl (const unsigned int , const XMLCh* const , const XMLCh* const qName , unsigned int) { XMLElementDecl* elemDecl = fElemDeclPool->getByKey(qName); if (!elemDecl && fElemNonDeclPool) elemDecl = fElemNonDeclPool->getByKey(qName); return elemDecl; } inline const XMLElementDecl* DTDGrammar::getElemDecl(const unsigned int elemId) const { // Look up this element decl by id return fElemDeclPool->getById(elemId); } inline XMLElementDecl* DTDGrammar::getElemDecl(const unsigned int elemId) { // Look up this element decl by id return fElemDeclPool->getById(elemId); } inline XMLSize_t DTDGrammar::putElemDecl(XMLElementDecl* const elemDecl, const bool notDeclared) { if (notDeclared) { if(!fElemNonDeclPool) fElemNonDeclPool = new (fMemoryManager) NameIdPool(29, 128, fMemoryManager); return fElemNonDeclPool->put((DTDElementDecl*) elemDecl); } return fElemDeclPool->put((DTDElementDecl*) elemDecl); } // Notation Decl inline const XMLNotationDecl* DTDGrammar::getNotationDecl(const XMLCh* const notName) const { return fNotationDeclPool->getByKey(notName); } inline XMLNotationDecl* DTDGrammar::getNotationDecl(const XMLCh* const notName) { return fNotationDeclPool->getByKey(notName); } inline XMLSize_t DTDGrammar::putNotationDecl(XMLNotationDecl* const notationDecl) const { return fNotationDeclPool->put(notationDecl); } inline bool DTDGrammar::getValidated() const { return fValidated; } inline void DTDGrammar::setValidated(const bool newState) { fValidated = newState; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/validators/DTD/DTDScanner.cpp0000644000175000017500000037654111274550527021732 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DTDScanner.cpp 833045 2009-11-05 13:21:27Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Local methods // --------------------------------------------------------------------------- // // This method automates the grunt work of looking at a char and see if its // a repetition suffix. If so, it creates a new correct rep node and wraps // the pass node in it. Otherwise, it returns the previous node. // static ContentSpecNode* makeRepNode(const XMLCh testCh, ContentSpecNode* const prevNode, MemoryManager* const manager) { if (testCh == chQuestion) { return new (manager) ContentSpecNode ( ContentSpecNode::ZeroOrOne , prevNode , 0 , true , true , manager ); } else if (testCh == chPlus) { return new (manager) ContentSpecNode ( ContentSpecNode::OneOrMore , prevNode , 0 , true , true , manager ); } else if (testCh == chAsterisk) { return new (manager) ContentSpecNode ( ContentSpecNode::ZeroOrMore , prevNode , 0 , true , true , manager ); } // Just return the incoming node return prevNode; } // --------------------------------------------------------------------------- // DTDValidator: Constructors and Destructor // --------------------------------------------------------------------------- DTDScanner::DTDScanner( DTDGrammar* dtdGrammar , DocTypeHandler* const docTypeHandler , MemoryManager* const grammarPoolMemoryManager , MemoryManager* const manager) : fMemoryManager(manager) , fGrammarPoolMemoryManager(grammarPoolMemoryManager) , fDocTypeHandler(docTypeHandler) , fDumAttDef(0) , fDumElemDecl(0) , fDumEntityDecl(0) , fInternalSubset(false) , fNextAttrId(1) , fDTDGrammar(dtdGrammar) , fBufMgr(0) , fReaderMgr(0) , fScanner(0) , fPEntityDeclPool(0) , fEmptyNamespaceId(0) , fDocTypeReaderId(0) { fPEntityDeclPool = new (fMemoryManager) NameIdPool(109, 128, fMemoryManager); } DTDScanner::~DTDScanner() { delete fDumAttDef; delete fDumElemDecl; delete fDumEntityDecl; delete fPEntityDeclPool; } // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- void DTDScanner::setScannerInfo(XMLScanner* const owningScanner , ReaderMgr* const readerMgr , XMLBufferMgr* const bufMgr) { // We don't own any of these, we just reference them fScanner = owningScanner; fReaderMgr = readerMgr; fBufMgr = bufMgr; if (fScanner->getDoNamespaces()) fEmptyNamespaceId = fScanner->getEmptyNamespaceId(); else fEmptyNamespaceId = 0; fDocTypeReaderId = fReaderMgr->getCurrentReaderNum(); } // --------------------------------------------------------------------------- // DTDScanner: Private scanning methods // --------------------------------------------------------------------------- bool DTDScanner::checkForPERef( const bool inLiteral , const bool inMarkup) { bool gotSpace = false; // // See if we have any spaces up front. If so, then skip them and set // the gotSpaces flag. // if (fReaderMgr->skippedSpace()) { fReaderMgr->skipPastSpaces(); gotSpace = true; } // If the next char is a percent, then expand the PERef if (!fReaderMgr->skippedChar(chPercent)) return gotSpace; while (true) { if (!expandPERef(false, inLiteral, inMarkup, false)) fScanner->emitError(XMLErrs::ExpectedEntityRefName); // And skip any more spaces in the expanded value if (fReaderMgr->skippedSpace()) { fReaderMgr->skipPastSpaces(); gotSpace = true; } if (!fReaderMgr->skippedChar(chPercent)) break; } return gotSpace; } bool DTDScanner::expandPERef( const bool scanExternal , const bool inLiteral , const bool inMarkup , const bool throwEndOfExt) { fScanner->setHasNoDTD(false); XMLBufBid bbName(fBufMgr); // // If we are in the internal subset and in markup, then this is // an error but we go ahead and do it anyway. // if (fInternalSubset && inMarkup) fScanner->emitError(XMLErrs::PERefInMarkupInIntSubset); if (!fReaderMgr->getName(bbName.getBuffer())) { fScanner->emitError(XMLErrs::ExpectedPEName); // Skip the semicolon if that's what we ended up on fReaderMgr->skippedChar(chSemiColon); return false; } // If no terminating semicolon, emit an error but try to keep going if (!fReaderMgr->skippedChar(chSemiColon)) fScanner->emitError(XMLErrs::UnterminatedEntityRef, bbName.getRawBuffer()); // // Look it up in the PE decl pool and see if it exists. If not, just // emit an error and continue. // XMLEntityDecl* decl = fPEntityDeclPool->getByKey(bbName.getRawBuffer()); if (!decl) { // XML 1.0 Section 4.1 if (fScanner->getStandalone()) { // no need to check fScanner->fHasNoDTD which is for sure false // since we are in expandPERef already fScanner->emitError(XMLErrs::EntityNotFound, bbName.getRawBuffer()); } else { if (fScanner->getValidationScheme() == XMLScanner::Val_Always) fScanner->getValidator()->emitError(XMLValid::VC_EntityNotFound, bbName.getRawBuffer()); } return false; } // // XML 1.0 Section 2.9 // If we are a standalone document, then it has to have been declared // in the internal subset. Keep going though. // if (fScanner->getValidationScheme() == XMLScanner::Val_Always && fScanner->getStandalone() && !decl->getDeclaredInIntSubset()) fScanner->getValidator()->emitError(XMLValid::VC_IllegalRefInStandalone, bbName.getRawBuffer()); // // Okee dokee, we found it. So create either a memory stream with // the entity value contents, or a file stream if its an external // entity. // if (decl->isExternal()) { // And now create a reader to read this entity InputSource* srcUsed; XMLReader* reader = fReaderMgr->createReader ( decl->getBaseURI() , decl->getSystemId() , decl->getPublicId() , false , inLiteral ? XMLReader::RefFrom_Literal : XMLReader::RefFrom_NonLiteral , XMLReader::Type_PE , XMLReader::Source_External , srcUsed , fScanner->getCalculateSrcOfs() , fScanner->getLowWaterMark() , fScanner->getDisableDefaultEntityResolution() ); // Put a janitor on the source so its cleaned up on exit Janitor janSrc(srcUsed); // If the creation failed then throw an exception if (!reader) ThrowXMLwithMemMgr1(RuntimeException, XMLExcepts::Gen_CouldNotOpenExtEntity, srcUsed ? srcUsed->getSystemId() : decl->getSystemId(), fMemoryManager); // Set the 'throw at end' flag, to the one we were given reader->setThrowAtEnd(throwEndOfExt); // // Push the reader. If its a recursive expansion, then emit an error // and return an failure. // if (!fReaderMgr->pushReader(reader, decl)) { fScanner->emitError(XMLErrs::RecursiveEntity, decl->getName()); return false; } // // If the caller wants us to scan the external entity, then lets // do that now. // if (scanExternal) { XMLEntityHandler* entHandler = fScanner->getEntityHandler(); // If we have an entity handler, tell it we are starting this entity if (entHandler) entHandler->startInputSource(*srcUsed); // // Scan the external entity now. The parameter tells it that // it is not in an include section. Get the current reader // level so we can catch partial markup errors and be sure // to get back to here if we get an exception out of the // ext subset scan. // const XMLSize_t readerNum = fReaderMgr->getCurrentReaderNum(); try { scanExtSubsetDecl(false, false); } catch(const OutOfMemoryException&) { throw; } catch(...) { // Pop the reader back to the original level fReaderMgr->cleanStackBackTo(readerNum); // End the input source, even though its not happy if (entHandler) entHandler->endInputSource(*srcUsed); throw; } // If we have an entity handler, tell it we are ending this entity if (entHandler) entHandler->endInputSource(*srcUsed); } else { // If it starts with the XML string, then parse a text decl if (fScanner->checkXMLDecl(true)) scanTextDecl(); } } else { // Create a reader over a memory stream over the entity value XMLReader* valueReader = fReaderMgr->createIntEntReader ( decl->getName() , inLiteral ? XMLReader::RefFrom_Literal : XMLReader::RefFrom_NonLiteral , XMLReader::Type_PE , decl->getValue() , decl->getValueLen() , false ); // // Trt to push the entity reader onto the reader manager stack, // where it will become the subsequent input. If it fails, that // means the entity is recursive, so issue an error. The reader // will have just been discarded, but we just keep going. // if (!fReaderMgr->pushReader(valueReader, decl)) fScanner->emitError(XMLErrs::RecursiveEntity, decl->getName()); } return true; } bool DTDScanner::getQuotedString(XMLBuffer& toFill) { // Reset the target buffer toFill.reset(); // Get the next char which must be a single or double quote XMLCh quoteCh; if (!fReaderMgr->skipIfQuote(quoteCh)) return false; XMLCh nextCh; // Get another char and see if it matches the starting quote char while ((nextCh=fReaderMgr->getNextChar())!=quoteCh) { // // We should never get either an end of file null char here. If we // do, just fail. It will be handled more gracefully in the higher // level code that called us. // if (!nextCh) return false; // Else add it to the buffer toFill.append(nextCh); } return true; } XMLAttDef* DTDScanner::scanAttDef(DTDElementDecl& parentElem, XMLBuffer& bufToUse) { // Check for PE ref or optional whitespace checkForPERef(false, true); // Get the name of the attribute if (!fReaderMgr->getName(bufToUse)) { fScanner->emitError(XMLErrs::ExpectedAttrName); return 0; } // // Look up this attribute in the parent element's attribute list. If // it already exists, then use the dummy. // DTDAttDef* decl = parentElem.getAttDef(bufToUse.getRawBuffer()); if (decl) { // It already exists, so put out a warning fScanner->emitError ( XMLErrs::AttListAlreadyExists , bufToUse.getRawBuffer() , parentElem.getFullName() ); // Use the dummy decl to parse into and set its name to the name we got if (!fDumAttDef) { fDumAttDef = new (fMemoryManager) DTDAttDef(fMemoryManager); fDumAttDef->setId(fNextAttrId++); } fDumAttDef->setName(bufToUse.getRawBuffer()); decl = fDumAttDef; } else { // // It does not already exist so create a new one, give it the next // available unique id, and add it // decl = new (fGrammarPoolMemoryManager) DTDAttDef ( bufToUse.getRawBuffer() , XMLAttDef::CData , XMLAttDef::Implied , fGrammarPoolMemoryManager ); decl->setId(fNextAttrId++); decl->setExternalAttDeclaration(isReadingExternalEntity()); parentElem.addAttDef(decl); } // Set a flag to indicate whether we are doing a dummy parse const bool isIgnored = (decl == fDumAttDef); // Space is required here, so check for PE ref, and require space if (!checkForPERef(false, true)) fScanner->emitError(XMLErrs::ExpectedWhitespace); // // Next has to be one of the attribute type strings. This tells us what // is to follow. // if (fReaderMgr->skippedString(XMLUni::fgCDATAString)) { decl->setType(XMLAttDef::CData); } else if (fReaderMgr->skippedString(XMLUni::fgIDString)) { if (!fReaderMgr->skippedString(XMLUni::fgRefString)) decl->setType(XMLAttDef::ID); else if (!fReaderMgr->skippedChar(chLatin_S)) decl->setType(XMLAttDef::IDRef); else decl->setType(XMLAttDef::IDRefs); } else if (fReaderMgr->skippedString(XMLUni::fgEntitString)) { if (fReaderMgr->skippedChar(chLatin_Y)) { decl->setType(XMLAttDef::Entity); } else if (fReaderMgr->skippedString(XMLUni::fgIESString)) { decl->setType(XMLAttDef::Entities); } else { fScanner->emitError ( XMLErrs::ExpectedAttributeType , decl->getFullName() , parentElem.getFullName() ); return 0; } } else if (fReaderMgr->skippedString(XMLUni::fgNmTokenString)) { if (fReaderMgr->skippedChar(chLatin_S)) decl->setType(XMLAttDef::NmTokens); else decl->setType(XMLAttDef::NmToken); } else if (fReaderMgr->skippedString(XMLUni::fgNotationString)) { // Check for PE ref and require space if (!checkForPERef(false, true)) fScanner->emitError(XMLErrs::ExpectedWhitespace); decl->setType(XMLAttDef::Notation); if (!scanEnumeration(*decl, bufToUse, true)) return 0; // Set the value as the enumeration for this decl decl->setEnumeration(bufToUse.getRawBuffer()); } else if (fReaderMgr->skippedChar(chOpenParen)) { decl->setType(XMLAttDef::Enumeration); if (!scanEnumeration(*decl, bufToUse, false)) return 0; // Set the value as the enumeration for this decl decl->setEnumeration(bufToUse.getRawBuffer()); } else { fScanner->emitError ( XMLErrs::ExpectedAttributeType , decl->getFullName() , parentElem.getFullName() ); return 0; } // Space is required here, so check for PE ref, and require space if (!checkForPERef(false, true)) fScanner->emitError(XMLErrs::ExpectedWhitespace); // And then scan for the optional default value declaration scanDefaultDecl(*decl); // If validating, then do a couple of validation constraints if (fScanner->getValidationScheme() == XMLScanner::Val_Always) { if (decl->getType() == XMLAttDef::ID) { if ((decl->getDefaultType() != XMLAttDef::Implied) && (decl->getDefaultType() != XMLAttDef::Required)) { fScanner->getValidator()->emitError(XMLValid::BadIDAttrDefType, decl->getFullName()); } } // if attdef is xml:space, check correct enumeration (default|preserve) const XMLCh fgXMLSpace[] = { chLatin_x, chLatin_m, chLatin_l, chColon, chLatin_s, chLatin_p, chLatin_a, chLatin_c, chLatin_e, chNull }; if (XMLString::equals(decl->getFullName(),fgXMLSpace)) { const XMLCh fgPreserve[] = { chLatin_p, chLatin_r, chLatin_e, chLatin_s, chLatin_e, chLatin_r, chLatin_v, chLatin_e, chNull }; const XMLCh fgDefault[] = { chLatin_d, chLatin_e, chLatin_f, chLatin_a, chLatin_u, chLatin_l, chLatin_t, chNull }; bool ok = false; if (decl->getType() == XMLAttDef::Enumeration) { BaseRefVectorOf* enumVector = XMLString::tokenizeString(decl->getEnumeration(), fMemoryManager); XMLSize_t size = enumVector->size(); ok = (size == 1 && (XMLString::equals(enumVector->elementAt(0), fgDefault) || XMLString::equals(enumVector->elementAt(0), fgPreserve))) || (size == 2 && (XMLString::equals(enumVector->elementAt(0), fgDefault) && XMLString::equals(enumVector->elementAt(1), fgPreserve))) || (size == 2 && (XMLString::equals(enumVector->elementAt(1), fgDefault) && XMLString::equals(enumVector->elementAt(0), fgPreserve))); delete enumVector; } if (!ok) fScanner->getValidator()->emitError(XMLValid::IllegalXMLSpace); } } // If we have a doc type handler, tell it about this attdef. if (fDocTypeHandler) fDocTypeHandler->attDef(parentElem, *decl, isIgnored); return decl; } void DTDScanner::scanAttListDecl() { // Space is required here, so check for a PE ref if (!checkForPERef(false, true)) { fScanner->emitError(XMLErrs::ExpectedWhitespace); fReaderMgr->skipPastChar(chCloseAngle); return; } // // Next should be the name of the element it belongs to, so get a buffer // and get the name into it. // XMLBufBid bbName(fBufMgr); if (!fReaderMgr->getName(bbName.getBuffer())) { fScanner->emitError(XMLErrs::ExpectedElementName); fReaderMgr->skipPastChar(chCloseAngle); return; } // // Find this element's declaration. If it has not been declared yet, // we will force one into the list, but not mark it as declared. // DTDElementDecl* elemDecl = (DTDElementDecl*) fDTDGrammar->getElemDecl(fEmptyNamespaceId, 0, bbName.getRawBuffer(), Grammar::TOP_LEVEL_SCOPE); if (!elemDecl) { // // Lets fault in a declaration and add it to the pool. We mark // it having been created because of an attlist. Later, if its // declared, this will be updated. // elemDecl = new (fGrammarPoolMemoryManager) DTDElementDecl ( bbName.getRawBuffer() , fEmptyNamespaceId , DTDElementDecl::Any , fGrammarPoolMemoryManager ); elemDecl->setCreateReason(XMLElementDecl::AttList); elemDecl->setExternalElemDeclaration(isReadingExternalEntity()); fDTDGrammar->putElemDecl((XMLElementDecl*) elemDecl); } // If we have a doc type handler, tell it the att list is starting if (fDocTypeHandler) fDocTypeHandler->startAttList(*elemDecl); // // Now we loop until we are done with all of the attributes in this // list. We need a buffer to use for local processing. // XMLBufBid bbTmp(fBufMgr); XMLBuffer& tmpBuf = bbTmp.getBuffer(); bool seenAnId = false; while (true) { // Get the next char out and see what it tells us to do const XMLCh nextCh = fReaderMgr->peekNextChar(); // Watch for EOF if (!nextCh) ThrowXMLwithMemMgr(UnexpectedEOFException, XMLExcepts::Gen_UnexpectedEOF, fMemoryManager); if (nextCh == chCloseAngle) { // We are done with this attribute list fReaderMgr->getNextChar(); break; } else if (fReaderMgr->getCurrentReader()->isWhitespace(nextCh)) { // // If advanced callbacks are enabled and we have a doc // type handler, then gather up the white space and call // back on the doctype handler. Otherwise, just skip // whitespace. // if (fDocTypeHandler) { fReaderMgr->getSpaces(tmpBuf); fDocTypeHandler->doctypeWhitespace ( tmpBuf.getRawBuffer() , tmpBuf.getLen() ); } else { fReaderMgr->skipPastSpaces(); } } else if (nextCh == chPercent) { // Eat the percent and expand the ref fReaderMgr->getNextChar(); expandPERef(false, false, true); } else { // // It must be an attribute name, so scan it. We let // it use our local buffer for its name scanning. // XMLAttDef* attDef = scanAttDef(*elemDecl, tmpBuf); if (!attDef) { fReaderMgr->skipPastChar(chCloseAngle); break; } // // If we are validating and its an ID type, then we have to // make sure that we have not seen an id attribute yet. Set // the flag to say that we've seen one now also. // if (fScanner->getValidationScheme() == XMLScanner::Val_Always) { if (attDef->getType() == XMLAttDef::ID) { if (seenAnId) fScanner->getValidator()->emitError(XMLValid::MultipleIdAttrs, elemDecl->getFullName()); seenAnId = true; } } } } // If we have a doc type handler, tell it the att list is ending if (fDocTypeHandler) fDocTypeHandler->endAttList(*elemDecl); } // // This method is called to scan the value of an attribute in content. This // involves some normalization and replacement of general entity and // character references. // // End of entity's must be dealt with here. During DTD scan, they can come // from external entities. During content, they can come from any entity. // We just eat the end of entity and continue with our scan until we come // to the closing quote. If an unterminated value causes us to go through // subsequent entities, that will cause errors back in the calling code, // but there's little we can do about it here. // bool DTDScanner::scanAttValue(const XMLCh* const attrName , XMLBuffer& toFill , const XMLAttDef::AttTypes type) { enum States { InWhitespace , InContent }; // Reset the target buffer toFill.reset(); // Get the next char which must be a single or double quote XMLCh quoteCh; if (!fReaderMgr->skipIfQuote(quoteCh)) return false; // // We have to get the current reader because we have to ignore closing // quotes until we hit the same reader again. // const XMLSize_t curReader = fReaderMgr->getCurrentReaderNum(); // // Loop until we get the attribute value. Note that we use a double // loop here to avoid the setup/teardown overhead of the exception // handler on every round. // XMLCh nextCh; XMLCh secondCh = 0; States curState = InContent; bool firstNonWS = false; bool gotLeadingSurrogate = false; bool escaped; while (true) { try { while(true) { nextCh = fReaderMgr->getNextChar(); if (!nextCh) ThrowXMLwithMemMgr(UnexpectedEOFException, XMLExcepts::Gen_UnexpectedEOF, fMemoryManager); // Check for our ending quote in the same entity if (nextCh == quoteCh) { if (curReader == fReaderMgr->getCurrentReaderNum()) return true; // Watch for spillover into a previous entity if (curReader > fReaderMgr->getCurrentReaderNum()) { fScanner->emitError(XMLErrs::PartialMarkupInEntity); return false; } } // // Check for an entity ref now, before we let it affect our // whitespace normalization logic below. We ignore the empty flag // in this one. // escaped = false; if (nextCh == chAmpersand) { if (scanEntityRef(nextCh, secondCh, escaped) != EntityExp_Returned) { gotLeadingSurrogate = false; continue; } } else if ((nextCh >= 0xD800) && (nextCh <= 0xDBFF)) { // Check for correct surrogate pairs if (gotLeadingSurrogate) fScanner->emitError(XMLErrs::Expected2ndSurrogateChar); else gotLeadingSurrogate = true; } else { if (gotLeadingSurrogate) { if ((nextCh < 0xDC00) || (nextCh > 0xDFFF)) fScanner->emitError(XMLErrs::Expected2ndSurrogateChar); } // Its got to at least be a valid XML character else if (!fReaderMgr->getCurrentReader()->isXMLChar(nextCh)) { XMLCh tmpBuf[9]; XMLString::binToText ( nextCh , tmpBuf , 8 , 16 , fMemoryManager ); fScanner->emitError ( XMLErrs::InvalidCharacterInAttrValue , attrName , tmpBuf ); } gotLeadingSurrogate = false; } // // If its not escaped, then make sure its not a < character, which // is not allowed in attribute values. // if (!escaped && (nextCh == chOpenAngle)) fScanner->emitError(XMLErrs::BracketInAttrValue, attrName); // // If the attribute is a CDATA type we do simple replacement of // tabs and new lines with spaces, if the character is not escaped // by way of a char ref. // // Otherwise, we do the standard non-CDATA normalization of // compressing whitespace to single spaces and getting rid of // leading and trailing whitespace. // if (type == XMLAttDef::CData) { if (!escaped) { if ((nextCh == 0x09) || (nextCh == 0x0A) || (nextCh == 0x0D)) nextCh = chSpace; } } else { if (curState == InWhitespace) { if (!fReaderMgr->getCurrentReader()->isWhitespace(nextCh)) { if (firstNonWS) toFill.append(chSpace); curState = InContent; firstNonWS = true; } else { continue; } } else if (curState == InContent) { if (fReaderMgr->getCurrentReader()->isWhitespace(nextCh)) { curState = InWhitespace; continue; } firstNonWS = true; } } // Else add it to the buffer toFill.append(nextCh); if (secondCh) { toFill.append(secondCh); secondCh=0; } } } catch(const EndOfEntityException&) { // Just eat it and continue. gotLeadingSurrogate = false; escaped = false; } } return true; } bool DTDScanner::scanCharRef(XMLCh& first, XMLCh& second) { bool gotOne = false; unsigned int value = 0; // // Set the radix. Its supposed to be a lower case x if hex. But, in // order to recover well, we check for an upper and put out an error // for that. // unsigned int radix = 10; if (fReaderMgr->skippedChar(chLatin_x)) { radix = 16; } else if (fReaderMgr->skippedChar(chLatin_X)) { fScanner->emitError(XMLErrs::HexRadixMustBeLowerCase); radix = 16; } while (true) { const XMLCh nextCh = fReaderMgr->peekNextChar(); // Watch for EOF if (!nextCh) ThrowXMLwithMemMgr(UnexpectedEOFException, XMLExcepts::Gen_UnexpectedEOF, fMemoryManager); // Break out on the terminating semicolon if (nextCh == chSemiColon) { fReaderMgr->getNextChar(); break; } // // Convert this char to a binary value, or bail out if its not // one. // unsigned int nextVal; if ((nextCh >= chDigit_0) && (nextCh <= chDigit_9)) nextVal = (unsigned int)(nextCh - chDigit_0); else if ((nextCh >= chLatin_A) && (nextCh <= chLatin_F)) nextVal= (unsigned int)(10 + (nextCh - chLatin_A)); else if ((nextCh >= chLatin_a) && (nextCh <= chLatin_f)) nextVal = (unsigned int)(10 + (nextCh - chLatin_a)); else { // // If we got at least a sigit, then do an unterminated ref // error. Else, do an expected a numerical ref thing. // if (gotOne) fScanner->emitError(XMLErrs::UnterminatedCharRef); else fScanner->emitError(XMLErrs::ExpectedNumericalCharRef); return false; } // // Make sure its valid for the radix. If not, then just eat the // digit and go on after issueing an error. Else, update the // running value with this new digit. // if (nextVal >= radix) { XMLCh tmpStr[2]; tmpStr[0] = nextCh; tmpStr[1] = chNull; fScanner->emitError(XMLErrs::BadDigitForRadix, tmpStr); } else { value = (value * radix) + nextVal; } // Indicate that we got at least one good digit gotOne = true; // Eat the char we just processed fReaderMgr->getNextChar(); } // Return the char (or chars) // And check if the character expanded is valid or not if (value >= 0x10000 && value <= 0x10FFFF) { value -= 0x10000; first = XMLCh((value >> 10) + 0xD800); second = XMLCh((value & 0x3FF) + 0xDC00); } else if (value <= 0xFFFD) { first = XMLCh(value); second = 0; if (!fReaderMgr->getCurrentReader()->isXMLChar(first) && !fReaderMgr->getCurrentReader()->isControlChar(first)) { // Character reference was not in the valid range fScanner->emitError(XMLErrs::InvalidCharacterRef); return false; } } else { // Character reference was not in the valid range fScanner->emitError(XMLErrs::InvalidCharacterRef); return false; } return true; } ContentSpecNode* DTDScanner::scanChildren(const DTDElementDecl& elemDecl, XMLBuffer& bufToUse) { // Check for a PE ref here, but don't require spaces checkForPERef(false, true); ValueStackOf* arrNestedDecl=NULL; // // We know that the caller just saw an opening parenthesis, so we need // to parse until we hit the end of it; if we find several parenthesis, // store them in an array to be processed later. // // We have to check for one up front, since it could be something like // (((a)*)) etc... // ContentSpecNode* curNode = 0; while(fReaderMgr->skippedChar(chOpenParen)) { // to check entity nesting const XMLSize_t curReader = fReaderMgr->getCurrentReaderNum(); if(arrNestedDecl==NULL) arrNestedDecl=new (fMemoryManager) ValueStackOf(5, fMemoryManager); arrNestedDecl->push(curReader); // Check for a PE ref here, but don't require spaces checkForPERef(false, true); } // We must find a leaf node here, either standalone or nested in the parenthesis if (!fReaderMgr->getName(bufToUse)) { fScanner->emitError(XMLErrs::ExpectedElementName); return 0; } // // Create a leaf node for it. If we can find the element id for // this element, then use it. Else, we have to fault in an element // decl, marked as created because of being in a content model. // XMLElementDecl* decl = fDTDGrammar->getElemDecl(fEmptyNamespaceId, 0, bufToUse.getRawBuffer(), Grammar::TOP_LEVEL_SCOPE); if (!decl) { decl = new (fGrammarPoolMemoryManager) DTDElementDecl ( bufToUse.getRawBuffer() , fEmptyNamespaceId , DTDElementDecl::Any , fGrammarPoolMemoryManager ); decl->setCreateReason(XMLElementDecl::InContentModel); decl->setExternalElemDeclaration(isReadingExternalEntity()); fDTDGrammar->putElemDecl(decl); } curNode = new (fGrammarPoolMemoryManager) ContentSpecNode ( decl->getElementName() , fGrammarPoolMemoryManager ); // Check for a PE ref here, but don't require spaces const bool gotSpaces = checkForPERef(false, true); // Check for a repetition character after the leaf XMLCh repCh = fReaderMgr->peekNextChar(); ContentSpecNode* tmpNode = makeRepNode(repCh, curNode, fGrammarPoolMemoryManager); if (tmpNode != curNode) { if (gotSpaces) { if (fScanner->emitErrorWillThrowException(XMLErrs::UnexpectedWhitespace)) { delete tmpNode; } fScanner->emitError(XMLErrs::UnexpectedWhitespace); } fReaderMgr->getNextChar(); curNode = tmpNode; } while(arrNestedDecl==NULL || !arrNestedDecl->empty()) { // Check for a PE ref here, but don't require spaces checkForPERef(false, true); // // Ok, the next character tells us what kind of content this particular // model this particular parentesized section is. Its either a choice if // we see ',', a sequence if we see '|', or a single leaf node if we see // a closing paren. // const XMLCh opCh = fReaderMgr->peekNextChar(); if ((opCh != chComma) && (opCh != chPipe) && (opCh != chCloseParen)) { // Not a legal char, so delete our node and return failure delete curNode; fScanner->emitError(XMLErrs::ExpectedSeqChoiceLeaf); return 0; } // // Create the head node of the correct type. We need this to remember // the top of the local tree. If it was a single subexpr, then just // set the head node to the current node. For the others, we'll build // the tree off the second child as we move across. // ContentSpecNode* headNode = 0; ContentSpecNode::NodeTypes curType = ContentSpecNode::UnknownType; if (opCh == chComma) { curType = ContentSpecNode::Sequence; headNode = new (fGrammarPoolMemoryManager) ContentSpecNode ( curType , curNode , 0 , true , true , fGrammarPoolMemoryManager ); curNode = headNode; } else if (opCh == chPipe) { curType = ContentSpecNode::Choice; headNode = new (fGrammarPoolMemoryManager) ContentSpecNode ( curType , curNode , 0 , true , true , fGrammarPoolMemoryManager ); curNode = headNode; } else { headNode = curNode; fReaderMgr->getNextChar(); } // // If it was a sequence or choice, we just loop until we get to the // end of our section, adding each new leaf or sub expression to the // right child of the current node, and making that new node the current // node. // if ((opCh == chComma) || (opCh == chPipe)) { ContentSpecNode* lastNode = 0; while (true) { // // The next thing must either be another | or , character followed // by another leaf or subexpression, or a closing parenthesis, or a // PE ref. // if (fReaderMgr->lookingAtChar(chPercent)) { checkForPERef(false, true); } else if (fReaderMgr->skippedSpace()) { // Just skip whitespace fReaderMgr->skipPastSpaces(); } else if (fReaderMgr->skippedChar(chCloseParen)) { // // We've hit the end of this section, so break out. But, we // need to see if we left a partial sequence of choice node // without a second node. If so, we have to undo that and // put its left child into the right node of the previous // node. // if ((curNode->getType() == ContentSpecNode::Choice) || (curNode->getType() == ContentSpecNode::Sequence)) { if (!curNode->getSecond()) { ContentSpecNode* saveFirst = curNode->orphanFirst(); lastNode->setSecond(saveFirst); curNode = lastNode; } } break; } else if (fReaderMgr->skippedChar(opCh)) { // Check for a PE ref here, but don't require spaces checkForPERef(false, true); if (fReaderMgr->skippedChar(chOpenParen)) { const XMLSize_t curReader = fReaderMgr->getCurrentReaderNum(); // Recurse to handle this new guy ContentSpecNode* subNode; try { subNode = scanChildren(elemDecl, bufToUse); } catch (const XMLErrs::Codes) { delete headNode; throw; } // If it failed, we are done, clean up here and return failure if (!subNode) { delete headNode; return 0; } if (curReader != fReaderMgr->getCurrentReaderNum() && fScanner->getValidationScheme() == XMLScanner::Val_Always) fScanner->getValidator()->emitError(XMLValid::PartialMarkupInPE); // Else patch it in and make it the new current ContentSpecNode* newCur = new (fGrammarPoolMemoryManager) ContentSpecNode ( curType , subNode , 0 , true , true , fGrammarPoolMemoryManager ); curNode->setSecond(newCur); lastNode = curNode; curNode = newCur; } else { // // Got to be a leaf node, so get a name. If we cannot get // one, then clean up and get outa here. // if (!fReaderMgr->getName(bufToUse)) { delete headNode; fScanner->emitError(XMLErrs::ExpectedElementName); return 0; } // // Create a leaf node for it. If we can find the element // id for this element, then use it. Else, we have to // fault in an element decl, marked as created because // of being in a content model. // XMLElementDecl* decl = fDTDGrammar->getElemDecl(fEmptyNamespaceId, 0, bufToUse.getRawBuffer(), Grammar::TOP_LEVEL_SCOPE); if (!decl) { decl = new (fGrammarPoolMemoryManager) DTDElementDecl ( bufToUse.getRawBuffer() , fEmptyNamespaceId , DTDElementDecl::Any , fGrammarPoolMemoryManager ); decl->setCreateReason(XMLElementDecl::InContentModel); decl->setExternalElemDeclaration(isReadingExternalEntity()); fDTDGrammar->putElemDecl(decl); } ContentSpecNode* tmpLeaf = new (fGrammarPoolMemoryManager) ContentSpecNode ( decl->getElementName() , fGrammarPoolMemoryManager ); // Check for a repetition character after the leaf const XMLCh repCh = fReaderMgr->peekNextChar(); ContentSpecNode* tmpLeaf2 = makeRepNode(repCh, tmpLeaf, fGrammarPoolMemoryManager); if (tmpLeaf != tmpLeaf2) fReaderMgr->getNextChar(); // // Create a new sequence or choice node, with the leaf // (or rep surrounding it) we just got as its first node. // Make the new node the second node of the current node, // and then make it the current node. // ContentSpecNode* newCur = new (fGrammarPoolMemoryManager) ContentSpecNode ( curType , tmpLeaf2 , 0 , true , true , fGrammarPoolMemoryManager ); curNode->setSecond(newCur); lastNode = curNode; curNode = newCur; } } else { // Cannot be valid delete headNode; // emitError may do a throw so need to clean-up first if (opCh == chComma) { fScanner->emitError(XMLErrs::ExpectedChoiceOrCloseParen); } else { fScanner->emitError ( XMLErrs::ExpectedSeqOrCloseParen , elemDecl.getFullName() ); } return 0; } } } // // We saw the terminating parenthesis so lets check for any repetition // character, and create a node for that, making the head node the child // of it. // const XMLCh repCh = fReaderMgr->peekNextChar(); curNode = makeRepNode(repCh, headNode, fGrammarPoolMemoryManager); if (curNode != headNode) fReaderMgr->getNextChar(); // prepare for recursion if(arrNestedDecl==NULL) break; else { // If that failed, no need to go further, return failure if (!curNode) return 0; const XMLSize_t curReader = arrNestedDecl->pop(); if (curReader != fReaderMgr->getCurrentReaderNum() && fScanner->getValidationScheme() == XMLScanner::Val_Always) fScanner->getValidator()->emitError(XMLValid::PartialMarkupInPE); if(arrNestedDecl->empty()) { delete arrNestedDecl; arrNestedDecl=NULL; } } } return curNode; } // // We get here after the '' It will calls the appropriate handler with the comment // text, if one is provided. A comment can be in either the document or // the DTD, so the fInDocument flag is used to know which handler to send // it to. // void DTDScanner::scanComment() { enum States { InText , OneDash , TwoDashes }; // Get a buffer for this XMLBufBid bbComment(fBufMgr); // // Get the comment text into a temp buffer. Be sure to use temp buffer // two here, since its to be used for stuff that is potentially longer // than just a name. // bool gotLeadingSurrogate = false; States curState = InText; while (true) { // Get the next character const XMLCh nextCh = fReaderMgr->getNextChar(); // Watch for an end of file if (!nextCh) { fScanner->emitError(XMLErrs::UnterminatedComment); ThrowXMLwithMemMgr(UnexpectedEOFException, XMLExcepts::Gen_UnexpectedEOF, fMemoryManager); } // Check for correct surrogate pairs if ((nextCh >= 0xD800) && (nextCh <= 0xDBFF)) { if (gotLeadingSurrogate) fScanner->emitError(XMLErrs::Expected2ndSurrogateChar); else gotLeadingSurrogate = true; } else { if (gotLeadingSurrogate) { if ((nextCh < 0xDC00) || (nextCh > 0xDFFF)) fScanner->emitError(XMLErrs::Expected2ndSurrogateChar); } // Its got to at least be a valid XML character else if (!fReaderMgr->getCurrentReader()->isXMLChar(nextCh)) { XMLCh tmpBuf[9]; XMLString::binToText ( nextCh , tmpBuf , 8 , 16 , fMemoryManager ); fScanner->emitError(XMLErrs::InvalidCharacter, tmpBuf); } gotLeadingSurrogate = false; } if (curState == InText) { // If its a dash, go to OneDash state. Otherwise take as text if (nextCh == chDash) curState = OneDash; else bbComment.append(nextCh); } else if (curState == OneDash) { // // If its another dash, then we change to the two dashes states. // Otherwise, we have to put in the deficit dash and the new // character and go back to InText. // if (nextCh == chDash) { curState = TwoDashes; } else { bbComment.append(chDash); bbComment.append(nextCh); curState = InText; } } else if (curState == TwoDashes) { // The next character must be the closing bracket if (nextCh != chCloseAngle) { fScanner->emitError(XMLErrs::IllegalSequenceInComment); fReaderMgr->skipPastChar(chCloseAngle); return; } break; } } // If there is a doc type handler, then pass on the comment stuff if (fDocTypeHandler) fDocTypeHandler->doctypeComment(bbComment.getRawBuffer()); } bool DTDScanner::scanContentSpec(DTDElementDecl& toFill) { // // Check for for a couple of the predefined content type strings. If // its not one of these, its got to be a parenthesized reg ex type // expression. // if (fReaderMgr->skippedString(XMLUni::fgEmptyString)) { toFill.setModelType(DTDElementDecl::Empty); return true; } if (fReaderMgr->skippedString(XMLUni::fgAnyString)) { toFill.setModelType(DTDElementDecl::Any); return true; } // Its got to be a parenthesized regular expression if (!fReaderMgr->skippedChar(chOpenParen)) { fScanner->emitError ( XMLErrs::ExpectedContentSpecExpr , toFill.getFullName() ); return false; } // Get the current reader id, so we can test for partial markup const XMLSize_t curReader = fReaderMgr->getCurrentReaderNum(); // We could have a PE ref here, but don't require space checkForPERef(false, true); // // Now we look for a PCDATA string. If its PCDATA, then it must be a // MIXED model. Otherwise, it must be a regular list of children in // a regular expression perhaps. // bool status; if (fReaderMgr->skippedString(XMLUni::fgPCDATAString)) { // Set the model to mixed toFill.setModelType(DTDElementDecl::Mixed_Simple); status = scanMixed(toFill); // // If we are validating we have to check that there are no multiple // uses of any child elements. // if (fScanner->getValidationScheme() == XMLScanner::Val_Always) { if (((const MixedContentModel*)toFill.getContentModel())->hasDups()) fScanner->getValidator()->emitError(XMLValid::RepElemInMixed); } } else { // // We have to do a recursive scan of the content model. Create a // buffer for it to use, for efficiency. It returns the top ofthe // content spec node tree, which we set if successful. // toFill.setModelType(DTDElementDecl::Children); XMLBufBid bbTmp(fBufMgr); ContentSpecNode* resNode = scanChildren(toFill, bbTmp.getBuffer()); status = (resNode != 0); if (status) toFill.setContentSpec(resNode); } // Make sure we are on the same reader as where we started if (curReader != fReaderMgr->getCurrentReaderNum() && fScanner->getValidationScheme() == XMLScanner::Val_Always) fScanner->getValidator()->emitError(XMLValid::PartialMarkupInPE); return status; } void DTDScanner::scanDefaultDecl(DTDAttDef& toFill) { if (fReaderMgr->skippedString(XMLUni::fgRequiredString)) { toFill.setDefaultType(XMLAttDef::Required); return; } if (fReaderMgr->skippedString(XMLUni::fgImpliedString)) { toFill.setDefaultType(XMLAttDef::Implied); return; } if (fReaderMgr->skippedString(XMLUni::fgFixedString)) { // // There must be space before the fixed value. If there is not, then // emit an error but keep going. // if (!fReaderMgr->skippedSpace()) fScanner->emitError(XMLErrs::ExpectedWhitespace); else fReaderMgr->skipPastSpaces(); toFill.setDefaultType(XMLAttDef::Fixed); } else { toFill.setDefaultType(XMLAttDef::Default); } // // If we got here, its fixed or default, so we need to get a value. // If we don't, then emit an error but just set the default value to // an empty string and try to keep going. // // Check for PE ref or optional whitespace checkForPERef(false, true); XMLBufBid bbValue(fBufMgr); if (!scanAttValue(toFill.getFullName(), bbValue.getBuffer(), toFill.getType())) fScanner->emitError(XMLErrs::ExpectedDefAttrDecl); toFill.setValue(bbValue.getRawBuffer()); } // // This is called after seeing 'emitError(XMLErrs::ExpectedWhitespace); // Get a buffer for the element name and scan in the name XMLBufBid bbName(fBufMgr); if (!fReaderMgr->getName(bbName.getBuffer())) { fScanner->emitError(XMLErrs::ExpectedElementName); fReaderMgr->skipPastChar(chCloseAngle); return; } // Look this guy up in the element decl pool DTDElementDecl* decl = (DTDElementDecl*) fDTDGrammar->getElemDecl(fEmptyNamespaceId, 0, bbName.getRawBuffer(), Grammar::TOP_LEVEL_SCOPE); // // If it does not exist, then we need to create it. If it does and // its marked as declared, then that's an error, but we still need to // scan over the content model so use the dummy declaration that the // parsing code can fill in. // if (decl) { if (decl->isDeclared()) { if (fScanner->getValidationScheme() == XMLScanner::Val_Always) fScanner->getValidator()->emitError(XMLValid::ElementAlreadyExists, bbName.getRawBuffer()); if (!fDumElemDecl) fDumElemDecl = new (fMemoryManager) DTDElementDecl ( bbName.getRawBuffer() , fEmptyNamespaceId , DTDElementDecl::Any , fMemoryManager ); else fDumElemDecl->setElementName(bbName.getRawBuffer(),fEmptyNamespaceId); } } else { // // Create the new empty declaration to fill in and put it into // the decl pool. // decl = new (fGrammarPoolMemoryManager) DTDElementDecl ( bbName.getRawBuffer() , fEmptyNamespaceId , DTDElementDecl::Any , fGrammarPoolMemoryManager ); fDTDGrammar->putElemDecl(decl); } // Set a flag for whether we will ignore this one const bool isIgnored = (decl == fDumElemDecl); // Mark this one if being externally declared decl->setExternalElemDeclaration(isReadingExternalEntity()); // Mark this one as being declared decl->setCreateReason(XMLElementDecl::Declared); // Another check for a PE ref, with at least required whitespace if (!checkForPERef(false, true)) fScanner->emitError(XMLErrs::ExpectedWhitespace); // And now scan the content model for this guy. if (!scanContentSpec(*decl)) { fReaderMgr->skipPastChar(chCloseAngle); return; } // Another check for a PE ref, but we don't require whitespace here checkForPERef(false, true); // And we should have the ending angle bracket if (!fReaderMgr->skippedChar(chCloseAngle)) { fScanner->emitError(XMLErrs::UnterminatedElementDecl, bbName.getRawBuffer()); fReaderMgr->skipPastChar(chCloseAngle); } // // If we have a DTD handler tell it about the new element decl. We // tell it if its one that can be ignored, cause its an override of a // previously existing decl. If it is being ignored, only call back // if advanced callbacks are enabled. // if (fDocTypeHandler) fDocTypeHandler->elementDecl(*decl, isIgnored); } // // This method will process a general or parameter entity reference. The // entity name and entity text will be stored in the entity pool. The value // of the entity will be scanned for any other parameter entity or char // references which will be expanded. So the stored value can only have // general entity references when done. // void DTDScanner::scanEntityDecl() { // // Space is required here, but we cannot check for a PE Ref since // there could be a legal (no-ref) percent sign here. Since any // entity that ended here would be illegal, we just skip spaces // and then check for a percent. // if (!fReaderMgr->lookingAtSpace()) fScanner->emitError(XMLErrs::ExpectedWhitespace); else fReaderMgr->skipPastSpaces(); bool isPEDecl = fReaderMgr->skippedChar(chPercent); // // If a PE decl, then check if it is followed by a space; if it is so, // eat the percent and check for spaces or a PE ref on the other side of it. // Otherwise, it has to be an entity reference for a general entity. // if (isPEDecl) { if(!fReaderMgr->getCurrentReader()->isWhitespace(fReaderMgr->peekNextChar())) { isPEDecl=false; while (true) { if (!expandPERef(false, false, true, false)) fScanner->emitError(XMLErrs::ExpectedEntityRefName); // And skip any more spaces in the expanded value if (fReaderMgr->skippedSpace()) fReaderMgr->skipPastSpaces(); if (!fReaderMgr->skippedChar(chPercent)) break; } } else if (!checkForPERef(false, true)) fScanner->emitError(XMLErrs::ExpectedWhitespace); } // // Now lets get a name, which should be the name of the entity. We // have to get a buffer for this. // XMLBufBid bbName(fBufMgr); if (!fReaderMgr->getName(bbName.getBuffer())) { fScanner->emitError(XMLErrs::ExpectedPEName); fReaderMgr->skipPastChar(chCloseAngle); return; } // If namespaces are enabled, then no colons allowed if (fScanner->getDoNamespaces()) { if (XMLString::indexOf(bbName.getRawBuffer(), chColon) != -1) fScanner->emitError(XMLErrs::ColonNotLegalWithNS); } // // See if this entity already exists. If so, then the existing one // takes precendence. So we use the local dummy decl to parse into // and just ignore the results. // DTDEntityDecl* entityDecl; if (isPEDecl) entityDecl = fPEntityDeclPool->getByKey(bbName.getRawBuffer()); else entityDecl = fDTDGrammar->getEntityDecl(bbName.getRawBuffer()); if (entityDecl) { if (!fDumEntityDecl) fDumEntityDecl = new (fMemoryManager) DTDEntityDecl(fMemoryManager); fDumEntityDecl->setName(bbName.getRawBuffer()); entityDecl = fDumEntityDecl; } else { // Its not in existence already, then create an entity decl for it entityDecl = new (fGrammarPoolMemoryManager) DTDEntityDecl(bbName.getRawBuffer(), false, fGrammarPoolMemoryManager); // // Set the declaration location. The parameter indicates whether its // declared in the content/internal subset, so we know whether or not // its in the external subset. // entityDecl->setDeclaredInIntSubset(fInternalSubset); // Add it to the appropriate entity decl pool if (isPEDecl) fPEntityDeclPool->put(entityDecl); else fDTDGrammar->putEntityDecl(entityDecl); } // Set a flag that indicates whether we are ignoring this one const bool isIgnored = (entityDecl == fDumEntityDecl); // Set the PE flag on it entityDecl->setIsParameter(isPEDecl); // // Space is legal (required actually) here so check for a PE ref. If // we don't get our whitespace, then issue an error, but try to keep // going. // if (!checkForPERef(false, true)) fScanner->emitError(XMLErrs::ExpectedWhitespace); // save the hasNoDTD status for Entity Constraint Checking bool hasNoDTD = fScanner->getHasNoDTD(); if (hasNoDTD && isPEDecl) fScanner->setHasNoDTD(false); // According to the type call the value scanning method if (!scanEntityDef(*entityDecl, isPEDecl)) { fReaderMgr->skipPastChar(chCloseAngle); fScanner->setHasNoDTD(true); fScanner->emitError(XMLErrs::ExpectedEntityValue); return; } if (hasNoDTD) fScanner->setHasNoDTD(true); // Space is legal (but not required) here so check for a PE ref checkForPERef(false, true); // And then we have to have the closing angle bracket if (!fReaderMgr->skippedChar(chCloseAngle)) { fScanner->emitError(XMLErrs::UnterminatedEntityDecl, entityDecl->getName()); fReaderMgr->skipPastChar(chCloseAngle); } // // If we have a doc type handler, then call it. But only call it for // ignored elements if advanced callbacks are enabled. // if (fDocTypeHandler) fDocTypeHandler->entityDecl(*entityDecl, isPEDecl, isIgnored); } // // This method will scan a general/character entity ref. It will either // expand a char ref and return the value directly, or it will expand // a general entity and a reader for it onto the reader stack. // // The return value indicates whether the value was returned directly or // pushed as a reader or it failed. // // The escaped flag tells the caller whether the returnd parameter resulted // from a character reference, which escapes the character in some cases. It // only makes any difference if the return indicates the value was returned // directly. // // NOTE: This is only called when scanning attribute values, so we always // expand general entities. // DTDScanner::EntityExpRes DTDScanner::scanEntityRef(XMLCh& firstCh, XMLCh& secondCh, bool& escaped) { // Assume no escape and no second char escaped = false; secondCh = 0; // We have to insure its all done in a single entity const XMLSize_t curReader = fReaderMgr->getCurrentReaderNum(); // // If the next char is a pound, then its a character reference and we // need to expand it always. // if (fReaderMgr->skippedChar(chPound)) { // // Its a character reference, so scan it and get back the numeric // value it represents. If it fails, just return immediately. // if (!scanCharRef(firstCh, secondCh)) return EntityExp_Failed; if (curReader != fReaderMgr->getCurrentReaderNum()) fScanner->emitError(XMLErrs::PartialMarkupInEntity); // Its now escaped since it was a char ref escaped = true; return EntityExp_Returned; } // Get the name of the general entity XMLBufBid bbName(fBufMgr); if (!fReaderMgr->getName(bbName.getBuffer())) { fScanner->emitError(XMLErrs::ExpectedEntityRefName); return EntityExp_Failed; } // // Next char must be a semi-colon. But if its not, just emit // an error and try to continue. // if (!fReaderMgr->skippedChar(chSemiColon)) fScanner->emitError(XMLErrs::UnterminatedEntityRef, bbName.getRawBuffer()); // Make sure it was all in one entity reader if (curReader != fReaderMgr->getCurrentReaderNum()) fScanner->emitError(XMLErrs::PartialMarkupInEntity); // Look it up the name the general entity pool XMLEntityDecl* decl = fDTDGrammar->getEntityDecl(bbName.getRawBuffer()); // If it does not exist, then obviously an error if (!decl) { // XML 1.0 Section 4.1 if (fScanner->getStandalone() || fScanner->getHasNoDTD()) { fScanner->emitError(XMLErrs::EntityNotFound, bbName.getRawBuffer()); } else { if (fScanner->getValidationScheme() == XMLScanner::Val_Always) fScanner->getValidator()->emitError(XMLValid::VC_EntityNotFound, bbName.getRawBuffer()); } return EntityExp_Failed; } // // XML 1.0 Section 4.1 // If we are a standalone document, then it has to have been declared // in the internal subset. // if (fScanner->getStandalone() && !decl->getDeclaredInIntSubset()) fScanner->emitError(XMLErrs::IllegalRefInStandalone, bbName.getRawBuffer()); // // If its a special char reference, then its escaped and we can return // it directly. // if (decl->getIsSpecialChar()) { firstCh = decl->getValue()[0]; escaped = true; return EntityExp_Returned; } if (decl->isExternal()) { // If its unparsed, then its not valid here // XML 1.0 Section 4.4.4 the appearance of a reference to an unparsed entity is forbidden. if (decl->isUnparsed()) { fScanner->emitError(XMLErrs::NoUnparsedEntityRefs, bbName.getRawBuffer()); return EntityExp_Failed; } // We are in an attribute value, so not valid. // XML 1.0 Section 4.4.4 a reference to an external entity in an attribute value is forbidden. fScanner->emitError(XMLErrs::NoExtRefsInAttValue); // And now create a reader to read this entity InputSource* srcUsed; XMLReader* reader = fReaderMgr->createReader ( decl->getBaseURI() , decl->getSystemId() , decl->getPublicId() , false , XMLReader::RefFrom_NonLiteral , XMLReader::Type_General , XMLReader::Source_External , srcUsed , fScanner->getCalculateSrcOfs() , fScanner->getLowWaterMark() , fScanner->getDisableDefaultEntityResolution() ); // Put a janitor on the source so it gets cleaned up on exit Janitor janSrc(srcUsed); // // If the creation failed then throw an exception // if (!reader) ThrowXMLwithMemMgr1(RuntimeException, XMLExcepts::Gen_CouldNotOpenExtEntity, srcUsed ? srcUsed->getSystemId() : decl->getSystemId(), fMemoryManager); // // Push the reader. If its a recursive expansion, then emit an error // and return an failure. // if (!fReaderMgr->pushReader(reader, decl)) { fScanner->emitError(XMLErrs::RecursiveEntity, decl->getName()); return EntityExp_Failed; } // If it starts with the XML string, then parse a text decl if (fScanner->checkXMLDecl(true)) scanTextDecl(); } else { // // Create a reader over a memory stream over the entity value // We force it to assume UTF-16 by passing in an encoding // string. This way it won't both trying to predecode the // first line, looking for an XML/TextDecl. // XMLReader* valueReader = fReaderMgr->createIntEntReader ( decl->getName() , XMLReader::RefFrom_NonLiteral , XMLReader::Type_General , decl->getValue() , decl->getValueLen() , false ); // // Trt to push the entity reader onto the reader manager stack, // where it will become the subsequent input. If it fails, that // means the entity is recursive, so issue an error. The reader // will have just been discarded, but we just keep going. // if (!fReaderMgr->pushReader(valueReader, decl)) fScanner->emitError(XMLErrs::RecursiveEntity, decl->getName()); } return EntityExp_Pushed; } // // This method will scan a quoted literal of an entity value. It has to // deal with replacement of PE references; however, since this is a DTD // scanner, all such entity literals are in entity decls and therefore // general entities are not expanded. // bool DTDScanner::scanEntityLiteral(XMLBuffer& toFill) { toFill.reset(); // Get the next char which must be a single or double quote XMLCh quoteCh; if (!fReaderMgr->skipIfQuote(quoteCh)) return false; // Get a buffer for pulling in entity names when we see GE refs XMLBufBid bbName(fBufMgr); XMLBuffer& nameBuf = bbName.getBuffer(); // Remember the current reader const XMLSize_t orgReader = fReaderMgr->getCurrentReaderNum(); // // Loop until we see the ending quote character, handling any references // in the process. // XMLCh nextCh; XMLCh secondCh = 0; bool gotLeadingSurrogate = false; while (true) { nextCh = fReaderMgr->getNextChar(); // // Watch specifically for EOF and issue a more meaningful error // if that occurs (since an unterminated quoted char can cause // this easily.) // if (!nextCh) { fScanner->emitError(XMLErrs::UnterminatedEntityLiteral); ThrowXMLwithMemMgr(UnexpectedEOFException, XMLExcepts::Gen_UnexpectedEOF, fMemoryManager); } // // Break out on our terminating quote char when we are back in the // same reader. Otherwise, we might trigger on a nested quote char // in an expanded entity. // if ((nextCh == quoteCh) && (fReaderMgr->getCurrentReaderNum() == orgReader)) { break; } if (nextCh == chPercent) { // // Put the PE's value on the reader stack and then jump back // to the top to start processing it. The parameter indicates // that it should not scan the reference's content as an external // subset. // expandPERef(false, true, true); continue; } // // Ok, now that all the other special stuff is checked, we can // look for a general entity. In here, we cannot have a naked & // and will only expand numerical char refs or the intrinsic char // refs. Others will be left alone. // if (nextCh == chAmpersand) { // // Here, we only expand numeric char refs, but not any general // entities. However, the stupid XML spec requires that we check // and make sure it does refer to a general entity if its not // a char ref (i.e. no naked '&' chars.) // if (fReaderMgr->skippedChar(chPound)) { // If it failed, then just jump back to the top and try to pick up if (!scanCharRef(nextCh, secondCh)) { gotLeadingSurrogate = false; continue; } } else { if (!fReaderMgr->getName(nameBuf)) { fScanner->emitError(XMLErrs::ExpectedEntityRefName); } else { // // Since we are not expanding any of this, we have to // put the amp and name into the target buffer as data. // toFill.append(chAmpersand); toFill.append(nameBuf.getRawBuffer()); // Make sure we skipped a trailing semicolon if (!fReaderMgr->skippedChar(chSemiColon)) { fScanner->emitError ( XMLErrs::UnterminatedEntityRef , nameBuf.getRawBuffer() ); } // And make the new character the semicolon nextCh = chSemiColon; } // Either way here we reset the surrogate flag gotLeadingSurrogate = false; } } else if ((nextCh >= 0xD800) && (nextCh <= 0xDBFF)) { if (gotLeadingSurrogate) fScanner->emitError(XMLErrs::Expected2ndSurrogateChar); else gotLeadingSurrogate = true; } else { if (gotLeadingSurrogate) { if ((nextCh < 0xDC00) || (nextCh > 0xDFFF)) fScanner->emitError(XMLErrs::Expected2ndSurrogateChar); } else if (!fReaderMgr->getCurrentReader()->isXMLChar(nextCh)) { XMLCh tmpBuf[9]; XMLString::binToText ( nextCh , tmpBuf , 8 , 16 , fMemoryManager ); fScanner->emitError(XMLErrs::InvalidCharacter, tmpBuf); fReaderMgr->skipPastChar(quoteCh); return false; } gotLeadingSurrogate = false; } // Looks ok, so add it to the literal toFill.append(nextCh); if (secondCh) { toFill.append(secondCh); secondCh=0; } } // // If we got here and did not get back to the original reader level, // then we propogated some entity out of the literal, so issue an // error, but don't fail. // if (fReaderMgr->getCurrentReaderNum() != orgReader && fScanner->getValidationScheme() == XMLScanner::Val_Always) fScanner->getValidator()->emitError(XMLValid::PartialMarkupInPE); return true; } // // This method is called after the entity name has been scanned, and any // PE referenced following the name is handled. The passed decl will be // filled in with the info scanned. // bool DTDScanner::scanEntityDef(DTDEntityDecl& decl, const bool isPEDecl) { // Its got to be an entity literal if (fReaderMgr->lookingAtChar(chSingleQuote) || fReaderMgr->lookingAtChar(chDoubleQuote)) { // Get a buffer for the literal XMLBufBid bbValue(fBufMgr); if (!scanEntityLiteral(bbValue.getBuffer())) return false; // Set it on the entity decl decl.setValue(bbValue.getRawBuffer()); return true; } // // Its got to be an external entity, so there must be an external id. // Get buffers for them and scan an external id into them. // XMLBufBid bbPubId(fBufMgr); XMLBufBid bbSysId(fBufMgr); if (!scanId(bbPubId.getBuffer(), bbSysId.getBuffer(), IDType_External)) return false; decl.setIsExternal(true); ReaderMgr::LastExtEntityInfo lastInfo; fReaderMgr->getLastExtEntityInfo(lastInfo); // Fill in the id fields of the decl with the info we got const XMLCh* publicId = bbPubId.getRawBuffer(); const XMLCh* systemId = bbSysId.getRawBuffer(); decl.setPublicId((publicId && *publicId) ? publicId : 0); decl.setSystemId((systemId && *systemId) ? systemId : 0); decl.setBaseURI((lastInfo.systemId && *lastInfo.systemId) ? lastInfo.systemId : 0); // If its a PE decl, we are done bool gotSpaces = checkForPERef(false, true); if (isPEDecl) { // // Check for a common error here. NDATA is not allowed for PEs // so check for the NDATA string. If found give a nice meaningful // error and continue parsing to eat the NDATA text. // if (gotSpaces) { if (fReaderMgr->skippedString(XMLUni::fgNDATAString)) fScanner->emitError(XMLErrs::NDATANotValidForPE); } else { return true; } } // If looking at close angle now, we are done if (fReaderMgr->lookingAtChar(chCloseAngle)) return true; // Else we had to have seem the whitespace if (!gotSpaces) fScanner->emitError(XMLErrs::ExpectedWhitespace); // We now have to see a notation data string if (!fReaderMgr->skippedString(XMLUni::fgNDATAString)) fScanner->emitError(XMLErrs::ExpectedNDATA); // Space is required here, but try to go on if not if (!checkForPERef(false, true)) fScanner->emitError(XMLErrs::ExpectedWhitespace); // Get a name XMLBufBid bbName(fBufMgr); if (!fReaderMgr->getName(bbName.getBuffer())) { fScanner->emitError(XMLErrs::ExpectedNotationName); return false; } // Set the decl's notation name decl.setNotationName(bbName.getRawBuffer()); return true; } // // This method is called after an attribute decl name or a notation decl has // been scanned and then an opening parenthesis was see, indicating the list // of values. It scans the enumeration values and creates a single string // which has a single space between each value. // // The terminating close paren ends this scan. // bool DTDScanner::scanEnumeration( const DTDAttDef& attDef , XMLBuffer& toFill , const bool notation) { // Reset the passed buffer toFill.reset(); // Check for PE ref but don't require space checkForPERef(false, true); // If this is a notation, we need an opening paren if (notation) { if (!fReaderMgr->skippedChar(chOpenParen)) fScanner->emitError(XMLErrs::ExpectedOpenParen); } // We need a local buffer to use as well XMLBufBid bbTmp(fBufMgr); while (true) { // Space is allowed here for either type so check for PE ref checkForPERef(false, true); // And then get either a name or a name token bool success; if (notation) success = fReaderMgr->getName(bbTmp.getBuffer()); else success = fReaderMgr->getNameToken(bbTmp.getBuffer()); if (!success) { fScanner->emitError ( XMLErrs::ExpectedEnumValue , attDef.getFullName() ); return false; } // Append this value to the target value toFill.append(bbTmp.getRawBuffer(), bbTmp.getLen()); // Space is allowed here for either type so check for PE ref checkForPERef(false, true); // Check for the terminating paren if (fReaderMgr->skippedChar(chCloseParen)) break; // And append a space separator toFill.append(chSpace); // Check for the pipe character separator if (!fReaderMgr->skippedChar(chPipe)) { fScanner->emitError(XMLErrs::ExpectedEnumSepOrParen); return false; } } return true; } bool DTDScanner::scanEq() { fReaderMgr->skipPastSpaces(); if (fReaderMgr->skippedChar(chEqual)) { fReaderMgr->skipPastSpaces(); return true; } return false; } // // This method is called when an external entity reference is seen in the // DTD or an external DTD subset is encountered, and their contents pushed // onto the reader stack. This method will scan that contents. // void DTDScanner::scanExtSubsetDecl(const bool inIncludeSect, const bool isDTD) { // Indicate we are in the external subset now FlagJanitor janContentFlag(&fInternalSubset, false); bool bAcceptDecl = !inIncludeSect; // Get a buffer for whitespace XMLBufBid bbSpace(fBufMgr); // // If we have a doc type handler and we are not being called recursively // to handle an include section, tell it the ext subset starts // if (fDocTypeHandler && isDTD && !inIncludeSect) fDocTypeHandler->startExtSubset(); // // We have to play a trick here if the current entity we are parsing // is a PE. Because the spooling code will put out a whitespace before // and after an expanded PE if its being scanned outside the context of // a literal entity, this will confuse this external subset code. // // So, we see if that is what is happening and, if so, eat the single // space, a check for the isScanningPERefOutOfLiteral()) { if (fReaderMgr->skippedSpace()) { if (fScanner->checkXMLDecl(true)) { scanTextDecl(); bAcceptDecl = false; // Figure out how to do this // fReaderMgr->unGet(chSpace); } } } // Get the current reader number const XMLSize_t orgReader = fReaderMgr->getCurrentReaderNum(); // // Loop until we hit the end of the external subset entity. Note that // we use a double loop here in order to avoid the overhead of doing // the exception setup/teardown work on every loop. // bool inMarkup = false; bool inCharData = false; while (true) { bool bDoBreak=false; // workaround for Borland bug with 'break' in 'catch' try { while (true) { const XMLCh nextCh = fReaderMgr->peekNextChar(); if (!nextCh) { return; // nothing left } else if (nextCh == chOpenAngle) { // Get the reader we started this on // XML 1.0 P28a Well-formedness constraint: PE Between Declarations const XMLSize_t orgReader = fReaderMgr->getCurrentReaderNum(); bool wasInPE = (fReaderMgr->getCurrentReader()->getType() == XMLReader::Type_PE); // // Now scan the markup. Set the flag so that we will know that // we were in markup if an end of entity exception occurs. // fReaderMgr->getNextChar(); inMarkup = true; scanMarkupDecl(bAcceptDecl); inMarkup = false; // // And see if we got back to the same level. If not, then its // a partial markup error. // if (fReaderMgr->getCurrentReaderNum() != orgReader){ if (wasInPE) fScanner->emitError(XMLErrs::PEBetweenDecl); else if (fScanner->getValidationScheme() == XMLScanner::Val_Always) fScanner->getValidator()->emitError(XMLValid::PartialMarkupInPE); } } else if (fReaderMgr->getCurrentReader()->isWhitespace(nextCh)) { // // If we have a doc type handler, and advanced callbacks are // enabled, then gather up whitespace and call back. Otherwise // just skip whitespaces. // if (fDocTypeHandler) { inCharData = true; fReaderMgr->getSpaces(bbSpace.getBuffer()); inCharData = false; fDocTypeHandler->doctypeWhitespace ( bbSpace.getRawBuffer() , bbSpace.getLen() ); } else { // // If we hit an end of entity in the middle of white // space, that's fine. We'll just come back in here // again on the next round and skip some more. // fReaderMgr->skipPastSpaces(); } } else if (nextCh == chPercent) { // // Expand (and scan if external) the reference value. Tell // it to throw an end of entity exception at the end of the // entity. // fReaderMgr->getNextChar(); expandPERef(true, false, false, true); } else if (inIncludeSect && (nextCh == chCloseSquare)) { // // Its the end of a conditional include section. So scan it and // decrement the include depth counter. // fReaderMgr->getNextChar(); if (!fReaderMgr->skippedChar(chCloseSquare)) { fScanner->emitError(XMLErrs::ExpectedEndOfConditional); fReaderMgr->skipPastChar(chCloseAngle); } else if (!fReaderMgr->skippedChar(chCloseAngle)) { fScanner->emitError(XMLErrs::ExpectedEndOfConditional); fReaderMgr->skipPastChar(chCloseAngle); } return; } else { fReaderMgr->getNextChar(); if (!fReaderMgr->getCurrentReader()->isXMLChar(nextCh)) { XMLCh tmpBuf[9]; XMLString::binToText ( nextCh , tmpBuf , 8 , 16 , fMemoryManager ); fScanner->emitError(XMLErrs::InvalidCharacter, tmpBuf); } else { fScanner->emitError(XMLErrs::InvalidDocumentStructure); } // Try to get realigned static const XMLCh toSkip[] = { chPercent, chCloseSquare, chOpenAngle, chNull }; fReaderMgr->skipUntilInOrWS(toSkip); } bAcceptDecl = false; } } catch(const EndOfEntityException& toCatch) { // // If the external entity ended while we were in markup, then that's // a partial markup error. // if (inMarkup) { fScanner->emitError(XMLErrs::PartialMarkupInEntity); inMarkup = false; } // If we were in char data, then send what we got if (inCharData) { // Send what we got, then rethrow if (fDocTypeHandler) { fDocTypeHandler->doctypeWhitespace ( bbSpace.getRawBuffer() , bbSpace.getLen() ); } inCharData = false; } // // If the entity that just ended was the entity that we started // on, then this is the end of the external subset. // if (orgReader == toCatch.getReaderNum()) bDoBreak=true; } if(bDoBreak) break; } // If we have a doc type handler, tell it the ext subset ends if (fDocTypeHandler && isDTD && !inIncludeSect) fDocTypeHandler->endExtSubset(); } // // This method will scan for an id, either public or external. // // // [75] ExternalID ::= 'SYSTEM' S SystemLiteral // | 'PUBLIC' S PubidLiteral S SystemLiteral // [83] PublicID ::= 'PUBLIC' S PubidLiteral // bool DTDScanner::scanId( XMLBuffer& pubIdToFill , XMLBuffer& sysIdToFill , const IDTypes whatKind) { // Clean out both return buffers pubIdToFill.reset(); sysIdToFill.reset(); // // Check first for the system id first. If we find it, and system id // is one of the legal values, then lets try to scan it. // // 'SYSTEM' S SystemLiteral if (fReaderMgr->skippedString(XMLUni::fgSysIDString)) { // If they were looking for a public id, then we failed if (whatKind == IDType_Public) { fScanner->emitError(XMLErrs::ExpectedPublicId); return false; } // We must skip spaces bool skippedSomething; fReaderMgr->skipPastSpaces(skippedSomething); if (!skippedSomething) { fScanner->emitError(XMLErrs::ExpectedWhitespace); return false; } // Get the system literal value return scanSystemLiteral(sysIdToFill); } // Now scan for public id // 'PUBLIC' S PubidLiteral S SystemLiteral // or // 'PUBLIC' S PubidLiteral // If we don't have any public id string => Error if (!fReaderMgr->skippedString(XMLUni::fgPubIDString)) { fScanner->emitError(XMLErrs::ExpectedSystemOrPublicId); return false; } // // So following this we must have whitespace, a public literal, whitespace, // and a system literal. // bool skippedSomething; fReaderMgr->skipPastSpaces(skippedSomething); if (!skippedSomething) { fScanner->emitError(XMLErrs::ExpectedWhitespace); // // Just in case, if they just forgot the whitespace but the next char // is a single or double quote, then keep going. // const XMLCh chPeek = fReaderMgr->peekNextChar(); if ((chPeek != chDoubleQuote) && (chPeek != chSingleQuote)) return false; } if (!scanPublicLiteral(pubIdToFill)) return false; // If they wanted a public id, then this is all if (whatKind == IDType_Public) return true; // check if there is any space follows bool hasSpace; fReaderMgr->skipPastSpaces(hasSpace); // // In order to recover best here we need to see if // the next thing is a quote or not // const XMLCh chPeek = fReaderMgr->peekNextChar(); const bool bIsQuote = ((chPeek == chDoubleQuote) || (chPeek == chSingleQuote)); if (!hasSpace) { if (whatKind == IDType_External) { // // If its an external Id, then we need to see the system id. // So, emit the error. But, if the next char is a quote, don't // give up since its probably going to work. The user just // missed the separating space. Otherwise, fail. // fScanner->emitError(XMLErrs::ExpectedWhitespace); if (!bIsQuote) return false; } else { // // We can legally return here. But, if the next char is a quote, // then that's probably not what was desired, since its probably // just that space was forgotten and there really is a system // id to follow. // // So treat it like missing whitespace if so and keep going. // Else, just return success. // if (bIsQuote) fScanner->emitError(XMLErrs::ExpectedWhitespace); else return true; } } if (bIsQuote) { // there is a quote coming, scan the system literal if (!scanSystemLiteral(sysIdToFill)) return false; } else { // no quote, if expecting exteral id, this is an error if (whatKind == IDType_External) fScanner->emitError(XMLErrs::ExpectedQuotedString); } return true; } // // This method will scan the contents of an ignored section. It assumes that // we already are in the body, i.e. we've seen closing markup. // void DTDScanner::scanIgnoredSection() { // // Depth starts at one because we are already in one section and want // to parse until we hit its end. // unsigned long depth = 1; bool gotLeadingSurrogate = false; while (true) { const XMLCh nextCh = fReaderMgr->getNextChar(); if (!nextCh) ThrowXMLwithMemMgr(UnexpectedEOFException, XMLExcepts::Gen_UnexpectedEOF, fMemoryManager); if (nextCh == chOpenAngle) { if (fReaderMgr->skippedChar(chBang) && fReaderMgr->skippedChar(chOpenSquare)) { depth++; } } else if (nextCh == chCloseSquare) { if (fReaderMgr->skippedChar(chCloseSquare)) { while (fReaderMgr->skippedChar(chCloseSquare)) { // Do nothing, just skip them } if (fReaderMgr->skippedChar(chCloseAngle)) { depth--; if (!depth) break; } } } // Deal with surrogate pairs else if ((nextCh >= 0xD800) && (nextCh <= 0xDBFF)) { // Its a leading surrogate. If we already got one, then // issue an error, else set leading flag to make sure that // we look for a trailing next time. if (gotLeadingSurrogate) fScanner->emitError(XMLErrs::Expected2ndSurrogateChar); else gotLeadingSurrogate = true; } else { // If its a trailing surrogate, make sure that we are // prepared for that. Else, its just a regular char so make // sure that we were not expected a trailing surrogate. if ((nextCh >= 0xDC00) && (nextCh <= 0xDFFF)) { // Its trailing, so make sure we were expecting it if (!gotLeadingSurrogate) fScanner->emitError(XMLErrs::Unexpected2ndSurrogateChar); } else { // Its just a char, so make sure we were not expecting a // trailing surrogate. if (gotLeadingSurrogate) fScanner->emitError(XMLErrs::Expected2ndSurrogateChar); // Its got to at least be a valid XML character else if (!fReaderMgr->getCurrentReader()->isXMLChar(nextCh)) { XMLCh tmpBuf[9]; XMLString::binToText ( nextCh , tmpBuf , 8 , 16 , fMemoryManager ); fScanner->emitError(XMLErrs::InvalidCharacter, tmpBuf); } } gotLeadingSurrogate = false; } } } // // This method scans the entire internal subset. All we can have here is // decl markup, and PE references. The expanded PE references must contain // whole markup, so we don't have to worry about their content at this // level. We just scan them, expand them, push them, and parse their content // right there, via the expandERef() method. // bool DTDScanner::scanInternalSubset() { // Indicate we are in the internal subset now FlagJanitor janContentFlag(&fInternalSubset, true); // If we have a doc type handler, tell it the internal subset starts if (fDocTypeHandler) fDocTypeHandler->startIntSubset(); // Get a buffer for whitespace XMLBufBid bbSpace(fBufMgr); bool noErrors = true; while (true) { const XMLCh nextCh = fReaderMgr->peekNextChar(); // // If we get an end of file marker, just unget it and return a // failure status. The caller will then see the end of file and // faill out correctly. // if (!nextCh) return false; // Watch for the end of internal subset marker if (nextCh == chCloseSquare) { fReaderMgr->getNextChar(); break; } if (nextCh == chPercent) { // // Expand (and scan if external) the reference value. Tell // it to set the reader to cause an end of entity exception // when this reader dies, which is what the scanExtSubset // method wants (who is called to scan this.) // fReaderMgr->getNextChar(); expandPERef(true, false, false, true); } else if (nextCh == chOpenAngle) { // Remember this reader before we start the scan, for checking // XML 1.0 P28a Well-formedness constraint: PE Between Declarations const XMLSize_t orgReader = fReaderMgr->getCurrentReaderNum(); bool wasInPE = (fReaderMgr->getCurrentReader()->getType() == XMLReader::Type_PE); // And scan this markup fReaderMgr->getNextChar(); scanMarkupDecl(false); // If we did not get back to entry level, then partial markup if (fReaderMgr->getCurrentReaderNum() != orgReader) { if (wasInPE) fScanner->emitError(XMLErrs::PEBetweenDecl); else if (fScanner->getValidationScheme() == XMLScanner::Val_Always) fScanner->getValidator()->emitError(XMLValid::PartialMarkupInPE); } } else if (fReaderMgr->getCurrentReader()->isWhitespace(nextCh)) { // // IF we are doing advanced callbacks and have a doc type // handler, then get the whitespace and call the doc type // handler with it. Otherwise, just skip whitespace. // if (fDocTypeHandler) { fReaderMgr->getSpaces(bbSpace.getBuffer()); fDocTypeHandler->doctypeWhitespace ( bbSpace.getRawBuffer() , bbSpace.getLen() ); } else { fReaderMgr->skipPastSpaces(); } } else { // Not valid, so emit an error XMLCh tmpBuf[9]; XMLString::binToText ( fReaderMgr->getNextChar() , tmpBuf , 8 , 16 , fMemoryManager ); fScanner->emitError ( XMLErrs::InvalidCharacterInIntSubset , tmpBuf ); // // If an '>', then probably an abnormally terminated // internal subset so just return. // if (nextCh == chCloseAngle) { noErrors = false; break; } // // Otherwise, try to sync back up by scanning forward for // a reasonable start character. // static const XMLCh toSkip[] = { chPercent, chCloseSquare, chOpenAngle, chNull }; fReaderMgr->skipUntilInOrWS(toSkip); } } // If we have a doc type handler, tell it the internal subset ends if (fDocTypeHandler) fDocTypeHandler->endIntSubset(); return noErrors; } // // This method is called once we see a < in the input of an int/ext subset, // which indicates the start of some sort of markup. // void DTDScanner::scanMarkupDecl(const bool parseTextDecl) { // // We only have two valid first characters here. One is a ! which opens // some markup decl. The other is a ?, which could begin either a PI // or a text decl. If parseTextDecl is false, we cannot accept a text // decl. // const XMLCh nextCh = fReaderMgr->getNextChar(); if (nextCh == chBang) { if (fReaderMgr->skippedChar(chDash)) { if (fReaderMgr->skippedChar(chDash)) { scanComment(); } else { fScanner->emitError(XMLErrs::CommentsMustStartWith); fReaderMgr->skipPastChar(chCloseAngle); } } else if (fReaderMgr->skippedChar(chOpenSquare)) { // // Its a conditional section. This is only valid in the external // subset, so issue an error if we aren't there. // if (fInternalSubset) { fScanner->emitError(XMLErrs::ConditionalSectInIntSubset); fReaderMgr->skipPastChar(chCloseAngle); return; } // A PE ref can happen here, but space is not required checkForPERef(false, true); if (fReaderMgr->skippedString(XMLUni::fgIncludeString)) { checkForPERef(false, true); // Check for the following open square bracket if (!fReaderMgr->skippedChar(chOpenSquare)) fScanner->emitError(XMLErrs::ExpectedINCLUDEBracket); // Get the reader we started this on const XMLSize_t orgReader = fReaderMgr->getCurrentReaderNum(); checkForPERef(false, true); // // Recurse back to the ext subset call again, telling it its // in an include section. // scanExtSubsetDecl(true, false); // // And see if we got back to the same level. If not, then its // a partial markup error. // if (fReaderMgr->getCurrentReaderNum() != orgReader && fScanner->getValidationScheme() == XMLScanner::Val_Always) fScanner->getValidator()->emitError(XMLValid::PartialMarkupInPE); } else if (fReaderMgr->skippedString(XMLUni::fgIgnoreString)) { checkForPERef(false, true); // Check for the following open square bracket if (!fReaderMgr->skippedChar(chOpenSquare)) fScanner->emitError(XMLErrs::ExpectedINCLUDEBracket); // Get the reader we started this on const XMLSize_t orgReader = fReaderMgr->getCurrentReaderNum(); // And scan over the ignored part scanIgnoredSection(); // // And see if we got back to the same level. If not, then its // a partial markup error. // if (fReaderMgr->getCurrentReaderNum() != orgReader && fScanner->getValidationScheme() == XMLScanner::Val_Always) fScanner->getValidator()->emitError(XMLValid::PartialMarkupInPE); } else { fScanner->emitError(XMLErrs::ExpectedIncOrIgn); fReaderMgr->skipPastChar(chCloseAngle); } } else if (fReaderMgr->skippedString(XMLUni::fgAttListString)) { scanAttListDecl(); } else if (fReaderMgr->skippedString(XMLUni::fgElemString)) { scanElementDecl(); } else if (fReaderMgr->skippedString(XMLUni::fgEntityString)) { scanEntityDecl(); } else if (fReaderMgr->skippedString(XMLUni::fgNotationString)) { scanNotationDecl(); } else { fScanner->emitError(XMLErrs::ExpectedMarkupDecl); fReaderMgr->skipPastChar(chCloseAngle); } } else if (nextCh == chQuestion) { // It could be a PI or the XML declaration. Check for Decl if (fScanner->checkXMLDecl(false)) { // If we are not accepting text decls, its an error if (parseTextDecl) { scanTextDecl(); } else { // Emit the error and skip past this markup fScanner->emitError(XMLErrs::TextDeclNotLegalHere); fReaderMgr->skipPastChar(chCloseAngle); } } else { // It has to be a PI scanPI(); } } else { // Can't be valid so emit error and try to skip past end of this decl fScanner->emitError(XMLErrs::ExpectedMarkupDecl); fReaderMgr->skipPastChar(chCloseAngle); } } // // This method is called for a mixed model element's content mode. We've // already scanned past the '(PCDATA' part by the time we get here. So // everything else is element names separated by | characters until we // hit the end. The passed element decl's content model is filled in with // the information found. // bool DTDScanner::scanMixed(DTDElementDecl& toFill) { // // The terminating star is only required if there is something more // than (PCDATA). // bool starRequired = false; // Get a buffer to be used below to get element names XMLBufBid bbName(fBufMgr); XMLBuffer& nameBuf = bbName.getBuffer(); // // Create an initial content spec node. Its just a leaf node with a // PCDATA element id. This current node pointer will be pushed down the // tree as we go. // ContentSpecNode* curNode = new (fGrammarPoolMemoryManager) ContentSpecNode ( new (fGrammarPoolMemoryManager) QName ( XMLUni::fgZeroLenString , XMLUni::fgZeroLenString , XMLElementDecl::fgPCDataElemId , fGrammarPoolMemoryManager ) , false , fGrammarPoolMemoryManager ); // // Set the initial leaf as the temporary head. If we hit the first choice // node, it will be set up here. When done, this is the node that's set // as the content spec for the element. // ContentSpecNode* headNode = curNode; // Remember the original node so we can sense the first choice node ContentSpecNode* orgNode = curNode; // // We just loop around, getting the | character at the top and then // looking for the next element name. We keep up with the last node // and add each new one to its right node. // while (true) { // // First of all we check for some grunt work details of skipping // whitespace, expand PE refs, and catching invalid reps. // if (fReaderMgr->lookingAtChar(chPercent)) { // Expand it and continue checkForPERef(false, true); } else if (fReaderMgr->skippedChar(chAsterisk)) { // // Tell them they can't have reps in mixed model, but eat // it and keep going if we are allowed to. // if (fScanner->emitErrorWillThrowException(XMLErrs::NoRepInMixed)) { delete headNode; } fScanner->emitError(XMLErrs::NoRepInMixed); } else if (fReaderMgr->skippedSpace()) { // Spaces are ok at this point, just eat them and continue fReaderMgr->skipPastSpaces(); } else { if (!fReaderMgr->skippedChar(chPipe)) { // Has to be the closing paren now. if (!fReaderMgr->skippedChar(chCloseParen)) { delete headNode; fScanner->emitError(XMLErrs::UnterminatedContentModel, toFill.getElementName()->getLocalPart()); return false; } bool starSkipped = true; if (!fReaderMgr->skippedChar(chAsterisk)) { starSkipped = false; if (starRequired) { if (fScanner->emitErrorWillThrowException(XMLErrs::ExpectedAsterisk)) { delete headNode; } fScanner->emitError(XMLErrs::ExpectedAsterisk); } } // // Create a zero or more node and make the original head // node its first child. // if (starRequired || starSkipped) { headNode = new (fGrammarPoolMemoryManager) ContentSpecNode ( ContentSpecNode::ZeroOrMore , headNode , 0 , true , true , fGrammarPoolMemoryManager ); } // Store the head node as the content spec of the element. toFill.setContentSpec(headNode); break; } // Its more than just a PCDATA, so an ending star will be required now starRequired = true; // Space is legal here so check for a PE ref, but don't require space checkForPERef(false, true); // Get a name token if (!fReaderMgr->getName(nameBuf)) { delete headNode; fScanner->emitError(XMLErrs::ExpectedElementName); return false; } // // Create a leaf node for it. If we can find the element id for // this element, then use it. Else, we have to fault in an element // decl, marked as created because of being in a content model. // XMLElementDecl* decl = fDTDGrammar->getElemDecl(fEmptyNamespaceId, 0, nameBuf.getRawBuffer(), Grammar::TOP_LEVEL_SCOPE); if (!decl) { decl = new (fGrammarPoolMemoryManager) DTDElementDecl ( nameBuf.getRawBuffer() , fEmptyNamespaceId , DTDElementDecl::Any , fGrammarPoolMemoryManager ); decl->setCreateReason(XMLElementDecl::InContentModel); decl->setExternalElemDeclaration(isReadingExternalEntity()); fDTDGrammar->putElemDecl(decl); } // // If the current node is the original node, this is the first choice // node, so create an initial choice node with the current node and // the new element id. Store this as the head node. // // Otherwise, we have to steal the right node of the previous choice // and weave in another choice node there, which has the old choice // as its left and the new leaf as its right. // if (curNode == orgNode) { curNode = new (fGrammarPoolMemoryManager) ContentSpecNode ( ContentSpecNode::Choice , curNode , new (fGrammarPoolMemoryManager) ContentSpecNode ( decl->getElementName() , fGrammarPoolMemoryManager ) , true , true , fGrammarPoolMemoryManager ); // Remember the top node headNode = curNode; } else { ContentSpecNode* oldRight = curNode->orphanSecond(); curNode->setSecond ( new (fGrammarPoolMemoryManager) ContentSpecNode ( ContentSpecNode::Choice , oldRight , new (fGrammarPoolMemoryManager) ContentSpecNode ( decl->getElementName() , fGrammarPoolMemoryManager ) , true , true , fGrammarPoolMemoryManager ) ); // Make the new right node the current node curNode = curNode->getSecond(); } } } return true; } // // This method is called when we see a 'emitError(XMLErrs::ExpectedWhitespace); fReaderMgr->skipPastChar(chCloseAngle); return; } // // And now we get a name, which is the name of the notation. Get a // buffer for the name. // XMLBufBid bbName(fBufMgr); if (!fReaderMgr->getName(bbName.getBuffer())) { fScanner->emitError(XMLErrs::ExpectedNotationName); fReaderMgr->skipPastChar(chCloseAngle); return; } // If namespaces are enabled, then no colons allowed if (fScanner->getDoNamespaces()) { if (XMLString::indexOf(bbName.getRawBuffer(), chColon) != -1) fScanner->emitError(XMLErrs::ColonNotLegalWithNS); } // Space is required here so check for a PE ref, and require space if (!checkForPERef(false, true)) { fScanner->emitError(XMLErrs::ExpectedWhitespace); fReaderMgr->skipPastChar(chCloseAngle); return; } // // And scan an external or public id. We need buffers to use for both // of these. // XMLBufBid bbPubId(fBufMgr); XMLBufBid bbSysId(fBufMgr); if (!scanId(bbPubId.getBuffer(), bbSysId.getBuffer(), IDType_Either)) { fReaderMgr->skipPastChar(chCloseAngle); return; } // We can have an optional space or PE ref here checkForPERef(false, true); // // See if it already exists. If so, add it to the notatino decl pool. // Otherwise, if advanced callbacks are on, create a temp one and // call out for that one. // XMLNotationDecl* decl = fDTDGrammar->getNotationDecl(bbName.getRawBuffer()); bool isIgnoring = (decl != 0); if (isIgnoring) { fScanner->emitError(XMLErrs::NotationAlreadyExists, bbName.getRawBuffer()); } else { // Fill in a new notation declaration and add it to the pool const XMLCh* publicId = bbPubId.getRawBuffer(); const XMLCh* systemId = bbSysId.getRawBuffer(); ReaderMgr::LastExtEntityInfo lastInfo; fReaderMgr->getLastExtEntityInfo(lastInfo); decl = new (fGrammarPoolMemoryManager) XMLNotationDecl ( bbName.getRawBuffer() , (publicId && *publicId) ? publicId : 0 , (systemId && *systemId) ? systemId : 0 , (lastInfo.systemId && *lastInfo.systemId) ? lastInfo.systemId : 0 , fGrammarPoolMemoryManager ); fDTDGrammar->putNotationDecl(decl); } // // If we have a document type handler, then tell it about this. If we // are ignoring it, only call out if advanced callbacks are enabled. // if (fDocTypeHandler) { fDocTypeHandler->notationDecl ( *decl , isIgnoring ); } // And one more optional space or PE ref checkForPERef(false, true); // And skip the terminating bracket if (!fReaderMgr->skippedChar(chCloseAngle)) fScanner->emitError(XMLErrs::UnterminatedNotationDecl); } // // Scans a PI and calls the appropriate callbacks. A PI can happen in either // the document or the DTD, so it calls the appropriate handler according // to the fInDocument flag. // // At entry we have just scanned the lookingAtSpace()) { fScanner->emitError(XMLErrs::PINameExpected); fReaderMgr->skipPastSpaces(); } // Get a buffer for the PI name and scan it in XMLBufBid bbName(fBufMgr); if (!fReaderMgr->getName(bbName.getBuffer())) { fScanner->emitError(XMLErrs::PINameExpected); fReaderMgr->skipPastChar(chCloseAngle); return; } // Point the name pointer at the raw data namePtr = bbName.getRawBuffer(); // See if it issome form of 'xml' and emit a warning //if (!XMLString::compareIString(namePtr, XMLUni::fgXMLString)) if (bbName.getLen() == 3 && (((namePtr[0] == chLatin_x) || (namePtr[0] == chLatin_X)) && ((namePtr[1] == chLatin_m) || (namePtr[1] == chLatin_M)) && ((namePtr[2] == chLatin_l) || (namePtr[2] == chLatin_L)))) fScanner->emitError(XMLErrs::NoPIStartsWithXML); // If namespaces are enabled, then no colons allowed if (fScanner->getDoNamespaces()) { if (XMLString::indexOf(namePtr, chColon) != -1) fScanner->emitError(XMLErrs::ColonNotLegalWithNS); } // // If we don't hit a space next, then the PI has no target. If we do // then get out the target. Get a buffer for it as well // XMLBufBid bbTarget(fBufMgr); if (fReaderMgr->skippedSpace()) { // Skip any leading spaces fReaderMgr->skipPastSpaces(); bool gotLeadingSurrogate = false; // It does have a target, so lets move on to deal with that. while (1) { const XMLCh nextCh = fReaderMgr->getNextChar(); // Watch for an end of file, which is always bad here if (!nextCh) { fScanner->emitError(XMLErrs::UnterminatedPI); ThrowXMLwithMemMgr(UnexpectedEOFException, XMLExcepts::Gen_UnexpectedEOF, fMemoryManager); } // Watch for potential terminating character if (nextCh == chQuestion) { // It must be followed by '>' to be a termination of the target if (fReaderMgr->skippedChar(chCloseAngle)) break; } // Check for correct surrogate pairs if ((nextCh >= 0xD800) && (nextCh <= 0xDBFF)) { if (gotLeadingSurrogate) fScanner->emitError(XMLErrs::Expected2ndSurrogateChar); else gotLeadingSurrogate = true; } else { if (gotLeadingSurrogate) { if ((nextCh < 0xDC00) || (nextCh > 0xDFFF)) fScanner->emitError(XMLErrs::Expected2ndSurrogateChar); } // Its got to at least be a valid XML character else if (!fReaderMgr->getCurrentReader()->isXMLChar(nextCh)) { XMLCh tmpBuf[9]; XMLString::binToText ( nextCh , tmpBuf , 8 , 16 , fMemoryManager ); fScanner->emitError(XMLErrs::InvalidCharacter, tmpBuf); } gotLeadingSurrogate = false; } bbTarget.append(nextCh); } } else { // No target, but make sure its terminated ok if (!fReaderMgr->skippedChar(chQuestion)) { fScanner->emitError(XMLErrs::UnterminatedPI); fReaderMgr->skipPastChar(chCloseAngle); return; } if (!fReaderMgr->skippedChar(chCloseAngle)) { fScanner->emitError(XMLErrs::UnterminatedPI); fReaderMgr->skipPastChar(chCloseAngle); return; } } // Point the target pointer at the raw data targetPtr = bbTarget.getRawBuffer(); // // If we have a handler, then call it. // if (fDocTypeHandler) { fDocTypeHandler->doctypePI ( namePtr , targetPtr ); } } // // This method scans a public literal. It must be quoted and all of its // characters must be valid public id characters. The quotes are discarded // and the results are returned. // bool DTDScanner::scanPublicLiteral(XMLBuffer& toFill) { toFill.reset(); // Get the next char which must be a single or double quote XMLCh quoteCh; if (!fReaderMgr->skipIfQuote(quoteCh)) { fScanner->emitError(XMLErrs::ExpectedQuotedString); return false; } while (true) { const XMLCh nextCh = fReaderMgr->getNextChar(); // Watch for EOF if (!nextCh) ThrowXMLwithMemMgr(UnexpectedEOFException, XMLExcepts::Gen_UnexpectedEOF, fMemoryManager); if (nextCh == quoteCh) break; // // If its not a valid public id char, then report it but keep going // since that's the best recovery scheme. // if (!fReaderMgr->getCurrentReader()->isPublicIdChar(nextCh)) { XMLCh tmpBuf[9]; XMLString::binToText ( nextCh , tmpBuf , 8 , 16 , fMemoryManager ); fScanner->emitError(XMLErrs::InvalidPublicIdChar, tmpBuf); } toFill.append(nextCh); } return true; } // // This method handles scanning in a quoted system literal. It expects to // start on the open quote and returns after eating the ending quote. There // are not really any restrictions on the contents of system literals. // bool DTDScanner::scanSystemLiteral(XMLBuffer& toFill) { toFill.reset(); // Get the next char which must be a single or double quote XMLCh quoteCh; if (!fReaderMgr->skipIfQuote(quoteCh)) { fScanner->emitError(XMLErrs::ExpectedQuotedString); return false; } XMLCh nextCh; // Break out on terminating quote while ((nextCh=fReaderMgr->getNextChar())!=quoteCh) { // Watch for EOF if (!nextCh) ThrowXMLwithMemMgr(UnexpectedEOFException, XMLExcepts::Gen_UnexpectedEOF, fMemoryManager); toFill.append(nextCh); } return true; } // // This method is called to scan a text decl line, which can be the first // line in an external entity or external subset. // // On entry the ' // void DTDScanner::scanTextDecl() { // Skip any subsequent whitespace before the version string fReaderMgr->skipPastSpaces(); // Next should be the version string XMLBufBid bbVersion(fBufMgr); if (fReaderMgr->skippedString(XMLUni::fgVersionString)) { if (!scanEq()) { fScanner->emitError(XMLErrs::ExpectedEqSign); fReaderMgr->skipPastChar(chCloseAngle); return; } // // Followed by a single or double quoted version. Get a buffer for // the string. // if (!getQuotedString(bbVersion.getBuffer())) { fScanner->emitError(XMLErrs::BadXMLVersion); fReaderMgr->skipPastChar(chCloseAngle); return; } // If its not our supported version, issue an error but continue if (XMLString::equals(bbVersion.getRawBuffer(), XMLUni::fgVersion1_1)) { if (fScanner->getXMLVersion() != XMLReader::XMLV1_1) fScanner->emitError(XMLErrs::UnsupportedXMLVersion, bbVersion.getRawBuffer()); } else if (!XMLString::equals(bbVersion.getRawBuffer(), XMLUni::fgVersion1_0)) fScanner->emitError(XMLErrs::UnsupportedXMLVersion, bbVersion.getRawBuffer()); } // Ok, now we must have an encoding string XMLBufBid bbEncoding(fBufMgr); fReaderMgr->skipPastSpaces(); bool gotEncoding = false; if (fReaderMgr->skippedString(XMLUni::fgEncodingString)) { // There must be a equal sign next if (!scanEq()) { fScanner->emitError(XMLErrs::ExpectedEqSign); fReaderMgr->skipPastChar(chCloseAngle); return; } // Followed by a single or double quoted version string getQuotedString(bbEncoding.getBuffer()); if (bbEncoding.isEmpty() || !XMLString::isValidEncName(bbEncoding.getRawBuffer())) { fScanner->emitError(XMLErrs::BadXMLEncoding, bbEncoding.getRawBuffer()); fReaderMgr->skipPastChar(chCloseAngle); return; } // Indicate that we got an encoding gotEncoding = true; } // // Encoding declarations are required in the external entity // if there is a text declaration present // if (!gotEncoding) { fScanner->emitError(XMLErrs::EncodingRequired); fReaderMgr->skipPastChar(chCloseAngle); return; } fReaderMgr->skipPastSpaces(); if (!fReaderMgr->skippedChar(chQuestion)) { fScanner->emitError(XMLErrs::UnterminatedXMLDecl); fReaderMgr->skipPastChar(chCloseAngle); } else if (!fReaderMgr->skippedChar(chCloseAngle)) { fScanner->emitError(XMLErrs::UnterminatedXMLDecl); fReaderMgr->skipPastChar(chCloseAngle); } // // If we have a document type handler and advanced callbacks are on, // then call the TextDecl callback // if (fDocTypeHandler) { fDocTypeHandler->TextDecl ( bbVersion.getRawBuffer() , bbEncoding.getRawBuffer() ); } // // If we got an encoding string, then we have to call back on the reader // to tell it what the encoding is. // if (!bbEncoding.isEmpty()) { if (!fReaderMgr->getCurrentReader()->setEncoding(bbEncoding.getRawBuffer())) fScanner->emitError(XMLErrs::ContradictoryEncoding, bbEncoding.getRawBuffer()); } } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/validators/DTD/DTDAttDef.cpp0000644000175000017500000000646711042062107021466 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DTDAttDef.cpp 679359 2008-07-24 11:15:19Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // DTDAttDef: Constructors and Destructor // --------------------------------------------------------------------------- DTDAttDef::DTDAttDef(MemoryManager* const manager) : XMLAttDef(XMLAttDef::CData, XMLAttDef::Implied, manager) , fElemId(XMLElementDecl::fgInvalidElemId) , fName(0) { } DTDAttDef::DTDAttDef(const XMLCh* const attName , const XMLAttDef::AttTypes type , const XMLAttDef::DefAttTypes defType , MemoryManager* const manager) : XMLAttDef(type, defType, manager) , fElemId(XMLElementDecl::fgInvalidElemId) , fName(0) { fName = XMLString::replicate(attName, getMemoryManager()); } DTDAttDef::DTDAttDef( const XMLCh* const attName , const XMLCh* const attValue , const XMLAttDef::AttTypes type , const XMLAttDef::DefAttTypes defType , const XMLCh* const enumValues , MemoryManager* const manager) : XMLAttDef(attValue, type, defType, enumValues, manager) , fElemId(XMLElementDecl::fgInvalidElemId) , fName(0) { fName = XMLString::replicate(attName, getMemoryManager()); } DTDAttDef::~DTDAttDef() { getMemoryManager()->deallocate(fName); //delete [] fName; } // --------------------------------------------------------------------------- // DTDAttDef: Setter methods // --------------------------------------------------------------------------- void DTDAttDef::setName(const XMLCh* const newName) { getMemoryManager()->deallocate(fName); //delete [] fName; fName = XMLString::replicate(newName, getMemoryManager()); } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(DTDAttDef) void DTDAttDef::serialize(XSerializeEngine& serEng) { XMLAttDef::serialize(serEng); if (serEng.isStoring()) { serEng.writeSize (fElemId); serEng.writeString(fName); } else { serEng.readSize (fElemId); serEng.readString(fName); } } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/validators/DTD/DTDElementDecl.hpp0000644000175000017500000002167211360344373022513 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DTDElementDecl.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DTDELEMENTDECL_HPP) #define XERCESC_INCLUDE_GUARD_DTDELEMENTDECL_HPP #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN class ContentSpecNode; class DTDAttDefList; // // This class is a derivative of the basic element decl. This one implements // the virtuals so that they work for a DTD. The big difference is that // they don't live in any URL in the DTD. The names are just stored as full // QNames, so they are not split out and element decls don't live within // URL namespaces or anything like that. // class VALIDATORS_EXPORT DTDElementDecl : public XMLElementDecl { public : // ----------------------------------------------------------------------- // Class specific types // // ModelTypes // Indicates the type of content model that an element has. This // indicates how the content model is represented and validated. // ----------------------------------------------------------------------- enum ModelTypes { Empty , Any , Mixed_Simple , Children , ModelTypes_Count }; // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- DTDElementDecl(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); DTDElementDecl ( const XMLCh* const elemRawName , const unsigned int uriId , const ModelTypes modelType , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); DTDElementDecl ( QName* const elementName , const ModelTypes modelType = Any , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); ~DTDElementDecl(); // ----------------------------------------------------------------------- // The virtual element decl interface // ----------------------------------------------------------------------- virtual XMLAttDefList& getAttDefList() const; virtual CharDataOpts getCharDataOpts() const; virtual bool hasAttDefs() const; virtual const ContentSpecNode* getContentSpec() const; virtual ContentSpecNode* getContentSpec(); virtual void setContentSpec(ContentSpecNode* toAdopt); virtual XMLContentModel* getContentModel(); virtual void setContentModel(XMLContentModel* const newModelToAdopt); virtual const XMLCh* getFormattedContentModel () const; // ----------------------------------------------------------------------- // Support keyed collections // // This method allows objects of this type be placed into one of the // standard keyed collections. This method will return the full name of // the element, which will vary depending upon the type of the grammar. // ----------------------------------------------------------------------- const XMLCh* getKey() const; // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const DTDAttDef* getAttDef(const XMLCh* const attName) const; DTDAttDef* getAttDef(const XMLCh* const attName); ModelTypes getModelType() const; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- void addAttDef(DTDAttDef* const toAdd); void setModelType(const DTDElementDecl::ModelTypes toSet); /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(DTDElementDecl) virtual XMLElementDecl::objectType getObjectType() const; private : // ----------------------------------------------------------------------- // Private helper methods // ----------------------------------------------------------------------- void faultInAttDefList() const; XMLContentModel* createChildModel() ; XMLContentModel* makeContentModel() ; XMLCh* formatContentModel () const ; // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DTDElementDecl(const DTDElementDecl &); DTDElementDecl& operator = (const DTDElementDecl&); // ----------------------------------------------------------------------- // Private data members // // fAttDefs // The list of attributes that are defined for this element. Each // element is its own little 'namespace' for attributes, so each // element maintains its own list of owned attribute defs. It is // faulted in when an attribute is actually added. // // fAttList // We have to return a view of our att defs via the abstract view // that the scanner understands. It may or may not ever be asked // for so we fault it in as needed. // // fContentSpec // This is the content spec for the node. It contains the original // content spec that was read from the DTD, as a tree of nodes. This // one is always set up, and is used to build the fContentModel // version if we are validating. // // fModelType // The content model type of this element. This tells us what kind // of content model to create. // // fContentModel // The content model object for this element. It is stored here via // its abstract interface. // // fFormattedModel // This is a faulted in member. When the outside world asks for // our content model as a string, we format it and fault it into // this field (to avoid doing the formatted over and over.) // ----------------------------------------------------------------------- ModelTypes fModelType; RefHashTableOf* fAttDefs; DTDAttDefList* fAttList; ContentSpecNode* fContentSpec; XMLContentModel* fContentModel; XMLCh* fFormattedModel; }; // --------------------------------------------------------------------------- // DTDElementDecl: XMLElementDecl virtual interface implementation // --------------------------------------------------------------------------- inline ContentSpecNode* DTDElementDecl::getContentSpec() { return fContentSpec; } inline const ContentSpecNode* DTDElementDecl::getContentSpec() const { return fContentSpec; } inline XMLContentModel* DTDElementDecl::getContentModel() { if (!fContentModel) fContentModel = makeContentModel(); return fContentModel; } inline void DTDElementDecl::setContentModel(XMLContentModel* const newModelToAdopt) { delete fContentModel; fContentModel = newModelToAdopt; // reset formattedModel if (fFormattedModel) { getMemoryManager()->deallocate(fFormattedModel); fFormattedModel = 0; } } // --------------------------------------------------------------------------- // DTDElementDecl: Miscellaneous methods // --------------------------------------------------------------------------- inline const XMLCh* DTDElementDecl::getKey() const { return getFullName(); } // --------------------------------------------------------------------------- // DTDElementDecl: Getter methods // --------------------------------------------------------------------------- inline DTDElementDecl::ModelTypes DTDElementDecl::getModelType() const { return fModelType; } // --------------------------------------------------------------------------- // DTDElementDecl: Setter methods // --------------------------------------------------------------------------- inline void DTDElementDecl::setModelType(const DTDElementDecl::ModelTypes toSet) { fModelType = toSet; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/validators/DTD/DTDEntityDecl.hpp0000644000175000017500000001536210606722647022403 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DTDEntityDecl.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DTDENTITYDECL_HPP) #define XERCESC_INCLUDE_GUARD_DTDENTITYDECL_HPP #include XERCES_CPP_NAMESPACE_BEGIN // // This is a derivative of the abstract version of an entity decl in the // framework directory. We just need to provide implementation of a couple // of methods. // class VALIDATORS_EXPORT DTDEntityDecl : public XMLEntityDecl { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- DTDEntityDecl(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); DTDEntityDecl ( const XMLCh* const entName , const bool fromIntSubset = false , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); DTDEntityDecl ( const XMLCh* const entName , const XMLCh* const value , const bool fromIntSubset = false , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); DTDEntityDecl ( const XMLCh* const entName , const XMLCh value , const bool fromIntSubset = false , const bool specialChar = false ); ~DTDEntityDecl(); // ----------------------------------------------------------------------- // Implementation of the virtual XMLEntityDecl interface // ----------------------------------------------------------------------- virtual bool getDeclaredInIntSubset() const; virtual bool getIsParameter() const; virtual bool getIsSpecialChar() const; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- void setDeclaredInIntSubset(const bool newValue); void setIsParameter(const bool newValue); void setIsSpecialChar(const bool newValue); /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(DTDEntityDecl) private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DTDEntityDecl(const DTDEntityDecl&); DTDEntityDecl& operator=(DTDEntityDecl&); // ----------------------------------------------------------------------- // Private data members // // fDeclaredInIntSubset // Indicates whether the entity was declared in the internal subset // or not. If not, it cannot be referred to from a standalone // document. // // fIsParameter // Indicates whether this is a parameter entity or a general entity. // // fIsSpecialChar // This indicates that its one of the special character entities, // e.g. lt or gt or amp. We need to know this because there are // places where only a numeric char ref or special char ref is valid // and all others are ignored or illegal. // ----------------------------------------------------------------------- bool fDeclaredInIntSubset; bool fIsParameter; bool fIsSpecialChar; }; // --------------------------------------------------------------------------- // DTDEntityDecl: Constructors and Destructor // --------------------------------------------------------------------------- inline DTDEntityDecl::DTDEntityDecl(MemoryManager* const manager) : XMLEntityDecl(manager) , fDeclaredInIntSubset(false) , fIsParameter(false) , fIsSpecialChar(false) { } inline DTDEntityDecl::DTDEntityDecl( const XMLCh* const entName , const bool fromIntSubset , MemoryManager* const manager) : XMLEntityDecl(entName, manager) , fDeclaredInIntSubset(fromIntSubset) , fIsParameter(false) , fIsSpecialChar(false) { } inline DTDEntityDecl::DTDEntityDecl( const XMLCh* const entName , const XMLCh* const value , const bool fromIntSubset , MemoryManager* const manager) : XMLEntityDecl(entName, value, manager) , fDeclaredInIntSubset(fromIntSubset) , fIsParameter(false) , fIsSpecialChar(false) { } inline DTDEntityDecl::DTDEntityDecl(const XMLCh* const entName , const XMLCh value , const bool fromIntSubset , const bool specialChar) : XMLEntityDecl(entName, value, XMLPlatformUtils::fgMemoryManager) , fDeclaredInIntSubset(fromIntSubset) , fIsParameter(false) , fIsSpecialChar(specialChar) { } inline DTDEntityDecl::~DTDEntityDecl() { } // --------------------------------------------------------------------------- // DTDEntityDecl: Getter methods // --------------------------------------------------------------------------- inline bool DTDEntityDecl::getDeclaredInIntSubset() const { return fDeclaredInIntSubset; } inline bool DTDEntityDecl::getIsParameter() const { return fIsParameter; } inline bool DTDEntityDecl::getIsSpecialChar() const { return fIsSpecialChar; } // --------------------------------------------------------------------------- // DTDEntityDecl: Setter methods // --------------------------------------------------------------------------- inline void DTDEntityDecl::setDeclaredInIntSubset(const bool newValue) { fDeclaredInIntSubset = newValue; } inline void DTDEntityDecl::setIsParameter(const bool newValue) { fIsParameter = newValue; } inline void DTDEntityDecl::setIsSpecialChar(const bool newValue) { fIsSpecialChar = newValue; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/validators/DTD/DTDScanner.hpp0000644000175000017500000002302111037122704021702 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DTDScanner.hpp 676911 2008-07-15 13:27:32Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DTDSCANNER_HPP) #define XERCESC_INCLUDE_GUARD_DTDSCANNER_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN class XMLScanner; /* * Default implementation of an XML DTD scanner. */ class DocTypeHandler; class VALIDATORS_EXPORT DTDScanner : public XMemory { public: // ----------------------------------------------------------------------- // Class specific types // // EntityExpRes // Returned from scanEntityRef() to indicate how the expanded text // was treated. // // IDTypes // Type of the ID // ----------------------------------------------------------------------- enum EntityExpRes { EntityExp_Failed , EntityExp_Pushed , EntityExp_Returned }; enum IDTypes { IDType_Public , IDType_External , IDType_Either }; // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- DTDScanner ( DTDGrammar* dtdGrammar , DocTypeHandler* const docTypeHandler , MemoryManager* const grammarPoolMemoryManager , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual ~DTDScanner(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- DocTypeHandler* getDocTypeHandler(); const DocTypeHandler* getDocTypeHandler() const; // ----------------------------------------------------------------------- // Setter methods // // setScannerInfo() is called by the scanner to tell the DTDScanner // about the stuff it needs to have access to. // ----------------------------------------------------------------------- void setScannerInfo ( XMLScanner* const owningScanner , ReaderMgr* const readerMgr , XMLBufferMgr* const bufMgr ); void setDocTypeHandler ( DocTypeHandler* const handlerToSet ); void scanExtSubsetDecl(const bool inIncludeSect, const bool isDTD); bool scanInternalSubset(); bool scanId ( XMLBuffer& pubIdToFill , XMLBuffer& sysIdToFill , const IDTypes whatKind ); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DTDScanner(const DTDScanner &); DTDScanner& operator = (const DTDScanner&); // ----------------------------------------------------------------------- // Private DTD scanning methods. These are all in XMLValidator2.cpp // ----------------------------------------------------------------------- bool checkForPERef ( const bool inLiteral , const bool inMarkup ); bool expandPERef ( const bool scanExternal , const bool inLiteral , const bool inMarkup , const bool throwEndOfExt = false ); bool getQuotedString(XMLBuffer& toFill); XMLAttDef* scanAttDef(DTDElementDecl& elemDecl, XMLBuffer& bufToUse); bool scanAttValue ( const XMLCh* const attrName , XMLBuffer& toFill , const XMLAttDef::AttTypes type ); void scanAttListDecl(); ContentSpecNode* scanChildren ( const DTDElementDecl& elemDecl , XMLBuffer& bufToUse ); bool scanCharRef(XMLCh& toFill, XMLCh& second); void scanComment(); bool scanContentSpec(DTDElementDecl& toFill); void scanDefaultDecl(DTDAttDef& toFill); void scanElementDecl(); void scanEntityDecl(); bool scanEntityDef(); bool scanEntityLiteral(XMLBuffer& toFill); bool scanEntityDef(DTDEntityDecl& decl, const bool isPEDecl); EntityExpRes scanEntityRef(XMLCh& firstCh, XMLCh& secondCh, bool& escaped); bool scanEnumeration ( const DTDAttDef& attDef , XMLBuffer& toFill , const bool notation ); bool scanEq(); void scanIgnoredSection(); void scanMarkupDecl(const bool parseTextDecl); bool scanMixed(DTDElementDecl& toFill); void scanNotationDecl(); void scanPI(); bool scanPublicLiteral(XMLBuffer& toFill); bool scanSystemLiteral(XMLBuffer& toFill); void scanTextDecl(); bool isReadingExternalEntity(); // ----------------------------------------------------------------------- // Private data members // // fDocTypeHandler // This holds the optional doc type handler that can be installed // and used to call back for all markup events. It is DTD specific. // // fDumAttDef // fDumElemDecl // fDumEntityDecl // These are dummy objects into which mark decls are parsed when // they are just overrides of previously declared markup decls. In // such situations, the first one wins but we need to have somewhere // to parse them into. So these are lazily created and used as needed // when such markup decls are seen. // // fInternalSubset // This is used to track whether we are in the internal subset or not, // in which case we are in the external subset. // // fNextAttrId // Since att defs are per-element, we don't have a validator wide // attribute def pool. So we use a simpler data structure in each // element decl to store its att defs, and we use this simple counter // to apply a unique id to each new attribute. // // fDTDGrammar // The DTD information we scanned like element decl, attribute decl // are stored in this Grammar. // // fBufMgr // This is the buffer manager of the scanner. This is provided as a // convenience so that the DTDScanner doesn't have to create its own // buffer manager during the parse process. // // fReaderMgr // This is a pointer to the reader manager that is being used by the scanner. // // fScanner // The pointer to the scanner to which this DTDScanner belongs // // fPEntityDeclPool // This is a pool of EntityDecl objects, which contains all of the // parameter entities that are declared in the DTD subsets. // // fEmptyNamespaceId // The uri for all DTD decls // // fDocTypeReaderId // The original reader in the fReaderMgr - to be compared against the // current reader to decide whether we are processing an external/internal // declaration // ----------------------------------------------------------------------- MemoryManager* fMemoryManager; MemoryManager* fGrammarPoolMemoryManager; DocTypeHandler* fDocTypeHandler; DTDAttDef* fDumAttDef; DTDElementDecl* fDumElemDecl; DTDEntityDecl* fDumEntityDecl; bool fInternalSubset; unsigned int fNextAttrId; DTDGrammar* fDTDGrammar; XMLBufferMgr* fBufMgr; ReaderMgr* fReaderMgr; XMLScanner* fScanner; NameIdPool* fPEntityDeclPool; unsigned int fEmptyNamespaceId; XMLSize_t fDocTypeReaderId; }; // --------------------------------------------------------------------------- // DTDScanner: Getter methods // --------------------------------------------------------------------------- inline DocTypeHandler* DTDScanner::getDocTypeHandler() { return fDocTypeHandler; } inline const DocTypeHandler* DTDScanner::getDocTypeHandler() const { return fDocTypeHandler; } // --------------------------------------------------------------------------- // DTDScanner: Setter methods // --------------------------------------------------------------------------- inline void DTDScanner::setDocTypeHandler(DocTypeHandler* const handlerToSet) { fDocTypeHandler = handlerToSet; } // ----------------------------------------------------------------------- // Helper methods // ----------------------------------------------------------------------- inline bool DTDScanner::isReadingExternalEntity() { return (fDocTypeReaderId != fReaderMgr->getCurrentReaderNum()); } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/validators/DTD/XMLDTDDescriptionImpl.hpp0000644000175000017500000000663510606722647024030 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLDTDDescriptionImpl.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_XMLDTDDESCRIPTIONIMPL_HPP) #define XERCESC_INCLUDE_GUARD_XMLDTDDESCRIPTIONIMPL_HPP #include XERCES_CPP_NAMESPACE_BEGIN class XMLPARSER_EXPORT XMLDTDDescriptionImpl : public XMLDTDDescription { public : // ----------------------------------------------------------------------- /** @name constructor and destructor */ // ----------------------------------------------------------------------- //@{ XMLDTDDescriptionImpl( const XMLCh* const systemId , MemoryManager* const memMgr ); ~XMLDTDDescriptionImpl(); //@} // ----------------------------------------------------------------------- /** @name Implementation of GrammarDescription Interface */ // ----------------------------------------------------------------------- //@{ /** * getGrammarKey * */ virtual const XMLCh* getGrammarKey() const ; //@} // ----------------------------------------------------------------------- /** @name Implementation of DTDDescription Interface */ // ----------------------------------------------------------------------- //@{ /** * Getter * */ virtual const XMLCh* getRootName() const; virtual const XMLCh* getSystemId() const; /** * Setter * */ virtual void setRootName(const XMLCh* const); virtual void setSystemId(const XMLCh* const); //@} /*** * Support for Serialization/De-serialization ***/ DECL_XSERIALIZABLE(XMLDTDDescriptionImpl) XMLDTDDescriptionImpl(MemoryManager* const memMgr = XMLPlatformUtils::fgMemoryManager); private : // ----------------------------------------------------------------------- /** name Unimplemented copy constructor and operator= */ // ----------------------------------------------------------------------- //@{ XMLDTDDescriptionImpl(const XMLDTDDescriptionImpl& ); XMLDTDDescriptionImpl& operator=(const XMLDTDDescriptionImpl& ); //@} // ----------------------------------------------------------------------- // // fSystemId: // SYSTEM ID of the grammar // // fRootName: // root name of the grammar // // ----------------------------------------------------------------------- const XMLCh* fSystemId; const XMLCh* fRootName; }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/validators/DTD/XMLDTDDescriptionImpl.cpp0000644000175000017500000000735310523643534024014 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLDTDDescriptionImpl.cpp 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // XMLDTDDescriptionImpl: constructor and destructor // --------------------------------------------------------------------------- XMLDTDDescriptionImpl::XMLDTDDescriptionImpl(const XMLCh* const systemId , MemoryManager* const memMgr ) :XMLDTDDescription(memMgr) ,fSystemId(0) ,fRootName(0) { if (systemId) fSystemId = XMLString::replicate(systemId, memMgr); } XMLDTDDescriptionImpl::~XMLDTDDescriptionImpl() { if (fSystemId) XMLGrammarDescription::getMemoryManager()->deallocate((void*)fSystemId); if (fRootName) XMLGrammarDescription::getMemoryManager()->deallocate((void*)fRootName); } const XMLCh* XMLDTDDescriptionImpl::getGrammarKey() const { return getSystemId(); } const XMLCh* XMLDTDDescriptionImpl::getRootName() const { return fRootName; } const XMLCh* XMLDTDDescriptionImpl::getSystemId() const { return fSystemId; } void XMLDTDDescriptionImpl::setRootName(const XMLCh* const rootName) { if (fRootName) { XMLGrammarDescription::getMemoryManager()->deallocate((void*)fRootName); fRootName = 0; } if (rootName) fRootName = XMLString::replicate(rootName, XMLGrammarDescription::getMemoryManager()); } void XMLDTDDescriptionImpl::setSystemId(const XMLCh* const systemId) { if (fSystemId) { XMLGrammarDescription::getMemoryManager()->deallocate((void*)fSystemId); fSystemId = 0; } if (systemId) fSystemId = XMLString::replicate(systemId, XMLGrammarDescription::getMemoryManager()); } /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(XMLDTDDescriptionImpl) void XMLDTDDescriptionImpl::serialize(XSerializeEngine& serEng) { XMLDTDDescription::serialize(serEng); if (serEng.isStoring()) { serEng.writeString(fSystemId); serEng.writeString(fRootName); } else { if (fSystemId) { XMLGrammarDescription::getMemoryManager()->deallocate((void*)fSystemId); } serEng.readString((XMLCh*&)fSystemId); //the original root name which came from the ctor needs deallocated if (fRootName) { XMLGrammarDescription::getMemoryManager()->deallocate((void*)fRootName); } serEng.readString((XMLCh*&)fRootName); } } XMLDTDDescriptionImpl::XMLDTDDescriptionImpl(MemoryManager* const memMgr) :XMLDTDDescription(memMgr) ,fSystemId(0) ,fRootName(0) { } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/validators/DTD/DTDValidator.cpp0000644000175000017500000005171711126201344022243 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DTDValidator.cpp 729944 2008-12-29 17:03:32Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // DTDValidator: Constructors and Destructor // --------------------------------------------------------------------------- DTDValidator::DTDValidator(XMLErrorReporter* const errReporter) : XMLValidator(errReporter) , fDTDGrammar(0) { reset(); } DTDValidator::~DTDValidator() { } // --------------------------------------------------------------------------- // DTDValidator: Implementation of the XMLValidator interface // --------------------------------------------------------------------------- bool DTDValidator::checkContent(XMLElementDecl* const elemDecl , QName** const children , XMLSize_t childCount , XMLSize_t* indexFailingChild) { // // Look up the element id in our element decl pool. This will get us // the element decl in our own way of looking at them. // if (!elemDecl) ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Val_InvalidElemId, getScanner()->getMemoryManager()); // // Get the content spec type of this element. This will tell us what // to do to validate it. // const DTDElementDecl::ModelTypes modelType = ((DTDElementDecl*) elemDecl)->getModelType(); if (modelType == DTDElementDecl::Empty) { // // We can do this one here. It cannot have any children. If it does // we return 0 as the index of the first bad child. // if (childCount) { *indexFailingChild=0; return false; } } else if (modelType == DTDElementDecl::Any) { // We pass no judgement on this one, anything goes } else if ((modelType == DTDElementDecl::Mixed_Simple) || (modelType == DTDElementDecl::Children)) { // Get the element's content model or fault it in const XMLContentModel* elemCM = elemDecl->getContentModel(); // Ask it to validate and return its return return elemCM->validateContent(children, childCount, getScanner()->getEmptyNamespaceId(), indexFailingChild, getScanner()->getMemoryManager()); } else { ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::CM_UnknownCMType, getScanner()->getMemoryManager()); } // Went ok, so return success return true; } void DTDValidator::faultInAttr(XMLAttr& toFill, const XMLAttDef& attDef) const { toFill.set(0, attDef.getFullName(), attDef.getValue(), attDef.getType()); } void DTDValidator::reset() { } bool DTDValidator::requiresNamespaces() const { // Namespaces are not supported for DTDs return false; } void DTDValidator::validateAttrValue(const XMLAttDef* attDef , const XMLCh* const attrValue , bool preValidation , const XMLElementDecl*) { // // Get quick refs to lost of of the stuff in the passed objects in // order to simplify the code below, which will reference them very // often. // const XMLAttDef::AttTypes type = attDef->getType(); const XMLAttDef::DefAttTypes defType = attDef->getDefaultType(); const XMLCh* const valueText = attDef->getValue(); const XMLCh* const fullName = attDef->getFullName(); const XMLCh* const enumList = attDef->getEnumeration(); // // If the default type is fixed, then make sure the passed value maps // to the fixed value. // If during preContentValidation, the value we are validating is the fixed value itself // so no need to compare. // Only need to do this for regular attribute value validation // if (defType == XMLAttDef::Fixed && !preValidation) { if (!XMLString::equals(attrValue, valueText)) emitError(XMLValid::NotSameAsFixedValue, fullName, attrValue, valueText); } // // If its a CDATA attribute, then we are done with any DTD level // validation else do the rest. // if (type == XMLAttDef::CData) return; // An empty string cannot be valid for any of the other types if (!attrValue[0]) { emitError(XMLValid::InvalidEmptyAttValue, fullName); return; } // See whether we are doing multiple values or not const bool multipleValues = ( (type == XMLAttDef::IDRefs) || (type == XMLAttDef::Entities) || (type == XMLAttDef::NmTokens) || (type == XMLAttDef::Notation) || (type == XMLAttDef::Enumeration) ); // And whether we must check for a first name char const bool firstNameChar = ( (type == XMLAttDef::ID) || (type == XMLAttDef::IDRef) || (type == XMLAttDef::IDRefs) || (type == XMLAttDef::Entity) || (type == XMLAttDef::Entities) || (type == XMLAttDef::Notation) ); // Whether it requires ref checking stuff const bool isARefType ( (type == XMLAttDef::ID) || (type == XMLAttDef::IDRef) || (type == XMLAttDef::IDRefs) ); // Some trigger flags to avoid issuing redundant errors and whatnot bool alreadyCapped = false; // // Make a copy of the text that we can mangle and get a pointer we can // move through the value // // Use a stack-based buffer, when possible... XMLCh tempBuffer[100]; XMLCh* pszTmpVal = 0; ArrayJanitor janTmpVal(0); if (XMLString::stringLen(attrValue) < sizeof(tempBuffer) / sizeof(tempBuffer[0])) { XMLString::copyString(tempBuffer, attrValue); pszTmpVal = tempBuffer; } else { janTmpVal.reset(XMLString::replicate(attrValue, getScanner()->getMemoryManager()), getScanner()->getMemoryManager()); pszTmpVal = janTmpVal.get(); } XMLCh* valPtr = pszTmpVal; bool doNamespace = getScanner()->getDoNamespaces(); while (true) { // // Make sure the first character is a valid first name char, i.e. // if its a Name value. For NmToken values we don't treat the first // char any differently. // if (firstNameChar) { // If its not, emit and error but try to keep going if (!getReaderMgr()->getCurrentReader()->isFirstNameChar(*valPtr)) emitError(XMLValid::AttrValNotName, valPtr, fullName); valPtr++; } // Make sure all the remaining chars are valid name chars while (*valPtr) { // // If we hit a whitespace, its either a break between two // or more values, or an error if we have a single value. // // // XML1.0-3rd // // [6] Names ::= Name (#x20 Name)* // [8] Nmtokens ::= Nmtoken (#x20 Nmtoken)* // // only and only ONE #x20 is allowed to be the delimiter // if (*valPtr==chSpace) { if (!multipleValues) { emitError(XMLValid::NoMultipleValues, fullName); return; } break; } // Now this attribute can be of type // ID, IDREF, IDREFS, ENTITY, ENTITIES, NOTATION, NMTOKEN, NMTOKENS, ENUMERATION // All these must be valid XMLName // If namespace is enabled, colon is not allowed in the first 6 if (doNamespace && *valPtr == chColon && firstNameChar) emitError(XMLValid::ColonNotValidWithNS); if (!getReaderMgr()->getCurrentReader()->isNameChar(*valPtr)) { emitError(XMLValid::AttrValNotName, valPtr, fullName); return; } valPtr++; } // // Cap it off at the current non-name char. If already capped, // then remember this. // if (!(*valPtr)) alreadyCapped = true; *valPtr = 0; // // If this type of attribute requires that we track reference // stuff, then handle that. // if (isARefType) { if ((type == XMLAttDef::ID) || (type == XMLAttDef::IDRef) || (type == XMLAttDef::IDRefs)) { XMLRefInfo* find = getScanner()->getIDRefList()->get(pszTmpVal); if (find) { if (find->getDeclared() && (type == XMLAttDef::ID)) emitError(XMLValid::ReusedIDValue, pszTmpVal); } else { find = new (getScanner()->getMemoryManager()) XMLRefInfo ( pszTmpVal , false , false , getScanner()->getMemoryManager() ); getScanner()->getIDRefList()->put((void*)find->getRefName(), find); } // // Mark it declared or used, which might be redundant in some cases // but not worth checking // if (type == XMLAttDef::ID) find->setDeclared(true); else { if (!preValidation) { find->setUsed(true); } } } } else if (!preValidation && ((type == XMLAttDef::Entity) || (type == XMLAttDef::Entities))) { // // If its refering to a entity, then look up the name in the // general entity pool. If not there, then its an error. If its // not an external unparsed entity, then its an error. // // In case of pre-validation, the above errors should be ignored. // const XMLEntityDecl* decl = fDTDGrammar->getEntityDecl(pszTmpVal); if (decl) { if (!decl->isUnparsed()) emitError(XMLValid::BadEntityRefAttr, pszTmpVal, fullName); } else { emitError ( XMLValid::UnknownEntityRefAttr , fullName , pszTmpVal ); } } else if ((type == XMLAttDef::Notation) || (type == XMLAttDef::Enumeration)) { // // Make sure that this value maps to one of the enumeration or // notation values in the enumList parameter. We don't have to // look it up in the notation pool (if a notation) because we // will look up the enumerated values themselves. If they are in // the notation pool (after the DTD is parsed), then obviously // this value will be legal since it matches one of them. // if (!XMLString::isInList(pszTmpVal, enumList)) emitError(XMLValid::DoesNotMatchEnumList, pszTmpVal, fullName); } // If not doing multiple values, then we are done if (!multipleValues) break; // // If we are at the end, then break out now, else move up to the // next char and update the base pointer. // if (alreadyCapped) break; valPtr++; pszTmpVal = valPtr; } } void DTDValidator::preContentValidation(bool #if defined(XERCES_DEBUG) reuseGrammar #endif ,bool validateDefAttr) { // // Lets enumerate all of the elements in the element decl pool // and put out an error for any that did not get declared. // We also check all of the attributes as well. // NameIdPoolEnumerator elemEnum = fDTDGrammar->getElemEnumerator(); fDTDGrammar->setValidated(true); while (elemEnum.hasMoreElements()) { const DTDElementDecl& curElem = elemEnum.nextElement(); const DTDElementDecl::CreateReasons reason = curElem.getCreateReason(); // // See if this element decl was ever marked as declared. If // not, then put out an error. In some cases its just // a warning, such as being referenced in a content model. // if (reason != XMLElementDecl::Declared) { if (reason == XMLElementDecl::AttList) { getScanner()->emitError ( XMLErrs::UndeclaredElemInAttList , curElem.getFullName() ); } else if (reason == XMLElementDecl::AsRootElem) { // It's ok that the root element is not declared in the DTD /* emitError ( XMLValid::UndeclaredElemInDocType , curElem.getFullName() );*/ } else if (reason == XMLElementDecl::InContentModel) { getScanner()->emitError ( XMLErrs::UndeclaredElemInCM , curElem.getFullName() ); } else { #if defined(XERCES_DEBUG) if(reuseGrammar && reason == XMLElementDecl::JustFaultIn){ } else ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::DTD_UnknownCreateReason, getScanner()->getMemoryManager()); #endif } } // // Check all of the attributes of the current element. // We check for: // // 1) Multiple ID attributes // 2) That all of the default values of attributes are // valid for their type. // 3) That for any notation types, that their lists // of possible values refer to declared notations. // // 4) XML1.0(3rd edition) // // Validity constraint: One Notation Per Element Type // An element type MUST NOT have more than one NOTATION attribute specified. // // Validity constraint: No Notation on Empty Element // For compatibility, an attribute of type NOTATION MUST NOT be declared on an element declared EMPTY. // // Validity constraint: No Duplicate Tokens // The notation names in a single NotationType attribute declaration, as well as // the NmTokens in a single Enumeration attribute declaration, MUST all be distinct. // XMLAttDefList& attDefList = curElem.getAttDefList(); bool seenId = false; bool seenNOTATION = false; bool elemEmpty = (curElem.getModelType() == DTDElementDecl::Empty); for(XMLSize_t i=0; i entEnum = fDTDGrammar->getEntityEnumerator(); while (entEnum.hasMoreElements()) { const DTDEntityDecl& curEntity = entEnum.nextElement(); if (!curEntity.getNotationName()) continue; // It has a notation name, so look it up if (!fDTDGrammar->getNotationDecl(curEntity.getNotationName())) { emitError ( XMLValid::NotationNotDeclared , curEntity.getNotationName() ); } } } void DTDValidator::postParseValidation() { // // At this time, there is nothing to do here. The scanner itself handles // ID/IDREF validation, since that is the same no matter what kind of // validator. // } // // We need to verify that all of its possible values // (in the enum list) // is distinct and // refer to valid notations if toValidateNotation is set on // void DTDValidator::checkTokenList(const XMLAttDef& curAttDef , bool toValidateNotation) { XMLCh* list = XMLString::replicate(curAttDef.getEnumeration(), getScanner()->getMemoryManager()); ArrayJanitor janList(list, getScanner()->getMemoryManager()); // // Search forward for a space or a null. If a null, // we are done. If a space, cap it and look it up. // bool breakFlag = false; XMLCh* listPtr = list; XMLCh* lastPtr = listPtr; while (true) { while (*listPtr && (*listPtr != chSpace)) listPtr++; // // If at the end, indicate we need to break after // this one. Else, cap it off here. // if (!*listPtr) breakFlag = true; else *listPtr++ = chNull; //distinction check //there should be no same token found in the remaining list if (XMLString::isInList(lastPtr, listPtr)) { emitError ( XMLValid::AttrDupToken , curAttDef.getFullName() , lastPtr ); } if (toValidateNotation && !fDTDGrammar->getNotationDecl(lastPtr)) { emitError ( XMLValid::UnknownNotRefAttr , curAttDef.getFullName() , lastPtr ); } // Break out if we hit the end last time if (breakFlag) break; // Else move upwards and try again lastPtr = listPtr; } } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/validators/DTD/DTDEntityDecl.cpp0000644000175000017500000000312410523643534022362 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DTDEntityDecl.cpp 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include XERCES_CPP_NAMESPACE_BEGIN /*** * Support for Serialization/De-serialization ***/ IMPL_XSERIALIZABLE_TOCREATE(DTDEntityDecl) void DTDEntityDecl::serialize(XSerializeEngine& serEng) { XMLEntityDecl::serialize(serEng); if (serEng.isStoring()) { serEng<>fDeclaredInIntSubset; serEng>>fIsParameter; serEng>>fIsSpecialChar; } } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/validators/DTD/DocTypeHandler.hpp0000644000175000017500000000773410647424627022656 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DocTypeHandler.hpp 557282 2007-07-18 14:54:15Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOCTYPEHANDLER_HPP) #define XERCESC_INCLUDE_GUARD_DOCTYPEHANDLER_HPP #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // // This abstract class defines the document type handler API's which can be // used to process the DTD events generated by the DTDScanner as it scans the // internal and external subset. class VALIDATORS_EXPORT DocTypeHandler { public: // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- DocTypeHandler() { } virtual ~DocTypeHandler() { } // ----------------------------------------------------------------------- // The document type handler virtual handler interface // ----------------------------------------------------------------------- virtual void attDef ( const DTDElementDecl& elemDecl , const DTDAttDef& attDef , const bool ignoring ) = 0; virtual void doctypeComment ( const XMLCh* const comment ) = 0; virtual void doctypeDecl ( const DTDElementDecl& elemDecl , const XMLCh* const publicId , const XMLCh* const systemId , const bool hasIntSubset , const bool hasExtSubset = false ) = 0; virtual void doctypePI ( const XMLCh* const target , const XMLCh* const data ) = 0; virtual void doctypeWhitespace ( const XMLCh* const chars , const XMLSize_t length ) = 0; virtual void elementDecl ( const DTDElementDecl& decl , const bool isIgnored ) = 0; virtual void endAttList ( const DTDElementDecl& elemDecl ) = 0; virtual void endIntSubset() = 0; virtual void endExtSubset() = 0; virtual void entityDecl ( const DTDEntityDecl& entityDecl , const bool isPEDecl , const bool isIgnored ) = 0; virtual void resetDocType() = 0; virtual void notationDecl ( const XMLNotationDecl& notDecl , const bool isIgnored ) = 0; virtual void startAttList ( const DTDElementDecl& elemDecl ) = 0; virtual void startIntSubset() = 0; virtual void startExtSubset() = 0; virtual void TextDecl ( const XMLCh* const versionStr , const XMLCh* const encodingStr ) = 0; private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DocTypeHandler(const DocTypeHandler&); DocTypeHandler& operator=(const DocTypeHandler&); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/internal/0000755000175000017500000000000011363617247016314 5ustar borisborisxerces-c-3.1.1/src/xercesc/internal/XMLScannerResolver.cpp0000644000175000017500000001035210523643534022510 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLScannerResolver.cpp 471747 2006-11-06 14:31:56Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // XMLScannerResolver: Public static methods // --------------------------------------------------------------------------- XMLScanner* XMLScannerResolver::getDefaultScanner( XMLValidator* const valToAdopt , GrammarResolver* const grammarResolver , MemoryManager* const manager) { return new (manager) IGXMLScanner(valToAdopt, grammarResolver, manager); } XMLScanner* XMLScannerResolver::resolveScanner( const XMLCh* const scannerName , XMLValidator* const valToAdopt , GrammarResolver* const grammarResolver , MemoryManager* const manager) { if (XMLString::equals(scannerName, XMLUni::fgWFXMLScanner)) return new (manager) WFXMLScanner(valToAdopt, grammarResolver, manager); else if (XMLString::equals(scannerName, XMLUni::fgIGXMLScanner)) return new (manager) IGXMLScanner(valToAdopt, grammarResolver, manager); else if (XMLString::equals(scannerName, XMLUni::fgSGXMLScanner)) return new (manager) SGXMLScanner(valToAdopt, grammarResolver, manager); else if (XMLString::equals(scannerName, XMLUni::fgDGXMLScanner)) return new (manager) DGXMLScanner(valToAdopt, grammarResolver, manager); // REVISIT: throw an exception or return a default one? return 0; } XMLScanner* XMLScannerResolver::resolveScanner( const XMLCh* const scannerName , XMLDocumentHandler* const docHandler , DocTypeHandler* const docTypeHandler , XMLEntityHandler* const entityHandler , XMLErrorReporter* const errReporter , XMLValidator* const valToAdopt , GrammarResolver* const grammarResolver , MemoryManager* const manager) { if (XMLString::equals(scannerName, XMLUni::fgWFXMLScanner)) return new (manager) WFXMLScanner(docHandler, docTypeHandler, entityHandler, errReporter, valToAdopt, grammarResolver, manager); else if (XMLString::equals(scannerName, XMLUni::fgIGXMLScanner)) return new (manager) IGXMLScanner(docHandler, docTypeHandler, entityHandler, errReporter, valToAdopt, grammarResolver, manager); else if (XMLString::equals(scannerName, XMLUni::fgSGXMLScanner)) return new (manager) SGXMLScanner(docHandler, docTypeHandler, entityHandler, errReporter, valToAdopt, grammarResolver, manager); else if (XMLString::equals(scannerName, XMLUni::fgDGXMLScanner)) return new (manager) DGXMLScanner(docHandler, docTypeHandler, entityHandler, errReporter, valToAdopt, grammarResolver, manager); // REVISIT: throw an exception or return a default one? return 0; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/internal/WFXMLScanner.cpp0000644000175000017500000021552411274550527021236 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: WFXMLScanner.cpp 833045 2009-11-05 13:21:27Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // WFXMLScanner: Constructors and Destructor // --------------------------------------------------------------------------- typedef JanitorMemFunCall CleanupType; typedef JanitorMemFunCall ReaderMgrResetType; WFXMLScanner::WFXMLScanner( XMLValidator* const valToAdopt , GrammarResolver* const grammarResolver , MemoryManager* const manager) : XMLScanner(valToAdopt, grammarResolver, manager) , fElementIndex(0) , fElements(0) , fEntityTable(0) , fAttrNameHashList(0) , fAttrNSList(0) , fElementLookup(0) { CleanupType cleanup(this, &WFXMLScanner::cleanUp); try { commonInit(); } catch(const OutOfMemoryException&) { // Don't cleanup when out of memory, since executing the // code can cause problems. cleanup.release(); throw; } cleanup.release(); } WFXMLScanner::WFXMLScanner( XMLDocumentHandler* const docHandler , DocTypeHandler* const docTypeHandler , XMLEntityHandler* const entityHandler , XMLErrorReporter* const errHandler , XMLValidator* const valToAdopt , GrammarResolver* const grammarResolver , MemoryManager* const manager) : XMLScanner(docHandler, docTypeHandler, entityHandler, errHandler, valToAdopt, grammarResolver, manager) , fElementIndex(0) , fElements(0) , fEntityTable(0) , fAttrNameHashList(0) , fAttrNSList(0) , fElementLookup(0) { CleanupType cleanup(this, &WFXMLScanner::cleanUp); try { commonInit(); } catch(const OutOfMemoryException&) { // Don't cleanup when out of memory, since executing the // code can cause problems. cleanup.release(); throw; } cleanup.release(); } WFXMLScanner::~WFXMLScanner() { cleanUp(); } // --------------------------------------------------------------------------- // XMLScanner: Getter methods // --------------------------------------------------------------------------- NameIdPool* WFXMLScanner::getEntityDeclPool() { return 0; } const NameIdPool* WFXMLScanner::getEntityDeclPool() const { return 0; } // --------------------------------------------------------------------------- // WFXMLScanner: Main entry point to scan a document // --------------------------------------------------------------------------- void WFXMLScanner::scanDocument(const InputSource& src) { // Bump up the sequence id for this parser instance. This will invalidate // any previous progressive scan tokens. fSequenceId++; ReaderMgrResetType resetReaderMgr(&fReaderMgr, &ReaderMgr::reset); try { // Reset the scanner and its plugged in stuff for a new run. This // resets all the data structures, creates the initial reader and // pushes it on the stack, and sets up the base document path. scanReset(src); // If we have a document handler, then call the start document if (fDocHandler) fDocHandler->startDocument(); // Scan the prolog part, which is everything before the root element // including the DTD subsets. scanProlog(); // If we got to the end of input, then its not a valid XML file. // Else, go on to scan the content. if (fReaderMgr.atEOF()) { emitError(XMLErrs::EmptyMainEntity); } else { // Scan content, and tell it its not an external entity if (scanContent()) { // That went ok, so scan for any miscellaneous stuff if (!fReaderMgr.atEOF()) scanMiscellaneous(); } } // If we have a document handler, then call the end document if (fDocHandler) fDocHandler->endDocument(); } // NOTE: // // In all of the error processing below, the emitError() call MUST come // before the flush of the reader mgr, or it will fail because it tries // to find out the position in the XML source of the error. catch(const XMLErrs::Codes) { // This is a 'first failure' exception, so fall through } catch(const XMLValid::Codes) { // This is a 'first fatal error' type exit, so fall through } catch(const XMLException& excToCatch) { // Emit the error and catch any user exception thrown from here. Make // sure in all cases we flush the reader manager. fInException = true; try { if (excToCatch.getErrorType() == XMLErrorReporter::ErrType_Warning) emitError ( XMLErrs::XMLException_Warning , excToCatch.getCode() , excToCatch.getMessage() ); else if (excToCatch.getErrorType() >= XMLErrorReporter::ErrType_Fatal) emitError ( XMLErrs::XMLException_Fatal , excToCatch.getCode() , excToCatch.getMessage() ); else emitError ( XMLErrs::XMLException_Error , excToCatch.getCode() , excToCatch.getMessage() ); } catch(const OutOfMemoryException&) { // This is a special case for out-of-memory // conditions, because resetting the ReaderMgr // can be problematic. resetReaderMgr.release(); throw; } } catch(const OutOfMemoryException&) { // This is a special case for out-of-memory // conditions, because resetting the ReaderMgr // can be problematic. resetReaderMgr.release(); throw; } } bool WFXMLScanner::scanNext(XMLPScanToken& token) { // Make sure this token is still legal if (!isLegalToken(token)) ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Scan_BadPScanToken, fMemoryManager); // Find the next token and remember the reader id XMLSize_t orgReader; XMLTokens curToken; bool retVal = true; ReaderMgrResetType resetReaderMgr(&fReaderMgr, &ReaderMgr::reset); try { while (true) { // We have to handle any end of entity exceptions that happen here. // We could be at the end of X nested entities, each of which will // generate an end of entity exception as we try to move forward. try { curToken = senseNextToken(orgReader); break; } catch(const EndOfEntityException& toCatch) { // Send an end of entity reference event if (fDocHandler) fDocHandler->endEntityReference(toCatch.getEntity()); } } if (curToken == Token_CharData) { scanCharData(fCDataBuf); } else if (curToken == Token_EOF) { if (!fElemStack.isEmpty()) { const ElemStack::StackElem* topElem = fElemStack.popTop(); emitError ( XMLErrs::EndedWithTagsOnStack , topElem->fThisElement->getFullName() ); } retVal = false; } else { // Its some sort of markup bool gotData = true; switch(curToken) { case Token_CData : // Make sure we are within content if (fElemStack.isEmpty()) emitError(XMLErrs::CDATAOutsideOfContent); scanCDSection(); break; case Token_Comment : scanComment(); break; case Token_EndTag : scanEndTag(gotData); break; case Token_PI : scanPI(); break; case Token_StartTag : if (fDoNamespaces) scanStartTagNS(gotData); else scanStartTag(gotData); break; default : fReaderMgr.skipToChar(chOpenAngle); break; } if (orgReader != fReaderMgr.getCurrentReaderNum()) emitError(XMLErrs::PartialMarkupInEntity); // If we hit the end, then do the miscellaneous part if (!gotData) { // That went ok, so scan for any miscellaneous stuff scanMiscellaneous(); if (fDocHandler) fDocHandler->endDocument(); } } } // NOTE: // // In all of the error processing below, the emitError() call MUST come // before the flush of the reader mgr, or it will fail because it tries // to find out the position in the XML source of the error. catch(const XMLErrs::Codes) { // This is a 'first failure' exception, so return failure retVal = false; } catch(const XMLValid::Codes) { // This is a 'first fatal error' type exit, so return failure retVal = false; } catch(const XMLException& excToCatch) { // Emit the error and catch any user exception thrown from here. Make // sure in all cases we flush the reader manager. fInException = true; try { if (excToCatch.getErrorType() == XMLErrorReporter::ErrType_Warning) emitError ( XMLErrs::XMLException_Warning , excToCatch.getCode() , excToCatch.getMessage() ); else if (excToCatch.getErrorType() >= XMLErrorReporter::ErrType_Fatal) emitError ( XMLErrs::XMLException_Fatal , excToCatch.getCode() , excToCatch.getMessage() ); else emitError ( XMLErrs::XMLException_Error , excToCatch.getCode() , excToCatch.getMessage() ); } catch(const OutOfMemoryException&) { // This is a special case for out-of-memory // conditions, because resetting the ReaderMgr // can be problematic. resetReaderMgr.release(); throw; } // Return failure retVal = false; } catch(const OutOfMemoryException&) { throw; } // If we are not at the end, release the object that will // reset the ReaderMgr. if (retVal) resetReaderMgr.release(); return retVal; } // --------------------------------------------------------------------------- // WFXMLScanner: Private helper methods. // --------------------------------------------------------------------------- // This method handles the common initialization, to avoid having to do // it redundantly in multiple constructors. void WFXMLScanner::commonInit() { fEntityTable = new (fMemoryManager) ValueHashTableOf(11, fMemoryManager); fAttrNameHashList = new (fMemoryManager)ValueVectorOf(16, fMemoryManager); fAttrNSList = new (fMemoryManager) ValueVectorOf(8, fMemoryManager); fElements = new (fMemoryManager) RefVectorOf(32, true, fMemoryManager); fElementLookup = new (fMemoryManager) RefHashTableOf(109, false, fMemoryManager); // Add the default entity entries for the character refs that must always // be present. fEntityTable->put((void*) XMLUni::fgAmp, chAmpersand); fEntityTable->put((void*) XMLUni::fgLT, chOpenAngle); fEntityTable->put((void*) XMLUni::fgGT, chCloseAngle); fEntityTable->put((void*) XMLUni::fgQuot, chDoubleQuote); fEntityTable->put((void*) XMLUni::fgApos, chSingleQuote); } void WFXMLScanner::cleanUp() { delete fEntityTable; delete fAttrNameHashList; delete fAttrNSList; delete fElementLookup; delete fElements; } // This method will reset the scanner data structures, and related plugged // in stuff, for a new scan session. We get the input source for the primary // XML entity, create the reader for it, and push it on the stack so that // upon successful return from here we are ready to go. void WFXMLScanner::scanReset(const InputSource& src) { // For all installed handlers, send reset events. This gives them // a chance to flush any cached data. if (fDocHandler) fDocHandler->resetDocument(); if (fEntityHandler) fEntityHandler->resetEntities(); if (fErrorReporter) fErrorReporter->resetErrors(); // Reset the element stack, and give it the latest ids for the special // URIs it has to know about. fElemStack.reset ( fEmptyNamespaceId , fUnknownNamespaceId , fXMLNamespaceId , fXMLNSNamespaceId ); // Reset some status flags fInException = false; fStandalone = false; fErrorCount = 0; fHasNoDTD = true; fElementIndex = 0; // Reset elements lookup table fElementLookup->removeAll(); // Handle the creation of the XML reader object for this input source. // This will provide us with transcoding and basic lexing services. XMLReader* newReader = fReaderMgr.createReader ( src , true , XMLReader::RefFrom_NonLiteral , XMLReader::Type_General , XMLReader::Source_External , fCalculateSrcOfs , fLowWaterMark ); if (!newReader) { if (src.getIssueFatalErrorIfNotFound()) ThrowXMLwithMemMgr1(RuntimeException, XMLExcepts::Scan_CouldNotOpenSource, src.getSystemId(), fMemoryManager); else ThrowXMLwithMemMgr1(RuntimeException, XMLExcepts::Scan_CouldNotOpenSource_Warning, src.getSystemId(), fMemoryManager); } // Push this read onto the reader manager fReaderMgr.pushReader(newReader, 0); // and reset security-related things if necessary: if(fSecurityManager != 0) { fEntityExpansionLimit = fSecurityManager->getEntityExpansionLimit(); fEntityExpansionCount = 0; } } // This method is called between markup in content. It scans for character // data that is sent to the document handler. It watches for any markup // characters that would indicate that the character data has ended. It also // handles expansion of general and character entities. // // sendData() is a local static helper for this method which handles some // code that must be done in three different places here. void WFXMLScanner::sendCharData(XMLBuffer& toSend) { // If no data in the buffer, then nothing to do if (toSend.isEmpty()) return; // Always assume its just char data if not validating if (fDocHandler) fDocHandler->docCharacters(toSend.getRawBuffer(), toSend.getLen(), false); // Reset buffer toSend.reset(); } // --------------------------------------------------------------------------- // WFXMLScanner: Private scanning methods // --------------------------------------------------------------------------- // This method will kick off the scanning of the primary content of the // document, i.e. the elements. bool WFXMLScanner::scanContent() { // Go into a loop until we hit the end of the root element, or we fall // out because there is no root element. // // We have to do kind of a deeply nested double loop here in order to // avoid doing the setup/teardown of the exception handler on each // round. Doing it this way we only do it when an exception actually // occurs. bool gotData = true; bool inMarkup = false; while (gotData) { try { while (gotData) { // Sense what the next top level token is. According to what // this tells us, we will call something to handle that kind // of thing. XMLSize_t orgReader; const XMLTokens curToken = senseNextToken(orgReader); // Handle character data and end of file specially. Char data // is not markup so we don't want to handle it in the loop // below. if (curToken == Token_CharData) { // Scan the character data and call appropriate events. Let // him use our local character data buffer for efficiency. scanCharData(fCDataBuf); continue; } else if (curToken == Token_EOF) { // The element stack better be empty at this point or we // ended prematurely before all elements were closed. if (!fElemStack.isEmpty()) { const ElemStack::StackElem* topElem = fElemStack.popTop(); emitError ( XMLErrs::EndedWithTagsOnStack , topElem->fThisElement->getFullName() ); } // Its the end of file, so clear the got data flag gotData = false; continue; } // We are in some sort of markup now inMarkup = true; // According to the token we got, call the appropriate // scanning method. switch(curToken) { case Token_CData : // Make sure we are within content if (fElemStack.isEmpty()) emitError(XMLErrs::CDATAOutsideOfContent); scanCDSection(); break; case Token_Comment : scanComment(); break; case Token_EndTag : scanEndTag(gotData); break; case Token_PI : scanPI(); break; case Token_StartTag : if (fDoNamespaces) scanStartTagNS(gotData); else scanStartTag(gotData); break; default : fReaderMgr.skipToChar(chOpenAngle); break; } if (orgReader != fReaderMgr.getCurrentReaderNum()) emitError(XMLErrs::PartialMarkupInEntity); // And we are back out of markup again inMarkup = false; } } catch(const EndOfEntityException& toCatch) { // If we were in some markup when this happened, then its a // partial markup error. if (inMarkup) emitError(XMLErrs::PartialMarkupInEntity); // Send an end of entity reference event if (fDocHandler) fDocHandler->endEntityReference(toCatch.getEntity()); inMarkup = false; } } // It went ok, so return success return true; } void WFXMLScanner::scanEndTag(bool& gotData) { // Assume we will still have data until proven otherwise. It will only // ever be false if this is the end of the root element. gotData = true; // Check if the element stack is empty. If so, then this is an unbalanced // element (i.e. more ends than starts, perhaps because of bad text // causing one to be skipped.) if (fElemStack.isEmpty()) { emitError(XMLErrs::MoreEndThanStartTags); fReaderMgr.skipPastChar(chCloseAngle); ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Scan_UnbalancedStartEnd, fMemoryManager); } // Pop the stack of the element we are supposed to be ending. Remember // that we don't own this. The stack just keeps them and reuses them. unsigned int uriId = (fDoNamespaces) ? fElemStack.getCurrentURI() : fEmptyNamespaceId; const ElemStack::StackElem* topElem = fElemStack.popTop(); // See if it was the root element, to avoid multiple calls below const bool isRoot = fElemStack.isEmpty(); // Make sure that its the end of the element that we expect if (!fReaderMgr.skippedStringLong(topElem->fThisElement->getFullName())) { emitError ( XMLErrs::ExpectedEndOfTagX , topElem->fThisElement->getFullName() ); fReaderMgr.skipPastChar(chCloseAngle); return; } // Make sure we are back on the same reader as where we started if (topElem->fReaderNum != fReaderMgr.getCurrentReaderNum()) emitError(XMLErrs::PartialTagMarkupError); // Skip optional whitespace fReaderMgr.skipPastSpaces(); // Make sure we find the closing bracket if (!fReaderMgr.skippedChar(chCloseAngle)) { emitError ( XMLErrs::UnterminatedEndTag , topElem->fThisElement->getFullName() ); } // If we have a doc handler, tell it about the end tag if (fDocHandler) { fDocHandler->endElement ( *topElem->fThisElement , uriId , isRoot , topElem->fThisElement->getElementName()->getPrefix() ); } // If this was the root, then done with content gotData = !isRoot; } void WFXMLScanner::scanDocTypeDecl() { // Just skips over it // REVISIT: Should we issue a warning static const XMLCh doctypeIE[] = { chOpenSquare, chCloseAngle, chNull }; XMLCh nextCh = fReaderMgr.skipUntilIn(doctypeIE); if (nextCh == chOpenSquare) fReaderMgr.skipPastChar(chCloseSquare); fReaderMgr.skipPastChar(chCloseAngle); } bool WFXMLScanner::scanStartTag(bool& gotData) { // Assume we will still have data until proven otherwise. It will only // ever be false if this is the root and its empty. gotData = true; // Get the QName. In this case, we are not doing namespaces, so we just // use it as is and don't have to break it into parts. if (!fReaderMgr.getName(fQNameBuf)) { emitError(XMLErrs::ExpectedElementName); fReaderMgr.skipToChar(chOpenAngle); return false; } // Assume it won't be an empty tag bool isEmpty = false; // See if its the root element const bool isRoot = fElemStack.isEmpty(); // Lets try to look up the element const XMLCh* qnameRawBuf = fQNameBuf.getRawBuffer(); XMLElementDecl* elemDecl = fElementLookup->get(qnameRawBuf); if (!elemDecl) { if (fElementIndex < fElements->size()) { elemDecl = fElements->elementAt(fElementIndex); } else { elemDecl = new (fGrammarPoolMemoryManager) DTDElementDecl ( fGrammarPoolMemoryManager ); fElements->addElement(elemDecl); } elemDecl->setElementName(XMLUni::fgZeroLenString, qnameRawBuf, fEmptyNamespaceId); fElementLookup->put((void*)elemDecl->getFullName(), elemDecl); fElementIndex++; } // Expand the element stack and add the new element fElemStack.addLevel(elemDecl, fReaderMgr.getCurrentReaderNum()); // Skip any whitespace after the name fReaderMgr.skipPastSpaces(); // We loop until we either see a /> or >, handling attribute/value // pairs until we get there. XMLSize_t attCount = 0; XMLSize_t curAttListSize = fAttrList->size(); while (true) { // And get the next non-space character XMLCh nextCh = fReaderMgr.peekNextChar(); // If the next character is not a slash or closed angle bracket, // then it must be whitespace, since whitespace is required // between the end of the last attribute and the name of the next // one. if (attCount) { if ((nextCh != chForwardSlash) && (nextCh != chCloseAngle)) { bool bFoundSpace; fReaderMgr.skipPastSpaces(bFoundSpace); if (!bFoundSpace) { // Emit the error but keep on going emitError(XMLErrs::ExpectedWhitespace); } // Ok, peek another char nextCh = fReaderMgr.peekNextChar(); } } // Ok, here we first check for any of the special case characters. // If its not one, then we do the normal case processing, which // assumes that we've hit an attribute value, Otherwise, we do all // the special case checks. if (!fReaderMgr.getCurrentReader()->isSpecialStartTagChar(nextCh)) { // Assume its going to be an attribute, so get a name from // the input. if (!fReaderMgr.getName(fAttNameBuf)) { emitError(XMLErrs::ExpectedAttrName); fReaderMgr.skipPastChar(chCloseAngle); return false; } // And next must be an equal sign if (!scanEq()) { static const XMLCh tmpList[] = { chSingleQuote, chDoubleQuote, chCloseAngle , chOpenAngle, chForwardSlash, chNull }; emitError(XMLErrs::ExpectedEqSign); // Try to sync back up by skipping forward until we either // hit something meaningful. const XMLCh chFound = fReaderMgr.skipUntilInOrWS(tmpList); if ((chFound == chCloseAngle) || (chFound == chForwardSlash)) { // Jump back to top for normal processing of these continue; } else if ((chFound == chSingleQuote) || (chFound == chDoubleQuote) || fReaderMgr.getCurrentReader()->isWhitespace(chFound)) { // Just fall through assuming that the value is to follow } else if (chFound == chOpenAngle) { // Assume a malformed tag and that new one is starting emitError(XMLErrs::UnterminatedStartTag, qnameRawBuf); return false; } else { // Something went really wrong return false; } } // See if this attribute is declared more than one for this element. const XMLCh* attNameRawBuf = fAttNameBuf.getRawBuffer(); XMLSize_t attNameHash = XMLString::hash(attNameRawBuf, 109); if (attCount) { for (XMLSize_t k=0; k < attCount; k++) { if (fAttrNameHashList->elementAt(k) == attNameHash) { if ( XMLString::equals ( fAttrList->elementAt(k)->getName() , attNameRawBuf ) ) { emitError ( XMLErrs::AttrAlreadyUsedInSTag , attNameRawBuf , qnameRawBuf ); break; } } } } // Skip any whitespace before the value and then scan the att // value. This will come back normalized with entity refs and // char refs expanded. fReaderMgr.skipPastSpaces(); if (!scanAttValue(attNameRawBuf, fAttValueBuf)) { static const XMLCh tmpList[] = { chCloseAngle, chOpenAngle, chForwardSlash, chNull }; emitError(XMLErrs::ExpectedAttrValue); // It failed, so lets try to get synced back up. We skip // forward until we find some whitespace or one of the // chars in our list. const XMLCh chFound = fReaderMgr.skipUntilInOrWS(tmpList); if ((chFound == chCloseAngle) || (chFound == chForwardSlash) || fReaderMgr.getCurrentReader()->isWhitespace(chFound)) { // Just fall through and process this attribute, though // the value will be "". } else if (chFound == chOpenAngle) { // Assume a malformed tag and that new one is starting emitError(XMLErrs::UnterminatedStartTag, qnameRawBuf); return false; } else { // Something went really wrong return false; } } // Add this attribute to the attribute list that we use to // pass them to the handler. We reuse its existing elements // but expand it as required. XMLAttr* curAtt; if (attCount >= curAttListSize) { curAtt = new (fMemoryManager) XMLAttr ( 0 , attNameRawBuf , XMLUni::fgZeroLenString , fAttValueBuf.getRawBuffer() , XMLAttDef::CData , true , fMemoryManager ); fAttrList->addElement(curAtt); fAttrNameHashList->addElement(attNameHash); } else { curAtt = fAttrList->elementAt(attCount); curAtt->set ( 0 , attNameRawBuf , XMLUni::fgZeroLenString , fAttValueBuf.getRawBuffer() ); curAtt->setSpecified(true); fAttrNameHashList->setElementAt(attNameHash, attCount); } attCount++; // And jump back to the top of the loop continue; } // It was some special case character so do all of the checks and // deal with it. if (!nextCh) ThrowXMLwithMemMgr(UnexpectedEOFException, XMLExcepts::Gen_UnexpectedEOF, fMemoryManager); if (nextCh == chForwardSlash) { fReaderMgr.getNextChar(); isEmpty = true; if (!fReaderMgr.skippedChar(chCloseAngle)) emitError(XMLErrs::UnterminatedStartTag, qnameRawBuf); break; } else if (nextCh == chCloseAngle) { fReaderMgr.getNextChar(); break; } else if (nextCh == chOpenAngle) { // Check for this one specially, since its going to be common // and it is kind of auto-recovering since we've already hit the // next open bracket, which is what we would have seeked to (and // skipped this whole tag.) emitError(XMLErrs::UnterminatedStartTag, elemDecl->getFullName()); break; } else if ((nextCh == chSingleQuote) || (nextCh == chDoubleQuote)) { // Check for this one specially, which is probably a missing // attribute name, e.g. ="value". Just issue expected name // error and eat the quoted string, then jump back to the // top again. emitError(XMLErrs::ExpectedAttrName); fReaderMgr.getNextChar(); fReaderMgr.skipQuotedString(nextCh); fReaderMgr.skipPastSpaces(); continue; } } // If empty, validate content right now if we are validating and then // pop the element stack top. Else, we have to update the current stack // top's namespace mapping elements. if (isEmpty) { // Pop the element stack back off since it'll never be used now fElemStack.popTop(); // If the elem stack is empty, then it was an empty root if (isRoot) gotData = false; } // If we have a document handler, then tell it about this start tag. We // don't have any URI id to send along, so send fEmptyNamespaceId. We also do not send // any prefix since its just one big name if we are not doing namespaces. if (fDocHandler) { fDocHandler->startElement ( *elemDecl , fEmptyNamespaceId , 0 , *fAttrList , attCount , isEmpty , isRoot ); } return true; } // This method is called to scan a start tag when we are processing // namespaces. There are two different versions of this method, one for // namespace aware processing an done for non-namespace aware processing. // // This method is called after we've scanned the < of a start tag. So we // have to get the element name, then scan the attributes, after which // we are either going to see >, />, or attributes followed by one of those // sequences. bool WFXMLScanner::scanStartTagNS(bool& gotData) { // Assume we will still have data until proven otherwise. It will only // ever be false if this is the root and its empty. gotData = true; // The current position is after the open bracket, so we need to read in // in the element name. int colonPosition; if (!fReaderMgr.getQName(fQNameBuf, &colonPosition)) { if (fQNameBuf.isEmpty()) emitError(XMLErrs::ExpectedElementName); else emitError(XMLErrs::InvalidElementName, fQNameBuf.getRawBuffer()); fReaderMgr.skipToChar(chOpenAngle); return false; } // See if its the root element const bool isRoot = fElemStack.isEmpty(); // Assume it won't be an empty tag bool isEmpty = false; // Skip any whitespace after the name fReaderMgr.skipPastSpaces(); // Lets try to look up the element const XMLCh* qnameRawBuf = fQNameBuf.getRawBuffer(); XMLElementDecl* elemDecl = fElementLookup->get(qnameRawBuf); if (!elemDecl) { if (!XMLString::compareNString(qnameRawBuf, XMLUni::fgXMLNSColonString, 6)) emitError(XMLErrs::NoXMLNSAsElementPrefix, qnameRawBuf); if (fElementIndex < fElements->size()) { elemDecl = fElements->elementAt(fElementIndex); } else { elemDecl = new (fGrammarPoolMemoryManager) DTDElementDecl ( fGrammarPoolMemoryManager ); fElements->addElement(elemDecl); } elemDecl->setElementName(qnameRawBuf, fEmptyNamespaceId); fElementLookup->put((void*)elemDecl->getFullName(), elemDecl); fElementIndex++; } // Expand the element stack and add the new element fElemStack.addLevel(elemDecl, fReaderMgr.getCurrentReaderNum()); // reset NS attribute list fAttrNSList->removeAllElements(); // We loop until we either see a /> or >, handling attribute/value // pairs until we get there. XMLSize_t attCount = 0; XMLSize_t curAttListSize = fAttrList->size(); while (true) { // And get the next non-space character XMLCh nextCh = fReaderMgr.peekNextChar(); // If the next character is not a slash or closed angle bracket, // then it must be whitespace, since whitespace is required // between the end of the last attribute and the name of the next // one. if (attCount) { if ((nextCh != chForwardSlash) && (nextCh != chCloseAngle)) { bool bFoundSpace; fReaderMgr.skipPastSpaces(bFoundSpace); if (!bFoundSpace) { // Emit the error but keep on going emitError(XMLErrs::ExpectedWhitespace); } // Ok, peek another char nextCh = fReaderMgr.peekNextChar(); } } // Ok, here we first check for any of the special case characters. // If its not one, then we do the normal case processing, which // assumes that we've hit an attribute value, Otherwise, we do all // the special case checks. if (!fReaderMgr.getCurrentReader()->isSpecialStartTagChar(nextCh)) { // Assume its going to be an attribute, so get a name from // the input. int colonPosition; if (!fReaderMgr.getQName(fAttNameBuf, &colonPosition)) { if (fAttNameBuf.isEmpty()) emitError(XMLErrs::ExpectedAttrName); else emitError(XMLErrs::InvalidAttrName, fAttNameBuf.getRawBuffer()); fReaderMgr.skipPastChar(chCloseAngle); return false; } // And next must be an equal sign if (!scanEq()) { static const XMLCh tmpList[] = { chSingleQuote, chDoubleQuote, chCloseAngle , chOpenAngle, chForwardSlash, chNull }; emitError(XMLErrs::ExpectedEqSign); // Try to sync back up by skipping forward until we either // hit something meaningful. const XMLCh chFound = fReaderMgr.skipUntilInOrWS(tmpList); if ((chFound == chCloseAngle) || (chFound == chForwardSlash)) { // Jump back to top for normal processing of these continue; } else if ((chFound == chSingleQuote) || (chFound == chDoubleQuote) || fReaderMgr.getCurrentReader()->isWhitespace(chFound)) { // Just fall through assuming that the value is to follow } else if (chFound == chOpenAngle) { // Assume a malformed tag and that new one is starting emitError(XMLErrs::UnterminatedStartTag, qnameRawBuf); return false; } else { // Something went really wrong return false; } } // See if this attribute is declared more than one for this element. const XMLCh* attNameRawBuf = fAttNameBuf.getRawBuffer(); XMLSize_t attNameHash = XMLString::hash(attNameRawBuf, 109); if (attCount) { for (XMLSize_t k=0; k < attCount; k++) { if (fAttrNameHashList->elementAt(k) == attNameHash) { if (XMLString::equals( fAttrList->elementAt(k)->getQName() , attNameRawBuf)) { emitError ( XMLErrs::AttrAlreadyUsedInSTag , attNameRawBuf , qnameRawBuf ); break; } } } } // Skip any whitespace before the value and then scan the att // value. This will come back normalized with entity refs and // char refs expanded. fReaderMgr.skipPastSpaces(); if (!scanAttValue(attNameRawBuf, fAttValueBuf)) { static const XMLCh tmpList[] = { chCloseAngle, chOpenAngle, chForwardSlash, chNull }; emitError(XMLErrs::ExpectedAttrValue); // It failed, so lets try to get synced back up. We skip // forward until we find some whitespace or one of the // chars in our list. const XMLCh chFound = fReaderMgr.skipUntilInOrWS(tmpList); if ((chFound == chCloseAngle) || (chFound == chForwardSlash) || fReaderMgr.getCurrentReader()->isWhitespace(chFound)) { // Just fall through and process this attribute, though // the value will be "". } else if (chFound == chOpenAngle) { // Assume a malformed tag and that new one is starting emitError(XMLErrs::UnterminatedStartTag, qnameRawBuf); return false; } else { // Something went really wrong return false; } } // Add this attribute to the attribute list that we use to // pass them to the handler. We reuse its existing elements // but expand it as required. const XMLCh* attValueRawBuf = fAttValueBuf.getRawBuffer(); XMLAttr* curAtt = 0; if (attCount >= curAttListSize) { curAtt = new (fMemoryManager) XMLAttr ( fEmptyNamespaceId , attNameRawBuf , attValueRawBuf , XMLAttDef::CData , true , fMemoryManager ); fAttrList->addElement(curAtt); fAttrNameHashList->addElement(attNameHash); } else { curAtt = fAttrList->elementAt(attCount); curAtt->set ( fEmptyNamespaceId , attNameRawBuf , attValueRawBuf ); curAtt->setSpecified(true); fAttrNameHashList->setElementAt(attNameHash, attCount); } // Map prefix to namespace const XMLCh* attPrefix = curAtt->getPrefix(); const XMLCh* attLocalName = curAtt->getName(); const XMLCh* namespaceURI = fAttValueBuf.getRawBuffer(); if (attPrefix && *attPrefix) { if (XMLString::equals(attPrefix, XMLUni::fgXMLString)) { curAtt->setURIId(fXMLNamespaceId); } else if (XMLString::equals(attPrefix, XMLUni::fgXMLNSString)) { if (XMLString::equals(attLocalName, XMLUni::fgXMLNSString)) emitError(XMLErrs::NoUseOfxmlnsAsPrefix); else if (XMLString::equals(attLocalName, XMLUni::fgXMLString)) { if (!XMLString::equals(namespaceURI, XMLUni::fgXMLURIName)) emitError(XMLErrs::PrefixXMLNotMatchXMLURI); } if (!namespaceURI) emitError(XMLErrs::NoEmptyStrNamespace, attNameRawBuf); else if(!*namespaceURI && fXMLVersion == XMLReader::XMLV1_0) emitError(XMLErrs::NoEmptyStrNamespace, attNameRawBuf); fElemStack.addPrefix ( attLocalName , fURIStringPool->addOrFind(namespaceURI) ); curAtt->setURIId(fXMLNSNamespaceId); } else { fAttrNSList->addElement(curAtt); } } else { if (XMLString::equals(XMLUni::fgXMLNSString, attLocalName)) { if (XMLString::equals(namespaceURI, XMLUni::fgXMLNSURIName)) emitError(XMLErrs::NoUseOfxmlnsURI); else if (XMLString::equals(namespaceURI, XMLUni::fgXMLURIName)) emitError(XMLErrs::XMLURINotMatchXMLPrefix); fElemStack.addPrefix ( XMLUni::fgZeroLenString , fURIStringPool->addOrFind(namespaceURI) ); } } // increment attribute count attCount++; // And jump back to the top of the loop continue; } // It was some special case character so do all of the checks and // deal with it. if (!nextCh) ThrowXMLwithMemMgr(UnexpectedEOFException, XMLExcepts::Gen_UnexpectedEOF, fMemoryManager); if (nextCh == chForwardSlash) { fReaderMgr.getNextChar(); isEmpty = true; if (!fReaderMgr.skippedChar(chCloseAngle)) emitError(XMLErrs::UnterminatedStartTag, qnameRawBuf); break; } else if (nextCh == chCloseAngle) { fReaderMgr.getNextChar(); break; } else if (nextCh == chOpenAngle) { // Check for this one specially, since its going to be common // and it is kind of auto-recovering since we've already hit the // next open bracket, which is what we would have seeked to (and // skipped this whole tag.) emitError(XMLErrs::UnterminatedStartTag, qnameRawBuf); break; } else if ((nextCh == chSingleQuote) || (nextCh == chDoubleQuote)) { // Check for this one specially, which is probably a missing // attribute name, e.g. ="value". Just issue expected name // error and eat the quoted string, then jump back to the // top again. emitError(XMLErrs::ExpectedAttrName); fReaderMgr.getNextChar(); fReaderMgr.skipQuotedString(nextCh); fReaderMgr.skipPastSpaces(); continue; } } // Handle provided attributes that we did not map their prefixes for (unsigned int i=0; i < fAttrNSList->size(); i++) { XMLAttr* providedAttr = fAttrNSList->elementAt(i); providedAttr->setURIId ( resolvePrefix ( providedAttr->getPrefix(), ElemStack::Mode_Attribute ) ); } if(attCount) { // // Decide if to use hash table to do duplicate checking // bool toUseHashTable = false; setAttrDupChkRegistry(attCount, toUseHashTable); // check for duplicate namespace attributes: // by checking for qualified names with the same local part and with prefixes // which have been bound to namespace names that are identical. XMLAttr* loopAttr; XMLAttr* curAtt; for (unsigned int attrIndex=0; attrIndex < attCount-1; attrIndex++) { loopAttr = fAttrList->elementAt(attrIndex); if (!toUseHashTable) { for (unsigned int curAttrIndex = attrIndex+1; curAttrIndex < attCount; curAttrIndex++) { curAtt = fAttrList->elementAt(curAttrIndex); if (curAtt->getURIId() == loopAttr->getURIId() && XMLString::equals(curAtt->getName(), loopAttr->getName())) { emitError ( XMLErrs::AttrAlreadyUsedInSTag , curAtt->getName() , elemDecl->getFullName() ); } } } else { if (fAttrDupChkRegistry->containsKey((void*)loopAttr->getName(), loopAttr->getURIId())) { emitError ( XMLErrs::AttrAlreadyUsedInSTag , loopAttr->getName() , elemDecl->getFullName() ); } fAttrDupChkRegistry->put((void*)loopAttr->getName(), loopAttr->getURIId(), loopAttr); } } } // Resolve the qualified name to a URI. unsigned int uriId = resolvePrefix ( elemDecl->getElementName()->getPrefix() , ElemStack::Mode_Element ); // Now we can update the element stack fElemStack.setCurrentURI(uriId); // Tell the document handler about this start tag if (fDocHandler) { fDocHandler->startElement ( *elemDecl , uriId , elemDecl->getElementName()->getPrefix() , *fAttrList , attCount , isEmpty , isRoot ); } // If empty, validate content right now if we are validating and then // pop the element stack top. Else, we have to update the current stack // top's namespace mapping elements. if (isEmpty) { // Pop the element stack back off since it'll never be used now fElemStack.popTop(); // If the elem stack is empty, then it was an empty root if (isRoot) gotData = false; } return true; } // --------------------------------------------------------------------------- // XMLScanner: Private parsing methods // --------------------------------------------------------------------------- bool WFXMLScanner::scanAttValue(const XMLCh* const attrName , XMLBuffer& toFill) { // Reset the target buffer toFill.reset(); // Get the next char which must be a single or double quote XMLCh quoteCh; if (!fReaderMgr.skipIfQuote(quoteCh)) return false; // We have to get the current reader because we have to ignore closing // quotes until we hit the same reader again. const XMLSize_t curReader = fReaderMgr.getCurrentReaderNum(); // Loop until we get the attribute value. Note that we use a double // loop here to avoid the setup/teardown overhead of the exception // handler on every round. XMLCh nextCh; XMLCh secondCh = 0; bool gotLeadingSurrogate = false; bool escaped; while (true) { try { while(true) { nextCh = fReaderMgr.getNextChar(); if (!nextCh) ThrowXMLwithMemMgr(UnexpectedEOFException, XMLExcepts::Gen_UnexpectedEOF, fMemoryManager); // Check for our ending quote in the same entity if (nextCh == quoteCh) { if (curReader == fReaderMgr.getCurrentReaderNum()) return true; // Watch for spillover into a previous entity if (curReader > fReaderMgr.getCurrentReaderNum()) { emitError(XMLErrs::PartialMarkupInEntity); return false; } } // Check for an entity ref now, before we let it affect our // whitespace normalization logic below. We ignore the empty flag // in this one. escaped = false; if (nextCh == chAmpersand) { if (scanEntityRef(true, nextCh, secondCh, escaped) != EntityExp_Returned) { gotLeadingSurrogate = false; continue; } } else if ((nextCh >= 0xD800) && (nextCh <= 0xDBFF)) { // Deal with surrogate pairs // Its a leading surrogate. If we already got one, then // issue an error, else set leading flag to make sure that // we look for a trailing next time. if (gotLeadingSurrogate) { emitError(XMLErrs::Expected2ndSurrogateChar); } else gotLeadingSurrogate = true; } else { // If its a trailing surrogate, make sure that we are // prepared for that. Else, its just a regular char so make // sure that we were not expected a trailing surrogate. if ((nextCh >= 0xDC00) && (nextCh <= 0xDFFF)) { // Its trailing, so make sure we were expecting it if (!gotLeadingSurrogate) emitError(XMLErrs::Unexpected2ndSurrogateChar); } else { // Its just a char, so make sure we were not expecting a // trailing surrogate. if (gotLeadingSurrogate) { emitError(XMLErrs::Expected2ndSurrogateChar); } // Its got to at least be a valid XML character else if (!fReaderMgr.getCurrentReader()->isXMLChar(nextCh)) { XMLCh tmpBuf[9]; XMLString::binToText ( nextCh , tmpBuf , 8 , 16 , fMemoryManager ); emitError(XMLErrs::InvalidCharacterInAttrValue, attrName, tmpBuf); } } gotLeadingSurrogate = false; } // If its not escaped, then make sure its not a < character, which // is not allowed in attribute values. if (!escaped) { if (nextCh == chOpenAngle) emitError(XMLErrs::BracketInAttrValue, attrName); else if (fReaderMgr.getCurrentReader()->isWhitespace(nextCh)) nextCh = chSpace; } // Else add it to the buffer toFill.append(nextCh); if (secondCh) { toFill.append(secondCh); secondCh=0; } } } catch(const EndOfEntityException&) { // Just eat it and continue. gotLeadingSurrogate = false; escaped = false; } } return true; } // This method scans a CDATA section. It collects the character into one // of the temp buffers and calls the document handler, if any, with the // characters. It assumes that the docCharacters ( bbCData.getRawBuffer() , bbCData.getLen() , true ); } // And we are done break; } // Make sure its a valid character. But if we've emitted an error // already, don't bother with the overhead since we've already told // them about it. if (!emittedError) { // Deal with surrogate pairs if ((nextCh >= 0xD800) && (nextCh <= 0xDBFF)) { // Its a leading surrogate. If we already got one, then // issue an error, else set leading flag to make sure that // we look for a trailing next time. if (gotLeadingSurrogate) emitError(XMLErrs::Expected2ndSurrogateChar); else gotLeadingSurrogate = true; } else { // If its a trailing surrogate, make sure that we are // prepared for that. Else, its just a regular char so make // sure that we were not expected a trailing surrogate. if ((nextCh >= 0xDC00) && (nextCh <= 0xDFFF)) { // Its trailing, so make sure we were expecting it if (!gotLeadingSurrogate) emitError(XMLErrs::Unexpected2ndSurrogateChar); } else { // Its just a char, so make sure we were not expecting a // trailing surrogate. if (gotLeadingSurrogate) emitError(XMLErrs::Expected2ndSurrogateChar); // Its got to at least be a valid XML character else if (!fReaderMgr.getCurrentReader()->isXMLChar(nextCh)) { XMLCh tmpBuf[9]; XMLString::binToText ( nextCh , tmpBuf , 8 , 16 , fMemoryManager ); emitError(XMLErrs::InvalidCharacter, tmpBuf); emittedError = true; } } gotLeadingSurrogate = false; } } // Add it to the buffer bbCData.append(nextCh); } } void WFXMLScanner::scanCharData(XMLBuffer& toUse) { // We have to watch for the stupid ]]> sequence, which is illegal in // character data. So this is a little state machine that handles that. enum States { State_Waiting , State_GotOne , State_GotTwo }; // Reset the buffer before we start toUse.reset(); // Turn on the 'throw at end' flag of the reader manager ThrowEOEJanitor jan(&fReaderMgr, true); // In order to be more efficient we have to use kind of a deeply nested // set of blocks here. The outer block puts on a try and catches end of // entity exceptions. The inner loop is the per-character loop. If we // put the try inside the inner loop, it would work but would require // the exception handling code setup/teardown code to be invoked for // each character. XMLCh nextCh; XMLCh secondCh = 0; States curState = State_Waiting; bool escaped = false; bool gotLeadingSurrogate = false; bool notDone = true; while (notDone) { try { while (true) { // Eat through as many plain content characters as possible without // needing special handling. Moving most content characters here, // in this one call, rather than running the overall loop once // per content character, is a speed optimization. if (curState == State_Waiting && !gotLeadingSurrogate) { fReaderMgr.movePlainContentChars(toUse); } // Try to get another char from the source // The code from here on down covers all contengencies, if (!fReaderMgr.getNextCharIfNot(chOpenAngle, nextCh)) { // If we were waiting for a trailing surrogate, its an error if (gotLeadingSurrogate) emitError(XMLErrs::Expected2ndSurrogateChar); notDone = false; break; } // Watch for a reference. Note that the escapement mechanism // is ignored in this content. escaped = false; if (nextCh == chAmpersand) { sendCharData(toUse); // Turn off the throwing at the end of entity during this ThrowEOEJanitor jan(&fReaderMgr, false); if (scanEntityRef(false, nextCh, secondCh, escaped) != EntityExp_Returned) { gotLeadingSurrogate = false; continue; } } else if ((nextCh >= 0xD800) && (nextCh <= 0xDBFF)) { // Deal with surrogate pairs // Its a leading surrogate. If we already got one, then // issue an error, else set leading flag to make sure that // we look for a trailing next time. if (gotLeadingSurrogate) { emitError(XMLErrs::Expected2ndSurrogateChar); } else gotLeadingSurrogate = true; } else { // If its a trailing surrogate, make sure that we are // prepared for that. Else, its just a regular char so make // sure that we were not expected a trailing surrogate. if ((nextCh >= 0xDC00) && (nextCh <= 0xDFFF)) { // Its trailing, so make sure we were expecting it if (!gotLeadingSurrogate) emitError(XMLErrs::Unexpected2ndSurrogateChar); } else { // Its just a char, so make sure we were not expecting a // trailing surrogate. if (gotLeadingSurrogate) { emitError(XMLErrs::Expected2ndSurrogateChar); } // Its got to at least be a valid XML character else if (!fReaderMgr.getCurrentReader()->isXMLChar(nextCh)) { XMLCh tmpBuf[9]; XMLString::binToText ( nextCh , tmpBuf , 8 , 16 , fMemoryManager ); emitError(XMLErrs::InvalidCharacter, tmpBuf); } } gotLeadingSurrogate = false; } // Keep the state machine up to date if (!escaped) { if (nextCh == chCloseSquare) { if (curState == State_Waiting) curState = State_GotOne; else if (curState == State_GotOne) curState = State_GotTwo; } else if (nextCh == chCloseAngle) { if (curState == State_GotTwo) emitError(XMLErrs::BadSequenceInCharData); curState = State_Waiting; } else { curState = State_Waiting; } } else { curState = State_Waiting; } // Add this char to the buffer toUse.append(nextCh); if (secondCh) { toUse.append(secondCh); secondCh=0; } } } catch(const EndOfEntityException& toCatch) { // Some entity ended, so we have to send any accumulated // chars and send an end of entity event. sendCharData(toUse); gotLeadingSurrogate = false; if (fDocHandler) fDocHandler->endEntityReference(toCatch.getEntity()); } } // Send any char data that we accumulated into the buffer sendCharData(toUse); } InputSource* WFXMLScanner::resolveSystemId(const XMLCh* const /*sysId*/ ,const XMLCh* const /*pubId*/) { return 0; } // This method will scan a general/character entity ref. It will either // expand a char ref and return it directly, or push a reader for a general // entity. // // The return value indicates whether the char parameters hold the value // or whether the value was pushed as a reader, or that it failed. // // The escaped flag tells the caller whether the returned parameter resulted // from a character reference, which escapes the character in some cases. It // only makes any difference if the return value indicates the value was // returned directly. XMLScanner::EntityExpRes WFXMLScanner::scanEntityRef(const bool , XMLCh& firstCh , XMLCh& secondCh , bool& escaped) { // Assume no escape secondCh = 0; escaped = false; // We have to insure that its all in one entity const XMLSize_t curReader = fReaderMgr.getCurrentReaderNum(); // If the next char is a pound, then its a character reference and we // need to expand it always. if (fReaderMgr.skippedChar(chPound)) { // Its a character reference, so scan it and get back the numeric // value it represents. if (!scanCharRef(firstCh, secondCh)) return EntityExp_Failed; escaped = true; if (curReader != fReaderMgr.getCurrentReaderNum()) emitError(XMLErrs::PartialMarkupInEntity); return EntityExp_Returned; } // Expand it since its a normal entity ref XMLBufBid bbName(&fBufMgr); if (!fReaderMgr.getName(bbName.getBuffer())) { emitError(XMLErrs::ExpectedEntityRefName); return EntityExp_Failed; } // Next char must be a semi-colon. But if its not, just emit // an error and try to continue. if (!fReaderMgr.skippedChar(chSemiColon)) emitError(XMLErrs::UnterminatedEntityRef, bbName.getRawBuffer()); // Make sure we ended up on the same entity reader as the & char if (curReader != fReaderMgr.getCurrentReaderNum()) emitError(XMLErrs::PartialMarkupInEntity); // Look up the name in the general entity pool // If it does not exist, then obviously an error if (!fEntityTable->containsKey(bbName.getRawBuffer())) { // XML 1.0 Section 4.1 // Well-formedness Constraint for entity not found: // In a document without any DTD, a document with only an internal DTD subset which contains no parameter entity references, // or a document with "standalone='yes'", for an entity reference that does not occur within the external subset // or a parameter entity if (fStandalone || fHasNoDTD) emitError(XMLErrs::EntityNotFound, bbName.getRawBuffer()); return EntityExp_Failed; } // here's where we need to check if there's a SecurityManager, // how many entity references we've had if(fSecurityManager != 0 && ++fEntityExpansionCount > fEntityExpansionLimit) { XMLCh expLimStr[32]; XMLString::sizeToText(fEntityExpansionLimit, expLimStr, 31, 10, fMemoryManager); emitError ( XMLErrs::EntityExpansionLimitExceeded , expLimStr ); // there seems nothing better to be done than to reset the entity expansion counter fEntityExpansionCount = 0; } firstCh = fEntityTable->get(bbName.getRawBuffer()); escaped = true; return EntityExp_Returned; } // --------------------------------------------------------------------------- // WFXMLScanner: Grammar preparsing // --------------------------------------------------------------------------- Grammar* WFXMLScanner::loadGrammar(const InputSource& , const short , const bool) { // REVISIT: emit a warning or throw an exception return 0; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/internal/IGXMLScanner2.cpp0000644000175000017500000042076311350705133021274 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: IGXMLScanner2.cpp 925236 2010-03-19 14:29:47Z borisk $ */ // --------------------------------------------------------------------------- // This file holds some of the grunt work methods of IGXMLScanner.cpp to keep // it a little more readable. // --------------------------------------------------------------------------- // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN inline XMLAttDefList& getAttDefList(bool isSchemaGrammar , ComplexTypeInfo* currType , XMLElementDecl* elemDecl); // --------------------------------------------------------------------------- // IGXMLScanner: Private helper methods // --------------------------------------------------------------------------- // This method is called from scanStartTagNS() to build up the list of // XMLAttr objects that will be passed out in the start tag callout. We // get the key/value pairs from the raw scan of explicitly provided attrs, // which have not been normalized. And we get the element declaration from // which we will get any defaulted or fixed attribute defs and add those // in as well. XMLSize_t IGXMLScanner::buildAttList(const RefVectorOf& providedAttrs , const XMLSize_t attCount , XMLElementDecl* elemDecl , RefVectorOf& toFill) { // If doing DTD's, Ask the element to clear the 'provided' flag on all of the att defs // that it owns, and to return us a boolean indicating whether it has // any defs. If schemas are being validated, the complexType // at the top of the SchemaValidator's stack will // know what's best. REVISIT: don't modify grammar at all; eliminate // this step... ComplexTypeInfo *currType = 0; DatatypeValidator *currDV = 0; if(fGrammar->getGrammarType() == Grammar::SchemaGrammarType && fValidate) { currType = ((SchemaValidator*)fValidator)->getCurrentTypeInfo(); if (!currType) { currDV = ((SchemaValidator*)fValidator)->getCurrentDatatypeValidator(); } } const bool hasDefs = (currType && fValidate) ? currType->hasAttDefs() : elemDecl->hasAttDefs(); // another set of attributes; increment element counter fElemCount++; // If there are no expliclitily provided attributes and there are no // defined attributes for the element, the we don't have anything to do. // So just return zero in this case. if (!hasDefs && !attCount) return 0; // Keep up with how many attrs we end up with total XMLSize_t retCount = 0; // And get the current size of the output vector. This lets us use // existing elements until we fill it, then start adding new ones. const XMLSize_t curAttListSize = toFill.size(); // We need a buffer into which raw scanned attribute values will be // normalized. XMLBufBid bbNormal(&fBufMgr); XMLBuffer& normBuf = bbNormal.getBuffer(); // // Decide if to use hash table to do duplicate checking // bool toUseHashTable = false; if (fGrammarType == Grammar::DTDGrammarType) { setAttrDupChkRegistry(attCount, toUseHashTable); } XMLBufBid bbPrefix(&fBufMgr); XMLBuffer& prefixBuf = bbPrefix.getBuffer(); // Loop through our explicitly provided attributes, which are in the raw // scanned form, and build up XMLAttr objects. XMLSize_t index; const XMLCh* prefPtr, *suffPtr; for (index = 0; index < attCount; index++) { PSVIItem::VALIDITY_STATE attrValid = PSVIItem::VALIDITY_VALID; PSVIItem::ASSESSMENT_TYPE attrAssessed = PSVIItem::VALIDATION_FULL; const KVStringPair* curPair = providedAttrs.elementAt(index); // We have to split the name into its prefix and name parts. Then // we map the prefix to its URI. const XMLCh* const namePtr = curPair->getKey(); const int colonInd = fRawAttrColonList[index]; unsigned int uriId; if (colonInd != -1) { prefixBuf.set(namePtr, colonInd); prefPtr = prefixBuf.getRawBuffer(); suffPtr = namePtr + colonInd + 1; // Map the prefix to a URI id uriId = resolvePrefix(prefPtr, ElemStack::Mode_Attribute); } else { // No colon, so we just have a name with no prefix prefPtr = XMLUni::fgZeroLenString; suffPtr = namePtr; // an empty prefix is always the empty namespace, when dealing with attributes uriId = fEmptyNamespaceId; } // If the uri comes back as the xmlns or xml URI or its just a name // and that name is 'xmlns', then we handle it specially. So set a // boolean flag that lets us quickly below know which we are dealing // with. const bool isNSAttr = (uriId == fEmptyNamespaceId)? XMLString::equals(suffPtr, XMLUni::fgXMLNSString) : (uriId == fXMLNSNamespaceId || XMLString::equals(getURIText(uriId), SchemaSymbols::fgURI_XSI)); // If its not a special case namespace attr of some sort, then we // do normal checking and processing. XMLAttDef::AttTypes attType = XMLAttDef::CData; DatatypeValidator *attrValidator = 0; PSVIAttribute *psviAttr = 0; bool otherXSI = false; if (isNSAttr && fGrammarType == Grammar::SchemaGrammarType) { if(!fUndeclaredAttrRegistry->putIfNotPresent(suffPtr, uriId)) { emitError ( XMLErrs::AttrAlreadyUsedInSTag , namePtr , elemDecl->getFullName() ); fPSVIElemContext.fErrorOccurred = true; } else { bool ValueValidate = false; bool tokenizeBuffer = false; if (uriId == fXMLNSNamespaceId) { attrValidator = DatatypeValidatorFactory::getBuiltInRegistry()->get(SchemaSymbols::fgDT_ANYURI); } else if (XMLString::equals(getURIText(uriId), SchemaSymbols::fgURI_XSI)) { if (XMLString::equals(suffPtr, SchemaSymbols::fgATT_NILL)) { attrValidator = DatatypeValidatorFactory::getBuiltInRegistry()->get(SchemaSymbols::fgDT_BOOLEAN); ValueValidate = true; } else if (XMLString::equals(suffPtr, SchemaSymbols::fgXSI_SCHEMALOCATION)) { // use anyURI as the validator // tokenize the data and use the anyURI data for each piece attrValidator = DatatypeValidatorFactory::getBuiltInRegistry()->get(SchemaSymbols::fgDT_ANYURI); //We should validate each value in the schema location however //this lead to a performance degradation of around 4%. Since //the first value of each pair needs to match what is in the //schema document and the second value needs to be valid in //order to open the document we won't validate it. Need to //do performance analysis of the anyuri datatype. //ValueValidate = true; ValueValidate = false; tokenizeBuffer = true; } else if (XMLString::equals(suffPtr, SchemaSymbols::fgXSI_NONAMESPACESCHEMALOCATION)) { attrValidator = DatatypeValidatorFactory::getBuiltInRegistry()->get(SchemaSymbols::fgDT_ANYURI); //We should validate this value however //this lead to a performance degradation of around 4%. Since //the value needs to be valid in //order to open the document we won't validate it. Need to //do performance analysis of the anyuri datatype. //ValueValidate = true; ValueValidate = false; } else if (XMLString::equals(suffPtr, SchemaSymbols::fgXSI_TYPE)) { attrValidator = DatatypeValidatorFactory::getBuiltInRegistry()->get(SchemaSymbols::fgDT_QNAME); ValueValidate = true; } else { otherXSI = true; } } if (!otherXSI) { normalizeAttRawValue ( namePtr , curPair->getValue() , normBuf ); if (fValidate && attrValidator && ValueValidate) { ((SchemaValidator*) fValidator)->normalizeWhiteSpace(attrValidator, normBuf.getRawBuffer(), normBuf, true); ValidationContext* const theContext = getValidationContext(); if (theContext) { try { if (tokenizeBuffer) { XMLStringTokenizer tokenizer(normBuf.getRawBuffer(), fMemoryManager); while (tokenizer.hasMoreTokens()) { attrValidator->validate( tokenizer.nextToken(), theContext, fMemoryManager); } } else { attrValidator->validate( normBuf.getRawBuffer(), theContext, fMemoryManager); } } catch (const XMLException& idve) { fValidator->emitError (XMLValid::DatatypeError, idve.getCode(), idve.getMessage()); } } } if(getPSVIHandler()) { psviAttr = fPSVIAttrList->getPSVIAttributeToFill(suffPtr, fURIStringPool->getValueForId(uriId)); XSSimpleTypeDefinition *validatingType = (attrValidator) ? (XSSimpleTypeDefinition *)fModel->getXSObject(attrValidator) : 0; // no attribute declarations for these... psviAttr->reset( fRootElemName , PSVIItem::VALIDITY_NOTKNOWN , PSVIItem::VALIDATION_NONE , validatingType , 0 , 0 , false , 0 , attrValidator ); } } } } if (!isNSAttr || fGrammarType == Grammar::DTDGrammarType || otherXSI) { // Some checking for attribute wild card first (for schema) bool laxThisOne = false; bool skipThisOne = false; XMLAttDef* attDefForWildCard = 0; XMLAttDef* attDef = 0; if (fGrammarType == Grammar::SchemaGrammarType) { //retrieve the att def SchemaAttDef* attWildCard = 0; if (currType) { attDef = currType->getAttDef(suffPtr, uriId); attWildCard = currType->getAttWildCard(); } else if (!currDV) { // check explicitly-set wildcard attDef = ((SchemaElementDecl*)elemDecl)->getAttDef(suffPtr, uriId); attWildCard = ((SchemaElementDecl*)elemDecl)->getAttWildCard(); } // if not found or faulted in - check for a matching wildcard attribute // if no matching wildcard attribute, check (un)qualifed cases and flag // appropriate errors if (!attDef || (attDef->getCreateReason() == XMLAttDef::JustFaultIn)) { if (attWildCard) { //if schema, see if we should lax or skip the validation of this attribute if (anyAttributeValidation(attWildCard, uriId, skipThisOne, laxThisOne)) { if(!skipThisOne) { SchemaGrammar* sGrammar = (SchemaGrammar*) fGrammarResolver->getGrammar(getURIText(uriId)); if (sGrammar && sGrammar->getGrammarType() == Grammar::SchemaGrammarType) { RefHashTableOf* attRegistry = sGrammar->getAttributeDeclRegistry(); if (attRegistry) { attDefForWildCard = attRegistry->get(suffPtr); } } } } } else if (currType) { // not found, see if the attDef should be qualified or not if (uriId == fEmptyNamespaceId) { attDef = currType->getAttDef(suffPtr , fURIStringPool->getId(fGrammar->getTargetNamespace())); if (fValidate && attDef && attDef->getCreateReason() != XMLAttDef::JustFaultIn) { // the attribute should be qualified fValidator->emitError ( XMLValid::AttributeNotQualified , attDef->getFullName() ); if(fGrammarType == Grammar::SchemaGrammarType) { fPSVIElemContext.fErrorOccurred = true; if (getPSVIHandler()) { attrValid = PSVIItem::VALIDITY_INVALID; } } } } else { attDef = currType->getAttDef(suffPtr , fEmptyNamespaceId); if (fValidate && attDef && attDef->getCreateReason() != XMLAttDef::JustFaultIn) { // the attribute should be qualified fValidator->emitError ( XMLValid::AttributeNotUnQualified , attDef->getFullName() ); if(fGrammarType == Grammar::SchemaGrammarType) { fPSVIElemContext.fErrorOccurred = true; if (getPSVIHandler()) { attrValid = PSVIItem::VALIDITY_INVALID; } } } } } } } // Find this attribute within the parent element. We pass both // the uriID/name and the raw QName buffer, since we don't know // how the derived validator and its elements store attributes. else { if(fGrammarType == Grammar::DTDGrammarType) attDef = ((DTDElementDecl *)elemDecl)->getAttDef ( namePtr); } // now need to prepare for duplicate detection if(attDef) { unsigned int *curCountPtr = fAttDefRegistry->get(attDef); if(!curCountPtr) { curCountPtr = getNewUIntPtr(); *curCountPtr = fElemCount; fAttDefRegistry->put(attDef, curCountPtr); } else if(*curCountPtr < fElemCount) *curCountPtr = fElemCount; else { emitError ( XMLErrs::AttrAlreadyUsedInSTag , attDef->getFullName() , elemDecl->getFullName() ); fPSVIElemContext.fErrorOccurred = true; } } else { if(fGrammarType == Grammar::DTDGrammarType) { if(!fUndeclaredAttrRegistry->putIfNotPresent(namePtr, 0)) { emitError ( XMLErrs::AttrAlreadyUsedInSTag , namePtr , elemDecl->getFullName() ); } } else // schema grammar { if(!fUndeclaredAttrRegistry->putIfNotPresent(suffPtr, uriId)) { emitError ( XMLErrs::AttrAlreadyUsedInSTag , namePtr , elemDecl->getFullName() ); fPSVIElemContext.fErrorOccurred = true; } } } if(fGrammarType == Grammar::SchemaGrammarType ) { // if we've found either an attDef or an attDefForWildCard, // then we're doing full validation and it may still be valid. if(!attDef && !attDefForWildCard) { if(!laxThisOne && !skipThisOne) { fPSVIElemContext.fErrorOccurred = true; } if(getPSVIHandler()) { if(!laxThisOne && !skipThisOne) { attrValid = PSVIItem::VALIDITY_INVALID; } else if(laxThisOne) { attrValid = PSVIItem::VALIDITY_NOTKNOWN; attrAssessed = PSVIItem::VALIDATION_PARTIAL; } else { attrValid = PSVIItem::VALIDITY_NOTKNOWN; attrAssessed = PSVIItem::VALIDATION_NONE; } } } } bool errorCondition = fValidate && !attDefForWildCard && !attDef; if (errorCondition && !skipThisOne && !laxThisOne) { // // Its not valid for this element, so issue an error if we are // validating. // XMLBufBid bbMsg(&fBufMgr); XMLBuffer& bufMsg = bbMsg.getBuffer(); if (uriId != fEmptyNamespaceId) { XMLBufBid bbURI(&fBufMgr); XMLBuffer& bufURI = bbURI.getBuffer(); getURIText(uriId, bufURI); bufMsg.append(chOpenCurly); bufMsg.append(bufURI.getRawBuffer()); bufMsg.append(chCloseCurly); } bufMsg.append(suffPtr); fValidator->emitError ( XMLValid::AttNotDefinedForElement , bufMsg.getRawBuffer() , elemDecl->getFullName() ); } // Now normalize the raw value since we have the attribute type. We // don't care about the return status here. If it failed, an error // was issued, which is all we care about. if (attDefForWildCard) { normalizeAttValue( attDefForWildCard, namePtr, curPair->getValue(), normBuf ); // If we found an attdef for this one, then lets validate it. const XMLCh* xsNormalized = normBuf.getRawBuffer(); DatatypeValidator* tempDV = ((SchemaAttDef*) attDefForWildCard)->getDatatypeValidator(); if (tempDV && tempDV->getWSFacet() != DatatypeValidator::PRESERVE) { // normalize the attribute according to schema whitespace facet ((SchemaValidator*) fValidator)->normalizeWhiteSpace(tempDV, xsNormalized, fWSNormalizeBuf, true); xsNormalized = fWSNormalizeBuf.getRawBuffer(); if (fNormalizeData && fValidate) { normBuf.set(xsNormalized); } } if (fValidate ) { fValidator->validateAttrValue( attDefForWildCard, xsNormalized, false, elemDecl ); attrValidator = ((SchemaValidator*)fValidator)->getMostRecentAttrValidator(); if(((SchemaValidator *)fValidator)->getErrorOccurred()) { fPSVIElemContext.fErrorOccurred = true; if(getPSVIHandler()) attrValid = PSVIItem::VALIDITY_INVALID; } } else { // no decl; default DOMTypeInfo to anySimpleType attrValidator = DatatypeValidatorFactory::getBuiltInRegistry()->get(SchemaSymbols::fgDT_ANYSIMPLETYPE); } // Save the type for later use attType = attDefForWildCard->getType(); } else { normalizeAttValue( attDef, namePtr, curPair->getValue(), normBuf ); // If we found an attdef for this one, then lets validate it. if (attDef) { const XMLCh* xsNormalized = normBuf.getRawBuffer(); if (fGrammarType == Grammar::SchemaGrammarType) { DatatypeValidator* tempDV = ((SchemaAttDef*) attDef)->getDatatypeValidator(); if (tempDV && tempDV->getWSFacet() != DatatypeValidator::PRESERVE) { // normalize the attribute according to schema whitespace facet ((SchemaValidator*) fValidator)->normalizeWhiteSpace(tempDV, xsNormalized, fWSNormalizeBuf, true); xsNormalized = fWSNormalizeBuf.getRawBuffer(); if (fNormalizeData && fValidate && !skipThisOne) { normBuf.set(xsNormalized); } } } if (fValidate && !skipThisOne) { fValidator->validateAttrValue( attDef, xsNormalized, false, elemDecl ); if(fGrammarType == Grammar::SchemaGrammarType) { attrValidator = ((SchemaValidator*)fValidator)->getMostRecentAttrValidator(); if(((SchemaValidator *)fValidator)->getErrorOccurred()) { fPSVIElemContext.fErrorOccurred = true; if (getPSVIHandler()) attrValid = PSVIItem::VALIDITY_INVALID; } } } else if(fGrammarType == Grammar::SchemaGrammarType) { attrValidator = DatatypeValidatorFactory::getBuiltInRegistry()->get(SchemaSymbols::fgDT_ANYSIMPLETYPE); } } else // no attDef at all; default to anySimpleType { if(fGrammarType == Grammar::SchemaGrammarType) { attrValidator = DatatypeValidatorFactory::getBuiltInRegistry()->get(SchemaSymbols::fgDT_ANYSIMPLETYPE); } } // Save the type for later use if (attDef) { attType = attDef->getType(); } } // now fill in the PSVIAttributes entry for this attribute: if(getPSVIHandler() && fGrammarType == Grammar::SchemaGrammarType) { psviAttr = fPSVIAttrList->getPSVIAttributeToFill(suffPtr, fURIStringPool->getValueForId(uriId)); SchemaAttDef *actualAttDef = 0; if(attDef) actualAttDef = (SchemaAttDef *)attDef; else if (attDefForWildCard) actualAttDef = (SchemaAttDef *)attDefForWildCard; if(actualAttDef) { XSAttributeDeclaration *attrDecl = (XSAttributeDeclaration *)fModel->getXSObject(actualAttDef); DatatypeValidator * attrDataType = actualAttDef->getDatatypeValidator(); XSSimpleTypeDefinition *validatingType = (XSSimpleTypeDefinition *)fModel->getXSObject(attrDataType); if(attrValid != PSVIItem::VALIDITY_VALID) { psviAttr->reset ( fRootElemName , attrValid , attrAssessed , validatingType , 0 , actualAttDef->getValue() , false , attrDecl , 0 ); } else { XSSimpleTypeDefinition *memberType = 0; if(validatingType->getVariety() == XSSimpleTypeDefinition::VARIETY_UNION) memberType = (XSSimpleTypeDefinition *)fModel->getXSObject(attrValidator); psviAttr->reset ( fRootElemName , attrValid , attrAssessed , validatingType , memberType , actualAttDef->getValue() , false , attrDecl , (memberType)?attrValidator:attrDataType ); } } else { psviAttr->reset ( fRootElemName , attrValid , attrAssessed , 0 , 0 , 0 , false , 0 , 0 ); } } } // Add this attribute to the attribute list that we use to pass them // to the handler. We reuse its existing elements but expand it as // required. XMLAttr* curAttr; // check for duplicate namespace attributes: // by checking for qualified names with the same local part and with prefixes // which have been bound to namespace names that are identical. if (fGrammarType == Grammar::DTDGrammarType) { if (!toUseHashTable) { for (XMLSize_t attrIndex=0; attrIndex < retCount; attrIndex++) { curAttr = toFill.elementAt(attrIndex); if (uriId == curAttr->getURIId() && XMLString::equals(suffPtr, curAttr->getName())) { emitError ( XMLErrs::AttrAlreadyUsedInSTag , curAttr->getName() , elemDecl->getFullName() ); } } } else { if (fAttrDupChkRegistry->containsKey((void*)suffPtr, uriId)) { emitError ( XMLErrs::AttrAlreadyUsedInSTag , suffPtr , elemDecl->getFullName() ); } } } if (retCount >= curAttListSize) { curAttr = new (fMemoryManager) XMLAttr ( uriId , suffPtr , prefPtr , normBuf.getRawBuffer() , attType , true , fMemoryManager ); toFill.addElement(curAttr); } else { curAttr = toFill.elementAt(retCount); curAttr->set ( uriId , suffPtr , prefPtr , normBuf.getRawBuffer() , attType ); curAttr->setSpecified(true); } if (toUseHashTable) { fAttrDupChkRegistry->put((void*)suffPtr, uriId, curAttr); } if(psviAttr) psviAttr->setValue(curAttr->getValue()); // Bump the count of attrs in the list retCount++; } // Now, if there are any attributes declared by this element, let's // go through them and make sure that any required ones are provided, // and fault in any fixed ones and defaulted ones that are not provided // literally. if (hasDefs) { // Check after all specified attrs are scanned // (1) report error for REQUIRED attrs that are missing (V_TAGc) // (2) add default attrs if missing (FIXED and NOT_FIXED) XMLAttDefList &attDefList = getAttDefList(fGrammarType == Grammar::SchemaGrammarType, currType, elemDecl); for(XMLSize_t i=0; igetDefaultType(); unsigned int *attCountPtr = fAttDefRegistry->get((void *)curDef); if (!attCountPtr || *attCountPtr < fElemCount) { // did not occur // note that since there is no attribute information // item present, there is no PSVI infoset to augment here *except* // that the element is invalid //the attribute is not provided if (fValidate) { // If we are validating and its required, then an error if ((defType == XMLAttDef::Required) || (defType == XMLAttDef::Required_And_Fixed) ) { fValidator->emitError ( XMLValid::RequiredAttrNotProvided , curDef->getFullName() ); if(fGrammarType == Grammar::SchemaGrammarType) { fPSVIElemContext.fErrorOccurred = true; } } else if ((defType == XMLAttDef::Default) || (defType == XMLAttDef::Fixed) ) { if (fStandalone && curDef->isExternal()) { // XML 1.0 Section 2.9 // Document is standalone, so attributes must not be defaulted. fValidator->emitError(XMLValid::NoDefAttForStandalone, curDef->getFullName(), elemDecl->getFullName()); if(fGrammarType == Grammar::SchemaGrammarType) { fPSVIElemContext.fErrorOccurred = true; } } } } // Fault in the value if needed, and bump the att count. if ((defType == XMLAttDef::Default) || (defType == XMLAttDef::Fixed)) { // Let the validator pass judgement on the attribute value if (fValidate) { fValidator->validateAttrValue ( curDef , curDef->getValue() , false , elemDecl ); } XMLAttr* curAtt; if (retCount >= curAttListSize) { curAtt = new (fMemoryManager) XMLAttr(fMemoryManager); fValidator->faultInAttr(*curAtt, *curDef); fAttrList->addElement(curAtt); } else { curAtt = fAttrList->elementAt(retCount); fValidator->faultInAttr(*curAtt, *curDef); } if (fGrammarType == Grammar::DTDGrammarType) { // Map the new attribute's prefix to a URI id and store // that in the attribute object. curAtt->setURIId ( resolvePrefix(curAtt->getPrefix(), ElemStack::Mode_Attribute) ); } // Indicate it was not explicitly specified and bump count curAtt->setSpecified(false); retCount++; if(getPSVIHandler() && fGrammarType == Grammar::SchemaGrammarType) { QName *attName = ((SchemaAttDef *)curDef)->getAttName(); PSVIAttribute *defAttrToFill = fPSVIAttrList->getPSVIAttributeToFill ( attName->getLocalPart(), fURIStringPool->getValueForId( attName->getURI()) ); XSAttributeDeclaration *defAttrDecl = (XSAttributeDeclaration *)fModel->getXSObject((void *)curDef); DatatypeValidator * attrDataType = ((SchemaAttDef *)curDef)->getDatatypeValidator(); XSSimpleTypeDefinition *defAttrType = (XSSimpleTypeDefinition*)fModel->getXSObject(attrDataType); // would have occurred during validation of default value if(((SchemaValidator *)fValidator)->getErrorOccurred()) { defAttrToFill->reset( fRootElemName , PSVIItem::VALIDITY_INVALID , PSVIItem::VALIDATION_FULL , defAttrType , 0 , curDef->getValue() , true , defAttrDecl , 0 ); } else { XSSimpleTypeDefinition *defAttrMemberType = 0; if(defAttrType->getVariety() == XSSimpleTypeDefinition::VARIETY_UNION) { defAttrMemberType = (XSSimpleTypeDefinition *)fModel->getXSObject ( ((SchemaValidator*)fValidator)->getMostRecentAttrValidator() ); } defAttrToFill->reset( fRootElemName , PSVIItem::VALIDITY_VALID , PSVIItem::VALIDATION_FULL , defAttrType , defAttrMemberType , curDef->getValue() , true , defAttrDecl , (defAttrMemberType)?((SchemaValidator *)fValidator)->getMostRecentAttrValidator():attrDataType ); } defAttrToFill->setValue(curDef->getValue()); } } } else if(attCountPtr) { //attribute is provided // (schema) report error for PROHIBITED attrs that are present (V_TAGc) if (defType == XMLAttDef::Prohibited && fValidate) { fValidator->emitError ( XMLValid::ProhibitedAttributePresent , curDef->getFullName() ); if(fGrammarType == Grammar::SchemaGrammarType) { fPSVIElemContext.fErrorOccurred = true; if (getPSVIHandler()) { QName *attQName = ((SchemaAttDef *)curDef)->getAttName(); // bad luck... PSVIAttribute *prohibitedAttr = fPSVIAttrList->getAttributePSVIByName ( attQName->getLocalPart(), fURIStringPool->getValueForId(attQName->getURI()) ); prohibitedAttr->updateValidity(PSVIItem::VALIDITY_INVALID); } } } } } } return retCount; } // This method will take a raw attribute value and normalize it according to // the rules of the attribute type. It will put the resulting value into the // passed buffer. // // This code assumes that escaped characters in the original value (via char // refs) are prefixed by a 0xFFFF character. This is because some characters // are legal if escaped only. And some escape chars are not subject to // normalization rules. bool IGXMLScanner::normalizeAttValue( const XMLAttDef* const attDef , const XMLCh* const attName , const XMLCh* const value , XMLBuffer& toFill) { // A simple state value for a whitespace processing state machine enum States { InWhitespace , InContent }; // Get the type and name const XMLAttDef::AttTypes type = (attDef)?attDef->getType():XMLAttDef::CData; // Assume its going to go fine, and empty the target buffer in preperation bool retVal = true; toFill.reset(); // Loop through the chars of the source value and normalize it according // to the type. XMLCh nextCh; const XMLCh* srcPtr = value; if (type == XMLAttDef::CData || type > XMLAttDef::Notation) { // Get the next character from the source. We have to watch for // escaped characters (which are indicated by a 0xFFFF value followed // by the char that was escaped.) while ((nextCh = *srcPtr++)!=0) { switch(nextCh) { // Do we have an escaped character ? case 0xFFFF: nextCh = *srcPtr++; break; case 0x09: case 0x0A: case 0x0D: // Check Validity Constraint for Standalone document declaration // XML 1.0, Section 2.9 if (fStandalone && fValidate && attDef && attDef->isExternal()) { // Can't have a standalone document declaration of "yes" if attribute // values are subject to normalisation fValidator->emitError(XMLValid::NoAttNormForStandalone, attName); } nextCh = chSpace; break; case chOpenAngle: // If its not escaped, then make sure its not a < character, which is // not allowed in attribute values. emitError(XMLErrs::BracketInAttrValue, attName); retVal = false; break; } // Add this char to the target buffer toFill.append(nextCh); } } else { States curState = InContent; bool firstNonWS = false; // Get the next character from the source. We have to watch for // escaped characters (which are indicated by a 0xFFFF value followed // by the char that was escaped.) while ((nextCh = *srcPtr)!=0) { // Do we have an escaped character ? if (nextCh == 0xFFFF) { nextCh = *++srcPtr; } else if (nextCh == chOpenAngle) { // If its not escaped, then make sure its not a < character, which is // not allowed in attribute values. emitError(XMLErrs::BracketInAttrValue, attName); retVal = false; } if (curState == InWhitespace) { if (!fReaderMgr.getCurrentReader()->isWhitespace(nextCh)) { if (firstNonWS) toFill.append(chSpace); curState = InContent; firstNonWS = true; } else { srcPtr++; continue; } } else if (curState == InContent) { if (fReaderMgr.getCurrentReader()->isWhitespace(nextCh)) { curState = InWhitespace; srcPtr++; // Check Validity Constraint for Standalone document declaration // XML 1.0, Section 2.9 if (fStandalone && fValidate && attDef && attDef->isExternal()) { if (!firstNonWS || (nextCh != chSpace) || (!*srcPtr) || fReaderMgr.getCurrentReader()->isWhitespace(*srcPtr)) { // Can't have a standalone document declaration of "yes" if attribute // values are subject to normalisation fValidator->emitError(XMLValid::NoAttNormForStandalone, attName); } } continue; } firstNonWS = true; } // Add this char to the target buffer toFill.append(nextCh); // And move up to the next character in the source srcPtr++; } } return retVal; } // This method will just normalize the input value as CDATA without // any standalone checking. bool IGXMLScanner::normalizeAttRawValue( const XMLCh* const attrName , const XMLCh* const value , XMLBuffer& toFill) { // Assume its going to go fine, and empty the target buffer in preperation bool retVal = true; toFill.reset(); // Loop through the chars of the source value and normalize it according // to the type. bool escaped; XMLCh nextCh; const XMLCh* srcPtr = value; while (*srcPtr) { // Get the next character from the source. We have to watch for // escaped characters (which are indicated by a 0xFFFF value followed // by the char that was escaped.) nextCh = *srcPtr; escaped = (nextCh == 0xFFFF); if (escaped) nextCh = *++srcPtr; // If its not escaped, then make sure its not a < character, which is // not allowed in attribute values. if (!escaped && (*srcPtr == chOpenAngle)) { emitError(XMLErrs::BracketInAttrValue, attrName); retVal = false; } if (!escaped) { // NOTE: Yes this is a little redundant in that a 0x20 is // replaced with an 0x20. But its faster to do this (I think) // than checking for 9, A, and D separately. if (fReaderMgr.getCurrentReader()->isWhitespace(nextCh)) nextCh = chSpace; } // Add this char to the target buffer toFill.append(nextCh); // And move up to the next character in the source srcPtr++; } return retVal; } // This method will reset the scanner data structures, and related plugged // in stuff, for a new scan session. We get the input source for the primary // XML entity, create the reader for it, and push it on the stack so that // upon successful return from here we are ready to go. void IGXMLScanner::scanReset(const InputSource& src) { // This call implicitly tells us that we are going to reuse the scanner // if it was previously used. So tell the validator to reset itself. // // But, if the fUseCacheGrammar flag is set, then don't reset it. // // NOTE: The ReaderMgr is flushed on the way out, because that is // required to insure that files are closed. fGrammarResolver->cacheGrammarFromParse(fToCacheGrammar); fGrammarResolver->useCachedGrammarInParse(fUseCachedGrammar); // Clear transient schema info list. // fSchemaInfoList->removeAll (); // fModel may need updating, as fGrammarResolver could have cleaned it if(fModel && getPSVIHandler()) fModel = fGrammarResolver->getXSModel(); { XMLDTDDescriptionImpl theDTDDescription(XMLUni::fgDTDEntityString, fMemoryManager); fDTDGrammar = (DTDGrammar*) fGrammarResolver->getGrammar(&theDTDDescription); } if (!fDTDGrammar) { fDTDGrammar = new (fGrammarPoolMemoryManager) DTDGrammar(fGrammarPoolMemoryManager); fGrammarResolver->putGrammar(fDTDGrammar); } else fDTDGrammar->reset(); fGrammar = fDTDGrammar; fGrammarType = fGrammar->getGrammarType(); fRootGrammar = 0; if (fValidatorFromUser) { if (fValidator->handlesDTD()) fValidator->setGrammar(fGrammar); else if (fValidator->handlesSchema()) { ((SchemaValidator*) fValidator)->setErrorReporter(fErrorReporter); ((SchemaValidator*) fValidator)->setGrammarResolver(fGrammarResolver); ((SchemaValidator*) fValidator)->setExitOnFirstFatal(fExitOnFirstFatal); } } else { // set fValidator as fDTDValidator fValidator = fDTDValidator; fValidator->setGrammar(fGrammar); } // Reset validation fValidate = (fValScheme == Val_Always) ? true : false; // Ignore skipDTDValidation flag if no schema processing is taking place */ fSkipDTDValidation = fSkipDTDValidation && fDoSchema; // And for all installed handlers, send reset events. This gives them // a chance to flush any cached data. if (fDocHandler) fDocHandler->resetDocument(); if (fEntityHandler) fEntityHandler->resetEntities(); if (fErrorReporter) fErrorReporter->resetErrors(); // Clear out the id reference list resetValidationContext(); // Reset the Root Element Name fMemoryManager->deallocate(fRootElemName);//delete [] fRootElemName; fRootElemName = 0; // Reset IdentityConstraints if (fICHandler) fICHandler->reset(); // Reset the element stack, and give it the latest ids for the special // URIs it has to know about. fElemStack.reset ( fEmptyNamespaceId , fUnknownNamespaceId , fXMLNamespaceId , fXMLNSNamespaceId ); if (!fSchemaNamespaceId) fSchemaNamespaceId = fURIStringPool->addOrFind(SchemaSymbols::fgURI_XSI); // Reset some status flags fInException = false; fStandalone = false; fErrorCount = 0; fHasNoDTD = true; fSeeXsi = false; // Reset PSVI context // note that we always need this around for DOMTypeInfo if (!fPSVIElement) fPSVIElement = new (fMemoryManager) PSVIElement(fMemoryManager); if (!fErrorStack) { fErrorStack = new (fMemoryManager) ValueStackOf(8, fMemoryManager); } else { fErrorStack->removeAllElements(); } resetPSVIElemContext(); // Reset the validators fDTDValidator->reset(); fDTDValidator->setErrorReporter(fErrorReporter); fSchemaValidator->reset(); fSchemaValidator->setErrorReporter(fErrorReporter); fSchemaValidator->setExitOnFirstFatal(fExitOnFirstFatal); fSchemaValidator->setGrammarResolver(fGrammarResolver); if (fValidatorFromUser) fValidator->reset(); // Handle the creation of the XML reader object for this input source. // This will provide us with transcoding and basic lexing services. XMLReader* newReader = fReaderMgr.createReader ( src , true , XMLReader::RefFrom_NonLiteral , XMLReader::Type_General , XMLReader::Source_External , fCalculateSrcOfs , fLowWaterMark ); if (!newReader) { if (src.getIssueFatalErrorIfNotFound()) ThrowXMLwithMemMgr1(RuntimeException, XMLExcepts::Scan_CouldNotOpenSource, src.getSystemId(), fMemoryManager); else ThrowXMLwithMemMgr1(RuntimeException, XMLExcepts::Scan_CouldNotOpenSource_Warning, src.getSystemId(), fMemoryManager); } // Push this read onto the reader manager fReaderMgr.pushReader(newReader, 0); // and reset security-related things if necessary: if(fSecurityManager != 0) { fEntityExpansionLimit = fSecurityManager->getEntityExpansionLimit(); fEntityExpansionCount = 0; } fElemCount = 0; if(fUIntPoolRowTotal >= 32) { // 8 KB tied up with validating attributes... fAttDefRegistry->removeAll(); recreateUIntPool(); } else { // note that this will implicitly reset the values of the hashtables, // though their buckets will still be tied up resetUIntPool(); } fUndeclaredAttrRegistry->removeAll(); fDTDElemNonDeclPool->removeAll(); } // This method is called between markup in content. It scans for character // data that is sent to the document handler. It watches for any markup // characters that would indicate that the character data has ended. It also // handles expansion of general and character entities. // // sendData() is a local static helper for this method which handles some // code that must be done in three different places here. void IGXMLScanner::sendCharData(XMLBuffer& toSend) { // If no data in the buffer, then nothing to do if (toSend.isEmpty()) return; // We do different things according to whether we are validating or // not. If not, its always just characters; else, it depends on the // current element's content model. if (fValidate) { // Get the raw data we need for the callback const XMLCh* rawBuf = toSend.getRawBuffer(); XMLSize_t len = toSend.getLen(); // And see if the current element is a 'Children' style content model const ElemStack::StackElem* topElem = fElemStack.topElement(); // Get the character data opts for the current element XMLElementDecl::CharDataOpts charOpts = XMLElementDecl::AllCharData; if(fGrammar->getGrammarType() == Grammar::SchemaGrammarType) { // And see if the current element is a 'Children' style content model ComplexTypeInfo *currType = ((SchemaValidator*)fValidator)->getCurrentTypeInfo(); if(currType) { SchemaElementDecl::ModelTypes modelType = (SchemaElementDecl::ModelTypes) currType->getContentType(); if(modelType == SchemaElementDecl::Children || modelType == SchemaElementDecl::ElementOnlyEmpty) charOpts = XMLElementDecl::SpacesOk; else if(modelType == SchemaElementDecl::Empty) charOpts = XMLElementDecl::NoCharData; } } else // DTD grammar charOpts = topElem->fThisElement->getCharDataOpts(); if (charOpts == XMLElementDecl::NoCharData) { // They definitely cannot handle any type of char data fValidator->emitError(XMLValid::NoCharDataInCM); //if(fGrammarType == Grammar::SchemaGrammarType) //{ // if (getPSVIHandler()) // { // REVISIT: // PSVIElement->setValidity(PSVIItem::VALIDITY_INVALID); // } // } } else if (fReaderMgr.getCurrentReader()->isAllSpaces(rawBuf, len)) { // Its all spaces. So, if they can take spaces, then send it // as ignorable whitespace. If they can handle any char data // send it as characters. if (charOpts == XMLElementDecl::SpacesOk) { if (fDocHandler) fDocHandler->ignorableWhitespace(rawBuf, len, false); } else if (charOpts == XMLElementDecl::AllCharData) { if (fGrammarType != Grammar::SchemaGrammarType) { if (fDocHandler) fDocHandler->docCharacters(rawBuf, len, false); } else { XMLSize_t xsLen; const XMLCh* xsNormalized; SchemaValidator *schemaValidator = (SchemaValidator *)fValidator; DatatypeValidator* tempDV = ((SchemaValidator*) fValidator)->getCurrentDatatypeValidator(); if (tempDV && tempDV->getWSFacet() != DatatypeValidator::PRESERVE) { // normalize the character according to schema whitespace facet ((SchemaValidator*) fValidator)->normalizeWhiteSpace(tempDV, rawBuf, fWSNormalizeBuf); xsNormalized = fWSNormalizeBuf.getRawBuffer(); xsLen = fWSNormalizeBuf.getLen(); } else { xsNormalized = rawBuf; xsLen = len ; } // tell the schema validation about the character data for checkContent later schemaValidator->setDatatypeBuffer(xsNormalized); // call all active identity constraints if (toCheckIdentityConstraint() && fICHandler->getMatcherCount()) { fContent.append(xsNormalized, xsLen); } if (fDocHandler) { if (fNormalizeData) { fDocHandler->docCharacters(xsNormalized, xsLen, false); } else { fDocHandler->docCharacters(rawBuf, len, false); } } } } } else { // If they can take any char data, then send it. Otherwise, they // can only handle whitespace and can't handle this stuff so // issue an error. if (charOpts == XMLElementDecl::AllCharData) { if (fGrammarType != Grammar::SchemaGrammarType) { if (fDocHandler) fDocHandler->docCharacters(rawBuf, len, false); } else { XMLSize_t xsLen; const XMLCh* xsNormalized; SchemaValidator *schemaValidator = (SchemaValidator*)fValidator; DatatypeValidator* tempDV = ((SchemaValidator*) fValidator)->getCurrentDatatypeValidator(); if (tempDV && tempDV->getWSFacet() != DatatypeValidator::PRESERVE) { // normalize the character according to schema whitespace facet ((SchemaValidator*) fValidator)->normalizeWhiteSpace(tempDV, rawBuf, fWSNormalizeBuf); xsNormalized = fWSNormalizeBuf.getRawBuffer(); xsLen = fWSNormalizeBuf.getLen(); } else { xsNormalized = rawBuf; xsLen = len; } // tell the schema validation about the character data for checkContent later schemaValidator->setDatatypeBuffer(xsNormalized); // call all active identity constraints if (toCheckIdentityConstraint() && fICHandler->getMatcherCount()) { fContent.append(xsNormalized, xsLen); } if (fDocHandler) { if (fNormalizeData) { fDocHandler->docCharacters(xsNormalized, xsLen, false); } else { fDocHandler->docCharacters(rawBuf, len, false); } } } } else { fValidator->emitError(XMLValid::NoCharDataInCM); if(fGrammarType == Grammar::SchemaGrammarType) { if (getPSVIHandler()) { // REVISIT: // PSVIAttribute->setValidity(PSVIItem::VALIDITY_INVALID); } } } } } else { // call all active identity constraints if (fGrammarType == Grammar::SchemaGrammarType) { if (toCheckIdentityConstraint() && fICHandler->getMatcherCount()) fContent.append(toSend.getRawBuffer(), toSend.getLen()); } // Always assume its just char data if not validating if (fDocHandler) fDocHandler->docCharacters(toSend.getRawBuffer(), toSend.getLen(), false); } // Reset buffer toSend.reset(); } // This method is called with a key/value string pair that represents an // xmlns="yyy" or xmlns:xxx="yyy" attribute. This method will update the // current top of the element stack based on this data. We know that when // we get here, that it is one of these forms, so we don't bother confirming // it. // // But we have to ensure // 1. xxx is not xmlns // 2. if xxx is xml, then yyy must match XMLUni::fgXMLURIName, and vice versa // 3. yyy is not XMLUni::fgXMLNSURIName // 4. if xxx is not null, then yyy cannot be an empty string. void IGXMLScanner::updateNSMap(const XMLCh* const attrName , const XMLCh* const attrValue) { updateNSMap(attrName, attrValue, XMLString::indexOf(attrName, chColon)); } void IGXMLScanner::updateNSMap(const XMLCh* const attrName , const XMLCh* const attrValue , const int colonOfs) { // We need a buffer to normalize the attribute value into XMLBufBid bbNormal(&fBufMgr); XMLBuffer& normalBuf = bbNormal.getBuffer(); // Normalize the value into the passed buffer. In this case, we don't // care about the return value. An error was issued for the error, which // is all we care about here. normalizeAttRawValue(attrName, attrValue, normalBuf); XMLCh* namespaceURI = normalBuf.getRawBuffer(); // We either have the default prefix (""), or we point it into the attr // name parameter. Note that the xmlns is not the prefix we care about // here. To us, the 'prefix' is really the local part of the attrName // parameter. // // Check 1. xxx is not xmlns // 2. if xxx is xml, then yyy must match XMLUni::fgXMLURIName, and vice versa // 3. yyy is not XMLUni::fgXMLNSURIName // 4. if xxx is not null, then yyy cannot be an empty string. const XMLCh* prefPtr = XMLUni::fgZeroLenString; if (colonOfs != -1) { prefPtr = &attrName[colonOfs + 1]; if (XMLString::equals(prefPtr, XMLUni::fgXMLNSString)) emitError(XMLErrs::NoUseOfxmlnsAsPrefix); else if (XMLString::equals(prefPtr, XMLUni::fgXMLString)) { if (!XMLString::equals(namespaceURI, XMLUni::fgXMLURIName)) emitError(XMLErrs::PrefixXMLNotMatchXMLURI); } if (!namespaceURI) emitError(XMLErrs::NoEmptyStrNamespace, attrName); else if(!*namespaceURI && fXMLVersion == XMLReader::XMLV1_0) emitError(XMLErrs::NoEmptyStrNamespace, attrName); } if (XMLString::equals(namespaceURI, XMLUni::fgXMLNSURIName)) emitError(XMLErrs::NoUseOfxmlnsURI); else if (XMLString::equals(namespaceURI, XMLUni::fgXMLURIName)) { if (!XMLString::equals(prefPtr, XMLUni::fgXMLString)) emitError(XMLErrs::XMLURINotMatchXMLPrefix); } // Ok, we have to get the unique id for the attribute value, which is the // URI that this value should be mapped to. The validator has the // namespace string pool, so we ask him to find or add this new one. Then // we ask the element stack to add this prefix to URI Id mapping. fElemStack.addPrefix ( prefPtr , fURIStringPool->addOrFind(namespaceURI) ); } void IGXMLScanner::scanRawAttrListforNameSpaces(XMLSize_t attCount) { // Make an initial pass through the list and find any xmlns attributes or // schema attributes. // When we find one, send it off to be used to update the element stack's // namespace mappings. for (XMLSize_t index = 0; index < attCount; index++) { // each attribute has the prefix:suffix="value" const KVStringPair* curPair = fRawAttrList->elementAt(index); const XMLCh* rawPtr = curPair->getKey(); // If either the key begins with "xmlns:" or its just plain // "xmlns", then use it to update the map. if (!XMLString::compareNString(rawPtr, XMLUni::fgXMLNSColonString, 6) || XMLString::equals(rawPtr, XMLUni::fgXMLNSString)) { const XMLCh* valuePtr = curPair->getValue(); updateNSMap(rawPtr, valuePtr, fRawAttrColonList[index]); // if the schema URI is seen in the the valuePtr, set the boolean seeXsi if (XMLString::equals(valuePtr, SchemaSymbols::fgURI_XSI)) { fSeeXsi = true; } } } // walk through the list again to deal with "xsi:...." if (fDoSchema && fSeeXsi) { // Schema Xsi Type yyyy (e.g. xsi:type="yyyyy") XMLBufBid bbXsi(&fBufMgr); XMLBuffer& fXsiType = bbXsi.getBuffer(); for (XMLSize_t index = 0; index < attCount; index++) { // each attribute has the prefix:suffix="value" const KVStringPair* curPair = fRawAttrList->elementAt(index); const XMLCh* rawPtr = curPair->getKey(); const XMLCh* prefPtr = XMLUni::fgZeroLenString; int colonInd = fRawAttrColonList[index]; if (colonInd != -1) { fURIBuf.set(rawPtr, colonInd); prefPtr = fURIBuf.getRawBuffer(); } // if schema URI has been seen, scan for the schema location and uri // and resolve the schema grammar; or scan for schema type if (resolvePrefix(prefPtr, ElemStack::Mode_Attribute) == fSchemaNamespaceId) { const XMLCh* valuePtr = curPair->getValue(); const XMLCh* suffPtr = &rawPtr[colonInd + 1]; if (XMLString::equals(suffPtr, SchemaSymbols::fgXSI_SCHEMALOCATION)) parseSchemaLocation(valuePtr); else if (XMLString::equals(suffPtr, SchemaSymbols::fgXSI_NONAMESPACESCHEMALOCATION)) resolveSchemaGrammar(valuePtr, XMLUni::fgZeroLenString); if ((!fValidator || !fValidator->handlesSchema()) && (XMLString::equals(suffPtr, SchemaSymbols::fgXSI_TYPE) || XMLString::equals(suffPtr, SchemaSymbols::fgATT_NILL))) { // If we are in the DTD mode, try to switch to the Schema // mode. For that we need to find any XML Schema grammar // that we can switch to. Such a grammar can only come // from the cache (if it came from the schemaLocation // attribute, we would be in the Schema mode already). // XMLGrammarPool* pool = fGrammarResolver->getGrammarPool (); RefHashTableOfEnumerator i = pool->getGrammarEnumerator (); while (i.hasMoreElements ()) { Grammar& gr (i.nextElement ()); if (gr.getGrammarType () == Grammar::SchemaGrammarType) { switchGrammar (gr.getTargetNamespace ()); break; } } } if( fValidator && fValidator->handlesSchema() ) { if (XMLString::equals(suffPtr, SchemaSymbols::fgXSI_TYPE)) { // normalize the attribute according to schema whitespace facet DatatypeValidator* tempDV = DatatypeValidatorFactory::getBuiltInRegistry()->get(SchemaSymbols::fgDT_QNAME); ((SchemaValidator*) fValidator)->normalizeWhiteSpace(tempDV, valuePtr, fXsiType, true); } else if (XMLString::equals(suffPtr, SchemaSymbols::fgATT_NILL)) { // normalize the attribute according to schema whitespace facet XMLBuffer& fXsiNil = fBufMgr.bidOnBuffer(); DatatypeValidator* tempDV = DatatypeValidatorFactory::getBuiltInRegistry()->get(SchemaSymbols::fgDT_BOOLEAN); ((SchemaValidator*) fValidator)->normalizeWhiteSpace(tempDV, valuePtr, fXsiNil, true); if(XMLString::equals(fXsiNil.getRawBuffer(), SchemaSymbols::fgATTVAL_TRUE)) ((SchemaValidator*)fValidator)->setNillable(true); else if(XMLString::equals(fXsiNil.getRawBuffer(), SchemaSymbols::fgATTVAL_FALSE)) ((SchemaValidator*)fValidator)->setNillable(false); else emitError(XMLErrs::InvalidAttValue, fXsiNil.getRawBuffer(), valuePtr); fBufMgr.releaseBuffer(fXsiNil); } } } } if (fValidator && fValidator->handlesSchema()) { if (!fXsiType.isEmpty()) { int colonPos = -1; unsigned int uriId = resolveQName ( fXsiType.getRawBuffer() , fPrefixBuf , ElemStack::Mode_Element , colonPos ); ((SchemaValidator*)fValidator)->setXsiType(fPrefixBuf.getRawBuffer(), fXsiType.getRawBuffer() + colonPos + 1, uriId); } } } } void IGXMLScanner::parseSchemaLocation(const XMLCh* const schemaLocationStr, bool ignoreLoadSchema) { XMLCh* locStr = XMLString::replicate(schemaLocationStr, fMemoryManager); ArrayJanitor janLoc(locStr, fMemoryManager); processSchemaLocation(locStr); XMLSize_t size = fLocationPairs->size(); if (size % 2 != 0 ) { emitError(XMLErrs::BadSchemaLocation); } else { // We need a buffer to normalize the attribute value into XMLBuffer normalBuf(1023, fMemoryManager); for(XMLSize_t i=0; ielementAt(i), normalBuf); resolveSchemaGrammar(fLocationPairs->elementAt(i+1), normalBuf.getRawBuffer(), ignoreLoadSchema); } } } void IGXMLScanner::resolveSchemaGrammar(const XMLCh* const loc, const XMLCh* const uri, bool ignoreLoadSchema) { Grammar* grammar = 0; { XMLSchemaDescriptionImpl theSchemaDescription(uri, fMemoryManager); theSchemaDescription.setLocationHints(loc); grammar = fGrammarResolver->getGrammar(&theSchemaDescription); } // If multi-import is enabled, make sure the existing grammar came // from the import directive. Otherwise we may end up reloading // the same schema that came from the external grammar pool. Ideally, // we would move fSchemaInfoList to XMLGrammarPool so that it survives // the destruction of the scanner in which case we could rely on the // same logic we use to weed out duplicate schemas below. // if (!grammar || grammar->getGrammarType() == Grammar::DTDGrammarType || (getHandleMultipleImports() && ((XMLSchemaDescription*)grammar->getGrammarDescription())-> getContextType () == XMLSchemaDescription::CONTEXT_IMPORT)) { if (fLoadSchema || ignoreLoadSchema) { XSDDOMParser parser(0, fMemoryManager, 0); parser.setValidationScheme(XercesDOMParser::Val_Never); parser.setDoNamespaces(true); parser.setUserEntityHandler(fEntityHandler); parser.setUserErrorReporter(fErrorReporter); //Normalize loc XMLBufBid nnSys(&fBufMgr); XMLBuffer& normalizedSysId = nnSys.getBuffer(); XMLString::removeChar(loc, 0xFFFF, normalizedSysId); const XMLCh* normalizedURI = normalizedSysId.getRawBuffer(); // Create a buffer for expanding the system id XMLBufBid bbSys(&fBufMgr); XMLBuffer& expSysId = bbSys.getBuffer(); // Allow the entity handler to expand the system id if they choose // to do so. InputSource* srcToFill = 0; if (fEntityHandler) { if (!fEntityHandler->expandSystemId(normalizedURI, expSysId)) expSysId.set(normalizedURI); ReaderMgr::LastExtEntityInfo lastInfo; fReaderMgr.getLastExtEntityInfo(lastInfo); XMLResourceIdentifier resourceIdentifier(XMLResourceIdentifier::SchemaGrammar, expSysId.getRawBuffer(), uri, XMLUni::fgZeroLenString, lastInfo.systemId, &fReaderMgr); srcToFill = fEntityHandler->resolveEntity(&resourceIdentifier); } else { expSysId.set(normalizedURI); } // If they didn't create a source via the entity handler, then we // have to create one on our own. if (!srcToFill) { if (fDisableDefaultEntityResolution) return; ReaderMgr::LastExtEntityInfo lastInfo; fReaderMgr.getLastExtEntityInfo(lastInfo); XMLURL urlTmp(fMemoryManager); if ((!urlTmp.setURL(lastInfo.systemId, expSysId.getRawBuffer(), urlTmp)) || (urlTmp.isRelative())) { if (!fStandardUriConformant) { XMLBufBid ddSys(&fBufMgr); XMLBuffer& resolvedSysId = ddSys.getBuffer(); XMLUri::normalizeURI(expSysId.getRawBuffer(), resolvedSysId); srcToFill = new (fMemoryManager) LocalFileInputSource ( lastInfo.systemId , resolvedSysId.getRawBuffer() , fMemoryManager ); } else ThrowXMLwithMemMgr(MalformedURLException, XMLExcepts::URL_MalformedURL, fMemoryManager); } else { if (fStandardUriConformant && urlTmp.hasInvalidChar()) ThrowXMLwithMemMgr(MalformedURLException, XMLExcepts::URL_MalformedURL, fMemoryManager); srcToFill = new (fMemoryManager) URLInputSource(urlTmp, fMemoryManager); } } // Put a janitor on the input source Janitor janSrc(srcToFill); // Check if this exact schema has already been seen. // const XMLCh* sysId = srcToFill->getSystemId(); unsigned int uriId = (uri && *uri) ? fURIStringPool->addOrFind(uri) : fEmptyNamespaceId; SchemaInfo* importSchemaInfo = 0; if (fUseCachedGrammar) importSchemaInfo = fCachedSchemaInfoList->get(sysId, uriId); if (!importSchemaInfo && !fToCacheGrammar) importSchemaInfo = fSchemaInfoList->get(sysId, uriId); if (importSchemaInfo) { // We haven't added any new grammars so it is safe to just // return. // return; } // Should just issue warning if the schema is not found bool flag = srcToFill->getIssueFatalErrorIfNotFound(); srcToFill->setIssueFatalErrorIfNotFound(false); parser.parse(*srcToFill); // Reset the InputSource srcToFill->setIssueFatalErrorIfNotFound(flag); if (parser.getSawFatal() && fExitOnFirstFatal) emitError(XMLErrs::SchemaScanFatalError); DOMDocument* document = parser.getDocument(); //Our Grammar if (document != 0) { DOMElement* root = document->getDocumentElement();// This is what we pass to TraverserSchema if (root != 0) { const XMLCh* newUri = root->getAttribute(SchemaSymbols::fgATT_TARGETNAMESPACE); bool newGrammar = false; if (!XMLString::equals(newUri, uri)) { if (fValidate || fValScheme == Val_Auto) { fValidator->emitError(XMLValid::WrongTargetNamespace, loc, uri); } grammar = fGrammarResolver->getGrammar(newUri); newGrammar = true; } if (!grammar || grammar->getGrammarType() == Grammar::DTDGrammarType || (getHandleMultipleImports() && ((XMLSchemaDescription*)grammar->getGrammarDescription())-> getContextType () == XMLSchemaDescription::CONTEXT_IMPORT)) { // If we switched namespace URI, recheck the schema info. // if (newGrammar) { unsigned int newUriId = (newUri && *newUri) ? fURIStringPool->addOrFind(newUri) : fEmptyNamespaceId; if (fUseCachedGrammar) importSchemaInfo = fCachedSchemaInfoList->get(sysId, newUriId); if (!importSchemaInfo && !fToCacheGrammar) importSchemaInfo = fSchemaInfoList->get(sysId, newUriId); if (importSchemaInfo) return; } // Since we have seen a grammar, set our validation flag // at this point if the validation scheme is auto if (fValScheme == Val_Auto && !fValidate) { fValidate = true; fElemStack.setValidationFlag(fValidate); } // we have seen a schema, so set up the fValidator as fSchemaValidator if (!fValidator->handlesSchema()) { if (fValidatorFromUser) { // the fValidator is from user ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Gen_NoSchemaValidator, fMemoryManager); } else { fValidator = fSchemaValidator; } } bool grammarFound = grammar && grammar->getGrammarType() == Grammar::SchemaGrammarType; SchemaGrammar* schemaGrammar; if (grammarFound) { schemaGrammar = (SchemaGrammar*) grammar; } else { schemaGrammar = new (fGrammarPoolMemoryManager) SchemaGrammar(fGrammarPoolMemoryManager); } XMLSchemaDescription* gramDesc = (XMLSchemaDescription*) schemaGrammar->getGrammarDescription(); gramDesc->setContextType(XMLSchemaDescription::CONTEXT_PREPARSE); gramDesc->setLocationHints(sysId); TraverseSchema traverseSchema ( root , fURIStringPool , schemaGrammar , fGrammarResolver , fUseCachedGrammar ? fCachedSchemaInfoList : fSchemaInfoList , fToCacheGrammar ? fCachedSchemaInfoList : fSchemaInfoList , this , sysId , fEntityHandler , fErrorReporter , fMemoryManager , grammarFound ); // Reset the now invalid schema roots in the collected // schema info entries. // { RefHash2KeysTableOfEnumerator i ( fToCacheGrammar ? fCachedSchemaInfoList : fSchemaInfoList); while (i.hasMoreElements ()) i.nextElement().resetRoot (); } if (fGrammarType == Grammar::DTDGrammarType) { fGrammar = schemaGrammar; fGrammarType = Grammar::SchemaGrammarType; fValidator->setGrammar(fGrammar); } if (fValidate) { // validate the Schema scan so far fValidator->preContentValidation(false); } } } } } } else { // Since we have seen a grammar, set our validation flag // at this point if the validation scheme is auto if (fValScheme == Val_Auto && !fValidate) { fValidate = true; fElemStack.setValidationFlag(fValidate); } // we have seen a schema, so set up the fValidator as fSchemaValidator if (!fValidator->handlesSchema()) { if (fValidatorFromUser) { // the fValidator is from user ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Gen_NoSchemaValidator, fMemoryManager); } else { fValidator = fSchemaValidator; } } if (fGrammarType == Grammar::DTDGrammarType) { fGrammar = grammar; fGrammarType = Grammar::SchemaGrammarType; fValidator->setGrammar(fGrammar); } } // fModel may need updating: if(getPSVIHandler()) fModel = fGrammarResolver->getXSModel(); } InputSource* IGXMLScanner::resolveSystemId(const XMLCh* const sysId ,const XMLCh* const pubId) { //Normalize sysId XMLBufBid nnSys(&fBufMgr); XMLBuffer& normalizedSysId = nnSys.getBuffer(); XMLString::removeChar(sysId, 0xFFFF, normalizedSysId); const XMLCh* normalizedURI = normalizedSysId.getRawBuffer(); // Create a buffer for expanding the system id XMLBufBid bbSys(&fBufMgr); XMLBuffer& expSysId = bbSys.getBuffer(); // Allow the entity handler to expand the system id if they choose // to do so. InputSource* srcToFill = 0; if (fEntityHandler) { if (!fEntityHandler->expandSystemId(normalizedURI, expSysId)) expSysId.set(normalizedURI); ReaderMgr::LastExtEntityInfo lastInfo; fReaderMgr.getLastExtEntityInfo(lastInfo); XMLResourceIdentifier resourceIdentifier(XMLResourceIdentifier::ExternalEntity, expSysId.getRawBuffer(), 0, pubId, lastInfo.systemId, &fReaderMgr); srcToFill = fEntityHandler->resolveEntity(&resourceIdentifier); } else { expSysId.set(normalizedURI); } // If they didn't create a source via the entity handler, then we // have to create one on our own. if (!srcToFill) { if (fDisableDefaultEntityResolution) return srcToFill; ReaderMgr::LastExtEntityInfo lastInfo; fReaderMgr.getLastExtEntityInfo(lastInfo); XMLURL urlTmp(fMemoryManager); if ((!urlTmp.setURL(lastInfo.systemId, expSysId.getRawBuffer(), urlTmp)) || (urlTmp.isRelative())) { if (!fStandardUriConformant) { XMLBufBid ddSys(&fBufMgr); XMLBuffer& resolvedSysId = ddSys.getBuffer(); XMLUri::normalizeURI(expSysId.getRawBuffer(), resolvedSysId); srcToFill = new (fMemoryManager) LocalFileInputSource ( lastInfo.systemId , resolvedSysId.getRawBuffer() , fMemoryManager ); } else ThrowXMLwithMemMgr(MalformedURLException, XMLExcepts::URL_MalformedURL, fMemoryManager); } else { if (fStandardUriConformant && urlTmp.hasInvalidChar()) ThrowXMLwithMemMgr(MalformedURLException, XMLExcepts::URL_MalformedURL, fMemoryManager); srcToFill = new (fMemoryManager) URLInputSource(urlTmp, fMemoryManager); } } return srcToFill; } // --------------------------------------------------------------------------- // IGXMLScanner: Private grammar preparsing methods // --------------------------------------------------------------------------- Grammar* IGXMLScanner::loadXMLSchemaGrammar(const InputSource& src, const bool toCache) { // Reset the validators fSchemaValidator->reset(); fSchemaValidator->setErrorReporter(fErrorReporter); fSchemaValidator->setExitOnFirstFatal(fExitOnFirstFatal); fSchemaValidator->setGrammarResolver(fGrammarResolver); if (fValidatorFromUser) fValidator->reset(); if (!fValidator->handlesSchema()) { if (fValidatorFromUser && fValidate) ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Gen_NoSchemaValidator, fMemoryManager); else { fValidator = fSchemaValidator; } } XSDDOMParser parser(0, fMemoryManager, 0); parser.setValidationScheme(XercesDOMParser::Val_Never); parser.setDoNamespaces(true); parser.setUserEntityHandler(fEntityHandler); parser.setUserErrorReporter(fErrorReporter); // Should just issue warning if the schema is not found bool flag = src.getIssueFatalErrorIfNotFound(); ((InputSource&) src).setIssueFatalErrorIfNotFound(false); parser.parse(src); // Reset the InputSource ((InputSource&) src).setIssueFatalErrorIfNotFound(flag); if (parser.getSawFatal() && fExitOnFirstFatal) emitError(XMLErrs::SchemaScanFatalError); DOMDocument* document = parser.getDocument(); //Our Grammar if (document != 0) { DOMElement* root = document->getDocumentElement();// This is what we pass to TraverserSchema if (root != 0) { const XMLCh* nsUri = root->getAttribute(SchemaSymbols::fgATT_TARGETNAMESPACE); Grammar* grammar = fGrammarResolver->getGrammar(nsUri); // Check if this exact schema has already been seen. // const XMLCh* sysId = src.getSystemId(); SchemaInfo* importSchemaInfo = 0; if (grammar) { if (nsUri && *nsUri) importSchemaInfo = fCachedSchemaInfoList->get(sysId, fURIStringPool->addOrFind(nsUri)); else importSchemaInfo = fCachedSchemaInfoList->get(sysId, fEmptyNamespaceId); } if (!importSchemaInfo) { bool grammarFound = grammar && grammar->getGrammarType() == Grammar::SchemaGrammarType && getHandleMultipleImports(); SchemaGrammar* schemaGrammar; if (grammarFound) schemaGrammar = (SchemaGrammar*) grammar; else schemaGrammar = new (fGrammarPoolMemoryManager) SchemaGrammar(fGrammarPoolMemoryManager); XMLSchemaDescription* gramDesc = (XMLSchemaDescription*) schemaGrammar->getGrammarDescription(); gramDesc->setContextType(XMLSchemaDescription::CONTEXT_PREPARSE); gramDesc->setLocationHints(sysId); TraverseSchema traverseSchema ( root , fURIStringPool , schemaGrammar , fGrammarResolver , fCachedSchemaInfoList , toCache ? fCachedSchemaInfoList : fSchemaInfoList , this , sysId , fEntityHandler , fErrorReporter , fMemoryManager , grammarFound ); grammar = schemaGrammar; // Reset the now invalid schema roots in the collected // schema info entries. // { RefHash2KeysTableOfEnumerator i ( toCache ? fCachedSchemaInfoList : fSchemaInfoList); while (i.hasMoreElements ()) i.nextElement().resetRoot (); } } if (fValidate) { // validate the Schema scan so far fValidator->setGrammar(grammar); fValidator->preContentValidation(false); } if (toCache) { fGrammarResolver->cacheGrammars(); } if(getPSVIHandler()) fModel = fGrammarResolver->getXSModel(); return grammar; } } return 0; } // --------------------------------------------------------------------------- // IGXMLScanner: Private parsing methods // --------------------------------------------------------------------------- // This method is called to do a raw scan of an attribute value. It does not // do normalization (since we don't know their types yet.) It just scans the // value and does entity expansion. // // End of entity's must be dealt with here. During DTD scan, they can come // from external entities. During content, they can come from any entity. // We just eat the end of entity and continue with our scan until we come // to the closing quote. If an unterminated value causes us to go through // subsequent entities, that will cause errors back in the calling code, // but there's little we can do about it here. bool IGXMLScanner::basicAttrValueScan(const XMLCh* const attrName, XMLBuffer& toFill) { // Reset the target buffer toFill.reset(); // Get the next char which must be a single or double quote XMLCh quoteCh; if (!fReaderMgr.skipIfQuote(quoteCh)) return false; // We have to get the current reader because we have to ignore closing // quotes until we hit the same reader again. const XMLSize_t curReader = fReaderMgr.getCurrentReaderNum(); // Loop until we get the attribute value. Note that we use a double // loop here to avoid the setup/teardown overhead of the exception // handler on every round. while (true) { try { while(true) { XMLCh nextCh = fReaderMgr.getNextChar(); if (nextCh != quoteCh) { if (nextCh != chAmpersand) { if ((nextCh < 0xD800) || (nextCh > 0xDFFF)) { // Its got to at least be a valid XML character if (!fReaderMgr.getCurrentReader()->isXMLChar(nextCh)) { if (nextCh == 0) ThrowXMLwithMemMgr(UnexpectedEOFException, XMLExcepts::Gen_UnexpectedEOF, fMemoryManager); XMLCh tmpBuf[9]; XMLString::binToText ( nextCh , tmpBuf , 8 , 16 , fMemoryManager ); emitError(XMLErrs::InvalidCharacterInAttrValue, attrName, tmpBuf); } } else // its a surrogate { // Deal with surrogate pairs // we expect a a leading surrogate. if (nextCh <= 0xDBFF) { toFill.append(nextCh); // process the trailing surrogate nextCh = fReaderMgr.getNextChar(); // it should be a trailing surrogate. if ((nextCh < 0xDC00) || (nextCh > 0xDFFF)) { emitError(XMLErrs::Expected2ndSurrogateChar); } } else { // Its a trailing surrogate, but we are not expecting it emitError(XMLErrs::Unexpected2ndSurrogateChar); } } } else // its a chAmpersand { // Check for an entity ref . We ignore the empty flag in // this one. bool escaped; XMLCh firstCh; XMLCh secondCh ; // If it was not returned directly, then jump back up if (scanEntityRef(true, firstCh, secondCh, escaped) == EntityExp_Returned) { // If it was escaped, then put in a 0xFFFF value. This will // be used later during validation and normalization of the // value to know that the following character was via an // escape char. if (escaped) toFill.append(0xFFFF); toFill.append(firstCh); if (secondCh) toFill.append(secondCh); } continue; } } else // its a quoteCh { // Check for our ending quote. It has to be in the same entity // as where we started. Quotes in nested entities are ignored. if (curReader == fReaderMgr.getCurrentReaderNum()) { return true; } // Watch for spillover into a previous entity if (curReader > fReaderMgr.getCurrentReaderNum()) { emitError(XMLErrs::PartialMarkupInEntity); return false; } } // add it to the buffer toFill.append(nextCh); } } catch(const EndOfEntityException&) { // Just eat it and continue. } } return true; } bool IGXMLScanner::scanAttValue( const XMLAttDef* const attDef , const XMLCh* const attrName , XMLBuffer& toFill) { enum States { InWhitespace , InContent }; // Get the type and name const XMLAttDef::AttTypes type = (attDef) ?attDef->getType() :XMLAttDef::CData; // Reset the target buffer toFill.reset(); // Get the next char which must be a single or double quote XMLCh quoteCh; if (!fReaderMgr.skipIfQuote(quoteCh)) return false; // We have to get the current reader because we have to ignore closing // quotes until we hit the same reader again. const XMLSize_t curReader = fReaderMgr.getCurrentReaderNum(); // Get attribute def - to check to see if it's declared externally or not bool isAttExternal = (attDef) ?attDef->isExternal() :false; // Loop until we get the attribute value. Note that we use a double // loop here to avoid the setup/teardown overhead of the exception // handler on every round. XMLCh nextCh; XMLCh secondCh = 0; States curState = InContent; bool firstNonWS = false; bool gotLeadingSurrogate = false; bool escaped; while (true) { try { while(true) { nextCh = fReaderMgr.getNextChar(); if (!nextCh) ThrowXMLwithMemMgr(UnexpectedEOFException, XMLExcepts::Gen_UnexpectedEOF, fMemoryManager); // Check for our ending quote in the same entity if (nextCh == quoteCh) { if (curReader == fReaderMgr.getCurrentReaderNum()) return true; // Watch for spillover into a previous entity if (curReader > fReaderMgr.getCurrentReaderNum()) { emitError(XMLErrs::PartialMarkupInEntity); return false; } } // Check for an entity ref now, before we let it affect our // whitespace normalization logic below. We ignore the empty flag // in this one. escaped = false; if (nextCh == chAmpersand) { if (scanEntityRef(true, nextCh, secondCh, escaped) != EntityExp_Returned) { gotLeadingSurrogate = false; continue; } } else if ((nextCh >= 0xD800) && (nextCh <= 0xDBFF)) { // Deal with surrogate pairs // Its a leading surrogate. If we already got one, then // issue an error, else set leading flag to make sure that // we look for a trailing next time. if (gotLeadingSurrogate) emitError(XMLErrs::Expected2ndSurrogateChar); else gotLeadingSurrogate = true; } else { // If its a trailing surrogate, make sure that we are // prepared for that. Else, its just a regular char so make // sure that we were not expected a trailing surrogate. if ((nextCh >= 0xDC00) && (nextCh <= 0xDFFF)) { // Its trailing, so make sure we were expecting it if (!gotLeadingSurrogate) emitError(XMLErrs::Unexpected2ndSurrogateChar); } else { // Its just a char, so make sure we were not expecting a // trailing surrogate. if (gotLeadingSurrogate) emitError(XMLErrs::Expected2ndSurrogateChar); // Its got to at least be a valid XML character if (!fReaderMgr.getCurrentReader()->isXMLChar(nextCh)) { XMLCh tmpBuf[9]; XMLString::binToText ( nextCh , tmpBuf , 8 , 16 , fMemoryManager ); emitError(XMLErrs::InvalidCharacterInAttrValue, attrName, tmpBuf); } } gotLeadingSurrogate = false; } // If its not escaped, then make sure its not a < character, which // is not allowed in attribute values. if (!escaped && (nextCh == chOpenAngle)) emitError(XMLErrs::BracketInAttrValue, attrName); // If the attribute is a CDATA type we do simple replacement of // tabs and new lines with spaces, if the character is not escaped // by way of a char ref. // // Otherwise, we do the standard non-CDATA normalization of // compressing whitespace to single spaces and getting rid of leading // and trailing whitespace. if (type == XMLAttDef::CData) { if (!escaped) { if ((nextCh == 0x09) || (nextCh == 0x0A) || (nextCh == 0x0D)) { // Check Validity Constraint for Standalone document declaration // XML 1.0, Section 2.9 if (fStandalone && fValidate && isAttExternal) { // Can't have a standalone document declaration of "yes" if attribute // values are subject to normalisation fValidator->emitError(XMLValid::NoAttNormForStandalone, attrName); } nextCh = chSpace; } } } else { if (curState == InWhitespace) { if ((escaped && nextCh != chSpace) || !fReaderMgr.getCurrentReader()->isWhitespace(nextCh)) { if (firstNonWS) toFill.append(chSpace); curState = InContent; firstNonWS = true; } else { continue; } } else if (curState == InContent) { if ((nextCh == chSpace) || (fReaderMgr.getCurrentReader()->isWhitespace(nextCh) && !escaped)) { curState = InWhitespace; // Check Validity Constraint for Standalone document declaration // XML 1.0, Section 2.9 if (fStandalone && fValidate && isAttExternal) { if (!firstNonWS || (nextCh != chSpace) || (fReaderMgr.lookingAtSpace())) { // Can't have a standalone document declaration of "yes" if attribute // values are subject to normalisation fValidator->emitError(XMLValid::NoAttNormForStandalone, attrName); } } continue; } firstNonWS = true; } } // Else add it to the buffer toFill.append(nextCh); if (secondCh) { toFill.append(secondCh); secondCh=0; } } } catch(const EndOfEntityException&) { // Just eat it and continue. gotLeadingSurrogate = false; escaped = false; } } return true; } // This method scans a CDATA section. It collects the character into one // of the temp buffers and calls the document handler, if any, with the // characters. It assumes that the getGrammarType() == Grammar::SchemaGrammarType) { // And see if the current element is a 'Children' style content model ComplexTypeInfo *currType = ((SchemaValidator*)fValidator)->getCurrentTypeInfo(); if(currType) { SchemaElementDecl::ModelTypes modelType = (SchemaElementDecl::ModelTypes) currType->getContentType(); if(modelType == SchemaElementDecl::Children || modelType == SchemaElementDecl::ElementOnlyEmpty) charOpts = XMLElementDecl::SpacesOk; else if(modelType == SchemaElementDecl::Empty) charOpts = XMLElementDecl::NoCharData; } } else // DTD grammar charOpts = topElem->fThisElement->getCharDataOpts(); while (true) { const XMLCh nextCh = fReaderMgr.getNextChar(); // Watch for unexpected end of file if (!nextCh) { emitError(XMLErrs::UnterminatedCDATASection); ThrowXMLwithMemMgr(UnexpectedEOFException, XMLExcepts::Gen_UnexpectedEOF, fMemoryManager); } if (fValidate && fStandalone && (fReaderMgr.getCurrentReader()->isWhitespace(nextCh))) { // This document is standalone; this ignorable CDATA whitespace is forbidden. // XML 1.0, Section 2.9 // And see if the current element is a 'Children' style content model if (topElem->fThisElement->isExternal()) { if (charOpts == XMLElementDecl::SpacesOk) // Element Content { // Error - standalone should have a value of "no" as whitespace detected in an // element type with element content whose element declaration was external fValidator->emitError(XMLValid::NoWSForStandalone); if(fGrammarType == Grammar::SchemaGrammarType) { if (getPSVIHandler()) { // REVISIT: // PSVIElement->setValidity(PSVIItem::VALIDITY_INVALID); } } } } } // If this is a close square bracket it could be our closing // sequence. if (nextCh == chCloseSquare && fReaderMgr.skippedString(CDataClose)) { // make sure we were not expecting a trailing surrogate. if (gotLeadingSurrogate) emitError(XMLErrs::Expected2ndSurrogateChar); if (fGrammarType == Grammar::SchemaGrammarType) { XMLSize_t xsLen = bbCData.getLen(); const XMLCh* xsNormalized = bbCData.getRawBuffer(); DatatypeValidator* tempDV = ((SchemaValidator*) fValidator)->getCurrentDatatypeValidator(); if (tempDV && tempDV->getWSFacet() != DatatypeValidator::PRESERVE) { // normalize the character according to schema whitespace facet ((SchemaValidator*) fValidator)->normalizeWhiteSpace(tempDV, xsNormalized, fWSNormalizeBuf); xsNormalized = fWSNormalizeBuf.getRawBuffer(); xsLen = fWSNormalizeBuf.getLen(); if (fNormalizeData && fValidate) { bbCData.set(xsNormalized); } } if (fValidate) { // tell the schema validation about the character data for checkContent later ((SchemaValidator*)fValidator)->setDatatypeBuffer(xsNormalized); if (charOpts != XMLElementDecl::AllCharData) { // They definitely cannot handle any type of char data fValidator->emitError(XMLValid::NoCharDataInCM); if (getPSVIHandler()) { // REVISIT: // PSVIElement->setValidity(PSVIItem::VALIDITY_INVALID); } } } // call all active identity constraints if (toCheckIdentityConstraint() && fICHandler->getMatcherCount()) { fContent.append(xsNormalized, xsLen); } } else { if (fValidate) { if (charOpts != XMLElementDecl::AllCharData) { // They definitely cannot handle any type of char data fValidator->emitError(XMLValid::NoCharDataInCM); } } } // If we have a doc handler, call it if (fDocHandler) { fDocHandler->docCharacters( bbCData.getRawBuffer(), bbCData.getLen(), true ); } // And we are done break; } // Make sure its a valid character. But if we've emitted an error // already, don't bother with the overhead since we've already told // them about it. if (!emittedError) { // Deal with surrogate pairs if ((nextCh >= 0xD800) && (nextCh <= 0xDBFF)) { // Its a leading surrogate. If we already got one, then // issue an error, else set leading flag to make sure that // we look for a trailing next time. if (gotLeadingSurrogate) emitError(XMLErrs::Expected2ndSurrogateChar); else gotLeadingSurrogate = true; } else { // If its a trailing surrogate, make sure that we are // prepared for that. Else, its just a regular char so make // sure that we were not expected a trailing surrogate. if ((nextCh >= 0xDC00) && (nextCh <= 0xDFFF)) { // Its trailing, so make sure we were expecting it if (!gotLeadingSurrogate) emitError(XMLErrs::Unexpected2ndSurrogateChar); } else { // Its just a char, so make sure we were not expecting a // trailing surrogate. if (gotLeadingSurrogate) emitError(XMLErrs::Expected2ndSurrogateChar); // Its got to at least be a valid XML character else if (!fReaderMgr.getCurrentReader()->isXMLChar(nextCh)) { XMLCh tmpBuf[9]; XMLString::binToText ( nextCh , tmpBuf , 8 , 16 , fMemoryManager ); emitError(XMLErrs::InvalidCharacter, tmpBuf); emittedError = true; } } gotLeadingSurrogate = false; } } // Add it to the buffer bbCData.append(nextCh); } } void IGXMLScanner::scanCharData(XMLBuffer& toUse) { // We have to watch for the stupid ]]> sequence, which is illegal in // character data. So this is a little state machine that handles that. enum States { State_Waiting , State_GotOne , State_GotTwo }; // Reset the buffer before we start toUse.reset(); // Turn on the 'throw at end' flag of the reader manager ThrowEOEJanitor jan(&fReaderMgr, true); // In order to be more efficient we have to use kind of a deeply nested // set of blocks here. The outer block puts on a try and catches end of // entity exceptions. The inner loop is the per-character loop. If we // put the try inside the inner loop, it would work but would require // the exception handling code setup/teardown code to be invoked for // each character. XMLCh nextCh; XMLCh secondCh = 0; States curState = State_Waiting; bool escaped = false; bool gotLeadingSurrogate = false; bool notDone = true; while (notDone) { try { while (true) { // Eat through as many plain content characters as possible without // needing special handling. Moving most content characters here, // in this one call, rather than running the overall loop once // per content character, is a speed optimization. if (curState == State_Waiting && !gotLeadingSurrogate) { fReaderMgr.movePlainContentChars(toUse); } // Try to get another char from the source // The code from here on down covers all contengencies, if (!fReaderMgr.getNextCharIfNot(chOpenAngle, nextCh)) { // If we were waiting for a trailing surrogate, its an error if (gotLeadingSurrogate) emitError(XMLErrs::Expected2ndSurrogateChar); notDone = false; break; } // Watch for a reference. Note that the escapement mechanism // is ignored in this content. escaped = false; if (nextCh == chAmpersand) { sendCharData(toUse); // Turn off the throwing at the end of entity during this ThrowEOEJanitor jan(&fReaderMgr, false); if (scanEntityRef(false, nextCh, secondCh, escaped) != EntityExp_Returned) { gotLeadingSurrogate = false; continue; } else { if (escaped && !fElemStack.isEmpty()) fElemStack.setReferenceEscaped(); } } else if ((nextCh >= 0xD800) && (nextCh <= 0xDBFF)) { // Deal with surrogate pairs // Its a leading surrogate. If we already got one, then // issue an error, else set leading flag to make sure that // we look for a trailing next time. if (gotLeadingSurrogate) emitError(XMLErrs::Expected2ndSurrogateChar); else gotLeadingSurrogate = true; } else { // If its a trailing surrogate, make sure that we are // prepared for that. Else, its just a regular char so make // sure that we were not expected a trailing surrogate. if ((nextCh >= 0xDC00) && (nextCh <= 0xDFFF)) { // Its trailing, so make sure we were expecting it if (!gotLeadingSurrogate) emitError(XMLErrs::Unexpected2ndSurrogateChar); } else { // Its just a char, so make sure we were not expecting a // trailing surrogate. if (gotLeadingSurrogate) emitError(XMLErrs::Expected2ndSurrogateChar); // Make sure the returned char is a valid XML char if (!fReaderMgr.getCurrentReader()->isXMLChar(nextCh)) { XMLCh tmpBuf[9]; XMLString::binToText ( nextCh , tmpBuf , 8 , 16 , fMemoryManager ); emitError(XMLErrs::InvalidCharacter, tmpBuf); } } gotLeadingSurrogate = false; } // Keep the state machine up to date if (!escaped) { if (nextCh == chCloseSquare) { if (curState == State_Waiting) curState = State_GotOne; else if (curState == State_GotOne) curState = State_GotTwo; } else if (nextCh == chCloseAngle) { if (curState == State_GotTwo) emitError(XMLErrs::BadSequenceInCharData); curState = State_Waiting; } else { curState = State_Waiting; } } else { curState = State_Waiting; } // Add this char to the buffer toUse.append(nextCh); if (secondCh) { toUse.append(secondCh); secondCh=0; } } } catch(const EndOfEntityException& toCatch) { // Some entity ended, so we have to send any accumulated // chars and send an end of entity event. sendCharData(toUse); gotLeadingSurrogate = false; if (fDocHandler) fDocHandler->endEntityReference(toCatch.getEntity()); } } // Check the validity constraints as per XML 1.0 Section 2.9 if (fValidate && fStandalone) { // See if the text contains whitespace // Get the raw data we need for the callback const XMLCh* rawBuf = toUse.getRawBuffer(); const XMLSize_t len = toUse.getLen(); const bool isSpaces = fReaderMgr.getCurrentReader()->containsWhiteSpace(rawBuf, len); if (isSpaces) { // And see if the current element is a 'Children' style content model const ElemStack::StackElem* topElem = fElemStack.topElement(); if (topElem->fThisElement->isExternal()) { // Get the character data opts for the current element XMLElementDecl::CharDataOpts charOpts = XMLElementDecl::AllCharData; if(fGrammar->getGrammarType() == Grammar::SchemaGrammarType) { // And see if the current element is a 'Children' style content model ComplexTypeInfo *currType = ((SchemaValidator*)fValidator)->getCurrentTypeInfo(); if(currType) { SchemaElementDecl::ModelTypes modelType = (SchemaElementDecl::ModelTypes) currType->getContentType(); if(modelType == SchemaElementDecl::Children || modelType == SchemaElementDecl::ElementOnlyEmpty) charOpts = XMLElementDecl::SpacesOk; else if(modelType == SchemaElementDecl::Empty) charOpts = XMLElementDecl::NoCharData; } } else // DTD grammar charOpts = topElem->fThisElement->getCharDataOpts(); if (charOpts == XMLElementDecl::SpacesOk) // => Element Content { // Error - standalone should have a value of "no" as whitespace detected in an // element type with element content whose element declaration was external // fValidator->emitError(XMLValid::NoWSForStandalone); if(fGrammarType == Grammar::SchemaGrammarType) { if (getPSVIHandler()) { // REVISIT: // PSVIElement->setValidity(PSVIItem::VALIDITY_INVALID); } } } } } } // Send any char data that we accumulated into the buffer sendCharData(toUse); } // This method will scan a general/character entity ref. It will either // expand a char ref and return it directly, or push a reader for a general // entity. // // The return value indicates whether the char parameters hold the value // or whether the value was pushed as a reader, or that it failed. // // The escaped flag tells the caller whether the returned parameter resulted // from a character reference, which escapes the character in some cases. It // only makes any difference if the return value indicates the value was // returned directly. IGXMLScanner::EntityExpRes IGXMLScanner::scanEntityRef( const bool inAttVal , XMLCh& firstCh , XMLCh& secondCh , bool& escaped) { // Assume no escape secondCh = 0; escaped = false; // We have to insure that its all in one entity const XMLSize_t curReader = fReaderMgr.getCurrentReaderNum(); // If the next char is a pound, then its a character reference and we // need to expand it always. if (fReaderMgr.skippedChar(chPound)) { // Its a character reference, so scan it and get back the numeric // value it represents. if (!scanCharRef(firstCh, secondCh)) return EntityExp_Failed; escaped = true; if (curReader != fReaderMgr.getCurrentReaderNum()) emitError(XMLErrs::PartialMarkupInEntity); return EntityExp_Returned; } // Expand it since its a normal entity ref XMLBufBid bbName(&fBufMgr); int colonPosition; bool validName = fDoNamespaces ? fReaderMgr.getQName(bbName.getBuffer(), &colonPosition) : fReaderMgr.getName(bbName.getBuffer()); if (!validName) { if (bbName.isEmpty()) emitError(XMLErrs::ExpectedEntityRefName); else emitError(XMLErrs::InvalidEntityRefName, bbName.getRawBuffer()); return EntityExp_Failed; } // Next char must be a semi-colon. But if its not, just emit // an error and try to continue. if (!fReaderMgr.skippedChar(chSemiColon)) emitError(XMLErrs::UnterminatedEntityRef, bbName.getRawBuffer()); // Make sure we ended up on the same entity reader as the & char if (curReader != fReaderMgr.getCurrentReaderNum()) emitError(XMLErrs::PartialMarkupInEntity); // Look up the name in the general entity pool XMLEntityDecl* decl = fDTDGrammar->getEntityDecl(bbName.getRawBuffer()); // If it does not exist, then obviously an error if (!decl) { // XML 1.0 Section 4.1 // Well-formedness Constraint for entity not found: // In a document without any DTD, a document with only an internal DTD subset which contains no parameter entity references, // or a document with "standalone='yes'", for an entity reference that does not occur within the external subset // or a parameter entity // // Else it's Validity Constraint if (fStandalone || fHasNoDTD) emitError(XMLErrs::EntityNotFound, bbName.getRawBuffer()); else { if (fValidate) fValidator->emitError(XMLValid::VC_EntityNotFound, bbName.getRawBuffer()); } return EntityExp_Failed; } // XML 1.0 Section 4.1 // If we are a standalone document, then it has to have been declared // in the internal subset. if (fStandalone && !decl->getDeclaredInIntSubset()) emitError(XMLErrs::IllegalRefInStandalone, bbName.getRawBuffer()); if (decl->isExternal()) { // If its unparsed, then its not valid here if (decl->isUnparsed()) { emitError(XMLErrs::NoUnparsedEntityRefs, bbName.getRawBuffer()); return EntityExp_Failed; } // If we are in an attribute value, then not valid but keep going if (inAttVal) emitError(XMLErrs::NoExtRefsInAttValue); // And now create a reader to read this entity InputSource* srcUsed; XMLReader* reader = fReaderMgr.createReader ( decl->getBaseURI() , decl->getSystemId() , decl->getPublicId() , false , XMLReader::RefFrom_NonLiteral , XMLReader::Type_General , XMLReader::Source_External , srcUsed , fCalculateSrcOfs , fLowWaterMark , fDisableDefaultEntityResolution ); // Put a janitor on the source so it gets cleaned up on exit Janitor janSrc(srcUsed); // If the creation failed, and its not because the source was empty, // then emit an error and return. if (!reader) ThrowXMLwithMemMgr1(RuntimeException, XMLExcepts::Gen_CouldNotOpenExtEntity, srcUsed ? srcUsed->getSystemId() : decl->getSystemId(), fMemoryManager); // Push the reader. If its a recursive expansion, then emit an error // and return an failure. if (!fReaderMgr.pushReader(reader, decl)) { emitError(XMLErrs::RecursiveEntity, decl->getName()); return EntityExp_Failed; } // here's where we need to check if there's a SecurityManager, // how many entity references we've had if(fSecurityManager != 0 && ++fEntityExpansionCount > fEntityExpansionLimit) { XMLCh expLimStr[32]; XMLString::sizeToText(fEntityExpansionLimit, expLimStr, 31, 10, fMemoryManager); emitError ( XMLErrs::EntityExpansionLimitExceeded , expLimStr ); // there seems nothing better to be done than to reset the entity expansion counter fEntityExpansionCount = 0; } // Do a start entity reference event. // // For now, we supress them in att values. Later, when // the stuff is in place to correctly allow DOM to handle them // we'll turn this back on. if (fDocHandler && !inAttVal) fDocHandler->startEntityReference(*decl); // If it starts with the XML string, then parse a text decl if (checkXMLDecl(true)) scanXMLDecl(Decl_Text); } else { // If its one of the special char references, then we can return // it as a character, and its considered escaped. if (decl->getIsSpecialChar()) { firstCh = decl->getValue()[0]; escaped = true; return EntityExp_Returned; } // Create a reader over a memory stream over the entity value // We force it to assume UTF-16 by passing in an encoding // string. This way it won't both trying to predecode the // first line, looking for an XML/TextDecl. XMLReader* valueReader = fReaderMgr.createIntEntReader ( decl->getName() , XMLReader::RefFrom_NonLiteral , XMLReader::Type_General , decl->getValue() , decl->getValueLen() , false ); // Try to push the entity reader onto the reader manager stack, // where it will become the subsequent input. If it fails, that // means the entity is recursive, so issue an error. The reader // will have just been discarded, but we just keep going. if (!fReaderMgr.pushReader(valueReader, decl)) emitError(XMLErrs::RecursiveEntity, decl->getName()); // here's where we need to check if there's a SecurityManager, // how many entity references we've had if(fSecurityManager != 0 && ++fEntityExpansionCount > fEntityExpansionLimit) { XMLCh expLimStr[32]; XMLString::sizeToText(fEntityExpansionLimit, expLimStr, 31, 10, fMemoryManager); emitError ( XMLErrs::EntityExpansionLimitExceeded , expLimStr ); } // Do a start entity reference event. // // For now, we supress them in att values. Later, when // the stuff is in place to correctly allow DOM to handle them // we'll turn this back on. if (fDocHandler && !inAttVal) fDocHandler->startEntityReference(*decl); // If it starts with the XML string, then it's an error if (checkXMLDecl(true)) { emitError(XMLErrs::TextDeclNotLegalHere); fReaderMgr.skipPastChar(chCloseAngle); } } return EntityExp_Pushed; } bool IGXMLScanner::switchGrammar(const XMLCh* const newGrammarNameSpace) { Grammar* tempGrammar = fGrammarResolver->getGrammar(newGrammarNameSpace); if (!tempGrammar && !fSkipDTDValidation) { // This is a case where namespaces is on with a DTD grammar. tempGrammar = fDTDGrammar; } if (!tempGrammar) { return false; } else { Grammar::GrammarType tempGrammarType = tempGrammar->getGrammarType(); if (tempGrammarType == Grammar::SchemaGrammarType && !fValidator->handlesSchema()) { if (fValidatorFromUser) ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Gen_NoSchemaValidator, fMemoryManager); else { fValidator = fSchemaValidator; } } else if (tempGrammarType == Grammar::DTDGrammarType) { if (fSkipDTDValidation) { return false; } if (!fValidator->handlesDTD()) { if (fValidatorFromUser) ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Gen_NoDTDValidator, fMemoryManager); else { fValidator = fDTDValidator; } } } fGrammarType = tempGrammarType; fGrammar = tempGrammar; fValidator->setGrammar(fGrammar); return true; } } // check if we should skip or lax the validation of the element // if skip - no validation // if lax - validate only if the element if found bool IGXMLScanner::laxElementValidation(QName* element, ContentLeafNameTypeVector* cv, const XMLContentModel* const cm, const XMLSize_t parentElemDepth) { bool skipThisOne = false; bool laxThisOne = false; unsigned int elementURI = element->getURI(); unsigned int currState = fElemState[parentElemDepth]; unsigned int currLoop = fElemLoopState[parentElemDepth]; if (currState == XMLContentModel::gInvalidTrans) { return laxThisOne; } SubstitutionGroupComparator comparator(fGrammarResolver, fURIStringPool); if (cv) { XMLSize_t i = 0; XMLSize_t leafCount = cv->getLeafCount(); unsigned int nextState = 0; for (; i < leafCount; i++) { QName* fElemMap = cv->getLeafNameAt(i); unsigned int uri = fElemMap->getURI(); ContentSpecNode::NodeTypes type = cv->getLeafTypeAt(i); if (type == ContentSpecNode::Leaf) { if (((uri == elementURI) && XMLString::equals(fElemMap->getLocalPart(), element->getLocalPart())) || comparator.isEquivalentTo(element, fElemMap)) { nextState = cm->getNextState(currState, i); if (nextState != XMLContentModel::gInvalidTrans) break; } } else if ((type & 0x0f) == ContentSpecNode::Any) { nextState = cm->getNextState(currState, i); if (nextState != XMLContentModel::gInvalidTrans) break; } else if ((type & 0x0f) == ContentSpecNode::Any_Other) { if (uri != elementURI && elementURI != fEmptyNamespaceId) { nextState = cm->getNextState(currState, i); if (nextState != XMLContentModel::gInvalidTrans) break; } } else if ((type & 0x0f) == ContentSpecNode::Any_NS) { if (uri == elementURI) { nextState = cm->getNextState(currState, i); if (nextState != XMLContentModel::gInvalidTrans) break; } } } // for if (i == leafCount) { // no match fElemState[parentElemDepth] = XMLContentModel::gInvalidTrans; fElemLoopState[parentElemDepth] = 0; return laxThisOne; } unsigned int nextLoop = 0; if(!cm->handleRepetitions(element, currState, currLoop, nextState, nextLoop, i, &comparator)) { fElemState[parentElemDepth] = XMLContentModel::gInvalidTrans; fElemLoopState[parentElemDepth] = 0; return laxThisOne; } ContentSpecNode::NodeTypes type = cv->getLeafTypeAt(i); if ((type & 0x0f) == ContentSpecNode::Any || (type & 0x0f) == ContentSpecNode::Any_Other || (type & 0x0f) == ContentSpecNode::Any_NS) { if (type == ContentSpecNode::Any_Skip || type == ContentSpecNode::Any_NS_Skip || type == ContentSpecNode::Any_Other_Skip) { skipThisOne = true; } else if (type == ContentSpecNode::Any_Lax || type == ContentSpecNode::Any_NS_Lax || type == ContentSpecNode::Any_Other_Lax) { laxThisOne = true; } } fElemState[parentElemDepth] = nextState; fElemLoopState[parentElemDepth] = nextLoop; } // if if (skipThisOne) { fValidate = false; fElemStack.setValidationFlag(fValidate); } return laxThisOne; } // check if there is an AnyAttribute, and if so, see if we should lax or skip // if skip - no validation // if lax - validate only if the attribute if found bool IGXMLScanner::anyAttributeValidation(SchemaAttDef* attWildCard, unsigned int uriId, bool& skipThisOne, bool& laxThisOne) { XMLAttDef::AttTypes wildCardType = attWildCard->getType(); bool anyEncountered = false; skipThisOne = false; laxThisOne = false; if (wildCardType == XMLAttDef::Any_Any) anyEncountered = true; else if (wildCardType == XMLAttDef::Any_Other) { if (attWildCard->getAttName()->getURI() != uriId && uriId != fEmptyNamespaceId) anyEncountered = true; } else if (wildCardType == XMLAttDef::Any_List) { ValueVectorOf* nameURIList = attWildCard->getNamespaceList(); XMLSize_t listSize = (nameURIList) ? nameURIList->size() : 0; if (listSize) { for (XMLSize_t i=0; i < listSize; i++) { if (nameURIList->elementAt(i) == uriId) anyEncountered = true; } } } if (anyEncountered) { XMLAttDef::DefAttTypes defType = attWildCard->getDefaultType(); if (defType == XMLAttDef::ProcessContents_Skip) { // attribute should just be bypassed, skipThisOne = true; } else if (defType == XMLAttDef::ProcessContents_Lax) { laxThisOne = true; } } return anyEncountered; } inline XMLAttDefList& getAttDefList(bool isSchemaGrammar , ComplexTypeInfo* currType , XMLElementDecl* elemDecl) { if (isSchemaGrammar && currType) return currType->getAttDefList(); else return elemDecl->getAttDefList(); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/internal/XMLInternalErrorHandler.hpp0000644000175000017500000001034610606722647023476 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLInternalErrorHandler.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_XMLINTERNALERRORHANDLER_HPP) #define XERCESC_INCLUDE_GUARD_XMLINTERNALERRORHANDLER_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN class XMLInternalErrorHandler : public ErrorHandler { public: // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- XMLInternalErrorHandler(ErrorHandler* userHandler = 0) : fSawWarning(false), fSawError(false), fSawFatal(false), fUserErrorHandler(userHandler) { } ~XMLInternalErrorHandler() { } // ----------------------------------------------------------------------- // Implementation of the error handler interface // ----------------------------------------------------------------------- void warning(const SAXParseException& toCatch); void error(const SAXParseException& toCatch); void fatalError(const SAXParseException& toCatch); void resetErrors(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- bool getSawWarning() const; bool getSawError() const; bool getSawFatal() const; // ----------------------------------------------------------------------- // Private data members // // fSawWarning // This is set if we get any warning, and is queryable via a getter // method. // // fSawError // This is set if we get any errors, and is queryable via a getter // method. // // fSawFatal // This is set if we get any fatal, and is queryable via a getter // method. // // fUserErrorHandler // This is the error handler from user // ----------------------------------------------------------------------- bool fSawWarning; bool fSawError; bool fSawFatal; ErrorHandler* fUserErrorHandler; private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XMLInternalErrorHandler(const XMLInternalErrorHandler&); XMLInternalErrorHandler& operator=(const XMLInternalErrorHandler&); }; inline bool XMLInternalErrorHandler::getSawWarning() const { return fSawWarning; } inline bool XMLInternalErrorHandler::getSawError() const { return fSawError; } inline bool XMLInternalErrorHandler::getSawFatal() const { return fSawFatal; } inline void XMLInternalErrorHandler::warning(const SAXParseException& toCatch) { fSawWarning = true; if (fUserErrorHandler) fUserErrorHandler->warning(toCatch); } inline void XMLInternalErrorHandler::error(const SAXParseException& toCatch) { fSawError = true; if (fUserErrorHandler) fUserErrorHandler->error(toCatch); } inline void XMLInternalErrorHandler::fatalError(const SAXParseException& toCatch) { fSawFatal = true; if (fUserErrorHandler) fUserErrorHandler->fatalError(toCatch); } inline void XMLInternalErrorHandler::resetErrors() { fSawWarning = false; fSawError = false; fSawFatal = false; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/internal/VecAttributesImpl.hpp0000644000175000017500000001115211031207655022421 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: VecAttributesImpl.hpp 672311 2008-06-27 16:05:01Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_VECATTRIBUTESIMPL_HPP) #define XERCESC_INCLUDE_GUARD_VECATTRIBUTESIMPL_HPP #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN class XMLPARSER_EXPORT VecAttributesImpl : public Attributes { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- VecAttributesImpl(); ~VecAttributesImpl(); // ----------------------------------------------------------------------- // Implementation of the attributes interface // ----------------------------------------------------------------------- virtual XMLSize_t getLength() const ; virtual const XMLCh* getURI(const XMLSize_t index) const; virtual const XMLCh* getLocalName(const XMLSize_t index) const ; virtual const XMLCh* getQName(const XMLSize_t index) const ; virtual const XMLCh* getType(const XMLSize_t index) const ; virtual const XMLCh* getValue(const XMLSize_t index) const ; virtual bool getIndex(const XMLCh* const uri, const XMLCh* const localPart, XMLSize_t& index) const; virtual int getIndex(const XMLCh* const uri, const XMLCh* const localPart ) const ; virtual bool getIndex(const XMLCh* const qName, XMLSize_t& index) const; virtual int getIndex(const XMLCh* const qName ) const ; virtual const XMLCh* getType(const XMLCh* const uri, const XMLCh* const localPart ) const ; virtual const XMLCh* getType(const XMLCh* const qName) const ; virtual const XMLCh* getValue(const XMLCh* const qName) const; virtual const XMLCh* getValue(const XMLCh* const uri, const XMLCh* const localPart ) const ; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- void setVector ( const RefVectorOf* const srcVec , const XMLSize_t count , const XMLScanner * const scanner , const bool adopt = false ); private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- VecAttributesImpl(const VecAttributesImpl&); VecAttributesImpl& operator=(const VecAttributesImpl&); // ----------------------------------------------------------------------- // Private data members // // fAdopt // Indicates whether the passed vector is to be adopted or not. If // so, we destroy it when we are destroyed (and when a new vector is // set!) // // fCount // The count of elements in the vector that should be considered // valid. This is an optimization to allow vector elements to be // reused over and over but a different count of them be valid for // each use. // // fVector // The vector that provides the backing for the list. // // fScanner // This is a pointer to the in use Scanner, so that we can resolve // namespace URIs from UriIds // // fURIBuffer // A temporary buffer which is re-used when getting namespace URI's // ----------------------------------------------------------------------- bool fAdopt; XMLSize_t fCount; const RefVectorOf* fVector; const XMLScanner * fScanner ; }; XERCES_CPP_NAMESPACE_END #endif // ! VECATTRIBUTESIMPL_HPP xerces-c-3.1.1/src/xercesc/internal/IANAEncodings.hpp0000644000175000017500000020567010606722647021401 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: IANAEncodings.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_IANAENCODINGS_HPP) #define XERCESC_INCLUDE_GUARD_IANAENCODINGS_HPP #include XERCES_CPP_NAMESPACE_BEGIN // ---------------------------------------------------------------- // This file was generated from the IANA charset source. // so do not edit this file directly!! // ---------------------------------------------------------------- const XMLCh gEncodingArray[][46] = { { 0x0041,0x004E,0x0053,0x0049,0x005F,0x0058,0x0033,0x002E,0x0034,0x002D,0x0031,0x0039,0x0036,0x0038,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0036,0x00 } , { 0x0041,0x004E,0x0053,0x0049,0x005F,0x0058,0x0033,0x002E,0x0034,0x002D,0x0031,0x0039,0x0038,0x0036,0x00 } , { 0x0049,0x0053,0x004F,0x005F,0x0036,0x0034,0x0036,0x002E,0x0069,0x0072,0x0076,0x003A,0x0031,0x0039,0x0039,0x0031,0x00 } , { 0x0041,0x0053,0x0043,0x0049,0x0049,0x00 } , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0055,0x0053,0x00 } , { 0x0055,0x0053,0x002D,0x0041,0x0053,0x0043,0x0049,0x0049,0x00 } , { 0x0075,0x0073,0x00 } , { 0x0049,0x0042,0x004D,0x0033,0x0036,0x0037,0x00 } , { 0x0063,0x0070,0x0033,0x0036,0x0037,0x00 } , { 0x0063,0x0073,0x0041,0x0053,0x0043,0x0049,0x0049,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0031,0x0030,0x0036,0x0034,0x0036,0x002D,0x0055,0x0054,0x0046,0x002D,0x0031,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0030,0x0036,0x0034,0x0036,0x0055,0x0054,0x0046,0x0031,0x00 } , { 0x0049,0x0053,0x004F,0x005F,0x0036,0x0034,0x0036,0x002E,0x0062,0x0061,0x0073,0x0069,0x0063,0x003A,0x0031,0x0039,0x0038,0x0033,0x00 } , { 0x0072,0x0065,0x0066,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x0062,0x0061,0x0073,0x0069,0x0063,0x0031,0x0039,0x0038,0x0033,0x00 } , { 0x0049,0x004E,0x0056,0x0041,0x0052,0x0049,0x0041,0x004E,0x0054,0x00 } , { 0x0063,0x0073,0x0049,0x004E,0x0056,0x0041,0x0052,0x0049,0x0041,0x004E,0x0054,0x00 } , { 0x0049,0x0053,0x004F,0x005F,0x0036,0x0034,0x0036,0x002E,0x0069,0x0072,0x0076,0x003A,0x0031,0x0039,0x0038,0x0033,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0032,0x00 } , { 0x0069,0x0072,0x0076,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0032,0x0049,0x006E,0x0074,0x006C,0x0052,0x0065,0x0066,0x0056,0x0065,0x0072,0x0073,0x0069,0x006F,0x006E,0x00 } , { 0x0042,0x0053,0x005F,0x0034,0x0037,0x0033,0x0030,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0034,0x00 } , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0047,0x0042,0x00 } , { 0x0067,0x0062,0x00 } , { 0x0075,0x006B,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0034,0x0055,0x006E,0x0069,0x0074,0x0065,0x0064,0x004B,0x0069,0x006E,0x0067,0x0064,0x006F,0x006D,0x00 } , { 0x004E,0x0041,0x0054,0x0053,0x002D,0x0053,0x0045,0x0046,0x0049,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0038,0x002D,0x0031,0x00 } , { 0x0063,0x0073,0x004E,0x0041,0x0054,0x0053,0x0053,0x0045,0x0046,0x0049,0x00 } , { 0x004E,0x0041,0x0054,0x0053,0x002D,0x0053,0x0045,0x0046,0x0049,0x002D,0x0041,0x0044,0x0044,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0038,0x002D,0x0032,0x00 } , { 0x0063,0x0073,0x004E,0x0041,0x0054,0x0053,0x0053,0x0045,0x0046,0x0049,0x0041,0x0044,0x0044,0x00 } , { 0x004E,0x0041,0x0054,0x0053,0x002D,0x0044,0x0041,0x004E,0x004F,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0039,0x002D,0x0031,0x00 } , { 0x0063,0x0073,0x004E,0x0041,0x0054,0x0053,0x0044,0x0041,0x004E,0x004F,0x00 } , { 0x004E,0x0041,0x0054,0x0053,0x002D,0x0044,0x0041,0x004E,0x004F,0x002D,0x0041,0x0044,0x0044,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0039,0x002D,0x0032,0x00 } , { 0x0063,0x0073,0x004E,0x0041,0x0054,0x0053,0x0044,0x0041,0x004E,0x004F,0x0041,0x0044,0x0044,0x00 } , { 0x0053,0x0045,0x004E,0x005F,0x0038,0x0035,0x0030,0x0032,0x0030,0x0030,0x005F,0x0042,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0030,0x00 } , { 0x0046,0x0049,0x00 } , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0046,0x0049,0x00 } , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0053,0x0045,0x00 } , { 0x0073,0x0065,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0030,0x0053,0x0077,0x0065,0x0064,0x0069,0x0073,0x0068,0x00 } , { 0x0053,0x0045,0x004E,0x005F,0x0038,0x0035,0x0030,0x0032,0x0030,0x0030,0x005F,0x0043,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0031,0x00 } , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0053,0x0045,0x0032,0x00 } , { 0x0073,0x0065,0x0032,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0031,0x0053,0x0077,0x0065,0x0064,0x0069,0x0073,0x0068,0x0046,0x006F,0x0072,0x004E,0x0061,0x006D,0x0065,0x0073,0x00 } , { 0x004B,0x0053,0x005F,0x0043,0x005F,0x0035,0x0036,0x0030,0x0031,0x002D,0x0031,0x0039,0x0038,0x0037,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0034,0x0039,0x00 } , { 0x004B,0x0053,0x005F,0x0043,0x005F,0x0035,0x0036,0x0030,0x0031,0x002D,0x0031,0x0039,0x0038,0x0039,0x00 } , { 0x004B,0x0053,0x0043,0x005F,0x0035,0x0036,0x0030,0x0031,0x00 } , { 0x006B,0x006F,0x0072,0x0065,0x0061,0x006E,0x00 } , { 0x0063,0x0073,0x004B,0x0053,0x0043,0x0035,0x0036,0x0030,0x0031,0x0031,0x0039,0x0038,0x0037,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0032,0x0030,0x0032,0x0032,0x002D,0x004B,0x0052,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0032,0x0030,0x0032,0x0032,0x004B,0x0052,0x00 } , { 0x0045,0x0055,0x0043,0x002D,0x004B,0x0052,0x00 } , { 0x0063,0x0073,0x0045,0x0055,0x0043,0x004B,0x0052,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0032,0x0030,0x0032,0x0032,0x002D,0x004A,0x0050,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0032,0x0030,0x0032,0x0032,0x004A,0x0050,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0032,0x0030,0x0032,0x0032,0x002D,0x004A,0x0050,0x002D,0x0032,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0032,0x0030,0x0032,0x0032,0x004A,0x0050,0x0032,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0032,0x0030,0x0032,0x0032,0x002D,0x0043,0x004E,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0032,0x0030,0x0032,0x0032,0x002D,0x0043,0x004E,0x002D,0x0045,0x0058,0x0054,0x00 } , { 0x004A,0x0049,0x0053,0x005F,0x0043,0x0036,0x0032,0x0032,0x0030,0x002D,0x0031,0x0039,0x0036,0x0039,0x002D,0x006A,0x0070,0x00 } , { 0x004A,0x0049,0x0053,0x005F,0x0043,0x0036,0x0032,0x0032,0x0030,0x002D,0x0031,0x0039,0x0036,0x0039,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0033,0x00 } , { 0x006B,0x0061,0x0074,0x0061,0x006B,0x0061,0x006E,0x0061,0x00 } , { 0x0078,0x0030,0x0032,0x0030,0x0031,0x002D,0x0037,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0033,0x004A,0x0049,0x0053,0x0043,0x0036,0x0032,0x0032,0x0030,0x006A,0x0070,0x00 } , { 0x004A,0x0049,0x0053,0x005F,0x0043,0x0036,0x0032,0x0032,0x0030,0x002D,0x0031,0x0039,0x0036,0x0039,0x002D,0x0072,0x006F,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0034,0x00 } , { 0x006A,0x0070,0x00 } , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x004A,0x0050,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0034,0x004A,0x0049,0x0053,0x0043,0x0036,0x0032,0x0032,0x0030,0x0072,0x006F,0x00 } , { 0x0049,0x0054,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0035,0x00 } , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0049,0x0054,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0035,0x0049,0x0074,0x0061,0x006C,0x0069,0x0061,0x006E,0x00 } , { 0x0050,0x0054,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0036,0x00 } , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0050,0x0054,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0036,0x0050,0x006F,0x0072,0x0074,0x0075,0x0067,0x0075,0x0065,0x0073,0x0065,0x00 } , { 0x0045,0x0053,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0037,0x00 } , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0045,0x0053,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0037,0x0053,0x0070,0x0061,0x006E,0x0069,0x0073,0x0068,0x00 } , { 0x0067,0x0072,0x0065,0x0065,0x006B,0x0037,0x002D,0x006F,0x006C,0x0064,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0038,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0038,0x0047,0x0072,0x0065,0x0065,0x006B,0x0037,0x004F,0x006C,0x0064,0x00 } , { 0x006C,0x0061,0x0074,0x0069,0x006E,0x002D,0x0067,0x0072,0x0065,0x0065,0x006B,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0039,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0039,0x004C,0x0061,0x0074,0x0069,0x006E,0x0047,0x0072,0x0065,0x0065,0x006B,0x00 } , { 0x0044,0x0049,0x004E,0x005F,0x0036,0x0036,0x0030,0x0030,0x0033,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0032,0x0031,0x00 } , { 0x0064,0x0065,0x00 } , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0044,0x0045,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0032,0x0031,0x0047,0x0065,0x0072,0x006D,0x0061,0x006E,0x00 } , { 0x004E,0x0046,0x005F,0x005A,0x005F,0x0036,0x0032,0x002D,0x0030,0x0031,0x0030,0x005F,0x0028,0x0031,0x0039,0x0037,0x0033,0x0029,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0032,0x0035,0x00 } , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0046,0x0052,0x0031,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0032,0x0035,0x0046,0x0072,0x0065,0x006E,0x0063,0x0068,0x00 } , { 0x004C,0x0061,0x0074,0x0069,0x006E,0x002D,0x0067,0x0072,0x0065,0x0065,0x006B,0x002D,0x0031,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0032,0x0037,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0032,0x0037,0x004C,0x0061,0x0074,0x0069,0x006E,0x0047,0x0072,0x0065,0x0065,0x006B,0x0031,0x00 } , { 0x0049,0x0053,0x004F,0x005F,0x0035,0x0034,0x0032,0x0037,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0033,0x0037,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0035,0x0034,0x0032,0x0037,0x0043,0x0079,0x0072,0x0069,0x006C,0x006C,0x0069,0x0063,0x00 } , { 0x004A,0x0049,0x0053,0x005F,0x0043,0x0036,0x0032,0x0032,0x0036,0x002D,0x0031,0x0039,0x0037,0x0038,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0034,0x0032,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0034,0x0032,0x004A,0x0049,0x0053,0x0043,0x0036,0x0032,0x0032,0x0036,0x0031,0x0039,0x0037,0x0038,0x00 } , { 0x0042,0x0053,0x005F,0x0076,0x0069,0x0065,0x0077,0x0064,0x0061,0x0074,0x0061,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0034,0x0037,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0034,0x0037,0x0042,0x0053,0x0056,0x0069,0x0065,0x0077,0x0064,0x0061,0x0074,0x0061,0x00 } , { 0x0049,0x004E,0x0049,0x0053,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0034,0x0039,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0034,0x0039,0x0049,0x004E,0x0049,0x0053,0x00 } , { 0x0049,0x004E,0x0049,0x0053,0x002D,0x0038,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0035,0x0030,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0035,0x0030,0x0049,0x004E,0x0049,0x0053,0x0038,0x00 } , { 0x0049,0x004E,0x0049,0x0053,0x002D,0x0063,0x0079,0x0072,0x0069,0x006C,0x006C,0x0069,0x0063,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0035,0x0031,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0035,0x0031,0x0049,0x004E,0x0049,0x0053,0x0043,0x0079,0x0072,0x0069,0x006C,0x006C,0x0069,0x0063,0x00 } , { 0x0049,0x0053,0x004F,0x005F,0x0035,0x0034,0x0032,0x0037,0x003A,0x0031,0x0039,0x0038,0x0031,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0035,0x0034,0x00 } , { 0x0049,0x0053,0x004F,0x0035,0x0034,0x0032,0x0037,0x0043,0x0079,0x0072,0x0069,0x006C,0x006C,0x0069,0x0063,0x0031,0x0039,0x0038,0x0031,0x00 } , { 0x0049,0x0053,0x004F,0x005F,0x0035,0x0034,0x0032,0x0038,0x003A,0x0031,0x0039,0x0038,0x0030,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0035,0x0035,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0035,0x0034,0x0032,0x0038,0x0047,0x0072,0x0065,0x0065,0x006B,0x00 } , { 0x0047,0x0042,0x005F,0x0031,0x0039,0x0038,0x0038,0x002D,0x0038,0x0030,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0035,0x0037,0x00 } , { 0x0063,0x006E,0x00 } , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0043,0x004E,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0035,0x0037,0x0047,0x0042,0x0031,0x0039,0x0038,0x0038,0x00 } , { 0x0047,0x0042,0x005F,0x0032,0x0033,0x0031,0x0032,0x002D,0x0038,0x0030,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0035,0x0038,0x00 } , { 0x0063,0x0068,0x0069,0x006E,0x0065,0x0073,0x0065,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0035,0x0038,0x0047,0x0042,0x0032,0x0033,0x0031,0x0032,0x0038,0x0030,0x00 } , { 0x004E,0x0053,0x005F,0x0034,0x0035,0x0035,0x0031,0x002D,0x0031,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0036,0x0030,0x00 } , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x004E,0x004F,0x00 } , { 0x006E,0x006F,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0036,0x0030,0x0044,0x0061,0x006E,0x0069,0x0073,0x0068,0x004E,0x006F,0x0072,0x0077,0x0065,0x0067,0x0069,0x0061,0x006E,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0036,0x0030,0x004E,0x006F,0x0072,0x0077,0x0065,0x0067,0x0069,0x0061,0x006E,0x0031,0x00 } , { 0x004E,0x0053,0x005F,0x0034,0x0035,0x0035,0x0031,0x002D,0x0032,0x00 } , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x004E,0x004F,0x0032,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0036,0x0031,0x00 } , { 0x006E,0x006F,0x0032,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0036,0x0031,0x004E,0x006F,0x0072,0x0077,0x0065,0x0067,0x0069,0x0061,0x006E,0x0032,0x00 } , { 0x004E,0x0046,0x005F,0x005A,0x005F,0x0036,0x0032,0x002D,0x0030,0x0031,0x0030,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0036,0x0039,0x00 } , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0046,0x0052,0x00 } , { 0x0066,0x0072,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0036,0x0039,0x0046,0x0072,0x0065,0x006E,0x0063,0x0068,0x00 } , { 0x0076,0x0069,0x0064,0x0065,0x006F,0x0074,0x0065,0x0078,0x002D,0x0073,0x0075,0x0070,0x0070,0x006C,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0037,0x0030,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0037,0x0030,0x0056,0x0069,0x0064,0x0065,0x006F,0x0074,0x0065,0x0078,0x0053,0x0075,0x0070,0x0070,0x0031,0x00 } , { 0x0050,0x0054,0x0032,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0038,0x0034,0x00 } , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0050,0x0054,0x0032,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0038,0x0034,0x0050,0x006F,0x0072,0x0074,0x0075,0x0067,0x0075,0x0065,0x0073,0x0065,0x0032,0x00 } , { 0x0045,0x0053,0x0032,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0038,0x0035,0x00 } , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0045,0x0053,0x0032,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0038,0x0035,0x0053,0x0070,0x0061,0x006E,0x0069,0x0073,0x0068,0x0032,0x00 } , { 0x004D,0x0053,0x005A,0x005F,0x0037,0x0037,0x0039,0x0035,0x002E,0x0033,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0038,0x0036,0x00 } , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0048,0x0055,0x00 } , { 0x0068,0x0075,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0038,0x0036,0x0048,0x0075,0x006E,0x0067,0x0061,0x0072,0x0069,0x0061,0x006E,0x00 } , { 0x004A,0x0049,0x0053,0x005F,0x0043,0x0036,0x0032,0x0032,0x0036,0x002D,0x0031,0x0039,0x0038,0x0033,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0038,0x0037,0x00 } , { 0x0078,0x0030,0x0032,0x0030,0x0038,0x00 } , { 0x004A,0x0049,0x0053,0x005F,0x0058,0x0030,0x0032,0x0030,0x0038,0x002D,0x0031,0x0039,0x0038,0x0033,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0038,0x0037,0x004A,0x0049,0x0053,0x0058,0x0030,0x0032,0x0030,0x0038,0x00 } , { 0x0067,0x0072,0x0065,0x0065,0x006B,0x0037,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0038,0x0038,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0038,0x0038,0x0047,0x0072,0x0065,0x0065,0x006B,0x0037,0x00 } , { 0x0041,0x0053,0x004D,0x004F,0x005F,0x0034,0x0034,0x0039,0x00 } , { 0x0049,0x0053,0x004F,0x005F,0x0039,0x0030,0x0033,0x0036,0x00 } , { 0x0061,0x0072,0x0061,0x0062,0x0069,0x0063,0x0037,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0038,0x0039,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0038,0x0039,0x0041,0x0053,0x004D,0x004F,0x0034,0x0034,0x0039,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0039,0x0030,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0039,0x0030,0x00 } , { 0x004A,0x0049,0x0053,0x005F,0x0043,0x0036,0x0032,0x0032,0x0039,0x002D,0x0031,0x0039,0x0038,0x0034,0x002D,0x0061,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0039,0x0031,0x00 } , { 0x006A,0x0070,0x002D,0x006F,0x0063,0x0072,0x002D,0x0061,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0039,0x0031,0x004A,0x0049,0x0053,0x0043,0x0036,0x0032,0x0032,0x0039,0x0031,0x0039,0x0038,0x0034,0x0061,0x00 } , { 0x004A,0x0049,0x0053,0x005F,0x0043,0x0036,0x0032,0x0032,0x0039,0x002D,0x0031,0x0039,0x0038,0x0034,0x002D,0x0062,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0039,0x0032,0x00 } , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x004A,0x0050,0x002D,0x004F,0x0043,0x0052,0x002D,0x0042,0x00 } , { 0x006A,0x0070,0x002D,0x006F,0x0063,0x0072,0x002D,0x0062,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0039,0x0032,0x004A,0x0049,0x0053,0x0043,0x0036,0x0032,0x0039,0x0039,0x0031,0x0039,0x0038,0x0034,0x0062,0x00 } , { 0x004A,0x0049,0x0053,0x005F,0x0043,0x0036,0x0032,0x0032,0x0039,0x002D,0x0031,0x0039,0x0038,0x0034,0x002D,0x0062,0x002D,0x0061,0x0064,0x0064,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0039,0x0033,0x00 } , { 0x006A,0x0070,0x002D,0x006F,0x0063,0x0072,0x002D,0x0062,0x002D,0x0061,0x0064,0x0064,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0039,0x0033,0x004A,0x0049,0x0053,0x0036,0x0032,0x0032,0x0039,0x0031,0x0039,0x0038,0x0034,0x0062,0x0061,0x0064,0x0064,0x00 } , { 0x004A,0x0049,0x0053,0x005F,0x0043,0x0036,0x0032,0x0032,0x0039,0x002D,0x0031,0x0039,0x0038,0x0034,0x002D,0x0068,0x0061,0x006E,0x0064,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0039,0x0034,0x00 } , { 0x006A,0x0070,0x002D,0x006F,0x0063,0x0072,0x002D,0x0068,0x0061,0x006E,0x0064,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0039,0x0034,0x004A,0x0049,0x0053,0x0036,0x0032,0x0032,0x0039,0x0031,0x0039,0x0038,0x0034,0x0068,0x0061,0x006E,0x0064,0x00 } , { 0x004A,0x0049,0x0053,0x005F,0x0043,0x0036,0x0032,0x0032,0x0039,0x002D,0x0031,0x0039,0x0038,0x0034,0x002D,0x0068,0x0061,0x006E,0x0064,0x002D,0x0061,0x0064,0x0064,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0039,0x0035,0x00 } , { 0x006A,0x0070,0x002D,0x006F,0x0063,0x0072,0x002D,0x0068,0x0061,0x006E,0x0064,0x002D,0x0061,0x0064,0x0064,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0039,0x0035,0x004A,0x0049,0x0053,0x0036,0x0032,0x0032,0x0039,0x0031,0x0039,0x0038,0x0034,0x0068,0x0061,0x006E,0x0064,0x0061,0x0064,0x0064,0x00 } , { 0x004A,0x0049,0x0053,0x005F,0x0043,0x0036,0x0032,0x0032,0x0039,0x002D,0x0031,0x0039,0x0038,0x0034,0x002D,0x006B,0x0061,0x006E,0x0061,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0039,0x0036,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0039,0x0036,0x004A,0x0049,0x0053,0x0043,0x0036,0x0032,0x0032,0x0039,0x0031,0x0039,0x0038,0x0034,0x006B,0x0061,0x006E,0x0061,0x00 } , { 0x0049,0x0053,0x004F,0x005F,0x0032,0x0030,0x0033,0x0033,0x002D,0x0031,0x0039,0x0038,0x0033,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0039,0x0038,0x00 } , { 0x0065,0x0031,0x0033,0x0062,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0032,0x0030,0x0033,0x0033,0x00 } , { 0x0041,0x004E,0x0053,0x0049,0x005F,0x0058,0x0033,0x002E,0x0031,0x0031,0x0030,0x002D,0x0031,0x0039,0x0038,0x0033,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0039,0x0039,0x00 } , { 0x0043,0x0053,0x0041,0x005F,0x0054,0x0035,0x0030,0x0030,0x002D,0x0031,0x0039,0x0038,0x0033,0x00 } , { 0x004E,0x0041,0x0050,0x004C,0x0050,0x0053,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0039,0x0039,0x004E,0x0041,0x0050,0x004C,0x0050,0x0053,0x00 } , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x003A,0x0031,0x0039,0x0038,0x0037,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0030,0x0030,0x00 } , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x00 } , { 0x006C,0x0061,0x0074,0x0069,0x006E,0x0031,0x00 } , { 0x006C,0x0031,0x00 } , { 0x0049,0x0042,0x004D,0x0038,0x0031,0x0039,0x00 } , { 0x0043,0x0050,0x0038,0x0031,0x0039,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x004C,0x0061,0x0074,0x0069,0x006E,0x0031,0x00 } , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0032,0x003A,0x0031,0x0039,0x0038,0x0037,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0030,0x0031,0x00 } , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0032,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0032,0x00 } , { 0x006C,0x0061,0x0074,0x0069,0x006E,0x0032,0x00 } , { 0x006C,0x0032,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x004C,0x0061,0x0074,0x0069,0x006E,0x0032,0x00 } , { 0x0054,0x002E,0x0036,0x0031,0x002D,0x0037,0x0062,0x0069,0x0074,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0030,0x0032,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0030,0x0032,0x0054,0x0036,0x0031,0x0037,0x0062,0x0069,0x0074,0x00 } , { 0x0054,0x002E,0x0036,0x0031,0x002D,0x0038,0x0062,0x0069,0x0074,0x00 } , { 0x0054,0x002E,0x0036,0x0031,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0030,0x0033,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0030,0x0033,0x0054,0x0036,0x0031,0x0038,0x0062,0x0069,0x0074,0x00 } , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0033,0x003A,0x0031,0x0039,0x0038,0x0038,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0030,0x0039,0x00 } , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0033,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0033,0x00 } , { 0x006C,0x0061,0x0074,0x0069,0x006E,0x0033,0x00 } , { 0x006C,0x0033,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x004C,0x0061,0x0074,0x0069,0x006E,0x0033,0x00 } , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0034,0x003A,0x0031,0x0039,0x0038,0x0038,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0031,0x0030,0x00 } , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0034,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0034,0x00 } , { 0x006C,0x0061,0x0074,0x0069,0x006E,0x0034,0x00 } , { 0x006C,0x0034,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x004C,0x0061,0x0074,0x0069,0x006E,0x0034,0x00 } , { 0x0045,0x0043,0x004D,0x0041,0x002D,0x0063,0x0079,0x0072,0x0069,0x006C,0x006C,0x0069,0x0063,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0031,0x0031,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0031,0x0031,0x0045,0x0043,0x004D,0x0041,0x0043,0x0079,0x0072,0x0069,0x006C,0x006C,0x0069,0x0063,0x00 } , { 0x0043,0x0053,0x0041,0x005F,0x005A,0x0032,0x0034,0x0033,0x002E,0x0034,0x002D,0x0031,0x0039,0x0038,0x0035,0x002D,0x0031,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0032,0x0031,0x00 } , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0043,0x0041,0x00 } , { 0x0063,0x0073,0x0061,0x0037,0x002D,0x0031,0x00 } , { 0x0063,0x0061,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0032,0x0031,0x0043,0x0061,0x006E,0x0061,0x0064,0x0069,0x0061,0x006E,0x0031,0x00 } , { 0x0043,0x0053,0x0041,0x005F,0x005A,0x0032,0x0034,0x0033,0x002E,0x0034,0x002D,0x0031,0x0039,0x0038,0x0035,0x002D,0x0032,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0032,0x0032,0x00 } , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0043,0x0041,0x0032,0x00 } , { 0x0063,0x0073,0x0061,0x0037,0x002D,0x0032,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0032,0x0032,0x0043,0x0061,0x006E,0x0061,0x0064,0x0069,0x0061,0x006E,0x0032,0x00 } , { 0x0043,0x0053,0x0041,0x005F,0x005A,0x0032,0x0034,0x0033,0x002E,0x0034,0x002D,0x0031,0x0039,0x0038,0x0035,0x002D,0x0067,0x0072,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0032,0x0033,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0032,0x0033,0x0043,0x0053,0x0041,0x005A,0x0032,0x0034,0x0033,0x0034,0x0031,0x0039,0x0038,0x0035,0x0067,0x0072,0x00 } , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0036,0x003A,0x0031,0x0039,0x0038,0x0037,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0032,0x0037,0x00 } , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0036,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0036,0x00 } , { 0x0045,0x0043,0x004D,0x0041,0x002D,0x0031,0x0031,0x0034,0x00 } , { 0x0041,0x0053,0x004D,0x004F,0x002D,0x0037,0x0030,0x0038,0x00 } , { 0x0061,0x0072,0x0061,0x0062,0x0069,0x0063,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x004C,0x0061,0x0074,0x0069,0x006E,0x0041,0x0072,0x0061,0x0062,0x0069,0x0063,0x00 } , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0036,0x002D,0x0045,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0038,0x0038,0x0035,0x0039,0x0036,0x0045,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0036,0x002D,0x0045,0x00 } , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0036,0x002D,0x0049,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0038,0x0038,0x0035,0x0039,0x0036,0x0049,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0036,0x002D,0x0049,0x00 } , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0037,0x003A,0x0031,0x0039,0x0038,0x0037,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0032,0x0036,0x00 } , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0037,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0037,0x00 } , { 0x0045,0x004C,0x004F,0x0054,0x005F,0x0039,0x0032,0x0038,0x00 } , { 0x0045,0x0043,0x004D,0x0041,0x002D,0x0031,0x0031,0x0038,0x00 } , { 0x0067,0x0072,0x0065,0x0065,0x006B,0x00 } , { 0x0067,0x0072,0x0065,0x0065,0x006B,0x0038,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x004C,0x0061,0x0074,0x0069,0x006E,0x0047,0x0072,0x0065,0x0065,0x006B,0x00 } , { 0x0054,0x002E,0x0031,0x0030,0x0031,0x002D,0x0047,0x0032,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0032,0x0038,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0032,0x0038,0x0054,0x0031,0x0030,0x0031,0x0047,0x0032,0x00 } , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0038,0x003A,0x0031,0x0039,0x0038,0x0038,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0033,0x0038,0x00 } , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0038,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0038,0x00 } , { 0x0068,0x0065,0x0062,0x0072,0x0065,0x0077,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x004C,0x0061,0x0074,0x0069,0x006E,0x0048,0x0065,0x0062,0x0072,0x0065,0x0077,0x00 } , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0038,0x002D,0x0045,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0038,0x0038,0x0035,0x0039,0x0038,0x0045,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0038,0x002D,0x0045,0x00 } , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0038,0x002D,0x0049,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0038,0x0038,0x0035,0x0039,0x0038,0x0049,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0038,0x002D,0x0049,0x00 } , { 0x0043,0x0053,0x004E,0x005F,0x0033,0x0036,0x0039,0x0031,0x0030,0x0033,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0033,0x0039,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0033,0x0039,0x0043,0x0053,0x004E,0x0033,0x0036,0x0039,0x0031,0x0030,0x0033,0x00 } , { 0x004A,0x0055,0x0053,0x005F,0x0049,0x002E,0x0042,0x0031,0x002E,0x0030,0x0030,0x0032,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0034,0x0031,0x00 } , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0059,0x0055,0x00 } , { 0x006A,0x0073,0x00 } , { 0x0079,0x0075,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0034,0x0031,0x004A,0x0055,0x0053,0x0049,0x0042,0x0031,0x0030,0x0030,0x0032,0x00 } , { 0x0049,0x0053,0x004F,0x005F,0x0036,0x0039,0x0033,0x0037,0x002D,0x0032,0x002D,0x0061,0x0064,0x0064,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0034,0x0032,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0054,0x0065,0x0078,0x0074,0x0043,0x006F,0x006D,0x006D,0x00 } , { 0x0049,0x0045,0x0043,0x005F,0x0050,0x0032,0x0037,0x002D,0x0031,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0034,0x0033,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0034,0x0033,0x0049,0x0045,0x0043,0x0050,0x0032,0x0037,0x0031,0x00 } , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0035,0x003A,0x0031,0x0039,0x0038,0x0038,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0034,0x0034,0x00 } , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0035,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0035,0x00 } , { 0x0063,0x0079,0x0072,0x0069,0x006C,0x006C,0x0069,0x0063,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x004C,0x0061,0x0074,0x0069,0x006E,0x0043,0x0079,0x0072,0x0069,0x006C,0x006C,0x0069,0x0063,0x00 } , { 0x004A,0x0055,0x0053,0x005F,0x0049,0x002E,0x0042,0x0031,0x002E,0x0030,0x0030,0x0033,0x002D,0x0073,0x0065,0x0072,0x0062,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0034,0x0036,0x00 } , { 0x0073,0x0065,0x0072,0x0062,0x0069,0x0061,0x006E,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0034,0x0036,0x0053,0x0065,0x0072,0x0062,0x0069,0x0061,0x006E,0x00 } , { 0x004A,0x0055,0x0053,0x005F,0x0049,0x002E,0x0042,0x0031,0x002E,0x0030,0x0030,0x0033,0x002D,0x006D,0x0061,0x0063,0x00 } , { 0x006D,0x0061,0x0063,0x0065,0x0064,0x006F,0x006E,0x0069,0x0061,0x006E,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0034,0x0037,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0034,0x0037,0x004D,0x0061,0x0063,0x0065,0x0064,0x006F,0x006E,0x0069,0x0061,0x006E,0x00 } , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0039,0x003A,0x0031,0x0039,0x0038,0x0039,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0034,0x0038,0x00 } , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0039,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0039,0x00 } , { 0x006C,0x0061,0x0074,0x0069,0x006E,0x0035,0x00 } , { 0x006C,0x0035,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x004C,0x0061,0x0074,0x0069,0x006E,0x0035,0x00 } , { 0x0067,0x0072,0x0065,0x0065,0x006B,0x002D,0x0063,0x0063,0x0069,0x0074,0x0074,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0035,0x0030,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0035,0x0030,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0035,0x0030,0x0047,0x0072,0x0065,0x0065,0x006B,0x0043,0x0043,0x0049,0x0054,0x0054,0x00 } , { 0x004E,0x0043,0x005F,0x004E,0x0043,0x0030,0x0030,0x002D,0x0031,0x0030,0x003A,0x0038,0x0031,0x00 } , { 0x0063,0x0075,0x0062,0x0061,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0035,0x0031,0x00 } , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0043,0x0055,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0035,0x0031,0x0043,0x0075,0x0062,0x0061,0x00 } , { 0x0049,0x0053,0x004F,0x005F,0x0036,0x0039,0x0033,0x0037,0x002D,0x0032,0x002D,0x0032,0x0035,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0035,0x0032,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0036,0x0039,0x0033,0x0037,0x0041,0x0064,0x0064,0x00 } , { 0x0047,0x004F,0x0053,0x0054,0x005F,0x0031,0x0039,0x0037,0x0036,0x0038,0x002D,0x0037,0x0034,0x00 } , { 0x0053,0x0054,0x005F,0x0053,0x0045,0x0056,0x005F,0x0033,0x0035,0x0038,0x002D,0x0038,0x0038,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0035,0x0033,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0035,0x0033,0x0047,0x004F,0x0053,0x0054,0x0031,0x0039,0x0037,0x0036,0x0038,0x0037,0x0034,0x00 } , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0073,0x0075,0x0070,0x0070,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0035,0x0034,0x00 } , { 0x006C,0x0061,0x0074,0x0069,0x006E,0x0031,0x002D,0x0032,0x002D,0x0035,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0038,0x0038,0x0035,0x0039,0x0053,0x0075,0x0070,0x0070,0x00 } , { 0x0049,0x0053,0x004F,0x005F,0x0031,0x0030,0x0033,0x0036,0x0037,0x002D,0x0062,0x006F,0x0078,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0035,0x0035,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0030,0x0033,0x0036,0x0037,0x0042,0x006F,0x0078,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x0030,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0035,0x0037,0x00 } , { 0x006C,0x0036,0x00 } , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x0030,0x003A,0x0031,0x0039,0x0039,0x0032,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x004C,0x0061,0x0074,0x0069,0x006E,0x0036,0x00 } , { 0x006C,0x0061,0x0074,0x0069,0x006E,0x0036,0x00 } , { 0x006C,0x0061,0x0074,0x0069,0x006E,0x002D,0x006C,0x0061,0x0070,0x00 } , { 0x006C,0x0061,0x0070,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0035,0x0038,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0035,0x0038,0x004C,0x0061,0x0070,0x00 } , { 0x004A,0x0049,0x0053,0x005F,0x0058,0x0030,0x0032,0x0031,0x0032,0x002D,0x0031,0x0039,0x0039,0x0030,0x00 } , { 0x0078,0x0030,0x0032,0x0031,0x0032,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0035,0x0039,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0031,0x0035,0x0039,0x004A,0x0049,0x0053,0x0058,0x0030,0x0032,0x0031,0x0032,0x0031,0x0039,0x0039,0x0030,0x00 } , { 0x0044,0x0053,0x005F,0x0032,0x0030,0x0038,0x0039,0x00 } , { 0x0044,0x0053,0x0032,0x0030,0x0038,0x0039,0x00 } , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x0044,0x004B,0x00 } , { 0x0064,0x006B,0x00 } , { 0x0063,0x0073,0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x0044,0x0061,0x006E,0x0069,0x0073,0x0068,0x00 } , { 0x0075,0x0073,0x002D,0x0064,0x006B,0x00 } , { 0x0063,0x0073,0x0055,0x0053,0x0044,0x004B,0x00 } , { 0x0064,0x006B,0x002D,0x0075,0x0073,0x00 } , { 0x0063,0x0073,0x0044,0x004B,0x0055,0x0053,0x00 } , { 0x004A,0x0049,0x0053,0x005F,0x0058,0x0030,0x0032,0x0030,0x0031,0x00 } , { 0x0058,0x0030,0x0032,0x0030,0x0031,0x00 } , { 0x0063,0x0073,0x0048,0x0061,0x006C,0x0066,0x0057,0x0069,0x0064,0x0074,0x0068,0x004B,0x0061,0x0074,0x0061,0x006B,0x0061,0x006E,0x0061,0x00 } , { 0x004B,0x0053,0x0043,0x0035,0x0036,0x0033,0x0036,0x00 } , { 0x0049,0x0053,0x004F,0x0036,0x0034,0x0036,0x002D,0x004B,0x0052,0x00 } , { 0x0063,0x0073,0x004B,0x0053,0x0043,0x0035,0x0036,0x0033,0x0036,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0031,0x0030,0x0036,0x0034,0x0036,0x002D,0x0055,0x0043,0x0053,0x002D,0x0032,0x00 } , { 0x0063,0x0073,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0031,0x0030,0x0036,0x0034,0x0036,0x002D,0x0055,0x0043,0x0053,0x002D,0x0034,0x00 } , { 0x0063,0x0073,0x0055,0x0043,0x0053,0x0034,0x00 } , { 0x0044,0x0045,0x0043,0x002D,0x004D,0x0043,0x0053,0x00 } , { 0x0064,0x0065,0x0063,0x00 } , { 0x0063,0x0073,0x0044,0x0045,0x0043,0x004D,0x0043,0x0053,0x00 } , { 0x0068,0x0070,0x002D,0x0072,0x006F,0x006D,0x0061,0x006E,0x0038,0x00 } , { 0x0072,0x006F,0x006D,0x0061,0x006E,0x0038,0x00 } , { 0x0072,0x0038,0x00 } , { 0x0063,0x0073,0x0048,0x0050,0x0052,0x006F,0x006D,0x0061,0x006E,0x0038,0x00 } , { 0x006D,0x0061,0x0063,0x0069,0x006E,0x0074,0x006F,0x0073,0x0068,0x00 } , { 0x006D,0x0061,0x0063,0x00 } , { 0x0063,0x0073,0x004D,0x0061,0x0063,0x0069,0x006E,0x0074,0x006F,0x0073,0x0068,0x00 } , { 0x0049,0x0042,0x004D,0x0030,0x0033,0x0037,0x00 } , { 0x0063,0x0070,0x0030,0x0033,0x0037,0x00 } , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0075,0x0073,0x00 } , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0063,0x0061,0x00 } , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0077,0x0074,0x00 } , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x006E,0x006C,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0030,0x0033,0x0037,0x00 } , { 0x0049,0x0042,0x004D,0x0030,0x0033,0x0038,0x00 } , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0049,0x004E,0x0054,0x00 } , { 0x0063,0x0070,0x0030,0x0033,0x0038,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0030,0x0033,0x0038,0x00 } , { 0x0049,0x0042,0x004D,0x0032,0x0037,0x0033,0x00 } , { 0x0043,0x0050,0x0032,0x0037,0x0033,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0032,0x0037,0x0033,0x00 } , { 0x0049,0x0042,0x004D,0x0032,0x0037,0x0034,0x00 } , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0042,0x0045,0x00 } , { 0x0043,0x0050,0x0032,0x0037,0x0034,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0032,0x0037,0x0034,0x00 } , { 0x0049,0x0042,0x004D,0x0032,0x0037,0x0035,0x00 } , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0042,0x0052,0x00 } , { 0x0063,0x0070,0x0032,0x0037,0x0035,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0032,0x0037,0x0035,0x00 } , { 0x0049,0x0042,0x004D,0x0032,0x0037,0x0037,0x00 } , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0043,0x0050,0x002D,0x0044,0x004B,0x00 } , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0043,0x0050,0x002D,0x004E,0x004F,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0032,0x0037,0x0037,0x00 } , { 0x0049,0x0042,0x004D,0x0032,0x0037,0x0038,0x00 } , { 0x0043,0x0050,0x0032,0x0037,0x0038,0x00 } , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0066,0x0069,0x00 } , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0073,0x0065,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0032,0x0037,0x0038,0x00 } , { 0x0049,0x0042,0x004D,0x0032,0x0038,0x0030,0x00 } , { 0x0043,0x0050,0x0032,0x0038,0x0030,0x00 } , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0069,0x0074,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0032,0x0038,0x0030,0x00 } , { 0x0049,0x0042,0x004D,0x0032,0x0038,0x0031,0x00 } , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x004A,0x0050,0x002D,0x0045,0x00 } , { 0x0063,0x0070,0x0032,0x0038,0x0031,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0032,0x0038,0x0031,0x00 } , { 0x0049,0x0042,0x004D,0x0032,0x0038,0x0034,0x00 } , { 0x0043,0x0050,0x0032,0x0038,0x0034,0x00 } , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0065,0x0073,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0032,0x0038,0x0034,0x00 } , { 0x0049,0x0042,0x004D,0x0032,0x0038,0x0035,0x00 } , { 0x0043,0x0050,0x0032,0x0038,0x0035,0x00 } , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0067,0x0062,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0032,0x0038,0x0035,0x00 } , { 0x0049,0x0042,0x004D,0x0032,0x0039,0x0030,0x00 } , { 0x0063,0x0070,0x0032,0x0039,0x0030,0x00 } , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x004A,0x0050,0x002D,0x006B,0x0061,0x006E,0x0061,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0032,0x0039,0x0030,0x00 } , { 0x0049,0x0042,0x004D,0x0032,0x0039,0x0037,0x00 } , { 0x0063,0x0070,0x0032,0x0039,0x0037,0x00 } , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0066,0x0072,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0032,0x0039,0x0037,0x00 } , { 0x0049,0x0042,0x004D,0x0034,0x0032,0x0030,0x00 } , { 0x0063,0x0070,0x0034,0x0032,0x0030,0x00 } , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0061,0x0072,0x0031,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0034,0x0032,0x0030,0x00 } , { 0x0049,0x0042,0x004D,0x0034,0x0032,0x0033,0x00 } , { 0x0063,0x0070,0x0034,0x0032,0x0033,0x00 } , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0067,0x0072,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0034,0x0032,0x0033,0x00 } , { 0x0049,0x0042,0x004D,0x0034,0x0032,0x0034,0x00 } , { 0x0063,0x0070,0x0034,0x0032,0x0034,0x00 } , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0068,0x0065,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0034,0x0032,0x0034,0x00 } , { 0x0049,0x0042,0x004D,0x0034,0x0033,0x0037,0x00 } , { 0x0063,0x0070,0x0034,0x0033,0x0037,0x00 } , { 0x0034,0x0033,0x0037,0x00 } , { 0x0063,0x0073,0x0050,0x0043,0x0038,0x0043,0x006F,0x0064,0x0065,0x0050,0x0061,0x0067,0x0065,0x0034,0x0033,0x0037,0x00 } , { 0x0049,0x0042,0x004D,0x0035,0x0030,0x0030,0x00 } , { 0x0043,0x0050,0x0035,0x0030,0x0030,0x00 } , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0062,0x0065,0x00 } , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0063,0x0068,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0035,0x0030,0x0030,0x00 } , { 0x0049,0x0042,0x004D,0x0037,0x0037,0x0035,0x00 } , { 0x0063,0x0070,0x0037,0x0037,0x0035,0x00 } , { 0x0063,0x0073,0x0050,0x0043,0x0037,0x0037,0x0035,0x0042,0x0061,0x006C,0x0074,0x0069,0x0063,0x00 } , { 0x0049,0x0042,0x004D,0x0038,0x0035,0x0030,0x00 } , { 0x0063,0x0070,0x0038,0x0035,0x0030,0x00 } , { 0x0038,0x0035,0x0030,0x00 } , { 0x0063,0x0073,0x0050,0x0043,0x0038,0x0035,0x0030,0x004D,0x0075,0x006C,0x0074,0x0069,0x006C,0x0069,0x006E,0x0067,0x0075,0x0061,0x006C,0x00 } , { 0x0049,0x0042,0x004D,0x0038,0x0035,0x0031,0x00 } , { 0x0063,0x0070,0x0038,0x0035,0x0031,0x00 } , { 0x0038,0x0035,0x0031,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0035,0x0031,0x00 } , { 0x0049,0x0042,0x004D,0x0038,0x0035,0x0032,0x00 } , { 0x0063,0x0070,0x0038,0x0035,0x0032,0x00 } , { 0x0038,0x0035,0x0032,0x00 } , { 0x0063,0x0073,0x0050,0x0043,0x0070,0x0038,0x0035,0x0032,0x00 } , { 0x0049,0x0042,0x004D,0x0038,0x0035,0x0035,0x00 } , { 0x0063,0x0070,0x0038,0x0035,0x0035,0x00 } , { 0x0038,0x0035,0x0035,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0035,0x0035,0x00 } , { 0x0049,0x0042,0x004D,0x0038,0x0035,0x0037,0x00 } , { 0x0063,0x0070,0x0038,0x0035,0x0037,0x00 } , { 0x0038,0x0035,0x0037,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0035,0x0037,0x00 } , { 0x0049,0x0042,0x004D,0x0038,0x0036,0x0030,0x00 } , { 0x0063,0x0070,0x0038,0x0036,0x0030,0x00 } , { 0x0038,0x0036,0x0030,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0036,0x0030,0x00 } , { 0x0049,0x0042,0x004D,0x0038,0x0036,0x0031,0x00 } , { 0x0063,0x0070,0x0038,0x0036,0x0031,0x00 } , { 0x0038,0x0036,0x0031,0x00 } , { 0x0063,0x0070,0x002D,0x0069,0x0073,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0036,0x0031,0x00 } , { 0x0049,0x0042,0x004D,0x0038,0x0036,0x0032,0x00 } , { 0x0063,0x0070,0x0038,0x0036,0x0032,0x00 } , { 0x0038,0x0036,0x0032,0x00 } , { 0x0063,0x0073,0x0050,0x0043,0x0038,0x0036,0x0032,0x004C,0x0061,0x0074,0x0069,0x006E,0x0048,0x0065,0x0062,0x0072,0x0065,0x0077,0x00 } , { 0x0049,0x0042,0x004D,0x0038,0x0036,0x0033,0x00 } , { 0x0063,0x0070,0x0038,0x0036,0x0033,0x00 } , { 0x0038,0x0036,0x0033,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0036,0x0033,0x00 } , { 0x0049,0x0042,0x004D,0x0038,0x0036,0x0034,0x00 } , { 0x0063,0x0070,0x0038,0x0036,0x0034,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0036,0x0034,0x00 } , { 0x0049,0x0042,0x004D,0x0038,0x0036,0x0035,0x00 } , { 0x0063,0x0070,0x0038,0x0036,0x0035,0x00 } , { 0x0038,0x0036,0x0035,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0036,0x0035,0x00 } , { 0x0049,0x0042,0x004D,0x0038,0x0036,0x0036,0x00 } , { 0x0063,0x0070,0x0038,0x0036,0x0036,0x00 } , { 0x0038,0x0036,0x0036,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0036,0x0036,0x00 } , { 0x0049,0x0042,0x004D,0x0038,0x0036,0x0038,0x00 } , { 0x0043,0x0050,0x0038,0x0036,0x0038,0x00 } , { 0x0063,0x0070,0x002D,0x0061,0x0072,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0036,0x0038,0x00 } , { 0x0049,0x0042,0x004D,0x0038,0x0036,0x0039,0x00 } , { 0x0063,0x0070,0x0038,0x0036,0x0039,0x00 } , { 0x0038,0x0036,0x0039,0x00 } , { 0x0063,0x0070,0x002D,0x0067,0x0072,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0036,0x0039,0x00 } , { 0x0049,0x0042,0x004D,0x0038,0x0037,0x0030,0x00 } , { 0x0043,0x0050,0x0038,0x0037,0x0030,0x00 } , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0072,0x006F,0x0065,0x0063,0x0065,0x00 } , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0079,0x0075,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0037,0x0030,0x00 } , { 0x0049,0x0042,0x004D,0x0038,0x0037,0x0031,0x00 } , { 0x0043,0x0050,0x0038,0x0037,0x0031,0x00 } , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0069,0x0073,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0037,0x0031,0x00 } , { 0x0049,0x0042,0x004D,0x0038,0x0038,0x0030,0x00 } , { 0x0063,0x0070,0x0038,0x0038,0x0030,0x00 } , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0043,0x0079,0x0072,0x0069,0x006C,0x006C,0x0069,0x0063,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0038,0x0030,0x00 } , { 0x0049,0x0042,0x004D,0x0038,0x0039,0x0031,0x00 } , { 0x0063,0x0070,0x0038,0x0039,0x0031,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0038,0x0039,0x0031,0x00 } , { 0x0049,0x0042,0x004D,0x0039,0x0030,0x0033,0x00 } , { 0x0063,0x0070,0x0039,0x0030,0x0033,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0039,0x0030,0x0033,0x00 } , { 0x0049,0x0042,0x004D,0x0039,0x0030,0x0034,0x00 } , { 0x0063,0x0070,0x0039,0x0030,0x0034,0x00 } , { 0x0039,0x0030,0x0034,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x0042,0x004D,0x0039,0x0030,0x0034,0x00 } , { 0x0049,0x0042,0x004D,0x0039,0x0030,0x0035,0x00 } , { 0x0043,0x0050,0x0039,0x0030,0x0035,0x00 } , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0074,0x0072,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0039,0x0030,0x0035,0x00 } , { 0x0049,0x0042,0x004D,0x0039,0x0031,0x0038,0x00 } , { 0x0043,0x0050,0x0039,0x0031,0x0038,0x00 } , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0063,0x0070,0x002D,0x0061,0x0072,0x0032,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0039,0x0031,0x0038,0x00 } , { 0x0049,0x0042,0x004D,0x0031,0x0030,0x0032,0x0036,0x00 } , { 0x0043,0x0050,0x0031,0x0030,0x0032,0x0036,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0031,0x0030,0x0032,0x0036,0x00 } , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0041,0x0054,0x002D,0x0044,0x0045,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0041,0x0054,0x0044,0x0045,0x00 } , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0041,0x0054,0x002D,0x0044,0x0045,0x002D,0x0041,0x00 } , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0041,0x0054,0x0044,0x0045,0x0041,0x00 } , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0043,0x0041,0x002D,0x0046,0x0052,0x00 } , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0043,0x0041,0x0046,0x0052,0x00 } , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0044,0x004B,0x002D,0x004E,0x004F,0x00 } , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0044,0x004B,0x004E,0x004F,0x00 } , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0044,0x004B,0x002D,0x004E,0x004F,0x002D,0x0041,0x00 } , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0044,0x004B,0x004E,0x004F,0x0041,0x00 } , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0046,0x0049,0x002D,0x0053,0x0045,0x00 } , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0046,0x0049,0x0053,0x0045,0x00 } , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0046,0x0049,0x002D,0x0053,0x0045,0x002D,0x0041,0x00 } , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0046,0x0049,0x0053,0x0045,0x0041,0x00 } , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0046,0x0052,0x00 } , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0046,0x0052,0x00 } , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0049,0x0054,0x00 } , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0049,0x0054,0x00 } , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0050,0x0054,0x00 } , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0050,0x0054,0x00 } , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0045,0x0053,0x00 } , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0045,0x0053,0x00 } , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0045,0x0053,0x002D,0x0041,0x00 } , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0045,0x0053,0x0041,0x00 } , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0045,0x0053,0x002D,0x0053,0x00 } , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0045,0x0053,0x0053,0x00 } , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0055,0x004B,0x00 } , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0055,0x004B,0x00 } , { 0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x002D,0x0055,0x0053,0x00 } , { 0x0063,0x0073,0x0045,0x0042,0x0043,0x0044,0x0049,0x0043,0x0055,0x0053,0x00 } , { 0x0055,0x004E,0x004B,0x004E,0x004F,0x0057,0x004E,0x002D,0x0038,0x0042,0x0049,0x0054,0x00 } , { 0x0063,0x0073,0x0055,0x006E,0x006B,0x006E,0x006F,0x0077,0x006E,0x0038,0x0042,0x0069,0x0054,0x00 } , { 0x004D,0x004E,0x0045,0x004D,0x004F,0x004E,0x0049,0x0043,0x00 } , { 0x0063,0x0073,0x004D,0x006E,0x0065,0x006D,0x006F,0x006E,0x0069,0x0063,0x00 } , { 0x004D,0x004E,0x0045,0x004D,0x00 } , { 0x0063,0x0073,0x004D,0x006E,0x0065,0x006D,0x00 } , { 0x0056,0x0049,0x0053,0x0043,0x0049,0x0049,0x00 } , { 0x0063,0x0073,0x0056,0x0049,0x0053,0x0043,0x0049,0x0049,0x00 } , { 0x0056,0x0049,0x0051,0x0052,0x00 } , { 0x0063,0x0073,0x0056,0x0049,0x0051,0x0052,0x00 } , { 0x004B,0x004F,0x0049,0x0038,0x002D,0x0052,0x00 } , { 0x0063,0x0073,0x004B,0x004F,0x0049,0x0038,0x0052,0x00 } , { 0x004B,0x004F,0x0049,0x0038,0x002D,0x0055,0x00 } , { 0x0049,0x0042,0x004D,0x0030,0x0030,0x0038,0x0035,0x0038,0x00 } , { 0x0043,0x0043,0x0053,0x0049,0x0044,0x0030,0x0030,0x0038,0x0035,0x0038,0x00 } , { 0x0043,0x0050,0x0030,0x0030,0x0038,0x0035,0x0038,0x00 } , { 0x0050,0x0043,0x002D,0x004D,0x0075,0x006C,0x0074,0x0069,0x006C,0x0069,0x006E,0x0067,0x0075,0x0061,0x006C,0x002D,0x0038,0x0035,0x0030,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } , { 0x0049,0x0042,0x004D,0x0030,0x0030,0x0039,0x0032,0x0034,0x00 } , { 0x0043,0x0043,0x0053,0x0049,0x0044,0x0030,0x0030,0x0039,0x0032,0x0034,0x00 } , { 0x0043,0x0050,0x0030,0x0030,0x0039,0x0032,0x0034,0x00 } , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x004C,0x0061,0x0074,0x0069,0x006E,0x0039,0x002D,0x002D,0x0065,0x0075,0x0072,0x006F,0x00 } , { 0x0049,0x0042,0x004D,0x0030,0x0031,0x0031,0x0034,0x0030,0x00 } , { 0x0043,0x0043,0x0053,0x0049,0x0044,0x0030,0x0031,0x0031,0x0034,0x0030,0x00 } , { 0x0043,0x0050,0x0030,0x0031,0x0031,0x0034,0x0030,0x00 } , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0075,0x0073,0x002D,0x0033,0x0037,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } , { 0x0049,0x0042,0x004D,0x0030,0x0031,0x0031,0x0034,0x0031,0x00 } , { 0x0043,0x0043,0x0053,0x0049,0x0044,0x0030,0x0031,0x0031,0x0034,0x0031,0x00 } , { 0x0043,0x0050,0x0030,0x0031,0x0031,0x0034,0x0031,0x00 } , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0064,0x0065,0x002D,0x0032,0x0037,0x0033,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } , { 0x0049,0x0042,0x004D,0x0030,0x0031,0x0031,0x0034,0x0032,0x00 } , { 0x0043,0x0043,0x0053,0x0049,0x0044,0x0030,0x0031,0x0031,0x0034,0x0032,0x00 } , { 0x0043,0x0050,0x0030,0x0031,0x0031,0x0034,0x0032,0x00 } , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0064,0x006B,0x002D,0x0032,0x0037,0x0037,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x006E,0x006F,0x002D,0x0032,0x0037,0x0037,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } , { 0x0049,0x0042,0x004D,0x0030,0x0031,0x0031,0x0034,0x0033,0x00 } , { 0x0043,0x0043,0x0053,0x0049,0x0044,0x0030,0x0031,0x0031,0x0034,0x0033,0x00 } , { 0x0043,0x0050,0x0030,0x0031,0x0031,0x0034,0x0033,0x00 } , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0066,0x0069,0x002D,0x0032,0x0037,0x0038,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0073,0x0065,0x002D,0x0032,0x0037,0x0038,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } , { 0x0049,0x0042,0x004D,0x0030,0x0031,0x0031,0x0034,0x0034,0x00 } , { 0x0043,0x0043,0x0053,0x0049,0x0044,0x0030,0x0031,0x0031,0x0034,0x0034,0x00 } , { 0x0043,0x0050,0x0030,0x0031,0x0031,0x0034,0x0034,0x00 } , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0069,0x0074,0x002D,0x0032,0x0038,0x0030,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } , { 0x0049,0x0042,0x004D,0x0030,0x0031,0x0031,0x0034,0x0035,0x00 } , { 0x0043,0x0043,0x0053,0x0049,0x0044,0x0030,0x0031,0x0031,0x0034,0x0035,0x00 } , { 0x0043,0x0050,0x0030,0x0031,0x0031,0x0034,0x0035,0x00 } , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0065,0x0073,0x002D,0x0032,0x0038,0x0034,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } , { 0x0049,0x0042,0x004D,0x0030,0x0031,0x0031,0x0034,0x0036,0x00 } , { 0x0043,0x0043,0x0053,0x0049,0x0044,0x0030,0x0031,0x0031,0x0034,0x0036,0x00 } , { 0x0043,0x0050,0x0030,0x0031,0x0031,0x0034,0x0036,0x00 } , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0067,0x0062,0x002D,0x0032,0x0038,0x0035,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } , { 0x0049,0x0042,0x004D,0x0030,0x0031,0x0031,0x0034,0x0037,0x00 } , { 0x0043,0x0043,0x0053,0x0049,0x0044,0x0030,0x0031,0x0031,0x0034,0x0037,0x00 } , { 0x0043,0x0050,0x0030,0x0031,0x0031,0x0034,0x0037,0x00 } , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0066,0x0072,0x002D,0x0032,0x0039,0x0037,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } , { 0x0049,0x0042,0x004D,0x0030,0x0031,0x0031,0x0034,0x0038,0x00 } , { 0x0043,0x0043,0x0053,0x0049,0x0044,0x0030,0x0031,0x0031,0x0034,0x0038,0x00 } , { 0x0043,0x0050,0x0030,0x0031,0x0031,0x0034,0x0038,0x00 } , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0069,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x0074,0x0069,0x006F,0x006E,0x0061,0x006C,0x002D,0x0035,0x0030,0x0030,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } , { 0x0049,0x0042,0x004D,0x0030,0x0031,0x0031,0x0034,0x0039,0x00 } , { 0x0043,0x0043,0x0053,0x0049,0x0044,0x0030,0x0031,0x0031,0x0034,0x0039,0x00 } , { 0x0043,0x0050,0x0030,0x0031,0x0031,0x0034,0x0039,0x00 } , { 0x0065,0x0062,0x0063,0x0064,0x0069,0x0063,0x002D,0x0069,0x0073,0x002D,0x0038,0x0037,0x0031,0x002B,0x0065,0x0075,0x0072,0x006F,0x00 } , { 0x0042,0x0069,0x0067,0x0035,0x002D,0x0048,0x004B,0x0053,0x0043,0x0053,0x00 } , { 0x0055,0x004E,0x0049,0x0043,0x004F,0x0044,0x0045,0x002D,0x0031,0x002D,0x0031,0x00 } , { 0x0063,0x0073,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x0031,0x0031,0x00 } , { 0x0053,0x0043,0x0053,0x0055,0x00 } , { 0x0055,0x0054,0x0046,0x002D,0x0037,0x00 } , { 0x0055,0x0054,0x0046,0x002D,0x0031,0x0036,0x0042,0x0045,0x00 } , { 0x0055,0x0054,0x0046,0x002D,0x0031,0x0036,0x004C,0x0045,0x00 } , { 0x0055,0x0054,0x0046,0x002D,0x0031,0x0036,0x00 } , { 0x0043,0x0045,0x0053,0x0055,0x002D,0x0038,0x00 } , { 0x0063,0x0073,0x0043,0x0045,0x0053,0x0055,0x002D,0x0038,0x00 } , { 0x0055,0x0054,0x0046,0x002D,0x0033,0x0032,0x00 } , { 0x0055,0x0054,0x0046,0x002D,0x0033,0x0032,0x0042,0x0045,0x00 } , { 0x0055,0x0054,0x0046,0x002D,0x0033,0x0032,0x004C,0x0045,0x00 } , { 0x0055,0x004E,0x0049,0x0043,0x004F,0x0044,0x0045,0x002D,0x0031,0x002D,0x0031,0x002D,0x0055,0x0054,0x0046,0x002D,0x0037,0x00 } , { 0x0063,0x0073,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x0031,0x0031,0x0055,0x0054,0x0046,0x0037,0x00 } , { 0x0055,0x0054,0x0046,0x002D,0x0038,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x0033,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x0034,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0069,0x0072,0x002D,0x0031,0x0039,0x0039,0x00 } , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x0034,0x003A,0x0031,0x0039,0x0039,0x0038,0x00 } , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x0034,0x00 } , { 0x006C,0x0061,0x0074,0x0069,0x006E,0x0038,0x00 } , { 0x0069,0x0073,0x006F,0x002D,0x0063,0x0065,0x006C,0x0074,0x0069,0x0063,0x00 } , { 0x006C,0x0038,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x0035,0x00 } , { 0x0049,0x0053,0x004F,0x005F,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x0035,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x0036,0x00 } , { 0x00 } , { 0x0047,0x0042,0x004B,0x00 } , { 0x0043,0x0050,0x0039,0x0033,0x0036,0x00 } , { 0x004D,0x0053,0x0039,0x0033,0x0036,0x00 } , { 0x0077,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0039,0x0033,0x0036,0x00 } , { 0x0047,0x0042,0x0031,0x0038,0x0030,0x0033,0x0030,0x00 } , { 0x004A,0x0049,0x0053,0x005F,0x0045,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x00 } , { 0x0063,0x0073,0x004A,0x0049,0x0053,0x0045,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x00 } , { 0x0053,0x0068,0x0069,0x0066,0x0074,0x005F,0x004A,0x0049,0x0053,0x00 } , { 0x004D,0x0053,0x005F,0x004B,0x0061,0x006E,0x006A,0x0069,0x00 } , { 0x0063,0x0073,0x0053,0x0068,0x0069,0x0066,0x0074,0x004A,0x0049,0x0053,0x00 } , { 0x0045,0x0078,0x0074,0x0065,0x006E,0x0064,0x0065,0x0064,0x005F,0x0055,0x004E,0x0049,0x0058,0x005F,0x0043,0x006F,0x0064,0x0065,0x005F,0x0050,0x0061,0x0063,0x006B,0x0065,0x0064,0x005F,0x0046,0x006F,0x0072,0x006D,0x0061,0x0074,0x005F,0x0066,0x006F,0x0072,0x005F,0x004A,0x0061,0x0070,0x0061,0x006E,0x0065,0x0073,0x0065,0x00 } , { 0x0063,0x0073,0x0045,0x0055,0x0043,0x0050,0x006B,0x0064,0x0046,0x006D,0x0074,0x004A,0x0061,0x0070,0x0061,0x006E,0x0065,0x0073,0x0065,0x00 } , { 0x0045,0x0055,0x0043,0x002D,0x004A,0x0050,0x00 } , { 0x0045,0x0078,0x0074,0x0065,0x006E,0x0064,0x0065,0x0064,0x005F,0x0055,0x004E,0x0049,0x0058,0x005F,0x0043,0x006F,0x0064,0x0065,0x005F,0x0046,0x0069,0x0078,0x0065,0x0064,0x005F,0x0057,0x0069,0x0064,0x0074,0x0068,0x005F,0x0066,0x006F,0x0072,0x005F,0x004A,0x0061,0x0070,0x0061,0x006E,0x0065,0x0073,0x0065,0x00 } , { 0x0063,0x0073,0x0045,0x0055,0x0043,0x0046,0x0069,0x0078,0x0057,0x0069,0x0064,0x004A,0x0061,0x0070,0x0061,0x006E,0x0065,0x0073,0x0065,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0031,0x0030,0x0036,0x0034,0x0036,0x002D,0x0055,0x0043,0x0053,0x002D,0x0042,0x0061,0x0073,0x0069,0x0063,0x00 } , { 0x0063,0x0073,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x0041,0x0053,0x0043,0x0049,0x0049,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0031,0x0030,0x0036,0x0034,0x0036,0x002D,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x002D,0x004C,0x0061,0x0074,0x0069,0x006E,0x0031,0x00 } , { 0x0063,0x0073,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x004C,0x0061,0x0074,0x0069,0x006E,0x0031,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0031,0x0030,0x0036,0x0034,0x0036,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0031,0x0030,0x0036,0x0034,0x0036,0x002D,0x004A,0x002D,0x0031,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x002D,0x0049,0x0042,0x004D,0x002D,0x0031,0x0032,0x0036,0x0031,0x00 } , { 0x0063,0x0073,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x0049,0x0042,0x004D,0x0031,0x0032,0x0036,0x0031,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x002D,0x0049,0x0042,0x004D,0x002D,0x0031,0x0032,0x0036,0x0038,0x00 } , { 0x0063,0x0073,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x0049,0x0042,0x004D,0x0031,0x0032,0x0036,0x0038,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x002D,0x0049,0x0042,0x004D,0x002D,0x0031,0x0032,0x0037,0x0036,0x00 } , { 0x0063,0x0073,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x0049,0x0042,0x004D,0x0031,0x0032,0x0037,0x0036,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x002D,0x0049,0x0042,0x004D,0x002D,0x0031,0x0032,0x0036,0x0034,0x00 } , { 0x0063,0x0073,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x0049,0x0042,0x004D,0x0031,0x0032,0x0036,0x0034,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x002D,0x0049,0x0042,0x004D,0x002D,0x0031,0x0032,0x0036,0x0035,0x00 } , { 0x0063,0x0073,0x0055,0x006E,0x0069,0x0063,0x006F,0x0064,0x0065,0x0049,0x0042,0x004D,0x0031,0x0032,0x0036,0x0035,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x002D,0x0057,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0033,0x002E,0x0030,0x002D,0x004C,0x0061,0x0074,0x0069,0x006E,0x002D,0x0031,0x00 } , { 0x0063,0x0073,0x0057,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x0033,0x0030,0x004C,0x0061,0x0074,0x0069,0x006E,0x0031,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0031,0x002D,0x0057,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0033,0x002E,0x0031,0x002D,0x004C,0x0061,0x0074,0x0069,0x006E,0x002D,0x0031,0x00 } , { 0x0063,0x0073,0x0057,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x0033,0x0031,0x004C,0x0061,0x0074,0x0069,0x006E,0x0031,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0032,0x002D,0x0057,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x004C,0x0061,0x0074,0x0069,0x006E,0x002D,0x0032,0x00 } , { 0x0063,0x0073,0x0057,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x0033,0x0031,0x004C,0x0061,0x0074,0x0069,0x006E,0x0032,0x00 } , { 0x0049,0x0053,0x004F,0x002D,0x0038,0x0038,0x0035,0x0039,0x002D,0x0039,0x002D,0x0057,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x004C,0x0061,0x0074,0x0069,0x006E,0x002D,0x0035,0x00 } , { 0x0063,0x0073,0x0057,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x0033,0x0031,0x004C,0x0061,0x0074,0x0069,0x006E,0x0035,0x00 } , { 0x0041,0x0064,0x006F,0x0062,0x0065,0x002D,0x0053,0x0074,0x0061,0x006E,0x0064,0x0061,0x0072,0x0064,0x002D,0x0045,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x00 } , { 0x0063,0x0073,0x0041,0x0064,0x006F,0x0062,0x0065,0x0053,0x0074,0x0061,0x006E,0x0064,0x0061,0x0072,0x0064,0x0045,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x00 } , { 0x0056,0x0065,0x006E,0x0074,0x0075,0x0072,0x0061,0x002D,0x0055,0x0053,0x00 } , { 0x0063,0x0073,0x0056,0x0065,0x006E,0x0074,0x0075,0x0072,0x0061,0x0055,0x0053,0x00 } , { 0x0056,0x0065,0x006E,0x0074,0x0075,0x0072,0x0061,0x002D,0x0049,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x0074,0x0069,0x006F,0x006E,0x0061,0x006C,0x00 } , { 0x0063,0x0073,0x0056,0x0065,0x006E,0x0074,0x0075,0x0072,0x0061,0x0049,0x006E,0x0074,0x0065,0x0072,0x006E,0x0061,0x0074,0x0069,0x006F,0x006E,0x0061,0x006C,0x00 } , { 0x0050,0x0043,0x0038,0x002D,0x0044,0x0061,0x006E,0x0069,0x0073,0x0068,0x002D,0x004E,0x006F,0x0072,0x0077,0x0065,0x0067,0x0069,0x0061,0x006E,0x00 } , { 0x0063,0x0073,0x0050,0x0043,0x0038,0x0044,0x0061,0x006E,0x0069,0x0073,0x0068,0x004E,0x006F,0x0072,0x0077,0x0065,0x0067,0x0069,0x0061,0x006E,0x00 } , { 0x0050,0x0043,0x0038,0x002D,0x0054,0x0075,0x0072,0x006B,0x0069,0x0073,0x0068,0x00 } , { 0x0063,0x0073,0x0050,0x0043,0x0038,0x0054,0x0075,0x0072,0x006B,0x0069,0x0073,0x0068,0x00 } , { 0x0049,0x0042,0x004D,0x002D,0x0053,0x0079,0x006D,0x0062,0x006F,0x006C,0x0073,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0053,0x0079,0x006D,0x0062,0x006F,0x006C,0x0073,0x00 } , { 0x0049,0x0042,0x004D,0x002D,0x0054,0x0068,0x0061,0x0069,0x00 } , { 0x0063,0x0073,0x0049,0x0042,0x004D,0x0054,0x0068,0x0061,0x0069,0x00 } , { 0x0048,0x0050,0x002D,0x004C,0x0065,0x0067,0x0061,0x006C,0x00 } , { 0x0063,0x0073,0x0048,0x0050,0x004C,0x0065,0x0067,0x0061,0x006C,0x00 } , { 0x0048,0x0050,0x002D,0x0050,0x0069,0x002D,0x0066,0x006F,0x006E,0x0074,0x00 } , { 0x0063,0x0073,0x0048,0x0050,0x0050,0x0069,0x0046,0x006F,0x006E,0x0074,0x00 } , { 0x0048,0x0050,0x002D,0x004D,0x0061,0x0074,0x0068,0x0038,0x00 } , { 0x0063,0x0073,0x0048,0x0050,0x004D,0x0061,0x0074,0x0068,0x0038,0x00 } , { 0x0041,0x0064,0x006F,0x0062,0x0065,0x002D,0x0053,0x0079,0x006D,0x0062,0x006F,0x006C,0x002D,0x0045,0x006E,0x0063,0x006F,0x0064,0x0069,0x006E,0x0067,0x00 } , { 0x0063,0x0073,0x0048,0x0050,0x0050,0x0053,0x004D,0x0061,0x0074,0x0068,0x00 } , { 0x0048,0x0050,0x002D,0x0044,0x0065,0x0073,0x006B,0x0054,0x006F,0x0070,0x00 } , { 0x0063,0x0073,0x0048,0x0050,0x0044,0x0065,0x0073,0x006B,0x0074,0x006F,0x0070,0x00 } , { 0x0056,0x0065,0x006E,0x0074,0x0075,0x0072,0x0061,0x002D,0x004D,0x0061,0x0074,0x0068,0x00 } , { 0x0063,0x0073,0x0056,0x0065,0x006E,0x0074,0x0075,0x0072,0x0061,0x004D,0x0061,0x0074,0x0068,0x00 } , { 0x004D,0x0069,0x0063,0x0072,0x006F,0x0073,0x006F,0x0066,0x0074,0x002D,0x0050,0x0075,0x0062,0x006C,0x0069,0x0073,0x0068,0x0069,0x006E,0x0067,0x00 } , { 0x0063,0x0073,0x004D,0x0069,0x0063,0x0072,0x006F,0x0073,0x006F,0x0066,0x0074,0x0050,0x0075,0x0062,0x006C,0x0069,0x0073,0x0068,0x0069,0x006E,0x0067,0x00 } , { 0x0057,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0033,0x0031,0x004A,0x00 } , { 0x0063,0x0073,0x0057,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x0033,0x0031,0x004A,0x00 } , { 0x0047,0x0042,0x0032,0x0033,0x0031,0x0032,0x00 } , { 0x0063,0x0073,0x0047,0x0042,0x0032,0x0033,0x0031,0x0032,0x00 } , { 0x0042,0x0069,0x0067,0x0035,0x00 } , { 0x0063,0x0073,0x0042,0x0069,0x0067,0x0035,0x00 } , { 0x0077,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0031,0x0032,0x0035,0x0030,0x00 } , { 0x0077,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0031,0x0032,0x0035,0x0031,0x00 } , { 0x0077,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0031,0x0032,0x0035,0x0032,0x00 } , { 0x0077,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0031,0x0032,0x0035,0x0033,0x00 } , { 0x0077,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0031,0x0032,0x0035,0x0034,0x00 } , { 0x0077,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0031,0x0032,0x0035,0x0035,0x00 } , { 0x0077,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0031,0x0032,0x0035,0x0036,0x00 } , { 0x0077,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0031,0x0032,0x0035,0x0037,0x00 } , { 0x0077,0x0069,0x006E,0x0064,0x006F,0x0077,0x0073,0x002D,0x0031,0x0032,0x0035,0x0038,0x00 } , { 0x0054,0x0049,0x0053,0x002D,0x0036,0x0032,0x0030,0x00 } , { 0x0048,0x005A,0x002D,0x0047,0x0042,0x002D,0x0032,0x0033,0x0031,0x0032,0x00 } }; const unsigned int gEncodingArraySize = 791; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/internal/ValidationContextImpl.cpp0000644000175000017500000001334711327536320023301 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: ValidationContextImpl.cpp 903149 2010-01-26 09:58:40Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Constructor and Destructor // --------------------------------------------------------------------------- ValidationContextImpl::~ValidationContextImpl() { if (fIdRefList) delete fIdRefList; } ValidationContextImpl::ValidationContextImpl(MemoryManager* const manager) :ValidationContext(manager) ,fIdRefList(0) ,fEntityDeclPool(0) ,fToCheckIdRefList(true) ,fValidatingMemberType(0) ,fElemStack(0) ,fScanner(0) ,fNamespaceScope(0) { fIdRefList = new (fMemoryManager) RefHashTableOf(109, fMemoryManager); } /** * IdRefList * */ RefHashTableOf* ValidationContextImpl::getIdRefList() const { return fIdRefList; } void ValidationContextImpl::setIdRefList(RefHashTableOf* const newIdRefList) { if (fIdRefList) delete fIdRefList; fIdRefList = newIdRefList; } void ValidationContextImpl::clearIdRefList() { if (fIdRefList) fIdRefList->removeAll(); } void ValidationContextImpl::addId(const XMLCh * const content) { if (!fIdRefList || !fToCheckIdRefList) return; XMLRefInfo* idEntry = fIdRefList->get(content); if (idEntry) { if (idEntry->getDeclared()) { ThrowXMLwithMemMgr1(InvalidDatatypeValueException , XMLExcepts::VALUE_ID_Not_Unique , content , fMemoryManager); } } else { idEntry = new (fMemoryManager) XMLRefInfo(content, false, false, fMemoryManager); fIdRefList->put((void*)idEntry->getRefName(), idEntry); } // // Mark it declared // idEntry->setDeclared(true); } void ValidationContextImpl::addIdRef(const XMLCh * const content) { if (!fIdRefList || !fToCheckIdRefList) return; XMLRefInfo* idEntry = fIdRefList->get(content); if (!idEntry) { idEntry = new (fMemoryManager) XMLRefInfo(content, false, false, fMemoryManager); fIdRefList->put((void*)idEntry->getRefName(), idEntry); } // // Mark it used // idEntry->setUsed(true); } void ValidationContextImpl::toCheckIdRefList(bool toCheck) { fToCheckIdRefList = toCheck; } /** * EntityDeclPool * */ const NameIdPool* ValidationContextImpl::getEntityDeclPool() const { return fEntityDeclPool; } const NameIdPool* ValidationContextImpl::setEntityDeclPool(const NameIdPool* const newEntityDeclPool) { // we don't own it so we return the existing one for the owner to delete const NameIdPool* tempPool = fEntityDeclPool; fEntityDeclPool = newEntityDeclPool; return tempPool; } void ValidationContextImpl::checkEntity(const XMLCh * const content) const { if (fEntityDeclPool) { const DTDEntityDecl* decl = fEntityDeclPool->getByKey(content); if (!decl || !decl->isUnparsed()) { ThrowXMLwithMemMgr1(InvalidDatatypeValueException , XMLExcepts::VALUE_ENTITY_Invalid , content , fMemoryManager); } } else { ThrowXMLwithMemMgr1 ( InvalidDatatypeValueException , XMLExcepts::VALUE_ENTITY_Invalid , content , fMemoryManager ); } } /* QName */ bool ValidationContextImpl::isPrefixUnknown(XMLCh* prefix) { bool unknown = false; if (XMLString::equals(prefix, XMLUni::fgXMLNSString)) { return true; } else if (!XMLString::equals(prefix, XMLUni::fgXMLString)) { if(fElemStack && !fElemStack->isEmpty()) fElemStack->mapPrefixToURI(prefix, unknown); else if(fNamespaceScope) unknown = (fNamespaceScope->getNamespaceForPrefix(prefix)==fNamespaceScope->getEmptyNamespaceId()); } return unknown; } const XMLCh* ValidationContextImpl::getURIForPrefix(XMLCh* prefix) { bool unknown = false; unsigned int uriId = 0; if(fElemStack) uriId = fElemStack->mapPrefixToURI(prefix, unknown); else if(fNamespaceScope) { uriId = fNamespaceScope->getNamespaceForPrefix(prefix); unknown = uriId == fNamespaceScope->getEmptyNamespaceId(); } if (!unknown) return fScanner->getURIText(uriId); return XMLUni::fgZeroLenString; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/internal/XMLReader.hpp0000644000175000017500000006444511274550527020623 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLReader.hpp 833045 2009-11-05 13:21:27Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_XMLREADER_HPP) #define XERCESC_INCLUDE_GUARD_XMLREADER_HPP #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN class InputSource; class BinInputStream; class ReaderMgr; class XMLScanner; class XMLTranscoder; // --------------------------------------------------------------------------- // Instances of this class are used to manage the content of entities. The // scanner maintains a stack of these, one for each entity (this means entity // in the sense of any parsed file or internal entity) currently being // scanned. This class, given a binary input stream will handle reading in // the data and decoding it from its external decoding into the internal // Unicode format. Once internallized, this class provides the access // methods to read in the data in various ways, maintains line and column // information, and provides high performance character attribute checking // methods. // // This is NOT to be derived from. // // --------------------------------------------------------------------------- class XMLPARSER_EXPORT XMLReader : public XMemory { public: // ----------------------------------------------------------------------- // Public types // ----------------------------------------------------------------------- enum Types { Type_PE , Type_General }; enum Sources { Source_Internal , Source_External }; enum RefFrom { RefFrom_Literal , RefFrom_NonLiteral }; enum XMLVersion { XMLV1_0 , XMLV1_1 , XMLV_Unknown }; // ----------------------------------------------------------------------- // Public, query methods // ----------------------------------------------------------------------- bool isAllSpaces ( const XMLCh* const toCheck , const XMLSize_t count ) const; bool containsWhiteSpace ( const XMLCh* const toCheck , const XMLSize_t count ) const; bool isXMLLetter(const XMLCh toCheck) const; bool isFirstNameChar(const XMLCh toCheck) const; bool isNameChar(const XMLCh toCheck) const; bool isPlainContentChar(const XMLCh toCheck) const; bool isSpecialStartTagChar(const XMLCh toCheck) const; bool isXMLChar(const XMLCh toCheck) const; bool isWhitespace(const XMLCh toCheck) const; bool isControlChar(const XMLCh toCheck) const; bool isPublicIdChar(const XMLCh toCheck) const; bool isFirstNCNameChar(const XMLCh toCheck) const; bool isNCNameChar(const XMLCh toCheck) const; // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- XMLReader ( const XMLCh* const pubId , const XMLCh* const sysId , BinInputStream* const streamToAdopt , const RefFrom from , const Types type , const Sources source , const bool throwAtEnd = false , const bool calculateSrcOfs = true , XMLSize_t lowWaterMark = 100 , const XMLVersion xmlVersion = XMLV1_0 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); XMLReader ( const XMLCh* const pubId , const XMLCh* const sysId , BinInputStream* const streamToAdopt , const XMLCh* const encodingStr , const RefFrom from , const Types type , const Sources source , const bool throwAtEnd = false , const bool calculateSrcOfs = true , XMLSize_t lowWaterMark = 100 , const XMLVersion xmlVersion = XMLV1_0 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); XMLReader ( const XMLCh* const pubId , const XMLCh* const sysId , BinInputStream* const streamToAdopt , XMLRecognizer::Encodings encodingEnum , const RefFrom from , const Types type , const Sources source , const bool throwAtEnd = false , const bool calculateSrcOfs = true , XMLSize_t lowWaterMark = 100 , const XMLVersion xmlVersion = XMLV1_0 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); ~XMLReader(); // ----------------------------------------------------------------------- // Character buffer management methods // ----------------------------------------------------------------------- XMLSize_t charsLeftInBuffer() const; bool refreshCharBuffer(); // ----------------------------------------------------------------------- // Scanning methods // ----------------------------------------------------------------------- bool getName(XMLBuffer& toFill, const bool token); bool getQName(XMLBuffer& toFill, int* colonPosition); bool getNCName(XMLBuffer& toFill); bool getNextChar(XMLCh& chGotten); bool getNextCharIfNot(const XMLCh chNotToGet, XMLCh& chGotten); void movePlainContentChars(XMLBuffer &dest); bool getSpaces(XMLBuffer& toFill); bool getUpToCharOrWS(XMLBuffer& toFill, const XMLCh toCheck); bool peekNextChar(XMLCh& chGotten); bool skipIfQuote(XMLCh& chGotten); bool skipSpaces(bool& skippedSomething, bool inDecl = false); bool skippedChar(const XMLCh toSkip); bool skippedSpace(); bool skippedString(const XMLCh* const toSkip); bool skippedStringLong(const XMLCh* toSkip); bool peekString(const XMLCh* const toPeek); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- XMLFileLoc getColumnNumber() const; const XMLCh* getEncodingStr() const; XMLFileLoc getLineNumber() const; bool getNoMoreFlag() const; const XMLCh* getPublicId() const; XMLSize_t getReaderNum() const; RefFrom getRefFrom() const; Sources getSource() const; XMLFilePos getSrcOffset() const; const XMLCh* getSystemId() const; bool getThrowAtEnd() const; Types getType() const; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- bool setEncoding ( const XMLCh* const newEncoding ); void setReaderNum(const XMLSize_t newNum); void setThrowAtEnd(const bool newValue); void setXMLVersion(const XMLVersion version); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XMLReader(const XMLReader&); XMLReader& operator=(const XMLReader&); // --------------------------------------------------------------------------- // Class Constants // // kCharBufSize // The size of the character spool buffer that we use. Its not terribly // large because its just getting filled with data from a raw byte // buffer as we go along. We don't want to decode all the text at // once before we find out that there is an error. // // NOTE: This is a size in characters, not bytes. // // kRawBufSize // The size of the raw buffer from which raw bytes are spooled out // as we transcode chunks of data. As it is emptied, it is filled back // in again from the source stream. // --------------------------------------------------------------------------- enum Constants { kCharBufSize = 16 * 1024 , kRawBufSize = 48 * 1024 }; // ----------------------------------------------------------------------- // Private helper methods // ----------------------------------------------------------------------- void checkForSwapped(); void doInitCharSizeChecks(); void doInitDecode(); XMLByte getNextRawByte ( const bool eoiOk ); void refreshRawBuffer(); void setTranscoder ( const XMLCh* const newEncoding ); XMLSize_t xcodeMoreChars ( XMLCh* const bufToFill , unsigned char* const charSizes , const XMLSize_t maxChars ); void handleEOL ( XMLCh& curCh , bool inDecl = false ); // ----------------------------------------------------------------------- // Data members // // fCharIndex // The index into the character buffer. When this hits fCharsAvail // then its time to refill. // // fCharBuf // A buffer that the reader manager fills up with transcoded // characters a small amount at a time. // // fCharsAvail // The characters currently available in the character buffer. // // fCharSizeBuf // This buffer is an array that contains the number of source chars // eaten to create each char in the fCharBuf buffer. So the entry // fCharSizeBuf[x] is the number of source chars that were eaten // to make the internalized char fCharBuf[x]. This only contains // useful data if fSrcOfsSupported is true. // // fCharOfsBuf // This buffer is an array that contains the offset in the // fRawByteBuf buffer of each char in the fCharBuf buffer. It // only contains useful data if fSrcOfsSupported is true. // // fCurCol // fCurLine // The current line and column that we are in within this reader's // text. // // fEncoding // This is the rough encoding setting. This enum is set during // construction and just tells us the rough family of encoding that // we are doing. // // fEncodingStr // This is the name of the encoding we are using. It will be // provisionally set during construction, from the auto-sensed // encoding. But it might be overridden when the XMLDecl is finally // seen by the scanner. It can also be forced to a particular // encoding, in which case fForcedEncoding is set. // // fForcedEncoding // If the encoding if forced then this is set and all other // information will be ignored. This encoding will be taken as // gospel. This is done by calling an alternate constructor. // // fNoMore // This is set when the source text is exhausted. It lets us know // quickly that no more text is available. // // fRawBufIndex // The current index into the raw byte buffer. When its equal to // fRawBytesAvail then we need to read another buffer. // // fRawByteBuf // This is the raw byte buffer that is used to spool out bytes // from into the fCharBuf buffer, as we transcode in blocks. // // fRawBytesAvail // The number of bytes currently available in the raw buffer. This // helps deal with the last buffer's worth, which will usually not // be a full one. // // fLowWaterMark // The low water mark for the raw byte buffer. // // // fReaderNum // Each reader from a particular reader manager (which means from a // particular document) is given a unique number. The reader manager // sets these numbers. They are used to catch things like partial // markup errors. // // fRefFrom // This flag is provided in the ctor, and tells us if we represent // some entity being expanded inside a literal. Sometimes things // happen differently inside and outside literals. // // fPublicId // fSystemId // These are the system and public ids of the source that this // reader is reading. // // fSentTrailingSpace // If we are a PE entity being read and we not referenced from a // literal, then a leading and trailing space must be faked into the // data. This lets us know we've done the trailing space already (so // we don't just keep doing it again and again.) // // fSource // Indicates whether the content this reader is spooling as already // been internalized. This will prevent multiple processing of // whitespace when an already internalized entity is being spooled // out. // // fSpareChar // Some encodings can create two chars in an atomic way, e.g. // surrogate pairs. We might not be able to store both, so we store // it here until the next buffer transcoding operation. // // fSrcOfsBase // This is the base offset within the source of this entity. Values // in the curent fCharSizeBuf array are relative to this value. // // fSrcOfsSupported // This flag is set to indicate whether source byte offset info // is supported. For intrinsic encodings, its always set since we // can always support it. For transcoder based encodings, we ask // the transcoder if it supports it or not. // // fStream // This is the input stream that provides the data for the reader. // Its always treated as a raw byte stream. The derived class will // ask for buffers of text from it and will handle making some // sense of it. // // fSwapped // If the encoding is one of the ones we do intrinsically, and its // in a different byte order from our native order, then this is // set to remind us to byte swap it during transcoding. // // fThrowAtEnd // Indicates whether the reader manager should throw an end of entity // exception at the end of this reader instance. This is usually // set for top level external entity references. It overrides the // reader manager's global flag that controls throwing at the end // of entities. Defaults to false. // // fTranscoder // If the encoding is not one that we handle intrinsically, then // we use an an external transcoder to do it. This class is an // abstraction that allows us to use pluggable external transcoding // services (via XMLTransService in util.) // // fType // Indicates whether this reader represents a PE or not. If this // flag is true and the fInLiteral flag is false, then we will put // out an extra space at the end. // // fgCharCharsTable; // Pointer to XMLChar table, depends on XML version // // fNEL // Boolean indicates if NEL and LSEP should be recognized as NEL // // fXMLVersion // Enum to indicate if this Reader is conforming to XML 1.0 or XML 1.1 // ----------------------------------------------------------------------- XMLSize_t fCharIndex; XMLCh fCharBuf[kCharBufSize]; XMLSize_t fCharsAvail; unsigned char fCharSizeBuf[kCharBufSize]; unsigned int fCharOfsBuf[kCharBufSize]; XMLFileLoc fCurCol; XMLFileLoc fCurLine; XMLRecognizer::Encodings fEncoding; XMLCh* fEncodingStr; bool fForcedEncoding; bool fNoMore; XMLCh* fPublicId; XMLSize_t fRawBufIndex; XMLByte fRawByteBuf[kRawBufSize]; XMLSize_t fRawBytesAvail; XMLSize_t fLowWaterMark; XMLSize_t fReaderNum; RefFrom fRefFrom; bool fSentTrailingSpace; Sources fSource; XMLFilePos fSrcOfsBase; bool fSrcOfsSupported; bool fCalculateSrcOfs; XMLCh* fSystemId; BinInputStream* fStream; bool fSwapped; bool fThrowAtEnd; XMLTranscoder* fTranscoder; Types fType; XMLByte* fgCharCharsTable; bool fNEL; XMLVersion fXMLVersion; MemoryManager* fMemoryManager; }; // --------------------------------------------------------------------------- // XMLReader: Public, query methods // --------------------------------------------------------------------------- inline bool XMLReader::isNameChar(const XMLCh toCheck) const { return ((fgCharCharsTable[toCheck] & gNameCharMask) != 0); } inline bool XMLReader::isNCNameChar(const XMLCh toCheck) const { return ((fgCharCharsTable[toCheck] & gNCNameCharMask) != 0); } inline bool XMLReader::isPlainContentChar(const XMLCh toCheck) const { return ((fgCharCharsTable[toCheck] & gPlainContentCharMask) != 0); } inline bool XMLReader::isFirstNameChar(const XMLCh toCheck) const { return ((fgCharCharsTable[toCheck] & gFirstNameCharMask) != 0); } inline bool XMLReader::isFirstNCNameChar(const XMLCh toCheck) const { return (((fgCharCharsTable[toCheck] & gFirstNameCharMask) != 0) && (toCheck != chColon)); } inline bool XMLReader::isSpecialStartTagChar(const XMLCh toCheck) const { return ((fgCharCharsTable[toCheck] & gSpecialStartTagCharMask) != 0); } inline bool XMLReader::isXMLChar(const XMLCh toCheck) const { return ((fgCharCharsTable[toCheck] & gXMLCharMask) != 0); } inline bool XMLReader::isXMLLetter(const XMLCh toCheck) const { return (((fgCharCharsTable[toCheck] & gFirstNameCharMask) != 0) && (toCheck != chColon) && (toCheck != chUnderscore)); } inline bool XMLReader::isWhitespace(const XMLCh toCheck) const { return ((fgCharCharsTable[toCheck] & gWhitespaceCharMask) != 0); } inline bool XMLReader::isControlChar(const XMLCh toCheck) const { return ((fgCharCharsTable[toCheck] & gControlCharMask) != 0); } // --------------------------------------------------------------------------- // XMLReader: Buffer management methods // --------------------------------------------------------------------------- inline XMLSize_t XMLReader::charsLeftInBuffer() const { return fCharsAvail - fCharIndex; } // --------------------------------------------------------------------------- // XMLReader: Getter methods // --------------------------------------------------------------------------- inline XMLFileLoc XMLReader::getColumnNumber() const { return fCurCol; } inline const XMLCh* XMLReader::getEncodingStr() const { return fEncodingStr; } inline XMLFileLoc XMLReader::getLineNumber() const { return fCurLine; } inline bool XMLReader::getNoMoreFlag() const { return fNoMore; } inline const XMLCh* XMLReader::getPublicId() const { return fPublicId; } inline XMLSize_t XMLReader::getReaderNum() const { return fReaderNum; } inline XMLReader::RefFrom XMLReader::getRefFrom() const { return fRefFrom; } inline XMLReader::Sources XMLReader::getSource() const { return fSource; } inline const XMLCh* XMLReader::getSystemId() const { return fSystemId; } inline bool XMLReader::getThrowAtEnd() const { return fThrowAtEnd; } inline XMLReader::Types XMLReader::getType() const { return fType; } // --------------------------------------------------------------------------- // XMLReader: Setter methods // --------------------------------------------------------------------------- inline void XMLReader::setReaderNum(const XMLSize_t newNum) { fReaderNum = newNum; } inline void XMLReader::setThrowAtEnd(const bool newValue) { fThrowAtEnd = newValue; } inline void XMLReader::setXMLVersion(const XMLVersion version) { fXMLVersion = version; if (version == XMLV1_1) { fNEL = true; fgCharCharsTable = XMLChar1_1::fgCharCharsTable1_1; } else { fNEL = XMLChar1_0::enableNEL; fgCharCharsTable = XMLChar1_0::fgCharCharsTable1_0; } } // --------------------------------------------------------------------------- // // XMLReader: movePlainContentChars() // // Move as many plain (no special handling of any sort required) content // characters as possible from this reader to the supplied destination buffer. // // This is THE hottest performance spot in the parser. // // --------------------------------------------------------------------------- inline void XMLReader::movePlainContentChars(XMLBuffer &dest) { const XMLSize_t chunkSize = fCharsAvail - fCharIndex; const XMLCh* cursor = &fCharBuf[fCharIndex]; XMLSize_t count=0; for(;count= fCharsAvail) { // If fNoMore is set, then we have nothing else to give if (fNoMore) return false; // Try to refresh if (!refreshCharBuffer()) return false; } // Check the next char if (fCharBuf[fCharIndex] == chNotToGet) return false; // Its not the one we want to skip so bump the index chGotten = fCharBuf[fCharIndex++]; // Handle end of line normalization and line/col member maintenance. // // we can have end-of-line combinations with a leading // chCR(xD), chLF(xA), chNEL(x85), or chLineSeparator(x2028) // // 0000000000001101 chCR // 0000000000001010 chLF // 0000000010000101 chNEL // 0010000000101000 chLineSeparator // ----------------------- // 1101111101010000 == ~(chCR|chLF|chNEL|chLineSeparator) // // if the result of the logical-& operation is // true : 'curCh' can not be chCR, chLF, chNEL or chLineSeparator // false : 'curCh' can be chCR, chLF, chNEL or chLineSeparator // if ( chGotten & (XMLCh) ~(chCR|chLF|chNEL|chLineSeparator) ) { fCurCol++; } else { handleEOL(chGotten, false); } return true; } // --------------------------------------------------------------------------- // XMLReader: getNextChar() method inlined for speed // --------------------------------------------------------------------------- inline bool XMLReader::getNextChar(XMLCh& chGotten) { // // See if there is at least a char in the buffer. Else, do the buffer // reload logic. // if (fCharIndex >= fCharsAvail) { // If fNoMore is set, then we have nothing else to give if (fNoMore) return false; // Try to refresh if (!refreshCharBuffer()) return false; } chGotten = fCharBuf[fCharIndex++]; // Handle end of line normalization and line/col member maintenance. // // we can have end-of-line combinations with a leading // chCR(xD), chLF(xA), chNEL(x85), or chLineSeparator(x2028) // // 0000000000001101 chCR // 0000000000001010 chLF // 0000000010000101 chNEL // 0010000000101000 chLineSeparator // ----------------------- // 1101111101010000 == ~(chCR|chLF|chNEL|chLineSeparator) // // if the result of the logical-& operation is // true : 'curCh' can not be chCR, chLF, chNEL or chLineSeparator // false : 'curCh' can be chCR, chLF, chNEL or chLineSeparator // if ( chGotten & (XMLCh) ~(chCR|chLF|chNEL|chLineSeparator) ) { fCurCol++; } else { handleEOL(chGotten, false); } return true; } // --------------------------------------------------------------------------- // XMLReader: peekNextChar() method inlined for speed // --------------------------------------------------------------------------- inline bool XMLReader::peekNextChar(XMLCh& chGotten) { // // If there is something still in the buffer, get it. Else do the reload // scenario. // if (fCharIndex >= fCharsAvail) { // Try to refresh the buffer if (!refreshCharBuffer()) { chGotten = chNull; return false; } } chGotten = fCharBuf[fCharIndex]; // // Even though we are only peeking, we have to act the same as the // normal char get method in regards to newline normalization, though // its not as complicated as the actual character getting method's. // if ((chGotten == chCR || (fNEL && (chGotten == chNEL || chGotten == chLineSeparator))) && (fSource == Source_External)) chGotten = chLF; return true; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/internal/XSObjectFactory.hpp0000644000175000017500000001457111041105072022023 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XSObjectFactory.hpp 678409 2008-07-21 13:08:10Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_XSOBJECTFACTORY_HPP) #define XERCESC_INCLUDE_GUARD_XSOBJECTFACTORY_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN class XSObject; class XSAttributeUse; class XSAttributeDeclaration; class XSModel; class XSElementDeclaration; class XSSimpleTypeDefinition; class XSComplexTypeDefinition; class XSModelGroupDefinition; class XSAttributeGroupDefinition; class XSWildcard; class XSParticle; class XSAnnotation; class XSNamespaceItem; class XSNotationDeclaration; class SchemaAttDef; class SchemaElementDecl; class DatatypeValidator; class ContentSpecNode; class ComplexTypeInfo; class XercesGroupInfo; class XercesAttGroupInfo; class XSIDCDefinition; class IdentityConstraint; class XMLNotationDecl; /** * Factory class to create various XSObject(s) * Used by XSModel */ class XMLPARSER_EXPORT XSObjectFactory : public XMemory { public: // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- XSObjectFactory(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); ~XSObjectFactory(); private: // ----------------------------------------------------------------------- // Unimplemented constructors and destructor // ----------------------------------------------------------------------- XSObjectFactory(const XSObjectFactory&); XSObjectFactory& operator=(const XSObjectFactory&); // ----------------------------------------------------------------------- // factory methods // ----------------------------------------------------------------------- XSParticle* createModelGroupParticle ( const ContentSpecNode* const node , XSModel* const xsModel ); XSAttributeDeclaration* addOrFind ( SchemaAttDef* const attDef , XSModel* const xsModel , XSComplexTypeDefinition* const enclosingTypeDef = 0 ); XSSimpleTypeDefinition* addOrFind ( DatatypeValidator* const validator , XSModel* const xsModel , bool isAnySimpleType = false ); XSElementDeclaration* addOrFind ( SchemaElementDecl* const elemDecl , XSModel* const xsModel , XSComplexTypeDefinition* const enclosingTypeDef = 0 ); XSComplexTypeDefinition* addOrFind ( ComplexTypeInfo* const typeInfo , XSModel* const xsModel ); XSIDCDefinition* addOrFind ( IdentityConstraint* const ic , XSModel* const xsModel ); XSNotationDeclaration* addOrFind ( XMLNotationDecl* const notDecl , XSModel* const xsModel ); XSAttributeUse* createXSAttributeUse ( XSAttributeDeclaration* const xsAttDecl , XSModel* const xsModel ); XSWildcard* createXSWildcard ( SchemaAttDef* const attDef , XSModel* const xsModel ); XSWildcard* createXSWildcard ( const ContentSpecNode* const rootNode , XSModel* const xsModel ); XSModelGroupDefinition* createXSModelGroupDefinition ( XercesGroupInfo* const groupInfo , XSModel* const xsModel ); XSAttributeGroupDefinition* createXSAttGroupDefinition ( XercesAttGroupInfo* const attGroupInfo , XSModel* const xsModel ); // ----------------------------------------------------------------------- // Helper methods // ----------------------------------------------------------------------- // creates a particle corresponding to an element XSParticle* createElementParticle ( const ContentSpecNode* const rootNode , XSModel* const xsModel ); // creates a particle corresponding to a wildcard XSParticle* createWildcardParticle ( const ContentSpecNode* const rootNode , XSModel* const xsModel ); XSAnnotation* getAnnotationFromModel ( XSModel* const xsModel , const void* const key ); void buildAllParticles ( const ContentSpecNode* const rootNode , XSParticleList* const particleList , XSModel* const xsModel ); void buildChoiceSequenceParticles ( const ContentSpecNode* const rootNode , XSParticleList* const particleList , XSModel* const xsModel ); void putObjectInMap ( void* key , XSObject* const object ); XSObject* getObjectFromMap ( void* key ); void processFacets ( DatatypeValidator* const dv , XSModel* const xsModel , XSSimpleTypeDefinition* const xsST ); void processAttUse ( SchemaAttDef* const attDef , XSAttributeUse* const xsAttUse ); bool isMultiValueFacetDefined(DatatypeValidator* const dv); // make XSModel our friend friend class XSModel; // ----------------------------------------------------------------------- // Private Data Members // // fMemoryManager // The memory manager used to create various XSObject(s). // ----------------------------------------------------------------------- MemoryManager* fMemoryManager; RefHashTableOf* fXercesToXSMap; RefVectorOf* fDeleteVector; }; inline XSObject* XSObjectFactory::getObjectFromMap(void* key) { return fXercesToXSMap->get(key); } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/internal/ReaderMgr.cpp0000644000175000017500000010300411274550527020664 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: ReaderMgr.cpp 833045 2009-11-05 13:21:27Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // ReaderMgr: Constructors and Destructor // --------------------------------------------------------------------------- ReaderMgr::ReaderMgr(MemoryManager* const manager) : fCurEntity(0) , fCurReader(0) , fEntityHandler(0) , fEntityStack(0) , fNextReaderNum(1) , fReaderStack(0) , fThrowEOE(false) , fXMLVersion(XMLReader::XMLV1_0) , fStandardUriConformant(false) , fMemoryManager(manager) { } ReaderMgr::~ReaderMgr() { // // Clean up the reader and entity stacks. Note that we don't own the // entities, so we don't delete the current entity (and the entity stack // does not own its elements either, so deleting it will not delete the // entities it still references!) // delete fCurReader; delete fReaderStack; delete fEntityStack; } // --------------------------------------------------------------------------- // ReaderMgr: Getter methods // --------------------------------------------------------------------------- bool ReaderMgr::isEmpty() const { return fReaderStack->empty(); } // --------------------------------------------------------------------------- // ReaderMgr: Scanning APIs // --------------------------------------------------------------------------- XMLCh ReaderMgr::getNextChar() { XMLCh chRet; if (fCurReader->getNextChar(chRet)) return chRet; // // Didn't get anything back so this reader is hosed. So lets move to // the next reader on the stack. If this fails, it will be because // its the end of the original file, and we just return zero. // // If its the end of an entity and fThrowEOE is set, it will throw out // of here. Otherwise, it will take us down to the next reader and // we'll have more chars. // if (!popReader()) return XMLCh(0); // Else try again and return the new character fCurReader->getNextChar(chRet); return chRet; } void ReaderMgr::getSpaces(XMLBuffer& toFill) { // Reset the buffer before we start toFill.reset(); // // Get all the spaces from the current reader. If it returns true, // it hit a non-space and we are done. Else we have to pop a reader // and keep going. // while (!fCurReader->getSpaces(toFill)) { // We wore that one out, so lets pop a reader and try again if (!popReader()) break; } } void ReaderMgr::getUpToCharOrWS(XMLBuffer& toFill, const XMLCh toCheck) { // Reset the target buffer before we start toFill.reset(); // // Ok, enter a loop where we ask the current reader to get chars until // it meets the criteria. It returns false if it came back due to eating // up all of its data. Else it returned because something matched, and // we are done. // while (!fCurReader->getUpToCharOrWS(toFill, toCheck)) { // We ate that one up, lets try to pop another. If not, break out if (!popReader()) break; } } XMLCh ReaderMgr::peekNextChar() { XMLCh chRet; if (fCurReader->peekNextChar(chRet)) return chRet; // // Didn't get anything back so this reader is hosed. So lets move to // the next reader on the stack. If this fails, it will be because // its the end of the original file, and we just return zero. // if (!popReader()) return XMLCh(0); // Else peek again and return the character fCurReader->peekNextChar(chRet); return chRet; } bool ReaderMgr::skippedChar(const XMLCh toCheck) { while (true) { // If we get it, then just return true now if (fCurReader->skippedChar(toCheck)) return true; // // Check to see if we hit end of input on this reader. If so, then // lets pop and try again. Else, we failed. If we cannot pop another // then we failed. // if (!fCurReader->getNoMoreFlag()) break; if (!popReader()) break; } return false; } bool ReaderMgr::skippedSpace() { while (true) { // If we get it, then just return true now if (fCurReader->skippedSpace()) return true; // // Check to see if we hit end of input on this reader. If so, then // lets pop and try again. Else, we failed. If we cannot pop another // then we failed. // if (!fCurReader->getNoMoreFlag()) break; if (!popReader()) break; } return false; } bool ReaderMgr::skipIfQuote(XMLCh& chGotten) { while (true) { // If we get it, then just return true now if (fCurReader->skipIfQuote(chGotten)) return true; // // Check to see if we hit end of input on this reader. If so, then // lets pop and try again. Else, we failed. If we cannot pop another // then we failed. // if (!fCurReader->getNoMoreFlag()) break; if (!popReader()) break; } return false; } void ReaderMgr::skipPastSpaces(bool& skippedSomething, bool inDecl /* = false */) { // we rely on the fact that fCurReader->skipSpaces will NOT reset the flag to false, but only // set it to true if a space is found skippedSomething = false; // // Skip all the spaces in the current reader. If it returned because // it hit a non-space, break out. Else we have to pop another entity // and keep going. // while (!fCurReader->skipSpaces(skippedSomething, inDecl)) { // Try to pop another entity. If we can't then we are done if (!popReader()) break; } } void ReaderMgr::skipPastSpaces() { // we are not using it, so we don't care to initialize it bool tmpFlag; // // Skip all the spaces in the current reader. If it returned because // it hit a non-space, break out. Else we have to pop another entity // and keep going. // while (!fCurReader->skipSpaces(tmpFlag, false)) { // Try to pop another entity. If we can't then we are done if (!popReader()) break; } } void ReaderMgr::skipQuotedString(const XMLCh quoteCh) { XMLCh nextCh; // If we get an end of file char, then return while ((nextCh = getNextChar())!=0) { // If we get the quote char, then break out if (nextCh == quoteCh) break; } } XMLCh ReaderMgr::skipUntilIn(const XMLCh* const listToSkip) { XMLCh nextCh; // If we get an end of file char, then return while ((nextCh = peekNextChar())!=0) { if (XMLString::indexOf(listToSkip, nextCh) != -1) break; // Its one of ours so eat it getNextChar(); } return nextCh; } XMLCh ReaderMgr::skipUntilInOrWS(const XMLCh* const listToSkip) { XMLCh nextCh; // If we get an end of file char, then return while ((nextCh = peekNextChar())!=0) { if (fCurReader->isWhitespace(nextCh)) break; if (XMLString::indexOf(listToSkip, nextCh) != -1) break; // Its one of ours, so eat it getNextChar(); } return nextCh; } // --------------------------------------------------------------------------- // ReaderMgr: Control methods // --------------------------------------------------------------------------- // // If the reader stack is empty, then there is only the original main XML // entity left. If its empty, then we have no more input. // bool ReaderMgr::atEOF() const { return fReaderStack->empty() && fCurReader->getNoMoreFlag(); } // // This method is called in the case of errors to clean up the stack when // entities have been incorrectly left on the stack due to syntax errors. // It just cleans back the stack, and sends no entity events. // void ReaderMgr::cleanStackBackTo(const XMLSize_t readerNum) { // // Just start popping readers until we find the one with the indicated // reader number. // while (true) { if (fCurReader->getReaderNum() == readerNum) break; if (fReaderStack->empty()) ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::RdrMgr_ReaderIdNotFound, fMemoryManager); delete fCurReader; fCurReader = fReaderStack->pop(); fCurEntity = fEntityStack->pop(); } } XMLReader* ReaderMgr::createReader( const InputSource& src , const bool , const XMLReader::RefFrom refFrom , const XMLReader::Types type , const XMLReader::Sources source , const bool calcSrcOfs , XMLSize_t lowWaterMark) { // // Ask the input source to create us an input stream. The particular // type of input source will know what kind to create. // BinInputStream* newStream = src.makeStream(); if (!newStream) return 0; Janitor streamJanitor(newStream); // // Create a new reader and return it. If the source has an encoding that // it wants to force, then we call the constructor that does that. // Otherwise, we just call the one that provides the provisional encoding // to be possibly updated later by the encoding="" setting. // XMLReader* retVal = 0; // XMLReader ctor invokes refreshRawBuffer() which calls // newStream->readBytes(). // This readBytes() may throw exception, which neither // refresRawBuffer(), nor XMLReader ctor catches. // We need to handle this exception to avoid leak on newStream. try { if (src.getEncoding()) { retVal = new (fMemoryManager) XMLReader ( src.getPublicId() , src.getSystemId() , newStream , src.getEncoding() , refFrom , type , source , false , calcSrcOfs , lowWaterMark , fXMLVersion , fMemoryManager ); } else { retVal = new (fMemoryManager) XMLReader ( src.getPublicId() , src.getSystemId() , newStream , refFrom , type , source , false , calcSrcOfs , lowWaterMark , fXMLVersion , fMemoryManager ); } } catch(const OutOfMemoryException&) { streamJanitor.release(); throw; } assert(retVal); streamJanitor.release(); // Set the next available reader number on this reader retVal->setReaderNum(fNextReaderNum++); return retVal; } XMLReader* ReaderMgr::createReader( const XMLCh* const sysId , const XMLCh* const pubId , const bool xmlDecl , const XMLReader::RefFrom refFrom , const XMLReader::Types type , const XMLReader::Sources source , InputSource*& srcToFill , const bool calcSrcOfs , XMLSize_t lowWaterMark , const bool disableDefaultEntityResolution) { //Normalize sysId XMLBuffer normalizedSysId(1023, fMemoryManager); if(sysId) XMLString::removeChar(sysId, 0xFFFF, normalizedSysId); const XMLCh* normalizedURI = normalizedSysId.getRawBuffer(); // Create a buffer for expanding the system id XMLBuffer expSysId(1023, fMemoryManager); // // Allow the entity handler to expand the system id if they choose // to do so. // if (fEntityHandler) { if (!fEntityHandler->expandSystemId(normalizedURI, expSysId)) expSysId.set(normalizedURI); } else { expSysId.set(normalizedURI); } // Call the entity resolver interface to get an input source srcToFill = 0; if (fEntityHandler) { LastExtEntityInfo lastInfo; getLastExtEntityInfo(lastInfo); XMLResourceIdentifier resourceIdentifier(XMLResourceIdentifier::ExternalEntity, expSysId.getRawBuffer(), XMLUni::fgZeroLenString, pubId, lastInfo.systemId, this); srcToFill = fEntityHandler->resolveEntity(&resourceIdentifier); } // // If they didn't create a source via the entity resolver, then we // have to create one on our own. // if (!srcToFill) { if (disableDefaultEntityResolution) return 0; LastExtEntityInfo lastInfo; getLastExtEntityInfo(lastInfo); // Keep this #if 0 block as it was exposing a threading problem on AIX. // Got rid of the problem by changing XMLURL to not throw malformedurl // exceptions. #if 0 try { XMLURL urlTmp(lastInfo.systemId, expSysId.getRawBuffer(), fMemoryManager); if (urlTmp.isRelative()) { ThrowXMLwithMemMgr ( MalformedURLException , XMLExcepts::URL_NoProtocolPresent , fMemoryManager ); } else { if (fStandardUriConformant && urlTmp.hasInvalidChar()) ThrowXMLwithMemMgr(MalformedURLException, XMLExcepts::URL_MalformedURL, fMemoryManager); srcToFill = new (fMemoryManager) URLInputSource(urlTmp, fMemoryManager); } } catch(const MalformedURLException& e) { // Its not a URL, so lets assume its a local file name if non-standard uri is allowed if (!fStandardUriConformant) srcToFill = new (fMemoryManager) LocalFileInputSource ( lastInfo.systemId , expSysId.getRawBuffer() , fMemoryManager ); else throw e; } #else XMLURL urlTmp(fMemoryManager); if ((!urlTmp.setURL(lastInfo.systemId, expSysId.getRawBuffer(), urlTmp)) || (urlTmp.isRelative())) { if (!fStandardUriConformant) { XMLBuffer resolvedSysId(1023, fMemoryManager); XMLUri::normalizeURI(expSysId.getRawBuffer(), resolvedSysId); srcToFill = new (fMemoryManager) LocalFileInputSource ( lastInfo.systemId , resolvedSysId.getRawBuffer() , fMemoryManager ); } else ThrowXMLwithMemMgr(MalformedURLException, XMLExcepts::URL_MalformedURL, fMemoryManager); } else { if (fStandardUriConformant && urlTmp.hasInvalidChar()) ThrowXMLwithMemMgr(MalformedURLException, XMLExcepts::URL_MalformedURL, fMemoryManager); srcToFill = new (fMemoryManager) URLInputSource(urlTmp, fMemoryManager); } #endif } // Put a janitor on the input source Janitor janSrc(srcToFill); // // Now call the other version with the input source that we have, and // return the resulting reader. // XMLReader* retVal = createReader ( *srcToFill , xmlDecl , refFrom , type , source , calcSrcOfs , lowWaterMark ); // Either way, we can release the input source now janSrc.orphan(); // If it failed for any reason, then return zero. if (!retVal) return 0; // Give this reader the next available reader number and return it retVal->setReaderNum(fNextReaderNum++); return retVal; } XMLReader* ReaderMgr::createReader( const XMLCh* const baseURI , const XMLCh* const sysId , const XMLCh* const pubId , const bool xmlDecl , const XMLReader::RefFrom refFrom , const XMLReader::Types type , const XMLReader::Sources source , InputSource*& srcToFill , const bool calcSrcOfs , XMLSize_t lowWaterMark , const bool disableDefaultEntityResolution) { //Normalize sysId XMLBuffer normalizedSysId(1023, fMemoryManager); XMLString::removeChar(sysId, 0xFFFF, normalizedSysId); const XMLCh* normalizedURI = normalizedSysId.getRawBuffer(); // Create a buffer for expanding the system id XMLBuffer expSysId(1023, fMemoryManager); // // Allow the entity handler to expand the system id if they choose // to do so. // if (fEntityHandler) { if (!fEntityHandler->expandSystemId(normalizedURI, expSysId)) expSysId.set(normalizedURI); } else { expSysId.set(normalizedURI); } // Call the entity resolver interface to get an input source srcToFill = 0; if (fEntityHandler) { XMLResourceIdentifier resourceIdentifier(XMLResourceIdentifier::ExternalEntity, expSysId.getRawBuffer(), XMLUni::fgZeroLenString, pubId, baseURI, this); srcToFill = fEntityHandler->resolveEntity(&resourceIdentifier); } // // If they didn't create a source via the entity resolver, then we // have to create one on our own. // if (!srcToFill) { if (disableDefaultEntityResolution) return 0; LastExtEntityInfo lastInfo; const XMLCh* baseuri=baseURI; if(!baseuri || !*baseuri) { getLastExtEntityInfo(lastInfo); baseuri = lastInfo.systemId; } XMLURL urlTmp(fMemoryManager); if ((!urlTmp.setURL(baseuri, expSysId.getRawBuffer(), urlTmp)) || (urlTmp.isRelative())) { if (!fStandardUriConformant) { XMLBuffer resolvedSysId(1023, fMemoryManager); XMLUri::normalizeURI(expSysId.getRawBuffer(), resolvedSysId); srcToFill = new (fMemoryManager) LocalFileInputSource ( baseuri , resolvedSysId.getRawBuffer() , fMemoryManager ); } else ThrowXMLwithMemMgr(MalformedURLException, XMLExcepts::URL_MalformedURL, fMemoryManager); } else { if (fStandardUriConformant && urlTmp.hasInvalidChar()) ThrowXMLwithMemMgr(MalformedURLException, XMLExcepts::URL_MalformedURL, fMemoryManager); srcToFill = new (fMemoryManager) URLInputSource(urlTmp, fMemoryManager); } } // Put a janitor on the input source Janitor janSrc(srcToFill); // // Now call the other version with the input source that we have, and // return the resulting reader. // XMLReader* retVal = createReader ( *srcToFill , xmlDecl , refFrom , type , source , calcSrcOfs , lowWaterMark ); // Either way, we can release the input source now janSrc.orphan(); // If it failed for any reason, then return zero. if (!retVal) return 0; // Give this reader the next available reader number and return it retVal->setReaderNum(fNextReaderNum++); return retVal; } XMLReader* ReaderMgr::createIntEntReader( const XMLCh* const sysId , const XMLReader::RefFrom refFrom , const XMLReader::Types type , const XMLCh* const dataBuf , const XMLSize_t dataLen , const bool copyBuf , const bool calcSrcOfs , XMLSize_t lowWaterMark) { // // This one is easy, we just create an input stream for the data and // provide a few extra goodies. // // NOTE: We use a special encoding string that will be recognized // as a 'do nothing' transcoder for the already internalized XMLCh // data that makes up an internal entity. // BinMemInputStream* newStream = new (fMemoryManager) BinMemInputStream ( (const XMLByte*)dataBuf , dataLen * sizeof(XMLCh) , copyBuf ? BinMemInputStream::BufOpt_Copy : BinMemInputStream::BufOpt_Reference , fMemoryManager ); if (!newStream) return 0; XMLReader* retVal = new (fMemoryManager) XMLReader ( sysId , 0 , newStream , XMLRecognizer::XERCES_XMLCH , refFrom , type , XMLReader::Source_Internal , false , calcSrcOfs , lowWaterMark , fXMLVersion , fMemoryManager ); // If it failed for any reason, then return zero. if (!retVal) { delete newStream; return 0; } // Set the reader number to the next available number retVal->setReaderNum(fNextReaderNum++); return retVal; } const XMLCh* ReaderMgr::getCurrentEncodingStr() const { const XMLEntityDecl* theEntity; const XMLReader* theReader = getLastExtEntity(theEntity); return theReader->getEncodingStr(); } const XMLEntityDecl* ReaderMgr::getCurrentEntity() const { return fCurEntity; } XMLEntityDecl* ReaderMgr::getCurrentEntity() { return fCurEntity; } XMLSize_t ReaderMgr::getReaderDepth() const { // If the stack doesn't exist, its obviously zero if (!fEntityStack) return 0; // // The return is the stack size, plus one if there is a current // reader. So if there is no current reader and none on the stack, // its zero, else its some non-zero value. // XMLSize_t retVal = fEntityStack->size(); if (fCurReader) retVal++; return retVal; } void ReaderMgr::getLastExtEntityInfo(LastExtEntityInfo& lastInfo) const { // // If the reader stack never got created or we've not managed to open any // main entity yet, then we can't give this information. // if (!fReaderStack || !fCurReader) { lastInfo.systemId = XMLUni::fgZeroLenString; lastInfo.publicId = XMLUni::fgZeroLenString; lastInfo.lineNumber = 0; lastInfo.colNumber = 0; return; } // We have at least one entity so get the data const XMLEntityDecl* theEntity; const XMLReader* theReader = getLastExtEntity(theEntity); // Fill in the info structure with the reader we found lastInfo.systemId = theReader->getSystemId(); lastInfo.publicId = theReader->getPublicId(); lastInfo.lineNumber = theReader->getLineNumber(); lastInfo.colNumber = theReader->getColumnNumber(); } bool ReaderMgr::isScanningPERefOutOfLiteral() const { // If the current reader is not for an entity, then definitely not if (!fCurEntity) return false; // // If this is a PE entity, and its not being expanded in a literal // then its true. // if ((fCurReader->getType() == XMLReader::Type_PE) && (fCurReader->getRefFrom() == XMLReader::RefFrom_NonLiteral)) { return true; } return false; } bool ReaderMgr::pushReader( XMLReader* const reader , XMLEntityDecl* const entity) { // // First, if an entity was passed, we have to confirm that this entity // is not already on the entity stack. If so, then this is a recursive // entity expansion, so we issue an error and refuse to put the reader // on the stack. // // If there is no entity passed, then its not an entity being pushed, so // nothing to do. If there is no entity stack yet, then of coures it // cannot already be there. // if (entity && fEntityStack) { const XMLSize_t count = fEntityStack->size(); const XMLCh* const theName = entity->getName(); for (XMLSize_t index = 0; index < count; index++) { const XMLEntityDecl* curDecl = fEntityStack->elementAt(index); if (curDecl) { if (XMLString::equals(theName, curDecl->getName())) { // Oops, already there so delete reader and return delete reader; return false; } } } } // // Fault in the reader stack. Give it an initial capacity of 16, and // tell it it does own its elements. // if (!fReaderStack) fReaderStack = new (fMemoryManager) RefStackOf(16, true, fMemoryManager); // And the entity stack, which does not own its elements if (!fEntityStack) fEntityStack = new (fMemoryManager) RefStackOf(16, false, fMemoryManager); // // Push the current reader and entity onto their respective stacks. // Note that the the current entity can be null if the current reader // is not for an entity. // if (fCurReader) { fReaderStack->push(fCurReader); fEntityStack->push(fCurEntity); } // // Make the passed reader and entity the current top of stack. The // passed entity can (and often is) null. // fCurReader = reader; fCurEntity = entity; return true; } void ReaderMgr::reset() { // Reset all of the flags fThrowEOE = false; // Delete the current reader and flush the reader stack delete fCurReader; fCurReader = 0; if (fReaderStack) fReaderStack->removeAllElements(); // // And do the same for the entity stack, but don't delete the current // entity (if any) since we don't own them. // fCurEntity = 0; if (fEntityStack) fEntityStack->removeAllElements(); } // --------------------------------------------------------------------------- // ReaderMgr: Implement the SAX Locator interface // --------------------------------------------------------------------------- const XMLCh* ReaderMgr::getPublicId() const { if (!fReaderStack && !fCurReader) return XMLUni::fgZeroLenString; const XMLEntityDecl* theEntity; return getLastExtEntity(theEntity)->getPublicId(); } const XMLCh* ReaderMgr::getSystemId() const { if (!fReaderStack && !fCurReader) return XMLUni::fgZeroLenString; const XMLEntityDecl* theEntity; return getLastExtEntity(theEntity)->getSystemId(); } XMLFileLoc ReaderMgr::getColumnNumber() const { if (!fReaderStack && !fCurReader) return 0; const XMLEntityDecl* theEntity; return getLastExtEntity(theEntity)->getColumnNumber(); } XMLFileLoc ReaderMgr::getLineNumber() const { if (!fReaderStack && !fCurReader) return 0; const XMLEntityDecl* theEntity; return getLastExtEntity(theEntity)->getLineNumber(); } // --------------------------------------------------------------------------- // ReaderMgr: Private helper methods // --------------------------------------------------------------------------- const XMLReader* ReaderMgr::getLastExtEntity(const XMLEntityDecl*& itsEntity) const { // // Scan down the reader stack until we find a reader for an entity that // is external. First check that there is anything in the stack at all, // in which case the current reader is the main file and that's the one // that we want. // const XMLReader* theReader = fCurReader; // // If there is a current entity and it is not an external entity, then // search the stack; else, keep the reader that we've got since its // either an external entity reader or the main file reader. // const XMLEntityDecl* curEntity = fCurEntity; if (curEntity && !curEntity->isExternal()) { XMLSize_t index = fReaderStack->size(); if (index) { while (true) { // Move down to the previous element and get a pointer to it index--; curEntity = fEntityStack->elementAt(index); // // If its null or its an external entity, then this reader // is what we want, so break out with that one. // if (!curEntity) { theReader = fReaderStack->elementAt(index); break; } else if (curEntity->isExternal()) { theReader = fReaderStack->elementAt(index); break; } // We hit the end, so leave the main file reader as the one if (!index) break; } } } itsEntity = curEntity; return theReader; } bool ReaderMgr::popReader() { // // We didn't get any more, so try to pop off a reader. If the reader // stack is empty, then we are at the end, so return false. // if (fReaderStack->empty()) return false; // // Remember the current entity, before we pop off a new one. We might // need this to throw the end of entity exception at the end. // XMLEntityDecl* prevEntity = fCurEntity; const bool prevReaderThrowAtEnd = fCurReader->getThrowAtEnd(); const XMLSize_t readerNum = fCurReader->getReaderNum(); // // Delete the current reader and pop a new reader and entity off // the stacks. // delete fCurReader; fCurReader = fReaderStack->pop(); fCurEntity = fEntityStack->pop(); // // If there was a previous entity, and either the fThrowEOE flag is set // or reader was marked as such, then throw an end of entity. // if (prevEntity && (fThrowEOE || prevReaderThrowAtEnd)) throw EndOfEntityException(prevEntity, readerNum); while (true) { // // They don't want us to throw, so lets just return with a new // reader. Here we have to do a loop because we might have multiple // readers on these stack that are empty (i.e. the last char in them // was the ';' at the end of the entity ref that caused the next // entity to be pushed. // // So we loop until we find a non-empty reader, or hit the main // file entity. If we find one with some chars available, then break // out and take that one. // if (fCurReader->charsLeftInBuffer()) break; fCurReader->refreshCharBuffer(); if (fCurReader->charsLeftInBuffer()) break; // // The current one is hosed. So, if the reader stack is empty we // are dead meat and can give up now. // if (fReaderStack->empty()) return false; // Else pop again and try it one more time delete fCurReader; fCurReader = fReaderStack->pop(); fCurEntity = fEntityStack->pop(); } return true; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/internal/XProtoType.hpp0000644000175000017500000000543710606722647021133 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XProtoType.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_XPROTOTYPE_HPP) #define XERCESC_INCLUDE_GUARD_XPROTOTYPE_HPP #include XERCES_CPP_NAMESPACE_BEGIN class XSerializeEngine; class XSerializable; class XMLUTIL_EXPORT XProtoType { public: void store(XSerializeEngine& serEng) const; static void load(XSerializeEngine& serEng , XMLByte* const name , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); // ------------------------------------------------------------------------------- // data // // fClassName: // name of the XSerializable derivatives // // fCreateObject: // pointer to the factory method (createObject()) // of the XSerializable derivatives // // ------------------------------------------------------------------------------- XMLByte* fClassName; XSerializable* (*fCreateObject)(MemoryManager*); }; #define DECL_XPROTOTYPE(class_name) \ static XProtoType class##class_name; \ static XSerializable* createObject(MemoryManager* manager); /*** * For non-abstract class ***/ #define IMPL_XPROTOTYPE_TOCREATE(class_name) \ IMPL_XPROTOTYPE_INSTANCE(class_name) \ XSerializable* class_name::createObject(MemoryManager* manager) \ {return new (manager) class_name(manager);} /*** * For abstract class ***/ #define IMPL_XPROTOTYPE_NOCREATE(class_name) \ IMPL_XPROTOTYPE_INSTANCE(class_name) \ XSerializable* class_name::createObject(MemoryManager*) \ {return 0;} /*** * Helper Macro ***/ #define XPROTOTYPE_CLASS(class_name) ((XProtoType*)(&class_name::class##class_name)) #define IMPL_XPROTOTYPE_INSTANCE(class_name) \ XProtoType class_name::class##class_name = \ {(XMLByte*) #class_name, class_name::createObject }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/internal/ValidationContextImpl.hpp0000644000175000017500000001345011126201344023271 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: ValidationContextImpl.hpp 729944 2008-12-29 17:03:32Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_VALIDATION_CONTEXTIMPL_HPP) #define XERCESC_INCLUDE_GUARD_VALIDATION_CONTEXTIMPL_HPP #include XERCES_CPP_NAMESPACE_BEGIN class ElemStack; class NamespaceScope; class XMLPARSER_EXPORT ValidationContextImpl : public ValidationContext { public : // ----------------------------------------------------------------------- /** @name Virtual destructor for derived classes */ // ----------------------------------------------------------------------- //@{ /** * virtual destructor * */ virtual ~ValidationContextImpl(); ValidationContextImpl(MemoryManager* const memMgr = XMLPlatformUtils::fgMemoryManager); //@} // ----------------------------------------------------------------------- /** @name The ValidationContextImpl Interface */ // ----------------------------------------------------------------------- //@{ /** * IDRefList * */ virtual RefHashTableOf* getIdRefList() const; virtual void setIdRefList(RefHashTableOf* const); virtual void clearIdRefList(); virtual void addId(const XMLCh * const ); virtual void addIdRef(const XMLCh * const ); virtual void toCheckIdRefList(bool); /** * EntityDeclPool * */ virtual const NameIdPool* getEntityDeclPool() const; virtual const NameIdPool* setEntityDeclPool(const NameIdPool* const); virtual void checkEntity(const XMLCh * const ) const; /** * Union datatype handling * */ virtual DatatypeValidator * getValidatingMemberType() const; virtual void setValidatingMemberType(DatatypeValidator * validatingMemberType) ; /** * QName datatype handling * Create default implementations for source code compatibility */ virtual bool isPrefixUnknown(XMLCh* prefix); virtual void setElemStack(ElemStack* elemStack); virtual const XMLCh* getURIForPrefix(XMLCh* prefix); virtual void setScanner(XMLScanner* scanner); virtual void setNamespaceScope(NamespaceScope* nsStack); //@} private: // ----------------------------------------------------------------------- /** name Unimplemented copy constructor and operator= */ // ----------------------------------------------------------------------- //@{ ValidationContextImpl(const ValidationContextImpl& ); ValidationContextImpl& operator=(const ValidationContextImpl& ); //@} // ----------------------------------------------------------------------- // Data members // // fIDRefList: owned/adopted // This is a list of XMLRefInfo objects. This member lets us do all // needed ID-IDREF balancing checks. // // fEntityDeclPool: referenced only // This is a pool of EntityDecl objects, which contains all of the // general entities that are declared in the DTD subsets, plus the // default entities (such as > < ...) defined by the XML Standard. // // fToAddToList // fValidatingMemberType // The member type in a union that actually // validated some text. Note that the validationContext does not // own this object, and the value of getValidatingMemberType // will not be accurate unless the type of the most recently-validated // element/attribute is in fact a union datatype. // fElemStack // Need access to elemstack to look up URI's that are inscope (while validating an XML). // fNamespaceScope // Need access to namespace scope to look up URI's that are inscope (while loading a schema). // ----------------------------------------------------------------------- RefHashTableOf* fIdRefList; const NameIdPool* fEntityDeclPool; bool fToCheckIdRefList; DatatypeValidator * fValidatingMemberType; ElemStack* fElemStack; XMLScanner* fScanner; NamespaceScope* fNamespaceScope; }; inline DatatypeValidator * ValidationContextImpl::getValidatingMemberType() const { return fValidatingMemberType; } inline void ValidationContextImpl::setValidatingMemberType(DatatypeValidator * validatingMemberType) { fValidatingMemberType = validatingMemberType; } inline void ValidationContextImpl::setElemStack(ElemStack* elemStack) { fElemStack = elemStack; } inline void ValidationContextImpl::setScanner(XMLScanner* scanner) { fScanner = scanner; } inline void ValidationContextImpl::setNamespaceScope(NamespaceScope* nsStack) { fNamespaceScope = nsStack; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/internal/VecAttrListImpl.cpp0000644000175000017500000001143511031170654022036 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: VecAttrListImpl.cpp 672273 2008-06-27 13:57:00Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Constructors and Destructor // --------------------------------------------------------------------------- VecAttrListImpl::VecAttrListImpl() : fAdopt(false) , fCount(0) , fVector(0) { } VecAttrListImpl::~VecAttrListImpl() { // // Note that some compilers can't deal with the fact that the pointer // is to a const object, so we have to cast off the const'ness here! // if (fAdopt) delete (RefVectorOf*)fVector; } // --------------------------------------------------------------------------- // Implementation of the attribute list interface // --------------------------------------------------------------------------- XMLSize_t VecAttrListImpl::getLength() const { return fCount; } const XMLCh* VecAttrListImpl::getName(const XMLSize_t index) const { if (index >= fCount) { return 0; } return fVector->elementAt(index)->getQName(); } const XMLCh* VecAttrListImpl::getType(const XMLSize_t index) const { if (index >= fCount) { return 0; } return XMLAttDef::getAttTypeString(fVector->elementAt(index)->getType(), fVector->getMemoryManager()); } const XMLCh* VecAttrListImpl::getValue(const XMLSize_t index) const { if (index >= fCount) { return 0; } return fVector->elementAt(index)->getValue(); } const XMLCh* VecAttrListImpl::getType(const XMLCh* const name) const { // // Search the vector for the attribute with the given name and return // its type. // for (XMLSize_t index = 0; index < fCount; index++) { const XMLAttr* curElem = fVector->elementAt(index); if (XMLString::equals(curElem->getQName(), name)) return XMLAttDef::getAttTypeString(curElem->getType(), fVector->getMemoryManager()); } return 0; } const XMLCh* VecAttrListImpl::getValue(const XMLCh* const name) const { // // Search the vector for the attribute with the given name and return // its type. // for (XMLSize_t index = 0; index < fCount; index++) { const XMLAttr* curElem = fVector->elementAt(index); if (XMLString::equals(curElem->getQName(), name)) return curElem->getValue(); } return 0; } const XMLCh* VecAttrListImpl::getValue(const char* const name) const { // Temporarily transcode the name for lookup XMLCh* wideName = XMLString::transcode(name, XMLPlatformUtils::fgMemoryManager); ArrayJanitor janName(wideName, XMLPlatformUtils::fgMemoryManager); // // Search the vector for the attribute with the given name and return // its type. // for (XMLSize_t index = 0; index < fCount; index++) { const XMLAttr* curElem = fVector->elementAt(index); if (XMLString::equals(curElem->getQName(), wideName)) return curElem->getValue(); } return 0; } // --------------------------------------------------------------------------- // Setter methods // --------------------------------------------------------------------------- void VecAttrListImpl::setVector(const RefVectorOf* const srcVec , const XMLSize_t count , const bool adopt) { // // Delete the previous vector (if any) if we are adopting. Note that some // compilers can't deal with the fact that the pointer is to a const // object, so we have to cast off the const'ness here! // if (fAdopt) delete (RefVectorOf*)fVector; fAdopt = adopt; fCount = count; fVector = srcVec; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/internal/XMLScannerResolver.hpp0000644000175000017500000000520210606722647022520 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLScannerResolver.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_XMLSCANNERRESOLVER_HPP) #define XERCESC_INCLUDE_GUARD_XMLSCANNERRESOLVER_HPP #include XERCES_CPP_NAMESPACE_BEGIN class XMLValidator; class XMLDocumentHandler; class XMLErrorReporter; class DocTypeHandler; class XMLEntityHandler; class XMLPARSER_EXPORT XMLScannerResolver { public: // ----------------------------------------------------------------------- // Public class methods // ----------------------------------------------------------------------- static XMLScanner* resolveScanner ( const XMLCh* const scannerName , XMLValidator* const valToAdopt , GrammarResolver* const grammarResolver , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); static XMLScanner* resolveScanner ( const XMLCh* const scannerName , XMLDocumentHandler* const docHandler , DocTypeHandler* const docTypeHandler , XMLEntityHandler* const entityHandler , XMLErrorReporter* const errReporter , XMLValidator* const valToAdopt , GrammarResolver* const grammarResolver , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); static XMLScanner* getDefaultScanner ( XMLValidator* const valToAdopt , GrammarResolver* const grammarResolver , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); private : // ----------------------------------------------------------------------- // Unimplemented constructor and destructor // ----------------------------------------------------------------------- XMLScannerResolver(); ~XMLScannerResolver(); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/internal/BinFileOutputStream.hpp0000644000175000017500000000660510643454104022730 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: BinFileOutputStream.hpp 553915 2007-07-06 14:57:08Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_BINFILEOUTPUTSTREAM_HPP) #define XERCESC_INCLUDE_GUARD_BINFILEOUTPUTSTREAM_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN class XMLUTIL_EXPORT BinFileOutputStream : public BinOutputStream { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- ~BinFileOutputStream(); BinFileOutputStream ( const XMLCh* const fileName , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); BinFileOutputStream ( const char* const fileName , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- bool getIsOpen() const; XMLFilePos getSize() const; void reset(); // ----------------------------------------------------------------------- // Implementation of the input stream interface // ----------------------------------------------------------------------- virtual XMLFilePos curPos() const; virtual void writeBytes ( const XMLByte* const toGo , const XMLSize_t maxToWrite ); private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- BinFileOutputStream(const BinFileOutputStream&); BinFileOutputStream& operator=(const BinFileOutputStream&); // ----------------------------------------------------------------------- // Private data members // // fSource // The source file that we represent. The FileHandle type is defined // per platform. // ----------------------------------------------------------------------- FileHandle fSource; MemoryManager* const fMemoryManager; }; // --------------------------------------------------------------------------- // BinFileOutputStream: Getter methods // --------------------------------------------------------------------------- inline bool BinFileOutputStream::getIsOpen() const { return (fSource != (FileHandle) XERCES_Invalid_File_Handle); } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/internal/XTemplateSerializer.hpp0000644000175000017500000004511211041105072022742 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XTemplateSerializer.hpp 678409 2008-07-21 13:08:10Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_XTEMPLATE_SERIALIZER_HPP) #define XERCESC_INCLUDE_GUARD_XTEMPLATE_SERIALIZER_HPP #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN class XMLUTIL_EXPORT XTemplateSerializer { public: /********************************************************** * * ValueVectorOf * * SchemaElementDecl* * unsigned int * ***********************************************************/ static void storeObject(ValueVectorOf* const tempObjToWrite , XSerializeEngine& serEng); static void loadObject(ValueVectorOf** tempObjToRead , int initSize , bool toCallDestructor , XSerializeEngine& serEng); static void storeObject(ValueVectorOf* const tempObjToWrite , XSerializeEngine& serEng); static void loadObject(ValueVectorOf** tempObjToRead , int initSize , bool toCallDestructor , XSerializeEngine& serEng); /********************************************************** * * RefArrayVectorOf * * XMLCh * ***********************************************************/ static void storeObject(RefArrayVectorOf* const tempObjToWrite , XSerializeEngine& serEng); static void loadObject(RefArrayVectorOf** tempObjToRead , int initSize , bool toAdopt , XSerializeEngine& serEng); /********************************************************** * * RefVectorOf * * SchemaAttDef * SchemaElementDecl * ContentSpecNode * IC_Field * DatatypeValidator * IdentityConstraint * XMLNumber * XercesLocationPath * XercesStep * ***********************************************************/ static void storeObject(RefVectorOf* const tempObjToWrite , XSerializeEngine& serEng); static void loadObject(RefVectorOf** tempObjToRead , int initSize , bool toAdopt , XSerializeEngine& serEng); static void storeObject(RefVectorOf* const tempObjToWrite , XSerializeEngine& serEng); static void loadObject(RefVectorOf** tempObjToRead , int initSize , bool toAdopt , XSerializeEngine& serEng); static void storeObject(RefVectorOf* const tempObjToWrite , XSerializeEngine& serEng); static void loadObject(RefVectorOf** tempObjToRead , int initSize , bool toAdopt , XSerializeEngine& serEng); static void storeObject(RefVectorOf* const tempObjToWrite , XSerializeEngine& serEng); static void loadObject(RefVectorOf** tempObjToRead , int initSize , bool toAdopt , XSerializeEngine& serEng); static void storeObject(RefVectorOf* const tempObjToWrite , XSerializeEngine& serEng); static void loadObject(RefVectorOf** tempObjToRead , int initSize , bool toAdopt , XSerializeEngine& serEng); static void storeObject(RefVectorOf* const tempObjToWrite , XSerializeEngine& serEng); static void loadObject(RefVectorOf** tempObjToRead , int initSize , bool toAdopt , XSerializeEngine& serEng); static void storeObject(RefVectorOf* const tempObjToWrite , XSerializeEngine& serEng); static void loadObject(RefVectorOf** tempObjToRead , int initSize , bool toAdopt , XMLNumber::NumberType numType , XSerializeEngine& serEng); static void storeObject(RefVectorOf* const tempObjToWrite , XSerializeEngine& serEng); static void loadObject(RefVectorOf** tempObjToRead , int initSize , bool toAdopt , XSerializeEngine& serEng); static void storeObject(RefVectorOf* const tempObjToWrite , XSerializeEngine& serEng); static void loadObject(RefVectorOf** tempObjToRead , int initSize , bool toAdopt , XSerializeEngine& serEng); /********************************************************** * * RefHashTableOf * * KVStringPair * XMLAttDef * DTDAttDef * ComplexTypeInfo * XercesGroupInfo * XercesAttGroupInfo * XMLRefInfo * DatatypeValidator * Grammar * XSAnnotation * ***********************************************************/ static void storeObject(RefHashTableOf* const tempObjToWrite , XSerializeEngine& serEng); static void loadObject(RefHashTableOf** tempObjToRead , int initSize , bool toAdopt , XSerializeEngine& serEng); static void storeObject(RefHashTableOf* const tempObjToWrite , XSerializeEngine& serEng); static void loadObject(RefHashTableOf** tempObjToRead , int initSize , bool toAdopt , XSerializeEngine& serEng); static void storeObject(RefHashTableOf* const tempObjToWrite , XSerializeEngine& serEng); static void loadObject(RefHashTableOf** tempObjToRead , int initSize , bool toAdopt , XSerializeEngine& serEng); static void storeObject(RefHashTableOf* const tempObjToWrite , XSerializeEngine& serEng); static void loadObject(RefHashTableOf** tempObjToRead , int initSize , bool toAdopt , XSerializeEngine& serEng); static void storeObject(RefHashTableOf* const tempObjToWrite , XSerializeEngine& serEng); static void loadObject(RefHashTableOf** tempObjToRead , int initSize , bool toAdopt , XSerializeEngine& serEng); static void storeObject(RefHashTableOf* const tempObjToWrite , XSerializeEngine& serEng); static void loadObject(RefHashTableOf** tempObjToRead , int initSize , bool toAdopt , XSerializeEngine& serEng); static void storeObject(RefHashTableOf* const tempObjToWrite , XSerializeEngine& serEng); static void loadObject(RefHashTableOf** tempObjToRead , int initSize , bool toAdopt , XSerializeEngine& serEng); static void storeObject(RefHashTableOf* const tempObjToWrite , XSerializeEngine& serEng); static void loadObject(RefHashTableOf** tempObjToRead , int initSize , bool toAdopt , XSerializeEngine& serEng); static void storeObject(RefHashTableOf* const tempObjToWrite , XSerializeEngine& serEng); static void loadObject(RefHashTableOf** tempObjToRead , int initSize , bool toAdopt , XSerializeEngine& serEng); static void storeObject(RefHashTableOf* const tempObjToWrite , XSerializeEngine& serEng); static void loadObject(RefHashTableOf** tempObjToRead , int initSize , bool toAdopt , XSerializeEngine& serEng); /********************************************************** * * RefHash2KeysTableOf * * SchemaAttDef * ElemVector * ***********************************************************/ static void storeObject(RefHash2KeysTableOf* const tempObjToWrite , XSerializeEngine& serEng); static void loadObject(RefHash2KeysTableOf** tempObjToRead , int initSize , bool toAdopt , XSerializeEngine& serEng); static void storeObject(RefHash2KeysTableOf* const tempObjToWrite , XSerializeEngine& serEng); static void loadObject(RefHash2KeysTableOf** tempObjToRead , int initSize , bool toAdopt , XSerializeEngine& serEng); /********************************************************** * * RefHash3KeysIdPool * * SchemaElementDecl * ***********************************************************/ static void storeObject(RefHash3KeysIdPool* const tempObjToWrite , XSerializeEngine& serEng); static void loadObject(RefHash3KeysIdPool** tempObjToRead , int initSize , bool toAdopt , int initSize2 , XSerializeEngine& serEng); /********************************************************** * * NameIdPool * * DTDElementDecl * DTDEntityDecl * XMLNotationDecl * ***********************************************************/ static void storeObject(NameIdPool* const tempObjToWrite , XSerializeEngine& serEng); static void loadObject(NameIdPool** tempObjToRead , int initSize , int initSize2 , XSerializeEngine& serEng); static void storeObject(NameIdPool* const tempObjToWrite , XSerializeEngine& serEng); static void loadObject(NameIdPool** tempObjToRead , int initSize , int initSize2 , XSerializeEngine& serEng); static void storeObject(NameIdPool* const tempObjToWrite , XSerializeEngine& serEng); static void loadObject(NameIdPool** tempObjToRead , int initSize , int initSize2 , XSerializeEngine& serEng); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- ~XTemplateSerializer(); XTemplateSerializer(); XTemplateSerializer(const XTemplateSerializer&); XTemplateSerializer& operator=(const XTemplateSerializer&); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/internal/WFXMLScanner.hpp0000644000175000017500000001300111247512266021223 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: WFXMLScanner.hpp 810580 2009-09-02 15:52:22Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_WFXMLSCANNER_HPP) #define XERCESC_INCLUDE_GUARD_WFXMLSCANNER_HPP #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // This is a a non-validating scanner. No DOCTYPE or XML Schema processing // will take place. class XMLPARSER_EXPORT WFXMLScanner : public XMLScanner { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- WFXMLScanner ( XMLValidator* const valToAdopt , GrammarResolver* const grammarResolver , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); WFXMLScanner ( XMLDocumentHandler* const docHandler , DocTypeHandler* const docTypeHandler , XMLEntityHandler* const entityHandler , XMLErrorReporter* const errReporter , XMLValidator* const valToAdopt , GrammarResolver* const grammarResolver , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual ~WFXMLScanner(); // ----------------------------------------------------------------------- // XMLScanner public virtual methods // ----------------------------------------------------------------------- virtual const XMLCh* getName() const; virtual NameIdPool* getEntityDeclPool(); virtual const NameIdPool* getEntityDeclPool() const; virtual void scanDocument ( const InputSource& src ); virtual bool scanNext(XMLPScanToken& toFill); virtual Grammar* loadGrammar ( const InputSource& src , const short grammarType , const bool toCache = false ); private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- WFXMLScanner(); WFXMLScanner(const WFXMLScanner&); WFXMLScanner& operator=(const WFXMLScanner&); // ----------------------------------------------------------------------- // XMLScanner virtual methods // ----------------------------------------------------------------------- virtual void scanCDSection(); virtual void scanCharData(XMLBuffer& toToUse); virtual EntityExpRes scanEntityRef ( const bool inAttVal , XMLCh& firstCh , XMLCh& secondCh , bool& escaped ); virtual void scanDocTypeDecl(); virtual void scanReset(const InputSource& src); virtual void sendCharData(XMLBuffer& toSend); virtual InputSource* resolveSystemId(const XMLCh* const sysId ,const XMLCh* const pubId); // ----------------------------------------------------------------------- // Private helper methods // ----------------------------------------------------------------------- void commonInit(); void cleanUp(); // ----------------------------------------------------------------------- // Private scanning methods // ----------------------------------------------------------------------- bool scanAttValue ( const XMLCh* const attrName , XMLBuffer& toFill ); bool scanContent(); void scanEndTag(bool& gotData); bool scanStartTag(bool& gotData); bool scanStartTagNS(bool& gotData); // ----------------------------------------------------------------------- // Data members // // fEntityTable // This the table that contains the default entity entries. // // fAttrNameHashList // This contains the hash value for attribute names. It's used when // checking for duplicate attributes. // // fAttrNSList // This contains XMLAttr objects that we need to map their prefixes // to URIs when namespace is enabled. // // ----------------------------------------------------------------------- unsigned int fElementIndex; RefVectorOf* fElements; ValueHashTableOf* fEntityTable; ValueVectorOf* fAttrNameHashList; ValueVectorOf* fAttrNSList; RefHashTableOf* fElementLookup; }; inline const XMLCh* WFXMLScanner::getName() const { return XMLUni::fgWFXMLScanner; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/internal/XSAXMLScanner.hpp0000644000175000017500000000716211037122704021344 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XSAXMLScanner.hpp 676911 2008-07-15 13:27:32Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_XSAXMLSCANNER_HPP) #define XERCESC_INCLUDE_GUARD_XSAXMLSCANNER_HPP #include XERCES_CPP_NAMESPACE_BEGIN // // This is a scanner class, which processes/validates contents of XML Schema // Annotations. It's intended for internal use only. // class XMLPARSER_EXPORT XSAXMLScanner : public SGXMLScanner { public : // ----------------------------------------------------------------------- // Destructor // ----------------------------------------------------------------------- virtual ~XSAXMLScanner(); // ----------------------------------------------------------------------- // XMLScanner public virtual methods // ----------------------------------------------------------------------- virtual const XMLCh* getName() const; protected: // ----------------------------------------------------------------------- // Constructors // ----------------------------------------------------------------------- /** * The grammar representing the XML Schema annotation (xsaGrammar) is * passed in by the caller. The scanner will own it and is responsible * for deleting it. */ XSAXMLScanner ( GrammarResolver* const grammarResolver , XMLStringPool* const uriStringPool , SchemaGrammar* const xsaGrammar , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); friend class TraverseSchema; // ----------------------------------------------------------------------- // XMLScanner virtual methods // ----------------------------------------------------------------------- virtual void scanReset(const InputSource& src); // ----------------------------------------------------------------------- // SGXMLScanner virtual methods // ----------------------------------------------------------------------- virtual bool scanStartTag(bool& gotData); virtual void scanEndTag(bool& gotData); private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XSAXMLScanner(); XSAXMLScanner(const XSAXMLScanner&); XSAXMLScanner& operator=(const XSAXMLScanner&); // ----------------------------------------------------------------------- // Private helper methods // ----------------------------------------------------------------------- void scanRawAttrListforNameSpaces(XMLSize_t attCount); void switchGrammar(const XMLCh* const newGrammarNameSpace, bool laxValidate); }; inline const XMLCh* XSAXMLScanner::getName() const { return XMLUni::fgXSAXMLScanner; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/internal/VecAttributesImpl.cpp0000644000175000017500000001575311031207655022427 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: VecAttributesImpl.cpp 672311 2008-06-27 16:05:01Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Constructors and Destructor // --------------------------------------------------------------------------- VecAttributesImpl::VecAttributesImpl() : fAdopt(false) , fCount(0) , fVector(0) , fScanner(0) { } VecAttributesImpl::~VecAttributesImpl() { // // Note that some compilers can't deal with the fact that the pointer // is to a const object, so we have to cast off the const'ness here! // if (fAdopt) delete (RefVectorOf*)fVector; } // --------------------------------------------------------------------------- // Implementation of the attribute list interface // --------------------------------------------------------------------------- XMLSize_t VecAttributesImpl::getLength() const { return fCount; } const XMLCh* VecAttributesImpl::getURI(const XMLSize_t index) const { // since this func really needs to be const, like the rest, not sure how we // make it const and re-use the fURIBuffer member variable. we're currently // creating a buffer each time you need a URI. there has to be a better // way to do this... //XMLBuffer tempBuf; if (index >= fCount) { return 0; } //fValidator->getURIText(fVector->elementAt(index)->getURIId(), tempBuf) ; //return tempBuf.getRawBuffer() ; return fScanner->getURIText(fVector->elementAt(index)->getURIId()); } const XMLCh* VecAttributesImpl::getLocalName(const XMLSize_t index) const { if (index >= fCount) { return 0; } return fVector->elementAt(index)->getName(); } const XMLCh* VecAttributesImpl::getQName(const XMLSize_t index) const { if (index >= fCount) { return 0; } return fVector->elementAt(index)->getQName(); } const XMLCh* VecAttributesImpl::getType(const XMLSize_t index) const { if (index >= fCount) { return 0; } return XMLAttDef::getAttTypeString(fVector->elementAt(index)->getType(), fVector->getMemoryManager()); } const XMLCh* VecAttributesImpl::getValue(const XMLSize_t index) const { if (index >= fCount) { return 0; } return fVector->elementAt(index)->getValue(); } bool VecAttributesImpl::getIndex(const XMLCh* const uri, const XMLCh* const localPart, XMLSize_t& index) const { // // Search the vector for the attribute with the given name and return // its type. // XMLBuffer uriBuffer(1023, fVector->getMemoryManager()) ; for (index = 0; index < fCount; index++) { const XMLAttr* curElem = fVector->elementAt(index); fScanner->getURIText(curElem->getURIId(), uriBuffer) ; if ( (XMLString::equals(curElem->getName(), localPart)) && (XMLString::equals(uriBuffer.getRawBuffer(), uri)) ) return true; } return false; } int VecAttributesImpl::getIndex(const XMLCh* const uri, const XMLCh* const localPart ) const { // // Search the vector for the attribute with the given name and return // its type. // XMLBuffer uriBuffer(1023, fVector->getMemoryManager()) ; for (XMLSize_t index = 0; index < fCount; index++) { const XMLAttr* curElem = fVector->elementAt(index); fScanner->getURIText(curElem->getURIId(), uriBuffer) ; if ( (XMLString::equals(curElem->getName(), localPart)) && (XMLString::equals(uriBuffer.getRawBuffer(), uri)) ) return (int)index ; } return -1; } bool VecAttributesImpl::getIndex(const XMLCh* const qName, XMLSize_t& index) const { // // Search the vector for the attribute with the given name and return // its type. // for (index = 0; index < fCount; index++) { const XMLAttr* curElem = fVector->elementAt(index); if (XMLString::equals(curElem->getQName(), qName)) return true; } return false; } int VecAttributesImpl::getIndex(const XMLCh* const qName ) const { // // Search the vector for the attribute with the given name and return // its type. // for (XMLSize_t index = 0; index < fCount; index++) { const XMLAttr* curElem = fVector->elementAt(index); if (XMLString::equals(curElem->getQName(), qName)) return (int)index ; } return -1; } const XMLCh* VecAttributesImpl::getType(const XMLCh* const uri, const XMLCh* const localPart ) const { XMLSize_t i; if (getIndex(uri, localPart, i)) return getType(i); else return 0; } const XMLCh* VecAttributesImpl::getType(const XMLCh* const qName) const { XMLSize_t i; if (getIndex(qName, i)) return getType(i); else return 0; } const XMLCh* VecAttributesImpl::getValue(const XMLCh* const uri, const XMLCh* const localPart ) const { XMLSize_t i; if (getIndex(uri, localPart, i)) return getValue(i); else return 0; } const XMLCh* VecAttributesImpl::getValue(const XMLCh* const qName) const { XMLSize_t i; if (getIndex(qName, i)) return getValue(i); else return 0; } // --------------------------------------------------------------------------- // Setter methods // --------------------------------------------------------------------------- void VecAttributesImpl::setVector(const RefVectorOf* const srcVec , const XMLSize_t count , const XMLScanner * const scanner , const bool adopt) { // // Delete the previous vector (if any) if we are adopting. Note that some // compilers can't deal with the fact that the pointer is to a const // object, so we have to cast off the const'ness here! // if (fAdopt) delete (RefVectorOf*)fVector; fAdopt = adopt; fCount = count; fVector = srcVec; fScanner = scanner ; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/internal/BinMemOutputStream.hpp0000644000175000017500000000706611360344373022574 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: BinMemOutputStream.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_BINMEMOUTPUTSTREAM_HPP) #define XERCESC_INCLUDE_GUARD_BINMEMOUTPUTSTREAM_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN class XMLUTIL_EXPORT BinMemOutputStream : public BinOutputStream { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- ~BinMemOutputStream(); BinMemOutputStream ( XMLSize_t initCapacity = 1023 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); // ----------------------------------------------------------------------- // Implementation of the output stream interface // ----------------------------------------------------------------------- virtual XMLFilePos curPos() const; virtual void writeBytes ( const XMLByte* const toGo , const XMLSize_t maxToWrite ) ; // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const XMLByte* getRawBuffer() const; XMLFilePos getSize() const; void reset(); private : // ----------------------------------------------------------------------- // Unimplemented methods. // ----------------------------------------------------------------------- BinMemOutputStream(const BinMemOutputStream&); BinMemOutputStream& operator=(const BinMemOutputStream&); // ----------------------------------------------------------------------- // Private helpers // ----------------------------------------------------------------------- void ensureCapacity(const XMLSize_t extraNeeded); // ----------------------------------------------------------------------- // Private data members // // fDataBuf // The pointer to the buffer data. Its grown as needed. Its always // one larger than fCapacity, to leave room for the null terminator. // // fIndex // The current index into the buffer, as characters are appended // to it. If its zero, then the buffer is empty. // // fCapacity // The current capacity of the buffer. Its actually always one // larger, to leave room for the null terminator. // // ----------------------------------------------------------------------- MemoryManager* fMemoryManager; XMLByte* fDataBuf; XMLSize_t fIndex; XMLSize_t fCapacity; }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/internal/ElemStack.hpp0000644000175000017500000005051711272044767020705 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: ElemStack.hpp 830538 2009-10-28 13:41:11Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_ELEMSTACK_HPP) #define XERCESC_INCLUDE_GUARD_ELEMSTACK_HPP #include #include #include XERCES_CPP_NAMESPACE_BEGIN class XMLElementDecl; class Grammar; struct PrefMapElem : public XMemory { unsigned int fPrefId; unsigned int fURIId; }; // // During the scan of content, we have to keep up with the nesting of // elements (for validation and wellformedness purposes) and we have to // have places to remember namespace (prefix to URI) mappings. // // We only have to keep a stack of the current path down through the tree // that we are currently scanning, and keep track of any children of any // elements along that path. // // So, this data structure is a stack, which represents the current path // through the tree that we've worked our way down to. For each node in // the stack, there is an array of element ids that represent the ids of // the child elements scanned so far. Upon exit from that element, its // array of child elements is validated. // // Since we have the actual XMLElementDecl in the stack nodes, when its time // to validate, we just extract the content model from that element decl // and validate. All the required data falls easily to hand. Note that we // actually have some derivative of XMLElementDecl, which is specific to // the validator used, but the abstract API is sufficient for the needs of // the scanner. // // Since the namespace support also requires the storage of information on // a nested element basis, this structure also holds the namespace info. For // each level, the prefixes defined at that level (and the namespaces that // they map to) are stored. // class XMLPARSER_EXPORT ElemStack : public XMemory { public : // ----------------------------------------------------------------------- // Class specific data types // // These really should be private, but some of the compilers we have to // support are too dumb to deal with that. // // PrefMapElem // fURIId is the id of the URI from the validator's URI map. The // fPrefId is the id of the prefix from our own prefix pool. The // namespace stack consists of these elements. // // StackElem // fThisElement is the basic element decl for the current element. // The fRowCapacity is how large fChildIds has grown so far. // fChildCount is how many of them are valid right now. // // The fMapCapacity is how large fMap has grown so far. fMapCount // is how many of them are valid right now. // // Note that we store the reader number we were in when we found the // start tag. We'll use this at the end tag to test for unbalanced // markup in entities. // // MapModes // When a prefix is mapped to a namespace id, it matters whether the // QName being mapped is an attribute or name. Attributes are not // affected by an sibling xmlns attributes, whereas elements are // affected by its own xmlns attributes. // ----------------------------------------------------------------------- struct StackElem : public XMemory { XMLElementDecl* fThisElement; XMLSize_t fReaderNum; XMLSize_t fChildCapacity; XMLSize_t fChildCount; QName** fChildren; PrefMapElem* fMap; XMLSize_t fMapCapacity; XMLSize_t fMapCount; bool fValidationFlag; bool fCommentOrPISeen; bool fReferenceEscaped; unsigned int fCurrentScope; Grammar* fCurrentGrammar; unsigned int fCurrentURI; XMLCh * fSchemaElemName; XMLSize_t fSchemaElemNameMaxLen; int fPrefixColonPos; }; enum MapModes { Mode_Attribute , Mode_Element }; // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- ElemStack(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); ~ElemStack(); // ----------------------------------------------------------------------- // Stack access // ----------------------------------------------------------------------- XMLSize_t addLevel(); XMLSize_t addLevel(XMLElementDecl* const toSet, const XMLSize_t readerNum); const StackElem* popTop(); // ----------------------------------------------------------------------- // Stack top access // ----------------------------------------------------------------------- XMLSize_t addChild(QName* const child, const bool toParent); const StackElem* topElement() const; void setElement(XMLElementDecl* const toSet, const XMLSize_t readerNum); void setValidationFlag(bool validationFlag); bool getValidationFlag(); inline void setCommentOrPISeen(); inline bool getCommentOrPISeen() const; inline void setReferenceEscaped(); inline bool getReferenceEscaped() const; void setCurrentScope(int currentScope); int getCurrentScope(); void setCurrentGrammar(Grammar* currentGrammar); Grammar* getCurrentGrammar(); void setCurrentURI(unsigned int uri); unsigned int getCurrentURI(); inline void setCurrentSchemaElemName(const XMLCh * const schemaElemName); inline XMLCh *getCurrentSchemaElemName(); void setPrefixColonPos(int colonPos); int getPrefixColonPos() const; // ----------------------------------------------------------------------- // Prefix map methods // ----------------------------------------------------------------------- void addGlobalPrefix ( const XMLCh* const prefixToAdd , const unsigned int uriId ); void addPrefix ( const XMLCh* const prefixToAdd , const unsigned int uriId ); unsigned int mapPrefixToURI ( const XMLCh* const prefixToMap , bool& unknown ) const; ValueVectorOf* getNamespaceMap() const; unsigned int getPrefixId(const XMLCh* const prefix) const; const XMLCh* getPrefixForId(unsigned int prefId) const; // ----------------------------------------------------------------------- // Miscellaneous methods // ----------------------------------------------------------------------- bool isEmpty() const; void reset ( const unsigned int emptyId , const unsigned int unknownId , const unsigned int xmlId , const unsigned int xmlNSId ); unsigned int getEmptyNamespaceId(); private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- ElemStack(const ElemStack&); ElemStack& operator=(const ElemStack&); // ----------------------------------------------------------------------- // Private helper methods // ----------------------------------------------------------------------- void expandMap(StackElem* const toExpand); void expandStack(); // ----------------------------------------------------------------------- // Data members // // fEmptyNamespaceId // This is the special URI id for the "" namespace, which is magic // because of the xmlns="" operation. // // fGlobalPoolId // This is a special URI id that is returned when the namespace // prefix is "" and no one has explicitly mapped that prefix to an // explicit URI (or when they explicitly clear any such mapping, // which they can also do.) And also its prefix pool id, which is // stored here for fast access. // // fPrefixPool // This is the prefix pool where prefixes are hashed and given unique // ids. These ids are used to track prefixes in the element stack. // // fGlobalNamespaces // This object contains the namespace bindings that are globally valid // // fStack // fStackCapacity // fStackTop // This the stack array. Its an array of pointers to StackElem // structures. The capacity is the current high water mark of the // stack. The top is the current top of stack (i.e. the part of it // being used.) // // fUnknownNamespaceId // This is the URI id for the special URI that is assigned to any // prefix which has not been mapped. This lets us keep going after // issuing the error. // // fXMLNamespaceId // fXMLPoolId // fXMLNSNamespaceId // fXMLNSPoolId // These are the URI ids for the special URIs that are assigned to // the 'xml' and 'xmlns' namespaces. And also its prefix pool id, // which is stored here for fast access. // ----------------------------------------------------------------------- unsigned int fEmptyNamespaceId; unsigned int fGlobalPoolId; XMLStringPool fPrefixPool; StackElem* fGlobalNamespaces; StackElem** fStack; XMLSize_t fStackCapacity; XMLSize_t fStackTop; unsigned int fUnknownNamespaceId; unsigned int fXMLNamespaceId; unsigned int fXMLPoolId; unsigned int fXMLNSNamespaceId; unsigned int fXMLNSPoolId; ValueVectorOf* fNamespaceMap; MemoryManager* fMemoryManager; }; class XMLPARSER_EXPORT WFElemStack : public XMemory { public : // ----------------------------------------------------------------------- // Class specific data types // // These really should be private, but some of the compilers we have to // support are too dumb to deal with that. // // PrefMapElem // fURIId is the id of the URI from the validator's URI map. The // fPrefId is the id of the prefix from our own prefix pool. The // namespace stack consists of these elements. // // StackElem // fThisElement is the basic element decl for the current element. // The fRowCapacity is how large fChildIds has grown so far. // fChildCount is how many of them are valid right now. // // The fMapCapacity is how large fMap has grown so far. fMapCount // is how many of them are valid right now. // // Note that we store the reader number we were in when we found the // start tag. We'll use this at the end tag to test for unbalanced // markup in entities. // // MapModes // When a prefix is mapped to a namespace id, it matters whether the // QName being mapped is an attribute or name. Attributes are not // affected by an sibling xmlns attributes, whereas elements are // affected by its own xmlns attributes. // ----------------------------------------------------------------------- struct StackElem : public XMemory { int fTopPrefix; unsigned int fCurrentURI; unsigned int fReaderNum; unsigned int fElemMaxLength; XMLCh* fThisElement; }; enum MapModes { Mode_Attribute , Mode_Element }; // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- WFElemStack(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); ~WFElemStack(); // ----------------------------------------------------------------------- // Stack access // ----------------------------------------------------------------------- XMLSize_t addLevel(); XMLSize_t addLevel(const XMLCh* const toSet, const unsigned int toSetLen, const unsigned int readerNum); const StackElem* popTop(); // ----------------------------------------------------------------------- // Stack top access // ----------------------------------------------------------------------- const StackElem* topElement() const; void setElement(const XMLCh* const toSet, const unsigned int toSetLen, const unsigned int readerNum); void setCurrentURI(unsigned int uri); unsigned int getCurrentURI(); // ----------------------------------------------------------------------- // Prefix map methods // ----------------------------------------------------------------------- void addPrefix ( const XMLCh* const prefixToAdd , const unsigned int uriId ); unsigned int mapPrefixToURI ( const XMLCh* const prefixToMap , bool& unknown ) const; // ----------------------------------------------------------------------- // Miscellaneous methods // ----------------------------------------------------------------------- bool isEmpty() const; void reset ( const unsigned int emptyId , const unsigned int unknownId , const unsigned int xmlId , const unsigned int xmlNSId ); private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- WFElemStack(const WFElemStack&); WFElemStack& operator=(const WFElemStack&); // ----------------------------------------------------------------------- // Private helper methods // ----------------------------------------------------------------------- void expandMap(); void expandStack(); // ----------------------------------------------------------------------- // Data members // // fEmptyNamespaceId // This is the special URI id for the "" namespace, which is magic // because of the xmlns="" operation. // // fGlobalPoolId // This is a special URI id that is returned when the namespace // prefix is "" and no one has explicitly mapped that prefix to an // explicit URI (or when they explicitly clear any such mapping, // which they can also do.) And also its prefix pool id, which is // stored here for fast access. // // fPrefixPool // This is the prefix pool where prefixes are hashed and given unique // ids. These ids are used to track prefixes in the element stack. // // fStack // fStackCapacity // fStackTop // This the stack array. Its an array of pointers to StackElem // structures. The capacity is the current high water mark of the // stack. The top is the current top of stack (i.e. the part of it // being used.) // // fUnknownNamespaceId // This is the URI id for the special URI that is assigned to any // prefix which has not been mapped. This lets us keep going after // issuing the error. // // fXMLNamespaceId // fXMLPoolId // fXMLNSNamespaceId // fXMLNSPoolId // These are the URI ids for the special URIs that are assigned to // the 'xml' and 'xmlns' namespaces. And also its prefix pool id, // which is stored here for fast access. // ----------------------------------------------------------------------- unsigned int fEmptyNamespaceId; unsigned int fGlobalPoolId; XMLSize_t fStackCapacity; XMLSize_t fStackTop; unsigned int fUnknownNamespaceId; unsigned int fXMLNamespaceId; unsigned int fXMLPoolId; unsigned int fXMLNSNamespaceId; unsigned int fXMLNSPoolId; XMLSize_t fMapCapacity; PrefMapElem* fMap; StackElem** fStack; XMLStringPool fPrefixPool; MemoryManager* fMemoryManager; }; // --------------------------------------------------------------------------- // ElemStack: Miscellaneous methods // --------------------------------------------------------------------------- inline bool ElemStack::isEmpty() const { return (fStackTop == 0); } inline bool ElemStack::getValidationFlag() { return fStack[fStackTop-1]->fValidationFlag; } inline void ElemStack::setValidationFlag(bool validationFlag) { fStack[fStackTop-1]->fValidationFlag = validationFlag; } inline bool ElemStack::getCommentOrPISeen() const { return fStack[fStackTop-1]->fCommentOrPISeen; } inline void ElemStack::setCommentOrPISeen() { fStack[fStackTop-1]->fCommentOrPISeen = true; } inline bool ElemStack::getReferenceEscaped() const { return fStack[fStackTop-1]->fReferenceEscaped; } inline void ElemStack::setReferenceEscaped() { fStack[fStackTop-1]->fReferenceEscaped = true; } inline void ElemStack::setCurrentSchemaElemName(const XMLCh * const schemaElemName) { XMLSize_t schemaElemNameLen = XMLString::stringLen(schemaElemName); XMLSize_t stackPos = fStackTop-1; if(fStack[stackPos]->fSchemaElemNameMaxLen <= schemaElemNameLen) { XMLCh *tempStr = fStack[stackPos]->fSchemaElemName; fStack[stackPos]->fSchemaElemNameMaxLen = schemaElemNameLen << 1; fStack[stackPos]->fSchemaElemName = (XMLCh *)fMemoryManager->allocate((fStack[stackPos]->fSchemaElemNameMaxLen)*sizeof(XMLCh)); fMemoryManager->deallocate(tempStr); } XMLString::copyString(fStack[stackPos]->fSchemaElemName, schemaElemName); } inline XMLCh *ElemStack::getCurrentSchemaElemName() { return fStack[fStackTop-1]->fSchemaElemName; } inline int ElemStack::getCurrentScope() { return fStack[fStackTop-1]->fCurrentScope; } inline void ElemStack::setCurrentScope(int currentScope) { fStack[fStackTop-1]->fCurrentScope = currentScope; } inline Grammar* ElemStack::getCurrentGrammar() { return fStack[fStackTop-1]->fCurrentGrammar; } inline void ElemStack::setCurrentGrammar(Grammar* currentGrammar) { fStack[fStackTop-1]->fCurrentGrammar = currentGrammar; } inline unsigned int ElemStack::getCurrentURI() { return fStack[fStackTop-1]->fCurrentURI; } inline void ElemStack::setCurrentURI(unsigned int uri) { fStack[fStackTop-1]->fCurrentURI = uri; } inline unsigned int ElemStack::getPrefixId(const XMLCh* const prefix) const { return fPrefixPool.getId(prefix); } inline const XMLCh* ElemStack::getPrefixForId(unsigned int prefId) const { return fPrefixPool.getValueForId(prefId); } inline void ElemStack::setPrefixColonPos(int colonPos) { fStack[fStackTop-1]->fPrefixColonPos = colonPos; } inline int ElemStack::getPrefixColonPos() const { return fStack[fStackTop-1]->fPrefixColonPos; } inline unsigned int ElemStack::getEmptyNamespaceId() { return fEmptyNamespaceId; } // --------------------------------------------------------------------------- // WFElemStack: Miscellaneous methods // --------------------------------------------------------------------------- inline bool WFElemStack::isEmpty() const { return (fStackTop == 0); } inline unsigned int WFElemStack::getCurrentURI() { return fStack[fStackTop-1]->fCurrentURI; } inline void WFElemStack::setCurrentURI(unsigned int uri) { fStack[fStackTop-1]->fCurrentURI = uri; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/internal/BinMemOutputStream.cpp0000644000175000017500000000635211360344373022564 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: BinMemOutputStream.cpp 932887 2010-04-11 13:04:59Z borisk $ */ #include #include #include XERCES_CPP_NAMESPACE_BEGIN BinMemOutputStream::BinMemOutputStream( XMLSize_t initCapacity , MemoryManager* const manager) : fMemoryManager(manager) , fDataBuf(0) , fIndex(0) , fCapacity(initCapacity) { // Buffer is one larger than capacity, to allow for zero term fDataBuf = (XMLByte*) fMemoryManager->allocate ( (fCapacity + 4) * sizeof(XMLByte) ); // Keep it null terminated fDataBuf[0] = XMLByte(0); } BinMemOutputStream::~BinMemOutputStream() { fMemoryManager->deallocate(fDataBuf); } void BinMemOutputStream::writeBytes( const XMLByte* const toGo , const XMLSize_t maxToWrite) { if (maxToWrite) { ensureCapacity(maxToWrite); memcpy(&fDataBuf[fIndex], toGo, maxToWrite * sizeof(XMLByte)); fIndex += maxToWrite; } } const XMLByte* BinMemOutputStream::getRawBuffer() const { fDataBuf[fIndex] = 0; fDataBuf[fIndex + 1] = 0; fDataBuf[fIndex + 2] = 0; fDataBuf[fIndex + 3] = 0; return fDataBuf; } void BinMemOutputStream::reset() { fIndex = 0; for (int i = 0; i < 4; i++) { fDataBuf[fIndex + i] = 0; } } XMLFilePos BinMemOutputStream::curPos() const { return fIndex; } XMLFilePos BinMemOutputStream::getSize() const { return fCapacity; } // --------------------------------------------------------------------------- // BinMemOutputStream: Private helper methods // --------------------------------------------------------------------------- void BinMemOutputStream::ensureCapacity(const XMLSize_t extraNeeded) { // If we can handle it, do nothing yet if (fIndex + extraNeeded < fCapacity) return; // Oops, not enough room. Calc new capacity and allocate new buffer const XMLSize_t newCap = ((fIndex + extraNeeded) * 2); XMLByte* newBuf = (XMLByte*) fMemoryManager->allocate ( (newCap+4) * sizeof(XMLByte) ); memset(newBuf, 0, (newCap+4) * sizeof(XMLByte)); // Copy over the old stuff memcpy(newBuf, fDataBuf, fCapacity * sizeof(XMLByte) + 4); // Clean up old buffer and store new stuff fMemoryManager->deallocate(fDataBuf); fDataBuf = newBuf; fCapacity = newCap; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/internal/XProtoType.cpp0000644000175000017500000000645711276506011021116 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XProtoType.cpp 834826 2009-11-11 10:03:53Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include XERCES_CPP_NAMESPACE_BEGIN /*** * * write the length of the class name * write the class name * ***/ void XProtoType::store(XSerializeEngine& serEng) const { XMLSize_t strLen = XMLString::stringLen((char*)fClassName); serEng << (unsigned long)strLen; serEng.write(fClassName, strLen * sizeof(XMLByte)); } /*** * * To verify that the content in the binary stream * is the same as this class * ***/ void XProtoType::load(XSerializeEngine& serEng , XMLByte* const inName , MemoryManager* const manager) { if (!inName) { ThrowXMLwithMemMgr(XSerializationException , XMLExcepts::XSer_ProtoType_Null_ClassName, manager); } // read and check class name length XMLSize_t inNameLen = XMLString::stringLen((char*)inName); XMLSize_t classNameLen = 0; serEng >> (unsigned long&)classNameLen; if (classNameLen != inNameLen) { XMLCh value1[17]; XMLCh value2[17]; XMLString::sizeToText(inNameLen, value1, 16, 10, manager); XMLString::sizeToText(classNameLen, value2, 16, 10, manager); ThrowXMLwithMemMgr2(XSerializationException , XMLExcepts::XSer_ProtoType_NameLen_Dif , value1 , value2 , manager); } // read and check class name XMLByte className[256]; serEng.read(className, classNameLen*sizeof(XMLByte)); className[classNameLen] = '\0'; if ( !XMLString::equals((char*)className, (char*)inName)) { //we don't have class name exceed this length in xerces XMLCh name1[256]; XMLCh name2[256]; XMLCh *tmp = XMLString::transcode((char*)inName, manager); XMLString::copyNString(name1, tmp, 255); manager->deallocate(tmp); tmp = XMLString::transcode((char*)className, manager); XMLString::copyNString(name2, tmp, 255); manager->deallocate(tmp); ThrowXMLwithMemMgr2(XSerializationException , XMLExcepts::XSer_ProtoType_Name_Dif , name1 , name2 , manager); } return; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/internal/VecAttrListImpl.hpp0000644000175000017500000000716011031170654022043 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: VecAttrListImpl.hpp 672273 2008-06-27 13:57:00Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_VECATTRLISTIMPL_HPP) #define XERCESC_INCLUDE_GUARD_VECATTRLISTIMPL_HPP #include #include #include XERCES_CPP_NAMESPACE_BEGIN class XMLPARSER_EXPORT VecAttrListImpl : public XMemory, public AttributeList { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- VecAttrListImpl(); ~VecAttrListImpl(); // ----------------------------------------------------------------------- // Implementation of the attribute list interface // ----------------------------------------------------------------------- virtual XMLSize_t getLength() const; virtual const XMLCh* getName(const XMLSize_t index) const; virtual const XMLCh* getType(const XMLSize_t index) const; virtual const XMLCh* getValue(const XMLSize_t index) const; virtual const XMLCh* getType(const XMLCh* const name) const; virtual const XMLCh* getValue(const XMLCh* const name) const; virtual const XMLCh* getValue(const char* const name) const; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- void setVector ( const RefVectorOf* const srcVec , const XMLSize_t count , const bool adopt = false ); private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- VecAttrListImpl(const VecAttrListImpl&); VecAttrListImpl& operator=(const VecAttrListImpl&); // ----------------------------------------------------------------------- // Private data members // // fAdopt // Indicates whether the passed vector is to be adopted or not. If // so, we destroy it when we are destroyed (and when a new vector is // set!) // // fCount // The count of elements in the vector that should be considered // valid. This is an optimization to allow vector elements to be // reused over and over but a different count of them be valid for // each use. // // fVector // The vector that provides the backing for the list. // ----------------------------------------------------------------------- bool fAdopt; XMLSize_t fCount; const RefVectorOf* fVector; }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/internal/XSerializable.hpp0000644000175000017500000000722210606722647021566 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XSerializable.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_XSERIALIZABLE_HPP) #define XERCESC_INCLUDE_GUARD_XSERIALIZABLE_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN class XMLUTIL_EXPORT XSerializable { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- virtual ~XSerializable() {} ; // ----------------------------------------------------------------------- // Serialization Interface // ----------------------------------------------------------------------- virtual bool isSerializable() const = 0; virtual void serialize(XSerializeEngine& ) = 0; virtual XProtoType* getProtoType() const = 0; protected: XSerializable() {} XSerializable(const XSerializable& ) {} private: // ----------------------------------------------------------------------- // Unimplemented assignment operator // ----------------------------------------------------------------------- XSerializable& operator=(const XSerializable&); }; inline void XSerializable::serialize(XSerializeEngine& ) { } /*** * Macro to be included in XSerializable derivatives' * declaration's public section ***/ #define DECL_XSERIALIZABLE(class_name) \ public: \ \ DECL_XPROTOTYPE(class_name) \ \ virtual bool isSerializable() const ; \ virtual XProtoType* getProtoType() const; \ virtual void serialize(XSerializeEngine&); \ \ inline friend XSerializeEngine& operator>>(XSerializeEngine& serEng \ , class_name*& objPtr) \ {objPtr = (class_name*) serEng.read(XPROTOTYPE_CLASS(class_name)); \ return serEng; \ }; /*** * Macro to be included in the implementation file * of XSerializable derivatives' which is instantiable ***/ #define IMPL_XSERIALIZABLE_TOCREATE(class_name) \ IMPL_XPROTOTYPE_TOCREATE(class_name) \ IMPL_XSERIAL(class_name) /*** * Macro to be included in the implementation file * of XSerializable derivatives' which is UN-instantiable ***/ #define IMPL_XSERIALIZABLE_NOCREATE(class_name) \ IMPL_XPROTOTYPE_NOCREATE(class_name) \ IMPL_XSERIAL(class_name) /*** * Helper Macro ***/ #define IMPL_XSERIAL(class_name) \ bool class_name::isSerializable() const \ {return true; } \ XProtoType* class_name::getProtoType() const \ {return XPROTOTYPE_CLASS(class_name); } #define IS_EQUIVALENT(lptr, rptr) \ if (lptr == rptr) \ return true; \ if (( lptr && !rptr) || (!lptr && rptr)) \ return false; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/internal/DGXMLScanner.hpp0000644000175000017500000001575711247512266021225 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DGXMLScanner.hpp 810580 2009-09-02 15:52:22Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DGXMLSCANNER_HPP) #define XERCESC_INCLUDE_GUARD_DGXMLSCANNER_HPP #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN class DTDElementDecl; class DTDGrammar; class DTDValidator; // This is an integrated scanner class, which does DTD/XML Schema grammar // processing. class XMLPARSER_EXPORT DGXMLScanner : public XMLScanner { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- DGXMLScanner ( XMLValidator* const valToAdopt , GrammarResolver* const grammarResolver , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); DGXMLScanner ( XMLDocumentHandler* const docHandler , DocTypeHandler* const docTypeHandler , XMLEntityHandler* const entityHandler , XMLErrorReporter* const errReporter , XMLValidator* const valToAdopt , GrammarResolver* const grammarResolver , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual ~DGXMLScanner(); // ----------------------------------------------------------------------- // XMLScanner public virtual methods // ----------------------------------------------------------------------- virtual const XMLCh* getName() const; virtual NameIdPool* getEntityDeclPool(); virtual const NameIdPool* getEntityDeclPool() const; virtual void scanDocument ( const InputSource& src ); virtual bool scanNext(XMLPScanToken& toFill); virtual Grammar* loadGrammar ( const InputSource& src , const short grammarType , const bool toCache = false ); virtual Grammar::GrammarType getCurrentGrammarType() const; private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DGXMLScanner(); DGXMLScanner(const DGXMLScanner&); DGXMLScanner& operator=(const DGXMLScanner&); // ----------------------------------------------------------------------- // XMLScanner virtual methods // ----------------------------------------------------------------------- virtual void scanCDSection(); virtual void scanCharData(XMLBuffer& toToUse); virtual EntityExpRes scanEntityRef ( const bool inAttVal , XMLCh& firstCh , XMLCh& secondCh , bool& escaped ); virtual void scanDocTypeDecl(); virtual void scanReset(const InputSource& src); virtual void sendCharData(XMLBuffer& toSend); virtual InputSource* resolveSystemId(const XMLCh* const sysId ,const XMLCh* const pubId); // ----------------------------------------------------------------------- // Private helper methods // ----------------------------------------------------------------------- void commonInit(); void cleanUp(); XMLSize_t buildAttList ( const XMLSize_t attCount , XMLElementDecl* elemDecl , RefVectorOf& toFill ); void updateNSMap ( const XMLCh* const attrPrefix , const XMLCh* const attrLocalName , const XMLCh* const attrValue ); void scanAttrListforNameSpaces(RefVectorOf* theAttrList, XMLSize_t attCount, XMLElementDecl* elemDecl); // ----------------------------------------------------------------------- // Private scanning methods // ----------------------------------------------------------------------- bool scanAttValue ( const XMLAttDef* const attDef , const XMLCh *const attrName , XMLBuffer& toFill ); bool scanContent(); void scanEndTag(bool& gotData); bool scanStartTag(bool& gotData); bool scanStartTagNS(bool& gotData); // ----------------------------------------------------------------------- // Grammar preparsing methods // ----------------------------------------------------------------------- Grammar* loadDTDGrammar(const InputSource& src, const bool toCache = false); // ----------------------------------------------------------------------- // Data members // // fRawAttrList // During the initial scan of the attributes we can only do a raw // scan for key/value pairs. So this vector is used to store them // until they can be processed (and put into fAttrList.) // // fDTDValidator // The DTD validator instance. // // fDTDElemNonDeclPool // registry of "faulted-in" DTD element decls // fElemCount // count of the number of start tags seen so far (starts at 1). // Used for duplicate attribute detection/processing of required/defaulted attributes // fAttDefRegistry // mapping from XMLAttDef instances to the count of the last // start tag where they were utilized. // fUndeclaredAttrRegistry // mapping of attr QNames to detect duplicates // // ----------------------------------------------------------------------- ValueVectorOf* fAttrNSList; DTDValidator* fDTDValidator; DTDGrammar* fDTDGrammar; NameIdPool* fDTDElemNonDeclPool; unsigned int fElemCount; RefHashTableOf* fAttDefRegistry; Hash2KeysSetOf* fUndeclaredAttrRegistry; }; inline const XMLCh* DGXMLScanner::getName() const { return XMLUni::fgDGXMLScanner; } inline Grammar::GrammarType DGXMLScanner::getCurrentGrammarType() const { return Grammar::DTDGrammarType; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/internal/XSObjectFactory.cpp0000644000175000017500000011204211042054515022014 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN static XMLCh regexSeparator[] = {chPipe, chNull}; // --------------------------------------------------------------------------- // XSObjectFactory: Constructors and Destructor // --------------------------------------------------------------------------- XSObjectFactory::XSObjectFactory(MemoryManager* const manager) : fMemoryManager(manager) , fXercesToXSMap(0) , fDeleteVector(0) { fDeleteVector = new (manager) RefVectorOf(20, true, manager); fXercesToXSMap = new (manager) RefHashTableOf ( 109, false, manager); } XSObjectFactory::~XSObjectFactory() { delete fXercesToXSMap; delete fDeleteVector; } // --------------------------------------------------------------------------- // XSObjectFactory: factory methods // --------------------------------------------------------------------------- XSParticle* XSObjectFactory::createModelGroupParticle(const ContentSpecNode* const rootNode, XSModel* const xsModel) { if (rootNode == 0) return 0; ContentSpecNode::NodeTypes nodeType = rootNode->getType(); if (nodeType == ContentSpecNode::All || nodeType == ContentSpecNode::ModelGroupChoice || nodeType == ContentSpecNode::ModelGroupSequence) { XSParticleList* particleList = new (fMemoryManager) RefVectorOf (4, true, fMemoryManager); XSAnnotation* annot = getAnnotationFromModel(xsModel, rootNode); XSModelGroup* modelGroup = 0; if (nodeType == ContentSpecNode::All) { modelGroup = new (fMemoryManager) XSModelGroup(XSModelGroup::COMPOSITOR_ALL, particleList, annot, xsModel, fMemoryManager); buildAllParticles(rootNode, particleList, xsModel); } else { if (nodeType == ContentSpecNode::ModelGroupChoice) modelGroup = new (fMemoryManager) XSModelGroup(XSModelGroup::COMPOSITOR_CHOICE, particleList, annot, xsModel, fMemoryManager); else modelGroup = new (fMemoryManager) XSModelGroup(XSModelGroup::COMPOSITOR_SEQUENCE, particleList, annot, xsModel, fMemoryManager); buildChoiceSequenceParticles(rootNode->getFirst(), particleList, xsModel); buildChoiceSequenceParticles(rootNode->getSecond(), particleList, xsModel); } int m = rootNode->getMaxOccurs(); XSParticle* groupParticle = new (fMemoryManager) XSParticle ( XSParticle::TERM_MODELGROUP , xsModel , modelGroup , (XMLSize_t)rootNode->getMinOccurs() , (XMLSize_t)m , m == -1 , fMemoryManager ); return groupParticle; } else return 0; } void XSObjectFactory::buildAllParticles(const ContentSpecNode* const rootNode, XSParticleList* const particleList, XSModel* const xsModel) { // Get the type of spec node our current node is const ContentSpecNode::NodeTypes nodeType = rootNode->getType(); if (nodeType == ContentSpecNode::All) { const ContentSpecNode* rightNode = rootNode->getSecond(); buildAllParticles(rootNode->getFirst(), particleList, xsModel); if (rightNode) buildAllParticles(rightNode, particleList, xsModel); } else if (nodeType == ContentSpecNode::Leaf) { XSParticle* elemParticle = createElementParticle(rootNode, xsModel); if (elemParticle) particleList->addElement(elemParticle); } } void XSObjectFactory::buildChoiceSequenceParticles(const ContentSpecNode* const rootNode, XSParticleList* const particleList, XSModel* const xsModel) { if (rootNode) { const ContentSpecNode::NodeTypes nodeType = rootNode->getType(); if (nodeType == ContentSpecNode::Sequence) { buildChoiceSequenceParticles(rootNode->getFirst(), particleList, xsModel); buildChoiceSequenceParticles(rootNode->getSecond(), particleList, xsModel); } else if (nodeType == ContentSpecNode::Choice) { buildChoiceSequenceParticles(rootNode->getFirst(), particleList, xsModel); buildChoiceSequenceParticles(rootNode->getSecond(), particleList, xsModel); } else if ((nodeType & 0x0f) == ContentSpecNode::Any || (nodeType & 0x0f) == ContentSpecNode::Any_Other || (nodeType & 0x0f) == ContentSpecNode::Any_NS || nodeType == ContentSpecNode::Any_NS_Choice) { XSParticle* wildcardParticle = createWildcardParticle(rootNode, xsModel); if (wildcardParticle) particleList->addElement(wildcardParticle); } else if (nodeType == ContentSpecNode::Leaf) { XSParticle* elemParticle = createElementParticle(rootNode, xsModel); if (elemParticle) particleList->addElement(elemParticle); } // must be a model group else { XSParticle* xsParticle = createModelGroupParticle(rootNode, xsModel); if (xsParticle) particleList->addElement(xsParticle); } } } XSParticle* XSObjectFactory::createElementParticle(const ContentSpecNode* const rootNode, XSModel* const xsModel) { if (rootNode->getElementDecl()) { XSElementDeclaration* xsElemDecl = addOrFind( (SchemaElementDecl*) rootNode->getElementDecl(), xsModel); if (xsElemDecl) { int m = rootNode->getMaxOccurs(); XSParticle* particle = new (fMemoryManager) XSParticle ( XSParticle::TERM_ELEMENT , xsModel , xsElemDecl , (XMLSize_t)rootNode->getMinOccurs() , (XMLSize_t)m , m == -1 , fMemoryManager ); return particle; } } return 0; } XSParticle* XSObjectFactory::createWildcardParticle(const ContentSpecNode* const rootNode, XSModel* const xsModel) { XSWildcard* xsWildcard = createXSWildcard(rootNode, xsModel); if (xsWildcard) { int m = rootNode->getMaxOccurs(); XSParticle* particle = new (fMemoryManager) XSParticle ( XSParticle::TERM_WILDCARD , xsModel , xsWildcard , (XMLSize_t)rootNode->getMinOccurs() , (XMLSize_t)m , m == -1 , fMemoryManager ); return particle; } return 0; } XSAttributeDeclaration* XSObjectFactory::addOrFind(SchemaAttDef* const attDef, XSModel* const xsModel, XSComplexTypeDefinition* const enclosingTypeDef) { XSAttributeDeclaration* xsObj = (XSAttributeDeclaration*) xsModel->getXSObject(attDef); if (xsObj) { if (xsObj->getScope() == XSConstants::SCOPE_LOCAL && xsObj->getEnclosingCTDefinition() == 0 && enclosingTypeDef) xsObj->setEnclosingCTDefinition(enclosingTypeDef); } else { XSSimpleTypeDefinition* xsType = 0; if (attDef->getDatatypeValidator()) xsType = addOrFind(attDef->getDatatypeValidator(), xsModel); XSConstants::SCOPE scope = XSConstants::SCOPE_ABSENT; XSComplexTypeDefinition* enclosingCTDefinition = 0; if (attDef->getPSVIScope() == PSVIDefs::SCP_GLOBAL) scope = XSConstants::SCOPE_GLOBAL; else if (attDef->getPSVIScope() == PSVIDefs::SCP_LOCAL) { scope = XSConstants::SCOPE_LOCAL; enclosingCTDefinition = enclosingTypeDef; } xsObj = new (fMemoryManager) XSAttributeDeclaration ( attDef , xsType , getAnnotationFromModel(xsModel, attDef) , xsModel , scope , enclosingCTDefinition , fMemoryManager ); putObjectInMap(attDef, xsObj); } return xsObj; } XSSimpleTypeDefinition* XSObjectFactory::addOrFind(DatatypeValidator* const validator, XSModel* const xsModel, bool isAnySimpleType) { XSSimpleTypeDefinition* xsObj = (XSSimpleTypeDefinition*) xsModel->getXSObject(validator); if (!xsObj) { XSTypeDefinition* baseType = 0; XSSimpleTypeDefinitionList* memberTypes = 0; XSSimpleTypeDefinition* primitiveOrItemType = 0; XSSimpleTypeDefinition::VARIETY typeVariety = XSSimpleTypeDefinition::VARIETY_ATOMIC; bool primitiveTypeSelf = false; //REVISIT: the getFixed method is protected so added friend XSObjectFactory // to DatatypeValidator class... DatatypeValidator::ValidatorType dvType = validator->getType(); DatatypeValidator* baseDV = validator->getBaseValidator(); if (dvType == DatatypeValidator::Union) { typeVariety = XSSimpleTypeDefinition::VARIETY_UNION; RefVectorOf* membersDV = ((UnionDatatypeValidator*)validator)->getMemberTypeValidators(); XMLSize_t size = membersDV->size(); if (size) { memberTypes = new (fMemoryManager) RefVectorOf(size, false, fMemoryManager); for (XMLSize_t i=0; iaddElement(addOrFind(membersDV->elementAt(i), xsModel)); } if (baseDV) { baseType = addOrFind(baseDV, xsModel); } else { baseType = (XSSimpleTypeDefinition*) xsModel->getTypeDefinition ( SchemaSymbols::fgDT_ANYSIMPLETYPE , SchemaSymbols::fgURI_SCHEMAFORSCHEMA ); } } else if (dvType == DatatypeValidator::List) { typeVariety = XSSimpleTypeDefinition::VARIETY_LIST; if (baseDV->getType() == DatatypeValidator::List) { baseType = addOrFind(baseDV, xsModel); primitiveOrItemType = ((XSSimpleTypeDefinition*) baseType)->getItemType(); } else { baseType = (XSSimpleTypeDefinition*) xsModel->getTypeDefinition ( SchemaSymbols::fgDT_ANYSIMPLETYPE , SchemaSymbols::fgURI_SCHEMAFORSCHEMA ); primitiveOrItemType = addOrFind(baseDV, xsModel); } } else if (!isAnySimpleType) { if (baseDV) { baseType = addOrFind(baseDV, xsModel); primitiveOrItemType = ((XSSimpleTypeDefinition*) baseType)->getPrimitiveType(); } else // built-in { baseType = (XSSimpleTypeDefinition*) xsModel->getTypeDefinition ( SchemaSymbols::fgDT_ANYSIMPLETYPE , SchemaSymbols::fgURI_SCHEMAFORSCHEMA ); primitiveTypeSelf = true; } } else { baseType = xsModel->getTypeDefinition(SchemaSymbols::fgATTVAL_ANYTYPE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA); } xsObj = new (fMemoryManager) XSSimpleTypeDefinition ( validator , typeVariety , baseType , primitiveOrItemType , memberTypes , getAnnotationFromModel(xsModel, validator) , xsModel , fMemoryManager ); putObjectInMap(validator, xsObj); if (primitiveTypeSelf) xsObj->setPrimitiveType(xsObj); // process facets processFacets(validator, xsModel, xsObj); } return xsObj; } XSElementDeclaration* XSObjectFactory::addOrFind(SchemaElementDecl* const elemDecl, XSModel* const xsModel, XSComplexTypeDefinition* const enclosingTypeDef) { XSElementDeclaration* xsObj = (XSElementDeclaration*) xsModel->getXSObject(elemDecl); if (xsObj) { if (!xsObj->getEnclosingCTDefinition() && enclosingTypeDef) xsObj->setEnclosingCTDefinition(enclosingTypeDef); } else { XSElementDeclaration* xsSubElem = 0; XSTypeDefinition* xsType = 0; XSNamedMap* icMap = 0; if (elemDecl->getSubstitutionGroupElem()) xsSubElem = addOrFind(elemDecl->getSubstitutionGroupElem(), xsModel); // defer checking for complexTypeInfo until later as it could // eventually need this elemement // but don't check simple type unless no complexTypeInfo present if (!elemDecl->getComplexTypeInfo() && elemDecl->getDatatypeValidator()) xsType = addOrFind(elemDecl->getDatatypeValidator(), xsModel); XMLSize_t count = elemDecl->getIdentityConstraintCount(); if (count) { //REVISIT: size of hash table.... icMap = new (fMemoryManager) XSNamedMap ( count , 29 , xsModel->getURIStringPool() , false , fMemoryManager ); for (XMLSize_t i = 0; i < count; i++) { XSIDCDefinition* icDef = addOrFind ( elemDecl->getIdentityConstraintAt(i) , xsModel ); if (icDef) { icMap->addElement ( icDef , icDef->getName() , icDef->getNamespace() ); } } } XSConstants::SCOPE elemScope = XSConstants::SCOPE_ABSENT; if (elemDecl->getPSVIScope() == PSVIDefs::SCP_LOCAL) elemScope = XSConstants::SCOPE_LOCAL; else if (elemDecl->getPSVIScope() == PSVIDefs::SCP_GLOBAL) elemScope = XSConstants::SCOPE_GLOBAL; xsObj = new (fMemoryManager) XSElementDeclaration ( elemDecl , xsType , xsSubElem , getAnnotationFromModel(xsModel, elemDecl) , icMap , xsModel , elemScope , enclosingTypeDef , fMemoryManager ); putObjectInMap(elemDecl, xsObj); if (elemDecl->getComplexTypeInfo()) { xsType = addOrFind(elemDecl->getComplexTypeInfo(), xsModel); xsObj->setTypeDefinition(xsType); } else if (!xsType) { xsType = xsModel->getTypeDefinition ( SchemaSymbols::fgATTVAL_ANYTYPE , SchemaSymbols::fgURI_SCHEMAFORSCHEMA ); xsObj->setTypeDefinition(xsType); } } return xsObj; } XSComplexTypeDefinition* XSObjectFactory::addOrFind(ComplexTypeInfo* const typeInfo, XSModel* const xsModel) { XSComplexTypeDefinition* xsObj = (XSComplexTypeDefinition*) xsModel->getXSObject(typeInfo); if (!xsObj) { XSWildcard* xsWildcard = 0; XSSimpleTypeDefinition* xsSimpleType = 0; XSAttributeUseList* xsAttList = 0; XSTypeDefinition* xsBaseType = 0; XSParticle* xsParticle = 0; if (typeInfo->getAttWildCard()) xsWildcard = createXSWildcard(typeInfo->getAttWildCard(), xsModel); if ((typeInfo->getContentType() == SchemaElementDecl::Simple) && (typeInfo->getDatatypeValidator())) xsSimpleType = addOrFind(typeInfo->getDatatypeValidator(), xsModel); XMLSize_t attCount=0; if (typeInfo->hasAttDefs()) { SchemaAttDefList& attDefList = (SchemaAttDefList&) typeInfo->getAttDefList(); attCount = attDefList.getAttDefCount(); xsAttList = new (fMemoryManager) RefVectorOf(attCount, false, fMemoryManager); // create list now put fill it in after we put complextype into map // otherwise we may encounter an infinite loop: complextype needs to // addorfind attdef, which does an addorfind on the enclosingCTdefintion. } // compute fBase bool isAnyType = false; if (typeInfo->getBaseComplexTypeInfo() == typeInfo) // case of anyType isAnyType = true; else if (typeInfo->getBaseComplexTypeInfo()) xsBaseType = addOrFind(typeInfo->getBaseComplexTypeInfo(), xsModel); else if (typeInfo->getBaseDatatypeValidator()) xsBaseType = addOrFind(typeInfo->getBaseDatatypeValidator(), xsModel); else // base is anyType xsBaseType = xsModel->getTypeDefinition(SchemaSymbols::fgATTVAL_ANYTYPE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA); // compute particle ContentSpecNode* contentSpec = typeInfo->getContentSpec(); if (contentSpec) xsParticle = createModelGroupParticle(contentSpec, xsModel); xsObj = new (fMemoryManager) XSComplexTypeDefinition ( typeInfo , xsWildcard , xsSimpleType , xsAttList , xsBaseType , xsParticle , getAnnotationFromModel(xsModel, typeInfo) , xsModel , fMemoryManager ); putObjectInMap(typeInfo, xsObj); if (isAnyType) xsObj->setBaseType(xsObj); if (typeInfo->hasAttDefs()) { // now create the xsattributedeclarations... SchemaAttDefList& attDefList = (SchemaAttDefList&) typeInfo->getAttDefList(); for(unsigned int i=0; iput(&attDef, xsAttDecl); } else xsAttDecl = addOrFind(&attDef, xsModel, xsObj); if (attDef.getDefaultType() != XMLAttDef::Prohibited) { XSAttributeUse* attUse = createXSAttributeUse(xsAttDecl, xsModel); xsAttList->addElement(attUse); processAttUse(&attDef, attUse); } } } // process local elements XMLSize_t elemCount = typeInfo->elementCount(); for (XMLSize_t j=0; jelementAt(j); if (elemDecl->getEnclosingScope() == typeInfo->getScopeDefined() && elemDecl->getPSVIScope() == PSVIDefs::SCP_LOCAL) addOrFind(elemDecl, xsModel, xsObj); } } return xsObj; } XSIDCDefinition* XSObjectFactory::addOrFind(IdentityConstraint* const ic, XSModel* const xsModel) { XSIDCDefinition* xsObj = (XSIDCDefinition*) xsModel->getXSObject(ic); if (!xsObj) { XSIDCDefinition* keyIC = 0; StringList* stringList = 0; XMLSize_t fieldCount = ic->getFieldCount(); if (fieldCount) { stringList = new (fMemoryManager) RefArrayVectorOf( fieldCount, true, fMemoryManager); for(XMLSize_t i=0; igetFieldAt(i)->getXPath()->getExpression() , fMemoryManager ); stringList->addElement(expr); } } if (ic->getType() == IdentityConstraint::ICType_KEYREF) keyIC = addOrFind(((IC_KeyRef*) ic)->getKey(), xsModel); xsObj= new (fMemoryManager) XSIDCDefinition ( ic , keyIC , getAnnotationFromModel(xsModel, ic) , stringList , xsModel , fMemoryManager ); putObjectInMap(ic, xsObj); } return xsObj; } XSNotationDeclaration* XSObjectFactory::addOrFind(XMLNotationDecl* const notDecl, XSModel* const xsModel) { XSNotationDeclaration* xsObj = (XSNotationDeclaration*) xsModel->getXSObject(notDecl); if (!xsObj) { xsObj = new (fMemoryManager) XSNotationDeclaration ( notDecl , getAnnotationFromModel(xsModel, notDecl) , xsModel , fMemoryManager ); putObjectInMap(notDecl, xsObj); } return xsObj; } XSAttributeUse* XSObjectFactory::createXSAttributeUse(XSAttributeDeclaration* const xsAttDecl, XSModel* const xsModel) { XSAttributeUse* attrUse = new (fMemoryManager) XSAttributeUse(xsAttDecl, xsModel, fMemoryManager); fDeleteVector->addElement(attrUse); return attrUse; } XSWildcard* XSObjectFactory::createXSWildcard(SchemaAttDef* const attDef, XSModel* const xsModel) { XSAnnotation* annot = (attDef->getBaseAttDecl()) ? getAnnotationFromModel(xsModel, attDef->getBaseAttDecl()) : getAnnotationFromModel(xsModel, attDef); XSWildcard* xsWildcard = new (fMemoryManager) XSWildcard ( attDef , annot , xsModel , fMemoryManager ); fDeleteVector->addElement(xsWildcard); return xsWildcard; } XSWildcard* XSObjectFactory::createXSWildcard(const ContentSpecNode* const rootNode, XSModel* const xsModel) { XSWildcard* xsWildcard = new (fMemoryManager) XSWildcard ( rootNode , getAnnotationFromModel(xsModel, rootNode) , xsModel , fMemoryManager ); fDeleteVector->addElement(xsWildcard); return xsWildcard; } XSModelGroupDefinition* XSObjectFactory::createXSModelGroupDefinition(XercesGroupInfo* const groupInfo, XSModel* const xsModel) { XSParticle* particle = createModelGroupParticle( groupInfo->getContentSpec(), xsModel); XSModelGroupDefinition* xsObj = new (fMemoryManager) XSModelGroupDefinition ( groupInfo , particle , getAnnotationFromModel(xsModel, groupInfo) , xsModel , fMemoryManager ); fDeleteVector->addElement(xsObj); // process local elements XMLSize_t elemCount = groupInfo->elementCount(); for (XMLSize_t j=0; jelementAt(j); if (elemDecl->getEnclosingScope() == groupInfo->getScope()) addOrFind(elemDecl, xsModel); } return xsObj; } XSAttributeGroupDefinition* XSObjectFactory::createXSAttGroupDefinition(XercesAttGroupInfo* const attGroupInfo, XSModel* const xsModel) { XSAttributeUseList* xsAttList = 0; XSWildcard* xsWildcard = 0; XMLSize_t attCount = attGroupInfo->attributeCount(); if (attCount) { xsAttList = new (fMemoryManager) RefVectorOf(attCount, false, fMemoryManager); for (XMLSize_t i=0; i < attCount; i++) { SchemaAttDef* attDef = attGroupInfo->attributeAt(i); XSAttributeDeclaration* xsAttDecl = 0; if (attDef->getBaseAttDecl()) xsAttDecl = addOrFind(attDef->getBaseAttDecl(), xsModel); else xsAttDecl = addOrFind(attDef, xsModel); if (xsAttDecl && (attDef->getDefaultType() != XMLAttDef::Prohibited)) // just for sanity { XSAttributeUse* attUse = createXSAttributeUse(xsAttDecl, xsModel); xsAttList->addElement(attUse); processAttUse(attDef, attUse); } } } if (attGroupInfo->getCompleteWildCard()) xsWildcard = createXSWildcard(attGroupInfo->getCompleteWildCard(), xsModel); XSAttributeGroupDefinition* xsObj = new (fMemoryManager) XSAttributeGroupDefinition ( attGroupInfo , xsAttList , xsWildcard , getAnnotationFromModel(xsModel, attGroupInfo) , xsModel , fMemoryManager ); fDeleteVector->addElement(xsObj); return xsObj; } XSAnnotation* XSObjectFactory::getAnnotationFromModel(XSModel* const xsModel, const void* const key) { XSNamespaceItemList* namespaceItemList = xsModel->getNamespaceItems(); XSAnnotation* annot = 0; for (unsigned int i=0; isize(); i++) { XSNamespaceItem* nsItem = namespaceItemList->elementAt(i); if (nsItem->fGrammar) { annot = nsItem->fGrammar->getAnnotation(key); if (annot) return annot; } } if (xsModel->fParent) return getAnnotationFromModel(xsModel->fParent, key); return 0; } void XSObjectFactory::putObjectInMap(void* key, XSObject* const object) { fXercesToXSMap->put(key, object); fDeleteVector->addElement(object); } void XSObjectFactory::processFacets(DatatypeValidator* const dv, XSModel* const xsModel, XSSimpleTypeDefinition* const xsST) { // NOTE: XSMultiValueFacetList is not owned by XSModel! // NOTE: XSFacetList is not owned by XSModel! bool isFixed = false; int dvFacetsDefined = dv->getFacetsDefined(); int dvFixedFacets = dv->getFixed(); int definedFacets = 0; int fixedFacets = 0; XSMultiValueFacetList* xsMultiFacetList = 0; StringList* patternList = 0; XSFacetList* xsFacetList = new (fMemoryManager) RefVectorOf(4, false, fMemoryManager); if (isMultiValueFacetDefined(dv)) xsMultiFacetList = new (fMemoryManager) RefVectorOf(2, false, fMemoryManager); if (dvFacetsDefined & DatatypeValidator::FACET_ENUMERATION) { RefArrayVectorOf* enumList = (RefArrayVectorOf*) dv->getEnumString(); if (dvFixedFacets & DatatypeValidator::FACET_ENUMERATION) { isFixed = true; fixedFacets |= XSSimpleTypeDefinition::FACET_ENUMERATION; } XSMultiValueFacet* mvFacet = new (fMemoryManager) XSMultiValueFacet( XSSimpleTypeDefinition::FACET_ENUMERATION , enumList, isFixed , getAnnotationFromModel(xsModel, enumList), xsModel, fMemoryManager ); fDeleteVector->addElement(mvFacet); xsMultiFacetList->addElement(mvFacet); definedFacets |= XSSimpleTypeDefinition::FACET_ENUMERATION; } if (dv->getFacets()) { RefHashTableOfEnumerator e(dv->getFacets(), false, fMemoryManager); while (e.hasMoreElements()) { KVStringPair& pair = e.nextElement(); XMLCh* key = pair.getKey(); XSSimpleTypeDefinition::FACET facetType; XSAnnotation* annot = getAnnotationFromModel(xsModel, &pair); if (XMLString::equals(key, SchemaSymbols::fgELT_MAXINCLUSIVE)) { facetType = XSSimpleTypeDefinition::FACET_MAXINCLUSIVE; isFixed = ((dvFixedFacets & DatatypeValidator::FACET_MAXINCLUSIVE) != 0); } else if (XMLString::equals(key, SchemaSymbols::fgELT_MAXEXCLUSIVE)) { facetType = XSSimpleTypeDefinition::FACET_MAXEXCLUSIVE; isFixed = ((dvFixedFacets & DatatypeValidator::FACET_MAXEXCLUSIVE) !=0); } else if (XMLString::equals(key, SchemaSymbols::fgELT_MININCLUSIVE)) { facetType = XSSimpleTypeDefinition::FACET_MININCLUSIVE; isFixed = ((dvFixedFacets & DatatypeValidator::FACET_MININCLUSIVE) !=0); } else if (XMLString::equals(key, SchemaSymbols::fgELT_MINEXCLUSIVE)) { facetType = XSSimpleTypeDefinition::FACET_MINEXCLUSIVE; isFixed = ((dvFixedFacets & DatatypeValidator::FACET_MINEXCLUSIVE) != 0); } else if (XMLString::equals(key, SchemaSymbols::fgELT_LENGTH)) { facetType = XSSimpleTypeDefinition::FACET_LENGTH; isFixed = ((dvFixedFacets & DatatypeValidator::FACET_LENGTH) != 0); } else if (XMLString::equals(key, SchemaSymbols::fgELT_MINLENGTH)) { facetType = XSSimpleTypeDefinition::FACET_MINLENGTH; isFixed = ((dvFixedFacets & DatatypeValidator::FACET_MINLENGTH) != 0); } else if (XMLString::equals(key, SchemaSymbols::fgELT_MAXLENGTH)) { facetType = XSSimpleTypeDefinition::FACET_MAXLENGTH; isFixed = ((dvFixedFacets & DatatypeValidator::FACET_MAXLENGTH) != 0); } else if (XMLString::equals(key, SchemaSymbols::fgELT_TOTALDIGITS)) { facetType = XSSimpleTypeDefinition::FACET_TOTALDIGITS; isFixed = ((dvFixedFacets & DatatypeValidator::FACET_TOTALDIGITS) != 0); } else if (XMLString::equals(key, SchemaSymbols::fgELT_FRACTIONDIGITS)) { facetType = XSSimpleTypeDefinition::FACET_FRACTIONDIGITS; isFixed = ((dvFixedFacets & DatatypeValidator::FACET_FRACTIONDIGITS) != 0); } else if (XMLString::equals(key, SchemaSymbols::fgELT_WHITESPACE)) { facetType = XSSimpleTypeDefinition::FACET_WHITESPACE; isFixed = ((dvFixedFacets & DatatypeValidator::FACET_WHITESPACE) != 0); } else if (XMLString::equals(key, SchemaSymbols::fgELT_PATTERN)) { XMLStringTokenizer tokenizer(dv->getPattern(), regexSeparator, fMemoryManager); patternList = new (fMemoryManager) RefArrayVectorOf( tokenizer.countTokens(), true, fMemoryManager ); while (tokenizer.hasMoreTokens()) patternList->addElement(XMLString::replicate(tokenizer.nextToken(), fMemoryManager)); if (dvFixedFacets & DatatypeValidator::FACET_PATTERN) { isFixed = true; fixedFacets |= XSSimpleTypeDefinition::FACET_PATTERN; } XSMultiValueFacet* mvFacet = new (fMemoryManager) XSMultiValueFacet( XSSimpleTypeDefinition::FACET_PATTERN, patternList , isFixed, annot, xsModel, fMemoryManager ); fDeleteVector->addElement(mvFacet); xsMultiFacetList->addElement(mvFacet); definedFacets |= XSSimpleTypeDefinition::FACET_PATTERN; continue; } else { // REVISIT: hmm... what about XSSimpleTypeDefinition::FACET_NONE // don't think I need to create an empty Facet? continue; } XSFacet* xsFacet = new (fMemoryManager) XSFacet( facetType, pair.getValue(), isFixed, annot, xsModel, fMemoryManager); fDeleteVector->addElement(xsFacet); xsFacetList->addElement(xsFacet); definedFacets |= facetType; if (isFixed) fixedFacets |= facetType; } } // add whistespace facet if missing if ((definedFacets & XSSimpleTypeDefinition::FACET_WHITESPACE) == 0) { XSFacet* xsFacet = new (fMemoryManager) XSFacet( XSSimpleTypeDefinition::FACET_WHITESPACE , dv->getWSstring(dv->getWSFacet()) , false, 0, xsModel, fMemoryManager); fDeleteVector->addElement(xsFacet); xsFacetList->addElement(xsFacet); definedFacets |= XSSimpleTypeDefinition::FACET_WHITESPACE; } // inherit facets from base if (xsST->getBaseType() && xsST->getBaseType()->getTypeCategory() == XSTypeDefinition::SIMPLE_TYPE) { XSSimpleTypeDefinition* baseST = (XSSimpleTypeDefinition*) xsST->getBaseType(); XSFacetList* baseFacets = baseST->getFacets(); for (unsigned int i=0; isize(); i++) { XSFacet* bFacet = baseFacets->elementAt(i); if ((definedFacets & bFacet->getFacetKind()) == 0) { definedFacets |= bFacet->getFacetKind(); xsFacetList->addElement(bFacet); if (bFacet->isFixed()) fixedFacets |= bFacet->getFacetKind(); } } if (baseST->getMultiValueFacets()) { XSMultiValueFacetList* baseMVFacets = baseST->getMultiValueFacets(); for (unsigned int j=0; jsize(); j++) { XSMultiValueFacet* bFacet = baseMVFacets->elementAt(j); if ((definedFacets & bFacet->getFacetKind()) == 0) { definedFacets |= bFacet->getFacetKind(); xsMultiFacetList->addElement(bFacet); if (bFacet->isFixed()) fixedFacets |= bFacet->getFacetKind(); } } } } xsST->setFacetInfo(definedFacets, fixedFacets, xsFacetList, xsMultiFacetList, patternList); } void XSObjectFactory::processAttUse(SchemaAttDef* const attDef, XSAttributeUse* const xsAttUse) { bool isRequired = false; XSConstants::VALUE_CONSTRAINT constraintType = XSConstants::VALUE_CONSTRAINT_NONE; if (attDef->getDefaultType() == XMLAttDef::Default) { constraintType = XSConstants::VALUE_CONSTRAINT_DEFAULT; } else if ((attDef->getDefaultType() == XMLAttDef::Fixed) || (attDef->getDefaultType() == XMLAttDef::Required_And_Fixed)) { constraintType = XSConstants::VALUE_CONSTRAINT_FIXED; } if (attDef->getDefaultType() == XMLAttDef::Required || attDef->getDefaultType() == XMLAttDef::Required_And_Fixed) isRequired = true; xsAttUse->set(isRequired, constraintType, attDef->getValue()); } bool XSObjectFactory::isMultiValueFacetDefined(DatatypeValidator* const dv) { DatatypeValidator* tmpDV = dv; while (tmpDV) { if ((tmpDV->getFacetsDefined() & DatatypeValidator::FACET_PATTERN) || (tmpDV->getFacetsDefined() & DatatypeValidator::FACET_ENUMERATION)) return true; tmpDV = tmpDV->getBaseValidator(); } return false; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/internal/SGXMLScanner.hpp0000644000175000017500000002743411301516456021233 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SGXMLScanner.hpp 882548 2009-11-20 13:44:14Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_SGXMLSCANNER_HPP) #define XERCESC_INCLUDE_GUARD_SGXMLSCANNER_HPP #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN class SchemaGrammar; class SchemaValidator; class IdentityConstraintHandler; class IdentityConstraint; class ContentLeafNameTypeVector; class SchemaAttDef; class XMLContentModel; class XSModel; class PSVIAttributeList; class PSVIElement; // This is a scanner class, which process XML Schema grammar. class XMLPARSER_EXPORT SGXMLScanner : public XMLScanner { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- SGXMLScanner ( XMLValidator* const valToAdopt , GrammarResolver* const grammarResolver , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); SGXMLScanner ( XMLDocumentHandler* const docHandler , DocTypeHandler* const docTypeHandler , XMLEntityHandler* const entityHandler , XMLErrorReporter* const errReporter , XMLValidator* const valToAdopt , GrammarResolver* const grammarResolver , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual ~SGXMLScanner(); // ----------------------------------------------------------------------- // XMLScanner public virtual methods // ----------------------------------------------------------------------- virtual const XMLCh* getName() const; virtual NameIdPool* getEntityDeclPool(); virtual const NameIdPool* getEntityDeclPool() const; virtual void scanDocument ( const InputSource& src ); virtual bool scanNext(XMLPScanToken& toFill); virtual Grammar* loadGrammar ( const InputSource& src , const short grammarType , const bool toCache = false ); virtual void resetCachedGrammar (); virtual Grammar::GrammarType getCurrentGrammarType() const; protected: // ----------------------------------------------------------------------- // XMLScanner virtual methods // ----------------------------------------------------------------------- virtual void scanReset(const InputSource& src); // ----------------------------------------------------------------------- // SGXMLScanner virtual methods // ----------------------------------------------------------------------- virtual bool scanStartTag(bool& gotData); virtual void scanEndTag(bool& gotData); // ----------------------------------------------------------------------- // Helper methods // ----------------------------------------------------------------------- XMLSize_t buildAttList ( const RefVectorOf& providedAttrs , const XMLSize_t attCount , XMLElementDecl* elemDecl , RefVectorOf& toFill ); bool laxElementValidation(QName* element, ContentLeafNameTypeVector* cv, const XMLContentModel* const cm, const XMLSize_t parentElemDepth); XMLSize_t rawAttrScan ( const XMLCh* const elemName , RefVectorOf& toFill , bool& isEmpty ); void updateNSMap ( const XMLCh* const attrName , const XMLCh* const attrValue ); void resizeElemState(); void updateNSMap ( const XMLCh* const attrName , const XMLCh* const attrValue , const int colonPosition ); void resizeRawAttrColonList(); // ----------------------------------------------------------------------- // Data members // // fRawAttrList // During the initial scan of the attributes we can only do a raw // scan for key/value pairs. So this vector is used to store them // until they can be processed (and put into fAttrList.) // // fSchemaValidator // The Schema validator instance. // // fSeeXsi // This flag indicates a schema has been seen. // // fElemState // fElemLoopState // fElemStateSize // Stores an element next state from DFA content model - used for // wildcard validation // // fElemNonDeclPool // registry for elements without decls in the grammar // fElemCount // count of the number of start tags seen so far (starts at 1). // Used for duplicate attribute detection/processing of required/defaulted attributes // fAttDefRegistry // mapping from XMLAttDef instances to the count of the last // start tag where they were utilized. // fUndeclaredAttrRegistry // set of namespaceId/localName pairs to detect duplicates // fPSVIAttrList // PSVI attribute list implementation that needs to be // filled when a PSVIHandler is registered // fSchemaInfoList // Transient schema info list that is passed to TraverseSchema instances. // fCachedSchemaInfoList // Cached Schema info list that is passed to TraverseSchema instances. // // ----------------------------------------------------------------------- bool fSeeXsi; Grammar::GrammarType fGrammarType; unsigned int fElemStateSize; unsigned int* fElemState; unsigned int* fElemLoopState; XMLBuffer fContent; ValueHashTableOf* fEntityTable; RefVectorOf* fRawAttrList; unsigned int fRawAttrColonListSize; int* fRawAttrColonList; SchemaGrammar* fSchemaGrammar; SchemaValidator* fSchemaValidator; IdentityConstraintHandler* fICHandler; RefHash3KeysIdPool* fElemNonDeclPool; unsigned int fElemCount; RefHashTableOf*fAttDefRegistry; Hash2KeysSetOf* fUndeclaredAttrRegistry; PSVIAttributeList * fPSVIAttrList; XSModel* fModel; PSVIElement* fPSVIElement; ValueStackOf* fErrorStack; PSVIElemContext fPSVIElemContext; RefHash2KeysTableOf* fSchemaInfoList; RefHash2KeysTableOf* fCachedSchemaInfoList; private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- SGXMLScanner(); SGXMLScanner(const SGXMLScanner&); SGXMLScanner& operator=(const SGXMLScanner&); // ----------------------------------------------------------------------- // XMLScanner virtual methods // ----------------------------------------------------------------------- virtual void scanCDSection(); virtual void scanCharData(XMLBuffer& toToUse); virtual EntityExpRes scanEntityRef ( const bool inAttVal , XMLCh& firstCh , XMLCh& secondCh , bool& escaped ); virtual void scanDocTypeDecl(); virtual void sendCharData(XMLBuffer& toSend); virtual InputSource* resolveSystemId(const XMLCh* const sysId ,const XMLCh* const pubId); // ----------------------------------------------------------------------- // Private helper methods // ----------------------------------------------------------------------- void commonInit(); void cleanUp(); bool normalizeAttValue ( const XMLAttDef* const attDef , const XMLCh* const attrName , const XMLCh* const value , XMLBuffer& toFill ); bool normalizeAttRawValue ( const XMLCh* const attrName , const XMLCh* const value , XMLBuffer& toFill ); void scanRawAttrListforNameSpaces(XMLSize_t attCount); void parseSchemaLocation(const XMLCh* const schemaLocationStr, bool ignoreLoadSchema = false); void resolveSchemaGrammar(const XMLCh* const loc, const XMLCh* const uri, bool ignoreLoadSchema = false); bool switchGrammar(const XMLCh* const newGrammarNameSpace); bool anyAttributeValidation(SchemaAttDef* attWildCard, unsigned int uriId, bool& skipThisOne, bool& laxThisOne); // ----------------------------------------------------------------------- // Private scanning methods // ----------------------------------------------------------------------- bool basicAttrValueScan ( const XMLCh* const attrName , XMLBuffer& toFill ); bool scanAttValue ( const XMLAttDef* const attDef , XMLBuffer& toFill ); bool scanContent(); // ----------------------------------------------------------------------- // IdentityConstraints Activation methods // ----------------------------------------------------------------------- inline bool toCheckIdentityConstraint() const; // ----------------------------------------------------------------------- // Grammar preparsing methods // ----------------------------------------------------------------------- Grammar* loadXMLSchemaGrammar(const InputSource& src, const bool toCache = false); // ----------------------------------------------------------------------- // PSVI handling methods // ----------------------------------------------------------------------- void endElementPSVI(SchemaElementDecl* const elemDecl, DatatypeValidator* const memberDV); void resetPSVIElemContext(); }; inline const XMLCh* SGXMLScanner::getName() const { return XMLUni::fgSGXMLScanner; } inline bool SGXMLScanner::toCheckIdentityConstraint() const { return fValidate && fIdentityConstraintChecking && fICHandler; } inline Grammar::GrammarType SGXMLScanner::getCurrentGrammarType() const { return fGrammarType; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/internal/DGXMLScanner.cpp0000644000175000017500000037443311274550527021221 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DGXMLScanner.cpp 833045 2009-11-05 13:21:27Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN typedef JanitorMemFunCall CleanupType; typedef JanitorMemFunCall ReaderMgrResetType; // --------------------------------------------------------------------------- // DGXMLScanner: Constructors and Destructor // --------------------------------------------------------------------------- DGXMLScanner::DGXMLScanner(XMLValidator* const valToAdopt , GrammarResolver* const grammarResolver , MemoryManager* const manager) : XMLScanner(valToAdopt, grammarResolver, manager) , fAttrNSList(0) , fDTDValidator(0) , fDTDGrammar(0) , fDTDElemNonDeclPool(0) , fElemCount(0) , fAttDefRegistry(0) , fUndeclaredAttrRegistry(0) { CleanupType cleanup(this, &DGXMLScanner::cleanUp); try { commonInit(); } catch(const OutOfMemoryException&) { // Don't cleanup when out of memory, since executing the // code can cause problems. cleanup.release(); throw; } cleanup.release(); } DGXMLScanner::DGXMLScanner( XMLDocumentHandler* const docHandler , DocTypeHandler* const docTypeHandler , XMLEntityHandler* const entityHandler , XMLErrorReporter* const errHandler , XMLValidator* const valToAdopt , GrammarResolver* const grammarResolver , MemoryManager* const manager) : XMLScanner(docHandler, docTypeHandler, entityHandler, errHandler, valToAdopt, grammarResolver, manager) , fAttrNSList(0) , fDTDValidator(0) , fDTDGrammar(0) , fDTDElemNonDeclPool(0) , fElemCount(0) , fAttDefRegistry(0) , fUndeclaredAttrRegistry(0) { CleanupType cleanup(this, &DGXMLScanner::cleanUp); try { commonInit(); } catch(const OutOfMemoryException&) { // Don't cleanup when out of memory, since executing the // code can cause problems. cleanup.release(); throw; } cleanup.release(); } DGXMLScanner::~DGXMLScanner() { cleanUp(); } // --------------------------------------------------------------------------- // XMLScanner: Getter methods // --------------------------------------------------------------------------- NameIdPool* DGXMLScanner::getEntityDeclPool() { if(!fGrammar) return 0; return ((DTDGrammar*)fGrammar)->getEntityDeclPool(); } const NameIdPool* DGXMLScanner::getEntityDeclPool() const { if(!fGrammar) return 0; return ((DTDGrammar*)fGrammar)->getEntityDeclPool(); } // --------------------------------------------------------------------------- // DGXMLScanner: Main entry point to scan a document // --------------------------------------------------------------------------- void DGXMLScanner::scanDocument(const InputSource& src) { // Bump up the sequence id for this parser instance. This will invalidate // any previous progressive scan tokens. fSequenceId++; ReaderMgrResetType resetReaderMgr(&fReaderMgr, &ReaderMgr::reset); try { // Reset the scanner and its plugged in stuff for a new run. This // resets all the data structures, creates the initial reader and // pushes it on the stack, and sets up the base document path. scanReset(src); // If we have a document handler, then call the start document if (fDocHandler) fDocHandler->startDocument(); // Scan the prolog part, which is everything before the root element // including the DTD subsets. scanProlog(); // If we got to the end of input, then its not a valid XML file. // Else, go on to scan the content. if (fReaderMgr.atEOF()) { emitError(XMLErrs::EmptyMainEntity); } else { // Scan content, and tell it its not an external entity if (scanContent()) { // Do post-parse validation if required if (fValidate) { // We handle ID reference semantics at this level since // its required by XML 1.0. checkIDRefs(); // Then allow the validator to do any extra stuff it wants // fValidator->postParseValidation(); } // That went ok, so scan for any miscellaneous stuff if (!fReaderMgr.atEOF()) scanMiscellaneous(); } } // If we have a document handler, then call the end document if (fDocHandler) fDocHandler->endDocument(); } // NOTE: // // In all of the error processing below, the emitError() call MUST come // before the flush of the reader mgr, or it will fail because it tries // to find out the position in the XML source of the error. catch(const XMLErrs::Codes) { // This is a 'first failure' exception, so fall through } catch(const XMLValid::Codes) { // This is a 'first fatal error' type exit, so fall through } catch(const XMLException& excToCatch) { // Emit the error and catch any user exception thrown from here. Make // sure in all cases we flush the reader manager. fInException = true; try { if (excToCatch.getErrorType() == XMLErrorReporter::ErrType_Warning) emitError ( XMLErrs::XMLException_Warning , excToCatch.getCode() , excToCatch.getMessage() ); else if (excToCatch.getErrorType() >= XMLErrorReporter::ErrType_Fatal) emitError ( XMLErrs::XMLException_Fatal , excToCatch.getCode() , excToCatch.getMessage() ); else emitError ( XMLErrs::XMLException_Error , excToCatch.getCode() , excToCatch.getMessage() ); } catch(const OutOfMemoryException&) { // This is a special case for out-of-memory // conditions, because resetting the ReaderMgr // can be problematic. resetReaderMgr.release(); throw; } } catch(const OutOfMemoryException&) { // This is a special case for out-of-memory // conditions, because resetting the ReaderMgr // can be problematic. resetReaderMgr.release(); throw; } } bool DGXMLScanner::scanNext(XMLPScanToken& token) { // Make sure this token is still legal if (!isLegalToken(token)) ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Scan_BadPScanToken, fMemoryManager); // Find the next token and remember the reader id XMLSize_t orgReader; XMLTokens curToken; ReaderMgrResetType resetReaderMgr(&fReaderMgr, &ReaderMgr::reset); bool retVal = true; try { while (true) { // We have to handle any end of entity exceptions that happen here. // We could be at the end of X nested entities, each of which will // generate an end of entity exception as we try to move forward. try { curToken = senseNextToken(orgReader); break; } catch(const EndOfEntityException& toCatch) { // Send an end of entity reference event if (fDocHandler) fDocHandler->endEntityReference(toCatch.getEntity()); } } if (curToken == Token_CharData) { scanCharData(fCDataBuf); } else if (curToken == Token_EOF) { if (!fElemStack.isEmpty()) { const ElemStack::StackElem* topElem = fElemStack.popTop(); emitError ( XMLErrs::EndedWithTagsOnStack , topElem->fThisElement->getFullName() ); } retVal = false; } else { // Its some sort of markup bool gotData = true; switch(curToken) { case Token_CData : // Make sure we are within content if (fElemStack.isEmpty()) emitError(XMLErrs::CDATAOutsideOfContent); scanCDSection(); break; case Token_Comment : scanComment(); break; case Token_EndTag : scanEndTag(gotData); break; case Token_PI : scanPI(); break; case Token_StartTag : if (fDoNamespaces) scanStartTagNS(gotData); else scanStartTag(gotData); break; default : fReaderMgr.skipToChar(chOpenAngle); break; } if (orgReader != fReaderMgr.getCurrentReaderNum()) emitError(XMLErrs::PartialMarkupInEntity); // If we hit the end, then do the miscellaneous part if (!gotData) { // Do post-parse validation if required if (fValidate) { // We handle ID reference semantics at this level since // its required by XML 1.0. checkIDRefs(); // Then allow the validator to do any extra stuff it wants // fValidator->postParseValidation(); } // That went ok, so scan for any miscellaneous stuff scanMiscellaneous(); if (fDocHandler) fDocHandler->endDocument(); } } } // NOTE: // // In all of the error processing below, the emitError() call MUST come // before the flush of the reader mgr, or it will fail because it tries // to find out the position in the XML source of the error. catch(const XMLErrs::Codes) { // This is a 'first failure' exception, so return failure retVal = false; } catch(const XMLValid::Codes) { // This is a 'first fatal error' type exit, so return failure retVal = false; } catch(const XMLException& excToCatch) { // Emit the error and catch any user exception thrown from here. Make // sure in all cases we flush the reader manager. fInException = true; try { if (excToCatch.getErrorType() == XMLErrorReporter::ErrType_Warning) emitError ( XMLErrs::XMLException_Warning , excToCatch.getCode() , excToCatch.getMessage() ); else if (excToCatch.getErrorType() >= XMLErrorReporter::ErrType_Fatal) emitError ( XMLErrs::XMLException_Fatal , excToCatch.getCode() , excToCatch.getMessage() ); else emitError ( XMLErrs::XMLException_Error , excToCatch.getCode() , excToCatch.getMessage() ); } catch(const OutOfMemoryException&) { // This is a special case for out-of-memory // conditions, because resetting the ReaderMgr // can be problematic. resetReaderMgr.release(); throw; } retVal = false; } catch(const OutOfMemoryException&) { // This is a special case for out-of-memory // conditions, because resetting the ReaderMgr // can be problematic. resetReaderMgr.release(); throw; } // If we are not at the end, release the object that will // reset the ReaderMgr. if (retVal) resetReaderMgr.release(); return retVal; } // --------------------------------------------------------------------------- // DGXMLScanner: Private scanning methods // --------------------------------------------------------------------------- // This method will kick off the scanning of the primary content of the // document, i.e. the elements. bool DGXMLScanner::scanContent() { // Go into a loop until we hit the end of the root element, or we fall // out because there is no root element. // // We have to do kind of a deeply nested double loop here in order to // avoid doing the setup/teardown of the exception handler on each // round. Doing it this way we only do it when an exception actually // occurs. bool gotData = true; bool inMarkup = false; while (gotData) { try { while (gotData) { // Sense what the next top level token is. According to what // this tells us, we will call something to handle that kind // of thing. XMLSize_t orgReader; const XMLTokens curToken = senseNextToken(orgReader); // Handle character data and end of file specially. Char data // is not markup so we don't want to handle it in the loop // below. if (curToken == Token_CharData) { // Scan the character data and call appropriate events. Let // him use our local character data buffer for efficiency. scanCharData(fCDataBuf); continue; } else if (curToken == Token_EOF) { // The element stack better be empty at this point or we // ended prematurely before all elements were closed. if (!fElemStack.isEmpty()) { const ElemStack::StackElem* topElem = fElemStack.popTop(); emitError ( XMLErrs::EndedWithTagsOnStack , topElem->fThisElement->getFullName() ); } // Its the end of file, so clear the got data flag gotData = false; continue; } // We are in some sort of markup now inMarkup = true; // According to the token we got, call the appropriate // scanning method. switch(curToken) { case Token_CData : // Make sure we are within content if (fElemStack.isEmpty()) emitError(XMLErrs::CDATAOutsideOfContent); scanCDSection(); break; case Token_Comment : scanComment(); break; case Token_EndTag : scanEndTag(gotData); break; case Token_PI : scanPI(); break; case Token_StartTag : if (fDoNamespaces) scanStartTagNS(gotData); else scanStartTag(gotData); break; default : fReaderMgr.skipToChar(chOpenAngle); break; } if (orgReader != fReaderMgr.getCurrentReaderNum()) emitError(XMLErrs::PartialMarkupInEntity); // And we are back out of markup again inMarkup = false; } } catch(const EndOfEntityException& toCatch) { // If we were in some markup when this happened, then its a // partial markup error. if (inMarkup) emitError(XMLErrs::PartialMarkupInEntity); // Send an end of entity reference event if (fDocHandler) fDocHandler->endEntityReference(toCatch.getEntity()); inMarkup = false; } } // It went ok, so return success return true; } void DGXMLScanner::scanEndTag(bool& gotData) { // Assume we will still have data until proven otherwise. It will only // ever be false if this is the end of the root element. gotData = true; // Check if the element stack is empty. If so, then this is an unbalanced // element (i.e. more ends than starts, perhaps because of bad text // causing one to be skipped.) if (fElemStack.isEmpty()) { emitError(XMLErrs::MoreEndThanStartTags); fReaderMgr.skipPastChar(chCloseAngle); ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Scan_UnbalancedStartEnd, fMemoryManager); } // Pop the stack of the element we are supposed to be ending. Remember // that we don't own this. The stack just keeps them and reuses them. unsigned int uriId = (fDoNamespaces) ? fElemStack.getCurrentURI() : fEmptyNamespaceId; // Pop the stack of the element we are supposed to be ending. Remember // that we don't own this. The stack just keeps them and reuses them. const ElemStack::StackElem* topElem = fElemStack.popTop(); XMLElementDecl *tempElement = topElem->fThisElement; // See if it was the root element, to avoid multiple calls below const bool isRoot = fElemStack.isEmpty(); // Make sure that its the end of the element that we expect if (!fReaderMgr.skippedStringLong(tempElement->getFullName())) { emitError ( XMLErrs::ExpectedEndOfTagX , tempElement->getFullName() ); fReaderMgr.skipPastChar(chCloseAngle); return; } // Make sure we are back on the same reader as where we started if (topElem->fReaderNum != fReaderMgr.getCurrentReaderNum()) emitError(XMLErrs::PartialTagMarkupError); // Skip optional whitespace fReaderMgr.skipPastSpaces(); // Make sure we find the closing bracket if (!fReaderMgr.skippedChar(chCloseAngle)) { emitError ( XMLErrs::UnterminatedEndTag , topElem->fThisElement->getFullName() ); } // If validation is enabled, then lets pass him the list of children and // this element and let him validate it. if (fValidate) { // // XML1.0-3rd // Validity Constraint: // The declaration matches EMPTY and the element has no content (not even // entity references, comments, PIs or white space). // if ( (topElem->fCommentOrPISeen) && (((DTDElementDecl*) topElem->fThisElement)->getModelType() == DTDElementDecl::Empty)) { fValidator->emitError ( XMLValid::EmptyElemHasContent , topElem->fThisElement->getFullName() ); } // // XML1.0-3rd // Validity Constraint: // // The declaration matches children and the sequence of child elements // belongs to the language generated by the regular expression in the // content model, with optional white space, comments and PIs // (i.e. markup matching production [27] Misc) between the start-tag and // the first child element, between child elements, or between the last // child element and the end-tag. // // Note that // a CDATA section containing only white space or // a reference to an entity whose replacement text is character references // expanding to white space do not match the nonterminal S, and hence // cannot appear in these positions; however, // a reference to an internal entity with a literal value consisting // of character references expanding to white space does match S, // since its replacement text is the white space resulting from expansion // of the character references. // if ( (topElem->fReferenceEscaped) && (((DTDElementDecl*) topElem->fThisElement)->getModelType() == DTDElementDecl::Children)) { fValidator->emitError ( XMLValid::ElemChildrenHasInvalidWS , topElem->fThisElement->getFullName() ); } XMLSize_t failure; bool res = fValidator->checkContent ( topElem->fThisElement , topElem->fChildren , topElem->fChildCount , &failure ); if (!res) { // One of the elements is not valid for the content. NOTE that // if no children were provided but the content model requires // them, it comes back with a zero value. But we cannot use that // to index the child array in this case, and have to put out a // special message. if (!topElem->fChildCount) { fValidator->emitError ( XMLValid::EmptyNotValidForContent , topElem->fThisElement->getFormattedContentModel() ); } else if (failure >= topElem->fChildCount) { fValidator->emitError ( XMLValid::NotEnoughElemsForCM , topElem->fThisElement->getFormattedContentModel() ); } else { fValidator->emitError ( XMLValid::ElementNotValidForContent , topElem->fChildren[failure]->getRawName() , topElem->fThisElement->getFormattedContentModel() ); } } } // If we have a doc handler, tell it about the end tag if (fDocHandler) { fDocHandler->endElement ( *topElem->fThisElement , uriId , isRoot , (fDoNamespaces) ? topElem->fThisElement->getElementName()->getPrefix() : XMLUni::fgZeroLenString ); } // If this was the root, then done with content gotData = !isRoot; } // This method handles the high level logic of scanning the DOCType // declaration. This calls the DTDScanner and kicks off both the scanning of // the internal subset and the scanning of the external subset, if any. // // When we get here the 'resetDocType(); // There must be some space after DOCTYPE bool skippedSomething; fReaderMgr.skipPastSpaces(skippedSomething); if (!skippedSomething) { emitError(XMLErrs::ExpectedWhitespace); // Just skip the Doctype declaration and return fReaderMgr.skipPastChar(chCloseAngle); return; } // Get a buffer for the root element XMLBufBid bbRootName(&fBufMgr); // Get a name from the input, which should be the name of the root // element of the upcoming content. int colonPosition; bool validName = fDoNamespaces ? fReaderMgr.getQName(bbRootName.getBuffer(), &colonPosition) : fReaderMgr.getName(bbRootName.getBuffer()); if (!validName) { if (bbRootName.isEmpty()) emitError(XMLErrs::NoRootElemInDOCTYPE); else emitError(XMLErrs::InvalidRootElemInDOCTYPE, bbRootName.getRawBuffer()); fReaderMgr.skipPastChar(chCloseAngle); return; } // Store the root element name for later check setRootElemName(bbRootName.getRawBuffer()); // This element obviously is not going to exist in the element decl // pool yet, but we need to call docTypeDecl. So force it into // the element decl pool, marked as being there because it was in // the DOCTYPE. Later, when its declared, the status will be updated. // // Only do this if we are not reusing the validator! If we are reusing, // then look it up instead. It has to exist! MemoryManager* const rootDeclMgr = fUseCachedGrammar ? fMemoryManager : fGrammarPoolMemoryManager; DTDElementDecl* rootDecl = new (rootDeclMgr) DTDElementDecl ( bbRootName.getRawBuffer() , fEmptyNamespaceId , DTDElementDecl::Any , rootDeclMgr ); Janitor rootDeclJanitor(rootDecl); rootDecl->setCreateReason(DTDElementDecl::AsRootElem); rootDecl->setExternalElemDeclaration(true); if(!fUseCachedGrammar) { fGrammar->putElemDecl(rootDecl); rootDeclJanitor.release(); } else { // put this in the undeclared pool so it gets deleted... XMLElementDecl* elemDecl = fDTDElemNonDeclPool->getByKey(bbRootName.getRawBuffer()); if (elemDecl) { rootDecl->setId(elemDecl->getId()); } else { rootDecl->setId(fDTDElemNonDeclPool->put((DTDElementDecl*)rootDecl)); rootDeclJanitor.release(); } } // Skip any spaces after the name fReaderMgr.skipPastSpaces(); // And now if we are looking at a >, then we are done. It is not // required to have an internal or external subset, though why you // would not escapes me. if (fReaderMgr.skippedChar(chCloseAngle)) { // If we have a doc type handler and advanced callbacks are enabled, // call the doctype event. if (fDocTypeHandler) fDocTypeHandler->doctypeDecl(*rootDecl, 0, 0, false); return; } // either internal/external subset if (fValScheme == Val_Auto && !fValidate) fValidate = true; bool hasIntSubset = false; bool hasExtSubset = false; XMLCh* sysId = 0; XMLCh* pubId = 0; DTDScanner dtdScanner ( (DTDGrammar*) fGrammar , fDocTypeHandler , fGrammarPoolMemoryManager , fMemoryManager ); dtdScanner.setScannerInfo(this, &fReaderMgr, &fBufMgr); // If the next character is '[' then we have no external subset cause // there is no system id, just the opening character of the internal // subset. Else, has to be an id. // // Just look at the next char, don't eat it. if (fReaderMgr.peekNextChar() == chOpenSquare) { hasIntSubset = true; } else { // Indicate we have an external subset hasExtSubset = true; fHasNoDTD = false; // Get buffers for the ids XMLBufBid bbPubId(&fBufMgr); XMLBufBid bbSysId(&fBufMgr); // Get the external subset id if (!dtdScanner.scanId(bbPubId.getBuffer(), bbSysId.getBuffer(), DTDScanner::IDType_External)) { fReaderMgr.skipPastChar(chCloseAngle); return; } // Get copies of the ids we got pubId = XMLString::replicate(bbPubId.getRawBuffer(), fMemoryManager); sysId = XMLString::replicate(bbSysId.getRawBuffer(), fMemoryManager); // Skip spaces and check again for the opening of an internal subset fReaderMgr.skipPastSpaces(); // Just look at the next char, don't eat it. if (fReaderMgr.peekNextChar() == chOpenSquare) { hasIntSubset = true; } } // Insure that the ids get cleaned up, if they got allocated ArrayJanitor janSysId(sysId, fMemoryManager); ArrayJanitor janPubId(pubId, fMemoryManager); // If we have a doc type handler and advanced callbacks are enabled, // call the doctype event. if (fDocTypeHandler) fDocTypeHandler->doctypeDecl(*rootDecl, pubId, sysId, hasIntSubset, hasExtSubset); // Ok, if we had an internal subset, we are just past the [ character // and need to parse that first. if (hasIntSubset) { // Eat the opening square bracket fReaderMgr.getNextChar(); checkInternalDTD(hasExtSubset, sysId, pubId); // And try to scan the internal subset. If we fail, try to recover // by skipping forward tot he close angle and returning. if (!dtdScanner.scanInternalSubset()) { fReaderMgr.skipPastChar(chCloseAngle); return; } // Do a sanity check that some expanded PE did not propogate out of // the doctype. This could happen if it was terminated early by bad // syntax. if (fReaderMgr.getReaderDepth() > 1) { emitError(XMLErrs::PEPropogated); // Ask the reader manager to pop back down to the main level fReaderMgr.cleanStackBackTo(1); } fReaderMgr.skipPastSpaces(); } // And that should leave us at the closing > of the DOCTYPE line if (!fReaderMgr.skippedChar(chCloseAngle)) { // Do a special check for the common scenario of an extra ] char at // the end. This is easy to recover from. if (fReaderMgr.skippedChar(chCloseSquare) && fReaderMgr.skippedChar(chCloseAngle)) { emitError(XMLErrs::ExtraCloseSquare); } else { emitError(XMLErrs::UnterminatedDOCTYPE); fReaderMgr.skipPastChar(chCloseAngle); } } // If we had an external subset, then we need to deal with that one // next. If we are reusing the validator, then don't scan it. if (hasExtSubset) { InputSource* srcUsed=0; Janitor janSrc(srcUsed); // If we had an internal subset and we're using the cached grammar, it // means that the ignoreCachedDTD is set, so we ignore the cached // grammar if (fUseCachedGrammar && !hasIntSubset) { srcUsed = resolveSystemId(sysId, pubId); if (srcUsed) { janSrc.reset(srcUsed); Grammar* grammar = fGrammarResolver->getGrammar(srcUsed->getSystemId()); if (grammar && grammar->getGrammarType() == Grammar::DTDGrammarType) { fDTDGrammar = (DTDGrammar*) grammar; fGrammar = fDTDGrammar; fValidator->setGrammar(fGrammar); // If we don't report at least the external subset boundaries, // an advanced document handler cannot know when the DTD end, // since we've already sent a doctype decl that indicates there's // there's an external subset. if (fDocTypeHandler) { fDocTypeHandler->startExtSubset(); fDocTypeHandler->endExtSubset(); } return; } } } if (fLoadExternalDTD || fValidate) { // And now create a reader to read this entity XMLReader* reader; if(srcUsed) { reader = fReaderMgr.createReader ( *srcUsed , false , XMLReader::RefFrom_NonLiteral , XMLReader::Type_General , XMLReader::Source_External , fCalculateSrcOfs , fLowWaterMark ); } else { reader = fReaderMgr.createReader ( sysId , pubId , false , XMLReader::RefFrom_NonLiteral , XMLReader::Type_General , XMLReader::Source_External , srcUsed , fCalculateSrcOfs , fLowWaterMark , fDisableDefaultEntityResolution ); janSrc.reset(srcUsed); } // If it failed then throw an exception if (!reader) ThrowXMLwithMemMgr1(RuntimeException, XMLExcepts::Gen_CouldNotOpenDTD, srcUsed ? srcUsed->getSystemId() : sysId, fMemoryManager); if (fToCacheGrammar) { unsigned int stringId = fGrammarResolver->getStringPool()->addOrFind(srcUsed->getSystemId()); const XMLCh* sysIdStr = fGrammarResolver->getStringPool()->getValueForId(stringId); fGrammarResolver->orphanGrammar(XMLUni::fgDTDEntityString); ((XMLDTDDescription*) (fGrammar->getGrammarDescription()))->setSystemId(sysIdStr); fGrammarResolver->putGrammar(fGrammar); } // In order to make the processing work consistently, we have to // make this look like an external entity. So create an entity // decl and fill it in and push it with the reader, as happens // with an external entity. Put a janitor on it to insure it gets // cleaned up. The reader manager does not adopt them. const XMLCh gDTDStr[] = { chLatin_D, chLatin_T, chLatin_D , chNull }; DTDEntityDecl* declDTD = new (fMemoryManager) DTDEntityDecl(gDTDStr, false, fMemoryManager); declDTD->setSystemId(sysId); declDTD->setIsExternal(true); Janitor janDecl(declDTD); // Mark this one as a throw at end reader->setThrowAtEnd(true); // And push it onto the stack, with its pseudo name fReaderMgr.pushReader(reader, declDTD); // Tell it its not in an include section dtdScanner.scanExtSubsetDecl(false, true); } } } bool DGXMLScanner::scanStartTag(bool& gotData) { // Assume we will still have data until proven otherwise. It will only // ever be false if this is the root and its empty. gotData = true; // Get the QName. In this case, we are not doing namespaces, so we just // use it as is and don't have to break it into parts. bool validName = fReaderMgr.getName(fQNameBuf); if (!validName) { if (fQNameBuf.isEmpty()) emitError(XMLErrs::ExpectedElementName); else emitError(XMLErrs::InvalidElementName, fQNameBuf.getRawBuffer()); fReaderMgr.skipToChar(chOpenAngle); return false; } // Assume it won't be an empty tag bool isEmpty = false; // See if its the root element const bool isRoot = fElemStack.isEmpty(); // Lets try to look up the element in the validator's element decl pool // We can pass bogus values for the URI id and the base name. We know that // this can only be called if we are doing a DTD style validator and that // he will only look at the QName. // // We *do not* tell him to fault in a decl if he does not find one - NG. bool wasAdded = false; const XMLCh* qnameRawBuf = fQNameBuf.getRawBuffer(); XMLElementDecl* elemDecl = fGrammar->getElemDecl ( fEmptyNamespaceId , 0 , qnameRawBuf , Grammar::TOP_LEVEL_SCOPE ); // look in the undeclared pool: if(!elemDecl) { elemDecl = fDTDElemNonDeclPool->getByKey(qnameRawBuf); } if(!elemDecl) { wasAdded = true; elemDecl = new (fMemoryManager) DTDElementDecl ( qnameRawBuf , fEmptyNamespaceId , DTDElementDecl::Any , fMemoryManager ); elemDecl->setId(fDTDElemNonDeclPool->put((DTDElementDecl*)elemDecl)); } if (fValidate) { if (wasAdded) { // This is to tell the reuse Validator that this element was // faulted-in, was not an element in the validator pool originally elemDecl->setCreateReason(XMLElementDecl::JustFaultIn); fValidator->emitError ( XMLValid::ElementNotDefined , qnameRawBuf ); } // If its not marked declared, then emit an error else if (!elemDecl->isDeclared()) { fValidator->emitError ( XMLValid::ElementNotDefined , qnameRawBuf ); } fValidator->validateElement(elemDecl); } // Expand the element stack and add the new element fElemStack.addLevel(elemDecl, fReaderMgr.getCurrentReaderNum()); // If this is the first element and we are validating, check the root // element. if (isRoot) { fRootGrammar = fGrammar; if (fValidate) { // If a DocType exists, then check if it matches the root name there. if (fRootElemName && !XMLString::equals(qnameRawBuf, fRootElemName)) fValidator->emitError(XMLValid::RootElemNotLikeDocType); } } else if (fValidate) { // If the element stack is not empty, then add this element as a // child of the previous top element. If its empty, this is the root // elem and is not the child of anything. fElemStack.addChild(elemDecl->getElementName(), true); } // Skip any whitespace after the name fReaderMgr.skipPastSpaces(); // We loop until we either see a /> or >, handling attribute/value // pairs until we get there. XMLSize_t attCount = 0; XMLSize_t curAttListSize = fAttrList->size(); wasAdded = false; fElemCount++; while (true) { // And get the next non-space character XMLCh nextCh = fReaderMgr.peekNextChar(); // If the next character is not a slash or closed angle bracket, // then it must be whitespace, since whitespace is required // between the end of the last attribute and the name of the next // one. if (attCount) { if ((nextCh != chForwardSlash) && (nextCh != chCloseAngle)) { if (fReaderMgr.getCurrentReader()->isWhitespace(nextCh)) { // Ok, skip by them and peek another char fReaderMgr.skipPastSpaces(); nextCh = fReaderMgr.peekNextChar(); } else { // Emit the error but keep on going emitError(XMLErrs::ExpectedWhitespace); } } } // Ok, here we first check for any of the special case characters. // If its not one, then we do the normal case processing, which // assumes that we've hit an attribute value, Otherwise, we do all // the special case checks. if (!fReaderMgr.getCurrentReader()->isSpecialStartTagChar(nextCh)) { // Assume its going to be an attribute, so get a name from // the input. validName = fReaderMgr.getName(fAttNameBuf); if (!validName) { if (fAttNameBuf.isEmpty()) emitError(XMLErrs::ExpectedAttrName); else emitError(XMLErrs::InvalidAttrName, fAttNameBuf.getRawBuffer()); fReaderMgr.skipPastChar(chCloseAngle); return false; } // And next must be an equal sign if (!scanEq()) { static const XMLCh tmpList[] = { chSingleQuote, chDoubleQuote, chCloseAngle , chOpenAngle, chForwardSlash, chNull }; emitError(XMLErrs::ExpectedEqSign); // Try to sync back up by skipping forward until we either // hit something meaningful. const XMLCh chFound = fReaderMgr.skipUntilInOrWS(tmpList); if ((chFound == chCloseAngle) || (chFound == chForwardSlash)) { // Jump back to top for normal processing of these continue; } else if ((chFound == chSingleQuote) || (chFound == chDoubleQuote) || fReaderMgr.getCurrentReader()->isWhitespace(chFound)) { // Just fall through assuming that the value is to follow } else if (chFound == chOpenAngle) { // Assume a malformed tag and that new one is starting emitError(XMLErrs::UnterminatedStartTag, elemDecl->getFullName()); return false; } else { // Something went really wrong return false; } } // See if this attribute is declared for this element. If we are // not validating of course it will not be at first, but we will // fault it into the pool (to avoid lots of redundant errors.) XMLCh * namePtr = fAttNameBuf.getRawBuffer(); XMLAttDef* attDef = ((DTDElementDecl *)elemDecl)->getAttDef(namePtr); // Skip any whitespace before the value and then scan the att // value. This will come back normalized with entity refs and // char refs expanded. fReaderMgr.skipPastSpaces(); if (!scanAttValue(attDef, namePtr, fAttValueBuf)) { static const XMLCh tmpList[] = { chCloseAngle, chOpenAngle, chForwardSlash, chNull }; emitError(XMLErrs::ExpectedAttrValue); // It failed, so lets try to get synced back up. We skip // forward until we find some whitespace or one of the // chars in our list. const XMLCh chFound = fReaderMgr.skipUntilInOrWS(tmpList); if ((chFound == chCloseAngle) || (chFound == chForwardSlash) || fReaderMgr.getCurrentReader()->isWhitespace(chFound)) { // Just fall through and process this attribute, though // the value will be "". } else if (chFound == chOpenAngle) { // Assume a malformed tag and that new one is starting emitError(XMLErrs::UnterminatedStartTag, elemDecl->getFullName()); return false; } else { // Something went really wrong return false; } } // Add this attribute to the attribute list that we use to // pass them to the handler. We reuse its existing elements // but expand it as required. // Note that we want to this first since this will // make a copy of the namePtr; we can then make use of // that copy in the hashtable lookup that checks // for duplicates. This will mean we may have to update // the type of the XMLAttr later. XMLAttr* curAtt; const XMLCh* attrValue = fAttValueBuf.getRawBuffer(); if (attCount >= curAttListSize) { curAtt = new (fMemoryManager) XMLAttr(fMemoryManager); fAttrList->addElement(curAtt); } else { curAtt = fAttrList->elementAt(attCount); } curAtt->setSpecified(true); // NO NAMESPACE CODE { curAtt->set( 0, namePtr, XMLUni::fgZeroLenString, XMLUni::fgZeroLenString , (attDef)?attDef->getType():XMLAttDef::CData ); // now need to prepare for duplicate detection if (attDef) { unsigned int *curCountPtr = fAttDefRegistry->get(attDef); if (!curCountPtr) { curCountPtr = getNewUIntPtr(); *curCountPtr = fElemCount; fAttDefRegistry->put(attDef, curCountPtr); } else if (*curCountPtr < fElemCount) { *curCountPtr = fElemCount; } else { emitError( XMLErrs::AttrAlreadyUsedInSTag , attDef->getFullName(), elemDecl->getFullName() ); } } else { // reset namePtr so it refers to newly-allocated memory namePtr = (XMLCh *)curAtt->getQName(); if (!fUndeclaredAttrRegistry->putIfNotPresent(namePtr, 0)) { emitError( XMLErrs::AttrAlreadyUsedInSTag , namePtr, elemDecl->getFullName() ); } } } if (fValidate) { if (attDef) { // Let the validator pass judgement on the attribute value fValidator->validateAttrValue( attDef, fAttValueBuf.getRawBuffer(), false, elemDecl ); } else { fValidator->emitError ( XMLValid::AttNotDefinedForElement , fAttNameBuf.getRawBuffer(), qnameRawBuf ); } } // must set the newly-minted value on the XMLAttr: curAtt->setValue(attrValue); attCount++; // And jump back to the top of the loop continue; } // It was some special case character so do all of the checks and // deal with it. if (!nextCh) ThrowXMLwithMemMgr(UnexpectedEOFException, XMLExcepts::Gen_UnexpectedEOF, fMemoryManager); if (nextCh == chForwardSlash) { fReaderMgr.getNextChar(); isEmpty = true; if (!fReaderMgr.skippedChar(chCloseAngle)) emitError(XMLErrs::UnterminatedStartTag, elemDecl->getFullName()); break; } else if (nextCh == chCloseAngle) { fReaderMgr.getNextChar(); break; } else if (nextCh == chOpenAngle) { // Check for this one specially, since its going to be common // and it is kind of auto-recovering since we've already hit the // next open bracket, which is what we would have seeked to (and // skipped this whole tag.) emitError(XMLErrs::UnterminatedStartTag, elemDecl->getFullName()); break; } else if ((nextCh == chSingleQuote) || (nextCh == chDoubleQuote)) { // Check for this one specially, which is probably a missing // attribute name, e.g. ="value". Just issue expected name // error and eat the quoted string, then jump back to the // top again. emitError(XMLErrs::ExpectedAttrName); fReaderMgr.getNextChar(); fReaderMgr.skipQuotedString(nextCh); fReaderMgr.skipPastSpaces(); continue; } } if(attCount) { // clean up after ourselves: // clear the map used to detect duplicate attributes fUndeclaredAttrRegistry->removeAll(); } // Now lets get the fAttrList filled in. This involves faulting in any // defaulted and fixed attributes and normalizing the values of any that // we got explicitly. // // We update the attCount value with the total number of attributes, but // it goes in with the number of values we got during the raw scan of // explictly provided attrs above. attCount = buildAttList(attCount, elemDecl, *fAttrList); // If we have a document handler, then tell it about this start tag. We // don't have any URI id to send along, so send fEmptyNamespaceId. We also do not send // any prefix since its just one big name if we are not doing namespaces. unsigned int uriId = fEmptyNamespaceId; if (fDocHandler) { fDocHandler->startElement ( *elemDecl , uriId , 0 , *fAttrList , attCount , isEmpty , isRoot ); } // If empty, validate content right now if we are validating and then // pop the element stack top. Else, we have to update the current stack // top's namespace mapping elements. if (isEmpty) { // If validating, then insure that its legal to have no content if (fValidate) { XMLSize_t failure; bool res = fValidator->checkContent(elemDecl, 0, 0, &failure); if (!res) { fValidator->emitError ( XMLValid::ElementNotValidForContent , qnameRawBuf , elemDecl->getFormattedContentModel() ); } } // Pop the element stack back off since it'll never be used now fElemStack.popTop(); // If the elem stack is empty, then it was an empty root if (isRoot) gotData = false; } return true; } bool DGXMLScanner::scanStartTagNS(bool& gotData) { // Assume we will still have data until proven otherwise. It will only // ever be false if this is the root and its empty. gotData = true; // Get the QName. In this case, we are not doing namespaces, so we just // use it as is and don't have to break it into parts. int colonPosition; bool validName = fReaderMgr.getQName(fQNameBuf, &colonPosition); if (!validName) { if (fQNameBuf.isEmpty()) emitError(XMLErrs::ExpectedElementName); else emitError(XMLErrs::InvalidElementName, fQNameBuf.getRawBuffer()); fReaderMgr.skipToChar(chOpenAngle); return false; } // Assume it won't be an empty tag bool isEmpty = false; // See if its the root element const bool isRoot = fElemStack.isEmpty(); // Lets try to look up the element in the validator's element decl pool // We can pass bogus values for the URI id and the base name. We know that // this can only be called if we are doing a DTD style validator and that // he will only look at the QName. // // We *do not* tell him to fault in a decl if he does not find one - NG. bool wasAdded = false; const XMLCh* qnameRawBuf = fQNameBuf.getRawBuffer(); XMLElementDecl* elemDecl = fGrammar->getElemDecl ( fEmptyNamespaceId , 0 , qnameRawBuf , Grammar::TOP_LEVEL_SCOPE ); // look in the undeclared pool: if(!elemDecl) { elemDecl = fDTDElemNonDeclPool->getByKey(qnameRawBuf); } if(!elemDecl) { wasAdded = true; elemDecl = new (fMemoryManager) DTDElementDecl ( qnameRawBuf , fEmptyNamespaceId , DTDElementDecl::Any , fMemoryManager ); elemDecl->setId(fDTDElemNonDeclPool->put((DTDElementDecl*)elemDecl)); } if (fValidate) { if (wasAdded) { // This is to tell the reuse Validator that this element was // faulted-in, was not an element in the validator pool originally elemDecl->setCreateReason(XMLElementDecl::JustFaultIn); fValidator->emitError ( XMLValid::ElementNotDefined , qnameRawBuf ); } // If its not marked declared, then emit an error else if (!elemDecl->isDeclared()) { fValidator->emitError ( XMLValid::ElementNotDefined , qnameRawBuf ); } fValidator->validateElement(elemDecl); } // Expand the element stack and add the new element fElemStack.addLevel(elemDecl, fReaderMgr.getCurrentReaderNum()); // If this is the first element and we are validating, check the root // element. if (isRoot) { fRootGrammar = fGrammar; if (fValidate) { // If a DocType exists, then check if it matches the root name there. if (fRootElemName && !XMLString::equals(qnameRawBuf, fRootElemName)) fValidator->emitError(XMLValid::RootElemNotLikeDocType); } } else if (fValidate) { // If the element stack is not empty, then add this element as a // child of the previous top element. If its empty, this is the root // elem and is not the child of anything. fElemStack.addChild(elemDecl->getElementName(), true); } // Skip any whitespace after the name fReaderMgr.skipPastSpaces(); // We loop until we either see a /> or >, handling attribute/value // pairs until we get there. XMLSize_t attCount = 0; XMLSize_t curAttListSize = fAttrList->size(); wasAdded = false; fElemCount++; while (true) { // And get the next non-space character XMLCh nextCh = fReaderMgr.peekNextChar(); // If the next character is not a slash or closed angle bracket, // then it must be whitespace, since whitespace is required // between the end of the last attribute and the name of the next // one. if (attCount) { if ((nextCh != chForwardSlash) && (nextCh != chCloseAngle)) { if (fReaderMgr.getCurrentReader()->isWhitespace(nextCh)) { // Ok, skip by them and peek another char fReaderMgr.skipPastSpaces(); nextCh = fReaderMgr.peekNextChar(); } else { // Emit the error but keep on going emitError(XMLErrs::ExpectedWhitespace); } } } // Ok, here we first check for any of the special case characters. // If its not one, then we do the normal case processing, which // assumes that we've hit an attribute value, Otherwise, we do all // the special case checks. if (!fReaderMgr.getCurrentReader()->isSpecialStartTagChar(nextCh)) { // Assume its going to be an attribute, so get a name from // the input. validName = fReaderMgr.getQName(fAttNameBuf, &colonPosition); if (!validName) { if (fAttNameBuf.isEmpty()) emitError(XMLErrs::ExpectedAttrName); else emitError(XMLErrs::InvalidAttrName, fAttNameBuf.getRawBuffer()); fReaderMgr.skipPastChar(chCloseAngle); return false; } // And next must be an equal sign if (!scanEq()) { static const XMLCh tmpList[] = { chSingleQuote, chDoubleQuote, chCloseAngle , chOpenAngle, chForwardSlash, chNull }; emitError(XMLErrs::ExpectedEqSign); // Try to sync back up by skipping forward until we either // hit something meaningful. const XMLCh chFound = fReaderMgr.skipUntilInOrWS(tmpList); if ((chFound == chCloseAngle) || (chFound == chForwardSlash)) { // Jump back to top for normal processing of these continue; } else if ((chFound == chSingleQuote) || (chFound == chDoubleQuote) || fReaderMgr.getCurrentReader()->isWhitespace(chFound)) { // Just fall through assuming that the value is to follow } else if (chFound == chOpenAngle) { // Assume a malformed tag and that new one is starting emitError(XMLErrs::UnterminatedStartTag, elemDecl->getFullName()); return false; } else { // Something went really wrong return false; } } // See if this attribute is declared for this element. If we are // not validating of course it will not be at first, but we will // fault it into the pool (to avoid lots of redundant errors.) XMLCh * namePtr = fAttNameBuf.getRawBuffer(); XMLAttDef* attDef = ((DTDElementDecl *)elemDecl)->getAttDef(namePtr); // Skip any whitespace before the value and then scan the att // value. This will come back normalized with entity refs and // char refs expanded. fReaderMgr.skipPastSpaces(); if (!scanAttValue(attDef, namePtr, fAttValueBuf)) { static const XMLCh tmpList[] = { chCloseAngle, chOpenAngle, chForwardSlash, chNull }; emitError(XMLErrs::ExpectedAttrValue); // It failed, so lets try to get synced back up. We skip // forward until we find some whitespace or one of the // chars in our list. const XMLCh chFound = fReaderMgr.skipUntilInOrWS(tmpList); if ((chFound == chCloseAngle) || (chFound == chForwardSlash) || fReaderMgr.getCurrentReader()->isWhitespace(chFound)) { // Just fall through and process this attribute, though // the value will be "". } else if (chFound == chOpenAngle) { // Assume a malformed tag and that new one is starting emitError(XMLErrs::UnterminatedStartTag, elemDecl->getFullName()); return false; } else { // Something went really wrong return false; } } // Add this attribute to the attribute list that we use to // pass them to the handler. We reuse its existing elements // but expand it as required. // Note that we want to this first since this will // make a copy of the namePtr; we can then make use of // that copy in the hashtable lookup that checks // for duplicates. This will mean we may have to update // the type of the XMLAttr later. XMLAttr* curAtt; const XMLCh* attrValue = fAttValueBuf.getRawBuffer(); if (attCount >= curAttListSize) { curAtt = new (fMemoryManager) XMLAttr(fMemoryManager); fAttrList->addElement(curAtt); } else { curAtt = fAttrList->elementAt(attCount); } curAtt->setSpecified(true); // DO NAMESPACES { curAtt->set( fEmptyNamespaceId, namePtr, XMLUni::fgZeroLenString , (attDef)? attDef->getType() : XMLAttDef::CData ); // each attribute has the prefix:suffix="value" const XMLCh* attPrefix = curAtt->getPrefix(); const XMLCh* attLocalName = curAtt->getName(); if (attPrefix && *attPrefix) { if (XMLString::equals(attPrefix, XMLUni::fgXMLString)) { curAtt->setURIId(fXMLNamespaceId); } else if (XMLString::equals(attPrefix, XMLUni::fgXMLNSString)) { curAtt->setURIId(fXMLNSNamespaceId); updateNSMap(attPrefix, attLocalName, attrValue); } else { fAttrNSList->addElement(curAtt); } } else if (XMLString::equals(XMLUni::fgXMLNSString, attLocalName)) { updateNSMap(attPrefix, XMLUni::fgZeroLenString, attrValue); } // NOTE: duplicate attribute check will be done, when we map // namespaces to all attributes if (attDef) { unsigned int *curCountPtr = fAttDefRegistry->get(attDef); if (!curCountPtr) { curCountPtr = getNewUIntPtr(); *curCountPtr = fElemCount; fAttDefRegistry->put(attDef, curCountPtr); } else if (*curCountPtr < fElemCount) { *curCountPtr = fElemCount; } } } if (fValidate) { if (attDef) { // Let the validator pass judgement on the attribute value fValidator->validateAttrValue( attDef, fAttValueBuf.getRawBuffer(), false, elemDecl ); } else { fValidator->emitError ( XMLValid::AttNotDefinedForElement , fAttNameBuf.getRawBuffer(), qnameRawBuf ); } } // must set the newly-minted value on the XMLAttr: curAtt->setValue(attrValue); attCount++; // And jump back to the top of the loop continue; } // It was some special case character so do all of the checks and // deal with it. if (!nextCh) ThrowXMLwithMemMgr(UnexpectedEOFException, XMLExcepts::Gen_UnexpectedEOF, fMemoryManager); if (nextCh == chForwardSlash) { fReaderMgr.getNextChar(); isEmpty = true; if (!fReaderMgr.skippedChar(chCloseAngle)) emitError(XMLErrs::UnterminatedStartTag, elemDecl->getFullName()); break; } else if (nextCh == chCloseAngle) { fReaderMgr.getNextChar(); break; } else if (nextCh == chOpenAngle) { // Check for this one specially, since its going to be common // and it is kind of auto-recovering since we've already hit the // next open bracket, which is what we would have seeked to (and // skipped this whole tag.) emitError(XMLErrs::UnterminatedStartTag, elemDecl->getFullName()); break; } else if ((nextCh == chSingleQuote) || (nextCh == chDoubleQuote)) { // Check for this one specially, which is probably a missing // attribute name, e.g. ="value". Just issue expected name // error and eat the quoted string, then jump back to the // top again. emitError(XMLErrs::ExpectedAttrName); fReaderMgr.getNextChar(); fReaderMgr.skipQuotedString(nextCh); fReaderMgr.skipPastSpaces(); continue; } } // Make an initial pass through the list and find any xmlns attributes. if (attCount) scanAttrListforNameSpaces(fAttrList, attCount, elemDecl); if(attCount) { // clean up after ourselves: // clear the map used to detect duplicate attributes fUndeclaredAttrRegistry->removeAll(); } // Now lets get the fAttrList filled in. This involves faulting in any // defaulted and fixed attributes and normalizing the values of any that // we got explicitly. // // We update the attCount value with the total number of attributes, but // it goes in with the number of values we got during the raw scan of // explictly provided attrs above. attCount = buildAttList(attCount, elemDecl, *fAttrList); // If we have a document handler, then tell it about this start tag. We // don't have any URI id to send along, so send fEmptyNamespaceId. We also do not send // any prefix since its just one big name if we are not doing namespaces. if (fDocHandler) { unsigned int uriId = resolvePrefix ( elemDecl->getElementName()->getPrefix() , ElemStack::Mode_Element ); fDocHandler->startElement ( *elemDecl , uriId , elemDecl->getElementName()->getPrefix() , *fAttrList , attCount , isEmpty , isRoot ); } // If empty, validate content right now if we are validating and then // pop the element stack top. Else, we have to update the current stack // top's namespace mapping elements. if (isEmpty) { // If validating, then insure that its legal to have no content if (fValidate) { XMLSize_t failure; bool res = fValidator->checkContent(elemDecl, 0, 0, &failure); if (!res) { fValidator->emitError ( XMLValid::ElementNotValidForContent , qnameRawBuf , elemDecl->getFormattedContentModel() ); } } // Pop the element stack back off since it'll never be used now fElemStack.popTop(); // If the elem stack is empty, then it was an empty root if (isRoot) gotData = false; } return true; } // --------------------------------------------------------------------------- // DGXMLScanner: Grammar preparsing // --------------------------------------------------------------------------- Grammar* DGXMLScanner::loadGrammar(const InputSource& src , const short grammarType , const bool toCache) { Grammar* loadedGrammar = 0; ReaderMgrResetType resetReaderMgr(&fReaderMgr, &ReaderMgr::reset); try { fGrammarResolver->cacheGrammarFromParse(false); fGrammarResolver->useCachedGrammarInParse(false); fRootGrammar = 0; if (fValScheme == Val_Auto) { fValidate = true; } // Reset some status flags fInException = false; fStandalone = false; fErrorCount = 0; fHasNoDTD = true; if (grammarType == Grammar::DTDGrammarType) { loadedGrammar = loadDTDGrammar(src, toCache); } } // NOTE: // // In all of the error processing below, the emitError() call MUST come // before the flush of the reader mgr, or it will fail because it tries // to find out the position in the XML source of the error. catch(const XMLErrs::Codes) { // This is a 'first failure' exception, so fall through } catch(const XMLValid::Codes) { // This is a 'first fatal error' type exit, so fall through } catch(const XMLException& excToCatch) { // Emit the error and catch any user exception thrown from here. Make // sure in all cases we flush the reader manager. fInException = true; try { if (excToCatch.getErrorType() == XMLErrorReporter::ErrType_Warning) emitError ( XMLErrs::XMLException_Warning , excToCatch.getCode() , excToCatch.getMessage() ); else if (excToCatch.getErrorType() >= XMLErrorReporter::ErrType_Fatal) emitError ( XMLErrs::XMLException_Fatal , excToCatch.getCode() , excToCatch.getMessage() ); else emitError ( XMLErrs::XMLException_Error , excToCatch.getCode() , excToCatch.getMessage() ); } catch(const OutOfMemoryException&) { // This is a special case for out-of-memory // conditions, because resetting the ReaderMgr // can be problematic. resetReaderMgr.release(); throw; } } catch(const OutOfMemoryException&) { // This is a special case for out-of-memory // conditions, because resetting the ReaderMgr // can be problematic. resetReaderMgr.release(); throw; } return loadedGrammar; } Grammar* DGXMLScanner::loadDTDGrammar(const InputSource& src, const bool toCache) { // Reset the validators fDTDValidator->reset(); if (fValidatorFromUser) fValidator->reset(); fDTDGrammar = new (fGrammarPoolMemoryManager) DTDGrammar(fGrammarPoolMemoryManager); fGrammarResolver->putGrammar(fDTDGrammar); fGrammar = fDTDGrammar; fValidator->setGrammar(fGrammar); // And for all installed handlers, send reset events. This gives them // a chance to flush any cached data. if (fDocHandler) fDocHandler->resetDocument(); if (fEntityHandler) fEntityHandler->resetEntities(); if (fErrorReporter) fErrorReporter->resetErrors(); // Clear out the id reference list resetValidationContext(); if (toCache) { unsigned int sysId = fGrammarResolver->getStringPool()->addOrFind(src.getSystemId()); const XMLCh* sysIdStr = fGrammarResolver->getStringPool()->getValueForId(sysId); fGrammarResolver->orphanGrammar(XMLUni::fgDTDEntityString); ((XMLDTDDescription*) (fGrammar->getGrammarDescription()))->setSystemId(sysIdStr); fGrammarResolver->putGrammar(fGrammar); } // Handle the creation of the XML reader object for this input source. // This will provide us with transcoding and basic lexing services. XMLReader* newReader = fReaderMgr.createReader ( src , false , XMLReader::RefFrom_NonLiteral , XMLReader::Type_General , XMLReader::Source_External , fCalculateSrcOfs , fLowWaterMark ); if (!newReader) { if (src.getIssueFatalErrorIfNotFound()) ThrowXMLwithMemMgr1(RuntimeException, XMLExcepts::Scan_CouldNotOpenSource, src.getSystemId(), fMemoryManager); else ThrowXMLwithMemMgr1(RuntimeException, XMLExcepts::Scan_CouldNotOpenSource_Warning, src.getSystemId(), fMemoryManager); } // In order to make the processing work consistently, we have to // make this look like an external entity. So create an entity // decl and fill it in and push it with the reader, as happens // with an external entity. Put a janitor on it to insure it gets // cleaned up. The reader manager does not adopt them. const XMLCh gDTDStr[] = { chLatin_D, chLatin_T, chLatin_D , chNull }; DTDEntityDecl* declDTD = new (fMemoryManager) DTDEntityDecl(gDTDStr, false, fMemoryManager); declDTD->setSystemId(src.getSystemId()); declDTD->setIsExternal(true); Janitor janDecl(declDTD); // Mark this one as a throw at end newReader->setThrowAtEnd(true); // And push it onto the stack, with its pseudo name fReaderMgr.pushReader(newReader, declDTD); // If we have a doc type handler and advanced callbacks are enabled, // call the doctype event. if (fDocTypeHandler) { // Create a dummy root DTDElementDecl* rootDecl = new (fGrammarPoolMemoryManager) DTDElementDecl ( gDTDStr , fEmptyNamespaceId , DTDElementDecl::Any , fGrammarPoolMemoryManager ); rootDecl->setCreateReason(DTDElementDecl::AsRootElem); rootDecl->setExternalElemDeclaration(true); Janitor janSrc(rootDecl); fDocTypeHandler->doctypeDecl(*rootDecl, src.getPublicId(), src.getSystemId(), false, true); } // Create DTDScanner DTDScanner dtdScanner ( (DTDGrammar*)fGrammar , fDocTypeHandler , fGrammarPoolMemoryManager , fMemoryManager ); dtdScanner.setScannerInfo(this, &fReaderMgr, &fBufMgr); // Tell it its not in an include section dtdScanner.scanExtSubsetDecl(false, true); if (fValidate) { // validate the DTD scan so far fValidator->preContentValidation(false, true); } if (toCache) fGrammarResolver->cacheGrammars(); return fDTDGrammar; } // --------------------------------------------------------------------------- // DGXMLScanner: Private helper methods // --------------------------------------------------------------------------- // This method handles the common initialization, to avoid having to do // it redundantly in multiple constructors. void DGXMLScanner::commonInit() { // And we need one for the raw attribute scan. This just stores key/ // value string pairs (prior to any processing.) fAttrNSList = new (fMemoryManager) ValueVectorOf(8, fMemoryManager); // Create the Validator and init them fDTDValidator = new (fMemoryManager) DTDValidator(); initValidator(fDTDValidator); fDTDElemNonDeclPool = new (fMemoryManager) NameIdPool(29, 128, fMemoryManager); fAttDefRegistry = new (fMemoryManager) RefHashTableOf ( 131, false, fMemoryManager ); fUndeclaredAttrRegistry = new (fMemoryManager) Hash2KeysSetOf(7, fMemoryManager); if (fValidator) { if (!fValidator->handlesDTD()) ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Gen_NoDTDValidator, fMemoryManager); } else { fValidator = fDTDValidator; } } void DGXMLScanner::cleanUp() { delete fAttrNSList; delete fDTDValidator; delete fDTDElemNonDeclPool; delete fAttDefRegistry; delete fUndeclaredAttrRegistry; } // This method is called from scanStartTagNS() to build up the list of // XMLAttr objects that will be passed out in the start tag callout. We // get the key/value pairs from the raw scan of explicitly provided attrs, // which have not been normalized. And we get the element declaration from // which we will get any defaulted or fixed attribute defs and add those // in as well. XMLSize_t DGXMLScanner::buildAttList(const XMLSize_t attCount , XMLElementDecl* elemDecl , RefVectorOf& toFill) { // Ask the element to clear the 'provided' flag on all of the att defs // that it owns, and to return us a boolean indicating whether it has // any defs. const bool hasDefs = elemDecl->hasAttDefs(); // If there are no expliclitily provided attributes and there are no // defined attributes for the element, the we don't have anything to do. // So just return zero in this case. if (!hasDefs && !attCount) return 0; // Keep up with how many attrs we end up with total XMLSize_t retCount = attCount; // And get the current size of the output vector. This lets us use // existing elements until we fill it, then start adding new ones. const XMLSize_t curAttListSize = toFill.size(); // Ok, so lets get an enumerator for the attributes of this element // and run through them for well formedness and validity checks. But // make sure that we had any attributes before we do it, since the list // would have have gotten faulted in anyway. if (hasDefs) { XMLAttDefList& attDefList = elemDecl->getAttDefList(); for(XMLSize_t i=0; iget(&curDef); if (!attCountPtr || *attCountPtr < fElemCount) { // did not occur const XMLAttDef::DefAttTypes defType = curDef.getDefaultType(); if (fValidate) { // If we are validating and its required, then an error if (defType == XMLAttDef::Required) { fValidator->emitError ( XMLValid::RequiredAttrNotProvided , curDef.getFullName() ); } else if ((defType == XMLAttDef::Default) || (defType == XMLAttDef::Fixed) ) { if (fStandalone && curDef.isExternal()) { // XML 1.0 Section 2.9 // Document is standalone, so attributes must not be defaulted. fValidator->emitError(XMLValid::NoDefAttForStandalone, curDef.getFullName(), elemDecl->getFullName()); } } } // Fault in the value if needed, and bump the att count if ((defType == XMLAttDef::Default) || (defType == XMLAttDef::Fixed)) { // Let the validator pass judgement on the attribute value if (fValidate) { fValidator->validateAttrValue ( &curDef , curDef.getValue() , false , elemDecl ); } XMLAttr* curAtt; if (retCount >= curAttListSize) { if (fDoNamespaces) { curAtt = new (fMemoryManager) XMLAttr ( fEmptyNamespaceId , curDef.getFullName() , curDef.getValue() , curDef.getType() , false , fMemoryManager ); } else { curAtt = new (fMemoryManager) XMLAttr ( 0 , curDef.getFullName() , XMLUni::fgZeroLenString , curDef.getValue() , curDef.getType() , false , fMemoryManager ); } fAttrList->addElement(curAtt); } else { curAtt = fAttrList->elementAt(retCount); if (fDoNamespaces) { curAtt->set ( fEmptyNamespaceId , curDef.getFullName() , curDef.getValue() , curDef.getType() ); } else { curAtt->set ( 0 , curDef.getFullName() , XMLUni::fgZeroLenString , curDef.getValue() , curDef.getType() ); } curAtt->setSpecified(false); } if (fDoNamespaces) { // Map the new attribute's prefix to a URI id and store // that in the attribute object. const XMLCh* attPrefix = curAtt->getPrefix(); if (attPrefix && *attPrefix) { curAtt->setURIId ( resolvePrefix(attPrefix, ElemStack::Mode_Attribute) ); } } retCount++; } } } } return retCount; } // This method will reset the scanner data structures, and related plugged // in stuff, for a new scan session. We get the input source for the primary // XML entity, create the reader for it, and push it on the stack so that // upon successful return from here we are ready to go. void DGXMLScanner::scanReset(const InputSource& src) { // This call implicitly tells us that we are going to reuse the scanner // if it was previously used. So tell the validator to reset itself. // // But, if the fUseCacheGrammar flag is set, then don't reset it. // // NOTE: The ReaderMgr is flushed on the way out, because that is // required to insure that files are closed. fGrammarResolver->cacheGrammarFromParse(fToCacheGrammar); fGrammarResolver->useCachedGrammarInParse(fUseCachedGrammar); fDTDGrammar = new (fGrammarPoolMemoryManager) DTDGrammar(fGrammarPoolMemoryManager); fGrammarResolver->putGrammar(fDTDGrammar); fGrammar = fDTDGrammar; fRootGrammar = 0; fValidator->setGrammar(fGrammar); // Reset validation fValidate = (fValScheme == Val_Always) ? true : false; // And for all installed handlers, send reset events. This gives them // a chance to flush any cached data. if (fDocHandler) fDocHandler->resetDocument(); if (fEntityHandler) fEntityHandler->resetEntities(); if (fErrorReporter) fErrorReporter->resetErrors(); // Clear out the id reference list resetValidationContext(); // Reset the Root Element Name fMemoryManager->deallocate(fRootElemName);//delete [] fRootElemName; fRootElemName = 0; // Reset the element stack, and give it the latest ids for the special // URIs it has to know about. fElemStack.reset ( fEmptyNamespaceId , fUnknownNamespaceId , fXMLNamespaceId , fXMLNSNamespaceId ); // Reset some status flags fInException = false; fStandalone = false; fErrorCount = 0; fHasNoDTD = true; // Reset the validators fDTDValidator->reset(); fDTDValidator->setErrorReporter(fErrorReporter); if (fValidatorFromUser) fValidator->reset(); // Handle the creation of the XML reader object for this input source. // This will provide us with transcoding and basic lexing services. XMLReader* newReader = fReaderMgr.createReader ( src , true , XMLReader::RefFrom_NonLiteral , XMLReader::Type_General , XMLReader::Source_External , fCalculateSrcOfs , fLowWaterMark ); if (!newReader) { if (src.getIssueFatalErrorIfNotFound()) ThrowXMLwithMemMgr1(RuntimeException, XMLExcepts::Scan_CouldNotOpenSource, src.getSystemId(), fMemoryManager); else ThrowXMLwithMemMgr1(RuntimeException, XMLExcepts::Scan_CouldNotOpenSource_Warning, src.getSystemId(), fMemoryManager); } // Push this read onto the reader manager fReaderMgr.pushReader(newReader, 0); // and reset security-related things if necessary: if(fSecurityManager != 0) { fEntityExpansionLimit = fSecurityManager->getEntityExpansionLimit(); fEntityExpansionCount = 0; } if(fUIntPoolRowTotal >= 32) { // 8 KB tied up with validating attributes... fAttDefRegistry->removeAll(); recreateUIntPool(); } else { // note that this will implicitly reset the values of the hashtables, // though their buckets will still be tied up resetUIntPool(); } fUndeclaredAttrRegistry->removeAll(); fAttrNSList->removeAllElements(); } // This method is called between markup in content. It scans for character // data that is sent to the document handler. It watches for any markup // characters that would indicate that the character data has ended. It also // handles expansion of general and character entities. // // sendData() is a local static helper for this method which handles some // code that must be done in three different places here. void DGXMLScanner::sendCharData(XMLBuffer& toSend) { // If no data in the buffer, then nothing to do if (toSend.isEmpty()) return; // We do different things according to whether we are validating or // not. If not, its always just characters; else, it depends on the // current element's content model. if (fValidate) { // Get the raw data we need for the callback const XMLCh* const rawBuf = toSend.getRawBuffer(); const XMLSize_t len = toSend.getLen(); // And see if the current element is a 'Children' style content model const ElemStack::StackElem* topElem = fElemStack.topElement(); // Get the character data opts for the current element XMLElementDecl::CharDataOpts charOpts = topElem->fThisElement->getCharDataOpts(); if (charOpts == XMLElementDecl::NoCharData) { // They definitely cannot handle any type of char data fValidator->emitError(XMLValid::NoCharDataInCM); } else if (fReaderMgr.getCurrentReader()->isAllSpaces(rawBuf, len)) { // Its all spaces. So, if they can take spaces, then send it // as ignorable whitespace. If they can handle any char data // send it as characters. if (charOpts == XMLElementDecl::SpacesOk) { if (fDocHandler) fDocHandler->ignorableWhitespace(rawBuf, len, false); } else if (charOpts == XMLElementDecl::AllCharData) { if (fDocHandler) fDocHandler->docCharacters(rawBuf, len, false); } } else { // If they can take any char data, then send it. Otherwise, they // can only handle whitespace and can't handle this stuff so // issue an error. if (charOpts == XMLElementDecl::AllCharData) { if (fDocHandler) fDocHandler->docCharacters(rawBuf, len, false); } else { fValidator->emitError(XMLValid::NoCharDataInCM); } } } else { // Always assume its just char data if not validating if (fDocHandler) fDocHandler->docCharacters(toSend.getRawBuffer(), toSend.getLen(), false); } // Reset buffer toSend.reset(); } // This method is called with a key/value string pair that represents an // xmlns="yyy" or xmlns:xxx="yyy" attribute. This method will update the // current top of the element stack based on this data. We know that when // we get here, that it is one of these forms, so we don't bother confirming // it. // // But we have to ensure // 1. xxx is not xmlns // 2. if xxx is xml, then yyy must match XMLUni::fgXMLURIName, and vice versa // 3. yyy is not XMLUni::fgXMLNSURIName // 4. if xxx is not null, then yyy cannot be an empty string. void DGXMLScanner::updateNSMap(const XMLCh* const attrPrefix , const XMLCh* const attrLocalName , const XMLCh* const attrValue) { // We either have the default prefix (""), or we point it into the attr // name parameter. Note that the xmlns is not the prefix we care about // here. To us, the 'prefix' is really the local part of the attrName // parameter. // // Check 1. xxx is not xmlns // 2. if xxx is xml, then yyy must match XMLUni::fgXMLURIName, and vice versa // 3. yyy is not XMLUni::fgXMLNSURIName // 4. if xxx is not null, then yyy cannot be an empty string. if (attrPrefix && *attrPrefix) { if (XMLString::equals(attrLocalName, XMLUni::fgXMLNSString)) emitError(XMLErrs::NoUseOfxmlnsAsPrefix); else if (XMLString::equals(attrLocalName, XMLUni::fgXMLString)) { if (!XMLString::equals(attrValue, XMLUni::fgXMLURIName)) emitError(XMLErrs::PrefixXMLNotMatchXMLURI); } if (!attrValue) emitError(XMLErrs::NoEmptyStrNamespace, attrLocalName); else if(!*attrValue && fXMLVersion == XMLReader::XMLV1_0) emitError(XMLErrs::NoEmptyStrNamespace, attrLocalName); } if (XMLString::equals(attrValue, XMLUni::fgXMLNSURIName)) emitError(XMLErrs::NoUseOfxmlnsURI); else if (XMLString::equals(attrValue, XMLUni::fgXMLURIName)) { if (!XMLString::equals(attrLocalName, XMLUni::fgXMLString)) emitError(XMLErrs::XMLURINotMatchXMLPrefix); } // Ok, we have to get the unique id for the attribute value, which is the // URI that this value should be mapped to. The validator has the // namespace string pool, so we ask him to find or add this new one. Then // we ask the element stack to add this prefix to URI Id mapping. fElemStack.addPrefix ( attrLocalName , fURIStringPool->addOrFind(attrValue) ); } void DGXMLScanner::scanAttrListforNameSpaces(RefVectorOf* theAttrList, XMLSize_t attCount, XMLElementDecl* elemDecl) { // Map prefixes to uris for (XMLSize_t i=0; i < fAttrNSList->size(); i++) { XMLAttr* providedAttr = fAttrNSList->elementAt(i); providedAttr->setURIId( resolvePrefix(providedAttr->getPrefix(), ElemStack::Mode_Attribute) ); } fAttrNSList->removeAllElements(); // Decide if to use hash table to do duplicate checking bool toUseHashTable = false; setAttrDupChkRegistry(attCount, toUseHashTable); for (XMLSize_t index = 0; index < attCount; index++) { // check for duplicate namespace attributes: // by checking for qualified names with the same local part and with prefixes // which have been bound to namespace names that are identical. XMLAttr* curAttr = theAttrList->elementAt(index); if (!toUseHashTable) { XMLAttr* loopAttr; for (XMLSize_t attrIndex=0; attrIndex < index; attrIndex++) { loopAttr = theAttrList->elementAt(attrIndex); if (loopAttr->getURIId() == curAttr->getURIId() && XMLString::equals(loopAttr->getName(), curAttr->getName())) { emitError( XMLErrs::AttrAlreadyUsedInSTag, curAttr->getName() , elemDecl->getFullName() ); } } } else { if (fAttrDupChkRegistry->containsKey((void*)curAttr->getName(), curAttr->getURIId())) { emitError( XMLErrs::AttrAlreadyUsedInSTag , curAttr->getName(), elemDecl->getFullName() ); } fAttrDupChkRegistry->put((void*)curAttr->getName(), curAttr->getURIId(), curAttr); } } } InputSource* DGXMLScanner::resolveSystemId(const XMLCh* const sysId ,const XMLCh* const pubId) { //Normalize sysId XMLBufBid nnSys(&fBufMgr); XMLBuffer& normalizedSysId = nnSys.getBuffer(); XMLString::removeChar(sysId, 0xFFFF, normalizedSysId); const XMLCh* normalizedURI = normalizedSysId.getRawBuffer(); // Create a buffer for expanding the normalized system id XMLBufBid bbSys(&fBufMgr); XMLBuffer& expSysId = bbSys.getBuffer(); // Allow the entity handler to expand the system id if they choose // to do so. InputSource* srcToFill = 0; if (fEntityHandler) { if (!fEntityHandler->expandSystemId(normalizedURI, expSysId)) expSysId.set(normalizedURI); ReaderMgr::LastExtEntityInfo lastInfo; fReaderMgr.getLastExtEntityInfo(lastInfo); XMLResourceIdentifier resourceIdentifier(XMLResourceIdentifier::ExternalEntity, expSysId.getRawBuffer(), 0, pubId, lastInfo.systemId, &fReaderMgr); srcToFill = fEntityHandler->resolveEntity(&resourceIdentifier); } else { expSysId.set(normalizedURI); } // If they didn't create a source via the entity handler, then we // have to create one on our own. if (!srcToFill) { if (fDisableDefaultEntityResolution) return srcToFill; ReaderMgr::LastExtEntityInfo lastInfo; fReaderMgr.getLastExtEntityInfo(lastInfo); XMLURL urlTmp(fMemoryManager); if ((!urlTmp.setURL(lastInfo.systemId, expSysId.getRawBuffer(), urlTmp)) || (urlTmp.isRelative())) { if (!fStandardUriConformant) { XMLBufBid ddSys(&fBufMgr); XMLBuffer& resolvedSysId = ddSys.getBuffer(); XMLUri::normalizeURI(expSysId.getRawBuffer(), resolvedSysId); srcToFill = new (fMemoryManager) LocalFileInputSource ( lastInfo.systemId , resolvedSysId.getRawBuffer() , fMemoryManager ); } else ThrowXMLwithMemMgr(MalformedURLException, XMLExcepts::URL_MalformedURL, fMemoryManager); } else { if (fStandardUriConformant && urlTmp.hasInvalidChar()) ThrowXMLwithMemMgr(MalformedURLException, XMLExcepts::URL_MalformedURL, fMemoryManager); srcToFill = new (fMemoryManager) URLInputSource(urlTmp, fMemoryManager); } } return srcToFill; } // --------------------------------------------------------------------------- // DGXMLScanner: Private parsing methods // --------------------------------------------------------------------------- bool DGXMLScanner::scanAttValue( const XMLAttDef* const attDef , const XMLCh *const attrName , XMLBuffer& toFill) { enum States { InWhitespace , InContent }; // Get the type and name const XMLAttDef::AttTypes type = (attDef) ?attDef->getType() :XMLAttDef::CData; // Reset the target buffer toFill.reset(); // Get the next char which must be a single or double quote XMLCh quoteCh; if (!fReaderMgr.skipIfQuote(quoteCh)) return false; // We have to get the current reader because we have to ignore closing // quotes until we hit the same reader again. const XMLSize_t curReader = fReaderMgr.getCurrentReaderNum(); // Get attribute def - to check to see if it's declared externally or not bool isAttExternal = (attDef) ?attDef->isExternal() :false; // Loop until we get the attribute value. Note that we use a double // loop here to avoid the setup/teardown overhead of the exception // handler on every round. XMLCh nextCh; XMLCh secondCh = 0; States curState = InContent; bool firstNonWS = false; bool gotLeadingSurrogate = false; bool escaped; while (true) { try { while(true) { nextCh = fReaderMgr.getNextChar(); if (!nextCh) ThrowXMLwithMemMgr(UnexpectedEOFException, XMLExcepts::Gen_UnexpectedEOF, fMemoryManager); // Check for our ending quote in the same entity if (nextCh == quoteCh) { if (curReader == fReaderMgr.getCurrentReaderNum()) return true; // Watch for spillover into a previous entity if (curReader > fReaderMgr.getCurrentReaderNum()) { emitError(XMLErrs::PartialMarkupInEntity); return false; } } // Check for an entity ref now, before we let it affect our // whitespace normalization logic below. We ignore the empty flag // in this one. escaped = false; if (nextCh == chAmpersand) { if (scanEntityRef(true, nextCh, secondCh, escaped) != EntityExp_Returned) { gotLeadingSurrogate = false; continue; } } else if ((nextCh >= 0xD800) && (nextCh <= 0xDBFF)) { // Deal with surrogate pairs // Its a leading surrogate. If we already got one, then // issue an error, else set leading flag to make sure that // we look for a trailing next time. if (gotLeadingSurrogate) emitError(XMLErrs::Expected2ndSurrogateChar); else gotLeadingSurrogate = true; } else { // If its a trailing surrogate, make sure that we are // prepared for that. Else, its just a regular char so make // sure that we were not expected a trailing surrogate. if ((nextCh >= 0xDC00) && (nextCh <= 0xDFFF)) { // Its trailing, so make sure we were expecting it if (!gotLeadingSurrogate) emitError(XMLErrs::Unexpected2ndSurrogateChar); } else { // Its just a char, so make sure we were not expecting a // trailing surrogate. if (gotLeadingSurrogate) emitError(XMLErrs::Expected2ndSurrogateChar); // Its got to at least be a valid XML character if (!fReaderMgr.getCurrentReader()->isXMLChar(nextCh)) { XMLCh tmpBuf[9]; XMLString::binToText ( nextCh , tmpBuf , 8 , 16 , fMemoryManager ); emitError(XMLErrs::InvalidCharacterInAttrValue, attrName, tmpBuf); } } gotLeadingSurrogate = false; } // If its not escaped, then make sure its not a < character, which // is not allowed in attribute values. if (!escaped && (nextCh == chOpenAngle)) emitError(XMLErrs::BracketInAttrValue, attrName); // If the attribute is a CDATA type we do simple replacement of // tabs and new lines with spaces, if the character is not escaped // by way of a char ref. // // Otherwise, we do the standard non-CDATA normalization of // compressing whitespace to single spaces and getting rid of leading // and trailing whitespace. if (type == XMLAttDef::CData) { if (!escaped) { if ((nextCh == 0x09) || (nextCh == 0x0A) || (nextCh == 0x0D)) { // Check Validity Constraint for Standalone document declaration // XML 1.0, Section 2.9 if (fStandalone && fValidate && isAttExternal) { // Can't have a standalone document declaration of "yes" if attribute // values are subject to normalisation fValidator->emitError(XMLValid::NoAttNormForStandalone, attrName); } nextCh = chSpace; } } } else { if (curState == InWhitespace) { if ((escaped && nextCh != chSpace) || !fReaderMgr.getCurrentReader()->isWhitespace(nextCh)) { if (firstNonWS) toFill.append(chSpace); curState = InContent; firstNonWS = true; } else { continue; } } else if (curState == InContent) { if ((nextCh == chSpace) || (fReaderMgr.getCurrentReader()->isWhitespace(nextCh) && !escaped)) { curState = InWhitespace; // Check Validity Constraint for Standalone document declaration // XML 1.0, Section 2.9 if (fStandalone && fValidate && isAttExternal) { if (!firstNonWS || (nextCh != chSpace) || (fReaderMgr.lookingAtSpace())) { // Can't have a standalone document declaration of "yes" if attribute // values are subject to normalisation fValidator->emitError(XMLValid::NoAttNormForStandalone, attrName); } } continue; } firstNonWS = true; } } // Else add it to the buffer toFill.append(nextCh); if (secondCh) { toFill.append(secondCh); secondCh=0; } } } catch(const EndOfEntityException&) { // Just eat it and continue. gotLeadingSurrogate = false; escaped = false; } } return true; } // This method scans a CDATA section. It collects the character into one // of the temp buffers and calls the document handler, if any, with the // characters. It assumes that the fThisElement->getCharDataOpts(); while (true) { const XMLCh nextCh = fReaderMgr.getNextChar(); // Watch for unexpected end of file if (!nextCh) { emitError(XMLErrs::UnterminatedCDATASection); ThrowXMLwithMemMgr(UnexpectedEOFException, XMLExcepts::Gen_UnexpectedEOF, fMemoryManager); } if (fValidate && fStandalone && (fReaderMgr.getCurrentReader()->isWhitespace(nextCh))) { // This document is standalone; this ignorable CDATA whitespace is forbidden. // XML 1.0, Section 2.9 // And see if the current element is a 'Children' style content model if (topElem->fThisElement->isExternal()) { if (charOpts == XMLElementDecl::SpacesOk) // Element Content { // Error - standalone should have a value of "no" as whitespace detected in an // element type with element content whose element declaration was external fValidator->emitError(XMLValid::NoWSForStandalone); } } } // If this is a close square bracket it could be our closing // sequence. if (nextCh == chCloseSquare && fReaderMgr.skippedString(CDataClose)) { // make sure we were not expecting a trailing surrogate. if (gotLeadingSurrogate) emitError(XMLErrs::Expected2ndSurrogateChar); if (fValidate) { if (charOpts != XMLElementDecl::AllCharData) { // They definitely cannot handle any type of char data fValidator->emitError(XMLValid::NoCharDataInCM); } } // If we have a doc handler, call it if (fDocHandler) { fDocHandler->docCharacters ( bbCData.getRawBuffer() , bbCData.getLen() , true ); } // And we are done break; } // Make sure its a valid character. But if we've emitted an error // already, don't bother with the overhead since we've already told // them about it. if (!emittedError) { // Deal with surrogate pairs if ((nextCh >= 0xD800) && (nextCh <= 0xDBFF)) { // Its a leading surrogate. If we already got one, then // issue an error, else set leading flag to make sure that // we look for a trailing next time. if (gotLeadingSurrogate) emitError(XMLErrs::Expected2ndSurrogateChar); else gotLeadingSurrogate = true; } else { // If its a trailing surrogate, make sure that we are // prepared for that. Else, its just a regular char so make // sure that we were not expected a trailing surrogate. if ((nextCh >= 0xDC00) && (nextCh <= 0xDFFF)) { // Its trailing, so make sure we were expecting it if (!gotLeadingSurrogate) emitError(XMLErrs::Unexpected2ndSurrogateChar); } else { // Its just a char, so make sure we were not expecting a // trailing surrogate. if (gotLeadingSurrogate) emitError(XMLErrs::Expected2ndSurrogateChar); // Its got to at least be a valid XML character else if (!fReaderMgr.getCurrentReader()->isXMLChar(nextCh)) { XMLCh tmpBuf[9]; XMLString::binToText ( nextCh , tmpBuf , 8 , 16 , fMemoryManager ); emitError(XMLErrs::InvalidCharacter, tmpBuf); emittedError = true; } } gotLeadingSurrogate = false; } } // Add it to the buffer bbCData.append(nextCh); } } void DGXMLScanner::scanCharData(XMLBuffer& toUse) { // We have to watch for the stupid ]]> sequence, which is illegal in // character data. So this is a little state machine that handles that. enum States { State_Waiting , State_GotOne , State_GotTwo }; // Reset the buffer before we start toUse.reset(); // Turn on the 'throw at end' flag of the reader manager ThrowEOEJanitor jan(&fReaderMgr, true); // In order to be more efficient we have to use kind of a deeply nested // set of blocks here. The outer block puts on a try and catches end of // entity exceptions. The inner loop is the per-character loop. If we // put the try inside the inner loop, it would work but would require // the exception handling code setup/teardown code to be invoked for // each character. XMLCh nextCh; XMLCh secondCh = 0; States curState = State_Waiting; bool escaped = false; bool gotLeadingSurrogate = false; bool notDone = true; while (notDone) { try { while (true) { // Eat through as many plain content characters as possible without // needing special handling. Moving most content characters here, // in this one call, rather than running the overall loop once // per content character, is a speed optimization. if (curState == State_Waiting && !gotLeadingSurrogate) { fReaderMgr.movePlainContentChars(toUse); } // Try to get another char from the source // The code from here on down covers all contengencies, if (!fReaderMgr.getNextCharIfNot(chOpenAngle, nextCh)) { // If we were waiting for a trailing surrogate, its an error if (gotLeadingSurrogate) emitError(XMLErrs::Expected2ndSurrogateChar); notDone = false; break; } // Watch for a reference. Note that the escapement mechanism // is ignored in this content. escaped = false; if (nextCh == chAmpersand) { sendCharData(toUse); // Turn off the throwing at the end of entity during this ThrowEOEJanitor jan(&fReaderMgr, false); if (scanEntityRef(false, nextCh, secondCh, escaped) != EntityExp_Returned) { gotLeadingSurrogate = false; continue; } else { if (escaped && !fElemStack.isEmpty()) fElemStack.setReferenceEscaped(); } } else if ((nextCh >= 0xD800) && (nextCh <= 0xDBFF)) { // Deal with surrogate pairs // Its a leading surrogate. If we already got one, then // issue an error, else set leading flag to make sure that // we look for a trailing next time. if (gotLeadingSurrogate) emitError(XMLErrs::Expected2ndSurrogateChar); else gotLeadingSurrogate = true; } else { // If its a trailing surrogate, make sure that we are // prepared for that. Else, its just a regular char so make // sure that we were not expected a trailing surrogate. if ((nextCh >= 0xDC00) && (nextCh <= 0xDFFF)) { // Its trailing, so make sure we were expecting it if (!gotLeadingSurrogate) emitError(XMLErrs::Unexpected2ndSurrogateChar); } else { // Its just a char, so make sure we were not expecting a // trailing surrogate. if (gotLeadingSurrogate) emitError(XMLErrs::Expected2ndSurrogateChar); // Make sure the returned char is a valid XML char if (!fReaderMgr.getCurrentReader()->isXMLChar(nextCh)) { XMLCh tmpBuf[9]; XMLString::binToText ( nextCh , tmpBuf , 8 , 16 , fMemoryManager ); emitError(XMLErrs::InvalidCharacter, tmpBuf); } } gotLeadingSurrogate = false; } // Keep the state machine up to date if (!escaped) { if (nextCh == chCloseSquare) { if (curState == State_Waiting) curState = State_GotOne; else if (curState == State_GotOne) curState = State_GotTwo; } else if (nextCh == chCloseAngle) { if (curState == State_GotTwo) emitError(XMLErrs::BadSequenceInCharData); curState = State_Waiting; } else { curState = State_Waiting; } } else { curState = State_Waiting; } // Add this char to the buffer toUse.append(nextCh); if (secondCh) { toUse.append(secondCh); secondCh=0; } } } catch(const EndOfEntityException& toCatch) { // Some entity ended, so we have to send any accumulated // chars and send an end of entity event. sendCharData(toUse); gotLeadingSurrogate = false; if (fDocHandler) fDocHandler->endEntityReference(toCatch.getEntity()); } } // Check the validity constraints as per XML 1.0 Section 2.9 if (fValidate && fStandalone) { // See if the text contains whitespace // Get the raw data we need for the callback const XMLCh* rawBuf = toUse.getRawBuffer(); const XMLSize_t len = toUse.getLen(); const bool isSpaces = fReaderMgr.getCurrentReader()->containsWhiteSpace(rawBuf, len); if (isSpaces) { // And see if the current element is a 'Children' style content model const ElemStack::StackElem* topElem = fElemStack.topElement(); if (topElem->fThisElement->isExternal()) { // Get the character data opts for the current element XMLElementDecl::CharDataOpts charOpts = topElem->fThisElement->getCharDataOpts(); if (charOpts == XMLElementDecl::SpacesOk) // => Element Content { // Error - standalone should have a value of "no" as whitespace detected in an // element type with element content whose element declaration was external // fValidator->emitError(XMLValid::NoWSForStandalone); } } } } // Send any char data that we accumulated into the buffer sendCharData(toUse); } // This method will scan a general/character entity ref. It will either // expand a char ref and return it directly, or push a reader for a general // entity. // // The return value indicates whether the char parameters hold the value // or whether the value was pushed as a reader, or that it failed. // // The escaped flag tells the caller whether the returned parameter resulted // from a character reference, which escapes the character in some cases. It // only makes any difference if the return value indicates the value was // returned directly. DGXMLScanner::EntityExpRes DGXMLScanner::scanEntityRef( const bool inAttVal , XMLCh& firstCh , XMLCh& secondCh , bool& escaped) { // Assume no escape secondCh = 0; escaped = false; // We have to insure that its all in one entity const XMLSize_t curReader = fReaderMgr.getCurrentReaderNum(); // If the next char is a pound, then its a character reference and we // need to expand it always. if (fReaderMgr.skippedChar(chPound)) { // Its a character reference, so scan it and get back the numeric // value it represents. if (!scanCharRef(firstCh, secondCh)) return EntityExp_Failed; escaped = true; if (curReader != fReaderMgr.getCurrentReaderNum()) emitError(XMLErrs::PartialMarkupInEntity); return EntityExp_Returned; } // Expand it since its a normal entity ref XMLBufBid bbName(&fBufMgr); int colonPosition; bool validName = fDoNamespaces ? fReaderMgr.getQName(bbName.getBuffer(), &colonPosition) : fReaderMgr.getName(bbName.getBuffer()); if (!validName) { if (bbName.isEmpty()) emitError(XMLErrs::ExpectedEntityRefName); else emitError(XMLErrs::InvalidEntityRefName, bbName.getRawBuffer()); return EntityExp_Failed; } // Next char must be a semi-colon. But if its not, just emit // an error and try to continue. if (!fReaderMgr.skippedChar(chSemiColon)) emitError(XMLErrs::UnterminatedEntityRef, bbName.getRawBuffer()); // Make sure we ended up on the same entity reader as the & char if (curReader != fReaderMgr.getCurrentReaderNum()) emitError(XMLErrs::PartialMarkupInEntity); // Look up the name in the general entity pool XMLEntityDecl* decl = fDTDGrammar->getEntityDecl(bbName.getRawBuffer()); // If it does not exist, then obviously an error if (!decl) { // XML 1.0 Section 4.1 // Well-formedness Constraint for entity not found: // In a document without any DTD, a document with only an internal DTD subset which contains no parameter entity references, // or a document with "standalone='yes'", for an entity reference that does not occur within the external subset // or a parameter entity // // Else it's Validity Constraint if (fStandalone || fHasNoDTD) emitError(XMLErrs::EntityNotFound, bbName.getRawBuffer()); else { if (fValidate) fValidator->emitError(XMLValid::VC_EntityNotFound, bbName.getRawBuffer()); } return EntityExp_Failed; } // XML 1.0 Section 4.1 // If we are a standalone document, then it has to have been declared // in the internal subset. if (fStandalone && !decl->getDeclaredInIntSubset()) emitError(XMLErrs::IllegalRefInStandalone, bbName.getRawBuffer()); if (decl->isExternal()) { // If its unparsed, then its not valid here if (decl->isUnparsed()) { emitError(XMLErrs::NoUnparsedEntityRefs, bbName.getRawBuffer()); return EntityExp_Failed; } // If we are in an attribute value, then not valid but keep going if (inAttVal) emitError(XMLErrs::NoExtRefsInAttValue); // And now create a reader to read this entity InputSource* srcUsed; XMLReader* reader = fReaderMgr.createReader ( decl->getBaseURI() , decl->getSystemId() , decl->getPublicId() , false , XMLReader::RefFrom_NonLiteral , XMLReader::Type_General , XMLReader::Source_External , srcUsed , fCalculateSrcOfs , fLowWaterMark , fDisableDefaultEntityResolution ); // Put a janitor on the source so it gets cleaned up on exit Janitor janSrc(srcUsed); // If the creation failed, and its not because the source was empty, // then emit an error and return. if (!reader) ThrowXMLwithMemMgr1(RuntimeException, XMLExcepts::Gen_CouldNotOpenExtEntity, srcUsed ? srcUsed->getSystemId() : decl->getSystemId(), fMemoryManager); // Push the reader. If its a recursive expansion, then emit an error // and return an failure. if (!fReaderMgr.pushReader(reader, decl)) { emitError(XMLErrs::RecursiveEntity, decl->getName()); return EntityExp_Failed; } // here's where we need to check if there's a SecurityManager, // how many entity references we've had if(fSecurityManager != 0 && ++fEntityExpansionCount > fEntityExpansionLimit) { XMLCh expLimStr[32]; XMLString::sizeToText(fEntityExpansionLimit, expLimStr, 31, 10, fMemoryManager); emitError ( XMLErrs::EntityExpansionLimitExceeded , expLimStr ); // there seems nothing better to do than reset the entity expansion counter fEntityExpansionCount = 0; } // Do a start entity reference event. // // For now, we supress them in att values. Later, when // the stuff is in place to correctly allow DOM to handle them // we'll turn this back on. if (fDocHandler && !inAttVal) fDocHandler->startEntityReference(*decl); // If it starts with the XML string, then parse a text decl if (checkXMLDecl(true)) scanXMLDecl(Decl_Text); } else { // If its one of the special char references, then we can return // it as a character, and its considered escaped. if (decl->getIsSpecialChar()) { firstCh = decl->getValue()[0]; escaped = true; return EntityExp_Returned; } // Create a reader over a memory stream over the entity value // We force it to assume UTF-16 by passing in an encoding // string. This way it won't both trying to predecode the // first line, looking for an XML/TextDecl. XMLReader* valueReader = fReaderMgr.createIntEntReader ( decl->getName() , XMLReader::RefFrom_NonLiteral , XMLReader::Type_General , decl->getValue() , decl->getValueLen() , false ); // Try to push the entity reader onto the reader manager stack, // where it will become the subsequent input. If it fails, that // means the entity is recursive, so issue an error. The reader // will have just been discarded, but we just keep going. if (!fReaderMgr.pushReader(valueReader, decl)) emitError(XMLErrs::RecursiveEntity, decl->getName()); // here's where we need to check if there's a SecurityManager, // how many entity references we've had if(fSecurityManager != 0 && ++fEntityExpansionCount > fEntityExpansionLimit) { XMLCh expLimStr[32]; XMLString::sizeToText(fEntityExpansionLimit, expLimStr, 31, 10, fMemoryManager); emitError ( XMLErrs::EntityExpansionLimitExceeded , expLimStr ); } // Do a start entity reference event. // // For now, we supress them in att values. Later, when // the stuff is in place to correctly allow DOM to handle them // we'll turn this back on. if (fDocHandler && !inAttVal) fDocHandler->startEntityReference(*decl); // If it starts with the XML string, then it's an error if (checkXMLDecl(true)) { emitError(XMLErrs::TextDeclNotLegalHere); fReaderMgr.skipPastChar(chCloseAngle); } } return EntityExp_Pushed; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/internal/XMLScanner.hpp0000644000175000017500000013232511301516456020775 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLScanner.hpp 882548 2009-11-20 13:44:14Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_XMLSCANNER_HPP) #define XERCESC_INCLUDE_GUARD_XMLSCANNER_HPP #include #include #include #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN class InputSource; class XMLDocumentHandler; class XMLEntityHandler; class ErrorHandler; class DocTypeHandler; class XMLPScanToken; class XMLStringPool; class Grammar; class XMLValidator; class MemoryManager; class PSVIHandler; struct PSVIElemContext { bool fIsSpecified; bool fErrorOccurred; int fElemDepth; int fFullValidationDepth; int fNoneValidationDepth; DatatypeValidator* fCurrentDV; ComplexTypeInfo* fCurrentTypeInfo; const XMLCh* fNormalizedValue; }; // This is the mondo scanner class, which does the vast majority of the // work of parsing. It handles reading in input and spitting out events // to installed handlers. class XMLPARSER_EXPORT XMLScanner : public XMemory, public XMLBufferFullHandler { public : // ----------------------------------------------------------------------- // Public class types // // NOTE: These should really be private, but some of the compilers we // have to deal with are too stupid to understand this. // // DeclTypes // Used by scanXMLDecl() to know what type of decl it should scan. // Text decls have slightly different rules from XMLDecls. // // EntityExpRes // These are the values returned from the entity expansion method, // to indicate how it went. // // XMLTokens // These represent the possible types of input we can get while // scanning content. // // ValScheme // This indicates what the scanner should do in terms of validation. // 'Auto' means if there is any int/ext subset, then validate. Else, // don't. // ----------------------------------------------------------------------- enum DeclTypes { Decl_Text , Decl_XML }; enum EntityExpRes { EntityExp_Pushed , EntityExp_Returned , EntityExp_Failed }; enum XMLTokens { Token_CData , Token_CharData , Token_Comment , Token_EndTag , Token_EOF , Token_PI , Token_StartTag , Token_Unknown }; enum ValSchemes { Val_Never , Val_Always , Val_Auto }; // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- XMLScanner ( XMLValidator* const valToAdopt , GrammarResolver* const grammarResolver , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); XMLScanner ( XMLDocumentHandler* const docHandler , DocTypeHandler* const docTypeHandler , XMLEntityHandler* const entityHandler , XMLErrorReporter* const errReporter , XMLValidator* const valToAdopt , GrammarResolver* const grammarResolver , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual ~XMLScanner(); // ----------------------------------------------------------------------- // Error emitter methods // ----------------------------------------------------------------------- bool emitErrorWillThrowException(const XMLErrs::Codes toEmit); void emitError(const XMLErrs::Codes toEmit); void emitError ( const XMLErrs::Codes toEmit , const XMLCh* const text1 , const XMLCh* const text2 = 0 , const XMLCh* const text3 = 0 , const XMLCh* const text4 = 0 ); void emitError ( const XMLErrs::Codes toEmit , const char* const text1 , const char* const text2 = 0 , const char* const text3 = 0 , const char* const text4 = 0 ); void emitError ( const XMLErrs::Codes toEmit , const XMLExcepts::Codes originalErrorCode , const XMLCh* const text1 = 0 , const XMLCh* const text2 = 0 , const XMLCh* const text3 = 0 , const XMLCh* const text4 = 0 ); // ----------------------------------------------------------------------- // Implementation of XMLBufferFullHandler interface // ----------------------------------------------------------------------- virtual bool bufferFull(XMLBuffer& toSend) { sendCharData(toSend); return true; } virtual Grammar::GrammarType getCurrentGrammarType() const; // ----------------------------------------------------------------------- // Public pure virtual methods // ----------------------------------------------------------------------- virtual const XMLCh* getName() const = 0; virtual NameIdPool* getEntityDeclPool() = 0; virtual const NameIdPool* getEntityDeclPool() const = 0; virtual void scanDocument ( const InputSource& src ) = 0; virtual bool scanNext(XMLPScanToken& toFill) = 0; virtual Grammar* loadGrammar ( const InputSource& src , const short grammarType , const bool toCache = false ) = 0; virtual void resetCachedGrammar (); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const XMLDocumentHandler* getDocHandler() const; XMLDocumentHandler* getDocHandler(); const DocTypeHandler* getDocTypeHandler() const; DocTypeHandler* getDocTypeHandler(); bool getDoNamespaces() const; ValSchemes getValidationScheme() const; bool getDoSchema() const; bool getValidationSchemaFullChecking() const; bool getIdentityConstraintChecking() const; const XMLEntityHandler* getEntityHandler() const; XMLEntityHandler* getEntityHandler(); const XMLErrorReporter* getErrorReporter() const; XMLErrorReporter* getErrorReporter(); const ErrorHandler* getErrorHandler() const; ErrorHandler* getErrorHandler(); const PSVIHandler* getPSVIHandler() const; PSVIHandler* getPSVIHandler(); bool getExitOnFirstFatal() const; bool getValidationConstraintFatal() const; RefHashTableOf* getIDRefList(); const RefHashTableOf* getIDRefList() const; ValidationContext* getValidationContext(); bool getInException() const; /*bool getLastExtLocation ( XMLCh* const sysIdToFill , const unsigned int maxSysIdChars , XMLCh* const pubIdToFill , const unsigned int maxPubIdChars , XMLSSize_t& lineToFill , XMLSSize_t& colToFill ) const;*/ const Locator* getLocator() const; const ReaderMgr* getReaderMgr() const; XMLFilePos getSrcOffset() const; bool getStandalone() const; const XMLValidator* getValidator() const; XMLValidator* getValidator(); int getErrorCount(); const XMLStringPool* getURIStringPool() const; XMLStringPool* getURIStringPool(); bool getHasNoDTD() const; XMLCh* getExternalSchemaLocation() const; XMLCh* getExternalNoNamespaceSchemaLocation() const; SecurityManager* getSecurityManager() const; bool getLoadExternalDTD() const; bool getLoadSchema() const; bool getNormalizeData() const; bool isCachingGrammarFromParse() const; bool isUsingCachedGrammarInParse() const; bool getCalculateSrcOfs() const; Grammar* getRootGrammar() const; XMLReader::XMLVersion getXMLVersion() const; MemoryManager* getMemoryManager() const; ValueVectorOf* getNamespaceContext() const; unsigned int getPrefixId(const XMLCh* const prefix) const; const XMLCh* getPrefixForId(unsigned int prefId) const; // Return is a reference so that we can return it as void* from // getProperty. // const XMLSize_t& getLowWaterMark() const; bool getGenerateSyntheticAnnotations() const; bool getValidateAnnotations() const; bool getIgnoreCachedDTD() const; bool getIgnoreAnnotations() const; bool getDisableDefaultEntityResolution() const; bool getSkipDTDValidation() const; bool getHandleMultipleImports() const; // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- /** * When an attribute name has no prefix, unlike elements, it is not mapped * to the global namespace. So, in order to have something to map it to * for practical purposes, a id for an empty URL is created and used for * such names. * * @return The URL pool id of the URL for an empty URL "". */ unsigned int getEmptyNamespaceId() const; /** * When a prefix is found that has not been mapped, an error is issued. * However, if the parser has been instructed not to stop on the first * fatal error, it needs to be able to continue. To do so, it will map * that prefix tot his magic unknown namespace id. * * @return The URL pool id of the URL for the unknown prefix * namespace. */ unsigned int getUnknownNamespaceId() const; /** * The prefix 'xml' is a magic prefix, defined by the XML spec and * requiring no prior definition. This method returns the id for the * intrinsically defined URL for this prefix. * * @return The URL pool id of the URL for the 'xml' prefix. */ unsigned int getXMLNamespaceId() const; /** * The prefix 'xmlns' is a magic prefix, defined by the namespace spec * and requiring no prior definition. This method returns the id for the * intrinsically defined URL for this prefix. * * @return The URL pool id of the URL for the 'xmlns' prefix. */ unsigned int getXMLNSNamespaceId() const; /** * This method find the passed URI id in its URI pool and * copy the text of that URI into the passed buffer. */ bool getURIText ( const unsigned int uriId , XMLBuffer& uriBufToFill ) const; const XMLCh* getURIText(const unsigned int uriId) const; /* tell if the validator comes from user */ bool isValidatorFromUser(); /* tell if standard URI are forced */ bool getStandardUriConformant() const; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- void addGlobalPrefix(const XMLCh* const prefix, const unsigned int uriId); void setDocHandler(XMLDocumentHandler* const docHandler); void setDocTypeHandler(DocTypeHandler* const docTypeHandler); void setDoNamespaces(const bool doNamespaces); void setEntityHandler(XMLEntityHandler* const docTypeHandler); void setErrorReporter(XMLErrorReporter* const errHandler); void setErrorHandler(ErrorHandler* const handler); void setPSVIHandler(PSVIHandler* const handler); void setURIStringPool(XMLStringPool* const stringPool); void setExitOnFirstFatal(const bool newValue); void setValidationConstraintFatal(const bool newValue); void setValidationScheme(const ValSchemes newScheme); void setValidator(XMLValidator* const valToAdopt); void setDoSchema(const bool doSchema); void setValidationSchemaFullChecking(const bool schemaFullChecking); void setIdentityConstraintChecking(const bool identityConstraintChecking); void setHasNoDTD(const bool hasNoDTD); void cacheGrammarFromParse(const bool newValue); void useCachedGrammarInParse(const bool newValue); void setRootElemName(XMLCh* rootElemName); void setExternalSchemaLocation(const XMLCh* const schemaLocation); void setExternalNoNamespaceSchemaLocation(const XMLCh* const noNamespaceSchemaLocation); void setExternalSchemaLocation(const char* const schemaLocation); void setExternalNoNamespaceSchemaLocation(const char* const noNamespaceSchemaLocation); void setSecurityManager(SecurityManager* const securityManager); void setLoadExternalDTD(const bool loadDTD); void setLoadSchema(const bool loadSchema); void setNormalizeData(const bool normalizeData); void setCalculateSrcOfs(const bool newValue); void setParseSettings(XMLScanner* const refScanner); void setStandardUriConformant(const bool newValue); void setInputBufferSize(const XMLSize_t bufferSize); void setLowWaterMark(XMLSize_t newValue); void setGenerateSyntheticAnnotations(const bool newValue); void setValidateAnnotations(const bool newValue); void setIgnoredCachedDTD(const bool newValue); void setIgnoreAnnotations(const bool newValue); void setDisableDefaultEntityResolution(const bool newValue); void setSkipDTDValidation(const bool newValue); void setHandleMultipleImports(const bool newValue); // ----------------------------------------------------------------------- // Mutator methods // ----------------------------------------------------------------------- void incrementErrorCount(void); // For use by XMLValidator // ----------------------------------------------------------------------- // Document scanning methods // // scanDocument() does the entire source document. scanFirst(), // scanNext(), and scanReset() support a progressive parse. // ----------------------------------------------------------------------- void scanDocument ( const XMLCh* const systemId ); void scanDocument ( const char* const systemId ); bool scanFirst ( const InputSource& src , XMLPScanToken& toFill ); bool scanFirst ( const XMLCh* const systemId , XMLPScanToken& toFill ); bool scanFirst ( const char* const systemId , XMLPScanToken& toFill ); void scanReset(XMLPScanToken& toFill); bool checkXMLDecl(bool startWithAngle); // ----------------------------------------------------------------------- // Grammar preparsing methods // ----------------------------------------------------------------------- Grammar* loadGrammar ( const XMLCh* const systemId , const short grammarType , const bool toCache = false ); Grammar* loadGrammar ( const char* const systemId , const short grammarType , const bool toCache = false ); // ----------------------------------------------------------------------- // Helper methods // ----------------------------------------------------------------------- unsigned int resolveQName ( const XMLCh* const qName , XMLBuffer& prefixBufToFill , const ElemStack::MapModes mode , int& prefixColonPos ); protected: // ----------------------------------------------------------------------- // Protected pure virtual methods // ----------------------------------------------------------------------- virtual void scanCDSection() = 0; virtual void scanCharData(XMLBuffer& toToUse) = 0; virtual EntityExpRes scanEntityRef ( const bool inAttVal , XMLCh& firstCh , XMLCh& secondCh , bool& escaped ) = 0; virtual void scanDocTypeDecl() = 0; virtual void scanReset(const InputSource& src) = 0; virtual void sendCharData(XMLBuffer& toSend) = 0; //return owned by the caller virtual InputSource* resolveSystemId(const XMLCh* const /*sysId*/ ,const XMLCh* const /*pubId*/) {return 0;}; // ----------------------------------------------------------------------- // Protected scanning methods // ----------------------------------------------------------------------- bool scanCharRef(XMLCh& toFill, XMLCh& second); void scanComment(); bool scanEq(bool inDecl = false); void scanMiscellaneous(); void scanPI(); void scanProlog(); void scanXMLDecl(const DeclTypes type); // ----------------------------------------------------------------------- // Private helper methods // ----------------------------------------------------------------------- void checkInternalDTD(bool hasExtSubset, const XMLCh* const sysId, const XMLCh* const pubId); void checkIDRefs(); bool isLegalToken(const XMLPScanToken& toCheck); XMLTokens senseNextToken(XMLSize_t& orgReader); void initValidator(XMLValidator* theValidator); inline void resetValidationContext(); unsigned int *getNewUIntPtr(); void resetUIntPool(); void recreateUIntPool(); unsigned int resolvePrefix ( const XMLCh* const prefix , const ElemStack::MapModes mode ); unsigned int resolveQNameWithColon ( const XMLCh* const qName , XMLBuffer& prefixBufToFill , const ElemStack::MapModes mode , const int prefixColonPos ); inline void setAttrDupChkRegistry ( const XMLSize_t &attrNumber , bool &toUseHashTable ); // ----------------------------------------------------------------------- // Data members // // fBufferSize // Maximum input buffer size // // fLowWaterMark // The low water mark for the raw byte buffer. // // fAttrList // Every time we get a new element start tag, we have to pass to // the document handler the attributes found. To make it more // efficient we keep this ref vector of XMLAttr objects around. We // just reuse it over and over, allowing it to grow to meet the // peak need. // // fBufMgr // This is a manager for temporary buffers used during scanning. // For efficiency we must use a set of static buffers, but we have // to insure that they are not incorrectly reused. So this manager // provides the smarts to hand out buffers as required. // // fDocHandler // The client code's document handler. If zero, then no document // handler callouts are done. We don't adopt it. // // fDocTypeHandler // The client code's document type handler (used by DTD Validator). // // fDoNamespaces // This flag indicates whether the client code wants us to do // namespaces or not. If the installed validator indicates that it // has to do namespaces, then this is ignored. // // fEntityHandler // The client code's entity handler. If zero, then no entity handler // callouts are done. We don't adopt it. // // fErrorReporter // The client code's error reporter. If zero, then no error reporter // callouts are done. We don't adopt it. // // fErrorHandler // The client code's error handler. Need to store this info for // Schema parse error handling. // // fPSVIHandler // The client code's PSVI handler. // // fExitOnFirstFatal // This indicates whether we bail out on the first fatal XML error // or not. It defaults to true, which is the strict XML way, but it // can be changed. // // fValidationConstraintFatal // This indicates whether we treat validation constraint errors as // fatal errors or not. It defaults to false, but it can be changed. // // fIDRefList // This is a list of XMLRefInfo objects. This member lets us do all // needed ID-IDREF balancing checks. // // fInException // To avoid a circular freakout when we catch an exception and emit // it, which would normally throw again if the 'fail on first error' // flag is one. // // fReaderMgr // This is the reader manager, from which we get characters. It // manages the reader stack for us, and provides a lot of convenience // methods to do specialized checking for chars, sequences of chars, // skipping chars, etc... // // fScannerId // fSequenceId // These are used for progressive parsing, to make sure that the // client code does the right thing at the right time. // // fStandalone // Indicates whether the document is standalone or not. Defaults to // no, but can be overridden in the XMLDecl. // // fHasNoDTD // Indicates the document has no DTD or has only an internal DTD subset // which contains no parameter entity references. // // fValidate // Indicates whether any validation should be done. This is defined // by the existence of a Grammar together with fValScheme. // // fValidator // The installed validator. We look at them via the abstract // validator interface, and don't know what it actual is. // Either point to user's installed validator, or fDTDValidator // or fSchemaValidator. // // fValidatorFromUser // This flag indicates whether the validator was installed from // user. If false, then the validator was created by the Scanner. // // fValScheme // This is the currently set validation scheme. It defaults to // 'never', but can be set by the client. // // fErrorCount // The number of errors we've encountered. // // fDoSchema // This flag indicates whether the client code wants Schema to // be processed or not. // // fSchemaFullChecking // This flag indicates whether the client code wants full Schema // constraint checking. // // fIdentityConstraintChecking // This flag indicates whether the client code wants Identity // Constraint checking, defaulted to true to maintain backward // compatibility (to minimize supprise) // // fAttName // fAttValue // fCDataBuf // fNameBuf // fQNameBuf // fPrefixBuf // For the most part, buffers are obtained from the fBufMgr object // on the fly. However, for the start tag scan, we have a set of // fixed buffers for performance reasons. These are used a lot and // there are a number of them, so asking the buffer manager each // time for new buffers is a bit too much overhead. // // fEmptyNamespaceId // This is the id of the empty namespace URI. This is a special one // because of the xmlns="" type of deal. We have to quickly sense // that its the empty namespace. // // fUnknownNamespaceId // This is the id of the namespace URI which is assigned to the // global namespace. Its for debug purposes only, since there is no // real global namespace URI. Its set by the derived class. // // fXMLNamespaceId // fXMLNSNamespaceId // These are the ids of the namespace URIs which are assigned to the // 'xml' and 'xmlns' special prefixes. The former is officially // defined but the latter is not, so we just provide one for debug // purposes. // // fSchemaNamespaceId // This is the id of the schema namespace URI. // // fGrammarResolver // Grammar Pool that stores all the grammars. Key is namespace for // schema and system id for external DTD. When caching a grammar, if // a grammar is already in the pool, it will be replaced with the // new parsed one. // // fGrammar // Current Grammar used by the Scanner and Validator // // fRootGrammar // The grammar where the root element is declared. // // fGrammarType // Current Grammar Type. Store this value instead of calling getGrammarType // all the time for faster performance. // // fURIStringPool // This is a pool for URIs with unique ids assigned. We use a standard // string pool class. This pool is going to be shared by all Grammar. // Use only if namespace is turned on. // // fRootElemName // No matter we are using DTD or Schema Grammar, if a DOCTYPE exists, // we need to verify the root element name. So store the rootElement // that is used in the DOCTYPE in the Scanner instead of in the DTDGrammar // where it used to // // fExternalSchemaLocation // The list of Namespace/SchemaLocation that was specified externally // using setExternalSchemaLocation. // // fExternalNoNamespaceSchemaLocation // The no target namespace XML Schema Location that was specified // externally using setExternalNoNamespaceSchemaLocation. // // fSecurityManager // The SecurityManager instance; as and when set by the application. // // fEntityExpansionLimit // The number of entity expansions to be permitted while processing this document // Only meaningful when fSecurityManager != 0 // // fEntityExpansionCount // The number of general entities expanded so far in this document. // Only meaningful when fSecurityManager != null // // fLoadExternalDTD // This flag indicates whether the external DTD be loaded or not // // fLoadSchema // This flag indicates whether the parser should attempt to load // schemas if they cannot be found in the grammar pool. // // fNormalizeData // This flag indicates whether the parser should perform datatype // normalization that is defined in the schema. // // fCalculateSrcOfs // This flag indicates the parser should calculate the source offset. // Turning this on may impact performance. // // fStandardUriConformant // This flag controls whether we force conformant URI // // fXMLVersion // Enum to indicate if the main doc is XML 1.1 or XML 1.0 conformant // fUIntPool // pool of unsigned integers to help with duplicate attribute // detection and filling in default/fixed attributes // fUIntPoolRow // current row in fUIntPool // fUIntPoolCol // current column in row // fUIntPoolRowTotal // total number of rows in table // // fMemoryManager // Pluggable memory manager for dynamic allocation/deallocation. // // ----------------------------------------------------------------------- XMLSize_t fBufferSize; XMLSize_t fLowWaterMark; bool fStandardUriConformant; bool fCalculateSrcOfs; bool fDoNamespaces; bool fExitOnFirstFatal; bool fValidationConstraintFatal; bool fInException; bool fStandalone; bool fHasNoDTD; bool fValidate; bool fValidatorFromUser; bool fDoSchema; bool fSchemaFullChecking; bool fIdentityConstraintChecking; bool fToCacheGrammar; bool fUseCachedGrammar; bool fLoadExternalDTD; bool fLoadSchema; bool fNormalizeData; bool fGenerateSyntheticAnnotations; bool fValidateAnnotations; bool fIgnoreCachedDTD; bool fIgnoreAnnotations; bool fDisableDefaultEntityResolution; bool fSkipDTDValidation; bool fHandleMultipleImports; int fErrorCount; XMLSize_t fEntityExpansionLimit; XMLSize_t fEntityExpansionCount; unsigned int fEmptyNamespaceId; unsigned int fUnknownNamespaceId; unsigned int fXMLNamespaceId; unsigned int fXMLNSNamespaceId; unsigned int fSchemaNamespaceId; unsigned int ** fUIntPool; unsigned int fUIntPoolRow; unsigned int fUIntPoolCol; unsigned int fUIntPoolRowTotal; XMLUInt32 fScannerId; XMLUInt32 fSequenceId; RefVectorOf* fAttrList; RefHash2KeysTableOf* fAttrDupChkRegistry; XMLDocumentHandler* fDocHandler; DocTypeHandler* fDocTypeHandler; XMLEntityHandler* fEntityHandler; XMLErrorReporter* fErrorReporter; ErrorHandler* fErrorHandler; PSVIHandler* fPSVIHandler; ValidationContext *fValidationContext; bool fEntityDeclPoolRetrieved; ReaderMgr fReaderMgr; XMLValidator* fValidator; ValSchemes fValScheme; GrammarResolver* const fGrammarResolver; MemoryManager* const fGrammarPoolMemoryManager; Grammar* fGrammar; Grammar* fRootGrammar; XMLStringPool* fURIStringPool; XMLCh* fRootElemName; XMLCh* fExternalSchemaLocation; XMLCh* fExternalNoNamespaceSchemaLocation; SecurityManager* fSecurityManager; XMLReader::XMLVersion fXMLVersion; MemoryManager* fMemoryManager; XMLBufferMgr fBufMgr; XMLBuffer fAttNameBuf; XMLBuffer fAttValueBuf; XMLBuffer fCDataBuf; XMLBuffer fQNameBuf; XMLBuffer fPrefixBuf; XMLBuffer fURIBuf; XMLBuffer fWSNormalizeBuf; ElemStack fElemStack; private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XMLScanner(); XMLScanner(const XMLScanner&); XMLScanner& operator=(const XMLScanner&); // ----------------------------------------------------------------------- // Private helper methods // ----------------------------------------------------------------------- void commonInit(); void cleanUp(); // ----------------------------------------------------------------------- // Private scanning methods // ----------------------------------------------------------------------- bool getQuotedString(XMLBuffer& toFill); XMLSize_t scanUpToWSOr ( XMLBuffer& toFill , const XMLCh chEndChar ); }; // --------------------------------------------------------------------------- // XMLScanner: Getter methods // --------------------------------------------------------------------------- inline const XMLDocumentHandler* XMLScanner::getDocHandler() const { return fDocHandler; } inline XMLDocumentHandler* XMLScanner::getDocHandler() { return fDocHandler; } inline const DocTypeHandler* XMLScanner::getDocTypeHandler() const { return fDocTypeHandler; } inline DocTypeHandler* XMLScanner::getDocTypeHandler() { return fDocTypeHandler; } inline bool XMLScanner::getDoNamespaces() const { return fDoNamespaces; } inline const XMLEntityHandler* XMLScanner::getEntityHandler() const { return fEntityHandler; } inline XMLEntityHandler* XMLScanner::getEntityHandler() { return fEntityHandler; } inline const XMLErrorReporter* XMLScanner::getErrorReporter() const { return fErrorReporter; } inline XMLErrorReporter* XMLScanner::getErrorReporter() { return fErrorReporter; } inline const ErrorHandler* XMLScanner::getErrorHandler() const { return fErrorHandler; } inline ErrorHandler* XMLScanner::getErrorHandler() { return fErrorHandler; } inline const PSVIHandler* XMLScanner::getPSVIHandler() const { return fPSVIHandler; } inline PSVIHandler* XMLScanner::getPSVIHandler() { return fPSVIHandler; } inline bool XMLScanner::getExitOnFirstFatal() const { return fExitOnFirstFatal; } inline bool XMLScanner::getValidationConstraintFatal() const { return fValidationConstraintFatal; } inline bool XMLScanner::getInException() const { return fInException; } inline RefHashTableOf* XMLScanner::getIDRefList() { return fValidationContext->getIdRefList(); } inline const RefHashTableOf* XMLScanner::getIDRefList() const { return fValidationContext->getIdRefList(); } inline ValidationContext* XMLScanner::getValidationContext() { if (!fEntityDeclPoolRetrieved) { fValidationContext->setEntityDeclPool(getEntityDeclPool()); fEntityDeclPoolRetrieved = true; } return fValidationContext; } inline const Locator* XMLScanner::getLocator() const { return &fReaderMgr; } inline const ReaderMgr* XMLScanner::getReaderMgr() const { return &fReaderMgr; } inline XMLFilePos XMLScanner::getSrcOffset() const { return fReaderMgr.getSrcOffset(); } inline bool XMLScanner::getStandalone() const { return fStandalone; } inline XMLScanner::ValSchemes XMLScanner::getValidationScheme() const { return fValScheme; } inline const XMLValidator* XMLScanner::getValidator() const { return fValidator; } inline XMLValidator* XMLScanner::getValidator() { return fValidator; } inline bool XMLScanner::getDoSchema() const { return fDoSchema; } inline bool XMLScanner::getValidationSchemaFullChecking() const { return fSchemaFullChecking; } inline bool XMLScanner::getIdentityConstraintChecking() const { return fIdentityConstraintChecking; } inline int XMLScanner::getErrorCount() { return fErrorCount; } inline bool XMLScanner::isValidatorFromUser() { return fValidatorFromUser; } inline unsigned int XMLScanner::getEmptyNamespaceId() const { return fEmptyNamespaceId; } inline unsigned int XMLScanner::getUnknownNamespaceId() const { return fUnknownNamespaceId; } inline unsigned int XMLScanner::getXMLNamespaceId() const { return fXMLNamespaceId; } inline unsigned int XMLScanner::getXMLNSNamespaceId() const { return fXMLNSNamespaceId; } inline const XMLStringPool* XMLScanner::getURIStringPool() const { return fURIStringPool; } inline XMLStringPool* XMLScanner::getURIStringPool() { return fURIStringPool; } inline bool XMLScanner::getHasNoDTD() const { return fHasNoDTD; } inline XMLCh* XMLScanner::getExternalSchemaLocation() const { return fExternalSchemaLocation; } inline XMLCh* XMLScanner::getExternalNoNamespaceSchemaLocation() const { return fExternalNoNamespaceSchemaLocation; } inline SecurityManager* XMLScanner::getSecurityManager() const { return fSecurityManager; } inline bool XMLScanner::getLoadExternalDTD() const { return fLoadExternalDTD; } inline bool XMLScanner::getLoadSchema() const { return fLoadSchema; } inline bool XMLScanner::getNormalizeData() const { return fNormalizeData; } inline bool XMLScanner::isCachingGrammarFromParse() const { return fToCacheGrammar; } inline bool XMLScanner::isUsingCachedGrammarInParse() const { return fUseCachedGrammar; } inline bool XMLScanner::getCalculateSrcOfs() const { return fCalculateSrcOfs; } inline Grammar* XMLScanner::getRootGrammar() const { return fRootGrammar; } inline bool XMLScanner::getStandardUriConformant() const { return fStandardUriConformant; } inline XMLReader::XMLVersion XMLScanner::getXMLVersion() const { return fXMLVersion; } inline MemoryManager* XMLScanner::getMemoryManager() const { return fMemoryManager; } inline ValueVectorOf* XMLScanner::getNamespaceContext() const { return fElemStack.getNamespaceMap(); } inline unsigned int XMLScanner::getPrefixId(const XMLCh* const prefix) const { return fElemStack.getPrefixId(prefix); } inline const XMLCh* XMLScanner::getPrefixForId(unsigned int prefId) const { return fElemStack.getPrefixForId(prefId); } inline bool XMLScanner::getGenerateSyntheticAnnotations() const { return fGenerateSyntheticAnnotations; } inline bool XMLScanner::getValidateAnnotations() const { return fValidateAnnotations; } inline const XMLSize_t& XMLScanner::getLowWaterMark() const { return fLowWaterMark; } inline bool XMLScanner::getIgnoreCachedDTD() const { return fIgnoreCachedDTD; } inline bool XMLScanner::getIgnoreAnnotations() const { return fIgnoreAnnotations; } inline bool XMLScanner::getDisableDefaultEntityResolution() const { return fDisableDefaultEntityResolution; } inline bool XMLScanner::getSkipDTDValidation() const { return fSkipDTDValidation; } inline bool XMLScanner::getHandleMultipleImports() const { return fHandleMultipleImports; } // --------------------------------------------------------------------------- // XMLScanner: Setter methods // --------------------------------------------------------------------------- inline void XMLScanner::addGlobalPrefix(const XMLCh* const prefix, const unsigned int uriId) { fElemStack.addGlobalPrefix(prefix, uriId); } inline void XMLScanner::setDocHandler(XMLDocumentHandler* const docHandler) { fDocHandler = docHandler; } inline void XMLScanner::setDocTypeHandler(DocTypeHandler* const docTypeHandler) { fDocTypeHandler = docTypeHandler; } inline void XMLScanner::setErrorHandler(ErrorHandler* const handler) { fErrorHandler = handler; } inline void XMLScanner::setPSVIHandler(PSVIHandler* const handler) { fPSVIHandler = handler; } inline void XMLScanner::setEntityHandler(XMLEntityHandler* const entityHandler) { fEntityHandler = entityHandler; fReaderMgr.setEntityHandler(entityHandler); } inline void XMLScanner::setErrorReporter(XMLErrorReporter* const errHandler) { fErrorReporter = errHandler; } inline void XMLScanner::setExitOnFirstFatal(const bool newValue) { fExitOnFirstFatal = newValue; } inline void XMLScanner::setValidationConstraintFatal(const bool newValue) { fValidationConstraintFatal = newValue; } inline void XMLScanner::setValidationScheme(const ValSchemes newScheme) { fValScheme = newScheme; // validation flag for Val_Auto is set to false by default, // and will be turned to true if a grammar is seen if (fValScheme == Val_Always) fValidate = true; else fValidate = false; } inline void XMLScanner::setDoSchema(const bool doSchema) { fDoSchema = doSchema; } inline void XMLScanner::setDoNamespaces(const bool doNamespaces) { fDoNamespaces = doNamespaces; } inline void XMLScanner::setValidationSchemaFullChecking(const bool schemaFullChecking) { fSchemaFullChecking = schemaFullChecking; } inline void XMLScanner::setIdentityConstraintChecking(const bool identityConstraintChecking) { fIdentityConstraintChecking = identityConstraintChecking; } inline void XMLScanner::setHasNoDTD(const bool hasNoDTD) { fHasNoDTD = hasNoDTD; } inline void XMLScanner::setRootElemName(XMLCh* rootElemName) { fMemoryManager->deallocate(fRootElemName);//delete [] fRootElemName; fRootElemName = XMLString::replicate(rootElemName, fMemoryManager); } inline void XMLScanner::setExternalSchemaLocation(const XMLCh* const schemaLocation) { fMemoryManager->deallocate(fExternalSchemaLocation);//delete [] fExternalSchemaLocation; fExternalSchemaLocation = XMLString::replicate(schemaLocation, fMemoryManager); } inline void XMLScanner::setExternalNoNamespaceSchemaLocation(const XMLCh* const noNamespaceSchemaLocation) { fMemoryManager->deallocate(fExternalNoNamespaceSchemaLocation);//delete [] fExternalNoNamespaceSchemaLocation; fExternalNoNamespaceSchemaLocation = XMLString::replicate(noNamespaceSchemaLocation, fMemoryManager); } inline void XMLScanner::setExternalSchemaLocation(const char* const schemaLocation) { fMemoryManager->deallocate(fExternalSchemaLocation);//delete [] fExternalSchemaLocation; fExternalSchemaLocation = XMLString::transcode(schemaLocation, fMemoryManager); } inline void XMLScanner::setExternalNoNamespaceSchemaLocation(const char* const noNamespaceSchemaLocation) { fMemoryManager->deallocate(fExternalNoNamespaceSchemaLocation);//delete [] fExternalNoNamespaceSchemaLocation; fExternalNoNamespaceSchemaLocation = XMLString::transcode(noNamespaceSchemaLocation, fMemoryManager); } inline void XMLScanner::setSecurityManager(SecurityManager* const securityManager) { fSecurityManager = securityManager; if(securityManager != 0) { fEntityExpansionLimit = securityManager->getEntityExpansionLimit(); fEntityExpansionCount = 0; } } inline void XMLScanner::setLoadExternalDTD(const bool loadDTD) { fLoadExternalDTD = loadDTD; } inline void XMLScanner::setLoadSchema(const bool loadSchema) { fLoadSchema = loadSchema; } inline void XMLScanner::setNormalizeData(const bool normalizeData) { fNormalizeData = normalizeData; } inline void XMLScanner::cacheGrammarFromParse(const bool newValue) { fToCacheGrammar = newValue; } inline void XMLScanner::useCachedGrammarInParse(const bool newValue) { fUseCachedGrammar = newValue; } inline void XMLScanner::setCalculateSrcOfs(const bool newValue) { fCalculateSrcOfs = newValue; } inline void XMLScanner::setStandardUriConformant(const bool newValue) { fStandardUriConformant = newValue; fReaderMgr.setStandardUriConformant(newValue); } inline void XMLScanner::setGenerateSyntheticAnnotations(const bool newValue) { fGenerateSyntheticAnnotations = newValue; } inline void XMLScanner::setValidateAnnotations(const bool newValue) { fValidateAnnotations = newValue; } inline void XMLScanner::setInputBufferSize(const XMLSize_t bufferSize) { fBufferSize = bufferSize; fCDataBuf.setFullHandler(this, fBufferSize); } inline void XMLScanner::setLowWaterMark(XMLSize_t newValue) { fLowWaterMark = newValue; } inline void XMLScanner::setIgnoredCachedDTD(const bool newValue) { fIgnoreCachedDTD = newValue; } inline void XMLScanner::setIgnoreAnnotations(const bool newValue) { fIgnoreAnnotations = newValue; } inline void XMLScanner::setDisableDefaultEntityResolution(const bool newValue) { fDisableDefaultEntityResolution = newValue; } inline void XMLScanner::setSkipDTDValidation(const bool newValue) { fSkipDTDValidation = newValue; } inline void XMLScanner::setHandleMultipleImports(const bool newValue) { fHandleMultipleImports = newValue; } // --------------------------------------------------------------------------- // XMLScanner: Mutator methods // --------------------------------------------------------------------------- inline void XMLScanner::incrementErrorCount() { ++fErrorCount; } inline void XMLScanner::resetValidationContext() { fValidationContext->clearIdRefList(); fValidationContext->setEntityDeclPool(0); fEntityDeclPoolRetrieved = false; } inline void XMLScanner::setAttrDupChkRegistry(const XMLSize_t &attrNumber , bool &toUseHashTable) { // once the attribute exceed 100, we use hash table to check duplication if (attrNumber > 100) { toUseHashTable = true; if (!fAttrDupChkRegistry) { fAttrDupChkRegistry = new (fMemoryManager) RefHash2KeysTableOf ( 2*attrNumber+1, false, fMemoryManager ); } else { fAttrDupChkRegistry->removeAll(); } } } inline Grammar::GrammarType XMLScanner::getCurrentGrammarType() const { return Grammar::UnKnown; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/internal/XTemplateSerializer.cpp0000644000175000017500000021454011302525023022742 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN /*** * internal class meant to be comsumed by XTemplateSerializer only * the size can not grow ***/ #ifdef XERCES_DEBUG_SORT_GRAMMAR class KeySet : public XMemory { public: // ----------------------------------------------------------------------- // Contructors and Destructor // ----------------------------------------------------------------------- KeySet ( const XMLCh* const strKey , const int intKey1 , const int intKey2 , MemoryManager* const manager ); ~KeySet(); // ----------------------------------------------------------------------- // Public operators // ----------------------------------------------------------------------- inline void getKeys(const XMLCh*&, int&, int&) const; void print() const; // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- KeySet(const KeySet&); KeySet& operator=(const KeySet&); // ----------------------------------------------------------------------- // Data members // reference only // ----------------------------------------------------------------------- const XMLCh* const fStrKey; const int fIntKey1; const int fIntKey2; MemoryManager* fMemoryManager; }; KeySet::KeySet(const XMLCh* const strKey , const int intKey1 , const int intKey2 , MemoryManager* const manager) :fStrKey(strKey) ,fIntKey1(intKey1) ,fIntKey2(intKey2) ,fMemoryManager(manager) { } KeySet::~KeySet() { } inline void KeySet::getKeys(const XMLCh*& strKey, int& intKey1, int& intKey2) const { strKey = fStrKey; intKey1 = fIntKey1; intKey2 = fIntKey2; } void KeySet::print() const { char* tmpStr = XMLString::transcode(fStrKey, fMemoryManager); printf("tmpStr=<%s>, intKey1=<%d>, intKey2=<%d>\n", tmpStr, fIntKey1, fIntKey2); XMLString::release(&tmpStr, fMemoryManager); } static int compareKeySet(const void* keyl, const void* keyr) { const KeySet* pairl=*(const KeySet**)keyl; const KeySet* pairr=*(const KeySet**)keyr; const XMLCh* strKeyl = 0; int intKeyl_1 = 0; int intKeyl_2 = 0; pairl->getKeys(strKeyl, intKeyl_1, intKeyl_2); const XMLCh* strKeyr = 0; int intKeyr_1 = 0; int intKeyr_2 = 0; pairr->getKeys(strKeyr, intKeyr_1, intKeyr_2); int compareValue = XMLString::compareString(strKeyl, strKeyr); if (compareValue !=0) return compareValue; compareValue = intKeyl_1 - intKeyr_1; if (compareValue !=0) return compareValue; return (intKeyl_2 - intKeyr_2); } class SortArray : public XMemory { private : // ----------------------------------------------------------------------- // Contructors and Destructor // ----------------------------------------------------------------------- SortArray ( const XMLSize_t size , MemoryManager* const manager ); ~SortArray(); // ----------------------------------------------------------------------- // Public operators // ----------------------------------------------------------------------- inline const KeySet* elementAt(const XMLSize_t index) const; void addElement(const KeySet* const keySet); void sort(); void dump() const; // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- SortArray(const SortArray&); SortArray& operator=(const SortArray&); // ----------------------------------------------------------------------- // Data members // ----------------------------------------------------------------------- XMLSize_t fCur; //point to the current available slot XMLSize_t fSize; const KeySet** fElemList; //owning objects MemoryManager* fMemoryManager; friend class XTemplateSerializer; }; SortArray::SortArray(const XMLSize_t size , MemoryManager* const manager ) :fCur(0) ,fSize(size) ,fMemoryManager(manager) { fElemList = (const KeySet**) fMemoryManager->allocate(size * sizeof (KeySet*)); } SortArray::~SortArray() { for (XMLSize_t i=0; i< fSize; i++) delete fElemList[i]; fMemoryManager->deallocate(fElemList); } inline const KeySet* SortArray::elementAt(const XMLSize_t index) const { assert(index < fCur); return fElemList[index]; } void SortArray::addElement(const KeySet* const keySet) { assert(fCur < fSize); fElemList[fCur++]=keySet; } void SortArray::sort() { assert(fCur == fSize); //dump(); qsort(fElemList, fSize, sizeof (KeySet*), compareKeySet); //dump(); } void SortArray::dump() const { printf("\n fSize=<%d>, fCur=<%d>\n", fSize, fCur); for (XMLSize_t i = 0; i < fCur; i++) fElemList[i]->print(); } #define GET_NEXT_KEYSET() \ const KeySet* keySet = sortArray.elementAt(i); \ const XMLCh* strKey = 0; \ int intKey1 = 0; \ int intKey2 = 0; \ keySet->getKeys(strKey, intKey1, intKey2); #define SORT_KEYSET_ONEKEY(MM) \ SortArray sortArray(itemNumber, MM); \ while (e.hasMoreElements()) \ { \ KeySet* keySet = new (MM) KeySet((XMLCh*) e.nextElementKey(), 0, 0, MM); \ sortArray.addElement(keySet); \ } \ sortArray.sort(); #define SORT_KEYSET_TWOKEYS(MM) \ SortArray sortArray(itemNumber, MM); \ while (e.hasMoreElements()) \ { \ XMLCh* strKey; \ int intKey; \ e.nextElementKey((void*&)strKey, intKey); \ KeySet* keySet = new (MM) KeySet(strKey, intKey, 0, MM); \ sortArray.addElement(keySet); \ } \ sortArray.sort(); #endif /********************************************************** * * ValueVectorOf * * SchemaElementDecl* * unsigned int * ***********************************************************/ void XTemplateSerializer::storeObject(ValueVectorOf* const objToStore , XSerializeEngine& serEng) { if (serEng.needToStoreObject(objToStore)) { XMLSize_t vectorSize = objToStore->size(); serEng.writeSize (vectorSize); for ( XMLSize_t i = 0; i < vectorSize; i++) { SchemaElementDecl*& data = objToStore->elementAt(i); serEng<** objToLoad , int initSize , bool toCallDestructor , XSerializeEngine& serEng) { if (serEng.needToLoadObject((void**)objToLoad)) { if (!*objToLoad) { if (initSize < 0) initSize = 16; *objToLoad = new (serEng.getMemoryManager()) ValueVectorOf( initSize , serEng.getMemoryManager() , toCallDestructor ); } serEng.registerObject(*objToLoad); XMLSize_t vectorSize = 0; serEng.readSize (vectorSize); for (XMLSize_t i = 0; i < vectorSize; i++) { SchemaElementDecl* data; serEng>>data; (*objToLoad)->addElement(data); } } } void XTemplateSerializer::storeObject(ValueVectorOf* const objToStore , XSerializeEngine& serEng) { if (serEng.needToStoreObject(objToStore)) { XMLSize_t vectorSize = objToStore->size(); serEng.writeSize (vectorSize); for (XMLSize_t i = 0; i < vectorSize; i++) { unsigned int& data = objToStore->elementAt(i); serEng<** objToLoad , int initSize , bool toCallDestructor , XSerializeEngine& serEng) { if (serEng.needToLoadObject((void**)objToLoad)) { if (!*objToLoad) { if (initSize < 0) initSize = 16; *objToLoad = new (serEng.getMemoryManager()) ValueVectorOf( initSize , serEng.getMemoryManager() , toCallDestructor ); } serEng.registerObject(*objToLoad); XMLSize_t vectorSize = 0; serEng.readSize (vectorSize); for (XMLSize_t i = 0; i < vectorSize; i++) { unsigned int data; serEng>>data; (*objToLoad)->addElement(data); } } } /********************************************************** * * RefArrayVectorOf * * XMLCh * ***********************************************************/ void XTemplateSerializer::storeObject(RefArrayVectorOf* const objToStore , XSerializeEngine& serEng) { if (serEng.needToStoreObject(objToStore)) { XMLSize_t vectorSize = objToStore->size(); serEng.writeSize (vectorSize); for (XMLSize_t i = 0; i < vectorSize; i++) { serEng.writeString(objToStore->elementAt(i)); } } } void XTemplateSerializer::loadObject(RefArrayVectorOf** objToLoad , int initSize , bool toAdopt , XSerializeEngine& serEng) { if (serEng.needToLoadObject((void**)objToLoad)) { if (!*objToLoad) { if (initSize < 0) initSize = 16; *objToLoad = new (serEng.getMemoryManager()) RefArrayVectorOf( initSize , toAdopt , serEng.getMemoryManager() ); } serEng.registerObject(*objToLoad); XMLSize_t vectorSize = 0; serEng.readSize (vectorSize); for (XMLSize_t i = 0; i < vectorSize; i++) { XMLCh* data; serEng.readString(data); (*objToLoad)->addElement(data); } } } /********************************************************** * * RefVectorOf * * SchemaAttDef * SchemaElementDecl * ContentSpecNode * IC_Field * DatatypeValidator * IdentityConstraint * XMLNumber * XercesLocationPath * XercesStep * ***********************************************************/ void XTemplateSerializer::storeObject(RefVectorOf* const objToStore , XSerializeEngine& serEng) { if (serEng.needToStoreObject(objToStore)) { XMLSize_t vectorLength = objToStore->size(); serEng.writeSize (vectorLength); for ( XMLSize_t i = 0; i < vectorLength; i++) { SchemaAttDef* data = objToStore->elementAt(i); serEng<** objToLoad , int initSize , bool toAdopt , XSerializeEngine& serEng) { if (serEng.needToLoadObject((void**)objToLoad)) { if (!*objToLoad) { if (initSize < 0) initSize = 16; *objToLoad = new (serEng.getMemoryManager()) RefVectorOf( initSize , toAdopt , serEng.getMemoryManager() ); } serEng.registerObject(*objToLoad); XMLSize_t vectorLength = 0; serEng.readSize (vectorLength); for (XMLSize_t i = 0 ; i < vectorLength; i++) { SchemaAttDef* data; serEng>>data; (*objToLoad)->addElement(data); } } } void XTemplateSerializer::storeObject(RefVectorOf* const objToStore , XSerializeEngine& serEng) { if (serEng.needToStoreObject(objToStore)) { XMLSize_t vectorLength = objToStore->size(); serEng.writeSize (vectorLength); for ( XMLSize_t i = 0; i < vectorLength; i++) { SchemaElementDecl* data = objToStore->elementAt(i); serEng<** objToLoad , int initSize , bool toAdopt , XSerializeEngine& serEng) { if (serEng.needToLoadObject((void**)objToLoad)) { if (!*objToLoad) { if (initSize < 0) initSize = 16; *objToLoad = new (serEng.getMemoryManager()) RefVectorOf( initSize , toAdopt , serEng.getMemoryManager() ); } serEng.registerObject(*objToLoad); XMLSize_t vectorLength = 0; serEng.readSize (vectorLength); for (XMLSize_t i = 0 ; i < vectorLength; i++) { SchemaElementDecl* data; serEng>>data; (*objToLoad)->addElement(data); } } } void XTemplateSerializer::storeObject(RefVectorOf* const objToStore , XSerializeEngine& serEng) { if (serEng.needToStoreObject(objToStore)) { XMLSize_t vectorLength = objToStore->size(); serEng.writeSize (vectorLength); for ( XMLSize_t i = 0; i < vectorLength; i++) { ContentSpecNode* data = objToStore->elementAt(i); serEng<** objToLoad , int initSize , bool toAdopt , XSerializeEngine& serEng) { if (serEng.needToLoadObject((void**)objToLoad)) { if (!*objToLoad) { if (initSize < 0) initSize = 16; *objToLoad = new (serEng.getMemoryManager()) RefVectorOf( initSize , toAdopt , serEng.getMemoryManager() ); } serEng.registerObject(*objToLoad); XMLSize_t vectorLength = 0; serEng.readSize (vectorLength); for (XMLSize_t i = 0 ; i < vectorLength; i++) { ContentSpecNode* data; serEng>>data; (*objToLoad)->addElement(data); } } } void XTemplateSerializer::storeObject(RefVectorOf* const objToStore , XSerializeEngine& serEng) { if (serEng.needToStoreObject(objToStore)) { XMLSize_t vectorLength = objToStore->size(); serEng.writeSize (vectorLength); for ( XMLSize_t i = 0; i < vectorLength; i++) { IC_Field* data = objToStore->elementAt(i); serEng<** objToLoad , int initSize , bool toAdopt , XSerializeEngine& serEng) { if (serEng.needToLoadObject((void**)objToLoad)) { if (!*objToLoad) { if (initSize < 0) initSize = 16; *objToLoad = new (serEng.getMemoryManager()) RefVectorOf( initSize , toAdopt , serEng.getMemoryManager() ); } serEng.registerObject(*objToLoad); XMLSize_t vectorLength = 0; serEng.readSize (vectorLength); for (XMLSize_t i = 0 ; i < vectorLength; i++) { IC_Field* data; serEng>>data; (*objToLoad)->addElement(data); } } } void XTemplateSerializer::storeObject(RefVectorOf* const objToStore , XSerializeEngine& serEng) { if (serEng.needToStoreObject(objToStore)) { XMLSize_t vectorLength = objToStore->size(); serEng.writeSize (vectorLength); for ( XMLSize_t i = 0; i < vectorLength; i++) { DatatypeValidator* data = objToStore->elementAt(i); DatatypeValidator::storeDV(serEng, data); } } } void XTemplateSerializer::loadObject(RefVectorOf** objToLoad , int initSize , bool toAdopt , XSerializeEngine& serEng) { if (serEng.needToLoadObject((void**)objToLoad)) { if (!*objToLoad) { if (initSize < 0) initSize = 16; *objToLoad = new (serEng.getMemoryManager()) RefVectorOf( initSize , toAdopt , serEng.getMemoryManager() ); } serEng.registerObject(*objToLoad); XMLSize_t vectorLength = 0; serEng.readSize (vectorLength); for (XMLSize_t i = 0 ; i < vectorLength; i++) { DatatypeValidator* data; data = DatatypeValidator::loadDV(serEng); (*objToLoad)->addElement(data); } } } void XTemplateSerializer::storeObject(RefVectorOf* const objToStore , XSerializeEngine& serEng) { if (serEng.needToStoreObject(objToStore)) { XMLSize_t vectorLength = objToStore->size(); serEng.writeSize (vectorLength); for ( XMLSize_t i = 0; i < vectorLength; i++) { IdentityConstraint* data = objToStore->elementAt(i); IdentityConstraint::storeIC(serEng, data); } } } void XTemplateSerializer::loadObject(RefVectorOf** objToLoad , int initSize , bool toAdopt , XSerializeEngine& serEng) { if (serEng.needToLoadObject((void**)objToLoad)) { if (!*objToLoad) { if (initSize < 0) initSize = 16; *objToLoad = new (serEng.getMemoryManager()) RefVectorOf( initSize , toAdopt , serEng.getMemoryManager() ); } serEng.registerObject(*objToLoad); XMLSize_t vectorLength = 0; serEng.readSize (vectorLength); for (XMLSize_t i = 0 ; i < vectorLength; i++) { IdentityConstraint* data; data = IdentityConstraint::loadIC(serEng); (*objToLoad)->addElement(data); } } } void XTemplateSerializer::storeObject(RefVectorOf* const objToStore , XSerializeEngine& serEng) { if (serEng.needToStoreObject(objToStore)) { XMLSize_t vectorLength = objToStore->size(); serEng.writeSize (vectorLength); for ( XMLSize_t i = 0; i < vectorLength; i++) { XMLNumber* data = objToStore->elementAt(i); serEng<** objToLoad , int initSize , bool toAdopt , XMLNumber::NumberType numType , XSerializeEngine& serEng) { if (serEng.needToLoadObject((void**)objToLoad)) { if (!*objToLoad) { if (initSize < 0) initSize = 16; *objToLoad = new (serEng.getMemoryManager()) RefVectorOf( initSize , toAdopt , serEng.getMemoryManager() ); } serEng.registerObject(*objToLoad); XMLSize_t vectorLength = 0; serEng.readSize (vectorLength); for (XMLSize_t i = 0 ; i < vectorLength; i++) { XMLNumber* data; data = XMLNumber::loadNumber(numType , serEng); (*objToLoad)->addElement(data); } } } void XTemplateSerializer::storeObject(RefVectorOf* const objToStore , XSerializeEngine& serEng) { if (serEng.needToStoreObject(objToStore)) { XMLSize_t vectorLength = objToStore->size(); serEng.writeSize (vectorLength); for ( XMLSize_t i = 0; i < vectorLength; i++) { XercesLocationPath* data = objToStore->elementAt(i); serEng<** objToLoad , int initSize , bool toAdopt , XSerializeEngine& serEng) { if (serEng.needToLoadObject((void**)objToLoad)) { if (!*objToLoad) { if (initSize < 0) initSize = 16; *objToLoad = new (serEng.getMemoryManager()) RefVectorOf( initSize , toAdopt , serEng.getMemoryManager() ); } serEng.registerObject(*objToLoad); XMLSize_t vectorLength = 0; serEng.readSize (vectorLength); for (XMLSize_t i = 0 ; i < vectorLength; i++) { XercesLocationPath* data; serEng>>data; (*objToLoad)->addElement(data); } } } void XTemplateSerializer::storeObject(RefVectorOf* const objToStore , XSerializeEngine& serEng) { if (serEng.needToStoreObject(objToStore)) { XMLSize_t vectorLength = objToStore->size(); serEng.writeSize (vectorLength); for (XMLSize_t i = 0; i < vectorLength; i++) { XercesStep* data = objToStore->elementAt(i); serEng<** objToLoad , int initSize , bool toAdopt , XSerializeEngine& serEng) { if (serEng.needToLoadObject((void**)objToLoad)) { if (!*objToLoad) { if (initSize < 0) initSize = 16; *objToLoad = new (serEng.getMemoryManager()) RefVectorOf( initSize , toAdopt , serEng.getMemoryManager() ); } serEng.registerObject(*objToLoad); XMLSize_t vectorLength = 0; serEng.readSize (vectorLength); for (XMLSize_t i = 0 ; i < vectorLength; i++) { XercesStep* data; serEng>>data; (*objToLoad)->addElement(data); } } } /********************************************************** * * RefHashTableOf * * KVStringPair * XMLAttDef * DTDAttDef * ComplexTypeInfo * XercesGroupInfo * XercesAttGroupInfo * XMLRefInfo * DatatypeValidator * Grammar * XSAnnotation * ***********************************************************/ void XTemplateSerializer::storeObject(RefHashTableOf* const objToStore , XSerializeEngine& serEng) { if (serEng.needToStoreObject(objToStore)) { serEng.writeSize (objToStore->getHashModulus()); RefHashTableOfEnumerator e(objToStore, false, objToStore->getMemoryManager()); XMLSize_t itemNumber = 0; while (e.hasMoreElements()) { e.nextElement(); itemNumber++; } serEng.writeSize (itemNumber); e.Reset(); #ifdef XERCES_DEBUG_SORT_GRAMMAR //to sort the key SORT_KEYSET_ONEKEY(serEng.getMemoryManager()) //to store the data for (XMLSize_t i=0; i < itemNumber; i++) { GET_NEXT_KEYSET() KVStringPair* data = objToStore->get(strKey); serEng<get(e.nextElementKey()); serEng<** objToLoad , int , bool toAdopt , XSerializeEngine& serEng) { if (serEng.needToLoadObject((void**)objToLoad)) { XMLSize_t hashModulus; serEng.readSize (hashModulus); if (!*objToLoad) { *objToLoad = new (serEng.getMemoryManager()) RefHashTableOf( hashModulus , toAdopt , serEng.getMemoryManager() ); } serEng.registerObject(*objToLoad); XMLSize_t itemNumber = 0; serEng.readSize (itemNumber); for (XMLSize_t itemIndex = 0; itemIndex < itemNumber; itemIndex++) { KVStringPair* data; serEng>>data; (*objToLoad)->put((void*)data->getKey(), data); } } } void XTemplateSerializer::storeObject(RefHashTableOf* const objToStore , XSerializeEngine& serEng) { if (serEng.needToStoreObject(objToStore)) { serEng.writeSize (objToStore->getHashModulus()); RefHashTableOfEnumerator e(objToStore, false, objToStore->getMemoryManager()); XMLSize_t itemNumber = 0; while (e.hasMoreElements()) { e.nextElement(); itemNumber++; } serEng.writeSize (itemNumber); e.Reset(); #ifdef XERCES_DEBUG_SORT_GRAMMAR //to sort the key SORT_KEYSET_ONEKEY(serEng.getMemoryManager()) //to store the data for (XMLSize_t i=0; i < itemNumber; i++) { GET_NEXT_KEYSET() XMLAttDef* data = objToStore->get(strKey); serEng<get(e.nextElementKey()); serEng<** objToLoad , int , bool toAdopt , XSerializeEngine& serEng) { if (serEng.needToLoadObject((void**)objToLoad)) { XMLSize_t hashModulus; serEng.readSize (hashModulus); if (!*objToLoad) { *objToLoad = new (serEng.getMemoryManager()) RefHashTableOf( hashModulus , toAdopt , serEng.getMemoryManager() ); } serEng.registerObject(*objToLoad); XMLSize_t itemNumber = 0; serEng.readSize (itemNumber); for (XMLSize_t itemIndex = 0; itemIndex < itemNumber; itemIndex++) { //This is used solely by SchemaGrammar and by all means it must be //SchemaAttDef, ideally we may change it to RefHashTableOf //later on. //Affected files IGXMLScanner, SGXMLScanner, SchemaGrammar, TraverseSchema //XMLAttDef* data; SchemaAttDef* data; serEng>>data; (*objToLoad)->put((void*)data->getAttName()->getLocalPart(), data); } } } void XTemplateSerializer::storeObject(RefHashTableOf* const objToStore , XSerializeEngine& serEng) { if (serEng.needToStoreObject(objToStore)) { serEng.writeSize (objToStore->getHashModulus()); RefHashTableOfEnumerator e(objToStore, false, objToStore->getMemoryManager()); XMLSize_t itemNumber = 0; while (e.hasMoreElements()) { e.nextElement(); itemNumber++; } serEng.writeSize (itemNumber); e.Reset(); #ifdef XERCES_DEBUG_SORT_GRAMMAR //to sort the key SORT_KEYSET_ONEKEY(serEng.getMemoryManager()) //to store the data for (XMLSize_t i=0; i < itemNumber; i++) { GET_NEXT_KEYSET() DTDAttDef* data = objToStore->get(strKey); serEng<get(e.nextElementKey()); serEng<** objToLoad , int , bool toAdopt , XSerializeEngine& serEng) { if (serEng.needToLoadObject((void**)objToLoad)) { XMLSize_t hashModulus; serEng.readSize (hashModulus); if (!*objToLoad) { *objToLoad = new (serEng.getMemoryManager()) RefHashTableOf( hashModulus , toAdopt , serEng.getMemoryManager() ); } serEng.registerObject(*objToLoad); XMLSize_t itemNumber = 0; serEng.readSize (itemNumber); for (XMLSize_t itemIndex = 0; itemIndex < itemNumber; itemIndex++) { DTDAttDef* data; serEng>>data; (*objToLoad)->put((void*)data->getFullName(), data); } } } void XTemplateSerializer::storeObject(RefHashTableOf* const objToStore , XSerializeEngine& serEng) { if (serEng.needToStoreObject(objToStore)) { serEng.writeSize (objToStore->getHashModulus()); RefHashTableOfEnumerator e(objToStore, false, objToStore->getMemoryManager()); XMLSize_t itemNumber = 0; while (e.hasMoreElements()) { e.nextElement(); itemNumber++; } serEng.writeSize (itemNumber); e.Reset(); #ifdef XERCES_DEBUG_SORT_GRAMMAR //to sort the key SORT_KEYSET_ONEKEY(serEng.getMemoryManager()) //to store the data for (XMLSize_t i=0; i < itemNumber; i++) { GET_NEXT_KEYSET() ComplexTypeInfo* data = objToStore->get(strKey); serEng<get(e.nextElementKey()); serEng<** objToLoad , int , bool toAdopt , XSerializeEngine& serEng) { if (serEng.needToLoadObject((void**)objToLoad)) { XMLSize_t hashModulus; serEng.readSize (hashModulus); if (!*objToLoad) { *objToLoad = new (serEng.getMemoryManager()) RefHashTableOf( hashModulus , toAdopt , serEng.getMemoryManager() ); } serEng.registerObject(*objToLoad); XMLSize_t itemNumber = 0; serEng.readSize (itemNumber); for (XMLSize_t itemIndex = 0; itemIndex < itemNumber; itemIndex++) { ComplexTypeInfo* data; serEng>>data; (*objToLoad)->put((void*)data->getTypeName(), data); } } } void XTemplateSerializer::storeObject(RefHashTableOf* const objToStore , XSerializeEngine& serEng) { if (serEng.needToStoreObject(objToStore)) { serEng.writeSize (objToStore->getHashModulus()); RefHashTableOfEnumerator e(objToStore, false, objToStore->getMemoryManager()); XMLSize_t itemNumber = 0; while (e.hasMoreElements()) { e.nextElement(); itemNumber++; } serEng.writeSize (itemNumber); e.Reset(); #ifdef XERCES_DEBUG_SORT_GRAMMAR //to sort the key SORT_KEYSET_ONEKEY(serEng.getMemoryManager()) //to store the data for (XMLSize_t i=0; i < itemNumber; i++) { GET_NEXT_KEYSET() unsigned int id = serEng.getStringPool()->getId(strKey); serEng<get(strKey); serEng<getId(key); // key = StringPool->getValueForId(XercesGroupInfo::getNameSpaceId()) // + chComma // + StringPool->getValueForId(XercesGroupInfo::getNameId()) // // and the key is guranteed in the StringPool // // // if (id == 0) // { // throw exception // } // serEng<get(key); serEng<** objToLoad , int , bool toAdopt , XSerializeEngine& serEng) { if (serEng.needToLoadObject((void**)objToLoad)) { XMLSize_t hashModulus; serEng.readSize (hashModulus); if (!*objToLoad) { *objToLoad = new (serEng.getMemoryManager()) RefHashTableOf( hashModulus , toAdopt , serEng.getMemoryManager() ); } serEng.registerObject(*objToLoad); XMLSize_t itemNumber = 0; serEng.readSize (itemNumber); for (XMLSize_t itemIndex = 0; itemIndex < itemNumber; itemIndex++) { unsigned int id; serEng>>id; XMLCh* key = (XMLCh*) serEng.getStringPool()->getValueForId(id); XercesGroupInfo* data; serEng>>data; (*objToLoad)->put((void*)key, data); } } } void XTemplateSerializer::storeObject(RefHashTableOf* const objToStore , XSerializeEngine& serEng) { if (serEng.needToStoreObject(objToStore)) { serEng.writeSize (objToStore->getHashModulus()); RefHashTableOfEnumerator e(objToStore, false, objToStore->getMemoryManager()); XMLSize_t itemNumber = 0; while (e.hasMoreElements()) { e.nextElement(); itemNumber++; } serEng.writeSize (itemNumber); e.Reset(); #ifdef XERCES_DEBUG_SORT_GRAMMAR //to sort the key SORT_KEYSET_ONEKEY(serEng.getMemoryManager()) //to store the data for (XMLSize_t i=0; i < itemNumber; i++) { GET_NEXT_KEYSET() XercesAttGroupInfo* data = objToStore->get(strKey); serEng<get(e.nextElementKey()); serEng<** objToLoad , int , bool toAdopt , XSerializeEngine& serEng) { if (serEng.needToLoadObject((void**)objToLoad)) { XMLSize_t hashModulus; serEng.readSize (hashModulus); if (!*objToLoad) { *objToLoad = new (serEng.getMemoryManager()) RefHashTableOf( hashModulus , toAdopt , serEng.getMemoryManager() ); } serEng.registerObject(*objToLoad); XMLSize_t itemNumber = 0; serEng.readSize (itemNumber); for (XMLSize_t itemIndex = 0; itemIndex < itemNumber; itemIndex++) { XercesAttGroupInfo* data; serEng>>data; XMLCh* key = (XMLCh*) serEng.getStringPool()->getValueForId(data->getNameId()); (*objToLoad)->put((void*)key, data); } } } void XTemplateSerializer::storeObject(RefHashTableOf* const objToStore , XSerializeEngine& serEng) { if (serEng.needToStoreObject(objToStore)) { serEng.writeSize (objToStore->getHashModulus()); RefHashTableOfEnumerator e(objToStore, false, objToStore->getMemoryManager()); XMLSize_t itemNumber = 0; while (e.hasMoreElements()) { e.nextElement(); itemNumber++; } serEng.writeSize (itemNumber); e.Reset(); #ifdef XERCES_DEBUG_SORT_GRAMMAR //to sort the key SORT_KEYSET_ONEKEY(serEng.getMemoryManager()) //to store the data for (XMLSize_t i=0; i < itemNumber; i++) { GET_NEXT_KEYSET() serEng.writeString(strKey); XMLRefInfo* data = objToStore->get(strKey); serEng<get(key); serEng<** objToLoad , int , bool toAdopt , XSerializeEngine& serEng) { if (serEng.needToLoadObject((void**)objToLoad)) { XMLSize_t hashModulus; serEng.readSize (hashModulus); if (!*objToLoad) { *objToLoad = new (serEng.getMemoryManager()) RefHashTableOf( hashModulus , toAdopt , serEng.getMemoryManager() ); } serEng.registerObject(*objToLoad); XMLSize_t itemNumber = 0; serEng.readSize (itemNumber); for (XMLSize_t itemIndex = 0; itemIndex < itemNumber; itemIndex++) { XMLCh* key; serEng.readString(key); XMLRefInfo* data; serEng>>data; (*objToLoad)->put((void*)key, data); } } } void XTemplateSerializer::storeObject(RefHashTableOf* const objToStore , XSerializeEngine& serEng) { if (serEng.needToStoreObject(objToStore)) { serEng.writeSize (objToStore->getHashModulus()); RefHashTableOfEnumerator e(objToStore, false, objToStore->getMemoryManager()); XMLSize_t itemNumber = 0; while (e.hasMoreElements()) { e.nextElement(); itemNumber++; } serEng.writeSize (itemNumber); e.Reset(); #ifdef XERCES_DEBUG_SORT_GRAMMAR //to sort the key SORT_KEYSET_ONEKEY(serEng.getMemoryManager()) //to store the data for (XMLSize_t i=0; i < itemNumber; i++) { GET_NEXT_KEYSET() DatatypeValidator* data = objToStore->get(strKey); DatatypeValidator::storeDV(serEng, data); } #else while (e.hasMoreElements()) { /*** * to do: verify valid id * * XMLCh* key = (XMLCh*) e.nextElementKey(); * unsigned int id = serEng.getStringPool()->getId(key); * if (id == 0) * throw exception ***/ DatatypeValidator* data = objToStore->get(e.nextElementKey()); DatatypeValidator::storeDV(serEng, data); } #endif } } void XTemplateSerializer::loadObject(RefHashTableOf** objToLoad , int , bool toAdopt , XSerializeEngine& serEng) { if (serEng.needToLoadObject((void**)objToLoad)) { XMLSize_t hashModulus; serEng.readSize (hashModulus); if (!*objToLoad) { *objToLoad = new (serEng.getMemoryManager()) RefHashTableOf( hashModulus , toAdopt , serEng.getMemoryManager() ); } serEng.registerObject(*objToLoad); XMLSize_t itemNumber = 0; serEng.readSize (itemNumber); for (XMLSize_t itemIndex = 0; itemIndex < itemNumber; itemIndex++) { DatatypeValidator* data; data = DatatypeValidator::loadDV(serEng); /*** * restore the key ***/ XMLCh* typeUri = (XMLCh*) data->getTypeUri(); XMLCh* typeLocal = (XMLCh*) data->getTypeLocalName(); XMLSize_t uriLen = XMLString::stringLen(typeUri); XMLSize_t localLen = XMLString::stringLen(typeLocal); XMLCh* typeKey = (XMLCh*) serEng.getMemoryManager()->allocate ( (uriLen + localLen + 2) * sizeof(XMLCh) ); // "typeuri,typeLocal" XMLString::moveChars(typeKey, typeUri, uriLen+1); typeKey[uriLen] = chComma; XMLString::moveChars(&typeKey[uriLen+1], typeLocal, localLen+1); typeKey[uriLen + localLen + 1] = chNull; ArrayJanitor janName(typeKey, serEng.getMemoryManager()); /* * get the string from string pool * * to do: ***/ unsigned int id = serEng.getStringPool()->getId(typeKey); XMLCh* refKey = (XMLCh*) serEng.getStringPool()->getValueForId(id); (*objToLoad)->put((void*)refKey, data); } } } void XTemplateSerializer::storeObject(RefHashTableOf* const objToStore , XSerializeEngine& serEng) { if (serEng.needToStoreObject(objToStore)) { serEng.writeSize (objToStore->getHashModulus()); RefHashTableOfEnumerator e(objToStore, false, objToStore->getMemoryManager()); XMLSize_t itemNumber = 0; while (e.hasMoreElements()) { e.nextElement(); itemNumber++; } serEng.writeSize (itemNumber); e.Reset(); #ifdef XERCES_DEBUG_SORT_GRAMMAR //to sort the key SORT_KEYSET_ONEKEY(serEng.getMemoryManager()) //to store the data for (XMLSize_t i=0; i < itemNumber; i++) { GET_NEXT_KEYSET() Grammar* data = objToStore->get(strKey); Grammar::storeGrammar(serEng, data); } #else while (e.hasMoreElements()) { Grammar* data = objToStore->get(e.nextElementKey()); Grammar::storeGrammar(serEng, data); } #endif } } void XTemplateSerializer::loadObject(RefHashTableOf** objToLoad , int , bool toAdopt , XSerializeEngine& serEng) { if (serEng.needToLoadObject((void**)objToLoad)) { XMLSize_t hashModulus; serEng.readSize (hashModulus); if (!*objToLoad) { *objToLoad = new (serEng.getMemoryManager()) RefHashTableOf( hashModulus , toAdopt , serEng.getMemoryManager() ); } serEng.registerObject(*objToLoad); XMLSize_t itemNumber = 0; serEng.readSize (itemNumber); for (XMLSize_t itemIndex = 0; itemIndex < itemNumber; itemIndex++) { Grammar* data; data = Grammar::loadGrammar(serEng); XMLCh* key = (XMLCh*) data->getGrammarDescription()->getGrammarKey(); (*objToLoad)->put(key, data); } } } void XTemplateSerializer::storeObject(RefHashTableOf* const objToStore , XSerializeEngine& serEng) { if (serEng.needToStoreObject(objToStore)) { serEng.writeSize (objToStore->getHashModulus()); RefHashTableOfEnumerator e(objToStore, false, objToStore->getMemoryManager()); #ifdef XERCES_DEBUG_SORT_GRAMMAR //get the total item number unsigned int itemNumber = 0; while (e.hasMoreElements()) { void* key = e.nextElementKey(); XSerializeEngine::XSerializedObjectId_t keyId = serEng.lookupStorePool(key); if (keyId) itemNumber++; } serEng.writeSize (itemNumber); e.Reset(); //to sort the key //though keyId is not supposed to be involved in compare //we merely use the KeySet to encap both the string key and keyid SortArray sortArray(itemNumber, objToStore->getMemoryManager()); while (e.hasMoreElements()) { void* key = e.nextElementKey(); XSerializeEngine::XSerializedObjectId_t keyId = serEng.lookupStorePool(key); if (keyId) { KeySet* keySet = new (objToStore->getMemoryManager()) KeySet((XMLCh*)key, keyId, 0, objToStore->getMemoryManager()); sortArray.addElement(keySet); } } sortArray.sort(); //to store the data for (XMLSize_t i=0; i < itemNumber; i++) { GET_NEXT_KEYSET() XSerializeEngine::XSerializedObjectId_t keyId = (XSerializeEngine::XSerializedObjectId_t)intKey1; XSAnnotation* data = objToStore->get(strKey); serEng< ids(16, serEng.getMemoryManager()); ValueVectorOf keys(16, serEng.getMemoryManager()); while (e.hasMoreElements()) { void* key = e.nextElementKey(); XSerializeEngine::XSerializedObjectId_t keyId = serEng.lookupStorePool(key); if (keyId) { ids.addElement(keyId); keys.addElement(key); } } XMLSize_t itemNumber = ids.size(); serEng.writeSize (itemNumber); for (XMLSize_t i=0; iget(keys.elementAt(i)); serEng<** objToLoad , int , bool toAdopt , XSerializeEngine& serEng) { if (serEng.needToLoadObject((void**)objToLoad)) { XMLSize_t hashModulus; serEng.readSize (hashModulus); if (!*objToLoad) { *objToLoad = new (serEng.getMemoryManager()) RefHashTableOf( hashModulus , toAdopt , serEng.getMemoryManager() ); } serEng.registerObject(*objToLoad); XMLSize_t itemNumber = 0; serEng.readSize (itemNumber); XMLSize_t itemIndex; XSerializeEngine::XSerializedObjectId_t keyId; void* key; XSAnnotation* data; if (!serEng.fGrammarPool->getIgnoreSerializedAnnotations()) { for (itemIndex = 0; itemIndex < itemNumber; itemIndex++) { serEng>>keyId; key = serEng.lookupLoadPool(keyId); serEng>>data; (*objToLoad)->put(key, data); } } else { for (itemIndex = 0; itemIndex < itemNumber; itemIndex++) { serEng>>keyId; key = serEng.lookupLoadPool(keyId); serEng>>data; delete data; } } } } /********************************************************** * * RefHash2KeysTableOf * * SchemaAttDef * ElemVector * ***********************************************************/ void XTemplateSerializer::storeObject(RefHash2KeysTableOf* const objToStore , XSerializeEngine& serEng) { if (serEng.needToStoreObject(objToStore)) { serEng.writeSize (objToStore->getHashModulus()); XMLSize_t itemNumber = 0; RefHash2KeysTableOfEnumerator e(objToStore, false, objToStore->getMemoryManager()); while (e.hasMoreElements()) { e.nextElement(); itemNumber++; } serEng.writeSize (itemNumber); e.Reset(); #ifdef XERCES_DEBUG_SORT_GRAMMAR //to sort the key SORT_KEYSET_TWOKEYS(serEng.getMemoryManager()) //to store the data for (XMLSize_t i=0; i < itemNumber; i++) { GET_NEXT_KEYSET() SchemaAttDef* data = objToStore->get(strKey, intKey1); serEng<get(key1, key2); serEng<** objToLoad , int , bool toAdopt , XSerializeEngine& serEng) { if (serEng.needToLoadObject((void**)objToLoad)) { XMLSize_t hashModulus; serEng.readSize (hashModulus); if (!*objToLoad) { *objToLoad = new (serEng.getMemoryManager()) RefHash2KeysTableOf( hashModulus , toAdopt , serEng.getMemoryManager() ); } serEng.registerObject(*objToLoad); XMLSize_t itemNumber = 0; serEng.readSize (itemNumber); for (XMLSize_t itemIndex = 0; itemIndex < itemNumber; itemIndex++) { SchemaAttDef* data; serEng>>data; XMLCh* key1 = data->getAttName()->getLocalPart(); int key2 = data->getAttName()->getURI(); //key2==data->getId() (*objToLoad)->put((void*)key1, key2, data); } } } void XTemplateSerializer::storeObject(RefHash2KeysTableOf* const objToStore , XSerializeEngine& serEng) { if (serEng.needToStoreObject(objToStore)) { serEng.writeSize (objToStore->getHashModulus()); XMLSize_t itemNumber = 0; RefHash2KeysTableOfEnumerator e(objToStore, false, objToStore->getMemoryManager()); while (e.hasMoreElements()) { e.nextElement(); itemNumber++; } serEng.writeSize (itemNumber); e.Reset(); #ifdef XERCES_DEBUG_SORT_GRAMMAR //to sort the key SORT_KEYSET_TWOKEYS(serEng.getMemoryManager()) //to store the data for (XMLSize_t i=0; i < itemNumber; i++) { GET_NEXT_KEYSET() serEng.writeString(strKey); serEng<get(strKey, intKey1); storeObject(data, serEng); } #else while (e.hasMoreElements()) { void* key1; int key2; e.nextElementKey(key1, key2); serEng.writeString((const XMLCh*)key1); serEng<get(key1, key2); storeObject(data, serEng); } #endif } } void XTemplateSerializer::loadObject(RefHash2KeysTableOf** objToLoad , int , bool toAdopt , XSerializeEngine& serEng) { if (serEng.needToLoadObject((void**)objToLoad)) { XMLSize_t hashModulus; serEng.readSize (hashModulus); if (!*objToLoad) { *objToLoad = new (serEng.getMemoryManager()) RefHash2KeysTableOf( hashModulus , toAdopt , serEng.getMemoryManager() ); } serEng.registerObject(*objToLoad); XMLSize_t itemNumber = 0; serEng.readSize (itemNumber); for (XMLSize_t itemIndex = 0; itemIndex < itemNumber; itemIndex++) { XMLCh* key1; serEng.readString(key1); int key2; serEng>>key2; ElemVector* data = 0; //don't call destructor loadObject(&data, 8, false, serEng); /*** * * There must be one element in the vector whose * susbititutionGroupElem matches the (key1,key2) * ***/ // bool FOUND=false; XMLSize_t vectorSize = data->size(); for ( XMLSize_t i = 0; i < vectorSize; i++) { SchemaElementDecl*& elem = data->elementAt(i); SchemaElementDecl* subElem = elem->getSubstitutionGroupElem(); XMLCh* elemName = subElem->getBaseName(); int uri = subElem->getURI(); if (XMLString::equals(elemName, key1) && (uri == key2) ) { //release the temp serEng.getMemoryManager()->deallocate(key1); key1 = elemName; //FOUND=true; break; } } /*** * if (!FOUND) * { * throw exception * } ***/ (*objToLoad)->put((void*)key1, key2, data); } } } /********************************************************** * * RefHash3KeysIdPool * * SchemaElementDecl * * maintain the same order through id ***********************************************************/ void XTemplateSerializer::storeObject(RefHash3KeysIdPool* const objToStore , XSerializeEngine& serEng) { if (serEng.needToStoreObject(objToStore)) { serEng.writeSize (objToStore->getHashModulus()); RefHash3KeysIdPoolEnumerator e(objToStore, false, objToStore->getMemoryManager()); serEng.writeSize (e.size()); void* strkey; int key1; int key2; /* Update to store key2 separately as for the putGroupElemDecl the key is not the enclosing scope but another value. */ while (e.hasMoreKeys()) { e.nextElementKey(strkey, key1, key2); serEng<getByKey(strkey, key1, key2); serEng<** objToLoad , int , bool toAdopt , int initSize2 , XSerializeEngine& serEng) { if (serEng.needToLoadObject((void**)objToLoad)) { XMLSize_t hashModulus; serEng.readSize (hashModulus); if (!*objToLoad) { *objToLoad = new (serEng.getMemoryManager()) RefHash3KeysIdPool( hashModulus , toAdopt , initSize2 , serEng.getMemoryManager()); } serEng.registerObject(*objToLoad); XMLSize_t itemNumber = 0; serEng.readSize (itemNumber); int scopeKey; SchemaElementDecl* elemDecl; for (XMLSize_t itemIndex = 0; itemIndex < itemNumber; itemIndex++) { serEng>>scopeKey; serEng>>elemDecl; (*objToLoad)->put(elemDecl->getBaseName() , elemDecl->getURI() , scopeKey , elemDecl); } } } /********************************************************** * * NameIdPool * no NameIdPool::nextElementKey() * * DTDElementDecl * DTDEntityDecl * XMLNotationDecl * * maintain the same order through id ***********************************************************/ void XTemplateSerializer::storeObject(NameIdPool* const objToStore , XSerializeEngine& serEng) { if (serEng.needToStoreObject(objToStore)) { NameIdPoolEnumerator e(objToStore, objToStore->getMemoryManager()); serEng<<(unsigned int)e.size(); while (e.hasMoreElements()) { DTDElementDecl& data = e.nextElement(); data.serialize(serEng); } } } void XTemplateSerializer::loadObject(NameIdPool** objToLoad , int initSize , int initSize2 , XSerializeEngine& serEng) { if (serEng.needToLoadObject((void**)objToLoad)) { if (!*objToLoad) { if (initSize < 0) initSize = 16; *objToLoad = new (serEng.getMemoryManager()) NameIdPool( initSize , initSize2 , serEng.getMemoryManager() ); } serEng.registerObject(*objToLoad); unsigned int itemNumber = 0; serEng >> itemNumber; for (unsigned int itemIndex = 0; itemIndex < itemNumber; itemIndex++) { DTDElementDecl* data = new (serEng.getMemoryManager()) DTDElementDecl(serEng.getMemoryManager()); data->serialize(serEng); (*objToLoad)->put(data); } } } void XTemplateSerializer::storeObject(NameIdPool* const objToStore , XSerializeEngine& serEng) { if (serEng.needToStoreObject(objToStore)) { NameIdPoolEnumerator e(objToStore, objToStore->getMemoryManager()); serEng<<(unsigned int)e.size(); while (e.hasMoreElements()) { DTDEntityDecl& data = e.nextElement(); data.serialize(serEng); } } } void XTemplateSerializer::loadObject(NameIdPool** objToLoad , int initSize , int initSize2 , XSerializeEngine& serEng) { if (serEng.needToLoadObject((void**)objToLoad)) { if (!*objToLoad) { if (initSize < 0) initSize = 16; *objToLoad = new (serEng.getMemoryManager()) NameIdPool( initSize , initSize2 , serEng.getMemoryManager() ); } serEng.registerObject(*objToLoad); unsigned int itemNumber = 0; serEng >> itemNumber; for (unsigned int itemIndex = 0; itemIndex < itemNumber; itemIndex++) { DTDEntityDecl* data = new (serEng.getMemoryManager()) DTDEntityDecl(serEng.getMemoryManager()); data->serialize(serEng); (*objToLoad)->put(data); } } } void XTemplateSerializer::storeObject(NameIdPool* const objToStore , XSerializeEngine& serEng) { if (serEng.needToStoreObject(objToStore)) { NameIdPoolEnumerator e(objToStore, objToStore->getMemoryManager()); serEng<<(unsigned int)e.size(); while (e.hasMoreElements()) { XMLNotationDecl& data = e.nextElement(); data.serialize(serEng); } } } void XTemplateSerializer::loadObject(NameIdPool** objToLoad , int initSize , int initSize2 , XSerializeEngine& serEng) { if (serEng.needToLoadObject((void**)objToLoad)) { if (!*objToLoad) { if (initSize < 0) initSize = 16; *objToLoad = new (serEng.getMemoryManager()) NameIdPool( initSize , initSize2 , serEng.getMemoryManager() ); } serEng.registerObject(*objToLoad); unsigned int itemNumber = 0; serEng >> itemNumber; for (unsigned int itemIndex = 0; itemIndex < itemNumber; itemIndex++) { XMLNotationDecl* data = new (serEng.getMemoryManager()) XMLNotationDecl(serEng.getMemoryManager()); data->serialize(serEng); (*objToLoad)->put(data); } } } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/internal/BinFileOutputStream.cpp0000644000175000017500000000651010643454104022716 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: BinFileOutputStream.cpp 553915 2007-07-06 14:57:08Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // BinFileOutputStream: Constructors and Destructor // --------------------------------------------------------------------------- BinFileOutputStream::~BinFileOutputStream() { if (getIsOpen()) XMLPlatformUtils::closeFile(fSource, fMemoryManager); } BinFileOutputStream::BinFileOutputStream(const XMLCh* const fileName , MemoryManager* const manager) :fSource(XMLPlatformUtils::openFileToWrite(fileName, manager)) ,fMemoryManager(manager) { } BinFileOutputStream::BinFileOutputStream(const char* const fileName , MemoryManager* const manager) :fSource(XMLPlatformUtils::openFileToWrite(fileName, manager)) ,fMemoryManager(manager) { } // --------------------------------------------------------------------------- // BinFileOutputStream: Getter methods // --------------------------------------------------------------------------- XMLFilePos BinFileOutputStream::getSize() const { return XMLPlatformUtils::fileSize(fSource, fMemoryManager); } // --------------------------------------------------------------------------- // BinFileOutputStream: Stream management methods // --------------------------------------------------------------------------- void BinFileOutputStream::reset() { XMLPlatformUtils::resetFile(fSource, fMemoryManager); } // --------------------------------------------------------------------------- // BinFileOutputStream: Implementation of the input stream interface // --------------------------------------------------------------------------- XMLFilePos BinFileOutputStream::curPos() const { return XMLPlatformUtils::curFilePos(fSource, fMemoryManager); } void BinFileOutputStream::writeBytes( const XMLByte* const toGo , const XMLSize_t maxToWrite) { // // Write up to the maximum bytes requested. // XMLPlatformUtils::writeBufferToFile(fSource, maxToWrite, toGo, fMemoryManager); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/internal/ReaderMgr.hpp0000644000175000017500000003621611274550527020703 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: ReaderMgr.hpp 833045 2009-11-05 13:21:27Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_READERMGR_HPP) #define XERCESC_INCLUDE_GUARD_READERMGR_HPP #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN class XMLEntityDecl; class XMLEntityHandler; class XMLDocumentHandler; class XMLScanner; // --------------------------------------------------------------------------- // This class is used by the scanner. The scanner must deal with expansion // of entities, some of which are totally different files (external parsed // entities.) It does so by pushing readers onto a stack. The top reader is // the one it wants to read out of, but that one must be popped when it is // empty. To keep that logic from being all over the place, the scanner // talks to the reader manager, which handles the stack and popping off // used up readers. // --------------------------------------------------------------------------- class XMLPARSER_EXPORT ReaderMgr : public XMemory , public Locator { public : // ----------------------------------------------------------------------- // Class specific types // ----------------------------------------------------------------------- struct LastExtEntityInfo : public XMemory { const XMLCh* systemId; const XMLCh* publicId; XMLFileLoc lineNumber; XMLFileLoc colNumber; }; // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- ReaderMgr(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); ~ReaderMgr(); // ----------------------------------------------------------------------- // Convenience scanning methods // // This are all convenience methods that work in terms of the core // character spooling methods. // ----------------------------------------------------------------------- bool atEOF() const; bool getName(XMLBuffer& toFill); bool getQName(XMLBuffer& toFill, int* colonPosition); bool getNameToken(XMLBuffer& toFill); XMLCh getNextChar(); bool getNextCharIfNot(const XMLCh chNotToGet, XMLCh& chGotten); void movePlainContentChars(XMLBuffer &dest); void getSpaces(XMLBuffer& toFill); void getUpToCharOrWS(XMLBuffer& toFill, const XMLCh toCheck); bool isEmpty() const; bool lookingAtChar(const XMLCh toCheck); bool lookingAtSpace(); XMLCh peekNextChar(); bool skipIfQuote(XMLCh& chGotten); void skipPastChar(const XMLCh toSkip); void skipPastSpaces(bool& skippedSomething, bool inDecl = false); void skipPastSpaces(); void skipToChar(const XMLCh toSkipTo); bool skippedChar(const XMLCh toSkip); bool skippedSpace(); bool skippedString(const XMLCh* const toSkip); bool skippedStringLong(const XMLCh* const toSkip); void skipQuotedString(const XMLCh quoteCh); XMLCh skipUntilIn(const XMLCh* const listToSkip); XMLCh skipUntilInOrWS(const XMLCh* const listToSkip); bool peekString(const XMLCh* const toPeek); // ----------------------------------------------------------------------- // Control methods // ----------------------------------------------------------------------- void cleanStackBackTo(const XMLSize_t readerNum); XMLReader* createReader ( const InputSource& src , const bool xmlDecl , const XMLReader::RefFrom refFrom , const XMLReader::Types type , const XMLReader::Sources source , const bool calcSrsOfs = true , XMLSize_t lowWaterMark = 100 ); XMLReader* createReader ( const XMLCh* const sysId , const XMLCh* const pubId , const bool xmlDecl , const XMLReader::RefFrom refFrom , const XMLReader::Types type , const XMLReader::Sources source , InputSource*& srcToFill , const bool calcSrcOfs = true , XMLSize_t lowWaterMark = 100 , const bool disableDefaultEntityResolution = false ); XMLReader* createReader ( const XMLCh* const baseURI , const XMLCh* const sysId , const XMLCh* const pubId , const bool xmlDecl , const XMLReader::RefFrom refFrom , const XMLReader::Types type , const XMLReader::Sources source , InputSource*& srcToFill , const bool calcSrcOfs = true , XMLSize_t lowWaterMark = 100 , const bool disableDefaultEntityResolution = false ); XMLReader* createIntEntReader ( const XMLCh* const sysId , const XMLReader::RefFrom refFrom , const XMLReader::Types type , const XMLCh* const dataBuf , const XMLSize_t dataLen , const bool copyBuf , const bool calcSrcOfs = true , XMLSize_t lowWaterMark = 100 ); bool isScanningPERefOutOfLiteral() const; bool pushReader ( XMLReader* const reader , XMLEntityDecl* const entity ); void reset(); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const XMLCh* getCurrentEncodingStr() const; const XMLEntityDecl* getCurrentEntity() const; XMLEntityDecl* getCurrentEntity(); const XMLReader* getCurrentReader() const; XMLReader* getCurrentReader(); XMLSize_t getCurrentReaderNum() const; XMLSize_t getReaderDepth() const; void getLastExtEntityInfo(LastExtEntityInfo& lastInfo) const; XMLFilePos getSrcOffset() const; bool getThrowEOE() const; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- void setEntityHandler(XMLEntityHandler* const newHandler); void setThrowEOE(const bool newValue); void setXMLVersion(const XMLReader::XMLVersion version); void setStandardUriConformant(const bool newValue); // ----------------------------------------------------------------------- // Implement the SAX Locator interface // ----------------------------------------------------------------------- virtual const XMLCh* getPublicId() const; virtual const XMLCh* getSystemId() const; virtual XMLFileLoc getLineNumber() const; virtual XMLFileLoc getColumnNumber() const; private : // ----------------------------------------------------------------------- // Private helper methods // ----------------------------------------------------------------------- const XMLReader* getLastExtEntity(const XMLEntityDecl*& itsEntity) const; bool popReader(); // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- ReaderMgr(const ReaderMgr&); ReaderMgr& operator=(const ReaderMgr&); // ----------------------------------------------------------------------- // Private data members // // fCurEntity // This is the current top of stack entity. We pull it off the stack // and store it here for efficiency. // // fCurReader // This is the current top of stack reader. We pull it off the // stack and store it here for efficiency. // // fEntityHandler // This is the installed entity handler. Its installed via the // scanner but he passes it on to us since we need it the most, in // process of creating external entity readers. // // fEntityStack // We need to keep up with which of the pushed readers are pushed // entity values that are being spooled. This is done to avoid the // problem of recursive definitions. This stack consists of refs to // EntityDecl objects for the pushed entities. // // fNextReaderNum // This is the reader serial number value. Each new reader that is // created from this reader is given a successive number. This lets // us catch things like partial markup errors and such. // // fReaderStack // This is the stack of reader references. We own all the readers // and destroy them when they are used up. // // fThrowEOE // This flag controls whether we throw an exception when we hit an // end of entity. The scanner doesn't really need to know about ends // of entities in the int/ext subsets, so it will turn this flag off // until it gets into the content usually. // // fXMLVersion // Enum to indicate if each Reader should be created as XML 1.1 or // XML 1.0 conformant // // fStandardUriConformant // This flag controls whether we force conformant URI // ----------------------------------------------------------------------- XMLEntityDecl* fCurEntity; XMLReader* fCurReader; XMLEntityHandler* fEntityHandler; RefStackOf* fEntityStack; unsigned int fNextReaderNum; RefStackOf* fReaderStack; bool fThrowEOE; XMLReader::XMLVersion fXMLVersion; bool fStandardUriConformant; MemoryManager* fMemoryManager; }; // --------------------------------------------------------------------------- // ReaderMgr: Inlined methods // // NOTE: We cannot put these in alphabetical and type order as we usually // do because some of the compilers we have to support are too stupid to // understand out of order inlines! // --------------------------------------------------------------------------- inline XMLSize_t ReaderMgr::getCurrentReaderNum() const { return fCurReader->getReaderNum(); } inline const XMLReader* ReaderMgr::getCurrentReader() const { return fCurReader; } inline XMLReader* ReaderMgr::getCurrentReader() { return fCurReader; } inline bool ReaderMgr::getName(XMLBuffer& toFill) { toFill.reset(); return fCurReader->getName(toFill, false); } inline bool ReaderMgr::getQName(XMLBuffer& toFill, int *colonPosition) { toFill.reset(); return fCurReader->getQName(toFill, colonPosition); } inline bool ReaderMgr::getNameToken(XMLBuffer& toFill) { toFill.reset(); return fCurReader->getName(toFill, true); } inline bool ReaderMgr::getNextCharIfNot(const XMLCh chNotToGet, XMLCh& chGotten) { return fCurReader->getNextCharIfNot(chNotToGet, chGotten); } inline void ReaderMgr::movePlainContentChars(XMLBuffer &dest) { fCurReader->movePlainContentChars(dest); } inline bool ReaderMgr::getThrowEOE() const { return fThrowEOE; } inline XMLFilePos ReaderMgr::getSrcOffset() const { return fCurReader? fCurReader->getSrcOffset() : 0; } inline bool ReaderMgr::lookingAtChar(const XMLCh chToCheck) { return (chToCheck == peekNextChar()); } inline bool ReaderMgr::lookingAtSpace() { XMLCh c = peekNextChar(); return fCurReader->isWhitespace(c); } inline void ReaderMgr::setThrowEOE(const bool newValue) { fThrowEOE = newValue; } inline void ReaderMgr::setStandardUriConformant(const bool newValue) { fStandardUriConformant = newValue; } inline bool ReaderMgr::skippedString(const XMLCh* const toSkip) { return fCurReader->skippedString(toSkip); } inline bool ReaderMgr::skippedStringLong(const XMLCh* const toSkip) { return fCurReader->skippedStringLong(toSkip); } inline void ReaderMgr::skipToChar(const XMLCh toSkipTo) { XMLCh nextCh = 0; do { // Get chars until we find the one to skip nextCh = getNextChar(); } // Break out at end of input or the char to skip while((nextCh != toSkipTo) && nextCh!=0); } inline void ReaderMgr::skipPastChar(const XMLCh toSkipPast) { XMLCh nextCh = 0; do { // Get chars until we find the one to skip nextCh = getNextChar(); } while((nextCh != toSkipPast) && nextCh!=0); } inline bool ReaderMgr::peekString(const XMLCh* const toPeek) { return fCurReader->peekString(toPeek); } inline void ReaderMgr::setEntityHandler(XMLEntityHandler* const newHandler) { fEntityHandler = newHandler; } inline void ReaderMgr::setXMLVersion(const XMLReader::XMLVersion version) { fXMLVersion = version; fCurReader->setXMLVersion(version); } // // This is a simple class to temporarily change the 'throw at end of entity' // flag of the reader manager. There are some places where we need to // turn this on and off on a scoped basis. // class XMLPARSER_EXPORT ThrowEOEJanitor { public : // ----------------------------------------------------------------------- // Constructors and destructor // ----------------------------------------------------------------------- ThrowEOEJanitor(ReaderMgr* mgrTarget, const bool newValue) : fOld(mgrTarget->getThrowEOE()) , fMgr(mgrTarget) { mgrTarget->setThrowEOE(newValue); } ~ThrowEOEJanitor() { fMgr->setThrowEOE(fOld); }; private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- ThrowEOEJanitor(const ThrowEOEJanitor&); ThrowEOEJanitor& operator=(const ThrowEOEJanitor&); // ----------------------------------------------------------------------- // Private data members // // fOld // The previous value of the flag, which we replaced during ctor, // and will replace during dtor. // // fMgr // A pointer to the reader manager we are going to set/reset the // flag on. // ----------------------------------------------------------------------- bool fOld; ReaderMgr* fMgr; }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/internal/MemoryManagerImpl.cpp0000644000175000017500000000316611033366054022402 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: MemoryManagerImpl.cpp 673975 2008-07-04 09:23:56Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include XERCES_CPP_NAMESPACE_BEGIN MemoryManager* MemoryManagerImpl::getExceptionMemoryManager() { return this; } void* MemoryManagerImpl::allocate(XMLSize_t size) { void* memptr; try { memptr = ::operator new(size); } catch(...) { throw OutOfMemoryException(); } if (memptr != NULL) { return memptr; } throw OutOfMemoryException(); } void MemoryManagerImpl::deallocate(void* p) { if (p) ::operator delete(p); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/internal/CharTypeTables.hpp0000644000175000017500000002136610606722647021707 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: CharTypeTables.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_CHARTYPETABLES_HPP) #define XERCESC_INCLUDE_GUARD_CHARTYPETABLES_HPP #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // These are character type lookup tables. They are included into XMLReader // but are in their own private header in order to keep from making that // file unreadable. // // THE RANGES and SINGLES MUST BE IN NUMERICAL ORDER, because the lookup // method will use this info to short circuit the search! // --------------------------------------------------------------------------- static const XMLCh gBaseChars[] = { // Ranges 0x0041, 0x005A, 0x0061, 0x007A, 0x00C0, 0x00D6, 0x00D8, 0x00F6 , 0x00F8, 0x00FF , 0x0100, 0x0131, 0x0134, 0x013E, 0x0141, 0x0148, 0x014A, 0x017E , 0x0180, 0x01C3, 0x01CD, 0x01F0, 0x01F4, 0x01F5, 0x01FA, 0x0217 , 0x0250, 0x02A8, 0x02BB, 0x02C1, 0x0388, 0x038A, 0x038E, 0x03A1 , 0x03A3, 0x03CE, 0x03D0, 0x03D6, 0x03E2, 0x03F3, 0x0401, 0x040C , 0x040E, 0x044F, 0x0451, 0x045C, 0x045E, 0x0481, 0x0490, 0x04C4 , 0x04C7, 0x04C8, 0x04CB, 0x04CC, 0x04D0, 0x04EB, 0x04EE, 0x04F5 , 0x04F8, 0x04F9, 0x0531, 0x0556, 0x0561, 0x0586, 0x05D0, 0x05EA , 0x05F0, 0x05F2, 0x0621, 0x063A, 0x0641, 0x064A, 0x0671, 0x06B7 , 0x06BA, 0x06BE, 0x06C0, 0x06CE, 0x06D0, 0x06D3, 0x06E5, 0x06E6 , 0x0905, 0x0939, 0x0958, 0x0961, 0x0985, 0x098C, 0x098F, 0x0990 , 0x0993, 0x09A8, 0x09AA, 0x09B0, 0x09B6, 0x09B9, 0x09DC, 0x09DD , 0x09DF, 0x09E1, 0x09F0, 0x09F1, 0x0A05, 0x0A0A, 0x0A0F, 0x0A10 , 0x0A13, 0x0A28, 0x0A2A, 0x0A30, 0x0A32, 0x0A33, 0x0A35, 0x0A36 , 0x0A38, 0x0A39, 0x0A59, 0x0A5C, 0x0A72, 0x0A74, 0x0A85, 0x0A8B , 0x0A8F, 0x0A91, 0x0A93, 0x0AA8, 0x0AAA, 0x0AB0, 0x0AB2, 0x0AB3 , 0x0AB5, 0x0AB9, 0x0B05, 0x0B0C, 0x0B0F, 0x0B10, 0x0B13, 0x0B28 , 0x0B2A, 0x0B30, 0x0B32, 0x0B33, 0x0B36, 0x0B39, 0x0B5C, 0x0B5D , 0x0B5F, 0x0B61, 0x0B85, 0x0B8A, 0x0B8E, 0x0B90, 0x0B92, 0x0B95 , 0x0B99, 0x0B9A, 0x0B9E, 0x0B9F, 0x0BA3, 0x0BA4, 0x0BA8, 0x0BAA , 0x0BAE, 0x0BB5, 0x0BB7, 0x0BB9, 0x0C05, 0x0C0C, 0x0C0E, 0x0C10 , 0x0C12, 0x0C28, 0x0C2A, 0x0C33, 0x0C35, 0x0C39, 0x0C60, 0x0C61 , 0x0C85, 0x0C8C, 0x0C8E, 0x0C90, 0x0C92, 0x0CA8, 0x0CAA, 0x0CB3 , 0x0CB5, 0x0CB9, 0x0CE0, 0x0CE1, 0x0D05, 0x0D0C, 0x0D0E, 0x0D10 , 0x0D12, 0x0D28, 0x0D2A, 0x0D39, 0x0D60, 0x0D61, 0x0E01, 0x0E2E , 0x0E32, 0x0E33, 0x0E40, 0x0E45, 0x0E81, 0x0E82, 0x0E87, 0x0E88 , 0x0E94, 0x0E97, 0x0E99, 0x0E9F, 0x0EA1, 0x0EA3, 0x0EAA, 0x0EAB , 0x0EAD, 0x0EAE, 0x0EB2, 0x0EB3, 0x0EC0, 0x0EC4, 0x0F40, 0x0F47 , 0x0F49, 0x0F69, 0x10A0, 0x10C5, 0x10D0, 0x10F6, 0x1102, 0x1103 , 0x1105, 0x1107, 0x110B, 0x110C, 0x110E, 0x1112, 0x1154, 0x1155 , 0x115F, 0x1161, 0x116D, 0x116E, 0x1172, 0x1173, 0x11AE, 0x11AF , 0x11B7, 0x11B8, 0x11BC, 0x11C2, 0x1E00, 0x1E9B, 0x1EA0, 0x1EF9 , 0x1F00, 0x1F15, 0x1F18, 0x1F1D, 0x1F20, 0x1F45, 0x1F48, 0x1F4D , 0x1F50, 0x1F57, 0x1F5F, 0x1F7D, 0x1F80, 0x1FB4, 0x1FB6, 0x1FBC , 0x1FC2, 0x1FC4, 0x1FC6, 0x1FCC, 0x1FD0, 0x1FD3, 0x1FD6, 0x1FDB , 0x1FE0, 0x1FEC, 0x1FF2, 0x1FF4, 0x1FF6, 0x1FFC, 0x212A, 0x212B , 0x2180, 0x2182, 0x3041, 0x3094, 0x30A1, 0x30FA, 0x3105, 0x312C , 0xAC00, 0xD7A3 , 0x00 // Singles , 0x0386, 0x038C, 0x03DA, 0x03DC, 0x03DE, 0x03E0, 0x0559, 0x06D5 , 0x093D, 0x09B2, 0x0A5E, 0x0A8D, 0x0ABD, 0x0AE0, 0x0B3D, 0x0B9C , 0x0CDE, 0x0E30, 0x0E84, 0x0E8A, 0x0E8D, 0x0EA5, 0x0EA7, 0x0EB0 , 0x0EBD, 0x1100, 0x1109, 0x113C, 0x113E, 0x1140, 0x114C, 0x114E , 0x1150, 0x1159, 0x1163, 0x1165, 0x1167, 0x1169, 0x1175, 0x119E , 0x11A8, 0x11AB, 0x11BA, 0x11EB, 0x11F0, 0x11F9, 0x1F59, 0x1F5B , 0x1F5D, 0x1FBE, 0x2126, 0x212E , 0x00 }; static const XMLCh gCombiningChars[] = { // Ranges 0x0300, 0x0345, 0x0360, 0x0361, 0x0483, 0x0486, 0x0591, 0x05A1 , 0x05A3, 0x05B9, 0x05BB, 0x05BD, 0x05C1, 0x05C2, 0x064B, 0x0652 , 0x06D6, 0x06DC, 0x06DD, 0x06DF, 0x06E0, 0x06E4 , 0x06E7, 0x06E8, 0x06EA, 0x06ED, 0x0901, 0x0903, 0x093E, 0x094C , 0x0951, 0x0954, 0x0962, 0x0963, 0x0981, 0x0983, 0x09C0, 0x09C4 , 0x09C7, 0x09C8, 0x09CB, 0x09CD, 0x09E2, 0x09E3, 0x0A40, 0x0A42 , 0x0A47, 0x0A48, 0x0A4B, 0x0A4D, 0x0A70, 0x0A71, 0x0A81, 0x0A83 , 0x0ABE, 0x0AC5, 0x0AC7, 0x0AC9, 0x0ACB, 0x0ACD, 0x0B01, 0x0B03 , 0x0B3E, 0x0B43, 0x0B47, 0x0B48, 0x0B4B, 0x0B4D, 0x0B56, 0x0B57 , 0x0B82, 0x0B83, 0x0BBE, 0x0BC2, 0x0BC6, 0x0BC8, 0x0BCA, 0x0BCD , 0x0C01, 0x0C03, 0x0C3E, 0x0C44, 0x0C46, 0x0C48, 0x0C4A, 0x0C4D , 0x0C55, 0x0C56, 0x0C82, 0x0C83, 0x0CBE, 0x0CC4, 0x0CC6, 0x0CC8 , 0x0CCA, 0x0CCD, 0x0CD5, 0x0CD6, 0x0D02, 0x0D03, 0x0D3E, 0x0D43 , 0x0D46, 0x0D48, 0x0D4A, 0x0D4D, 0x0E34, 0x0E3A, 0x0E47, 0x0E4E , 0x0EB4, 0x0EB9, 0x0EBB, 0x0EBC, 0x0EC8, 0x0ECD, 0x0F18, 0x0F19 , 0x0F71, 0x0F84, 0x0F86, 0x0F8B, 0x0F90, 0x0F95, 0x0F99, 0x0FAD , 0x0FB1, 0x0FB7, 0x20D0, 0x20DC, 0x302A, 0x302F , 0x00 // Singles , 0x05BF, 0x05C4, 0x0670 , 0x093C, 0x094D, 0x09BC, 0x09BE, 0x09BF, 0x09D7, 0x0A02 , 0x0A3C, 0x0A3E, 0x0A3F, 0x0ABC, 0x0B3C, 0x0BD7, 0x0D57, 0x0E31 , 0x0EB1, 0x0F35, 0x0F37, 0x0F39, 0x0F3E, 0x0F3F, 0x0F97, 0x0FB9 , 0x20E1, 0x3099, 0x309A , 0x00 }; static const XMLCh gDigitChars[] = { // Ranges 0x0030, 0x0039, 0x0660, 0x0669, 0x06F0, 0x06F9, 0x0966, 0x096F , 0x09E6, 0x09EF, 0x0A66, 0x0A6F, 0x0AE6, 0x0AEF, 0x0B66, 0x0B6F , 0x0BE7, 0x0BEF, 0x0C66, 0x0C6F, 0x0CE6, 0x0CEF, 0x0D66, 0x0D6F , 0x0E50, 0x0E59, 0x0ED0, 0x0ED9, 0x0F20, 0x0F29 , 0x00 // Singles , 0x00 }; static const XMLCh gIdeographicChars[] = { // Ranges 0x3021, 0x3029, 0x4E00, 0x9FA5 , 0x00 // Singles , 0x3007 , 0x00 }; static const XMLCh gExtenderChars[] = { // Ranges 0x3031, 0x3035, 0x309D, 0x309E, 0x30FC, 0x30FE , 0x00 // Singles , 0x00B7, 0x02D0, 0x02D1, 0x0387, 0x0640, 0x0E46, 0x0EC6, 0x3005 , 0x00 }; static const XMLCh gPublicIdChars[] = { // Ranges 0x0023, 0x0025, 0x0027, 0x003B, 0x003F, 0x005A, 0x0061, 0x007A , 0x00 // Singles , 0x000A, 0x000D, 0x0020, 0x0021, 0x003D, 0x005F , 0x00 }; static const XMLCh gWhitespaceChars[] = { // Ranges 0x00 , 0x0020, 0x0009, 0x000D, 0x000A , 0x00 }; static const XMLCh gXMLChars[] = { // Ranges 0x0020, 0xD7FF, 0xE000, 0xFFFD , 0x00 , 0x0009, 0x000D, 0x000A , 0x00 }; // The following are for XML 1.1 static const XMLCh gWhitespaceChars1_1[] = { // Ranges 0x00 , 0x0020, 0x0009, 0x000D, 0x000A, 0x0085, 0x2028 , 0x00 }; static const XMLCh gFirstNameChars1_1[] = { // Ranges // Note: 0x10000 to 0xEFFFF are also allowed, need to separately check 0x0041, 0x005A, 0x0061, 0x007A, 0x00C0, 0x00D6, 0x00D8, 0x00F6 , 0x00F8, 0x02FF, 0x0370, 0x037D, 0x037F, 0x1FFF, 0x200C, 0x200D , 0x2070, 0x218F, 0x2C00, 0x2FEF, 0x3001, 0xD7FF, 0xF900, 0xFDCF , 0xFDF0, 0xFFFD , 0x00 , 0x003A, 0x005F , 0x00 }; static const XMLCh gNameChars1_1[] = { // Ranges // Note: 0x10000 to 0xEFFFF are also allowed, need to separately check 0x0030, 0x0039, 0x0041, 0x005A, 0x0061, 0x007A, 0x00C0, 0x00D6 , 0x00D8, 0x00F6, 0x00F8, 0x037D, 0x037F, 0x1FFF, 0x200C, 0x200D , 0x203F, 0x2040, 0x2070, 0x218F, 0x2C00, 0x2FEF, 0x3001, 0xD7FF , 0xF900, 0xFDCF, 0xFDF0, 0xFFFD , 0x00 , 0x002D, 0x002E, 0x003A, 0x005F, 0x00B7 , 0x00 }; static const XMLCh gXMLChars1_1[] = { // Ranges 0x0020, 0x007E, 0x00A0, 0xD7FF, 0xE000, 0xFFFD , 0x00 , 0x0009, 0x000D, 0x000A, 0x0085 , 0x00 }; static const XMLCh gControl_Chars1_1[] = { // Ranges 0x0001, 0x001F, 0x007F, 0x009F , 0x00 , 0x00 }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/internal/ElemStack.cpp0000644000175000017500000007204311272044767020676 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: ElemStack.cpp 830538 2009-10-28 13:41:11Z amassari $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // ElemStack: Constructors and Destructor // --------------------------------------------------------------------------- ElemStack::ElemStack(MemoryManager* const manager) : fEmptyNamespaceId(0) , fGlobalPoolId(0) , fPrefixPool(109, manager) , fGlobalNamespaces(0) , fStack(0) , fStackCapacity(32) , fStackTop(0) , fUnknownNamespaceId(0) , fXMLNamespaceId(0) , fXMLPoolId(0) , fXMLNSNamespaceId(0) , fXMLNSPoolId(0) , fNamespaceMap(0) , fMemoryManager(manager) { // Do an initial allocation of the stack and zero it out fStack = (StackElem**) fMemoryManager->allocate ( fStackCapacity * sizeof(StackElem*) );//new StackElem*[fStackCapacity]; memset(fStack, 0, fStackCapacity * sizeof(StackElem*)); fNamespaceMap = new (fMemoryManager) ValueVectorOf(16, fMemoryManager); } ElemStack::~ElemStack() { if(fGlobalNamespaces) { fMemoryManager->deallocate(fGlobalNamespaces->fMap); delete fGlobalNamespaces; } // // Start working from the bottom of the stack and clear it out as we // go up. Once we hit an uninitialized one, we can break out. // for (XMLSize_t stackInd = 0; stackInd < fStackCapacity; stackInd++) { // If this entry has been set, then lets clean it up if (!fStack[stackInd]) break; fMemoryManager->deallocate(fStack[stackInd]->fChildren);//delete [] fStack[stackInd]->fChildren; fMemoryManager->deallocate(fStack[stackInd]->fMap);//delete [] fStack[stackInd]->fMap; fMemoryManager->deallocate(fStack[stackInd]->fSchemaElemName); delete fStack[stackInd]; } // Delete the stack array itself now fMemoryManager->deallocate(fStack);//delete [] fStack; delete fNamespaceMap; } // --------------------------------------------------------------------------- // ElemStack: Stack access // --------------------------------------------------------------------------- XMLSize_t ElemStack::addLevel() { // See if we need to expand the stack if (fStackTop == fStackCapacity) expandStack(); // If this element has not been initialized yet, then initialize it if (!fStack[fStackTop]) { fStack[fStackTop] = new (fMemoryManager) StackElem; fStack[fStackTop]->fChildCapacity = 0; fStack[fStackTop]->fChildren = 0; fStack[fStackTop]->fMapCapacity = 0; fStack[fStackTop]->fMap = 0; fStack[fStackTop]->fSchemaElemName = 0; fStack[fStackTop]->fSchemaElemNameMaxLen = 0; } // Set up the new top row fStack[fStackTop]->fThisElement = 0; fStack[fStackTop]->fReaderNum = 0xFFFFFFFF; fStack[fStackTop]->fChildCount = 0; fStack[fStackTop]->fMapCount = 0; fStack[fStackTop]->fValidationFlag = false; fStack[fStackTop]->fCommentOrPISeen = false; fStack[fStackTop]->fReferenceEscaped = false; fStack[fStackTop]->fCurrentURI = fUnknownNamespaceId; fStack[fStackTop]->fCurrentScope = Grammar::TOP_LEVEL_SCOPE; fStack[fStackTop]->fCurrentGrammar = 0; // Bump the top of stack fStackTop++; return fStackTop-1; } XMLSize_t ElemStack::addLevel(XMLElementDecl* const toSet, const XMLSize_t readerNum) { // See if we need to expand the stack if (fStackTop == fStackCapacity) expandStack(); // If this element has not been initialized yet, then initialize it if (!fStack[fStackTop]) { fStack[fStackTop] = new (fMemoryManager) StackElem; fStack[fStackTop]->fChildCapacity = 0; fStack[fStackTop]->fChildren = 0; fStack[fStackTop]->fMapCapacity = 0; fStack[fStackTop]->fMap = 0; fStack[fStackTop]->fSchemaElemName = 0; fStack[fStackTop]->fSchemaElemNameMaxLen = 0; } // Set up the new top row fStack[fStackTop]->fThisElement = toSet; fStack[fStackTop]->fReaderNum = readerNum; fStack[fStackTop]->fChildCount = 0; fStack[fStackTop]->fMapCount = 0; fStack[fStackTop]->fValidationFlag = false; fStack[fStackTop]->fCommentOrPISeen = false; fStack[fStackTop]->fReferenceEscaped = false; fStack[fStackTop]->fCurrentURI = fUnknownNamespaceId; fStack[fStackTop]->fCurrentScope = Grammar::TOP_LEVEL_SCOPE; fStack[fStackTop]->fCurrentGrammar = 0; // Bump the top of stack fStackTop++; return fStackTop-1; } const ElemStack::StackElem* ElemStack::popTop() { // Watch for an underflow error if (!fStackTop) ThrowXMLwithMemMgr(EmptyStackException, XMLExcepts::ElemStack_StackUnderflow, fMemoryManager); fStackTop--; return fStack[fStackTop]; } void ElemStack::setElement(XMLElementDecl* const toSet, const XMLSize_t readerNum) { if (!fStackTop) ThrowXMLwithMemMgr(EmptyStackException, XMLExcepts::ElemStack_EmptyStack, fMemoryManager); fStack[fStackTop - 1]->fThisElement = toSet; fStack[fStackTop - 1]->fReaderNum = readerNum; } // --------------------------------------------------------------------------- // ElemStack: Stack top access // --------------------------------------------------------------------------- XMLSize_t ElemStack::addChild(QName* const child, const bool toParent) { if (!fStackTop) ThrowXMLwithMemMgr(EmptyStackException, XMLExcepts::ElemStack_EmptyStack, fMemoryManager); // // If they want to add to the parent, then we have to have at least two // elements on the stack. // if (toParent && (fStackTop < 2)) ThrowXMLwithMemMgr(NoSuchElementException, XMLExcepts::ElemStack_NoParentPushed, fMemoryManager); // Get a convenience pointer to the stack top row StackElem* curRow = toParent ? fStack[fStackTop - 2] : fStack[fStackTop - 1]; // See if we need to expand this row's child array if (curRow->fChildCount == curRow->fChildCapacity) { // Increase the capacity by a quarter and allocate a new row const XMLSize_t newCapacity = curRow->fChildCapacity ? (XMLSize_t)(curRow->fChildCapacity * 1.25) : 32; QName** newRow = (QName**) fMemoryManager->allocate ( newCapacity * sizeof(QName*) );//new QName*[newCapacity]; // // Copy over the old contents. We don't have to initialize the new // part because The current child count is used to know how much of // it is valid. // // Only both doing this if there is any current content, since // this code also does the initial faulting in of the array when // both the current capacity and child count are zero. // for (XMLSize_t index = 0; index < curRow->fChildCount; index++) newRow[index] = curRow->fChildren[index]; // Clean up the old children and store the new info fMemoryManager->deallocate(curRow->fChildren);//delete [] curRow->fChildren; curRow->fChildren = newRow; curRow->fChildCapacity = newCapacity; } // Add this id to the end of the row's child id array and bump the count curRow->fChildren[curRow->fChildCount++] = child; // Return the level of the index we just filled (before the bump) return curRow->fChildCount - 1; } const ElemStack::StackElem* ElemStack::topElement() const { if (!fStackTop) ThrowXMLwithMemMgr(EmptyStackException, XMLExcepts::ElemStack_EmptyStack, fMemoryManager); return fStack[fStackTop - 1]; } // --------------------------------------------------------------------------- // ElemStack: Prefix map methods // --------------------------------------------------------------------------- void ElemStack::addGlobalPrefix(const XMLCh* const prefixToAdd , const unsigned int uriId) { if (!fGlobalNamespaces) { fGlobalNamespaces = new (fMemoryManager) StackElem; fGlobalNamespaces->fChildCapacity = 0; fGlobalNamespaces->fChildren = 0; fGlobalNamespaces->fMapCapacity = 0; fGlobalNamespaces->fMap = 0; fGlobalNamespaces->fMapCount = 0; fGlobalNamespaces->fSchemaElemName = 0; fGlobalNamespaces->fSchemaElemNameMaxLen = 0; fGlobalNamespaces->fThisElement = 0; fGlobalNamespaces->fReaderNum = 0xFFFFFFFF; fGlobalNamespaces->fChildCount = 0; fGlobalNamespaces->fValidationFlag = false; fGlobalNamespaces->fCommentOrPISeen = false; fGlobalNamespaces->fReferenceEscaped = false; fGlobalNamespaces->fCurrentURI = fUnknownNamespaceId; fGlobalNamespaces->fCurrentScope = Grammar::TOP_LEVEL_SCOPE; fGlobalNamespaces->fCurrentGrammar = 0; } // Map the prefix to its unique id const unsigned int prefId = fPrefixPool.addOrFind(prefixToAdd); // // Add a new element to the prefix map for this element. If its full, // then expand it out. // if (fGlobalNamespaces->fMapCount == fGlobalNamespaces->fMapCapacity) expandMap(fGlobalNamespaces); // // And now add a new element for this prefix. Watch for the special case // of xmlns=="", and force it to ""=[globalid] // fGlobalNamespaces->fMap[fGlobalNamespaces->fMapCount].fPrefId = prefId; if ((prefId == fGlobalPoolId) && (uriId == fEmptyNamespaceId)) fGlobalNamespaces->fMap[fGlobalNamespaces->fMapCount].fURIId = fEmptyNamespaceId; else fGlobalNamespaces->fMap[fGlobalNamespaces->fMapCount].fURIId = uriId; // Bump the map count now fGlobalNamespaces->fMapCount++; } void ElemStack::addPrefix( const XMLCh* const prefixToAdd , const unsigned int uriId) { if (!fStackTop) ThrowXMLwithMemMgr(EmptyStackException, XMLExcepts::ElemStack_EmptyStack, fMemoryManager); // Get a convenience pointer to the stack top row StackElem* curRow = fStack[fStackTop - 1]; // Map the prefix to its unique id const unsigned int prefId = fPrefixPool.addOrFind(prefixToAdd); // // Add a new element to the prefix map for this element. If its full, // then expand it out. // if (curRow->fMapCount == curRow->fMapCapacity) expandMap(curRow); // // And now add a new element for this prefix. Watch for the special case // of xmlns=="", and force it to ""=[globalid] // curRow->fMap[curRow->fMapCount].fPrefId = prefId; if ((prefId == fGlobalPoolId) && (uriId == fEmptyNamespaceId)) curRow->fMap[curRow->fMapCount].fURIId = fEmptyNamespaceId; else curRow->fMap[curRow->fMapCount].fURIId = uriId; // Bump the map count now curRow->fMapCount++; } unsigned int ElemStack::mapPrefixToURI( const XMLCh* const prefixToMap , bool& unknown) const { // Assume we find it unknown = false; // // Map the prefix to its unique id, from the prefix string pool. If its // not a valid prefix, then its a failure. // unsigned int prefixId = (!prefixToMap || !*prefixToMap)?fGlobalPoolId : fPrefixPool.getId(prefixToMap); if (prefixId == 0) { unknown = true; return fUnknownNamespaceId; } // // Check for the special prefixes 'xml' and 'xmlns' since they cannot // be overridden. // else if (prefixId == fXMLPoolId) return fXMLNamespaceId; else if (prefixId == fXMLNSPoolId) return fXMLNSNamespaceId; // // Start at the stack top and work backwards until we come to some // element that mapped this prefix. // for (XMLSize_t index = fStackTop; index > 0; index--) { // Get a convenience pointer to the current element StackElem* curRow = fStack[index-1]; // Search the map at this level for the passed prefix for (XMLSize_t mapIndex = 0; mapIndex < curRow->fMapCount; mapIndex++) { if (curRow->fMap[mapIndex].fPrefId == prefixId) return curRow->fMap[mapIndex].fURIId; } } // If the prefix wasn't found, try in the global namespaces if(fGlobalNamespaces) { for (XMLSize_t mapIndex = 0; mapIndex < fGlobalNamespaces->fMapCount; mapIndex++) { if (fGlobalNamespaces->fMap[mapIndex].fPrefId == prefixId) return fGlobalNamespaces->fMap[mapIndex].fURIId; } } // // If the prefix is an empty string, then we will return the special // global namespace id. This can be overridden, but no one has or we // would have not gotten here. // if (!*prefixToMap) return fEmptyNamespaceId; // Oh well, don't have a clue so return the unknown id unknown = true; return fUnknownNamespaceId; } ValueVectorOf* ElemStack::getNamespaceMap() const { fNamespaceMap->removeAllElements(); // Start at the stack top and work backwards until we come to some // element that mapped this prefix. for (XMLSize_t index = fStackTop; index > 0; index--) { // Get a convenience pointer to the current element StackElem* curRow = fStack[index-1]; // If no prefixes mapped at this level, then go the next one if (!curRow->fMapCount) continue; // Search the map at this level for the passed prefix for (XMLSize_t mapIndex = 0; mapIndex < curRow->fMapCount; mapIndex++) fNamespaceMap->addElement(&(curRow->fMap[mapIndex])); } // Add the global namespaces if(fGlobalNamespaces) { for (XMLSize_t mapIndex = 0; mapIndex < fGlobalNamespaces->fMapCount; mapIndex++) fNamespaceMap->addElement(&(fGlobalNamespaces->fMap[mapIndex])); } return fNamespaceMap; } // --------------------------------------------------------------------------- // ElemStack: Miscellaneous methods // --------------------------------------------------------------------------- void ElemStack::reset( const unsigned int emptyId , const unsigned int unknownId , const unsigned int xmlId , const unsigned int xmlNSId) { if(fGlobalNamespaces) { fMemoryManager->deallocate(fGlobalNamespaces->fMap); delete fGlobalNamespaces; fGlobalNamespaces = 0; } // Reset the stack top to clear the stack fStackTop = 0; // if first time, put in the standard prefixes if (fXMLPoolId == 0) { fGlobalPoolId = fPrefixPool.addOrFind(XMLUni::fgZeroLenString); fXMLPoolId = fPrefixPool.addOrFind(XMLUni::fgXMLString); fXMLNSPoolId = fPrefixPool.addOrFind(XMLUni::fgXMLNSString); } // And store the new special URI ids fEmptyNamespaceId = emptyId; fUnknownNamespaceId = unknownId; fXMLNamespaceId = xmlId; fXMLNSNamespaceId = xmlNSId; } // --------------------------------------------------------------------------- // ElemStack: Private helpers // --------------------------------------------------------------------------- void ElemStack::expandMap(StackElem* const toExpand) { // For convenience get the old map size const XMLSize_t oldCap = toExpand->fMapCapacity; // // Expand the capacity by 25%, or initialize it to 16 if its currently // empty. Then allocate a new temp buffer. // const XMLSize_t newCapacity = oldCap ? (XMLSize_t )(oldCap * 1.25) : 16; PrefMapElem* newMap = (PrefMapElem*) fMemoryManager->allocate ( newCapacity * sizeof(PrefMapElem) );//new PrefMapElem[newCapacity]; // // Copy over the old stuff. We DON'T have to zero out the new stuff // since this is a by value map and the current map index controls what // is relevant. // memcpy(newMap, toExpand->fMap, oldCap * sizeof(PrefMapElem)); // Delete the old map and store the new stuff fMemoryManager->deallocate(toExpand->fMap);//delete [] toExpand->fMap; toExpand->fMap = newMap; toExpand->fMapCapacity = newCapacity; } void ElemStack::expandStack() { // Expand the capacity by 25% and allocate a new buffer const XMLSize_t newCapacity = (XMLSize_t)(fStackCapacity * 1.25); StackElem** newStack = (StackElem**) fMemoryManager->allocate ( newCapacity * sizeof(StackElem*) );//new StackElem*[newCapacity]; // Copy over the old stuff memcpy(newStack, fStack, fStackCapacity * sizeof(StackElem*)); // // And zero out the new stuff. Though we use a stack top, we reuse old // stack contents so we need to know if elements have been initially // allocated or not as we push new stuff onto the stack. // memset ( &newStack[fStackCapacity] , 0 , (newCapacity - fStackCapacity) * sizeof(StackElem*) ); // Delete the old array and update our members fMemoryManager->deallocate(fStack);//delete [] fStack; fStack = newStack; fStackCapacity = newCapacity; } // --------------------------------------------------------------------------- // WFElemStack: Constructors and Destructor // --------------------------------------------------------------------------- WFElemStack::WFElemStack(MemoryManager* const manager) : fEmptyNamespaceId(0) , fGlobalPoolId(0) , fStackCapacity(32) , fStackTop(0) , fUnknownNamespaceId(0) , fXMLNamespaceId(0) , fXMLPoolId(0) , fXMLNSNamespaceId(0) , fXMLNSPoolId(0) , fMapCapacity(0) , fMap(0) , fStack(0) , fPrefixPool(109, manager) , fMemoryManager(manager) { // Do an initial allocation of the stack and zero it out fStack = (StackElem**) fMemoryManager->allocate ( fStackCapacity * sizeof(StackElem*) );//new StackElem*[fStackCapacity]; memset(fStack, 0, fStackCapacity * sizeof(StackElem*)); } WFElemStack::~WFElemStack() { // // Start working from the bottom of the stack and clear it out as we // go up. Once we hit an uninitialized one, we can break out. // for (XMLSize_t stackInd = 0; stackInd < fStackCapacity; stackInd++) { // If this entry has been set, then lets clean it up if (!fStack[stackInd]) break; fMemoryManager->deallocate(fStack[stackInd]->fThisElement);//delete [] fStack[stackInd]->fThisElement; delete fStack[stackInd]; } if (fMap) fMemoryManager->deallocate(fMap);//delete [] fMap; // Delete the stack array itself now fMemoryManager->deallocate(fStack);//delete [] fStack; } // --------------------------------------------------------------------------- // WFElemStack: Stack access // --------------------------------------------------------------------------- XMLSize_t WFElemStack::addLevel() { // See if we need to expand the stack if (fStackTop == fStackCapacity) expandStack(); // If this element has not been initialized yet, then initialize it if (!fStack[fStackTop]) { fStack[fStackTop] = new (fMemoryManager) StackElem; fStack[fStackTop]->fThisElement = 0; fStack[fStackTop]->fElemMaxLength = 0; } // Set up the new top row fStack[fStackTop]->fReaderNum = 0xFFFFFFFF; fStack[fStackTop]->fCurrentURI = fUnknownNamespaceId; fStack[fStackTop]->fTopPrefix = -1; if (fStackTop != 0) fStack[fStackTop]->fTopPrefix = fStack[fStackTop - 1]->fTopPrefix; // Bump the top of stack fStackTop++; return fStackTop-1; } XMLSize_t WFElemStack::addLevel(const XMLCh* const toSet, const unsigned int toSetLen, const unsigned int readerNum) { // See if we need to expand the stack if (fStackTop == fStackCapacity) expandStack(); // If this element has not been initialized yet, then initialize it if (!fStack[fStackTop]) { fStack[fStackTop] = new (fMemoryManager) StackElem; fStack[fStackTop]->fThisElement = 0; fStack[fStackTop]->fElemMaxLength = 0; } // Set up the new top row fStack[fStackTop]->fCurrentURI = fUnknownNamespaceId; fStack[fStackTop]->fTopPrefix = -1; // And store the new stuff if (toSetLen > fStack[fStackTop]->fElemMaxLength) { fMemoryManager->deallocate(fStack[fStackTop]->fThisElement);//delete [] fStack[fStackTop]->fThisElement; fStack[fStackTop]->fElemMaxLength = toSetLen; fStack[fStackTop]->fThisElement = (XMLCh*) fMemoryManager->allocate ( (toSetLen + 1) * sizeof(XMLCh) );//new XMLCh[toSetLen + 1]; } XMLString::moveChars(fStack[fStackTop]->fThisElement, toSet, toSetLen + 1); fStack[fStackTop]->fReaderNum = readerNum; if (fStackTop != 0) fStack[fStackTop]->fTopPrefix = fStack[fStackTop - 1]->fTopPrefix; // Bump the top of stack fStackTop++; return fStackTop-1; } const WFElemStack::StackElem* WFElemStack::popTop() { // Watch for an underflow error if (!fStackTop) ThrowXMLwithMemMgr(EmptyStackException, XMLExcepts::ElemStack_StackUnderflow, fMemoryManager); fStackTop--; return fStack[fStackTop]; } void WFElemStack::setElement(const XMLCh* const toSet, const unsigned int toSetLen, const unsigned int readerNum) { if (!fStackTop) ThrowXMLwithMemMgr(EmptyStackException, XMLExcepts::ElemStack_EmptyStack, fMemoryManager); if (toSetLen > fStack[fStackTop - 1]->fElemMaxLength) { fMemoryManager->deallocate(fStack[fStackTop - 1]->fThisElement);//delete [] fStack[fStackTop - 1]->fThisElement; fStack[fStackTop - 1]->fElemMaxLength = toSetLen; fStack[fStackTop - 1]->fThisElement = (XMLCh*) fMemoryManager->allocate ( (toSetLen + 1) * sizeof(XMLCh) );//new XMLCh[toSetLen + 1]; } XMLString::moveChars(fStack[fStackTop - 1]->fThisElement, toSet, toSetLen + 1); fStack[fStackTop - 1]->fReaderNum = readerNum; } // --------------------------------------------------------------------------- // WFElemStack: Stack top access // --------------------------------------------------------------------------- const WFElemStack::StackElem* WFElemStack::topElement() const { if (!fStackTop) ThrowXMLwithMemMgr(EmptyStackException, XMLExcepts::ElemStack_EmptyStack, fMemoryManager); return fStack[fStackTop - 1]; } // --------------------------------------------------------------------------- // WFElemStack: Prefix map methods // --------------------------------------------------------------------------- void WFElemStack::addPrefix( const XMLCh* const prefixToAdd , const unsigned int uriId) { if (!fStackTop) ThrowXMLwithMemMgr(EmptyStackException, XMLExcepts::ElemStack_EmptyStack, fMemoryManager); // Get a convenience pointer to the stack top row StackElem* curRow = fStack[fStackTop - 1]; // Map the prefix to its unique id const unsigned int prefId = fPrefixPool.addOrFind(prefixToAdd); // // Add a new element to the prefix map for this element. If its full, // then expand it out. // if ((unsigned int)curRow->fTopPrefix + 1 == fMapCapacity) expandMap(); // // And now add a new element for this prefix. Watch for the special case // of xmlns=="", and force it to ""=[globalid] // fMap[curRow->fTopPrefix + 1].fPrefId = prefId; if ((prefId == fGlobalPoolId) && (uriId == fEmptyNamespaceId)) fMap[curRow->fTopPrefix + 1].fURIId = fEmptyNamespaceId; else fMap[curRow->fTopPrefix + 1].fURIId = uriId; // Bump the map count now curRow->fTopPrefix++; } unsigned int WFElemStack::mapPrefixToURI( const XMLCh* const prefixToMap , bool& unknown) const { // Assume we find it unknown = false; // // Map the prefix to its unique id, from the prefix string pool. If its // not a valid prefix, then its a failure. // unsigned int prefixId = fPrefixPool.getId(prefixToMap); if (!prefixId) { unknown = true; return fUnknownNamespaceId; } // // Check for the special prefixes 'xml' and 'xmlns' since they cannot // be overridden. // if (prefixId == fXMLPoolId) return fXMLNamespaceId; else if (prefixId == fXMLNSPoolId) return fXMLNSNamespaceId; // // Start at the stack top and work backwards until we come to some // element that mapped this prefix. // // Get a convenience pointer to the stack top row StackElem* curRow = fStack[fStackTop - 1]; for (int mapIndex = curRow->fTopPrefix; mapIndex >=0; mapIndex--) { if (fMap[mapIndex].fPrefId == prefixId) return fMap[mapIndex].fURIId; } // // If the prefix is an empty string, then we will return the special // global namespace id. This can be overridden, but no one has or we // would have not gotten here. // if (!*prefixToMap) return fEmptyNamespaceId; // Oh well, don't have a clue so return the unknown id unknown = true; return fUnknownNamespaceId; } // --------------------------------------------------------------------------- // WFElemStack: Miscellaneous methods // --------------------------------------------------------------------------- void WFElemStack::reset( const unsigned int emptyId , const unsigned int unknownId , const unsigned int xmlId , const unsigned int xmlNSId) { // Reset the stack top to clear the stack fStackTop = 0; // if first time, put in the standard prefixes if (fXMLPoolId == 0) { fGlobalPoolId = fPrefixPool.addOrFind(XMLUni::fgZeroLenString); fXMLPoolId = fPrefixPool.addOrFind(XMLUni::fgXMLString); fXMLNSPoolId = fPrefixPool.addOrFind(XMLUni::fgXMLNSString); } // And store the new special URI ids fEmptyNamespaceId = emptyId; fUnknownNamespaceId = unknownId; fXMLNamespaceId = xmlId; fXMLNSNamespaceId = xmlNSId; } // --------------------------------------------------------------------------- // WFElemStack: Private helpers // --------------------------------------------------------------------------- void WFElemStack::expandMap() { // // Expand the capacity by 25%, or initialize it to 16 if its currently // empty. Then allocate a new temp buffer. // const XMLSize_t newCapacity = fMapCapacity ? (XMLSize_t)(fMapCapacity * 1.25) : 16; PrefMapElem* newMap = (PrefMapElem*) fMemoryManager->allocate ( newCapacity * sizeof(PrefMapElem) );//new PrefMapElem[newCapacity]; // // Copy over the old stuff. We DON'T have to zero out the new stuff // since this is a by value map and the current map index controls what // is relevant. // if (fMapCapacity) { memcpy(newMap, fMap, fMapCapacity * sizeof(PrefMapElem)); fMemoryManager->deallocate(fMap);//delete [] fMap; } fMap = newMap; fMapCapacity = newCapacity; } void WFElemStack::expandStack() { // Expand the capacity by 25% and allocate a new buffer const XMLSize_t newCapacity = (XMLSize_t)(fStackCapacity * 1.25); StackElem** newStack = (StackElem**) fMemoryManager->allocate ( newCapacity * sizeof(StackElem*) );//new StackElem*[newCapacity]; // Copy over the old stuff memcpy(newStack, fStack, fStackCapacity * sizeof(StackElem*)); // // And zero out the new stuff. Though we use a stack top, we reuse old // stack contents so we need to know if elements have been initially // allocated or not as we push new stuff onto the stack. // memset ( &newStack[fStackCapacity] , 0 , (newCapacity - fStackCapacity) * sizeof(StackElem*) ); // Delete the old array and update our members fMemoryManager->deallocate(fStack);//delete [] fStack; fStack = newStack; fStackCapacity = newCapacity; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/internal/XSerializeEngine.cpp0000644000175000017500000007103511276506011022220 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XSerializeEngine.cpp 834826 2009-11-11 10:03:53Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN const bool XSerializeEngine::toWriteBufferLen = true; const bool XSerializeEngine::toReadBufferLen = true; static const unsigned long noDataFollowed = (unsigned long)-1; static const XSerializeEngine::XSerializedObjectId_t fgNullObjectTag = 0; // indicating null ptrs static const XSerializeEngine::XSerializedObjectId_t fgNewClassTag = 0xFFFFFFFF; // indicating new class static const XSerializeEngine::XSerializedObjectId_t fgTemplateObjTag = 0xFFFFFFFE; // indicating template object static const XSerializeEngine::XSerializedObjectId_t fgClassMask = 0x80000000; // indicates class tag static const XSerializeEngine::XSerializedObjectId_t fgMaxObjectCount = 0x3FFFFFFD; #define TEST_THROW_ARG1(condition, data, err_msg) \ if (condition) \ { \ XMLCh value1[64]; \ XMLString::sizeToText(data, value1, 65, 10, getMemoryManager()); \ ThrowXMLwithMemMgr1(XSerializationException \ , err_msg \ , value1 \ , getMemoryManager()); \ } #define TEST_THROW_ARG2(condition, data1, data2, err_msg) \ if (condition) \ { \ XMLCh value1[64]; \ XMLCh value2[64]; \ XMLString::sizeToText(data1, value1, 65, 10, getMemoryManager()); \ XMLString::sizeToText(data2, value2, 65, 10, getMemoryManager()); \ ThrowXMLwithMemMgr2(XSerializationException \ , err_msg \ , value1 \ , value2 \ , getMemoryManager()); \ } // --------------------------------------------------------------------------- // Constructor and Destructor // --------------------------------------------------------------------------- XSerializeEngine::~XSerializeEngine() { if (isStoring()) { flush(); delete fStorePool; } else { delete fLoadPool; } getMemoryManager()->deallocate(fBufStart); } XSerializeEngine::XSerializeEngine(BinInputStream* inStream , XMLGrammarPool* const gramPool , XMLSize_t bufSize) :fStoreLoad(mode_Load) ,fStorerLevel(0) ,fGrammarPool(gramPool) ,fInputStream(inStream) ,fOutputStream(0) ,fBufCount(0) ,fBufSize(bufSize) ,fBufStart( (XMLByte*) gramPool->getMemoryManager()->allocate(bufSize)) ,fBufEnd(0) ,fBufCur(fBufStart) ,fBufLoadMax(fBufStart) ,fStorePool(0) ,fLoadPool( new (gramPool->getMemoryManager()) ValueVectorOf(29, gramPool->getMemoryManager(), false)) ,fObjectCount(0) { /*** * initialize buffer from the inStream ***/ fillBuffer(); } XSerializeEngine::XSerializeEngine(BinOutputStream* outStream , XMLGrammarPool* const gramPool , XMLSize_t bufSize) :fStoreLoad(mode_Store) ,fStorerLevel(0) ,fGrammarPool(gramPool) ,fInputStream(0) ,fOutputStream(outStream) ,fBufCount(0) ,fBufSize(bufSize) ,fBufStart((XMLByte*) gramPool->getMemoryManager()->allocate(bufSize)) ,fBufEnd(fBufStart+bufSize) ,fBufCur(fBufStart) ,fBufLoadMax(0) ,fStorePool( new (gramPool->getMemoryManager()) RefHashTableOf(29, true, gramPool->getMemoryManager()) ) ,fLoadPool(0) ,fObjectCount(0) { resetBuffer(); //initialize store pool fStorePool->put(0, new (gramPool->getMemoryManager()) XSerializedObjectId(fgNullObjectTag)); } void XSerializeEngine::flush() { if (isStoring()) flushBuffer(); } // --------------------------------------------------------------------------- // Storing // --------------------------------------------------------------------------- void XSerializeEngine::write(XSerializable* const objectToWrite) { ensureStoring(); //don't ensurePointer here !!! XSerializedObjectId_t objIndex = 0; if (!objectToWrite) // null pointer { *this << fgNullObjectTag; } else if (0 != (objIndex = lookupStorePool((void*) objectToWrite))) { // writing an object reference tag *this << objIndex; } else { // write protoType first XProtoType* protoType = objectToWrite->getProtoType(); write(protoType); // put the object into StorePool addStorePool((void*)objectToWrite); // ask the object to serialize itself objectToWrite->serialize(*this); } } void XSerializeEngine::write(XProtoType* const protoType) { ensureStoring(); ensurePointer(protoType); XSerializedObjectId_t objIndex = lookupStorePool((void*)protoType); if (objIndex) { //protoType seen in the store pool *this << (fgClassMask | objIndex); } else { // store protoType *this << fgNewClassTag; protoType->store(*this); addStorePool((void*)protoType); } } /*** * ***/ void XSerializeEngine::write(const XMLCh* const toWrite , XMLSize_t writeLen) { write((XMLByte*)toWrite, (sizeof(XMLCh)/sizeof(XMLByte)) * writeLen); } void XSerializeEngine::write(const XMLByte* const toWrite , XMLSize_t writeLen) { ensureStoring(); ensurePointer((void*)toWrite); ensureStoreBuffer(); if (writeLen == 0) return; /*** * If the available space is sufficient, write it up ***/ XMLSize_t bufAvail = fBufEnd - fBufCur; if (writeLen <= bufAvail) { memcpy(fBufCur, toWrite, writeLen); fBufCur += writeLen; return; } const XMLByte* tempWrite = (const XMLByte*) toWrite; XMLSize_t writeRemain = writeLen; // fill up the avaiable space and flush memcpy(fBufCur, tempWrite, bufAvail); tempWrite += bufAvail; writeRemain -= bufAvail; flushBuffer(); // write chunks of fBufSize while (writeRemain >= fBufSize) { memcpy(fBufCur, tempWrite, fBufSize); tempWrite += fBufSize; writeRemain -= fBufSize; flushBuffer(); } // write the remaining if any if (writeRemain) { memcpy(fBufCur, tempWrite, writeRemain); fBufCur += writeRemain; } } /*** * * Storage scheme (normal): * * < * 1st integer: bufferLen (optional) * 2nd integer: dataLen * bytes following: * > * * Storage scheme (special): * < * only integer: noDataFollowed * > */ void XSerializeEngine::writeString(const XMLCh* const toWrite , const XMLSize_t bufferLen , bool toWriteBufLen) { if (toWrite) { if (toWriteBufLen) *this<<(unsigned long)bufferLen; XMLSize_t strLen = XMLString::stringLen(toWrite); *this<<(unsigned long)strLen; write(toWrite, strLen); } else { *this<fCreateObject(getMemoryManager()); Assert((objRet != 0), XMLExcepts::XSer_CreateObject_Fail); // put it into load pool addLoadPool(objRet); // de-serialize it objRet->serialize(*this); } return objRet; } bool XSerializeEngine::read(XProtoType* const protoType , XSerializedObjectId_t* objectTagRet) { ensureLoading(); ensurePointer(protoType); XSerializedObjectId_t obTag; *this >> obTag; // object reference tag found if (!(obTag & fgClassMask)) { *objectTagRet = obTag; return false; } if (obTag == fgNewClassTag) { // what follows fgNewClassTag is the prototype object info // for the object anticipated, go and verify the info XProtoType::load(*this, protoType->fClassName, getMemoryManager()); addLoadPool((void*)protoType); } else { // what follows class tag is an XSerializable object XSerializedObjectId_t classIndex = (obTag & ~fgClassMask); XSerializedObjectId_t loadPoolSize = (XSerializedObjectId_t)fLoadPool->size(); if ((classIndex == 0 ) || (classIndex > loadPoolSize)) { XMLCh value1[64]; XMLCh value2[64]; XMLString::binToText(classIndex, value1, 65, 10, getMemoryManager()); XMLString::binToText(loadPoolSize, value2, 65, 10, getMemoryManager()); ThrowXMLwithMemMgr2(XSerializationException , XMLExcepts::XSer_Inv_ClassIndex , value1 , value2 , getMemoryManager()); } ensurePointer(lookupLoadPool(classIndex)); } return true; } void XSerializeEngine::read(XMLCh* const toRead , XMLSize_t readLen) { read((XMLByte*)toRead, (sizeof(XMLCh)/sizeof(XMLByte))*readLen); } void XSerializeEngine::read(XMLByte* const toRead , XMLSize_t readLen) { ensureLoading(); ensurePointer(toRead); ensureLoadBuffer(); if (readLen == 0) return; /*** * If unread is sufficient, read it up ***/ XMLSize_t dataAvail = fBufLoadMax - fBufCur; if (readLen <= dataAvail) { memcpy(toRead, fBufCur, readLen); fBufCur += readLen; return; } /*** * * fillBuffer will discard anything left in the buffer * before it asks the inputStream to fill in the buffer, * so we need to readup everything in the buffer before * calling fillBuffer * ***/ XMLByte* tempRead = (XMLByte*) toRead; XMLSize_t readRemain = readLen; // read the unread memcpy(tempRead, fBufCur, dataAvail); tempRead += dataAvail; readRemain -= dataAvail; // read chunks of fBufSize while (readRemain >= fBufSize) { fillBuffer(); memcpy(tempRead, fBufCur, fBufSize); tempRead += fBufSize; readRemain -= fBufSize; } // read the remaining if any if (readRemain) { fillBuffer(); memcpy(tempRead, fBufCur, readRemain); fBufCur += readRemain; } } /*** * * Storage scheme (normal): * * < * 1st integer: bufferLen (optional) * 2nd integer: dataLen * bytes following: * > * * Storage scheme (special): * < * only integer: noDataFollowed * > */ void XSerializeEngine::readString(XMLCh*& toRead , XMLSize_t& bufferLen , XMLSize_t& dataLen , bool toReadBufLen) { /*** * Check if any data written ***/ unsigned long tmp; *this>>tmp; bufferLen=tmp; if (bufferLen == noDataFollowed) { toRead = 0; bufferLen = 0; dataLen = 0; return; } if (toReadBufLen) { *this>>tmp; dataLen=tmp; } else { dataLen = bufferLen++; } toRead = (XMLCh*) getMemoryManager()->allocate(bufferLen * sizeof(XMLCh)); read(toRead, dataLen); toRead[dataLen] = 0; } void XSerializeEngine::readString(XMLByte*& toRead , XMLSize_t& bufferLen , XMLSize_t& dataLen , bool toReadBufLen) { /*** * Check if any data written ***/ unsigned long tmp; *this>>tmp; bufferLen=tmp; if (bufferLen == noDataFollowed) { toRead = 0; bufferLen = 0; dataLen = 0; return; } if (toReadBufLen) { *this>>tmp; dataLen=tmp; } else { dataLen = bufferLen++; } toRead = (XMLByte*) getMemoryManager()->allocate(bufferLen * sizeof(XMLByte)); read(toRead, dataLen); toRead[dataLen] = 0; } // --------------------------------------------------------------------------- // Insertion & Extraction // --------------------------------------------------------------------------- XSerializeEngine& XSerializeEngine::operator<<(XMLCh xch) { checkAndFlushBuffer(calBytesNeeded(sizeof(XMLCh))); alignBufCur(sizeof(XMLCh)); *(XMLCh*)fBufCur = xch; fBufCur += sizeof(XMLCh); return *this; } XSerializeEngine& XSerializeEngine::operator>>(XMLCh& xch) { checkAndFillBuffer(calBytesNeeded(sizeof(XMLCh))); alignBufCur(sizeof(XMLCh)); xch = *(XMLCh*)fBufCur; fBufCur += sizeof(XMLCh); return *this; } XSerializeEngine& XSerializeEngine::operator<<(XMLByte by) { checkAndFlushBuffer(sizeof(XMLByte)); *(XMLByte*)fBufCur = by; fBufCur += sizeof(XMLByte); return *this; } XSerializeEngine& XSerializeEngine::operator>>(XMLByte& by) { checkAndFillBuffer(sizeof(XMLByte)); by = *(XMLByte*)fBufCur; fBufCur += sizeof(XMLByte); return *this; } XSerializeEngine& XSerializeEngine::operator<<(bool b) { checkAndFlushBuffer(sizeof(bool)); *(bool*)fBufCur = b; fBufCur += sizeof(bool); return *this; } XSerializeEngine& XSerializeEngine::operator>>(bool& b) { checkAndFillBuffer(sizeof(bool)); b = *(bool*)fBufCur; fBufCur += sizeof(bool); return *this; } void XSerializeEngine::writeSize (XMLSize_t t) { checkAndFlushBuffer(sizeof(t)); memcpy(fBufCur, &t, sizeof(t)); fBufCur += sizeof(t); } void XSerializeEngine::writeInt64 (XMLInt64 t) { checkAndFlushBuffer(sizeof(t)); memcpy(fBufCur, &t, sizeof(t)); fBufCur += sizeof(t); } void XSerializeEngine::writeUInt64 (XMLUInt64 t) { checkAndFlushBuffer(sizeof(t)); memcpy(fBufCur, &t, sizeof(t)); fBufCur += sizeof(t); } void XSerializeEngine::readSize (XMLSize_t& t) { checkAndFillBuffer(sizeof(t)); memcpy(&t, fBufCur, sizeof(t)); fBufCur += sizeof(t); } void XSerializeEngine::readInt64 (XMLInt64& t) { checkAndFillBuffer(sizeof(t)); memcpy(&t, fBufCur, sizeof(t)); fBufCur += sizeof(t); } void XSerializeEngine::readUInt64 (XMLUInt64& t) { checkAndFillBuffer(sizeof(t)); memcpy(&t, fBufCur, sizeof(t)); fBufCur += sizeof(t); } XSerializeEngine& XSerializeEngine::operator<<(char ch) { return XSerializeEngine::operator<<((XMLByte)ch); } XSerializeEngine& XSerializeEngine::operator>>(char& ch) { return XSerializeEngine::operator>>((XMLByte&)ch); } XSerializeEngine& XSerializeEngine::operator<<(short sh) { checkAndFlushBuffer(calBytesNeeded(sizeof(short))); alignBufCur(sizeof(short)); *(short*)fBufCur = sh; fBufCur += sizeof(short); return *this; } XSerializeEngine& XSerializeEngine::operator>>(short& sh) { checkAndFillBuffer(calBytesNeeded(sizeof(short))); alignBufCur(sizeof(short)); sh = *(short*)fBufCur; fBufCur += sizeof(short); return *this; } XSerializeEngine& XSerializeEngine::operator<<(int i) { checkAndFlushBuffer(calBytesNeeded(sizeof(int))); alignBufCur(sizeof(int)); *(int*)fBufCur = i; fBufCur += sizeof(int); return *this; } XSerializeEngine& XSerializeEngine::operator>>(int& i) { checkAndFillBuffer(calBytesNeeded(sizeof(int))); alignBufCur(sizeof(int)); i = *(int*)fBufCur; fBufCur += sizeof(int); return *this; } XSerializeEngine& XSerializeEngine::operator<<(unsigned int ui) { checkAndFlushBuffer(calBytesNeeded(sizeof(unsigned int))); alignBufCur(sizeof(unsigned int)); *(unsigned int*)fBufCur = ui; fBufCur += sizeof(unsigned int); return *this; } XSerializeEngine& XSerializeEngine::operator>>(unsigned int& ui) { checkAndFillBuffer(calBytesNeeded(sizeof(unsigned int))); alignBufCur(sizeof(unsigned int)); ui = *(unsigned int*)fBufCur; fBufCur += sizeof(unsigned int); return *this; } XSerializeEngine& XSerializeEngine::operator<<(long l) { checkAndFlushBuffer(calBytesNeeded(sizeof(long))); alignBufCur(sizeof(long)); *(long*)fBufCur = l; fBufCur += sizeof(long); return *this; } XSerializeEngine& XSerializeEngine::operator>>(long& l) { checkAndFillBuffer(calBytesNeeded(sizeof(long))); alignBufCur(sizeof(long)); l = *(long*)fBufCur; fBufCur += sizeof(long); return *this; } XSerializeEngine& XSerializeEngine::operator<<(unsigned long ul) { checkAndFlushBuffer(calBytesNeeded(sizeof(unsigned long))); alignBufCur(sizeof(unsigned long)); *(unsigned long*)fBufCur = ul; fBufCur += sizeof(unsigned long); return *this; } XSerializeEngine& XSerializeEngine::operator>>(unsigned long& ul) { checkAndFillBuffer(calBytesNeeded(sizeof(unsigned long))); alignBufCur(sizeof(unsigned long)); ul = *(unsigned long*)fBufCur; fBufCur += sizeof(unsigned long); return *this; } XSerializeEngine& XSerializeEngine::operator<<(float f) { checkAndFlushBuffer(calBytesNeeded(sizeof(float))); alignBufCur(sizeof(float)); *(float*)fBufCur = *(float*)&f; fBufCur += sizeof(float); return *this; } XSerializeEngine& XSerializeEngine::operator>>(float& f) { checkAndFillBuffer(calBytesNeeded(sizeof(float))); alignBufCur(sizeof(float)); *(float*)&f = *(float*)fBufCur; fBufCur += sizeof(float); return *this; } XSerializeEngine& XSerializeEngine::operator<<(double d) { checkAndFlushBuffer(calBytesNeeded(sizeof(double))); alignBufCur(sizeof(double)); *(double*)fBufCur = *(double*)&d; fBufCur += sizeof(double); return *this; } XSerializeEngine& XSerializeEngine::operator>>(double& d) { checkAndFillBuffer(calBytesNeeded(sizeof(double))); alignBufCur(sizeof(double)); *(double*)&d = *(double*)fBufCur; fBufCur += sizeof(double); return *this; } // --------------------------------------------------------------------------- // StorePool/LoadPool Opertions // --------------------------------------------------------------------------- XSerializeEngine::XSerializedObjectId_t XSerializeEngine::lookupStorePool(void* const objToLookup) const { //0 indicating object is not in the StorePool XSerializedObjectId* data = fStorePool->get(objToLookup); return (XSerializeEngine::XSerializedObjectId_t) (data ? data->getValue() : 0); } void XSerializeEngine::addStorePool(void* const objToAdd) { pumpCount(); fStorePool->put(objToAdd, new (fGrammarPool->getMemoryManager()) XSerializedObjectId(fObjectCount)); } XSerializable* XSerializeEngine::lookupLoadPool(XSerializedObjectId_t objectTag) const { /*** * an object tag read from the binary refering to * an object beyond the upper most boundary of the load pool ***/ if (objectTag > fLoadPool->size()) { XMLCh value1[64]; XMLCh value2[64]; XMLString::binToText(objectTag, value1, 65, 10, getMemoryManager()); XMLString::sizeToText(fLoadPool->size(), value2, 65, 10, getMemoryManager()); ThrowXMLwithMemMgr2(XSerializationException , XMLExcepts::XSer_LoadPool_UppBnd_Exceed , value1 , value2 , getMemoryManager()); } if (objectTag == 0) return 0; /*** * A non-null object tag starts from 1 while fLoadPool starts from 0 ***/ return (XSerializable*) fLoadPool->elementAt(objectTag - 1); } void XSerializeEngine::addLoadPool(void* const objToAdd) { TEST_THROW_ARG2( (fLoadPool->size() != fObjectCount) , fObjectCount , fLoadPool->size() , XMLExcepts::XSer_LoadPool_NoTally_ObjCnt ) pumpCount(); fLoadPool->addElement(objToAdd); } void XSerializeEngine::pumpCount() { if (fObjectCount >= fgMaxObjectCount) { XMLCh value1[64]; XMLCh value2[64]; XMLString::sizeToText(fObjectCount, value1, 65, 10, getMemoryManager()); XMLString::binToText(fgMaxObjectCount, value2, 65, 10, getMemoryManager()); ThrowXMLwithMemMgr2(XSerializationException , XMLExcepts::XSer_ObjCount_UppBnd_Exceed , value1 , value2 , getMemoryManager()); } fObjectCount++; } // --------------------------------------------------------------------------- // Buffer Opertions // --------------------------------------------------------------------------- /*** * * Though client may need only miniBytesNeeded, we always request * a full size reading from our inputStream. * * Whatever possibly left in the buffer is abandoned, such as in * the case of CheckAndFillBuffer() * ***/ void XSerializeEngine::fillBuffer() { ensureLoading(); ensureLoadBuffer(); resetBuffer(); XMLSize_t bytesRead = fInputStream->readBytes(fBufStart, fBufSize); /*** * InputStream MUST fill in the exact amount of bytes as requested * to do: combine the checking and create a new exception code later ***/ TEST_THROW_ARG2( (bytesRead < fBufSize) , bytesRead , fBufSize , XMLExcepts::XSer_InStream_Read_LT_Req ) TEST_THROW_ARG2( (bytesRead > fBufSize) , bytesRead , fBufSize , XMLExcepts::XSer_InStream_Read_OverFlow ) fBufLoadMax = fBufStart + fBufSize; fBufCur = fBufStart; ensureLoadBuffer(); fBufCount++; } /*** * * Flush out whatever left in the buffer, from * fBufStart to fBufEnd. * ***/ void XSerializeEngine::flushBuffer() { ensureStoring(); ensureStoreBuffer(); fOutputStream->writeBytes(fBufStart, fBufSize); fBufCur = fBufStart; resetBuffer(); ensureStoreBuffer(); fBufCount++; } inline void XSerializeEngine::checkAndFlushBuffer(XMLSize_t bytesNeedToWrite) { TEST_THROW_ARG1( (bytesNeedToWrite <= 0) , bytesNeedToWrite , XMLExcepts::XSer_Inv_checkFlushBuffer_Size ) // fBufStart ... fBufCur ...fBufEnd if ((fBufCur + bytesNeedToWrite) > fBufEnd) flushBuffer(); } inline void XSerializeEngine::checkAndFillBuffer(XMLSize_t bytesNeedToRead) { TEST_THROW_ARG1( (bytesNeedToRead <= 0) , bytesNeedToRead , XMLExcepts::XSer_Inv_checkFillBuffer_Size ) // fBufStart ... fBufCur ...fBufLoadMax if ((fBufCur + bytesNeedToRead) > fBufLoadMax) { fillBuffer(); } } inline void XSerializeEngine::ensureStoreBuffer() const { XMLSize_t a = (XMLSize_t) (fBufCur - fBufStart); XMLSize_t b = (XMLSize_t) (fBufEnd - fBufCur); TEST_THROW_ARG2 ( !((fBufStart <= fBufCur) && (fBufCur <= fBufEnd)) , a , b , XMLExcepts::XSer_StoreBuffer_Violation ) } inline void XSerializeEngine::ensureLoadBuffer() const { XMLSize_t a = (XMLSize_t) (fBufCur - fBufStart); XMLSize_t b = (XMLSize_t) (fBufLoadMax - fBufCur); TEST_THROW_ARG2 ( !((fBufStart <= fBufCur) && (fBufCur <= fBufLoadMax)) , a , b , XMLExcepts::XSer_LoadBuffer_Violation ) } inline void XSerializeEngine::ensurePointer(void* const ptr) const { TEST_THROW_ARG1( (ptr == 0) , 0 , XMLExcepts::XSer_Inv_Null_Pointer ) } inline void XSerializeEngine::resetBuffer() { memset(fBufStart, 0, fBufSize * sizeof(XMLByte)); } // --------------------------------------------------------------------------- // Template object // --------------------------------------------------------------------------- /*** * * Search the store pool to see if the address has been seen before or not. * * If yes, write the corresponding object Tag to the internal buffer * and return true. * * Otherwise, add the address to the store pool and return false * to notifiy the client application code to store the template object. * ***/ bool XSerializeEngine::needToStoreObject(void* const templateObjectToWrite) { ensureStoring(); //don't ensurePointer here !!! XSerializedObjectId_t objIndex = 0; if (!templateObjectToWrite) { *this << fgNullObjectTag; // null pointer return false; } else if (0 != (objIndex = lookupStorePool(templateObjectToWrite))) { *this << objIndex; // write an object reference tag return false; } else { *this << fgTemplateObjTag; // write fgTemplateObjTag to denote that actual // template object follows addStorePool(templateObjectToWrite); // put the address into StorePool return true; } } bool XSerializeEngine::needToLoadObject(void** templateObjectToRead) { ensureLoading(); XSerializedObjectId_t obTag; *this >> obTag; if (obTag == fgTemplateObjTag) { /*** * what follows fgTemplateObjTag is the actual template object * We need the client application to create a template object * and register it through registerObject(), and deserialize * template object ***/ return true; } else { /*** * We hava a reference to an existing template object, get it. */ *templateObjectToRead = lookupLoadPool(obTag); return false; } } void XSerializeEngine::registerObject(void* const templateObjectToRegister) { ensureLoading(); addLoadPool(templateObjectToRegister); } XMLGrammarPool* XSerializeEngine::getGrammarPool() const { return fGrammarPool; } XMLStringPool* XSerializeEngine::getStringPool() const { return fGrammarPool->getURIStringPool(); } MemoryManager* XSerializeEngine::getMemoryManager() const { //todo: changed to return fGrammarPool->getMemoryManager() return fGrammarPool ? fGrammarPool->getMemoryManager() : XMLPlatformUtils::fgMemoryManager; } // // Based on the current position (fBufCur), calculated the needed size // to read/write // inline XMLSize_t XSerializeEngine::alignAdjust(XMLSize_t size) const { XMLSize_t remainder = (XMLSize_t) fBufCur % size; return (remainder == 0) ? 0 : (size - remainder); } // Adjust the fBufCur inline void XSerializeEngine::alignBufCur(XMLSize_t size) { fBufCur+=alignAdjust(size); assert(((XMLSize_t) fBufCur % size)==0); } inline XMLSize_t XSerializeEngine::calBytesNeeded(XMLSize_t size) const { return (alignAdjust(size) + size); } void XSerializeEngine::trace(char* /*funcName*/) const { return; /* if (isStoring()) printf("\n funcName=<%s>, storing, count=<%lu>, postion=<%lu>\n", funcName, fBufCount, getBufCurAccumulated()); else printf("\n funcName=<%s>, loading, count=<%lu>, postion=<%lu>\n", funcName, fBufCount, getBufCurAccumulated()); */ } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/internal/EndOfEntityException.hpp0000644000175000017500000000722311037122704023063 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: EndOfEntityException.hpp 676911 2008-07-15 13:27:32Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_ENDOFENTITYEXCEPTION_HPP) #define XERCESC_INCLUDE_GUARD_ENDOFENTITYEXCEPTION_HPP #include XERCES_CPP_NAMESPACE_BEGIN class XMLEntityDecl; // // This class is only used internally. Its thrown by the ReaderMgr class, // when an entity ends, and is caught in the scanner. This tells the scanner // that an entity has ended, and allows it to do the right thing according // to what was going on when the entity ended. // // Since its internal, it does not bother implementing XMLException. // class XMLPARSER_EXPORT EndOfEntityException { public: // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- EndOfEntityException( XMLEntityDecl* entityThatEnded , const XMLSize_t readerNum) : fEntity(entityThatEnded) , fReaderNum(readerNum) { } EndOfEntityException(const EndOfEntityException& toCopy) : fEntity(toCopy.fEntity) , fReaderNum(toCopy.fReaderNum) { } ~EndOfEntityException() { } // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- XMLEntityDecl& getEntity(); const XMLEntityDecl& getEntity() const; XMLSize_t getReaderNum() const; private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- EndOfEntityException& operator = (const EndOfEntityException&); // ----------------------------------------------------------------------- // Private data members // // fEntity // This is a reference to the entity that ended, causing this // exception. // // fReaderNum // The unique reader number of the reader that was handling this // entity. This is used to know whether a particular entity has // ended. // ----------------------------------------------------------------------- XMLEntityDecl* fEntity; XMLSize_t fReaderNum; }; // --------------------------------------------------------------------------- // EndOfEntityException: Getter methods // --------------------------------------------------------------------------- inline XMLEntityDecl& EndOfEntityException::getEntity() { return *fEntity; } inline const XMLEntityDecl& EndOfEntityException::getEntity() const { return *fEntity; } inline XMLSize_t EndOfEntityException::getReaderNum() const { return fReaderNum; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/internal/IGXMLScanner.cpp0000644000175000017500000034460411301516456021215 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: IGXMLScanner.cpp 882548 2009-11-20 13:44:14Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN typedef JanitorMemFunCall CleanupType; typedef JanitorMemFunCall ReaderMgrResetType; // --------------------------------------------------------------------------- // IGXMLScanner: Constructors and Destructor // --------------------------------------------------------------------------- IGXMLScanner::IGXMLScanner( XMLValidator* const valToAdopt , GrammarResolver* const grammarResolver , MemoryManager* const manager) : XMLScanner(valToAdopt, grammarResolver, manager) , fSeeXsi(false) , fGrammarType(Grammar::UnKnown) , fElemStateSize(16) , fElemState(0) , fElemLoopState(0) , fContent(1023, manager) , fRawAttrList(0) , fRawAttrColonListSize(32) , fRawAttrColonList(0) , fDTDValidator(0) , fSchemaValidator(0) , fDTDGrammar(0) , fICHandler(0) , fLocationPairs(0) , fDTDElemNonDeclPool(0) , fSchemaElemNonDeclPool(0) , fElemCount(0) , fAttDefRegistry(0) , fUndeclaredAttrRegistry(0) , fPSVIAttrList(0) , fModel(0) , fPSVIElement(0) , fErrorStack(0) , fSchemaInfoList(0) , fCachedSchemaInfoList (0) { CleanupType cleanup(this, &IGXMLScanner::cleanUp); try { commonInit(); } catch(const OutOfMemoryException&) { // Don't cleanup when out of memory, since executing the // code can cause problems. cleanup.release(); throw; } cleanup.release(); } IGXMLScanner::IGXMLScanner( XMLDocumentHandler* const docHandler , DocTypeHandler* const docTypeHandler , XMLEntityHandler* const entityHandler , XMLErrorReporter* const errHandler , XMLValidator* const valToAdopt , GrammarResolver* const grammarResolver , MemoryManager* const manager) : XMLScanner(docHandler, docTypeHandler, entityHandler, errHandler, valToAdopt, grammarResolver, manager) , fSeeXsi(false) , fGrammarType(Grammar::UnKnown) , fElemStateSize(16) , fElemState(0) , fElemLoopState(0) , fContent(1023, manager) , fRawAttrList(0) , fRawAttrColonListSize(32) , fRawAttrColonList(0) , fDTDValidator(0) , fSchemaValidator(0) , fDTDGrammar(0) , fICHandler(0) , fLocationPairs(0) , fDTDElemNonDeclPool(0) , fSchemaElemNonDeclPool(0) , fElemCount(0) , fAttDefRegistry(0) , fUndeclaredAttrRegistry(0) , fPSVIAttrList(0) , fModel(0) , fPSVIElement(0) , fErrorStack(0) , fSchemaInfoList(0) , fCachedSchemaInfoList (0) { CleanupType cleanup(this, &IGXMLScanner::cleanUp); try { commonInit(); } catch(const OutOfMemoryException&) { // Don't cleanup when out of memory, since executing the // code can cause problems. cleanup.release(); throw; } cleanup.release(); } IGXMLScanner::~IGXMLScanner() { cleanUp(); } // --------------------------------------------------------------------------- // XMLScanner: Getter methods // --------------------------------------------------------------------------- NameIdPool* IGXMLScanner::getEntityDeclPool() { if(!fDTDGrammar) return 0; return fDTDGrammar->getEntityDeclPool(); } const NameIdPool* IGXMLScanner::getEntityDeclPool() const { if(!fDTDGrammar) return 0; return fDTDGrammar->getEntityDeclPool(); } // --------------------------------------------------------------------------- // IGXMLScanner: Main entry point to scan a document // --------------------------------------------------------------------------- void IGXMLScanner::scanDocument(const InputSource& src) { // Bump up the sequence id for this parser instance. This will invalidate // any previous progressive scan tokens. fSequenceId++; ReaderMgrResetType resetReaderMgr(&fReaderMgr, &ReaderMgr::reset); try { // Reset the scanner and its plugged in stuff for a new run. This // resets all the data structures, creates the initial reader and // pushes it on the stack, and sets up the base document path. scanReset(src); // If we have a document handler, then call the start document if (fDocHandler) fDocHandler->startDocument(); // Scan the prolog part, which is everything before the root element // including the DTD subsets. scanProlog(); // If we got to the end of input, then its not a valid XML file. // Else, go on to scan the content. if (fReaderMgr.atEOF()) { emitError(XMLErrs::EmptyMainEntity); } else { // Scan content, and tell it its not an external entity if (scanContent()) { // Do post-parse validation if required if (fValidate) { // We handle ID reference semantics at this level since // its required by XML 1.0. checkIDRefs(); // Then allow the validator to do any extra stuff it wants // fValidator->postParseValidation(); } // That went ok, so scan for any miscellaneous stuff if (!fReaderMgr.atEOF()) scanMiscellaneous(); } } // If we have a document handler, then call the end document if (fDocHandler) fDocHandler->endDocument(); //cargill debug: //fGrammarResolver->getXSModel(); } // NOTE: // // In all of the error processing below, the emitError() call MUST come // before the flush of the reader mgr, or it will fail because it tries // to find out the position in the XML source of the error. catch(const XMLErrs::Codes) { // This is a 'first failure' exception, so fall through } catch(const XMLValid::Codes) { // This is a 'first fatal error' type exit, so fall through } catch(const XMLException& excToCatch) { // Emit the error and catch any user exception thrown from here. Make // sure in all cases we flush the reader manager. fInException = true; try { if (excToCatch.getErrorType() == XMLErrorReporter::ErrType_Warning) emitError ( XMLErrs::XMLException_Warning , excToCatch.getCode() , excToCatch.getMessage() ); else if (excToCatch.getErrorType() >= XMLErrorReporter::ErrType_Fatal) emitError ( XMLErrs::XMLException_Fatal , excToCatch.getCode() , excToCatch.getMessage() ); else emitError ( XMLErrs::XMLException_Error , excToCatch.getCode() , excToCatch.getMessage() ); } catch(const OutOfMemoryException&) { // This is a special case for out-of-memory // conditions, because resetting the ReaderMgr // can be problematic. resetReaderMgr.release(); throw; } } catch(const OutOfMemoryException&) { // This is a special case for out-of-memory // conditions, because resetting the ReaderMgr // can be problematic. resetReaderMgr.release(); throw; } } bool IGXMLScanner::scanNext(XMLPScanToken& token) { // Make sure this token is still legal if (!isLegalToken(token)) ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Scan_BadPScanToken, fMemoryManager); // Find the next token and remember the reader id XMLSize_t orgReader; XMLTokens curToken; ReaderMgrResetType resetReaderMgr(&fReaderMgr, &ReaderMgr::reset); bool retVal = true; try { while (true) { // We have to handle any end of entity exceptions that happen here. // We could be at the end of X nested entities, each of which will // generate an end of entity exception as we try to move forward. try { curToken = senseNextToken(orgReader); break; } catch(const EndOfEntityException& toCatch) { // Send an end of entity reference event if (fDocHandler) fDocHandler->endEntityReference(toCatch.getEntity()); } } if (curToken == Token_CharData) { scanCharData(fCDataBuf); } else if (curToken == Token_EOF) { if (!fElemStack.isEmpty()) { const ElemStack::StackElem* topElem = fElemStack.popTop(); emitError ( XMLErrs::EndedWithTagsOnStack , topElem->fThisElement->getFullName() ); } retVal = false; } else { // Its some sort of markup bool gotData = true; switch(curToken) { case Token_CData : // Make sure we are within content if (fElemStack.isEmpty()) emitError(XMLErrs::CDATAOutsideOfContent); scanCDSection(); break; case Token_Comment : scanComment(); break; case Token_EndTag : scanEndTag(gotData); break; case Token_PI : scanPI(); break; case Token_StartTag : if (fDoNamespaces) scanStartTagNS(gotData); else scanStartTag(gotData); break; default : fReaderMgr.skipToChar(chOpenAngle); break; } if (orgReader != fReaderMgr.getCurrentReaderNum()) emitError(XMLErrs::PartialMarkupInEntity); // If we hit the end, then do the miscellaneous part if (!gotData) { // Do post-parse validation if required if (fValidate) { // We handle ID reference semantics at this level since // its required by XML 1.0. checkIDRefs(); // Then allow the validator to do any extra stuff it wants // fValidator->postParseValidation(); } // That went ok, so scan for any miscellaneous stuff scanMiscellaneous(); if (toCheckIdentityConstraint()) fICHandler->endDocument(); if (fDocHandler) fDocHandler->endDocument(); } } } // NOTE: // // In all of the error processing below, the emitError() call MUST come // before the flush of the reader mgr, or it will fail because it tries // to find out the position in the XML source of the error. catch(const XMLErrs::Codes) { // This is a 'first failure' exception so return failure retVal = false; } catch(const XMLValid::Codes) { // This is a 'first fatal error' type exit, so return failure retVal = false; } catch(const XMLException& excToCatch) { // Emit the error and catch any user exception thrown from here. Make // sure in all cases we flush the reader manager. fInException = true; try { if (excToCatch.getErrorType() == XMLErrorReporter::ErrType_Warning) emitError ( XMLErrs::XMLException_Warning , excToCatch.getCode() , excToCatch.getMessage() ); else if (excToCatch.getErrorType() >= XMLErrorReporter::ErrType_Fatal) emitError ( XMLErrs::XMLException_Fatal , excToCatch.getCode() , excToCatch.getMessage() ); else emitError ( XMLErrs::XMLException_Error , excToCatch.getCode() , excToCatch.getMessage() ); } catch(const OutOfMemoryException&) { // This is a special case for out-of-memory // conditions, because resetting the ReaderMgr // can be problematic. resetReaderMgr.release(); throw; } retVal = false; } catch(const OutOfMemoryException&) { // This is a special case for out-of-memory // conditions, because resetting the ReaderMgr // can be problematic. resetReaderMgr.release(); throw; } // If we are not at the end, release the object that will // reset the ReaderMgr. if (retVal) resetReaderMgr.release(); return retVal; } // --------------------------------------------------------------------------- // IGXMLScanner: Private helper methods. Most of these are implemented in // IGXMLScanner2.Cpp. // --------------------------------------------------------------------------- // This method handles the common initialization, to avoid having to do // it redundantly in multiple constructors. void IGXMLScanner::commonInit() { // Create the element state array fElemState = (unsigned int*) fMemoryManager->allocate ( fElemStateSize * sizeof(unsigned int) ); //new unsigned int[fElemStateSize]; fElemLoopState = (unsigned int*) fMemoryManager->allocate ( fElemStateSize * sizeof(unsigned int) ); //new unsigned int[fElemStateSize]; // And we need one for the raw attribute scan. This just stores key/ // value string pairs (prior to any processing.) fRawAttrList = new (fMemoryManager) RefVectorOf(32, true, fMemoryManager); fRawAttrColonList = (int*) fMemoryManager->allocate ( fRawAttrColonListSize * sizeof(int) ); // Create the Validator and init them fDTDValidator = new (fMemoryManager) DTDValidator(); initValidator(fDTDValidator); fSchemaValidator = new (fMemoryManager) SchemaValidator(0, fMemoryManager); initValidator(fSchemaValidator); // Create IdentityConstraint info fICHandler = new (fMemoryManager) IdentityConstraintHandler(this, fMemoryManager); // Create schemaLocation pair info fLocationPairs = new (fMemoryManager) ValueVectorOf(8, fMemoryManager); // create pools for undeclared elements fDTDElemNonDeclPool = new (fMemoryManager) NameIdPool(29, 128, fMemoryManager); fSchemaElemNonDeclPool = new (fMemoryManager) RefHash3KeysIdPool(29, true, 128, fMemoryManager); fAttDefRegistry = new (fMemoryManager) RefHashTableOf ( 131, false, fMemoryManager ); fUndeclaredAttrRegistry = new (fMemoryManager) Hash2KeysSetOf(7, fMemoryManager); fPSVIAttrList = new (fMemoryManager) PSVIAttributeList(fMemoryManager); fSchemaInfoList = new (fMemoryManager) RefHash2KeysTableOf(29, fMemoryManager); fCachedSchemaInfoList = new (fMemoryManager) RefHash2KeysTableOf(29, fMemoryManager); // use fDTDValidator as the default validator if (!fValidator) fValidator = fDTDValidator; } void IGXMLScanner::cleanUp() { fMemoryManager->deallocate(fElemState); //delete [] fElemState; fMemoryManager->deallocate(fElemLoopState); //delete [] fElemLoopState; delete fRawAttrList; fMemoryManager->deallocate(fRawAttrColonList); delete fDTDValidator; delete fSchemaValidator; delete fICHandler; delete fLocationPairs; delete fDTDElemNonDeclPool; delete fSchemaElemNonDeclPool; delete fAttDefRegistry; delete fUndeclaredAttrRegistry; delete fPSVIAttrList; delete fPSVIElement; delete fErrorStack; delete fSchemaInfoList; delete fCachedSchemaInfoList; } // --------------------------------------------------------------------------- // IGXMLScanner: Private scanning methods // --------------------------------------------------------------------------- // This method is called from scanStartTag() to handle the very raw initial // scan of the attributes. It just fills in the passed collection with // key/value pairs for each attribute. No processing is done on them at all. XMLSize_t IGXMLScanner::rawAttrScan(const XMLCh* const elemName , RefVectorOf& toFill , bool& isEmpty) { // Keep up with how many attributes we've seen so far, and how many // elements are available in the vector. This way we can reuse old // elements until we run out and then expand it. XMLSize_t attCount = 0; XMLSize_t curVecSize = toFill.size(); // Assume it is not empty isEmpty = false; // We loop until we either see a /> or >, handling key/value pairs util // we get there. We place them in the passed vector, which we will expand // as required to hold them. while (true) { // Get the next character, which should be non-space XMLCh nextCh = fReaderMgr.peekNextChar(); // If the next character is not a slash or closed angle bracket, // then it must be whitespace, since whitespace is required // between the end of the last attribute and the name of the next // one. // if (attCount) { if ((nextCh != chForwardSlash) && (nextCh != chCloseAngle)) { bool bFoundSpace; fReaderMgr.skipPastSpaces(bFoundSpace); if (!bFoundSpace) { // Emit the error but keep on going emitError(XMLErrs::ExpectedWhitespace); } // Ok, peek another char nextCh = fReaderMgr.peekNextChar(); } } // Ok, here we first check for any of the special case characters. // If its not one, then we do the normal case processing, which // assumes that we've hit an attribute value, Otherwise, we do all // the special case checks. if (!fReaderMgr.getCurrentReader()->isSpecialStartTagChar(nextCh)) { // Assume it's going to be an attribute, so get a name from // the input. int colonPosition; if (!fReaderMgr.getQName(fAttNameBuf, &colonPosition)) { if (fAttNameBuf.isEmpty()) emitError(XMLErrs::ExpectedAttrName); else emitError(XMLErrs::InvalidAttrName, fAttNameBuf.getRawBuffer()); fReaderMgr.skipPastChar(chCloseAngle); return attCount; } const XMLCh* curAttNameBuf = fAttNameBuf.getRawBuffer(); // And next must be an equal sign if (!scanEq()) { static const XMLCh tmpList[] = { chSingleQuote, chDoubleQuote, chCloseAngle , chOpenAngle, chForwardSlash, chNull }; emitError(XMLErrs::ExpectedEqSign); // Try to sync back up by skipping forward until we either // hit something meaningful. const XMLCh chFound = fReaderMgr.skipUntilInOrWS(tmpList); if ((chFound == chCloseAngle) || (chFound == chForwardSlash)) { // Jump back to top for normal processing of these continue; } else if ((chFound == chSingleQuote) || (chFound == chDoubleQuote) || fReaderMgr.getCurrentReader()->isWhitespace(chFound)) { // Just fall through assuming that the value is to follow } else if (chFound == chOpenAngle) { // Assume a malformed tag and that new one is starting emitError(XMLErrs::UnterminatedStartTag, elemName); return attCount; } else { // Something went really wrong return attCount; } } // Next should be the quoted attribute value. We just do a simple // and stupid scan of this value. The only thing we do here // is to expand entity references. if (!basicAttrValueScan(curAttNameBuf, fAttValueBuf)) { static const XMLCh tmpList[] = { chCloseAngle, chOpenAngle, chForwardSlash, chNull }; emitError(XMLErrs::ExpectedAttrValue); // It failed, so lets try to get synced back up. We skip // forward until we find some whitespace or one of the // chars in our list. const XMLCh chFound = fReaderMgr.skipUntilInOrWS(tmpList); if ((chFound == chCloseAngle) || (chFound == chForwardSlash) || fReaderMgr.getCurrentReader()->isWhitespace(chFound)) { // Just fall through and process this attribute, though // the value will be "". } else if (chFound == chOpenAngle) { // Assume a malformed tag and that new one is starting emitError(XMLErrs::UnterminatedStartTag, elemName); return attCount; } else { // Something went really wrong return attCount; } } // And now lets add it to the passed collection. If we have not // filled it up yet, then we use the next element. Else we add // a new one. KVStringPair* curPair = 0; if (attCount >= curVecSize) { curPair = new (fMemoryManager) KVStringPair ( curAttNameBuf , fAttNameBuf.getLen() , fAttValueBuf.getRawBuffer() , fAttValueBuf.getLen() , fMemoryManager ); toFill.addElement(curPair); } else { curPair = toFill.elementAt(attCount); curPair->set ( curAttNameBuf, fAttNameBuf.getLen(), fAttValueBuf.getRawBuffer(), fAttValueBuf.getLen() ); } if (attCount >= fRawAttrColonListSize) { resizeRawAttrColonList(); } // Set the position of the colon and bump the count of attributes we've gotten fRawAttrColonList[attCount++] = colonPosition; // And go to the top again for another attribute continue; } // It was some special case character so do all of the checks and // deal with it. if (!nextCh) ThrowXMLwithMemMgr(UnexpectedEOFException, XMLExcepts::Gen_UnexpectedEOF, fMemoryManager); if (nextCh == chForwardSlash) { fReaderMgr.getNextChar(); isEmpty = true; if (!fReaderMgr.skippedChar(chCloseAngle)) emitError(XMLErrs::UnterminatedStartTag, elemName); break; } else if (nextCh == chCloseAngle) { fReaderMgr.getNextChar(); break; } else if (nextCh == chOpenAngle) { // Check for this one specially, since its going to be common // and it is kind of auto-recovering since we've already hit the // next open bracket, which is what we would have seeked to (and // skipped this whole tag.) emitError(XMLErrs::UnterminatedStartTag, elemName); break; } else if ((nextCh == chSingleQuote) || (nextCh == chDoubleQuote)) { // Check for this one specially, which is probably a missing // attribute name, e.g. ="value". Just issue expected name // error and eat the quoted string, then jump back to the // top again. emitError(XMLErrs::ExpectedAttrName); fReaderMgr.getNextChar(); fReaderMgr.skipQuotedString(nextCh); fReaderMgr.skipPastSpaces(); continue; } } return attCount; } // This method will kick off the scanning of the primary content of the // document, i.e. the elements. bool IGXMLScanner::scanContent() { // Go into a loop until we hit the end of the root element, or we fall // out because there is no root element. // // We have to do kind of a deeply nested double loop here in order to // avoid doing the setup/teardown of the exception handler on each // round. Doing it this way we only do it when an exception actually // occurs. bool gotData = true; bool inMarkup = false; while (gotData) { try { while (gotData) { // Sense what the next top level token is. According to what // this tells us, we will call something to handle that kind // of thing. XMLSize_t orgReader; const XMLTokens curToken = senseNextToken(orgReader); // Handle character data and end of file specially. Char data // is not markup so we don't want to handle it in the loop // below. if (curToken == Token_CharData) { // Scan the character data and call appropriate events. Let // him use our local character data buffer for efficiency. scanCharData(fCDataBuf); continue; } else if (curToken == Token_EOF) { // The element stack better be empty at this point or we // ended prematurely before all elements were closed. if (!fElemStack.isEmpty()) { const ElemStack::StackElem* topElem = fElemStack.popTop(); emitError ( XMLErrs::EndedWithTagsOnStack , topElem->fThisElement->getFullName() ); } // Its the end of file, so clear the got data flag gotData = false; continue; } // We are in some sort of markup now inMarkup = true; // According to the token we got, call the appropriate // scanning method. switch(curToken) { case Token_CData : // Make sure we are within content if (fElemStack.isEmpty()) emitError(XMLErrs::CDATAOutsideOfContent); scanCDSection(); break; case Token_Comment : scanComment(); break; case Token_EndTag : scanEndTag(gotData); break; case Token_PI : scanPI(); break; case Token_StartTag : if (fDoNamespaces) scanStartTagNS(gotData); else scanStartTag(gotData); break; default : fReaderMgr.skipToChar(chOpenAngle); break; } if (orgReader != fReaderMgr.getCurrentReaderNum()) emitError(XMLErrs::PartialMarkupInEntity); // And we are back out of markup again inMarkup = false; } } catch(const EndOfEntityException& toCatch) { // If we were in some markup when this happened, then its a // partial markup error. if (inMarkup) emitError(XMLErrs::PartialMarkupInEntity); // Send an end of entity reference event if (fDocHandler) fDocHandler->endEntityReference(toCatch.getEntity()); inMarkup = false; } } // It went ok, so return success return true; } void IGXMLScanner::scanEndTag(bool& gotData) { // Assume we will still have data until proven otherwise. It will only // ever be false if this is the end of the root element. gotData = true; // Check if the element stack is empty. If so, then this is an unbalanced // element (i.e. more ends than starts, perhaps because of bad text // causing one to be skipped.) if (fElemStack.isEmpty()) { emitError(XMLErrs::MoreEndThanStartTags); fReaderMgr.skipPastChar(chCloseAngle); ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Scan_UnbalancedStartEnd, fMemoryManager); } // Pop the stack of the element we are supposed to be ending. Remember // that we don't own this. The stack just keeps them and reuses them. unsigned int uriId = (fDoNamespaces) ? fElemStack.getCurrentURI() : fEmptyNamespaceId; // these get initialized below const ElemStack::StackElem* topElem = 0; const XMLCh *elemName = 0; // Make sure that its the end of the element that we expect // special case for schema validation, whose element decls, // obviously don't contain prefix information if(fGrammarType == Grammar::SchemaGrammarType) { elemName = fElemStack.getCurrentSchemaElemName(); topElem = fElemStack.topElement(); } else { topElem = fElemStack.topElement(); elemName = topElem->fThisElement->getFullName(); } if (!fReaderMgr.skippedStringLong(elemName)) { emitError ( XMLErrs::ExpectedEndOfTagX , elemName ); fReaderMgr.skipPastChar(chCloseAngle); fElemStack.popTop(); return; } // Make sure we are back on the same reader as where we started if (topElem->fReaderNum != fReaderMgr.getCurrentReaderNum()) emitError(XMLErrs::PartialTagMarkupError); // Skip optional whitespace fReaderMgr.skipPastSpaces(); // Make sure we find the closing bracket if (!fReaderMgr.skippedChar(chCloseAngle)) { emitError ( XMLErrs::UnterminatedEndTag , topElem->fThisElement->getFullName() ); } if (fGrammarType == Grammar::SchemaGrammarType) { // reset error occurred fPSVIElemContext.fErrorOccurred = fErrorStack->pop(); if (fValidate && topElem->fThisElement->isDeclared()) { fPSVIElemContext.fCurrentTypeInfo = ((SchemaValidator*) fValidator)->getCurrentTypeInfo(); if(!fPSVIElemContext.fCurrentTypeInfo) fPSVIElemContext.fCurrentDV = ((SchemaValidator*) fValidator)->getCurrentDatatypeValidator(); else fPSVIElemContext.fCurrentDV = 0; if(fPSVIHandler) { fPSVIElemContext.fNormalizedValue = ((SchemaValidator*) fValidator)->getNormalizedValue(); if (XMLString::equals(fPSVIElemContext.fNormalizedValue, XMLUni::fgZeroLenString)) fPSVIElemContext.fNormalizedValue = 0; } } else { fPSVIElemContext.fCurrentDV = 0; fPSVIElemContext.fCurrentTypeInfo = 0; fPSVIElemContext.fNormalizedValue = 0; } } // If validation is enabled, then lets pass him the list of children and // this element and let him validate it. DatatypeValidator* psviMemberType = 0; if (fValidate) { // // XML1.0-3rd // Validity Constraint: // The declaration matches EMPTY and the element has no content (not even // entity references, comments, PIs or white space). // if ( (fGrammarType == Grammar::DTDGrammarType) && (topElem->fCommentOrPISeen) && (((DTDElementDecl*) topElem->fThisElement)->getModelType() == DTDElementDecl::Empty)) { fValidator->emitError ( XMLValid::EmptyElemHasContent , topElem->fThisElement->getFullName() ); } // // XML1.0-3rd // Validity Constraint: // // The declaration matches children and the sequence of child elements // belongs to the language generated by the regular expression in the // content model, with optional white space, comments and PIs // (i.e. markup matching production [27] Misc) between the start-tag and // the first child element, between child elements, or between the last // child element and the end-tag. // // Note that // a CDATA section containing only white space or // a reference to an entity whose replacement text is character references // expanding to white space do not match the nonterminal S, and hence // cannot appear in these positions; however, // a reference to an internal entity with a literal value consisting // of character references expanding to white space does match S, // since its replacement text is the white space resulting from expansion // of the character references. // if ( (fGrammarType == Grammar::DTDGrammarType) && (topElem->fReferenceEscaped) && (((DTDElementDecl*) topElem->fThisElement)->getModelType() == DTDElementDecl::Children)) { fValidator->emitError ( XMLValid::ElemChildrenHasInvalidWS , topElem->fThisElement->getFullName() ); } XMLSize_t failure; bool res = fValidator->checkContent ( topElem->fThisElement , topElem->fChildren , topElem->fChildCount , &failure ); if (!res) { // One of the elements is not valid for the content. NOTE that // if no children were provided but the content model requires // them, it comes back with a zero value. But we cannot use that // to index the child array in this case, and have to put out a // special message. if (!topElem->fChildCount) { fValidator->emitError ( XMLValid::EmptyNotValidForContent , topElem->fThisElement->getFormattedContentModel() ); } else if (failure >= topElem->fChildCount) { fValidator->emitError ( XMLValid::NotEnoughElemsForCM , topElem->fThisElement->getFormattedContentModel() ); } else { fValidator->emitError ( XMLValid::ElementNotValidForContent , topElem->fChildren[failure]->getRawName() , topElem->fThisElement->getFormattedContentModel() ); } } if (fGrammarType == Grammar::SchemaGrammarType) { if (((SchemaValidator*) fValidator)->getErrorOccurred()) fPSVIElemContext.fErrorOccurred = true; else if (fPSVIElemContext.fCurrentDV && fPSVIElemContext.fCurrentDV->getType() == DatatypeValidator::Union) psviMemberType = fValidationContext->getValidatingMemberType(); if (fPSVIHandler) { fPSVIElemContext.fIsSpecified = ((SchemaValidator*) fValidator)->getIsElemSpecified(); if(fPSVIElemContext.fIsSpecified) fPSVIElemContext.fNormalizedValue = ((SchemaElementDecl *)topElem->fThisElement)->getDefaultValue(); } // call matchers and de-activate context if (toCheckIdentityConstraint()) { fICHandler->deactivateContext ( (SchemaElementDecl *) topElem->fThisElement , fContent.getRawBuffer() , fValidationContext , fPSVIElemContext.fCurrentDV ); } } } // QName dv needed topElem to resolve URIs on the checkContent fElemStack.popTop(); // See if it was the root element, to avoid multiple calls below const bool isRoot = fElemStack.isEmpty(); if (fGrammarType == Grammar::SchemaGrammarType) { if (fPSVIHandler) { endElementPSVI( (SchemaElementDecl*)topElem->fThisElement, psviMemberType); } // now we can reset the datatype buffer, since the // application has had a chance to copy the characters somewhere else ((SchemaValidator *)fValidator)->clearDatatypeBuffer(); } // If we have a doc handler, tell it about the end tag if (fDocHandler) { if (fGrammarType == Grammar::SchemaGrammarType) { if (topElem->fPrefixColonPos != -1) fPrefixBuf.set(elemName, topElem->fPrefixColonPos); else fPrefixBuf.reset(); } else { fPrefixBuf.set(topElem->fThisElement->getElementName()->getPrefix()); } fDocHandler->endElement ( *topElem->fThisElement , uriId , isRoot , fPrefixBuf.getRawBuffer() ); } if (fGrammarType == Grammar::SchemaGrammarType) { if (!isRoot) { // update error information fErrorStack->push((fErrorStack->size() && fErrorStack->pop()) || fPSVIElemContext.fErrorOccurred); } } // If this was the root, then done with content gotData = !isRoot; if (gotData) { if (fDoNamespaces) { // Restore the grammar fGrammar = fElemStack.getCurrentGrammar(); fGrammarType = fGrammar->getGrammarType(); if (fGrammarType == Grammar::SchemaGrammarType && !fValidator->handlesSchema()) { if (fValidatorFromUser) ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Gen_NoSchemaValidator, fMemoryManager); else { fValidator = fSchemaValidator; } } else if (fGrammarType == Grammar::DTDGrammarType && !fValidator->handlesDTD()) { if (fValidatorFromUser) ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Gen_NoDTDValidator, fMemoryManager); else { fValidator = fDTDValidator; } } fValidator->setGrammar(fGrammar); } // Restore the validation flag fValidate = fElemStack.getValidationFlag(); } } // This method handles the high level logic of scanning the DOCType // declaration. This calls the DTDScanner and kicks off both the scanning of // the internal subset and the scanning of the external subset, if any. // // When we get here the 'resetDocType(); // There must be some space after DOCTYPE bool skippedSomething; fReaderMgr.skipPastSpaces(skippedSomething); if (!skippedSomething) { emitError(XMLErrs::ExpectedWhitespace); // Just skip the Doctype declaration and return fReaderMgr.skipPastChar(chCloseAngle); return; } // Get a buffer for the root element XMLBufBid bbRootName(&fBufMgr); // Get a name from the input, which should be the name of the root // element of the upcoming content. int colonPosition; bool validName = fDoNamespaces ? fReaderMgr.getQName(bbRootName.getBuffer(), &colonPosition) : fReaderMgr.getName(bbRootName.getBuffer()); if (!validName) { if (bbRootName.isEmpty()) emitError(XMLErrs::NoRootElemInDOCTYPE); else emitError(XMLErrs::InvalidRootElemInDOCTYPE, bbRootName.getRawBuffer()); fReaderMgr.skipPastChar(chCloseAngle); return; } // Store the root element name for later check setRootElemName(bbRootName.getRawBuffer()); // This element obviously is not going to exist in the element decl // pool yet, but we need to call docTypeDecl. So force it into // the element decl pool, marked as being there because it was in // the DOCTYPE. Later, when its declared, the status will be updated. // // Only do this if we are not reusing the validator! If we are reusing, // then look it up instead. It has to exist! MemoryManager* const rootDeclMgr = fUseCachedGrammar ? fMemoryManager : fGrammarPoolMemoryManager; DTDElementDecl* rootDecl = new (rootDeclMgr) DTDElementDecl ( bbRootName.getRawBuffer() , fEmptyNamespaceId , DTDElementDecl::Any , rootDeclMgr ); Janitor rootDeclJanitor(rootDecl); rootDecl->setCreateReason(DTDElementDecl::AsRootElem); rootDecl->setExternalElemDeclaration(true); if(!fUseCachedGrammar) { fGrammar->putElemDecl(rootDecl); rootDeclJanitor.release(); } else { // attach this to the undeclared element pool so that it gets deleted XMLElementDecl* elemDecl = fDTDElemNonDeclPool->getByKey(bbRootName.getRawBuffer()); if (elemDecl) { rootDecl->setId(elemDecl->getId()); } else { rootDecl->setId(fDTDElemNonDeclPool->put((DTDElementDecl*)rootDecl)); rootDeclJanitor.release(); } } // Skip any spaces after the name fReaderMgr.skipPastSpaces(); // And now if we are looking at a >, then we are done. It is not // required to have an internal or external subset, though why you // would not escapes me. if (fReaderMgr.skippedChar(chCloseAngle)) { // If we have a doc type handler and advanced callbacks are enabled, // call the doctype event. if (fDocTypeHandler) fDocTypeHandler->doctypeDecl(*rootDecl, 0, 0, false); return; } // either internal/external subset if (fValScheme == Val_Auto && !fValidate) fValidate = true; bool hasIntSubset = false; bool hasExtSubset = false; XMLCh* sysId = 0; XMLCh* pubId = 0; DTDScanner dtdScanner ( (DTDGrammar*) fGrammar , fDocTypeHandler , fGrammarPoolMemoryManager , fMemoryManager ); dtdScanner.setScannerInfo(this, &fReaderMgr, &fBufMgr); // If the next character is '[' then we have no external subset cause // there is no system id, just the opening character of the internal // subset. Else, has to be an id. // // Just look at the next char, don't eat it. if (fReaderMgr.peekNextChar() == chOpenSquare) { hasIntSubset = true; } else { // Indicate we have an external subset hasExtSubset = true; fHasNoDTD = false; // Get buffers for the ids XMLBufBid bbPubId(&fBufMgr); XMLBufBid bbSysId(&fBufMgr); // Get the external subset id if (!dtdScanner.scanId(bbPubId.getBuffer(), bbSysId.getBuffer(), DTDScanner::IDType_External)) { fReaderMgr.skipPastChar(chCloseAngle); return; } // Get copies of the ids we got pubId = XMLString::replicate(bbPubId.getRawBuffer(), fMemoryManager); sysId = XMLString::replicate(bbSysId.getRawBuffer(), fMemoryManager); // Skip spaces and check again for the opening of an internal subset fReaderMgr.skipPastSpaces(); // Just look at the next char, don't eat it. if (fReaderMgr.peekNextChar() == chOpenSquare) { hasIntSubset = true; } } // Insure that the ids get cleaned up, if they got allocated ArrayJanitor janSysId(sysId, fMemoryManager); ArrayJanitor janPubId(pubId, fMemoryManager); // If we have a doc type handler and advanced callbacks are enabled, // call the doctype event. if (fDocTypeHandler) fDocTypeHandler->doctypeDecl(*rootDecl, pubId, sysId, hasIntSubset, hasExtSubset); // Ok, if we had an internal subset, we are just past the [ character // and need to parse that first. if (hasIntSubset) { // Eat the opening square bracket fReaderMgr.getNextChar(); checkInternalDTD(hasExtSubset, sysId, pubId); // And try to scan the internal subset. If we fail, try to recover // by skipping forward tot he close angle and returning. if (!dtdScanner.scanInternalSubset()) { fReaderMgr.skipPastChar(chCloseAngle); return; } // Do a sanity check that some expanded PE did not propogate out of // the doctype. This could happen if it was terminated early by bad // syntax. if (fReaderMgr.getReaderDepth() > 1) { emitError(XMLErrs::PEPropogated); // Ask the reader manager to pop back down to the main level fReaderMgr.cleanStackBackTo(1); } fReaderMgr.skipPastSpaces(); } // And that should leave us at the closing > of the DOCTYPE line if (!fReaderMgr.skippedChar(chCloseAngle)) { // Do a special check for the common scenario of an extra ] char at // the end. This is easy to recover from. if (fReaderMgr.skippedChar(chCloseSquare) && fReaderMgr.skippedChar(chCloseAngle)) { emitError(XMLErrs::ExtraCloseSquare); } else { emitError(XMLErrs::UnterminatedDOCTYPE); fReaderMgr.skipPastChar(chCloseAngle); } } // If we had an external subset, then we need to deal with that one // next. If we are reusing the validator, then don't scan it. if (hasExtSubset) { InputSource* srcUsed=0; Janitor janSrc(srcUsed); // If we had an internal subset and we're using the cached grammar, it // means that the ignoreCachedDTD is set, so we ignore the cached // grammar if (fUseCachedGrammar && !hasIntSubset) { srcUsed = resolveSystemId(sysId, pubId); if (srcUsed) { janSrc.reset(srcUsed); Grammar* grammar = fGrammarResolver->getGrammar(srcUsed->getSystemId()); if (grammar && grammar->getGrammarType() == Grammar::DTDGrammarType) { fDTDGrammar = (DTDGrammar*) grammar; fGrammar = fDTDGrammar; fValidator->setGrammar(fGrammar); // If we don't report at least the external subset boundaries, // an advanced document handler cannot know when the DTD end, // since we've already sent a doctype decl that indicates there's // there's an external subset. if (fDocTypeHandler) { fDocTypeHandler->startExtSubset(); fDocTypeHandler->endExtSubset(); } return; } } } if (fLoadExternalDTD || fValidate) { // And now create a reader to read this entity XMLReader* reader; if (srcUsed) { reader = fReaderMgr.createReader ( *srcUsed , false , XMLReader::RefFrom_NonLiteral , XMLReader::Type_General , XMLReader::Source_External , fCalculateSrcOfs , fLowWaterMark ); } else { reader = fReaderMgr.createReader ( sysId , pubId , false , XMLReader::RefFrom_NonLiteral , XMLReader::Type_General , XMLReader::Source_External , srcUsed , fCalculateSrcOfs , fLowWaterMark , fDisableDefaultEntityResolution ); janSrc.reset(srcUsed); } // If it failed then throw an exception if (!reader) ThrowXMLwithMemMgr1(RuntimeException, XMLExcepts::Gen_CouldNotOpenDTD, srcUsed ? srcUsed->getSystemId() : sysId, fMemoryManager); if (fToCacheGrammar) { unsigned int stringId = fGrammarResolver->getStringPool()->addOrFind(srcUsed->getSystemId()); const XMLCh* sysIdStr = fGrammarResolver->getStringPool()->getValueForId(stringId); fGrammarResolver->orphanGrammar(XMLUni::fgDTDEntityString); ((XMLDTDDescription*) (fGrammar->getGrammarDescription()))->setSystemId(sysIdStr); fGrammarResolver->putGrammar(fGrammar); } // In order to make the processing work consistently, we have to // make this look like an external entity. So create an entity // decl and fill it in and push it with the reader, as happens // with an external entity. Put a janitor on it to insure it gets // cleaned up. The reader manager does not adopt them. const XMLCh gDTDStr[] = { chLatin_D, chLatin_T, chLatin_D , chNull }; DTDEntityDecl* declDTD = new (fMemoryManager) DTDEntityDecl(gDTDStr, false, fMemoryManager); declDTD->setSystemId(sysId); declDTD->setIsExternal(true); Janitor janDecl(declDTD); // Mark this one as a throw at end reader->setThrowAtEnd(true); // And push it onto the stack, with its pseudo name fReaderMgr.pushReader(reader, declDTD); // Tell it its not in an include section dtdScanner.scanExtSubsetDecl(false, true); } } } bool IGXMLScanner::scanStartTag(bool& gotData) { // Assume we will still have data until proven otherwise. It will only // ever be false if this is the root and its empty. gotData = true; // Get the QName. In this case, we are not doing namespaces, so we just // use it as is and don't have to break it into parts. if (!fReaderMgr.getName(fQNameBuf)) { emitError(XMLErrs::ExpectedElementName); fReaderMgr.skipToChar(chOpenAngle); return false; } // Assume it won't be an empty tag bool isEmpty = false; // Lets try to look up the element in the validator's element decl pool // We can pass bogus values for the URI id and the base name. We know that // this can only be called if we are doing a DTD style validator and that // he will only look at the QName. // // We tell him to fault in a decl if he does not find one. // Actually, we *don't* tell him to fault in a decl if he does not find one- NG bool wasAdded = false; const XMLCh *rawQName = fQNameBuf.getRawBuffer(); XMLElementDecl* elemDecl = fGrammar->getElemDecl ( fEmptyNamespaceId , 0 , rawQName , Grammar::TOP_LEVEL_SCOPE ); // look for it in the undeclared pool: if(!elemDecl) { elemDecl = fDTDElemNonDeclPool->getByKey(rawQName); } if(!elemDecl) { // we're assuming this must be a DTD element. DTD's can be // used with or without namespaces, but schemas cannot be used without // namespaces. wasAdded = true; elemDecl = new (fMemoryManager) DTDElementDecl ( rawQName , fEmptyNamespaceId , DTDElementDecl::Any , fMemoryManager ); elemDecl->setId(fDTDElemNonDeclPool->put((DTDElementDecl*)elemDecl)); } // We do something different here according to whether we found the // element or not. if (wasAdded) { // If validating then emit an error if (fValidate) { // This is to tell the reuse Validator that this element was // faulted-in, was not an element in the validator pool originally elemDecl->setCreateReason(XMLElementDecl::JustFaultIn); fValidator->emitError ( XMLValid::ElementNotDefined , elemDecl->getFullName() ); } } else { // If its not marked declared and validating, then emit an error if (fValidate && !elemDecl->isDeclared()) { fValidator->emitError ( XMLValid::ElementNotDefined , elemDecl->getFullName() ); } } // See if its the root element const bool isRoot = fElemStack.isEmpty(); // Expand the element stack and add the new element fElemStack.addLevel(elemDecl, fReaderMgr.getCurrentReaderNum()); fElemStack.setValidationFlag(fValidate); // Validate the element if (fValidate) fValidator->validateElement(elemDecl); // If this is the first element and we are validating, check the root // element. if (isRoot) { fRootGrammar = fGrammar; if (fValidate) { // If a DocType exists, then check if it matches the root name there. if (fRootElemName && !XMLString::equals(fQNameBuf.getRawBuffer(), fRootElemName)) fValidator->emitError(XMLValid::RootElemNotLikeDocType); } } else { // If the element stack is not empty, then add this element as a // child of the previous top element. If its empty, this is the root // elem and is not the child of anything. fElemStack.addChild(elemDecl->getElementName(), true); } // Skip any whitespace after the name fReaderMgr.skipPastSpaces(); // We loop until we either see a /> or >, handling attribute/value // pairs until we get there. XMLSize_t attCount = 0; XMLSize_t curAttListSize = fAttrList->size(); wasAdded = false; fElemCount++; while (true) { // And get the next non-space character XMLCh nextCh = fReaderMgr.peekNextChar(); // If the next character is not a slash or closed angle bracket, // then it must be whitespace, since whitespace is required // between the end of the last attribute and the name of the next // one. if (attCount) { if ((nextCh != chForwardSlash) && (nextCh != chCloseAngle)) { bool bFoundSpace; fReaderMgr.skipPastSpaces(bFoundSpace); if (!bFoundSpace) { // Emit the error but keep on going emitError(XMLErrs::ExpectedWhitespace); } // Ok, peek another char nextCh = fReaderMgr.peekNextChar(); } } // Ok, here we first check for any of the special case characters. // If its not one, then we do the normal case processing, which // assumes that we've hit an attribute value, Otherwise, we do all // the special case checks. if (!fReaderMgr.getCurrentReader()->isSpecialStartTagChar(nextCh)) { // Assume its going to be an attribute, so get a name from // the input. if (!fReaderMgr.getName(fAttNameBuf)) { emitError(XMLErrs::ExpectedAttrName); fReaderMgr.skipPastChar(chCloseAngle); return false; } // And next must be an equal sign if (!scanEq()) { static const XMLCh tmpList[] = { chSingleQuote, chDoubleQuote, chCloseAngle , chOpenAngle, chForwardSlash, chNull }; emitError(XMLErrs::ExpectedEqSign); // Try to sync back up by skipping forward until we either // hit something meaningful. const XMLCh chFound = fReaderMgr.skipUntilInOrWS(tmpList); if ((chFound == chCloseAngle) || (chFound == chForwardSlash)) { // Jump back to top for normal processing of these continue; } else if ((chFound == chSingleQuote) || (chFound == chDoubleQuote) || fReaderMgr.getCurrentReader()->isWhitespace(chFound)) { // Just fall through assuming that the value is to follow } else if (chFound == chOpenAngle) { // Assume a malformed tag and that new one is starting emitError(XMLErrs::UnterminatedStartTag, elemDecl->getFullName()); return false; } else { // Something went really wrong return false; } } // See if this attribute is declared for this element. If we are // not validating of course it will not be at first, but we will // fault it into the pool (to avoid lots of redundant errors.) XMLCh * namePtr = fAttNameBuf.getRawBuffer(); XMLAttDef* attDef = ((DTDElementDecl *)elemDecl)->getAttDef(namePtr); // Add this attribute to the attribute list that we use to // pass them to the handler. We reuse its existing elements // but expand it as required. // Note that we want to this first since this will // make a copy of the namePtr; we can then make use of // that copy in the hashtable lookup that checks // for duplicates. This will mean we may have to update // the type of the XMLAttr later. XMLAttr* curAtt; if (attCount >= curAttListSize) { curAtt = new (fMemoryManager) XMLAttr ( 0 , namePtr , XMLUni::fgZeroLenString , XMLUni::fgZeroLenString , (attDef)?attDef->getType():XMLAttDef::CData , true , fMemoryManager ); fAttrList->addElement(curAtt); } else { curAtt = fAttrList->elementAt(attCount); curAtt->set ( 0 , namePtr , XMLUni::fgZeroLenString , XMLUni::fgZeroLenString , (attDef)?attDef->getType():XMLAttDef::CData ); curAtt->setSpecified(true); } // reset namePtr so it refers to newly-allocated memory namePtr = (XMLCh *)curAtt->getName(); if (!attDef) { // If there is a validation handler, then we are validating // so emit an error. if (fValidate) { fValidator->emitError ( XMLValid::AttNotDefinedForElement , fAttNameBuf.getRawBuffer() , elemDecl->getFullName() ); } if(!fUndeclaredAttrRegistry->putIfNotPresent(namePtr, 0)) { emitError ( XMLErrs::AttrAlreadyUsedInSTag , namePtr , elemDecl->getFullName() ); } } else { // prepare for duplicate detection unsigned int *curCountPtr = fAttDefRegistry->get(attDef); if(!curCountPtr) { curCountPtr = getNewUIntPtr(); *curCountPtr = fElemCount; fAttDefRegistry->put(attDef, curCountPtr); } else if(*curCountPtr < fElemCount) *curCountPtr = fElemCount; else { emitError ( XMLErrs::AttrAlreadyUsedInSTag , attDef->getFullName() , elemDecl->getFullName() ); } } // Skip any whitespace before the value and then scan the att // value. This will come back normalized with entity refs and // char refs expanded. fReaderMgr.skipPastSpaces(); if (!scanAttValue(attDef, namePtr, fAttValueBuf)) { static const XMLCh tmpList[] = { chCloseAngle, chOpenAngle, chForwardSlash, chNull }; emitError(XMLErrs::ExpectedAttrValue); // It failed, so lets try to get synced back up. We skip // forward until we find some whitespace or one of the // chars in our list. const XMLCh chFound = fReaderMgr.skipUntilInOrWS(tmpList); if ((chFound == chCloseAngle) || (chFound == chForwardSlash) || fReaderMgr.getCurrentReader()->isWhitespace(chFound)) { // Just fall through and process this attribute, though // the value will be "". } else if (chFound == chOpenAngle) { // Assume a malformed tag and that new one is starting emitError(XMLErrs::UnterminatedStartTag, elemDecl->getFullName()); return false; } else { // Something went really wrong return false; } } // must set the newly-minted value on the XMLAttr: curAtt->setValue(fAttValueBuf.getRawBuffer()); // Now that its all stretched out, lets look at its type and // determine if it has a valid value. It will output any needed // errors, but we just keep going. We only need to do this if // we are validating. if (attDef) { // Let the validator pass judgement on the attribute value if (fValidate) { fValidator->validateAttrValue ( attDef , fAttValueBuf.getRawBuffer() , false , elemDecl ); } } attCount++; // And jump back to the top of the loop continue; } // It was some special case character so do all of the checks and // deal with it. if (!nextCh) ThrowXMLwithMemMgr(UnexpectedEOFException, XMLExcepts::Gen_UnexpectedEOF, fMemoryManager); if (nextCh == chForwardSlash) { fReaderMgr.getNextChar(); isEmpty = true; if (!fReaderMgr.skippedChar(chCloseAngle)) emitError(XMLErrs::UnterminatedStartTag, elemDecl->getFullName()); break; } else if (nextCh == chCloseAngle) { fReaderMgr.getNextChar(); break; } else if (nextCh == chOpenAngle) { // Check for this one specially, since its going to be common // and it is kind of auto-recovering since we've already hit the // next open bracket, which is what we would have seeked to (and // skipped this whole tag.) emitError(XMLErrs::UnterminatedStartTag, elemDecl->getFullName()); break; } else if ((nextCh == chSingleQuote) || (nextCh == chDoubleQuote)) { // Check for this one specially, which is probably a missing // attribute name, e.g. ="value". Just issue expected name // error and eat the quoted string, then jump back to the // top again. emitError(XMLErrs::ExpectedAttrName); fReaderMgr.getNextChar(); fReaderMgr.skipQuotedString(nextCh); fReaderMgr.skipPastSpaces(); continue; } } if(attCount) { // clean up after ourselves: // clear the map used to detect duplicate attributes fUndeclaredAttrRegistry->removeAll(); } // Ok, so lets get an enumerator for the attributes of this element // and run through them for well formedness and validity checks. But // make sure that we had any attributes before we do it, since the list // would have have gotten faulted in anyway. if (elemDecl->hasAttDefs()) { // N.B.: this assumes DTD validation. XMLAttDefList& attDefList = elemDecl->getAttDefList(); for(XMLSize_t i=0; iget(&curDef); if (!attCountPtr || *attCountPtr < fElemCount) { // did not occur if (fValidate) { // If we are validating and its required, then an error if (defType == XMLAttDef::Required) { fValidator->emitError ( XMLValid::RequiredAttrNotProvided , curDef.getFullName() ); } else if ((defType == XMLAttDef::Default) || (defType == XMLAttDef::Fixed) ) { if (fStandalone && curDef.isExternal()) { // XML 1.0 Section 2.9 // Document is standalone, so attributes must not be defaulted. fValidator->emitError(XMLValid::NoDefAttForStandalone, curDef.getFullName(), elemDecl->getFullName()); } } } // Fault in the value if needed, and bump the att count if ((defType == XMLAttDef::Default) || (defType == XMLAttDef::Fixed)) { // Let the validator pass judgement on the attribute value if (fValidate) { fValidator->validateAttrValue ( &curDef , curDef.getValue() , false , elemDecl ); } XMLAttr* curAtt; if (attCount >= curAttListSize) { curAtt = new (fMemoryManager) XMLAttr ( 0 , curDef.getFullName() , XMLUni::fgZeroLenString , curDef.getValue() , curDef.getType() , false , fMemoryManager ); fAttrList->addElement(curAtt); curAttListSize++; } else { curAtt = fAttrList->elementAt(attCount); curAtt->set ( 0 , curDef.getFullName() , XMLUni::fgZeroLenString , curDef.getValue() , curDef.getType() ); curAtt->setSpecified(false); } attCount++; } } } } // If empty, validate content right now if we are validating and then // pop the element stack top. Else, we have to update the current stack // top's namespace mapping elements. if (isEmpty) { // If validating, then insure that its legal to have no content if (fValidate) { XMLSize_t failure; bool res = fValidator->checkContent(elemDecl, 0, 0, &failure); if (!res) { fValidator->emitError ( XMLValid::ElementNotValidForContent , elemDecl->getFullName() , elemDecl->getFormattedContentModel() ); } } // Pop the element stack back off since it'll never be used now fElemStack.popTop(); // If the elem stack is empty, then it was an empty root if (isRoot) gotData = false; else { // Restore the validation flag fValidate = fElemStack.getValidationFlag(); } } // If we have a document handler, then tell it about this start tag. We // don't have any URI id to send along, so send fEmptyNamespaceId. We also do not send // any prefix since its just one big name if we are not doing namespaces. if (fDocHandler) { fDocHandler->startElement ( *elemDecl , fEmptyNamespaceId , 0 , *fAttrList , attCount , isEmpty , isRoot ); } return true; } // This method is called to scan a start tag when we are processing // namespaces. There are two different versions of this method, one for // namespace aware processing and one for non-namespace aware processing. // // This method is called after we've scanned the < of a start tag. So we // have to get the element name, then scan the attributes, after which // we are either going to see >, />, or attributes followed by one of those // sequences. bool IGXMLScanner::scanStartTagNS(bool& gotData) { // Assume we will still have data until proven otherwise. It will only // ever be false if this is the root and its empty. gotData = true; // Reset element content buffer fContent.reset(); // The current position is after the open bracket, so we need to read in // in the element name. int prefixColonPos; if (!fReaderMgr.getQName(fQNameBuf, &prefixColonPos)) { if (fQNameBuf.isEmpty()) emitError(XMLErrs::ExpectedElementName); else emitError(XMLErrs::InvalidElementName, fQNameBuf.getRawBuffer()); fReaderMgr.skipToChar(chOpenAngle); return false; } // See if its the root element const bool isRoot = fElemStack.isEmpty(); // Skip any whitespace after the name fReaderMgr.skipPastSpaces(); // First we have to do the rawest attribute scan. We don't do any // normalization of them at all, since we don't know yet what type they // might be (since we need the element decl in order to do that.) bool isEmpty; XMLSize_t attCount = rawAttrScan ( fQNameBuf.getRawBuffer() , *fRawAttrList , isEmpty ); // save the contentleafname and currentscope before addlevel, for later use ContentLeafNameTypeVector* cv = 0; XMLContentModel* cm = 0; unsigned int currentScope = Grammar::TOP_LEVEL_SCOPE; bool laxThisOne = false; if (!isRoot && fGrammarType == Grammar::SchemaGrammarType) { // schema validator will have correct type if validating SchemaElementDecl* tempElement = (SchemaElementDecl*) fElemStack.topElement()->fThisElement; SchemaElementDecl::ModelTypes modelType = tempElement->getModelType(); ComplexTypeInfo *currType = 0; if (fValidate) { currType = ((SchemaValidator*)fValidator)->getCurrentTypeInfo(); if (currType) modelType = (SchemaElementDecl::ModelTypes)currType->getContentType(); else // something must have gone wrong modelType = SchemaElementDecl::Any; } else { currType = tempElement->getComplexTypeInfo(); } if ((modelType == SchemaElementDecl::Mixed_Simple) || (modelType == SchemaElementDecl::Mixed_Complex) || (modelType == SchemaElementDecl::Children)) { cm = currType->getContentModel(); cv = cm->getContentLeafNameTypeVector(); currentScope = fElemStack.getCurrentScope(); } else if (modelType == SchemaElementDecl::Any) { laxThisOne = true; } } // Now, since we might have to update the namespace map for this element, // but we don't have the element decl yet, we just tell the element stack // to expand up to get ready. XMLSize_t elemDepth = fElemStack.addLevel(); fElemStack.setValidationFlag(fValidate); fElemStack.setPrefixColonPos(prefixColonPos); // Check if there is any external schema location specified, and if we are at root, // go through them first before scanning those specified in the instance document if (isRoot && fDoSchema && (fExternalSchemaLocation || fExternalNoNamespaceSchemaLocation)) { if (fExternalSchemaLocation) parseSchemaLocation(fExternalSchemaLocation, true); if (fExternalNoNamespaceSchemaLocation) resolveSchemaGrammar(fExternalNoNamespaceSchemaLocation, XMLUni::fgZeroLenString, true); } // Make an initial pass through the list and find any xmlns attributes or // schema attributes. if (attCount) { scanRawAttrListforNameSpaces(attCount); } // Also find any default or fixed xmlns attributes in DTD defined for // this element. XMLElementDecl* elemDecl = 0; const XMLCh* qnameRawBuf = fQNameBuf.getRawBuffer(); if (fGrammarType == Grammar::DTDGrammarType) { if (!fSkipDTDValidation) { elemDecl = fGrammar->getElemDecl( fEmptyNamespaceId, 0, qnameRawBuf, Grammar::TOP_LEVEL_SCOPE ); if (elemDecl) { if (elemDecl->hasAttDefs()) { XMLAttDefList& attDefList = elemDecl->getAttDefList(); for(XMLSize_t i=0; igetByKey(qnameRawBuf); } } // Resolve the qualified name to a URI and name so that we can look up // the element decl for this element. We have now update the prefix to // namespace map so we should get the correct element now. unsigned int uriId = resolveQNameWithColon( qnameRawBuf, fPrefixBuf, ElemStack::Mode_Element, prefixColonPos ); //if schema, check if we should lax or skip the validation of this element bool parentValidation = fValidate; if (cv) { QName element(fPrefixBuf.getRawBuffer(), &qnameRawBuf[prefixColonPos + 1], uriId, fMemoryManager); // elementDepth will be > 0, as cv is only constructed if element is not // root. laxThisOne = laxElementValidation(&element, cv, cm, elemDepth - 1); } // Look up the element now in the grammar. This will get us back a // generic element decl object. We tell him to fault one in if he does // not find it. bool wasAdded = false; const XMLCh* nameRawBuf = &qnameRawBuf[prefixColonPos + 1]; if (fDoSchema) { if (fGrammarType == Grammar::DTDGrammarType) { if (!switchGrammar(getURIText(uriId))) { fValidator->emitError( XMLValid::GrammarNotFound, getURIText(uriId) ); } } if (fGrammarType == Grammar::SchemaGrammarType) { elemDecl = fGrammar->getElemDecl( uriId, nameRawBuf, qnameRawBuf, currentScope ); // if not found, then it may be a reference, try TOP_LEVEL_SCOPE if (!elemDecl) { bool checkTopLevel = (currentScope != Grammar::TOP_LEVEL_SCOPE); const XMLCh* original_uriStr = fGrammar->getTargetNamespace(); unsigned int orgGrammarUri = fURIStringPool->getId(original_uriStr); if (orgGrammarUri != uriId) { if (switchGrammar(getURIText(uriId))) { checkTopLevel = true; } else { // the laxElementValidation routine (called above) will // set fValidate to false for a "skipped" element if (!laxThisOne && fValidate) { fValidator->emitError( XMLValid::GrammarNotFound, getURIText(uriId) ); } checkTopLevel = false; } } if (checkTopLevel) { elemDecl = fGrammar->getElemDecl( uriId, nameRawBuf, qnameRawBuf, Grammar::TOP_LEVEL_SCOPE ); } if (!elemDecl && currentScope != Grammar::TOP_LEVEL_SCOPE) { if (orgGrammarUri == uriId) { // still not found in specified uri // try emptyNamespace see if element should be // un-qualified. // Use a temp variable until we decide this is the case if (uriId != fEmptyNamespaceId) { XMLElementDecl* tempElemDecl = fGrammar->getElemDecl( fEmptyNamespaceId, nameRawBuf, qnameRawBuf, currentScope ); if (tempElemDecl && tempElemDecl->getCreateReason() != XMLElementDecl::JustFaultIn && fValidate) { fValidator->emitError( XMLValid::ElementNotUnQualified, qnameRawBuf ); elemDecl = tempElemDecl; } } } // still Not found in specified uri // go to original Grammar again to see if element needs // to be fully qualified. // Use a temp variable until we decide this is the case else if (uriId == fEmptyNamespaceId) { if (switchGrammar(original_uriStr)) { XMLElementDecl* tempElemDecl = fGrammar->getElemDecl( orgGrammarUri, nameRawBuf, qnameRawBuf, currentScope ); if (tempElemDecl && tempElemDecl->getCreateReason() != XMLElementDecl::JustFaultIn && fValidate) { fValidator->emitError( XMLValid::ElementNotQualified, qnameRawBuf ); elemDecl = tempElemDecl; } } else if (!laxThisOne && fValidate) { fValidator->emitError( XMLValid::GrammarNotFound,original_uriStr ); } } } if (!elemDecl) { // still not found // switch back to original grammar first if necessary if (orgGrammarUri != uriId) { switchGrammar(original_uriStr); } // look in the list of undeclared elements, as would have been // done before we made grammars stateless: elemDecl = fSchemaElemNonDeclPool->getByKey( nameRawBuf, uriId, (int)Grammar::TOP_LEVEL_SCOPE ); } } } } if (!elemDecl) { if (fGrammarType == Grammar::DTDGrammarType) { elemDecl = new (fMemoryManager) DTDElementDecl( qnameRawBuf, uriId, DTDElementDecl::Any, fMemoryManager ); elemDecl->setId(fDTDElemNonDeclPool->put((DTDElementDecl*)elemDecl)); } else if (fGrammarType == Grammar::SchemaGrammarType) { elemDecl = new (fMemoryManager) SchemaElementDecl( fPrefixBuf.getRawBuffer(), nameRawBuf, uriId , SchemaElementDecl::Any, Grammar::TOP_LEVEL_SCOPE , fMemoryManager ); elemDecl->setId( fSchemaElemNonDeclPool->put((void*)elemDecl->getBaseName() , uriId, (int)Grammar::TOP_LEVEL_SCOPE, (SchemaElementDecl*)elemDecl) ); } wasAdded = true; } // this info needed for DOMTypeInfo fPSVIElemContext.fErrorOccurred = false; // We do something different here according to whether we found the // element or not. bool bXsiTypeSet= (fValidator && fGrammarType == Grammar::SchemaGrammarType)?((SchemaValidator*)fValidator)->getIsXsiTypeSet():false; if (wasAdded) { if (laxThisOne && !bXsiTypeSet) { fValidate = false; fElemStack.setValidationFlag(fValidate); } else if (fValidate) { // If validating then emit an error // This is to tell the reuse Validator that this element was // faulted-in, was not an element in the grammar pool originally elemDecl->setCreateReason(XMLElementDecl::JustFaultIn); // xsi:type was specified, don't complain about missing definition if(!bXsiTypeSet) { fValidator->emitError ( XMLValid::ElementNotDefined , elemDecl->getFullName() ); if(fGrammarType == Grammar::SchemaGrammarType) { fPSVIElemContext.fErrorOccurred = true; } } } } else { // If its not marked declared and validating, then emit an error if (!elemDecl->isDeclared()) { if(elemDecl->getCreateReason() == XMLElementDecl::NoReason) { if(!bXsiTypeSet && fGrammarType == Grammar::SchemaGrammarType) { fPSVIElemContext.fErrorOccurred = true; } } if (laxThisOne) { fValidate = false; fElemStack.setValidationFlag(fValidate); } else if (fValidate && !bXsiTypeSet) { fValidator->emitError ( XMLValid::ElementNotDefined , elemDecl->getFullName() ); } } } // Now we can update the element stack to set the current element // decl. We expanded the stack above, but couldn't store the element // decl because we didn't know it yet. fElemStack.setElement(elemDecl, fReaderMgr.getCurrentReaderNum()); fElemStack.setCurrentURI(uriId); if (isRoot) { fRootGrammar = fGrammar; if (fGrammarType == Grammar::SchemaGrammarType && !fRootElemName) fRootElemName = XMLString::replicate(qnameRawBuf, fMemoryManager); } if (fGrammarType == Grammar::SchemaGrammarType && fPSVIHandler) { fPSVIElemContext.fElemDepth++; if (elemDecl->isDeclared()) { fPSVIElemContext.fNoneValidationDepth = fPSVIElemContext.fElemDepth; } else { fPSVIElemContext.fFullValidationDepth = fPSVIElemContext.fElemDepth; /****** * While we report an error for historical reasons, this should * actually result in lax assessment - NG. if (isRoot && fValidate) fPSVIElemContext.fErrorOccurred = true; *****/ } } // Validate the element if (fValidate) { fValidator->validateElement(elemDecl); if (fValidator->handlesSchema()) { if (((SchemaValidator*) fValidator)->getErrorOccurred()) fPSVIElemContext.fErrorOccurred = true; } } if (fGrammarType == Grammar::SchemaGrammarType) { // squirrel away the element's QName, so that we can do an efficient // end-tag match fElemStack.setCurrentSchemaElemName(fQNameBuf.getRawBuffer()); ComplexTypeInfo* typeinfo = (fValidate) ? ((SchemaValidator*)fValidator)->getCurrentTypeInfo() : ((SchemaElementDecl*) elemDecl)->getComplexTypeInfo(); if (typeinfo) { currentScope = typeinfo->getScopeDefined(); // switch grammar if the typeinfo has a different grammar (happens when there is xsi:type) XMLCh* typeName = typeinfo->getTypeName(); const int comma = XMLString::indexOf(typeName, chComma); if (comma > 0) { XMLBuffer prefixBuf(comma+1, fMemoryManager); prefixBuf.append(typeName, comma); const XMLCh* uriStr = prefixBuf.getRawBuffer(); bool errorCondition = !switchGrammar(uriStr) && fValidate; if (errorCondition && !laxThisOne) { fValidator->emitError ( XMLValid::GrammarNotFound , prefixBuf.getRawBuffer() ); } } else if (comma == 0) { bool errorCondition = !switchGrammar(XMLUni::fgZeroLenString) && fValidate; if (errorCondition && !laxThisOne) { fValidator->emitError ( XMLValid::GrammarNotFound , XMLUni::fgZeroLenString ); } } } fElemStack.setCurrentScope(currentScope); // Set element next state if (elemDepth >= fElemStateSize) { resizeElemState(); } fElemState[elemDepth] = 0; fElemLoopState[elemDepth] = 0; } fElemStack.setCurrentGrammar(fGrammar); // If this is the first element and we are validating, check the root // element. if (isRoot) { if (fValidate) { // If a DocType exists, then check if it matches the root name there. if (fRootElemName && !XMLString::equals(qnameRawBuf, fRootElemName)) fValidator->emitError(XMLValid::RootElemNotLikeDocType); } } else if (parentValidation) { // If the element stack is not empty, then add this element as a // child of the previous top element. If its empty, this is the root // elem and is not the child of anything. fElemStack.addChild(elemDecl->getElementName(), true); } // PSVI handling: even if it turns out there are // no attributes, we need to reset this list... if(getPSVIHandler() && fGrammarType == Grammar::SchemaGrammarType ) fPSVIAttrList->reset(); // Now lets get the fAttrList filled in. This involves faulting in any // defaulted and fixed attributes and normalizing the values of any that // we got explicitly. // // We update the attCount value with the total number of attributes, but // it goes in with the number of values we got during the raw scan of // explictly provided attrs above. attCount = buildAttList(*fRawAttrList, attCount, elemDecl, *fAttrList); if(attCount) { // clean up after ourselves: // clear the map used to detect duplicate attributes fUndeclaredAttrRegistry->removeAll(); } // activate identity constraints if (fGrammar && fGrammarType == Grammar::SchemaGrammarType && toCheckIdentityConstraint()) { fICHandler->activateIdentityConstraint ( (SchemaElementDecl*) elemDecl , (int) elemDepth , uriId , fPrefixBuf.getRawBuffer() , *fAttrList , attCount , fValidationContext ); } // Since the element may have default values, call start tag now regardless if it is empty or not // If we have a document handler, then tell it about this start tag if (fDocHandler) { fDocHandler->startElement ( *elemDecl , uriId , fPrefixBuf.getRawBuffer() , *fAttrList , attCount , false , isRoot ); } // if we have a PSVIHandler, now's the time to call // its handleAttributesPSVI method: if(fPSVIHandler && fGrammarType == Grammar::SchemaGrammarType) { QName *eName = elemDecl->getElementName(); fPSVIHandler->handleAttributesPSVI ( eName->getLocalPart() , fURIStringPool->getValueForId(eName->getURI()) , fPSVIAttrList ); } // If empty, validate content right now if we are validating and then // pop the element stack top. Else, we have to update the current stack // top's namespace mapping elements. if (isEmpty) { // Pop the element stack back off since it'll never be used now fElemStack.popTop(); // reset current type info DatatypeValidator* psviMemberType = 0; if (fGrammarType == Grammar::SchemaGrammarType) { if (fValidate && elemDecl->isDeclared()) { fPSVIElemContext.fCurrentTypeInfo = ((SchemaValidator*) fValidator)->getCurrentTypeInfo(); if(!fPSVIElemContext.fCurrentTypeInfo) fPSVIElemContext.fCurrentDV = ((SchemaValidator*) fValidator)->getCurrentDatatypeValidator(); else fPSVIElemContext.fCurrentDV = 0; if(fPSVIHandler) { fPSVIElemContext.fNormalizedValue = ((SchemaValidator*) fValidator)->getNormalizedValue(); if (XMLString::equals(fPSVIElemContext.fNormalizedValue, XMLUni::fgZeroLenString)) fPSVIElemContext.fNormalizedValue = 0; } } else { fPSVIElemContext.fCurrentDV = 0; fPSVIElemContext.fCurrentTypeInfo = 0; fPSVIElemContext.fNormalizedValue = 0; } } // If validating, then insure that its legal to have no content if (fValidate) { XMLSize_t failure; bool res = fValidator->checkContent(elemDecl, 0, 0, &failure); if (!res) { fValidator->emitError ( XMLValid::ElementNotValidForContent , elemDecl->getFullName() , elemDecl->getFormattedContentModel() ); } if (fGrammarType == Grammar::SchemaGrammarType) { if (((SchemaValidator*) fValidator)->getErrorOccurred()) { fPSVIElemContext.fErrorOccurred = true; } else { if (fPSVIHandler) { fPSVIElemContext.fIsSpecified = ((SchemaValidator*) fValidator)->getIsElemSpecified(); if(fPSVIElemContext.fIsSpecified) fPSVIElemContext.fNormalizedValue = ((SchemaElementDecl *)elemDecl)->getDefaultValue(); } // note that if we're empty, won't be a current DV if (fPSVIElemContext.fCurrentDV && fPSVIElemContext.fCurrentDV->getType() == DatatypeValidator::Union) psviMemberType = fValidationContext->getValidatingMemberType(); } // call matchers and de-activate context if (toCheckIdentityConstraint()) { fICHandler->deactivateContext ( (SchemaElementDecl *) elemDecl , fContent.getRawBuffer() , fValidationContext , fPSVIElemContext.fCurrentDV ); } } } else if (fGrammarType == Grammar::SchemaGrammarType) { ((SchemaValidator*)fValidator)->resetNillable(); } if (fGrammarType == Grammar::SchemaGrammarType) { if (fPSVIHandler) { endElementPSVI((SchemaElementDecl*)elemDecl, psviMemberType); } } // If we have a doc handler, tell it about the end tag if (fDocHandler) { fDocHandler->endElement ( *elemDecl , uriId , isRoot , fPrefixBuf.getRawBuffer() ); } // If the elem stack is empty, then it was an empty root if (isRoot) gotData = false; else { // Restore the grammar fGrammar = fElemStack.getCurrentGrammar(); fGrammarType = fGrammar->getGrammarType(); if (fGrammarType == Grammar::SchemaGrammarType && !fValidator->handlesSchema()) { if (fValidatorFromUser) ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Gen_NoSchemaValidator, fMemoryManager); else { fValidator = fSchemaValidator; } } else if (fGrammarType == Grammar::DTDGrammarType && !fValidator->handlesDTD()) { if (fValidatorFromUser) ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Gen_NoDTDValidator, fMemoryManager); else { fValidator = fDTDValidator; } } fValidator->setGrammar(fGrammar); // Restore the validation flag fValidate = fElemStack.getValidationFlag(); } } else if (fGrammarType == Grammar::SchemaGrammarType) { // send a partial element psvi if (fPSVIHandler) { ComplexTypeInfo* curTypeInfo = 0; DatatypeValidator* curDV = 0; XSTypeDefinition* typeDef = 0; if (fValidate && elemDecl->isDeclared()) { curTypeInfo = ((SchemaValidator*) fValidator)->getCurrentTypeInfo(); if (curTypeInfo) { typeDef = (XSTypeDefinition*) fModel->getXSObject(curTypeInfo); } else { curDV = ((SchemaValidator*) fValidator)->getCurrentDatatypeValidator(); if (curDV) { typeDef = (XSTypeDefinition*) fModel->getXSObject(curDV); } } } fPSVIElement->reset ( PSVIElement::VALIDITY_NOTKNOWN , PSVIElement::VALIDATION_NONE , fRootElemName , ((SchemaValidator*) fValidator)->getIsElemSpecified() , (elemDecl->isDeclared()) ? (XSElementDeclaration*) fModel->getXSObject(elemDecl) : 0 , typeDef , 0 //memberType , fModel , ((SchemaElementDecl*)elemDecl)->getDefaultValue() , 0 , 0 , 0 ); fPSVIHandler->handlePartialElementPSVI ( elemDecl->getBaseName() , fURIStringPool->getValueForId(elemDecl->getURI()) , fPSVIElement ); } // not empty fErrorStack->push(fPSVIElemContext.fErrorOccurred); } return true; } // --------------------------------------------------------------------------- // IGXMLScanner: Helper methos // --------------------------------------------------------------------------- void IGXMLScanner::resizeElemState() { unsigned int newSize = fElemStateSize * 2; unsigned int* newElemState = (unsigned int*) fMemoryManager->allocate ( newSize * sizeof(unsigned int) ); //new unsigned int[newSize]; unsigned int* newElemLoopState = (unsigned int*) fMemoryManager->allocate ( newSize * sizeof(unsigned int) ); //new unsigned int[newSize]; // Copy the existing values unsigned int index = 0; for (; index < fElemStateSize; index++) { newElemState[index] = fElemState[index]; newElemLoopState[index] = fElemLoopState[index]; } for (; index < newSize; index++) newElemLoopState[index] = newElemState[index] = 0; // Delete the old array and udpate our members fMemoryManager->deallocate(fElemState); //delete [] fElemState; fMemoryManager->deallocate(fElemLoopState); //delete [] fElemState; fElemState = newElemState; fElemLoopState = newElemLoopState; fElemStateSize = newSize; } void IGXMLScanner::resizeRawAttrColonList() { unsigned int newSize = fRawAttrColonListSize * 2; int* newRawAttrColonList = (int*) fMemoryManager->allocate ( newSize * sizeof(int) ); //new int[newSize]; // Copy the existing values unsigned int index = 0; for (; index < fRawAttrColonListSize; index++) newRawAttrColonList[index] = fRawAttrColonList[index]; // Delete the old array and udpate our members fMemoryManager->deallocate(fRawAttrColonList); //delete [] fRawAttrColonList; fRawAttrColonList = newRawAttrColonList; fRawAttrColonListSize = newSize; } // --------------------------------------------------------------------------- // IGXMLScanner: Grammar preparsing // --------------------------------------------------------------------------- Grammar* IGXMLScanner::loadGrammar(const InputSource& src , const short grammarType , const bool toCache) { Grammar* loadedGrammar = 0; ReaderMgrResetType resetReaderMgr(&fReaderMgr, &ReaderMgr::reset); try { fGrammarResolver->cacheGrammarFromParse(false); // if the new grammar has to be cached, better use the already cached // grammars, or the an exception will be thrown when caching an already // cached grammar fGrammarResolver->useCachedGrammarInParse(toCache); fRootGrammar = 0; if (fValScheme == Val_Auto) { fValidate = true; } // Reset some status flags fInException = false; fStandalone = false; fErrorCount = 0; fHasNoDTD = true; fSeeXsi = false; if (grammarType == Grammar::SchemaGrammarType) { loadedGrammar = loadXMLSchemaGrammar(src, toCache); } else if (grammarType == Grammar::DTDGrammarType) { loadedGrammar = loadDTDGrammar(src, toCache); } } // NOTE: // // In all of the error processing below, the emitError() call MUST come // before the flush of the reader mgr, or it will fail because it tries // to find out the position in the XML source of the error. catch(const XMLErrs::Codes) { // This is a 'first fatal error' type exit, so fall through } catch(const XMLValid::Codes) { // This is a 'first fatal error' type exit, so fall through } catch(const XMLException& excToCatch) { // Emit the error and catch any user exception thrown from here. Make // sure in all cases we flush the reader manager. fInException = true; try { if (excToCatch.getErrorType() == XMLErrorReporter::ErrType_Warning) emitError ( XMLErrs::XMLException_Warning , excToCatch.getCode() , excToCatch.getMessage() ); else if (excToCatch.getErrorType() >= XMLErrorReporter::ErrType_Fatal) emitError ( XMLErrs::XMLException_Fatal , excToCatch.getCode() , excToCatch.getMessage() ); else emitError ( XMLErrs::XMLException_Error , excToCatch.getCode() , excToCatch.getMessage() ); } catch(const OutOfMemoryException&) { // This is a special case for out-of-memory // conditions, because resetting the ReaderMgr // can be problematic. resetReaderMgr.release(); throw; } } catch(const OutOfMemoryException&) { // This is a special case for out-of-memory // conditions, because resetting the ReaderMgr // can be problematic. resetReaderMgr.release(); throw; } return loadedGrammar; } void IGXMLScanner::resetCachedGrammar () { fCachedSchemaInfoList->removeAll (); } Grammar* IGXMLScanner::loadDTDGrammar(const InputSource& src, const bool toCache) { // Reset the validators fDTDValidator->reset(); if (fValidatorFromUser) fValidator->reset(); if (!fValidator->handlesDTD()) { if (fValidatorFromUser && fValidate) ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Gen_NoDTDValidator, fMemoryManager); else { fValidator = fDTDValidator; } } fDTDGrammar = (DTDGrammar*) fGrammarResolver->getGrammar(XMLUni::fgDTDEntityString); if (fDTDGrammar) { fDTDGrammar->reset(); } else { fDTDGrammar = new (fGrammarPoolMemoryManager) DTDGrammar(fGrammarPoolMemoryManager); fGrammarResolver->putGrammar(fDTDGrammar); } fGrammar = fDTDGrammar; fGrammarType = fGrammar->getGrammarType(); fValidator->setGrammar(fGrammar); // And for all installed handlers, send reset events. This gives them // a chance to flush any cached data. if (fDocHandler) fDocHandler->resetDocument(); if (fEntityHandler) fEntityHandler->resetEntities(); if (fErrorReporter) fErrorReporter->resetErrors(); // Clear out the id reference list resetValidationContext(); // and clear out the darned undeclared DTD element pool... fDTDElemNonDeclPool->removeAll(); if (toCache) { unsigned int sysId = fGrammarResolver->getStringPool()->addOrFind(src.getSystemId()); const XMLCh* sysIdStr = fGrammarResolver->getStringPool()->getValueForId(sysId); fGrammarResolver->orphanGrammar(XMLUni::fgDTDEntityString); ((XMLDTDDescription*) (fGrammar->getGrammarDescription()))->setSystemId(sysIdStr); fGrammarResolver->putGrammar(fGrammar); } // Handle the creation of the XML reader object for this input source. // This will provide us with transcoding and basic lexing services. XMLReader* newReader = fReaderMgr.createReader ( src , false , XMLReader::RefFrom_NonLiteral , XMLReader::Type_General , XMLReader::Source_External , fCalculateSrcOfs , fLowWaterMark ); if (!newReader) { if (src.getIssueFatalErrorIfNotFound()) ThrowXMLwithMemMgr1(RuntimeException, XMLExcepts::Scan_CouldNotOpenSource, src.getSystemId(), fMemoryManager); else ThrowXMLwithMemMgr1(RuntimeException, XMLExcepts::Scan_CouldNotOpenSource_Warning, src.getSystemId(), fMemoryManager); } // In order to make the processing work consistently, we have to // make this look like an external entity. So create an entity // decl and fill it in and push it with the reader, as happens // with an external entity. Put a janitor on it to insure it gets // cleaned up. The reader manager does not adopt them. const XMLCh gDTDStr[] = { chLatin_D, chLatin_T, chLatin_D , chNull }; DTDEntityDecl* declDTD = new (fMemoryManager) DTDEntityDecl(gDTDStr, false, fMemoryManager); declDTD->setSystemId(src.getSystemId()); declDTD->setIsExternal(true); Janitor janDecl(declDTD); // Mark this one as a throw at end newReader->setThrowAtEnd(true); // And push it onto the stack, with its pseudo name fReaderMgr.pushReader(newReader, declDTD); // If we have a doc type handler and advanced callbacks are enabled, // call the doctype event. if (fDocTypeHandler) { // Create a dummy root DTDElementDecl* rootDecl = new (fGrammarPoolMemoryManager) DTDElementDecl ( gDTDStr , fEmptyNamespaceId , DTDElementDecl::Any , fGrammarPoolMemoryManager ); rootDecl->setCreateReason(DTDElementDecl::AsRootElem); rootDecl->setExternalElemDeclaration(true); Janitor janSrc(rootDecl); fDocTypeHandler->doctypeDecl(*rootDecl, src.getPublicId(), src.getSystemId(), false, true); } // Create DTDScanner DTDScanner dtdScanner ( (DTDGrammar*) fGrammar , fDocTypeHandler , fGrammarPoolMemoryManager , fMemoryManager ); dtdScanner.setScannerInfo(this, &fReaderMgr, &fBufMgr); // Tell it its not in an include section dtdScanner.scanExtSubsetDecl(false, true); if (fValidate) { // validate the DTD scan so far fValidator->preContentValidation(false, true); } if (toCache) fGrammarResolver->cacheGrammars(); return fDTDGrammar; } // --------------------------------------------------------------------------- // IGXMLScanner: Helper methods // --------------------------------------------------------------------------- void IGXMLScanner::processSchemaLocation(XMLCh* const schemaLoc) { XMLCh* locStr = schemaLoc; XMLReader* curReader = fReaderMgr.getCurrentReader(); fLocationPairs->removeAllElements(); while (*locStr) { do { // Do we have an escaped character ? if (*locStr == 0xFFFF) continue; if (!curReader->isWhitespace(*locStr)) break; *locStr = chNull; } while (*++locStr); if (*locStr) { fLocationPairs->addElement(locStr); while (*++locStr) { // Do we have an escaped character ? if (*locStr == 0xFFFF) continue; if (curReader->isWhitespace(*locStr)) break; } } } } void IGXMLScanner::endElementPSVI(SchemaElementDecl* const elemDecl, DatatypeValidator* const memberDV) { PSVIElement::ASSESSMENT_TYPE validationAttempted; PSVIElement::VALIDITY_STATE validity = PSVIElement::VALIDITY_NOTKNOWN; if (fPSVIElemContext.fElemDepth > fPSVIElemContext.fFullValidationDepth) validationAttempted = PSVIElement::VALIDATION_FULL; else if (fPSVIElemContext.fElemDepth > fPSVIElemContext.fNoneValidationDepth) validationAttempted = PSVIElement::VALIDATION_NONE; else { validationAttempted = PSVIElement::VALIDATION_PARTIAL; fPSVIElemContext.fFullValidationDepth = fPSVIElemContext.fNoneValidationDepth = fPSVIElemContext.fElemDepth - 1; } if (fValidate && elemDecl->isDeclared()) { validity = (fPSVIElemContext.fErrorOccurred) ? PSVIElement::VALIDITY_INVALID : PSVIElement::VALIDITY_VALID; } XSTypeDefinition* typeDef = 0; bool isMixed = false; if (fPSVIElemContext.fCurrentTypeInfo) { typeDef = (XSTypeDefinition*) fModel->getXSObject(fPSVIElemContext.fCurrentTypeInfo); SchemaElementDecl::ModelTypes modelType = (SchemaElementDecl::ModelTypes)fPSVIElemContext.fCurrentTypeInfo->getContentType(); isMixed = (modelType == SchemaElementDecl::Mixed_Simple || modelType == SchemaElementDecl::Mixed_Complex); } else if (fPSVIElemContext.fCurrentDV) typeDef = (XSTypeDefinition*) fModel->getXSObject(fPSVIElemContext.fCurrentDV); XMLCh* canonicalValue = 0; if (fPSVIElemContext.fNormalizedValue && !isMixed && validity == PSVIElement::VALIDITY_VALID) { if (memberDV) canonicalValue = (XMLCh*) memberDV->getCanonicalRepresentation(fPSVIElemContext.fNormalizedValue, fMemoryManager); else if (fPSVIElemContext.fCurrentDV) canonicalValue = (XMLCh*) fPSVIElemContext.fCurrentDV->getCanonicalRepresentation(fPSVIElemContext.fNormalizedValue, fMemoryManager); } fPSVIElement->reset ( validity , validationAttempted , fRootElemName , fPSVIElemContext.fIsSpecified , (elemDecl->isDeclared()) ? (XSElementDeclaration*) fModel->getXSObject(elemDecl) : 0 , typeDef , (memberDV) ? (XSSimpleTypeDefinition*) fModel->getXSObject(memberDV) : 0 , fModel , elemDecl->getDefaultValue() , fPSVIElemContext.fNormalizedValue , canonicalValue ); fPSVIHandler->handleElementPSVI ( elemDecl->getBaseName() , fURIStringPool->getValueForId(elemDecl->getURI()) , fPSVIElement ); // decrease element depth fPSVIElemContext.fElemDepth--; } void IGXMLScanner::resetPSVIElemContext() { fPSVIElemContext.fIsSpecified = false; fPSVIElemContext.fErrorOccurred = false; fPSVIElemContext.fElemDepth = -1; fPSVIElemContext.fFullValidationDepth = -1; fPSVIElemContext.fNoneValidationDepth = -1; fPSVIElemContext.fCurrentDV = 0; fPSVIElemContext.fCurrentTypeInfo = 0; fPSVIElemContext.fNormalizedValue = 0; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/internal/XSAXMLScanner.cpp0000644000175000017500000006241311274550527021352 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XSAXMLScanner.cpp 833045 2009-11-05 13:21:27Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // XSAXMLScanner: Constructors and Destructor // --------------------------------------------------------------------------- XSAXMLScanner::XSAXMLScanner( GrammarResolver* const grammarResolver , XMLStringPool* const uriStringPool , SchemaGrammar* const xsaGrammar , MemoryManager* const manager) : SGXMLScanner(0, grammarResolver, manager) { fSchemaGrammar = xsaGrammar; setURIStringPool(uriStringPool); } XSAXMLScanner::~XSAXMLScanner() { } // --------------------------------------------------------------------------- // XSAXMLScanner: SGXMLScanner virtual methods // --------------------------------------------------------------------------- // This method will kick off the scanning of the primary content of the void XSAXMLScanner::scanEndTag(bool& gotData) { // Assume we will still have data until proven otherwise. It will only // ever be false if this is the end of the root element. gotData = true; // Check if the element stack is empty. If so, then this is an unbalanced // element (i.e. more ends than starts, perhaps because of bad text // causing one to be skipped.) if (fElemStack.isEmpty()) { emitError(XMLErrs::MoreEndThanStartTags); fReaderMgr.skipPastChar(chCloseAngle); ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Scan_UnbalancedStartEnd, fMemoryManager); } // Pop the stack of the element we are supposed to be ending. Remember // that we don't own this. The stack just keeps them and reuses them. unsigned int uriId = fElemStack.getCurrentURI(); // Make sure that its the end of the element that we expect const XMLCh *elemName = fElemStack.getCurrentSchemaElemName(); const ElemStack::StackElem* topElem = fElemStack.popTop(); if (!fReaderMgr.skippedStringLong(elemName)) { emitError ( XMLErrs::ExpectedEndOfTagX, elemName ); fReaderMgr.skipPastChar(chCloseAngle); return; } // See if it was the root element, to avoid multiple calls below const bool isRoot = fElemStack.isEmpty(); // Make sure we are back on the same reader as where we started if (topElem->fReaderNum != fReaderMgr.getCurrentReaderNum()) emitError(XMLErrs::PartialTagMarkupError); // Skip optional whitespace fReaderMgr.skipPastSpaces(); // Make sure we find the closing bracket if (!fReaderMgr.skippedChar(chCloseAngle)) { emitError ( XMLErrs::UnterminatedEndTag, topElem->fThisElement->getFullName() ); } // If validation is enabled, then lets pass him the list of children and // this element and let him validate it. if (fValidate) { XMLSize_t failure; bool res = fValidator->checkContent ( topElem->fThisElement , topElem->fChildren , topElem->fChildCount , &failure ); if (!res) { // One of the elements is not valid for the content. NOTE that // if no children were provided but the content model requires // them, it comes back with a zero value. But we cannot use that // to index the child array in this case, and have to put out a // special message. if (!topElem->fChildCount) { fValidator->emitError ( XMLValid::EmptyNotValidForContent , topElem->fThisElement->getFormattedContentModel() ); } else if (failure >= topElem->fChildCount) { fValidator->emitError ( XMLValid::NotEnoughElemsForCM , topElem->fThisElement->getFormattedContentModel() ); } else { fValidator->emitError ( XMLValid::ElementNotValidForContent , topElem->fChildren[failure]->getRawName() , topElem->fThisElement->getFormattedContentModel() ); } } } // now we can reset the datatype buffer, since the // application has had a chance to copy the characters somewhere else ((SchemaValidator *)fValidator)->clearDatatypeBuffer(); // If we have a doc handler, tell it about the end tag if (fDocHandler) { if (topElem->fPrefixColonPos != -1) fPrefixBuf.set(elemName, topElem->fPrefixColonPos); else fPrefixBuf.reset(); fDocHandler->endElement ( *topElem->fThisElement , uriId , isRoot , fPrefixBuf.getRawBuffer() ); } // If this was the root, then done with content gotData = !isRoot; if (gotData) { // Restore the grammar fGrammar = fElemStack.getCurrentGrammar(); fGrammarType = fGrammar->getGrammarType(); fValidator->setGrammar(fGrammar); // Restore the validation flag fValidate = fElemStack.getValidationFlag(); } } bool XSAXMLScanner::scanStartTag(bool& gotData) { // Assume we will still have data until proven otherwise. It will only // ever be false if this is the root and its empty. gotData = true; // Reset element content fContent.reset(); // The current position is after the open bracket, so we need to read in // in the element name. int prefixColonPos; if (!fReaderMgr.getQName(fQNameBuf, &prefixColonPos)) { if (fQNameBuf.isEmpty()) emitError(XMLErrs::ExpectedElementName); else emitError(XMLErrs::InvalidElementName, fQNameBuf.getRawBuffer()); fReaderMgr.skipToChar(chOpenAngle); return false; } // See if its the root element const bool isRoot = fElemStack.isEmpty(); // Skip any whitespace after the name fReaderMgr.skipPastSpaces(); // First we have to do the rawest attribute scan. We don't do any // normalization of them at all, since we don't know yet what type they // might be (since we need the element decl in order to do that.) const XMLCh* qnameRawBuf = fQNameBuf.getRawBuffer(); bool isEmpty; XMLSize_t attCount = rawAttrScan(qnameRawBuf, *fRawAttrList, isEmpty); // save the contentleafname and currentscope before addlevel, for later use ContentLeafNameTypeVector* cv = 0; XMLContentModel* cm = 0; unsigned int currentScope = Grammar::TOP_LEVEL_SCOPE; bool laxThisOne = false; if (!isRoot) { // schema validator will have correct type if validating SchemaElementDecl* tempElement = (SchemaElementDecl*) fElemStack.topElement()->fThisElement; SchemaElementDecl::ModelTypes modelType = tempElement->getModelType(); ComplexTypeInfo *currType = 0; if (fValidate) { currType = ((SchemaValidator*)fValidator)->getCurrentTypeInfo(); if (currType) modelType = (SchemaElementDecl::ModelTypes)currType->getContentType(); else // something must have gone wrong modelType = SchemaElementDecl::Any; } else { currType = tempElement->getComplexTypeInfo(); } if ((modelType == SchemaElementDecl::Mixed_Simple) || (modelType == SchemaElementDecl::Mixed_Complex) || (modelType == SchemaElementDecl::Children)) { cm = currType->getContentModel(); cv = cm->getContentLeafNameTypeVector(); currentScope = fElemStack.getCurrentScope(); } else if (modelType == SchemaElementDecl::Any) { laxThisOne = true; } } // Now, since we might have to update the namespace map for this element, // but we don't have the element decl yet, we just tell the element stack // to expand up to get ready. XMLSize_t elemDepth = fElemStack.addLevel(); fElemStack.setValidationFlag(fValidate); fElemStack.setPrefixColonPos(prefixColonPos); // Make an initial pass through the list and find any xmlns attributes or // schema attributes. if (attCount) scanRawAttrListforNameSpaces(attCount); // Resolve the qualified name to a URI and name so that we can look up // the element decl for this element. We have now update the prefix to // namespace map so we should get the correct element now. unsigned int uriId = resolveQNameWithColon ( qnameRawBuf, fPrefixBuf, ElemStack::Mode_Element, prefixColonPos ); //if schema, check if we should lax or skip the validation of this element bool parentValidation = fValidate; if (cv) { QName element(fPrefixBuf.getRawBuffer(), &qnameRawBuf[prefixColonPos + 1], uriId, fMemoryManager); // elementDepth will be > 0, as cv is only constructed if element is not // root. laxThisOne = laxElementValidation(&element, cv, cm, elemDepth - 1); } // Look up the element now in the grammar. This will get us back a // generic element decl object. We tell him to fault one in if he does // not find it. bool wasAdded = false; const XMLCh* nameRawBuf = &qnameRawBuf[prefixColonPos + 1]; XMLElementDecl* elemDecl = fGrammar->getElemDecl ( uriId, nameRawBuf, qnameRawBuf, currentScope ); if (!elemDecl) { // URI is different, so we try to switch grammar if (uriId != fURIStringPool->getId(fGrammar->getTargetNamespace())) { switchGrammar(getURIText(uriId), laxThisOne); } // look for a global element declaration elemDecl = fGrammar->getElemDecl( uriId, nameRawBuf, qnameRawBuf, Grammar::TOP_LEVEL_SCOPE ); if (!elemDecl) { // if still not found, look in list of undeclared elements elemDecl = fElemNonDeclPool->getByKey( nameRawBuf, uriId, (int)Grammar::TOP_LEVEL_SCOPE); if (!elemDecl) { elemDecl = new (fMemoryManager) SchemaElementDecl ( fPrefixBuf.getRawBuffer(), nameRawBuf, uriId , SchemaElementDecl::Any, Grammar::TOP_LEVEL_SCOPE , fMemoryManager ); elemDecl->setId (fElemNonDeclPool->put( (void*)elemDecl->getBaseName(), uriId, (int)Grammar::TOP_LEVEL_SCOPE, (SchemaElementDecl*)elemDecl)); wasAdded = true; } } } // We do something different here according to whether we found the // element or not. bool bXsiTypeSet= (fValidator)?((SchemaValidator*)fValidator)->getIsXsiTypeSet():false; if (wasAdded || !elemDecl->isDeclared()) { if (laxThisOne && !bXsiTypeSet) { fValidate = false; fElemStack.setValidationFlag(fValidate); } // If validating then emit an error if (fValidate) { // This is to tell the reuse Validator that this element was // faulted-in, was not an element in the grammar pool originally elemDecl->setCreateReason(XMLElementDecl::JustFaultIn); if(!bXsiTypeSet) fValidator->emitError ( XMLValid::ElementNotDefined, elemDecl->getFullName() ); } } // Now we can update the element stack to set the current element // decl. We expanded the stack above, but couldn't store the element // decl because we didn't know it yet. fElemStack.setElement(elemDecl, fReaderMgr.getCurrentReaderNum()); fElemStack.setCurrentURI(uriId); if (isRoot) { fRootElemName = XMLString::replicate(qnameRawBuf, fMemoryManager); } // Validate the element if (fValidate) { fValidator->validateElement(elemDecl); } // squirrel away the element's QName, so that we can do an efficient // end-tag match fElemStack.setCurrentSchemaElemName(fQNameBuf.getRawBuffer()); ComplexTypeInfo* typeinfo = (fValidate) ? ((SchemaValidator*)fValidator)->getCurrentTypeInfo() : ((SchemaElementDecl*) elemDecl)->getComplexTypeInfo(); if (typeinfo) { currentScope = typeinfo->getScopeDefined(); // switch grammar if the typeinfo has a different grammar XMLCh* typeName = typeinfo->getTypeName(); int comma = XMLString::indexOf(typeName, chComma); if (comma > 0) { XMLBufBid bbPrefix(&fBufMgr); XMLBuffer& prefixBuf = bbPrefix.getBuffer(); prefixBuf.append(typeName, comma); switchGrammar(prefixBuf.getRawBuffer(), laxThisOne); } } fElemStack.setCurrentScope(currentScope); // Set element next state if (elemDepth >= fElemStateSize) { resizeElemState(); } fElemState[elemDepth] = 0; fElemLoopState[elemDepth] = 0; fElemStack.setCurrentGrammar(fGrammar); // If this is the first element and we are validating, check the root // element. if (!isRoot && parentValidation) { fElemStack.addChild(elemDecl->getElementName(), true); } // Now lets get the fAttrList filled in. This involves faulting in any // defaulted and fixed attributes and normalizing the values of any that // we got explicitly. // // We update the attCount value with the total number of attributes, but // it goes in with the number of values we got during the raw scan of // explictly provided attrs above. attCount = buildAttList(*fRawAttrList, attCount, elemDecl, *fAttrList); if(attCount) { // clean up after ourselves: // clear the map used to detect duplicate attributes fUndeclaredAttrRegistry->removeAll(); } // Since the element may have default values, call start tag now regardless if it is empty or not // If we have a document handler, then tell it about this start tag if (fDocHandler) { fDocHandler->startElement ( *elemDecl, uriId, fPrefixBuf.getRawBuffer(), *fAttrList , attCount, false, isRoot ); } // may be where we output something... // If empty, validate content right now if we are validating and then // pop the element stack top. Else, we have to update the current stack // top's namespace mapping elements. if (isEmpty) { // Pop the element stack back off since it'll never be used now fElemStack.popTop(); // If validating, then insure that its legal to have no content if (fValidate) { XMLSize_t failure; bool res = fValidator->checkContent(elemDecl, 0, 0, &failure); if (!res) { // REVISIT: in the case of xsi:type, this may // return the wrong string... fValidator->emitError ( XMLValid::ElementNotValidForContent , elemDecl->getFullName() , elemDecl->getFormattedContentModel() ); } } // If we have a doc handler, tell it about the end tag if (fDocHandler) { fDocHandler->endElement ( *elemDecl, uriId, isRoot, fPrefixBuf.getRawBuffer() ); } // If the elem stack is empty, then it was an empty root if (isRoot) { gotData = false; } else { // Restore the grammar fGrammar = fElemStack.getCurrentGrammar(); fGrammarType = fGrammar->getGrammarType(); fValidator->setGrammar(fGrammar); // Restore the validation flag fValidate = fElemStack.getValidationFlag(); } } return true; } // --------------------------------------------------------------------------- // XSAXMLScanner: XMLScanner virtual methods // --------------------------------------------------------------------------- // This method will reset the scanner data structures, and related plugged // in stuff, for a new scan session. We get the input source for the primary // XML entity, create the reader for it, and push it on the stack so that // upon successful return from here we are ready to go. void XSAXMLScanner::scanReset(const InputSource& src) { fGrammar = fSchemaGrammar; fGrammarType = Grammar::SchemaGrammarType; fRootGrammar = fSchemaGrammar; fValidator->setGrammar(fGrammar); // Reset validation fValidate = true; // And for all installed handlers, send reset events. This gives them // a chance to flush any cached data. if (fDocHandler) fDocHandler->resetDocument(); if (fEntityHandler) fEntityHandler->resetEntities(); if (fErrorReporter) fErrorReporter->resetErrors(); // Clear out the id reference list resetValidationContext(); // Reset the Root Element Name if (fRootElemName) { fMemoryManager->deallocate(fRootElemName);//delete [] fRootElemName; } fRootElemName = 0; // Reset the element stack, and give it the latest ids for the special // URIs it has to know about. fElemStack.reset ( fEmptyNamespaceId, fUnknownNamespaceId, fXMLNamespaceId, fXMLNSNamespaceId ); if (!fSchemaNamespaceId) fSchemaNamespaceId = fURIStringPool->addOrFind(SchemaSymbols::fgURI_XSI); // Reset some status flags fInException = false; fStandalone = false; fErrorCount = 0; fHasNoDTD = true; fSeeXsi = false; fDoNamespaces = true; fDoSchema = true; // Reset the validators fSchemaValidator->reset(); fSchemaValidator->setErrorReporter(fErrorReporter); fSchemaValidator->setExitOnFirstFatal(fExitOnFirstFatal); fSchemaValidator->setGrammarResolver(fGrammarResolver); // Handle the creation of the XML reader object for this input source. // This will provide us with transcoding and basic lexing services. XMLReader* newReader = fReaderMgr.createReader ( src , true , XMLReader::RefFrom_NonLiteral , XMLReader::Type_General , XMLReader::Source_External , fCalculateSrcOfs , fLowWaterMark ); if (!newReader) { if (src.getIssueFatalErrorIfNotFound()) ThrowXMLwithMemMgr1(RuntimeException, XMLExcepts::Scan_CouldNotOpenSource, src.getSystemId(), fMemoryManager); else ThrowXMLwithMemMgr1(RuntimeException, XMLExcepts::Scan_CouldNotOpenSource_Warning, src.getSystemId(), fMemoryManager); } // Push this read onto the reader manager fReaderMgr.pushReader(newReader, 0); // and reset security-related things if necessary: if(fSecurityManager != 0) { fEntityExpansionLimit = fSecurityManager->getEntityExpansionLimit(); fEntityExpansionCount = 0; } fElemCount = 0; if (fUIntPoolRowTotal >= 32) { // 8 KB tied up with validating attributes... fAttDefRegistry->removeAll(); recreateUIntPool(); } else { // note that this will implicitly reset the values of the hashtables, // though their buckets will still be tied up resetUIntPool(); } fUndeclaredAttrRegistry->removeAll(); } void XSAXMLScanner::scanRawAttrListforNameSpaces(XMLSize_t attCount) { // Make an initial pass through the list and find any xmlns attributes or // schema attributes. // When we find one, send it off to be used to update the element stack's // namespace mappings. XMLSize_t index = 0; for (index = 0; index < attCount; index++) { // each attribute has the prefix:suffix="value" const KVStringPair* curPair = fRawAttrList->elementAt(index); const XMLCh* rawPtr = curPair->getKey(); // If either the key begins with "xmlns:" or its just plain // "xmlns", then use it to update the map. if (!XMLString::compareNString(rawPtr, XMLUni::fgXMLNSColonString, 6) || XMLString::equals(rawPtr, XMLUni::fgXMLNSString)) { const XMLCh* valuePtr = curPair->getValue(); updateNSMap(rawPtr, valuePtr, fRawAttrColonList[index]); // if the schema URI is seen in the the valuePtr, set the boolean seeXsi if (XMLString::equals(valuePtr, SchemaSymbols::fgURI_XSI)) { fSeeXsi = true; } } } // walk through the list again to deal with "xsi:...." if (fSeeXsi) { // Schema Xsi Type yyyy (e.g. xsi:type="yyyyy") XMLBufBid bbXsi(&fBufMgr); XMLBuffer& fXsiType = bbXsi.getBuffer(); QName attName(fMemoryManager); for (index = 0; index < attCount; index++) { // each attribute has the prefix:suffix="value" const KVStringPair* curPair = fRawAttrList->elementAt(index); const XMLCh* rawPtr = curPair->getKey(); attName.setName(rawPtr, fEmptyNamespaceId); const XMLCh* prefPtr = attName.getPrefix(); // if schema URI has been seen, scan for the schema location and uri // and resolve the schema grammar; or scan for schema type if (resolvePrefix(prefPtr, ElemStack::Mode_Attribute) == fSchemaNamespaceId) { const XMLCh* valuePtr = curPair->getValue(); const XMLCh* suffPtr = attName.getLocalPart(); if (XMLString::equals(suffPtr, SchemaSymbols::fgXSI_TYPE)) { // normalize the attribute according to schema whitespace facet DatatypeValidator* tempDV = DatatypeValidatorFactory::getBuiltInRegistry()->get(SchemaSymbols::fgDT_QNAME); ((SchemaValidator*) fValidator)->normalizeWhiteSpace(tempDV, valuePtr, fXsiType, true); } else if (XMLString::equals(suffPtr, SchemaSymbols::fgATT_NILL)) { // normalize the attribute according to schema whitespace facet XMLBuffer& fXsiNil = fBufMgr.bidOnBuffer(); DatatypeValidator* tempDV = DatatypeValidatorFactory::getBuiltInRegistry()->get(SchemaSymbols::fgDT_BOOLEAN); ((SchemaValidator*) fValidator)->normalizeWhiteSpace(tempDV, valuePtr, fXsiNil, true); if(XMLString::equals(fXsiNil.getRawBuffer(), SchemaSymbols::fgATTVAL_TRUE)) ((SchemaValidator*)fValidator)->setNillable(true); else if(XMLString::equals(fXsiNil.getRawBuffer(), SchemaSymbols::fgATTVAL_FALSE)) ((SchemaValidator*)fValidator)->setNillable(false); else emitError(XMLErrs::InvalidAttValue, fXsiNil.getRawBuffer(), valuePtr); fBufMgr.releaseBuffer(fXsiNil); } } } if (!fXsiType.isEmpty()) { int colonPos = -1; unsigned int uriId = resolveQName ( fXsiType.getRawBuffer(), fPrefixBuf, ElemStack::Mode_Element, colonPos ); ((SchemaValidator*)fValidator)->setXsiType(fPrefixBuf.getRawBuffer(), fXsiType.getRawBuffer() + colonPos + 1, uriId); } } } void XSAXMLScanner::switchGrammar( const XMLCh* const uriStr , bool laxValidate) { Grammar* tempGrammar = 0; if (XMLString::equals(uriStr, SchemaSymbols::fgURI_SCHEMAFORSCHEMA)) { tempGrammar = fSchemaGrammar; } else { tempGrammar = fGrammarResolver->getGrammar(uriStr); } if (tempGrammar && tempGrammar->getGrammarType() == Grammar::SchemaGrammarType) { fGrammar = tempGrammar; fGrammarType = Grammar::SchemaGrammarType; fValidator->setGrammar(fGrammar); } else if(!laxValidate) { fValidator->emitError(XMLValid::GrammarNotFound, uriStr); } } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/internal/XSerializationException.hpp0000644000175000017500000000227710606722647023661 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XSerializationException.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_XSERIALIZATION_EXCEPTION_HPP) #define XERCESC_INCLUDE_GUARD_XSERIALIZATION_EXCEPTION_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN MakeXMLException(XSerializationException, XMLUTIL_EXPORT) XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/internal/XMLReader.cpp0000644000175000017500000017070611325634006020604 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLReader.cpp 901280 2010-01-20 17:06:14Z johns $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // XMLReader: Query Methods // --------------------------------------------------------------------------- // Checks whether all of the chars in the passed buffer are whitespace or // not. Breaks out on the first non-whitespace. // bool XMLReader::isAllSpaces(const XMLCh* const toCheck , const XMLSize_t count) const { const XMLCh* curCh = toCheck; const XMLCh* endPtr = toCheck + count; while (curCh < endPtr) { if (!(fgCharCharsTable[*curCh++] & gWhitespaceCharMask)) return false; } return true; } // // Checks whether at least one of the chars in the passed buffer are whitespace or // not. // bool XMLReader::containsWhiteSpace(const XMLCh* const toCheck , const XMLSize_t count) const { const XMLCh* curCh = toCheck; const XMLCh* endPtr = toCheck + count; while (curCh < endPtr) { if (fgCharCharsTable[*curCh++] & gWhitespaceCharMask) return true; } return false; } // // This one is not called terribly often, so call the XMLChar utility // bool XMLReader::isPublicIdChar(const XMLCh toCheck) const { if (fXMLVersion == XMLV1_1) return XMLChar1_1::isPublicIdChar(toCheck); else return XMLChar1_0::isPublicIdChar(toCheck); } // --------------------------------------------------------------------------- // XMLReader: Constructors and Destructor // --------------------------------------------------------------------------- XMLReader::XMLReader(const XMLCh* const pubId , const XMLCh* const sysId , BinInputStream* const streamToAdopt , const RefFrom from , const Types type , const Sources source , const bool throwAtEnd , const bool calculateSrcOfs , XMLSize_t lowWaterMark , const XMLVersion version , MemoryManager* const manager) : fCharIndex(0) , fCharsAvail(0) , fCurCol(1) , fCurLine(1) , fEncodingStr(0) , fForcedEncoding(false) , fNoMore(false) , fPublicId(XMLString::replicate(pubId, manager)) , fRawBufIndex(0) , fRawBytesAvail(0) , fLowWaterMark (lowWaterMark) , fReaderNum(0xFFFFFFFF) , fRefFrom(from) , fSentTrailingSpace(false) , fSource(source) , fSrcOfsBase(0) , fSrcOfsSupported(false) , fCalculateSrcOfs(calculateSrcOfs) , fSystemId(XMLString::replicate(sysId, manager)) , fStream(streamToAdopt) , fSwapped(false) , fThrowAtEnd(throwAtEnd) , fTranscoder(0) , fType(type) , fMemoryManager(manager) { setXMLVersion(version); // Do an initial load of raw bytes refreshRawBuffer(); // Ask the transcoding service if it supports src offset info fSrcOfsSupported = XMLPlatformUtils::fgTransService->supportsSrcOfs(); // // Use the recognizer class to get a basic sense of what family of // encodings this file is in. We'll start off with a reader of that // type, and update it later if needed when we read the XMLDecl line. // fEncoding = XMLRecognizer::basicEncodingProbe(fRawByteBuf, fRawBytesAvail); #if defined(XERCES_DEBUG) if ((fEncoding < XMLRecognizer::Encodings_Min) || (fEncoding > XMLRecognizer::Encodings_Max)) { ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Reader_BadAutoEncoding, fMemoryManager); } #endif fEncodingStr = XMLString::replicate(XMLRecognizer::nameForEncoding(fEncoding, fMemoryManager), fMemoryManager); // Check whether the fSwapped flag should be set or not checkForSwapped(); // // This will check to see if the first line is an XMLDecl and, if // so, decode that first line manually one character at a time. This // leaves enough characters in the buffer that the high level code // can get through the Decl and call us back with the real encoding. // doInitDecode(); // // NOTE: We won't create a transcoder until we either get a call to // setEncoding() or we get a call to refreshCharBuffer() and no // transcoder has been set yet. // } XMLReader::XMLReader(const XMLCh* const pubId , const XMLCh* const sysId , BinInputStream* const streamToAdopt , const XMLCh* const encodingStr , const RefFrom from , const Types type , const Sources source , const bool throwAtEnd , const bool calculateSrcOfs , XMLSize_t lowWaterMark , const XMLVersion version , MemoryManager* const manager) : fCharIndex(0) , fCharsAvail(0) , fCurCol(1) , fCurLine(1) , fEncoding(XMLRecognizer::UTF_8) , fEncodingStr(0) , fForcedEncoding(true) , fNoMore(false) , fPublicId(XMLString::replicate(pubId, manager)) , fRawBufIndex(0) , fRawBytesAvail(0) , fLowWaterMark (lowWaterMark) , fReaderNum(0xFFFFFFFF) , fRefFrom(from) , fSentTrailingSpace(false) , fSource(source) , fSrcOfsBase(0) , fSrcOfsSupported(false) , fCalculateSrcOfs(calculateSrcOfs) , fSystemId(XMLString::replicate(sysId, manager)) , fStream(streamToAdopt) , fSwapped(false) , fThrowAtEnd(throwAtEnd) , fTranscoder(0) , fType(type) , fMemoryManager(manager) { setXMLVersion(version); // Do an initial load of raw bytes refreshRawBuffer(); // Copy the encoding string to our member fEncodingStr = XMLString::replicate(encodingStr, fMemoryManager); XMLString::upperCaseASCII(fEncodingStr); // Ask the transcoding service if it supports src offset info fSrcOfsSupported = XMLPlatformUtils::fgTransService->supportsSrcOfs(); // // Map the passed encoding name to one of our enums. If it does not // match one of the intrinsic encodings, it will come back 'other', // which tells us to create a transcoder based reader. // fEncoding = XMLRecognizer::encodingForName(fEncodingStr); // test the presence of the BOM and remove it from the source switch(fEncoding) { case XMLRecognizer::UCS_4B : case XMLRecognizer::UCS_4L : { if (fRawBytesAvail > 4 && (((fRawByteBuf[0] == 0x00) && (fRawByteBuf[1] == 0x00) && (fRawByteBuf[2] == 0xFE) && (fRawByteBuf[3] == 0xFF)) || ((fRawByteBuf[0] == 0xFF) && (fRawByteBuf[1] == 0xFE) && (fRawByteBuf[2] == 0x00) && (fRawByteBuf[3] == 0x00))) ) { fRawBufIndex += 4; } break; } case XMLRecognizer::UTF_8 : { // Look at the raw buffer as short chars const char* asChars = (const char*)fRawByteBuf; if (fRawBytesAvail > XMLRecognizer::fgUTF8BOMLen && XMLString::compareNString( asChars , XMLRecognizer::fgUTF8BOM , XMLRecognizer::fgUTF8BOMLen) == 0) { fRawBufIndex += XMLRecognizer::fgUTF8BOMLen; } break; } case XMLRecognizer::UTF_16B : case XMLRecognizer::UTF_16L : { if (fRawBytesAvail < 2) break; const UTF16Ch* asUTF16 = (const UTF16Ch*)&fRawByteBuf[fRawBufIndex]; if ((*asUTF16 == chUnicodeMarker) || (*asUTF16 == chSwappedUnicodeMarker)) { fRawBufIndex += sizeof(UTF16Ch); } break; } case XMLRecognizer::EBCDIC: case XMLRecognizer::US_ASCII: case XMLRecognizer::XERCES_XMLCH: case XMLRecognizer::OtherEncoding: case XMLRecognizer::Encodings_Count: { // silence warning about enumeration not being used break; } } // Check whether the fSwapped flag should be set or not checkForSwapped(); // // Create a transcoder for the encoding. Since the encoding has been // forced, this will be the one we will use, period. // XMLTransService::Codes failReason; if (fEncoding == XMLRecognizer::OtherEncoding) { // // fEncodingStr not pre-recognized, use it // directly for transcoder // fTranscoder = XMLPlatformUtils::fgTransService->makeNewTranscoderFor ( fEncodingStr , failReason , kCharBufSize , fMemoryManager ); } else { // // Use the recognized fEncoding to create the transcoder // fTranscoder = XMLPlatformUtils::fgTransService->makeNewTranscoderFor ( fEncoding , failReason , kCharBufSize , fMemoryManager ); } if (!fTranscoder) { // We are about to throw which means the d-tor won't be called. // Clean up some memory. // fMemoryManager->deallocate(fPublicId); fMemoryManager->deallocate(fSystemId); ArrayJanitor jan (fEncodingStr, fMemoryManager); ThrowXMLwithMemMgr1 ( TranscodingException , XMLExcepts::Trans_CantCreateCvtrFor , fEncodingStr , fMemoryManager ); } // // Note that, unlike above, we do not do an initial decode of the // first line. We take the caller's word that the encoding is correct // and just assume that the first bulk decode (kicked off by the first // get of a character) will work. // // So we do here the slipping in of the leading space if required. // if ((fType == Type_PE) && (fRefFrom == RefFrom_NonLiteral)) { // This represents no data from the source fCharSizeBuf[fCharsAvail] = 0; fCharOfsBuf[fCharsAvail] = 0; fCharBuf[fCharsAvail++] = chSpace; } } XMLReader::XMLReader(const XMLCh* const pubId , const XMLCh* const sysId , BinInputStream* const streamToAdopt , XMLRecognizer::Encodings encodingEnum , const RefFrom from , const Types type , const Sources source , const bool throwAtEnd , const bool calculateSrcOfs , XMLSize_t lowWaterMark , const XMLVersion version , MemoryManager* const manager) : fCharIndex(0) , fCharsAvail(0) , fCurCol(1) , fCurLine(1) , fEncoding(XMLRecognizer::UTF_8) , fEncodingStr(0) , fForcedEncoding(true) , fNoMore(false) , fPublicId(XMLString::replicate(pubId, manager)) , fRawBufIndex(0) , fRawBytesAvail(0) , fLowWaterMark (lowWaterMark) , fReaderNum(0xFFFFFFFF) , fRefFrom(from) , fSentTrailingSpace(false) , fSource(source) , fSrcOfsBase(0) , fSrcOfsSupported(false) , fCalculateSrcOfs(calculateSrcOfs) , fSystemId(XMLString::replicate(sysId, manager)) , fStream(streamToAdopt) , fSwapped(false) , fThrowAtEnd(throwAtEnd) , fTranscoder(0) , fType(type) , fMemoryManager(manager) { setXMLVersion(version); // Do an initial load of raw bytes refreshRawBuffer(); // Ask the transcoding service if it supports src offset info fSrcOfsSupported = XMLPlatformUtils::fgTransService->supportsSrcOfs(); // // Use the passed encoding code // fEncoding = encodingEnum; fEncodingStr = XMLString::replicate(XMLRecognizer::nameForEncoding(fEncoding, fMemoryManager), fMemoryManager); // Check whether the fSwapped flag should be set or not checkForSwapped(); // // Create a transcoder for the encoding. Since the encoding has been // forced, this will be the one we will use, period. // XMLTransService::Codes failReason; fTranscoder = XMLPlatformUtils::fgTransService->makeNewTranscoderFor ( fEncoding , failReason , kCharBufSize , fMemoryManager ); if (!fTranscoder) { // We are about to throw which means the d-tor won't be called. // Clean up some memory. // fMemoryManager->deallocate(fPublicId); fMemoryManager->deallocate(fSystemId); ArrayJanitor jan (fEncodingStr, fMemoryManager); ThrowXMLwithMemMgr1 ( TranscodingException , XMLExcepts::Trans_CantCreateCvtrFor , fEncodingStr , fMemoryManager ); } // // Note that, unlike above, we do not do an initial decode of the // first line. We take the caller's word that the encoding is correct // and just assume that the first bulk decode (kicked off by the first // get of a character) will work. // // So we do here the slipping in of the leading space if required. // if ((fType == Type_PE) && (fRefFrom == RefFrom_NonLiteral)) { // This represents no data from the source fCharSizeBuf[fCharsAvail] = 0; fCharOfsBuf[fCharsAvail] = 0; fCharBuf[fCharsAvail++] = chSpace; } } XMLReader::~XMLReader() { fMemoryManager->deallocate(fEncodingStr); fMemoryManager->deallocate(fPublicId); fMemoryManager->deallocate(fSystemId); delete fStream; delete fTranscoder; } // --------------------------------------------------------------------------- // XMLReader: Character buffer management methods // --------------------------------------------------------------------------- XMLFilePos XMLReader::getSrcOffset() const { if (!fSrcOfsSupported || !fCalculateSrcOfs) ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Reader_SrcOfsNotSupported, fMemoryManager); // // Take the current source offset and add in the sizes that we've // eaten from the source so far. // if( fCharIndex == 0 ) { return fSrcOfsBase; } if( fCharIndex < fCharsAvail ) { return (fSrcOfsBase + fCharOfsBuf[fCharIndex]); } return (fSrcOfsBase + fCharOfsBuf[fCharIndex-1] + fCharSizeBuf[fCharIndex-1]); } bool XMLReader::refreshCharBuffer() { // If the no more flag is set, then don't bother doing anything. if (fNoMore) return false; XMLSize_t startInd; // See if we have any existing chars. const XMLSize_t spareChars = fCharsAvail - fCharIndex; // If we are full, then don't do anything. if (spareChars == kCharBufSize) return true; // // If no transcoder has been created yet, then we never saw the // any encoding="" string and the encoding was not forced, so lets // create one now. We know that it won't change now. // // However, note that if we autosensed EBCDIC, then we have to // consider it an error if we never got an encoding since we don't // know what variant of EBCDIC it is. // if (!fTranscoder) { if (fEncoding == XMLRecognizer::EBCDIC) ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Reader_EncodingStrRequired, fMemoryManager); // Ask the transcoding service to make use a transcoder XMLTransService::Codes failReason; fTranscoder = XMLPlatformUtils::fgTransService->makeNewTranscoderFor ( fEncodingStr , failReason , kCharBufSize , fMemoryManager ); if (!fTranscoder) { ThrowXMLwithMemMgr1 ( TranscodingException , XMLExcepts::Trans_CantCreateCvtrFor , fEncodingStr , fMemoryManager ); } } // // Add the number of source bytes eaten so far to the base src // offset member. // if (fCalculateSrcOfs) { for (startInd = 0; startInd < fCharIndex; startInd++) fSrcOfsBase += fCharSizeBuf[startInd]; } // // If there are spare chars, then move then down to the bottom. We // have to move the char sizes down also. // startInd = 0; if (spareChars) { for (XMLSize_t index = fCharIndex; index < fCharsAvail; index++) { fCharBuf[startInd] = fCharBuf[index]; fCharSizeBuf[startInd] = fCharSizeBuf[index]; startInd++; } } // // And then get more chars, starting after any spare chars that were // left over from the last time. // fCharsAvail = xcodeMoreChars ( &fCharBuf[startInd] , &fCharSizeBuf[startInd] , kCharBufSize - spareChars ); // Add back in the spare chars fCharsAvail += spareChars; // Reset the buffer index to zero, so we start from the 0th char again fCharIndex = 0; // // If no chars available, then we have to check for one last thing. If // this is reader for a PE and its not being expanded inside a literal, // then unget a trailing space. We use a boolean to avoid triggering // this more than once. // if (!fCharsAvail && (fType == Type_PE) && (fRefFrom == RefFrom_NonLiteral) && !fSentTrailingSpace) { fCharBuf[0] = chSpace; fCharsAvail = 1; fSentTrailingSpace = true; } // // If we get here with no more chars, then set the fNoMore flag which // lets us optimize and know without checking that no more chars are // available. // if (!fCharsAvail) fNoMore = true; // Calculate fCharOfsBuf using the elements from fCharBufSize if (fCalculateSrcOfs) { unsigned int last = 0; fCharOfsBuf[0] = 0; for (XMLSize_t index = 1; index < fCharsAvail; ++index) { fCharOfsBuf[index] = last+fCharSizeBuf[index-1]; last = fCharOfsBuf[index]; // code was: // fCharOfsBuf[index] = fCharOfsBuf[index-1]+fCharSizeBuf[index-1]; // but on Solaris 64 bit with sun studio 11 this didn't work as // every value of fCharOfsBuf[] was 1. } } return (fCharsAvail != 0); } // --------------------------------------------------------------------------- // XMLReader: Scanning methods // --------------------------------------------------------------------------- bool XMLReader::getName(XMLBuffer& toFill, const bool token) { // Ok, first lets see if we have chars in the buffer. If not, then lets // reload. if (fCharIndex == fCharsAvail) { if (!refreshCharBuffer()) return false; } XMLSize_t charIndex_start = fCharIndex; // Lets check the first char for being a first name char. If not, then // what's the point in living mannnn? Just give up now. We only do this // if its a name and not a name token that they want. if (!token) { if (fXMLVersion == XMLV1_1 && ((fCharBuf[fCharIndex] >= 0xD800) && (fCharBuf[fCharIndex] <= 0xDB7F))) { // make sure one more char is in the buffer, the transcoder // should put only a complete surrogate pair into the buffer assert(fCharIndex+1 < fCharsAvail); if ((fCharBuf[fCharIndex+1] < 0xDC00) || (fCharBuf[fCharIndex+1] > 0xDFFF)) return false; // Looks ok, so lets eat it fCharIndex += 2; } else { if (!isFirstNameChar(fCharBuf[fCharIndex])) return false; // Looks ok, so lets eat it fCharIndex ++; } } // And now we loop until we run out of data in this reader or we hit // a non-name char. while (true) { if (fXMLVersion == XMLV1_1) { while (fCharIndex < fCharsAvail) { // Check the current char and take it if its a name char. Else // break out. if ( (fCharBuf[fCharIndex] >= 0xD800) && (fCharBuf[fCharIndex] <= 0xDB7F) ) { // make sure one more char is in the buffer, the transcoder // should put only a complete surrogate pair into the buffer assert(fCharIndex+1 < fCharsAvail); if ( (fCharBuf[fCharIndex+1] < 0xDC00) || (fCharBuf[fCharIndex+1] > 0xDFFF) ) break; fCharIndex += 2; } else { if (!isNameChar(fCharBuf[fCharIndex])) break; fCharIndex++; } } } else // XMLV1_0 { while (fCharIndex < fCharsAvail) { if (!isNameChar(fCharBuf[fCharIndex])) break; fCharIndex++; } } // we have to copy the accepted character(s), and update column if (fCharIndex != charIndex_start) { fCurCol += (XMLFileLoc)(fCharIndex - charIndex_start); toFill.append(&fCharBuf[charIndex_start], fCharIndex - charIndex_start); } // something is wrong if there is still something in the buffer // or if we don't get no more, then break out. if ((fCharIndex < fCharsAvail) || !refreshCharBuffer()) break; charIndex_start = fCharIndex; } return !toFill.isEmpty(); } bool XMLReader::getNCName(XMLBuffer& toFill) { if (fCharIndex == fCharsAvail && !refreshCharBuffer()) return false; XMLSize_t charIndex_start = fCharIndex, count; // Lets check the first char for being a first name char. If not, then // what's the point in living mannnn? Just give up now. We only do this // if its a name and not a name token that they want. if (fXMLVersion == XMLV1_1 && ((fCharBuf[fCharIndex] >= 0xD800) && (fCharBuf[fCharIndex] <= 0xDB7F))) { // make sure one more char is in the buffer, the transcoder // should put only a complete surrogate pair into the buffer assert(fCharIndex+1 < fCharsAvail); if ((fCharBuf[fCharIndex+1] < 0xDC00) || (fCharBuf[fCharIndex+1] > 0xDFFF)) return false; // Looks ok, so lets eat it fCharIndex += 2; } else { if (!isFirstNCNameChar(fCharBuf[fCharIndex])) { return false; } // Looks ok, so lets eat it fCharIndex++; } do { if (fCharIndex == fCharsAvail) { // we have to copy the accepted character(s), and update the column number, // before getting new data and losing the value of fCharIndex if((count = fCharIndex - charIndex_start)!=0) { fCurCol += (XMLFileLoc)count; toFill.append(&fCharBuf[charIndex_start], count); } if(!refreshCharBuffer()) return true; charIndex_start = fCharIndex; } // Check the current char and take it if it's a name char if (fXMLVersion == XMLV1_1) { while(fCharIndex < fCharsAvail) { if(isNCNameChar(fCharBuf[fCharIndex])) fCharIndex++; else if((fCharBuf[fCharIndex] >= 0xD800) && (fCharBuf[fCharIndex] <= 0xDB7F) && ((fCharBuf[fCharIndex+1] < 0xDC00) || (fCharBuf[fCharIndex+1] > 0xDFFF))) fCharIndex+=2; else break; } } else while(fCharIndex < fCharsAvail && isNCNameChar(fCharBuf[fCharIndex])) fCharIndex++; // if we didn't consume the entire buffer, we are done } while(fCharIndex == fCharsAvail); // we have to copy the accepted character(s), and update column if((count = fCharIndex - charIndex_start)!=0) { fCurCol += (XMLFileLoc)count; toFill.append(&fCharBuf[charIndex_start], count); } return true; } bool XMLReader::getQName(XMLBuffer& toFill, int* colonPosition) { // We are only looking for two iterations (i.e. 'NCNAME':'NCNAME'). // We will stop when we finished scanning for a QName (i.e. either a second // colon or an invalid char). if(!getNCName(toFill)) { *colonPosition = -1; return false; } if (fCharIndex == fCharsAvail && !refreshCharBuffer()) { *colonPosition = -1; return true; } if (fCharBuf[fCharIndex] != chColon) { *colonPosition = -1; return true; } *colonPosition = (int)toFill.getLen(); toFill.append(chColon); fCharIndex++; fCurCol++; return getNCName(toFill); } bool XMLReader::getSpaces(XMLBuffer& toFill) { // // We just loop until we either hit a non-space or the end of this // entity. We return true if we returned because of a non-space and // false if because of end of entity. // // NOTE: We have to maintain line/col info here and we have to do // whitespace normalization if we are not already internalized. // while (true) { // Loop through the current chars in the buffer while (fCharIndex < fCharsAvail) { // Get the current char out of the buffer XMLCh curCh = fCharBuf[fCharIndex]; // // See if its a white space char. If so, then process it. Else // we've hit a non-space and need to return. // if (isWhitespace(curCh)) { // Eat this char fCharIndex++; // // 'curCh' is a whitespace(x20|x9|xD|xA), so we only can have // end-of-line combinations with a leading chCR(xD) or chLF(xA) // // 100000 x20 // 001001 x9 // 001010 chLF // 001101 chCR // ----------- // 000110 == (chCR|chLF) & ~(0x9|0x20) // // if the result of thelogical-& operation is // true : 'curCh' must be xA or xD // false : 'curCh' must be x20 or x9 // if ( ( curCh & (chCR|chLF) & ~(0x9|0x20) ) == 0 ) { fCurCol++; } else { handleEOL(curCh, false); } // Ok we can add this guy to our buffer toFill.append(curCh); } else { // Return true to indicate we broke out due to a whitespace return true; } } // // We've eaten up the current buffer, so lets try to reload it. If // we don't get anything new, then break out. If we do, then we go // back to the top to keep getting spaces. // if (!refreshCharBuffer()) break; } return false; } bool XMLReader::getUpToCharOrWS(XMLBuffer& toFill, const XMLCh toCheck) { while (true) { // Loop through the current chars in the buffer while (fCharIndex < fCharsAvail) { // Get the current char out of the buffer XMLCh curCh = fCharBuf[fCharIndex]; // // See if its not a white space or our target char, then process // it. Else, we need to return. // if (!isWhitespace(curCh) && (curCh != toCheck)) { // Eat this char fCharIndex++; // // 'curCh' is not a whitespace(x20|x9|xD|xA), so we only can // have end-of-line combinations with a leading chNEL(x85) or // chLineSeparator(x2028) // // 0010000000101000 chLineSeparator // 0000000010000101 chNEL // --------------------- // 1101111101010010 == ~(chNEL|chLineSeparator) // // if the result of the logical-& operation is // true : 'curCh' can not be chNEL or chLineSeparator // false : 'curCh' can be chNEL or chLineSeparator // if ( curCh & (XMLCh) ~(chNEL|chLineSeparator) ) { fCurCol++; } else { handleEOL(curCh, false); } // Add it to our buffer toFill.append(curCh); } else { return true; } } // // We've eaten up the current buffer, so lets try to reload it. If // we don't get anything new, then break out. If we do, then we go // back to the top to keep getting spaces. // if (!refreshCharBuffer()) break; } // We never hit any non-space and ate up the whole reader return false; } bool XMLReader::skipIfQuote(XMLCh& chGotten) { if (fCharIndex == fCharsAvail && !refreshCharBuffer()) return false; chGotten = fCharBuf[fCharIndex]; if ((chGotten == chDoubleQuote) || (chGotten == chSingleQuote)) { fCharIndex++; fCurCol++; return true; } return false; } bool XMLReader::skipSpaces(bool& skippedSomething, bool inDecl) { // DO NOT set the skippedSomething to 'false', but change it to be 'true' only // We enter a loop where we skip over spaces until we hit the end of // this reader or a non-space value. The return indicates whether we // hit the non-space (true) or the end (false). do { // Loop through the current chars in the buffer while (fCharIndex < fCharsAvail) { // See if its a white space char. If so, then process it. Else // we've hit a non-space and need to return. if (isWhitespace(fCharBuf[fCharIndex])) { // Get the current char out of the buffer and eat it XMLCh curCh = fCharBuf[fCharIndex++]; skippedSomething = true; // // 'curCh' is a whitespace(x20|x9|xD|xA), so we only can have // end-of-line combinations with a leading chCR(xD) or chLF(xA) // // 100000 x20 // 001001 x9 // 001010 chLF // 001101 chCR // ----------- // 000110 == (chCR|chLF) & ~(0x9|0x20) // // if the result of the logical-& operation is // true : 'curCh' must be xA or xD // false : 'curCh' must be x20 or x9 // if ( ( curCh & (chCR|chLF) & ~(0x9|0x20) ) == 0 ) { fCurCol++; } else { handleEOL(curCh, inDecl); } } else return true; } // We've eaten up the current buffer, so lets try to reload it. If // we don't get anything new, then break out. If we do, then we go // back to the top to keep getting spaces. } while(refreshCharBuffer()); // We never hit any non-space and ate up the whole reader return false; } bool XMLReader::skippedChar(const XMLCh toSkip) { // // If the buffer is empty, then try to reload it. If we still get // nothing, then return false. // if (fCharIndex == fCharsAvail) { if (!refreshCharBuffer()) return false; } // // See if the current char is the one we want. If so, then we need // to eat it and return true. // if (fCharBuf[fCharIndex] == toSkip) { fCharIndex++; fCurCol++; return true; } return false; } bool XMLReader::skippedSpace() { // // If the buffer is empty, then try to reload it. If we still get // nothing, then return false. // if (fCharIndex == fCharsAvail) { if (!refreshCharBuffer()) return false; } // // See if the current char is a whitespace. If so, then we need to eat // it and return true. // const XMLCh curCh = fCharBuf[fCharIndex]; if (isWhitespace(curCh)) { // Eat the character fCharIndex++; // // 'curCh' is a whitespace(x20|x9|xD|xA), so we only can have // end-of-line combinations with a leading chCR(xD) or chLF(xA) // // 100000 x20 // 001001 x9 // 001010 chLF // 001101 chCR // ----------- // 000110 == (chCR|chLF) & ~(0x9|0x20) // // if the result of the logical-& operation is // true : 'curCh' must be xA or xD // false : 'curCh' must be x20 or x9 // if ( ( curCh & (chCR|chLF) & ~(0x9|0x20) ) == 0 ) { fCurCol++; } else { handleEOL((XMLCh&)curCh, false); } return true; } return false; } bool XMLReader::skippedString(const XMLCh* const toSkip) { // This function works on strings that are smaller than kCharBufSize. // This function guarantees that in case the comparison is unsuccessful // the fCharIndex will point to the original data. // // Get the length of the string to skip. // const XMLSize_t srcLen = XMLString::stringLen(toSkip); XMLSize_t charsLeft = charsLeftInBuffer(); // See if the current reader has enough chars to test against this // string. If not, then ask it to reload its buffer. If that does not // get us enough, then it cannot match. // // NOTE: This works because strings never have to cross a reader! And // a string to skip will never have a new line in it, so we will never // miss adjusting the current line. // while (charsLeft < srcLen) { if (!refreshCharBuffer()) return false; XMLSize_t tmp = charsLeftInBuffer(); if (tmp == charsLeft) // if the refreshCharBuf() did not add anything new return false; // give up and return. charsLeft = tmp; } // Ok, now we now that the current reader has enough chars in its // buffer and that its index is back at zero. So we can do a quick and // dirty comparison straight to its buffer with no requirement to unget // if it fails. // if (memcmp(&fCharBuf[fCharIndex], toSkip, srcLen * sizeof(XMLCh))) return false; // Add the source length to the current column to get it back right. // fCurCol += (XMLFileLoc)srcLen; // And get the character buffer index back right by just adding the // source len to it. // fCharIndex += srcLen; return true; } bool XMLReader::skippedStringLong(const XMLCh* toSkip) { // This function works on strings that are potentially longer than // kCharBufSize (e.g., end tag). This function does not guarantee // that in case the comparison is unsuccessful the fCharIndex will // point to the original data. // XMLSize_t srcLen = XMLString::stringLen(toSkip); XMLSize_t charsLeft = charsLeftInBuffer(); while (srcLen != 0) { // Fill up the buffer with as much data as possible. // while (charsLeft < srcLen && charsLeft != kCharBufSize) { if (!refreshCharBuffer()) return false; XMLSize_t tmp = charsLeftInBuffer(); if (tmp == charsLeft) // if the refreshCharBuf() did not add anything return false; // new give up and return. charsLeft = tmp; } XMLSize_t n = charsLeft < srcLen ? charsLeft : srcLen; if (memcmp(&fCharBuf[fCharIndex], toSkip, n * sizeof(XMLCh))) return false; toSkip += n; srcLen -= n; fCharIndex += n; fCurCol += (XMLFileLoc)n; charsLeft -= n; } return true; } // // This is just to peek if the next coming buffer // matches the string toPeek. // Similar to skippedString, but just the fCharIndex and fCurCol are not updated // bool XMLReader::peekString(const XMLCh* const toPeek) { // Get the length of the string to skip const XMLSize_t srcLen = XMLString::stringLen(toPeek); // // See if the current reader has enough chars to test against this // string. If not, then ask it to reload its buffer. If that does not // get us enough, then it cannot match. // // NOTE: This works because strings never have to cross a reader! And // a string to skip will never have a new line in it, so we will never // miss adjusting the current line. // XMLSize_t charsLeft = charsLeftInBuffer(); while (charsLeft < srcLen) { refreshCharBuffer(); XMLSize_t t = charsLeftInBuffer(); if (t == charsLeft) // if the refreshCharBuf() did not add anything new return false; // give up and return. charsLeft = t; } // // Ok, now we now that the current reader has enough chars in its // buffer and that its index is back at zero. So we can do a quick and // dirty comparison straight to its buffer with no requirement to unget // if it fails. // if (memcmp(&fCharBuf[fCharIndex], toPeek, srcLen*sizeof(XMLCh))) return false; return true; } // --------------------------------------------------------------------------- // XMLReader: Setter methods (most are inlined) // --------------------------------------------------------------------------- bool XMLReader::setEncoding(const XMLCh* const newEncoding) { // // If the encoding was forced, then we ignore the new value and just // return with success. If it was forced, then we are to use that // encoding without question. Note that, if we are forced, we created // a transcoder up front so there is no need to do one here in that // case. // if (fForcedEncoding) return true; // // upperCase the newEncoding first for better performance // XMLCh* inputEncoding = XMLString::replicate(newEncoding, fMemoryManager); XMLString::upperCaseASCII(inputEncoding); XMLRecognizer::Encodings newBaseEncoding; // // Check for non-endian specific UTF-16 or UCS-4. If so, and if we // are already in one of the endian versions of those encodings, // then just keep it and go on. Otherwise, its not valid. // if (XMLString::equals(inputEncoding, XMLUni::fgUTF16EncodingString) || XMLString::equals(inputEncoding, XMLUni::fgUTF16EncodingString2) || XMLString::equals(inputEncoding, XMLUni::fgUTF16EncodingString3) || XMLString::equals(inputEncoding, XMLUni::fgUTF16EncodingString4) || XMLString::equals(inputEncoding, XMLUni::fgUTF16EncodingString5) || XMLString::equals(inputEncoding, XMLUni::fgUTF16EncodingString6) || XMLString::equals(inputEncoding, XMLUni::fgUTF16EncodingString7)) { fMemoryManager->deallocate(inputEncoding); if ((fEncoding != XMLRecognizer::UTF_16L) && (fEncoding != XMLRecognizer::UTF_16B)) { return false; } // Override with the original endian specific encoding newBaseEncoding = fEncoding; if (fEncoding == XMLRecognizer::UTF_16L) { fMemoryManager->deallocate(fEncodingStr); fEncodingStr = 0; fEncodingStr = XMLString::replicate(XMLUni::fgUTF16LEncodingString, fMemoryManager); } else { fMemoryManager->deallocate(fEncodingStr); fEncodingStr = 0; fEncodingStr = XMLString::replicate(XMLUni::fgUTF16BEncodingString, fMemoryManager); } } else if (XMLString::equals(inputEncoding, XMLUni::fgUCS4EncodingString) || XMLString::equals(inputEncoding, XMLUni::fgUCS4EncodingString2) || XMLString::equals(inputEncoding, XMLUni::fgUCS4EncodingString3) || XMLString::equals(inputEncoding, XMLUni::fgUCS4EncodingString4) || XMLString::equals(inputEncoding, XMLUni::fgUCS4EncodingString5)) { fMemoryManager->deallocate(inputEncoding); if ((fEncoding != XMLRecognizer::UCS_4L) && (fEncoding != XMLRecognizer::UCS_4B)) { return false; } // Override with the original endian specific encoding newBaseEncoding = fEncoding; if (fEncoding == XMLRecognizer::UCS_4L) { fMemoryManager->deallocate(fEncodingStr); fEncodingStr = 0; fEncodingStr = XMLString::replicate(XMLUni::fgUCS4LEncodingString, fMemoryManager); } else { fMemoryManager->deallocate(fEncodingStr); fEncodingStr = 0; fEncodingStr = XMLString::replicate(XMLUni::fgUCS4BEncodingString, fMemoryManager); } } else { // // Try to map the string to one of our standard encodings. If its not // one of them, then it has to be one of the non-intrinsic encodings, // in which case we have to delete our intrinsic encoder and create a // new one. // newBaseEncoding = XMLRecognizer::encodingForName(inputEncoding); // // If it does not come back as one of the auto-sensed encodings, then we // have to possibly replace it and at least check a few things. // if (newBaseEncoding == XMLRecognizer::OtherEncoding) { // // We already know it's none of those non-endian special cases, // so just replicate the new name and use it directly to create the transcoder // fMemoryManager->deallocate(fEncodingStr); fEncodingStr = inputEncoding; XMLTransService::Codes failReason; fTranscoder = XMLPlatformUtils::fgTransService->makeNewTranscoderFor ( fEncodingStr , failReason , kCharBufSize , fMemoryManager ); } else { // Store the new encoding string since it is just an intrinsic fMemoryManager->deallocate(fEncodingStr); fEncodingStr = inputEncoding; } } if (!fTranscoder) { // // Now we can create a transcoder using the recognized fEncoding. We // might get back a transcoder for an intrinsically supported encoding, // or we might get one from the underlying transcoding service. // XMLTransService::Codes failReason; fTranscoder = XMLPlatformUtils::fgTransService->makeNewTranscoderFor ( newBaseEncoding , failReason , kCharBufSize , fMemoryManager ); if (!fTranscoder) ThrowXMLwithMemMgr1(TranscodingException, XMLExcepts::Trans_CantCreateCvtrFor, fEncodingStr, fMemoryManager); } // Update the base encoding member with the new base encoding found fEncoding = newBaseEncoding; // Looks ok to us return true; } // --------------------------------------------------------------------------- // XMLReader: Private helper methods // --------------------------------------------------------------------------- // // This is called when the encoding flag is set and just sets the fSwapped // flag appropriately. // void XMLReader::checkForSwapped() { // Assume not swapped fSwapped = false; if (XMLPlatformUtils::fgXMLChBigEndian) { if ((fEncoding == XMLRecognizer::UTF_16L) || (fEncoding == XMLRecognizer::UCS_4L)) { fSwapped = true; } } else { if ((fEncoding == XMLRecognizer::UTF_16B) || (fEncoding == XMLRecognizer::UCS_4B)) { fSwapped = true; } } } // // This is called from the constructor when the encoding is not forced. // We assume that the encoding has been auto-sensed at this point and that // fSwapped is set correctly. // // In the case of UCS-4 and EBCDIC, we don't have to check for a decl. // The fact that we got here, means that there is one, because that's the // only way we can autosense those. // void XMLReader::doInitDecode() { switch(fEncoding) { case XMLRecognizer::UCS_4B : case XMLRecognizer::UCS_4L : { // Remove bom if any if (((fRawByteBuf[0] == 0x00) && (fRawByteBuf[1] == 0x00) && (fRawByteBuf[2] == 0xFE) && (fRawByteBuf[3] == 0xFF)) || ((fRawByteBuf[0] == 0xFF) && (fRawByteBuf[1] == 0xFE) && (fRawByteBuf[2] == 0x00) && (fRawByteBuf[3] == 0x00)) ) { for (XMLSize_t i = 0; i < fRawBytesAvail; i++) fRawByteBuf[i] = fRawByteBuf[i+4]; fRawBytesAvail -=4; } // Look at the raw buffer as UCS4 chars const UCS4Ch* asUCS = (const UCS4Ch*)fRawByteBuf; while (fRawBufIndex < fRawBytesAvail) { // Get out the current 4 byte value and inc our raw buf index UCS4Ch curVal = *asUCS++; fRawBufIndex += sizeof(UCS4Ch); // Swap if that is required for this machine if (fSwapped) curVal = BitOps::swapBytes(curVal); // Make sure its at least semi legal. If not, undo and throw if (curVal > 0xFFFF) { fCharsAvail = 0; fRawBufIndex = 0; fMemoryManager->deallocate(fPublicId); fMemoryManager->deallocate(fEncodingStr); ArrayJanitor janValue(fSystemId, fMemoryManager); ThrowXMLwithMemMgr1 ( TranscodingException , XMLExcepts::Reader_CouldNotDecodeFirstLine , fSystemId , fMemoryManager ); } // Convert the value to an XML char and store it fCharSizeBuf[fCharsAvail] = 4; fCharBuf[fCharsAvail++] = XMLCh(curVal); // Break out on the > character if (curVal == chCloseAngle) break; } break; } case XMLRecognizer::UTF_8 : { // If there's a utf-8 BOM (0xEF 0xBB 0xBF), skip past it. // Don't move to char buf - no one wants to see it. // Note: this causes any encoding= declaration to override // the BOM's attempt to say that the encoding is utf-8. // Look at the raw buffer as short chars const char* asChars = (const char*)fRawByteBuf; if (fRawBytesAvail > XMLRecognizer::fgUTF8BOMLen && XMLString::compareNString( asChars , XMLRecognizer::fgUTF8BOM , XMLRecognizer::fgUTF8BOMLen) == 0) { fRawBufIndex += XMLRecognizer::fgUTF8BOMLen; asChars += XMLRecognizer::fgUTF8BOMLen; } // // First check that there are enough bytes to even see the // decl indentifier. If not, get out now with no action since // there is no decl. // if (fRawBytesAvail < XMLRecognizer::fgASCIIPreLen) break; // Check for the opening sequence. If not, then no decl if (XMLString::compareNString( asChars , XMLRecognizer::fgASCIIPre , XMLRecognizer::fgASCIIPreLen)) { break; } while (fRawBufIndex < fRawBytesAvail) { const char curCh = *asChars++; fRawBufIndex++; // Looks ok, so store it fCharSizeBuf[fCharsAvail] = 1; fCharBuf[fCharsAvail++] = XMLCh(curCh); // Break out on a > character if (curCh == chCloseAngle) break; // // A char greater than 0x7F is not allowed in this case. If // so, undo and throw. // if (curCh & 0x80) { fCharsAvail = 0; fRawBufIndex = 0; fMemoryManager->deallocate(fPublicId); fMemoryManager->deallocate(fEncodingStr); ArrayJanitor janValue(fSystemId, fMemoryManager); ThrowXMLwithMemMgr1 ( TranscodingException , XMLExcepts::Reader_CouldNotDecodeFirstLine , fSystemId , fMemoryManager ); } } break; } case XMLRecognizer::UTF_16B : case XMLRecognizer::UTF_16L : { // // If there is a decl here, we just truncate back the characters // as we go. No surrogate creation would be allowed here in legal // XML, so we consider it a transoding error if we find one. // if (fRawBytesAvail < 2) break; XMLSize_t postBOMIndex = 0; const UTF16Ch* asUTF16 = (const UTF16Ch*)&fRawByteBuf[fRawBufIndex]; if ((*asUTF16 == chUnicodeMarker) || (*asUTF16 == chSwappedUnicodeMarker)) { fRawBufIndex += sizeof(UTF16Ch); asUTF16++; postBOMIndex = fRawBufIndex; } // First check that there are enough raw bytes for there to even // be a decl indentifier. If not, then nothing to do. // if (fRawBytesAvail - fRawBufIndex < XMLRecognizer::fgUTF16PreLen) { fRawBufIndex = postBOMIndex; break; } // // See we get a match on the prefix. If not, then reset and // break out. // if (fEncoding == XMLRecognizer::UTF_16B) { if (memcmp(asUTF16, XMLRecognizer::fgUTF16BPre, XMLRecognizer::fgUTF16PreLen)) { fRawBufIndex = postBOMIndex; break; } } else { if (memcmp(asUTF16, XMLRecognizer::fgUTF16LPre, XMLRecognizer::fgUTF16PreLen)) { fRawBufIndex = postBOMIndex; break; } } while (fRawBufIndex < fRawBytesAvail) { // Get out the current 2 byte value UTF16Ch curVal = *asUTF16++; fRawBufIndex += sizeof(UTF16Ch); // Swap if that is required for this machine if (fSwapped) curVal = BitOps::swapBytes(curVal); // // Store it and bump the target index, implicitly converting // if UTF16Ch and XMLCh are not the same size. // fCharSizeBuf[fCharsAvail] = 2; fCharBuf[fCharsAvail++] = curVal; // Break out on a > char if (curVal == chCloseAngle) break; } break; } case XMLRecognizer::EBCDIC : { // // We use special support in the intrinsic EBCDIC-US transcoder // to go through one char at a time. // const XMLByte* srcPtr = fRawByteBuf; while (1) { // Transcode one char from the source const XMLCh chCur = XMLEBCDICTranscoder::xlatThisOne(*srcPtr++); fRawBufIndex++; // // And put it into the character buffer. This stuff has to // look like it was normally transcoded. // fCharSizeBuf[fCharsAvail] = 1; fCharBuf[fCharsAvail++] = chCur; // If its a > char, then break out if (chCur == chCloseAngle) break; // Watch for using up all input and get out if (fRawBufIndex == fRawBytesAvail) break; } break; } default : // It should never be anything else here fMemoryManager->deallocate(fPublicId); fMemoryManager->deallocate(fEncodingStr); fMemoryManager->deallocate(fSystemId); ThrowXMLwithMemMgr(TranscodingException, XMLExcepts::Reader_BadAutoEncoding, fMemoryManager); break; } // // Ok, by the time we get here, if its a legal XML file we have eaten // the XML/TextDecl. So, if we are a PE and are being referenced from // outside a literal, then we need to throw in an arbitrary space that // is required by XML. // if ((fType == Type_PE) && (fRefFrom == RefFrom_NonLiteral)) fCharBuf[fCharsAvail++] = chSpace; // Calculate fCharOfsBuf buffer using the elements from fCharBufSize if (fCalculateSrcOfs) { fCharOfsBuf[0] = 0; for (XMLSize_t index = 1; index < fCharsAvail; ++index) { fCharOfsBuf[index] = fCharOfsBuf[index-1]+fCharSizeBuf[index-1]; } } } // // This method is called internally when we run out of bytes in the raw // buffer. We just read as many bytes as we can into the raw buffer again // and store the number of bytes we got. // void XMLReader::refreshRawBuffer() { // // If there are any bytes left, move them down to the start. There // should only ever be (max bytes per char - 1) at the most. // const XMLSize_t bytesLeft = fRawBytesAvail - fRawBufIndex; // Move the existing ones down for (XMLSize_t index = 0; index < bytesLeft; index++) fRawByteBuf[index] = fRawByteBuf[fRawBufIndex + index]; // // And then read into the buffer past the existing bytes. Add back in // that many to the bytes read, and subtract that many from the bytes // requested. // fRawBytesAvail = fStream->readBytes ( &fRawByteBuf[bytesLeft], kRawBufSize - bytesLeft ) + bytesLeft; // // We need to reset the buffer index back to the start in all cases, // since any trailing data was copied down to the start. // fRawBufIndex = 0; } // // This method is called internally when we run out of characters in the // trancoded character buffer. We transcode up to another maxChars chars // from the // XMLSize_t XMLReader::xcodeMoreChars( XMLCh* const bufToFill , unsigned char* const charSizes , const XMLSize_t maxChars) { XMLSize_t charsDone = 0; XMLSize_t bytesEaten = 0; bool needMode = false; while (!bytesEaten) { // If our raw buffer is low, then lets load up another batch of // raw bytes now. // XMLSize_t bytesLeft = fRawBytesAvail - fRawBufIndex; if (needMode || bytesLeft == 0 || bytesLeft < fLowWaterMark) { refreshRawBuffer(); // If there are no characters or if we need more but didn't get // any, return zero now. // if (fRawBytesAvail == 0 || (needMode && (bytesLeft == fRawBytesAvail - fRawBufIndex))) return 0; } // Ask the transcoder to internalize another batch of chars. It is // possible that there is data in the raw buffer but the transcoder // is unable to produce anything because transcoding of multi-byte // encodings may have left a few bytes representing a partial // character in the buffer that can't be used until the next chunk // (and the rest of the character) is read. In this case set the // needMore flag and try again. // charsDone = fTranscoder->transcodeFrom ( &fRawByteBuf[fRawBufIndex] , fRawBytesAvail - fRawBufIndex , bufToFill , maxChars , bytesEaten , charSizes ); if (bytesEaten == 0) needMode = true; else fRawBufIndex += bytesEaten; } return charsDone; } /*** * * XML1.1 * * 2.11 End-of-Line Handling * * XML parsed entities are often stored in computer files which, for editing * convenience, are organized into lines. These lines are typically separated * by some combination of the characters CARRIAGE RETURN (#xD) and LINE FEED (#xA). * * To simplify the tasks of applications, the XML processor MUST behave as if * it normalized all line breaks in external parsed entities (including the document * entity) on input, before parsing, by translating all of the following to a single * #xA character: * * 1. the two-character sequence #xD #xA * 2. the two-character sequence #xD #x85 * 3. the single character #x85 * 4. the single character #x2028 * 5. any #xD character that is not immediately followed by #xA or #x85. * * ***/ void XMLReader::handleEOL(XMLCh& curCh, bool inDecl) { // 1. the two-character sequence #xD #xA // 2. the two-character sequence #xD #x85 // 5. any #xD character that is not immediately followed by #xA or #x85. switch(curCh) { case chCR: fCurCol = 1; fCurLine++; // // If not already internalized, then convert it to an // LF and eat any following LF. // if (fSource == Source_External) { if ((fCharIndex < fCharsAvail) || refreshCharBuffer()) { if ( fCharBuf[fCharIndex] == chLF || ((fCharBuf[fCharIndex] == chNEL) && fNEL) ) { fCharIndex++; } } curCh = chLF; } break; case chLF: fCurCol = 1; fCurLine++; break; // 3. the single character #x85 // 4. the single character #x2028 case chNEL: case chLineSeparator: if (inDecl && fXMLVersion == XMLV1_1) { /*** * XML1.1 * * 2.11 End-of-Line Handling * ... * The characters #x85 and #x2028 cannot be reliably recognized and translated * until an entity's encoding declaration (if present) has been read. * Therefore, it is a fatal error to use them within the XML declaration or * text declaration. * ***/ ThrowXMLwithMemMgr1 ( TranscodingException , XMLExcepts::Reader_NelLsepinDecl , fSystemId , fMemoryManager ); } if (fNEL && fSource == Source_External) { fCurCol = 1; fCurLine++; curCh = chLF; } break; default: fCurCol++; } } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/internal/SGXMLScanner.cpp0000644000175000017500000055347511350705133021233 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SGXMLScanner.cpp 925236 2010-03-19 14:29:47Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN inline XMLAttDefList& getAttDefList(ComplexTypeInfo* currType, XMLElementDecl* elemDecl); typedef JanitorMemFunCall CleanupType; typedef JanitorMemFunCall ReaderMgrResetType; // --------------------------------------------------------------------------- // SGXMLScanner: Constructors and Destructor // --------------------------------------------------------------------------- SGXMLScanner::SGXMLScanner( XMLValidator* const valToAdopt , GrammarResolver* const grammarResolver , MemoryManager* const manager) : XMLScanner(valToAdopt, grammarResolver, manager) , fSeeXsi(false) , fGrammarType(Grammar::UnKnown) , fElemStateSize(16) , fElemState(0) , fElemLoopState(0) , fContent(1023, manager) , fEntityTable(0) , fRawAttrList(0) , fRawAttrColonListSize(32) , fRawAttrColonList(0) , fSchemaGrammar(0) , fSchemaValidator(0) , fICHandler(0) , fElemNonDeclPool(0) , fElemCount(0) , fAttDefRegistry(0) , fUndeclaredAttrRegistry(0) , fPSVIAttrList(0) , fModel(0) , fPSVIElement(0) , fErrorStack(0) , fSchemaInfoList(0) , fCachedSchemaInfoList(0) { CleanupType cleanup(this, &SGXMLScanner::cleanUp); try { commonInit(); } catch(const OutOfMemoryException&) { // Don't cleanup when out of memory, since executing the // code can cause problems. cleanup.release(); throw; } cleanup.release(); } SGXMLScanner::SGXMLScanner( XMLDocumentHandler* const docHandler , DocTypeHandler* const docTypeHandler , XMLEntityHandler* const entityHandler , XMLErrorReporter* const errHandler , XMLValidator* const valToAdopt , GrammarResolver* const grammarResolver , MemoryManager* const manager) : XMLScanner(docHandler, docTypeHandler, entityHandler, errHandler, valToAdopt, grammarResolver, manager) , fSeeXsi(false) , fGrammarType(Grammar::UnKnown) , fElemStateSize(16) , fElemState(0) , fElemLoopState(0) , fContent(1023, manager) , fEntityTable(0) , fRawAttrList(0) , fRawAttrColonListSize(32) , fRawAttrColonList(0) , fSchemaGrammar(0) , fSchemaValidator(0) , fICHandler(0) , fElemNonDeclPool(0) , fElemCount(0) , fAttDefRegistry(0) , fUndeclaredAttrRegistry(0) , fPSVIAttrList(0) , fModel(0) , fPSVIElement(0) , fErrorStack(0) , fSchemaInfoList(0) , fCachedSchemaInfoList(0) { CleanupType cleanup(this, &SGXMLScanner::cleanUp); try { commonInit(); } catch(const OutOfMemoryException&) { // Don't cleanup when out of memory, since executing the // code can cause problems. cleanup.release(); throw; } cleanup.release(); } SGXMLScanner::~SGXMLScanner() { cleanUp(); } // --------------------------------------------------------------------------- // XMLScanner: Getter methods // --------------------------------------------------------------------------- NameIdPool* SGXMLScanner::getEntityDeclPool() { return 0; } const NameIdPool* SGXMLScanner::getEntityDeclPool() const { return 0; } // --------------------------------------------------------------------------- // SGXMLScanner: Main entry point to scan a document // --------------------------------------------------------------------------- void SGXMLScanner::scanDocument(const InputSource& src) { // Bump up the sequence id for this parser instance. This will invalidate // any previous progressive scan tokens. fSequenceId++; ReaderMgrResetType resetReaderMgr(&fReaderMgr, &ReaderMgr::reset); try { // Reset the scanner and its plugged in stuff for a new run. This // resets all the data structures, creates the initial reader and // pushes it on the stack, and sets up the base document path. scanReset(src); // If we have a document handler, then call the start document if (fDocHandler) fDocHandler->startDocument(); // Scan the prolog part, which is everything before the root element // including the DTD subsets. scanProlog(); // If we got to the end of input, then its not a valid XML file. // Else, go on to scan the content. if (fReaderMgr.atEOF()) { emitError(XMLErrs::EmptyMainEntity); } else { // Scan content, and tell it its not an external entity if (scanContent()) { // Do post-parse validation if required if (fValidate) { // We handle ID reference semantics at this level since // its required by XML 1.0. checkIDRefs(); // Then allow the validator to do any extra stuff it wants // fValidator->postParseValidation(); } // That went ok, so scan for any miscellaneous stuff if (!fReaderMgr.atEOF()) scanMiscellaneous(); } } // If we have a document handler, then call the end document if (fDocHandler) fDocHandler->endDocument(); } // NOTE: // // In all of the error processing below, the emitError() call MUST come // before the flush of the reader mgr, or it will fail because it tries // to find out the position in the XML source of the error. catch(const XMLErrs::Codes) { // This is a 'first failure' exception, so fall through } catch(const XMLValid::Codes) { // This is a 'first fatal error' type exit, so fall through } catch(const XMLException& excToCatch) { // Emit the error and catch any user exception thrown from here. Make // sure in all cases we flush the reader manager. fInException = true; try { if (excToCatch.getErrorType() == XMLErrorReporter::ErrType_Warning) emitError ( XMLErrs::XMLException_Warning , excToCatch.getCode() , excToCatch.getMessage() ); else if (excToCatch.getErrorType() >= XMLErrorReporter::ErrType_Fatal) emitError ( XMLErrs::XMLException_Fatal , excToCatch.getCode() , excToCatch.getMessage() ); else emitError ( XMLErrs::XMLException_Error , excToCatch.getCode() , excToCatch.getMessage() ); } catch(const OutOfMemoryException&) { // This is a special case for out-of-memory // conditions, because resetting the ReaderMgr // can be problematic. resetReaderMgr.release(); throw; } } catch(const OutOfMemoryException&) { // This is a special case for out-of-memory // conditions, because resetting the ReaderMgr // can be problematic. resetReaderMgr.release(); throw; } } bool SGXMLScanner::scanNext(XMLPScanToken& token) { // Make sure this token is still legal if (!isLegalToken(token)) ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Scan_BadPScanToken, fMemoryManager); // Find the next token and remember the reader id XMLSize_t orgReader; XMLTokens curToken; ReaderMgrResetType resetReaderMgr(&fReaderMgr, &ReaderMgr::reset); bool retVal = true; try { while (true) { // We have to handle any end of entity exceptions that happen here. // We could be at the end of X nested entities, each of which will // generate an end of entity exception as we try to move forward. try { curToken = senseNextToken(orgReader); break; } catch(const EndOfEntityException& toCatch) { // Send an end of entity reference event if (fDocHandler) fDocHandler->endEntityReference(toCatch.getEntity()); } } if (curToken == Token_CharData) { scanCharData(fCDataBuf); } else if (curToken == Token_EOF) { if (!fElemStack.isEmpty()) { const ElemStack::StackElem* topElem = fElemStack.popTop(); emitError ( XMLErrs::EndedWithTagsOnStack , topElem->fThisElement->getFullName() ); } retVal = false; } else { // Its some sort of markup bool gotData = true; switch(curToken) { case Token_CData : // Make sure we are within content if (fElemStack.isEmpty()) emitError(XMLErrs::CDATAOutsideOfContent); scanCDSection(); break; case Token_Comment : scanComment(); break; case Token_EndTag : scanEndTag(gotData); break; case Token_PI : scanPI(); break; case Token_StartTag : scanStartTag(gotData); break; default : fReaderMgr.skipToChar(chOpenAngle); break; } if (orgReader != fReaderMgr.getCurrentReaderNum()) emitError(XMLErrs::PartialMarkupInEntity); // If we hit the end, then do the miscellaneous part if (!gotData) { // Do post-parse validation if required if (fValidate) { // We handle ID reference semantics at this level since // its required by XML 1.0. checkIDRefs(); // Then allow the validator to do any extra stuff it wants // fValidator->postParseValidation(); } // That went ok, so scan for any miscellaneous stuff scanMiscellaneous(); if (toCheckIdentityConstraint()) fICHandler->endDocument(); if (fDocHandler) fDocHandler->endDocument(); } } } // NOTE: // // In all of the error processing below, the emitError() call MUST come // before the flush of the reader mgr, or it will fail because it tries // to find out the position in the XML source of the error. catch(const XMLErrs::Codes) { // This is a 'first failure' exception, so return failure retVal = false; } catch(const XMLValid::Codes) { // This is a 'first fatal error' type exit, so return failure retVal = false; } catch(const XMLException& excToCatch) { // Emit the error and catch any user exception thrown from here. Make // sure in all cases we flush the reader manager. fInException = true; try { if (excToCatch.getErrorType() == XMLErrorReporter::ErrType_Warning) emitError ( XMLErrs::XMLException_Warning , excToCatch.getCode() , excToCatch.getMessage() ); else if (excToCatch.getErrorType() >= XMLErrorReporter::ErrType_Fatal) emitError ( XMLErrs::XMLException_Fatal , excToCatch.getCode() , excToCatch.getMessage() ); else emitError ( XMLErrs::XMLException_Error , excToCatch.getCode() , excToCatch.getMessage() ); } catch(const OutOfMemoryException&) { // This is a special case for out-of-memory // conditions, because resetting the ReaderMgr // can be problematic. resetReaderMgr.release(); throw; } retVal = false; } catch(const OutOfMemoryException&) { // This is a special case for out-of-memory // conditions, because resetting the ReaderMgr // can be problematic. resetReaderMgr.release(); throw; } // If we are not at the end, release the object that will // reset the ReaderMgr. if (retVal) resetReaderMgr.release(); return retVal; } // --------------------------------------------------------------------------- // SGXMLScanner: Private scanning methods // --------------------------------------------------------------------------- // This method is called from scanStartTag() to handle the very raw initial // scan of the attributes. It just fills in the passed collection with // key/value pairs for each attribute. No processing is done on them at all. XMLSize_t SGXMLScanner::rawAttrScan(const XMLCh* const elemName , RefVectorOf& toFill , bool& isEmpty) { // Keep up with how many attributes we've seen so far, and how many // elements are available in the vector. This way we can reuse old // elements until we run out and then expand it. XMLSize_t attCount = 0; XMLSize_t curVecSize = toFill.size(); // Assume it is not empty isEmpty = false; // We loop until we either see a /> or >, handling key/value pairs util // we get there. We place them in the passed vector, which we will expand // as required to hold them. while (true) { // Get the next character, which should be non-space XMLCh nextCh = fReaderMgr.peekNextChar(); // If the next character is not a slash or closed angle bracket, // then it must be whitespace, since whitespace is required // between the end of the last attribute and the name of the next // one. // if (attCount) { if ((nextCh != chForwardSlash) && (nextCh != chCloseAngle)) { if (fReaderMgr.getCurrentReader()->isWhitespace(nextCh)) { // Ok, skip by them and get another char fReaderMgr.getNextChar(); fReaderMgr.skipPastSpaces(); nextCh = fReaderMgr.peekNextChar(); } else { // Emit the error but keep on going emitError(XMLErrs::ExpectedWhitespace); } } } // Ok, here we first check for any of the special case characters. // If its not one, then we do the normal case processing, which // assumes that we've hit an attribute value, Otherwise, we do all // the special case checks. if (!fReaderMgr.getCurrentReader()->isSpecialStartTagChar(nextCh)) { // Assume its going to be an attribute, so get a name from // the input. int colonPosition; if (!fReaderMgr.getQName(fAttNameBuf, &colonPosition)) { if (fAttNameBuf.isEmpty()) emitError(XMLErrs::ExpectedAttrName); else emitError(XMLErrs::InvalidAttrName, fAttNameBuf.getRawBuffer()); fReaderMgr.skipPastChar(chCloseAngle); return attCount; } const XMLCh* curAttNameBuf = fAttNameBuf.getRawBuffer(); // And next must be an equal sign if (!scanEq()) { static const XMLCh tmpList[] = { chSingleQuote, chDoubleQuote, chCloseAngle , chOpenAngle, chForwardSlash, chNull }; emitError(XMLErrs::ExpectedEqSign); // Try to sync back up by skipping forward until we either // hit something meaningful. const XMLCh chFound = fReaderMgr.skipUntilInOrWS(tmpList); if ((chFound == chCloseAngle) || (chFound == chForwardSlash)) { // Jump back to top for normal processing of these continue; } else if ((chFound == chSingleQuote) || (chFound == chDoubleQuote) || fReaderMgr.getCurrentReader()->isWhitespace(chFound)) { // Just fall through assuming that the value is to follow } else if (chFound == chOpenAngle) { // Assume a malformed tag and that new one is starting emitError(XMLErrs::UnterminatedStartTag, elemName); return attCount; } else { // Something went really wrong return attCount; } } // Next should be the quoted attribute value. We just do a simple // and stupid scan of this value. The only thing we do here // is to expand entity references. if (!basicAttrValueScan(curAttNameBuf, fAttValueBuf)) { static const XMLCh tmpList[] = { chCloseAngle, chOpenAngle, chForwardSlash, chNull }; emitError(XMLErrs::ExpectedAttrValue); // It failed, so lets try to get synced back up. We skip // forward until we find some whitespace or one of the // chars in our list. const XMLCh chFound = fReaderMgr.skipUntilInOrWS(tmpList); if ((chFound == chCloseAngle) || (chFound == chForwardSlash) || fReaderMgr.getCurrentReader()->isWhitespace(chFound)) { // Just fall through and process this attribute, though // the value will be "". } else if (chFound == chOpenAngle) { // Assume a malformed tag and that new one is starting emitError(XMLErrs::UnterminatedStartTag, elemName); return attCount; } else { // Something went really wrong return attCount; } } // And now lets add it to the passed collection. If we have not // filled it up yet, then we use the next element. Else we add // a new one. KVStringPair* curPair = 0; if (attCount >= curVecSize) { curPair = new (fMemoryManager) KVStringPair ( curAttNameBuf , fAttNameBuf.getLen() , fAttValueBuf.getRawBuffer() , fAttValueBuf.getLen() , fMemoryManager ); toFill.addElement(curPair); } else { curPair = toFill.elementAt(attCount); curPair->set ( curAttNameBuf , fAttNameBuf.getLen() , fAttValueBuf.getRawBuffer() , fAttValueBuf.getLen() ); } if (attCount >= fRawAttrColonListSize) { resizeRawAttrColonList(); } fRawAttrColonList[attCount] = colonPosition; // And bump the count of attributes we've gotten attCount++; // And go to the top again for another attribute continue; } // It was some special case character so do all of the checks and // deal with it. if (!nextCh) ThrowXMLwithMemMgr(UnexpectedEOFException, XMLExcepts::Gen_UnexpectedEOF, fMemoryManager); if (nextCh == chForwardSlash) { fReaderMgr.getNextChar(); isEmpty = true; if (!fReaderMgr.skippedChar(chCloseAngle)) emitError(XMLErrs::UnterminatedStartTag, elemName); break; } else if (nextCh == chCloseAngle) { fReaderMgr.getNextChar(); break; } else if (nextCh == chOpenAngle) { // Check for this one specially, since its going to be common // and it is kind of auto-recovering since we've already hit the // next open bracket, which is what we would have seeked to (and // skipped this whole tag.) emitError(XMLErrs::UnterminatedStartTag, elemName); break; } else if ((nextCh == chSingleQuote) || (nextCh == chDoubleQuote)) { // Check for this one specially, which is probably a missing // attribute name, e.g. ="value". Just issue expected name // error and eat the quoted string, then jump back to the // top again. emitError(XMLErrs::ExpectedAttrName); fReaderMgr.getNextChar(); fReaderMgr.skipQuotedString(nextCh); fReaderMgr.skipPastSpaces(); continue; } } return attCount; } // This method will kick off the scanning of the primary content of the // document, i.e. the elements. bool SGXMLScanner::scanContent() { // Go into a loop until we hit the end of the root element, or we fall // out because there is no root element. // // We have to do kind of a deeply nested double loop here in order to // avoid doing the setup/teardown of the exception handler on each // round. Doing it this way we only do it when an exception actually // occurs. bool gotData = true; bool inMarkup = false; while (gotData) { try { while (gotData) { // Sense what the next top level token is. According to what // this tells us, we will call something to handle that kind // of thing. XMLSize_t orgReader; const XMLTokens curToken = senseNextToken(orgReader); // Handle character data and end of file specially. Char data // is not markup so we don't want to handle it in the loop // below. if (curToken == Token_CharData) { // Scan the character data and call appropriate events. Let // him use our local character data buffer for efficiency. scanCharData(fCDataBuf); continue; } else if (curToken == Token_EOF) { // The element stack better be empty at this point or we // ended prematurely before all elements were closed. if (!fElemStack.isEmpty()) { const ElemStack::StackElem* topElem = fElemStack.popTop(); emitError ( XMLErrs::EndedWithTagsOnStack , topElem->fThisElement->getFullName() ); } // Its the end of file, so clear the got data flag gotData = false; continue; } // We are in some sort of markup now inMarkup = true; // According to the token we got, call the appropriate // scanning method. switch(curToken) { case Token_CData : // Make sure we are within content if (fElemStack.isEmpty()) emitError(XMLErrs::CDATAOutsideOfContent); scanCDSection(); break; case Token_Comment : scanComment(); break; case Token_EndTag : scanEndTag(gotData); break; case Token_PI : scanPI(); break; case Token_StartTag : scanStartTag(gotData); break; default : fReaderMgr.skipToChar(chOpenAngle); break; } if (orgReader != fReaderMgr.getCurrentReaderNum()) emitError(XMLErrs::PartialMarkupInEntity); // And we are back out of markup again inMarkup = false; } } catch(const EndOfEntityException& toCatch) { // If we were in some markup when this happened, then its a // partial markup error. if (inMarkup) emitError(XMLErrs::PartialMarkupInEntity); // Send an end of entity reference event if (fDocHandler) fDocHandler->endEntityReference(toCatch.getEntity()); inMarkup = false; } } // It went ok, so return success return true; } void SGXMLScanner::scanEndTag(bool& gotData) { // Assume we will still have data until proven otherwise. It will only // ever be false if this is the end of the root element. gotData = true; // Check if the element stack is empty. If so, then this is an unbalanced // element (i.e. more ends than starts, perhaps because of bad text // causing one to be skipped.) if (fElemStack.isEmpty()) { emitError(XMLErrs::MoreEndThanStartTags); fReaderMgr.skipPastChar(chCloseAngle); ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Scan_UnbalancedStartEnd, fMemoryManager); } // Pop the stack of the element we are supposed to be ending. Remember // that we don't own this. The stack just keeps them and reuses them. unsigned int uriId = (fDoNamespaces) ? fElemStack.getCurrentURI() : fEmptyNamespaceId; // Make sure that its the end of the element that we expect const XMLCh *elemName = fElemStack.getCurrentSchemaElemName(); const ElemStack::StackElem* topElem = fElemStack.topElement(); if (!fReaderMgr.skippedStringLong(elemName)) { emitError ( XMLErrs::ExpectedEndOfTagX , elemName ); fReaderMgr.skipPastChar(chCloseAngle); fElemStack.popTop(); return; } fPSVIElemContext.fErrorOccurred = fErrorStack->pop(); // Make sure we are back on the same reader as where we started if (topElem->fReaderNum != fReaderMgr.getCurrentReaderNum()) emitError(XMLErrs::PartialTagMarkupError); // Skip optional whitespace fReaderMgr.skipPastSpaces(); // Make sure we find the closing bracket if (!fReaderMgr.skippedChar(chCloseAngle)) { emitError ( XMLErrs::UnterminatedEndTag , topElem->fThisElement->getFullName() ); } if (fValidate && topElem->fThisElement->isDeclared()) { fPSVIElemContext.fCurrentTypeInfo = ((SchemaValidator*) fValidator)->getCurrentTypeInfo(); if(!fPSVIElemContext.fCurrentTypeInfo) fPSVIElemContext.fCurrentDV = ((SchemaValidator*) fValidator)->getCurrentDatatypeValidator(); else fPSVIElemContext.fCurrentDV = 0; if (fPSVIHandler) { fPSVIElemContext.fNormalizedValue = ((SchemaValidator*) fValidator)->getNormalizedValue(); if (XMLString::equals(fPSVIElemContext.fNormalizedValue, XMLUni::fgZeroLenString)) fPSVIElemContext.fNormalizedValue = 0; } } else { fPSVIElemContext.fCurrentDV = 0; fPSVIElemContext.fCurrentTypeInfo = 0; fPSVIElemContext.fNormalizedValue = 0; } // If validation is enabled, then lets pass him the list of children and // this element and let him validate it. DatatypeValidator* psviMemberType = 0; if (fValidate) { XMLSize_t failure; bool res = fValidator->checkContent ( topElem->fThisElement , topElem->fChildren , topElem->fChildCount , &failure ); if (!res) { // One of the elements is not valid for the content. NOTE that // if no children were provided but the content model requires // them, it comes back with a zero value. But we cannot use that // to index the child array in this case, and have to put out a // special message. if (!topElem->fChildCount) { fValidator->emitError ( XMLValid::EmptyNotValidForContent , topElem->fThisElement->getFormattedContentModel() ); } else if (failure >= topElem->fChildCount) { fValidator->emitError ( XMLValid::NotEnoughElemsForCM , topElem->fThisElement->getFormattedContentModel() ); } else { fValidator->emitError ( XMLValid::ElementNotValidForContent , topElem->fChildren[failure]->getRawName() , topElem->fThisElement->getFormattedContentModel() ); } } // update PSVI info if (((SchemaValidator*) fValidator)->getErrorOccurred()) fPSVIElemContext.fErrorOccurred = true; else if (fPSVIElemContext.fCurrentDV && fPSVIElemContext.fCurrentDV->getType() == DatatypeValidator::Union) psviMemberType = fValidationContext->getValidatingMemberType(); if (fPSVIHandler) { fPSVIElemContext.fIsSpecified = ((SchemaValidator*) fValidator)->getIsElemSpecified(); if(fPSVIElemContext.fIsSpecified) fPSVIElemContext.fNormalizedValue = ((SchemaElementDecl *)topElem->fThisElement)->getDefaultValue(); } // call matchers and de-activate context if (toCheckIdentityConstraint()) { fICHandler->deactivateContext ( (SchemaElementDecl *) topElem->fThisElement , fContent.getRawBuffer() , fValidationContext , fPSVIElemContext.fCurrentDV ); } } // QName dv needed topElem to resolve URIs on the checkContent fElemStack.popTop(); // See if it was the root element, to avoid multiple calls below const bool isRoot = fElemStack.isEmpty(); if (fPSVIHandler) { endElementPSVI ( (SchemaElementDecl*)topElem->fThisElement, psviMemberType ); } // now we can reset the datatype buffer, since the // application has had a chance to copy the characters somewhere else ((SchemaValidator *)fValidator)->clearDatatypeBuffer(); // If we have a doc handler, tell it about the end tag if (fDocHandler) { if (fGrammarType == Grammar::SchemaGrammarType) { if (topElem->fPrefixColonPos != -1) fPrefixBuf.set(elemName, topElem->fPrefixColonPos); else fPrefixBuf.reset(); } else { fPrefixBuf.set(topElem->fThisElement->getElementName()->getPrefix()); } fDocHandler->endElement ( *topElem->fThisElement , uriId , isRoot , fPrefixBuf.getRawBuffer() ); } if (!isRoot) { // update error information fErrorStack->push((fErrorStack->size() && fErrorStack->pop()) || fPSVIElemContext.fErrorOccurred); } // If this was the root, then done with content gotData = !isRoot; if (gotData) { // Restore the grammar fGrammar = fElemStack.getCurrentGrammar(); fGrammarType = fGrammar->getGrammarType(); fValidator->setGrammar(fGrammar); // Restore the validation flag fValidate = fElemStack.getValidationFlag(); } } // This method handles the high level logic of scanning the DOCType // declaration. This calls the DTDScanner and kicks off both the scanning of // the internal subset and the scanning of the external subset, if any. // // When we get here the ', />, or attributes followed // by one of those sequences. bool SGXMLScanner::scanStartTag(bool& gotData) { // Assume we will still have data until proven otherwise. It will only // ever be false if this is the root and its empty. gotData = true; // Reset element content fContent.reset(); // The current position is after the open bracket, so we need to read in // in the element name. int prefixColonPos; if (!fReaderMgr.getQName(fQNameBuf, &prefixColonPos)) { if (fQNameBuf.isEmpty()) emitError(XMLErrs::ExpectedElementName); else emitError(XMLErrs::InvalidElementName, fQNameBuf.getRawBuffer()); fReaderMgr.skipToChar(chOpenAngle); return false; } // See if its the root element const bool isRoot = fElemStack.isEmpty(); // Skip any whitespace after the name fReaderMgr.skipPastSpaces(); // First we have to do the rawest attribute scan. We don't do any // normalization of them at all, since we don't know yet what type they // might be (since we need the element decl in order to do that.) const XMLCh* qnameRawBuf = fQNameBuf.getRawBuffer(); bool isEmpty; XMLSize_t attCount = rawAttrScan ( qnameRawBuf , *fRawAttrList , isEmpty ); // save the contentleafname and currentscope before addlevel, for later use ContentLeafNameTypeVector* cv = 0; XMLContentModel* cm = 0; unsigned int currentScope = Grammar::TOP_LEVEL_SCOPE; bool laxThisOne = false; if (!isRoot) { // schema validator will have correct type if validating SchemaElementDecl* tempElement = (SchemaElementDecl*) fElemStack.topElement()->fThisElement; SchemaElementDecl::ModelTypes modelType = tempElement->getModelType(); ComplexTypeInfo *currType = 0; if (fValidate) { currType = ((SchemaValidator*)fValidator)->getCurrentTypeInfo(); if (currType) modelType = (SchemaElementDecl::ModelTypes)currType->getContentType(); else // something must have gone wrong modelType = SchemaElementDecl::Any; } else { currType = tempElement->getComplexTypeInfo(); } if ((modelType == SchemaElementDecl::Mixed_Simple) || (modelType == SchemaElementDecl::Mixed_Complex) || (modelType == SchemaElementDecl::Children)) { cm = currType->getContentModel(); cv = cm->getContentLeafNameTypeVector(); currentScope = fElemStack.getCurrentScope(); } else if (modelType == SchemaElementDecl::Any) { laxThisOne = true; } } // Now, since we might have to update the namespace map for this element, // but we don't have the element decl yet, we just tell the element stack // to expand up to get ready. XMLSize_t elemDepth = fElemStack.addLevel(); fElemStack.setValidationFlag(fValidate); fElemStack.setPrefixColonPos(prefixColonPos); // Check if there is any external schema location specified, and if we are at root, // go through them first before scanning those specified in the instance document if (isRoot && (fExternalSchemaLocation || fExternalNoNamespaceSchemaLocation)) { if (fExternalSchemaLocation) parseSchemaLocation(fExternalSchemaLocation, true); if (fExternalNoNamespaceSchemaLocation) resolveSchemaGrammar(fExternalNoNamespaceSchemaLocation, XMLUni::fgZeroLenString, true); } // Make an initial pass through the list and find any xmlns attributes or // schema attributes. if (attCount) scanRawAttrListforNameSpaces(attCount); // Resolve the qualified name to a URI and name so that we can look up // the element decl for this element. We have now update the prefix to // namespace map so we should get the correct element now. unsigned int uriId = resolveQNameWithColon ( qnameRawBuf , fPrefixBuf , ElemStack::Mode_Element , prefixColonPos ); //if schema, check if we should lax or skip the validation of this element bool parentValidation = fValidate; if (cv) { QName element(fPrefixBuf.getRawBuffer(), &qnameRawBuf[prefixColonPos + 1], uriId, fMemoryManager); // elementDepth will be > 0, as cv is only constructed if element is not // root. laxThisOne = laxElementValidation(&element, cv, cm, elemDepth - 1); } // Look up the element now in the grammar. This will get us back a // generic element decl object. We tell him to fault one in if he does // not find it. XMLElementDecl* elemDecl = 0; bool wasAdded = false; const XMLCh* nameRawBuf = &qnameRawBuf[prefixColonPos + 1]; const XMLCh* original_uriStr = fGrammar->getTargetNamespace(); if (uriId != fEmptyNamespaceId) { // Check in current grammar before switching if necessary elemDecl = fGrammar->getElemDecl ( uriId , nameRawBuf , qnameRawBuf , currentScope ); if(!elemDecl) { // look in the list of undeclared elements, as would have been done // before we made grammars stateless: elemDecl = fElemNonDeclPool->getByKey(nameRawBuf, uriId, currentScope); } // this is initialized correctly only if there is // no element decl. The other uses in this scope will only // be encountered if there continues to be no element decl--which // implies that this will have been initialized correctly. unsigned int orgGrammarUri = uriId; if (!elemDecl && ( orgGrammarUri = fURIStringPool->getId(original_uriStr)) != uriId) { // not found, switch to the specified grammar const XMLCh* uriStr = getURIText(uriId); bool errorCondition = !switchGrammar(uriStr) && fValidate; if (errorCondition && !laxThisOne) { fValidator->emitError ( XMLValid::GrammarNotFound ,uriStr ); } elemDecl = fGrammar->getElemDecl ( uriId , nameRawBuf , qnameRawBuf , currentScope ); } if (!elemDecl && currentScope != Grammar::TOP_LEVEL_SCOPE) { // if not found, then it may be a reference, try TOP_LEVEL_SCOPE elemDecl = fGrammar->getElemDecl ( uriId , nameRawBuf , qnameRawBuf , Grammar::TOP_LEVEL_SCOPE ); if(!elemDecl) { // look in the list of undeclared elements, as would have been done // before we made grammars stateless: elemDecl = fElemNonDeclPool->getByKey(nameRawBuf, uriId, (int)Grammar::TOP_LEVEL_SCOPE); } if(!elemDecl) { // still not found in specified uri // try emptyNamespace see if element should be un-qualified. // Use a temp variable until we decide this is the case XMLElementDecl* tempElemDecl = fGrammar->getElemDecl ( fEmptyNamespaceId , nameRawBuf , qnameRawBuf , currentScope ); if (tempElemDecl && tempElemDecl->getCreateReason() != XMLElementDecl::JustFaultIn && fValidate) { fValidator->emitError ( XMLValid::ElementNotUnQualified , qnameRawBuf ); elemDecl = tempElemDecl; } } } if (!elemDecl) { // still not found, fault this in and issue error later // switch back to original grammar first (if necessary) if(orgGrammarUri != uriId) { switchGrammar(original_uriStr); } elemDecl = new (fMemoryManager) SchemaElementDecl ( fPrefixBuf.getRawBuffer() , nameRawBuf , uriId , SchemaElementDecl::Any , Grammar::TOP_LEVEL_SCOPE , fMemoryManager ); elemDecl->setId(fElemNonDeclPool->put((void*)elemDecl->getBaseName(), uriId, currentScope, (SchemaElementDecl*)elemDecl)); wasAdded = true; } } else if (!elemDecl) { //the element has no prefix, //thus it is either a non-qualified element defined in current targetNS //or an element that is defined in the globalNS //try unqualifed first elemDecl = fGrammar->getElemDecl ( uriId , nameRawBuf , qnameRawBuf , currentScope ); if(!elemDecl) { // look in the list of undeclared elements, as would have been done // before we made grammars stateless: elemDecl = fElemNonDeclPool->getByKey(nameRawBuf, uriId, currentScope); } // this is initialized correctly only if there is // no element decl. The other uses in this scope will only // be encountered if there continues to be no element decl--which // implies that this will have been initialized correctly. unsigned int orgGrammarUri = fEmptyNamespaceId; if (!elemDecl && (orgGrammarUri = fURIStringPool->getId(original_uriStr)) != fEmptyNamespaceId) { //not found, switch grammar and try globalNS bool errorCondition = !switchGrammar(XMLUni::fgZeroLenString) && fValidate; if (errorCondition && !laxThisOne) { fValidator->emitError ( XMLValid::GrammarNotFound , XMLUni::fgZeroLenString ); } elemDecl = fGrammar->getElemDecl ( uriId , nameRawBuf , qnameRawBuf , currentScope ); } if (!elemDecl && currentScope != Grammar::TOP_LEVEL_SCOPE) { // if not found, then it may be a reference, try TOP_LEVEL_SCOPE elemDecl = fGrammar->getElemDecl ( uriId , nameRawBuf , qnameRawBuf , Grammar::TOP_LEVEL_SCOPE ); if(!elemDecl) { // look in the list of undeclared elements, as would have been done // before we made grammars stateless: elemDecl = fElemNonDeclPool->getByKey(nameRawBuf, uriId, (int)Grammar::TOP_LEVEL_SCOPE); } if (!elemDecl && orgGrammarUri != fEmptyNamespaceId) { // still Not found in specified uri // go to original Grammar again to see if element needs to be fully qualified. bool errorCondition = !switchGrammar(original_uriStr) && fValidate; if (errorCondition && !laxThisOne) { fValidator->emitError ( XMLValid::GrammarNotFound ,original_uriStr ); } // Use a temp variable until we decide this is the case XMLElementDecl* tempElemDecl = fGrammar->getElemDecl ( orgGrammarUri , nameRawBuf , qnameRawBuf , currentScope ); if (tempElemDecl && tempElemDecl->getCreateReason() != XMLElementDecl::JustFaultIn && fValidate) { fValidator->emitError ( XMLValid::ElementNotQualified , qnameRawBuf ); elemDecl=tempElemDecl; } } } if (!elemDecl) { // still not found, fault this in and issue error later // switch back to original grammar first (if necessary) if(orgGrammarUri != fEmptyNamespaceId) { switchGrammar(original_uriStr); } elemDecl = new (fMemoryManager) SchemaElementDecl ( fPrefixBuf.getRawBuffer() , nameRawBuf , uriId , SchemaElementDecl::Any , Grammar::TOP_LEVEL_SCOPE , fMemoryManager ); elemDecl->setId(fElemNonDeclPool->put((void*)elemDecl->getBaseName(), uriId, currentScope, (SchemaElementDecl*)elemDecl)); wasAdded = true; } } // this info needed for DOMTypeInfo fPSVIElemContext.fErrorOccurred = false; // We do something different here according to whether we found the // element or not. bool bXsiTypeSet= (fValidator)?((SchemaValidator*)fValidator)->getIsXsiTypeSet():false; if (wasAdded) { if (laxThisOne && !bXsiTypeSet) { fValidate = false; fElemStack.setValidationFlag(fValidate); } // If validating then emit an error if (fValidate) { // This is to tell the reuse Validator that this element was // faulted-in, was not an element in the grammar pool originally elemDecl->setCreateReason(XMLElementDecl::JustFaultIn); if(!bXsiTypeSet) { fValidator->emitError ( XMLValid::ElementNotDefined , elemDecl->getFullName() ); fPSVIElemContext.fErrorOccurred = true; } } } else { // If its not marked declared and validating, then emit an error if (!elemDecl->isDeclared()) { if(elemDecl->getCreateReason() == XMLElementDecl::NoReason) { if(!bXsiTypeSet) fPSVIElemContext.fErrorOccurred = true; } if (laxThisOne) { fValidate = false; fElemStack.setValidationFlag(fValidate); } if (fValidate && !bXsiTypeSet) { fValidator->emitError ( XMLValid::ElementNotDefined , elemDecl->getFullName() ); } } } // Now we can update the element stack to set the current element // decl. We expanded the stack above, but couldn't store the element // decl because we didn't know it yet. fElemStack.setElement(elemDecl, fReaderMgr.getCurrentReaderNum()); fElemStack.setCurrentURI(uriId); if (isRoot) { fRootGrammar = fGrammar; fRootElemName = XMLString::replicate(qnameRawBuf, fMemoryManager); } if (fPSVIHandler) { fPSVIElemContext.fElemDepth++; if (elemDecl->isDeclared()) { fPSVIElemContext.fNoneValidationDepth = fPSVIElemContext.fElemDepth; } else { fPSVIElemContext.fFullValidationDepth = fPSVIElemContext.fElemDepth; /****** * While we report an error for historical reasons, this should * actually result in lax assessment - NG. if (isRoot && fValidate) fPSVIElemContext.fErrorOccurred = true; ******/ } } // Validate the element if (fValidate) { fValidator->validateElement(elemDecl); if (((SchemaValidator*) fValidator)->getErrorOccurred()) fPSVIElemContext.fErrorOccurred = true; } // squirrel away the element's QName, so that we can do an efficient // end-tag match fElemStack.setCurrentSchemaElemName(fQNameBuf.getRawBuffer()); ComplexTypeInfo* typeinfo = (fValidate) ? ((SchemaValidator*)fValidator)->getCurrentTypeInfo() : ((SchemaElementDecl*) elemDecl)->getComplexTypeInfo(); if (typeinfo) { currentScope = typeinfo->getScopeDefined(); // switch grammar if the typeinfo has a different grammar (happens when there is xsi:type) XMLCh* typeName = typeinfo->getTypeName(); const int comma = XMLString::indexOf(typeName, chComma); if (comma > 0) { XMLBuffer prefixBuf(comma+1, fMemoryManager); prefixBuf.append(typeName, comma); const XMLCh* uriStr = prefixBuf.getRawBuffer(); bool errorCondition = !switchGrammar(uriStr) && fValidate; if (errorCondition && !laxThisOne) { fValidator->emitError ( XMLValid::GrammarNotFound , prefixBuf.getRawBuffer() ); } } else if (comma == 0) { bool errorCondition = !switchGrammar(XMLUni::fgZeroLenString) && fValidate; if (errorCondition && !laxThisOne) { fValidator->emitError ( XMLValid::GrammarNotFound , XMLUni::fgZeroLenString ); } } } fElemStack.setCurrentScope(currentScope); // Set element next state if (elemDepth >= fElemStateSize) { resizeElemState(); } fElemState[elemDepth] = 0; fElemLoopState[elemDepth] = 0; fElemStack.setCurrentGrammar(fGrammar); // If this is the first element and we are validating, check the root // element. if (!isRoot && parentValidation) { // If the element stack is not empty, then add this element as a // child of the previous top element. If its empty, this is the root // elem and is not the child of anything. fElemStack.addChild(elemDecl->getElementName(), true); } // PSVI handling: must reset this, even if no attributes... if(getPSVIHandler()) fPSVIAttrList->reset(); // Now lets get the fAttrList filled in. This involves faulting in any // defaulted and fixed attributes and normalizing the values of any that // we got explicitly. // // We update the attCount value with the total number of attributes, but // it goes in with the number of values we got during the raw scan of // explictly provided attrs above. attCount = buildAttList(*fRawAttrList, attCount, elemDecl, *fAttrList); if(attCount) { // clean up after ourselves: // clear the map used to detect duplicate attributes fUndeclaredAttrRegistry->removeAll(); } // activate identity constraints if (toCheckIdentityConstraint()) { fICHandler->activateIdentityConstraint ( (SchemaElementDecl*) elemDecl , (int) elemDepth , uriId , fPrefixBuf.getRawBuffer() , *fAttrList , attCount , fValidationContext ); } // Since the element may have default values, call start tag now regardless if it is empty or not // If we have a document handler, then tell it about this start tag if (fDocHandler) { fDocHandler->startElement ( *elemDecl , uriId , fPrefixBuf.getRawBuffer() , *fAttrList , attCount , false , isRoot ); } // may be where we output something... // if we have a PSVIHandler, now's the time to call // its handleAttributesPSVI method: if(fPSVIHandler) { QName *eName = elemDecl->getElementName(); fPSVIHandler->handleAttributesPSVI ( eName->getLocalPart() , fURIStringPool->getValueForId(eName->getURI()) , fPSVIAttrList ); } // If empty, validate content right now if we are validating and then // pop the element stack top. Else, we have to update the current stack // top's namespace mapping elements. if (isEmpty) { // Pop the element stack back off since it'll never be used now fElemStack.popTop(); // reset current type info DatatypeValidator* psviMemberType = 0; if (fGrammarType == Grammar::SchemaGrammarType) { if (fValidate && elemDecl->isDeclared()) { fPSVIElemContext.fCurrentTypeInfo = ((SchemaValidator*) fValidator)->getCurrentTypeInfo(); if(!fPSVIElemContext.fCurrentTypeInfo) fPSVIElemContext.fCurrentDV = ((SchemaValidator*) fValidator)->getCurrentDatatypeValidator(); else fPSVIElemContext.fCurrentDV = 0; if(fPSVIHandler) { fPSVIElemContext.fNormalizedValue = ((SchemaValidator*) fValidator)->getNormalizedValue(); if (XMLString::equals(fPSVIElemContext.fNormalizedValue, XMLUni::fgZeroLenString)) fPSVIElemContext.fNormalizedValue = 0; } } else { fPSVIElemContext.fCurrentDV = 0; fPSVIElemContext.fCurrentTypeInfo = 0; fPSVIElemContext.fNormalizedValue = 0; } } // If validating, then insure that its legal to have no content if (fValidate) { XMLSize_t failure; bool res = fValidator->checkContent(elemDecl, 0, 0, &failure); if (!res) { // REVISIT: in the case of xsi:type, this may // return the wrong string... fValidator->emitError ( XMLValid::ElementNotValidForContent , elemDecl->getFullName() , elemDecl->getFormattedContentModel() ); } if (((SchemaValidator*) fValidator)->getErrorOccurred()) fPSVIElemContext.fErrorOccurred = true; // note that if we're empty, won't be a current DV else { if (fPSVIHandler) { fPSVIElemContext.fIsSpecified = ((SchemaValidator*) fValidator)->getIsElemSpecified(); if(fPSVIElemContext.fIsSpecified) fPSVIElemContext.fNormalizedValue = ((SchemaElementDecl *)elemDecl)->getDefaultValue(); } if (fPSVIElemContext.fCurrentDV && fPSVIElemContext.fCurrentDV->getType() == DatatypeValidator::Union) psviMemberType = fValidationContext->getValidatingMemberType(); } // call matchers and de-activate context if (toCheckIdentityConstraint()) { fICHandler->deactivateContext ( (SchemaElementDecl *) elemDecl , fContent.getRawBuffer() , fValidationContext , fPSVIElemContext.fCurrentDV ); } } else if (fGrammarType == Grammar::SchemaGrammarType) { ((SchemaValidator*)fValidator)->resetNillable(); } if (fPSVIHandler) { endElementPSVI ( (SchemaElementDecl*)elemDecl, psviMemberType ); } // If we have a doc handler, tell it about the end tag if (fDocHandler) { fDocHandler->endElement ( *elemDecl , uriId , isRoot , fPrefixBuf.getRawBuffer() ); } // If the elem stack is empty, then it was an empty root if (isRoot) gotData = false; else { // Restore the grammar fGrammar = fElemStack.getCurrentGrammar(); fGrammarType = fGrammar->getGrammarType(); fValidator->setGrammar(fGrammar); // Restore the validation flag fValidate = fElemStack.getValidationFlag(); } } else // not empty { // send a partial element psvi if (fPSVIHandler) { ComplexTypeInfo* curTypeInfo = 0; DatatypeValidator* curDV = 0; XSTypeDefinition* typeDef = 0; if (fValidate && elemDecl->isDeclared()) { curTypeInfo = ((SchemaValidator*) fValidator)->getCurrentTypeInfo(); if (curTypeInfo) { typeDef = (XSTypeDefinition*) fModel->getXSObject(curTypeInfo); } else { curDV = ((SchemaValidator*) fValidator)->getCurrentDatatypeValidator(); if (curDV) { typeDef = (XSTypeDefinition*) fModel->getXSObject(curDV); } } } fPSVIElement->reset ( PSVIElement::VALIDITY_NOTKNOWN , PSVIElement::VALIDATION_NONE , fRootElemName , ((SchemaValidator*) fValidator)->getIsElemSpecified() , (elemDecl->isDeclared()) ? (XSElementDeclaration*) fModel->getXSObject(elemDecl) : 0 , typeDef , 0 //memberType , fModel , ((SchemaElementDecl*)elemDecl)->getDefaultValue() , 0 , 0 , 0 ); fPSVIHandler->handlePartialElementPSVI ( elemDecl->getBaseName() , fURIStringPool->getValueForId(elemDecl->getURI()) , fPSVIElement ); } fErrorStack->push(fPSVIElemContext.fErrorOccurred); } return true; } // --------------------------------------------------------------------------- // SGXMLScanner: Grammar preparsing // --------------------------------------------------------------------------- Grammar* SGXMLScanner::loadGrammar(const InputSource& src , const short grammarType , const bool toCache) { Grammar* loadedGrammar = 0; ReaderMgrResetType resetReaderMgr(&fReaderMgr, &ReaderMgr::reset); try { fGrammarResolver->cacheGrammarFromParse(false); // if the new grammar has to be cached, better use the already cached // grammars, or the an exception will be thrown when caching an already // cached grammar fGrammarResolver->useCachedGrammarInParse(toCache); fRootGrammar = 0; if (fValScheme == Val_Auto) { fValidate = true; } // Reset some status flags fInException = false; fStandalone = false; fErrorCount = 0; fHasNoDTD = true; fSeeXsi = false; if (grammarType == Grammar::SchemaGrammarType) { loadedGrammar = loadXMLSchemaGrammar(src, toCache); } } // NOTE: // // In all of the error processing below, the emitError() call MUST come // before the flush of the reader mgr, or it will fail because it tries // to find out the position in the XML source of the error. catch(const XMLErrs::Codes) { // This is a 'first failure' exception, so fall through } catch(const XMLValid::Codes) { // This is a 'first fatal error' type exit, so fall through } catch(const XMLException& excToCatch) { // Emit the error and catch any user exception thrown from here. Make // sure in all cases we flush the reader manager. fInException = true; try { if (excToCatch.getErrorType() == XMLErrorReporter::ErrType_Warning) emitError ( XMLErrs::XMLException_Warning , excToCatch.getCode() , excToCatch.getMessage() ); else if (excToCatch.getErrorType() >= XMLErrorReporter::ErrType_Fatal) emitError ( XMLErrs::XMLException_Fatal , excToCatch.getCode() , excToCatch.getMessage() ); else emitError ( XMLErrs::XMLException_Error , excToCatch.getCode() , excToCatch.getMessage() ); } catch(const OutOfMemoryException&) { // This is a special case for out-of-memory // conditions, because resetting the ReaderMgr // can be problematic. resetReaderMgr.release(); throw; } } catch(const OutOfMemoryException&) { // This is a special case for out-of-memory // conditions, because resetting the ReaderMgr // can be problematic. resetReaderMgr.release(); throw; } return loadedGrammar; } void SGXMLScanner::resetCachedGrammar () { fCachedSchemaInfoList->removeAll (); } // --------------------------------------------------------------------------- // SGXMLScanner: Private helper methods // --------------------------------------------------------------------------- // This method handles the common initialization, to avoid having to do // it redundantly in multiple constructors. void SGXMLScanner::commonInit() { // Create the element state array fElemState = (unsigned int*) fMemoryManager->allocate ( fElemStateSize * sizeof(unsigned int) ); //new unsigned int[fElemStateSize]; fElemLoopState = (unsigned int*) fMemoryManager->allocate ( fElemStateSize * sizeof(unsigned int) ); //new unsigned int[fElemStateSize]; // And we need one for the raw attribute scan. This just stores key/ // value string pairs (prior to any processing.) fRawAttrList = new (fMemoryManager) RefVectorOf(32, true, fMemoryManager); fRawAttrColonList = (int*) fMemoryManager->allocate ( fRawAttrColonListSize * sizeof(int) ); // Create the Validator and init them fSchemaValidator = new (fMemoryManager) SchemaValidator(0, fMemoryManager); initValidator(fSchemaValidator); // Create IdentityConstraint info fICHandler = new (fMemoryManager) IdentityConstraintHandler(this, fMemoryManager); // Add the default entity entries for the character refs that must always // be present. fEntityTable = new (fMemoryManager) ValueHashTableOf(11, fMemoryManager); fEntityTable->put((void*) XMLUni::fgAmp, chAmpersand); fEntityTable->put((void*) XMLUni::fgLT, chOpenAngle); fEntityTable->put((void*) XMLUni::fgGT, chCloseAngle); fEntityTable->put((void*) XMLUni::fgQuot, chDoubleQuote); fEntityTable->put((void*) XMLUni::fgApos, chSingleQuote); fElemNonDeclPool = new (fMemoryManager) RefHash3KeysIdPool(29, true, 128, fMemoryManager); fAttDefRegistry = new (fMemoryManager) RefHashTableOf ( 131, false, fMemoryManager ); fUndeclaredAttrRegistry = new (fMemoryManager) Hash2KeysSetOf(7, fMemoryManager); fPSVIAttrList = new (fMemoryManager) PSVIAttributeList(fMemoryManager); fSchemaInfoList = new (fMemoryManager) RefHash2KeysTableOf(29, fMemoryManager); fCachedSchemaInfoList = new (fMemoryManager) RefHash2KeysTableOf(29, fMemoryManager); if (fValidator) { if (!fValidator->handlesSchema()) ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Gen_NoSchemaValidator, fMemoryManager); } else { fValidator = fSchemaValidator; } } void SGXMLScanner::cleanUp() { fMemoryManager->deallocate(fElemState); //delete [] fElemState; fMemoryManager->deallocate(fElemLoopState); //delete [] fElemLoopState; delete fSchemaGrammar; delete fEntityTable; delete fRawAttrList; fMemoryManager->deallocate(fRawAttrColonList); delete fSchemaValidator; delete fICHandler; delete fElemNonDeclPool; delete fAttDefRegistry; delete fUndeclaredAttrRegistry; delete fPSVIAttrList; if (fPSVIElement) delete fPSVIElement; if (fErrorStack) delete fErrorStack; delete fSchemaInfoList; delete fCachedSchemaInfoList; } void SGXMLScanner::resizeElemState() { unsigned int newSize = fElemStateSize * 2; unsigned int* newElemState = (unsigned int*) fMemoryManager->allocate ( newSize * sizeof(unsigned int) ); //new unsigned int[newSize]; unsigned int* newElemLoopState = (unsigned int*) fMemoryManager->allocate ( newSize * sizeof(unsigned int) ); //new unsigned int[newSize]; // Copy the existing values unsigned int index = 0; for (; index < fElemStateSize; index++) { newElemState[index] = fElemState[index]; newElemLoopState[index] = fElemLoopState[index]; } for (; index < newSize; index++) newElemLoopState[index] = newElemState[index] = 0; // Delete the old array and udpate our members fMemoryManager->deallocate(fElemState); //delete [] fElemState; fMemoryManager->deallocate(fElemLoopState); //delete [] fElemLoopState; fElemState = newElemState; fElemLoopState = newElemLoopState; fElemStateSize = newSize; } void SGXMLScanner::resizeRawAttrColonList() { unsigned int newSize = fRawAttrColonListSize * 2; int* newRawAttrColonList = (int*) fMemoryManager->allocate ( newSize * sizeof(int) ); //new int[newSize]; // Copy the existing values unsigned int index = 0; for (; index < fRawAttrColonListSize; index++) newRawAttrColonList[index] = fRawAttrColonList[index]; // Delete the old array and udpate our members fMemoryManager->deallocate(fRawAttrColonList); //delete [] fRawAttrColonList; fRawAttrColonList = newRawAttrColonList; fRawAttrColonListSize = newSize; } // This method is called from scanStartTag() to build up the list of // XMLAttr objects that will be passed out in the start tag callout. We // get the key/value pairs from the raw scan of explicitly provided attrs, // which have not been normalized. And we get the element declaration from // which we will get any defaulted or fixed attribute defs and add those // in as well. XMLSize_t SGXMLScanner::buildAttList(const RefVectorOf& providedAttrs , const XMLSize_t attCount , XMLElementDecl* elemDecl , RefVectorOf& toFill) { // Ask the element to clear the 'provided' flag on all of the att defs // that it owns, and to return us a boolean indicating whether it has // any defs. DatatypeValidator *currDV = 0; ComplexTypeInfo *currType = 0; if (fValidate) { currType = ((SchemaValidator*)fValidator)->getCurrentTypeInfo(); if (!currType) { currDV = ((SchemaValidator*)fValidator)->getCurrentDatatypeValidator(); } } const bool hasDefs = (currType && fValidate) ? currType->hasAttDefs() : elemDecl->hasAttDefs(); fElemCount++; // If there are no expliclitily provided attributes and there are no // defined attributes for the element, the we don't have anything to do. // So just return zero in this case. if (!hasDefs && !attCount) return 0; // Keep up with how many attrs we end up with total XMLSize_t retCount = 0; // And get the current size of the output vector. This lets us use // existing elements until we fill it, then start adding new ones. const XMLSize_t curAttListSize = toFill.size(); // We need a buffer into which raw scanned attribute values will be // normalized. XMLBufBid bbNormal(&fBufMgr); XMLBuffer& normBuf = bbNormal.getBuffer(); XMLBufBid bbPrefix(&fBufMgr); XMLBuffer& prefixBuf = bbPrefix.getBuffer(); // Loop through our explicitly provided attributes, which are in the raw // scanned form, and build up XMLAttr objects. XMLSize_t index; const XMLCh* prefPtr, *suffPtr; for (index = 0; index < attCount; index++) { PSVIItem::VALIDITY_STATE attrValid = PSVIItem::VALIDITY_VALID; PSVIItem::ASSESSMENT_TYPE attrAssessed = PSVIItem::VALIDATION_FULL; const KVStringPair* curPair = providedAttrs.elementAt(index); // We have to split the name into its prefix and name parts. Then // we map the prefix to its URI. const XMLCh* const namePtr = curPair->getKey(); const int colonInd = fRawAttrColonList[index]; unsigned int uriId; if (colonInd != -1) { prefixBuf.set(namePtr, colonInd); prefPtr = prefixBuf.getRawBuffer(); suffPtr = namePtr + colonInd + 1; // Map the prefix to a URI id uriId = resolvePrefix(prefPtr, ElemStack::Mode_Attribute); } else { // No colon, so we just have a name with no prefix prefPtr = XMLUni::fgZeroLenString; suffPtr = namePtr; // an empty prefix is always the empty namespace, when dealing with attributes uriId = fEmptyNamespaceId; } // If the uri comes back as the xmlns or xml URI or its just a name // and that name is 'xmlns', then we handle it specially. So set a // boolean flag that lets us quickly below know which we are dealing // with. const bool isNSAttr = (uriId == fEmptyNamespaceId)? XMLString::equals(suffPtr, XMLUni::fgXMLNSString) : (uriId == fXMLNSNamespaceId || XMLString::equals(getURIText(uriId), SchemaSymbols::fgURI_XSI)); // If its not a special case namespace attr of some sort, then we // do normal checking and processing. XMLAttDef::AttTypes attType = XMLAttDef::CData; DatatypeValidator *attrValidator = 0; PSVIAttribute *psviAttr = 0; bool otherXSI = false; if (isNSAttr) { if(!fUndeclaredAttrRegistry->putIfNotPresent(suffPtr, uriId)) { emitError ( XMLErrs::AttrAlreadyUsedInSTag , namePtr , elemDecl->getFullName() ); fPSVIElemContext.fErrorOccurred = true; } else { bool ValueValidate = false; bool tokenizeBuffer = false; if (uriId == fXMLNSNamespaceId) { attrValidator = DatatypeValidatorFactory::getBuiltInRegistry()->get(SchemaSymbols::fgDT_ANYURI); } else if (XMLString::equals(getURIText(uriId), SchemaSymbols::fgURI_XSI)) { if (XMLString::equals(suffPtr, SchemaSymbols::fgATT_NILL)) { attrValidator = DatatypeValidatorFactory::getBuiltInRegistry()->get(SchemaSymbols::fgDT_BOOLEAN); ValueValidate = true; } else if (XMLString::equals(suffPtr, SchemaSymbols::fgXSI_SCHEMALOCATION)) { // use anyURI as the validator // tokenize the data and use the anyURI data for each piece attrValidator = DatatypeValidatorFactory::getBuiltInRegistry()->get(SchemaSymbols::fgDT_ANYURI); //We should validate each value in the schema location however //this lead to a performance degradation of around 4%. Since //the first value of each pair needs to match what is in the //schema document and the second value needs to be valid in //order to open the document we won't validate it. Need to //do performance analysis of the anyuri datatype. //ValueValidate = true; ValueValidate = false; tokenizeBuffer = true; } else if (XMLString::equals(suffPtr, SchemaSymbols::fgXSI_NONAMESPACESCHEMALOCATION)) { attrValidator = DatatypeValidatorFactory::getBuiltInRegistry()->get(SchemaSymbols::fgDT_ANYURI); //We should validate this value however //this lead to a performance degradation of around 4%. Since //the value needs to be valid in //order to open the document we won't validate it. Need to //do performance analysis of the anyuri datatype. //ValueValidate = true; ValueValidate = false; } else if (XMLString::equals(suffPtr, SchemaSymbols::fgXSI_TYPE)) { attrValidator = DatatypeValidatorFactory::getBuiltInRegistry()->get(SchemaSymbols::fgDT_QNAME); ValueValidate = true; } else { otherXSI = true; } } if (!otherXSI) { normalizeAttRawValue ( namePtr , curPair->getValue() , normBuf ); if (fValidate && attrValidator && ValueValidate) { ((SchemaValidator*) fValidator)->normalizeWhiteSpace(attrValidator, normBuf.getRawBuffer(), normBuf, true); ValidationContext* const theContext = getValidationContext(); if (theContext) { try { if (tokenizeBuffer) { XMLStringTokenizer tokenizer(normBuf.getRawBuffer(), fMemoryManager); while (tokenizer.hasMoreTokens()) { attrValidator->validate( tokenizer.nextToken(), theContext, fMemoryManager); } } else { attrValidator->validate( normBuf.getRawBuffer(), theContext, fMemoryManager); } } catch (const XMLException& idve) { fValidator->emitError (XMLValid::DatatypeError, idve.getCode(), idve.getMessage()); } } } if(getPSVIHandler() && fGrammarType == Grammar::SchemaGrammarType) { psviAttr = fPSVIAttrList->getPSVIAttributeToFill(suffPtr, fURIStringPool->getValueForId(uriId)); XSSimpleTypeDefinition *validatingType = (attrValidator) ? (XSSimpleTypeDefinition *)fModel->getXSObject(attrValidator) : 0; // no attribute declarations for these... psviAttr->reset( fRootElemName , PSVIItem::VALIDITY_NOTKNOWN , PSVIItem::VALIDATION_NONE , validatingType , 0 , 0 , false , 0 , attrValidator ); } } } } if (!isNSAttr || otherXSI) { // Some checking for attribute wild card first (for schema) bool laxThisOne = false; bool skipThisOne = false; XMLAttDef* attDefForWildCard = 0; XMLAttDef* attDef = 0; if (fGrammarType == Grammar::SchemaGrammarType) { //retrieve the att def SchemaAttDef* attWildCard = 0; if (currType) { attDef = currType->getAttDef(suffPtr, uriId); attWildCard = currType->getAttWildCard(); } else if (!currDV) { // check explicitly-set wildcard attWildCard = ((SchemaElementDecl*)elemDecl)->getAttWildCard(); } // if not found or faulted in - check for a matching wildcard attribute // if no matching wildcard attribute, check (un)qualifed cases and flag // appropriate errors if (!attDef || (attDef->getCreateReason() == XMLAttDef::JustFaultIn)) { if (attWildCard) { //if schema, see if we should lax or skip the validation of this attribute if (anyAttributeValidation(attWildCard, uriId, skipThisOne, laxThisOne)) { if(!skipThisOne) { SchemaGrammar* sGrammar = (SchemaGrammar*) fGrammarResolver->getGrammar(getURIText(uriId)); if (sGrammar && sGrammar->getGrammarType() == Grammar::SchemaGrammarType) { RefHashTableOf* attRegistry = sGrammar->getAttributeDeclRegistry(); if (attRegistry) { attDefForWildCard = attRegistry->get(suffPtr); } } } } } else if (currType) { // not found, see if the attDef should be qualified or not if (uriId == fEmptyNamespaceId) { attDef = currType->getAttDef(suffPtr, fURIStringPool->getId(fGrammar->getTargetNamespace())); if (fValidate && attDef && attDef->getCreateReason() != XMLAttDef::JustFaultIn) { // the attribute should be qualified fValidator->emitError ( XMLValid::AttributeNotQualified , attDef->getFullName() ); fPSVIElemContext.fErrorOccurred = true; if (getPSVIHandler()) { attrValid = PSVIItem::VALIDITY_INVALID; } } } else { attDef = currType->getAttDef(suffPtr, fEmptyNamespaceId); if (fValidate && attDef && attDef->getCreateReason() != XMLAttDef::JustFaultIn) { // the attribute should be qualified fValidator->emitError ( XMLValid::AttributeNotUnQualified , attDef->getFullName() ); fPSVIElemContext.fErrorOccurred = true; if (getPSVIHandler()) { attrValid = PSVIItem::VALIDITY_INVALID; } } } } } } // now need to prepare for duplicate detection if(attDef) { unsigned int *curCountPtr = fAttDefRegistry->get(attDef); if(!curCountPtr) { curCountPtr = getNewUIntPtr(); *curCountPtr = fElemCount; fAttDefRegistry->put(attDef, curCountPtr); } else if(*curCountPtr < fElemCount) *curCountPtr = fElemCount; else { emitError ( XMLErrs::AttrAlreadyUsedInSTag , attDef->getFullName() , elemDecl->getFullName() ); fPSVIElemContext.fErrorOccurred = true; } } else { if(!fUndeclaredAttrRegistry->putIfNotPresent(suffPtr, uriId)) { emitError ( XMLErrs::AttrAlreadyUsedInSTag , namePtr , elemDecl->getFullName() ); fPSVIElemContext.fErrorOccurred = true; } } // if we've found either an attDef or an attDefForWildCard, // then we're doing full validation and it may still be valid. if(!attDef && !attDefForWildCard) { if(!laxThisOne && !skipThisOne) { fPSVIElemContext.fErrorOccurred = true; } if(getPSVIHandler()) { if(!laxThisOne && !skipThisOne) { attrValid = PSVIItem::VALIDITY_INVALID; } else if(laxThisOne) { attrValid = PSVIItem::VALIDITY_NOTKNOWN; attrAssessed = PSVIItem::VALIDATION_PARTIAL; } else { attrValid = PSVIItem::VALIDITY_NOTKNOWN; attrAssessed = PSVIItem::VALIDATION_NONE; } } } bool errorCondition = fValidate && !attDefForWildCard && !attDef; if (errorCondition && !skipThisOne && !laxThisOne) { // // Its not valid for this element, so issue an error if we are // validating. // XMLBufBid bbMsg(&fBufMgr); XMLBuffer& bufMsg = bbMsg.getBuffer(); if (uriId != fEmptyNamespaceId) { XMLBufBid bbURI(&fBufMgr); XMLBuffer& bufURI = bbURI.getBuffer(); getURIText(uriId, bufURI); bufMsg.append(chOpenCurly); bufMsg.append(bufURI.getRawBuffer()); bufMsg.append(chCloseCurly); } bufMsg.append(suffPtr); fValidator->emitError ( XMLValid::AttNotDefinedForElement , bufMsg.getRawBuffer() , elemDecl->getFullName() ); } // Now normalize the raw value since we have the attribute type. We // don't care about the return status here. If it failed, an error // was issued, which is all we care about. if (attDefForWildCard) { normalizeAttValue( attDefForWildCard, namePtr, curPair->getValue(), normBuf ); // If we found an attdef for this one, then lets validate it. const XMLCh* xsNormalized = normBuf.getRawBuffer(); DatatypeValidator* tempDV = ((SchemaAttDef*) attDefForWildCard)->getDatatypeValidator(); if (tempDV && tempDV->getWSFacet() != DatatypeValidator::PRESERVE) { // normalize the attribute according to schema whitespace facet ((SchemaValidator*) fValidator)->normalizeWhiteSpace(tempDV, xsNormalized, fWSNormalizeBuf, true); xsNormalized = fWSNormalizeBuf.getRawBuffer(); if (fNormalizeData && fValidate) { normBuf.set(xsNormalized); } } if (fValidate ) { fValidator->validateAttrValue( attDefForWildCard, xsNormalized, false, elemDecl ); attrValidator = ((SchemaValidator *)fValidator)->getMostRecentAttrValidator(); if(((SchemaValidator *)fValidator)->getErrorOccurred()) { fPSVIElemContext.fErrorOccurred = true; if(getPSVIHandler()) attrValid = PSVIItem::VALIDITY_INVALID; } } else { // no decl; default DOMTypeInfo to anySimpleType attrValidator = DatatypeValidatorFactory::getBuiltInRegistry()->get(SchemaSymbols::fgDT_ANYSIMPLETYPE); } // Save the type for later use attType = attDefForWildCard->getType(); } else { normalizeAttValue( attDef, namePtr, curPair->getValue(), normBuf ); // If we found an attdef for this one, then lets validate it. if (attDef) { const XMLCh* xsNormalized = normBuf.getRawBuffer(); if (fGrammarType == Grammar::SchemaGrammarType) { DatatypeValidator* tempDV = ((SchemaAttDef*) attDef)->getDatatypeValidator(); if (tempDV && tempDV->getWSFacet() != DatatypeValidator::PRESERVE) { // normalize the attribute according to schema whitespace facet ((SchemaValidator*) fValidator)->normalizeWhiteSpace(tempDV, xsNormalized, fWSNormalizeBuf, true); xsNormalized = fWSNormalizeBuf.getRawBuffer(); if (fNormalizeData && fValidate && !skipThisOne) { normBuf.set(xsNormalized); } } } if (fValidate && !skipThisOne) { fValidator->validateAttrValue( attDef, xsNormalized, false, elemDecl ); attrValidator = ((SchemaValidator *)fValidator)->getMostRecentAttrValidator(); if(((SchemaValidator *)fValidator)->getErrorOccurred()) { fPSVIElemContext.fErrorOccurred = true; if(getPSVIHandler()) attrValid = PSVIItem::VALIDITY_INVALID; } } else { attrValidator = DatatypeValidatorFactory::getBuiltInRegistry()->get(SchemaSymbols::fgDT_ANYSIMPLETYPE); } } else { attrValidator = DatatypeValidatorFactory::getBuiltInRegistry()->get(SchemaSymbols::fgDT_ANYSIMPLETYPE); } // Save the type for later use if (attDef) { attType = attDef->getType(); } } // now fill in the PSVIAttributes entry for this attribute: if(getPSVIHandler()) { psviAttr = fPSVIAttrList->getPSVIAttributeToFill(suffPtr, fURIStringPool->getValueForId(uriId)); SchemaAttDef *actualAttDef = 0; if(attDef) actualAttDef = (SchemaAttDef *)attDef; else if (attDefForWildCard) actualAttDef = (SchemaAttDef *)attDefForWildCard; if(actualAttDef) { XSAttributeDeclaration *attrDecl = (XSAttributeDeclaration *)fModel->getXSObject(actualAttDef); DatatypeValidator * attrDataType = actualAttDef->getDatatypeValidator(); XSSimpleTypeDefinition *validatingType = (XSSimpleTypeDefinition *)fModel->getXSObject(attrDataType); if(attrValid != PSVIItem::VALIDITY_VALID) { psviAttr->reset ( fRootElemName , attrValid , attrAssessed , validatingType , 0 , actualAttDef->getValue() , false , attrDecl , 0 ); } else { XSSimpleTypeDefinition *memberType = 0; if(validatingType->getVariety() == XSSimpleTypeDefinition::VARIETY_UNION) memberType = (XSSimpleTypeDefinition *)fModel->getXSObject(attrValidator); psviAttr->reset ( fRootElemName , attrValid , attrAssessed , validatingType , memberType , actualAttDef->getValue() , false , attrDecl , (memberType)?attrValidator:attrDataType ); } } else { psviAttr->reset ( fRootElemName , attrValid , attrAssessed , 0 , 0 , 0 , false , 0 , 0 ); } } } // Add this attribute to the attribute list that we use to pass them // to the handler. We reuse its existing elements but expand it as // required. XMLAttr* curAttr; if (retCount >= curAttListSize) { curAttr = new (fMemoryManager) XMLAttr ( uriId , suffPtr , prefPtr , normBuf.getRawBuffer() , attType , true , fMemoryManager ); toFill.addElement(curAttr); } else { curAttr = toFill.elementAt(retCount); curAttr->set ( uriId , suffPtr , prefPtr , normBuf.getRawBuffer() , attType ); curAttr->setSpecified(true); } if(psviAttr) psviAttr->setValue(curAttr->getValue()); // Bump the count of attrs in the list retCount++; } // Now, if there are any attributes declared by this element, let's // go through them and make sure that any required ones are provided, // and fault in any fixed ones and defaulted ones that are not provided // literally. if (hasDefs) { // Check after all specified attrs are scanned // (1) report error for REQUIRED attrs that are missing (V_TAGc) // (2) add default attrs if missing (FIXED and NOT_FIXED) XMLAttDefList& attDefList = getAttDefList(currType, elemDecl); for(XMLSize_t i=0; igetDefaultType(); unsigned int *attCountPtr = fAttDefRegistry->get(curDef); if (!attCountPtr || *attCountPtr < fElemCount) { // did not occur // note that since there is no attribute information // item present, there is no PSVI infoset to augment here *except* // that the element is invalid //the attribute is not provided if (fValidate) { // If we are validating and its required, then an error if ((defType == XMLAttDef::Required) || (defType == XMLAttDef::Required_And_Fixed) ) { fValidator->emitError ( XMLValid::RequiredAttrNotProvided , curDef->getFullName() ); fPSVIElemContext.fErrorOccurred = true; } else if ((defType == XMLAttDef::Default) || (defType == XMLAttDef::Fixed) ) { if (fStandalone && curDef->isExternal()) { // XML 1.0 Section 2.9 // Document is standalone, so attributes must not be defaulted. fValidator->emitError(XMLValid::NoDefAttForStandalone, curDef->getFullName(), elemDecl->getFullName()); } } } // Fault in the value if needed, and bump the att count. if ((defType == XMLAttDef::Default) || (defType == XMLAttDef::Fixed)) { // Let the validator pass judgement on the attribute value if (fValidate) { fValidator->validateAttrValue ( curDef , curDef->getValue() , false , elemDecl ); } XMLAttr* curAtt; if (retCount >= curAttListSize) { curAtt = new (fMemoryManager) XMLAttr(fMemoryManager); fValidator->faultInAttr(*curAtt, *curDef); fAttrList->addElement(curAtt); } else { curAtt = fAttrList->elementAt(retCount); fValidator->faultInAttr(*curAtt, *curDef); } // Indicate it was not explicitly specified and bump count curAtt->setSpecified(false); retCount++; if(getPSVIHandler()) { QName *attName = ((SchemaAttDef *)curDef)->getAttName(); PSVIAttribute *defAttrToFill = fPSVIAttrList->getPSVIAttributeToFill ( attName->getLocalPart(), fURIStringPool->getValueForId( attName->getURI()) ); XSAttributeDeclaration *defAttrDecl = (XSAttributeDeclaration *)fModel->getXSObject((void *)curDef); DatatypeValidator * attrDataType = ((SchemaAttDef *)curDef)->getDatatypeValidator(); XSSimpleTypeDefinition *defAttrType = (XSSimpleTypeDefinition*)fModel->getXSObject(attrDataType); // would have occurred during validation of default value if(((SchemaValidator *)fValidator)->getErrorOccurred()) { defAttrToFill->reset( fRootElemName , PSVIItem::VALIDITY_INVALID , PSVIItem::VALIDATION_FULL , defAttrType , 0 , curDef->getValue() , true , defAttrDecl , 0 ); } else { XSSimpleTypeDefinition *defAttrMemberType = 0; if(defAttrType->getVariety() == XSSimpleTypeDefinition::VARIETY_UNION) { defAttrMemberType = (XSSimpleTypeDefinition *)fModel->getXSObject ( ((SchemaValidator*)fValidator)->getMostRecentAttrValidator() ); } defAttrToFill->reset ( fRootElemName , PSVIItem::VALIDITY_VALID , PSVIItem::VALIDATION_FULL , defAttrType , defAttrMemberType , curDef->getValue() , true , defAttrDecl , (defAttrMemberType)?((SchemaValidator *)fValidator)->getMostRecentAttrValidator():attrDataType ); } defAttrToFill->setValue(curDef->getValue()); } } } else if (attCountPtr) { //attribute is provided // (schema) report error for PROHIBITED attrs that are present (V_TAGc) if (defType == XMLAttDef::Prohibited && fValidate) { fValidator->emitError ( XMLValid::ProhibitedAttributePresent , curDef->getFullName() ); fPSVIElemContext.fErrorOccurred = true; if (getPSVIHandler()) { QName *attQName = ((SchemaAttDef *)curDef)->getAttName(); // bad luck... PSVIAttribute *prohibitedAttr = fPSVIAttrList->getAttributePSVIByName ( attQName->getLocalPart(), fURIStringPool->getValueForId(attQName->getURI()) ); prohibitedAttr->updateValidity(PSVIItem::VALIDITY_INVALID); } } } } } return retCount; } // This method will take a raw attribute value and normalize it according to // the rules of the attribute type. It will put the resulting value into the // passed buffer. // // This code assumes that escaped characters in the original value (via char // refs) are prefixed by a 0xFFFF character. This is because some characters // are legal if escaped only. And some escape chars are not subject to // normalization rules. bool SGXMLScanner::normalizeAttValue( const XMLAttDef* const attDef , const XMLCh* const attName , const XMLCh* const value , XMLBuffer& toFill) { // A simple state value for a whitespace processing state machine enum States { InWhitespace , InContent }; // Get the type and name const XMLAttDef::AttTypes type = (attDef) ?attDef->getType() :XMLAttDef::CData; // Assume its going to go fine, and empty the target buffer in preperation bool retVal = true; toFill.reset(); // Get attribute def - to check to see if it's declared externally or not bool isAttExternal = (attDef) ?attDef->isExternal() :false; // Loop through the chars of the source value and normalize it according // to the type. States curState = InContent; bool firstNonWS = false; XMLCh nextCh; const XMLCh* srcPtr = value; if (type == XMLAttDef::CData || type > XMLAttDef::Notation) { while (*srcPtr) { // Get the next character from the source. We have to watch for // escaped characters (which are indicated by a 0xFFFF value followed // by the char that was escaped.) nextCh = *srcPtr; // Do we have an escaped character ? if (nextCh == 0xFFFF) { nextCh = *++srcPtr; } else if ( (nextCh <= 0x0D) && (nextCh == 0x09 || nextCh == 0x0A || nextCh == 0x0D) ) { // Check Validity Constraint for Standalone document declaration // XML 1.0, Section 2.9 if (fStandalone && fValidate && isAttExternal) { // Can't have a standalone document declaration of "yes" if attribute // values are subject to normalisation fValidator->emitError(XMLValid::NoAttNormForStandalone, attName); } nextCh = chSpace; } else if (nextCh == chOpenAngle) { // If its not escaped, then make sure its not a < character, which is // not allowed in attribute values. emitError(XMLErrs::BracketInAttrValue, attName); retVal = false; } // Add this char to the target buffer toFill.append(nextCh); // And move up to the next character in the source srcPtr++; } } else { while (*srcPtr) { // Get the next character from the source. We have to watch for // escaped characters (which are indicated by a 0xFFFF value followed // by the char that was escaped.) nextCh = *srcPtr; // Do we have an escaped character ? if (nextCh == 0xFFFF) { nextCh = *++srcPtr; } else if (nextCh == chOpenAngle) { // If its not escaped, then make sure its not a < character, which is // not allowed in attribute values. emitError(XMLErrs::BracketInAttrValue, attName); retVal = false; } if (curState == InWhitespace) { if (!fReaderMgr.getCurrentReader()->isWhitespace(nextCh)) { if (firstNonWS) toFill.append(chSpace); curState = InContent; firstNonWS = true; } else { srcPtr++; continue; } } else if (curState == InContent) { if (fReaderMgr.getCurrentReader()->isWhitespace(nextCh)) { curState = InWhitespace; srcPtr++; // Check Validity Constraint for Standalone document declaration // XML 1.0, Section 2.9 if (fStandalone && fValidate && isAttExternal) { if (!firstNonWS || (nextCh != chSpace) || (!*srcPtr) || fReaderMgr.getCurrentReader()->isWhitespace(*srcPtr)) { // Can't have a standalone document declaration of "yes" if attribute // values are subject to normalisation fValidator->emitError(XMLValid::NoAttNormForStandalone, attName); } } continue; } firstNonWS = true; } // Add this char to the target buffer toFill.append(nextCh); // And move up to the next character in the source srcPtr++; } } return retVal; } // This method will just normalize the input value as CDATA without // any standalone checking. bool SGXMLScanner::normalizeAttRawValue( const XMLCh* const attrName , const XMLCh* const value , XMLBuffer& toFill) { // Assume its going to go fine, and empty the target buffer in preperation bool retVal = true; toFill.reset(); // Loop through the chars of the source value and normalize it according // to the type. bool escaped; XMLCh nextCh; const XMLCh* srcPtr = value; while (*srcPtr) { // Get the next character from the source. We have to watch for // escaped characters (which are indicated by a 0xFFFF value followed // by the char that was escaped.) nextCh = *srcPtr; escaped = (nextCh == 0xFFFF); if (escaped) nextCh = *++srcPtr; // If its not escaped, then make sure its not a < character, which is // not allowed in attribute values. if (!escaped && (*srcPtr == chOpenAngle)) { emitError(XMLErrs::BracketInAttrValue, attrName); retVal = false; } if (!escaped) { // NOTE: Yes this is a little redundant in that a 0x20 is // replaced with an 0x20. But its faster to do this (I think) // than checking for 9, A, and D separately. if (fReaderMgr.getCurrentReader()->isWhitespace(nextCh)) nextCh = chSpace; } // Add this char to the target buffer toFill.append(nextCh); // And move up to the next character in the source srcPtr++; } return retVal; } // This method will reset the scanner data structures, and related plugged // in stuff, for a new scan session. We get the input source for the primary // XML entity, create the reader for it, and push it on the stack so that // upon successful return from here we are ready to go. void SGXMLScanner::scanReset(const InputSource& src) { // This call implicitly tells us that we are going to reuse the scanner // if it was previously used. So tell the validator to reset itself. // // But, if the fUseCacheGrammar flag is set, then don't reset it. // // NOTE: The ReaderMgr is flushed on the way out, because that is // required to insure that files are closed. fGrammarResolver->cacheGrammarFromParse(fToCacheGrammar); fGrammarResolver->useCachedGrammarInParse(fUseCachedGrammar); // Clear transient schema info list. // fSchemaInfoList->removeAll (); // fModel may need updating, as fGrammarResolver could have cleaned it if(fModel && getPSVIHandler()) fModel = fGrammarResolver->getXSModel(); // Create dummy schema grammar if (!fSchemaGrammar) { fSchemaGrammar = new (fGrammarPoolMemoryManager) SchemaGrammar(fGrammarPoolMemoryManager); } fGrammar = fSchemaGrammar; fGrammarType = Grammar::DTDGrammarType; fRootGrammar = 0; fValidator->setGrammar(fGrammar); if (fValidatorFromUser) { ((SchemaValidator*) fValidator)->setErrorReporter(fErrorReporter); ((SchemaValidator*) fValidator)->setGrammarResolver(fGrammarResolver); ((SchemaValidator*) fValidator)->setExitOnFirstFatal(fExitOnFirstFatal); } // Reset validation fValidate = (fValScheme == Val_Always) ? true : false; // And for all installed handlers, send reset events. This gives them // a chance to flush any cached data. if (fDocHandler) fDocHandler->resetDocument(); if (fEntityHandler) fEntityHandler->resetEntities(); if (fErrorReporter) fErrorReporter->resetErrors(); // Clear out the id reference list resetValidationContext(); // Reset the Root Element Name fMemoryManager->deallocate(fRootElemName);//delete [] fRootElemName; fRootElemName = 0; // Reset IdentityConstraints if (fICHandler) fICHandler->reset(); // Reset the element stack, and give it the latest ids for the special // URIs it has to know about. fElemStack.reset ( fEmptyNamespaceId , fUnknownNamespaceId , fXMLNamespaceId , fXMLNSNamespaceId ); if (!fSchemaNamespaceId) fSchemaNamespaceId = fURIStringPool->addOrFind(SchemaSymbols::fgURI_XSI); // Reset some status flags fInException = false; fStandalone = false; fErrorCount = 0; fHasNoDTD = true; fSeeXsi = false; fDoNamespaces = true; fDoSchema = true; // Reset PSVI context // Note that we always need this around for DOMTypeInfo if (!fPSVIElement) fPSVIElement = new (fMemoryManager) PSVIElement(fMemoryManager); if (!fErrorStack) { fErrorStack = new (fMemoryManager) ValueStackOf(8, fMemoryManager); } else { fErrorStack->removeAllElements(); } resetPSVIElemContext(); // Reset the validators fSchemaValidator->reset(); fSchemaValidator->setErrorReporter(fErrorReporter); fSchemaValidator->setExitOnFirstFatal(fExitOnFirstFatal); fSchemaValidator->setGrammarResolver(fGrammarResolver); if (fValidatorFromUser) fValidator->reset(); // Handle the creation of the XML reader object for this input source. // This will provide us with transcoding and basic lexing services. XMLReader* newReader = fReaderMgr.createReader ( src , true , XMLReader::RefFrom_NonLiteral , XMLReader::Type_General , XMLReader::Source_External , fCalculateSrcOfs , fLowWaterMark ); if (!newReader) { if (src.getIssueFatalErrorIfNotFound()) ThrowXMLwithMemMgr1(RuntimeException, XMLExcepts::Scan_CouldNotOpenSource, src.getSystemId(), fMemoryManager); else ThrowXMLwithMemMgr1(RuntimeException, XMLExcepts::Scan_CouldNotOpenSource_Warning, src.getSystemId(), fMemoryManager); } // Push this read onto the reader manager fReaderMgr.pushReader(newReader, 0); // and reset security-related things if necessary: if(fSecurityManager != 0) { fEntityExpansionLimit = fSecurityManager->getEntityExpansionLimit(); fEntityExpansionCount = 0; } fElemCount = 0; if(fUIntPoolRowTotal >= 32) { // 8 KB tied up with validating attributes... fAttDefRegistry->removeAll(); recreateUIntPool(); } else { // note that this will implicitly reset the values of the hashtables, // though their buckets will still be tied up resetUIntPool(); } fUndeclaredAttrRegistry->removeAll(); } // This method is called between markup in content. It scans for character // data that is sent to the document handler. It watches for any markup // characters that would indicate that the character data has ended. It also // handles expansion of general and character entities. // // sendData() is a local static helper for this method which handles some // code that must be done in three different places here. void SGXMLScanner::sendCharData(XMLBuffer& toSend) { // If no data in the buffer, then nothing to do if (toSend.isEmpty()) return; // We do different things according to whether we are validating or // not. If not, its always just characters; else, it depends on the // current element's content model. if (fValidate) { // Get the raw data we need for the callback const XMLCh* rawBuf = toSend.getRawBuffer(); const XMLSize_t len = toSend.getLen(); // Get the character data opts for the current element XMLElementDecl::CharDataOpts charOpts = XMLElementDecl::AllCharData; // And see if the current element is a 'Children' style content model ComplexTypeInfo *currType = ((SchemaValidator*)fValidator)->getCurrentTypeInfo(); if(currType) { SchemaElementDecl::ModelTypes modelType = (SchemaElementDecl::ModelTypes) currType->getContentType(); if(modelType == SchemaElementDecl::Children || modelType == SchemaElementDecl::ElementOnlyEmpty) charOpts = XMLElementDecl::SpacesOk; else if(modelType == SchemaElementDecl::Empty) charOpts = XMLElementDecl::NoCharData; } // should not be necessary once PSVI method on element decls // are removed if (charOpts == XMLElementDecl::NoCharData) { // They definitely cannot handle any type of char data fValidator->emitError(XMLValid::NoCharDataInCM); if (getPSVIHandler()) { // REVISIT: // PSVIElement->setValidity(PSVIItem::VALIDITY_INVALID); } } else if (fReaderMgr.getCurrentReader()->isAllSpaces(rawBuf, len)) { // Its all spaces. So, if they can take spaces, then send it // as ignorable whitespace. If they can handle any char data // send it as characters. if (charOpts == XMLElementDecl::SpacesOk) { if (fDocHandler) fDocHandler->ignorableWhitespace(rawBuf, len, false); } else if (charOpts == XMLElementDecl::AllCharData) { XMLSize_t xsLen; const XMLCh* xsNormalized; DatatypeValidator* tempDV = ((SchemaValidator*) fValidator)->getCurrentDatatypeValidator(); if (tempDV && tempDV->getWSFacet() != DatatypeValidator::PRESERVE) { // normalize the character according to schema whitespace facet ((SchemaValidator*) fValidator)->normalizeWhiteSpace(tempDV, rawBuf, fWSNormalizeBuf); xsNormalized = fWSNormalizeBuf.getRawBuffer(); xsLen = fWSNormalizeBuf.getLen(); } else { xsNormalized = rawBuf; xsLen = len; } // tell the schema validation about the character data for checkContent later ((SchemaValidator*)fValidator)->setDatatypeBuffer(xsNormalized); // call all active identity constraints if (toCheckIdentityConstraint() && fICHandler->getMatcherCount()) { fContent.append(xsNormalized, xsLen); } if (fDocHandler) { if (fNormalizeData) { fDocHandler->docCharacters(xsNormalized, xsLen, false); } else { fDocHandler->docCharacters(rawBuf, len, false); } } } } else { // If they can take any char data, then send it. Otherwise, they // can only handle whitespace and can't handle this stuff so // issue an error. if (charOpts == XMLElementDecl::AllCharData) { XMLSize_t xsLen; const XMLCh *xsNormalized; DatatypeValidator* tempDV = ((SchemaValidator*) fValidator)->getCurrentDatatypeValidator(); if (tempDV && tempDV->getWSFacet() != DatatypeValidator::PRESERVE) { ((SchemaValidator*) fValidator)->normalizeWhiteSpace(tempDV, rawBuf, fWSNormalizeBuf); xsNormalized = fWSNormalizeBuf.getRawBuffer(); xsLen = fWSNormalizeBuf.getLen(); } else { xsNormalized = rawBuf; xsLen = len; } // tell the schema validation about the character data for checkContent later ((SchemaValidator*)fValidator)->setDatatypeBuffer(xsNormalized); // call all active identity constraints if (toCheckIdentityConstraint() && fICHandler->getMatcherCount()) { fContent.append(xsNormalized, xsLen); } if (fDocHandler) { if (fNormalizeData) { fDocHandler->docCharacters(xsNormalized, xsLen, false); } else { fDocHandler->docCharacters(rawBuf, len, false); } } } else { fValidator->emitError(XMLValid::NoCharDataInCM); if (getPSVIHandler()) { // REVISIT: // PSVIElement->setValidity(PSVIItem::VALIDITY_INVALID); } } } } else { // call all active identity constraints if (toCheckIdentityConstraint() && fICHandler->getMatcherCount()) fContent.append(toSend.getRawBuffer(), toSend.getLen()); // Always assume its just char data if not validating if (fDocHandler) fDocHandler->docCharacters(toSend.getRawBuffer(), toSend.getLen(), false); } // Reset buffer toSend.reset(); } // This method is called with a key/value string pair that represents an // xmlns="yyy" or xmlns:xxx="yyy" attribute. This method will update the // current top of the element stack based on this data. We know that when // we get here, that it is one of these forms, so we don't bother confirming // it. // // But we have to ensure // 1. xxx is not xmlns // 2. if xxx is xml, then yyy must match XMLUni::fgXMLURIName, and vice versa // 3. yyy is not XMLUni::fgXMLNSURIName // 4. if xxx is not null, then yyy cannot be an empty string. void SGXMLScanner::updateNSMap(const XMLCh* const attrName , const XMLCh* const attrValue) { updateNSMap(attrName, attrValue, XMLString::indexOf(attrName, chColon)); } void SGXMLScanner::updateNSMap(const XMLCh* const attrName , const XMLCh* const attrValue , const int colonOfs) { // We need a buffer to normalize the attribute value into XMLBufBid bbNormal(&fBufMgr); XMLBuffer& normalBuf = bbNormal.getBuffer(); // Normalize the value into the passed buffer. In this case, we don't // care about the return value. An error was issued for the error, which // is all we care about here. normalizeAttRawValue(attrName, attrValue, normalBuf); XMLCh* namespaceURI = normalBuf.getRawBuffer(); // We either have the default prefix (""), or we point it into the attr // name parameter. Note that the xmlns is not the prefix we care about // here. To us, the 'prefix' is really the local part of the attrName // parameter. // // Check 1. xxx is not xmlns // 2. if xxx is xml, then yyy must match XMLUni::fgXMLURIName, and vice versa // 3. yyy is not XMLUni::fgXMLNSURIName // 4. if xxx is not null, then yyy cannot be an empty string. const XMLCh* prefPtr = XMLUni::fgZeroLenString; if (colonOfs != -1) { prefPtr = &attrName[colonOfs + 1]; if (XMLString::equals(prefPtr, XMLUni::fgXMLNSString)) emitError(XMLErrs::NoUseOfxmlnsAsPrefix); else if (XMLString::equals(prefPtr, XMLUni::fgXMLString)) { if (!XMLString::equals(namespaceURI, XMLUni::fgXMLURIName)) emitError(XMLErrs::PrefixXMLNotMatchXMLURI); } if (!namespaceURI) emitError(XMLErrs::NoEmptyStrNamespace, attrName); else if(!*namespaceURI && fXMLVersion == XMLReader::XMLV1_0) emitError(XMLErrs::NoEmptyStrNamespace, attrName); } if (XMLString::equals(namespaceURI, XMLUni::fgXMLNSURIName)) emitError(XMLErrs::NoUseOfxmlnsURI); else if (XMLString::equals(namespaceURI, XMLUni::fgXMLURIName)) { if (!XMLString::equals(prefPtr, XMLUni::fgXMLString)) emitError(XMLErrs::XMLURINotMatchXMLPrefix); } // Ok, we have to get the unique id for the attribute value, which is the // URI that this value should be mapped to. The validator has the // namespace string pool, so we ask him to find or add this new one. Then // we ask the element stack to add this prefix to URI Id mapping. fElemStack.addPrefix ( prefPtr , fURIStringPool->addOrFind(namespaceURI) ); } void SGXMLScanner::scanRawAttrListforNameSpaces(XMLSize_t attCount) { // Make an initial pass through the list and find any xmlns attributes or // schema attributes. // When we find one, send it off to be used to update the element stack's // namespace mappings. for (XMLSize_t index = 0; index < attCount; index++) { // each attribute has the prefix:suffix="value" const KVStringPair* curPair = fRawAttrList->elementAt(index); const XMLCh* rawPtr = curPair->getKey(); // If either the key begins with "xmlns:" or its just plain // "xmlns", then use it to update the map. if (!XMLString::compareNString(rawPtr, XMLUni::fgXMLNSColonString, 6) || XMLString::equals(rawPtr, XMLUni::fgXMLNSString)) { const XMLCh* valuePtr = curPair->getValue(); updateNSMap(rawPtr, valuePtr, fRawAttrColonList[index]); // if the schema URI is seen in the the valuePtr, set the boolean seeXsi if (XMLString::equals(valuePtr, SchemaSymbols::fgURI_XSI)) { fSeeXsi = true; } } } // walk through the list again to deal with "xsi:...." if (fSeeXsi) { // Schema Xsi Type yyyy (e.g. xsi:type="yyyyy") XMLBufBid bbXsi(&fBufMgr); XMLBuffer& fXsiType = bbXsi.getBuffer(); for (XMLSize_t index = 0; index < attCount; index++) { // each attribute has the prefix:suffix="value" const KVStringPair* curPair = fRawAttrList->elementAt(index); const XMLCh* rawPtr = curPair->getKey(); const XMLCh* prefPtr; int colonInd = fRawAttrColonList[index]; if (colonInd != -1) { fURIBuf.set(rawPtr, colonInd); prefPtr = fURIBuf.getRawBuffer(); } else { prefPtr = XMLUni::fgZeroLenString; } // if schema URI has been seen, scan for the schema location and uri // and resolve the schema grammar; or scan for schema type if (resolvePrefix(prefPtr, ElemStack::Mode_Attribute) == fSchemaNamespaceId) { const XMLCh* valuePtr = curPair->getValue(); const XMLCh* suffPtr = &rawPtr[colonInd + 1]; if (XMLString::equals(suffPtr, SchemaSymbols::fgXSI_SCHEMALOCATION)) parseSchemaLocation(valuePtr); else if (XMLString::equals(suffPtr, SchemaSymbols::fgXSI_NONAMESPACESCHEMALOCATION)) resolveSchemaGrammar(valuePtr, XMLUni::fgZeroLenString); if( fValidator && fValidator->handlesSchema() ) { if (XMLString::equals(suffPtr, SchemaSymbols::fgXSI_TYPE)) { // normalize the attribute according to schema whitespace facet DatatypeValidator* tempDV = DatatypeValidatorFactory::getBuiltInRegistry()->get(SchemaSymbols::fgDT_QNAME); ((SchemaValidator*) fValidator)->normalizeWhiteSpace(tempDV, valuePtr, fXsiType, true); } else if (XMLString::equals(suffPtr, SchemaSymbols::fgATT_NILL)) { // normalize the attribute according to schema whitespace facet XMLBuffer& fXsiNil = fBufMgr.bidOnBuffer(); DatatypeValidator* tempDV = DatatypeValidatorFactory::getBuiltInRegistry()->get(SchemaSymbols::fgDT_BOOLEAN); ((SchemaValidator*) fValidator)->normalizeWhiteSpace(tempDV, valuePtr, fXsiNil, true); if(XMLString::equals(fXsiNil.getRawBuffer(), SchemaSymbols::fgATTVAL_TRUE)) ((SchemaValidator*)fValidator)->setNillable(true); else if(XMLString::equals(fXsiNil.getRawBuffer(), SchemaSymbols::fgATTVAL_FALSE)) ((SchemaValidator*)fValidator)->setNillable(false); else emitError(XMLErrs::InvalidAttValue, fXsiNil.getRawBuffer(), valuePtr); fBufMgr.releaseBuffer(fXsiNil); } } } } if (fValidator && fValidator->handlesSchema()) { if (!fXsiType.isEmpty()) { int colonPos = -1; unsigned int uriId = resolveQName ( fXsiType.getRawBuffer() , fPrefixBuf , ElemStack::Mode_Element , colonPos ); ((SchemaValidator*)fValidator)->setXsiType(fPrefixBuf.getRawBuffer(), fXsiType.getRawBuffer() + colonPos + 1, uriId); } } } } void SGXMLScanner::parseSchemaLocation(const XMLCh* const schemaLocationStr, bool ignoreLoadSchema) { BaseRefVectorOf* schemaLocation = XMLString::tokenizeString(schemaLocationStr, fMemoryManager); Janitor > janLoc(schemaLocation); XMLSize_t size = schemaLocation->size(); if (size % 2 != 0 ) { emitError(XMLErrs::BadSchemaLocation); } else { // We need a buffer to normalize the attribute value into XMLBuffer normalBuf(1023, fMemoryManager); for(XMLSize_t i=0; ielementAt(i), normalBuf); resolveSchemaGrammar(schemaLocation->elementAt(i+1), normalBuf.getRawBuffer(), ignoreLoadSchema); } } } void SGXMLScanner::resolveSchemaGrammar(const XMLCh* const loc, const XMLCh* const uri, bool ignoreLoadSchema) { Grammar* grammar = 0; { XMLSchemaDescriptionImpl theSchemaDescription(uri, fMemoryManager); theSchemaDescription.setLocationHints(loc); grammar = fGrammarResolver->getGrammar(&theSchemaDescription); } // If multi-import is enabled, make sure the existing grammar came // from the import directive. Otherwise we may end up reloading // the same schema that came from the external grammar pool. Ideally, // we would move fSchemaInfoList to XMLGrammarPool so that it survives // the destruction of the scanner in which case we could rely on the // same logic we use to weed out duplicate schemas below. // if (!grammar || grammar->getGrammarType() == Grammar::DTDGrammarType || (getHandleMultipleImports() && ((XMLSchemaDescription*)grammar->getGrammarDescription())-> getContextType () == XMLSchemaDescription::CONTEXT_IMPORT)) { if (fLoadSchema || ignoreLoadSchema) { XSDDOMParser parser(0, fMemoryManager, 0); parser.setValidationScheme(XercesDOMParser::Val_Never); parser.setDoNamespaces(true); parser.setUserEntityHandler(fEntityHandler); parser.setUserErrorReporter(fErrorReporter); //Normalize sysId XMLBufBid nnSys(&fBufMgr); XMLBuffer& normalizedSysId = nnSys.getBuffer(); XMLString::removeChar(loc, 0xFFFF, normalizedSysId); const XMLCh* normalizedURI = normalizedSysId.getRawBuffer(); // Create a buffer for expanding the system id XMLBufBid bbSys(&fBufMgr); XMLBuffer& expSysId = bbSys.getBuffer(); // Allow the entity handler to expand the system id if they choose // to do so. InputSource* srcToFill = 0; if (fEntityHandler) { if (!fEntityHandler->expandSystemId(normalizedURI, expSysId)) expSysId.set(normalizedURI); ReaderMgr::LastExtEntityInfo lastInfo; fReaderMgr.getLastExtEntityInfo(lastInfo); XMLResourceIdentifier resourceIdentifier(XMLResourceIdentifier::SchemaGrammar, expSysId.getRawBuffer(), uri, XMLUni::fgZeroLenString, lastInfo.systemId, &fReaderMgr); srcToFill = fEntityHandler->resolveEntity(&resourceIdentifier); } else { expSysId.set(normalizedURI); } // If they didn't create a source via the entity handler, then we // have to create one on our own. if (!srcToFill) { if (fDisableDefaultEntityResolution) return; ReaderMgr::LastExtEntityInfo lastInfo; fReaderMgr.getLastExtEntityInfo(lastInfo); XMLURL urlTmp(fMemoryManager); if ((!urlTmp.setURL(lastInfo.systemId, expSysId.getRawBuffer(), urlTmp)) || (urlTmp.isRelative())) { if (!fStandardUriConformant) { XMLBufBid ddSys(&fBufMgr); XMLBuffer& resolvedSysId = ddSys.getBuffer(); XMLUri::normalizeURI(expSysId.getRawBuffer(), resolvedSysId); srcToFill = new (fMemoryManager) LocalFileInputSource ( lastInfo.systemId , resolvedSysId.getRawBuffer() , fMemoryManager ); } else ThrowXMLwithMemMgr(MalformedURLException, XMLExcepts::URL_MalformedURL, fMemoryManager); } else { if (fStandardUriConformant && urlTmp.hasInvalidChar()) ThrowXMLwithMemMgr(MalformedURLException, XMLExcepts::URL_MalformedURL, fMemoryManager); srcToFill = new (fMemoryManager) URLInputSource(urlTmp, fMemoryManager); } } // Put a janitor on the input source Janitor janSrc(srcToFill); // Check if this exact schema has already been seen. // const XMLCh* sysId = srcToFill->getSystemId(); unsigned int uriId = (uri && *uri) ? fURIStringPool->addOrFind(uri) : fEmptyNamespaceId; SchemaInfo* importSchemaInfo = 0; if (fUseCachedGrammar) importSchemaInfo = fCachedSchemaInfoList->get(sysId, uriId); if (!importSchemaInfo && !fToCacheGrammar) importSchemaInfo = fSchemaInfoList->get(sysId, uriId); if (importSchemaInfo) { // We haven't added any new grammars so it is safe to just // return. // return; } // Should just issue warning if the schema is not found bool flag = srcToFill->getIssueFatalErrorIfNotFound(); srcToFill->setIssueFatalErrorIfNotFound(false); parser.parse(*srcToFill); // Reset the InputSource srcToFill->setIssueFatalErrorIfNotFound(flag); if (parser.getSawFatal() && fExitOnFirstFatal) emitError(XMLErrs::SchemaScanFatalError); DOMDocument* document = parser.getDocument(); //Our Grammar if (document != 0) { DOMElement* root = document->getDocumentElement();// This is what we pass to TraverserSchema if (root != 0) { const XMLCh* newUri = root->getAttribute(SchemaSymbols::fgATT_TARGETNAMESPACE); bool newGrammar = false; if (!XMLString::equals(newUri, uri)) { if (fValidate || fValScheme == Val_Auto) { fValidator->emitError(XMLValid::WrongTargetNamespace, loc, uri); } grammar = fGrammarResolver->getGrammar(newUri); newGrammar = true; } if (!grammar || grammar->getGrammarType() == Grammar::DTDGrammarType || (getHandleMultipleImports() && ((XMLSchemaDescription*) grammar->getGrammarDescription())-> getContextType () == XMLSchemaDescription::CONTEXT_IMPORT)) { // If we switched namespace URI, recheck the schema info. // if (newGrammar) { unsigned int newUriId = (newUri && *newUri) ? fURIStringPool->addOrFind(newUri) : fEmptyNamespaceId; if (fUseCachedGrammar) importSchemaInfo = fCachedSchemaInfoList->get(sysId, newUriId); if (!importSchemaInfo && !fToCacheGrammar) importSchemaInfo = fSchemaInfoList->get(sysId, newUriId); if (importSchemaInfo) return; } // Since we have seen a grammar, set our validation flag // at this point if the validation scheme is auto if (fValScheme == Val_Auto && !fValidate) { fValidate = true; fElemStack.setValidationFlag(fValidate); } bool grammarFound = grammar && grammar->getGrammarType() == Grammar::SchemaGrammarType; SchemaGrammar* schemaGrammar; if (grammarFound) { schemaGrammar = (SchemaGrammar*) grammar; } else { schemaGrammar = new (fGrammarPoolMemoryManager) SchemaGrammar(fGrammarPoolMemoryManager); } XMLSchemaDescription* gramDesc = (XMLSchemaDescription*) schemaGrammar->getGrammarDescription(); gramDesc->setContextType(XMLSchemaDescription::CONTEXT_PREPARSE); gramDesc->setLocationHints(sysId); TraverseSchema traverseSchema ( root , fURIStringPool , schemaGrammar , fGrammarResolver , fUseCachedGrammar ? fCachedSchemaInfoList : fSchemaInfoList , fToCacheGrammar ? fCachedSchemaInfoList : fSchemaInfoList , this , sysId , fEntityHandler , fErrorReporter , fMemoryManager , grammarFound ); // Reset the now invalid schema roots in the collected // schema info entries. // { RefHash2KeysTableOfEnumerator i ( fToCacheGrammar ? fCachedSchemaInfoList : fSchemaInfoList); while (i.hasMoreElements ()) i.nextElement().resetRoot (); } if (fGrammarType == Grammar::DTDGrammarType) { fGrammar = schemaGrammar; fGrammarType = Grammar::SchemaGrammarType; fValidator->setGrammar(fGrammar); } if (fValidate) { // validate the Schema scan so far fValidator->preContentValidation(false); } } } } } } else { // Since we have seen a grammar, set our validation flag // at this point if the validation scheme is auto if (fValScheme == Val_Auto && !fValidate) { fValidate = true; fElemStack.setValidationFlag(fValidate); } // we have seen a schema, so set up the fValidator as fSchemaValidator if (fGrammarType == Grammar::DTDGrammarType) { fGrammar = grammar; fGrammarType = Grammar::SchemaGrammarType; fValidator->setGrammar(fGrammar); } } // update fModel; rely on the grammar resolver to do this // efficiently if(getPSVIHandler()) fModel = fGrammarResolver->getXSModel(); } InputSource* SGXMLScanner::resolveSystemId(const XMLCh* const sysId ,const XMLCh* const pubId) { //Normalize sysId XMLBufBid nnSys(&fBufMgr); XMLBuffer& normalizedSysId = nnSys.getBuffer(); XMLString::removeChar(sysId, 0xFFFF, normalizedSysId); const XMLCh* normalizedURI = normalizedSysId.getRawBuffer(); // Create a buffer for expanding the system id XMLBufBid bbSys(&fBufMgr); XMLBuffer& expSysId = bbSys.getBuffer(); // Allow the entity handler to expand the system id if they choose // to do so. InputSource* srcToFill = 0; if (fEntityHandler) { if (!fEntityHandler->expandSystemId(normalizedURI, expSysId)) expSysId.set(normalizedURI); ReaderMgr::LastExtEntityInfo lastInfo; fReaderMgr.getLastExtEntityInfo(lastInfo); XMLResourceIdentifier resourceIdentifier(XMLResourceIdentifier::ExternalEntity, expSysId.getRawBuffer(), 0, pubId, lastInfo.systemId, &fReaderMgr); srcToFill = fEntityHandler->resolveEntity(&resourceIdentifier); } else { expSysId.set(normalizedURI); } // If they didn't create a source via the entity handler, then we // have to create one on our own. if (!srcToFill) { if (fDisableDefaultEntityResolution) return 0; ReaderMgr::LastExtEntityInfo lastInfo; fReaderMgr.getLastExtEntityInfo(lastInfo); XMLURL urlTmp(fMemoryManager); if ((!urlTmp.setURL(lastInfo.systemId, expSysId.getRawBuffer(), urlTmp)) || (urlTmp.isRelative())) { if (!fStandardUriConformant) { XMLBufBid ddSys(&fBufMgr); XMLBuffer& resolvedSysId = ddSys.getBuffer(); XMLUri::normalizeURI(expSysId.getRawBuffer(), resolvedSysId); srcToFill = new (fMemoryManager) LocalFileInputSource ( lastInfo.systemId , resolvedSysId.getRawBuffer() , fMemoryManager ); } else ThrowXMLwithMemMgr(MalformedURLException, XMLExcepts::URL_MalformedURL, fMemoryManager); } else { if (fStandardUriConformant && urlTmp.hasInvalidChar()) ThrowXMLwithMemMgr(MalformedURLException, XMLExcepts::URL_MalformedURL, fMemoryManager); srcToFill = new (fMemoryManager) URLInputSource(urlTmp, fMemoryManager); } } return srcToFill; } // --------------------------------------------------------------------------- // SGXMLScanner: Private grammar preparsing methods // --------------------------------------------------------------------------- Grammar* SGXMLScanner::loadXMLSchemaGrammar(const InputSource& src, const bool toCache) { // Reset the validators fSchemaValidator->reset(); fSchemaValidator->setErrorReporter(fErrorReporter); fSchemaValidator->setExitOnFirstFatal(fExitOnFirstFatal); fSchemaValidator->setGrammarResolver(fGrammarResolver); if (fValidatorFromUser) fValidator->reset(); XSDDOMParser parser(0, fMemoryManager, 0); parser.setValidationScheme(XercesDOMParser::Val_Never); parser.setDoNamespaces(true); parser.setUserEntityHandler(fEntityHandler); parser.setUserErrorReporter(fErrorReporter); // Should just issue warning if the schema is not found bool flag = src.getIssueFatalErrorIfNotFound(); ((InputSource&) src).setIssueFatalErrorIfNotFound(false); parser.parse(src); // Reset the InputSource ((InputSource&) src).setIssueFatalErrorIfNotFound(flag); if (parser.getSawFatal() && fExitOnFirstFatal) emitError(XMLErrs::SchemaScanFatalError); DOMDocument* document = parser.getDocument(); //Our Grammar if (document != 0) { DOMElement* root = document->getDocumentElement();// This is what we pass to TraverserSchema if (root != 0) { const XMLCh* nsUri = root->getAttribute(SchemaSymbols::fgATT_TARGETNAMESPACE); Grammar* grammar = fGrammarResolver->getGrammar(nsUri); // Check if this exact schema has already been seen. // const XMLCh* sysId = src.getSystemId(); SchemaInfo* importSchemaInfo = 0; if (grammar) { if (nsUri && *nsUri) importSchemaInfo = fCachedSchemaInfoList->get(sysId, fURIStringPool->addOrFind(nsUri)); else importSchemaInfo = fCachedSchemaInfoList->get(sysId, fEmptyNamespaceId); } if (!importSchemaInfo) { bool grammarFound = grammar && grammar->getGrammarType() == Grammar::SchemaGrammarType && getHandleMultipleImports(); SchemaGrammar* schemaGrammar; if (grammarFound) schemaGrammar = (SchemaGrammar*) grammar; else schemaGrammar = new (fGrammarPoolMemoryManager) SchemaGrammar(fGrammarPoolMemoryManager); XMLSchemaDescription* gramDesc = (XMLSchemaDescription*) schemaGrammar->getGrammarDescription(); gramDesc->setContextType(XMLSchemaDescription::CONTEXT_PREPARSE); gramDesc->setLocationHints(sysId); TraverseSchema traverseSchema ( root , fURIStringPool , schemaGrammar , fGrammarResolver , fCachedSchemaInfoList , toCache ? fCachedSchemaInfoList : fSchemaInfoList , this , sysId , fEntityHandler , fErrorReporter , fMemoryManager , grammarFound ); grammar = schemaGrammar; // Reset the now invalid schema roots in the collected // schema info entries. // { RefHash2KeysTableOfEnumerator i ( toCache ? fCachedSchemaInfoList : fSchemaInfoList); while (i.hasMoreElements ()) i.nextElement().resetRoot (); } } if (fValidate) { // validate the Schema scan so far fValidator->setGrammar(grammar); fValidator->preContentValidation(false); } if (toCache) { fGrammarResolver->cacheGrammars(); } if(getPSVIHandler()) fModel = fGrammarResolver->getXSModel(); return grammar; } } return 0; } // --------------------------------------------------------------------------- // SGXMLScanner: Private parsing methods // --------------------------------------------------------------------------- // This method is called to do a raw scan of an attribute value. It does not // do normalization (since we don't know their types yet.) It just scans the // value and does entity expansion. // // End of entity's must be dealt with here. During DTD scan, they can come // from external entities. During content, they can come from any entity. // We just eat the end of entity and continue with our scan until we come // to the closing quote. If an unterminated value causes us to go through // subsequent entities, that will cause errors back in the calling code, // but there's little we can do about it here. bool SGXMLScanner::basicAttrValueScan(const XMLCh* const attrName, XMLBuffer& toFill) { // Reset the target buffer toFill.reset(); // Get the next char which must be a single or double quote XMLCh quoteCh; if (!fReaderMgr.skipIfQuote(quoteCh)) return false; // We have to get the current reader because we have to ignore closing // quotes until we hit the same reader again. const XMLSize_t curReader = fReaderMgr.getCurrentReaderNum(); // Loop until we get the attribute value. Note that we use a double // loop here to avoid the setup/teardown overhead of the exception // handler on every round. while (true) { try { while(true) { XMLCh nextCh = fReaderMgr.getNextChar(); if (nextCh != quoteCh) { if (nextCh != chAmpersand) { if ((nextCh < 0xD800) || (nextCh > 0xDFFF)) { // Its got to at least be a valid XML character if (!fReaderMgr.getCurrentReader()->isXMLChar(nextCh)) { if (nextCh == 0) ThrowXMLwithMemMgr(UnexpectedEOFException, XMLExcepts::Gen_UnexpectedEOF, fMemoryManager); XMLCh tmpBuf[9]; XMLString::binToText ( nextCh , tmpBuf , 8 , 16 , fMemoryManager ); emitError(XMLErrs::InvalidCharacterInAttrValue, attrName, tmpBuf); } } else // its a surrogate { // Deal with surrogate pairs // we expect a a leading surrogate. if (nextCh <= 0xDBFF) { toFill.append(nextCh); // process the trailing surrogate nextCh = fReaderMgr.getNextChar(); // it should be a trailing surrogate. if ((nextCh < 0xDC00) || (nextCh > 0xDFFF)) { emitError(XMLErrs::Expected2ndSurrogateChar); } } else { // Its a trailing surrogate, but we are not expecting it emitError(XMLErrs::Unexpected2ndSurrogateChar); } } } else // its a chAmpersand { // Check for an entity ref . We ignore the empty flag in // this one. bool escaped; XMLCh firstCh; XMLCh secondCh ; // If it was not returned directly, then jump back up if (scanEntityRef(true, firstCh, secondCh, escaped) == EntityExp_Returned) { // If it was escaped, then put in a 0xFFFF value. This will // be used later during validation and normalization of the // value to know that the following character was via an // escape char. if (escaped) toFill.append(0xFFFF); toFill.append(firstCh); if (secondCh) toFill.append(secondCh); } continue; } } else // its a quoteCh { // Check for our ending quote. It has to be in the same entity // as where we started. Quotes in nested entities are ignored. if (curReader == fReaderMgr.getCurrentReaderNum()) { return true; } // Watch for spillover into a previous entity if (curReader > fReaderMgr.getCurrentReaderNum()) { emitError(XMLErrs::PartialMarkupInEntity); return false; } } // add it to the buffer toFill.append(nextCh); } } catch(const EndOfEntityException&) { // Just eat it and continue. } } return true; } // This method scans a CDATA section. It collects the character into one // of the temp buffers and calls the document handler, if any, with the // characters. It assumes that the getCurrentTypeInfo(); if(currType) { SchemaElementDecl::ModelTypes modelType = (SchemaElementDecl::ModelTypes) currType->getContentType(); if(modelType == SchemaElementDecl::Children || modelType == SchemaElementDecl::ElementOnlyEmpty) charOpts = XMLElementDecl::SpacesOk; else if(modelType == SchemaElementDecl::Empty) charOpts = XMLElementDecl::NoCharData; } // should not be necessary when PSVI on element decl removed const ElemStack::StackElem* topElem = fElemStack.topElement(); while (true) { const XMLCh nextCh = fReaderMgr.getNextChar(); // Watch for unexpected end of file if (!nextCh) { emitError(XMLErrs::UnterminatedCDATASection); ThrowXMLwithMemMgr(UnexpectedEOFException, XMLExcepts::Gen_UnexpectedEOF, fMemoryManager); } if (fValidate && fStandalone && (fReaderMgr.getCurrentReader()->isWhitespace(nextCh))) { // This document is standalone; this ignorable CDATA whitespace is forbidden. // XML 1.0, Section 2.9 // And see if the current element is a 'Children' style content model if (topElem->fThisElement->isExternal()) { if (charOpts == XMLElementDecl::SpacesOk) // Element Content { // Error - standalone should have a value of "no" as whitespace detected in an // element type with element content whose element declaration was external fValidator->emitError(XMLValid::NoWSForStandalone); if (getPSVIHandler()) { // REVISIT: // PSVIElement->setValidity(PSVIItem::VALIDITY_INVALID); } } } } // If this is a close square bracket it could be our closing // sequence. if (nextCh == chCloseSquare && fReaderMgr.skippedString(CDataClose)) { // make sure we were not expecting a trailing surrogate. if (gotLeadingSurrogate) { emitError(XMLErrs::Expected2ndSurrogateChar); } XMLSize_t xsLen = bbCData.getLen(); const XMLCh* xsNormalized = bbCData.getRawBuffer(); if (fValidate) { DatatypeValidator* tempDV = ((SchemaValidator*) fValidator)->getCurrentDatatypeValidator(); if (tempDV && tempDV->getWSFacet() != DatatypeValidator::PRESERVE) { // normalize the character according to schema whitespace facet ((SchemaValidator*) fValidator)->normalizeWhiteSpace(tempDV, xsNormalized, fWSNormalizeBuf); xsNormalized = fWSNormalizeBuf.getRawBuffer(); xsLen = fWSNormalizeBuf.getLen(); } // tell the schema validation about the character data for checkContent later ((SchemaValidator*)fValidator)->setDatatypeBuffer(xsNormalized); if (charOpts != XMLElementDecl::AllCharData) { // They definitely cannot handle any type of char data fValidator->emitError(XMLValid::NoCharDataInCM); if (getPSVIHandler()) { // REVISIT: // PSVIElement->setValidity(PSVIItem::VALIDITY_INVALID); } } } // call all active identity constraints if (toCheckIdentityConstraint() && fICHandler->getMatcherCount()) { fContent.append(xsNormalized, xsLen); } // If we have a doc handler, call it if (fDocHandler) { if (fNormalizeData) { fDocHandler->docCharacters(xsNormalized, xsLen, true); } else { fDocHandler->docCharacters( bbCData.getRawBuffer(), bbCData.getLen(), true ); } } // And we are done break; } // Make sure its a valid character. But if we've emitted an error // already, don't bother with the overhead since we've already told // them about it. if (!emittedError) { // Deal with surrogate pairs if ((nextCh >= 0xD800) && (nextCh <= 0xDBFF)) { // Its a leading surrogate. If we already got one, then // issue an error, else set leading flag to make sure that // we look for a trailing next time. if (gotLeadingSurrogate) emitError(XMLErrs::Expected2ndSurrogateChar); else gotLeadingSurrogate = true; } else { // If its a trailing surrogate, make sure that we are // prepared for that. Else, its just a regular char so make // sure that we were not expected a trailing surrogate. if ((nextCh >= 0xDC00) && (nextCh <= 0xDFFF)) { // Its trailing, so make sure we were expecting it if (!gotLeadingSurrogate) emitError(XMLErrs::Unexpected2ndSurrogateChar); } else { // Its just a char, so make sure we were not expecting a // trailing surrogate. if (gotLeadingSurrogate) emitError(XMLErrs::Expected2ndSurrogateChar); // Its got to at least be a valid XML character else if (!fReaderMgr.getCurrentReader()->isXMLChar(nextCh)) { XMLCh tmpBuf[9]; XMLString::binToText ( nextCh , tmpBuf , 8 , 16 , fMemoryManager ); emitError(XMLErrs::InvalidCharacter, tmpBuf); emittedError = true; } } gotLeadingSurrogate = false; } } // Add it to the buffer bbCData.append(nextCh); } } void SGXMLScanner::scanCharData(XMLBuffer& toUse) { // We have to watch for the stupid ]]> sequence, which is illegal in // character data. So this is a little state machine that handles that. enum States { State_Waiting , State_GotOne , State_GotTwo }; // Reset the buffer before we start toUse.reset(); // Turn on the 'throw at end' flag of the reader manager ThrowEOEJanitor jan(&fReaderMgr, true); // In order to be more efficient we have to use kind of a deeply nested // set of blocks here. The outer block puts on a try and catches end of // entity exceptions. The inner loop is the per-character loop. If we // put the try inside the inner loop, it would work but would require // the exception handling code setup/teardown code to be invoked for // each character. XMLCh nextCh; XMLCh secondCh = 0; States curState = State_Waiting; bool escaped = false; bool gotLeadingSurrogate = false; bool notDone = true; while (notDone) { try { while (true) { // Eat through as many plain content characters as possible without // needing special handling. Moving most content characters here, // in this one call, rather than running the overall loop once // per content character, is a speed optimization. if (curState == State_Waiting && !gotLeadingSurrogate) { fReaderMgr.movePlainContentChars(toUse); } // Try to get another char from the source // The code from here on down covers all contengencies, if (!fReaderMgr.getNextCharIfNot(chOpenAngle, nextCh)) { // If we were waiting for a trailing surrogate, its an error if (gotLeadingSurrogate) emitError(XMLErrs::Expected2ndSurrogateChar); notDone = false; break; } // Watch for a reference. Note that the escapement mechanism // is ignored in this content. escaped = false; if (nextCh == chAmpersand) { sendCharData(toUse); // Turn off the throwing at the end of entity during this ThrowEOEJanitor jan(&fReaderMgr, false); if (scanEntityRef(false, nextCh, secondCh, escaped) != EntityExp_Returned) { gotLeadingSurrogate = false; continue; } } else if ((nextCh >= 0xD800) && (nextCh <= 0xDBFF)) { // Deal with surrogate pairs // Its a leading surrogate. If we already got one, then // issue an error, else set leading flag to make sure that // we look for a trailing next time. if (gotLeadingSurrogate) emitError(XMLErrs::Expected2ndSurrogateChar); else gotLeadingSurrogate = true; } else { // If its a trailing surrogate, make sure that we are // prepared for that. Else, its just a regular char so make // sure that we were not expected a trailing surrogate. if ((nextCh >= 0xDC00) && (nextCh <= 0xDFFF)) { // Its trailing, so make sure we were expecting it if (!gotLeadingSurrogate) emitError(XMLErrs::Unexpected2ndSurrogateChar); } else { // Its just a char, so make sure we were not expecting a // trailing surrogate. if (gotLeadingSurrogate) emitError(XMLErrs::Expected2ndSurrogateChar); // Make sure the returned char is a valid XML char if (!fReaderMgr.getCurrentReader()->isXMLChar(nextCh)) { XMLCh tmpBuf[9]; XMLString::binToText ( nextCh , tmpBuf , 8 , 16 , fMemoryManager ); emitError(XMLErrs::InvalidCharacter, tmpBuf); } } gotLeadingSurrogate = false; } // Keep the state machine up to date if (!escaped) { if (nextCh == chCloseSquare) { if (curState == State_Waiting) curState = State_GotOne; else if (curState == State_GotOne) curState = State_GotTwo; } else if (nextCh == chCloseAngle) { if (curState == State_GotTwo) emitError(XMLErrs::BadSequenceInCharData); curState = State_Waiting; } else { curState = State_Waiting; } } else { curState = State_Waiting; } // Add this char to the buffer toUse.append(nextCh); if (secondCh) { toUse.append(secondCh); secondCh=0; } } } catch(const EndOfEntityException& toCatch) { // Some entity ended, so we have to send any accumulated // chars and send an end of entity event. sendCharData(toUse); gotLeadingSurrogate = false; if (fDocHandler) fDocHandler->endEntityReference(toCatch.getEntity()); } } // Check the validity constraints as per XML 1.0 Section 2.9 if (fValidate && fStandalone) { // See if the text contains whitespace // Get the raw data we need for the callback const XMLCh* rawBuf = toUse.getRawBuffer(); const XMLSize_t len = toUse.getLen(); const bool isSpaces = fReaderMgr.getCurrentReader()->containsWhiteSpace(rawBuf, len); if (isSpaces) { // And see if the current element is a 'Children' style content model const ElemStack::StackElem* topElem = fElemStack.topElement(); if (topElem->fThisElement->isExternal()) { // Get the character data opts for the current element XMLElementDecl::CharDataOpts charOpts = XMLElementDecl::AllCharData; // And see if the current element is a 'Children' style content model ComplexTypeInfo *currType = ((SchemaValidator*)fValidator)->getCurrentTypeInfo(); if(currType) { SchemaElementDecl::ModelTypes modelType = (SchemaElementDecl::ModelTypes) currType->getContentType(); if(modelType == SchemaElementDecl::Children || modelType == SchemaElementDecl::ElementOnlyEmpty) charOpts = XMLElementDecl::SpacesOk; } if (charOpts == XMLElementDecl::SpacesOk) // => Element Content { // Error - standalone should have a value of "no" as whitespace detected in an // element type with element content whose element declaration was external // fValidator->emitError(XMLValid::NoWSForStandalone); if (getPSVIHandler()) { // REVISIT: // PSVIElement->setValidity(PSVIItem::VALIDITY_INVALID); } } } } } // Send any char data that we accumulated into the buffer sendCharData(toUse); } // This method will scan a general/character entity ref. It will either // expand a char ref and return it directly, or push a reader for a general // entity. // // The return value indicates whether the char parameters hold the value // or whether the value was pushed as a reader, or that it failed. // // The escaped flag tells the caller whether the returned parameter resulted // from a character reference, which escapes the character in some cases. It // only makes any difference if the return value indicates the value was // returned directly. SGXMLScanner::EntityExpRes SGXMLScanner::scanEntityRef( const bool , XMLCh& firstCh , XMLCh& secondCh , bool& escaped) { // Assume no escape secondCh = 0; escaped = false; // We have to insure that its all in one entity const XMLSize_t curReader = fReaderMgr.getCurrentReaderNum(); // If the next char is a pound, then its a character reference and we // need to expand it always. if (fReaderMgr.skippedChar(chPound)) { // Its a character reference, so scan it and get back the numeric // value it represents. if (!scanCharRef(firstCh, secondCh)) return EntityExp_Failed; escaped = true; if (curReader != fReaderMgr.getCurrentReaderNum()) emitError(XMLErrs::PartialMarkupInEntity); return EntityExp_Returned; } // Expand it since its a normal entity ref XMLBufBid bbName(&fBufMgr); int colonPosition; if (!fReaderMgr.getQName(bbName.getBuffer(), &colonPosition)) { if (bbName.isEmpty()) emitError(XMLErrs::ExpectedEntityRefName); else emitError(XMLErrs::InvalidEntityRefName, bbName.getRawBuffer()); return EntityExp_Failed; } // Next char must be a semi-colon. But if its not, just emit // an error and try to continue. if (!fReaderMgr.skippedChar(chSemiColon)) emitError(XMLErrs::UnterminatedEntityRef, bbName.getRawBuffer()); // Make sure we ended up on the same entity reader as the & char if (curReader != fReaderMgr.getCurrentReaderNum()) emitError(XMLErrs::PartialMarkupInEntity); // Look up the name in the general entity pool // If it does not exist, then obviously an error if (!fEntityTable->containsKey(bbName.getRawBuffer())) { // XML 1.0 Section 4.1 // Well-formedness Constraint for entity not found: // In a document without any DTD, a document with only an internal DTD subset which contains no parameter entity references, // or a document with "standalone='yes'", for an entity reference that does not occur within the external subset // or a parameter entity if (fStandalone || fHasNoDTD) emitError(XMLErrs::EntityNotFound, bbName.getRawBuffer()); return EntityExp_Failed; } // here's where we need to check if there's a SecurityManager, // how many entity references we've had if(fSecurityManager != 0 && ++fEntityExpansionCount > fEntityExpansionLimit) { XMLCh expLimStr[32]; XMLString::sizeToText(fEntityExpansionLimit, expLimStr, 31, 10, fMemoryManager); emitError ( XMLErrs::EntityExpansionLimitExceeded , expLimStr ); // there seems nothing better to be done than to reset the entity expansion limit fEntityExpansionCount = 0; } firstCh = fEntityTable->get(bbName.getRawBuffer()); escaped = true; return EntityExp_Returned; } bool SGXMLScanner::switchGrammar(const XMLCh* const newGrammarNameSpace) { Grammar* tempGrammar = fGrammarResolver->getGrammar(newGrammarNameSpace); if (!tempGrammar) { tempGrammar = fSchemaGrammar; } if (!tempGrammar) return false; else { fGrammar = tempGrammar; fGrammarType = fGrammar->getGrammarType(); if (fGrammarType == Grammar::DTDGrammarType) { ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Gen_NoDTDValidator, fMemoryManager); } fValidator->setGrammar(fGrammar); return true; } } // check if we should skip or lax the validation of the element // if skip - no validation // if lax - validate only if the element if found bool SGXMLScanner::laxElementValidation(QName* element, ContentLeafNameTypeVector* cv, const XMLContentModel* const cm, const XMLSize_t parentElemDepth) { bool skipThisOne = false; bool laxThisOne = false; unsigned int elementURI = element->getURI(); unsigned int currState = fElemState[parentElemDepth]; unsigned int currLoop = fElemLoopState[parentElemDepth]; if (currState == XMLContentModel::gInvalidTrans) { return laxThisOne; } SubstitutionGroupComparator comparator(fGrammarResolver, fURIStringPool); if (cv) { XMLSize_t i = 0; XMLSize_t leafCount = cv->getLeafCount(); unsigned int nextState = 0; for (; i < leafCount; i++) { QName* fElemMap = cv->getLeafNameAt(i); unsigned int uri = fElemMap->getURI(); ContentSpecNode::NodeTypes type = cv->getLeafTypeAt(i); if (type == ContentSpecNode::Leaf) { if (((uri == elementURI) && XMLString::equals(fElemMap->getLocalPart(), element->getLocalPart())) || comparator.isEquivalentTo(element, fElemMap)) { nextState = cm->getNextState(currState, i); if (nextState != XMLContentModel::gInvalidTrans) break; } } else if ((type & 0x0f) == ContentSpecNode::Any) { nextState = cm->getNextState(currState, i); if (nextState != XMLContentModel::gInvalidTrans) break; } else if ((type & 0x0f) == ContentSpecNode::Any_Other) { if (uri != elementURI && elementURI != fEmptyNamespaceId) { nextState = cm->getNextState(currState, i); if (nextState != XMLContentModel::gInvalidTrans) break; } } else if ((type & 0x0f) == ContentSpecNode::Any_NS) { if (uri == elementURI) { nextState = cm->getNextState(currState, i); if (nextState != XMLContentModel::gInvalidTrans) break; } } } // for if (i == leafCount) { // no match fElemState[parentElemDepth] = XMLContentModel::gInvalidTrans; fElemLoopState[parentElemDepth] = 0; return laxThisOne; } ContentSpecNode::NodeTypes type = cv->getLeafTypeAt(i); if ((type & 0x0f) == ContentSpecNode::Any || (type & 0x0f) == ContentSpecNode::Any_Other || (type & 0x0f) == ContentSpecNode::Any_NS) { if (type == ContentSpecNode::Any_Skip || type == ContentSpecNode::Any_NS_Skip || type == ContentSpecNode::Any_Other_Skip) { skipThisOne = true; } else if (type == ContentSpecNode::Any_Lax || type == ContentSpecNode::Any_NS_Lax || type == ContentSpecNode::Any_Other_Lax) { laxThisOne = true; } } fElemState[parentElemDepth] = nextState; fElemLoopState[parentElemDepth] = currLoop; } // if if (skipThisOne) { fValidate = false; fElemStack.setValidationFlag(fValidate); } return laxThisOne; } // check if there is an AnyAttribute, and if so, see if we should lax or skip // if skip - no validation // if lax - validate only if the attribute if found bool SGXMLScanner::anyAttributeValidation(SchemaAttDef* attWildCard, unsigned int uriId, bool& skipThisOne, bool& laxThisOne) { XMLAttDef::AttTypes wildCardType = attWildCard->getType(); bool anyEncountered = false; skipThisOne = false; laxThisOne = false; if (wildCardType == XMLAttDef::Any_Any) anyEncountered = true; else if (wildCardType == XMLAttDef::Any_Other) { if (attWildCard->getAttName()->getURI() != uriId && uriId != fEmptyNamespaceId) anyEncountered = true; } else if (wildCardType == XMLAttDef::Any_List) { ValueVectorOf* nameURIList = attWildCard->getNamespaceList(); XMLSize_t listSize = (nameURIList) ? nameURIList->size() : 0; if (listSize) { for (XMLSize_t i=0; i < listSize; i++) { if (nameURIList->elementAt(i) == uriId) anyEncountered = true; } } } if (anyEncountered) { XMLAttDef::DefAttTypes defType = attWildCard->getDefaultType(); if (defType == XMLAttDef::ProcessContents_Skip) { // attribute should just be bypassed, skipThisOne = true; if (getPSVIHandler()) { // REVISIT: // PSVIAttribute->setValidationAttempted(PSVIItem::VALIDATION_NONE); } } else if (defType == XMLAttDef::ProcessContents_Lax) { laxThisOne = true; } } return anyEncountered; } inline XMLAttDefList& getAttDefList(ComplexTypeInfo* currType, XMLElementDecl* elemDecl) { if (currType) return currType->getAttDefList(); else return elemDecl->getAttDefList(); } void SGXMLScanner::endElementPSVI(SchemaElementDecl* const elemDecl, DatatypeValidator* const memberDV) { PSVIElement::ASSESSMENT_TYPE validationAttempted; PSVIElement::VALIDITY_STATE validity = PSVIElement::VALIDITY_NOTKNOWN; if (fPSVIElemContext.fElemDepth > fPSVIElemContext.fFullValidationDepth) validationAttempted = PSVIElement::VALIDATION_FULL; else if (fPSVIElemContext.fElemDepth > fPSVIElemContext.fNoneValidationDepth) validationAttempted = PSVIElement::VALIDATION_NONE; else { validationAttempted = PSVIElement::VALIDATION_PARTIAL; fPSVIElemContext.fFullValidationDepth = fPSVIElemContext.fNoneValidationDepth = fPSVIElemContext.fElemDepth - 1; } if (fValidate && elemDecl->isDeclared()) { validity = (fPSVIElemContext.fErrorOccurred) ? PSVIElement::VALIDITY_INVALID : PSVIElement::VALIDITY_VALID; } XSTypeDefinition* typeDef = 0; bool isMixed = false; if (fPSVIElemContext.fCurrentTypeInfo) { typeDef = (XSTypeDefinition*) fModel->getXSObject(fPSVIElemContext.fCurrentTypeInfo); SchemaElementDecl::ModelTypes modelType = (SchemaElementDecl::ModelTypes)fPSVIElemContext.fCurrentTypeInfo->getContentType(); isMixed = (modelType == SchemaElementDecl::Mixed_Simple || modelType == SchemaElementDecl::Mixed_Complex); } else if (fPSVIElemContext.fCurrentDV) typeDef = (XSTypeDefinition*) fModel->getXSObject(fPSVIElemContext.fCurrentDV); XMLCh* canonicalValue = 0; if (fPSVIElemContext.fNormalizedValue && !isMixed && validity == PSVIElement::VALIDITY_VALID) { if (memberDV) canonicalValue = (XMLCh*) memberDV->getCanonicalRepresentation(fPSVIElemContext.fNormalizedValue, fMemoryManager); else if (fPSVIElemContext.fCurrentDV) canonicalValue = (XMLCh*) fPSVIElemContext.fCurrentDV->getCanonicalRepresentation(fPSVIElemContext.fNormalizedValue, fMemoryManager); } fPSVIElement->reset ( validity , validationAttempted , fRootElemName , fPSVIElemContext.fIsSpecified , (elemDecl->isDeclared()) ? (XSElementDeclaration*) fModel->getXSObject(elemDecl) : 0 , typeDef , (memberDV) ? (XSSimpleTypeDefinition*) fModel->getXSObject(memberDV) : 0 , fModel , elemDecl->getDefaultValue() , fPSVIElemContext.fNormalizedValue , canonicalValue ); fPSVIHandler->handleElementPSVI ( elemDecl->getBaseName() , fURIStringPool->getValueForId(elemDecl->getURI()) , fPSVIElement ); // decrease element depth fPSVIElemContext.fElemDepth--; } void SGXMLScanner::resetPSVIElemContext() { fPSVIElemContext.fIsSpecified = false; fPSVIElemContext.fErrorOccurred = false; fPSVIElemContext.fElemDepth = -1; fPSVIElemContext.fFullValidationDepth = -1; fPSVIElemContext.fNoneValidationDepth = -1; fPSVIElemContext.fCurrentDV = 0; fPSVIElemContext.fCurrentTypeInfo = 0; fPSVIElemContext.fNormalizedValue = 0; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/internal/IGXMLScanner.hpp0000644000175000017500000002735611301516456021224 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: IGXMLScanner.hpp 882548 2009-11-20 13:44:14Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_IGXMLSCANNER_HPP) #define XERCESC_INCLUDE_GUARD_IGXMLSCANNER_HPP #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN class DTDElementDecl; class DTDGrammar; class DTDValidator; class SchemaValidator; class IdentityConstraintHandler; class IdentityConstraint; class ContentLeafNameTypeVector; class SchemaAttDef; class XMLContentModel; class XSModel; class PSVIAttributeList; class PSVIElement; // This is an integrated scanner class, which does DTD/XML Schema grammar // processing. class XMLPARSER_EXPORT IGXMLScanner : public XMLScanner { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- IGXMLScanner ( XMLValidator* const valToAdopt , GrammarResolver* const grammarResolver , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); IGXMLScanner ( XMLDocumentHandler* const docHandler , DocTypeHandler* const docTypeHandler , XMLEntityHandler* const entityHandler , XMLErrorReporter* const errReporter , XMLValidator* const valToAdopt , GrammarResolver* const grammarResolver , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ); virtual ~IGXMLScanner(); // ----------------------------------------------------------------------- // XMLScanner public virtual methods // ----------------------------------------------------------------------- virtual const XMLCh* getName() const; virtual NameIdPool* getEntityDeclPool(); virtual const NameIdPool* getEntityDeclPool() const; virtual void scanDocument ( const InputSource& src ); virtual bool scanNext(XMLPScanToken& toFill); virtual Grammar* loadGrammar ( const InputSource& src , const short grammarType , const bool toCache = false ); virtual void resetCachedGrammar (); virtual Grammar::GrammarType getCurrentGrammarType() const; private : // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- IGXMLScanner(); IGXMLScanner(const IGXMLScanner&); IGXMLScanner& operator=(const IGXMLScanner&); // ----------------------------------------------------------------------- // XMLScanner virtual methods // ----------------------------------------------------------------------- virtual void scanCDSection(); virtual void scanCharData(XMLBuffer& toToUse); virtual EntityExpRes scanEntityRef ( const bool inAttVal , XMLCh& firstCh , XMLCh& secondCh , bool& escaped ); virtual void scanDocTypeDecl(); virtual void scanReset(const InputSource& src); virtual void sendCharData(XMLBuffer& toSend); virtual InputSource* resolveSystemId(const XMLCh* const sysId ,const XMLCh* const pubId); // ----------------------------------------------------------------------- // Private helper methods // ----------------------------------------------------------------------- void commonInit(); void cleanUp(); XMLSize_t buildAttList ( const RefVectorOf& providedAttrs , const XMLSize_t attCount , XMLElementDecl* elemDecl , RefVectorOf& toFill ); bool normalizeAttValue ( const XMLAttDef* const attDef , const XMLCh* const name , const XMLCh* const value , XMLBuffer& toFill ); bool normalizeAttRawValue ( const XMLCh* const attrName , const XMLCh* const value , XMLBuffer& toFill ); void updateNSMap ( const XMLCh* const attrName , const XMLCh* const attrValue ); void updateNSMap ( const XMLCh* const attrName , const XMLCh* const attrValue , const int colonPosition ); void scanRawAttrListforNameSpaces(XMLSize_t attCount); void parseSchemaLocation(const XMLCh* const schemaLocationStr, bool ignoreLoadSchema = false); void resolveSchemaGrammar(const XMLCh* const loc, const XMLCh* const uri, bool ignoreLoadSchema = false); bool switchGrammar(const XMLCh* const newGrammarNameSpace); bool laxElementValidation(QName* element, ContentLeafNameTypeVector* cv, const XMLContentModel* const cm, const XMLSize_t parentElemDepth); bool anyAttributeValidation(SchemaAttDef* attWildCard, unsigned int uriId, bool& skipThisOne, bool& laxThisOne); void resizeElemState(); void processSchemaLocation(XMLCh* const schemaLoc); void resizeRawAttrColonList(); // ----------------------------------------------------------------------- // Private scanning methods // ----------------------------------------------------------------------- bool basicAttrValueScan ( const XMLCh* const attrName , XMLBuffer& toFill ); XMLSize_t rawAttrScan ( const XMLCh* const elemName , RefVectorOf& toFill , bool& isEmpty ); bool scanAttValue ( const XMLAttDef* const attDef , const XMLCh* const attrName , XMLBuffer& toFill ); bool scanContent(); void scanEndTag(bool& gotData); bool scanStartTag(bool& gotData); bool scanStartTagNS(bool& gotData); // ----------------------------------------------------------------------- // IdentityConstraints Activation methods // ----------------------------------------------------------------------- inline bool toCheckIdentityConstraint() const; // ----------------------------------------------------------------------- // Grammar preparsing methods // ----------------------------------------------------------------------- Grammar* loadXMLSchemaGrammar(const InputSource& src, const bool toCache = false); Grammar* loadDTDGrammar(const InputSource& src, const bool toCache = false); // ----------------------------------------------------------------------- // PSVI handling methods // ----------------------------------------------------------------------- void endElementPSVI(SchemaElementDecl* const elemDecl, DatatypeValidator* const memberDV); void resetPSVIElemContext(); // ----------------------------------------------------------------------- // Data members // // fRawAttrList // During the initial scan of the attributes we can only do a raw // scan for key/value pairs. So this vector is used to store them // until they can be processed (and put into fAttrList.) // // fDTDValidator // The DTD validator instance. // // fSchemaValidator // The Schema validator instance. // // fSeeXsi // This flag indicates a schema has been seen. // // fElemState // fElemLoopState // fElemStateSize // Stores an element next state from DFA content model - used for // wildcard validation // // fDTDElemNonDeclPool // registry of "faulted-in" DTD element decls // fSchemaElemNonDeclPool // registry for elements without decls in the grammar // fElemCount // count of the number of start tags seen so far (starts at 1). // Used for duplicate attribute detection/processing of required/defaulted attributes // fAttDefRegistry // mapping from XMLAttDef instances to the count of the last // start tag where they were utilized. // fUndeclaredAttrRegistry // set of attr QNames to detect duplicates // fPSVIAttrList // PSVI attribute list implementation that needs to be // filled when a PSVIHandler is registered // fSchemaInfoList // Transient schema info list that is passed to TraverseSchema instances. // fCachedSchemaInfoList // Cached Schema info list that is passed to TraverseSchema instances. // // ----------------------------------------------------------------------- bool fSeeXsi; Grammar::GrammarType fGrammarType; unsigned int fElemStateSize; unsigned int* fElemState; unsigned int* fElemLoopState; XMLBuffer fContent; RefVectorOf* fRawAttrList; unsigned int fRawAttrColonListSize; int* fRawAttrColonList; DTDValidator* fDTDValidator; SchemaValidator* fSchemaValidator; DTDGrammar* fDTDGrammar; IdentityConstraintHandler* fICHandler; ValueVectorOf* fLocationPairs; NameIdPool* fDTDElemNonDeclPool; RefHash3KeysIdPool* fSchemaElemNonDeclPool; unsigned int fElemCount; RefHashTableOf*fAttDefRegistry; Hash2KeysSetOf* fUndeclaredAttrRegistry; PSVIAttributeList * fPSVIAttrList; XSModel* fModel; PSVIElement* fPSVIElement; ValueStackOf* fErrorStack; PSVIElemContext fPSVIElemContext; RefHash2KeysTableOf* fSchemaInfoList; RefHash2KeysTableOf* fCachedSchemaInfoList; }; inline const XMLCh* IGXMLScanner::getName() const { return XMLUni::fgIGXMLScanner; } inline bool IGXMLScanner::toCheckIdentityConstraint() const { return fValidate && fIdentityConstraintChecking && fICHandler; } inline Grammar::GrammarType IGXMLScanner::getCurrentGrammarType() const { return fGrammarType; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/internal/XMLScanner.cpp0000644000175000017500000024401611301516456020771 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLScanner.cpp 882548 2009-11-20 13:44:14Z borisk $ */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Local static data // --------------------------------------------------------------------------- static XMLUInt32 gScannerId = 0; static XMLMutex* sScannerMutex = 0; static XMLMsgLoader* gMsgLoader = 0; void XMLInitializer::initializeXMLScanner() { gMsgLoader = XMLPlatformUtils::loadMsgSet(XMLUni::fgXMLErrDomain); if (!gMsgLoader) XMLPlatformUtils::panic(PanicHandler::Panic_CantLoadMsgDomain); sScannerMutex = new XMLMutex(XMLPlatformUtils::fgMemoryManager); } void XMLInitializer::terminateXMLScanner() { delete gMsgLoader; gMsgLoader = 0; delete sScannerMutex; sScannerMutex = 0; } // // typedef JanitorMemFunCall CleanupType; typedef JanitorMemFunCall ReaderMgrResetType; // --------------------------------------------------------------------------- // XMLScanner: Constructors and Destructor // --------------------------------------------------------------------------- XMLScanner::XMLScanner(XMLValidator* const valToAdopt, GrammarResolver* const grammarResolver, MemoryManager* const manager) : fBufferSize(1024 * 1024) , fLowWaterMark (100) , fStandardUriConformant(false) , fCalculateSrcOfs(false) , fDoNamespaces(false) , fExitOnFirstFatal(true) , fValidationConstraintFatal(false) , fInException(false) , fStandalone(false) , fHasNoDTD(true) , fValidate(false) , fValidatorFromUser(false) , fDoSchema(false) , fSchemaFullChecking(false) , fIdentityConstraintChecking(true) , fToCacheGrammar(false) , fUseCachedGrammar(false) , fLoadExternalDTD(true) , fLoadSchema(true) , fNormalizeData(true) , fGenerateSyntheticAnnotations(false) , fValidateAnnotations(false) , fIgnoreCachedDTD(false) , fIgnoreAnnotations(false) , fDisableDefaultEntityResolution(false) , fSkipDTDValidation(false) , fHandleMultipleImports(false) , fErrorCount(0) , fEntityExpansionLimit(0) , fEntityExpansionCount(0) , fEmptyNamespaceId(0) , fUnknownNamespaceId(0) , fXMLNamespaceId(0) , fXMLNSNamespaceId(0) , fSchemaNamespaceId(0) , fUIntPool(0) , fUIntPoolRow(0) , fUIntPoolCol(0) , fUIntPoolRowTotal(2) , fScannerId(0) , fSequenceId(0) , fAttrList(0) , fAttrDupChkRegistry(0) , fDocHandler(0) , fDocTypeHandler(0) , fEntityHandler(0) , fErrorReporter(0) , fErrorHandler(0) , fPSVIHandler(0) , fValidationContext(0) , fEntityDeclPoolRetrieved(false) , fReaderMgr(manager) , fValidator(valToAdopt) , fValScheme(Val_Never) , fGrammarResolver(grammarResolver) , fGrammarPoolMemoryManager(grammarResolver->getGrammarPoolMemoryManager()) , fGrammar(0) , fRootGrammar(0) , fURIStringPool(0) , fRootElemName(0) , fExternalSchemaLocation(0) , fExternalNoNamespaceSchemaLocation(0) , fSecurityManager(0) , fXMLVersion(XMLReader::XMLV1_0) , fMemoryManager(manager) , fBufMgr(manager) , fAttNameBuf(1023, manager) , fAttValueBuf(1023, manager) , fCDataBuf(1023, manager) , fQNameBuf(1023, manager) , fPrefixBuf(1023, manager) , fURIBuf(1023, manager) , fWSNormalizeBuf(1023, manager) , fElemStack(manager) { CleanupType cleanup(this, &XMLScanner::cleanUp); try { commonInit(); } catch(const OutOfMemoryException&) { // Don't cleanup when out of memory, since executing the // code can cause problems. cleanup.release(); throw; } cleanup.release(); } XMLScanner::XMLScanner( XMLDocumentHandler* const docHandler , DocTypeHandler* const docTypeHandler , XMLEntityHandler* const entityHandler , XMLErrorReporter* const errHandler , XMLValidator* const valToAdopt , GrammarResolver* const grammarResolver , MemoryManager* const manager) : fBufferSize(1024 * 1024) , fLowWaterMark (100) , fStandardUriConformant(false) , fCalculateSrcOfs(false) , fDoNamespaces(false) , fExitOnFirstFatal(true) , fValidationConstraintFatal(false) , fInException(false) , fStandalone(false) , fHasNoDTD(true) , fValidate(false) , fValidatorFromUser(false) , fDoSchema(false) , fSchemaFullChecking(false) , fIdentityConstraintChecking(true) , fToCacheGrammar(false) , fUseCachedGrammar(false) , fLoadExternalDTD(true) , fLoadSchema(true) , fNormalizeData(true) , fGenerateSyntheticAnnotations(false) , fValidateAnnotations(false) , fIgnoreCachedDTD(false) , fIgnoreAnnotations(false) , fDisableDefaultEntityResolution(false) , fSkipDTDValidation(false) , fHandleMultipleImports(false) , fErrorCount(0) , fEntityExpansionLimit(0) , fEntityExpansionCount(0) , fEmptyNamespaceId(0) , fUnknownNamespaceId(0) , fXMLNamespaceId(0) , fXMLNSNamespaceId(0) , fSchemaNamespaceId(0) , fUIntPool(0) , fUIntPoolRow(0) , fUIntPoolCol(0) , fUIntPoolRowTotal(2) , fScannerId(0) , fSequenceId(0) , fAttrList(0) , fAttrDupChkRegistry(0) , fDocHandler(docHandler) , fDocTypeHandler(docTypeHandler) , fEntityHandler(entityHandler) , fErrorReporter(errHandler) , fErrorHandler(0) , fPSVIHandler(0) , fValidationContext(0) , fEntityDeclPoolRetrieved(false) , fReaderMgr(manager) , fValidator(valToAdopt) , fValScheme(Val_Never) , fGrammarResolver(grammarResolver) , fGrammarPoolMemoryManager(grammarResolver->getGrammarPoolMemoryManager()) , fGrammar(0) , fRootGrammar(0) , fURIStringPool(0) , fRootElemName(0) , fExternalSchemaLocation(0) , fExternalNoNamespaceSchemaLocation(0) , fSecurityManager(0) , fXMLVersion(XMLReader::XMLV1_0) , fMemoryManager(manager) , fBufMgr(manager) , fAttNameBuf(1023, manager) , fAttValueBuf(1023, manager) , fCDataBuf(1023, manager) , fQNameBuf(1023, manager) , fPrefixBuf(1023, manager) , fURIBuf(1023, manager) , fWSNormalizeBuf(1023, manager) , fElemStack(manager) { CleanupType cleanup(this, &XMLScanner::cleanUp); try { commonInit(); } catch(const OutOfMemoryException&) { // Don't cleanup when out of memory, since executing the // code can cause problems. cleanup.release(); throw; } cleanup.release(); } XMLScanner::~XMLScanner() { cleanUp(); } void XMLScanner::resetCachedGrammar () { } void XMLScanner::setValidator(XMLValidator* const valToAdopt) { if (fValidatorFromUser) delete fValidator; fValidator = valToAdopt; fValidatorFromUser = true; initValidator(fValidator); } // --------------------------------------------------------------------------- // XMLScanner: Main entry point to scan a document // --------------------------------------------------------------------------- void XMLScanner::scanDocument( const XMLCh* const systemId) { // First we try to parse it as a URL. If that fails, we assume its // a file and try it that way. InputSource* srcToUse = 0; try { // Create a temporary URL. Since this is the primary document, // it has to be fully qualified. If not, then assume we are just // mistaking a file for a URL. XMLURL tmpURL(fMemoryManager); if (XMLURL::parse(systemId, tmpURL)) { if (tmpURL.isRelative()) { if (!fStandardUriConformant) srcToUse = new (fMemoryManager) LocalFileInputSource(systemId, fMemoryManager); else { // since this is the top of the try/catch, cannot call ThrowXMLwithMemMgr // emit the error directly MalformedURLException e(__FILE__, __LINE__, XMLExcepts::URL_NoProtocolPresent, fMemoryManager); fInException = true; emitError ( XMLErrs::XMLException_Fatal , e.getCode() , e.getMessage() ); return; } } else { if (fStandardUriConformant && tmpURL.hasInvalidChar()) { MalformedURLException e(__FILE__, __LINE__, XMLExcepts::URL_MalformedURL, fMemoryManager); fInException = true; emitError ( XMLErrs::XMLException_Fatal , e.getCode() , e.getMessage() ); return; } srcToUse = new (fMemoryManager) URLInputSource(tmpURL, fMemoryManager); } } else { if (!fStandardUriConformant) srcToUse = new (fMemoryManager) LocalFileInputSource(systemId, fMemoryManager); else { // since this is the top of the try/catch, cannot call ThrowXMLwithMemMgr // emit the error directly // lazy bypass ... since all MalformedURLException are fatal, no need to check the type MalformedURLException e(__FILE__, __LINE__, XMLExcepts::URL_MalformedURL, fMemoryManager); fInException = true; emitError ( XMLErrs::XMLException_Fatal , e.getCode() , e.getMessage() ); return; } } } catch(const XMLException& excToCatch) { // For any other XMLException, // emit the error and catch any user exception thrown from here. fInException = true; if (excToCatch.getErrorType() == XMLErrorReporter::ErrType_Warning) emitError ( XMLErrs::XMLException_Warning , excToCatch.getCode() , excToCatch.getMessage() ); else if (excToCatch.getErrorType() >= XMLErrorReporter::ErrType_Fatal) emitError ( XMLErrs::XMLException_Fatal , excToCatch.getCode() , excToCatch.getMessage() ); else emitError ( XMLErrs::XMLException_Error , excToCatch.getCode() , excToCatch.getMessage() ); return; } Janitor janSrc(srcToUse); scanDocument(*srcToUse); } void XMLScanner::scanDocument( const char* const systemId) { // We just delegate this to the XMLCh version after transcoding XMLCh* tmpBuf = XMLString::transcode(systemId, fMemoryManager); ArrayJanitor janBuf(tmpBuf, fMemoryManager); scanDocument(tmpBuf); } // This method begins a progressive parse. It scans through the prolog and // returns a token to be used on subsequent scanNext() calls. If the return // value is true, then the token is legal and ready for further use. If it // returns false, then the scan of the prolog failed and the token is not // going to work on subsequent scanNext() calls. bool XMLScanner::scanFirst( const XMLCh* const systemId , XMLPScanToken& toFill) { // First we try to parse it as a URL. If that fails, we assume its // a file and try it that way. InputSource* srcToUse = 0; try { // Create a temporary URL. Since this is the primary document, // it has to be fully qualified. If not, then assume we are just // mistaking a file for a URL. XMLURL tmpURL(fMemoryManager); if (XMLURL::parse(systemId, tmpURL)) { if (tmpURL.isRelative()) { if (!fStandardUriConformant) srcToUse = new (fMemoryManager) LocalFileInputSource(systemId, fMemoryManager); else { // since this is the top of the try/catch, cannot call ThrowXMLwithMemMgr // emit the error directly MalformedURLException e(__FILE__, __LINE__, XMLExcepts::URL_NoProtocolPresent, fMemoryManager); fInException = true; emitError ( XMLErrs::XMLException_Fatal , e.getCode() , e.getMessage() ); return false; } } else { if (fStandardUriConformant && tmpURL.hasInvalidChar()) { MalformedURLException e(__FILE__, __LINE__, XMLExcepts::URL_MalformedURL, fMemoryManager); fInException = true; emitError ( XMLErrs::XMLException_Fatal , e.getCode() , e.getMessage() ); return false; } srcToUse = new (fMemoryManager) URLInputSource(tmpURL, fMemoryManager); } } else { if (!fStandardUriConformant) srcToUse = new (fMemoryManager) LocalFileInputSource(systemId, fMemoryManager); else { // since this is the top of the try/catch, cannot call ThrowXMLwithMemMgr // emit the error directly // lazy bypass ... since all MalformedURLException are fatal, no need to check the type MalformedURLException e(__FILE__, __LINE__, XMLExcepts::URL_MalformedURL); fInException = true; emitError ( XMLErrs::XMLException_Fatal , e.getCode() , e.getMessage() ); return false; } } } catch(const XMLException& excToCatch) { // For any other XMLException, // emit the error and catch any user exception thrown from here. fInException = true; if (excToCatch.getErrorType() == XMLErrorReporter::ErrType_Warning) emitError ( XMLErrs::XMLException_Warning , excToCatch.getCode() , excToCatch.getMessage() ); else if (excToCatch.getErrorType() >= XMLErrorReporter::ErrType_Fatal) emitError ( XMLErrs::XMLException_Fatal , excToCatch.getCode() , excToCatch.getMessage() ); else emitError ( XMLErrs::XMLException_Error , excToCatch.getCode() , excToCatch.getMessage() ); return false; } Janitor janSrc(srcToUse); return scanFirst(*srcToUse, toFill); } bool XMLScanner::scanFirst( const char* const systemId , XMLPScanToken& toFill) { // We just delegate this to the XMLCh version after transcoding XMLCh* tmpBuf = XMLString::transcode(systemId, fMemoryManager); ArrayJanitor janBuf(tmpBuf, fMemoryManager); return scanFirst(tmpBuf, toFill); } bool XMLScanner::scanFirst( const InputSource& src , XMLPScanToken& toFill) { // Bump up the sequence id for this new scan cycle. This will invalidate // any previous tokens we've returned. fSequenceId++; ReaderMgrResetType resetReaderMgr(&fReaderMgr, &ReaderMgr::reset); // Reset the scanner and its plugged in stuff for a new run. This // resets all the data structures, creates the initial reader and // pushes it on the stack, and sets up the base document path scanReset(src); // If we have a document handler, then call the start document if (fDocHandler) fDocHandler->startDocument(); try { // Scan the prolog part, which is everything before the root element // including the DTD subsets. This is all that is done on the scan // first. scanProlog(); // If we got to the end of input, then its not a valid XML file. // Else, go on to scan the content. if (fReaderMgr.atEOF()) { emitError(XMLErrs::EmptyMainEntity); } } // NOTE: // // In all of the error processing below, the emitError() call MUST come // before the flush of the reader mgr, or it will fail because it tries // to find out the position in the XML source of the error. catch(const XMLErrs::Codes) { // This is a 'first failure' exception so return failure return false; } catch(const XMLValid::Codes) { // This is a 'first fatal error' type exit, return failure return false; } catch(const XMLException& excToCatch) { // Emit the error and catch any user exception thrown from here. Make // sure in all cases we flush the reader manager. fInException = true; try { if (excToCatch.getErrorType() == XMLErrorReporter::ErrType_Warning) emitError ( XMLErrs::XMLException_Warning , excToCatch.getCode() , excToCatch.getMessage() ); else if (excToCatch.getErrorType() >= XMLErrorReporter::ErrType_Fatal) emitError ( XMLErrs::XMLException_Fatal , excToCatch.getCode() , excToCatch.getMessage() ); else emitError ( XMLErrs::XMLException_Error , excToCatch.getCode() , excToCatch.getMessage() ); } catch(const OutOfMemoryException&) { // This is a special case for out-of-memory // conditions, because resetting the ReaderMgr // can be problematic. resetReaderMgr.release(); throw; } return false; } catch(const OutOfMemoryException&) { // This is a special case for out-of-memory // conditions, because resetting the ReaderMgr // can be problematic. resetReaderMgr.release(); throw; } // Fill in the caller's token to make it legal and return success toFill.set(fScannerId, fSequenceId); // Release the object that will reset the ReaderMgr, since there's // more to scan. resetReaderMgr.release(); return true; } void XMLScanner::scanReset(XMLPScanToken& token) { // Make sure this token is still legal if (!isLegalToken(token)) ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Scan_BadPScanToken, fMemoryManager); // Reset the reader manager fReaderMgr.reset(); // And invalidate any tokens by bumping our sequence number fSequenceId++; // Reset our error count fErrorCount = 0; } void XMLScanner::setParseSettings(XMLScanner* const refScanner) { setDocHandler(refScanner->getDocHandler()); setDocTypeHandler(refScanner->getDocTypeHandler()); setErrorHandler(refScanner->getErrorHandler()); setErrorReporter(refScanner->getErrorReporter()); setEntityHandler(refScanner->getEntityHandler()); setDoNamespaces(refScanner->getDoNamespaces()); setDoSchema(refScanner->getDoSchema()); setCalculateSrcOfs(refScanner->getCalculateSrcOfs()); setStandardUriConformant(refScanner->getStandardUriConformant()); setExitOnFirstFatal(refScanner->getExitOnFirstFatal()); setValidationConstraintFatal(refScanner->getValidationConstraintFatal()); setIdentityConstraintChecking(refScanner->getIdentityConstraintChecking()); setValidationSchemaFullChecking(refScanner->getValidationSchemaFullChecking()); cacheGrammarFromParse(refScanner->isCachingGrammarFromParse()); useCachedGrammarInParse(refScanner->isUsingCachedGrammarInParse()); setLoadExternalDTD(refScanner->getLoadExternalDTD()); setLoadSchema(refScanner->getLoadSchema()); setNormalizeData(refScanner->getNormalizeData()); setExternalSchemaLocation(refScanner->getExternalSchemaLocation()); setExternalNoNamespaceSchemaLocation(refScanner->getExternalNoNamespaceSchemaLocation()); setValidationScheme(refScanner->getValidationScheme()); setSecurityManager(refScanner->getSecurityManager()); setPSVIHandler(refScanner->getPSVIHandler()); } // --------------------------------------------------------------------------- // XMLScanner: Private helper methods. // --------------------------------------------------------------------------- // This method handles the common initialization, to avoid having to do // it redundantly in multiple constructors. void XMLScanner::commonInit() { // We have to do a little init that involves statics, so we have to // use the mutex to protect it. { XMLMutexLock lockInit(sScannerMutex); // And assign ourselves the next available scanner id fScannerId = ++gScannerId; } // Create the attribute list, which is used to store attribute values // during start tag processing. Give it a reasonable initial size that // will serve for most folks, though it will grow as required. fAttrList = new (fMemoryManager) RefVectorOf(32, true, fMemoryManager); // Create the id ref list. This is used to enforce XML 1.0 ID ref // semantics, i.e. all id refs must refer to elements that exist fValidationContext = new (fMemoryManager) ValidationContextImpl(fMemoryManager); fValidationContext->setElemStack(&fElemStack); fValidationContext->setScanner(this); // Create the GrammarResolver //fGrammarResolver = new GrammarResolver(); // create initial, 64-element, fUIntPool fUIntPool = (unsigned int **)fMemoryManager->allocate(sizeof(unsigned int *) *fUIntPoolRowTotal); memset(fUIntPool, 0, sizeof(unsigned int *) * fUIntPoolRowTotal); fUIntPool[0] = (unsigned int *)fMemoryManager->allocate(sizeof(unsigned int) << 6); memset(fUIntPool[0], 0, sizeof(unsigned int) << 6); // Register self as handler for XMLBufferFull events on the CDATA buffer fCDataBuf.setFullHandler(this, fBufferSize); if (fValidator) { fValidatorFromUser = true; initValidator(fValidator); } } void XMLScanner::cleanUp() { delete fAttrList; delete fAttrDupChkRegistry; delete fValidationContext; fMemoryManager->deallocate(fRootElemName);//delete [] fRootElemName; fMemoryManager->deallocate(fExternalSchemaLocation);//delete [] fExternalSchemaLocation; fMemoryManager->deallocate(fExternalNoNamespaceSchemaLocation);//delete [] fExternalNoNamespaceSchemaLocation; // delete fUIntPool if (fUIntPool) { for (unsigned int i=0; i<=fUIntPoolRow; i++) { fMemoryManager->deallocate(fUIntPool[i]); } fMemoryManager->deallocate(fUIntPool); } } void XMLScanner::initValidator(XMLValidator* theValidator) { // Tell the validator about the stuff it needs to know in order to // do its work. theValidator->setScannerInfo(this, &fReaderMgr, &fBufMgr); theValidator->setErrorReporter(fErrorReporter); } // --------------------------------------------------------------------------- // XMLScanner: Error emitting methods // --------------------------------------------------------------------------- // These methods are called whenever the scanner wants to emit an error. // It handles getting the message loaded, doing token replacement, etc... // and then calling the error handler, if its installed. bool XMLScanner::emitErrorWillThrowException(const XMLErrs::Codes toEmit) { if (XMLErrs::isFatal(toEmit) && fExitOnFirstFatal && !fInException) return true; return false; } void XMLScanner::emitError(const XMLErrs::Codes toEmit) { // Bump the error count if it is not a warning if (XMLErrs::errorType(toEmit) != XMLErrorReporter::ErrType_Warning) incrementErrorCount(); if (fErrorReporter) { // Load the message into a local for display const XMLSize_t msgSize = 1023; XMLCh errText[msgSize + 1]; if (!gMsgLoader->loadMsg(toEmit, errText, msgSize)) { // Probably should load a default msg here } // Create a LastExtEntityInfo structure and get the reader manager // to fill it in for us. This will give us the information about // the last reader on the stack that was an external entity of some // sort (i.e. it will ignore internal entities. ReaderMgr::LastExtEntityInfo lastInfo; fReaderMgr.getLastExtEntityInfo(lastInfo); fErrorReporter->error ( toEmit , XMLUni::fgXMLErrDomain , XMLErrs::errorType(toEmit) , errText , lastInfo.systemId , lastInfo.publicId , lastInfo.lineNumber , lastInfo.colNumber ); } // Bail out if its fatal an we are to give up on the first fatal error if (emitErrorWillThrowException(toEmit)) throw toEmit; } void XMLScanner::emitError( const XMLErrs::Codes toEmit , const XMLCh* const text1 , const XMLCh* const text2 , const XMLCh* const text3 , const XMLCh* const text4) { // Bump the error count if it is not a warning if (XMLErrs::errorType(toEmit) != XMLErrorReporter::ErrType_Warning) incrementErrorCount(); if (fErrorReporter) { // Load the message into alocal and replace any tokens found in // the text. const XMLSize_t maxChars = 2047; XMLCh errText[maxChars + 1]; if (!gMsgLoader->loadMsg(toEmit, errText, maxChars, text1, text2, text3, text4, fMemoryManager)) { // Should probably load a default message here } // Create a LastExtEntityInfo structure and get the reader manager // to fill it in for us. This will give us the information about // the last reader on the stack that was an external entity of some // sort (i.e. it will ignore internal entities. ReaderMgr::LastExtEntityInfo lastInfo; fReaderMgr.getLastExtEntityInfo(lastInfo); fErrorReporter->error ( toEmit , XMLUni::fgXMLErrDomain , XMLErrs::errorType(toEmit) , errText , lastInfo.systemId , lastInfo.publicId , lastInfo.lineNumber , lastInfo.colNumber ); } // Bail out if its fatal an we are to give up on the first fatal error if (emitErrorWillThrowException(toEmit)) throw toEmit; } void XMLScanner::emitError( const XMLErrs::Codes toEmit , const char* const text1 , const char* const text2 , const char* const text3 , const char* const text4) { // Bump the error count if it is not a warning if (XMLErrs::errorType(toEmit) != XMLErrorReporter::ErrType_Warning) incrementErrorCount(); if (fErrorReporter) { // Load the message into alocal and replace any tokens found in // the text. const XMLSize_t maxChars = 2047; XMLCh errText[maxChars + 1]; if (!gMsgLoader->loadMsg(toEmit, errText, maxChars, text1, text2, text3, text4, fMemoryManager)) { // Should probably load a default message here } // Create a LastExtEntityInfo structure and get the reader manager // to fill it in for us. This will give us the information about // the last reader on the stack that was an external entity of some // sort (i.e. it will ignore internal entities. ReaderMgr::LastExtEntityInfo lastInfo; fReaderMgr.getLastExtEntityInfo(lastInfo); fErrorReporter->error ( toEmit , XMLUni::fgXMLErrDomain , XMLErrs::errorType(toEmit) , errText , lastInfo.systemId , lastInfo.publicId , lastInfo.lineNumber , lastInfo.colNumber ); } // Bail out if its fatal an we are to give up on the first fatal error if (emitErrorWillThrowException(toEmit)) throw toEmit; } void XMLScanner::emitError( const XMLErrs::Codes toEmit , const XMLExcepts::Codes originalExceptCode , const XMLCh* const text1 , const XMLCh* const text2 , const XMLCh* const text3 , const XMLCh* const text4) { // Bump the error count if it is not a warning if (XMLErrs::errorType(toEmit) != XMLErrorReporter::ErrType_Warning) incrementErrorCount(); if (fErrorReporter) { // Load the message into alocal and replace any tokens found in // the text. const XMLSize_t maxChars = 2047; XMLCh errText[maxChars + 1]; if (!gMsgLoader->loadMsg(toEmit, errText, maxChars, text1, text2, text3, text4, fMemoryManager)) { // Should probably load a default message here } // Create a LastExtEntityInfo structure and get the reader manager // to fill it in for us. This will give us the information about // the last reader on the stack that was an external entity of some // sort (i.e. it will ignore internal entities. ReaderMgr::LastExtEntityInfo lastInfo; fReaderMgr.getLastExtEntityInfo(lastInfo); fErrorReporter->error ( originalExceptCode , XMLUni::fgExceptDomain //fgXMLErrDomain , XMLErrs::errorType(toEmit) , errText , lastInfo.systemId , lastInfo.publicId , lastInfo.lineNumber , lastInfo.colNumber ); } // Bail out if its fatal an we are to give up on the first fatal error if (emitErrorWillThrowException(toEmit)) throw toEmit; } // --------------------------------------------------------------------------- // XMLScanner: Getter methods // --------------------------------------------------------------------------- // This method allows the caller to query the current location of the scanner. // It will return the sys/public ids of the current entity, and the line/col // position within it. // // NOTE: This API returns the location with the last external file. So if its // currently scanning an entity, the position returned will be the end of // the entity reference in the file that had the reference. // /*bool XMLScanner::getLastExtLocation( XMLCh* const sysIdToFill , const unsigned int maxSysIdChars , XMLCh* const pubIdToFill , const unsigned int maxPubIdChars , XMLSSize_t& lineToFill , XMLSSize_t& colToFill) const { // Create a local info object and get it filled in by the reader manager ReaderMgr::LastExtEntityInfo lastInfo; fReaderMgr.getLastExtEntityInfo(lastInfo); // Fill in the line and column number lineToFill = lastInfo.lineNumber; colToFill = lastInfo.colNumber; // And copy over as much of the ids as will fit sysIdToFill[0] = 0; if (lastInfo.systemId) { if (XMLString::stringLen(lastInfo.systemId) > maxSysIdChars) return false; XMLString::copyString(sysIdToFill, lastInfo.systemId); } pubIdToFill[0] = 0; if (lastInfo.publicId) { if (XMLString::stringLen(lastInfo.publicId) > maxPubIdChars) return false; XMLString::copyString(pubIdToFill, lastInfo.publicId); } return true; }*/ // --------------------------------------------------------------------------- // XMLScanner: Private scanning methods // --------------------------------------------------------------------------- // This method is called after the end of the root element, to handle // any miscellaneous stuff hanging around. void XMLScanner::scanMiscellaneous() { // Get a buffer for this work XMLBufBid bbCData(&fBufMgr); while (true) { try { const XMLCh nextCh = fReaderMgr.peekNextChar(); // Watch for end of file and break out if (!nextCh) break; if (nextCh == chOpenAngle) { if (checkXMLDecl(true)) { // Can't have an XML decl here emitError(XMLErrs::NotValidAfterContent); fReaderMgr.skipPastChar(chCloseAngle); } else if (fReaderMgr.skippedString(XMLUni::fgPIString)) { scanPI(); } else if (fReaderMgr.skippedString(XMLUni::fgCommentString)) { scanComment(); } else { // This can't be possible, so just give up emitError(XMLErrs::ExpectedCommentOrPI); fReaderMgr.skipPastChar(chCloseAngle); } } else if (fReaderMgr.getCurrentReader()->isWhitespace(nextCh)) { // If we have a doc handler, then gather up the spaces and // call back. Otherwise, just skip over whitespace. if (fDocHandler) { fReaderMgr.getSpaces(bbCData.getBuffer()); fDocHandler->ignorableWhitespace ( bbCData.getRawBuffer() , bbCData.getLen() , false ); } else { fReaderMgr.skipPastSpaces(); } } else { emitError(XMLErrs::ExpectedCommentOrPI); fReaderMgr.skipPastChar(chCloseAngle); } } catch(const EndOfEntityException&) { // Some entity leaked out of the content part of the document. Issue // a warning and keep going. emitError(XMLErrs::EntityPropogated); } } } // Scans a PI and calls the appropriate callbacks. At entry we have just // scanned the ' to be a termination of the target if (fReaderMgr.skippedChar(chCloseAngle)) break; } // Check for correct surrogate pairs if ((nextCh >= 0xD800) && (nextCh <= 0xDBFF)) { if (gotLeadingSurrogate) emitError(XMLErrs::Expected2ndSurrogateChar); else gotLeadingSurrogate = true; } else { if (gotLeadingSurrogate) { if ((nextCh < 0xDC00) || (nextCh > 0xDFFF)) emitError(XMLErrs::Expected2ndSurrogateChar); } // Its got to at least be a valid XML character else if (!fReaderMgr.getCurrentReader()->isXMLChar(nextCh)) { XMLCh tmpBuf[9]; XMLString::binToText ( nextCh , tmpBuf , 8 , 16 , fMemoryManager ); emitError(XMLErrs::InvalidCharacter, tmpBuf); } gotLeadingSurrogate = false; } bbTarget.append(nextCh); } } else { // No target, but make sure its terminated ok if (!fReaderMgr.skippedChar(chQuestion)) { emitError(XMLErrs::UnterminatedPI); fReaderMgr.skipPastChar(chCloseAngle); return; } if (!fReaderMgr.skippedChar(chCloseAngle)) { emitError(XMLErrs::UnterminatedPI); fReaderMgr.skipPastChar(chCloseAngle); return; } } // Point the target pointer at the raw data targetPtr = bbTarget.getRawBuffer(); // If we have a handler, then call it if (fDocHandler) { fDocHandler->docPI ( namePtr , targetPtr ); } //mark PI is seen within the current element if (! fElemStack.isEmpty()) fElemStack.setCommentOrPISeen(); } // Scans all the input from the start of the file to the root element. // There does not have to be anything in the prolog necessarily, but usually // there is at least an XMLDecl. // // On exit from here we are either at the end of the file or about to read // the opening < of the root element. void XMLScanner::scanProlog() { bool sawDocTypeDecl = false; // Get a buffer for whitespace processing XMLBufBid bbCData(&fBufMgr); // Loop through the prolog. If there is no content, this could go all // the way to the end of the file. try { while (true) { const XMLCh nextCh = fReaderMgr.peekNextChar(); if (nextCh == chOpenAngle) { // Ok, it could be the xml decl, a comment, the doc type line, // or the start of the root element. if (checkXMLDecl(true)) { // There shall be at lease --ONE-- space in between // the tag 'getLineNumber() != 1) || (curReader->getColumnNumber() != 7)) { emitError(XMLErrs::XMLDeclMustBeFirst); } scanXMLDecl(Decl_XML); } else if (fReaderMgr.skippedString(XMLUni::fgPIString)) { scanPI(); } else if (fReaderMgr.skippedString(XMLUni::fgCommentString)) { scanComment(); } else if (fReaderMgr.skippedString(XMLUni::fgDocTypeString)) { if (sawDocTypeDecl) { emitError(XMLErrs::DuplicateDocTypeDecl); } scanDocTypeDecl(); sawDocTypeDecl = true; // if reusing grammar, this has been validated already in first scan // skip for performance if (fValidate && fGrammar && !fGrammar->getValidated()) { // validate the DTD scan so far fValidator->preContentValidation(fUseCachedGrammar, true); } } else { // Assume its the start of the root element return; } } else if (fReaderMgr.getCurrentReader()->isWhitespace(nextCh)) { // If we have a document handler then gather up the // whitespace and call back. Otherwise just skip over spaces. if (fDocHandler) { fReaderMgr.getSpaces(bbCData.getBuffer()); fDocHandler->ignorableWhitespace ( bbCData.getRawBuffer() , bbCData.getLen() , false ); } else { fReaderMgr.skipPastSpaces(); } } else { emitError(XMLErrs::InvalidDocumentStructure); // Watch for end of file and break out if (!nextCh) break; else fReaderMgr.skipPastChar(chCloseAngle); } } } catch(const EndOfEntityException&) { // We should never get an end of entity here. They should only // occur within the doc type scanning method, and not leak out to // here. emitError ( XMLErrs::UnexpectedEOE , "in prolog" ); } } // Scans the line. This stuff is all sequential so we don't // do any state machine loop here. We just bull straight through it. It ends // past the closing bracket. If there is a document handler, then its called // on the XMLDecl callback. // // On entry, the ' // [77] TextDecl::= '' void XMLScanner::scanXMLDecl(const DeclTypes type) { // Get us some buffers to use XMLBufBid bbVersion(&fBufMgr); XMLBufBid bbEncoding(&fBufMgr); XMLBufBid bbStand(&fBufMgr); XMLBufBid bbDummy(&fBufMgr); XMLBufBid bbName(&fBufMgr); // We use this little enum and array to keep up with what we found // and what order we found them in. This lets us get them free form // without too much overhead, but still know that they were in the // wrong order. enum Strings { VersionString , EncodingString , StandaloneString , UnknownString , StringCount }; int flags[StringCount] = { -1, -1, -1, -1 }; // Also set up a list of buffers in the right order so that we know // where to put stuff. XMLBuffer* buffers[StringCount] ; buffers[0] = &bbVersion.getBuffer(); buffers[1] = &bbEncoding.getBuffer(); buffers[2] = &bbStand.getBuffer(); buffers[3] = &bbDummy.getBuffer(); int curCount = 0; Strings curString; XMLBuffer& nameBuf = bbName.getBuffer(); while (true) { // Skip any spaces bool skippedSomething; fReaderMgr.skipPastSpaces(skippedSomething, true); // If we are looking at a question mark, then break out if (fReaderMgr.lookingAtChar(chQuestion)) break; // If this is not the first string, then we require the spaces if (!skippedSomething && curCount) emitError(XMLErrs::ExpectedWhitespace); // Get characters up to the next whitespace or equal's sign. if (!scanUpToWSOr(nameBuf, chEqual)) emitError(XMLErrs::ExpectedDeclString); // See if it matches any of our expected strings if (XMLString::equals(nameBuf.getRawBuffer(), XMLUni::fgVersionString)) curString = VersionString; else if (XMLString::equals(nameBuf.getRawBuffer(), XMLUni::fgEncodingString)) curString = EncodingString; else if (XMLString::equals(nameBuf.getRawBuffer(), XMLUni::fgStandaloneString)) curString = StandaloneString; else curString = UnknownString; // If its an unknown string, then give that error. Else check to // see if this one has been done already and give that error. if (curString == UnknownString) emitError(XMLErrs::ExpectedDeclString, nameBuf.getRawBuffer()); else if (flags[curString] != -1) emitError(XMLErrs::DeclStringRep, nameBuf.getRawBuffer()); else if (flags[curString] == -1) flags[curString] = ++curCount; // Scan for an equal's sign. If we don't find it, issue an error // but keep trying to go on. if (!scanEq(true)) emitError(XMLErrs::ExpectedEqSign); // Get a quote string into the buffer for the string that we are // currently working on. if (!getQuotedString(*buffers[curString])) { emitError(XMLErrs::ExpectedQuotedString); fReaderMgr.skipPastChar(chCloseAngle); return; } // And validate the value according which one it was const XMLCh* rawValue = buffers[curString]->getRawBuffer(); if (curString == VersionString) { if (XMLString::equals(rawValue, XMLUni::fgVersion1_1)) { if (type == Decl_XML) { fXMLVersion = XMLReader::XMLV1_1; fReaderMgr.setXMLVersion(XMLReader::XMLV1_1); } else { if (fXMLVersion != XMLReader::XMLV1_1) emitError(XMLErrs::UnsupportedXMLVersion, rawValue); } } else if (XMLString::equals(rawValue, XMLUni::fgVersion1_0)) { if (type == Decl_XML) { fXMLVersion = XMLReader::XMLV1_0; fReaderMgr.setXMLVersion(XMLReader::XMLV1_0); } } else emitError(XMLErrs::UnsupportedXMLVersion, rawValue); } else if (curString == EncodingString) { if (!XMLString::isValidEncName(rawValue)) emitError(XMLErrs::BadXMLEncoding, rawValue); } else if (curString == StandaloneString) { if (XMLString::equals(rawValue, XMLUni::fgYesString)) fStandalone = true; else if (XMLString::equals(rawValue, XMLUni::fgNoString)) fStandalone = false; else { emitError(XMLErrs::BadStandalone); //if (!XMLString::compareIString(rawValue, XMLUni::fgYesString)) //else if (!XMLString::compareIString(rawValue, XMLUni::fgNoString)) if (buffers[curString]->getLen() == 3 && (((rawValue[0] == chLatin_y) || (rawValue[0] == chLatin_Y)) && ((rawValue[1] == chLatin_e) || (rawValue[1] == chLatin_E)) && ((rawValue[2] == chLatin_s) || (rawValue[2] == chLatin_S)))) fStandalone = true; else if (buffers[curString]->getLen() == 2 && (((rawValue[0] == chLatin_n) || (rawValue[0] == chLatin_N)) && ((rawValue[1] == chLatin_o) || (rawValue[1] == chLatin_O)))) fStandalone = false; } } } // Make sure that the strings present are in order. We don't care about // which ones are present at this point, just that any there are in the // right order. int curTop = 0; for (int index = VersionString; index < StandaloneString; index++) { if (flags[index] != -1) { if (flags[index] != curTop + 1) { emitError(XMLErrs::DeclStringsInWrongOrder); break; } curTop = flags[index]; } } // If its an XML decl, the version must be present. // If its a Text decl, then encoding must be present AND standalone must not be present. if ((type == Decl_XML) && (flags[VersionString] == -1)) emitError(XMLErrs::XMLVersionRequired); else if (type == Decl_Text) { if (flags[StandaloneString] != -1) emitError(XMLErrs::StandaloneNotLegal); if (flags[EncodingString] == -1) emitError(XMLErrs::EncodingRequired); } if (!fReaderMgr.skippedChar(chQuestion)) { emitError(XMLErrs::UnterminatedXMLDecl); fReaderMgr.skipPastChar(chCloseAngle); } else if (!fReaderMgr.skippedChar(chCloseAngle)) { emitError(XMLErrs::UnterminatedXMLDecl); fReaderMgr.skipPastChar(chCloseAngle); } // Do this before we possibly update the reader with the // actual encoding string. Otherwise, we will pass the wrong thing // for the last parameter! const XMLCh* actualEnc = fReaderMgr.getCurrentEncodingStr(); // Ok, we've now seen the real encoding string, if there was one, so // lets call back on the current reader and tell it what the real // encoding string was. If it fails, that's because it represents some // sort of contradiction with the autosensed format, and it keeps the // original encoding. // // NOTE: This can fail for a number of reasons, such as a bogus encoding // name or because its in flagrant contradiction of the auto-sensed // format. if (flags[EncodingString] != -1) { if (!fReaderMgr.getCurrentReader()->setEncoding(bbEncoding.getRawBuffer())) emitError(XMLErrs::ContradictoryEncoding, bbEncoding.getRawBuffer()); else actualEnc = bbEncoding.getRawBuffer(); } // If we have a document handler then call the XML Decl callback. if (type == Decl_XML) { if (fDocHandler) fDocHandler->XMLDecl ( bbVersion.getRawBuffer() , bbEncoding.getRawBuffer() , bbStand.getRawBuffer() , actualEnc ); } else if (type == Decl_Text) { if (fDocTypeHandler) fDocTypeHandler->TextDecl ( bbVersion.getRawBuffer() , bbEncoding.getRawBuffer() ); } } const XMLCh* XMLScanner::getURIText(const unsigned int uriId) const { if (fURIStringPool->exists(uriId)) { // Look up the URI in the string pool and return its id const XMLCh* value = fURIStringPool->getValueForId(uriId); if (!value) return XMLUni::fgZeroLenString; return value; } else return XMLUni::fgZeroLenString; } bool XMLScanner::getURIText( const unsigned int uriId , XMLBuffer& uriBufToFill) const { if (fURIStringPool->exists(uriId)) { // Look up the URI in the string pool and return its id const XMLCh* value = fURIStringPool->getValueForId(uriId); if (!value) return false; uriBufToFill.set(value); return true; } else return false; } bool XMLScanner::checkXMLDecl(bool startWithAngle) { // [23] XMLDecl ::= '' // [24] VersionInfo ::= S 'version' Eq ("'" VersionNum "'" | '"' VersionNum '"') // // [3] S ::= (#x20 | #x9 | #xD | #xA)+ if (startWithAngle) { if (fReaderMgr.peekString(XMLUni::fgXMLDeclString)) { if (fReaderMgr.skippedString(XMLUni::fgXMLDeclStringSpace) || fReaderMgr.skippedString(XMLUni::fgXMLDeclStringHTab) || fReaderMgr.skippedString(XMLUni::fgXMLDeclStringLF) || fReaderMgr.skippedString(XMLUni::fgXMLDeclStringCR)) { return true; } } else if (fReaderMgr.skippedString(XMLUni::fgXMLDeclStringSpaceU) || fReaderMgr.skippedString(XMLUni::fgXMLDeclStringHTabU) || fReaderMgr.skippedString(XMLUni::fgXMLDeclStringLFU) || fReaderMgr.skippedString(XMLUni::fgXMLDeclStringCRU)) { // Just in case, check for upper case. If found, issue // an error, but keep going. emitError(XMLErrs::XMLDeclMustBeLowerCase); return true; } } else { if (fReaderMgr.peekString(XMLUni::fgXMLString)) { if (fReaderMgr.skippedString(XMLUni::fgXMLStringSpace) || fReaderMgr.skippedString(XMLUni::fgXMLStringHTab) || fReaderMgr.skippedString(XMLUni::fgXMLStringLF) || fReaderMgr.skippedString(XMLUni::fgXMLStringCR)) { return true; } } else if (fReaderMgr.skippedString(XMLUni::fgXMLStringSpaceU) || fReaderMgr.skippedString(XMLUni::fgXMLStringHTabU) || fReaderMgr.skippedString(XMLUni::fgXMLStringLFU) || fReaderMgr.skippedString(XMLUni::fgXMLStringCRU)) { // Just in case, check for upper case. If found, issue // an error, but keep going. emitError(XMLErrs::XMLDeclMustBeLowerCase); return true; } } return false; } // --------------------------------------------------------------------------- // XMLScanner: Grammar preparsing // --------------------------------------------------------------------------- Grammar* XMLScanner::loadGrammar(const XMLCh* const systemId , const short grammarType , const bool toCache) { InputSource* srcToUse = 0; if (fEntityHandler){ ReaderMgr::LastExtEntityInfo lastInfo; fReaderMgr.getLastExtEntityInfo(lastInfo); XMLResourceIdentifier resourceIdentifier(XMLResourceIdentifier::ExternalEntity, systemId, 0, XMLUni::fgZeroLenString, lastInfo.systemId, &fReaderMgr); srcToUse = fEntityHandler->resolveEntity(&resourceIdentifier); } // First we try to parse it as a URL. If that fails, we assume its // a file and try it that way. if (!srcToUse) { if (fDisableDefaultEntityResolution) return 0; try { // Create a temporary URL. Since this is the primary document, // it has to be fully qualified. If not, then assume we are just // mistaking a file for a URL. XMLURL tmpURL(fMemoryManager); if (XMLURL::parse(systemId, tmpURL)) { if (tmpURL.isRelative()) { if (!fStandardUriConformant) srcToUse = new (fMemoryManager) LocalFileInputSource(systemId, fMemoryManager); else { // since this is the top of the try/catch, cannot call ThrowXMLwithMemMgr // emit the error directly MalformedURLException e(__FILE__, __LINE__, XMLExcepts::URL_NoProtocolPresent, fMemoryManager); fInException = true; emitError ( XMLErrs::XMLException_Fatal , e.getCode() , e.getMessage() ); return 0; } } else { if (fStandardUriConformant && tmpURL.hasInvalidChar()) { MalformedURLException e(__FILE__, __LINE__, XMLExcepts::URL_MalformedURL, fMemoryManager); fInException = true; emitError ( XMLErrs::XMLException_Fatal , e.getCode() , e.getMessage() ); return 0; } srcToUse = new (fMemoryManager) URLInputSource(tmpURL, fMemoryManager); } } else { if (!fStandardUriConformant) srcToUse = new (fMemoryManager) LocalFileInputSource(systemId, fMemoryManager); else { // since this is the top of the try/catch, cannot call ThrowXMLwithMemMgr // emit the error directly // lazy bypass ... since all MalformedURLException are fatal, no need to check the type MalformedURLException e(__FILE__, __LINE__, XMLExcepts::URL_MalformedURL); fInException = true; emitError ( XMLErrs::XMLException_Fatal , e.getCode() , e.getMessage() ); return 0; } } } catch(const XMLException& excToCatch) { // For any other XMLException, // emit the error and catch any user exception thrown from here. fInException = true; if (excToCatch.getErrorType() == XMLErrorReporter::ErrType_Warning) emitError ( XMLErrs::XMLException_Warning , excToCatch.getCode() , excToCatch.getMessage() ); else if (excToCatch.getErrorType() >= XMLErrorReporter::ErrType_Fatal) emitError ( XMLErrs::XMLException_Fatal , excToCatch.getCode() , excToCatch.getMessage() ); else emitError ( XMLErrs::XMLException_Error , excToCatch.getCode() , excToCatch.getMessage() ); return 0; } } Janitor janSrc(srcToUse); return loadGrammar(*srcToUse, grammarType, toCache); } Grammar* XMLScanner::loadGrammar(const char* const systemId , const short grammarType , const bool toCache) { // We just delegate this to the XMLCh version after transcoding XMLCh* tmpBuf = XMLString::transcode(systemId, fMemoryManager); ArrayJanitor janBuf(tmpBuf, fMemoryManager); return loadGrammar(tmpBuf, grammarType, toCache); } // --------------------------------------------------------------------------- // XMLScanner: Setter methods // --------------------------------------------------------------------------- void XMLScanner::setURIStringPool(XMLStringPool* const stringPool) { fURIStringPool = stringPool; fEmptyNamespaceId = fURIStringPool->addOrFind(XMLUni::fgZeroLenString); fUnknownNamespaceId = fURIStringPool->addOrFind(XMLUni::fgUnknownURIName); fXMLNamespaceId = fURIStringPool->addOrFind(XMLUni::fgXMLURIName); fXMLNSNamespaceId = fURIStringPool->addOrFind(XMLUni::fgXMLNSURIName); } // --------------------------------------------------------------------------- // XMLScanner: Private helper methods // --------------------------------------------------------------------------- /*** * In reusing grammars (cacheing grammar from parse, or use cached grammar), internal * dtd is allowed conditionally. * * In the case of cacheing grammar from parse, it is NOT allowed. * * In the case of use cached grammar, * if external dtd is present and it is parsed before, then it is not allowed, * otherwise it is allowed. * ***/ void XMLScanner::checkInternalDTD(bool hasExtSubset ,const XMLCh* const sysId ,const XMLCh* const pubId) { if (fToCacheGrammar) ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Val_CantHaveIntSS, fMemoryManager); if (fUseCachedGrammar && hasExtSubset && !fIgnoreCachedDTD) { InputSource* sysIdSrc = resolveSystemId(sysId, pubId); if (sysIdSrc) { Janitor janSysIdSrc(sysIdSrc); Grammar* grammar = fGrammarResolver->getGrammar(sysIdSrc->getSystemId()); if (grammar && grammar->getGrammarType() == Grammar::DTDGrammarType) { ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::Val_CantHaveIntSS, fMemoryManager); } } } } // This method is called after the content scan to insure that all the // ID/IDREF attributes match up (i.e. that all IDREFs refer to IDs.) This is // an XML 1.0 rule, so we can do here in the core. void XMLScanner::checkIDRefs() { // Iterate the id ref list. If we find any entries here which are used // but not declared, then that's an error. RefHashTableOfEnumerator refEnum(fValidationContext->getIdRefList(), false, fMemoryManager); while (refEnum.hasMoreElements()) { // Get a ref to the current element const XMLRefInfo& curRef = refEnum.nextElement(); // If its used but not declared, then its an error if (!curRef.getDeclared() && curRef.getUsed() && fValidate) fValidator->emitError(XMLValid::IDNotDeclared, curRef.getRefName()); } } // This just does a simple check that the passed progressive scan token is // legal for this scanner. bool XMLScanner::isLegalToken(const XMLPScanToken& toCheck) { return ((fScannerId == toCheck.fScannerId) && (fSequenceId == toCheck.fSequenceId)); } // This method will handle figuring out what the next top level token is // in the input stream. It will return an enumerated value that indicates // what it believes the next XML level token must be. It will eat as many // chars are required to figure out what is next. XMLScanner::XMLTokens XMLScanner::senseNextToken(XMLSize_t& orgReader) { // Get the next character and use it to guesstimate what the next token // is going to be. We turn on end of entity exceptions when we do this // in order to catch the scenario where the current entity ended at // the > of some markup. XMLCh nextCh=0; XMLReader* curReader=fReaderMgr.getCurrentReader(); // avoid setting up the ThrowEOEJanitor if we know that we have data in the current reader if(curReader && curReader->charsLeftInBuffer()>0) nextCh = fReaderMgr.peekNextChar(); else { ThrowEOEJanitor janMgr(&fReaderMgr, true); nextCh = fReaderMgr.peekNextChar(); } // If it's not a '<' we must be in content (unless it's a EOF) // // This includes entity references '&' of some sort. These must // be character data because that's the only place a reference can // occur in content. if (nextCh != chOpenAngle) return nextCh?Token_CharData:Token_EOF; // Ok it had to have been a '<' character. So get it out of the reader // and store the reader number where we saw it, passing it back to the // caller. fReaderMgr.getNextChar(); orgReader = fReaderMgr.getCurrentReaderNum(); // Ok, so lets go through the things that it could be at this point which // are all some form of markup. switch(fReaderMgr.peekNextChar()) { case chForwardSlash: { fReaderMgr.getNextChar(); return Token_EndTag; } case chBang: { static const XMLCh gCDATAStr[] = { chBang, chOpenSquare, chLatin_C, chLatin_D, chLatin_A , chLatin_T, chLatin_A, chNull }; static const XMLCh gCommentString[] = { chBang, chDash, chDash, chNull }; if (fReaderMgr.skippedString(gCDATAStr)) return Token_CData; if (fReaderMgr.skippedString(gCommentString)) return Token_Comment; emitError(XMLErrs::ExpectedCommentOrCDATA); return Token_Unknown; } case chQuestion: { // It must be a PI fReaderMgr.getNextChar(); return Token_PI; } } // Assume its an element name, so return with a start tag token. If it // turns out not to be, then it will fail when it cannot get a valid tag. return Token_StartTag; } // --------------------------------------------------------------------------- // XMLScanner: Private parsing methods // --------------------------------------------------------------------------- // This guy just scans out a single or double quoted string of characters. // It does not pass any judgement on the contents and assumes that it is // illegal to have another quote of the same kind inside the string's // contents. // // NOTE: This is for simple stuff like the strings in the XMLDecl which // cannot have any entities inside them. So this guy does not handle any // end of entity stuff. bool XMLScanner::getQuotedString(XMLBuffer& toFill) { // Reset the target buffer toFill.reset(); // Get the next char which must be a single or double quote XMLCh quoteCh; if (!fReaderMgr.skipIfQuote(quoteCh)) return false; XMLCh nextCh; // Get another char and see if it matches the starting quote char while ((nextCh=fReaderMgr.getNextChar())!=quoteCh) { // We should never get either an end of file null char here. If we // do, just fail. It will be handled more gracefully in the higher // level code that called us. if (!nextCh) return false; // Else add it to the buffer toFill.append(nextCh); } return true; } // This method scans a character reference and returns the character that // was refered to. It assumes that we've already scanned the &# characters // that prefix the numeric code. bool XMLScanner::scanCharRef(XMLCh& toFill, XMLCh& second) { bool gotOne = false; unsigned int value = 0; // Set the radix. Its supposed to be a lower case x if hex. But, in // order to recover well, we check for an upper and put out an error // for that. unsigned int radix = 10; if (fReaderMgr.skippedChar(chLatin_x)) { radix = 16; } else if (fReaderMgr.skippedChar(chLatin_X)) { emitError(XMLErrs::HexRadixMustBeLowerCase); radix = 16; } while (true) { const XMLCh nextCh = fReaderMgr.peekNextChar(); // Watch for EOF if (!nextCh) ThrowXMLwithMemMgr(UnexpectedEOFException, XMLExcepts::Gen_UnexpectedEOF, fMemoryManager); // Break out on the terminating semicolon if (nextCh == chSemiColon) { fReaderMgr.getNextChar(); break; } // Convert this char to a binary value, or bail out if its not // one. unsigned int nextVal; if ((nextCh >= chDigit_0) && (nextCh <= chDigit_9)) nextVal = (unsigned int)(nextCh - chDigit_0); else if ((nextCh >= chLatin_A) && (nextCh <= chLatin_F)) nextVal= (unsigned int)(10 + (nextCh - chLatin_A)); else if ((nextCh >= chLatin_a) && (nextCh <= chLatin_f)) nextVal = (unsigned int)(10 + (nextCh - chLatin_a)); else { // Return a zero toFill = 0; // If we got at least a sigit, then do an unterminated ref error. // Else, do an expected a numerical ref thing. if (gotOne) emitError(XMLErrs::UnterminatedCharRef); else emitError(XMLErrs::ExpectedNumericalCharRef); // Return failure return false; } // Make sure its valid for the radix. If not, then just eat the // digit and go on after issueing an error. Else, update the // running value with this new digit. if (nextVal >= radix) { XMLCh tmpStr[2]; tmpStr[0] = nextCh; tmpStr[1] = chNull; emitError(XMLErrs::BadDigitForRadix, tmpStr); } else { value = (value * radix) + nextVal; // Guard against overflow. if (value > 0x10FFFF) { // Character reference was not in the valid range emitError(XMLErrs::InvalidCharacterRef); return false; } } // Indicate that we got at least one good digit gotOne = true; // And eat the last char fReaderMgr.getNextChar(); } // Return the char (or chars) // And check if the character expanded is valid or not if (value >= 0x10000 && value <= 0x10FFFF) { value -= 0x10000; toFill = XMLCh((value >> 10) + 0xD800); second = XMLCh((value & 0x3FF) + 0xDC00); } else if (value <= 0xFFFD) { toFill = XMLCh(value); second = 0; if (!fReaderMgr.getCurrentReader()->isXMLChar(toFill) && !fReaderMgr.getCurrentReader()->isControlChar(toFill)) { // Character reference was not in the valid range emitError(XMLErrs::InvalidCharacterRef); return false; } } else { // Character reference was not in the valid range emitError(XMLErrs::InvalidCharacterRef); return false; } return true; } // We get here after the '' It will calls the appropriate handler with the comment // text, if one is provided. A comment can be in either the document or // the DTD, so the fInDocument flag is used to know which handler to send // it to. void XMLScanner::scanComment() { enum States { InText , OneDash , TwoDashes }; // Get a buffer for this XMLBufBid bbComment(&fBufMgr); // Get the comment text into a temp buffer. Be sure to use temp buffer // two here, since its to be used for stuff that is potentially longer // than just a name. States curState = InText; bool gotLeadingSurrogate = false; while (true) { // Get the next character const XMLCh nextCh = fReaderMgr.getNextChar(); // Watch for an end of file if (!nextCh) { emitError(XMLErrs::UnterminatedComment); ThrowXMLwithMemMgr(UnexpectedEOFException, XMLExcepts::Gen_UnexpectedEOF, fMemoryManager); } // Check for correct surrogate pairs if ((nextCh >= 0xD800) && (nextCh <= 0xDBFF)) { if (gotLeadingSurrogate) emitError(XMLErrs::Expected2ndSurrogateChar); else gotLeadingSurrogate = true; } else { if (gotLeadingSurrogate) { if ((nextCh < 0xDC00) || (nextCh > 0xDFFF)) emitError(XMLErrs::Expected2ndSurrogateChar); } // Its got to at least be a valid XML character else if (!fReaderMgr.getCurrentReader()->isXMLChar(nextCh)) { XMLCh tmpBuf[9]; XMLString::binToText ( nextCh , tmpBuf , 8 , 16 , fMemoryManager ); emitError(XMLErrs::InvalidCharacter, tmpBuf); } gotLeadingSurrogate = false; } if (curState == InText) { // If its a dash, go to OneDash state. Otherwise take as text if (nextCh == chDash) curState = OneDash; else bbComment.append(nextCh); } else if (curState == OneDash) { // If its another dash, then we change to the two dashes states. // Otherwise, we have to put in the deficit dash and the new // character and go back to InText. if (nextCh == chDash) { curState = TwoDashes; } else { bbComment.append(chDash); bbComment.append(nextCh); curState = InText; } } else if (curState == TwoDashes) { // The next character must be the closing bracket if (nextCh != chCloseAngle) { emitError(XMLErrs::IllegalSequenceInComment); fReaderMgr.skipPastChar(chCloseAngle); return; } break; } } // If we have an available handler, call back with the comment. if (fDocHandler) { fDocHandler->docComment ( bbComment.getRawBuffer() ); } //mark comment is seen within the current element if (! fElemStack.isEmpty()) fElemStack.setCommentOrPISeen(); } // Most equal signs can have white space around them, so this little guy // just makes the calling code cleaner by eating whitespace. bool XMLScanner::scanEq(bool inDecl) { if(inDecl) { bool skippedSomething; fReaderMgr.skipPastSpaces(skippedSomething, inDecl); if (fReaderMgr.skippedChar(chEqual)) { fReaderMgr.skipPastSpaces(skippedSomething, inDecl); return true; } } else { fReaderMgr.skipPastSpaces(); if (fReaderMgr.skippedChar(chEqual)) { fReaderMgr.skipPastSpaces(); return true; } } return false; } XMLSize_t XMLScanner::scanUpToWSOr(XMLBuffer& toFill, const XMLCh chEndChar) { fReaderMgr.getUpToCharOrWS(toFill, chEndChar); return toFill.getLen(); } unsigned int *XMLScanner::getNewUIntPtr() { // this method hands back a new pointer initialized to 0 unsigned int *retVal; if(fUIntPoolCol < 64) { retVal = fUIntPool[fUIntPoolRow]+fUIntPoolCol; fUIntPoolCol++; return retVal; } // time to grow the pool... if(fUIntPoolRow+1 == fUIntPoolRowTotal) { // and time to add some space for new rows: fUIntPoolRowTotal <<= 1; unsigned int **newArray = (unsigned int **)fMemoryManager->allocate(sizeof(unsigned int *) * fUIntPoolRowTotal ); memcpy(newArray, fUIntPool, (fUIntPoolRow+1) * sizeof(unsigned int *)); fMemoryManager->deallocate(fUIntPool); fUIntPool = newArray; // need to 0 out new elements we won't need: for (unsigned int i=fUIntPoolRow+2; iallocate(sizeof(unsigned int) << 6); memset(fUIntPool[fUIntPoolRow], 0, sizeof(unsigned int) << 6); // point to next element fUIntPoolCol = 1; return fUIntPool[fUIntPoolRow]; } void XMLScanner::resetUIntPool() { // to reuse the unsigned int pool--and the hashtables that use it-- // simply reinitialize everything to 0's for(unsigned int i = 0; i<= fUIntPoolRow; i++) memset(fUIntPool[i], 0, sizeof(unsigned int) << 6); } void XMLScanner::recreateUIntPool() { // this allows a bloated unsigned int pool to be dispensed with // first, delete old fUIntPool for (unsigned int i=0; i<=fUIntPoolRow; i++) { fMemoryManager->deallocate(fUIntPool[i]); } fMemoryManager->deallocate(fUIntPool); fUIntPoolRow = fUIntPoolCol = 0; fUIntPoolRowTotal = 2; fUIntPool = (unsigned int **)fMemoryManager->allocate(sizeof(unsigned int *) * fUIntPoolRowTotal); fUIntPool[0] = (unsigned int *)fMemoryManager->allocate(sizeof(unsigned int) << 6); memset(fUIntPool[fUIntPoolRow], 0, sizeof(unsigned int) << 6); fUIntPool[1] = 0; } unsigned int XMLScanner::resolvePrefix( const XMLCh* const prefix , const ElemStack::MapModes mode) { // // If the prefix is empty, and we are in attribute mode, then we assign // it to the empty namespace because the default namespace does not // apply to attributes. // if (!*prefix) { if(mode == ElemStack::Mode_Attribute) return fEmptyNamespaceId; } // Watch for the special namespace prefixes. We always map these to // special URIs. 'xml' gets mapped to the official URI that its defined // to map to by the NS spec. xmlns gets mapped to a special place holder // URI that we define (so that it maps to something checkable.) else { if (XMLString::equals(prefix, XMLUni::fgXMLNSString)) return fXMLNSNamespaceId; else if (XMLString::equals(prefix, XMLUni::fgXMLString)) return fXMLNamespaceId; } // Ask the element stack to search up itself for a mapping for the // passed prefix. bool unknown; unsigned int uriId = fElemStack.mapPrefixToURI(prefix, unknown); // If it was unknown, then the URI was faked in but we have to issue an error if (unknown) emitError(XMLErrs::UnknownPrefix, prefix); // check to see if uriId is empty; in XML 1.1 an emptynamespace is okay unless // we are trying to use it. if (*prefix && mode == ElemStack::Mode_Element && fXMLVersion != XMLReader::XMLV1_0 && uriId == fElemStack.getEmptyNamespaceId()) emitError(XMLErrs::UnknownPrefix, prefix); return uriId; } unsigned int XMLScanner::resolveQName( const XMLCh* const qName , XMLBuffer& prefixBuf , const ElemStack::MapModes mode , int& prefixColonPos) { prefixColonPos = XMLString::indexOf(qName, chColon); return resolveQNameWithColon(qName, prefixBuf, mode, prefixColonPos); } unsigned int XMLScanner::resolveQNameWithColon( const XMLCh* const qName , XMLBuffer& prefixBuf , const ElemStack::MapModes mode , const int prefixColonPos) { // Lets split out the qName into a URI and name buffer first. The URI // can be empty. if (prefixColonPos == -1) { // Its all name with no prefix, so put the whole thing into the name // buffer. Then map the empty string to a URI, since the empty string // represents the default namespace. This will either return some // explicit URI which the default namespace is mapped to, or the // the default global namespace. prefixBuf.reset(); return resolvePrefix(XMLUni::fgZeroLenString, mode); } else { // Copy the chars up to but not including the colon into the prefix // buffer. prefixBuf.set(qName, prefixColonPos); return resolvePrefix(prefixBuf.getRawBuffer(), mode); } } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/internal/MemoryManagerImpl.hpp0000644000175000017500000000524711033366054022411 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: MemoryManagerImpl.hpp 673975 2008-07-04 09:23:56Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_MEMORYMANAGERIMPL_HPP) #define XERCESC_INCLUDE_GUARD_MEMORYMANAGERIMPL_HPP #include XERCES_CPP_NAMESPACE_BEGIN /** * Configurable memory manager * *

    This is Xerces default implementation of the memory * manager interface, which will be instantiated and used * in the absence of an application's memory manager. *

    */ class XMLUTIL_EXPORT MemoryManagerImpl : public MemoryManager { public: /** @name Constructor */ //@{ /** * Default constructor */ MemoryManagerImpl() { } //@} /** @name Destructor */ //@{ /** * Default destructor */ virtual ~MemoryManagerImpl() { } //@} /** * This method is called to obtain the memory manager that should be * used to allocate memory used in exceptions. * * @return A pointer to the memory manager */ virtual MemoryManager* getExceptionMemoryManager(); /** @name The virtual methods in MemoryManager */ //@{ /** * This method allocates requested memory. * * @param size The requested memory size * * @return A pointer to the allocated memory */ virtual void* allocate(XMLSize_t size); /** * This method deallocates memory * * @param p The pointer to the allocated memory to be deleted */ virtual void deallocate(void* p); //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- MemoryManagerImpl(const MemoryManagerImpl&); MemoryManagerImpl& operator=(const MemoryManagerImpl&); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/internal/XSerializeEngine.hpp0000644000175000017500000005545311042034666022236 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XSerializeEngine.hpp 679296 2008-07-24 08:13:42Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_XSERIALIZE_ENGINE_HPP) #define XERCESC_INCLUDE_GUARD_XSERIALIZE_ENGINE_HPP #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN class XSerializable; class XProtoType; class MemoryManager; class XSerializedObjectId; class BinOutputStream; class BinInputStream; class XMLGrammarPool; class XMLGrammarPoolImpl; class XMLStringPool; class XMLUTIL_EXPORT XSerializeEngine { public: enum { mode_Store , mode_Load }; static const bool toReadBufferLen; typedef unsigned int XSerializedObjectId_t; /*** * * Destructor * ***/ ~XSerializeEngine(); /*** * * Constructor for de-serialization(loading) * * Application needs to make sure that the instance of * BinInputStream, persists beyond the life of this * SerializeEngine. * * Param * inStream input stream * gramPool Grammar Pool * bufSize the size of the internal buffer * ***/ XSerializeEngine(BinInputStream* inStream , XMLGrammarPool* const gramPool , XMLSize_t bufSize = 8192 ); /*** * * Constructor for serialization(storing) * * Application needs to make sure that the instance of * BinOutputStream, persists beyond the life of this * SerializeEngine. * * Param * outStream output stream * gramPool Grammar Pool * bufSize the size of the internal buffer * ***/ XSerializeEngine(BinOutputStream* outStream , XMLGrammarPool* const gramPool , XMLSize_t bufSize = 8192 ); /*** * * When serialization, flush out the internal buffer * * Return: * ***/ void flush(); /*** * * Checking if the serialize engine is doing serialization(storing) * * Return: true, if it is * false, otherwise * ***/ inline bool isStoring() const; /*** * * Checking if the serialize engine is doing de-serialization(loading) * * Return: true, if it is * false, otherwise * ***/ inline bool isLoading() const; /*** * * Get the GrammarPool * * Return: XMLGrammarPool * ***/ XMLGrammarPool* getGrammarPool() const; /*** * * Get the StringPool * * Return: XMLStringPool * ***/ XMLStringPool* getStringPool() const; /*** * * Get the embeded Memory Manager * * Return: MemoryManager * ***/ MemoryManager* getMemoryManager() const; /*** * * Get the storer level (the level of the serialize engine * which created the binary stream that this serialize engine * is loading). * * The level returned is meaningful only when * the engine isLoading. * * Return: level * ***/ inline unsigned int getStorerLevel() const; /*** * * Write object to the internal buffer. * * Param * objectToWrite: the object to be serialized * * Return: * ***/ void write(XSerializable* const objectToWrite); /*** * * Write prototype info to the internal buffer. * * Param * protoType: instance of prototype * * Return: * ***/ void write(XProtoType* const protoType); /*** * * Write a stream of XMLByte to the internal buffer. * * Param * toWrite: the stream of XMLByte to write * writeLen: the length of the stream * * Return: * ***/ void write(const XMLByte* const toWrite , XMLSize_t writeLen); /*** * * Write a stream of XMLCh to the internal buffer. * * Param * toWrite: the stream of XMLCh to write * writeLen: the length of the stream * * Return: * ***/ void write(const XMLCh* const toWrite , XMLSize_t writeLen); /*** * * Write a stream of XMLCh to the internal buffer. * * Write the bufferLen first if requested, then the length * of the stream followed by the stream. * * Param * toWrite: the stream of XMLCh to write * bufferLen: the maximum size of the buffer * toWriteBufLen: specify if the bufferLen need to be written or not * * Return: * ***/ void writeString(const XMLCh* const toWrite , const XMLSize_t bufferLen = 0 , bool toWriteBufLen = false); /*** * * Write a stream of XMLByte to the internal buffer. * * Write the bufferLen first if requested, then the length * of the stream followed by the stream. * * Param * toWrite: the stream of XMLByte to write * bufferLen: the maximum size of the buffer * toWriteBufLen: specify if the bufferLen need to be written or not * * Return: * ***/ void writeString(const XMLByte* const toWrite , const XMLSize_t bufferLen = 0 , bool toWriteBufLen = false); static const bool toWriteBufferLen; /*** * * Read/Create object from the internal buffer. * * Param * protoType: an instance of prototype of the object anticipated * * Return: to object read/created * ***/ XSerializable* read(XProtoType* const protoType); /*** * * Read prototype object from the internal buffer. * Verify if the same prototype object found in buffer. * * Param * protoType: an instance of prototype of the object anticipated * objTag: the object Tag to an existing object * * Return: true : if matching found * false : otherwise * ***/ bool read(XProtoType* const protoType , XSerializedObjectId_t* objTag); /*** * * Read XMLByte stream from the internal buffer. * * Param * toRead: the buffer to hold the XMLByte stream * readLen: the length of the XMLByte to read in * * Return: * ***/ void read(XMLByte* const toRead , XMLSize_t readLen); /*** * * Read XMLCh stream from the internal buffer. * * Param * toRead: the buffer to hold the XMLCh stream * readLen: the length of the XMLCh to read in * * Return: * ***/ void read(XMLCh* const toRead , XMLSize_t readLen); /*** * * Read a stream of XMLCh from the internal buffer. * * Read the bufferLen first if requested, then the length * of the stream followed by the stream. * * Param * toRead: the pointer to the buffer to hold the XMLCh stream * bufferLen: the size of the buffer created * dataLen: the length of the stream * toReadBufLen: specify if the bufferLen need to be read or not * * Return: * ***/ void readString(XMLCh*& toRead , XMLSize_t& bufferLen , XMLSize_t& dataLen , bool toReadBufLen = false); /*** * * Read a stream of XMLCh from the internal buffer. * * Read the bufferLen first if requested, then the length * of the stream followed by the stream. * * Param * toRead: the pointer to the buffer to hold the XMLCh stream * bufferLen: the size of the buffer created * * Return: * ***/ inline void readString(XMLCh*& toRead , XMLSize_t& bufferLen); /*** * * Read a stream of XMLCh from the internal buffer. * * Param * toRead: the pointer to the buffer to hold the XMLCh stream * * Return: * ***/ inline void readString(XMLCh*& toRead); /*** * * Read a stream of XMLByte from the internal buffer. * * Read the bufferLen first if requested, then the length * of the stream followed by the stream. * * Param * toRead: the pointer to the buffer to hold the XMLByte stream * bufferLen: the size of the buffer created * dataLen: the length of the stream * toReadBufLen: specify if the bufferLen need to be read or not * * Return: * ***/ void readString(XMLByte*& toRead , XMLSize_t& bufferLen , XMLSize_t& dataLen , bool toReadBufLen = false); /*** * * Read a stream of XMLByte from the internal buffer. * * Read the bufferLen first if requested, then the length * of the stream followed by the stream. * * Param * toRead: the pointer to the buffer to hold the XMLByte stream * bufferLen: the size of the buffer created * * Return: * ***/ inline void readString(XMLByte*& toRead , XMLSize_t& bufferLen); /*** * * Read a stream of XMLByte from the internal buffer. * * Read the bufferLen first if requested, then the length * of the stream followed by the stream. * * Param * toRead: the pointer to the buffer to hold the XMLByte stream * bufferLen: the size of the buffer created * dataLen: the length of the stream * toReadBufLen: specify if the bufferLen need to be read or not * * Return: * ***/ inline void readString(XMLByte*& toRead); /*** * * Check if the template object has been stored or not * * Param * objectPtr: the template object pointer * * Return: true : the object has NOT been stored yet * false : otherwise * ***/ bool needToStoreObject(void* const templateObjectToWrite); /*** * * Check if the template object has been loaded or not * * Param * objectPtr: the address of the template object pointer * * Return: true : the object has NOT been loaded yet * false : otherwise * ***/ bool needToLoadObject(void** templateObjectToRead); /*** * * In the case of needToLoadObject() return true, the client * application needs to instantiate an expected template object, and * register the address to the engine. * * Param * objectPtr: the template object pointer newly instantiated * * Return: * ***/ void registerObject(void* const templateObjectToRegister); /*** * * Insertion operator for serializable classes * ***/ friend XSerializeEngine& operator<<(XSerializeEngine& , XSerializable* const ); /*** * * Insertion operators for * . basic Xerces data types * . built-in types * ***/ XSerializeEngine& operator<<(XMLByte); XSerializeEngine& operator<<(XMLCh); XSerializeEngine& operator<<(char); XSerializeEngine& operator<<(short); XSerializeEngine& operator<<(int); XSerializeEngine& operator<<(unsigned int); XSerializeEngine& operator<<(long); XSerializeEngine& operator<<(unsigned long); XSerializeEngine& operator<<(float); XSerializeEngine& operator<<(double); XSerializeEngine& operator<<(bool); // These cannot be done as operators since on some platforms they // may collide with int/long types. // void writeSize (XMLSize_t); void writeInt64 (XMLInt64); void writeUInt64 (XMLUInt64); /*** * * Extraction operators for * . basic Xerces data types * . built-in types * ***/ XSerializeEngine& operator>>(XMLByte&); XSerializeEngine& operator>>(XMLCh&); XSerializeEngine& operator>>(char&); XSerializeEngine& operator>>(short&); XSerializeEngine& operator>>(int&); XSerializeEngine& operator>>(unsigned int&); XSerializeEngine& operator>>(long&); XSerializeEngine& operator>>(unsigned long&); XSerializeEngine& operator>>(float&); XSerializeEngine& operator>>(double&); XSerializeEngine& operator>>(bool&); void readSize (XMLSize_t&); void readInt64 (XMLInt64&); void readUInt64 (XMLUInt64&); /*** * * Getters * ***/ inline XMLSize_t getBufSize() const; inline XMLSize_t getBufCur() const; inline XMLSize_t getBufCurAccumulated() const; inline unsigned long getBufCount() const; void trace(char*) const; private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XSerializeEngine(); XSerializeEngine(const XSerializeEngine&); XSerializeEngine& operator=(const XSerializeEngine&); /*** * * Store Pool Opertions * ***/ XSerializedObjectId_t lookupStorePool(void* const objectPtr) const; void addStorePool(void* const objectPtr); /*** * * Load Pool Opertions * ***/ XSerializable* lookupLoadPool(XSerializedObjectId_t objectTag) const; void addLoadPool(void* const objectPtr); /*** * * Intenal Buffer Operations * ***/ inline void checkAndFillBuffer(XMLSize_t bytesNeedToRead); inline void checkAndFlushBuffer(XMLSize_t bytesNeedToWrite); void fillBuffer(); void flushBuffer(); void pumpCount(); inline void resetBuffer(); /*** * * Helper * ***/ inline void ensureStoring() const; inline void ensureLoading() const; inline void ensureStoreBuffer() const; inline void ensureLoadBuffer() const; inline void ensurePointer(void* const) const; inline void Assert(bool toEval , const XMLExcepts::Codes toThrow) const; inline XMLSize_t calBytesNeeded(XMLSize_t) const; inline XMLSize_t alignAdjust(XMLSize_t) const; inline void alignBufCur(XMLSize_t); // Make XTemplateSerializer friend of XSerializeEngine so that // we can call lookupStorePool and lookupLoadPool in the case of // annotations. friend class XTemplateSerializer; // ------------------------------------------------------------------------------- // data // // fStoreLoad: // Indicator: storing(serialization) or loading(de-serialization) // // fStorerLevel: // The level of the serialize engine which created the binary // stream that this serialize engine is loading // // It is set by GrammarPool when loading // // fGrammarPool: // Thw owning GrammarPool which instantiate this SerializeEngine // instance // // fInputStream: // Binary stream to read from (de-serialization), provided // by client application, not owned. // // fOutputStream: // Binary stream to write to (serialization), provided // by client application, not owned. // // fBufSize: // The size of the internal buffer // // fBufStart/fBufEnd: // // The internal buffer. // fBufEnd: // one beyond the last valid cell // fBufEnd === (fBufStart + fBufSize) // // fBufCur: // The cursor of the buffer // // fBufLoadMax: // Indicating the end of the valid content in the buffer // // fStorePool: // Object collection for storing // // fLoadPool: // Object collection for loading // // fMapCount: // ------------------------------------------------------------------------------- const short fStoreLoad; unsigned int fStorerLevel; XMLGrammarPool* const fGrammarPool; BinInputStream* const fInputStream; BinOutputStream* const fOutputStream; unsigned long fBufCount; //buffer const XMLSize_t fBufSize; XMLByte* const fBufStart; XMLByte* const fBufEnd; XMLByte* fBufCur; XMLByte* fBufLoadMax; /*** * Map for storing object * * key: XSerializable* * XProtoType* * * value: XMLInteger*, owned * ***/ RefHashTableOf* fStorePool; /*** * Vector for loading object, objects are NOT owned * * data: XSerializable* * XProtoType* * ***/ ValueVectorOf* fLoadPool; /*** * object counter ***/ XSerializedObjectId_t fObjectCount; //to allow grammar pool to set storer level when loading friend class XMLGrammarPoolImpl; }; inline bool XSerializeEngine::isStoring() const { return (fStoreLoad == mode_Store); } inline bool XSerializeEngine::isLoading() const { return (fStoreLoad == mode_Load); } inline XSerializeEngine& operator<<(XSerializeEngine& serEng , XSerializable* const serObj) { serEng.write(serObj); return serEng; } inline void XSerializeEngine::ensureStoring() const { Assert(isStoring(), XMLExcepts::XSer_Storing_Violation); } inline void XSerializeEngine::ensureLoading() const { Assert(isLoading(), XMLExcepts::XSer_Loading_Violation); } inline void XSerializeEngine::Assert(bool toEval , const XMLExcepts::Codes toThrow) const { if (!toEval) { ThrowXMLwithMemMgr(XSerializationException, toThrow, getMemoryManager()); } } inline void XSerializeEngine::readString(XMLCh*& toRead , XMLSize_t& bufferLen) { XMLSize_t dummyDataLen; readString(toRead, bufferLen, dummyDataLen); } inline void XSerializeEngine::readString(XMLCh*& toRead) { XMLSize_t dummyBufferLen; XMLSize_t dummyDataLen; readString(toRead, dummyBufferLen, dummyDataLen); } inline void XSerializeEngine::readString(XMLByte*& toRead , XMLSize_t& bufferLen) { XMLSize_t dummyDataLen; readString(toRead, bufferLen, dummyDataLen); } inline void XSerializeEngine::readString(XMLByte*& toRead) { XMLSize_t dummyBufferLen; XMLSize_t dummyDataLen; readString(toRead, dummyBufferLen, dummyDataLen); } inline XMLSize_t XSerializeEngine::getBufSize() const { return fBufSize; } inline XMLSize_t XSerializeEngine::getBufCur() const { return (fBufCur-fBufStart); } inline XMLSize_t XSerializeEngine::getBufCurAccumulated() const { return (fBufCount - (isStoring() ? 0: 1)) * fBufSize + (fBufCur-fBufStart); } inline unsigned long XSerializeEngine::getBufCount() const { return fBufCount; } inline unsigned int XSerializeEngine::getStorerLevel() const { return fStorerLevel; } /*** * Ought to be nested class ***/ class XSerializedObjectId : public XMemory { public: ~XSerializedObjectId(){}; private: inline XSerializedObjectId(XSerializeEngine::XSerializedObjectId_t val): fData(val) { }; inline XSerializeEngine::XSerializedObjectId_t getValue() const {return fData; }; friend class XSerializeEngine; private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XSerializedObjectId(); XSerializedObjectId(const XSerializedObjectId&); XSerializedObjectId& operator=(const XSerializedObjectId&); XSerializeEngine::XSerializedObjectId_t fData; }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/0000755000175000017500000000000011363617233015252 5ustar borisborisxerces-c-3.1.1/src/xercesc/dom/DOMDocumentFragment.hpp0000644000175000017500000001106711360344373021571 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMDocumentFragment.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMDOCUMENTFRAGMENT_HPP) #define XERCESC_INCLUDE_GUARD_DOMDOCUMENTFRAGMENT_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN /** * DOMDocumentFragment is a "lightweight" or "minimal" * DOMDocument object. * * It is very common to want to be able to * extract a portion of a document's tree or to create a new fragment of a * document. Imagine implementing a user command like cut or rearranging a * document by moving fragments around. It is desirable to have an object * which can hold such fragments and it is quite natural to use a DOMNode for * this purpose. While it is true that a DOMDocument object could * fulfill this role, a DOMDocument object can potentially be a * heavyweight object, depending on the underlying implementation. What is * really needed for this is a very lightweight object. * DOMDocumentFragment is such an object. *

    Furthermore, various operations -- such as inserting nodes as children * of another DOMNode -- may take DOMDocumentFragment * objects as arguments; this results in all the child nodes of the * DOMDocumentFragment being moved to the child list of this node. *

    The children of a DOMDocumentFragment node are zero or more * nodes representing the tops of any sub-trees defining the structure of the * document. DOMDocumentFragment nodes do not need to be * well-formed XML documents (although they do need to follow the rules * imposed upon well-formed XML parsed entities, which can have multiple top * nodes). For example, a DOMDocumentFragment might have only one * child and that child node could be a DOMText node. Such a * structure model represents neither an HTML document nor a well-formed XML * document. *

    When a DOMDocumentFragment is inserted into a * DOMDocument (or indeed any other DOMNode that may take * children) the children of the DOMDocumentFragment and not the * DOMDocumentFragment itself are inserted into the * DOMNode. This makes the DOMDocumentFragment very * useful when the user wishes to create nodes that are siblings; the * DOMDocumentFragment acts as the parent of these nodes so that the * user can use the standard methods from the DOMNode interface, * such as insertBefore() and appendChild(). * * @since DOM Level 1 */ class CDOM_EXPORT DOMDocumentFragment: public DOMNode { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMDocumentFragment() {}; //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented constructors and operators */ //@{ DOMDocumentFragment(const DOMDocumentFragment &); DOMDocumentFragment & operator = (const DOMDocumentFragment &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMDocumentFragment() {}; //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOM.hpp0000644000175000017500000000633110606722647016412 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOM.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOM_HPP) #define XERCESC_INCLUDE_GUARD_DOM_HPP // // This is the primary header file for inclusion in application // programs using the C++ XML Document Object Model API. // #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // Introduced in DOM Level 2 #include #include #include #include #include #include #include // Introduced in DOM Level 3 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #endif xerces-c-3.1.1/src/xercesc/dom/DOMXPathNamespace.hpp0000644000175000017500000001102511360344373021162 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMXPathNamespace.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMXPATHNAMESPACE_HPP) #define XERCESC_INCLUDE_GUARD_DOMXPATHNAMESPACE_HPP #include XERCES_CPP_NAMESPACE_BEGIN class DOMElement; /** * The DOMXPathNamespace interface is returned by DOMXPathResult * interfaces to represent the XPath namespace node type that DOM lacks. There is no * public constructor for this node type. Attempts to place it into a hierarchy or a * NamedNodeMap result in a DOMException with the code HIERARCHY_REQUEST_ERR. This node * is read only, so methods or setting of attributes that would mutate the node result * in a DOMException with the code NO_MODIFICATION_ALLOWED_ERR. * The core specification describes attributes of the DOMNode interface that * are different for different node types but does not describe XPATH_NAMESPACE_NODE, * so here is a description of those attributes for this node type. All attributes of * DOMNode not described in this section have a null or false value. * ownerDocument matches the ownerDocument of the ownerElement even if the element is later adopted. * nodeName is always the string "#namespace". * prefix is the prefix of the namespace represented by the node. * localName is the same as prefix. * nodeType is equal to XPATH_NAMESPACE_NODE. * namespaceURI is the namespace URI of the namespace represented by the node. * nodeValue is the same as namespaceURI. * adoptNode, cloneNode, and importNode fail on this node type by raising a DOMException with the code NOT_SUPPORTED_ERR. * Note: In future versions of the XPath specification, the definition of a namespace node may * be changed incompatibly, in which case incompatible changes to field values may be required to * implement versions beyond XPath 1.0. * @since DOM Level 3 */ class CDOM_EXPORT DOMXPathNamespace : public DOMNode { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMXPathNamespace() {}; //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented constructors and operators */ //@{ DOMXPathNamespace(const DOMXPathNamespace &); DOMXPathNamespace& operator = (const DOMXPathNamespace&); //@} public: enum XPathNodeType { XPATH_NAMESPACE_NODE = 13 }; // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMXPathNamespace() {}; //@} // ----------------------------------------------------------------------- // Virtual DOMXPathNamespace interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 3 */ //@{ /** * The DOMElement on which the namespace was in scope when * it was requested. This does not change on a returned namespace node * even if the document changes such that the namespace goes out of * scope on that element and this node is no longer found there by XPath. * @since DOM Level 3 */ virtual DOMElement *getOwnerElement() const = 0; //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMRangeException.cpp0000644000175000017500000000301011030714661021215 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMRangeException.cpp 671894 2008-06-26 13:29:21Z borisk $ */ #include "DOMRangeException.hpp" #include XERCES_CPP_NAMESPACE_BEGIN DOMRangeException::DOMRangeException() : DOMException() { } DOMRangeException::DOMRangeException(short exCode, short messageCode, MemoryManager* const memoryManager) : DOMException(exCode, messageCode?messageCode:XMLDOMMsg::DOMRANGEEXCEPTION_ERRX+exCode-DOMRangeException::BAD_BOUNDARYPOINTS_ERR+1, memoryManager) { } DOMRangeException::DOMRangeException(const DOMRangeException &other) : DOMException(other) { } DOMRangeException::~DOMRangeException() { } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/DOMException.hpp0000644000175000017500000002161511360344373020265 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMException.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMEXCEPTION_HPP) #define XERCESC_INCLUDE_GUARD_DOMEXCEPTION_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN /** * DOM operations only raise exceptions in "exceptional" circumstances, i.e., * when an operation is impossible to perform (either for logical reasons, * because data is lost, or because the implementation has become unstable). * In general, DOM methods return specific error values in ordinary * processing situations, such as out-of-bound errors when using * DOMNodeList. *

    Implementations should raise other exceptions under other circumstances. * For example, implementations should raise an implementation-dependent * exception if a null argument is passed. *

    Some languages and object systems do not support the concept of * exceptions. For such systems, error conditions may be indicated using * native error reporting mechanisms. For some bindings, for example, * methods may return error codes similar to those listed in the * corresponding method descriptions. *

    See also the Document Object Model (DOM) Level 2 Core Specification. * @since DOM Level 1 */ class MemoryManager; class CDOM_EXPORT DOMException { public: // ----------------------------------------------------------------------- // Class Types // ----------------------------------------------------------------------- /** @name Public Constants */ //@{ /** * ExceptionCode * *

    INDEX_SIZE_ERR: * If index or size is negative, or greater than the allowed value.

    * *

    DOMSTRING_SIZE_ERR: * If the specified range of text does not fit into a DOMString.

    * *

    HIERARCHY_REQUEST_ERR: * If any node is inserted somewhere it doesn't belong.

    * *

    WRONG_DOCUMENT_ERR: * If a node is used in a different document than the one that created it * (that doesn't support it).

    * *

    INVALID_CHARACTER_ERR: * If an invalid or illegal character is specified, such as in a name. See * production 2 in the XML specification for the definition of a legal * character, and production 5 for the definition of a legal name * character.

    * *

    NO_DATA_ALLOWED_ERR: * If data is specified for a node which does not support data.

    * *

    NO_MODIFICATION_ALLOWED_ERR: * If an attempt is made to modify an object where modifications are not * allowed.

    * *

    NOT_FOUND_ERR: * If an attempt is made to reference a node in a context where it does * not exist.

    * *

    NOT_SUPPORTED_ERR: * If the implementation does not support the requested type of object or * operation.

    * *

    INUSE_ATTRIBUTE_ERR: * If an attempt is made to add an attribute that is already in use * elsewhere.

    * * The above are since DOM Level 1 * @since DOM Level 1 * *

    INVALID_STATE_ERR: * If an attempt is made to use an object that is not, or is no longer, * usable.

    * *

    SYNTAX_ERR: * If an invalid or illegal string is specified.

    * *

    INVALID_MODIFICATION_ERR: * If an attempt is made to modify the type of the underlying object.

    * *

    NAMESPACE_ERR: * If an attempt is made to create or change an object in a way which is * incorrect with regard to namespaces.

    * *

    INVALID_ACCESS_ERR: * If a parameter or an operation is not supported by the underlying * object. * * The above are since DOM Level 2 * @since DOM Level 2 * *

    VALIDATION_ERR: * If a call to a method such as insertBefore or * removeChild would make the Node invalid * with respect to "partial validity", this exception would be raised * and the operation would not be done. * *

    TYPE_MISMATCH_ERR: * If the type of an object is incompatible with the expected type of * the parameter associated to the object, this exception would be raised. * * The above is since DOM Level 3 * @since DOM Level 3 */ enum ExceptionCode { INDEX_SIZE_ERR = 1, DOMSTRING_SIZE_ERR = 2, HIERARCHY_REQUEST_ERR = 3, WRONG_DOCUMENT_ERR = 4, INVALID_CHARACTER_ERR = 5, NO_DATA_ALLOWED_ERR = 6, NO_MODIFICATION_ALLOWED_ERR = 7, NOT_FOUND_ERR = 8, NOT_SUPPORTED_ERR = 9, INUSE_ATTRIBUTE_ERR = 10, INVALID_STATE_ERR = 11, SYNTAX_ERR = 12, INVALID_MODIFICATION_ERR = 13, NAMESPACE_ERR = 14, INVALID_ACCESS_ERR = 15, VALIDATION_ERR = 16, TYPE_MISMATCH_ERR = 17 }; //@} public: // ----------------------------------------------------------------------- // Constructors // ----------------------------------------------------------------------- /** @name Constructors */ //@{ /** * Default constructor for DOMException. * */ DOMException(); /** * Constructor which takes an error code and an optional message code. * * @param code The error code which indicates the exception * @param messageCode The string containing the error message * @param memoryManager The memory manager used to (de)allocate memory */ DOMException(short code, short messageCode = 0, MemoryManager* const memoryManager = XMLPlatformUtils::fgMemoryManager); /** * Copy constructor. * * @param other The object to be copied. */ DOMException(const DOMException &other); //@} // ----------------------------------------------------------------------- // Destructors // ----------------------------------------------------------------------- /** @name Destructor. */ //@{ /** * Destructor for DOMException. * */ virtual ~DOMException(); //@} public: // ----------------------------------------------------------------------- // Getter // ----------------------------------------------------------------------- inline const XMLCh* getMessage() const; // ----------------------------------------------------------------------- // Class Types // ----------------------------------------------------------------------- /** @name Public variables */ //@{ /** * A code value, from the set defined by the ExceptionCode enum, * indicating the type of error that occured. */ short code; /** * A string value. Applications may use this field to hold an error * message. The field value is not set by the DOM implementation, * meaning that the string will be empty when an exception is first * thrown. */ const XMLCh *msg; //@} protected: MemoryManager* fMemoryManager; private: /** * A boolean value. * If the message is provided by the applications, it is not * adopted. * If the message is resolved by the DOM implementation, it is * owned. */ bool fMsgOwned; private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DOMException & operator = (const DOMException &); }; inline const XMLCh* DOMException::getMessage() const { return msg; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMLocator.hpp0000644000175000017500000000761411037072255017733 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMLocator.hpp 676853 2008-07-15 09:58:05Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMLOCATOR_HPP) #define XERCESC_INCLUDE_GUARD_DOMLOCATOR_HPP #include XERCES_CPP_NAMESPACE_BEGIN class DOMNode; /** * DOMLocator is an interface that describes a location. (e.g. where an error * occured). * * @see DOMError#DOMError * @since DOM Level 3 */ class CDOM_EXPORT DOMLocator { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMLocator() {}; //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented constructors and operators */ //@{ DOMLocator(const DOMLocator &); DOMLocator & operator = (const DOMLocator &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMLocator() {}; //@} // ----------------------------------------------------------------------- // Virtual DOMLocator interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 3 */ //@{ // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- /** * Get the line number where the error occured, or 0 if there is * no line number available. * * @since DOM Level 3 */ virtual XMLFileLoc getLineNumber() const = 0; /** * Get the column number where the error occured, or 0 if there * is no column number available. * * @since DOM Level 3 */ virtual XMLFileLoc getColumnNumber() const = 0; /** * Get the byte offset into the input source, or ~(XMLFilePos(0)) if * there is no byte offset available. * * @since DOM Level 3 */ virtual XMLFilePos getByteOffset() const = 0; /** * Get the UTF-16 offset into the input source, or ~(XMLFilePos(0)) if * there is no UTF-16 offset available. * * @since DOM Level 3 */ virtual XMLFilePos getUtf16Offset() const = 0; /** * Get the DOMNode where the error occured, or null if there * is no node available. * * @since DOM Level 3 */ virtual DOMNode* getRelatedNode() const = 0; /** * Get the URI where the error occured, or null if there is no * URI available. * * @since DOM Level 3 */ virtual const XMLCh* getURI() const = 0; //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMRangeException.hpp0000644000175000017500000000736311360344373021246 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMRangeException.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMRANGEEXCEPTION_HPP) #define XERCESC_INCLUDE_GUARD_DOMRANGEEXCEPTION_HPP #include XERCES_CPP_NAMESPACE_BEGIN /** * Range operations may throw a DOMRangeException as specified in * their method descriptions. *

    See also the Document Object Model (DOM) Level 2 Traversal and Range Specification. * @since DOM Level 2 */ class CDOM_EXPORT DOMRangeException : public DOMException { public: // ----------------------------------------------------------------------- // Class Types // ----------------------------------------------------------------------- /** @name Public Constants */ //@{ /** * Enumerators for DOM Range Exceptions * *

    BAD_BOUNDARYPOINTS_ERR: * If the boundary-points of a Range do not meet specific requirements.

    * *

    INVALID_NODE_TYPE_ERR: * If the container of an boundary-point of a Range is being set to either * a node of an invalid type or a node with an ancestor of an invalid * type.

    * * @since DOM Level 2 */ enum RangeExceptionCode { BAD_BOUNDARYPOINTS_ERR = 111, INVALID_NODE_TYPE_ERR = 112 }; //@} public: // ----------------------------------------------------------------------- // Constructors // ----------------------------------------------------------------------- /** @name Constructors */ //@{ /** * Default constructor for DOMRangeException. * */ DOMRangeException(); /** * Constructor which takes an error code and a message. * * @param code The error code which indicates the exception * @param messageCode The string containing the error message * @param memoryManager The memory manager used to (de)allocate memory */ DOMRangeException(short code, short messageCode, MemoryManager* const memoryManager); /** * Copy constructor. * * @param other The object to be copied. */ DOMRangeException(const DOMRangeException &other); //@} // ----------------------------------------------------------------------- // Destructors // ----------------------------------------------------------------------- /** @name Destructor. */ //@{ /** * Destructor for DOMRangeException. * */ virtual ~DOMRangeException(); //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DOMRangeException & operator = (const DOMRangeException &); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMImplementationSource.hpp0000644000175000017500000001015210606722647022475 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMImplementationSource.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONSOURCE_HPP) #define XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONSOURCE_HPP /** * This interface permits a DOM implementer to supply one or more * implementations, based upon requested features and versions. Each implemented * DOMImplementationSource object is listed in the * binding-specific list of available sources so that its * DOMImplementation objects are made available. * * @since DOM Level 3 */ #include XERCES_CPP_NAMESPACE_BEGIN class DOMImplementation; class DOMImplementationList; class CDOM_EXPORT DOMImplementationSource { protected : // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMImplementationSource() {}; //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented constructors and operators */ //@{ DOMImplementationSource(const DOMImplementationSource &); DOMImplementationSource & operator = (const DOMImplementationSource &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMImplementationSource() {}; //@} // ----------------------------------------------------------------------- // Virtual DOMImplementationSource interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 3 */ //@{ /** * A method to request the first DOM implementation that supports the specified features. * * @param features A string that specifies which features are required. * This is a space separated list in which each feature is specified * by its name optionally followed by a space and a version number. * This is something like: "XML 1.0 Traversal 2.0" * @return An implementation that has the desired features, or * null if this source has none. * @since DOM Level 3 */ virtual DOMImplementation* getDOMImplementation(const XMLCh* features) const = 0; /** * A method to request a list of DOM implementations that support the specified features and versions, * * @param features A string that specifies which features are required. * This is a space separated list in which each feature is specified * by its name optionally followed by a space and a version number. * This is something like: "XML 1.0 Traversal 2.0" * @return A list of DOM implementations that support the desired features * @since DOM Level 3 */ virtual DOMImplementationList* getDOMImplementationList(const XMLCh* features) const = 0; //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMAttr.hpp0000644000175000017500000001425010606722647017244 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMAttr.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMATTR_HPP) #define XERCESC_INCLUDE_GUARD_DOMATTR_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN class DOMElement; class DOMTypeInfo; /** * The DOMAttr class refers to an attribute of an XML element. * * Typically the allowable values for the * attribute are defined in a documenttype definition. *

    DOMAttr objects inherit the DOMNode interface, but * since attributes are not actually child nodes of the elements they are associated with, the * DOM does not consider them part of the document tree. Thus, the * DOMNode attributes parentNode, * previousSibling, and nextSibling have a null * value for DOMAttr objects. The DOM takes the view that * attributes are properties of elements rather than having a separate * identity from the elements they are associated with; this should make it * more efficient to implement such features as default attributes associated * with all elements of a given type. Furthermore, attribute nodes * may not be immediate children of a DOMDocumentFragment. However, * they can be associated with DOMElement nodes contained within a * DOMDocumentFragment. In short, users of the DOM * need to be aware that DOMAttr nodes have some things in common * with other objects inheriting the DOMNode interface, but they * also are quite distinct. * * @since DOM Level 1 */ class CDOM_EXPORT DOMAttr: public DOMNode { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMAttr() {} DOMAttr(const DOMAttr &other) : DOMNode(other) {} //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented operators */ //@{ DOMAttr & operator = (const DOMAttr &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMAttr() {}; //@} // ----------------------------------------------------------------------- // Virtual DOMAttr interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 1 */ //@{ // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- /** * Returns the name of this attribute. * @since DOM Level 1 */ virtual const XMLCh * getName() const = 0; /** * * Returns true if the attribute received its value explicitly in the * XML document, or if a value was assigned programatically with * the setValue function. Returns false if the attribute value * came from the default value declared in the document's DTD. * @since DOM Level 1 */ virtual bool getSpecified() const = 0; /** * Returns the value of the attribute. * * The value of the attribute is returned as a string. * Character and general entity references are replaced with their values. * @since DOM Level 1 */ virtual const XMLCh * getValue() const = 0; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- /** * Sets the value of the attribute. A text node with the unparsed contents * of the string will be created. * * @param value The value of the DOM attribute to be set * @since DOM Level 1 */ virtual void setValue(const XMLCh *value) = 0; //@} /** @name Functions introduced in DOM Level 2. */ //@{ /** * The DOMElement node this attribute is attached to or * null if this attribute is not in use. * * @since DOM Level 2 */ virtual DOMElement *getOwnerElement() const = 0; //@} /** @name Functions introduced in DOM Level 3. */ //@{ /** * Returns whether this attribute is known to be of type ID or not. * When it is and its value is unique, the ownerElement of this attribute * can be retrieved using getElementById on DOMDocument. * * @return bool stating if this DOMAttr is an ID * @since DOM level 3 */ virtual bool isId() const = 0; /** * Returns the type information associated with this attribute. * * @return the DOMTypeInfo associated with this attribute * @since DOM level 3 */ virtual const DOMTypeInfo * getSchemaTypeInfo() const = 0; //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMDocument.hpp0000644000175000017500000010664711360344373020116 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMDocument.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMDOCUMENT_HPP) #define XERCESC_INCLUDE_GUARD_DOMDOCUMENT_HPP #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN class DOMConfiguration; class DOMDocumentType; class DOMElement; class DOMDocumentFragment; class DOMComment; class DOMCDATASection; class DOMProcessingInstruction; class DOMAttr; class DOMEntity; class DOMEntityReference; class DOMImplementation; class DOMNodeFilter; class DOMNodeList; class DOMNotation; class DOMText; class DOMNode; /** * The DOMDocument interface represents the entire XML * document. Conceptually, it is the root of the document tree, and provides * the primary access to the document's data. *

    Since elements, text nodes, comments, processing instructions, etc. * cannot exist outside the context of a DOMDocument, the * DOMDocument interface also contains the factory methods needed * to create these objects. The DOMNode objects created have a * ownerDocument attribute which associates them with the * DOMDocument within whose context they were created. *

    See also the Document Object Model (DOM) Level 2 Core Specification. */ class CDOM_EXPORT DOMDocument: public DOMDocumentRange, public DOMXPathEvaluator, public DOMDocumentTraversal, public DOMNode { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMDocument() {}; //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented constructors and operators */ //@{ DOMDocument(const DOMDocument &); DOMDocument & operator = (const DOMDocument &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMDocument() {}; //@} // ----------------------------------------------------------------------- // Virtual DOMDocument interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 1 */ //@{ /** * Creates an element of the type specified. Note that the instance * returned implements the DOMElement interface, so attributes * can be specified directly on the returned object. *
    In addition, if there are known attributes with default values, * DOMAttr nodes representing them are automatically created * and attached to the element. *
    To create an element with a qualified name and namespace URI, use * the createElementNS method. * @param tagName The name of the element type to instantiate. For XML, * this is case-sensitive. * @return A new DOMElement object with the * nodeName attribute set to tagName, and * localName, prefix, and * namespaceURI set to null. * @exception DOMException * INVALID_CHARACTER_ERR: Raised if the specified name contains an * illegal character. * @since DOM Level 1 */ virtual DOMElement *createElement(const XMLCh *tagName) = 0; /** * Creates an empty DOMDocumentFragment object. * @return A new DOMDocumentFragment. * @since DOM Level 1 */ virtual DOMDocumentFragment *createDocumentFragment() = 0; /** * Creates a DOMText node given the specified string. * @param data The data for the node. * @return The new DOMText object. * @since DOM Level 1 */ virtual DOMText *createTextNode(const XMLCh *data) = 0; /** * Creates a DOMComment node given the specified string. * @param data The data for the node. * @return The new DOMComment object. * @since DOM Level 1 */ virtual DOMComment *createComment(const XMLCh *data) = 0; /** * Creates a DOMCDATASection node whose value is the specified * string. * @param data The data for the DOMCDATASection contents. * @return The new DOMCDATASection object. * @since DOM Level 1 */ virtual DOMCDATASection *createCDATASection(const XMLCh *data) = 0; /** * Creates a DOMProcessingInstruction node given the specified * name and data strings. * @param target The target part of the processing instruction. * @param data The data for the node. * @return The new DOMProcessingInstruction object. * @exception DOMException * INVALID_CHARACTER_ERR: Raised if the specified target contains an * illegal character. * @since DOM Level 1 */ virtual DOMProcessingInstruction *createProcessingInstruction(const XMLCh *target, const XMLCh *data) = 0; /** * Creates an DOMAttr of the given name. Note that the * DOMAttr instance can then be set on an DOMElement * using the setAttributeNode method. *
    To create an attribute with a qualified name and namespace URI, use * the createAttributeNS method. * @param name The name of the attribute. * @return A new DOMAttr object with the nodeName * attribute set to name, and localName, * prefix, and namespaceURI set to * null. The value of the attribute is the empty string. * @exception DOMException * INVALID_CHARACTER_ERR: Raised if the specified name contains an * illegal character. * @since DOM Level 1 */ virtual DOMAttr *createAttribute(const XMLCh *name) = 0; /** * Creates an DOMEntityReference object. In addition, if the * referenced entity is known, the child list of the * DOMEntityReference node is made the same as that of the * corresponding DOMEntity node.If any descendant of the * DOMEntity node has an unbound namespace prefix, the * corresponding descendant of the created DOMEntityReference * node is also unbound; (its namespaceURI is * null). The DOM Level 2 does not support any mechanism to * resolve namespace prefixes. * @param name The name of the entity to reference. * @return The new DOMEntityReference object. * @exception DOMException * INVALID_CHARACTER_ERR: Raised if the specified name contains an * illegal character. * @since DOM Level 1 */ virtual DOMEntityReference *createEntityReference(const XMLCh *name) = 0; /** * The Document Type Declaration (see DOMDocumentType) * associated with this document. For XML * documents without a document type declaration this returns * null. The DOM Level 2 does not support editing the * Document Type Declaration. docType cannot be altered in * any way, including through the use of methods inherited from the * DOMNode interface, such as insertNode or * removeNode. * @since DOM Level 1 */ virtual DOMDocumentType *getDoctype() const = 0; /** * The DOMImplementation object that handles this document. A * DOM application may use objects from multiple implementations. * @since DOM Level 1 */ virtual DOMImplementation *getImplementation() const = 0; /** * This is a convenience attribute that allows direct access to the child * node that is the root element of the document. * @since DOM Level 1 */ virtual DOMElement *getDocumentElement() const = 0; /** * Returns a DOMNodeList of all the DOMElement(s) with a * given tag name in the order in which they are encountered in a * preorder traversal of the DOMDocument tree. * * The returned node list is "live", in that changes * to the document tree made after a nodelist was initially * returned will be immediately reflected in the node list. * @param tagname The name of the tag to match on. The special value "*" * matches all tags. * @return A new DOMNodeList object containing all the matched * DOMElement(s). * @since DOM Level 1 */ virtual DOMNodeList *getElementsByTagName(const XMLCh *tagname) const = 0; //@} /** @name Functions introduced in DOM Level 2. */ //@{ /** * Imports a node from another document to this document. The returned * node has no parent; (parentNode is null). * The source node is not altered or removed from the original document; * this method creates a new copy of the source node. *
    For all nodes, importing a node creates a node object owned by the * importing document, with attribute values identical to the source * node's nodeName and nodeType, plus the * attributes related to namespaces (prefix, * localName, and namespaceURI). As in the * cloneNode operation on a DOMNode, the source * node is not altered. *
    Additional information is copied as appropriate to the * nodeType, attempting to mirror the behavior expected if * a fragment of XML source was copied from one document to * another, recognizing that the two documents may have different DTDs * in the XML case. The following list describes the specifics for each * type of node. *

    *
    ATTRIBUTE_NODE
    *
    The ownerElement attribute * is set to null and the specified flag is * set to true on the generated DOMAttr. The * descendants of the source DOMAttr are recursively imported * and the resulting nodes reassembled to form the corresponding subtree. * Note that the deep parameter has no effect on * DOMAttr nodes; they always carry their children with them * when imported.
    *
    DOCUMENT_FRAGMENT_NODE
    *
    If the deep option * was set to true, the descendants of the source element * are recursively imported and the resulting nodes reassembled to form * the corresponding subtree. Otherwise, this simply generates an empty * DOMDocumentFragment.
    *
    DOCUMENT_NODE
    *
    DOMDocument * nodes cannot be imported.
    *
    DOCUMENT_TYPE_NODE
    *
    DOMDocumentType * nodes cannot be imported.
    *
    ELEMENT_NODE
    *
    Specified attribute nodes of the * source element are imported, and the generated DOMAttr * nodes are attached to the generated DOMElement. Default * attributes are not copied, though if the document being imported into * defines default attributes for this element name, those are assigned. * If the importNode deep parameter was set to * true, the descendants of the source element are * recursively imported and the resulting nodes reassembled to form the * corresponding subtree.
    *
    ENTITY_NODE
    *
    DOMEntity nodes can be * imported, however in the current release of the DOM the * DOMDocumentType is readonly. Ability to add these imported * nodes to a DOMDocumentType will be considered for addition * to a future release of the DOM.On import, the publicId, * systemId, and notationName attributes are * copied. If a deep import is requested, the descendants * of the the source DOMEntity are recursively imported and * the resulting nodes reassembled to form the corresponding subtree.
    *
    * ENTITY_REFERENCE_NODE
    *
    Only the DOMEntityReference itself is * copied, even if a deep import is requested, since the * source and destination documents might have defined the entity * differently. If the document being imported into provides a * definition for this entity name, its value is assigned.
    *
    NOTATION_NODE
    *
    * DOMNotation nodes can be imported, however in the current * release of the DOM the DOMDocumentType is readonly. Ability * to add these imported nodes to a DOMDocumentType will be * considered for addition to a future release of the DOM.On import, the * publicId and systemId attributes are copied. * Note that the deep parameter has no effect on * DOMNotation nodes since they never have any children.
    *
    * PROCESSING_INSTRUCTION_NODE
    *
    The imported node copies its * target and data values from those of the * source node.
    *
    TEXT_NODE, CDATA_SECTION_NODE, COMMENT_NODE
    *
    These three * types of nodes inheriting from DOMCharacterData copy their * data and length attributes from those of * the source node.
    *
    * @param importedNode The node to import. * @param deep If true, recursively import the subtree under * the specified node; if false, import only the node * itself, as explained above. This has no effect on DOMAttr * , DOMEntityReference, and DOMNotation nodes. * @return The imported node that belongs to this DOMDocument. * @exception DOMException * NOT_SUPPORTED_ERR: Raised if the type of node being imported is not * supported. * @since DOM Level 2 */ virtual DOMNode *importNode(const DOMNode *importedNode, bool deep) = 0; /** * Creates an element of the given qualified name and namespace URI. * @param namespaceURI The namespace URI of the element to create. * @param qualifiedName The qualified name of the element type to * instantiate. * @return A new DOMElement object with the following * attributes: * * * * * * * * * * * * * * * * * * * * * * * * * *
    Attribute * Value
    DOMNode.nodeName * qualifiedName
    DOMNode.namespaceURI * namespaceURI
    DOMNode.prefixprefix, extracted * from qualifiedName, or null if there is * no prefix
    DOMNode.localNamelocal name, extracted from * qualifiedName
    DOMElement.tagName * qualifiedName
    * @exception DOMException * INVALID_CHARACTER_ERR: Raised if the specified qualified name * contains an illegal character, per the XML 1.0 specification . *
    NAMESPACE_ERR: Raised if the qualifiedName is * malformed per the Namespaces in XML specification, if the * qualifiedName has a prefix and the * namespaceURI is null, or if the * qualifiedName has a prefix that is "xml" and the * namespaceURI is different from " * http://www.w3.org/XML/1998/namespace" . *
    NOT_SUPPORTED_ERR: Always thrown if the current document does not * support the "XML" feature, since namespaces were * defined by XML. * @since DOM Level 2 */ virtual DOMElement *createElementNS(const XMLCh *namespaceURI, const XMLCh *qualifiedName) = 0; /** * Creates an attribute of the given qualified name and namespace URI. * @param namespaceURI The namespace URI of the attribute to create. * @param qualifiedName The qualified name of the attribute to * instantiate. * @return A new DOMAttr object with the following attributes: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
    Attribute * Value
    DOMNode.nodeNamequalifiedName
    * DOMNode.namespaceURInamespaceURI
    * DOMNode.prefixprefix, extracted from * qualifiedName, or null if there is no * prefix
    DOMNode.localNamelocal name, extracted from * qualifiedName
    DOMAttr.name * qualifiedName
    DOMNode.nodeValuethe empty * string
    * @exception DOMException * INVALID_CHARACTER_ERR: Raised if the specified qualified name * contains an illegal character, per the XML 1.0 specification . *
    NAMESPACE_ERR: Raised if the qualifiedName is * malformed per the Namespaces in XML specification, if the * qualifiedName has a prefix and the * namespaceURI is null, if the * qualifiedName has a prefix that is "xml" and the * namespaceURI is different from " * http://www.w3.org/XML/1998/namespace", or if the * qualifiedName, or its prefix, is "xmlns" and the * namespaceURI is different from " * http://www.w3.org/2000/xmlns/". *
    NOT_SUPPORTED_ERR: Always thrown if the current document does not * support the "XML" feature, since namespaces were * defined by XML. * @since DOM Level 2 */ virtual DOMAttr *createAttributeNS(const XMLCh *namespaceURI, const XMLCh *qualifiedName) = 0; /** * Returns a DOMNodeList of all the DOMElement(s) with a * given local name and namespace URI in the order in which they are * encountered in a preorder traversal of the DOMDocument tree. * @param namespaceURI The namespace URI of the elements to match on. The * special value "*" matches all namespaces. * @param localName The local name of the elements to match on. The * special value "*" matches all local names. * @return A new DOMNodeList object containing all the matched * DOMElement(s). * @since DOM Level 2 */ virtual DOMNodeList *getElementsByTagNameNS(const XMLCh *namespaceURI, const XMLCh *localName) const = 0; /** * Returns the DOMElement whose ID is given by * elementId. If no such element exists, returns * null. Behavior is not defined if more than one element * has this ID. The DOM implementation must have * information that says which attributes are of type ID. Attributes * with the name "ID" are not of type ID unless so defined. * Implementations that do not know whether attributes are of type ID or * not are expected to return null. * @param elementId The unique id value for an element. * @return The matching element. * @since DOM Level 2 */ virtual DOMElement * getElementById(const XMLCh *elementId) const = 0; //@} /** @name Functions introduced in DOM Level 3. */ //@{ /** * An attribute specifying the encoding used for this document at the time of the parsing. * This is null when it is not known, such as when the DOMDocument was created in memory. * * @since DOM Level 3 */ virtual const XMLCh* getInputEncoding() const = 0; /** * An attribute specifying, as part of the XML declaration, the encoding of this document. * This is null when unspecified or when it is not known, such as when the * DOMDocument was created in memory. * * @since DOM Level 3 */ virtual const XMLCh* getXmlEncoding() const = 0; /** * An attribute specifying, as part of the XML declaration, whether this document is standalone. * This is false when unspecified. * * @since DOM Level 3 */ virtual bool getXmlStandalone() const = 0; /** * An attribute specifying, as part of the XML declaration, whether this * document is standalone. *
    This attribute represents the property [standalone] defined in . * * @since DOM Level 3 */ virtual void setXmlStandalone(bool standalone) = 0; /** * An attribute specifying, as part of the XML declaration, the version * number of this document. This is null when unspecified. *
    This attribute represents the property [version] defined in . * * @since DOM Level 3 */ virtual const XMLCh* getXmlVersion() const = 0; /** * An attribute specifying, as part of the XML declaration, the version * number of this document. This is null when unspecified. *
    This attribute represents the property [version] defined in . * * @since DOM Level 3 */ virtual void setXmlVersion(const XMLCh* version) = 0; /** * The location of the document or null if undefined. *
    Beware that when the DOMDocument supports the feature * "HTML" , the href attribute of the HTML BASE element takes precedence * over this attribute. * * @since DOM Level 3 */ virtual const XMLCh* getDocumentURI() const = 0; /** * The location of the document or null if undefined. *
    Beware that when the DOMDocument supports the feature * "HTML" , the href attribute of the HTML BASE element takes precedence * over this attribute. * * @since DOM Level 3 */ virtual void setDocumentURI(const XMLCh* documentURI) = 0; /** * An attribute specifying whether errors checking is enforced or not. * When set to false, the implementation is free to not * test every possible error case normally defined on DOM operations, * and not raise any DOMException. In case of error, the * behavior is undefined. This attribute is true by * defaults. * * @since DOM Level 3 */ virtual bool getStrictErrorChecking() const = 0; /** * An attribute specifying whether errors checking is enforced or not. * When set to false, the implementation is free to not * test every possible error case normally defined on DOM operations, * and not raise any DOMException. In case of error, the * behavior is undefined. This attribute is true by * defaults. * * @since DOM Level 3 */ virtual void setStrictErrorChecking(bool strictErrorChecking) = 0; /** * Rename an existing node. When possible this simply changes the name of * the given node, otherwise this creates a new node with the specified * name and replaces the existing node with the new node as described * below. This only applies to nodes of type ELEMENT_NODE * and ATTRIBUTE_NODE. *
    When a new node is created, the following operations are performed: * the new node is created, any registered event listener is registered * on the new node, any user data attached to the old node is removed * from that node, the old node is removed from its parent if it has * one, the children are moved to the new node, if the renamed node is * an DOMElement its attributes are moved to the new node, the * new node is inserted at the position the old node used to have in its * parent's child nodes list if it has one, the user data that was * attached to the old node is attach to the new node, the user data * event NODE_RENAMED is fired. *
    When the node being renamed is an DOMAttr that is * attached to an DOMElement, the node is first removed from * the DOMElement attributes map. Then, once renamed, either * by modifying the existing node or creating a new one as described * above, it is put back. * * @param n The node to rename. * @param namespaceURI The new namespaceURI. * @param qualifiedName The new qualified name. * @return The renamed node. This is either the specified node or the new * node that was created to replace the specified node. * @exception DOMException * NOT_SUPPORTED_ERR: Raised when the type of the specified node is * neither ELEMENT_NODE nor ATTRIBUTE_NODE. *
    WRONG_DOCUMENT_ERR: Raised when the specified node was created * from a different document than this document. *
    NAMESPACE_ERR: Raised if the qualifiedName is * malformed per the Namespaces in XML specification, if the * qualifiedName has a prefix and the * namespaceURI is null, or if the * qualifiedName has a prefix that is "xml" and the * namespaceURI is different from " * http://www.w3.org/XML/1998/namespace" . Also raised, when the node * being renamed is an attribute, if the qualifiedName, * or its prefix, is "xmlns" and the namespaceURI is * different from "http://www.w3.org/2000/xmlns/". * @since DOM Level 3 */ virtual DOMNode* renameNode(DOMNode* n, const XMLCh* namespaceURI, const XMLCh* qualifiedName) = 0; /** * Changes the ownerDocument of a node, its children, as well * as the attached attribute nodes if there are any. If the node has a * parent it is first removed from its parent child list. This * effectively allows moving a subtree from one document to another. The * following list describes the specifics for each type of node. * *
    *
    * ATTRIBUTE_NODE
    *
    The ownerElement attribute is set to * null and the specified flag is set to * true on the adopted DOMAttr. The descendants * of the source DOMAttr are recursively adopted.
    *
    * DOCUMENT_FRAGMENT_NODE
    *
    The descendants of the source node are * recursively adopted.
    *
    DOCUMENT_NODE
    *
    DOMDocument nodes cannot * be adopted.
    *
    DOCUMENT_TYPE_NODE
    *
    DOMDocumentType nodes cannot * be adopted.
    *
    ELEMENT_NODE
    *
    Specified attribute nodes of the source * element are adopted, and the generated DOMAttr nodes. * Default attributes are discarded, though if the document being * adopted into defines default attributes for this element name, those * are assigned. The descendants of the source element are recursively * adopted.
    *
    ENTITY_NODE
    *
    DOMEntity nodes cannot be adopted.
    *
    * ENTITY_REFERENCE_NODE
    *
    Only the DOMEntityReference node * itself is adopted, the descendants are discarded, since the source * and destination documents might have defined the entity differently. * If the document being imported into provides a definition for this * entity name, its value is assigned.
    *
    NOTATION_NODE
    *
    DOMNotation * nodes cannot be adopted.
    *
    PROCESSING_INSTRUCTION_NODE, TEXT_NODE, * CDATA_SECTION_NODE, COMMENT_NODE
    *
    These nodes can all be adopted. No * specifics.
    *
    * @param source The node to move into this document. * @return The adopted node, or null if this operation * fails, such as when the source node comes from a different * implementation. * @exception DOMException * NOT_SUPPORTED_ERR: Raised if the source node is of type * DOCUMENT, DOCUMENT_TYPE. *
    NO_MODIFICATION_ALLOWED_ERR: Raised when the source node is * readonly. * @since DOM Level 3 */ virtual DOMNode* adoptNode(DOMNode* source) = 0; /** * This method acts as if the document was going through a save and load * cycle, putting the document in a "normal" form. The actual result * depends on the features being set. See DOMConfiguration for * details. * *
    Noticeably this method normalizes DOMText nodes, makes * the document "namespace wellformed", according to the algorithm * described below in pseudo code, by adding missing namespace * declaration attributes and adding or changing namespace prefixes, * updates the replacement tree of DOMEntityReference nodes, * normalizes attribute values, etc. *
    Mutation events, when supported, are generated to reflect the * changes occurring on the document. * Note that this is a partial implementation. Not all the required features are implemented. * Currently DOMAttr and DOMText nodes are normalized. * Features to remove DOMComment and DOMCDATASection work. * @since DOM Level 3 * */ virtual void normalizeDocument() = 0; /** * The configuration used when DOMDocument::normalizeDocument is invoked. * * @return The DOMConfiguration from this DOMDocument * * @since DOM Level 3 */ virtual DOMConfiguration* getDOMConfig() const = 0; //@} // ----------------------------------------------------------------------- // Non-standard extension // ----------------------------------------------------------------------- /** @name Non-standard extension */ //@{ /** * Non-standard extension * * Create a new entity. * @param name The name of the entity to instantiate * */ virtual DOMEntity *createEntity(const XMLCh *name) = 0; /** * Non-standard extension * * Create a DOMDocumentType node. * @return A DOMDocumentType that references the newly * created DOMDocumentType node. * */ virtual DOMDocumentType *createDocumentType(const XMLCh *name) = 0; /*** * Provide default implementation to maintain source code compatibility ***/ virtual DOMDocumentType* createDocumentType(const XMLCh *qName, const XMLCh*, //publicId, const XMLCh* //systemId ) { return createDocumentType(qName); } /** * Non-standard extension. * * Create a Notation. * @param name The name of the notation to instantiate * @return A DOMNotation that references the newly * created DOMNotation node. */ virtual DOMNotation *createNotation(const XMLCh *name) = 0; /** * Non-standard extension. * * Creates an element of the given qualified name and * namespace URI, and also stores line/column number info. * Used by internally XSDXercesDOMParser during schema traversal. * * @see createElementNS(const XMLCh *namespaceURI, const XMLCh *qualifiedName) */ virtual DOMElement *createElementNS(const XMLCh *namespaceURI, const XMLCh *qualifiedName, const XMLFileLoc lineNum, const XMLFileLoc columnNum) = 0; //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMDocumentType.hpp0000644000175000017500000001334710606722647020760 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMDocumentType.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMDOCUMENTTYPE_HPP) #define XERCESC_INCLUDE_GUARD_DOMDOCUMENTTYPE_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN class DOMNamedNodeMap; /** * Each DOMDocument has a doctype attribute whose value * is either null or a DOMDocumentType object. The * DOMDocumentType interface in the DOM Core provides an interface * to the list of entities that are defined for the document, and little * else because the effect of namespaces and the various XML schema efforts * on DTD representation are not clearly understood as of this writing. *

    The DOM Level 2 doesn't support editing DOMDocumentType nodes. *

    See also the Document Object Model (DOM) Level 2 Core Specification. * * @since DOM Level 1 */ class CDOM_EXPORT DOMDocumentType: public DOMNode { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMDocumentType() {}; //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented constructors and operators */ //@{ DOMDocumentType(const DOMDocumentType &); DOMDocumentType & operator = (const DOMDocumentType &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMDocumentType() {}; //@} // ----------------------------------------------------------------------- // Virtual DOMDocumentType interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 1 */ //@{ /** * The name of DTD; i.e., the name immediately following the * DOCTYPE keyword. * * @since DOM Level 1 */ virtual const XMLCh * getName() const = 0; /** * A DOMNamedNodeMap containing the general entities, both * external and internal, declared in the DTD. Parameter entities are * not contained. Duplicates are discarded. For example in: * <!DOCTYPE
    * ex SYSTEM "ex.dtd" [ <!ENTITY foo "foo"> <!ENTITY bar
    * "bar"> <!ENTITY bar "bar2"> <!ENTITY % baz "baz">
    * ]> <ex/>
    * the interface provides access to foo * and the first declaration of bar but not the second * declaration of bar or baz. Every node in * this map also implements the DOMEntity interface. *
    The DOM Level 2 does not support editing entities, therefore * entities cannot be altered in any way. * * @since DOM Level 1 */ virtual DOMNamedNodeMap *getEntities() const = 0; /** * A DOMNamedNodeMap containing the notations declared in the * DTD. Duplicates are discarded. Every node in this map also implements * the DOMNotation interface. *
    The DOM Level 2 does not support editing notations, therefore * notations cannot be altered in any way. * * @since DOM Level 1 */ virtual DOMNamedNodeMap *getNotations() const = 0; //@} /** @name Functions introduced in DOM Level 2. */ //@{ /** * Get the public identifier of the external subset. * * @return The public identifier of the external subset. * @since DOM Level 2 */ virtual const XMLCh * getPublicId() const = 0; /** * Get the system identifier of the external subset. * * @return The system identifier of the external subset. * @since DOM Level 2 */ virtual const XMLCh * getSystemId() const = 0; /** * The internal subset as a string, or null if there is none. * This is does not contain the delimiting square brackets.The actual * content returned depends on how much information is available to the * implementation. This may vary depending on various parameters, * including the XML processor used to build the document. * * @return The internal subset as a string. * @since DOM Level 2 */ virtual const XMLCh * getInternalSubset() const = 0; //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMNodeIterator.hpp0000644000175000017500000001766211030714661020730 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMNodeIterator.hpp 671894 2008-06-26 13:29:21Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMNODEITERATOR_HPP) #define XERCESC_INCLUDE_GUARD_DOMNODEITERATOR_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN /** * DOMNodeIterators are used to step through a set of nodes, e.g. * the set of nodes in a DOMNodeList, the document subtree * governed by a particular DOMNode, the results of a query, or * any other set of nodes. The set of nodes to be iterated is determined by * the implementation of the DOMNodeIterator. DOM Level 2 * specifies a single DOMNodeIterator implementation for * document-order traversal of a document subtree. Instances of these * DOMNodeIterators are created by calling * DOMDocumentTraversal.createNodeIterator(). *

    See also the Document Object Model (DOM) Level 2 Traversal and Range Specification. * @since DOM Level 2 */ class CDOM_EXPORT DOMNodeIterator { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMNodeIterator() {} DOMNodeIterator(const DOMNodeIterator &) {} //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented operators */ //@{ DOMNodeIterator & operator = (const DOMNodeIterator &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMNodeIterator() {}; //@} // ----------------------------------------------------------------------- // Virtual DOMNodeFilter interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 2 */ //@{ // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- /** * The root node of the DOMNodeIterator, as specified * when it was created. * @since DOM Level 2 */ virtual DOMNode* getRoot() = 0; /** * Return which node types are presented via the iterator. * This attribute determines which node types are presented via the * DOMNodeIterator. The available set of constants is defined * in the DOMNodeFilter interface. Nodes not accepted by * whatToShow will be skipped, but their children may still * be considered. Note that this skip takes precedence over the filter, * if any. * @since DOM Level 2 * */ virtual DOMNodeFilter::ShowType getWhatToShow() = 0; /** * The DOMNodeFilter used to screen nodes. * * @since DOM Level 2 */ virtual DOMNodeFilter* getFilter() = 0; /** * Return the expandEntityReferences flag. * The value of this flag determines whether the children of entity * reference nodes are visible to the DOMNodeIterator. If * false, these children and their descendants will be rejected. Note * that this rejection takes precedence over whatToShow and * the filter. Also note that this is currently the only situation where * DOMNodeIterators may reject a complete subtree rather than * skipping individual nodes. *
    *
    To produce a view of the document that has entity references * expanded and does not expose the entity reference node itself, use * the whatToShow flags to hide the entity reference node * and set expandEntityReferences to true when creating the * DOMNodeIterator. To produce a view of the document that has * entity reference nodes but no entity expansion, use the * whatToShow flags to show the entity reference node and * set expandEntityReferences to false. * * @since DOM Level 2 */ virtual bool getExpandEntityReferences() = 0; // ----------------------------------------------------------------------- // Query methods // ----------------------------------------------------------------------- /** * Returns the next node in the set and advances the position of the * DOMNodeIterator in the set. After a * DOMNodeIterator is created, the first call to * nextNode() returns the first node in the set. * @return The next DOMNode in the set being iterated over, or * null if there are no more members in that set. * @exception DOMException * INVALID_STATE_ERR: Raised if this method is called after the * detach method was invoked. * @since DOM Level 2 */ virtual DOMNode* nextNode() = 0; /** * Returns the previous node in the set and moves the position of the * DOMNodeIterator backwards in the set. * @return The previous DOMNode in the set being iterated over, * or null if there are no more members in that set. * @exception DOMException * INVALID_STATE_ERR: Raised if this method is called after the * detach method was invoked. * @since DOM Level 2 */ virtual DOMNode* previousNode() = 0; /** * Detaches the DOMNodeIterator from the set which it iterated * over, releasing any computational resources and placing the * DOMNodeIterator in the INVALID state. After * detach has been invoked, calls to nextNode * or previousNode will raise the exception * INVALID_STATE_ERR. * @since DOM Level 2 */ virtual void detach() = 0; //@} // ----------------------------------------------------------------------- // Non-standard Extension // ----------------------------------------------------------------------- /** @name Non-standard Extension */ //@{ /** * Called to indicate that this NodeIterator is no longer in use * and that the implementation may relinquish any resources associated with it. * (release() will call detach() where appropriate) * * Access to a released object will lead to unexpected result. */ virtual void release() = 0; //@} }; #define GetDOMNodeIteratorMemoryManager GET_DIRECT_MM(fDocument) XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMLSSerializer.hpp0000644000175000017500000006360611302743162020700 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMLSSerializer.hpp 883665 2009-11-24 11:41:38Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMLSSERIALIZER_HPP) #define XERCESC_INCLUDE_GUARD_DOMLSSERIALIZER_HPP /** * * DOMLSSerializer provides an API for serializing (writing) a DOM document out in * an XML document. The XML data is written to an output stream, the type of * which depends on the specific language bindings in use. During * serialization of XML data, namespace fixup is done when possible. *

    DOMLSSerializer accepts any node type for serialization. For * nodes of type Document or Entity, well formed * XML will be created if possible. The serialized output for these node * types is either as a Document or an External Entity, respectively, and is * acceptable input for an XML parser. For all other types of nodes the * serialized form is not specified, but should be something useful to a * human for debugging or diagnostic purposes. Note: rigorously designing an * external (source) form for stand-alone node types that don't already have * one defined in seems a bit much to take on here. *

    Within a Document or Entity being serialized, Nodes are processed as * follows Documents are written including an XML declaration and a DTD * subset, if one exists in the DOM. Writing a document node serializes the * entire document. Entity nodes, when written directly by * write defined in the DOMLSSerializer interface, * output the entity expansion but no namespace fixup is done. The resulting * output will be valid as an external entity. Entity References nodes are * serializes as an entity reference of the form * "&entityName;") in the output. Child nodes (the * expansion) of the entity reference are ignored. CDATA sections * containing content characters that can not be represented in the * specified output encoding are handled according to the * "split-cdata-sections" feature.If the feature is true, CDATA * sections are split, and the unrepresentable characters are serialized as * numeric character references in ordinary content. The exact position and * number of splits is not specified. If the feature is false, * unrepresentable characters in a CDATA section are reported as errors. The * error is not recoverable - there is no mechanism for supplying * alternative characters and continuing with the serialization. All other * node types (DOMElement, DOMText, etc.) are serialized to their corresponding * XML source form. *

    Within the character data of a document (outside of markup), any * characters that cannot be represented directly are replaced with * character references. Occurrences of '<' and '&' are replaced by * the predefined entities &lt; and &amp. The other predefined * entities (&gt, &apos, etc.) are not used; these characters can be * included directly. Any character that can not be represented directly in * the output character encoding is serialized as a numeric character * reference. *

    Attributes not containing quotes are serialized in quotes. Attributes * containing quotes but no apostrophes are serialized in apostrophes * (single quotes). Attributes containing both forms of quotes are * serialized in quotes, with quotes within the value represented by the * predefined entity &quot;. Any character that can not be represented * directly in the output character encoding is serialized as a numeric * character reference. *

    Within markup, but outside of attributes, any occurrence of a character * that cannot be represented in the output character encoding is reported * as an error. An example would be serializing the element * <LaCañada/> with the encoding="us-ascii". *

    When requested by setting the normalize-characters feature * on DOMLSSerializer, all data to be serialized, both markup and * character data, is W3C Text normalized according to the rules defined in * . The W3C Text normalization process affects only the data as it is being * written; it does not alter the DOM's view of the document after * serialization has completed. *

    Namespaces are fixed up during serialization, the serialization process * will verify that namespace declarations, namespace prefixes and the * namespace URIs associated with Elements and Attributes are consistent. If * inconsistencies are found, the serialized form of the document will be * altered to remove them. The algorithm used for doing the namespace fixup * while seralizing a document is a combination of the algorithms used for * lookupNamespaceURI and lookupPrefix. previous paragraph to be * defined closer here. *

    Any changes made affect only the namespace prefixes and declarations * appearing in the serialized data. The DOM's view of the document is not * altered by the serialization operation, and does not reflect any changes * made to namespace declarations or prefixes in the serialized output. *

    While serializing a document the serializer will write out * non-specified values (such as attributes whose specified is * false) if the output-default-values feature is * set to true. If the output-default-values flag * is set to false and the use-abstract-schema * feature is set to true the abstract schema will be used to * determine if a value is specified or not, if * use-abstract-schema is not set the specified * flag on attribute nodes is used to determine if attribute values should * be written out. *

    Ref to Core spec (1.1.9, XML namespaces, 5th paragraph) entity ref * description about warning about unbound entity refs. Entity refs are * always serialized as &foo;, also mention this in the load part of * this spec. *

    When serializing a document the DOMLSSerializer checks to see if the document * element in the document is a DOM Level 1 element or a DOM Level 2 (or * higher) element (this check is done by looking at the localName of the * root element). If the root element is a DOM Level 1 element then the * DOMLSSerializer will issue an error if a DOM Level 2 (or higher) element is * found while serializing. Likewise if the document element is a DOM Level * 2 (or higher) element and the DOMLSSerializer sees a DOM Level 1 element an * error is issued. Mixing DOM Level 1 elements with DOM Level 2 (or higher) * is not supported. *

    DOMLSSerializers have a number of named features that can be * queried or set. The name of DOMLSSerializer features must be valid * XML names. Implementation specific features (extensions) should choose an * implementation dependent prefix to avoid name collisions. *

    Here is a list of properties that must be recognized by all * implementations. *

    *
    "normalize-characters"
    *
    *
    *
    true
    *
    [ * optional] (default) Perform the W3C Text Normalization of the characters * in document as they are written out. Only the characters being written * are (potentially) altered. The DOM document itself is unchanged.
    *
    * false
    *
    [required] do not perform character normalization.
    *
    *
    * "split-cdata-sections"
    *
    *
    *
    true
    *
    [required] (default) * Split CDATA sections containing the CDATA section termination marker * ']]>' or characters that can not be represented in the output * encoding, and output the characters using numeric character references. * If a CDATA section is split a warning is issued.
    *
    false
    *
    [ * required] Signal an error if a CDATASection contains an * unrepresentable character.
    *
    *
    "validation"
    *
    *
    *
    true
    *
    [ * optional] Use the abstract schema to validate the document as it is being * serialized. If validation errors are found the error handler is notified * about the error. Setting this state will also set the feature * use-abstract-schema to true.
    *
    false
    *
    [ * required] (default) Don't validate the document as it is being * serialized.
    *
    *
    "expand-entity-references"
    *
    *
    *
    true
    *
    [ * optional] Expand EntityReference nodes when serializing.
    *
    * false
    *
    [required] (default) Serialize all * EntityReference nodes as XML entity references.
    *
    *
    * "whitespace-in-element-content"
    *
    *
    *
    true
    *
    [required] ( * default) Output all white spaces in the document.
    *
    false
    *
    [ * optional] Only output white space that is not within element content. The * implementation is expected to use the * isWhitespaceInElementContent flag on Text nodes * to determine if a text node should be written out or not.
    *
    *
    * "discard-default-content"
    *
    *
    *
    true
    *
    [required] (default * ) Use whatever information available to the implementation (i.e. XML * schema, DTD, the specified flag on Attr nodes, * and so on) to decide what attributes and content should be serialized or * not. Note that the specified flag on Attr nodes * in itself is not always reliable, it is only reliable when it is set to * false since the only case where it can be set to * false is if the attribute was created by a Level 1 * implementation.
    *
    false
    *
    [required] Output all attributes and * all content.
    *
    *
    "format-canonical"
    *
    *
    *
    true
    *
    [optional] * This formatting writes the document according to the rules specified in . * Setting this feature to true will set the feature "format-pretty-print" * to false.
    *
    false
    *
    [required] (default) Don't canonicalize the * output.
    *
    *
    "format-pretty-print"
    *
    *
    *
    true
    *
    [optional] * Formatting the output by adding whitespace to produce a pretty-printed, * indented, human-readable form. The exact form of the transformations is * not specified by this specification. Setting this feature to true will * set the feature "format-canonical" to false.
    *
    false
    *
    [required] * (default) Don't pretty-print the result.
    *
    *
    "http://apache.org/xml/features/dom/byte-order-mark"
    *
    *
    *
    false
    *
    [optional] * (default) Setting this feature to true will output the correct BOM for the specified * encoding.
    *
    true
    *
    [required] * Don't generate a BOM.
    *
    *
    "http://apache.org/xml/features/pretty-print/space-first-level-elements"
    *
    *
    *
    true
    *
    [optional] * (default) Setting this feature to true will add an extra line feed between the elements * that are children of the document root.
    *
    false
    *
    [required] * Don't add the extra line feed.
    *
    *
    *

    See also the Document Object Model (DOM) Level 3 Load and Save Specification. * * @since DOM Level 3 */ #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN class DOMLSOutput; class CDOM_EXPORT DOMLSSerializer { protected : // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMLSSerializer() {}; //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented constructors and operators */ //@{ DOMLSSerializer(const DOMLSSerializer &); DOMLSSerializer & operator = (const DOMLSSerializer &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMLSSerializer() {}; //@} // ----------------------------------------------------------------------- // Virtual DOMLSSerializer interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 3 */ //@{ // ----------------------------------------------------------------------- // Feature methods // ----------------------------------------------------------------------- /** * The DOMConfiguration object used by the LSSerializer when serializing a DOM node. * * In addition to the parameters recognized in on the DOMConfiguration * interface defined in [DOM Level 3 Core], the DOMConfiguration objects * for DOMLSSerializer add or modify the following parameters: * * "canonical-form" * true [optional] * Writes the document according to the rules specified in [Canonical XML]. In addition to * the behavior described in "canonical-form" [DOM Level 3 Core], setting this parameter to * true will set the parameters "format-pretty-print", "discard-default-content", and * "xml-declaration", to false. Setting one of those parameters to true will set this * parameter to false. Serializing an XML 1.1 document when "canonical-form" is true will * generate a fatal error. * false [required] (default) * Do not canonicalize the output. * * "discard-default-content" * true [required] (default) * Use the DOMAttr::getSpecified attribute to decide what attributes should be discarded. * Note that some implementations might use whatever information available to the implementation * (i.e. XML schema, DTD, the DOMAttr::getSpecified attribute, and so on) to determine what * attributes and content to discard if this parameter is set to true. * false [required] * Keep all attributes and all content. * * "format-pretty-print" * true [optional] * Formatting the output by adding whitespace to produce a pretty-printed, indented, * human-readable form. The exact form of the transformations is not specified by this specification. * Pretty-printing changes the content of the document and may affect the validity of the document, * validating implementations should preserve validity. * false [required] (default) * Don't pretty-print the result. * * "ignore-unknown-character-denormalizations" * true [required] (default) * If, while verifying full normalization when [XML 1.1] is supported, a character is encountered * for which the normalization properties cannot be determined, then raise a "unknown-character-denormalization" * warning (instead of raising an error, if this parameter is not set) and ignore any possible * denormalizations caused by these characters. * false [optional] * Report a fatal error if a character is encountered for which the processor cannot determine the * normalization properties. * * "normalize-characters" * This parameter is equivalent to the one defined by DOMConfiguration in [DOM Level 3 Core]. * Unlike in the Core, the default value for this parameter is true. While DOM implementations are not * required to support fully normalizing the characters in the document according to appendix E of [XML 1.1], * this parameter must be activated by default if supported. * * "xml-declaration" * true [required] (default) * If a DOMDocument, DOMElement, or DOMEntity node is serialized, the XML declaration, or text declaration, * should be included. The version (DOMDocument::xmlVersion if the document is a Level 3 document and the * version is non-null, otherwise use the value "1.0"), and the output encoding (see DOMLSSerializer::write * for details on how to find the output encoding) are specified in the serialized XML declaration. * false [required] * Do not serialize the XML and text declarations. Report a "xml-declaration-needed" warning if this will * cause problems (i.e. the serialized data is of an XML version other than [XML 1.0], or an encoding would * be needed to be able to re-parse the serialized data). * * "error-handler" * Contains a DOMErrorHandler object. If an error is encountered in the document, the implementation will call back * the DOMErrorHandler registered using this parameter. The implementation may provide a default DOMErrorHandler * object. When called, DOMError::relatedData will contain the closest node to where the error occurred. * If the implementation is unable to determine the node where the error occurs, DOMError::relatedData will contain * the DOMDocument node. Mutations to the document from within an error handler will result in implementation * dependent behavior. * * @return The pointer to the configuration object. * @since DOM Level 3 */ virtual DOMConfiguration* getDomConfig() = 0; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- /** * The end-of-line sequence of characters to be used in the XML being * written out. The only permitted values are these: *

    *
    null
    *
    * Use a default end-of-line sequence. DOM implementations should choose * the default to match the usual convention for text files in the * environment being used. Implementations must choose a default * sequence that matches one of those allowed by 2.11 "End-of-Line * Handling". However, Xerces-C++ always uses LF when this * property is set to null since otherwise automatic * translation of LF to CR-LF on Windows for text files would * result in such files containing CR-CR-LF. If you need Windows-style * end of line sequences in your output, consider writing to a file * opened in text mode or explicitly set this property to CR-LF.
    *
    CR
    *
    The carriage-return character (\#xD).
    *
    CR-LF
    *
    The * carriage-return and line-feed characters (\#xD \#xA).
    *
    LF
    *
    The line-feed * character (\#xA).
    *
    *
    The default value for this attribute is null. * * @param newLine The end-of-line sequence of characters to be used. * @see getNewLine * @since DOM Level 3 */ virtual void setNewLine(const XMLCh* const newLine) = 0; /** * When the application provides a filter, the serializer will call out * to the filter before serializing each Node. Attribute nodes are never * passed to the filter. The filter implementation can choose to remove * the node from the stream or to terminate the serialization early. * * @param filter The writer filter to be used. * @see getFilter * @since DOM Level 3 */ virtual void setFilter(DOMLSSerializerFilter *filter) = 0; // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- /** * Return the end-of-line sequence of characters to be used in the XML being * written out. * * @return The end-of-line sequence of characters to be used. * @see setNewLine * @since DOM Level 3 */ virtual const XMLCh* getNewLine() const = 0; /** * Return the WriterFilter used. * * @return The writer filter used. * @see setFilter * @since DOM Level 3 */ virtual DOMLSSerializerFilter* getFilter() const = 0; // ----------------------------------------------------------------------- // Write methods // ----------------------------------------------------------------------- /** * Write out the specified node as described above in the description of * DOMLSSerializer. Writing a Document or Entity node produces a * serialized form that is well formed XML. Writing other node types * produces a fragment of text in a form that is not fully defined by * this document, but that should be useful to a human for debugging or * diagnostic purposes. * * @param nodeToWrite The Document or Entity node to * be written. For other node types, something sensible should be * written, but the exact serialized form is not specified. * @param destination The destination for the data to be written. * @return Returns true if node was * successfully serialized and false in case a failure * occured and the failure wasn't canceled by the error handler. * @since DOM Level 3 */ virtual bool write(const DOMNode* nodeToWrite, DOMLSOutput* const destination) = 0; /** * Write out the specified node as described above in the description of * DOMLSSerializer. Writing a Document or Entity node produces a * serialized form that is well formed XML. Writing other node types * produces a fragment of text in a form that is not fully defined by * this document, but that should be useful to a human for debugging or * diagnostic purposes. * * @param nodeToWrite The Document or Entity node to * be written. For other node types, something sensible should be * written, but the exact serialized form is not specified. * @param uri The destination for the data to be written. * @return Returns true if node was * successfully serialized and false in case a failure * occured and the failure wasn't canceled by the error handler. * @since DOM Level 3 */ virtual bool writeToURI(const DOMNode* nodeToWrite, const XMLCh* uri) = 0; /** * Serialize the specified node as described above in the description of * DOMLSSerializer. The result of serializing the node is * returned as a string. Writing a Document or Entity node produces a * serialized form that is well formed XML. Writing other node types * produces a fragment of text in a form that is not fully defined by * this document, but that should be useful to a human for debugging or * diagnostic purposes. * * @param nodeToWrite The node to be written. * @param manager The memory manager to be used to allocate the result string. * If NULL is used, the memory manager used to construct the serializer will * be used. * @return Returns the serialized data, or null in case a * failure occured and the failure wasn't canceled by the error * handler. The returned string is always in UTF-16. * The encoding information available in DOMLSSerializer is ignored in writeToString(). * @since DOM Level 3 */ virtual XMLCh* writeToString(const DOMNode* nodeToWrite, MemoryManager* manager = NULL) = 0; //@} // ----------------------------------------------------------------------- // Non-standard Extension // ----------------------------------------------------------------------- /** @name Non-standard Extension */ //@{ /** * Called to indicate that this Writer is no longer in use * and that the implementation may relinquish any resources associated with it. * * Access to a released object will lead to unexpected result. */ virtual void release() = 0; //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMXPathException.hpp0000644000175000017500000000645611030714661021233 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMXPathException.hpp 671894 2008-06-26 13:29:21Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMXPATHEXCEPTION_HPP) #define XERCESC_INCLUDE_GUARD_DOMXPATHEXCEPTION_HPP #include XERCES_CPP_NAMESPACE_BEGIN /** * @since DOM Level 3 */ class CDOM_EXPORT DOMXPathException : public DOMException { public: //@{ /** * ExceptionCode *
    INVALID_EXPRESSION_ERR The expression has a syntax error or otherwise * is not a legal expression according to the rules of the specific * DOMXPathEvaluator or contains specialized extension functions * or variables not supported by this implementation. *
    TYPE_ERR The expression cannot be converted to return the specified type. *
    NO_RESULT_ERROR There is no current result in the result object. */ enum ExceptionCode { INVALID_EXPRESSION_ERR = 51, TYPE_ERR = 52, NO_RESULT_ERROR = 53 }; //@} public: // ----------------------------------------------------------------------- // Constructors // ----------------------------------------------------------------------- /** @name Constructors */ //@{ /** * Default constructor for DOMXPathException. * */ DOMXPathException(); /** * Constructor which takes an error code and a message. * * @param code The error code which indicates the exception * @param messageCode The string containing the error message * @param memoryManager The memory manager used to (de)allocate memory */ DOMXPathException(short code, short messageCode = 0, MemoryManager* const memoryManager = XMLPlatformUtils::fgMemoryManager); /** * Copy constructor. * * @param other The object to be copied. */ DOMXPathException(const DOMXPathException &other); //@} // ----------------------------------------------------------------------- // Destructors // ----------------------------------------------------------------------- /** @name Destructor. */ //@{ /** * Destructor for DOMXPathException. * */ virtual ~DOMXPathException(); //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DOMXPathException& operator = (const DOMXPathException&); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMImplementationLS.hpp0000644000175000017500000001573611360344373021562 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMImplementationLS.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONLS_HPP) #define XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONLS_HPP #include XERCES_CPP_NAMESPACE_BEGIN class DOMLSParser; class DOMLSSerializer; class DOMLSInput; class DOMLSOutput; class MemoryManager; class XMLGrammarPool; /** *

    DOMImplementationLS contains the factory methods for * creating Load and Save objects.

    * *

    An object that implements DOMImplementationLS is obtained by doing a * binding specific cast from DOMImplementation to DOMImplementationLS. * Implementations supporting the Load and Save feature must implement the * DOMImplementationLS interface on whatever object implements the * DOMImplementation interface.

    * * @since DOM Level 3 */ class CDOM_EXPORT DOMImplementationLS { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMImplementationLS() {}; //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented constructors and operators */ //@{ DOMImplementationLS(const DOMImplementationLS &); DOMImplementationLS & operator = (const DOMImplementationLS &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMImplementationLS() {}; //@} // ----------------------------------------------------------------------- // Public constants // ----------------------------------------------------------------------- /** @name Public constants */ //@{ /** * Create a synchronous or an asynchronous DOMLSParser. * @see createLSParser(const DOMImplementationLSMode mode, const XMLCh* const schemaType) * @since DOM Level 3 * */ enum DOMImplementationLSMode { MODE_SYNCHRONOUS = 1, MODE_ASYNCHRONOUS = 2 }; //@} // ----------------------------------------------------------------------- // Virtual DOMImplementationLS interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 3 */ //@{ // ----------------------------------------------------------------------- // Factory create methods // ----------------------------------------------------------------------- /** * Create a new DOMLSParser. The newly constructed parser may then be configured * by means of its DOMConfiguration object, and used to parse documents by * means of its parse method. * * @param mode The mode argument is either MODE_SYNCHRONOUS * or MODE_ASYNCHRONOUS, if mode is MODE_SYNCHRONOUS * then the DOMLSParser that is created will operate in synchronous * mode, if it's MODE_ASYNCHRONOUS then the DOMLSParser * that is created will operate in asynchronous mode. * @param schemaType An absolute URI representing the type of the schema * language used during the load of a DOMDocument using the newly * created DOMLSParser. Note that no lexical checking is done on * the absolute URI. In order to create a DOMLSParser for any kind * of schema types (i.e. the DOMLSParser will be free to use any * schema found), use the value NULL. * Note: For W3C XML Schema [XML Schema Part 1], applications must use * the value "http://www.w3.org/2001/XMLSchema". For XML DTD [XML 1.0], * applications must use the value "http://www.w3.org/TR/REC-xml". * Other Schema languages are outside the scope of the W3C and therefore should * recommend an absolute URI in order to use this method. * @param manager Pointer to the memory manager to be used to allocate objects. * @param gramPool The collection of cached grammars. * @return The newly created DOMLSParser object. This * DOMLSParser is either synchronous or asynchronous depending * on the value of the mode argument. * @exception DOMException NOT_SUPPORTED_ERR: Raised if the requested mode * or schema type is not supported. * * @see DOMLSParser * @since DOM Level 3 */ virtual DOMLSParser* createLSParser(const DOMImplementationLSMode mode, const XMLCh* const schemaType, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager, XMLGrammarPool* const gramPool = 0) = 0; /** * Create a new DOMLSSerializer. DOMLSSerializer is used to serialize a DOM tree * back into an XML document. * * @return The newly created DOMLSSerializer object. * * @see DOMLSSerializer * @since DOM Level 3 */ virtual DOMLSSerializer* createLSSerializer(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0; /** * Create a new "empty" DOMLSInput. * * @return The newly created DOMLSInput object. * * @see DOMLSInput * @since DOM Level 3 */ virtual DOMLSInput* createLSInput(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0; /** * Create a new "empty" LSOutput. * * @return The newly created LSOutput object. * * @see LSOutput * @since DOM Level 3 */ virtual DOMLSOutput* createLSOutput(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0; //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMXPathExpression.hpp0000644000175000017500000001250211066445364021433 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMXPathExpression.hpp 698579 2008-09-24 14:13:08Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMXPATHEXPRESSION_HPP) #define XERCESC_INCLUDE_GUARD_DOMXPATHEXPRESSION_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN class DOMNode; /** * The DOMXPathExpression interface represents a parsed and resolved XPath expression. * @since DOM Level 3 */ class CDOM_EXPORT DOMXPathExpression { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMXPathExpression() {}; //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented constructors and operators */ //@{ DOMXPathExpression(const DOMXPathExpression &); DOMXPathExpression& operator = (const DOMXPathExpression&); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMXPathExpression() {}; //@} // ----------------------------------------------------------------------- // Virtual DOMXPathExpression interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 3 */ //@{ /** * Evaluates this XPath expression and returns a result. * @param contextNode of type DOMNode The context is context * node for the evaluation of this XPath expression. * If the XPathEvaluator was obtained by casting the Document then this must * be owned by the same document and must be a DOMDocument, DOMElement, * DOMAttribute, DOMText, DOMCDATASection, * DOMComment, DOMProcessingInstruction, or * XPathNamespace. If the context node is a DOMText or a * DOMCDATASection, then the context is interpreted as the whole logical * text node as seen by XPath, unless the node is empty in which case it may not * serve as the XPath context. * @param type If a specific type is specified, then the result * will be coerced to return the specified type relying on XPath conversions and fail * if the desired coercion is not possible. This must be one of the type codes of DOMXPathResult. * @param result of type DOMXPathResult* The result specifies a specific result object which * may be reused and returned by this method. If this is specified as nullor the * implementation does not reuse the specified result, a new result object will be constructed * and returned. * @return DOMXPathResult* The result of the evaluation of the XPath expression. * @exception DOMXPathException * TYPE_ERR: Raised if the result cannot be converted to return the specified type. * @exception DOMException * WRONG_DOCUMENT_ERR: The DOMNode is from a document that is not supported by * the XPathEvaluator that created this DOMXPathExpression. * NOT_SUPPORTED_ERR: The DOMNode is not a type permitted as an XPath context node or the * request type is not permitted by this DOMXPathExpression. */ virtual DOMXPathResult* evaluate(const DOMNode *contextNode, DOMXPathResult::ResultType type, DOMXPathResult* result) const = 0; //@} // ----------------------------------------------------------------------- // Non-standard Extension // ----------------------------------------------------------------------- /** @name Non-standard Extension */ //@{ /** * Called to indicate that this DOMXPathExpression is no longer in use * and that the implementation may relinquish any resources associated with it. * * Access to a released object will lead to unexpected result. */ virtual void release() = 0; //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMImplementationList.hpp0000644000175000017500000001044011030714661022135 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMImplementationList.hpp 671894 2008-06-26 13:29:21Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONLIST_HPP) #define XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONLIST_HPP #include XERCES_CPP_NAMESPACE_BEGIN class DOMImplementation; /** * The DOMImplementationList interface provides the abstraction of an ordered * collection of DOM implementations, without defining or constraining how this collection * is implemented. The items in the DOMImplementationList are accessible via * an integral index, starting from 0. */ class CDOM_EXPORT DOMImplementationList { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMImplementationList() {}; //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented constructors and operators */ //@{ DOMImplementationList(const DOMImplementationList &); DOMImplementationList & operator = (const DOMImplementationList &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMImplementationList() {}; //@} // ----------------------------------------------------------------------- // Virtual DOMImplementationList interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 3 */ //@{ // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- /** * Returns the index item in the collection. * * If index is greater than or equal to the number of DOMImplementation in * the list, this returns null. * * @param index Index into the collection. * @return The DOMImplementation at the indexth position in the * DOMImplementationList, or null if that is not a valid * index. * @since DOM Level 3 */ virtual DOMImplementation *item(XMLSize_t index) const = 0; /** * Returns the number of DOMImplementation in the list. * * The range of valid child node indices is 0 to length-1 inclusive. * @since DOM Level 3 */ virtual XMLSize_t getLength() const = 0; //@} // ----------------------------------------------------------------------- // Non-standard Extension // ----------------------------------------------------------------------- /** @name Non-standard Extension */ //@{ /** * Called to indicate that this list is no longer in use * and that the implementation may relinquish any resources associated with it and * its associated children. * * Access to a released object will lead to unexpected result. * */ virtual void release() = 0; //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMLSSerializerFilter.hpp0000644000175000017500000000677411030714661022051 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMLSSerializerFilter.hpp 671894 2008-06-26 13:29:21Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMLSSERIALIZERFILTER_HPP) #define XERCESC_INCLUDE_GUARD_DOMLSSERIALIZERFILTER_HPP /** * * DOMLSSerializerFilter.hpp: interface for the DOMLSSerializerFilter class. * * DOMLSSerializerFilter provide applications the ability to examine nodes * as they are being serialized. * * DOMLSSerializerFilter lets the application decide what nodes should be * serialized or not. * * The DOMDocument, DOMDocumentType, DOMNotation, and DOMEntity nodes are not passed * to the filter. * * @since DOM Level 3 */ #include XERCES_CPP_NAMESPACE_BEGIN class CDOM_EXPORT DOMLSSerializerFilter : public DOMNodeFilter { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMLSSerializerFilter() {}; //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented constructors and operators */ //@{ DOMLSSerializerFilter(const DOMLSSerializerFilter &); DOMLSSerializerFilter & operator = (const DOMLSSerializerFilter &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMLSSerializerFilter() {}; //@} // ----------------------------------------------------------------------- // Virtual DOMLSSerializerFilter interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 3 */ //@{ /** * Interface from DOMNodeFilter, * to be implemented by implementation (derived class) */ virtual FilterAction acceptNode(const DOMNode* node) const = 0; /** * Tells the DOMLSSerializer what types of nodes to show to the filter. * See DOMNodeFilter for definition of the constants. * The constant SHOW_ATTRIBUTE is meaningless here, attribute nodes will * never be passed to a DOMLSSerializerFilter. * * @return The constants of what types of nodes to show. * @since DOM Level 3 */ virtual ShowType getWhatToShow() const =0; //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMConfiguration.hpp0000644000175000017500000004500711360344373021137 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESC_INCLUDE_GUARD_DOMCONFIGURATION_HPP) #define XERCESC_INCLUDE_GUARD_DOMCONFIGURATION_HPP //------------------------------------------------------------------------------------ // Includes //------------------------------------------------------------------------------------ #include #include #include XERCES_CPP_NAMESPACE_BEGIN /** * The DOMConfiguration interface represents the configuration of * a document and maintains a table of recognized parameters. * Using the configuration, it is possible to change * Document.normalizeDocument behavior, such as replacing * CDATASection nodes with Text nodes or * specifying the type of the schema that must be used when the * validation of the Document is requested. DOMConfiguration * objects are also used in [DOM Level 3 Load and Save] in * the DOMLSParser and DOMLSSerializer interfaces. * * The DOMConfiguration distinguish two types of parameters: * boolean (boolean parameters) and DOMUserData * (parameters). The names used by the DOMConfiguration object are * defined throughout the DOM Level 3 specifications. Names are * case-insensitive. To avoid possible conflicts, as a * convention, names referring to boolean parameters and * parameters defined outside the DOM specification should be made * unique. Names are recommended to follow the XML name * production rule but it is not enforced by the DOM * implementation. DOM Level 3 Core Implementations are required * to recognize all boolean parameters and parameters defined in * this specification. Each boolean parameter state or parameter * value may then be supported or not by the implementation. Refer * to their definition to know if a state or a value must be * supported or not. * * Note: Parameters are similar to features and properties used in * SAX2 [SAX]. * * The following list of parameters defined in the DOM: * * "error-handler" * [required] * A DOMErrorHandler object. If an error is * encountered in the document, the implementation will call * back the DOMErrorHandler registered using this * parameter. * When called, DOMError.relatedData will contain the * closest node to where the error occured. If the * implementation is unable to determine the node where the * error occurs, DOMError.relatedData will contain the * Document node. Mutations to the document from * within an error handler will result in implementation * dependent behaviour. * * "schema-type" * [optional] * A DOMString object containing an absolute URI and * representing the type of the schema language used to * validate a document against. Note that no lexical * checking is done on the absolute URI. * If this parameter is not set, a default value may be * provided by the implementation, based on the schema * languages supported and on the schema language used at * load time. * * Note: For XML Schema [XML Schema Part 1], * applications must use the value * "http://www.w3.org/2001/XMLSchema". For XML DTD * [XML 1.0], applications must use the value * "http://www.w3.org/TR/REC-xml". Other schema languages * are outside the scope of the W3C and therefore should * recommend an absolute URI in order to use this method. * * "schema-location" * [optional] * A DOMString object containing a list of URIs, * separated by white spaces (characters matching the * nonterminal production S defined in section 2.3 * [XML 1.0]), that represents the schemas against * which validation should occur. The types of schemas * referenced in this list must match the type specified * with schema-type, otherwise the behaviour of an * implementation is undefined. If the schema type is XML * Schema [XML Schema Part 1], only one of the XML * Schemas in the list can be with no namespace. * If validation occurs against a namespace aware schema, * i.e. XML Schema, and the targetNamespace of a schema * (specified using this property) matches the * targetNamespace of a schema occurring in the instance * document, i.e in schemaLocation attribute, the schema * specified by the user using this property will be used * (i.e., in XML Schema the schemaLocation attribute in the * instance document or on the import element will be * effectively ignored). * * Note: It is illegal to set the schema-location parameter * if the schema-type parameter value is not set. It is * strongly recommended that DOMInputSource.baseURI will be * set, so that an implementation can successfully resolve * any external entities referenced. * * The following list of boolean parameters (features) defined in * the DOM: * * "canonical-form" * * true * [optional] * Canonicalize the document according to the rules * specified in [Canonical XML]. Note that this * is limited to what can be represented in the DOM. * In particular, there is no way to specify the order * of the attributes in the DOM. * * false * [required] (default) * Do not canonicalize the document. * * "cdata-sections" * * true * [required] (default) * Keep CDATASection nodes in the document. * * false * [required] * Transform CDATASection nodes in the document * into Text nodes. The new Text node is * then combined with any adjacent Text node. * * "comments" * * true * [required] (default) * Keep Comment nodes in the document. * * false * [required] * Discard Comment nodes in the Document. * * "datatype-normalization" * * true * [required] * Exposed normalized values in the tree. * * false * [required] (default) * Do not perform normalization on the tree. * * "discard-default-content" * * true * [required] (default) * Use whatever information available to the * implementation (i.e. XML schema, DTD, the specified * flag on Attr nodes, and so on) to decide what * attributes and content should be discarded or not. * Note that the specified flag on Attr nodes in * itself is not always reliable, it is only reliable * when it is set to false since the only case where * it can be set to false is if the attribute was * created by the implementation. The default content * won't be removed if an implementation does not have * any information available. * * false * [required] * Keep all attributes and all content. * * "entities" * * true * [required] * Keep EntityReference and Entity nodes * in the document. * * false * [required] (default) * Remove all EntityReference and Entity * nodes from the document, putting the entity * expansions directly in their place. Text * nodes are into "normal" form. Only * EntityReference nodes to non-defined entities * are kept in the document. * * "infoset" * * true * [required] * Only keep in the document the information defined * in the XML Information Set [XML Information * set]. * This forces the following features to false: * namespace-declarations, validate-if-schema, * entities, datatype-normalization, cdata-sections. * This forces the following features to true: * whitespace-in-element-content, comments, * namespaces. * Other features are not changed unless explicitly * specified in the description of the features. * Note that querying this feature with getFeature * returns true only if the individual features * specified above are appropriately set. * * false * Setting infoset to false has no effect. * * "namespaces" * * true * [required] (default) * Perform the namespace processing as defined in * [XML Namespaces]. * * false * [optional] * Do not perform the namespace processing. * * "namespace-declarations" * * true * [required] (default) * Include namespace declaration attributes, specified * or defaulted from the schema or the DTD, in the * document. See also the section Declaring * Namespaces in [XML Namespaces]. * * false * [required] * Discard all namespace declaration attributes. The * Namespace prefixes are retained even if this * feature is set to false. * * "normalize-characters" * * true * [optional] * Perform the W3C Text Normalization of the * characters [CharModel] in the document. * * false * [required] (default) * Do not perform character normalization. * * "split-cdata-sections" * * true * [required] (default) * Split CDATA sections containing the CDATA section * termination marker ']]>'. When a CDATA section is * split a warning is issued. * * false * [required] * Signal an error if a CDATASection contains an * unrepresentable character. * * "validate" * * true * [optional] * Require the validation against a schema (i.e. XML * schema, DTD, any other type or representation of * schema) of the document as it is being normalized * as defined by [XML 1.0]. If validation errors * are found, or no schema was found, the error * handler is notified. Note also that normalized * values will not be exposed to the schema in used * unless the feature datatype-normalization is true. * * Note: validate-if-schema and validate are mutually * exclusive, setting one of them to true will set the * other one to false. * * false * [required] (default) * Only XML 1.0 non-validating processing must be * done. Note that validation might still happen if * validate-if-schema is true. * * "validate-if-schema" * * true * [optional] * Enable validation only if a declaration for the * document element can be found (independently of * where it is found, i.e. XML schema, DTD, or any * other type or representation of schema). If * validation errors are found, the error handler is * notified. Note also that normalized values will not * be exposed to the schema in used unless the feature * datatype-normalization is true. * * Note: validate-if-schema and validate are mutually * exclusive, setting one of them to true will set the * other one to false. * * false * [required] (default) * No validation should be performed if the document * has a schema. Note that validation must still * happen if validate is true. * * "element-content-whitespace" * * true * [required] (default) * Keep all white spaces in the document. * * false * [optional] * Discard white space in element content while * normalizing. The implementation is expected to use * the isWhitespaceInElementContent flag on Text * nodes to determine if a text node should be written * out or not. * * The resolutions of entities is done using Document.baseURI. * However, when the features "LS-Load" or "LS-Save" defined in * [DOM Level 3 Load and Save] are supported by the DOM * implementation, the parameter "entity-resolver" can also be * used on DOMConfiguration objects attached to Document * nodes. If this parameter is set, * Document.normalizeDocument will invoke the entity * resolver instead of using Document.baseURI. */ class CDOM_EXPORT DOMConfiguration { protected: //----------------------------------------------------------------------------------- // Constructor //----------------------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMConfiguration() {}; //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented constructors and operators */ //@{ DOMConfiguration(const DOMConfiguration &); DOMConfiguration & operator = (const DOMConfiguration &); //@} public: // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- /** Set the value of a parameter. * @param name The name of the parameter to set. * @param value The new value or null if the user wishes to unset the * parameter. While the type of the value parameter is defined as * DOMUserData, the object type must match the type defined * by the definition of the parameter. For example, if the parameter is * "error-handler", the value must be of type DOMErrorHandler * @exception DOMException (NOT_SUPPORTED_ERR) Raised when the * parameter name is recognized but the requested value cannot be set. * @exception DOMException (NOT_FOUND_ERR) Raised when the * parameter name is not recognized. * @since DOM level 3 **/ virtual void setParameter(const XMLCh* name, const void* value) = 0; virtual void setParameter(const XMLCh* name, bool value) = 0; // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- /** Return the value of a parameter if known. * @param name The name of the parameter. * @return The current object associated with the specified parameter or * null if no object has been associated or if the parameter is not * supported. * @exception DOMException (NOT_FOUND_ERR) Raised when the i * boolean parameter * name is not recognized. * @since DOM level 3 **/ virtual const void* getParameter(const XMLCh* name) const = 0; // ----------------------------------------------------------------------- // Query methods // ----------------------------------------------------------------------- /** Check if setting a parameter to a specific value is supported. * @param name The name of the parameter to check. * @param value An object. if null, the returned value is true. * @return true if the parameter could be successfully set to the specified * value, or false if the parameter is not recognized or the requested value * is not supported. This does not change the current value of the parameter * itself. * @since DOM level 3 **/ virtual bool canSetParameter(const XMLCh* name, const void* value) const = 0; virtual bool canSetParameter(const XMLCh* name, bool value) const = 0; /** * The list of the parameters supported by this DOMConfiguration object and * for which at least one value can be set by the application. * Note that this list can also contain parameter names defined outside this specification. * * @return The list of parameters that can be used with setParameter/getParameter * @since DOM level 3 **/ virtual const DOMStringList* getParameterNames() const = 0; // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMConfiguration() {}; //@} }; XERCES_CPP_NAMESPACE_END #endif /** * End of file DOMConfiguration.hpp */ xerces-c-3.1.1/src/xercesc/dom/DOMLSException.cpp0000644000175000017500000000270611030714661020512 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMLSException.cpp 671894 2008-06-26 13:29:21Z borisk $ */ #include "DOMLSException.hpp" #include XERCES_CPP_NAMESPACE_BEGIN DOMLSException::DOMLSException() : DOMException() { } DOMLSException::DOMLSException(short exCode, short messageCode, MemoryManager* const memoryManager) : DOMException(exCode, messageCode?messageCode:XMLDOMMsg::DOMLSEXCEPTION_ERRX+exCode-DOMLSException::PARSE_ERR+1, memoryManager) { } DOMLSException::DOMLSException(const DOMLSException &other) : DOMException(other) { } DOMLSException::~DOMLSException() { } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/DOMXPathEvaluator.hpp0000644000175000017500000002166211066445364021245 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMXPathEvaluator.hpp 698579 2008-09-24 14:13:08Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMXPATHEVALUATOR_HPP) #define XERCESC_INCLUDE_GUARD_DOMXPATHEVALUATOR_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN class DOMXPathNSResolver; class DOMXPathExpression; class DOMNode; /** * The evaluation of XPath expressions is provided by DOMXPathEvaluator. * In a DOM implementation which supports the XPath feature, the DOMXPathEvaluator * interface will be implemented on the same object which implements the Document interface permitting * it to be obtained by casting or by using the DOM Level 3 getFeature method. In this case the * implementation obtained from the Document supports the XPath DOM module and is compatible * with the XPath 1.0 specification. * Evaluation of expressions with specialized extension functions or variables may not * work in all implementations and is, therefore, not portable. XPathEvaluator implementations * may be available from other sources that could provide specific support for specialized extension * functions or variables as would be defined by other specifications. * @since DOM Level 3 */ class CDOM_EXPORT DOMXPathEvaluator { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMXPathEvaluator() {}; //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented constructors and operators */ //@{ DOMXPathEvaluator(const DOMXPathEvaluator &); DOMXPathEvaluator& operator = (const DOMXPathEvaluator&); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMXPathEvaluator() {}; //@} // ----------------------------------------------------------------------- // Virtual DOMXPathEvaluator interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 3 */ //@{ /** * Creates a parsed XPath expression with resolved namespaces. This is useful * when an expression will be reused in an application since it makes it * possible to compile the expression string into a more efficient internal * form and preresolve all namespace prefixes which occur within the expression. * @param expression of type XMLCh - The XPath expression string to be parsed. * @param resolver of type XPathNSResolver - The resolver permits * translation of all prefixes, including the xml namespace prefix, within the XPath expression * into appropriate namespace URIs. If this is specified as null, any namespace * prefix within the expression will result in DOMException being thrown with the * code NAMESPACE_ERR. * @return DOMXPathExpression The compiled form of the XPath expression. * @exception DOMXPathException * INVALID_EXPRESSION_ERR: Raised if the expression is not legal according to the * rules of the DOMXPathEvaluator. * @exception DOMException * NAMESPACE_ERR: Raised if the expression contains namespace prefixes which cannot * be resolved by the specified XPathNSResolver. * @since DOM Level 3 */ virtual DOMXPathExpression* createExpression(const XMLCh *expression, const DOMXPathNSResolver *resolver) = 0; /** Adapts any DOM node to resolve namespaces so that an XPath expression can be * easily evaluated relative to the context of the node where it appeared within * the document. This adapter works like the DOM Level 3 method lookupNamespaceURI * on nodes in resolving the namespaceURI from a given prefix using the current * information available in the node's hierarchy at the time lookupNamespaceURI * is called. also correctly resolving the implicit xml prefix. * @param nodeResolver of type DOMNode The node to be used as a context * for namespace resolution. If this parameter is null, an unpopulated * DOMXPathNSResolver is returned, which can be populated using the * Xerces-C extension DOMXPathNSResolver::addNamespaceBinding(). * @return DOMXPathNSResolver The object which resolves namespaces * with respect to the definitions in scope for the specified node. */ virtual DOMXPathNSResolver* createNSResolver(const DOMNode *nodeResolver) = 0; /** * Evaluates an XPath expression string and returns a result of the specified * type if possible. * @param expression of type XMLCh The XPath expression string to be parsed * and evaluated. * @param contextNode of type DOMNode The context is context node * for the evaluation * of this XPath expression. If the DOMXPathEvaluator was obtained by * casting the DOMDocument then this must be owned by the same * document and must be a DOMDocument, DOMElement, * DOMAttribute, DOMText, DOMCDATASection, * DOMComment, DOMProcessingInstruction, or * XPathNamespace node. If the context node is a DOMText or * a DOMCDATASection, then the context is interpreted as the whole * logical text node as seen by XPath, unless the node is empty in which case it * may not serve as the XPath context. * @param resolver of type XPathNSResolver The resolver permits * translation of all prefixes, including the xml namespace prefix, within * the XPath expression into appropriate namespace URIs. If this is specified * as null, any namespace prefix within the expression will result in * DOMException being thrown with the code NAMESPACE_ERR. * @param type - If a specific type is specified, then * the result will be returned as the corresponding type. This must be one * of the codes of the DOMXPathResult interface. * @param result of type DOMXPathResult* - The result specifies a specific result object * which may be reused and returned by this method. If this is specified as * null or the implementation does not reuse the specified result, a new result * object will be constructed and returned. * @return DOMXPathResult* The result of the evaluation of the XPath expression. * @exception DOMXPathException * INVALID_EXPRESSION_ERR: Raised if the expression is not legal * according to the rules of the DOMXPathEvaluator * TYPE_ERR: Raised if the result cannot be converted to return the specified type. * @exception DOMException * NAMESPACE_ERR: Raised if the expression contains namespace prefixes * which cannot be resolved by the specified XPathNSResolver. * WRONG_DOCUMENT_ERR: The DOMNode is from a document that is not supported * by this DOMXPathEvaluator. * NOT_SUPPORTED_ERR: The DOMNode is not a type permitted as an XPath context * node or the request type is not permitted by this DOMXPathEvaluator. */ virtual DOMXPathResult* evaluate(const XMLCh *expression, const DOMNode *contextNode, const DOMXPathNSResolver *resolver, DOMXPathResult::ResultType type, DOMXPathResult* result) = 0; //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMLSInput.hpp0000644000175000017500000002254710606722647017700 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMLSInput.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMLSINPUT_HPP) #define XERCESC_INCLUDE_GUARD_DOMLSINPUT_HPP #include XERCES_CPP_NAMESPACE_BEGIN class InputSource; /** * This interface represents a single input source for an XML entity. * *

    This interface allows an application to encapsulate information about * an input source in a single object, which may include a public identifier, * a system identifier, a byte stream (possibly with a specified encoding), * and/or a character stream.

    * *

    There are two places that the application will deliver this input source * to the parser: as the argument to the parse method, or as the return value * of the DOMLSResourceResolver.resolveResource method.

    * *

    The DOMLSParser will use the DOMLSInput object to determine how to * read XML input. If there is a character stream available, the parser will * read that stream directly; if not, the parser will use a byte stream, if * available; if neither a character stream nor a byte stream is available, * the parser will attempt to open a URI connection to the resource identified * by the system identifier.

    * *

    A DOMLSInput object belongs to the application: the parser shall * never modify it in any way (it may modify a copy if necessary).

    * * @see DOMLSParser#parse * @see DOMLSResourceResolver#resolveResource * @since DOM Level 3 */ class CDOM_EXPORT DOMLSInput { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMLSInput() {}; //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented constructors and operators */ //@{ DOMLSInput(const DOMLSInput &); DOMLSInput & operator = (const DOMLSInput &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMLSInput() {}; //@} // ----------------------------------------------------------------------- // Virtual DOMLSInput interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 3 */ //@{ // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- /** * String data to parse. If provided, this will always be treated as a sequence of 16-bit units (UTF-16 encoded characters). * It is not a requirement to have an XML declaration when using stringData. If an XML declaration is present, the value of * the encoding attribute will be ignored. * */ virtual const XMLCh* getStringData() const = 0; /** * Returns the byte stream for this input source. * * @see InputSource */ virtual InputSource* getByteStream() const = 0; /** * An input source can be set to force the parser to assume a particular * encoding for the data that input source reprsents, via the setEncoding() * method. This method returns name of the encoding that is to be forced. * If the encoding has never been forced, it returns a null pointer. * * @return The forced encoding, or null if none was supplied. * @see #setEncoding * @since DOM Level 3 */ virtual const XMLCh* getEncoding() const = 0; /** * Get the public identifier for this input source. * * @return The public identifier, or null if none was supplied. * @see #setPublicId * @since DOM Level 3 */ virtual const XMLCh* getPublicId() const = 0; /** * Get the system identifier for this input source. * *

    If the system ID is a URL, it will be fully resolved.

    * * @return The system identifier. * @see #setSystemId * @since DOM Level 3 */ virtual const XMLCh* getSystemId() const = 0; /** * Get the base URI to be used for resolving relative URIs to absolute * URIs. If the baseURI is itself a relative URI, the behavior is * implementation dependent. * * @return The base URI. * @see #setBaseURI * @since DOM Level 3 */ virtual const XMLCh* getBaseURI() const = 0; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- // ----------------------------------------------------------------------- /** * Sets the UTF-16 string for this input source. * */ virtual void setStringData(const XMLCh* data) = 0; /** * Sets the byte stream for this input source. * * @see BinInputStream */ virtual void setByteStream(InputSource* stream) = 0; /** * Set the encoding which will be required for use with the XML text read * via a stream opened by this input source. * *

    This is usually not set, allowing the encoding to be sensed in the * usual XML way. However, in some cases, the encoding in the file is known * to be incorrect because of intermediate transcoding, for instance * encapsulation within a MIME document. * * @param encodingStr The name of the encoding to force. * @since DOM Level 3 */ virtual void setEncoding(const XMLCh* const encodingStr) = 0; /** * Set the public identifier for this input source. * *

    The public identifier is always optional: if the application writer * includes one, it will be provided as part of the location information.

    * * @param publicId The public identifier as a string. * @see #getPublicId * @since DOM Level 3 */ virtual void setPublicId(const XMLCh* const publicId) = 0; /** * Set the system identifier for this input source. * *

    The system id is always required. The public id may be used to map * to another system id, but the system id must always be present as a fall * back.

    * *

    If the system ID is a URL, it must be fully resolved.

    * * @param systemId The system identifier as a string. * @see #getSystemId * @since DOM Level 3 */ virtual void setSystemId(const XMLCh* const systemId) = 0; /** * Set the base URI to be used for resolving relative URIs to absolute * URIs. If the baseURI is itself a relative URI, the behavior is * implementation dependent. * * @param baseURI The base URI. * @see #getBaseURI * @since DOM Level 3 */ virtual void setBaseURI(const XMLCh* const baseURI) = 0; //@} // ----------------------------------------------------------------------- // Non-standard Extension // ----------------------------------------------------------------------- /** @name Non-standard Extension */ //@{ /** * Indicates if the parser should issue fatal error if this input source * is not found. If set to false, the parser issue warning message instead. * * @param flag True if the parser should issue fatal error if this input source is not found. * If set to false, the parser issue warning message instead. (Default: true) * * @see #getIssueFatalErrorIfNotFound */ virtual void setIssueFatalErrorIfNotFound(bool flag) = 0; /** * Get the flag that indicates if the parser should issue fatal error if this input source * is not found. * * @return True if the parser should issue fatal error if this input source is not found. * False if the parser issue warning message instead. * @see #setIssueFatalErrorIfNotFound */ virtual bool getIssueFatalErrorIfNotFound() const = 0; /** * Called to indicate that this DOMLSInput is no longer in use * and that the implementation may relinquish any resources associated with it. * * Access to a released object will lead to unexpected result. */ virtual void release() = 0; //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMNamedNodeMap.hpp0000644000175000017500000002357411030714661020620 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMNamedNodeMap.hpp 671894 2008-06-26 13:29:21Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMNAMEDNODEMAP_HPP) #define XERCESC_INCLUDE_GUARD_DOMNAMEDNODEMAP_HPP #include XERCES_CPP_NAMESPACE_BEGIN class DOMNode; /** * DOMNamedNodeMaps are used to * represent collections of nodes that can be accessed by name. * * Note that DOMNamedNodeMap does not inherit from DOMNodeList; * DOMNamedNodeMaps are not maintained in any particular order. * Nodes contained in a DOMNamedNodeMap may * also be accessed by an ordinal index, but this is simply to allow * convenient enumeration of the contents, and * does not imply that the DOM specifies an order to these Nodes. * * @since DOM Level 1 */ class CDOM_EXPORT DOMNamedNodeMap { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMNamedNodeMap() {}; //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented constructors and operators */ //@{ DOMNamedNodeMap(const DOMNamedNodeMap &); DOMNamedNodeMap & operator = (const DOMNamedNodeMap &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMNamedNodeMap() {}; //@} // ----------------------------------------------------------------------- // Virtual DOMNamedNodeMap interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 1 */ //@{ // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- /** * Adds a node using its nodeName attribute. * *
    As the nodeName attribute is used to derive the name * which the node must be stored under, multiple nodes of certain types * (those that have a "special" string value) cannot be stored as the names * would clash. This is seen as preferable to allowing nodes to be aliased. * @param arg A node to store in a named node map. The node will later be * accessible using the value of the nodeName attribute of * the node. If a node with that name is already present in the map, it * is replaced by the new one. * @return If the new DOMNode replaces an existing node the * replaced DOMNode is returned, * otherwise null is returned. * @exception DOMException * WRONG_DOCUMENT_ERR: Raised if arg was created from a * different document than the one that created the * DOMNamedNodeMap. *
    NO_MODIFICATION_ALLOWED_ERR: Raised if this * DOMNamedNodeMap is readonly. *
    INUSE_ATTRIBUTE_ERR: Raised if arg is an * DOMAttr that is already an attribute of another * DOMElement object. The DOM user must explicitly clone * DOMAttr nodes to re-use them in other elements. * @since DOM Level 1 */ virtual DOMNode *setNamedItem(DOMNode *arg) = 0; // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- /** * Returns the indexth item in the map. * * If index * is greater than or equal to the number of nodes in the map, this returns * null. * @param index Index into the map. * @return The node at the indexth position in the * DOMNamedNodeMap, or null if that is not a valid * index. * @since DOM Level 1 */ virtual DOMNode *item(XMLSize_t index) const = 0; /** * Retrieves a node specified by name. * * @param name The nodeName of a node to retrieve. * @return A DOMNode (of any type) with the specified nodeName, or * null if it does not identify any node in * the map. * @since DOM Level 1 */ virtual DOMNode *getNamedItem(const XMLCh *name) const = 0; /** * The number of nodes in the map. * * The range of valid child node indices is * 0 to length-1 inclusive. * @since DOM Level 1 */ virtual XMLSize_t getLength() const = 0; // ----------------------------------------------------------------------- // Node methods // ----------------------------------------------------------------------- /** * Removes a node specified by name. * * If the removed node is an * DOMAttr with a default value it is immediately replaced. * @param name The nodeName of a node to remove. * @return The node removed from the map if a node with such a name exists. * @exception DOMException * NOT_FOUND_ERR: Raised if there is no node named name in * the map. *
    * NO_MODIFICATION_ALLOWED_ERR: Raised if this DOMNamedNodeMap * is readonly. * @since DOM Level 1 */ virtual DOMNode *removeNamedItem(const XMLCh *name) = 0; //@} /** @name Functions introduced in DOM Level 2 */ //@{ /** * Retrieves a node specified by local name and namespace URI. * * @param namespaceURI The namespace URI of * the node to retrieve. * @param localName The local name of the node to retrieve. * @return A DOMNode (of any type) with the specified * local name and namespace URI, or null if they do not * identify any node in the map. * @since DOM Level 2 */ virtual DOMNode *getNamedItemNS(const XMLCh *namespaceURI, const XMLCh *localName) const = 0; /** * Adds a node using its namespaceURI and localName. * * @param arg A node to store in a named node map. The node will later be * accessible using the value of the namespaceURI and * localName attribute of the node. If a node with those * namespace URI and local name is already present in the map, it is * replaced by the new one. * @return If the new DOMNode replaces an existing node the * replaced DOMNode is returned, * otherwise null is returned. * @exception DOMException * WRONG_DOCUMENT_ERR: Raised if arg was created from a * different document than the one that created the * DOMNamedNodeMap. *
    NO_MODIFICATION_ALLOWED_ERR: Raised if this * DOMNamedNodeMap is readonly. *
    INUSE_ATTRIBUTE_ERR: Raised if arg is an * DOMAttr that is already an attribute of another * DOMElement object. The DOM user must explicitly clone * DOMAttr nodes to re-use them in other elements. * @since DOM Level 2 */ virtual DOMNode *setNamedItemNS(DOMNode *arg) = 0; /** * Removes a node specified by local name and namespace URI. * * @param namespaceURI The namespace URI of * the node to remove. * @param localName The local name of the * node to remove. When this DOMNamedNodeMap contains the * attributes attached to an element, as returned by the attributes * attribute of the DOMNode interface, if the removed * attribute is known to have a default value, an attribute * immediately appears containing the default value * as well as the corresponding namespace URI, local name, and prefix. * @return The node removed from the map if a node with such a local name * and namespace URI exists. * @exception DOMException * NOT_FOUND_ERR: Raised if there is no node named name in * the map. *
    * NO_MODIFICATION_ALLOWED_ERR: Raised if this DOMNamedNodeMap * is readonly. * @since DOM Level 2 */ virtual DOMNode *removeNamedItemNS(const XMLCh *namespaceURI, const XMLCh *localName) = 0; //@} }; #define GetDOMNamedNodeMapMemoryManager GET_INDIRECT_MM(fOwnerNode) XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/StDOMNode.hpp0000644000175000017500000000621510665047422017524 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: StDOMNode.hpp 570480 2007-08-28 16:36:34Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_STDOMNODE_HPP) #define XERCESC_INCLUDE_GUARD_STDOMNODE_HPP #include #include #include XERCES_CPP_NAMESPACE_BEGIN /* This class is a smart pointer implementation over DOMNode interface and ** classes derived from it. It takes care of reference counting automatically. ** Reference counting is optional so use of this class is experimental. */ template class StDOMNode { T* m_node; static inline void INCREFCOUNT(T *x) { if (x != (T*)0) x->incRefCount(); } static inline void DECREFCOUNT(T *x) { if (x != (T*)0) x->decRefCount(); } public: inline StDOMNode(T* node = (T*)0) : m_node(node) { INCREFCOUNT(m_node); } inline StDOMNode(const StDOMNode& stNode) : m_node(stNode.m_node) { INCREFCOUNT(m_node); } inline ~StDOMNode() { DECREFCOUNT(m_node); } inline T* operator= (T *node) { if (m_node != node) { DECREFCOUNT(m_node); m_node = node; INCREFCOUNT(m_node); } return (m_node); } inline bool operator!= (T* node) const { return (m_node != node); } inline bool operator== (T* node) const { return (m_node == node); } inline T& operator* () { return (*m_node); } inline const T& operator* () const { return (*m_node); } inline T* operator-> () const { return (m_node); } inline operator T*() const { return (m_node); } inline void ClearNode() { operator=((T*)(0)); } }; #if defined(XML_DOMREFCOUNT_EXPERIMENTAL) typedef StDOMNode DOMNodeSPtr; #else typedef DOMNode* DOMNodeSPtr; #endif /* StDOMNode is a smart pointer implementation over DOMNode interface and ** classes derived from it. It takes care of reference counting automatically. ** Reference counting is optional so use of this class is experimental. */ #if defined(XML_DOMREFCOUNT_EXPERIMENTAL) typedef StDOMNode DOMAttrSPtr; #else typedef DOMAttr* DOMAttrSPtr; #endif /* StDOMNode is a smart pointer implementation over DOMNode interface and ** classes derived from it. It takes care of reference counting automatically. ** Reference counting is optional so use of this class is experimental. */ #if defined(XML_DOMREFCOUNT_EXPERIMENTAL) typedef StDOMNode DOMElementSPtr; #else typedef DOMElement* DOMElementSPtr; #endif XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMUserDataHandler.hpp0000644000175000017500000001136310606722647021342 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMUserDataHandler.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMUSERDATAHANDLER_HPP) #define XERCESC_INCLUDE_GUARD_DOMUSERDATAHANDLER_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN /** * When associating an object to a key on a node using setUserData * the application can provide a handler that gets called when the node the * object is associated to is being cloned or imported. This can be used by * the application to implement various behaviors regarding the data it * associates to the DOM nodes. This interface defines that handler. * *

    See also the Document Object Model (DOM) Level 3 Core Specification. * @since DOM Level 3 */ class CDOM_EXPORT DOMUserDataHandler { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMUserDataHandler() {}; //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented constructors and operators */ //@{ DOMUserDataHandler(const DOMUserDataHandler &); DOMUserDataHandler & operator = (const DOMUserDataHandler &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMUserDataHandler() {}; //@} // ----------------------------------------------------------------------- // Class Types // ----------------------------------------------------------------------- /** @name Public Constants */ //@{ /** * Operation Type * *

    NODE_CLONED: * The node is cloned.

    * *

    NODE_IMPORTED * The node is imported.

    * *

    NODE_DELETED * The node is deleted.

    * *

    NODE_RENAMED * The node is renamed. * *

    NODE_ADOPTED * The node is adopted. * * @since DOM Level 3 */ enum DOMOperationType { NODE_CLONED = 1, NODE_IMPORTED = 2, NODE_DELETED = 3, NODE_RENAMED = 4, NODE_ADOPTED = 5 }; //@} // ----------------------------------------------------------------------- // Virtual DOMUserDataHandler interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 3 */ //@{ /** * This method is called whenever the node for which this handler is * registered is imported or cloned. * * @param operation Specifies the type of operation that is being * performed on the node. * @param key Specifies the key for which this handler is being called. * @param data Specifies the data for which this handler is being called. * @param src Specifies the node being cloned, adopted, imported, or renamed. * This is null when the node is being deleted. * @param dst Specifies the node newly created if any, or null. * * @since DOM Level 3 */ virtual void handle(DOMOperationType operation, const XMLCh* const key, void* data, const DOMNode* src, DOMNode* dst) = 0; //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMXPathException.cpp0000644000175000017500000000306711030714661021221 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "DOMXPathException.hpp" #include #include #include #include "impl/DOMImplementationImpl.hpp" XERCES_CPP_NAMESPACE_BEGIN DOMXPathException::DOMXPathException() : DOMException() { } DOMXPathException::DOMXPathException(short exCode, short messageCode, MemoryManager* const memoryManager) : DOMException(exCode, messageCode?messageCode:XMLDOMMsg::DOMXPATHEXCEPTION_ERRX+exCode-DOMXPathException::INVALID_EXPRESSION_ERR+1, memoryManager) { } DOMXPathException::DOMXPathException(const DOMXPathException &other) : DOMException(other) { } DOMXPathException::~DOMXPathException() { } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/DOMLSParserFilter.hpp0000644000175000017500000001552711030714661021170 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMLSParserFilter.hpp 671894 2008-06-26 13:29:21Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMLSPARSERFILTER_HPP) #define XERCESC_INCLUDE_GUARD_DOMLSPARSERFILTER_HPP /** * * DOMLSParserFilter.hpp: interface for the DOMLSParserFilter class. * * DOMLSParserFilter provide applications the ability to examine nodes * as they are being created during the parse process. * * DOMLSParserFilter lets the application decide what nodes should be * in the output DOM tree or not. * * @since DOM Level 3 */ #include XERCES_CPP_NAMESPACE_BEGIN class DOMElement; class DOMNode; class CDOM_EXPORT DOMLSParserFilter { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMLSParserFilter() {}; //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented constructors and operators */ //@{ DOMLSParserFilter(const DOMLSParserFilter &); DOMLSParserFilter & operator = (const DOMLSParserFilter &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMLSParserFilter() {}; //@} // ----------------------------------------------------------------------- // Class Types // ----------------------------------------------------------------------- /** @name Public Contants */ //@{ /** * Constants returned by acceptNode. * *

    FILTER_ACCEPT: * Accept the node.

    * *

    FILTER_REJECT: * Reject the node and its children.

    * *

    FILTER_SKIP: * Skip this single node. The children of this node will still be considered.

    * *

    FILTER_INTERRUPT: * Interrupt the normal processing of the document.

    * * @since DOM Level 3 */ enum FilterAction {FILTER_ACCEPT = 1, FILTER_REJECT = 2, FILTER_SKIP = 3, FILTER_INTERRUPT = 4}; // ----------------------------------------------------------------------- // Virtual DOMLSParserFilter interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 3 */ //@{ /** * This method will be called by the parser at the completion of the parsing of each node. * The node and all of its descendants will exist and be complete. The parent node will also exist, * although it may be incomplete, i.e. it may have additional children that have not yet been parsed. * Attribute nodes are never passed to this function. * From within this method, the new node may be freely modified - children may be added or removed, * text nodes modified, etc. The state of the rest of the document outside this node is not defined, * and the affect of any attempt to navigate to, or to modify any other part of the document is undefined. * For validating parsers, the checks are made on the original document, before any modification by the * filter. No validity checks are made on any document modifications made by the filter. * If this new node is rejected, the parser might reuse the new node and any of its descendants. * * @param node The newly constructed element. At the time this method is called, the element is complete - * it has all of its children (and their children, recursively) and attributes, and is attached * as a child to its parent. * @return One of the FilterAction enum */ virtual FilterAction acceptNode(DOMNode* node) = 0; /** * The parser will call this method after each DOMElement start tag has been scanned, * but before the remainder of the DOMElement is processed. The intent is to allow the element, * including any children, to be efficiently skipped. Note that only element nodes are passed to the * startElement function. * The element node passed to startElement for filtering will include all of the attributes, but none * of the children nodes. The DOMElement may not yet be in place in the document being * constructed (it may not have a parent node.) * A startElement filter function may access or change the attributes for the DOMElement. * Changing namespace declarations will have no effect on namespace resolution by the parser. * * @param node The newly encountered element. At the time this method is called, the element is incomplete - * it will have its attributes, but no children. * @return One of the FilterAction enum */ virtual FilterAction startElement(DOMElement* node) = 0; /** * Tells the DOMLSParser what types of nodes to show to the method DOMLSParserFilter::acceptNode. * If a node is not shown to the filter using this attribute, it is automatically included in the DOM document being built. * See DOMNodeFilter for definition of the constants. The constants SHOW_ATTRIBUTE, SHOW_DOCUMENT, * SHOW_DOCUMENT_TYPE, SHOW_NOTATION, SHOW_ENTITY, and SHOW_DOCUMENT_FRAGMENT are meaningless here. * Those nodes will never be passed to DOMLSParserFilter::acceptNode. * * @return The constants of what types of nodes to show. * @since DOM Level 3 */ virtual DOMNodeFilter::ShowType getWhatToShow() const = 0; //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMTypeInfo.hpp0000644000175000017500000002232211030714661020053 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESC_INCLUDE_GUARD_DOMTYPEINFO_HPP) #define XERCESC_INCLUDE_GUARD_DOMTYPEINFO_HPP //------------------------------------------------------------------------------------ // Includes //------------------------------------------------------------------------------------ #include XERCES_CPP_NAMESPACE_BEGIN /** * The DOMTypeInfo interface represent a type used by * DOMElement or DOMAttr nodes, specified in the * schemas associated with the document. The type is a pair of a namespace URI * and name properties, and depends on the document's schema. */ class CDOM_EXPORT DOMTypeInfo { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMTypeInfo() {}; //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented constructors and operators */ //@{ DOMTypeInfo(const DOMTypeInfo &); DOMTypeInfo & operator = (const DOMTypeInfo &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMTypeInfo() {}; //@} // ----------------------------------------------------------------------- // Class Types // ----------------------------------------------------------------------- /** @name Public Contants */ //@{ /** * These are the available values for the derivationMethod parameter used by the * method DOMTypeInfo::isDerivedFrom(). It is a set of possible types * of derivation, and the values represent bit positions. If a bit in the derivationMethod * parameter is set to 1, the corresponding type of derivation will be taken into account * when evaluating the derivation between the reference type definition and the other type * definition. When using the isDerivedFrom method, combining all of them in the * derivationMethod parameter is equivalent to invoking the method for each of them separately * and combining the results with the OR boolean function. This specification only defines * the type of derivation for XML Schema. * * In addition to the types of derivation listed below, please note that: * - any type derives from xsd:anyType. * - any simple type derives from xsd:anySimpleType by restriction. * - any complex type does not derive from xsd:anySimpleType by restriction. * *

    DERIVATION_EXTENSION: * If the document's schema is an XML Schema [XML Schema Part 1], this constant represents the * derivation by extension. The reference type definition is derived by extension from the other * type definition if the other type definition can be reached recursively following the * {base type definition} property from the reference type definition, and at least one of the * derivation methods involved is an extension.

    * *

    DERIVATION_LIST: * If the document's schema is an XML Schema [XML Schema Part 1], this constant represents the list. * The reference type definition is derived by list from the other type definition if there exists * two type definitions T1 and T2 such as the reference type definition is derived from T1 by * DERIVATION_RESTRICTION or DERIVATION_EXTENSION, T2 is derived from the other type definition by * DERIVATION_RESTRICTION, T1 has {variety} list, and T2 is the {item type definition}. Note that * T1 could be the same as the reference type definition, and T2 could be the same as the other * type definition.

    * *

    DERIVATION_RESTRICTION: * If the document's schema is an XML Schema [XML Schema Part 1], this constant represents the * derivation by restriction if complex types are involved, or a restriction if simple types are * involved. * The reference type definition is derived by restriction from the other type definition if the * other type definition is the same as the reference type definition, or if the other type definition * can be reached recursively following the {base type definition} property from the reference type * definition, and all the derivation methods involved are restriction.

    * *

    DERIVATION_UNION: * If the document's schema is an XML Schema [XML Schema Part 1], this constant represents the union * if simple types are involved. * The reference type definition is derived by union from the other type definition if there exists * two type definitions T1 and T2 such as the reference type definition is derived from T1 by * DERIVATION_RESTRICTION or DERIVATION_EXTENSION, T2 is derived from the other type definition by * DERIVATION_RESTRICTION, T1 has {variety} union, and one of the {member type definitions} is T2. * Note that T1 could be the same as the reference type definition, and T2 could be the same as the * other type definition.

    * * @since DOM Level 3 * */ enum DerivationMethods { DERIVATION_RESTRICTION = 0x001, DERIVATION_EXTENSION = 0x002, DERIVATION_UNION = 0x004, DERIVATION_LIST = 0x008 }; //@} //@{ // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- /** * Returns The name of a type declared for the associated DOMElement * or DOMAttr, or null if unknown. * * @return The name of a type declared for the associated DOMElement * or DOMAttribute, or null if unknown. * @since DOM level 3 */ virtual const XMLCh* getTypeName() const = 0; /** * The namespace of the type declared for the associated DOMElement * or DOMAttr or null if the DOMElement does not have * declaration or if no namespace information is available. * * @return The namespace of the type declared for the associated DOMElement * or DOMAttr or null if the DOMElement does not have * declaration or if no namespace information is available. * @since DOM level 3 */ virtual const XMLCh* getTypeNamespace() const = 0; //@} //@{ /** * This method returns if there is a derivation between the reference type definition, * i.e. the DOMTypeInfo on which the method is being called, and the other type definition, * i.e. the one passed as parameters. * * @param typeNamespaceArg The namespace of the other type definition. * @param typeNameArg The name of the other type definition. * @param derivationMethod The type of derivation and conditions applied between two types, * as described in the list of constants provided in this interface. * @return If the document's schema is a DTD or no schema is associated with the document, * this method will always return false. * If the document's schema is an XML Schema, the method will true if the reference * type definition is derived from the other type definition according to the derivation * parameter. If the value of the parameter is 0 (no bit is set to 1 for the * derivationMethod parameter), the method will return true if the other type definition * can be reached by recursing any combination of {base type definition}, * {item type definition}, or {member type definitions} from the reference type definition. * @since DOM level 3 */ virtual bool isDerivedFrom(const XMLCh* typeNamespaceArg, const XMLCh* typeNameArg, DerivationMethods derivationMethod) const = 0; //@} }; XERCES_CPP_NAMESPACE_END #endif /** * End of file DOMTypeInfo.hpp */ xerces-c-3.1.1/src/xercesc/dom/DOMNode.hpp0000644000175000017500000011513411360344373017214 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMNode.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMNODE_HPP) #define XERCESC_INCLUDE_GUARD_DOMNODE_HPP #include XERCES_CPP_NAMESPACE_BEGIN class DOMDocument; class DOMNamedNodeMap; class DOMNodeList; class DOMUserDataHandler; /** * The DOMNode interface is the primary datatype for the entire * Document Object Model. It represents a single node in the document tree. * While all objects implementing the DOMNode interface expose * methods for dealing with children, not all objects implementing the * DOMNode interface may have children. For example, * DOMText nodes may not have children, and adding children to * such nodes results in a DOMException being raised. *

    The attributes nodeName, nodeValue and * attributes are included as a mechanism to get at node * information without casting down to the specific derived interface. In * cases where there is no obvious mapping of these attributes for a * specific nodeType (e.g., nodeValue for an * DOMElement or attributes for a DOMComment * ), this returns null. Note that the specialized interfaces * may contain additional and more convenient mechanisms to get and set the * relevant information. *

    The values of nodeName, * nodeValue, and attributes vary according to the * node type as follows: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
    InterfacenodeNamenodeValueattributes
    DOMAttrname of attributevalue of attributenull
    DOMCDATASection"\#cdata-section"content of the CDATA Sectionnull
    DOMComment"\#comment"content of the commentnull
    DOMDocument"\#document"nullnull
    DOMDocumentFragment"\#document-fragment"nullnull
    DOMDocumentTypedocument type namenullnull
    DOMElementtag namenullNamedNodeMap
    DOMEntityentity namenullnull
    DOMEntityReferencename of entity referencednullnull
    DOMNotationnotation namenullnull
    DOMProcessingInstructiontargetentire content excluding the targetnull
    DOMText"\#text"content of the text nodenull
    *

    See also the Document Object Model (DOM) Level 2 Core Specification. * * @since DOM Level 1 */ class CDOM_EXPORT DOMNode { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMNode() {} DOMNode(const DOMNode &) {} //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented operators */ //@{ DOMNode & operator = (const DOMNode &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMNode() {}; //@} // ----------------------------------------------------------------------- // Class Types // ----------------------------------------------------------------------- /** @name Public Constants */ //@{ /** * NodeType * * @since DOM Level 1 */ enum NodeType { ELEMENT_NODE = 1, ATTRIBUTE_NODE = 2, TEXT_NODE = 3, CDATA_SECTION_NODE = 4, ENTITY_REFERENCE_NODE = 5, ENTITY_NODE = 6, PROCESSING_INSTRUCTION_NODE = 7, COMMENT_NODE = 8, DOCUMENT_NODE = 9, DOCUMENT_TYPE_NODE = 10, DOCUMENT_FRAGMENT_NODE = 11, NOTATION_NODE = 12 }; /** * DocumentPosition: * *

    DOCUMENT_POSITION_CONTAINED_BY: * The node is contained by the reference node. A node which is contained is always following, too.

    *

    DOCUMENT_POSITION_CONTAINS: * The node contains the reference node. A node which contains is always preceding, too.

    *

    DOCUMENT_POSITION_DISCONNECTED: * The two nodes are disconnected. Order between disconnected nodes is always implementation-specific.

    *

    DOCUMENT_POSITION_FOLLOWING: * The node follows the reference node.

    *

    DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: * The determination of preceding versus following is implementation-specific.

    *

    DOCUMENT_POSITION_PRECEDING: * The second node precedes the reference node.

    * * @since DOM Level 3 */ enum DocumentPosition { DOCUMENT_POSITION_DISCONNECTED = 0x01, DOCUMENT_POSITION_PRECEDING = 0x02, DOCUMENT_POSITION_FOLLOWING = 0x04, DOCUMENT_POSITION_CONTAINS = 0x08, DOCUMENT_POSITION_CONTAINED_BY = 0x10, DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20 }; //@} // ----------------------------------------------------------------------- // Virtual DOMNode interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 1 */ //@{ // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- /** * The name of this node, depending on its type; see the table above. * @since DOM Level 1 */ virtual const XMLCh * getNodeName() const = 0; /** * Gets the value of this node, depending on its type. * * @exception DOMException * NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly. * @since DOM Level 1 */ virtual const XMLCh * getNodeValue() const = 0; /** * An enum value representing the type of the underlying object. * @since DOM Level 1 */ virtual NodeType getNodeType() const = 0; /** * Gets the parent of this node. * * All nodes, except DOMDocument, * DOMDocumentFragment, and DOMAttr may have a parent. * However, if a node has just been created and not yet added to the tree, * or if it has been removed from the tree, a null DOMNode * is returned. * @since DOM Level 1 */ virtual DOMNode *getParentNode() const = 0; /** * Gets a DOMNodeList that contains all children of this node. * * If there * are no children, this is a DOMNodeList containing no nodes. * The content of the returned DOMNodeList is "live" in the sense * that, for instance, changes to the children of the node object that * it was created from are immediately reflected in the nodes returned by * the DOMNodeList accessors; it is not a static snapshot of the * content of the node. This is true for every DOMNodeList, * including the ones returned by the getElementsByTagName * method. * @since DOM Level 1 */ virtual DOMNodeList *getChildNodes() const = 0; /** * Gets the first child of this node. * * If there is no such node, this returns null. * @since DOM Level 1 */ virtual DOMNode *getFirstChild() const = 0; /** * Gets the last child of this node. * * If there is no such node, this returns null. * @since DOM Level 1 */ virtual DOMNode *getLastChild() const = 0; /** * Gets the node immediately preceding this node. * * If there is no such node, this returns null. * @since DOM Level 1 */ virtual DOMNode *getPreviousSibling() const = 0; /** * Gets the node immediately following this node. * * If there is no such node, this returns null. * @since DOM Level 1 */ virtual DOMNode *getNextSibling() const = 0; /** * Gets a DOMNamedNodeMap containing the attributes of this node (if it * is an DOMElement) or null otherwise. * @since DOM Level 1 */ virtual DOMNamedNodeMap *getAttributes() const = 0; /** * Gets the DOMDocument object associated with this node. * * This is also * the DOMDocument object used to create new nodes. When this * node is a DOMDocument or a DOMDocumentType * which is not used with any DOMDocument yet, this is * null. * * @since DOM Level 1 */ virtual DOMDocument *getOwnerDocument() const = 0; // ----------------------------------------------------------------------- // Node methods // ----------------------------------------------------------------------- /** * Returns a duplicate of this node. * * This function serves as a generic copy constructor for nodes. * * The duplicate node has no parent ( * parentNode returns null.). *
    Cloning an DOMElement copies all attributes and their * values, including those generated by the XML processor to represent * defaulted attributes, but this method does not copy any text it contains * unless it is a deep clone, since the text is contained in a child * DOMText node. Cloning any other type of node simply returns a * copy of this node. * @param deep If true, recursively clone the subtree under the * specified node; if false, clone only the node itself (and * its attributes, if it is an DOMElement). * @return The duplicate node. * @since DOM Level 1 */ virtual DOMNode * cloneNode(bool deep) const = 0; /** * Inserts the node newChild before the existing child node * refChild. * * If refChild is null, * insert newChild at the end of the list of children. *
    If newChild is a DOMDocumentFragment object, * all of its children are inserted, in the same order, before * refChild. If the newChild is already in the * tree, it is first removed. Note that a DOMNode that * has never been assigned to refer to an actual node is == null. * @param newChild The node to insert. * @param refChild The reference node, i.e., the node before which the new * node must be inserted. * @return The node being inserted. * @exception DOMException * HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not * allow children of the type of the newChild node, or if * the node to insert is one of this node's ancestors. *
    WRONG_DOCUMENT_ERR: Raised if newChild was created * from a different document than the one that created this node. *
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node or the node being * inserted is readonly. *
    NOT_FOUND_ERR: Raised if refChild is not a child of * this node. * @since DOM Level 1 */ virtual DOMNode *insertBefore(DOMNode *newChild, DOMNode *refChild) = 0; /** * Replaces the child node oldChild with newChild * in the list of children, and returns the oldChild node. * * If newChild is a DOMDocumentFragment object, * oldChild is replaced by all of the DOMDocumentFragment * children, which are inserted in the same order. * * If the newChild is already in the tree, it is first removed. * @param newChild The new node to put in the child list. * @param oldChild The node being replaced in the list. * @return The node replaced. * @exception DOMException * HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not * allow children of the type of the newChild node, or it * the node to put in is one of this node's ancestors. *
    WRONG_DOCUMENT_ERR: Raised if newChild was created * from a different document than the one that created this node. *
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node or the new node is readonly. *
    NOT_FOUND_ERR: Raised if oldChild is not a child of * this node. * @since DOM Level 1 */ virtual DOMNode *replaceChild(DOMNode *newChild, DOMNode *oldChild) = 0; /** * Removes the child node indicated by oldChild from the list * of children, and returns it. * * @param oldChild The node being removed. * @return The node removed. * @exception DOMException * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. *
    NOT_FOUND_ERR: Raised if oldChild is not a child of * this node. * @since DOM Level 1 */ virtual DOMNode *removeChild(DOMNode *oldChild) = 0; /** * Adds the node newChild to the end of the list of children of * this node. * * If the newChild is already in the tree, it is * first removed. * @param newChild The node to add.If it is a DOMDocumentFragment * object, the entire contents of the document fragment are moved into * the child list of this node * @return The node added. * @exception DOMException * HIERARCHY_REQUEST_ERR: Raised if this node is of a type that does not * allow children of the type of the newChild node, or if * the node to append is one of this node's ancestors. *
    WRONG_DOCUMENT_ERR: Raised if newChild was created * from a different document than the one that created this node. *
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node or the node being * appended is readonly. * @since DOM Level 1 */ virtual DOMNode *appendChild(DOMNode *newChild) = 0; // ----------------------------------------------------------------------- // Query methods // ----------------------------------------------------------------------- /** * This is a convenience method to allow easy determination of whether a * node has any children. * * @return true if the node has any children, * false if the node has no children. * @since DOM Level 1 */ virtual bool hasChildNodes() const = 0; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- /** * Sets the value of the node. * * Any node which can have a nodeValue will * also accept requests to set it to a string. The exact response to * this varies from node to node -- Attribute, for example, stores * its values in its children and has to replace them with a new Text * holding the replacement value. * * For most types of Node, value is null and attempting to set it * will throw DOMException(NO_MODIFICATION_ALLOWED_ERR). This will * also be thrown if the node is read-only. * @see #getNodeValue * @since DOM Level 1 */ virtual void setNodeValue(const XMLCh *nodeValue) = 0; //@} /** @name Functions introduced in DOM Level 2. */ //@{ /** * Puts all DOMText * nodes in the full depth of the sub-tree underneath this DOMNode, * including attribute nodes, into a "normal" form where only markup (e.g., * tags, comments, processing instructions, CDATA sections, and entity * references) separates DOMText * nodes, i.e., there are neither adjacent DOMText * nodes nor empty DOMText * nodes. This can be used to ensure that the DOM view of a document is the * same as if it were saved and re-loaded, and is useful when operations * (such as XPointer lookups) that depend on a particular document tree * structure are to be used. *

    Note: In cases where the document contains DOMCDATASections, * the normalize operation alone may not be sufficient, since XPointers do * not differentiate between DOMText * nodes and DOMCDATASection * nodes.

    * * @since DOM Level 2 */ virtual void normalize() = 0; /** * Tests whether the DOM implementation implements a specific * feature and that feature is supported by this node. * * @param feature The string of the feature to test. This is the same * name as what can be passed to the method hasFeature on * DOMImplementation. * @param version This is the version number of the feature to test. In * Level 2, version 1, this is the string "2.0". If the version is not * specified, supporting any version of the feature will cause the * method to return true. * @return Returns true if the specified feature is supported * on this node, false otherwise. * @since DOM Level 2 */ virtual bool isSupported(const XMLCh *feature, const XMLCh *version) const = 0; /** * Get the namespace URI of * this node, or null if it is unspecified. *

    * This is not a computed value that is the result of a namespace lookup * based on an examination of the namespace declarations in scope. It is * merely the namespace URI given at creation time. *

    * For nodes of any type other than ELEMENT_NODE and * ATTRIBUTE_NODE and nodes created with a DOM Level 1 method, * such as createElement from the DOMDocument * interface, this is always null. * * @since DOM Level 2 */ virtual const XMLCh * getNamespaceURI() const = 0; /** * Get the namespace prefix * of this node, or null if it is unspecified. * * @since DOM Level 2 */ virtual const XMLCh * getPrefix() const = 0; /** * Returns the local part of the qualified name of this node. *

    * For nodes created with a DOM Level 1 method, such as * createElement from the DOMDocument interface, * it is null. * * @since DOM Level 2 */ virtual const XMLCh * getLocalName() const = 0; /** * Set the namespace prefix of this node. *

    * Note that setting this attribute, when permitted, changes * the nodeName attribute, which holds the qualified * name, as well as the tagName and name * attributes of the DOMElement and DOMAttr * interfaces, when applicable. *

    * Note also that changing the prefix of an * attribute, that is known to have a default value, does not make a new * attribute with the default value and the original prefix appear, since the * namespaceURI and localName do not change. * * * @param prefix The prefix of this node. * @exception DOMException * INVALID_CHARACTER_ERR: Raised if the specified prefix contains * an illegal character. *
    * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. *
    * NAMESPACE_ERR: Raised if the specified prefix is * malformed, if the namespaceURI of this node is * null, if the specified prefix is "xml" and the * namespaceURI of this node is different from * "http://www.w3.org/XML/1998/namespace", if this node is an attribute * and the specified prefix is "xmlns" and the * namespaceURI of this node is different from * "http://www.w3.org/2000/xmlns/", or if this node is an attribute and * the qualifiedName of this node is "xmlns". * @since DOM Level 2 */ virtual void setPrefix(const XMLCh * prefix) = 0; /** * Returns whether this node (if it is an element) has any attributes. * @return true if this node has any attributes, * false otherwise. * @since DOM Level 2 */ virtual bool hasAttributes() const = 0; //@} /** @name Functions introduced in DOM Level 3. */ //@{ /** * Returns whether this node is the same node as the given one. *
    This method provides a way to determine whether two * DOMNode references returned by the implementation reference * the same object. When two DOMNode references are references * to the same object, even if through a proxy, the references may be * used completely interchangeably, such that all attributes have the * same values and calling the same DOM method on either reference * always has exactly the same effect. * * @param other The node to test against. * @return Returns true if the nodes are the same, * false otherwise. * @since DOM Level 3 */ virtual bool isSameNode(const DOMNode* other) const = 0; /** * Tests whether two nodes are equal. *
    This method tests for equality of nodes, not sameness (i.e., * whether the two nodes are pointers to the same object) which can be * tested with DOMNode::isSameNode. All nodes that are the same * will also be equal, though the reverse may not be true. *
    Two nodes are equal if and only if the following conditions are * satisfied: The two nodes are of the same type.The following string * attributes are equal: nodeName, localName, * namespaceURI, prefix, nodeValue * , baseURI. This is: they are both null, or * they have the same length and are character for character identical. * The attributes DOMNamedNodeMaps are equal. * This is: they are both null, or they have the same * length and for each node that exists in one map there is a node that * exists in the other map and is equal, although not necessarily at the * same index.The childNodes DOMNodeLists are * equal. This is: they are both null, or they have the * same length and contain equal nodes at the same index. This is true * for DOMAttr nodes as for any other type of node. Note that * normalization can affect equality; to avoid this, nodes should be * normalized before being compared. *
    For two DOMDocumentType nodes to be equal, the following * conditions must also be satisfied: The following string attributes * are equal: publicId, systemId, * internalSubset.The entities * DOMNamedNodeMaps are equal.The notations * DOMNamedNodeMaps are equal. *
    On the other hand, the following do not affect equality: the * ownerDocument attribute, the specified * attribute for DOMAttr nodes, the * isWhitespaceInElementContent attribute for * DOMText nodes, as well as any user data or event listeners * registered on the nodes. * * @param arg The node to compare equality with. * @return If the nodes, and possibly subtrees are equal, * true otherwise false. * @since DOM Level 3 */ virtual bool isEqualNode(const DOMNode* arg) const = 0; /** * Associate an object to a key on this node. The object can later be * retrieved from this node by calling getUserData with the * same key. * * Deletion of the user data remains the responsibility of the * application program; it will not be automatically deleted when * the nodes themselves are reclaimed. * * Both the parameter data and the returned object are * void pointer, it is applications' responsibility to keep track of * their original type. Casting them to the wrong type may result * unexpected behavior. * * @param key The key to associate the object to. * @param data The object to associate to the given key, or * null to remove any existing association to that key. * @param handler The handler to associate to that key, or * null. * @return Returns the void* object previously associated to * the given key on this node, or null if there was none. * @see #getUserData * * @since DOM Level 3 */ virtual void* setUserData(const XMLCh* key, void* data, DOMUserDataHandler* handler) = 0; /** * Retrieves the object associated to a key on a this node. The object * must first have been set to this node by calling * setUserData with the same key. * * @param key The key the object is associated to. * @return Returns the void* associated to the given key * on this node, or null if there was none. * @see #setUserData * @since DOM Level 3 */ virtual void* getUserData(const XMLCh* key) const = 0; /** * The absolute base URI of this node or null if undefined. * This value is computed according to . However, when the * DOMDocument supports the feature "HTML" , the base URI is * computed using first the value of the href attribute of the HTML BASE * element if any, and the value of the documentURI * attribute from the DOMDocument interface otherwise. * *
    When the node is an DOMElement, a DOMDocument * or a a DOMProcessingInstruction, this attribute represents * the properties [base URI] defined in . When the node is a * DOMNotation, an DOMEntity, or an * DOMEntityReference, this attribute represents the * properties [declaration base URI]. * @since DOM Level 3 */ virtual const XMLCh* getBaseURI() const = 0; /** * Compares the reference node, i.e. the node on which this method is being called, * with a node, i.e. the one passed as a parameter, with regard to their position * in the document and according to the document order. * * @param other The node to compare against this node. * @return Returns how the given node is positioned relatively to this * node. * @since DOM Level 3 */ virtual short compareDocumentPosition(const DOMNode* other) const = 0; /** * This attribute returns the text content of this node and its * descendants. No serialization is performed, the returned string * does not contain any markup. No whitespace normalization is * performed and the returned string does not contain the white * spaces in element content. * *
    The string returned is made of the text content of this node * depending on its type, as defined below: * * * * * * * * * * * * * * * * * *
    Node typeContent
    * ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, * DOCUMENT_FRAGMENT_NODEconcatenation of the textContent * attribute value of every child node, excluding COMMENT_NODE and * PROCESSING_INSTRUCTION_NODE nodes
    ATTRIBUTE_NODE, TEXT_NODE, * CDATA_SECTION_NODE, COMMENT_NODE, PROCESSING_INSTRUCTION_NODE * nodeValue
    DOCUMENT_NODE, DOCUMENT_TYPE_NODE, NOTATION_NODE * null
    * @exception DOMException * DOMSTRING_SIZE_ERR: Raised when it would return more characters than * fit in a DOMString variable on the implementation * platform. * @see #setTextContent * @since DOM Level 3 */ virtual const XMLCh* getTextContent() const = 0; /** * This attribute removes any possible children this node may have and, if the * new string is not empty or null, replaced by a single DOMText * node containing the string this attribute is set to. No parsing is * performed, the input string is taken as pure textual content. * * @exception DOMException * NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly. * @see #getTextContent * @since DOM Level 3 */ virtual void setTextContent(const XMLCh* textContent) = 0; /** * Look up the prefix associated to the given namespace URI, starting from this node. * The default namespace declarations are ignored by this method. * * @param namespaceURI The namespace URI to look for. * @return Returns an associated namespace prefix if found, * null if none is found. If more * than one prefix are associated to the namespace prefix, the * returned namespace prefix is implementation dependent. * @since DOM Level 3 */ virtual const XMLCh* lookupPrefix(const XMLCh* namespaceURI) const = 0; /** * This method checks if the specified namespaceURI is the * default namespace or not. * * @param namespaceURI The namespace URI to look for. * @return true if the specified namespaceURI * is the default namespace, false otherwise. * @since DOM Level 3 */ virtual bool isDefaultNamespace(const XMLCh* namespaceURI) const = 0; /** * Look up the namespace URI associated to the given prefix, starting from * this node. * * @param prefix The prefix to look for. If this parameter is * null, the method will return the default namespace URI * if any. * @return Returns the associated namespace URI or null if * none is found. * @since DOM Level 3 */ virtual const XMLCh* lookupNamespaceURI(const XMLCh* prefix) const = 0; /** * This method makes available a DOMNode's specialized interface * * @param feature The name of the feature requested (case-insensitive). * @param version The version of the feature requested. * @return Returns an alternate DOMNode which implements the * specialized APIs of the specified feature, if any, or * null if there is no alternate DOMNode which * implements interfaces associated with that feature. Any alternate * DOMNode returned by this method must delegate to the * primary core DOMNode and not return results inconsistent * with the primary core DOMNode such as key, * attributes, childNodes, etc. * @since DOM Level 3 */ virtual void* getFeature(const XMLCh* feature, const XMLCh* version) const = 0; //@} // ----------------------------------------------------------------------- // Non-standard Extension // ----------------------------------------------------------------------- /** @name Non-standard Extension */ //@{ /** * Called to indicate that this Node (and its associated children) is no longer in use * and that the implementation may relinquish any resources associated with it and * its associated children. * * If this is a document, any nodes it owns (created by DOMDocument::createXXXX()) * are also released. * * Access to a released object will lead to unexpected result. * * @exception DOMException * INVALID_ACCESS_ERR: Raised if this Node has a parent and thus should not be released yet. */ virtual void release() = 0; //@} #if defined(XML_DOMREFCOUNT_EXPERIMENTAL) // ----------------------------------------------------------------------- // Non-standard Extension // ----------------------------------------------------------------------- /** @name Non-standard Extension */ //@{ /** * This is custom function which can be implemented by classes deriving * from DOMNode for implementing reference counting on DOMNodes. Any * implementation which has memory management model which involves * disposing of nodes immediately after being used can override this * function to do that job. */ virtual void decRefCount() {} //@} // ----------------------------------------------------------------------- // Non-standard Extension // ----------------------------------------------------------------------- /** @name Non-standard Extension */ //@{ /** * This is custom function which can be implemented by classes deriving * from DOMNode for implementing reference counting on DOMNodes. */ virtual void incRefCount() {} //@} #endif }; /*** * Utilities macros for getting memory manager within DOM ***/ #define GET_OWNER_DOCUMENT(ptr) \ ((DOMDocumentImpl*)(ptr->getOwnerDocument())) #define GET_DIRECT_MM(ptr) \ (ptr ? ((DOMDocumentImpl*)ptr)->getMemoryManager() : XMLPlatformUtils::fgMemoryManager) #define GET_INDIRECT_MM(ptr) \ (!ptr ? XMLPlatformUtils::fgMemoryManager : \ GET_OWNER_DOCUMENT(ptr) ? GET_OWNER_DOCUMENT(ptr)->getMemoryManager() : \ XMLPlatformUtils::fgMemoryManager) /*** * For DOMNode and its derivatives ***/ #define GetDOMNodeMemoryManager GET_INDIRECT_MM(this) XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMRange.hpp0000644000175000017500000005212011360344373017356 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMRange.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMRANGE_HPP) #define XERCESC_INCLUDE_GUARD_DOMRANGE_HPP #include XERCES_CPP_NAMESPACE_BEGIN class DOMNode; class DOMDocumentFragment; /** *

    See also the Document Object Model (DOM) Level 2 Traversal and Range Specification. * @since DOM Level 2 */ class CDOM_EXPORT DOMRange { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMRange() {} DOMRange(const DOMRange &) {} //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented operators */ //@{ DOMRange & operator = (const DOMRange &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMRange() {}; //@} // ----------------------------------------------------------------------- // Class Types // ----------------------------------------------------------------------- /** @name Public Constants */ //@{ /** * Constants CompareHow. * *

    START_TO_START: * Compare start boundary-point of sourceRange to start * boundary-point of Range on which compareBoundaryPoints * is invoked.

    * *

    START_TO_END: * Compare start boundary-point of sourceRange to end * boundary-point of Range on which compareBoundaryPoints * is invoked.

    * *

    END_TO_END: * Compare end boundary-point of sourceRange to end * boundary-point of Range on which compareBoundaryPoints * is invoked.

    * *

    END_TO_START: * Compare end boundary-point of sourceRange to start * boundary-point of Range on which compareBoundaryPoints * is invoked.

    * * @since DOM Level 2 */ enum CompareHow { START_TO_START = 0, START_TO_END = 1, END_TO_END = 2, END_TO_START = 3 }; //@} // ----------------------------------------------------------------------- // Virtual DOMRange interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 2 */ //@{ // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- /** * DOMNode within which the Range begins * @exception DOMException * INVALID_STATE_ERR: Raised if detach() has already been * invoked on this object. * * @since DOM Level 2 */ virtual DOMNode* getStartContainer() const = 0; /** * Offset within the starting node of the Range. * @exception DOMException * INVALID_STATE_ERR: Raised if detach() has already been * invoked on this object. * * @since DOM Level 2 */ virtual XMLSize_t getStartOffset() const = 0; /** * DOMNode within which the Range ends * @exception DOMException * INVALID_STATE_ERR: Raised if detach() has already been * invoked on this object. * * @since DOM Level 2 */ virtual DOMNode* getEndContainer() const = 0; /** * Offset within the ending node of the Range. * @exception DOMException * INVALID_STATE_ERR: Raised if detach() has already been * invoked on this object. * * @since DOM Level 2 */ virtual XMLSize_t getEndOffset() const = 0; /** * TRUE if the Range is collapsed * @exception DOMException * INVALID_STATE_ERR: Raised if detach() has already been * invoked on this object. * * @since DOM Level 2 */ virtual bool getCollapsed() const = 0; /** * The deepest common ancestor container of the Range's two * boundary-points. * @exception DOMException * INVALID_STATE_ERR: Raised if detach() has already been * invoked on this object. * * @since DOM Level 2 */ virtual const DOMNode* getCommonAncestorContainer() const = 0; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- /** * Sets the attributes describing the start of the Range. * @param refNode The refNode value. This parameter must be * different from null. * @param offset The startOffset value. * @exception DOMRangeException * INVALID_NODE_TYPE_ERR: Raised if refNode or an ancestor * of refNode is an DOMEntity, DOMNotation, or DOMDocumentType * node. * @exception DOMException * INDEX_SIZE_ERR: Raised if offset is negative or greater * than the number of child units in refNode. Child units * are 16-bit units if refNode is a type of DOMCharacterData * node (e.g., a DOMText or DOMComment node) or a DOMProcessingInstruction * node. Child units are Nodes in all other cases. *
    INVALID_STATE_ERR: Raised if detach() has already * been invoked on this object. *
    WRONG_DOCUMENT_ERR: Raised if refNode was created * from a different document than the one that created this range. * * @since DOM Level 2 */ virtual void setStart(const DOMNode *refNode, XMLSize_t offset) = 0; /** * Sets the attributes describing the end of a Range. * @param refNode The refNode value. This parameter must be * different from null. * @param offset The endOffset value. * @exception DOMRangeException * INVALID_NODE_TYPE_ERR: Raised if refNode or an ancestor * of refNode is an DOMEntity, DOMNotation, or DOMDocumentType * node. * @exception DOMException * INDEX_SIZE_ERR: Raised if offset is negative or greater * than the number of child units in refNode. Child units * are 16-bit units if refNode is a type of DOMCharacterData * node (e.g., a DOMText or DOMComment node) or a DOMProcessingInstruction * node. Child units are Nodes in all other cases. *
    INVALID_STATE_ERR: Raised if detach() has already * been invoked on this object. *
    WRONG_DOCUMENT_ERR: Raised if refNode was created * from a different document than the one that created this range. * * @since DOM Level 2 */ virtual void setEnd(const DOMNode *refNode, XMLSize_t offset) = 0; /** * Sets the start position to be before a node * @param refNode Range starts before refNode * @exception DOMRangeException * INVALID_NODE_TYPE_ERR: Raised if the root container of * refNode is not an DOMAttr, DOMDocument, or DOMDocumentFragment * node or if refNode is a DOMDocument, DOMDocumentFragment, * DOMAttr, DOMEntity, or DOMNotation node. * @exception DOMException * INVALID_STATE_ERR: Raised if detach() has already been * invoked on this object. *
    WRONG_DOCUMENT_ERR: Raised if refNode was created * from a different document than the one that created this range. * * @since DOM Level 2 */ virtual void setStartBefore(const DOMNode *refNode) = 0; /** * Sets the start position to be after a node * @param refNode Range starts after refNode * @exception DOMRangeException * INVALID_NODE_TYPE_ERR: Raised if the root container of * refNode is not an DOMAttr, DOMDocument, or DOMDocumentFragment * node or if refNode is a DOMDocument, DOMDocumentFragment, * DOMAttr, DOMEntity, or DOMNotation node. * @exception DOMException * INVALID_STATE_ERR: Raised if detach() has already been * invoked on this object. *
    WRONG_DOCUMENT_ERR: Raised if refNode was created * from a different document than the one that created this range. * * @since DOM Level 2 */ virtual void setStartAfter(const DOMNode *refNode) = 0; /** * Sets the end position to be before a node. * @param refNode Range ends before refNode * @exception DOMRangeException * INVALID_NODE_TYPE_ERR: Raised if the root container of * refNode is not an DOMAttr, DOMDocument, or DOMDocumentFragment * node or if refNode is a DOMDocument, DOMDocumentFragment, * DOMAttr, DOMEntity, or DOMNotation node. * @exception DOMException * INVALID_STATE_ERR: Raised if detach() has already been * invoked on this object. *
    WRONG_DOCUMENT_ERR: Raised if refNode was created * from a different document than the one that created this range. * * @since DOM Level 2 */ virtual void setEndBefore(const DOMNode *refNode) = 0; /** * Sets the end of a Range to be after a node * @param refNode Range ends after refNode. * @exception DOMRangeException * INVALID_NODE_TYPE_ERR: Raised if the root container of * refNode is not a DOMAttr, DOMDocument or DOMDocumentFragment * node or if refNode is a DOMDocument, DOMDocumentFragment, * DOMAttr, DOMEntity, or DOMNotation node. * @exception DOMException * INVALID_STATE_ERR: Raised if detach() has already been * invoked on this object. *
    WRONG_DOCUMENT_ERR: Raised if refNode was created * from a different document than the one that created this range. * * @since DOM Level 2 */ virtual void setEndAfter(const DOMNode *refNode) = 0; // ----------------------------------------------------------------------- // Misc methods // ----------------------------------------------------------------------- /** * Collapse a Range onto one of its boundary-points * @param toStart If TRUE, collapses the Range onto its start; if FALSE, * collapses it onto its end. * @exception DOMException * INVALID_STATE_ERR: Raised if detach() has already been * invoked on this object. * * @since DOM Level 2 */ virtual void collapse(bool toStart) = 0; /** * Select a node and its contents * @param refNode The node to select. * @exception DOMRangeException * INVALID_NODE_TYPE_ERR: Raised if an ancestor of refNode * is an DOMEntity, DOMNotation or DOMDocumentType node or if * refNode is a DOMDocument, DOMDocumentFragment, DOMAttr, DOMEntity, * or DOMNotation node. * @exception DOMException * INVALID_STATE_ERR: Raised if detach() has already been * invoked on this object. *
    WRONG_DOCUMENT_ERR: Raised if refNode was created * from a different document than the one that created this range. * * @since DOM Level 2 */ virtual void selectNode(const DOMNode *refNode) = 0; /** * Select the contents within a node * @param refNode DOMNode to select from * @exception DOMRangeException * INVALID_NODE_TYPE_ERR: Raised if refNode or an ancestor * of refNode is an DOMEntity, DOMNotation or DOMDocumentType node. * @exception DOMException * INVALID_STATE_ERR: Raised if detach() has already been * invoked on this object. *
    WRONG_DOCUMENT_ERR: Raised if refNode was created * from a different document than the one that created this range. * * @since DOM Level 2 */ virtual void selectNodeContents(const DOMNode *refNode) = 0; /** * Compare the boundary-points of two Ranges in a document. * @param how A code representing the type of comparison, as defined * above. * @param sourceRange The Range on which this current * Range is compared to. * @return -1, 0 or 1 depending on whether the corresponding * boundary-point of the Range is respectively before, equal to, or * after the corresponding boundary-point of sourceRange. * @exception DOMException * WRONG_DOCUMENT_ERR: Raised if the two Ranges are not in the same * DOMDocument or DOMDocumentFragment. *
    INVALID_STATE_ERR: Raised if detach() has already * been invoked on this object. * * @since DOM Level 2 */ virtual short compareBoundaryPoints(CompareHow how, const DOMRange* sourceRange) const = 0; /** * Removes the contents of a Range from the containing document or * document fragment without returning a reference to the removed * content. * @exception DOMException * NO_MODIFICATION_ALLOWED_ERR: Raised if any portion of the content of * the Range is read-only or any of the nodes that contain any of the * content of the Range are read-only. *
    INVALID_STATE_ERR: Raised if detach() has already * been invoked on this object. * * @since DOM Level 2 */ virtual void deleteContents() = 0; /** * Moves the contents of a Range from the containing document or document * fragment to a new DOMDocumentFragment. * @return A DOMDocumentFragment containing the extracted contents. * @exception DOMException * NO_MODIFICATION_ALLOWED_ERR: Raised if any portion of the content of * the Range is read-only or any of the nodes which contain any of the * content of the Range are read-only. *
    HIERARCHY_REQUEST_ERR: Raised if a DOMDocumentType node would be * extracted into the new DOMDocumentFragment. *
    INVALID_STATE_ERR: Raised if detach() has already * been invoked on this object. * * @since DOM Level 2 */ virtual DOMDocumentFragment* extractContents() = 0; /** * Duplicates the contents of a Range * @return A DOMDocumentFragment that contains content equivalent to this * Range. * @exception DOMException * HIERARCHY_REQUEST_ERR: Raised if a DOMDocumentType node would be * extracted into the new DOMDocumentFragment. *
    INVALID_STATE_ERR: Raised if detach() has already * been invoked on this object. * * @since DOM Level 2 */ virtual DOMDocumentFragment* cloneContents() const = 0; /** * Inserts a node into the DOMDocument or DOMDocumentFragment at the start of * the Range. If the container is a DOMText node, this will be split at the * start of the Range (as if the DOMText node's splitText method was * performed at the insertion point) and the insertion will occur * between the two resulting DOMText nodes. Adjacent DOMText nodes will not be * automatically merged. If the node to be inserted is a * DOMDocumentFragment node, the children will be inserted rather than the * DOMDocumentFragment node itself. * @param newNode The node to insert at the start of the Range * @exception DOMException * NO_MODIFICATION_ALLOWED_ERR: Raised if an ancestor container of the * start of the Range is read-only. *
    WRONG_DOCUMENT_ERR: Raised if newNode and the * container of the start of the Range were not created from the same * document. *
    HIERARCHY_REQUEST_ERR: Raised if the container of the start of * the Range is of a type that does not allow children of the type of * newNode or if newNode is an ancestor of * the container. *
    INVALID_STATE_ERR: Raised if detach() has already * been invoked on this object. * @exception DOMRangeException * INVALID_NODE_TYPE_ERR: Raised if newNode is an DOMAttr, * DOMEntity, DOMNotation, or DOMDocument node. * * @since DOM Level 2 */ virtual void insertNode(DOMNode *newNode) = 0; /** * Reparents the contents of the Range to the given node and inserts the * node at the position of the start of the Range. * @param newParent The node to surround the contents with. * @exception DOMException * NO_MODIFICATION_ALLOWED_ERR: Raised if an ancestor container of * either boundary-point of the Range is read-only. *
    WRONG_DOCUMENT_ERR: Raised if newParent and the * container of the start of the Range were not created from the same * document. *
    HIERARCHY_REQUEST_ERR: Raised if the container of the start of * the Range is of a type that does not allow children of the type of * newParent or if newParent is an ancestor * of the container or if node would end up with a child * node of a type not allowed by the type of node. *
    INVALID_STATE_ERR: Raised if detach() has already * been invoked on this object. * @exception DOMRangeException * BAD_BOUNDARYPOINTS_ERR: Raised if the Range partially selects a * non-text node. *
    INVALID_NODE_TYPE_ERR: Raised if node is an DOMAttr, * DOMEntity, DOMDocumentType, DOMNotation, DOMDocument, or DOMDocumentFragment node. * * @since DOM Level 2 */ virtual void surroundContents(DOMNode *newParent) = 0; /** * Produces a new Range whose boundary-points are equal to the * boundary-points of the Range. * @return The duplicated Range. * @exception DOMException * INVALID_STATE_ERR: Raised if detach() has already been * invoked on this object. * * @since DOM Level 2 */ virtual DOMRange* cloneRange() const = 0; /** * Returns the contents of a Range as a string. This string contains only * the data characters, not any markup. * @return The contents of the Range. * @exception DOMException * INVALID_STATE_ERR: Raised if detach() has already been * invoked on this object. * * @since DOM Level 2 */ virtual const XMLCh* toString() const = 0; /** * Called to indicate that the Range is no longer in use and that the * implementation may relinquish any resources associated with this * Range. Subsequent calls to any methods or attribute getters on this * Range will result in a DOMException being thrown with an * error code of INVALID_STATE_ERR. * @exception DOMException * INVALID_STATE_ERR: Raised if detach() has already been * invoked on this object. * * @since DOM Level 2 */ virtual void detach() = 0; //@} // ----------------------------------------------------------------------- // Non-standard Extension // ----------------------------------------------------------------------- /** @name Non-standard Extension */ //@{ /** * Called to indicate that this Range is no longer in use * and that the implementation may relinquish any resources associated with it. * (release() will call detach() where appropriate) * * Access to a released object will lead to unexpected result. */ virtual void release() = 0; //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMLSParser.hpp0000644000175000017500000011222611274240637020023 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMLSParser.hpp 832686 2009-11-04 08:55:59Z borisk $ * */ #if !defined(XERCESC_INCLUDE_GUARD_DOMLSPARSER_HPP) #define XERCESC_INCLUDE_GUARD_DOMLSPARSER_HPP #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN class DOMErrorHandler; class DOMLSInput; class DOMNode; class DOMDocument; /** * DOMLSParser provides an API for parsing XML documents and building the * corresponding DOM document tree. A DOMLSParser instance is obtained from * the DOMImplementationLS interface by invoking its createLSParser method. * * @since DOM Level 3 * */ class CDOM_EXPORT DOMLSParser { protected : // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMLSParser() {}; //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented constructors and operators */ //@{ DOMLSParser(const DOMLSParser &); DOMLSParser & operator = (const DOMLSParser &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMLSParser() {}; //@} // ----------------------------------------------------------------------- // Class types // ----------------------------------------------------------------------- /** @name Public Constants */ //@{ /** * A set of possible actions for the parseWithContext method. * *

    ACTION_APPEND_AS_CHILDREN: * Append the result of the parse operation as children of the context node. * For this action to work, the context node must be a DOMElement * or a DOMDocumentFragment.

    * *

    ACTION_INSERT_AFTER: * Insert the result of the parse operation as the immediately following sibling * of the context node. For this action to work the context node's parent must * be a DOMElement or a DOMDocumentFragment.

    * *

    ACTION_INSERT_BEFORE: * Insert the result of the parse operation as the immediately preceding sibling * of the context node. For this action to work the context node's parent must * be a DOMElement or a DOMDocumentFragment.

    * *

    ACTION_REPLACE: * Replace the context node with the result of the parse operation. For this * action to work, the context node must have a parent, and the parent must be * a DOMElement or a DOMDocumentFragment.

    * *

    ACTION_REPLACE_CHILDREN: * Replace all the children of the context node with the result of the parse * operation. For this action to work, the context node must be a DOMElement, * a DOMDocument, or a DOMDocumentFragment.

    * * @see parseWithContext(...) * @since DOM Level 3 */ enum ActionType { ACTION_APPEND_AS_CHILDREN = 1, ACTION_REPLACE_CHILDREN = 2, ACTION_INSERT_BEFORE = 3, ACTION_INSERT_AFTER = 4, ACTION_REPLACE = 5 }; //@} // ----------------------------------------------------------------------- // Virtual DOMLSParser interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 3 */ //@{ // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- /** * Get a pointer to the DOMConfiguration object used when parsing * an input source. * This DOMConfiguration is specific to the parse operation. * No parameter values from this DOMConfiguration object are passed * automatically to the DOMConfiguration object on the * DOMDocument that is created, or used, by the parse operation. * The DOM application is responsible for passing any needed parameter values * from this DOMConfiguration object to the DOMConfiguration * object referenced by the DOMDocument object. * * In addition to the parameters recognized in on the DOMConfiguration * interface defined in [DOM Level 3 Core], the DOMConfiguration objects * for DOMLSParser add or modify the following parameters: * * "charset-overrides-xml-encoding" * true [optional] (default) * If a higher level protocol such as HTTP [IETF RFC 2616] provides an * indication of the character encoding of the input stream being processed, * that will override any encoding specified in the XML declaration or the * Text declaration (see also section 4.3.3, "Character Encoding in Entities", * in [XML 1.0]). Explicitly setting an encoding in the DOMLSInput * overrides any encoding from the protocol. * false [required] * The parser ignores any character set encoding information from higher-level * protocols. * * "disallow-doctype" * true [optional] * Throw a fatal "doctype-not-allowed" error if a doctype node is found while * parsing the document. This is useful when dealing with things like SOAP * envelopes where doctype nodes are not allowed. * false [required] (default) * Allow doctype nodes in the document. * * "ignore-unknown-character-denormalizations" * true [required] (default) * If, while verifying full normalization when [XML 1.1] is supported, a * processor encounters characters for which it cannot determine the normalization * properties, then the processor will ignore any possible denormalizations * caused by these characters. * This parameter is ignored for [XML 1.0]. * false [optional] * Report an fatal "unknown-character-denormalization" error if a character * is encountered for which the processor cannot determine the normalization * properties. * * "infoset" * See the definition of DOMConfiguration for a description of this parameter. * Unlike in [DOM Level 3 Core], this parameter will default to true for DOMLSParser. * * "namespaces" * true [required] (default) * Perform the namespace processing as defined in [XML Namespaces] and * [XML Namespaces 1.1]. * false [optional] * Do not perform the namespace processing. * * "resource-resolver" [required] * A pointer to a DOMLSResourceResolver object, or NULL. If the value of this parameter * is not null when an external resource (such as an external XML entity or an XML schema * location) is encountered, the implementation will request that the DOMLSResourceResolver * referenced in this parameter resolves the resource. * * "supported-media-types-only" * true [optional] * Check that the media type of the parsed resource is a supported media type. If * an unsupported media type is encountered, a fatal error of type "unsupported-media-type" * will be raised. The media types defined in [IETF RFC 3023] must always be accepted. * false [required] (default) * Accept any media type. * * "validate" * See the definition of DOMConfiguration for a description of this parameter. * Unlike in [DOM Level 3 Core], the processing of the internal subset is always accomplished, even * if this parameter is set to false. * * "validate-if-schema" * See the definition of DOMConfiguration for a description of this parameter. * Unlike in [DOM Level 3 Core], the processing of the internal subset is always accomplished, even * if this parameter is set to false. * * "well-formed" * See the definition of DOMConfiguration for a description of this parameter. * Unlike in [DOM Level 3 Core], this parameter cannot be set to false. * * In addition to these, Xerces adds these non standard parameters: * * "http://apache.org/xml/properties/entity-resolver" * A pointer to a XMLEntityResolver object, or NULL. If the value of this parameter * is not null when an external resource (such as an external XML entity or an XML schema * location) is encountered, the implementation will request that the XMLEntityResolver * referenced in this parameter resolves the resource. * * "http://apache.org/xml/properties/schema/external-schemaLocation" * A string holding a set of [namespaceUri schemaLocation] entries that will be treated as * the content of the attribute xsi:schemaLocation of the root element * * "http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation" * A string holding the schemaLocation for the empty namespace URI that will be treated as * the content of the attribute xsi:noNamespaceSchemaLocation of the root element * * "http://apache.org/xml/properties/security-manager" * A pointer to a SecurityManager object that will control how many entity references will be * expanded during parsing * * "http://apache.org/xml/properties/scannerName" * A string holding the type of scanner used while parsing. The valid names are: *
      *
    • IGXMLScanner: the default one, capable of both XMLSchema and DTD validation
    • *
    • SGXMLScanner: a scanner that can only perform XMLSchema validation
    • *
    • DGXMLScanner: a scanner that can only perform DTD validation
    • *
    • WFXMLScanner: a scanner that cannot perform any type validation, only well-formedness
    • *
    * * "http://apache.org/xml/properties/parser-use-DOMDocument-from-Implementation" * A string holding the capabilities of the DOM implementation to be used to create the DOMDocument * resulting from the parse operation. For instance, "LS" or "Core" * * "http://apache.org/xml/features/validation/schema" * true * Enable XMLSchema validation (note that also namespace processing should be enabled) * false (default) * Don't perform XMLSchema validation * * "http://apache.org/xml/features/validation/schema-full-checking" * true * Turn on full XMLSchema checking (e.g. Unique Particle Attribution) * false (default) * Don't perform full XMLSchema checking * * "http://apache.org/xml/features/validating/load-schema" * true (default) * Allow the parser to load schemas that are not in the grammar pool * false * Schemas that are not in the grammar pool are ignored * * "http://apache.org/xml/features/dom/user-adopts-DOMDocument" * true * The DOMDocument objects returned by parse will be owned by the caller * false (default) * The DOMDocument objects returned by parse will be owned by this DOMLSParser * and deleted when released * * "http://apache.org/xml/features/nonvalidating/load-external-dtd" * true (default) * Allow the parser to load external DTDs * false * References to external DTDs will be ignored * * "http://apache.org/xml/features/continue-after-fatal-error" * true * Parsing should try to continue even if a fatal error has been triggered, trying to generate a DOM tree * from a non well-formed XML * false (default) * Violation of XML rules will abort parsing * * "http://apache.org/xml/features/validation-error-as-fatal" * true * Validation errors are treated as fatal errors, and abort parsing (unless "continue-after-fatal-error" * has been specified) * false (default) * Validation errors are normal errors * * "http://apache.org/xml/features/validation/cache-grammarFromParse" * true * XMLSchemas referenced by an XML file are cached in order to be reused by other parse operations * false (default) * XMLSchemas loaded during a parse operation will be discarded before the next one * * "http://apache.org/xml/features/validation/use-cachedGrammarInParse" * true * During this parse operation, reuse the XMLSchemas found in the cache * false (default) * Don't reuse the XMLSchemas found in the cache * * "http://apache.org/xml/features/calculate-src-ofs" * true * During parsing update the position in the source stream * false (default) * Don't waste time computing the position in the source stream * * "http://apache.org/xml/features/standard-uri-conformant" * true * Require that every URL being resolved is made of valid URL characters only * false (default) * Allow invalid URL characters in URL (e.g. spaces) * * "http://apache.org/xml/features/dom-has-psvi-info" * true * Add schema informations to DOMElement and DOMAttr nodes in the output DOM tree * false (default) * Don't store schema informations in the output DOM tree * * "http://apache.org/xml/features/generate-synthetic-annotations" * true * Create annotation objects in the representation of the loaded XMLSchemas * false (default) * Discard annotations found in the loaded XMLSchemas * * "http://apache.org/xml/features/validate-annotations" * true * Check that annotations are valid according to their XMLSchema definition * false (default) * Don't validate annotations * * "http://apache.org/xml/features/validation/identity-constraint-checking" * true (default) * Enforce identity constraints specified in the XMLSchema * false * Don't enforce identity constraints * * "http://apache.org/xml/features/validation/ignoreCachedDTD" * true * Don't reuse DTDs found in the cache, even if use-cachedGrammarInParse is true * false (default) * Reuse DTDs found in the cache, if use-cachedGrammarInParse is true * * "http://apache.org/xml/features/schema/ignore-annotations" * true * Don't process annotations found in an XMLSchema * false (default) * Process the annotations found in an XMLSchema * * "http://apache.org/xml/features/disable-default-entity-resolution" * true * Entities will be resolved only by a resolver installed by the user * false (default) * If the entity resolver has not been installed, or it refuses to resolve the given entity, the * parser will try to locate it himself * * "http://apache.org/xml/features/validation/schema/skip-dtd-validation" * true * If XMLSchema validation is true, DTD validation will not be performed * false (default) * If a DTD is found, it will be used to validate the XML * * @return The pointer to the configuration object. * @since DOM Level 3 */ virtual DOMConfiguration* getDomConfig() = 0; /** * Get a const pointer to the application filter * * This method returns the installed application filter. If no filter * has been installed, then it will be a zero pointer. * * @return A const pointer to the installed application filter * @since DOM Level 3 */ virtual const DOMLSParserFilter* getFilter() const = 0; /** * Return whether the parser is asynchronous * * @return true if the DOMLSParser is asynchronous, * false if it is synchronous * @since DOM Level 3 */ virtual bool getAsync() const = 0; /** * Return whether the parser is busy parsing * * @return true if the DOMLSParser is currently busy * loading a document, otherwise false. * @since DOM Level 3 */ virtual bool getBusy() const = 0; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- /** * Set the application filter * * When the application provides a filter, the parser will call out to * the filter at the completion of the construction of each DOMElement * node. The filter implementation can choose to remove the element from the * document being constructed or to terminate the parse early. * The filter is invoked after the operations requested by the DOMConfiguration * parameters have been applied. For example, if "validate" is set to true, * the validation is done before invoking the filter. * * Any previously set filter is merely dropped, since the parser * does not own them. * * @param filter A const pointer to the user supplied application * filter. * * @see #getFilter * @since DOM Level 3 */ virtual void setFilter(DOMLSParserFilter* const filter) = 0; // ----------------------------------------------------------------------- // Parsing methods // ----------------------------------------------------------------------- /** * Parse an XML document from a resource identified by a DOMLSInput. * * The parser owns the returned DOMDocument. It will be deleted * when the parser is released. * * @param source The DOMLSInput from which the source of the document * is to be read. * @return If the DOMLSParser is a synchronous DOMLSParser * the newly created and populated DOMDocument is returned. * If the DOMLSParser is asynchronous then NULL * is returned since the document object may not yet be constructed when * this method returns. * @exception DOMException INVALID_STATE_ERR: Raised if the DOMLSParser::busy * attribute is true. * @exception DOMLSException PARSE_ERR: Starting from Xerces-C++ 4.0.0 this exception is * raised if the DOMLSParser was unable * to load the XML document. DOM applications should * attach a DOMErrorHandler using the * parameter "error-handler" if they wish to get details * on the error. * * @see DOMLSInput#DOMLSInput * @see DOMConfiguration * @see resetDocumentPool * @since DOM Level 3 */ virtual DOMDocument* parse(const DOMLSInput* source) = 0; /** * Parse an XML document from a location identified by a URI reference [IETF RFC 2396]. * If the URI contains a fragment identifier (see section 4.1 in [IETF RFC 2396]), * the behavior is not defined by this specification, future versions of this * specification may define the behavior. * * The parser owns the returned DOMDocument. It will be deleted * when the parser is released. * * @param uri The location of the XML document to be read (in Unicode) * @return If the DOMLSParser is a synchronous DOMLSParser * the newly created and populated DOMDocument is returned. * If the DOMLSParser is asynchronous then NULL * is returned since the document object is not yet parsed when this method returns. * @exception DOMException INVALID_STATE_ERR: Raised if the DOMLSParser::busy * attribute is true. * @exception DOMLSException PARSE_ERR: Starting from Xerces-C++ 4.0.0 this exception is * raised if the DOMLSParser was unable * to load the XML document. DOM applications should * attach a DOMErrorHandler using the * parameter "error-handler" if they wish to get details * on the error. * * @see #parse(DOMLSInput,...) * @see resetDocumentPool * @since DOM Level 3 */ virtual DOMDocument* parseURI(const XMLCh* const uri) = 0; /** * Parse an XML document from a location identified by a URI reference [IETF RFC 2396]. * If the URI contains a fragment identifier (see section 4.1 in [IETF RFC 2396]), * the behavior is not defined by this specification, future versions of this * specification may define the behavior. * * The parser owns the returned DOMDocument. It will be deleted * when the parser is released. * * @param uri The location of the XML document to be read (in the local code page) * @return If the DOMLSParser is a synchronous DOMLSParser * the newly created and populated DOMDocument is returned. * If the DOMLSParser is asynchronous then NULL * is returned since the document object is not yet parsed when this method returns. * @exception DOMException INVALID_STATE_ERR: Raised if the DOMLSParser::busy * attribute is true. * @exception DOMLSException PARSE_ERR: Starting from Xerces-C++ 4.0.0 this exception is * raised if the DOMLSParser was unable * to load the XML document. DOM applications should * attach a DOMErrorHandler using the * parameter "error-handler" if they wish to get details * on the error. * * @see #parse(DOMLSInput,...) * @see resetDocumentPool * @since DOM Level 3 */ virtual DOMDocument* parseURI(const char* const uri) = 0; /** * Parse an XML fragment from a resource identified by a DOMLSInput * and insert the content into an existing document at the position specified * with the context and action arguments. When parsing the input stream, the * context node (or its parent, depending on where the result will be inserted) * is used for resolving unbound namespace prefixes. The context node's * ownerDocument node (or the node itself if the node of type * DOCUMENT_NODE) is used to resolve default attributes and entity * references. * As the new data is inserted into the document, at least one mutation event * is fired per new immediate child or sibling of the context node. * If the context node is a DOMDocument node and the action is * ACTION_REPLACE_CHILDREN, then the document that is passed as * the context node will be changed such that its xmlEncoding, * documentURI, xmlVersion, inputEncoding, * xmlStandalone, and all other such attributes are set to what they * would be set to if the input source was parsed using DOMLSParser::parse(). * This method is always synchronous, even if the DOMLSParser is * asynchronous (DOMLSParser::getAsync() returns true). * If an error occurs while parsing, the caller is notified through the ErrorHandler * instance associated with the "error-handler" parameter of the DOMConfiguration. * When calling parseWithContext, the values of the following configuration * parameters will be ignored and their default values will always be used instead: * "validate", * "validate-if-schema" * "element-content-whitespace". * Other parameters will be treated normally, and the parser is expected to call * the DOMLSParserFilter just as if a whole document was parsed. * * @param source The DOMLSInput from which the source document is * to be read. The source document must be an XML fragment, i.e. * anything except a complete XML document (except in the case where * the context node of type DOCUMENT_NODE, and the action is * ACTION_REPLACE_CHILDREN), a DOCTYPE * (internal subset), entity declaration(s), notation declaration(s), * or XML or text declaration(s). * @param contextNode The node that is used as the context for the data that is being * parsed. This node must be a DOMDocument node, a * DOMDocumentFragment node, or a node of a type that * is allowed as a child of an DOMElement node, e.g. * it cannot be an DOMAttribute node. * @param action This parameter describes which action should be taken between the new * set of nodes being inserted and the existing children of the context node. * The set of possible actions is defined in ACTION_TYPES above. * @return Return the node that is the result of the parse operation. If the result is more * than one top-level node, the first one is returned. * * @exception DOMException * HIERARCHY_REQUEST_ERR: Raised if the content cannot replace, be inserted before, after, * or as a child of the context node (see also DOMNode::insertBefore * or DOMNode::replaceChild in [DOM Level 3 Core]). * NOT_SUPPORTED_ERR: Raised if the DOMLSParser doesn't support this method, * or if the context node is of type DOMDocument and the DOM * implementation doesn't support the replacement of the DOMDocumentType * child or DOMElement child. * NO_MODIFICATION_ALLOWED_ERR: Raised if the context node is a read only node and the content * is being appended to its child list, or if the parent node of * the context node is read only node and the content is being * inserted in its child list. * INVALID_STATE_ERR: Raised if the DOMLSParser::getBusy() returns true. * * @exception DOMLSException PARSE_ERR: Raised if the DOMLSParser was unable to load * the XML fragment. DOM applications should attach a * DOMErrorHandler using the parameter "error-handler" * if they wish to get details on the error. * @since DOM Level 3 */ virtual DOMNode* parseWithContext(const DOMLSInput* source, DOMNode* contextNode, const ActionType action) = 0; /** * Abort the loading of the document that is currently being loaded by the DOMLSParser. * If the DOMLSParser is currently not busy, a call to this method does nothing. * * Note: invoking this method will remove the installed DOMLSParserFilter filter * * @since DOM Level 3 */ virtual void abort() = 0; //@} // ----------------------------------------------------------------------- // Non-standard Extension // ----------------------------------------------------------------------- /** @name Non-standard Extension */ //@{ /** * Called to indicate that this DOMLSParser is no longer in use * and that the implementation may relinquish any resources associated with it. * * Access to a released object will lead to unexpected result. */ virtual void release() = 0; /** Reset the documents vector pool and release all the associated memory * back to the system. * * When parsing a document using a DOM parser, all memory allocated * for a DOM tree is associated to the DOM document. * * If you do multiple parse using the same DOM parser instance, then * multiple DOM documents will be generated and saved in a vector pool. * All these documents (and thus all the allocated memory) * won't be deleted until the parser instance is destroyed. * * If you don't need these DOM documents anymore and don't want to * destroy the DOM parser instance at this moment, then you can call this method * to reset the document vector pool and release all the allocated memory * back to the system. * * It is an error to call this method if you are in the middle of a * parse (e.g. in the mid of a progressive parse). * * @exception IOException An exception from the parser if this function * is called when a parse is in progress. * */ virtual void resetDocumentPool() = 0; /** * Preparse schema grammar (XML Schema, DTD, etc.) via an input source * object. * * This method invokes the preparsing process on a schema grammar XML * file specified by the DOMLSInput parameter. If the 'toCache' flag * is enabled, the parser will cache the grammars for re-use. If a grammar * key is found in the pool, no caching of any grammar will take place. * * @param source A const reference to the DOMLSInput object which * points to the schema grammar file to be preparsed. * @param grammarType The grammar type (Schema or DTD). * @param toCache If true, we cache the preparsed grammar, * otherwise, no chaching. Default is false. * @return The preparsed schema grammar object (SchemaGrammar or * DTDGrammar). That grammar object is owned by the parser. * * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception XMLException An exception from the parser or client * handler code. * @exception DOMException A DOM exception as per DOM spec. * * @see DOMLSInput#DOMLSInput */ virtual Grammar* loadGrammar(const DOMLSInput* source, const Grammar::GrammarType grammarType, const bool toCache = false) = 0; /** * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL * * This method invokes the preparsing process on a schema grammar XML * file specified by the file path parameter. If the 'toCache' flag is * enabled, the parser will cache the grammars for re-use. If a grammar * key is found in the pool, no caching of any grammar will take place. * * @param systemId A const XMLCh pointer to the Unicode string which * contains the path to the XML grammar file to be * preparsed. * @param grammarType The grammar type (Schema or DTD). * @param toCache If true, we cache the preparsed grammar, * otherwise, no chaching. Default is false. * @return The preparsed schema grammar object (SchemaGrammar or * DTDGrammar). That grammar object is owned by the parser. * * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception XMLException An exception from the parser or client * handler code. * @exception DOMException A DOM exception as per DOM spec. */ virtual Grammar* loadGrammar(const XMLCh* const systemId, const Grammar::GrammarType grammarType, const bool toCache = false) = 0; /** * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL * * This method invokes the preparsing process on a schema grammar XML * file specified by the file path parameter. If the 'toCache' flag is * enabled, the parser will cache the grammars for re-use. If a grammar * key is found in the pool, no caching of any grammar will take place. * * @param systemId A const char pointer to a native string which contains * the path to the XML grammar file to be preparsed. * @param grammarType The grammar type (Schema or DTD). * @param toCache If true, we cache the preparsed grammar, * otherwise, no chaching. Default is false. * @return The preparsed schema grammar object (SchemaGrammar or * DTDGrammar). That grammar object is owned by the parser. * * * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception XMLException An exception from the parser or client * handler code. * @exception DOMException A DOM exception as per DOM spec. */ virtual Grammar* loadGrammar(const char* const systemId, const Grammar::GrammarType grammarType, const bool toCache = false) = 0; /** * Retrieve the grammar that is associated with the specified namespace key * * @param nameSpaceKey Namespace key * @return Grammar associated with the Namespace key. */ virtual Grammar* getGrammar(const XMLCh* const nameSpaceKey) const = 0; /** * Retrieve the grammar where the root element is declared. * * @return Grammar where root element declared */ virtual Grammar* getRootGrammar() const = 0; /** * Returns the string corresponding to a URI id from the URI string pool. * * @param uriId id of the string in the URI string pool. * @return URI string corresponding to the URI id. */ virtual const XMLCh* getURIText(unsigned int uriId) const = 0; /** * Clear the cached grammar pool */ virtual void resetCachedGrammarPool() = 0; /** * Returns the current src offset within the input source. * * @return offset within the input source */ virtual XMLFilePos getSrcOffset() const = 0; //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMNotation.hpp0000644000175000017500000000743610606722647020135 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMNotation.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMNOTATION_HPP) #define XERCESC_INCLUDE_GUARD_DOMNOTATION_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN /** * This interface represents a notation declared in the DTD. A notation either * declares, by name, the format of an unparsed entity (see section 4.7 of * the XML 1.0 specification), or is used for formal declaration of * Processing Instruction targets (see section 2.6 of the XML 1.0 * specification). The nodeName attribute inherited from * DOMNode is set to the declared name of the notation. *

    The DOM Level 1 does not support editing DOMNotation nodes; * they are therefore readonly. *

    A DOMNotation node does not have any parent. * * @since DOM Level 1 */ class CDOM_EXPORT DOMNotation: public DOMNode { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMNotation() {} DOMNotation(const DOMNotation &other) : DOMNode(other) {} //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented operators */ //@{ DOMNotation & operator = (const DOMNotation &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMNotation() {}; //@} // ----------------------------------------------------------------------- // Virtual DOMNotation interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 1 */ //@{ // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- /** * Get the public identifier of this notation. * * If the public identifier was not * specified, this is null. * @return Returns the public identifier of the notation * @since DOM Level 1 */ virtual const XMLCh *getPublicId() const = 0; /** * Get the system identifier of this notation. * * If the system identifier was not * specified, this is null. * @return Returns the system identifier of the notation * @since DOM Level 1 */ virtual const XMLCh *getSystemId() const = 0; //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMNodeList.hpp0000644000175000017500000000734311030714661020045 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMNodeList.hpp 671894 2008-06-26 13:29:21Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMNODELIST_HPP) #define XERCESC_INCLUDE_GUARD_DOMNODELIST_HPP #include XERCES_CPP_NAMESPACE_BEGIN class DOMNode; /** * The DOMNodeList interface provides the abstraction of an ordered * collection of nodes. DOMNodeLists are created by DOMDocument::getElementsByTagName(), * DOMNode::getChildNodes(), * *

    The items in the DOMNodeList are accessible via an integral * index, starting from 0. * * DOMNodeLists are "live", in that any changes to the document tree are immediately * reflected in any DOMNodeLists that may have been created for that tree. */ class CDOM_EXPORT DOMNodeList { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMNodeList() {}; //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented constructors and operators */ //@{ DOMNodeList(const DOMNodeList &); DOMNodeList & operator = (const DOMNodeList &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMNodeList() {}; //@} // ----------------------------------------------------------------------- // Virtual DOMNodeList interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 1 */ //@{ // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- /** * Returns the index item in the collection. * * If index is greater than or equal to the number of nodes in * the list, this returns null. * * @param index Index into the collection. * @return The node at the indexth position in the * DOMNodeList, or null if that is not a valid * index. * @since DOM Level 1 */ virtual DOMNode *item(XMLSize_t index) const = 0; /** * Returns the number of nodes in the list. * * The range of valid child node indices is 0 to length-1 inclusive. * @since DOM Level 1 */ virtual XMLSize_t getLength() const = 0; //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMText.hpp0000644000175000017500000001706610606722647017266 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMText.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMTEXT_HPP) #define XERCESC_INCLUDE_GUARD_DOMTEXT_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN /** * The DOMText interface inherits from DOMCharacterData * and represents the textual content (termed character data in XML) of an * DOMElement or DOMAttr. If there is no markup inside * an element's content, the text is contained in a single object * implementing the DOMText interface that is the only child of * the element. If there is markup, it is parsed into the information items * (elements, comments, etc.) and DOMText nodes that form the list * of children of the element. *

    When a document is first made available via the DOM, there is only one * DOMText node for each block of text. Users may create adjacent * DOMText nodes that represent the contents of a given element * without any intervening markup, but should be aware that there is no way * to represent the separations between these nodes in XML or HTML, so they * will not (in general) persist between DOM editing sessions. The * normalize() method on DOMNode merges any such * adjacent DOMText objects into a single node for each block of * text. *

    See also the Document Object Model (DOM) Level 2 Core Specification. */ class CDOM_EXPORT DOMText: public DOMCharacterData { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMText() {} DOMText(const DOMText &other) : DOMCharacterData(other) {} //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented operators */ //@{ DOMText & operator = (const DOMText &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMText() {}; //@} // ----------------------------------------------------------------------- // Virtual DOMText interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 1 */ //@{ /** * Breaks this node into two nodes at the specified offset, * keeping both in the tree as siblings. After being split, this node * will contain all the content up to the offset point. A * new node of the same type, which contains all the content at and * after the offset point, is returned. If the original * node had a parent node, the new node is inserted as the next sibling * of the original node. When the offset is equal to the * length of this node, the new node has no data. * @param offset The 16-bit unit offset at which to split, starting from * 0. * @return The new node, of the same type as this node. * @exception DOMException * INDEX_SIZE_ERR: Raised if the specified offset is negative or greater * than the number of 16-bit units in data. *
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. * @since DOM Level 1 */ virtual DOMText *splitText(XMLSize_t offset) = 0; //@} /** @name Functions introduced in DOM Level 3 */ //@{ /** * Returns whether this text node contains element content whitespace, * often abusively called "ignorable whitespace". The text node is determined * to contain whitespace in element content during the load of the document * or if validation occurs while using DOMDocument::normalizeDocument(). * * @since DOM Level 3 */ virtual bool getIsElementContentWhitespace() const = 0; /** * Returns all text of DOMText nodes logically-adjacent text * nodes to this node, concatenated in document order. * * @since DOM Level 3 */ virtual const XMLCh* getWholeText() const = 0; /** * Substitutes the a specified text for the text of the current node and * all logically-adjacent text nodes. * *
    This method returns the node in the hierarchy which received the * replacement text, which is null if the text was empty or is the * current node if the current node is not read-only or otherwise is a * new node of the same type as the current node inserted at the site of * the replacement. All logically-adjacent text nodes are removed * including the current node unless it was the recipient of the * replacement text. *
    Where the nodes to be removed are read-only descendants of an * DOMEntityReference, the DOMEntityReference must * be removed instead of the read-only nodes. If any * DOMEntityReference to be removed has descendants that are * not DOMEntityReference, DOMText, or * DOMCDATASection nodes, the replaceWholeText * method must fail before performing any modification of the document, * raising a DOMException with the code * NO_MODIFICATION_ALLOWED_ERR. * * @param content The content of the replacing DOMText node. * @return The DOMText node created with the specified content. * @exception DOMException * NO_MODIFICATION_ALLOWED_ERR: Raised if one of the DOMText * nodes being replaced is readonly. * @since DOM Level 3 */ virtual DOMText* replaceWholeText(const XMLCh* content) = 0; //@} // ----------------------------------------------------------------------- // Non-standard extension // ----------------------------------------------------------------------- /** @name Non-standard extension */ //@{ /** * Non-standard extension * * Return true if this node contains ignorable whitespaces only. * @return True if this node contains ignorable whitespaces only. */ virtual bool isIgnorableWhitespace() const = 0; //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMMemoryManager.hpp0000644000175000017500000001260510606722647021077 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESC_INCLUDE_GUARD_DOMMEMORYMANAGER_HPP) #define XERCESC_INCLUDE_GUARD_DOMMEMORYMANAGER_HPP //------------------------------------------------------------------------------------ // Includes //------------------------------------------------------------------------------------ XERCES_CPP_NAMESPACE_BEGIN /** * The DOMMemoryManager interface exposes the memory allocation-related * functionalities of a DOMDocument */ class CDOM_EXPORT DOMMemoryManager { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMMemoryManager() {}; //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented constructors and operators */ //@{ DOMMemoryManager(const DOMMemoryManager &); DOMMemoryManager & operator = (const DOMMemoryManager &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMMemoryManager() {}; //@} // ----------------------------------------------------------------------- // data types // ----------------------------------------------------------------------- enum NodeObjectType { ATTR_OBJECT = 0, ATTR_NS_OBJECT = 1, CDATA_SECTION_OBJECT = 2, COMMENT_OBJECT = 3, DOCUMENT_FRAGMENT_OBJECT = 4, DOCUMENT_TYPE_OBJECT = 5, ELEMENT_OBJECT = 6, ELEMENT_NS_OBJECT = 7, ENTITY_OBJECT = 8, ENTITY_REFERENCE_OBJECT = 9, NOTATION_OBJECT = 10, PROCESSING_INSTRUCTION_OBJECT = 11, TEXT_OBJECT = 12 }; //@{ // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- /** * Returns the size of the chunks of memory allocated by the memory manager * * @return the dimension of the chunks of memory allocated by the memory manager */ virtual XMLSize_t getMemoryAllocationBlockSize() const = 0; //@} //@{ // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- /** * Set the size of the chunks of memory allocated by the memory manager * * @param size the new size of the chunks; it must be greater than 4KB */ virtual void setMemoryAllocationBlockSize(XMLSize_t size) = 0; //@} //@{ // ----------------------------------------------------------------------- // Operations // ----------------------------------------------------------------------- /** * Allocate a memory block of the requested size from the managed pool * * @param amount the size of the new memory block * * @return the pointer to the newly allocated block */ virtual void* allocate(XMLSize_t amount) = 0; /** * Allocate a memory block of the requested size from the managed pool of DOM objects * * @param amount the size of the new memory block * @param type the type of the DOM object that will be stored in the block * * @return the pointer to the newly allocated block */ virtual void* allocate(XMLSize_t amount, DOMMemoryManager::NodeObjectType type) = 0; /** * Release a DOM object and place its memory back in the pool * * @param object the pointer to the DOM node * @param type the type of the DOM object */ virtual void release(DOMNode* object, DOMMemoryManager::NodeObjectType type) = 0; /** * Allocate a memory block from the mnaged pool and copy the provided string * * @param src the string to be copied * * @return the pointer to the newly allocated block */ virtual XMLCh* cloneString(const XMLCh *src) = 0; //@} }; XERCES_CPP_NAMESPACE_END #endif /** * End of file DOMMemoryManager.hpp */ xerces-c-3.1.1/src/xercesc/dom/DOMCDATASection.hpp0000644000175000017500000001046110606722647020473 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMCDATASection.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMCDATASECTION_HPP) #define XERCESC_INCLUDE_GUARD_DOMCDATASECTION_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN /** * CDATA sections are used to escape blocks of text containing characters that * would otherwise be regarded as markup. The only delimiter that is * recognized in a CDATA section is the "]]>" string that ends the CDATA * section. CDATA sections cannot be nested. Their primary purpose is for * including material such as XML fragments, without needing to escape all * the delimiters. *

    The data attribute of the DOMText node holds * the text that is contained by the CDATA section. Note that this may * contain characters that need to be escaped outside of CDATA sections and * that, depending on the character encoding ("charset") chosen for * serialization, it may be impossible to write out some characters as part * of a CDATA section. *

    The DOMCDATASection interface inherits from the * DOMCharacterData interface through the DOMText * interface. Adjacent DOMCDATASection nodes are not merged by use * of the normalize method of the DOMNode interface. * Because no markup is recognized within a DOMCDATASection, * character numeric references cannot be used as an escape mechanism when * serializing. Therefore, action needs to be taken when serializing a * DOMCDATASection with a character encoding where some of the * contained characters cannot be represented. Failure to do so would not * produce well-formed XML.One potential solution in the serialization * process is to end the CDATA section before the character, output the * character using a character reference or entity reference, and open a new * CDATA section for any further characters in the text node. Note, however, * that some code conversion libraries at the time of writing do not return * an error or exception when a character is missing from the encoding, * making the task of ensuring that data is not corrupted on serialization * more difficult. *

    See also the Document Object Model (DOM) Level 2 Core Specification. * * @since DOM Level 1 */ class CDOM_EXPORT DOMCDATASection: public DOMText { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMCDATASection() {} DOMCDATASection(const DOMCDATASection &other) : DOMText(other) {} //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented operators */ //@{ DOMCDATASection & operator = (const DOMCDATASection &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMCDATASection() {}; //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMXPathNSResolver.hpp0000644000175000017500000001115711066445364021343 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMXPathNSResolver.hpp 698579 2008-09-24 14:13:08Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMXPATHNSRESOLVER_HPP) #define XERCESC_INCLUDE_GUARD_DOMXPATHNSRESOLVER_HPP #include XERCES_CPP_NAMESPACE_BEGIN /** * The DOMXPathNSResolver interface permit prefix strings * in the expression to be properly bound to namespaceURI strings. * DOMXPathEvaluator can construct an implementation of * DOMXPathNSResolver from a node, or the interface may be * implemented by any application. * @since DOM Level 3 */ class CDOM_EXPORT DOMXPathNSResolver { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMXPathNSResolver() {}; //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented constructors and operators */ //@{ DOMXPathNSResolver(const DOMXPathNSResolver &); DOMXPathNSResolver& operator = (const DOMXPathNSResolver&); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMXPathNSResolver() {}; //@} // ----------------------------------------------------------------------- // Virtual DOMDocument interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 3 */ //@{ /** Look up the namespace URI associated to the given namespace prefix. * * @param prefix of type XMLCh - The prefix to look for. An empty or * null string denotes the default namespace. * @return the associated namespace URI or null if none is found. */ virtual const XMLCh* lookupNamespaceURI(const XMLCh* prefix) const = 0; //@} // ----------------------------------------------------------------------- // Non-standard extension // ----------------------------------------------------------------------- /** @name Non-standard extension */ //@{ /** * Non-standard extension * * XPath2 implementations require a reverse lookup in the static context. * Look up the prefix associated with the namespace URI * @param URI of type XMLCh - The namespace to look for. * @return the associated prefix which can be an empty string if this * is a default namespace or null if none is found. */ virtual const XMLCh* lookupPrefix(const XMLCh* URI) const = 0; /** * Non-standard extension * * Associate the given namespace prefix to the namespace URI. * @param prefix of type XMLCh - The namespace prefix to bind. An empty * or null string denotes the default namespace. * @param uri of type XMLCh - The associated namespace URI. If this * argument is null or an empty string then the existing binding for this * prefix is removed. */ virtual void addNamespaceBinding(const XMLCh* prefix, const XMLCh* uri) = 0; /** * Called to indicate that this object (and its associated children) is no longer in use * and that the implementation may relinquish any resources associated with it and * its associated children. * * Access to a released object will lead to unexpected result. */ virtual void release() = 0; //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMProcessingInstruction.hpp0000644000175000017500000001024210606722647022705 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMProcessingInstruction.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMPROCESSINGINSTRUCTION_HPP) #define XERCESC_INCLUDE_GUARD_DOMPROCESSINGINSTRUCTION_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN /** * The DOMProcessingInstruction interface represents a "processing * instruction", used in XML as a way to keep processor-specific information * in the text of the document. * * @since DOM Level 1 */ class CDOM_EXPORT DOMProcessingInstruction: public DOMNode { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMProcessingInstruction() {} DOMProcessingInstruction(const DOMProcessingInstruction &other) : DOMNode(other) {} //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented operators */ //@{ DOMProcessingInstruction & operator = (const DOMProcessingInstruction &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMProcessingInstruction() {}; //@} // ----------------------------------------------------------------------- // Virtual DOMProcessingInstruction interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 1 */ //@{ // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- /** * The target of this processing instruction. * * XML defines this as being the * first token following the markup that begins the processing instruction. * * @since DOM Level 1 */ virtual const XMLCh * getTarget() const = 0; /** * The content of this processing instruction. * * This is from the first non * white space character after the target to the character immediately * preceding the ?>. * @exception DOMException * NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly. * @since DOM Level 1 */ virtual const XMLCh * getData() const = 0; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- /** * Sets the content of this processing instruction. * * This is from the first non * white space character after the target to the character immediately * preceding the ?>. * @param data The string containing the processing instruction * @since DOM Level 1 */ virtual void setData(const XMLCh * data) = 0; //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMTreeWalker.hpp0000644000175000017500000002663411030714661020375 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMTreeWalker.hpp 671894 2008-06-26 13:29:21Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMTREEWALKER_HPP) #define XERCESC_INCLUDE_GUARD_DOMTREEWALKER_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN /** * DOMTreeWalker objects are used to navigate a document tree or * subtree using the view of the document defined by their * whatToShow flags and filter (if any). Any function which * performs navigation using a DOMTreeWalker will automatically * support any view defined by a DOMTreeWalker. *

    Omitting nodes from the logical view of a subtree can result in a * structure that is substantially different from the same subtree in the * complete, unfiltered document. Nodes that are siblings in the * DOMTreeWalker view may be children of different, widely * separated nodes in the original view. For instance, consider a * DOMNodeFilter that skips all nodes except for DOMText nodes and * the root node of a document. In the logical view that results, all text * nodes will be siblings and appear as direct children of the root node, no * matter how deeply nested the structure of the original document. *

    See also the Document Object Model (DOM) Level 2 Traversal and Range Specification. * * @since DOM Level 2 */ class CDOM_EXPORT DOMTreeWalker { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMTreeWalker() {} DOMTreeWalker(const DOMTreeWalker &) {} //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented constructors and operators */ //@{ DOMTreeWalker & operator = (const DOMTreeWalker &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMTreeWalker() {}; //@} // ----------------------------------------------------------------------- // Virtual DOMTreeWalker interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 2 */ //@{ // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- /** * The root node of the DOMTreeWalker, as specified * when it was created. * * @since DOM Level 2 */ virtual DOMNode* getRoot() = 0; /** * This attribute determines which node types are presented via the * DOMTreeWalker. The available set of constants is defined in * the DOMNodeFilter interface. Nodes not accepted by * whatToShow will be skipped, but their children may still * be considered. Note that this skip takes precedence over the filter, * if any. * * @since DOM Level 2 */ virtual DOMNodeFilter::ShowType getWhatToShow()= 0; /** * Return The filter used to screen nodes. * * @since DOM Level 2 */ virtual DOMNodeFilter* getFilter()= 0; /** * The value of this flag determines whether the children of entity * reference nodes are visible to the DOMTreeWalker. If false, * these children and their descendants will be rejected. Note that * this rejection takes precedence over whatToShow and the * filter, if any. *
    To produce a view of the document that has entity references * expanded and does not expose the entity reference node itself, use * the whatToShow flags to hide the entity reference node * and set expandEntityReferences to true when creating the * DOMTreeWalker. To produce a view of the document that has * entity reference nodes but no entity expansion, use the * whatToShow flags to show the entity reference node and * set expandEntityReferences to false. * * @since DOM Level 2 */ virtual bool getExpandEntityReferences()= 0; /** * Return the node at which the DOMTreeWalker is currently positioned. * * @since DOM Level 2 */ virtual DOMNode* getCurrentNode()= 0; // ----------------------------------------------------------------------- // Query methods // ----------------------------------------------------------------------- /** * Moves to and returns the closest visible ancestor node of the current * node. If the search for parentNode attempts to step * upward from the DOMTreeWalker's root node, or * if it fails to find a visible ancestor node, this method retains the * current position and returns null. * @return The new parent node, or null if the current node * has no parent in the DOMTreeWalker's logical view. * * @since DOM Level 2 */ virtual DOMNode* parentNode()= 0; /** * Moves the DOMTreeWalker to the first visible child of the * current node, and returns the new node. If the current node has no * visible children, returns null, and retains the current * node. * @return The new node, or null if the current node has no * visible children in the DOMTreeWalker's logical view. * * @since DOM Level 2 */ virtual DOMNode* firstChild()= 0; /** * Moves the DOMTreeWalker to the last visible child of the * current node, and returns the new node. If the current node has no * visible children, returns null, and retains the current * node. * @return The new node, or null if the current node has no * children in the DOMTreeWalker's logical view. * * @since DOM Level 2 */ virtual DOMNode* lastChild()= 0; /** * Moves the DOMTreeWalker to the previous sibling of the * current node, and returns the new node. If the current node has no * visible previous sibling, returns null, and retains the * current node. * @return The new node, or null if the current node has no * previous sibling. in the DOMTreeWalker's logical view. * * @since DOM Level 2 */ virtual DOMNode* previousSibling()= 0; /** * Moves the DOMTreeWalker to the next sibling of the current * node, and returns the new node. If the current node has no visible * next sibling, returns null, and retains the current node. * @return The new node, or null if the current node has no * next sibling. in the DOMTreeWalker's logical view. * * @since DOM Level 2 */ virtual DOMNode* nextSibling()= 0; /** * Moves the DOMTreeWalker to the previous visible node in * document order relative to the current node, and returns the new * node. If the current node has no previous node, or if the search for * previousNode attempts to step upward from the * DOMTreeWalker's root node, returns * null, and retains the current node. * @return The new node, or null if the current node has no * previous node in the DOMTreeWalker's logical view. * * @since DOM Level 2 */ virtual DOMNode* previousNode()= 0; /** * Moves the DOMTreeWalker to the next visible node in document * order relative to the current node, and returns the new node. If the * current node has no next node, or if the search for nextNode attempts * to step upward from the DOMTreeWalker's root * node, returns null, and retains the current node. * @return The new node, or null if the current node has no * next node in the DOMTreeWalker's logical view. * * @since DOM Level 2 */ virtual DOMNode* nextNode()= 0; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- /** * The node at which the DOMTreeWalker is currently positioned. *
    Alterations to the DOM tree may cause the current node to no longer * be accepted by the DOMTreeWalker's associated filter. * currentNode may also be explicitly set to any node, * whether or not it is within the subtree specified by the * root node or would be accepted by the filter and * whatToShow flags. Further traversal occurs relative to * currentNode even if it is not part of the current view, * by applying the filters in the requested direction; if no traversal * is possible, currentNode is not changed. * @exception DOMException * NOT_SUPPORTED_ERR: Raised if an attempt is made to set * currentNode to null. * * @since DOM Level 2 */ virtual void setCurrentNode(DOMNode* currentNode)= 0; //@} // ----------------------------------------------------------------------- // Non-standard Extension // ----------------------------------------------------------------------- /** @name Non-standard Extension */ //@{ /** * Called to indicate that this TreeWalker is no longer in use * and that the implementation may relinquish any resources associated with it. * * Access to a released object will lead to unexpected result. */ virtual void release() = 0; //@} }; #define GetDOMTreeWalkerMemoryManager GET_INDIRECT_MM(fCurrentNode) XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMXPathResult.hpp0000644000175000017500000003654011360344373020555 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMXPathResult.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMXPATHRESULT_HPP) #define XERCESC_INCLUDE_GUARD_DOMXPATHRESULT_HPP #include XERCES_CPP_NAMESPACE_BEGIN class DOMXPathNSResolver; class DOMXPathExpression; class DOMTypeInfo; class DOMNode; /** * The DOMXPathResult interface represents the result of the * evaluation of an XPath 1.0 or XPath 2.0 expression within the context * of a particular node. Since evaluation of an XPath expression can result * in various result types, this object makes it possible to discover and * manipulate the type and value of the result. * * Note that some function signatures were changed compared to the * DOM Level 3 in order to accommodate XPath 2.0. * * @since DOM Level 3 */ class CDOM_EXPORT DOMXPathResult { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMXPathResult() {}; //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented constructors and operators */ //@{ DOMXPathResult(const DOMXPathResult &); DOMXPathResult& operator = (const DOMXPathResult&); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMXPathResult() {}; //@} // ----------------------------------------------------------------------- // Class Types // ----------------------------------------------------------------------- /** @name Public Constants */ //@{ /** *

    ANY_TYPE *
    [XPath 1.0] This code does not represent a specific type. An evaluation of an XPath * expression will never produce this type. If this type is requested, then * the evaluation returns whatever type naturally results from evaluation * of the expression. * If the natural result is a node set when ANY_TYPE was requested, then * UNORDERED_NODE_ITERATOR_TYPE is always the resulting type. Any other * representation of a node set must be explicitly requested. *

    ANY_UNORDERED_NODE_TYPE *
    [XPath 1.0] The result is a node set as defined by XPath 1.0 and will be accessed * as a single node, which may be null if the node set is empty. Document * modification does not invalidate the node, but may mean that the result * node no longer corresponds to the current document. This is a convenience * that permits optimization since the implementation can stop once any node * in the resulting set has been found. * If there is more than one node in the actual result, the single node * returned might not be the first in document order. *

    BOOLEAN_TYPE *
    [XPath 1.0] The result is a boolean as defined by XPath 1.0. Document modification * does not invalidate the boolean, but may mean that reevaluation would not * yield the same boolean. *

    FIRST_ORDERED_NODE_TYPE *
    [XPath 1.0] The result is a node set as defined by XPath 1.0 and will be accessed * as a single node, which may be null if the node set is empty. Document * modification does not invalidate the node, but may mean that the result * node no longer corresponds to the current document. This is a convenience * that permits optimization since the implementation can stop once the first * node in document order of the resulting set has been found. * If there are more than one node in the actual result, the single node * returned will be the first in document order. *

    NUMBER_TYPE *
    [XPath 1.0] The result is a number as defined by XPath 1.0. Document modification does * not invalidate the number, but may mean that reevaluation would not yield the * same number. *

    ORDERED_NODE_ITERATOR_TYPE *
    [XPath 1.0] The result is a node set as defined by XPath 1.0 that will be accessed * iteratively, which will produce document-ordered nodes. Document modification * invalidates the iteration. *

    ORDERED_NODE_SNAPSHOT_TYPE *
    [XPath 1.0] The result is a node set as defined by XPath 1.0 that will be accessed as a * snapshot list of nodes that will be in original document order. Document * modification does not invalidate the snapshot but may mean that reevaluation would * not yield the same snapshot and nodes in the snapshot may have been altered, moved, * or removed from the document. *

    STRING_TYPE *
    [XPath 1.0] The result is a string as defined by XPath 1.0. Document modification does not * invalidate the string, but may mean that the string no longer corresponds to the * current document. *

    UNORDERED_NODE_ITERATOR_TYPE *
    [XPath 1.0] The result is a node set as defined by XPath 1.0 that will be accessed iteratively, * which may not produce nodes in a particular order. Document modification invalidates the iteration. * This is the default type returned if the result is a node set and ANY_TYPE is requested. *

    UNORDERED_NODE_SNAPSHOT_TYPE *
    [XPath 1.0] The result is a node set as defined by XPath 1.0 that will be accessed as a * snapshot list of nodes that may not be in a particular order. Document modification * does not invalidate the snapshot but may mean that reevaluation would not yield the same * snapshot and nodes in the snapshot may have been altered, moved, or removed from the document. *

    FIRST_RESULT_TYPE *
    [XPath 2.0] The result is a sequence as defined by XPath 2.0 and will be accessed * as a single current value or there will be no current value if the sequence * is empty. Document modification does not invalidate the value, but may mean * that the result no longer corresponds to the current document. This is a * convenience that permits optimization since the implementation can stop once * the first item in the resulting sequence has been found. If there is more * than one item in the actual result, the single item returned might not be * the first in document order. *

    ITERATOR_RESULT_TYPE *
    [XPath 2.0] The result is a sequence as defined by XPath 2.0 that will be accessed * iteratively. Document modification invalidates the iteration. *

    SNAPSHOT_RESULT_TYPE *
    [XPath 2.0] The result is a sequence as defined by XPath 2.0 that will be accessed * as a snapshot list of values. Document modification does not invalidate the * snapshot but may mean that reevaluation would not yield the same snapshot * and any items in the snapshot may have been altered, moved, or removed from * the document. */ enum ResultType { /* XPath 1.0 */ ANY_TYPE = 0, NUMBER_TYPE = 1, STRING_TYPE = 2, BOOLEAN_TYPE = 3, UNORDERED_NODE_ITERATOR_TYPE = 4, ORDERED_NODE_ITERATOR_TYPE = 5, UNORDERED_NODE_SNAPSHOT_TYPE = 6, ORDERED_NODE_SNAPSHOT_TYPE = 7, ANY_UNORDERED_NODE_TYPE = 8, FIRST_ORDERED_NODE_TYPE = 9, /* XPath 2.0 */ FIRST_RESULT_TYPE = 100, ITERATOR_RESULT_TYPE = 101, SNAPSHOT_RESULT_TYPE = 102 }; //@} // ----------------------------------------------------------------------- // Virtual DOMXPathResult interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 3 */ //@{ /** * Returns the result type of this result * @return ResultType * A code representing the type of this result, as defined by the type constants. */ virtual ResultType getResultType() const = 0; /** * Returns the DOM type info of the current result node or value * (XPath 2 only). * @return typeInfo of type TypeInfo, readonly */ virtual const DOMTypeInfo *getTypeInfo() const = 0; /** * Returns true if the result has a current result and the value is a * node (XPath 2 only). This function is necessary to distinguish * between a string value and a node of type string as returned by * the getTypeInfo() function. * @return isNode of type boolean, readonly */ virtual bool isNode() const = 0; /** * Returns the boolean value of this result * @return booleanValue of type boolean * The value of this boolean result. * @exception DOMXPathException * TYPE_ERR: raised if ResultType is not BOOLEAN_TYPE (XPath 1.0) or * if current result cannot be properly converted to boolean (XPath 2.0). *
    * NO_RESULT_ERROR: raised if there is no current result in the result object (XPath 2.0). */ virtual bool getBooleanValue() const = 0; /** * Returns the integer value of this result (XPath 2 only). * @return integerValue of type int * The value of this integer result. * @exception DOMXPathException * TYPE_ERR: raised if current result cannot be properly converted to * int (XPath 2.0). *
    * NO_RESULT_ERROR: raised if there is no current result in the result object (XPath 2.0). */ virtual int getIntegerValue() const = 0; /** * Returns the number value of this result * @return numberValue * The value of this number result. If the native double type of the DOM * binding does not directly support the exact IEEE 754 result of the XPath * expression, then it is up to the definition of the binding to specify how * the XPath number is converted to the native binding number. * @exception DOMXPathException * TYPE_ERR: raised if ResultType is not NUMBER_TYPE (XPath 1.0) or * if current result cannot be properly converted to double (XPath 2.0). *
    * NO_RESULT_ERROR: raised if there is no current result in the result object (XPath 2.0). */ virtual double getNumberValue() const = 0; /** * Returns the string value of this result * @return stringValue * The value of this string result. * @exception DOMXPathException * TYPE_ERR: raised if ResultType is not STRING_TYPE (XPath 1.0) or * if current result cannot be properly converted to string (XPath 2.0). *
    * NO_RESULT_ERROR: raised if there is no current result in the result object (XPath 2.0). */ virtual const XMLCh* getStringValue() const = 0; /** * Returns the node value of this result * @return nodeValue * The value of this node result, which may be null. * @exception DOMXPathException * TYPE_ERR: raised if ResultType is not ANY_UNORDERED_NODE_TYPE, * FIRST_ORDERED_NODE_TYPE, UNORDERED_NODE_ITERATOR_TYPE, * ORDERED_NODE_ITERATOR_TYPE, UNORDERED_NODE_SNAPSHOT_TYPE, or * ORDERED_NODE_SNAPSHOT_TYPE (XPath 1.0) or if current result is * not a node (XPath 2.0). *
    * NO_RESULT_ERROR: raised if there is no current result in the result * object. */ virtual DOMNode* getNodeValue() const = 0; /** * Iterates and returns true if the current result is the next item from the * sequence or false if there are no more items. * @return boolean True if the current result is the next item from the sequence * or false if there are no more items. * @exception XPathException * TYPE_ERR: raised if ResultType is not UNORDERED_NODE_ITERATOR_TYPE or * ORDERED_NODE_ITERATOR_TYPE (XPath 1.0) or if ResultType is not * ITERATOR_RESULT_TYPE (XPath 2.0). * @exception DOMException * INVALID_STATE_ERR: The document has been mutated since the result was returned. */ virtual bool iterateNext() = 0; /** * Signifies that the iterator has become invalid. * @return invalidIteratorState * True if ResultType is UNORDERED_NODE_ITERATOR_TYPE or * ORDERED_NODE_ITERATOR_TYPE (XPath 1.0) or ITERATOR_RESULT_TYPE (XPath 2.0) * and the document has been modified since this result was returned. * @exception XPathException * TYPE_ERR: raised if ResultType is not UNORDERED_NODE_ITERATOR_TYPE or * ORDERED_NODE_ITERATOR_TYPE (XPath 1.0) or if ResultType is not * ITERATOR_RESULT_TYPE (XPath 2.0). */ virtual bool getInvalidIteratorState() const = 0; /** * Sets the current result to the indexth item in the snapshot collection. If * index is greater than or equal to the number of items in the list, this method * returns false. Unlike the iterator result, the snapshot does not become * invalid, but may not correspond to the current document if it is mutated. * @param index of type XMLSize_t - Index into the snapshot collection. * @return boolean True if the current result is the next item from the sequence * or false if there are no more items. * @exception XPathException * TYPE_ERR: raised if ResultType is not UNORDERED_NODE_SNAPSHOT_TYPE or * ORDERED_NODE_SNAPSHOT_TYPE (XPath 1.0) or if ResultType is not * SNAPSHOT_RESULT_TYPE (XPath 2.0). */ virtual bool snapshotItem(XMLSize_t index) = 0; /** * The number of items in the result snapshot. Valid values for snapshotItem * indices are 0 to snapshotLength-1 inclusive. * @return snapshotLength of type XMLSize_t * @exception XPathException * TYPE_ERR: raised if ResultType is not UNORDERED_NODE_SNAPSHOT_TYPE or * ORDERED_NODE_SNAPSHOT_TYPE (XPath 1.0) or if ResultType is not * SNAPSHOT_RESULT_TYPE (XPath 2.0). */ virtual XMLSize_t getSnapshotLength() const = 0; //@} // ----------------------------------------------------------------------- // Non-standard Extension // ----------------------------------------------------------------------- /** @name Non-standard Extension */ //@{ /** * Called to indicate that this DOMXPathResult is no longer in use * and that the implementation may relinquish any resources associated with it. * * Access to a released object will lead to unexpected result. */ virtual void release() = 0; //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMDocumentRange.hpp0000644000175000017500000000623010606722647021064 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMDocumentRange.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMDOCUMENTRANGE_HPP) #define XERCESC_INCLUDE_GUARD_DOMDOCUMENTRANGE_HPP #include XERCES_CPP_NAMESPACE_BEGIN class DOMRange; /** *

    See also the Document Object Model (DOM) Level 2 Traversal and Range Specification. * @since DOM Level 2 */ class CDOM_EXPORT DOMDocumentRange { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMDocumentRange() {}; //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented constructors and operators */ //@{ DOMDocumentRange(const DOMDocumentRange &); DOMDocumentRange & operator = (const DOMDocumentRange &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMDocumentRange() {}; //@} // ----------------------------------------------------------------------- // Virtual DOMDocumentRange interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 2 */ //@{ /** * To create the range consisting of boundary-points and offset of the * selected contents * * @return The initial state of the Range such that both the boundary-points * are positioned at the beginning of the corresponding DOMDOcument, before * any content. The range returned can only be used to select content * associated with this document, or with documentFragments and Attrs for * which this document is the ownerdocument * @since DOM Level 2 */ virtual DOMRange *createRange() = 0; //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMDocumentTraversal.hpp0000644000175000017500000001645511030714661021772 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMDocumentTraversal.hpp 671894 2008-06-26 13:29:21Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMDOCUMENTTRAVERSAL_HPP) #define XERCESC_INCLUDE_GUARD_DOMDOCUMENTTRAVERSAL_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN class DOMNode; class DOMNodeIterator; class DOMTreeWalker; /** * DOMDocumentTraversal contains methods that create * DOMNodeIterators and DOMTreeWalkers to traverse a * node and its children in document order (depth first, pre-order * traversal, which is equivalent to the order in which the start tags occur * in the text representation of the document). In DOMs which support the * Traversal feature, DOMDocumentTraversal will be implemented by * the same objects that implement the DOMDocument interface. *

    See also the Document Object Model (DOM) Level 2 Traversal and Range Specification. * @since DOM Level 2 */ class CDOM_EXPORT DOMDocumentTraversal { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMDocumentTraversal() {}; //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented constructors and operators */ //@{ DOMDocumentTraversal(const DOMDocumentTraversal &); DOMDocumentTraversal & operator = (const DOMDocumentTraversal &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMDocumentTraversal() {}; //@} // ----------------------------------------------------------------------- // Virtual DOMDocumentRange interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 2 */ //@{ /** * Creates a NodeIterator object. (DOM2) * * NodeIterators are used to step through a set of nodes, e.g. the set of nodes in a NodeList, the * document subtree governed by a particular node, the results of a query, or any other set of nodes. * The set of nodes to be iterated is determined by the implementation of the NodeIterator. DOM Level 2 * specifies a single NodeIterator implementation for document-order traversal of a document subtree. * Instances of these iterators are created by calling DOMDocumentTraversal.createNodeIterator(). * * To produce a view of the document that has entity references expanded and does not * expose the entity reference node itself, use the whatToShow flags to hide the entity * reference node and set expandEntityReferences to true when creating the iterator. To * produce a view of the document that has entity reference nodes but no entity expansion, * use the whatToShow flags to show the entity reference node and set * expandEntityReferences to false. * * @param root The root node of the DOM tree * @param whatToShow This attribute determines which node types are presented via the iterator. * @param filter The filter used to screen nodes * @param entityReferenceExpansion The value of this flag determines whether the children of entity reference nodes are * visible to the iterator. If false, they will be skipped over. * @since DOM Level 2 */ virtual DOMNodeIterator *createNodeIterator(DOMNode* root, DOMNodeFilter::ShowType whatToShow, DOMNodeFilter* filter, bool entityReferenceExpansion) = 0; /** * Creates a TreeWalker object. (DOM2) * * TreeWalker objects are used to navigate a document tree or subtree using the view of the document defined * by its whatToShow flags and any filters that are defined for the TreeWalker. Any function which performs * navigation using a TreeWalker will automatically support any view defined by a TreeWalker. * * Omitting nodes from the logical view of a subtree can result in a structure that is substantially different from * the same subtree in the complete, unfiltered document. Nodes that are siblings in the TreeWalker view may * be children of different, widely separated nodes in the original view. For instance, consider a Filter that skips * all nodes except for DOMText nodes and the root node of a document. In the logical view that results, all text * nodes will be siblings and appear as direct children of the root node, no matter how deeply nested the * structure of the original document. * * To produce a view of the document that has entity references expanded * and does not expose the entity reference node itself, use the whatToShow * flags to hide the entity reference node and set expandEntityReferences to * true when creating the TreeWalker. To produce a view of the document * that has entity reference nodes but no entity expansion, use the * whatToShow flags to show the entity reference node and set * expandEntityReferences to false * * @param root The root node of the DOM tree * @param whatToShow This attribute determines which node types are presented via the tree-walker. * @param filter The filter used to screen nodes * @param entityReferenceExpansion The value of this flag determines whether the children of entity reference nodes are * visible to the tree-walker. If false, they will be skipped over. * @since DOM Level 2 */ virtual DOMTreeWalker *createTreeWalker(DOMNode* root, DOMNodeFilter::ShowType whatToShow, DOMNodeFilter* filter, bool entityReferenceExpansion) = 0; //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMElement.hpp0000644000175000017500000005600211225152733017713 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMElement.hpp 792236 2009-07-08 17:22:35Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMELEMENT_HPP) #define XERCESC_INCLUDE_GUARD_DOMELEMENT_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN class DOMAttr; class DOMNodeList; class DOMTypeInfo; /** * By far the vast majority of objects (apart from text) that authors * encounter when traversing a document are DOMElement nodes. * * Assume the following XML document:<elementExample id="demo"> * <subelement1/> * <subelement2><subsubelement/></subelement2> * </elementExample> *

    When represented using DOM, the top node is an DOMElement node * for "elementExample", which contains two child DOMElement nodes, * one for "subelement1" and one for "subelement2". "subelement1" contains no * child nodes. *

    Elements may have attributes associated with them; since the * DOMElement interface inherits from DOMNode, the generic * DOMNode interface method getAttributes may be used * to retrieve the set of all attributes for an element. There are methods on * the DOMElement interface to retrieve either an DOMAttr * object by name or an attribute value by name. In XML, where an attribute * value may contain entity references, an DOMAttr object should be * retrieved to examine the possibly fairly complex sub-tree representing the * attribute value. On the other hand, in HTML, where all attributes have * simple string values, methods to directly access an attribute value can * safely be used as a convenience. * * @since DOM Level 1 * * It also defines the ElementTraversal helper interface defined by http://www.w3.org/TR/2008/REC-ElementTraversal-20081222/ * */ class CDOM_EXPORT DOMElement: public DOMNode { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMElement() {} DOMElement(const DOMElement &other) : DOMNode(other) {} //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented operators */ //@{ DOMElement & operator = (const DOMElement &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMElement() {}; //@} // ----------------------------------------------------------------------- // Virtual DOMElement interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 1 */ //@{ // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- /** * The name of the element. * * For example, in: <elementExample * id="demo"> ... </elementExample> , tagName has * the value "elementExample". Note that this is * case-preserving in XML, as are all of the operations of the DOM. * @since DOM Level 1 */ virtual const XMLCh * getTagName() const = 0; /** * Retrieves an attribute value by name. * * @param name The name of the attribute to retrieve. * @return The DOMAttr value as a string, or the empty string if * that attribute does not have a specified or default value. * @since DOM Level 1 */ virtual const XMLCh * getAttribute(const XMLCh *name) const = 0; /** * Retrieves an DOMAttr node by name. * * @param name The name (nodeName) of the attribute to retrieve. * @return The DOMAttr node with the specified name (nodeName) or * null if there is no such attribute. * @since DOM Level 1 */ virtual DOMAttr * getAttributeNode(const XMLCh *name) const = 0; /** * Returns a DOMNodeList of all descendant elements with a given * tag name, in the order in which they would be encountered in a preorder * traversal of the DOMElement tree. * * @param name The name of the tag to match on. The special value "*" * matches all tags. * @return A list of matching DOMElement nodes. * @since DOM Level 1 */ virtual DOMNodeList * getElementsByTagName(const XMLCh *name) const = 0; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- /** * Adds a new attribute. * * If an attribute with that name is already present * in the element, its value is changed to be that of the value parameter. * This value is a simple string, it is not parsed as it is being set. So * any markup (such as syntax to be recognized as an entity reference) is * treated as literal text, and needs to be appropriately escaped by the * implementation when it is written out. In order to assign an attribute * value that contains entity references, the user must create an * DOMAttr node plus any DOMText and * DOMEntityReference nodes, build the appropriate subtree, and * use setAttributeNode to assign it as the value of an * attribute. * @param name The name of the attribute to create or alter. * @param value Value to set in string form. * @exception DOMException * INVALID_CHARACTER_ERR: Raised if the specified name contains an * illegal character. *
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. * @since DOM Level 1 */ virtual void setAttribute(const XMLCh *name, const XMLCh *value) = 0; /** * Adds a new attribute. * * If an attribute with that name (nodeName) is already present * in the element, it is replaced by the new one. * @param newAttr The DOMAttr node to add to the attribute list. * @return If the newAttr attribute replaces an existing * attribute, the replaced * DOMAttr node is returned, otherwise null is * returned. * @exception DOMException * WRONG_DOCUMENT_ERR: Raised if newAttr was created from a * different document than the one that created the element. *
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. *
    INUSE_ATTRIBUTE_ERR: Raised if newAttr is already an * attribute of another DOMElement object. The DOM user must * explicitly clone DOMAttr nodes to re-use them in other * elements. * @since DOM Level 1 */ virtual DOMAttr * setAttributeNode(DOMAttr *newAttr) = 0; /** * Removes the specified attribute node. * If the removed DOMAttr * has a default value it is immediately replaced. The replacing attribute * has the same namespace URI and local name, as well as the original prefix, * when applicable. * * @param oldAttr The DOMAttr node to remove from the attribute * list. * @return The DOMAttr node that was removed. * @exception DOMException * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. *
    NOT_FOUND_ERR: Raised if oldAttr is not an attribute * of the element. * @since DOM Level 1 */ virtual DOMAttr * removeAttributeNode(DOMAttr *oldAttr) = 0; /** * Removes an attribute by name. * * If the removed attribute * is known to have a default value, an attribute immediately appears * containing the default value as well as the corresponding namespace URI, * local name, and prefix when applicable.
    To remove an attribute by local * name and namespace URI, use the removeAttributeNS method. * @param name The name of the attribute to remove. * @exception DOMException * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. * @since DOM Level 1 */ virtual void removeAttribute(const XMLCh *name) = 0; //@} /** @name Functions introduced in DOM Level 2. */ //@{ /** * Retrieves an attribute value by local name and namespace URI. * * @param namespaceURI The namespace URI of * the attribute to retrieve. * @param localName The local name of the * attribute to retrieve. * @return The DOMAttr value as a string, or an null if * that attribute does not have a specified or default value. * @since DOM Level 2 */ virtual const XMLCh * getAttributeNS(const XMLCh *namespaceURI, const XMLCh *localName) const = 0; /** * Adds a new attribute. If an attribute with the same * local name and namespace URI is already present on the element, its prefix * is changed to be the prefix part of the qualifiedName, and * its value is changed to be the value parameter. This value is * a simple string, it is not parsed as it is being set. So any markup (such * as syntax to be recognized as an entity reference) is treated as literal * text, and needs to be appropriately escaped by the implementation when it * is written out. In order to assign an attribute value that contains entity * references, the user must create an DOMAttr * node plus any DOMText and DOMEntityReference * nodes, build the appropriate subtree, and use * setAttributeNodeNS or setAttributeNode to assign * it as the value of an attribute. * * @param namespaceURI The namespace URI of * the attribute to create or alter. * @param qualifiedName The qualified name of the * attribute to create or alter. * @param value The value to set in string form. * @exception DOMException * INVALID_CHARACTER_ERR: Raised if the specified qualified name contains an * illegal character. *
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. *
    * NAMESPACE_ERR: Raised if the qualifiedName is * malformed, if the qualifiedName has a prefix and the * namespaceURI is null or an empty string, * if the qualifiedName has a prefix that is "xml" and the * namespaceURI is different from * "http://www.w3.org/XML/1998/namespace", if the * qualifiedName has a prefix that is "xmlns" and the * namespaceURI is different from * "http://www.w3.org/2000/xmlns/", or if the * qualifiedName is "xmlns" and the * namespaceURI is different from * "http://www.w3.org/2000/xmlns/". * @since DOM Level 2 */ virtual void setAttributeNS(const XMLCh *namespaceURI, const XMLCh *qualifiedName, const XMLCh *value) = 0; /** * Removes an attribute by local name and namespace URI. If the * removed attribute has a default value it is immediately replaced. * The replacing attribute has the same namespace URI and local name, as well as * the original prefix. * * @param namespaceURI The namespace URI of * the attribute to remove. * @param localName The local name of the * attribute to remove. * @exception DOMException * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. * @since DOM Level 2 */ virtual void removeAttributeNS(const XMLCh *namespaceURI, const XMLCh *localName) = 0; /** * Retrieves an DOMAttr node by local name and namespace URI. * * @param namespaceURI The namespace URI of * the attribute to retrieve. * @param localName The local name of the * attribute to retrieve. * @return The DOMAttr node with the specified attribute local * name and namespace URI or null if there is no such attribute. * @since DOM Level 2 */ virtual DOMAttr * getAttributeNodeNS(const XMLCh *namespaceURI, const XMLCh *localName) const = 0; /** * Adds a new attribute. * * If an attribute with that local name and namespace URI is already present * in the element, it is replaced by the new one. * * @param newAttr The DOMAttr node to add to the attribute list. * @return If the newAttr attribute replaces an existing * attribute with the same local name and namespace URI, * the replaced DOMAttr node is * returned, otherwise null is returned. * @exception DOMException * WRONG_DOCUMENT_ERR: Raised if newAttr was created from a * different document than the one that created the element. *
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. *
    INUSE_ATTRIBUTE_ERR: Raised if newAttr is already an * attribute of another DOMElement object. The DOM user must * explicitly clone DOMAttr nodes to re-use them in other * elements. * @since DOM Level 2 */ virtual DOMAttr * setAttributeNodeNS(DOMAttr *newAttr) = 0; /** * Returns a DOMNodeList of all the DOMElements * with a given local name and namespace URI in the order in which they * would be encountered in a preorder traversal of the * DOMDocument tree, starting from this node. * * @param namespaceURI The namespace URI of * the elements to match on. The special value "*" matches all * namespaces. * @param localName The local name of the * elements to match on. The special value "*" matches all local names. * @return A new DOMNodeList object containing all the matched * DOMElements. * @since DOM Level 2 */ virtual DOMNodeList * getElementsByTagNameNS(const XMLCh *namespaceURI, const XMLCh *localName) const = 0; /** * Returns true when an attribute with a given name is * specified on this element or has a default value, false * otherwise. * @param name The name of the attribute to look for. * @return true if an attribute with the given name is * specified on this element or has a default value, false * otherwise. * @since DOM Level 2 */ virtual bool hasAttribute(const XMLCh *name) const = 0; /** * Returns true when an attribute with a given local name and * namespace URI is specified on this element or has a default value, * false otherwise. HTML-only DOM implementations do not * need to implement this method. * @param namespaceURI The namespace URI of the attribute to look for. * @param localName The local name of the attribute to look for. * @return true if an attribute with the given local name * and namespace URI is specified or has a default value on this * element, false otherwise. * @since DOM Level 2 */ virtual bool hasAttributeNS(const XMLCh *namespaceURI, const XMLCh *localName) const = 0; //@} /** @name Functions introduced in DOM Level 3 */ //@{ /** * If the parameter isId is true, this method declares the specified * attribute to be a user-determined ID attribute. * This affects the value of DOMAttr::isId and the behavior of * DOMDocument::getElementById, but does not change any schema that * may be in use, in particular this does not affect the DOMAttr::getSchemaTypeInfo * of the specified DOMAttr node. Use the value false for the parameter isId * to undeclare an attribute for being a user-determined ID attribute. * To specify an DOMAttr by local name and namespace URI, use the * setIdAttributeNS method. * * @param name The name of the DOMAttr. * @param isId Whether the attribute is of type ID. * @exception DOMException * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
    * NOT_FOUND_ERR: Raised if the specified node is not an DOMAttr * of this element. * * @since DOM Level 3 */ virtual void setIdAttribute(const XMLCh* name, bool isId) = 0; /** * If the parameter isId is true, this method declares the specified * attribute to be a user-determined ID attribute. * This affects the value of DOMAttr::isId and the behavior of * DOMDocument::getElementById, but does not change any schema that * may be in use, in particular this does not affect the DOMAttr::getSchemaTypeInfo * of the specified DOMAttr node. Use the value false for the parameter isId * to undeclare an attribute for being a user-determined ID attribute. * * @param namespaceURI The namespace URI of the DOMAttr. * @param localName The local name of the DOMAttr. * @param isId Whether the attribute is of type ID. * @exception DOMException * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
    * NOT_FOUND_ERR: Raised if the specified node is not an DOMAttr of this element. * * @since DOM Level 3 */ virtual void setIdAttributeNS(const XMLCh* namespaceURI, const XMLCh* localName, bool isId) = 0; /** * If the parameter isId is true, this method declares the specified * attribute to be a user-determined ID attribute. * This affects the value of DOMAttr::isId and the behavior of * DOMDocument::getElementById, but does not change any schema that * may be in use, in particular this does not affect the DOMAttr::getSchemaTypeInfo * of the specified DOMAttr node. Use the value false for the parameter isId * to undeclare an attribute for being a user-determined ID attribute. * * @param idAttr The DOMAttr node. * @param isId Whether the attribute is of type ID. * @exception DOMException * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly.
    * NOT_FOUND_ERR: Raised if the specified node is not an DOMAttr of this element. * * @since DOM Level 3 */ virtual void setIdAttributeNode(const DOMAttr *idAttr, bool isId) = 0; /** * Returns the type information associated with this element. * * @return the DOMTypeInfo associated with this element * @since DOM level 3 */ virtual const DOMTypeInfo* getSchemaTypeInfo() const = 0; //@} // ----------------------------------------------------------------------- // DOMElementTraversal interface // ----------------------------------------------------------------------- /** @name Functions introduced in the ElementTraversal specification (http://www.w3.org/TR/2008/REC-ElementTraversal-20081222/)*/ //@{ // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- /** * The first child of type DOMElement. * * @return The DOMElement object that is the first element node * among the child nodes of this node, or null if there is none. */ virtual DOMElement * getFirstElementChild() const = 0; /** * The last child of type DOMElement. * * @return The DOMElement object that is the last element node * among the child nodes of this node, or null if there is none. */ virtual DOMElement * getLastElementChild() const = 0; /** * The previous sibling node of type DOMElement. * * @return The DOMElement object that is the previous sibling element node * in document order, or null if there is none. */ virtual DOMElement * getPreviousElementSibling() const = 0; /** * The next sibling node of type DOMElement. * * @return The DOMElement object that is the next sibling element node * in document order, or null if there is none. */ virtual DOMElement * getNextElementSibling() const = 0; /** * The number of child nodes that are of type DOMElement. * * Note: the count is computed every time this function is invoked * * @return The number of DOMElement objects that are direct children * of this object (nested elements are not counted), or 0 if there is none. * */ virtual XMLSize_t getChildElementCount() const = 0; //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMLSOutput.hpp0000644000175000017500000001302210606722647020065 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMLSOutput.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMLSOUTPUT_HPP) #define XERCESC_INCLUDE_GUARD_DOMLSOUTPUT_HPP #include XERCES_CPP_NAMESPACE_BEGIN class XMLFormatTarget; /** * This interface represents an output destination for data. * * @see XMLFormatTarget * @since DOM Level 3 */ class CDOM_EXPORT DOMLSOutput { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMLSOutput() {}; //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented constructors and operators */ //@{ DOMLSOutput(const DOMLSOutput &); DOMLSOutput & operator = (const DOMLSOutput &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMLSOutput() {}; //@} // ----------------------------------------------------------------------- // Virtual DOMLSOutput interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 3 */ //@{ // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- /** * Returns the byte stream for this input source. * * @see InputSource */ virtual XMLFormatTarget* getByteStream() const = 0; /** * An input source can be set to force the parser to assume a particular * encoding for the data that input source reprsents, via the setEncoding() * method. This method returns name of the encoding that is to be forced. * If the encoding has never been forced, it returns a null pointer. * * @return The forced encoding, or null if none was supplied. * @see #setEncoding * @since DOM Level 3 */ virtual const XMLCh* getEncoding() const = 0; /** * Get the system identifier for this input source. * *

    If the system ID is a URL, it will be fully resolved.

    * * @return The system identifier. * @see #setSystemId * @since DOM Level 3 */ virtual const XMLCh* getSystemId() const = 0; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- /** * Sets the byte stream for this input source. * * @see BinInputStream */ virtual void setByteStream(XMLFormatTarget* stream) = 0; /** * Set the encoding which will be required for use with the XML text read * via a stream opened by this input source. * *

    This is usually not set, allowing the encoding to be sensed in the * usual XML way. However, in some cases, the encoding in the file is known * to be incorrect because of intermediate transcoding, for instance * encapsulation within a MIME document. * * @param encodingStr The name of the encoding to force. * @since DOM Level 3 */ virtual void setEncoding(const XMLCh* const encodingStr) = 0; /** * Set the system identifier for this input source. * *

    The system id is always required. The public id may be used to map * to another system id, but the system id must always be present as a fall * back.

    * *

    If the system ID is a URL, it must be fully resolved.

    * * @param systemId The system identifier as a string. * @see #getSystemId * @since DOM Level 3 */ virtual void setSystemId(const XMLCh* const systemId) = 0; //@} // ----------------------------------------------------------------------- // Non-standard Extension // ----------------------------------------------------------------------- /** @name Non-standard Extension */ //@{ /** * Called to indicate that this DOMLSOutput is no longer in use * and that the implementation may relinquish any resources associated with it. * * Access to a released object will lead to unexpected result. */ virtual void release() = 0; //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMEntity.hpp0000644000175000017500000001512510606722647017610 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMEntity.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMENTITY_HPP) #define XERCESC_INCLUDE_GUARD_DOMENTITY_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN /** * This interface represents an entity, either parsed or unparsed, in an XML * document. Note that this models the entity itself not the entity * declaration. DOMEntity declaration modeling has been left for a * later Level of the DOM specification. *

    The nodeName attribute that is inherited from * DOMNode contains the name of the entity. *

    An XML processor may choose to completely expand entities before the * structure model is passed to the DOM; in this case there will be no * DOMEntityReference nodes in the document tree. *

    XML does not mandate that a non-validating XML processor read and * process entity declarations made in the external subset or declared in * external parameter entities. This means that parsed entities declared in * the external subset need not be expanded by some classes of applications, * and that the replacement value of the entity may not be available. When * the replacement value is available, the corresponding DOMEntity * node's child list represents the structure of that replacement text. * Otherwise, the child list is empty. *

    The DOM Level 2 does not support editing DOMEntity nodes; if a * user wants to make changes to the contents of an DOMEntity, * every related DOMEntityReference node has to be replaced in the * structure model by a clone of the DOMEntity's contents, and * then the desired changes must be made to each of those clones instead. * DOMEntity nodes and all their descendants are readonly. *

    An DOMEntity node does not have any parent.If the entity * contains an unbound namespace prefix, the namespaceURI of * the corresponding node in the DOMEntity node subtree is * null. The same is true for DOMEntityReference * nodes that refer to this entity, when they are created using the * createEntityReference method of the DOMDocument * interface. The DOM Level 2 does not support any mechanism to resolve * namespace prefixes. *

    See also the Document Object Model (DOM) Level 2 Core Specification. * * @since DOM Level 1 */ class CDOM_EXPORT DOMEntity: public DOMNode { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMEntity() {} DOMEntity(const DOMEntity &other) : DOMNode(other) {} //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented operators */ //@{ DOMEntity & operator = (const DOMEntity &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMEntity() {}; //@} // ----------------------------------------------------------------------- // Virtual DOMEntity interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 1 */ //@{ // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- /** * The public identifier associated with the entity, if specified. * * If the public identifier was not specified, this is null. * * @since DOM Level 1 */ virtual const XMLCh * getPublicId() const = 0; /** * The system identifier associated with the entity, if specified. * * If the system identifier was not specified, this is null. * * @since DOM Level 1 */ virtual const XMLCh * getSystemId() const = 0; /** * For unparsed entities, the name of the notation for the entity. * * For parsed entities, this is null. * * @since DOM Level 1 */ virtual const XMLCh * getNotationName() const = 0; //@} /** @name Functions introduced in DOM Level 3. */ //@{ /** * An attribute specifying the encoding used for this entity at the time of parsing, * when it is an external parsed entity. This is null if it an entity * from the internal subset or if it is not known. * * @since DOM Level 3 */ virtual const XMLCh* getInputEncoding() const = 0; /** * An attribute specifying, as part of the text declaration, the encoding * of this entity, when it is an external parsed entity. This is * null otherwise. * * @since DOM Level 3 */ virtual const XMLCh* getXmlEncoding() const = 0; /** * An attribute specifying, as part of the text declaration, the version * number of this entity, when it is an external parsed entity. This is * null otherwise. * * @since DOM Level 3 */ virtual const XMLCh* getXmlVersion() const = 0; //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMComment.hpp0000644000175000017500000000502110606722647017730 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMComment.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMCOMMENT_HPP) #define XERCESC_INCLUDE_GUARD_DOMCOMMENT_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN /** * This interface inherits from CharacterData and represents the * content of a comment, i.e., all the characters between the starting ' * <!--' and ending '-->'. *

    See also the Document Object Model (DOM) Level 2 Core Specification. * * @since DOM Level 1 */ class CDOM_EXPORT DOMComment: public DOMCharacterData { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMComment() {}; //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented constructors and operators */ //@{ DOMComment(const DOMComment &); DOMComment & operator = (const DOMComment &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMComment() {}; //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMEntityReference.hpp0000644000175000017500000000737010606722647021432 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMEntityReference.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMENTITYREFERENCE_HPP) #define XERCESC_INCLUDE_GUARD_DOMENTITYREFERENCE_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN /** * DOMEntityReference objects may be inserted into the structure * model when an entity reference is in the source document, or when the * user wishes to insert an entity reference. Note that character references * and references to predefined entities are considered to be expanded by * the HTML or XML processor so that characters are represented by their * Unicode equivalent rather than by an entity reference. Moreover, the XML * processor may completely expand references to entities while building the * structure model, instead of providing DOMEntityReference * objects. If it does provide such objects, then for a given * DOMEntityReference node, it may be that there is no * DOMEntity node representing the referenced entity. If such an * DOMEntity exists, then the subtree of the * DOMEntityReference node is in general a copy of the * DOMEntity node subtree. However, this may not be true when an * entity contains an unbound namespace prefix. In such a case, because the * namespace prefix resolution depends on where the entity reference is, the * descendants of the DOMEntityReference node may be bound to * different namespace URIs. *

    As for DOMEntity nodes, DOMEntityReference nodes and * all their descendants are readonly. *

    See also the Document Object Model (DOM) Level 2 Core Specification. * * @since DOM Level 1 */ class CDOM_EXPORT DOMEntityReference: public DOMNode { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMEntityReference() {} DOMEntityReference(const DOMEntityReference &other) : DOMNode(other) {} //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented operators */ //@{ DOMEntityReference & operator = (const DOMEntityReference &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMEntityReference() {}; //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMException.cpp0000644000175000017500000000474311030714661020256 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMException.cpp 671894 2008-06-26 13:29:21Z borisk $ */ #include #include #include #include #include #include "impl/DOMImplementationImpl.hpp" #include "DOMException.hpp" XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Destructor and Constructor // --------------------------------------------------------------------------- DOMException::~DOMException() { if (msg && fMsgOwned) fMemoryManager->deallocate((void*)msg); } DOMException::DOMException() :code(0) ,msg(0) ,fMemoryManager(0) ,fMsgOwned(false) { } DOMException::DOMException(short exCode, short messageCode, MemoryManager* const memoryManager) :code(exCode) ,fMemoryManager(0) ,fMsgOwned(true) { if (memoryManager) fMemoryManager = memoryManager->getExceptionMemoryManager(); const XMLSize_t msgSize = 2047; XMLCh errText[msgSize + 1]; // load the text if(messageCode==0) messageCode=XMLDOMMsg::DOMEXCEPTION_ERRX+exCode; msg = XMLString::replicate ( DOMImplementationImpl::getMsgLoader4DOM()->loadMsg(messageCode, errText, msgSize) ? errText : XMLUni::fgDefErrMsg , fMemoryManager ); } DOMException::DOMException(const DOMException &other) :code(other.code) ,msg(0) ,fMemoryManager(other.fMemoryManager) ,fMsgOwned(other.fMsgOwned) { if (other.msg) msg = other.fMsgOwned? XMLString::replicate(other.msg, other.fMemoryManager) : other.msg; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/DOMNodeFilter.hpp0000644000175000017500000002152211360344373020357 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMNodeFilter.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMNODEFILTER_HPP) #define XERCESC_INCLUDE_GUARD_DOMNODEFILTER_HPP #include XERCES_CPP_NAMESPACE_BEGIN /** * Filters are objects that know how to "filter out" nodes. If a * DOMNodeIterator or DOMTreeWalker is given a * DOMNodeFilter, it applies the filter before it returns the next * node. If the filter says to accept the node, the traversal logic returns * it; otherwise, traversal looks for the next node and pretends that the * node that was rejected was not there. *

    The DOM does not provide any filters. DOMNodeFilter is just an * interface that users can implement to provide their own filters. *

    DOMNodeFilters do not need to know how to traverse from node * to node, nor do they need to know anything about the data structure that * is being traversed. This makes it very easy to write filters, since the * only thing they have to know how to do is evaluate a single node. One * filter may be used with a number of different kinds of traversals, * encouraging code reuse. *

    See also the Document Object Model (DOM) Level 2 Traversal and Range Specification. * @since DOM Level 2 */ class CDOM_EXPORT DOMNodeFilter { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMNodeFilter() {}; //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented constructors and operators */ //@{ DOMNodeFilter(const DOMNodeFilter &); DOMNodeFilter & operator = (const DOMNodeFilter &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMNodeFilter() {}; //@} // ----------------------------------------------------------------------- // Class Types // ----------------------------------------------------------------------- /** @name Public Constants */ //@{ /** * Constants returned by acceptNode. * *

    FILTER_ACCEPT: * Accept the node. Navigation methods defined for * DOMNodeIterator or DOMTreeWalker will return this * node.

    * *

    FILTER_REJECT: * Reject the node. Navigation methods defined for * DOMNodeIterator or DOMTreeWalker will not return * this node. For DOMTreeWalker, the children of this node * will also be rejected. DOMNodeIterators treat this as a * synonym for FILTER_SKIP.

    * *

    FILTER_SKIP: * Skip this single node. Navigation methods defined for * DOMNodeIterator or DOMTreeWalker will not return * this node. For both DOMNodeIterator and * DOMTreeWalker, the children of this node will still be * considered.

    * * @since DOM Level 2 */ enum FilterAction {FILTER_ACCEPT = 1, FILTER_REJECT = 2, FILTER_SKIP = 3}; /** * Constants for whatToShow * *

    SHOW_ALL: * Show all DOMNode(s).

    * *

    SHOW_ELEMENT: * Show DOMElement nodes.

    * *

    SHOW_ATTRIBUTE: * Show DOMAttr nodes. This is meaningful only when creating an * DOMNodeIterator or DOMTreeWalker with an * attribute node as its root; in this case, it means that * the attribute node will appear in the first position of the iteration * or traversal. Since attributes are never children of other nodes, * they do not appear when traversing over the document tree.

    * *

    SHOW_TEXT: * Show DOMText nodes.

    * *

    SHOW_CDATA_SECTION: * Show DOMCDATASection nodes.

    * *

    SHOW_ENTITY_REFERENCE: * Show DOMEntityReference nodes.

    * *

    SHOW_ENTITY: * Show DOMEntity nodes. This is meaningful only when creating * an DOMNodeIterator or DOMTreeWalker with an * DOMEntity node as its root; in this case, it * means that the DOMEntity node will appear in the first * position of the traversal. Since entities are not part of the * document tree, they do not appear when traversing over the document * tree.

    * *

    SHOW_PROCESSING_INSTRUCTION: * Show DOMProcessingInstruction nodes.

    * *

    SHOW_COMMENT: * Show DOMComment nodes.

    * *

    SHOW_DOCUMENT: * Show DOMDocument nodes.

    * *

    SHOW_DOCUMENT_TYPE: * Show DOMDocumentType nodes.

    * *

    SHOW_DOCUMENT_FRAGMENT: * Show DOMDocumentFragment nodes.

    * *

    SHOW_NOTATION: * Show DOMNotation nodes. This is meaningful only when creating * an DOMNodeIterator or DOMTreeWalker with a * DOMNotation node as its root; in this case, it * means that the DOMNotation node will appear in the first * position of the traversal. Since notations are not part of the * document tree, they do not appear when traversing over the document * tree.

    * * @since DOM Level 2 */ enum ShowTypeMasks { SHOW_ALL = 0x0000FFFF, SHOW_ELEMENT = 0x00000001, SHOW_ATTRIBUTE = 0x00000002, SHOW_TEXT = 0x00000004, SHOW_CDATA_SECTION = 0x00000008, SHOW_ENTITY_REFERENCE = 0x00000010, SHOW_ENTITY = 0x00000020, SHOW_PROCESSING_INSTRUCTION = 0x00000040, SHOW_COMMENT = 0x00000080, SHOW_DOCUMENT = 0x00000100, SHOW_DOCUMENT_TYPE = 0x00000200, SHOW_DOCUMENT_FRAGMENT = 0x00000400, SHOW_NOTATION = 0x00000800 }; typedef unsigned long ShowType; //@} // ----------------------------------------------------------------------- // Virtual DOMNodeFilter interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 2 */ //@{ /** * Test whether a specified node is visible in the logical view of a * DOMTreeWalker or DOMNodeIterator. This function * will be called by the implementation of DOMTreeWalker and * DOMNodeIterator; it is not normally called directly from * user code. (Though you could do so if you wanted to use the same * filter to guide your own application logic.) * @param node The node to check to see if it passes the filter or not. * @return A constant to determine whether the node is accepted, * rejected, or skipped, as defined above. * @since DOM Level 2 */ virtual FilterAction acceptNode (const DOMNode* node) const =0; //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMLSResourceResolver.hpp0000644000175000017500000001461510606722647022107 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMLSResourceResolver.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMLSRESOURCERESOLVER_HPP) #define XERCESC_INCLUDE_GUARD_DOMLSRESOURCERESOLVER_HPP #include XERCES_CPP_NAMESPACE_BEGIN class DOMLSInput; /** * DOMLSResourceResolver provides a way for applications to redirect references * to external entities. * *

    Applications needing to implement customized handling for external * entities must implement this interface and register their implementation * by setting the entityResolver attribute of the DOMLSParser.

    * *

    The DOMLSParser will then allow the application to intercept any * external entities (including the external DTD subset and external parameter * entities) before including them.

    * *

    Many DOM applications will not need to implement this interface, but it * will be especially useful for applications that build XML documents from * databases or other specialized input sources, or for applications that use * URNs.

    * * @see DOMLSParser#getDomConfig * @see DOMLSInput#DOMLSInput * @since DOM Level 3 */ class CDOM_EXPORT DOMLSResourceResolver { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMLSResourceResolver() {}; //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented constructors and operators */ //@{ DOMLSResourceResolver(const DOMLSResourceResolver &); DOMLSResourceResolver & operator = (const DOMLSResourceResolver &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMLSResourceResolver() {}; //@} // ----------------------------------------------------------------------- // Virtual DOMLSResourceResolver interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 3 */ //@{ /** * Allow the application to resolve external resources. * * The DOMLSParser will call this method before opening any external resource, * including the external DTD subset, external entities referenced within the DTD, and * external entities referenced within the document element (however, the top-level * document entity is not passed to this method). The application may then request that * the DOMLSParser resolve the external resource itself, that it use an * alternative URI, or that it use an entirely different input source. * * Application writers can use this method to redirect external system identifiers to * secure and/or local URI, to look up public identifiers in a catalogue, or to read * an entity from a database or other input source (including, for example, a dialog box). * * The returned DOMLSInput is owned by the DOMLSParser which is * responsible to clean up the memory. * * @param resourceType The type of the resource being resolved. For XML [XML 1.0] resources * (i.e. entities), applications must use the value "http://www.w3.org/TR/REC-xml". * For XML Schema [XML Schema Part 1], applications must use the value * "http://www.w3.org/2001/XMLSchema". Other types of resources are outside * the scope of this specification and therefore should recommend an absolute * URI in order to use this method. * @param namespaceUri The namespace of the resource being resolved, e.g. the target namespace * of the XML Schema [XML Schema Part 1] when resolving XML Schema resources. * @param publicId The public identifier of the external entity being referenced, or null * if no public identifier was supplied or if the resource is not an entity. * @param systemId The system identifier, a URI reference [IETF RFC 2396], of the external * resource being referenced, or null if no system identifier was supplied. * @param baseURI The absolute base URI of the resource being parsed, or null if * there is no base URI. * @return A DOMLSInput object describing the new input source, * or null to request that the parser open a regular * URI connection to the resource. * The returned DOMLSInput is owned by the DOMLSParser which is * responsible to clean up the memory. * @see DOMLSInput#DOMLSInput * @since DOM Level 3 */ virtual DOMLSInput* resolveResource( const XMLCh* const resourceType , const XMLCh* const namespaceUri , const XMLCh* const publicId , const XMLCh* const systemId , const XMLCh* const baseURI) = 0; //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMLSException.hpp0000644000175000017500000001012311030714661020507 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMLSException.hpp 671894 2008-06-26 13:29:21Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMLSEXCEPTION_HPP) #define XERCESC_INCLUDE_GUARD_DOMLSEXCEPTION_HPP #include XERCES_CPP_NAMESPACE_BEGIN /** * Parser or write operations may throw an LSException if the processing is stopped. * The processing can be stopped due to a DOMError with a severity of * DOMError::DOM_SEVERITY_FATAL_ERROR or a non recovered DOMError::DOM_SEVERITY_ERROR, * or if DOMErrorHandler::handleError() returned false. *

    Note: As suggested in the definition of the constants in the DOMError * interface, a DOM implementation may choose to continue after a fatal error, but the * resulting DOM tree is then implementation dependent. *

    See also the * Document Object Model (DOM) Level 3 Load and Save Specification. * @since DOM Level 3 */ class MemoryManager; class CDOM_EXPORT DOMLSException : public DOMException { public: // ----------------------------------------------------------------------- // Class Types // ----------------------------------------------------------------------- /** @name Public Contants */ //@{ /** * ExceptionCode * *

    PARSE_ERR: * If an attempt was made to load a document, or an XML Fragment, using DOMLSParser * and the processing has been stopped.

    * *

    SERIALIZE_ERR: * If an attempt was made to serialize a Node using LSSerializer and the processing * has been stopped.

    * * @since DOM Level 3 */ enum LSExceptionCode { PARSE_ERR = 81, SERIALIZE_ERR = 82 }; //@} // ----------------------------------------------------------------------- // Constructors // ----------------------------------------------------------------------- /** @name Constructors */ //@{ /** * Default constructor for DOMLSException. * */ DOMLSException(); /** * Constructor which takes an error code and a message. * * @param code The error code which indicates the exception * @param messageCode The string containing the error message * @param memoryManager The memory manager used to (de)allocate memory */ DOMLSException(short code, short messageCode, MemoryManager* const memoryManager); /** * Copy constructor. * * @param other The object to be copied. */ DOMLSException(const DOMLSException &other); //@} // ----------------------------------------------------------------------- // Destructors // ----------------------------------------------------------------------- /** @name Destructor. */ //@{ /** * Destructor for DOMLSException. * */ virtual ~DOMLSException(); //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DOMLSException & operator = (const DOMLSException &); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMErrorHandler.hpp0000644000175000017500000000726111360344373020717 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMErrorHandler.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMERRORHANDLER_HPP) #define XERCESC_INCLUDE_GUARD_DOMERRORHANDLER_HPP #include XERCES_CPP_NAMESPACE_BEGIN class DOMError; /** * Basic interface for DOM error handlers. * *

    DOMErrorHandler is a callback interface that the DOM implementation * can call when reporting errors that happens while processing XML data, or * when doing some other processing (e.g. validating a document).

    * *

    The application that is using the DOM implementation is expected to * implement this interface.

    * * @see DOMLSParser#getDomConfig * @since DOM Level 3 */ class CDOM_EXPORT DOMErrorHandler { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMErrorHandler() {}; //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented constructors and operators */ //@{ DOMErrorHandler(const DOMErrorHandler &); DOMErrorHandler & operator = (const DOMErrorHandler &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMErrorHandler() {}; //@} // ----------------------------------------------------------------------- // Virtual DOMErrorHandler interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 3 */ //@{ /** * This method is called on the error handler when an error occurs. * If an exception is thrown from this method, it is considered to be equivalent of returning true. * * @param domError The error object that describes the error, this object * may be reused by the DOM implementation across multiple * calls to the handleError method. * @return If the handleError method returns true the DOM * implementation should continue as if the error didn't happen * when possible, if the method returns false then the * DOM implementation should stop the current processing when * possible. * * @since DOM Level 3 */ virtual bool handleError(const DOMError& domError) = 0; //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMPSVITypeInfo.hpp0000644000175000017500000000776611360344373020601 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(XERCESC_INCLUDE_GUARD_DOMPSVITYPEINFO_HPP) #define XERCESC_INCLUDE_GUARD_DOMPSVITYPEINFO_HPP //------------------------------------------------------------------------------------ // Includes //------------------------------------------------------------------------------------ #include XERCES_CPP_NAMESPACE_BEGIN /** * The DOMPSVITypeInfo interface represent the PSVI info used by * DOMElement or DOMAttr nodes, specified in the * schemas associated with the document. */ class CDOM_EXPORT DOMPSVITypeInfo { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMPSVITypeInfo() {}; //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented constructors and operators */ //@{ DOMPSVITypeInfo(const DOMPSVITypeInfo &); DOMPSVITypeInfo & operator = (const DOMPSVITypeInfo &); //@} public: enum PSVIProperty { PSVI_Validity , PSVI_Validation_Attempted , PSVI_Type_Definition_Type , PSVI_Type_Definition_Name , PSVI_Type_Definition_Namespace , PSVI_Type_Definition_Anonymous , PSVI_Nil , PSVI_Member_Type_Definition_Name , PSVI_Member_Type_Definition_Namespace , PSVI_Member_Type_Definition_Anonymous , PSVI_Schema_Default , PSVI_Schema_Normalized_Value , PSVI_Schema_Specified }; // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMPSVITypeInfo() {}; //@} //@{ // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- /** * Returns the string value of the specified PSVI property associated to a * DOMElement or DOMAttr, or null if not available. * * * @return the string value of the specified PSVI property associated to a * DOMElement or DOMAttr, or null if not available. */ virtual const XMLCh* getStringProperty(PSVIProperty prop) const = 0; /** * Returns the numeric value of the specified PSVI property associated to a * DOMElement or DOMAttr, or null if not available. * * * @return the numeric value of the specified PSVI property associated to a * DOMElement or DOMAttr, or null if not available. */ virtual int getNumericProperty(PSVIProperty prop) const = 0; //@} }; XERCES_CPP_NAMESPACE_END #endif /** * End of file DOMPSVITypeInfo.hpp */ xerces-c-3.1.1/src/xercesc/dom/DOMImplementation.hpp0000644000175000017500000002543211360344373021315 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMImplementation.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATION_HPP) #define XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATION_HPP #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN class DOMDocument; class DOMDocumentType; /** * The DOMImplementation interface provides a number of methods * for performing operations that are independent of any particular instance * of the document object model. */ class CDOM_EXPORT DOMImplementation : public DOMImplementationLS { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMImplementation() {}; // no plain constructor //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented constructors and operators */ //@{ DOMImplementation(const DOMImplementation &); // no copy constructor. DOMImplementation & operator = (const DOMImplementation &); // No Assignment //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMImplementation() {}; //@} // ----------------------------------------------------------------------- // Virtual DOMImplementation interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 1 */ //@{ /** * Test if the DOM implementation implements a specific feature. * @param feature The name of the feature to test (case-insensitive). The * values used by DOM features are defined throughout the DOM Level 2 * specifications and listed in the section. The name must be an XML * name. To avoid possible conflicts, as a convention, names referring * to features defined outside the DOM specification should be made * unique. * @param version This is the version number of the feature to test. In * Level 2, the string can be either "2.0" or "1.0". If the version is * not specified, supporting any version of the feature causes the * method to return true. * @return true if the feature is implemented in the * specified version, false otherwise. * @since DOM Level 1 */ virtual bool hasFeature(const XMLCh *feature, const XMLCh *version) const = 0; //@} // ----------------------------------------------------------------------- // Functions introduced in DOM Level 2 // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 2 */ //@{ /** * Creates an empty DOMDocumentType node. Entity declarations * and notations are not made available. Entity reference expansions and * default attribute additions do not occur. It is expected that a * future version of the DOM will provide a way for populating a * DOMDocumentType. * @param qualifiedName The qualified name of the document type to be * created. * @param publicId The external subset public identifier. * @param systemId The external subset system identifier. * @return A new DOMDocumentType node with * ownerDocument set to null. * @exception DOMException * INVALID_CHARACTER_ERR: Raised if the specified qualified name * contains an illegal character. *
    NAMESPACE_ERR: Raised if the qualifiedName is * malformed. *
    NOT_SUPPORTED_ERR: May be raised by DOM implementations which do * not support the "XML" feature, if they choose not to * support this method. Other features introduced in the future, by * the DOM WG or in extensions defined by other groups, may also * demand support for this method; please consult the definition of * the feature to see if it requires this method. * @since DOM Level 2 */ virtual DOMDocumentType *createDocumentType(const XMLCh *qualifiedName, const XMLCh *publicId, const XMLCh *systemId) = 0; /** * Creates a DOMDocument object of the specified type with its document * element. * @param namespaceURI The namespace URI of the document element to * create. * @param qualifiedName The qualified name of the document element to be * created. * @param doctype The type of document to be created or null. * When doctype is not null, its * ownerDocument attribute is set to the document * being created. * @param manager Pointer to the memory manager to be used to * allocate objects. * @return A new DOMDocument object. * @exception DOMException * INVALID_CHARACTER_ERR: Raised if the specified qualified name * contains an illegal character. *
    NAMESPACE_ERR: Raised if the qualifiedName is * malformed, if the qualifiedName has a prefix and the * namespaceURI is null, or if the * qualifiedName has a prefix that is "xml" and the * namespaceURI is different from " * http://www.w3.org/XML/1998/namespace" , or if the DOM * implementation does not support the "XML" feature but * a non-null namespace URI was provided, since namespaces were * defined by XML. *
    WRONG_DOCUMENT_ERR: Raised if doctype has already * been used with a different document or was created from a different * implementation. *
    NOT_SUPPORTED_ERR: May be raised by DOM implementations which do * not support the "XML" feature, if they choose not to support this * method. Other features introduced in the future, by the DOM WG or * in extensions defined by other groups, may also demand support for * this method; please consult the definition of the feature to see if * it requires this method. * @since DOM Level 2 */ virtual DOMDocument *createDocument(const XMLCh *namespaceURI, const XMLCh *qualifiedName, DOMDocumentType *doctype, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0; //@} // ----------------------------------------------------------------------- // Functions introduced in DOM Level 3 // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 3 */ //@{ /** * This method returns a specialized object which implements the specialized APIs * of the specified feature and version, as specified in DOM Features. * This method also allow the implementation to provide specialized objects which * do not support the DOMImplementation interface. * * @param feature The name of the feature requested (case-insensitive). * Note that any plus sign "+" prepended to the name of the feature will * be ignored since it is not significant in the context of this method. * @param version This is the version number of the feature to test. * @return Returns an object which implements the specialized APIs of the specified * feature and version, if any, or null if there is no object which implements * interfaces associated with that feature. * @since DOM Level 3 */ virtual void* getFeature(const XMLCh* feature, const XMLCh* version) const = 0; //@} // ----------------------------------------------------------------------- // Non-standard extension // ----------------------------------------------------------------------- /** @name Non-standard extension */ //@{ /** * Non-standard extension * * Create a completely empty document that has neither a root element or a doctype node. */ virtual DOMDocument *createDocument(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager) = 0; /** * Non-standard extension * * Factory method for getting a DOMImplementation object. * The DOM implementation retains ownership of the returned object. * Application code should NOT delete it. */ static DOMImplementation *getImplementation(); /** * Non-standard extension * * Load the default error text message for DOMException. * @param msgToLoad The DOM ExceptionCode id to be processed * @param toFill The buffer that will hold the output on return. The * size of this buffer should at least be 'maxChars + 1'. * @param maxChars The maximum number of output characters that can be * accepted. If the result will not fit, it is an error. * @return true if the message is successfully loaded */ static bool loadDOMExceptionMsg ( const short msgToLoad , XMLCh* const toFill , const XMLSize_t maxChars ); //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMImplementationRegistry.hpp0000644000175000017500000000726210606722647023055 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMImplementationRegistry.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONREGISTRY_HPP) #define XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONREGISTRY_HPP /** * This class holds the list of registered DOMImplementations. Implementation * or application can register DOMImplementationSource to the registry, and * then can query DOMImplementation based on a list of requested features. * *

    This provides an application with an implementation independent starting * point. * * @see DOMImplementation * @see DOMImplementationList * @see DOMImplementationSource * @since DOM Level 3 */ #include XERCES_CPP_NAMESPACE_BEGIN class DOMImplementation; class DOMImplementationSource; class DOMImplementationList; class CDOM_EXPORT DOMImplementationRegistry { public: // ----------------------------------------------------------------------- // Static DOMImplementationRegistry interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 3 */ //@{ /** * Return the first registered implementation that has the desired features, * or null if none is found. * * @param features A string that specifies which features are required. * This is a space separated list in which each feature is * specified by its name optionally followed by a space * and a version number. * This is something like: "XML 1.0 Traversal 2.0" * @return An implementation that has the desired features, or * null if this source has none. * @since DOM Level 3 */ static DOMImplementation* getDOMImplementation(const XMLCh* features); /** * Return the list of registered implementation that have the desired features. * * @param features A string that specifies which features are required. * This is a space separated list in which each feature is * specified by its name optionally followed by a space * and a version number. * This is something like: "XML 1.0 Traversal 2.0" * @return A DOMImplementationList object that contains the DOMImplementation * that have the desired features * @since DOM Level 3 */ static DOMImplementationList* getDOMImplementationList(const XMLCh* features); /** * Register an implementation. * * @param source A DOMImplementation Source object to be added to the registry. * The registry does NOT adopt the source object. Users still own it. * @since DOM Level 3 */ static void addSource(DOMImplementationSource* source); //@} private: DOMImplementationRegistry(); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMError.hpp0000644000175000017500000001310011030714661017401 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMError.hpp 671894 2008-06-26 13:29:21Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMERROR_HPP) #define XERCESC_INCLUDE_GUARD_DOMERROR_HPP #include XERCES_CPP_NAMESPACE_BEGIN class DOMLocator; /** * DOMError is an interface that describes an error. * * @see DOMErrorHandler#handleError * @since DOM Level 3 */ class CDOM_EXPORT DOMError { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMError() {}; //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented constructors and operators */ //@{ DOMError(const DOMError &); DOMError & operator = (const DOMError &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMError() {}; //@} // ----------------------------------------------------------------------- // Class types // ----------------------------------------------------------------------- /** @name Public constants */ //@{ /** * The severity of the error described by the DOMError. * *

    DOM_SEVERITY_ERROR: * The severity of the error described by the DOMError is error. * A DOM_SEVERITY_ERROR may not cause the processing to stop if the error can * be recovered, unless DOMErrorHandler::handleError() returns false.

    * *

    DOM_SEVERITY_FATAL_ERROR * The severity of the error described by the DOMError is fatal error. * A DOM_SEVERITY_FATAL_ERROR will cause the normal processing to stop. The return * value of DOMErrorHandler::handleError() is ignored unless the * implementation chooses to continue, in which case the behavior becomes undefined.

    * *

    DOM_SEVERITY_WARNING * The severity of the error described by the DOMError is warning. * A DOM_SEVERITY_WARNING will not cause the processing to stop, unless * DOMErrorHandler::handleError() returns false.

    * * @since DOM Level 3 */ enum ErrorSeverity { DOM_SEVERITY_WARNING = 1, DOM_SEVERITY_ERROR = 2, DOM_SEVERITY_FATAL_ERROR = 3 }; //@} // ----------------------------------------------------------------------- // Virtual DOMError interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 3 */ //@{ // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- /** * Get the severity of the error * * @see setSeverity * @since DOM Level 3 */ virtual ErrorSeverity getSeverity() const = 0; /** * Get the message describing the error that occured. * * @since DOM Level 3 */ virtual const XMLCh* getMessage() const = 0; /** * Get the location of the error * * @since DOM Level 3 */ virtual DOMLocator* getLocation() const = 0; /** * The related platform dependent exception if any. * * @since DOM Level 3 */ virtual void* getRelatedException() const = 0; /** * A XMLCh* indicating which related data is expected in * relatedData. Users should refer to the specification of the error * in order to find its XMLCh* type and relatedData * definitions if any. * * Note: As an example, DOMDocument::normalizeDocument() does generate * warnings when the "split-cdata-sections" parameter is in use. Therefore, the * method generates a DOM_SEVERITY_WARNING with type "cdata-sections-splitted" * and the first DOMCDATASection node in document order resulting from the split * is returned by the relatedData attribute. * * @since DOM Level 3 */ virtual const XMLCh* getType() const = 0; /** * The related DOMError::getType dependent data if any. * * @since DOM Level 3 */ virtual void* getRelatedData() const = 0; //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMStringList.hpp0000644000175000017500000001055211030714661020422 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMStringList.hpp 671894 2008-06-26 13:29:21Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMSTRINGLIST_HPP) #define XERCESC_INCLUDE_GUARD_DOMSTRINGLIST_HPP #include XERCES_CPP_NAMESPACE_BEGIN /** * The DOMStringList interface provides the abstraction of an ordered * collection of strings, without defining or constraining how this collection * is implemented. The items in the DOMStringList are accessible via * an integral index, starting from 0. */ class CDOM_EXPORT DOMStringList { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMStringList() {}; //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented constructors and operators */ //@{ DOMStringList(const DOMStringList &); DOMStringList & operator = (const DOMStringList &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMStringList() {}; //@} // ----------------------------------------------------------------------- // Virtual DOMStringList interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 3 */ //@{ // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- /** * Returns the index item in the collection. * * If index is greater than or equal to the number of strings in * the list, this returns null. * * @param index Index into the collection. * @return The string at the indexth position in the * DOMStringList, or null if that is not a valid * index. * @since DOM Level 3 */ virtual const XMLCh *item(XMLSize_t index) const = 0; /** * Returns the number of strings in the list. * * The range of valid child node indices is 0 to length-1 inclusive. * * @since DOM Level 3 */ virtual XMLSize_t getLength() const = 0; /** * Test if a string is part of this DOMStringList * * @return true if the string has been found, false otherwise. * * @since DOM Level 3 */ virtual bool contains(const XMLCh*) const = 0; //@} // ----------------------------------------------------------------------- // Non-standard Extension // ----------------------------------------------------------------------- /** @name Non-standard Extension */ //@{ /** * Called to indicate that this list is no longer in use * and that the implementation may relinquish any resources associated with it and * its associated children. * * Access to a released object will lead to unexpected result. * */ virtual void release() = 0; //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/DOMCharacterData.hpp0000644000175000017500000002147010606722647021022 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMCharacterData.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMCHARACTERDATA_HPP) #define XERCESC_INCLUDE_GUARD_DOMCHARACTERDATA_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN /** * The DOMCharacterData interface extends DOMNode with a set of * attributes and methods for accessing character data in the DOM. For * clarity this set is defined here rather than on each object that uses * these attributes and methods. No DOM objects correspond directly to * DOMCharacterData, though DOMText and others do * inherit the interface from it. All offsets in this interface * start from 0. *

    As explained in the DOM spec, text strings in * the DOM are represented in UTF-16, i.e. as a sequence of 16-bit units. In * the following, the term 16-bit units is used whenever necessary to * indicate that indexing on DOMCharacterData is done in 16-bit units. *

    See also the Document Object Model (DOM) Level 2 Core Specification. * @since DOM Level 1 */ class CDOM_EXPORT DOMCharacterData: public DOMNode { protected: // ----------------------------------------------------------------------- // Hidden constructors // ----------------------------------------------------------------------- /** @name Hidden constructors */ //@{ DOMCharacterData() {} DOMCharacterData(const DOMCharacterData &other) : DOMNode(other) {} //@} private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- /** @name Unimplemented operators */ //@{ DOMCharacterData & operator = (const DOMCharacterData &); //@} public: // ----------------------------------------------------------------------- // All constructors are hidden, just the destructor is available // ----------------------------------------------------------------------- /** @name Destructor */ //@{ /** * Destructor * */ virtual ~DOMCharacterData() {}; //@} // ----------------------------------------------------------------------- // Virtual DOMCharacterData interface // ----------------------------------------------------------------------- /** @name Functions introduced in DOM Level 1 */ //@{ // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- /** * Returns the character data of the node that implements this interface. * * The DOM implementation may not put arbitrary limits on the amount of data that * may be stored in a DOMCharacterData node. However, * implementation limits may mean that the entirety of a node's data may * not fit into a single XMLCh* String. In such cases, the user * may call substringData to retrieve the data in * appropriately sized pieces. * @exception DOMException * NO_MODIFICATION_ALLOWED_ERR: Raised when the node is readonly. * @since DOM Level 1 */ virtual const XMLCh * getData() const = 0; /** * Returns the number of characters that are available through data and * the substringData method below. * * This may have the value * zero, i.e., CharacterData nodes may be empty. * @since DOM Level 1 */ virtual XMLSize_t getLength() const = 0; /** * Extracts a range of data from the node. * * @param offset Start offset of substring to extract. * @param count The number of characters to extract. * @return The specified substring. If the sum of offset and * count exceeds the length, then all * characters to the end of the data are returned. * @exception DOMException * INDEX_SIZE_ERR: Raised if the specified offset is negative or greater * than the number of characters in data, or if the * specified count is negative. * @since DOM Level 1 */ virtual const XMLCh * substringData(XMLSize_t offset, XMLSize_t count) const = 0; // ----------------------------------------------------------------------- // String methods // ----------------------------------------------------------------------- /** * Append the string to the end of the character data of the node. * * Upon success, data provides access to the concatenation of * data and the XMLCh* String specified. * @param arg The XMLCh* String to append. * @exception DOMException * NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. * @since DOM Level 1 */ virtual void appendData(const XMLCh *arg) = 0; /** * Insert a string at the specified character offset. * * @param offset The character offset at which to insert. * @param arg The XMLCh* String to insert. * @exception DOMException * INDEX_SIZE_ERR: Raised if the specified offset is negative or greater * than the number of characters in data. *
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. * @since DOM Level 1 */ virtual void insertData(XMLSize_t offset, const XMLCh *arg) = 0; /** * Remove a range of characters from the node. * * Upon success, * data and length reflect the change. * @param offset The offset from which to remove characters. * @param count The number of characters to delete. If the sum of * offset and count exceeds length * then all characters from offset to the end of the data * are deleted. * @exception DOMException * INDEX_SIZE_ERR: Raised if the specified offset is negative or greater * than the number of characters in data, or if the * specified count is negative. *
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. * @since DOM Level 1 */ virtual void deleteData(XMLSize_t offset, XMLSize_t count) = 0; /** * Replace the characters starting at the specified character offset with * the specified string. * * @param offset The offset from which to start replacing. * @param count The number of characters to replace. If the sum of * offset and count exceeds length * , then all characters to the end of the data are replaced (i.e., the * effect is the same as a remove method call with the same * range, followed by an append method invocation). * @param arg The XMLCh* String with which the range must be * replaced. * @exception DOMException * INDEX_SIZE_ERR: Raised if the specified offset is negative or greater * than the number of characters in data, or if the * specified count is negative. *
    NO_MODIFICATION_ALLOWED_ERR: Raised if this node is readonly. * @since DOM Level 1 */ virtual void replaceData(XMLSize_t offset, XMLSize_t count, const XMLCh *arg) = 0; /** * Sets the character data of the node that implements this interface. * * @param data The XMLCh* String to set. * @since DOM Level 1 */ virtual void setData(const XMLCh *data) = 0; //@} }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/0000755000175000017500000000000011363617230016210 5ustar borisborisxerces-c-3.1.1/src/xercesc/dom/impl/DOMDeepNodeListPool.c0000644000175000017500000003514511302525023022064 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * $Id: DOMDeepNodeListPool.c 883368 2009-11-23 15:28:19Z amassari $ */ // --------------------------------------------------------------------------- // Include // --------------------------------------------------------------------------- #include #if defined(XERCES_TMPLSINC) #include #endif #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // DOMDeepNodeListPool: Constructors and Destructor // --------------------------------------------------------------------------- template DOMDeepNodeListPool::DOMDeepNodeListPool( const XMLSize_t modulus , const bool adoptElems , const XMLSize_t initSize) : fAdoptedElems(adoptElems) , fBucketList(0) , fHashModulus(modulus) , fIdPtrs(0) , fIdPtrsCount(initSize) , fIdCounter(0) , fMemoryManager(XMLPlatformUtils::fgMemoryManager) { initialize(modulus); // // Allocate the initial id pointers array. We don't have to zero them // out since the fIdCounter value tells us which ones are valid. The // zeroth element is never used (and represents an invalid pool id.) // if (!fIdPtrsCount) fIdPtrsCount = 256; fIdPtrs = (TVal**) fMemoryManager->allocate(fIdPtrsCount * sizeof(TVal*));//new TVal*[fIdPtrsCount]; fIdPtrs[0] = 0; } template DOMDeepNodeListPool::DOMDeepNodeListPool( const XMLSize_t modulus , const bool adoptElems , const THasher& hasher , const XMLSize_t initSize) : fAdoptedElems(adoptElems) , fBucketList(0) , fHashModulus(modulus) , fIdPtrs(0) , fIdPtrsCount(initSize) , fIdCounter(0) , fMemoryManager(XMLPlatformUtils::fgMemoryManager) , fHasher(hasher) { initialize(modulus); // // Allocate the initial id pointers array. We don't have to zero them // out since the fIdCounter value tells us which ones are valid. The // zeroth element is never used (and represents an invalid pool id.) // if (!fIdPtrsCount) fIdPtrsCount = 256; fIdPtrs = (TVal**) fMemoryManager->allocate(fIdPtrsCount * sizeof(TVal*));//new TVal*[fIdPtrsCount]; fIdPtrs[0] = 0; } template DOMDeepNodeListPool::DOMDeepNodeListPool( const XMLSize_t modulus , const XMLSize_t initSize) : fAdoptedElems(true) , fBucketList(0) , fHashModulus(modulus) , fIdPtrs(0) , fIdPtrsCount(initSize) , fIdCounter(0) , fMemoryManager(XMLPlatformUtils::fgMemoryManager) { initialize(modulus); // // Allocate the initial id pointers array. We don't have to zero them // out since the fIdCounter value tells us which ones are valid. The // zeroth element is never used (and represents an invalid pool id.) // if (!fIdPtrsCount) fIdPtrsCount = 256; fIdPtrs = (TVal**) fMemoryManager->allocate(fIdPtrsCount * sizeof(TVal*));//new TVal*[fIdPtrsCount]; fIdPtrs[0] = 0; } template void DOMDeepNodeListPool::initialize(const XMLSize_t modulus) { if (modulus == 0) ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::HshTbl_ZeroModulus, fMemoryManager); // Allocate the bucket list and zero them fBucketList = (DOMDeepNodeListPoolTableBucketElem**) fMemoryManager->allocate ( fHashModulus * sizeof(DOMDeepNodeListPoolTableBucketElem*) );//new DOMDeepNodeListPoolTableBucketElem*[fHashModulus]; for (XMLSize_t index = 0; index < fHashModulus; index++) fBucketList[index] = 0; } template DOMDeepNodeListPool::~DOMDeepNodeListPool() { removeAll(); // Then delete the bucket list & hasher & id pointers list fMemoryManager->deallocate(fIdPtrs);//delete [] fIdPtrs; fMemoryManager->deallocate(fBucketList);//delete [] fBucketList; } // --------------------------------------------------------------------------- // DOMDeepNodeListPool: Element management // --------------------------------------------------------------------------- template bool DOMDeepNodeListPool::isEmpty() const { // Just check the bucket list for non-empty elements for (XMLSize_t buckInd = 0; buckInd < fHashModulus; buckInd++) { if (fBucketList[buckInd] != 0) return false; } return true; } template bool DOMDeepNodeListPool::containsKey( const void* const key1 , const XMLCh* const key2 , const XMLCh* const key3) const { XMLSize_t hashVal; const DOMDeepNodeListPoolTableBucketElem* findIt = findBucketElem(key1, key2, key3, hashVal); return (findIt != 0); } template void DOMDeepNodeListPool::removeAll() { if (fIdCounter == 0) return; // Clean up the buckets first for (XMLSize_t buckInd = 0; buckInd < fHashModulus; buckInd++) { // Get the bucket list head for this entry DOMDeepNodeListPoolTableBucketElem* curElem = fBucketList[buckInd]; DOMDeepNodeListPoolTableBucketElem* nextElem; while (curElem) { // Save the next element before we hose this one nextElem = curElem->fNext; // If we adopted the data, then delete it too // (Note: the userdata hash table instance has data type of void *. // This will generate compiler warnings here on some platforms, but they // can be ignored since fAdoptedElements is false. if (fAdoptedElems) delete curElem->fData; // Then delete the current element and move forward fMemoryManager->deallocate(curElem->fKey2);//delete [] curElem->fKey2; fMemoryManager->deallocate(curElem->fKey3);//delete [] curElem->fKey3; delete curElem; curElem = nextElem; } // Clean out this entry fBucketList[buckInd] = 0; } // Reset the id counter fIdCounter = 0; } template void DOMDeepNodeListPool::cleanup() { removeAll(); // Then delete the bucket list & hasher & id pointers list fMemoryManager->deallocate(fIdPtrs);//delete [] fIdPtrs; fMemoryManager->deallocate(fBucketList);//delete [] fBucketList; } // --------------------------------------------------------------------------- // DOMDeepNodeListPool: Getters // --------------------------------------------------------------------------- template TVal* DOMDeepNodeListPool::getByKey(const void* const key1, const XMLCh* const key2, const XMLCh* const key3) { XMLSize_t hashVal; DOMDeepNodeListPoolTableBucketElem* findIt = findBucketElem(key1, key2, key3, hashVal); if (!findIt) return 0; return findIt->fData; } template const TVal* DOMDeepNodeListPool::getByKey(const void* const key1, const XMLCh* const key2, const XMLCh* const key3) const { XMLSize_t hashVal; const DOMDeepNodeListPoolTableBucketElem* findIt = findBucketElem(key1, key2, key3, hashVal); if (!findIt) return 0; return findIt->fData; } template TVal* DOMDeepNodeListPool::getById(const XMLSize_t elemId) { // If its either zero or beyond our current id, its an error if (!elemId || (elemId > fIdCounter)) ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::Pool_InvalidId, fMemoryManager); return fIdPtrs[elemId]; } template const TVal* DOMDeepNodeListPool::getById(const XMLSize_t elemId) const { // If its either zero or beyond our current id, its an error if (!elemId || (elemId > fIdCounter)) ThrowXMLwithMemMgr(IllegalArgumentException, XMLExcepts::Pool_InvalidId, fMemoryManager); return fIdPtrs[elemId]; } // --------------------------------------------------------------------------- // DOMDeepNodeListPool: Putters // --------------------------------------------------------------------------- template XMLSize_t DOMDeepNodeListPool::put(void* key1, XMLCh* key2, XMLCh* key3, TVal* const valueToAdopt) { // First see if the key exists already XMLSize_t hashVal; DOMDeepNodeListPoolTableBucketElem* newBucket = findBucketElem(key1, key2, key3, hashVal); // // If so,then update its value. If not, then we need to add it to // the right bucket // if (newBucket) { if (fAdoptedElems) delete newBucket->fData; fMemoryManager->deallocate(newBucket->fKey2);//delete[] newBucket->fKey2; fMemoryManager->deallocate(newBucket->fKey3);//delete[] newBucket->fKey3; newBucket->fData = valueToAdopt; newBucket->fKey1 = key1; newBucket->fKey2 = XMLString::replicate(key2, fMemoryManager); newBucket->fKey3 = XMLString::replicate(key3, fMemoryManager); } else { // Revisit: the gcc compiler 2.95.x is generating an // internal compiler error message. So we use the default // memory manager for now. #if defined (XML_GCC_VERSION) && (XML_GCC_VERSION < 29600) newBucket = new DOMDeepNodeListPoolTableBucketElem ( key1 , key2 , key3 , valueToAdopt , fBucketList[hashVal] , fMemoryManager ); #else newBucket = new (fMemoryManager) DOMDeepNodeListPoolTableBucketElem ( key1 , key2 , key3 , valueToAdopt , fBucketList[hashVal] , fMemoryManager ); #endif fBucketList[hashVal] = newBucket; } // // Give this new one the next available id and add to the pointer list. // Expand the list if that is now required. // if (fIdCounter + 1 == fIdPtrsCount) { // Create a new count 1.5 times larger and allocate a new array XMLSize_t newCount = (XMLSize_t)(fIdPtrsCount * 1.5); TVal** newArray = (TVal**) fMemoryManager->allocate ( newCount * sizeof(TVal*) );//new TVal*[newCount]; // Copy over the old contents to the new array memcpy(newArray, fIdPtrs, fIdPtrsCount * sizeof(TVal*)); // Ok, toss the old array and store the new data fMemoryManager->deallocate(fIdPtrs); //delete [] fIdPtrs; fIdPtrs = newArray; fIdPtrsCount = newCount; } const XMLSize_t retId = ++fIdCounter; fIdPtrs[retId] = valueToAdopt; // Return the id that we gave to this element return retId; } // --------------------------------------------------------------------------- // DOMDeepNodeListPool: Private methods // --------------------------------------------------------------------------- template DOMDeepNodeListPoolTableBucketElem* DOMDeepNodeListPool:: findBucketElem(const void* const key1, const XMLCh* const key2, const XMLCh* const key3, XMLSize_t& hashVal) { // Hash the key hashVal = fHasher.getHashVal(key1, fHashModulus); assert(hashVal < fHashModulus); // Search that bucket for the key DOMDeepNodeListPoolTableBucketElem* curElem = fBucketList[hashVal]; while (curElem) { //key2 and key3 are XMLCh*, compareString takes null pointer vs zero len string the same //but we need them to be treated as different keys in this case if (fHasher.equals(key1, curElem->fKey1) && (XMLString::equals(key2, curElem->fKey2)) && (XMLString::equals(key3, curElem->fKey3))) { if (!key2 || !curElem->fKey2) { if (key2 || curElem->fKey2) { curElem = curElem->fNext; continue; } } if (!key3 || !curElem->fKey3) { if (key3 || curElem->fKey3) { curElem = curElem->fNext; continue; } } return curElem; } curElem = curElem->fNext; } return 0; } template const DOMDeepNodeListPoolTableBucketElem* DOMDeepNodeListPool:: findBucketElem(const void* const key1, const XMLCh* const key2, const XMLCh* const key3, XMLSize_t& hashVal) const { // Hash the key hashVal = fHasher.getHashVal(key1, fHashModulus); assert(hashVal < fHashModulus); // Search that bucket for the key const DOMDeepNodeListPoolTableBucketElem* curElem = fBucketList[hashVal]; while (curElem) { //key2 and key3 are XMLCh*, compareString takes null pointer vs zero len string the same //but we need them to be treated as different keys in this case if (fHasher.equals(key1, curElem->fKey1) && (XMLString::equals(key2, curElem->fKey2)) && (XMLString::equals(key3, curElem->fKey3))) { if (!key2 || !curElem->fKey2) { if (key2 || curElem->fKey2) { curElem = curElem->fNext; continue; } } if (!key3 || !curElem->fKey3) { if (key3 || curElem->fKey3) { curElem = curElem->fNext; continue; } } return curElem; } curElem = curElem->fNext; } return 0; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMLSInputImpl.hpp0000644000175000017500000000722410772402041021441 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMLSInputImpl.hpp 641193 2008-03-26 08:06:57Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMLSINPUTIMPL_HPP) #define XERCESC_INCLUDE_GUARD_DOMLSINPUTIMPL_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN class CDOM_EXPORT DOMLSInputImpl : public XMemory, public DOMLSInput { public: DOMLSInputImpl(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); ~DOMLSInputImpl(); virtual const XMLCh* getStringData() const; virtual InputSource* getByteStream() const; virtual const XMLCh* getEncoding() const; virtual const XMLCh* getPublicId() const; virtual const XMLCh* getSystemId() const; virtual const XMLCh* getBaseURI() const; virtual void setStringData(const XMLCh* data); virtual void setByteStream(InputSource* stream); virtual void setEncoding(const XMLCh* const encodingStr); virtual void setPublicId(const XMLCh* const publicId); virtual void setSystemId(const XMLCh* const systemId); virtual void setBaseURI(const XMLCh* const baseURI); virtual void setIssueFatalErrorIfNotFound(bool flag); virtual bool getIssueFatalErrorIfNotFound() const; virtual void release(); private: /** unimplemented copy ctor and assignment operator */ DOMLSInputImpl(const DOMLSInputImpl&); DOMLSInputImpl & operator = (const DOMLSInputImpl&); protected: // ----------------------------------------------------------------------- // Private data members // // fStringData // We don't own it // // fByteStream // We don't own it // // fEncoding // We own it // // fPublicId // We own it // // fSystemId // We own it // // fBaseURI // We own it // // ----------------------------------------------------------------------- const XMLCh *fStringData; InputSource *fByteStream; XMLCh *fEncoding; XMLCh *fPublicId; XMLCh *fSystemId; XMLCh *fBaseURI; bool fIssueFatalErrorIfNotFound; MemoryManager* fMemoryManager; }; inline const XMLCh* DOMLSInputImpl::getStringData() const { return fStringData; } inline InputSource* DOMLSInputImpl::getByteStream() const { return fByteStream; } inline const XMLCh* DOMLSInputImpl::getEncoding() const { return fEncoding; } inline const XMLCh* DOMLSInputImpl::getPublicId() const { return fPublicId; } inline const XMLCh* DOMLSInputImpl::getSystemId() const { return fSystemId; } inline const XMLCh* DOMLSInputImpl::getBaseURI() const { return fBaseURI; } inline bool DOMLSInputImpl::getIssueFatalErrorIfNotFound() const { return fIssueFatalErrorIfNotFound; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMNodeVector.hpp0000644000175000017500000000507411037027715021340 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMNodeVector.hpp 676796 2008-07-15 05:04:13Z dbertoni $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMNODEVECTOR_HPP) #define XERCESC_INCLUDE_GUARD_DOMNODEVECTOR_HPP // // This file is part of the internal implementation of the C++ XML DOM. // It should NOT be included or used directly by application programs. // // Applications should include the file for the entire // DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class // name is substituded for the *. // #include XERCES_CPP_NAMESPACE_BEGIN class DOMNode; class DOMDocument; class DOMNodeVector { private: DOMNode **data; XMLSize_t allocatedSize; XMLSize_t nextFreeSlot; void init(DOMDocument *doc, XMLSize_t size); void checkSpace(); // unimplemented DOMNodeVector ( const DOMNodeVector& toCopy); DOMNodeVector& operator= (const DOMNodeVector& other); public: DOMNodeVector(DOMDocument *doc); DOMNodeVector(DOMDocument *doc, XMLSize_t size); ~DOMNodeVector(); XMLSize_t size(); DOMNode* elementAt(XMLSize_t index); DOMNode* lastElement(); void addElement(DOMNode *); void insertElementAt(DOMNode *, XMLSize_t index); void setElementAt(DOMNode *val, XMLSize_t index); void removeElementAt(XMLSize_t index); void reset(); }; inline DOMNode *DOMNodeVector::elementAt(XMLSize_t index) { if (index >= nextFreeSlot) return 0; return data[index]; } inline DOMNode *DOMNodeVector::lastElement() { if (nextFreeSlot == 0) return 0; return data[nextFreeSlot-1]; } inline XMLSize_t DOMNodeVector::size() { return nextFreeSlot; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMChildNode.cpp0000644000175000017500000000505310523643534021113 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMChildNode.cpp 471747 2006-11-06 14:31:56Z amassari $ */ // This class only adds the ability to have siblings #include #include "DOMNodeImpl.hpp" #include "DOMChildNode.hpp" #include "DOMCasts.hpp" XERCES_CPP_NAMESPACE_BEGIN DOMChildNode::DOMChildNode() { this->previousSibling = 0; this->nextSibling = 0; } // This only makes a shallow copy, cloneChildren must also be called for a // deep clone DOMChildNode::DOMChildNode(const DOMChildNode &) { // Need to break the association w/ original siblings and parent this->previousSibling = 0; this->nextSibling = 0; } DOMChildNode::~DOMChildNode() { } DOMNode * DOMChildNode::getNextSibling() const { return nextSibling; } // // Note: for getParentNode and getPreviousSibling(), below, an // extra paramter "thisNode" is required. This is because there // is no way to cast from a DOMChildNode pointer back to the // DOMNodeImpl that it is part of. Our "this" may or may not // be preceded by a fParent in the object layout, and there's no // practical way to tell, so we just take an extra parameter instead. DOMNode * DOMChildNode::getParentNode(const DOMNode *thisNode) const { // if we have an owner, ownerNode is our parent, otherwise it's // our ownerDocument and we don't have a parent DOMNodeImpl *thisNodeImpl = castToNodeImpl(thisNode); return thisNodeImpl->isOwned() ? thisNodeImpl->fOwnerNode : 0; } DOMNode * DOMChildNode::getPreviousSibling(const DOMNode *thisNode) const { // if we are the firstChild, previousSibling actually refers to our // parent's lastChild, but we hide that return castToNodeImpl(thisNode)->isFirstChild() ? 0 : previousSibling; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMAttrMapImpl.hpp0000644000175000017500000001101711041336370021447 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMAttrMapImpl.hpp 678709 2008-07-22 10:56:56Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMATTRMAPIMPL_HPP) #define XERCESC_INCLUDE_GUARD_DOMATTRMAPIMPL_HPP // // This file is part of the internal implementation of the C++ XML DOM. // It should NOT be included or used directly by application programs. // // Applications should include the file for the entire // DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class // name is substituded for the *. // #include #include XERCES_CPP_NAMESPACE_BEGIN class DOMNode; class DOMNodeVector; class CDOM_EXPORT DOMAttrMapImpl : public DOMNamedNodeMap { protected: DOMNodeVector* fNodes; DOMNode* fOwnerNode; // the node this map belongs to bool attrDefaults; virtual void cloneContent(const DOMAttrMapImpl *srcmap); bool readOnly(); // revisit. Look at owner node read-only. public: DOMAttrMapImpl(DOMNode *ownerNod); // revisit. This "copy" constructor is used for cloning an Element with Attributes, // and for setting up default attributes. It's probably not right // for one or the other or both. DOMAttrMapImpl(DOMNode *ownerNod, const DOMAttrMapImpl *defaults); DOMAttrMapImpl(); virtual ~DOMAttrMapImpl(); virtual DOMAttrMapImpl *cloneAttrMap(DOMNode *ownerNode); virtual bool hasDefaults(); virtual void hasDefaults(bool value); virtual int findNamePoint(const XMLCh *name) const; virtual int findNamePoint(const XMLCh *namespaceURI, const XMLCh *localName) const; virtual DOMNode* removeNamedItemAt(XMLSize_t index); virtual void setReadOnly(bool readOnly, bool deep); virtual XMLSize_t getLength() const; virtual DOMNode* item(XMLSize_t index) const; virtual DOMNode* getNamedItem(const XMLCh *name) const; virtual DOMNode* setNamedItem(DOMNode *arg); virtual DOMNode* removeNamedItem(const XMLCh *name); virtual DOMNode* getNamedItemNS(const XMLCh *namespaceURI, const XMLCh *localName) const; virtual DOMNode* setNamedItemNS(DOMNode *arg); virtual DOMNode* removeNamedItemNS(const XMLCh *namespaceURI, const XMLCh *localName); // Fast versions of the above functions which bypass validity checks. // It also assumes that fNode is not 0 (call reserve) and that there // is no previous node with this name. These are used in parsing. // void setNamedItemFast(DOMNode *arg); void setNamedItemNSFast(DOMNode *arg); // Tries to reserve space for the specified number of elements. // Currently only works on newly-created instances (fNodes == 0). // void reserve (XMLSize_t); void reconcileDefaultAttributes(const DOMAttrMapImpl* defaults); void moveSpecifiedAttributes(DOMAttrMapImpl* srcmap); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DOMAttrMapImpl(const DOMAttrMapImpl &); DOMAttrMapImpl & operator = (const DOMAttrMapImpl &); }; // --------------------------------------------------------------------------- // DOMAttrMapImpl: Getters & Setters // --------------------------------------------------------------------------- inline bool DOMAttrMapImpl::hasDefaults() { return attrDefaults; } inline void DOMAttrMapImpl::hasDefaults(bool value) { attrDefaults = value; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMCDATASectionImpl.cpp0000644000175000017500000003651211041336370022242 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMCDATASectionImpl.cpp 678709 2008-07-22 10:56:56Z borisk $ */ #include "DOMCDATASectionImpl.hpp" #include "DOMNodeImpl.hpp" #include "DOMRangeImpl.hpp" #include "DOMDocumentImpl.hpp" #include "DOMCasts.hpp" #include "DOMStringPool.hpp" #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN DOMCDATASectionImpl::DOMCDATASectionImpl(DOMDocument *ownerDoc, const XMLCh *dat) : fNode(ownerDoc), fCharacterData(ownerDoc, dat) { fNode.setIsLeafNode(true); } DOMCDATASectionImpl:: DOMCDATASectionImpl(DOMDocument *ownerDoc, const XMLCh* data, XMLSize_t n) : fNode(ownerDoc), fCharacterData(ownerDoc, data, n) { fNode.setIsLeafNode(true); } DOMCDATASectionImpl::DOMCDATASectionImpl(const DOMCDATASectionImpl &other, bool /*deep*/) : DOMCDATASection(other), fNode(*castToNodeImpl(&other)), fChild(*castToChildImpl(&other)), fCharacterData(other.fCharacterData) { // revisit. Something nees to make "deep" work. } DOMCDATASectionImpl::~DOMCDATASectionImpl() { } DOMNode *DOMCDATASectionImpl::cloneNode(bool deep) const { DOMNode* newNode = new (this->getOwnerDocument(), DOMMemoryManager::CDATA_SECTION_OBJECT) DOMCDATASectionImpl(*this, deep); fNode.callUserDataHandlers(DOMUserDataHandler::NODE_CLONED, this, newNode); return newNode; } const XMLCh * DOMCDATASectionImpl::getNodeName() const { static const XMLCh gcdata_section[] = {chPound, chLatin_c, chLatin_d, chLatin_a, chLatin_t, chLatin_a, chDash, chLatin_s, chLatin_e, chLatin_c, chLatin_t, chLatin_i, chLatin_o, chLatin_n, 0}; return gcdata_section; } DOMNode::NodeType DOMCDATASectionImpl::getNodeType() const { return DOMNode::CDATA_SECTION_NODE; } bool DOMCDATASectionImpl::isIgnorableWhitespace() const { return fNode.ignorableWhitespace(); } // // splitText. revist - factor into a common function for use // here and in DOMTextImpl // DOMText *DOMCDATASectionImpl::splitText(XMLSize_t offset) { if (fNode.isReadOnly()) { throw DOMException(DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMNodeMemoryManager); } XMLSize_t len = fCharacterData.fDataBuf->getLen(); if (offset > len) throw DOMException(DOMException::INDEX_SIZE_ERR, 0, GetDOMNodeMemoryManager); DOMDocumentImpl *doc = (DOMDocumentImpl *)getOwnerDocument(); DOMText *newText = doc->createCDATASection(this->substringData(offset, len - offset)); DOMNode *parent = getParentNode(); if (parent != 0) parent->insertBefore(newText, getNextSibling()); fCharacterData.fDataBuf->chop(offset); if (doc != 0) { Ranges* ranges = doc->getRanges(); if (ranges != 0) { XMLSize_t sz = ranges->size(); if (sz != 0) { for (XMLSize_t i =0; ielementAt(i)->updateSplitInfo( this, newText, offset); } } } } return newText; } bool DOMCDATASectionImpl::getIsElementContentWhitespace() const { return isIgnorableWhitespace(); } const XMLCh* DOMCDATASectionImpl::getWholeText() const { DOMDocument *doc = getOwnerDocument(); DOMTreeWalker* pWalker=doc->createTreeWalker(doc->getDocumentElement(), DOMNodeFilter::SHOW_ALL, NULL, true); pWalker->setCurrentNode((DOMNode*)this); // Logically-adjacent text nodes are Text or CDATASection nodes that can be visited sequentially in document order or in // reversed document order without entering, exiting, or passing over Element, Comment, or ProcessingInstruction nodes. DOMNode* prevNode; while((prevNode=pWalker->previousNode())!=NULL) { if(prevNode->getNodeType()==ELEMENT_NODE || prevNode->getNodeType()==COMMENT_NODE || prevNode->getNodeType()==PROCESSING_INSTRUCTION_NODE) break; } XMLBuffer buff(1023, GetDOMNodeMemoryManager); DOMNode* nextNode; while((nextNode=pWalker->nextNode())!=NULL) { if(nextNode->getNodeType()==ELEMENT_NODE || nextNode->getNodeType()==COMMENT_NODE || nextNode->getNodeType()==PROCESSING_INSTRUCTION_NODE) break; if(nextNode->getNodeType()==TEXT_NODE || nextNode->getNodeType()==CDATA_SECTION_NODE) buff.append(nextNode->getNodeValue()); } pWalker->release(); XMLCh* wholeString = (XMLCh*) (GetDOMNodeMemoryManager->allocate((buff.getLen()+1)*sizeof(XMLCh))); XMLString::copyString(wholeString, buff.getRawBuffer()); return wholeString; } DOMText* DOMCDATASectionImpl::replaceWholeText(const XMLCh* newText) { DOMDocument *doc = getOwnerDocument(); DOMTreeWalker* pWalker=doc->createTreeWalker(doc->getDocumentElement(), DOMNodeFilter::SHOW_ALL, NULL, true); pWalker->setCurrentNode((DOMNode*)this); // Logically-adjacent text nodes are Text or CDATASection nodes that can be visited sequentially in document order or in // reversed document order without entering, exiting, or passing over Element, Comment, or ProcessingInstruction nodes. DOMNode* pFirstTextNode=this; DOMNode* prevNode; while((prevNode=pWalker->previousNode())!=NULL) { if(prevNode->getNodeType()==ELEMENT_NODE || prevNode->getNodeType()==COMMENT_NODE || prevNode->getNodeType()==PROCESSING_INSTRUCTION_NODE) break; pFirstTextNode=prevNode; } // before doing any change we need to check if we are going to remove an entity reference that doesn't contain just text DOMNode* pCurrentNode=pWalker->getCurrentNode(); DOMNode* nextNode; while((nextNode=pWalker->nextNode())!=NULL) { if(nextNode->getNodeType()==ELEMENT_NODE || nextNode->getNodeType()==COMMENT_NODE || nextNode->getNodeType()==PROCESSING_INSTRUCTION_NODE) break; if(nextNode->getNodeType()==ENTITY_REFERENCE_NODE) { DOMTreeWalker* pInnerWalker=doc->createTreeWalker(nextNode, DOMNodeFilter::SHOW_ALL, NULL, true); while(pInnerWalker->nextNode()) { short nodeType=pInnerWalker->getCurrentNode()->getNodeType(); if(nodeType!=ENTITY_REFERENCE_NODE && nodeType!=TEXT_NODE && nodeType!=CDATA_SECTION_NODE) throw DOMException(DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMNodeMemoryManager); } pInnerWalker->release(); } } DOMText* retVal=NULL; // if the first node in the chain is a text node, replace its content, otherwise create a new node if(newText && *newText) { if(!castToNodeImpl(pFirstTextNode)->isReadOnly() && (pFirstTextNode->getNodeType()==TEXT_NODE || pFirstTextNode->getNodeType()==CDATA_SECTION_NODE)) { pFirstTextNode->setNodeValue(newText); retVal=(DOMText*)pFirstTextNode; } else { if(getNodeType()==TEXT_NODE) retVal=doc->createTextNode(newText); else retVal=doc->createCDATASection(newText); pFirstTextNode->getParentNode()->insertBefore(retVal, pFirstTextNode); } } // now delete all the following text nodes pWalker->setCurrentNode(pCurrentNode); while((nextNode=pWalker->nextNode())!=NULL) { if(nextNode->getNodeType()==ELEMENT_NODE || nextNode->getNodeType()==COMMENT_NODE || nextNode->getNodeType()==PROCESSING_INSTRUCTION_NODE) break; if(nextNode!=retVal) { // keep the tree walker valid pWalker->previousNode(); nextNode->getParentNode()->removeChild(nextNode); nextNode->release(); } } pWalker->release(); return retVal; } void DOMCDATASectionImpl::release() { if (fNode.isOwned() && !fNode.isToBeReleased()) throw DOMException(DOMException::INVALID_ACCESS_ERR,0, GetDOMNodeMemoryManager); DOMDocumentImpl* doc = (DOMDocumentImpl*) getOwnerDocument(); if (doc) { fNode.callUserDataHandlers(DOMUserDataHandler::NODE_DELETED, 0, 0); fCharacterData.releaseBuffer(); doc->release(this, DOMMemoryManager::CDATA_SECTION_OBJECT); } else { // shouldn't reach here throw DOMException(DOMException::INVALID_ACCESS_ERR,0, GetDOMNodeMemoryManager); } } // // Delegation stubs for other DOM_Node inherited functions. // DOMNode* DOMCDATASectionImpl::appendChild(DOMNode *newChild) {return fNode.appendChild (newChild); } DOMNamedNodeMap* DOMCDATASectionImpl::getAttributes() const {return fNode.getAttributes (); } DOMNodeList* DOMCDATASectionImpl::getChildNodes() const {return fNode.getChildNodes (); } DOMNode* DOMCDATASectionImpl::getFirstChild() const {return fNode.getFirstChild (); } DOMNode* DOMCDATASectionImpl::getLastChild() const {return fNode.getLastChild (); } const XMLCh* DOMCDATASectionImpl::getLocalName() const {return fNode.getLocalName (); } const XMLCh* DOMCDATASectionImpl::getNamespaceURI() const {return fNode.getNamespaceURI (); } DOMNode* DOMCDATASectionImpl::getNextSibling() const {return fChild.getNextSibling (); } const XMLCh* DOMCDATASectionImpl::getNodeValue() const {return fCharacterData.getNodeValue (); } DOMDocument* DOMCDATASectionImpl::getOwnerDocument() const {return fNode.getOwnerDocument(); } const XMLCh* DOMCDATASectionImpl::getPrefix() const {return fNode.getPrefix (); } DOMNode* DOMCDATASectionImpl::getParentNode() const {return fChild.getParentNode (this); } DOMNode* DOMCDATASectionImpl::getPreviousSibling() const {return fChild.getPreviousSibling (this); } bool DOMCDATASectionImpl::hasChildNodes() const {return fNode.hasChildNodes (); } DOMNode* DOMCDATASectionImpl::insertBefore(DOMNode *newChild, DOMNode *refChild) {return fNode.insertBefore (newChild, refChild); } void DOMCDATASectionImpl::normalize() {fNode.normalize (); } DOMNode* DOMCDATASectionImpl::removeChild(DOMNode *oldChild) {return fNode.removeChild (oldChild); } DOMNode* DOMCDATASectionImpl::replaceChild(DOMNode *newChild, DOMNode *oldChild) {return fNode.replaceChild (newChild, oldChild); } bool DOMCDATASectionImpl::isSupported(const XMLCh *feature, const XMLCh *version) const {return fNode.isSupported (feature, version); } void DOMCDATASectionImpl::setPrefix(const XMLCh *prefix) {fNode.setPrefix(prefix); } bool DOMCDATASectionImpl::hasAttributes() const {return fNode.hasAttributes(); } bool DOMCDATASectionImpl::isSameNode(const DOMNode* other) const {return fNode.isSameNode(other); } bool DOMCDATASectionImpl::isEqualNode(const DOMNode* arg) const {return fNode.isEqualNode(arg); } void* DOMCDATASectionImpl::setUserData(const XMLCh* key, void* data, DOMUserDataHandler* handler) {return fNode.setUserData(key, data, handler); } void* DOMCDATASectionImpl::getUserData(const XMLCh* key) const {return fNode.getUserData(key); } const XMLCh* DOMCDATASectionImpl::getBaseURI() const {return fNode.getBaseURI(); } short DOMCDATASectionImpl::compareDocumentPosition(const DOMNode* other) const {return fNode.compareDocumentPosition(other); } const XMLCh* DOMCDATASectionImpl::getTextContent() const {return fNode.getTextContent(); } void DOMCDATASectionImpl::setTextContent(const XMLCh* textContent){fNode.setTextContent(textContent); } const XMLCh* DOMCDATASectionImpl::lookupPrefix(const XMLCh* namespaceURI) const {return fNode.lookupPrefix(namespaceURI); } bool DOMCDATASectionImpl::isDefaultNamespace(const XMLCh* namespaceURI) const {return fNode.isDefaultNamespace(namespaceURI); } const XMLCh* DOMCDATASectionImpl::lookupNamespaceURI(const XMLCh* prefix) const {return fNode.lookupNamespaceURI(prefix); } void* DOMCDATASectionImpl::getFeature(const XMLCh* feature, const XMLCh* version) const {return fNode.getFeature(feature, version); } // // Delegation of CharacerData functions. // const XMLCh* DOMCDATASectionImpl::getData() const {return fCharacterData.getData();} XMLSize_t DOMCDATASectionImpl::getLength() const {return fCharacterData.getLength();} const XMLCh* DOMCDATASectionImpl::substringData(XMLSize_t offset, XMLSize_t count) const {return fCharacterData.substringData(this, offset, count);} void DOMCDATASectionImpl::appendData(const XMLCh *arg) {fCharacterData.appendData(this, arg);} void DOMCDATASectionImpl::insertData(XMLSize_t offset, const XMLCh *arg) {fCharacterData.insertData(this, offset, arg);} void DOMCDATASectionImpl::deleteData(XMLSize_t offset, XMLSize_t count) {fCharacterData.deleteData(this, offset, count);} void DOMCDATASectionImpl::replaceData(XMLSize_t offset, XMLSize_t count, const XMLCh *arg) {fCharacterData.replaceData(this, offset, count, arg);} void DOMCDATASectionImpl::setData(const XMLCh *data) {fCharacterData.setData(this, data);} void DOMCDATASectionImpl::setNodeValue(const XMLCh *nodeValue) {fCharacterData.setNodeValue (this, nodeValue); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMLSOutputImpl.cpp0000644000175000017500000000342310523643534021642 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMLSOutputImpl.cpp 471747 2006-11-06 14:31:56Z amassari $ */ #include "DOMLSOutputImpl.hpp" #include XERCES_CPP_NAMESPACE_BEGIN DOMLSOutputImpl::DOMLSOutputImpl(MemoryManager* const manager /*= XMLPlatformUtils::fgMemoryManager*/) :fByteStream(0) ,fEncoding(0) ,fSystemId(0) ,fMemoryManager(manager) { } DOMLSOutputImpl::~DOMLSOutputImpl() { fMemoryManager->deallocate(fEncoding); fMemoryManager->deallocate(fSystemId); } void DOMLSOutputImpl::setByteStream(XMLFormatTarget* stream) { fByteStream=stream; } void DOMLSOutputImpl::setEncoding(const XMLCh* const encodingStr) { fMemoryManager->deallocate(fEncoding); fEncoding = XMLString::replicate(encodingStr, fMemoryManager); } void DOMLSOutputImpl::setSystemId(const XMLCh* const systemId) { fMemoryManager->deallocate(fSystemId); fSystemId = XMLString::replicate(systemId, fMemoryManager); } void DOMLSOutputImpl::release() { delete this; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMAttrNSImpl.cpp0000644000175000017500000001743111325541216021255 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMAttrNSImpl.cpp 901107 2010-01-20 08:45:02Z borisk $ */ #include #include "DOMAttrNSImpl.hpp" #include "DOMDocumentImpl.hpp" #include #include #include #include "assert.h" XERCES_CPP_NAMESPACE_BEGIN DOMAttrNSImpl::DOMAttrNSImpl(DOMDocument *ownerDoc, const XMLCh *nam) : DOMAttrImpl(ownerDoc, nam) { this->fNamespaceURI=0; //DOM Level 2 this->fLocalName=0; //DOM Level 2 this->fPrefix=0; } //Introduced in DOM Level 2 DOMAttrNSImpl::DOMAttrNSImpl(DOMDocument *ownerDoc, const XMLCh *namespaceURI, const XMLCh *qualifiedName) : DOMAttrImpl(ownerDoc, qualifiedName) { setName(namespaceURI, qualifiedName); } DOMAttrNSImpl:: DOMAttrNSImpl(DOMDocument *ownerDoc, const XMLCh *namespaceURI, const XMLCh *prefix, const XMLCh *localName, const XMLCh *qualifiedName) : DOMAttrImpl(ownerDoc, qualifiedName) { DOMDocumentImpl* docImpl = (DOMDocumentImpl*)fParent.fOwnerDocument; if (prefix == 0 || *prefix == 0) { fPrefix = 0; fLocalName = fName; } else { fPrefix = docImpl->getPooledString(prefix); fLocalName = docImpl->getPooledString(localName); } // DOM Level 3: namespace URI is never empty string. // const XMLCh * URI = DOMNodeImpl::mapPrefix ( fPrefix, (!namespaceURI || !*namespaceURI) ? 0 : namespaceURI, DOMNode::ATTRIBUTE_NODE ); this -> fNamespaceURI = (URI == 0) ? 0 : docImpl->getPooledString(URI); } DOMAttrNSImpl::DOMAttrNSImpl(const DOMAttrNSImpl &other, bool deep) : DOMAttrImpl(other, deep) { this->fNamespaceURI = other.fNamespaceURI; //DOM Level 2 this->fLocalName = other.fLocalName; //DOM Level 2 this->fPrefix = other.fPrefix; } DOMNode * DOMAttrNSImpl::cloneNode(bool deep) const { DOMNode* newNode = new (fParent.fOwnerDocument, DOMMemoryManager::ATTR_NS_OBJECT) DOMAttrNSImpl(*this, deep); fNode.callUserDataHandlers(DOMUserDataHandler::NODE_CLONED, this, newNode); return newNode; } const XMLCh * DOMAttrNSImpl::getNamespaceURI() const { return fNamespaceURI; } const XMLCh * DOMAttrNSImpl::getPrefix() const { return fPrefix; } const XMLCh * DOMAttrNSImpl::getLocalName() const { return fLocalName; } void DOMAttrNSImpl::setPrefix(const XMLCh *prefix) { const XMLCh * xmlns = DOMNodeImpl::getXmlnsString(); if (fNode.isReadOnly()) throw DOMException(DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMNodeMemoryManager); if (fNamespaceURI == 0 || fNamespaceURI[0] == chNull || XMLString::equals(fLocalName, xmlns)) throw DOMException(DOMException::NAMESPACE_ERR, 0, GetDOMNodeMemoryManager); if (prefix == 0 || prefix[0] == chNull) { fName = fLocalName; fPrefix = 0; return; } DOMDocumentImpl* doc = (DOMDocumentImpl*) fParent.fOwnerDocument; if (!doc->isXMLName(prefix)) throw DOMException(DOMException::INVALID_CHARACTER_ERR,0, GetDOMNodeMemoryManager); const XMLCh * xml = DOMNodeImpl::getXmlString(); const XMLCh * xmlURI = DOMNodeImpl::getXmlURIString(); const XMLCh * xmlnsURI = DOMNodeImpl::getXmlnsURIString(); if ((XMLString::equals(prefix, xml) && !XMLString::equals(fNamespaceURI, xmlURI)) || (XMLString::equals(prefix, xmlns) && !XMLString::equals(fNamespaceURI, xmlnsURI))) throw DOMException(DOMException::NAMESPACE_ERR, 0, GetDOMNodeMemoryManager); if (XMLString::indexOf(prefix, chColon) != -1) { throw DOMException(DOMException::NAMESPACE_ERR, 0, GetDOMNodeMemoryManager); } this-> fPrefix = doc->getPooledString(prefix); XMLSize_t prefixLen = XMLString::stringLen(prefix); XMLSize_t newQualifiedNameLen = prefixLen+1+XMLString::stringLen(fLocalName); XMLCh* newName; XMLCh temp[256]; if (newQualifiedNameLen >= 255) newName = (XMLCh*) doc->getMemoryManager()->allocate ( newQualifiedNameLen * sizeof(XMLCh) );//new XMLCh[newQualifiedNameLen]; else newName = temp; // newName = prefix + chColon + fLocalName; XMLString::copyString(newName, prefix); newName[prefixLen] = chColon; XMLString::copyString(&newName[prefixLen+1], fLocalName); fName = doc->getPooledString(newName); if (newQualifiedNameLen >= 255) doc->getMemoryManager()->deallocate(newName);//delete[] newName; } void DOMAttrNSImpl::release() { if (fNode.isOwned() && !fNode.isToBeReleased()) throw DOMException(DOMException::INVALID_ACCESS_ERR,0, GetDOMNodeMemoryManager); DOMDocumentImpl* doc = (DOMDocumentImpl*)fParent.fOwnerDocument; if (doc) { fNode.callUserDataHandlers(DOMUserDataHandler::NODE_DELETED, 0, 0); fParent.release(); doc->release(this, DOMMemoryManager::ATTR_NS_OBJECT); } else { // shouldn't reach here throw DOMException(DOMException::INVALID_ACCESS_ERR,0, GetDOMNodeMemoryManager); } } DOMNode* DOMAttrNSImpl::rename(const XMLCh* namespaceURI, const XMLCh* name) { DOMElement* el = getOwnerElement(); if (el) el->removeAttributeNode(this); setName(namespaceURI, name); if (el) el->setAttributeNodeNS(this); return this; } void DOMAttrNSImpl::setName(const XMLCh* namespaceURI, const XMLCh* qualifiedName) { DOMDocumentImpl* ownerDoc = (DOMDocumentImpl *)fParent.fOwnerDocument; const XMLCh * xmlns = DOMNodeImpl::getXmlnsString(); const XMLCh * xmlnsURI = DOMNodeImpl::getXmlnsURIString(); this->fName = ownerDoc->getPooledString(qualifiedName); int index = DOMDocumentImpl::indexofQualifiedName(qualifiedName); if (index < 0) throw DOMException(DOMException::NAMESPACE_ERR, 0, GetDOMNodeMemoryManager); bool xmlnsAlone = false; //true if attribute name is "xmlns" if (index == 0) { //qualifiedName contains no ':' if (XMLString::equals(this->fName, xmlns)) { if (!XMLString::equals(namespaceURI, xmlnsURI)) throw DOMException(DOMException::NAMESPACE_ERR, 0, GetDOMNodeMemoryManager); xmlnsAlone = true; } fPrefix = 0; fLocalName = fName; } else { fPrefix = ownerDoc->getPooledNString(fName, index); fLocalName = ownerDoc->getPooledString(fName+index+1); // Before we carry on, we should check if the prefix or localName are valid XMLName if (!ownerDoc->isXMLName(fPrefix) || !ownerDoc->isXMLName(fLocalName)) throw DOMException(DOMException::NAMESPACE_ERR, 0, GetDOMNodeMemoryManager); } // DOM Level 3: namespace URI is never empty string. const XMLCh * URI = xmlnsAlone ? xmlnsURI : DOMNodeImpl::mapPrefix ( fPrefix, (!namespaceURI || !*namespaceURI) ? 0 : namespaceURI, DOMNode::ATTRIBUTE_NODE ); this -> fNamespaceURI = (URI == 0) ? 0 : ownerDoc->getPooledString(URI); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMNodeIDMap.cpp0000644000175000017500000001501111040354527021011 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMNodeIDMap.cpp 678144 2008-07-19 12:08:55Z borisk $ */ #include "DOMAttrImpl.hpp" #include "DOMDocumentImpl.hpp" #include "DOMNodeIDMap.hpp" #include #include #include XERCES_CPP_NAMESPACE_BEGIN static const XMLSize_t gPrimes[] = {997, 9973, 99991, 999983, 0 }; // To do - add a few more. static const float gMaxFill = 0.8f; // The maximum fraction of the total // table entries to consume before exanding. DOMNodeIDMap::DOMNodeIDMap(XMLSize_t initialSize, DOMDocument *doc) : fNumEntries(0) , fDoc(doc) { for (fSizeIndex = 0; gPrimes[fSizeIndex] < initialSize; fSizeIndex++) { if (gPrimes[fSizeIndex] == 0) { // We need a bigger size than the largest available one. // Big trouble. fSizeIndex--; ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::NodeIDMap_GrowErr, ((DOMDocumentImpl *)fDoc)->getMemoryManager()); } } fSize = gPrimes[fSizeIndex]; fMaxEntries = (XMLSize_t)(float(fSize) * gMaxFill); //fTable = new (fDoc) DOMAttr*[fSize]; fTable = (DOMAttr**) ((DOMDocumentImpl *)fDoc)->allocate(sizeof(DOMAttr*) * fSize); XMLSize_t i; for (i=0; i= fMaxEntries) growTable(); fNumEntries++; // // Hash the value string from the ID attribute being added to the table // 0 < Initial hash value < table size. // An initial hash of zero would cause the rehash to fail. // const XMLCh *id=attr->getValue(); XMLSize_t initalHash = XMLString::hash(id, fSize-1); initalHash++; XMLSize_t currentHash = initalHash; // // Loop looking for an empty slot for this ID. // Don't even bother checking to see if the ID is already there - // the table is only filled by the parser from valid documents, which // can not have duplicates. Behavior of invalid docs is not defined. // while (fTable[currentHash]!=0 && fTable[currentHash]!=(DOMAttr *)-1) { currentHash += initalHash; // rehash if (currentHash >= fSize) currentHash = currentHash % fSize; } // // We've found our slot. Stick the pointer to the attr into it. // fTable[currentHash] = attr; } void DOMNodeIDMap::remove(DOMAttr *attr) { // // Hash the value string from the ID attribute being added to the table // 0 < Initial hash value < table size. // An initial hash of zero would cause the rehash to fail. // const XMLCh *id=attr->getValue(); XMLSize_t initalHash = XMLString::hash(id, fSize-1); initalHash++; XMLSize_t currentHash = initalHash; // // Loop looking for a slot pointing to an attr with this id. // DOMAttr *tableSlot; while ((tableSlot= fTable[currentHash])!=0) { if (tableSlot == attr) { // Found the attribute. Set the slot to -1 to indicate // that it was once used, meaning that lookups, while never // matching here, can not stop either, but must rehash again // and continue searching. fTable[currentHash] = (DOMAttr *)-1; return; } currentHash += initalHash; // rehash. if (currentHash >= fSize) currentHash = currentHash % fSize; } // There is no matching entry in the table } DOMAttr *DOMNodeIDMap::find(const XMLCh *id) { // // Get the hashcode for the supplied string. // XMLSize_t initalHash = XMLString::hash(id, fSize-1); initalHash++; XMLSize_t currentHash = initalHash; // // Loop looking for a slot pointing to an attr with this id. // DOMAttr *tableSlot; while ((tableSlot= fTable[currentHash])!=0) { if ((tableSlot != (DOMAttr *)-1) && XMLString::equals(tableSlot->getValue(), id)) return tableSlot; currentHash += initalHash; // rehash if (currentHash >= fSize) currentHash = currentHash % fSize; } // There is no matching entry in the table return 0; } // // Grow the table to the next larger size. // It has gotten too full for efficient operation. // (We never fill it all the way) // void DOMNodeIDMap::growTable() { DOMAttr **oldTable = fTable; XMLSize_t oldSize = fSize; // // Figure the new table size. // #if defined(XERCES_DEBUG) fprintf(stderr, "growing...\n"); #endif fSizeIndex++; fSize = gPrimes[fSizeIndex]; if (fSize == 0) { // We need to grow bigger than the largest available size. // Big trouble. fSizeIndex--; ThrowXMLwithMemMgr(RuntimeException, XMLExcepts::NodeIDMap_GrowErr, ((DOMDocumentImpl *)fDoc)->getMemoryManager()); } // // Allocate the new table. // //fTable = new (fDoc) DOMAttr *[fSize]; fTable = (DOMAttr**) ((DOMDocumentImpl *)fDoc)->allocate(sizeof(DOMAttr*) * fSize); XMLSize_t i; for (i=0; i for the entire // DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class // name is substituded for the *. // #include #include #include #include #include #include #include #include #include #include "DOMNodeImpl.hpp" #include "DOMStringPool.hpp" #include "DOMParentNode.hpp" #include "DOMDeepNodeListPool.hpp" XERCES_CPP_NAMESPACE_BEGIN class DOMAttrImpl; class DOMCDATASectionImpl; class DOMCommentImpl; class DOMConfiguration; class DOMDeepNodeListImpl; class DOMDocumentFragmentImpl; class DOMDocumentTypeImpl; class DOMElementImpl; class DOMEntityImpl; class DOMEntityReferenceImpl; class DOMNotationImpl; class DOMProcessingInstructionImpl; class DOMTextImpl; class DOMNodeIteratorImpl; class DOMNormalizer; class DOMTreeWalkerImpl; class DOMNodeFilter; class DOMNodeFilterImpl; class DOMImplementation; class DOMNodeIDMap; class DOMRangeImpl; class DOMBuffer; class MemoryManager; class XPathNSResolver; class XPathExpression; typedef RefVectorOf Ranges; typedef RefVectorOf NodeIterators; typedef KeyRefPair DOMUserDataRecord; typedef RefStackOf DOMNodePtr; class CDOM_EXPORT DOMDocumentImpl: public XMemory, public DOMMemoryManager, public DOMDocument { public: // ----------------------------------------------------------------------- // data // ----------------------------------------------------------------------- DOMNodeImpl fNode; // Implements common node functionality. DOMParentNode fParent; // Implements common parent node functionality DOMNodeIDMap* fNodeIDMap; // for use by GetElementsById(). public: DOMDocumentImpl(DOMImplementation* domImpl, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); DOMDocumentImpl(const XMLCh* namespaceURI, //DOM Level 2 const XMLCh* qualifiedName, DOMDocumentType* doctype, DOMImplementation* domImpl, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); virtual ~DOMDocumentImpl(); void setDocumentType(DOMDocumentType *doctype); public: // Add all functions that are pure virtual in DOMNODE DOMNODE_FUNCTIONS; public: // Add all functions that are pure virtual in DOMDocument virtual DOMAttr* createAttribute(const XMLCh *name); virtual DOMCDATASection* createCDATASection(const XMLCh *data); virtual DOMComment* createComment(const XMLCh *data); virtual DOMDocumentFragment* createDocumentFragment(); virtual DOMDocumentType* createDocumentType(const XMLCh *name); virtual DOMDocumentType* createDocumentType(const XMLCh *qName, const XMLCh *publicId, const XMLCh *systemId); virtual DOMElement* createElement(const XMLCh * tagName); virtual DOMElement* createElementNoCheck(const XMLCh *tagName); virtual DOMEntity* createEntity(const XMLCh * name); virtual DOMEntityReference* createEntityReference(const XMLCh * name); virtual DOMNotation* createNotation(const XMLCh * name); virtual DOMProcessingInstruction* createProcessingInstruction(const XMLCh * target, const XMLCh * data); virtual DOMText* createTextNode(const XMLCh * data); virtual DOMDocumentType* getDoctype() const; virtual DOMElement* getDocumentElement() const; virtual DOMNodeList* getElementsByTagName(const XMLCh * tagname) const; virtual DOMImplementation* getImplementation() const; bool isXMLName(const XMLCh * s); virtual DOMNodeIterator* createNodeIterator(DOMNode *root, DOMNodeFilter::ShowType whatToShow, DOMNodeFilter* filter, bool entityReferenceExpansion); virtual DOMTreeWalker* createTreeWalker(DOMNode *root, DOMNodeFilter::ShowType whatToShow, DOMNodeFilter* filter, bool entityReferenceExpansion); virtual DOMRange* createRange(); virtual Ranges* getRanges() const; //non-standard api virtual NodeIterators* getNodeIterators() const; //non-standard api virtual void removeRange(DOMRangeImpl* range); //non-standard api virtual void removeNodeIterator(DOMNodeIteratorImpl* nodeIterator); //non-standard api virtual DOMXPathExpression* createExpression(const XMLCh *expression, const DOMXPathNSResolver *resolver); virtual DOMXPathNSResolver* createNSResolver(const DOMNode *nodeResolver); virtual DOMXPathResult* evaluate(const XMLCh *expression, const DOMNode *contextNode, const DOMXPathNSResolver *resolver, DOMXPathResult::ResultType type, DOMXPathResult* result); // Extension to be called by the Parser DOMEntityReference* createEntityReferenceByParser(const XMLCh * name); // Add all functions that are pure virtual in DOMMemoryManager virtual XMLSize_t getMemoryAllocationBlockSize() const; virtual void setMemoryAllocationBlockSize(XMLSize_t size); virtual void* allocate(XMLSize_t amount); virtual void* allocate(XMLSize_t amount, DOMMemoryManager::NodeObjectType type); virtual void release(DOMNode* object, DOMMemoryManager::NodeObjectType type); virtual XMLCh* cloneString(const XMLCh *src); // // Functions to keep track of document mutations, so that node list chached // information can be invalidated. One global changes counter per document. // virtual void changed(); virtual int changes() const; /** * Sets whether the DOM implementation performs error checking * upon operations. Turning off error checking only affects * the following DOM checks: *

      *
    • Checking strings to make sure that all characters are * legal XML characters *
    • Hierarchy checking such as allowed children, checks for * cycles, etc. *
    *

    * Turning off error checking does not turn off the * following checks: *

      *
    • Read only checks *
    • Checks related to DOM events *
    */ inline void setErrorChecking(bool check) { errorChecking = check; } /** * Returns true if the DOM implementation performs error checking. */ inline bool getErrorChecking() const { return errorChecking; } //Introduced in DOM Level 2 virtual DOMNode* importNode(const DOMNode *source, bool deep); virtual DOMElement* createElementNS(const XMLCh *namespaceURI, const XMLCh *qualifiedName); virtual DOMElement* createElementNS(const XMLCh *namespaceURI, const XMLCh *qualifiedName, const XMLFileLoc lineNo, const XMLFileLoc columnNo); virtual DOMAttr* createAttributeNS(const XMLCh *namespaceURI, const XMLCh *qualifiedName); virtual DOMNodeList* getElementsByTagNameNS(const XMLCh *namespaceURI, const XMLCh *localName) const; virtual DOMElement* getElementById(const XMLCh *elementId) const; //Introduced in DOM Level 3 virtual const XMLCh* getInputEncoding() const; virtual const XMLCh* getXmlEncoding() const; virtual bool getXmlStandalone() const; virtual void setXmlStandalone(bool standalone); virtual const XMLCh* getXmlVersion() const; virtual void setXmlVersion(const XMLCh* version); virtual const XMLCh* getDocumentURI() const; virtual void setDocumentURI(const XMLCh* documentURI); virtual bool getStrictErrorChecking() const; virtual void setStrictErrorChecking(bool strictErrorChecking); virtual DOMNode* adoptNode(DOMNode* source); virtual void normalizeDocument(); virtual DOMConfiguration* getDOMConfig() const; void setInputEncoding(const XMLCh* actualEncoding); void setXmlEncoding(const XMLCh* encoding); // helper functions to prevent storing userdata pointers on every node. void* setUserData(DOMNodeImpl* n, const XMLCh* key, void* data, DOMUserDataHandler* handler); void* getUserData(const DOMNodeImpl* n, const XMLCh* key) const; void callUserDataHandlers(const DOMNodeImpl* n, DOMUserDataHandler::DOMOperationType operation, const DOMNode* src, DOMNode* dst) const; void transferUserData(DOMNodeImpl* n1, DOMNodeImpl* n2); DOMNode* renameNode(DOMNode* n, const XMLCh* namespaceURI, const XMLCh* name); //Return the index > 0 of ':' in the given qualified name qName="prefix:localName". //Return 0 if there is no ':', or -1 if qName is malformed such as ":abcd". static int indexofQualifiedName(const XMLCh * qName); static bool isKidOK(DOMNode *parent, DOMNode *child); inline DOMNodeIDMap* getNodeIDMap() {return fNodeIDMap;}; // // Memory Management Functions. All memory is allocated by and owned by // a document, and is not recovered until the // document itself is deleted. // const XMLCh* getPooledString(const XMLCh*); const XMLCh* getPooledNString(const XMLCh*, XMLSize_t); void deleteHeap(); void releaseDocNotifyUserData(DOMNode* object); void releaseBuffer(DOMBuffer* buffer); DOMBuffer* popBuffer(XMLSize_t nMinSize); MemoryManager* getMemoryManager() const; // Factory methods for getting/creating node lists. // Because nothing is ever deleted, the implementation caches and recycles // previously used instances of DOMDeepNodeList // DOMNodeList* getDeepNodeList(const DOMNode *rootNode, const XMLCh *tagName); DOMNodeList* getDeepNodeList(const DOMNode *rootNode, //DOM Level 2 const XMLCh *namespaceURI, const XMLCh *localName); protected: //Internal helper functions virtual DOMNode* importNode(const DOMNode *source, bool deep, bool cloningNode); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DOMDocumentImpl(const DOMDocumentImpl &); DOMDocumentImpl & operator = (const DOMDocumentImpl &); protected: // ----------------------------------------------------------------------- // data // ----------------------------------------------------------------------- // New data introduced in DOM Level 3 const XMLCh* fInputEncoding; const XMLCh* fXmlEncoding; bool fXmlStandalone; const XMLCh* fXmlVersion; const XMLCh* fDocumentURI; DOMConfiguration* fDOMConfiguration; XMLStringPool fUserDataTableKeys; RefHash2KeysTableOf* fUserDataTable; // Per-Document heap Variables. // The heap consists of one or more biggish blocks which are // sub-allocated for individual allocations of nodes, strings, etc. // The big blocks form a linked list, allowing them to be located for deletion. // // There is no provision for deleting suballocated blocks, other than // deleting the entire heap when the document is deleted. // // There is no header on individual sub-allocated blocks. // The header on big blocks consists only of a single back pointer to // the previously allocated big block (our linked list of big blocks) // // // revisit - this heap should be encapsulated into its own // class, rather than hanging naked on Document. // void* fCurrentBlock; char* fFreePtr; XMLSize_t fFreeBytesRemaining, fHeapAllocSize; // To recycle the DOMNode pointer RefArrayOf* fRecycleNodePtr; // To recycle DOMBuffer pointer RefStackOf* fRecycleBufferPtr; // Pool of DOMNodeList for getElementsByTagName DOMDeepNodeListPool* fNodeListPool; // Other data DOMDocumentType* fDocType; DOMElement* fDocElement; DOMStringPoolEntry** fNameTable; XMLSize_t fNameTableSize; DOMNormalizer* fNormalizer; Ranges* fRanges; NodeIterators* fNodeIterators; MemoryManager* fMemoryManager; // configurable memory manager DOMImplementation* fDOMImplementation; int fChanges; bool errorChecking; // Bypass error checking. }; inline MemoryManager* DOMDocumentImpl::getMemoryManager() const { return fMemoryManager; } inline const XMLCh* DOMDocumentImpl::getPooledString(const XMLCh *in) { if (in == 0) return 0; DOMStringPoolEntry **pspe; DOMStringPoolEntry *spe; XMLSize_t inHash = XMLString::hash(in, fNameTableSize); pspe = &fNameTable[inHash]; while (*pspe != 0) { if (XMLString::equals((*pspe)->fString, in)) return (*pspe)->fString; pspe = &((*pspe)->fNext); } // This string hasn't been seen before. Add it to the pool. // // Compute size to allocate. Note that there's 1 char of string // declared in the struct, so we don't need to add one again to // account for the trailing null. // XMLSize_t sizeToAllocate = sizeof(DOMStringPoolEntry) + XMLString::stringLen(in)*sizeof(XMLCh); *pspe = spe = (DOMStringPoolEntry *)allocate(sizeToAllocate); spe->fNext = 0; XMLString::copyString((XMLCh*)spe->fString, in); return spe->fString; } inline const XMLCh* DOMDocumentImpl:: getPooledNString(const XMLCh *in, XMLSize_t n) { if (in == 0) return 0; DOMStringPoolEntry **pspe; DOMStringPoolEntry *spe; XMLSize_t inHash = XMLString::hashN(in, n, fNameTableSize); pspe = &fNameTable[inHash]; while (*pspe != 0) { if (XMLString::equalsN((*pspe)->fString, in, n)) return (*pspe)->fString; pspe = &((*pspe)->fNext); } // This string hasn't been seen before. Add it to the pool. // // Compute size to allocate. Note that there's 1 char of string // declared in the struct, so we don't need to add one again to // account for the trailing null. // XMLSize_t sizeToAllocate = sizeof(DOMStringPoolEntry) + n*sizeof(XMLCh); *pspe = spe = (DOMStringPoolEntry *)allocate(sizeToAllocate); spe->fNext = 0; XMLString::copyNString((XMLCh*)spe->fString, in, n); return spe->fString; } inline int DOMDocumentImpl::indexofQualifiedName(const XMLCh* name) { int i = 0; int colon = -1; int colon_count = 0; for (; *name != 0; ++i, ++name) { if (*name == chColon) { ++colon_count; colon = i; } } if (i == 0 || colon == 0 || colon == (i - 1) || colon_count > 1) return -1; return colon != -1 ? colon : 0; } XERCES_CPP_NAMESPACE_END // --------------------------------------------------------------------------- // // Operator new. Global overloaded version, lets any object be allocated on // the heap owned by a document. // // --------------------------------------------------------------------------- inline void * operator new(size_t amt, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentImpl *doc, XERCES_CPP_NAMESPACE_QUALIFIER DOMMemoryManager::NodeObjectType type) { void *p = doc->allocate(amt, type); return p; } inline void * operator new(size_t amt, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *doc, XERCES_CPP_NAMESPACE_QUALIFIER DOMMemoryManager::NodeObjectType type) { XERCES_CPP_NAMESPACE_QUALIFIER DOMMemoryManager* mgr=(XERCES_CPP_NAMESPACE_QUALIFIER DOMMemoryManager*)doc->getFeature(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgXercescInterfaceDOMMemoryManager,0); void* p=0; if(mgr) p = mgr->allocate(amt, type); return p; } inline void * operator new(size_t amt, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentImpl *doc) { void* p = doc->allocate(amt); return p; } inline void * operator new(size_t amt, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument *doc) { XERCES_CPP_NAMESPACE_QUALIFIER DOMMemoryManager* mgr=(XERCES_CPP_NAMESPACE_QUALIFIER DOMMemoryManager*)doc->getFeature(XERCES_CPP_NAMESPACE_QUALIFIER XMLUni::fgXercescInterfaceDOMMemoryManager,0); void* p=0; if(mgr) p = mgr->allocate(amt); return p; } // --------------------------------------------------------------------------- // For DOM: // Bypass compiler warning: // no matching operator delete found; memory will not be freed if initialization throws an exception // --------------------------------------------------------------------------- #if !defined(XERCES_NO_MATCHING_DELETE_OPERATOR) inline void operator delete(void* /*ptr*/, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentImpl * /*doc*/, XERCES_CPP_NAMESPACE_QUALIFIER DOMMemoryManager::NodeObjectType /*type*/) { return; } inline void operator delete(void* /*ptr*/, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument * /*doc*/, XERCES_CPP_NAMESPACE_QUALIFIER DOMMemoryManager::NodeObjectType /*type*/) { return; } inline void operator delete(void* /*ptr*/, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocumentImpl * /*doc*/) { return; } inline void operator delete(void* /*ptr*/, XERCES_CPP_NAMESPACE_QUALIFIER DOMDocument * /*doc*/) { return; } #endif #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMNotationImpl.hpp0000644000175000017500000000542710772402041021701 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMNotationImpl.hpp 641193 2008-03-26 08:06:57Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMNOTATIONIMPL_HPP) #define XERCESC_INCLUDE_GUARD_DOMNOTATIONIMPL_HPP // // This file is part of the internal implementation of the C++ XML DOM. // It should NOT be included or used directly by application programs. // // Applications should include the file for the entire // DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class // name is substituded for the *. // #include #include XERCES_CPP_NAMESPACE_BEGIN #include "DOMNodeImpl.hpp" class DOMDocument; class CDOM_EXPORT DOMNotationImpl: public DOMNotation { public: DOMNodeImpl fNode; const XMLCh * fName; const XMLCh * fPublicId; const XMLCh * fSystemId; const XMLCh * fBaseURI; public: DOMNotationImpl(DOMDocument *ownerDoc, const XMLCh *); DOMNotationImpl(const DOMNotationImpl &other, bool deep=false); virtual ~DOMNotationImpl(); public: // Declare all of the functions from DOMNode. DOMNODE_FUNCTIONS; public: // // The Public Identifier for this Notation. If no public identifier // was specified, this will be null. virtual const XMLCh * getPublicId() const; // The System Identifier for this Notation. If no system identifier // was specified, this will be null. virtual const XMLCh * getSystemId() const; // NON-DOM: The Public Identifier for this Notation. If no public // identifier was specified, this will be null. virtual void setPublicId(const XMLCh *arg); // NON-DOM: The System Identifier for this Notation. If no system // identifier was specified, this will be null. virtual void setSystemId(const XMLCh *arg); // NON-DOM: set base uri virtual void setBaseURI(const XMLCh *arg); private: // unimplemented DOMNotationImpl& operator= (const DOMNotationImpl& other); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMNormalizer.cpp0000644000175000017500000004057211037122704021401 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include "DOMConfigurationImpl.hpp" #include "DOMDocumentImpl.hpp" #include "DOMElementImpl.hpp" #include "DOMErrorImpl.hpp" #include "DOMEntityReferenceImpl.hpp" #include "DOMNormalizer.hpp" #include "DOMTextImpl.hpp" XERCES_CPP_NAMESPACE_BEGIN static XMLMsgLoader* gMsgLoader = 0; void XMLInitializer::initializeDOMNormalizer() { gMsgLoader = XMLPlatformUtils::loadMsgSet(XMLUni::fgXMLErrDomain); if (!gMsgLoader) XMLPlatformUtils::panic(PanicHandler::Panic_CantLoadMsgDomain); } void XMLInitializer::terminateDOMNormalizer() { delete gMsgLoader; gMsgLoader = 0; } // // DOMNormalizer::DOMNormalizer(MemoryManager* const manager) : fDocument(0) , fConfiguration(0) , fErrorHandler(0) , fNSScope(0) , fNewNamespaceCount(1) , fMemoryManager(manager) { fNSScope = new (fMemoryManager) InScopeNamespaces(fMemoryManager); } DOMNormalizer::~DOMNormalizer() { delete fNSScope; } void DOMNormalizer::normalizeDocument(DOMDocumentImpl *doc) { fDocument = doc; fConfiguration = (DOMConfigurationImpl*)doc->getDOMConfig(); DOMConfigurationImpl *dci = (DOMConfigurationImpl*)fDocument->getDOMConfig(); if(dci) fErrorHandler = dci->getErrorHandler(); else fErrorHandler = 0; DOMNode *child = 0; DOMNode *next = 0; ((DOMNormalizer *)this)->fNewNamespaceCount = 1; for(child = doc->getFirstChild();child != 0; child = next) { next = child->getNextSibling(); child = normalizeNode(child); if(child != 0) { next = child; } } } DOMNode * DOMNormalizer::normalizeNode(DOMNode *node) const { switch(node->getNodeType()) { case DOMNode::ELEMENT_NODE: { fNSScope->addScope(fMemoryManager); DOMNamedNodeMap *attrMap = node->getAttributes(); if(fConfiguration->featureValues & DOMConfigurationImpl::FEATURE_NAMESPACES) { namespaceFixUp((DOMElementImpl*)node); } else { //this is done in namespace fixup so no need to do it if namespace is on if(attrMap) { for(XMLSize_t i = 0; i < attrMap->getLength(); i++) { attrMap->item(i)->normalize(); } } } DOMNode *child = node->getFirstChild(); DOMNode *next = 0; for (; child != 0; child = next) { next = child->getNextSibling(); child = normalizeNode(child); if(child != 0) { next = child; } } fNSScope->removeScope(); break; } case DOMNode::COMMENT_NODE: { if (!(fConfiguration->featureValues & DOMConfigurationImpl::FEATURE_COMMENTS)) { DOMNode *prevSibling = node->getPreviousSibling(); DOMNode *parent = node->getParentNode(); // remove the comment node parent->removeChild(node); if (prevSibling != 0 && prevSibling->getNodeType() == DOMNode::TEXT_NODE) { DOMNode *nextSibling = prevSibling->getNextSibling(); if (nextSibling != 0 && nextSibling->getNodeType() == DOMNode::TEXT_NODE) { ((DOMTextImpl*)nextSibling)->insertData(0, prevSibling->getNodeValue()); parent->removeChild(prevSibling); return nextSibling; } } } break; } case DOMNode::CDATA_SECTION_NODE: { if (!(fConfiguration->featureValues & DOMConfigurationImpl::FEATURE_CDATA_SECTIONS)) { // convert CDATA to TEXT nodes DOMText *text = fDocument->createTextNode(node->getNodeValue()); DOMNode *parent = node->getParentNode(); DOMNode *prevSibling = node->getPreviousSibling(); node = parent->replaceChild(text, node); if (prevSibling != 0 && prevSibling->getNodeType() == DOMNode::TEXT_NODE) { text->insertData(0, prevSibling->getNodeValue()); parent->removeChild(prevSibling); } return text; // Don't advance; } break; } case DOMNode::TEXT_NODE: { DOMNode *next = node->getNextSibling(); if(next != 0 && next->getNodeType() == DOMNode::TEXT_NODE) { ((DOMText*)node)->appendData(next->getNodeValue()); node->getParentNode()->removeChild(next); return node; } else { const XMLCh* nv = node->getNodeValue(); if (nv == 0 || *nv == 0) { node->getParentNode()->removeChild(node); } } } default: break; } return 0; } void DOMNormalizer::namespaceFixUp(DOMElementImpl *ele) const { DOMAttrMapImpl *attrMap = ele->fAttributes; XMLSize_t len = attrMap->getLength(); //get the ns info from the attrs for(XMLSize_t i = 0; i < len; i++) { DOMAttr *at = (DOMAttr*)attrMap->item(i); //normalize the attr whatever happens at->normalize(); const XMLCh *uri = at->getNamespaceURI(); const XMLCh *value = at->getNodeValue(); if(XMLString::equals(XMLUni::fgXMLNSURIName, uri)) { if(XMLString::equals(XMLUni::fgXMLNSURIName, value)) { error(XMLErrs::NSDeclInvalid, ele); } else { const XMLCh *prefix = at->getPrefix(); if(XMLString::equals(prefix, XMLUni::fgXMLNSString)) { fNSScope->addOrChangeBinding(at->getLocalName(), value, fMemoryManager); } else { fNSScope->addOrChangeBinding(XMLUni::fgZeroLenString, value, fMemoryManager); } } } } const XMLCh* prefix = ele->getPrefix(); prefix ? prefix : prefix = XMLUni::fgZeroLenString; const XMLCh* uri = ele->getNamespaceURI(); uri ? uri : uri = XMLUni::fgZeroLenString; if(!XMLString::equals(uri, XMLUni::fgZeroLenString)) { if(!fNSScope->isValidBinding(prefix, uri)) { addOrChangeNamespaceDecl(prefix, uri, ele); fNSScope->addOrChangeBinding(prefix, uri, fMemoryManager); } } else { if(ele->getLocalName() == 0) { error(XMLErrs::DOMLevel1Node, ele); } else if(!fNSScope->isValidBinding(XMLUni::fgZeroLenString, XMLUni::fgZeroLenString)) { addOrChangeNamespaceDecl(XMLUni::fgZeroLenString, XMLUni::fgZeroLenString, ele); fNSScope->addOrChangeBinding(XMLUni::fgZeroLenString, XMLUni::fgZeroLenString, fMemoryManager); } } //fix up non ns attrs len = attrMap->getLength(); // hp aCC complains this i is a redefinition of the i on line 283 for(XMLSize_t j = 0; j < len; j++) { DOMAttr *at = (DOMAttr*)attrMap->item(j); const XMLCh *uri = at->getNamespaceURI(); const XMLCh* prefix = at->getPrefix(); if(!XMLString::equals(XMLUni::fgXMLNSURIName, uri)) { if(uri != 0) { if(prefix == 0 || !fNSScope->isValidBinding(prefix, uri)) { const XMLCh* newPrefix = fNSScope->getPrefix(uri); if(newPrefix != 0) { at->setPrefix(newPrefix); } else { if(prefix != 0 && !fNSScope->getUri(prefix)) { fNSScope->addOrChangeBinding(prefix, uri, fMemoryManager); addOrChangeNamespaceDecl(prefix, uri, ele); } else { newPrefix = addCustomNamespaceDecl(uri, ele); fNSScope->addOrChangeBinding(newPrefix, uri, fMemoryManager); at->setPrefix(newPrefix); } } } } else if(at->getLocalName() == 0) { error(XMLErrs::DOMLevel1Node, at); } } } } const XMLCh * DOMNormalizer::integerToXMLCh(unsigned int i) const { XMLCh *buf = (XMLCh*) fMemoryManager->allocate(15 * sizeof(XMLCh));//new XMLCh[15]; XMLCh *pos = buf + sizeof(buf) - sizeof(XMLCh); *pos = chNull; do { switch(i % 10) { case 0 : *--pos = chDigit_0;break; case 1 : *--pos = chDigit_1;break; case 2 : *--pos = chDigit_2;break; case 3 : *--pos = chDigit_3;break; case 4 : *--pos = chDigit_4;break; case 5 : *--pos = chDigit_5;break; case 6 : *--pos = chDigit_6;break; case 7 : *--pos = chDigit_7;break; case 8 : *--pos = chDigit_8;break; case 9 : *--pos = chDigit_9;break; default:; } i /= 10; } while (i); const XMLCh *copy = fDocument->getPooledString(pos); fMemoryManager->deallocate(buf);//delete[] buf; return copy; } void DOMNormalizer::addOrChangeNamespaceDecl(const XMLCh* prefix, const XMLCh* uri, DOMElementImpl* element) const { if (XMLString::equals(prefix, XMLUni::fgZeroLenString)) { element->setAttributeNS(XMLUni::fgXMLNSURIName, XMLUni::fgXMLNSString, uri); } else { XMLBuffer buf(1023, fMemoryManager); buf.set(XMLUni::fgXMLNSString); buf.append(chColon); buf.append(prefix); element->setAttributeNS(XMLUni::fgXMLNSURIName, buf.getRawBuffer(), uri); } } const XMLCh* DOMNormalizer::addCustomNamespaceDecl(const XMLCh* uri, DOMElementImpl *element) const { XMLBuffer preBuf(1023, fMemoryManager); preBuf.append(chLatin_N); preBuf.append(chLatin_S); preBuf.append(integerToXMLCh(fNewNamespaceCount)); ((DOMNormalizer *)this)->fNewNamespaceCount++; while(fNSScope->getUri(preBuf.getRawBuffer())) { preBuf.reset(); preBuf.append(chLatin_N); preBuf.append(chLatin_S); preBuf.append(integerToXMLCh(fNewNamespaceCount)); ((DOMNormalizer *)this)->fNewNamespaceCount++; } XMLBuffer buf(1023, fMemoryManager); buf.set(XMLUni::fgXMLNSString); buf.append(chColon); buf.append(preBuf.getRawBuffer()); element->setAttributeNS(XMLUni::fgXMLNSURIName, buf.getRawBuffer(), uri); return element->getAttributeNodeNS(XMLUni::fgXMLNSURIName, preBuf.getRawBuffer())->getLocalName(); } XMLSize_t DOMNormalizer::InScopeNamespaces::size() { return fScopes->size(); } DOMNormalizer::InScopeNamespaces::InScopeNamespaces(MemoryManager* const manager) : lastScopeWithBindings(0) { fScopes = new (manager) RefVectorOf(10, true, manager); } DOMNormalizer::InScopeNamespaces::~InScopeNamespaces() { delete fScopes; } void DOMNormalizer::InScopeNamespaces::addOrChangeBinding(const XMLCh *prefix, const XMLCh *uri, MemoryManager* const manager) { XMLSize_t s = fScopes->size(); if(!s) addScope(manager); Scope *curScope = fScopes->elementAt(s - 1); curScope->addOrChangeBinding(prefix, uri, manager); lastScopeWithBindings = curScope; } void DOMNormalizer::InScopeNamespaces::addScope(MemoryManager* const manager) { Scope *s = new (manager) Scope(lastScopeWithBindings); fScopes->addElement(s); } void DOMNormalizer::InScopeNamespaces::removeScope() { lastScopeWithBindings = fScopes->elementAt(fScopes->size() - 1)->fBaseScopeWithBindings; Scope *s = fScopes->orphanElementAt(fScopes->size() - 1); delete s; } bool DOMNormalizer::InScopeNamespaces::isValidBinding(const XMLCh* prefix, const XMLCh* uri) const { const XMLCh* actual = fScopes->elementAt(fScopes->size() - 1)->getUri(prefix); if(actual == 0 || !XMLString::equals(actual, uri)) return false; return true; } const XMLCh* DOMNormalizer::InScopeNamespaces::getPrefix(const XMLCh* uri) const { return fScopes->elementAt(fScopes->size() - 1)->getPrefix(uri); } const XMLCh* DOMNormalizer::InScopeNamespaces::getUri(const XMLCh* prefix) const { return fScopes->elementAt(fScopes->size() - 1)->getUri(prefix); } DOMNormalizer::InScopeNamespaces::Scope::Scope(Scope *baseScopeWithBindings) : fBaseScopeWithBindings(baseScopeWithBindings), fPrefixHash(0), fUriHash(0) { } DOMNormalizer::InScopeNamespaces::Scope::~Scope() { delete fPrefixHash; delete fUriHash; } void DOMNormalizer::InScopeNamespaces::Scope::addOrChangeBinding(const XMLCh *prefix, const XMLCh *uri, MemoryManager* const manager) { //initialize and copy forward now we need to if(!fUriHash) { fPrefixHash = new (manager) RefHashTableOf(10, (bool) false, manager); fUriHash = new (manager) RefHashTableOf(10, (bool) false, manager); if(fBaseScopeWithBindings) { RefHashTableOfEnumerator preEnumer(fBaseScopeWithBindings->fPrefixHash, false, manager); while(preEnumer.hasMoreElements()) { const XMLCh* prefix = (XMLCh*) preEnumer.nextElementKey(); const XMLCh* uri = fBaseScopeWithBindings->fPrefixHash->get((void*)prefix); //have to cast here because otherwise we have delete problems under windows :( fPrefixHash->put((void *)prefix, (XMLCh*)uri); } RefHashTableOfEnumerator uriEnumer(fBaseScopeWithBindings->fUriHash, false, manager); while(uriEnumer.hasMoreElements()) { const XMLCh* uri = (XMLCh*) uriEnumer.nextElementKey(); const XMLCh* prefix = fBaseScopeWithBindings->fUriHash->get((void*)uri); //have to cast here because otherwise we have delete problems under windows :( fUriHash->put((void *)uri, (XMLCh*)prefix); } } } const XMLCh *oldUri = fPrefixHash->get(prefix); if(oldUri) { fUriHash->removeKey(oldUri); } fPrefixHash->put((void *)prefix, (XMLCh*)uri); fUriHash->put((void *)uri, (XMLCh*)prefix); } const XMLCh* DOMNormalizer::InScopeNamespaces::Scope::getUri(const XMLCh *prefix) const { const XMLCh* uri = 0; if(fPrefixHash) { uri = fPrefixHash->get(prefix); } else if(fBaseScopeWithBindings) { uri = fBaseScopeWithBindings->getUri(prefix); } return uri ? uri : 0; } const XMLCh* DOMNormalizer::InScopeNamespaces::Scope::getPrefix(const XMLCh* uri) const { const XMLCh* prefix = 0; if(fUriHash) { prefix = fUriHash->get(uri); } else if(fBaseScopeWithBindings) { prefix = fBaseScopeWithBindings->getPrefix(uri); } return prefix ? prefix : 0; } void DOMNormalizer::error(const XMLErrs::Codes code, const DOMNode *node) const { if (fErrorHandler) { // Load the message into alocal and replace any tokens found in // the text. const XMLSize_t maxChars = 2047; XMLCh errText[maxChars + 1]; if (!gMsgLoader->loadMsg(code, errText, maxChars)) { // Should probably load a default message here } DOMErrorImpl domError( XMLErrs::DOMErrorType (code), 0, errText, (void*)node); bool toContinueProcess = true; try { toContinueProcess = fErrorHandler->handleError(domError); } catch(...) { } if (!toContinueProcess) throw (XMLErrs::Codes) code; } } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMDocumentFragmentImpl.cpp0000644000175000017500000001736311030714661023347 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMDocumentFragmentImpl.cpp 671894 2008-06-26 13:29:21Z borisk $ */ #include "DOMDocumentFragmentImpl.hpp" #include "DOMDocumentImpl.hpp" #include "DOMCasts.hpp" #include #include #include XERCES_CPP_NAMESPACE_BEGIN DOMDocumentFragmentImpl::DOMDocumentFragmentImpl(DOMDocument *masterDoc) : fNode(masterDoc), fParent(masterDoc) { } DOMDocumentFragmentImpl::DOMDocumentFragmentImpl(const DOMDocumentFragmentImpl &other, bool deep) : fNode(other.fNode), fParent(other.fParent) { if (deep) castToParentImpl(this)->cloneChildren(&other); } DOMDocumentFragmentImpl::~DOMDocumentFragmentImpl() { } DOMNode *DOMDocumentFragmentImpl::cloneNode(bool deep) const { DOMNode* newNode = new (castToNodeImpl(this)->getOwnerDocument(), DOMMemoryManager::DOCUMENT_FRAGMENT_OBJECT) DOMDocumentFragmentImpl(*this, deep); fNode.callUserDataHandlers(DOMUserDataHandler::NODE_CLONED, this, newNode); return newNode; } const XMLCh * DOMDocumentFragmentImpl::getNodeName() const { static const XMLCh name[] = {chPound, chLatin_d, chLatin_o, chLatin_c, chLatin_u, chLatin_m, chLatin_e, chLatin_n, chLatin_t, chDash, chLatin_f, chLatin_r, chLatin_a, chLatin_g, chLatin_m, chLatin_e, chLatin_n, chLatin_t, 0}; return name; } DOMNode::NodeType DOMDocumentFragmentImpl::getNodeType() const { return DOMNode::DOCUMENT_FRAGMENT_NODE; } void DOMDocumentFragmentImpl::setNodeValue(const XMLCh *x) { fNode.setNodeValue(x); } void DOMDocumentFragmentImpl::release() { if (fNode.isOwned() && !fNode.isToBeReleased()) throw DOMException(DOMException::INVALID_ACCESS_ERR,0, GetDOMNodeMemoryManager); DOMDocumentImpl* doc = (DOMDocumentImpl*) getOwnerDocument(); if (doc) { fNode.callUserDataHandlers(DOMUserDataHandler::NODE_DELETED, 0, 0); fParent.release(); doc->release(this, DOMMemoryManager::DOCUMENT_FRAGMENT_OBJECT); } else { // shouldn't reach here throw DOMException(DOMException::INVALID_ACCESS_ERR,0, GetDOMNodeMemoryManager); } } // // Delegation stubs for inherited functions. // DOMNode* DOMDocumentFragmentImpl::appendChild(DOMNode *newChild) {return fParent.appendChild (newChild); } DOMNamedNodeMap* DOMDocumentFragmentImpl::getAttributes() const {return fNode.getAttributes (); } DOMNodeList* DOMDocumentFragmentImpl::getChildNodes() const {return fParent.getChildNodes (); } DOMNode* DOMDocumentFragmentImpl::getFirstChild() const {return fParent.getFirstChild (); } DOMNode* DOMDocumentFragmentImpl::getLastChild() const {return fParent.getLastChild (); } const XMLCh* DOMDocumentFragmentImpl::getLocalName() const {return fNode.getLocalName (); } const XMLCh* DOMDocumentFragmentImpl::getNamespaceURI() const {return fNode.getNamespaceURI (); } DOMNode* DOMDocumentFragmentImpl::getNextSibling() const {return fNode.getNextSibling (); } const XMLCh* DOMDocumentFragmentImpl::getNodeValue() const {return fNode.getNodeValue (); } DOMDocument* DOMDocumentFragmentImpl::getOwnerDocument() const {return fParent.fOwnerDocument; } const XMLCh* DOMDocumentFragmentImpl::getPrefix() const {return fNode.getPrefix (); } DOMNode* DOMDocumentFragmentImpl::getParentNode() const {return fNode.getParentNode (); } DOMNode* DOMDocumentFragmentImpl::getPreviousSibling() const {return fNode.getPreviousSibling (); } bool DOMDocumentFragmentImpl::hasChildNodes() const {return fParent.hasChildNodes (); } DOMNode* DOMDocumentFragmentImpl::insertBefore(DOMNode *newChild, DOMNode *refChild) {return fParent.insertBefore (newChild, refChild); } void DOMDocumentFragmentImpl::normalize() {fParent.normalize (); } DOMNode* DOMDocumentFragmentImpl::removeChild(DOMNode *oldChild) {return fParent.removeChild (oldChild); } DOMNode* DOMDocumentFragmentImpl::replaceChild(DOMNode *newChild, DOMNode *oldChild) {return fParent.replaceChild (newChild, oldChild); } bool DOMDocumentFragmentImpl::isSupported(const XMLCh *feature, const XMLCh *version) const {return fNode.isSupported (feature, version); } void DOMDocumentFragmentImpl::setPrefix(const XMLCh *prefix) {fNode.setPrefix(prefix); } bool DOMDocumentFragmentImpl::hasAttributes() const {return fNode.hasAttributes(); } bool DOMDocumentFragmentImpl::isSameNode(const DOMNode* other) const {return fNode.isSameNode(other); } bool DOMDocumentFragmentImpl::isEqualNode(const DOMNode* arg) const {return fParent.isEqualNode(arg); } void* DOMDocumentFragmentImpl::setUserData(const XMLCh* key, void* data, DOMUserDataHandler* handler) {return fNode.setUserData(key, data, handler); } void* DOMDocumentFragmentImpl::getUserData(const XMLCh* key) const {return fNode.getUserData(key); } const XMLCh* DOMDocumentFragmentImpl::getBaseURI() const {return fNode.getBaseURI(); } short DOMDocumentFragmentImpl::compareDocumentPosition(const DOMNode* other) const {return fNode.compareDocumentPosition(other); } const XMLCh* DOMDocumentFragmentImpl::getTextContent() const {return fNode.getTextContent(); } void DOMDocumentFragmentImpl::setTextContent(const XMLCh* textContent){fNode.setTextContent(textContent); } const XMLCh* DOMDocumentFragmentImpl::lookupPrefix(const XMLCh* namespaceURI) const {return fNode.lookupPrefix(namespaceURI); } bool DOMDocumentFragmentImpl::isDefaultNamespace(const XMLCh* namespaceURI) const {return fNode.isDefaultNamespace(namespaceURI); } const XMLCh* DOMDocumentFragmentImpl::lookupNamespaceURI(const XMLCh* prefix) const {return fNode.lookupNamespaceURI(prefix); } void* DOMDocumentFragmentImpl::getFeature(const XMLCh* feature, const XMLCh* version) const {return fNode.getFeature(feature, version); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMNodeVector.cpp0000644000175000017500000000624611041336370021330 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMNodeVector.cpp 678709 2008-07-22 10:56:56Z borisk $ */ // // file: DOMNodeVector.cpp // Implementation of class DOMNodeVector. // (Use of STL vector, or equivalent, would have been nice, // but is not available. 'DOMNode *' is the only type // kept in Vectors in this DOM implementation, so this is // a hardwired implementation for that type. // #include "DOMNodeVector.hpp" #include "DOMDocumentImpl.hpp" #include XERCES_CPP_NAMESPACE_BEGIN DOMNodeVector::DOMNodeVector(DOMDocument *doc) { init(doc, 10); } DOMNodeVector::DOMNodeVector(DOMDocument *doc, XMLSize_t size) { init(doc, size); } void DOMNodeVector::init(DOMDocument *doc, XMLSize_t size) { assert(size > 0); data = (DOMNode**) ((DOMDocumentImpl *)doc)->allocate(sizeof(DOMNode*) * size); assert(data != 0); for (XMLSize_t i=0; igetOwnerDocument(); //DOMNode **newData = new (doc) DOMNode *[newAllocatedSize]; DOMNode **newData = (DOMNode**) ((DOMDocumentImpl *)doc)->allocate(sizeof(DOMNode*) * newAllocatedSize); assert(newData != 0); for (XMLSize_t i=0; iindex; --i) { data[i] = data[i-1]; } data[index] = elem; ++nextFreeSlot; } void DOMNodeVector::removeElementAt(XMLSize_t index) { assert(index < nextFreeSlot); for (XMLSize_t i=index; i #include XERCES_CPP_NAMESPACE_BEGIN DOMXPathResultImpl::DOMXPathResultImpl(ResultType type, MemoryManager* const manager) : fType(type), fMemoryManager(manager), fIndex (0) { fSnapshot = new (fMemoryManager) RefVectorOf(13, false, fMemoryManager); } DOMXPathResultImpl::~DOMXPathResultImpl() { delete fSnapshot; } // // DOMXPathResult::ResultType DOMXPathResultImpl::getResultType() const { return fType; } const DOMTypeInfo* DOMXPathResultImpl::getTypeInfo() const { throw DOMXPathException(DOMXPathException::TYPE_ERR, 0, fMemoryManager); } bool DOMXPathResultImpl::isNode() const { throw DOMXPathException(DOMXPathException::TYPE_ERR, 0, fMemoryManager); } bool DOMXPathResultImpl::getBooleanValue() const { throw DOMXPathException(DOMXPathException::TYPE_ERR, 0, fMemoryManager); } int DOMXPathResultImpl::getIntegerValue() const { throw DOMXPathException(DOMXPathException::TYPE_ERR, 0, fMemoryManager); } double DOMXPathResultImpl::getNumberValue() const { throw DOMXPathException(DOMXPathException::TYPE_ERR, 0, fMemoryManager); } const XMLCh* DOMXPathResultImpl::getStringValue() const { throw DOMXPathException(DOMXPathException::TYPE_ERR, 0, fMemoryManager); } DOMNode* DOMXPathResultImpl::getNodeValue() const { if(fType == ANY_UNORDERED_NODE_TYPE || fType == FIRST_ORDERED_NODE_TYPE) { return fSnapshot->size() > 0 ? fSnapshot->elementAt(0) : 0; } else if (fType==UNORDERED_NODE_SNAPSHOT_TYPE || fType==ORDERED_NODE_SNAPSHOT_TYPE) { return fIndex < fSnapshot->size() ? fSnapshot->elementAt(fIndex) : 0; } else throw DOMXPathException(DOMXPathException::TYPE_ERR, 0, fMemoryManager); } bool DOMXPathResultImpl::iterateNext() { throw DOMXPathException(DOMXPathException::TYPE_ERR, 0, fMemoryManager); } bool DOMXPathResultImpl::getInvalidIteratorState() const { throw DOMXPathException(DOMXPathException::TYPE_ERR, 0, fMemoryManager); } bool DOMXPathResultImpl::snapshotItem(XMLSize_t index) { if(fType==UNORDERED_NODE_SNAPSHOT_TYPE || fType==ORDERED_NODE_SNAPSHOT_TYPE) { fIndex = index; return fIndex < fSnapshot->size(); } else throw DOMXPathException(DOMXPathException::TYPE_ERR, 0, fMemoryManager); } XMLSize_t DOMXPathResultImpl::getSnapshotLength() const { if(fType==UNORDERED_NODE_SNAPSHOT_TYPE || fType==ORDERED_NODE_SNAPSHOT_TYPE) return fSnapshot->size(); else throw DOMXPathException(DOMXPathException::TYPE_ERR, 0, fMemoryManager); } void DOMXPathResultImpl::release() { DOMXPathResultImpl* me = this; delete me; } // // void DOMXPathResultImpl::reset(ResultType type) { fType = type; fSnapshot->removeAllElements(); fIndex = 0; } void DOMXPathResultImpl::addResult(DOMNode* node) { fSnapshot->addElement(node); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMNodeImpl.cpp0000644000175000017500000010236611032723043020764 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMNodeImpl.cpp 673428 2008-07-02 16:00:35Z amassari $ */ // This class doesn't support having any children, and implements the behavior // of an empty NodeList as far getChildNodes is concerned. // The ParentNode subclass overrides this behavior. #include "DOMCasts.hpp" #include "DOMDocumentTypeImpl.hpp" #include "DOMElementImpl.hpp" #include "DOMAttrImpl.hpp" #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN //Though DOMNodeImpl does not derivate from DOMNode, it shares //the same GetDOMNodeMemoryManager const unsigned short DOMNodeImpl::READONLY = 0x1<<0; const unsigned short DOMNodeImpl::SYNCDATA = 0x1<<1; const unsigned short DOMNodeImpl::SYNCCHILDREN = 0x1<<2; const unsigned short DOMNodeImpl::OWNED = 0x1<<3; const unsigned short DOMNodeImpl::FIRSTCHILD = 0x1<<4; const unsigned short DOMNodeImpl::SPECIFIED = 0x1<<5; const unsigned short DOMNodeImpl::IGNORABLEWS = 0x1<<6; const unsigned short DOMNodeImpl::SETVALUE = 0x1<<7; const unsigned short DOMNodeImpl::ID_ATTR = 0x1<<8; const unsigned short DOMNodeImpl::USERDATA = 0x1<<9; const unsigned short DOMNodeImpl::LEAFNODETYPE = 0x1<<10; const unsigned short DOMNodeImpl::CHILDNODE = 0x1<<11; const unsigned short DOMNodeImpl::TOBERELEASED = 0x1<<12; // // static DOMNodeListImpl *gEmptyNodeList = 0; // Singleton empty node list. void XMLInitializer::initializeDOMNodeListImpl() { gEmptyNodeList = new DOMNodeListImpl(0); } void XMLInitializer::terminateDOMNodeListImpl() { delete gEmptyNodeList; gEmptyNodeList = 0; } // ----------------------------------------------------------------------- // DOMNodeImpl Functions // ----------------------------------------------------------------------- DOMNodeImpl::DOMNodeImpl(DOMNode *ownerNode) : fOwnerNode(ownerNode) { this->flags = 0; // as long as we do not have any owner, fOwnerNode is our ownerDocument } // This only makes a shallow copy, cloneChildren must also be called for a // deep clone DOMNodeImpl::DOMNodeImpl(const DOMNodeImpl &other) { this->flags = other.flags; this->isReadOnly(false); // Need to break the association w/ original parent this->fOwnerNode = other.getOwnerDocument(); this->isOwned(false); } DOMNodeImpl::~DOMNodeImpl() { } DOMNode * DOMNodeImpl::appendChild(DOMNode *) { // Only node types that don't allow children will use this default function. // Others will go to DOMParentNode::appendChild. throw DOMException(DOMException::HIERARCHY_REQUEST_ERR,0, GetDOMNodeMemoryManager); return 0; // return insertBefore(newChild, 0); } DOMNamedNodeMap * DOMNodeImpl::getAttributes() const { return 0; // overridden in ElementImpl } DOMNodeList *DOMNodeImpl::getChildNodes() const { return gEmptyNodeList; } DOMNode * DOMNodeImpl::getFirstChild() const { return 0; // overridden in ParentNode } DOMNode * DOMNodeImpl::getLastChild() const { return 0; // overridden in ParentNode } DOMNode * DOMNodeImpl::getNextSibling() const { return 0; // overridden in ChildNode } const XMLCh * DOMNodeImpl::getNodeValue() const { return 0; // Overridden by anything that has a value } // // Unlike the external getOwnerDocument, this one returns the owner document // for document nodes as well as all of the other node types. // DOMDocument *DOMNodeImpl::getOwnerDocument() const { if (!this->isLeafNode()) { DOMElementImpl *ep = (DOMElementImpl *)castToNode(this); return ep->fParent.fOwnerDocument; } // Leaf node types - those that cannot have children, like Text. if (isOwned()) { DOMDocument* ownerDoc = fOwnerNode->getOwnerDocument(); if (!ownerDoc) { assert (fOwnerNode->getNodeType() == DOMNode::DOCUMENT_NODE); return (DOMDocument *)fOwnerNode; } else { return ownerDoc; } } else { assert (fOwnerNode->getNodeType() == DOMNode::DOCUMENT_NODE); return (DOMDocument *)fOwnerNode; } } void DOMNodeImpl::setOwnerDocument(DOMDocument *doc) { // if we have an owner we rely on it to have it right // otherwise fOwnerNode is our ownerDocument if (!isOwned()) { // revisit. Problem with storage for doctype nodes that were created // on the system heap in advance of having a document. fOwnerNode = doc; } } DOMNode * DOMNodeImpl::getParentNode() const { return 0; // overridden in ChildNode } DOMNode* DOMNodeImpl::getPreviousSibling() const { return 0; // overridden in ChildNode } bool DOMNodeImpl::hasChildNodes() const { return false; } DOMNode *DOMNodeImpl::insertBefore(DOMNode *, DOMNode *) { throw DOMException(DOMException::HIERARCHY_REQUEST_ERR, 0, GetDOMNodeMemoryManager); return 0; } DOMNode *DOMNodeImpl::removeChild(DOMNode *) { throw DOMException(DOMException::NOT_FOUND_ERR, 0, GetDOMNodeMemoryManager); return 0; } DOMNode *DOMNodeImpl::replaceChild(DOMNode *, DOMNode *) { throw DOMException(DOMException::HIERARCHY_REQUEST_ERR,0, GetDOMNodeMemoryManager); return 0; } void DOMNodeImpl::setNodeValue(const XMLCh *) { // Default behavior is to do nothing, overridden in some subclasses } void DOMNodeImpl::setReadOnly(bool readOnl, bool deep) { this->isReadOnly(readOnl); if (deep) { for (DOMNode *mykid = castToNode(this)->getFirstChild(); mykid != 0; mykid = mykid->getNextSibling()) { short kidNodeType = mykid->getNodeType(); switch (kidNodeType) { case DOMNode::ENTITY_REFERENCE_NODE: break; case DOMNode::ELEMENT_NODE: ((DOMElementImpl*) mykid)->setReadOnly(readOnl, true); break; case DOMNode::DOCUMENT_TYPE_NODE: ((DOMDocumentTypeImpl*) mykid)->setReadOnly(readOnl, true); break; default: castToNodeImpl(mykid)->setReadOnly(readOnl, true); break; } } } } //Introduced in DOM Level 2 void DOMNodeImpl::normalize() { // does nothing by default, overridden by subclasses } bool DOMNodeImpl::isSupported(const XMLCh *feature, const XMLCh *version) const { return DOMImplementation::getImplementation()->hasFeature(feature, version); } const XMLCh *DOMNodeImpl::getNamespaceURI() const { return 0; } const XMLCh *DOMNodeImpl::getPrefix() const { return 0; } const XMLCh *DOMNodeImpl::getLocalName() const { return 0; } void DOMNodeImpl::setPrefix(const XMLCh *) { throw DOMException(DOMException::NAMESPACE_ERR, 0, GetDOMNodeMemoryManager); } bool DOMNodeImpl::hasAttributes() const { return 0; // overridden in ElementImpl } const XMLCh *DOMNodeImpl::getXmlString() {return XMLUni::fgXMLString;} const XMLCh *DOMNodeImpl::getXmlURIString() {return XMLUni::fgXMLURIName;} const XMLCh *DOMNodeImpl::getXmlnsString() {return XMLUni::fgXMLNSString;} const XMLCh *DOMNodeImpl::getXmlnsURIString() {return XMLUni::fgXMLNSURIName;} //Return a URI mapped from the given prefix and namespaceURI as below // prefix namespaceURI output //--------------------------------------------------- // "xml" xmlURI xmlURI // "xml" otherwise NAMESPACE_ERR // "xmlns" xmlnsURI xmlnsURI (nType = ATTRIBUTE_NODE only) // "xmlns" otherwise NAMESPACE_ERR (nType = ATTRIBUTE_NODE only) // != null null or "" NAMESPACE_ERR // else any namesapceURI const XMLCh* DOMNodeImpl::mapPrefix(const XMLCh *prefix, const XMLCh *namespaceURI, short nType) { if (prefix == 0) return namespaceURI; if (XMLString::equals(prefix, XMLUni::fgXMLString)) { if (XMLString::equals(namespaceURI, XMLUni::fgXMLURIName)) return XMLUni::fgXMLURIName; throw DOMException(DOMException::NAMESPACE_ERR, 0); } else if (nType == DOMNode::ATTRIBUTE_NODE && XMLString::equals(prefix, XMLUni::fgXMLNSString)) { if (XMLString::equals(namespaceURI, XMLUni::fgXMLNSURIName)) return XMLUni::fgXMLNSURIName; throw DOMException(DOMException::NAMESPACE_ERR, 0); } else if (namespaceURI == 0 || *namespaceURI == 0) throw DOMException(DOMException::NAMESPACE_ERR, 0); return namespaceURI; } //Introduced in DOM Level 3 void* DOMNodeImpl::setUserData(const XMLCh* key, void* data, DOMUserDataHandler* handler) { if (!data && !hasUserData()) return 0; hasUserData(true); return ((DOMDocumentImpl*)getOwnerDocument())->setUserData(this, key, data, handler); } void* DOMNodeImpl::getUserData(const XMLCh* key) const { if (hasUserData()) return ((DOMDocumentImpl*)getOwnerDocument())->getUserData(this, key); return 0; } void DOMNodeImpl::callUserDataHandlers(DOMUserDataHandler::DOMOperationType operation, const DOMNode* src, DOMNode* dst) const { DOMDocumentImpl* doc=(DOMDocumentImpl*)getOwnerDocument(); if (doc) doc->callUserDataHandlers(this, operation, src, dst); } bool DOMNodeImpl::isSameNode(const DOMNode* other) const { return (castToNode(this) == other); } bool DOMNodeImpl::isEqualNode(const DOMNode* arg) const { if (!arg) return false; if (isSameNode(arg)) { return true; } DOMNode* thisNode = castToNode(this); if (arg->getNodeType() != thisNode->getNodeType()) { return false; } // the compareString will check null string as well if (!XMLString::equals(thisNode->getNodeName(), arg->getNodeName())) { return false; } if (!XMLString::equals(thisNode->getLocalName(),arg->getLocalName())) { return false; } if (!XMLString::equals(thisNode->getNamespaceURI(), arg->getNamespaceURI())) { return false; } if (!XMLString::equals(thisNode->getPrefix(), arg->getPrefix())) { return false; } if (!XMLString::equals(thisNode->getNodeValue(), arg->getNodeValue())) { return false; } return true; } const XMLCh* DOMNodeImpl::lookupPrefix(const XMLCh* namespaceURI) const { // REVISIT: When Namespaces 1.1 comes out this may not be true // Prefix can't be bound to null namespace if (namespaceURI == 0) { return 0; } DOMNode *thisNode = castToNode(this); short type = thisNode->getNodeType(); switch (type) { case DOMNode::ELEMENT_NODE: { return lookupPrefix(namespaceURI, (DOMElement*)thisNode); } case DOMNode::DOCUMENT_NODE:{ return ((DOMDocument*)thisNode)->getDocumentElement()->lookupPrefix(namespaceURI); } case DOMNode::ENTITY_NODE : case DOMNode::NOTATION_NODE: case DOMNode::DOCUMENT_FRAGMENT_NODE: case DOMNode::DOCUMENT_TYPE_NODE: // type is unknown return 0; case DOMNode::ATTRIBUTE_NODE:{ if (fOwnerNode->getNodeType() == DOMNode::ELEMENT_NODE) { return fOwnerNode->lookupPrefix(namespaceURI); } return 0; } default:{ DOMNode *ancestor = getElementAncestor(thisNode); if (ancestor != 0) { return ancestor->lookupPrefix(namespaceURI); } return 0; } } } DOMNode* DOMNodeImpl::getElementAncestor (const DOMNode* currentNode) const { DOMNode* parent = currentNode->getParentNode(); while(parent != 0) { short type = parent->getNodeType(); if (type == DOMNode::ELEMENT_NODE) { return parent; } parent=parent->getParentNode(); } return 0; } const XMLCh* DOMNodeImpl::lookupPrefix(const XMLCh* const namespaceURI, DOMElement *originalElement) const { DOMNode *thisNode = castToNode(this); const XMLCh* ns = thisNode->getNamespaceURI(); // REVISIT: if no prefix is available is it null or empty string, or // could be both? const XMLCh* prefix = thisNode->getPrefix(); if (ns != 0 && XMLString::equals(ns,namespaceURI) && prefix != 0) { const XMLCh* foundNamespace = originalElement->lookupNamespaceURI(prefix); if (foundNamespace != 0 && XMLString::equals(foundNamespace, namespaceURI)) { return prefix; } } if (thisNode->hasAttributes()) { DOMNamedNodeMap *nodeMap = thisNode->getAttributes(); if(nodeMap != 0) { XMLSize_t length = nodeMap->getLength(); for (XMLSize_t i = 0;i < length;i++) { DOMNode *attr = nodeMap->item(i); const XMLCh* attrPrefix = attr->getPrefix(); const XMLCh* value = attr->getNodeValue(); ns = attr->getNamespaceURI(); if (ns != 0 && XMLString::equals(ns, XMLUni::fgXMLNSURIName)) { // DOM Level 2 nodes if ((attrPrefix != 0 && XMLString::equals(attrPrefix, XMLUni::fgXMLNSString)) && XMLString::equals(value, namespaceURI)) { const XMLCh* localname= attr->getLocalName(); const XMLCh* foundNamespace = originalElement->lookupNamespaceURI(localname); if (foundNamespace != 0 && XMLString::equals(foundNamespace, namespaceURI)) { return localname; } } } } } } DOMNode *ancestor = getElementAncestor(thisNode); if (ancestor != 0) { return castToNodeImpl(ancestor)->lookupPrefix(namespaceURI, originalElement); } return 0; } const XMLCh* DOMNodeImpl::lookupNamespaceURI(const XMLCh* specifiedPrefix) const { DOMNode *thisNode = castToNode(this); short type = thisNode->getNodeType(); switch (type) { case DOMNode::ELEMENT_NODE : { const XMLCh* ns = thisNode->getNamespaceURI(); const XMLCh* prefix = thisNode->getPrefix(); if (ns != 0) { // REVISIT: is it possible that prefix is empty string? if (specifiedPrefix == 0 && prefix == specifiedPrefix) { // looking for default namespace return ns; } else if (prefix != 0 && XMLString::equals(prefix, specifiedPrefix)) { // non default namespace return ns; } } if (thisNode->hasAttributes()) { DOMNamedNodeMap *nodeMap = thisNode->getAttributes(); if(nodeMap != 0) { XMLSize_t length = nodeMap->getLength(); for (XMLSize_t i = 0;i < length;i++) { DOMNode *attr = nodeMap->item(i); const XMLCh *attrPrefix = attr->getPrefix(); const XMLCh *value = attr->getNodeValue(); ns = attr->getNamespaceURI(); if (ns != 0 && XMLString::equals(ns, XMLUni::fgXMLNSURIName)) { // at this point we are dealing with DOM Level 2 nodes only if (specifiedPrefix == 0 && XMLString::equals(attr->getNodeName(), XMLUni::fgXMLNSString)) { // default namespace return value; } else if (attrPrefix != 0 && XMLString::equals(attrPrefix, XMLUni::fgXMLNSString) && XMLString::equals(attr->getLocalName(), specifiedPrefix)) { // non default namespace return value; } } } } } DOMNode *ancestor = getElementAncestor(thisNode); if (ancestor != 0) { return ancestor->lookupNamespaceURI(specifiedPrefix); } return 0; } case DOMNode::DOCUMENT_NODE : { return((DOMDocument*)thisNode)->getDocumentElement()->lookupNamespaceURI(specifiedPrefix); } case DOMNode::ENTITY_NODE : case DOMNode::NOTATION_NODE: case DOMNode::DOCUMENT_FRAGMENT_NODE: case DOMNode::DOCUMENT_TYPE_NODE: // type is unknown return 0; case DOMNode::ATTRIBUTE_NODE:{ if (fOwnerNode->getNodeType() == DOMNode::ELEMENT_NODE) { return fOwnerNode->lookupNamespaceURI(specifiedPrefix); } return 0; } default:{ DOMNode *ancestor = getElementAncestor(castToNode(this)); if (ancestor != 0) { return ancestor->lookupNamespaceURI(specifiedPrefix); } return 0; } } } const XMLCh* DOMNodeImpl::getBaseURI() const{ DOMNode *thisNode = castToNode(this); DOMNode* parent = thisNode->getParentNode(); if (parent) return parent->getBaseURI(); else return 0; } const DOMNode* DOMNodeImpl::getTreeParentNode(const DOMNode* node) const { const DOMNode* parent=node->getParentNode(); if(parent) return parent; short nodeType=node->getNodeType(); switch(nodeType) { case DOMNode::ATTRIBUTE_NODE: return ((const DOMAttr*)node)->getOwnerElement(); case DOMNode::NOTATION_NODE: case DOMNode::ENTITY_NODE: return node->getOwnerDocument()->getDoctype(); } return 0; } short DOMNodeImpl::compareDocumentPosition(const DOMNode* other) const { DOMNode* thisNode = castToNode(this); // If the two nodes being compared are the same node, then no flags are set on the return. if (thisNode == other) return 0; //if this is a custom node, we don't really know what to do, just return //user should provide its own compareDocumentPosition logic, and shouldn't reach here if(thisNode->getNodeType() > 12) { return 0; } //if it is a custom node we must ask it for the order if(other->getNodeType() > 12) { return reverseTreeOrderBitPattern(other->compareDocumentPosition(thisNode)); } // Otherwise, the order of two nodes is determined by looking for common containers -- // containers which contain both. A node directly contains any child nodes. // A node also directly contains any other nodes attached to it such as attributes // contained in an element or entities and notations contained in a document type. // Nodes contained in contained nodes are also contained, but less-directly as // the number of intervening containers increases. // If one of the nodes being compared contains the other node, then the container precedes // the contained node, and reversely the contained node follows the container. For example, // when comparing an element against its own attribute or child, the element node precedes // its attribute node and its child node, which both follow it. const DOMNode* tmpNode; const DOMNode* myRoot = castToNode(this); int myDepth=0; while((tmpNode=getTreeParentNode(myRoot))!=0) { myRoot=tmpNode; if(myRoot==other) return DOMNode::DOCUMENT_POSITION_CONTAINS | DOMNode::DOCUMENT_POSITION_PRECEDING; myDepth++; } const DOMNode* hisRoot = other; int hisDepth=0; while((tmpNode=getTreeParentNode(hisRoot))!=0) { hisRoot=tmpNode; if(hisRoot==thisNode) return DOMNode::DOCUMENT_POSITION_CONTAINED_BY | DOMNode::DOCUMENT_POSITION_FOLLOWING; hisDepth++; } // If there is no common container node, then the order is based upon order between the // root container of each node that is in no container. In this case, the result is // disconnected and implementation-specific. This result is stable as long as these // outer-most containing nodes remain in memory and are not inserted into some other // containing node. This would be the case when the nodes belong to different documents // or fragments, and cloning the document or inserting a fragment might change the order. if(myRoot!=hisRoot) return DOMNode::DOCUMENT_POSITION_DISCONNECTED | DOMNode::DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC | (myRoot hisDepth) { for (int i= 0 ; i < myDepth - hisDepth; i++) myRoot = getTreeParentNode(myRoot); } else { for (int i = 0; i < hisDepth - myDepth; i++) hisRoot = getTreeParentNode(hisRoot); } // We now have nodes at the same depth in the tree. Find a common ancestor. const DOMNode *myNodeP=myRoot; const DOMNode *hisNodeP=hisRoot; while(myRoot!=hisRoot) { myNodeP = myRoot; hisNodeP = hisRoot; myRoot = getTreeParentNode(myRoot); hisRoot = getTreeParentNode(hisRoot); } short myNodeType=myNodeP->getNodeType(); short hisNodeType=hisNodeP->getNodeType(); bool bMyNodeIsChild=(myNodeType!=DOMNode::ATTRIBUTE_NODE && myNodeType!=DOMNode::ENTITY_NODE && myNodeType!=DOMNode::NOTATION_NODE); bool bHisNodeIsChild=(hisNodeType!=DOMNode::ATTRIBUTE_NODE && hisNodeType!=DOMNode::ENTITY_NODE && hisNodeType!=DOMNode::NOTATION_NODE); // If these two determining nodes are both child nodes, then the natural DOM order of these // determining nodes within the containing node is returned as the order of the corresponding nodes. // This would be the case, for example, when comparing two child elements of the same element. if(bMyNodeIsChild && bHisNodeIsChild) { while(myNodeP != 0) { myNodeP = myNodeP->getNextSibling(); if(myNodeP == hisNodeP) return DOMNode::DOCUMENT_POSITION_FOLLOWING; } return DOMNode::DOCUMENT_POSITION_PRECEDING; } // If one of the two determining nodes is a child node and the other is not, then the corresponding // node of the child node follows the corresponding node of the non-child node. This would be the case, // for example, when comparing an attribute of an element with a child element of the same element. else if(!bMyNodeIsChild && bHisNodeIsChild) return DOMNode::DOCUMENT_POSITION_FOLLOWING; else if(bMyNodeIsChild && !bHisNodeIsChild) return DOMNode::DOCUMENT_POSITION_PRECEDING; else { // If neither of the two determining node is a child node and one determining node has a greater value // of nodeType than the other, then the corresponding node precedes the other. This would be the case, // for example, when comparing an entity of a document type against a notation of the same document type. if(myNodeType!=hisNodeType) return (myNodeTypeallocate((nBufferLength+1) * sizeof(XMLCh)); getTextContent(pzBuffer, nBufferLength); pzBuffer[nBufferLength] = 0; return pzBuffer; } const XMLCh* DOMNodeImpl::getTextContent(XMLCh* pzBuffer, XMLSize_t& rnBufferLength) const { XMLSize_t nRemainingBuffer = rnBufferLength; rnBufferLength = 0; if (pzBuffer) *pzBuffer = 0; DOMNode *thisNode = castToNode(this); switch (thisNode->getNodeType()) { case DOMNode::ELEMENT_NODE: case DOMNode::ENTITY_NODE: case DOMNode::ENTITY_REFERENCE_NODE: case DOMNode::DOCUMENT_FRAGMENT_NODE: { DOMNode* current = thisNode->getFirstChild(); while (current != NULL) { if (current->getNodeType() != DOMNode::COMMENT_NODE && current->getNodeType() != DOMNode::PROCESSING_INSTRUCTION_NODE) { if (pzBuffer) { XMLSize_t nContentLength = nRemainingBuffer; castToNodeImpl(current)->getTextContent(pzBuffer + rnBufferLength, nContentLength); rnBufferLength += nContentLength; nRemainingBuffer -= nContentLength; } else { XMLSize_t nContentLength = 0; castToNodeImpl(current)->getTextContent(NULL, nContentLength); rnBufferLength += nContentLength; } } current = current->getNextSibling(); } } break; case DOMNode::ATTRIBUTE_NODE: case DOMNode::TEXT_NODE: case DOMNode::CDATA_SECTION_NODE: case DOMNode::COMMENT_NODE: case DOMNode::PROCESSING_INSTRUCTION_NODE: { const XMLCh* pzValue = thisNode->getNodeValue(); XMLSize_t nStrLen = XMLString::stringLen(pzValue); if (pzBuffer) { XMLSize_t nContentLength = (nRemainingBuffer >= nStrLen) ? nStrLen : nRemainingBuffer; XMLString::copyNString(pzBuffer + rnBufferLength, pzValue, nContentLength); rnBufferLength += nContentLength; nRemainingBuffer -= nContentLength; } else { rnBufferLength += nStrLen; } } break; /*** DOCUMENT_NODE DOCUMENT_TYPE_NODE NOTATION_NODE ***/ default: break; } return pzBuffer; } void DOMNodeImpl::setTextContent(const XMLCh* textContent){ DOMNode *thisNode = castToNode(this); switch (thisNode->getNodeType()) { case DOMNode::ELEMENT_NODE: case DOMNode::ENTITY_NODE: case DOMNode::ENTITY_REFERENCE_NODE: case DOMNode::DOCUMENT_FRAGMENT_NODE: { if (isReadOnly()) throw DOMException(DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMNodeMemoryManager); // Remove all childs DOMNode* current = thisNode->getFirstChild(); while (current != NULL) { thisNode->removeChild(current); current = thisNode->getFirstChild(); } if (textContent != NULL) { // Add textnode containing data current = ((DOMDocumentImpl*)thisNode->getOwnerDocument())->createTextNode(textContent); thisNode->appendChild(current); } } break; case DOMNode::ATTRIBUTE_NODE: case DOMNode::TEXT_NODE: case DOMNode::CDATA_SECTION_NODE: case DOMNode::COMMENT_NODE: case DOMNode::PROCESSING_INSTRUCTION_NODE: if (isReadOnly()) throw DOMException(DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMNodeMemoryManager); thisNode->setNodeValue(textContent); break; case DOMNode::DOCUMENT_NODE: case DOMNode::DOCUMENT_TYPE_NODE: case DOMNode::NOTATION_NODE: break; default: throw DOMException(DOMException::NOT_SUPPORTED_ERR, 0, GetDOMNodeMemoryManager); } } bool DOMNodeImpl::isDefaultNamespace(const XMLCh* namespaceURI) const{ DOMNode *thisNode = castToNode(this); short type = thisNode->getNodeType(); switch (type) { case DOMNode::ELEMENT_NODE: { const XMLCh *prefix = thisNode->getPrefix(); // REVISIT: is it possible that prefix is empty string? if (prefix == 0 || !*prefix) { return XMLString::equals(namespaceURI, thisNode->getNamespaceURI()); } if (thisNode->hasAttributes()) { DOMElement *elem = (DOMElement *)thisNode; DOMNode *attr = elem->getAttributeNodeNS(XMLUni::fgXMLNSURIName, XMLUni::fgXMLNSString); if (attr != 0) { const XMLCh *value = attr->getNodeValue(); return XMLString::equals(namespaceURI, value); } } DOMNode *ancestor = getElementAncestor(thisNode); if (ancestor != 0) { return ancestor->isDefaultNamespace(namespaceURI); } return false; } case DOMNode::DOCUMENT_NODE:{ return ((DOMDocument*)thisNode)->getDocumentElement()->isDefaultNamespace(namespaceURI); } case DOMNode::ENTITY_NODE : case DOMNode::NOTATION_NODE: case DOMNode::DOCUMENT_FRAGMENT_NODE: case DOMNode::DOCUMENT_TYPE_NODE: // type is unknown return false; case DOMNode::ATTRIBUTE_NODE:{ if (fOwnerNode->getNodeType() == DOMNode::ELEMENT_NODE) { return fOwnerNode->isDefaultNamespace(namespaceURI); } return false; } default:{ DOMNode *ancestor = getElementAncestor(thisNode); if (ancestor != 0) { return ancestor->isDefaultNamespace(namespaceURI); } return false; } } } void* DOMNodeImpl::getFeature(const XMLCh*, const XMLCh*) const { return 0; } // non-standard extension void DOMNodeImpl::release() { // shouldn't reach here throw DOMException(DOMException::INVALID_ACCESS_ERR,0, GetDOMNodeMemoryManager); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMNodeListImpl.hpp0000644000175000017500000000457311037122704021630 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMNodeListImpl.hpp 676911 2008-07-15 13:27:32Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMNODELISTIMPL_HPP) #define XERCESC_INCLUDE_GUARD_DOMNODELISTIMPL_HPP // // This file is part of the internal implementation of the C++ XML DOM. // It should NOT be included or used directly by application programs. // // Applications should include the file for the entire // DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class // name is substituded for the *. // // NodeList implementation class - // This is for NodeLists returned by GetChildNodes only, not for // node lists returned by GetElementsByTagName // // Every node type capable of having children has (as an embedded member) // an instance of this class. To hold down the size overhead on each node, a // cache of extended data for active node lists is maintained // separately. // #include #include XERCES_CPP_NAMESPACE_BEGIN class DOMParentNode; class DOMNode; class CDOM_EXPORT DOMNodeListImpl: public DOMNodeList { protected: DOMParentNode *fNode; private: // Unused, and unimplemented constructors, operators, etc. DOMNodeListImpl(); DOMNodeListImpl(const DOMNodeListImpl & other); DOMNodeListImpl & operator = (const DOMNodeListImpl & other); public: DOMNodeListImpl(DOMParentNode *node); virtual ~DOMNodeListImpl(); virtual DOMNode * item(XMLSize_t index) const; virtual XMLSize_t getLength() const; }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMXPathNSResolverImpl.cpp0000644000175000017500000000633711026701140023104 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "DOMXPathNSResolverImpl.hpp" #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN DOMXPathNSResolverImpl::DOMXPathNSResolverImpl(const DOMNode *nodeResolver, MemoryManager* const manager) : fNamespaceBindings(0), fResolverNode(nodeResolver), fManager(manager) { fNamespaceBindings = new (fManager) RefHashTableOf(7, true, fManager); } DOMXPathNSResolverImpl::~DOMXPathNSResolverImpl() { delete fNamespaceBindings; } const XMLCh* DOMXPathNSResolverImpl::lookupNamespaceURI(const XMLCh* prefix) const { if(prefix == 0) prefix = XMLUni::fgZeroLenString; if(XMLString::equals(prefix, XMLUni::fgXMLString)) return XMLUni::fgXMLURIName; const KVStringPair *pair = fNamespaceBindings->get((void*)prefix); if(pair) { // An empty namespace URI indicated that this binding was removed // by the user. // if(*pair->getValue() == 0) return NULL; return pair->getValue(); } if(fResolverNode) return fResolverNode->lookupNamespaceURI( *prefix == 0 ? 0 : prefix); // Expects 0 for default namespace. return NULL; } const XMLCh* DOMXPathNSResolverImpl::lookupPrefix(const XMLCh* uri) const { if (uri == 0 || *uri == 0) return 0; if(XMLString::equals(uri, XMLUni::fgXMLURIName)) return XMLUni::fgXMLString; RefHashTableOfEnumerator enumerator((RefHashTableOf*)fNamespaceBindings); while(enumerator.hasMoreElements()) { KVStringPair &pair = enumerator.nextElement(); if(XMLString::equals(pair.getValue(), uri)) { return pair.getKey(); } } if(fResolverNode) { const XMLCh* r = fResolverNode->lookupPrefix(uri); if (r == 0 && fResolverNode->isDefaultNamespace(uri)) r = XMLUni::fgZeroLenString; return r; } return 0; } void DOMXPathNSResolverImpl::addNamespaceBinding(const XMLCh* prefix, const XMLCh* uri) { if(prefix == 0) prefix = XMLUni::fgZeroLenString; if(uri == 0) uri = XMLUni::fgZeroLenString; KVStringPair* pair = new (fManager) KVStringPair(prefix, uri, fManager); fNamespaceBindings->put((void*)pair->getKey(), pair); } void DOMXPathNSResolverImpl::release() { DOMXPathNSResolverImpl* me=(DOMXPathNSResolverImpl*)this; delete me; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMNodeListImpl.cpp0000644000175000017500000000335511030714661021622 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMNodeListImpl.cpp 671894 2008-06-26 13:29:21Z borisk $ */ #include #include "DOMNodeListImpl.hpp" #include "DOMCasts.hpp" XERCES_CPP_NAMESPACE_BEGIN // revisit // this implementation is too stupid - needs a cache of some kind. // DOMNodeListImpl::DOMNodeListImpl(DOMParentNode *node) : fNode(node) { } DOMNodeListImpl:: ~DOMNodeListImpl() { } XMLSize_t DOMNodeListImpl::getLength() const{ XMLSize_t count = 0; if (fNode) { DOMNode *node = fNode->fFirstChild; while(node != 0){ ++count; node = castToChildImpl(node)->nextSibling; } } return count; } DOMNode *DOMNodeListImpl::item(XMLSize_t index) const{ if (fNode) { DOMNode *node = fNode->fFirstChild; for(XMLSize_t i=0; inextSibling; return node; } return 0; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMStringListImpl.hpp0000644000175000017500000000351411030714661022205 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMStringListImpl.hpp 671894 2008-06-26 13:29:21Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMSTRINGLISTIMPL_HPP) #define XERCESC_INCLUDE_GUARD_DOMSTRINGLISTIMPL_HPP #include #include #include XERCES_CPP_NAMESPACE_BEGIN class CDOM_EXPORT DOMStringListImpl: public XMemory, public DOMStringList { protected: RefVectorOf *fList; private: // Unused, and unimplemented constructors, operators, etc. DOMStringListImpl(const DOMStringListImpl & other); DOMStringListImpl & operator = (const DOMStringListImpl & other); public: DOMStringListImpl(int nInitialSize, MemoryManager* manager); void add(const XMLCh* impl); virtual ~DOMStringListImpl(); virtual const XMLCh* item(XMLSize_t index) const; virtual XMLSize_t getLength() const; virtual bool contains(const XMLCh* str) const; virtual void release(); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMLocatorImpl.hpp0000644000175000017500000001147111037072255021512 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMLocatorImpl.hpp 676853 2008-07-15 09:58:05Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMLOCATORIMPL_HPP) #define XERCESC_INCLUDE_GUARD_DOMLOCATORIMPL_HPP #include XERCES_CPP_NAMESPACE_BEGIN /** * Introduced in DOM Level 3 * * Implementation of a DOMLocator interface. * * @see DOMLocator#DOMLocator */ class CDOM_EXPORT DOMLocatorImpl : public DOMLocator { public: /** @name Constructors and Destructor */ //@{ /** Constructor */ DOMLocatorImpl(); DOMLocatorImpl ( const XMLFileLoc lineNum , const XMLFileLoc columnNum , DOMNode* const errorNode , const XMLCh* const uri , const XMLFilePos offset = ~(XMLFilePos(0)) , const XMLFilePos utf16Offset = ~(XMLFilePos(0)) ); /** Desctructor */ virtual ~DOMLocatorImpl(); //@} // DOMLocator interface virtual XMLFileLoc getLineNumber() const; virtual XMLFileLoc getColumnNumber() const; virtual XMLFilePos getByteOffset() const; virtual XMLFilePos getUtf16Offset() const; virtual DOMNode* getRelatedNode() const; virtual const XMLCh* getURI() const; // Setter functions void setLineNumber(const XMLFileLoc lineNumber); void setColumnNumber(const XMLFileLoc columnNumber); void setByteOffset(const XMLFilePos offset); void setUtf16Offset(const XMLFilePos offset); void setRelatedNode(DOMNode* const errorNode); void setURI(const XMLCh* const uri); private : /* Unimplemented constructors and operators */ /* Copy constructor */ DOMLocatorImpl(const DOMLocatorImpl&); /* Assignment operator */ DOMLocatorImpl& operator=(const DOMLocatorImpl&); protected: // ----------------------------------------------------------------------- // Private data members // // fLineNum // fColumnNum // Track line/column number of where the error occured // // fByteOffset // Track byte offset in the input source where the error // occured // // fUtf16Offset // Track character offset in the input source where the error // occured // // fRelatedNode // Current node where the error occured // // fURI // The uri where the error occured // ----------------------------------------------------------------------- XMLFileLoc fLineNum; XMLFileLoc fColumnNum; XMLFilePos fByteOffset; XMLFilePos fUtf16Offset; DOMNode* fRelatedNode; const XMLCh* fURI; }; // --------------------------------------------------------------------------- // DOMLocatorImpl: Getter methods // --------------------------------------------------------------------------- inline XMLFileLoc DOMLocatorImpl::getLineNumber() const { return fLineNum; } inline XMLFileLoc DOMLocatorImpl::getColumnNumber() const { return fColumnNum; } inline XMLFilePos DOMLocatorImpl::getByteOffset() const { return fByteOffset; } inline XMLFilePos DOMLocatorImpl::getUtf16Offset() const { return fUtf16Offset; } inline DOMNode* DOMLocatorImpl::getRelatedNode() const { return fRelatedNode; } inline const XMLCh* DOMLocatorImpl::getURI() const { return fURI; } // --------------------------------------------------------------------------- // DOMLocatorImpl: Setter methods // --------------------------------------------------------------------------- inline void DOMLocatorImpl::setLineNumber(const XMLFileLoc lineNumber) { fLineNum = lineNumber; } inline void DOMLocatorImpl::setColumnNumber(const XMLFileLoc columnNumber) { fColumnNum = columnNumber; } inline void DOMLocatorImpl::setByteOffset(const XMLFilePos offset) { fByteOffset = offset; } inline void DOMLocatorImpl::setUtf16Offset(const XMLFilePos offset) { fUtf16Offset = offset; } inline void DOMLocatorImpl::setRelatedNode(DOMNode* const errorNode) { fRelatedNode = errorNode; } inline void DOMLocatorImpl::setURI(const XMLCh* const uri) { fURI = uri; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMLSOutputImpl.hpp0000644000175000017500000000512010772402041021633 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMLSOutputImpl.hpp 641193 2008-03-26 08:06:57Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMLSOUTPUTIMPL_HPP) #define XERCESC_INCLUDE_GUARD_DOMLSOUTPUTIMPL_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN class CDOM_EXPORT DOMLSOutputImpl : public XMemory, public DOMLSOutput { public: DOMLSOutputImpl(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); ~DOMLSOutputImpl(); virtual XMLFormatTarget* getByteStream() const; virtual const XMLCh* getEncoding() const; virtual const XMLCh* getSystemId() const; virtual void setByteStream(XMLFormatTarget* stream); virtual void setEncoding(const XMLCh* const encodingStr); virtual void setSystemId(const XMLCh* const systemId); virtual void release(); private: /** unimplemented copy ctor and assignment operator */ DOMLSOutputImpl(const DOMLSOutputImpl&); DOMLSOutputImpl & operator = (const DOMLSOutputImpl&); protected: // ----------------------------------------------------------------------- // Private data members // // fByteStream // We don't own it // // fEncoding // We own it // // fSystemId // We own it // // ----------------------------------------------------------------------- XMLFormatTarget *fByteStream; XMLCh *fEncoding; XMLCh *fSystemId; MemoryManager* fMemoryManager; }; inline XMLFormatTarget* DOMLSOutputImpl::getByteStream() const { return fByteStream; } inline const XMLCh* DOMLSOutputImpl::getEncoding() const { return fEncoding; } inline const XMLCh* DOMLSOutputImpl::getSystemId() const { return fSystemId; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/XSDElementNSImpl.cpp0000644000175000017500000000410111041060645021736 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XSDElementNSImpl.cpp 678381 2008-07-21 10:15:01Z borisk $ */ #include #include #include "DOMDocumentImpl.hpp" #include "XSDElementNSImpl.hpp" XERCES_CPP_NAMESPACE_BEGIN XSDElementNSImpl::XSDElementNSImpl(DOMDocument *ownerDoc, const XMLCh *nam) : DOMElementNSImpl(ownerDoc, nam) , fLineNo(0) , fColumnNo(0) { } //Introduced in DOM Level 2 XSDElementNSImpl::XSDElementNSImpl(DOMDocument *ownerDoc, const XMLCh *namespaceURI, const XMLCh *qualifiedName, const XMLFileLoc lineNo, const XMLFileLoc columnNo) : DOMElementNSImpl(ownerDoc, namespaceURI, qualifiedName) , fLineNo(lineNo) , fColumnNo(columnNo) { } XSDElementNSImpl::XSDElementNSImpl(const XSDElementNSImpl &other, bool deep) : DOMElementNSImpl(other, deep) { this->fLineNo = other.fLineNo; this->fColumnNo =other.fColumnNo; } DOMNode * XSDElementNSImpl::cloneNode(bool deep) const { DOMNode* newNode = new (fParent.fOwnerDocument) XSDElementNSImpl(*this, deep); fNode.callUserDataHandlers(DOMUserDataHandler::NODE_CLONED, this, newNode); return newNode; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMTypeInfoImpl.cpp0000644000175000017500000002322111360344373021635 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "DOMTypeInfoImpl.hpp" #include "DOMDocumentImpl.hpp" #include #include XERCES_CPP_NAMESPACE_BEGIN /*static*/ DOMTypeInfoImpl DOMTypeInfoImpl::g_DtdValidatedElement; /*static*/ DOMTypeInfoImpl DOMTypeInfoImpl::g_DtdNotValidatedAttribute; /*static*/ DOMTypeInfoImpl DOMTypeInfoImpl::g_DtdValidatedCDATAAttribute(XMLUni::fgInfosetURIName, XMLUni::fgCDATAString); /*static*/ DOMTypeInfoImpl DOMTypeInfoImpl::g_DtdValidatedIDAttribute(XMLUni::fgInfosetURIName, XMLUni::fgIDString); /*static*/ DOMTypeInfoImpl DOMTypeInfoImpl::g_DtdValidatedIDREFAttribute(XMLUni::fgInfosetURIName, XMLUni::fgIDRefString); /*static*/ DOMTypeInfoImpl DOMTypeInfoImpl::g_DtdValidatedIDREFSAttribute(XMLUni::fgInfosetURIName, XMLUni::fgIDRefsString); /*static*/ DOMTypeInfoImpl DOMTypeInfoImpl::g_DtdValidatedENTITYAttribute(XMLUni::fgInfosetURIName, XMLUni::fgEntityString); /*static*/ DOMTypeInfoImpl DOMTypeInfoImpl::g_DtdValidatedENTITIESAttribute(XMLUni::fgInfosetURIName, XMLUni::fgEntitiesString); /*static*/ DOMTypeInfoImpl DOMTypeInfoImpl::g_DtdValidatedNMTOKENAttribute(XMLUni::fgInfosetURIName, XMLUni::fgNmTokenString); /*static*/ DOMTypeInfoImpl DOMTypeInfoImpl::g_DtdValidatedNMTOKENSAttribute(XMLUni::fgInfosetURIName, XMLUni::fgNmTokensString); /*static*/ DOMTypeInfoImpl DOMTypeInfoImpl::g_DtdValidatedNOTATIONAttribute(XMLUni::fgInfosetURIName, XMLUni::fgNotationString); /*static*/ DOMTypeInfoImpl DOMTypeInfoImpl::g_DtdValidatedENUMERATIONAttribute(XMLUni::fgInfosetURIName, XMLUni::fgEnumerationString); DOMTypeInfoImpl::DOMTypeInfoImpl(const XMLCh* namespaceUri/*=0*/, const XMLCh* name/*=0*/) : fBitFields(0), fTypeName(name), fTypeNamespace(namespaceUri), fMemberTypeName(0), fMemberTypeNamespace(0), fDefaultValue(0), fNormalizedValue(0) { // by setting the fBitField to 0 we are also setting: // - [validity]=VALIDITY_NOTKNOWN // - [validitation attempted]=VALIDATION_NONE // - [schema specified]=false } DOMTypeInfoImpl::DOMTypeInfoImpl(DOMDocumentImpl* ownerDoc, const DOMPSVITypeInfo* sourcePSVI) : fBitFields(0), fTypeName(0), fTypeNamespace(0), fMemberTypeName(0), fMemberTypeNamespace(0), fDefaultValue(0), fNormalizedValue(0) { setNumericProperty(DOMPSVITypeInfo::PSVI_Validity, sourcePSVI->getNumericProperty(DOMPSVITypeInfo::PSVI_Validity)); setNumericProperty(DOMPSVITypeInfo::PSVI_Validation_Attempted, sourcePSVI->getNumericProperty(DOMPSVITypeInfo::PSVI_Validation_Attempted)); setNumericProperty(DOMPSVITypeInfo::PSVI_Type_Definition_Type, sourcePSVI->getNumericProperty(DOMPSVITypeInfo::PSVI_Type_Definition_Type)); setNumericProperty(DOMPSVITypeInfo::PSVI_Type_Definition_Anonymous, sourcePSVI->getNumericProperty(DOMPSVITypeInfo::PSVI_Type_Definition_Anonymous)); setNumericProperty(DOMPSVITypeInfo::PSVI_Nil, sourcePSVI->getNumericProperty(DOMPSVITypeInfo::PSVI_Nil)); setNumericProperty(DOMPSVITypeInfo::PSVI_Member_Type_Definition_Anonymous, sourcePSVI->getNumericProperty(DOMPSVITypeInfo::PSVI_Member_Type_Definition_Anonymous)); setNumericProperty(DOMPSVITypeInfo::PSVI_Schema_Specified, sourcePSVI->getNumericProperty(DOMPSVITypeInfo::PSVI_Schema_Specified)); setStringProperty(DOMPSVITypeInfo::PSVI_Type_Definition_Name, ownerDoc->getPooledString(sourcePSVI->getStringProperty(DOMPSVITypeInfo::PSVI_Type_Definition_Name))); setStringProperty(DOMPSVITypeInfo::PSVI_Type_Definition_Namespace, ownerDoc->getPooledString(sourcePSVI->getStringProperty(DOMPSVITypeInfo::PSVI_Type_Definition_Namespace))); setStringProperty(DOMPSVITypeInfo::PSVI_Member_Type_Definition_Name, ownerDoc->getPooledString(sourcePSVI->getStringProperty(DOMPSVITypeInfo::PSVI_Member_Type_Definition_Name))); setStringProperty(DOMPSVITypeInfo::PSVI_Member_Type_Definition_Namespace, ownerDoc->getPooledString(sourcePSVI->getStringProperty(DOMPSVITypeInfo::PSVI_Member_Type_Definition_Namespace))); setStringProperty(DOMPSVITypeInfo::PSVI_Schema_Default, ownerDoc->getPooledString(sourcePSVI->getStringProperty(DOMPSVITypeInfo::PSVI_Schema_Default))); setStringProperty(DOMPSVITypeInfo::PSVI_Schema_Normalized_Value, ownerDoc->getPooledString(sourcePSVI->getStringProperty(DOMPSVITypeInfo::PSVI_Schema_Normalized_Value))); } const XMLCh* DOMTypeInfoImpl::getTypeName() const { // if it's a DTD, return the data that was stored if(!getNumericProperty(PSVI_Schema_Specified)) return fTypeName; // if [validity] is "invalid" or "notKnown", the {target namespace} and {name} properties of the declared type if available, otherwise null. if(!getNumericProperty(PSVI_Validity)) return fTypeName; if(fMemberTypeName) return fMemberTypeName; return fTypeName; } const XMLCh* DOMTypeInfoImpl::getTypeNamespace() const { // if it's a DTD, return the data that was stored if(!getNumericProperty(PSVI_Schema_Specified)) return fTypeNamespace; // if [validity] is "invalid" or "notKnown", the {target namespace} and {name} properties of the declared type if available, otherwise null. if(!getNumericProperty(PSVI_Validity)) return fTypeNamespace; if(fMemberTypeName) // we check on the name, as the URI can be NULL return fMemberTypeNamespace; return fTypeNamespace; } bool DOMTypeInfoImpl::isDerivedFrom(const XMLCh* typeNamespaceArg, const XMLCh* typeNameArg, DerivationMethods) const { // if it's a DTD, return false if(!getNumericProperty(PSVI_Schema_Specified)) return false; if(XMLString::equals(typeNamespaceArg, getTypeNamespace()) && XMLString::equals(typeNameArg, getTypeName())) return true; // TODO: need a pointer to the Grammar object return false; } const XMLCh* DOMTypeInfoImpl::getStringProperty(PSVIProperty prop) const { switch(prop) { case PSVI_Type_Definition_Name: return fTypeName; case PSVI_Type_Definition_Namespace: return fTypeNamespace; case PSVI_Member_Type_Definition_Name: return fMemberTypeName; case PSVI_Member_Type_Definition_Namespace: return fMemberTypeNamespace; case PSVI_Schema_Default: return fDefaultValue; case PSVI_Schema_Normalized_Value: return fNormalizedValue; default: assert(false); /* it's not a string property */ } return 0; } int DOMTypeInfoImpl::getNumericProperty(PSVIProperty prop) const { switch(prop) { case PSVI_Validity: return (PSVIItem::VALIDITY_STATE)(fBitFields & 0x0003); case PSVI_Validation_Attempted: return (PSVIItem::ASSESSMENT_TYPE)((fBitFields >> 2) & 0x0003); case PSVI_Type_Definition_Type: return (fBitFields & (1 << 5))?XSTypeDefinition::COMPLEX_TYPE:XSTypeDefinition::SIMPLE_TYPE; case PSVI_Type_Definition_Anonymous: return (fBitFields & (1 << 6))?true:false; case PSVI_Nil: return (fBitFields & (1 << 7))?true:false; case PSVI_Member_Type_Definition_Anonymous: return (fBitFields & (1 << 8))?true:false; case PSVI_Schema_Specified: return (fBitFields & (1 << 9))?true:false; default: assert(false); /* it's not a numeric property */ } return 0; } void DOMTypeInfoImpl::setStringProperty(PSVIProperty prop, const XMLCh* value) { switch(prop) { case PSVI_Type_Definition_Name: fTypeName=value; break; case PSVI_Type_Definition_Namespace: fTypeNamespace=value; break; case PSVI_Member_Type_Definition_Name: fMemberTypeName=value; break; case PSVI_Member_Type_Definition_Namespace: fMemberTypeNamespace=value; break; case PSVI_Schema_Default: fDefaultValue=value; break; case PSVI_Schema_Normalized_Value: fNormalizedValue=value; break; default: assert(false); /* it's not a string property */ } } void DOMTypeInfoImpl::setNumericProperty(PSVIProperty prop, int value) { switch(prop) { case PSVI_Validity: fBitFields |= (value & 0x0003); break; case PSVI_Validation_Attempted: fBitFields |= ((value & 0x0003) << 2); break; case PSVI_Type_Definition_Type: fBitFields |= (value==XSTypeDefinition::COMPLEX_TYPE)?(1 << 5):0; break; case PSVI_Type_Definition_Anonymous: fBitFields |= (value!=0)?(1 << 6):0; break; case PSVI_Nil: fBitFields |= (value!=0)?(1 << 7):0; break; case PSVI_Member_Type_Definition_Anonymous: fBitFields |= (value!=0)?(1 << 8):0; break; case PSVI_Schema_Specified: fBitFields |= (value!=0)?(1 << 9):0; break; default: assert(false); /* it's not a numeric property */ } } XERCES_CPP_NAMESPACE_END /** * End of file DOMTypeInfo.cpp */ xerces-c-3.1.1/src/xercesc/dom/impl/DOMAttrImpl.cpp0000644000175000017500000003050011041336370021002 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMAttrImpl.cpp 678709 2008-07-22 10:56:56Z borisk $ */ #include #include #include "DOMAttrImpl.hpp" #include "DOMStringPool.hpp" #include "DOMDocumentImpl.hpp" #include "DOMCasts.hpp" #include "DOMTypeInfoImpl.hpp" XERCES_CPP_NAMESPACE_BEGIN DOMAttrImpl::DOMAttrImpl(DOMDocument *ownerDoc, const XMLCh *aName) : fNode(ownerDoc), fParent (ownerDoc), fSchemaType(0) { DOMDocumentImpl *docImpl = (DOMDocumentImpl *)ownerDoc; fName = docImpl->getPooledString(aName); fNode.isSpecified(true); } DOMAttrImpl::DOMAttrImpl(const DOMAttrImpl &other, bool /*deep*/) : DOMAttr(other) , fNode(other.fNode) , fParent (other.fParent) , fName(other.fName) , fSchemaType(other.fSchemaType) { if (other.fNode.isSpecified()) fNode.isSpecified(true); else fNode.isSpecified(false); if (other.fNode.isIdAttr()) { fNode.isIdAttr(true); DOMDocumentImpl *doc = (DOMDocumentImpl *)fParent.fOwnerDocument; doc->getNodeIDMap()->add(this); } fParent.cloneChildren(&other); } DOMAttrImpl::~DOMAttrImpl() { } DOMNode * DOMAttrImpl::cloneNode(bool deep) const { DOMNode* newNode = new (fParent.fOwnerDocument, DOMDocumentImpl::ATTR_OBJECT) DOMAttrImpl(*this, deep); fNode.callUserDataHandlers(DOMUserDataHandler::NODE_CLONED, this, newNode); return newNode; } const XMLCh * DOMAttrImpl::getNodeName() const{ return fName; } DOMNode::NodeType DOMAttrImpl::getNodeType() const { return DOMNode::ATTRIBUTE_NODE; } const XMLCh * DOMAttrImpl::getName() const { return fName; } const XMLCh * DOMAttrImpl::getNodeValue() const { return getValue(); } bool DOMAttrImpl::getSpecified() const { return fNode.isSpecified(); } const XMLCh * DOMAttrImpl::getValue() const { if (fParent.fFirstChild == 0) { return XMLUni::fgZeroLenString; // return ""; } // Simple case where attribute value is just a single text node DOMNode *node = castToChildImpl(fParent.fFirstChild)->nextSibling; if (node == 0 && fParent.fFirstChild->getNodeType() == DOMNode::TEXT_NODE) { return fParent.fFirstChild->getNodeValue(); } // // Complicated case where attribute value is a DOM tree // // According to the spec, the child nodes of the Attr node may be either // Text or EntityReference nodes. // // The parser will not create such thing, this is for those created by users. // // In such case, we have to visit each child to retrieve the text // DOMDocumentImpl* doc = (DOMDocumentImpl*)fParent.fOwnerDocument; XMLBuffer buf(1023, doc->getMemoryManager()); for (node = fParent.fFirstChild; node != 0; node = castToChildImpl(node)->nextSibling) getTextValue(node, buf); return doc->getPooledString(buf.getRawBuffer()); } void DOMAttrImpl::getTextValue(DOMNode* node, XMLBuffer& buf) const { if (node->getNodeType() == DOMNode::TEXT_NODE) buf.append(node->getNodeValue()); else if (node->getNodeType() == DOMNode::ENTITY_REFERENCE_NODE) { for (node = node->getFirstChild(); node != 0; node = castToChildImpl(node)->nextSibling) { getTextValue(node, buf); } } return; } void DOMAttrImpl::setNodeValue(const XMLCh *val) { setValue(val); } void DOMAttrImpl::setSpecified(bool arg) { fNode.isSpecified(arg); } void DOMAttrImpl::setValue(const XMLCh *val) { if (fNode.isReadOnly()) { throw DOMException(DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMNodeMemoryManager); } // If this attribute was of type ID and in the map, take it out, // then put it back in with the new name. For now, we don't worry // about what happens if the new name conflicts // DOMDocumentImpl *doc = (DOMDocumentImpl *)fParent.fOwnerDocument; if (fNode.isIdAttr()) doc->getNodeIDMap()->remove(this); DOMNode *kid; while ((kid = fParent.fFirstChild) != 0) // Remove existing kids { DOMNode* node = removeChild(kid); if (node) node->release(); } if (val != 0) // Create and add the new one fParent.appendChildFast(doc->createTextNode(val)); fNode.isSpecified(true); fParent.changed(); if (fNode.isIdAttr()) doc->getNodeIDMap()->add(this); } void DOMAttrImpl::setValueFast(const XMLCh *val) { if (val != 0) fParent.appendChildFast(fParent.fOwnerDocument->createTextNode(val)); fNode.isSpecified (true); } //Introduced in DOM Level 2 DOMElement *DOMAttrImpl::getOwnerElement() const { // if we have an owner, ownerNode is our ownerElement, otherwise it's // our ownerDocument and we don't have an ownerElement return (DOMElement *) (fNode.isOwned() ? fNode.fOwnerNode : 0); } //internal use by parser only void DOMAttrImpl::setOwnerElement(DOMElement *ownerElem) { fNode.fOwnerNode = ownerElem; // revisit. Is this backwards? isOwned(true)? fNode.isOwned(false); } //For DOM Level 3 void DOMAttrImpl::release() { if (fNode.isOwned() && !fNode.isToBeReleased()) throw DOMException(DOMException::INVALID_ACCESS_ERR,0, GetDOMNodeMemoryManager); DOMDocumentImpl* doc = (DOMDocumentImpl*)fParent.fOwnerDocument; if (doc) { fNode.callUserDataHandlers(DOMUserDataHandler::NODE_DELETED, 0, 0); fParent.release(); doc->release(this, DOMMemoryManager::ATTR_OBJECT); } else { // shouldn't reach here throw DOMException(DOMException::INVALID_ACCESS_ERR,0, GetDOMNodeMemoryManager); } } bool DOMAttrImpl::isId() const { return fNode.isIdAttr(); } DOMNode* DOMAttrImpl::rename(const XMLCh* namespaceURI, const XMLCh* name) { DOMElement* el = getOwnerElement(); DOMDocumentImpl* doc = (DOMDocumentImpl*)fParent.fOwnerDocument; if (el) el->removeAttributeNode(this); if (!namespaceURI || !*namespaceURI) { fName = doc->getPooledString(name); if (el) el->setAttributeNode(this); // and fire user data NODE_RENAMED event castToNodeImpl(this)->callUserDataHandlers(DOMUserDataHandler::NODE_RENAMED, this, this); return this; } else { // create a new AttrNS DOMAttr* newAttr = doc->createAttributeNS(namespaceURI, name); // transfer the userData doc->transferUserData(castToNodeImpl(this), castToNodeImpl(newAttr)); // move children to new node DOMNode* child = getFirstChild(); while (child) { removeChild(child); newAttr->appendChild(child); child = getFirstChild(); } // reattach attr to element if (el) el->setAttributeNodeNS(newAttr); // and fire user data NODE_RENAMED event castToNodeImpl(newAttr)->callUserDataHandlers(DOMUserDataHandler::NODE_RENAMED, this, newAttr); return newAttr; } } const DOMTypeInfo *DOMAttrImpl::getSchemaTypeInfo() const { if(!fSchemaType) return &DOMTypeInfoImpl::g_DtdNotValidatedAttribute; return fSchemaType; } void DOMAttrImpl::setSchemaTypeInfo(const DOMTypeInfoImpl* typeInfo) { fSchemaType = typeInfo; } bool DOMAttrImpl::isSupported(const XMLCh *feature, const XMLCh *version) const { // check for '+DOMPSVITypeInfo' if(feature && *feature=='+' && XMLString::equals(feature+1, XMLUni::fgXercescInterfacePSVITypeInfo)) return true; return fNode.isSupported (feature, version); } void* DOMAttrImpl::getFeature(const XMLCh* feature, const XMLCh* version) const { if(XMLString::equals(feature, XMLUni::fgXercescInterfacePSVITypeInfo)) return (DOMPSVITypeInfo*)fSchemaType; return fNode.getFeature(feature, version); } DOMNode* DOMAttrImpl::appendChild(DOMNode *newChild) {return fParent.appendChild (newChild); } DOMNamedNodeMap* DOMAttrImpl::getAttributes() const {return fNode.getAttributes (); } DOMNodeList* DOMAttrImpl::getChildNodes() const {return fParent.getChildNodes (); } DOMNode* DOMAttrImpl::getFirstChild() const {return fParent.getFirstChild (); } DOMNode* DOMAttrImpl::getLastChild() const {return fParent.getLastChild (); } const XMLCh* DOMAttrImpl::getLocalName() const {return fNode.getLocalName (); } const XMLCh* DOMAttrImpl::getNamespaceURI() const {return fNode.getNamespaceURI (); } DOMNode* DOMAttrImpl::getNextSibling() const {return fNode.getNextSibling (); } DOMDocument* DOMAttrImpl::getOwnerDocument() const {return fParent.fOwnerDocument; } const XMLCh* DOMAttrImpl::getPrefix() const {return fNode.getPrefix (); } DOMNode* DOMAttrImpl::getParentNode() const {return fNode.getParentNode (); } DOMNode* DOMAttrImpl::getPreviousSibling() const {return fNode.getPreviousSibling (); } bool DOMAttrImpl::hasChildNodes() const {return fParent.hasChildNodes (); } DOMNode* DOMAttrImpl::insertBefore(DOMNode *newChild, DOMNode *refChild) {return fParent.insertBefore (newChild, refChild); } void DOMAttrImpl::normalize() {fParent.normalize (); } DOMNode* DOMAttrImpl::removeChild(DOMNode *oldChild) {return fParent.removeChild (oldChild); } DOMNode* DOMAttrImpl::replaceChild(DOMNode *newChild, DOMNode *oldChild) {return fParent.replaceChild (newChild, oldChild); } void DOMAttrImpl::setPrefix(const XMLCh *prefix) {fNode.setPrefix(prefix); } bool DOMAttrImpl::hasAttributes() const {return fNode.hasAttributes(); } bool DOMAttrImpl::isSameNode(const DOMNode* other) const {return fNode.isSameNode(other); } bool DOMAttrImpl::isEqualNode(const DOMNode* arg) const {return fParent.isEqualNode(arg); } void* DOMAttrImpl::setUserData(const XMLCh* key, void* data, DOMUserDataHandler* handler) {return fNode.setUserData(key, data, handler); } void* DOMAttrImpl::getUserData(const XMLCh* key) const {return fNode.getUserData(key); } const XMLCh* DOMAttrImpl::getBaseURI() const {return fNode.getBaseURI(); } short DOMAttrImpl::compareDocumentPosition(const DOMNode* other) const {return fNode.compareDocumentPosition(other); } const XMLCh* DOMAttrImpl::getTextContent() const {return fNode.getTextContent(); } void DOMAttrImpl::setTextContent(const XMLCh* textContent){fNode.setTextContent(textContent); } const XMLCh* DOMAttrImpl::lookupPrefix(const XMLCh* namespaceURI) const {return fNode.lookupPrefix(namespaceURI); } bool DOMAttrImpl::isDefaultNamespace(const XMLCh* namespaceURI) const {return fNode.isDefaultNamespace(namespaceURI); } const XMLCh* DOMAttrImpl::lookupNamespaceURI(const XMLCh* prefix) const {return fNode.lookupNamespaceURI(prefix); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMStringPool.hpp0000644000175000017500000001373011041363760021364 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMStringPool.hpp 678766 2008-07-22 14:00:16Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMSTRINGPOOL_HPP) #define XERCESC_INCLUDE_GUARD_DOMSTRINGPOOL_HPP // // This file is part of the internal implementation of the C++ XML DOM. // It should NOT be included or used directly by application programs. // // Applications should include the file for the entire // DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class // name is substituded for the *. // #include XERCES_CPP_NAMESPACE_BEGIN class DOMDocumentImpl; // // DStringPoolEntry - one of these structs is allocated for each // XMLCh String in the pool. Each slot in the // hash table array itself is a pointer to the head // of a singly-linked list of these structs. // // Although this struct is delcared with a string length of one, // the factory method allocates enough storage to hold the full // string length. // struct DOMStringPoolEntry { DOMStringPoolEntry *fNext; XMLCh fString[1]; }; // // DOMBuffer is a lightweight text buffer // The buffer is not nul terminated until some asks to see the raw buffer // contents. This also avoids overhead during append operations. class DOMBuffer { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- DOMBuffer(DOMDocumentImpl *doc, XMLSize_t capacity = 31); ~DOMBuffer() { } // ----------------------------------------------------------------------- // Buffer Management // ----------------------------------------------------------------------- void append (const XMLCh* const chars); void append (const XMLCh* const chars, const XMLSize_t count); void set (const XMLCh* const chars); void set (const XMLCh* const chars, const XMLSize_t count); const XMLCh* getRawBuffer() const { fBuffer[fIndex] = 0; return fBuffer; } void reset() { fIndex = 0; fBuffer[0] = 0; } void chop ( const XMLSize_t count ) { fBuffer[count] = 0; fIndex = count; } // ----------------------------------------------------------------------- // Getters // ----------------------------------------------------------------------- XMLSize_t getLen() const { return fIndex; } XMLSize_t getCapacity() const { return fCapacity; } // ----------------------------------------------------------------------- // Private helpers // ----------------------------------------------------------------------- void expandCapacity(const XMLSize_t extraNeeded); private : // ----------------------------------------------------------------------- // Private data members // // fBuffer // The pointer to the buffer data. Its grown as needed. Its always // one larger than fCapacity, to leave room for the null terminator. // // fIndex // The current index into the buffer, as characters are appended // to it. If its zero, then the buffer is empty. // // fCapacity // The current capacity of the buffer. Its actually always one // larger, to leave room for the null terminator. // // fDoc // For allocating memory // ----------------------------------------------------------------------- XMLCh* fBuffer; XMLSize_t fIndex; XMLSize_t fCapacity; DOMDocumentImpl* fDoc; // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DOMBuffer(const DOMBuffer &); DOMBuffer & operator = (const DOMBuffer &); }; inline void DOMBuffer:: append (const XMLCh* const chars) { XMLSize_t count = XMLString::stringLen(chars); if (fIndex + count >= fCapacity) expandCapacity(count); memcpy(&fBuffer[fIndex], chars, count * sizeof(XMLCh)); fIndex += count; // Keep it null terminated fBuffer[fIndex] = 0; } inline void DOMBuffer:: append (const XMLCh* const chars, const XMLSize_t count) { if (fIndex + count >= fCapacity) expandCapacity(count); memcpy(&fBuffer[fIndex], chars, count * sizeof(XMLCh)); fIndex += count; // Keep it null terminated fBuffer[fIndex] = 0; } inline void DOMBuffer:: set (const XMLCh* const chars) { XMLSize_t count = XMLString::stringLen(chars); fIndex = 0; if (count >= fCapacity) expandCapacity(count); memcpy(fBuffer, chars, count * sizeof(XMLCh)); fIndex = count; // Keep it null terminated fBuffer[fIndex] = 0; } inline void DOMBuffer:: set (const XMLCh* const chars, const XMLSize_t count) { fIndex = 0; if (count >= fCapacity) expandCapacity(count); memcpy(fBuffer, chars, count * sizeof(XMLCh)); fIndex = count; // Keep it null terminated fBuffer[fIndex] = 0; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMCasts.hpp0000644000175000017500000001165411033366054020344 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMCasts.hpp 673975 2008-07-04 09:23:56Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMCASTS_HPP) #define XERCESC_INCLUDE_GUARD_DOMCASTS_HPP // // This file is part of the internal implementation of the C++ XML DOM. // It should NOT be included or used directly by application programs. // // Applications should include the file for the entire // DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class // name is substituded for the *. // // // Define inline casting functions to convert from // (DOMNode *) to DOMParentNode or DOMChildNode *. // // This requires knowledge of the structure of the fields of // for all node types. There are three categories - // // Nodetypes that can have children and can be a child themselves. // e.g. Elements // // Object // DOMNodeImpl fNode; // DOMParentNode fParent; // DOMChildNode fChild; // ... // other fields, depending on node type. // // Nodetypes that can not have children, e.g. TEXT // // Object // DOMNodeImpl fNode; // DOMChildNode fChild; // ... // other fields, depending on node type // // Nodetypes that can not be a child of other nodes, but that can // have children (are a parent) e.g. ATTR // Object // DOMNodeImpl fNode; // DOMParentNode fParent // ... // other fields, depending on node type // // The casting functions make these assumptions: // 1. The cast is possible. Using code will not attempt to // cast to something that does not exist, such as the child // part of an ATTR // // 2. The nodes belong to this implementation. // // Some of the casts use the LEAFNODE flag in the common fNode part to // determine whether an fParent field exists, and thus the // position of the fChild part within the node. // // These functions also cast off const. It was either do that, or make // a second overloaded set that took and returned const arguements. // // // Note that using offsetof, or taking the offset of an object member at // a 0 address, is now undefined in C++. And gcc now warns about this behavior. // This is because doing do so is unreliable for some types of objects. // See: http://gcc.gnu.org/ml/gcc/2004-06/msg00227.html // : http://gcc.gnu.org/ml/gcc-bugs/2000-03/msg00805.html // The casting code below works around gcc's warnings by using a dummy // pointer, which the compiler cannot tell is null. The defeats the warning, // but also masks the potential problem. // The gcc option -Wno-invalid-offsetof may also be used to turn off this warning. // #include "DOMElementImpl.hpp" #include "DOMTextImpl.hpp" XERCES_CPP_NAMESPACE_BEGIN static inline DOMNodeImpl *castToNodeImpl(const DOMNode *p) { DOMElementImpl *pE = (DOMElementImpl *)p; return &(pE->fNode); } static inline DOMParentNode *castToParentImpl(const DOMNode *p) { DOMElementImpl *pE = (DOMElementImpl *)p; return &(pE->fParent); } static inline DOMChildNode *castToChildImpl(const DOMNode *p) { DOMElementImpl *pE = (DOMElementImpl *)p; if (pE->fNode.isLeafNode()) { DOMTextImpl *pT = (DOMTextImpl *)p; return &(pT->fChild); } return &(pE->fChild); } static inline DOMNode *castToNode(const DOMParentNode *p ) { DOMElementImpl* dummy = 0; XMLSize_t parentOffset = (char *)&(dummy->fParent) - (char *)dummy; char *retPtr = (char *)p - parentOffset; return (DOMNode *)retPtr; } static inline DOMNode *castToNode(const DOMNodeImpl *p) { DOMElementImpl* dummy = 0; XMLSize_t nodeImplOffset = (char *)&(dummy->fNode) - (char *)dummy; char *retPtr = (char *)p - nodeImplOffset; return (DOMNode *)retPtr; } static inline DOMNodeImpl *castToNodeImpl(const DOMParentNode *p) { DOMElementImpl* dummy = 0; XMLSize_t nodeImplOffset = (char *)&(dummy->fNode) - (char *)dummy; XMLSize_t parentOffset = (char *)&(dummy->fParent) - (char *)dummy; char *retPtr = (char *)p - parentOffset + nodeImplOffset; return (DOMNodeImpl *)retPtr; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMStringPool.cpp0000644000175000017500000000412011041363760021350 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMStringPool.cpp 678766 2008-07-22 14:00:16Z borisk $ */ #include #include #include "DOMStringPool.hpp" #include "DOMDocumentImpl.hpp" XERCES_CPP_NAMESPACE_BEGIN DOMBuffer:: DOMBuffer(DOMDocumentImpl *doc, XMLSize_t capacity) : fBuffer(0) , fIndex(0) , fCapacity(capacity) , fDoc(doc) { // Buffer is one larger than capacity, to allow for zero term fBuffer = (XMLCh*) doc->allocate((fCapacity+1)*sizeof(XMLCh)); // Keep it null terminated fBuffer[0] = XMLCh(0); } // --------------------------------------------------------------------------- // DOMBuffer: Private helper methods // --------------------------------------------------------------------------- void DOMBuffer::expandCapacity(const XMLSize_t extraNeeded) { //not enough room. Calc new capacity and allocate new buffer const XMLSize_t newCap = (XMLSize_t)((fIndex + extraNeeded) * 1.25); XMLCh* newBuf = (XMLCh*) fDoc->allocate((newCap+1)*sizeof(XMLCh)); // Copy over the old stuff memcpy(newBuf, fBuffer, fCapacity * sizeof(XMLCh)); // revisit: Leave the old buffer in document heap, yes, this is a leak, but live with it! // store new stuff fBuffer = newBuf; fCapacity = newCap; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMParentNode.cpp0000644000175000017500000003641011041336370021313 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMParentNode.cpp 678709 2008-07-22 10:56:56Z borisk $ */ #include #include #include #include "DOMDocumentImpl.hpp" #include "DOMRangeImpl.hpp" #include "DOMNodeIteratorImpl.hpp" #include "DOMParentNode.hpp" #include "DOMCasts.hpp" XERCES_CPP_NAMESPACE_BEGIN DOMParentNode::DOMParentNode(DOMDocument *ownerDoc) : fOwnerDocument(ownerDoc), fFirstChild(0), fChildNodeList(this) { } // This only makes a shallow copy, cloneChildren must also be called for a // deep clone DOMParentNode::DOMParentNode(const DOMParentNode &other) : fChildNodeList(this) { this->fOwnerDocument = other.fOwnerDocument; // Need to break the association w/ original kids this->fFirstChild = 0; } void DOMParentNode::changed() { ((DOMDocumentImpl*)fOwnerDocument)->changed(); } int DOMParentNode::changes() const { return ((DOMDocumentImpl*)fOwnerDocument)->changes(); } DOMNode * DOMParentNode::appendChild(DOMNode *newChild) { return insertBefore(newChild, 0); } void DOMParentNode::cloneChildren(const DOMNode *other) { // for (DOMNode *mykid = other.getFirstChild(); for (DOMNode *mykid = other->getFirstChild(); mykid != 0; mykid = mykid->getNextSibling()) { appendChild(mykid->cloneNode(true)); } } DOMDocument * DOMParentNode::getOwnerDocument() const { return fOwnerDocument; } // unlike getOwnerDocument this is not overriden by DocumentImpl to return 0 DOMDocument * DOMParentNode::getDocument() const { return fOwnerDocument; } void DOMParentNode::setOwnerDocument(DOMDocument* doc) { fOwnerDocument = doc; } DOMNodeList *DOMParentNode::getChildNodes() const { const DOMNodeList *ret = &fChildNodeList; return (DOMNodeList *)ret; // cast off const. } DOMNode * DOMParentNode::getFirstChild() const { return fFirstChild; } DOMNode * DOMParentNode::getLastChild() const { return lastChild(); } DOMNode * DOMParentNode::lastChild() const { // last child is stored as the previous sibling of first child if (fFirstChild == 0) { return 0; } DOMChildNode *firstChild = castToChildImpl(fFirstChild); DOMNode *ret = firstChild->previousSibling; return ret; } // // revisit. Is this function used anywhere? I don't see it. // void DOMParentNode::lastChild(DOMNode *node) { // store lastChild as previous sibling of first child if (fFirstChild != 0) { DOMChildNode *firstChild = castToChildImpl(fFirstChild); firstChild->previousSibling = node; } } bool DOMParentNode::hasChildNodes() const { return fFirstChild!=0; } DOMNode *DOMParentNode::insertBefore(DOMNode *newChild, DOMNode *refChild) { //not really in the specs, but better than nothing if(newChild==NULL) throw DOMException(DOMException::HIERARCHY_REQUEST_ERR,0, GetDOMParentNodeMemoryManager); DOMNodeImpl *thisNodeImpl = castToNodeImpl(this); if (thisNodeImpl->isReadOnly()) throw DOMException(DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMParentNodeMemoryManager); if (newChild->getOwnerDocument() != fOwnerDocument) throw DOMException(DOMException::WRONG_DOCUMENT_ERR, 0, GetDOMParentNodeMemoryManager); // Prevent cycles in the tree //only need to do this if the node has children if(newChild->hasChildNodes()) { bool treeSafe=true; for(DOMNode *a=castToNode(this)->getParentNode(); treeSafe && a!=0; a=a->getParentNode()) treeSafe=(newChild!=a); if(!treeSafe) throw DOMException(DOMException::HIERARCHY_REQUEST_ERR,0, GetDOMParentNodeMemoryManager); } // refChild must in fact be a child of this node (or 0) if (refChild!=0 && refChild->getParentNode() != castToNode(this)) throw DOMException(DOMException::NOT_FOUND_ERR,0, GetDOMParentNodeMemoryManager); // if the new node has to be placed before itself, we don't have to do anything // (even worse, we would crash if we continue, as we assume they are two distinct nodes) if (refChild!=0 && newChild->isSameNode(refChild)) return newChild; if (newChild->getNodeType() == DOMNode::DOCUMENT_FRAGMENT_NODE) { // SLOW BUT SAFE: We could insert the whole subtree without // juggling so many next/previous pointers. (Wipe out the // parent's child-list, patch the parent pointers, set the // ends of the list.) But we know some subclasses have special- // case behavior they add to insertBefore(), so we don't risk it. // This approch also takes fewer bytecodes. // NOTE: If one of the children is not a legal child of this // node, throw HIERARCHY_REQUEST_ERR before _any_ of the children // have been transferred. (Alternative behaviors would be to // reparent up to the first failure point or reparent all those // which are acceptable to the target node, neither of which is // as robust. PR-DOM-0818 isn't entirely clear on which it // recommends????? // No need to check kids for right-document; if they weren't, // they wouldn't be kids of that DocFrag. for(DOMNode *kid=newChild->getFirstChild(); // Prescan kid!=0; kid=kid->getNextSibling()) { if (!DOMDocumentImpl::isKidOK(castToNode(this), kid)) throw DOMException(DOMException::HIERARCHY_REQUEST_ERR,0, GetDOMParentNodeMemoryManager); } while(newChild->hasChildNodes()) // Move castToNode(this)->insertBefore(newChild->getFirstChild(),refChild); } else if (!DOMDocumentImpl::isKidOK(castToNode(this), newChild)) throw DOMException(DOMException::HIERARCHY_REQUEST_ERR,0, GetDOMParentNodeMemoryManager); else { DOMNode *oldparent=newChild->getParentNode(); if(oldparent!=0) oldparent->removeChild(newChild); // Attach up castToNodeImpl(newChild)->fOwnerNode = castToNode(this); castToNodeImpl(newChild)->isOwned(true); // Attach before and after // Note: fFirstChild.previousSibling == lastChild!! if (fFirstChild == 0) { // this our first and only child fFirstChild = newChild; castToNodeImpl(newChild)->isFirstChild(true); // castToChildImpl(newChild)->previousSibling = newChild; DOMChildNode *newChild_ci = castToChildImpl(newChild); newChild_ci->previousSibling = newChild; } else { if (refChild == 0) { // this is an append DOMNode *lastChild = castToChildImpl(fFirstChild)->previousSibling; castToChildImpl(lastChild)->nextSibling = newChild; castToChildImpl(newChild)->previousSibling = lastChild; castToChildImpl(fFirstChild)->previousSibling = newChild; } else { // this is an insert if (refChild == fFirstChild) { // at the head of the list castToNodeImpl(fFirstChild)->isFirstChild(false); castToChildImpl(newChild)->nextSibling = fFirstChild; castToChildImpl(newChild)->previousSibling = castToChildImpl(fFirstChild)->previousSibling; castToChildImpl(fFirstChild)->previousSibling = newChild; fFirstChild = newChild; castToNodeImpl(newChild)->isFirstChild(true); } else { // somewhere in the middle DOMNode *prev = castToChildImpl(refChild)->previousSibling; castToChildImpl(newChild)->nextSibling = refChild; castToChildImpl(prev)->nextSibling = newChild; castToChildImpl(refChild)->previousSibling = newChild; castToChildImpl(newChild)->previousSibling = prev; } } } } changed(); if (fOwnerDocument != 0) { Ranges* ranges = ((DOMDocumentImpl*)fOwnerDocument)->getRanges(); if ( ranges != 0) { XMLSize_t sz = ranges->size(); if (sz != 0) { for (XMLSize_t i =0; ielementAt(i)->updateRangeForInsertedNode(newChild); } } } } return newChild; } DOMNode *DOMParentNode::removeChild(DOMNode *oldChild) { if (castToNodeImpl(this)->isReadOnly()) throw DOMException( DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMParentNodeMemoryManager); if (oldChild == 0 || oldChild->getParentNode() != castToNode(this)) throw DOMException(DOMException::NOT_FOUND_ERR, 0, GetDOMParentNodeMemoryManager); if (fOwnerDocument != 0) { //notify iterators NodeIterators* nodeIterators = ((DOMDocumentImpl*)fOwnerDocument)->getNodeIterators(); if (nodeIterators != 0) { XMLSize_t sz = nodeIterators->size(); if (sz != 0) { for (XMLSize_t i =0; ielementAt(i) != 0) nodeIterators->elementAt(i)->removeNode(oldChild); } } } //fix other ranges for change before deleting the node Ranges* ranges = ((DOMDocumentImpl*)fOwnerDocument)->getRanges(); if (ranges != 0) { XMLSize_t sz = ranges->size(); if (sz != 0) { for (XMLSize_t i =0; ielementAt(i) != 0) ranges->elementAt(i)->updateRangeForDeletedNode(oldChild); } } } } // Patch linked list around oldChild // Note: lastChild == fFirstChild->previousSibling if (oldChild == fFirstChild) { // removing first child castToNodeImpl(oldChild)->isFirstChild(false); fFirstChild = castToChildImpl(oldChild)->nextSibling; if (fFirstChild != 0) { castToNodeImpl(fFirstChild)->isFirstChild(true); castToChildImpl(fFirstChild)->previousSibling = castToChildImpl(oldChild)->previousSibling; } } else { DOMNode *prev = castToChildImpl(oldChild)->previousSibling; DOMNode *next = castToChildImpl(oldChild)->nextSibling; castToChildImpl(prev)->nextSibling = next; if (next == 0) { // removing last child castToChildImpl(fFirstChild)->previousSibling = prev; } else { // removing some other child in the middle castToChildImpl(next)->previousSibling = prev; } } // Remove oldChild's references to tree castToNodeImpl(oldChild)->fOwnerNode = fOwnerDocument; castToNodeImpl(oldChild)->isOwned(false); castToChildImpl(oldChild)->nextSibling = 0; castToChildImpl(oldChild)->previousSibling = 0; changed(); return oldChild; } DOMNode *DOMParentNode::replaceChild(DOMNode *newChild, DOMNode *oldChild) { insertBefore(newChild, oldChild); // changed() already done. return removeChild(oldChild); } DOMNode * DOMParentNode::appendChildFast(DOMNode *newChild) { // This function makes the following assumptions: // // - newChild != 0 // - newChild is not read-only // - newChild is not a document fragment // - owner documents of this node and newChild are the same // - appending newChild to this node cannot result in a cycle // - DOMDocumentImpl::isKidOK (this, newChild) return true (that is, // appending newChild to this node results in a valid structure) // - newChild->getParentNode() is 0 // - there are no ranges set for this document // // Attach up castToNodeImpl(newChild)->fOwnerNode = castToNode(this); castToNodeImpl(newChild)->isOwned(true); // Attach before and after // Note: fFirstChild.previousSibling == lastChild!! if (fFirstChild != 0) { DOMNode *lastChild = castToChildImpl(fFirstChild)->previousSibling; castToChildImpl(lastChild)->nextSibling = newChild; castToChildImpl(newChild)->previousSibling = lastChild; castToChildImpl(fFirstChild)->previousSibling = newChild; } else { // this our first and only child fFirstChild = newChild; castToNodeImpl(newChild)->isFirstChild(true); // castToChildImpl(newChild)->previousSibling = newChild; DOMChildNode *newChild_ci = castToChildImpl(newChild); newChild_ci->previousSibling = newChild; } return newChild; } //Introduced in DOM Level 2 void DOMParentNode::normalize() { DOMNode *kid, *next; for (kid = fFirstChild; kid != 0; kid = next) { next = castToChildImpl(kid)->nextSibling; // If kid and next are both Text nodes (but _not_ CDATASection, // which is a subclass of Text), they can be merged. if (next != 0 && kid->getNodeType() == DOMNode::TEXT_NODE && next->getNodeType() == DOMNode::TEXT_NODE ) { ((DOMTextImpl *) kid)->appendData(((DOMTextImpl *) next)->getData()); // revisit: // should I release the removed node? // not released in case user still referencing it externally removeChild(next); next = kid; // Don't advance; there might be another. } // Otherwise it might be an Element, which is handled recursively else if (kid->getNodeType() == DOMNode::ELEMENT_NODE) kid->normalize(); } // changed() will have occurred when the removeChild() was done, // so does not have to be reissued. } //Introduced in DOM Level 3 bool DOMParentNode::isEqualNode(const DOMNode* arg) const { if (arg && castToNodeImpl(this)->isSameNode(arg)) return true; if (arg && castToNodeImpl(this)->isEqualNode(arg)) { DOMNode *kid, *argKid; for (kid = fFirstChild, argKid = arg->getFirstChild(); kid != 0 && argKid != 0; kid = kid->getNextSibling(), argKid = argKid->getNextSibling()) { if (!kid->isEqualNode(argKid)) return false; } return (kid || argKid) ? false : true; } return false; } //Non-standard extension void DOMParentNode::release() { DOMNode *kid, *next; for (kid = fFirstChild; kid != 0; kid = next) { next = castToChildImpl(kid)->nextSibling; // set is Owned false before releasing its child castToNodeImpl(kid)->isToBeReleased(true); kid->release(); } } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMProcessingInstructionImpl.hpp0000644000175000017500000000614210772402041024457 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMProcessingInstructionImpl.hpp 641193 2008-03-26 08:06:57Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMPROCESSINGINSTRUCTIONIMPL_HPP) #define XERCESC_INCLUDE_GUARD_DOMPROCESSINGINSTRUCTIONIMPL_HPP // // This file is part of the internal implementation of the C++ XML DOM. // It should NOT be included or used directly by application programs. // // Applications should include the file for the entire // DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class // name is substituded for the *. // #include #include #include "DOMCharacterDataImpl.hpp" #include "DOMNodeImpl.hpp" #include "DOMChildNode.hpp" XERCES_CPP_NAMESPACE_BEGIN class DocumentImpl; class CDOM_EXPORT DOMProcessingInstructionImpl: public DOMProcessingInstruction { protected: DOMNodeImpl fNode; DOMChildNode fChild; // use fCharacterData to store its data so that those character utitlites can be used DOMCharacterDataImpl fCharacterData; XMLCh *fTarget; const XMLCh *fBaseURI; public: DOMProcessingInstructionImpl(DOMDocument *ownerDoc, const XMLCh * target, const XMLCh *data); DOMProcessingInstructionImpl(const DOMProcessingInstructionImpl &other, bool deep=false); virtual ~DOMProcessingInstructionImpl(); public: // Declare all of the functions from DOMNode. DOMNODE_FUNCTIONS; public: virtual const XMLCh *getData() const; virtual const XMLCh *getTarget() const; virtual void setData(const XMLCh *arg); // NON-DOM: set base uri virtual void setBaseURI(const XMLCh* baseURI); // Non standard extension for the range to work void deleteData(XMLSize_t offset, XMLSize_t count); const XMLCh* substringData(XMLSize_t offset, XMLSize_t count) const; DOMProcessingInstruction* splitText(XMLSize_t offset); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DOMProcessingInstructionImpl & operator = (const DOMProcessingInstructionImpl &); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMNodeIDMap.hpp0000644000175000017500000000636611037122704021027 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMNodeIDMap.hpp 676911 2008-07-15 13:27:32Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMNODEIDMAP_HPP) #define XERCESC_INCLUDE_GUARD_DOMNODEIDMAP_HPP // // This file is part of the internal implementation of the C++ XML DOM. // It should NOT be included or used directly by application programs. // // Applications should include the file for the entire // DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class // name is substituded for the *. // #include XERCES_CPP_NAMESPACE_BEGIN // // Class DOMNodeIDMap is a hash table that is used in the implementation of // of DOM_Document::getElementsByID(). // // Why Yet Another HashTable implementation? Becuase it can be significantly // smaller when tuned for this exact usage, and the generic RefHashTableOf // from the xerces utils project is not a paricularly good fit. // class DOMAttr; class DOMDocument; class DOMNodeIDMap { public: DOMNodeIDMap(XMLSize_t initialSize, DOMDocument *doc); // Create a new hash table, sized to hold "initialSize" // Entries. It will automatically grow if need be. ~DOMNodeIDMap(); private: DOMNodeIDMap(const DOMNodeIDMap &other); // No copy, assignement, comparison. DOMNodeIDMap &operator = (const DOMNodeIDMap &other); bool operator == (const DOMNodeIDMap &other); public: void add(DOMAttr *attr); // Add the specified attribute to the table. void remove(DOMAttr *other); // Remove the specified attribute. // Does nothing if the node is not in the table. DOMAttr *find(const XMLCh *ID); // Find the attribute node in the table with this ID private: void growTable(); private: DOMAttr **fTable; XMLSize_t fSizeIndex; // Index of the current table size in the // array of possible table sizes. XMLSize_t fSize; // The current size of the table array // (number of slots, not bytes.) XMLSize_t fNumEntries; // The number of entries used. XMLSize_t fMaxEntries; // The max number of entries to use before // growing the table. DOMDocument *fDoc; // The owning document. }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMNormalizer.hpp0000644000175000017500000001302111037122704021373 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMNormalizer.hpp 676911 2008-07-15 13:27:32Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMNORMALIZER_HPP) #define XERCESC_INCLUDE_GUARD_DOMNORMALIZER_HPP // // This file is part of the internal implementation of the C++ XML DOM. // It should NOT be included or used directly by application programs. // // Applications should include the file for the entire // DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class // name is substituded for the *. // #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN class DOMConfigurationImpl; class DOMErrorHandler; class DOMDocumentImpl; class DOMNode; class DOMElementImpl; class DOMAttr; class DOMNamedNodeMap; class DOMNormalizer : public XMemory { //the following are the data structures maintain the stack of namespace information class InScopeNamespaces : public XMemory { class Scope : public XMemory { public: Scope(Scope *baseScopeWithBindings); ~Scope(); void addOrChangeBinding(const XMLCh *prefix, const XMLCh *uri, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); const XMLCh* getUri(const XMLCh *prefix) const; const XMLCh* getPrefix(const XMLCh* uri) const; Scope *fBaseScopeWithBindings; private: RefHashTableOf *fPrefixHash; RefHashTableOf *fUriHash; // unimplemented Scope ( const Scope& toCopy); Scope& operator= (const Scope& other); }; public: InScopeNamespaces(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); ~InScopeNamespaces(); void addOrChangeBinding(const XMLCh *prefix, const XMLCh *uri, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); void addScope(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); void removeScope(); bool isValidBinding(const XMLCh* prefix, const XMLCh* uri) const; const XMLCh* getOrDeclarePrefix(const XMLCh* uri); const XMLCh* getPrefix(const XMLCh* uri) const; const XMLCh* getUri(const XMLCh* prefix) const; XMLSize_t size(); private: RefVectorOf *fScopes; Scope *lastScopeWithBindings; // unimplemented InScopeNamespaces ( const InScopeNamespaces& toCopy); InScopeNamespaces& operator= (const InScopeNamespaces& other); }; public: DOMNormalizer(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); ~DOMNormalizer(); /** * Main entry method to normalize a document */ void normalizeDocument(DOMDocumentImpl *doc); private: // unimplemented DOMNormalizer ( const DOMNormalizer& toCopy); DOMNormalizer& operator= (const DOMNormalizer& other); protected: /** * Recursively normalizes a node */ DOMNode * normalizeNode(DOMNode *node) const; /** * Helper method that fixes up the namespace declarations according to the * DOM Level 3 psydocode */ void namespaceFixUp(DOMElementImpl *ele) const; /** * Converts an integer to an XMLCh - max 15 digits long. */ const XMLCh * integerToXMLCh(unsigned int i) const; /** * Adds a namespace attribute or replaces the value of existing namespace * attribute with the given prefix and value for URI. * In case prefix is empty will add/update default namespace declaration. */ void addOrChangeNamespaceDecl(const XMLCh* prefix, const XMLCh* uri, DOMElementImpl *element) const; /** * Adds a custom namespace in the form "NSx" where x is an integer that * has not yet used in the document */ const XMLCh* addCustomNamespaceDecl(const XMLCh* uri, DOMElementImpl *element) const; /** * Report an error */ void error(const XMLErrs::Codes code, const DOMNode *node) const; // // fDocument - the document we are operating on // // fDOMConfiguration - the configuration from the document // // fErrorHandler - the errorhandler to be used when reporting errors during normalization // // fNSScope - the data stucture that holds the prefix-uri information // // fNewNamespaceCount - the number of custom namespace declarations we have created // DOMDocumentImpl *fDocument; DOMConfigurationImpl *fConfiguration; DOMErrorHandler *fErrorHandler; InScopeNamespaces *fNSScope; unsigned int fNewNamespaceCount; MemoryManager* fMemoryManager; }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMDeepNodeListImpl.hpp0000644000175000017500000000535311030714661022425 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMDeepNodeListImpl.hpp 671894 2008-06-26 13:29:21Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMDEEPNODELISTIMPL_HPP) #define XERCESC_INCLUDE_GUARD_DOMDEEPNODELISTIMPL_HPP // // This file is part of the internal implementation of the C++ XML DOM. // It should NOT be included or used directly by application programs. // // Applications should include the file for the entire // DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class // name is substituded for the *. // #include #include XERCES_CPP_NAMESPACE_BEGIN class DOMNode; class CDOM_EXPORT DOMDeepNodeListImpl: public DOMNodeList { protected: const DOMNode* fRootNode; const XMLCh* fTagName; bool fMatchAll; int fChanges; DOMNode* fCurrentNode; XMLSize_t fCurrentIndexPlus1; //DOM Level 2 const XMLCh* fNamespaceURI; bool fMatchAllURI; bool fMatchURIandTagname; //match both namespaceURI and tagName public: DOMDeepNodeListImpl(const DOMNode *rootNode, const XMLCh *tagName); DOMDeepNodeListImpl(const DOMNode *rootNode, //DOM Level 2 const XMLCh *namespaceURI, const XMLCh *localName); virtual ~DOMDeepNodeListImpl(); virtual XMLSize_t getLength() const; virtual DOMNode* item(XMLSize_t index) const; DOMNode* cacheItem(XMLSize_t index); protected: DOMNode* nextMatchingElementAfter(DOMNode *current); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DOMDeepNodeListImpl(const DOMDeepNodeListImpl &); DOMDeepNodeListImpl & operator = (const DOMDeepNodeListImpl &); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMParentNode.hpp0000644000175000017500000000725011041336370021320 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMParentNode.hpp 678709 2008-07-22 10:56:56Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMPARENTNODE_HPP) #define XERCESC_INCLUDE_GUARD_DOMPARENTNODE_HPP // // This file is part of the internal implementation of the C++ XML DOM. // It should NOT be included or used directly by application programs. // // Applications should include the file for the entire // DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class // name is substituded for the *. // /** * ParentNode provides the capability of having child * nodes. Not every node in the DOM can have children, so only nodes that can * should include this class and pay the price for it. *

    * While we have a direct reference to the first child, the last child is * stored as the previous sibling of the first child. First child nodes are * marked as being so, and getNextSibling hides this fact. * **/ #include #include "DOMNodeListImpl.hpp" XERCES_CPP_NAMESPACE_BEGIN class DOMChildNode; class DOMDocument; class DOMNode; class DOMNodeList; class CDOM_EXPORT DOMParentNode { public: DOMDocument *fOwnerDocument; // Document this node belongs to DOMNode *fFirstChild; DOMNodeListImpl fChildNodeList; // for GetChildNodes() public: DOMParentNode(DOMDocument *ownerDocument); DOMParentNode(const DOMParentNode &other); DOMDocument * getOwnerDocument() const; void setOwnerDocument(DOMDocument* doc); // Track changes to the node tree structure under this node. An optimization // for NodeLists. int changes() const; void changed(); DOMNode* appendChild(DOMNode *newChild); DOMNodeList* getChildNodes() const; DOMNode* getFirstChild() const; DOMNode* getLastChild() const; bool hasChildNodes() const; DOMNode* insertBefore(DOMNode *newChild, DOMNode *refChild); DOMNode* item(unsigned int index) const; DOMNode* removeChild(DOMNode *oldChild); DOMNode* replaceChild(DOMNode *newChild, DOMNode *oldChild); // Append certain types of nodes fast. Used to speed up XML to DOM // parsing. See the function implementation for detail. virtual DOMNode* appendChildFast(DOMNode *newChild); //Introduced in DOM Level 2 void normalize(); //Introduced in DOM Level 3 bool isEqualNode(const DOMNode* arg) const; // NON-DOM // unlike getOwnerDocument this never returns null, even for Document nodes DOMDocument * getDocument() const; void release(); public: void cloneChildren(const DOMNode *other); DOMNode * lastChild() const; void lastChild(DOMNode *); private: // unimplemented DOMParentNode& operator= (const DOMParentNode& other); }; #define GetDOMParentNodeMemoryManager GET_DIRECT_MM(fOwnerDocument) XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMElementImpl.hpp0000644000175000017500000001325611225152733021502 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMElementImpl.hpp 792236 2009-07-08 17:22:35Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMELEMENTIMPL_HPP) #define XERCESC_INCLUDE_GUARD_DOMELEMENTIMPL_HPP // // This file is part of the internal implementation of the C++ XML DOM. // It should NOT be included or used directly by application programs. // // Applications should include the file for the entire // DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class // name is substituded for the *. // #include #include #include #include "DOMChildNode.hpp" #include "DOMNodeImpl.hpp" #include "DOMParentNode.hpp" #include "DOMAttrMapImpl.hpp" XERCES_CPP_NAMESPACE_BEGIN class DOMTypeInfo; class DOMNodeList; class DOMAttrMapImpl; class DOMDocument; class CDOM_EXPORT DOMElementImpl: public DOMElement { public: DOMNodeImpl fNode; DOMParentNode fParent; DOMChildNode fChild; DOMAttrMapImpl *fAttributes; DOMAttrMapImpl *fDefaultAttributes; const XMLCh *fName; public: DOMElementImpl(DOMDocument *ownerDoc, const XMLCh *name); DOMElementImpl(const DOMElementImpl &other, bool deep=false); virtual ~DOMElementImpl(); public: // Declare functions from DOMNode. They all must be implemented by this class DOMNODE_FUNCTIONS; public: // Functions introduced on Element... virtual const XMLCh* getAttribute(const XMLCh *name) const; virtual DOMAttr* getAttributeNode(const XMLCh *name) const; virtual DOMNodeList* getElementsByTagName(const XMLCh *tagname) const; virtual const XMLCh* getTagName() const; virtual void removeAttribute(const XMLCh *name); virtual DOMAttr* removeAttributeNode(DOMAttr * oldAttr); virtual void setAttribute(const XMLCh *name, const XMLCh *value); virtual DOMAttr* setAttributeNode(DOMAttr *newAttr); virtual void setReadOnly(bool readOnly, bool deep); //Introduced in DOM Level 2 virtual const XMLCh* getAttributeNS(const XMLCh *namespaceURI, const XMLCh *localName) const; virtual void setAttributeNS(const XMLCh *namespaceURI, const XMLCh *qualifiedName, const XMLCh *value); virtual void removeAttributeNS(const XMLCh *namespaceURI, const XMLCh *localName); virtual DOMAttr* getAttributeNodeNS(const XMLCh *namespaceURI, const XMLCh *localName) const; virtual DOMAttr* setAttributeNodeNS(DOMAttr *newAttr); virtual DOMNodeList* getElementsByTagNameNS(const XMLCh *namespaceURI, const XMLCh *localName) const; virtual bool hasAttribute(const XMLCh *name) const; virtual bool hasAttributeNS(const XMLCh *namespaceURI, const XMLCh *localName) const; //Introduced in DOM level 3 virtual void setIdAttribute(const XMLCh* name, bool isId); virtual void setIdAttributeNS(const XMLCh* namespaceURI, const XMLCh* localName, bool isId); virtual void setIdAttributeNode(const DOMAttr *idAttr, bool isId); virtual const DOMTypeInfo * getSchemaTypeInfo() const; // for handling of default attribute virtual DOMAttr* setDefaultAttributeNode(DOMAttr *newAttr); virtual DOMAttr* setDefaultAttributeNodeNS(DOMAttr *newAttr); virtual DOMAttrMapImpl* getDefaultAttributes() const; // helper function for DOM Level 3 renameNode virtual DOMNode* rename(const XMLCh* namespaceURI, const XMLCh* name); // DOMElementTraversal virtual DOMElement * getFirstElementChild() const; virtual DOMElement * getLastElementChild() const; virtual DOMElement * getPreviousElementSibling() const; virtual DOMElement * getNextElementSibling() const; virtual XMLSize_t getChildElementCount() const; protected: // default attribute helper functions virtual void setupDefaultAttributes(); // helper function for DOMElementTraversal methods DOMElement* getFirstElementChild(const DOMNode* n) const; DOMElement* getLastElementChild(const DOMNode* n) const; DOMNode* getNextLogicalSibling(const DOMNode* n) const; DOMNode* getPreviousLogicalSibling(const DOMNode* n) const; private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DOMElementImpl & operator = (const DOMElementImpl &); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMDeepNodeListPool.hpp0000644000175000017500000001657311302525023022435 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMDeepNodeListPool.hpp 883368 2009-11-23 15:28:19Z amassari $ */ // // This file is part of the internal implementation of the C++ XML DOM. // It should NOT be included or used directly by application programs. // // Applications should include the file for the entire // DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class // name is substituded for the *. // #if !defined(XERCESC_INCLUDE_GUARD_DOMDEEPNODELISTPOOL_HPP) #define XERCESC_INCLUDE_GUARD_DOMDEEPNODELISTPOOL_HPP #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // // This should really be a nested class, but some of the compilers we // have to support cannot deal with that! // template struct DOMDeepNodeListPoolTableBucketElem : public XMemory { DOMDeepNodeListPoolTableBucketElem ( void* key1 , XMLCh* key2 , XMLCh* key3 , TVal* const value , DOMDeepNodeListPoolTableBucketElem* next , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager ) : fData(value) , fNext(next) , fKey1(key1) , fKey2(0) , fKey3(0) { if (key2) fKey2 = XMLString::replicate(key2, manager); if (key3) fKey3 = XMLString::replicate(key3, manager); } TVal* fData; DOMDeepNodeListPoolTableBucketElem* fNext; void* fKey1; XMLCh* fKey2; XMLCh* fKey3; ~DOMDeepNodeListPoolTableBucketElem() {}; }; template class DOMDeepNodeListPool { public: // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- DOMDeepNodeListPool ( const XMLSize_t modulus , const XMLSize_t initSize = 128 ); DOMDeepNodeListPool ( const XMLSize_t modulus , const bool adoptElems , const XMLSize_t initSize = 128 ); DOMDeepNodeListPool ( const XMLSize_t modulus , const bool adoptElems , const THasher& hasher , const XMLSize_t initSize = 128 ); ~DOMDeepNodeListPool(); // ----------------------------------------------------------------------- // Element management // ----------------------------------------------------------------------- bool isEmpty() const; bool containsKey(const void* const key1, const XMLCh* const key2, const XMLCh* const key3) const; void removeAll(); void cleanup(); // ----------------------------------------------------------------------- // Getters // ----------------------------------------------------------------------- TVal* getByKey(const void* const key1, const XMLCh* const key2, const XMLCh* const key3); const TVal* getByKey(const void* const key1, const XMLCh* const key2, const XMLCh* const key3) const; TVal* getById(const XMLSize_t elemId); const TVal* getById(const XMLSize_t elemId) const; // ----------------------------------------------------------------------- // Putters // ----------------------------------------------------------------------- XMLSize_t put(void* key1, XMLCh* key2, XMLCh* key3, TVal* const valueToAdopt); private: // ----------------------------------------------------------------------- // Private methods // ----------------------------------------------------------------------- DOMDeepNodeListPoolTableBucketElem* findBucketElem(const void* const key1, const XMLCh* const key2, const XMLCh* const key3, XMLSize_t& hashVal); const DOMDeepNodeListPoolTableBucketElem* findBucketElem(const void* const key1, const XMLCh* const key2, const XMLCh* const key3, XMLSize_t& hashVal) const; void initialize(const XMLSize_t modulus); // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DOMDeepNodeListPool(const DOMDeepNodeListPool &); DOMDeepNodeListPool & operator = (const DOMDeepNodeListPool &); // ----------------------------------------------------------------------- // Data members // // fAdoptedElems // Indicates whether the values added are adopted or just referenced. // If adopted, then they are deleted when they are removed from the // hash table. // // fBucketList // This is the array that contains the heads of all of the list // buckets, one for each possible hash value. // // fHashModulus // The modulus used for this hash table, to hash the keys. This is // also the number of elements in the bucket list. // // fHash // The hasher for the key1 data type. // // fIdPtrs // fIdPtrsCount // This is the array of pointers to the bucket elements in order of // their assigned ids. So taking id N and referencing this array // gives you the element with that id. The count field indicates // the current size of this list. When fIdCounter+1 reaches this // value the list must be expanded. // // fIdCounter // This is used to give out unique ids to added elements. It starts // at zero (which means empty), and is bumped up for each newly added // element. So the first element is 1, the next is 2, etc... This // means that this value is set to the top index of the fIdPtrs array. // ----------------------------------------------------------------------- bool fAdoptedElems; DOMDeepNodeListPoolTableBucketElem** fBucketList; XMLSize_t fHashModulus; TVal** fIdPtrs; XMLSize_t fIdPtrsCount; XMLSize_t fIdCounter; MemoryManager* fMemoryManager; THasher fHasher; }; XERCES_CPP_NAMESPACE_END #if !defined(XERCES_TMPLSINC) #include #endif #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMLocatorImpl.cpp0000644000175000017500000000350211037072255021501 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMLocatorImpl.cpp 676853 2008-07-15 09:58:05Z borisk $ */ #include "DOMLocatorImpl.hpp" XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // DOMLocatorImpl: Constructors and Destructor // --------------------------------------------------------------------------- DOMLocatorImpl::DOMLocatorImpl() : fLineNum(0) , fColumnNum(0) , fByteOffset(~(XMLFilePos(0))) , fUtf16Offset(~(XMLFilePos(0))) , fRelatedNode(0) , fURI(0) { } DOMLocatorImpl::DOMLocatorImpl(const XMLFileLoc lineNum, const XMLFileLoc columnNum, DOMNode* const errorNode, const XMLCh* const uri, const XMLFilePos byteOffset, const XMLFilePos utf16Offset) : fLineNum(lineNum) , fColumnNum(columnNum) , fByteOffset(byteOffset) , fUtf16Offset(utf16Offset) , fRelatedNode(errorNode) , fURI(uri) { } DOMLocatorImpl::~DOMLocatorImpl() { } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMNodeImpl.hpp0000644000175000017500000004222611030714661020773 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMNodeImpl.hpp 671894 2008-06-26 13:29:21Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMNODEIMPL_HPP) #define XERCESC_INCLUDE_GUARD_DOMNODEIMPL_HPP // // This file is part of the internal implementation of the C++ XML DOM. // It should NOT be included or used directly by application programs. // // Applications should include the file for the entire // DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class // name is substituded for the *. // /** * A DOMNodeImpl doesn't have any children, and can therefore only be directly * inherited by classes of nodes that never have any, such as Text nodes. For * other types, such as Element, classes must inherit from ParentNode. *

    * All nodes in a single document must originate * in that document. (Note that this is much tighter than "must be * same implementation") Nodes are all aware of their ownerDocument, * and attempts to mismatch will throw WRONG_DOCUMENT_ERR. *

    * However, to save memory not all nodes always have a direct reference * to their ownerDocument. When a node is owned by another node it relies * on its owner to store its ownerDocument. Parent nodes always store it * though, so there is never more than one level of indirection. * And when a node doesn't have an owner, ownerNode refers to its * ownerDocument. **/ #include #include XERCES_CPP_NAMESPACE_BEGIN class DOMNamedNodeMap; class DOMNodeList; class DOMNode; class DOMDocument; class DOMElement; class CDOM_EXPORT DOMNodeImpl { public: // data DOMNode *fOwnerNode; // typically the parent but not always! unsigned short flags; static const unsigned short READONLY; static const unsigned short SYNCDATA; static const unsigned short SYNCCHILDREN; static const unsigned short OWNED; static const unsigned short FIRSTCHILD; static const unsigned short SPECIFIED; static const unsigned short IGNORABLEWS; static const unsigned short SETVALUE; static const unsigned short ID_ATTR; static const unsigned short USERDATA; static const unsigned short LEAFNODETYPE; static const unsigned short CHILDNODE; static const unsigned short TOBERELEASED; public: DOMNodeImpl(DOMNode *ownerDocument); DOMNodeImpl(const DOMNodeImpl &other); ~DOMNodeImpl(); DOMNode * appendChild(DOMNode *newChild); DOMNamedNodeMap * getAttributes() const; DOMNodeList * getChildNodes() const; DOMNode * getFirstChild() const; DOMNode * getLastChild() const; const XMLCh * getLocalName() const; const XMLCh * getNamespaceURI() const; DOMNode * getNextSibling() const; const XMLCh * getNodeValue() const; DOMDocument * getOwnerDocument() const; DOMNode * getParentNode() const; const XMLCh * getPrefix() const; DOMNode * getPreviousSibling() const; bool hasChildNodes() const; DOMNode * insertBefore(DOMNode *newChild, DOMNode *refChild); void normalize(); DOMNode * removeChild(DOMNode *oldChild); DOMNode * replaceChild(DOMNode *newChild, DOMNode *oldChild); void setNodeValue(const XMLCh *value); void setPrefix(const XMLCh *fPrefix); void setReadOnly(bool readOnly, bool deep); bool isSupported(const XMLCh *feature, const XMLCh *version) const; bool hasAttributes() const; // Introduced in DOM Level 3 void* setUserData(const XMLCh* key, void* data, DOMUserDataHandler* handler); void* getUserData(const XMLCh* key) const; bool isSameNode(const DOMNode* other) const; bool isEqualNode(const DOMNode* arg) const; const XMLCh* getBaseURI() const ; short compareDocumentPosition(const DOMNode* other) const; const XMLCh* getTextContent() const ; const XMLCh* getTextContent(XMLCh* pzBuffer, XMLSize_t& rnBufferLength) const; void setTextContent(const XMLCh* textContent) ; const XMLCh* lookupPrefix(const XMLCh* namespaceURI) const ; bool isDefaultNamespace(const XMLCh* namespaceURI) const ; const XMLCh* lookupNamespaceURI(const XMLCh* prefix) const ; void* getFeature(const XMLCh* feature, const XMLCh* version) const; // Helper functions for DOM Level 3 void release(); void callUserDataHandlers(DOMUserDataHandler::DOMOperationType operation, const DOMNode* src, DOMNode* dst) const; //reverses the bit pattern given by compareDocumentPosition short reverseTreeOrderBitPattern(short pattern) const; const DOMNode* getTreeParentNode(const DOMNode* node) const; //Utility, not part of DOM Level 2 API static bool isKidOK(DOMNode *parent, DOMNode *child); static const XMLCh *mapPrefix(const XMLCh *prefix, const XMLCh *namespaceURI, short nType); static const XMLCh *getXmlnsString(); static const XMLCh *getXmlnsURIString(); static const XMLCh *getXmlString(); static const XMLCh *getXmlURIString(); public: // should really be protected - ALH DOMNode* getElementAncestor (const DOMNode* currentNode) const; const XMLCh* lookupPrefix(const XMLCh* const namespaceURI, DOMElement *el) const ; void setOwnerDocument(DOMDocument *doc); /* * Flags setters and getters */ inline bool isReadOnly() const { return (flags & READONLY) != 0; } inline void isReadOnly(bool value) { flags = (value ? flags | READONLY : flags & ~READONLY); } inline bool needsSyncData() const { return (flags & SYNCDATA) != 0; } inline void needsSyncData(bool value) { flags = (value ? flags | SYNCDATA : flags & ~SYNCDATA); } inline bool needsSyncChildren() const { return (flags & SYNCCHILDREN) != 0; } inline void needsSyncChildren(bool value) { flags = (value ? flags | SYNCCHILDREN : flags & ~SYNCCHILDREN); } // For Attributes, true if the attr node is attached to an element. // For all other node types, true if the node has a parent node. inline bool isOwned() const { return (flags & OWNED) != 0; } inline void isOwned(bool value) { flags = (value ? flags | OWNED : flags & ~OWNED); } inline bool isFirstChild() const { return (flags & FIRSTCHILD) != 0; } inline void isFirstChild(bool value) { flags = (value ? flags | FIRSTCHILD : flags & ~FIRSTCHILD); } inline bool isSpecified() const { return (flags & SPECIFIED) != 0; } inline void isSpecified(bool value) { flags = (value ? flags | SPECIFIED : flags & ~SPECIFIED); } inline bool ignorableWhitespace() const { return (flags & IGNORABLEWS) != 0; } inline void ignorableWhitespace(bool value) { flags = (value ? flags | IGNORABLEWS : flags & ~IGNORABLEWS); } inline bool setValue() const { return (flags & SETVALUE) != 0; } inline void setValue(bool value) { flags = (value ? flags | SETVALUE : flags & ~SETVALUE); } inline bool isIdAttr() const { return (flags & ID_ATTR) != 0; } inline void isIdAttr(bool value) { flags = (value ? flags | ID_ATTR : flags & ~ID_ATTR); } inline bool hasUserData() const { return (flags & USERDATA) != 0; } inline void hasUserData(bool value) { flags = (value ? flags | USERDATA : flags & ~USERDATA); } // // LeafNode is set true for node types that can not be ParentNodes (can't have children) // This knowledge is used to allow casting from any unknown node type to the // IDParentImpl or IDChildImpl parts of the node. // inline bool isLeafNode() const { return (flags & LEAFNODETYPE) != 0; } inline void setIsLeafNode(bool value) { flags = (value ? flags | LEAFNODETYPE : flags & ~LEAFNODETYPE); } // // ChildNode is set true for node types that can be children of other nodes, and // therefore include a DOMChildNode data member. Note that all of the leaf // node types (above flag) are also ChildNodes, but not all ChildNodes are // leaf nodes. inline bool isChildNode() const { return (flags & CHILDNODE) != 0; } inline void setIsChildNode(bool value) { flags = (value ? flags | CHILDNODE : flags & ~CHILDNODE); } // True if this node has to be released regardless if it has a owner or not // This is true if called from fParent->release() inline bool isToBeReleased() const { return (flags & TOBERELEASED) != 0; } inline void isToBeReleased(bool value) { flags = (value ? flags | TOBERELEASED : flags & ~TOBERELEASED); } }; // This macro lists all of the pure virtual functions declared in DOMNode that must // be implemented by all node types. Since there is no inheritance of implementation, // using this macro in the class declaration of the node types make it easier to // accurately get all of the functions declared. // #define DOMNODE_FUNCTIONS \ virtual DOMNode* appendChild(DOMNode *newChild) ;\ virtual DOMNode* cloneNode(bool deep) const ;\ virtual DOMNamedNodeMap* getAttributes() const ;\ virtual DOMNodeList* getChildNodes() const ;\ virtual DOMNode* getFirstChild() const ;\ virtual DOMNode* getLastChild() const ;\ virtual const XMLCh* getLocalName() const ;\ virtual const XMLCh* getNamespaceURI() const ;\ virtual DOMNode* getNextSibling() const ;\ virtual const XMLCh* getNodeName() const ;\ virtual NodeType getNodeType() const ;\ virtual const XMLCh* getNodeValue() const ;\ virtual DOMDocument* getOwnerDocument() const ;\ virtual const XMLCh* getPrefix() const ;\ virtual DOMNode* getParentNode() const ;\ virtual DOMNode* getPreviousSibling() const ;\ virtual bool hasChildNodes() const ;\ virtual DOMNode* insertBefore(DOMNode *newChild, DOMNode *refChild) ;\ virtual void normalize() ;\ virtual DOMNode* removeChild(DOMNode *oldChild) ;\ virtual DOMNode* replaceChild(DOMNode *newChild, DOMNode *oldChild) ;\ virtual void setNodeValue(const XMLCh *nodeValue) ;\ virtual bool isSupported(const XMLCh *feature, const XMLCh *version) const ;\ virtual bool hasAttributes() const ;\ virtual void setPrefix(const XMLCh * prefix) ;\ virtual void* setUserData(const XMLCh* key, void* data, DOMUserDataHandler* handler) ;\ virtual void* getUserData(const XMLCh* key) const ;\ virtual bool isSameNode(const DOMNode* other) const;\ virtual bool isEqualNode(const DOMNode* arg) const;\ virtual const XMLCh* getBaseURI() const ;\ virtual short compareDocumentPosition(const DOMNode* other) const ;\ virtual const XMLCh* getTextContent() const ;\ const XMLCh* getTextContent(XMLCh* pzBuffer, unsigned int& rnBufferLength) const;\ virtual void setTextContent(const XMLCh* textContent) ;\ virtual const XMLCh* lookupPrefix(const XMLCh* namespaceURI) const ;\ virtual bool isDefaultNamespace(const XMLCh* namespaceURI) const;\ virtual const XMLCh* lookupNamespaceURI(const XMLCh* prefix) const ;\ virtual void* getFeature(const XMLCh* feature, const XMLCh* version) const ;\ virtual void release() /* * Here are dummy stubs for most of the functions introduced by DOMNode. * Each subclass of DOMNode will have something like this that delegates each * function to the appropriate implementation. * Functions that must be supplied by every node class are omitted. * DOMNode* xxx::appendChild(DOMNode *newChild) {return fParent.appendChild (newChild); }; DOMNamedNodeMap* xxx::getAttributes() const {return fNode.getAttributes (); }; DOMNodeList* xxx::getChildNodes() const {return fParent.getChildNodes (); }; DOMNode* xxx::getFirstChild() const {return fParent.getFirstChild (); }; DOMNode* xxx::getLastChild() const {return fParent.getLastChild (); }; const XMLCh* xxx::getLocalName() const {return fNode.getLocalName (); }; const XMLCh* xxx::getNamespaceURI() const {return fNode.getNamespaceURI (); }; DOMNode* xxx::getNextSibling() const {return fChild.getNextSibling (); }; const XMLCh* xxx::getNodeValue() const {return fNode.getNodeValue (); }; DOMDocument* xxx::getOwnerDocument() const {return fNode.getOwnerDocument (); }; const XMLCh* xxx::getPrefix() const {return fNode.getPrefix (); }; DOMNode* xxx::getParentNode() const {return fChild.getParentNode (this); }; DOMNode* xxx::getPreviousSibling() const {return fChild.getPreviousSibling (this); }; bool xxx::hasChildNodes() const {return fParent.hasChildNodes (); }; DOMNode* xxx::insertBefore(DOMNode *newChild, DOMNode *refChild) {return fParent.insertBefore (newChild, refChild); }; void xxx::normalize() {fParent.normalize(); }; DOMNode* xxx::removeChild(DOMNode *oldChild) {return fParent.removeChild (oldChild); }; DOMNode* xxx::replaceChild(DOMNode *newChild, DOMNode *oldChild) {return fParent.replaceChild (newChild, oldChild); }; bool xxx::isSupported(const XMLCh *feature, const XMLCh *version) const {return fNode.isSupported (feature, version); }; void xxx::setPrefix(const XMLCh *prefix) {fNode.setPrefix(prefix); }; bool xxx::hasAttributes() const {return fNode.hasAttributes(); }; bool xxx::isSameNode(const DOMNode* other) const {return fNode.isSameNode(other); }; bool xxx::isEqualNode(const DOMNode* arg) const {return fNode.isEqualNode(arg); }; void* xxx::setUserData(const XMLCh* key, void* data, DOMUserDataHandler* handler) {return fNode.setUserData(key, data, handler); }; void* xxx::getUserData(const XMLCh* key) const {return fNode.getUserData(key); }; const XMLCh* xxx::getBaseURI() const {return fNode.getBaseURI(); }; short xxx::compareDocumentPosition(const DOMNode* other) const {return fNode.compareDocumentPosition(other); }; const XMLCh* xxx::getTextContent() const {return fNode.getTextContent(); }; void xxx::setTextContent(const XMLCh* textContent){fNode.setTextContent(textContent); }; const XMLCh* xxx::lookupPrefix(const XMLCh* namespaceURI) const {return fNode.lookupPrefix(namespaceURI); }; bool xxx::isDefaultNamespace(const XMLCh* namespaceURI) const {return fNode.isDefaultNamespace(namespaceURI); }; const XMLCh* xxx::lookupNamespaceURI(const XMLCh* prefix) const {return fNode.lookupNamespaceURI(prefix); }; void* xxx::getFeature(const XMLCh* feature, const XMLCh* version) const {return fNode.getFeature(feature, version); }; */ XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMElementNSImpl.cpp0000644000175000017500000002053211041336370021726 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMElementNSImpl.cpp 678709 2008-07-22 10:56:56Z borisk $ */ #include #include "DOMElementNSImpl.hpp" #include "DOMDocumentImpl.hpp" #include "DOMTypeInfoImpl.hpp" #include "DOMCasts.hpp" #include #include #include XERCES_CPP_NAMESPACE_BEGIN DOMElementNSImpl::DOMElementNSImpl(DOMDocument *ownerDoc, const XMLCh *nam) : DOMElementImpl(ownerDoc, nam) { this->fNamespaceURI=0; //DOM Level 2 this->fLocalName=0; //DOM Level 2 this->fPrefix=0; this->fSchemaType = 0; } //Introduced in DOM Level 2 DOMElementNSImpl::DOMElementNSImpl(DOMDocument *ownerDoc, const XMLCh *namespaceURI, const XMLCh *qualifiedName) : DOMElementImpl(ownerDoc, qualifiedName) { setName(namespaceURI, qualifiedName); this->fSchemaType = 0; } DOMElementNSImpl::DOMElementNSImpl(DOMDocument *ownerDoc, const XMLCh *namespaceURI, const XMLCh *prefix, const XMLCh *localName, const XMLCh *qualifiedName) : DOMElementImpl(ownerDoc, qualifiedName) { this->fSchemaType = 0; DOMDocumentImpl* docImpl = (DOMDocumentImpl*)fParent.fOwnerDocument; if (prefix == 0 || *prefix == 0) { fPrefix = 0; fLocalName = fName; } else { fPrefix = docImpl->getPooledString(prefix); fLocalName = docImpl->getPooledString(localName); } // DOM Level 3: namespace URI is never empty string. // const XMLCh * URI = DOMNodeImpl::mapPrefix ( fPrefix, (!namespaceURI || !*namespaceURI) ? 0 : namespaceURI, DOMNode::ELEMENT_NODE); fNamespaceURI = (URI == 0) ? 0 : docImpl->getPooledString(URI); } DOMElementNSImpl::DOMElementNSImpl(const DOMElementNSImpl &other, bool deep) : DOMElementImpl(other, deep) { this->fNamespaceURI = other.fNamespaceURI; //DOM Level 2 this->fLocalName = other.fLocalName; //DOM Level 2 this->fPrefix = other.fPrefix; this->fSchemaType = other.fSchemaType; } DOMNode * DOMElementNSImpl::cloneNode(bool deep) const { DOMNode* newNode = new (fParent.fOwnerDocument, DOMMemoryManager::ELEMENT_NS_OBJECT) DOMElementNSImpl(*this, deep); fNode.callUserDataHandlers(DOMUserDataHandler::NODE_CLONED, this, newNode); return newNode; } const XMLCh * DOMElementNSImpl::getNamespaceURI() const { return fNamespaceURI; } const XMLCh * DOMElementNSImpl::getPrefix() const { return fPrefix; } const XMLCh * DOMElementNSImpl::getLocalName() const { return fLocalName; } void DOMElementNSImpl::setPrefix(const XMLCh *prefix) { if (fNode.isReadOnly()) throw DOMException(DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMNodeMemoryManager); if (fNamespaceURI == 0 || fNamespaceURI[0] == chNull) throw DOMException(DOMException::NAMESPACE_ERR, 0, GetDOMNodeMemoryManager); if (prefix == 0 || *prefix == 0) { fPrefix = 0; fName = fLocalName; return; } DOMDocumentImpl* doc = (DOMDocumentImpl*) fParent.fOwnerDocument; if(!doc->isXMLName(prefix)) throw DOMException(DOMException::INVALID_CHARACTER_ERR,0, GetDOMNodeMemoryManager); const XMLCh * xml = DOMNodeImpl::getXmlString(); const XMLCh * xmlURI = DOMNodeImpl::getXmlURIString(); if (XMLString::equals(prefix, xml) && !XMLString::equals(fNamespaceURI, xmlURI)) throw DOMException(DOMException::NAMESPACE_ERR, 0, GetDOMNodeMemoryManager); if (XMLString::indexOf(prefix, chColon) != -1) { throw DOMException(DOMException::NAMESPACE_ERR, 0, GetDOMNodeMemoryManager); } this-> fPrefix = doc->getPooledString(prefix); XMLSize_t prefixLen = XMLString::stringLen(prefix); XMLSize_t newQualifiedNameLen = prefixLen+1+XMLString::stringLen(fLocalName); XMLCh *newName; XMLCh temp[256]; if (newQualifiedNameLen >= 255) newName = (XMLCh*) doc->getMemoryManager()->allocate ( newQualifiedNameLen * sizeof(XMLCh) );//new XMLCh[newQualifiedNameLen]; else newName = temp; // newName = prefix + chColon + fLocalName; XMLString::copyString(newName, prefix); newName[prefixLen] = chColon; XMLString::copyString(&newName[prefixLen+1], fLocalName); fName = doc->getPooledString(newName); if (newQualifiedNameLen >= 255) doc->getMemoryManager()->deallocate(newName);//delete[] newName; } void DOMElementNSImpl::release() { if (fNode.isOwned() && !fNode.isToBeReleased()) throw DOMException(DOMException::INVALID_ACCESS_ERR,0, GetDOMNodeMemoryManager); DOMDocumentImpl* doc = (DOMDocumentImpl*) fParent.fOwnerDocument; if (doc) { fNode.callUserDataHandlers(DOMUserDataHandler::NODE_DELETED, 0, 0); fParent.release(); doc->release(this, DOMMemoryManager::ELEMENT_NS_OBJECT); } else { // shouldn't reach here throw DOMException(DOMException::INVALID_ACCESS_ERR,0, GetDOMNodeMemoryManager); } } DOMNode* DOMElementNSImpl::rename(const XMLCh* namespaceURI, const XMLCh* name) { setName(namespaceURI, name); fAttributes->reconcileDefaultAttributes(getDefaultAttributes()); // and fire user data NODE_RENAMED event castToNodeImpl(this)->callUserDataHandlers(DOMUserDataHandler::NODE_RENAMED, this, this); return this; } void DOMElementNSImpl::setName(const XMLCh *namespaceURI, const XMLCh *qualifiedName) { DOMDocumentImpl* ownerDoc = (DOMDocumentImpl *) fParent.fOwnerDocument; this->fName = ownerDoc->getPooledString(qualifiedName); int index = DOMDocumentImpl::indexofQualifiedName(qualifiedName); if (index < 0) throw DOMException(DOMException::NAMESPACE_ERR, 0, GetDOMNodeMemoryManager); if (index == 0) { //qualifiedName contains no ':' // fPrefix = 0; fLocalName = fName; } else { //0 < index < this->name.length()-1 // fPrefix = ownerDoc->getPooledNString(qualifiedName, index); fLocalName = ownerDoc->getPooledString(fName+index+1); // Before we carry on, we should check if the prefix or localName are valid XMLName if (!ownerDoc->isXMLName(fPrefix) || !ownerDoc->isXMLName(fLocalName)) throw DOMException(DOMException::NAMESPACE_ERR, 0, GetDOMNodeMemoryManager); } // DOM Level 3: namespace URI is never empty string. // const XMLCh * URI = DOMNodeImpl::mapPrefix ( fPrefix, (!namespaceURI || !*namespaceURI) ? 0 : namespaceURI, DOMNode::ELEMENT_NODE); fNamespaceURI = (URI == 0) ? 0 : ownerDoc->getPooledString(URI); } const DOMTypeInfo *DOMElementNSImpl::getSchemaTypeInfo() const { if(!fSchemaType) return &DOMTypeInfoImpl::g_DtdValidatedElement; return fSchemaType; } void DOMElementNSImpl::setSchemaTypeInfo(const DOMTypeInfoImpl* typeInfo) { fSchemaType = typeInfo; } bool DOMElementNSImpl::isSupported(const XMLCh *feature, const XMLCh *version) const { // check for '+DOMPSVITypeInfo' if(feature && *feature=='+' && XMLString::equals(feature+1, XMLUni::fgXercescInterfacePSVITypeInfo)) return true; return fNode.isSupported (feature, version); } void* DOMElementNSImpl::getFeature(const XMLCh* feature, const XMLCh* version) const { if(XMLString::equals(feature, XMLUni::fgXercescInterfacePSVITypeInfo)) return (DOMPSVITypeInfo*)fSchemaType; return DOMElementImpl::getFeature(feature, version); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMImplementationImpl.cpp0000644000175000017500000002304111030714661023060 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMImplementationImpl.cpp 671894 2008-06-26 13:29:21Z borisk $ */ #include "DOMImplementationImpl.hpp" #include "DOMDocumentImpl.hpp" #include "DOMDocumentTypeImpl.hpp" #include "DOMLSSerializerImpl.hpp" #include "DOMLSInputImpl.hpp" #include "DOMLSOutputImpl.hpp" #include "DOMImplementationListImpl.hpp" #include #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // ------------------------------------------------------------ // Static constants // ------------------------------------------------------------ static const XMLCh g1_0[] = // Points to "1.0" {chDigit_1, chPeriod, chDigit_0, chNull}; static const XMLCh g2_0[] = // Points to "2.0" {chDigit_2, chPeriod, chDigit_0, chNull}; static const XMLCh g3_0[] = // Points to "3.0" {chDigit_3, chPeriod, chDigit_0, chNull}; static const XMLCh gTrav[] = // Points to "Traversal" {chLatin_T, chLatin_r, chLatin_a, chLatin_v, chLatin_e, chLatin_r, chLatin_s, chLatin_a, chLatin_l, chNull}; static const XMLCh gCore[] = // Points to "Core" {chLatin_C, chLatin_o, chLatin_r, chLatin_e, chNull}; static const XMLCh gRange[] = // Points to "Range" {chLatin_R, chLatin_a, chLatin_n, chLatin_g, chLatin_e, chNull}; static const XMLCh gLS[] = // Points to "LS" {chLatin_L, chLatin_S, chNull}; static const XMLCh gXPath[] = // Points to "XPath" {chLatin_X, chLatin_P, chLatin_a, chLatin_t, chLatin_h, chNull}; static XMLMsgLoader *sMsgLoader = 0; static DOMImplementationImpl *gDomimp = 0; void XMLInitializer::initializeDOMImplementationImpl() { sMsgLoader = XMLPlatformUtils::loadMsgSet(XMLUni::fgXMLDOMMsgDomain); if (!sMsgLoader) XMLPlatformUtils::panic(PanicHandler::Panic_CantLoadMsgDomain); gDomimp = new DOMImplementationImpl; } void XMLInitializer::terminateDOMImplementationImpl() { delete gDomimp; gDomimp = 0; delete sMsgLoader; sMsgLoader = 0; } // // XMLMsgLoader* DOMImplementationImpl::getMsgLoader4DOM() { return sMsgLoader; } DOMImplementationImpl *DOMImplementationImpl::getDOMImplementationImpl() { return gDomimp; } // ------------------------------------------------------------ // DOMImplementation Virtual interface // ------------------------------------------------------------ bool DOMImplementationImpl::hasFeature(const XMLCh * feature, const XMLCh * version) const { if (!feature) return false; // ignore the + modifier if(*feature==chPlus) feature++; bool anyVersion = (version == 0 || !*version); bool version1_0 = XMLString::equals(version, g1_0); bool version2_0 = XMLString::equals(version, g2_0); bool version3_0 = XMLString::equals(version, g3_0); // Currently, we support only XML Level 1 version 1.0 if (XMLString::compareIStringASCII(feature, XMLUni::fgXMLString) == 0 && (anyVersion || version1_0 || version2_0)) return true; if (XMLString::compareIStringASCII(feature, gCore) == 0 && (anyVersion || version1_0 || version2_0 || version3_0)) return true; if (XMLString::compareIStringASCII(feature, gTrav) == 0 && (anyVersion || version2_0)) return true; if (XMLString::compareIStringASCII(feature, gRange) == 0 && (anyVersion || version2_0)) return true; if (XMLString::compareIStringASCII(feature, gLS) == 0 && (anyVersion || version3_0)) return true; if (XMLString::compareIStringASCII(feature, gXPath) == 0 && (anyVersion || version3_0)) return true; return false; } //Introduced in DOM Level 2 DOMDocumentType *DOMImplementationImpl::createDocumentType(const XMLCh *qualifiedName, const XMLCh * publicId, const XMLCh *systemId) { // assume XML 1.0 since we do not know its version yet. if(!XMLChar1_0::isValidName(qualifiedName)) throw DOMException(DOMException::INVALID_CHARACTER_ERR, 0); //to do: do we need to create with user's memorymanager??? DOMDocumentTypeImpl* docType = new DOMDocumentTypeImpl(0, qualifiedName, publicId, systemId, true); return docType; } DOMDocument *DOMImplementationImpl::createDocument(const XMLCh *namespaceURI, const XMLCh *qualifiedName, DOMDocumentType *doctype, MemoryManager* const manager) { return new (manager) DOMDocumentImpl(namespaceURI, qualifiedName, doctype, this, manager); } //Introduced in DOM Level 3 void* DOMImplementationImpl::getFeature(const XMLCh*, const XMLCh*) const { return 0; } // Non-standard extension DOMDocument *DOMImplementationImpl::createDocument(MemoryManager* const manager) { return new (manager) DOMDocumentImpl(this, manager); } // // DOMImplementation::getImplementation. DOMImplementation is supposed to // be a pure interface class. This one static // function is the hook that lets things get started. DOMImplementation *DOMImplementation::getImplementation() { return (DOMImplementation*) DOMImplementationImpl::getDOMImplementationImpl(); } bool DOMImplementation::loadDOMExceptionMsg ( const short msgToLoad , XMLCh* const toFill , const XMLSize_t maxChars ) { // Figure out which exception range this code is and load the corresponding // message. // if (msgToLoad <= 50) { // DOMException return sMsgLoader->loadMsg(XMLDOMMsg::DOMEXCEPTION_ERRX+msgToLoad, toFill, maxChars); } else if (msgToLoad <= 80) { // DOMXPathException return sMsgLoader->loadMsg(XMLDOMMsg::DOMXPATHEXCEPTION_ERRX+msgToLoad-DOMXPathException::INVALID_EXPRESSION_ERR+1, toFill, maxChars); } else if (msgToLoad <= 110) { // DOMXLSException return sMsgLoader->loadMsg(XMLDOMMsg::DOMLSEXCEPTION_ERRX+msgToLoad-DOMLSException::PARSE_ERR+1, toFill, maxChars); } else { // DOMRangeException return sMsgLoader->loadMsg(XMLDOMMsg::DOMRANGEEXCEPTION_ERRX+msgToLoad-DOMRangeException::BAD_BOUNDARYPOINTS_ERR+1, toFill, maxChars); } } // ------------------------------------------------------------ // DOMImplementationLS Virtual interface // ------------------------------------------------------------ //Introduced in DOM Level 3 DOMLSParser* DOMImplementationImpl::createLSParser( const DOMImplementationLSMode mode, const XMLCh* const /*schemaType*/, MemoryManager* const manager, XMLGrammarPool* const gramPool) { if (mode == DOMImplementationLS::MODE_ASYNCHRONOUS) throw DOMException(DOMException::NOT_SUPPORTED_ERR, 0, manager); // TODO: schemaType return new (manager) DOMLSParserImpl(0, manager, gramPool); } DOMLSSerializer* DOMImplementationImpl::createLSSerializer(MemoryManager* const manager) { return new (manager) DOMLSSerializerImpl(manager); } DOMLSInput* DOMImplementationImpl::createLSInput(MemoryManager* const manager) { return new (manager) DOMLSInputImpl(manager); } DOMLSOutput* DOMImplementationImpl::createLSOutput(MemoryManager* const manager) { return new (manager) DOMLSOutputImpl(manager); } // ------------------------------------------------------------ // DOMImplementationSource Virtual interface // ------------------------------------------------------------ DOMImplementation* DOMImplementationImpl::getDOMImplementation(const XMLCh* features) const { DOMImplementation* impl = DOMImplementation::getImplementation(); XMLStringTokenizer tokenizer(features, XMLPlatformUtils::fgMemoryManager); const XMLCh* feature = 0; while (feature || tokenizer.hasMoreTokens()) { if (!feature) feature = tokenizer.nextToken(); const XMLCh* version = 0; const XMLCh* token = tokenizer.nextToken(); if (token && XMLString::isDigit(token[0])) version = token; if (!impl->hasFeature(feature, version)) return 0; if (!version) feature = token; } return impl; } DOMImplementationList* DOMImplementationImpl::getDOMImplementationList(const XMLCh* features) const { DOMImplementationListImpl* list = new DOMImplementationListImpl; DOMImplementation* myImpl=getDOMImplementation(features); if(myImpl) list->add(myImpl); return list; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMImplementationImpl.hpp0000644000175000017500000001057011030714661023070 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMImplementationImpl.hpp 671894 2008-06-26 13:29:21Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONIMPL_HPP) #define XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONIMPL_HPP // // This file is part of the internal implementation of the C++ XML DOM. // It should NOT be included or used directly by application programs. // // Applications should include the file for the entire // DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class // name is substituded for the *. // #include #include #include XERCES_CPP_NAMESPACE_BEGIN class XMLMsgLoader; class DOMImplementationImpl: public XMemory, public DOMImplementation, public DOMImplementationSource { private: DOMImplementationImpl(const DOMImplementationImpl &); DOMImplementationImpl & operator = (const DOMImplementationImpl &); friend class XMLInitializer; protected: DOMImplementationImpl() {}; public: virtual ~DOMImplementationImpl() {}; static DOMImplementationImpl* getDOMImplementationImpl(); static XMLMsgLoader* getMsgLoader4DOM(); // ------------------------------------------------------------ // DOMImplementation Virtual interface // ------------------------------------------------------------ virtual bool hasFeature(const XMLCh * feature, const XMLCh * version) const; // Introduced in DOM Level 2 virtual DOMDocumentType* createDocumentType(const XMLCh *qualifiedName, const XMLCh * publicId, const XMLCh *systemId); virtual DOMDocument* createDocument(const XMLCh *namespaceURI, const XMLCh *qualifiedName, DOMDocumentType *doctype, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); // DOM Level 3 virtual void* getFeature(const XMLCh* feature, const XMLCh* version) const; // Non-standard extension virtual DOMDocument* createDocument(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); // ------------------------------------------------------------ // DOMImplementationLS Virtual interface // ------------------------------------------------------------ // Introduced in DOM Level 3 virtual DOMLSParser* createLSParser(const DOMImplementationLSMode mode, const XMLCh* const schemaType, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager, XMLGrammarPool* const gramPool = 0); virtual DOMLSSerializer* createLSSerializer(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); virtual DOMLSInput* createLSInput(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); virtual DOMLSOutput* createLSOutput(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); // ------------------------------------------------------------ // DOMImplementationSource Virtual interface // ------------------------------------------------------------ virtual DOMImplementation* getDOMImplementation(const XMLCh* features) const; virtual DOMImplementationList* getDOMImplementationList(const XMLCh* features) const; }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMNamedNodeMapImpl.cpp0000644000175000017500000002740311041060645022367 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMNamedNodeMapImpl.cpp 678381 2008-07-21 10:15:01Z borisk $ */ #include #include #include #include #include "DOMNodeVector.hpp" #include "DOMNamedNodeMapImpl.hpp" #include "DOMCasts.hpp" #include "DOMDocumentImpl.hpp" #include "DOMNodeImpl.hpp" XERCES_CPP_NAMESPACE_BEGIN DOMNamedNodeMapImpl::DOMNamedNodeMapImpl(DOMNode *ownerNod) { fOwnerNode=ownerNod; memset(fBuckets,0,MAP_SIZE*sizeof(DOMNodeVector*)); } DOMNamedNodeMapImpl::~DOMNamedNodeMapImpl() { } bool DOMNamedNodeMapImpl::readOnly() { return castToNodeImpl(fOwnerNode)->isReadOnly(); } DOMNamedNodeMapImpl *DOMNamedNodeMapImpl::cloneMap(DOMNode *ownerNod) { DOMDocumentImpl *doc = (DOMDocumentImpl *)(castToNodeImpl(ownerNod)->getOwnerDocument()); DOMNamedNodeMapImpl *newmap = new (doc) DOMNamedNodeMapImpl(ownerNod); for(XMLSize_t index=0;indexsize(); newmap->fBuckets[index] = new (doc) DOMNodeVector(doc, size); for (XMLSize_t i = 0; i < size; ++i) { DOMNode *s = fBuckets[index]->elementAt(i); DOMNode *n = s->cloneNode(true); castToNodeImpl(n)->isSpecified(castToNodeImpl(s)->isSpecified()); castToNodeImpl(n)->fOwnerNode = ownerNod; castToNodeImpl(n)->isOwned(true); newmap->fBuckets[index]->addElement(n); } } return newmap; } XMLSize_t DOMNamedNodeMapImpl::getLength() const { XMLSize_t count=0; for(XMLSize_t index=0;indexsize()); return count; } DOMNode * DOMNamedNodeMapImpl::item(XMLSize_t index) const { XMLSize_t count=0; for(XMLSize_t i=0;isize(); if(index>=count && index<(count+thisBucket)) return fBuckets[i]->elementAt(index-count); count+=thisBucket; } return NULL; } DOMNode * DOMNamedNodeMapImpl::getNamedItem(const XMLCh *name) const { XMLSize_t hash=XMLString::hash(name,MAP_SIZE); if(fBuckets[hash]==0) return 0; XMLSize_t i = 0; XMLSize_t size = fBuckets[hash]->size(); for (i = 0; i < size; ++i) { DOMNode *n=fBuckets[hash]->elementAt(i); if(XMLString::equals(name,n->getNodeName())) return n; } return 0; } // // removeNamedItem() - Remove the named item, and return it. // The caller can release the // returned item if it's not used // we can't do it here because the caller would // never see the returned node. // DOMNode * DOMNamedNodeMapImpl::removeNamedItem(const XMLCh *name) { if (this->readOnly()) throw DOMException( DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMNamedNodeMapMemoryManager); XMLSize_t hash=XMLString::hash(name,MAP_SIZE); if(fBuckets[hash]==0) throw DOMException(DOMException::NOT_FOUND_ERR, 0, GetDOMNamedNodeMapMemoryManager); DOMDocument *doc = fOwnerNode->getOwnerDocument(); XMLSize_t i = 0; XMLSize_t size = fBuckets[hash]->size(); for (i = 0; i < size; ++i) { DOMNode *n=fBuckets[hash]->elementAt(i); if(XMLString::equals(name,n->getNodeName())) { fBuckets[hash]->removeElementAt(i); castToNodeImpl(n)->fOwnerNode = doc; castToNodeImpl(n)->isOwned(false); return n; } } throw DOMException(DOMException::NOT_FOUND_ERR, 0, GetDOMNamedNodeMapMemoryManager); return 0; } // // setNamedItem() Put the item into the NamedNodeList by name. // If an item with the same name already was // in the list, replace it. Return the old // item, if there was one. // Caller is responsible for arranging for // deletion of the old item if its ref count is // zero. // DOMNode * DOMNamedNodeMapImpl::setNamedItem(DOMNode * arg) { DOMDocument *doc = fOwnerNode->getOwnerDocument(); DOMNodeImpl *argImpl = castToNodeImpl(arg); if(argImpl->getOwnerDocument() != doc) throw DOMException(DOMException::WRONG_DOCUMENT_ERR,0, GetDOMNamedNodeMapMemoryManager); if (this->readOnly()) throw DOMException(DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMNamedNodeMapMemoryManager); if ((arg->getNodeType() == DOMNode::ATTRIBUTE_NODE) && argImpl->isOwned() && (argImpl->fOwnerNode != fOwnerNode)) throw DOMException(DOMException::INUSE_ATTRIBUTE_ERR,0, GetDOMNamedNodeMapMemoryManager); argImpl->fOwnerNode = fOwnerNode; argImpl->isOwned(true); const XMLCh* name=arg->getNodeName(); XMLSize_t hash=XMLString::hash(name,MAP_SIZE); if(fBuckets[hash]==0) fBuckets[hash] = new (doc) DOMNodeVector(doc, 3); XMLSize_t i = 0; XMLSize_t size = fBuckets[hash]->size(); for (i = 0; i < size; ++i) { DOMNode *n=fBuckets[hash]->elementAt(i); if(XMLString::equals(name,n->getNodeName())) { fBuckets[hash]->setElementAt(arg,i); castToNodeImpl(n)->fOwnerNode = doc; castToNodeImpl(n)->isOwned(false); return n; } } fBuckets[hash]->addElement(arg); return 0; } void DOMNamedNodeMapImpl::setReadOnly(bool readOnl, bool deep) { // this->fReadOnly=readOnl; if(deep) { for (XMLSize_t index = 0; index < MAP_SIZE; index++) { if(fBuckets[index]==0) continue; XMLSize_t sz = fBuckets[index]->size(); for (XMLSize_t i=0; ielementAt(i))->setReadOnly(readOnl, deep); } } } //Introduced in DOM Level 2 DOMNode *DOMNamedNodeMapImpl::getNamedItemNS(const XMLCh *namespaceURI, const XMLCh *localName) const { // the map is indexed using the full name of nodes; to search given a namespace and a local name // we have to do a linear search for (XMLSize_t index = 0; index < MAP_SIZE; index++) { if(fBuckets[index]==0) continue; XMLSize_t i = 0; XMLSize_t size = fBuckets[index]->size(); for (i = 0; i < size; ++i) { DOMNode *n=fBuckets[index]->elementAt(i); const XMLCh * nNamespaceURI = n->getNamespaceURI(); const XMLCh * nLocalName = n->getLocalName(); if (!XMLString::equals(nNamespaceURI, namespaceURI)) //URI not match continue; else { if (XMLString::equals(localName, nLocalName) || (nLocalName == 0 && XMLString::equals(localName, n->getNodeName()))) return n; } } } return 0; } // // setNamedItemNS() Put the item into the NamedNodeList by name. // If an item with the same name already was // in the list, replace it. Return the old // item, if there was one. // Caller is responsible for arranging for // deletion of the old item if its ref count is // zero. // DOMNode * DOMNamedNodeMapImpl::setNamedItemNS(DOMNode *arg) { DOMDocument *doc = fOwnerNode->getOwnerDocument(); DOMNodeImpl *argImpl = castToNodeImpl(arg); if (argImpl->getOwnerDocument() != doc) throw DOMException(DOMException::WRONG_DOCUMENT_ERR,0, GetDOMNamedNodeMapMemoryManager); if (this->readOnly()) throw DOMException(DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMNamedNodeMapMemoryManager); if (argImpl->isOwned()) throw DOMException(DOMException::INUSE_ATTRIBUTE_ERR,0, GetDOMNamedNodeMapMemoryManager); argImpl->fOwnerNode = fOwnerNode; argImpl->isOwned(true); const XMLCh* namespaceURI=arg->getNamespaceURI(); const XMLCh* localName=arg->getLocalName(); // the map is indexed using the full name of nodes; to search given a namespace and a local name // we have to do a linear search for (XMLSize_t index = 0; index < MAP_SIZE; index++) { if(fBuckets[index]==0) continue; XMLSize_t i = 0; XMLSize_t size = fBuckets[index]->size(); for (i = 0; i < size; ++i) { DOMNode *n=fBuckets[index]->elementAt(i); const XMLCh * nNamespaceURI = n->getNamespaceURI(); const XMLCh * nLocalName = n->getLocalName(); if (!XMLString::equals(nNamespaceURI, namespaceURI)) //URI not match continue; else { if (XMLString::equals(localName, nLocalName) || (nLocalName == 0 && XMLString::equals(localName, n->getNodeName()))) { fBuckets[index]->setElementAt(arg,i); castToNodeImpl(n)->fOwnerNode = doc; castToNodeImpl(n)->isOwned(false); return n; } } } } // if not found, add it using the full name as key return setNamedItem(arg); } // removeNamedItemNS() - Remove the named item, and return it. // The caller can release the // returned item if it's not used // we can't do it here because the caller would // never see the returned node. DOMNode *DOMNamedNodeMapImpl::removeNamedItemNS(const XMLCh *namespaceURI, const XMLCh *localName) { if (this->readOnly()) throw DOMException( DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMNamedNodeMapMemoryManager); // the map is indexed using the full name of nodes; to search given a namespace and a local name // we have to do a linear search for (XMLSize_t index = 0; index < MAP_SIZE; index++) { if(fBuckets[index]==0) continue; DOMDocument *doc = fOwnerNode->getOwnerDocument(); XMLSize_t i = 0; XMLSize_t size = fBuckets[index]->size(); for (i = 0; i < size; ++i) { DOMNode *n=fBuckets[index]->elementAt(i); const XMLCh * nNamespaceURI = n->getNamespaceURI(); const XMLCh * nLocalName = n->getLocalName(); if (!XMLString::equals(nNamespaceURI, namespaceURI)) //URI not match continue; else { if (XMLString::equals(localName, nLocalName) || (nLocalName == 0 && XMLString::equals(localName, n->getNodeName()))) { fBuckets[index]->removeElementAt(i); castToNodeImpl(n)->fOwnerNode = doc; castToNodeImpl(n)->isOwned(false); return n; } } } } throw DOMException(DOMException::NOT_FOUND_ERR, 0, GetDOMNamedNodeMapMemoryManager); return 0; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMCommentImpl.cpp0000644000175000017500000002343511041060645021502 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMCommentImpl.cpp 678381 2008-07-21 10:15:01Z borisk $ */ #include "DOMCommentImpl.hpp" #include "DOMCharacterDataImpl.hpp" #include "DOMStringPool.hpp" #include "DOMCasts.hpp" #include "DOMDocumentImpl.hpp" #include "DOMRangeImpl.hpp" #include #include #include XERCES_CPP_NAMESPACE_BEGIN DOMCommentImpl::DOMCommentImpl(DOMDocument *ownerDoc, const XMLCh *dat) : fNode(ownerDoc), fCharacterData(ownerDoc, dat) { fNode.setIsLeafNode(true); } DOMCommentImpl::DOMCommentImpl(const DOMCommentImpl &other, bool) : fNode(other.fNode), fChild(other.fChild), fCharacterData(other.fCharacterData) { fNode.setIsLeafNode(true); } DOMCommentImpl::~DOMCommentImpl() { } DOMNode * DOMCommentImpl::cloneNode(bool deep) const { DOMNode* newNode = new (getOwnerDocument(), DOMMemoryManager::COMMENT_OBJECT) DOMCommentImpl(*this, deep); fNode.callUserDataHandlers(DOMUserDataHandler::NODE_CLONED, this, newNode); return newNode; } const XMLCh * DOMCommentImpl::getNodeName() const { static const XMLCh gComment[] = {chPound, chLatin_c, chLatin_o, chLatin_m, chLatin_m, chLatin_e,chLatin_n, chLatin_t, 0}; return gComment; } DOMNode::NodeType DOMCommentImpl::getNodeType() const { return DOMNode::COMMENT_NODE; } void DOMCommentImpl::release() { if (fNode.isOwned() && !fNode.isToBeReleased()) throw DOMException(DOMException::INVALID_ACCESS_ERR,0, GetDOMNodeMemoryManager); DOMDocumentImpl* doc = (DOMDocumentImpl*) getOwnerDocument(); if (doc) { fNode.callUserDataHandlers(DOMUserDataHandler::NODE_DELETED, 0, 0); fCharacterData.releaseBuffer(); doc->release(this, DOMMemoryManager::COMMENT_OBJECT); } else { // shouldn't reach here throw DOMException(DOMException::INVALID_ACCESS_ERR,0, GetDOMNodeMemoryManager); } } // Non standard extension for the range to work DOMComment *DOMCommentImpl::splitText(XMLSize_t offset) { if (fNode.isReadOnly()) { throw DOMException( DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMNodeMemoryManager); } XMLSize_t len = fCharacterData.fDataBuf->getLen(); if (offset > len) throw DOMException(DOMException::INDEX_SIZE_ERR, 0, GetDOMNodeMemoryManager); DOMDocumentImpl *doc = (DOMDocumentImpl *)getOwnerDocument(); DOMComment *newText = doc->createComment(this->substringData(offset, len - offset)); DOMNode *parent = getParentNode(); if (parent != 0) parent->insertBefore(newText, getNextSibling()); fCharacterData.fDataBuf->chop(offset); if (doc != 0) { Ranges* ranges = doc->getRanges(); if (ranges != 0) { XMLSize_t sz = ranges->size(); if (sz != 0) { for (XMLSize_t i =0; ielementAt(i)->updateSplitInfo( this, newText, offset); } } } } return newText; } DOMNode* DOMCommentImpl::appendChild(DOMNode *newChild) {return fNode.appendChild (newChild); } DOMNamedNodeMap* DOMCommentImpl::getAttributes() const {return fNode.getAttributes (); } DOMNodeList* DOMCommentImpl::getChildNodes() const {return fNode.getChildNodes (); } DOMNode* DOMCommentImpl::getFirstChild() const {return fNode.getFirstChild (); } DOMNode* DOMCommentImpl::getLastChild() const {return fNode.getLastChild (); } const XMLCh* DOMCommentImpl::getLocalName() const {return fNode.getLocalName (); } const XMLCh* DOMCommentImpl::getNamespaceURI() const {return fNode.getNamespaceURI (); } DOMNode* DOMCommentImpl::getNextSibling() const {return fChild.getNextSibling (); } const XMLCh* DOMCommentImpl::getNodeValue() const {return fCharacterData.getNodeValue (); } DOMDocument* DOMCommentImpl::getOwnerDocument() const {return fNode.getOwnerDocument (); } const XMLCh* DOMCommentImpl::getPrefix() const {return fNode.getPrefix (); } DOMNode* DOMCommentImpl::getParentNode() const {return fChild.getParentNode (this); } DOMNode* DOMCommentImpl::getPreviousSibling() const {return fChild.getPreviousSibling (this); } bool DOMCommentImpl::hasChildNodes() const {return fNode.hasChildNodes (); } DOMNode* DOMCommentImpl::insertBefore(DOMNode *newChild, DOMNode *refChild) {return fNode.insertBefore (newChild, refChild); } void DOMCommentImpl::normalize() {fNode.normalize (); } DOMNode* DOMCommentImpl::removeChild(DOMNode *oldChild) {return fNode.removeChild (oldChild); } DOMNode* DOMCommentImpl::replaceChild(DOMNode *newChild, DOMNode *oldChild) {return fNode.replaceChild (newChild, oldChild); } bool DOMCommentImpl::isSupported(const XMLCh *feature, const XMLCh *version) const {return fNode.isSupported (feature, version); } void DOMCommentImpl::setPrefix(const XMLCh *prefix) {fNode.setPrefix(prefix); } bool DOMCommentImpl::hasAttributes() const {return fNode.hasAttributes(); } bool DOMCommentImpl::isSameNode(const DOMNode* other) const {return fNode.isSameNode(other); } bool DOMCommentImpl::isEqualNode(const DOMNode* arg) const {return fNode.isEqualNode(arg); } void* DOMCommentImpl::setUserData(const XMLCh* key, void* data, DOMUserDataHandler* handler) {return fNode.setUserData(key, data, handler); } void* DOMCommentImpl::getUserData(const XMLCh* key) const {return fNode.getUserData(key); } const XMLCh* DOMCommentImpl::getBaseURI() const {return fNode.getBaseURI(); } short DOMCommentImpl::compareDocumentPosition(const DOMNode* other) const {return fNode.compareDocumentPosition(other); } const XMLCh* DOMCommentImpl::getTextContent() const {return fNode.getTextContent(); } void DOMCommentImpl::setTextContent(const XMLCh* textContent){fNode.setTextContent(textContent); } const XMLCh* DOMCommentImpl::lookupPrefix(const XMLCh* namespaceURI) const {return fNode.lookupPrefix(namespaceURI); } bool DOMCommentImpl::isDefaultNamespace(const XMLCh* namespaceURI) const {return fNode.isDefaultNamespace(namespaceURI); } const XMLCh* DOMCommentImpl::lookupNamespaceURI(const XMLCh* prefix) const {return fNode.lookupNamespaceURI(prefix); } void* DOMCommentImpl::getFeature(const XMLCh* feature, const XMLCh* version) const {return fNode.getFeature(feature, version); } // // Delegation of CharacerData functions. // const XMLCh* DOMCommentImpl::getData() const {return fCharacterData.getData();} XMLSize_t DOMCommentImpl::getLength() const {return fCharacterData.getLength();} const XMLCh* DOMCommentImpl::substringData(XMLSize_t offset, XMLSize_t count) const {return fCharacterData.substringData(this, offset, count);} void DOMCommentImpl::appendData(const XMLCh *arg) {fCharacterData.appendData(this, arg);} void DOMCommentImpl::insertData(XMLSize_t offset, const XMLCh *arg) {fCharacterData.insertData(this, offset, arg);} void DOMCommentImpl::deleteData(XMLSize_t offset, XMLSize_t count) {fCharacterData.deleteData(this, offset, count);} void DOMCommentImpl::replaceData(XMLSize_t offset, XMLSize_t count, const XMLCh *arg) {fCharacterData.replaceData(this, offset, count, arg);} void DOMCommentImpl::setData(const XMLCh *data) {fCharacterData.setData(this, data);} void DOMCommentImpl::setNodeValue(const XMLCh *nodeValue) {fCharacterData.setNodeValue (this, nodeValue); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMLSInputImpl.cpp0000644000175000017500000000474611156201670021444 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMLSInputImpl.cpp 752848 2009-03-12 12:44:40Z amassari $ */ #include "DOMLSInputImpl.hpp" #include XERCES_CPP_NAMESPACE_BEGIN DOMLSInputImpl::DOMLSInputImpl(MemoryManager* const manager /*= XMLPlatformUtils::fgMemoryManager*/) :fStringData(0) ,fByteStream(0) ,fEncoding(0) ,fPublicId(0) ,fSystemId(0) ,fBaseURI(0) ,fIssueFatalErrorIfNotFound(true) ,fMemoryManager(manager) { } DOMLSInputImpl::~DOMLSInputImpl() { fMemoryManager->deallocate(fEncoding); fMemoryManager->deallocate(fPublicId); fMemoryManager->deallocate(fSystemId); fMemoryManager->deallocate(fBaseURI); } void DOMLSInputImpl::setStringData(const XMLCh* data) { fStringData=data; setEncoding(XMLUni::fgXMLChEncodingString); } void DOMLSInputImpl::setByteStream(InputSource* stream) { fByteStream=stream; } void DOMLSInputImpl::setEncoding(const XMLCh* const encodingStr) { fMemoryManager->deallocate(fEncoding); fEncoding = XMLString::replicate(encodingStr, fMemoryManager); } void DOMLSInputImpl::setPublicId(const XMLCh* const publicId) { fMemoryManager->deallocate(fPublicId); fPublicId = XMLString::replicate(publicId, fMemoryManager); } void DOMLSInputImpl::setSystemId(const XMLCh* const systemId) { fMemoryManager->deallocate(fSystemId); fSystemId = XMLString::replicate(systemId, fMemoryManager); } void DOMLSInputImpl::setBaseURI(const XMLCh* const baseURI) { fMemoryManager->deallocate(fBaseURI); fBaseURI = XMLString::replicate(baseURI, fMemoryManager); } void DOMLSInputImpl::setIssueFatalErrorIfNotFound(bool flag) { fIssueFatalErrorIfNotFound=flag; } void DOMLSInputImpl::release() { delete this; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMXPathNSResolverImpl.hpp0000644000175000017500000000377611014247605023125 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMXPathNSResolverImpl.hpp 657774 2008-05-19 09:59:33Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMXPATHNSRESOLVERIMPL_HPP) #define XERCESC_INCLUDE_GUARD_DOMXPATHNSRESOLVERIMPL_HPP #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN class DOMNode; class CDOM_EXPORT DOMXPathNSResolverImpl : public XMemory, public DOMXPathNSResolver { public: DOMXPathNSResolverImpl(const DOMNode* nodeResolver = 0, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); ~DOMXPathNSResolverImpl(); virtual const XMLCh* lookupNamespaceURI(const XMLCh* prefix) const; virtual const XMLCh* lookupPrefix(const XMLCh* URI) const; virtual void addNamespaceBinding(const XMLCh* prefix, const XMLCh* uri); virtual void release(); protected: RefHashTableOf* fNamespaceBindings; const DOMNode* fResolverNode; MemoryManager* fManager; }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMXPathResultImpl.hpp0000644000175000017500000000427211030714661022330 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMXPathResultImpl.hpp 671894 2008-06-26 13:29:21Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMXPATHRESULTIMPL_HPP) #define XERCESC_INCLUDE_GUARD_DOMXPATHRESULTIMPL_HPP #include #include #include XERCES_CPP_NAMESPACE_BEGIN class CDOM_EXPORT DOMXPathResultImpl : public XMemory, public DOMXPathResult { public: DOMXPathResultImpl(ResultType type, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); ~DOMXPathResultImpl(); virtual ResultType getResultType() const; virtual const DOMTypeInfo *getTypeInfo() const; virtual bool isNode() const; virtual bool getBooleanValue() const; virtual int getIntegerValue() const; virtual double getNumberValue() const; virtual const XMLCh* getStringValue() const; virtual DOMNode* getNodeValue() const; virtual bool iterateNext(); virtual bool getInvalidIteratorState() const; virtual bool snapshotItem(XMLSize_t); virtual XMLSize_t getSnapshotLength() const; virtual void release(); public: void reset(ResultType type); void addResult(DOMNode* node); protected: ResultType fType; MemoryManager* const fMemoryManager; RefVectorOf* fSnapshot; XMLSize_t fIndex; }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMTreeWalkerImpl.hpp0000644000175000017500000001261211030714661022147 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMTreeWalkerImpl.hpp 671894 2008-06-26 13:29:21Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMTREEWALKERIMPL_HPP) #define XERCESC_INCLUDE_GUARD_DOMTREEWALKERIMPL_HPP // // This file is part of the internal implementation of the C++ XML DOM. // It should NOT be included or used directly by application programs. // // Applications should include the file for the entire // DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class // name is substituded for the *. // #include XERCES_CPP_NAMESPACE_BEGIN class CDOM_EXPORT DOMTreeWalkerImpl : public DOMTreeWalker { protected: // The whatToShow mask. DOMNodeFilter::ShowType fWhatToShow; // The NodeFilter reference. DOMNodeFilter* fNodeFilter; // The current Node. DOMNode* fCurrentNode; // The root Node. DOMNode* fRoot; // The expandEntity reference flag. bool fExpandEntityReferences; public: // Implementation Note: No state is kept except the data above // (fWhatToShow, fNodeFilter, fCurrentNode, fRoot) such that // setters could be created for these data values and the // implementation will still work. /** Public constructor */ DOMTreeWalkerImpl ( DOMNode* root, DOMNodeFilter::ShowType whatToShow, DOMNodeFilter* nodeFilter, bool expandEntityRef); DOMTreeWalkerImpl (const DOMTreeWalkerImpl& twi); DOMTreeWalkerImpl& operator= (const DOMTreeWalkerImpl& twi); // Return the root node. virtual DOMNode* getRoot (); // Return the whatToShow value. virtual DOMNodeFilter::ShowType getWhatToShow (); // Return the NodeFilter. virtual DOMNodeFilter* getFilter (); // Return the current DOMNode. virtual DOMNode* getCurrentNode (); // Return the current Node. virtual void setCurrentNode (DOMNode* node); // Return the parent Node from the current node, // after applying filter, whatToshow. // If result is not null, set the current Node. virtual DOMNode* parentNode (); // Return the first child Node from the current node, // after applying filter, whatToshow. // If result is not null, set the current Node. virtual DOMNode* firstChild (); // Return the last child Node from the current node, // after applying filter, whatToshow. // If result is not null, set the current Node. virtual DOMNode* lastChild (); // Return the previous sibling Node from the current node, // after applying filter, whatToshow. // If result is not null, set the current Node. virtual DOMNode* previousSibling (); // Return the next sibling Node from the current node, // after applying filter, whatToshow. // If result is not null, set the current Node. virtual DOMNode* nextSibling (); // Return the previous Node from the current node, // after applying filter, whatToshow. // If result is not null, set the current Node. virtual DOMNode* previousNode (); // Return the next Node from the current node, // after applying filter, whatToshow. // If result is not null, set the current Node. virtual DOMNode* nextNode (); // Get the expandEntity reference flag. virtual bool getExpandEntityReferences(); // release the resource virtual void release(); protected: // Internal function. // Return the parent Node, from the input node // after applying filter, whatToshow. // The current node is not consulted or set. DOMNode* getParentNode (DOMNode* node); // Internal function. // Return the nextSibling Node, from the input node // after applying filter, whatToshow. // The current node is not consulted or set. DOMNode* getNextSibling (DOMNode* node); // Internal function. // Return the previous sibling Node, from the input node // after applying filter, whatToshow. // The current node is not consulted or set. DOMNode* getPreviousSibling (DOMNode* node); // Internal function. // Return the first child Node, from the input node // after applying filter, whatToshow. // The current node is not consulted or set. DOMNode* getFirstChild (DOMNode* node); // Internal function. // Return the last child Node, from the input node // after applying filter, whatToshow. // The current node is not consulted or set. DOMNode* getLastChild (DOMNode* node); // The node is accepted if it passes the whatToShow and the filter. short acceptNode (DOMNode* node); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMDocumentTypeImpl.cpp0000644000175000017500000004566611041336370022533 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMDocumentTypeImpl.cpp 678709 2008-07-22 10:56:56Z borisk $ */ #include "DOMDocumentTypeImpl.hpp" #include #include #include #include #include #include #include #include #include #include "DOMNamedNodeMapImpl.hpp" #include "DOMDocumentImpl.hpp" #include "DOMCasts.hpp" XERCES_CPP_NAMESPACE_BEGIN static DOMDocument* sDocument = 0; static XMLMutex* sDocumentMutex = 0; void XMLInitializer::initializeDOMDocumentTypeImpl() { sDocumentMutex = new XMLMutex(XMLPlatformUtils::fgMemoryManager); static const XMLCh gCoreStr[] = { chLatin_C, chLatin_o, chLatin_r, chLatin_e, chNull }; DOMImplementation* impl = DOMImplementationRegistry::getDOMImplementation(gCoreStr); sDocument = impl->createDocument(); // document type object (DTD). } void XMLInitializer::terminateDOMDocumentTypeImpl() { sDocument->release(); sDocument = 0; delete sDocumentMutex; sDocumentMutex = 0; } DOMDocumentTypeImpl::DOMDocumentTypeImpl(DOMDocument *ownerDoc, const XMLCh *dtName, bool heap) : fNode(ownerDoc), fParent(ownerDoc), fName(0), fEntities(0), fNotations(0), fElements(0), fPublicId(0), fSystemId(0), fInternalSubset(0), fIntSubsetReading(false), fIsCreatedFromHeap(heap) { if (ownerDoc) { fName = ((DOMDocumentImpl *)ownerDoc)->getPooledString(dtName); fEntities = new (ownerDoc) DOMNamedNodeMapImpl(this); fNotations= new (ownerDoc) DOMNamedNodeMapImpl(this); fElements = new (ownerDoc) DOMNamedNodeMapImpl(this); } else { XMLMutexLock lock(sDocumentMutex); DOMDocument* doc = sDocument; fName = ((DOMDocumentImpl *)doc)->getPooledString(dtName); fEntities = new (doc) DOMNamedNodeMapImpl(this); fNotations= new (doc) DOMNamedNodeMapImpl(this); fElements = new (doc) DOMNamedNodeMapImpl(this); } } //Introduced in DOM Level 2 DOMDocumentTypeImpl::DOMDocumentTypeImpl(DOMDocument *ownerDoc, const XMLCh *qualifiedName, const XMLCh *pubId, const XMLCh *sysId, bool heap) : fNode(ownerDoc), fParent(ownerDoc), fName(0), fEntities(0), fNotations(0), fElements(0), fPublicId(0), fSystemId(0), fInternalSubset(0), fIntSubsetReading(false), fIsCreatedFromHeap(heap) { int index = DOMDocumentImpl::indexofQualifiedName(qualifiedName); if (index < 0) throw DOMException(DOMException::NAMESPACE_ERR, 0, GetDOMNodeMemoryManager); else if (index > 0) { // we have to make sure the qualifiedName has correct prefix and localName // although we don't really to store them separately XMLCh* newName; XMLCh temp[256]; if (index >= 255) newName = (XMLCh*) XMLPlatformUtils::fgMemoryManager->allocate ( (XMLString::stringLen(qualifiedName)+1) * sizeof(XMLCh) );//new XMLCh[XMLString::stringLen(qualifiedName)+1]; else newName = temp; XMLString::copyNString(newName, qualifiedName, index); newName[index] = chNull; // Before we carry on, we should check if the prefix or localName are valid XMLName if (ownerDoc) { if (!((DOMDocumentImpl*)ownerDoc)->isXMLName(newName) || !((DOMDocumentImpl*)ownerDoc)->isXMLName(qualifiedName+index+1)) throw DOMException(DOMException::NAMESPACE_ERR, 0, GetDOMNodeMemoryManager); } else { // document is not there yet, so assume XML 1.0 if (!XMLChar1_0::isValidName(newName) || !XMLChar1_0::isValidName(qualifiedName+index+1)) throw DOMException(DOMException::NAMESPACE_ERR, 0, GetDOMNodeMemoryManager); } if (index >= 255) XMLPlatformUtils::fgMemoryManager->deallocate(newName);//delete[] newName; } if (ownerDoc) { DOMDocumentImpl *docImpl = (DOMDocumentImpl *)ownerDoc; fPublicId = docImpl->cloneString(pubId); fSystemId = docImpl->cloneString(sysId); fName = ((DOMDocumentImpl *)ownerDoc)->getPooledString(qualifiedName); fEntities = new (ownerDoc) DOMNamedNodeMapImpl(this); fNotations= new (ownerDoc) DOMNamedNodeMapImpl(this); fElements = new (ownerDoc) DOMNamedNodeMapImpl(this); } else { XMLMutexLock lock(sDocumentMutex); DOMDocument* doc = sDocument; fPublicId = ((DOMDocumentImpl*) doc)->cloneString(pubId); fSystemId = ((DOMDocumentImpl*) doc)->cloneString(sysId); fName = ((DOMDocumentImpl*) doc)->getPooledString(qualifiedName); fEntities = new (doc) DOMNamedNodeMapImpl(this); fNotations= new (doc) DOMNamedNodeMapImpl(this); fElements = new (doc) DOMNamedNodeMapImpl(this); } } DOMDocumentTypeImpl::DOMDocumentTypeImpl(const DOMDocumentTypeImpl &other, bool heap, bool deep) : fNode(other.fNode), fParent(other.fParent), fChild(other.fChild), fName(0), fEntities(0), fNotations(0), fElements(0), fPublicId(0), fSystemId(0), fInternalSubset(0), fIntSubsetReading(other.fIntSubsetReading), fIsCreatedFromHeap(heap) { fName = other.fName; //DOM Level 2 fPublicId = other.fPublicId; fSystemId = other.fSystemId; fInternalSubset = other.fInternalSubset; if ((DOMDocumentImpl *)this->fNode.getOwnerDocument() && deep) fParent.cloneChildren(&other); fEntities = other.fEntities->cloneMap(this); fNotations= other.fNotations->cloneMap(this); fElements = other.fElements->cloneMap(this); } DOMDocumentTypeImpl::~DOMDocumentTypeImpl() { } DOMNode *DOMDocumentTypeImpl::cloneNode(bool deep) const { DOMNode* newNode = 0; DOMDocument* doc = castToNodeImpl(this)->getOwnerDocument(); if (doc != 0) newNode = new (doc, DOMMemoryManager::DOCUMENT_TYPE_OBJECT) DOMDocumentTypeImpl(*this, false, deep); else { XMLMutexLock lock(sDocumentMutex); newNode = new (sDocument, DOMMemoryManager::DOCUMENT_TYPE_OBJECT) DOMDocumentTypeImpl(*this, false, deep); } fNode.callUserDataHandlers(DOMUserDataHandler::NODE_CLONED, this, newNode); return newNode; } /** * NON-DOM * set the ownerDocument of this node and its children */ void DOMDocumentTypeImpl::setOwnerDocument(DOMDocument *doc) { if (castToNodeImpl(this)->getOwnerDocument()) { fNode.setOwnerDocument(doc); fParent.setOwnerDocument(doc); } else { if (doc) { DOMDocumentImpl *docImpl = (DOMDocumentImpl *)doc; fPublicId = docImpl->cloneString(fPublicId); fSystemId = docImpl->cloneString(fSystemId); fInternalSubset = docImpl->cloneString(fInternalSubset); fName = docImpl->getPooledString(fName); fNode.setOwnerDocument(doc); fParent.setOwnerDocument(doc); DOMNamedNodeMapImpl* entitiesTemp = fEntities->cloneMap(this); DOMNamedNodeMapImpl* notationsTemp = fNotations->cloneMap(this); DOMNamedNodeMapImpl* elementsTemp = fElements->cloneMap(this); fEntities = entitiesTemp; fNotations = notationsTemp; fElements = elementsTemp; } } } const XMLCh * DOMDocumentTypeImpl::getNodeName() const { return fName; } DOMNode::NodeType DOMDocumentTypeImpl::getNodeType() const { return DOMNode::DOCUMENT_TYPE_NODE; } DOMNamedNodeMap *DOMDocumentTypeImpl::getEntities() const { return fEntities; } const XMLCh * DOMDocumentTypeImpl::getName() const { return fName; } DOMNamedNodeMap *DOMDocumentTypeImpl::getNotations() const { return fNotations; } DOMNamedNodeMap *DOMDocumentTypeImpl::getElements() const { return fElements; } void DOMDocumentTypeImpl::setNodeValue(const XMLCh *val) { fNode.setNodeValue(val); } void DOMDocumentTypeImpl::setReadOnly(bool readOnl, bool deep) { fNode.setReadOnly(readOnl,deep); if (fEntities) fEntities->setReadOnly(readOnl,true); if (fNotations) fNotations->setReadOnly(readOnl,true); } //Introduced in DOM Level 2 const XMLCh * DOMDocumentTypeImpl::getPublicId() const { return fPublicId; } const XMLCh * DOMDocumentTypeImpl::getSystemId() const { return fSystemId; } const XMLCh * DOMDocumentTypeImpl::getInternalSubset() const { return fInternalSubset; } bool DOMDocumentTypeImpl::isIntSubsetReading() const { return fIntSubsetReading; } //set functions void DOMDocumentTypeImpl::setPublicId(const XMLCh *value) { // revist. Why shouldn't 0 be assigned like any other value? if (value == 0) return; DOMDocumentImpl* doc = (DOMDocumentImpl *)castToNodeImpl(this)->getOwnerDocument(); if (doc != 0) fPublicId = doc->cloneString(value); else { XMLMutexLock lock(sDocumentMutex); fPublicId = ((DOMDocumentImpl *)sDocument)->cloneString(value); } } void DOMDocumentTypeImpl::setSystemId(const XMLCh *value) { DOMDocumentImpl* doc = (DOMDocumentImpl *)castToNodeImpl(this)->getOwnerDocument(); if (doc != 0) fSystemId = doc->cloneString(value); else { XMLMutexLock lock(sDocumentMutex); fSystemId = ((DOMDocumentImpl *)sDocument)->cloneString(value); } } void DOMDocumentTypeImpl::setInternalSubset(const XMLCh *value) { DOMDocumentImpl* doc = (DOMDocumentImpl *)castToNodeImpl(this)->getOwnerDocument(); if (doc != 0) fInternalSubset = doc->cloneString(value); else { XMLMutexLock lock(sDocumentMutex); fInternalSubset = ((DOMDocumentImpl *)sDocument)->cloneString(value); } } void DOMDocumentTypeImpl::release() { if (fNode.isOwned()) { if (fNode.isToBeReleased()) { // we are calling from documnet.release() which will notify the user data handler if (fIsCreatedFromHeap) { DOMDocumentType* docType = this; delete docType; } } else throw DOMException(DOMException::INVALID_ACCESS_ERR,0, GetDOMNodeMemoryManager); } else { if (fIsCreatedFromHeap) { fNode.callUserDataHandlers(DOMUserDataHandler::NODE_DELETED, 0, 0); DOMDocumentType* docType = this; delete docType; } else { DOMDocumentImpl* doc = (DOMDocumentImpl*) getOwnerDocument(); if (doc) { fNode.callUserDataHandlers(DOMUserDataHandler::NODE_DELETED, 0, 0); doc->release(this, DOMMemoryManager::DOCUMENT_TYPE_OBJECT); } else { // shouldn't reach here throw DOMException(DOMException::INVALID_ACCESS_ERR,0, GetDOMNodeMemoryManager); } } } } // // Delegation for functions inherited from Node // DOMNode* DOMDocumentTypeImpl::appendChild(DOMNode *newChild) {return fParent.appendChild (newChild); } DOMNamedNodeMap* DOMDocumentTypeImpl::getAttributes() const {return fNode.getAttributes (); } DOMNodeList* DOMDocumentTypeImpl::getChildNodes() const {return fParent.getChildNodes (); } DOMNode* DOMDocumentTypeImpl::getFirstChild() const {return fParent.getFirstChild (); } DOMNode* DOMDocumentTypeImpl::getLastChild() const {return fParent.getLastChild (); } const XMLCh* DOMDocumentTypeImpl::getLocalName() const {return fNode.getLocalName (); } const XMLCh* DOMDocumentTypeImpl::getNamespaceURI() const {return fNode.getNamespaceURI (); } DOMNode* DOMDocumentTypeImpl::getNextSibling() const {return fChild.getNextSibling (); } const XMLCh* DOMDocumentTypeImpl::getNodeValue() const {return fNode.getNodeValue (); } DOMDocument* DOMDocumentTypeImpl::getOwnerDocument() const {return fParent.fOwnerDocument; } const XMLCh* DOMDocumentTypeImpl::getPrefix() const {return fNode.getPrefix (); } DOMNode* DOMDocumentTypeImpl::getParentNode() const {return fChild.getParentNode (this); } DOMNode* DOMDocumentTypeImpl::getPreviousSibling() const {return fChild.getPreviousSibling (this); } bool DOMDocumentTypeImpl::hasChildNodes() const {return fParent.hasChildNodes (); } DOMNode* DOMDocumentTypeImpl::insertBefore(DOMNode *newChild, DOMNode *refChild) {return fParent.insertBefore (newChild, refChild); } void DOMDocumentTypeImpl::normalize() {fParent.normalize (); } DOMNode* DOMDocumentTypeImpl::removeChild(DOMNode *oldChild) {return fParent.removeChild (oldChild); } DOMNode* DOMDocumentTypeImpl::replaceChild(DOMNode *newChild, DOMNode *oldChild) {return fParent.replaceChild (newChild, oldChild); } void DOMDocumentTypeImpl::setPrefix(const XMLCh *prefix) {fNode.setPrefix(prefix); } bool DOMDocumentTypeImpl::hasAttributes() const {return fNode.hasAttributes(); } bool DOMDocumentTypeImpl::isSameNode(const DOMNode* other) const {return fNode.isSameNode(other); } void* DOMDocumentTypeImpl::setUserData(const XMLCh* key, void* data, DOMUserDataHandler* handler) {return fNode.setUserData(key, data, handler); } void* DOMDocumentTypeImpl::getUserData(const XMLCh* key) const {return fNode.getUserData(key); } const XMLCh* DOMDocumentTypeImpl::getBaseURI() const {return fNode.getBaseURI(); } short DOMDocumentTypeImpl::compareDocumentPosition(const DOMNode* other) const {return fNode.compareDocumentPosition(other); } const XMLCh* DOMDocumentTypeImpl::getTextContent() const {return fNode.getTextContent(); } void DOMDocumentTypeImpl::setTextContent(const XMLCh* textContent){fNode.setTextContent(textContent); } const XMLCh* DOMDocumentTypeImpl::lookupPrefix(const XMLCh* namespaceURI) const {return fNode.lookupPrefix(namespaceURI); } bool DOMDocumentTypeImpl::isDefaultNamespace(const XMLCh* namespaceURI) const {return fNode.isDefaultNamespace(namespaceURI); } const XMLCh* DOMDocumentTypeImpl::lookupNamespaceURI(const XMLCh* prefix) const {return fNode.lookupNamespaceURI(prefix); } bool DOMDocumentTypeImpl::isEqualNode(const DOMNode* arg) const { if (isSameNode(arg)) { return true; } if (!fNode.isEqualNode(arg)) { return false; } DOMDocumentType* argDT = (DOMDocumentType*) arg; // check the string values if (!getPublicId()) { if (argDT->getPublicId()) { return false; } } else if (!XMLString::equals(getPublicId(), argDT->getPublicId())) { return false; } if (!getSystemId()) { if (argDT->getSystemId()) { return false; } } else if (!XMLString::equals(getSystemId(), argDT->getSystemId())) { return false; } if (!getInternalSubset()) { if (argDT->getInternalSubset()) { return false; } } else if (!XMLString::equals(getInternalSubset(), argDT->getInternalSubset())) { return false; } // check the notations if (getNotations()) { if (!argDT->getNotations()) return false; DOMNamedNodeMap* map1 = getNotations(); DOMNamedNodeMap* map2 = argDT->getNotations(); XMLSize_t len = map1->getLength(); if (len != map2->getLength()) { return false; } for (XMLSize_t i = 0; i < len; i++) { DOMNode* n1 = map1->item(i); DOMNode* n2 = map2->getNamedItem(n1->getNodeName()); if (!n2 || !n1->isEqualNode(n2)) { return false; } } } else { if (argDT->getNotations()) return false; } // check the entities if (getEntities()) { if (!argDT->getEntities()) return false; DOMNamedNodeMap* map1 = getEntities(); DOMNamedNodeMap* map2 = argDT->getEntities(); XMLSize_t len = map1->getLength(); if (len != map2->getLength()) { return false; } for (XMLSize_t i = 0; i < len; i++) { DOMNode* n1 = map1->item(i); DOMNode* n2 = map2->getNamedItem(n1->getNodeName()); if (!n2 || !n1->isEqualNode(n2)) { return false; } } } else { if (argDT->getEntities()) return false; } return fParent.isEqualNode(arg); } bool DOMDocumentTypeImpl::isSupported(const XMLCh *feature, const XMLCh *version) const { // check for 'DOMDocumentTypeImpl' or '+DOMDocumentTypeImpl' if(feature && *feature) { if((*feature==chPlus && XMLString::equals(feature+1, XMLUni::fgXercescInterfaceDOMDocumentTypeImpl)) || XMLString::equals(feature, XMLUni::fgXercescInterfaceDOMDocumentTypeImpl)) return true; } return fNode.isSupported (feature, version); } void* DOMDocumentTypeImpl::getFeature(const XMLCh* feature, const XMLCh* version) const { if(XMLString::equals(feature, XMLUni::fgXercescInterfaceDOMDocumentTypeImpl)) return (DOMDocumentTypeImpl*)this; return fNode.getFeature(feature,version); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMCharacterDataImpl.cpp0000644000175000017500000002175511041363760022575 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMCharacterDataImpl.cpp 678766 2008-07-22 14:00:16Z borisk $ */ #include "DOMCharacterDataImpl.hpp" #include #include #include "DOMRangeImpl.hpp" #include "DOMDocumentImpl.hpp" #include "DOMCasts.hpp" #include "DOMStringPool.hpp" #include XERCES_CPP_NAMESPACE_BEGIN DOMCharacterDataImpl::DOMCharacterDataImpl(DOMDocument *doc, const XMLCh *dat) { fDoc = (DOMDocumentImpl*)doc; XMLSize_t len=XMLString::stringLen(dat); fDataBuf = fDoc->popBuffer(len+1); if (!fDataBuf) fDataBuf = new (fDoc) DOMBuffer(fDoc, len+15); fDataBuf->set(dat, len); } DOMCharacterDataImpl:: DOMCharacterDataImpl(DOMDocument *doc, const XMLCh* dat, XMLSize_t len) { fDoc = (DOMDocumentImpl*)doc; fDataBuf = fDoc->popBuffer(len+1); if (!fDataBuf) fDataBuf = new (fDoc) DOMBuffer(fDoc, len+15); fDataBuf->set(dat, len); } DOMCharacterDataImpl::DOMCharacterDataImpl(const DOMCharacterDataImpl &other) { fDoc = (DOMDocumentImpl*)other.fDoc; XMLSize_t len=other.getLength(); fDataBuf = fDoc->popBuffer(len+1); if (!fDataBuf) fDataBuf = new (fDoc) DOMBuffer(fDoc, len+15); fDataBuf->set(other.fDataBuf->getRawBuffer(), len); } DOMCharacterDataImpl::~DOMCharacterDataImpl() { } const XMLCh * DOMCharacterDataImpl::getNodeValue() const { return fDataBuf->getRawBuffer(); } void DOMCharacterDataImpl::setNodeValue(const DOMNode *node, const XMLCh *value) { if (castToNodeImpl(node)->isReadOnly()) throw DOMException(DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMCharacterDataImplMemoryManager); fDataBuf->set(value); DOMDocumentImpl *doc = (DOMDocumentImpl *)node->getOwnerDocument(); if (doc != 0) { Ranges* ranges = doc->getRanges(); if (ranges != 0) { XMLSize_t sz = ranges->size(); if (sz != 0) { for (XMLSize_t i =0; ielementAt(i)->receiveReplacedText((DOMNode*)node); } } } } } void DOMCharacterDataImpl::appendData(const DOMNode *node, const XMLCh *dat) { if(castToNodeImpl(node)->isReadOnly()) throw DOMException( DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMCharacterDataImplMemoryManager); fDataBuf->append(dat); } void DOMCharacterDataImpl::appendData(const DOMNode *node, const XMLCh *dat, XMLSize_t n) { if(castToNodeImpl(node)->isReadOnly()) throw DOMException( DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMCharacterDataImplMemoryManager); fDataBuf->append(dat, n); } void DOMCharacterDataImpl::deleteData(const DOMNode *node, XMLSize_t offset, XMLSize_t count) { if (castToNodeImpl(node)->isReadOnly()) throw DOMException(DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMCharacterDataImplMemoryManager); // Note: the C++ XMLCh * operation throws the correct DOMExceptions // when parameter values are bad. // XMLSize_t len = this->fDataBuf->getLen(); if (offset > len) throw DOMException(DOMException::INDEX_SIZE_ERR, 0, GetDOMCharacterDataImplMemoryManager); // Cap the value of delLength to avoid trouble with overflows // in the following length computations. if (count > len) count = len; // If the length of data to be deleted would extend off the end // of the string, cut it back to stop at the end of string. if (offset + count >= len) count = len - offset; XMLSize_t newLen = len - count; XMLCh* newString; XMLCh temp[4096]; if (newLen >= 4095) newString = (XMLCh*) XMLPlatformUtils::fgMemoryManager->allocate ( (newLen+1) * sizeof(XMLCh) );//new XMLCh[newLen+1]; else newString = temp; XMLString::copyNString(newString, fDataBuf->getRawBuffer(), offset); XMLString::copyString(newString+offset, fDataBuf->getRawBuffer()+offset+count); fDataBuf->set(newString); if (newLen >= 4095) XMLPlatformUtils::fgMemoryManager->deallocate(newString);//delete[] newString; // We don't delete the old string (doesn't work), or alter // the old string (may be shared) // It just hangs around, possibly orphaned. DOMDocumentImpl *doc = (DOMDocumentImpl *)node->getOwnerDocument(); if (doc != 0) { Ranges* ranges = doc->getRanges(); if (ranges != 0) { XMLSize_t sz = ranges->size(); if (sz != 0) { for (XMLSize_t i =0; ielementAt(i)->updateRangeForDeletedText( (DOMNode*)node, offset, count); } } } } } const XMLCh *DOMCharacterDataImpl::getData() const { return fDataBuf->getRawBuffer(); } // // getCharDataLength - return the length of the character data string. // XMLSize_t DOMCharacterDataImpl::getLength() const { return fDataBuf->getLen(); } void DOMCharacterDataImpl::insertData(const DOMNode *node, XMLSize_t offset, const XMLCh *dat) { if (castToNodeImpl(node)->isReadOnly()) throw DOMException( DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMCharacterDataImplMemoryManager); // Note: the C++ XMLCh * operation throws the correct DOMExceptions // when parameter values are bad. // XMLSize_t len = fDataBuf->getLen(); if (offset > len) throw DOMException(DOMException::INDEX_SIZE_ERR, 0, GetDOMCharacterDataImplMemoryManager); XMLSize_t datLen = XMLString::stringLen(dat); XMLSize_t newLen = len + datLen; XMLCh* newString; XMLCh temp[4096]; if (newLen >= 4095) newString = (XMLCh*) XMLPlatformUtils::fgMemoryManager->allocate ( (newLen + 1) * sizeof(XMLCh) );//new XMLCh[newLen+1]; else newString = temp; XMLString::copyNString(newString, fDataBuf->getRawBuffer(), offset); XMLString::copyNString(newString+offset, dat, datLen); XMLString::copyString(newString+offset+datLen, fDataBuf->getRawBuffer()+offset); fDataBuf->set(newString); if (newLen >= 4095) XMLPlatformUtils::fgMemoryManager->deallocate(newString);//delete[] newString; DOMDocumentImpl *doc = (DOMDocumentImpl *)node->getOwnerDocument(); if (doc != 0) { Ranges* ranges = doc->getRanges(); if (ranges != 0) { XMLSize_t sz = ranges->size(); if (sz != 0) { for (XMLSize_t i =0; ielementAt(i)->updateRangeForInsertedText( (DOMNode*)node, offset, datLen); } } } } } void DOMCharacterDataImpl::replaceData(const DOMNode *node, XMLSize_t offset, XMLSize_t count, const XMLCh *dat) { if (castToNodeImpl(node)->isReadOnly()) throw DOMException( DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMCharacterDataImplMemoryManager); deleteData(node, offset, count); insertData(node, offset, dat); } void DOMCharacterDataImpl::setData(const DOMNode *node, const XMLCh *arg) { setNodeValue(node, arg); } const XMLCh * DOMCharacterDataImpl::substringData(const DOMNode *node, XMLSize_t offset, XMLSize_t count) const { // Note: the C++ XMLCh * operation throws the correct DOMExceptions // when parameter values are bad. // XMLSize_t len = fDataBuf->getLen(); if (offset > len) throw DOMException(DOMException::INDEX_SIZE_ERR, 0, GetDOMCharacterDataImplMemoryManager); DOMDocumentImpl *doc = (DOMDocumentImpl *)node->getOwnerDocument(); XMLCh* newString; XMLCh temp[4096]; if (len >= 4095) newString = (XMLCh*) doc->getMemoryManager()->allocate ( (len + 1) * sizeof(XMLCh) );//new XMLCh[len+1]; else newString = temp; XMLString::copyNString(newString, fDataBuf->getRawBuffer()+offset, count); newString[count] = chNull; const XMLCh* retString = doc->getPooledString(newString); if (len >= 4095) doc->getMemoryManager()->deallocate(newString);//delete[] newString; return retString; } void DOMCharacterDataImpl::releaseBuffer() { fDoc->releaseBuffer(fDataBuf); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMErrorImpl.hpp0000644000175000017500000001117611037072255021202 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMErrorImpl.hpp 676853 2008-07-15 09:58:05Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMERRORIMPL_HPP) #define XERCESC_INCLUDE_GUARD_DOMERRORIMPL_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN /** * Introduced in DOM Level 3 * Implementation of a DOMError interface. * * @see DOMError#DOMError */ class CDOM_EXPORT DOMErrorImpl : public DOMError { public: /** @name Constructors and Destructor */ //@{ /** Constructors */ DOMErrorImpl(const ErrorSeverity severity); DOMErrorImpl ( const ErrorSeverity severity , const XMLCh* const message , DOMLocator* const location ); DOMErrorImpl ( const ErrorSeverity severity , const XMLCh* type , const XMLCh* message , void* relatedData ); /** Desctructor */ virtual ~DOMErrorImpl(); //@} // DOMError interface virtual ErrorSeverity getSeverity() const; virtual const XMLCh* getMessage() const; virtual DOMLocator* getLocation() const; virtual void* getRelatedException() const; virtual const XMLCh* getType() const; virtual void* getRelatedData() const; // Setters void setSeverity(const ErrorSeverity severity); void setMessage(const XMLCh* const message); void setLocation(DOMLocator* const location); void setAdoptLocation(const bool value); void setRelatedException(void* exc) const; void setType(const XMLCh* type); void setRelatedData(void* relatedData); private: /* Unimplemented constructors and operators */ /* Copy constructor */ DOMErrorImpl(const DOMErrorImpl&); /* Assignment operator */ DOMErrorImpl& operator=(const DOMErrorImpl&); protected: // ----------------------------------------------------------------------- // Private data members // // fAdoptLocation // Indicates whether we own the DOMLocator object or not. // // fSeverity // The type of the error. // // fMessage // The error message. // // fLocation // The location info of the error. // // fType // The type of the error. // // fRelatedData // The data related to this error. // // ----------------------------------------------------------------------- bool fAdoptLocation; ErrorSeverity fSeverity; const XMLCh* fMessage; DOMLocator* fLocation; const XMLCh* fType; void* fRelatedData; }; // --------------------------------------------------------------------------- // DOMErrorImpl: Getter methods // --------------------------------------------------------------------------- inline DOMError::ErrorSeverity DOMErrorImpl::getSeverity() const { return fSeverity; } inline const XMLCh* DOMErrorImpl::getMessage() const { return fMessage; } inline DOMLocator* DOMErrorImpl::getLocation() const { return fLocation; } inline void* DOMErrorImpl::getRelatedException() const { return 0; } inline const XMLCh* DOMErrorImpl::getType() const { return fType; } inline void* DOMErrorImpl::getRelatedData() const { return fRelatedData; } // --------------------------------------------------------------------------- // DOMErrorImpl: Setter methods // --------------------------------------------------------------------------- inline void DOMErrorImpl::setSeverity(const ErrorSeverity severity) { fSeverity = severity; } inline void DOMErrorImpl::setMessage(const XMLCh* const message) { fMessage = message; } inline void DOMErrorImpl::setAdoptLocation(const bool value) { fAdoptLocation = value; } inline void DOMErrorImpl::setType(const XMLCh* type) { fType = type; } inline void DOMErrorImpl::setRelatedData(void* relatedData) { fRelatedData = relatedData; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMConfigurationImpl.cpp0000644000175000017500000002617610523643534022724 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "DOMConfigurationImpl.hpp" #include "DOMStringListImpl.hpp" #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN const unsigned short DOMConfigurationImpl::fDEFAULT_VALUES = 0x2596; DOMConfigurationImpl::DOMConfigurationImpl(MemoryManager* const manager): featureValues(fDEFAULT_VALUES), fErrorHandler(0), fSchemaType(0), fSchemaLocation(0), fSupportedParameters(0), fMemoryManager(manager) { fSupportedParameters=new (fMemoryManager) DOMStringListImpl(17, fMemoryManager); fSupportedParameters->add(XMLUni::fgDOMErrorHandler); fSupportedParameters->add(XMLUni::fgDOMSchemaType); fSupportedParameters->add(XMLUni::fgDOMSchemaLocation); fSupportedParameters->add(XMLUni::fgDOMCanonicalForm); fSupportedParameters->add(XMLUni::fgDOMCDATASections); fSupportedParameters->add(XMLUni::fgDOMComments); fSupportedParameters->add(XMLUni::fgDOMDatatypeNormalization); fSupportedParameters->add(XMLUni::fgDOMWRTDiscardDefaultContent); fSupportedParameters->add(XMLUni::fgDOMEntities); fSupportedParameters->add(XMLUni::fgDOMInfoset); fSupportedParameters->add(XMLUni::fgDOMNamespaces); fSupportedParameters->add(XMLUni::fgDOMNamespaceDeclarations); fSupportedParameters->add(XMLUni::fgDOMNormalizeCharacters); fSupportedParameters->add(XMLUni::fgDOMSplitCDATASections); fSupportedParameters->add(XMLUni::fgDOMValidate); fSupportedParameters->add(XMLUni::fgDOMValidateIfSchema); fSupportedParameters->add(XMLUni::fgDOMElementContentWhitespace); } DOMConfigurationImpl::~DOMConfigurationImpl() { delete fSupportedParameters; } void DOMConfigurationImpl::setParameter(const XMLCh* name, const void* value) { if(!canSetParameter(name, value)) { throw DOMException(DOMException::NOT_SUPPORTED_ERR, 0, fMemoryManager); } if(XMLString::compareIStringASCII(name, XMLUni::fgDOMErrorHandler)==0) { fErrorHandler = (DOMErrorHandler*)value; } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMSchemaType)==0) { fSchemaType = (XMLCh*)value; } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMSchemaLocation)==0) { fSchemaLocation = (XMLCh*)value; } else { // canSetParameter above should take care of this case throw DOMException(DOMException::NOT_FOUND_ERR, 0, fMemoryManager); } } void DOMConfigurationImpl::setParameter(const XMLCh* name, bool value) { if(!canSetParameter(name, value)) { throw DOMException(DOMException::NOT_SUPPORTED_ERR, 0, fMemoryManager); } DOMConfigurationFeature whichFlag = getFeatureFlag(name); if(value) { featureValues |= whichFlag; } else { featureValues &= ~whichFlag; } } // -------------------------------------- // Getter Methods // -------------------------------------- const void* DOMConfigurationImpl::getParameter(const XMLCh* name) const { DOMConfigurationFeature whichFlag; try { whichFlag = getFeatureFlag(name); if(featureValues & whichFlag) { return (void*)true; } else { return (void*)false; } } catch (DOMException&) { // must not be a boolean parameter if(XMLString::compareIStringASCII(name, XMLUni::fgDOMErrorHandler)==0) { return fErrorHandler; } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMSchemaType)==0) { return fSchemaType; } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMSchemaLocation)==0) { return fSchemaLocation; } else { throw DOMException(DOMException::NOT_FOUND_ERR, 0, fMemoryManager); } } } // ----------------------------------------- // Query Methods // ----------------------------------------- bool DOMConfigurationImpl::canSetParameter(const XMLCh* name, const void* /*value*/) const { /** * canSetParameter(name, value) returns false in two conditions: * 1) if a [required] feature has no supporting code, then return false in * both the true and false outcomes (This is in order to be either fully * spec compliant, or not at all) * 2) if an [optional] feature has no supporting code, then return false **/ if(XMLString::compareIStringASCII(name, XMLUni::fgDOMErrorHandler)==0) { return true; // required // } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMSchemaType)==0) { return false; // optional // } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMSchemaLocation)==0) { return false; // optional // } return false; } bool DOMConfigurationImpl::canSetParameter(const XMLCh* name, bool booleanValue) const { /** * canSetParameter(name, value) returns false in two conditions: * 1) if a [required] feature has no supporting code, then return false in * both the true and false outcomes (This is in order to be either fully * spec compliant, or not at all) * 2) if an [optional] feature has no supporting code, then return false **/ DOMConfigurationFeature whichFlag = getFeatureFlag(name); switch (whichFlag) { case FEATURE_CANONICAL_FORM: if(booleanValue) return false; // optional // else return true; // required // case FEATURE_CDATA_SECTIONS: return true; case FEATURE_COMMENTS: return true; case FEATURE_DATATYPE_NORMALIZATION: if(booleanValue) return false; // required // else return true; // required // case FEATURE_DISCARD_DEFAULT_CONTENT: if(booleanValue) return false; // required // else return true; // required // case FEATURE_ENTITIES: if(booleanValue) return true; // required // else return true; // required // case FEATURE_INFOSET: if(booleanValue) return false; // required // else return true; // no effect// case FEATURE_NAMESPACES: return true; case FEATURE_NAMESPACE_DECLARATIONS: if(booleanValue) return true; // optional // else return false; // required // case FEATURE_NORMALIZE_CHARACTERS: if(booleanValue) return false; // optional // else return true; // required // case FEATURE_SPLIT_CDATA_SECTIONS: //we dont report an error in the false case so we cant claim we do it if(booleanValue) return false; // required // else return false; // required // case FEATURE_VALIDATE: if(booleanValue) return false; // optional // else return true; // required // case FEATURE_VALIDATE_IF_SCHEMA: if(booleanValue) return false; // optional // else return true; // required // case FEATURE_ELEMENT_CONTENT_WHITESPACE: if(booleanValue) return true; // required // else return false; // optional // } // should never be here return false; } const DOMStringList* DOMConfigurationImpl::getParameterNames() const { return fSupportedParameters; } // ------------------------------------------- // Impl methods // ------------------------------------------- DOMConfigurationImpl::DOMConfigurationFeature DOMConfigurationImpl::getFeatureFlag(const XMLCh* name) const { if(XMLString::compareIStringASCII(name, XMLUni::fgDOMCanonicalForm)==0) { return FEATURE_CANONICAL_FORM; } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMCDATASections )==0) { return FEATURE_CDATA_SECTIONS; } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMComments)==0) { return FEATURE_COMMENTS; } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMDatatypeNormalization)==0) { return FEATURE_DATATYPE_NORMALIZATION; } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMWRTDiscardDefaultContent)==0) { return FEATURE_DISCARD_DEFAULT_CONTENT; } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMEntities)==0) { return FEATURE_ENTITIES; } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMInfoset)==0) { return FEATURE_INFOSET; } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMNamespaces)==0) { return FEATURE_NAMESPACES; } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMNamespaceDeclarations)==0) { return FEATURE_NAMESPACE_DECLARATIONS; } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMNormalizeCharacters)==0) { return FEATURE_NORMALIZE_CHARACTERS; } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMSplitCDATASections)==0) { return FEATURE_SPLIT_CDATA_SECTIONS; } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMValidate)==0) { return FEATURE_VALIDATE; } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMValidateIfSchema)==0) { return FEATURE_VALIDATE_IF_SCHEMA; } else if (XMLString::compareIStringASCII(name, XMLUni::fgDOMElementContentWhitespace)==0) { return FEATURE_ELEMENT_CONTENT_WHITESPACE; } else { throw DOMException(DOMException::NOT_FOUND_ERR, 0, fMemoryManager); } } DOMErrorHandler* DOMConfigurationImpl::getErrorHandler() const { return fErrorHandler; } const XMLCh* DOMConfigurationImpl::getSchemaType() const { return fSchemaType; } const XMLCh* DOMConfigurationImpl::getSchemaLocation() const { return fSchemaLocation; } void DOMConfigurationImpl::setErrorHandler(DOMErrorHandler *erHandler) { fErrorHandler = erHandler; } void DOMConfigurationImpl::setSchemaType(const XMLCh* st) { fSchemaType = st; } void DOMConfigurationImpl::setSchemaLocation(const XMLCh* sl) { fSchemaLocation = sl; } XERCES_CPP_NAMESPACE_END /** * End of file DOMConfigurationImpl.cpp */ xerces-c-3.1.1/src/xercesc/dom/impl/DOMRangeImpl.cpp0000644000175000017500000017275611037122704021147 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMRangeImpl.cpp 676911 2008-07-15 13:27:32Z amassari $ */ #include "DOMRangeImpl.hpp" #include "DOMDocumentImpl.hpp" #include "DOMDocumentFragmentImpl.hpp" #include "DOMCommentImpl.hpp" #include "DOMProcessingInstructionImpl.hpp" #include "DOMCasts.hpp" #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN //--------------------- // C'tor and D'tor //--------------------- DOMRangeImpl::DOMRangeImpl(DOMDocument* doc, MemoryManager* const manager) : fStartContainer(doc), fStartOffset(0), fEndContainer(doc), fEndOffset(0), fCollapsed(true), fDocument(doc), fDetached(false), fRemoveChild(0), fMemoryManager(manager) { } DOMRangeImpl::DOMRangeImpl(const DOMRangeImpl& other) : DOMRange(other), fStartContainer(other.fStartContainer), fStartOffset(other.fStartOffset), fEndContainer(other.fEndContainer), fEndOffset(other.fEndOffset), fCollapsed(other.fCollapsed), fDocument(other.fDocument), fDetached(other.fDetached), fRemoveChild(other.fRemoveChild), fMemoryManager(other.fMemoryManager) { } DOMRangeImpl::~DOMRangeImpl() { } //------------------------------- // Public getter functions //------------------------------- DOMNode* DOMRangeImpl::getStartContainer() const { if (fDetached) { throw DOMException( DOMException::INVALID_STATE_ERR, 0, fMemoryManager); } return fStartContainer; } XMLSize_t DOMRangeImpl::getStartOffset() const { if (fDetached) { throw DOMException( DOMException::INVALID_STATE_ERR, 0, fMemoryManager); } return fStartOffset; } DOMNode* DOMRangeImpl::getEndContainer() const { if (fDetached) { throw DOMException( DOMException::INVALID_STATE_ERR, 0, fMemoryManager); } return fEndContainer; } XMLSize_t DOMRangeImpl::getEndOffset() const { if (fDetached) { throw DOMException( DOMException::INVALID_STATE_ERR, 0, fMemoryManager); } return fEndOffset; } bool DOMRangeImpl::getCollapsed() const { if (fDetached) { throw DOMException( DOMException::INVALID_STATE_ERR, 0, fMemoryManager); } return ((fStartContainer == fEndContainer) && (fStartOffset == fEndOffset)); } //------------------------------- // Public setter functions //------------------------------- void DOMRangeImpl::setStartContainer(const DOMNode* node) { if (fDetached) { throw DOMException( DOMException::INVALID_STATE_ERR, 0, fMemoryManager); } fStartContainer = (DOMNode*) node; } void DOMRangeImpl::setStartOffset(XMLSize_t offset) { if (fDetached) { throw DOMException( DOMException::INVALID_STATE_ERR, 0, fMemoryManager); } fStartOffset = offset; } void DOMRangeImpl::setEndContainer(const DOMNode* node) { if (fDetached) { throw DOMException( DOMException::INVALID_STATE_ERR, 0, fMemoryManager); } fEndContainer = (DOMNode*) node; } void DOMRangeImpl::setEndOffset(XMLSize_t offset) { if (fDetached) { throw DOMException( DOMException::INVALID_STATE_ERR, 0, fMemoryManager); } fEndOffset = offset; } void DOMRangeImpl::setStart(const DOMNode* refNode, XMLSize_t offset) { validateNode(refNode); checkIndex(refNode, offset); // error if not the same owner document if (fDocument != refNode->getOwnerDocument()) { if ( refNode != fDocument ) { collapse(true); //collapse the range positions to start fCollapsed = true; throw DOMException( DOMException::WRONG_DOCUMENT_ERR, 0, fMemoryManager); } } fStartContainer = (DOMNode*) refNode; fStartOffset = offset; // they may be of same document, but not same root container // collapse if not the same root container if (!commonAncestorOf(refNode, fEndContainer)) collapse(true); //compare the start and end boundary point //collapse if start point is after the end point if(compareBoundaryPoints(DOMRange::END_TO_START, this) == 1) collapse(true); //collapse the range positions to start else fCollapsed = false; } void DOMRangeImpl::setEnd(const DOMNode* refNode, XMLSize_t offset) { validateNode(refNode); checkIndex(refNode, offset); // error if not the same owner document if (fDocument != refNode->getOwnerDocument()) { if ( refNode != fDocument ) { collapse(false); //collapse the range positions to end fCollapsed = true; throw DOMException( DOMException::WRONG_DOCUMENT_ERR, 0, fMemoryManager); } } fEndContainer = (DOMNode*) refNode; fEndOffset = offset; // they may be of same document, but not same root container // collapse if not the same root container if (!commonAncestorOf(refNode, fStartContainer)) collapse(false); //compare the start and end boundary point //collapse if start point is after the end point if(compareBoundaryPoints(DOMRange::END_TO_START, this) == 1) collapse(false); //collapse the range positions to end else fCollapsed = false; } void DOMRangeImpl::setStartBefore(const DOMNode* refNode) { if( fDetached) { throw DOMException( DOMException::INVALID_STATE_ERR, 0, fMemoryManager); } if ( !hasLegalRootContainer(refNode) || !isLegalContainedNode(refNode)) { throw DOMRangeException( DOMRangeException::INVALID_NODE_TYPE_ERR, 0, fMemoryManager); } // error if not the same owner document if (fDocument != refNode->getOwnerDocument()) { if ( refNode != fDocument ) { collapse(true); //collapse the range positions to start fCollapsed = true; throw DOMException( DOMException::WRONG_DOCUMENT_ERR, 0, fMemoryManager); } } fStartContainer = refNode->getParentNode(); XMLSize_t i = 0; for (DOMNode* n = (DOMNode*) refNode; n!=0; n = n->getPreviousSibling()) { i++; } if (i == 0) fStartOffset = 0; else fStartOffset = i-1; // they may be of same document, but not same root container // collapse if not the same root container if (!commonAncestorOf(refNode, fEndContainer)) collapse(true); //compare the start and end boundary point //collapse if start point is after the end point if(compareBoundaryPoints(DOMRange::END_TO_START, this) == 1) collapse(true); //collapse the range positions to start else fCollapsed = false; } void DOMRangeImpl::setStartAfter(const DOMNode* refNode) { if( fDetached) { throw DOMException( DOMException::INVALID_STATE_ERR, 0, fMemoryManager); } if ( !hasLegalRootContainer(refNode) || !isLegalContainedNode(refNode)) { throw DOMRangeException( DOMRangeException::INVALID_NODE_TYPE_ERR, 0, fMemoryManager); } // error if not the same owner document if (fDocument != refNode->getOwnerDocument()) { if ( refNode != fDocument ) { collapse(true); //collapse the range positions to start fCollapsed = true; throw DOMException( DOMException::WRONG_DOCUMENT_ERR, 0, fMemoryManager); } } fStartContainer = refNode->getParentNode(); XMLSize_t i = 0; for (DOMNode* n = (DOMNode*) refNode; n!=0; n = n->getPreviousSibling()) { i++; } fStartOffset = i; // they may be of same document, but not same root container // collapse if not the same root container if (!commonAncestorOf(refNode, fEndContainer)) collapse(true); //compare the start and end boundary point //collapse if start point is after the end point if(compareBoundaryPoints(DOMRange::END_TO_START, this) == 1) collapse(true); //collapse the range positions to start else fCollapsed = false; } void DOMRangeImpl::setEndBefore(const DOMNode* refNode) { if( fDetached) { throw DOMException( DOMException::INVALID_STATE_ERR, 0, fMemoryManager); } if ( !hasLegalRootContainer(refNode) || !isLegalContainedNode(refNode)) { throw DOMRangeException( DOMRangeException::INVALID_NODE_TYPE_ERR, 0, fMemoryManager); } // error if not the same owner document if (fDocument != refNode->getOwnerDocument()) { if ( refNode != fDocument ) { collapse(false); //collapse the range positions to end fCollapsed = true; throw DOMException( DOMException::WRONG_DOCUMENT_ERR, 0, fMemoryManager); } } fEndContainer = refNode->getParentNode(); XMLSize_t i = 0; for (DOMNode* n = (DOMNode*) refNode; n!=0; n = n->getPreviousSibling(), i++) ; if (i< 1) fEndOffset = 0; else fEndOffset = i-1; // they may be of same document, but not same root container // collapse if not the same root container if (!commonAncestorOf(refNode, fStartContainer)) collapse(false); //compare the start and end boundary point //collapse if start point is after the end point if(compareBoundaryPoints(DOMRange::END_TO_START, this) == 1) collapse(false); //collapse the range positions to end else fCollapsed = false; } void DOMRangeImpl::setEndAfter(const DOMNode* refNode) { if( fDetached) { throw DOMException( DOMException::INVALID_STATE_ERR, 0, fMemoryManager); } if ( !hasLegalRootContainer(refNode) || !isLegalContainedNode(refNode)) { throw DOMRangeException( DOMRangeException::INVALID_NODE_TYPE_ERR, 0, fMemoryManager); } // error if not the same owner document if (fDocument != refNode->getOwnerDocument()) { if ( refNode != fDocument ) { collapse(false); //collapse the range positions to end fCollapsed = true; throw DOMException( DOMException::WRONG_DOCUMENT_ERR, 0, fMemoryManager); } } fEndContainer = refNode->getParentNode(); XMLSize_t i = 0; for (DOMNode* n = (DOMNode*) refNode; n!=0; n = n->getPreviousSibling(), i++) ; if (i ==0) fEndOffset = 0; else fEndOffset = i; // they may be of same document, but not same root container // collapse if not the same root container if (!commonAncestorOf(refNode, fStartContainer)) collapse(false); //compare the start and end boundary point //collapse if start point is after the end point if(compareBoundaryPoints(DOMRange::END_TO_START, this) == 1) collapse(false); //collapse the range positions to end else fCollapsed = false; } //------------------------------- // Public Misc. functions //------------------------------- void DOMRangeImpl::detach() { if( fDetached) { throw DOMException( DOMException::INVALID_STATE_ERR, 0, fMemoryManager); } ((DOMDocumentImpl *)fDocument)->removeRange(this); fDetached = true; //0ify nodes fStartContainer = 0; fStartOffset = 0; fEndContainer = 0; fEndOffset = 0; fCollapsed = true; fRemoveChild = 0; } void DOMRangeImpl::collapse(bool toStart) { if( fDetached) { throw DOMException( DOMException::INVALID_STATE_ERR, 0, fMemoryManager); } if (toStart) { fEndContainer = fStartContainer; fEndOffset = fStartOffset; } else { fStartContainer = fEndContainer; fStartOffset = fEndOffset; } fCollapsed = true; } void DOMRangeImpl::selectNode(const DOMNode* refNode) { validateNode(refNode); if ( !isLegalContainedNode(refNode)) { throw DOMRangeException( DOMRangeException::INVALID_NODE_TYPE_ERR, 0, fMemoryManager); } //First check for the text type node short type = refNode->getNodeType(); if((type == DOMNode::TEXT_NODE || type == DOMNode::CDATA_SECTION_NODE || type == DOMNode::COMMENT_NODE || type == DOMNode::PROCESSING_INSTRUCTION_NODE)) { //The node itself is the container. fStartContainer = (DOMNode*) refNode; fEndContainer = (DOMNode*) refNode; //Select all the contents of the node fStartOffset = 0; if (type == DOMNode::PROCESSING_INSTRUCTION_NODE) fEndOffset = XMLString::stringLen(((DOMProcessingInstruction*)refNode)->getData()); else fEndOffset = ((DOMText *)refNode)->getLength(); return; } DOMNode* parent = refNode->getParentNode(); if (parent != 0 ) // REVIST: what to do if it IS 0? { fStartContainer = parent; fEndContainer = parent; XMLSize_t i = 0; for (DOMNode* n = parent->getFirstChild(); n!=0 && n!=refNode; n = n->getNextSibling()) { i++; } fStartOffset = i; fEndOffset = fStartOffset+1; } } void DOMRangeImpl::selectNodeContents(const DOMNode* node) { validateNode(node); fStartContainer = (DOMNode*) node; fEndContainer = (DOMNode*) node; fStartOffset = 0; short type = node->getNodeType(); if((type == DOMNode::TEXT_NODE || type == DOMNode::CDATA_SECTION_NODE || type == DOMNode::COMMENT_NODE)) { fEndOffset = ((DOMText *)node)->getLength(); return; } if (type == DOMNode::PROCESSING_INSTRUCTION_NODE) { fEndOffset = XMLString::stringLen(((DOMProcessingInstruction*)node)->getData()); return; } DOMNode* first = node->getFirstChild(); if (first == 0) { fEndOffset = 0; return; } XMLSize_t i = 0; for (DOMNode* n = first; n!=0; n = n->getNextSibling()) { i++; } fEndOffset = i; } void DOMRangeImpl::surroundContents(DOMNode* newParent) { if (newParent==0) return; //check for elimination criteria if( fDetached) { throw DOMException( DOMException::INVALID_STATE_ERR, 0, fMemoryManager); } if (newParent->getOwnerDocument() !=fDocument) { throw DOMException( DOMException::WRONG_DOCUMENT_ERR, 0, fMemoryManager); } int type = newParent->getNodeType(); if ( !isLegalContainedNode(newParent) || type == DOMNode::DOCUMENT_TYPE_NODE) { throw DOMRangeException( DOMRangeException::INVALID_NODE_TYPE_ERR, 0, fMemoryManager); } DOMNode* realStart = fStartContainer; DOMNode* realEnd = fEndContainer; type = fStartContainer->getNodeType(); if((type == DOMNode::TEXT_NODE || type == DOMNode::CDATA_SECTION_NODE || type == DOMNode::COMMENT_NODE || type == DOMNode::PROCESSING_INSTRUCTION_NODE)) { realStart = fStartContainer->getParentNode(); } type = fEndContainer->getNodeType(); if((type == DOMNode::TEXT_NODE || type == DOMNode::CDATA_SECTION_NODE || type == DOMNode::COMMENT_NODE || type == DOMNode::PROCESSING_INSTRUCTION_NODE)) { realEnd = fEndContainer->getParentNode(); } if (realStart != realEnd) { throw DOMRangeException( DOMRangeException::BAD_BOUNDARYPOINTS_ERR, 0, fMemoryManager); } DOMDocumentFragment* frag = (DOMDocumentFragment*) extractContents(); insertNode(newParent); newParent->appendChild(frag); selectNode(newParent); } short DOMRangeImpl::compareBoundaryPoints(DOMRange::CompareHow how, const DOMRange* srcRange) const { if (fDocument != ((DOMRangeImpl*)srcRange)->fDocument) { throw DOMException( DOMException::WRONG_DOCUMENT_ERR, 0, fMemoryManager); } if( fDetached) { throw DOMException( DOMException::INVALID_STATE_ERR, 0, fMemoryManager); } DOMNode* pointA; DOMNode* pointB; XMLSize_t offsetA, offsetB; switch (how) { case (DOMRange::START_TO_START) : pointB = srcRange->getStartContainer(); pointA = fStartContainer; offsetB = srcRange->getStartOffset(); offsetA = fStartOffset; break; case (DOMRange::START_TO_END) : pointB = srcRange->getStartContainer(); pointA = fEndContainer; offsetB = srcRange->getStartOffset(); offsetA = fEndOffset; break; case (DOMRange::END_TO_START) : pointB = srcRange->getEndContainer(); pointA = fStartContainer; offsetB = srcRange->getEndOffset(); offsetA = fStartOffset; break; case (DOMRange::END_TO_END) : pointB = srcRange->getEndContainer(); pointA = fEndContainer; offsetB = srcRange->getEndOffset(); offsetA = fEndOffset; break; default: throw DOMException( DOMException::INVALID_STATE_ERR, 0, fMemoryManager); } // case 1: same container if (pointA == pointB) { if (offsetA < offsetB) return -1; //A before B if (offsetA == offsetB) return 0; //A equal to B return 1; // A after B } // case 2: Child C of container A is ancestor of B for (DOMNode* node = pointA->getFirstChild(); node != 0; node=node->getNextSibling()) { if (isAncestorOf(node, pointB)) { XMLSize_t index = indexOf(node, pointA); if (offsetA <= index) return -1; return 1; } } // case 3: Child C of container B is ancestor of A for (DOMNode* nd = pointB->getFirstChild(); nd != 0; nd=nd->getNextSibling()) { if (isAncestorOf(nd, pointA)) { XMLSize_t index = indexOf(nd, pointB); if (index < offsetB ) return -1; return 1; //B strictly before A } } // case 4: preorder traversal of context tree. // Instead of literally walking the context tree in pre-order, // we use relative node depth walking which is usually faster int depthDiff = 0; DOMNode* n = 0; for ( n = pointB; n != 0; n = n->getParentNode() ) depthDiff++; for ( n = pointA; n != 0; n = n->getParentNode() ) depthDiff--; while (depthDiff > 0) { pointB = pointB->getParentNode(); depthDiff--; } while (depthDiff < 0) { pointA = pointA->getParentNode(); depthDiff++; } for (DOMNode* pB = pointB->getParentNode(), *pA = pointA->getParentNode(); pB != pA; pB = pB->getParentNode(), pA = pA->getParentNode() ) { pointB = pB; pointA = pA; } for ( n = pointB->getNextSibling(); n != 0; n = n->getNextSibling() ) { if (n == pointA) { return 1; } } return -1; } void DOMRangeImpl:: deleteContents() { traverseContents(DELETE_CONTENTS); } DOMDocumentFragment* DOMRangeImpl::extractContents() { checkReadOnly(fStartContainer, fEndContainer, fStartOffset, fEndOffset); return traverseContents(EXTRACT_CONTENTS); } DOMDocumentFragment* DOMRangeImpl::cloneContents() const { // cast off const. return ((DOMRangeImpl *)this)->traverseContents(CLONE_CONTENTS); } void DOMRangeImpl::insertNode(DOMNode* newNode) { if (newNode == 0) return; //don't have to do anything if( fDetached) { throw DOMException( DOMException::INVALID_STATE_ERR, 0, fMemoryManager); } int type = newNode->getNodeType(); if (type == DOMNode::ATTRIBUTE_NODE || type == DOMNode::ENTITY_NODE || type == DOMNode::NOTATION_NODE || type == DOMNode::DOCUMENT_NODE) { throw DOMRangeException( DOMRangeException::INVALID_NODE_TYPE_ERR, 0, fMemoryManager); } // Prevent cycles in the tree. //isKidOK() is not checked here as its taken care by insertBefore() function if (isAncestorOf( newNode, fStartContainer)) { throw DOMException( DOMException::HIERARCHY_REQUEST_ERR, 0, fMemoryManager); } for (DOMNode* aNode = fStartContainer; aNode!=0; aNode = aNode->getParentNode()) { if (castToNodeImpl(newNode)->isReadOnly()) { throw DOMException( DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, fMemoryManager); } } if (fDocument != newNode->getOwnerDocument()) { throw DOMException( DOMException::WRONG_DOCUMENT_ERR, 0, fMemoryManager); } DOMNode* parent; DOMNode* next; type = fStartContainer->getNodeType(); if((type == DOMNode::TEXT_NODE || type == DOMNode::CDATA_SECTION_NODE || type == DOMNode::COMMENT_NODE || type == DOMNode::PROCESSING_INSTRUCTION_NODE)) { //set 'parent' and 'next' here parent = fStartContainer->getParentNode(); //split the text nodes if (fStartOffset > 0) { if (type == DOMNode::COMMENT_NODE) ((DOMCommentImpl*)fStartContainer)->splitText(fStartOffset); else if (type == DOMNode::PROCESSING_INSTRUCTION_NODE) ((DOMProcessingInstructionImpl*)fStartContainer)->splitText(fStartOffset); else ((DOMText*)fStartContainer)->splitText(fStartOffset); } //update the new start information later. After inserting the first newNode if (fStartOffset == 0) next = fStartContainer; else next = fStartContainer->getNextSibling(); } // end of text handling else { parent = fStartContainer; next = fStartContainer->getFirstChild(); for(XMLSize_t i = 0; (i < fStartOffset) && (next != 0); i++) { next=next->getNextSibling(); } } if (parent != 0) { if (next != 0) parent->insertBefore(newNode, next); else parent->appendChild(newNode); } } DOMRange* DOMRangeImpl::cloneRange() const { if( fDetached) { throw DOMException( DOMException::INVALID_STATE_ERR, 0, fMemoryManager); } DOMRange* range = fDocument->createRange(); range->setStart(fStartContainer, fStartOffset); range->setEnd(fEndContainer, fEndOffset); return range; } const XMLCh* DOMRangeImpl::toString() const { if( fDetached) { throw DOMException( DOMException::INVALID_STATE_ERR, 0, fMemoryManager); } if ((fStartContainer == fEndContainer) && (fEndOffset == fStartOffset)) return XMLUni::fgZeroLenString; DOMNode* node = fStartContainer; DOMNode* stopNode = fEndContainer; XMLBuffer retStringBuf(1023, ((DOMDocumentImpl *)fDocument)->getMemoryManager()); short type = fStartContainer->getNodeType(); if((type == DOMNode::TEXT_NODE || type == DOMNode::CDATA_SECTION_NODE || type == DOMNode::COMMENT_NODE || type == DOMNode::PROCESSING_INSTRUCTION_NODE)) { if (fStartContainer == fEndContainer) { XMLCh* tempString; XMLCh temp[4000]; if ((fEndOffset-fStartOffset) >= 3999) tempString = (XMLCh*) fMemoryManager->allocate ( (fEndOffset - fStartOffset + 1) * sizeof(XMLCh) );//new XMLCh[fEndOffset-fStartOffset+1]; else tempString = temp; XMLString::subString(tempString, fStartContainer->getNodeValue(), fStartOffset, fEndOffset, ((DOMDocumentImpl *)fDocument)->getMemoryManager()); const XMLCh* retString = ((DOMDocumentImpl *)fDocument)->getPooledString(tempString); if ((fEndOffset-fStartOffset) >= 3999) fMemoryManager->deallocate(tempString);//delete[] tempString; return retString; } else { XMLSize_t length = XMLString::stringLen(fStartContainer->getNodeValue()); if (length != fStartOffset) { XMLCh* tempString; XMLCh temp[4000]; if ((length - fStartOffset) >= 3999) tempString = (XMLCh*) fMemoryManager->allocate ( (length - fStartOffset + 1) * sizeof(XMLCh) );//new XMLCh[length - fStartOffset+1]; else tempString = temp; XMLString::subString(tempString, fStartContainer->getNodeValue(), fStartOffset, length, ((DOMDocumentImpl *)fDocument)->getMemoryManager()); retStringBuf.append(tempString); if ((length - fStartOffset) >= 3999) fMemoryManager->deallocate(tempString);//delete[] tempString; } node = nextNode(node, true); } }else { //fStartContainer is not a TextNode node=node->getFirstChild(); if (fStartOffset>0) { //find a first node within a range, specified by fStartOffset XMLSize_t counter = 0; while (countergetNextSibling(); counter++; } } if (node == 0) { node = nextNode(fStartContainer,false); } } type = fEndContainer->getNodeType(); if((type != DOMNode::TEXT_NODE && type != DOMNode::CDATA_SECTION_NODE && type != DOMNode::COMMENT_NODE && type != DOMNode::PROCESSING_INSTRUCTION_NODE)) { int i=(int)fEndOffset; stopNode = fEndContainer->getFirstChild(); while( i>0 && stopNode!=0 ){ --i; stopNode = stopNode->getNextSibling(); } if ( stopNode == 0 ) stopNode = nextNode( fEndContainer, false ); } while (node != stopNode) { //look into all kids of the Range if (node == 0) break; type = node->getNodeType(); if((type == DOMNode::TEXT_NODE || type == DOMNode::CDATA_SECTION_NODE || type == DOMNode::COMMENT_NODE || type == DOMNode::PROCESSING_INSTRUCTION_NODE)) { retStringBuf.append(node->getNodeValue()); } node = nextNode(node, true); } type = fEndContainer->getNodeType(); if((type == DOMNode::TEXT_NODE || type == DOMNode::CDATA_SECTION_NODE || type == DOMNode::COMMENT_NODE || type == DOMNode::PROCESSING_INSTRUCTION_NODE)) { if (fEndOffset != 0) { XMLCh* tempString; XMLCh temp[4000]; if (fEndOffset >= 3999) tempString = (XMLCh*) fMemoryManager->allocate ( (fEndOffset+1) * sizeof(XMLCh) );//new XMLCh[fEndOffset+1]; else tempString = temp; XMLString::subString(tempString, fEndContainer->getNodeValue(), 0, fEndOffset, ((DOMDocumentImpl *)fDocument)->getMemoryManager()); retStringBuf.append(tempString); if (fEndOffset >= 3999) fMemoryManager->deallocate(tempString);//delete[] tempString; } } return ((DOMDocumentImpl *)fDocument)->getPooledString(retStringBuf.getRawBuffer()); } DOMDocument* DOMRangeImpl::getDocument() { return fDocument; } const DOMNode* DOMRangeImpl::getCommonAncestorContainer() const { return commonAncestorOf(fStartContainer, fEndContainer); } void DOMRangeImpl::release() { detach(); // for performance reason, do not recycle pointer // chance that this is allocated again and again is not usual } //--------------------- //private functions //--------------------- bool DOMRangeImpl::isValidAncestorType(const DOMNode* node) const { for (DOMNode* aNode = (DOMNode*) node; aNode!=0; aNode = aNode->getParentNode()) { short type = aNode->getNodeType(); if ( type == DOMNode::ENTITY_NODE || type == DOMNode::NOTATION_NODE || type == DOMNode::DOCUMENT_TYPE_NODE) return false; } return true; } bool DOMRangeImpl::isAncestorOf(const DOMNode* a, const DOMNode* b) { for (DOMNode* node = (DOMNode*) b; node != 0; node=node->getParentNode()) { if (node == a) return true; } return false; } bool DOMRangeImpl::hasLegalRootContainer(const DOMNode* node) const { if ( node==0 ) return false; DOMNode* rootContainer = (DOMNode*)node; for (; rootContainer->getParentNode()!=0; rootContainer = rootContainer->getParentNode()) ; switch( rootContainer->getNodeType() ) { case DOMNode::ATTRIBUTE_NODE: case DOMNode::DOCUMENT_NODE: case DOMNode::DOCUMENT_FRAGMENT_NODE: return true; default: return false; } } bool DOMRangeImpl::isLegalContainedNode(const DOMNode* node ) const { if ( node==0 ) return false; switch( node->getNodeType() ) { case DOMNode::DOCUMENT_NODE: case DOMNode::DOCUMENT_FRAGMENT_NODE: case DOMNode::ATTRIBUTE_NODE: case DOMNode::ENTITY_NODE: case DOMNode::NOTATION_NODE: return false; default: return true; } } XMLSize_t DOMRangeImpl::indexOf(const DOMNode* child, const DOMNode* parent) const { XMLSize_t i = 0; if (child->getParentNode() != parent) return (XMLSize_t)-1; for(DOMNode* node = child->getPreviousSibling(); node!= 0; node=node->getPreviousSibling()) { i++; } return i; } void DOMRangeImpl::validateNode(const DOMNode* node) const { if( fDetached) { throw DOMException( DOMException::INVALID_STATE_ERR, 0, fMemoryManager); } if ( !isValidAncestorType(node)) { throw DOMRangeException(DOMRangeException::INVALID_NODE_TYPE_ERR, 0, fMemoryManager); } } const DOMNode* DOMRangeImpl::commonAncestorOf(const DOMNode* pointA, const DOMNode* pointB) const { if (fDetached) throw DOMException(DOMException::INVALID_STATE_ERR, 0, fMemoryManager); //if the containers are same then it itself is its common ancestor. if (pointA == pointB) return pointA; typedef RefVectorOf VectorNodes; VectorNodes startV(1, false, ((DOMDocumentImpl *)fDocument)->getMemoryManager()); DOMNode* node; for (node=(DOMNode*)pointA; node != 0; node=node->getParentNode()) { startV.addElement(node); } VectorNodes endV(1, false, ((DOMDocumentImpl *)fDocument)->getMemoryManager()); for (node=(DOMNode*)pointB; node != 0; node=node->getParentNode()) { endV.addElement(node); } XMLSize_t s = startV.size(); XMLSize_t e = endV.size(); DOMNode* commonAncestor = 0; while (s>0 && e>0) { if (startV.elementAt(s-1) == endV.elementAt(e-1)) { commonAncestor = startV.elementAt(s-1); } else break; --s; --e; } return commonAncestor; } void DOMRangeImpl::checkIndex(const DOMNode* node, XMLSize_t offset) const { short type = node->getNodeType(); if((type == DOMNode::TEXT_NODE || type == DOMNode::CDATA_SECTION_NODE || type == DOMNode::COMMENT_NODE || type == DOMNode::PROCESSING_INSTRUCTION_NODE)) { if (offset > XMLString::stringLen(node->getNodeValue())) throw DOMException( DOMException::INDEX_SIZE_ERR, 0, fMemoryManager ); else return; } DOMNode* child = node->getFirstChild(); XMLSize_t i = 0; for (; child != 0; i++) { child = child->getNextSibling(); } if (i < offset) { throw DOMException( DOMException::INDEX_SIZE_ERR, 0, fMemoryManager ); } } DOMNode* DOMRangeImpl::nextNode(const DOMNode* node, bool visitChildren) const { if (node == 0) return 0; DOMNode* result; if (visitChildren) { result = node->getFirstChild(); if (result != 0) { return result; } } // if hasSibling, return sibling result = node->getNextSibling(); if (result != 0) { return result; } // return parent's 1st sibling. DOMNode* parent = node->getParentNode(); while ( (parent != 0) && (parent != fDocument) ) { result = parent->getNextSibling(); if (result != 0) { return result; } else { parent = parent->getParentNode(); } } // end of list, return 0 return 0; } /** This is the master routine invoked to visit the nodes * selected by this range. For each such node, different * actions are taken depending on the value of the TraversalType argument. */ DOMDocumentFragment* DOMRangeImpl::traverseContents(TraversalType how) { if (fDetached) throw DOMException(DOMException::INVALID_STATE_ERR, 0, fMemoryManager); if (fStartContainer == 0 || fEndContainer == 0) { return 0; // REVIST: Throw exception? } /* Traversal is accomplished by first determining the relationship between the endpoints of the range. For each of four significant relationships, we will delegate the traversal call to a method that can make appropriate assumptions. */ // case 1: same container if ( fStartContainer == fEndContainer ) return traverseSameContainer( how ); // case 2: Child C of start container is ancestor of end container // This can be quickly tested by walking the parent chain of // end container int endContainerDepth = 0; for ( DOMNode* c = fEndContainer, *p = c->getParentNode(); p != 0; c = p, p = p->getParentNode()) { if (p == fStartContainer) return traverseCommonStartContainer( c, how ); ++endContainerDepth; } // case 3: Child C of end container is ancestor of start container // This can be quickly tested by walking the parent chain of A int startContainerDepth = 0; for ( DOMNode* c2 = fStartContainer, *p2 = c2->getParentNode(); p2 != 0; c2 = p2, p2 = p2->getParentNode()) { if (p2 == fEndContainer) return traverseCommonEndContainer( c2, how ); ++startContainerDepth; } // case 4: There is a common ancestor container. Find the // ancestor siblings that are children of that container. int depthDiff = startContainerDepth - endContainerDepth; DOMNode* startNode = fStartContainer; while (depthDiff > 0) { startNode = startNode->getParentNode(); depthDiff--; } DOMNode* endNode = fEndContainer; while (depthDiff < 0) { endNode = endNode->getParentNode(); depthDiff++; } // ascend the ancestor hierarchy until we have a common parent. for( DOMNode* sp = startNode->getParentNode(), *ep = endNode->getParentNode(); sp!=ep; sp = sp->getParentNode(), ep = ep->getParentNode() ) { startNode = sp; endNode = ep; } return traverseCommonAncestors( startNode, endNode, how ); } /** * Visits the nodes selected by this range when we know * a-priori that the start and end containers are the same. * */ DOMDocumentFragment* DOMRangeImpl::traverseSameContainer( int how ) { DOMDocumentFragment* frag = 0; if ( how!=DELETE_CONTENTS) frag = fDocument->createDocumentFragment(); // If selection is empty, just return the fragment if ( fStartOffset==fEndOffset ) return frag; DOMNode* cloneCurrent = 0; // Text node needs special case handling short type = fStartContainer->getNodeType(); if((type == DOMNode::TEXT_NODE || type == DOMNode::CDATA_SECTION_NODE || type == DOMNode::COMMENT_NODE || type == DOMNode::PROCESSING_INSTRUCTION_NODE)) { cloneCurrent = fStartContainer->cloneNode(false); if (fEndOffset == fStartOffset) { cloneCurrent->setNodeValue(XMLUni::fgZeroLenString); } else { XMLCh* tempString; XMLCh temp[4000]; if (fEndOffset >= 3999) tempString = (XMLCh*) fMemoryManager->allocate ( (fEndOffset+1) * sizeof(XMLCh) );//new XMLCh[fEndOffset+1]; else tempString = temp; XMLString::subString(tempString, cloneCurrent->getNodeValue(), fStartOffset, fEndOffset, ((DOMDocumentImpl *)fDocument)->getMemoryManager()); cloneCurrent->setNodeValue(((DOMDocumentImpl *)fDocument)->getPooledString(tempString)); if (fEndOffset >= 3999) fMemoryManager->deallocate(tempString);//delete[] tempString; } // set the original text node to its new value if ( how != CLONE_CONTENTS ) { if(type == DOMNode::PROCESSING_INSTRUCTION_NODE) { ((DOMProcessingInstructionImpl*)fStartContainer)->deleteData(fStartOffset, fEndOffset-fStartOffset); } else ((DOMCharacterData*)fStartContainer)->deleteData(fStartOffset, fEndOffset-fStartOffset); } if ( how != DELETE_CONTENTS) frag->appendChild(cloneCurrent); } else { // Copy nodes between the start/end offsets. DOMNode* n = getSelectedNode( fStartContainer, (int)fStartOffset ); int cnt = (int)fEndOffset - (int)fStartOffset; while( cnt > 0 && n) { DOMNode* sibling = n->getNextSibling(); DOMNode* xferNode = traverseFullySelected( n, how ); if ( frag!=0 ) frag->appendChild( xferNode ); --cnt; n = sibling; } } // Nothing is partially selected, so collapse to start point if ( how != CLONE_CONTENTS ) collapse(true); return frag; } /** * Visits the nodes selected by this range when we know * a-priori that the start and end containers are not the * same, but the start container is an ancestor of the end container * */ DOMDocumentFragment* DOMRangeImpl::traverseCommonStartContainer( DOMNode*endAncestor, int how ) { DOMDocumentFragment* frag = 0; if ( how!=DELETE_CONTENTS) frag = fDocument->createDocumentFragment(); DOMNode*n = traverseRightBoundary( endAncestor, how ); if ( frag!=0 ) frag->appendChild( n ); XMLSize_t endIdx = indexOf( endAncestor, fStartContainer ); if ( endIdx <= fStartOffset ) { // Collapse to just before the endAncestor, which // is partially selected. if ( how != CLONE_CONTENTS ) { setEndBefore( endAncestor ); collapse( false ); } return frag; } n = endAncestor->getPreviousSibling(); int cnt = (int)endIdx - (int)fStartOffset; while( cnt > 0 ) { DOMNode* sibling = n->getPreviousSibling(); DOMNode* xferNode = traverseFullySelected( n, how ); if ( frag!=0 ) frag->insertBefore( xferNode, frag->getFirstChild() ); --cnt; n = sibling; } // Collapse to just before the endAncestor, which // is partially selected. if ( how != CLONE_CONTENTS ) { setEndBefore( endAncestor ); collapse( false ); } return frag; } /** * Visits the nodes selected by this range when we know * a-priori that the start and end containers are not the * same, but the end container is an ancestor of the start container * */ DOMDocumentFragment* DOMRangeImpl::traverseCommonEndContainer( DOMNode*startAncestor, int how ) { DOMDocumentFragment* frag = 0; if ( how!=DELETE_CONTENTS) frag = fDocument->createDocumentFragment(); DOMNode* n = traverseLeftBoundary( startAncestor, how ); if ( frag!=0 ) frag->appendChild( n ); XMLSize_t startIdx = indexOf( startAncestor, fEndContainer ); ++startIdx; // Because we already traversed it.... int cnt = (int)fEndOffset - (int)startIdx; n = startAncestor->getNextSibling(); while( cnt > 0 ) { DOMNode* sibling = n->getNextSibling(); DOMNode* xferNode = traverseFullySelected( n, how ); if ( frag!=0 ) frag->appendChild( xferNode ); --cnt; n = sibling; } if ( how != CLONE_CONTENTS ) { setStartAfter( startAncestor ); collapse( true ); } return frag; } /** * Visits the nodes selected by this range when we know * a-priori that the start and end containers are not * the same, and we also know that neither the start * nor end container is an ancestor of the other. */ DOMDocumentFragment* DOMRangeImpl::traverseCommonAncestors( DOMNode*startAncestor, DOMNode*endAncestor, int how ) { DOMDocumentFragment* frag = 0; if ( how!=DELETE_CONTENTS) frag = fDocument->createDocumentFragment(); DOMNode*n = traverseLeftBoundary( startAncestor, how ); if ( frag!=0 ) frag->appendChild( n ); DOMNode*commonParent = startAncestor->getParentNode(); XMLSize_t startOffset = indexOf( startAncestor, commonParent ); XMLSize_t endOffset = indexOf( endAncestor, commonParent ); ++startOffset; int cnt = (int)endOffset - (int)startOffset; DOMNode* sibling = startAncestor->getNextSibling(); while( cnt > 0 ) { DOMNode* nextSibling = sibling->getNextSibling(); n = traverseFullySelected( sibling, how ); if ( frag!=0 ) frag->appendChild( n ); sibling = nextSibling; --cnt; } n = traverseRightBoundary( endAncestor, how ); if ( frag!=0 ) frag->appendChild( n ); if ( how != CLONE_CONTENTS ) { setStartAfter( startAncestor ); collapse( true ); } return frag; } /** * Traverses the "right boundary" of this range and * operates on each "boundary node" according to the * how parameter. It is a-priori assumed * by this method that the right boundary does * not contain the range's start container. * * A "right boundary" is best visualized by thinking * of a sample tree: * A * /|\ * / | \ * / | \ * B C D * /|\ /|\ * E F G H I J * * Imagine first a range that begins between the * "E" and "F" nodes and ends between the * "I" and "J" nodes. The start container is * "B" and the end container is "D". Given this setup, * the following applies: * * Partially Selected Nodes: B, D
    * Fully Selected Nodes: F, G, C, H, I * * The "right boundary" is the highest subtree node * that contains the ending container. The root of * this subtree is always partially selected. * * In this example, the nodes that are traversed * as "right boundary" nodes are: H, I, and D. * */ DOMNode* DOMRangeImpl::traverseRightBoundary( DOMNode*root, int how ) { DOMNode*next = getSelectedNode( fEndContainer, (int)fEndOffset-1 ); bool isFullySelected = ( next!=fEndContainer ); if ( next==root ) return traverseNode( next, isFullySelected, false, how ); DOMNode*parent = next->getParentNode(); DOMNode*clonedParent = traverseNode( parent, false, false, how ); while( parent!=0 ) { while( next!=0 ) { DOMNode* prevSibling = next->getPreviousSibling(); DOMNode* clonedChild = traverseNode( next, isFullySelected, false, how ); if ( how!=DELETE_CONTENTS ) { clonedParent->insertBefore( clonedChild, clonedParent->getFirstChild() ); } isFullySelected = true; next = prevSibling; } if ( parent==root ) return clonedParent; next = parent->getPreviousSibling(); parent = parent->getParentNode(); DOMNode* clonedGrandParent = traverseNode( parent, false, false, how ); if ( how!=DELETE_CONTENTS ) clonedGrandParent->appendChild( clonedParent ); clonedParent = clonedGrandParent; } // should never occur return 0; } /** * Traverses the "left boundary" of this range and * operates on each "boundary node" according to the * how parameter. It is a-priori assumed * by this method that the left boundary does * not contain the range's end container. * * A "left boundary" is best visualized by thinking * of a sample tree: * * A * /|\ * / | \ * / | \ * B C D * /|\ /|\ * E F G H I J * * Imagine first a range that begins between the * "E" and "F" nodes and ends between the * "I" and "J" nodes. The start container is * "B" and the end container is "D". Given this setup, * the following applies: * * Partially Selected Nodes: B, D
    * Fully Selected Nodes: F, G, C, H, I * * The "left boundary" is the highest subtree node * that contains the starting container. The root of * this subtree is always partially selected. * * In this example, the nodes that are traversed * as "left boundary" nodes are: F, G, and B. * */ DOMNode* DOMRangeImpl::traverseLeftBoundary( DOMNode*root, int how ) { DOMNode*next = getSelectedNode( getStartContainer(), (int)getStartOffset() ); bool isFullySelected = ( next!=getStartContainer() ); if ( next==root ) return traverseNode( next, isFullySelected, true, how ); DOMNode* parent = next->getParentNode(); DOMNode* clonedParent = traverseNode( parent, false, true, how ); while( parent!=0 ) { while( next!=0 ) { DOMNode* nextSibling = next->getNextSibling(); DOMNode* clonedChild = traverseNode( next, isFullySelected, true, how ); if ( how!=DELETE_CONTENTS ) clonedParent->appendChild(clonedChild); isFullySelected = true; next = nextSibling; } if ( parent==root ) return clonedParent; next = parent->getNextSibling(); parent = parent->getParentNode(); DOMNode* clonedGrandParent = traverseNode( parent, false, true, how ); if ( how!=DELETE_CONTENTS ) clonedGrandParent->appendChild( clonedParent ); clonedParent = clonedGrandParent; } // should never occur return 0; } /** * Utility method for traversing a single node. * Does not properly handle a text node containing both the * start and end offsets. Such nodes should * have been previously detected and been routed to traverseTextNode. * */ DOMNode* DOMRangeImpl::traverseNode( DOMNode* n, bool isFullySelected, bool isLeft, int how ) { if ( isFullySelected ) return traverseFullySelected( n, how ); short type = n->getNodeType(); if((type == DOMNode::TEXT_NODE || type == DOMNode::CDATA_SECTION_NODE || type == DOMNode::COMMENT_NODE || type == DOMNode::PROCESSING_INSTRUCTION_NODE)) return traverseTextNode( n, isLeft, how ); return traversePartiallySelected( n, how ); } /** * Utility method for traversing a single node when * we know a-priori that the node if fully * selected. * */ DOMNode* DOMRangeImpl::traverseFullySelected( DOMNode* n, int how ) { switch( how ) { case CLONE_CONTENTS: return n->cloneNode( true ); case EXTRACT_CONTENTS: return n; case DELETE_CONTENTS: // revisit: // should I release the removed node? // not released in case user still referencing it externally n->getParentNode()->removeChild(n); return 0; } return 0; } /** * Utility method for traversing a single node when * we know a-priori that the node if partially * selected and is not a text node. * */ DOMNode* DOMRangeImpl::traversePartiallySelected( DOMNode*n, int how ) { switch( how ) { case DELETE_CONTENTS: return 0; case CLONE_CONTENTS: case EXTRACT_CONTENTS: return n->cloneNode( false ); } return 0; } /** * Utility method for traversing a text node that we know * a-priori to be on a left or right boundary of the range. * This method does not properly handle text nodes that contain * both the start and end points of the range. * */ DOMNode* DOMRangeImpl::traverseTextNode( DOMNode*n, bool isLeft, int how ) { XMLCh* txtValue = XMLString::replicate(n->getNodeValue(), fMemoryManager); ArrayJanitor janValue(txtValue, fMemoryManager); if ( isLeft ) { XMLSize_t startLen = XMLString::stringLen(fStartContainer->getNodeValue()); XMLSize_t offset = getStartOffset(); if (offset == 0) { if ( how != CLONE_CONTENTS ) n->setNodeValue(XMLUni::fgZeroLenString); } else { XMLCh* oldNodeValue; XMLCh oldTemp[4000]; if (offset >= 3999) { oldNodeValue = (XMLCh*) fMemoryManager->allocate ( (offset+1) * sizeof(XMLCh) );//new XMLCh[offset+1]; } else { oldNodeValue = oldTemp; } XMLString::subString(oldNodeValue, txtValue, 0, offset, ((DOMDocumentImpl *)fDocument)->getMemoryManager()); if ( how != CLONE_CONTENTS ) n->setNodeValue( ((DOMDocumentImpl *)fDocument)->getPooledString(oldNodeValue) ); if (offset>= 3999) fMemoryManager->deallocate(oldNodeValue);//delete[] oldNodeValue; } if ( how==DELETE_CONTENTS ) return 0; DOMNode* newNode = n->cloneNode( false ); if (startLen == offset) { newNode->setNodeValue(XMLUni::fgZeroLenString); } else { XMLCh* newNodeValue; XMLCh newTemp[4000]; if (offset >= 3999) { newNodeValue = (XMLCh*) fMemoryManager->allocate ( (offset+1) * sizeof(XMLCh) );//new XMLCh[offset+1]; } else { newNodeValue = newTemp; } XMLString::subString(newNodeValue, txtValue, offset, startLen, ((DOMDocumentImpl *)fDocument)->getMemoryManager()); newNode->setNodeValue( ((DOMDocumentImpl *)fDocument)->getPooledString(newNodeValue) ); if (offset>= 3999) fMemoryManager->deallocate(newNodeValue);//delete[] newNodeValue; } return newNode; } else { XMLSize_t endLen = XMLString::stringLen(fEndContainer->getNodeValue()); XMLSize_t offset = getEndOffset(); if (endLen == offset) { if ( how != CLONE_CONTENTS ) n->setNodeValue(XMLUni::fgZeroLenString); } else { XMLCh* oldNodeValue; XMLCh oldTemp[4000]; if (offset >= 3999) { oldNodeValue = (XMLCh*) fMemoryManager->allocate ( (offset+1) * sizeof(XMLCh) );//new XMLCh[offset+1]; } else { oldNodeValue = oldTemp; } XMLString::subString(oldNodeValue, txtValue, offset, endLen, ((DOMDocumentImpl *)fDocument)->getMemoryManager()); if ( how != CLONE_CONTENTS ) n->setNodeValue( ((DOMDocumentImpl *)fDocument)->getPooledString(oldNodeValue) ); if (offset>= 3999) fMemoryManager->deallocate(oldNodeValue);//delete[] oldNodeValue; } if ( how==DELETE_CONTENTS ) return 0; DOMNode* newNode = n->cloneNode( false ); if (offset == 0) { newNode->setNodeValue(XMLUni::fgZeroLenString); } else { XMLCh* newNodeValue; XMLCh newTemp[4000]; if (offset >= 3999) { newNodeValue = (XMLCh*) fMemoryManager->allocate ( (offset+1) * sizeof(XMLCh) );//new XMLCh[offset+1]; } else { newNodeValue = newTemp; } XMLString::subString(newNodeValue, txtValue, 0, offset, ((DOMDocumentImpl *)fDocument)->getMemoryManager()); newNode->setNodeValue( ((DOMDocumentImpl *)fDocument)->getPooledString(newNodeValue) ); if (offset>= 3999) fMemoryManager->deallocate(newNodeValue);//delete[] newNodeValue; } return newNode; } } /** * Utility method to retrieve a child node by index. This method * assumes the caller is trying to find out which node is * selected by the given index. Note that if the index is * greater than the number of children, this implies that the * first node selected is the parent node itself. * */ DOMNode* DOMRangeImpl::getSelectedNode( DOMNode*container, int offset ) { short type = container->getNodeType(); if((type == DOMNode::TEXT_NODE || type == DOMNode::CDATA_SECTION_NODE || type == DOMNode::COMMENT_NODE || type == DOMNode::PROCESSING_INSTRUCTION_NODE)) return container; // This case is an important convenience for // traverseRightBoundary() if ( offset<0 ) return container; DOMNode*child = container->getFirstChild(); while( child!=0 && offset > 0 ) { --offset; child = child->getNextSibling(); } if ( child!=0 ) return child; return container; } void DOMRangeImpl::checkReadOnly(DOMNode* start, DOMNode* end, XMLSize_t startOffset, XMLSize_t endOffset) { if ((start == 0) || (end == 0) ) return; DOMNode*sNode = 0; short type = start->getNodeType(); if ( type == DOMNode::DOCUMENT_TYPE_NODE ) { throw DOMException( DOMException::HIERARCHY_REQUEST_ERR, 0, fMemoryManager); } if((type == DOMNode::TEXT_NODE || type == DOMNode::CDATA_SECTION_NODE || type == DOMNode::COMMENT_NODE || type == DOMNode::PROCESSING_INSTRUCTION_NODE)) { if (castToNodeImpl(start)->isReadOnly()) { throw DOMException( DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, fMemoryManager); } //if both start and end are text check and return if (start == end) return; sNode = start; } else { //set the start and end nodes to check sNode = start->getFirstChild(); for(XMLSize_t i = 0; igetNextSibling(); } DOMNode* eNode; type = end->getNodeType(); if ( type == DOMNode::DOCUMENT_TYPE_NODE ) { throw DOMException( DOMException::HIERARCHY_REQUEST_ERR, 0, fMemoryManager); } if((type == DOMNode::TEXT_NODE || type == DOMNode::CDATA_SECTION_NODE || type == DOMNode::COMMENT_NODE || type == DOMNode::PROCESSING_INSTRUCTION_NODE)) { eNode = end; //need to check only till this node } else { //need to check all the kids that fall before the end offset value eNode = end->getFirstChild(); if (endOffset > 0) { for (XMLSize_t i = 0; igetNextSibling(); } } //recursivly search if any node is readonly recurseTreeAndCheck(sNode, eNode); } void DOMRangeImpl::recurseTreeAndCheck(DOMNode* start, DOMNode* end) { for(DOMNode* node=start; node != 0 && node !=end; node=node->getNextSibling()) { if ( node->getNodeType()== DOMNode::DOCUMENT_TYPE_NODE ) { throw DOMException( DOMException::HIERARCHY_REQUEST_ERR, 0, fMemoryManager); } if (castToNodeImpl(node)->isReadOnly()) { throw DOMException( DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, fMemoryManager); } if (node->hasChildNodes()) { node = node->getFirstChild(); recurseTreeAndCheck(node, end); } } } DOMNode* DOMRangeImpl::removeChild(DOMNode* parent, DOMNode* child) { fRemoveChild = child; //only a precaution measure not to update this range data before removal DOMNode*n = parent->removeChild(child); fRemoveChild = 0; return n; } // // Mutation functions // /* This function is called from DOM. * The text has already been replaced. * Fix-up any offsets. */ void DOMRangeImpl::receiveReplacedText(DOMNode* node) { if (node == 0) return; short type = fStartContainer->getNodeType(); if (node == fStartContainer && (type == DOMNode::TEXT_NODE || type == DOMNode::CDATA_SECTION_NODE || type == DOMNode::COMMENT_NODE || type == DOMNode::PROCESSING_INSTRUCTION_NODE)) { fStartOffset = 0; } type = fEndContainer->getNodeType(); if (node == fEndContainer && (type == DOMNode::TEXT_NODE || type == DOMNode::CDATA_SECTION_NODE || type == DOMNode::COMMENT_NODE || type == DOMNode::PROCESSING_INSTRUCTION_NODE)) { fEndOffset = 0; } } /** This function is called from DOM. * The text has already been deleted. * Fix-up any offsets. */ void DOMRangeImpl::updateRangeForDeletedText(DOMNode* node, XMLSize_t offset, XMLSize_t count) { if (node == 0) return; short type = fStartContainer->getNodeType(); if (node == fStartContainer && (type == DOMNode::TEXT_NODE || type == DOMNode::CDATA_SECTION_NODE || type == DOMNode::COMMENT_NODE || type == DOMNode::PROCESSING_INSTRUCTION_NODE)) { if (fStartOffset > offset+count) { fStartOffset = fStartOffset-count; } else if (fStartOffset > offset) { fStartOffset = offset; } } type = fEndContainer->getNodeType(); if (node == fEndContainer && (type == DOMNode::TEXT_NODE || type == DOMNode::CDATA_SECTION_NODE || type == DOMNode::COMMENT_NODE || type == DOMNode::PROCESSING_INSTRUCTION_NODE)) { if (fEndOffset > offset+count) { fEndOffset = fEndOffset-count; } else if (fEndOffset > offset) { fEndOffset = offset; } } } /** This function is called from DOM. * The text has already beeen inserted. * Fix-up any offsets. */ void DOMRangeImpl::updateRangeForInsertedText(DOMNode* node, XMLSize_t offset, XMLSize_t count) { if (node == 0) return; short type = fStartContainer->getNodeType(); if (node == fStartContainer && (type == DOMNode::TEXT_NODE || type == DOMNode::CDATA_SECTION_NODE || type == DOMNode::COMMENT_NODE || type == DOMNode::PROCESSING_INSTRUCTION_NODE)) { if (fStartOffset > offset) { fStartOffset = offset; } } type = fEndContainer->getNodeType(); if (node == fEndContainer && (type == DOMNode::TEXT_NODE || type == DOMNode::CDATA_SECTION_NODE || type == DOMNode::COMMENT_NODE || type == DOMNode::PROCESSING_INSTRUCTION_NODE)) { if (fEndOffset > offset) { fEndOffset = fEndOffset+count; } } } /** This function must be called by the DOM _BEFORE_ * a node is deleted, because at that time it is * connected in the DOM tree, which we depend on. */ void DOMRangeImpl::updateRangeForDeletedNode(DOMNode* node) { if (node == 0) return; if (fRemoveChild == node) return; if (node->getParentNode() == fStartContainer) { XMLSize_t index = indexOf(node, fStartContainer); if ( fStartOffset > index) { fStartOffset--; } } if (node->getParentNode() == fEndContainer) { XMLSize_t index = indexOf(node, fEndContainer); if ( fEndOffset > index) { fEndOffset--; } } if (node->getParentNode() != fStartContainer || node->getParentNode() != fEndContainer) { if (isAncestorOf(node, fStartContainer)) { DOMNode* tpNode = node->getParentNode(); setStartContainer( tpNode ); fStartOffset = indexOf( node, tpNode); } if (isAncestorOf(node, fEndContainer)) { DOMNode* tpNode = node->getParentNode(); setEndContainer( tpNode ); fEndOffset = indexOf( node, tpNode); } } } void DOMRangeImpl::updateRangeForInsertedNode(DOMNode* node) { if (node == 0) return; if (node->getParentNode() == fStartContainer) { XMLSize_t index = indexOf(node, fStartContainer); if (index < fStartOffset) { fStartOffset++; } } if (node->getParentNode() == fEndContainer) { XMLSize_t index = indexOf(node, fEndContainer); if (index < fEndOffset) { fEndOffset++; } } } void DOMRangeImpl::updateSplitInfo(DOMNode* oldNode, DOMNode* startNode, XMLSize_t offset) { if (startNode == 0) return; short type = fStartContainer->getNodeType(); if (oldNode == fStartContainer && (type == DOMNode::TEXT_NODE || type == DOMNode::CDATA_SECTION_NODE || type == DOMNode::COMMENT_NODE || type == DOMNode::PROCESSING_INSTRUCTION_NODE)) { if (fStartOffset > offset) { fStartOffset = fStartOffset - offset; fStartContainer = startNode; } } type = fEndContainer->getNodeType(); if (oldNode == fEndContainer && (type == DOMNode::TEXT_NODE || type == DOMNode::CDATA_SECTION_NODE || type == DOMNode::COMMENT_NODE || type == DOMNode::PROCESSING_INSTRUCTION_NODE)) { if (fEndOffset > offset) { fEndContainer = startNode; fEndOffset = fEndOffset - offset; } } } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMRangeImpl.hpp0000644000175000017500000001511310772402041021133 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMRangeImpl.hpp 641193 2008-03-26 08:06:57Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMRANGEIMPL_HPP) #define XERCESC_INCLUDE_GUARD_DOMRANGEIMPL_HPP // // This file is part of the internal implementation of the C++ XML DOM. // It should NOT be included or used directly by application programs. // // Applications should include the file for the entire // DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class // name is substituded for the *. // #include #include #include XERCES_CPP_NAMESPACE_BEGIN class DOMNode; class DOMDocumentFragment; class DOMDocument; class DOMText; class MemoryManager; class CDOM_EXPORT DOMRangeImpl: public DOMRange { protected: enum TraversalType { EXTRACT_CONTENTS = 1, CLONE_CONTENTS = 2, DELETE_CONTENTS = 3 }; enum TraversePoint { BEFORE = -1, START = 0, AFTER = 1 }; //private data DOMNode* fStartContainer; XMLSize_t fStartOffset; DOMNode* fEndContainer; XMLSize_t fEndOffset; bool fCollapsed; DOMDocument* fDocument; bool fDetached; DOMNode* fRemoveChild; MemoryManager* fMemoryManager; public: //c'tor DOMRangeImpl(DOMDocument* doc, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); DOMRangeImpl(const DOMRangeImpl& other); //d'tor ~DOMRangeImpl(); //getter functions virtual DOMNode* getStartContainer() const; virtual XMLSize_t getStartOffset() const; virtual DOMNode* getEndContainer() const; virtual XMLSize_t getEndOffset() const; virtual bool getCollapsed() const; virtual const DOMNode* getCommonAncestorContainer() const; //setter functions virtual void setStart(const DOMNode *parent, XMLSize_t offset); virtual void setEnd(const DOMNode *parent, XMLSize_t offset); virtual void setStartBefore(const DOMNode *refNode); virtual void setStartAfter(const DOMNode *refNode); virtual void setEndBefore(const DOMNode *refNode); virtual void setEndAfter(const DOMNode *refNode); //misc functions virtual void collapse(bool toStart); virtual void selectNode(const DOMNode *node); virtual void selectNodeContents(const DOMNode *node); //Functions related to comparing range Boundrary-Points virtual short compareBoundaryPoints(CompareHow how, const DOMRange* range) const; virtual void deleteContents(); virtual DOMDocumentFragment* extractContents(); virtual DOMDocumentFragment* cloneContents() const; virtual void insertNode(DOMNode* node); //Misc functions virtual void surroundContents(DOMNode *node); virtual DOMRange* cloneRange() const; virtual const XMLCh* toString() const; virtual void detach(); virtual void release(); //getter functions DOMDocument* getDocument(); // functions to inform all existing valid ranges about a change void updateSplitInfo(DOMNode* oldNode, DOMNode* startNode, XMLSize_t offset); void updateRangeForInsertedNode(DOMNode* node); void receiveReplacedText(DOMNode* node); void updateRangeForDeletedText(DOMNode* node, XMLSize_t offset, XMLSize_t count); void updateRangeForInsertedText(DOMNode* node, XMLSize_t offset, XMLSize_t count); void updateRangeForDeletedNode(DOMNode* node); protected: //setter functions void setStartContainer(const DOMNode* node); void setStartOffset(XMLSize_t offset) ; void setEndContainer(const DOMNode* node); void setEndOffset(XMLSize_t offset) ; //misc functions void validateNode(const DOMNode* node) const; bool isValidAncestorType(const DOMNode* node) const; bool hasLegalRootContainer(const DOMNode* node) const; bool isLegalContainedNode(const DOMNode* node ) const; void checkIndex(const DOMNode* node, XMLSize_t offset) const; static bool isAncestorOf(const DOMNode* a, const DOMNode* b); XMLSize_t indexOf(const DOMNode* child, const DOMNode* parent) const; const DOMNode* commonAncestorOf(const DOMNode* pointA, const DOMNode* pointB) const; DOMNode* nextNode(const DOMNode* node, bool visitChildren) const; DOMDocumentFragment* traverseContents(TraversalType type); void checkReadOnly(DOMNode* start, DOMNode* end, XMLSize_t starOffset, XMLSize_t endOffset); void recurseTreeAndCheck(DOMNode* start, DOMNode* end); DOMNode* removeChild(DOMNode* parent, DOMNode* child); DOMDocumentFragment* traverseSameContainer( int how ); DOMDocumentFragment* traverseCommonStartContainer( DOMNode *endAncestor, int how ); DOMDocumentFragment* traverseCommonEndContainer( DOMNode *startAncestor, int how ); DOMDocumentFragment* traverseCommonAncestors( DOMNode *startAncestor, DOMNode *endAncestor, int how ); DOMNode* traverseRightBoundary( DOMNode *root, int how ); DOMNode* traverseLeftBoundary( DOMNode *root, int how ); DOMNode* traverseNode( DOMNode *n, bool isFullySelected, bool isLeft, int how ); DOMNode* traverseFullySelected( DOMNode *n, int how ); DOMNode* traversePartiallySelected( DOMNode *n, int how ); DOMNode* traverseTextNode( DOMNode *n, bool isLeft, int how ); DOMNode* getSelectedNode( DOMNode *container, int offset ); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DOMRangeImpl & operator = (const DOMRangeImpl &); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMNodeIteratorImpl.cpp0000644000175000017500000002455711030714661022507 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMNodeIteratorImpl.cpp 671894 2008-06-26 13:29:21Z borisk $ */ ////////////////////////////////////////////////////////////////////// // DOMNodeIteratorImpl.cpp: implementation of the DOMNodeIteratorImpl class. // ////////////////////////////////////////////////////////////////////// #include "DOMNodeIteratorImpl.hpp" #include "DOMDocumentImpl.hpp" #include #include XERCES_CPP_NAMESPACE_BEGIN ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// DOMNodeIteratorImpl::DOMNodeIteratorImpl (DOMDocument* doc, DOMNode* root, DOMNodeFilter::ShowType whatToShow, DOMNodeFilter* nodeFilter, bool expandEntityRef) : fRoot(root), fDocument(doc), fWhatToShow(whatToShow), fNodeFilter(nodeFilter), fExpandEntityReferences(expandEntityRef), fDetached(false), fCurrentNode(0), fForward(true) { } DOMNodeIteratorImpl::DOMNodeIteratorImpl ( const DOMNodeIteratorImpl& toCopy) : DOMNodeIterator(toCopy), fRoot(toCopy.fRoot), fDocument(toCopy.fDocument), fWhatToShow(toCopy.fWhatToShow), fNodeFilter(toCopy.fNodeFilter), fExpandEntityReferences(toCopy.fExpandEntityReferences), fDetached(toCopy.fDetached), fCurrentNode(toCopy.fCurrentNode), fForward(toCopy.fForward) { } DOMNodeIteratorImpl& DOMNodeIteratorImpl::operator= (const DOMNodeIteratorImpl& other) { fRoot = other.fRoot; fCurrentNode = other.fRoot; fWhatToShow = other.fWhatToShow; fNodeFilter = other.fNodeFilter; fForward = other.fForward; fDetached = other.fDetached; fExpandEntityReferences = other.fExpandEntityReferences; fDocument = other.fDocument; return *this; } DOMNodeIteratorImpl::~DOMNodeIteratorImpl () { fDetached = false; } void DOMNodeIteratorImpl::detach () { fDetached = true; ((DOMDocumentImpl *)fDocument)->removeNodeIterator(this); } DOMNode* DOMNodeIteratorImpl::getRoot() { return fRoot; } // Implementation Note: Note that the iterator looks at whatToShow // and filter values at each call, and therefore one _could_ add // setters for these values and alter them while iterating! /** Return the whatToShow value */ DOMNodeFilter::ShowType DOMNodeIteratorImpl::getWhatToShow () { return fWhatToShow; } /** Return the filter */ DOMNodeFilter* DOMNodeIteratorImpl::getFilter () { return fNodeFilter; } /** Get the expandEntity reference flag. */ bool DOMNodeIteratorImpl::getExpandEntityReferences() { return fExpandEntityReferences; } /** Return the next DOMNode* in the Iterator. The node is the next node in * depth-first order which also passes the filter, and whatToShow. * A 0 return means either that */ DOMNode* DOMNodeIteratorImpl::nextNode () { if (fDetached) throw DOMException(DOMException::INVALID_STATE_ERR, 0, GetDOMNodeIteratorMemoryManager); // if root is 0 there is no next node-> if (!fRoot) return 0; DOMNode* aNextNode = fCurrentNode; bool accepted = false; // the next node has not been accepted. while (!accepted) { // if last direction is not forward, repeat node-> if (!fForward && (aNextNode != 0)) { //System.out.println("nextNode():!fForward:"+fCurrentNode.getNodeName()); aNextNode = fCurrentNode; } else { // else get the next node via depth-first aNextNode = nextNode(aNextNode, true); } fForward = true; //REVIST: should direction be set forward before 0 check? // nothing in the list. return 0. if (!aNextNode) return 0; // does node pass the filters and whatToShow? accepted = acceptNode(aNextNode); if (accepted) { // if so, then the node is the current node-> fCurrentNode = aNextNode; return fCurrentNode; } } // no nodes, or no accepted nodes. return 0; } /** Return the previous Node in the Iterator. The node is the next node in * _backwards_ depth-first order which also passes the filter, and whatToShow. */ DOMNode* DOMNodeIteratorImpl::previousNode () { if (fDetached) throw DOMException(DOMException::INVALID_STATE_ERR, 0, GetDOMNodeIteratorMemoryManager); // if the root is 0, or the current node is 0, return 0. if (!fRoot || !fCurrentNode) return 0; DOMNode* aPreviousNode = fCurrentNode; bool accepted = false; while (!accepted) { if (fForward && (aPreviousNode != 0)) { //repeat last node-> aPreviousNode = fCurrentNode; } else { // get previous node in backwards depth first order. aPreviousNode = previousNode(aPreviousNode); } // we are going backwards fForward = false; // if the new previous node is 0, we're at head or past the root, // so return 0. if (!aPreviousNode) return 0; // check if node passes filters and whatToShow. accepted = acceptNode(aPreviousNode); if (accepted) { // if accepted, update the current node, and return it. fCurrentNode = aPreviousNode; return fCurrentNode; } } // there are no nodes? return 0; } /** The node is accepted if it passes the whatToShow and the filter. */ bool DOMNodeIteratorImpl::acceptNode (DOMNode* node) { if (fDetached) throw DOMException(DOMException::INVALID_STATE_ERR, 0, GetDOMNodeIteratorMemoryManager); if (fNodeFilter == 0) { return ((fWhatToShow & (1 << (node->getNodeType() - 1))) != 0); } else { return ((fWhatToShow & (1 << (node->getNodeType() - 1))) != 0) && fNodeFilter->acceptNode(node) == DOMNodeFilter::FILTER_ACCEPT; } } /** Return node, if matches or any parent if matches. */ DOMNode* DOMNodeIteratorImpl::matchNodeOrParent (DOMNode* node) { for (DOMNode* n = fCurrentNode; n != fRoot; n = n->getParentNode()) { if (node == n) return n; } return 0; } /** The method nextNode(DOMNode, bool) returns the next node * from the actual DOM tree. * * The bool visitChildren determines whether to visit the children. * The result is the nextNode. */ DOMNode* DOMNodeIteratorImpl::nextNode (DOMNode* node, bool visitChildren) { if (fDetached) throw DOMException(DOMException::INVALID_STATE_ERR, 0, GetDOMNodeIteratorMemoryManager); if (!node) return fRoot; DOMNode* result = 0; // only check children if we visit children. if (visitChildren) { //if hasChildren, return 1st child. if ((fExpandEntityReferences || node->getNodeType()!=DOMNode::ENTITY_REFERENCE_NODE) && node->hasChildNodes()) { result = node->getFirstChild(); return result; } } // if hasSibling, return sibling if (node != fRoot) { result = node->getNextSibling(); if (result != 0) return result; // return parent's 1st sibling. DOMNode* parent = node->getParentNode(); while ((parent != 0) && parent != fRoot) { result = parent->getNextSibling(); if (result != 0) { return result; } else { parent = parent->getParentNode(); } } // while (parent != 0 && parent != fRoot) { } // end of list, return 0 return 0; } /** The method previousNode(DOMNode) returns the previous node * from the actual DOM tree. */ DOMNode* DOMNodeIteratorImpl::previousNode (DOMNode* node) { if (fDetached) throw DOMException(DOMException::INVALID_STATE_ERR, 0, GetDOMNodeIteratorMemoryManager); DOMNode* result = 0; // if we're at the root, return 0. if (node == fRoot) return 0; // get sibling result = node->getPreviousSibling(); if (!result) { //if 1st sibling, return parent result = node->getParentNode(); return result; } // if sibling has children, keep getting last child of child. if (result->hasChildNodes()) { while ((fExpandEntityReferences || result->getNodeType()!=DOMNode::ENTITY_REFERENCE_NODE) && result->hasChildNodes()) { result = result->getLastChild(); } } return result; } /** Fix-up the iterator on a remove. Called by DOM or otherwise, * before an actual DOM remove. */ void DOMNodeIteratorImpl::removeNode (DOMNode* node) { if (fDetached) throw DOMException(DOMException::INVALID_STATE_ERR, 0, GetDOMNodeIteratorMemoryManager); // Implementation note: Fix-up means setting the current node properly // after a remove. if (!node) return; DOMNode* deleted = matchNodeOrParent(node); if (!deleted) return; if (fForward) { fCurrentNode = previousNode(deleted); } else // if (!fForward) { DOMNode* next = nextNode(deleted, false); if (next != 0) { // normal case: there _are_ nodes following this in the iterator. fCurrentNode = next; } else { // the last node in the iterator is to be removed, // so we set the current node to be the previous one. fCurrentNode = previousNode(deleted); fForward = true; } } } void DOMNodeIteratorImpl::release() { detach(); // for performance reason, do not recycle pointer // chance that this is allocated again and again is not usual } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMLSSerializerImpl.cpp0000644000175000017500000017024411175333420022453 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMLSSerializerImpl.cpp 768978 2009-04-27 13:45:52Z amassari $ */ #include "DOMLSSerializerImpl.hpp" #include "DOMLSOutputImpl.hpp" #include "DOMErrorImpl.hpp" #include "DOMLocatorImpl.hpp" #include "DOMImplementationImpl.hpp" #include "DOMStringListImpl.hpp" #include #include #include #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Local const data // // --------------------------------------------------------------------------- static const int INVALID_FEATURE_ID = -1; static const int CANONICAL_FORM_ID = 0x0; static const int DISCARD_DEFAULT_CONTENT_ID = 0x1; static const int ENTITIES_ID = 0x2; static const int FORMAT_PRETTY_PRINT_ID = 0x3; static const int NORMALIZE_CHARACTERS_ID = 0x4; static const int SPLIT_CDATA_SECTIONS_ID = 0x5; static const int VALIDATION_ID = 0x6; static const int WHITESPACE_IN_ELEMENT_CONTENT_ID = 0x7; static const int BYTE_ORDER_MARK_ID = 0x8; static const int XML_DECLARATION = 0x9; static const int FORMAT_PRETTY_PRINT_1ST_LEVEL_ID = 0xA; // feature true false // ================================================================================ //canonical-form [optional] Not Supported [required] (default) //discard-default-content [required] (default) [required] //entity [required] (default) [optional] //format-pretty-print [optional] Partially Supported [required] (default) //normalize-characters [optional] Not Supported [required] (default) //split-cdata-sections [required] (default) [required] //validation [optional] Not Supported [required] (default) //whitespace-in-element-content [requierd] (default) [optional] Not Supported // // // Each feature has 2 entries in this array, // the first for "true", // the second for "false". // static const bool featuresSupported[] = { false, true, // canonical-form true, true, // discard-default-content true, true, // entity true, true, // format-pretty-print false, true, // normalize-characters true, true, // split-cdata-sections false, true, // validation true, false, // whitespace-in-element-content true, true, // http://apache.org/xml/features/dom/byte-order-mark true, true, // xml-declaration true, true // http://apache.org/xml/features/pretty-print/space-first-level-elements }; // default end-of-line sequence static const XMLCh gEOLSeq[] = { chLF, chNull }; //UTF-8 static const XMLCh gUTF8[] = { chLatin_U, chLatin_T, chLatin_F, chDash, chDigit_8, chNull }; // static const XMLCh gEndPI[] = { chQuestion, chCloseAngle, chNull }; // static const XMLCh gXMLDecl_endtag[] = { chQuestion, chCloseAngle, chNull }; // static const XMLCh gEndCDATA[] = { // chCloseSquare, chCloseAngle, chCloseAngle, chNull // test only: ]>> chCloseSquare, chCloseSquare, chCloseAngle, chNull }; // static const XMLCh gEndComment[] = { chDash, chDash, chCloseAngle, chNull }; //setUnRepFlags(XMLFormatter::UnRep_Fail); \ try \ { \ action; \ } \ catch(TranscodingException const &e) \ { \ reportError(nodeToWrite, DOMError::DOM_SEVERITY_FATAL_ERROR, e.getMessage()); \ throw e; \ } DOMLSSerializerImpl::~DOMLSSerializerImpl() { fMemoryManager->deallocate(fNewLine);//delete [] fNewLine; delete fNamespaceStack; delete fSupportedParameters; // we don't own/adopt error handler and filter } DOMLSSerializerImpl::DOMLSSerializerImpl(MemoryManager* const manager) :fFeatures(0) ,fNewLine(0) ,fErrorHandler(0) ,fFilter(0) ,fDocumentVersion(XMLUni::fgVersion1_0) ,fSupportedParameters(0) ,fEncodingUsed(0) ,fNewLineUsed(0) ,fFormatter(0) ,fErrorCount(0) ,fCurrentLine(0) ,fLineFeedInTextNodePrinted(false) ,fLastWhiteSpaceInTextNode(0) ,fNamespaceStack(0) ,fMemoryManager(manager) { fNamespaceStack=new (fMemoryManager) RefVectorOf< RefHashTableOf >(0,true, fMemoryManager); // // set features to default setting // setFeature(CANONICAL_FORM_ID, false); setFeature(DISCARD_DEFAULT_CONTENT_ID, true ); setFeature(ENTITIES_ID, true ); setFeature(FORMAT_PRETTY_PRINT_ID, false); setFeature(NORMALIZE_CHARACTERS_ID, false); setFeature(SPLIT_CDATA_SECTIONS_ID, true ); setFeature(VALIDATION_ID, false); setFeature(WHITESPACE_IN_ELEMENT_CONTENT_ID, true ); setFeature(BYTE_ORDER_MARK_ID, false); setFeature(XML_DECLARATION, true ); setFeature(FORMAT_PRETTY_PRINT_1ST_LEVEL_ID, true ); fSupportedParameters=new (fMemoryManager) DOMStringListImpl(12, fMemoryManager); fSupportedParameters->add(XMLUni::fgDOMErrorHandler); fSupportedParameters->add(XMLUni::fgDOMWRTCanonicalForm); fSupportedParameters->add(XMLUni::fgDOMWRTDiscardDefaultContent); fSupportedParameters->add(XMLUni::fgDOMWRTEntities); fSupportedParameters->add(XMLUni::fgDOMWRTFormatPrettyPrint); fSupportedParameters->add(XMLUni::fgDOMWRTNormalizeCharacters); fSupportedParameters->add(XMLUni::fgDOMWRTSplitCdataSections); fSupportedParameters->add(XMLUni::fgDOMWRTValidation); fSupportedParameters->add(XMLUni::fgDOMWRTWhitespaceInElementContent); fSupportedParameters->add(XMLUni::fgDOMWRTBOM); fSupportedParameters->add(XMLUni::fgDOMXMLDeclaration); fSupportedParameters->add(XMLUni::fgDOMWRTXercesPrettyPrint); } bool DOMLSSerializerImpl::canSetParameter(const XMLCh* featName , const void* /*value*/) const { if(XMLString::compareIStringASCII(featName, XMLUni::fgDOMErrorHandler)==0) return true; return false; } bool DOMLSSerializerImpl::canSetParameter(const XMLCh* featName , bool state) const { int featureId = INVALID_FEATURE_ID; return checkFeature(featName, false, featureId) ? canSetFeature(featureId, state) : false; } void DOMLSSerializerImpl::setParameter(const XMLCh* featName , const void* value) { if(XMLString::compareIStringASCII(featName, XMLUni::fgDOMErrorHandler)==0) fErrorHandler = (DOMErrorHandler*)value; else throw DOMException(DOMException::NOT_SUPPORTED_ERR, 0, fMemoryManager); } void DOMLSSerializerImpl::setParameter(const XMLCh* featName , bool state) { int featureId = INVALID_FEATURE_ID; checkFeature(featName, true, featureId); if (!canSetFeature(featureId, state)) throw DOMException(DOMException::NOT_SUPPORTED_ERR, 0, fMemoryManager); setFeature(featureId, state); // // setting "canonical-form" to true will set the parameters "format-pretty-print", // "discard-default-content", and "xml-declaration", to false // if ((featureId == CANONICAL_FORM_ID) && state) { setFeature(FORMAT_PRETTY_PRINT_ID, false); setFeature(FORMAT_PRETTY_PRINT_1ST_LEVEL_ID, false); setFeature(DISCARD_DEFAULT_CONTENT_ID, false); setFeature(XML_DECLARATION, false); } // Setting one of those parameters to true will set "canonical-form" to false. if ((featureId == FORMAT_PRETTY_PRINT_ID || featureId == DISCARD_DEFAULT_CONTENT_ID || featureId == XML_DECLARATION) && state) setFeature(CANONICAL_FORM_ID, false); } const void* DOMLSSerializerImpl::getParameter(const XMLCh* featName) const { if(XMLString::compareIStringASCII(featName, XMLUni::fgDOMErrorHandler)==0) { return (void*)fErrorHandler; } else { int featureId = INVALID_FEATURE_ID; checkFeature(featName, true, featureId); return (void*)getFeature(featureId); } } const DOMStringList* DOMLSSerializerImpl::getParameterNames() const { return fSupportedParameters; } void DOMLSSerializerImpl::setNewLine(const XMLCh* const newLine) { fMemoryManager->deallocate(fNewLine);//delete [] fNewLine; fNewLine = XMLString::replicate(newLine, fMemoryManager); } const XMLCh* DOMLSSerializerImpl::getNewLine() const { return fNewLine; } void DOMLSSerializerImpl::setFilter(DOMLSSerializerFilter *filter) { fFilter = filter; } DOMLSSerializerFilter* DOMLSSerializerImpl::getFilter() const { return fFilter; } // // // bool DOMLSSerializerImpl::write(const DOMNode* nodeToWrite, DOMLSOutput* const destination) { XMLFormatTarget* pTarget=destination->getByteStream(); Janitor janTarget(0); if(!pTarget) { const XMLCh* szSystemId=destination->getSystemId(); if(!szSystemId) { //TODO: report error "missing target" return false; } pTarget=new LocalFileFormatTarget(szSystemId, fMemoryManager); janTarget.reset(pTarget); } /** * When writing to a LSOutput, the encoding is found by looking at the encoding information * that is reachable through the LSOutput and the item to be written (or its owner document) in this order: * * 1. LSOutput.encoding, * 2. Document.inputEncoding, * 3. Document.xmlEncoding. * * If no encoding is reachable through the above properties, a default encoding of "UTF-8" will be used. * If the specified encoding is not supported an "unsupported-encoding" fatal error is raised. */ fEncodingUsed = gUTF8; const DOMDocument *docu = (nodeToWrite->getNodeType() == DOMNode::DOCUMENT_NODE)? (const DOMDocument*)nodeToWrite : nodeToWrite->getOwnerDocument(); const XMLCh* lsEncoding=destination->getEncoding(); if (lsEncoding && *lsEncoding) { fEncodingUsed = lsEncoding; } else if (docu) { const XMLCh* tmpEncoding = docu->getInputEncoding(); if ( tmpEncoding && *tmpEncoding) { fEncodingUsed = tmpEncoding; } else { tmpEncoding = docu->getXmlEncoding(); if ( tmpEncoding && *tmpEncoding) { fEncodingUsed = tmpEncoding; } } } /** * The end-of-line sequence of characters to be used in the XML being * written out. The only permitted values are these: * . null * * Use a default end-of-line sequence. DOM implementations should choose * the default to match the usual convention for text files in the * environment being used. Implementations must choose a default * sequence that matches one of those allowed by 2.11 "End-of-Line * Handling". * * CR The carriage-return character (#xD) * CR-LF The carriage-return and line-feed characters (#xD #xA) * LF The line-feed character (#xA) * * The default value for this attribute is null */ fNewLineUsed = (fNewLine && *fNewLine)? fNewLine : gEOLSeq; /** * get Document Version */ fDocumentVersion = (docu && docu->getXmlVersion() && *(docu->getXmlVersion()))?docu->getXmlVersion():XMLUni::fgVersion1_0; fErrorCount = 0; fLineFeedInTextNodePrinted = false; fLastWhiteSpaceInTextNode = 0; try { fFormatter = new (fMemoryManager) XMLFormatter( fEncodingUsed ,fDocumentVersion ,pTarget ,XMLFormatter::NoEscapes ,XMLFormatter::UnRep_CharRef ,fMemoryManager); } catch (const TranscodingException& e) { reportError(nodeToWrite, DOMError::DOM_SEVERITY_FATAL_ERROR, e.getMessage()); return false; } try { Janitor janName(fFormatter); processNode(nodeToWrite); pTarget->flush(); } // // The serialize engine (processNode) throws an exception to abort // serialization if // // . A fatal error occurs which renders the output ill-formed, or // . Instructed by the application's error handler // catch (const TranscodingException&) { pTarget->flush(); return false; } catch (const XMLDOMMsg::Codes) { pTarget->flush(); return false; } catch(const OutOfMemoryException&) { throw; } catch (...) { pTarget->flush(); throw; } // // true if node was successfully serialized and // false in case a failure occured and the // failure wasn't canceled by the error handler. // return ((fErrorCount == 0)? true : false); } bool DOMLSSerializerImpl::writeToURI(const DOMNode* nodeToWrite, const XMLCh* uri) { DOMLSOutputImpl output(fMemoryManager); output.setSystemId(uri); return write(nodeToWrite, &output); } // // We don't throw DOMSTRING_SIZE_ERR since we are no longer // using DOMString. // XMLCh* DOMLSSerializerImpl::writeToString(const DOMNode* nodeToWrite, MemoryManager* manager /*= NULL*/) { if(manager==NULL) manager = fMemoryManager; MemBufFormatTarget destination(1023, manager); bool retVal; bool bBOMFlag=getFeature(BYTE_ORDER_MARK_ID); setFeature(BYTE_ORDER_MARK_ID, false); try { DOMLSOutputImpl output(manager); output.setByteStream(&destination); output.setEncoding(XMLUni::fgUTF16EncodingString); retVal = write(nodeToWrite, &output); } catch(const OutOfMemoryException&) { throw; } catch (...) { // // there is a possibility that memory allocation // exception thrown in XMLBuffer class // setFeature(BYTE_ORDER_MARK_ID, bBOMFlag); return 0; } setFeature(BYTE_ORDER_MARK_ID, bBOMFlag); return (retVal ? XMLString::replicate((XMLCh*) destination.getRawBuffer(), manager) : 0); } // // Characters not representable in output encoding, // // 1. CHARACTER DATA (outside of markup) --- no error // ordinary character -> numeric character reference // '<' and '&' -> < and & // // 2. Within MARKUP, but outside of attributes // reported as an error --- ERROR // markup: // start tag done // end tag done // empty element tag done // entity references done // character references // REVISIT // comments done // CDATA section delimiters done, done // document type declarartions done // processing instructions (PI) done // // 3. With in ATTRIBUTE // -> numeric character reference // no quotes -> in quotes // with quotes, no apostrophe -> in apostrophe // with quotes and apostrophe -> in quotes and " // // 4. CDATA sections // "split_cdata_section" true --- char ref // false --- ERROR // // --------------------------------------------------------------------------- // Stream out a DOM node, and, recursively, all of its children. This // function is the heart of writing a DOM tree out as XML source. Give it // a document node and it will do the whole thing. // --------------------------------------------------------------------------- void DOMLSSerializerImpl::processNode(const DOMNode* const nodeToWrite, int level) { // Get the name and value out for convenience const XMLCh* nodeName = nodeToWrite->getNodeName(); const XMLCh* nodeValue = nodeToWrite->getNodeValue(); XMLSize_t lent = XMLString::stringLen(nodeValue); switch (nodeToWrite->getNodeType()) { case DOMNode::TEXT_NODE: { if (checkFilter(nodeToWrite) != DOMNodeFilter::FILTER_ACCEPT) break; if (getFeature(FORMAT_PRETTY_PRINT_ID)) { fLineFeedInTextNodePrinted = false; fLastWhiteSpaceInTextNode = 0; if(XMLChar1_0::isAllSpaces(nodeValue, XMLString::stringLen(nodeValue))) { // skips whitespace-only text nodes unless whitespace-in-element is set. if (!getFeature(WHITESPACE_IN_ELEMENT_CONTENT_ID)) { break; } else { // // we need to trace if newline(s) have been printed out // to avoid generate extra newline for pretty printing, // as well as the number of whitespaces after the last // newline character to do indentation properly. // int pos = XMLString::lastIndexOf(nodeValue, chLF); if (-1 != pos) { fLineFeedInTextNodePrinted = true; fLastWhiteSpaceInTextNode = (unsigned int)(lent - pos); } else { // for those platforms using chCR alone as // a newline character pos = XMLString::lastIndexOf(nodeValue, chCR); if (-1 != pos) { fLineFeedInTextNodePrinted = true; fLastWhiteSpaceInTextNode = (unsigned int)(lent - pos); } } } } } setURCharRef(); // character data fFormatter->formatBuf(nodeValue, lent, XMLFormatter::CharEscapes); break; } case DOMNode::PROCESSING_INSTRUCTION_NODE: { if (checkFilter(nodeToWrite) != DOMNodeFilter::FILTER_ACCEPT) break; if(level == 1 && getFeature(FORMAT_PRETTY_PRINT_1ST_LEVEL_ID)) printNewLine(); printNewLine(); printIndent(level); TRY_CATCH_THROW ( *fFormatter << XMLFormatter::NoEscapes << gStartPI << nodeName; if (lent > 0) { *fFormatter << chSpace << nodeValue; } *fFormatter << gEndPI; ) break; } case DOMNode::DOCUMENT_NODE: // Not to be shown to Filter { // output BOM if needed processBOM(); setURCharRef(); const DOMDocument *docu = (const DOMDocument*)nodeToWrite; //[23] XMLDecl ::= '' //[24] VersionInfo ::= S 'version' Eq ("'" VersionNum "'" | '"' VersionNum '"') //[80] EncodingDecl ::= S 'encoding' Eq ('"' EncName '"' | "'" EncName //[32] SDDecl ::= S 'standalone' Eq (("'" ('yes' | 'no') "'") | ('"' ('yes' | 'no') '"')) // if (getFeature(XML_DECLARATION)) { // use the version and encoding resolved *fFormatter << gXMLDecl_VersionInfo << fDocumentVersion << gXMLDecl_separator; *fFormatter << gXMLDecl_EncodingDecl << fEncodingUsed << gXMLDecl_separator; const XMLCh* st = (docu->getXmlStandalone())? XMLUni::fgYesString : XMLUni::fgNoString; *fFormatter << gXMLDecl_SDDecl << st << gXMLDecl_separator; *fFormatter << gXMLDecl_endtag; } DOMNodeSPtr child = nodeToWrite->getFirstChild(); while( child != 0) { processNode(child, level); child = child->getNextSibling(); } printNewLine(); break; } case DOMNode::DOCUMENT_FRAGMENT_NODE: { setURCharRef(); DOMNode *child = nodeToWrite->getFirstChild(); while( child != 0) { processNode(child, level); child = child->getNextSibling(); } printNewLine(); break; } case DOMNode::ELEMENT_NODE: { DOMNodeFilter::FilterAction filterAction = checkFilter(nodeToWrite); if ( filterAction == DOMNodeFilter::FILTER_REJECT) break; if (!fLineFeedInTextNodePrinted) { if(level == 1 && getFeature(FORMAT_PRETTY_PRINT_1ST_LEVEL_ID)) printNewLine(); printNewLine(); } else { fLineFeedInTextNodePrinted = false; } printIndent(level); //track the line number the current node begins on int nodeLine = fCurrentLine; // add an entry in the namespace stack RefHashTableOf* namespaceMap=NULL; if ( filterAction == DOMNodeFilter::FILTER_ACCEPT) { // this element attributes child elements // accept yes yes yes // skip no no yes // TRY_CATCH_THROW ( // The name has to be representable without any escapes *fFormatter << XMLFormatter::NoEscapes << chOpenAngle << nodeName; ) // Output any attributes on this element setURCharRef(); DOMNamedNodeMap *attributes = nodeToWrite->getAttributes(); XMLSize_t attrCount = attributes->getLength(); // check if the namespace for the current node is already defined const XMLCh* prefix = nodeToWrite->getPrefix(); const XMLCh* uri = nodeToWrite->getNamespaceURI(); if((uri && uri[0]) || ((prefix==0 || prefix[0]==0) && isDefaultNamespacePrefixDeclared())) { if(prefix==0 || prefix[0]==0) prefix=XMLUni::fgZeroLenString; if(!isNamespaceBindingActive(prefix, uri)) { if(namespaceMap==NULL) { namespaceMap=new (fMemoryManager) RefHashTableOf(12, false, fMemoryManager); fNamespaceStack->addElement(namespaceMap); } namespaceMap->put((void*)prefix,(XMLCh*)uri); *fFormatter << XMLFormatter::NoEscapes << chSpace << XMLUni::fgXMLNSString; if(!XMLString::equals(prefix,XMLUni::fgZeroLenString)) *fFormatter << chColon << prefix; *fFormatter << chEqual << chDoubleQuote << XMLFormatter::AttrEscapes << uri << XMLFormatter::NoEscapes << chDoubleQuote; } } bool discard = getFeature(DISCARD_DEFAULT_CONTENT_ID); for (XMLSize_t i = 0; i < attrCount; i++) { DOMAttrSPtr attribute = (DOMAttr*)attributes->item(i); // Not to be shown to Filter // //"discard-default-content" // true // [required] (default) // Use whatever information available to the implementation // (i.e. XML schema, DTD, the specified flag on Attr nodes, // and so on) to decide what attributes and content should be // discarded or not. // Note that the specified flag on Attr nodes in itself is // not always reliable, it is only reliable when it is set // to false since the only case where it can be set to false // is if the attribute was created by the implementation. // The default content won't be removed if an implementation // does not have any information available. // false // [required] // Keep all attributes and all content. // if (discard && !((DOMAttr*)attribute )->getSpecified()) continue; // // Again the name has to be completely representable. But the // attribute can have refs and requires the attribute style // escaping. // // if this attribute is a namespace declaration, add it to the namespace map for the current level const XMLCh* ns = attribute->getNamespaceURI(); if (ns != 0 ) { if(XMLString::equals(ns, XMLUni::fgXMLNSURIName)) { if(namespaceMap==NULL) { namespaceMap=new (fMemoryManager) RefHashTableOf(12, false, fMemoryManager); fNamespaceStack->addElement(namespaceMap); } const XMLCh* nsPrefix = attribute->getLocalName(); if(XMLString::equals(attribute->getNodeName(),XMLUni::fgXMLNSString)) nsPrefix = XMLUni::fgZeroLenString; if(namespaceMap->containsKey((void*)nsPrefix)) continue; namespaceMap->put((void*)attribute->getLocalName(),(XMLCh*)attribute->getNodeValue()); } else if(!XMLString::equals(ns, XMLUni::fgXMLURIName)) { // check if the namespace for the current node is already defined const XMLCh* prefix = attribute->getPrefix(); if(prefix && prefix[0]) { const XMLCh* uri = attribute->getNamespaceURI(); if(!isNamespaceBindingActive(prefix, uri)) { if(namespaceMap==NULL) { namespaceMap=new (fMemoryManager) RefHashTableOf(12, false, fMemoryManager); fNamespaceStack->addElement(namespaceMap); } namespaceMap->put((void*)prefix,(XMLCh*)uri); *fFormatter << XMLFormatter::NoEscapes << chSpace << XMLUni::fgXMLNSString << chColon << prefix << chEqual << chDoubleQuote << XMLFormatter::AttrEscapes << uri << XMLFormatter::NoEscapes << chDoubleQuote; } } } } if (XMLString::equals(ns, XMLUni::fgXMLNSURIName) || checkFilter(attribute) == DOMNodeFilter::FILTER_ACCEPT) { *fFormatter << XMLFormatter::NoEscapes << chSpace << attribute->getNodeName() << chEqual << chDoubleQuote << XMLFormatter::AttrEscapes; if (getFeature(ENTITIES_ID)) { DOMNodeSPtr child = attribute->getFirstChild(); while( child != 0) { if(child->getNodeType()==DOMNode::TEXT_NODE) *fFormatter << child->getNodeValue(); else if(child->getNodeType()==DOMNode::ENTITY_REFERENCE_NODE) *fFormatter << XMLFormatter::NoEscapes << chAmpersand << child->getNodeName() << chSemiColon << XMLFormatter::AttrEscapes; child = child->getNextSibling(); } } else *fFormatter << attribute->getNodeValue(); *fFormatter << XMLFormatter::NoEscapes << chDoubleQuote; } } // end of for } // end of FILTER_ACCEPT level++; // FILTER_SKIP may start from here // // Test for the presence of children, which includes both // text content and nested elements. // DOMNodeSPtr child = nodeToWrite->getFirstChild(); if (child != 0) { // There are children. Close start-tag, and output children. // No escapes are legal here if (filterAction == DOMNodeFilter::FILTER_ACCEPT) *fFormatter << XMLFormatter::NoEscapes << chCloseAngle; while( child != 0) { processNode(child, level); child = child->getNextSibling(); } level--; if (filterAction == DOMNodeFilter::FILTER_ACCEPT) { //if we are not on the same line as when we started //this node then print a new line and indent if(nodeLine != fCurrentLine) { if (!fLineFeedInTextNodePrinted) { printNewLine(); } else { fLineFeedInTextNodePrinted = false; } if(nodeLine != fCurrentLine && level == 0 && getFeature(FORMAT_PRETTY_PRINT_1ST_LEVEL_ID)) printNewLine(); printIndent(level); } TRY_CATCH_THROW ( *fFormatter << XMLFormatter::NoEscapes << gEndElement << nodeName << chCloseAngle; ) } } else { level--; // // There were no children. Output the short form close of // the element start tag, making it an empty-element tag. // if (filterAction == DOMNodeFilter::FILTER_ACCEPT) { TRY_CATCH_THROW ( *fFormatter << XMLFormatter::NoEscapes << chForwardSlash << chCloseAngle; ) } } // remove the namespace map at this level if(namespaceMap!=NULL) fNamespaceStack->removeLastElement(); break; } case DOMNode::ATTRIBUTE_NODE: { if (checkFilter(nodeToWrite) != DOMNodeFilter::FILTER_ACCEPT) break; const XMLCh* localName = nodeToWrite->getLocalName(); // check if this is a DOM Level 1 Node if(localName == 0) *fFormatter << XMLFormatter::NoEscapes << nodeToWrite->getNodeName(); else *fFormatter << XMLFormatter::NoEscapes << chOpenCurly << nodeToWrite->getNamespaceURI() << chCloseCurly << localName; *fFormatter << chEqual << chDoubleQuote << XMLFormatter::AttrEscapes; if (getFeature(ENTITIES_ID)) { DOMNodeSPtr child = nodeToWrite->getFirstChild(); while( child != 0) { if(child->getNodeType()==DOMNode::TEXT_NODE) *fFormatter << child->getNodeValue(); else if(child->getNodeType()==DOMNode::ENTITY_REFERENCE_NODE) *fFormatter << XMLFormatter::NoEscapes << chAmpersand << child->getNodeName() << chSemiColon << XMLFormatter::AttrEscapes; child = child->getNextSibling(); } } else *fFormatter << nodeValue; *fFormatter << XMLFormatter::NoEscapes << chDoubleQuote; break; } case DOMNode::ENTITY_REFERENCE_NODE: { //"entities" //true //[required] (default) //Keep EntityReference and Entity nodes in the document. //false //[optional] //Remove all EntityReference and Entity nodes from the document, // putting the entity expansions directly in their place. // Text nodes are into "normal" form. //Only EntityReference nodes to non-defined entities are kept in the document. if (checkFilter(nodeToWrite) != DOMNodeFilter::FILTER_ACCEPT) break; if (getFeature(ENTITIES_ID)) { TRY_CATCH_THROW ( *fFormatter << XMLFormatter::NoEscapes << chAmpersand << nodeName << chSemiColon; ) } else { // check if the referenced entity is defined or not if (nodeToWrite->getOwnerDocument()->getDoctype()->getEntities()->getNamedItem(nodeName)) { DOMNodeSPtr child; for (child = nodeToWrite->getFirstChild(); child != 0; child = child->getNextSibling()) { processNode(child, level); } } else { TRY_CATCH_THROW ( *fFormatter< unrep-char // =============================================================== // true split split // false fails fails // case DOMNode::CDATA_SECTION_NODE: { if (checkFilter(nodeToWrite) != DOMNodeFilter::FILTER_ACCEPT) break; if (getFeature(SPLIT_CDATA_SECTIONS_ID)) { // it is fairly complicated and we process this // in a separate function. procCdataSection(nodeValue, nodeToWrite); } else { // search for "]]>", the node value is not supposed to have this if (XMLString::patternMatch((XMLCh*) nodeValue, gEndCDATA) != -1) { reportError(nodeToWrite, DOMError::DOM_SEVERITY_FATAL_ERROR, XMLDOMMsg::Writer_NestedCDATA); } TRY_CATCH_THROW ( // transcoder throws exception for unrep chars *fFormatter << XMLFormatter::NoEscapes << gStartCDATA << nodeValue << gEndCDATA; ) } break; } case DOMNode::COMMENT_NODE: { if (checkFilter(nodeToWrite) != DOMNodeFilter::FILTER_ACCEPT) break; // Figure out if we want pretty-printing for this comment. // If this comment node does not have any element siblings // (i.e., it is a text node) then we don't want to add any // whitespaces since that might be significant to the // application. Otherwise we want pretty-printing. // bool pretty = (level == 0); // Document-level comments. if (!pretty) { // See if we have any element siblings. // const DOMNode* s = nodeToWrite->getNextSibling (); while (s != 0 && s->getNodeType () != DOMNode::ELEMENT_NODE) s = s->getNextSibling (); if (s != 0) pretty = true; else { s = nodeToWrite->getPreviousSibling (); while (s != 0 && s->getNodeType () != DOMNode::ELEMENT_NODE) s = s->getPreviousSibling (); if (s != 0) pretty = true; } } if (pretty) { if(level == 1 && getFeature(FORMAT_PRETTY_PRINT_1ST_LEVEL_ID)) printNewLine(); printNewLine(); printIndent(level); } TRY_CATCH_THROW ( *fFormatter << XMLFormatter::NoEscapes << gStartComment << nodeValue << gEndComment; ) break; } case DOMNode::DOCUMENT_TYPE_NODE: // Not to be shown to Filter { const DOMDocumentType *doctype = (const DOMDocumentType *)nodeToWrite; fFormatter->setEscapeFlags(XMLFormatter::NoEscapes); printNewLine(); printIndent(level); TRY_CATCH_THROW ( *fFormatter << gStartDoctype << nodeName; const XMLCh *id = doctype->getPublicId(); if (id && *id) { *fFormatter << chSpace << gPublic << id << chDoubleQuote; id = doctype->getSystemId(); if (id && *id) { *fFormatter << chSpace << chDoubleQuote << id << chDoubleQuote; } else { // // 4.2.2 External Entities // [Definition: If the entity is not internal, // it is an external entity, declared as follows:] // External Entity Declaration // [75] ExternalID ::= 'SYSTEM' S SystemLiteral // | 'PUBLIC' S PubidLiteral S SystemLiteral // reportError(nodeToWrite, DOMError::DOM_SEVERITY_FATAL_ERROR, XMLDOMMsg::Writer_NotRecognizedType); // systemLiteral not found } } else { id = doctype->getSystemId(); if (id && *id) { *fFormatter << chSpace << gSystem << id << chDoubleQuote; } } id = doctype->getInternalSubset(); if (id && *id) { *fFormatter << chSpace << chOpenSquare << id << chCloseSquare; } *fFormatter << chCloseAngle; ) // end of TRY_CATCH_THROW break; } case DOMNode::ENTITY_NODE: // Not to be shown to Filter { // // REVISIT: how does the feature "entities" impact // entity node? // printNewLine(); printIndent(level); fFormatter->setEscapeFlags(XMLFormatter::NoEscapes); *fFormatter << gStartEntity << nodeName; const XMLCh * id = ((const DOMEntity*)nodeToWrite)->getPublicId(); if (id) *fFormatter << gPublic << id << chDoubleQuote; id = ((const DOMEntity*)nodeToWrite)->getSystemId(); if (id) *fFormatter << gSystem << id << chDoubleQuote; id = ((const DOMEntity*)nodeToWrite)->getNotationName(); if (id) *fFormatter << gNotation << id << chDoubleQuote; *fFormatter << chCloseAngle; break; } default: /*** This is an implementation specific behaviour, we abort if a user derived class has not dealt with this node type. ***/ { if(!customNodeSerialize(nodeToWrite, level)) { reportError(nodeToWrite, DOMError::DOM_SEVERITY_FATAL_ERROR, XMLDOMMsg::Writer_NotRecognizedType); // UnreognizedNodeType; } } break; } } bool DOMLSSerializerImpl::customNodeSerialize(const DOMNode* const, int) { return false; } // // DOMNodeFilter::FilterAction DOMLSSerializerImpl::checkFilter(const DOMNode* const node) const { if (!fFilter || ((fFilter->getWhatToShow() & (1 << (node->getNodeType() - 1))) == 0)) return DOMNodeFilter::FILTER_ACCEPT; // // if and only if there is a filter, and it is interested // in the node type, then we pass the node to the filter // for examination // return (DOMNodeFilter::FilterAction) fFilter->acceptNode(node); } bool DOMLSSerializerImpl::checkFeature(const XMLCh* const featName , bool toThrow , int& featureId) const { // check for null and/or empty feature name if (!featName || !*featName) { if (toThrow) throw DOMException(DOMException::NOT_FOUND_ERR, 0, fMemoryManager); return false; } featureId = INVALID_FEATURE_ID; if (XMLString::equals(featName, XMLUni::fgDOMWRTCanonicalForm)) featureId = CANONICAL_FORM_ID; else if (XMLString::equals(featName, XMLUni::fgDOMWRTDiscardDefaultContent)) featureId = DISCARD_DEFAULT_CONTENT_ID; else if (XMLString::equals(featName, XMLUni::fgDOMWRTEntities)) featureId = ENTITIES_ID; else if (XMLString::equals(featName, XMLUni::fgDOMWRTFormatPrettyPrint)) featureId = FORMAT_PRETTY_PRINT_ID; else if (XMLString::equals(featName, XMLUni::fgDOMWRTNormalizeCharacters)) featureId = NORMALIZE_CHARACTERS_ID; else if (XMLString::equals(featName, XMLUni::fgDOMWRTSplitCdataSections)) featureId = SPLIT_CDATA_SECTIONS_ID; else if (XMLString::equals(featName, XMLUni::fgDOMWRTValidation)) featureId = VALIDATION_ID; else if (XMLString::equals(featName, XMLUni::fgDOMWRTWhitespaceInElementContent)) featureId = WHITESPACE_IN_ELEMENT_CONTENT_ID; else if (XMLString::equals(featName, XMLUni::fgDOMWRTBOM)) featureId = BYTE_ORDER_MARK_ID; else if (XMLString::equals(featName, XMLUni::fgDOMXMLDeclaration)) featureId = XML_DECLARATION; else if (XMLString::equals(featName, XMLUni::fgDOMWRTXercesPrettyPrint)) featureId = FORMAT_PRETTY_PRINT_1ST_LEVEL_ID; //feature name not resolvable if (featureId == INVALID_FEATURE_ID) { if (toThrow) throw DOMException(DOMException::NOT_FOUND_ERR, 0, fMemoryManager); return false; } return true; } bool DOMLSSerializerImpl::reportError(const DOMNode* const errorNode , DOMError::ErrorSeverity errorType , const XMLCh* const errorMsg) { bool toContinueProcess = true; // default value for no error handler if (fErrorHandler) { DOMLocatorImpl locator(0, 0, (DOMNode*) errorNode, 0); DOMErrorImpl domError(errorType , errorMsg, &locator); try { toContinueProcess = fErrorHandler->handleError(domError); } catch(...) { } } if (errorType != DOMError::DOM_SEVERITY_WARNING) fErrorCount++; return toContinueProcess; } bool DOMLSSerializerImpl::reportError(const DOMNode* const errorNode , DOMError::ErrorSeverity errorType , XMLDOMMsg::Codes toEmit) { const XMLSize_t msgSize = 1023; XMLCh errText[msgSize + 1]; DOMImplementationImpl::getMsgLoader4DOM()->loadMsg(toEmit, errText, msgSize); bool toContinueProcess = true; // default value for no error handler if (fErrorHandler) { DOMLocatorImpl locator(0, 0, (DOMNode*) errorNode, 0); DOMErrorImpl domError(errorType , errText, &locator); try { toContinueProcess = fErrorHandler->handleError(domError); } catch(...) { } } if (errorType != DOMError::DOM_SEVERITY_WARNING) fErrorCount++; if (errorType == DOMError::DOM_SEVERITY_FATAL_ERROR || !toContinueProcess) throw toEmit; return toContinueProcess; } // // // void DOMLSSerializerImpl::procCdataSection(const XMLCh* const nodeValue , const DOMNode* const nodeToWrite) { static const XMLSize_t offset = XMLString::stringLen(gEndCDATA); /*** * Append a ']]>' at the end */ XMLSize_t len = XMLString::stringLen(nodeValue); XMLCh* repNodeValue = (XMLCh*) fMemoryManager->allocate ( (len + offset + 1) * sizeof(XMLCh) );//new XMLCh [len + offset + 1]; XMLString::copyString(repNodeValue, nodeValue); XMLString::catString(repNodeValue, gEndCDATA); ArrayJanitor jName(repNodeValue, fMemoryManager); XMLCh* curPtr = (XMLCh*) repNodeValue; XMLCh* nextPtr = 0; int endTagPos = -1; bool endTagFound = true; while (endTagFound) { endTagPos = XMLString::patternMatch(curPtr, gEndCDATA); if (endTagPos != -1) { nextPtr = curPtr + endTagPos + offset; // skip the ']]>' *(curPtr + endTagPos) = chNull; //nullify the first ']' if (XMLSize_t(endTagPos) != len) reportError(nodeToWrite, DOMError::DOM_SEVERITY_WARNING, XMLDOMMsg::Writer_NestedCDATA); len = len - endTagPos - offset; } else { endTagFound = false; } /*** to check ]]>]]> ***/ if (endTagPos == 0) { TRY_CATCH_THROW ( *fFormatter << XMLFormatter::NoEscapes << gStartCDATA << gEndCDATA; ) } else { procUnrepCharInCdataSection(curPtr, nodeToWrite); } if (endTagFound) { *(nextPtr - offset) = chCloseSquare; //restore the first ']' curPtr = nextPtr; } } } // // // void DOMLSSerializerImpl::procUnrepCharInCdataSection(const XMLCh* const nodeValue , const DOMNode* const nodeToWrite) { // // We have to check each character and see if it could be represented. // As long as it can, we just keep up with where we started and how // many chars we've checked. When we hit an unrepresentable one, we // stop, transcode everything we've collected, then start handling // the unrepresentables via char refs. We repeat this until we get all // the chars done. // const XMLCh* srcPtr = nodeValue; const XMLCh* endPtr = nodeValue + XMLString::stringLen(nodeValue); // Set up the common part of the buffer that we build char refs into XMLCh tmpBuf[32]; tmpBuf[0] = chAmpersand; tmpBuf[1] = chPound; tmpBuf[2] = chLatin_x; while (srcPtr < endPtr) { const XMLCh* tmpPtr = srcPtr; while (tmpPtr < endPtr) { if (fFormatter->getTranscoder()->canTranscodeTo(*tmpPtr)) tmpPtr++; else break; } if (tmpPtr > srcPtr) { TRY_CATCH_THROW ( *fFormatter << XMLFormatter::NoEscapes << gStartCDATA; ) // We got at least some chars that can be done normally fFormatter->formatBuf ( srcPtr , tmpPtr - srcPtr , XMLFormatter::NoEscapes , XMLFormatter::UnRep_Fail ); TRY_CATCH_THROW ( *fFormatter << XMLFormatter::NoEscapes << gEndCDATA; ) // Update the source pointer to our new spot srcPtr = tmpPtr; } else { // // We hit something unrepresentable. So continue forward doing // char refs until we hit something representable again or the // end of input. // // one warning for consective unrep chars reportError(nodeToWrite, DOMError::DOM_SEVERITY_WARNING, XMLDOMMsg::Writer_NotRepresentChar); while (srcPtr < endPtr) { // Build a char ref for the current char XMLString::binToText(*srcPtr, &tmpBuf[3], 8, 16, fMemoryManager); const XMLSize_t bufLen = XMLString::stringLen(tmpBuf); tmpBuf[bufLen] = chSemiColon; tmpBuf[bufLen+1] = chNull; // And now call recursively back to our caller to format this fFormatter->formatBuf ( tmpBuf , bufLen + 1 , XMLFormatter::NoEscapes , XMLFormatter::UnRep_Fail ); // Move up the source pointer and break out if needed srcPtr++; if (fFormatter->getTranscoder()->canTranscodeTo(*srcPtr)) break; } } } } void DOMLSSerializerImpl::processNode(const DOMNode* const nodeToWrite) { processNode(nodeToWrite, 0); } bool DOMLSSerializerImpl::canSetFeature(const int featureId , bool val) const { return featuresSupported[2*featureId + (val? 0: 1)]; } void DOMLSSerializerImpl::printNewLine() { if (getFeature(FORMAT_PRETTY_PRINT_ID)) { fCurrentLine++; *fFormatter << fNewLineUsed; } } void DOMLSSerializerImpl::printIndent(unsigned int level) { if (getFeature(FORMAT_PRETTY_PRINT_ID)) { if (fLastWhiteSpaceInTextNode) { unsigned int indentLevel = fLastWhiteSpaceInTextNode/2; // two chSpaces equals one indent level fLastWhiteSpaceInTextNode = 0; // if fLastWhiteSpaceInTextNode/2 is greater than level, then // it means too many spaces have been written to the // output stream and we can no longer indent properly if(indentLevel < level) level -= indentLevel; else level = 0; } for(unsigned int i = 0; i < level; i++) *fFormatter << chSpace << chSpace; } } void DOMLSSerializerImpl::release() { DOMLSSerializerImpl* writer = (DOMLSSerializerImpl*) this; delete writer; } void DOMLSSerializerImpl::processBOM() { // if the feature is not set, don't output bom if (!getFeature(BYTE_ORDER_MARK_ID)) return; if ((XMLString::compareIStringASCII(fEncodingUsed, XMLUni::fgUTF8EncodingString) == 0) || (XMLString::compareIStringASCII(fEncodingUsed, XMLUni::fgUTF8EncodingString2) == 0) ) { fFormatter->writeBOM(BOM_utf8, 3); } else if ((XMLString::compareIStringASCII(fEncodingUsed, XMLUni::fgUTF16LEncodingString) == 0) || (XMLString::compareIStringASCII(fEncodingUsed, XMLUni::fgUTF16LEncodingString2) == 0) ) { fFormatter->writeBOM(BOM_utf16le, 2); } else if ((XMLString::compareIStringASCII(fEncodingUsed, XMLUni::fgUTF16BEncodingString) == 0) || (XMLString::compareIStringASCII(fEncodingUsed, XMLUni::fgUTF16BEncodingString2) == 0) ) { fFormatter->writeBOM(BOM_utf16be, 2); } else if ((XMLString::compareIStringASCII(fEncodingUsed, XMLUni::fgUTF16EncodingString) == 0) || (XMLString::compareIStringASCII(fEncodingUsed, XMLUni::fgUTF16EncodingString2) == 0) || (XMLString::compareIStringASCII(fEncodingUsed, XMLUni::fgUTF16EncodingString3) == 0) || (XMLString::compareIStringASCII(fEncodingUsed, XMLUni::fgUTF16EncodingString4) == 0) || (XMLString::compareIStringASCII(fEncodingUsed, XMLUni::fgUTF16EncodingString5) == 0) || (XMLString::compareIStringASCII(fEncodingUsed, XMLUni::fgUTF16EncodingString6) == 0) || (XMLString::compareIStringASCII(fEncodingUsed, XMLUni::fgUTF16EncodingString7) == 0) ) { if (XMLPlatformUtils::fgXMLChBigEndian) fFormatter->writeBOM(BOM_utf16be, 2); else fFormatter->writeBOM(BOM_utf16le, 2); } else if ((XMLString::compareIStringASCII(fEncodingUsed, XMLUni::fgUCS4LEncodingString) == 0) || (XMLString::compareIStringASCII(fEncodingUsed, XMLUni::fgUCS4LEncodingString2) == 0) ) { fFormatter->writeBOM(BOM_ucs4le, 4); } else if ((XMLString::compareIStringASCII(fEncodingUsed, XMLUni::fgUCS4BEncodingString) == 0) || (XMLString::compareIStringASCII(fEncodingUsed, XMLUni::fgUCS4BEncodingString2) == 0) ) { fFormatter->writeBOM(BOM_ucs4be, 4); } else if ((XMLString::compareIStringASCII(fEncodingUsed, XMLUni::fgUCS4EncodingString) == 0) || (XMLString::compareIStringASCII(fEncodingUsed, XMLUni::fgUCS4EncodingString2) == 0) || (XMLString::compareIStringASCII(fEncodingUsed, XMLUni::fgUCS4EncodingString3) == 0) || (XMLString::compareIStringASCII(fEncodingUsed, XMLUni::fgUCS4EncodingString4) == 0) || (XMLString::compareIStringASCII(fEncodingUsed, XMLUni::fgUCS4EncodingString5) == 0) ) { if (XMLPlatformUtils::fgXMLChBigEndian) fFormatter->writeBOM(BOM_ucs4be, 4); else fFormatter->writeBOM(BOM_ucs4le, 4); } } bool DOMLSSerializerImpl::isDefaultNamespacePrefixDeclared() const { for(XMLSize_t i=fNamespaceStack->size();i>0;i--) { RefHashTableOf* curNamespaceMap=fNamespaceStack->elementAt(i-1); const XMLCh* thisUri=curNamespaceMap->get((void*)XMLUni::fgZeroLenString); if(thisUri) return true; } return false; } bool DOMLSSerializerImpl::isNamespaceBindingActive(const XMLCh* prefix, const XMLCh* uri) const { for(XMLSize_t i=fNamespaceStack->size();i>0;i--) { RefHashTableOf* curNamespaceMap=fNamespaceStack->elementAt(i-1); const XMLCh* thisUri=curNamespaceMap->get((void*)prefix); // if the prefix has been declared, check if it binds to the correct namespace, otherwise, reports it isn't bound if(thisUri) return XMLString::equals(thisUri,uri); } return false; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMTreeWalkerImpl.cpp0000644000175000017500000002702211030714661022143 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMTreeWalkerImpl.cpp 671894 2008-06-26 13:29:21Z borisk $ */ #include "DOMTreeWalkerImpl.hpp" #include "DOMDocumentImpl.hpp" #include #include XERCES_CPP_NAMESPACE_BEGIN /** constructor */ DOMTreeWalkerImpl::DOMTreeWalkerImpl ( DOMNode* root, DOMNodeFilter::ShowType whatToShow, DOMNodeFilter* nodeFilter, bool expandEntityRef) : fWhatToShow(whatToShow), fNodeFilter(nodeFilter), fCurrentNode(root), fRoot(root), fExpandEntityReferences(expandEntityRef) { } DOMTreeWalkerImpl::DOMTreeWalkerImpl (const DOMTreeWalkerImpl& twi) : DOMTreeWalker(twi), fWhatToShow(twi.fWhatToShow), fNodeFilter(twi.fNodeFilter), fCurrentNode(twi.fCurrentNode), fRoot(twi.fRoot), fExpandEntityReferences(twi.fExpandEntityReferences) { } DOMTreeWalkerImpl& DOMTreeWalkerImpl::operator= (const DOMTreeWalkerImpl& twi) { if (this != &twi) { fCurrentNode = twi.fCurrentNode; fRoot = twi.fRoot; fWhatToShow = twi.fWhatToShow; fNodeFilter = twi.fNodeFilter; fExpandEntityReferences = twi.fExpandEntityReferences; } return *this; } /** Return the root node */ DOMNode* DOMTreeWalkerImpl::getRoot () { return fRoot; } /** Return the whatToShow value */ DOMNodeFilter::ShowType DOMTreeWalkerImpl::getWhatToShow () { return fWhatToShow; } /** Return the NodeFilter */ DOMNodeFilter* DOMTreeWalkerImpl::getFilter () { return fNodeFilter; } /** Get the expandEntity reference flag. */ bool DOMTreeWalkerImpl::getExpandEntityReferences() { return fExpandEntityReferences; } /** Return the current Node. */ DOMNode* DOMTreeWalkerImpl::getCurrentNode () { return fCurrentNode; } /** Return the current Node. */ void DOMTreeWalkerImpl::setCurrentNode (DOMNode* node) { if (!node) throw DOMException(DOMException::NOT_SUPPORTED_ERR, 0, GetDOMTreeWalkerMemoryManager); fCurrentNode = node; } /** Return the parent Node from the current node, * after applying filter, whatToshow. * If result is not null, set the current Node. */ DOMNode* DOMTreeWalkerImpl::parentNode () { if (!fCurrentNode) return 0; DOMNode* node = getParentNode(fCurrentNode); if (node != 0) { fCurrentNode = node; } return node; } /** Return the first child Node from the current node, * after applying filter, whatToshow. * If result is not null, set the current Node. */ DOMNode* DOMTreeWalkerImpl::firstChild () { if (!fCurrentNode) return 0; if(!fExpandEntityReferences && fCurrentNode->getNodeType()==DOMNode::ENTITY_REFERENCE_NODE) return 0; DOMNode* node = getFirstChild(fCurrentNode); if (node != 0) { fCurrentNode = node; } return node; } /** Return the last child Node from the current node, * after applying filter, whatToshow. * If result is not null, set the current Node. */ DOMNode* DOMTreeWalkerImpl::lastChild () { if (!fCurrentNode) return 0; if(!fExpandEntityReferences && fCurrentNode->getNodeType()==DOMNode::ENTITY_REFERENCE_NODE) return 0; DOMNode* node = getLastChild(fCurrentNode); if (node != 0) { fCurrentNode = node; } return node; } /** Return the previous sibling Node from the current node, * after applying filter, whatToshow. * If result is not null, set the current Node. */ DOMNode* DOMTreeWalkerImpl::previousSibling () { if (!fCurrentNode) return 0; DOMNode* node = getPreviousSibling(fCurrentNode); if (node != 0) { fCurrentNode = node; } return node; } /** Return the next sibling Node from the current node, * after applying filter, whatToshow. * If result is not null, set the current Node. */ DOMNode* DOMTreeWalkerImpl::nextSibling () { if (!fCurrentNode) return 0; DOMNode* node = getNextSibling(fCurrentNode); if (node != 0) { fCurrentNode = node; } return node; } /** Return the previous Node from the current node, * after applying filter, whatToshow. * If result is not null, set the current Node. */ DOMNode* DOMTreeWalkerImpl::previousNode () { if (!fCurrentNode) return 0; // get sibling DOMNode* node = getPreviousSibling(fCurrentNode); if (node == 0) { node = getParentNode(fCurrentNode); if ( node != 0) { fCurrentNode = node; } return node; } else { // get the lastChild of result. DOMNode* lastChild = getLastChild(node); // if there is a lastChild which passes filters return it. if (lastChild != 0) { fCurrentNode = lastChild; } else { fCurrentNode = node; } return fCurrentNode; } } /** Return the next Node from the current node, * after applying filter, whatToshow. * If result is not null, set the current Node. */ DOMNode* DOMTreeWalkerImpl::nextNode () { if (!fCurrentNode) return 0; DOMNode* node = getFirstChild(fCurrentNode); if (node != 0) { fCurrentNode = node; return node; } else { node = getNextSibling(fCurrentNode); if (node != 0) { fCurrentNode = node; return node; } else { // return parent's 1st sibling. DOMNode* parent = getParentNode(fCurrentNode); while ( parent != 0) { node = getNextSibling(parent); if (node != 0) { fCurrentNode = node; return node; } else { parent = getParentNode(parent); } } return node; } } } /** Internal function. * Return the parent Node, from the input node * after applying filter, whatToshow. * The current node is not consulted or set. */ DOMNode* DOMTreeWalkerImpl::getParentNode (DOMNode* node) { if (!node || node == fRoot) return 0; DOMNode* newNode = node->getParentNode(); if (!newNode) return 0; short accept = acceptNode(newNode); if (accept == DOMNodeFilter::FILTER_ACCEPT) return newNode; return getParentNode(newNode); } /** Internal function. * Return the nextSibling Node, from the input node * after applying filter, whatToshow. * The current node is not consulted or set. */ DOMNode* DOMTreeWalkerImpl::getNextSibling (DOMNode* node) { if (!node || node == fRoot) return 0; DOMNode* newNode = node->getNextSibling(); if (!newNode) { newNode = node->getParentNode(); if (!newNode || node == fRoot) return 0; short parentAccept = acceptNode(newNode); if (parentAccept == DOMNodeFilter::FILTER_SKIP) { return getNextSibling(newNode); } return 0; } short accept = acceptNode(newNode); if (accept == DOMNodeFilter::FILTER_ACCEPT) return newNode; else if (accept == DOMNodeFilter::FILTER_SKIP) { DOMNode* fChild = getFirstChild(newNode); if (!fChild && !newNode->hasChildNodes()) { return getNextSibling(newNode); } return fChild; } return getNextSibling(newNode); } /** Internal function. * Return the previous sibling Node, from the input node * after applying filter, whatToshow. * The current node is not consulted or set. */ DOMNode* DOMTreeWalkerImpl::getPreviousSibling (DOMNode* node) { if (!node || node == fRoot) return 0; DOMNode* newNode = node->getPreviousSibling(); if (!newNode) { newNode = node->getParentNode(); if (!newNode || node == fRoot) return 0; short parentAccept = acceptNode(newNode); if (parentAccept == DOMNodeFilter::FILTER_SKIP) { return getPreviousSibling(newNode); } return 0; } short accept = acceptNode(newNode); if (accept == DOMNodeFilter::FILTER_ACCEPT) return newNode; else if (accept == DOMNodeFilter::FILTER_SKIP) { DOMNode* fChild = getLastChild(newNode); if (!fChild && !newNode->hasChildNodes()) { return getPreviousSibling(newNode); } return fChild; } return getPreviousSibling(newNode); } /** Internal function. * Return the first child Node, from the input node * after applying filter, whatToshow. * The current node is not consulted or set. */ DOMNode* DOMTreeWalkerImpl::getFirstChild (DOMNode* node) { if (!node) return 0; if(!fExpandEntityReferences && node->getNodeType()==DOMNode::ENTITY_REFERENCE_NODE) return 0; DOMNode* newNode = node->getFirstChild(); if (!newNode) return 0; short accept = acceptNode(newNode); if (accept == DOMNodeFilter::FILTER_ACCEPT) return newNode; else if (accept == DOMNodeFilter::FILTER_SKIP && newNode->hasChildNodes()) { return getFirstChild(newNode); } return getNextSibling(newNode); } /** Internal function. * Return the last child Node, from the input node * after applying filter, whatToshow. * The current node is not consulted or set. */ DOMNode* DOMTreeWalkerImpl::getLastChild (DOMNode* node) { if (!node) return 0; if(!fExpandEntityReferences && node->getNodeType()==DOMNode::ENTITY_REFERENCE_NODE) return 0; DOMNode* newNode = node->getLastChild(); if (!newNode) return 0; short accept = acceptNode(newNode); if (accept == DOMNodeFilter::FILTER_ACCEPT) return newNode; else if (accept == DOMNodeFilter::FILTER_SKIP && newNode->hasChildNodes()) { return getLastChild(newNode); } return getPreviousSibling(newNode); } /** The node is accepted if it passes the whatToShow and the filter. */ short DOMTreeWalkerImpl::acceptNode (DOMNode* node) { if (fNodeFilter == 0) { if ( ( fWhatToShow & (1 << (node->getNodeType() - 1))) != 0) { return DOMNodeFilter::FILTER_ACCEPT; } else { return DOMNodeFilter::FILTER_SKIP; } } else { // REVISIT: This logic is unclear from the spec! if ((fWhatToShow & (1 << (node->getNodeType() - 1))) != 0 ) { return fNodeFilter->acceptNode(node); } else { // what to show has failed! if (fNodeFilter->acceptNode(node) == DOMNodeFilter::FILTER_REJECT) { return DOMNodeFilter::FILTER_REJECT; } else { return DOMNodeFilter::FILTER_SKIP; } } } } void DOMTreeWalkerImpl::release() { // for performance reason, do not recycle pointer // chance that this is allocated again and again is not usual } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMElementImpl.cpp0000644000175000017500000007001711325541216021472 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMElementImpl.cpp 901107 2010-01-20 08:45:02Z borisk $ */ #include "DOMElementImpl.hpp" #include #include #include #include #include #include "DOMAttrMapImpl.hpp" #include "DOMAttrImpl.hpp" #include "DOMDocumentImpl.hpp" #include "DOMParentNode.hpp" #include "DOMCasts.hpp" #include "DOMElementNSImpl.hpp" #include "DOMTypeInfoImpl.hpp" #include "DOMDocumentTypeImpl.hpp" #include XERCES_CPP_NAMESPACE_BEGIN class DOMAttr; DOMElementImpl::DOMElementImpl(DOMDocument *ownerDoc, const XMLCh *eName) : fNode(ownerDoc), fParent(ownerDoc), fAttributes(0), fDefaultAttributes(0) { DOMDocumentImpl *docImpl = (DOMDocumentImpl *)ownerDoc; fName = docImpl->getPooledString(eName); setupDefaultAttributes(); if (!fDefaultAttributes) { fDefaultAttributes = new (docImpl) DOMAttrMapImpl(this); fAttributes = new (docImpl) DOMAttrMapImpl(this); } else { fAttributes = new (docImpl) DOMAttrMapImpl(this, fDefaultAttributes); } } DOMElementImpl::DOMElementImpl(const DOMElementImpl &other, bool deep) : DOMElement(other), fNode (other.fParent.fOwnerDocument), fParent (other.fParent.fOwnerDocument), fAttributes(0), fDefaultAttributes(0) { fName = other.fName; if (deep) fParent.cloneChildren(&other); if (other.getAttributes()) { fAttributes = ((DOMAttrMapImpl *)other.getAttributes())->cloneAttrMap(this); } if (other.getDefaultAttributes()) { fDefaultAttributes = ((DOMAttrMapImpl *)other.getDefaultAttributes())->cloneAttrMap(this); } if (!fDefaultAttributes) setupDefaultAttributes(); if (!fDefaultAttributes) fDefaultAttributes = new (fParent.fOwnerDocument) DOMAttrMapImpl(this); if (!fAttributes) { if (!fDefaultAttributes) { fAttributes = new (fParent.fOwnerDocument) DOMAttrMapImpl(this); } else { fAttributes = new (fParent.fOwnerDocument) DOMAttrMapImpl(this, fDefaultAttributes); } } } DOMElementImpl::~DOMElementImpl() { } DOMNode *DOMElementImpl::cloneNode(bool deep) const { DOMNode* newNode = new (fParent.fOwnerDocument, DOMMemoryManager::ELEMENT_OBJECT) DOMElementImpl(*this, deep); fNode.callUserDataHandlers(DOMUserDataHandler::NODE_CLONED, this, newNode); return newNode; } const XMLCh * DOMElementImpl::getNodeName() const { return fName; } DOMNode::NodeType DOMElementImpl::getNodeType() const { return DOMNode::ELEMENT_NODE; } const XMLCh * DOMElementImpl::getAttribute(const XMLCh *nam) const { DOMNode * attr = fAttributes->getNamedItem(nam); if (attr) return attr->getNodeValue(); return XMLUni::fgZeroLenString; } DOMAttr *DOMElementImpl::getAttributeNode(const XMLCh *nam) const { return (DOMAttr *)fAttributes->getNamedItem(nam); } DOMNamedNodeMap *DOMElementImpl::getAttributes() const { DOMElementImpl *ncThis = (DOMElementImpl *)this; // cast off const return ncThis->fAttributes; } DOMNodeList *DOMElementImpl::getElementsByTagName(const XMLCh *tagname) const { DOMDocumentImpl *docImpl = (DOMDocumentImpl *)fParent.fOwnerDocument; return docImpl->getDeepNodeList(this,tagname); } const XMLCh * DOMElementImpl::getTagName() const { return fName; } void DOMElementImpl::removeAttribute(const XMLCh *nam) { if (fNode.isReadOnly()) throw DOMException( DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMNodeMemoryManager); int i = fAttributes->findNamePoint(nam); if (i >= 0) { DOMNode *att = fAttributes->removeNamedItemAt(i); ((DOMAttrImpl *)att)->removeAttrFromIDNodeMap(); att->release(); } } DOMAttr *DOMElementImpl::removeAttributeNode(DOMAttr *oldAttr) { if (fNode.isReadOnly()) throw DOMException( DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMNodeMemoryManager); DOMNode* found = 0; // Since there is no removeAttributeNodeNS, check if this oldAttr has NS or not const XMLCh* localName = oldAttr->getLocalName(); int i = 0; if (localName) i = fAttributes->findNamePoint(oldAttr->getNamespaceURI(), localName); else i = fAttributes->findNamePoint(oldAttr->getName()); if (i >= 0) { // If it is in fact the right object, remove it. found = fAttributes->item(i); if (found == oldAttr) { fAttributes->removeNamedItemAt(i); ((DOMAttrImpl *)oldAttr)->removeAttrFromIDNodeMap(); } else throw DOMException(DOMException::NOT_FOUND_ERR, 0, GetDOMNodeMemoryManager); } else throw DOMException(DOMException::NOT_FOUND_ERR, 0, GetDOMNodeMemoryManager); return (DOMAttr *)found; } void DOMElementImpl::setAttribute(const XMLCh *nam, const XMLCh *val) { if (fNode.isReadOnly()) throw DOMException( DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMNodeMemoryManager); DOMAttr* newAttr = getAttributeNode(nam); if (!newAttr) { newAttr = fParent.fOwnerDocument->createAttribute(nam); fAttributes->setNamedItem(newAttr); } newAttr->setNodeValue(val); } void DOMElementImpl::setIdAttribute(const XMLCh* name, bool isId) { if (fNode.isReadOnly()) throw DOMException( DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMNodeMemoryManager); DOMAttr *attr = getAttributeNode(name); if (!attr) throw DOMException(DOMException::NOT_FOUND_ERR, 0, GetDOMNodeMemoryManager); if(isId) ((DOMAttrImpl *)attr)->addAttrToIDNodeMap(); else ((DOMAttrImpl *)attr)->removeAttrFromIDNodeMap(); } void DOMElementImpl::setIdAttributeNS(const XMLCh* namespaceURI, const XMLCh* localName, bool isId) { if (fNode.isReadOnly()) throw DOMException( DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMNodeMemoryManager); DOMAttr *attr = getAttributeNodeNS(namespaceURI, localName); if (!attr) throw DOMException(DOMException::NOT_FOUND_ERR, 0, GetDOMNodeMemoryManager); if(isId) ((DOMAttrImpl *)attr)->addAttrToIDNodeMap(); else ((DOMAttrImpl *)attr)->removeAttrFromIDNodeMap(); } void DOMElementImpl::setIdAttributeNode(const DOMAttr *idAttr, bool isId) { if (fNode.isReadOnly()) throw DOMException( DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMNodeMemoryManager); DOMAttr *attr; const XMLCh* localName = idAttr->getLocalName(); if (localName) attr = getAttributeNodeNS(idAttr->getNamespaceURI(), idAttr->getLocalName()); else attr = getAttributeNode(idAttr->getName()); if(!attr) throw DOMException(DOMException::NOT_FOUND_ERR, 0, GetDOMNodeMemoryManager); if(isId) ((DOMAttrImpl *)attr)->addAttrToIDNodeMap(); else ((DOMAttrImpl *)attr)->removeAttrFromIDNodeMap(); } DOMAttr * DOMElementImpl::setAttributeNode(DOMAttr *newAttr) { if (fNode.isReadOnly()) throw DOMException( DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMNodeMemoryManager); if (newAttr->getNodeType() != DOMNode::ATTRIBUTE_NODE) throw DOMException(DOMException::WRONG_DOCUMENT_ERR, 0, GetDOMNodeMemoryManager); // revisit. Exception doesn't match test. // This will throw INUSE if necessary DOMAttr *oldAttr = (DOMAttr *) fAttributes->setNamedItem(newAttr); return oldAttr; } void DOMElementImpl::setNodeValue(const XMLCh *x) { fNode.setNodeValue(x); } void DOMElementImpl::setReadOnly(bool readOnl, bool deep) { fNode.setReadOnly(readOnl,deep); fAttributes->setReadOnly(readOnl,true); } //Introduced in DOM Level 2 const XMLCh * DOMElementImpl::getAttributeNS(const XMLCh *fNamespaceURI, const XMLCh *fLocalName) const { DOMAttr * attr= (DOMAttr *)(fAttributes->getNamedItemNS(fNamespaceURI, fLocalName)); return (attr==0) ? XMLUni::fgZeroLenString : attr->getValue(); } void DOMElementImpl::setAttributeNS(const XMLCh *fNamespaceURI, const XMLCh *qualifiedName, const XMLCh *fValue) { if (fNode.isReadOnly()) throw DOMException(DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMNodeMemoryManager); int index = DOMDocumentImpl::indexofQualifiedName(qualifiedName); if (index < 0) throw DOMException(DOMException::NAMESPACE_ERR, 0, GetDOMNodeMemoryManager); DOMAttr* newAttr = getAttributeNodeNS(fNamespaceURI, qualifiedName+index); if (!newAttr) { newAttr = fParent.fOwnerDocument->createAttributeNS(fNamespaceURI, qualifiedName); fAttributes->setNamedItemNS(newAttr); } newAttr->setNodeValue(fValue); } void DOMElementImpl::removeAttributeNS(const XMLCh *fNamespaceURI, const XMLCh *fLocalName) { if (fNode.isReadOnly()) throw DOMException( DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMNodeMemoryManager); int i = fAttributes->findNamePoint(fNamespaceURI, fLocalName); if (i >= 0) { DOMNode *att = fAttributes->removeNamedItemAt(i); att->release(); } } DOMAttr *DOMElementImpl::getAttributeNodeNS(const XMLCh *fNamespaceURI, const XMLCh *fLocalName) const { return (DOMAttr *)fAttributes->getNamedItemNS(fNamespaceURI, fLocalName); } DOMAttr *DOMElementImpl::setAttributeNodeNS(DOMAttr *newAttr) { if (fNode.isReadOnly()) throw DOMException( DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMNodeMemoryManager); if (newAttr -> getOwnerDocument() != fParent.fOwnerDocument) throw DOMException(DOMException::WRONG_DOCUMENT_ERR, 0, GetDOMNodeMemoryManager); // This will throw INUSE if necessary DOMAttr *oldAttr = (DOMAttr *) fAttributes->setNamedItemNS(newAttr); return oldAttr; } DOMNodeList *DOMElementImpl::getElementsByTagNameNS(const XMLCh *namespaceURI, const XMLCh *localName) const { DOMDocumentImpl *docImpl = (DOMDocumentImpl *)fParent.fOwnerDocument; return docImpl->getDeepNodeList(this, namespaceURI, localName); } bool DOMElementImpl::hasAttributes() const { return (fAttributes != 0 && fAttributes->getLength() != 0); } bool DOMElementImpl::hasAttribute(const XMLCh *name) const { return (getAttributeNode(name) != 0); } bool DOMElementImpl::hasAttributeNS(const XMLCh *namespaceURI, const XMLCh *localName) const { return (getAttributeNodeNS(namespaceURI, localName) != 0); } // util functions for default attributes // returns the default attribute map for this node from the owner document DOMAttrMapImpl *DOMElementImpl::getDefaultAttributes() const { return fDefaultAttributes; } // initially set up the default attribute information based on doctype information void DOMElementImpl::setupDefaultAttributes() { DOMDocument *tmpdoc = fParent.fOwnerDocument; if ((fNode.fOwnerNode == 0) || (tmpdoc == 0) || (tmpdoc->getDoctype() == 0)) return; DOMNode *eldef = ((DOMDocumentTypeImpl*)tmpdoc->getDoctype())->getElements()->getNamedItem(getNodeName()); DOMAttrMapImpl* defAttrs = (eldef == 0) ? 0 : (DOMAttrMapImpl *)(eldef->getAttributes()); if (defAttrs) fDefaultAttributes = new (tmpdoc) DOMAttrMapImpl(this, defAttrs); } DOMAttr * DOMElementImpl::setDefaultAttributeNode(DOMAttr *newAttr) { if (fNode.isReadOnly()) throw DOMException( DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMNodeMemoryManager); if (newAttr->getNodeType() != DOMNode::ATTRIBUTE_NODE) throw DOMException(DOMException::WRONG_DOCUMENT_ERR, 0, GetDOMNodeMemoryManager); // revisit. Exception doesn't match test. // This will throw INUSE if necessary DOMAttr *oldAttr = (DOMAttr *) fDefaultAttributes->setNamedItem(newAttr); fAttributes->hasDefaults(true); return oldAttr; } DOMAttr *DOMElementImpl::setDefaultAttributeNodeNS(DOMAttr *newAttr) { if (fNode.isReadOnly()) throw DOMException( DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMNodeMemoryManager); if (newAttr -> getOwnerDocument() != fParent.fOwnerDocument) throw DOMException(DOMException::WRONG_DOCUMENT_ERR, 0, GetDOMNodeMemoryManager); // This will throw INUSE if necessary DOMAttr *oldAttr = (DOMAttr *) fDefaultAttributes->setNamedItemNS(newAttr); fAttributes->hasDefaults(true); return oldAttr; } void DOMElementImpl::release() { if (fNode.isOwned() && !fNode.isToBeReleased()) throw DOMException(DOMException::INVALID_ACCESS_ERR,0, GetDOMNodeMemoryManager); DOMDocumentImpl* doc = (DOMDocumentImpl*) fParent.fOwnerDocument; if (doc) { fNode.callUserDataHandlers(DOMUserDataHandler::NODE_DELETED, 0, 0); // release children fParent.release(); // release attributes fAttributes->hasDefaults(false); XMLSize_t count; while((count = fAttributes->getLength()) != 0) { DOMNode* attr = fAttributes->removeNamedItemAt(count-1); attr->release(); } doc->release(this, DOMMemoryManager::ELEMENT_OBJECT); } else { // shouldn't reach here throw DOMException(DOMException::INVALID_ACCESS_ERR,0, GetDOMNodeMemoryManager); } } const XMLCh* DOMElementImpl::getBaseURI() const { const XMLCh* baseURI = fNode.fOwnerNode->getBaseURI(); if (fAttributes) { const XMLCh baseString[] = { chLatin_b, chLatin_a, chLatin_s, chLatin_e, chNull }; DOMNode* attrNode = fAttributes->getNamedItemNS(DOMNodeImpl::getXmlURIString(), baseString); if (attrNode==NULL) { const XMLCh xmlBaseString[] = { chLatin_x, chLatin_m, chLatin_l, chColon, chLatin_b, chLatin_a, chLatin_s, chLatin_e, chNull }; attrNode = fAttributes->getNamedItem(xmlBaseString); } if (attrNode) { const XMLCh* uri = attrNode->getNodeValue(); if (uri && *uri) {// attribute value is always empty string // if there is a base URI for the parent node, use it to resolve relative URI if(baseURI) { try { DOMDocumentImpl* doc = (DOMDocumentImpl *)fParent.fOwnerDocument; XMLUri temp(baseURI, doc->getMemoryManager()); XMLUri temp2(&temp, uri, doc->getMemoryManager()); uri = doc->cloneString(temp2.getUriText()); } catch(const OutOfMemoryException&) { throw; } catch (...){ // REVISIT: what should happen in this case? return 0; } } return uri; } } } return baseURI; } // // Functions inherited from Node // DOMNode* DOMElementImpl::appendChild(DOMNode *newChild) {return fParent.appendChild (newChild); } DOMNodeList* DOMElementImpl::getChildNodes() const {return fParent.getChildNodes (); } DOMNode* DOMElementImpl::getFirstChild() const {return fParent.getFirstChild (); } DOMNode* DOMElementImpl::getLastChild() const {return fParent.getLastChild (); } const XMLCh* DOMElementImpl::getLocalName() const {return fNode.getLocalName (); } const XMLCh* DOMElementImpl::getNamespaceURI() const {return fNode.getNamespaceURI (); } DOMNode* DOMElementImpl::getNextSibling() const {return fChild.getNextSibling (); } const XMLCh* DOMElementImpl::getNodeValue() const {return fNode.getNodeValue (); } DOMDocument* DOMElementImpl::getOwnerDocument() const {return fParent.fOwnerDocument; } const XMLCh* DOMElementImpl::getPrefix() const {return fNode.getPrefix (); } DOMNode* DOMElementImpl::getParentNode() const {return fChild.getParentNode (this); } DOMNode* DOMElementImpl::getPreviousSibling() const {return fChild.getPreviousSibling (this); } bool DOMElementImpl::hasChildNodes() const {return fParent.hasChildNodes (); } DOMNode* DOMElementImpl::insertBefore(DOMNode *newChild, DOMNode *refChild) {return fParent.insertBefore (newChild, refChild); } void DOMElementImpl::normalize() {fParent.normalize (); } DOMNode* DOMElementImpl::removeChild(DOMNode *oldChild) {return fParent.removeChild (oldChild); } DOMNode* DOMElementImpl::replaceChild(DOMNode *newChild, DOMNode *oldChild) {return fParent.replaceChild (newChild, oldChild); } bool DOMElementImpl::isSupported(const XMLCh *feature, const XMLCh *version) const {return fNode.isSupported (feature, version); } void DOMElementImpl::setPrefix(const XMLCh *prefix) {fNode.setPrefix(prefix); } bool DOMElementImpl::isSameNode(const DOMNode* other) const {return fNode.isSameNode(other); } void* DOMElementImpl::setUserData(const XMLCh* key, void* data, DOMUserDataHandler* handler) {return fNode.setUserData(key, data, handler); } void* DOMElementImpl::getUserData(const XMLCh* key) const {return fNode.getUserData(key); } short DOMElementImpl::compareDocumentPosition(const DOMNode* other) const {return fNode.compareDocumentPosition(other); } const XMLCh* DOMElementImpl::getTextContent() const {return fNode.getTextContent(); } void DOMElementImpl::setTextContent(const XMLCh* textContent){fNode.setTextContent(textContent); } const XMLCh* DOMElementImpl::lookupPrefix(const XMLCh* namespaceURI) const {return fNode.lookupPrefix(namespaceURI); } bool DOMElementImpl::isDefaultNamespace(const XMLCh* namespaceURI) const {return fNode.isDefaultNamespace(namespaceURI); } const XMLCh* DOMElementImpl::lookupNamespaceURI(const XMLCh* prefix) const {return fNode.lookupNamespaceURI(prefix); } void* DOMElementImpl::getFeature(const XMLCh* feature, const XMLCh* version) const {return fNode.getFeature(feature, version); } bool DOMElementImpl::isEqualNode(const DOMNode* arg) const { if (isSameNode(arg)) { return true; } if (!fNode.isEqualNode(arg)) { return false; } bool hasAttrs = hasAttributes(); if (hasAttrs != arg->hasAttributes()) { return false; } if (hasAttrs) { DOMNamedNodeMap* map1 = getAttributes(); DOMNamedNodeMap* map2 = arg->getAttributes(); XMLSize_t len = map1->getLength(); if (len != map2->getLength()) { return false; } for (XMLSize_t i = 0; i < len; i++) { DOMNode* n1 = map1->item(i); if (!n1->getLocalName()) { // DOM Level 1 Node DOMNode* n2 = map2->getNamedItem(n1->getNodeName()); if (!n2 || !n1->isEqualNode(n2)) { return false; } } else { DOMNode* n2 = map2->getNamedItemNS(n1->getNamespaceURI(), n1->getLocalName()); if (!n2 || !n1->isEqualNode(n2)) { return false; } } } } return fParent.isEqualNode(arg); } DOMNode* DOMElementImpl::rename(const XMLCh* namespaceURI, const XMLCh* name) { DOMDocumentImpl* doc = (DOMDocumentImpl*) fParent.fOwnerDocument; if (!namespaceURI || !*namespaceURI) { fName = doc->getPooledString(name); fAttributes->reconcileDefaultAttributes(getDefaultAttributes()); // and fire user data NODE_RENAMED event castToNodeImpl(this)->callUserDataHandlers(DOMUserDataHandler::NODE_RENAMED, this, this); return this; } else { // create a new ElementNS DOMElementNSImpl* newElem = (DOMElementNSImpl*)doc->createElementNS(namespaceURI, name); // transfer the userData doc->transferUserData(castToNodeImpl(this), castToNodeImpl(newElem)); // remove old node from parent if any DOMNode* parent = getParentNode(); DOMNode* nextSib = getNextSibling(); if (parent) { parent->removeChild(this); } // move children to new node DOMNode* child = getFirstChild(); while (child) { removeChild(child); newElem->appendChild(child); child = getFirstChild(); } // insert new node where old one was if (parent) { parent->insertBefore(newElem, nextSib); } // move specified attributes to new node newElem->fAttributes->moveSpecifiedAttributes(fAttributes); // and fire user data NODE_RENAMED event castToNodeImpl(newElem)->callUserDataHandlers(DOMUserDataHandler::NODE_RENAMED, this, newElem); return newElem; } } const DOMTypeInfo *DOMElementImpl::getSchemaTypeInfo() const { return &DOMTypeInfoImpl::g_DtdValidatedElement; } // DOMElementTraversal DOMElement * DOMElementImpl::getFirstElementChild() const { DOMNode* n = getFirstChild(); while (n != NULL) { switch (n->getNodeType()) { case DOMNode::ELEMENT_NODE: return (DOMElement*) n; case DOMNode::ENTITY_REFERENCE_NODE: { DOMElement* e = getFirstElementChild(n); if (e != NULL) return e; } break; default: break; } n = n->getNextSibling(); } return NULL; } DOMElement * DOMElementImpl::getLastElementChild() const { DOMNode* n = getLastChild(); while (n != NULL) { switch (n->getNodeType()) { case DOMNode::ELEMENT_NODE: return (DOMElement*) n; case DOMNode::ENTITY_REFERENCE_NODE: { DOMElement* e = getLastElementChild(n); if (e != NULL) return e; } break; default: break; } n = n->getPreviousSibling(); } return NULL; } DOMElement * DOMElementImpl::getNextElementSibling() const { DOMNode* n = getNextLogicalSibling(this); while (n != NULL) { switch (n->getNodeType()) { case DOMNode::ELEMENT_NODE: return (DOMElement*) n; case DOMNode::ENTITY_REFERENCE_NODE: { DOMElement* e = getFirstElementChild(n); if (e != NULL) return e; } break; default: break; } n = getNextLogicalSibling(n); } return NULL; } DOMElement * DOMElementImpl::getPreviousElementSibling() const { DOMNode* n = getPreviousLogicalSibling(this); while (n != NULL) { switch (n->getNodeType()) { case DOMNode::ELEMENT_NODE: return (DOMElement*) n; case DOMNode::ENTITY_REFERENCE_NODE: { DOMElement* e = getLastElementChild(n); if (e != NULL) return e; } break; default: break; } n = getPreviousLogicalSibling(n); } return NULL; } XMLSize_t DOMElementImpl::getChildElementCount() const { XMLSize_t count = 0; DOMElement* child = getFirstElementChild(); while (child != NULL) { ++count; child = child->getNextElementSibling(); } return count; } // Returns the first element node found from a // non-recursive in order traversal of the given node. DOMElement* DOMElementImpl::getFirstElementChild(const DOMNode* n) const { const DOMNode* top = n; while (n != NULL) { if (n->getNodeType() == DOMNode::ELEMENT_NODE) { return (DOMElement*) n; } DOMNode* next = n->getFirstChild(); while (next == NULL) { if (top == n) { break; } next = n->getNextSibling(); if (next == NULL) { n = n->getParentNode(); if (n == NULL || top == n) { return NULL; } } } n = next; } return NULL; } // Returns the first element node found from a // non-recursive reverse order traversal of the given node. DOMElement* DOMElementImpl::getLastElementChild(const DOMNode* n) const { const DOMNode* top = n; while (n != NULL) { if (n->getNodeType() == DOMNode::ELEMENT_NODE) { return (DOMElement*) n; } DOMNode* next = n->getLastChild(); while (next == NULL) { if (top == n) { break; } next = n->getPreviousSibling(); if (next == NULL) { n = n->getParentNode(); if (n == NULL || top == n) { return NULL; } } } n = next; } return NULL; } // Returns the next logical sibling with respect to the given node. DOMNode* DOMElementImpl::getNextLogicalSibling(const DOMNode* n) const { DOMNode* next = n->getNextSibling(); // If "n" has no following sibling and its parent is an entity reference node we // need to continue the search through the following siblings of the entity // reference as these are logically siblings of the given node. if (next == NULL) { DOMNode* parent = n->getParentNode(); while (parent != NULL && parent->getNodeType() == DOMNode::ENTITY_REFERENCE_NODE) { next = parent->getNextSibling(); if (next != NULL) { break; } parent = parent->getParentNode(); } } return next; } // Returns the previous logical sibling with respect to the given node. DOMNode* DOMElementImpl::getPreviousLogicalSibling(const DOMNode* n) const { DOMNode* prev = n->getPreviousSibling(); // If "n" has no previous sibling and its parent is an entity reference node we // need to continue the search through the previous siblings of the entity // reference as these are logically siblings of the given node. if (prev == NULL) { DOMNode* parent = n->getParentNode(); while (parent != NULL && parent->getNodeType() == DOMNode::ENTITY_REFERENCE_NODE) { prev = parent->getPreviousSibling(); if (prev != NULL) { break; } parent = parent->getParentNode(); } } return prev; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMNodeIteratorImpl.hpp0000644000175000017500000001002711030714661022477 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMNodeIteratorImpl.hpp 671894 2008-06-26 13:29:21Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMNODEITERATORIMPL_HPP) #define XERCESC_INCLUDE_GUARD_DOMNODEITERATORIMPL_HPP // // This file is part of the internal implementation of the C++ XML DOM. // It should NOT be included or used directly by application programs. // // Applications should include the file for the entire // DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class // name is substituded for the *. // ////////////////////////////////////////////////////////////////////// // DOMNodeIteratorImpl.hpp: interface for the DOMNodeIteratorImpl class. // ////////////////////////////////////////////////////////////////////// #include #include XERCES_CPP_NAMESPACE_BEGIN class CDOM_EXPORT DOMNodeIteratorImpl : public DOMNodeIterator { protected: // // Data // // The root. DOMNode* fRoot; // The Document used to create this iterator DOMDocument* fDocument; // The whatToShow mask. DOMNodeFilter::ShowType fWhatToShow; // The NodeFilter reference. DOMNodeFilter* fNodeFilter; // The expandEntity reference flag. bool fExpandEntityReferences; bool fDetached; // // Iterator state - current node and direction. // // Note: The current node and direction are sufficient to implement // the desired behaviour of the current pointer being _between_ // two nodes. The fCurrentNode is actually the last node returned, // and the // direction is whether the pointer is in front or behind this node. // (usually akin to whether the node was returned via nextNode()) // (eg fForward = true) or previousNode() (eg fForward = false). // The last Node returned. DOMNode* fCurrentNode; // The direction of the iterator on the fCurrentNode. // // nextNode() == fForward = true;
    // previousNode() == fForward = false;
    //
    bool fForward; public: virtual ~DOMNodeIteratorImpl (); DOMNodeIteratorImpl ( DOMDocument* fDocument, DOMNode* root, DOMNodeFilter::ShowType whatToShow, DOMNodeFilter* nodeFilter, bool expandEntityRef); DOMNodeIteratorImpl ( const DOMNodeIteratorImpl& toCopy); DOMNodeIteratorImpl& operator= (const DOMNodeIteratorImpl& other); virtual DOMNode* getRoot (); virtual DOMNodeFilter::ShowType getWhatToShow (); virtual DOMNodeFilter* getFilter (); // Get the expandEntity reference flag. virtual bool getExpandEntityReferences(); virtual DOMNode* nextNode (); virtual DOMNode* previousNode (); virtual void detach (); virtual void release(); void removeNode (DOMNode* node); protected: DOMNode* matchNodeOrParent (DOMNode* node); DOMNode* nextNode (DOMNode* node, bool visitChildren); DOMNode* previousNode (DOMNode* node); bool acceptNode (DOMNode* node); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMDocumentTypeImpl.hpp0000644000175000017500000000716010772402041022522 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMDocumentTypeImpl.hpp 641193 2008-03-26 08:06:57Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMDOCUMENTTYPEIMPL_HPP) #define XERCESC_INCLUDE_GUARD_DOMDOCUMENTTYPEIMPL_HPP // // This file is part of the internal implementation of the C++ XML DOM. // It should NOT be included or used directly by application programs. // // Applications should include the file for the entire // DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class // name is substituded for the *. // #include #include #include "DOMNodeImpl.hpp" #include "DOMChildNode.hpp" #include "DOMParentNode.hpp" XERCES_CPP_NAMESPACE_BEGIN class DOMNamedNodeMapImpl; class CDOM_EXPORT DOMDocumentTypeImpl: public DOMDocumentType { protected: DOMNodeImpl fNode; DOMParentNode fParent; DOMChildNode fChild; const XMLCh * fName; DOMNamedNodeMapImpl* fEntities; DOMNamedNodeMapImpl* fNotations; DOMNamedNodeMapImpl* fElements; const XMLCh * fPublicId; const XMLCh * fSystemId; const XMLCh * fInternalSubset; bool fIntSubsetReading; bool fIsCreatedFromHeap; virtual void setPublicId(const XMLCh * value); virtual void setSystemId(const XMLCh * value); virtual void setInternalSubset(const XMLCh *value); bool isIntSubsetReading() const; friend class AbstractDOMParser; friend class DOMDocumentImpl; public: DOMDocumentTypeImpl(DOMDocument *, const XMLCh *, bool); DOMDocumentTypeImpl(DOMDocument *, const XMLCh *qualifiedName, //DOM Level 2 const XMLCh *publicId, const XMLCh *systemId, bool); DOMDocumentTypeImpl(const DOMDocumentTypeImpl &other, bool heap, bool deep=false); virtual ~DOMDocumentTypeImpl(); public: // Declare all of the functions from DOMNode. DOMNODE_FUNCTIONS; public: virtual void setOwnerDocument(DOMDocument *doc); virtual DOMNamedNodeMap * getEntities() const; virtual const XMLCh * getName() const; virtual DOMNamedNodeMap * getNotations() const; virtual DOMNamedNodeMap * getElements() const; virtual void setReadOnly(bool readOnly, bool deep); //Introduced in DOM Level 2 virtual const XMLCh * getPublicId() const; virtual const XMLCh * getSystemId() const; virtual const XMLCh * getInternalSubset() const; private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DOMDocumentTypeImpl & operator = (const DOMDocumentTypeImpl &); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMImplementationListImpl.cpp0000644000175000017500000000313711030714661023720 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMImplementationListImpl.cpp 671894 2008-06-26 13:29:21Z borisk $ */ #include "DOMImplementationListImpl.hpp" #include XERCES_CPP_NAMESPACE_BEGIN DOMImplementationListImpl::DOMImplementationListImpl() { fList=new RefVectorOf(3, false); } DOMImplementationListImpl:: ~DOMImplementationListImpl() { delete fList; } void DOMImplementationListImpl::add(DOMImplementation* impl) { fList->addElement(impl); } XMLSize_t DOMImplementationListImpl::getLength() const{ return fList->size(); } DOMImplementation *DOMImplementationListImpl::item(XMLSize_t index) const { if(indexsize()) return fList->elementAt(index); return 0; } void DOMImplementationListImpl::release() { delete this; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMLSSerializerImpl.hpp0000644000175000017500000002045111063726020022450 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMLSSerializerImpl.hpp 695856 2008-09-16 12:52:32Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMLSSERIALIZERMPL_HPP) #define XERCESC_INCLUDE_GUARD_DOMLSSERIALIZERMPL_HPP #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN class DOMStringListImpl; class CDOM_EXPORT DOMLSSerializerImpl : public XMemory, public DOMLSSerializer, public DOMConfiguration { public: /** @name Constructor and Destructor */ //@{ /** * Constructor. */ DOMLSSerializerImpl(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); /** * Destructor. */ ~DOMLSSerializerImpl(); //@} /** @name Implementation of DOMLSSerializer interface */ //@{ virtual DOMConfiguration* getDomConfig(); virtual void setNewLine(const XMLCh* const newLine); virtual const XMLCh* getNewLine() const; virtual void setFilter(DOMLSSerializerFilter *filter); virtual DOMLSSerializerFilter* getFilter() const; virtual bool write(const DOMNode* nodeToWrite, DOMLSOutput* const destination); virtual bool writeToURI(const DOMNode* nodeToWrite, const XMLCh* uri); /** * The caller is responsible for the release of the returned string */ virtual XMLCh* writeToString(const DOMNode* nodeToWrite, MemoryManager* manager = NULL); virtual void release(); //@} /** @name Implementation of DOMConfiguration interface */ //@{ virtual void setParameter(const XMLCh* name, const void* value); virtual void setParameter(const XMLCh* name, bool value); virtual const void* getParameter(const XMLCh* name) const; virtual bool canSetParameter(const XMLCh* name, const void* value) const; virtual bool canSetParameter(const XMLCh* name, bool value) const; virtual const DOMStringList* getParameterNames() const; //@} private: /** unimplemented copy ctor and assignment operator */ DOMLSSerializerImpl(const DOMLSSerializerImpl&); DOMLSSerializerImpl & operator = (const DOMLSSerializerImpl&); protected: /** helper **/ void processNode(const DOMNode* const); void procCdataSection(const XMLCh* const nodeValue , const DOMNode* const nodeToWrite); void procUnrepCharInCdataSection(const XMLCh* const nodeValue , const DOMNode* const nodeToWrite); protected: /** * Overidden by derived classes to extend the abilities of the standard writer * always returns false in the default implementation * @return true if the method deals with nodeToWrite */ virtual bool customNodeSerialize(const DOMNode* const nodeToWrite, int level); DOMNodeFilter::FilterAction checkFilter(const DOMNode* const) const; bool checkFeature(const XMLCh* const featName , bool state , int& featureId) const; bool reportError(const DOMNode* const errorNode , DOMError::ErrorSeverity errorType , const XMLCh* const errorMsg); bool reportError(const DOMNode* const errorNode , DOMError::ErrorSeverity errorType , XMLDOMMsg::Codes toEmit); bool canSetFeature(const int featureId , bool val) const; void setFeature(const int featureId , bool val); bool getFeature(const int featureId) const; void printNewLine(); void setURCharRef(); bool isDefaultNamespacePrefixDeclared() const; bool isNamespaceBindingActive(const XMLCh* prefix, const XMLCh* uri) const; void printIndent(unsigned int level); //does the actual work for processNode while keeping track of the level void processNode(const DOMNode* const nodeToWrite, int level); void processBOM(); // ----------------------------------------------------------------------- // Private data members // // fFeatures // // fNewLine // own it // // fErrorHandler // don't own it // // fFilter // don't own it // // fDocumentVersion // The XML Version of the document to be serialized. // // fSupportedParameters // A list of the parameters that can be set, including the ones // specific of Xerces // // fEncodingUsed (session var) // the actual encoding used in write(), // it does not own any data(memory). // // fNewLineUsed (session var) // the actual "end of line" sequence used in write(), // it does not own any data(memory). // // fFormatter (session var) // the formatter used in write() // // fErrorCount // the count of error encountered in the serialization, // which neither the error handler, nor the serializer itself, // treat as fatal. And the serializer will return true/false // based on this value. // // fCurrentLine // the current line. Used to track the line number the current // node begins on // // ----------------------------------------------------------------------- int fFeatures; XMLCh *fNewLine; DOMErrorHandler *fErrorHandler; DOMLSSerializerFilter *fFilter; const XMLCh *fDocumentVersion; DOMStringListImpl *fSupportedParameters; //session vars const XMLCh *fEncodingUsed; const XMLCh *fNewLineUsed; XMLFormatter *fFormatter; int fErrorCount; int fCurrentLine; bool fLineFeedInTextNodePrinted; unsigned int fLastWhiteSpaceInTextNode; RefVectorOf< RefHashTableOf >* fNamespaceStack; MemoryManager* fMemoryManager; }; inline DOMConfiguration* DOMLSSerializerImpl::getDomConfig() { return this; } inline void DOMLSSerializerImpl::setFeature(const int featureId , bool val) { (val)? fFeatures |= (1<setUnRepFlags(XMLFormatter::UnRep_CharRef); } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMChildNode.hpp0000644000175000017500000000426010606722647021124 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMChildNode.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMCHILDNODE_HPP) #define XERCESC_INCLUDE_GUARD_DOMCHILDNODE_HPP // // This file is part of the internal implementation of the C++ XML DOM. // It should NOT be included or used directly by application programs. // // Applications should include the file for the entire // DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class // name is substituded for the *. // /** * ChildNode adds to NodeImpl the capability of being a child, this is having * siblings. **/ #include XERCES_CPP_NAMESPACE_BEGIN class DOMDocument; class DOMNode; class CDOM_EXPORT DOMChildNode { public: DOMNode *previousSibling; DOMNode *nextSibling; DOMChildNode(); DOMChildNode(const DOMChildNode &other); ~DOMChildNode(); DOMNode * getNextSibling() const; DOMNode * getParentNode(const DOMNode *thisNode) const; DOMNode * getPreviousSibling(const DOMNode *thisNode) const; private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DOMChildNode & operator = (const DOMChildNode &); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMImplementationListImpl.hpp0000644000175000017500000000354411030714661023727 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMImplementationListImpl.hpp 671894 2008-06-26 13:29:21Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONLISTIMPL_HPP) #define XERCESC_INCLUDE_GUARD_DOMIMPLEMENTATIONLISTIMPL_HPP #include #include #include XERCES_CPP_NAMESPACE_BEGIN class DOMImplementation; class CDOM_EXPORT DOMImplementationListImpl: public DOMImplementationList { protected: RefVectorOf *fList; private: // Unused, and unimplemented constructors, operators, etc. DOMImplementationListImpl(const DOMImplementationListImpl & other); DOMImplementationListImpl & operator = (const DOMImplementationListImpl & other); public: DOMImplementationListImpl(); void add(DOMImplementation* impl); virtual ~DOMImplementationListImpl(); virtual DOMImplementation * item(XMLSize_t index) const; virtual XMLSize_t getLength() const; virtual void release(); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMElementNSImpl.hpp0000644000175000017500000000676511041336370021747 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMElementNSImpl.hpp 678709 2008-07-22 10:56:56Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMELEMENTNSIMPL_HPP) #define XERCESC_INCLUDE_GUARD_DOMELEMENTNSIMPL_HPP // // This file is part of the internal implementation of the C++ XML DOM. // It should NOT be included or used directly by application programs. // // Applications should include the file for the entire // DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class // name is substituded for the *. // #include "DOMElementImpl.hpp" XERCES_CPP_NAMESPACE_BEGIN class DOMTypeInfoImpl; class CDOM_EXPORT DOMElementNSImpl: public DOMElementImpl { protected: //Introduced in DOM Level 2 const XMLCh * fNamespaceURI; //namespace URI of this node const XMLCh * fLocalName; //local part of qualified name const XMLCh * fPrefix; const DOMTypeInfoImpl *fSchemaType; public: DOMElementNSImpl(DOMDocument *ownerDoc, const XMLCh *name); DOMElementNSImpl(DOMDocument *ownerDoc, //DOM Level 2 const XMLCh *namespaceURI, const XMLCh *qualifiedName); DOMElementNSImpl(const DOMElementNSImpl &other, bool deep=false); // Fast construction without any checks for name validity. Used in // parsing. // DOMElementNSImpl(DOMDocument *ownerDoc, const XMLCh *namespaceURI, const XMLCh *prefix, // Null or empty - no prefix. const XMLCh *localName, const XMLCh *qualifiedName); virtual DOMNode * cloneNode(bool deep) const; virtual bool isSupported(const XMLCh *feature, const XMLCh *version) const; virtual void* getFeature(const XMLCh* feature, const XMLCh* version) const; //Introduced in DOM Level 2 virtual const XMLCh *getNamespaceURI() const; virtual const XMLCh *getPrefix() const; virtual const XMLCh *getLocalName() const; virtual void setPrefix(const XMLCh *prefix); virtual void release(); //Introduced in DOM Level 3 virtual const DOMTypeInfo * getSchemaTypeInfo() const; // helper function for DOM Level 3 renameNode virtual DOMNode* rename(const XMLCh* namespaceURI, const XMLCh* name); void setName(const XMLCh* namespaceURI, const XMLCh* name); //helper function for DOM Level 3 TypeInfo virtual void setSchemaTypeInfo(const DOMTypeInfoImpl* typeInfo); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DOMElementNSImpl & operator = (const DOMElementNSImpl &); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMAttrMapImpl.cpp0000644000175000017500000003471011041336370021447 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMAttrMapImpl.cpp 678709 2008-07-22 10:56:56Z borisk $ */ #include "DOMCasts.hpp" #include "DOMNodeImpl.hpp" #include "DOMNodeVector.hpp" #include "DOMAttrMapImpl.hpp" #include "DOMAttrImpl.hpp" #include "DOMElementImpl.hpp" #include #include XERCES_CPP_NAMESPACE_BEGIN DOMAttrMapImpl::DOMAttrMapImpl(DOMNode *ownerNod) { this->fOwnerNode=ownerNod; this->fNodes = 0; hasDefaults(false); } DOMAttrMapImpl::DOMAttrMapImpl(DOMNode *ownerNod, const DOMAttrMapImpl *defaults) { this->fOwnerNode=ownerNod; this->fNodes = 0; hasDefaults(false); if (defaults != 0) { if (defaults->getLength() > 0) { hasDefaults(true); cloneContent(defaults); } } } DOMAttrMapImpl::~DOMAttrMapImpl() { } void DOMAttrMapImpl::cloneContent(const DOMAttrMapImpl *srcmap) { if ((srcmap != 0) && (srcmap->fNodes != 0)) { if (fNodes != 0) fNodes->reset(); else { XMLSize_t size = srcmap->fNodes->size(); if(size > 0) { DOMDocumentImpl *doc = (DOMDocumentImpl*)fOwnerNode->getOwnerDocument(); fNodes = new (doc) DOMNodeVector(doc, size); } } for (XMLSize_t i = 0; i < srcmap->fNodes->size(); i++) { DOMNode *n = srcmap->fNodes->elementAt(i); DOMNode *clone = n->cloneNode(true); castToNodeImpl(clone)->isSpecified(castToNodeImpl(n)->isSpecified()); castToNodeImpl(clone)->fOwnerNode = fOwnerNode; castToNodeImpl(clone)->isOwned(true); fNodes->addElement(clone); } } } DOMAttrMapImpl *DOMAttrMapImpl::cloneAttrMap(DOMNode *ownerNode_p) { DOMAttrMapImpl *newmap = new (castToNodeImpl(ownerNode_p)->getOwnerDocument()) DOMAttrMapImpl(ownerNode_p); newmap->cloneContent(this); // newmap->attrDefaults = this->attrDefaults; // revisit return newmap; } void DOMAttrMapImpl::setReadOnly(bool readOnl, bool deep) { // this->fReadOnly=readOnl; if(deep && fNodes!=0) { XMLSize_t sz = fNodes->size(); for (XMLSize_t i=0; ielementAt(i))->setReadOnly(readOnl, deep); } } } bool DOMAttrMapImpl::readOnly() { return castToNodeImpl(fOwnerNode)->isReadOnly(); } int DOMAttrMapImpl::findNamePoint(const XMLCh *name) const { // Binary search int i=0; if(fNodes!=0) { int first=0,last=(int)fNodes->size()-1; while(first<=last) { i=(first+last)/2; int test = XMLString::compareString(name, fNodes->elementAt(i)->getNodeName()); if(test==0) return i; // Name found else if(test<0) last=i-1; else first=i+1; } if(first>i) i=first; } /******************** // Linear search int i = 0; if (fNodes != 0) for (i = 0; i < fNodes.size(); ++i) { int test = name.compareTo(((NodeImpl *) (fNodes.elementAt(i))).getNodeName()); if (test == 0) return i; else if (test < 0) { break; // Found insertpoint } } *******************/ return -1 - i; // not-found has to be encoded. } DOMNode * DOMAttrMapImpl::getNamedItem(const XMLCh *name) const { int i=findNamePoint(name); return (i<0) ? 0 : fNodes->elementAt(i); } DOMNode *DOMAttrMapImpl::setNamedItem(DOMNode *arg) { if (arg->getNodeType() != DOMNode::ATTRIBUTE_NODE) throw DOMException(DOMException::HIERARCHY_REQUEST_ERR, 0, GetDOMNamedNodeMapMemoryManager); DOMDocument *doc = fOwnerNode->getOwnerDocument(); DOMNodeImpl *argImpl = castToNodeImpl(arg); if(argImpl->getOwnerDocument() != doc) throw DOMException(DOMException::WRONG_DOCUMENT_ERR, 0, GetDOMNamedNodeMapMemoryManager); if (this->readOnly()) throw DOMException(DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMNamedNodeMapMemoryManager); if ((arg->getNodeType() == DOMNode::ATTRIBUTE_NODE) && argImpl->isOwned() && (argImpl->fOwnerNode != fOwnerNode)) throw DOMException(DOMException::INUSE_ATTRIBUTE_ERR,0, GetDOMNamedNodeMapMemoryManager); argImpl->fOwnerNode = fOwnerNode; argImpl->isOwned(true); int i=findNamePoint(arg->getNodeName()); DOMNode * previous=0; if(i>=0) { previous = fNodes->elementAt(i); fNodes->setElementAt(arg,i); } else { i=-1-i; // Insert point (may be end of list) if(0==fNodes) { fNodes=new ((DOMDocumentImpl*)doc) DOMNodeVector(doc); } fNodes->insertElementAt(arg,i); } if (previous != 0) { castToNodeImpl(previous)->fOwnerNode = doc; castToNodeImpl(previous)->isOwned(false); } return previous; } //Introduced in DOM Level 2 int DOMAttrMapImpl::findNamePoint(const XMLCh *namespaceURI, const XMLCh *localName) const { if (fNodes == 0) return -1; // This is a linear search through the same fNodes Vector. // The Vector is sorted on the DOM Level 1 nodename. // The DOM Level 2 NS keys are namespaceURI and Localname, // so we must linear search thru it. // In addition, to get this to work with fNodes without any namespace // (namespaceURI and localNames are both 0) we then use the nodeName // as a secondary key. const XMLSize_t len = fNodes -> size(); for (XMLSize_t i = 0; i < len; ++i) { DOMNode *node = fNodes -> elementAt(i); const XMLCh * nNamespaceURI = node->getNamespaceURI(); const XMLCh * nLocalName = node->getLocalName(); if (!XMLString::equals(nNamespaceURI, namespaceURI)) //URI not match continue; else { if (XMLString::equals(localName, nLocalName) || (nLocalName == 0 && XMLString::equals(localName, node->getNodeName()))) return (int)i; } } return -1; //not found } DOMNode *DOMAttrMapImpl::getNamedItemNS(const XMLCh *namespaceURI, const XMLCh *localName) const { int i = findNamePoint(namespaceURI, localName); return i < 0 ? 0 : fNodes -> elementAt(i); } DOMNode *DOMAttrMapImpl::setNamedItemNS(DOMNode* arg) { if (arg->getNodeType() != DOMNode::ATTRIBUTE_NODE) throw DOMException(DOMException::HIERARCHY_REQUEST_ERR, 0, GetDOMNamedNodeMapMemoryManager); DOMDocument *doc = fOwnerNode->getOwnerDocument(); DOMNodeImpl *argImpl = castToNodeImpl(arg); if (argImpl->getOwnerDocument() != doc) throw DOMException(DOMException::WRONG_DOCUMENT_ERR,0, GetDOMNamedNodeMapMemoryManager); if (this->readOnly()) throw DOMException(DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMNamedNodeMapMemoryManager); if (argImpl->isOwned()) throw DOMException(DOMException::INUSE_ATTRIBUTE_ERR,0, GetDOMNamedNodeMapMemoryManager); argImpl->fOwnerNode = fOwnerNode; argImpl->isOwned(true); int i=findNamePoint(arg->getNamespaceURI(), arg->getLocalName()); DOMNode *previous=0; if(i>=0) { previous = fNodes->elementAt(i); fNodes->setElementAt(arg,i); } else { i=findNamePoint(arg->getNodeName()); // Insert point (may be end of list) if (i<0) i = -1 - i; if(0==fNodes) fNodes=new ((DOMDocumentImpl*)doc) DOMNodeVector(doc); fNodes->insertElementAt(arg,i); } if (previous != 0) { castToNodeImpl(previous)->fOwnerNode = doc; castToNodeImpl(previous)->isOwned(false); } return previous; } DOMNode *DOMAttrMapImpl::removeNamedItem(const XMLCh *name) { if (this->readOnly()) throw DOMException( DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMNamedNodeMapMemoryManager); int i=findNamePoint(name); DOMNode *removed = 0; if(i<0) throw DOMException(DOMException::NOT_FOUND_ERR, 0, GetDOMNamedNodeMapMemoryManager); removed = fNodes->elementAt(i); fNodes->removeElementAt(i); castToNodeImpl(removed)->fOwnerNode = fOwnerNode->getOwnerDocument(); castToNodeImpl(removed)->isOwned(false); // Replace it if it had a default value // (DOM spec level 1 - Element Interface) if (hasDefaults() && (removed != 0)) { DOMAttrMapImpl* defAttrs = ((DOMElementImpl*)fOwnerNode)->getDefaultAttributes(); DOMAttr* attr = (DOMAttr*)(defAttrs->getNamedItem(name)); if (attr != 0) { DOMAttr* newAttr = (DOMAttr*)attr->cloneNode(true); setNamedItem(newAttr); } } return removed; } DOMNode *DOMAttrMapImpl::removeNamedItemNS(const XMLCh *namespaceURI, const XMLCh *localName) { if (this->readOnly()) throw DOMException( DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMNamedNodeMapMemoryManager); int i = findNamePoint(namespaceURI, localName); if (i < 0) throw DOMException(DOMException::NOT_FOUND_ERR, 0, GetDOMNamedNodeMapMemoryManager); DOMNode * removed = fNodes -> elementAt(i); fNodes -> removeElementAt(i); //remove n from nodes castToNodeImpl(removed)->fOwnerNode = fOwnerNode->getOwnerDocument(); castToNodeImpl(removed)->isOwned(false); // Replace it if it had a default value // (DOM spec level 2 - Element Interface) if (hasDefaults() && (removed != 0)) { DOMAttrMapImpl* defAttrs = ((DOMElementImpl*)fOwnerNode)->getDefaultAttributes(); DOMAttr* attr = (DOMAttr*)(defAttrs->getNamedItemNS(namespaceURI, localName)); if (attr != 0) { DOMAttr* newAttr = (DOMAttr*)attr->cloneNode(true); setNamedItemNS(newAttr); } } return removed; } // remove the name using index // avoid calling findNamePoint again if the index is already known DOMNode * DOMAttrMapImpl::removeNamedItemAt(XMLSize_t index) { if (this->readOnly()) throw DOMException( DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMNamedNodeMapMemoryManager); DOMNode *removed = item(index); if(!removed) throw DOMException(DOMException::NOT_FOUND_ERR, 0, GetDOMNamedNodeMapMemoryManager); fNodes->removeElementAt(index); castToNodeImpl(removed)->fOwnerNode = fOwnerNode->getOwnerDocument(); castToNodeImpl(removed)->isOwned(false); // Replace it if it had a default value // (DOM spec level 1 - Element Interface) if (hasDefaults() && (removed != 0)) { DOMAttrMapImpl* defAttrs = ((DOMElementImpl*)fOwnerNode)->getDefaultAttributes(); const XMLCh* localName = removed->getLocalName(); DOMAttr* attr = 0; if (localName) attr = (DOMAttr*)(defAttrs->getNamedItemNS(removed->getNamespaceURI(), localName)); else attr = (DOMAttr*)(defAttrs->getNamedItem(((DOMAttr*)removed)->getName())); if (attr != 0) { DOMAttr* newAttr = (DOMAttr*)attr->cloneNode(true); setNamedItem(newAttr); } } return removed; } /** * Get this AttributeMap in sync with the given "defaults" map. * @param defaults The default attributes map to sync with. */ void DOMAttrMapImpl::reconcileDefaultAttributes(const DOMAttrMapImpl* defaults) { // remove any existing default XMLSize_t nsize = getLength(); for (XMLSize_t i = nsize; i > 0; i--) { DOMAttr* attr = (DOMAttr*)item(i-1); if (!attr->getSpecified()) { removeNamedItemAt(i-1); } } hasDefaults(false); // add the new defaults if (defaults) { hasDefaults(true); if (nsize == 0) { cloneContent(defaults); } else { XMLSize_t dsize = defaults->getLength(); for (XMLSize_t n = 0; n < dsize; n++) { DOMAttr* attr = (DOMAttr*)defaults->item(n); DOMAttr* newAttr = (DOMAttr*)attr->cloneNode(true); setNamedItemNS(newAttr); DOMAttrImpl* newAttrImpl = (DOMAttrImpl*) newAttr; newAttrImpl->setSpecified(false); } } } } // reconcileDefaults() /** * Move specified attributes from the given map to this one */ void DOMAttrMapImpl::moveSpecifiedAttributes(DOMAttrMapImpl* srcmap) { XMLSize_t nsize = srcmap->getLength(); for (XMLSize_t i = nsize; i > 0; i--) { DOMAttr* attr = (DOMAttr*)srcmap->item(i-1); if (attr->getSpecified()) { srcmap->removeNamedItemAt(i-1); } if (attr->getLocalName()) setNamedItemNS(attr); else setNamedItem(attr); } } // moveSpecifiedAttributes(AttributeMap):void XMLSize_t DOMAttrMapImpl::getLength() const { return (fNodes != 0) ? fNodes->size() : 0; } DOMNode * DOMAttrMapImpl::item(XMLSize_t index) const { return (fNodes != 0 && index < fNodes->size()) ? fNodes->elementAt(index) : 0; } void DOMAttrMapImpl::setNamedItemFast(DOMNode *arg) { DOMNodeImpl *argImpl = castToNodeImpl(arg); argImpl->fOwnerNode = fOwnerNode; argImpl->isOwned(true); int i = findNamePoint(arg->getNodeName()); if(i >= 0) fNodes->setElementAt(arg, i); else { i= -1 -i; fNodes->insertElementAt(arg, i); } } void DOMAttrMapImpl::setNamedItemNSFast(DOMNode* arg) { DOMNodeImpl *argImpl = castToNodeImpl(arg); argImpl->fOwnerNode = fOwnerNode; argImpl->isOwned(true); int i=findNamePoint(arg->getNamespaceURI(), arg->getLocalName()); if(i >= 0) { fNodes->setElementAt(arg,i); } else { i = findNamePoint(arg->getNodeName()); if (i < 0) i = -1 - i; fNodes->insertElementAt(arg,i); } } void DOMAttrMapImpl::reserve (XMLSize_t n) { if (fNodes == 0) { DOMDocumentImpl* doc = (DOMDocumentImpl*)fOwnerNode->getOwnerDocument(); fNodes = new (doc) DOMNodeVector(doc, n); } } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMImplementationRegistry.cpp0000644000175000017500000000750511037122704023774 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMImplementationRegistry.cpp 676911 2008-07-15 13:27:32Z amassari $ */ #include #include #include #include #include #include #include #include "DOMImplementationImpl.hpp" #include "DOMImplementationListImpl.hpp" XERCES_CPP_NAMESPACE_BEGIN // Points to the singleton instance of a registry of DOMImplementationSource. // static RefVectorOf* gDOMImplSrcVector = 0; // Global mutex that is used to synchronize access to the vector. // static XMLMutex* gDOMImplSrcVectorMutex = 0; void XMLInitializer::initializeDOMImplementationRegistry() { gDOMImplSrcVectorMutex = new XMLMutex(XMLPlatformUtils::fgMemoryManager); gDOMImplSrcVector = new RefVectorOf(3, false); } void XMLInitializer::terminateDOMImplementationRegistry() { delete gDOMImplSrcVector; gDOMImplSrcVector = 0; delete gDOMImplSrcVectorMutex; gDOMImplSrcVectorMutex = 0; } // ----------------------------------------------------------------------- // DOMImplementationRegistry Functions // ----------------------------------------------------------------------- DOMImplementation *DOMImplementationRegistry::getDOMImplementation(const XMLCh* features) { XMLMutexLock lock(gDOMImplSrcVectorMutex); XMLSize_t len = gDOMImplSrcVector->size(); // Put our defined source there if (len == 0) { gDOMImplSrcVector->addElement((DOMImplementationSource*)DOMImplementationImpl::getDOMImplementationImpl()); len = gDOMImplSrcVector->size(); } for (XMLSize_t i = len; i > 0; i--) { DOMImplementationSource* source = gDOMImplSrcVector->elementAt(i-1); DOMImplementation* impl = source->getDOMImplementation(features); if (impl) return impl; } return 0; } DOMImplementationList* DOMImplementationRegistry::getDOMImplementationList(const XMLCh* features) { DOMImplementationListImpl* list = new DOMImplementationListImpl; XMLMutexLock lock(gDOMImplSrcVectorMutex); XMLSize_t len = gDOMImplSrcVector->size(); // Put our defined source there if (len == 0) gDOMImplSrcVector->addElement((DOMImplementationSource*)DOMImplementationImpl::getDOMImplementationImpl()); len = gDOMImplSrcVector->size(); for (XMLSize_t i = len; i > 0; i--) { DOMImplementationSource* source = gDOMImplSrcVector->elementAt(i-1); DOMImplementationList* oneList = source->getDOMImplementationList(features); XMLSize_t oneListLen=oneList->getLength(); for(XMLSize_t j=0; jadd(oneList->item(j)); oneList->release(); } return list; } void DOMImplementationRegistry::addSource (DOMImplementationSource* source) { XMLMutexLock lock(gDOMImplSrcVectorMutex); gDOMImplSrcVector->addElement(source); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/XSDElementNSImpl.hpp0000644000175000017500000000467711031137006021760 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XSDElementNSImpl.hpp 672232 2008-06-27 10:16:38Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_XSDELEMENTNSIMPL_HPP) #define XERCESC_INCLUDE_GUARD_XSDELEMENTNSIMPL_HPP // // This file is part of the internal implementation of the C++ XML DOM. // It is used by TraverseSchema to store line/column information. // It should NOT be included or used directly by application programs. // // Applications should include the file for the entire // DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class // name is substituded for the *. // #include "DOMElementNSImpl.hpp" XERCES_CPP_NAMESPACE_BEGIN class CDOM_EXPORT XSDElementNSImpl: public DOMElementNSImpl { protected: XMLFileLoc fLineNo; //Line number XMLFileLoc fColumnNo; //Column number public: XSDElementNSImpl(DOMDocument *ownerDoc, const XMLCh *name); XSDElementNSImpl(DOMDocument *ownerDoc, //DOM Level 2 const XMLCh *namespaceURI, const XMLCh *qualifiedName, const XMLFileLoc lineNo, const XMLFileLoc columnNo); XSDElementNSImpl(const XSDElementNSImpl &other, bool deep=false); virtual DOMNode * cloneNode(bool deep) const; XMLFileLoc getLineNo() const { return fLineNo; } XMLFileLoc getColumnNo() const { return fColumnNo; } private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XSDElementNSImpl& operator=(const XSDElementNSImpl&); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMXPathExpressionImpl.hpp0000644000175000017500000000445111030714661023210 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMXPathExpressionImpl.hpp 671894 2008-06-26 13:29:21Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMXPATHEXPRESSIONIMPL_HPP) #define XERCESC_INCLUDE_GUARD_DOMXPATHEXPRESSIONIMPL_HPP #include #include #include XERCES_CPP_NAMESPACE_BEGIN class DOMElement; class XercesXPath; class XPathMatcher; class DOMXPathResultImpl; class DOMXPathNSResolver; class XMLStringPool; class CDOM_EXPORT DOMXPathExpressionImpl : public XMemory, public DOMXPathExpression { public: DOMXPathExpressionImpl(const XMLCh *expression, const DOMXPathNSResolver *resolver, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); virtual ~DOMXPathExpressionImpl(); virtual DOMXPathResult* evaluate(const DOMNode *contextNode, DOMXPathResult::ResultType type, DOMXPathResult* result) const; virtual void release(); protected: bool testNode(XPathMatcher* matcher, DOMXPathResultImpl* result, DOMElement *node) const; void cleanUp(); XMLStringPool* fStringPool; XercesXPath* fParsedExpression; XMLCh* fExpression; bool fMoveToRoot; MemoryManager* const fMemoryManager; }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMProcessingInstructionImpl.cpp0000644000175000017500000002542711041060645024461 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMProcessingInstructionImpl.cpp 678381 2008-07-21 10:15:01Z borisk $ */ #include "DOMProcessingInstructionImpl.hpp" #include "DOMDocumentImpl.hpp" #include "DOMNodeImpl.hpp" #include "DOMStringPool.hpp" #include "DOMRangeImpl.hpp" #include #include XERCES_CPP_NAMESPACE_BEGIN DOMProcessingInstructionImpl::DOMProcessingInstructionImpl(DOMDocument *ownerDoc, const XMLCh *targt, const XMLCh *dat) : fNode(ownerDoc), fCharacterData(ownerDoc, dat), fBaseURI(0) { fNode.setIsLeafNode(true); this->fTarget = ((DOMDocumentImpl *)ownerDoc)->cloneString(targt); } DOMProcessingInstructionImpl::DOMProcessingInstructionImpl( const DOMProcessingInstructionImpl &other, bool /*deep*/) : DOMProcessingInstruction(other), fNode(other.fNode), fChild(other.fChild), fCharacterData(other.fCharacterData), fTarget(other.fTarget), fBaseURI(other.fBaseURI) { fNode.setIsLeafNode(true); } DOMProcessingInstructionImpl::~DOMProcessingInstructionImpl() { } DOMNode *DOMProcessingInstructionImpl::cloneNode(bool deep) const { DOMNode* newNode = new (getOwnerDocument(), DOMMemoryManager::PROCESSING_INSTRUCTION_OBJECT) DOMProcessingInstructionImpl(*this, deep); fNode.callUserDataHandlers(DOMUserDataHandler::NODE_CLONED, this, newNode); return newNode; } const XMLCh * DOMProcessingInstructionImpl::getNodeName() const { return fTarget; } DOMNode::NodeType DOMProcessingInstructionImpl::getNodeType() const { return DOMNode::PROCESSING_INSTRUCTION_NODE; } /** A PI's "target" states what processor channel the PI's data should be directed to. It is defined differently in HTML and XML. In XML, a PI's "target" is the first (whitespace-delimited) token following the "release(this, DOMMemoryManager::PROCESSING_INSTRUCTION_OBJECT); } else { // shouldn't reach here throw DOMException(DOMException::INVALID_ACCESS_ERR,0, GetDOMNodeMemoryManager); } } void DOMProcessingInstructionImpl::setBaseURI(const XMLCh* baseURI) { this->fBaseURI = ((DOMDocumentImpl *)getOwnerDocument())->cloneString(baseURI); } const XMLCh* DOMProcessingInstructionImpl::getBaseURI() const { return fBaseURI? fBaseURI : fNode.fOwnerNode->getBaseURI(); } // Non standard extension for the range to work DOMProcessingInstruction *DOMProcessingInstructionImpl::splitText(XMLSize_t offset) { if (fNode.isReadOnly()) { throw DOMException( DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMNodeMemoryManager); } XMLSize_t len = fCharacterData.fDataBuf->getLen(); if (offset > len) throw DOMException(DOMException::INDEX_SIZE_ERR, 0, GetDOMNodeMemoryManager); DOMDocumentImpl *doc = (DOMDocumentImpl *)getOwnerDocument(); DOMProcessingInstruction *newText = doc->createProcessingInstruction( fTarget, this->substringData(offset, len - offset)); DOMNode *parent = getParentNode(); if (parent != 0) parent->insertBefore(newText, getNextSibling()); fCharacterData.fDataBuf->chop(offset); if (doc != 0) { Ranges* ranges = doc->getRanges(); if (ranges != 0) { XMLSize_t sz = ranges->size(); if (sz != 0) { for (XMLSize_t i =0; ielementAt(i)->updateSplitInfo( this, newText, offset); } } } } return newText; } // // Delegation stubs for inherited functions // DOMNode* DOMProcessingInstructionImpl::appendChild(DOMNode *newChild) {return fNode.appendChild (newChild); } DOMNamedNodeMap* DOMProcessingInstructionImpl::getAttributes() const {return fNode.getAttributes (); } DOMNodeList* DOMProcessingInstructionImpl::getChildNodes() const {return fNode.getChildNodes (); } DOMNode* DOMProcessingInstructionImpl::getFirstChild() const {return fNode.getFirstChild (); } DOMNode* DOMProcessingInstructionImpl::getLastChild() const {return fNode.getLastChild (); } const XMLCh* DOMProcessingInstructionImpl::getLocalName() const {return fNode.getLocalName (); } const XMLCh* DOMProcessingInstructionImpl::getNamespaceURI() const {return fNode.getNamespaceURI (); } DOMNode* DOMProcessingInstructionImpl::getNextSibling() const {return fChild.getNextSibling (); } const XMLCh* DOMProcessingInstructionImpl::getNodeValue() const {return fCharacterData.getNodeValue (); } DOMDocument* DOMProcessingInstructionImpl::getOwnerDocument() const {return fNode.getOwnerDocument (); } const XMLCh* DOMProcessingInstructionImpl::getPrefix() const {return fNode.getPrefix (); } DOMNode* DOMProcessingInstructionImpl::getParentNode() const {return fChild.getParentNode (this); } DOMNode* DOMProcessingInstructionImpl::getPreviousSibling() const {return fChild.getPreviousSibling (this); } bool DOMProcessingInstructionImpl::hasChildNodes() const {return fNode.hasChildNodes (); } DOMNode* DOMProcessingInstructionImpl::insertBefore(DOMNode *newChild, DOMNode *refChild) {return fNode.insertBefore (newChild, refChild); } void DOMProcessingInstructionImpl::normalize() {fNode.normalize (); } DOMNode* DOMProcessingInstructionImpl::removeChild(DOMNode *oldChild) {return fNode.removeChild (oldChild); } DOMNode* DOMProcessingInstructionImpl::replaceChild(DOMNode *newChild, DOMNode *oldChild) {return fNode.replaceChild (newChild, oldChild); } bool DOMProcessingInstructionImpl::isSupported(const XMLCh *feature, const XMLCh *version) const {return fNode.isSupported (feature, version); } void DOMProcessingInstructionImpl::setPrefix(const XMLCh *prefix) {fNode.setPrefix(prefix); } bool DOMProcessingInstructionImpl::hasAttributes() const {return fNode.hasAttributes(); } bool DOMProcessingInstructionImpl::isSameNode(const DOMNode* other) const {return fNode.isSameNode(other); } bool DOMProcessingInstructionImpl::isEqualNode(const DOMNode* arg) const {return fNode.isEqualNode(arg); } void* DOMProcessingInstructionImpl::setUserData(const XMLCh* key, void* data, DOMUserDataHandler* handler) {return fNode.setUserData(key, data, handler); } void* DOMProcessingInstructionImpl::getUserData(const XMLCh* key) const {return fNode.getUserData(key); } short DOMProcessingInstructionImpl::compareDocumentPosition(const DOMNode* other) const {return fNode.compareDocumentPosition(other); } const XMLCh* DOMProcessingInstructionImpl::getTextContent() const {return fNode.getTextContent(); } void DOMProcessingInstructionImpl::setTextContent(const XMLCh* textContent){fNode.setTextContent(textContent); } const XMLCh* DOMProcessingInstructionImpl::lookupPrefix(const XMLCh* namespaceURI) const {return fNode.lookupPrefix(namespaceURI); } bool DOMProcessingInstructionImpl::isDefaultNamespace(const XMLCh* namespaceURI) const {return fNode.isDefaultNamespace(namespaceURI); } const XMLCh* DOMProcessingInstructionImpl::lookupNamespaceURI(const XMLCh* prefix) const {return fNode.lookupNamespaceURI(prefix); } void* DOMProcessingInstructionImpl::getFeature(const XMLCh* feature, const XMLCh* version) const {return fNode.getFeature(feature, version); } // // Delegation of CharacerData functions. // const XMLCh* DOMProcessingInstructionImpl::getData() const {return fCharacterData.getData();} void DOMProcessingInstructionImpl::deleteData(XMLSize_t offset, XMLSize_t count) {fCharacterData.deleteData(this, offset, count);} const XMLCh* DOMProcessingInstructionImpl::substringData(XMLSize_t offset, XMLSize_t count) const {return fCharacterData.substringData(this, offset, count);} void DOMProcessingInstructionImpl::setData(const XMLCh *data) {fCharacterData.setData(this, data);} void DOMProcessingInstructionImpl::setNodeValue(const XMLCh *nodeValue) {fCharacterData.setNodeValue (this, nodeValue); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMCommentImpl.hpp0000644000175000017500000000555311037122704021510 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMCommentImpl.hpp 676911 2008-07-15 13:27:32Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMCOMMENTIMPL_HPP) #define XERCESC_INCLUDE_GUARD_DOMCOMMENTIMPL_HPP // // This file is part of the internal implementation of the C++ XML DOM. // It should NOT be included or used directly by application programs. // // Applications should include the file for the entire // DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class // name is substituded for the *. // #include #include #include "DOMNodeImpl.hpp" #include "DOMChildNode.hpp" #include "DOMCharacterDataImpl.hpp" XERCES_CPP_NAMESPACE_BEGIN class CDOM_EXPORT DOMCommentImpl: public DOMComment { public: DOMNodeImpl fNode; DOMChildNode fChild; DOMCharacterDataImpl fCharacterData; public: DOMCommentImpl(DOMDocument *, const XMLCh *); DOMCommentImpl(const DOMCommentImpl &other, bool deep); virtual ~DOMCommentImpl(); public: // Declare all of the functions from DOMNode. DOMNODE_FUNCTIONS; public: // Functions from DOMCharacterData virtual void appendData(const XMLCh *data); virtual void deleteData(XMLSize_t offset, XMLSize_t count); virtual const XMLCh * getData() const; virtual XMLSize_t getLength() const; virtual void insertData(XMLSize_t offset, const XMLCh * data); virtual void replaceData(XMLSize_t offset, XMLSize_t count, const XMLCh * data); virtual void setData(const XMLCh * arg); virtual const XMLCh * substringData(XMLSize_t offset, XMLSize_t count) const; // Non standard extension for the range to work DOMComment* splitText(XMLSize_t offset); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DOMCommentImpl & operator = (const DOMCommentImpl &); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMNamedNodeMapImpl.hpp0000644000175000017500000000563111030714661022375 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMNamedNodeMapImpl.hpp 671894 2008-06-26 13:29:21Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMNAMEDNODEMAPIMPL_HPP) #define XERCESC_INCLUDE_GUARD_DOMNAMEDNODEMAPIMPL_HPP // // This file is part of the internal implementation of the C++ XML DOM. // It should NOT be included or used directly by application programs. // // Applications should include the file for the entire // DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class // name is substituded for the *. // #include #include XERCES_CPP_NAMESPACE_BEGIN class DOMNodeVector; class DOMNode; #define MAP_SIZE 193 class CDOM_EXPORT DOMNamedNodeMapImpl: public DOMNamedNodeMap { protected: DOMNodeVector* fBuckets[MAP_SIZE]; DOMNode* fOwnerNode; // the node this map belongs to //bool fReadOnly; // revisit - flag on owner node instead? bool readOnly(); // revisit. Look at owner node read-only. public: DOMNamedNodeMapImpl(DOMNode *ownerNode); virtual ~DOMNamedNodeMapImpl(); virtual DOMNamedNodeMapImpl *cloneMap(DOMNode *ownerNode); virtual void setReadOnly(bool readOnly, bool deep); virtual XMLSize_t getLength() const; virtual DOMNode* item(XMLSize_t index) const; virtual DOMNode* getNamedItem(const XMLCh *name) const; virtual DOMNode* setNamedItem(DOMNode *arg); virtual DOMNode* removeNamedItem(const XMLCh *name); //Introduced in DOM Level 2 virtual DOMNode* getNamedItemNS(const XMLCh *namespaceURI, const XMLCh *localName) const; virtual DOMNode* setNamedItemNS(DOMNode *arg); virtual DOMNode* removeNamedItemNS(const XMLCh *namespaceURI, const XMLCh *localName); private: // unimplemented DOMNamedNodeMapImpl(const DOMNamedNodeMapImpl &); DOMNamedNodeMapImpl & operator = (const DOMNamedNodeMapImpl &); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMDocumentImpl.cpp0000644000175000017500000014654611360404621021667 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMDocumentImpl.cpp 932949 2010-04-11 17:40:33Z borisk $ */ #include "DOMDocumentImpl.hpp" #include "DOMCasts.hpp" #include "DOMConfigurationImpl.hpp" #include "DOMDocumentTypeImpl.hpp" #include "DOMAttrImpl.hpp" #include "DOMAttrNSImpl.hpp" #include "DOMCDATASectionImpl.hpp" #include "DOMCommentImpl.hpp" #include "DOMDeepNodeListImpl.hpp" #include "DOMDocumentFragmentImpl.hpp" #include "DOMElementImpl.hpp" #include "XSDElementNSImpl.hpp" #include "DOMEntityImpl.hpp" #include "DOMEntityReferenceImpl.hpp" #include "DOMNormalizer.hpp" #include "DOMNotationImpl.hpp" #include "DOMProcessingInstructionImpl.hpp" #include "DOMTextImpl.hpp" #include "DOMTreeWalkerImpl.hpp" #include "DOMNodeIteratorImpl.hpp" #include "DOMNodeIDMap.hpp" #include "DOMRangeImpl.hpp" #include "DOMTypeInfoImpl.hpp" #include "DOMXPathExpressionImpl.hpp" #include "DOMXPathNSResolverImpl.hpp" #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN // The chunk size to allocate from the system allocator. static XMLSize_t kInitialHeapAllocSize = 0x4000; static XMLSize_t kMaxHeapAllocSize = 0x80000; static XMLSize_t kMaxSubAllocationSize = 0x0100; // Any request for more bytes // than this will be handled by // allocating directly with system. void XMLInitializer::initializeDOMHeap (XMLSize_t initialHeapAllocSize, XMLSize_t maxHeapAllocSize, XMLSize_t maxSubAllocationSize) { kInitialHeapAllocSize = initialHeapAllocSize; kMaxHeapAllocSize = maxHeapAllocSize; kMaxSubAllocationSize = maxSubAllocationSize; } // // Constructors. Warning - be very careful with the ordering of initialization // of the heap. Ordering depends on the order of declaration // in the .hpp file, not on the order of initializers here // in the constructor. The heap declaration can not be // first - fNode and fParent must be first for the casting // functions in DOMCasts to work correctly. This means that // fNode and fParent constructors used here can not // allocate. // DOMDocumentImpl::DOMDocumentImpl(DOMImplementation* domImpl, MemoryManager* const manager) : fNode(this), fParent(this), fNodeIDMap(0), fInputEncoding(0), fXmlEncoding(0), fXmlStandalone(false), fXmlVersion(0), fDocumentURI(0), fDOMConfiguration(0), fUserDataTableKeys(17, manager), fUserDataTable(0), fCurrentBlock(0), fFreePtr(0), fFreeBytesRemaining(0), fHeapAllocSize(kInitialHeapAllocSize), fRecycleNodePtr(0), fRecycleBufferPtr(0), fNodeListPool(0), fDocType(0), fDocElement(0), fNameTableSize(257), fNormalizer(0), fRanges(0), fNodeIterators(0), fMemoryManager(manager), fDOMImplementation(domImpl), fChanges(0), errorChecking(true) { fNameTable = (DOMStringPoolEntry**)allocate ( sizeof (DOMStringPoolEntry*) * fNameTableSize); for (XMLSize_t i = 0; i < fNameTableSize; i++) fNameTable[i] = 0; } //DOM Level 2 DOMDocumentImpl::DOMDocumentImpl(const XMLCh *fNamespaceURI, const XMLCh *qualifiedName, DOMDocumentType *doctype, DOMImplementation* domImpl, MemoryManager* const manager) : fNode(this), fParent(this), fNodeIDMap(0), fInputEncoding(0), fXmlEncoding(0), fXmlStandalone(false), fXmlVersion(0), fDocumentURI(0), fDOMConfiguration(0), fUserDataTableKeys(17, manager), fUserDataTable(0), fCurrentBlock(0), fFreePtr(0), fFreeBytesRemaining(0), fHeapAllocSize(kInitialHeapAllocSize), fRecycleNodePtr(0), fRecycleBufferPtr(0), fNodeListPool(0), fDocType(0), fDocElement(0), fNameTableSize(257), fNormalizer(0), fRanges(0), fNodeIterators(0), fMemoryManager(manager), fDOMImplementation(domImpl), fChanges(0), errorChecking(true) { fNameTable = (DOMStringPoolEntry**)allocate ( sizeof (DOMStringPoolEntry*) * fNameTableSize); for (XMLSize_t i = 0; i < fNameTableSize; i++) fNameTable[i] = 0; try { setDocumentType(doctype); if (qualifiedName) appendChild(createElementNS(fNamespaceURI, qualifiedName)); //root element else if (fNamespaceURI) throw DOMException(DOMException::NAMESPACE_ERR, 0, getMemoryManager()); } catch(const OutOfMemoryException&) { throw; } catch (...) { this->deleteHeap(); throw; } } void DOMDocumentImpl::setDocumentType(DOMDocumentType *doctype) { if (!doctype) return; // New doctypes can be created either with the factory methods on DOMImplementation, in // which case ownerDocument will be 0, or with methods on DocumentImpl, in which case // ownerDocument will be set, but the DocType won't yet be a child of the document. // DOMDocument* doc = doctype->getOwnerDocument(); if (doc != 0 && doc != this) throw DOMException( //one doctype can belong to only one DOMDocumentImpl DOMException::WRONG_DOCUMENT_ERR, 0, getMemoryManager()); DOMDocumentTypeImpl* doctypeImpl = (DOMDocumentTypeImpl*) doctype; doctypeImpl->setOwnerDocument(this); // The doctype can not have any Entities or Notations yet, because they can not // be created except through factory methods on a document. // revisit. What if this doctype is already a child of the document? appendChild(doctype); } DOMDocumentImpl::~DOMDocumentImpl() { // While DOMConfiguration is allocated on the Document's heap, itself // it uses the memory manager directly. This means that while we cannot // delete with operator delete, we need to call its d-tor. // if (fDOMConfiguration) fDOMConfiguration->~DOMConfiguration (); // Clean up the fNodeListPool if (fNodeListPool) fNodeListPool->cleanup(); if (fRanges) delete fRanges; //fRanges->cleanup(); if (fNodeIterators) delete fNodeIterators;//fNodeIterators->cleanup(); if (fUserDataTable) delete fUserDataTable;//fUserDataTable->cleanup(); if (fRecycleNodePtr) { fRecycleNodePtr->deleteAllElements(); delete fRecycleNodePtr; } if (fRecycleBufferPtr) { delete fRecycleBufferPtr; } delete fNormalizer; // Delete the heap for this document. This uncerimoniously yanks the storage // out from under all of the nodes in the document. Destructors are NOT called. this->deleteHeap(); } DOMNode *DOMDocumentImpl::cloneNode(bool deep) const { // Note: the cloned document node goes on the same heap we live in. DOMDocumentImpl *newdoc = new (fMemoryManager) DOMDocumentImpl(fDOMImplementation, fMemoryManager); if(fXmlEncoding && *fXmlEncoding) newdoc->setXmlEncoding(fXmlEncoding); if(fXmlVersion && *fXmlVersion) newdoc->setXmlVersion(fXmlVersion); newdoc->setXmlStandalone(fXmlStandalone); // then the children by _importing_ them if (deep) for (DOMNode *n = this->getFirstChild(); n != 0; n = n->getNextSibling()) { newdoc->appendChild(newdoc->importNode(n, true, true)); } fNode.callUserDataHandlers(DOMUserDataHandler::NODE_CLONED, this, newdoc); return newdoc; } const XMLCh * DOMDocumentImpl::getNodeName() const { static const XMLCh nam[] = // "#document" {chPound, chLatin_d, chLatin_o, chLatin_c, chLatin_u, chLatin_m, chLatin_e, chLatin_n, chLatin_t, 0}; return nam; } DOMNode::NodeType DOMDocumentImpl::getNodeType() const { return DOMNode::DOCUMENT_NODE; } // even though ownerDocument refers to this in this implementation // the DOM Level 2 spec says it must be 0, so make it appear so DOMDocument * DOMDocumentImpl::getOwnerDocument() const { return 0; } DOMAttr *DOMDocumentImpl::createAttribute(const XMLCh *nam) { if(!nam || !isXMLName(nam)) throw DOMException(DOMException::INVALID_CHARACTER_ERR,0, getMemoryManager()); return new (this, DOMMemoryManager::ATTR_OBJECT) DOMAttrImpl(this,nam); } DOMCDATASection *DOMDocumentImpl::createCDATASection(const XMLCh *data) { return new (this, DOMMemoryManager::CDATA_SECTION_OBJECT) DOMCDATASectionImpl(this,data); } DOMComment *DOMDocumentImpl::createComment(const XMLCh *data) { return new (this, DOMMemoryManager::COMMENT_OBJECT) DOMCommentImpl(this, data); } DOMDocumentFragment *DOMDocumentImpl::createDocumentFragment() { return new (this, DOMMemoryManager::DOCUMENT_FRAGMENT_OBJECT) DOMDocumentFragmentImpl(this); } DOMDocumentType *DOMDocumentImpl::createDocumentType(const XMLCh *nam) { if (!nam || !isXMLName(nam)) throw DOMException( DOMException::INVALID_CHARACTER_ERR, 0, getMemoryManager()); return new (this, DOMMemoryManager::DOCUMENT_TYPE_OBJECT) DOMDocumentTypeImpl(this, nam, false); } DOMDocumentType * DOMDocumentImpl::createDocumentType(const XMLCh *qualifiedName, const XMLCh *publicId, const XMLCh *systemId) { if (!qualifiedName || !isXMLName(qualifiedName)) throw DOMException( DOMException::INVALID_CHARACTER_ERR, 0, getMemoryManager()); return new (this, DOMMemoryManager::DOCUMENT_TYPE_OBJECT) DOMDocumentTypeImpl(this, qualifiedName, publicId, systemId, false); } DOMElement *DOMDocumentImpl::createElement(const XMLCh *tagName) { if(!tagName || !isXMLName(tagName)) throw DOMException(DOMException::INVALID_CHARACTER_ERR,0, getMemoryManager()); return new (this, DOMMemoryManager::ELEMENT_OBJECT) DOMElementImpl(this,tagName); } DOMElement *DOMDocumentImpl::createElementNoCheck(const XMLCh *tagName) { return new (this, DOMMemoryManager::ELEMENT_OBJECT) DOMElementImpl(this, tagName); } DOMEntity *DOMDocumentImpl::createEntity(const XMLCh *nam) { if (!nam || !isXMLName(nam)) throw DOMException( DOMException::INVALID_CHARACTER_ERR, 0, getMemoryManager()); return new (this, DOMMemoryManager::ENTITY_OBJECT) DOMEntityImpl(this, nam); } DOMEntityReference *DOMDocumentImpl::createEntityReference(const XMLCh *nam) { if (!nam || !isXMLName(nam)) throw DOMException( DOMException::INVALID_CHARACTER_ERR, 0, getMemoryManager()); return new (this, DOMMemoryManager::ENTITY_REFERENCE_OBJECT) DOMEntityReferenceImpl(this, nam); } DOMEntityReference *DOMDocumentImpl::createEntityReferenceByParser(const XMLCh *nam) { if (!nam || !isXMLName(nam)) throw DOMException( DOMException::INVALID_CHARACTER_ERR, 0, getMemoryManager()); return new (this, DOMMemoryManager::ENTITY_REFERENCE_OBJECT) DOMEntityReferenceImpl(this, nam, false); } DOMNotation *DOMDocumentImpl::createNotation(const XMLCh *nam) { if (!nam || !isXMLName(nam)) throw DOMException( DOMException::INVALID_CHARACTER_ERR, 0, getMemoryManager()); return new (this, DOMMemoryManager::NOTATION_OBJECT) DOMNotationImpl(this, nam); } DOMProcessingInstruction *DOMDocumentImpl::createProcessingInstruction( const XMLCh *target, const XMLCh *data) { if(!target || !isXMLName(target)) throw DOMException(DOMException::INVALID_CHARACTER_ERR,0, getMemoryManager()); return new (this, DOMMemoryManager::PROCESSING_INSTRUCTION_OBJECT) DOMProcessingInstructionImpl(this,target,data); } DOMText *DOMDocumentImpl::createTextNode(const XMLCh *data) { return new (this, DOMMemoryManager::TEXT_OBJECT) DOMTextImpl(this,data); } DOMNodeIterator* DOMDocumentImpl::createNodeIterator ( DOMNode *root, DOMNodeFilter::ShowType whatToShow, DOMNodeFilter* filter, bool entityReferenceExpansion) { if (!root) { throw DOMException(DOMException::NOT_SUPPORTED_ERR, 0, getMemoryManager()); return 0; } DOMNodeIteratorImpl* nodeIterator = new (this) DOMNodeIteratorImpl(this, root, whatToShow, filter, entityReferenceExpansion); if (fNodeIterators == 0L) { //fNodeIterators = new (this) NodeIterators(1, false); fNodeIterators = new (fMemoryManager) NodeIterators(1, false, fMemoryManager); } fNodeIterators->addElement(nodeIterator); return nodeIterator; } NodeIterators* DOMDocumentImpl::getNodeIterators() const { return fNodeIterators; } void DOMDocumentImpl::removeNodeIterator(DOMNodeIteratorImpl* nodeIterator) { if (fNodeIterators != 0) { XMLSize_t sz = fNodeIterators->size(); if (sz !=0) { for (XMLSize_t i =0; ielementAt(i) == nodeIterator) { fNodeIterators->removeElementAt(i); break; } } } } } DOMXPathExpression* DOMDocumentImpl::createExpression(const XMLCh * expression, const DOMXPathNSResolver *resolver) { return new (getMemoryManager()) DOMXPathExpressionImpl(expression, resolver, getMemoryManager()); } DOMXPathNSResolver* DOMDocumentImpl::createNSResolver(const DOMNode *nodeResolver) { return new (getMemoryManager()) DOMXPathNSResolverImpl(nodeResolver, getMemoryManager()); } DOMXPathResult* DOMDocumentImpl::evaluate(const XMLCh *expression, const DOMNode *contextNode, const DOMXPathNSResolver *resolver, DOMXPathResult::ResultType type, DOMXPathResult* result) { JanitorMemFunCall expr( createExpression(expression, resolver), &DOMXPathExpression::release); return expr->evaluate(contextNode, type, result); } DOMTreeWalker* DOMDocumentImpl::createTreeWalker ( DOMNode *root, DOMNodeFilter::ShowType whatToShow, DOMNodeFilter* filter, bool entityReferenceExpansion) { if (!root) { throw DOMException(DOMException::NOT_SUPPORTED_ERR, 0, getMemoryManager()); return 0; } return new (this) DOMTreeWalkerImpl(root, whatToShow, filter, entityReferenceExpansion); } DOMDocumentType *DOMDocumentImpl::getDoctype() const { return fDocType; } DOMElement *DOMDocumentImpl::getDocumentElement() const { return fDocElement; } DOMNodeList *DOMDocumentImpl::getElementsByTagName(const XMLCh *tagname) const { // cast off the const of this because we will update the fNodeListPool return ((DOMDocumentImpl*)this)->getDeepNodeList(this,tagname); } DOMImplementation *DOMDocumentImpl::getImplementation() const { return fDOMImplementation; } DOMNode *DOMDocumentImpl::insertBefore(DOMNode *newChild, DOMNode *refChild) { // Only one such child permitted if( (newChild->getNodeType() == DOMNode::ELEMENT_NODE && fDocElement!=0) || (newChild->getNodeType() == DOMNode::DOCUMENT_TYPE_NODE && fDocType!=0) ) throw DOMException(DOMException::HIERARCHY_REQUEST_ERR,0, getMemoryManager()); // if the newChild is a documenttype node created from domimplementation, set the ownerDoc first if ((newChild->getNodeType() == DOMNode::DOCUMENT_TYPE_NODE) && !newChild->getOwnerDocument()) ((DOMDocumentTypeImpl*)newChild)->setOwnerDocument(this); fParent.insertBefore(newChild,refChild); // If insert succeeded, cache the kid appropriately if(newChild->getNodeType() == DOMNode::ELEMENT_NODE) fDocElement=(DOMElement *)newChild; else if(newChild->getNodeType() == DOMNode::DOCUMENT_TYPE_NODE) fDocType=(DOMDocumentType *)newChild; return newChild; } DOMNode* DOMDocumentImpl::replaceChild(DOMNode *newChild, DOMNode *oldChild) { DOMDocumentType* tempDocType = fDocType; DOMElement* tempDocElement = fDocElement; if(oldChild->getNodeType() == DOMNode::DOCUMENT_TYPE_NODE) fDocType=0; else if(oldChild->getNodeType() == DOMNode::ELEMENT_NODE) fDocElement=0; try { insertBefore(newChild, oldChild); // changed() already done. if((oldChild->getNodeType() == DOMNode::DOCUMENT_TYPE_NODE) || (oldChild->getNodeType() == DOMNode::ELEMENT_NODE)) return fParent.removeChild(oldChild); else return removeChild(oldChild); } catch(const OutOfMemoryException&) { throw; } catch(...) { fDocType = tempDocType; fDocElement = tempDocElement; throw; } } bool DOMDocumentImpl::isXMLName(const XMLCh *s) { // fXmlVersion points directly to the static constants if (fXmlVersion==XMLUni::fgVersion1_1) return XMLChar1_1::isValidName(s); else return XMLChar1_0::isValidName(s); } DOMNode *DOMDocumentImpl::removeChild(DOMNode *oldChild) { fParent.removeChild(oldChild); // If remove succeeded, un-cache the kid appropriately if(oldChild->getNodeType() == DOMNode::ELEMENT_NODE) fDocElement=0; else if(oldChild->getNodeType() == DOMNode::DOCUMENT_TYPE_NODE) fDocType=0; return oldChild; } void DOMDocumentImpl::setNodeValue(const XMLCh *x) { fNode.setNodeValue(x); } //Introduced in DOM Level 2 DOMNode *DOMDocumentImpl::importNode(const DOMNode *source, bool deep) { return importNode(source, deep, false); } DOMElement *DOMDocumentImpl::createElementNS(const XMLCh *fNamespaceURI, const XMLCh *qualifiedName) { if(!qualifiedName || !isXMLName(qualifiedName)) throw DOMException(DOMException::INVALID_CHARACTER_ERR,0, getMemoryManager()); return new (this, DOMMemoryManager::ELEMENT_NS_OBJECT) DOMElementNSImpl(this, fNamespaceURI, qualifiedName); } DOMElement *DOMDocumentImpl::createElementNS(const XMLCh *fNamespaceURI, const XMLCh *qualifiedName, const XMLFileLoc lineNo, const XMLFileLoc columnNo) { if(!qualifiedName || !isXMLName(qualifiedName)) throw DOMException(DOMException::INVALID_CHARACTER_ERR,0, getMemoryManager()); return new (this) XSDElementNSImpl(this, fNamespaceURI, qualifiedName, lineNo, columnNo); } DOMAttr *DOMDocumentImpl::createAttributeNS(const XMLCh *fNamespaceURI, const XMLCh *qualifiedName) { if(!qualifiedName || !isXMLName(qualifiedName)) throw DOMException(DOMException::INVALID_CHARACTER_ERR,0, getMemoryManager()); return new (this, DOMMemoryManager::ATTR_NS_OBJECT) DOMAttrNSImpl(this, fNamespaceURI, qualifiedName); } DOMNodeList *DOMDocumentImpl::getElementsByTagNameNS(const XMLCh *fNamespaceURI, const XMLCh *fLocalName) const { // cast off the const of this because we will update the fNodeListPool return ((DOMDocumentImpl*)this)->getDeepNodeList(this, fNamespaceURI, fLocalName); } DOMElement *DOMDocumentImpl::getElementById(const XMLCh *elementId) const { if (fNodeIDMap == 0) return 0; DOMAttr *theAttr = fNodeIDMap->find(elementId); if (theAttr == 0) return 0; return theAttr->getOwnerElement(); } const XMLCh* DOMDocumentImpl::getBaseURI() const { return fDocumentURI; } DOMRange* DOMDocumentImpl::createRange() { DOMRangeImpl* range = new (this) DOMRangeImpl(this, fMemoryManager); if (fRanges == 0L) { //fRanges = new (this) Ranges(1, false); fRanges = new (fMemoryManager) Ranges(1, false, fMemoryManager); // XMemory } fRanges->addElement(range); return range; } Ranges* DOMDocumentImpl::getRanges() const { return fRanges; } void DOMDocumentImpl::removeRange(DOMRangeImpl* range) { if (fRanges != 0) { XMLSize_t sz = fRanges->size(); if (sz !=0) { for (XMLSize_t i =0; ielementAt(i) == range) { fRanges->removeElementAt(i); break; } } } } } /** Uses the kidOK lookup table to check whether the proposed tree structure is legal. ????? It feels like there must be a more efficient solution, but for the life of me I can't think what it would be. */ bool DOMDocumentImpl::isKidOK(DOMNode *parent, DOMNode *child) { static int kidOK[14]; if (kidOK[DOMNode::ATTRIBUTE_NODE] == 0) { kidOK[DOMNode::DOCUMENT_NODE] = 1 << DOMNode::ELEMENT_NODE | 1 << DOMNode::PROCESSING_INSTRUCTION_NODE | 1 << DOMNode::COMMENT_NODE | 1 << DOMNode::DOCUMENT_TYPE_NODE; kidOK[DOMNode::DOCUMENT_FRAGMENT_NODE] = kidOK[DOMNode::ENTITY_NODE] = kidOK[DOMNode::ENTITY_REFERENCE_NODE] = kidOK[DOMNode::ELEMENT_NODE] = 1 << DOMNode::ELEMENT_NODE | 1 << DOMNode::PROCESSING_INSTRUCTION_NODE | 1 << DOMNode::COMMENT_NODE | 1 << DOMNode::TEXT_NODE | 1 << DOMNode::CDATA_SECTION_NODE | 1 << DOMNode::ENTITY_REFERENCE_NODE; kidOK[DOMNode::ATTRIBUTE_NODE] = 1 << DOMNode::TEXT_NODE | 1 << DOMNode::ENTITY_REFERENCE_NODE; kidOK[DOMNode::PROCESSING_INSTRUCTION_NODE] = kidOK[DOMNode::COMMENT_NODE] = kidOK[DOMNode::TEXT_NODE] = kidOK[DOMNode::CDATA_SECTION_NODE] = kidOK[DOMNode::NOTATION_NODE] = 0; } int p=parent->getNodeType(); int ch = child->getNodeType(); return ((kidOK[p] & 1<getXmlVersion(), XMLUni::fgVersion1_1))? XMLChar1_1::isAllSpaces(child->getNodeValue(), XMLString::stringLen(child->getNodeValue())): XMLChar1_0::isAllSpaces(child->getNodeValue(), XMLString::stringLen(child->getNodeValue()))) ); } void DOMDocumentImpl::changed() { fChanges++; } int DOMDocumentImpl::changes() const{ return fChanges; } // // Delegation for functions inherited from DOMNode // DOMNode* DOMDocumentImpl::appendChild(DOMNode *newChild) {return insertBefore(newChild, 0); } DOMNamedNodeMap* DOMDocumentImpl::getAttributes() const {return fNode.getAttributes (); } DOMNodeList* DOMDocumentImpl::getChildNodes() const {return fParent.getChildNodes (); } DOMNode* DOMDocumentImpl::getFirstChild() const {return fParent.getFirstChild (); } DOMNode* DOMDocumentImpl::getLastChild() const {return fParent.getLastChild (); } const XMLCh* DOMDocumentImpl::getLocalName() const {return fNode.getLocalName (); } const XMLCh* DOMDocumentImpl::getNamespaceURI() const {return fNode.getNamespaceURI (); } DOMNode* DOMDocumentImpl::getNextSibling() const {return fNode.getNextSibling (); } const XMLCh* DOMDocumentImpl::getNodeValue() const {return fNode.getNodeValue (); } const XMLCh* DOMDocumentImpl::getPrefix() const {return fNode.getPrefix (); } DOMNode* DOMDocumentImpl::getParentNode() const {return fNode.getParentNode (); } DOMNode* DOMDocumentImpl::getPreviousSibling() const {return fNode.getPreviousSibling (); } bool DOMDocumentImpl::hasChildNodes() const {return fParent.hasChildNodes (); } void DOMDocumentImpl::normalize() {fParent.normalize (); } void DOMDocumentImpl::setPrefix(const XMLCh *prefix) {fNode.setPrefix(prefix); } bool DOMDocumentImpl::hasAttributes() const {return fNode.hasAttributes(); } bool DOMDocumentImpl::isSameNode(const DOMNode* other) const {return fNode.isSameNode(other);} bool DOMDocumentImpl::isEqualNode(const DOMNode* arg) const {return fParent.isEqualNode(arg);} void* DOMDocumentImpl::setUserData(const XMLCh* key, void* data, DOMUserDataHandler* handler) {return fNode.setUserData(key, data, handler); } void* DOMDocumentImpl::getUserData(const XMLCh* key) const {return fNode.getUserData(key); } short DOMDocumentImpl::compareDocumentPosition(const DOMNode* other) const {return fNode.compareDocumentPosition(other); } const XMLCh* DOMDocumentImpl::getTextContent() const {return fNode.getTextContent(); } void DOMDocumentImpl::setTextContent(const XMLCh* textContent){fNode.setTextContent(textContent); } const XMLCh* DOMDocumentImpl::lookupPrefix(const XMLCh* namespaceURI) const {return fNode.lookupPrefix(namespaceURI); } bool DOMDocumentImpl::isDefaultNamespace(const XMLCh* namespaceURI) const {return fNode.isDefaultNamespace(namespaceURI); } const XMLCh* DOMDocumentImpl::lookupNamespaceURI(const XMLCh* prefix) const {return fNode.lookupNamespaceURI(prefix); } //----------------------------------------------------------------------- // // Per Document Heap and Heap Helper functions // // revisit - this stuff should be a class of its own, rather than // just lying around naked in DocumentImpl. // //----------------------------------------------------------------------- XMLCh * DOMDocumentImpl::cloneString(const XMLCh *src) { if (!src) return 0; XMLSize_t len = XMLString::stringLen(src); len = (len + 1) * sizeof(XMLCh); len = (len % 4) + len; XMLCh *newStr = (XMLCh *)this->allocate(len); XMLString::copyString(newStr, src); return newStr; } XMLSize_t DOMDocumentImpl::getMemoryAllocationBlockSize() const { return fHeapAllocSize; } void DOMDocumentImpl::setMemoryAllocationBlockSize(XMLSize_t size) { // the new size must be bigger than the maximum amount of each allocation if(size>kMaxSubAllocationSize) fHeapAllocSize=size; } void* DOMDocumentImpl::allocate(XMLSize_t amount) { // Align the request size so that suballocated blocks // beyond this one will be maintained at the same alignment. amount = XMLPlatformUtils::alignPointerForNewBlockAllocation(amount); // If the request is for a largish block, hand it off to the system // allocator. The block still must be linked into the list of // allocated blocks so that it will be deleted when the time comes. if (amount > kMaxSubAllocationSize) { // The size of the header we add to our raw blocks XMLSize_t sizeOfHeader = XMLPlatformUtils::alignPointerForNewBlockAllocation(sizeof(void *)); // Try to allocate the block void* newBlock; newBlock = fMemoryManager->allocate(sizeOfHeader + amount); // Link it into the list beyond current block, as current block // is still being subdivided. If there is no current block // then track that we have no bytes to further divide. if (fCurrentBlock) { *(void **)newBlock = *(void **)fCurrentBlock; *(void **)fCurrentBlock = newBlock; } else { *(void **)newBlock = 0; fCurrentBlock = newBlock; fFreePtr = 0; fFreeBytesRemaining = 0; } void *retPtr = (char*)newBlock + sizeOfHeader; return retPtr; } // It's a normal (sub-allocatable) request. // Are we out of room in our current block? if (amount > fFreeBytesRemaining) { // Request doesn't fit in the current block. // The size of the header we add to our raw blocks XMLSize_t sizeOfHeader = XMLPlatformUtils::alignPointerForNewBlockAllocation(sizeof(void *)); // Get a new block from the system allocator. void* newBlock; newBlock = fMemoryManager->allocate(fHeapAllocSize); *(void **)newBlock = fCurrentBlock; fCurrentBlock = newBlock; fFreePtr = (char *)newBlock + sizeOfHeader; fFreeBytesRemaining = fHeapAllocSize - sizeOfHeader; if(fHeapAllocSizedeallocate(fCurrentBlock); fCurrentBlock = nextBlock; } } DOMNodeList *DOMDocumentImpl::getDeepNodeList(const DOMNode *rootNode, const XMLCh *tagName) { if(!fNodeListPool) { fNodeListPool = new (this) DOMDeepNodeListPool(109, false); } DOMDeepNodeListImpl* retList = fNodeListPool->getByKey(rootNode, tagName, 0); if (!retList) { XMLSize_t id = fNodeListPool->put((void*) rootNode, (XMLCh*) tagName, 0, new (this) DOMDeepNodeListImpl(rootNode, tagName)); retList = fNodeListPool->getById(id); } return retList; } DOMNodeList *DOMDocumentImpl::getDeepNodeList(const DOMNode *rootNode, //DOM Level 2 const XMLCh *namespaceURI, const XMLCh *localName) { if(!fNodeListPool) { fNodeListPool = new (this) DOMDeepNodeListPool(109, false); } DOMDeepNodeListImpl* retList = fNodeListPool->getByKey(rootNode, localName, namespaceURI); if (!retList) { // the pool will adopt the DOMDeepNodeListImpl XMLSize_t id = fNodeListPool->put((void*) rootNode, (XMLCh*) localName, (XMLCh*) namespaceURI, new (this) DOMDeepNodeListImpl(rootNode, namespaceURI, localName)); retList = fNodeListPool->getById(id); } return retList; } //Introduced in DOM Level 3 const XMLCh* DOMDocumentImpl::getInputEncoding() const { return fInputEncoding; } void DOMDocumentImpl::setInputEncoding(const XMLCh* actualEncoding){ fInputEncoding = cloneString(actualEncoding); } const XMLCh* DOMDocumentImpl::getXmlEncoding() const { return fXmlEncoding; } void DOMDocumentImpl::setXmlEncoding(const XMLCh* encoding){ fXmlEncoding = cloneString(encoding); } bool DOMDocumentImpl::getXmlStandalone() const{ return fXmlStandalone; } void DOMDocumentImpl::setXmlStandalone(bool standalone){ fXmlStandalone = standalone; } const XMLCh* DOMDocumentImpl::getXmlVersion() const { return fXmlVersion; } void DOMDocumentImpl::setXmlVersion(const XMLCh* version){ // store the static strings, so that comparisons will be faster if(version==0) fXmlVersion = 0; else if(*version==0) fXmlVersion = XMLUni::fgZeroLenString; else if(XMLString::equals(version, XMLUni::fgVersion1_0)) fXmlVersion = XMLUni::fgVersion1_0; else if(XMLString::equals(version, XMLUni::fgVersion1_1)) fXmlVersion = XMLUni::fgVersion1_1; else throw DOMException(DOMException::NOT_SUPPORTED_ERR, 0, getMemoryManager()); } const XMLCh* DOMDocumentImpl::getDocumentURI() const { return fDocumentURI; } void DOMDocumentImpl::setDocumentURI(const XMLCh* documentURI){ if (documentURI && *documentURI) { XMLCh* temp = (XMLCh*) this->allocate((XMLString::stringLen(documentURI) + 9)*sizeof(XMLCh)); XMLString::fixURI(documentURI, temp); fDocumentURI = temp; } else fDocumentURI = 0; } bool DOMDocumentImpl::getStrictErrorChecking() const { return getErrorChecking(); } void DOMDocumentImpl::setStrictErrorChecking(bool strictErrorChecking) { setErrorChecking(strictErrorChecking); } DOMNode* DOMDocumentImpl::adoptNode(DOMNode* sourceNode) { if(sourceNode->getOwnerDocument()!=this) { // cannot take ownership of a node created by another document, as it comes from its memory pool // and would be delete when the original document is deleted return 0; } // if the adopted node is already part of this document (i.e. the source and target document are the same), // this method still has the effect of removing the source node from the child list of its parent, if any switch(sourceNode->getNodeType()) { case DOCUMENT_NODE: case DOCUMENT_TYPE_NODE: throw DOMException(DOMException::NOT_SUPPORTED_ERR, 0, getMemoryManager()); case ATTRIBUTE_NODE: { DOMAttr* sourceAttr=(DOMAttr*)sourceNode; DOMElement* sourceAttrElem=sourceAttr->getOwnerElement(); if(sourceAttrElem) sourceAttrElem->removeAttributeNode(sourceAttr); fNode.callUserDataHandlers(DOMUserDataHandler::NODE_ADOPTED, sourceNode, sourceNode); break; } default: { DOMNode* sourceNodeParent=sourceNode->getParentNode(); if(sourceNodeParent) sourceNodeParent->removeChild(sourceNode); fNode.callUserDataHandlers(DOMUserDataHandler::NODE_ADOPTED, sourceNode, sourceNode); } } return 0; } void DOMDocumentImpl::normalizeDocument() { if(!fNormalizer) fNormalizer = new (fMemoryManager) DOMNormalizer(fMemoryManager); fNormalizer->normalizeDocument(this); } DOMConfiguration* DOMDocumentImpl::getDOMConfig() const { if(!fDOMConfiguration) ((DOMDocumentImpl*)this)->fDOMConfiguration = new ((DOMDocumentImpl*)this) DOMConfigurationImpl(fMemoryManager); return fDOMConfiguration; } DOMNode *DOMDocumentImpl::importNode(const DOMNode *source, bool deep, bool cloningDoc) { DOMNode *newnode=0; bool oldErrorCheckingFlag = errorChecking; switch (source->getNodeType()) { case DOMNode::ELEMENT_NODE : { DOMElement *newelement; if (source->getLocalName() == 0) newelement = createElement(source->getNodeName()); else { DOMElementNSImpl* nsElem = (DOMElementNSImpl*)createElementNS(source->getNamespaceURI(), source->getNodeName()); DOMTypeInfoImpl* clonedTypeInfo=NULL; // if the source has type informations, copy them DOMPSVITypeInfo* sourcePSVI=(DOMPSVITypeInfo*)source->getFeature(XMLUni::fgXercescInterfacePSVITypeInfo, 0); if(sourcePSVI && sourcePSVI->getNumericProperty(DOMPSVITypeInfo::PSVI_Schema_Specified)) clonedTypeInfo=new (this) DOMTypeInfoImpl(this, sourcePSVI); else { const DOMTypeInfo * typeInfo=((DOMElement*)source)->getSchemaTypeInfo(); // copy it only if it has valid data if(typeInfo && typeInfo->getTypeName()!=NULL) clonedTypeInfo=new (this) DOMTypeInfoImpl(typeInfo->getTypeNamespace(), typeInfo->getTypeName()); } if(clonedTypeInfo) nsElem->setSchemaTypeInfo(clonedTypeInfo); newelement=nsElem; } DOMNamedNodeMap *srcattr=source->getAttributes(); if(srcattr!=0) for(XMLSize_t i=0;igetLength();++i) { DOMAttr *attr = (DOMAttr *) srcattr->item(i); if (attr -> getSpecified() || cloningDoc) { // not a default attribute or we are in the process of cloning the elements from inside a DOMDocumentType DOMAttr *nattr = (DOMAttr *) importNode(attr, true, cloningDoc); if (attr -> getLocalName() == 0) newelement->setAttributeNode(nattr); else newelement->setAttributeNodeNS(nattr); // if the imported attribute is of ID type, register the new node in fNodeIDMap if (attr->isId()) { castToNodeImpl(nattr)->isIdAttr(true); if (!fNodeIDMap) fNodeIDMap = new (this) DOMNodeIDMap(500, this); fNodeIDMap->add((DOMAttr*)nattr); } } } newnode=newelement; } break; case DOMNode::ATTRIBUTE_NODE : { DOMAttrImpl* newattr=NULL; if (source->getLocalName() == 0) newattr = (DOMAttrImpl*)createAttribute(source->getNodeName()); else { newattr = (DOMAttrImpl*)createAttributeNS(source->getNamespaceURI(), source->getNodeName()); } DOMTypeInfoImpl* clonedTypeInfo=NULL; // if the source has type informations, copy them DOMPSVITypeInfo* sourcePSVI=(DOMPSVITypeInfo*)source->getFeature(XMLUni::fgXercescInterfacePSVITypeInfo, 0); if(sourcePSVI && sourcePSVI->getNumericProperty(DOMPSVITypeInfo::PSVI_Schema_Specified)) clonedTypeInfo=new (this) DOMTypeInfoImpl(this, sourcePSVI); else { const DOMTypeInfo * typeInfo=((DOMAttr*)source)->getSchemaTypeInfo(); // copy it only if it has valid data if(typeInfo && typeInfo->getTypeName()!=NULL) clonedTypeInfo=new (this) DOMTypeInfoImpl(typeInfo->getTypeNamespace(), typeInfo->getTypeName()); } if(clonedTypeInfo) newattr->setSchemaTypeInfo(clonedTypeInfo); newnode=newattr; } deep = true; // Kids carry value break; case DOMNode::TEXT_NODE : newnode = createTextNode(source->getNodeValue()); break; case DOMNode::CDATA_SECTION_NODE : newnode = createCDATASection(source->getNodeValue()); break; case DOMNode::ENTITY_REFERENCE_NODE : { DOMEntityReferenceImpl* newentityRef = (DOMEntityReferenceImpl*)createEntityReference(source->getNodeName()); newnode=newentityRef; // Only the EntityReference itself is copied, even if a deep import is requested, since the source and // destination documents might have defined the entity differently. deep = false; } break; case DOMNode::ENTITY_NODE : { DOMEntity *srcentity=(DOMEntity *)source; DOMEntityImpl *newentity = (DOMEntityImpl *)createEntity(source->getNodeName()); newentity->setPublicId(srcentity->getPublicId()); newentity->setSystemId(srcentity->getSystemId()); newentity->setNotationName(srcentity->getNotationName()); newentity->setBaseURI(srcentity->getBaseURI()); // Kids carry additional value newnode=newentity; castToNodeImpl(newentity)->setReadOnly(false, true);// allow deep import temporarily } break; case DOMNode::PROCESSING_INSTRUCTION_NODE : newnode = createProcessingInstruction(source->getNodeName(), source->getNodeValue()); break; case DOMNode::COMMENT_NODE : newnode = createComment(source->getNodeValue()); break; case DOMNode::DOCUMENT_TYPE_NODE : { // unless this is used as part of cloning a Document // forbid it for the sake of being compliant to the DOM spec if (!cloningDoc) throw DOMException(DOMException::NOT_SUPPORTED_ERR, 0, getMemoryManager()); DOMDocumentType *srcdoctype = (DOMDocumentType *)source; DOMDocumentTypeImpl *newdoctype = (DOMDocumentTypeImpl *) createDocumentType(srcdoctype->getNodeName(), srcdoctype->getPublicId(), srcdoctype->getSystemId()); // Values are on NamedNodeMaps DOMNamedNodeMap *smap = srcdoctype->getEntities(); DOMNamedNodeMap *tmap = newdoctype->getEntities(); if(smap != 0) { for(XMLSize_t i = 0; i < smap->getLength(); i++) { tmap->setNamedItem(importNode(smap->item(i), true, cloningDoc)); } } smap = srcdoctype->getNotations(); tmap = newdoctype->getNotations(); if (smap != 0) { for(XMLSize_t i = 0; i < smap->getLength(); i++) { tmap->setNamedItem(importNode(smap->item(i), true, cloningDoc)); } } const XMLCh* intSubset=srcdoctype->getInternalSubset(); if(intSubset != 0) { newdoctype->setInternalSubset(intSubset); } // detect if the DTD being copied is our own implementation, and use the provided methods try { DOMDocumentTypeImpl* docTypeImpl=(DOMDocumentTypeImpl*)(srcdoctype->getFeature(XMLUni::fgXercescInterfaceDOMDocumentTypeImpl, XMLUni::fgZeroLenString)); if(docTypeImpl) { smap = docTypeImpl->getElements(); tmap = newdoctype->getElements(); if (smap != 0) { for(XMLSize_t i = 0; i < smap->getLength(); i++) { tmap->setNamedItem(importNode(smap->item(i), true, cloningDoc)); } } } } catch(DOMException&) { } newnode = newdoctype; } break; case DOMNode::DOCUMENT_FRAGMENT_NODE : newnode = createDocumentFragment(); // No name, kids carry value break; case DOMNode::NOTATION_NODE : { DOMNotation *srcnotation=(DOMNotation *)source; DOMNotationImpl *newnotation = (DOMNotationImpl *)createNotation(source->getNodeName()); newnotation->setPublicId(srcnotation->getPublicId()); newnotation->setSystemId(srcnotation->getSystemId()); newnotation->setBaseURI(srcnotation->getBaseURI()); newnode=newnotation; // No name, no value break; } case DOMNode::DOCUMENT_NODE : // Document can't be child of Document default: // Unknown node type throw DOMException(DOMException::NOT_SUPPORTED_ERR, 0, getMemoryManager()); } // If deep, replicate and attach the kids. if (deep) for (DOMNode *srckid = source->getFirstChild(); srckid != 0; srckid = srckid->getNextSibling()) { newnode->appendChild(importNode(srckid, true, cloningDoc)); } if (newnode->getNodeType() == DOMNode::ENTITY_NODE) { castToNodeImpl(newnode)->setReadOnly(true, true); errorChecking = oldErrorCheckingFlag; } if (cloningDoc) { // we know for sure that the source node is a DOMNodeImpl, as cloningDoc is set to true when // a DOMDocumentImpl is cloned castToNodeImpl(source)->callUserDataHandlers(DOMUserDataHandler::NODE_CLONED, source, newnode); } else fNode.callUserDataHandlers(DOMUserDataHandler::NODE_IMPORTED, source, newnode); return newnode; } // user data utility void* DOMDocumentImpl::setUserData(DOMNodeImpl* n, const XMLCh* key, void* data, DOMUserDataHandler* handler) { void* oldData = 0; unsigned int keyId=fUserDataTableKeys.addOrFind(key); if (!fUserDataTable) { // create the table on heap so that it can be cleaned in destructor fUserDataTable = new (fMemoryManager) RefHash2KeysTableOf ( 109 , true , fMemoryManager ); } else { DOMUserDataRecord* oldDataRecord = fUserDataTable->get((void*)n, keyId); if (oldDataRecord) { oldData = oldDataRecord->getKey(); fUserDataTable->removeKey((void*)n, keyId); } } if (data) { // clone the key first, and create the DOMUserDataRecord // create on the heap and adopted by the hashtable which will delete it upon removal. fUserDataTable->put((void*)n, keyId, new (fMemoryManager) DOMUserDataRecord(data, handler)); } else { RefHash2KeysTableOfEnumerator enumKeys(fUserDataTable, false, fMemoryManager); enumKeys.setPrimaryKey(n); if (!enumKeys.hasMoreElements()) n->hasUserData(false); } return oldData; } void* DOMDocumentImpl::getUserData(const DOMNodeImpl* n, const XMLCh* key) const { if (fUserDataTable) { unsigned int keyId=fUserDataTableKeys.getId(key); if(keyId!=0) { DOMUserDataRecord* dataRecord = fUserDataTable->get((void*)n, keyId); if (dataRecord) return dataRecord->getKey(); } } return 0; } void DOMDocumentImpl::callUserDataHandlers(const DOMNodeImpl* n, DOMUserDataHandler::DOMOperationType operation, const DOMNode* src, DOMNode* dst) const { if (fUserDataTable) { RefHash2KeysTableOfEnumerator userDataEnum(fUserDataTable, false, fMemoryManager); userDataEnum.setPrimaryKey(n); // Create a snapshot of the handlers to be called, as the "handle" callback could be invalidating the enumerator by calling // setUserData on the dst node ValueVectorOf< int > snapshot(3, fMemoryManager); while (userDataEnum.hasMoreElements()) { // get the key void* key; int key2; userDataEnum.nextElementKey(key,key2); snapshot.addElement(key2); } ValueVectorEnumerator< int > snapshotEnum(&snapshot); while(snapshotEnum.hasMoreElements()) { int key2=snapshotEnum.nextElement(); // get the DOMUserDataRecord DOMUserDataRecord* userDataRecord = fUserDataTable->get((void*)n,key2); // get the handler DOMUserDataHandler* handler = userDataRecord->getValue(); if (handler) { // get the data void* data = userDataRecord->getKey(); const XMLCh* userKey = fUserDataTableKeys.getValueForId(key2); handler->handle(operation, userKey, data, src, dst); } } // if the operation is NODE_DELETED, we in fact should remove the data from the table if (operation == DOMUserDataHandler::NODE_DELETED) fUserDataTable->removeKey((void*)n); } } void DOMDocumentImpl::transferUserData(DOMNodeImpl* n1, DOMNodeImpl* n2) { if (fUserDataTable) { fUserDataTable->transferElement((void*)n1, (void*)n2); n1->hasUserData(false); n2->hasUserData(true); } } DOMNode* DOMDocumentImpl::renameNode(DOMNode* n, const XMLCh* namespaceURI, const XMLCh* name) { if (n->getOwnerDocument() != this) throw DOMException(DOMException::WRONG_DOCUMENT_ERR, 0, getMemoryManager()); switch (n->getNodeType()) { case ELEMENT_NODE: return ((DOMElementImpl*)n)->rename(namespaceURI, name); case ATTRIBUTE_NODE: return ((DOMAttrImpl*)n)->rename(namespaceURI, name); default: break; } throw DOMException(DOMException::NOT_SUPPORTED_ERR, 0, getMemoryManager()); return 0; } void DOMDocumentImpl::release() { DOMDocument* doc = (DOMDocument*) this; fNode.callUserDataHandlers(DOMUserDataHandler::NODE_DELETED, 0, 0); // notify userdatahandler first, if we have some if (fUserDataTable) releaseDocNotifyUserData(this); // release the docType in case it was created from heap if (fDocType) { castToNodeImpl(fDocType)->isToBeReleased(true); fDocType->release(); } // delete the document memory pool delete doc; } void DOMDocumentImpl::releaseDocNotifyUserData(DOMNode* object) { DOMNode *child = object->getFirstChild(); while( child != 0) { DOMNamedNodeMap *attrlist=child->getAttributes(); if(attrlist!=0) for(XMLSize_t i=0;igetLength();++i) releaseDocNotifyUserData(attrlist->item(i)); releaseDocNotifyUserData(child); child = child->getNextSibling(); } castToNodeImpl(object)->callUserDataHandlers(DOMUserDataHandler::NODE_DELETED, 0, 0); } void DOMDocumentImpl::release(DOMNode* object, DOMMemoryManager::NodeObjectType type) { if (!fRecycleNodePtr) fRecycleNodePtr = new (fMemoryManager) RefArrayOf (15, fMemoryManager); if (!fRecycleNodePtr->operator[](type)) fRecycleNodePtr->operator[](type) = new (fMemoryManager) RefStackOf (15, false, fMemoryManager); fRecycleNodePtr->operator[](type)->push(object); } void DOMDocumentImpl::releaseBuffer(DOMBuffer* buffer) { if (!fRecycleBufferPtr) fRecycleBufferPtr = new (fMemoryManager) RefStackOf (15, false, fMemoryManager); fRecycleBufferPtr->push(buffer); } DOMBuffer* DOMDocumentImpl::popBuffer(XMLSize_t nMinSize) { if (!fRecycleBufferPtr || fRecycleBufferPtr->empty()) return 0; for(XMLSize_t index=fRecycleBufferPtr->size()-1;index>0;index--) if(fRecycleBufferPtr->elementAt(index)->getCapacity()>=nMinSize) return fRecycleBufferPtr->popAt(index); // if we didn't find a buffer big enough, get the last one return fRecycleBufferPtr->pop(); } void * DOMDocumentImpl::allocate(XMLSize_t amount, DOMMemoryManager::NodeObjectType type) { if (!fRecycleNodePtr) return allocate(amount); DOMNodePtr* ptr = fRecycleNodePtr->operator[](type); if (!ptr || ptr->empty()) return allocate(amount); return (void*) ptr->pop(); } bool DOMDocumentImpl::isSupported(const XMLCh *feature, const XMLCh *version) const { // check for '+DOMMemoryManager' if(feature && *feature=='+' && XMLString::equals(feature+1, XMLUni::fgXercescInterfaceDOMMemoryManager)) return true; if(feature && *feature) { if((*feature==chPlus && XMLString::equals(feature+1, XMLUni::fgXercescInterfaceDOMDocumentImpl)) || XMLString::equals(feature, XMLUni::fgXercescInterfaceDOMDocumentImpl)) return true; } return fNode.isSupported (feature, version); } void* DOMDocumentImpl::getFeature(const XMLCh* feature, const XMLCh* version) const { if(XMLString::equals(feature, XMLUni::fgXercescInterfaceDOMMemoryManager)) return (DOMMemoryManager*)this; if(XMLString::equals(feature, XMLUni::fgXercescInterfaceDOMDocumentImpl)) return (DOMDocumentImpl*)this; return fNode.getFeature(feature,version); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMErrorImpl.cpp0000644000175000017500000000477311030714661021177 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMErrorImpl.cpp 671894 2008-06-26 13:29:21Z borisk $ */ #include "DOMErrorImpl.hpp" #include #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // DOMErrorImpl: Constructors and Destructor // --------------------------------------------------------------------------- DOMErrorImpl::DOMErrorImpl(const ErrorSeverity severity) : fAdoptLocation(false) , fSeverity(severity) , fMessage(0) , fLocation(0) , fType(0) , fRelatedData(0) { } DOMErrorImpl::DOMErrorImpl(const ErrorSeverity severity, const XMLCh* const message, DOMLocator* const location) : fAdoptLocation(false) , fSeverity(severity) , fMessage(message) , fLocation(location) , fType(0) , fRelatedData(0) { } DOMErrorImpl::DOMErrorImpl(const ErrorSeverity severity, const XMLCh* type, const XMLCh* message, void* relatedData) : fAdoptLocation(false) , fSeverity(severity) , fMessage(message) , fLocation(0) , fType(type) , fRelatedData(relatedData) { } DOMErrorImpl::~DOMErrorImpl() { if (fAdoptLocation) delete fLocation; } // --------------------------------------------------------------------------- // DOMErrorImpl: Setter methods // --------------------------------------------------------------------------- void DOMErrorImpl::setLocation(DOMLocator* const location) { if (fAdoptLocation) delete fLocation; fLocation = location; } void DOMErrorImpl::setRelatedException(void*) const { throw DOMException(DOMException::NOT_SUPPORTED_ERR, 0); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMTextImpl.hpp0000644000175000017500000000713011041336370021024 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMTextImpl.hpp 678709 2008-07-22 10:56:56Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMTEXTIMPL_HPP) #define XERCESC_INCLUDE_GUARD_DOMTEXTIMPL_HPP // // This file is part of the internal implementation of the C++ XML DOM. // It should NOT be included or used directly by application programs. // // Applications should include the file for the entire // DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class // name is substituded for the *. // #include #include #include "DOMChildNode.hpp" #include "DOMNodeImpl.hpp" #include "DOMCharacterDataImpl.hpp" XERCES_CPP_NAMESPACE_BEGIN class CDOM_EXPORT DOMTextImpl: public DOMText { public: DOMNodeImpl fNode; DOMChildNode fChild; DOMCharacterDataImpl fCharacterData; public: DOMTextImpl(DOMDocument* ownerDoc, const XMLCh* data); DOMTextImpl(DOMDocument *ownerDoc, const XMLCh* data, XMLSize_t n); DOMTextImpl(const DOMTextImpl& other, bool deep=false); virtual ~DOMTextImpl(); virtual DOMText* splitText(XMLSize_t offset); // DOM Level 3 virtual bool getIsElementContentWhitespace() const; virtual const XMLCh* getWholeText() const; virtual DOMText* replaceWholeText(const XMLCh* content); // non-standard extension virtual bool isIgnorableWhitespace() const; public: // Declare the functions coming from DOMNode. DOMNODE_FUNCTIONS; public: // All of the functions coming from DOMCharacterData virtual const XMLCh* getData() const; virtual XMLSize_t getLength() const; virtual const XMLCh* substringData(XMLSize_t offset, XMLSize_t count) const; virtual void appendData(const XMLCh *arg); virtual void insertData(XMLSize_t offset, const XMLCh *arg); virtual void deleteData(XMLSize_t offset, XMLSize_t count); virtual void replaceData(XMLSize_t offset, XMLSize_t count, const XMLCh *arg); virtual void setData(const XMLCh *data); // Non-standard extension. // virtual void appendData(const XMLCh *arg, XMLSize_t n); protected: virtual void setIgnorableWhitespace(bool ignorable); friend class AbstractDOMParser; private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DOMTextImpl & operator = (const DOMTextImpl &); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMCharacterDataImpl.hpp0000644000175000017500000000654211041336370022574 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMCharacterDataImpl.hpp 678709 2008-07-22 10:56:56Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMCHARACTERDATAIMPL_HPP) #define XERCESC_INCLUDE_GUARD_DOMCHARACTERDATAIMPL_HPP // // This file is part of the internal implementation of the C++ XML DOM. // It should NOT be included or used directly by application programs. // // Applications should include the file for the entire // DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class // name is substituded for the *. // #include #include XERCES_CPP_NAMESPACE_BEGIN class DOMNode; class DOMDocument; class DOMDocumentImpl; class DOMBuffer; // Instances of DOMCharacterDataImpl appear as members of node types // that implement the DOMCharacterData interfaces. // Operations in those classes are delegated to this class. // class CDOM_EXPORT DOMCharacterDataImpl { public: DOMBuffer* fDataBuf; // for the buffer bid DOMDocumentImpl* fDoc; public: DOMCharacterDataImpl(DOMDocument *doc, const XMLCh *dat); DOMCharacterDataImpl(DOMDocument *doc, const XMLCh* data, XMLSize_t n); DOMCharacterDataImpl(const DOMCharacterDataImpl &other); ~DOMCharacterDataImpl(); const XMLCh * getNodeValue() const; void setNodeValue(const XMLCh * value); void appendData(const DOMNode *node, const XMLCh *data); void appendData(const DOMNode *node, const XMLCh *data, XMLSize_t n); void deleteData(const DOMNode *node, XMLSize_t offset, XMLSize_t count); const XMLCh* getData() const; XMLSize_t getLength() const; void insertData(const DOMNode *node, XMLSize_t offset, const XMLCh * data); void replaceData(const DOMNode *node, XMLSize_t offset, XMLSize_t count, const XMLCh * data); void setData(const DOMNode *node, const XMLCh * arg); void setNodeValue(const DOMNode *node, const XMLCh *value); const XMLCh* substringData(const DOMNode *node, XMLSize_t offset, XMLSize_t count) const; void releaseBuffer(); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DOMCharacterDataImpl & operator = (const DOMCharacterDataImpl &); }; #define GetDOMCharacterDataImplMemoryManager GET_DIRECT_MM(fDoc) XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMTextImpl.cpp0000644000175000017500000003542311041336370021025 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMTextImpl.cpp 678709 2008-07-22 10:56:56Z borisk $ */ #include #include #include #include #include #include #include #include "DOMDocumentImpl.hpp" #include "DOMStringPool.hpp" #include "DOMTextImpl.hpp" #include "DOMCharacterDataImpl.hpp" #include "DOMChildNode.hpp" #include "DOMRangeImpl.hpp" #include "DOMCasts.hpp" #include XERCES_CPP_NAMESPACE_BEGIN class DOMDocument; DOMTextImpl::DOMTextImpl(DOMDocument *ownerDoc, const XMLCh *dat) : fNode(ownerDoc), fCharacterData(ownerDoc, dat) { fNode.setIsLeafNode(true); } DOMTextImpl:: DOMTextImpl(DOMDocument *ownerDoc, const XMLCh* dat, XMLSize_t n) : fNode(ownerDoc), fCharacterData(ownerDoc, dat, n) { fNode.setIsLeafNode(true); } DOMTextImpl::DOMTextImpl(const DOMTextImpl &other, bool) : DOMText(other) , fNode(other.fNode) , fCharacterData(other.fCharacterData) { fNode.setIsLeafNode(true); } DOMTextImpl::~DOMTextImpl() { } DOMNode *DOMTextImpl::cloneNode(bool deep) const { DOMNode* newNode = new (getOwnerDocument(), DOMMemoryManager::TEXT_OBJECT) DOMTextImpl(*this, deep); fNode.callUserDataHandlers(DOMUserDataHandler::NODE_CLONED, this, newNode); return newNode; } const XMLCh * DOMTextImpl::getNodeName() const { static const XMLCh gtext[] = {chPound, chLatin_t, chLatin_e, chLatin_x, chLatin_t, chNull}; return gtext; } DOMNode::NodeType DOMTextImpl::getNodeType() const { return DOMNode::TEXT_NODE; } DOMText *DOMTextImpl::splitText(XMLSize_t offset) { if (fNode.isReadOnly()) { throw DOMException( DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMNodeMemoryManager); } XMLSize_t len = fCharacterData.fDataBuf->getLen(); if (offset > len) throw DOMException(DOMException::INDEX_SIZE_ERR, 0, GetDOMNodeMemoryManager); DOMDocumentImpl *doc = (DOMDocumentImpl *)getOwnerDocument(); DOMText *newText = doc->createTextNode( this->substringData(offset, len - offset)); DOMNode *parent = getParentNode(); if (parent != 0) parent->insertBefore(newText, getNextSibling()); fCharacterData.fDataBuf->chop(offset); if (doc != 0) { Ranges* ranges = doc->getRanges(); if (ranges != 0) { XMLSize_t sz = ranges->size(); if (sz != 0) { for (XMLSize_t i =0; ielementAt(i)->updateSplitInfo( this, newText, offset); } } } } return newText; } bool DOMTextImpl::isIgnorableWhitespace() const { return fNode.ignorableWhitespace(); } void DOMTextImpl::setIgnorableWhitespace(bool ignorable) { fNode.ignorableWhitespace(ignorable); } bool DOMTextImpl::getIsElementContentWhitespace() const { return isIgnorableWhitespace(); } const XMLCh* DOMTextImpl::getWholeText() const { DOMDocument *doc = getOwnerDocument(); DOMTreeWalker* pWalker=doc->createTreeWalker(doc->getDocumentElement(), DOMNodeFilter::SHOW_ALL, NULL, true); pWalker->setCurrentNode((DOMNode*)this); // Logically-adjacent text nodes are Text or CDATASection nodes that can be visited sequentially in document order or in // reversed document order without entering, exiting, or passing over Element, Comment, or ProcessingInstruction nodes. DOMNode* prevNode; while((prevNode=pWalker->previousNode())!=NULL) { if(prevNode->getNodeType()==ELEMENT_NODE || prevNode->getNodeType()==COMMENT_NODE || prevNode->getNodeType()==PROCESSING_INSTRUCTION_NODE) break; } XMLBuffer buff(1023, GetDOMNodeMemoryManager); DOMNode* nextNode; while((nextNode=pWalker->nextNode())!=NULL) { if(nextNode->getNodeType()==ELEMENT_NODE || nextNode->getNodeType()==COMMENT_NODE || nextNode->getNodeType()==PROCESSING_INSTRUCTION_NODE) break; if(nextNode->getNodeType()==TEXT_NODE || nextNode->getNodeType()==CDATA_SECTION_NODE) buff.append(nextNode->getNodeValue()); } pWalker->release(); XMLCh* wholeString = (XMLCh*) (GetDOMNodeMemoryManager->allocate((buff.getLen()+1)*sizeof(XMLCh))); XMLString::copyString(wholeString, buff.getRawBuffer()); return wholeString; } DOMText* DOMTextImpl::replaceWholeText(const XMLCh* newText) { DOMDocument *doc = getOwnerDocument(); DOMTreeWalker* pWalker=doc->createTreeWalker(doc->getDocumentElement(), DOMNodeFilter::SHOW_ALL, NULL, true); pWalker->setCurrentNode((DOMNode*)this); // Logically-adjacent text nodes are Text or CDATASection nodes that can be visited sequentially in document order or in // reversed document order without entering, exiting, or passing over Element, Comment, or ProcessingInstruction nodes. DOMNode* pFirstTextNode=this; DOMNode* prevNode; while((prevNode=pWalker->previousNode())!=NULL) { if(prevNode->getNodeType()==ELEMENT_NODE || prevNode->getNodeType()==COMMENT_NODE || prevNode->getNodeType()==PROCESSING_INSTRUCTION_NODE) break; pFirstTextNode=prevNode; } // before doing any change we need to check if we are going to remove an entity reference that doesn't contain just text DOMNode* pCurrentNode=pWalker->getCurrentNode(); DOMNode* nextNode; while((nextNode=pWalker->nextNode())!=NULL) { if(nextNode->getNodeType()==ELEMENT_NODE || nextNode->getNodeType()==COMMENT_NODE || nextNode->getNodeType()==PROCESSING_INSTRUCTION_NODE) break; if(nextNode->getNodeType()==ENTITY_REFERENCE_NODE) { DOMTreeWalker* pInnerWalker=doc->createTreeWalker(nextNode, DOMNodeFilter::SHOW_ALL, NULL, true); while(pInnerWalker->nextNode()) { short nodeType=pInnerWalker->getCurrentNode()->getNodeType(); if(nodeType!=ENTITY_REFERENCE_NODE && nodeType!=TEXT_NODE && nodeType!=CDATA_SECTION_NODE) throw DOMException(DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMNodeMemoryManager); } pInnerWalker->release(); } } DOMText* retVal=NULL; // if the first node in the chain is a text node, replace its content, otherwise create a new node if(newText && *newText) { if(!castToNodeImpl(pFirstTextNode)->isReadOnly() && (pFirstTextNode->getNodeType()==TEXT_NODE || pFirstTextNode->getNodeType()==CDATA_SECTION_NODE)) { pFirstTextNode->setNodeValue(newText); retVal=(DOMText*)pFirstTextNode; } else { if(getNodeType()==TEXT_NODE) retVal=doc->createTextNode(newText); else retVal=doc->createCDATASection(newText); pFirstTextNode->getParentNode()->insertBefore(retVal, pFirstTextNode); } } // now delete all the following text nodes pWalker->setCurrentNode(pCurrentNode); while((nextNode=pWalker->nextNode())!=NULL) { if(nextNode->getNodeType()==ELEMENT_NODE || nextNode->getNodeType()==COMMENT_NODE || nextNode->getNodeType()==PROCESSING_INSTRUCTION_NODE) break; if(nextNode!=retVal) { // keep the tree walker valid pWalker->previousNode(); nextNode->getParentNode()->removeChild(nextNode); nextNode->release(); } } pWalker->release(); return retVal; } void DOMTextImpl::release() { if (fNode.isOwned() && !fNode.isToBeReleased()) throw DOMException(DOMException::INVALID_ACCESS_ERR,0, GetDOMNodeMemoryManager); DOMDocumentImpl* doc = (DOMDocumentImpl*) getOwnerDocument(); if (doc) { fNode.callUserDataHandlers(DOMUserDataHandler::NODE_DELETED, 0, 0); fCharacterData.releaseBuffer(); doc->release(this, DOMMemoryManager::TEXT_OBJECT); } else { // shouldn't reach here throw DOMException(DOMException::INVALID_ACCESS_ERR,0, GetDOMNodeMemoryManager); } } // // Delegation functions // DOMNode* DOMTextImpl::appendChild(DOMNode *newChild) {return fNode.appendChild (newChild); } DOMNamedNodeMap* DOMTextImpl::getAttributes() const {return fNode.getAttributes (); } DOMNodeList* DOMTextImpl::getChildNodes() const {return fNode.getChildNodes (); } DOMNode* DOMTextImpl::getFirstChild() const {return fNode.getFirstChild (); } DOMNode* DOMTextImpl::getLastChild() const {return fNode.getLastChild (); } const XMLCh* DOMTextImpl::getLocalName() const {return fNode.getLocalName (); } const XMLCh* DOMTextImpl::getNamespaceURI() const {return fNode.getNamespaceURI (); } DOMNode* DOMTextImpl::getNextSibling() const {return fChild.getNextSibling (); } const XMLCh* DOMTextImpl::getNodeValue() const {return fCharacterData.getNodeValue (); } DOMDocument* DOMTextImpl::getOwnerDocument() const {return fNode.getOwnerDocument (); } const XMLCh* DOMTextImpl::getPrefix() const {return fNode.getPrefix (); } DOMNode* DOMTextImpl::getParentNode() const {return fChild.getParentNode (this); } DOMNode* DOMTextImpl::getPreviousSibling() const {return fChild.getPreviousSibling (this); } bool DOMTextImpl::hasChildNodes() const {return fNode.hasChildNodes (); } DOMNode* DOMTextImpl::insertBefore(DOMNode *newChild, DOMNode *refChild) {return fNode.insertBefore (newChild, refChild); } void DOMTextImpl::normalize() {fNode.normalize (); } DOMNode* DOMTextImpl::removeChild(DOMNode *oldChild) {return fNode.removeChild (oldChild); } DOMNode* DOMTextImpl::replaceChild(DOMNode *newChild, DOMNode *oldChild) {return fNode.replaceChild (newChild, oldChild); } bool DOMTextImpl::isSupported(const XMLCh *feature, const XMLCh *version) const {return fNode.isSupported (feature, version); } void DOMTextImpl::setPrefix(const XMLCh *prefix) {fNode.setPrefix(prefix); } bool DOMTextImpl::hasAttributes() const {return fNode.hasAttributes(); } bool DOMTextImpl::isSameNode(const DOMNode* other) const {return fNode.isSameNode(other); } bool DOMTextImpl::isEqualNode(const DOMNode* arg) const {return fNode.isEqualNode(arg); } void* DOMTextImpl::setUserData(const XMLCh* key, void* data, DOMUserDataHandler* handler) {return fNode.setUserData(key, data, handler); } void* DOMTextImpl::getUserData(const XMLCh* key) const {return fNode.getUserData(key); } const XMLCh* DOMTextImpl::getBaseURI() const {return fNode.getBaseURI(); } short DOMTextImpl::compareDocumentPosition(const DOMNode* other) const {return fNode.compareDocumentPosition(other); } const XMLCh* DOMTextImpl::getTextContent() const {return fNode.getTextContent(); } void DOMTextImpl::setTextContent(const XMLCh* textContent){fNode.setTextContent(textContent); } const XMLCh* DOMTextImpl::lookupPrefix(const XMLCh* namespaceURI) const {return fNode.lookupPrefix(namespaceURI); } bool DOMTextImpl::isDefaultNamespace(const XMLCh* namespaceURI) const {return fNode.isDefaultNamespace(namespaceURI); } const XMLCh* DOMTextImpl::lookupNamespaceURI(const XMLCh* prefix) const {return fNode.lookupNamespaceURI(prefix); } void* DOMTextImpl::getFeature(const XMLCh* feature, const XMLCh* version) const {return fNode.getFeature(feature, version); } // // Delegation of CharacerData functions. // const XMLCh* DOMTextImpl::getData() const {return fCharacterData.getData();} XMLSize_t DOMTextImpl::getLength() const {return fCharacterData.getLength();} const XMLCh* DOMTextImpl::substringData(XMLSize_t offset, XMLSize_t count) const {return fCharacterData.substringData(this, offset, count);} void DOMTextImpl::appendData(const XMLCh *arg) {fCharacterData.appendData(this, arg);} void DOMTextImpl::insertData(XMLSize_t offset, const XMLCh *arg) {fCharacterData.insertData(this, offset, arg);} void DOMTextImpl::deleteData(XMLSize_t offset, XMLSize_t count) {fCharacterData.deleteData(this, offset, count);} void DOMTextImpl::replaceData(XMLSize_t offset, XMLSize_t count, const XMLCh *arg) {fCharacterData.replaceData(this, offset, count, arg);} void DOMTextImpl::setData(const XMLCh *data) {fCharacterData.setData(this, data);} void DOMTextImpl::setNodeValue(const XMLCh *nodeValue) {fCharacterData.setNodeValue (this, nodeValue); } void DOMTextImpl::appendData(const XMLCh *arg, XMLSize_t n) {fCharacterData.appendData(this, arg, n);} XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMEntityImpl.cpp0000644000175000017500000002446311041060645021356 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMEntityImpl.cpp 678381 2008-07-21 10:15:01Z borisk $ */ #include #include #include #include "DOMEntityImpl.hpp" #include "DOMDocumentImpl.hpp" XERCES_CPP_NAMESPACE_BEGIN DOMEntityImpl::DOMEntityImpl(DOMDocument *ownerDoc, const XMLCh *eName) : fNode(ownerDoc), fParent(ownerDoc), fPublicId(0), fSystemId(0), fNotationName(0), fRefEntity(0), fInputEncoding(0), fXmlEncoding(0), fXmlVersion(0), fBaseURI(0), fEntityRefNodeCloned(false) { fName = ((DOMDocumentImpl *)ownerDoc)->getPooledString(eName); fNode.setReadOnly(true, true); } DOMEntityImpl::DOMEntityImpl(const DOMEntityImpl &other, bool deep) : DOMEntity(other), fNode(other.fNode), fParent(other.fParent), fName(other.fName), fPublicId(other.fPublicId), fSystemId(other.fSystemId), fNotationName(other.fNotationName), fRefEntity(other.fRefEntity), fInputEncoding(other.fInputEncoding), fXmlEncoding(other.fXmlEncoding), fXmlVersion(other.fXmlVersion), fBaseURI(other.fBaseURI), fEntityRefNodeCloned(false) { if (deep) fParent.cloneChildren(&other); fNode.setReadOnly(true, true); } DOMEntityImpl::~DOMEntityImpl() { } DOMNode *DOMEntityImpl::cloneNode(bool deep) const { DOMNode* newNode = new (fParent.fOwnerDocument, DOMMemoryManager::ENTITY_OBJECT) DOMEntityImpl(*this, deep); fNode.callUserDataHandlers(DOMUserDataHandler::NODE_CLONED, this, newNode); return newNode; } const XMLCh * DOMEntityImpl::getNodeName() const { return fName; } DOMNode::NodeType DOMEntityImpl::getNodeType() const { return DOMNode::ENTITY_NODE; } const XMLCh * DOMEntityImpl::getNotationName() const { return fNotationName; } const XMLCh * DOMEntityImpl::getPublicId() const { return fPublicId; } const XMLCh * DOMEntityImpl::getSystemId() const { return fSystemId; } const XMLCh* DOMEntityImpl::getBaseURI() const { return fBaseURI; } void DOMEntityImpl::setNodeValue(const XMLCh *arg) { fNode.setNodeValue(arg); } void DOMEntityImpl::setNotationName(const XMLCh *arg) { DOMDocumentImpl *doc = (DOMDocumentImpl *)fParent.fOwnerDocument; fNotationName = doc->cloneString(arg); } void DOMEntityImpl::setPublicId(const XMLCh *arg) { DOMDocumentImpl *doc = (DOMDocumentImpl *)fParent.fOwnerDocument; fPublicId = doc->cloneString(arg); } void DOMEntityImpl::setSystemId(const XMLCh *arg) { DOMDocumentImpl *doc = (DOMDocumentImpl *)fParent.fOwnerDocument; fSystemId = doc->cloneString(arg); } void DOMEntityImpl::setBaseURI(const XMLCh* baseURI) { if (baseURI && *baseURI) { XMLCh* temp = (XMLCh*) ((DOMDocumentImpl *)fParent.fOwnerDocument)->allocate((XMLString::stringLen(baseURI) + 9)*sizeof(XMLCh)); XMLString::fixURI(baseURI, temp); fBaseURI = temp; } else fBaseURI = 0; } void DOMEntityImpl::setEntityRef(DOMEntityReference* other) { fRefEntity = other; } DOMEntityReference* DOMEntityImpl::getEntityRef() const { return fRefEntity; } void DOMEntityImpl::cloneEntityRefTree() const { if (fEntityRefNodeCloned) return; // cast off const. This method is const because it is // called from a bunch of logically const methods, like // getFirstChild(). DOMEntityImpl *ncThis = (DOMEntityImpl *)this; //lazily clone the entityRef tree to this entity if (fParent.fFirstChild != 0) return; if (!fRefEntity) return; ncThis->fEntityRefNodeCloned = true; ncThis->fNode.setReadOnly(false, true); ncThis->fParent.cloneChildren(fRefEntity); ncThis->fNode.setReadOnly(true, true); } DOMNode * DOMEntityImpl::getFirstChild() const { cloneEntityRefTree(); return fParent.fFirstChild; } DOMNode * DOMEntityImpl::getLastChild() const { cloneEntityRefTree(); return fParent.getLastChild(); } DOMNodeList* DOMEntityImpl::getChildNodes() const { cloneEntityRefTree(); return this->fParent.getChildNodes(); } bool DOMEntityImpl::hasChildNodes() const { cloneEntityRefTree(); return fParent.fFirstChild!=0; } void DOMEntityImpl::release() { if (fNode.isOwned() && !fNode.isToBeReleased()) throw DOMException(DOMException::INVALID_ACCESS_ERR,0, GetDOMNodeMemoryManager); DOMDocumentImpl* doc = (DOMDocumentImpl*) fParent.fOwnerDocument; if (doc) { fNode.callUserDataHandlers(DOMUserDataHandler::NODE_DELETED, 0, 0); fParent.release(); doc->release(this, DOMMemoryManager::ENTITY_OBJECT); } else { // shouldn't reach here throw DOMException(DOMException::INVALID_ACCESS_ERR,0, GetDOMNodeMemoryManager); } } // // Functions inherited from Node // DOMNode* DOMEntityImpl::appendChild(DOMNode *newChild) {cloneEntityRefTree(); return fParent.appendChild (newChild); } DOMNamedNodeMap* DOMEntityImpl::getAttributes() const {return fNode.getAttributes (); } const XMLCh* DOMEntityImpl::getLocalName() const {return fNode.getLocalName (); } const XMLCh* DOMEntityImpl::getNamespaceURI() const {return fNode.getNamespaceURI (); } DOMNode* DOMEntityImpl::getNextSibling() const {return fNode.getNextSibling (); } const XMLCh* DOMEntityImpl::getNodeValue() const {return fNode.getNodeValue (); } DOMDocument* DOMEntityImpl::getOwnerDocument() const {return fParent.fOwnerDocument; } const XMLCh* DOMEntityImpl::getPrefix() const {return fNode.getPrefix (); } DOMNode* DOMEntityImpl::getParentNode() const {return fNode.getParentNode (); } DOMNode* DOMEntityImpl::getPreviousSibling() const {return fNode.getPreviousSibling (); } DOMNode* DOMEntityImpl::insertBefore(DOMNode *newChild, DOMNode *refChild) {cloneEntityRefTree(); return fParent.insertBefore (newChild, refChild); } void DOMEntityImpl::normalize() {cloneEntityRefTree(); fParent.normalize (); } DOMNode* DOMEntityImpl::removeChild(DOMNode *oldChild) {cloneEntityRefTree(); return fParent.removeChild (oldChild); } DOMNode* DOMEntityImpl::replaceChild(DOMNode *newChild, DOMNode *oldChild) {cloneEntityRefTree(); return fParent.replaceChild (newChild, oldChild); } bool DOMEntityImpl::isSupported(const XMLCh *feature, const XMLCh *version) const {return fNode.isSupported (feature, version); } void DOMEntityImpl::setPrefix(const XMLCh *prefix) {fNode.setPrefix(prefix); } bool DOMEntityImpl::hasAttributes() const {return fNode.hasAttributes(); } bool DOMEntityImpl::isSameNode(const DOMNode* other) const {return fNode.isSameNode(other); } bool DOMEntityImpl::isEqualNode(const DOMNode* arg) const {cloneEntityRefTree(); return fParent.isEqualNode(arg); } void* DOMEntityImpl::setUserData(const XMLCh* key, void* data, DOMUserDataHandler* handler) {return fNode.setUserData(key, data, handler); } void* DOMEntityImpl::getUserData(const XMLCh* key) const {return fNode.getUserData(key); } short DOMEntityImpl::compareDocumentPosition(const DOMNode* other) const {return fNode.compareDocumentPosition(other); } const XMLCh* DOMEntityImpl::getTextContent() const {return fNode.getTextContent(); } void DOMEntityImpl::setTextContent(const XMLCh* textContent){fNode.setTextContent(textContent); } const XMLCh* DOMEntityImpl::lookupPrefix(const XMLCh* namespaceURI) const {return fNode.lookupPrefix(namespaceURI); } bool DOMEntityImpl::isDefaultNamespace(const XMLCh* namespaceURI) const {return fNode.isDefaultNamespace(namespaceURI); } const XMLCh* DOMEntityImpl::lookupNamespaceURI(const XMLCh* prefix) const {return fNode.lookupNamespaceURI(prefix); } void* DOMEntityImpl::getFeature(const XMLCh* feature, const XMLCh* version) const {return fNode.getFeature(feature, version); } //Introduced in DOM Level 3 const XMLCh* DOMEntityImpl::getInputEncoding() const { return fInputEncoding; } void DOMEntityImpl::setInputEncoding(const XMLCh* actualEncoding){ DOMDocumentImpl *doc = (DOMDocumentImpl *)fParent.fOwnerDocument; fInputEncoding = doc->cloneString(actualEncoding); } const XMLCh* DOMEntityImpl::getXmlEncoding() const { return fXmlEncoding; } void DOMEntityImpl::setXmlEncoding(const XMLCh* encoding){ DOMDocumentImpl *doc = (DOMDocumentImpl *)fParent.fOwnerDocument; fXmlEncoding = doc->cloneString(encoding); } const XMLCh* DOMEntityImpl::getXmlVersion() const { return fXmlVersion; } void DOMEntityImpl::setXmlVersion(const XMLCh* version){ DOMDocumentImpl *doc = (DOMDocumentImpl *)fParent.fOwnerDocument; fXmlVersion = doc->cloneString(version); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMEntityReferenceImpl.hpp0000644000175000017500000000504610772402041023176 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMEntityReferenceImpl.hpp 641193 2008-03-26 08:06:57Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMENTITYREFERENCEIMPL_HPP) #define XERCESC_INCLUDE_GUARD_DOMENTITYREFERENCEIMPL_HPP // // This file is part of the internal implementation of the C++ XML DOM. // It should NOT be included or used directly by application programs. // // Applications should include the file for the entire // DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class // name is substituded for the *. // #include #include #include "DOMParentNode.hpp" #include "DOMChildNode.hpp" #include "DOMNodeImpl.hpp" XERCES_CPP_NAMESPACE_BEGIN class CDOM_EXPORT DOMEntityReferenceImpl: public DOMEntityReference { protected: DOMNodeImpl fNode; DOMParentNode fParent; DOMChildNode fChild; const XMLCh *fName; const XMLCh *fBaseURI; friend class XercesDOMParser; public: DOMEntityReferenceImpl(DOMDocument *ownerDoc, const XMLCh *entityName); DOMEntityReferenceImpl(DOMDocument *ownerDoc, const XMLCh *entityName, bool cloneChild); DOMEntityReferenceImpl(const DOMEntityReferenceImpl &other, bool deep=false); virtual ~DOMEntityReferenceImpl(); public: // Declare all of the functions from DOMNode. DOMNODE_FUNCTIONS; public: virtual void setReadOnly(bool readOnly,bool deep); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DOMEntityReferenceImpl & operator = (const DOMEntityReferenceImpl &); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMAttrImpl.hpp0000644000175000017500000001035111041336370021011 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMAttrImpl.hpp 678709 2008-07-22 10:56:56Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMATTRIMPL_HPP) #define XERCESC_INCLUDE_GUARD_DOMATTRIMPL_HPP // // This file is part of the internal implementation of the C++ XML DOM. // It should NOT be included or used directly by application programs. // // Applications should include the file for the entire // DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class // name is substituded for the *. // #include #include "DOMParentNode.hpp" #include "DOMNodeImpl.hpp" #include "DOMDocumentImpl.hpp" #include #include #include "DOMNodeIDMap.hpp" XERCES_CPP_NAMESPACE_BEGIN class DOMElementImpl; class DOMTypeInfoImpl; class CDOM_EXPORT DOMAttrImpl: public DOMAttr { public: DOMNodeImpl fNode; DOMParentNode fParent; const XMLCh *fName; protected: const DOMTypeInfoImpl *fSchemaType; public: DOMAttrImpl(DOMDocument *ownerDocument, const XMLCh *aName); DOMAttrImpl(const DOMAttrImpl &other, bool deep=false); virtual ~DOMAttrImpl(); public: // Add all functions that are pure virtual in DOMNODE DOMNODE_FUNCTIONS; public: virtual const XMLCh * getName() const; virtual bool getSpecified() const; virtual const XMLCh * getValue() const; virtual void setSpecified(bool arg); virtual void setValue(const XMLCh * value); virtual DOMElement * getOwnerElement() const; virtual bool isId() const; virtual const DOMTypeInfo* getSchemaTypeInfo() const; void setOwnerElement(DOMElement *ownerElem); //internal use only // helper function for DOM Level 3 renameNode virtual DOMNode* rename(const XMLCh* namespaceURI, const XMLCh* name); //helper function for DOM Level 3 TypeInfo virtual void setSchemaTypeInfo(const DOMTypeInfoImpl* typeInfo); // helper method that sets this attr to an idnode and places it into the document map virtual void addAttrToIDNodeMap(); // helper to remove this attr from from the id map if it is in there virtual void removeAttrFromIDNodeMap(); public: // Set attribute value fast. Assumptions: // // - node is not read-only // - no ID management is performed // - this attribute does not have a value // virtual void setValueFast (const XMLCh * value); protected: void getTextValue(DOMNode* node, XMLBuffer& buf) const; private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DOMAttrImpl& operator=(const DOMAttrImpl&); }; inline void DOMAttrImpl::removeAttrFromIDNodeMap() { if (fNode.isIdAttr()) { ((DOMDocumentImpl *)fParent.fOwnerDocument)->getNodeIDMap()->remove(this); fNode.isIdAttr(false); } } inline void DOMAttrImpl::addAttrToIDNodeMap() { if (fNode.isIdAttr()) return; fNode.isIdAttr(true); // REVIST For now, we don't worry about what happens if the new // name conflicts as per setValue DOMDocumentImpl *doc = (DOMDocumentImpl *)(fParent.fOwnerDocument); if (doc->fNodeIDMap == 0) doc->fNodeIDMap = new (doc) DOMNodeIDMap(500, doc); doc->getNodeIDMap()->add(this); } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMEntityImpl.hpp0000644000175000017500000000712410772402041021356 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMEntityImpl.hpp 641193 2008-03-26 08:06:57Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMENTITYIMPL_HPP) #define XERCESC_INCLUDE_GUARD_DOMENTITYIMPL_HPP // // This file is part of the internal implementation of the C++ XML DOM. // It should NOT be included or used directly by application programs. // // Applications should include the file for the entire // DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class // name is substituded for the *. // #include #include "DOMNodeImpl.hpp" #include "DOMParentNode.hpp" #include XERCES_CPP_NAMESPACE_BEGIN class DOMEntityReference; class CDOM_EXPORT DOMEntityImpl: public DOMEntity { protected: DOMNodeImpl fNode; DOMParentNode fParent; const XMLCh * fName; const XMLCh * fPublicId; const XMLCh * fSystemId; const XMLCh * fNotationName; DOMEntityReference* fRefEntity; // New data introduced in DOM Level 3 const XMLCh* fInputEncoding; const XMLCh* fXmlEncoding; const XMLCh* fXmlVersion; const XMLCh* fBaseURI; bool fEntityRefNodeCloned; // helper function void cloneEntityRefTree() const; friend class XercesDOMParser; public: DOMEntityImpl(DOMDocument *doc, const XMLCh *eName); DOMEntityImpl(const DOMEntityImpl &other, bool deep=false); virtual ~DOMEntityImpl(); public: // Declare all of the functions from DOMNode. DOMNODE_FUNCTIONS; public: virtual const XMLCh * getPublicId() const; virtual const XMLCh * getSystemId() const; virtual const XMLCh * getNotationName() const; virtual void setNotationName(const XMLCh *arg); virtual void setPublicId(const XMLCh *arg); virtual void setSystemId(const XMLCh *arg); //DOM Level 2 additions. Non standard functions virtual void setEntityRef(DOMEntityReference *); virtual DOMEntityReference* getEntityRef() const; //Introduced in DOM Level 3 virtual const XMLCh* getInputEncoding() const; virtual const XMLCh* getXmlEncoding() const; virtual const XMLCh* getXmlVersion() const; virtual void setBaseURI(const XMLCh *arg); void setInputEncoding(const XMLCh* actualEncoding); void setXmlEncoding(const XMLCh* encoding); void setXmlVersion(const XMLCh* version); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DOMEntityImpl & operator = (const DOMEntityImpl &); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMCDATASectionImpl.hpp0000644000175000017500000000673711041336370022255 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMCDATASectionImpl.hpp 678709 2008-07-22 10:56:56Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMCDATASECTIONIMPL_HPP) #define XERCESC_INCLUDE_GUARD_DOMCDATASECTIONIMPL_HPP // // This file is part of the internal implementation of the C++ XML DOM. // It should NOT be included or used directly by application programs. // // Applications should include the file for the entire // DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class // name is substituded for the *. // #include #include #include "DOMNodeImpl.hpp" #include "DOMChildNode.hpp" #include "DOMParentNode.hpp" #include "DOMCharacterDataImpl.hpp" XERCES_CPP_NAMESPACE_BEGIN class CDOM_EXPORT DOMCDATASectionImpl: public DOMCDATASection { protected: DOMNodeImpl fNode; DOMChildNode fChild; DOMCharacterDataImpl fCharacterData; public: DOMCDATASectionImpl(DOMDocument *ownerDoc, const XMLCh* data); DOMCDATASectionImpl(DOMDocument *ownerDoc, const XMLCh* data, XMLSize_t n); DOMCDATASectionImpl(const DOMCDATASectionImpl &other, bool deep = false); virtual ~DOMCDATASectionImpl(); // Functions inherited from TEXT virtual DOMText* splitText(XMLSize_t offset); // DOM Level 3 virtual bool getIsElementContentWhitespace() const; virtual const XMLCh* getWholeText() const; virtual DOMText* replaceWholeText(const XMLCh* content); // non-standard extension virtual bool isIgnorableWhitespace() const; public: // Declare all of the functions from DOMNode. DOMNODE_FUNCTIONS; public: // Functions introduced by DOMCharacterData virtual const XMLCh* getData() const; virtual XMLSize_t getLength() const; virtual const XMLCh* substringData(XMLSize_t offset, XMLSize_t count) const; virtual void appendData(const XMLCh *arg); virtual void insertData(XMLSize_t offset, const XMLCh *arg); virtual void deleteData(XMLSize_t offset, XMLSize_t count); virtual void replaceData(XMLSize_t offset, XMLSize_t count, const XMLCh *arg); virtual void setData(const XMLCh *data); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DOMCDATASectionImpl & operator = (const DOMCDATASectionImpl &); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMXPathExpressionImpl.cpp0000644000175000017500000002001011042070403023160 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "DOMXPathExpressionImpl.hpp" #include "DOMXPathResultImpl.hpp" #include #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN class WrapperForXPathNSResolver : public XercesNamespaceResolver { public: WrapperForXPathNSResolver(XMLStringPool* pool, const DOMXPathNSResolver *resolver, MemoryManager* const manager) : fStringPool(pool), fResolver(resolver), fMemoryManager(manager) { } virtual unsigned int getNamespaceForPrefix(const XMLCh* const prefix) const { if(fResolver==NULL) throw DOMException(DOMException::NAMESPACE_ERR, 0, fMemoryManager); const XMLCh* nsUri=fResolver->lookupNamespaceURI(prefix); if(nsUri==NULL) throw DOMException(DOMException::NAMESPACE_ERR, 0, fMemoryManager); return fStringPool->addOrFind(nsUri); } protected: XMLStringPool* fStringPool; const DOMXPathNSResolver * fResolver; MemoryManager* const fMemoryManager; }; typedef JanitorMemFunCall CleanupType; DOMXPathExpressionImpl::DOMXPathExpressionImpl(const XMLCh *expression, const DOMXPathNSResolver *resolver, MemoryManager* const manager) : fStringPool(NULL), fParsedExpression(NULL), fExpression(NULL), fMoveToRoot(false), fMemoryManager(manager) { if(expression==NULL || *expression==0) throw DOMXPathException(DOMXPathException::INVALID_EXPRESSION_ERR, 0, fMemoryManager); CleanupType cleanup(this, &DOMXPathExpressionImpl::cleanUp); fStringPool = new (fMemoryManager) XMLStringPool(109, fMemoryManager); // XercesPath will complain if the expression starts with '/', add a "." in front of it and start from the document root if(*expression==chForwardSlash) { fExpression=(XMLCh*)fMemoryManager->allocate((XMLString::stringLen(expression)+2)*sizeof(XMLCh)); *fExpression = chPeriod; *(fExpression+1) = chNull; XMLString::catString(fExpression, expression); fMoveToRoot=true; } else fExpression=XMLString::replicate(expression); try { WrapperForXPathNSResolver wrappedResolver(fStringPool, resolver, fMemoryManager); fParsedExpression = new (fMemoryManager) XercesXPath(fExpression, fStringPool, &wrappedResolver, 0, true, fMemoryManager); } catch(const XPathException& ) { throw DOMXPathException(DOMXPathException::INVALID_EXPRESSION_ERR, 0, fMemoryManager); } catch(const OutOfMemoryException&) { cleanup.release(); throw; } cleanup.release(); } DOMXPathExpressionImpl::~DOMXPathExpressionImpl() { cleanUp(); } void DOMXPathExpressionImpl::cleanUp() { XMLString::release(&fExpression, fMemoryManager); delete fParsedExpression; delete fStringPool; } DOMXPathResult* DOMXPathExpressionImpl::evaluate(const DOMNode *contextNode, DOMXPathResult::ResultType type, DOMXPathResult* result) const { if(type!=DOMXPathResult::FIRST_ORDERED_NODE_TYPE && type!=DOMXPathResult::ORDERED_NODE_SNAPSHOT_TYPE && type!=DOMXPathResult::ANY_UNORDERED_NODE_TYPE && type!=DOMXPathResult::UNORDERED_NODE_SNAPSHOT_TYPE) throw DOMXPathException(DOMXPathException::TYPE_ERR, 0, fMemoryManager); if(contextNode==NULL || contextNode->getNodeType()!=DOMNode::ELEMENT_NODE) throw DOMException(DOMException::NOT_SUPPORTED_ERR, 0, fMemoryManager); JanitorMemFunCall r_cleanup ( 0, &DOMXPathResultImpl::release); DOMXPathResultImpl* r=(DOMXPathResultImpl*)result; if(r==NULL) { r=new (fMemoryManager) DOMXPathResultImpl(type, fMemoryManager); r_cleanup.reset (r); } else r->reset(type); XPathMatcher matcher(fParsedExpression, fMemoryManager); matcher.startDocumentFragment(); if(fMoveToRoot) { contextNode=contextNode->getOwnerDocument(); if(contextNode==NULL) throw DOMException(DOMException::NOT_SUPPORTED_ERR, 0, fMemoryManager); QName qName(contextNode->getNodeName(), 0, fMemoryManager); SchemaElementDecl elemDecl(&qName); RefVectorOf attrList(0, true, fMemoryManager); matcher.startElement(elemDecl, 0, XMLUni::fgZeroLenString, attrList, 0); DOMNode* child=contextNode->getFirstChild(); while(child) { if(child->getNodeType()==DOMNode::ELEMENT_NODE) testNode(&matcher, r, (DOMElement*)child); child=child->getNextSibling(); } matcher.endElement(elemDecl, XMLUni::fgZeroLenString); } else testNode(&matcher, r, (DOMElement*)contextNode); r_cleanup.release (); return r; } bool DOMXPathExpressionImpl::testNode(XPathMatcher* matcher, DOMXPathResultImpl* result, DOMElement *node) const { int uriId=fStringPool->addOrFind(node->getNamespaceURI()); QName qName(node->getNodeName(), uriId, fMemoryManager); SchemaElementDecl elemDecl(&qName); DOMNamedNodeMap* attrMap=node->getAttributes(); XMLSize_t attrCount = attrMap->getLength(); RefVectorOf attrList(attrCount, true, fMemoryManager); for(XMLSize_t i=0;iitem(i); attrList.addElement(new (fMemoryManager) XMLAttr(fStringPool->addOrFind(attr->getNamespaceURI()), attr->getNodeName(), attr->getNodeValue(), XMLAttDef::CData, attr->getSpecified(), fMemoryManager, NULL, true)); } matcher->startElement(elemDecl, uriId, node->getPrefix(), attrList, attrCount); unsigned char nMatch=matcher->isMatched(); if(nMatch!=0 && nMatch!=XPathMatcher::XP_MATCHED_DP) { result->addResult(node); if(result->getResultType()==DOMXPathResult::ANY_UNORDERED_NODE_TYPE || result->getResultType()==DOMXPathResult::FIRST_ORDERED_NODE_TYPE) return true; // abort navigation, we found one result } if(nMatch==0 || nMatch==XPathMatcher::XP_MATCHED_D || nMatch==XPathMatcher::XP_MATCHED_DP) { DOMNode* child=node->getFirstChild(); while(child) { if(child->getNodeType()==DOMNode::ELEMENT_NODE) if(testNode(matcher, result, (DOMElement*)child)) return true; child=child->getNextSibling(); } } matcher->endElement(elemDecl, XMLUni::fgZeroLenString); return false; } void DOMXPathExpressionImpl::release() { DOMXPathExpressionImpl* me = this; delete me; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMStringListImpl.cpp0000644000175000017500000000340411030714661022176 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMStringListImpl.cpp 671894 2008-06-26 13:29:21Z borisk $ */ #include "DOMStringListImpl.hpp" #include XERCES_CPP_NAMESPACE_BEGIN DOMStringListImpl::DOMStringListImpl(int nInitialSize, MemoryManager* manager) { fList=new (manager) RefVectorOf(nInitialSize, false, manager); } DOMStringListImpl::~DOMStringListImpl() { delete fList; } void DOMStringListImpl::add(const XMLCh* str) { fList->addElement((XMLCh*)str); } XMLSize_t DOMStringListImpl::getLength() const{ return fList->size(); } const XMLCh* DOMStringListImpl::item(XMLSize_t index) const{ if(indexsize()) return fList->elementAt(index); return 0; } bool DOMStringListImpl::contains(const XMLCh* str) const{ for(XMLSize_t i=0;isize();i++) if(XMLString::equals(fList->elementAt(i), str)) return true; return false; } void DOMStringListImpl::release() { delete this; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMAttrNSImpl.hpp0000644000175000017500000000645711041336370021266 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMAttrNSImpl.hpp 678709 2008-07-22 10:56:56Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMATTRNSIMPL_HPP) #define XERCESC_INCLUDE_GUARD_DOMATTRNSIMPL_HPP // // This file is part of the internal implementation of the C++ XML DOM. // It should NOT be included or used directly by application programs. // // Applications should include the file for the entire // DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class // name is substituded for the *. // #include "DOMAttrImpl.hpp" XERCES_CPP_NAMESPACE_BEGIN class CDOM_EXPORT DOMAttrNSImpl: public DOMAttrImpl { protected: //Introduced in DOM Level 2 const XMLCh * fNamespaceURI; //namespace URI of this node const XMLCh * fLocalName; //local part of qualified name const XMLCh * fPrefix; // prefix part of qualified name // revisit - can return local part // by pointing into the qualified (L1) name. public: DOMAttrNSImpl(DOMDocument *ownerDoc, const XMLCh *name); DOMAttrNSImpl(DOMDocument *ownerDoc, //DOM Level 2 const XMLCh *namespaceURI, const XMLCh *qualifiedName); DOMAttrNSImpl(const DOMAttrNSImpl &other, bool deep=false); // Fast construction without any checks for name validity. Used in // parsing. Note that if prefix is not specified and localName is // 'xmlns', this constructor expects proper namespaceURI. // DOMAttrNSImpl(DOMDocument *ownerDoc, const XMLCh *namespaceURI, const XMLCh *prefix, // Null or empty - no prefix. const XMLCh *localName, const XMLCh *qualifiedName); virtual DOMNode * cloneNode(bool deep) const; //Introduced in DOM Level 2 virtual const XMLCh * getNamespaceURI() const; virtual const XMLCh * getPrefix() const; virtual const XMLCh * getLocalName() const; virtual void setPrefix(const XMLCh *prefix); virtual void release(); // helper function for DOM Level 3 renameNode virtual DOMNode* rename(const XMLCh* namespaceURI, const XMLCh* name); void setName(const XMLCh* namespaceURI, const XMLCh* name); private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DOMAttrNSImpl & operator = (const DOMAttrNSImpl &); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMDeepNodeListImpl.cpp0000644000175000017500000001533311041060645022415 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMDeepNodeListImpl.cpp 678381 2008-07-21 10:15:01Z borisk $ */ #include "DOMDeepNodeListImpl.hpp" #include "DOMElementImpl.hpp" #include "DOMDocumentImpl.hpp" #include "DOMCasts.hpp" #include "DOMNodeImpl.hpp" #include #include XERCES_CPP_NAMESPACE_BEGIN static const XMLCh kAstr[] = {chAsterisk, chNull}; DOMDeepNodeListImpl::DOMDeepNodeListImpl(const DOMNode *rootNode, const XMLCh *tagName) : fRootNode(rootNode) , fChanges(0) , fCurrentNode(0) , fCurrentIndexPlus1(0) , fNamespaceURI(0) , fMatchAllURI(false) , fMatchURIandTagname(false) { fTagName = ((DOMDocumentImpl *)(castToNodeImpl(rootNode)->getOwnerDocument()))->getPooledString(tagName); fMatchAll = XMLString::equals(fTagName, kAstr); } //DOM Level 2 DOMDeepNodeListImpl::DOMDeepNodeListImpl(const DOMNode *rootNode, const XMLCh *namespaceURI, const XMLCh *localName) : fRootNode(rootNode) , fChanges(0) , fCurrentNode(0) , fCurrentIndexPlus1(0) , fMatchAllURI(false) , fMatchURIandTagname(true) { DOMDocumentImpl* doc = (DOMDocumentImpl *)castToNodeImpl(rootNode)->getOwnerDocument(); fTagName = doc->getPooledString(localName); fMatchAll = XMLString::equals(fTagName, kAstr); fMatchAllURI = XMLString::equals(namespaceURI, kAstr); fNamespaceURI = doc->getPooledString(namespaceURI); } DOMDeepNodeListImpl::~DOMDeepNodeListImpl() { } XMLSize_t DOMDeepNodeListImpl::getLength() const { // Reset cache to beginning of list item(0); // Preload all matching elements. (Stops when we run out of subtree!) item(INT_MAX); return fCurrentIndexPlus1; } DOMNode *DOMDeepNodeListImpl::item(XMLSize_t index) const { return ((DOMDeepNodeListImpl*)this)->cacheItem(index); } // Start from the first child and count forward, 0-based. index>length-1 // should return 0. // // Attempts to do only work actually requested, cache work already // done, and to flush that cache when the tree has changed. // // LIMITATION: ????? Unable to tell relevant tree-changes from // irrelevant ones. Doing so in a really useful manner would seem // to involve a tree-walk in its own right, or maintaining our data // in a parallel tree. DOMNode *DOMDeepNodeListImpl::cacheItem(XMLSize_t index) { XMLSize_t currentIndexPlus1 = fCurrentIndexPlus1; DOMNode *currentNode = fCurrentNode; if (castToParentImpl(fRootNode)->changes() != fChanges) { // Tree changed. Do it all from scratch! currentIndexPlus1 = 0; currentNode = (DOMNode *)fRootNode; fChanges = castToParentImpl(fRootNode)->changes(); } else if (currentIndexPlus1 > index+1) { // Interested in something before cached node. Do it all from scratch! currentIndexPlus1 = 0; currentNode = (DOMNode *)fRootNode; } else if (index+1 == currentIndexPlus1) { // What luck! User is interested in cached node. return currentNode; } DOMNode *nextNode = 0; // revisit - ???? How efficient is this loop? ???? // Start at the place in the tree at which we're // currently pointing and count off nodes until we // reach the node of interest or the end of the tree. while (currentIndexPlus1 < index+1 && currentNode != 0) { nextNode = nextMatchingElementAfter(currentNode); if (nextNode == 0) break; currentNode = nextNode; currentIndexPlus1++; } fCurrentNode = currentNode; fCurrentIndexPlus1 = currentIndexPlus1; // If we found a node at the requested index, make that the current node if (nextNode != 0) { return currentNode; } // If we didn't find a node at the requested index, return 0 return 0; } /* Iterative tree-walker. When you have a Parent link, there's often no need to resort to recursion. NOTE THAT only Element nodes are matched since we're specifically supporting getElementsByTagName(). */ DOMNode *DOMDeepNodeListImpl::nextMatchingElementAfter(DOMNode *current) { DOMNode *next; while (current != 0) { // Look down to first child. if (current->hasChildNodes()) { current = current->getFirstChild(); } // Look right to sibling (but not from root!) else { if (current != fRootNode && 0 != (next = current->getNextSibling())) { current = next; } // Look up and right (but not past root!) else { next = 0; for (; current != fRootNode; // Stop on return to starting point current = current->getParentNode()) { next = current->getNextSibling(); if (next != 0) break; } current = next; } } // Have we found an Element with the right tagName? // ("*" matches anything.) if (current != 0 && current != fRootNode && current->getNodeType() == DOMNode::ELEMENT_NODE) { DOMElement *currElement = (DOMElement *)current; if (!fMatchURIandTagname) { //DOM Level 1 if (fMatchAll || XMLString::equals(currElement->getTagName(), fTagName)) return current; } else { //DOM Level 2 if (!fMatchAllURI && !XMLString::equals(current->getNamespaceURI(), fNamespaceURI)) continue; if (fMatchAll || XMLString::equals(current->getLocalName(), fTagName)) return current; } } // Otherwise continue walking the tree } // Fell out of tree-walk; no more instances found return 0; } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMEntityReferenceImpl.cpp0000644000175000017500000002451411041060645023172 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMEntityReferenceImpl.cpp 678381 2008-07-21 10:15:01Z borisk $ */ #include "DOMDocumentImpl.hpp" #include "DOMDocumentTypeImpl.hpp" #include "DOMEntityImpl.hpp" #include "DOMEntityReferenceImpl.hpp" #include #include #include XERCES_CPP_NAMESPACE_BEGIN DOMEntityReferenceImpl::DOMEntityReferenceImpl(DOMDocument *ownerDoc, const XMLCh *entityName) : fNode(ownerDoc), fParent(ownerDoc), fBaseURI(0) { fName = ((DOMDocumentImpl*)fParent.fOwnerDocument)->getPooledString(entityName); // EntityReference behaves as a read-only node, since its contents // reflect the Entity it refers to -- but see setNodeName(). //retrieve the corresponding entity content if (ownerDoc) { if (ownerDoc->getDoctype()) { if (ownerDoc->getDoctype()->getEntities()) { DOMEntityImpl* entity = (DOMEntityImpl*)ownerDoc->getDoctype()->getEntities()->getNamedItem(entityName); if (entity) { fBaseURI = entity->getBaseURI(); DOMEntityReference* refEntity = entity->getEntityRef(); if (refEntity) { fParent.cloneChildren(refEntity); } } } } } fNode.setReadOnly(true, true); } DOMEntityReferenceImpl::DOMEntityReferenceImpl(DOMDocument *ownerDoc, const XMLCh *entityName, bool cloneChild) : fNode(ownerDoc), fParent(ownerDoc), fBaseURI(0) { fName = ((DOMDocumentImpl*)fParent.fOwnerDocument)->getPooledString(entityName); // EntityReference behaves as a read-only node, since its contents // reflect the Entity it refers to -- but see setNodeName(). //retrieve the corresponding entity content if (ownerDoc) { if (ownerDoc->getDoctype()) { if (ownerDoc->getDoctype()->getEntities()) { DOMEntityImpl* entity = (DOMEntityImpl*)ownerDoc->getDoctype()->getEntities()->getNamedItem(entityName); if (entity) { fBaseURI = entity->getBaseURI(); if (cloneChild) { DOMEntityReference* refEntity = entity->getEntityRef(); if (refEntity) { fParent.cloneChildren(refEntity); } } } } } } fNode.setReadOnly(true, true); } DOMEntityReferenceImpl::DOMEntityReferenceImpl(const DOMEntityReferenceImpl &other, bool deep) : DOMEntityReference(other), fNode(other.fNode), fParent(other.fParent), fChild(other.fChild), fName(other.fName), fBaseURI(other.fBaseURI) { if (deep) fParent.cloneChildren(&other); fNode.setReadOnly(true, true); } DOMEntityReferenceImpl::~DOMEntityReferenceImpl() { } DOMNode *DOMEntityReferenceImpl::cloneNode(bool deep) const { DOMNode* newNode = new (fParent.fOwnerDocument, DOMMemoryManager::ENTITY_REFERENCE_OBJECT) DOMEntityReferenceImpl(*this, deep); fNode.callUserDataHandlers(DOMUserDataHandler::NODE_CLONED, this, newNode); return newNode; } const XMLCh * DOMEntityReferenceImpl::getNodeName() const { return fName; } DOMNode::NodeType DOMEntityReferenceImpl::getNodeType() const { return DOMNode::ENTITY_REFERENCE_NODE; } /** * EntityReferences never have a nodeValue. * @throws DOMException(NO_MODIFICATION_ALLOWED_ERR) */ void DOMEntityReferenceImpl::setNodeValue(const XMLCh *x) { fNode.setNodeValue(x); } /** * EntityRef is already, and must be, a read-only node. Attempts to change * that will throw a NO_MODIFICATION_ALLOWED_ERR DOMException. *

    * If you want to alter its contents, edit the Entity definition. * * @param readOnly boolean */ void DOMEntityReferenceImpl::setReadOnly(bool readOnl,bool deep) { if(((DOMDocumentImpl *)fParent.fOwnerDocument)->getErrorChecking() && readOnl==false) throw DOMException(DOMException::NO_MODIFICATION_ALLOWED_ERR, 0, GetDOMNodeMemoryManager); fNode.setReadOnly(readOnl,deep); } void DOMEntityReferenceImpl::release() { if (fNode.isOwned() && !fNode.isToBeReleased()) throw DOMException(DOMException::INVALID_ACCESS_ERR,0, GetDOMNodeMemoryManager); DOMDocumentImpl* doc = (DOMDocumentImpl*) fParent.fOwnerDocument; if (doc) { fNode.callUserDataHandlers(DOMUserDataHandler::NODE_DELETED, 0, 0); fParent.release(); doc->release(this, DOMMemoryManager::ENTITY_REFERENCE_OBJECT); } else { // shouldn't reach here throw DOMException(DOMException::INVALID_ACCESS_ERR,0, GetDOMNodeMemoryManager); } } const XMLCh* DOMEntityReferenceImpl::getBaseURI() const { return fBaseURI; } // // Delegate functions from Node to the appropriate implementation. // DOMNode* DOMEntityReferenceImpl::appendChild(DOMNode *newChild) {return fParent.appendChild (newChild); } DOMNamedNodeMap* DOMEntityReferenceImpl::getAttributes() const {return fNode.getAttributes (); } DOMNodeList* DOMEntityReferenceImpl::getChildNodes() const {return fParent.getChildNodes (); } DOMNode* DOMEntityReferenceImpl::getFirstChild() const {return fParent.getFirstChild (); } DOMNode* DOMEntityReferenceImpl::getLastChild() const {return fParent.getLastChild (); } const XMLCh* DOMEntityReferenceImpl::getLocalName() const {return fNode.getLocalName (); } const XMLCh* DOMEntityReferenceImpl::getNamespaceURI() const {return fNode.getNamespaceURI (); } DOMNode* DOMEntityReferenceImpl::getNextSibling() const {return fChild.getNextSibling (); } const XMLCh* DOMEntityReferenceImpl::getNodeValue() const {return fNode.getNodeValue (); } DOMDocument* DOMEntityReferenceImpl::getOwnerDocument() const {return fParent.fOwnerDocument; } const XMLCh* DOMEntityReferenceImpl::getPrefix() const {return fNode.getPrefix (); } DOMNode* DOMEntityReferenceImpl::getParentNode() const {return fChild.getParentNode (this); } DOMNode* DOMEntityReferenceImpl::getPreviousSibling() const {return fChild.getPreviousSibling (this); } bool DOMEntityReferenceImpl::hasChildNodes() const {return fParent.hasChildNodes (); } DOMNode* DOMEntityReferenceImpl::insertBefore(DOMNode *newChild, DOMNode *refChild) {return fParent.insertBefore (newChild, refChild); } void DOMEntityReferenceImpl::normalize() {fParent.normalize (); } DOMNode* DOMEntityReferenceImpl::removeChild(DOMNode *oldChild) {return fParent.removeChild (oldChild); } DOMNode* DOMEntityReferenceImpl::replaceChild(DOMNode *newChild, DOMNode *oldChild) {return fParent.replaceChild (newChild, oldChild); } bool DOMEntityReferenceImpl::isSupported(const XMLCh *feature, const XMLCh *version) const {return fNode.isSupported (feature, version); } void DOMEntityReferenceImpl::setPrefix(const XMLCh *prefix) {fNode.setPrefix(prefix); } bool DOMEntityReferenceImpl::hasAttributes() const {return fNode.hasAttributes(); } bool DOMEntityReferenceImpl::isSameNode(const DOMNode* other) const {return fNode.isSameNode(other); } bool DOMEntityReferenceImpl::isEqualNode(const DOMNode* arg) const {return fParent.isEqualNode(arg); } void* DOMEntityReferenceImpl::setUserData(const XMLCh* key, void* data, DOMUserDataHandler* handler) {return fNode.setUserData(key, data, handler); } void* DOMEntityReferenceImpl::getUserData(const XMLCh* key) const {return fNode.getUserData(key); } short DOMEntityReferenceImpl::compareDocumentPosition(const DOMNode* other) const {return fNode.compareDocumentPosition(other); } const XMLCh* DOMEntityReferenceImpl::getTextContent() const {return fNode.getTextContent(); } void DOMEntityReferenceImpl::setTextContent(const XMLCh* textContent){fNode.setTextContent(textContent); } const XMLCh* DOMEntityReferenceImpl::lookupPrefix(const XMLCh* namespaceURI) const {return fNode.lookupPrefix(namespaceURI); } bool DOMEntityReferenceImpl::isDefaultNamespace(const XMLCh* namespaceURI) const {return fNode.isDefaultNamespace(namespaceURI); } const XMLCh* DOMEntityReferenceImpl::lookupNamespaceURI(const XMLCh* prefix) const {return fNode.lookupNamespaceURI(prefix); } void* DOMEntityReferenceImpl::getFeature(const XMLCh* feature, const XMLCh* version) const {return fNode.getFeature(feature, version); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMNotationImpl.cpp0000644000175000017500000002005611030714661021671 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMNotationImpl.cpp 671894 2008-06-26 13:29:21Z borisk $ */ #include "DOMDocumentImpl.hpp" #include "DOMNotationImpl.hpp" #include #include XERCES_CPP_NAMESPACE_BEGIN DOMNotationImpl::DOMNotationImpl(DOMDocument *ownerDoc, const XMLCh *nName) : fNode(ownerDoc), fName(0), fPublicId(0), fSystemId(0), fBaseURI(0) { fNode.setIsLeafNode(true); fName = ((DOMDocumentImpl *)ownerDoc)->getPooledString(nName); } DOMNotationImpl::DOMNotationImpl(const DOMNotationImpl &other, bool /*deep*/) : DOMNotation(other), fNode(other.fNode), fName(other.fName), fPublicId(other.fPublicId), fSystemId(other.fSystemId), fBaseURI(other.fBaseURI) { fNode.setIsLeafNode(true); } DOMNotationImpl::~DOMNotationImpl() { } DOMNode *DOMNotationImpl::cloneNode(bool deep) const { DOMNode* newNode = new (getOwnerDocument(), DOMMemoryManager::NOTATION_OBJECT) DOMNotationImpl(*this, deep); fNode.callUserDataHandlers(DOMUserDataHandler::NODE_CLONED, this, newNode); return newNode; } const XMLCh * DOMNotationImpl::getNodeName() const { return fName; } DOMNode::NodeType DOMNotationImpl::getNodeType() const { return DOMNode::NOTATION_NODE; } const XMLCh * DOMNotationImpl::getPublicId() const { return fPublicId; } const XMLCh * DOMNotationImpl::getSystemId() const { return fSystemId; } void DOMNotationImpl::setNodeValue(const XMLCh *arg) { fNode.setNodeValue(arg); } void DOMNotationImpl::setPublicId(const XMLCh *arg) { if(fNode.isReadOnly()) throw DOMException( DOMException::NO_MODIFICATION_ALLOWED_ERR,0, GetDOMNodeMemoryManager); fPublicId = ((DOMDocumentImpl *)getOwnerDocument())->cloneString(arg); } void DOMNotationImpl::setSystemId(const XMLCh *arg) { if(fNode.isReadOnly()) throw DOMException( DOMException::NO_MODIFICATION_ALLOWED_ERR,0, GetDOMNodeMemoryManager); fSystemId = ((DOMDocumentImpl *)getOwnerDocument())->cloneString(arg); } void DOMNotationImpl::release() { if (fNode.isOwned() && !fNode.isToBeReleased()) throw DOMException(DOMException::INVALID_ACCESS_ERR,0, GetDOMNodeMemoryManager); DOMDocumentImpl* doc = (DOMDocumentImpl*) getOwnerDocument(); if (doc) { fNode.callUserDataHandlers(DOMUserDataHandler::NODE_DELETED, 0, 0); doc->release(this, DOMMemoryManager::NOTATION_OBJECT); } else { // shouldn't reach here throw DOMException(DOMException::INVALID_ACCESS_ERR,0, GetDOMNodeMemoryManager); } } void DOMNotationImpl::setBaseURI(const XMLCh* baseURI) { if (baseURI && *baseURI) { XMLCh* temp = (XMLCh*) ((DOMDocumentImpl *)getOwnerDocument())->allocate((XMLString::stringLen(baseURI) + 9)*sizeof(XMLCh)); XMLString::fixURI(baseURI, temp); fBaseURI = temp; } else fBaseURI = 0; } const XMLCh* DOMNotationImpl::getBaseURI() const { return fBaseURI; } DOMNode* DOMNotationImpl::appendChild(DOMNode *newChild) {return fNode.appendChild (newChild); } DOMNamedNodeMap* DOMNotationImpl::getAttributes() const {return fNode.getAttributes (); } DOMNodeList* DOMNotationImpl::getChildNodes() const {return fNode.getChildNodes (); } DOMNode* DOMNotationImpl::getFirstChild() const {return fNode.getFirstChild (); } DOMNode* DOMNotationImpl::getLastChild() const {return fNode.getLastChild (); } const XMLCh* DOMNotationImpl::getLocalName() const {return fNode.getLocalName (); } const XMLCh* DOMNotationImpl::getNamespaceURI() const {return fNode.getNamespaceURI (); } DOMNode* DOMNotationImpl::getNextSibling() const {return fNode.getNextSibling (); } const XMLCh* DOMNotationImpl::getNodeValue() const {return fNode.getNodeValue (); } DOMDocument* DOMNotationImpl::getOwnerDocument() const {return fNode.getOwnerDocument (); } const XMLCh* DOMNotationImpl::getPrefix() const {return fNode.getPrefix (); } DOMNode* DOMNotationImpl::getParentNode() const {return fNode.getParentNode (); } DOMNode* DOMNotationImpl::getPreviousSibling() const {return fNode.getPreviousSibling (); } bool DOMNotationImpl::hasChildNodes() const {return fNode.hasChildNodes (); } DOMNode* DOMNotationImpl::insertBefore(DOMNode *newChild, DOMNode *refChild) {return fNode.insertBefore (newChild, refChild); } void DOMNotationImpl::normalize() {fNode.normalize (); } DOMNode* DOMNotationImpl::removeChild(DOMNode *oldChild) {return fNode.removeChild (oldChild); } DOMNode* DOMNotationImpl::replaceChild(DOMNode *newChild, DOMNode *oldChild) {return fNode.replaceChild (newChild, oldChild); } bool DOMNotationImpl::isSupported(const XMLCh *feature, const XMLCh *version) const {return fNode.isSupported (feature, version); } void DOMNotationImpl::setPrefix(const XMLCh *prefix) {fNode.setPrefix(prefix); } bool DOMNotationImpl::hasAttributes() const {return fNode.hasAttributes(); } bool DOMNotationImpl::isSameNode(const DOMNode* other) const {return fNode.isSameNode(other); } bool DOMNotationImpl::isEqualNode(const DOMNode* arg) const {return fNode.isEqualNode(arg); } void* DOMNotationImpl::setUserData(const XMLCh* key, void* data, DOMUserDataHandler* handler) {return fNode.setUserData(key, data, handler); } void* DOMNotationImpl::getUserData(const XMLCh* key) const {return fNode.getUserData(key); } short DOMNotationImpl::compareDocumentPosition(const DOMNode* other) const {return fNode.compareDocumentPosition(other); } const XMLCh* DOMNotationImpl::getTextContent() const {return fNode.getTextContent(); } void DOMNotationImpl::setTextContent(const XMLCh* textContent){fNode.setTextContent(textContent); } const XMLCh* DOMNotationImpl::lookupPrefix(const XMLCh* namespaceURI) const {return fNode.lookupPrefix(namespaceURI); } bool DOMNotationImpl::isDefaultNamespace(const XMLCh* namespaceURI) const {return fNode.isDefaultNamespace(namespaceURI); } const XMLCh* DOMNotationImpl::lookupNamespaceURI(const XMLCh* prefix) const {return fNode.lookupNamespaceURI(prefix); } void* DOMNotationImpl::getFeature(const XMLCh* feature, const XMLCh* version) const {return fNode.getFeature(feature, version); } XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/dom/impl/DOMDocumentFragmentImpl.hpp0000644000175000017500000000437310772402041023347 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DOMDocumentFragmentImpl.hpp 641193 2008-03-26 08:06:57Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DOMDOCUMENTFRAGMENTIMPL_HPP) #define XERCESC_INCLUDE_GUARD_DOMDOCUMENTFRAGMENTIMPL_HPP // // This file is part of the internal implementation of the C++ XML DOM. // It should NOT be included or used directly by application programs. // // Applications should include the file for the entire // DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class // name is substituded for the *. // #include #include #include "DOMParentNode.hpp" #include "DOMNodeImpl.hpp" XERCES_CPP_NAMESPACE_BEGIN class CDOM_EXPORT DOMDocumentFragmentImpl: public DOMDocumentFragment { protected: DOMNodeImpl fNode; DOMParentNode fParent; protected: DOMDocumentFragmentImpl(DOMDocument *); DOMDocumentFragmentImpl(const DOMDocumentFragmentImpl &other, bool deep); friend class DOMDocumentImpl; private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DOMDocumentFragmentImpl & operator = (const DOMDocumentFragmentImpl &); public: virtual ~DOMDocumentFragmentImpl(); public: // Declare all of the functions from DOMNode. DOMNODE_FUNCTIONS; }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/dom/impl/DOMTypeInfoImpl.hpp0000644000175000017500000001055111030714661021637 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // // This file is part of the internal implementation of the C++ XML DOM. // It should NOT be included or used directly by application programs. // // Applications should include the file for the entire // DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class // name is substituded for the *. // #if !defined(XERCESC_INCLUDE_GUARD_DOMTYPEINFOIMPL_HPP) #define XERCESC_INCLUDE_GUARD_DOMTYPEINFOIMPL_HPP //------------------------------------------------------------------------------------ // Includes //------------------------------------------------------------------------------------ #include #include XERCES_CPP_NAMESPACE_BEGIN class DOMDocumentImpl; class CDOM_EXPORT DOMTypeInfoImpl : public DOMTypeInfo, public DOMPSVITypeInfo { public: //----------------------------------------------------------------------------------- // Constructor //----------------------------------------------------------------------------------- DOMTypeInfoImpl(const XMLCh* namespaceUri=0, const XMLCh* name=0); DOMTypeInfoImpl(DOMDocumentImpl* ownerDoc, const DOMPSVITypeInfo* sourcePSVI); static DOMTypeInfoImpl g_DtdValidatedElement; static DOMTypeInfoImpl g_DtdNotValidatedAttribute; static DOMTypeInfoImpl g_DtdValidatedCDATAAttribute; static DOMTypeInfoImpl g_DtdValidatedIDAttribute; static DOMTypeInfoImpl g_DtdValidatedIDREFAttribute; static DOMTypeInfoImpl g_DtdValidatedIDREFSAttribute; static DOMTypeInfoImpl g_DtdValidatedENTITYAttribute; static DOMTypeInfoImpl g_DtdValidatedENTITIESAttribute; static DOMTypeInfoImpl g_DtdValidatedNMTOKENAttribute; static DOMTypeInfoImpl g_DtdValidatedNMTOKENSAttribute; static DOMTypeInfoImpl g_DtdValidatedNOTATIONAttribute; static DOMTypeInfoImpl g_DtdValidatedENUMERATIONAttribute; // ----------------------------------------------------------------------- // DOMTypeInfo interface // ----------------------------------------------------------------------- virtual const XMLCh* getTypeName() const; virtual const XMLCh* getTypeNamespace() const; virtual bool isDerivedFrom(const XMLCh* typeNamespaceArg, const XMLCh* typeNameArg, DerivationMethods derivationMethod) const; // ----------------------------------------------------------------------- // DOMPSVITypeInfo interface // ----------------------------------------------------------------------- virtual const XMLCh* getStringProperty(PSVIProperty prop) const; virtual int getNumericProperty(PSVIProperty prop) const; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- virtual void setStringProperty(PSVIProperty prop, const XMLCh* value); virtual void setNumericProperty(PSVIProperty prop, int value); protected: int fBitFields; const XMLCh* fTypeName; const XMLCh* fTypeNamespace; const XMLCh* fMemberTypeName; const XMLCh* fMemberTypeNamespace; const XMLCh* fDefaultValue; const XMLCh* fNormalizedValue; private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DOMTypeInfoImpl (const DOMTypeInfoImpl&); DOMTypeInfoImpl & operator = (const DOMTypeInfoImpl &); }; XERCES_CPP_NAMESPACE_END #endif /** * End of file DOMTypeInfo.hpp */ xerces-c-3.1.1/src/xercesc/dom/impl/DOMConfigurationImpl.hpp0000644000175000017500000001237410772402041022714 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // // This file is part of the internal implementation of the C++ XML DOM. // It should NOT be included or used directly by application programs. // // Applications should include the file for the entire // DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class // name is substituded for the *. // #if !defined(XERCESC_INCLUDE_GUARD_DOMCONFIGURATIONIMPL_HPP) #define XERCESC_INCLUDE_GUARD_DOMCONFIGURATIONIMPL_HPP //------------------------------------------------------------------------------------ // Includes //------------------------------------------------------------------------------------ #include #include #include XERCES_CPP_NAMESPACE_BEGIN class DOMDocumentImpl; class DOMStringListImpl; class CDOM_EXPORT DOMConfigurationImpl : public DOMConfiguration { private: //unimplemented DOMConfigurationImpl(const DOMConfiguration &); DOMConfigurationImpl & operator = (const DOMConfiguration &); public: //----------------------------------------------------------------------------------- // Constructor //----------------------------------------------------------------------------------- DOMConfigurationImpl(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); ~DOMConfigurationImpl(); enum DOMConfigurationFeature { FEATURE_CANONICAL_FORM = 0x0001, FEATURE_CDATA_SECTIONS = 0x0002, FEATURE_COMMENTS = 0x0004, FEATURE_DATATYPE_NORMALIZATION = 0x0008, FEATURE_DISCARD_DEFAULT_CONTENT = 0x0010, FEATURE_ENTITIES = 0x0020, FEATURE_INFOSET = 0x0040, FEATURE_NAMESPACES = 0x0080, FEATURE_NAMESPACE_DECLARATIONS = 0x0100, FEATURE_NORMALIZE_CHARACTERS = 0x0200, FEATURE_SPLIT_CDATA_SECTIONS = 0x0400, FEATURE_VALIDATE = 0x0800, FEATURE_VALIDATE_IF_SCHEMA = 0x1000, FEATURE_ELEMENT_CONTENT_WHITESPACE = 0x2000 }; unsigned short featureValues; // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- virtual void setParameter(const XMLCh* name, const void* value); virtual void setParameter(const XMLCh* name, bool value); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- virtual const void* getParameter(const XMLCh* name) const; // ----------------------------------------------------------------------- // Query methods // ----------------------------------------------------------------------- virtual bool canSetParameter(const XMLCh* name, const void* value) const; virtual bool canSetParameter(const XMLCh* name, bool value) const; virtual const DOMStringList* getParameterNames() const; // --------------------------------------------------------------------------- // Impl specific methods // --------------------------------------------------------------------------- /* specific get and set methods for non-boolean parameters * */ DOMErrorHandler* getErrorHandler() const; const XMLCh* getSchemaType() const; const XMLCh* getSchemaLocation() const; void setErrorHandler(DOMErrorHandler *erHandler); void setSchemaType(const XMLCh* st); void setSchemaLocation(const XMLCh* sl); // The default values for the boolean parameters // from CANONICAL_FORM to ELEMENT_CONTENT_WHITESPACE // 10010110010110 = 0x2596 static const unsigned short fDEFAULT_VALUES; protected: // implements a simple map between the name and its enum value DOMConfigurationFeature getFeatureFlag(const XMLCh* name) const; // the error handler DOMErrorHandler* fErrorHandler; // the schema type const XMLCh* fSchemaType; // the schema location const XMLCh* fSchemaLocation; // the list of supported parameters DOMStringListImpl* fSupportedParameters; MemoryManager* fMemoryManager; }; XERCES_CPP_NAMESPACE_END #endif /** * End of file DOMConfigurationImpl.hpp */ xerces-c-3.1.1/src/xercesc/sax2/0000755000175000017500000000000011363617252015351 5ustar borisborisxerces-c-3.1.1/src/xercesc/sax2/sax2Dummy.cpp0000644000175000017500000000216510523643534017751 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: sax2Dummy.cpp 471747 2006-11-06 14:31:56Z amassari $ */ #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN XERCES_CPP_NAMESPACE_END xerces-c-3.1.1/src/xercesc/sax2/DefaultHandler.hpp0000644000175000017500000006071711360344373020755 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DefaultHandler.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DEFAULTHANDLER_HPP) #define XERCESC_INCLUDE_GUARD_DEFAULTHANDLER_HPP #include #include #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN class Locator; class Attributes; /** * Default base class for SAX2 handlers. * *

    This class implements the default behaviour for SAX2 * interfaces: EntityResolver, DTDHandler, ContentHandler, * ErrorHandler, LexicalHandler, and DeclHandler.

    * *

    Application writers can extend this class when they need to * implement only part of an interface; parser writers can * instantiate this class to provide default handlers when the * application has not supplied its own.

    * *

    Note that the use of this class is optional.

    * * @see EntityResolver#EntityResolver * @see DTDHandler#DTDHandler * @see ContentHandler#ContentHandler * @see ErrorHandler#ErrorHandler * @see LexicalHandler#LexicalHandler * @see DeclHandler#DeclHandler */ class SAX2_EXPORT DefaultHandler : public EntityResolver, public DTDHandler, public ContentHandler, public ErrorHandler, public LexicalHandler, public DeclHandler { public: /** @name Default handlers for the DocumentHandler interface */ //@{ /** * Receive notification of character data inside an element. * *

    By default, do nothing. Application writers may override this * method to take specific actions for each chunk of character data * (such as adding the data to a node or buffer, or printing it to * a file).

    * * @param chars The characters. * @param length The number of characters to use from the * character array. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see DocumentHandler#characters */ virtual void characters ( const XMLCh* const chars , const XMLSize_t length ); /** * Receive notification of the end of the document. * *

    By default, do nothing. Application writers may override this * method in a subclass to take specific actions at the beginning * of a document (such as finalising a tree or closing an output * file).

    * * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see DocumentHandler#endDocument */ virtual void endDocument(); /** * Receive notification of the end of an element. * *

    By default, do nothing. Application writers may override this * method in a subclass to take specific actions at the end of * each element (such as finalising a tree node or writing * output to a file).

    * * @param uri The URI of the associated namespace for this element * @param localname The local part of the element name * @param qname The QName of this element * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see DocumentHandler#endElement */ virtual void endElement ( const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname ); /** * Receive notification of ignorable whitespace in element content. * *

    By default, do nothing. Application writers may override this * method to take specific actions for each chunk of ignorable * whitespace (such as adding data to a node or buffer, or printing * it to a file).

    * * @param chars The whitespace characters. * @param length The number of characters to use from the * character array. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see DocumentHandler#ignorableWhitespace */ virtual void ignorableWhitespace ( const XMLCh* const chars , const XMLSize_t length ); /** * Receive notification of a processing instruction. * *

    By default, do nothing. Application writers may override this * method in a subclass to take specific actions for each * processing instruction, such as setting status variables or * invoking other methods.

    * * @param target The processing instruction target. * @param data The processing instruction data, or null if * none is supplied. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see DocumentHandler#processingInstruction */ virtual void processingInstruction ( const XMLCh* const target , const XMLCh* const data ); /** * Reset the Document object on its reuse * * @see DocumentHandler#resetDocument */ virtual void resetDocument(); //@} /** @name Default implementation of DocumentHandler interface */ //@{ /** * Receive a Locator object for document events. * *

    By default, do nothing. Application writers may override this * method in a subclass if they wish to store the locator for use * with other document events.

    * * @param locator A locator for all SAX document events. * @see DocumentHandler#setDocumentLocator * @see Locator */ virtual void setDocumentLocator(const Locator* const locator); /** * Receive notification of the beginning of the document. * *

    By default, do nothing. Application writers may override this * method in a subclass to take specific actions at the beginning * of a document (such as allocating the root node of a tree or * creating an output file).

    * * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see DocumentHandler#startDocument */ virtual void startDocument(); /** * Receive notification of the start of an element. * *

    By default, do nothing. Application writers may override this * method in a subclass to take specific actions at the start of * each element (such as allocating a new tree node or writing * output to a file).

    * * @param uri The URI of the associated namespace for this element * @param localname the local part of the element name * @param qname the QName of this element * @param attrs The specified or defaulted attributes. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see DocumentHandler#startElement */ virtual void startElement ( const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname , const Attributes& attrs ); /** * Receive notification of the start of an namespace prefix mapping. * *

    By default, do nothing. Application writers may override this * method in a subclass to take specific actions at the start of * each namespace prefix mapping.

    * * @param prefix The namespace prefix used * @param uri The namespace URI used. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see DocumentHandler#startPrefixMapping */ virtual void startPrefixMapping ( const XMLCh* const prefix, const XMLCh* const uri ) ; /** * Receive notification of the end of an namespace prefix mapping. * *

    By default, do nothing. Application writers may override this * method in a subclass to take specific actions at the end of * each namespace prefix mapping.

    * * @param prefix The namespace prefix used * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see DocumentHandler#endPrefixMapping */ virtual void endPrefixMapping ( const XMLCh* const prefix ) ; /** * Receive notification of a skipped entity * *

    The parser will invoke this method once for each entity * skipped. All processors may skip external entities, * depending on the values of the features:
    * http://xml.org/sax/features/external-general-entities
    * http://xml.org/sax/features/external-parameter-entities

    * *

    Introduced with SAX2

    * * @param name The name of the skipped entity. If it is a parameter entity, * the name will begin with %, and if it is the external DTD subset, * it will be the string [dtd]. * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void skippedEntity ( const XMLCh* const name ) ; //@} /** @name Default implementation of the EntityResolver interface. */ //@{ /** * Resolve an external entity. * *

    Always return null, so that the parser will use the system * identifier provided in the XML document. This method implements * the SAX default behaviour: application writers can override it * in a subclass to do special translations such as catalog lookups * or URI redirection.

    * * @param publicId The public identifier, or null if none is * available. * @param systemId The system identifier provided in the XML * document. * @return The new input source, or null to require the * default behaviour. * The returned InputSource is owned by the parser which is * responsible to clean up the memory. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see EntityResolver#resolveEntity */ virtual InputSource* resolveEntity ( const XMLCh* const publicId , const XMLCh* const systemId ); //@} /** @name Default implementation of the ErrorHandler interface */ //@{ /** * Receive notification of a recoverable parser error. * *

    The default implementation does nothing. Application writers * may override this method in a subclass to take specific actions * for each error, such as inserting the message in a log file or * printing it to the console.

    * * @param exc The warning information encoded as an exception. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see ErrorHandler#warning * @see SAXParseException#SAXParseException */ virtual void error(const SAXParseException& exc); /** * Report a fatal XML parsing error. * *

    The default implementation throws a SAXParseException. * Application writers may override this method in a subclass if * they need to take specific actions for each fatal error (such as * collecting all of the errors into a single report): in any case, * the application must stop all regular processing when this * method is invoked, since the document is no longer reliable, and * the parser may no longer report parsing events.

    * * @param exc The error information encoded as an exception. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see ErrorHandler#fatalError * @see SAXParseException#SAXParseException */ virtual void fatalError(const SAXParseException& exc); /** * Receive notification of a parser warning. * *

    The default implementation does nothing. Application writers * may override this method in a subclass to take specific actions * for each warning, such as inserting the message in a log file or * printing it to the console.

    * * @param exc The warning information encoded as an exception. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see ErrorHandler#warning * @see SAXParseException#SAXParseException */ virtual void warning(const SAXParseException& exc); /** * Reset the Error handler object on its reuse * * @see ErrorHandler#resetErrors */ virtual void resetErrors(); //@} /** @name Default implementation of DTDHandler interface. */ //@{ /** * Receive notification of a notation declaration. * *

    By default, do nothing. Application writers may override this * method in a subclass if they wish to keep track of the notations * declared in a document.

    * * @param name The notation name. * @param publicId The notation public identifier, or null if not * available. * @param systemId The notation system identifier. * @see DTDHandler#notationDecl */ virtual void notationDecl ( const XMLCh* const name , const XMLCh* const publicId , const XMLCh* const systemId ); /** * Reset the DTD object on its reuse * * @see DTDHandler#resetDocType */ virtual void resetDocType(); /** * Receive notification of an unparsed entity declaration. * *

    By default, do nothing. Application writers may override this * method in a subclass to keep track of the unparsed entities * declared in a document.

    * * @param name The entity name. * @param publicId The entity public identifier, or null if not * available. * @param systemId The entity system identifier. * @param notationName The name of the associated notation. * @see DTDHandler#unparsedEntityDecl */ virtual void unparsedEntityDecl ( const XMLCh* const name , const XMLCh* const publicId , const XMLCh* const systemId , const XMLCh* const notationName ); //@} /** @name Default implementation of LexicalHandler interface. */ //@{ /** * Receive notification of comments. * *

    The Parser will call this method to report each occurrence of * a comment in the XML document.

    * *

    The application must not attempt to read from the array * outside of the specified range.

    * * @param chars The characters from the XML document. * @param length The number of characters to read from the array. * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void comment ( const XMLCh* const chars , const XMLSize_t length ); /** * Receive notification of the end of a CDATA section. * *

    The SAX parser will invoke this method at the end of * each CDATA parsed.

    * * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void endCDATA (); /** * Receive notification of the end of the DTD declarations. * *

    The SAX parser will invoke this method at the end of the * DTD

    * * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void endDTD (); /** * Receive notification of the end of an entity. * *

    The SAX parser will invoke this method at the end of an * entity

    * * @param name The name of the entity that is ending. * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void endEntity (const XMLCh* const name); /** * Receive notification of the start of a CDATA section. * *

    The SAX parser will invoke this method at the start of * each CDATA parsed.

    * * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void startCDATA (); /** * Receive notification of the start of the DTD declarations. * *

    The SAX parser will invoke this method at the start of the * DTD

    * * @param name The document type name. * @param publicId The declared public identifier for the external DTD subset, or null if none was declared. * @param systemId The declared system identifier for the external DTD subset, or null if none was declared. * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void startDTD ( const XMLCh* const name , const XMLCh* const publicId , const XMLCh* const systemId ); /** * Receive notification of the start of an entity. * *

    The SAX parser will invoke this method at the start of an * entity

    * * @param name The name of the entity that is starting. * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void startEntity (const XMLCh* const name); //@} /** @name Default implementation of DeclHandler interface. */ //@{ /** * Report an element type declaration. * *

    The content model will consist of the string "EMPTY", the string * "ANY", or a parenthesised group, optionally followed by an occurrence * indicator. The model will be normalized so that all parameter entities * are fully resolved and all whitespace is removed,and will include the * enclosing parentheses. Other normalization (such as removing redundant * parentheses or simplifying occurrence indicators) is at the discretion * of the parser.

    * * @param name The element type name. * @param model The content model as a normalized string. * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void elementDecl ( const XMLCh* const name , const XMLCh* const model ); /** * Report an attribute type declaration. * *

    Only the effective (first) declaration for an attribute will * be reported.

    * * @param eName The name of the associated element. * @param aName The name of the attribute. * @param type A string representing the attribute type. * @param mode A string representing the attribute defaulting mode ("#IMPLIED", "#REQUIRED", or "#FIXED") or null if none of these applies. * @param value A string representing the attribute's default value, or null if there is none. * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void attributeDecl ( const XMLCh* const eName , const XMLCh* const aName , const XMLCh* const type , const XMLCh* const mode , const XMLCh* const value ); /** * Report an internal entity declaration. * *

    Only the effective (first) declaration for each entity will be * reported. All parameter entities in the value will be expanded, but * general entities will not.

    * * @param name The name of the entity. If it is a parameter entity, the name will begin with '%'. * @param value The replacement text of the entity. * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void internalEntityDecl ( const XMLCh* const name , const XMLCh* const value ); /** * Report a parsed external entity declaration. * *

    Only the effective (first) declaration for each entity will * be reported.

    * * @param name The name of the entity. If it is a parameter entity, the name will begin with '%'. * @param publicId The The declared public identifier of the entity, or null if none was declared. * @param systemId The declared system identifier of the entity. * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void externalEntityDecl ( const XMLCh* const name , const XMLCh* const publicId , const XMLCh* const systemId ); //@} DefaultHandler() {}; virtual ~DefaultHandler() {}; private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- DefaultHandler(const DefaultHandler&); DefaultHandler& operator=(const DefaultHandler&); }; // --------------------------------------------------------------------------- // HandlerBase: Inline default implementations // --------------------------------------------------------------------------- inline void DefaultHandler::characters(const XMLCh* const ,const XMLSize_t) { } inline void DefaultHandler::endDocument() { } inline void DefaultHandler::endElement(const XMLCh* const , const XMLCh* const , const XMLCh* const) { } inline void DefaultHandler::error(const SAXParseException&) { } inline void DefaultHandler::fatalError(const SAXParseException& exc) { throw exc; } inline void DefaultHandler::ignorableWhitespace( const XMLCh* const , const XMLSize_t) { } inline void DefaultHandler::notationDecl( const XMLCh* const , const XMLCh* const , const XMLCh* const) { } inline void DefaultHandler::processingInstruction( const XMLCh* const , const XMLCh* const) { } inline void DefaultHandler::resetErrors() { } inline void DefaultHandler::resetDocument() { } inline void DefaultHandler::resetDocType() { } inline InputSource* DefaultHandler::resolveEntity( const XMLCh* const , const XMLCh* const) { return 0; } inline void DefaultHandler::unparsedEntityDecl(const XMLCh* const , const XMLCh* const , const XMLCh* const , const XMLCh* const) { } inline void DefaultHandler::setDocumentLocator(const Locator* const) { } inline void DefaultHandler::startDocument() { } inline void DefaultHandler::startElement( const XMLCh* const , const XMLCh* const , const XMLCh* const , const Attributes& ) { } inline void DefaultHandler::warning(const SAXParseException&) { } inline void DefaultHandler::startPrefixMapping ( const XMLCh* const ,const XMLCh* const) { } inline void DefaultHandler::endPrefixMapping ( const XMLCh* const) { } inline void DefaultHandler::skippedEntity ( const XMLCh* const) { } inline void DefaultHandler::comment( const XMLCh* const , const XMLSize_t) { } inline void DefaultHandler::endCDATA () { } inline void DefaultHandler::endDTD () { } inline void DefaultHandler::endEntity (const XMLCh* const) { } inline void DefaultHandler::startCDATA () { } inline void DefaultHandler::startDTD( const XMLCh* const , const XMLCh* const , const XMLCh* const) { } inline void DefaultHandler::startEntity (const XMLCh* const) { } inline void DefaultHandler::attributeDecl(const XMLCh* const, const XMLCh* const, const XMLCh* const, const XMLCh* const, const XMLCh* const) { } inline void DefaultHandler::elementDecl(const XMLCh* const, const XMLCh* const) { } inline void DefaultHandler::externalEntityDecl(const XMLCh* const, const XMLCh* const, const XMLCh* const) { } inline void DefaultHandler::internalEntityDecl(const XMLCh* const, const XMLCh* const) { } XERCES_CPP_NAMESPACE_END #endif // ! DEFAULTHANDLER_HPP xerces-c-3.1.1/src/xercesc/sax2/Attributes.hpp0000644000175000017500000002605211360344373020213 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: Attributes.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_ATTRIBUTES_HPP) #define XERCESC_INCLUDE_GUARD_ATTRIBUTES_HPP #include XERCES_CPP_NAMESPACE_BEGIN /** * Interface for an element's attribute specifications. * * The SAX2 parser implements this interface and passes an instance * to the SAX2 application as the last argument of each startElement * event. * * The instance provided will return valid results only during the * scope of the startElement invocation (to save it for future * use, the application must make a copy: the AttributesImpl * helper class provides a convenient constructor for doing so). * * An Attributes includes only attributes that have been * specified or defaulted: \#IMPLIED attributes will not be included. * * There are two ways for the SAX application to obtain information * from the Attributes. First, it can iterate through the entire * list: * * * public void startElement (String uri, String localpart, String qName, Attributes atts) {
    *  for (XMLSize_t i = 0; i < atts.getLength(); i++) {
    *   String Qname = atts.getQName(i);
    *   String URI = atts.getURI(i)
    *   String local = atts.GetLocalName(i)
    *   String type = atts.getType(i);
    *   String value = atts.getValue(i);
    *   [...]
    *  }
    * } *
    * * (Note that the result of getLength() will be zero if there * are no attributes.) * * As an alternative, the application can request the value or * type of specific attributes: * * * public void startElement (String uri, String localpart, String qName, Attributes atts) {
    *  String identifier = atts.getValue("id");
    *  String label = atts.getValue("label");
    *  [...]
    * } *
    * * The AttributesImpl helper class provides a convenience * implementation for use by parser or application writers. * * @see Sax2DocumentHandler#startElement * @see AttributesImpl#AttributesImpl */ class SAX2_EXPORT Attributes { public: // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- /** @name Constructors and Destructor */ //@{ /** Default constructor */ Attributes() { } /** Destructor */ virtual ~Attributes() { } //@} /** @name The virtual attribute list interface */ //@{ /** * Return the number of attributes in this list. * * The SAX parser may provide attributes in any * arbitrary order, regardless of the order in which they were * declared or specified. The number of attributes may be * zero. * * @return The number of attributes in the list. */ virtual XMLSize_t getLength() const = 0; /** * Return the namespace URI of an attribute in this list (by position). * * The QNames must be unique: the SAX parser shall not include the * same attribute twice. Attributes without values (those declared * \#IMPLIED without a value specified in the start tag) will be * omitted from the list. * * @param index The index of the attribute in the list (starting at 0). * @return The URI of the indexed attribute, or null * if the index is out of range. * @see #getLength */ virtual const XMLCh* getURI(const XMLSize_t index) const = 0; /** * Return the local name of an attribute in this list (by position). * * The QNames must be unique: the SAX parser shall not include the * same attribute twice. Attributes without values (those declared * \#IMPLIED without a value specified in the start tag) will be * omitted from the list. * * @param index The index of the attribute in the list (starting at 0). * @return The local name of the indexed attribute, or null * if the index is out of range. * @see #getLength */ virtual const XMLCh* getLocalName(const XMLSize_t index) const = 0; /** * Return the qName of an attribute in this list (by position). * * The QNames must be unique: the SAX parser shall not include the * same attribute twice. Attributes without values (those declared * \#IMPLIED without a value specified in the start tag) will be * omitted from the list. * * @param index The index of the attribute in the list (starting at 0). * @return The qName of the indexed attribute, or null * if the index is out of range. * @see #getLength */ virtual const XMLCh* getQName(const XMLSize_t index) const = 0; /** * Return the type of an attribute in the list (by position). * * The attribute type is one of the strings "CDATA", "ID", * "IDREF", "IDREFS", "NMTOKEN", "NMTOKENS", "ENTITY", "ENTITIES", * or "NOTATION" (always in upper case). * * If the parser has not read a declaration for the attribute, * or if the parser does not report attribute types, then it must * return the value "CDATA" as stated in the XML 1.0 Recommendation * (clause 3.3.3, "Attribute-Value Normalization"). * * For an enumerated attribute that is not a notation, the * parser will report the type as "NMTOKEN". * * @param index The index of the attribute in the list (starting at 0). * @return The attribute type as a string, or * null if the index is out of range. * @see #getLength * @see #getType */ virtual const XMLCh* getType(const XMLSize_t index) const = 0; /** * Return the value of an attribute in the list (by position). * * If the attribute value is a list of tokens (IDREFS, * ENTITIES, or NMTOKENS), the tokens will be concatenated * into a single string separated by whitespace. * * @param index The index of the attribute in the list (starting at 0). * @return The attribute value as a string, or * null if the index is out of range. * @see #getLength * @see #getValue */ virtual const XMLCh* getValue(const XMLSize_t index) const = 0; //////////////////////////////////////////////////////////////////// // Name-based query. //////////////////////////////////////////////////////////////////// /** * Look up the index of an attribute by Namespace name. Non-standard * extension. * * @param uri The Namespace URI, or the empty string if * the name has no Namespace URI. * @param localPart The attribute's local name. * @param index Reference to the variable where the index will be stored. * @return true if the attribute is found and false otherwise. */ virtual bool getIndex(const XMLCh* const uri, const XMLCh* const localPart, XMLSize_t& index) const = 0 ; /** * Look up the index of an attribute by Namespace name. * * @param uri The Namespace URI, or the empty string if * the name has no Namespace URI. * @param localPart The attribute's local name. * @return The index of the attribute, or -1 if it does not * appear in the list. */ virtual int getIndex(const XMLCh* const uri, const XMLCh* const localPart ) const = 0 ; /** * Look up the index of an attribute by XML 1.0 qualified name. * Non-standard extension. * * @param qName The qualified (prefixed) name. * @param index Reference to the variable where the index will be stored. * @return true if the attribute is found and false otherwise. */ virtual bool getIndex(const XMLCh* const qName, XMLSize_t& index) const = 0 ; /** * Look up the index of an attribute by XML 1.0 qualified name. * * @param qName The qualified (prefixed) name. * @return The index of the attribute, or -1 if it does not * appear in the list. */ virtual int getIndex(const XMLCh* const qName ) const = 0 ; /** * Look up an attribute's type by Namespace name. * *

    See #getType for a description of the possible types.

    * * @param uri The Namespace URI, or the empty String if the * name has no Namespace URI. * @param localPart The local name of the attribute. * @return The attribute type as a string, or null if the * attribute is not in the list or if Namespace * processing is not being performed. */ virtual const XMLCh* getType(const XMLCh* const uri, const XMLCh* const localPart ) const = 0 ; /** * Look up an attribute's type by XML 1.0 qualified name. * *

    See #getType for a description of the possible types.

    * * @param qName The XML 1.0 qualified name. * @return The attribute type as a string, or null if the * attribute is not in the list or if qualified names * are not available. */ virtual const XMLCh* getType(const XMLCh* const qName) const = 0; /** * Look up an attribute's value by Namespace name. * *

    See #getValue for a description of the possible values.

    * * @param uri The Namespace URI, or the empty String if the * name has no Namespace URI. * @param localPart The local name of the attribute. * @return The attribute value as a string, or null if the * attribute is not in the list. */ virtual const XMLCh* getValue(const XMLCh* const uri, const XMLCh* const localPart ) const = 0 ; /** * Look up an attribute's value by XML 1.0 qualified name. * *

    See #getValue for a description of the possible values.

    * * @param qName The XML 1.0 qualified name. * @return The attribute value as a string, or null if the * attribute is not in the list or if qualified names * are not available. */ virtual const XMLCh* getValue(const XMLCh* const qName) const = 0; //@} private : /* Constructors and operators */ /* Copy constructor */ Attributes(const Attributes&); /* Assignment operator */ Attributes& operator=(const Attributes&); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/sax2/SAX2XMLReader.hpp0000644000175000017500000010477511360344373020317 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SAX2XMLReader.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_SAX2XMLREADER_HPP) #define XERCESC_INCLUDE_GUARD_SAX2XMLREADER_HPP #include #include #include #include #include XERCES_CPP_NAMESPACE_BEGIN class ContentHandler ; class DTDHandler; class EntityResolver; class ErrorHandler; class InputSource; class LexicalHandler; class DeclHandler; class XMLDocumentHandler; class SAX2_EXPORT SAX2XMLReader { public: // ----------------------------------------------------------------------- // Class types // ----------------------------------------------------------------------- /** @name Public constants */ //@{ /** ValScheme enum used in setValidationScheme * Val_Never: Do not report validation errors. * Val_Always: The parser will always report validation errors. * Val_Auto: The parser will report validation errors only if a grammar is specified. * * The schemes map to these feature values: * Val_Never: * parser->setFeature(XMLUni::fgSAX2CoreValidation, false); * * Val_Always: * parser->setFeature(XMLUni::fgSAX2CoreValidation, true); * parser->setFeature(XMLUni::fgXercesDynamic, false); * * Val_Auto: * parser->setFeature(XMLUni::fgSAX2CoreValidation, true); * parser->setFeature(XMLUni::fgXercesDynamic, true); * * @see #setFeature */ enum ValSchemes { Val_Never , Val_Always , Val_Auto }; //@} // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- /** @name Constructors and Destructor */ //@{ /** The default constructor */ SAX2XMLReader() { } /** The destructor */ virtual ~SAX2XMLReader() { } //@} //----------------------------------------------------------------------- // The XMLReader interface //----------------------------------------------------------------------- /** @name Implementation of SAX 2.0 XMLReader interface's. */ //@{ /** * This method returns the installed content handler. * * @return A pointer to the installed content handler object. */ virtual ContentHandler* getContentHandler() const = 0 ; /** * This method returns the installed DTD handler. * * @return A pointer to the installed DTD handler object. */ virtual DTDHandler* getDTDHandler() const = 0; /** * This method returns the installed entity resolver. * * @return A pointer to the installed entity resolver object. */ virtual EntityResolver* getEntityResolver() const = 0 ; /** * This method returns the installed error handler. * * @return A pointer to the installed error handler object. */ virtual ErrorHandler* getErrorHandler() const = 0 ; /** * Query the current state of any feature in a SAX2 XMLReader. * * @param name The unique identifier (URI) of the feature being set. * @return The current state of the feature. * @exception SAXNotRecognizedException If the requested feature is not known. */ virtual bool getFeature(const XMLCh* const name) const = 0; /** * Query the current value of a property in a SAX2 XMLReader. * * The parser owns the returned pointer. The memory allocated for * the returned pointer will be destroyed when the parser is deleted. * * To ensure accessibility of the returned information after the parser * is deleted, callers need to copy and store the returned information * somewhere else; otherwise you may get unexpected result. Since the returned * pointer is a generic void pointer, see the SAX2 Programming Guide to learn * exactly what type of property value each property returns for replication. * * @param name The unique identifier (URI) of the property being set. * @return The current value of the property. The pointer spans the same * life-time as the parser. A null pointer is returned if nothing * was specified externally. * @exception SAXNotRecognizedException If the requested property is not known. */ virtual void* getProperty(const XMLCh* const name) const = 0 ; /** * Allow an application to register a document event handler. * * If the application does not register a document handler, all * document events reported by the SAX parser will be silently * ignored (this is the default behaviour implemented by * HandlerBase). * * Applications may register a new or different handler in the * middle of a parse, and the SAX parser must begin using the new * handler immediately. * * @param handler The document handler. * @see ContentHandler#ContentHandler * @see HandlerBase#HandlerBase */ virtual void setContentHandler(ContentHandler* const handler) = 0; /** * Allow an application to register a DTD event handler. * * If the application does not register a DTD handler, all DTD * events reported by the SAX parser will be silently ignored (this * is the default behaviour implemented by HandlerBase). * * Applications may register a new or different handler in the middle * of a parse, and the SAX parser must begin using the new handler * immediately. * * @param handler The DTD handler. * @see DTDHandler#DTDHandler * @see HandlerBase#HandlerBase */ virtual void setDTDHandler(DTDHandler* const handler) = 0; /** * Allow an application to register a custom entity resolver. * * If the application does not register an entity resolver, the * SAX parser will resolve system identifiers and open connections * to entities itself (this is the default behaviour implemented in * DefaultHandler). * * Applications may register a new or different entity resolver * in the middle of a parse, and the SAX parser must begin using * the new resolver immediately. * * @param resolver The object for resolving entities. * @see EntityResolver#EntityResolver * @see DefaultHandler#DefaultHandler */ virtual void setEntityResolver(EntityResolver* const resolver) = 0; /** * Allow an application to register an error event handler. * * If the application does not register an error event handler, * all error events reported by the SAX parser will be silently * ignored, except for fatalError, which will throw a SAXException * (this is the default behaviour implemented by HandlerBase). * * Applications may register a new or different handler in the * middle of a parse, and the SAX parser must begin using the new * handler immediately. * * @param handler The error handler. * @see ErrorHandler#ErrorHandler * @see SAXException#SAXException * @see HandlerBase#HandlerBase */ virtual void setErrorHandler(ErrorHandler* const handler) = 0; /** * Set the state of any feature in a SAX2 XMLReader. * Supported features in SAX2 for xerces-c are: *
    (See the SAX2 Programming Guide for detail description). * *
    http://xml.org/sax/features/validation (default: true) *
    http://xml.org/sax/features/namespaces (default: true) *
    http://xml.org/sax/features/namespace-prefixes (default: false) *
    http://apache.org/xml/features/validation/dynamic (default: false) *
    http://apache.org/xml/features/validation/reuse-grammar (default: false) *
    http://apache.org/xml/features/validation/schema (default: true) *
    http://apache.org/xml/features/validation/schema-full-checking (default: false) *
    http://apache.org/xml/features/validating/load-schema (default: true) *
    http://apache.org/xml/features/nonvalidating/load-external-dtd (default: true) *
    http://apache.org/xml/features/continue-after-fatal-error (default: false) *
    http://apache.org/xml/features/validation-error-as-fatal (default: false) * * @param name The unique identifier (URI) of the feature. * @param value The requested state of the feature (true or false). * @exception SAXNotRecognizedException If the requested feature is not known. * @exception SAXNotSupportedException Feature modification is not supported during parse * */ virtual void setFeature(const XMLCh* const name, const bool value) = 0; /** * Set the value of any property in a SAX2 XMLReader. * Supported properties in SAX2 for xerces-c are: *
    (See the SAX2 Programming Guide for detail description). * *
    http://apache.org/xml/properties/schema/external-schemaLocation *
    http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation. * * It takes a void pointer as the property value. Application is required to initialize this void * pointer to a correct type. See the SAX2 Programming Guide * to learn exactly what type of property value each property expects for processing. * Passing a void pointer that was initialized with a wrong type will lead to unexpected result. * If the same property is set more than once, the last one takes effect. * * @param name The unique identifier (URI) of the property being set. * @param value The requested value for the property. See * the SAX2 Programming Guide to learn * exactly what type of property value each property expects for processing. * Passing a void pointer that was initialized with a wrong type will lead * to unexpected result. * @exception SAXNotRecognizedException If the requested property is not known. * @exception SAXNotSupportedException Property modification is not supported during parse */ virtual void setProperty(const XMLCh* const name, void* value) = 0 ; /** * Parse an XML document. * * The application can use this method to instruct the SAX parser * to begin parsing an XML document from any valid input * source (a character stream, a byte stream, or a URI). * * Applications may not invoke this method while a parse is in * progress (they should create a new Parser instead for each * additional XML document). Once a parse is complete, an * application may reuse the same Parser object, possibly with a * different input source. * * @param source The input source for the top-level of the * XML document. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception XMLException An exception from the parser or client * handler code. * @see InputSource#InputSource * @see #setEntityResolver * @see #setDTDHandler * @see #setContentHandler * @see #setErrorHandler */ virtual void parse ( const InputSource& source ) = 0; /** * Parse an XML document from a system identifier (URI). * * This method is a shortcut for the common case of reading a * document from a system identifier. It is the exact equivalent * of the following: * * parse(new URLInputSource(systemId)); * * If the system identifier is a URL, it must be fully resolved * by the application before it is passed to the parser. * * @param systemId The system identifier (URI). * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception XMLException An exception from the parser or client * handler code. * @see #parse(const InputSource&) */ virtual void parse ( const XMLCh* const systemId ) = 0; /** * Parse an XML document from a system identifier (URI). * * This method is a shortcut for the common case of reading a * document from a system identifier. It is the exact equivalent * of the following: * * parse(new URLInputSource(systemId)); * * If the system identifier is a URL, it must be fully resolved * by the application before it is passed to the parser. * * @param systemId The system identifier (URI). * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception XMLException An exception from the parser or client * handler code. * @see #parse(const InputSource&) */ virtual void parse ( const char* const systemId ) = 0; //@} // ----------------------------------------------------------------------- // SAX 2.0-ext // ----------------------------------------------------------------------- /** @name SAX 2.0-ext */ //@{ /** * This method returns the installed declaration handler. * * @return A pointer to the installed declaration handler object. */ virtual DeclHandler* getDeclarationHandler() const = 0 ; /** * This method returns the installed lexical handler. * * @return A pointer to the installed lexical handler object. */ virtual LexicalHandler* getLexicalHandler() const = 0 ; /** * Allow an application to register a declaration event handler. * * If the application does not register a declaration handler, * all events reported by the SAX parser will be silently * ignored. (this is the default behaviour implemented by DefaultHandler). * * Applications may register a new or different handler in the * middle of a parse, and the SAX parser must begin using the new * handler immediately. * * @param handler The DTD declaration handler. * @see DeclHandler#DeclHandler * @see SAXException#SAXException * @see DefaultHandler#DefaultHandler */ virtual void setDeclarationHandler(DeclHandler* const handler) = 0; /** * Allow an application to register a lexical event handler. * * If the application does not register a lexical handler, * all events reported by the SAX parser will be silently * ignored. (this is the default behaviour implemented by HandlerBase). * * Applications may register a new or different handler in the * middle of a parse, and the SAX parser must begin using the new * handler immediately. * * @param handler The error handler. * @see LexicalHandler#LexicalHandler * @see SAXException#SAXException * @see HandlerBase#HandlerBase */ virtual void setLexicalHandler(LexicalHandler* const handler) = 0; //@} // ----------------------------------------------------------------------- // Getter Methods // ----------------------------------------------------------------------- /** @name Getter Methods (Xerces-C specific) */ //@{ /** * This method is used to get the current validator. * * SAX2XMLReader assumes responsibility for the validator. It will be * deleted when the XMLReader is destroyed. * * @return A pointer to the validator. An application should not deleted * the object returned. * */ virtual XMLValidator* getValidator() const = 0; /** Get error count from the last parse operation. * * This method returns the error count from the last parse * operation. Note that this count is actually stored in the * scanner, so this method simply returns what the * scanner reports. * * @return number of errors encountered during the latest * parse operation. */ virtual XMLSize_t getErrorCount() const = 0 ; /** * This method returns the state of the parser's * exit-on-First-Fatal-Error flag. * *

    Or you can query the feature "http://apache.org/xml/features/continue-after-fatal-error" * which indicates the opposite state.

    * * @return true, if the parser is currently configured to * exit on the first fatal error, false otherwise. * * @see #setExitOnFirstFatalError * @see #getFeature */ virtual bool getExitOnFirstFatalError() const = 0; /** * This method returns the state of the parser's * validation-constraint-fatal flag. * *

    Or you can query the feature "http://apache.org/xml/features/validation-error-as-fatal" * which means the same thing. * * @return true, if the parser is currently configured to * set validation constraint errors as fatal, false * otherwise. * * @see #setValidationConstraintFatal * @see #getFeature */ virtual bool getValidationConstraintFatal() const = 0; /** * Retrieve the grammar that is associated with the specified namespace key * * @param nameSpaceKey Namespace key * @return Grammar associated with the Namespace key. */ virtual Grammar* getGrammar(const XMLCh* const nameSpaceKey) = 0; /** * Retrieve the grammar where the root element is declared. * * @return Grammar where root element declared */ virtual Grammar* getRootGrammar() = 0; /** * Returns the string corresponding to a URI id from the URI string pool. * * @param uriId id of the string in the URI string pool. * @return URI string corresponding to the URI id. */ virtual const XMLCh* getURIText(unsigned int uriId) const = 0; /** * Returns the current src offset within the input source. * To be used only while parsing is in progress. * * @return offset within the input source */ virtual XMLFilePos getSrcOffset() const = 0; //@} // ----------------------------------------------------------------------- // Setter Methods // ----------------------------------------------------------------------- /** @name Setter Methods (Xerces-C specific) */ //@{ /** * This method is used to set a validator. * * SAX2XMLReader assumes responsibility for the validator. It will be * deleted when the XMLReader is destroyed. * * @param valueToAdopt A pointer to the validator that the reader should use. * */ virtual void setValidator(XMLValidator* valueToAdopt) = 0; /** * This method allows users to set the parser's behaviour when it * encounters the first fatal error. If set to true, the parser * will exit at the first fatal error. If false, then it will * report the error and continue processing. * *

    The default value is 'true' and the parser exits on the * first fatal error.

    * *

    Or you can set the feature "http://apache.org/xml/features/continue-after-fatal-error" * which has the opposite behaviour.

    * *

    If both the feature above and this function are used, the latter takes effect.

    * * @param newState The value specifying whether the parser should * continue or exit when it encounters the first * fatal error. * * @see #getExitOnFirstFatalError * @see #setFeature */ virtual void setExitOnFirstFatalError(const bool newState) = 0; /** * This method allows users to set the parser's behaviour when it * encounters a validation constraint error. If set to true, and the * the parser will treat validation error as fatal and will exit depends on the * state of "getExitOnFirstFatalError". If false, then it will * report the error and continue processing. * * Note: setting this true does not mean the validation error will be printed with * the word "Fatal Error". It is still printed as "Error", but the parser * will exit if "setExitOnFirstFatalError" is set to true. * *

    The default value is 'false'.

    * *

    Or you can set the feature "http://apache.org/xml/features/validation-error-as-fatal" * which means the same thing.

    * *

    If both the feature above and this function are used, the latter takes effect.

    * * @param newState If true, the parser will exit if "setExitOnFirstFatalError" * is set to true. * * @see #getValidationConstraintFatal * @see #setExitOnFirstFatalError * @see #setFeature */ virtual void setValidationConstraintFatal(const bool newState) = 0; //@} // ----------------------------------------------------------------------- // Progressive scan methods // ----------------------------------------------------------------------- /** @name Progressive scan methods */ //@{ /** Begin a progressive parse operation * * This method is used to start a progressive parse on a XML file. * To continue parsing, subsequent calls must be to the parseNext * method. * * It scans through the prolog and returns a token to be used on * subsequent scanNext() calls. If the return value is true, then the * token is legal and ready for further use. If it returns false, then * the scan of the prolog failed and the token is not going to work on * subsequent scanNext() calls. * * @param systemId A pointer to a Unicode string representing the path * to the XML file to be parsed. * @param toFill A token maintaing state information to maintain * internal consistency between invocation of 'parseNext' * calls. * * @return 'true', if successful in parsing the prolog. It indicates the * user can go ahead with parsing the rest of the file. It * returns 'false' to indicate that the parser could parse the * prolog (which means the token will not be valid.) * * @see #parseNext * @see #parseFirst(char*,...) * @see #parseFirst(InputSource&,...) */ virtual bool parseFirst ( const XMLCh* const systemId , XMLPScanToken& toFill ) = 0; /** Begin a progressive parse operation * * This method is used to start a progressive parse on a XML file. * To continue parsing, subsequent calls must be to the parseNext * method. * * It scans through the prolog and returns a token to be used on * subsequent scanNext() calls. If the return value is true, then the * token is legal and ready for further use. If it returns false, then * the scan of the prolog failed and the token is not going to work on * subsequent scanNext() calls. * * @param systemId A pointer to a regular native string representing * the path to the XML file to be parsed. * @param toFill A token maintaing state information to maintain * internal consistency between invocation of 'parseNext' * calls. * * @return 'true', if successful in parsing the prolog. It indicates the * user can go ahead with parsing the rest of the file. It * returns 'false' to indicate that the parser could not parse * the prolog. * * @see #parseNext * @see #parseFirst(XMLCh*,...) * @see #parseFirst(InputSource&,...) */ virtual bool parseFirst ( const char* const systemId , XMLPScanToken& toFill ) = 0; /** Begin a progressive parse operation * * This method is used to start a progressive parse on a XML file. * To continue parsing, subsequent calls must be to the parseNext * method. * * It scans through the prolog and returns a token to be used on * subsequent scanNext() calls. If the return value is true, then the * token is legal and ready for further use. If it returns false, then * the scan of the prolog failed and the token is not going to work on * subsequent scanNext() calls. * * @param source A const reference to the InputSource object which * points to the XML file to be parsed. * @param toFill A token maintaing state information to maintain * internal consistency between invocation of 'parseNext' * calls. * * @return 'true', if successful in parsing the prolog. It indicates the * user can go ahead with parsing the rest of the file. It * returns 'false' to indicate that the parser could not parse * the prolog. * * @see #parseNext * @see #parseFirst(XMLCh*,...) * @see #parseFirst(char*,...) */ virtual bool parseFirst ( const InputSource& source , XMLPScanToken& toFill ) = 0; /** Continue a progressive parse operation * * This method is used to continue with progressive parsing of * XML files started by a call to 'parseFirst' method. * * It parses the XML file and stops as soon as it comes across * a XML token (as defined in the XML specification). Relevant * callback handlers are invoked as required by the SAX * specification. * * @param token A token maintaing state information to maintain * internal consistency between invocation of 'parseNext' * calls. * * @return 'true', if successful in parsing the next XML token. * It indicates the user can go ahead with parsing the rest * of the file. It returns 'false' to indicate that the parser * could not find next token as per the XML specification * production rule. * * @see #parseFirst(XMLCh*,...) * @see #parseFirst(char*,...) * @see #parseFirst(InputSource&,...) */ virtual bool parseNext(XMLPScanToken& token) = 0; /** Reset the parser after a progressive parse * * If a progressive parse loop exits before the end of the document * is reached, the parser has no way of knowing this. So it will leave * open any files or sockets or memory buffers that were in use at * the time that the parse loop exited. * * The next parse operation will cause these open files and such to * be closed, but the next parse operation might occur at some unknown * future point. To avoid this problem, you should reset the parser if * you exit the loop early. * * If you exited because of an error, then this cleanup will be done * for you. Its only when you exit the file prematurely of your own * accord, because you've found what you wanted in the file most * likely. * * @param token A token maintaing state information to maintain * internal consistency between invocation of 'parseNext' * calls. */ virtual void parseReset(XMLPScanToken& token) = 0; //@} // ----------------------------------------------------------------------- // Grammar preparsing interface // ----------------------------------------------------------------------- /** @name Grammar preparsing interface's. */ //@{ /** * Preparse schema grammar (XML Schema, DTD, etc.) via an input source * object. * * This method invokes the preparsing process on a schema grammar XML * file specified by the SAX InputSource parameter. If the 'toCache' flag * is enabled, the parser will cache the grammars for re-use. If a grammar * key is found in the pool, no caching of any grammar will take place. * * * @param source A const reference to the SAX InputSource object which * points to the schema grammar file to be preparsed. * @param grammarType The grammar type (Schema or DTD). * @param toCache If true, we cache the preparsed grammar, * otherwise, no caching. Default is false. * @return The preparsed schema grammar object (SchemaGrammar or * DTDGrammar). That grammar object is owned by the parser. * * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception XMLException An exception from the parser or client * handler code. * @exception DOMException A DOM exception as per DOM spec. * * @see InputSource#InputSource */ virtual Grammar* loadGrammar(const InputSource& source, const Grammar::GrammarType grammarType, const bool toCache = false) = 0; /** * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL * * This method invokes the preparsing process on a schema grammar XML * file specified by the file path parameter. If the 'toCache' flag * is enabled, the parser will cache the grammars for re-use. If a grammar * key is found in the pool, no caching of any grammar will take place. * * * @param systemId A const XMLCh pointer to the Unicode string which * contains the path to the XML grammar file to be * preparsed. * @param grammarType The grammar type (Schema or DTD). * @param toCache If true, we cache the preparsed grammar, * otherwise, no caching. Default is false. * @return The preparsed schema grammar object (SchemaGrammar or * DTDGrammar). That grammar object is owned by the parser. * * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception XMLException An exception from the parser or client * handler code. * @exception DOMException A DOM exception as per DOM spec. */ virtual Grammar* loadGrammar(const XMLCh* const systemId, const Grammar::GrammarType grammarType, const bool toCache = false) = 0; /** * Preparse schema grammar (XML Schema, DTD, etc.) via a file path or URL * * This method invokes the preparsing process on a schema grammar XML * file specified by the file path parameter. If the 'toCache' flag * is enabled, the parser will cache the grammars for re-use. If a grammar * key is found in the pool, no caching of any grammar will take place. * * * @param systemId A const char pointer to a native string which contains * the path to the XML grammar file to be preparsed. * @param grammarType The grammar type (Schema or DTD). * @param toCache If true, we cache the preparsed grammar, * otherwise, no caching. Default is false. * @return The preparsed schema grammar object (SchemaGrammar or * DTDGrammar). That grammar object is owned by the parser. * * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @exception XMLException An exception from the parser or client * handler code. * @exception DOMException A DOM exception as per DOM spec. */ virtual Grammar* loadGrammar(const char* const systemId, const Grammar::GrammarType grammarType, const bool toCache = false) = 0; /** * Clear the cached grammar pool */ virtual void resetCachedGrammarPool() = 0; /** Set maximum input buffer size * * This method allows users to limit the size of buffers used in parsing * XML character data. The effect of setting this size is to limit the * size of a ContentHandler::characters() call. * * The parser's default input buffer size is 1 megabyte. * * @param bufferSize The maximum input buffer size */ virtual void setInputBufferSize(const XMLSize_t bufferSize); //@} // ----------------------------------------------------------------------- // Advanced document handler list maintenance methods // ----------------------------------------------------------------------- /** @name Advanced document handler list maintenance methods */ //@{ /** * This method installs the specified 'advanced' document callback * handler, thereby allowing the user to customize the processing, * if they choose to do so. Any number of advanced callback handlers * maybe installed. * *

    The methods in the advanced callback interface represent * Xerces-C extensions. There is no specification for this interface.

    * * @param toInstall A pointer to the users advanced callback handler. * * @see #removeAdvDocHandler */ virtual void installAdvDocHandler(XMLDocumentHandler* const toInstall) = 0; /** * This method removes the 'advanced' document handler callback from * the underlying parser scanner. If no handler is installed, advanced * callbacks are not invoked by the scanner. * @param toRemove A pointer to the advanced callback handler which * should be removed. * * @see #installAdvDocHandler */ virtual bool removeAdvDocHandler(XMLDocumentHandler* const toRemove) = 0; //@} private : /* The copy constructor, you cannot call this directly */ SAX2XMLReader(const SAX2XMLReader&); /* The assignment operator, you cannot call this directly */ SAX2XMLReader& operator=(const SAX2XMLReader&); }; inline void SAX2XMLReader::setInputBufferSize(const XMLSize_t /*bufferSize*/) { } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/sax2/ContentHandler.hpp0000644000175000017500000003004411360344373020771 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: ContentHandler.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_CONTENTHANDLER_HPP) #define XERCESC_INCLUDE_GUARD_CONTENTHANDLER_HPP #include XERCES_CPP_NAMESPACE_BEGIN class Attributes; class Locator; /** * Receive notification of general document events. * *

    This is the main interface that most SAX2 applications * implement: if the application needs to be informed of basic parsing * events, it implements this interface and registers an instance with * the SAX2 parser using the setDocumentHandler method. The parser * uses the instance to report basic document-related events like * the start and end of elements and character data.

    * *

    The order of events in this interface is very important, and * mirrors the order of information in the document itself. For * example, all of an element's content (character data, processing * instructions, and/or subelements) will appear, in order, between * the startElement event and the corresponding endElement event.

    * *

    Application writers who do not want to implement the entire * interface while can derive a class from Sax2HandlerBase, which implements * the default functionality; parser writers can instantiate * Sax2HandlerBase to obtain a default handler. The application can find * the location of any document event using the Locator interface * supplied by the Parser through the setDocumentLocator method.

    * * @see Parser#setDocumentHandler * @see Locator#Locator * @see Sax2HandlerBase#Sax2HandlerBase */ class SAX2_EXPORT ContentHandler { public: /** @name Constructors and Destructor */ //@{ /** Default constructor */ ContentHandler() { } /** Destructor */ virtual ~ContentHandler() { } //@} /** @name The virtual document handler interface */ //@{ /** * Receive notification of character data. * *

    The Parser will call this method to report each chunk of * character data. SAX parsers may return all contiguous character * data in a single chunk, or they may split it into several * chunks; however, all of the characters in any single event * must come from the same external entity, so that the Locator * provides useful information.

    * *

    The application must not attempt to read from the array * outside of the specified range.

    * *

    Note that some parsers will report whitespace using the * ignorableWhitespace() method rather than this one (validating * parsers must do so).

    * * @param chars The characters from the XML document. * @param length The number of characters to read from the array. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see #ignorableWhitespace * @see Locator#Locator */ virtual void characters ( const XMLCh* const chars , const XMLSize_t length ) = 0; /** * Receive notification of the end of a document. * *

    The SAX parser will invoke this method only once, and it will * be the last method invoked during the parse. The parser shall * not invoke this method until it has either abandoned parsing * (because of an unrecoverable error) or reached the end of * input.

    * * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void endDocument () = 0; /** * Receive notification of the end of an element. * *

    The SAX parser will invoke this method at the end of every * element in the XML document; there will be a corresponding * startElement() event for every endElement() event (even when the * element is empty).

    * * @param uri The URI of the associated namespace for this element * @param localname The local part of the element name * @param qname The QName of this element * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void endElement ( const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname ) = 0; /** * Receive notification of ignorable whitespace in element content. * *

    Validating Parsers must use this method to report each chunk * of ignorable whitespace (see the W3C XML 1.0 recommendation, * section 2.10): non-validating parsers may also use this method * if they are capable of parsing and using content models.

    * *

    SAX parsers may return all contiguous whitespace in a single * chunk, or they may split it into several chunks; however, all of * the characters in any single event must come from the same * external entity, so that the Locator provides useful * information.

    * *

    The application must not attempt to read from the array * outside of the specified range.

    * * @param chars The characters from the XML document. * @param length The number of characters to read from the array. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see #characters */ virtual void ignorableWhitespace ( const XMLCh* const chars , const XMLSize_t length ) = 0; /** * Receive notification of a processing instruction. * *

    The Parser will invoke this method once for each processing * instruction found: note that processing instructions may occur * before or after the main document element.

    * *

    A SAX parser should never report an XML declaration (XML 1.0, * section 2.8) or a text declaration (XML 1.0, section 4.3.1) * using this method.

    * * @param target The processing instruction target. * @param data The processing instruction data, or null if * none was supplied. * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void processingInstruction ( const XMLCh* const target , const XMLCh* const data ) = 0; /** * Receive an object for locating the origin of SAX document events. * * SAX parsers are strongly encouraged (though not absolutely * required) to supply a locator: if it does so, it must supply * the locator to the application by invoking this method before * invoking any of the other methods in the DocumentHandler * interface. * * The locator allows the application to determine the end * position of any document-related event, even if the parser is * not reporting an error. Typically, the application will * use this information for reporting its own errors (such as * character content that does not match an application's * business rules). The information returned by the locator * is probably not sufficient for use with a search engine. * * Note that the locator will return correct information only * during the invocation of the events in this interface. The * application should not attempt to use it at any other time. * * @param locator An object that can return the location of * any SAX document event. The object is only * 'on loan' to the client code and they are not * to attempt to delete or modify it in any way! * * @see Locator#Locator */ virtual void setDocumentLocator(const Locator* const locator) = 0; /** * Receive notification of the beginning of a document. * *

    The SAX parser will invoke this method only once, before any * other methods in this interface or in DTDHandler (except for * setDocumentLocator).

    * * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void startDocument() = 0; /** * Receive notification of the beginning of an element. * *

    The Parser will invoke this method at the beginning of every * element in the XML document; there will be a corresponding * endElement() event for every startElement() event (even when the * element is empty). All of the element's content will be * reported, in order, before the corresponding endElement() * event.

    * *

    Note that the attribute list provided will * contain only attributes with explicit values (specified or * defaulted): \#IMPLIED attributes will be omitted.

    * * @param uri The URI of the associated namespace for this element * @param localname The local part of the element name * @param qname The QName of this element * @param attrs The attributes attached to the element, if any. * @exception SAXException Any SAX exception, possibly * wrapping another exception. * @see #endElement * @see Attributes#Attributes */ virtual void startElement ( const XMLCh* const uri, const XMLCh* const localname, const XMLCh* const qname, const Attributes& attrs ) = 0; /** * Receive notification of the start of an namespace prefix mapping. * *

    By default, do nothing. Application writers may override this * method in a subclass to take specific actions at the start of * each namespace prefix mapping.

    * * @param prefix The namespace prefix used * @param uri The namespace URI used. * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void startPrefixMapping ( const XMLCh* const prefix, const XMLCh* const uri ) = 0 ; /** * Receive notification of the end of an namespace prefix mapping. * *

    By default, do nothing. Application writers may override this * method in a subclass to take specific actions at the end of * each namespace prefix mapping.

    * * @param prefix The namespace prefix used * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void endPrefixMapping ( const XMLCh* const prefix ) = 0 ; /** * Receive notification of a skipped entity * *

    The parser will invoke this method once for each entity * skipped. All processors may skip external entities, * depending on the values of the features:
    * http://xml.org/sax/features/external-general-entities
    * http://xml.org/sax/features/external-parameter-entities

    * *

    Note: Xerces (specifically) never skips any entities, regardless * of the above features. This function is never called in the * Xerces implementation of SAX2.

    * *

    Introduced with SAX2

    * * @param name The name of the skipped entity. If it is a parameter entity, * the name will begin with %, and if it is the external DTD subset, * it will be the string [dtd]. * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void skippedEntity ( const XMLCh* const name ) = 0 ; //@} private : /* Unimplemented Constructors and operators */ /* Copy constructor */ ContentHandler(const ContentHandler&); /** Assignment operator */ ContentHandler& operator=(const ContentHandler&); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/sax2/XMLReaderFactory.hpp0000644000175000017500000000457311360344373021204 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: XMLReaderFactory.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_XMLREADERFACTORY_HPP) #define XERCESC_INCLUDE_GUARD_XMLREADERFACTORY_HPP #include #include XERCES_CPP_NAMESPACE_BEGIN class MemoryManager; class XMLGrammarPool; /** * Creates a SAX2 parser (SAX2XMLReader). * *

    Note: The parser object returned by XMLReaderFactory is owned by the * calling users, and it's the responsibility of the users to delete that * parser object, once they no longer need it.

    * * @see SAX2XMLReader#SAX2XMLReader */ class SAX2_EXPORT XMLReaderFactory { protected: // really should be private, but that causes compiler warnings. XMLReaderFactory() ; ~XMLReaderFactory() ; public: static SAX2XMLReader * createXMLReader( MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager , XMLGrammarPool* const gramPool = 0 ) ; static SAX2XMLReader * createXMLReader(const XMLCh* className) ; private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XMLReaderFactory(const XMLReaderFactory&); XMLReaderFactory& operator=(const XMLReaderFactory&); }; inline SAX2XMLReader * XMLReaderFactory::createXMLReader(const XMLCh *) { throw SAXNotSupportedException(); // unimplemented return 0; } XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/sax2/SAX2XMLFilter.hpp0000644000175000017500000000502110606722647020330 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: SAX2XMLFilter.hpp 527149 2007-04-10 14:56:39Z amassari $ */ #if !defined(XERCESC_INCLUDE_GUARD_SAX2XMLFILTER_HPP) #define XERCESC_INCLUDE_GUARD_SAX2XMLFILTER_HPP #include XERCES_CPP_NAMESPACE_BEGIN class SAX2_EXPORT SAX2XMLFilter : public SAX2XMLReader { public: // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- /** @name Constructors and Destructor */ //@{ /** The default constructor */ SAX2XMLFilter() { } /** The destructor */ virtual ~SAX2XMLFilter() { } //@} //----------------------------------------------------------------------- // The XMLFilter interface //----------------------------------------------------------------------- /** @name Implementation of SAX 2.0 XMLFilter interface's. */ //@{ /** * This method returns the parent XMLReader object. * * @return A pointer to the parent XMLReader object. */ virtual SAX2XMLReader* getParent() const = 0 ; /** * Sets the parent XMLReader object; parse requests will be forwarded to this * object, and callback notifications coming from it will be postprocessed * * @param parent The new XMLReader parent. * @see SAX2XMLReader#SAX2XMLReader */ virtual void setParent(SAX2XMLReader* parent) = 0; //@} private : /* The copy constructor, you cannot call this directly */ SAX2XMLFilter(const SAX2XMLFilter&); /* The assignment operator, you cannot call this directly */ SAX2XMLFilter& operator=(const SAX2XMLFilter&); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/sax2/DeclHandler.hpp0000644000175000017500000001273011360344373020230 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: DeclHandler.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_DECLHANDLER_HPP) #define XERCESC_INCLUDE_GUARD_DECLHANDLER_HPP #include XERCES_CPP_NAMESPACE_BEGIN /** * Receive notification of DTD declaration events. * *

    This is an optional extension handler for SAX2 to provide more * complete information about DTD declarations in an XML document. * XML readers are not required to recognize this handler, and it is not * part of core-only SAX2 distributions.

    * *

    Note that data-related DTD declarations (unparsed entities and * notations) are already reported through the DTDHandler interface.

    * *

    If you are using the declaration handler together with a lexical * handler, all of the events will occur between the startDTD and the endDTD * events.

    * * @see SAX2XMLReader#setLexicalHandler * @see SAX2XMLReader#setDeclarationHandler */ class SAX2_EXPORT DeclHandler { public: /** @name Constructors and Destructor */ //@{ /** Default constructor */ DeclHandler() { } /** Destructor */ virtual ~DeclHandler() { } //@} /** @name The virtual declaration handler interface */ //@{ /** * Report an element type declaration. * *

    The content model will consist of the string "EMPTY", the string * "ANY", or a parenthesised group, optionally followed by an occurrence * indicator. The model will be normalized so that all parameter entities * are fully resolved and all whitespace is removed,and will include the * enclosing parentheses. Other normalization (such as removing redundant * parentheses or simplifying occurrence indicators) is at the discretion * of the parser.

    * * @param name The element type name. * @param model The content model as a normalized string. * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void elementDecl ( const XMLCh* const name , const XMLCh* const model ) = 0; /** * Report an attribute type declaration. * *

    The Parser will call this method to report each occurrence of * a comment in the XML document.

    * *

    The application must not attempt to read from the array * outside of the specified range.

    * * @param eName The name of the associated element. * @param aName The name of the attribute. * @param type A string representing the attribute type. * @param mode A string representing the attribute defaulting mode ("#IMPLIED", "#REQUIRED", or "#FIXED") or null if none of these applies. * @param value A string representing the attribute's default value, or null if there is none. * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void attributeDecl ( const XMLCh* const eName , const XMLCh* const aName , const XMLCh* const type , const XMLCh* const mode , const XMLCh* const value ) = 0; /** * Report an internal entity declaration. * *

    Only the effective (first) declaration for each entity will be * reported. All parameter entities in the value will be expanded, but * general entities will not.

    * * @param name The name of the entity. If it is a parameter entity, the name will begin with '%'. * @param value The replacement text of the entity. * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void internalEntityDecl ( const XMLCh* const name , const XMLCh* const value ) = 0; /** * Report a parsed external entity declaration. * *

    Only the effective (first) declaration for each entity will * be reported.

    * * @param name The name of the entity. If it is a parameter entity, the name will begin with '%'. * @param publicId The The declared public identifier of the entity, or null if none was declared. * @param systemId The declared system identifier of the entity. * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void externalEntityDecl ( const XMLCh* const name , const XMLCh* const publicId , const XMLCh* const systemId ) = 0; //@} private : /* Unimplemented Constructors and operators */ /* Copy constructor */ DeclHandler(const DeclHandler&); /** Assignment operator */ DeclHandler& operator=(const DeclHandler&); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/xercesc/sax2/LexicalHandler.hpp0000644000175000017500000001226311360344373020743 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: LexicalHandler.hpp 932887 2010-04-11 13:04:59Z borisk $ */ #if !defined(XERCESC_INCLUDE_GUARD_LEXICALHANDLER_HPP) #define XERCESC_INCLUDE_GUARD_LEXICALHANDLER_HPP #include XERCES_CPP_NAMESPACE_BEGIN /** * Receive notification of lexical events. * *

    This is an extension handler for that provides lexical information * about an XML document. It does not provide information about document * content. For those events, an application must register an instance of * a ContentHandler.

    * *

    The order of events in this interface is very important, and * mirrors the order of information in the document itself. For * example, startDTD() and endDTD() events will occur before the * first element in the document.

    * * @see SAX2XMLReader#setLexicalHandler * @see SAX2XMLReader#setContentHandler */ class SAX2_EXPORT LexicalHandler { public: /** @name Constructors and Destructor */ //@{ /** Default constructor */ LexicalHandler() { } /** Destructor */ virtual ~LexicalHandler() { } //@} /** @name The virtual document handler interface */ //@{ /** * Receive notification of comments. * *

    The Parser will call this method to report each occurrence of * a comment in the XML document.

    * *

    The application must not attempt to read from the array * outside of the specified range.

    * * @param chars The characters from the XML document. * @param length The number of characters to read from the array. * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void comment ( const XMLCh* const chars , const XMLSize_t length ) = 0; /** * Receive notification of the end of a CDATA section. * *

    The SAX parser will invoke this method at the end of * each CDATA parsed.

    * * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void endCDATA () = 0; /** * Receive notification of the end of the DTD declarations. * *

    The SAX parser will invoke this method at the end of the * DTD

    * * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void endDTD () = 0; /** * Receive notification of the end of an entity. * *

    The SAX parser will invoke this method at the end of an * entity

    * * @param name The name of the entity that is ending. * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void endEntity (const XMLCh* const name) = 0; /** * Receive notification of the start of a CDATA section. * *

    The SAX parser will invoke this method at the start of * each CDATA parsed.

    * * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void startCDATA () = 0; /** * Receive notification of the start of the DTD declarations. * *

    The SAX parser will invoke this method at the start of the * DTD

    * * @param name The document type name. * @param publicId The declared public identifier for the external DTD subset, or null if none was declared. * @param systemId The declared system identifier for the external DTD subset, or null if none was declared. * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void startDTD ( const XMLCh* const name , const XMLCh* const publicId , const XMLCh* const systemId ) = 0; /** * Receive notification of the start of an entity. * *

    The SAX parser will invoke this method at the start of an * entity

    * * @param name The name of the entity that is starting. * @exception SAXException Any SAX exception, possibly * wrapping another exception. */ virtual void startEntity (const XMLCh* const name) = 0; //@} private : /* Unimplemented Constructors and operators */ /* Copy constructor */ LexicalHandler(const LexicalHandler&); /** Assignment operator */ LexicalHandler& operator=(const LexicalHandler&); }; XERCES_CPP_NAMESPACE_END #endif xerces-c-3.1.1/src/strnicmp.c0000644000175000017500000000232011042075404015027 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: strnicmp.c 679398 2008-07-24 12:52:20Z borisk $ */ #include "strnicmp.h" #include "config.h" #if HAVE_STRING_H # include #endif #if HAVE_STRINGS_H # include #endif int strnicmp(const char* str1, const char* str2, size_t count) { #if HAVE_STRNCASECMP return (count == 0) ? 0 : strncasecmp( str1, str2, count); #else #error Need implementation of strnicmp compatibility function #endif } xerces-c-3.1.1/src/strnicmp.h0000644000175000017500000000206611033363166015050 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: strnicmp.h 673966 2008-07-04 08:59:34Z borisk $ */ #ifndef STRNICMP_H #define STRNICMP_H #include #ifdef __cplusplus extern "C" { #endif extern int strnicmp(const char* str1, const char* str2, size_t count); #ifdef __cplusplus } #endif #endif xerces-c-3.1.1/src/towlower.c0000644000175000017500000000173510761542567015103 0ustar borisboris/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: towlower.c 631983 2008-02-28 14:30:15Z borisk $ */ #include "towlower.h" int towlower(int wc) { return (wc >= 'A') && (wc <= 'Z') ? wc + 'a' - 'A' : wc ; } xerces-c-3.1.1/CREDITS0000644000175000017500000000400411135122306013253 0ustar borisborisThe following people (in no particular order) have contributed to the development of the Xerces-C++ source code. Nadav Aharoni Curt Arnold Edward Avis Anupam Bagchi Torbjörn Bäckström Abe Backus Frank Balluffi Matthew Baker Devin Barnhart James Berry David Bertoni John Bellardo Arundhati Bhowmick Joanne Bogart Michael Boos Edward Bortner Sean Bright Phil Brown Robert Buck Scott Cantor David Cargill Chris Cates Sumit Chawla Nick Chiang Chih Hsiang Chou Radovan Chytracek Hiram Clawson John Clayton Todd Collins Nathan Codding Michael Crawford Murray Cumming Zeid Derhally James Devries Ailian Ding Steve Dulin David Earlam Helmut Eiken Mark Everline Andrew Fang Simon Fell Paul Ferguson Greg Franks Pierpaolo Fumagalli Syam Gadde Guido Gagliardi Gary Gale Michael Glavassevich Natalie Gorden Max Gotlib Petr Gotthard Neil Graham Matthew Hall Jay Hansen Susan Hardenbrook Jeff Harrell Andrew Hefford Adam Heinz Andy Heninger John Hibbert William L. Hopper Michael Huedepohl Anders Hybertz Rahul Jain Tom Jordahl Christopher Just Martin Kalen Joe Kesselman Artur Klauser Bob Kline Richard Ko Paul Kramer Volker Krause Berin Lautenbach Arnaud LeHors Andy Levine Jeff Lewis James Littlejohn Ray Logel Pedro Lopes Matt Lovett Sean MacRoibeaird Alberto Massari Don Mastrovito David McCreedy Shin'ya MORINO Urs Muff Jordan Naftolin Tinny Ng David Nickerson Khaled Noaman Michael Ottati Anthony O'Dowd Mike Pawlowski Kevin Philips Mike Pogue Joe Polastre John Ponzo Vitaly Prapirny Shengkai Qu Gareth Reakes Jim Reitz Caroline Rioux Dean Roddey John Roper Dan Rosen Steven Rosenthal Erik Rydgren Markus Scherer Bill Schindler Erik Schroeder Christian Schuhegger John Smirl Andrei Smirnov John Snelson Gereon Steffens Jason Stewart Rick J. Stevens Roman Sulzhyk Linda M. Swan Vasily Tchekalkin Pieter Van-Dyck Curtis Walker John Warrier Tom Watson Mark Weaver Roger Webster Robert Weir Axel Weiss Carolyn Weiss Kari Whitcomb Christian Will Dietrich Wolf Kirk Wylie Peter A. Volchek Grace Yan Hiramatsu Yoshifumi PeiYong Zhang Henry Zongaro Boris Kolpackov xerces-c-3.1.1/config.h.in0000644000175000017500000003153211363617722014302 0ustar borisboris/* config.h.in. Generated from configure.ac by autoheader. */ /* Define to specify no threading is used */ #undef APP_NO_THREADS /* Define to 1 if you have the header file. */ #undef HAVE_ARPA_INET_H /* Define to 1 if you have the header file. */ #undef HAVE_ARPA_NAMESER_COMPAT_H /* define if bool is a built-in type */ #undef HAVE_BOOL /* Define to 1 if you have the `catclose' function. */ #undef HAVE_CATCLOSE /* Define to 1 if you have the `catgets' function. */ #undef HAVE_CATGETS /* Define to 1 if you have the `catopen' function. */ #undef HAVE_CATOPEN /* Define to 1 if you have the `clock_gettime' function. */ #undef HAVE_CLOCK_GETTIME /* Define to 1 if you have the header file. */ #undef HAVE_CORESERVICES_CORESERVICES_H /* Define to 1 if you have cpuid.h */ #undef HAVE_CPUID_H /* Define to 1 if you have the header file. */ #undef HAVE_CTYPE_H /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you have the header file. */ #undef HAVE_ENDIAN_H /* Define to 1 if you have the header file. */ #undef HAVE_ERRNO_H /* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H /* Define to 1 if you have the header file. */ #undef HAVE_FLOAT_H /* Define to 1 if you have the `ftime' function. */ #undef HAVE_FTIME /* Define to 1 if you have the `getaddrinfo' function. */ #undef HAVE_GETADDRINFO /* Define to 1 if you have the `getcwd' function. */ #undef HAVE_GETCWD /* Define to 1 if you have the `gethostbyaddr' function. */ #undef HAVE_GETHOSTBYADDR /* Define to 1 if you have the `gethostbyname' function. */ #undef HAVE_GETHOSTBYNAME /* Define to 1 if you have the `gettimeofday' function. */ #undef HAVE_GETTIMEOFDAY /* Define to 1 if you have the `iconv' function. */ #undef HAVE_ICONV /* Define to 1 if you have the `iconv_close' function. */ #undef HAVE_ICONV_CLOSE /* Define to 1 if you have the header file. */ #undef HAVE_ICONV_H /* Define to 1 if you have the `iconv_open' function. */ #undef HAVE_ICONV_OPEN /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_LANGINFO_H /* Define to 1 if you have the `nsl' library (-lnsl). */ #undef HAVE_LIBNSL /* Define to 1 if you have the `socket' library (-lsocket). */ #undef HAVE_LIBSOCKET /* Define to 1 if you have the header file. */ #undef HAVE_LIMITS_H /* Define to 1 if you have the `localeconv' function. */ #undef HAVE_LOCALECONV /* Define to 1 if you have the header file. */ #undef HAVE_LOCALE_H /* define if the compiler implements L"widestring" */ #undef HAVE_LSTRING /* Define to 1 if you have the header file. */ #undef HAVE_MACHINE_ENDIAN_H /* Define to 1 if you have the `mblen' function. */ #undef HAVE_MBLEN /* Define to 1 if you have the `mbrlen' function. */ #undef HAVE_MBRLEN /* Define to 1 if you have the `mbsrtowcs' function. */ #undef HAVE_MBSRTOWCS /* Define to 1 if you have the `mbstowcs' function. */ #undef HAVE_MBSTOWCS /* Define to 1 if you have the `memmove' function. */ #undef HAVE_MEMMOVE /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the `memset' function. */ #undef HAVE_MEMSET /* define if the compiler implements namespaces */ #undef HAVE_NAMESPACES /* Define to 1 if you have the header file. */ #undef HAVE_NETDB_H /* Define to 1 if you have the header file. */ #undef HAVE_NETINET_IN_H /* Define to 1 if you have the `nl_langinfo' function. */ #undef HAVE_NL_LANGINFO /* Define to 1 if you have the header file. */ #undef HAVE_NL_TYPES_H /* Define to 1 if you have the `pathconf' function. */ #undef HAVE_PATHCONF /* Define if you have POSIX threads libraries and header files. */ #undef HAVE_PTHREAD /* Define to 1 if you have the `realpath' function. */ #undef HAVE_REALPATH /* Define to 1 if you have the `setlocale' function. */ #undef HAVE_SETLOCALE /* Define to 1 if you have the `socket' function. */ #undef HAVE_SOCKET /* Define to 1 if stdbool.h conforms to C99. */ #undef HAVE_STDBOOL_H /* Define to 1 if you have the header file. */ #undef HAVE_STDDEF_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDIO_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* define if the compiler supports ISO C++ standard library */ #undef HAVE_STD_LIBS /* define if the compiler supports the std namespace */ #undef HAVE_STD_NAMESPACE /* Define to 1 if you have the `strcasecmp' function. */ #undef HAVE_STRCASECMP /* Define to 1 if you have the `strchr' function. */ #undef HAVE_STRCHR /* Define to 1 if you have the `strdup' function. */ #undef HAVE_STRDUP /* Define to 1 if you have the `stricmp' function. */ #undef HAVE_STRICMP /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the `strncasecmp' function. */ #undef HAVE_STRNCASECMP /* Define to 1 if you have the `strnicmp' function. */ #undef HAVE_STRNICMP /* Define to 1 if you have the `strrchr' function. */ #undef HAVE_STRRCHR /* Define to 1 if you have the `strstr' function. */ #undef HAVE_STRSTR /* Define to 1 if you have the `strtol' function. */ #undef HAVE_STRTOL /* Define to 1 if you have the `strtoul' function. */ #undef HAVE_STRTOUL /* Define to 1 if you have the header file. */ #undef HAVE_SYS_PARAM_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SOCKET_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIMEB_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIME_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the `towlower' function. */ #undef HAVE_TOWLOWER /* Define to 1 if you have the `towupper' function. */ #undef HAVE_TOWUPPER /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if you have the header file. */ #undef HAVE_WCHAR_H /* Define to 1 if you have the `wcsicmp' function. */ #undef HAVE_WCSICMP /* Define to 1 if you have the `wcslwr' function. */ #undef HAVE_WCSLWR /* Define to 1 if you have the `wcsnicmp' function. */ #undef HAVE_WCSNICMP /* Define to 1 if you have the `wcsrtombs' function. */ #undef HAVE_WCSRTOMBS /* Define to 1 if you have the `wcstombs' function. */ #undef HAVE_WCSTOMBS /* Define to 1 if you have the `wcsupr' function. */ #undef HAVE_WCSUPR /* Define to 1 if you have the header file. */ #undef HAVE_WCTYPE_H /* Define to 1 if you have the header file. */ #undef HAVE_WINSOCK2_H /* Define to 1 if the system has the type `_Bool'. */ #undef HAVE__BOOL /* Define to 1 if you have to use const char* with iconv, to 0 if you must use char*. */ #undef ICONV_USES_CONST_POINTER /* Define to the sub-directory in which libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* Define to 1 if your C compiler doesn't accept -c and -o together. */ #undef NO_MINUS_C_MINUS_O /* 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 home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to necessary symbol if this constant uses a non-standard name on your system. */ #undef PTHREAD_CREATE_JOINABLE /* The size of `int', as computed by sizeof. */ #undef SIZEOF_INT /* The size of `long', as computed by sizeof. */ #undef SIZEOF_LONG /* The size of `long long', as computed by sizeof. */ #undef SIZEOF_LONG_LONG /* The size of `short', as computed by sizeof. */ #undef SIZEOF_SHORT /* The size of `wchar_t', as computed by sizeof. */ #undef SIZEOF_WCHAR_T /* The size of `__int64', as computed by sizeof. */ #undef SIZEOF___INT64 /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Define to 1 if you can safely include both and . */ #undef TIME_WITH_SYS_TIME /* Version number of package */ #undef VERSION /* Define to true if autoconf is used in this configuration */ #undef XERCES_AUTOCONF /* Define if namespaces is supported by the compiler */ #undef XERCES_HAS_CPP_NAMESPACE /* Define to have SSE2 instruction support detected at runtime using __cpuid */ #undef XERCES_HAVE_CPUID_INTRINSIC /* Define to 1 if you have emmintrin.h */ #undef XERCES_HAVE_EMMINTRIN_H /* Define to have SSE2 instruction support detected at runtime using __get_cpuid */ #undef XERCES_HAVE_GETCPUID /* Define to 1 if you have intrin.h */ #undef XERCES_HAVE_INTRIN_H /* Define to 1 if we have inttypes.h */ #undef XERCES_HAVE_INTTYPES_H /* Define to have SSE2 instruction used at runtime */ #undef XERCES_HAVE_SSE2_INTRINSIC /* Define to 1 if we have sys/types.h */ #undef XERCES_HAVE_SYS_TYPES_H /* Define to have Xerces_autoconf_config.hpp include wchar.h */ #undef XERCES_INCLUDE_WCHAR_H /* Define if there is support for L"widestring" */ #undef XERCES_LSTRSUPPORT /* Define if the isstream library can be included as */ #undef XERCES_NEW_IOSTREAMS /* Define to have XMemory.hpp avoid declaring a matching operator delete for the placement operator new */ #undef XERCES_NO_MATCHING_DELETE_OPERATOR /* Define if there is no native bool support in this environment */ #undef XERCES_NO_NATIVE_BOOL /* Define to use backslash as an extra path delimiter character */ #undef XERCES_PATH_DELIMITER_BACKSLASH /* Define as the platform's export attribute */ #undef XERCES_PLATFORM_EXPORT /* Define as the platform's import attribute */ #undef XERCES_PLATFORM_IMPORT /* An appropriate signed 16 bit integer type */ #undef XERCES_S16BIT_INT /* An appropriate signed 32 bit integer type */ #undef XERCES_S32BIT_INT /* An appropriate signed 64 bit integer type */ #undef XERCES_S64BIT_INT /* Define as the appropriate size_t type */ #undef XERCES_SIZE_T /* Define as the appropriate ssize_t type */ #undef XERCES_SSIZE_T /* Define if the std namespace is supported */ #undef XERCES_STD_NAMESPACE /* An appropriate unsigned 16 bit integer type */ #undef XERCES_U16BIT_INT /* An appropriate unsigned 32 bit integer type */ #undef XERCES_U32BIT_INT /* An appropriate unsigned 64 bit integer type */ #undef XERCES_U64BIT_INT /* Define to use the POSIX file mgr */ #undef XERCES_USE_FILEMGR_POSIX /* Define to use the Windows file mgr */ #undef XERCES_USE_FILEMGR_WINDOWS /* Define to use the iconv-based MsgLoader */ #undef XERCES_USE_MSGLOADER_ICONV /* Define to use the ICU-based MsgLoader */ #undef XERCES_USE_MSGLOADER_ICU /* Define to use the InMemory MsgLoader */ #undef XERCES_USE_MSGLOADER_INMEMORY /* Define to use the NoThread mutex mgr */ #undef XERCES_USE_MUTEXMGR_NOTHREAD /* Define to use the POSIX mutex mgr */ #undef XERCES_USE_MUTEXMGR_POSIX /* Define to use the Windows mutex mgr */ #undef XERCES_USE_MUTEXMGR_WINDOWS /* Define to use the Mac OS X CFURL NetAccessor */ #undef XERCES_USE_NETACCESSOR_CFURL /* Define to use the CURL NetAccessor */ #undef XERCES_USE_NETACCESSOR_CURL /* Define to use the Sockets-based NetAccessor */ #undef XERCES_USE_NETACCESSOR_SOCKET /* Define to use the WinSock NetAccessor */ #undef XERCES_USE_NETACCESSOR_WINSOCK /* Define to use the GNU iconv transcoder */ #undef XERCES_USE_TRANSCODER_GNUICONV /* Define to use the iconv transcoder */ #undef XERCES_USE_TRANSCODER_ICONV /* Define to use the ICU-based transcoder */ #undef XERCES_USE_TRANSCODER_ICU /* Define to use the Mac OS UnicodeConverter-based transcoder */ #undef XERCES_USE_TRANSCODER_MACOSUNICODECONVERTER /* Define to use the Windows transcoder */ #undef XERCES_USE_TRANSCODER_WINDOWS /* Define to the 16 bit type used to represent Xerces UTF-16 characters */ #undef XERCES_XMLCH_T /* Define to empty if `const' does not conform to ANSI C. */ #undef const /* Define to `__inline__' or `__inline' if that's what the C compiler calls it, or to nothing if 'inline' is not supported under any name. */ #ifndef __cplusplus #undef inline #endif /* Define to `long int' if does not define. */ #undef off_t /* Define to `unsigned int' if does not define. */ #undef size_t /* Define to empty if the keyword `volatile' does not work. Warning: valid code using `volatile' can become incorrect without. Disable with care. */ #undef volatile